diff --git a/.github/workflows/mad_modelDiff.yml b/.github/workflows/mad_modelDiff.yml index 3b96d903e232..45a31f406664 100644 --- a/.github/workflows/mad_modelDiff.yml +++ b/.github/workflows/mad_modelDiff.yml @@ -70,7 +70,7 @@ jobs: SHORTNAME=`basename $DATABASE` python misc/scripts/models-as-data/generate_mad.py --language java --with-summaries --with-sinks $DATABASE $SHORTNAME/$QL_VARIANT mkdir -p $MODELS/$SHORTNAME - mv java/ql/lib/ext/generated/$SHORTNAME/$QL_VARIANT $MODELS/$SHORTNAME + mv java/ql/lib/ext/generated/modelgenerator/$SHORTNAME/$QL_VARIANT $MODELS/$SHORTNAME cd .. } diff --git a/.github/workflows/python-tooling.yml b/.github/workflows/python-tooling.yml index bab1277dd03d..a3ad9900ea47 100644 --- a/.github/workflows/python-tooling.yml +++ b/.github/workflows/python-tooling.yml @@ -5,7 +5,7 @@ on: paths: - "misc/bazel/**" - "misc/codegen/**" - - "misc/scripts/models-as-data/bulk_generate_mad.py" + - "misc/scripts/models-as-data/*.py" - "*.bazel*" - .github/workflows/codegen.yml - .pre-commit-config.yaml diff --git a/Cargo.lock b/Cargo.lock index b6456c841063..4fab55a6444f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -140,6 +140,26 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +[[package]] +name = "bindgen" +version = "0.72.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" +dependencies = [ + "bitflags 2.9.4", + "cexpr", + "clang-sys", + "itertools 0.12.1", + "log 0.4.28", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash 2.1.1", + "shlex", + "syn", +] + [[package]] name = "bitflags" version = "1.3.2" @@ -240,9 +260,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.37" +version = "1.2.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65193589c6404eb80b450d618eaf9a2cafaaafd57ecce47370519ef674a7bd44" +checksum = "d16d90359e986641506914ba71350897565610e87ce0ad9e6f28569db3dd5c6d" dependencies = [ "find-msvc-tools", "jobserver", @@ -250,6 +270,15 @@ dependencies = [ "shlex", ] +[[package]] +name = "cexpr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" +dependencies = [ + "nom", +] + [[package]] name = "cfg-if" version = "1.0.3" @@ -328,7 +357,7 @@ dependencies = [ "chalk-derive 0.103.0", "chalk-ir 0.103.0", "ena", - "indexmap 2.11.4", + "indexmap 2.14.0", "itertools 0.12.1", "petgraph", "rustc-hash 1.1.0", @@ -349,6 +378,17 @@ dependencies = [ "windows-link 0.2.0", ] +[[package]] +name = "clang-sys" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +dependencies = [ + "glob", + "libc", + "libloading", +] + [[package]] name = "clap" version = "4.5.48" @@ -416,6 +456,7 @@ dependencies = [ "tree-sitter", "tree-sitter-json", "tree-sitter-ql", + "yeast", "zstd", ] @@ -437,6 +478,25 @@ dependencies = [ "tree-sitter-ruby", ] +[[package]] +name = "codeql-extractor-unified" +version = "0.1.0" +dependencies = [ + "clap", + "codeql-extractor", + "encoding", + "lazy_static", + "rayon", + "regex", + "serde_json", + "tracing", + "tracing-subscriber", + "tree-sitter", + "tree-sitter-embedded-template", + "tree-sitter-swift", + "yeast", +] + [[package]] name = "codeql-rust" version = "0.1.0" @@ -485,6 +545,15 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" +[[package]] +name = "convert_case" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baaaa0ecca5b51987b9423ccdc971514dd8b0bb7b4060b983d3664dad3f1f89f" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "core-foundation-sys" version = "0.8.7" @@ -738,6 +807,12 @@ dependencies = [ "typeid", ] +[[package]] +name = "fastrand" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" + [[package]] name = "figment" version = "0.10.19" @@ -754,9 +829,9 @@ dependencies = [ [[package]] name = "find-msvc-tools" -version = "0.1.1" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fd99930f64d146689264c637b5af2f0233a933bef0d8570e2526bf9e083192d" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" [[package]] name = "fixedbitset" @@ -786,6 +861,12 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + [[package]] name = "form_urlencoded" version = "1.2.2" @@ -870,9 +951,26 @@ checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ "allocator-api2", "equivalent", - "foldhash", + "foldhash 0.1.5", ] +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash 0.2.0", +] + +[[package]] +name = "hashbrown" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" + [[package]] name = "hashlink" version = "0.10.0" @@ -1059,16 +1157,25 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.11.4" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.15.5", + "hashbrown 0.17.1", "serde", "serde_core", ] +[[package]] +name = "indoc" +version = "2.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706" +dependencies = [ + "rustversion", +] + [[package]] name = "inlinable_string" version = "0.1.15" @@ -1198,6 +1305,16 @@ version = "0.2.175" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" +[[package]] +name = "libloading" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55" +dependencies = [ + "cfg-if", + "windows-link 0.2.0", +] + [[package]] name = "line-index" version = "0.1.2" @@ -1263,6 +1380,12 @@ dependencies = [ "autocfg", ] +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "miniz_oxide" version = "0.8.9" @@ -1309,6 +1432,16 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + [[package]] name = "notify" version = "8.2.0" @@ -1436,6 +1569,12 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "pathdiff" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" + [[package]] name = "pear" version = "0.2.9" @@ -1491,7 +1630,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.11.4", + "indexmap 2.14.0", +] + +[[package]] +name = "phf" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" +dependencies = [ + "phf_shared", + "serde", +] + +[[package]] +name = "phf_generator" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" +dependencies = [ + "fastrand", + "phf_shared", +] + +[[package]] +name = "phf_shared" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" +dependencies = [ + "siphasher", ] [[package]] @@ -1536,6 +1704,25 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn", +] + +[[package]] +name = "proc-macro-crate" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" +dependencies = [ + "toml_edit 0.25.11+spec-1.1.0", +] + [[package]] name = "proc-macro2" version = "1.0.101" @@ -1667,7 +1854,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e876bb2c3e52a8d4e6684526a2d4e81f9d028b939ee4dc5dc775fe10deb44d59" dependencies = [ "dashmap", - "indexmap 2.11.4", + "indexmap 2.14.0", "la-arena", "ra_ap_cfg", "ra_ap_intern", @@ -1709,7 +1896,7 @@ checksum = "ebffdc134eccabc17209d7760cfff7fd12ed18ab6e21188c5e084b97aa38504c" dependencies = [ "arrayvec", "either", - "indexmap 2.11.4", + "indexmap 2.14.0", "itertools 0.14.0", "ra_ap_base_db", "ra_ap_cfg", @@ -1739,7 +1926,7 @@ dependencies = [ "drop_bomb", "either", "fst", - "indexmap 2.11.4", + "indexmap 2.14.0", "itertools 0.14.0", "la-arena", "ra-ap-rustc_abi", @@ -1808,7 +1995,7 @@ dependencies = [ "cov-mark", "either", "ena", - "indexmap 2.11.4", + "indexmap 2.14.0", "itertools 0.14.0", "la-arena", "oorandom", @@ -1846,7 +2033,7 @@ dependencies = [ "crossbeam-channel", "either", "fst", - "indexmap 2.11.4", + "indexmap 2.14.0", "itertools 0.14.0", "line-index", "memchr", @@ -1948,7 +2135,7 @@ version = "0.0.301" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "45db9e2df587d56f0738afa89fb2c100ff7c1e9cbe49e07f6a8b62342832211b" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.14.0", "ra_ap_intern", "ra_ap_paths", "ra_ap_span", @@ -2107,7 +2294,7 @@ checksum = "6c174d6b9b7a7f54687df7e00c3e75ed6f082a7943a9afb1d54f33c0c12773de" dependencies = [ "crossbeam-channel", "fst", - "indexmap 2.11.4", + "indexmap 2.14.0", "nohash-hasher", "ra_ap_paths", "ra_ap_stdx", @@ -2239,6 +2426,15 @@ version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" +[[package]] +name = "relative-path" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bca40a312222d8ba74837cb474edef44b37f561da5f773981007a10bbaa992b0" +dependencies = [ + "serde", +] + [[package]] name = "rowan" version = "0.15.15" @@ -2252,6 +2448,57 @@ dependencies = [ "text-size", ] +[[package]] +name = "rquickjs" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a135375fbac5ba723bb6a48f432a72f81539cedde422f0121a86c7c4e96d8e0d" +dependencies = [ + "rquickjs-core", + "rquickjs-macro", +] + +[[package]] +name = "rquickjs-core" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bccb7121a123865c8ace4dea42e7ed84d78b90cbaf4ca32c59849d8d210c9672" +dependencies = [ + "hashbrown 0.16.1", + "phf", + "relative-path", + "rquickjs-sys", +] + +[[package]] +name = "rquickjs-macro" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89f93602cc3112c7f30bf5f29e722784232138692c7df4c52ebbac7e035d900d" +dependencies = [ + "convert_case", + "fnv", + "ident_case", + "indexmap 2.14.0", + "phf_generator", + "phf_shared", + "proc-macro-crate", + "proc-macro2", + "quote", + "rquickjs-core", + "syn", +] + +[[package]] +name = "rquickjs-sys" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57b1b6528590d4d65dc86b5159eae2d0219709546644c66408b2441696d1d725" +dependencies = [ + "bindgen", + "cc", +] + [[package]] name = "rust-extractor-macros" version = "0.1.0" @@ -2317,7 +2564,7 @@ dependencies = [ "crossbeam-utils", "hashbrown 0.15.5", "hashlink", - "indexmap 2.11.4", + "indexmap 2.14.0", "intrusive-collections", "papaya", "parking_lot", @@ -2406,11 +2653,12 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.26" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" dependencies = [ "serde", + "serde_core", ] [[package]] @@ -2470,7 +2718,7 @@ version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.14.0", "itoa", "memchr", "ryu", @@ -2506,7 +2754,7 @@ dependencies = [ "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.11.4", + "indexmap 2.14.0", "schemars 0.9.0", "schemars 1.0.4", "serde", @@ -2534,7 +2782,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.14.0", "itoa", "ryu", "serde", @@ -2556,6 +2804,18 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "siphasher" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649" + +[[package]] +name = "smallbitvec" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b0e903ee191d8f7a8fbf0d712c3a1699d19e04ceba5ad1eb673053c7d938a09" + [[package]] name = "smallvec" version = "1.15.1" @@ -2632,18 +2892,18 @@ checksum = "144f754d318415ac792f9d69fc87abbbfc043ce2ef041c60f16ad828f638717d" [[package]] name = "thiserror" -version = "2.0.16" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "2.0.16" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", @@ -2708,7 +2968,7 @@ dependencies = [ "serde", "serde_spanned 0.6.9", "toml_datetime 0.6.11", - "toml_edit", + "toml_edit 0.22.27", ] [[package]] @@ -2717,13 +2977,13 @@ version = "0.9.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00e5e5d9bf2475ac9d4f0d9edab68cc573dc2fd644b0dba36b0c30a92dd9eaa0" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.14.0", "serde_core", "serde_spanned 1.0.2", "toml_datetime 0.7.2", "toml_parser", "toml_writer", - "winnow", + "winnow 0.7.13", ] [[package]] @@ -2744,27 +3004,48 @@ dependencies = [ "serde_core", ] +[[package]] +name = "toml_datetime" +version = "1.1.1+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" +dependencies = [ + "serde_core", +] + [[package]] name = "toml_edit" version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.11.4", + "indexmap 2.14.0", "serde", "serde_spanned 0.6.9", "toml_datetime 0.6.11", "toml_write", - "winnow", + "winnow 0.7.13", +] + +[[package]] +name = "toml_edit" +version = "0.25.11+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b" +dependencies = [ + "indexmap 2.14.0", + "toml_datetime 1.1.1+spec-1.1.0", + "toml_parser", + "winnow 1.0.2", ] [[package]] name = "toml_parser" -version = "1.0.3" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cf893c33be71572e0e9aa6dd15e6677937abd686b066eac3f8cd3531688a627" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ - "winnow", + "winnow 1.0.2", ] [[package]] @@ -2779,6 +3060,12 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d163a63c116ce562a22cda521fcc4d79152e7aba014456fb5eb442f6d6a10109" +[[package]] +name = "topological-sort" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea68304e134ecd095ac6c3574494fc62b909f416c4fca77e440530221e549d3d" + [[package]] name = "tracing" version = "0.1.41" @@ -2853,9 +3140,9 @@ dependencies = [ [[package]] name = "tree-sitter" -version = "0.25.9" +version = "0.26.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccd2a058a86cfece0bf96f7cce1021efef9c8ed0e892ab74639173e5ed7a34fa" +checksum = "887bd495d0582c5e3e0d8ece2233666169fa56a9644d172fc22ad179ab2d0538" dependencies = [ "cc", "regex", @@ -2875,6 +3162,30 @@ dependencies = [ "tree-sitter-language", ] +[[package]] +name = "tree-sitter-generate" +version = "0.26.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3fb2e1bdb1d5f9d23cd5fa68cf98b3bedbd223c92a2edd60bbcf30bcf7180a5" +dependencies = [ + "bitflags 2.9.4", + "dunce", + "indexmap 2.14.0", + "indoc", + "log 0.4.28", + "pathdiff", + "regex", + "regex-syntax", + "rquickjs", + "rustc-hash 2.1.1", + "semver", + "serde", + "serde_json", + "smallbitvec", + "thiserror", + "topological-sort", +] + [[package]] name = "tree-sitter-json" version = "0.24.8" @@ -2891,6 +3202,16 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4013970217383f67b18aef68f6fb2e8d409bc5755227092d32efb0422ba24b8" +[[package]] +name = "tree-sitter-python" +version = "0.23.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d065aaa27f3aaceaf60c1f0e0ac09e1cb9eb8ed28e7bcdaa52129cffc7f4b04" +dependencies = [ + "cc", + "tree-sitter-language", +] + [[package]] name = "tree-sitter-ql" version = "0.23.1" @@ -2911,6 +3232,15 @@ dependencies = [ "tree-sitter-language", ] +[[package]] +name = "tree-sitter-swift" +version = "0.7.2" +dependencies = [ + "cc", + "tree-sitter-generate", + "tree-sitter-language", +] + [[package]] name = "triomphe" version = "0.1.14" @@ -2960,6 +3290,12 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" +[[package]] +name = "unicode-segmentation" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c" + [[package]] name = "unicode-xid" version = "0.2.6" @@ -3349,6 +3685,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "winnow" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ee1708bef14716a11bae175f579062d4554d95be2c6829f518df847b7b3fdd0" +dependencies = [ + "memchr", +] + [[package]] name = "wit-bindgen" version = "0.45.1" @@ -3367,6 +3712,29 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" +[[package]] +name = "yeast" +version = "0.1.0" +dependencies = [ + "clap", + "serde", + "serde_json", + "serde_yaml", + "tree-sitter", + "tree-sitter-python", + "tree-sitter-ruby", + "yeast-macros", +] + +[[package]] +name = "yeast-macros" +version = "0.1.0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "yoke" version = "0.8.0" diff --git a/Cargo.toml b/Cargo.toml index 58a755340b9c..62eb2e7e920c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,11 @@ resolver = "2" members = [ "shared/tree-sitter-extractor", + "shared/yeast", + "shared/yeast-macros", "ruby/extractor", + "unified/extractor", + "unified/extractor/tree-sitter-swift", "rust/extractor", "rust/extractor/macros", "rust/ast-generator", diff --git a/MODULE.bazel b/MODULE.bazel index d5c2c8784e26..fd923a32e62b 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -27,7 +27,7 @@ bazel_dep(name = "abseil-cpp", version = "20260107.1", repo_name = "absl") bazel_dep(name = "nlohmann_json", version = "3.11.3", repo_name = "json") bazel_dep(name = "fmt", version = "12.1.0-codeql.1") bazel_dep(name = "rules_kotlin", version = "2.2.2-codeql.1") -bazel_dep(name = "gazelle", version = "0.47.0") +bazel_dep(name = "gazelle", version = "0.50.0") bazel_dep(name = "rules_dotnet", version = "0.21.5-codeql.1") bazel_dep(name = "googletest", version = "1.17.0.bcr.2") bazel_dep(name = "rules_rust", version = "0.69.0") @@ -102,6 +102,7 @@ use_repo( tree_sitter_extractors_deps, "vendor_ts__anyhow-1.0.100", "vendor_ts__argfile-0.2.1", + "vendor_ts__cc-1.2.61", "vendor_ts__chalk-ir-0.104.0", "vendor_ts__chrono-0.4.42", "vendor_ts__clap-4.5.48", @@ -141,14 +142,18 @@ use_repo( "vendor_ts__serde-1.0.228", "vendor_ts__serde_json-1.0.145", "vendor_ts__serde_with-3.14.1", + "vendor_ts__serde_yaml-0.9.34-deprecated", "vendor_ts__syn-2.0.106", "vendor_ts__toml-0.9.7", "vendor_ts__tracing-0.1.41", "vendor_ts__tracing-flame-0.2.0", "vendor_ts__tracing-subscriber-0.3.20", - "vendor_ts__tree-sitter-0.25.9", + "vendor_ts__tree-sitter-0.26.8", "vendor_ts__tree-sitter-embedded-template-0.25.0", + "vendor_ts__tree-sitter-generate-0.26.8", "vendor_ts__tree-sitter-json-0.24.8", + "vendor_ts__tree-sitter-language-0.1.5", + "vendor_ts__tree-sitter-python-0.23.6", "vendor_ts__tree-sitter-ql-0.23.1", "vendor_ts__tree-sitter-ruby-0.23.1", "vendor_ts__triomphe-0.1.14", diff --git a/actions/ql/lib/CHANGELOG.md b/actions/ql/lib/CHANGELOG.md index d625bc6f619e..ddd0b0f1aec8 100644 --- a/actions/ql/lib/CHANGELOG.md +++ b/actions/ql/lib/CHANGELOG.md @@ -1,3 +1,19 @@ +## 0.4.36 + +### Minor Analysis Improvements + +* Altered 2 patterns in the `poisonable_steps` modelling. Extra sinks are detected in the following cases: scripts executed via python modules and `go run` in directories are detected as potential mechanisms of injection. For the go execution pattern, the pattern is updated to now ignore flags that occur between go and the specific command. This change may lead to more results being detected by the following queries: `actions/untrusted-checkout/high`, `actions/untrusted-checkout/critical`, `actions/untrusted-checkout-toctou/high`, `actions/untrusted-checkout-toctou/critical`, `actions/cache-poisoning/poisonable-step`, `actions/cache-poisoning/direct-cache` and `actions/artifact-poisoning/path-traversal`. + +## 0.4.35 + +No user-facing changes. + +## 0.4.34 + +### Minor Analysis Improvements + +* Removed false positive injection sink models for the `context` input of `docker/build-push-action` and the `allowed-endpoints` input of `step-security/harden-runner`. + ## 0.4.33 No user-facing changes. diff --git a/actions/ql/lib/change-notes/released/0.4.34.md b/actions/ql/lib/change-notes/released/0.4.34.md new file mode 100644 index 000000000000..23b06db49679 --- /dev/null +++ b/actions/ql/lib/change-notes/released/0.4.34.md @@ -0,0 +1,5 @@ +## 0.4.34 + +### Minor Analysis Improvements + +* Removed false positive injection sink models for the `context` input of `docker/build-push-action` and the `allowed-endpoints` input of `step-security/harden-runner`. diff --git a/actions/ql/lib/change-notes/released/0.4.35.md b/actions/ql/lib/change-notes/released/0.4.35.md new file mode 100644 index 000000000000..3274ffc88e4d --- /dev/null +++ b/actions/ql/lib/change-notes/released/0.4.35.md @@ -0,0 +1,3 @@ +## 0.4.35 + +No user-facing changes. diff --git a/actions/ql/lib/change-notes/released/0.4.36.md b/actions/ql/lib/change-notes/released/0.4.36.md new file mode 100644 index 000000000000..1781776f932a --- /dev/null +++ b/actions/ql/lib/change-notes/released/0.4.36.md @@ -0,0 +1,5 @@ +## 0.4.36 + +### Minor Analysis Improvements + +* Altered 2 patterns in the `poisonable_steps` modelling. Extra sinks are detected in the following cases: scripts executed via python modules and `go run` in directories are detected as potential mechanisms of injection. For the go execution pattern, the pattern is updated to now ignore flags that occur between go and the specific command. This change may lead to more results being detected by the following queries: `actions/untrusted-checkout/high`, `actions/untrusted-checkout/critical`, `actions/untrusted-checkout-toctou/high`, `actions/untrusted-checkout-toctou/critical`, `actions/cache-poisoning/poisonable-step`, `actions/cache-poisoning/direct-cache` and `actions/artifact-poisoning/path-traversal`. diff --git a/actions/ql/lib/codeql-pack.release.yml b/actions/ql/lib/codeql-pack.release.yml index 7581fef2abf7..45433e3ec031 100644 --- a/actions/ql/lib/codeql-pack.release.yml +++ b/actions/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.4.33 +lastReleaseVersion: 0.4.36 diff --git a/actions/ql/lib/ext/config/poisonable_steps.yml b/actions/ql/lib/ext/config/poisonable_steps.yml index 3c1aec70a240..17b1408fa7c3 100644 --- a/actions/ql/lib/ext/config/poisonable_steps.yml +++ b/actions/ql/lib/ext/config/poisonable_steps.yml @@ -70,7 +70,7 @@ extensions: - ["(source|sh|bash|zsh|fish)\\s+([^\\s]+)\\b", 2] - ["(node)\\s+([^\\s]+)(\\.js|\\.ts)\\b", 2] - ["(python[\\d\\.]*)\\s+([^\\s]+)\\.py\\b", 2] + - ["(python[\\d\\.]*)\\s+-m\\s+([A-Za-z_][\\w\\.]*)\\b", 2] # eg: pythonX -m anything(dir or file) - ["(ruby)\\s+([^\\s]+)\\.rb\\b", 2] - - ["(go)\\s+(generate|run)\\s+([^\\s]+)\\.go\\b", 3] + - ["(go)\\s+(generate|run)(?:\\s+-[^\\s]+)*\\s+([^\\s]+)", 3] - ["(dotnet)\\s+([^\\s]+)\\.csproj\\b", 2] - diff --git a/actions/ql/lib/ext/manual/docker_build-push-action.model.yml b/actions/ql/lib/ext/manual/docker_build-push-action.model.yml deleted file mode 100644 index 116c231c30a4..000000000000 --- a/actions/ql/lib/ext/manual/docker_build-push-action.model.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/actions-all - extensible: actionsSinkModel - data: - - ["docker/build-push-action", "*", "input.context", "code-injection", "manual"] \ No newline at end of file diff --git a/actions/ql/lib/ext/manual/step-security_harden-runner.model.yml b/actions/ql/lib/ext/manual/step-security_harden-runner.model.yml deleted file mode 100644 index 129c8beb0202..000000000000 --- a/actions/ql/lib/ext/manual/step-security_harden-runner.model.yml +++ /dev/null @@ -1,6 +0,0 @@ -extensions: - - addsTo: - pack: codeql/actions-all - extensible: actionsSinkModel - data: - - ["step-security/harden-runner", "*", "input.allowed-endpoints", "command-injection", "manual"] diff --git a/actions/ql/lib/qlpack.yml b/actions/ql/lib/qlpack.yml index 131f29b87aaa..747298d69c6d 100644 --- a/actions/ql/lib/qlpack.yml +++ b/actions/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/actions-all -version: 0.4.33 +version: 0.4.36 library: true warnOnImplicitThis: true dependencies: diff --git a/actions/ql/src/CHANGELOG.md b/actions/ql/src/CHANGELOG.md index d991237aca97..1670f0af5be8 100644 --- a/actions/ql/src/CHANGELOG.md +++ b/actions/ql/src/CHANGELOG.md @@ -1,3 +1,31 @@ +## 0.6.28 + +### Query Metadata Changes + +* Adjusted the name of `actions/untrusted-checkout/high` to more clearly describe which parts of the scenario are in a privileged context. + +### Minor Analysis Improvements + +* The `actions/unpinned-tag` query now analyzes composite action metadata (`action.yml`/`action.yaml` files) in addition to workflow files, providing more comprehensive detection of unpinned action references across the entire Actions ecosystem. + +### Bug Fixes + +* Fixed help file descriptions for queries: `actions/untrusted-checkout/critical`, `actions/untrusted-checkout/high`, `actions/untrusted-checkout/medium`. Previously the messages were unclear as to why and how the vulnerabilities could occur. + +## 0.6.27 + +No user-facing changes. + +## 0.6.26 + +### Major Analysis Improvements + +* Fixed alert messages in `actions/artifact-poisoning/critical` and `actions/artifact-poisoning/medium` as they previously included a redundant placeholder in the alert message that would on occasion contain a long block of yml that makes the alert difficult to understand. Also improved the wording to make it clearer that it is not the artifact that is being poisoned, but instead a potentially untrusted artifact that is consumed. Finally, changed the alert location to be the source, to align more with other queries reporting an artifact (e.g. zipslip) which is more useful. + +### Minor Analysis Improvements + +* The query `actions/missing-workflow-permissions` no longer produces false positive results on reusable workflows where all callers set permissions. + ## 0.6.25 No user-facing changes. diff --git a/actions/ql/src/Security/CWE-275/MissingActionsPermissions.ql b/actions/ql/src/Security/CWE-275/MissingActionsPermissions.ql index a8bd8a5f93dc..00f601fd5daf 100644 --- a/actions/ql/src/Security/CWE-275/MissingActionsPermissions.ql +++ b/actions/ql/src/Security/CWE-275/MissingActionsPermissions.ql @@ -26,10 +26,23 @@ string permissionsForJob(Job job) { "{" + concat(string permission | permission = jobNeedsPermission(job) | permission, ", ") + "}" } +predicate jobHasPermissions(Job job) { + exists(job.getPermissions()) + or + exists(job.getEnclosingWorkflow().getPermissions()) + or + // The workflow is reusable and cannot be triggered in any other way; check callers + exists(ReusableWorkflow r | r = job.getEnclosingWorkflow() | + not exists(Event e | e = r.getOn().getAnEvent() | e.getName() != "workflow_call") and + forall(Job caller | caller = job.getEnclosingWorkflow().(ReusableWorkflow).getACaller() | + jobHasPermissions(caller) + ) + ) +} + from Job job, string permissions where - not exists(job.getPermissions()) and - not exists(job.getEnclosingWorkflow().getPermissions()) and + not jobHasPermissions(job) and // exists a trigger event that is not a workflow_call exists(Event e | e = job.getATriggerEvent() and diff --git a/actions/ql/src/Security/CWE-829/ArtifactPoisoningCritical.ql b/actions/ql/src/Security/CWE-829/ArtifactPoisoningCritical.ql index 24ecb4b03397..be49de830c33 100644 --- a/actions/ql/src/Security/CWE-829/ArtifactPoisoningCritical.ql +++ b/actions/ql/src/Security/CWE-829/ArtifactPoisoningCritical.ql @@ -20,6 +20,6 @@ from ArtifactPoisoningFlow::PathNode source, ArtifactPoisoningFlow::PathNode sin where ArtifactPoisoningFlow::flowPath(source, sink) and event = getRelevantEventInPrivilegedContext(sink.getNode()) -select sink.getNode(), source, sink, - "Potential artifact poisoning in $@, which may be controlled by an external user ($@).", sink, - sink.getNode().toString(), event, event.getName() +select source.getNode(), source, sink, + "Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user ($@).", + event, event.getName() diff --git a/actions/ql/src/Security/CWE-829/ArtifactPoisoningMedium.ql b/actions/ql/src/Security/CWE-829/ArtifactPoisoningMedium.ql index d2aff7da95ff..49dc856e5665 100644 --- a/actions/ql/src/Security/CWE-829/ArtifactPoisoningMedium.ql +++ b/actions/ql/src/Security/CWE-829/ArtifactPoisoningMedium.ql @@ -20,6 +20,5 @@ from ArtifactPoisoningFlow::PathNode source, ArtifactPoisoningFlow::PathNode sin where ArtifactPoisoningFlow::flowPath(source, sink) and inNonPrivilegedContext(sink.getNode().asExpr()) -select sink.getNode(), source, sink, - "Potential artifact poisoning in $@, which may be controlled by an external user.", sink, - sink.getNode().toString() +select source.getNode(), source, sink, + "Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user." diff --git a/actions/ql/src/Security/CWE-829/UnpinnedActionsTag.ql b/actions/ql/src/Security/CWE-829/UnpinnedActionsTag.ql index c8512e5a1c0c..7b5e5a117cbe 100644 --- a/actions/ql/src/Security/CWE-829/UnpinnedActionsTag.ql +++ b/actions/ql/src/Security/CWE-829/UnpinnedActionsTag.ql @@ -1,5 +1,5 @@ /** - * @name Unpinned tag for a non-immutable Action in workflow + * @name Unpinned tag for a non-immutable Action in workflow or composite action * @description Using a tag for a non-immutable Action that is not pinned to a commit can lead to executing an untrusted Action through a supply chain attack. * @kind problem * @security-severity 5.0 @@ -31,15 +31,26 @@ private predicate isPinnedContainer(string version) { bindingset[nwo] private predicate isContainerImage(string nwo) { nwo.regexpMatch("^docker://.+") } -from UsesStep uses, string nwo, string version, Workflow workflow, string name +private predicate getStepContainerName(UsesStep uses, string name) { + exists(Workflow workflow | + uses.getEnclosingWorkflow() = workflow and + ( + workflow.getName() = name + or + not exists(workflow.getName()) and workflow.getLocation().getFile().getBaseName() = name + ) + ) + or + exists(CompositeAction action | + uses.getEnclosingCompositeAction() = action and + name = action.getLocation().getFile().getBaseName() + ) +} + +from UsesStep uses, string nwo, string version, string name where uses.getCallee() = nwo and - uses.getEnclosingWorkflow() = workflow and - ( - workflow.getName() = name - or - not exists(workflow.getName()) and workflow.getLocation().getFile().getBaseName() = name - ) and + getStepContainerName(uses, name) and uses.getVersion() = version and not isTrustedOwner(nwo) and not (if isContainerImage(nwo) then isPinnedContainer(version) else isPinnedCommit(version)) and diff --git a/actions/ql/src/Security/CWE-829/UntrustedCheckoutCritical.md b/actions/ql/src/Security/CWE-829/UntrustedCheckoutCritical.md index 6060354b134a..a6dd437c1baf 100644 --- a/actions/ql/src/Security/CWE-829/UntrustedCheckoutCritical.md +++ b/actions/ql/src/Security/CWE-829/UntrustedCheckoutCritical.md @@ -1,6 +1,35 @@ ## Overview -GitHub workflows can be triggered through various repository events, including incoming pull requests (PRs) or comments on Issues/PRs. A potentially dangerous misuse of the triggers such as `pull_request_target` or `issue_comment` followed by an explicit checkout of untrusted code (Pull Request HEAD) may lead to repository compromise if untrusted code gets executed (e.g., due to a modified build script) in a privileged job. +GitHub workflows can be triggered through various repository events, including incoming pull requests (PRs) or comments on Issues/PRs. Under certain conditions described below, attackers can take over a repository by opening malicious PRs from forks. The attacks can result in malicious code execution causing unauthorized changes to the repository or exfiltration of repository secrets and a compromise of connected systems. + +## Workflow Security Model + +In GitHub Actions, there is a distinction between unprivileged and privileged workflows. For example, a workflow with a `pull_request` trigger is unprivileged while a workflow with `pull_request_target` is privileged. + +This is relevant especially for PRs from forks. Normal PRs can only be submitted by people who have write access to a repository, while PRs from forks can be submitted by anyone. + +On a PR from a fork, an unprivileged `pull_request` workflow has only limited capabilities but a privileged `pull_request_target` workflow is much more dangerous. A privileged workflow: + + * Runs in the context of the base repository + * Has access to organization and repository secrets (e.g., API keys, deployment tokens) + * Has a read/write `GITHUB_TOKEN` by default + * Can access private resources + +Certain triggers automatically grant a workflow elevated privileges: + + * `pull_request_target` as described above + * `workflow_run`: Triggered when another workflow completes. + * `issue_comment`: Triggered when a comment is made on an issue or PR. + +## Attack Details + + * A repository has a privileged workflow + * An attacker forks the repository and adds malicious code (e.g., in the build script) + * The attacker opens a PR from the fork, and, if needed, comments on the PR + * The workflow in the base repository checks out the forked code + * The workflow runs, (e.g. the build script etc.), which contains the malicious code + +Please note that not only build scripts can be malicious code vectors. There is a large number of other possibilities. Some of them are listed in the [LOTP](https://boostsecurityio.github.io/lotp/) catalog. ## Recommendation @@ -133,3 +162,5 @@ jobs: ## References - GitHub Security Lab Research: [Keeping your GitHub Actions and workflows secure Part 1: Preventing pwn requests](https://securitylab.github.com/research/github-actions-preventing-pwn-requests/). +- Mitigating risks of untrusted checkout: [GitHub Docs](https://docs.github.com/en/enterprise-cloud@latest/actions/reference/security/secure-use#mitigating-the-risks-of-untrusted-code-checkout). +- Living Off the Pipeline: [LOTP](https://boostsecurityio.github.io/lotp/). diff --git a/actions/ql/src/Security/CWE-829/UntrustedCheckoutHigh.md b/actions/ql/src/Security/CWE-829/UntrustedCheckoutHigh.md index 6060354b134a..a6dd437c1baf 100644 --- a/actions/ql/src/Security/CWE-829/UntrustedCheckoutHigh.md +++ b/actions/ql/src/Security/CWE-829/UntrustedCheckoutHigh.md @@ -1,6 +1,35 @@ ## Overview -GitHub workflows can be triggered through various repository events, including incoming pull requests (PRs) or comments on Issues/PRs. A potentially dangerous misuse of the triggers such as `pull_request_target` or `issue_comment` followed by an explicit checkout of untrusted code (Pull Request HEAD) may lead to repository compromise if untrusted code gets executed (e.g., due to a modified build script) in a privileged job. +GitHub workflows can be triggered through various repository events, including incoming pull requests (PRs) or comments on Issues/PRs. Under certain conditions described below, attackers can take over a repository by opening malicious PRs from forks. The attacks can result in malicious code execution causing unauthorized changes to the repository or exfiltration of repository secrets and a compromise of connected systems. + +## Workflow Security Model + +In GitHub Actions, there is a distinction between unprivileged and privileged workflows. For example, a workflow with a `pull_request` trigger is unprivileged while a workflow with `pull_request_target` is privileged. + +This is relevant especially for PRs from forks. Normal PRs can only be submitted by people who have write access to a repository, while PRs from forks can be submitted by anyone. + +On a PR from a fork, an unprivileged `pull_request` workflow has only limited capabilities but a privileged `pull_request_target` workflow is much more dangerous. A privileged workflow: + + * Runs in the context of the base repository + * Has access to organization and repository secrets (e.g., API keys, deployment tokens) + * Has a read/write `GITHUB_TOKEN` by default + * Can access private resources + +Certain triggers automatically grant a workflow elevated privileges: + + * `pull_request_target` as described above + * `workflow_run`: Triggered when another workflow completes. + * `issue_comment`: Triggered when a comment is made on an issue or PR. + +## Attack Details + + * A repository has a privileged workflow + * An attacker forks the repository and adds malicious code (e.g., in the build script) + * The attacker opens a PR from the fork, and, if needed, comments on the PR + * The workflow in the base repository checks out the forked code + * The workflow runs, (e.g. the build script etc.), which contains the malicious code + +Please note that not only build scripts can be malicious code vectors. There is a large number of other possibilities. Some of them are listed in the [LOTP](https://boostsecurityio.github.io/lotp/) catalog. ## Recommendation @@ -133,3 +162,5 @@ jobs: ## References - GitHub Security Lab Research: [Keeping your GitHub Actions and workflows secure Part 1: Preventing pwn requests](https://securitylab.github.com/research/github-actions-preventing-pwn-requests/). +- Mitigating risks of untrusted checkout: [GitHub Docs](https://docs.github.com/en/enterprise-cloud@latest/actions/reference/security/secure-use#mitigating-the-risks-of-untrusted-code-checkout). +- Living Off the Pipeline: [LOTP](https://boostsecurityio.github.io/lotp/). diff --git a/actions/ql/src/Security/CWE-829/UntrustedCheckoutHigh.ql b/actions/ql/src/Security/CWE-829/UntrustedCheckoutHigh.ql index 98b9aee33f77..5c2d4b3d56c8 100644 --- a/actions/ql/src/Security/CWE-829/UntrustedCheckoutHigh.ql +++ b/actions/ql/src/Security/CWE-829/UntrustedCheckoutHigh.ql @@ -1,5 +1,5 @@ /** - * @name Checkout of untrusted code in trusted context + * @name Checkout of untrusted code in privileged context without privileged context use * @description Privileged workflows have read/write access to the base repository and access to secrets. * By explicitly checking out and running the build script from a fork the untrusted code is running in an environment * that is able to push to the base repository and to access secrets. diff --git a/actions/ql/src/Security/CWE-829/UntrustedCheckoutMedium.md b/actions/ql/src/Security/CWE-829/UntrustedCheckoutMedium.md index 6060354b134a..a6dd437c1baf 100644 --- a/actions/ql/src/Security/CWE-829/UntrustedCheckoutMedium.md +++ b/actions/ql/src/Security/CWE-829/UntrustedCheckoutMedium.md @@ -1,6 +1,35 @@ ## Overview -GitHub workflows can be triggered through various repository events, including incoming pull requests (PRs) or comments on Issues/PRs. A potentially dangerous misuse of the triggers such as `pull_request_target` or `issue_comment` followed by an explicit checkout of untrusted code (Pull Request HEAD) may lead to repository compromise if untrusted code gets executed (e.g., due to a modified build script) in a privileged job. +GitHub workflows can be triggered through various repository events, including incoming pull requests (PRs) or comments on Issues/PRs. Under certain conditions described below, attackers can take over a repository by opening malicious PRs from forks. The attacks can result in malicious code execution causing unauthorized changes to the repository or exfiltration of repository secrets and a compromise of connected systems. + +## Workflow Security Model + +In GitHub Actions, there is a distinction between unprivileged and privileged workflows. For example, a workflow with a `pull_request` trigger is unprivileged while a workflow with `pull_request_target` is privileged. + +This is relevant especially for PRs from forks. Normal PRs can only be submitted by people who have write access to a repository, while PRs from forks can be submitted by anyone. + +On a PR from a fork, an unprivileged `pull_request` workflow has only limited capabilities but a privileged `pull_request_target` workflow is much more dangerous. A privileged workflow: + + * Runs in the context of the base repository + * Has access to organization and repository secrets (e.g., API keys, deployment tokens) + * Has a read/write `GITHUB_TOKEN` by default + * Can access private resources + +Certain triggers automatically grant a workflow elevated privileges: + + * `pull_request_target` as described above + * `workflow_run`: Triggered when another workflow completes. + * `issue_comment`: Triggered when a comment is made on an issue or PR. + +## Attack Details + + * A repository has a privileged workflow + * An attacker forks the repository and adds malicious code (e.g., in the build script) + * The attacker opens a PR from the fork, and, if needed, comments on the PR + * The workflow in the base repository checks out the forked code + * The workflow runs, (e.g. the build script etc.), which contains the malicious code + +Please note that not only build scripts can be malicious code vectors. There is a large number of other possibilities. Some of them are listed in the [LOTP](https://boostsecurityio.github.io/lotp/) catalog. ## Recommendation @@ -133,3 +162,5 @@ jobs: ## References - GitHub Security Lab Research: [Keeping your GitHub Actions and workflows secure Part 1: Preventing pwn requests](https://securitylab.github.com/research/github-actions-preventing-pwn-requests/). +- Mitigating risks of untrusted checkout: [GitHub Docs](https://docs.github.com/en/enterprise-cloud@latest/actions/reference/security/secure-use#mitigating-the-risks-of-untrusted-code-checkout). +- Living Off the Pipeline: [LOTP](https://boostsecurityio.github.io/lotp/). diff --git a/actions/ql/src/change-notes/released/0.6.26.md b/actions/ql/src/change-notes/released/0.6.26.md new file mode 100644 index 000000000000..8bf43e639079 --- /dev/null +++ b/actions/ql/src/change-notes/released/0.6.26.md @@ -0,0 +1,9 @@ +## 0.6.26 + +### Major Analysis Improvements + +* Fixed alert messages in `actions/artifact-poisoning/critical` and `actions/artifact-poisoning/medium` as they previously included a redundant placeholder in the alert message that would on occasion contain a long block of yml that makes the alert difficult to understand. Also improved the wording to make it clearer that it is not the artifact that is being poisoned, but instead a potentially untrusted artifact that is consumed. Finally, changed the alert location to be the source, to align more with other queries reporting an artifact (e.g. zipslip) which is more useful. + +### Minor Analysis Improvements + +* The query `actions/missing-workflow-permissions` no longer produces false positive results on reusable workflows where all callers set permissions. diff --git a/actions/ql/src/change-notes/released/0.6.27.md b/actions/ql/src/change-notes/released/0.6.27.md new file mode 100644 index 000000000000..52d3a10fd1f9 --- /dev/null +++ b/actions/ql/src/change-notes/released/0.6.27.md @@ -0,0 +1,3 @@ +## 0.6.27 + +No user-facing changes. diff --git a/actions/ql/src/change-notes/released/0.6.28.md b/actions/ql/src/change-notes/released/0.6.28.md new file mode 100644 index 000000000000..23a7aa24ee38 --- /dev/null +++ b/actions/ql/src/change-notes/released/0.6.28.md @@ -0,0 +1,13 @@ +## 0.6.28 + +### Query Metadata Changes + +* Adjusted the name of `actions/untrusted-checkout/high` to more clearly describe which parts of the scenario are in a privileged context. + +### Minor Analysis Improvements + +* The `actions/unpinned-tag` query now analyzes composite action metadata (`action.yml`/`action.yaml` files) in addition to workflow files, providing more comprehensive detection of unpinned action references across the entire Actions ecosystem. + +### Bug Fixes + +* Fixed help file descriptions for queries: `actions/untrusted-checkout/critical`, `actions/untrusted-checkout/high`, `actions/untrusted-checkout/medium`. Previously the messages were unclear as to why and how the vulnerabilities could occur. diff --git a/actions/ql/src/codeql-pack.release.yml b/actions/ql/src/codeql-pack.release.yml index b8288b392226..90f3f09295a6 100644 --- a/actions/ql/src/codeql-pack.release.yml +++ b/actions/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 0.6.25 +lastReleaseVersion: 0.6.28 diff --git a/actions/ql/src/qlpack.yml b/actions/ql/src/qlpack.yml index 024862b808a6..894ba6fec690 100644 --- a/actions/ql/src/qlpack.yml +++ b/actions/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/actions-queries -version: 0.6.25 +version: 0.6.28 library: false warnOnImplicitThis: true groups: [actions, queries] diff --git a/actions/ql/test/query-tests/Security/CWE-275/.github/workflows/perms11.yml b/actions/ql/test/query-tests/Security/CWE-275/.github/workflows/perms11.yml new file mode 100644 index 000000000000..717cdabc3025 --- /dev/null +++ b/actions/ql/test/query-tests/Security/CWE-275/.github/workflows/perms11.yml @@ -0,0 +1,9 @@ +on: + workflow_call: + +jobs: + build: + name: Build and test + runs-on: ubuntu-latest + steps: + - uses: actions/deploy-pages diff --git a/actions/ql/test/query-tests/Security/CWE-275/.github/workflows/perms12.yml b/actions/ql/test/query-tests/Security/CWE-275/.github/workflows/perms12.yml new file mode 100644 index 000000000000..25ac1f532481 --- /dev/null +++ b/actions/ql/test/query-tests/Security/CWE-275/.github/workflows/perms12.yml @@ -0,0 +1,11 @@ +on: + workflow_dispatch: + +permissions: + contents: read + id-token: write + pages: write + +jobs: + call-workflow: + uses: ./.github/workflows/perms11.yml diff --git a/actions/ql/test/query-tests/Security/CWE-829/.github/actions/unpinned-tag/action.yml b/actions/ql/test/query-tests/Security/CWE-829/.github/actions/unpinned-tag/action.yml new file mode 100644 index 000000000000..782505cc698d --- /dev/null +++ b/actions/ql/test/query-tests/Security/CWE-829/.github/actions/unpinned-tag/action.yml @@ -0,0 +1,6 @@ +name: Composite unpinned tag test +runs: + using: "composite" + steps: + - uses: foo/bar@v2 + - uses: foo/bar@25b062c917b0c75f8b47d8469aff6c94ffd89abb diff --git a/actions/ql/test/query-tests/Security/CWE-829/ArtifactPoisoningCritical.expected b/actions/ql/test/query-tests/Security/CWE-829/ArtifactPoisoningCritical.expected index 2d29cd9b79b4..3c5f6bf93e98 100644 --- a/actions/ql/test/query-tests/Security/CWE-829/ArtifactPoisoningCritical.expected +++ b/actions/ql/test/query-tests/Security/CWE-829/ArtifactPoisoningCritical.expected @@ -55,21 +55,21 @@ nodes | .github/workflows/test25.yml:39:14:40:45 | ./gradlew buildScanPublishPrevious\n | semmle.label | ./gradlew buildScanPublishPrevious\n | subpaths #select -| .github/workflows/artifactpoisoning11.yml:38:11:38:77 | ./sonarcloud-data/x.py build -j$(nproc) --compiler gcc --skip-build | .github/workflows/artifactpoisoning11.yml:13:9:32:6 | Uses Step | .github/workflows/artifactpoisoning11.yml:38:11:38:77 | ./sonarcloud-data/x.py build -j$(nproc) --compiler gcc --skip-build | Potential artifact poisoning in $@, which may be controlled by an external user ($@). | .github/workflows/artifactpoisoning11.yml:38:11:38:77 | ./sonarcloud-data/x.py build -j$(nproc) --compiler gcc --skip-build | ./sonarcloud-data/x.py build -j$(nproc) --compiler gcc --skip-build | .github/workflows/artifactpoisoning11.yml:4:3:4:14 | workflow_run | workflow_run | -| .github/workflows/artifactpoisoning12.yml:38:11:38:25 | python foo/x.py | .github/workflows/artifactpoisoning12.yml:13:9:32:6 | Uses Step | .github/workflows/artifactpoisoning12.yml:38:11:38:25 | python foo/x.py | Potential artifact poisoning in $@, which may be controlled by an external user ($@). | .github/workflows/artifactpoisoning12.yml:38:11:38:25 | python foo/x.py | python foo/x.py | .github/workflows/artifactpoisoning12.yml:4:3:4:14 | workflow_run | workflow_run | -| .github/workflows/artifactpoisoning21.yml:19:14:20:21 | sh foo/cmd\n | .github/workflows/artifactpoisoning21.yml:13:9:18:6 | Uses Step | .github/workflows/artifactpoisoning21.yml:19:14:20:21 | sh foo/cmd\n | Potential artifact poisoning in $@, which may be controlled by an external user ($@). | .github/workflows/artifactpoisoning21.yml:19:14:20:21 | sh foo/cmd\n | sh foo/cmd\n | .github/workflows/artifactpoisoning21.yml:4:3:4:14 | workflow_run | workflow_run | -| .github/workflows/artifactpoisoning22.yml:18:14:18:19 | sh cmd | .github/workflows/artifactpoisoning22.yml:13:9:17:6 | Uses Step | .github/workflows/artifactpoisoning22.yml:18:14:18:19 | sh cmd | Potential artifact poisoning in $@, which may be controlled by an external user ($@). | .github/workflows/artifactpoisoning22.yml:18:14:18:19 | sh cmd | sh cmd | .github/workflows/artifactpoisoning22.yml:4:3:4:14 | workflow_run | workflow_run | -| .github/workflows/artifactpoisoning31.yml:19:14:19:22 | ./foo/cmd | .github/workflows/artifactpoisoning31.yml:13:9:15:6 | Run Step | .github/workflows/artifactpoisoning31.yml:19:14:19:22 | ./foo/cmd | Potential artifact poisoning in $@, which may be controlled by an external user ($@). | .github/workflows/artifactpoisoning31.yml:19:14:19:22 | ./foo/cmd | ./foo/cmd | .github/workflows/artifactpoisoning31.yml:4:3:4:14 | workflow_run | workflow_run | -| .github/workflows/artifactpoisoning32.yml:17:14:18:20 | ./bar/cmd\n | .github/workflows/artifactpoisoning32.yml:13:9:16:6 | Run Step | .github/workflows/artifactpoisoning32.yml:17:14:18:20 | ./bar/cmd\n | Potential artifact poisoning in $@, which may be controlled by an external user ($@). | .github/workflows/artifactpoisoning32.yml:17:14:18:20 | ./bar/cmd\n | ./bar/cmd\n | .github/workflows/artifactpoisoning32.yml:4:3:4:14 | workflow_run | workflow_run | -| .github/workflows/artifactpoisoning33.yml:17:14:18:20 | ./bar/cmd\n | .github/workflows/artifactpoisoning33.yml:13:9:16:6 | Run Step | .github/workflows/artifactpoisoning33.yml:17:14:18:20 | ./bar/cmd\n | Potential artifact poisoning in $@, which may be controlled by an external user ($@). | .github/workflows/artifactpoisoning33.yml:17:14:18:20 | ./bar/cmd\n | ./bar/cmd\n | .github/workflows/artifactpoisoning33.yml:4:3:4:14 | workflow_run | workflow_run | -| .github/workflows/artifactpoisoning34.yml:20:14:22:23 | npm install\nnpm run lint\n | .github/workflows/artifactpoisoning34.yml:13:9:16:6 | Run Step | .github/workflows/artifactpoisoning34.yml:20:14:22:23 | npm install\nnpm run lint\n | Potential artifact poisoning in $@, which may be controlled by an external user ($@). | .github/workflows/artifactpoisoning34.yml:20:14:22:23 | npm install\nnpm run lint\n | npm install\nnpm run lint\n | .github/workflows/artifactpoisoning34.yml:4:3:4:14 | workflow_run | workflow_run | -| .github/workflows/artifactpoisoning41.yml:22:14:22:22 | ./foo/cmd | .github/workflows/artifactpoisoning41.yml:13:9:21:6 | Run Step | .github/workflows/artifactpoisoning41.yml:22:14:22:22 | ./foo/cmd | Potential artifact poisoning in $@, which may be controlled by an external user ($@). | .github/workflows/artifactpoisoning41.yml:22:14:22:22 | ./foo/cmd | ./foo/cmd | .github/workflows/artifactpoisoning41.yml:4:3:4:14 | workflow_run | workflow_run | -| .github/workflows/artifactpoisoning42.yml:22:14:22:18 | ./cmd | .github/workflows/artifactpoisoning42.yml:13:9:21:6 | Run Step | .github/workflows/artifactpoisoning42.yml:22:14:22:18 | ./cmd | Potential artifact poisoning in $@, which may be controlled by an external user ($@). | .github/workflows/artifactpoisoning42.yml:22:14:22:18 | ./cmd | ./cmd | .github/workflows/artifactpoisoning42.yml:4:3:4:14 | workflow_run | workflow_run | -| .github/workflows/artifactpoisoning71.yml:17:14:18:40 | sed -f config foo.md > bar.md\n | .github/workflows/artifactpoisoning71.yml:9:9:16:6 | Uses Step | .github/workflows/artifactpoisoning71.yml:17:14:18:40 | sed -f config foo.md > bar.md\n | Potential artifact poisoning in $@, which may be controlled by an external user ($@). | .github/workflows/artifactpoisoning71.yml:17:14:18:40 | sed -f config foo.md > bar.md\n | sed -f config foo.md > bar.md\n | .github/workflows/artifactpoisoning71.yml:4:5:4:16 | workflow_run | workflow_run | -| .github/workflows/artifactpoisoning81.yml:31:14:31:27 | python test.py | .github/workflows/artifactpoisoning81.yml:28:9:31:6 | Uses Step | .github/workflows/artifactpoisoning81.yml:31:14:31:27 | python test.py | Potential artifact poisoning in $@, which may be controlled by an external user ($@). | .github/workflows/artifactpoisoning81.yml:31:14:31:27 | python test.py | python test.py | .github/workflows/artifactpoisoning81.yml:3:5:3:23 | pull_request_target | pull_request_target | -| .github/workflows/artifactpoisoning92.yml:28:9:29:6 | Uses Step | .github/actions/download-artifact-2/action.yaml:6:7:25:4 | Uses Step | .github/workflows/artifactpoisoning92.yml:28:9:29:6 | Uses Step | Potential artifact poisoning in $@, which may be controlled by an external user ($@). | .github/workflows/artifactpoisoning92.yml:28:9:29:6 | Uses Step | Uses Step | .github/workflows/artifactpoisoning92.yml:3:3:3:14 | workflow_run | workflow_run | -| .github/workflows/artifactpoisoning92.yml:29:14:29:26 | make snapshot | .github/actions/download-artifact-2/action.yaml:6:7:25:4 | Uses Step | .github/workflows/artifactpoisoning92.yml:29:14:29:26 | make snapshot | Potential artifact poisoning in $@, which may be controlled by an external user ($@). | .github/workflows/artifactpoisoning92.yml:29:14:29:26 | make snapshot | make snapshot | .github/workflows/artifactpoisoning92.yml:3:3:3:14 | workflow_run | workflow_run | -| .github/workflows/artifactpoisoning96.yml:18:14:18:24 | npm install | .github/workflows/artifactpoisoning96.yml:13:9:18:6 | Uses Step | .github/workflows/artifactpoisoning96.yml:18:14:18:24 | npm install | Potential artifact poisoning in $@, which may be controlled by an external user ($@). | .github/workflows/artifactpoisoning96.yml:18:14:18:24 | npm install | npm install | .github/workflows/artifactpoisoning96.yml:2:3:2:14 | workflow_run | workflow_run | -| .github/workflows/artifactpoisoning101.yml:17:14:19:59 | PR_NUMBER=$(./get_pull_request_number.sh pr_number.txt)\necho "PR_NUMBER=$PR_NUMBER" >> $GITHUB_OUTPUT \n | .github/workflows/artifactpoisoning101.yml:10:9:16:6 | Uses Step | .github/workflows/artifactpoisoning101.yml:17:14:19:59 | PR_NUMBER=$(./get_pull_request_number.sh pr_number.txt)\necho "PR_NUMBER=$PR_NUMBER" >> $GITHUB_OUTPUT \n | Potential artifact poisoning in $@, which may be controlled by an external user ($@). | .github/workflows/artifactpoisoning101.yml:17:14:19:59 | PR_NUMBER=$(./get_pull_request_number.sh pr_number.txt)\necho "PR_NUMBER=$PR_NUMBER" >> $GITHUB_OUTPUT \n | PR_NUMBER=$(./get_pull_request_number.sh pr_number.txt)\necho "PR_NUMBER=$PR_NUMBER" >> $GITHUB_OUTPUT \n | .github/workflows/artifactpoisoning101.yml:4:3:4:21 | pull_request_target | pull_request_target | -| .github/workflows/test18.yml:36:15:40:58 | Uses Step | .github/workflows/test18.yml:12:15:33:12 | Uses Step | .github/workflows/test18.yml:36:15:40:58 | Uses Step | Potential artifact poisoning in $@, which may be controlled by an external user ($@). | .github/workflows/test18.yml:36:15:40:58 | Uses Step | Uses Step | .github/workflows/test18.yml:3:5:3:16 | workflow_run | workflow_run | -| .github/workflows/test25.yml:39:14:40:45 | ./gradlew buildScanPublishPrevious\n | .github/workflows/test25.yml:22:9:32:6 | Uses Step: downloadBuildScan | .github/workflows/test25.yml:39:14:40:45 | ./gradlew buildScanPublishPrevious\n | Potential artifact poisoning in $@, which may be controlled by an external user ($@). | .github/workflows/test25.yml:39:14:40:45 | ./gradlew buildScanPublishPrevious\n | ./gradlew buildScanPublishPrevious\n | .github/workflows/test25.yml:2:3:2:14 | workflow_run | workflow_run | +| .github/actions/download-artifact-2/action.yaml:6:7:25:4 | Uses Step | .github/actions/download-artifact-2/action.yaml:6:7:25:4 | Uses Step | .github/workflows/artifactpoisoning92.yml:28:9:29:6 | Uses Step | Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user ($@). | .github/workflows/artifactpoisoning92.yml:3:3:3:14 | workflow_run | workflow_run | +| .github/actions/download-artifact-2/action.yaml:6:7:25:4 | Uses Step | .github/actions/download-artifact-2/action.yaml:6:7:25:4 | Uses Step | .github/workflows/artifactpoisoning92.yml:29:14:29:26 | make snapshot | Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user ($@). | .github/workflows/artifactpoisoning92.yml:3:3:3:14 | workflow_run | workflow_run | +| .github/workflows/artifactpoisoning11.yml:13:9:32:6 | Uses Step | .github/workflows/artifactpoisoning11.yml:13:9:32:6 | Uses Step | .github/workflows/artifactpoisoning11.yml:38:11:38:77 | ./sonarcloud-data/x.py build -j$(nproc) --compiler gcc --skip-build | Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user ($@). | .github/workflows/artifactpoisoning11.yml:4:3:4:14 | workflow_run | workflow_run | +| .github/workflows/artifactpoisoning12.yml:13:9:32:6 | Uses Step | .github/workflows/artifactpoisoning12.yml:13:9:32:6 | Uses Step | .github/workflows/artifactpoisoning12.yml:38:11:38:25 | python foo/x.py | Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user ($@). | .github/workflows/artifactpoisoning12.yml:4:3:4:14 | workflow_run | workflow_run | +| .github/workflows/artifactpoisoning21.yml:13:9:18:6 | Uses Step | .github/workflows/artifactpoisoning21.yml:13:9:18:6 | Uses Step | .github/workflows/artifactpoisoning21.yml:19:14:20:21 | sh foo/cmd\n | Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user ($@). | .github/workflows/artifactpoisoning21.yml:4:3:4:14 | workflow_run | workflow_run | +| .github/workflows/artifactpoisoning22.yml:13:9:17:6 | Uses Step | .github/workflows/artifactpoisoning22.yml:13:9:17:6 | Uses Step | .github/workflows/artifactpoisoning22.yml:18:14:18:19 | sh cmd | Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user ($@). | .github/workflows/artifactpoisoning22.yml:4:3:4:14 | workflow_run | workflow_run | +| .github/workflows/artifactpoisoning31.yml:13:9:15:6 | Run Step | .github/workflows/artifactpoisoning31.yml:13:9:15:6 | Run Step | .github/workflows/artifactpoisoning31.yml:19:14:19:22 | ./foo/cmd | Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user ($@). | .github/workflows/artifactpoisoning31.yml:4:3:4:14 | workflow_run | workflow_run | +| .github/workflows/artifactpoisoning32.yml:13:9:16:6 | Run Step | .github/workflows/artifactpoisoning32.yml:13:9:16:6 | Run Step | .github/workflows/artifactpoisoning32.yml:17:14:18:20 | ./bar/cmd\n | Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user ($@). | .github/workflows/artifactpoisoning32.yml:4:3:4:14 | workflow_run | workflow_run | +| .github/workflows/artifactpoisoning33.yml:13:9:16:6 | Run Step | .github/workflows/artifactpoisoning33.yml:13:9:16:6 | Run Step | .github/workflows/artifactpoisoning33.yml:17:14:18:20 | ./bar/cmd\n | Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user ($@). | .github/workflows/artifactpoisoning33.yml:4:3:4:14 | workflow_run | workflow_run | +| .github/workflows/artifactpoisoning34.yml:13:9:16:6 | Run Step | .github/workflows/artifactpoisoning34.yml:13:9:16:6 | Run Step | .github/workflows/artifactpoisoning34.yml:20:14:22:23 | npm install\nnpm run lint\n | Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user ($@). | .github/workflows/artifactpoisoning34.yml:4:3:4:14 | workflow_run | workflow_run | +| .github/workflows/artifactpoisoning41.yml:13:9:21:6 | Run Step | .github/workflows/artifactpoisoning41.yml:13:9:21:6 | Run Step | .github/workflows/artifactpoisoning41.yml:22:14:22:22 | ./foo/cmd | Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user ($@). | .github/workflows/artifactpoisoning41.yml:4:3:4:14 | workflow_run | workflow_run | +| .github/workflows/artifactpoisoning42.yml:13:9:21:6 | Run Step | .github/workflows/artifactpoisoning42.yml:13:9:21:6 | Run Step | .github/workflows/artifactpoisoning42.yml:22:14:22:18 | ./cmd | Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user ($@). | .github/workflows/artifactpoisoning42.yml:4:3:4:14 | workflow_run | workflow_run | +| .github/workflows/artifactpoisoning71.yml:9:9:16:6 | Uses Step | .github/workflows/artifactpoisoning71.yml:9:9:16:6 | Uses Step | .github/workflows/artifactpoisoning71.yml:17:14:18:40 | sed -f config foo.md > bar.md\n | Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user ($@). | .github/workflows/artifactpoisoning71.yml:4:5:4:16 | workflow_run | workflow_run | +| .github/workflows/artifactpoisoning81.yml:28:9:31:6 | Uses Step | .github/workflows/artifactpoisoning81.yml:28:9:31:6 | Uses Step | .github/workflows/artifactpoisoning81.yml:31:14:31:27 | python test.py | Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user ($@). | .github/workflows/artifactpoisoning81.yml:3:5:3:23 | pull_request_target | pull_request_target | +| .github/workflows/artifactpoisoning96.yml:13:9:18:6 | Uses Step | .github/workflows/artifactpoisoning96.yml:13:9:18:6 | Uses Step | .github/workflows/artifactpoisoning96.yml:18:14:18:24 | npm install | Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user ($@). | .github/workflows/artifactpoisoning96.yml:2:3:2:14 | workflow_run | workflow_run | +| .github/workflows/artifactpoisoning101.yml:10:9:16:6 | Uses Step | .github/workflows/artifactpoisoning101.yml:10:9:16:6 | Uses Step | .github/workflows/artifactpoisoning101.yml:17:14:19:59 | PR_NUMBER=$(./get_pull_request_number.sh pr_number.txt)\necho "PR_NUMBER=$PR_NUMBER" >> $GITHUB_OUTPUT \n | Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user ($@). | .github/workflows/artifactpoisoning101.yml:4:3:4:21 | pull_request_target | pull_request_target | +| .github/workflows/test18.yml:12:15:33:12 | Uses Step | .github/workflows/test18.yml:12:15:33:12 | Uses Step | .github/workflows/test18.yml:36:15:40:58 | Uses Step | Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user ($@). | .github/workflows/test18.yml:3:5:3:16 | workflow_run | workflow_run | +| .github/workflows/test25.yml:22:9:32:6 | Uses Step: downloadBuildScan | .github/workflows/test25.yml:22:9:32:6 | Uses Step: downloadBuildScan | .github/workflows/test25.yml:39:14:40:45 | ./gradlew buildScanPublishPrevious\n | Potential artifact poisoning; the artifact being consumed has contents that may be controlled by an external user ($@). | .github/workflows/test25.yml:2:3:2:14 | workflow_run | workflow_run | diff --git a/actions/ql/test/query-tests/Security/CWE-829/UnpinnedActionsTag.expected b/actions/ql/test/query-tests/Security/CWE-829/UnpinnedActionsTag.expected index ed35f1546171..29568087d0ed 100644 --- a/actions/ql/test/query-tests/Security/CWE-829/UnpinnedActionsTag.expected +++ b/actions/ql/test/query-tests/Security/CWE-829/UnpinnedActionsTag.expected @@ -1,3 +1,4 @@ +| .github/actions/unpinned-tag/action.yml:5:13:5:22 | foo/bar@v2 | Unpinned 3rd party Action 'action.yml' step $@ uses 'foo/bar' with ref 'v2', not a pinned commit hash | .github/actions/unpinned-tag/action.yml:5:7:6:4 | Uses Step | Uses Step | | .github/workflows/actor_trusted_checkout.yml:19:13:19:36 | completely/fakeaction@v2 | Unpinned 3rd party Action 'actor_trusted_checkout.yml' step $@ uses 'completely/fakeaction' with ref 'v2', not a pinned commit hash | .github/workflows/actor_trusted_checkout.yml:19:7:23:4 | Uses Step | Uses Step | | .github/workflows/actor_trusted_checkout.yml:23:13:23:37 | fakerepo/comment-on-pr@v1 | Unpinned 3rd party Action 'actor_trusted_checkout.yml' step $@ uses 'fakerepo/comment-on-pr' with ref 'v1', not a pinned commit hash | .github/workflows/actor_trusted_checkout.yml:23:7:26:21 | Uses Step | Uses Step | | .github/workflows/artifactpoisoning21.yml:13:15:13:49 | dawidd6/action-download-artifact@v2 | Unpinned 3rd party Action 'Pull Request Open' step $@ uses 'dawidd6/action-download-artifact' with ref 'v2', not a pinned commit hash | .github/workflows/artifactpoisoning21.yml:13:9:18:6 | Uses Step | Uses Step | diff --git a/actions/ql/test/query-tests/Security/CWE-829/UntrustedCheckoutCritical.expected b/actions/ql/test/query-tests/Security/CWE-829/UntrustedCheckoutCritical.expected index 39e54b2bbaed..7b63fb560cbe 100644 --- a/actions/ql/test/query-tests/Security/CWE-829/UntrustedCheckoutCritical.expected +++ b/actions/ql/test/query-tests/Security/CWE-829/UntrustedCheckoutCritical.expected @@ -8,6 +8,7 @@ edges | .github/actions/download-artifact/action.yaml:25:7:29:4 | Run Step | .github/actions/download-artifact/action.yaml:29:7:32:18 | Run Step | | .github/actions/download-artifact/action.yaml:29:7:32:18 | Run Step | .github/workflows/artifactpoisoning91.yml:19:9:25:6 | Run Step: metadata | | .github/actions/download-artifact/action.yaml:29:7:32:18 | Run Step | .github/workflows/resolve-args.yml:22:9:36:13 | Run Step: resolve-step | +| .github/actions/unpinned-tag/action.yml:5:7:6:4 | Uses Step | .github/actions/unpinned-tag/action.yml:6:7:6:61 | Uses Step | | .github/workflows/actor_trusted_checkout.yml:9:7:14:4 | Uses Step | .github/workflows/actor_trusted_checkout.yml:14:7:15:4 | Uses Step | | .github/workflows/actor_trusted_checkout.yml:14:7:15:4 | Uses Step | .github/workflows/actor_trusted_checkout.yml:15:7:19:4 | Run Step | | .github/workflows/actor_trusted_checkout.yml:15:7:19:4 | Run Step | .github/workflows/actor_trusted_checkout.yml:19:7:23:4 | Uses Step | diff --git a/cpp/ql/integration-tests/query-suite/cpp-code-scanning.qls.expected b/cpp/ql/integration-tests/query-suite/cpp-code-scanning.qls.expected index 57d240fd7958..d4b805999500 100644 --- a/cpp/ql/integration-tests/query-suite/cpp-code-scanning.qls.expected +++ b/cpp/ql/integration-tests/query-suite/cpp-code-scanning.qls.expected @@ -7,10 +7,12 @@ ql/cpp/ql/src/Diagnostics/ExtractedFiles.ql ql/cpp/ql/src/Diagnostics/ExtractionWarnings.ql ql/cpp/ql/src/Diagnostics/FailedExtractorInvocations.ql ql/cpp/ql/src/Likely Bugs/Arithmetic/BadAdditionOverflowCheck.ql +ql/cpp/ql/src/Likely Bugs/Arithmetic/IntMultToLong.ql ql/cpp/ql/src/Likely Bugs/Arithmetic/SignedOverflowCheck.ql ql/cpp/ql/src/Likely Bugs/Conversion/CastArrayPointerArithmetic.ql ql/cpp/ql/src/Likely Bugs/Format/SnprintfOverflow.ql ql/cpp/ql/src/Likely Bugs/Format/WrongNumberOfFormatArguments.ql +ql/cpp/ql/src/Likely Bugs/Format/WrongTypeFormatArguments.ql ql/cpp/ql/src/Likely Bugs/Memory Management/AllocaInLoop.ql ql/cpp/ql/src/Likely Bugs/Memory Management/PointerOverflow.ql ql/cpp/ql/src/Likely Bugs/Memory Management/ReturnStackAllocatedMemory.ql @@ -28,6 +30,7 @@ ql/cpp/ql/src/Security/CWE/CWE-120/VeryLikelyOverrunWrite.ql ql/cpp/ql/src/Security/CWE/CWE-131/NoSpaceForZeroTerminator.ql ql/cpp/ql/src/Security/CWE/CWE-134/UncontrolledFormatString.ql ql/cpp/ql/src/Security/CWE/CWE-190/ArithmeticUncontrolled.ql +ql/cpp/ql/src/Security/CWE/CWE-190/ComparisonWithWiderType.ql ql/cpp/ql/src/Security/CWE/CWE-191/UnsignedDifferenceExpressionComparedZero.ql ql/cpp/ql/src/Security/CWE/CWE-253/HResultBooleanConversion.ql ql/cpp/ql/src/Security/CWE/CWE-311/CleartextFileWrite.ql @@ -40,6 +43,7 @@ ql/cpp/ql/src/Security/CWE/CWE-367/TOCTOUFilesystemRace.ql ql/cpp/ql/src/Security/CWE/CWE-416/IteratorToExpiredContainer.ql ql/cpp/ql/src/Security/CWE/CWE-416/UseOfStringAfterLifetimeEnds.ql ql/cpp/ql/src/Security/CWE/CWE-416/UseOfUniquePointerAfterLifetimeEnds.ql +ql/cpp/ql/src/Security/CWE/CWE-468/SuspiciousAddWithSizeof.ql ql/cpp/ql/src/Security/CWE/CWE-497/ExposedSystemData.ql ql/cpp/ql/src/Security/CWE/CWE-611/XXE.ql ql/cpp/ql/src/Security/CWE/CWE-676/DangerousFunctionOverflow.ql diff --git a/cpp/ql/lib/CHANGELOG.md b/cpp/ql/lib/CHANGELOG.md index 5b5bc748c5dd..3b95c10fbb57 100644 --- a/cpp/ql/lib/CHANGELOG.md +++ b/cpp/ql/lib/CHANGELOG.md @@ -1,3 +1,31 @@ +## 10.1.1 + +### Minor Analysis Improvements + +* The `RemoteFlowSourceFunction` model for `fscanf` (and variants) now implements `hasSocketInput` to reflect that these functions may read from a socket. + +## 10.1.0 + +### New Features + +* A new predicate `getSwitchCase` was added to the `SwitchStmt` class, which yields the `n`th `case` statement from a `switch` statement. +* Data flow barriers and barrier guards can now be added using data extensions. For more information see [Customizing library models for C and C++](https://codeql.github.com/docs/codeql-language-guides/customizing-library-models-for-cpp/). + +### Minor Analysis Improvements + +* Added taint flow models for the `Strsafe.h` header from the Windows SDK. + +## 10.0.0 + +### Breaking Changes + +* The deprecated `NonThrowingFunction` class has been removed, use `NonCppThrowingFunction` instead. +* The deprecated `ThrowingFunction` class has been removed, use `AlwaysSehThrowingFunction` instead. + +### New Features + +* Added a subclass `AutoconfConfigureTestFile` of `ConfigurationTestFile` that represents files created by GNU autoconf configure scripts to test the build configuration. + ## 9.0.0 ### Breaking Changes diff --git a/cpp/ql/lib/change-notes/released/10.0.0.md b/cpp/ql/lib/change-notes/released/10.0.0.md new file mode 100644 index 000000000000..af591bd1a0ad --- /dev/null +++ b/cpp/ql/lib/change-notes/released/10.0.0.md @@ -0,0 +1,10 @@ +## 10.0.0 + +### Breaking Changes + +* The deprecated `NonThrowingFunction` class has been removed, use `NonCppThrowingFunction` instead. +* The deprecated `ThrowingFunction` class has been removed, use `AlwaysSehThrowingFunction` instead. + +### New Features + +* Added a subclass `AutoconfConfigureTestFile` of `ConfigurationTestFile` that represents files created by GNU autoconf configure scripts to test the build configuration. diff --git a/cpp/ql/lib/change-notes/released/10.1.0.md b/cpp/ql/lib/change-notes/released/10.1.0.md new file mode 100644 index 000000000000..45d153b4896e --- /dev/null +++ b/cpp/ql/lib/change-notes/released/10.1.0.md @@ -0,0 +1,10 @@ +## 10.1.0 + +### New Features + +* A new predicate `getSwitchCase` was added to the `SwitchStmt` class, which yields the `n`th `case` statement from a `switch` statement. +* Data flow barriers and barrier guards can now be added using data extensions. For more information see [Customizing library models for C and C++](https://codeql.github.com/docs/codeql-language-guides/customizing-library-models-for-cpp/). + +### Minor Analysis Improvements + +* Added taint flow models for the `Strsafe.h` header from the Windows SDK. diff --git a/cpp/ql/lib/change-notes/released/10.1.1.md b/cpp/ql/lib/change-notes/released/10.1.1.md new file mode 100644 index 000000000000..f89a429fae6e --- /dev/null +++ b/cpp/ql/lib/change-notes/released/10.1.1.md @@ -0,0 +1,5 @@ +## 10.1.1 + +### Minor Analysis Improvements + +* The `RemoteFlowSourceFunction` model for `fscanf` (and variants) now implements `hasSocketInput` to reflect that these functions may read from a socket. diff --git a/cpp/ql/lib/codeql-pack.release.yml b/cpp/ql/lib/codeql-pack.release.yml index fd5f4a48b3c1..940a668bbf36 100644 --- a/cpp/ql/lib/codeql-pack.release.yml +++ b/cpp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 9.0.0 +lastReleaseVersion: 10.1.1 diff --git a/cpp/ql/lib/ext/Strsafe.model.yml b/cpp/ql/lib/ext/Strsafe.model.yml new file mode 100644 index 000000000000..44013854a067 --- /dev/null +++ b/cpp/ql/lib/ext/Strsafe.model.yml @@ -0,0 +1,94 @@ +# Models for strsafe.h safe string functions +extensions: + - addsTo: + pack: codeql/cpp-all + extensible: sourceModel + data: # namespace, type, subtypes, name, signature, ext, output, kind, provenance + # StringCchGets: (pszDest, cchDest) + - ["", "", False, "StringCchGetsA", "", "", "Argument[*0]", "local", "manual"] + - ["", "", False, "StringCchGetsW", "", "", "Argument[*0]", "local", "manual"] + # StringCbGets: (pszDest, cbDest) + - ["", "", False, "StringCbGetsA", "", "", "Argument[*0]", "local", "manual"] + - ["", "", False, "StringCbGetsW", "", "", "Argument[*0]", "local", "manual"] + # StringCchGetsEx: (pszDest, cchDest, ppszDestEnd, pcchRemaining, dwFlags) + - ["", "", False, "StringCchGetsExA", "", "", "Argument[*0]", "local", "manual"] + - ["", "", False, "StringCchGetsExW", "", "", "Argument[*0]", "local", "manual"] + # StringCbGetsEx: (pszDest, cbDest, ppszDestEnd, pcbRemaining, dwFlags) + - ["", "", False, "StringCbGetsExA", "", "", "Argument[*0]", "local", "manual"] + - ["", "", False, "StringCbGetsExW", "", "", "Argument[*0]", "local", "manual"] + - addsTo: + pack: codeql/cpp-all + extensible: summaryModel + data: # namespace, type, subtypes, name, signature, ext, input, output, kind, provenance + # StringCchCopy: (pszDest, cchDest, pszSrc) + - ["", "", False, "StringCchCopyA", "", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + - ["", "", False, "StringCchCopyW", "", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + # StringCbCopy: (pszDest, cbDest, pszSrc) + - ["", "", False, "StringCbCopyA", "", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + - ["", "", False, "StringCbCopyW", "", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + # StringCchCopyEx: (pszDest, cchDest, pszSrc, ppszDestEnd, pcchRemaining, dwFlags) + - ["", "", False, "StringCchCopyExA", "", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + - ["", "", False, "StringCchCopyExW", "", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + # StringCbCopyEx: (pszDest, cbDest, pszSrc, ppszDestEnd, pcbRemaining, dwFlags) + - ["", "", False, "StringCbCopyExA", "", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + - ["", "", False, "StringCbCopyExW", "", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + # StringCchCopyN: (pszDest, cchDest, pszSrc, cchToCopy) + - ["", "", False, "StringCchCopyNA", "", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + - ["", "", False, "StringCchCopyNW", "", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + # StringCbCopyN: (pszDest, cbDest, pszSrc, cbToCopy) + - ["", "", False, "StringCbCopyNA", "", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + - ["", "", False, "StringCbCopyNW", "", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + # StringCchCopyNEx: (pszDest, cchDest, pszSrc, cchToCopy, ppszDestEnd, pcchRemaining, dwFlags) + - ["", "", False, "StringCchCopyNExA", "", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + - ["", "", False, "StringCchCopyNExW", "", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + # StringCbCopyNEx: (pszDest, cbDest, pszSrc, cbToCopy, ppszDestEnd, pcbRemaining, dwFlags) + - ["", "", False, "StringCbCopyNExA", "", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + - ["", "", False, "StringCbCopyNExW", "", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + # StringCchCat: (pszDest, cchDest, pszSrc) + - ["", "", False, "StringCchCatA", "", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + - ["", "", False, "StringCchCatW", "", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + # StringCbCat: (pszDest, cbDest, pszSrc) + - ["", "", False, "StringCbCatA", "", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + - ["", "", False, "StringCbCatW", "", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + # StringCchCatEx: (pszDest, cchDest, pszSrc, ppszDestEnd, pcchRemaining, dwFlags) + - ["", "", False, "StringCchCatExA", "", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + - ["", "", False, "StringCchCatExW", "", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + # StringCbCatEx: (pszDest, cbDest, pszSrc, ppszDestEnd, pcbRemaining, dwFlags) + - ["", "", False, "StringCbCatExA", "", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + - ["", "", False, "StringCbCatExW", "", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + # StringCchCatN: (pszDest, cchDest, pszSrc, cchToAppend) + - ["", "", False, "StringCchCatNA", "", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + - ["", "", False, "StringCchCatNW", "", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + # StringCbCatN: (pszDest, cbDest, pszSrc, cbToAppend) + - ["", "", False, "StringCbCatNA", "", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + - ["", "", False, "StringCbCatNW", "", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + # StringCchCatNEx: (pszDest, cchDest, pszSrc, cchToAppend, ppszDestEnd, pcchRemaining, dwFlags) + - ["", "", False, "StringCchCatNExA", "", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + - ["", "", False, "StringCchCatNExW", "", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + # StringCbCatNEx: (pszDest, cbDest, pszSrc, cbToAppend, ppszDestEnd, pcbRemaining, dwFlags) + - ["", "", False, "StringCbCatNExA", "", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + - ["", "", False, "StringCbCatNExW", "", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + # StringCchPrintf: (pszDest, cchDest, pszFormat, ...) + - ["", "", False, "StringCchPrintfA", "", "", "Argument[*2..8]", "Argument[*0]", "taint", "manual"] + - ["", "", False, "StringCchPrintfW", "", "", "Argument[*2..8]", "Argument[*0]", "taint", "manual"] + # StringCbPrintf: (pszDest, cbDest, pszFormat, ...) + - ["", "", False, "StringCbPrintfA", "", "", "Argument[*2..8]", "Argument[*0]", "taint", "manual"] + - ["", "", False, "StringCbPrintfW", "", "", "Argument[*2..8]", "Argument[*0]", "taint", "manual"] + # StringCchPrintfEx: (pszDest, cchDest, ppszDestEnd, pcchRemaining, dwFlags, pszFormat, ...) + - ["", "", False, "StringCchPrintfExA", "", "", "Argument[*5..11]", "Argument[*0]", "taint", "manual"] + - ["", "", False, "StringCchPrintfExW", "", "", "Argument[*5..11]", "Argument[*0]", "taint", "manual"] + # StringCbPrintfEx: (pszDest, cbDest, ppszDestEnd, pcbRemaining, dwFlags, pszFormat, ...) + - ["", "", False, "StringCbPrintfExA", "", "", "Argument[*5..11]", "Argument[*0]", "taint", "manual"] + - ["", "", False, "StringCbPrintfExW", "", "", "Argument[*5..11]", "Argument[*0]", "taint", "manual"] + # StringCchVPrintf: (pszDest, cchDest, pszFormat, argList) + - ["", "", False, "StringCchVPrintfA", "", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + - ["", "", False, "StringCchVPrintfW", "", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + # StringCbVPrintf: (pszDest, cbDest, pszFormat, argList) + - ["", "", False, "StringCbVPrintfA", "", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + - ["", "", False, "StringCbVPrintfW", "", "", "Argument[*2]", "Argument[*0]", "taint", "manual"] + # StringCchVPrintfEx: (pszDest, cchDest, ppszDestEnd, pcchRemaining, dwFlags, pszFormat, argList) + - ["", "", False, "StringCchVPrintfExA", "", "", "Argument[*5]", "Argument[*0]", "taint", "manual"] + - ["", "", False, "StringCchVPrintfExW", "", "", "Argument[*5]", "Argument[*0]", "taint", "manual"] + # StringCbVPrintfEx: (pszDest, cbDest, ppszDestEnd, pcbRemaining, dwFlags, pszFormat, argList) + - ["", "", False, "StringCbVPrintfExA", "", "", "Argument[*5]", "Argument[*0]", "taint", "manual"] + - ["", "", False, "StringCbVPrintfExW", "", "", "Argument[*5]", "Argument[*0]", "taint", "manual"] diff --git a/cpp/ql/lib/ext/allocation/Std.allocation.model.yml b/cpp/ql/lib/ext/allocation/Std.allocation.model.yml index 16b3d5bcebad..227cc4176c0d 100644 --- a/cpp/ql/lib/ext/allocation/Std.allocation.model.yml +++ b/cpp/ql/lib/ext/allocation/Std.allocation.model.yml @@ -12,4 +12,7 @@ extensions: - ["", "", False, "_malloca", "0", "", "", False] - ["", "", False, "calloc", "1", "0", "", True] - ["std", "", False, "calloc", "1", "0", "", True] - - ["bsl", "", False, "calloc", "1", "0", "", True] \ No newline at end of file + - ["bsl", "", False, "calloc", "1", "0", "", True] + - ["", "", False, "aligned_alloc", "1", "", "", True] + - ["std", "", False, "aligned_alloc", "1", "", "", True] + - ["bsl", "", False, "aligned_alloc", "1", "", "", True] diff --git a/cpp/ql/lib/ext/generated/brotli/brotli.model.yml b/cpp/ql/lib/ext/generated/modelgenerator/brotli/brotli.model.yml similarity index 100% rename from cpp/ql/lib/ext/generated/brotli/brotli.model.yml rename to cpp/ql/lib/ext/generated/modelgenerator/brotli/brotli.model.yml diff --git a/cpp/ql/lib/ext/generated/curl/curl.model.yml b/cpp/ql/lib/ext/generated/modelgenerator/curl/curl.model.yml similarity index 100% rename from cpp/ql/lib/ext/generated/curl/curl.model.yml rename to cpp/ql/lib/ext/generated/modelgenerator/curl/curl.model.yml diff --git a/cpp/ql/lib/ext/generated/glibc/glibc.model.yml b/cpp/ql/lib/ext/generated/modelgenerator/glibc/glibc.model.yml similarity index 100% rename from cpp/ql/lib/ext/generated/glibc/glibc.model.yml rename to cpp/ql/lib/ext/generated/modelgenerator/glibc/glibc.model.yml diff --git a/cpp/ql/lib/ext/generated/libidn2/libidn2.model.yml b/cpp/ql/lib/ext/generated/modelgenerator/libidn2/libidn2.model.yml similarity index 100% rename from cpp/ql/lib/ext/generated/libidn2/libidn2.model.yml rename to cpp/ql/lib/ext/generated/modelgenerator/libidn2/libidn2.model.yml diff --git a/cpp/ql/lib/ext/generated/libssh2/libssh2.model.yml b/cpp/ql/lib/ext/generated/modelgenerator/libssh2/libssh2.model.yml similarity index 100% rename from cpp/ql/lib/ext/generated/libssh2/libssh2.model.yml rename to cpp/ql/lib/ext/generated/modelgenerator/libssh2/libssh2.model.yml diff --git a/cpp/ql/lib/ext/generated/libuv/libuv.model.yml b/cpp/ql/lib/ext/generated/modelgenerator/libuv/libuv.model.yml similarity index 100% rename from cpp/ql/lib/ext/generated/libuv/libuv.model.yml rename to cpp/ql/lib/ext/generated/modelgenerator/libuv/libuv.model.yml diff --git a/cpp/ql/lib/ext/generated/nghttp2/nghttp2.model.yml b/cpp/ql/lib/ext/generated/modelgenerator/nghttp2/nghttp2.model.yml similarity index 100% rename from cpp/ql/lib/ext/generated/nghttp2/nghttp2.model.yml rename to cpp/ql/lib/ext/generated/modelgenerator/nghttp2/nghttp2.model.yml diff --git a/cpp/ql/lib/ext/generated/openssl/openssl.model.yml b/cpp/ql/lib/ext/generated/modelgenerator/openssl/openssl.model.yml similarity index 100% rename from cpp/ql/lib/ext/generated/openssl/openssl.model.yml rename to cpp/ql/lib/ext/generated/modelgenerator/openssl/openssl.model.yml diff --git a/cpp/ql/lib/ext/generated/sqlite/sqlite.model.yml b/cpp/ql/lib/ext/generated/modelgenerator/sqlite/sqlite.model.yml similarity index 100% rename from cpp/ql/lib/ext/generated/sqlite/sqlite.model.yml rename to cpp/ql/lib/ext/generated/modelgenerator/sqlite/sqlite.model.yml diff --git a/cpp/ql/lib/ext/generated/zlib/zlib.model.yml b/cpp/ql/lib/ext/generated/modelgenerator/zlib/zlib.model.yml similarity index 100% rename from cpp/ql/lib/ext/generated/zlib/zlib.model.yml rename to cpp/ql/lib/ext/generated/modelgenerator/zlib/zlib.model.yml diff --git a/cpp/ql/lib/qlpack.yml b/cpp/ql/lib/qlpack.yml index e4e7a96ef681..dd55ebe6c3a4 100644 --- a/cpp/ql/lib/qlpack.yml +++ b/cpp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-all -version: 9.0.0 +version: 10.1.1 groups: cpp dbscheme: semmlecode.cpp.dbscheme extractor: cpp diff --git a/cpp/ql/lib/semmle/code/cpp/ConfigurationTestFile.qll b/cpp/ql/lib/semmle/code/cpp/ConfigurationTestFile.qll index b39c1009f07e..ae90caa0e637 100644 --- a/cpp/ql/lib/semmle/code/cpp/ConfigurationTestFile.qll +++ b/cpp/ql/lib/semmle/code/cpp/ConfigurationTestFile.qll @@ -42,3 +42,10 @@ class MesonPrivateTestFile extends ConfigurationTestFile { ) } } + +/** + * A file created by a GNU autoconf configure script to test the system configuration. + */ +class AutoconfConfigureTestFile extends ConfigurationTestFile { + AutoconfConfigureTestFile() { this.getBaseName().regexpMatch("conftest[0-9]*\\.c(pp)?") } +} diff --git a/cpp/ql/lib/semmle/code/cpp/commons/Printf.qll b/cpp/ql/lib/semmle/code/cpp/commons/Printf.qll index d189dd36f87c..624465761c2c 100644 --- a/cpp/ql/lib/semmle/code/cpp/commons/Printf.qll +++ b/cpp/ql/lib/semmle/code/cpp/commons/Printf.qll @@ -459,6 +459,13 @@ class FormatLiteral extends Literal instanceof StringLiteral { */ int getConvSpecOffset(int n) { result = this.getFormat().indexOf("%", n, 0) } + /** + * Gets the nth conversion specifier string. + */ + private string getConvSpecString(int n) { + n >= 0 and result = "%" + this.getFormat().splitAt("%", n + 1) + } + /* * Each of these predicates gets a regular expressions to match each individual * parts of a conversion specifier. @@ -524,22 +531,20 @@ class FormatLiteral extends Literal instanceof StringLiteral { int n, string spec, string params, string flags, string width, string prec, string len, string conv ) { - exists(int offset, string fmt, string rst, string regexp | - offset = this.getConvSpecOffset(n) and - fmt = this.getFormat() and - rst = fmt.substring(offset, fmt.length()) and + exists(string convSpec, string regexp | + convSpec = this.getConvSpecString(n) and regexp = this.getConvSpecRegexp() and ( - spec = rst.regexpCapture(regexp, 1) and - params = rst.regexpCapture(regexp, 2) and - flags = rst.regexpCapture(regexp, 3) and - width = rst.regexpCapture(regexp, 4) and - prec = rst.regexpCapture(regexp, 5) and - len = rst.regexpCapture(regexp, 6) and - conv = rst.regexpCapture(regexp, 7) + spec = convSpec.regexpCapture(regexp, 1) and + params = convSpec.regexpCapture(regexp, 2) and + flags = convSpec.regexpCapture(regexp, 3) and + width = convSpec.regexpCapture(regexp, 4) and + prec = convSpec.regexpCapture(regexp, 5) and + len = convSpec.regexpCapture(regexp, 6) and + conv = convSpec.regexpCapture(regexp, 7) or - spec = rst.regexpCapture(regexp, 1) and - not exists(rst.regexpCapture(regexp, 2)) and + spec = convSpec.regexpCapture(regexp, 1) and + not exists(convSpec.regexpCapture(regexp, 2)) and params = "" and flags = "" and width = "" and @@ -554,12 +559,10 @@ class FormatLiteral extends Literal instanceof StringLiteral { * Gets the nth conversion specifier (including the initial `%`). */ string getConvSpec(int n) { - exists(int offset, string fmt, string rst, string regexp | - offset = this.getConvSpecOffset(n) and - fmt = this.getFormat() and - rst = fmt.substring(offset, fmt.length()) and + exists(string convSpec, string regexp | + convSpec = this.getConvSpecString(n) and regexp = this.getConvSpecRegexp() and - result = rst.regexpCapture(regexp, 1) + result = convSpec.regexpCapture(regexp, 1) ) } diff --git a/cpp/ql/lib/semmle/code/cpp/commons/Scanf.qll b/cpp/ql/lib/semmle/code/cpp/commons/Scanf.qll index f032ba4749e6..98280a522cfd 100644 --- a/cpp/ql/lib/semmle/code/cpp/commons/Scanf.qll +++ b/cpp/ql/lib/semmle/code/cpp/commons/Scanf.qll @@ -194,6 +194,13 @@ class ScanfFormatLiteral extends Expr { ) } + /** + * Gets the nth conversion specifier string. + */ + private string getConvSpecString(int n) { + n >= 0 and result = "%" + this.getFormat().splitAt("%", n + 1) + } + /** * Gets the regular expression to match each individual part of a conversion specifier. */ @@ -227,16 +234,14 @@ class ScanfFormatLiteral extends Expr { * specifier. */ predicate parseConvSpec(int n, string spec, string width, string len, string conv) { - exists(int offset, string fmt, string rst, string regexp | - offset = this.getConvSpecOffset(n) and - fmt = this.getFormat() and - rst = fmt.substring(offset, fmt.length()) and + exists(string convSpec, string regexp | + convSpec = this.getConvSpecString(n) and regexp = this.getConvSpecRegexp() and ( - spec = rst.regexpCapture(regexp, 1) and - width = rst.regexpCapture(regexp, 2) and - len = rst.regexpCapture(regexp, 3) and - conv = rst.regexpCapture(regexp, 4) + spec = convSpec.regexpCapture(regexp, 1) and + width = convSpec.regexpCapture(regexp, 2) and + len = convSpec.regexpCapture(regexp, 3) and + conv = convSpec.regexpCapture(regexp, 4) ) ) } diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll index 8b71f140b01b..fb2108c2ac58 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/ExternalFlow.qll @@ -6,11 +6,15 @@ * * The extensible relations have the following columns: * - Sources: - * `namespace; type; subtypes; name; signature; ext; output; kind` + * `namespace; type; subtypes; name; signature; ext; output; kind; provenance` * - Sinks: - * `namespace; type; subtypes; name; signature; ext; input; kind` + * `namespace; type; subtypes; name; signature; ext; input; kind; provenance` * - Summaries: - * `namespace; type; subtypes; name; signature; ext; input; output; kind` + * `namespace; type; subtypes; name; signature; ext; input; output; kind; provenance` + * - Barriers: + * `namespace; type; subtypes; name; signature; ext; output; kind; provenance` + * - BarrierGuards: + * `namespace; type; subtypes; name; signature; ext; input; acceptingValue; kind; provenance` * * The interpretation of a row is similar to API-graphs with a left-to-right * reading. @@ -87,11 +91,23 @@ * value, and * - flow from the _second_ indirection of the 0th argument to the first * indirection of the return value, etc. - * 8. The `kind` column is a tag that can be referenced from QL to determine to + * 8. The `acceptingValue` column of barrier guard models specifies the condition + * under which the guard blocks flow. It can be one of "true" or "false". In + * the future "no-exception", "not-zero", "null", "not-null" may be supported. + * 9. The `kind` column is a tag that can be referenced from QL to determine to * which classes the interpreted elements should be added. For example, for * sources "remote" indicates a default remote flow source, and for summaries * "taint" indicates a default additional taint step and "value" indicates a * globally applicable value-preserving step. + * 10. The `provenance` column is a tag to indicate the origin and verification of a model. + * The format is {origin}-{verification} or just "manual" where the origin describes + * the origin of the model and verification describes how the model has been verified. + * Some examples are: + * - "df-generated": The model has been generated by the model generator tool. + * - "df-manual": The model has been generated by the model generator and verified by a human. + * - "manual": The model has been written by hand. + * This information is used in a heuristic for dataflow analysis to determine, if a + * model or source code should be used for determining flow. */ import cpp @@ -931,13 +947,13 @@ private module Cached { private predicate barrierGuardChecks(IRGuardCondition g, Expr e, boolean gv, TKindModelPair kmp) { exists( - SourceSinkInterpretationInput::InterpretNode n, Public::AcceptingValue acceptingvalue, + SourceSinkInterpretationInput::InterpretNode n, Public::AcceptingValue acceptingValue, string kind, string model | - isBarrierGuardNode(n, acceptingvalue, kind, model) and + isBarrierGuardNode(n, acceptingValue, kind, model) and n.asNode().asExpr() = e and kmp = TMkPair(kind, model) and - gv = convertAcceptingValue(acceptingvalue).asBooleanValue() and + gv = convertAcceptingValue(acceptingValue).asBooleanValue() and n.asNode().(Private::ArgumentNode).getCall().asCallInstruction() = g ) } @@ -954,14 +970,14 @@ private module Cached { ) { exists( SourceSinkInterpretationInput::InterpretNode interpretNode, - Public::AcceptingValue acceptingvalue, string kind, string model, int indirectionIndex, + Public::AcceptingValue acceptingValue, string kind, string model, int indirectionIndex, Private::ArgumentNode arg | - isBarrierGuardNode(interpretNode, acceptingvalue, kind, model) and + isBarrierGuardNode(interpretNode, acceptingValue, kind, model) and arg = interpretNode.asNode() and arg.asIndirectExpr(indirectionIndex) = e and kmp = MkKindModelPairIntPair(TMkPair(kind, model), indirectionIndex) and - gv = convertAcceptingValue(acceptingvalue).asBooleanValue() and + gv = convertAcceptingValue(acceptingValue).asBooleanValue() and arg.getCall().asCallInstruction() = g ) } diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/ExternalFlowExtensions.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/ExternalFlowExtensions.qll index 1a572c221d9f..22c74c2aa714 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/ExternalFlowExtensions.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/ExternalFlowExtensions.qll @@ -33,7 +33,7 @@ extensible predicate barrierModel( */ extensible predicate barrierGuardModel( string namespace, string type, boolean subtypes, string name, string signature, string ext, - string input, string acceptingvalue, string kind, string provenance, QlBuiltins::ExtensionId madId + string input, string acceptingValue, string kind, string provenance, QlBuiltins::ExtensionId madId ); /** diff --git a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/FlowSummaryImpl.qll b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/FlowSummaryImpl.qll index cce1b80e7fcb..d91dc41febeb 100644 --- a/cpp/ql/lib/semmle/code/cpp/dataflow/internal/FlowSummaryImpl.qll +++ b/cpp/ql/lib/semmle/code/cpp/dataflow/internal/FlowSummaryImpl.qll @@ -162,13 +162,13 @@ module SourceSinkInterpretationInput implements } predicate barrierGuardElement( - Element e, string input, Public::AcceptingValue acceptingvalue, string kind, + Element e, string input, Public::AcceptingValue acceptingValue, string kind, Public::Provenance provenance, string model ) { exists( string package, string type, boolean subtypes, string name, string signature, string ext | - barrierGuardModel(package, type, subtypes, name, signature, ext, input, acceptingvalue, kind, + barrierGuardModel(package, type, subtypes, name, signature, ext, input, acceptingValue, kind, provenance, model) and e = interpretElement(package, type, subtypes, name, signature, ext) ) diff --git a/cpp/ql/lib/semmle/code/cpp/internal/QualifiedName.qll b/cpp/ql/lib/semmle/code/cpp/internal/QualifiedName.qll index 5974603e33fc..967016774d86 100644 --- a/cpp/ql/lib/semmle/code/cpp/internal/QualifiedName.qll +++ b/cpp/ql/lib/semmle/code/cpp/internal/QualifiedName.qll @@ -18,7 +18,7 @@ class Namespace extends @namespace { if namespacembrs(_, this) then exists(Namespace ns | - namespacembrs(ns, this) and + namespacembrs(ns, pragma[only_bind_out](this)) and result = ns.getQualifiedName() + "::" + this.getName() ) else result = this.getName() @@ -37,7 +37,7 @@ class Namespace extends @namespace { string getAQualifierForMembers() { if namespacembrs(_, this) then - exists(Namespace ns | namespacembrs(ns, this) | + exists(Namespace ns | namespacembrs(ns, pragma[only_bind_out](this)) | result = ns.getAQualifierForMembers() + "::" + this.getName() or // If this is an inline namespace, its members are also visible in any diff --git a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedAssertion.qll b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedAssertion.qll index 55818b02858d..2c3cb3b2eab3 100644 --- a/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedAssertion.qll +++ b/cpp/ql/lib/semmle/code/cpp/ir/implementation/raw/internal/TranslatedAssertion.qll @@ -114,6 +114,7 @@ private predicate parseArgument(string arg, string s, int i, Opcode opcode) { private Element getAChildScope(Element scope) { result.getParentScope() = scope } +pragma[nomagic] private predicate hasAVariable(MacroInvocation mi, Stmt s, Element scope) { assertion0(mi, s, _) and s.getParent() = scope @@ -121,15 +122,32 @@ private predicate hasAVariable(MacroInvocation mi, Stmt s, Element scope) { hasAVariable(mi, s, getAChildScope(scope)) } -private LocalScopeVariable getVariable(MacroInvocation mi, int i) { - exists(string operand, string arg, Stmt s | +private predicate hasParentScope(Variable v, Element scope) { v.getParentScope() = scope } + +pragma[nomagic] +private predicate hasAssertionOperand(MacroInvocation mi, int i, Stmt s, string operand) { + exists(string arg | assertion0(mi, s, arg) and - parseArgument(arg, operand, i, _) and + parseArgument(arg, operand, i, _) + ) +} + +pragma[nomagic] +private predicate hasNameAndParentScope(string name, Element scope, Variable v) { + v.hasName(name) and + hasParentScope(v, scope) +} + +pragma[nomagic] +private LocalScopeVariable getVariable(MacroInvocation mi, int i) { + exists(string name, Stmt s | + hasAssertionOperand(mi, i, s, name) and result = - unique(Variable v | + unique(Variable v, Element parentScope | + hasAssertionOperand(mi, _, s, name) and v.getLocation().getStartLine() < s.getLocation().getStartLine() and - hasAVariable(mi, s, v.getParentScope()) and - v.hasName(operand) + hasAVariable(mi, s, parentScope) and + hasNameAndParentScope(name, parentScope, v) | v ) diff --git a/cpp/ql/lib/semmle/code/cpp/models/implementations/Scanf.qll b/cpp/ql/lib/semmle/code/cpp/models/implementations/Scanf.qll index fbef5a8fcac5..f1b3edbe3370 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/implementations/Scanf.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/implementations/Scanf.qll @@ -87,6 +87,10 @@ private class FscanfModel extends ScanfFunctionModel, RemoteFlowSourceFunction i output.isParameterDeref(any(int i | i >= this.getArgsStartPosition())) and description = "value read by " + this.getName() } + + override predicate hasSocketInput(FunctionInput input) { + input.isParameterDeref(super.getInputParameterIndex()) + } } /** diff --git a/cpp/ql/lib/semmle/code/cpp/models/interfaces/NonThrowing.qll b/cpp/ql/lib/semmle/code/cpp/models/interfaces/NonThrowing.qll index 85b9b66cd661..04826a487ca7 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/interfaces/NonThrowing.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/interfaces/NonThrowing.qll @@ -11,10 +11,3 @@ import semmle.code.cpp.models.Models * The function may still raise a structured exception handling (SEH) exception. */ abstract class NonCppThrowingFunction extends Function { } - -/** - * A function that is guaranteed to never throw. - * - * DEPRECATED: use `NonCppThrowingFunction` instead. - */ -deprecated class NonThrowingFunction = NonCppThrowingFunction; diff --git a/cpp/ql/lib/semmle/code/cpp/models/interfaces/Throwing.qll b/cpp/ql/lib/semmle/code/cpp/models/interfaces/Throwing.qll index 111b99533957..a781bab07c35 100644 --- a/cpp/ql/lib/semmle/code/cpp/models/interfaces/Throwing.qll +++ b/cpp/ql/lib/semmle/code/cpp/models/interfaces/Throwing.qll @@ -10,19 +10,6 @@ import semmle.code.cpp.Function import semmle.code.cpp.models.Models import semmle.code.cpp.models.interfaces.FunctionInputsAndOutputs -/** - * A function that is known to raise an exception. - * - * DEPRECATED: use `AlwaysSehThrowingFunction` instead. - */ -abstract deprecated class ThrowingFunction extends Function { - /** - * Holds if this function may throw an exception during evaluation. - * If `unconditional` is `true` the function always throws an exception. - */ - abstract predicate mayThrowException(boolean unconditional); -} - /** * A function that unconditionally raises a structured exception handling (SEH) exception. */ diff --git a/cpp/ql/lib/semmle/code/cpp/stmts/Stmt.qll b/cpp/ql/lib/semmle/code/cpp/stmts/Stmt.qll index cd7504612444..ccda6c4d592d 100644 --- a/cpp/ql/lib/semmle/code/cpp/stmts/Stmt.qll +++ b/cpp/ql/lib/semmle/code/cpp/stmts/Stmt.qll @@ -1412,9 +1412,9 @@ private int indexOfSwitchCaseRank(BlockStmt b, int rnk) { * switch (i) * { * case 5: - * ... + * ... * default: - * ... + * ... * } * ``` */ @@ -1516,8 +1516,10 @@ class SwitchCase extends Stmt, @stmt_switch_case { * which has result `default:`, which has no result. */ SwitchCase getNextSwitchCase() { - result.getSwitchStmt() = this.getSwitchStmt() and - result.getChildNum() = this.getChildNum() + 1 + exists(SwitchStmt s, int n | + this = s.getSwitchCase(n) and + result = s.getSwitchCase(n + 1) + ) } /** @@ -1707,9 +1709,9 @@ class SwitchCase extends Stmt, @stmt_switch_case { * switch (i) * { * case 5: - * ... + * ... * default: - * ... + * ... * } * ``` */ @@ -1731,9 +1733,9 @@ class DefaultCase extends SwitchCase { * switch (i) * { * case 5: - * ... + * ... * default: - * ... + * ... * } * ``` */ @@ -1768,10 +1770,10 @@ class SwitchStmt extends ConditionalStmt, @stmt_switch { * For example, for * ``` * switch(i) { - * case 1: - * case 2: + * case 1: + * case 2: * break; - * default: + * default: * break; * } * ``` @@ -1790,20 +1792,20 @@ class SwitchStmt extends ConditionalStmt, @stmt_switch { * For example, for * ``` * switch(i) { - * case 1: - * case 2: + * case 1: + * case 2: * break; - * default: + * default: * break; * } * ``` * the result is * ``` * { - * case 1: - * case 2: + * case 1: + * case 2: * break; - * default: + * default: * break; * } * ``` @@ -1816,10 +1818,10 @@ class SwitchStmt extends ConditionalStmt, @stmt_switch { * For example, for * ``` * switch(i) { - * case 1: - * case 2: + * case 1: + * case 2: * break; - * default: + * default: * break; * } * ``` @@ -1827,6 +1829,23 @@ class SwitchStmt extends ConditionalStmt, @stmt_switch { */ SwitchCase getASwitchCase() { switch_case(underlyingElement(this), _, unresolveElement(result)) } + /** + * Gets the `n`th 'switch case' statement of this 'switch' statement, where + * `n` is 0-based. + * + * For example, for + * ``` + * switch(i) { + * case 5: + * case 6: + * default: + * } * ``` + * 0 yields `case 5:`, 1 yields `case 6:`, and 2 yields `default:`. + */ + SwitchCase getSwitchCase(int n) { + switch_case(underlyingElement(this), n, unresolveElement(result)) + } + /** * Gets the 'default case' statement of this 'switch' statement, * if any. @@ -1834,18 +1853,18 @@ class SwitchStmt extends ConditionalStmt, @stmt_switch { * For example, for * ``` * switch(i) { - * case 1: - * case 2: + * case 1: + * case 2: * break; - * default: + * default: * break; * } * ``` * the result is `default:`, but there is no result for * ``` * switch(i) { - * case 1: - * case 2: + * case 1: + * case 2: * break; * } * ``` @@ -1858,18 +1877,18 @@ class SwitchStmt extends ConditionalStmt, @stmt_switch { * For example, this holds for * ``` * switch(i) { - * case 1: - * case 2: + * case 1: + * case 2: * break; - * default: + * default: * break; * } * ``` * but not for * ``` * switch(i) { - * case 1: - * case 2: + * case 1: + * case 2: * break; * } * ``` diff --git a/cpp/ql/src/CHANGELOG.md b/cpp/ql/src/CHANGELOG.md index a3f9d1836ade..901d20922831 100644 --- a/cpp/ql/src/CHANGELOG.md +++ b/cpp/ql/src/CHANGELOG.md @@ -1,3 +1,24 @@ +## 1.6.3 + +### Minor Analysis Improvements + +* The 'Cleartext transmission of sensitive information' query (`cpp/cleartext-transmission`) no longer raises an alert on calls to `fscanf` (and variants) when the call reads from an "obviously local" `FILE` stream such as `stdin`. + +## 1.6.2 + +No user-facing changes. + +## 1.6.1 + +### Minor Analysis Improvements + +* Added `AllocationFunction` models for `aligned_alloc`, `std::aligned_alloc`, and `bsl::aligned_alloc`. +* The "Comparison of narrow type with wide type in loop condition" (`cpp/comparison-with-wider-type`) query has been upgraded to `high` precision. This query will now run in the default code scanning suite. +* The "Multiplication result converted to larger type" (`cpp/integer-multiplication-cast-to-long`) query has been upgraded to `high` precision. This query will now run in the default code scanning suite. +* The "Suspicious add with sizeof" (`cpp/suspicious-add-sizeof`) query has been upgraded to `high` precision. This query will now run in the default code scanning suite. +* The "Wrong type of arguments to formatting function" (`cpp/wrong-type-format-argument`) query has been upgraded to `high` precision. This query will now run in the default code scanning suite. +* The "Implicit function declaration" (`cpp/implicit-function-declaration`) query has been upgraded to `high` precision. However, for `build-mode: none` databases, it no longer produces any results. The results in this mode were found to be very noisy and fundamentally imprecise. + ## 1.6.0 ### Query Metadata Changes diff --git a/cpp/ql/src/Likely Bugs/Arithmetic/IntMultToLong.ql b/cpp/ql/src/Likely Bugs/Arithmetic/IntMultToLong.ql index 6747d177c80e..b05bd637dc2d 100644 --- a/cpp/ql/src/Likely Bugs/Arithmetic/IntMultToLong.ql +++ b/cpp/ql/src/Likely Bugs/Arithmetic/IntMultToLong.ql @@ -5,7 +5,7 @@ * @kind problem * @problem.severity warning * @security-severity 8.1 - * @precision medium + * @precision high * @id cpp/integer-multiplication-cast-to-long * @tags reliability * security diff --git a/cpp/ql/src/Likely Bugs/Format/WrongTypeFormatArguments.ql b/cpp/ql/src/Likely Bugs/Format/WrongTypeFormatArguments.ql index 7f0a4833cb59..5842b9474f74 100644 --- a/cpp/ql/src/Likely Bugs/Format/WrongTypeFormatArguments.ql +++ b/cpp/ql/src/Likely Bugs/Format/WrongTypeFormatArguments.ql @@ -5,7 +5,7 @@ * @kind problem * @problem.severity error * @security-severity 7.5 - * @precision medium + * @precision high * @id cpp/wrong-type-format-argument * @tags reliability * correctness diff --git a/cpp/ql/src/Likely Bugs/Leap Year/UncheckedLeapYearAfterYearModification.ql b/cpp/ql/src/Likely Bugs/Leap Year/UncheckedLeapYearAfterYearModification.ql index f0f8335b5bb8..ac30c6c64067 100644 --- a/cpp/ql/src/Likely Bugs/Leap Year/UncheckedLeapYearAfterYearModification.ql +++ b/cpp/ql/src/Likely Bugs/Leap Year/UncheckedLeapYearAfterYearModification.ql @@ -227,6 +227,30 @@ class IgnorableUnaryBitwiseOperation extends IgnorableOperation instanceof Unary class IgnorableAssignmentBitwiseOperation extends IgnorableOperation instanceof AssignBitwiseOperation { } +class YearFieldAssignmentNode extends DataFlow::Node { + YearFieldAccess access; + + YearFieldAssignmentNode() { + exists(Function f | + f = this.getEnclosingCallable().getUnderlyingCallable() and not f instanceof IgnorableFunction + | + this.asDefinition().(Assignment).getLValue() = access + or + this.asDefinition().(CrementOperation).getOperand() = access + or + exists(Call c | c.getAnArgument() = access and this.asDefiningArgument() = access) + or + exists(Call c, AddressOfExpr aoe | + c.getAnArgument() = aoe and + aoe.getOperand() = access and + this.asDefiningArgument() = aoe + ) + ) + } + + YearFieldAccess getYearFieldAccess() { result = access } +} + /** * An arithmetic operation where one of the operands is a pointer or char type, ignore it */ @@ -287,24 +311,7 @@ predicate isOperationSourceCandidate(Expr e) { } /** - * A data flow that tracks an ignorable operation (such as a bitwise operation) to an operation source, so we may disqualify it. - */ -module IgnorableOperationToOperationSourceCandidateConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node n) { n.asExpr() instanceof IgnorableOperation } - - predicate isSink(DataFlow::Node n) { isOperationSourceCandidate(n.asExpr()) } - - // looking for sources and sinks in the same function - DataFlow::FlowFeature getAFeature() { - result instanceof DataFlow::FeatureEqualSourceSinkCallContext - } -} - -module IgnorableOperationToOperationSourceCandidateFlow = - TaintTracking::Global; - -/** - * The set of all expressions which is a candidate expression and also does not flow from to to some ignorable expression (eg. bitwise op) + * The set of all expressions that are candidate expression. * ``` * a = something <<< 2; * myDate.year = a + 1; // invalid @@ -314,49 +321,16 @@ module IgnorableOperationToOperationSourceCandidateFlow = * ``` */ class OperationSource extends Expr { - OperationSource() { - isOperationSourceCandidate(this) and - // If the candidate came from an ignorable operation, ignore the candidate - // NOTE: we cannot easily flow the candidate to an ignorable operation as that can - // be tricky in practice, e.g., a mod operation on a year would be part of a leap year check - // but a mod operation ending in a year is more indicative of something to ignore (a conversion) - not exists(IgnorableOperationToOperationSourceCandidateFlow::PathNode sink | - sink.getNode().asExpr() = this and - sink.isSink() - ) - } -} - -class YearFieldAssignmentNode extends DataFlow::Node { - YearFieldAccess access; - - YearFieldAssignmentNode() { - exists(Function f | - f = this.getEnclosingCallable().getUnderlyingCallable() and not f instanceof IgnorableFunction - ) and - ( - this.asDefinition().(Assignment).getLValue() = access - or - this.asDefinition().(CrementOperation).getOperand() = access - or - exists(Call c | c.getAnArgument() = access and this.asDefiningArgument() = access) - or - exists(Call c, AddressOfExpr aoe | - c.getAnArgument() = aoe and - aoe.getOperand() = access and - this.asDefiningArgument() = aoe - ) - ) - } - - YearFieldAccess getYearFieldAccess() { result = access } + OperationSource() { isOperationSourceCandidate(this) } } /** - * A DataFlow configuration for identifying flows from an identified source - * to the Year field of a date object. + * An initial DataFlow configuration for identifying flows from an identified source + * to the Year field of a date object. This is used to restrict the sinks of + * `IgnorableOperationToOperationSourceCandidateConfig` and the sinks of the + * final `OperationToYearAssignmentConfig`. */ -module OperationToYearAssignmentConfig implements DataFlow::ConfigSig { +module OperationToYearAssignmentConfig0 implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node n) { n.asExpr() instanceof OperationSource } predicate isSink(DataFlow::Node n) { @@ -411,6 +385,62 @@ module OperationToYearAssignmentConfig implements DataFlow::ConfigSig { predicate isBarrierOut(DataFlow::Node n) { isSink(n) } } +module OperationToYearAssignmentFlow0 = TaintTracking::Global; + +predicate yearAssignmentFlowsFromSource(DataFlow::Node source, DataFlow::Node sink) { + OperationToYearAssignmentFlow0::flow(source, sink) +} + +/** + * A data flow that tracks an ignorable operation (such as a bitwise operation) to an operation source, so we may disqualify it. + * Sinks are restricted to operation source candidates that have a flow to a year assignment in `OperationToYearAssignmentFlow0`. + */ +module IgnorableOperationToOperationSourceCandidateConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node n) { n.asExpr() instanceof IgnorableOperation } + + predicate isSink(DataFlow::Node n) { + isOperationSourceCandidate(n.asExpr()) and + yearAssignmentFlowsFromSource(n, _) + } + + // looking for sources and sinks in the same function + DataFlow::FlowFeature getAFeature() { + result instanceof DataFlow::FeatureEqualSourceSinkCallContext + } +} + +module IgnorableOperationToOperationSourceCandidateFlow = + TaintTracking::Global; + +/** + * The final DataFlow configuration that refines `OperationToYearAssignmentConfig0` by + * additionally filtering out operation sources that flow from an ignorable operation + * (via `IgnorableOperationToOperationSourceCandidateFlow`). + */ +module OperationToYearAssignmentConfig implements DataFlow::ConfigSig { + predicate isSource(DataFlow::Node n) { yearAssignmentFlowsFromSource(n, _) } + + predicate isSink(DataFlow::Node n) { + exists(DataFlow::Node operation | + yearAssignmentFlowsFromSource(operation, n) and + // If the candidate came from an ignorable operation, ignore the candidate + // NOTE: we cannot easily flow the candidate to an ignorable operation as that can + // be tricky in practice, e.g., a mod operation on a year would be part of a leap year check + // but a mod operation ending in a year is more indicative of something to ignore (a conversion) + not exists(IgnorableOperationToOperationSourceCandidateFlow::PathNode sink | + sink.getNode() = operation and + sink.isSink() + ) + ) + } + + predicate isBarrier(DataFlow::Node n) { OperationToYearAssignmentConfig0::isBarrier(n) } + + predicate isBarrierIn(DataFlow::Node n) { isSource(n) } + + predicate isBarrierOut(DataFlow::Node n) { isSink(n) } +} + module OperationToYearAssignmentFlow = TaintTracking::Global; predicate isLeapYearCheckSink(DataFlow::Node sink) { diff --git a/cpp/ql/src/Likely Bugs/Underspecified Functions/ImplicitFunctionDeclaration.qhelp b/cpp/ql/src/Likely Bugs/Underspecified Functions/ImplicitFunctionDeclaration.qhelp index 6ff60d383419..d6c612abc759 100644 --- a/cpp/ql/src/Likely Bugs/Underspecified Functions/ImplicitFunctionDeclaration.qhelp +++ b/cpp/ql/src/Likely Bugs/Underspecified Functions/ImplicitFunctionDeclaration.qhelp @@ -14,6 +14,9 @@ function may behave unpredictably.

This may indicate a misspelled function name, or that the required header containing the function declaration has not been included.

+

Note: This query is not compatible with build-mode: none databases, and produces +no results on those databases.

+

Provide an explicit declaration of the function before invoking it.

@@ -26,4 +29,4 @@ the function declaration has not been included.

  • SEI CERT C Coding Standard: DCL31-C. Declare identifiers before using them
  • - \ No newline at end of file + diff --git a/cpp/ql/src/Likely Bugs/Underspecified Functions/ImplicitFunctionDeclaration.ql b/cpp/ql/src/Likely Bugs/Underspecified Functions/ImplicitFunctionDeclaration.ql index 6a55557cf70b..8e921faf2117 100644 --- a/cpp/ql/src/Likely Bugs/Underspecified Functions/ImplicitFunctionDeclaration.ql +++ b/cpp/ql/src/Likely Bugs/Underspecified Functions/ImplicitFunctionDeclaration.ql @@ -5,7 +5,7 @@ * may lead to unpredictable behavior. * @kind problem * @problem.severity warning - * @precision medium + * @precision high * @id cpp/implicit-function-declaration * @tags correctness * maintainability @@ -17,6 +17,11 @@ import TooFewArguments import TooManyArguments import semmle.code.cpp.commons.Exclusions +/* + * This query is not compatible with build-mode: none databases, and produces + * no results on those databases. + */ + predicate locInfo(Locatable e, File file, int line, int col) { e.getFile() = file and e.getLocation().getStartLine() = line and @@ -39,6 +44,7 @@ predicate isCompiledAsC(File f) { from FunctionDeclarationEntry fdeIm, FunctionCall fc where isCompiledAsC(fdeIm.getFile()) and + not any(Compilation c).buildModeNone() and not isFromMacroDefinition(fc) and fdeIm.isImplicit() and sameLocation(fdeIm, fc) and diff --git a/cpp/ql/src/Likely Bugs/Underspecified Functions/MistypedFunctionArguments.qll b/cpp/ql/src/Likely Bugs/Underspecified Functions/MistypedFunctionArguments.qll index 2dced5d8d844..dbb457db505e 100644 --- a/cpp/ql/src/Likely Bugs/Underspecified Functions/MistypedFunctionArguments.qll +++ b/cpp/ql/src/Likely Bugs/Underspecified Functions/MistypedFunctionArguments.qll @@ -79,9 +79,7 @@ private predicate hasZeroParamDecl(Function f) { // True if this file (or header) was compiled as a C file private predicate isCompiledAsC(File f) { - f.compiledAsC() - or - exists(File src | isCompiledAsC(src) | src.getAnIncludedFile() = f) + exists(File src | src.compiledAsC() | src.getAnIncludedFile*() = f) } predicate mistypedFunctionArguments(FunctionCall fc, Function f, Parameter p) { diff --git a/cpp/ql/src/Likely Bugs/Underspecified Functions/TooFewArguments.qll b/cpp/ql/src/Likely Bugs/Underspecified Functions/TooFewArguments.qll index 218a54b36c51..fd323513a49e 100644 --- a/cpp/ql/src/Likely Bugs/Underspecified Functions/TooFewArguments.qll +++ b/cpp/ql/src/Likely Bugs/Underspecified Functions/TooFewArguments.qll @@ -28,9 +28,7 @@ private predicate hasZeroParamDecl(Function f) { /* Holds if this file (or header) was compiled as a C file. */ private predicate isCompiledAsC(File f) { - f.compiledAsC() - or - exists(File src | isCompiledAsC(src) | src.getAnIncludedFile() = f) + exists(File src | src.compiledAsC() | src.getAnIncludedFile*() = f) } /** Holds if `fc` is a call to `f` with too few arguments. */ diff --git a/cpp/ql/src/Likely Bugs/Underspecified Functions/TooManyArguments.qll b/cpp/ql/src/Likely Bugs/Underspecified Functions/TooManyArguments.qll index 7fba78b5550e..ab2a98ae3a55 100644 --- a/cpp/ql/src/Likely Bugs/Underspecified Functions/TooManyArguments.qll +++ b/cpp/ql/src/Likely Bugs/Underspecified Functions/TooManyArguments.qll @@ -19,9 +19,7 @@ private predicate hasZeroParamDecl(Function f) { // True if this file (or header) was compiled as a C file private predicate isCompiledAsC(File f) { - f.compiledAsC() - or - exists(File src | isCompiledAsC(src) | src.getAnIncludedFile() = f) + exists(File src | src.compiledAsC() | src.getAnIncludedFile*() = f) } predicate tooManyArguments(FunctionCall fc, Function f) { diff --git a/cpp/ql/src/Security/CWE/CWE-190/ComparisonWithWiderType.ql b/cpp/ql/src/Security/CWE/CWE-190/ComparisonWithWiderType.ql index 3f330807304f..7d9ef88adea1 100644 --- a/cpp/ql/src/Security/CWE/CWE-190/ComparisonWithWiderType.ql +++ b/cpp/ql/src/Security/CWE/CWE-190/ComparisonWithWiderType.ql @@ -6,7 +6,7 @@ * @kind problem * @problem.severity warning * @security-severity 7.8 - * @precision medium + * @precision high * @tags reliability * security * external/cwe/cwe-190 diff --git a/cpp/ql/src/Security/CWE/CWE-468/SuspiciousAddWithSizeof.ql b/cpp/ql/src/Security/CWE/CWE-468/SuspiciousAddWithSizeof.ql index 343e96a00d39..d5a5cd8f6655 100644 --- a/cpp/ql/src/Security/CWE/CWE-468/SuspiciousAddWithSizeof.ql +++ b/cpp/ql/src/Security/CWE/CWE-468/SuspiciousAddWithSizeof.ql @@ -6,7 +6,7 @@ * @kind problem * @problem.severity warning * @security-severity 8.8 - * @precision medium + * @precision high * @id cpp/suspicious-add-sizeof * @tags security * external/cwe/cwe-468 diff --git a/cpp/ql/src/change-notes/released/1.6.1.md b/cpp/ql/src/change-notes/released/1.6.1.md new file mode 100644 index 000000000000..02ca1c2cd064 --- /dev/null +++ b/cpp/ql/src/change-notes/released/1.6.1.md @@ -0,0 +1,10 @@ +## 1.6.1 + +### Minor Analysis Improvements + +* Added `AllocationFunction` models for `aligned_alloc`, `std::aligned_alloc`, and `bsl::aligned_alloc`. +* The "Comparison of narrow type with wide type in loop condition" (`cpp/comparison-with-wider-type`) query has been upgraded to `high` precision. This query will now run in the default code scanning suite. +* The "Multiplication result converted to larger type" (`cpp/integer-multiplication-cast-to-long`) query has been upgraded to `high` precision. This query will now run in the default code scanning suite. +* The "Suspicious add with sizeof" (`cpp/suspicious-add-sizeof`) query has been upgraded to `high` precision. This query will now run in the default code scanning suite. +* The "Wrong type of arguments to formatting function" (`cpp/wrong-type-format-argument`) query has been upgraded to `high` precision. This query will now run in the default code scanning suite. +* The "Implicit function declaration" (`cpp/implicit-function-declaration`) query has been upgraded to `high` precision. However, for `build-mode: none` databases, it no longer produces any results. The results in this mode were found to be very noisy and fundamentally imprecise. diff --git a/cpp/ql/src/change-notes/released/1.6.2.md b/cpp/ql/src/change-notes/released/1.6.2.md new file mode 100644 index 000000000000..bbe3747556fb --- /dev/null +++ b/cpp/ql/src/change-notes/released/1.6.2.md @@ -0,0 +1,3 @@ +## 1.6.2 + +No user-facing changes. diff --git a/cpp/ql/src/change-notes/released/1.6.3.md b/cpp/ql/src/change-notes/released/1.6.3.md new file mode 100644 index 000000000000..bd2b7c9bdb1e --- /dev/null +++ b/cpp/ql/src/change-notes/released/1.6.3.md @@ -0,0 +1,5 @@ +## 1.6.3 + +### Minor Analysis Improvements + +* The 'Cleartext transmission of sensitive information' query (`cpp/cleartext-transmission`) no longer raises an alert on calls to `fscanf` (and variants) when the call reads from an "obviously local" `FILE` stream such as `stdin`. diff --git a/cpp/ql/src/codeql-pack.release.yml b/cpp/ql/src/codeql-pack.release.yml index c4f0b07d5336..00b51441d882 100644 --- a/cpp/ql/src/codeql-pack.release.yml +++ b/cpp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.6.0 +lastReleaseVersion: 1.6.3 diff --git a/cpp/ql/src/qlpack.yml b/cpp/ql/src/qlpack.yml index fa0391ae9c15..a57263b53fc5 100644 --- a/cpp/ql/src/qlpack.yml +++ b/cpp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/cpp-queries -version: 1.6.0 +version: 1.6.3 groups: - cpp - queries diff --git a/cpp/ql/test/library-tests/builtins/complex/builtin.expected b/cpp/ql/test/library-tests/builtins/complex/builtin.expected index c1b9b18a4126..2537ff065ac6 100644 --- a/cpp/ql/test/library-tests/builtins/complex/builtin.expected +++ b/cpp/ql/test/library-tests/builtins/complex/builtin.expected @@ -1,4 +1,4 @@ | complex.c:3:23:3:51 | __builtin_complex | file://:0:0:0:0 | _Complex double | complex.c:3:41:3:44 | real | file://:0:0:0:0 | double | complex.c:3:47:3:50 | imag | file://:0:0:0:0 | double | -| complex.c:4:23:4:57 | __builtin_complex | file://:0:0:0:0 | _Complex double | complex.c:4:41:4:47 | 2.71828000000000003 | file://:0:0:0:0 | double | complex.c:4:50:4:56 | 3.141589999999999883 | file://:0:0:0:0 | double | +| complex.c:4:23:4:57 | __builtin_complex | file://:0:0:0:0 | _Complex double | complex.c:4:41:4:47 | 2.71828 | file://:0:0:0:0 | double | complex.c:4:50:4:56 | 3.14159 | file://:0:0:0:0 | double | | complex.c:8:22:8:52 | __builtin_complex | file://:0:0:0:0 | _Complex float | complex.c:8:40:8:44 | realf | file://:0:0:0:0 | float | complex.c:8:47:8:51 | imagf | file://:0:0:0:0 | float | -| complex.c:9:22:9:52 | __builtin_complex | file://:0:0:0:0 | _Complex float | complex.c:9:40:9:44 | 1.230000019 | file://:0:0:0:0 | float | complex.c:9:47:9:51 | 4.559999943 | file://:0:0:0:0 | float | +| complex.c:9:22:9:52 | __builtin_complex | file://:0:0:0:0 | _Complex float | complex.c:9:40:9:44 | 1.23 | file://:0:0:0:0 | float | complex.c:9:47:9:51 | 4.56 | file://:0:0:0:0 | float | diff --git a/cpp/ql/test/library-tests/controlflow/guards/GuardsCompare.expected b/cpp/ql/test/library-tests/controlflow/guards/GuardsCompare.expected index 4d78c4016dab..f6833ab4ff13 100644 --- a/cpp/ql/test/library-tests/controlflow/guards/GuardsCompare.expected +++ b/cpp/ql/test/library-tests/controlflow/guards/GuardsCompare.expected @@ -298,16 +298,16 @@ | test.c:182:8:182:34 | ! ... | ! ... == 1 when ! ... is true | | test.c:182:8:182:34 | ! ... | ... && ... != 0 when ! ... is false | | test.c:182:8:182:34 | ! ... | ... && ... == 0 when ! ... is true | -| test.c:182:10:182:20 | ... >= ... | 9.999999999999999547e-07 < foo+1 when ... >= ... is true | -| test.c:182:10:182:20 | ... >= ... | 9.999999999999999547e-07 >= foo+1 when ... >= ... is false | +| test.c:182:10:182:20 | ... >= ... | 1.0E-6 < foo+1 when ... >= ... is true | +| test.c:182:10:182:20 | ... >= ... | 1.0E-6 >= foo+1 when ... >= ... is false | | test.c:182:10:182:20 | ... >= ... | ... >= ... != 0 when ... >= ... is true | | test.c:182:10:182:20 | ... >= ... | ... >= ... != 1 when ... >= ... is false | | test.c:182:10:182:20 | ... >= ... | ... >= ... == 0 when ... >= ... is false | | test.c:182:10:182:20 | ... >= ... | ... >= ... == 1 when ... >= ... is true | -| test.c:182:10:182:20 | ... >= ... | foo < 9.999999999999999547e-07+0 when ... >= ... is false | -| test.c:182:10:182:20 | ... >= ... | foo >= 9.999999999999999547e-07+0 when ... >= ... is true | +| test.c:182:10:182:20 | ... >= ... | foo < 1.0E-6+0 when ... >= ... is false | +| test.c:182:10:182:20 | ... >= ... | foo >= 1.0E-6+0 when ... >= ... is true | | test.c:182:10:182:33 | ... && ... | 1.0 >= foo+1 when ... && ... is true | -| test.c:182:10:182:33 | ... && ... | 9.999999999999999547e-07 < foo+1 when ... && ... is true | +| test.c:182:10:182:33 | ... && ... | 1.0E-6 < foo+1 when ... && ... is true | | test.c:182:10:182:33 | ... && ... | ! ... != 0 when ... && ... is false | | test.c:182:10:182:33 | ... && ... | ! ... != 1 when ... && ... is true | | test.c:182:10:182:33 | ... && ... | ! ... == 0 when ... && ... is true | @@ -319,7 +319,7 @@ | test.c:182:10:182:33 | ... && ... | ... >= ... != 0 when ... && ... is true | | test.c:182:10:182:33 | ... && ... | ... >= ... == 1 when ... && ... is true | | test.c:182:10:182:33 | ... && ... | foo < 1.0+0 when ... && ... is true | -| test.c:182:10:182:33 | ... && ... | foo >= 9.999999999999999547e-07+0 when ... && ... is true | +| test.c:182:10:182:33 | ... && ... | foo >= 1.0E-6+0 when ... && ... is true | | test.c:182:25:182:33 | ... < ... | 1.0 < foo+1 when ... < ... is false | | test.c:182:25:182:33 | ... < ... | 1.0 >= foo+1 when ... < ... is true | | test.c:182:25:182:33 | ... < ... | ... < ... != 0 when ... < ... is true | diff --git a/cpp/ql/test/library-tests/controlflow/guards/GuardsEnsure.expected b/cpp/ql/test/library-tests/controlflow/guards/GuardsEnsure.expected index 5a364e3deaad..cf99d2c20b8d 100644 --- a/cpp/ql/test/library-tests/controlflow/guards/GuardsEnsure.expected +++ b/cpp/ql/test/library-tests/controlflow/guards/GuardsEnsure.expected @@ -169,12 +169,12 @@ binary | test.c:176:8:176:15 | ! ... | test.c:176:14:176:14 | b | < | test.c:176:10:176:10 | a | 1 | test.c:176:18:178:5 | { ... } | | test.c:176:10:176:14 | ... < ... | test.c:176:10:176:10 | a | >= | test.c:176:14:176:14 | b | 0 | test.c:176:18:178:5 | { ... } | | test.c:176:10:176:14 | ... < ... | test.c:176:14:176:14 | b | < | test.c:176:10:176:10 | a | 1 | test.c:176:18:178:5 | { ... } | -| test.c:182:10:182:20 | ... >= ... | test.c:182:10:182:12 | foo | >= | test.c:182:17:182:20 | 9.999999999999999547e-07 | 0 | test.c:181:25:182:20 | { ... } | -| test.c:182:10:182:20 | ... >= ... | test.c:182:10:182:12 | foo | >= | test.c:182:17:182:20 | 9.999999999999999547e-07 | 0 | test.c:182:25:182:33 | foo | -| test.c:182:10:182:20 | ... >= ... | test.c:182:17:182:20 | 9.999999999999999547e-07 | < | test.c:182:10:182:12 | foo | 1 | test.c:181:25:182:20 | { ... } | -| test.c:182:10:182:20 | ... >= ... | test.c:182:17:182:20 | 9.999999999999999547e-07 | < | test.c:182:10:182:12 | foo | 1 | test.c:182:25:182:33 | foo | -| test.c:182:10:182:33 | ... && ... | test.c:182:10:182:12 | foo | >= | test.c:182:17:182:20 | 9.999999999999999547e-07 | 0 | test.c:181:25:182:20 | { ... } | -| test.c:182:10:182:33 | ... && ... | test.c:182:17:182:20 | 9.999999999999999547e-07 | < | test.c:182:10:182:12 | foo | 1 | test.c:181:25:182:20 | { ... } | +| test.c:182:10:182:20 | ... >= ... | test.c:182:10:182:12 | foo | >= | test.c:182:17:182:20 | 1.0E-6 | 0 | test.c:181:25:182:20 | { ... } | +| test.c:182:10:182:20 | ... >= ... | test.c:182:10:182:12 | foo | >= | test.c:182:17:182:20 | 1.0E-6 | 0 | test.c:182:25:182:33 | foo | +| test.c:182:10:182:20 | ... >= ... | test.c:182:17:182:20 | 1.0E-6 | < | test.c:182:10:182:12 | foo | 1 | test.c:181:25:182:20 | { ... } | +| test.c:182:10:182:20 | ... >= ... | test.c:182:17:182:20 | 1.0E-6 | < | test.c:182:10:182:12 | foo | 1 | test.c:182:25:182:33 | foo | +| test.c:182:10:182:33 | ... && ... | test.c:182:10:182:12 | foo | >= | test.c:182:17:182:20 | 1.0E-6 | 0 | test.c:181:25:182:20 | { ... } | +| test.c:182:10:182:33 | ... && ... | test.c:182:17:182:20 | 1.0E-6 | < | test.c:182:10:182:12 | foo | 1 | test.c:181:25:182:20 | { ... } | | test.c:182:10:182:33 | ... && ... | test.c:182:25:182:27 | foo | < | test.c:182:31:182:33 | 1.0 | 0 | test.c:181:25:182:20 | { ... } | | test.c:182:10:182:33 | ... && ... | test.c:182:31:182:33 | 1.0 | >= | test.c:182:25:182:27 | foo | 1 | test.c:181:25:182:20 | { ... } | | test.c:182:25:182:33 | ... < ... | test.c:182:25:182:27 | foo | < | test.c:182:31:182:33 | 1.0 | 0 | test.c:181:25:182:20 | { ... } | diff --git a/cpp/ql/test/library-tests/dataflow/source-sink-tests/sources-and-sinks.cpp b/cpp/ql/test/library-tests/dataflow/source-sink-tests/sources-and-sinks.cpp index c515a199f077..e4947a112f8d 100644 --- a/cpp/ql/test/library-tests/dataflow/source-sink-tests/sources-and-sinks.cpp +++ b/cpp/ql/test/library-tests/dataflow/source-sink-tests/sources-and-sinks.cpp @@ -115,3 +115,19 @@ void test_zmc(void *socket) { // ... } } + +long StringCchGetsA(char *, size_t); +long StringCchGetsExA(char *, size_t, char **, size_t *, unsigned long); + +void test_strsafe_gets() { + { + char dest[256] = {0}; + StringCchGetsA(dest, sizeof(dest)); // $ local_source + } + { + char dest[256] = {0}; + char *end; + size_t remaining; + StringCchGetsExA(dest, sizeof(dest), &end, &remaining, 0); // $ local_source + } +} 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 0f4d67f2695f..d4d961a3a048 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/localTaint.expected @@ -4928,6 +4928,8 @@ WARNING: module 'TaintTracking' has been deprecated and may be removed in future | stl.h:95:69:95:69 | x | stl.h:96:42:96:42 | x | | | stl.h:96:42:96:42 | ref arg x | stl.h:95:69:95:69 | x | | | stl.h:96:42:96:42 | ref arg x | stl.h:95:69:95:69 | x | | +| stl.h:292:30:292:40 | 0 | file://:0:0:0:0 | noexcept(...) | TAINT | +| stl.h:292:30:292:40 | 0 | file://:0:0:0:0 | noexcept(...) | TAINT | | stl.h:292:30:292:40 | call to allocator | stl.h:292:21:292:41 | noexcept(...) | TAINT | | stl.h:292:30:292:40 | call to allocator | stl.h:292:21:292:41 | noexcept(...) | TAINT | | stl.h:292:30:292:40 | call to allocator | stl.h:292:21:292:41 | noexcept(...) | TAINT | @@ -8008,6 +8010,174 @@ WARNING: module 'TaintTracking' has been deprecated and may be removed in future | taint.cpp:866:26:866:34 | ref arg & ... | taint.cpp:866:27:866:34 | size_out [inner post update] | | | taint.cpp:866:27:866:34 | size_out | taint.cpp:866:26:866:34 | & ... | | | taint.cpp:867:8:867:8 | p | taint.cpp:867:7:867:8 | * ... | TAINT | +| taint.cpp:892:17:892:31 | call to indirect_source | taint.cpp:897:38:897:43 | source | | +| taint.cpp:892:17:892:31 | call to indirect_source | taint.cpp:907:37:907:42 | source | | +| taint.cpp:892:17:892:31 | call to indirect_source | taint.cpp:914:40:914:45 | source | | +| taint.cpp:892:17:892:31 | call to indirect_source | taint.cpp:919:39:919:44 | source | | +| taint.cpp:892:17:892:31 | call to indirect_source | taint.cpp:926:41:926:46 | source | | +| taint.cpp:892:17:892:31 | call to indirect_source | taint.cpp:931:37:931:42 | source | | +| taint.cpp:892:17:892:31 | call to indirect_source | taint.cpp:941:36:941:41 | source | | +| taint.cpp:892:17:892:31 | call to indirect_source | taint.cpp:948:39:948:44 | source | | +| taint.cpp:892:17:892:31 | call to indirect_source | taint.cpp:953:38:953:43 | source | | +| taint.cpp:892:17:892:31 | call to indirect_source | taint.cpp:960:40:960:45 | source | | +| taint.cpp:892:17:892:31 | call to indirect_source | taint.cpp:965:46:965:51 | source | | +| taint.cpp:892:17:892:31 | call to indirect_source | taint.cpp:975:45:975:50 | source | | +| taint.cpp:892:17:892:31 | call to indirect_source | taint.cpp:982:69:982:74 | source | | +| taint.cpp:893:32:893:46 | call to indirect_source | taint.cpp:902:38:902:44 | wsource | | +| taint.cpp:893:32:893:46 | call to indirect_source | taint.cpp:936:37:936:43 | wsource | | +| taint.cpp:893:32:893:46 | call to indirect_source | taint.cpp:970:47:970:53 | wsource | | +| taint.cpp:896:19:896:22 | {...} | taint.cpp:897:18:897:21 | dest | | +| taint.cpp:896:19:896:22 | {...} | taint.cpp:897:31:897:34 | dest | | +| taint.cpp:896:19:896:22 | {...} | taint.cpp:898:9:898:12 | dest | | +| taint.cpp:896:21:896:21 | 0 | taint.cpp:896:19:896:22 | {...} | TAINT | +| taint.cpp:897:18:897:21 | ref arg dest | taint.cpp:898:9:898:12 | dest | | +| taint.cpp:898:9:898:12 | dest | taint.cpp:898:8:898:12 | * ... | | +| taint.cpp:901:22:901:25 | {...} | taint.cpp:902:18:902:21 | dest | | +| taint.cpp:901:22:901:25 | {...} | taint.cpp:902:31:902:34 | dest | | +| taint.cpp:901:22:901:25 | {...} | taint.cpp:903:9:903:12 | dest | | +| taint.cpp:901:24:901:24 | 0 | taint.cpp:901:22:901:25 | {...} | TAINT | +| taint.cpp:902:18:902:21 | ref arg dest | taint.cpp:903:9:903:12 | dest | | +| taint.cpp:903:9:903:12 | dest | taint.cpp:903:8:903:12 | * ... | | +| taint.cpp:906:19:906:22 | {...} | taint.cpp:907:17:907:20 | dest | | +| taint.cpp:906:19:906:22 | {...} | taint.cpp:907:30:907:33 | dest | | +| taint.cpp:906:19:906:22 | {...} | taint.cpp:908:9:908:12 | dest | | +| taint.cpp:906:21:906:21 | 0 | taint.cpp:906:19:906:22 | {...} | TAINT | +| taint.cpp:907:17:907:20 | ref arg dest | taint.cpp:908:9:908:12 | dest | | +| taint.cpp:908:9:908:12 | dest | taint.cpp:908:8:908:12 | * ... | | +| taint.cpp:911:19:911:22 | {...} | taint.cpp:914:20:914:23 | dest | | +| taint.cpp:911:19:911:22 | {...} | taint.cpp:914:33:914:36 | dest | | +| taint.cpp:911:19:911:22 | {...} | taint.cpp:915:9:915:12 | dest | | +| taint.cpp:911:21:911:21 | 0 | taint.cpp:911:19:911:22 | {...} | TAINT | +| taint.cpp:912:9:912:11 | end | taint.cpp:914:49:914:51 | end | | +| taint.cpp:913:10:913:18 | remaining | taint.cpp:914:55:914:63 | remaining | | +| taint.cpp:914:20:914:23 | ref arg dest | taint.cpp:915:9:915:12 | dest | | +| taint.cpp:914:48:914:51 | ref arg & ... | taint.cpp:914:49:914:51 | end [inner post update] | | +| taint.cpp:914:49:914:51 | end | taint.cpp:914:48:914:51 | & ... | | +| taint.cpp:914:54:914:63 | ref arg & ... | taint.cpp:914:55:914:63 | remaining [inner post update] | | +| taint.cpp:914:55:914:63 | remaining | taint.cpp:914:54:914:63 | & ... | | +| taint.cpp:915:9:915:12 | dest | taint.cpp:915:8:915:12 | * ... | | +| taint.cpp:918:19:918:22 | {...} | taint.cpp:919:19:919:22 | dest | | +| taint.cpp:918:19:918:22 | {...} | taint.cpp:919:32:919:35 | dest | | +| taint.cpp:918:19:918:22 | {...} | taint.cpp:920:9:920:12 | dest | | +| taint.cpp:918:21:918:21 | 0 | taint.cpp:918:19:918:22 | {...} | TAINT | +| taint.cpp:919:19:919:22 | ref arg dest | taint.cpp:920:9:920:12 | dest | | +| taint.cpp:920:9:920:12 | dest | taint.cpp:920:8:920:12 | * ... | | +| taint.cpp:923:19:923:22 | {...} | taint.cpp:926:21:926:24 | dest | | +| taint.cpp:923:19:923:22 | {...} | taint.cpp:926:34:926:37 | dest | | +| taint.cpp:923:19:923:22 | {...} | taint.cpp:927:8:927:11 | dest | | +| taint.cpp:923:21:923:21 | 0 | taint.cpp:923:19:923:22 | {...} | TAINT | +| taint.cpp:924:9:924:11 | end | taint.cpp:926:55:926:57 | end | | +| taint.cpp:925:10:925:18 | remaining | taint.cpp:926:61:926:69 | remaining | | +| taint.cpp:926:21:926:24 | ref arg dest | taint.cpp:927:8:927:11 | dest | | +| taint.cpp:926:54:926:57 | ref arg & ... | taint.cpp:926:55:926:57 | end [inner post update] | | +| taint.cpp:926:55:926:57 | end | taint.cpp:926:54:926:57 | & ... | | +| taint.cpp:926:60:926:69 | ref arg & ... | taint.cpp:926:61:926:69 | remaining [inner post update] | | +| taint.cpp:926:61:926:69 | remaining | taint.cpp:926:60:926:69 | & ... | | +| taint.cpp:930:20:930:27 | prefix | taint.cpp:931:17:931:20 | dest | | +| taint.cpp:930:20:930:27 | prefix | taint.cpp:931:30:931:33 | dest | | +| taint.cpp:930:20:930:27 | prefix | taint.cpp:932:9:932:12 | dest | | +| taint.cpp:931:17:931:20 | ref arg dest | taint.cpp:932:9:932:12 | dest | | +| taint.cpp:932:9:932:12 | dest | taint.cpp:932:8:932:12 | * ... | | +| taint.cpp:935:23:935:31 | prefix | taint.cpp:936:17:936:20 | dest | | +| taint.cpp:935:23:935:31 | prefix | taint.cpp:936:30:936:33 | dest | | +| taint.cpp:935:23:935:31 | prefix | taint.cpp:937:9:937:12 | dest | | +| taint.cpp:936:17:936:20 | ref arg dest | taint.cpp:937:9:937:12 | dest | | +| taint.cpp:937:9:937:12 | dest | taint.cpp:937:8:937:12 | * ... | | +| taint.cpp:940:20:940:27 | prefix | taint.cpp:941:16:941:19 | dest | | +| taint.cpp:940:20:940:27 | prefix | taint.cpp:941:29:941:32 | dest | | +| taint.cpp:940:20:940:27 | prefix | taint.cpp:942:9:942:12 | dest | | +| taint.cpp:941:16:941:19 | ref arg dest | taint.cpp:942:9:942:12 | dest | | +| taint.cpp:942:9:942:12 | dest | taint.cpp:942:8:942:12 | * ... | | +| taint.cpp:945:20:945:27 | prefix | taint.cpp:948:19:948:22 | dest | | +| taint.cpp:945:20:945:27 | prefix | taint.cpp:948:32:948:35 | dest | | +| taint.cpp:945:20:945:27 | prefix | taint.cpp:949:9:949:12 | dest | | +| taint.cpp:946:9:946:11 | end | taint.cpp:948:48:948:50 | end | | +| taint.cpp:947:10:947:18 | remaining | taint.cpp:948:54:948:62 | remaining | | +| taint.cpp:948:19:948:22 | ref arg dest | taint.cpp:949:9:949:12 | dest | | +| taint.cpp:948:47:948:50 | ref arg & ... | taint.cpp:948:48:948:50 | end [inner post update] | | +| taint.cpp:948:48:948:50 | end | taint.cpp:948:47:948:50 | & ... | | +| taint.cpp:948:53:948:62 | ref arg & ... | taint.cpp:948:54:948:62 | remaining [inner post update] | | +| taint.cpp:948:54:948:62 | remaining | taint.cpp:948:53:948:62 | & ... | | +| taint.cpp:949:9:949:12 | dest | taint.cpp:949:8:949:12 | * ... | | +| taint.cpp:952:20:952:27 | prefix | taint.cpp:953:18:953:21 | dest | | +| taint.cpp:952:20:952:27 | prefix | taint.cpp:953:31:953:34 | dest | | +| taint.cpp:952:20:952:27 | prefix | taint.cpp:954:9:954:12 | dest | | +| taint.cpp:953:18:953:21 | ref arg dest | taint.cpp:954:9:954:12 | dest | | +| taint.cpp:954:9:954:12 | dest | taint.cpp:954:8:954:12 | * ... | | +| taint.cpp:957:20:957:27 | prefix | taint.cpp:960:20:960:23 | dest | | +| taint.cpp:957:20:957:27 | prefix | taint.cpp:960:33:960:36 | dest | | +| taint.cpp:957:20:957:27 | prefix | taint.cpp:961:9:961:12 | dest | | +| taint.cpp:958:9:958:11 | end | taint.cpp:960:54:960:56 | end | | +| taint.cpp:959:10:959:18 | remaining | taint.cpp:960:60:960:68 | remaining | | +| taint.cpp:960:20:960:23 | ref arg dest | taint.cpp:961:9:961:12 | dest | | +| taint.cpp:960:53:960:56 | ref arg & ... | taint.cpp:960:54:960:56 | end [inner post update] | | +| taint.cpp:960:54:960:56 | end | taint.cpp:960:53:960:56 | & ... | | +| taint.cpp:960:59:960:68 | ref arg & ... | taint.cpp:960:60:960:68 | remaining [inner post update] | | +| taint.cpp:960:60:960:68 | remaining | taint.cpp:960:59:960:68 | & ... | | +| taint.cpp:961:9:961:12 | dest | taint.cpp:961:8:961:12 | * ... | | +| taint.cpp:964:19:964:22 | {...} | taint.cpp:965:20:965:23 | dest | | +| taint.cpp:964:19:964:22 | {...} | taint.cpp:965:33:965:36 | dest | | +| taint.cpp:964:19:964:22 | {...} | taint.cpp:966:9:966:12 | dest | | +| taint.cpp:964:21:964:21 | 0 | taint.cpp:964:19:964:22 | {...} | TAINT | +| taint.cpp:965:20:965:23 | ref arg dest | taint.cpp:966:9:966:12 | dest | | +| taint.cpp:965:40:965:43 | %s | taint.cpp:965:20:965:23 | ref arg dest | TAINT | +| taint.cpp:965:46:965:51 | ref arg source | taint.cpp:975:45:975:50 | source | | +| taint.cpp:965:46:965:51 | ref arg source | taint.cpp:982:69:982:74 | source | | +| taint.cpp:965:46:965:51 | source | taint.cpp:965:20:965:23 | ref arg dest | TAINT | +| taint.cpp:966:9:966:12 | dest | taint.cpp:966:8:966:12 | * ... | | +| taint.cpp:969:22:969:25 | {...} | taint.cpp:970:20:970:23 | dest | | +| taint.cpp:969:22:969:25 | {...} | taint.cpp:970:33:970:36 | dest | | +| taint.cpp:969:22:969:25 | {...} | taint.cpp:971:9:971:12 | dest | | +| taint.cpp:969:24:969:24 | 0 | taint.cpp:969:22:969:25 | {...} | TAINT | +| taint.cpp:970:20:970:23 | ref arg dest | taint.cpp:971:9:971:12 | dest | | +| taint.cpp:970:40:970:44 | %s | taint.cpp:970:20:970:23 | ref arg dest | TAINT | +| taint.cpp:970:47:970:53 | wsource | taint.cpp:970:20:970:23 | ref arg dest | TAINT | +| taint.cpp:971:9:971:12 | dest | taint.cpp:971:8:971:12 | * ... | | +| taint.cpp:974:19:974:22 | {...} | taint.cpp:975:19:975:22 | dest | | +| taint.cpp:974:19:974:22 | {...} | taint.cpp:975:32:975:35 | dest | | +| taint.cpp:974:19:974:22 | {...} | taint.cpp:976:9:976:12 | dest | | +| taint.cpp:974:21:974:21 | 0 | taint.cpp:974:19:974:22 | {...} | TAINT | +| taint.cpp:975:19:975:22 | ref arg dest | taint.cpp:976:9:976:12 | dest | | +| taint.cpp:975:39:975:42 | %s | taint.cpp:975:19:975:22 | ref arg dest | TAINT | +| taint.cpp:975:45:975:50 | ref arg source | taint.cpp:982:69:982:74 | source | | +| taint.cpp:975:45:975:50 | source | taint.cpp:975:19:975:22 | ref arg dest | TAINT | +| taint.cpp:976:9:976:12 | dest | taint.cpp:976:8:976:12 | * ... | | +| taint.cpp:979:19:979:22 | {...} | taint.cpp:982:22:982:25 | dest | | +| taint.cpp:979:19:979:22 | {...} | taint.cpp:982:35:982:38 | dest | | +| taint.cpp:979:19:979:22 | {...} | taint.cpp:983:9:983:12 | dest | | +| taint.cpp:979:21:979:21 | 0 | taint.cpp:979:19:979:22 | {...} | TAINT | +| taint.cpp:980:9:980:11 | end | taint.cpp:982:43:982:45 | end | | +| taint.cpp:981:10:981:18 | remaining | taint.cpp:982:49:982:57 | remaining | | +| taint.cpp:982:22:982:25 | ref arg dest | taint.cpp:983:9:983:12 | dest | | +| taint.cpp:982:42:982:45 | ref arg & ... | taint.cpp:982:43:982:45 | end [inner post update] | | +| taint.cpp:982:43:982:45 | end | taint.cpp:982:42:982:45 | & ... | | +| taint.cpp:982:48:982:57 | ref arg & ... | taint.cpp:982:49:982:57 | remaining [inner post update] | | +| taint.cpp:982:49:982:57 | remaining | taint.cpp:982:48:982:57 | & ... | | +| taint.cpp:982:63:982:66 | %s | taint.cpp:982:22:982:25 | ref arg dest | TAINT | +| taint.cpp:982:69:982:74 | source | taint.cpp:982:22:982:25 | ref arg dest | TAINT | +| taint.cpp:983:9:983:12 | dest | taint.cpp:983:8:983:12 | * ... | | +| taint.cpp:986:19:986:22 | {...} | taint.cpp:988:20:988:23 | dest | | +| taint.cpp:986:19:986:22 | {...} | taint.cpp:988:33:988:36 | dest | | +| taint.cpp:986:19:986:22 | {...} | taint.cpp:989:9:989:12 | dest | | +| taint.cpp:986:21:986:21 | 0 | taint.cpp:986:19:986:22 | {...} | TAINT | +| taint.cpp:987:15:987:29 | call to indirect_source | taint.cpp:988:40:988:42 | fmt | | +| taint.cpp:988:20:988:23 | ref arg dest | taint.cpp:989:9:989:12 | dest | | +| taint.cpp:988:40:988:42 | fmt | taint.cpp:988:20:988:23 | ref arg dest | TAINT | +| taint.cpp:989:9:989:12 | dest | taint.cpp:989:8:989:12 | * ... | | +| taint.cpp:992:19:992:22 | {...} | taint.cpp:993:20:993:23 | dest | | +| taint.cpp:992:19:992:22 | {...} | taint.cpp:993:33:993:36 | dest | | +| taint.cpp:992:19:992:22 | {...} | taint.cpp:994:9:994:12 | dest | | +| taint.cpp:992:21:992:21 | 0 | taint.cpp:992:19:992:22 | {...} | TAINT | +| taint.cpp:993:20:993:23 | ref arg dest | taint.cpp:994:9:994:12 | dest | | +| taint.cpp:993:40:993:43 | %d | taint.cpp:993:20:993:23 | ref arg dest | TAINT | +| taint.cpp:993:46:993:47 | 42 | taint.cpp:993:20:993:23 | ref arg dest | TAINT | +| taint.cpp:994:9:994:12 | dest | taint.cpp:994:8:994:12 | * ... | | +| taint.cpp:997:19:997:22 | {...} | taint.cpp:998:18:998:21 | dest | | +| taint.cpp:997:19:997:22 | {...} | taint.cpp:998:31:998:34 | dest | | +| taint.cpp:997:19:997:22 | {...} | taint.cpp:999:9:999:12 | dest | | +| taint.cpp:997:21:997:21 | 0 | taint.cpp:997:19:997:22 | {...} | TAINT | +| taint.cpp:998:18:998:21 | ref arg dest | taint.cpp:999:9:999:12 | dest | | +| taint.cpp:999:9:999:12 | dest | taint.cpp:999:8:999:12 | * ... | | | thread.cpp:10:27:10:27 | s | thread.cpp:10:27:10:27 | s | | | thread.cpp:10:27:10:27 | s | thread.cpp:11:8:11:8 | s | | | thread.cpp:14:26:14:26 | s | thread.cpp:15:8:15:8 | s | | 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 fa32e192239b..3168fb3a96f8 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/taint.cpp @@ -866,3 +866,136 @@ void test_iconv(size_t size) { iconv(0, &s, &size, &p, &size_out); sink(*p); // $ ast,ir } + +using va_list = void*; + +long StringCchCopyA(char *, size_t, const char *); +long StringCchCopyW(wchar_t *, size_t, const wchar_t *); +long StringCbCopyA(char *, size_t, const char *); +long StringCchCopyExA(char *, size_t, const char *, char **, size_t *, unsigned long); +long StringCchCopyNA(char *, size_t, const char *, size_t); +long StringCchCopyNExA(char *, size_t, const char *, size_t, char **, size_t *, unsigned long); +long StringCchCatA(char *, size_t, const char *); +long StringCchCatW(wchar_t *, size_t, const wchar_t *); +long StringCbCatA(char *, size_t, const char *); +long StringCchCatExA(char *, size_t, const char *, char **, size_t *, unsigned long); +long StringCchCatNA(char *, size_t, const char *, size_t); +long StringCchCatNExA(char *, size_t, const char *, size_t, char **, size_t *, unsigned long); +long StringCchPrintfA(char *, size_t, const char *, ...); +long StringCchPrintfW(wchar_t *, size_t, const wchar_t *, ...); +long StringCbPrintfA(char *, size_t, const char *, ...); +long StringCchPrintfExA(char *, size_t, char **, size_t *, unsigned long, const char *, ...); +long StringCchVPrintfA(char *, size_t, const char *, va_list); +long StringCchVPrintfExA(char *, size_t, char **, size_t *, unsigned long, const char *, va_list); + +void test_strsafe() { + char *source = indirect_source(); + wchar_t *wsource = (wchar_t *)indirect_source(); + + { + char dest[256] = {0}; + StringCchCopyA(dest, sizeof(dest), source); + sink(*dest); // $ ir MISSING: ast + } + { + wchar_t dest[256] = {0}; + StringCchCopyW(dest, sizeof(dest), wsource); + sink(*dest); // $ ir MISSING: ast + } + { + char dest[256] = {0}; + StringCbCopyA(dest, sizeof(dest), source); + sink(*dest); // $ ir MISSING: ast + } + { + char dest[256] = {0}; + char *end; + size_t remaining; + StringCchCopyExA(dest, sizeof(dest), source, &end, &remaining, 0); + sink(*dest); // $ ir MISSING: ast + } + { + char dest[256] = {0}; + StringCchCopyNA(dest, sizeof(dest), source, 128); + sink(*dest); // $ ir MISSING: ast + } + { + char dest[256] = {0}; + char *end; + size_t remaining; + StringCchCopyNExA(dest, sizeof(dest), source, 128, &end, &remaining, 0); + sink(dest); // $ ir MISSING: ast + } + { + char dest[256] = "prefix"; + StringCchCatA(dest, sizeof(dest), source); + sink(*dest); // $ ir MISSING: ast + } + { + wchar_t dest[256] = L"prefix"; + StringCchCatW(dest, sizeof(dest), wsource); + sink(*dest); // $ ir MISSING: ast + } + { + char dest[256] = "prefix"; + StringCbCatA(dest, sizeof(dest), source); + sink(*dest); // $ ir MISSING: ast + } + { + char dest[256] = "prefix"; + char *end; + size_t remaining; + StringCchCatExA(dest, sizeof(dest), source, &end, &remaining, 0); + sink(*dest); // $ ir MISSING: ast + } + { + char dest[256] = "prefix"; + StringCchCatNA(dest, sizeof(dest), source, 128); + sink(*dest); // $ ir MISSING: ast + } + { + char dest[256] = "prefix"; + char *end; + size_t remaining; + StringCchCatNExA(dest, sizeof(dest), source, 128, &end, &remaining, 0); + sink(*dest); // $ ir MISSING: ast + } + { + char dest[256] = {0}; + StringCchPrintfA(dest, sizeof(dest), "%s", source); + sink(*dest); // $ ir MISSING: ast + } + { + wchar_t dest[256] = {0}; + StringCchPrintfW(dest, sizeof(dest), L"%s", wsource); + sink(*dest); // $ ir MISSING: ast + } + { + char dest[256] = {0}; + StringCbPrintfA(dest, sizeof(dest), "%s", source); + sink(*dest); // $ ir MISSING: ast + } + { + char dest[256] = {0}; + char *end; + size_t remaining; + StringCchPrintfExA(dest, sizeof(dest), &end, &remaining, 0, "%s", source); + sink(*dest); // $ ir MISSING: ast + } + { + char dest[256] = {0}; + char *fmt = indirect_source(); + StringCchPrintfA(dest, sizeof(dest), fmt); + sink(*dest); // $ ir MISSING: ast + } + { + char dest[256] = {0}; + StringCchPrintfA(dest, sizeof(dest), "%d", 42); + sink(*dest); // clean + } + { + char dest[256] = {0}; + StringCchCopyA(dest, sizeof(dest), "hello"); + sink(*dest); // clean + } +} diff --git a/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected b/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected index e0002aa9c03f..5ad32759da58 100644 --- a/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected +++ b/cpp/ql/test/library-tests/dataflow/taint-tests/test_mad-signatures.expected @@ -28044,6 +28044,118 @@ getParameterTypeName | taint.cpp:859:8:859:12 | iconv | 4 | unsigned long * | | taint.cpp:861:6:861:15 | test_iconv | 0 | size_t | | taint.cpp:861:6:861:15 | test_iconv | 0 | unsigned long | +| taint.cpp:872:6:872:19 | StringCchCopyA | 0 | char * | +| taint.cpp:872:6:872:19 | StringCchCopyA | 1 | size_t | +| taint.cpp:872:6:872:19 | StringCchCopyA | 1 | unsigned long | +| taint.cpp:872:6:872:19 | StringCchCopyA | 2 | const char * | +| taint.cpp:873:6:873:19 | StringCchCopyW | 0 | wchar_t * | +| taint.cpp:873:6:873:19 | StringCchCopyW | 1 | size_t | +| taint.cpp:873:6:873:19 | StringCchCopyW | 1 | unsigned long | +| taint.cpp:873:6:873:19 | StringCchCopyW | 2 | const wchar_t * | +| taint.cpp:874:6:874:18 | StringCbCopyA | 0 | char * | +| taint.cpp:874:6:874:18 | StringCbCopyA | 1 | size_t | +| taint.cpp:874:6:874:18 | StringCbCopyA | 1 | unsigned long | +| taint.cpp:874:6:874:18 | StringCbCopyA | 2 | const char * | +| taint.cpp:875:6:875:21 | StringCchCopyExA | 0 | char * | +| taint.cpp:875:6:875:21 | StringCchCopyExA | 1 | size_t | +| taint.cpp:875:6:875:21 | StringCchCopyExA | 1 | unsigned long | +| taint.cpp:875:6:875:21 | StringCchCopyExA | 2 | const char * | +| taint.cpp:875:6:875:21 | StringCchCopyExA | 3 | char ** | +| taint.cpp:875:6:875:21 | StringCchCopyExA | 4 | size_t * | +| taint.cpp:875:6:875:21 | StringCchCopyExA | 4 | unsigned long * | +| taint.cpp:875:6:875:21 | StringCchCopyExA | 5 | unsigned long | +| taint.cpp:876:6:876:20 | StringCchCopyNA | 0 | char * | +| taint.cpp:876:6:876:20 | StringCchCopyNA | 1 | size_t | +| taint.cpp:876:6:876:20 | StringCchCopyNA | 1 | unsigned long | +| taint.cpp:876:6:876:20 | StringCchCopyNA | 2 | const char * | +| taint.cpp:876:6:876:20 | StringCchCopyNA | 3 | size_t | +| taint.cpp:876:6:876:20 | StringCchCopyNA | 3 | unsigned long | +| taint.cpp:877:6:877:22 | StringCchCopyNExA | 0 | char * | +| taint.cpp:877:6:877:22 | StringCchCopyNExA | 1 | size_t | +| taint.cpp:877:6:877:22 | StringCchCopyNExA | 1 | unsigned long | +| taint.cpp:877:6:877:22 | StringCchCopyNExA | 2 | const char * | +| taint.cpp:877:6:877:22 | StringCchCopyNExA | 3 | size_t | +| taint.cpp:877:6:877:22 | StringCchCopyNExA | 3 | unsigned long | +| taint.cpp:877:6:877:22 | StringCchCopyNExA | 4 | char ** | +| taint.cpp:877:6:877:22 | StringCchCopyNExA | 5 | size_t * | +| taint.cpp:877:6:877:22 | StringCchCopyNExA | 5 | unsigned long * | +| taint.cpp:877:6:877:22 | StringCchCopyNExA | 6 | unsigned long | +| taint.cpp:878:6:878:18 | StringCchCatA | 0 | char * | +| taint.cpp:878:6:878:18 | StringCchCatA | 1 | size_t | +| taint.cpp:878:6:878:18 | StringCchCatA | 1 | unsigned long | +| taint.cpp:878:6:878:18 | StringCchCatA | 2 | const char * | +| taint.cpp:879:6:879:18 | StringCchCatW | 0 | wchar_t * | +| taint.cpp:879:6:879:18 | StringCchCatW | 1 | size_t | +| taint.cpp:879:6:879:18 | StringCchCatW | 1 | unsigned long | +| taint.cpp:879:6:879:18 | StringCchCatW | 2 | const wchar_t * | +| taint.cpp:880:6:880:17 | StringCbCatA | 0 | char * | +| taint.cpp:880:6:880:17 | StringCbCatA | 1 | size_t | +| taint.cpp:880:6:880:17 | StringCbCatA | 1 | unsigned long | +| taint.cpp:880:6:880:17 | StringCbCatA | 2 | const char * | +| taint.cpp:881:6:881:20 | StringCchCatExA | 0 | char * | +| taint.cpp:881:6:881:20 | StringCchCatExA | 1 | size_t | +| taint.cpp:881:6:881:20 | StringCchCatExA | 1 | unsigned long | +| taint.cpp:881:6:881:20 | StringCchCatExA | 2 | const char * | +| taint.cpp:881:6:881:20 | StringCchCatExA | 3 | char ** | +| taint.cpp:881:6:881:20 | StringCchCatExA | 4 | size_t * | +| taint.cpp:881:6:881:20 | StringCchCatExA | 4 | unsigned long * | +| taint.cpp:881:6:881:20 | StringCchCatExA | 5 | unsigned long | +| taint.cpp:882:6:882:19 | StringCchCatNA | 0 | char * | +| taint.cpp:882:6:882:19 | StringCchCatNA | 1 | size_t | +| taint.cpp:882:6:882:19 | StringCchCatNA | 1 | unsigned long | +| taint.cpp:882:6:882:19 | StringCchCatNA | 2 | const char * | +| taint.cpp:882:6:882:19 | StringCchCatNA | 3 | size_t | +| taint.cpp:882:6:882:19 | StringCchCatNA | 3 | unsigned long | +| taint.cpp:883:6:883:21 | StringCchCatNExA | 0 | char * | +| taint.cpp:883:6:883:21 | StringCchCatNExA | 1 | size_t | +| taint.cpp:883:6:883:21 | StringCchCatNExA | 1 | unsigned long | +| taint.cpp:883:6:883:21 | StringCchCatNExA | 2 | const char * | +| taint.cpp:883:6:883:21 | StringCchCatNExA | 3 | size_t | +| taint.cpp:883:6:883:21 | StringCchCatNExA | 3 | unsigned long | +| taint.cpp:883:6:883:21 | StringCchCatNExA | 4 | char ** | +| taint.cpp:883:6:883:21 | StringCchCatNExA | 5 | size_t * | +| taint.cpp:883:6:883:21 | StringCchCatNExA | 5 | unsigned long * | +| taint.cpp:883:6:883:21 | StringCchCatNExA | 6 | unsigned long | +| taint.cpp:884:6:884:21 | StringCchPrintfA | 0 | char * | +| taint.cpp:884:6:884:21 | StringCchPrintfA | 1 | size_t | +| taint.cpp:884:6:884:21 | StringCchPrintfA | 1 | unsigned long | +| taint.cpp:884:6:884:21 | StringCchPrintfA | 2 | const char * | +| taint.cpp:884:6:884:21 | StringCchPrintfA | 3 | ... | +| taint.cpp:885:6:885:21 | StringCchPrintfW | 0 | wchar_t * | +| taint.cpp:885:6:885:21 | StringCchPrintfW | 1 | size_t | +| taint.cpp:885:6:885:21 | StringCchPrintfW | 1 | unsigned long | +| taint.cpp:885:6:885:21 | StringCchPrintfW | 2 | const wchar_t * | +| taint.cpp:885:6:885:21 | StringCchPrintfW | 3 | ... | +| taint.cpp:886:6:886:20 | StringCbPrintfA | 0 | char * | +| taint.cpp:886:6:886:20 | StringCbPrintfA | 1 | size_t | +| taint.cpp:886:6:886:20 | StringCbPrintfA | 1 | unsigned long | +| taint.cpp:886:6:886:20 | StringCbPrintfA | 2 | const char * | +| taint.cpp:886:6:886:20 | StringCbPrintfA | 3 | ... | +| taint.cpp:887:6:887:23 | StringCchPrintfExA | 0 | char * | +| taint.cpp:887:6:887:23 | StringCchPrintfExA | 1 | size_t | +| taint.cpp:887:6:887:23 | StringCchPrintfExA | 1 | unsigned long | +| taint.cpp:887:6:887:23 | StringCchPrintfExA | 2 | char ** | +| taint.cpp:887:6:887:23 | StringCchPrintfExA | 3 | size_t * | +| taint.cpp:887:6:887:23 | StringCchPrintfExA | 3 | unsigned long * | +| taint.cpp:887:6:887:23 | StringCchPrintfExA | 4 | unsigned long | +| taint.cpp:887:6:887:23 | StringCchPrintfExA | 5 | const char * | +| taint.cpp:887:6:887:23 | StringCchPrintfExA | 6 | ... | +| taint.cpp:888:6:888:22 | StringCchVPrintfA | 0 | char * | +| taint.cpp:888:6:888:22 | StringCchVPrintfA | 1 | size_t | +| taint.cpp:888:6:888:22 | StringCchVPrintfA | 1 | unsigned long | +| taint.cpp:888:6:888:22 | StringCchVPrintfA | 2 | const char * | +| taint.cpp:888:6:888:22 | StringCchVPrintfA | 3 | va_list | +| taint.cpp:888:6:888:22 | StringCchVPrintfA | 3 | void * | +| taint.cpp:889:6:889:24 | StringCchVPrintfExA | 0 | char * | +| taint.cpp:889:6:889:24 | StringCchVPrintfExA | 1 | size_t | +| taint.cpp:889:6:889:24 | StringCchVPrintfExA | 1 | unsigned long | +| taint.cpp:889:6:889:24 | StringCchVPrintfExA | 2 | char ** | +| taint.cpp:889:6:889:24 | StringCchVPrintfExA | 3 | size_t * | +| taint.cpp:889:6:889:24 | StringCchVPrintfExA | 3 | unsigned long * | +| taint.cpp:889:6:889:24 | StringCchVPrintfExA | 4 | unsigned long | +| taint.cpp:889:6:889:24 | StringCchVPrintfExA | 5 | const char * | +| taint.cpp:889:6:889:24 | StringCchVPrintfExA | 6 | va_list | +| taint.cpp:889:6:889:24 | StringCchVPrintfExA | 6 | void * | | thread.cpp:4:6:4:9 | sink | 0 | int | | thread.cpp:6:8:6:8 | operator= | 0 | S && | | thread.cpp:6:8:6:8 | operator= | 0 | const S & | diff --git a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected index c3e46114edf4..59b5f6214f3d 100644 --- a/cpp/ql/test/library-tests/ir/ir/PrintAST.expected +++ b/cpp/ql/test/library-tests/ir/ir/PrintAST.expected @@ -25796,9 +25796,9 @@ ir.cpp: # 2919| getExpr(): [FunctionCall] call to VariableTemplateFunc # 2919| Type = [DoubleType] double # 2919| ValueCategory = prvalue -# 2919| getArgument(0): [Literal] 2.299999999999999822 +# 2919| getArgument(0): [Literal] 2.3 # 2919| Type = [DoubleType] double -# 2919| Value = [Literal] 2.299999999999999822 +# 2919| Value = [Literal] 2.3 # 2919| ValueCategory = prvalue # 2919| getExpr().getFullyConverted(): [CStyleCast] (int)... # 2919| Conversion = [FloatingPointToIntegralConversion] floating point to integral conversion diff --git a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected index 66810913e5d3..96035c165331 100644 --- a/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/aliased_ir.expected @@ -12954,21 +12954,21 @@ ir.cpp: # 1592| double StructuredBindingTupleRefGet::d # 1592| Block 0 -# 1592| v1592_1(void) = EnterFunction : -# 1592| m1592_2(unknown) = AliasedDefinition : -# 1592| m1592_3(unknown) = InitializeNonLocal : -# 1592| m1592_4(unknown) = Chi : total:m1592_2, partial:m1592_3 -# 1592| r1592_5(glval) = VariableAddress[#this] : -# 1592| m1592_6(glval) = InitializeParameter[#this] : &:r1592_5 -# 1592| r1592_7(glval) = Load[#this] : &:r1592_5, m1592_6 -# 1592| m1592_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1592_7 -# 1592| r1592_9(glval) = FieldAddress[d] : r1592_7 -# 1592| r1592_10(double) = Constant[2.200000000000000178] : -# 1592| m1592_11(double) = Store[?] : &:r1592_9, r1592_10 -# 1592| m1592_12(unknown) = Chi : total:m1592_8, partial:m1592_11 -# 1592| v1592_13(void) = ReturnVoid : -# 1592| v1592_14(void) = AliasedUse : m1592_3 -# 1592| v1592_15(void) = ExitFunction : +# 1592| v1592_1(void) = EnterFunction : +# 1592| m1592_2(unknown) = AliasedDefinition : +# 1592| m1592_3(unknown) = InitializeNonLocal : +# 1592| m1592_4(unknown) = Chi : total:m1592_2, partial:m1592_3 +# 1592| r1592_5(glval) = VariableAddress[#this] : +# 1592| m1592_6(glval) = InitializeParameter[#this] : &:r1592_5 +# 1592| r1592_7(glval) = Load[#this] : &:r1592_5, m1592_6 +# 1592| m1592_8(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1592_7 +# 1592| r1592_9(glval) = FieldAddress[d] : r1592_7 +# 1592| r1592_10(double) = Constant[2.2] : +# 1592| m1592_11(double) = Store[?] : &:r1592_9, r1592_10 +# 1592| m1592_12(unknown) = Chi : total:m1592_8, partial:m1592_11 +# 1592| v1592_13(void) = ReturnVoid : +# 1592| v1592_14(void) = AliasedUse : m1592_3 +# 1592| v1592_15(void) = ExitFunction : # 1593| int& StructuredBindingTupleRefGet::r # 1593| Block 0 @@ -21761,7 +21761,7 @@ ir.cpp: # 2919| m2919_2(unknown) = AliasedDefinition : # 2919| r2919_3(glval) = VariableAddress[VariableTemplateFuncUse] : # 2919| r2919_4(glval) = FunctionAddress[VariableTemplateFunc] : -# 2919| r2919_5(double) = Constant[2.299999999999999822] : +# 2919| r2919_5(double) = Constant[2.3] : # 2919| r2919_6(double) = Call[VariableTemplateFunc] : func:r2919_4, 0:r2919_5 # 2919| m2919_7(unknown) = ^CallSideEffect : ~m2919_2 # 2919| m2919_8(unknown) = Chi : total:m2919_2, partial:m2919_7 diff --git a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected index 4e73b7d1aa6a..05ab6c50d703 100644 --- a/cpp/ql/test/library-tests/ir/ir/raw_ir.expected +++ b/cpp/ql/test/library-tests/ir/ir/raw_ir.expected @@ -11861,19 +11861,19 @@ ir.cpp: # 1592| double StructuredBindingTupleRefGet::d # 1592| Block 0 -# 1592| v1592_1(void) = EnterFunction : -# 1592| mu1592_2(unknown) = AliasedDefinition : -# 1592| mu1592_3(unknown) = InitializeNonLocal : -# 1592| r1592_4(glval) = VariableAddress[#this] : -# 1592| mu1592_5(glval) = InitializeParameter[#this] : &:r1592_4 -# 1592| r1592_6(glval) = Load[#this] : &:r1592_4, ~m? -# 1592| mu1592_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1592_6 -# 1592| r1592_8(glval) = FieldAddress[d] : r1592_6 -# 1592| r1592_9(double) = Constant[2.200000000000000178] : -# 1592| mu1592_10(double) = Store[?] : &:r1592_8, r1592_9 -# 1592| v1592_11(void) = ReturnVoid : -# 1592| v1592_12(void) = AliasedUse : ~m? -# 1592| v1592_13(void) = ExitFunction : +# 1592| v1592_1(void) = EnterFunction : +# 1592| mu1592_2(unknown) = AliasedDefinition : +# 1592| mu1592_3(unknown) = InitializeNonLocal : +# 1592| r1592_4(glval) = VariableAddress[#this] : +# 1592| mu1592_5(glval) = InitializeParameter[#this] : &:r1592_4 +# 1592| r1592_6(glval) = Load[#this] : &:r1592_4, ~m? +# 1592| mu1592_7(StructuredBindingTupleRefGet) = InitializeIndirection[#this] : &:r1592_6 +# 1592| r1592_8(glval) = FieldAddress[d] : r1592_6 +# 1592| r1592_9(double) = Constant[2.2] : +# 1592| mu1592_10(double) = Store[?] : &:r1592_8, r1592_9 +# 1592| v1592_11(void) = ReturnVoid : +# 1592| v1592_12(void) = AliasedUse : ~m? +# 1592| v1592_13(void) = ExitFunction : # 1593| int& StructuredBindingTupleRefGet::r # 1593| Block 0 @@ -19768,7 +19768,7 @@ ir.cpp: # 2919| mu2919_2(unknown) = AliasedDefinition : # 2919| r2919_3(glval) = VariableAddress[VariableTemplateFuncUse] : # 2919| r2919_4(glval) = FunctionAddress[VariableTemplateFunc] : -# 2919| r2919_5(double) = Constant[2.299999999999999822] : +# 2919| r2919_5(double) = Constant[2.3] : # 2919| r2919_6(double) = Call[VariableTemplateFunc] : func:r2919_4, 0:r2919_5 # 2919| mu2919_7(unknown) = ^CallSideEffect : ~m? # 2919| r2919_8(int) = Convert : r2919_6 diff --git a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected index b8424b8f01ad..7d441d6293a6 100644 --- a/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected +++ b/cpp/ql/test/library-tests/rangeanalysis/SimpleRangeAnalysis/nrOfBounds.expected @@ -1293,12 +1293,12 @@ estimateNrOfBounds | test.c:415:26:415:69 | ... ? ... : ... | 1.0 | 1.0 | 1.0 | | test.c:415:30:415:30 | q | 1.0 | 1.0 | 1.0 | | test.c:415:30:415:56 | ... ? ... : ... | 1.0 | 1.0 | 1.0 | -| test.c:415:34:415:43 | 0.4743882700000000008 | 1.0 | -1.0 | -1.0 | -| test.c:415:47:415:56 | 0.1433388700000000071 | 1.0 | -1.0 | -1.0 | -| test.c:415:60:415:69 | 0.3527920299999999787 | 1.0 | -1.0 | -1.0 | -| test.c:415:73:415:82 | 0.3920645799999999959 | 1.0 | -1.0 | -1.0 | -| test.c:415:86:415:95 | 0.2154022499999999896 | 1.0 | -1.0 | -1.0 | -| test.c:415:99:415:108 | 0.4049680500000000238 | 1.0 | -1.0 | -1.0 | +| test.c:415:34:415:43 | 0.47438827 | 1.0 | -1.0 | -1.0 | +| test.c:415:47:415:56 | 0.14333887 | 1.0 | -1.0 | -1.0 | +| test.c:415:60:415:69 | 0.35279203 | 1.0 | -1.0 | -1.0 | +| test.c:415:73:415:82 | 0.39206458 | 1.0 | -1.0 | -1.0 | +| test.c:415:86:415:95 | 0.21540225 | 1.0 | -1.0 | -1.0 | +| test.c:415:99:415:108 | 0.40496805 | 1.0 | -1.0 | -1.0 | | test.c:416:14:416:14 | m | 2.0 | 1.0 | 1.0 | | test.c:416:14:416:108 | ... ? ... : ... | 1.0 | 1.0 | 1.0 | | test.c:416:18:416:18 | n | 3.0 | 1.0 | 1.0 | @@ -1309,12 +1309,12 @@ estimateNrOfBounds | test.c:416:26:416:69 | ... ? ... : ... | 1.0 | 1.0 | 1.0 | | test.c:416:30:416:30 | q | 3.0 | 1.0 | 1.0 | | test.c:416:30:416:56 | ... ? ... : ... | 1.0 | 1.0 | 1.0 | -| test.c:416:34:416:43 | 0.3418334800000000229 | 1.0 | -1.0 | -1.0 | -| test.c:416:47:416:56 | 0.3533464000000000049 | 1.0 | -1.0 | -1.0 | -| test.c:416:60:416:69 | 0.2224785300000000077 | 1.0 | -1.0 | -1.0 | -| test.c:416:73:416:82 | 0.326618929999999974 | 1.0 | -1.0 | -1.0 | -| test.c:416:86:416:95 | 0.5927046500000000551 | 1.0 | -1.0 | -1.0 | -| test.c:416:99:416:108 | 0.5297741000000000255 | 1.0 | -1.0 | -1.0 | +| test.c:416:34:416:43 | 0.34183348 | 1.0 | -1.0 | -1.0 | +| test.c:416:47:416:56 | 0.3533464 | 1.0 | -1.0 | -1.0 | +| test.c:416:60:416:69 | 0.22247853 | 1.0 | -1.0 | -1.0 | +| test.c:416:73:416:82 | 0.32661893 | 1.0 | -1.0 | -1.0 | +| test.c:416:86:416:95 | 0.59270465 | 1.0 | -1.0 | -1.0 | +| test.c:416:99:416:108 | 0.5297741 | 1.0 | -1.0 | -1.0 | | test.c:417:14:417:14 | m | 3.5 | 1.0 | 1.0 | | test.c:417:14:417:108 | ... ? ... : ... | 1.0 | 1.0 | 1.0 | | test.c:417:18:417:18 | n | 8.0 | 1.0 | 1.0 | @@ -1325,12 +1325,12 @@ estimateNrOfBounds | test.c:417:26:417:69 | ... ? ... : ... | 1.0 | 1.0 | 1.0 | | test.c:417:30:417:30 | q | 8.0 | 1.0 | 1.0 | | test.c:417:30:417:56 | ... ? ... : ... | 1.0 | 1.0 | 1.0 | -| test.c:417:34:417:43 | 0.774296030000000024 | 1.0 | -1.0 | -1.0 | -| test.c:417:47:417:56 | 0.3147808400000000062 | 1.0 | -1.0 | -1.0 | -| test.c:417:60:417:69 | 0.3123551399999999756 | 1.0 | -1.0 | -1.0 | -| test.c:417:73:417:82 | 0.05121255999999999725 | 1.0 | -1.0 | -1.0 | -| test.c:417:86:417:95 | 0.7931074500000000471 | 1.0 | -1.0 | -1.0 | -| test.c:417:99:417:108 | 0.6798145100000000385 | 1.0 | -1.0 | -1.0 | +| test.c:417:34:417:43 | 0.77429603 | 1.0 | -1.0 | -1.0 | +| test.c:417:47:417:56 | 0.31478084 | 1.0 | -1.0 | -1.0 | +| test.c:417:60:417:69 | 0.31235514 | 1.0 | -1.0 | -1.0 | +| test.c:417:73:417:82 | 0.05121256 | 1.0 | -1.0 | -1.0 | +| test.c:417:86:417:95 | 0.79310745 | 1.0 | -1.0 | -1.0 | +| test.c:417:99:417:108 | 0.67981451 | 1.0 | -1.0 | -1.0 | | test.c:418:14:418:14 | m | 5.75 | 1.0 | 1.0 | | test.c:418:14:418:108 | ... ? ... : ... | 1.0 | 1.0 | 1.0 | | test.c:418:18:418:18 | n | 20.5 | 1.0 | 1.0 | @@ -1341,12 +1341,12 @@ estimateNrOfBounds | test.c:418:26:418:69 | ... ? ... : ... | 1.0 | 1.0 | 1.0 | | test.c:418:30:418:30 | q | 20.5 | 1.0 | 1.0 | | test.c:418:30:418:56 | ... ? ... : ... | 1.0 | 1.0 | 1.0 | -| test.c:418:34:418:43 | 0.4472955599999999809 | 1.0 | -1.0 | -1.0 | -| test.c:418:47:418:56 | 0.8059920200000000312 | 1.0 | -1.0 | -1.0 | -| test.c:418:60:418:69 | 0.9899726199999999698 | 1.0 | -1.0 | -1.0 | -| test.c:418:73:418:82 | 0.5995273199999999747 | 1.0 | -1.0 | -1.0 | -| test.c:418:86:418:95 | 0.3697694799999999837 | 1.0 | -1.0 | -1.0 | -| test.c:418:99:418:108 | 0.8386683499999999514 | 1.0 | -1.0 | -1.0 | +| test.c:418:34:418:43 | 0.44729556 | 1.0 | -1.0 | -1.0 | +| test.c:418:47:418:56 | 0.80599202 | 1.0 | -1.0 | -1.0 | +| test.c:418:60:418:69 | 0.98997262 | 1.0 | -1.0 | -1.0 | +| test.c:418:73:418:82 | 0.59952732 | 1.0 | -1.0 | -1.0 | +| test.c:418:86:418:95 | 0.36976948 | 1.0 | -1.0 | -1.0 | +| test.c:418:99:418:108 | 0.83866835 | 1.0 | -1.0 | -1.0 | | test.c:419:14:419:14 | m | 9.125 | 1.0 | 1.0 | | test.c:419:14:419:108 | ... ? ... : ... | 1.0 | 1.0 | 1.0 | | test.c:419:18:419:18 | n | 51.75 | 1.0 | 1.0 | @@ -1357,12 +1357,12 @@ estimateNrOfBounds | test.c:419:26:419:69 | ... ? ... : ... | 1.0 | 1.0 | 1.0 | | test.c:419:30:419:30 | q | 51.75 | 1.0 | 1.0 | | test.c:419:30:419:56 | ... ? ... : ... | 1.0 | 1.0 | 1.0 | -| test.c:419:34:419:43 | 0.4931182800000000199 | 1.0 | -1.0 | -1.0 | -| test.c:419:47:419:56 | 0.9038991100000000056 | 1.0 | -1.0 | -1.0 | -| test.c:419:60:419:69 | 0.1059771199999999941 | 1.0 | -1.0 | -1.0 | -| test.c:419:73:419:82 | 0.2177842600000000073 | 1.0 | -1.0 | -1.0 | -| test.c:419:86:419:95 | 0.7248596600000000167 | 1.0 | -1.0 | -1.0 | -| test.c:419:99:419:108 | 0.6873487400000000136 | 1.0 | -1.0 | -1.0 | +| test.c:419:34:419:43 | 0.49311828 | 1.0 | -1.0 | -1.0 | +| test.c:419:47:419:56 | 0.90389911 | 1.0 | -1.0 | -1.0 | +| test.c:419:60:419:69 | 0.10597712 | 1.0 | -1.0 | -1.0 | +| test.c:419:73:419:82 | 0.21778426 | 1.0 | -1.0 | -1.0 | +| test.c:419:86:419:95 | 0.72485966 | 1.0 | -1.0 | -1.0 | +| test.c:419:99:419:108 | 0.68734874 | 1.0 | -1.0 | -1.0 | | test.c:420:14:420:14 | m | 14.1875 | 1.0 | 1.0 | | test.c:420:14:420:108 | ... ? ... : ... | 1.0 | 1.0 | 1.0 | | test.c:420:18:420:18 | n | 129.875 | 1.0 | 1.0 | @@ -1373,12 +1373,12 @@ estimateNrOfBounds | test.c:420:26:420:69 | ... ? ... : ... | 1.0 | 1.0 | 1.0 | | test.c:420:30:420:30 | q | 129.875 | 1.0 | 1.0 | | test.c:420:30:420:56 | ... ? ... : ... | 1.0 | 1.0 | 1.0 | -| test.c:420:34:420:43 | 0.4745284799999999747 | 1.0 | -1.0 | -1.0 | -| test.c:420:47:420:56 | 0.107866500000000004 | 1.0 | -1.0 | -1.0 | -| test.c:420:60:420:69 | 0.1188457599999999947 | 1.0 | -1.0 | -1.0 | -| test.c:420:73:420:82 | 0.7616405200000000431 | 1.0 | -1.0 | -1.0 | -| test.c:420:86:420:95 | 0.3480889200000000239 | 1.0 | -1.0 | -1.0 | -| test.c:420:99:420:108 | 0.584408649999999974 | 1.0 | -1.0 | -1.0 | +| test.c:420:34:420:43 | 0.47452848 | 1.0 | -1.0 | -1.0 | +| test.c:420:47:420:56 | 0.1078665 | 1.0 | -1.0 | -1.0 | +| test.c:420:60:420:69 | 0.11884576 | 1.0 | -1.0 | -1.0 | +| test.c:420:73:420:82 | 0.76164052 | 1.0 | -1.0 | -1.0 | +| test.c:420:86:420:95 | 0.34808892 | 1.0 | -1.0 | -1.0 | +| test.c:420:99:420:108 | 0.58440865 | 1.0 | -1.0 | -1.0 | | test.c:421:14:421:14 | m | 21.78125 | 1.0 | 1.0 | | test.c:421:14:421:108 | ... ? ... : ... | 1.0 | 1.0 | 1.0 | | test.c:421:18:421:18 | n | 325.1875 | 1.0 | 1.0 | @@ -1390,11 +1390,11 @@ estimateNrOfBounds | test.c:421:30:421:30 | q | 325.1875 | 1.0 | 1.0 | | test.c:421:30:421:56 | ... ? ... : ... | 1.0 | 1.0 | 1.0 | | test.c:421:34:421:43 | 0.02524326 | 1.0 | -1.0 | -1.0 | -| test.c:421:47:421:56 | 0.8290504600000000446 | 1.0 | -1.0 | -1.0 | -| test.c:421:60:421:69 | 0.95823075000000002 | 1.0 | -1.0 | -1.0 | -| test.c:421:73:421:82 | 0.1251655799999999985 | 1.0 | -1.0 | -1.0 | -| test.c:421:86:421:95 | 0.8523517900000000536 | 1.0 | -1.0 | -1.0 | -| test.c:421:99:421:108 | 0.3623238400000000081 | 1.0 | -1.0 | -1.0 | +| test.c:421:47:421:56 | 0.82905046 | 1.0 | -1.0 | -1.0 | +| test.c:421:60:421:69 | 0.95823075 | 1.0 | -1.0 | -1.0 | +| test.c:421:73:421:82 | 0.12516558 | 1.0 | -1.0 | -1.0 | +| test.c:421:86:421:95 | 0.85235179 | 1.0 | -1.0 | -1.0 | +| test.c:421:99:421:108 | 0.36232384 | 1.0 | -1.0 | -1.0 | | test.c:422:14:422:14 | m | 33.171875 | 1.0 | 1.0 | | test.c:422:14:422:108 | ... ? ... : ... | 1.0 | 1.0 | 1.0 | | test.c:422:18:422:18 | n | 813.46875 | 1.0 | 1.0 | @@ -1405,12 +1405,12 @@ estimateNrOfBounds | test.c:422:26:422:69 | ... ? ... : ... | 1.0 | 1.0 | 1.0 | | test.c:422:30:422:30 | q | 813.46875 | 1.0 | 1.0 | | test.c:422:30:422:56 | ... ? ... : ... | 1.0 | 1.0 | 1.0 | -| test.c:422:34:422:43 | 0.3870862600000000153 | 1.0 | -1.0 | -1.0 | -| test.c:422:47:422:56 | 0.3287604399999999871 | 1.0 | -1.0 | -1.0 | -| test.c:422:60:422:69 | 0.1496348500000000137 | 1.0 | -1.0 | -1.0 | -| test.c:422:73:422:82 | 0.4504110800000000192 | 1.0 | -1.0 | -1.0 | -| test.c:422:86:422:95 | 0.4864090899999999884 | 1.0 | -1.0 | -1.0 | -| test.c:422:99:422:108 | 0.8433127200000000157 | 1.0 | -1.0 | -1.0 | +| test.c:422:34:422:43 | 0.38708626 | 1.0 | -1.0 | -1.0 | +| test.c:422:47:422:56 | 0.32876044 | 1.0 | -1.0 | -1.0 | +| test.c:422:60:422:69 | 0.14963485 | 1.0 | -1.0 | -1.0 | +| test.c:422:73:422:82 | 0.45041108 | 1.0 | -1.0 | -1.0 | +| test.c:422:86:422:95 | 0.48640909 | 1.0 | -1.0 | -1.0 | +| test.c:422:99:422:108 | 0.84331272 | 1.0 | -1.0 | -1.0 | | test.c:423:14:423:14 | m | 50.2578125 | 1.0 | 1.0 | | test.c:423:14:423:108 | ... ? ... : ... | 1.0 | 1.0 | 1.0 | | test.c:423:18:423:18 | n | 2034.171875 | 1.0 | 1.0 | @@ -1421,12 +1421,12 @@ estimateNrOfBounds | test.c:423:26:423:69 | ... ? ... : ... | 1.0 | 1.0 | 1.0 | | test.c:423:30:423:30 | q | 2034.171875 | 1.0 | 1.0 | | test.c:423:30:423:56 | ... ? ... : ... | 1.0 | 1.0 | 1.0 | -| test.c:423:34:423:43 | 0.1575506299999999971 | 1.0 | -1.0 | -1.0 | -| test.c:423:47:423:56 | 0.7708683299999999905 | 1.0 | -1.0 | -1.0 | -| test.c:423:60:423:69 | 0.2642848099999999811 | 1.0 | -1.0 | -1.0 | -| test.c:423:73:423:82 | 0.1480050800000000111 | 1.0 | -1.0 | -1.0 | -| test.c:423:86:423:95 | 0.374281430000000026 | 1.0 | -1.0 | -1.0 | -| test.c:423:99:423:108 | 0.05328182000000000057 | 1.0 | -1.0 | -1.0 | +| test.c:423:34:423:43 | 0.15755063 | 1.0 | -1.0 | -1.0 | +| test.c:423:47:423:56 | 0.77086833 | 1.0 | -1.0 | -1.0 | +| test.c:423:60:423:69 | 0.26428481 | 1.0 | -1.0 | -1.0 | +| test.c:423:73:423:82 | 0.14800508 | 1.0 | -1.0 | -1.0 | +| test.c:423:86:423:95 | 0.37428143 | 1.0 | -1.0 | -1.0 | +| test.c:423:99:423:108 | 0.05328182 | 1.0 | -1.0 | -1.0 | | test.c:424:14:424:14 | m | 75.88671875 | 1.0 | 1.0 | | test.c:424:14:424:108 | ... ? ... : ... | 1.0 | 1.0 | 1.0 | | test.c:424:18:424:18 | n | 5085.9296875 | 1.0 | 1.0 | @@ -1437,12 +1437,12 @@ estimateNrOfBounds | test.c:424:26:424:69 | ... ? ... : ... | 1.0 | 1.0 | 1.0 | | test.c:424:30:424:30 | q | 5085.9296875 | 1.0 | 1.0 | | test.c:424:30:424:56 | ... ? ... : ... | 1.0 | 1.0 | 1.0 | -| test.c:424:34:424:43 | 0.4173653600000000186 | 1.0 | -1.0 | -1.0 | -| test.c:424:47:424:56 | 0.7682662799999999681 | 1.0 | -1.0 | -1.0 | -| test.c:424:60:424:69 | 0.2764323799999999776 | 1.0 | -1.0 | -1.0 | -| test.c:424:73:424:82 | 0.5567927400000000082 | 1.0 | -1.0 | -1.0 | -| test.c:424:86:424:95 | 0.3946885700000000163 | 1.0 | -1.0 | -1.0 | -| test.c:424:99:424:108 | 0.6907214400000000198 | 1.0 | -1.0 | -1.0 | +| test.c:424:34:424:43 | 0.41736536 | 1.0 | -1.0 | -1.0 | +| test.c:424:47:424:56 | 0.76826628 | 1.0 | -1.0 | -1.0 | +| test.c:424:60:424:69 | 0.27643238 | 1.0 | -1.0 | -1.0 | +| test.c:424:73:424:82 | 0.55679274 | 1.0 | -1.0 | -1.0 | +| test.c:424:86:424:95 | 0.39468857 | 1.0 | -1.0 | -1.0 | +| test.c:424:99:424:108 | 0.69072144 | 1.0 | -1.0 | -1.0 | | test.c:425:14:425:14 | m | 114.330078125 | 1.0 | 1.0 | | test.c:425:14:425:108 | ... ? ... : ... | 1.0 | 1.0 | 1.0 | | test.c:425:18:425:18 | n | 12715.32421875 | 1.0 | 1.0 | @@ -1453,12 +1453,12 @@ estimateNrOfBounds | test.c:425:26:425:69 | ... ? ... : ... | 1.0 | 1.0 | 1.0 | | test.c:425:30:425:30 | q | 12715.32421875 | 1.0 | 1.0 | | test.c:425:30:425:56 | ... ? ... : ... | 1.0 | 1.0 | 1.0 | -| test.c:425:34:425:43 | 0.8895534499999999678 | 1.0 | -1.0 | -1.0 | -| test.c:425:47:425:56 | 0.2990482400000000207 | 1.0 | -1.0 | -1.0 | -| test.c:425:60:425:69 | 0.7624258299999999711 | 1.0 | -1.0 | -1.0 | -| test.c:425:73:425:82 | 0.2051910999999999874 | 1.0 | -1.0 | -1.0 | -| test.c:425:86:425:95 | 0.8874555899999999609 | 1.0 | -1.0 | -1.0 | -| test.c:425:99:425:108 | 0.8137279800000000174 | 1.0 | -1.0 | -1.0 | +| test.c:425:34:425:43 | 0.88955345 | 1.0 | -1.0 | -1.0 | +| test.c:425:47:425:56 | 0.29904824 | 1.0 | -1.0 | -1.0 | +| test.c:425:60:425:69 | 0.76242583 | 1.0 | -1.0 | -1.0 | +| test.c:425:73:425:82 | 0.2051911 | 1.0 | -1.0 | -1.0 | +| test.c:425:86:425:95 | 0.88745559 | 1.0 | -1.0 | -1.0 | +| test.c:425:99:425:108 | 0.81372798 | 1.0 | -1.0 | -1.0 | | test.c:426:14:426:14 | m | 171.9951171875 | 1.0 | 1.0 | | test.c:426:14:426:108 | ... ? ... : ... | 1.0 | 1.0 | 1.0 | | test.c:426:18:426:18 | n | 31788.810546875 | 1.0 | 1.0 | @@ -1469,12 +1469,12 @@ estimateNrOfBounds | test.c:426:26:426:69 | ... ? ... : ... | 1.0 | 1.0 | 1.0 | | test.c:426:30:426:30 | q | 31788.810546875 | 1.0 | 1.0 | | test.c:426:30:426:56 | ... ? ... : ... | 1.0 | 1.0 | 1.0 | -| test.c:426:34:426:43 | 0.4218627600000000033 | 1.0 | -1.0 | -1.0 | -| test.c:426:47:426:56 | 0.5384335799999999672 | 1.0 | -1.0 | -1.0 | -| test.c:426:60:426:69 | 0.4499667900000000054 | 1.0 | -1.0 | -1.0 | -| test.c:426:73:426:82 | 0.1320411400000000013 | 1.0 | -1.0 | -1.0 | -| test.c:426:86:426:95 | 0.5203124099999999475 | 1.0 | -1.0 | -1.0 | -| test.c:426:99:426:108 | 0.4276264699999999808 | 1.0 | -1.0 | -1.0 | +| test.c:426:34:426:43 | 0.42186276 | 1.0 | -1.0 | -1.0 | +| test.c:426:47:426:56 | 0.53843358 | 1.0 | -1.0 | -1.0 | +| test.c:426:60:426:69 | 0.44996679 | 1.0 | -1.0 | -1.0 | +| test.c:426:73:426:82 | 0.13204114 | 1.0 | -1.0 | -1.0 | +| test.c:426:86:426:95 | 0.52031241 | 1.0 | -1.0 | -1.0 | +| test.c:426:99:426:108 | 0.42762647 | 1.0 | -1.0 | -1.0 | | test.c:432:19:432:19 | a | 1.0 | 1.0 | 1.0 | | test.c:432:19:432:23 | ... + ... | 1.0 | 1.0 | 1.0 | | test.c:432:19:432:27 | ... + ... | 1.0 | 1.0 | 1.0 | diff --git a/cpp/ql/test/query-tests/Likely Bugs/Format/NonConstantFormat/NonConstantFormat.expected b/cpp/ql/test/query-tests/Likely Bugs/Format/NonConstantFormat/NonConstantFormat.expected index 9424c731765e..63851030bba5 100644 --- a/cpp/ql/test/query-tests/Likely Bugs/Format/NonConstantFormat/NonConstantFormat.expected +++ b/cpp/ql/test/query-tests/Likely Bugs/Format/NonConstantFormat/NonConstantFormat.expected @@ -11,8 +11,13 @@ edges | nested.cpp:86:19:86:46 | *call to __builtin_alloca | nested.cpp:87:18:87:20 | *fmt | provenance | | | test.cpp:46:27:46:30 | **argv | test.cpp:130:20:130:26 | *access to array | provenance | | | test.cpp:167:31:167:34 | *data | test.cpp:170:12:170:14 | *res | provenance | DataFlowFunction | +| test.cpp:179:6:179:21 | [summary param] *2 in StringCchPrintfW | test.cpp:179:6:179:21 | [summary param] *0 in StringCchPrintfW [Return] | provenance | MaD:403 | +| test.cpp:193:32:193:34 | *str | test.cpp:195:31:195:33 | *str | provenance | | | test.cpp:193:32:193:34 | *str | test.cpp:195:31:195:33 | *str | provenance | | | test.cpp:193:32:193:34 | *str | test.cpp:197:11:197:14 | *wstr | provenance | TaintFunction | +| test.cpp:195:20:195:23 | StringCchPrintfW output argument | test.cpp:197:11:197:14 | *wstr | provenance | | +| test.cpp:195:31:195:33 | *str | test.cpp:179:6:179:21 | [summary param] *2 in StringCchPrintfW | provenance | | +| test.cpp:195:31:195:33 | *str | test.cpp:195:20:195:23 | StringCchPrintfW output argument | provenance | MaD:403 | | test.cpp:204:25:204:36 | *call to get_string | test.cpp:204:25:204:36 | *call to get_string | provenance | | | test.cpp:204:25:204:36 | *call to get_string | test.cpp:205:12:205:20 | *... + ... | provenance | | | test.cpp:204:25:204:36 | *call to get_string | test.cpp:206:12:206:16 | *hello | provenance | | @@ -55,7 +60,11 @@ nodes | test.cpp:130:20:130:26 | *access to array | semmle.label | *access to array | | test.cpp:167:31:167:34 | *data | semmle.label | *data | | test.cpp:170:12:170:14 | *res | semmle.label | *res | +| test.cpp:179:6:179:21 | [summary param] *0 in StringCchPrintfW [Return] | semmle.label | [summary param] *0 in StringCchPrintfW [Return] | +| test.cpp:179:6:179:21 | [summary param] *2 in StringCchPrintfW | semmle.label | [summary param] *2 in StringCchPrintfW | | test.cpp:193:32:193:34 | *str | semmle.label | *str | +| test.cpp:195:20:195:23 | StringCchPrintfW output argument | semmle.label | StringCchPrintfW output argument | +| test.cpp:195:31:195:33 | *str | semmle.label | *str | | test.cpp:195:31:195:33 | *str | semmle.label | *str | | test.cpp:197:11:197:14 | *wstr | semmle.label | *wstr | | test.cpp:204:25:204:36 | *call to get_string | semmle.label | *call to get_string | @@ -88,6 +97,7 @@ nodes | test.cpp:245:25:245:36 | *call to get_string | semmle.label | *call to get_string | | test.cpp:247:12:247:16 | *hello | semmle.label | *hello | subpaths +| test.cpp:195:31:195:33 | *str | test.cpp:179:6:179:21 | [summary param] *2 in StringCchPrintfW | test.cpp:179:6:179:21 | [summary param] *0 in StringCchPrintfW [Return] | test.cpp:195:20:195:23 | StringCchPrintfW output argument | #select | NonConstantFormat.c:30:10:30:16 | *access to array | NonConstantFormat.c:28:27:28:30 | **argv | NonConstantFormat.c:30:10:30:16 | *access to array | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | NonConstantFormat.c:30:3:30:8 | call to printf | printf | | NonConstantFormat.c:41:9:41:45 | *call to any_random_function | NonConstantFormat.c:41:9:41:45 | *call to any_random_function | NonConstantFormat.c:41:9:41:45 | *call to any_random_function | The format string argument to $@ has a source which cannot be verified to originate from a string literal. | NonConstantFormat.c:41:2:41:7 | call to printf | printf | diff --git a/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/ExprHasNoEffect.expected b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/ExprHasNoEffect.expected new file mode 100644 index 000000000000..a87d2ddbd1bc --- /dev/null +++ b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/ExprHasNoEffect.expected @@ -0,0 +1,2 @@ +| conftest.c.c:4:3:4:8 | call to strlen | This expression has no effect (because $@ has no external side effects). | conftest.h:3:8:3:13 | strlen | strlen | +| conftest_abc.c:4:3:4:8 | call to strlen | This expression has no effect (because $@ has no external side effects). | conftest.h:3:8:3:13 | strlen | strlen | diff --git a/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/ExprHasNoEffect.qlref b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/ExprHasNoEffect.qlref new file mode 100644 index 000000000000..82a90f5413a9 --- /dev/null +++ b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/ExprHasNoEffect.qlref @@ -0,0 +1 @@ +Likely Bugs/Likely Typos/ExprHasNoEffect.ql diff --git a/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/conftest.c b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/conftest.c new file mode 100644 index 000000000000..2e067f5c4336 --- /dev/null +++ b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/conftest.c @@ -0,0 +1,6 @@ +#include "conftest.h" + +int main2() { + strlen(""); // GOOD: conftest files are ignored + return 0; +} diff --git a/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/conftest.c.c b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/conftest.c.c new file mode 100644 index 000000000000..4ff7c2253358 --- /dev/null +++ b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/conftest.c.c @@ -0,0 +1,6 @@ +#include "conftest.h" + +int main3() { + strlen(""); // BAD: not a `conftest` file, as `conftest` is not directly followed by the extension or a sequence of numbers. + return 0; +} diff --git a/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/conftest.cpp b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/conftest.cpp new file mode 100644 index 000000000000..7b8edf642610 --- /dev/null +++ b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/conftest.cpp @@ -0,0 +1,6 @@ +#include "conftest.h" + +int main4() { + strlen(""); // GOOD: conftest files are ignored + return 0; +} diff --git a/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/conftest.h b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/conftest.h new file mode 100644 index 000000000000..9cf6f7e0d9f8 --- /dev/null +++ b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/conftest.h @@ -0,0 +1,3 @@ +typedef long long size_t; + +size_t strlen(const char *s); diff --git a/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/conftest123.c b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/conftest123.c new file mode 100644 index 000000000000..b227d53ad2a3 --- /dev/null +++ b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/conftest123.c @@ -0,0 +1,6 @@ +#include "conftest.h" + +int main5() { + strlen(""); // GOOD: conftest files are ignored + return 0; +} diff --git a/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/conftest_abc.c b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/conftest_abc.c new file mode 100644 index 000000000000..88215d7434cd --- /dev/null +++ b/cpp/ql/test/query-tests/Likely Bugs/Likely Typos/ExprHasNoEffect/autoconf/conftest_abc.c @@ -0,0 +1,6 @@ +#include "conftest.h" + +int main1() { + strlen(""); // BAD: not a `conftest` file, as `conftest` is not directly followed by the extension or a sequence of numbers. + return 0; +} diff --git a/cpp/ql/test/query-tests/Likely Bugs/Underspecified Functions/MistypedFunctionArguments.expected b/cpp/ql/test/query-tests/Likely Bugs/Underspecified Functions/MistypedFunctionArguments.expected index d067430aba9c..162161e369b5 100644 --- a/cpp/ql/test/query-tests/Likely Bugs/Underspecified Functions/MistypedFunctionArguments.expected +++ b/cpp/ql/test/query-tests/Likely Bugs/Underspecified Functions/MistypedFunctionArguments.expected @@ -2,10 +2,10 @@ | test.c:33:3:33:19 | call to not_yet_declared2 | Calling $@: argument $@ of type $@ is incompatible with parameter $@. | test.c:77:6:77:22 | not_yet_declared2 | not_yet_declared2 | test.c:33:21:33:22 | ca | ca | file://:0:0:0:0 | int[4] | int[4] | test.c:77:24:77:26 | (unnamed parameter 0) | int (unnamed parameter 0) | | test.c:41:3:41:29 | call to declared_empty_defined_with | Calling $@: argument $@ of type $@ is incompatible with parameter $@. | test.c:78:6:78:32 | declared_empty_defined_with | declared_empty_defined_with | test.c:41:31:41:32 | & ... | & ... | file://:0:0:0:0 | int * | int * | test.c:78:38:78:38 | x | int x | | test.c:45:3:45:27 | call to not_declared_defined_with | Calling $@: argument $@ of type $@ is incompatible with parameter $@. | test.c:81:6:81:30 | not_declared_defined_with | not_declared_defined_with | test.c:45:29:45:31 | 4 | 4 | file://:0:0:0:0 | long long | long long | test.c:81:36:81:36 | x | int x | -| test.c:45:3:45:27 | call to not_declared_defined_with | Calling $@: argument $@ of type $@ is incompatible with parameter $@. | test.c:81:6:81:30 | not_declared_defined_with | not_declared_defined_with | test.c:45:37:45:42 | 2500000000.0 | 2500000000.0 | file://:0:0:0:0 | float | float | test.c:81:50:81:50 | z | int z | -| test.c:48:3:48:24 | call to declared_with_pointers | Calling $@: argument $@ of type $@ is incompatible with parameter $@. | test.c:5:6:5:27 | declared_with_pointers | declared_with_pointers | test.c:48:26:48:31 | 3500000000000000.0 | 3500000000000000.0 | file://:0:0:0:0 | double | double | test.c:93:34:93:34 | x | int * x | +| test.c:45:3:45:27 | call to not_declared_defined_with | Calling $@: argument $@ of type $@ is incompatible with parameter $@. | test.c:81:6:81:30 | not_declared_defined_with | not_declared_defined_with | test.c:45:37:45:42 | 2.5E9 | 2.5E9 | file://:0:0:0:0 | float | float | test.c:81:50:81:50 | z | int z | +| test.c:48:3:48:24 | call to declared_with_pointers | Calling $@: argument $@ of type $@ is incompatible with parameter $@. | test.c:5:6:5:27 | declared_with_pointers | declared_with_pointers | test.c:48:26:48:31 | 3.5E15 | 3.5E15 | file://:0:0:0:0 | double | double | test.c:93:34:93:34 | x | int * x | | test.c:48:3:48:24 | call to declared_with_pointers | Calling $@: argument $@ of type $@ is incompatible with parameter $@. | test.c:5:6:5:27 | declared_with_pointers | declared_with_pointers | test.c:48:34:48:34 | 0 | 0 | file://:0:0:0:0 | int | int | test.c:93:43:93:43 | y | void * y | -| test.c:48:3:48:24 | call to declared_with_pointers | Calling $@: argument $@ of type $@ is incompatible with parameter $@. | test.c:93:6:93:27 | declared_with_pointers | declared_with_pointers | test.c:48:26:48:31 | 3500000000000000.0 | 3500000000000000.0 | file://:0:0:0:0 | double | double | test.c:93:34:93:34 | x | int * x | +| test.c:48:3:48:24 | call to declared_with_pointers | Calling $@: argument $@ of type $@ is incompatible with parameter $@. | test.c:93:6:93:27 | declared_with_pointers | declared_with_pointers | test.c:48:26:48:31 | 3.5E15 | 3.5E15 | file://:0:0:0:0 | double | double | test.c:93:34:93:34 | x | int * x | | test.c:48:3:48:24 | call to declared_with_pointers | Calling $@: argument $@ of type $@ is incompatible with parameter $@. | test.c:93:6:93:27 | declared_with_pointers | declared_with_pointers | test.c:48:34:48:34 | 0 | 0 | file://:0:0:0:0 | int | int | test.c:93:43:93:43 | y | void * y | | test.c:50:3:50:21 | call to declared_with_array | Calling $@: argument $@ of type $@ is incompatible with parameter $@. | test.c:6:6:6:24 | declared_with_array | declared_with_array | test.c:50:23:50:24 | & ... | & ... | file://:0:0:0:0 | int * | int * | test.c:94:31:94:31 | a | char[6] a | | test.c:50:3:50:21 | call to declared_with_array | Calling $@: argument $@ of type $@ is incompatible with parameter $@. | test.c:94:6:94:24 | declared_with_array | declared_with_array | test.c:50:23:50:24 | & ... | & ... | file://:0:0:0:0 | int * | int * | test.c:94:31:94:31 | a | char[6] a | @@ -15,4 +15,4 @@ | test.c:58:3:58:24 | call to defined_with_long_long | Calling $@: argument $@ of type $@ is incompatible with parameter $@. | test.c:104:11:104:32 | defined_with_long_long | defined_with_long_long | test.c:58:26:58:28 | 99 | 99 | file://:0:0:0:0 | int | int | test.c:104:44:104:45 | ll | long long ll | | test.c:59:3:59:24 | call to defined_with_long_long | Calling $@: argument $@ of type $@ is incompatible with parameter $@. | test.c:104:11:104:32 | defined_with_long_long | defined_with_long_long | test.c:59:26:59:26 | 3 | 3 | file://:0:0:0:0 | int | int | test.c:104:44:104:45 | ll | long long ll | | test.c:61:3:61:21 | call to defined_with_double | Calling $@: argument $@ of type $@ is incompatible with parameter $@. | test.c:100:8:100:26 | defined_with_double | defined_with_double | test.c:61:23:61:25 | 2 | 2 | file://:0:0:0:0 | long long | long long | test.c:100:35:100:35 | d | double d | -| test.c:62:3:62:24 | call to defined_with_long_long | Calling $@: argument $@ of type $@ is incompatible with parameter $@. | test.c:104:11:104:32 | defined_with_long_long | defined_with_long_long | test.c:62:26:62:31 | 3500000000000000.0 | 3500000000000000.0 | file://:0:0:0:0 | double | double | test.c:104:44:104:45 | ll | long long ll | +| test.c:62:3:62:24 | call to defined_with_long_long | Calling $@: argument $@ of type $@ is incompatible with parameter $@. | test.c:104:11:104:32 | defined_with_long_long | defined_with_long_long | test.c:62:26:62:31 | 3.5E15 | 3.5E15 | file://:0:0:0:0 | double | double | test.c:104:44:104:45 | ll | long long ll | diff --git a/cpp/ql/test/query-tests/Security/CWE/CWE-311/semmle/tests/test3.cpp b/cpp/ql/test/query-tests/Security/CWE/CWE-311/semmle/tests/test3.cpp index f4bfe5ca3405..35700d229e75 100644 --- a/cpp/ql/test/query-tests/Security/CWE/CWE-311/semmle/tests/test3.cpp +++ b/cpp/ql/test/query-tests/Security/CWE/CWE-311/semmle/tests/test3.cpp @@ -577,3 +577,10 @@ void tests3() str = get_home_address(); send(val(), str, strlen(str), val()); // BAD } + +int fscanf(FILE* stream, const char* format, ... ); + +void test_scanf() { + char password[256]; + fscanf(stdin, "%255s", password); // GOOD: this is not a remote source +} \ No newline at end of file diff --git a/csharp/downgrades/3cabc77473cbbda95edebafea345c2e3fdfa12d9/old.dbscheme b/csharp/downgrades/3cabc77473cbbda95edebafea345c2e3fdfa12d9/old.dbscheme new file mode 100644 index 000000000000..3cabc77473cb --- /dev/null +++ b/csharp/downgrades/3cabc77473cbbda95edebafea345c2e3fdfa12d9/old.dbscheme @@ -0,0 +1,1505 @@ +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2021-07-14 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * csc f1.cs f2.cs f3.cs + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + unique int id : @compilation, + string cwd : string ref +); + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | --compiler + * 1 | *path to compiler* + * 2 | f1.cs + * 3 | f2.cs + * 4 | f3.cs + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile.rsp` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.cs + * 1 | f2.cs + * 2 | f3.cs + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The references used by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs /r:ref1.dll /r:ref2.dll /r:ref3.dll + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | ref1.dll + * 1 | ref2.dll + * 2 | ref3.dll + */ +#keyset[id, num] +compilation_referencing_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location ref +); + +extractor_messages( + unique int id: @extractor_message, + int severity: int ref, + string origin : string ref, + string text : string ref, + string entity : string ref, + int location: @location ref, + string stack_trace : string ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +compilation_assembly( + unique int id : @compilation ref, + int assembly: @assembly ref +) + +// Populated by the CSV extractor +externalData( + int id: @externalDataElement, + string path: string ref, + int column: int ref, + string value: string ref); + +sourceLocationPrefix( + string prefix: string ref); + +/* + * Overlay support + */ + +/** + * The CLI will automatically emit the tuple `databaseMetadata("isOverlay", "true")`, + * along with an `overlayChangedFiles` tuple for each new/modified/deleted file, + * when building an overlay database, and these can be used by the discard predicates. + */ +databaseMetadata( + string metadataKey : string ref, + string value : string ref +); + +overlayChangedFiles( + string path : string ref +); + +/* + * C# dbscheme + */ + +/** ELEMENTS **/ + +@element = @declaration | @stmt | @expr | @modifier | @attribute | @namespace_declaration + | @using_directive | @type_parameter_constraints | @externalDataElement + | @xmllocatable | @asp_element | @namespace | @preprocessor_directive; + +@declaration = @callable | @generic | @assignable | @namespace; + +@named_element = @namespace | @declaration; + +@declaration_with_accessors = @property | @indexer | @event; + +@assignable = @variable | @assignable_with_accessors | @event; + +@assignable_with_accessors = @property | @indexer; + +@attributable = @assembly | @field | @parameter | @operator | @method | @constructor + | @destructor | @callable_accessor | @value_or_ref_type | @declaration_with_accessors + | @local_function | @lambda_expr; + +/** LOCATIONS, ASEMMBLIES, MODULES, FILES and FOLDERS **/ + +@location = @location_default | @assembly; + +@locatable = @declaration_with_accessors | @callable_accessor | @declaration_or_directive + | @diagnostic | @extractor_message | @preprocessor_directive | @attribute | @type_mention | @type_parameter_constraints + | @declaration_with_accessors | @callable_accessor | @operator | @method + | @constructor | @destructor | @field | @local_variable | @parameter | @stmt | @expr + | @xmllocatable | @commentline | @commentblock | @asp_element + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +locations_mapped( + unique int id: @location_default ref, + int mapped_to: @location_default ref); + +@sourceline = @file | @callable | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref); + +assemblies( + unique int id: @assembly, + int file: @file ref, + string fullname: string ref, + string name: string ref, + string version: string ref); + +files( + unique int id: @file, + string name: string ref); + +folders( + unique int id: @folder, + string name: string ref); + +@container = @folder | @file ; + +containerparent( + int parent: @container ref, + unique int child: @container ref); + +file_extraction_mode( + unique int file: @file ref, + int mode: int ref + /* 0 = normal, 1 = standalone extractor */ + ); + +/** NAMESPACES **/ + +@type_container = @namespace | @type; + +namespaces( + unique int id: @namespace, + string name: string ref); + +namespace_declarations( + unique int id: @namespace_declaration, + int namespace_id: @namespace ref); + +namespace_declaration_location( + unique int id: @namespace_declaration ref, + int loc: @location ref); + +parent_namespace( + unique int child_id: @type_container ref, + int namespace_id: @namespace ref); + +@declaration_or_directive = @namespace_declaration | @type | @using_directive; + +parent_namespace_declaration( + int child_id: @declaration_or_directive ref, // cannot be unique because of partial classes + int namespace_id: @namespace_declaration ref); + +@using_directive = @using_namespace_directive | @using_static_directive; + +using_global( + unique int id: @using_directive ref +); + +using_namespace_directives( + unique int id: @using_namespace_directive, + int namespace_id: @namespace ref); + +using_static_directives( + unique int id: @using_static_directive, + int type_id: @type_or_ref ref); + +using_directive_location( + unique int id: @using_directive ref, + int loc: @location ref); + +@preprocessor_directive = @pragma_warning | @pragma_checksum | @directive_define | @directive_undefine | @directive_warning + | @directive_error | @directive_nullable | @directive_line | @directive_region | @directive_endregion | @directive_if + | @directive_elif | @directive_else | @directive_endif; + +@conditional_directive = @directive_if | @directive_elif; +@branch_directive = @directive_if | @directive_elif | @directive_else; + +directive_ifs( + unique int id: @directive_if, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref); /* 0: false, 1: true */ + +directive_elifs( + unique int id: @directive_elif, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +directive_elses( + unique int id: @directive_else, + int branchTaken: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +#keyset[id, start] +directive_endifs( + unique int id: @directive_endif, + unique int start: @directive_if ref); + +directive_define_symbols( + unique int id: @define_symbol_expr ref, + string name: string ref); + +directive_regions( + unique int id: @directive_region, + string name: string ref); + +#keyset[id, start] +directive_endregions( + unique int id: @directive_endregion, + unique int start: @directive_region ref); + +directive_lines( + unique int id: @directive_line, + int kind: int ref); /* 0: default, 1: hidden, 2: numeric, 3: span */ + +directive_line_value( + unique int id: @directive_line ref, + int line: int ref); + +directive_line_file( + unique int id: @directive_line ref, + int file: @file ref); + +directive_line_offset( + unique int id: @directive_line ref, + int offset: int ref); + +directive_line_span( + unique int id: @directive_line ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +directive_nullables( + unique int id: @directive_nullable, + int setting: int ref, /* 0: disable, 1: enable, 2: restore */ + int target: int ref); /* 0: none, 1: annotations, 2: warnings */ + +directive_warnings( + unique int id: @directive_warning, + string message: string ref); + +directive_errors( + unique int id: @directive_error, + string message: string ref); + +directive_undefines( + unique int id: @directive_undefine, + string name: string ref); + +directive_defines( + unique int id: @directive_define, + string name: string ref); + +pragma_checksums( + unique int id: @pragma_checksum, + int file: @file ref, + string guid: string ref, + string bytes: string ref); + +pragma_warnings( + unique int id: @pragma_warning, + int kind: int ref /* 0 = disable, 1 = restore */); + +#keyset[id, index] +pragma_warning_error_codes( + int id: @pragma_warning ref, + string errorCode: string ref, + int index: int ref); + +preprocessor_directive_location( + unique int id: @preprocessor_directive ref, + int loc: @location ref); + +preprocessor_directive_compilation( + int id: @preprocessor_directive ref, + int compilation: @compilation ref); + +preprocessor_directive_active( + unique int id: @preprocessor_directive ref, + int active: int ref); /* 0: false, 1: true */ + +/** TYPES **/ + +types( + unique int id: @type, + int kind: int ref, + string name: string ref); + +case @type.kind of + 1 = @bool_type +| 2 = @char_type +| 3 = @decimal_type +| 4 = @sbyte_type +| 5 = @short_type +| 6 = @int_type +| 7 = @long_type +| 8 = @byte_type +| 9 = @ushort_type +| 10 = @uint_type +| 11 = @ulong_type +| 12 = @float_type +| 13 = @double_type +| 14 = @enum_type +| 15 = @struct_type +| 17 = @class_type +| 19 = @interface_type +| 20 = @delegate_type +| 21 = @null_type +| 22 = @type_parameter +| 23 = @pointer_type +| 24 = @nullable_type +| 25 = @array_type +| 26 = @void_type +| 27 = @int_ptr_type +| 28 = @uint_ptr_type +| 29 = @dynamic_type +| 30 = @arglist_type +| 31 = @unknown_type +| 32 = @tuple_type +| 33 = @function_pointer_type +| 34 = @inline_array_type +| 35 = @extension_type + ; + +@simple_type = @bool_type | @char_type | @integral_type | @floating_point_type | @decimal_type; +@integral_type = @signed_integral_type | @unsigned_integral_type; +@signed_integral_type = @sbyte_type | @short_type | @int_type | @long_type; +@unsigned_integral_type = @byte_type | @ushort_type | @uint_type | @ulong_type; +@floating_point_type = @float_type | @double_type; +@value_type = @simple_type | @enum_type | @struct_type | @nullable_type | @int_ptr_type + | @uint_ptr_type | @tuple_type | @void_type | @inline_array_type; +@ref_type = @class_type | @interface_type | @array_type | @delegate_type | @null_type + | @dynamic_type | @extension_type; +@value_or_ref_type = @value_type | @ref_type; + +typerefs( + unique int id: @typeref, + string name: string ref); + +typeref_type( + int id: @typeref ref, + unique int typeId: @type ref); + +@type_or_ref = @type | @typeref; + +array_element_type( + unique int array: @array_type ref, + int dimension: int ref, + int rank: int ref, + int element: @type_or_ref ref); + +nullable_underlying_type( + unique int nullable: @nullable_type ref, + int underlying: @type_or_ref ref); + +pointer_referent_type( + unique int pointer: @pointer_type ref, + int referent: @type_or_ref ref); + +enum_underlying_type( + unique int enum_id: @enum_type ref, + int underlying_type_id: @type_or_ref ref); + +delegate_return_type( + unique int delegate_id: @delegate_type ref, + int return_type_id: @type_or_ref ref); + +function_pointer_return_type( + unique int function_pointer_id: @function_pointer_type ref, + int return_type_id: @type_or_ref ref); + +extension_receiver_type( + unique int extension: @extension_type ref, + int receiver_type_id: @type_or_ref ref); + +extend( + int sub: @type ref, + int super: @type_or_ref ref); + +anonymous_types( + unique int id: @type ref); + +@interface_or_ref = @interface_type | @typeref; + +implement( + int sub: @type ref, + int super: @type_or_ref ref); + +type_location( + int id: @type ref, + int loc: @location ref); + +tuple_underlying_type( + unique int tuple: @tuple_type ref, + int struct: @type_or_ref ref); + +#keyset[tuple, index] +tuple_element( + int tuple: @tuple_type ref, + int index: int ref, + unique int field: @field ref); + +attributes( + unique int id: @attribute, + int kind: int ref, + int type_id: @type_or_ref ref, + int target: @attributable ref); + +case @attribute.kind of + 0 = @attribute_default +| 1 = @attribute_return +| 2 = @attribute_assembly +| 3 = @attribute_module +; + +attribute_location( + int id: @attribute ref, + int loc: @location ref); + +@type_mention_parent = @element | @type_mention; + +type_mention( + unique int id: @type_mention, + int type_id: @type_or_ref ref, + int parent: @type_mention_parent ref); + +type_mention_location( + unique int id: @type_mention ref, + int loc: @location ref); + +@has_type_annotation = @assignable | @type_parameter | @callable | @expr | @delegate_type | @generic | @function_pointer_type; + +/** + * A direct annotation on an entity, for example `string? x;`. + * + * Annotations: + * 2 = reftype is not annotated "!" + * 3 = reftype is annotated "?" + * 4 = readonly ref type / in parameter + * 5 = ref type parameter, return or local variable + * 6 = out parameter + * + * Note that the annotation depends on the element it annotates. + * @assignable: The annotation is on the type of the assignable, for example the variable type. + * @type_parameter: The annotation is on the reftype constraint + * @callable: The annotation is on the return type + * @array_type: The annotation is on the element type + */ +type_annotation(int id: @has_type_annotation ref, int annotation: int ref); + +nullability(unique int nullability: @nullability, int kind: int ref); + +case @nullability.kind of + 0 = @oblivious +| 1 = @not_annotated +| 2 = @annotated +; + +#keyset[parent, index] +nullability_parent(int nullability: @nullability ref, int index: int ref, int parent: @nullability ref) + +type_nullability(int id: @has_type_annotation ref, int nullability: @nullability ref); + +/** + * The nullable flow state of an expression, as determined by Roslyn. + * 0 = none (default, not populated) + * 1 = not null + * 2 = maybe null + */ +expr_flowstate(unique int id: @expr ref, int state: int ref); + +/** GENERICS **/ + +@generic = @type | @method | @local_function; + +type_parameters( + unique int id: @type_parameter ref, + int index: int ref, + int generic_id: @generic ref, + int variance: int ref /* none = 0, out = 1, in = 2 */); + +#keyset[constructed_id, index] +type_arguments( + int id: @type_or_ref ref, + int index: int ref, + int constructed_id: @generic_or_ref ref); + +@generic_or_ref = @generic | @typeref; + +constructed_generic( + unique int constructed: @generic ref, + int generic: @generic_or_ref ref); + +type_parameter_constraints( + unique int id: @type_parameter_constraints, + int param_id: @type_parameter ref); + +type_parameter_constraints_location( + int id: @type_parameter_constraints ref, + int loc: @location ref); + +general_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int kind: int ref /* class = 1, struct = 2, new = 3 */); + +specific_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref); + +specific_type_parameter_nullability( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref, + int nullability: @nullability ref); + +/** FUNCTION POINTERS */ + +function_pointer_calling_conventions( + int id: @function_pointer_type ref, + int kind: int ref); + +#keyset[id, index] +has_unmanaged_calling_conventions( + int id: @function_pointer_type ref, + int index: int ref, + int conv_id: @type_or_ref ref); + +/** MODIFIERS */ + +@modifiable = @modifiable_direct | @event_accessor; + +@modifiable_direct = @member | @accessor | @local_function | @anonymous_function_expr; + +modifiers( + unique int id: @modifier, + string name: string ref); + +has_modifiers( + int id: @modifiable_direct ref, + int mod_id: @modifier ref); + +/** MEMBERS **/ + +@member = @method | @constructor | @destructor | @field | @property | @event | @operator | @indexer | @type; + +@named_exprorstmt = @goto_stmt | @labeled_stmt | @expr; + +@virtualizable = @method | @property | @indexer | @event | @operator; + +exprorstmt_name( + unique int parent_id: @named_exprorstmt ref, + string name: string ref); + +nested_types( + unique int id: @type ref, + int declaring_type_id: @type ref, + int unbound_id: @type ref); + +properties( + unique int id: @property, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @property ref); + +property_location( + int id: @property ref, + int loc: @location ref); + +indexers( + unique int id: @indexer, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @indexer ref); + +indexer_location( + int id: @indexer ref, + int loc: @location ref); + +accessors( + unique int id: @accessor, + int kind: int ref, + string name: string ref, + int declaring_member_id: @member ref, + int unbound_id: @accessor ref); + +case @accessor.kind of + 1 = @getter +| 2 = @setter + ; + +init_only_accessors( + unique int id: @accessor ref); + +accessor_location( + int id: @accessor ref, + int loc: @location ref); + +events( + unique int id: @event, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @event ref); + +event_location( + int id: @event ref, + int loc: @location ref); + +event_accessors( + unique int id: @event_accessor, + int kind: int ref, + string name: string ref, + int declaring_event_id: @event ref, + int unbound_id: @event_accessor ref); + +case @event_accessor.kind of + 1 = @add_event_accessor +| 2 = @remove_event_accessor + ; + +event_accessor_location( + int id: @event_accessor ref, + int loc: @location ref); + +operators( + unique int id: @operator, + string name: string ref, + string symbol: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @operator ref); + +operator_location( + int id: @operator ref, + int loc: @location ref); + +constant_value( + int id: @variable ref, + string value: string ref); + +/** CALLABLES **/ + +@callable = @method | @constructor | @destructor | @operator | @callable_accessor | @anonymous_function_expr | @local_function; + +@callable_accessor = @accessor | @event_accessor; + +methods( + unique int id: @method, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @method ref); + +method_location( + int id: @method ref, + int loc: @location ref); + +constructors( + unique int id: @constructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @constructor ref); + +constructor_location( + int id: @constructor ref, + int loc: @location ref); + +destructors( + unique int id: @destructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @destructor ref); + +destructor_location( + int id: @destructor ref, + int loc: @location ref); + +overrides( + int id: @callable ref, + int base_id: @callable ref); + +explicitly_implements( + int id: @member ref, + int interface_id: @interface_or_ref ref); + +local_functions( + unique int id: @local_function, + string name: string ref, + int return_type: @type ref, + int unbound_id: @local_function ref); + +local_function_stmts( + unique int fn: @local_function_stmt ref, + int stmt: @local_function ref); + +/** VARIABLES **/ + +@variable = @local_scope_variable | @field; + +@local_scope_variable = @local_variable | @parameter; + +fields( + unique int id: @field, + int kind: int ref, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @field ref); + +case @field.kind of + 1 = @addressable_field +| 2 = @constant + ; + +field_location( + int id: @field ref, + int loc: @location ref); + +localvars( + unique int id: @local_variable, + int kind: int ref, + string name: string ref, + int implicitly_typed: int ref /* 0 = no, 1 = yes */, + int type_id: @type_or_ref ref, + int parent_id: @local_var_decl_expr ref); + +case @local_variable.kind of + 1 = @addressable_local_variable +| 2 = @local_constant +| 3 = @local_variable_ref + ; + +localvar_location( + unique int id: @local_variable ref, + int loc: @location ref); + +@parameterizable = @callable | @delegate_type | @indexer | @function_pointer_type | @extension_type; + +#keyset[name, parent_id] +#keyset[index, parent_id] +params( + unique int id: @parameter, + string name: string ref, + int type_id: @type_or_ref ref, + int index: int ref, + int mode: int ref, /* value = 0, ref = 1, out = 2, params/array = 3, this = 4, in = 5, ref readonly = 6 */ + int parent_id: @parameterizable ref, + int unbound_id: @parameter ref); + +param_location( + int id: @parameter ref, + int loc: @location ref); + +@has_scoped_annotation = @local_scope_variable + +scoped_annotation( + int id: @has_scoped_annotation ref, + int kind: int ref // scoped ref = 1, scoped value = 2 + ); + +/** STATEMENTS **/ + +@exprorstmt_parent = @control_flow_element | @top_level_exprorstmt_parent; + +statements( + unique int id: @stmt, + int kind: int ref); + +#keyset[index, parent] +stmt_parent( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_stmt_parent = @callable; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +stmt_parent_top_level( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @top_level_stmt_parent ref); + +case @stmt.kind of + 1 = @block_stmt +| 2 = @expr_stmt +| 3 = @if_stmt +| 4 = @switch_stmt +| 5 = @while_stmt +| 6 = @do_stmt +| 7 = @for_stmt +| 8 = @foreach_stmt +| 9 = @break_stmt +| 10 = @continue_stmt +| 11 = @goto_stmt +| 12 = @goto_case_stmt +| 13 = @goto_default_stmt +| 14 = @throw_stmt +| 15 = @return_stmt +| 16 = @yield_stmt +| 17 = @try_stmt +| 18 = @checked_stmt +| 19 = @unchecked_stmt +| 20 = @lock_stmt +| 21 = @using_block_stmt +| 22 = @var_decl_stmt +| 23 = @const_decl_stmt +| 24 = @empty_stmt +| 25 = @unsafe_stmt +| 26 = @fixed_stmt +| 27 = @label_stmt +| 28 = @catch +| 29 = @case_stmt +| 30 = @local_function_stmt +| 31 = @using_decl_stmt + ; + +@using_stmt = @using_block_stmt | @using_decl_stmt; + +@labeled_stmt = @label_stmt | @case; + +@decl_stmt = @var_decl_stmt | @const_decl_stmt | @using_decl_stmt; + +@cond_stmt = @if_stmt | @switch_stmt; + +@loop_stmt = @while_stmt | @do_stmt | @for_stmt | @foreach_stmt; + +@jump_stmt = @break_stmt | @goto_any_stmt | @continue_stmt | @throw_stmt | @return_stmt + | @yield_stmt; + +@goto_any_stmt = @goto_default_stmt | @goto_case_stmt | @goto_stmt; + + +stmt_location( + unique int id: @stmt ref, + int loc: @location ref); + +catch_type( + unique int catch_id: @catch ref, + int type_id: @type_or_ref ref, + int kind: int ref /* explicit = 1, implicit = 2 */); + +foreach_stmt_info( + unique int id: @foreach_stmt ref, + int kind: int ref /* non-async = 1, async = 2 */); + +@foreach_symbol = @method | @property | @type_or_ref; + +#keyset[id, kind] +foreach_stmt_desugar( + int id: @foreach_stmt ref, + int symbol: @foreach_symbol ref, + int kind: int ref /* GetEnumeratorMethod = 1, CurrentProperty = 2, MoveNextMethod = 3, DisposeMethod = 4, ElementType = 5 */); + +/** EXPRESSIONS **/ + +expressions( + unique int id: @expr, + int kind: int ref, + int type_id: @type_or_ref ref); + +#keyset[index, parent] +expr_parent( + unique int expr: @expr ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_expr_parent = @attribute | @field | @property | @indexer | @parameter | @directive_if | @directive_elif; + +@top_level_exprorstmt_parent = @top_level_expr_parent | @top_level_stmt_parent; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +expr_parent_top_level( + unique int expr: @expr ref, + int index: int ref, + int parent: @top_level_exprorstmt_parent ref); + +case @expr.kind of +/* literal */ + 1 = @bool_literal_expr +| 2 = @char_literal_expr +| 3 = @decimal_literal_expr +| 4 = @int_literal_expr +| 5 = @long_literal_expr +| 6 = @uint_literal_expr +| 7 = @ulong_literal_expr +| 8 = @float_literal_expr +| 9 = @double_literal_expr +| 10 = @utf16_string_literal_expr +| 11 = @null_literal_expr +/* primary & unary */ +| 12 = @this_access_expr +| 13 = @base_access_expr +| 14 = @local_variable_access_expr +| 15 = @parameter_access_expr +| 16 = @field_access_expr +| 17 = @property_access_expr +| 18 = @method_access_expr +| 19 = @event_access_expr +| 20 = @indexer_access_expr +| 21 = @array_access_expr +| 22 = @type_access_expr +| 23 = @typeof_expr +| 24 = @method_invocation_expr +| 25 = @delegate_invocation_expr +| 26 = @operator_invocation_expr +| 27 = @cast_expr +| 28 = @object_creation_expr +| 29 = @explicit_delegate_creation_expr +| 30 = @implicit_delegate_creation_expr +| 31 = @array_creation_expr +| 32 = @default_expr +| 33 = @plus_expr +| 34 = @minus_expr +| 35 = @bit_not_expr +| 36 = @log_not_expr +| 37 = @post_incr_expr +| 38 = @post_decr_expr +| 39 = @pre_incr_expr +| 40 = @pre_decr_expr +/* multiplicative */ +| 41 = @mul_expr +| 42 = @div_expr +| 43 = @rem_expr +/* additive */ +| 44 = @add_expr +| 45 = @sub_expr +/* shift */ +| 46 = @lshift_expr +| 47 = @rshift_expr +/* relational */ +| 48 = @lt_expr +| 49 = @gt_expr +| 50 = @le_expr +| 51 = @ge_expr +/* equality */ +| 52 = @eq_expr +| 53 = @ne_expr +/* logical */ +| 54 = @bit_and_expr +| 55 = @bit_xor_expr +| 56 = @bit_or_expr +| 57 = @log_and_expr +| 58 = @log_or_expr +/* type testing */ +| 59 = @is_expr +| 60 = @as_expr +/* null coalescing */ +| 61 = @null_coalescing_expr +/* conditional */ +| 62 = @conditional_expr +/* assignment */ +| 63 = @simple_assign_expr +| 64 = @assign_add_expr +| 65 = @assign_sub_expr +| 66 = @assign_mul_expr +| 67 = @assign_div_expr +| 68 = @assign_rem_expr +| 69 = @assign_and_expr +| 70 = @assign_xor_expr +| 71 = @assign_or_expr +| 72 = @assign_lshift_expr +| 73 = @assign_rshift_expr +/* more */ +| 74 = @object_init_expr +| 75 = @collection_init_expr +| 76 = @array_init_expr +| 77 = @checked_expr +| 78 = @unchecked_expr +| 79 = @constructor_init_expr +| 80 = @add_event_expr +| 81 = @remove_event_expr +| 82 = @par_expr +| 83 = @local_var_decl_expr +| 84 = @lambda_expr +| 85 = @anonymous_method_expr +| 86 = @namespace_expr +/* dynamic */ +| 92 = @dynamic_element_access_expr +| 93 = @dynamic_member_access_expr +/* unsafe */ +| 100 = @pointer_indirection_expr +| 101 = @address_of_expr +| 102 = @sizeof_expr +/* async */ +| 103 = @await_expr +/* C# 6.0 */ +| 104 = @nameof_expr +| 105 = @interpolated_string_expr +| 106 = @unknown_expr +/* C# 7.0 */ +| 107 = @throw_expr +| 108 = @tuple_expr +| 109 = @local_function_invocation_expr +| 110 = @ref_expr +| 111 = @discard_expr +/* C# 8.0 */ +| 112 = @range_expr +| 113 = @index_expr +| 114 = @switch_expr +| 115 = @recursive_pattern_expr +| 116 = @property_pattern_expr +| 117 = @positional_pattern_expr +| 118 = @switch_case_expr +| 119 = @assign_coalesce_expr +| 120 = @suppress_nullable_warning_expr +| 121 = @namespace_access_expr +/* C# 9.0 */ +| 122 = @lt_pattern_expr +| 123 = @gt_pattern_expr +| 124 = @le_pattern_expr +| 125 = @ge_pattern_expr +| 126 = @not_pattern_expr +| 127 = @and_pattern_expr +| 128 = @or_pattern_expr +| 129 = @function_pointer_invocation_expr +| 130 = @with_expr +/* C# 11.0 */ +| 131 = @list_pattern_expr +| 132 = @slice_pattern_expr +| 133 = @urshift_expr +| 134 = @assign_urshift_expr +| 135 = @utf8_string_literal_expr +/* C# 12.0 */ +| 136 = @collection_expr +| 137 = @spread_element_expr +| 138 = @interpolated_string_insert_expr +/* Preprocessor */ +| 999 = @define_symbol_expr +; + +@switch = @switch_stmt | @switch_expr; +@case = @case_stmt | @switch_case_expr; +@pattern_match = @case | @is_expr; +@unary_pattern_expr = @not_pattern_expr; +@relational_pattern_expr = @gt_pattern_expr | @lt_pattern_expr | @ge_pattern_expr | @le_pattern_expr; +@binary_pattern_expr = @and_pattern_expr | @or_pattern_expr; + +@integer_literal_expr = @int_literal_expr | @long_literal_expr | @uint_literal_expr | @ulong_literal_expr; +@real_literal_expr = @float_literal_expr | @double_literal_expr | @decimal_literal_expr; +@string_literal_expr = @utf16_string_literal_expr | @utf8_string_literal_expr; +@literal_expr = @bool_literal_expr | @char_literal_expr | @integer_literal_expr | @real_literal_expr + | @string_literal_expr | @null_literal_expr; + +@assign_expr = @simple_assign_expr | @assign_op_expr | @local_var_decl_expr; +@assign_op_call_expr = @assign_arith_expr | @assign_bitwise_expr +@assign_op_expr = @assign_op_call_expr | @assign_event_expr | @assign_coalesce_expr; +@assign_event_expr = @add_event_expr | @remove_event_expr; + +@add_operation = @add_expr | @assign_add_expr; +@sub_operation = @sub_expr | @assign_sub_expr; +@mul_operation = @mul_expr | @assign_mul_expr; +@div_operation = @div_expr | @assign_div_expr; +@rem_operation = @rem_expr | @assign_rem_expr; +@and_operation = @bit_and_expr | @assign_and_expr; +@xor_operation = @bit_xor_expr | @assign_xor_expr; +@or_operation = @bit_or_expr | @assign_or_expr; +@lshift_operation = @lshift_expr | @assign_lshift_expr; +@rshift_operation = @rshift_expr | @assign_rshift_expr; +@urshift_operation = @urshift_expr | @assign_urshift_expr; +@null_coalescing_operation = @null_coalescing_expr | @assign_coalesce_expr; + +@assign_arith_expr = @assign_add_expr | @assign_sub_expr | @assign_mul_expr | @assign_div_expr + | @assign_rem_expr +@assign_bitwise_expr = @assign_and_expr | @assign_or_expr | @assign_xor_expr + | @assign_lshift_expr | @assign_rshift_expr | @assign_urshift_expr; + +@member_access_expr = @field_access_expr | @property_access_expr | @indexer_access_expr | @event_access_expr + | @method_access_expr | @type_access_expr | @dynamic_member_access_expr; +@access_expr = @member_access_expr | @this_access_expr | @base_access_expr | @assignable_access_expr | @namespace_access_expr; +@element_access_expr = @indexer_access_expr | @array_access_expr | @dynamic_element_access_expr; + +@local_variable_access = @local_variable_access_expr | @local_var_decl_expr; +@local_scope_variable_access_expr = @parameter_access_expr | @local_variable_access; +@variable_access_expr = @local_scope_variable_access_expr | @field_access_expr; + +@assignable_access_expr = @variable_access_expr | @property_access_expr | @element_access_expr + | @event_access_expr | @dynamic_member_access_expr; + +@objectorcollection_init_expr = @object_init_expr | @collection_init_expr; + +@delegate_creation_expr = @explicit_delegate_creation_expr | @implicit_delegate_creation_expr; + +@bin_arith_op_expr = @mul_expr | @div_expr | @rem_expr | @add_expr | @sub_expr; +@incr_op_expr = @pre_incr_expr | @post_incr_expr; +@decr_op_expr = @pre_decr_expr | @post_decr_expr; +@mut_op_expr = @incr_op_expr | @decr_op_expr; +@un_arith_op_expr = @plus_expr | @minus_expr | @mut_op_expr; +@arith_op_expr = @bin_arith_op_expr | @un_arith_op_expr; + +@ternary_log_op_expr = @conditional_expr; +@bin_log_op_expr = @log_and_expr | @log_or_expr | @null_coalescing_expr; +@un_log_op_expr = @log_not_expr; +@log_expr = @un_log_op_expr | @bin_log_op_expr | @ternary_log_op_expr; + +@bin_bit_op_expr = @bit_and_expr | @bit_or_expr | @bit_xor_expr | @lshift_expr + | @rshift_expr | @urshift_expr; +@un_bit_op_expr = @bit_not_expr; +@bit_expr = @un_bit_op_expr | @bin_bit_op_expr; + +@equality_op_expr = @eq_expr | @ne_expr; +@rel_op_expr = @gt_expr | @lt_expr| @ge_expr | @le_expr; +@comp_expr = @equality_op_expr | @rel_op_expr; + +@op_expr = @un_op | @bin_op | @ternary_op; + +@ternary_op = @ternary_log_op_expr; +@bin_op = @assign_expr | @bin_arith_op_expr | @bin_log_op_expr | @bin_bit_op_expr | @comp_expr; +@un_op = @un_arith_op_expr | @un_log_op_expr | @un_bit_op_expr | @sizeof_expr + | @pointer_indirection_expr | @address_of_expr; + +@anonymous_function_expr = @lambda_expr | @anonymous_method_expr; + +@op_invoke_expr = @operator_invocation_expr | @assign_op_call_expr +@call = @method_invocation_expr | @constructor_init_expr | @op_invoke_expr + | @delegate_invocation_expr | @object_creation_expr | @call_access_expr + | @local_function_invocation_expr | @function_pointer_invocation_expr; + +@call_access_expr = @property_access_expr | @event_access_expr | @indexer_access_expr; + +@late_bindable_expr = @dynamic_element_access_expr | @dynamic_member_access_expr + | @object_creation_expr | @method_invocation_expr | @op_invoke_expr; + +@throw_element = @throw_expr | @throw_stmt; + +@implicitly_typeable_object_creation_expr = @object_creation_expr | @explicit_delegate_creation_expr; + +implicitly_typed_array_creation( + unique int id: @array_creation_expr ref); + +explicitly_sized_array_creation( + unique int id: @array_creation_expr ref); + +stackalloc_array_creation( + unique int id: @array_creation_expr ref); + +implicitly_typed_object_creation( + unique int id: @implicitly_typeable_object_creation_expr ref); + +mutator_invocation_mode( + unique int id: @operator_invocation_expr ref, + int mode: int ref /* prefix = 1, postfix = 2*/); + +expr_value( + unique int id: @expr ref, + string value: string ref); + +expr_call( + unique int caller_id: @expr ref, + int target_id: @callable ref); + +expr_access( + unique int accesser_id: @access_expr ref, + int target_id: @accessible ref); + +@accessible = @method | @assignable | @local_function | @namespace; + +expr_location( + unique int id: @expr ref, + int loc: @location ref); + +dynamic_member_name( + unique int id: @late_bindable_expr ref, + string name: string ref); + +@qualifiable_expr = @member_access_expr + | @method_invocation_expr + | @element_access_expr + | @assign_op_call_expr; + +conditional_access( + unique int id: @qualifiable_expr ref); + +expr_argument( + unique int id: @expr ref, + int mode: int ref); + /* mode is the same as params: value = 0, ref = 1, out = 2 */ + +expr_argument_name( + unique int id: @expr ref, + string name: string ref); + +lambda_expr_return_type( + unique int id: @lambda_expr ref, + int type_id: @type_or_ref ref); + +/* Compiler generated */ + +compiler_generated(unique int id: @element ref); + +/** CONTROL/DATA FLOW **/ + +@control_flow_element = @stmt | @expr | @parameter; + +/* XML Files */ + +xmlEncoding ( + unique int id: @file ref, + string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* Comments */ + +commentline( + unique int id: @commentline, + int kind: int ref, + string text: string ref, + string rawtext: string ref); + +case @commentline.kind of + 0 = @singlelinecomment +| 1 = @xmldoccomment +| 2 = @multilinecomment; + +commentline_location( + unique int id: @commentline ref, + int loc: @location ref); + +commentblock( + unique int id : @commentblock); + +commentblock_location( + unique int id: @commentblock ref, + int loc: @location ref); + +commentblock_binding( + int id: @commentblock ref, + int entity: @element ref, + int bindtype: int ref); /* 0: Parent, 1: Best, 2: Before, 3: After */ + +commentblock_child( + int id: @commentblock ref, + int commentline: @commentline ref, + int index: int ref); + +/* ASP.NET */ + +case @asp_element.kind of + 0=@asp_close_tag +| 1=@asp_code +| 2=@asp_comment +| 3=@asp_data_binding +| 4=@asp_directive +| 5=@asp_open_tag +| 6=@asp_quoted_string +| 7=@asp_text +| 8=@asp_xml_directive; + +@asp_attribute = @asp_code | @asp_data_binding | @asp_quoted_string; + +asp_elements( + unique int id: @asp_element, + int kind: int ref, + int loc: @location ref); + +asp_comment_server(unique int comment: @asp_comment ref); +asp_code_inline(unique int code: @asp_code ref); +asp_directive_attribute( + int directive: @asp_directive ref, + int index: int ref, + string name: string ref, + int value: @asp_quoted_string ref); +asp_directive_name( + unique int directive: @asp_directive ref, + string name: string ref); +asp_element_body( + unique int element: @asp_element ref, + string body: string ref); +asp_tag_attribute( + int tag: @asp_open_tag ref, + int index: int ref, + string name: string ref, + int attribute: @asp_attribute ref); +asp_tag_name( + unique int tag: @asp_open_tag ref, + string name: string ref); +asp_tag_isempty(int tag: @asp_open_tag ref); diff --git a/csharp/downgrades/3cabc77473cbbda95edebafea345c2e3fdfa12d9/semmlecode.csharp.dbscheme b/csharp/downgrades/3cabc77473cbbda95edebafea345c2e3fdfa12d9/semmlecode.csharp.dbscheme new file mode 100644 index 000000000000..ea7ad33252e5 --- /dev/null +++ b/csharp/downgrades/3cabc77473cbbda95edebafea345c2e3fdfa12d9/semmlecode.csharp.dbscheme @@ -0,0 +1,1505 @@ +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2021-07-14 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * csc f1.cs f2.cs f3.cs + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + unique int id : @compilation, + string cwd : string ref +); + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | --compiler + * 1 | *path to compiler* + * 2 | f1.cs + * 3 | f2.cs + * 4 | f3.cs + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile.rsp` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.cs + * 1 | f2.cs + * 2 | f3.cs + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The references used by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs /r:ref1.dll /r:ref2.dll /r:ref3.dll + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | ref1.dll + * 1 | ref2.dll + * 2 | ref3.dll + */ +#keyset[id, num] +compilation_referencing_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location ref +); + +extractor_messages( + unique int id: @extractor_message, + int severity: int ref, + string origin : string ref, + string text : string ref, + string entity : string ref, + int location: @location ref, + string stack_trace : string ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +compilation_assembly( + unique int id : @compilation ref, + int assembly: @assembly ref +) + +// Populated by the CSV extractor +externalData( + int id: @externalDataElement, + string path: string ref, + int column: int ref, + string value: string ref); + +sourceLocationPrefix( + string prefix: string ref); + +/* + * Overlay support + */ + +/** + * The CLI will automatically emit the tuple `databaseMetadata("isOverlay", "true")`, + * along with an `overlayChangedFiles` tuple for each new/modified/deleted file, + * when building an overlay database, and these can be used by the discard predicates. + */ +databaseMetadata( + string metadataKey : string ref, + string value : string ref +); + +overlayChangedFiles( + string path : string ref +); + +/* + * C# dbscheme + */ + +/** ELEMENTS **/ + +@element = @declaration | @stmt | @expr | @modifier | @attribute | @namespace_declaration + | @using_directive | @type_parameter_constraints | @externalDataElement + | @xmllocatable | @asp_element | @namespace | @preprocessor_directive; + +@declaration = @callable | @generic | @assignable | @namespace; + +@named_element = @namespace | @declaration; + +@declaration_with_accessors = @property | @indexer | @event; + +@assignable = @variable | @assignable_with_accessors | @event; + +@assignable_with_accessors = @property | @indexer; + +@attributable = @assembly | @field | @parameter | @operator | @method | @constructor + | @destructor | @callable_accessor | @value_or_ref_type | @declaration_with_accessors + | @local_function | @lambda_expr; + +/** LOCATIONS, ASEMMBLIES, MODULES, FILES and FOLDERS **/ + +@location = @location_default | @assembly; + +@locatable = @declaration_with_accessors | @callable_accessor | @declaration_or_directive + | @diagnostic | @extractor_message | @preprocessor_directive | @attribute | @type_mention | @type_parameter_constraints + | @declaration_with_accessors | @callable_accessor | @operator | @method + | @constructor | @destructor | @field | @local_variable | @parameter | @stmt | @expr + | @xmllocatable | @commentline | @commentblock | @asp_element + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +locations_mapped( + unique int id: @location_default ref, + int mapped_to: @location_default ref); + +@sourceline = @file | @callable | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref); + +assemblies( + unique int id: @assembly, + int file: @file ref, + string fullname: string ref, + string name: string ref, + string version: string ref); + +files( + unique int id: @file, + string name: string ref); + +folders( + unique int id: @folder, + string name: string ref); + +@container = @folder | @file ; + +containerparent( + int parent: @container ref, + unique int child: @container ref); + +file_extraction_mode( + unique int file: @file ref, + int mode: int ref + /* 0 = normal, 1 = standalone extractor */ + ); + +/** NAMESPACES **/ + +@type_container = @namespace | @type; + +namespaces( + unique int id: @namespace, + string name: string ref); + +namespace_declarations( + unique int id: @namespace_declaration, + int namespace_id: @namespace ref); + +namespace_declaration_location( + unique int id: @namespace_declaration ref, + int loc: @location ref); + +parent_namespace( + unique int child_id: @type_container ref, + int namespace_id: @namespace ref); + +@declaration_or_directive = @namespace_declaration | @type | @using_directive; + +parent_namespace_declaration( + int child_id: @declaration_or_directive ref, // cannot be unique because of partial classes + int namespace_id: @namespace_declaration ref); + +@using_directive = @using_namespace_directive | @using_static_directive; + +using_global( + unique int id: @using_directive ref +); + +using_namespace_directives( + unique int id: @using_namespace_directive, + int namespace_id: @namespace ref); + +using_static_directives( + unique int id: @using_static_directive, + int type_id: @type_or_ref ref); + +using_directive_location( + unique int id: @using_directive ref, + int loc: @location ref); + +@preprocessor_directive = @pragma_warning | @pragma_checksum | @directive_define | @directive_undefine | @directive_warning + | @directive_error | @directive_nullable | @directive_line | @directive_region | @directive_endregion | @directive_if + | @directive_elif | @directive_else | @directive_endif; + +@conditional_directive = @directive_if | @directive_elif; +@branch_directive = @directive_if | @directive_elif | @directive_else; + +directive_ifs( + unique int id: @directive_if, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref); /* 0: false, 1: true */ + +directive_elifs( + unique int id: @directive_elif, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +directive_elses( + unique int id: @directive_else, + int branchTaken: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +#keyset[id, start] +directive_endifs( + unique int id: @directive_endif, + unique int start: @directive_if ref); + +directive_define_symbols( + unique int id: @define_symbol_expr ref, + string name: string ref); + +directive_regions( + unique int id: @directive_region, + string name: string ref); + +#keyset[id, start] +directive_endregions( + unique int id: @directive_endregion, + unique int start: @directive_region ref); + +directive_lines( + unique int id: @directive_line, + int kind: int ref); /* 0: default, 1: hidden, 2: numeric, 3: span */ + +directive_line_value( + unique int id: @directive_line ref, + int line: int ref); + +directive_line_file( + unique int id: @directive_line ref, + int file: @file ref); + +directive_line_offset( + unique int id: @directive_line ref, + int offset: int ref); + +directive_line_span( + unique int id: @directive_line ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +directive_nullables( + unique int id: @directive_nullable, + int setting: int ref, /* 0: disable, 1: enable, 2: restore */ + int target: int ref); /* 0: none, 1: annotations, 2: warnings */ + +directive_warnings( + unique int id: @directive_warning, + string message: string ref); + +directive_errors( + unique int id: @directive_error, + string message: string ref); + +directive_undefines( + unique int id: @directive_undefine, + string name: string ref); + +directive_defines( + unique int id: @directive_define, + string name: string ref); + +pragma_checksums( + unique int id: @pragma_checksum, + int file: @file ref, + string guid: string ref, + string bytes: string ref); + +pragma_warnings( + unique int id: @pragma_warning, + int kind: int ref /* 0 = disable, 1 = restore */); + +#keyset[id, index] +pragma_warning_error_codes( + int id: @pragma_warning ref, + string errorCode: string ref, + int index: int ref); + +preprocessor_directive_location( + unique int id: @preprocessor_directive ref, + int loc: @location ref); + +preprocessor_directive_compilation( + int id: @preprocessor_directive ref, + int compilation: @compilation ref); + +preprocessor_directive_active( + unique int id: @preprocessor_directive ref, + int active: int ref); /* 0: false, 1: true */ + +/** TYPES **/ + +types( + unique int id: @type, + int kind: int ref, + string name: string ref); + +case @type.kind of + 1 = @bool_type +| 2 = @char_type +| 3 = @decimal_type +| 4 = @sbyte_type +| 5 = @short_type +| 6 = @int_type +| 7 = @long_type +| 8 = @byte_type +| 9 = @ushort_type +| 10 = @uint_type +| 11 = @ulong_type +| 12 = @float_type +| 13 = @double_type +| 14 = @enum_type +| 15 = @struct_type +| 17 = @class_type +| 19 = @interface_type +| 20 = @delegate_type +| 21 = @null_type +| 22 = @type_parameter +| 23 = @pointer_type +| 24 = @nullable_type +| 25 = @array_type +| 26 = @void_type +| 27 = @int_ptr_type +| 28 = @uint_ptr_type +| 29 = @dynamic_type +| 30 = @arglist_type +| 31 = @unknown_type +| 32 = @tuple_type +| 33 = @function_pointer_type +| 34 = @inline_array_type +| 35 = @extension_type + ; + +@simple_type = @bool_type | @char_type | @integral_type | @floating_point_type | @decimal_type; +@integral_type = @signed_integral_type | @unsigned_integral_type; +@signed_integral_type = @sbyte_type | @short_type | @int_type | @long_type; +@unsigned_integral_type = @byte_type | @ushort_type | @uint_type | @ulong_type; +@floating_point_type = @float_type | @double_type; +@value_type = @simple_type | @enum_type | @struct_type | @nullable_type | @int_ptr_type + | @uint_ptr_type | @tuple_type | @void_type | @inline_array_type; +@ref_type = @class_type | @interface_type | @array_type | @delegate_type | @null_type + | @dynamic_type | @extension_type; +@value_or_ref_type = @value_type | @ref_type; + +typerefs( + unique int id: @typeref, + string name: string ref); + +typeref_type( + int id: @typeref ref, + unique int typeId: @type ref); + +@type_or_ref = @type | @typeref; + +array_element_type( + unique int array: @array_type ref, + int dimension: int ref, + int rank: int ref, + int element: @type_or_ref ref); + +nullable_underlying_type( + unique int nullable: @nullable_type ref, + int underlying: @type_or_ref ref); + +pointer_referent_type( + unique int pointer: @pointer_type ref, + int referent: @type_or_ref ref); + +enum_underlying_type( + unique int enum_id: @enum_type ref, + int underlying_type_id: @type_or_ref ref); + +delegate_return_type( + unique int delegate_id: @delegate_type ref, + int return_type_id: @type_or_ref ref); + +function_pointer_return_type( + unique int function_pointer_id: @function_pointer_type ref, + int return_type_id: @type_or_ref ref); + +extension_receiver_type( + unique int extension: @extension_type ref, + int receiver_type_id: @type_or_ref ref); + +extend( + int sub: @type ref, + int super: @type_or_ref ref); + +anonymous_types( + unique int id: @type ref); + +@interface_or_ref = @interface_type | @typeref; + +implement( + int sub: @type ref, + int super: @type_or_ref ref); + +type_location( + int id: @type ref, + int loc: @location ref); + +tuple_underlying_type( + unique int tuple: @tuple_type ref, + int struct: @type_or_ref ref); + +#keyset[tuple, index] +tuple_element( + int tuple: @tuple_type ref, + int index: int ref, + unique int field: @field ref); + +attributes( + unique int id: @attribute, + int kind: int ref, + int type_id: @type_or_ref ref, + int target: @attributable ref); + +case @attribute.kind of + 0 = @attribute_default +| 1 = @attribute_return +| 2 = @attribute_assembly +| 3 = @attribute_module +; + +attribute_location( + int id: @attribute ref, + int loc: @location ref); + +@type_mention_parent = @element | @type_mention; + +type_mention( + unique int id: @type_mention, + int type_id: @type_or_ref ref, + int parent: @type_mention_parent ref); + +type_mention_location( + unique int id: @type_mention ref, + int loc: @location ref); + +@has_type_annotation = @assignable | @type_parameter | @callable | @expr | @delegate_type | @generic | @function_pointer_type; + +/** + * A direct annotation on an entity, for example `string? x;`. + * + * Annotations: + * 2 = reftype is not annotated "!" + * 3 = reftype is annotated "?" + * 4 = readonly ref type / in parameter + * 5 = ref type parameter, return or local variable + * 6 = out parameter + * + * Note that the annotation depends on the element it annotates. + * @assignable: The annotation is on the type of the assignable, for example the variable type. + * @type_parameter: The annotation is on the reftype constraint + * @callable: The annotation is on the return type + * @array_type: The annotation is on the element type + */ +type_annotation(int id: @has_type_annotation ref, int annotation: int ref); + +nullability(unique int nullability: @nullability, int kind: int ref); + +case @nullability.kind of + 0 = @oblivious +| 1 = @not_annotated +| 2 = @annotated +; + +#keyset[parent, index] +nullability_parent(int nullability: @nullability ref, int index: int ref, int parent: @nullability ref) + +type_nullability(int id: @has_type_annotation ref, int nullability: @nullability ref); + +/** + * The nullable flow state of an expression, as determined by Roslyn. + * 0 = none (default, not populated) + * 1 = not null + * 2 = maybe null + */ +expr_flowstate(unique int id: @expr ref, int state: int ref); + +/** GENERICS **/ + +@generic = @type | @method | @local_function; + +type_parameters( + unique int id: @type_parameter ref, + int index: int ref, + int generic_id: @generic ref, + int variance: int ref /* none = 0, out = 1, in = 2 */); + +#keyset[constructed_id, index] +type_arguments( + int id: @type_or_ref ref, + int index: int ref, + int constructed_id: @generic_or_ref ref); + +@generic_or_ref = @generic | @typeref; + +constructed_generic( + unique int constructed: @generic ref, + int generic: @generic_or_ref ref); + +type_parameter_constraints( + unique int id: @type_parameter_constraints, + int param_id: @type_parameter ref); + +type_parameter_constraints_location( + int id: @type_parameter_constraints ref, + int loc: @location ref); + +general_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int kind: int ref /* class = 1, struct = 2, new = 3 */); + +specific_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref); + +specific_type_parameter_nullability( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref, + int nullability: @nullability ref); + +/** FUNCTION POINTERS */ + +function_pointer_calling_conventions( + int id: @function_pointer_type ref, + int kind: int ref); + +#keyset[id, index] +has_unmanaged_calling_conventions( + int id: @function_pointer_type ref, + int index: int ref, + int conv_id: @type_or_ref ref); + +/** MODIFIERS */ + +@modifiable = @modifiable_direct | @event_accessor; + +@modifiable_direct = @member | @accessor | @local_function | @anonymous_function_expr; + +modifiers( + unique int id: @modifier, + string name: string ref); + +has_modifiers( + int id: @modifiable_direct ref, + int mod_id: @modifier ref); + +/** MEMBERS **/ + +@member = @method | @constructor | @destructor | @field | @property | @event | @operator | @indexer | @type; + +@named_exprorstmt = @goto_stmt | @labeled_stmt | @expr; + +@virtualizable = @method | @property | @indexer | @event | @operator; + +exprorstmt_name( + unique int parent_id: @named_exprorstmt ref, + string name: string ref); + +nested_types( + unique int id: @type ref, + int declaring_type_id: @type ref, + int unbound_id: @type ref); + +properties( + unique int id: @property, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @property ref); + +property_location( + int id: @property ref, + int loc: @location ref); + +indexers( + unique int id: @indexer, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @indexer ref); + +indexer_location( + int id: @indexer ref, + int loc: @location ref); + +accessors( + unique int id: @accessor, + int kind: int ref, + string name: string ref, + int declaring_member_id: @member ref, + int unbound_id: @accessor ref); + +case @accessor.kind of + 1 = @getter +| 2 = @setter + ; + +init_only_accessors( + unique int id: @accessor ref); + +accessor_location( + int id: @accessor ref, + int loc: @location ref); + +events( + unique int id: @event, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @event ref); + +event_location( + int id: @event ref, + int loc: @location ref); + +event_accessors( + unique int id: @event_accessor, + int kind: int ref, + string name: string ref, + int declaring_event_id: @event ref, + int unbound_id: @event_accessor ref); + +case @event_accessor.kind of + 1 = @add_event_accessor +| 2 = @remove_event_accessor + ; + +event_accessor_location( + int id: @event_accessor ref, + int loc: @location ref); + +operators( + unique int id: @operator, + string name: string ref, + string symbol: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @operator ref); + +operator_location( + int id: @operator ref, + int loc: @location ref); + +constant_value( + int id: @variable ref, + string value: string ref); + +/** CALLABLES **/ + +@callable = @method | @constructor | @destructor | @operator | @callable_accessor | @anonymous_function_expr | @local_function; + +@callable_accessor = @accessor | @event_accessor; + +methods( + unique int id: @method, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @method ref); + +method_location( + int id: @method ref, + int loc: @location ref); + +constructors( + unique int id: @constructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @constructor ref); + +constructor_location( + int id: @constructor ref, + int loc: @location ref); + +destructors( + unique int id: @destructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @destructor ref); + +destructor_location( + int id: @destructor ref, + int loc: @location ref); + +overrides( + int id: @callable ref, + int base_id: @callable ref); + +explicitly_implements( + int id: @member ref, + int interface_id: @interface_or_ref ref); + +local_functions( + unique int id: @local_function, + string name: string ref, + int return_type: @type ref, + int unbound_id: @local_function ref); + +local_function_stmts( + unique int fn: @local_function_stmt ref, + int stmt: @local_function ref); + +/** VARIABLES **/ + +@variable = @local_scope_variable | @field; + +@local_scope_variable = @local_variable | @parameter; + +fields( + unique int id: @field, + int kind: int ref, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @field ref); + +case @field.kind of + 1 = @addressable_field +| 2 = @constant + ; + +field_location( + int id: @field ref, + int loc: @location ref); + +localvars( + unique int id: @local_variable, + int kind: int ref, + string name: string ref, + int implicitly_typed: int ref /* 0 = no, 1 = yes */, + int type_id: @type_or_ref ref, + int parent_id: @local_var_decl_expr ref); + +case @local_variable.kind of + 1 = @addressable_local_variable +| 2 = @local_constant +| 3 = @local_variable_ref + ; + +localvar_location( + unique int id: @local_variable ref, + int loc: @location ref); + +@parameterizable = @callable | @delegate_type | @indexer | @function_pointer_type | @extension_type; + +#keyset[name, parent_id] +#keyset[index, parent_id] +params( + unique int id: @parameter, + string name: string ref, + int type_id: @type_or_ref ref, + int index: int ref, + int mode: int ref, /* value = 0, ref = 1, out = 2, params/array = 3, this = 4, in = 5, ref readonly = 6 */ + int parent_id: @parameterizable ref, + int unbound_id: @parameter ref); + +param_location( + int id: @parameter ref, + int loc: @location ref); + +@has_scoped_annotation = @local_scope_variable + +scoped_annotation( + int id: @has_scoped_annotation ref, + int kind: int ref // scoped ref = 1, scoped value = 2 + ); + +/** STATEMENTS **/ + +@exprorstmt_parent = @control_flow_element | @top_level_exprorstmt_parent; + +statements( + unique int id: @stmt, + int kind: int ref); + +#keyset[index, parent] +stmt_parent( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_stmt_parent = @callable; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +stmt_parent_top_level( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @top_level_stmt_parent ref); + +case @stmt.kind of + 1 = @block_stmt +| 2 = @expr_stmt +| 3 = @if_stmt +| 4 = @switch_stmt +| 5 = @while_stmt +| 6 = @do_stmt +| 7 = @for_stmt +| 8 = @foreach_stmt +| 9 = @break_stmt +| 10 = @continue_stmt +| 11 = @goto_stmt +| 12 = @goto_case_stmt +| 13 = @goto_default_stmt +| 14 = @throw_stmt +| 15 = @return_stmt +| 16 = @yield_stmt +| 17 = @try_stmt +| 18 = @checked_stmt +| 19 = @unchecked_stmt +| 20 = @lock_stmt +| 21 = @using_block_stmt +| 22 = @var_decl_stmt +| 23 = @const_decl_stmt +| 24 = @empty_stmt +| 25 = @unsafe_stmt +| 26 = @fixed_stmt +| 27 = @label_stmt +| 28 = @catch +| 29 = @case_stmt +| 30 = @local_function_stmt +| 31 = @using_decl_stmt + ; + +@using_stmt = @using_block_stmt | @using_decl_stmt; + +@labeled_stmt = @label_stmt | @case; + +@decl_stmt = @var_decl_stmt | @const_decl_stmt | @using_decl_stmt; + +@cond_stmt = @if_stmt | @switch_stmt; + +@loop_stmt = @while_stmt | @do_stmt | @for_stmt | @foreach_stmt; + +@jump_stmt = @break_stmt | @goto_any_stmt | @continue_stmt | @throw_stmt | @return_stmt + | @yield_stmt; + +@goto_any_stmt = @goto_default_stmt | @goto_case_stmt | @goto_stmt; + + +stmt_location( + unique int id: @stmt ref, + int loc: @location ref); + +catch_type( + unique int catch_id: @catch ref, + int type_id: @type_or_ref ref, + int kind: int ref /* explicit = 1, implicit = 2 */); + +foreach_stmt_info( + unique int id: @foreach_stmt ref, + int kind: int ref /* non-async = 1, async = 2 */); + +@foreach_symbol = @method | @property | @type_or_ref; + +#keyset[id, kind] +foreach_stmt_desugar( + int id: @foreach_stmt ref, + int symbol: @foreach_symbol ref, + int kind: int ref /* GetEnumeratorMethod = 1, CurrentProperty = 2, MoveNextMethod = 3, DisposeMethod = 4, ElementType = 5 */); + +/** EXPRESSIONS **/ + +expressions( + unique int id: @expr, + int kind: int ref, + int type_id: @type_or_ref ref); + +#keyset[index, parent] +expr_parent( + unique int expr: @expr ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_expr_parent = @attribute | @field | @property | @indexer | @parameter | @directive_if | @directive_elif; + +@top_level_exprorstmt_parent = @top_level_expr_parent | @top_level_stmt_parent; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +expr_parent_top_level( + unique int expr: @expr ref, + int index: int ref, + int parent: @top_level_exprorstmt_parent ref); + +case @expr.kind of +/* literal */ + 1 = @bool_literal_expr +| 2 = @char_literal_expr +| 3 = @decimal_literal_expr +| 4 = @int_literal_expr +| 5 = @long_literal_expr +| 6 = @uint_literal_expr +| 7 = @ulong_literal_expr +| 8 = @float_literal_expr +| 9 = @double_literal_expr +| 10 = @utf16_string_literal_expr +| 11 = @null_literal_expr +/* primary & unary */ +| 12 = @this_access_expr +| 13 = @base_access_expr +| 14 = @local_variable_access_expr +| 15 = @parameter_access_expr +| 16 = @field_access_expr +| 17 = @property_access_expr +| 18 = @method_access_expr +| 19 = @event_access_expr +| 20 = @indexer_access_expr +| 21 = @array_access_expr +| 22 = @type_access_expr +| 23 = @typeof_expr +| 24 = @method_invocation_expr +| 25 = @delegate_invocation_expr +| 26 = @operator_invocation_expr +| 27 = @cast_expr +| 28 = @object_creation_expr +| 29 = @explicit_delegate_creation_expr +| 30 = @implicit_delegate_creation_expr +| 31 = @array_creation_expr +| 32 = @default_expr +| 33 = @plus_expr +| 34 = @minus_expr +| 35 = @bit_not_expr +| 36 = @log_not_expr +| 37 = @post_incr_expr +| 38 = @post_decr_expr +| 39 = @pre_incr_expr +| 40 = @pre_decr_expr +/* multiplicative */ +| 41 = @mul_expr +| 42 = @div_expr +| 43 = @rem_expr +/* additive */ +| 44 = @add_expr +| 45 = @sub_expr +/* shift */ +| 46 = @lshift_expr +| 47 = @rshift_expr +/* relational */ +| 48 = @lt_expr +| 49 = @gt_expr +| 50 = @le_expr +| 51 = @ge_expr +/* equality */ +| 52 = @eq_expr +| 53 = @ne_expr +/* logical */ +| 54 = @bit_and_expr +| 55 = @bit_xor_expr +| 56 = @bit_or_expr +| 57 = @log_and_expr +| 58 = @log_or_expr +/* type testing */ +| 59 = @is_expr +| 60 = @as_expr +/* null coalescing */ +| 61 = @null_coalescing_expr +/* conditional */ +| 62 = @conditional_expr +/* assignment */ +| 63 = @simple_assign_expr +| 64 = @assign_add_expr +| 65 = @assign_sub_expr +| 66 = @assign_mul_expr +| 67 = @assign_div_expr +| 68 = @assign_rem_expr +| 69 = @assign_and_expr +| 70 = @assign_xor_expr +| 71 = @assign_or_expr +| 72 = @assign_lshift_expr +| 73 = @assign_rshift_expr +/* more */ +| 74 = @object_init_expr +| 75 = @collection_init_expr +| 76 = @array_init_expr +| 77 = @checked_expr +| 78 = @unchecked_expr +| 79 = @constructor_init_expr +| 80 = @add_event_expr +| 81 = @remove_event_expr +| 82 = @par_expr +| 83 = @local_var_decl_expr +| 84 = @lambda_expr +| 85 = @anonymous_method_expr +| 86 = @namespace_expr +/* dynamic */ +| 92 = @dynamic_element_access_expr +| 93 = @dynamic_member_access_expr +/* unsafe */ +| 100 = @pointer_indirection_expr +| 101 = @address_of_expr +| 102 = @sizeof_expr +/* async */ +| 103 = @await_expr +/* C# 6.0 */ +| 104 = @nameof_expr +| 105 = @interpolated_string_expr +| 106 = @unknown_expr +/* C# 7.0 */ +| 107 = @throw_expr +| 108 = @tuple_expr +| 109 = @local_function_invocation_expr +| 110 = @ref_expr +| 111 = @discard_expr +/* C# 8.0 */ +| 112 = @range_expr +| 113 = @index_expr +| 114 = @switch_expr +| 115 = @recursive_pattern_expr +| 116 = @property_pattern_expr +| 117 = @positional_pattern_expr +| 118 = @switch_case_expr +| 119 = @assign_coalesce_expr +| 120 = @suppress_nullable_warning_expr +| 121 = @namespace_access_expr +/* C# 9.0 */ +| 122 = @lt_pattern_expr +| 123 = @gt_pattern_expr +| 124 = @le_pattern_expr +| 125 = @ge_pattern_expr +| 126 = @not_pattern_expr +| 127 = @and_pattern_expr +| 128 = @or_pattern_expr +| 129 = @function_pointer_invocation_expr +| 130 = @with_expr +/* C# 11.0 */ +| 131 = @list_pattern_expr +| 132 = @slice_pattern_expr +| 133 = @urshift_expr +| 134 = @assign_urshift_expr +| 135 = @utf8_string_literal_expr +/* C# 12.0 */ +| 136 = @collection_expr +| 137 = @spread_element_expr +| 138 = @interpolated_string_insert_expr +/* Preprocessor */ +| 999 = @define_symbol_expr +; + +@switch = @switch_stmt | @switch_expr; +@case = @case_stmt | @switch_case_expr; +@pattern_match = @case | @is_expr; +@unary_pattern_expr = @not_pattern_expr; +@relational_pattern_expr = @gt_pattern_expr | @lt_pattern_expr | @ge_pattern_expr | @le_pattern_expr; +@binary_pattern_expr = @and_pattern_expr | @or_pattern_expr; + +@integer_literal_expr = @int_literal_expr | @long_literal_expr | @uint_literal_expr | @ulong_literal_expr; +@real_literal_expr = @float_literal_expr | @double_literal_expr | @decimal_literal_expr; +@string_literal_expr = @utf16_string_literal_expr | @utf8_string_literal_expr; +@literal_expr = @bool_literal_expr | @char_literal_expr | @integer_literal_expr | @real_literal_expr + | @string_literal_expr | @null_literal_expr; + +@assign_expr = @simple_assign_expr | @assign_op_expr | @local_var_decl_expr; +@assign_op_call_expr = @assign_arith_expr | @assign_bitwise_expr +@assign_op_expr = @assign_op_call_expr | @assign_event_expr | @assign_coalesce_expr; +@assign_event_expr = @add_event_expr | @remove_event_expr; + +@add_operation = @add_expr | @assign_add_expr; +@sub_operation = @sub_expr | @assign_sub_expr; +@mul_operation = @mul_expr | @assign_mul_expr; +@div_operation = @div_expr | @assign_div_expr; +@rem_operation = @rem_expr | @assign_rem_expr; +@and_operation = @bit_and_expr | @assign_and_expr; +@xor_operation = @bit_xor_expr | @assign_xor_expr; +@or_operation = @bit_or_expr | @assign_or_expr; +@lshift_operation = @lshift_expr | @assign_lshift_expr; +@rshift_operation = @rshift_expr | @assign_rshift_expr; +@urshift_operation = @urshift_expr | @assign_urshift_expr; +@null_coalescing_operation = @null_coalescing_expr | @assign_coalesce_expr; + +@assign_arith_expr = @assign_add_expr | @assign_sub_expr | @assign_mul_expr | @assign_div_expr + | @assign_rem_expr +@assign_bitwise_expr = @assign_and_expr | @assign_or_expr | @assign_xor_expr + | @assign_lshift_expr | @assign_rshift_expr | @assign_urshift_expr; + +@member_access_expr = @field_access_expr | @property_access_expr | @indexer_access_expr | @event_access_expr + | @method_access_expr | @type_access_expr | @dynamic_member_access_expr; +@access_expr = @member_access_expr | @this_access_expr | @base_access_expr | @assignable_access_expr | @namespace_access_expr; +@element_access_expr = @indexer_access_expr | @array_access_expr | @dynamic_element_access_expr; + +@local_variable_access = @local_variable_access_expr | @local_var_decl_expr; +@local_scope_variable_access_expr = @parameter_access_expr | @local_variable_access; +@variable_access_expr = @local_scope_variable_access_expr | @field_access_expr; + +@assignable_access_expr = @variable_access_expr | @property_access_expr | @element_access_expr + | @event_access_expr | @dynamic_member_access_expr; + +@objectorcollection_init_expr = @object_init_expr | @collection_init_expr; + +@delegate_creation_expr = @explicit_delegate_creation_expr | @implicit_delegate_creation_expr; + +@bin_arith_op_expr = @mul_expr | @div_expr | @rem_expr | @add_expr | @sub_expr; +@incr_op_expr = @pre_incr_expr | @post_incr_expr; +@decr_op_expr = @pre_decr_expr | @post_decr_expr; +@mut_op_expr = @incr_op_expr | @decr_op_expr; +@un_arith_op_expr = @plus_expr | @minus_expr | @mut_op_expr; +@arith_op_expr = @bin_arith_op_expr | @un_arith_op_expr; + +@ternary_log_op_expr = @conditional_expr; +@bin_log_op_expr = @log_and_expr | @log_or_expr | @null_coalescing_expr; +@un_log_op_expr = @log_not_expr; +@log_expr = @un_log_op_expr | @bin_log_op_expr | @ternary_log_op_expr; + +@bin_bit_op_expr = @bit_and_expr | @bit_or_expr | @bit_xor_expr | @lshift_expr + | @rshift_expr | @urshift_expr; +@un_bit_op_expr = @bit_not_expr; +@bit_expr = @un_bit_op_expr | @bin_bit_op_expr; + +@equality_op_expr = @eq_expr | @ne_expr; +@rel_op_expr = @gt_expr | @lt_expr| @ge_expr | @le_expr; +@comp_expr = @equality_op_expr | @rel_op_expr; + +@op_expr = @un_op | @bin_op | @ternary_op; + +@ternary_op = @ternary_log_op_expr; +@bin_op = @assign_expr | @bin_arith_op_expr | @bin_log_op_expr | @bin_bit_op_expr | @comp_expr; +@un_op = @un_arith_op_expr | @un_log_op_expr | @un_bit_op_expr | @sizeof_expr + | @pointer_indirection_expr | @address_of_expr; + +@anonymous_function_expr = @lambda_expr | @anonymous_method_expr; + +@op_invoke_expr = @operator_invocation_expr | @assign_op_call_expr +@call = @method_invocation_expr | @constructor_init_expr | @op_invoke_expr + | @delegate_invocation_expr | @object_creation_expr | @call_access_expr + | @local_function_invocation_expr | @function_pointer_invocation_expr; + +@call_access_expr = @property_access_expr | @event_access_expr | @indexer_access_expr; + +@late_bindable_expr = @dynamic_element_access_expr | @dynamic_member_access_expr + | @object_creation_expr | @method_invocation_expr | @op_invoke_expr; + +@throw_element = @throw_expr | @throw_stmt; + +@implicitly_typeable_object_creation_expr = @object_creation_expr | @explicit_delegate_creation_expr; + +implicitly_typed_array_creation( + unique int id: @array_creation_expr ref); + +explicitly_sized_array_creation( + unique int id: @array_creation_expr ref); + +stackalloc_array_creation( + unique int id: @array_creation_expr ref); + +implicitly_typed_object_creation( + unique int id: @implicitly_typeable_object_creation_expr ref); + +mutator_invocation_mode( + unique int id: @operator_invocation_expr ref, + int mode: int ref /* prefix = 1, postfix = 2*/); + +expr_value( + unique int id: @expr ref, + string value: string ref); + +expr_call( + unique int caller_id: @expr ref, + int target_id: @callable ref); + +expr_access( + unique int accesser_id: @access_expr ref, + int target_id: @accessible ref); + +@accessible = @method | @assignable | @local_function | @namespace; + +expr_location( + unique int id: @expr ref, + int loc: @location ref); + +dynamic_member_name( + unique int id: @late_bindable_expr ref, + string name: string ref); + +@qualifiable_expr = @member_access_expr + | @method_invocation_expr + | @element_access_expr + | @assign_op_call_expr; + +conditional_access( + unique int id: @qualifiable_expr ref); + +expr_argument( + unique int id: @expr ref, + int mode: int ref); + /* mode is the same as params: value = 0, ref = 1, out = 2 */ + +expr_argument_name( + unique int id: @expr ref, + string name: string ref); + +lambda_expr_return_type( + unique int id: @lambda_expr ref, + int type_id: @type_or_ref ref); + +/* Compiler generated */ + +compiler_generated(unique int id: @element ref); + +/** CONTROL/DATA FLOW **/ + +@control_flow_element = @stmt | @expr; + +/* XML Files */ + +xmlEncoding ( + unique int id: @file ref, + string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* Comments */ + +commentline( + unique int id: @commentline, + int kind: int ref, + string text: string ref, + string rawtext: string ref); + +case @commentline.kind of + 0 = @singlelinecomment +| 1 = @xmldoccomment +| 2 = @multilinecomment; + +commentline_location( + unique int id: @commentline ref, + int loc: @location ref); + +commentblock( + unique int id : @commentblock); + +commentblock_location( + unique int id: @commentblock ref, + int loc: @location ref); + +commentblock_binding( + int id: @commentblock ref, + int entity: @element ref, + int bindtype: int ref); /* 0: Parent, 1: Best, 2: Before, 3: After */ + +commentblock_child( + int id: @commentblock ref, + int commentline: @commentline ref, + int index: int ref); + +/* ASP.NET */ + +case @asp_element.kind of + 0=@asp_close_tag +| 1=@asp_code +| 2=@asp_comment +| 3=@asp_data_binding +| 4=@asp_directive +| 5=@asp_open_tag +| 6=@asp_quoted_string +| 7=@asp_text +| 8=@asp_xml_directive; + +@asp_attribute = @asp_code | @asp_data_binding | @asp_quoted_string; + +asp_elements( + unique int id: @asp_element, + int kind: int ref, + int loc: @location ref); + +asp_comment_server(unique int comment: @asp_comment ref); +asp_code_inline(unique int code: @asp_code ref); +asp_directive_attribute( + int directive: @asp_directive ref, + int index: int ref, + string name: string ref, + int value: @asp_quoted_string ref); +asp_directive_name( + unique int directive: @asp_directive ref, + string name: string ref); +asp_element_body( + unique int element: @asp_element ref, + string body: string ref); +asp_tag_attribute( + int tag: @asp_open_tag ref, + int index: int ref, + string name: string ref, + int attribute: @asp_attribute ref); +asp_tag_name( + unique int tag: @asp_open_tag ref, + string name: string ref); +asp_tag_isempty(int tag: @asp_open_tag ref); diff --git a/csharp/downgrades/3cabc77473cbbda95edebafea345c2e3fdfa12d9/upgrade.properties b/csharp/downgrades/3cabc77473cbbda95edebafea345c2e3fdfa12d9/upgrade.properties new file mode 100644 index 000000000000..72af45e177b8 --- /dev/null +++ b/csharp/downgrades/3cabc77473cbbda95edebafea345c2e3fdfa12d9/upgrade.properties @@ -0,0 +1,2 @@ +description: Remove `@parameter` from `@control_flow_element` +compatibility: full diff --git a/csharp/downgrades/ea7ad33252e550241975676f09fcc7b0a703deab/old.dbscheme b/csharp/downgrades/ea7ad33252e550241975676f09fcc7b0a703deab/old.dbscheme new file mode 100644 index 000000000000..ea7ad33252e5 --- /dev/null +++ b/csharp/downgrades/ea7ad33252e550241975676f09fcc7b0a703deab/old.dbscheme @@ -0,0 +1,1505 @@ +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2021-07-14 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * csc f1.cs f2.cs f3.cs + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + unique int id : @compilation, + string cwd : string ref +); + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | --compiler + * 1 | *path to compiler* + * 2 | f1.cs + * 3 | f2.cs + * 4 | f3.cs + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile.rsp` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.cs + * 1 | f2.cs + * 2 | f3.cs + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The references used by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs /r:ref1.dll /r:ref2.dll /r:ref3.dll + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | ref1.dll + * 1 | ref2.dll + * 2 | ref3.dll + */ +#keyset[id, num] +compilation_referencing_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location ref +); + +extractor_messages( + unique int id: @extractor_message, + int severity: int ref, + string origin : string ref, + string text : string ref, + string entity : string ref, + int location: @location ref, + string stack_trace : string ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +compilation_assembly( + unique int id : @compilation ref, + int assembly: @assembly ref +) + +// Populated by the CSV extractor +externalData( + int id: @externalDataElement, + string path: string ref, + int column: int ref, + string value: string ref); + +sourceLocationPrefix( + string prefix: string ref); + +/* + * Overlay support + */ + +/** + * The CLI will automatically emit the tuple `databaseMetadata("isOverlay", "true")`, + * along with an `overlayChangedFiles` tuple for each new/modified/deleted file, + * when building an overlay database, and these can be used by the discard predicates. + */ +databaseMetadata( + string metadataKey : string ref, + string value : string ref +); + +overlayChangedFiles( + string path : string ref +); + +/* + * C# dbscheme + */ + +/** ELEMENTS **/ + +@element = @declaration | @stmt | @expr | @modifier | @attribute | @namespace_declaration + | @using_directive | @type_parameter_constraints | @externalDataElement + | @xmllocatable | @asp_element | @namespace | @preprocessor_directive; + +@declaration = @callable | @generic | @assignable | @namespace; + +@named_element = @namespace | @declaration; + +@declaration_with_accessors = @property | @indexer | @event; + +@assignable = @variable | @assignable_with_accessors | @event; + +@assignable_with_accessors = @property | @indexer; + +@attributable = @assembly | @field | @parameter | @operator | @method | @constructor + | @destructor | @callable_accessor | @value_or_ref_type | @declaration_with_accessors + | @local_function | @lambda_expr; + +/** LOCATIONS, ASEMMBLIES, MODULES, FILES and FOLDERS **/ + +@location = @location_default | @assembly; + +@locatable = @declaration_with_accessors | @callable_accessor | @declaration_or_directive + | @diagnostic | @extractor_message | @preprocessor_directive | @attribute | @type_mention | @type_parameter_constraints + | @declaration_with_accessors | @callable_accessor | @operator | @method + | @constructor | @destructor | @field | @local_variable | @parameter | @stmt | @expr + | @xmllocatable | @commentline | @commentblock | @asp_element + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +locations_mapped( + unique int id: @location_default ref, + int mapped_to: @location_default ref); + +@sourceline = @file | @callable | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref); + +assemblies( + unique int id: @assembly, + int file: @file ref, + string fullname: string ref, + string name: string ref, + string version: string ref); + +files( + unique int id: @file, + string name: string ref); + +folders( + unique int id: @folder, + string name: string ref); + +@container = @folder | @file ; + +containerparent( + int parent: @container ref, + unique int child: @container ref); + +file_extraction_mode( + unique int file: @file ref, + int mode: int ref + /* 0 = normal, 1 = standalone extractor */ + ); + +/** NAMESPACES **/ + +@type_container = @namespace | @type; + +namespaces( + unique int id: @namespace, + string name: string ref); + +namespace_declarations( + unique int id: @namespace_declaration, + int namespace_id: @namespace ref); + +namespace_declaration_location( + unique int id: @namespace_declaration ref, + int loc: @location ref); + +parent_namespace( + unique int child_id: @type_container ref, + int namespace_id: @namespace ref); + +@declaration_or_directive = @namespace_declaration | @type | @using_directive; + +parent_namespace_declaration( + int child_id: @declaration_or_directive ref, // cannot be unique because of partial classes + int namespace_id: @namespace_declaration ref); + +@using_directive = @using_namespace_directive | @using_static_directive; + +using_global( + unique int id: @using_directive ref +); + +using_namespace_directives( + unique int id: @using_namespace_directive, + int namespace_id: @namespace ref); + +using_static_directives( + unique int id: @using_static_directive, + int type_id: @type_or_ref ref); + +using_directive_location( + unique int id: @using_directive ref, + int loc: @location ref); + +@preprocessor_directive = @pragma_warning | @pragma_checksum | @directive_define | @directive_undefine | @directive_warning + | @directive_error | @directive_nullable | @directive_line | @directive_region | @directive_endregion | @directive_if + | @directive_elif | @directive_else | @directive_endif; + +@conditional_directive = @directive_if | @directive_elif; +@branch_directive = @directive_if | @directive_elif | @directive_else; + +directive_ifs( + unique int id: @directive_if, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref); /* 0: false, 1: true */ + +directive_elifs( + unique int id: @directive_elif, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +directive_elses( + unique int id: @directive_else, + int branchTaken: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +#keyset[id, start] +directive_endifs( + unique int id: @directive_endif, + unique int start: @directive_if ref); + +directive_define_symbols( + unique int id: @define_symbol_expr ref, + string name: string ref); + +directive_regions( + unique int id: @directive_region, + string name: string ref); + +#keyset[id, start] +directive_endregions( + unique int id: @directive_endregion, + unique int start: @directive_region ref); + +directive_lines( + unique int id: @directive_line, + int kind: int ref); /* 0: default, 1: hidden, 2: numeric, 3: span */ + +directive_line_value( + unique int id: @directive_line ref, + int line: int ref); + +directive_line_file( + unique int id: @directive_line ref, + int file: @file ref); + +directive_line_offset( + unique int id: @directive_line ref, + int offset: int ref); + +directive_line_span( + unique int id: @directive_line ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +directive_nullables( + unique int id: @directive_nullable, + int setting: int ref, /* 0: disable, 1: enable, 2: restore */ + int target: int ref); /* 0: none, 1: annotations, 2: warnings */ + +directive_warnings( + unique int id: @directive_warning, + string message: string ref); + +directive_errors( + unique int id: @directive_error, + string message: string ref); + +directive_undefines( + unique int id: @directive_undefine, + string name: string ref); + +directive_defines( + unique int id: @directive_define, + string name: string ref); + +pragma_checksums( + unique int id: @pragma_checksum, + int file: @file ref, + string guid: string ref, + string bytes: string ref); + +pragma_warnings( + unique int id: @pragma_warning, + int kind: int ref /* 0 = disable, 1 = restore */); + +#keyset[id, index] +pragma_warning_error_codes( + int id: @pragma_warning ref, + string errorCode: string ref, + int index: int ref); + +preprocessor_directive_location( + unique int id: @preprocessor_directive ref, + int loc: @location ref); + +preprocessor_directive_compilation( + int id: @preprocessor_directive ref, + int compilation: @compilation ref); + +preprocessor_directive_active( + unique int id: @preprocessor_directive ref, + int active: int ref); /* 0: false, 1: true */ + +/** TYPES **/ + +types( + unique int id: @type, + int kind: int ref, + string name: string ref); + +case @type.kind of + 1 = @bool_type +| 2 = @char_type +| 3 = @decimal_type +| 4 = @sbyte_type +| 5 = @short_type +| 6 = @int_type +| 7 = @long_type +| 8 = @byte_type +| 9 = @ushort_type +| 10 = @uint_type +| 11 = @ulong_type +| 12 = @float_type +| 13 = @double_type +| 14 = @enum_type +| 15 = @struct_type +| 17 = @class_type +| 19 = @interface_type +| 20 = @delegate_type +| 21 = @null_type +| 22 = @type_parameter +| 23 = @pointer_type +| 24 = @nullable_type +| 25 = @array_type +| 26 = @void_type +| 27 = @int_ptr_type +| 28 = @uint_ptr_type +| 29 = @dynamic_type +| 30 = @arglist_type +| 31 = @unknown_type +| 32 = @tuple_type +| 33 = @function_pointer_type +| 34 = @inline_array_type +| 35 = @extension_type + ; + +@simple_type = @bool_type | @char_type | @integral_type | @floating_point_type | @decimal_type; +@integral_type = @signed_integral_type | @unsigned_integral_type; +@signed_integral_type = @sbyte_type | @short_type | @int_type | @long_type; +@unsigned_integral_type = @byte_type | @ushort_type | @uint_type | @ulong_type; +@floating_point_type = @float_type | @double_type; +@value_type = @simple_type | @enum_type | @struct_type | @nullable_type | @int_ptr_type + | @uint_ptr_type | @tuple_type | @void_type | @inline_array_type; +@ref_type = @class_type | @interface_type | @array_type | @delegate_type | @null_type + | @dynamic_type | @extension_type; +@value_or_ref_type = @value_type | @ref_type; + +typerefs( + unique int id: @typeref, + string name: string ref); + +typeref_type( + int id: @typeref ref, + unique int typeId: @type ref); + +@type_or_ref = @type | @typeref; + +array_element_type( + unique int array: @array_type ref, + int dimension: int ref, + int rank: int ref, + int element: @type_or_ref ref); + +nullable_underlying_type( + unique int nullable: @nullable_type ref, + int underlying: @type_or_ref ref); + +pointer_referent_type( + unique int pointer: @pointer_type ref, + int referent: @type_or_ref ref); + +enum_underlying_type( + unique int enum_id: @enum_type ref, + int underlying_type_id: @type_or_ref ref); + +delegate_return_type( + unique int delegate_id: @delegate_type ref, + int return_type_id: @type_or_ref ref); + +function_pointer_return_type( + unique int function_pointer_id: @function_pointer_type ref, + int return_type_id: @type_or_ref ref); + +extension_receiver_type( + unique int extension: @extension_type ref, + int receiver_type_id: @type_or_ref ref); + +extend( + int sub: @type ref, + int super: @type_or_ref ref); + +anonymous_types( + unique int id: @type ref); + +@interface_or_ref = @interface_type | @typeref; + +implement( + int sub: @type ref, + int super: @type_or_ref ref); + +type_location( + int id: @type ref, + int loc: @location ref); + +tuple_underlying_type( + unique int tuple: @tuple_type ref, + int struct: @type_or_ref ref); + +#keyset[tuple, index] +tuple_element( + int tuple: @tuple_type ref, + int index: int ref, + unique int field: @field ref); + +attributes( + unique int id: @attribute, + int kind: int ref, + int type_id: @type_or_ref ref, + int target: @attributable ref); + +case @attribute.kind of + 0 = @attribute_default +| 1 = @attribute_return +| 2 = @attribute_assembly +| 3 = @attribute_module +; + +attribute_location( + int id: @attribute ref, + int loc: @location ref); + +@type_mention_parent = @element | @type_mention; + +type_mention( + unique int id: @type_mention, + int type_id: @type_or_ref ref, + int parent: @type_mention_parent ref); + +type_mention_location( + unique int id: @type_mention ref, + int loc: @location ref); + +@has_type_annotation = @assignable | @type_parameter | @callable | @expr | @delegate_type | @generic | @function_pointer_type; + +/** + * A direct annotation on an entity, for example `string? x;`. + * + * Annotations: + * 2 = reftype is not annotated "!" + * 3 = reftype is annotated "?" + * 4 = readonly ref type / in parameter + * 5 = ref type parameter, return or local variable + * 6 = out parameter + * + * Note that the annotation depends on the element it annotates. + * @assignable: The annotation is on the type of the assignable, for example the variable type. + * @type_parameter: The annotation is on the reftype constraint + * @callable: The annotation is on the return type + * @array_type: The annotation is on the element type + */ +type_annotation(int id: @has_type_annotation ref, int annotation: int ref); + +nullability(unique int nullability: @nullability, int kind: int ref); + +case @nullability.kind of + 0 = @oblivious +| 1 = @not_annotated +| 2 = @annotated +; + +#keyset[parent, index] +nullability_parent(int nullability: @nullability ref, int index: int ref, int parent: @nullability ref) + +type_nullability(int id: @has_type_annotation ref, int nullability: @nullability ref); + +/** + * The nullable flow state of an expression, as determined by Roslyn. + * 0 = none (default, not populated) + * 1 = not null + * 2 = maybe null + */ +expr_flowstate(unique int id: @expr ref, int state: int ref); + +/** GENERICS **/ + +@generic = @type | @method | @local_function; + +type_parameters( + unique int id: @type_parameter ref, + int index: int ref, + int generic_id: @generic ref, + int variance: int ref /* none = 0, out = 1, in = 2 */); + +#keyset[constructed_id, index] +type_arguments( + int id: @type_or_ref ref, + int index: int ref, + int constructed_id: @generic_or_ref ref); + +@generic_or_ref = @generic | @typeref; + +constructed_generic( + unique int constructed: @generic ref, + int generic: @generic_or_ref ref); + +type_parameter_constraints( + unique int id: @type_parameter_constraints, + int param_id: @type_parameter ref); + +type_parameter_constraints_location( + int id: @type_parameter_constraints ref, + int loc: @location ref); + +general_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int kind: int ref /* class = 1, struct = 2, new = 3 */); + +specific_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref); + +specific_type_parameter_nullability( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref, + int nullability: @nullability ref); + +/** FUNCTION POINTERS */ + +function_pointer_calling_conventions( + int id: @function_pointer_type ref, + int kind: int ref); + +#keyset[id, index] +has_unmanaged_calling_conventions( + int id: @function_pointer_type ref, + int index: int ref, + int conv_id: @type_or_ref ref); + +/** MODIFIERS */ + +@modifiable = @modifiable_direct | @event_accessor; + +@modifiable_direct = @member | @accessor | @local_function | @anonymous_function_expr; + +modifiers( + unique int id: @modifier, + string name: string ref); + +has_modifiers( + int id: @modifiable_direct ref, + int mod_id: @modifier ref); + +/** MEMBERS **/ + +@member = @method | @constructor | @destructor | @field | @property | @event | @operator | @indexer | @type; + +@named_exprorstmt = @goto_stmt | @labeled_stmt | @expr; + +@virtualizable = @method | @property | @indexer | @event | @operator; + +exprorstmt_name( + unique int parent_id: @named_exprorstmt ref, + string name: string ref); + +nested_types( + unique int id: @type ref, + int declaring_type_id: @type ref, + int unbound_id: @type ref); + +properties( + unique int id: @property, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @property ref); + +property_location( + int id: @property ref, + int loc: @location ref); + +indexers( + unique int id: @indexer, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @indexer ref); + +indexer_location( + int id: @indexer ref, + int loc: @location ref); + +accessors( + unique int id: @accessor, + int kind: int ref, + string name: string ref, + int declaring_member_id: @member ref, + int unbound_id: @accessor ref); + +case @accessor.kind of + 1 = @getter +| 2 = @setter + ; + +init_only_accessors( + unique int id: @accessor ref); + +accessor_location( + int id: @accessor ref, + int loc: @location ref); + +events( + unique int id: @event, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @event ref); + +event_location( + int id: @event ref, + int loc: @location ref); + +event_accessors( + unique int id: @event_accessor, + int kind: int ref, + string name: string ref, + int declaring_event_id: @event ref, + int unbound_id: @event_accessor ref); + +case @event_accessor.kind of + 1 = @add_event_accessor +| 2 = @remove_event_accessor + ; + +event_accessor_location( + int id: @event_accessor ref, + int loc: @location ref); + +operators( + unique int id: @operator, + string name: string ref, + string symbol: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @operator ref); + +operator_location( + int id: @operator ref, + int loc: @location ref); + +constant_value( + int id: @variable ref, + string value: string ref); + +/** CALLABLES **/ + +@callable = @method | @constructor | @destructor | @operator | @callable_accessor | @anonymous_function_expr | @local_function; + +@callable_accessor = @accessor | @event_accessor; + +methods( + unique int id: @method, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @method ref); + +method_location( + int id: @method ref, + int loc: @location ref); + +constructors( + unique int id: @constructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @constructor ref); + +constructor_location( + int id: @constructor ref, + int loc: @location ref); + +destructors( + unique int id: @destructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @destructor ref); + +destructor_location( + int id: @destructor ref, + int loc: @location ref); + +overrides( + int id: @callable ref, + int base_id: @callable ref); + +explicitly_implements( + int id: @member ref, + int interface_id: @interface_or_ref ref); + +local_functions( + unique int id: @local_function, + string name: string ref, + int return_type: @type ref, + int unbound_id: @local_function ref); + +local_function_stmts( + unique int fn: @local_function_stmt ref, + int stmt: @local_function ref); + +/** VARIABLES **/ + +@variable = @local_scope_variable | @field; + +@local_scope_variable = @local_variable | @parameter; + +fields( + unique int id: @field, + int kind: int ref, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @field ref); + +case @field.kind of + 1 = @addressable_field +| 2 = @constant + ; + +field_location( + int id: @field ref, + int loc: @location ref); + +localvars( + unique int id: @local_variable, + int kind: int ref, + string name: string ref, + int implicitly_typed: int ref /* 0 = no, 1 = yes */, + int type_id: @type_or_ref ref, + int parent_id: @local_var_decl_expr ref); + +case @local_variable.kind of + 1 = @addressable_local_variable +| 2 = @local_constant +| 3 = @local_variable_ref + ; + +localvar_location( + unique int id: @local_variable ref, + int loc: @location ref); + +@parameterizable = @callable | @delegate_type | @indexer | @function_pointer_type | @extension_type; + +#keyset[name, parent_id] +#keyset[index, parent_id] +params( + unique int id: @parameter, + string name: string ref, + int type_id: @type_or_ref ref, + int index: int ref, + int mode: int ref, /* value = 0, ref = 1, out = 2, params/array = 3, this = 4, in = 5, ref readonly = 6 */ + int parent_id: @parameterizable ref, + int unbound_id: @parameter ref); + +param_location( + int id: @parameter ref, + int loc: @location ref); + +@has_scoped_annotation = @local_scope_variable + +scoped_annotation( + int id: @has_scoped_annotation ref, + int kind: int ref // scoped ref = 1, scoped value = 2 + ); + +/** STATEMENTS **/ + +@exprorstmt_parent = @control_flow_element | @top_level_exprorstmt_parent; + +statements( + unique int id: @stmt, + int kind: int ref); + +#keyset[index, parent] +stmt_parent( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_stmt_parent = @callable; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +stmt_parent_top_level( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @top_level_stmt_parent ref); + +case @stmt.kind of + 1 = @block_stmt +| 2 = @expr_stmt +| 3 = @if_stmt +| 4 = @switch_stmt +| 5 = @while_stmt +| 6 = @do_stmt +| 7 = @for_stmt +| 8 = @foreach_stmt +| 9 = @break_stmt +| 10 = @continue_stmt +| 11 = @goto_stmt +| 12 = @goto_case_stmt +| 13 = @goto_default_stmt +| 14 = @throw_stmt +| 15 = @return_stmt +| 16 = @yield_stmt +| 17 = @try_stmt +| 18 = @checked_stmt +| 19 = @unchecked_stmt +| 20 = @lock_stmt +| 21 = @using_block_stmt +| 22 = @var_decl_stmt +| 23 = @const_decl_stmt +| 24 = @empty_stmt +| 25 = @unsafe_stmt +| 26 = @fixed_stmt +| 27 = @label_stmt +| 28 = @catch +| 29 = @case_stmt +| 30 = @local_function_stmt +| 31 = @using_decl_stmt + ; + +@using_stmt = @using_block_stmt | @using_decl_stmt; + +@labeled_stmt = @label_stmt | @case; + +@decl_stmt = @var_decl_stmt | @const_decl_stmt | @using_decl_stmt; + +@cond_stmt = @if_stmt | @switch_stmt; + +@loop_stmt = @while_stmt | @do_stmt | @for_stmt | @foreach_stmt; + +@jump_stmt = @break_stmt | @goto_any_stmt | @continue_stmt | @throw_stmt | @return_stmt + | @yield_stmt; + +@goto_any_stmt = @goto_default_stmt | @goto_case_stmt | @goto_stmt; + + +stmt_location( + unique int id: @stmt ref, + int loc: @location ref); + +catch_type( + unique int catch_id: @catch ref, + int type_id: @type_or_ref ref, + int kind: int ref /* explicit = 1, implicit = 2 */); + +foreach_stmt_info( + unique int id: @foreach_stmt ref, + int kind: int ref /* non-async = 1, async = 2 */); + +@foreach_symbol = @method | @property | @type_or_ref; + +#keyset[id, kind] +foreach_stmt_desugar( + int id: @foreach_stmt ref, + int symbol: @foreach_symbol ref, + int kind: int ref /* GetEnumeratorMethod = 1, CurrentProperty = 2, MoveNextMethod = 3, DisposeMethod = 4, ElementType = 5 */); + +/** EXPRESSIONS **/ + +expressions( + unique int id: @expr, + int kind: int ref, + int type_id: @type_or_ref ref); + +#keyset[index, parent] +expr_parent( + unique int expr: @expr ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_expr_parent = @attribute | @field | @property | @indexer | @parameter | @directive_if | @directive_elif; + +@top_level_exprorstmt_parent = @top_level_expr_parent | @top_level_stmt_parent; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +expr_parent_top_level( + unique int expr: @expr ref, + int index: int ref, + int parent: @top_level_exprorstmt_parent ref); + +case @expr.kind of +/* literal */ + 1 = @bool_literal_expr +| 2 = @char_literal_expr +| 3 = @decimal_literal_expr +| 4 = @int_literal_expr +| 5 = @long_literal_expr +| 6 = @uint_literal_expr +| 7 = @ulong_literal_expr +| 8 = @float_literal_expr +| 9 = @double_literal_expr +| 10 = @utf16_string_literal_expr +| 11 = @null_literal_expr +/* primary & unary */ +| 12 = @this_access_expr +| 13 = @base_access_expr +| 14 = @local_variable_access_expr +| 15 = @parameter_access_expr +| 16 = @field_access_expr +| 17 = @property_access_expr +| 18 = @method_access_expr +| 19 = @event_access_expr +| 20 = @indexer_access_expr +| 21 = @array_access_expr +| 22 = @type_access_expr +| 23 = @typeof_expr +| 24 = @method_invocation_expr +| 25 = @delegate_invocation_expr +| 26 = @operator_invocation_expr +| 27 = @cast_expr +| 28 = @object_creation_expr +| 29 = @explicit_delegate_creation_expr +| 30 = @implicit_delegate_creation_expr +| 31 = @array_creation_expr +| 32 = @default_expr +| 33 = @plus_expr +| 34 = @minus_expr +| 35 = @bit_not_expr +| 36 = @log_not_expr +| 37 = @post_incr_expr +| 38 = @post_decr_expr +| 39 = @pre_incr_expr +| 40 = @pre_decr_expr +/* multiplicative */ +| 41 = @mul_expr +| 42 = @div_expr +| 43 = @rem_expr +/* additive */ +| 44 = @add_expr +| 45 = @sub_expr +/* shift */ +| 46 = @lshift_expr +| 47 = @rshift_expr +/* relational */ +| 48 = @lt_expr +| 49 = @gt_expr +| 50 = @le_expr +| 51 = @ge_expr +/* equality */ +| 52 = @eq_expr +| 53 = @ne_expr +/* logical */ +| 54 = @bit_and_expr +| 55 = @bit_xor_expr +| 56 = @bit_or_expr +| 57 = @log_and_expr +| 58 = @log_or_expr +/* type testing */ +| 59 = @is_expr +| 60 = @as_expr +/* null coalescing */ +| 61 = @null_coalescing_expr +/* conditional */ +| 62 = @conditional_expr +/* assignment */ +| 63 = @simple_assign_expr +| 64 = @assign_add_expr +| 65 = @assign_sub_expr +| 66 = @assign_mul_expr +| 67 = @assign_div_expr +| 68 = @assign_rem_expr +| 69 = @assign_and_expr +| 70 = @assign_xor_expr +| 71 = @assign_or_expr +| 72 = @assign_lshift_expr +| 73 = @assign_rshift_expr +/* more */ +| 74 = @object_init_expr +| 75 = @collection_init_expr +| 76 = @array_init_expr +| 77 = @checked_expr +| 78 = @unchecked_expr +| 79 = @constructor_init_expr +| 80 = @add_event_expr +| 81 = @remove_event_expr +| 82 = @par_expr +| 83 = @local_var_decl_expr +| 84 = @lambda_expr +| 85 = @anonymous_method_expr +| 86 = @namespace_expr +/* dynamic */ +| 92 = @dynamic_element_access_expr +| 93 = @dynamic_member_access_expr +/* unsafe */ +| 100 = @pointer_indirection_expr +| 101 = @address_of_expr +| 102 = @sizeof_expr +/* async */ +| 103 = @await_expr +/* C# 6.0 */ +| 104 = @nameof_expr +| 105 = @interpolated_string_expr +| 106 = @unknown_expr +/* C# 7.0 */ +| 107 = @throw_expr +| 108 = @tuple_expr +| 109 = @local_function_invocation_expr +| 110 = @ref_expr +| 111 = @discard_expr +/* C# 8.0 */ +| 112 = @range_expr +| 113 = @index_expr +| 114 = @switch_expr +| 115 = @recursive_pattern_expr +| 116 = @property_pattern_expr +| 117 = @positional_pattern_expr +| 118 = @switch_case_expr +| 119 = @assign_coalesce_expr +| 120 = @suppress_nullable_warning_expr +| 121 = @namespace_access_expr +/* C# 9.0 */ +| 122 = @lt_pattern_expr +| 123 = @gt_pattern_expr +| 124 = @le_pattern_expr +| 125 = @ge_pattern_expr +| 126 = @not_pattern_expr +| 127 = @and_pattern_expr +| 128 = @or_pattern_expr +| 129 = @function_pointer_invocation_expr +| 130 = @with_expr +/* C# 11.0 */ +| 131 = @list_pattern_expr +| 132 = @slice_pattern_expr +| 133 = @urshift_expr +| 134 = @assign_urshift_expr +| 135 = @utf8_string_literal_expr +/* C# 12.0 */ +| 136 = @collection_expr +| 137 = @spread_element_expr +| 138 = @interpolated_string_insert_expr +/* Preprocessor */ +| 999 = @define_symbol_expr +; + +@switch = @switch_stmt | @switch_expr; +@case = @case_stmt | @switch_case_expr; +@pattern_match = @case | @is_expr; +@unary_pattern_expr = @not_pattern_expr; +@relational_pattern_expr = @gt_pattern_expr | @lt_pattern_expr | @ge_pattern_expr | @le_pattern_expr; +@binary_pattern_expr = @and_pattern_expr | @or_pattern_expr; + +@integer_literal_expr = @int_literal_expr | @long_literal_expr | @uint_literal_expr | @ulong_literal_expr; +@real_literal_expr = @float_literal_expr | @double_literal_expr | @decimal_literal_expr; +@string_literal_expr = @utf16_string_literal_expr | @utf8_string_literal_expr; +@literal_expr = @bool_literal_expr | @char_literal_expr | @integer_literal_expr | @real_literal_expr + | @string_literal_expr | @null_literal_expr; + +@assign_expr = @simple_assign_expr | @assign_op_expr | @local_var_decl_expr; +@assign_op_call_expr = @assign_arith_expr | @assign_bitwise_expr +@assign_op_expr = @assign_op_call_expr | @assign_event_expr | @assign_coalesce_expr; +@assign_event_expr = @add_event_expr | @remove_event_expr; + +@add_operation = @add_expr | @assign_add_expr; +@sub_operation = @sub_expr | @assign_sub_expr; +@mul_operation = @mul_expr | @assign_mul_expr; +@div_operation = @div_expr | @assign_div_expr; +@rem_operation = @rem_expr | @assign_rem_expr; +@and_operation = @bit_and_expr | @assign_and_expr; +@xor_operation = @bit_xor_expr | @assign_xor_expr; +@or_operation = @bit_or_expr | @assign_or_expr; +@lshift_operation = @lshift_expr | @assign_lshift_expr; +@rshift_operation = @rshift_expr | @assign_rshift_expr; +@urshift_operation = @urshift_expr | @assign_urshift_expr; +@null_coalescing_operation = @null_coalescing_expr | @assign_coalesce_expr; + +@assign_arith_expr = @assign_add_expr | @assign_sub_expr | @assign_mul_expr | @assign_div_expr + | @assign_rem_expr +@assign_bitwise_expr = @assign_and_expr | @assign_or_expr | @assign_xor_expr + | @assign_lshift_expr | @assign_rshift_expr | @assign_urshift_expr; + +@member_access_expr = @field_access_expr | @property_access_expr | @indexer_access_expr | @event_access_expr + | @method_access_expr | @type_access_expr | @dynamic_member_access_expr; +@access_expr = @member_access_expr | @this_access_expr | @base_access_expr | @assignable_access_expr | @namespace_access_expr; +@element_access_expr = @indexer_access_expr | @array_access_expr | @dynamic_element_access_expr; + +@local_variable_access = @local_variable_access_expr | @local_var_decl_expr; +@local_scope_variable_access_expr = @parameter_access_expr | @local_variable_access; +@variable_access_expr = @local_scope_variable_access_expr | @field_access_expr; + +@assignable_access_expr = @variable_access_expr | @property_access_expr | @element_access_expr + | @event_access_expr | @dynamic_member_access_expr; + +@objectorcollection_init_expr = @object_init_expr | @collection_init_expr; + +@delegate_creation_expr = @explicit_delegate_creation_expr | @implicit_delegate_creation_expr; + +@bin_arith_op_expr = @mul_expr | @div_expr | @rem_expr | @add_expr | @sub_expr; +@incr_op_expr = @pre_incr_expr | @post_incr_expr; +@decr_op_expr = @pre_decr_expr | @post_decr_expr; +@mut_op_expr = @incr_op_expr | @decr_op_expr; +@un_arith_op_expr = @plus_expr | @minus_expr | @mut_op_expr; +@arith_op_expr = @bin_arith_op_expr | @un_arith_op_expr; + +@ternary_log_op_expr = @conditional_expr; +@bin_log_op_expr = @log_and_expr | @log_or_expr | @null_coalescing_expr; +@un_log_op_expr = @log_not_expr; +@log_expr = @un_log_op_expr | @bin_log_op_expr | @ternary_log_op_expr; + +@bin_bit_op_expr = @bit_and_expr | @bit_or_expr | @bit_xor_expr | @lshift_expr + | @rshift_expr | @urshift_expr; +@un_bit_op_expr = @bit_not_expr; +@bit_expr = @un_bit_op_expr | @bin_bit_op_expr; + +@equality_op_expr = @eq_expr | @ne_expr; +@rel_op_expr = @gt_expr | @lt_expr| @ge_expr | @le_expr; +@comp_expr = @equality_op_expr | @rel_op_expr; + +@op_expr = @un_op | @bin_op | @ternary_op; + +@ternary_op = @ternary_log_op_expr; +@bin_op = @assign_expr | @bin_arith_op_expr | @bin_log_op_expr | @bin_bit_op_expr | @comp_expr; +@un_op = @un_arith_op_expr | @un_log_op_expr | @un_bit_op_expr | @sizeof_expr + | @pointer_indirection_expr | @address_of_expr; + +@anonymous_function_expr = @lambda_expr | @anonymous_method_expr; + +@op_invoke_expr = @operator_invocation_expr | @assign_op_call_expr +@call = @method_invocation_expr | @constructor_init_expr | @op_invoke_expr + | @delegate_invocation_expr | @object_creation_expr | @call_access_expr + | @local_function_invocation_expr | @function_pointer_invocation_expr; + +@call_access_expr = @property_access_expr | @event_access_expr | @indexer_access_expr; + +@late_bindable_expr = @dynamic_element_access_expr | @dynamic_member_access_expr + | @object_creation_expr | @method_invocation_expr | @op_invoke_expr; + +@throw_element = @throw_expr | @throw_stmt; + +@implicitly_typeable_object_creation_expr = @object_creation_expr | @explicit_delegate_creation_expr; + +implicitly_typed_array_creation( + unique int id: @array_creation_expr ref); + +explicitly_sized_array_creation( + unique int id: @array_creation_expr ref); + +stackalloc_array_creation( + unique int id: @array_creation_expr ref); + +implicitly_typed_object_creation( + unique int id: @implicitly_typeable_object_creation_expr ref); + +mutator_invocation_mode( + unique int id: @operator_invocation_expr ref, + int mode: int ref /* prefix = 1, postfix = 2*/); + +expr_value( + unique int id: @expr ref, + string value: string ref); + +expr_call( + unique int caller_id: @expr ref, + int target_id: @callable ref); + +expr_access( + unique int accesser_id: @access_expr ref, + int target_id: @accessible ref); + +@accessible = @method | @assignable | @local_function | @namespace; + +expr_location( + unique int id: @expr ref, + int loc: @location ref); + +dynamic_member_name( + unique int id: @late_bindable_expr ref, + string name: string ref); + +@qualifiable_expr = @member_access_expr + | @method_invocation_expr + | @element_access_expr + | @assign_op_call_expr; + +conditional_access( + unique int id: @qualifiable_expr ref); + +expr_argument( + unique int id: @expr ref, + int mode: int ref); + /* mode is the same as params: value = 0, ref = 1, out = 2 */ + +expr_argument_name( + unique int id: @expr ref, + string name: string ref); + +lambda_expr_return_type( + unique int id: @lambda_expr ref, + int type_id: @type_or_ref ref); + +/* Compiler generated */ + +compiler_generated(unique int id: @element ref); + +/** CONTROL/DATA FLOW **/ + +@control_flow_element = @stmt | @expr; + +/* XML Files */ + +xmlEncoding ( + unique int id: @file ref, + string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* Comments */ + +commentline( + unique int id: @commentline, + int kind: int ref, + string text: string ref, + string rawtext: string ref); + +case @commentline.kind of + 0 = @singlelinecomment +| 1 = @xmldoccomment +| 2 = @multilinecomment; + +commentline_location( + unique int id: @commentline ref, + int loc: @location ref); + +commentblock( + unique int id : @commentblock); + +commentblock_location( + unique int id: @commentblock ref, + int loc: @location ref); + +commentblock_binding( + int id: @commentblock ref, + int entity: @element ref, + int bindtype: int ref); /* 0: Parent, 1: Best, 2: Before, 3: After */ + +commentblock_child( + int id: @commentblock ref, + int commentline: @commentline ref, + int index: int ref); + +/* ASP.NET */ + +case @asp_element.kind of + 0=@asp_close_tag +| 1=@asp_code +| 2=@asp_comment +| 3=@asp_data_binding +| 4=@asp_directive +| 5=@asp_open_tag +| 6=@asp_quoted_string +| 7=@asp_text +| 8=@asp_xml_directive; + +@asp_attribute = @asp_code | @asp_data_binding | @asp_quoted_string; + +asp_elements( + unique int id: @asp_element, + int kind: int ref, + int loc: @location ref); + +asp_comment_server(unique int comment: @asp_comment ref); +asp_code_inline(unique int code: @asp_code ref); +asp_directive_attribute( + int directive: @asp_directive ref, + int index: int ref, + string name: string ref, + int value: @asp_quoted_string ref); +asp_directive_name( + unique int directive: @asp_directive ref, + string name: string ref); +asp_element_body( + unique int element: @asp_element ref, + string body: string ref); +asp_tag_attribute( + int tag: @asp_open_tag ref, + int index: int ref, + string name: string ref, + int attribute: @asp_attribute ref); +asp_tag_name( + unique int tag: @asp_open_tag ref, + string name: string ref); +asp_tag_isempty(int tag: @asp_open_tag ref); diff --git a/csharp/downgrades/ea7ad33252e550241975676f09fcc7b0a703deab/semmlecode.csharp.dbscheme b/csharp/downgrades/ea7ad33252e550241975676f09fcc7b0a703deab/semmlecode.csharp.dbscheme new file mode 100644 index 000000000000..19b8cc3e2dc7 --- /dev/null +++ b/csharp/downgrades/ea7ad33252e550241975676f09fcc7b0a703deab/semmlecode.csharp.dbscheme @@ -0,0 +1,1504 @@ +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2021-07-14 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * csc f1.cs f2.cs f3.cs + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + unique int id : @compilation, + string cwd : string ref +); + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | --compiler + * 1 | *path to compiler* + * 2 | f1.cs + * 3 | f2.cs + * 4 | f3.cs + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile.rsp` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.cs + * 1 | f2.cs + * 2 | f3.cs + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The references used by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs /r:ref1.dll /r:ref2.dll /r:ref3.dll + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | ref1.dll + * 1 | ref2.dll + * 2 | ref3.dll + */ +#keyset[id, num] +compilation_referencing_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location ref +); + +extractor_messages( + unique int id: @extractor_message, + int severity: int ref, + string origin : string ref, + string text : string ref, + string entity : string ref, + int location: @location ref, + string stack_trace : string ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +compilation_assembly( + unique int id : @compilation ref, + int assembly: @assembly ref +) + +// Populated by the CSV extractor +externalData( + int id: @externalDataElement, + string path: string ref, + int column: int ref, + string value: string ref); + +sourceLocationPrefix( + string prefix: string ref); + +/* + * Overlay support + */ + +/** + * The CLI will automatically emit the tuple `databaseMetadata("isOverlay", "true")`, + * along with an `overlayChangedFiles` tuple for each new/modified/deleted file, + * when building an overlay database, and these can be used by the discard predicates. + */ +databaseMetadata( + string metadataKey : string ref, + string value : string ref +); + +overlayChangedFiles( + string path : string ref +); + +/* + * C# dbscheme + */ + +/** ELEMENTS **/ + +@element = @declaration | @stmt | @expr | @modifier | @attribute | @namespace_declaration + | @using_directive | @type_parameter_constraints | @externalDataElement + | @xmllocatable | @asp_element | @namespace | @preprocessor_directive; + +@declaration = @callable | @generic | @assignable | @namespace; + +@named_element = @namespace | @declaration; + +@declaration_with_accessors = @property | @indexer | @event; + +@assignable = @variable | @assignable_with_accessors | @event; + +@assignable_with_accessors = @property | @indexer; + +@attributable = @assembly | @field | @parameter | @operator | @method | @constructor + | @destructor | @callable_accessor | @value_or_ref_type | @declaration_with_accessors + | @local_function | @lambda_expr; + +/** LOCATIONS, ASEMMBLIES, MODULES, FILES and FOLDERS **/ + +@location = @location_default | @assembly; + +@locatable = @declaration_with_accessors | @callable_accessor | @declaration_or_directive + | @diagnostic | @extractor_message | @preprocessor_directive | @attribute | @type_mention | @type_parameter_constraints + | @declaration_with_accessors | @callable_accessor | @operator | @method + | @constructor | @destructor | @field | @local_variable | @parameter | @stmt | @expr + | @xmllocatable | @commentline | @commentblock | @asp_element + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +locations_mapped( + unique int id: @location_default ref, + int mapped_to: @location_default ref); + +@sourceline = @file | @callable | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref); + +assemblies( + unique int id: @assembly, + int file: @file ref, + string fullname: string ref, + string name: string ref, + string version: string ref); + +files( + unique int id: @file, + string name: string ref); + +folders( + unique int id: @folder, + string name: string ref); + +@container = @folder | @file ; + +containerparent( + int parent: @container ref, + unique int child: @container ref); + +file_extraction_mode( + unique int file: @file ref, + int mode: int ref + /* 0 = normal, 1 = standalone extractor */ + ); + +/** NAMESPACES **/ + +@type_container = @namespace | @type; + +namespaces( + unique int id: @namespace, + string name: string ref); + +namespace_declarations( + unique int id: @namespace_declaration, + int namespace_id: @namespace ref); + +namespace_declaration_location( + unique int id: @namespace_declaration ref, + int loc: @location ref); + +parent_namespace( + unique int child_id: @type_container ref, + int namespace_id: @namespace ref); + +@declaration_or_directive = @namespace_declaration | @type | @using_directive; + +parent_namespace_declaration( + int child_id: @declaration_or_directive ref, // cannot be unique because of partial classes + int namespace_id: @namespace_declaration ref); + +@using_directive = @using_namespace_directive | @using_static_directive; + +using_global( + unique int id: @using_directive ref +); + +using_namespace_directives( + unique int id: @using_namespace_directive, + int namespace_id: @namespace ref); + +using_static_directives( + unique int id: @using_static_directive, + int type_id: @type_or_ref ref); + +using_directive_location( + unique int id: @using_directive ref, + int loc: @location ref); + +@preprocessor_directive = @pragma_warning | @pragma_checksum | @directive_define | @directive_undefine | @directive_warning + | @directive_error | @directive_nullable | @directive_line | @directive_region | @directive_endregion | @directive_if + | @directive_elif | @directive_else | @directive_endif; + +@conditional_directive = @directive_if | @directive_elif; +@branch_directive = @directive_if | @directive_elif | @directive_else; + +directive_ifs( + unique int id: @directive_if, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref); /* 0: false, 1: true */ + +directive_elifs( + unique int id: @directive_elif, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +directive_elses( + unique int id: @directive_else, + int branchTaken: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +#keyset[id, start] +directive_endifs( + unique int id: @directive_endif, + unique int start: @directive_if ref); + +directive_define_symbols( + unique int id: @define_symbol_expr ref, + string name: string ref); + +directive_regions( + unique int id: @directive_region, + string name: string ref); + +#keyset[id, start] +directive_endregions( + unique int id: @directive_endregion, + unique int start: @directive_region ref); + +directive_lines( + unique int id: @directive_line, + int kind: int ref); /* 0: default, 1: hidden, 2: numeric, 3: span */ + +directive_line_value( + unique int id: @directive_line ref, + int line: int ref); + +directive_line_file( + unique int id: @directive_line ref, + int file: @file ref); + +directive_line_offset( + unique int id: @directive_line ref, + int offset: int ref); + +directive_line_span( + unique int id: @directive_line ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +directive_nullables( + unique int id: @directive_nullable, + int setting: int ref, /* 0: disable, 1: enable, 2: restore */ + int target: int ref); /* 0: none, 1: annotations, 2: warnings */ + +directive_warnings( + unique int id: @directive_warning, + string message: string ref); + +directive_errors( + unique int id: @directive_error, + string message: string ref); + +directive_undefines( + unique int id: @directive_undefine, + string name: string ref); + +directive_defines( + unique int id: @directive_define, + string name: string ref); + +pragma_checksums( + unique int id: @pragma_checksum, + int file: @file ref, + string guid: string ref, + string bytes: string ref); + +pragma_warnings( + unique int id: @pragma_warning, + int kind: int ref /* 0 = disable, 1 = restore */); + +#keyset[id, index] +pragma_warning_error_codes( + int id: @pragma_warning ref, + string errorCode: string ref, + int index: int ref); + +preprocessor_directive_location( + unique int id: @preprocessor_directive ref, + int loc: @location ref); + +preprocessor_directive_compilation( + int id: @preprocessor_directive ref, + int compilation: @compilation ref); + +preprocessor_directive_active( + unique int id: @preprocessor_directive ref, + int active: int ref); /* 0: false, 1: true */ + +/** TYPES **/ + +types( + unique int id: @type, + int kind: int ref, + string name: string ref); + +case @type.kind of + 1 = @bool_type +| 2 = @char_type +| 3 = @decimal_type +| 4 = @sbyte_type +| 5 = @short_type +| 6 = @int_type +| 7 = @long_type +| 8 = @byte_type +| 9 = @ushort_type +| 10 = @uint_type +| 11 = @ulong_type +| 12 = @float_type +| 13 = @double_type +| 14 = @enum_type +| 15 = @struct_type +| 17 = @class_type +| 19 = @interface_type +| 20 = @delegate_type +| 21 = @null_type +| 22 = @type_parameter +| 23 = @pointer_type +| 24 = @nullable_type +| 25 = @array_type +| 26 = @void_type +| 27 = @int_ptr_type +| 28 = @uint_ptr_type +| 29 = @dynamic_type +| 30 = @arglist_type +| 31 = @unknown_type +| 32 = @tuple_type +| 33 = @function_pointer_type +| 34 = @inline_array_type +| 35 = @extension_type + ; + +@simple_type = @bool_type | @char_type | @integral_type | @floating_point_type | @decimal_type; +@integral_type = @signed_integral_type | @unsigned_integral_type; +@signed_integral_type = @sbyte_type | @short_type | @int_type | @long_type; +@unsigned_integral_type = @byte_type | @ushort_type | @uint_type | @ulong_type; +@floating_point_type = @float_type | @double_type; +@value_type = @simple_type | @enum_type | @struct_type | @nullable_type | @int_ptr_type + | @uint_ptr_type | @tuple_type | @void_type | @inline_array_type; +@ref_type = @class_type | @interface_type | @array_type | @delegate_type | @null_type + | @dynamic_type | @extension_type; +@value_or_ref_type = @value_type | @ref_type; + +typerefs( + unique int id: @typeref, + string name: string ref); + +typeref_type( + int id: @typeref ref, + unique int typeId: @type ref); + +@type_or_ref = @type | @typeref; + +array_element_type( + unique int array: @array_type ref, + int dimension: int ref, + int rank: int ref, + int element: @type_or_ref ref); + +nullable_underlying_type( + unique int nullable: @nullable_type ref, + int underlying: @type_or_ref ref); + +pointer_referent_type( + unique int pointer: @pointer_type ref, + int referent: @type_or_ref ref); + +enum_underlying_type( + unique int enum_id: @enum_type ref, + int underlying_type_id: @type_or_ref ref); + +delegate_return_type( + unique int delegate_id: @delegate_type ref, + int return_type_id: @type_or_ref ref); + +function_pointer_return_type( + unique int function_pointer_id: @function_pointer_type ref, + int return_type_id: @type_or_ref ref); + +extension_receiver_type( + unique int extension: @extension_type ref, + int receiver_type_id: @type_or_ref ref); + +extend( + int sub: @type ref, + int super: @type_or_ref ref); + +anonymous_types( + unique int id: @type ref); + +@interface_or_ref = @interface_type | @typeref; + +implement( + int sub: @type ref, + int super: @type_or_ref ref); + +type_location( + int id: @type ref, + int loc: @location ref); + +tuple_underlying_type( + unique int tuple: @tuple_type ref, + int struct: @type_or_ref ref); + +#keyset[tuple, index] +tuple_element( + int tuple: @tuple_type ref, + int index: int ref, + unique int field: @field ref); + +attributes( + unique int id: @attribute, + int kind: int ref, + int type_id: @type_or_ref ref, + int target: @attributable ref); + +case @attribute.kind of + 0 = @attribute_default +| 1 = @attribute_return +| 2 = @attribute_assembly +| 3 = @attribute_module +; + +attribute_location( + int id: @attribute ref, + int loc: @location ref); + +@type_mention_parent = @element | @type_mention; + +type_mention( + unique int id: @type_mention, + int type_id: @type_or_ref ref, + int parent: @type_mention_parent ref); + +type_mention_location( + unique int id: @type_mention ref, + int loc: @location ref); + +@has_type_annotation = @assignable | @type_parameter | @callable | @expr | @delegate_type | @generic | @function_pointer_type; + +/** + * A direct annotation on an entity, for example `string? x;`. + * + * Annotations: + * 2 = reftype is not annotated "!" + * 3 = reftype is annotated "?" + * 4 = readonly ref type / in parameter + * 5 = ref type parameter, return or local variable + * 6 = out parameter + * + * Note that the annotation depends on the element it annotates. + * @assignable: The annotation is on the type of the assignable, for example the variable type. + * @type_parameter: The annotation is on the reftype constraint + * @callable: The annotation is on the return type + * @array_type: The annotation is on the element type + */ +type_annotation(int id: @has_type_annotation ref, int annotation: int ref); + +nullability(unique int nullability: @nullability, int kind: int ref); + +case @nullability.kind of + 0 = @oblivious +| 1 = @not_annotated +| 2 = @annotated +; + +#keyset[parent, index] +nullability_parent(int nullability: @nullability ref, int index: int ref, int parent: @nullability ref) + +type_nullability(int id: @has_type_annotation ref, int nullability: @nullability ref); + +/** + * The nullable flow state of an expression, as determined by Roslyn. + * 0 = none (default, not populated) + * 1 = not null + * 2 = maybe null + */ +expr_flowstate(unique int id: @expr ref, int state: int ref); + +/** GENERICS **/ + +@generic = @type | @method | @local_function; + +type_parameters( + unique int id: @type_parameter ref, + int index: int ref, + int generic_id: @generic ref, + int variance: int ref /* none = 0, out = 1, in = 2 */); + +#keyset[constructed_id, index] +type_arguments( + int id: @type_or_ref ref, + int index: int ref, + int constructed_id: @generic_or_ref ref); + +@generic_or_ref = @generic | @typeref; + +constructed_generic( + unique int constructed: @generic ref, + int generic: @generic_or_ref ref); + +type_parameter_constraints( + unique int id: @type_parameter_constraints, + int param_id: @type_parameter ref); + +type_parameter_constraints_location( + int id: @type_parameter_constraints ref, + int loc: @location ref); + +general_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int kind: int ref /* class = 1, struct = 2, new = 3 */); + +specific_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref); + +specific_type_parameter_nullability( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref, + int nullability: @nullability ref); + +/** FUNCTION POINTERS */ + +function_pointer_calling_conventions( + int id: @function_pointer_type ref, + int kind: int ref); + +#keyset[id, index] +has_unmanaged_calling_conventions( + int id: @function_pointer_type ref, + int index: int ref, + int conv_id: @type_or_ref ref); + +/** MODIFIERS */ + +@modifiable = @modifiable_direct | @event_accessor; + +@modifiable_direct = @member | @accessor | @local_function | @anonymous_function_expr; + +modifiers( + unique int id: @modifier, + string name: string ref); + +has_modifiers( + int id: @modifiable_direct ref, + int mod_id: @modifier ref); + +/** MEMBERS **/ + +@member = @method | @constructor | @destructor | @field | @property | @event | @operator | @indexer | @type; + +@named_exprorstmt = @goto_stmt | @labeled_stmt | @expr; + +@virtualizable = @method | @property | @indexer | @event | @operator; + +exprorstmt_name( + unique int parent_id: @named_exprorstmt ref, + string name: string ref); + +nested_types( + unique int id: @type ref, + int declaring_type_id: @type ref, + int unbound_id: @type ref); + +properties( + unique int id: @property, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @property ref); + +property_location( + int id: @property ref, + int loc: @location ref); + +indexers( + unique int id: @indexer, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @indexer ref); + +indexer_location( + int id: @indexer ref, + int loc: @location ref); + +accessors( + unique int id: @accessor, + int kind: int ref, + string name: string ref, + int declaring_member_id: @member ref, + int unbound_id: @accessor ref); + +case @accessor.kind of + 1 = @getter +| 2 = @setter + ; + +init_only_accessors( + unique int id: @accessor ref); + +accessor_location( + int id: @accessor ref, + int loc: @location ref); + +events( + unique int id: @event, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @event ref); + +event_location( + int id: @event ref, + int loc: @location ref); + +event_accessors( + unique int id: @event_accessor, + int kind: int ref, + string name: string ref, + int declaring_event_id: @event ref, + int unbound_id: @event_accessor ref); + +case @event_accessor.kind of + 1 = @add_event_accessor +| 2 = @remove_event_accessor + ; + +event_accessor_location( + int id: @event_accessor ref, + int loc: @location ref); + +operators( + unique int id: @operator, + string name: string ref, + string symbol: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @operator ref); + +operator_location( + int id: @operator ref, + int loc: @location ref); + +constant_value( + int id: @variable ref, + string value: string ref); + +/** CALLABLES **/ + +@callable = @method | @constructor | @destructor | @operator | @callable_accessor | @anonymous_function_expr | @local_function; + +@callable_accessor = @accessor | @event_accessor; + +methods( + unique int id: @method, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @method ref); + +method_location( + int id: @method ref, + int loc: @location ref); + +constructors( + unique int id: @constructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @constructor ref); + +constructor_location( + int id: @constructor ref, + int loc: @location ref); + +destructors( + unique int id: @destructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @destructor ref); + +destructor_location( + int id: @destructor ref, + int loc: @location ref); + +overrides( + int id: @callable ref, + int base_id: @callable ref); + +explicitly_implements( + int id: @member ref, + int interface_id: @interface_or_ref ref); + +local_functions( + unique int id: @local_function, + string name: string ref, + int return_type: @type ref, + int unbound_id: @local_function ref); + +local_function_stmts( + unique int fn: @local_function_stmt ref, + int stmt: @local_function ref); + +/** VARIABLES **/ + +@variable = @local_scope_variable | @field; + +@local_scope_variable = @local_variable | @parameter; + +fields( + unique int id: @field, + int kind: int ref, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @field ref); + +case @field.kind of + 1 = @addressable_field +| 2 = @constant + ; + +field_location( + int id: @field ref, + int loc: @location ref); + +localvars( + unique int id: @local_variable, + int kind: int ref, + string name: string ref, + int implicitly_typed: int ref /* 0 = no, 1 = yes */, + int type_id: @type_or_ref ref, + int parent_id: @local_var_decl_expr ref); + +case @local_variable.kind of + 1 = @addressable_local_variable +| 2 = @local_constant +| 3 = @local_variable_ref + ; + +localvar_location( + unique int id: @local_variable ref, + int loc: @location ref); + +@parameterizable = @callable | @delegate_type | @indexer | @function_pointer_type | @extension_type; + +#keyset[name, parent_id] +#keyset[index, parent_id] +params( + unique int id: @parameter, + string name: string ref, + int type_id: @type_or_ref ref, + int index: int ref, + int mode: int ref, /* value = 0, ref = 1, out = 2, params/array = 3, this = 4, in = 5, ref readonly = 6 */ + int parent_id: @parameterizable ref, + int unbound_id: @parameter ref); + +param_location( + int id: @parameter ref, + int loc: @location ref); + +@has_scoped_annotation = @local_scope_variable + +scoped_annotation( + int id: @has_scoped_annotation ref, + int kind: int ref // scoped ref = 1, scoped value = 2 + ); + +/** STATEMENTS **/ + +@exprorstmt_parent = @control_flow_element | @top_level_exprorstmt_parent; + +statements( + unique int id: @stmt, + int kind: int ref); + +#keyset[index, parent] +stmt_parent( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_stmt_parent = @callable; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +stmt_parent_top_level( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @top_level_stmt_parent ref); + +case @stmt.kind of + 1 = @block_stmt +| 2 = @expr_stmt +| 3 = @if_stmt +| 4 = @switch_stmt +| 5 = @while_stmt +| 6 = @do_stmt +| 7 = @for_stmt +| 8 = @foreach_stmt +| 9 = @break_stmt +| 10 = @continue_stmt +| 11 = @goto_stmt +| 12 = @goto_case_stmt +| 13 = @goto_default_stmt +| 14 = @throw_stmt +| 15 = @return_stmt +| 16 = @yield_stmt +| 17 = @try_stmt +| 18 = @checked_stmt +| 19 = @unchecked_stmt +| 20 = @lock_stmt +| 21 = @using_block_stmt +| 22 = @var_decl_stmt +| 23 = @const_decl_stmt +| 24 = @empty_stmt +| 25 = @unsafe_stmt +| 26 = @fixed_stmt +| 27 = @label_stmt +| 28 = @catch +| 29 = @case_stmt +| 30 = @local_function_stmt +| 31 = @using_decl_stmt + ; + +@using_stmt = @using_block_stmt | @using_decl_stmt; + +@labeled_stmt = @label_stmt | @case; + +@decl_stmt = @var_decl_stmt | @const_decl_stmt | @using_decl_stmt; + +@cond_stmt = @if_stmt | @switch_stmt; + +@loop_stmt = @while_stmt | @do_stmt | @for_stmt | @foreach_stmt; + +@jump_stmt = @break_stmt | @goto_any_stmt | @continue_stmt | @throw_stmt | @return_stmt + | @yield_stmt; + +@goto_any_stmt = @goto_default_stmt | @goto_case_stmt | @goto_stmt; + + +stmt_location( + unique int id: @stmt ref, + int loc: @location ref); + +catch_type( + unique int catch_id: @catch ref, + int type_id: @type_or_ref ref, + int kind: int ref /* explicit = 1, implicit = 2 */); + +foreach_stmt_info( + unique int id: @foreach_stmt ref, + int kind: int ref /* non-async = 1, async = 2 */); + +@foreach_symbol = @method | @property | @type_or_ref; + +#keyset[id, kind] +foreach_stmt_desugar( + int id: @foreach_stmt ref, + int symbol: @foreach_symbol ref, + int kind: int ref /* GetEnumeratorMethod = 1, CurrentProperty = 2, MoveNextMethod = 3, DisposeMethod = 4, ElementType = 5 */); + +/** EXPRESSIONS **/ + +expressions( + unique int id: @expr, + int kind: int ref, + int type_id: @type_or_ref ref); + +#keyset[index, parent] +expr_parent( + unique int expr: @expr ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_expr_parent = @attribute | @field | @property | @indexer | @parameter | @directive_if | @directive_elif; + +@top_level_exprorstmt_parent = @top_level_expr_parent | @top_level_stmt_parent; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +expr_parent_top_level( + unique int expr: @expr ref, + int index: int ref, + int parent: @top_level_exprorstmt_parent ref); + +case @expr.kind of +/* literal */ + 1 = @bool_literal_expr +| 2 = @char_literal_expr +| 3 = @decimal_literal_expr +| 4 = @int_literal_expr +| 5 = @long_literal_expr +| 6 = @uint_literal_expr +| 7 = @ulong_literal_expr +| 8 = @float_literal_expr +| 9 = @double_literal_expr +| 10 = @utf16_string_literal_expr +| 11 = @null_literal_expr +/* primary & unary */ +| 12 = @this_access_expr +| 13 = @base_access_expr +| 14 = @local_variable_access_expr +| 15 = @parameter_access_expr +| 16 = @field_access_expr +| 17 = @property_access_expr +| 18 = @method_access_expr +| 19 = @event_access_expr +| 20 = @indexer_access_expr +| 21 = @array_access_expr +| 22 = @type_access_expr +| 23 = @typeof_expr +| 24 = @method_invocation_expr +| 25 = @delegate_invocation_expr +| 26 = @operator_invocation_expr +| 27 = @cast_expr +| 28 = @object_creation_expr +| 29 = @explicit_delegate_creation_expr +| 30 = @implicit_delegate_creation_expr +| 31 = @array_creation_expr +| 32 = @default_expr +| 33 = @plus_expr +| 34 = @minus_expr +| 35 = @bit_not_expr +| 36 = @log_not_expr +| 37 = @post_incr_expr +| 38 = @post_decr_expr +| 39 = @pre_incr_expr +| 40 = @pre_decr_expr +/* multiplicative */ +| 41 = @mul_expr +| 42 = @div_expr +| 43 = @rem_expr +/* additive */ +| 44 = @add_expr +| 45 = @sub_expr +/* shift */ +| 46 = @lshift_expr +| 47 = @rshift_expr +/* relational */ +| 48 = @lt_expr +| 49 = @gt_expr +| 50 = @le_expr +| 51 = @ge_expr +/* equality */ +| 52 = @eq_expr +| 53 = @ne_expr +/* logical */ +| 54 = @bit_and_expr +| 55 = @bit_xor_expr +| 56 = @bit_or_expr +| 57 = @log_and_expr +| 58 = @log_or_expr +/* type testing */ +| 59 = @is_expr +| 60 = @as_expr +/* null coalescing */ +| 61 = @null_coalescing_expr +/* conditional */ +| 62 = @conditional_expr +/* assignment */ +| 63 = @simple_assign_expr +| 64 = @assign_add_expr +| 65 = @assign_sub_expr +| 66 = @assign_mul_expr +| 67 = @assign_div_expr +| 68 = @assign_rem_expr +| 69 = @assign_and_expr +| 70 = @assign_xor_expr +| 71 = @assign_or_expr +| 72 = @assign_lshift_expr +| 73 = @assign_rshift_expr +/* more */ +| 74 = @object_init_expr +| 75 = @collection_init_expr +| 76 = @array_init_expr +| 77 = @checked_expr +| 78 = @unchecked_expr +| 79 = @constructor_init_expr +| 80 = @add_event_expr +| 81 = @remove_event_expr +| 82 = @par_expr +| 83 = @local_var_decl_expr +| 84 = @lambda_expr +| 85 = @anonymous_method_expr +| 86 = @namespace_expr +/* dynamic */ +| 92 = @dynamic_element_access_expr +| 93 = @dynamic_member_access_expr +/* unsafe */ +| 100 = @pointer_indirection_expr +| 101 = @address_of_expr +| 102 = @sizeof_expr +/* async */ +| 103 = @await_expr +/* C# 6.0 */ +| 104 = @nameof_expr +| 105 = @interpolated_string_expr +| 106 = @unknown_expr +/* C# 7.0 */ +| 107 = @throw_expr +| 108 = @tuple_expr +| 109 = @local_function_invocation_expr +| 110 = @ref_expr +| 111 = @discard_expr +/* C# 8.0 */ +| 112 = @range_expr +| 113 = @index_expr +| 114 = @switch_expr +| 115 = @recursive_pattern_expr +| 116 = @property_pattern_expr +| 117 = @positional_pattern_expr +| 118 = @switch_case_expr +| 119 = @assign_coalesce_expr +| 120 = @suppress_nullable_warning_expr +| 121 = @namespace_access_expr +/* C# 9.0 */ +| 122 = @lt_pattern_expr +| 123 = @gt_pattern_expr +| 124 = @le_pattern_expr +| 125 = @ge_pattern_expr +| 126 = @not_pattern_expr +| 127 = @and_pattern_expr +| 128 = @or_pattern_expr +| 129 = @function_pointer_invocation_expr +| 130 = @with_expr +/* C# 11.0 */ +| 131 = @list_pattern_expr +| 132 = @slice_pattern_expr +| 133 = @urshift_expr +| 134 = @assign_urshift_expr +| 135 = @utf8_string_literal_expr +/* C# 12.0 */ +| 136 = @collection_expr +| 137 = @spread_element_expr +| 138 = @interpolated_string_insert_expr +/* Preprocessor */ +| 999 = @define_symbol_expr +; + +@switch = @switch_stmt | @switch_expr; +@case = @case_stmt | @switch_case_expr; +@pattern_match = @case | @is_expr; +@unary_pattern_expr = @not_pattern_expr; +@relational_pattern_expr = @gt_pattern_expr | @lt_pattern_expr | @ge_pattern_expr | @le_pattern_expr; +@binary_pattern_expr = @and_pattern_expr | @or_pattern_expr; + +@integer_literal_expr = @int_literal_expr | @long_literal_expr | @uint_literal_expr | @ulong_literal_expr; +@real_literal_expr = @float_literal_expr | @double_literal_expr | @decimal_literal_expr; +@string_literal_expr = @utf16_string_literal_expr | @utf8_string_literal_expr; +@literal_expr = @bool_literal_expr | @char_literal_expr | @integer_literal_expr | @real_literal_expr + | @string_literal_expr | @null_literal_expr; + +@assign_expr = @simple_assign_expr | @assign_op_expr | @local_var_decl_expr; +@assign_op_call_expr = @assign_arith_expr | @assign_bitwise_expr +@assign_op_expr = @assign_op_call_expr | @assign_event_expr | @assign_coalesce_expr; +@assign_event_expr = @add_event_expr | @remove_event_expr; + +@add_operation = @add_expr | @assign_add_expr; +@sub_operation = @sub_expr | @assign_sub_expr; +@mul_operation = @mul_expr | @assign_mul_expr; +@div_operation = @div_expr | @assign_div_expr; +@rem_operation = @rem_expr | @assign_rem_expr; +@and_operation = @bit_and_expr | @assign_and_expr; +@xor_operation = @bit_xor_expr | @assign_xor_expr; +@or_operation = @bit_or_expr | @assign_or_expr; +@lshift_operation = @lshift_expr | @assign_lshift_expr; +@rshift_operation = @rshift_expr | @assign_rshift_expr; +@urshift_operation = @urshift_expr | @assign_urshift_expr; +@null_coalescing_operation = @null_coalescing_expr | @assign_coalesce_expr; + +@assign_arith_expr = @assign_add_expr | @assign_sub_expr | @assign_mul_expr | @assign_div_expr + | @assign_rem_expr +@assign_bitwise_expr = @assign_and_expr | @assign_or_expr | @assign_xor_expr + | @assign_lshift_expr | @assign_rshift_expr | @assign_urshift_expr; + +@member_access_expr = @field_access_expr | @property_access_expr | @indexer_access_expr | @event_access_expr + | @method_access_expr | @type_access_expr | @dynamic_member_access_expr; +@access_expr = @member_access_expr | @this_access_expr | @base_access_expr | @assignable_access_expr | @namespace_access_expr; +@element_access_expr = @indexer_access_expr | @array_access_expr | @dynamic_element_access_expr; + +@local_variable_access = @local_variable_access_expr | @local_var_decl_expr; +@local_scope_variable_access_expr = @parameter_access_expr | @local_variable_access; +@variable_access_expr = @local_scope_variable_access_expr | @field_access_expr; + +@assignable_access_expr = @variable_access_expr | @property_access_expr | @element_access_expr + | @event_access_expr | @dynamic_member_access_expr; + +@objectorcollection_init_expr = @object_init_expr | @collection_init_expr; + +@delegate_creation_expr = @explicit_delegate_creation_expr | @implicit_delegate_creation_expr; + +@bin_arith_op_expr = @mul_expr | @div_expr | @rem_expr | @add_expr | @sub_expr; +@incr_op_expr = @pre_incr_expr | @post_incr_expr; +@decr_op_expr = @pre_decr_expr | @post_decr_expr; +@mut_op_expr = @incr_op_expr | @decr_op_expr; +@un_arith_op_expr = @plus_expr | @minus_expr | @mut_op_expr; +@arith_op_expr = @bin_arith_op_expr | @un_arith_op_expr; + +@ternary_log_op_expr = @conditional_expr; +@bin_log_op_expr = @log_and_expr | @log_or_expr | @null_coalescing_expr; +@un_log_op_expr = @log_not_expr; +@log_expr = @un_log_op_expr | @bin_log_op_expr | @ternary_log_op_expr; + +@bin_bit_op_expr = @bit_and_expr | @bit_or_expr | @bit_xor_expr | @lshift_expr + | @rshift_expr | @urshift_expr; +@un_bit_op_expr = @bit_not_expr; +@bit_expr = @un_bit_op_expr | @bin_bit_op_expr; + +@equality_op_expr = @eq_expr | @ne_expr; +@rel_op_expr = @gt_expr | @lt_expr| @ge_expr | @le_expr; +@comp_expr = @equality_op_expr | @rel_op_expr; + +@op_expr = @un_op | @bin_op | @ternary_op; + +@ternary_op = @ternary_log_op_expr; +@bin_op = @assign_expr | @bin_arith_op_expr | @bin_log_op_expr | @bin_bit_op_expr | @comp_expr; +@un_op = @un_arith_op_expr | @un_log_op_expr | @un_bit_op_expr | @sizeof_expr + | @pointer_indirection_expr | @address_of_expr; + +@anonymous_function_expr = @lambda_expr | @anonymous_method_expr; + +@op_invoke_expr = @operator_invocation_expr | @assign_op_call_expr +@call = @method_invocation_expr | @constructor_init_expr | @op_invoke_expr + | @delegate_invocation_expr | @object_creation_expr | @call_access_expr + | @local_function_invocation_expr | @function_pointer_invocation_expr; + +@call_access_expr = @property_access_expr | @event_access_expr | @indexer_access_expr; + +@late_bindable_expr = @dynamic_element_access_expr | @dynamic_member_access_expr + | @object_creation_expr | @method_invocation_expr | @op_invoke_expr; + +@throw_element = @throw_expr | @throw_stmt; + +@implicitly_typeable_object_creation_expr = @object_creation_expr | @explicit_delegate_creation_expr; + +implicitly_typed_array_creation( + unique int id: @array_creation_expr ref); + +explicitly_sized_array_creation( + unique int id: @array_creation_expr ref); + +stackalloc_array_creation( + unique int id: @array_creation_expr ref); + +implicitly_typed_object_creation( + unique int id: @implicitly_typeable_object_creation_expr ref); + +mutator_invocation_mode( + unique int id: @operator_invocation_expr ref, + int mode: int ref /* prefix = 1, postfix = 2*/); + +expr_value( + unique int id: @expr ref, + string value: string ref); + +expr_call( + unique int caller_id: @expr ref, + int target_id: @callable ref); + +expr_access( + unique int accesser_id: @access_expr ref, + int target_id: @accessible ref); + +@accessible = @method | @assignable | @local_function | @namespace; + +expr_location( + unique int id: @expr ref, + int loc: @location ref); + +dynamic_member_name( + unique int id: @late_bindable_expr ref, + string name: string ref); + +@qualifiable_expr = @member_access_expr + | @method_invocation_expr + | @element_access_expr; + +conditional_access( + unique int id: @qualifiable_expr ref); + +expr_argument( + unique int id: @expr ref, + int mode: int ref); + /* mode is the same as params: value = 0, ref = 1, out = 2 */ + +expr_argument_name( + unique int id: @expr ref, + string name: string ref); + +lambda_expr_return_type( + unique int id: @lambda_expr ref, + int type_id: @type_or_ref ref); + +/* Compiler generated */ + +compiler_generated(unique int id: @element ref); + +/** CONTROL/DATA FLOW **/ + +@control_flow_element = @stmt | @expr; + +/* XML Files */ + +xmlEncoding ( + unique int id: @file ref, + string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* Comments */ + +commentline( + unique int id: @commentline, + int kind: int ref, + string text: string ref, + string rawtext: string ref); + +case @commentline.kind of + 0 = @singlelinecomment +| 1 = @xmldoccomment +| 2 = @multilinecomment; + +commentline_location( + unique int id: @commentline ref, + int loc: @location ref); + +commentblock( + unique int id : @commentblock); + +commentblock_location( + unique int id: @commentblock ref, + int loc: @location ref); + +commentblock_binding( + int id: @commentblock ref, + int entity: @element ref, + int bindtype: int ref); /* 0: Parent, 1: Best, 2: Before, 3: After */ + +commentblock_child( + int id: @commentblock ref, + int commentline: @commentline ref, + int index: int ref); + +/* ASP.NET */ + +case @asp_element.kind of + 0=@asp_close_tag +| 1=@asp_code +| 2=@asp_comment +| 3=@asp_data_binding +| 4=@asp_directive +| 5=@asp_open_tag +| 6=@asp_quoted_string +| 7=@asp_text +| 8=@asp_xml_directive; + +@asp_attribute = @asp_code | @asp_data_binding | @asp_quoted_string; + +asp_elements( + unique int id: @asp_element, + int kind: int ref, + int loc: @location ref); + +asp_comment_server(unique int comment: @asp_comment ref); +asp_code_inline(unique int code: @asp_code ref); +asp_directive_attribute( + int directive: @asp_directive ref, + int index: int ref, + string name: string ref, + int value: @asp_quoted_string ref); +asp_directive_name( + unique int directive: @asp_directive ref, + string name: string ref); +asp_element_body( + unique int element: @asp_element ref, + string body: string ref); +asp_tag_attribute( + int tag: @asp_open_tag ref, + int index: int ref, + string name: string ref, + int attribute: @asp_attribute ref); +asp_tag_name( + unique int tag: @asp_open_tag ref, + string name: string ref); +asp_tag_isempty(int tag: @asp_open_tag ref); diff --git a/csharp/downgrades/ea7ad33252e550241975676f09fcc7b0a703deab/upgrade.properties b/csharp/downgrades/ea7ad33252e550241975676f09fcc7b0a703deab/upgrade.properties new file mode 100644 index 000000000000..160cdb12de4c --- /dev/null +++ b/csharp/downgrades/ea7ad33252e550241975676f09fcc7b0a703deab/upgrade.properties @@ -0,0 +1,2 @@ +description: Remove @assign_op_call_expr from @qualifiable_expr. +compatibility: full diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs index 9d3d79e4c4ff..699e06d273c8 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/DotNet.cs @@ -95,9 +95,9 @@ private string GetRestoreArgs(RestoreSettings restoreSettings) args += " /p:EnableWindowsTargeting=true"; } - if (restoreSettings.ExtraArgs is not null) + if (restoreSettings.NugetSources is not null) { - args += $" {restoreSettings.ExtraArgs}"; + args += $" {restoreSettings.NugetSources}"; } return args; diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNet.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNet.cs index eec6a2b8d3b2..d14dee506524 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNet.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/IDotNet.cs @@ -17,7 +17,7 @@ public interface IDotNet IList GetNugetFeedsFromFolder(string folderPath); } - public record class RestoreSettings(string File, string PackageDirectory, bool ForceDotnetRefAssemblyFetching, string? ExtraArgs = null, string? PathToNugetConfig = null, bool ForceReevaluation = false, bool TargetWindows = false); + public record class RestoreSettings(string File, string PackageDirectory, bool ForceDotnetRefAssemblyFetching, string? NugetSources = null, string? PathToNugetConfig = null, bool ForceReevaluation = false, bool TargetWindows = false); public partial record class RestoreResult(bool Success, IList Output) { @@ -33,6 +33,9 @@ public partial record class RestoreResult(bool Success, IList Output) private readonly Lazy hasNugetNoStablePackageVersionError = new(() => Output.Any(s => s.Contains("NU1103"))); public bool HasNugetNoStablePackageVersionError => hasNugetNoStablePackageVersionError.Value; + private readonly Lazy hasNugetPackageMissingError = new(() => Output.Any(s => s.Contains("NU1101"))); + public bool HasNugetPackageMissingError => hasNugetPackageMissingError.Value; + private static IEnumerable GetFirstGroupOnMatch(Regex regex, IEnumerable lines) => lines .Select(line => regex.Match(line)) diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetExeWrapper.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetExeWrapper.cs index b90b388e865c..e97b0b118c68 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetExeWrapper.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetExeWrapper.cs @@ -33,7 +33,7 @@ internal class NugetExeWrapper : IDisposable /// /// Create the package manager for a specified source tree. /// - public NugetExeWrapper(FileProvider fileProvider, DependencyDirectory packageDirectory, Semmle.Util.Logging.ILogger logger) + public NugetExeWrapper(FileProvider fileProvider, DependencyDirectory packageDirectory, Semmle.Util.Logging.ILogger logger, Func useDefaultFeed) { this.fileProvider = fileProvider; this.packageDirectory = packageDirectory; @@ -43,7 +43,7 @@ public NugetExeWrapper(FileProvider fileProvider, DependencyDirectory packageDir { logger.LogInfo($"Found packages.config files, trying to use nuget.exe for package restore"); nugetExe = ResolveNugetExe(); - if (HasNoPackageSource()) + if (HasNoPackageSource() && useDefaultFeed()) { // We only modify or add a top level nuget.config file nugetConfigPath = Path.Combine(fileProvider.SourceDir.FullName, "nuget.config"); diff --git a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs index 1d01412ee051..e042285af11c 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.DependencyFetching/NugetPackageRestorer.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Concurrent; using System.Collections.Generic; +using System.Collections.Immutable; using System.IO; using System.Linq; using System.Net; @@ -27,8 +28,12 @@ internal sealed partial class NugetPackageRestorer : IDisposable private readonly IDiagnosticsWriter diagnosticsWriter; private readonly DependencyDirectory legacyPackageDirectory; private readonly DependencyDirectory missingPackageDirectory; + private readonly DependencyDirectory emptyPackageDirectory; private readonly ILogger logger; private readonly ICompilationInfoContainer compilationInfoContainer; + private readonly bool checkNugetFeedResponsiveness = EnvironmentVariables.GetBooleanOptOut(EnvironmentVariableNames.CheckNugetFeedResponsiveness); + private readonly ImmutableHashSet privateRegistryFeeds; + private readonly bool hasPrivateRegistryFeeds; public DependencyDirectory PackageDirectory { get; } @@ -45,6 +50,8 @@ public NugetPackageRestorer( this.fileContent = fileContent; this.dotnet = dotnet; this.dependabotProxy = dependabotProxy; + this.privateRegistryFeeds = dependabotProxy?.RegistryURLs.ToImmutableHashSet() ?? []; + this.hasPrivateRegistryFeeds = privateRegistryFeeds.Count > 0; this.diagnosticsWriter = diagnosticsWriter; this.logger = logger; this.compilationInfoContainer = compilationInfoContainer; @@ -52,6 +59,7 @@ public NugetPackageRestorer( PackageDirectory = new DependencyDirectory("packages", "package", logger); legacyPackageDirectory = new DependencyDirectory("legacypackages", "legacy package", logger); missingPackageDirectory = new DependencyDirectory("missingpackages", "missing package", logger); + emptyPackageDirectory = new DependencyDirectory("empty", "empty package", logger); } public string? TryRestore(string package) @@ -110,25 +118,50 @@ public DirectoryInfo[] GetOrderedPackageVersionSubDirectories(string packagePath public HashSet Restore() { var assemblyLookupLocations = new HashSet(); - var checkNugetFeedResponsiveness = EnvironmentVariables.GetBooleanOptOut(EnvironmentVariableNames.CheckNugetFeedResponsiveness); logger.LogInfo($"Checking NuGet feed responsiveness: {checkNugetFeedResponsiveness}"); compilationInfoContainer.CompilationInfos.Add(("NuGet feed responsiveness checked", checkNugetFeedResponsiveness ? "1" : "0")); - HashSet? explicitFeeds = null; - HashSet? allFeeds = null; + HashSet explicitFeeds = []; + HashSet reachableFeeds = []; try { - if (checkNugetFeedResponsiveness && !CheckFeeds(out explicitFeeds, out allFeeds)) + // Find feeds that are configured in NuGet.config files and divide them into ones that + // are explicitly configured for the project or by a private registry, and "all feeds" + // (including inherited ones) from other locations on the host outside of the working directory. + (explicitFeeds, var allFeeds) = GetAllFeeds(); + + if (checkNugetFeedResponsiveness) { - // todo: we could also check the reachability of the inherited nuget feeds, but to use those in the fallback we would need to handle authentication too. - var unresponsiveMissingPackageLocation = DownloadMissingPackagesFromSpecificFeeds([], explicitFeeds); - return unresponsiveMissingPackageLocation is null - ? [] - : [unresponsiveMissingPackageLocation]; + var inheritedFeeds = allFeeds.Except(explicitFeeds).ToHashSet(); + + if (inheritedFeeds.Count > 0) + { + compilationInfoContainer.CompilationInfos.Add(("Inherited NuGet feed count", inheritedFeeds.Count.ToString())); + } + + var timeout = CheckSpecifiedFeeds(explicitFeeds, out var reachableExplicitFeeds); + reachableFeeds.UnionWith(reachableExplicitFeeds); + + var allExplicitReachable = explicitFeeds.Count == reachableExplicitFeeds.Count; + EmitUnreachableFeedsDiagnostics(allExplicitReachable); + + if (timeout) + { + // If we experience a timeout, we use this fallback. + // todo: we could also check the reachability of the inherited nuget feeds, but to use those in the fallback we would need to handle authentication too. + var unresponsiveMissingPackageLocation = DownloadMissingPackagesFromSpecificFeeds([], explicitFeeds); + return unresponsiveMissingPackageLocation is null + ? [] + : [unresponsiveMissingPackageLocation]; + } + + // Inherited feeds should only be used, if they are indeed reachable (as they may be environment specific). + CheckSpecifiedFeeds(inheritedFeeds, out var reachableInheritedFeeds); + reachableFeeds.UnionWith(reachableInheritedFeeds); } - using (var nuget = new NugetExeWrapper(fileProvider, legacyPackageDirectory, logger)) + using (var nuget = new NugetExeWrapper(fileProvider, legacyPackageDirectory, logger, IsDefaultFeedReachable)) { var count = nuget.InstallPackages(); @@ -167,9 +200,10 @@ public HashSet Restore() logger.LogError($"Failed to restore NuGet packages with nuget.exe: {exc.Message}"); } - var restoredProjects = RestoreSolutions(out var container); + // Restore project dependencies with `dotnet restore`. + var restoredProjects = RestoreSolutions(reachableFeeds, out var container); var projects = fileProvider.Projects.Except(restoredProjects); - RestoreProjects(projects, allFeeds, out var containers); + RestoreProjects(projects, reachableFeeds, out var containers); var dependencies = containers.Flatten(container); @@ -192,6 +226,53 @@ public HashSet Restore() return assemblyLookupLocations; } + /// + /// Tests which of the feeds given by are reachable. + /// + /// The feeds to check. + /// Whether the feeds are fallback feeds or not. + /// Whether a timeout occurred while checking the feeds. + /// The list of feeds that could be reached. + private List GetReachableNuGetFeeds(HashSet feedsToCheck, bool isFallback, out bool isTimeout) + { + var fallbackStr = isFallback ? "fallback " : ""; + logger.LogInfo($"Checking {fallbackStr}NuGet feed reachability on feeds: {string.Join(", ", feedsToCheck.OrderBy(f => f))}"); + + var (initialTimeout, tryCount) = GetFeedRequestSettings(isFallback); + var timeout = false; + var reachableFeeds = feedsToCheck + .Where(feed => + { + var reachable = IsFeedReachable(feed, initialTimeout, tryCount, out var feedTimeout); + timeout |= feedTimeout; + return reachable; + }) + .ToList(); + + if (reachableFeeds.Count == 0) + { + logger.LogWarning($"No {fallbackStr}NuGet feeds are reachable."); + } + else + { + logger.LogInfo($"Reachable {fallbackStr}NuGet feeds: {string.Join(", ", reachableFeeds.OrderBy(f => f))}"); + } + + isTimeout = timeout; + return reachableFeeds; + } + + private bool IsDefaultFeedReachable() + { + if (checkNugetFeedResponsiveness) + { + var (initialTimeout, tryCount) = GetFeedRequestSettings(isFallback: false); + return IsFeedReachable(PublicNugetOrgFeed, initialTimeout, tryCount, out var _); + } + + return true; + } + private List GetReachableFallbackNugetFeeds(HashSet? feedsFromNugetConfigs) { var fallbackFeeds = EnvironmentVariables.GetURLs(EnvironmentVariableNames.FallbackNugetFeeds).ToHashSet(); @@ -212,17 +293,7 @@ private List GetReachableFallbackNugetFeeds(HashSet? feedsFromNu } } - logger.LogInfo($"Checking fallback NuGet feed reachability on feeds: {string.Join(", ", fallbackFeeds.OrderBy(f => f))}"); - var (initialTimeout, tryCount) = GetFeedRequestSettings(isFallback: true); - var reachableFallbackFeeds = fallbackFeeds.Where(feed => IsFeedReachable(feed, initialTimeout, tryCount, allowExceptions: false)).ToList(); - if (reachableFallbackFeeds.Count == 0) - { - logger.LogWarning("No fallback NuGet feeds are reachable."); - } - else - { - logger.LogInfo($"Reachable fallback NuGet feeds: {string.Join(", ", reachableFallbackFeeds.OrderBy(f => f))}"); - } + var reachableFallbackFeeds = GetReachableNuGetFeeds(fallbackFeeds, isFallback: true, out var _); compilationInfoContainer.CompilationInfos.Add(("Reachable fallback NuGet feed count", reachableFallbackFeeds.Count.ToString())); @@ -237,10 +308,12 @@ private List GetReachableFallbackNugetFeeds(HashSet? feedsFromNu /// Populates dependencies with the relevant dependencies from the assets files generated by the restore. /// Returns a list of projects that are up to date with respect to restore. /// - private IEnumerable RestoreSolutions(out DependencyContainer dependencies) + private IEnumerable RestoreSolutions(HashSet reachableFeeds, out DependencyContainer dependencies) { var successCount = 0; var nugetSourceFailures = 0; + var nugetMissingPackageFailures = 0; + var assets = new Assets(logger); var isWindows = fileContent.UseWindowsForms || fileContent.UseWpf; @@ -248,7 +321,8 @@ private IEnumerable RestoreSolutions(out DependencyContainer dependencie var projects = fileProvider.Solutions.SelectMany(solution => { logger.LogInfo($"Restoring solution {solution}..."); - var res = dotnet.Restore(new(solution, PackageDirectory.DirInfo.FullName, ForceDotnetRefAssemblyFetching: true, TargetWindows: isWindows)); + var nugetSources = MakeRestoreSourcesArgument(solution, reachableFeeds); + var res = dotnet.Restore(new(solution, PackageDirectory.DirInfo.FullName, ForceDotnetRefAssemblyFetching: true, NugetSources: nugetSources, TargetWindows: isWindows)); if (res.Success) { successCount++; @@ -257,51 +331,84 @@ private IEnumerable RestoreSolutions(out DependencyContainer dependencie { nugetSourceFailures++; } + if (res.HasNugetPackageMissingError) + { + nugetMissingPackageFailures++; + } assets.AddDependenciesRange(res.AssetsFilePaths); return res.RestoredProjects; }).ToList(); dependencies = assets.Dependencies; compilationInfoContainer.CompilationInfos.Add(("Successfully restored solution files", successCount.ToString())); compilationInfoContainer.CompilationInfos.Add(("Failed solution restore with package source error", nugetSourceFailures.ToString())); + compilationInfoContainer.CompilationInfos.Add(("Failed solution restore with missing package error", nugetMissingPackageFailures.ToString())); compilationInfoContainer.CompilationInfos.Add(("Restored projects through solution files", projects.Count.ToString())); return projects; } + private string FeedsToRestoreArgument(IEnumerable feeds) + { + // If there are no feeds, we want to override any default feeds that `dotnet restore` would use by passing a dummy source argument. + if (!feeds.Any()) + { + return $" -s \"{emptyPackageDirectory.DirInfo.FullName}\""; + } + + // Add package sources. If any are present, they override all sources specified in + // the configuration file(s). + var feedArgs = new StringBuilder(); + foreach (var feed in feeds) + { + feedArgs.Append($" -s \"{feed}\""); + } + + return feedArgs.ToString(); + } + + /// + /// Constructs the list of NuGet sources to use for this restore. + /// (1) Use the feeds we get from `dotnet nuget list source` + /// (2) Use private registries, if they are configured + /// + /// Path to project/solution + /// The set of reachable NuGet feeds. + /// A string representing the NuGet sources argument for the restore command. + private string? MakeRestoreSourcesArgument(string path, HashSet reachableFeeds) + { + // Do not construct an set of explicit NuGet sources to use for restore. + if (!checkNugetFeedResponsiveness && !hasPrivateRegistryFeeds) + { + return null; + } + + // Find the path specific feeds. + var folder = GetDirectoryName(path); + var feedsToConsider = folder is not null ? GetFeeds(() => dotnet.GetNugetFeedsFromFolder(folder)).ToHashSet() : []; + + if (hasPrivateRegistryFeeds) + { + feedsToConsider.UnionWith(privateRegistryFeeds); + } + + var feedsToUse = checkNugetFeedResponsiveness + ? feedsToConsider.Where(reachableFeeds.Contains) + : feedsToConsider; + + return FeedsToRestoreArgument(feedsToUse); + } + /// /// Executes `dotnet restore` on all projects in projects. /// This is done in parallel for performance reasons. /// Populates dependencies with the relative paths to the assets files generated by the restore. /// /// A list of paths to project files. - private void RestoreProjects(IEnumerable projects, HashSet? configuredSources, out ConcurrentBag dependencies) - { - // Conservatively, we only set this to a non-null value if a Dependabot proxy is enabled. - // This ensures that we continue to get the old behaviour where feeds are taken from - // `nuget.config` files instead of the command-line arguments. - string? extraArgs = null; - - if (this.dependabotProxy is not null) - { - // If the Dependabot proxy is configured, then our main goal is to make `dotnet` aware - // of the private registry feeds. However, since providing them as command-line arguments - // to `dotnet` ignores other feeds that may be configured, we also need to add the feeds - // we have discovered from analysing `nuget.config` files. - var sources = configuredSources ?? new(); - this.dependabotProxy.RegistryURLs.ForEach(url => sources.Add(url)); - - // Add package sources. If any are present, they override all sources specified in - // the configuration file(s). - var feedArgs = new StringBuilder(); - foreach (string source in sources) - { - feedArgs.Append($" -s {source}"); - } - - extraArgs = feedArgs.ToString(); - } - + /// The set of reachable NuGet feeds. + private void RestoreProjects(IEnumerable projects, HashSet reachableFeeds, out ConcurrentBag dependencies) + { var successCount = 0; var nugetSourceFailures = 0; + var nugetMissingPackageFailures = 0; ConcurrentBag collectedDependencies = []; var isWindows = fileContent.UseWindowsForms || fileContent.UseWpf; @@ -314,7 +421,8 @@ private void RestoreProjects(IEnumerable projects, HashSet? conf foreach (var project in projectGroup) { logger.LogInfo($"Restoring project {project}..."); - var res = dotnet.Restore(new(project, PackageDirectory.DirInfo.FullName, ForceDotnetRefAssemblyFetching: true, extraArgs, TargetWindows: isWindows)); + var nugetSources = MakeRestoreSourcesArgument(project, reachableFeeds); + var res = dotnet.Restore(new(project, PackageDirectory.DirInfo.FullName, ForceDotnetRefAssemblyFetching: true, NugetSources: nugetSources, TargetWindows: isWindows)); assets.AddDependenciesRange(res.AssetsFilePaths); lock (sync) { @@ -326,6 +434,10 @@ private void RestoreProjects(IEnumerable projects, HashSet? conf { nugetSourceFailures++; } + if (res.HasNugetPackageMissingError) + { + nugetMissingPackageFailures++; + } } } collectedDependencies.Add(assets.Dependencies); @@ -333,6 +445,7 @@ private void RestoreProjects(IEnumerable projects, HashSet? conf dependencies = collectedDependencies; compilationInfoContainer.CompilationInfos.Add(("Successfully restored project files", successCount.ToString())); compilationInfoContainer.CompilationInfos.Add(("Failed project restore with package source error", nugetSourceFailures.ToString())); + compilationInfoContainer.CompilationInfos.Add(("Failed project restore with missing package error", nugetMissingPackageFailures.ToString())); } private AssemblyLookupLocation? DownloadMissingPackagesFromSpecificFeeds(IEnumerable usedPackageNames, HashSet? feedsFromNugetConfigs) @@ -623,28 +736,22 @@ private void TryChangeProjectFile(DirectoryInfo projectDir, Regex pattern, strin } } - private static async Task ExecuteGetRequest(string address, HttpClient httpClient, CancellationToken cancellationToken) + private static async Task ExecuteGetRequest(string address, HttpClient httpClient, CancellationToken cancellationToken) { - using var stream = await httpClient.GetStreamAsync(address, cancellationToken); - var buffer = new byte[1024]; - int bytesRead; - while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) > 0) - { - // do nothing - } + return await httpClient.GetAsync(address, HttpCompletionOption.ResponseHeadersRead, cancellationToken); } - private bool IsFeedReachable(string feed, int timeoutMilliSeconds, int tryCount, bool allowExceptions = true) + private bool IsFeedReachable(string feed, int timeoutMilliSeconds, int tryCount, out bool isTimeout) { logger.LogInfo($"Checking if NuGet feed '{feed}' is reachable..."); // Configure the HttpClient to be aware of the Dependabot Proxy, if used. HttpClientHandler httpClientHandler = new(); - if (this.dependabotProxy != null) + if (dependabotProxy != null) { - httpClientHandler.Proxy = new WebProxy(this.dependabotProxy.Address); + httpClientHandler.Proxy = new WebProxy(dependabotProxy.Address); - if (this.dependabotProxy.Certificate != null) + if (dependabotProxy.Certificate != null) { httpClientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, _) => { @@ -659,7 +766,7 @@ private bool IsFeedReachable(string feed, int timeoutMilliSeconds, int tryCount, return false; } chain.ChainPolicy.TrustMode = X509ChainTrustMode.CustomRootTrust; - chain.ChainPolicy.CustomTrustStore.Add(this.dependabotProxy.Certificate); + chain.ChainPolicy.CustomTrustStore.Add(dependabotProxy.Certificate); return chain.Build(cert); }; } @@ -667,13 +774,17 @@ private bool IsFeedReachable(string feed, int timeoutMilliSeconds, int tryCount, using HttpClient client = new(httpClientHandler); + isTimeout = false; + for (var i = 0; i < tryCount; i++) { using var cts = new CancellationTokenSource(); cts.CancelAfter(timeoutMilliSeconds); try { - ExecuteGetRequest(feed, client, cts.Token).GetAwaiter().GetResult(); + logger.LogInfo($"Attempt {i + 1}/{tryCount} to reach NuGet feed '{feed}'."); + using var response = ExecuteGetRequest(feed, client, cts.Token).GetAwaiter().GetResult(); + response.EnsureSuccessStatusCode(); logger.LogInfo($"Querying NuGet feed '{feed}' succeeded."); return true; } @@ -688,14 +799,13 @@ private bool IsFeedReachable(string feed, int timeoutMilliSeconds, int tryCount, continue; } - // We're only interested in timeouts. - var start = allowExceptions ? "Considering" : "Not considering"; - logger.LogInfo($"Querying NuGet feed '{feed}' failed in a timely manner. {start} the feed for use. The reason for the failure: {exc.Message}"); - return allowExceptions; + logger.LogInfo($"Querying NuGet feed '{feed}' failed. The reason for the failure: {exc.Message}"); + return false; } } logger.LogWarning($"Didn't receive answer from NuGet feed '{feed}'. Tried it {tryCount} times."); + isTimeout = true; return false; } @@ -719,53 +829,61 @@ private bool IsFeedReachable(string feed, int timeoutMilliSeconds, int tryCount, } /// - /// Checks that we can connect to all NuGet feeds that are explicitly configured in configuration files - /// as well as any private package registry feeds that are configured. + /// Retrieves a list of excluded NuGet feeds from the corresponding environment variable. /// - /// Outputs the set of explicit feeds. - /// Outputs the set of all feeds (explicit and inherited). - /// True if all feeds are reachable or false otherwise. - private bool CheckFeeds(out HashSet explicitFeeds, out HashSet allFeeds) + private HashSet GetExcludedFeeds() { - (explicitFeeds, allFeeds) = GetAllFeeds(); - HashSet feedsToCheck = explicitFeeds; - - // If private package registries are configured for C#, then check those - // in addition to the ones that are configured in `nuget.config` files. - this.dependabotProxy?.RegistryURLs.ForEach(url => feedsToCheck.Add(url)); - - var allFeedsReachable = this.CheckSpecifiedFeeds(feedsToCheck); + var excludedFeeds = EnvironmentVariables.GetURLs(EnvironmentVariableNames.ExcludedNugetFeedsFromResponsivenessCheck) + .ToHashSet(); - var inheritedFeeds = allFeeds.Except(explicitFeeds).ToHashSet(); - if (inheritedFeeds.Count > 0) + if (excludedFeeds.Count > 0) { - logger.LogInfo($"Inherited NuGet feeds (not checked for reachability): {string.Join(", ", inheritedFeeds.OrderBy(f => f))}"); - compilationInfoContainer.CompilationInfos.Add(("Inherited NuGet feed count", inheritedFeeds.Count.ToString())); + logger.LogInfo($"Excluded NuGet feeds from responsiveness check: {string.Join(", ", excludedFeeds.OrderBy(f => f))}"); } - return allFeedsReachable; + return excludedFeeds; } /// /// Checks that we can connect to the specified NuGet feeds. /// /// The set of package feeds to check. - /// True if all feeds are reachable or false otherwise. - private bool CheckSpecifiedFeeds(HashSet feeds) + /// The list of feeds that were reachable. + /// + /// True if there is a timeout when trying to reach the feeds (excluding any feeds that are configured + /// to be excluded from the check) or false otherwise. + /// + private bool CheckSpecifiedFeeds(HashSet feeds, out HashSet reachableFeeds) { - logger.LogInfo("Checking that NuGet feeds are reachable..."); - - var excludedFeeds = EnvironmentVariables.GetURLs(EnvironmentVariableNames.ExcludedNugetFeedsFromResponsivenessCheck) - .ToHashSet(); + // Exclude any feeds from the feed check that are configured by the corresponding environment variable. + // These feeds are always assumed to be reachable. + var excludedFeeds = GetExcludedFeeds(); - if (excludedFeeds.Count > 0) + HashSet feedsToCheck = feeds.Where(feed => { - logger.LogInfo($"Excluded NuGet feeds from responsiveness check: {string.Join(", ", excludedFeeds.OrderBy(f => f))}"); - } + if (excludedFeeds.Contains(feed)) + { + logger.LogInfo($"Not checking reachability of NuGet feed '{feed}' as it is in the list of excluded feeds."); + return false; + } + return true; + }).ToHashSet(); + + reachableFeeds = GetReachableNuGetFeeds(feedsToCheck, isFallback: false, out var isTimeout).ToHashSet(); - var (initialTimeout, tryCount) = GetFeedRequestSettings(isFallback: false); + // Always consider feeds excluded for the reachability check as reachable. + reachableFeeds.UnionWith(feeds.Where(feed => excludedFeeds.Contains(feed))); - var allFeedsReachable = feeds.All(feed => excludedFeeds.Contains(feed) || IsFeedReachable(feed, initialTimeout, tryCount)); + return isTimeout; + } + + /// + /// If is `false`, logs this and emits a diagnostic. + /// Adds a `CompilationInfos` entry either way. + /// + /// Whether all feeds were reachable or not. + private void EmitUnreachableFeedsDiagnostics(bool allFeedsReachable) + { if (!allFeedsReachable) { logger.LogWarning("Found unreachable NuGet feed in C# analysis with build-mode 'none'. This may cause missing dependencies in the analysis."); @@ -779,8 +897,6 @@ private bool CheckSpecifiedFeeds(HashSet feeds) )); } compilationInfoContainer.CompilationInfos.Add(("All NuGet feeds reachable", allFeedsReachable ? "1" : "0")); - - return allFeedsReachable; } private IEnumerable GetFeeds(Func> getNugetFeeds) @@ -811,6 +927,19 @@ private IEnumerable GetFeeds(Func> getNugetFeeds) } } + private string? GetDirectoryName(string path) + { + try + { + return new FileInfo(path).Directory?.FullName; + } + catch (Exception exc) + { + logger.LogWarning($"Failed to get directory of '{path}': {exc}"); + } + return null; + } + private (HashSet explicitFeeds, HashSet allFeeds) GetAllFeeds() { var nugetConfigs = fileProvider.NugetConfigs; @@ -828,11 +957,11 @@ private IEnumerable GetFeeds(Func> getNugetFeeds) if (invalidNugetConfigs.Count() > 0) { - this.logger.LogWarning(string.Format( + logger.LogWarning(string.Format( "Found incorrectly named NuGet configuration files: {0}", string.Join(", ", invalidNugetConfigs) )); - this.diagnosticsWriter.AddEntry(new DiagnosticMessage( + diagnosticsWriter.AddEntry(new DiagnosticMessage( Language.CSharp, "buildless/case-sensitive-nuget-config", "Found NuGet configuration files which are not correctly named", @@ -864,41 +993,33 @@ private IEnumerable GetFeeds(Func> getNugetFeeds) logger.LogDebug("No NuGet feeds found in nuget.config files."); } - // todo: this could be improved. - HashSet? allFeeds = null; + // If private package registries are configured for C#, then consider those + // in addition to the ones that are configured in `nuget.config` files. + if (hasPrivateRegistryFeeds) + { + logger.LogInfo($"Found {privateRegistryFeeds.Count} private registry feeds configured for C#: {string.Join(", ", privateRegistryFeeds.OrderBy(f => f))}"); + explicitFeeds.UnionWith(privateRegistryFeeds); + } + + HashSet allFeeds = []; + + // Add all explicitFeeds to the set of all feeds. + allFeeds.UnionWith(explicitFeeds); + + // Obtain the list of feeds from the root source directory. + // If a NuGet file is present it will be respected, otherwise we will just get the machine/environment specific feeds. + var nugetFeedsFromRoot = GetFeeds(() => dotnet.GetNugetFeedsFromFolder(fileProvider.SourceDir.FullName)); + allFeeds.UnionWith(nugetFeedsFromRoot); if (nugetConfigs.Count > 0) { - // We don't have to get the feeds from each of the folders from below, it would be enought to check the folders that recursively contain the others. - allFeeds = nugetConfigs - .Select(config => - { - try - { - return new FileInfo(config).Directory?.FullName; - } - catch (Exception exc) - { - logger.LogWarning($"Failed to get directory of '{config}': {exc}"); - } - return null; - }) + var nugetConfigFeeds = nugetConfigs + .Select(GetDirectoryName) .Where(folder => folder != null) .SelectMany(folder => GetFeeds(() => dotnet.GetNugetFeedsFromFolder(folder!))) .ToHashSet(); - // If we have discovered any explicit feeds, then we also expect these to be in the set of all feeds. - // Normally, it is a safe assumption to make that `GetNugetFeedsFromFolder` will include the feeds configured - // in a NuGet configuration file in the given directory. There is one exception: on a system with case-sensitive - // file systems, we may discover a configuration file such as `Nuget.Config` which is not recognised by `dotnet nuget`. - // In that case, our call to `GetNugetFeeds` will retrieve the feeds from that file (because it is accepted when - // provided explicitly as `--configfile` argument), but the call to `GetNugetFeedsFromFolder` will not. - allFeeds.UnionWith(explicitFeeds); - } - else - { - // If we haven't found any `nuget.config` files, then obtain a list of feeds from the root source directory. - allFeeds = GetFeeds(() => dotnet.GetNugetFeedsFromFolder(this.fileProvider.SourceDir.FullName)).ToHashSet(); + allFeeds.UnionWith(nugetConfigFeeds); } logger.LogInfo($"Found {allFeeds.Count} NuGet feeds (with inherited ones) in nuget.config files: {string.Join(", ", allFeeds.OrderBy(f => f))}"); @@ -923,6 +1044,7 @@ public void Dispose() PackageDirectory?.Dispose(); legacyPackageDirectory?.Dispose(); missingPackageDirectory?.Dispose(); + emptyPackageDirectory?.Dispose(); } /// diff --git a/csharp/extractor/Semmle.Extraction.CSharp.Util/SymbolExtensions.cs b/csharp/extractor/Semmle.Extraction.CSharp.Util/SymbolExtensions.cs index 659b26c2fe99..92d7ecfad6bb 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp.Util/SymbolExtensions.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp.Util/SymbolExtensions.cs @@ -1,3 +1,5 @@ +using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Text.RegularExpressions; using Microsoft.CodeAnalysis; @@ -18,114 +20,68 @@ public static string GetName(this ISymbol symbol, bool useMetadataName = false) return symbol.CanBeReferencedByName ? name : name.Substring(symbol.Name.LastIndexOf('.') + 1); } + private static readonly ReadOnlyDictionary methodToOperator = new(new Dictionary + { + { "op_LogicalNot", "!" }, + { "op_BitwiseAnd", "&" }, + { "op_Equality", "==" }, + { "op_Inequality", "!=" }, + { "op_UnaryPlus", "+" }, + { "op_Addition", "+" }, + { "op_UnaryNegation", "-" }, + { "op_Subtraction", "-" }, + { "op_Multiply", "*" }, + { "op_Multiplication", "*" }, + { "op_Division", "/" }, + { "op_Modulus", "%" }, + { "op_GreaterThan", ">" }, + { "op_GreaterThanOrEqual", ">=" }, + { "op_LessThan", "<" }, + { "op_LessThanOrEqual", "<=" }, + { "op_Decrement", "--" }, + { "op_Increment", "++" }, + { "op_Implicit", "implicit conversion" }, + { "op_Explicit", "explicit conversion" }, + { "op_OnesComplement", "~" }, + { "op_RightShift", ">>" }, + { "op_UnsignedRightShift", ">>>" }, + { "op_LeftShift", "<<" }, + { "op_BitwiseOr", "|" }, + { "op_ExclusiveOr", "^" }, + { "op_True", "true" }, + { "op_False", "false" } + }); + /// /// Convert an operator method name in to a symbolic name. /// A return value indicates whether the conversion succeeded. /// public static bool TryGetOperatorSymbol(this ISymbol symbol, out string operatorName) { - static bool TryGetOperatorSymbolFromName(string methodName, out string operatorName) + var methodName = symbol.GetName(useMetadataName: false); + + // Most common use-case. + if (methodToOperator.TryGetValue(methodName, out var opName)) { - var success = true; - switch (methodName) - { - case "op_LogicalNot": - operatorName = "!"; - break; - case "op_BitwiseAnd": - operatorName = "&"; - break; - case "op_Equality": - operatorName = "=="; - break; - case "op_Inequality": - operatorName = "!="; - break; - case "op_UnaryPlus": - case "op_Addition": - operatorName = "+"; - break; - case "op_UnaryNegation": - case "op_Subtraction": - operatorName = "-"; - break; - case "op_Multiply": - operatorName = "*"; - break; - case "op_Division": - operatorName = "/"; - break; - case "op_Modulus": - operatorName = "%"; - break; - case "op_GreaterThan": - operatorName = ">"; - break; - case "op_GreaterThanOrEqual": - operatorName = ">="; - break; - case "op_LessThan": - operatorName = "<"; - break; - case "op_LessThanOrEqual": - operatorName = "<="; - break; - case "op_Decrement": - operatorName = "--"; - break; - case "op_Increment": - operatorName = "++"; - break; - case "op_Implicit": - operatorName = "implicit conversion"; - break; - case "op_Explicit": - operatorName = "explicit conversion"; - break; - case "op_OnesComplement": - operatorName = "~"; - break; - case "op_RightShift": - operatorName = ">>"; - break; - case "op_UnsignedRightShift": - operatorName = ">>>"; - break; - case "op_LeftShift": - operatorName = "<<"; - break; - case "op_BitwiseOr": - operatorName = "|"; - break; - case "op_ExclusiveOr": - operatorName = "^"; - break; - case "op_True": - operatorName = "true"; - break; - case "op_False": - operatorName = "false"; - break; - default: - var match = CheckedRegex().Match(methodName); - if (match.Success) - { - TryGetOperatorSymbolFromName($"op_{match.Groups[1]}", out var uncheckedName); - operatorName = $"checked {uncheckedName}"; - break; - } - operatorName = methodName; - success = false; - break; - } - return success; + operatorName = opName; + return true; } - var methodName = symbol.GetName(useMetadataName: false); - return TryGetOperatorSymbolFromName(methodName, out operatorName); + // Attempt to parse using a regexp. + var match = OperatorRegex().Match(methodName); + if (match.Success && methodToOperator.TryGetValue($"op_{match.Groups[2]}", out var rawOperatorName)) + { + var prefix = match.Groups[1].Success ? "checked " : ""; + var postfix = match.Groups[3].Success ? "=" : ""; + operatorName = $"{prefix}{rawOperatorName}{postfix}"; + return true; + } + + operatorName = methodName; + return false; } - [GeneratedRegex("^op_Checked(.*)$")] - private static partial Regex CheckedRegex(); + [GeneratedRegex("^op_(Checked)?(.*?)(Assignment)?$")] + private static partial Regex OperatorRegex(); } } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expression.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expression.cs index 93107fc6dab8..4ab90def2c16 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expression.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expression.cs @@ -228,6 +228,41 @@ type.SpecialType is SpecialType.System_IntPtr || return Literal.CreateGenerated(cx, parent, childIndex, type, defaultValue, location); } + /// + /// Given an expression syntax node, attempt to resolve the target method symbol for it. + /// The operation takes extension methods into account. + /// + /// The expression syntax node. + /// Returns the target method symbol, or null if it cannot be resolved. + protected IMethodSymbol? GetTargetSymbol(ExpressionSyntax node) + { + var si = Context.GetSymbolInfo(node); + if (si.Symbol is ISymbol symbol) + { + var method = symbol as IMethodSymbol; + // Case for compiler-generated extension methods. + return method?.TryGetExtensionMethod() ?? method; + } + + if (si.CandidateReason == CandidateReason.OverloadResolutionFailure && node is InvocationExpressionSyntax syntax) + { + // This seems to be a bug in Roslyn + // For some reason, typeof(X).InvokeMember(...) fails to resolve the correct + // InvokeMember() method, even though the number of parameters clearly identifies the correct method + + var candidates = si.CandidateSymbols + .OfType() + .Where(method => method.Parameters.Length >= syntax.ArgumentList.Arguments.Count) + .Where(method => method.Parameters.Count(p => !p.HasExplicitDefaultValue) <= syntax.ArgumentList.Arguments.Count); + + return Context.ExtractionContext.IsStandalone ? + candidates.FirstOrDefault() : + candidates.SingleOrDefault(); + } + + return si.Symbol as IMethodSymbol; + } + /// /// Adapt the operator kind depending on whether it's a dynamic call or a user-operator call. /// @@ -244,10 +279,10 @@ public static ExprKind UnaryOperatorKind(Context cx, ExprKind originalKind, Expr /// name if available. /// /// The expression. - public void OperatorCall(TextWriter trapFile, ExpressionSyntax node) + public void AddOperatorCall(TextWriter trapFile, ExpressionSyntax node) { - var @operator = Context.GetSymbolInfo(node); - if (@operator.Symbol is IMethodSymbol method) + var @operator = GetTargetSymbol(node); + if (@operator is IMethodSymbol method) { var callType = GetCallType(Context, node); if (callType == CallType.Dynamic) diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Assignment.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Assignment.cs index 67e49b2919c2..6d869b256c58 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Assignment.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Assignment.cs @@ -24,10 +24,9 @@ protected override void PopulateExpression(TextWriter trapFile) { Create(Context, Syntax.Left, this, 0); Create(Context, Syntax.Right, this, 1); - if (Kind != ExprKind.SIMPLE_ASSIGN && Kind != ExprKind.ASSIGN_COALESCE) { - OperatorCall(trapFile, Syntax); + AddOperatorCall(trapFile, Syntax); } } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Binary.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Binary.cs index d4cc5cc81d58..2bc8c61f21f3 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Binary.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Binary.cs @@ -40,7 +40,7 @@ private void CreateDeferred(Context cx, ExpressionSyntax node, int child) protected override void PopulateExpression(TextWriter trapFile) { - OperatorCall(trapFile, Syntax); + AddOperatorCall(trapFile, Syntax); CreateDeferred(Context, Syntax.Left, 0); CreateDeferred(Context, Syntax.Right, 1); } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Cast.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Cast.cs index 20a5dc611a31..c11711f30926 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Cast.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Cast.cs @@ -25,7 +25,7 @@ protected override void PopulateExpression(TextWriter trapFile) else { // Type conversion - OperatorCall(trapFile, Syntax); + AddOperatorCall(trapFile, Syntax); TypeMention.Create(Context, Syntax.Type, this, Type); } } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Invocation.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Invocation.cs index 2ed7aec9955c..343f288eeafe 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Invocation.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Invocation.cs @@ -44,7 +44,7 @@ protected override void PopulateExpression(TextWriter trapFile) var child = -1; string? memberName = null; - var target = TargetSymbol; + var target = GetTargetSymbol(Syntax); switch (Syntax.Expression) { case MemberAccessExpressionSyntax memberAccess when IsValidMemberAccessKind(): @@ -129,39 +129,6 @@ private static bool IsOperatorLikeCall(ExpressionNodeInfo info) method.TryGetExtensionMethod()?.MethodKind == MethodKind.UserDefinedOperator; } - public IMethodSymbol? TargetSymbol - { - get - { - var si = SymbolInfo; - - if (si.Symbol is ISymbol symbol) - { - var method = symbol as IMethodSymbol; - // Case for compiler-generated extension methods. - return method?.TryGetExtensionMethod() ?? method; - } - - if (si.CandidateReason == CandidateReason.OverloadResolutionFailure) - { - // This seems to be a bug in Roslyn - // For some reason, typeof(X).InvokeMember(...) fails to resolve the correct - // InvokeMember() method, even though the number of parameters clearly identifies the correct method - - var candidates = si.CandidateSymbols - .OfType() - .Where(method => method.Parameters.Length >= Syntax.ArgumentList.Arguments.Count) - .Where(method => method.Parameters.Count(p => !p.HasExplicitDefaultValue) <= Syntax.ArgumentList.Arguments.Count); - - return Context.ExtractionContext.IsStandalone ? - candidates.FirstOrDefault() : - candidates.SingleOrDefault(); - } - - return si.Symbol as IMethodSymbol; - } - } - private static bool IsDelegateLikeCall(ExpressionNodeInfo info) { return IsDelegateLikeCall(info, symbol => IsFunctionPointer(symbol) || IsDelegateInvoke(symbol)); diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/PostfixUnary.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/PostfixUnary.cs index dbe5ecb3d184..051a03e9f8c2 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/PostfixUnary.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/PostfixUnary.cs @@ -25,7 +25,7 @@ protected override void PopulateExpression(TextWriter trapFile) if ((operatorKind == ExprKind.POST_INCR || operatorKind == ExprKind.POST_DECR) && Kind == ExprKind.OPERATOR_INVOCATION) { - OperatorCall(trapFile, Syntax); + AddOperatorCall(trapFile, Syntax); trapFile.mutator_invocation_mode(this, 2); } } diff --git a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Unary.cs b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Unary.cs index 161fbe62e3f1..699c3810d116 100644 --- a/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Unary.cs +++ b/csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Unary.cs @@ -24,7 +24,7 @@ public static Unary Create(ExpressionNodeInfo info) protected override void PopulateExpression(TextWriter trapFile) { Create(Context, Syntax.Operand, this, 0); - OperatorCall(trapFile, Syntax); + AddOperatorCall(trapFile, Syntax); if ((operatorKind == ExprKind.PRE_INCR || operatorKind == ExprKind.PRE_DECR) && Kind == ExprKind.OPERATOR_INVOCATION) diff --git a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md index f7107d18c014..eefb35f174ad 100644 --- a/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/lib/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.7.67 + +No user-facing changes. + +## 1.7.66 + +No user-facing changes. + +## 1.7.65 + +No user-facing changes. + ## 1.7.64 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.65.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.65.md new file mode 100644 index 000000000000..12bf5dad4b08 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.65.md @@ -0,0 +1,3 @@ +## 1.7.65 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.66.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.66.md new file mode 100644 index 000000000000..7fc1a46a66ef --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.66.md @@ -0,0 +1,3 @@ +## 1.7.66 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.67.md b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.67.md new file mode 100644 index 000000000000..6ae3bdfde833 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/lib/change-notes/released/1.7.67.md @@ -0,0 +1,3 @@ +## 1.7.67 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml index f41e954c9ae2..0293fdade8f5 100644 --- a/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.64 +lastReleaseVersion: 1.7.67 diff --git a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml index 9c094c18dc6d..51b34483e1bf 100644 --- a/csharp/ql/campaigns/Solorigate/lib/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-all -version: 1.7.64 +version: 1.7.67 groups: - csharp - solorigate diff --git a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md index f7107d18c014..eefb35f174ad 100644 --- a/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md +++ b/csharp/ql/campaigns/Solorigate/src/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.7.67 + +No user-facing changes. + +## 1.7.66 + +No user-facing changes. + +## 1.7.65 + +No user-facing changes. + ## 1.7.64 No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/ModifiedFnvFunctionDetection.ql b/csharp/ql/campaigns/Solorigate/src/ModifiedFnvFunctionDetection.ql index ca153bfb97db..515bbbd91c67 100644 --- a/csharp/ql/campaigns/Solorigate/src/ModifiedFnvFunctionDetection.ql +++ b/csharp/ql/campaigns/Solorigate/src/ModifiedFnvFunctionDetection.ql @@ -13,11 +13,13 @@ import csharp import Solorigate import experimental.code.csharp.Cryptography.NonCryptographicHashes +ControlFlowNode loopExitNode(LoopStmt loop) { result.isAfter(loop) } + from Variable v, Literal l, LoopStmt loop, Expr additional_xor where maybeUsedInFnvFunction(v, _, _, loop) and exists(BitwiseXorOperation xor2 | xor2.getAnOperand() = l and additional_xor = xor2 | - loop.getAControlFlowExitNode().getASuccessor*() = xor2.getAControlFlowNode() and + loopExitNode(loop).getASuccessor*() = xor2.getControlFlowNode() and xor2.getAnOperand() = v.getAnAccess() ) select l, "This literal is used in an $@ after an FNV-like hash calculation with variable $@.", diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.65.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.65.md new file mode 100644 index 000000000000..12bf5dad4b08 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.65.md @@ -0,0 +1,3 @@ +## 1.7.65 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.66.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.66.md new file mode 100644 index 000000000000..7fc1a46a66ef --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.66.md @@ -0,0 +1,3 @@ +## 1.7.66 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.67.md b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.67.md new file mode 100644 index 000000000000..6ae3bdfde833 --- /dev/null +++ b/csharp/ql/campaigns/Solorigate/src/change-notes/released/1.7.67.md @@ -0,0 +1,3 @@ +## 1.7.67 + +No user-facing changes. diff --git a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml index f41e954c9ae2..0293fdade8f5 100644 --- a/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml +++ b/csharp/ql/campaigns/Solorigate/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.64 +lastReleaseVersion: 1.7.67 diff --git a/csharp/ql/campaigns/Solorigate/src/qlpack.yml b/csharp/ql/campaigns/Solorigate/src/qlpack.yml index 666c44a2805e..81f347373c52 100644 --- a/csharp/ql/campaigns/Solorigate/src/qlpack.yml +++ b/csharp/ql/campaigns/Solorigate/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-solorigate-queries -version: 1.7.64 +version: 1.7.67 groups: - csharp - solorigate diff --git a/csharp/ql/consistency-queries/CfgConsistency.ql b/csharp/ql/consistency-queries/CfgConsistency.ql index 4b0d15f8a819..883014fdcf08 100644 --- a/csharp/ql/consistency-queries/CfgConsistency.ql +++ b/csharp/ql/consistency-queries/CfgConsistency.ql @@ -1,5 +1,2 @@ import csharp -import semmle.code.csharp.controlflow.internal.Completion -import ControlFlow -import semmle.code.csharp.controlflow.internal.ControlFlowGraphImpl::Consistency -import semmle.code.csharp.controlflow.internal.Splitting +import ControlFlow::Consistency diff --git a/csharp/ql/consistency-queries/DataFlowConsistency.ql b/csharp/ql/consistency-queries/DataFlowConsistency.ql index 03e0f3f1b740..6060304bd9c7 100644 --- a/csharp/ql/consistency-queries/DataFlowConsistency.ql +++ b/csharp/ql/consistency-queries/DataFlowConsistency.ql @@ -1,5 +1,4 @@ import csharp -private import semmle.code.csharp.controlflow.internal.ControlFlowGraphImpl as ControlFlowGraphImpl private import semmle.code.csharp.dataflow.internal.DataFlowImplSpecific private import semmle.code.csharp.dataflow.internal.TaintTrackingImplSpecific private import codeql.dataflow.internal.DataFlowImplConsistency @@ -7,20 +6,6 @@ private import codeql.dataflow.internal.DataFlowImplConsistency private module Input implements InputSig { private import CsharpDataFlow - private predicate isStaticAssignable(Assignable a) { a.(Modifiable).isStatic() } - - predicate uniqueEnclosingCallableExclude(Node node) { - // TODO: Remove once static initializers are folded into the - // static constructors - isStaticAssignable(ControlFlowGraphImpl::getNodeCfgScope(node.getControlFlowNode())) - } - - predicate uniqueCallEnclosingCallableExclude(DataFlowCall call) { - // TODO: Remove once static initializers are folded into the - // static constructors - isStaticAssignable(ControlFlowGraphImpl::getNodeCfgScope(call.getControlFlowNode())) - } - predicate uniqueNodeLocationExclude(Node n) { // Methods with multiple implementations n instanceof ParameterNode @@ -70,17 +55,14 @@ private module Input implements InputSig { init.getInitializer().getNumberOfChildren() > 1 ) or - exists(ControlFlow::Nodes::ElementNode cfn, ControlFlow::Nodes::Split split | - exists(arg.asExprAtNode(cfn)) - | - split = cfn.getASplit() and - not split = call.getControlFlowNode().getASplit() - or - split = call.getControlFlowNode().getASplit() and - not split = cfn.getASplit() - ) - or call.(NonDelegateDataFlowCall).getDispatchCall().isReflection() + or + // Exclude calls that are both getter and setter calls, as they share the same argument nodes. + exists(AccessorCall ac | + call.(NonDelegateDataFlowCall).getDispatchCall().getCall() = ac and + ac instanceof AssignableRead and + ac instanceof AssignableWrite + ) ) } } diff --git a/csharp/ql/consistency-queries/SsaConsistency.ql b/csharp/ql/consistency-queries/SsaConsistency.ql index e9c9191b63a1..003e7ddd5e94 100644 --- a/csharp/ql/consistency-queries/SsaConsistency.ql +++ b/csharp/ql/consistency-queries/SsaConsistency.ql @@ -7,8 +7,8 @@ query predicate localDeclWithSsaDef(LocalVariableDeclExpr d) { // Local variables in C# must be initialized before every use, so uninitialized // local variables should not have an SSA definition, as that would imply that // the declaration is live (can reach a use without passing through a definition) - exists(ExplicitDefinition def | - d = def.getADefinition().(AssignableDefinitions::LocalVariableDefinition).getDeclaration() + exists(SsaExplicitWrite def | + d = def.getDefinition().(AssignableDefinitions::LocalVariableDefinition).getDeclaration() | not d = any(ForeachStmt fs).getVariableDeclExpr() and not d = any(SpecificCatchClause scc).getVariableDeclExpr() and diff --git a/csharp/ql/consistency-queries/VariableCaptureConsistency.ql b/csharp/ql/consistency-queries/VariableCaptureConsistency.ql index 927741f07bfe..869be5aea9fe 100644 --- a/csharp/ql/consistency-queries/VariableCaptureConsistency.ql +++ b/csharp/ql/consistency-queries/VariableCaptureConsistency.ql @@ -1,13 +1,6 @@ import csharp import semmle.code.csharp.dataflow.internal.DataFlowPrivate::VariableCapture::Flow::ConsistencyChecks private import semmle.code.csharp.dataflow.internal.DataFlowPrivate::VariableCapture::Flow::ConsistencyChecks as ConsistencyChecks -private import semmle.code.csharp.controlflow.BasicBlocks -private import semmle.code.csharp.controlflow.internal.ControlFlowGraphImpl - -query predicate uniqueEnclosingCallable(BasicBlock bb, string msg) { - ConsistencyChecks::uniqueEnclosingCallable(bb, msg) and - getNodeCfgScope(bb.getFirstNode()) instanceof Callable -} query predicate consistencyOverview(string msg, int n) { none() } diff --git a/csharp/ql/examples/snippets/integer_literal.ql b/csharp/ql/examples/snippets/integer_literal.ql index 4546c1d174ba..36791fc8c374 100644 --- a/csharp/ql/examples/snippets/integer_literal.ql +++ b/csharp/ql/examples/snippets/integer_literal.ql @@ -9,5 +9,5 @@ import csharp from IntegerLiteral literal -where literal.getValue().toInt() = 0 +where literal.getIntValue() = 0 select literal diff --git a/csharp/ql/integration-tests/all-platforms/standalone_resx/CompilationInfo.expected b/csharp/ql/integration-tests/all-platforms/standalone_resx/CompilationInfo.expected index dfab1016a6b2..6d91b2700226 100644 --- a/csharp/ql/integration-tests/all-platforms/standalone_resx/CompilationInfo.expected +++ b/csharp/ql/integration-tests/all-platforms/standalone_resx/CompilationInfo.expected @@ -1,5 +1,7 @@ | All NuGet feeds reachable | 1.0 | +| Failed project restore with missing package error | 0.0 | | Failed project restore with package source error | 0.0 | +| Failed solution restore with missing package error | 0.0 | | Failed solution restore with package source error | 0.0 | | Inherited NuGet feed count | 1.0 | | NuGet feed responsiveness checked | 1.0 | diff --git a/csharp/ql/integration-tests/all-platforms/standalone_slnx/CompilationInfo.expected b/csharp/ql/integration-tests/all-platforms/standalone_slnx/CompilationInfo.expected index 3bd3941b27c5..82cf0509d345 100644 --- a/csharp/ql/integration-tests/all-platforms/standalone_slnx/CompilationInfo.expected +++ b/csharp/ql/integration-tests/all-platforms/standalone_slnx/CompilationInfo.expected @@ -1,5 +1,7 @@ | All NuGet feeds reachable | 1.0 | +| Failed project restore with missing package error | 0.0 | | Failed project restore with package source error | 0.0 | +| Failed solution restore with missing package error | 0.0 | | Failed solution restore with package source error | 0.0 | | Inherited NuGet feed count | 1.0 | | NuGet feed responsiveness checked | 1.0 | diff --git a/csharp/ql/integration-tests/all-platforms/standalone_winforms/CompilationInfo.expected b/csharp/ql/integration-tests/all-platforms/standalone_winforms/CompilationInfo.expected index 6b06566033c3..63ddd4903f3e 100644 --- a/csharp/ql/integration-tests/all-platforms/standalone_winforms/CompilationInfo.expected +++ b/csharp/ql/integration-tests/all-platforms/standalone_winforms/CompilationInfo.expected @@ -1,5 +1,7 @@ | All NuGet feeds reachable | 1.0 | +| Failed project restore with missing package error | 0.0 | | Failed project restore with package source error | 0.0 | +| Failed solution restore with missing package error | 0.0 | | Failed solution restore with package source error | 0.0 | | Inherited NuGet feed count | 1.0 | | NuGet feed responsiveness checked | 1.0 | diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_clear/Assemblies.expected b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_clear/Assemblies.expected new file mode 100644 index 000000000000..b676e41c1840 --- /dev/null +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_clear/Assemblies.expected @@ -0,0 +1 @@ +| test-db/working/packages/newtonsoft.json/13.0.4/lib/net6.0/Newtonsoft.Json.dll:0:0:0:0 | Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed | diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_clear/Assemblies.ql b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_clear/Assemblies.ql new file mode 100644 index 000000000000..0eb33b7ae37b --- /dev/null +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_clear/Assemblies.ql @@ -0,0 +1,5 @@ +import csharp + +from Assembly a +where exists(a.getFile().getAbsolutePath().indexOf("newtonsoft.json")) +select a diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_clear/CompilationInfo.expected b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_clear/CompilationInfo.expected new file mode 100644 index 000000000000..ff0b29da33fa --- /dev/null +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_clear/CompilationInfo.expected @@ -0,0 +1,22 @@ +| All NuGet feeds reachable | 1.0 | +| Failed project restore with missing package error | 0.0 | +| Failed project restore with package source error | 0.0 | +| Failed solution restore with missing package error | 0.0 | +| Failed solution restore with package source error | 0.0 | +| Inherited NuGet feed count | 1.0 | +| NuGet feed responsiveness checked | 1.0 | +| Project files on filesystem | 1.0 | +| Reachable fallback NuGet feed count | 1.0 | +| Resolved assembly conflicts | 0.0 | +| Resource extraction enabled | 0.0 | +| Restored .NET framework variants | 1.0 | +| Restored projects through solution files | 0.0 | +| Solution files on filesystem | 0.0 | +| Source files generated | 0.0 | +| Source files on filesystem | 1.0 | +| Successfully restored project files | 1.0 | +| Successfully restored solution files | 0.0 | +| Unresolved references | 0.0 | +| UseWPF set | 0.0 | +| UseWindowsForms set | 0.0 | +| WebView extraction enabled | 1.0 | diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_clear/CompilationInfo.ql b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_clear/CompilationInfo.ql new file mode 100644 index 000000000000..073ffe3b224d --- /dev/null +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_clear/CompilationInfo.ql @@ -0,0 +1,15 @@ +import csharp +import semmle.code.csharp.commons.Diagnostics + +query predicate compilationInfo(string key, float value) { + key != "Resolved references" and + not key.matches("Compiler diagnostic count for%") and + exists(Compilation c, string infoKey, string infoValue | infoValue = c.getInfo(infoKey) | + key = infoKey and + value = infoValue.toFloat() + or + not exists(infoValue.toFloat()) and + key = infoKey + ": " + infoValue and + value = 1 + ) +} diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_clear/clear/nuget.config b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_clear/clear/nuget.config new file mode 100644 index 000000000000..a3f3aea61c8f --- /dev/null +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_clear/clear/nuget.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_clear/global.json b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_clear/global.json new file mode 100644 index 000000000000..ed6049740701 --- /dev/null +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_clear/global.json @@ -0,0 +1,5 @@ +{ + "sdk": { + "version": "10.0.201" + } +} diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_clear/proj/Program.cs b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_clear/proj/Program.cs new file mode 100644 index 000000000000..c340f4c32fd4 --- /dev/null +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_clear/proj/Program.cs @@ -0,0 +1 @@ +class Program { } diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_clear/proj/proj.csproj b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_clear/proj/proj.csproj new file mode 100644 index 000000000000..6010c6c7f37c --- /dev/null +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_clear/proj/proj.csproj @@ -0,0 +1,16 @@ + + + + Exe + net10.0 + + + + + + + + + + + diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_clear/test.py b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_clear/test.py new file mode 100644 index 000000000000..cbbf2eb1d647 --- /dev/null +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_clear/test.py @@ -0,0 +1,12 @@ +import os +import runs_on + + +@runs_on.posix +def test(codeql, csharp): + # Making sure the reachability test of `nuget.org` succeeds: + os.environ["CODEQL_EXTRACTOR_CSHARP_BUILDLESS_NUGET_FEEDS_CHECK_FALLBACK_TIMEOUT"] = "1000" + os.environ["CODEQL_EXTRACTOR_CSHARP_BUILDLESS_NUGET_FEEDS_CHECK_FALLBACK_LIMIT"] = "5" + + # This test checks that the nuget.config file in the clear folder is not applied to the restore of the project. + codeql.database.create(build_mode="none") diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error/CompilationInfo.expected b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error/CompilationInfo.expected index 3a74bcbd56ed..4acd4f54e8a6 100644 --- a/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error/CompilationInfo.expected +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_error/CompilationInfo.expected @@ -1,7 +1,10 @@ -| All NuGet feeds reachable | 1.0 | -| Failed project restore with package source error | 1.0 | +| All NuGet feeds reachable | 0.0 | +| Failed project restore with missing package error | 1.0 | +| Failed project restore with package source error | 0.0 | +| Failed solution restore with missing package error | 0.0 | | Failed solution restore with package source error | 0.0 | | Fallback nuget restore | 1.0 | +| Inherited NuGet feed count | 1.0 | | NuGet feed responsiveness checked | 1.0 | | Project files on filesystem | 1.0 | | Reachable fallback NuGet feed count | 1.0 | diff --git a/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_fallback/CompilationInfo.expected b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_fallback/CompilationInfo.expected index c53a17f0300d..9cc03f2f5372 100644 --- a/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_fallback/CompilationInfo.expected +++ b/csharp/ql/integration-tests/posix/standalone_dependencies_nuget_config_fallback/CompilationInfo.expected @@ -1,5 +1,6 @@ | All NuGet feeds reachable | 0.0 | | Fallback nuget restore | 1.0 | +| Inherited NuGet feed count | 1.0 | | NuGet feed responsiveness checked | 1.0 | | Project files on filesystem | 1.0 | | Reachable fallback NuGet feed count | 2.0 | diff --git a/csharp/ql/lib/CHANGELOG.md b/csharp/ql/lib/CHANGELOG.md index 57d99a41480b..17fd83bcda76 100644 --- a/csharp/ql/lib/CHANGELOG.md +++ b/csharp/ql/lib/CHANGELOG.md @@ -1,3 +1,52 @@ +## 6.0.1 + +No user-facing changes. + +## 6.0.0 + +### Breaking Changes + +* The C# control flow graph (CFG) implementation has been completely + rewritten. The CFG now includes additional nodes to more accurately represent + certain constructs. This also means that any existing code that implicitly + relies on very specific details about the CFG may need to be updated. + The CFG no longer uses splitting, which means that AST nodes now have a unique + CFG node representation. + Additionally, the following breaking changes have been made: + - `ControlFlow::Node` has been renamed to `ControlFlowNode`. + - `ControlFlow::Nodes` has been renamed to `ControlFlowNodes`. + - `BasicBlock.getCallable` has been renamed to `BasicBlock.getEnclosingCallable`. + - `BasicBlocks.qll` has been deleted. + - `ControlFlowNode.getAstNode` has changed its meaning. The AST-to-CFG + mapping remains one-to-many, but now for a different reason. It used to be + because of splitting, but now it's because of additional "helper" CFG + nodes. To get the (now canonical) CFG node for a given AST node, use + `ControlFlowNode.asExpr()` or `ControlFlowNode.asStmt()` or + `ControlFlowElement.getControlFlowNode()` instead. + +### Deprecated APIs + +* The QL classes in the C# SSA library have been renamed to improve consistency between languages. Any custom QL code that makes use of SSA needs to be updated. The old classes have been deprecated and include more detailed migration instructions in their qldoc. + +### New Features + +* Data flow barriers and barrier guards can now be added using data extensions. For more information see [Customizing library models for C#](https://codeql.github.com/docs/codeql-language-guides/customizing-library-models-for-csharp/). + +### Major Analysis Improvements + +* When resolving dependencies in `build-mode: none`, `dotnet restore` now explicitly receives reachable NuGet feeds configured in `nuget.config` when feed responsiveness checking is enabled (the default), and any private registries directly, improving reliability when default feeds are unavailable or restricted. + +### Minor Analysis Improvements + +* Expanded ASP and ASP.NET remote source modeling to cover additional sources, including fields of tainted parameters as well as properties and fields that become tainted transitively. +* C# 14: Added support for user-defined compound assignment operators. + +## 5.5.0 + +### Deprecated APIs + +* The predicates `get[L|R]Value` in the class `Assignment` have been deprecated. Use `get[Left|Right]Operand` instead. + ## 5.4.12 ### Minor Analysis Improvements @@ -58,9 +107,9 @@ No user-facing changes. * When a code-scanning configuration specifies the `paths:` and/or `paths-ignore:` settings, these are now taken into account by the C# extractor's search for `.config`, `.props`, XML and project files. * Updated the generated .NET “models as data” runtime models to cover .NET 10. * C# 14: Support for *implicit* span conversions in the QL library. -* Basic extractor support for .NET 10 is now available. Extraction is supported for .NET 10 projects in both traced mode and `build mode: none`. However, code that uses language features new to C# 14 is not yet fully supported for extraction and analysis. +* Basic extractor support for .NET 10 is now available. Extraction is supported for .NET 10 projects in both traced mode and `build-mode: none`. However, code that uses language features new to C# 14 is not yet fully supported for extraction and analysis. * Added autobuilder and `build-mode: none` support for `.slnx` solution files. -* In `build mode: none`, .NET 10 is now used by default unless a specific .NET version is specified elsewhere. +* In `build-mode: none`, .NET 10 is now used by default unless a specific .NET version is specified elsewhere. * Added implicit reads of `System.Collections.Generic.KeyValuePair.Value` at taint-tracking sinks and at inputs to additional taint steps. As a result, taint-tracking queries will now produce more results when a container is tainted. ### Bug Fixes diff --git a/csharp/ql/lib/Linq/Helpers.qll b/csharp/ql/lib/Linq/Helpers.qll index d490868f4532..2a4d5c8c27a2 100644 --- a/csharp/ql/lib/Linq/Helpers.qll +++ b/csharp/ql/lib/Linq/Helpers.qll @@ -77,7 +77,7 @@ predicate missedAllOpportunity(ForeachStmtGenericEnumerable fes) { // The then case of the if assigns false to something and breaks out of the loop. exists(Assignment a, BoolLiteral bl | a = is.getThen().getAChild*() and - bl = a.getRValue() and + bl = a.getRightOperand() and bl.toString() = "false" ) and is.getThen().getAChild*() instanceof BreakStmt @@ -121,15 +121,17 @@ predicate missedOfTypeOpportunity(ForeachStmtEnumerable fes, LocalVariableDeclSt /** * Holds if `foreach` statement `fes` can be converted to a `.Select()` call. * That is, the loop variable is accessed only in the first statement of the - * block, the access is not a cast, and the first statement is a - * local variable declaration statement `s`. + * block, the access is not a cast, the first statement is a + * local variable declaration statement `s`, and the initializer does not + * contain an `await` expression (since `Select` does not support async lambdas). */ predicate missedSelectOpportunity(ForeachStmtGenericEnumerable fes, LocalVariableDeclStmt s) { s = firstStmt(fes) and forex(VariableAccess va | va = fes.getVariable().getAnAccess() | va = s.getAVariableDeclExpr().getAChildExpr*() ) and - not s.getAVariableDeclExpr().getInitializer() instanceof Cast + not s.getAVariableDeclExpr().getInitializer() instanceof Cast and + not s.getAVariableDeclExpr().getInitializer().getAChildExpr*() instanceof AwaitExpr } /** diff --git a/csharp/ql/lib/change-notes/released/5.4.5.md b/csharp/ql/lib/change-notes/released/5.4.5.md index a084df5f2008..fc1e8b8c4eeb 100644 --- a/csharp/ql/lib/change-notes/released/5.4.5.md +++ b/csharp/ql/lib/change-notes/released/5.4.5.md @@ -5,9 +5,9 @@ * When a code-scanning configuration specifies the `paths:` and/or `paths-ignore:` settings, these are now taken into account by the C# extractor's search for `.config`, `.props`, XML and project files. * Updated the generated .NET “models as data” runtime models to cover .NET 10. * C# 14: Support for *implicit* span conversions in the QL library. -* Basic extractor support for .NET 10 is now available. Extraction is supported for .NET 10 projects in both traced mode and `build mode: none`. However, code that uses language features new to C# 14 is not yet fully supported for extraction and analysis. +* Basic extractor support for .NET 10 is now available. Extraction is supported for .NET 10 projects in both traced mode and `build-mode: none`. However, code that uses language features new to C# 14 is not yet fully supported for extraction and analysis. * Added autobuilder and `build-mode: none` support for `.slnx` solution files. -* In `build mode: none`, .NET 10 is now used by default unless a specific .NET version is specified elsewhere. +* In `build-mode: none`, .NET 10 is now used by default unless a specific .NET version is specified elsewhere. * Added implicit reads of `System.Collections.Generic.KeyValuePair.Value` at taint-tracking sinks and at inputs to additional taint steps. As a result, taint-tracking queries will now produce more results when a container is tainted. ### Bug Fixes diff --git a/csharp/ql/lib/change-notes/released/5.5.0.md b/csharp/ql/lib/change-notes/released/5.5.0.md new file mode 100644 index 000000000000..b497d8ea51b4 --- /dev/null +++ b/csharp/ql/lib/change-notes/released/5.5.0.md @@ -0,0 +1,5 @@ +## 5.5.0 + +### Deprecated APIs + +* The predicates `get[L|R]Value` in the class `Assignment` have been deprecated. Use `get[Left|Right]Operand` instead. diff --git a/csharp/ql/lib/change-notes/released/6.0.0.md b/csharp/ql/lib/change-notes/released/6.0.0.md new file mode 100644 index 000000000000..e249567d0958 --- /dev/null +++ b/csharp/ql/lib/change-notes/released/6.0.0.md @@ -0,0 +1,38 @@ +## 6.0.0 + +### Breaking Changes + +* The C# control flow graph (CFG) implementation has been completely + rewritten. The CFG now includes additional nodes to more accurately represent + certain constructs. This also means that any existing code that implicitly + relies on very specific details about the CFG may need to be updated. + The CFG no longer uses splitting, which means that AST nodes now have a unique + CFG node representation. + Additionally, the following breaking changes have been made: + - `ControlFlow::Node` has been renamed to `ControlFlowNode`. + - `ControlFlow::Nodes` has been renamed to `ControlFlowNodes`. + - `BasicBlock.getCallable` has been renamed to `BasicBlock.getEnclosingCallable`. + - `BasicBlocks.qll` has been deleted. + - `ControlFlowNode.getAstNode` has changed its meaning. The AST-to-CFG + mapping remains one-to-many, but now for a different reason. It used to be + because of splitting, but now it's because of additional "helper" CFG + nodes. To get the (now canonical) CFG node for a given AST node, use + `ControlFlowNode.asExpr()` or `ControlFlowNode.asStmt()` or + `ControlFlowElement.getControlFlowNode()` instead. + +### Deprecated APIs + +* The QL classes in the C# SSA library have been renamed to improve consistency between languages. Any custom QL code that makes use of SSA needs to be updated. The old classes have been deprecated and include more detailed migration instructions in their qldoc. + +### New Features + +* Data flow barriers and barrier guards can now be added using data extensions. For more information see [Customizing library models for C#](https://codeql.github.com/docs/codeql-language-guides/customizing-library-models-for-csharp/). + +### Major Analysis Improvements + +* When resolving dependencies in `build-mode: none`, `dotnet restore` now explicitly receives reachable NuGet feeds configured in `nuget.config` when feed responsiveness checking is enabled (the default), and any private registries directly, improving reliability when default feeds are unavailable or restricted. + +### Minor Analysis Improvements + +* Expanded ASP and ASP.NET remote source modeling to cover additional sources, including fields of tainted parameters as well as properties and fields that become tainted transitively. +* C# 14: Added support for user-defined compound assignment operators. diff --git a/csharp/ql/lib/change-notes/released/6.0.1.md b/csharp/ql/lib/change-notes/released/6.0.1.md new file mode 100644 index 000000000000..35b17912c81a --- /dev/null +++ b/csharp/ql/lib/change-notes/released/6.0.1.md @@ -0,0 +1,3 @@ +## 6.0.1 + +No user-facing changes. diff --git a/csharp/ql/lib/codeql-pack.release.yml b/csharp/ql/lib/codeql-pack.release.yml index 43db6e52c988..d1f3c68c8120 100644 --- a/csharp/ql/lib/codeql-pack.release.yml +++ b/csharp/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 5.4.12 +lastReleaseVersion: 6.0.1 diff --git a/csharp/ql/lib/definitions.qll b/csharp/ql/lib/definitions.qll index 4feaf20629c9..d4f2540bbef5 100644 --- a/csharp/ql/lib/definitions.qll +++ b/csharp/ql/lib/definitions.qll @@ -96,7 +96,7 @@ private class MethodUse extends Use, QualifiableExpr { private class AccessUse extends Access, Use { AccessUse() { not this.getTarget().(Parameter).getCallable() instanceof Accessor and - not this = any(LocalVariableDeclAndInitExpr d).getLValue() and + not this = any(LocalVariableDeclAndInitExpr d).getLeftOperand() and not this.isImplicit() and not this instanceof MethodAccess and // handled by `MethodUse` not this instanceof TypeAccess and // handled by `TypeMentionUse` diff --git a/csharp/ql/lib/experimental/code/csharp/Cryptography/NonCryptographicHashes.qll b/csharp/ql/lib/experimental/code/csharp/Cryptography/NonCryptographicHashes.qll index b09251cf6e42..130e563a6638 100644 --- a/csharp/ql/lib/experimental/code/csharp/Cryptography/NonCryptographicHashes.qll +++ b/csharp/ql/lib/experimental/code/csharp/Cryptography/NonCryptographicHashes.qll @@ -30,7 +30,7 @@ predicate maybeUsedInFnvFunction(Variable v, Operation xor, Operation mul, LoopS e2.getAChild*() = v.getAnAccess() and e1 = xor.getAnOperand() and e2 = mul.getAnOperand() and - xor.getAControlFlowNode().getASuccessor*() = mul.getAControlFlowNode() and + xor.getControlFlowNode().getASuccessor*() = mul.getControlFlowNode() and (xor instanceof AssignXorExpr or xor instanceof BitwiseXorExpr) and (mul instanceof AssignMulExpr or mul instanceof MulExpr) ) and @@ -55,11 +55,11 @@ private predicate maybeUsedInElfHashFunction(Variable v, Operation xor, Operatio v = addAssign.getTargetVariable() and addAssign.getAChild*() = add and (xor instanceof BitwiseXorExpr or xor instanceof AssignXorExpr) and - addAssign.getAControlFlowNode().getASuccessor*() = xor.getAControlFlowNode() and + addAssign.getControlFlowNode().getASuccessor*() = xor.getControlFlowNode() and xorAssign.getAChild*() = xor and v = xorAssign.getTargetVariable() and (notOp instanceof UnaryBitwiseOperation or notOp instanceof AssignBitwiseOperation) and - xor.getAControlFlowNode().getASuccessor*() = notOp.getAControlFlowNode() and + xor.getControlFlowNode().getASuccessor*() = notOp.getControlFlowNode() and notAssign.getAChild*() = notOp and v = notAssign.getTargetVariable() and loop.getAChild*() = add.getEnclosingStmt() and diff --git a/csharp/ql/lib/ext/generated/Generators.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Generators.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Generators.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Generators.model.yml diff --git a/csharp/ql/lib/ext/generated/ILCompiler.IBC.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/ILCompiler.IBC.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/ILCompiler.IBC.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/ILCompiler.IBC.model.yml diff --git a/csharp/ql/lib/ext/generated/ILCompiler.Reflection.ReadyToRun.Amd64.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/ILCompiler.Reflection.ReadyToRun.Amd64.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/ILCompiler.Reflection.ReadyToRun.Amd64.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/ILCompiler.Reflection.ReadyToRun.Amd64.model.yml diff --git a/csharp/ql/lib/ext/generated/ILCompiler.Reflection.ReadyToRun.Arm.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/ILCompiler.Reflection.ReadyToRun.Arm.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/ILCompiler.Reflection.ReadyToRun.Arm.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/ILCompiler.Reflection.ReadyToRun.Arm.model.yml diff --git a/csharp/ql/lib/ext/generated/ILCompiler.Reflection.ReadyToRun.Arm64.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/ILCompiler.Reflection.ReadyToRun.Arm64.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/ILCompiler.Reflection.ReadyToRun.Arm64.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/ILCompiler.Reflection.ReadyToRun.Arm64.model.yml diff --git a/csharp/ql/lib/ext/generated/ILCompiler.Reflection.ReadyToRun.LoongArch64.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/ILCompiler.Reflection.ReadyToRun.LoongArch64.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/ILCompiler.Reflection.ReadyToRun.LoongArch64.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/ILCompiler.Reflection.ReadyToRun.LoongArch64.model.yml diff --git a/csharp/ql/lib/ext/generated/ILCompiler.Reflection.ReadyToRun.MachO.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/ILCompiler.Reflection.ReadyToRun.MachO.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/ILCompiler.Reflection.ReadyToRun.MachO.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/ILCompiler.Reflection.ReadyToRun.MachO.model.yml diff --git a/csharp/ql/lib/ext/generated/ILCompiler.Reflection.ReadyToRun.RiscV64.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/ILCompiler.Reflection.ReadyToRun.RiscV64.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/ILCompiler.Reflection.ReadyToRun.RiscV64.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/ILCompiler.Reflection.ReadyToRun.RiscV64.model.yml diff --git a/csharp/ql/lib/ext/generated/ILCompiler.Reflection.ReadyToRun.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/ILCompiler.Reflection.ReadyToRun.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/ILCompiler.Reflection.ReadyToRun.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/ILCompiler.Reflection.ReadyToRun.model.yml diff --git a/csharp/ql/lib/ext/generated/ILCompiler.Reflection.ReadyToRun.x86.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/ILCompiler.Reflection.ReadyToRun.x86.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/ILCompiler.Reflection.ReadyToRun.x86.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/ILCompiler.Reflection.ReadyToRun.x86.model.yml diff --git a/csharp/ql/lib/ext/generated/ILCompiler.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/ILCompiler.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/ILCompiler.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/ILCompiler.model.yml diff --git a/csharp/ql/lib/ext/generated/ILLink.CodeFix.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/ILLink.CodeFix.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/ILLink.CodeFix.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/ILLink.CodeFix.model.yml diff --git a/csharp/ql/lib/ext/generated/ILLink.RoslynAnalyzer.DataFlow.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/ILLink.RoslynAnalyzer.DataFlow.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/ILLink.RoslynAnalyzer.DataFlow.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/ILLink.RoslynAnalyzer.DataFlow.model.yml diff --git a/csharp/ql/lib/ext/generated/ILLink.RoslynAnalyzer.TrimAnalysis.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/ILLink.RoslynAnalyzer.TrimAnalysis.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/ILLink.RoslynAnalyzer.TrimAnalysis.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/ILLink.RoslynAnalyzer.TrimAnalysis.model.yml diff --git a/csharp/ql/lib/ext/generated/ILLink.RoslynAnalyzer.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/ILLink.RoslynAnalyzer.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/ILLink.RoslynAnalyzer.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/ILLink.RoslynAnalyzer.model.yml diff --git a/csharp/ql/lib/ext/generated/ILLink.Shared.DataFlow.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/ILLink.Shared.DataFlow.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/ILLink.Shared.DataFlow.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/ILLink.Shared.DataFlow.model.yml diff --git a/csharp/ql/lib/ext/generated/ILLink.Shared.TrimAnalysis.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/ILLink.Shared.TrimAnalysis.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/ILLink.Shared.TrimAnalysis.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/ILLink.Shared.TrimAnalysis.model.yml diff --git a/csharp/ql/lib/ext/generated/ILLink.Shared.TypeSystemProxy.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/ILLink.Shared.TypeSystemProxy.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/ILLink.Shared.TypeSystemProxy.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/ILLink.Shared.TypeSystemProxy.model.yml diff --git a/csharp/ql/lib/ext/generated/ILLink.Shared.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/ILLink.Shared.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/ILLink.Shared.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/ILLink.Shared.model.yml diff --git a/csharp/ql/lib/ext/generated/ILLink.Tasks.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/ILLink.Tasks.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/ILLink.Tasks.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/ILLink.Tasks.model.yml diff --git a/csharp/ql/lib/ext/generated/Internal.IL.Stubs.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Internal.IL.Stubs.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Internal.IL.Stubs.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Internal.IL.Stubs.model.yml diff --git a/csharp/ql/lib/ext/generated/Internal.IL.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Internal.IL.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Internal.IL.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Internal.IL.model.yml diff --git a/csharp/ql/lib/ext/generated/Internal.NativeFormat.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Internal.NativeFormat.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Internal.NativeFormat.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Internal.NativeFormat.model.yml diff --git a/csharp/ql/lib/ext/generated/Internal.Pgo.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Internal.Pgo.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Internal.Pgo.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Internal.Pgo.model.yml diff --git a/csharp/ql/lib/ext/generated/Internal.TypeSystem.Ecma.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Internal.TypeSystem.Ecma.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Internal.TypeSystem.Ecma.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Internal.TypeSystem.Ecma.model.yml diff --git a/csharp/ql/lib/ext/generated/Internal.TypeSystem.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Internal.TypeSystem.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Internal.TypeSystem.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Internal.TypeSystem.model.yml diff --git a/csharp/ql/lib/ext/generated/Internal.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Internal.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Internal.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Internal.model.yml diff --git a/csharp/ql/lib/ext/generated/IntrinsicsInSystemPrivateCoreLib.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/IntrinsicsInSystemPrivateCoreLib.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/IntrinsicsInSystemPrivateCoreLib.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/IntrinsicsInSystemPrivateCoreLib.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.CSharp.RuntimeBinder.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.CSharp.RuntimeBinder.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.CSharp.RuntimeBinder.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.CSharp.RuntimeBinder.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.CSharp.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.CSharp.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.CSharp.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.CSharp.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Diagnostics.JitTrace.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Diagnostics.JitTrace.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Diagnostics.JitTrace.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Diagnostics.JitTrace.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Diagnostics.Tools.Pgo.TypeRefTypeSystem.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Diagnostics.Tools.Pgo.TypeRefTypeSystem.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Diagnostics.Tools.Pgo.TypeRefTypeSystem.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Diagnostics.Tools.Pgo.TypeRefTypeSystem.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Diagnostics.Tools.Pgo.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Diagnostics.Tools.Pgo.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Diagnostics.Tools.Pgo.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Diagnostics.Tools.Pgo.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.DotNet.Build.Tasks.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.DotNet.Build.Tasks.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.DotNet.Build.Tasks.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.DotNet.Build.Tasks.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.DotNet.PlatformAbstractions.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.DotNet.PlatformAbstractions.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.DotNet.PlatformAbstractions.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.DotNet.PlatformAbstractions.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.Caching.Distributed.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Caching.Distributed.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.Caching.Distributed.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Caching.Distributed.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.Caching.Hybrid.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Caching.Hybrid.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.Caching.Hybrid.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Caching.Hybrid.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.Caching.Memory.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Caching.Memory.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.Caching.Memory.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Caching.Memory.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.Configuration.Binder.SourceGeneration.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Configuration.Binder.SourceGeneration.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.Configuration.Binder.SourceGeneration.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Configuration.Binder.SourceGeneration.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.Configuration.CommandLine.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Configuration.CommandLine.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.Configuration.CommandLine.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Configuration.CommandLine.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.Configuration.EnvironmentVariables.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Configuration.EnvironmentVariables.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.Configuration.EnvironmentVariables.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Configuration.EnvironmentVariables.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.Configuration.Ini.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Configuration.Ini.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.Configuration.Ini.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Configuration.Ini.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.Configuration.Json.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Configuration.Json.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.Configuration.Json.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Configuration.Json.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.Configuration.Memory.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Configuration.Memory.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.Configuration.Memory.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Configuration.Memory.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.Configuration.UserSecrets.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Configuration.UserSecrets.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.Configuration.UserSecrets.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Configuration.UserSecrets.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.Configuration.Xml.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Configuration.Xml.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.Configuration.Xml.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Configuration.Xml.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.Configuration.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Configuration.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.Configuration.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Configuration.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.DependencyInjection.Extensions.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.DependencyInjection.Extensions.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.DependencyInjection.Extensions.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.DependencyInjection.Extensions.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.DependencyInjection.Specification.Fakes.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.DependencyInjection.Specification.Fakes.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.DependencyInjection.Specification.Fakes.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.DependencyInjection.Specification.Fakes.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.DependencyInjection.Specification.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.DependencyInjection.Specification.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.DependencyInjection.Specification.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.DependencyInjection.Specification.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.DependencyInjection.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.DependencyInjection.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.DependencyInjection.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.DependencyInjection.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.DependencyModel.Resolution.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.DependencyModel.Resolution.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.DependencyModel.Resolution.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.DependencyModel.Resolution.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.DependencyModel.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.DependencyModel.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.DependencyModel.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.DependencyModel.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.Diagnostics.Metrics.Configuration.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Diagnostics.Metrics.Configuration.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.Diagnostics.Metrics.Configuration.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Diagnostics.Metrics.Configuration.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.Diagnostics.Metrics.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Diagnostics.Metrics.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.Diagnostics.Metrics.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Diagnostics.Metrics.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.FileProviders.Composite.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.FileProviders.Composite.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.FileProviders.Composite.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.FileProviders.Composite.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.FileProviders.Internal.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.FileProviders.Internal.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.FileProviders.Internal.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.FileProviders.Internal.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.FileProviders.Physical.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.FileProviders.Physical.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.FileProviders.Physical.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.FileProviders.Physical.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.FileProviders.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.FileProviders.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.FileProviders.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.FileProviders.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.FileSystemGlobbing.Abstractions.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.FileSystemGlobbing.Abstractions.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.FileSystemGlobbing.Abstractions.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.FileSystemGlobbing.Abstractions.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.FileSystemGlobbing.Internal.PathSegments.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.FileSystemGlobbing.Internal.PathSegments.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.FileSystemGlobbing.Internal.PathSegments.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.FileSystemGlobbing.Internal.PathSegments.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.FileSystemGlobbing.Internal.PatternContexts.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.FileSystemGlobbing.Internal.PatternContexts.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.FileSystemGlobbing.Internal.PatternContexts.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.FileSystemGlobbing.Internal.PatternContexts.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.FileSystemGlobbing.Internal.Patterns.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.FileSystemGlobbing.Internal.Patterns.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.FileSystemGlobbing.Internal.Patterns.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.FileSystemGlobbing.Internal.Patterns.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.FileSystemGlobbing.Internal.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.FileSystemGlobbing.Internal.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.FileSystemGlobbing.Internal.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.FileSystemGlobbing.Internal.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.FileSystemGlobbing.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.FileSystemGlobbing.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.FileSystemGlobbing.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.FileSystemGlobbing.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.Hosting.Internal.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Hosting.Internal.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.Hosting.Internal.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Hosting.Internal.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.Hosting.Systemd.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Hosting.Systemd.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.Hosting.Systemd.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Hosting.Systemd.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.Hosting.WindowsServices.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Hosting.WindowsServices.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.Hosting.WindowsServices.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Hosting.WindowsServices.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.Hosting.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Hosting.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.Hosting.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Hosting.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.Http.Logging.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Http.Logging.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.Http.Logging.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Http.Logging.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.Http.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Http.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.Http.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Http.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.Internal.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Internal.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.Internal.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Internal.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.Logging.Abstractions.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Logging.Abstractions.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.Logging.Abstractions.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Logging.Abstractions.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.Logging.Configuration.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Logging.Configuration.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.Logging.Configuration.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Logging.Configuration.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.Logging.Console.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Logging.Console.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.Logging.Console.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Logging.Console.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.Logging.Debug.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Logging.Debug.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.Logging.Debug.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Logging.Debug.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.Logging.EventLog.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Logging.EventLog.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.Logging.EventLog.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Logging.EventLog.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.Logging.EventSource.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Logging.EventSource.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.Logging.EventSource.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Logging.EventSource.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.Logging.Generators.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Logging.Generators.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.Logging.Generators.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Logging.Generators.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.Logging.TraceSource.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Logging.TraceSource.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.Logging.TraceSource.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Logging.TraceSource.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.Logging.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Logging.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.Logging.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Logging.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.Options.Generators.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Options.Generators.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.Options.Generators.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Options.Generators.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.Options.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Options.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.Options.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Options.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Extensions.Primitives.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Primitives.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Extensions.Primitives.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Extensions.Primitives.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Interop.Analyzers.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Interop.Analyzers.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Interop.Analyzers.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Interop.Analyzers.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Interop.JavaScript.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Interop.JavaScript.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Interop.JavaScript.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Interop.JavaScript.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Interop.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Interop.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Interop.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Interop.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.NET.Build.Tasks.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.NET.Build.Tasks.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.NET.Build.Tasks.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.NET.Build.Tasks.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.NETCore.Platforms.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.NETCore.Platforms.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.NETCore.Platforms.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.NETCore.Platforms.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.VisualBasic.CompilerServices.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.VisualBasic.CompilerServices.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.VisualBasic.CompilerServices.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.VisualBasic.CompilerServices.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.VisualBasic.FileIO.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.VisualBasic.FileIO.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.VisualBasic.FileIO.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.VisualBasic.FileIO.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.VisualBasic.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.VisualBasic.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.VisualBasic.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.VisualBasic.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Win32.SafeHandles.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Win32.SafeHandles.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Win32.SafeHandles.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Win32.SafeHandles.model.yml diff --git a/csharp/ql/lib/ext/generated/Microsoft.Win32.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Win32.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Microsoft.Win32.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Microsoft.Win32.model.yml diff --git a/csharp/ql/lib/ext/generated/Mono.Linker.Dataflow.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Mono.Linker.Dataflow.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Mono.Linker.Dataflow.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Mono.Linker.Dataflow.model.yml diff --git a/csharp/ql/lib/ext/generated/Mono.Linker.Steps.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Mono.Linker.Steps.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Mono.Linker.Steps.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Mono.Linker.Steps.model.yml diff --git a/csharp/ql/lib/ext/generated/Mono.Linker.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/Mono.Linker.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/Mono.Linker.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/Mono.Linker.model.yml diff --git a/csharp/ql/lib/ext/generated/SourceGenerators.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/SourceGenerators.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/SourceGenerators.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/SourceGenerators.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Buffers.Binary.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Buffers.Binary.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Buffers.Binary.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Buffers.Binary.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Buffers.Text.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Buffers.Text.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Buffers.Text.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Buffers.Text.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Buffers.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Buffers.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Buffers.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Buffers.model.yml diff --git a/csharp/ql/lib/ext/generated/System.CodeDom.Compiler.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.CodeDom.Compiler.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.CodeDom.Compiler.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.CodeDom.Compiler.model.yml diff --git a/csharp/ql/lib/ext/generated/System.CodeDom.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.CodeDom.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.CodeDom.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.CodeDom.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Collections.Concurrent.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Collections.Concurrent.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Collections.Concurrent.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Collections.Concurrent.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Collections.Frozen.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Collections.Frozen.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Collections.Frozen.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Collections.Frozen.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Collections.Generic.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Collections.Generic.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Collections.Generic.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Collections.Generic.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Collections.Immutable.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Collections.Immutable.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Collections.Immutable.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Collections.Immutable.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Collections.ObjectModel.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Collections.ObjectModel.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Collections.ObjectModel.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Collections.ObjectModel.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Collections.Specialized.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Collections.Specialized.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Collections.Specialized.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Collections.Specialized.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Collections.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Collections.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Collections.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Collections.model.yml diff --git a/csharp/ql/lib/ext/generated/System.ComponentModel.Composition.Hosting.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.ComponentModel.Composition.Hosting.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.ComponentModel.Composition.Hosting.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.ComponentModel.Composition.Hosting.model.yml diff --git a/csharp/ql/lib/ext/generated/System.ComponentModel.Composition.Primitives.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.ComponentModel.Composition.Primitives.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.ComponentModel.Composition.Primitives.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.ComponentModel.Composition.Primitives.model.yml diff --git a/csharp/ql/lib/ext/generated/System.ComponentModel.Composition.ReflectionModel.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.ComponentModel.Composition.ReflectionModel.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.ComponentModel.Composition.ReflectionModel.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.ComponentModel.Composition.ReflectionModel.model.yml diff --git a/csharp/ql/lib/ext/generated/System.ComponentModel.Composition.Registration.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.ComponentModel.Composition.Registration.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.ComponentModel.Composition.Registration.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.ComponentModel.Composition.Registration.model.yml diff --git a/csharp/ql/lib/ext/generated/System.ComponentModel.Composition.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.ComponentModel.Composition.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.ComponentModel.Composition.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.ComponentModel.Composition.model.yml diff --git a/csharp/ql/lib/ext/generated/System.ComponentModel.DataAnnotations.Schema.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.ComponentModel.DataAnnotations.Schema.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.ComponentModel.DataAnnotations.Schema.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.ComponentModel.DataAnnotations.Schema.model.yml diff --git a/csharp/ql/lib/ext/generated/System.ComponentModel.DataAnnotations.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.ComponentModel.DataAnnotations.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.ComponentModel.DataAnnotations.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.ComponentModel.DataAnnotations.model.yml diff --git a/csharp/ql/lib/ext/generated/System.ComponentModel.Design.Serialization.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.ComponentModel.Design.Serialization.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.ComponentModel.Design.Serialization.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.ComponentModel.Design.Serialization.model.yml diff --git a/csharp/ql/lib/ext/generated/System.ComponentModel.Design.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.ComponentModel.Design.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.ComponentModel.Design.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.ComponentModel.Design.model.yml diff --git a/csharp/ql/lib/ext/generated/System.ComponentModel.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.ComponentModel.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.ComponentModel.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.ComponentModel.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Composition.Convention.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Composition.Convention.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Composition.Convention.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Composition.Convention.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Composition.Hosting.Core.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Composition.Hosting.Core.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Composition.Hosting.Core.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Composition.Hosting.Core.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Composition.Hosting.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Composition.Hosting.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Composition.Hosting.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Composition.Hosting.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Composition.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Composition.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Composition.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Composition.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Configuration.Internal.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Configuration.Internal.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Configuration.Internal.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Configuration.Internal.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Configuration.Provider.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Configuration.Provider.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Configuration.Provider.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Configuration.Provider.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Configuration.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Configuration.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Configuration.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Configuration.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Data.Common.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Data.Common.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Data.Common.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Data.Common.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Data.Odbc.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Data.Odbc.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Data.Odbc.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Data.Odbc.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Data.OleDb.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Data.OleDb.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Data.OleDb.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Data.OleDb.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Data.OracleClient.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Data.OracleClient.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Data.OracleClient.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Data.OracleClient.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Data.SqlClient.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Data.SqlClient.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Data.SqlClient.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Data.SqlClient.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Data.SqlTypes.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Data.SqlTypes.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Data.SqlTypes.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Data.SqlTypes.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Data.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Data.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Data.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Data.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Diagnostics.CodeAnalysis.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Diagnostics.CodeAnalysis.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Diagnostics.CodeAnalysis.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Diagnostics.CodeAnalysis.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Diagnostics.Contracts.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Diagnostics.Contracts.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Diagnostics.Contracts.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Diagnostics.Contracts.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Diagnostics.Eventing.Reader.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Diagnostics.Eventing.Reader.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Diagnostics.Eventing.Reader.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Diagnostics.Eventing.Reader.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Diagnostics.Metrics.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Diagnostics.Metrics.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Diagnostics.Metrics.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Diagnostics.Metrics.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Diagnostics.PerformanceData.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Diagnostics.PerformanceData.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Diagnostics.PerformanceData.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Diagnostics.PerformanceData.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Diagnostics.SymbolStore.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Diagnostics.SymbolStore.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Diagnostics.SymbolStore.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Diagnostics.SymbolStore.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Diagnostics.Tracing.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Diagnostics.Tracing.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Diagnostics.Tracing.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Diagnostics.Tracing.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Diagnostics.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Diagnostics.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Diagnostics.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Diagnostics.model.yml diff --git a/csharp/ql/lib/ext/generated/System.DirectoryServices.AccountManagement.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.DirectoryServices.AccountManagement.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.DirectoryServices.AccountManagement.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.DirectoryServices.AccountManagement.model.yml diff --git a/csharp/ql/lib/ext/generated/System.DirectoryServices.ActiveDirectory.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.DirectoryServices.ActiveDirectory.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.DirectoryServices.ActiveDirectory.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.DirectoryServices.ActiveDirectory.model.yml diff --git a/csharp/ql/lib/ext/generated/System.DirectoryServices.Protocols.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.DirectoryServices.Protocols.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.DirectoryServices.Protocols.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.DirectoryServices.Protocols.model.yml diff --git a/csharp/ql/lib/ext/generated/System.DirectoryServices.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.DirectoryServices.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.DirectoryServices.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.DirectoryServices.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Drawing.Printing.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Drawing.Printing.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Drawing.Printing.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Drawing.Printing.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Drawing.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Drawing.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Drawing.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Drawing.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Dynamic.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Dynamic.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Dynamic.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Dynamic.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Formats.Asn1.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Formats.Asn1.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Formats.Asn1.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Formats.Asn1.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Formats.Cbor.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Formats.Cbor.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Formats.Cbor.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Formats.Cbor.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Formats.Nrbf.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Formats.Nrbf.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Formats.Nrbf.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Formats.Nrbf.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Formats.Tar.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Formats.Tar.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Formats.Tar.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Formats.Tar.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Globalization.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Globalization.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Globalization.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Globalization.model.yml diff --git a/csharp/ql/lib/ext/generated/System.IO.Compression.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.IO.Compression.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.IO.Compression.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.IO.Compression.model.yml diff --git a/csharp/ql/lib/ext/generated/System.IO.Enumeration.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.IO.Enumeration.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.IO.Enumeration.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.IO.Enumeration.model.yml diff --git a/csharp/ql/lib/ext/generated/System.IO.Hashing.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.IO.Hashing.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.IO.Hashing.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.IO.Hashing.model.yml diff --git a/csharp/ql/lib/ext/generated/System.IO.IsolatedStorage.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.IO.IsolatedStorage.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.IO.IsolatedStorage.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.IO.IsolatedStorage.model.yml diff --git a/csharp/ql/lib/ext/generated/System.IO.MemoryMappedFiles.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.IO.MemoryMappedFiles.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.IO.MemoryMappedFiles.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.IO.MemoryMappedFiles.model.yml diff --git a/csharp/ql/lib/ext/generated/System.IO.Packaging.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.IO.Packaging.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.IO.Packaging.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.IO.Packaging.model.yml diff --git a/csharp/ql/lib/ext/generated/System.IO.Pipelines.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.IO.Pipelines.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.IO.Pipelines.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.IO.Pipelines.model.yml diff --git a/csharp/ql/lib/ext/generated/System.IO.Pipes.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.IO.Pipes.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.IO.Pipes.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.IO.Pipes.model.yml diff --git a/csharp/ql/lib/ext/generated/System.IO.Ports.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.IO.Ports.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.IO.Ports.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.IO.Ports.model.yml diff --git a/csharp/ql/lib/ext/generated/System.IO.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.IO.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.IO.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.IO.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Linq.Expressions.Interpreter.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Linq.Expressions.Interpreter.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Linq.Expressions.Interpreter.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Linq.Expressions.Interpreter.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Linq.Expressions.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Linq.Expressions.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Linq.Expressions.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Linq.Expressions.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Linq.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Linq.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Linq.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Linq.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Management.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Management.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Management.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Management.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Media.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Media.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Media.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Media.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Net.Cache.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Net.Cache.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Net.Cache.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Net.Cache.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Net.Http.Headers.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Net.Http.Headers.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Net.Http.Headers.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Net.Http.Headers.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Net.Http.Json.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Net.Http.Json.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Net.Http.Json.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Net.Http.Json.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Net.Http.Metrics.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Net.Http.Metrics.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Net.Http.Metrics.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Net.Http.Metrics.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Net.Http.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Net.Http.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Net.Http.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Net.Http.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Net.Mail.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Net.Mail.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Net.Mail.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Net.Mail.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Net.Mime.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Net.Mime.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Net.Mime.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Net.Mime.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Net.NetworkInformation.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Net.NetworkInformation.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Net.NetworkInformation.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Net.NetworkInformation.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Net.PeerToPeer.Collaboration.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Net.PeerToPeer.Collaboration.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Net.PeerToPeer.Collaboration.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Net.PeerToPeer.Collaboration.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Net.PeerToPeer.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Net.PeerToPeer.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Net.PeerToPeer.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Net.PeerToPeer.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Net.Quic.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Net.Quic.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Net.Quic.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Net.Quic.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Net.Security.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Net.Security.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Net.Security.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Net.Security.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Net.ServerSentEvents.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Net.ServerSentEvents.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Net.ServerSentEvents.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Net.ServerSentEvents.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Net.Sockets.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Net.Sockets.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Net.Sockets.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Net.Sockets.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Net.WebSockets.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Net.WebSockets.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Net.WebSockets.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Net.WebSockets.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Net.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Net.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Net.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Net.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Numerics.Tensors.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Numerics.Tensors.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Numerics.Tensors.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Numerics.Tensors.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Numerics.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Numerics.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Numerics.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Numerics.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Reflection.Context.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Reflection.Context.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Reflection.Context.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Reflection.Context.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Reflection.Emit.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Reflection.Emit.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Reflection.Emit.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Reflection.Emit.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Reflection.Metadata.Ecma335.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Reflection.Metadata.Ecma335.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Reflection.Metadata.Ecma335.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Reflection.Metadata.Ecma335.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Reflection.Metadata.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Reflection.Metadata.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Reflection.Metadata.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Reflection.Metadata.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Reflection.PortableExecutable.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Reflection.PortableExecutable.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Reflection.PortableExecutable.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Reflection.PortableExecutable.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Reflection.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Reflection.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Reflection.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Reflection.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Resources.Extensions.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Resources.Extensions.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Resources.Extensions.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Resources.Extensions.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Resources.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Resources.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Resources.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Resources.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Runtime.Caching.Hosting.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.Caching.Hosting.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Runtime.Caching.Hosting.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.Caching.Hosting.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Runtime.Caching.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.Caching.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Runtime.Caching.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.Caching.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Runtime.CompilerServices.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.CompilerServices.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Runtime.CompilerServices.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.CompilerServices.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Runtime.ConstrainedExecution.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.ConstrainedExecution.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Runtime.ConstrainedExecution.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.ConstrainedExecution.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Runtime.ExceptionServices.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.ExceptionServices.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Runtime.ExceptionServices.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.ExceptionServices.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Runtime.InteropServices.ComTypes.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.InteropServices.ComTypes.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Runtime.InteropServices.ComTypes.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.InteropServices.ComTypes.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Runtime.InteropServices.Java.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.InteropServices.Java.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Runtime.InteropServices.Java.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.InteropServices.Java.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Runtime.InteropServices.JavaScript.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.InteropServices.JavaScript.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Runtime.InteropServices.JavaScript.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.InteropServices.JavaScript.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Runtime.InteropServices.Marshalling.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.InteropServices.Marshalling.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Runtime.InteropServices.Marshalling.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.InteropServices.Marshalling.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Runtime.InteropServices.ObjectiveC.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.InteropServices.ObjectiveC.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Runtime.InteropServices.ObjectiveC.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.InteropServices.ObjectiveC.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Runtime.InteropServices.Swift.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.InteropServices.Swift.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Runtime.InteropServices.Swift.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.InteropServices.Swift.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Runtime.InteropServices.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.InteropServices.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Runtime.InteropServices.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.InteropServices.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Runtime.Intrinsics.Arm.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.Intrinsics.Arm.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Runtime.Intrinsics.Arm.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.Intrinsics.Arm.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Runtime.Intrinsics.Wasm.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.Intrinsics.Wasm.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Runtime.Intrinsics.Wasm.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.Intrinsics.Wasm.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Runtime.Intrinsics.X86.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.Intrinsics.X86.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Runtime.Intrinsics.X86.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.Intrinsics.X86.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Runtime.Intrinsics.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.Intrinsics.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Runtime.Intrinsics.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.Intrinsics.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Runtime.Loader.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.Loader.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Runtime.Loader.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.Loader.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Runtime.Remoting.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.Remoting.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Runtime.Remoting.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.Remoting.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Runtime.Serialization.DataContracts.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.Serialization.DataContracts.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Runtime.Serialization.DataContracts.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.Serialization.DataContracts.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Runtime.Serialization.Formatters.Binary.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.Serialization.Formatters.Binary.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Runtime.Serialization.Formatters.Binary.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.Serialization.Formatters.Binary.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Runtime.Serialization.Json.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.Serialization.Json.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Runtime.Serialization.Json.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.Serialization.Json.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Runtime.Serialization.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.Serialization.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Runtime.Serialization.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.Serialization.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Runtime.Versioning.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.Versioning.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Runtime.Versioning.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.Versioning.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Runtime.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Runtime.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Runtime.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Security.AccessControl.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Security.AccessControl.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Security.AccessControl.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Security.AccessControl.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Security.Authentication.ExtendedProtection.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Security.Authentication.ExtendedProtection.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Security.Authentication.ExtendedProtection.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Security.Authentication.ExtendedProtection.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Security.Authentication.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Security.Authentication.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Security.Authentication.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Security.Authentication.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Security.Claims.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Security.Claims.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Security.Claims.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Security.Claims.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Security.Cryptography.Cose.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Security.Cryptography.Cose.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Security.Cryptography.Cose.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Security.Cryptography.Cose.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Security.Cryptography.Pkcs.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Security.Cryptography.Pkcs.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Security.Cryptography.Pkcs.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Security.Cryptography.Pkcs.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Security.Cryptography.X509Certificates.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Security.Cryptography.X509Certificates.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Security.Cryptography.X509Certificates.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Security.Cryptography.X509Certificates.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Security.Cryptography.Xml.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Security.Cryptography.Xml.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Security.Cryptography.Xml.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Security.Cryptography.Xml.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Security.Cryptography.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Security.Cryptography.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Security.Cryptography.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Security.Cryptography.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Security.Permissions.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Security.Permissions.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Security.Permissions.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Security.Permissions.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Security.Policy.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Security.Policy.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Security.Policy.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Security.Policy.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Security.Principal.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Security.Principal.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Security.Principal.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Security.Principal.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Security.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Security.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Security.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Security.model.yml diff --git a/csharp/ql/lib/ext/generated/System.ServiceModel.Syndication.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.ServiceModel.Syndication.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.ServiceModel.Syndication.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.ServiceModel.Syndication.model.yml diff --git a/csharp/ql/lib/ext/generated/System.ServiceProcess.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.ServiceProcess.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.ServiceProcess.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.ServiceProcess.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Speech.AudioFormat.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Speech.AudioFormat.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Speech.AudioFormat.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Speech.AudioFormat.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Speech.Recognition.SrgsGrammar.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Speech.Recognition.SrgsGrammar.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Speech.Recognition.SrgsGrammar.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Speech.Recognition.SrgsGrammar.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Speech.Recognition.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Speech.Recognition.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Speech.Recognition.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Speech.Recognition.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Speech.Synthesis.TtsEngine.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Speech.Synthesis.TtsEngine.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Speech.Synthesis.TtsEngine.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Speech.Synthesis.TtsEngine.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Speech.Synthesis.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Speech.Synthesis.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Speech.Synthesis.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Speech.Synthesis.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Text.Encodings.Web.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Text.Encodings.Web.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Text.Encodings.Web.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Text.Encodings.Web.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Text.Json.Nodes.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Text.Json.Nodes.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Text.Json.Nodes.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Text.Json.Nodes.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Text.Json.Schema.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Text.Json.Schema.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Text.Json.Schema.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Text.Json.Schema.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Text.Json.Serialization.Metadata.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Text.Json.Serialization.Metadata.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Text.Json.Serialization.Metadata.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Text.Json.Serialization.Metadata.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Text.Json.Serialization.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Text.Json.Serialization.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Text.Json.Serialization.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Text.Json.Serialization.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Text.Json.SourceGeneration.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Text.Json.SourceGeneration.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Text.Json.SourceGeneration.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Text.Json.SourceGeneration.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Text.Json.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Text.Json.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Text.Json.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Text.Json.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Text.RegularExpressions.Generator.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Text.RegularExpressions.Generator.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Text.RegularExpressions.Generator.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Text.RegularExpressions.Generator.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Text.RegularExpressions.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Text.RegularExpressions.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Text.RegularExpressions.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Text.RegularExpressions.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Text.Unicode.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Text.Unicode.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Text.Unicode.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Text.Unicode.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Text.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Text.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Text.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Text.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Threading.Channels.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Threading.Channels.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Threading.Channels.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Threading.Channels.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Threading.RateLimiting.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Threading.RateLimiting.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Threading.RateLimiting.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Threading.RateLimiting.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Threading.Tasks.Dataflow.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Threading.Tasks.Dataflow.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Threading.Tasks.Dataflow.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Threading.Tasks.Dataflow.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Threading.Tasks.Sources.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Threading.Tasks.Sources.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Threading.Tasks.Sources.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Threading.Tasks.Sources.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Threading.Tasks.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Threading.Tasks.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Threading.Tasks.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Threading.Tasks.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Threading.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Threading.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Threading.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Threading.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Timers.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Timers.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Timers.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Timers.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Transactions.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Transactions.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Transactions.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Transactions.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Web.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Web.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Web.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Web.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Windows.Input.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Windows.Input.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Windows.Input.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Windows.Input.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Windows.Markup.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Windows.Markup.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Windows.Markup.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Windows.Markup.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Xaml.Permissions.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Xaml.Permissions.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Xaml.Permissions.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Xaml.Permissions.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Xml.Linq.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Xml.Linq.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Xml.Linq.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Xml.Linq.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Xml.Resolvers.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Xml.Resolvers.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Xml.Resolvers.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Xml.Resolvers.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Xml.Schema.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Xml.Schema.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Xml.Schema.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Xml.Schema.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Xml.Serialization.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Xml.Serialization.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Xml.Serialization.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Xml.Serialization.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Xml.XPath.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Xml.XPath.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Xml.XPath.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Xml.XPath.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Xml.Xsl.Runtime.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Xml.Xsl.Runtime.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Xml.Xsl.Runtime.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Xml.Xsl.Runtime.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Xml.Xsl.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Xml.Xsl.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Xml.Xsl.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Xml.Xsl.model.yml diff --git a/csharp/ql/lib/ext/generated/System.Xml.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.Xml.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.Xml.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.Xml.model.yml diff --git a/csharp/ql/lib/ext/generated/System.model.yml b/csharp/ql/lib/ext/generated/modelgenerator/System.model.yml similarity index 100% rename from csharp/ql/lib/ext/generated/System.model.yml rename to csharp/ql/lib/ext/generated/modelgenerator/System.model.yml diff --git a/csharp/ql/lib/printCfg.ql b/csharp/ql/lib/printCfg.ql index aa92b1192042..c9910428bb09 100644 --- a/csharp/ql/lib/printCfg.ql +++ b/csharp/ql/lib/printCfg.ql @@ -7,7 +7,8 @@ * @tags ide-contextual-queries/print-cfg */ -private import semmle.code.csharp.controlflow.internal.ControlFlowGraphImpl +import csharp +import semmle.code.csharp.controlflow.internal.ControlFlowGraph external string selectedSourceFile(); @@ -21,7 +22,9 @@ external int selectedSourceColumn(); private predicate selectedSourceColumnAlias = selectedSourceColumn/0; -module ViewCfgQueryInput implements ViewCfgQueryInputSig { +module ViewCfgQueryInput implements ControlFlow::ViewCfgQueryInputSig { + private import semmle.code.csharp.controlflow.ControlFlowGraph + predicate selectedSourceFile = selectedSourceFileAlias/0; predicate selectedSourceLine = selectedSourceLineAlias/0; @@ -29,7 +32,7 @@ module ViewCfgQueryInput implements ViewCfgQueryInputSig { predicate selectedSourceColumn = selectedSourceColumnAlias/0; predicate cfgScopeSpan( - CfgScope scope, File file, int startLine, int startColumn, int endLine, int endColumn + Ast::Callable scope, File file, int startLine, int startColumn, int endLine, int endColumn ) { file = scope.getFile() and scope.getLocation().getStartLine() = startLine and @@ -40,11 +43,20 @@ module ViewCfgQueryInput implements ViewCfgQueryInputSig { | loc = scope.(Callable).getBody().getLocation() or - loc = scope.(Field).getInitializer().getLocation() + loc = any(AssignExpr init | scope.(ObjectInitMethod).initializes(init)).getLocation() or - loc = scope.(Property).getInitializer().getLocation() + exists(AssignableMember a, Constructor ctor | + scope = ctor and + ctor.isStatic() and + a.isStatic() and + a.getDeclaringType() = ctor.getDeclaringType() + | + loc = a.(Field).getInitializer().getLocation() + or + loc = a.(Property).getInitializer().getLocation() + ) ) } } -import ViewCfgQuery +import ControlFlow::ViewCfgQuery diff --git a/csharp/ql/lib/qlpack.yml b/csharp/ql/lib/qlpack.yml index 193da19b5530..278508f5f948 100644 --- a/csharp/ql/lib/qlpack.yml +++ b/csharp/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-all -version: 5.4.12 +version: 6.0.1 groups: csharp dbscheme: semmlecode.csharp.dbscheme extractor: csharp @@ -17,6 +17,6 @@ dependencies: codeql/xml: ${workspace} dataExtensions: - ext/*.model.yml - - ext/generated/*.model.yml + - ext/generated/**/*.model.yml warnOnImplicitThis: true compileForOverlayEval: true diff --git a/csharp/ql/lib/semmle/code/csharp/Assignable.qll b/csharp/ql/lib/semmle/code/csharp/Assignable.qll index a0e575218adc..7bd432d48ce4 100644 --- a/csharp/ql/lib/semmle/code/csharp/Assignable.qll +++ b/csharp/ql/lib/semmle/code/csharp/Assignable.qll @@ -85,8 +85,8 @@ class AssignableRead extends AssignableAccess { } pragma[noinline] - private ControlFlow::Node getAnAdjacentReadSameVar() { - SsaImpl::adjacentReadPairSameVar(_, this.getAControlFlowNode(), result) + private ControlFlowNode getAnAdjacentReadSameVar() { + SsaImpl::adjacentReadPairSameVar(_, this.getControlFlowNode(), result) } /** @@ -114,11 +114,7 @@ class AssignableRead extends AssignableAccess { * - The read of `this.Field` on line 11 is next to the read on line 10. */ pragma[nomagic] - AssignableRead getANextRead() { - forex(ControlFlow::Node cfn | cfn = result.getAControlFlowNode() | - cfn = this.getAnAdjacentReadSameVar() - ) - } + AssignableRead getANextRead() { result.getControlFlowNode() = this.getAnAdjacentReadSameVar() } } /** @@ -235,7 +231,7 @@ private class RefArg extends AssignableAccess { module AssignableInternal { private predicate tupleAssignmentDefinition(AssignExpr ae, Expr leaf) { exists(TupleExpr te | - ae.getLValue() = te and + ae.getLeftOperand() = te and te.getAnArgument+() = leaf and // `leaf` is either an assignable access or a local variable declaration not leaf instanceof TupleExpr @@ -249,8 +245,8 @@ module AssignableInternal { */ private predicate tupleAssignmentPair(AssignExpr ae, Expr left, Expr right) { tupleAssignmentDefinition(ae, _) and - left = ae.getLValue() and - right = ae.getRValue() + left = ae.getLeftOperand() and + right = ae.getRightOperand() or exists(TupleExpr l, TupleExpr r, int i | tupleAssignmentPair(ae, l, r) | left = l.getArgument(i) and @@ -275,6 +271,8 @@ module AssignableInternal { def = TPatternDefinition(result) or def = TAssignOperationDefinition(result) + or + def = TParameterDefaultDefinition(_, result) } /** A local variable declaration at the top-level of a pattern. */ @@ -291,7 +289,7 @@ module AssignableInternal { cached newtype TAssignableDefinition = TAssignmentDefinition(Assignment a) { - not a.getLValue() instanceof TupleExpr and + not a.getLeftOperand() instanceof TupleExpr and not a instanceof AssignCallOperation and not a instanceof AssignCoalesceExpr } or @@ -312,14 +310,22 @@ module AssignableInternal { exists(Callable c | p = c.getAParameter() | c.hasBody() or - // Same as `c.(Constructor).hasInitializer()`, but avoids negative recursion warning - c.getAChildExpr() instanceof @constructor_init_expr + c.(Constructor).hasInitializer() ) } or + TParameterDefaultDefinition(Parameter p, Expr default) { + exists(Callable c | p = c.getAParameter() | + c.hasBody() + or + c.(Constructor).hasInitializer() + ) and + default = p.getDefaultValue() + } or TAddressOfDefinition(AddressOfExpr aoe) or TPatternDefinition(TopLevelPatternDecl tlpd) or TAssignOperationDefinition(AssignOperation ao) { - ao instanceof AssignCallOperation or + ao instanceof AssignCallOperation and not ao instanceof CompoundAssignmentOperatorCall + or ao instanceof AssignCoalesceExpr } @@ -353,12 +359,14 @@ module AssignableInternal { any(AssignableDefinitions::PatternDefinition pd | result = pd.getDeclaration().getVariable()) or def = any(AssignableDefinitions::InitializerDefinition init | result = init.getAssignable()) + or + def = TParameterDefaultDefinition(result, _) } // Not defined by dispatch in order to avoid too conservative negative recursion error cached AssignableAccess getTargetAccess(AssignableDefinition def) { - def = TAssignmentDefinition(any(Assignment a | a.getLValue() = result)) + def = TAssignmentDefinition(any(Assignment a | a.getLeftOperand() = result)) or def = TTupleAssignmentDefinition(_, result) or @@ -381,8 +389,8 @@ module AssignableInternal { tupleAssignmentPair(ae, ac, result) ) or - exists(Assignment ass | ac = ass.getLValue() | - result = ass.getRValue() and + exists(Assignment ass | ac = ass.getLeftOperand() | + result = ass.getRightOperand() and not ass instanceof AssignOperation ) or @@ -410,7 +418,7 @@ private import AssignableInternal */ class AssignableDefinition extends TAssignableDefinition { /** - * DEPRECATED: Use `this.getExpr().getAControlFlowNode()` instead. + * DEPRECATED: Use `this.getExpr().getControlFlowNode()` instead. * * Gets a control flow node that updates the targeted assignable when * reached. @@ -419,9 +427,7 @@ class AssignableDefinition extends TAssignableDefinition { * the definitions of `x` and `y` in `M(out x, out y)` and `(x, y) = (0, 1)` * relate to the same call to `M` and assignment node, respectively. */ - deprecated ControlFlow::Node getAControlFlowNode() { - result = this.getExpr().getAControlFlowNode() - } + deprecated ControlFlowNode getAControlFlowNode() { result = this.getExpr().getControlFlowNode() } /** * Gets the underlying expression that updates the targeted assignable when @@ -494,16 +500,7 @@ class AssignableDefinition extends TAssignableDefinition { */ pragma[nomagic] AssignableRead getAFirstRead() { - forex(ControlFlow::Node cfn | cfn = result.getAControlFlowNode() | - exists(Ssa::ExplicitDefinition def | result = def.getAFirstReadAtNode(cfn) | - this = def.getADefinition() - ) - or - exists(Ssa::ImplicitParameterDefinition def | result = def.getAFirstReadAtNode(cfn) | - this.(AssignableDefinitions::ImplicitParameterDefinition).getParameter() = - def.getParameter() - ) - ) + exists(SsaExplicitWrite def | result = Ssa::ssaGetAFirstUse(def) | this = def.getDefinition()) } /** Gets a textual representation of this assignable definition. */ @@ -527,7 +524,7 @@ module AssignableDefinitions { Assignment getAssignment() { result = a } override Expr getSource() { - result = a.getRValue() and + result = a.getRightOperand() and not a instanceof AddOrRemoveEventExpr } @@ -572,11 +569,9 @@ module AssignableDefinitions { } /** Holds if a node in basic block `bb` assigns to `ref` parameter `p` via definition `def`. */ - private predicate basicBlockRefParamDef( - ControlFlow::BasicBlock bb, Parameter p, AssignableDefinition def - ) { + private predicate basicBlockRefParamDef(BasicBlock bb, Parameter p, AssignableDefinition def) { def = any(RefArg arg).getAnAnalyzableRefDef(p) and - bb.getANode() = def.getExpr().getAControlFlowNode() + bb.getANode() = def.getExpr().getControlFlowNode() } /** @@ -585,7 +580,7 @@ module AssignableDefinitions { * any assignments to `p`. */ pragma[nomagic] - private predicate parameterReachesWithoutDef(Parameter p, ControlFlow::BasicBlock bb) { + private predicate parameterReachesWithoutDef(Parameter p, BasicBlock bb) { forall(AssignableDefinition def | basicBlockRefParamDef(bb, p, def) | isUncertainRefCall(def.getTargetAccess()) ) and @@ -593,9 +588,7 @@ module AssignableDefinitions { any(RefArg arg).isAnalyzable(p) and p.getCallable().getEntryPoint() = bb.getFirstNode() or - exists(ControlFlow::BasicBlock mid | parameterReachesWithoutDef(p, mid) | - bb = mid.getASuccessor() - ) + exists(BasicBlock mid | parameterReachesWithoutDef(p, mid) | bb = mid.getASuccessor()) ) } @@ -607,7 +600,7 @@ module AssignableDefinitions { cached predicate isUncertainRefCall(RefArg arg) { arg.isPotentialAssignment() and - exists(ControlFlow::BasicBlock bb, Parameter p | arg.isAnalyzable(p) | + exists(BasicBlock bb, Parameter p | arg.isAnalyzable(p) | parameterReachesWithoutDef(p, bb) and bb.getLastNode() = p.getCallable().getExitPoint() ) @@ -688,7 +681,7 @@ module AssignableDefinitions { /** Gets the underlying parameter. */ Parameter getParameter() { result = p } - deprecated override ControlFlow::Node getAControlFlowNode() { + deprecated override ControlFlowNode getAControlFlowNode() { result = p.getCallable().getEntryPoint() } @@ -698,7 +691,33 @@ module AssignableDefinitions { override string toString() { result = p.toString() } - override Location getLocation() { result = this.getTarget().getLocation() } + override Location getLocation() { result = p.getLocation() } + } + + /** + * A default value assigned to a parameter. + */ + class ParameterDefaultDefinition extends AssignableDefinition, TParameterDefaultDefinition { + Parameter p; + Expr default; + + ParameterDefaultDefinition() { this = TParameterDefaultDefinition(p, default) } + + /** Gets the underlying parameter. */ + Parameter getParameter() { result = p } + + /** Gets the default value expression for the parameter. */ + Expr getDefaultValue() { result = default } + + override Expr getSource() { result = default } + + override Expr getElement() { result = default } + + override Callable getEnclosingCallable() { result = p.getCallable() } + + override string toString() { result = p.toString() + " = ..." } + + override Location getLocation() { result = default.getLocation() } } /** diff --git a/csharp/ql/lib/semmle/code/csharp/Caching.qll b/csharp/ql/lib/semmle/code/csharp/Caching.qll index bbe310fe69e5..134332ee75de 100644 --- a/csharp/ql/lib/semmle/code/csharp/Caching.qll +++ b/csharp/ql/lib/semmle/code/csharp/Caching.qll @@ -7,23 +7,6 @@ private import csharp * in the same stage across different files. */ module Stages { - cached - module ControlFlowStage { - private import semmle.code.csharp.controlflow.internal.Splitting - - cached - predicate forceCachingInSameStage() { any() } - - cached - private predicate forceCachingInSameStageRev() { - exists(Split s) - or - exists(ControlFlow::Node n) - or - forceCachingInSameStageRev() - } - } - cached module GuardsStage { private import semmle.code.csharp.controlflow.Guards diff --git a/csharp/ql/lib/semmle/code/csharp/Callable.qll b/csharp/ql/lib/semmle/code/csharp/Callable.qll index 611b578b859a..9416a7d4d9c7 100644 --- a/csharp/ql/lib/semmle/code/csharp/Callable.qll +++ b/csharp/ql/lib/semmle/code/csharp/Callable.qll @@ -22,7 +22,7 @@ private import TypeRef * an anonymous function (`AnonymousFunctionExpr`), or a local function * (`LocalFunction`). */ -class Callable extends Parameterizable, ExprOrStmtParent, @callable { +class Callable extends Parameterizable, ControlFlowElementOrCallable, @callable { /** Gets the return type of this callable. */ Type getReturnType() { none() } @@ -157,10 +157,10 @@ class Callable extends Parameterizable, ExprOrStmtParent, @callable { final predicate hasExpressionBody() { exists(this.getExpressionBody()) } /** Gets the entry point in the control graph for this callable. */ - ControlFlow::Nodes::EntryNode getEntryPoint() { result.getCallable() = this } + ControlFlow::EntryNode getEntryPoint() { result.getEnclosingCallable() = this } /** Gets the exit point in the control graph for this callable. */ - ControlFlow::Nodes::ExitNode getExitPoint() { result.getCallable() = this } + ControlFlow::ExitNode getExitPoint() { result.getEnclosingCallable() = this } /** * Gets the enclosing callable of this callable, if any. @@ -611,7 +611,8 @@ class ExtensionOperator extends ExtensionCallableImpl, Operator { class UnaryOperator extends Operator { UnaryOperator() { this.getNumberOfParameters() = 1 and - not this instanceof ConversionOperator + not this instanceof ConversionOperator and + not this instanceof CompoundAssignmentOperator } } @@ -784,7 +785,7 @@ class TrueOperator extends UnaryOperator { * A user-defined binary operator. * * Either an addition operator (`AddOperator`), a checked addition operator - * (`CheckedAddOperator`) a subtraction operator (`SubOperator`), a checked + * (`CheckedAddOperator`), a subtraction operator (`SubOperator`), a checked * subtraction operator (`CheckedSubOperator`), a multiplication operator * (`MulOperator`), a checked multiplication operator (`CheckedMulOperator`), * a division operator (`DivOperator`), a checked division operator @@ -795,10 +796,16 @@ class TrueOperator extends UnaryOperator { * operator(`UnsignedRightShiftOperator`), an equals operator (`EQOperator`), * a not equals operator (`NEOperator`), a lesser than operator (`LTOperator`), * a greater than operator (`GTOperator`), a less than or equals operator - * (`LEOperator`), or a greater than or equals operator (`GEOperator`). + * (`LEOperator`), a greater than or equals operator (`GEOperator`), or + * a compound assignment operator (`CompoundAssignmentOperator`). */ class BinaryOperator extends Operator { - BinaryOperator() { this.getNumberOfParameters() = 2 } + BinaryOperator() { + this.getNumberOfParameters() = 2 + or + // Instance compound assignment operators only have one parameter. + this.getNumberOfParameters() = 1 and not this.isStatic() + } } /** @@ -1184,6 +1191,249 @@ class CheckedExplicitConversionOperator extends ConversionOperator { override string getAPrimaryQlClass() { result = "CheckedExplicitConversionOperator" } } +abstract private class CompoundAssignmentOperatorImpl extends BinaryOperator { } + +/** + * A user-defined compound assignment operator. + * + * Either an addition operator (`AddCompoundAssignmentOperator`), a checked addition operator + * (`CheckedAddCompoundAssignmentOperator`), a subtraction operator (`SubCompoundAssignmentOperator`), a checked + * subtraction operator (`CheckedSubCompoundAssignmentOperator`), a multiplication operator + * (`MulCompoundAssignmentOperator`), a checked multiplication operator (`CheckedMulCompoundAssignmentOperator`), + * a division operator (`DivCompoundAssignmentOperator`), a checked division operator + * (`CheckedDivCompoundAssignmentOperator`), a remainder operator (`RemCompoundAssignmentOperator`), an and + * operator (`AndCompoundAssignmentOperator`), an or operator (`OrCompoundAssignmentOperator`), an xor + * operator (`XorCompoundAssignmentOperator`), a left shift operator (`LeftShiftCompoundAssignmentOperator`), + * a right shift operator (`RightShiftCompoundAssignmentOperator`), or an unsigned right shift + * operator(`UnsignedRightShiftCompoundAssignmentOperator`). + */ +final class CompoundAssignmentOperator = CompoundAssignmentOperatorImpl; + +/** + * A user-defined compound assignment addition operator (`+=`), for example + * + * ```csharp + * public void operator checked +=(Widget w) { + * ... + * } + * ``` + */ +class AddCompoundAssignmentOperator extends CompoundAssignmentOperatorImpl { + AddCompoundAssignmentOperator() { this.getName() = "+=" } + + override string getAPrimaryQlClass() { result = "AddCompoundAssignmentOperator" } +} + +/** + * A user-defined checked compound assignment addition operator (`checked +=`), for example + * + * ```csharp + * public void operator checked +=(Widget w) { + * ... + * } + * ``` + */ +class CheckedAddCompoundAssignmentOperator extends CompoundAssignmentOperatorImpl { + CheckedAddCompoundAssignmentOperator() { this.getName() = "checked +=" } + + override string getAPrimaryQlClass() { result = "CheckedAddCompoundAssignmentOperator" } +} + +/** + * A user-defined compound assignment subtraction operator (`-=`), for example + * + * ```csharp + * public void operator -=(Widget w) { + * ... + * } + * ``` + */ +class SubCompoundAssignmentOperator extends CompoundAssignmentOperatorImpl { + SubCompoundAssignmentOperator() { this.getName() = "-=" } + + override string getAPrimaryQlClass() { result = "SubCompoundAssignmentOperator" } +} + +/** + * A user-defined checked compound assignment subtraction operator (`checked -=`), for example + * + * ```csharp + * public void operator checked -=(Widget w) { + * ... + * } + * ``` + */ +class CheckedSubCompoundAssignmentOperator extends CompoundAssignmentOperatorImpl { + CheckedSubCompoundAssignmentOperator() { this.getName() = "checked -=" } + + override string getAPrimaryQlClass() { result = "CheckedSubCompoundAssignmentOperator" } +} + +/** + * A user-defined compound assignment multiplication operator (`*=`), for example + * + * ```csharp + * public void operator *=(Widget w) { + * ... + * } + * ``` + */ +class MulCompoundAssignmentOperator extends CompoundAssignmentOperatorImpl { + MulCompoundAssignmentOperator() { this.getName() = "*=" } + + override string getAPrimaryQlClass() { result = "MulCompoundAssignmentOperator" } +} + +/** + * A user-defined checked compound assignment multiplication operator (`checked *=`), for example + * + * ```csharp + * public void operator checked *=(Widget w) { + * ... + * } + * ``` + */ +class CheckedMulCompoundAssignmentOperator extends CompoundAssignmentOperatorImpl { + CheckedMulCompoundAssignmentOperator() { this.getName() = "checked *=" } + + override string getAPrimaryQlClass() { result = "CheckedMulCompoundAssignmentOperator" } +} + +/** + * A user-defined compound assignment division operator (`/=`), for example + * + * ```csharp + * public void operator /=(Widget w) { + * ... + * } + * ``` + */ +class DivCompoundAssignmentOperator extends CompoundAssignmentOperatorImpl { + DivCompoundAssignmentOperator() { this.getName() = "/=" } + + override string getAPrimaryQlClass() { result = "DivCompoundAssignmentOperator" } +} + +/** + * A user-defined checked compound assignment division operator (`checked /=`), for example + * + * ```csharp + * public void operator checked /=(Widget w) { + * ... + * } + * ``` + */ +class CheckedDivCompoundAssignmentOperator extends CompoundAssignmentOperatorImpl { + CheckedDivCompoundAssignmentOperator() { this.getName() = "checked /=" } + + override string getAPrimaryQlClass() { result = "CheckedDivCompoundAssignmentOperator" } +} + +/** + * A user-defined compound assignment remainder operator (`%=`), for example + * + * ```csharp + * public void operator %=(Widget w) { + * ... + * } + * ``` + */ +class RemCompoundAssignmentOperator extends CompoundAssignmentOperatorImpl { + RemCompoundAssignmentOperator() { this.getName() = "%=" } + + override string getAPrimaryQlClass() { result = "RemCompoundAssignmentOperator" } +} + +/** + * A user-defined compound assignment and operator (`&=`), for example + * + * ```csharp + * public void operator &=(Widget w) { + * ... + * } + * ``` + */ +class AndCompoundAssignmentOperator extends CompoundAssignmentOperatorImpl { + AndCompoundAssignmentOperator() { this.getName() = "&=" } + + override string getAPrimaryQlClass() { result = "AndCompoundAssignmentOperator" } +} + +/** + * A user-defined compound assignment or operator (`|=`), for example + * + * ```csharp + * public void operator |=(Widget w) { + * ... + * } + * ``` + */ +class OrCompoundAssignmentOperator extends CompoundAssignmentOperatorImpl { + OrCompoundAssignmentOperator() { this.getName() = "|=" } + + override string getAPrimaryQlClass() { result = "OrCompoundAssignmentOperator" } +} + +/** + * A user-defined compound assignment xor operator (`^=`), for example + * + * ```csharp + * public void operator ^=(Widget w) { + * ... + * } + * ``` + */ +class XorCompoundAssignmentOperator extends CompoundAssignmentOperatorImpl { + XorCompoundAssignmentOperator() { this.getName() = "^=" } + + override string getAPrimaryQlClass() { result = "XorCompoundAssignmentOperator" } +} + +/** + * A user-defined compound assignment left shift operator (`<<=`), for example + * + * ```csharp + * public void operator <<=(Widget w) { + * ... + * } + * ``` + */ +class LeftShiftCompoundAssignmentOperator extends CompoundAssignmentOperatorImpl { + LeftShiftCompoundAssignmentOperator() { this.getName() = "<<=" } + + override string getAPrimaryQlClass() { result = "LeftShiftCompoundAssignmentOperator" } +} + +/** + * A user-defined compound assignment right shift operator (`>>=`), for example + * + * ```csharp + * public void operator >>=(Widget w) { + * ... + * } + * ``` + */ +class RightShiftCompoundAssignmentOperator extends CompoundAssignmentOperatorImpl { + RightShiftCompoundAssignmentOperator() { this.getName() = ">>=" } + + override string getAPrimaryQlClass() { result = "RightShiftCompoundAssignmentOperator" } +} + +/** + * A user-defined compound assignment unsigned right shift operator (`>>>=`), for example + * + * ```csharp + * public void operator >>>=(Widget w) { + * ... + * } + * ``` + */ +class UnsignedRightShiftCompoundAssignmentOperator extends CompoundAssignmentOperatorImpl { + UnsignedRightShiftCompoundAssignmentOperator() { this.getName() = ">>>=" } + + override string getAPrimaryQlClass() { result = "UnsignedRightShiftCompoundAssignmentOperator" } +} + /** * A local function, defined within the scope of another callable. * For example, `Fac` on lines 2--4 in diff --git a/csharp/ql/lib/semmle/code/csharp/Conversion.qll b/csharp/ql/lib/semmle/code/csharp/Conversion.qll index ec7ef9cac952..e151944dc381 100644 --- a/csharp/ql/lib/semmle/code/csharp/Conversion.qll +++ b/csharp/ql/lib/semmle/code/csharp/Conversion.qll @@ -232,14 +232,9 @@ private module Identity { */ pragma[nomagic] private predicate convTypeArguments(Type fromTypeArgument, Type toTypeArgument, int i) { - exists(int j | - fromTypeArgument = getTypeArgumentRanked(_, _, i) and - toTypeArgument = getTypeArgumentRanked(_, _, j) and - i <= j and - j <= i - | - convIdentity(fromTypeArgument, toTypeArgument) - ) + fromTypeArgument = getTypeArgumentRanked(_, _, pragma[only_bind_into](i)) and + toTypeArgument = getTypeArgumentRanked(_, _, pragma[only_bind_into](i)) and + convIdentity(fromTypeArgument, toTypeArgument) } pragma[nomagic] @@ -718,7 +713,7 @@ private class SignedIntegralConstantExpr extends Expr { } private predicate convConstantIntExpr(SignedIntegralConstantExpr e, SimpleType toType) { - exists(int n | n = e.getValue().toInt() | + exists(int n | n = e.getIntValue() | toType = any(SByteType t | n in [t.minValue() .. t.maxValue()]) or toType = any(ByteType t | n in [t.minValue() .. t.maxValue()]) @@ -735,7 +730,7 @@ private predicate convConstantIntExpr(SignedIntegralConstantExpr e, SimpleType t private predicate convConstantLongExpr(SignedIntegralConstantExpr e) { e.getType() instanceof LongType and - e.getValue().toInt() >= 0 + e.getIntValue() >= 0 } /** 6.1.10: Implicit reference conversions involving type parameters. */ @@ -929,19 +924,16 @@ private module Variance { private predicate convTypeArguments( TypeArgument fromTypeArgument, TypeArgument toTypeArgument, int i, TVariance v ) { - exists(int j | - fromTypeArgument = getTypeArgumentRanked(_, _, i, _) and - toTypeArgument = getTypeArgumentRanked(_, _, j, _) and - i <= j and - j <= i - | + fromTypeArgument = getTypeArgumentRanked(_, _, pragma[only_bind_into](i), _) and + toTypeArgument = getTypeArgumentRanked(_, _, pragma[only_bind_into](i), _) and + ( convIdentity(fromTypeArgument, toTypeArgument) and v = TNone() or - convRefTypeTypeArgumentOut(fromTypeArgument, toTypeArgument, j) and + convRefTypeTypeArgumentOut(fromTypeArgument, toTypeArgument, i) and v = TOut() or - convRefTypeTypeArgumentIn(toTypeArgument, fromTypeArgument, j) and + convRefTypeTypeArgumentIn(toTypeArgument, fromTypeArgument, i) and v = TIn() ) } diff --git a/csharp/ql/lib/semmle/code/csharp/ExprOrStmtParent.qll b/csharp/ql/lib/semmle/code/csharp/ExprOrStmtParent.qll index 8102b4a02880..2cf09707459d 100644 --- a/csharp/ql/lib/semmle/code/csharp/ExprOrStmtParent.qll +++ b/csharp/ql/lib/semmle/code/csharp/ExprOrStmtParent.qll @@ -13,7 +13,7 @@ private import internal.Location * An element that can have a child statement or expression. */ class ExprOrStmtParent extends Element, @exprorstmt_parent { - final override ControlFlowElement getChild(int i) { + override ControlFlowElement getChild(int i) { result = this.getChildExpr(i) or result = this.getChildStmt(i) } @@ -42,14 +42,8 @@ class ExprOrStmtParent extends Element, @exprorstmt_parent { * * An element that can have a child top-level expression. */ -class TopLevelExprParent extends Element, @top_level_expr_parent { +class TopLevelExprParent extends ExprOrStmtParent, @top_level_expr_parent { final override Expr getChild(int i) { result = this.getChildExpr(i) } - - /** Gets the `i`th child expression of this element (zero-based). */ - final Expr getChildExpr(int i) { expr_parent_top_level_adjusted(result, i, this) } - - /** Gets a child expression of this element, if any. */ - final Expr getAChildExpr() { result = this.getChildExpr(_) } } /** INTERNAL: Do not use. */ @@ -129,13 +123,6 @@ private module Cached { result = parent.getAChildStmt() } - pragma[inline] - private ControlFlowElement enclosingStart(ControlFlowElement cfe) { - result = cfe - or - getAChild(result).(AnonymousFunctionExpr) = cfe - } - private predicate parent(ControlFlowElement child, ExprOrStmtParent parent) { child = getAChild(parent) and not child = getBody(_) @@ -145,7 +132,7 @@ private module Cached { cached predicate enclosingBody(ControlFlowElement cfe, ControlFlowElement body) { body = getBody(_) and - parent*(enclosingStart(cfe), body) + parent*(cfe, body) } /** Holds if the enclosing callable of `cfe` is `c`. */ @@ -153,7 +140,7 @@ private module Cached { predicate enclosingCallable(ControlFlowElement cfe, Callable c) { enclosingBody(cfe, getBody(c)) or - parent*(enclosingStart(cfe), c.(Constructor).getInitializer()) + parent*(cfe, c.(Constructor).getInitializer()) or parent*(cfe, c.(Constructor).getObjectInitializerCall()) or diff --git a/csharp/ql/lib/semmle/code/csharp/PrintAst.qll b/csharp/ql/lib/semmle/code/csharp/PrintAst.qll index 1ac96c85e788..3b328c8393e6 100644 --- a/csharp/ql/lib/semmle/code/csharp/PrintAst.qll +++ b/csharp/ql/lib/semmle/code/csharp/PrintAst.qll @@ -299,7 +299,9 @@ class ControlFlowElementNode extends ElementNode { not isNotNeeded(element.getParent+()) and // LambdaExpr is both a Callable and a ControlFlowElement, // print it with the more specific CallableNode - not element instanceof Callable + not element instanceof Callable and + // Handled in `ParameterNode` + not element instanceof Parameter } override PrintAstNode getChild(int childIndex) { @@ -343,10 +345,10 @@ final class AssignmentNode extends ControlFlowElementNode { result.(TypeMentionNode).getTarget() = controlFlowElement or childIndex = 0 and - result.(ElementNode).getElement() = assignment.getLValue() + result.(ElementNode).getElement() = assignment.getLeftOperand() or childIndex = 1 and - result.(ElementNode).getElement() = assignment.getRValue() + result.(ElementNode).getElement() = assignment.getRightOperand() } } diff --git a/csharp/ql/lib/semmle/code/csharp/Property.qll b/csharp/ql/lib/semmle/code/csharp/Property.qll index bbd4fdd9d8ec..c9a338d0359f 100644 --- a/csharp/ql/lib/semmle/code/csharp/Property.qll +++ b/csharp/ql/lib/semmle/code/csharp/Property.qll @@ -535,8 +535,8 @@ class Setter extends Accessor, @setter { exists(AssignExpr assign | this.getStatementBody().getNumberOfStmts() = 1 and assign.getParent() = this.getStatementBody().getAChild() and - assign.getLValue() = result.getAnAccess() and - assign.getRValue() = accessToValue() + assign.getLeftOperand() = result.getAnAccess() and + assign.getRightOperand() = accessToValue() ) } diff --git a/csharp/ql/lib/semmle/code/csharp/Type.qll b/csharp/ql/lib/semmle/code/csharp/Type.qll index 54bbe9a6219f..7af167cd9bcb 100644 --- a/csharp/ql/lib/semmle/code/csharp/Type.qll +++ b/csharp/ql/lib/semmle/code/csharp/Type.qll @@ -1334,6 +1334,7 @@ class TypeMention extends @type_mention { * ```csharp * static class MyExtensions { * extension(string s) { ... } + * } * ``` */ class ExtensionType extends Parameterizable, @extension_type { diff --git a/csharp/ql/lib/semmle/code/csharp/Variable.qll b/csharp/ql/lib/semmle/code/csharp/Variable.qll index 6d59816373d2..2d4cf578436d 100644 --- a/csharp/ql/lib/semmle/code/csharp/Variable.qll +++ b/csharp/ql/lib/semmle/code/csharp/Variable.qll @@ -87,7 +87,9 @@ class LocalScopeVariable extends Variable, @local_scope_variable { * } * ``` */ -class Parameter extends LocalScopeVariable, Attributable, TopLevelExprParent, @parameter { +class Parameter extends LocalScopeVariable, Attributable, TopLevelExprParent, ControlFlowElement, + @parameter +{ /** Gets the raw position of this parameter, including the `this` parameter at index 0. */ final int getRawPosition() { this = this.getDeclaringElement().getRawParameter(result) } diff --git a/csharp/ql/lib/semmle/code/csharp/commons/Collections.qll b/csharp/ql/lib/semmle/code/csharp/commons/Collections.qll index b33c0f73d60d..c0752a720b26 100644 --- a/csharp/ql/lib/semmle/code/csharp/commons/Collections.qll +++ b/csharp/ql/lib/semmle/code/csharp/commons/Collections.qll @@ -54,21 +54,44 @@ private string genericCollectionTypeName() { ] } -/** A collection type. */ -class CollectionType extends RefType { - CollectionType() { +/** A collection type */ +abstract private class CollectionTypeImpl extends RefType { + /** + * Gets the element type of this collection, for example `int` in `List`. + */ + abstract Type getElementType(); +} + +private class GenericCollectionType extends CollectionTypeImpl { + private ConstructedType base; + + GenericCollectionType() { + base = this.getABaseType*() and + base.getUnboundGeneric() + .hasFullyQualifiedName(genericCollectionNamespaceName(), genericCollectionTypeName()) + } + + override Type getElementType() { + result = base.getTypeArgument(0) and base.getNumberOfTypeArguments() = 1 + } +} + +private class NonGenericCollectionType extends CollectionTypeImpl { + NonGenericCollectionType() { exists(RefType base | base = this.getABaseType*() | base.hasFullyQualifiedName(collectionNamespaceName(), collectionTypeName()) - or - base.(ConstructedType) - .getUnboundGeneric() - .hasFullyQualifiedName(genericCollectionNamespaceName(), genericCollectionTypeName()) ) - or - this instanceof ArrayType } + + override Type getElementType() { none() } } +private class ArrayCollectionType extends CollectionTypeImpl instanceof ArrayType { + override Type getElementType() { result = ArrayType.super.getElementType() } +} + +final class CollectionType = CollectionTypeImpl; + /** * A collection type that can be used as a `params` parameter type. */ diff --git a/csharp/ql/lib/semmle/code/csharp/commons/ComparisonTest.qll b/csharp/ql/lib/semmle/code/csharp/commons/ComparisonTest.qll index 6a804f54490c..84bdda37fc9f 100644 --- a/csharp/ql/lib/semmle/code/csharp/commons/ComparisonTest.qll +++ b/csharp/ql/lib/semmle/code/csharp/commons/ComparisonTest.qll @@ -161,7 +161,7 @@ private newtype TComparisonTest = compare.getComparisonKind().isCompare() and outerKind = outer.getComparisonKind() and outer.getAnArgument() = compare.getExpr() and - i = outer.getAnArgument().getValue().toInt() + i = outer.getAnArgument().getIntValue() | outerKind.isEquality() and ( diff --git a/csharp/ql/lib/semmle/code/csharp/commons/Constants.qll b/csharp/ql/lib/semmle/code/csharp/commons/Constants.qll index 5025202eb217..a5f1bc43abee 100644 --- a/csharp/ql/lib/semmle/code/csharp/commons/Constants.qll +++ b/csharp/ql/lib/semmle/code/csharp/commons/Constants.qll @@ -32,13 +32,13 @@ private module ConstantComparisonOperation { private int maxValue(Expr expr) { if convertedType(expr) instanceof IntegralType and exists(expr.getValue()) - then result = expr.getValue().toInt() + then result = expr.getIntValue() else result = convertedType(expr).maxValue() } private int minValue(Expr expr) { if convertedType(expr) instanceof IntegralType and exists(expr.getValue()) - then result = expr.getValue().toInt() + then result = expr.getIntValue() else result = convertedType(expr).minValue() } diff --git a/csharp/ql/lib/semmle/code/csharp/commons/Strings.qll b/csharp/ql/lib/semmle/code/csharp/commons/Strings.qll index 678a1f928163..3fde913358b3 100644 --- a/csharp/ql/lib/semmle/code/csharp/commons/Strings.qll +++ b/csharp/ql/lib/semmle/code/csharp/commons/Strings.qll @@ -29,7 +29,7 @@ class ImplicitToStringExpr extends Expr { m = p.getCallable() | m = any(SystemTextStringBuilderClass c).getAMethod() and - m.getName().regexpMatch("Append(Line)?") and + m.getName() = "Append" and not p.getType() instanceof ArrayType or p instanceof StringFormatItemParameter and diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/BasicBlocks.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/BasicBlocks.qll deleted file mode 100644 index bf6a97728574..000000000000 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/BasicBlocks.qll +++ /dev/null @@ -1,356 +0,0 @@ -/** - * Provides classes representing basic blocks. - */ - -import csharp -private import ControlFlow -private import semmle.code.csharp.controlflow.internal.ControlFlowGraphImpl as CfgImpl -private import CfgImpl::BasicBlocks as BasicBlocksImpl -private import codeql.controlflow.BasicBlock as BB - -/** - * A basic block, that is, a maximal straight-line sequence of control flow nodes - * without branches or joins. - */ -final class BasicBlock extends BasicBlocksImpl::BasicBlock { - /** Gets an immediate successor of this basic block of a given type, if any. */ - BasicBlock getASuccessor(ControlFlow::SuccessorType t) { result = super.getASuccessor(t) } - - /** DEPRECATED: Use `getASuccessor` instead. */ - deprecated BasicBlock getASuccessorByType(ControlFlow::SuccessorType t) { - result = this.getASuccessor(t) - } - - /** Gets an immediate predecessor of this basic block of a given type, if any. */ - BasicBlock getAPredecessorByType(ControlFlow::SuccessorType t) { - result = this.getAPredecessor(t) - } - - /** - * Gets an immediate `true` successor, if any. - * - * An immediate `true` successor is a successor that is reached when - * the condition that ends this basic block evaluates to `true`. - * - * Example: - * - * ```csharp - * if (x < 0) - * x = -x; - * ``` - * - * The basic block on line 2 is an immediate `true` successor of the - * basic block on line 1. - */ - BasicBlock getATrueSuccessor() { result.getFirstNode() = this.getLastNode().getATrueSuccessor() } - - /** - * Gets an immediate `false` successor, if any. - * - * An immediate `false` successor is a successor that is reached when - * the condition that ends this basic block evaluates to `false`. - * - * Example: - * - * ```csharp - * if (!(x >= 0)) - * x = -x; - * ``` - * - * The basic block on line 2 is an immediate `false` successor of the - * basic block on line 1. - */ - BasicBlock getAFalseSuccessor() { - result.getFirstNode() = this.getLastNode().getAFalseSuccessor() - } - - BasicBlock getASuccessor() { result = super.getASuccessor() } - - /** Gets the control flow node at a specific (zero-indexed) position in this basic block. */ - ControlFlow::Node getNode(int pos) { result = super.getNode(pos) } - - /** Gets a control flow node in this basic block. */ - ControlFlow::Node getANode() { result = super.getANode() } - - /** Gets the first control flow node in this basic block. */ - ControlFlow::Node getFirstNode() { result = super.getFirstNode() } - - /** Gets the last control flow node in this basic block. */ - ControlFlow::Node getLastNode() { result = super.getLastNode() } - - /** Gets the callable that this basic block belongs to. */ - final Callable getCallable() { result = this.getFirstNode().getEnclosingCallable() } - - /** - * Holds if this basic block immediately dominates basic block `bb`. - * - * That is, this basic block is the unique basic block satisfying: - * 1. This basic block strictly dominates `bb` - * 2. There exists no other basic block that is strictly dominated by this - * basic block and which strictly dominates `bb`. - * - * All basic blocks, except entry basic blocks, have a unique immediate - * dominator. - * - * Example: - * - * ```csharp - * int M(string s) { - * if (s == null) - * throw new ArgumentNullException(nameof(s)); - * return s.Length; - * } - * ``` - * - * The basic block starting on line 2 strictly dominates the - * basic block on line 4 (all paths from the entry point of `M` - * to `return s.Length;` must go through the null check). - */ - predicate immediatelyDominates(BasicBlock bb) { super.immediatelyDominates(bb) } - - /** - * Holds if this basic block strictly dominates basic block `bb`. - * - * That is, all paths reaching basic block `bb` from some entry point - * basic block must go through this basic block (which must be different - * from `bb`). - * - * Example: - * - * ```csharp - * int M(string s) { - * if (s == null) - * throw new ArgumentNullException(nameof(s)); - * return s.Length; - * } - * ``` - * - * The basic block starting on line 2 strictly dominates the - * basic block on line 4 (all paths from the entry point of `M` - * to `return s.Length;` must go through the null check). - */ - predicate strictlyDominates(BasicBlock bb) { super.strictlyDominates(bb) } - - /** - * Holds if this basic block dominates basic block `bb`. - * - * That is, all paths reaching basic block `bb` from some entry point - * basic block must go through this basic block. - * - * Example: - * - * ```csharp - * int M(string s) { - * if (s == null) - * throw new ArgumentNullException(nameof(s)); - * return s.Length; - * } - * ``` - * - * The basic block starting on line 2 dominates the basic - * block on line 4 (all paths from the entry point of `M` to - * `return s.Length;` must go through the null check). - * - * This predicate is *reflexive*, so for example `if (s == null)` dominates - * itself. - */ - predicate dominates(BasicBlock bb) { - bb = this or - this.strictlyDominates(bb) - } - - /** - * Holds if `df` is in the dominance frontier of this basic block. - * That is, this basic block dominates a predecessor of `df`, but - * does not dominate `df` itself. - * - * Example: - * - * ```csharp - * if (x < 0) { - * x = -x; - * if (x > 10) - * x--; - * } - * Console.Write(x); - * ``` - * - * The basic block on line 6 is in the dominance frontier - * of the basic block starting on line 2 because that block - * dominates the basic block on line 4, which is a predecessor of - * `Console.Write(x);`. Also, the basic block starting on line 2 - * does not dominate the basic block on line 6. - */ - predicate inDominanceFrontier(BasicBlock df) { super.inDominanceFrontier(df) } - - /** - * Gets the basic block that immediately dominates this basic block, if any. - * - * That is, the result is the unique basic block satisfying: - * 1. The result strictly dominates this basic block. - * 2. There exists no other basic block that is strictly dominated by the - * result and which strictly dominates this basic block. - * - * All basic blocks, except entry basic blocks, have a unique immediate - * dominator. - * - * Example: - * - * ```csharp - * int M(string s) { - * if (s == null) - * throw new ArgumentNullException(nameof(s)); - * return s.Length; - * } - * ``` - * - * The basic block starting on line 2 is an immediate dominator of - * the basic block online 4 (all paths from the entry point of `M` - * to `return s.Length;` must go through the null check. - */ - BasicBlock getImmediateDominator() { result = super.getImmediateDominator() } - - /** - * Holds if the edge with successor type `s` out of this basic block is a - * dominating edge for `dominated`. - * - * That is, all paths reaching `dominated` from the entry point basic - * block must go through the `s` edge out of this basic block. - * - * Edge dominance is similar to node dominance except it concerns edges - * instead of nodes: A basic block is dominated by a _basic block_ `bb` if it - * can only be reached through `bb` and dominated by an _edge_ `e` if it can - * only be reached through `e`. - * - * Note that where all basic blocks (except the entry basic block) are - * strictly dominated by at least one basic block, a basic block may not be - * dominated by any edge. If an edge dominates a basic block `bb`, then - * both endpoints of the edge dominates `bb`. The converse is not the case, - * as there may be multiple paths between the endpoints with none of them - * dominating. - */ - predicate edgeDominates(BasicBlock dominated, ControlFlow::SuccessorType s) { - super.edgeDominates(dominated, s) - } - - /** - * Holds if this basic block strictly post-dominates basic block `bb`. - * - * That is, all paths reaching a normal exit point basic block from basic - * block `bb` must go through this basic block (which must be different - * from `bb`). - * - * Example: - * - * ```csharp - * int M(string s) { - * try { - * return s.Length; - * } - * finally { - * Console.WriteLine("M"); - * } - * } - * ``` - * - * The basic block on line 6 strictly post-dominates the basic block on - * line 3 (all paths to the exit point of `M` from `return s.Length;` - * must go through the `WriteLine` call). - */ - predicate strictlyPostDominates(BasicBlock bb) { super.strictlyPostDominates(bb) } - - /** - * Holds if this basic block post-dominates basic block `bb`. - * - * That is, all paths reaching a normal exit point basic block from basic - * block `bb` must go through this basic block. - * - * Example: - * - * ```csharp - * int M(string s) { - * try { - * return s.Length; - * } - * finally { - * Console.WriteLine("M"); - * } - * } - * ``` - * - * The basic block on line 6 post-dominates the basic block on line 3 - * (all paths to the exit point of `M` from `return s.Length;` must go - * through the `WriteLine` call). - * - * This predicate is *reflexive*, so for example `Console.WriteLine("M");` - * post-dominates itself. - */ - predicate postDominates(BasicBlock bb) { super.postDominates(bb) } - - /** - * Holds if this basic block is in a loop in the control flow graph. This - * includes loops created by `goto` statements. This predicate may not hold - * even if this basic block is syntactically inside a `while` loop if the - * necessary back edges are unreachable. - */ - predicate inLoop() { this.getASuccessor+() = this } -} - -/** - * An entry basic block, that is, a basic block whose first node is - * an entry node. - */ -final class EntryBasicBlock extends BasicBlock, BasicBlocksImpl::EntryBasicBlock { } - -/** - * An annotated exit basic block, that is, a basic block that contains an - * annotated exit node. - */ -final class AnnotatedExitBasicBlock extends BasicBlock, BasicBlocksImpl::AnnotatedExitBasicBlock { } - -/** - * An exit basic block, that is, a basic block whose last node is - * an exit node. - */ -final class ExitBasicBlock extends BasicBlock, BasicBlocksImpl::ExitBasicBlock { } - -/** A basic block with more than one predecessor. */ -final class JoinBlock extends BasicBlock, BasicBlocksImpl::JoinBasicBlock { - JoinBlockPredecessor getJoinBlockPredecessor(int i) { result = super.getJoinBlockPredecessor(i) } -} - -/** A basic block that is an immediate predecessor of a join block. */ -final class JoinBlockPredecessor extends BasicBlock, BasicBlocksImpl::JoinPredecessorBasicBlock { } - -/** - * A basic block that terminates in a condition, splitting the subsequent - * control flow. - */ -final class ConditionBlock extends BasicBlock, BasicBlocksImpl::ConditionBasicBlock { - /** DEPRECATED: Use `edgeDominates` instead. */ - deprecated predicate immediatelyControls(BasicBlock succ, ConditionalSuccessor s) { - this.getASuccessor(s) = succ and - BasicBlocksImpl::dominatingEdge(this, succ) - } - - /** DEPRECATED: Use `edgeDominates` instead. */ - deprecated predicate controls(BasicBlock controlled, ConditionalSuccessor s) { - super.edgeDominates(controlled, s) - } -} - -private class BasicBlockAlias = BasicBlock; - -private class EntryBasicBlockAlias = EntryBasicBlock; - -module Cfg implements BB::CfgSig { - class ControlFlowNode = ControlFlow::Node; - - class BasicBlock = BasicBlockAlias; - - class EntryBasicBlock = EntryBasicBlockAlias; - - predicate dominatingEdge(BasicBlock bb1, BasicBlock bb2) { - BasicBlocksImpl::dominatingEdge(bb1, bb2) - } -} diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowElement.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowElement.qll index 0d0ed6819698..f2b459b63f7f 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowElement.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowElement.qll @@ -4,20 +4,21 @@ import csharp private import semmle.code.csharp.ExprOrStmtParent private import semmle.code.csharp.commons.Compilation private import ControlFlow -private import ControlFlow::BasicBlocks private import semmle.code.csharp.Caching -private import internal.ControlFlowGraphImpl as Impl + +private class TControlFlowElementOrCallable = @callable or @control_flow_element; + +/** A `ControlFlowElement` or a `Callable`. */ +class ControlFlowElementOrCallable extends ExprOrStmtParent, TControlFlowElementOrCallable { } /** * A program element that can possess control flow. That is, either a statement or * an expression. * - * A control flow element can be mapped to a control flow node (`ControlFlow::Node`) - * via `getAControlFlowNode()`. There is a one-to-many relationship between - * control flow elements and control flow nodes. This allows control flow - * splitting, for example modeling the control flow through `finally` blocks. + * A control flow element can be mapped to a control flow node (`ControlFlowNode`) + * via `getControlFlowNode()`. */ -class ControlFlowElement extends ExprOrStmtParent, @control_flow_element { +class ControlFlowElement extends ControlFlowElementOrCallable, @control_flow_element { /** Gets the enclosing callable of this element, if any. */ Callable getEnclosingCallable() { none() } @@ -30,41 +31,26 @@ class ControlFlowElement extends ExprOrStmtParent, @control_flow_element { } /** + * DEPRECATED: Use `getControlFlowNode()` instead. + * * Gets a control flow node for this element. That is, a node in the * control flow graph that corresponds to this element. - * - * Typically, there is exactly one `ControlFlow::Node` associated with a - * `ControlFlowElement`, but a `ControlFlowElement` may be split into - * several `ControlFlow::Node`s, for example to represent the continuation - * flow in a `try/catch/finally` construction. */ - Nodes::ElementNode getAControlFlowNode() { result.getAstNode() = this } + deprecated ControlFlowNodes::ElementNode getAControlFlowNode() { + result = this.getControlFlowNode() + } - /** Gets the control flow node for this element. */ - ControlFlow::Node getControlFlowNode() { result.getAstNode() = this } + /** Gets the control flow node for this element, if any. */ + ControlFlowNode getControlFlowNode() { result.injects(this) } /** Gets the basic block in which this element occurs. */ - BasicBlock getBasicBlock() { result = this.getAControlFlowNode().getBasicBlock() } - - /** - * Gets a first control flow node executed within this element. - */ - Nodes::ElementNode getAControlFlowEntryNode() { - result = Impl::getAControlFlowEntryNode(this).(ControlFlowElement).getAControlFlowNode() - } - - /** - * Gets a potential last control flow node executed within this element. - */ - Nodes::ElementNode getAControlFlowExitNode() { - result = Impl::getAControlFlowExitNode(this).(ControlFlowElement).getAControlFlowNode() - } + BasicBlock getBasicBlock() { result = this.getControlFlowNode().getBasicBlock() } /** * Holds if this element is live, that is this element can be reached * from the entry point of its enclosing callable. */ - predicate isLive() { exists(this.getAControlFlowNode()) } + predicate isLive() { exists(this.getControlFlowNode()) } /** Holds if the current element is reachable from `src`. */ // potentially very large predicate, so must be inlined @@ -77,31 +63,13 @@ class ControlFlowElement extends ExprOrStmtParent, @control_flow_element { ControlFlowElement getAReachableElement() { // Reachable in same basic block exists(BasicBlock bb, int i, int j | - bb.getNode(i) = this.getAControlFlowNode() and - bb.getNode(j) = result.getAControlFlowNode() and + bb.getNode(i) = this.getControlFlowNode() and + bb.getNode(j) = result.getControlFlowNode() and i < j ) or // Reachable in different basic blocks - this.getAControlFlowNode().getBasicBlock().getASuccessor+().getANode() = - result.getAControlFlowNode() - } - - /** - * DEPRECATED: Use `Guard` class instead. - * - * Holds if basic block `controlled` is controlled by this control flow element - * with conditional value `s`. That is, `controlled` can only be reached from - * the callable entry point by going via the `s` edge out of *some* basic block - * ending with this element. - * - * `cb` records all of the possible condition blocks for this control flow element - * that a path from the callable entry point to `controlled` may go through. - */ - deprecated predicate controlsBlock( - BasicBlock controlled, ConditionalSuccessor s, ConditionBlock cb - ) { - cb.getLastNode() = this.getAControlFlowNode() and - cb.edgeDominates(controlled, s) + this.getControlFlowNode().getBasicBlock().getASuccessor+().getANode() = + result.getControlFlowNode() } } diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowGraph.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowGraph.qll index 438174fe2970..c56d3dab420c 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowGraph.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowGraph.qll @@ -1,315 +1,334 @@ -import csharp - /** * Provides classes representing the control flow graph within callables. */ -module ControlFlow { - private import semmle.code.csharp.controlflow.BasicBlocks as BBs - import semmle.code.csharp.controlflow.internal.SuccessorType - private import internal.ControlFlowGraphImpl as Impl - private import internal.Splitting as Splitting - /** - * A control flow node. - * - * Either a callable entry node (`EntryNode`), a callable exit node (`ExitNode`), - * or a control flow node for a control flow element, that is, an expression or a - * statement (`ElementNode`). - * - * A control flow node is a node in the control flow graph (CFG). There is a - * many-to-one relationship between `ElementNode`s and `ControlFlowElement`s. - * This allows control flow splitting, for example modeling the control flow - * through `finally` blocks. - * - * Only nodes that can be reached from the callable entry point are included in - * the CFG. - */ - class Node extends Impl::Node { - /** Gets the control flow element that this node corresponds to, if any. */ - final ControlFlowElement getAstNode() { result = super.getAstNode() } +import csharp +private import internal.ControlFlowGraph +private import codeql.controlflow.SuccessorType +private import semmle.code.csharp.commons.Compilation +private import semmle.code.csharp.controlflow.internal.NonReturning as NonReturning - /** Gets the basic block that this control flow node belongs to. */ - BasicBlock getBasicBlock() { result.getANode() = this } +private module Cfg0 = Make0; - /** - * Holds if this node dominates `that` node. - * - * That is, all paths reaching `that` node from some callable entry - * node (`EntryNode`) must go through this node. - * - * Example: - * - * ```csharp - * int M(string s) - * { - * if (s == null) - * throw new ArgumentNullException(nameof(s)); - * return s.Length; - * } - * ``` - * - * The node on line 3 dominates the node on line 5 (all paths from the - * entry point of `M` to `return s.Length;` must go through the null check). - * - * This predicate is *reflexive*, so for example `if (s == null)` dominates - * itself. - */ - // potentially very large predicate, so must be inlined - pragma[inline] - predicate dominates(Node that) { - this.strictlyDominates(that) - or - this = that - } +private module Cfg1 = Make1; - /** - * Holds if this node strictly dominates `that` node. - * - * That is, all paths reaching `that` node from some callable entry - * node (`EntryNode`) must go through this node (which must - * be different from `that` node). - * - * Example: - * - * ```csharp - * int M(string s) - * { - * if (s == null) - * throw new ArgumentNullException(nameof(s)); - * return s.Length; - * } - * ``` - * - * The node on line 3 strictly dominates the node on line 5 - * (all paths from the entry point of `M` to `return s.Length;` must go - * through the null check). - */ - // potentially very large predicate, so must be inlined - pragma[inline] - predicate strictlyDominates(Node that) { - this.getBasicBlock().strictlyDominates(that.getBasicBlock()) - or - exists(BasicBlock bb, int i, int j | - bb.getNode(i) = this and - bb.getNode(j) = that and - i < j - ) - } +private module Cfg2 = Make2; - /** - * Holds if this node post-dominates `that` node. - * - * That is, all paths reaching a normal callable exit node (an `AnnotatedExitNode` - * with a normal exit type) from `that` node must go through this node. - * - * Example: - * - * ```csharp - * int M(string s) - * { - * try - * { - * return s.Length; - * } - * finally - * { - * Console.WriteLine("M"); - * } - * } - * ``` - * - * The node on line 9 post-dominates the node on line 5 (all paths to the - * exit point of `M` from `return s.Length;` must go through the `WriteLine` - * call). - * - * This predicate is *reflexive*, so for example `Console.WriteLine("M");` - * post-dominates itself. - */ - // potentially very large predicate, so must be inlined - pragma[inline] - predicate postDominates(Node that) { - this.strictlyPostDominates(that) - or - this = that - } +private import Cfg0 +private import Cfg1 +private import Cfg2 +import Public - /** - * Holds if this node strictly post-dominates `that` node. - * - * That is, all paths reaching a normal callable exit node (an `AnnotatedExitNode` - * with a normal exit type) from `that` node must go through this node - * (which must be different from `that` node). - * - * Example: - * - * ```csharp - * int M(string s) - * { - * try - * { - * return s.Length; - * } - * finally - * { - * Console.WriteLine("M"); - * } - * } - * ``` - * - * The node on line 9 strictly post-dominates the node on line 5 (all - * paths to the exit point of `M` from `return s.Length;` must go through - * the `WriteLine` call). - */ - // potentially very large predicate, so must be inlined - pragma[inline] - predicate strictlyPostDominates(Node that) { - this.getBasicBlock().strictlyPostDominates(that.getBasicBlock()) - or - exists(BasicBlock bb, int i, int j | - bb.getNode(i) = this and - bb.getNode(j) = that and - i > j - ) - } +/** + * A compilation. + * + * Unlike the standard `Compilation` class, this class also supports buildless + * extraction. + */ +private newtype TCompilationExt = + TCompilation(Compilation c) { not extractionIsStandalone() } or + TBuildless() { extractionIsStandalone() } + +private class CompilationExt extends TCompilationExt { + string toString() { + exists(Compilation c | + this = TCompilation(c) and + result = c.toString() + ) + or + this = TBuildless() and result = "buildless compilation" + } +} - /** Gets a successor node of a given type, if any. */ - Node getASuccessorByType(SuccessorType t) { result = this.getASuccessor(t) } +/** Gets the compilation that source file `f` belongs to. */ +bindingset[e] +pragma[inline_late] +private CompilationExt getCompilation(Element e) { + exists(Compilation c | + e.getALocation().getFile() = c.getAFileCompiled() and + result = TCompilation(c) + ) + or + result = TBuildless() +} - /** Gets an immediate successor, if any. */ - Node getASuccessor() { result = this.getASuccessorByType(_) } +private module Exceptions { + private import semmle.code.csharp.commons.Assertions - /** Gets an immediate predecessor node of a given flow type, if any. */ - Node getAPredecessorByType(SuccessorType t) { result.getASuccessorByType(t) = this } + private class Overflowable extends UnaryOperation { + Overflowable() { + not this instanceof UnaryBitwiseOperation and + this.getType() instanceof IntegralType + } + } - /** Gets an immediate predecessor, if any. */ - Node getAPredecessor() { result = this.getAPredecessorByType(_) } + /** Holds if `cfe` is a control flow element that may throw an exception. */ + predicate mayThrowException(ControlFlowElement cfe) { + cfe.(TriedControlFlowElement).mayThrowException() + or + cfe instanceof Assertion + } - /** - * Gets an immediate `true` successor, if any. - * - * An immediate `true` successor is a successor that is reached when - * this condition evaluates to `true`. - * - * Example: - * - * ```csharp - * if (x < 0) - * x = -x; - * ``` - * - * The node on line 2 is an immediate `true` successor of the node - * on line 1. - */ - Node getATrueSuccessor() { - result = this.getASuccessorByType(any(BooleanSuccessor t | t.getValue() = true)) + /** A control flow element that is inside a `try` block. */ + private class TriedControlFlowElement extends ControlFlowElement { + TriedControlFlowElement() { + this = any(TryStmt try).getATriedElement() and + not this instanceof NonReturning::NonReturningCall } /** - * Gets an immediate `false` successor, if any. - * - * An immediate `false` successor is a successor that is reached when - * this condition evaluates to `false`. - * - * Example: - * - * ```csharp - * if (!(x >= 0)) - * x = -x; - * ``` - * - * The node on line 2 is an immediate `false` successor of the node - * on line 1. + * Holds if this element may potentially throw an exception. */ - Node getAFalseSuccessor() { - result = this.getASuccessorByType(any(BooleanSuccessor t | t.getValue() = false)) + predicate mayThrowException() { + this instanceof Overflowable + or + this.(CastExpr).getType() instanceof IntegralType + or + invalidCastCandidate(this) + or + this instanceof Call + or + this = + any(MemberAccess ma | + not ma.isConditional() and + ma.getQualifier() = any(Expr e | not e instanceof TypeAccess) + ) + or + this instanceof DelegateCreation + or + this instanceof ArrayCreation + or + this = + any(AddOperation ae | + ae.getType() instanceof StringType + or + ae.getType() instanceof IntegralType + ) + or + this = any(SubOperation se | se.getType() instanceof IntegralType) + or + this = any(MulOperation me | me.getType() instanceof IntegralType) + or + this = any(DivOperation de | not de.getDenominator().getValue().toFloat() != 0) + or + this instanceof RemOperation + or + this instanceof DynamicExpr } - - /** Gets the enclosing callable of this control flow node. */ - final Callable getEnclosingCallable() { result = Impl::getNodeCfgScope(this) } } - /** Provides different types of control flow nodes. */ - module Nodes { - /** A node for a callable entry point. */ - class EntryNode extends Node instanceof Impl::EntryNode { - /** Gets the callable that this entry applies to. */ - Callable getCallable() { result = this.getScope() } - - override BasicBlocks::EntryBlock getBasicBlock() { result = Node.super.getBasicBlock() } - } + pragma[nomagic] + private ValueOrRefType getACastExprBaseType(CastExpr ce) { + result = ce.getType().(ValueOrRefType).getABaseType() + or + result = getACastExprBaseType(ce).getABaseType() + } - /** A node for a callable exit point, annotated with the type of exit. */ - class AnnotatedExitNode extends Node instanceof Impl::AnnotatedExitNode { - /** Holds if this node represent a normal exit. */ - final predicate isNormal() { super.isNormal() } + pragma[nomagic] + private predicate invalidCastCandidate(CastExpr ce) { + ce.getExpr().getType() = getACastExprBaseType(ce) + } +} - /** Gets the callable that this exit applies to. */ - Callable getCallable() { result = this.getScope() } +private module Input implements InputSig1, InputSig2 { + predicate cfgCachedStageRef() { CfgCachedStage::ref() } - override BasicBlocks::AnnotatedExitBlock getBasicBlock() { - result = Node.super.getBasicBlock() - } - } + predicate catchAll(Ast::CatchClause catch) { catch instanceof GeneralCatchClause } - /** A control flow node indicating normal termination of a callable. */ - class NormalExitNode extends AnnotatedExitNode instanceof Impl::NormalExitNode { } + predicate matchAll(Ast::Case c) { c instanceof DefaultCase or c.(SwitchCaseExpr).matchesAll() } - /** A node for a callable exit point. */ - class ExitNode extends Node instanceof Impl::ExitNode { - /** Gets the callable that this exit applies to. */ - Callable getCallable() { result = this.getScope() } + private newtype TLabel = + TLblGoto(string label) { any(GotoLabelStmt goto).getLabel() = label } or + TLblSwitchCase(string value) { any(GotoCaseStmt goto).getLabel() = value } or + TLblSwitchDefault() - override BasicBlocks::ExitBlock getBasicBlock() { result = Node.super.getBasicBlock() } + class Label extends TLabel { + string toString() { + this = TLblGoto(result) + or + this = TLblSwitchCase(result) + or + this = TLblSwitchDefault() and result = "default" } + } - /** - * A node for a control flow element, that is, an expression or a statement. - * - * Each control flow element maps to zero or more `ElementNode`s: zero when - * the element is in unreachable (dead) code, and multiple when there are - * different splits for the element. - */ - class ElementNode extends Node instanceof Impl::AstCfgNode { - /** Gets a comma-separated list of strings for each split in this node, if any. */ - final string getSplitsString() { result = super.getSplitsString() } + predicate hasLabel(Ast::AstNode n, Label l) { + l = TLblGoto(n.(GotoLabelStmt).getLabel()) + or + l = TLblSwitchCase(n.(GotoCaseStmt).getLabel()) + or + l = TLblSwitchDefault() and n instanceof GotoDefaultStmt + or + l = TLblGoto(n.(LabelStmt).getLabel()) + } - /** Gets a split for this control flow node, if any. */ - final Split getASplit() { result = super.getASplit() } - } + class CallableContext = CompilationExt; - /** A control-flow node for an expression. */ - class ExprNode extends ElementNode { - Expr e; + pragma[nomagic] + Ast::AstNode callableGetBodyPart(Ast::Callable c, CallableContext ctx, int index) { + not Ast::skipControlFlow(result) and + ctx = getCompilation(result) and + ( + result = Initializers::initializedInstanceMemberOrder(c, index) + or + result = Initializers::initializedStaticMemberOrder(c, index) + or + exists(Constructor ctor, int i, int staticMembers | + c = ctor and + staticMembers = count(Expr init | Initializers::staticMemberInitializer(ctor, init)) and + index = staticMembers + i + 1 + | + i = 0 and result = ctor.getObjectInitializerCall() + or + i = 1 and result = ctor.getInitializer() + or + i = 2 and result = ctor.getBody() + ) + or + not c instanceof Constructor and + result = c.getBody() and + index = 0 + ) + } - ExprNode() { e = unique(Expr e_ | e_ = this.getAstNode() | e_) } + pragma[nomagic] + Ast::Parameter callableGetParameter(Ast::Callable c, CallableContext ctx, int index) { + result = Ast::callableGetParameter(c, index) and + ctx = getCompilation(result) + } - /** Gets the expression that this control-flow node belongs to. */ - Expr getExpr() { result = e } + private Expr getQualifier(QualifiableExpr qe) { + result = qe.getQualifier() or + result = qe.(ExtensionMethodCall).getArgument(0) + } - /** Gets the value of this expression node, if any. */ - string getValue() { result = e.getValue() } + predicate inConditionalContext(Ast::AstNode n, ConditionKind kind) { + kind.isNullness() and + exists(QualifiableExpr qe | qe.isConditional() | n = getQualifier(qe)) + } - /** Gets the type of this expression node. */ - Type getType() { result = e.getType() } - } + predicate postOrInOrder(Ast::AstNode n) { n instanceof YieldStmt or n instanceof Call } + + predicate beginAbruptCompletion( + Ast::AstNode ast, PreControlFlowNode n, AbruptCompletion c, boolean always + ) { + // `yield break` behaves like a return statement + ast instanceof YieldBreakStmt and + n.isIn(ast) and + c.asSimpleAbruptCompletion() instanceof ReturnSuccessor and + always = true + or + Exceptions::mayThrowException(ast) and + n.isIn(ast) and + c.asSimpleAbruptCompletion() instanceof ExceptionSuccessor and + always = false + or + ast instanceof NonReturning::NonReturningCall and + n.isIn(ast) and + c.asSimpleAbruptCompletion() instanceof ExceptionSuccessor and + always = true + } - class Split = Splitting::Split; + predicate endAbruptCompletion(Ast::AstNode ast, PreControlFlowNode n, AbruptCompletion c) { + exists(SwitchStmt switch, Label l, Ast::Case case | + ast.(Stmt).getParent() = switch and + c.getSuccessorType() instanceof GotoSuccessor and + c.hasLabel(l) and + n.isAfterValue(case, any(MatchingSuccessor t | t.getValue() = true)) + | + exists(string value, ConstCase cc | + l = TLblSwitchCase(value) and + switch.getAConstCase() = cc and + cc.getLabel() = value and + cc = case + ) + or + l = TLblSwitchDefault() and switch.getDefaultCase() = case + ) } - class BasicBlock = BBs::BasicBlock; + predicate step(PreControlFlowNode n1, PreControlFlowNode n2) { + exists(QualifiableExpr qe | qe.isConditional() | + n1.isBefore(qe) and n2.isBefore(getQualifier(qe)) + or + exists(NullnessSuccessor t | n1.isAfterValue(getQualifier(qe), t) | + if t.isNull() + then ( + // if `q` is null in `q?.f = x` then the assignment is skipped. This + // holds for both regular, compound, and null-coalescing assignments. + // On the other hand, the CFG definition for the assignment can treat + // the LHS the same regardless of whether it's a conditionally + // qualified access or not, as it just connects to the "before" and + // "after" nodes of the LHS, and the "after" node is skipped in this + // case. + exists(AssignableDefinition def | + def.getTargetAccess() = qe and + n2.isAfterValue(def.getExpr(), t) + ) + or + not qe instanceof AssignableWrite and + n2.isAfterValue(qe, t) + ) else ( + n2.isBefore(Ast::getChild(qe, 0)) + or + n2.isIn(qe) and not exists(Ast::getChild(qe, 0)) + ) + ) + or + exists(int i | i >= 0 and n1.isAfter(Ast::getChild(qe, i)) | + n2.isBefore(Ast::getChild(qe, i + 1)) + or + not exists(Ast::getChild(qe, i + 1)) and n2.isIn(qe) + ) + or + n1.isIn(qe) and n2.isAfter(qe) and not beginAbruptCompletion(qe, n1, _, true) + ) + or + exists(ObjectCreation oc | + n1.isBefore(oc) and n2.isBefore(oc.getArgument(0)) + or + n1.isBefore(oc) and n2.isIn(oc) and not exists(oc.getAnArgument()) + or + exists(int i | n1.isAfter(oc.getArgument(i)) | + n2.isBefore(oc.getArgument(i + 1)) + or + not exists(oc.getArgument(i + 1)) and n2.isIn(oc) + ) + or + n1.isIn(oc) and n2.isBefore(oc.getInitializer()) + or + n1.isIn(oc) and n2.isAfter(oc) and not exists(oc.getInitializer()) + or + n1.isAfter(oc.getInitializer()) and n2.isAfter(oc) + ) + } +} - /** Provides different types of basic blocks. */ - module BasicBlocks { - class EntryBlock = BBs::EntryBasicBlock; +/** Provides different types of control flow nodes. */ +module ControlFlowNodes { + /** + * A node for a control flow element, that is, an expression or a statement. + * + * Each control flow element maps to zero or one `ElementNode`s: zero when + * the element is in unreachable (dead) code, and otherwise one. + */ + class ElementNode extends ControlFlowNode { + ElementNode() { exists(this.asExpr()) or exists(this.asStmt()) } + } - class AnnotatedExitBlock = BBs::AnnotatedExitBasicBlock; + /** A control-flow node for an expression. */ + class ExprNode extends ElementNode { + Expr e; - class ExitBlock = BBs::ExitBasicBlock; + ExprNode() { e = this.asExpr() } - class JoinBlock = BBs::JoinBlock; + /** Gets the expression that this control-flow node belongs to. */ + Expr getExpr() { result = e } - class JoinBlockPredecessor = BBs::JoinBlockPredecessor; + /** Gets the value of this expression node, if any. */ + string getValue() { result = e.getValue() } - class ConditionBlock = BBs::ConditionBlock; + /** Gets the type of this expression node. */ + Type getType() { result = e.getType() } } } diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowReachability.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowReachability.qll index aafe14402c7f..4ec4dad9e1be 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowReachability.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/ControlFlowReachability.qll @@ -4,16 +4,13 @@ import csharp private import codeql.controlflow.ControlFlowReachability -private import semmle.code.csharp.controlflow.BasicBlocks private import semmle.code.csharp.controlflow.Guards as Guards private import semmle.code.csharp.ExprOrStmtParent -private module ControlFlowInput implements - InputSig -{ +private module ControlFlowInput implements InputSig { private import csharp as CS - AstNode getEnclosingAstNode(ControlFlow::Node node) { + AstNode getEnclosingAstNode(ControlFlowNode node) { node.getAstNode() = result or not exists(node.getAstNode()) and result = node.getEnclosingCallable() @@ -29,17 +26,7 @@ private module ControlFlowInput implements class Expr = CS::Expr; - class SourceVariable = Ssa::SourceVariable; - - class SsaDefinition = Ssa::Definition; - - class SsaExplicitWrite extends SsaDefinition instanceof Ssa::ExplicitDefinition { - Expr getValue() { result = super.getADefinition().getSource() } - } - - class SsaPhiDefinition = Ssa::PhiNode; - - class SsaUncertainWrite = Ssa::UncertainDefinition; + import Ssa class GuardValue = Guards::GuardValue; diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll index 03a5aa7e2b74..3353866e3343 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/Guards.qll @@ -7,20 +7,16 @@ private import ControlFlow private import semmle.code.csharp.commons.Assertions private import semmle.code.csharp.commons.ComparisonTest private import semmle.code.csharp.commons.StructuralComparison as SC -private import semmle.code.csharp.controlflow.BasicBlocks -private import semmle.code.csharp.controlflow.internal.Completion private import semmle.code.csharp.frameworks.System private import semmle.code.csharp.frameworks.system.Linq private import semmle.code.csharp.frameworks.system.Collections private import semmle.code.csharp.frameworks.system.collections.Generic private import codeql.controlflow.Guards as SharedGuards -private module GuardsInput implements - SharedGuards::InputSig -{ +private module GuardsInput implements SharedGuards::InputSig { private import csharp as CS - class NormalExitNode = ControlFlow::Nodes::NormalExitNode; + class NormalExitNode = ControlFlow::NormalExitNode; class AstNode = ControlFlowElement; @@ -60,25 +56,16 @@ private module GuardsInput implements override boolean asBooleanValue() { boolConst(this, result) } } - private predicate intConst(Expr e, int i) { - e.getValue().toInt() = i and - ( - e.getType() instanceof Enum - or - e.getType() instanceof IntegralType - ) - } - private class IntegerConstant extends ConstantExpr { - IntegerConstant() { intConst(this, _) } + IntegerConstant() { exists(this.getIntValue()) } - override int asIntegerValue() { intConst(this, result) } + override int asIntegerValue() { result = this.getIntValue() } } private class EnumConst extends ConstantExpr { EnumConst() { this.getType() instanceof Enum and this.hasValue() } - override int asIntegerValue() { result = this.getValue().toInt() } + override int asIntegerValue() { result = this.getIntValue() } } private class StringConstant extends ConstantExpr instanceof StringLiteral { @@ -96,21 +83,14 @@ private module GuardsInput implements ConstantExpr asConstantCase() { super.getPattern() = result } - private predicate hasEdge(BasicBlock bb1, BasicBlock bb2, MatchingCompletion c) { - exists(PatternExpr pe | - super.getPattern() = pe and - c.isValidFor(pe) and - bb1.getLastNode() = pe.getAControlFlowNode() and - bb1.getASuccessor(c.getAMatchingSuccessorType()) = bb2 - ) - } - predicate matchEdge(BasicBlock bb1, BasicBlock bb2) { - exists(MatchingCompletion c | this.hasEdge(bb1, bb2, c) and c.isMatch()) + bb1.getASuccessor(any(MatchingSuccessor s | s.getValue() = true)) = bb2 and + bb1.getLastNode() = super.getPattern().getControlFlowNode() } predicate nonMatchEdge(BasicBlock bb1, BasicBlock bb2) { - exists(MatchingCompletion c | this.hasEdge(bb1, bb2, c) and c.isNonMatch()) + bb1.getASuccessor(any(MatchingSuccessor s | s.getValue() = false)) = bb2 and + bb1.getLastNode() = super.getPattern().getControlFlowNode() } } @@ -136,7 +116,7 @@ private module GuardsInput implements IdExpr() { this instanceof AssignExpr or this instanceof CastExpr } Expr getEqualChildExpr() { - result = this.(AssignExpr).getRValue() + result = this.(AssignExpr).getRightOperand() or result = this.(CastExpr).getExpr() } @@ -211,23 +191,7 @@ private module GuardsImpl = SharedGuards::Make; class GuardValue = GuardsImpl::GuardValue; private module LogicInput implements GuardsImpl::LogicInputSig { - class SsaDefinition extends Ssa::Definition { - Expr getARead() { super.getARead() = result } - } - - class SsaExplicitWrite extends SsaDefinition instanceof Ssa::ExplicitDefinition { - Expr getValue() { result = super.getADefinition().getSource() } - } - - class SsaPhiDefinition extends SsaDefinition instanceof Ssa::PhiNode { - predicate hasInputFromBlock(SsaDefinition inp, BasicBlock bb) { - super.hasInputFromBlock(inp, bb) - } - } - - class SsaParameterInit extends SsaDefinition instanceof Ssa::ImplicitParameterDefinition { - Parameter getParameter() { result = super.getParameter() } - } + import Ssa predicate additionalNullCheck(GuardsImpl::PreGuard guard, GuardValue val, Expr e, boolean isNull) { // Comparison with a non-`null` value, for example `x?.Length > 0` @@ -322,7 +286,7 @@ class Guard extends Guards::Guard { * In case `cfn` or `sub` access an SSA variable in their left-most qualifier, then * so must the other (accessing the same SSA variable). */ - predicate controlsNode(ControlFlow::Nodes::ElementNode cfn, AccessOrCallExpr sub, GuardValue v) { + predicate controlsNode(ControlFlowNodes::ElementNode cfn, AccessOrCallExpr sub, GuardValue v) { isGuardedByNode(cfn, this, sub, v) } @@ -332,7 +296,7 @@ class Guard extends Guards::Guard { * Note: This predicate is inlined. */ pragma[inline] - predicate controlsNode(ControlFlow::Nodes::ElementNode cfn, GuardValue v) { + predicate controlsNode(ControlFlowNodes::ElementNode cfn, GuardValue v) { guardControls(this, cfn.getBasicBlock(), v) } @@ -450,7 +414,8 @@ class DereferenceableExpr extends Expr { predicate guardSuggestsMaybeNull(Guards::Guard guard) { not nonNullValueImplied(this) and ( - exists(NullnessCompletion c | c.isValidFor(this) and c.isNull() and guard = this) + exists(guard.getControlFlowNode().getASuccessor(any(NullnessSuccessor n | n.isNull()))) and + guard = this or LogicInput::additionalNullCheck(guard, _, this, true) or @@ -517,35 +482,35 @@ class EnumerableCollectionExpr extends Expr { | // x.Length == 0 ct.getComparisonKind().isEquality() and - ct.getAnArgument().getValue().toInt() = 0 and + ct.getAnArgument().getIntValue() = 0 and branch = isEmpty or // x.Length == k, k > 0 ct.getComparisonKind().isEquality() and - ct.getAnArgument().getValue().toInt() > 0 and + ct.getAnArgument().getIntValue() > 0 and branch = true and isEmpty = false or // x.Length != 0 ct.getComparisonKind().isInequality() and - ct.getAnArgument().getValue().toInt() = 0 and + ct.getAnArgument().getIntValue() = 0 and branch = isEmpty.booleanNot() or // x.Length != k, k != 0 ct.getComparisonKind().isInequality() and - ct.getAnArgument().getValue().toInt() != 0 and + ct.getAnArgument().getIntValue() != 0 and branch = false and isEmpty = false or // x.Length > k, k >= 0 ct.getComparisonKind().isLessThan() and - ct.getFirstArgument().getValue().toInt() >= 0 and + ct.getFirstArgument().getIntValue() >= 0 and branch = true and isEmpty = false or // x.Length >= k, k > 0 ct.getComparisonKind().isLessThanEquals() and - ct.getFirstArgument().getValue().toInt() > 0 and + ct.getFirstArgument().getIntValue() > 0 and branch = true and isEmpty = false ) @@ -605,7 +570,7 @@ class AccessOrCallExpr extends Expr { * An expression can have more than one SSA qualifier in the presence * of control flow splitting. */ - Ssa::Definition getAnSsaQualifier(ControlFlow::Node cfn) { result = getAnSsaQualifier(this, cfn) } + SsaDefinition getAnSsaQualifier(ControlFlowNode cfn) { result = getAnSsaQualifier(this, cfn) } } private Declaration getDeclarationTarget(Expr e) { @@ -613,22 +578,22 @@ private Declaration getDeclarationTarget(Expr e) { result = e.(Call).getTarget() } -private Ssa::Definition getAnSsaQualifier(Expr e, ControlFlow::Node cfn) { +private SsaDefinition getAnSsaQualifier(Expr e, ControlFlowNode cfn) { e = getATrackedAccess(result, cfn) or not e = getATrackedAccess(_, _) and result = getAnSsaQualifier(e.(QualifiableExpr).getQualifier(), cfn) } -private AssignableAccess getATrackedAccess(Ssa::Definition def, ControlFlow::Node cfn) { - result = def.getAReadAtNode(cfn) +private AssignableAccess getATrackedAccess(SsaDefinition def, ControlFlowNode cfn) { + result = def.getARead() and cfn = result.getControlFlowNode() or - result = def.(Ssa::ExplicitDefinition).getADefinition().getTargetAccess() and + result = def.(SsaExplicitWrite).getDefinition().getTargetAccess() and cfn = def.getControlFlowNode() } private predicate ssaMustHaveValue(Expr e, GuardValue v) { - exists(Ssa::Definition def, BasicBlock bb | + exists(SsaDefinition def, BasicBlock bb | e = def.getARead() and e.getBasicBlock() = bb and Guards::ssaControls(def, bb, v) @@ -729,7 +694,7 @@ class GuardedExpr extends AccessOrCallExpr { * In the example above, the node for `x.ToString()` is null-guarded in the * split `b == true`, but not in the split `b == false`. */ -class GuardedControlFlowNode extends ControlFlow::Nodes::ElementNode { +class GuardedControlFlowNode extends ControlFlowNodes::ElementNode { private Guard g; private AccessOrCallExpr sub0; private GuardValue v0; @@ -785,7 +750,7 @@ class GuardedDataFlowNode extends DataFlow::ExprNode { private GuardValue v0; GuardedDataFlowNode() { - exists(ControlFlow::Nodes::ElementNode cfn | exists(this.getExprAtNode(cfn)) | + exists(ControlFlowNodes::ElementNode cfn | exists(this.getExprAtNode(cfn)) | g.controlsNode(cfn, sub0, v0) ) } @@ -836,7 +801,7 @@ module Internal { /** Holds if expression `e2` is a `null` value whenever `e1` is. */ predicate nullValueImpliedUnary(Expr e1, Expr e2) { - e1 = e2.(AssignExpr).getRValue() + e1 = e2.(AssignExpr).getRightOperand() or e1 = e2.(Cast).getExpr() or @@ -860,14 +825,12 @@ module Internal { ) or e = - any(Ssa::Definition def | - forex(Ssa::Definition u | u = def.getAnUltimateDefinition() | nullDef(u)) + any(SsaDefinition def | + forex(SsaDefinition u | u = def.getAnUltimateDefinition() | nullDef(u)) ).getARead() } - private predicate nullDef(Ssa::ExplicitDefinition def) { - nullValueImplied(def.getADefinition().getSource()) - } + private predicate nullDef(SsaExplicitWrite def) { nullValueImplied(def.getValue()) } predicate nonNullValueImplied(Expr e) { nonNullValue(e) @@ -875,14 +838,12 @@ module Internal { exists(Expr e1 | nonNullValueImplied(e1) and nonNullValueImpliedUnary(e1, e)) or e = - any(Ssa::Definition def | - forex(Ssa::Definition u | u = def.getAnUltimateDefinition() | nonNullDef(u)) + any(SsaDefinition def | + forex(SsaDefinition u | u = def.getAnUltimateDefinition() | nonNullDef(u)) ).getARead() } - private predicate nonNullDef(Ssa::ExplicitDefinition def) { - nonNullValueImplied(def.getADefinition().getSource()) - } + private predicate nonNullDef(SsaExplicitWrite def) { nonNullValueImplied(def.getValue()) } /** A callable that always returns a non-`null` value. */ private class NonNullCallable extends Callable { @@ -923,7 +884,7 @@ module Internal { /** Holds if expression `e2` is a non-`null` value whenever `e1` is. */ predicate nonNullValueImpliedUnary(Expr e1, Expr e2) { e1 = e2.(CastExpr).getExpr() or - e1 = e2.(AssignExpr).getRValue() or + e1 = e2.(AssignExpr).getRightOperand() or e1 = e2.(NullCoalescingOperation).getAnOperand() } @@ -1083,7 +1044,7 @@ module Internal { candidateAux(x, d, bb) and y = any(AccessOrCallExpr e | - e.getAControlFlowNode().getBasicBlock() = bb and + e.getControlFlowNode().getBasicBlock() = bb and e.getTarget() = d ) ) @@ -1115,11 +1076,11 @@ module Internal { pragma[nomagic] private predicate nodeIsGuardedBySameSubExpr0( - ControlFlow::Node guardedCfn, BasicBlock guardedBB, AccessOrCallExpr guarded, Guard g, + ControlFlowNode guardedCfn, BasicBlock guardedBB, AccessOrCallExpr guarded, Guard g, AccessOrCallExpr sub, GuardValue v ) { Stages::GuardsStage::forceCachingInSameStage() and - guardedCfn = guarded.getAControlFlowNode() and + guardedCfn = guarded.getControlFlowNode() and guardedBB = guardedCfn.getBasicBlock() and guardControls(g, guardedBB, v) and guardControlsSubSame(g, guardedBB, sub) and @@ -1128,7 +1089,7 @@ module Internal { pragma[nomagic] private predicate nodeIsGuardedBySameSubExpr( - ControlFlow::Node guardedCfn, BasicBlock guardedBB, AccessOrCallExpr guarded, Guard g, + ControlFlowNode guardedCfn, BasicBlock guardedBB, AccessOrCallExpr guarded, Guard g, AccessOrCallExpr sub, GuardValue v ) { nodeIsGuardedBySameSubExpr0(guardedCfn, guardedBB, guarded, g, sub, v) and @@ -1137,9 +1098,9 @@ module Internal { pragma[nomagic] private predicate nodeIsGuardedBySameSubExprSsaDef0( - ControlFlow::Node cfn, BasicBlock guardedBB, AccessOrCallExpr guarded, Guard g, - ControlFlow::Node subCfn, BasicBlock subCfnBB, AccessOrCallExpr sub, GuardValue v, - Ssa::Definition def + ControlFlowNode cfn, BasicBlock guardedBB, AccessOrCallExpr guarded, Guard g, + ControlFlowNode subCfn, BasicBlock subCfnBB, AccessOrCallExpr sub, GuardValue v, + SsaDefinition def ) { nodeIsGuardedBySameSubExpr(cfn, guardedBB, guarded, g, sub, v) and def = sub.getAnSsaQualifier(subCfn) and @@ -1148,8 +1109,8 @@ module Internal { pragma[nomagic] private predicate nodeIsGuardedBySameSubExprSsaDef( - ControlFlow::Node guardedCfn, AccessOrCallExpr guarded, Guard g, ControlFlow::Node subCfn, - AccessOrCallExpr sub, GuardValue v, Ssa::Definition def + ControlFlowNode guardedCfn, AccessOrCallExpr guarded, Guard g, ControlFlowNode subCfn, + AccessOrCallExpr sub, GuardValue v, SsaDefinition def ) { exists(BasicBlock guardedBB, BasicBlock subCfnBB | nodeIsGuardedBySameSubExprSsaDef0(guardedCfn, guardedBB, guarded, g, subCfn, subCfnBB, sub, @@ -1162,15 +1123,13 @@ module Internal { private predicate isGuardedByExpr0( AccessOrCallExpr guarded, Guard g, AccessOrCallExpr sub, GuardValue v ) { - forex(ControlFlow::Node cfn | cfn = guarded.getAControlFlowNode() | - nodeIsGuardedBySameSubExpr(cfn, _, guarded, g, sub, v) - ) + nodeIsGuardedBySameSubExpr(guarded.getControlFlowNode(), _, guarded, g, sub, v) } cached predicate isGuardedByExpr(AccessOrCallExpr guarded, Guard g, AccessOrCallExpr sub, GuardValue v) { isGuardedByExpr0(guarded, g, sub, v) and - forall(ControlFlow::Node subCfn, Ssa::Definition def | + forall(ControlFlowNode subCfn, SsaDefinition def | nodeIsGuardedBySameSubExprSsaDef(_, guarded, g, subCfn, sub, v, def) | def = guarded.getAnSsaQualifier(_) @@ -1179,17 +1138,14 @@ module Internal { cached predicate isGuardedByNode( - ControlFlow::Nodes::ElementNode guarded, Guard g, AccessOrCallExpr sub, GuardValue v + ControlFlowNodes::ElementNode guarded, Guard g, AccessOrCallExpr sub, GuardValue v ) { nodeIsGuardedBySameSubExpr(guarded, _, _, g, sub, v) and - forall(ControlFlow::Node subCfn, Ssa::Definition def | + forall(ControlFlowNode subCfn, SsaDefinition def | nodeIsGuardedBySameSubExprSsaDef(guarded, _, g, subCfn, sub, v, def) | def = - guarded - .getAstNode() - .(AccessOrCallExpr) - .getAnSsaQualifier(guarded.getBasicBlock().getANode()) + guarded.asExpr().(AccessOrCallExpr).getAnSsaQualifier(guarded.getBasicBlock().getANode()) ) } } diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Completion.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Completion.qll deleted file mode 100644 index e734e79402bf..000000000000 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Completion.qll +++ /dev/null @@ -1,896 +0,0 @@ -/** - * INTERNAL: Do not use. - * - * Provides classes representing control flow completions. - * - * A completion represents how a statement or expression terminates. - * - * There are six kinds of completions: normal completion, - * `return` completion, `break` completion, `continue` completion, - * `goto` completion, and `throw` completion. - * - * Normal completions are further subdivided into Boolean completions and all - * other normal completions. A Boolean completion adds the information that the - * expression terminated with the given boolean value due to a subexpression - * terminating with the other given Boolean value. This is only relevant for - * conditional contexts in which the value controls the control-flow successor. - * - * Goto successors are further subdivided into label gotos, case gotos, and - * default gotos. - */ - -import csharp -private import semmle.code.csharp.commons.Assertions -private import semmle.code.csharp.commons.Constants -private import semmle.code.csharp.frameworks.System -private import ControlFlowGraphImpl -private import NonReturning -private import SuccessorType - -private newtype TCompletion = - TSimpleCompletion() or - TBooleanCompletion(boolean b) { b = true or b = false } or - TNullnessCompletion(boolean isNull) { isNull = true or isNull = false } or - TMatchingCompletion(boolean isMatch) { isMatch = true or isMatch = false } or - TEmptinessCompletion(boolean isEmpty) { isEmpty = true or isEmpty = false } or - TReturnCompletion() or - TBreakCompletion() or - TContinueCompletion() or - TGotoCompletion(string label) { label = any(GotoStmt gs).getLabel() } or - TThrowCompletion(ExceptionClass ec) or - TExitCompletion() or - TNestedCompletion(Completion inner, Completion outer, int nestLevel) { - inner = TBreakCompletion() and - outer instanceof NonNestedNormalCompletion and - nestLevel = 0 - or - inner instanceof NormalCompletion and - nestedFinallyCompletion(outer, nestLevel) - } - -pragma[nomagic] -private int getAFinallyNestLevel() { result = any(Statements::TryStmtTree t).nestLevel() } - -pragma[nomagic] -private predicate nestedFinallyCompletion(Completion outer, int nestLevel) { - ( - outer = TReturnCompletion() - or - outer = TBreakCompletion() - or - outer = TContinueCompletion() - or - outer = TGotoCompletion(_) - or - outer = TThrowCompletion(_) - or - outer = TExitCompletion() - ) and - nestLevel = getAFinallyNestLevel() -} - -pragma[noinline] -private predicate completionIsValidForStmt(Stmt s, Completion c) { - s instanceof BreakStmt and - c = TBreakCompletion() - or - s instanceof ContinueStmt and - c = TContinueCompletion() - or - s instanceof GotoStmt and - c = TGotoCompletion(s.(GotoStmt).getLabel()) - or - s instanceof ReturnStmt and - c = TReturnCompletion() - or - s instanceof YieldBreakStmt and - // `yield break` behaves like a return statement - c = TReturnCompletion() - or - mustHaveEmptinessCompletion(s) and - c = TEmptinessCompletion(_) -} - -/** - * A completion of a statement or an expression. - */ -abstract class Completion extends TCompletion { - /** - * Holds if this completion is valid for control flow element `cfe`. - * - * If `cfe` is part of a `try` statement and `cfe` may throw an exception, this - * completion can be a throw completion. - * - * If `cfe` is used in a Boolean context, this completion is a Boolean completion, - * otherwise it is a normal non-Boolean completion. - */ - predicate isValidFor(ControlFlowElement cfe) { - this = cfe.(NonReturningCall).getACompletion() - or - this = TThrowCompletion(cfe.(TriedControlFlowElement).getAThrownException()) - or - cfe instanceof ThrowElement and - this = TThrowCompletion(cfe.(ThrowElement).getThrownExceptionType()) - or - this = assertionCompletion(cfe, _) - or - completionIsValidForStmt(cfe, this) - or - mustHaveBooleanCompletion(cfe) and - ( - exists(boolean value | isBooleanConstant(cfe, value) | this = TBooleanCompletion(value)) - or - not isBooleanConstant(cfe, _) and - this = TBooleanCompletion(_) - or - // Corner case: In `if (x ?? y) { ... }`, `x` must have both a `true` - // completion, a `false` completion, and a `null` completion (but not a - // non-`null` completion) - mustHaveNullnessCompletion(cfe) and - this = TNullnessCompletion(true) - ) - or - mustHaveNullnessCompletion(cfe) and - not mustHaveBooleanCompletion(cfe) and - ( - exists(boolean value | isNullnessConstant(cfe, value) | this = TNullnessCompletion(value)) - or - not isNullnessConstant(cfe, _) and - this = TNullnessCompletion(_) - ) - or - mustHaveMatchingCompletion(cfe) and - ( - exists(boolean value | isMatchingConstant(cfe, value) | this = TMatchingCompletion(value)) - or - not isMatchingConstant(cfe, _) and - this = TMatchingCompletion(_) - ) - or - not cfe instanceof NonReturningCall and - not cfe instanceof ThrowElement and - not cfe instanceof BreakStmt and - not cfe instanceof ContinueStmt and - not cfe instanceof GotoStmt and - not cfe instanceof ReturnStmt and - not cfe instanceof YieldBreakStmt and - not mustHaveBooleanCompletion(cfe) and - not mustHaveNullnessCompletion(cfe) and - not mustHaveMatchingCompletion(cfe) and - not mustHaveEmptinessCompletion(cfe) and - this = TSimpleCompletion() - } - - /** - * Holds if this completion will continue a loop when it is the completion - * of a loop body. - */ - predicate continuesLoop() { - this instanceof NormalCompletion or - this instanceof ContinueCompletion - } - - /** - * Gets the inner completion. This is either the inner completion, - * when the completion is nested, or the completion itself. - */ - Completion getInnerCompletion() { result = this } - - /** - * Gets the outer completion. This is either the outer completion, - * when the completion is nested, or the completion itself. - */ - Completion getOuterCompletion() { result = this } - - /** Gets a successor type that matches this completion. */ - abstract SuccessorType getAMatchingSuccessorType(); - - /** Gets a textual representation of this completion. */ - abstract string toString(); -} - -/** Holds if expression `e` has the Boolean constant value `value`. */ -private predicate isBooleanConstant(Expr e, boolean value) { - mustHaveBooleanCompletion(e) and - ( - e.getValue() = "true" and - value = true - or - e.getValue() = "false" and - value = false - or - isConstantComparison(e, value) - or - exists(Method m, Call c, Expr expr | - m = any(SystemStringClass s).getIsNullOrEmptyMethod() and - c.getTarget() = m and - e = c and - expr = c.getArgument(0) and - expr.hasValue() and - if expr.getValue().length() > 0 and not expr instanceof NullLiteral - then value = false - else value = true - ) - ) -} - -/** - * Holds if expression `e` is constantly `null` (`value = true`) or constantly - * non-`null` (`value = false`). - */ -private predicate isNullnessConstant(Expr e, boolean value) { - mustHaveNullnessCompletion(e) and - exists(Expr stripped | stripped = e.stripCasts() | - stripped.getType() = - any(ValueType t | - not t instanceof NullableType and - // Extractor bug: the type of `x?.Length` is reported as `int`, but it should - // be `int?` - not getQualifier*(stripped).(QualifiableExpr).isConditional() - ) and - value = false - or - stripped instanceof NullLiteral and - value = true - or - stripped.hasValue() and - not stripped instanceof NullLiteral and - value = false - ) -} - -private Expr getQualifier(QualifiableExpr e) { - // `e.getQualifier()` does not work for calls to extension methods - result = e.getChildExpr(-1) -} - -pragma[noinline] -private predicate typePatternMustHaveMatchingCompletion( - TypePatternExpr tpe, Type t, Type strippedType -) { - exists(Expr e, Expr stripped | mustHaveMatchingCompletion(e, tpe) | - stripped = e.stripCasts() and - t = tpe.getCheckedType() and - strippedType = stripped.getType() and - not t.containsTypeParameters() and - not strippedType.containsTypeParameters() - ) -} - -pragma[noinline] -private Type typePatternCommonSubTypeLeft(Type t) { - typePatternMustHaveMatchingCompletion(_, t, _) and - result.isImplicitlyConvertibleTo(t) and - not result instanceof DynamicType -} - -pragma[noinline] -private Type typePatternCommonSubTypeRight(Type strippedType) { - typePatternMustHaveMatchingCompletion(_, _, strippedType) and - result.isImplicitlyConvertibleTo(strippedType) and - not result instanceof DynamicType -} - -pragma[noinline] -private predicate typePatternCommonSubType(Type t, Type strippedType) { - typePatternCommonSubTypeLeft(t) = typePatternCommonSubTypeRight(strippedType) -} - -/** - * Holds if pattern expression `pe` constantly matches (`value = true`) or - * constantly non-matches (`value = false`). - */ -private predicate isMatchingConstant(PatternExpr pe, boolean value) { - exists(Expr e, string exprValue, string patternValue | - mustHaveMatchingCompletion(e, pe) and - exprValue = e.stripCasts().getValue() and - patternValue = pe.getValue() and - if exprValue = patternValue then value = true else value = false - ) - or - pe instanceof DiscardPatternExpr and - value = true - or - exists(Type t, Type strippedType | - not t instanceof UnknownType and - not strippedType instanceof UnknownType and - typePatternMustHaveMatchingCompletion(pe, t, strippedType) and - not typePatternCommonSubType(t, strippedType) and - value = false - ) -} - -private class Overflowable extends UnaryOperation { - Overflowable() { - not this instanceof UnaryBitwiseOperation and - this.getType() instanceof IntegralType - } -} - -/** A control flow element that is inside a `try` block. */ -private class TriedControlFlowElement extends ControlFlowElement { - TriedControlFlowElement() { - this = any(TryStmt try).getATriedElement() and - not this instanceof NonReturningCall - } - - /** - * Gets an exception class that is potentially thrown by this element, if any. - */ - Class getAThrownException() { - this instanceof Overflowable and - result instanceof SystemOverflowExceptionClass - or - this.(CastExpr).getType() instanceof IntegralType and - result instanceof SystemOverflowExceptionClass - or - invalidCastCandidate(this) and - result instanceof SystemInvalidCastExceptionClass - or - this instanceof Call and - result instanceof SystemExceptionClass - or - this = - any(MemberAccess ma | - not ma.isConditional() and - ma.getQualifier() = any(Expr e | not e instanceof TypeAccess) and - result instanceof SystemNullReferenceExceptionClass - ) - or - this instanceof DelegateCreation and - result instanceof SystemOutOfMemoryExceptionClass - or - this instanceof ArrayCreation and - result instanceof SystemOutOfMemoryExceptionClass - or - this = - any(AddOperation ae | - ae.getType() instanceof StringType and - result instanceof SystemOutOfMemoryExceptionClass - or - ae.getType() instanceof IntegralType and - result instanceof SystemOverflowExceptionClass - ) - or - this = - any(SubOperation se | - se.getType() instanceof IntegralType and - result instanceof SystemOverflowExceptionClass - ) - or - this = - any(MulOperation me | - me.getType() instanceof IntegralType and - result instanceof SystemOverflowExceptionClass - ) - or - this = - any(DivOperation de | - not de.getDenominator().getValue().toFloat() != 0 and - result instanceof SystemDivideByZeroExceptionClass - ) - or - this instanceof RemOperation and - result instanceof SystemDivideByZeroExceptionClass - or - this instanceof DynamicExpr and - result instanceof SystemExceptionClass - } -} - -pragma[nomagic] -private ValueOrRefType getACastExprBaseType(CastExpr ce) { - result = ce.getType().(ValueOrRefType).getABaseType() - or - result = getACastExprBaseType(ce).getABaseType() -} - -pragma[nomagic] -private predicate invalidCastCandidate(CastExpr ce) { - ce.getExpr().getType() = getACastExprBaseType(ce) -} - -/** Gets a valid completion when argument `i` fails in assertion `a`. */ -Completion assertionCompletion(Assertion a, int i) { - exists(AssertMethod am | am = a.getAssertMethod() | - if am.getAssertionFailure(i).isExit() - then result = TExitCompletion() - else - exists(Class c | - am.getAssertionFailure(i).isException(c) and - result = TThrowCompletion(c) - ) - ) -} - -/** - * Holds if a normal completion of `e` must be a Boolean completion. - */ -private predicate mustHaveBooleanCompletion(Expr e) { - inBooleanContext(e) and - not e instanceof NonReturningCall -} - -/** - * Holds if `e` is used in a Boolean context. That is, whether the value - * that `e` evaluates to determines a true/false branch successor. - */ -private predicate inBooleanContext(Expr e) { - e = any(IfStmt is).getCondition() - or - e = any(LoopStmt ls).getCondition() - or - e = any(Case c).getCondition() - or - e = any(SpecificCatchClause scc).getFilterClause() - or - e = any(LogicalNotExpr lne | inBooleanContext(lne)).getAnOperand() - or - exists(LogicalAndExpr lae | - lae.getLeftOperand() = e - or - inBooleanContext(lae) and - lae.getRightOperand() = e - ) - or - exists(LogicalOrExpr lae | - lae.getLeftOperand() = e - or - inBooleanContext(lae) and - lae.getRightOperand() = e - ) - or - exists(ConditionalExpr ce | - ce.getCondition() = e - or - inBooleanContext(ce) and - e in [ce.getThen(), ce.getElse()] - ) - or - e = any(NullCoalescingOperation nce | inBooleanContext(nce)).getAnOperand() - or - e = any(SwitchExpr se | inBooleanContext(se)).getACase() - or - e = any(SwitchCaseExpr sce | inBooleanContext(sce)).getBody() -} - -/** - * Holds if a normal completion of `e` must be a nullness completion. - */ -private predicate mustHaveNullnessCompletion(Expr e) { - inNullnessContext(e) and - not e instanceof NonReturningCall -} - -/** - * Holds if `e` is used in a nullness context. That is, whether the value - * that `e` evaluates to determines a `null`/non-`null` branch successor. - */ -private predicate inNullnessContext(Expr e) { - e = any(NullCoalescingOperation nce).getLeftOperand() - or - exists(QualifiableExpr qe | qe.isConditional() | e = qe.getChildExpr(-1)) - or - exists(ConditionalExpr ce | inNullnessContext(ce) | (e = ce.getThen() or e = ce.getElse())) - or - exists(NullCoalescingOperation nce | inNullnessContext(nce) | e = nce.getRightOperand()) - or - e = any(SwitchExpr se | inNullnessContext(se)).getACase() - or - e = any(SwitchCaseExpr sce | inNullnessContext(sce)).getBody() -} - -/** - * Holds if `pe` is the pattern inside case `c`, belonging to `switch` `s`, that - * has the matching completion. - */ -predicate switchMatching(Switch s, Case c, PatternExpr pe) { - s.getACase() = c and - pe = c.getPattern() -} - -/** - * Holds if a normal completion of `cfe` must be a matching completion. Thats is, - * whether `cfe` determines a match in a `switch/if` statement or `catch` clause. - */ -private predicate mustHaveMatchingCompletion(ControlFlowElement cfe) { - switchMatching(_, _, cfe) - or - cfe instanceof SpecificCatchClause - or - cfe = any(IsExpr ie | inBooleanContext(ie)).getPattern() - or - cfe = any(RecursivePatternExpr rpe).getAChildExpr() - or - cfe = any(PositionalPatternExpr ppe).getPattern(_) - or - cfe = any(PropertyPatternExpr ppe).getPattern(_) - or - cfe = any(UnaryPatternExpr upe | mustHaveMatchingCompletion(upe)).getPattern() - or - cfe = any(BinaryPatternExpr bpe).getAnOperand() -} - -/** - * Holds if `pe` must have a matching completion, and `e` is the expression - * that is being matched. - */ -private predicate mustHaveMatchingCompletion(Expr e, PatternExpr pe) { - exists(Switch s | - switchMatching(s, _, pe) and - e = s.getExpr() - ) - or - e = any(IsExpr ie | pe = ie.getPattern()).getExpr() and - mustHaveMatchingCompletion(pe) - or - exists(PatternExpr mid | mustHaveMatchingCompletion(e, mid) | - pe = mid.(UnaryPatternExpr).getPattern() - or - pe = mid.(RecursivePatternExpr).getAChildExpr() - or - pe = mid.(BinaryPatternExpr).getAnOperand() - ) -} - -/** - * Holds if `cfe` is the element inside foreach statement `fs` that has the emptiness - * completion. - */ -predicate foreachEmptiness(ForeachStmt fs, ControlFlowElement cfe) { - cfe = fs // use `foreach` statement itself to represent the emptiness test -} - -/** - * Holds if a normal completion of `cfe` must be an emptiness completion. Thats is, - * whether `cfe` determines whether to execute the body of a `foreach` statement. - */ -private predicate mustHaveEmptinessCompletion(ControlFlowElement cfe) { foreachEmptiness(_, cfe) } - -/** - * A completion that represents normal evaluation of a statement or an - * expression. - */ -abstract class NormalCompletion extends Completion { } - -abstract private class NonNestedNormalCompletion extends NormalCompletion { } - -/** A simple (normal) completion. */ -class SimpleCompletion extends NonNestedNormalCompletion, TSimpleCompletion { - override DirectSuccessor getAMatchingSuccessorType() { any() } - - override string toString() { result = "normal" } -} - -/** - * A completion that represents evaluation of an expression, whose value determines - * the successor. Either a Boolean completion (`BooleanCompletion`), a nullness - * completion (`NullnessCompletion`), a matching completion (`MatchingCompletion`), - * or an emptiness completion (`EmptinessCompletion`). - */ -abstract class ConditionalCompletion extends NonNestedNormalCompletion { - /** Gets the Boolean value of this completion. */ - abstract boolean getValue(); - - /** Gets the dual completion. */ - abstract ConditionalCompletion getDual(); -} - -/** - * A completion that represents evaluation of an expression - * with a Boolean value. - */ -class BooleanCompletion extends ConditionalCompletion { - private boolean value; - - BooleanCompletion() { this = TBooleanCompletion(value) } - - override boolean getValue() { result = value } - - override BooleanCompletion getDual() { result = TBooleanCompletion(value.booleanNot()) } - - override BooleanSuccessor getAMatchingSuccessorType() { result.getValue() = value } - - override string toString() { result = value.toString() } -} - -/** A Boolean `true` completion. */ -class TrueCompletion extends BooleanCompletion { - TrueCompletion() { this.getValue() = true } -} - -/** A Boolean `false` completion. */ -class FalseCompletion extends BooleanCompletion { - FalseCompletion() { this.getValue() = false } -} - -/** - * A completion that represents evaluation of an expression that is either - * `null` or non-`null`. - */ -class NullnessCompletion extends ConditionalCompletion, TNullnessCompletion { - private boolean value; - - NullnessCompletion() { this = TNullnessCompletion(value) } - - /** Holds if the last sub expression of this expression evaluates to `null`. */ - predicate isNull() { value = true } - - /** Holds if the last sub expression of this expression evaluates to a non-`null` value. */ - predicate isNonNull() { value = false } - - override boolean getValue() { result = value } - - override NullnessCompletion getDual() { result = TNullnessCompletion(value.booleanNot()) } - - override NullnessSuccessor getAMatchingSuccessorType() { result.getValue() = value } - - override string toString() { if this.isNull() then result = "null" else result = "non-null" } -} - -/** - * A completion that represents matching, for example a `case` statement in a - * `switch` statement. - */ -class MatchingCompletion extends ConditionalCompletion, TMatchingCompletion { - private boolean value; - - MatchingCompletion() { this = TMatchingCompletion(value) } - - /** Holds if there is a match. */ - predicate isMatch() { value = true } - - /** Holds if there is not a match. */ - predicate isNonMatch() { value = false } - - override boolean getValue() { result = value } - - override MatchingCompletion getDual() { result = TMatchingCompletion(value.booleanNot()) } - - override MatchingSuccessor getAMatchingSuccessorType() { result.getValue() = value } - - override string toString() { if this.isMatch() then result = "match" else result = "no-match" } -} - -/** - * A completion that represents evaluation of an emptiness test, for example - * a test in a `foreach` statement. - */ -class EmptinessCompletion extends ConditionalCompletion, TEmptinessCompletion { - private boolean value; - - EmptinessCompletion() { this = TEmptinessCompletion(value) } - - /** Holds if the emptiness test evaluates to `true`. */ - predicate isEmpty() { value = true } - - override boolean getValue() { result = value } - - override EmptinessCompletion getDual() { result = TEmptinessCompletion(value.booleanNot()) } - - override EmptinessSuccessor getAMatchingSuccessorType() { result.getValue() = value } - - override string toString() { if this.isEmpty() then result = "empty" else result = "non-empty" } -} - -/** - * A nested completion. For example, in - * - * ```csharp - * void M(bool b1, bool b2) - * { - * try - * { - * if (b1) - * throw new Exception(); - * } - * finally - * { - * if (b2) - * System.Console.WriteLine("M called"); - * } - * } - * ``` - * - * `b2` has an outer throw completion (inherited from `throw new Exception`) - * and an inner `false` completion. `b2` also has a (normal) `true` completion. - */ -class NestedCompletion extends Completion, TNestedCompletion { - Completion inner; - Completion outer; - int nestLevel; - - NestedCompletion() { this = TNestedCompletion(inner, outer, nestLevel) } - - /** Gets a completion that is compatible with the inner completion. */ - Completion getAnInnerCompatibleCompletion() { - result.getOuterCompletion() = this.getInnerCompletion() - } - - /** Gets the level of this nested completion. */ - int getNestLevel() { result = nestLevel } - - override Completion getInnerCompletion() { result = inner } - - override Completion getOuterCompletion() { result = outer } - - override SuccessorType getAMatchingSuccessorType() { none() } - - override string toString() { result = outer + " [" + inner + "] (" + nestLevel + ")" } -} - -/** - * A nested completion for a loop that exists with a `break`. - * - * This completion is added for technical reasons only: when a loop - * body can complete with a break completion, the loop itself completes - * normally. However, if we choose `TSimpleCompletion` as the completion - * of the loop, we lose the information that the last element actually - * completed with a break, meaning that the control flow edge out of the - * breaking node cannot be marked with a `break` label. - * - * Example: - * - * ```csharp - * while (...) { - * ... - * break; - * } - * return; - * ``` - * - * The `break` on line 3 completes with a `TBreakCompletion`, therefore - * the `while` loop can complete with a `NestedBreakCompletion`, so we - * get an edge `break --break--> return`. (If we instead used a - * `TSimpleCompletion`, we would get a less precise edge - * `break --normal--> return`.) - */ -class NestedBreakCompletion extends NormalCompletion, NestedCompletion { - NestedBreakCompletion() { - inner = TBreakCompletion() and - outer instanceof NonNestedNormalCompletion - } - - override BreakCompletion getInnerCompletion() { result = inner } - - override NonNestedNormalCompletion getOuterCompletion() { result = outer } - - override Completion getAnInnerCompatibleCompletion() { - result = inner and - outer = TSimpleCompletion() - or - result = TNestedCompletion(outer, inner, _) - } - - override SuccessorType getAMatchingSuccessorType() { - outer instanceof SimpleCompletion and - result instanceof BreakSuccessor - or - result = outer.(ConditionalCompletion).getAMatchingSuccessorType() - } -} - -/** - * A completion that represents evaluation of a statement or an - * expression resulting in a return from a callable. - */ -class ReturnCompletion extends Completion { - ReturnCompletion() { - this = TReturnCompletion() or - this = TNestedCompletion(_, TReturnCompletion(), _) - } - - override ReturnSuccessor getAMatchingSuccessorType() { any() } - - override string toString() { - // `NestedCompletion` defines `toString()` for the other case - this = TReturnCompletion() and result = "return" - } -} - -/** - * A completion that represents evaluation of a statement or an - * expression resulting in a break (in a loop or in a `switch` - * statement). - */ -class BreakCompletion extends Completion { - BreakCompletion() { - this = TBreakCompletion() or - this = TNestedCompletion(_, TBreakCompletion(), _) - } - - override BreakSuccessor getAMatchingSuccessorType() { any() } - - override string toString() { - // `NestedCompletion` defines `toString()` for the other case - this = TBreakCompletion() and result = "break" - } -} - -/** - * A completion that represents evaluation of a statement or an - * expression resulting in a loop continuation (a `continue` - * statement). - */ -class ContinueCompletion extends Completion { - ContinueCompletion() { - this = TContinueCompletion() or - this = TNestedCompletion(_, TContinueCompletion(), _) - } - - override ContinueSuccessor getAMatchingSuccessorType() { any() } - - override string toString() { - // `NestedCompletion` defines `toString()` for the other case - this = TContinueCompletion() and result = "continue" - } -} - -/** - * A completion that represents evaluation of a statement or an - * expression resulting in a `goto` jump. - */ -class GotoCompletion extends Completion { - private string label; - - GotoCompletion() { - this = TGotoCompletion(label) or - this = TNestedCompletion(_, TGotoCompletion(label), _) - } - - /** Gets the label of the `goto` completion. */ - string getLabel() { result = label } - - override GotoSuccessor getAMatchingSuccessorType() { any() } - - override string toString() { - // `NestedCompletion` defines `toString()` for the other case - this = TGotoCompletion(label) and result = "goto(" + label + ")" - } -} - -/** - * A completion that represents evaluation of a statement or an - * expression resulting in a thrown exception. - */ -class ThrowCompletion extends Completion { - private ExceptionClass ec; - - ThrowCompletion() { - this = TThrowCompletion(ec) or - this = TNestedCompletion(_, TThrowCompletion(ec), _) - } - - /** Gets the type of the exception being thrown. */ - ExceptionClass getExceptionClass() { result = ec } - - override ExceptionSuccessor getAMatchingSuccessorType() { any() } - - override string toString() { - // `NestedCompletion` defines `toString()` for the other case - this = TThrowCompletion(ec) and result = "throw(" + ec + ")" - } -} - -/** - * A completion that represents evaluation of a statement or an - * expression resulting in a program exit, for example - * `System.Environment.Exit(0)`. - * - * An exit completion is different from a `return` completion; the former - * exits the whole application, and exists inside `try` statements skip - * `finally` blocks. - */ -class ExitCompletion extends Completion { - ExitCompletion() { - this = TExitCompletion() or - this = TNestedCompletion(_, TExitCompletion(), _) - } - - override ExitSuccessor getAMatchingSuccessorType() { any() } - - override string toString() { - // `NestedCompletion` defines `toString()` for the other case - this = TExitCompletion() and result = "exit" - } -} diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/ControlFlowGraph.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/internal/ControlFlowGraph.qll new file mode 100644 index 000000000000..ca71e213e327 --- /dev/null +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/internal/ControlFlowGraph.qll @@ -0,0 +1,282 @@ +import csharp +import codeql.controlflow.ControlFlowGraph + +module Initializers { + private import semmle.code.csharp.ExprOrStmtParent as ExprOrStmtParent + + /** + * The `expr_parent_top_level_adjusted()` relation restricted to exclude relations + * between properties and their getters' expression bodies in properties such as + * `int P => 0`. + * + * This is in order to only associate the expression body with one CFG scope, namely + * the getter (and not the declaration itself). + */ + private predicate expr_parent_top_level_adjusted2( + Expr child, int i, @top_level_exprorstmt_parent parent + ) { + ExprOrStmtParent::expr_parent_top_level_adjusted(child, i, parent) and + not exists(Getter g | + g.getDeclaration() = parent and + i = 0 + ) + } + + /** + * Holds if `init` is a static member initializer and `staticCtor` is the + * static constructor in the same declaring type. Hence, `staticCtor` can be + * considered to execute `init` prior to the execution of its body. + */ + predicate staticMemberInitializer(Constructor staticCtor, Expr init) { + exists(Assignable a | + a.(Modifiable).isStatic() and + expr_parent_top_level_adjusted2(init, _, a) and + a.getDeclaringType() = staticCtor.getDeclaringType() and + staticCtor.isStatic() + ) + } + + /** + * Gets the `i`th static member initializer expression for static constructor `staticCtor`. + */ + Expr initializedStaticMemberOrder(Constructor staticCtor, int i) { + result = + rank[i + 1](Expr init, Location l, string filepath, int startline, int startcolumn | + staticMemberInitializer(staticCtor, init) and + l = init.getLocation() and + l.hasLocationInfo(filepath, startline, startcolumn, _, _) + | + init order by startline, startcolumn, filepath + ) + } + + /** + * Gets the `i`th member initializer expression for object initializer method `obinit`. + */ + AssignExpr initializedInstanceMemberOrder(ObjectInitMethod obinit, int i) { + result = + rank[i + 1](AssignExpr ae0, Location l, string filepath, int startline, int startcolumn | + obinit.initializes(ae0) and + l = ae0.getLocation() and + l.hasLocationInfo(filepath, startline, startcolumn, _, _) + | + ae0 order by startline, startcolumn, filepath + ) + } +} + +/** + * Provides an implementation of the AST signature for C#. + */ +module Ast implements AstSig { + private import csharp as CS + + class AstNode = ControlFlowElementOrCallable; + + additional predicate skipControlFlow(AstNode e) { + e instanceof TypeAccess and + not e instanceof TypeAccessPatternExpr + or + not e.getFile().fromSource() + } + + private AstNode getExprChild0(Expr e, int i) { + not e instanceof NameOfExpr and + not e instanceof AnonymousFunctionExpr and + not skipControlFlow(result) and + result = e.getChild(i) + } + + private AstNode getStmtChild0(Stmt s, int i) { + not s instanceof FixedStmt and + not s instanceof UsingBlockStmt and + result = s.getChild(i) + or + s = + any(FixedStmt fs | + result = fs.getVariableDeclExpr(i) + or + result = fs.getBody() and + i = max(int j | exists(fs.getVariableDeclExpr(j))) + 1 + ) + or + s = + any(UsingBlockStmt us | + result = us.getExpr() and + i = 0 + or + result = us.getVariableDeclExpr(i) + or + result = us.getBody() and + i = max([1, count(us.getVariableDeclExpr(_))]) + ) + } + + AstNode getChild(AstNode n, int index) { + result = getStmtChild0(n, index) + or + result = getExprChild0(n, index) + } + + private AstNode getParent(AstNode n) { n = getChild(result, _) } + + Callable getEnclosingCallable(AstNode node) { + result = node.(ControlFlowElement).getEnclosingCallable() + or + result.(ObjectInitMethod).initializes(getParent*(node)) + or + Initializers::staticMemberInitializer(result, getParent*(node)) + or + result = node.(Parameter).getCallable() + or + not skipControlFlow(node) and + getParent*(node) = any(Parameter p | result = p.getCallable()).getDefaultValue() + } + + class Callable extends CS::Callable { + Callable() { this.isUnboundDeclaration() } + } + + AstNode callableGetBody(Callable c) { + not skipControlFlow(result) and + result = c.getBody() + } + + final private class ParameterFinal = CS::Parameter; + + class Parameter extends ParameterFinal { + Expr getDefaultValue() { + // Avoid combinatorial explosions for callables with multiple bodies + result = unique( | | super.getDefaultValue()) + } + } + + Parameter callableGetParameter(Callable c, int i) { + not skipControlFlow(result) and + result = c.getParameter(i) + } + + class Stmt = CS::Stmt; + + class Expr = CS::Expr; + + class BlockStmt = CS::BlockStmt; + + class ExprStmt = CS::ExprStmt; + + class IfStmt = CS::IfStmt; + + class LoopStmt = CS::LoopStmt; + + class WhileStmt = CS::WhileStmt; + + class DoStmt = CS::DoStmt; + + final private class FinalForStmt = CS::ForStmt; + + class ForStmt extends FinalForStmt { + Expr getInit(int index) { result = this.getInitializer(index) } + } + + final private class FinalForeachStmt = CS::ForeachStmt; + + class ForeachStmt extends FinalForeachStmt { + Expr getVariable() { + result = this.getVariableDeclExpr() or result = this.getVariableDeclTuple() + } + + Expr getCollection() { result = this.getIterableExpr() } + } + + class BreakStmt = CS::BreakStmt; + + class ContinueStmt = CS::ContinueStmt; + + class GotoStmt = CS::GotoStmt; + + class ReturnStmt = CS::ReturnStmt; + + class Throw = CS::ThrowElement; + + final private class FinalTryStmt = CS::TryStmt; + + class TryStmt extends FinalTryStmt { + Stmt getBody() { result = this.getBlock() } + + CatchClause getCatch(int index) { result = this.getCatchClause(index) } + + Stmt getFinally() { result = super.getFinally() } + } + + final private class FinalCatchClause = CS::CatchClause; + + class CatchClause extends FinalCatchClause { + AstNode getVariable() { result = this.(CS::SpecificCatchClause).getVariableDeclExpr() } + + Expr getCondition() { result = this.getFilterClause() } + + Stmt getBody() { result = this.getBlock() } + } + + final private class FinalSwitch = CS::Switch; + + class Switch extends FinalSwitch { + Case getCase(int index) { result = super.getCase(index) } + + Stmt getStmt(int index) { result = this.(CS::SwitchStmt).getStmt(index) } + } + + final private class FinalCase = CS::Case; + + class Case extends FinalCase { + AstNode getPattern(int index) { result = this.getPattern() and index = 0 } + + Expr getGuard() { result = this.getCondition() } + + AstNode getBody() { result = super.getBody() } + } + + class DefaultCase extends Case instanceof CS::DefaultCase { } + + class ConditionalExpr = CS::ConditionalExpr; + + class BinaryExpr = CS::BinaryOperation; + + class LogicalAndExpr = CS::LogicalAndExpr; + + class LogicalOrExpr = CS::LogicalOrExpr; + + class NullCoalescingExpr = CS::NullCoalescingExpr; + + class UnaryExpr = CS::UnaryOperation; + + class LogicalNotExpr = CS::LogicalNotExpr; + + class Assignment = CS::Assignment; + + class AssignExpr = CS::AssignExpr; + + class CompoundAssignment = CS::AssignOperation; + + class AssignLogicalAndExpr extends CompoundAssignment { + AssignLogicalAndExpr() { none() } + } + + class AssignLogicalOrExpr extends CompoundAssignment { + AssignLogicalOrExpr() { none() } + } + + class AssignNullCoalescingExpr = CS::AssignCoalesceExpr; + + final private class FinalBoolLiteral = CS::BoolLiteral; + + class BooleanLiteral extends FinalBoolLiteral { + boolean getValue() { result = this.getBoolValue() } + } + + final private class FinalIsExpr = CS::IsExpr; + + class PatternMatchExpr extends FinalIsExpr { + AstNode getPattern() { result = super.getPattern() } + } +} diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/ControlFlowGraphImpl.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/internal/ControlFlowGraphImpl.qll deleted file mode 100644 index e29e92d26eba..000000000000 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/ControlFlowGraphImpl.qll +++ /dev/null @@ -1,1831 +0,0 @@ -/** - * Provides an implementation for constructing control-flow graphs (CFGs) from - * abstract syntax trees (ASTs), using the shared library from `codeql.controlflow.Cfg`. - */ - -import csharp -private import codeql.controlflow.Cfg as CfgShared -private import Completion -private import semmle.code.csharp.ExprOrStmtParent -private import semmle.code.csharp.commons.Compilation - -private module Initializers { - /** - * Gets the `i`th member initializer expression for object initializer method `obinit` - * in compilation `comp`. - */ - AssignExpr initializedInstanceMemberOrder(ObjectInitMethod obinit, CompilationExt comp, int i) { - obinit.initializes(result) and - result = - rank[i + 1](AssignExpr ae0, Location l | - obinit.initializes(ae0) and - l = ae0.getLocation() and - getCompilation(l.getFile()) = comp - | - ae0 order by l.getStartLine(), l.getStartColumn(), l.getFile().getAbsolutePath() - ) - } - - /** - * Gets the last member initializer expression for object initializer method `obinit` - * in compilation `comp`. - */ - AssignExpr lastInitializer(ObjectInitMethod obinit, CompilationExt comp) { - exists(int i | - result = initializedInstanceMemberOrder(obinit, comp, i) and - not exists(initializedInstanceMemberOrder(obinit, comp, i + 1)) - ) - } -} - -/** An element that defines a new CFG scope. */ -class CfgScope extends Element, @top_level_exprorstmt_parent { - CfgScope() { - this.getFile().fromSource() and - ( - this = - any(Callable c | - c.(Constructor).hasInitializer() - or - c.(ObjectInitMethod).initializes(_) - or - c.hasBody() - ) - or - // For now, static initializer values have their own scope. Eventually, they - // should be treated like instance initializers. - this.(Assignable).(Modifiable).isStatic() and - expr_parent_top_level_adjusted2(_, _, this) - ) - } -} - -private class TAstNode = @callable or @control_flow_element; - -pragma[nomagic] -private predicate astNode(Element e) { - e = any(@top_level_exprorstmt_parent p | not p instanceof Attribute) - or - exists(Element parent | - astNode(parent) and - e = parent.getAChild() - ) -} - -/** An AST node. */ -class AstNode extends Element, TAstNode { - AstNode() { astNode(this) } - - int getId() { idOf(this, result) } -} - -private predicate id(AstNode x, AstNode y) { x = y } - -private predicate idOf(AstNode x, int y) = equivalenceRelation(id/2)(x, y) - -private module CfgInput implements CfgShared::InputSig { - private import ControlFlowGraphImpl as Impl - private import Completion as Comp - private import SuccessorType as ST - private import semmle.code.csharp.Caching - - class AstNode = Impl::AstNode; - - class Completion = Comp::Completion; - - predicate completionIsNormal(Completion c) { c instanceof Comp::NormalCompletion } - - predicate completionIsSimple(Completion c) { c instanceof Comp::SimpleCompletion } - - predicate completionIsValidFor(Completion c, AstNode e) { c.isValidFor(e) } - - class CfgScope = Impl::CfgScope; - - CfgScope getCfgScope(AstNode n) { - Stages::ControlFlowStage::forceCachingInSameStage() and - result = n.(ControlFlowElement).getEnclosingCallable() - } - - predicate scopeFirst(CfgScope scope, AstNode first) { Impl::scopeFirst(scope, first) } - - predicate scopeLast(CfgScope scope, AstNode last, Completion c) { - Impl::scopeLast(scope, last, c) - } - - private class SuccessorType = ST::SuccessorType; - - SuccessorType getAMatchingSuccessorType(Completion c) { result = c.getAMatchingSuccessorType() } - - int idOfAstNode(AstNode node) { result = node.getId() } - - int idOfCfgScope(CfgScope node) { result = idOfAstNode(node) } -} - -private module CfgSplittingInput implements CfgShared::SplittingInputSig { - private import Splitting as S - - class SplitKindBase = S::TSplitKind; - - class Split = S::Split; -} - -private module ConditionalCompletionSplittingInput implements - CfgShared::ConditionalCompletionSplittingInputSig -{ - import Splitting::ConditionalCompletionSplitting::ConditionalCompletionSplittingInput -} - -import CfgShared::MakeWithSplitting - -/** - * A compilation. - * - * Unlike the standard `Compilation` class, this class also supports buildless - * extraction. - */ -newtype CompilationExt = - TCompilation(Compilation c) { not extractionIsStandalone() } or - TBuildless() { extractionIsStandalone() } - -/** Gets the compilation that source file `f` belongs to. */ -CompilationExt getCompilation(File f) { - exists(Compilation c | - f = c.getAFileCompiled() and - result = TCompilation(c) - ) - or - result = TBuildless() -} - -/** - * The `expr_parent_top_level_adjusted()` relation restricted to exclude relations - * between properties and their getters' expression bodies in properties such as - * `int P => 0`. - * - * This is in order to only associate the expression body with one CFG scope, namely - * the getter (and not the declaration itself). - */ -private predicate expr_parent_top_level_adjusted2( - Expr child, int i, @top_level_exprorstmt_parent parent -) { - expr_parent_top_level_adjusted(child, i, parent) and - not exists(Getter g | - g.getDeclaration() = parent and - i = 0 - ) -} - -/** Holds if `first` is first executed when entering `scope`. */ -predicate scopeFirst(CfgScope scope, AstNode first) { - scope = - any(Callable c | - if exists(c.(Constructor).getObjectInitializerCall()) - then first(c.(Constructor).getObjectInitializerCall(), first) - else - if exists(c.(Constructor).getInitializer()) - then first(c.(Constructor).getInitializer(), first) - else first(c.getBody(), first) - ) - or - first(Initializers::initializedInstanceMemberOrder(scope, _, 0), first) - or - expr_parent_top_level_adjusted2(any(Expr e | first(e, first)), _, scope) and - not scope instanceof Callable -} - -/** Holds if `scope` is exited when `last` finishes with completion `c`. */ -predicate scopeLast(CfgScope scope, AstNode last, Completion c) { - scope = - any(Callable callable | - last(callable.getBody(), last, c) and - not c instanceof GotoCompletion - or - last(callable.(Constructor).getInitializer(), last, c) and - not callable.hasBody() - or - // This is only relevant in the context of compilation errors, since - // normally the existence of an object initializer call implies the - // existence of an initializer. - last(callable.(Constructor).getObjectInitializerCall(), last, c) and - not callable.(Constructor).hasInitializer() and - not callable.hasBody() - ) - or - last(Initializers::lastInitializer(scope, _), last, c) - or - expr_parent_top_level_adjusted2(any(Expr e | last(e, last, c)), _, scope) and - not scope instanceof Callable -} - -private class ObjectInitTree extends ControlFlowTree instanceof ObjectInitMethod { - final override predicate propagatesAbnormal(AstNode child) { none() } - - final override predicate first(AstNode first) { none() } - - final override predicate last(AstNode last, Completion c) { none() } - - final override predicate succ(AstNode pred, AstNode succ, Completion c) { - exists(CompilationExt comp, int i | - // Flow from one member initializer to the next - last(Initializers::initializedInstanceMemberOrder(this, comp, i), pred, c) and - c instanceof NormalCompletion and - first(Initializers::initializedInstanceMemberOrder(this, comp, i + 1), succ) - ) - } -} - -private class ConstructorTree extends ControlFlowTree instanceof Constructor { - final override predicate propagatesAbnormal(AstNode child) { none() } - - final override predicate first(AstNode first) { none() } - - final override predicate last(AstNode last, Completion c) { none() } - - /** Gets the body of this constructor belonging to compilation `comp`. */ - pragma[noinline] - AstNode getBody(CompilationExt comp) { - result = super.getBody() and - comp = getCompilation(result.getFile()) - } - - pragma[noinline] - private MethodCall getObjectInitializerCall(CompilationExt comp) { - result = super.getObjectInitializerCall() and - comp = getCompilation(result.getFile()) - } - - pragma[noinline] - private ConstructorInitializer getInitializer(CompilationExt comp) { - result = super.getInitializer() and - comp = getCompilation(result.getFile()) - } - - final override predicate succ(AstNode pred, AstNode succ, Completion c) { - exists(CompilationExt comp | - last(this.getObjectInitializerCall(comp), pred, c) and - c instanceof NormalCompletion - | - first(this.getInitializer(comp), succ) - or - // This is only relevant in the context of compilation errors, since - // normally the existence of an object initializer call implies the - // existence of an initializer. - not exists(this.getInitializer(comp)) and - first(this.getBody(comp), succ) - ) - } -} - -cached -private module SwithStmtInternal { - // Reorders default to be last if needed - cached - CaseStmt getCase(SwitchStmt ss, int i) { - exists(int index, int rankIndex | - caseIndex(ss, result, index) and - rankIndex = i + 1 and - index = rank[rankIndex](int j, CaseStmt cs | caseIndex(ss, cs, j) | j) - ) - } - - /** Implicitly reorder case statements to put the default case last if needed. */ - private predicate caseIndex(SwitchStmt ss, CaseStmt case, int index) { - exists(int i | case = ss.getChildStmt(i) | - if case instanceof DefaultCase - then index = max(int j | exists(ss.getChildStmt(j))) + 1 - else index = i - ) - } - - /** - * Gets the `i`th statement in the body of this `switch` statement. - * - * Example: - * - * ```csharp - * switch (x) { - * case "abc": // i = 0 - * return 0; - * case int i when i > 0: // i = 1 - * return 1; - * case string s: // i = 2 - * Console.WriteLine(s); - * return 2; // i = 3 - * default: // i = 4 - * return 3; // i = 5 - * } - * ``` - * - * Note that each non-`default` case is a labeled statement, so the statement - * that follows is a child of the labeled statement, and not the `switch` block. - */ - cached - Stmt getStmt(SwitchStmt ss, int i) { - exists(int index, int rankIndex | - result = ss.getChildStmt(index) and - rankIndex = i + 1 and - index = - rank[rankIndex](int j, Stmt s | - // `getChild` includes both labeled statements and the targeted - // statements of labeled statement as separate children, but we - // only want the labeled statement - s = getLabeledStmt(ss, j) - | - j - ) - ) - } - - private Stmt getLabeledStmt(SwitchStmt ss, int i) { - result = ss.getChildStmt(i) and - not result = caseStmtGetBody(_) - } -} - -private ControlFlowElement caseGetBody(Case c) { - result = c.getBody() or result = caseStmtGetBody(c) -} - -private ControlFlowElement caseStmtGetBody(CaseStmt c) { - exists(int i, Stmt next | - c = c.getParent().getChild(i) and - next = c.getParent().getChild(i + 1) - | - result = next and - not result instanceof CaseStmt - or - result = caseStmtGetBody(next) - ) -} - -// Reorders default to be last if needed -private Case switchGetCase(Switch s, int i) { - result = s.(SwitchExpr).getCase(i) or result = SwithStmtInternal::getCase(s, i) -} - -abstract private class SwitchTree extends ControlFlowTree instanceof Switch { - override predicate propagatesAbnormal(AstNode child) { child = super.getExpr() } - - override predicate succ(AstNode pred, AstNode succ, Completion c) { - // Flow from last element of switch expression to first element of first case - last(super.getExpr(), pred, c) and - c instanceof NormalCompletion and - first(switchGetCase(this, 0), succ) - or - // Flow from last element of case pattern to next case - exists(Case case, int i | case = switchGetCase(this, i) | - last(case.getPattern(), pred, c) and - c.(MatchingCompletion).isNonMatch() and - first(switchGetCase(this, i + 1), succ) - ) - or - // Flow from last element of condition to next case - exists(Case case, int i | case = switchGetCase(this, i) | - last(case.getCondition(), pred, c) and - c instanceof FalseCompletion and - first(switchGetCase(this, i + 1), succ) - ) - } -} - -abstract private class CaseTree extends ControlFlowTree instanceof Case { - final override predicate propagatesAbnormal(AstNode child) { - child in [super.getPattern().(ControlFlowElement), super.getCondition(), caseGetBody(this)] - } - - override predicate succ(AstNode pred, AstNode succ, Completion c) { - last(super.getPattern(), pred, c) and - c.(MatchingCompletion).isMatch() and - ( - if exists(super.getCondition()) - then - // Flow from the last element of pattern to the condition - first(super.getCondition(), succ) - else - // Flow from last element of pattern to first element of body - first(caseGetBody(this), succ) - ) - or - // Flow from last element of condition to first element of body - last(super.getCondition(), pred, c) and - c instanceof TrueCompletion and - first(caseGetBody(this), succ) - } -} - -module Expressions { - /** An expression that should not be included in the control flow graph. */ - abstract private class NoNodeExpr extends Expr { } - - private class SimpleNoNodeExpr extends NoNodeExpr { - SimpleNoNodeExpr() { - this instanceof TypeAccess and - not this instanceof TypeAccessPatternExpr - } - } - - /** A write access that is not also a read access. */ - private class WriteAccess extends AssignableWrite { - WriteAccess() { - // `x++` is both a read and write access - not this instanceof AssignableRead - } - } - - private class WriteAccessNoNodeExpr extends WriteAccess, NoNodeExpr { - WriteAccessNoNodeExpr() { - // For example a write to a static field, `Foo.Bar = 0`. - forall(Expr e | e = this.getAChildExpr() | e instanceof NoNodeExpr) - } - } - - private AstNode getExprChild0(Expr e, int i) { - not e instanceof NameOfExpr and - not e instanceof QualifiableExpr and - not e instanceof AnonymousFunctionExpr and - result = e.getChild(i) - or - e = any(ExtensionMethodCall emc | result = emc.getArgument(i)) - or - e = - any(QualifiableExpr qe | - not qe instanceof ExtensionMethodCall and - result = qe.getChild(i) - ) - } - - private AstNode getExprChild(Expr e, int i) { - result = - rank[i + 1](AstNode cfe, int j | - cfe = getExprChild0(e, j) and - not cfe instanceof NoNodeExpr - | - cfe order by j - ) - } - - private AstNode getLastExprChild(Expr e) { - exists(int last | - result = getExprChild(e, last) and - not exists(getExprChild(e, last + 1)) - ) - } - - private class StandardExpr extends StandardPostOrderTree instanceof Expr { - StandardExpr() { - // The following expressions need special treatment - not this instanceof LogicalNotExpr and - not this instanceof LogicalAndExpr and - not this instanceof LogicalOrExpr and - not this instanceof NullCoalescingOperation and - not this instanceof ConditionalExpr and - not this instanceof ConditionallyQualifiedExpr and - not this instanceof ThrowExpr and - not this instanceof ObjectCreation and - not this instanceof ArrayCreation and - not this instanceof QualifiedWriteAccess and - not this instanceof QualifiedAccessorWrite and - not this instanceof NoNodeExpr and - not this instanceof SwitchExpr and - not this instanceof SwitchCaseExpr and - not this instanceof ConstructorInitializer and - not this instanceof NotPatternExpr and - not this instanceof OrPatternExpr and - not this instanceof AndPatternExpr and - not this instanceof RecursivePatternExpr and - not this instanceof PositionalPatternExpr and - not this instanceof PropertyPatternExpr - } - - final override AstNode getChildNode(int i) { result = getExprChild(this, i) } - } - - /** - * A qualified write access. - * - * The successor declaration in `QualifiedAccessorWrite` ensures that the access itself - * is evaluated after the qualifier and the indexer arguments (if any) - * and the right hand side of the assignment. - * - * When a qualified write access is used as an `out/ref` argument, the access itself is evaluated immediately. - */ - private class QualifiedWriteAccess extends ControlFlowTree instanceof WriteAccess, QualifiableExpr - { - QualifiedWriteAccess() { - ( - this.hasQualifier() - or - // Member initializers like - // ```csharp - // new Dictionary() { [0] = "Zero", [1] = "One", [2] = "Two" } - // ``` - // need special treatment, because the accesses `[0]`, `[1]`, and `[2]` - // have no qualifier. - this = any(MemberInitializer mi).getLValue() - ) and - not exists(AssignableDefinitions::OutRefDefinition def | def.getTargetAccess() = this) - } - - final override predicate propagatesAbnormal(AstNode child) { child = getExprChild(this, _) } - - final override predicate first(AstNode first) { first(getExprChild(this, 0), first) } - - final override predicate last(AstNode last, Completion c) { - // Skip the access in a qualified write access - last(getLastExprChild(this), last, c) - or - // Qualifier exits with a null completion - super.isConditional() and - last(super.getQualifier(), last, c) and - c.(NullnessCompletion).isNull() - } - - final override predicate succ(AstNode pred, AstNode succ, Completion c) { - exists(int i | - last(getExprChild(this, i), pred, c) and - c instanceof NormalCompletion and - (if i = 0 then not c.(NullnessCompletion).isNull() else any()) and - first(getExprChild(this, i + 1), succ) - ) - } - } - - /** - * An expression that writes via a qualifiable expression, for example `x.Prop = 0`, - * where `Prop` is a property. - * - * Accessor writes need special attention, because we need to model the fact - * that the accessor is called *after* the assigned value has been evaluated. - * In the example above, this means we want a CFG that looks like - * - * ```csharp - * x -> 0 -> set_Prop -> x.Prop = 0 - * ``` - * - * For consistency, control flow is implemented the same way for other qualified writes. - * For example, `x.Field = 0`, where `Field` is a field, we want a CFG that looks like - * - * ```csharp - * x -> 0 -> x.Field -> x.Field = 0 - * ``` - */ - private class QualifiedAccessorWrite extends PostOrderTree instanceof Expr { - AssignableDefinition def; - - QualifiedAccessorWrite() { - def.getExpr() = this and - def.getTargetAccess().(WriteAccess) instanceof QualifiableExpr and - not def instanceof AssignableDefinitions::OutRefDefinition - } - - /** - * Gets the `i`th accessor being called in this write. More than one call - * can happen in tuple assignments. - */ - QualifiableExpr getAccess(int i) { - result = - rank[i + 1](AssignableDefinitions::TupleAssignmentDefinition tdef | - tdef.getExpr() = this and - tdef.getTargetAccess() instanceof QualifiableExpr - | - tdef order by tdef.getEvaluationOrder() - ).getTargetAccess() - or - i = 0 and - result = def.getTargetAccess() and - not def instanceof AssignableDefinitions::TupleAssignmentDefinition - } - - final override predicate propagatesAbnormal(AstNode child) { - child = getExprChild(this, _) - or - child = this.getAccess(_) - } - - final override predicate last(AstNode last, Completion c) { - PostOrderTree.super.last(last, c) - or - last(getExprChild(this, 0), last, c) and c.(NullnessCompletion).isNull() - } - - final override predicate first(AstNode first) { first(getExprChild(this, 0), first) } - - final override predicate succ(AstNode pred, AstNode succ, Completion c) { - // Standard left-to-right evaluation - exists(int i | - last(getExprChild(this, i), pred, c) and - c instanceof NormalCompletion and - (if i = 0 then not c.(NullnessCompletion).isNull() else any()) and - first(getExprChild(this, i + 1), succ) - ) - or - // Flow from last element of last child to first accessor call - last(getLastExprChild(this), pred, c) and - succ = this.getAccess(0) and - c instanceof NormalCompletion - or - // Flow from one call to the next - exists(int i | pred = this.getAccess(i) | - succ = this.getAccess(i + 1) and - c.isValidFor(pred) and - c instanceof NormalCompletion - ) - or - // Post-order: flow from last call to element itself - exists(int last | last = max(int i | exists(this.getAccess(i))) | - pred = this.getAccess(last) and - succ = this and - c.isValidFor(pred) and - c instanceof NormalCompletion - ) - } - } - - private class LogicalNotExprTree extends PostOrderTree instanceof LogicalNotExpr { - private Expr operand; - - LogicalNotExprTree() { operand = this.getOperand() } - - final override predicate propagatesAbnormal(AstNode child) { child = operand } - - final override predicate first(AstNode first) { first(operand, first) } - - final override predicate succ(AstNode pred, AstNode succ, Completion c) { - succ = this and - last(operand, pred, c) and - c instanceof NormalCompletion - } - } - - private class LogicalAndExprTree extends PostOrderTree instanceof LogicalAndExpr { - final override predicate propagatesAbnormal(AstNode child) { - child in [super.getLeftOperand(), super.getRightOperand()] - } - - final override predicate first(AstNode first) { first(super.getLeftOperand(), first) } - - final override predicate succ(AstNode pred, AstNode succ, Completion c) { - // Flow from last element of left operand to first element of right operand - last(super.getLeftOperand(), pred, c) and - c instanceof TrueCompletion and - first(super.getRightOperand(), succ) - or - // Post-order: flow from last element of left operand to element itself - last(super.getLeftOperand(), pred, c) and - c instanceof FalseCompletion and - succ = this - or - // Post-order: flow from last element of right operand to element itself - last(super.getRightOperand(), pred, c) and - c instanceof NormalCompletion and - succ = this - } - } - - private class LogicalOrExprTree extends PostOrderTree instanceof LogicalOrExpr { - final override predicate propagatesAbnormal(AstNode child) { - child in [super.getLeftOperand(), super.getRightOperand()] - } - - final override predicate first(AstNode first) { first(super.getLeftOperand(), first) } - - final override predicate succ(AstNode pred, AstNode succ, Completion c) { - // Flow from last element of left operand to first element of right operand - last(super.getLeftOperand(), pred, c) and - c instanceof FalseCompletion and - first(super.getRightOperand(), succ) - or - // Post-order: flow from last element of left operand to element itself - last(super.getLeftOperand(), pred, c) and - c instanceof TrueCompletion and - succ = this - or - // Post-order: flow from last element of right operand to element itself - last(super.getRightOperand(), pred, c) and - c instanceof NormalCompletion and - succ = this - } - } - - private class NullCoalescingOperationTree extends PostOrderTree instanceof NullCoalescingOperation - { - final override predicate propagatesAbnormal(AstNode child) { - child in [super.getLeftOperand(), super.getRightOperand()] - } - - final override predicate first(AstNode first) { first(super.getLeftOperand(), first) } - - final override predicate succ(AstNode pred, AstNode succ, Completion c) { - // Flow from last element of left operand to first element of right operand - last(super.getLeftOperand(), pred, c) and - c.(NullnessCompletion).isNull() and - first(super.getRightOperand(), succ) - or - // Post-order: flow from last element of left operand to element itself - last(super.getLeftOperand(), pred, c) and - succ = this and - c instanceof NormalCompletion and - not c.(NullnessCompletion).isNull() - or - // Post-order: flow from last element of right operand to element itself - last(super.getRightOperand(), pred, c) and - c instanceof NormalCompletion and - succ = this - } - } - - private class ConditionalExprTree extends PostOrderTree instanceof ConditionalExpr { - final override predicate propagatesAbnormal(AstNode child) { - child in [super.getCondition(), super.getThen(), super.getElse()] - } - - final override predicate first(AstNode first) { first(super.getCondition(), first) } - - final override predicate succ(AstNode pred, AstNode succ, Completion c) { - // Flow from last element of condition to first element of then branch - last(super.getCondition(), pred, c) and - c instanceof TrueCompletion and - first(super.getThen(), succ) - or - // Flow from last element of condition to first element of else branch - last(super.getCondition(), pred, c) and - c instanceof FalseCompletion and - first(super.getElse(), succ) - or - // Post-order: flow from last element of a branch to element itself - last([super.getThen(), super.getElse()], pred, c) and - c instanceof NormalCompletion and - succ = this - } - } - - /** A conditionally qualified expression. */ - private class ConditionallyQualifiedExpr extends PostOrderTree instanceof QualifiableExpr { - private Expr qualifier; - - ConditionallyQualifiedExpr() { - this.isConditional() and qualifier = getExprChild(this, 0) and not this instanceof WriteAccess - } - - final override predicate propagatesAbnormal(AstNode child) { child = qualifier } - - final override predicate first(AstNode first) { first(qualifier, first) } - - pragma[nomagic] - private predicate lastQualifier(AstNode last, Completion c) { last(qualifier, last, c) } - - final override predicate last(AstNode last, Completion c) { - PostOrderTree.super.last(last, c) - or - // Qualifier exits with a `null` completion - this.lastQualifier(last, c) and - c.(NullnessCompletion).isNull() - } - - final override predicate succ(AstNode pred, AstNode succ, Completion c) { - exists(int i | - last(getExprChild(this, i), pred, c) and - c instanceof NormalCompletion and - if i = 0 then c.(NullnessCompletion).isNonNull() else any() - | - // Post-order: flow from last element of last child to element itself - i = max(int j | exists(getExprChild(this, j))) and - succ = this - or - // Standard left-to-right evaluation - first(getExprChild(this, i + 1), succ) - ) - } - } - - private class ThrowExprTree extends PostOrderTree instanceof ThrowExpr { - final override predicate propagatesAbnormal(AstNode child) { child = super.getExpr() } - - final override predicate first(AstNode first) { first(super.getExpr(), first) } - - final override predicate succ(AstNode pred, AstNode succ, Completion c) { - last(super.getExpr(), pred, c) and - c instanceof NormalCompletion and - succ = this - } - } - - private class ObjectCreationTree extends ControlFlowTree instanceof ObjectCreation { - private Expr getObjectCreationArgument(int i) { - i >= 0 and - if super.hasInitializer() - then result = getExprChild(this, i + 1) - else result = getExprChild(this, i) - } - - final override predicate propagatesAbnormal(AstNode child) { - child = this.getObjectCreationArgument(_) - } - - final override predicate first(AstNode first) { - first(this.getObjectCreationArgument(0), first) - or - not exists(this.getObjectCreationArgument(0)) and - first = this - } - - final override predicate last(AstNode last, Completion c) { - // Post-order: element itself (when no initializer) - last = this and - not super.hasInitializer() and - c.isValidFor(this) - or - // Last element of initializer - last(super.getInitializer(), last, c) - } - - final override predicate succ(AstNode pred, AstNode succ, Completion c) { - // Flow from last element of argument `i` to first element of argument `i+1` - exists(int i | last(this.getObjectCreationArgument(i), pred, c) | - first(this.getObjectCreationArgument(i + 1), succ) and - c instanceof NormalCompletion - ) - or - // Flow from last element of last argument to self - exists(int last | last = max(int i | exists(this.getObjectCreationArgument(i))) | - last(this.getObjectCreationArgument(last), pred, c) and - succ = this and - c instanceof NormalCompletion - ) - or - // Flow from self to first element of initializer - pred = this and - first(super.getInitializer(), succ) and - c instanceof SimpleCompletion - } - } - - private class ArrayCreationTree extends ControlFlowTree instanceof ArrayCreation { - final override predicate propagatesAbnormal(AstNode child) { - child = super.getALengthArgument() - } - - final override predicate first(AstNode first) { - // First element of first length argument - first(super.getLengthArgument(0), first) - or - // No length argument: element itself - not exists(super.getLengthArgument(0)) and - first = this - } - - final override predicate last(AstNode last, Completion c) { - // Post-order: element itself (when no initializer) - last = this and - not super.hasInitializer() and - c.isValidFor(this) - or - // Last element of initializer - last(super.getInitializer(), last, c) - } - - final override predicate succ(AstNode pred, AstNode succ, Completion c) { - // Flow from self to first element of initializer - pred = this and - first(super.getInitializer(), succ) and - c instanceof SimpleCompletion - or - exists(int i | - last(super.getLengthArgument(i), pred, c) and - c instanceof SimpleCompletion - | - // Flow from last length argument to self - i = max(int j | exists(super.getLengthArgument(j))) and - succ = this - or - // Flow from one length argument to the next - first(super.getLengthArgument(i + 1), succ) - ) - } - } - - private class SwitchExprTree extends PostOrderTree, SwitchTree instanceof SwitchExpr { - final override predicate propagatesAbnormal(AstNode child) { - SwitchTree.super.propagatesAbnormal(child) - or - child = super.getACase() - } - - final override predicate first(AstNode first) { first(super.getExpr(), first) } - - final override predicate succ(AstNode pred, AstNode succ, Completion c) { - SwitchTree.super.succ(pred, succ, c) - or - last(super.getACase(), pred, c) and - succ = this and - c instanceof NormalCompletion - } - } - - private class SwitchCaseExprTree extends PostOrderTree, CaseTree instanceof SwitchCaseExpr { - final override predicate first(AstNode first) { first(super.getPattern(), first) } - - pragma[noinline] - private predicate lastNoMatch(AstNode last, ConditionalCompletion cc) { - last([super.getPattern(), super.getCondition()], last, cc) and - (cc.(MatchingCompletion).isNonMatch() or cc instanceof FalseCompletion) - } - - final override predicate last(AstNode last, Completion c) { - PostOrderTree.super.last(last, c) - or - // Last case exists with a non-match - exists(SwitchExpr se, int i, ConditionalCompletion cc | - this = se.getCase(i) and - not super.matchesAll() and - not exists(se.getCase(i + 1)) and - this.lastNoMatch(last, cc) and - c = - any(NestedCompletion nc | - nc.getNestLevel() = 0 and - nc.getInnerCompletion() = cc and - nc.getOuterCompletion() - .(ThrowCompletion) - .getExceptionClass() - .hasFullyQualifiedName("System", "InvalidOperationException") - ) - ) - } - - final override predicate succ(AstNode pred, AstNode succ, Completion c) { - CaseTree.super.succ(pred, succ, c) - or - last(super.getBody(), pred, c) and - succ = this and - c instanceof NormalCompletion - } - } - - private class ConstructorInitializerTree extends PostOrderTree instanceof ConstructorInitializer { - private ControlFlowTree getChildNode(int i) { result = getExprChild(this, i) } - - final override predicate propagatesAbnormal(AstNode child) { child = this.getChildNode(_) } - - final override predicate first(AstNode first) { - first(this.getChildNode(0), first) - or - not exists(this.getChildNode(0)) and - first = this - } - - final override predicate succ(AstNode pred, AstNode succ, Completion c) { - // Post-order: flow from last element of last child to element itself - exists(int lst | - lst = max(int i | exists(this.getChildNode(i))) and - last(this.getChildNode(lst), pred, c) and - succ = this and - c instanceof NormalCompletion - ) - or - // Standard left-to-right evaluation - exists(int i | - last(this.getChildNode(i), pred, c) and - c instanceof NormalCompletion and - first(this.getChildNode(i + 1), succ) - ) - or - exists(ConstructorTree con, CompilationExt comp | - last(this, pred, c) and - con = super.getConstructor() and - comp = getCompilation(this.getFile()) and - c instanceof NormalCompletion and - first(con.getBody(comp), succ) - ) - } - } - - private class NotPatternExprTree extends PostOrderTree instanceof NotPatternExpr { - final override predicate propagatesAbnormal(AstNode child) { child = super.getPattern() } - - final override predicate first(AstNode first) { first(super.getPattern(), first) } - - final override predicate succ(AstNode pred, AstNode succ, Completion c) { - succ = this and - last(super.getPattern(), pred, c) and - c instanceof NormalCompletion - } - } - - private class AndPatternExprTree extends PostOrderTree instanceof AndPatternExpr { - final override predicate propagatesAbnormal(AstNode child) { child = super.getAnOperand() } - - final override predicate first(AstNode first) { first(super.getLeftOperand(), first) } - - final override predicate succ(AstNode pred, AstNode succ, Completion c) { - // Flow from last element of left operand to first element of right operand - last(super.getLeftOperand(), pred, c) and - c.(MatchingCompletion).getValue() = true and - first(super.getRightOperand(), succ) - or - // Post-order: flow from last element of left operand to element itself - last(super.getLeftOperand(), pred, c) and - c.(MatchingCompletion).getValue() = false and - succ = this - or - // Post-order: flow from last element of right operand to element itself - last(super.getRightOperand(), pred, c) and - c instanceof MatchingCompletion and - succ = this - } - } - - private class OrPatternExprTree extends PostOrderTree instanceof OrPatternExpr { - final override predicate propagatesAbnormal(AstNode child) { child = super.getAnOperand() } - - final override predicate first(AstNode first) { first(super.getLeftOperand(), first) } - - final override predicate succ(AstNode pred, AstNode succ, Completion c) { - // Flow from last element of left operand to first element of right operand - last(super.getLeftOperand(), pred, c) and - c.(MatchingCompletion).getValue() = false and - first(super.getRightOperand(), succ) - or - // Post-order: flow from last element of left operand to element itself - last(super.getLeftOperand(), pred, c) and - c.(MatchingCompletion).getValue() = true and - succ = this - or - // Post-order: flow from last element of right operand to element itself - last(super.getRightOperand(), pred, c) and - c instanceof MatchingCompletion and - succ = this - } - } -} - -private class RecursivePatternExprTree extends PostOrderTree instanceof RecursivePatternExpr { - private Expr getTypeExpr() { - result = super.getVariableDeclExpr() - or - not exists(super.getVariableDeclExpr()) and - result = super.getTypeAccess() - } - - private PatternExpr getChildPattern() { - result = super.getPositionalPatterns() - or - result = super.getPropertyPatterns() - } - - final override predicate propagatesAbnormal(AstNode child) { child = this.getChildPattern() } - - final override predicate first(AstNode first) { - first(this.getTypeExpr(), first) - or - not exists(this.getTypeExpr()) and - first(this.getChildPattern(), first) - } - - final override predicate succ(AstNode pred, AstNode succ, Completion c) { - // Flow from type test to child pattern - last(this.getTypeExpr(), pred, c) and - first(this.getChildPattern(), succ) and - c.(MatchingCompletion).getValue() = true - or - // Flow from type test to self - last(this.getTypeExpr(), pred, c) and - succ = this and - c.(MatchingCompletion).getValue() = false - or - // Flow from child pattern to self - last(this.getChildPattern(), pred, c) and - succ = this and - c instanceof MatchingCompletion - } -} - -private class PositionalPatternExprTree extends PreOrderTree instanceof PositionalPatternExpr { - final override predicate propagatesAbnormal(AstNode child) { child = super.getPattern(_) } - - final override predicate last(AstNode last, Completion c) { - last = this and - c.(MatchingCompletion).getValue() = false - or - last(super.getPattern(_), last, c) and - c.(MatchingCompletion).getValue() = false - or - exists(int lst | - last(super.getPattern(lst), last, c) and - not exists(super.getPattern(lst + 1)) - ) - } - - final override predicate succ(AstNode pred, AstNode succ, Completion c) { - // Flow from self to first pattern - pred = this and - c.(MatchingCompletion).getValue() = true and - first(super.getPattern(0), succ) - or - // Flow from one pattern to the next - exists(int i | - last(super.getPattern(i), pred, c) and - c.(MatchingCompletion).getValue() = true and - first(super.getPattern(i + 1), succ) - ) - } -} - -private class PropertyPatternExprExprTree extends PostOrderTree instanceof PropertyPatternExpr { - final override predicate propagatesAbnormal(AstNode child) { child = super.getPattern(_) } - - final override predicate first(AstNode first) { - first(super.getPattern(0), first) - or - not exists(super.getPattern(0)) and - first = this - } - - final override predicate succ(AstNode pred, AstNode succ, Completion c) { - // Flow from one pattern to the next - exists(int i | - last(super.getPattern(i), pred, c) and - c.(MatchingCompletion).getValue() = true and - first(super.getPattern(i + 1), succ) - ) - or - // Post-order: flow from last element of failing pattern to element itself - last(super.getPattern(_), pred, c) and - c.(MatchingCompletion).getValue() = false and - succ = this - or - // Post-order: flow from last element of last pattern to element itself - exists(int last | - last(super.getPattern(last), pred, c) and - not exists(super.getPattern(last + 1)) and - c instanceof MatchingCompletion and - succ = this - ) - } -} - -module Statements { - private class StandardStmt extends StandardPreOrderTree instanceof Stmt { - StandardStmt() { - // The following statements need special treatment - not this instanceof IfStmt and - not this instanceof SwitchStmt and - not this instanceof CaseStmt and - not this instanceof LoopStmt and - not this instanceof TryStmt and - not this instanceof SpecificCatchClause and - not this instanceof JumpStmt and - not this instanceof LabeledStmt - } - - private ControlFlowTree getChildNode0(int i) { - not this instanceof GeneralCatchClause and - not this instanceof FixedStmt and - not this instanceof UsingBlockStmt and - result = this.getChild(i) - or - this = any(GeneralCatchClause gcc | i = 0 and result = gcc.getBlock()) - or - this = - any(FixedStmt fs | - result = fs.getVariableDeclExpr(i) - or - result = fs.getBody() and - i = max(int j | exists(fs.getVariableDeclExpr(j))) + 1 - ) - or - this = - any(UsingBlockStmt us | - result = us.getExpr() and - i = 0 - or - result = us.getVariableDeclExpr(i) - or - result = us.getBody() and - i = max([1, count(us.getVariableDeclExpr(_))]) - ) - } - - final override AstNode getChildNode(int i) { - result = rank[i + 1](AstNode cfe, int j | cfe = this.getChildNode0(j) | cfe order by j) - } - } - - private class IfStmtTree extends PreOrderTree instanceof IfStmt { - final override predicate propagatesAbnormal(AstNode child) { child = super.getCondition() } - - final override predicate last(AstNode last, Completion c) { - // Condition exits with a false completion and there is no `else` branch - last(super.getCondition(), last, c) and - c instanceof FalseCompletion and - not exists(super.getElse()) - or - // Then branch exits with any completion - last(super.getThen(), last, c) - or - // Else branch exits with any completion - last(super.getElse(), last, c) - } - - final override predicate succ(AstNode pred, AstNode succ, Completion c) { - // Pre-order: flow from statement itself to first element of condition - pred = this and - first(super.getCondition(), succ) and - c instanceof SimpleCompletion - or - last(super.getCondition(), pred, c) and - ( - // Flow from last element of condition to first element of then branch - c instanceof TrueCompletion and first(super.getThen(), succ) - or - // Flow from last element of condition to first element of else branch - c instanceof FalseCompletion and first(super.getElse(), succ) - ) - } - } - - private class SwitchStmtTree extends PreOrderTree, SwitchTree instanceof SwitchStmt { - final override predicate last(AstNode last, Completion c) { - // Switch expression exits normally and there are no cases - not exists(super.getACase()) and - last(super.getExpr(), last, c) and - c instanceof NormalCompletion - or - // A statement exits with a `break` completion - last(SwithStmtInternal::getStmt(this, _), last, - c.(NestedBreakCompletion).getAnInnerCompatibleCompletion()) - or - // A statement exits abnormally - last(SwithStmtInternal::getStmt(this, _), last, c) and - not c instanceof BreakCompletion and - not c instanceof NormalCompletion and - not any(LabeledStmtTree t | - t.hasLabelInCallable(c.(GotoCompletion).getLabel(), super.getEnclosingCallable()) - ) instanceof CaseStmt - or - // Last case exits with a non-match - exists(CaseStmt cs, int last_ | - last_ = max(int i | exists(SwithStmtInternal::getCase(this, i))) and - cs = SwithStmtInternal::getCase(this, last_) - | - last(cs.getPattern(), last, c) and - not c.(MatchingCompletion).isMatch() - or - last(cs.getCondition(), last, c) and - c instanceof FalseCompletion - ) - } - - final override predicate succ(AstNode pred, AstNode succ, Completion c) { - SwitchTree.super.succ(pred, succ, c) - or - // Pre-order: flow from statement itself to first switch expression - pred = this and - first(super.getExpr(), succ) and - c instanceof SimpleCompletion - or - // Flow from last element of non-`case` statement `i` to first element of statement `i+1` - exists(int i | last(SwithStmtInternal::getStmt(this, i), pred, c) | - not SwithStmtInternal::getStmt(this, i) instanceof CaseStmt and - c instanceof NormalCompletion and - first(SwithStmtInternal::getStmt(this, i + 1), succ) - ) - or - // Flow from last element of `case` statement `i` to first element of statement `i+1` - exists(int i, Stmt body | - body = caseStmtGetBody(SwithStmtInternal::getStmt(this, i)) and - // in case of fall-through cases, make sure to not jump from their shared body back - // to one of the fall-through cases - not body = caseStmtGetBody(SwithStmtInternal::getStmt(this, i + 1)) and - last(body, pred, c) - | - c instanceof NormalCompletion and - first(SwithStmtInternal::getStmt(this, i + 1), succ) - ) - } - } - - private class CaseStmtTree extends PreOrderTree, CaseTree instanceof CaseStmt { - final override predicate last(AstNode last, Completion c) { - // Condition exists with a `false` completion - last(super.getCondition(), last, c) and - c instanceof FalseCompletion - or - // Case pattern exits with a non-match - last(super.getPattern(), last, c) and - not c.(MatchingCompletion).isMatch() - or - // Case body exits with any completion - last(caseStmtGetBody(this), last, c) - } - - final override predicate succ(AstNode pred, AstNode succ, Completion c) { - CaseTree.super.succ(pred, succ, c) - or - pred = this and - first(super.getPattern(), succ) and - c instanceof SimpleCompletion - } - } - - abstract private class LoopStmtTree extends PreOrderTree instanceof LoopStmt { - final override predicate propagatesAbnormal(AstNode child) { child = super.getCondition() } - - final override predicate last(AstNode last, Completion c) { - // Condition exits with a false completion - last(super.getCondition(), last, c) and - c instanceof FalseCompletion - or - // Body exits with a break completion - last(super.getBody(), last, c.(NestedBreakCompletion).getAnInnerCompatibleCompletion()) - or - // Body exits with a completion that does not continue the loop - last(super.getBody(), last, c) and - not c instanceof BreakCompletion and - not c.continuesLoop() - } - - override predicate succ(AstNode pred, AstNode succ, Completion c) { - // Flow from last element of condition to first element of loop body - last(super.getCondition(), pred, c) and - c instanceof TrueCompletion and - first(super.getBody(), succ) - or - // Flow from last element of loop body back to first element of condition - not this instanceof ForStmt and - last(super.getBody(), pred, c) and - c.continuesLoop() and - first(super.getCondition(), succ) - } - } - - private class WhileStmtTree extends LoopStmtTree instanceof WhileStmt { - final override predicate succ(AstNode pred, AstNode succ, Completion c) { - LoopStmtTree.super.succ(pred, succ, c) - or - pred = this and - first(super.getCondition(), succ) and - c instanceof SimpleCompletion - } - } - - private class DoStmtTree extends LoopStmtTree instanceof DoStmt { - final override predicate succ(AstNode pred, AstNode succ, Completion c) { - LoopStmtTree.super.succ(pred, succ, c) - or - pred = this and - first(super.getBody(), succ) and - c instanceof SimpleCompletion - } - } - - private class ForStmtTree extends LoopStmtTree instanceof ForStmt { - /** Gets the condition if it exists, otherwise the body. */ - private AstNode getConditionOrBody() { - result = super.getCondition() - or - not exists(super.getCondition()) and - result = super.getBody() - } - - final override predicate succ(AstNode pred, AstNode succ, Completion c) { - LoopStmtTree.super.succ(pred, succ, c) - or - // Pre-order: flow from statement itself to first element of first initializer/ - // condition/loop body - exists(AstNode next | - pred = this and - first(next, succ) and - c instanceof SimpleCompletion - | - next = super.getInitializer(0) - or - not exists(super.getInitializer(0)) and - next = this.getConditionOrBody() - ) - or - // Flow from last element of initializer `i` to first element of initializer `i+1` - exists(int i | last(super.getInitializer(i), pred, c) | - c instanceof NormalCompletion and - first(super.getInitializer(i + 1), succ) - ) - or - // Flow from last element of last initializer to first element of condition/loop body - exists(int last | last = max(int i | exists(super.getInitializer(i))) | - last(super.getInitializer(last), pred, c) and - c instanceof NormalCompletion and - first(this.getConditionOrBody(), succ) - ) - or - // Flow from last element of condition into first element of loop body - last(super.getCondition(), pred, c) and - c instanceof TrueCompletion and - first(super.getBody(), succ) - or - // Flow from last element of loop body to first element of update/condition/self - exists(AstNode next | - last(super.getBody(), pred, c) and - c.continuesLoop() and - first(next, succ) and - if exists(super.getUpdate(0)) - then next = super.getUpdate(0) - else next = this.getConditionOrBody() - ) - or - // Flow from last element of update to first element of next update/condition/loop body - exists(AstNode next, int i | - last(super.getUpdate(i), pred, c) and - c instanceof NormalCompletion and - first(next, succ) and - if exists(super.getUpdate(i + 1)) - then next = super.getUpdate(i + 1) - else next = this.getConditionOrBody() - ) - } - } - - private class ForeachStmtTree extends ControlFlowTree instanceof ForeachStmt { - final override predicate propagatesAbnormal(AstNode child) { child = super.getIterableExpr() } - - final override predicate first(AstNode first) { - // Unlike most other statements, `foreach` statements are not modeled in - // pre-order, because we use the `foreach` node itself to represent the - // emptiness test that determines whether to execute the loop body - first(super.getIterableExpr(), first) - } - - final override predicate last(AstNode last, Completion c) { - // Emptiness test exits with no more elements - last = this and - c.(EmptinessCompletion).isEmpty() - or - // Body exits with a break completion - last(super.getBody(), last, c.(NestedBreakCompletion).getAnInnerCompatibleCompletion()) - or - // Body exits abnormally - last(super.getBody(), last, c) and - not c instanceof NormalCompletion and - not c instanceof ContinueCompletion and - not c instanceof BreakCompletion - } - - final override predicate succ(AstNode pred, AstNode succ, Completion c) { - // Flow from last element of iterator expression to emptiness test - last(super.getIterableExpr(), pred, c) and - c instanceof NormalCompletion and - succ = this - or - // Flow from emptiness test to first element of variable declaration/loop body - pred = this and - c = any(EmptinessCompletion ec | not ec.isEmpty()) and - ( - first(super.getVariableDeclExpr(), succ) - or - first(super.getVariableDeclTuple(), succ) - or - not exists(super.getVariableDeclExpr()) and - not exists(super.getVariableDeclTuple()) and - first(super.getBody(), succ) - ) - or - // Flow from last element of variable declaration to first element of loop body - ( - last(super.getVariableDeclExpr(), pred, c) or - last(super.getVariableDeclTuple(), pred, c) - ) and - c instanceof SimpleCompletion and - first(super.getBody(), succ) - or - // Flow from last element of loop body back to emptiness test - last(super.getBody(), pred, c) and - c.continuesLoop() and - succ = this - } - } - - pragma[nomagic] - private AstNode lastLastCatchClause(CatchClause cc, Completion c) { - cc.isLast() and - last(cc, result, c) - } - - pragma[nomagic] - private AstNode lastCatchClauseBlock(CatchClause cc, Completion c) { - last(cc.getBlock(), result, c) - } - - /** Gets a child of `cfe` that is in CFG scope `scope`. */ - pragma[noinline] - private ControlFlowElement getAChildInScope(AstNode cfe, Callable scope) { - result = cfe.getAChild() and - scope = result.getEnclosingCallable() - } - - class TryStmtTree extends PreOrderTree instanceof TryStmt { - final override predicate propagatesAbnormal(AstNode child) { child = super.getFinally() } - - /** - * Gets a descendant that belongs to the finally block of this try statement. - */ - AstNode getAFinallyDescendant() { - result = super.getFinally() - or - exists(ControlFlowElement mid | - mid = this.getAFinallyDescendant() and - result = getAChildInScope(mid, mid.getEnclosingCallable()) and - not exists(TryStmt nestedTry | - result = nestedTry.getFinally() and - nestedTry != this - ) - ) - } - - /** - * Holds if `innerTry` has a finally block and is immediately nested inside the - * finally block of this try statement. - */ - private predicate nestedFinally(TryStmt innerTry) { - exists(AstNode innerFinally | - innerFinally = getAChildInScope(this.getAFinallyDescendant(), super.getEnclosingCallable()) and - innerFinally = innerTry.getFinally() - ) - } - - /** - * Gets the finally-nesting level of this try statement. That is, the number of - * finally blocks that this try statement is nested under. - */ - int nestLevel() { result = count(TryStmtTree outer | outer.nestedFinally+(this)) } - - /** Holds if `last` is a last element of the block of this try statement. */ - pragma[nomagic] - predicate lastBlock(AstNode last, Completion c) { last(super.getBlock(), last, c) } - - /** - * Gets a last element from a `try` or `catch` block of this try statement - * that may finish with completion `c`, such that control may be transferred - * to the finally block (if it exists), but only if `finalizable = true`. - */ - pragma[nomagic] - AstNode getAFinallyPredecessor(Completion c, boolean finalizable) { - // Exit completions skip the finally block - (if c instanceof ExitCompletion then finalizable = false else finalizable = true) and - ( - this.lastBlock(result, c) and - ( - // Any non-throw completion from the `try` block will always continue directly - // to the finally block - not c instanceof ThrowCompletion - or - // Any completion from the `try` block will continue to the finally block - // when there are no catch clauses - not exists(super.getACatchClause()) - ) - or - // Last element from any of the `catch` clause blocks continues to the finally block - result = lastCatchClauseBlock(super.getACatchClause(), c) - or - // Last element of last `catch` clause continues to the finally block - result = lastLastCatchClause(super.getACatchClause(), c) - ) - } - - pragma[nomagic] - private predicate lastFinally0(AstNode last, Completion c) { last(super.getFinally(), last, c) } - - pragma[nomagic] - private predicate lastFinally( - AstNode last, NormalCompletion finally, Completion outer, int nestLevel - ) { - this.lastFinally0(last, finally) and - exists( - this.getAFinallyPredecessor(any(Completion c0 | outer = c0.getOuterCompletion()), true) - ) and - nestLevel = this.nestLevel() - } - - final override predicate last(AstNode last, Completion c) { - exists(boolean finalizable | last = this.getAFinallyPredecessor(c, finalizable) | - // If there is no finally block, last elements are from the body, from - // the blocks of one of the `catch` clauses, or from the last `catch` clause - not super.hasFinally() - or - finalizable = false - ) - or - this.lastFinally(last, c, any(NormalCompletion nc), _) - or - // If the finally block completes normally, it inherits any non-normal - // completion that was current before the finally block was entered - exists(int nestLevel | - c = - any(NestedCompletion nc | - this.lastFinally(last, nc.getAnInnerCompatibleCompletion(), nc.getOuterCompletion(), - nestLevel) and - // unbind - nc.getNestLevel() >= nestLevel and - nc.getNestLevel() <= nestLevel - ) - ) - } - - /** - * Gets an exception type that is thrown by `cfe` in the block of this `try` - * statement. Throw completion `c` matches the exception type. - */ - ExceptionClass getAThrownException(AstNode cfe, ThrowCompletion c) { - this.lastBlock(cfe, c) and - result = c.getExceptionClass() - } - - final override predicate succ(AstNode pred, AstNode succ, Completion c) { - // Pre-order: flow from statement itself to first element of body - pred = this and - first(super.getBlock(), succ) and - c instanceof SimpleCompletion - or - // Flow from last element of body to first `catch` clause - exists(this.getAThrownException(pred, c)) and - first(super.getCatchClause(0), succ) - or - exists(CatchClause cc, int i | cc = super.getCatchClause(i) | - // Flow from one `catch` clause to the next - pred = cc and - last(super.getCatchClause(i), cc, c) and - first(super.getCatchClause(i + 1), succ) and - c = any(MatchingCompletion mc | not mc.isMatch()) - or - // Flow from last element of `catch` clause filter to next `catch` clause - last(super.getCatchClause(i), pred, c) and - last(cc.getFilterClause(), pred, _) and - first(super.getCatchClause(i + 1), succ) and - c instanceof FalseCompletion - ) - or - // Flow into finally block - pred = this.getAFinallyPredecessor(c, true) and - first(super.getFinally(), succ) - } - } - - private class SpecificCatchClauseTree extends PreOrderTree instanceof SpecificCatchClause { - final override predicate propagatesAbnormal(AstNode child) { child = super.getFilterClause() } - - pragma[nomagic] - private predicate lastFilterClause(AstNode last, Completion c) { - last(super.getFilterClause(), last, c) - } - - /** - * Holds if the `try` block that this catch clause belongs to may throw an - * exception of type `c`, where no `catch` clause is guaranteed to catch it. - * This catch clause is the last catch clause in the try statement that - * it belongs to. - */ - pragma[nomagic] - private predicate throwMayBeUncaught(ThrowCompletion c) { - exists(TryStmt ts | - ts = super.getTryStmt() and - ts.(TryStmtTree).lastBlock(_, c) and - not ts.getACatchClause() instanceof GeneralCatchClause and - forall(SpecificCatchClause scc | scc = ts.getACatchClause() | - scc.hasFilterClause() - or - not c.getExceptionClass().getABaseType*() = scc.getCaughtExceptionType() - ) and - super.isLast() - ) - } - - final override predicate last(AstNode last, Completion c) { - // Last element of `catch` block - last(super.getBlock(), last, c) - or - not super.isLast() and - ( - // Incompatible exception type: clause itself - last = this and - c.(MatchingCompletion).isNonMatch() - or - // Incompatible filter - this.lastFilterClause(last, c) and - c instanceof FalseCompletion - ) - or - // Last `catch` clause inherits throw completions from the `try` block, - // when the clause does not match - super.isLast() and - c = - any(NestedCompletion nc | - nc.getNestLevel() = 0 and - this.throwMayBeUncaught(nc.getOuterCompletion()) and - ( - // Incompatible exception type: clause itself - last = this and - nc.getInnerCompletion() = - any(MatchingCompletion mc | - mc.isNonMatch() and - mc.isValidFor(this) - ) - or - // Incompatible filter - this.lastFilterClause(last, nc.getInnerCompletion().(FalseCompletion)) - ) - ) - } - - final override predicate succ(AstNode pred, AstNode succ, Completion c) { - // Flow from catch clause to variable declaration/filter clause/block - pred = this and - c.(MatchingCompletion).isMatch() and - exists(AstNode next | first(next, succ) | - if exists(super.getVariableDeclExpr()) - then next = super.getVariableDeclExpr() - else - if exists(super.getFilterClause()) - then next = super.getFilterClause() - else next = super.getBlock() - ) - or - // Flow from variable declaration to filter clause/block - last(super.getVariableDeclExpr(), pred, c) and - c instanceof SimpleCompletion and - exists(AstNode next | first(next, succ) | - if exists(super.getFilterClause()) - then next = super.getFilterClause() - else next = super.getBlock() - ) - or - // Flow from filter to block - last(super.getFilterClause(), pred, c) and - c instanceof TrueCompletion and - first(super.getBlock(), succ) - } - } - - private class JumpStmtTree extends PostOrderTree instanceof JumpStmt { - final override predicate propagatesAbnormal(AstNode child) { child = this.getChild(0) } - - final override predicate first(AstNode first) { - first(this.getChild(0), first) - or - not exists(this.getChild(0)) and first = this - } - - final override predicate succ(AstNode pred, AstNode succ, Completion c) { - last(this.getChild(0), pred, c) and - succ = this and - c instanceof NormalCompletion - } - } - - pragma[nomagic] - private predicate goto(ControlFlowElement cfe, GotoCompletion gc, string label, Callable enclosing) { - last(_, cfe, gc) and - // Special case: when a `goto` happens inside a try statement with a - // finally block, flow does not go directly to the target, but instead - // to the finally block (and from there possibly to the target) - not cfe = - any(Statements::TryStmtTree t | t.(TryStmt).hasFinally()).getAFinallyPredecessor(_, true) and - label = gc.getLabel() and - enclosing = cfe.getEnclosingCallable() - } - - private class LabeledStmtTree extends PreOrderTree instanceof LabeledStmt { - final override predicate propagatesAbnormal(AstNode child) { none() } - - final override predicate last(AstNode last, Completion c) { - if this instanceof DefaultCase - then last(super.getStmt(), last, c) - else ( - not this instanceof CaseStmt and - last = this and - c.isValidFor(this) - ) - } - - pragma[noinline] - predicate hasLabelInCallable(string label, Callable c) { - super.getEnclosingCallable() = c and - label = super.getLabel() - } - - final override predicate succ(AstNode pred, AstNode succ, Completion c) { - this instanceof DefaultCase and - pred = this and - first(super.getStmt(), succ) and - c instanceof SimpleCompletion - or - // Flow from element with matching `goto` completion to this statement - exists(string label, Callable enclosing | - goto(pred, c, label, enclosing) and - this.hasLabelInCallable(label, enclosing) and - succ = this - ) - } - } -} - -/** A control flow element that is split into multiple control flow nodes. */ -class SplitAstNode extends AstNode, ControlFlowElement { - SplitAstNode() { strictcount(this.getAControlFlowNode()) > 1 } -} diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/NonReturning.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/internal/NonReturning.qll index 10f92d882b79..45f802619bed 100644 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/NonReturning.qll +++ b/csharp/ql/lib/semmle/code/csharp/controlflow/internal/NonReturning.qll @@ -9,13 +9,9 @@ import csharp private import semmle.code.csharp.ExprOrStmtParent private import semmle.code.csharp.commons.Assertions private import semmle.code.csharp.frameworks.System -private import Completion /** A call that definitely does not return (conservative analysis). */ -abstract class NonReturningCall extends Call { - /** Gets a valid completion for this non-returning call. */ - abstract Completion getACompletion(); -} +abstract class NonReturningCall extends Call { } private class ExitingCall extends NonReturningCall { ExitingCall() { @@ -23,36 +19,21 @@ private class ExitingCall extends NonReturningCall { or this = any(FailingAssertion fa | fa.getAssertionFailure().isExit()) } - - override ExitCompletion getACompletion() { not result instanceof NestedCompletion } } private class ThrowingCall extends NonReturningCall { - private ThrowCompletion c; - ThrowingCall() { - not c instanceof NestedCompletion and - ( - c = this.getTarget().(ThrowingCallable).getACallCompletion() - or - this.(FailingAssertion).getAssertionFailure().isException(c.getExceptionClass()) - or - this = - any(MethodCall mc | - mc.getTarget() - .hasFullyQualifiedName("System.Runtime.ExceptionServices", "ExceptionDispatchInfo", - "Throw") and - ( - mc.hasNoArguments() and - c.getExceptionClass() instanceof SystemExceptionClass - or - c.getExceptionClass() = mc.getArgument(0).getType() - ) - ) - ) + this.getTarget() instanceof ThrowingCallable + or + this.(FailingAssertion).getAssertionFailure().isException(_) + or + this = + any(MethodCall mc | + mc.getTarget() + .hasFullyQualifiedName("System.Runtime.ExceptionServices", "ExceptionDispatchInfo", + "Throw") + ) } - - override ThrowCompletion getACompletion() { result = c } } /** Holds if accessor `a` has an auto-implementation. */ @@ -107,44 +88,35 @@ private Stmt getAnExitingStmt() { private class ThrowingCallable extends NonReturningCallable { ThrowingCallable() { - forex(ControlFlowElement body | body = this.getBody() | body = getAThrowingElement(_)) + forex(ControlFlowElement body | body = this.getBody() | body = getAThrowingElement()) } - - /** Gets a valid completion for a call to this throwing callable. */ - ThrowCompletion getACallCompletion() { this.getBody() = getAThrowingElement(result) } } -private predicate directlyThrows(ThrowElement te, ThrowCompletion c) { - c.getExceptionClass() = te.getThrownExceptionType() and - not c instanceof NestedCompletion and +private predicate directlyThrows(ThrowElement te) { // For stub implementations, there may exist proper implementations that are not seen // during compilation, so we conservatively rule those out not isStub(te) } -private ControlFlowElement getAThrowingElement(ThrowCompletion c) { - c = result.(ThrowingCall).getACompletion() +private ControlFlowElement getAThrowingElement() { + result instanceof ThrowingCall or - directlyThrows(result, c) + directlyThrows(result) or - result = getAThrowingStmt(c) + result = getAThrowingStmt() } -private Stmt getAThrowingStmt(ThrowCompletion c) { - directlyThrows(result, c) +private Stmt getAThrowingStmt() { + directlyThrows(result) or - result.(ExprStmt).getExpr() = getAThrowingElement(c) + result.(ExprStmt).getExpr() = getAThrowingElement() or - result.(BlockStmt).getFirstStmt() = getAThrowingStmt(c) + result.(BlockStmt).getFirstStmt() = getAThrowingStmt() or - exists(IfStmt ifStmt, ThrowCompletion c1, ThrowCompletion c2 | + exists(IfStmt ifStmt | result = ifStmt and - ifStmt.getThen() = getAThrowingStmt(c1) and - ifStmt.getElse() = getAThrowingStmt(c2) - | - c = c1 - or - c = c2 + ifStmt.getThen() = getAThrowingStmt() and + ifStmt.getElse() = getAThrowingStmt() ) } diff --git a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Splitting.qll b/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Splitting.qll deleted file mode 100644 index 173179216f3d..000000000000 --- a/csharp/ql/lib/semmle/code/csharp/controlflow/internal/Splitting.qll +++ /dev/null @@ -1,124 +0,0 @@ -/** - * INTERNAL: Do not use. - * - * Provides classes and predicates relevant for splitting the control flow graph. - */ - -import csharp -private import Completion as Comp -private import Comp -private import ControlFlowGraphImpl -private import semmle.code.csharp.controlflow.ControlFlowGraph::ControlFlow as Cfg - -cached -private module Cached { - private import semmle.code.csharp.Caching - - cached - newtype TSplitKind = TConditionalCompletionSplitKind() - - cached - newtype TSplit = TConditionalCompletionSplit(ConditionalCompletion c) -} - -import Cached - -/** - * A split for a control flow element. For example, a tag that determines how to - * continue execution after leaving a `finally` block. - */ -class Split extends TSplit { - /** Gets a textual representation of this split. */ - string toString() { none() } -} - -module ConditionalCompletionSplitting { - /** - * A split for conditional completions. For example, in - * - * ```csharp - * void M(int i) - * { - * if (x && !y) - * System.Console.WriteLine("true") - * } - * ``` - * - * we record whether `x`, `y`, and `!y` evaluate to `true` or `false`, and restrict - * the edges out of `!y` and `x && !y` accordingly. - */ - class ConditionalCompletionSplit extends Split, TConditionalCompletionSplit { - ConditionalCompletion completion; - - ConditionalCompletionSplit() { this = TConditionalCompletionSplit(completion) } - - ConditionalCompletion getCompletion() { result = completion } - - override string toString() { result = completion.toString() } - } - - private class ConditionalCompletionSplitKind_ extends SplitKind, TConditionalCompletionSplitKind { - override int getListOrder() { result = 0 } - - override predicate isEnabled(AstNode cfe) { this.appliesTo(cfe) } - - override string toString() { result = "ConditionalCompletion" } - } - - module ConditionalCompletionSplittingInput { - private import Completion as Comp - - class ConditionalCompletion = Comp::ConditionalCompletion; - - class ConditionalCompletionSplitKind extends ConditionalCompletionSplitKind_, TSplitKind { } - - class ConditionalCompletionSplit = ConditionalCompletionSplitting::ConditionalCompletionSplit; - - bindingset[parent, parentCompletion] - predicate condPropagateExpr( - AstNode parent, ConditionalCompletion parentCompletion, AstNode child, - ConditionalCompletion childCompletion - ) { - child = parent.(LogicalNotExpr).getOperand() and - childCompletion.getDual() = parentCompletion - or - childCompletion = parentCompletion and - ( - child = parent.(LogicalAndExpr).getAnOperand() - or - child = parent.(LogicalOrExpr).getAnOperand() - or - parent = any(ConditionalExpr ce | child = [ce.getThen(), ce.getElse()]) - or - child = parent.(SwitchExpr).getACase() - or - child = parent.(SwitchCaseExpr).getBody() - or - parent = - any(NullCoalescingOperation nce | - if childCompletion instanceof NullnessCompletion - then child = nce.getRightOperand() - else child = nce.getAnOperand() - ) - ) - or - child = parent.(NotPatternExpr).getPattern() and - childCompletion.getDual() = parentCompletion - or - child = parent.(IsExpr).getPattern() and - parentCompletion.(BooleanCompletion).getValue() = - childCompletion.(MatchingCompletion).getValue() - or - childCompletion = parentCompletion and - ( - child = parent.(AndPatternExpr).getAnOperand() - or - child = parent.(OrPatternExpr).getAnOperand() - or - child = parent.(RecursivePatternExpr).getAChildExpr() - or - child = parent.(PropertyPatternExpr).getPattern(_) - ) - } - } -} diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll index a82779eaa5d7..1cd9c71acfc9 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/Nullness.qll @@ -31,7 +31,7 @@ private Expr maybeNullExpr(Expr reason) { or result instanceof AsExpr and reason = result or - result.(AssignExpr).getRValue() = maybeNullExpr(reason) + result.(AssignExpr).getRightOperand() = maybeNullExpr(reason) or result.(CastExpr).getExpr() = maybeNullExpr(reason) or @@ -67,8 +67,8 @@ class AlwaysNullExpr extends Expr { exists(AlwaysNullExpr e1, AlwaysNullExpr e2 | G::Internal::nullValueImpliedBinary(e1, e2, this)) or this = - any(Ssa::Definition def | - forex(Ssa::Definition u | u = def.getAnUltimateDefinition() | nullDef(u)) + any(SsaDefinition def | + forex(SsaDefinition u | u = def.getAnUltimateDefinition() | nullDef(u)) ).getARead() or exists(Callable target | @@ -80,9 +80,7 @@ class AlwaysNullExpr extends Expr { } /** Holds if SSA definition `def` is always `null`. */ -private predicate nullDef(Ssa::ExplicitDefinition def) { - def.getADefinition().getSource() instanceof AlwaysNullExpr -} +private predicate nullDef(SsaExplicitWrite def) { def.getValue() instanceof AlwaysNullExpr } /** An expression that is never `null`. */ class NonNullExpr extends Expr { @@ -94,8 +92,8 @@ class NonNullExpr extends Expr { this instanceof G::NullGuardedExpr or this = - any(Ssa::Definition def | - forex(Ssa::Definition u | u = def.getAnUltimateDefinition() | nonNullDef(u)) + any(SsaDefinition def | + forex(SsaDefinition u | u = def.getAnUltimateDefinition() | nonNullDef(u)) ).getARead() or exists(Callable target | @@ -108,10 +106,10 @@ class NonNullExpr extends Expr { } /** Holds if SSA definition `def` is never `null`. */ -private predicate nonNullDef(Ssa::ExplicitDefinition def) { - def.getADefinition().getSource() instanceof NonNullExpr +private predicate nonNullDef(SsaExplicitWrite def) { + def.getValue() instanceof NonNullExpr or - exists(AssignableDefinition ad | ad = def.getADefinition() | + exists(AssignableDefinition ad | ad = def.getDefinition() | ad instanceof AssignableDefinitions::PatternDefinition or ad = @@ -124,13 +122,11 @@ private predicate nonNullDef(Ssa::ExplicitDefinition def) { } /** - * Holds if `node` is a dereference `d` of SSA definition `def`. + * Holds if `d` is a dereference of SSA definition `def`. */ -private predicate dereferenceAt(ControlFlow::Node node, Ssa::Definition def, Dereference d) { - d = def.getAReadAtNode(node) -} +private predicate dereferenceAt(SsaDefinition def, Dereference d) { d = def.getARead() } -private predicate isMaybeNullArgument(Ssa::ImplicitParameterDefinition def, MaybeNullExpr arg) { +private predicate isMaybeNullArgument(SsaParameterInit def, MaybeNullExpr arg) { exists(AssignableDefinitions::ImplicitParameterDefinition pdef, Parameter p | p = def.getParameter() | @@ -181,20 +177,8 @@ private predicate hasMultipleParamsArguments(Call c) { ) } -private predicate isNullDefaultArgument(Ssa::ImplicitParameterDefinition def, AlwaysNullExpr arg) { - exists(AssignableDefinitions::ImplicitParameterDefinition pdef, Parameter p | - p = def.getParameter() - | - p = pdef.getParameter().getUnboundDeclaration() and - arg = p.getDefaultValue() and - not arg.getEnclosingCallable().getEnclosingCallable*() instanceof TestMethod - ) -} - /** Holds if `def` is an SSA definition that may be `null`. */ -private predicate defMaybeNull( - Ssa::Definition def, ControlFlow::Node node, string msg, Element reason -) { +private predicate defMaybeNull(SsaDefinition def, ControlFlowNode node, string msg, Element reason) { not nonNullDef(def) and ( // A variable compared to `null` might be `null` @@ -202,10 +186,10 @@ private predicate defMaybeNull( de.guardSuggestsMaybeNull(reason) and msg = "as suggested by $@ null check" and node = def.getControlFlowNode() and - not de = any(Ssa::PhiNode phi).getARead() and + not de = any(SsaPhiDefinition phi).getARead() and // Don't use a check as reason if there is a `null` assignment // or argument - not def.(Ssa::ExplicitDefinition).getADefinition().getSource() instanceof MaybeNullExpr and + not def.(SsaExplicitWrite).getValue() instanceof MaybeNullExpr and not isMaybeNullArgument(def, _) ) or @@ -218,37 +202,33 @@ private predicate defMaybeNull( else msg = "because of $@ potential null argument" ) or - isNullDefaultArgument(def, reason) and - node = def.getControlFlowNode() and - msg = "because the parameter has a null default value" - or // If the source of a variable is `null` then the variable may be `null` - exists(AssignableDefinition adef | adef = def.(Ssa::ExplicitDefinition).getADefinition() | - adef.getSource() = maybeNullExpr(node.getAstNode()) and + exists(AssignableDefinition adef | adef = def.(SsaExplicitWrite).getDefinition() | + adef.getSource() = maybeNullExpr(node.asExpr()) and reason = adef.getExpr() and msg = "because of $@ assignment" ) or // A variable of nullable type may be null - exists(Dereference d | dereferenceAt(_, def, d) | + exists(Dereference d | dereferenceAt(def, d) | node = def.getControlFlowNode() and d.hasNullableType() and - not def instanceof Ssa::PhiNode and + not def instanceof SsaPhiDefinition and reason = def.getSourceVariable().getAssignable() and msg = "because it has a nullable type" ) ) } -private Ssa::Definition getAPseudoInput(Ssa::Definition def) { - result = def.(Ssa::PhiNode).getAnInput() +private SsaDefinition getAPseudoInput(SsaDefinition def) { + result = def.(SsaPhiDefinition).getAnInput() } // `def.getAnUltimateDefinition()` includes inputs into uncertain // definitions, but we only want inputs into pseudo nodes -private Ssa::Definition getAnUltimateDefinition(Ssa::Definition def) { +private SsaDefinition getAnUltimateDefinition(SsaDefinition def) { result = getAPseudoInput*(def) and - not result instanceof Ssa::PhiNode + not result instanceof SsaPhiDefinition } /** @@ -256,21 +236,22 @@ private Ssa::Definition getAnUltimateDefinition(Ssa::Definition def) { * through an intermediate dereference that always throws a null reference * exception. */ -private predicate defReaches(Ssa::Definition def, ControlFlow::Node cfn) { - exists(def.getAFirstReadAtNode(cfn)) +private predicate defReaches(SsaDefinition def, ControlFlowNode cfn) { + Ssa::ssaGetAFirstUse(def).getControlFlowNode() = cfn or - exists(ControlFlow::Node mid | defReaches(def, mid) | + exists(ControlFlowNode mid | defReaches(def, mid) | SsaImpl::adjacentReadPairSameVar(_, mid, cfn) and - not mid = any(Dereference d | d.isAlwaysNull(def.getSourceVariable())).getAControlFlowNode() + not mid = any(Dereference d | d.isAlwaysNull(def.getSourceVariable())).getControlFlowNode() ) } private module NullnessConfig implements ControlFlowReachability::ConfigSig { - predicate source(ControlFlow::Node node, Ssa::Definition def) { defMaybeNull(def, node, _, _) } + predicate source(ControlFlowNode node, SsaDefinition def) { defMaybeNull(def, node, _, _) } - predicate sink(ControlFlow::Node node, Ssa::Definition def) { + predicate sink(ControlFlowNode node, SsaDefinition def) { exists(Dereference d | - dereferenceAt(node, def, d) and + dereferenceAt(def, d) and + node = d.getControlFlowNode() and not d instanceof NonNullExpr ) } @@ -283,13 +264,12 @@ private module NullnessConfig implements ControlFlowReachability::ConfigSig { private module NullnessFlow = ControlFlowReachability::Flow; predicate maybeNullDeref(Dereference d, Ssa::SourceVariable v, string msg, Element reason) { - exists( - Ssa::Definition origin, Ssa::Definition ssa, ControlFlow::Node src, ControlFlow::Node sink - | + exists(SsaDefinition origin, SsaDefinition ssa, ControlFlowNode src, ControlFlowNode sink | defMaybeNull(origin, src, msg, reason) and NullnessFlow::flow(src, origin, sink, ssa) and ssa.getSourceVariable() = v and - dereferenceAt(sink, ssa, d) and + dereferenceAt(ssa, d) and + sink = d.getControlFlowNode() and not d.isAlwaysNull(v) ) } @@ -340,10 +320,7 @@ class Dereference extends G::DereferenceableExpr { not p.getAnnotatedType().isNullableRefType() or p.fromSource() and - exists( - Ssa::ImplicitParameterDefinition def, - AssignableDefinitions::ImplicitParameterDefinition pdef - | + exists(SsaParameterInit def, AssignableDefinitions::ImplicitParameterDefinition pdef | p = def.getParameter() | p.getUnboundDeclaration() = pdef.getParameter() and @@ -353,9 +330,9 @@ class Dereference extends G::DereferenceableExpr { ) } - private predicate isAlwaysNull0(Ssa::Definition def) { - forall(Ssa::Definition input | input = getAnUltimateDefinition(def) | - input.(Ssa::ExplicitDefinition).getADefinition().getSource() instanceof AlwaysNullExpr + private predicate isAlwaysNull0(SsaDefinition def) { + forall(SsaDefinition input | input = getAnUltimateDefinition(def) | + input.(SsaExplicitWrite).getValue() instanceof AlwaysNullExpr ) and not nonNullDef(def) and this = def.getARead() and @@ -371,7 +348,7 @@ class Dereference extends G::DereferenceableExpr { // Exclude fields and properties, as they may not have an accurate SSA representation v.getAssignable() instanceof LocalScopeVariable and ( - forex(Ssa::Definition def0 | this = def0.getARead() | this.isAlwaysNull0(def0)) + forex(SsaDefinition def0 | this = def0.getARead() | this.isAlwaysNull0(def0)) or exists(G::GuardValue nv | this.(G::GuardedExpr).mustHaveValue(nv) and @@ -388,6 +365,6 @@ class Dereference extends G::DereferenceableExpr { */ predicate isFirstAlwaysNull(Ssa::SourceVariable v) { this.isAlwaysNull(v) and - defReaches(v.getAnSsaDefinition(), this.getAControlFlowNode()) + defReaches(v.getAnSsaDefinition(), this.getControlFlowNode()) } } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/SSA.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/SSA.qll index e8180201b9a8..fee6bedf0f3e 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/SSA.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/SSA.qll @@ -3,13 +3,14 @@ */ import csharp +private import internal.SsaImpl as SsaImpl +import SsaImpl::Ssa_ /** * Provides classes for working with static single assignment (SSA) form. */ module Ssa { - private import internal.SsaImpl as SsaImpl - private import semmle.code.csharp.internal.Location + import SsaImpl::Ssa_ pragma[nomagic] private predicate assignableDefinitionLocalScopeVariable( @@ -19,15 +20,6 @@ module Ssa { ad.getEnclosingCallable() = c } - pragma[nomagic] - private predicate localScopeSourceVariable( - SourceVariables::LocalScopeSourceVariable sv, LocalScopeVariable v, Callable c1, Callable c2 - ) { - sv.getAssignable() = v and - sv.getEnclosingCallable() = c1 and - v.getCallable() = c2 - } - /** * A variable that can be SSA converted. * @@ -54,7 +46,7 @@ module Ssa { not exists(result.getTargetAccess()) and exists(LocalScopeVariable v, Callable c | assignableDefinitionLocalScopeVariable(result, v, c) and - localScopeSourceVariable(this, v, c, _) + SsaImpl::localScopeSourceVariable(this, v, c, _) ) } @@ -82,7 +74,7 @@ module Ssa { * Gets an SSA definition that has this variable as its underlying * source variable. */ - Definition getAnSsaDefinition() { result.getSourceVariable() = this } + SsaDefinition getAnSsaDefinition() { result.getSourceVariable() = this } } /** Provides different types of `SourceVariable`s. */ @@ -158,16 +150,52 @@ module Ssa { } /** + * Gets a read of the source variable underlying the SSA definition `def` + * that can be reached from `def` without passing through any + * other SSA definition or read. Example: + * + * ```csharp + * int Field; + * + * void SetField(int i) { + * this.Field = i; + * Use(this.Field); + * if (i > 0) + * this.Field = i - 1; + * else if (i < 0) + * SetField(1); + * Use(this.Field); + * Use(this.Field); + * } + * ``` + * + * - The read of `i` on line 4 can be reached from the explicit SSA + * definition (wrapping an implicit entry definition) on line 3. + * - The reads of `i` on lines 6 and 7 are not the first reads of any SSA + * definition. + * - The read of `this.Field` on line 5 can be reached from the explicit SSA + * definition on line 4. + * - The read of `this.Field` on line 10 can be reached from the phi node + * between lines 9 and 10. + * - The read of `this.Field` on line 11 is not the first read of any SSA + * definition. + * + * Subsequent reads can be found by following the steps defined by + * `AssignableRead.getANextRead()`. + */ + AssignableRead ssaGetAFirstUse(SsaDefinition def) { SsaImpl::firstReadSameVar(def, result) } + + /** + * DEPRECATED: Use `SsaDefinition` instead. + * * A static single assignment (SSA) definition. Either an explicit variable * definition (`ExplicitDefinition`), an implicit variable definition * (`ImplicitDefinition`), or a phi node (`PhiNode`). */ - class Definition extends SsaImpl::Definition { + deprecated class Definition extends SsaImpl::Definition { /** Gets the control flow node of this SSA definition. */ - final ControlFlow::Node getControlFlowNode() { - exists(ControlFlow::BasicBlock bb, int i | this.definesAt(_, bb, i) | - result = bb.getNode(0.maximum(i)) - ) + final ControlFlowNode getControlFlowNode() { + exists(BasicBlock bb, int i | this.definesAt(_, bb, i) | result = bb.getNode(0.maximum(i))) } /** @@ -176,9 +204,7 @@ module Ssa { * point it is still live, without crossing another SSA definition of the * same source variable. */ - final predicate isLiveAtEndOfBlock(ControlFlow::BasicBlock bb) { - SsaImpl::isLiveAtEndOfBlock(this, bb) - } + final predicate isLiveAtEndOfBlock(BasicBlock bb) { SsaImpl::isLiveAtEndOfBlock(this, bb) } /** * Gets a read of the source variable underlying this SSA definition that @@ -207,9 +233,11 @@ module Ssa { * - The reads of `this.Field` on lines 10 and 11 can be reached from the phi * node between lines 9 and 10. */ - final AssignableRead getARead() { result = this.getAReadAtNode(_) } + final AssignableRead getARead() { result = SsaImpl::getAReadAtNode(this, _) } /** + * DEPRECATED: Use `getARead()` instead. + * * Gets a read of the source variable underlying this SSA definition at * control flow node `cfn` that can be reached from this SSA definition * without passing through any other SSA definitions. Example: @@ -236,11 +264,13 @@ module Ssa { * - The reads of `this.Field` on lines 10 and 11 can be reached from the phi * node between lines 9 and 10. */ - final AssignableRead getAReadAtNode(ControlFlow::Node cfn) { + deprecated final AssignableRead getAReadAtNode(ControlFlowNode cfn) { result = SsaImpl::getAReadAtNode(this, cfn) } /** + * DEPRECATED: Use `ssaGetAFirstUse` instead. + * * Gets a read of the source variable underlying this SSA definition that * can be reached from this SSA definition without passing through any * other SSA definition or read. Example: @@ -274,9 +304,11 @@ module Ssa { * Subsequent reads can be found by following the steps defined by * `AssignableRead.getANextRead()`. */ - final AssignableRead getAFirstRead() { result = this.getAFirstReadAtNode(_) } + deprecated final AssignableRead getAFirstRead() { result = this.getAFirstReadAtNode(_) } /** + * DEPRECATED: Use `ssaGetAFirstUse` instead. + * * Gets a read of the source variable underlying this SSA definition at * control flow node `cfn` that can be reached from this SSA definition * without passing through any other SSA definition or read. Example: @@ -310,72 +342,9 @@ module Ssa { * Subsequent reads can be found by following the steps defined by * `AssignableRead.getANextRead()`. */ - final AssignableRead getAFirstReadAtNode(ControlFlow::Node cfn) { - SsaImpl::firstReadSameVar(this, cfn) and - result.getAControlFlowNode() = cfn - } - - /** - * Gets a last read of the source variable underlying this SSA definition. - * That is, a read that can reach the end of the enclosing callable, or - * another SSA definition for the source variable, without passing through - * any other read. Example: - * - * ```csharp - * int Field; - * - * void SetField(int i) { - * this.Field = i; - * Use(this.Field); - * if (i > 0) - * this.Field = i - 1; - * else if (i < 0) - * SetField(1); - * Use(this.Field); - * Use(this.Field); - * } - * ``` - * - * - The reads of `i` on lines 7 and 8 are the last reads for the implicit - * parameter definition on line 3. - * - The read of `this.Field` on line 5 is a last read of the definition on - * line 4. - * - The read of `this.Field` on line 11 is a last read of the phi node - * between lines 9 and 10. - */ - deprecated final AssignableRead getALastRead() { result = this.getALastReadAtNode(_) } - - /** - * Gets a last read of the source variable underlying this SSA definition at - * control flow node `cfn`. That is, a read that can reach the end of the - * enclosing callable, or another SSA definition for the source variable, - * without passing through any other read. Example: - * - * ```csharp - * int Field; - * - * void SetField(int i) { - * this.Field = i; - * Use(this.Field); - * if (i > 0) - * this.Field = i - 1; - * else if (i < 0) - * SetField(1); - * Use(this.Field); - * Use(this.Field); - * } - * ``` - * - * - The reads of `i` on lines 7 and 8 are the last reads for the implicit - * parameter definition on line 3. - * - The read of `this.Field` on line 5 is a last read of the definition on - * line 4. - * - The read of `this.Field` on line 11 is a last read of the phi node - * between lines 9 and 10. - */ - deprecated final AssignableRead getALastReadAtNode(ControlFlow::Node cfn) { - SsaImpl::lastReadSameVar(this, cfn) and - result.getAControlFlowNode() = cfn + deprecated final AssignableRead getAFirstReadAtNode(ControlFlowNode cfn) { + SsaImpl::firstReadSameVar(this, result) and + result.getControlFlowNode() = cfn } /** @@ -383,8 +352,8 @@ module Ssa { * includes inputs to phi nodes and the prior definitions of uncertain writes. */ private Definition getAPhiInputOrPriorDefinition() { - result = this.(PhiNode).getAnInput() or - result = this.(UncertainDefinition).getPriorDefinition() + result = this.(SsaPhiDefinition).getAnInput() or + result = this.(SsaUncertainWrite).getPriorDefinition() } /** @@ -418,7 +387,7 @@ module Ssa { */ final Definition getAnUltimateDefinition() { result = this.getAPhiInputOrPriorDefinition*() and - not result instanceof PhiNode + not result instanceof SsaPhiDefinition } /** @@ -426,39 +395,50 @@ module Ssa { * This is either an expression, for example `x = 0`, a parameter, or a * callable. Phi nodes have no associated syntax element. */ - Element getElement() { result = this.getControlFlowNode().getAstNode() } + Element getElement() { + result.(ControlFlowElement).getControlFlowNode() = this.getControlFlowNode() + } - /** Gets the callable to which this SSA definition belongs. */ - final Callable getEnclosingCallable() { + /** + * DEPRECATED: Use `getSourceVariable().getEnclosingCallable()` instead. + * + * Gets the callable to which this SSA definition belongs. + */ + deprecated final Callable getEnclosingCallable() { result = this.getSourceVariable().getEnclosingCallable() } /** + * DEPRECATED. + * * Holds if this SSA definition assigns to `out`/`ref` parameter `p`, and the * parameter may remain unchanged throughout the rest of the enclosing callable. */ - final predicate isLiveOutRefParameterDefinition(Parameter p) { + deprecated final predicate isLiveOutRefParameterDefinition(Parameter p) { SsaImpl::isLiveOutRefParameterDefinition(this, p) } - - /** Gets the location of this SSA definition. */ - override Location getLocation() { none() } } /** + * DEPRECATED: Use `SsaExplicitWrite` instead. + * * An SSA definition that corresponds to an explicit assignable definition. */ - class ExplicitDefinition extends Definition, SsaImpl::WriteDefinition { + deprecated class ExplicitDefinition extends Definition, SsaImpl::WriteDefinition { AssignableDefinition ad; ExplicitDefinition() { SsaImpl::explicitDefinition(this, _, ad) } /** + * DEPRECATED: Use `SsaExplicitWrite.getDefinition()` instead. + * * Gets an underlying assignable definition. The result is always unique, * except for pathological `out`/`ref` assignments like `M(out x, out x)`, * where there may be more than one underlying definition. */ - final AssignableDefinition getADefinition() { result = SsaImpl::getADefinition(this) } + deprecated final AssignableDefinition getADefinition() { + result = SsaImpl::getADefinition(this) + } /** * DEPRECATED. @@ -484,7 +464,7 @@ module Ssa { * `M2` via the call on line 6. */ deprecated final predicate isCapturedVariableDefinitionFlowIn( - ImplicitEntryDefinition def, ControlFlow::Nodes::ElementNode c, boolean additionalCalls + ImplicitEntryDefinition def, ControlFlowNodes::ElementNode c, boolean additionalCalls ) { none() } @@ -519,24 +499,20 @@ module Ssa { } override Element getElement() { result = ad.getElement() } - - override string toString() { - result = SsaImpl::getToStringPrefix(this) + "SSA def(" + this.getSourceVariable() + ")" - } - - override Location getLocation() { result = ad.getLocation() } } /** + * DEPRECATED: Use `SsaParameterInit` or `SsaImplicitWrite` instead. + * * An SSA definition that does not correspond to an explicit variable definition. * Either an implicit initialization of a variable at the beginning of a callable * (`ImplicitEntryDefinition`), an implicit definition via a call * (`ImplicitCallDefinition`), or an implicit definition where the qualifier is * updated (`ImplicitQualifierDefinition`). */ - class ImplicitDefinition extends Definition, SsaImpl::WriteDefinition { + deprecated class ImplicitDefinition extends Definition, SsaImpl::WriteDefinition { ImplicitDefinition() { - exists(ControlFlow::BasicBlock bb, SourceVariable v, int i | this.definesAt(v, bb, i) | + exists(BasicBlock bb, SourceVariable v, int i | this.definesAt(v, bb, i) | SsaImpl::implicitEntryDefinition(bb, v) and i = -1 or @@ -548,93 +524,62 @@ module Ssa { } /** + * DEPRECATED: Use `SsaParameterInit` or `SsaImplicitEntryDefinition` instead. + * * An SSA definition representing the implicit initialization of a variable - * at the beginning of a callable. Either a parameter, a local scope variable - * captured by the callable, or a field or property accessed inside the callable. + * at the beginning of a callable. Either a local scope variable captured by + * the callable or a field or property accessed inside the callable. */ - class ImplicitEntryDefinition extends ImplicitDefinition { + deprecated class ImplicitEntryDefinition extends ImplicitDefinition { ImplicitEntryDefinition() { - exists(ControlFlow::BasicBlock bb, SourceVariable v | + exists(BasicBlock bb, SourceVariable v | this.definesAt(v, bb, -1) and SsaImpl::implicitEntryDefinition(bb, v) ) } /** Gets the callable that this entry definition belongs to. */ - final Callable getCallable() { result = this.getBasicBlock().getCallable() } + final Callable getCallable() { result = this.getBasicBlock().getEnclosingCallable() } override Element getElement() { result = this.getCallable() } - - override string toString() { - if this.getSourceVariable().getAssignable() instanceof LocalScopeVariable - then - result = - SsaImpl::getToStringPrefix(this) + "SSA capture def(" + this.getSourceVariable() + ")" - else - result = - SsaImpl::getToStringPrefix(this) + "SSA entry def(" + this.getSourceVariable() + ")" - } - - override Location getLocation() { result = this.getCallable().getLocation() } - } - - private module NearestLocationInput implements NearestLocationInputSig { - class C = ImplicitParameterDefinition; - - predicate relevantLocations(ImplicitParameterDefinition def, Location l1, Location l2) { - not def.getBasicBlock() instanceof ControlFlow::BasicBlocks::EntryBlock and - l1 = def.getParameter().getALocation() and - l2 = def.getBasicBlock().getLocation() - } - } - - pragma[nomagic] - private predicate implicitEntryDef(ImplicitEntryDefinition def, SourceVariable v, Callable c) { - v = def.getSourceVariable() and - c = def.getCallable() } /** - * An SSA definition representing the implicit initialization of a parameter - * at the beginning of a callable. + * DEPRECATED: Use `SsaParameterInit` instead. */ - class ImplicitParameterDefinition extends ImplicitEntryDefinition { + deprecated final class ImplicitParameterDefinition = SsaImpl::ParameterDefinitionImpl; + + deprecated private class ExplicitParameterDefinition extends ExplicitDefinition, + SsaImpl::ParameterDefinitionImpl + { private Parameter p; + override AssignableDefinitions::ImplicitParameterDefinition ad; - ImplicitParameterDefinition() { - exists(SourceVariable sv, Callable c | - implicitEntryDef(this, sv, c) and - localScopeSourceVariable(sv, p, _, c) - ) - } + ExplicitParameterDefinition() { p = ad.getParameter() } - /** Gets the parameter that this entry definition represents. */ - Parameter getParameter() { result = p } + override Parameter getParameter() { result = p } - override Element getElement() { result = this.getParameter() } + override string toString() { result = SsaImpl::ParameterDefinitionImpl.super.toString() } + } - override string toString() { - result = SsaImpl::getToStringPrefix(this) + "SSA param(" + this.getParameter() + ")" + /** An SSA definition in a closure that captures a variable. */ + class SsaCapturedDefinition extends SsaImplicitEntryDefinition { + SsaCapturedDefinition() { + this.getSourceVariable().getAssignable() instanceof LocalScopeVariable } - override Location getLocation() { - not NearestLocation::nearestLocation(this, _, _) and - result = p.getLocation() - or - // multi-bodied method: use matching parameter location - NearestLocation::nearestLocation(this, result, _) - } + override string toString() { result = "SSA capture def(" + this.getSourceVariable() + ")" } } /** * An SSA definition representing the potential definition of a variable * via a call. */ - class ImplicitCallDefinition extends ImplicitDefinition { + class ImplicitCallDefinition extends SsaImplicitWrite { private Call c; ImplicitCallDefinition() { - exists(ControlFlow::BasicBlock bb, SourceVariable v, int i | + exists(BasicBlock bb, SourceVariable v, int i | this.definesAt(v, bb, i) and SsaImpl::updatesNamedFieldOrProp(bb, i, c, v, _) ) @@ -656,24 +601,19 @@ module Ssa { ) } - override string toString() { - result = SsaImpl::getToStringPrefix(this) + "SSA call def(" + this.getSourceVariable() + ")" - } - - override Location getLocation() { result = this.getCall().getLocation() } + override string toString() { result = "SSA call def(" + this.getSourceVariable() + ")" } } /** * An SSA definition representing the potential definition of a variable * via an SSA definition for the qualifier. */ - class ImplicitQualifierDefinition extends ImplicitDefinition, SsaImpl::WriteDefinition { - private Definition q; + class ImplicitQualifierDefinition extends SsaImplicitWrite { + private SsaDefinition q; ImplicitQualifierDefinition() { - exists( - ControlFlow::BasicBlock bb, int i, SourceVariables::QualifiedFieldOrPropSourceVariable v - | + not this instanceof SsaImplicitEntryDefinition and + exists(BasicBlock bb, int i, SourceVariables::QualifiedFieldOrPropSourceVariable v | this.definesAt(v, bb, i) | SsaImpl::variableWriteQualifier(bb, i, v, _) and @@ -682,22 +622,19 @@ module Ssa { } /** Gets the SSA definition for the qualifier. */ - final Definition getQualifierDefinition() { result = q } + final SsaDefinition getQualifierDefinition() { result = q } - override string toString() { - result = - SsaImpl::getToStringPrefix(this) + "SSA qualifier def(" + this.getSourceVariable() + ")" - } - - override Location getLocation() { result = this.getQualifierDefinition().getLocation() } + override string toString() { result = "SSA qualifier def(" + this.getSourceVariable() + ")" } } /** + * DEPRECATED: Use `SsaPhiDefinition` instead. + * * An SSA phi node, that is, a pseudo definition for a variable at a point * in the flow graph where otherwise two or more definitions for the variable * would be visible. */ - class PhiNode extends Definition, SsaImpl::PhiNode { + deprecated class PhiNode extends Definition, SsaImpl::PhiNode { /** * Gets an input of this phi node. Example: * @@ -723,32 +660,20 @@ module Ssa { final Definition getAnInput() { this.hasInputFromBlock(result, _) } /** Holds if `inp` is an input to this phi node along the edge originating in `bb`. */ - predicate hasInputFromBlock(Definition inp, ControlFlow::BasicBlock bb) { + predicate hasInputFromBlock(Definition inp, BasicBlock bb) { inp = SsaImpl::phiHasInputFromBlock(this, bb) } - - override string toString() { - result = SsaImpl::getToStringPrefix(this) + "SSA phi(" + this.getSourceVariable() + ")" - } - - /* - * The location of a phi node is the same as the location of the first node - * in the basic block in which it is defined. - * - * Strictly speaking, the node is *before* the first node, but such a location - * does not exist in the source program. - */ - - override Location getLocation() { result = this.getBasicBlock().getFirstNode().getLocation() } } /** + * DEPRECATED: Use `SsaUncertainWrite` instead. + * * An SSA definition that represents an uncertain update of the underlying * assignable. Either an explicit update that is uncertain (`ref` assignments * need not be certain), an implicit non-local update via a call, or an * uncertain update of the qualifier. */ - class UncertainDefinition extends Definition, SsaImpl::UncertainWriteDefinition { + deprecated class UncertainDefinition extends Definition, SsaImpl::UncertainWriteDefinition { /** * Gets the immediately preceding definition. Since this update is uncertain, * the value from the preceding definition might still be valid. diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/SignAnalysis.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/SignAnalysis.qll index 6f6f38bd199f..e1d804e6548f 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/SignAnalysis.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/SignAnalysis.qll @@ -11,36 +11,32 @@ private import semmle.code.csharp.dataflow.internal.rangeanalysis.SignAnalysisCo /** Holds if `e` can be positive and cannot be negative. */ predicate positiveExpr(Expr e) { - forex(ControlFlow::Node cfn | cfn = e.getAControlFlowNode() | + exists(ControlFlowNode cfn | cfn = e.getControlFlowNode() | positive(cfn) or strictlyPositive(cfn) ) } /** Holds if `e` can be negative and cannot be positive. */ predicate negativeExpr(Expr e) { - forex(ControlFlow::Node cfn | cfn = e.getAControlFlowNode() | + exists(ControlFlowNode cfn | cfn = e.getControlFlowNode() | negative(cfn) or strictlyNegative(cfn) ) } /** Holds if `e` is strictly positive. */ -predicate strictlyPositiveExpr(Expr e) { - forex(ControlFlow::Node cfn | cfn = e.getAControlFlowNode() | strictlyPositive(cfn)) -} +predicate strictlyPositiveExpr(Expr e) { strictlyPositive(e.getControlFlowNode()) } /** Holds if `e` is strictly negative. */ -predicate strictlyNegativeExpr(Expr e) { - forex(ControlFlow::Node cfn | cfn = e.getAControlFlowNode() | strictlyNegative(cfn)) -} +predicate strictlyNegativeExpr(Expr e) { strictlyNegative(e.getControlFlowNode()) } /** Holds if `e` can be positive and cannot be negative. */ -predicate positive(ControlFlow::Nodes::ExprNode e) { Common::positive(e) } +predicate positive(ControlFlowNodes::ExprNode e) { Common::positive(e) } /** Holds if `e` can be negative and cannot be positive. */ -predicate negative(ControlFlow::Nodes::ExprNode e) { Common::negative(e) } +predicate negative(ControlFlowNodes::ExprNode e) { Common::negative(e) } /** Holds if `e` is strictly positive. */ -predicate strictlyPositive(ControlFlow::Nodes::ExprNode e) { Common::strictlyPositive(e) } +predicate strictlyPositive(ControlFlowNodes::ExprNode e) { Common::strictlyPositive(e) } /** Holds if `e` is strictly negative. */ -predicate strictlyNegative(ControlFlow::Nodes::ExprNode e) { Common::strictlyNegative(e) } +predicate strictlyNegative(ControlFlowNodes::ExprNode e) { Common::strictlyNegative(e) } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/BaseSSA.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/BaseSSA.qll index a994873274af..0e879ac94123 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/BaseSSA.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/BaseSSA.qll @@ -1,21 +1,40 @@ -import csharp +private import csharp as CS /** * Provides a simple SSA implementation for local scope variables. */ module BaseSsa { + private import BaseSsaImpl + + class SimpleLocalScopeVariable = BaseSsaImpl::SimpleLocalScopeVariable; + + module Ssa = SsaImpl::MakeSsa; + + import Ssa +} + +private module BaseSsaImpl { + private import CS private import AssignableDefinitions - private import semmle.code.csharp.controlflow.BasicBlocks as BasicBlocks private import codeql.ssa.Ssa as SsaImplCommon + cached + private module BaseSsaStage { + cached + predicate ref() { any() } + + cached + predicate backref() { (exists(any(BaseSsa::SsaDefinition def).getARead()) implies any()) } + } + /** * Holds if the `i`th node of basic block `bb` is assignable definition `def`, * targeting local scope variable `v`. */ private predicate definitionAt( - AssignableDefinition def, ControlFlow::BasicBlock bb, int i, SsaInput::SourceVariable v + AssignableDefinition def, BasicBlock bb, int i, SsaImplInput::SourceVariable v ) { - bb.getNode(i) = def.getExpr().getAControlFlowNode() and + bb.getNode(i) = def.getExpr().getControlFlowNode() and v = def.getTarget() and // In cases like `(x, x) = (0, 1)`, we discard the first (dead) definition of `x` not exists(TupleAssignmentDefinition first, TupleAssignmentDefinition second | first = def | @@ -25,11 +44,9 @@ module BaseSsa { ) } - private predicate implicitEntryDef( - Callable c, ControlFlow::BasicBlocks::EntryBlock bb, SsaInput::SourceVariable v - ) { - exists(ControlFlow::BasicBlocks::EntryBlock entry | - c = entry.getCallable() and + private predicate entryDef(Callable c, BasicBlock bb, SsaImplInput::SourceVariable v) { + exists(EntryBasicBlock entry | + c = entry.getEnclosingCallable() and // In case `c` has multiple bodies, we want each body to get its own implicit // entry definition. In case `c` doesn't have multiple bodies, the line below // is simply the same as `bb = entry`, because `entry.getFirstNode().getASuccessor()` @@ -82,77 +99,53 @@ module BaseSsa { } } - private module SsaInput implements SsaImplCommon::InputSig { + private module SsaImplInput implements SsaImplCommon::InputSig { class SourceVariable = SimpleLocalScopeVariable; - predicate variableWrite(ControlFlow::BasicBlock bb, int i, SourceVariable v, boolean certain) { + predicate variableWrite(BasicBlock bb, int i, SourceVariable v, boolean certain) { + BaseSsaStage::ref() and exists(AssignableDefinition def | definitionAt(def, bb, i, v) and if def.isCertain() then certain = true else certain = false ) or - implicitEntryDef(_, bb, v) and + entryDef(_, bb, v) and i = -1 and certain = true } - predicate variableRead(ControlFlow::BasicBlock bb, int i, SourceVariable v, boolean certain) { + predicate variableRead(BasicBlock bb, int i, SourceVariable v, boolean certain) { exists(AssignableRead read | - read.getAControlFlowNode() = bb.getNode(i) and + read.getControlFlowNode() = bb.getNode(i) and read.getTarget() = v and certain = true ) } } - private module SsaImpl = SsaImplCommon::Make; + module SsaImpl = SsaImplCommon::Make; - class Definition extends SsaImpl::Definition { - final AssignableRead getARead() { - exists(ControlFlow::BasicBlock bb, int i | - SsaImpl::ssaDefReachesRead(_, this, bb, i) and - result.getAControlFlowNode() = bb.getNode(i) - ) - } + module SsaInput implements SsaImpl::SsaInputSig { + class Expr = CS::Expr; - final AssignableDefinition getDefinition() { - exists(ControlFlow::BasicBlock bb, int i, SsaInput::SourceVariable v | - this.definesAt(v, bb, i) and - definitionAt(result, bb, i, v) - ) - } + class Parameter = CS::Parameter; - final predicate isImplicitEntryDefinition(SsaInput::SourceVariable v) { - exists(ControlFlow::BasicBlock bb | - this.definesAt(v, bb, -1) and - implicitEntryDef(_, bb, v) - ) - } + class VariableWrite extends AssignableDefinition { + Expr asExpr() { result = this.getExpr() } - private Definition getAPhiInputOrPriorDefinition() { - result = this.(PhiNode).getAnInput() or - SsaImpl::uncertainWriteDefinitionInput(this, result) - } + Expr getValue() { result = this.getSource() } - final Definition getAnUltimateDefinition() { - result = this.getAPhiInputOrPriorDefinition*() and - not result instanceof PhiNode + predicate isParameterInit(Parameter p) { + this.(ImplicitParameterDefinition).getParameter() = p + } } - override Location getLocation() { - result = this.getDefinition().getLocation() + predicate explicitWrite(VariableWrite w, BasicBlock bb, int i, SsaImplInput::SourceVariable v) { + definitionAt(w, bb, i, v) or - exists(Callable c, ControlFlow::BasicBlock bb, SsaInput::SourceVariable v | - this.definesAt(v, bb, -1) and - implicitEntryDef(c, bb, v) and - result = c.getLocation() - ) + entryDef(_, bb, v) and + i = -1 and + w.isParameterInit(v) } } - - class PhiNode extends SsaImpl::PhiNode, Definition { - override Location getLocation() { result = this.getBasicBlock().getLocation() } - - final Definition getAnInput() { SsaImpl::phiHasInputFromBlock(this, result, _) } - } } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowDispatch.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowDispatch.qll index be183815c715..e365385c6d44 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowDispatch.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowDispatch.qll @@ -28,8 +28,8 @@ newtype TReturnKind = private predicate hasMultipleSourceLocations(Callable c) { strictcount(getASourceLocation(c)) > 1 } private predicate objectInitEntry(ObjectInitMethod m, ControlFlowElement first) { - exists(ControlFlow::Nodes::EntryNode en | - en.getCallable() = m and first.getControlFlowNode() = en.getASuccessor() + exists(ControlFlow::EntryNode en | + en.getEnclosingCallable() = m and first = en.getASuccessor().getAstNode() ) } @@ -73,12 +73,12 @@ private module Cached { cached newtype TDataFlowCall = - TNonDelegateCall(ControlFlow::Nodes::ElementNode cfn, DispatchCall dc) { + TNonDelegateCall(ControlFlowNodes::ElementNode cfn, DispatchCall dc) { DataFlowImplCommon::forceCachingInSameStage() and - cfn.getAstNode() = dc.getCall() + cfn.asExpr() = dc.getCall() } or - TExplicitDelegateLikeCall(ControlFlow::Nodes::ElementNode cfn, DelegateLikeCall dc) { - cfn.getAstNode() = dc + TExplicitDelegateLikeCall(ControlFlowNodes::ElementNode cfn, DelegateLikeCall dc) { + cfn.asExpr() = dc } or TSummaryCall(FlowSummary::SummarizedCallable c, FlowSummaryImpl::Private::SummaryNode receiver) { FlowSummaryImpl::Private::summaryCallbackRange(c, receiver) @@ -210,60 +210,63 @@ class DataFlowCallable extends TDataFlowCallable { } pragma[nomagic] - private ControlFlow::Nodes::ElementNode getAMultiBodyEntryNode(ControlFlow::BasicBlock bb, int i) { + private BasicBlock getAMultiBodyEntryBlock() { this.isMultiBodied() and exists(ControlFlowElement body, Location l | body = this.asCallable(l).getBody() or objectInitEntry(this.asCallable(l), body) | NearestLocation::nearestLocation(body, l, _) and - result = body.getAControlFlowEntryNode() - ) and - bb.getNode(i) = result + result.getANode().isBefore(body) + ) } pragma[nomagic] - private ControlFlow::Nodes::ElementNode getAMultiBodyControlFlowNodePred() { - result = this.getAMultiBodyEntryNode(_, _).getAPredecessor() + private BasicBlock getAMultiBodyControlFlowPred() { + result = this.getAMultiBodyEntryBlock().getAPredecessor() or - result = this.getAMultiBodyControlFlowNodePred().getAPredecessor() - } - - pragma[nomagic] - private ControlFlow::Nodes::ElementNode getAMultiBodyControlFlowNodeSuccSameBasicBlock() { - exists(ControlFlow::BasicBlock bb, int i, int j | - exists(this.getAMultiBodyEntryNode(bb, i)) and - result = bb.getNode(j) and - j > i - ) + result = this.getAMultiBodyControlFlowPred().getAPredecessor() } pragma[nomagic] - private ControlFlow::BasicBlock getAMultiBodyBasicBlockSucc() { - result = this.getAMultiBodyEntryNode(_, _).getBasicBlock().getASuccessor() + private BasicBlock getAMultiBodyBasicBlockSucc() { + result = this.getAMultiBodyEntryBlock().getASuccessor() or result = this.getAMultiBodyBasicBlockSucc().getASuccessor() } - pragma[inline] - private ControlFlow::Nodes::ElementNode getAMultiBodyControlFlowNode() { + pragma[nomagic] + private BasicBlock getAMultiBodyBasicBlock() { result = [ - this.getAMultiBodyEntryNode(_, _), this.getAMultiBodyControlFlowNodePred(), - this.getAMultiBodyControlFlowNodeSuccSameBasicBlock(), - this.getAMultiBodyBasicBlockSucc().getANode() + this.getAMultiBodyEntryBlock(), this.getAMultiBodyControlFlowPred(), + this.getAMultiBodyBasicBlockSucc() ] } + pragma[inline] + private ControlFlowNode getAMultiBodyControlFlowNode() { + result = this.getAMultiBodyBasicBlock().getANode() + } + /** Gets a control flow node belonging to this callable. */ pragma[inline] - ControlFlow::Node getAControlFlowNode() { + ControlFlowNode getAControlFlowNode() { result = this.getAMultiBodyControlFlowNode() or not this.isMultiBodied() and result.getEnclosingCallable() = this.asCallable(_) } + /** Gets a basic block belonging to this callable. */ + pragma[inline] + BasicBlock getABasicBlock() { + result = this.getAMultiBodyBasicBlock() + or + not this.isMultiBodied() and + result.getEnclosingCallable() = this.asCallable(_) + } + /** Gets the underlying summarized callable, if any. */ FlowSummary::SummarizedCallable asSummarizedCallable() { this = TSummarizedCallable(result) } @@ -307,7 +310,7 @@ abstract class DataFlowCall extends TDataFlowCall { abstract DataFlowCallable getARuntimeTarget(); /** Gets the control flow node where this call happens, if any. */ - abstract ControlFlow::Nodes::ElementNode getControlFlowNode(); + abstract ControlFlowNodes::ElementNode getControlFlowNode(); /** Gets the data flow node corresponding to this call, if any. */ abstract DataFlow::Node getNode(); @@ -363,7 +366,7 @@ private predicate folderDist(Folder f1, Folder f2, int i) = /** A non-delegate C# call relevant for data flow. */ class NonDelegateDataFlowCall extends DataFlowCall, TNonDelegateCall { - private ControlFlow::Nodes::ElementNode cfn; + private ControlFlowNodes::ElementNode cfn; private DispatchCall dc; NonDelegateDataFlowCall() { this = TNonDelegateCall(cfn, dc) } @@ -436,7 +439,7 @@ class NonDelegateDataFlowCall extends DataFlowCall, TNonDelegateCall { not dc.isReflection() } - override ControlFlow::Nodes::ElementNode getControlFlowNode() { result = cfn } + override ControlFlowNodes::ElementNode getControlFlowNode() { result = cfn } override DataFlow::ExprNode getNode() { result.getControlFlowNode() = cfn } @@ -452,7 +455,7 @@ abstract class DelegateDataFlowCall extends DataFlowCall { } /** An explicit delegate or function pointer call relevant for data flow. */ class ExplicitDelegateLikeDataFlowCall extends DelegateDataFlowCall, TExplicitDelegateLikeCall { - private ControlFlow::Nodes::ElementNode cfn; + private ControlFlowNodes::ElementNode cfn; private DelegateLikeCall dc; ExplicitDelegateLikeDataFlowCall() { this = TExplicitDelegateLikeCall(cfn, dc) } @@ -464,7 +467,7 @@ class ExplicitDelegateLikeDataFlowCall extends DelegateDataFlowCall, TExplicitDe none() // handled by the shared library } - override ControlFlow::Nodes::ElementNode getControlFlowNode() { result = cfn } + override ControlFlowNodes::ElementNode getControlFlowNode() { result = cfn } override DataFlow::ExprNode getNode() { result.getControlFlowNode() = cfn } @@ -495,7 +498,7 @@ class SummaryCall extends DelegateDataFlowCall, TSummaryCall { none() // handled by the shared library } - override ControlFlow::Nodes::ElementNode getControlFlowNode() { none() } + override ControlFlowNodes::ElementNode getControlFlowNode() { none() } override DataFlow::Node getNode() { none() } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplSpecific.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplSpecific.qll index af104d777b87..ab1e75b3d0fc 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplSpecific.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowImplSpecific.qll @@ -29,4 +29,8 @@ module CsharpDataFlow implements InputSig { predicate neverSkipInPathGraph(Node n) { exists(n.(AssignableDefinitionNode).getDefinition().getTargetAccess()) } + + DataFlowType getSourceContextParameterNodeType(Node p) { + exists(p) and result.isSourceContextParameterType() + } } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll index 109c27de67be..f0d4bd996214 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPrivate.qll @@ -41,13 +41,13 @@ predicate isArgumentNode(ArgumentNode arg, DataFlowCall c, ArgumentPosition pos) * Gets a control flow node used for data flow purposes for the primary constructor * parameter access `pa`. */ -private ControlFlow::Node getAPrimaryConstructorParameterCfn(ParameterAccess pa) { +private ControlFlowNode getAPrimaryConstructorParameterCfn(ParameterAccess pa) { pa.getTarget().getCallable() instanceof PrimaryConstructor and ( - result = pa.(ParameterRead).getAControlFlowNode() + result = pa.(ParameterRead).getControlFlowNode() or pa = - any(AssignableDefinition def | result = def.getExpr().getAControlFlowNode()).getTargetAccess() + any(AssignableDefinition def | result = def.getExpr().getControlFlowNode()).getTargetAccess() ) } @@ -72,7 +72,7 @@ abstract class NodeImpl extends Node { /** Do not call: use `getControlFlowNode()` instead. */ cached - abstract ControlFlow::Node getControlFlowNodeImpl(); + abstract ControlFlowNode getControlFlowNodeImpl(); /** Do not call: use `getLocation()` instead. */ cached @@ -83,22 +83,9 @@ abstract class NodeImpl extends Node { abstract string toStringImpl(); } -// TODO: Remove once static initializers are folded into the -// static constructors -private DataFlowCallable getEnclosingStaticFieldOrProperty(Expr e) { - result.asFieldOrProperty() = - any(FieldOrProperty f | - f.isStatic() and - e = f.getAChild+() and - not exists(e.getEnclosingCallable()) - ) -} - private class ExprNodeImpl extends ExprNode, NodeImpl { override DataFlowCallable getEnclosingCallableImpl() { result.getAControlFlowNode() = this.getControlFlowNodeImpl() - or - result = getEnclosingStaticFieldOrProperty(this.asExpr()) } override Type getTypeImpl() { @@ -106,7 +93,7 @@ private class ExprNodeImpl extends ExprNode, NodeImpl { result = this.getExpr().getType() } - override ControlFlow::Nodes::ElementNode getControlFlowNodeImpl() { + override ControlFlowNodes::ElementNode getControlFlowNodeImpl() { forceCachingInSameStage() and this = TExprNode(result) } @@ -127,13 +114,13 @@ private class ExprNodeImpl extends ExprNode, NodeImpl { * as if they were lambdas. */ abstract private class LocalFunctionCreationNode extends NodeImpl, TLocalFunctionCreationNode { - ControlFlow::Nodes::ElementNode cfn; + ControlFlowNodes::ElementNode cfn; LocalFunction function; boolean isPostUpdate; LocalFunctionCreationNode() { this = TLocalFunctionCreationNode(cfn, isPostUpdate) and - function = cfn.getAstNode().(LocalFunctionStmt).getLocalFunction() + function = cfn.asStmt().(LocalFunctionStmt).getLocalFunction() } LocalFunction getFunction() { result = function } @@ -151,9 +138,9 @@ abstract private class LocalFunctionCreationNode extends NodeImpl, TLocalFunctio override DataFlowType getDataFlowType() { result.asDelegate() = function } - override ControlFlow::Nodes::ElementNode getControlFlowNodeImpl() { none() } + override ControlFlowNodes::ElementNode getControlFlowNodeImpl() { none() } - ControlFlow::Nodes::ElementNode getUnderlyingControlFlowNode() { result = cfn } + ControlFlowNodes::ElementNode getUnderlyingControlFlowNode() { result = cfn } override Location getLocationImpl() { result = cfn.getLocation() } } @@ -166,13 +153,11 @@ private class LocalFunctionCreationPreNode extends LocalFunctionCreationNode { /** Calculation of the relative order in which `this` references are read. */ private module ThisFlow { - private class BasicBlock = ControlFlow::BasicBlock; - /** Holds if `e` is a `this` access. */ predicate thisAccessExpr(Expr e) { e instanceof ThisAccess or e instanceof BaseAccess } /** Holds if `n` is a `this` access at control flow node `cfn`. */ - private predicate thisAccess(Node n, ControlFlow::Node cfn) { + private predicate thisAccess(Node n, ControlFlowNode cfn) { thisAccessExpr(n.asExprAtNode(cfn)) or cfn = n.(InstanceParameterAccessPreNode).getUnderlyingControlFlowNode() @@ -181,7 +166,7 @@ private module ThisFlow { private predicate primaryConstructorThisAccess(Node n, BasicBlock bb, int ppos) { exists(Parameter p | n.(PrimaryConstructorThisAccessPreNode).getParameter() = p and - bb.getCallable() = p.getCallable() and + bb.getEnclosingCallable() = p.getCallable() and ppos = p.getPosition() ) } @@ -190,6 +175,18 @@ private module ThisFlow { result = strictcount(int primaryParamPos | primaryConstructorThisAccess(_, bb, primaryParamPos)) } + private module BodyNearestLocationInput implements NearestLocationInputSig { + class C = ControlFlowElement; + + predicate relevantLocations(ControlFlowElement body, Location l1, Location l2) { + exists(DataFlowCallable c | + any(InstanceParameterNode p).isParameterOf(c, _) and + body = c.asCallable(l1).getBody() and + l2 = body.getLocation() + ) + } + } + private predicate thisAccess(Node n, BasicBlock bb, int i) { thisAccess(n, bb.getNode(i)) or @@ -198,21 +195,29 @@ private module ThisFlow { i = ppos - numberOfPrimaryConstructorParameters(bb) ) or - exists(DataFlowCallable c, ControlFlow::BasicBlocks::EntryBlock entry | - n.(InstanceParameterNode).isParameterOf(c, _) and - exists(ControlFlow::Node succ | - succ = c.getAControlFlowNode() and - succ = entry.getFirstNode().getASuccessor() and + exists(Callable c, InstanceParameterNode p, Location l | + p = n and + c = p.getCallable(l) and + ( // In case `c` has multiple bodies, we want each body to gets its own implicit - // entry definition. In case `c` doesn't have multiple bodies, the line below - // is simply the same as `bb = entry`, because `entry.getFirstNode().getASuccessor()` - // will be in the entry block. - bb = succ.getBasicBlock() - | - i = -1 - numberOfPrimaryConstructorParameters(bb) + // entry definition. + exists(ControlFlowElement body | + body = c.getBody() and + bb.getANode().isBefore(body) and + NearestLocation::nearestLocation(body, l, _) + ) or - not exists(numberOfPrimaryConstructorParameters(bb)) and i = -1 + not c.hasBody() and + exists(EntryBasicBlock entry, ControlFlowNode succ | + succ = p.getEnclosingCallableImpl().getAControlFlowNode() and + succ = entry.getFirstNode().getASuccessor() and + bb = succ.getBasicBlock() + ) ) + | + i = -1 - numberOfPrimaryConstructorParameters(bb) + or + not exists(numberOfPrimaryConstructorParameters(bb)) and i = -1 ) } @@ -261,33 +266,30 @@ private module ThisFlow { /** Provides logic related to captured variables. */ module VariableCapture { private import codeql.dataflow.VariableCapture as Shared - private import semmle.code.csharp.controlflow.BasicBlocks as BasicBlocks - private predicate closureFlowStep(ControlFlow::Nodes::ExprNode e1, ControlFlow::Nodes::ExprNode e2) { + private predicate closureFlowStep(ControlFlowNodes::ExprNode e1, ControlFlowNodes::ExprNode e2) { e1.getExpr() = LocalFlow::getALastEvalNode(e2.getExpr()) or - exists(Ssa::Definition def, AssignableDefinition adef | + exists(SsaDefinition def, AssignableDefinition adef | LocalFlow::defAssigns(adef, _, _, e1) and - def.getAnUltimateDefinition().(Ssa::ExplicitDefinition).getADefinition() = adef and - exists(def.getAReadAtNode(e2)) + def.getAnUltimateDefinition().(SsaExplicitWrite).getDefinition() = adef and + def.getARead().getControlFlowNode() = e2 ) } - private module CaptureInput implements Shared::InputSig { + private module CaptureInput implements Shared::InputSig { private import csharp as CS private import semmle.code.csharp.controlflow.ControlFlowGraph as Cfg private import TaintTrackingPrivate as TaintTrackingPrivate - Callable basicBlockGetEnclosingCallable(BasicBlocks::BasicBlock bb) { - result = bb.getCallable() - } + Callable basicBlockGetEnclosingCallable(BasicBlock bb) { result = bb.getEnclosingCallable() } - private predicate thisAccess(ControlFlow::Node cfn, InstanceCallable c) { - ThisFlow::thisAccessExpr(cfn.getAstNode()) and + private predicate thisAccess(ControlFlowNode cfn, InstanceCallable c) { + ThisFlow::thisAccessExpr(cfn.asExpr()) and cfn.getEnclosingCallable().getEnclosingCallable*() = c } - private predicate capturedThisAccess(ControlFlow::Node cfn, InstanceCallable c) { + private predicate capturedThisAccess(ControlFlowNode cfn, InstanceCallable c) { thisAccess(cfn, c) and cfn.getEnclosingCallable() != c } @@ -347,8 +349,8 @@ module VariableCapture { } } - class Expr extends ControlFlow::Node { - predicate hasCfgNode(BasicBlocks::BasicBlock bb, int i) { this = bb.getNode(i) } + class Expr extends ControlFlowNode { + predicate hasCfgNode(BasicBlock bb, int i) { this = bb.getNode(i) } } class VariableWrite extends Expr { @@ -357,10 +359,10 @@ module VariableCapture { VariableWrite() { def.getTarget() = v.asLocalScopeVariable() and - this = def.getExpr().getAControlFlowNode() + this = def.getExpr().getControlFlowNode() } - ControlFlow::Node getRhs() { LocalFlow::defAssigns(def, this, _, result) } + ControlFlowNode getRhs() { LocalFlow::defAssigns(def, this, _, result) } CapturedVariable getVariable() { result = v } } @@ -369,7 +371,7 @@ module VariableCapture { CapturedVariable v; VariableRead() { - this.getAstNode().(AssignableRead).getTarget() = v.asLocalScopeVariable() + this.asExpr().(AssignableRead).getTarget() = v.asLocalScopeVariable() or thisAccess(this, v.asThis()) } @@ -380,14 +382,16 @@ module VariableCapture { class ClosureExpr extends Expr { Callable c; - ClosureExpr() { lambdaCreationExpr(this.getAstNode(), c) } + ClosureExpr() { + lambdaCreationExpr(any(ControlFlowElement e | e.getControlFlowNode() = this), c) + } predicate hasBody(Callable body) { body = c } predicate hasAliasedAccess(Expr f) { closureFlowStep+(this, f) and not closureFlowStep(f, _) or - isLocalFunctionCallReceiver(_, f.getAstNode(), c) + isLocalFunctionCallReceiver(_, f.asExpr(), c) } } @@ -400,7 +404,7 @@ module VariableCapture { class ClosureExpr = CaptureInput::ClosureExpr; - module Flow = Shared::Flow; + module Flow = Shared::Flow; private Flow::ClosureNode asClosureNode(Node n) { result = n.(CaptureNode).getSynthesizedCaptureNode() @@ -528,7 +532,7 @@ module LocalFlow { e2 = any(AssignExpr ae | ae.getParent() = any(ControlFlowElement cfe | not cfe instanceof ExprStmt) and - e1 = ae.getRValue() + e1 = ae.getRightOperand() ) or e1 = e2.(ObjectCreation).getInitializer() @@ -554,7 +558,7 @@ module LocalFlow { e2 = we ) or - exists(AssignExpr ae | ae.getLValue().(TupleExpr) = e2 and ae.getRValue() = e1) + exists(AssignExpr ae | ae.getLeftOperand().(TupleExpr) = e2 and ae.getRightOperand() = e1) or exists(ControlFlowElement cfe | cfe = e2.(TupleExpr).(PatternExpr).getPatternMatch() | cfe.(IsExpr).getExpr() = e1 @@ -564,15 +568,15 @@ module LocalFlow { } predicate defAssigns( - AssignableDefinition def, ControlFlow::Node cfnDef, Expr value, ControlFlow::Node valueCfn + AssignableDefinition def, ControlFlowNode cfnDef, Expr value, ControlFlowNode valueCfn ) { def.getSource() = value and valueCfn = value.getControlFlowNode() and - cfnDef = def.getExpr().getAControlFlowNode() + cfnDef = def.getExpr().getControlFlowNode() } private predicate defAssigns(ExprNode value, AssignableDefinitionNode defNode) { - exists(ControlFlow::Node cfn, AssignableDefinition def, ControlFlow::Node cfnDef | + exists(ControlFlowNode cfn, AssignableDefinition def, ControlFlowNode cfnDef | defAssigns(def, cfnDef, value.getExpr(), _) and cfn = value.getControlFlowNode() and defNode = TAssignableDefinitionNode(def, cfnDef) @@ -596,8 +600,8 @@ module LocalFlow { or ThisFlow::adjacentThisRefs(nodeFrom.(PostUpdateNode).getPreUpdateNode(), nodeTo) or - exists(AssignableDefinition def, ControlFlow::Node cfn, Ssa::ExplicitDefinition ssaDef | - ssaDef.getADefinition() = def and + exists(AssignableDefinition def, ControlFlowNode cfn, SsaExplicitWrite ssaDef | + ssaDef.getDefinition() = def and ssaDef.getControlFlowNode() = cfn and nodeFrom = TAssignableDefinitionNode(def, cfn) and nodeTo.(SsaDefinitionNode).getDefinition() = ssaDef @@ -764,6 +768,7 @@ private class Argument extends Expr { * * `postUpdate` indicates whether the store targets a post-update node. */ +pragma[nomagic] private predicate fieldOrPropertyStore(ContentSet c, Expr src, Expr q, boolean postUpdate) { exists(FieldOrProperty f | c = f.getContentSet() and @@ -795,7 +800,7 @@ private predicate fieldOrPropertyStore(ContentSet c, Expr src, Expr q, boolean p q = we and mi = we.getInitializer().getAMemberInitializer() and f = mi.getInitializedMember() and - src = mi.getRValue() and + src = mi.getRightOperand() and postUpdate = false ) or @@ -804,16 +809,16 @@ private predicate fieldOrPropertyStore(ContentSet c, Expr src, Expr q, boolean p mi = q.(ObjectInitializer).getAMemberInitializer() and q.getParent() instanceof ObjectCreation and f = mi.getInitializedMember() and - src = mi.getRValue() and + src = mi.getRightOperand() and postUpdate = false ) or // Tuple element, `(..., src, ...)` `f` is `ItemX` of tuple `q` exists(TupleExpr te, int i | te = q and - src = te.getArgument(i) and + src = te.getArgument(pragma[only_bind_into](i)) and te.isConstruction() and - f = q.getType().(TupleType).getElement(i) and + f = q.getType().(TupleType).getElement(pragma[only_bind_into](i)) and postUpdate = false ) ) @@ -879,8 +884,8 @@ private predicate arrayStore(Expr src, Expr a, boolean postUpdate) { // Member initializer, `new C { Array = { [i] = src } }` exists(MemberInitializer mi | mi = a.(ObjectInitializer).getAMemberInitializer() and - mi.getLValue() instanceof ArrayAccess and - mi.getRValue() = src and + mi.getLeftOperand() instanceof ArrayAccess and + mi.getRightOperand() = src and postUpdate = false ) } @@ -933,8 +938,6 @@ private Gvn::GvnType getANonTypeParameterSubTypeRestricted(RelevantGvnType t) { /** A callable with an implicit `this` parameter. */ private class InstanceCallable extends Callable { - private Location l; - InstanceCallable() { not this.(Modifiable).isStatic() and // local functions and delegate capture `this` and should therefore @@ -942,8 +945,6 @@ private class InstanceCallable extends Callable { not this instanceof LocalFunction and not this instanceof AnonymousFunctionExpr } - - Location getARelevantLocation() { result = l } } /** @@ -1024,34 +1025,33 @@ private module Cached { cached newtype TNode = - TExprNode(ControlFlow::Nodes::ElementNode cfn) { cfn.getAstNode() instanceof Expr } or + TExprNode(ControlFlowNodes::ElementNode cfn) { exists(cfn.asExpr()) } or TSsaNode(SsaImpl::DataFlowIntegration::SsaNode node) or - TAssignableDefinitionNode(AssignableDefinition def, ControlFlow::Node cfn) { - cfn = def.getExpr().getAControlFlowNode() + TAssignableDefinitionNode(AssignableDefinition def, ControlFlowNode cfn) { + cfn = def.getExpr().getControlFlowNode() } or TExplicitParameterNode(Parameter p, DataFlowCallable c) { p = c.asCallable(_).(CallableUsedInSource).getAParameter() } or TInstanceParameterNode(InstanceCallable c, Location l) { c = any(DataFlowCallable dfc).asCallable(l) and - c instanceof CallableUsedInSource and - l = c.getARelevantLocation() + c instanceof CallableUsedInSource } or TDelegateSelfReferenceNode(Callable c) { lambdaCreationExpr(_, c) } or - TLocalFunctionCreationNode(ControlFlow::Nodes::ElementNode cfn, Boolean isPostUpdate) { - cfn.getAstNode() instanceof LocalFunctionStmt + TLocalFunctionCreationNode(ControlFlowNodes::ElementNode cfn, Boolean isPostUpdate) { + cfn.asStmt() instanceof LocalFunctionStmt } or - TYieldReturnNode(ControlFlow::Nodes::ElementNode cfn) { - any(Callable c).canYieldReturn(cfn.getAstNode()) + TYieldReturnNode(ControlFlowNodes::ElementNode cfn) { + any(Callable c).canYieldReturn(cfn.asExpr()) } or - TAsyncReturnNode(ControlFlow::Nodes::ElementNode cfn) { - any(Callable c | c.(Modifiable).isAsync()).canReturn(cfn.getAstNode()) + TAsyncReturnNode(ControlFlowNodes::ElementNode cfn) { + any(Callable c | c.(Modifiable).isAsync()).canReturn(cfn.asExpr()) } or - TMallocNode(ControlFlow::Nodes::ElementNode cfn) { cfn.getAstNode() instanceof ObjectCreation } or - TObjectInitializerNode(ControlFlow::Nodes::ElementNode cfn) { - cfn.getAstNode().(ObjectCreation).hasInitializer() + TMallocNode(ControlFlowNodes::ElementNode cfn) { cfn.asExpr() instanceof ObjectCreation } or + TObjectInitializerNode(ControlFlowNodes::ElementNode cfn) { + cfn.asExpr().(ObjectCreation).hasInitializer() } or - TExprPostUpdateNode(ControlFlow::Nodes::ExprNode cfn) { + TExprPostUpdateNode(ControlFlowNodes::ExprNode cfn) { ( cfn.getExpr() instanceof Argument or @@ -1070,7 +1070,7 @@ private module Cached { // needed for reverse stores; e.g. `x.f1.f2 = y` induces // a store step of `f1` into `x` exists(TExprPostUpdateNode upd, Expr read | - upd = TExprPostUpdateNode(read.getAControlFlowNode()) + upd = TExprPostUpdateNode(read.getControlFlowNode()) | fieldOrPropertyRead(e, _, read) or @@ -1085,12 +1085,12 @@ private module Cached { TFlowSummaryNode(FlowSummaryImpl::Private::SummaryNode sn) { sn.getSummarizedCallable() instanceof CallableUsedInSource } or - TParamsArgumentNode(ControlFlow::Node callCfn) { - callCfn = any(Call c | isParamsArg(c, _, _)).getAControlFlowNode() + TParamsArgumentNode(ControlFlowNode callCfn) { + callCfn = any(Call c | isParamsArg(c, _, _)).getControlFlowNode() } or TFlowInsensitiveFieldNode(FieldOrPropertyUsedInSource f) { f.isFieldLike() } or TFlowInsensitiveCapturedVariableNode(LocalScopeVariable v) { v.isCaptured() } or - TInstanceParameterAccessNode(ControlFlow::Node cfn, Boolean isPostUpdate) { + TInstanceParameterAccessNode(ControlFlowNode cfn, Boolean isPostUpdate) { cfn = getAPrimaryConstructorParameterCfn(_) } or TPrimaryConstructorThisAccessNode(Parameter p, Boolean isPostUpdate, DataFlowCallable c) { @@ -1179,7 +1179,8 @@ private module Cached { cached newtype TDataFlowType = TGvnDataFlowType(Gvn::GvnType t) or - TDelegateDataFlowType(Callable lambda) { lambdaCreationExpr(_, lambda) } + TDelegateDataFlowType(Callable lambda) { lambdaCreationExpr(_, lambda) } or + TSourceContextParameterType() } import Cached @@ -1227,12 +1228,12 @@ class SsaNode extends NodeImpl, TSsaNode { SsaNode() { this = TSsaNode(node) } override DataFlowCallable getEnclosingCallableImpl() { - result.getAControlFlowNode().getBasicBlock() = node.getBasicBlock() + result.getABasicBlock() = node.getBasicBlock() } override Type getTypeImpl() { result = node.getSourceVariable().getType() } - override ControlFlow::Node getControlFlowNodeImpl() { none() } + override ControlFlowNode getControlFlowNodeImpl() { none() } override Location getLocationImpl() { result = node.getLocation() } @@ -1243,9 +1244,9 @@ class SsaNode extends NodeImpl, TSsaNode { class SsaDefinitionNode extends SsaNode { override SsaImpl::DataFlowIntegration::SsaDefinitionNode node; - Ssa::Definition getDefinition() { result = node.getDefinition() } + SsaDefinition getDefinition() { result = node.getDefinition() } - override ControlFlow::Node getControlFlowNodeImpl() { + override ControlFlowNode getControlFlowNodeImpl() { result = this.getDefinition().getControlFlowNode() } } @@ -1253,7 +1254,7 @@ class SsaDefinitionNode extends SsaNode { /** A definition, viewed as a node in a data flow graph. */ class AssignableDefinitionNodeImpl extends NodeImpl, TAssignableDefinitionNode { private AssignableDefinition def; - private ControlFlow::Node cfn_; + private ControlFlowNode cfn_; AssignableDefinitionNodeImpl() { this = TAssignableDefinitionNode(def, cfn_) } @@ -1261,7 +1262,7 @@ class AssignableDefinitionNodeImpl extends NodeImpl, TAssignableDefinitionNode { AssignableDefinition getDefinition() { result = def } /** Gets the underlying definition, at control flow node `cfn`, if any. */ - AssignableDefinition getDefinitionAtNode(ControlFlow::Node cfn) { + AssignableDefinition getDefinitionAtNode(ControlFlowNode cfn) { result = def and cfn = cfn_ } @@ -1270,7 +1271,7 @@ class AssignableDefinitionNodeImpl extends NodeImpl, TAssignableDefinitionNode { override Type getTypeImpl() { result = def.getTarget().getType() } - override ControlFlow::Node getControlFlowNodeImpl() { result = cfn_ } + override ControlFlowNode getControlFlowNodeImpl() { result = cfn_ } override Location getLocationImpl() { result = def.getTargetAccess().getLocation() @@ -1301,12 +1302,6 @@ private module NearestLocationInputParamAfterCallable implements NearestLocation } private module ParameterNodes { - pragma[nomagic] - private predicate ssaParamDef(Ssa::ImplicitParameterDefinition ssaDef, Parameter p, Location l) { - p = ssaDef.getParameter() and - l = ssaDef.getLocation() - } - private module NearestLocationInputParamBeforeCallable implements NearestLocationInputSig { class C = Parameter; @@ -1357,11 +1352,9 @@ private module ParameterNodes { } /** Gets the SSA definition corresponding to this parameter, if any. */ - Ssa::ImplicitParameterDefinition getSsaDefinition() { - exists(Parameter p, Location l | - l = this.getParameterLocation(p) and - ssaParamDef(result, p, l) - ) + SsaParameterInit getSsaDefinition() { + result.getParameter() = parameter and + result.getBasicBlock() = callable.getABasicBlock() } override predicate isParameterOf(DataFlowCallable c, ParameterPosition pos) { @@ -1373,7 +1366,7 @@ private module ParameterNodes { override Type getTypeImpl() { result = parameter.getType() } - override ControlFlow::Node getControlFlowNodeImpl() { none() } + override ControlFlowNode getControlFlowNodeImpl() { none() } override Location getLocationImpl() { result = this.getParameterLocation(_) } @@ -1398,7 +1391,7 @@ private module ParameterNodes { override Type getTypeImpl() { result = callable.getDeclaringType() } - override ControlFlow::Node getControlFlowNodeImpl() { none() } + override ControlFlowNode getControlFlowNodeImpl() { none() } override Location getLocationImpl() { result = location } @@ -1423,7 +1416,7 @@ private module ParameterNodes { callable = c.asCallable(_) and pos.isDelegateSelf() } - override ControlFlow::Node getControlFlowNodeImpl() { none() } + override ControlFlowNode getControlFlowNodeImpl() { none() } override DataFlowCallable getEnclosingCallableImpl() { result.asCallable(_) = callable } @@ -1437,7 +1430,7 @@ private module ParameterNodes { } /** An implicit entry definition for a captured variable. */ - class SsaCapturedEntryDefinition extends Ssa::ImplicitEntryDefinition { + deprecated class SsaCapturedEntryDefinition extends Ssa::ImplicitEntryDefinition { private LocalScopeVariable v; SsaCapturedEntryDefinition() { this.getSourceVariable().getAssignable() = v } @@ -1507,7 +1500,7 @@ private module ArgumentNodes { * the constructor has run. */ class MallocNode extends ArgumentNodeImpl, NodeImpl, TMallocNode { - private ControlFlow::Nodes::ElementNode cfn; + private ControlFlowNodes::ElementNode cfn; MallocNode() { this = TMallocNode(cfn) } @@ -1516,15 +1509,11 @@ private module ArgumentNodes { pos.isQualifier() } - override ControlFlow::Node getControlFlowNodeImpl() { result = cfn } + override ControlFlowNode getControlFlowNodeImpl() { result = cfn } - override DataFlowCallable getEnclosingCallableImpl() { - result.getAControlFlowNode() = cfn - or - result = getEnclosingStaticFieldOrProperty(cfn.getAstNode()) - } + override DataFlowCallable getEnclosingCallableImpl() { result.getAControlFlowNode() = cfn } - override Type getTypeImpl() { result = cfn.getAstNode().(Expr).getType() } + override Type getTypeImpl() { result = cfn.asExpr().getType() } override Location getLocationImpl() { result = cfn.getLocation() } @@ -1546,12 +1535,12 @@ private module ArgumentNodes { * `Foo(new[] { "a", "b", "c" })`. */ class ParamsArgumentNode extends ArgumentNodeImpl, NodeImpl, TParamsArgumentNode { - private ControlFlow::Node callCfn; + private ControlFlowNode callCfn; ParamsArgumentNode() { this = TParamsArgumentNode(callCfn) } private Parameter getParameter() { - callCfn = any(Call c | isParamsArg(c, _, result)).getAControlFlowNode() + callCfn = any(Call c | isParamsArg(c, _, result)).getControlFlowNode() } override predicate argumentOf(DataFlowCall call, ArgumentPosition pos) { @@ -1559,15 +1548,11 @@ private module ArgumentNodes { pos.getPosition() = this.getParameter().getPosition() } - override DataFlowCallable getEnclosingCallableImpl() { - result.getAControlFlowNode() = callCfn - or - result = getEnclosingStaticFieldOrProperty(callCfn.getAstNode()) - } + override DataFlowCallable getEnclosingCallableImpl() { result.getAControlFlowNode() = callCfn } override Type getTypeImpl() { result = this.getParameter().getType() } - override ControlFlow::Node getControlFlowNodeImpl() { none() } + override ControlFlowNode getControlFlowNodeImpl() { none() } override Location getLocationImpl() { result = callCfn.getLocation() } @@ -1620,7 +1605,7 @@ private module ReturnNodes { OutRefReturnNode() { exists(Parameter p | - this.getDefinition().isLiveOutRefParameterDefinition(p) and + SsaImpl::isLiveOutRefParameterDefinition(this.getDefinition(), p) and kind.getPosition() = p.getPosition() | p.isOut() and kind instanceof OutReturnKind @@ -1638,10 +1623,10 @@ private module ReturnNodes { * to `yield return e [e]`. */ class YieldReturnNode extends ReturnNode, NodeImpl, TYieldReturnNode { - private ControlFlow::Nodes::ElementNode cfn; + private ControlFlowNodes::ElementNode cfn; private YieldReturnStmt yrs; - YieldReturnNode() { this = TYieldReturnNode(cfn) and yrs.getExpr().getAControlFlowNode() = cfn } + YieldReturnNode() { this = TYieldReturnNode(cfn) and yrs.getExpr().getControlFlowNode() = cfn } YieldReturnStmt getYieldReturnStmt() { result = yrs } @@ -1651,7 +1636,7 @@ private module ReturnNodes { override Type getTypeImpl() { result = yrs.getEnclosingCallable().getReturnType() } - override ControlFlow::Node getControlFlowNodeImpl() { result = cfn } + override ControlFlowNode getControlFlowNodeImpl() { result = cfn } override Location getLocationImpl() { result = yrs.getLocation() } @@ -1662,10 +1647,10 @@ private module ReturnNodes { * A synthesized `return` node for returned expressions inside `async` methods. */ class AsyncReturnNode extends ReturnNode, NodeImpl, TAsyncReturnNode { - private ControlFlow::Nodes::ElementNode cfn; + private ControlFlowNodes::ElementNode cfn; private Expr expr; - AsyncReturnNode() { this = TAsyncReturnNode(cfn) and expr = cfn.getAstNode() } + AsyncReturnNode() { this = TAsyncReturnNode(cfn) and expr = cfn.asExpr() } Expr getExpr() { result = expr } @@ -1675,7 +1660,7 @@ private module ReturnNodes { override Type getTypeImpl() { result = expr.getEnclosingCallable().getReturnType() } - override ControlFlow::Node getControlFlowNodeImpl() { result = cfn } + override ControlFlowNode getControlFlowNodeImpl() { result = cfn } override Location getLocationImpl() { result = expr.getLocation() } @@ -1727,7 +1712,7 @@ private module OutNodes { private import semmle.code.csharp.frameworks.system.Collections private import semmle.code.csharp.frameworks.system.collections.Generic - private DataFlowCall csharpCall(Expr e, ControlFlow::Node cfn) { + private DataFlowCall csharpCall(Expr e, ControlFlowNode cfn) { e = any(DispatchCall dc | result = TNonDelegateCall(cfn, dc)).getCall() or result = TExplicitDelegateLikeCall(cfn, e) } @@ -1757,7 +1742,7 @@ private module OutNodes { */ class ParamOutNode extends OutNode, AssignableDefinitionNode { private AssignableDefinitions::OutRefDefinition outRefDef; - private ControlFlow::Node cfn; + private ControlFlowNode cfn; ParamOutNode() { outRefDef = this.getDefinitionAtNode(cfn) } @@ -1802,7 +1787,7 @@ class FlowSummaryNode extends NodeImpl, TFlowSummaryNode { override Type getTypeImpl() { none() } - override ControlFlow::Node getControlFlowNodeImpl() { none() } + override ControlFlowNode getControlFlowNodeImpl() { none() } override Location getLocationImpl() { result = this.getSummarizedCallable().getLocation() } @@ -1826,7 +1811,7 @@ class FlowSummaryNode extends NodeImpl, TFlowSummaryNode { * all of which are represented by an `InstanceParameterAccessNode` node. */ abstract private class InstanceParameterAccessNode extends NodeImpl, TInstanceParameterAccessNode { - ControlFlow::Node cfn; + ControlFlowNode cfn; boolean isPostUpdate; Parameter p; @@ -1839,14 +1824,14 @@ abstract private class InstanceParameterAccessNode extends NodeImpl, TInstancePa override Type getTypeImpl() { result = cfn.getEnclosingCallable().getDeclaringType() } - override ControlFlow::Nodes::ElementNode getControlFlowNodeImpl() { none() } + override ControlFlowNodes::ElementNode getControlFlowNodeImpl() { none() } override Location getLocationImpl() { result = cfn.getLocation() } /** * Gets the underlying control flow node. */ - ControlFlow::Node getUnderlyingControlFlowNode() { result = cfn } + ControlFlowNode getUnderlyingControlFlowNode() { result = cfn } /** * Gets the primary constructor parameter that this is a this access to. @@ -1888,7 +1873,7 @@ abstract private class PrimaryConstructorThisAccessNode extends NodeImpl, override Type getTypeImpl() { result = p.getCallable().getDeclaringType() } - override ControlFlow::Nodes::ElementNode getControlFlowNodeImpl() { none() } + override ControlFlowNodes::ElementNode getControlFlowNodeImpl() { none() } override Location getLocationImpl() { NearestLocation::nearestLocation(p, @@ -1926,7 +1911,7 @@ class CaptureNode extends NodeImpl, TCaptureNode { VariableCapture::Flow::SynthesizedCaptureNode getSynthesizedCaptureNode() { result = cn } override DataFlowCallable getEnclosingCallableImpl() { - result.getAControlFlowNode().getBasicBlock() = cn.getBasicBlock() + result.getABasicBlock() = cn.getBasicBlock() } override Type getTypeImpl() { @@ -1939,7 +1924,7 @@ class CaptureNode extends NodeImpl, TCaptureNode { else result = super.getDataFlowType() } - override ControlFlow::Node getControlFlowNodeImpl() { none() } + override ControlFlowNode getControlFlowNodeImpl() { none() } override Location getLocationImpl() { result = cn.getLocation() } @@ -2023,12 +2008,9 @@ private class FieldOrPropertyRead extends FieldOrPropertyAccess, AssignableRead * SSA updates. */ predicate hasNonlocalValue() { - exists(Ssa::Definition def, Ssa::ImplicitDefinition idef | + exists(SsaDefinition def | def.getARead() = this and - idef = def.getAnUltimateDefinition() - | - idef instanceof Ssa::ImplicitEntryDefinition or - idef instanceof Ssa::ImplicitCallDefinition + def.getAnUltimateDefinition() instanceof SsaImplicitWrite ) } } @@ -2050,7 +2032,7 @@ class FlowInsensitiveFieldNode extends NodeImpl, TFlowInsensitiveFieldNode { override Type getTypeImpl() { result = f.getType() } - override ControlFlow::Node getControlFlowNodeImpl() { none() } + override ControlFlowNode getControlFlowNodeImpl() { none() } override Location getLocationImpl() { result = f.getLocation() } @@ -2074,7 +2056,7 @@ class FlowInsensitiveCapturedVariableNode extends NodeImpl, TFlowInsensitiveCapt override Type getTypeImpl() { result = v.getType() } - override ControlFlow::Node getControlFlowNodeImpl() { none() } + override ControlFlowNode getControlFlowNodeImpl() { none() } override Location getLocationImpl() { result = v.getLocation() } @@ -2117,7 +2099,7 @@ private ContentSet getResultContent() { private predicate primaryConstructorParameterStore( AssignableDefinitionNode node1, PrimaryConstructorParameterContent c, Node node2 ) { - exists(AssignableDefinition def, ControlFlow::Node cfn, Parameter p | + exists(AssignableDefinition def, ControlFlowNode cfn, Parameter p | node1 = TAssignableDefinitionNode(def, cfn) and p = def.getTarget() and node2 = TInstanceParameterAccessNode(cfn, true) and @@ -2227,12 +2209,11 @@ private predicate readContentStep(Node node1, Content c, Node node2) { c instanceof ElementContent or exists( - ForeachStmt fs, Ssa::ExplicitDefinition def, - AssignableDefinitions::LocalVariableDefinition defTo + ForeachStmt fs, SsaExplicitWrite def, AssignableDefinitions::LocalVariableDefinition defTo | node1.asExpr() = fs.getIterableExpr() and defTo.getDeclaration() = fs.getVariableDeclExpr() and - def.getADefinition() = defTo and + def.getDefinition() = defTo and node2.(SsaDefinitionNode).getDefinition() = def and c instanceof ElementContent ) @@ -2360,7 +2341,7 @@ predicate expectsContent(Node n, ContentSet c) { n.asExpr() instanceof SpreadElementExpr and c.isElement() } -class NodeRegion instanceof ControlFlow::BasicBlock { +class NodeRegion instanceof BasicBlock { string toString() { result = "NodeRegion" } predicate contains(Node n) { this = n.getControlFlowNode().getBasicBlock() } @@ -2394,6 +2375,8 @@ class DataFlowType extends TDataFlowType { Callable asDelegate() { this = TDelegateDataFlowType(result) } + predicate isSourceContextParameterType() { this = TSourceContextParameterType() } + /** * Gets an expression that creates a delegate of this type. * @@ -2412,6 +2395,9 @@ class DataFlowType extends TDataFlowType { result = this.asGvnType().toString() or result = this.asDelegate().toString() + or + this.isSourceContextParameterType() and + result = "" } } @@ -2421,10 +2407,10 @@ DataFlowType getNodeType(Node n) { not lambdaCreation(n, _, _) and not isLocalFunctionCallReceiver(_, n.asExpr(), _) or - [ - n.asExpr().(ControlFlowElement), - n.(LocalFunctionCreationPreNode).getUnderlyingControlFlowNode().getAstNode() - ] = result.getADelegateCreation() + n.asExpr() = result.getADelegateCreation() + or + n.(LocalFunctionCreationPreNode).getUnderlyingControlFlowNode() = + result.getADelegateCreation().getControlFlowNode() } private class DataFlowNullType extends Gvn::GvnType { @@ -2469,6 +2455,11 @@ private predicate compatibleTypesDelegateLeft(DataFlowType dt1, DataFlowType dt2 ) } +pragma[nomagic] +private predicate compatibleTypesSourceContextParameterTypeLeft(DataFlowType dt1, DataFlowType dt2) { + dt1.isSourceContextParameterType() and not exists(dt2.asDelegate()) +} + /** * Holds if `t1` and `t2` are compatible, that is, whether data can flow from * a node of type `t1` to a node of type `t2`. @@ -2499,6 +2490,10 @@ predicate compatibleTypes(DataFlowType dt1, DataFlowType dt2) { compatibleTypesDelegateLeft(dt2, dt1) or dt1.asDelegate() = dt2.asDelegate() + or + compatibleTypesSourceContextParameterTypeLeft(dt1, dt2) + or + compatibleTypesSourceContextParameterTypeLeft(dt2, dt1) } pragma[nomagic] @@ -2511,6 +2506,8 @@ predicate typeStrongerThan(DataFlowType t1, DataFlowType t2) { uselessTypebound(t2) or compatibleTypesDelegateLeft(t1, t2) + or + compatibleTypesSourceContextParameterTypeLeft(t1, t2) } /** @@ -2540,10 +2537,10 @@ module PostUpdateNodes { class ObjectCreationNode extends SourcePostUpdateNode, ExprNode, TExprNode { private ObjectCreation oc; - ObjectCreationNode() { this = TExprNode(oc.getAControlFlowNode()) } + ObjectCreationNode() { this = TExprNode(oc.getControlFlowNode()) } override Node getPreUpdateSourceNode() { - exists(ControlFlow::Nodes::ElementNode cfn | this = TExprNode(cfn) | + exists(ControlFlowNodes::ElementNode cfn | this = TExprNode(cfn) | result = TObjectInitializerNode(cfn) or not oc.hasInitializer() and @@ -2563,11 +2560,11 @@ module PostUpdateNodes { TObjectInitializerNode { private ObjectCreation oc; - private ControlFlow::Nodes::ElementNode cfn; + private ControlFlowNodes::ElementNode cfn; ObjectInitializerNode() { this = TObjectInitializerNode(cfn) and - cfn = oc.getAControlFlowNode() + cfn = oc.getControlFlowNode() } /** Gets the initializer to which this initializer node belongs. */ @@ -2582,19 +2579,15 @@ module PostUpdateNodes { call.getExpr() = init.(CollectionInitializer).getAnElementInitializer() or // E.g. `new Dictionary() { [0] = "a", [1] = "b" }` - call.getExpr() = init.(ObjectInitializer).getAMemberInitializer().getLValue() + call.getExpr() = init.(ObjectInitializer).getAMemberInitializer().getLeftOperand() ) } - override DataFlowCallable getEnclosingCallableImpl() { - result.getAControlFlowNode() = cfn - or - result = getEnclosingStaticFieldOrProperty(oc) - } + override DataFlowCallable getEnclosingCallableImpl() { result.getAControlFlowNode() = cfn } override Type getTypeImpl() { result = oc.getType() } - override ControlFlow::Nodes::ElementNode getControlFlowNodeImpl() { result = cfn } + override ControlFlowNodes::ElementNode getControlFlowNodeImpl() { result = cfn } override Location getLocationImpl() { result = cfn.getLocation() } @@ -2602,21 +2595,17 @@ module PostUpdateNodes { } class ExprPostUpdateNode extends SourcePostUpdateNode, NodeImpl, TExprPostUpdateNode { - private ControlFlow::Nodes::ElementNode cfn; + private ControlFlowNodes::ElementNode cfn; ExprPostUpdateNode() { this = TExprPostUpdateNode(cfn) } override ExprNode getPreUpdateSourceNode() { result = TExprNode(cfn) } - override DataFlowCallable getEnclosingCallableImpl() { - result.getAControlFlowNode() = cfn - or - result = getEnclosingStaticFieldOrProperty(cfn.getAstNode()) - } + override DataFlowCallable getEnclosingCallableImpl() { result.getAControlFlowNode() = cfn } - override Type getTypeImpl() { result = cfn.getAstNode().(Expr).getType() } + override Type getTypeImpl() { result = cfn.asExpr().getType() } - override ControlFlow::Node getControlFlowNodeImpl() { none() } + override ControlFlowNode getControlFlowNodeImpl() { none() } override Location getLocationImpl() { result = cfn.getLocation() } @@ -2745,7 +2734,7 @@ private predicate isLocalFunctionCallReceiver( f = receiver.getTarget().getUnboundDeclaration() } -private predicate lambdaCallExpr(DataFlowCall call, Expr receiver, ControlFlow::Node receiverCfn) { +private predicate lambdaCallExpr(DataFlowCall call, Expr receiver, ControlFlowNode receiverCfn) { exists(DelegateLikeCall dc | call.(ExplicitDelegateLikeDataFlowCall).getCall() = dc and receiver = dc.getExpr() and @@ -2766,7 +2755,7 @@ predicate lambdaCall(DataFlowCall call, LambdaCallKind kind, Node receiver) { ( lambdaCallExpr(call, receiver.asExpr(), _) and // local function calls can be resolved directly without a flow analysis - not call.getControlFlowNode().getAstNode() instanceof LocalFunctionCall + not call.getControlFlowNode().asExpr() instanceof LocalFunctionCall or receiver.(FlowSummaryNode).getSummaryNode() = call.(SummaryCall).getReceiver() ) and @@ -2795,7 +2784,7 @@ predicate additionalLambdaFlowStep(Node nodeFrom, Node nodeTo, boolean preserves preservesValue = true or exists(AddEventExpr aee | - nodeFrom.asExpr() = aee.getRValue() and + nodeFrom.asExpr() = aee.getRightOperand() and nodeTo.asExpr().(EventRead).getTarget() = aee.getTarget() and preservesValue = false ) diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll index f4d24fdb5101..7919b38de3fd 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/DataFlowPublic.qll @@ -17,7 +17,7 @@ class Node extends TNode { * Gets the expression corresponding to this node, at control flow node `cfn`, * if any. */ - Expr asExprAtNode(ControlFlow::Nodes::ElementNode cfn) { + Expr asExprAtNode(ControlFlowNodes::ElementNode cfn) { result = this.(ExprNode).getExprAtNode(cfn) } @@ -31,7 +31,7 @@ class Node extends TNode { * Gets the definition corresponding to this node, at control flow node `cfn`, * if any. */ - AssignableDefinition asDefinitionAtNode(ControlFlow::Node cfn) { + AssignableDefinition asDefinitionAtNode(ControlFlowNode cfn) { result = this.(AssignableDefinitionNode).getDefinitionAtNode(cfn) } @@ -44,7 +44,7 @@ class Node extends TNode { } /** Gets the control flow node corresponding to this node, if any. */ - final ControlFlow::Node getControlFlowNode() { result = this.(NodeImpl).getControlFlowNodeImpl() } + final ControlFlowNode getControlFlowNode() { result = this.(NodeImpl).getControlFlowNodeImpl() } /** Gets a textual representation of this node. */ final string toString() { result = this.(NodeImpl).toStringImpl() } @@ -71,7 +71,7 @@ class Node extends TNode { * * Note that because of control-flow splitting, one `Expr` may correspond * to multiple `ExprNode`s, just like it may correspond to multiple - * `ControlFlow::Node`s. + * `ControlFlowNode`s. */ class ExprNode extends Node, TExprNode { /** Gets the expression corresponding to this node. */ @@ -81,9 +81,9 @@ class ExprNode extends Node, TExprNode { * Gets the expression corresponding to this node, at control flow node `cfn`, * if any. */ - Expr getExprAtNode(ControlFlow::Nodes::ElementNode cfn) { + Expr getExprAtNode(ControlFlowNodes::ElementNode cfn) { this = TExprNode(cfn) and - result = cfn.getAstNode() + result = cfn.asExpr() } } @@ -113,7 +113,7 @@ class AssignableDefinitionNode extends Node instanceof AssignableDefinitionNodeI AssignableDefinition getDefinition() { result = super.getDefinition() } /** Gets the underlying definition, at control flow node `cfn`, if any. */ - AssignableDefinition getDefinitionAtNode(ControlFlow::Node cfn) { + AssignableDefinition getDefinitionAtNode(ControlFlowNode cfn) { result = super.getDefinitionAtNode(cfn) } } @@ -133,12 +133,14 @@ AssignableDefinitionNode assignableDefinitionNode(AssignableDefinition def) { predicate localFlowStep = localFlowStepImpl/2; +private predicate localFlowStepPlus(Node source, Node sink) = fastTC(localFlowStep/2)(source, sink) + /** * Holds if data flows from `source` to `sink` in zero or more local * (intra-procedural) steps. */ pragma[inline] -predicate localFlow(Node source, Node sink) { localFlowStep*(source, sink) } +predicate localFlow(Node source, Node sink) { localFlowStepPlus(source, sink) or source = sink } /** * Holds if data can flow from `e1` to `e2` in zero or more 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 024e9cf119d5..f8cec8c4d9f6 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlow.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlow.qll @@ -4,13 +4,17 @@ * Provides classes and predicates for dealing with MaD flow models specified * in data extensions and CSV format. * - * The CSV specification has the following columns: + * The extensible relations have the following columns: * - Sources: * `namespace; type; subtypes; name; signature; ext; output; kind; provenance` * - Sinks: * `namespace; type; subtypes; name; signature; ext; input; kind; provenance` * - Summaries: * `namespace; type; subtypes; name; signature; ext; input; output; kind; provenance` + * - Barriers: + * `namespace; type; subtypes; name; signature; ext; output; kind; provenance` + * - BarrierGuards: + * `namespace; type; subtypes; name; signature; ext; input; acceptingValue; kind; provenance` * - Neutrals: * `namespace; type; name; signature; kind; provenance` * A neutral is used to indicate that a callable is neutral with respect to flow (no summary), source (is not a source) or sink (is not a sink). @@ -69,14 +73,17 @@ * - "Field[f]": Selects the contents of field `f`. * - "Property[p]": Selects the contents of property `p`. * - * 8. The `kind` column is a tag that can be referenced from QL to determine to + * 8. The `acceptingValue` column of barrier guard models specifies the condition + * under which the guard blocks flow. It can be one of "true" or "false". In + * the future "no-exception", "not-zero", "null", "not-null" may be supported. + * 9. The `kind` column is a tag that can be referenced from QL to determine to * which classes the interpreted elements should be added. For example, for * sources "remote" indicates a default remote flow source, and for summaries * "taint" indicates a default additional taint step and "value" indicates a * globally applicable value-preserving step. For neutrals the kind can be `summary`, * `source` or `sink` to indicate that the neutral is neutral with respect to * flow (no summary), source (is not a source) or sink (is not a sink). - * 9. The `provenance` column is a tag to indicate the origin and verification of a model. + * 10. The `provenance` column is a tag to indicate the origin and verification of a model. * The format is {origin}-{verification} or just "manual" where the origin describes * the origin of the model and verification describes how the model has been verified. * Some examples are: @@ -230,11 +237,11 @@ module ModelValidation { result = "Unrecognized provenance description \"" + provenance + "\" in " + pred + " model." ) or - exists(string acceptingvalue | - barrierGuardModel(_, _, _, _, _, _, _, acceptingvalue, _, _, _) and - invalidAcceptingValue(acceptingvalue) and + exists(string acceptingValue | + barrierGuardModel(_, _, _, _, _, _, _, acceptingValue, _, _, _) and + invalidAcceptingValue(acceptingValue) and result = - "Unrecognized accepting value description \"" + acceptingvalue + + "Unrecognized accepting value description \"" + acceptingValue + "\" in barrier guard model." ) } @@ -482,13 +489,13 @@ private module Cached { private predicate barrierGuardChecks(Guard g, Expr e, GuardValue gv, TKindModelPair kmp) { exists( - SourceSinkInterpretationInput::InterpretNode n, AcceptingValue acceptingvalue, string kind, + SourceSinkInterpretationInput::InterpretNode n, AcceptingValue acceptingValue, string kind, string model | - isBarrierGuardNode(n, acceptingvalue, kind, model) and + isBarrierGuardNode(n, acceptingValue, kind, model) and n.asNode().asExpr() = e and kmp = TMkPair(kind, model) and - gv = convertAcceptingValue(acceptingvalue) + gv = convertAcceptingValue(acceptingValue) | g.(Call).getAnArgument() = e or g.(QualifiableExpr).getQualifier() = e ) diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlowExtensions.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlowExtensions.qll index 3461f0a51863..cd438ece284d 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlowExtensions.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/ExternalFlowExtensions.qll @@ -33,7 +33,7 @@ extensible predicate barrierModel( */ extensible predicate barrierGuardModel( string namespace, string type, boolean subtypes, string name, string signature, string ext, - string input, string acceptingvalue, string kind, string provenance, QlBuiltins::ExtensionId madId + string input, string acceptingValue, string kind, string provenance, QlBuiltins::ExtensionId madId ); /** diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll index ec6bbf81fee1..a7ab18a62901 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/FlowSummaryImpl.qll @@ -253,13 +253,13 @@ module SourceSinkInterpretationInput implements } predicate barrierGuardElement( - Element e, string input, Public::AcceptingValue acceptingvalue, string kind, + Element e, string input, Public::AcceptingValue acceptingValue, string kind, Public::Provenance provenance, string model ) { exists( string namespace, string type, boolean subtypes, string name, string signature, string ext | - barrierGuardModel(namespace, type, subtypes, name, signature, ext, input, acceptingvalue, + barrierGuardModel(namespace, type, subtypes, name, signature, ext, input, acceptingValue, kind, provenance, model) and e = interpretElement(namespace, type, subtypes, name, signature, ext, _) ) diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/SsaImpl.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/SsaImpl.qll index 2809f8187b91..b7257a2f5f2b 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/SsaImpl.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/SsaImpl.qll @@ -5,11 +5,11 @@ import csharp private import codeql.ssa.Ssa as SsaImplCommon private import AssignableDefinitions -private import semmle.code.csharp.controlflow.BasicBlocks as BasicBlocks private import semmle.code.csharp.controlflow.Guards as Guards private import semmle.code.csharp.dataflow.internal.BaseSSA +private import semmle.code.csharp.internal.Location -private module SsaInput implements SsaImplCommon::InputSig { +private module SsaImplInput implements SsaImplCommon::InputSig { class SourceVariable = Ssa::SourceVariable; /** @@ -18,7 +18,7 @@ private module SsaInput implements SsaImplCommon::InputSig as Impl +import SsaImplCommon::Make as Impl + +private module SsaInput implements Impl::SsaInputSig { + private import csharp as CS + + class Expr = CS::Expr; + + class Parameter = CS::Parameter; + + class VariableWrite extends AssignableDefinition { + Expr asExpr() { result = this.getExpr() } + + Expr getValue() { result = this.getSource() } + + predicate isParameterInit(Parameter p) { this.(ImplicitParameterDefinition).getParameter() = p } + } + + predicate explicitWrite(VariableWrite w, BasicBlock bb, int i, SsaImplInput::SourceVariable v) { + exists(AssignableDefinition ad | variableDefinition(bb, i, v, ad) | + w = ad or + w = getASameOutRefDefAfter(v, ad) + ) + or + exists(Parameter p | + implicitEntryDefinition(bb, v) and + i = -1 and + p = v.getAssignable() and + pragma[only_bind_out](p.getCallable()) = pragma[only_bind_out](v.getEnclosingCallable()) and + w.isParameterInit(p) + ) + } +} + +module Ssa_ = Impl::MakeSsa; class Definition = Impl::Definition; -class WriteDefinition = Impl::WriteDefinition; +private class SsaDefinitionToStringProxy extends Definition { + override string toString() { result = this.(SsaDefinition).toString() } +} + +deprecated class WriteDefinition = Impl::WriteDefinition; -class UncertainWriteDefinition = Impl::UncertainWriteDefinition; +deprecated class UncertainWriteDefinition = Impl::UncertainWriteDefinition; -class PhiNode = Impl::PhiNode; +deprecated class PhiNode = Impl::PhiNode; module Consistency = Impl::Consistency; /** * Holds if the `i`th node of basic block `bb` reads source variable `v`. */ -private predicate variableReadActual(ControlFlow::BasicBlock bb, int i, Ssa::SourceVariable v) { - v.getAnAccess().(AssignableRead) = bb.getNode(i).getAstNode() +private predicate variableReadActual(BasicBlock bb, int i, Ssa::SourceVariable v) { + v.getAnAccess().(AssignableRead) = bb.getNode(i).asExpr() } private module SourceVariableImpl { @@ -125,11 +162,8 @@ private module SourceVariableImpl { * Holds if the `i`th node of basic block `bb` is assignable definition `ad` * targeting source variable `v`. */ - predicate variableDefinition( - ControlFlow::BasicBlock bb, int i, Ssa::SourceVariable v, AssignableDefinition ad - ) { + predicate variableDefinition(BasicBlock bb, int i, Ssa::SourceVariable v, AssignableDefinition ad) { ad = v.getADefinition() and - ad.getExpr().getAControlFlowNode() = bb.getNode(i) and // In cases like `(x, x) = (0, 1)`, we discard the first (dead) definition of `x` not exists(TupleAssignmentDefinition first, TupleAssignmentDefinition second | first = ad | second.getAssignment() = first.getAssignment() and @@ -139,7 +173,13 @@ private module SourceVariableImpl { // In cases like `M(out x, out x)`, there is no inherent evaluation order, so we // collapse the two definitions of `x`, using the first access as the representative, // and expose both definitions in `ExplicitDefinition.getADefinition()` - not ad = getASameOutRefDefAfter(v, _) + not ad = getASameOutRefDefAfter(v, _) and + ( + ad.getExpr().getControlFlowNode() = bb.getNode(i) + or + ad.(AssignableDefinitions::ImplicitParameterDefinition).getParameter().getControlFlowNode() = + bb.getNode(i) + ) } /** @@ -159,9 +199,7 @@ private module SourceVariableImpl { * * This excludes implicit writes via calls. */ - predicate variableWriteDirect( - ControlFlow::BasicBlock bb, int i, Ssa::SourceVariable v, boolean certain - ) { + predicate variableWriteDirect(BasicBlock bb, int i, Ssa::SourceVariable v, boolean certain) { exists(AssignableDefinition ad | variableDefinition(bb, i, v, ad) | if any(AssignableDefinition ad0 | ad0 = ad or ad0 = getASameOutRefDefAfter(v, ad)).isCertain() then certain = true @@ -186,13 +224,12 @@ private module SourceVariableImpl { * } * ``` */ - predicate outRefExitRead(ControlFlow::BasicBlock bb, int i, LocalScopeSourceVariable v) { - exists(ControlFlow::Nodes::AnnotatedExitNode exit | - exit.isNormal() and + predicate outRefExitRead(BasicBlock bb, int i, LocalScopeSourceVariable v) { + exists(ControlFlow::NormalExitNode exit | exists(LocalScopeVariable lsv | lsv = v.getAssignable() and bb.getNode(i) = exit and - exit.getCallable() = lsv.getCallable() + exit.getEnclosingCallable() = lsv.getCallable() | lsv.(Parameter).isOutOrRef() or @@ -218,12 +255,12 @@ private module SourceVariableImpl { * The pseudo read is inserted at the CFG node `i` on the left-hand side of the * assignment on line 3. */ - predicate refReadBeforeWrite(ControlFlow::BasicBlock bb, int i, LocalScopeSourceVariable v) { + predicate refReadBeforeWrite(BasicBlock bb, int i, LocalScopeSourceVariable v) { exists(AssignableDefinitions::AssignmentDefinition def, LocalVariable lv | def.getTarget() = lv and lv.isRef() and lv = v.getAssignable() and - bb.getNode(i) = def.getExpr().getAControlFlowNode() and + bb.getNode(i) = def.getExpr().getControlFlowNode() and not def.getAssignment() instanceof LocalVariableDeclAndInitExpr ) } @@ -249,6 +286,15 @@ private module SourceVariableImpl { private import SourceVariableImpl private import Ssa::SourceVariables +pragma[nomagic] +predicate localScopeSourceVariable( + Ssa::SourceVariables::LocalScopeSourceVariable sv, LocalScopeVariable v, Callable c1, Callable c2 +) { + sv.getAssignable() = v and + sv.getEnclosingCallable() = c1 and + v.getCallable() = c2 +} + private module CallGraph { private import semmle.code.csharp.dispatch.Dispatch @@ -276,15 +322,17 @@ private module CallGraph { * * the constructor call `new Lazy(M2)` includes `M2` as a target. */ - Callable getARuntimeTarget(Call c, boolean libraryDelegateCall) { + Callable getARuntimeTarget(Call c, ControlFlowNode n, boolean libraryDelegateCall) { // Non-delegate call: use dispatch library exists(DispatchCall dc | dc.getCall() = c | + n = dc.getControlFlowNode() and result = dc.getADynamicTarget().getUnboundDeclaration() and libraryDelegateCall = false ) or // Delegate call: use simple analysis - result = SimpleDelegateAnalysis::getARuntimeDelegateTarget(c, libraryDelegateCall) + result = SimpleDelegateAnalysis::getARuntimeDelegateTarget(c, libraryDelegateCall) and + n = c.getControlFlowNode() } private module SimpleDelegateAnalysis { @@ -337,7 +385,7 @@ private module CallGraph { pred = succ.(DelegateCreation).getArgument() or exists(AddEventExpr ae | succ.(EventAccess).getTarget() = ae.getTarget() | - pred = ae.getRValue() + pred = ae.getRightOperand() ) } @@ -471,7 +519,7 @@ private module CallGraph { /** Holds if `(c1,c2)` is an edge in the call graph. */ predicate callEdge(Callable c1, Callable c2) { - exists(Call c | c.getEnclosingCallable() = c1 and c2 = getARuntimeTarget(c, _)) + exists(Call c | c.getEnclosingCallable() = c1 and c2 = getARuntimeTarget(c, _, _)) } } @@ -605,7 +653,7 @@ private module FieldOrPropsImpl { private predicate intraInstanceCallEdge(Callable c1, InstanceCallable c2) { exists(Call c | c.getEnclosingCallable() = c1 and - c2 = getARuntimeTarget(c, _) and + c2 = getARuntimeTarget(c, _, _) and c.(QualifiableExpr).targetIsLocalInstance() ) } @@ -620,9 +668,8 @@ private module FieldOrPropsImpl { } pragma[noinline] - predicate callAt(ControlFlow::BasicBlock bb, int i, Call call) { - bb.getNode(i) = call.getAControlFlowNode() and - getARuntimeTarget(call, _).hasBody() + predicate callAt(BasicBlock bb, int i, Call call) { + getARuntimeTarget(call, bb.getNode(i), _).hasBody() } /** @@ -630,9 +677,7 @@ private module FieldOrPropsImpl { * an update somewhere, and `fp` is likely to be live in `bb` at index * `i`. */ - predicate updateCandidate( - ControlFlow::BasicBlock bb, int i, FieldOrPropSourceVariable fp, Call call - ) { + predicate updateCandidate(BasicBlock bb, int i, FieldOrPropSourceVariable fp, Call call) { callAt(bb, i, call) and call.getEnclosingCallable() = fp.getEnclosingCallable() and relevantDefinition(_, fp.getAssignable(), _) and @@ -643,7 +688,7 @@ private module FieldOrPropsImpl { Call call, FieldOrPropSourceVariable fps, FieldOrProp fp, Callable c, boolean fresh ) { updateCandidate(_, _, fps, call) and - c = getARuntimeTarget(call, _) and + c = getARuntimeTarget(call, _, _) and fp = fps.getAssignable() and if c instanceof Constructor then fresh = true else fresh = false } @@ -714,71 +759,12 @@ private module FieldOrPropsImpl { } } -private predicate variableReadPseudo(ControlFlow::BasicBlock bb, int i, Ssa::SourceVariable v) { +private predicate variableReadPseudo(BasicBlock bb, int i, Ssa::SourceVariable v) { outRefExitRead(bb, i, v) or refReadBeforeWrite(bb, i, v) } -pragma[noinline] -deprecated private predicate adjacentDefRead( - Definition def, ControlFlow::BasicBlock bb1, int i1, ControlFlow::BasicBlock bb2, int i2, - SsaInput::SourceVariable v -) { - Impl::adjacentDefRead(def, bb1, i1, bb2, i2) and - v = def.getSourceVariable() -} - -deprecated private predicate adjacentDefReachesRead( - Definition def, SsaInput::SourceVariable v, ControlFlow::BasicBlock bb1, int i1, - ControlFlow::BasicBlock bb2, int i2 -) { - adjacentDefRead(def, bb1, i1, bb2, i2, v) and - ( - def.definesAt(v, bb1, i1) - or - SsaInput::variableRead(bb1, i1, v, true) - ) - or - exists(ControlFlow::BasicBlock bb3, int i3 | - adjacentDefReachesRead(def, v, bb1, i1, bb3, i3) and - SsaInput::variableRead(bb3, i3, _, false) and - Impl::adjacentDefRead(def, bb3, i3, bb2, i2) - ) -} - -deprecated private predicate adjacentDefReachesUncertainRead( - Definition def, ControlFlow::BasicBlock bb1, int i1, ControlFlow::BasicBlock bb2, int i2 -) { - exists(SsaInput::SourceVariable v | - adjacentDefReachesRead(def, v, bb1, i1, bb2, i2) and - SsaInput::variableRead(bb2, i2, v, false) - ) -} - -/** Same as `lastRefRedef`, but skips uncertain reads. */ -pragma[nomagic] -deprecated private predicate lastRefSkipUncertainReads( - Definition def, ControlFlow::BasicBlock bb, int i -) { - Impl::lastRef(def, bb, i) and - not SsaInput::variableRead(bb, i, def.getSourceVariable(), false) - or - exists(ControlFlow::BasicBlock bb0, int i0 | - Impl::lastRef(def, bb0, i0) and - adjacentDefReachesUncertainRead(def, bb, i, bb0, i0) - ) -} - -pragma[nomagic] -deprecated predicate lastReadSameVar(Definition def, ControlFlow::Node cfn) { - exists(ControlFlow::BasicBlock bb, int i | - lastRefSkipUncertainReads(def, bb, i) and - variableReadActual(bb, i, _) and - cfn = bb.getNode(i) - ) -} - cached private module Cached { cached @@ -818,35 +804,27 @@ private module Cached { } cached - predicate implicitEntryDefinition(ControlFlow::BasicBlock bb, Ssa::SourceVariable v) { - exists(ControlFlow::BasicBlocks::EntryBlock entry, Callable c | - c = entry.getCallable() and - // In case `c` has multiple bodies, we want each body to get its own implicit - // entry definition. In case `c` doesn't have multiple bodies, the line below - // is simply the same as `bb = entry`, because `entry.getFirstNode().getASuccessor()` - // will be in the entry block. - bb = entry.getFirstNode().getASuccessor().getBasicBlock() and - c = v.getEnclosingCallable() - | - // Captured variable - exists(LocalScopeVariable lsv | - v = any(LocalScopeSourceVariable lv | lsv = lv.getAssignable()) - | - lsv.getCallable() != c + predicate implicitEntryDefinition(BasicBlock bb, Ssa::SourceVariable v) { + exists(Callable c | c = v.getEnclosingCallable() | + c = bb.(EntryBasicBlock).getEnclosingCallable() and + ( + // Captured variable + exists(LocalScopeVariable lsv | + v = any(LocalScopeSourceVariable lv | lsv = lv.getAssignable()) + | + lsv.getCallable() != c + ) + or + // Each tracked field and property has an implicit entry definition + v instanceof PlainFieldOrPropSourceVariable ) or - // Each tracked field and property has an implicit entry definition - v instanceof PlainFieldOrPropSourceVariable - or - v.getAssignable() instanceof Parameter - ) - } - - cached - AssignableDefinition getADefinition(Ssa::ExplicitDefinition def) { - exists(Ssa::SourceVariable v, AssignableDefinition ad | explicitDefinition(def, v, ad) | - result = ad or - result = getASameOutRefDefAfter(v, ad) + // In case `c` has multiple bodies, we want each body to get its own set of + // parameter definitions, so we add special writes to the start of the basic + // blocks containing the bodies + strictcount(c.getBody()) > 1 and + v.getAssignable() instanceof Parameter and + bb.getANode().isBefore(c.getBody()) ) } @@ -856,7 +834,7 @@ private module Cached { */ cached predicate updatesNamedFieldOrProp( - ControlFlow::BasicBlock bb, int i, Call c, FieldOrPropSourceVariable fp, Callable setter + BasicBlock bb, int i, Call c, FieldOrPropSourceVariable fp, Callable setter ) { FieldOrPropsImpl::updateCandidate(bb, i, fp, c) and FieldOrPropsImpl::updatesNamedFieldOrProp(fp, c, setter) @@ -864,9 +842,9 @@ private module Cached { cached predicate variableWriteQualifier( - ControlFlow::BasicBlock bb, int i, QualifiedFieldOrPropSourceVariable v, boolean certain + BasicBlock bb, int i, QualifiedFieldOrPropSourceVariable v, boolean certain ) { - SsaInput::variableWrite(bb, i, v.getQualifier(), certain) and + SsaImplInput::variableWrite(bb, i, v.getQualifier(), certain) and // Eliminate corner case where a call definition can overlap with a // qualifier definition: if method `M` updates field `F`, then a call // to `M` is both an update of `x.M` and `x.M.M`, so the former call @@ -875,42 +853,14 @@ private module Cached { not updatesNamedFieldOrProp(bb, i, _, v, _) } - cached - predicate explicitDefinition(WriteDefinition def, Ssa::SourceVariable v, AssignableDefinition ad) { - exists(ControlFlow::BasicBlock bb, int i | - def.definesAt(v, bb, i) and - variableDefinition(bb, i, v, ad) - ) - } - - cached - predicate isLiveAtEndOfBlock(Definition def, ControlFlow::BasicBlock bb) { - Impl::ssaDefReachesEndOfBlock(bb, def, _) - } - - cached - Definition phiHasInputFromBlock(Ssa::PhiNode phi, ControlFlow::BasicBlock bb) { - Impl::phiHasInputFromBlock(phi, result, bb) - } - - cached - AssignableRead getAReadAtNode(Definition def, ControlFlow::Node cfn) { - exists(Ssa::SourceVariable v, ControlFlow::BasicBlock bb, int i | - Impl::ssaDefReachesRead(v, def, bb, i) and - variableReadActual(bb, i, v) and - cfn = bb.getNode(i) and - result.getAControlFlowNode() = cfn - ) - } - /** - * Holds if the value defined at SSA definition `def` can reach a read at `cfn`, + * Holds if the value defined at SSA definition `def` can reach a read `read`, * without passing through any other read. */ cached - predicate firstReadSameVar(Definition def, ControlFlow::Node cfn) { - exists(ControlFlow::BasicBlock bb, int i | - Impl::firstUse(def, bb, i, true) and cfn = bb.getNode(i) + predicate firstReadSameVar(Definition def, AssignableRead read) { + exists(BasicBlock bb, int i | + Impl::firstUse(def, bb, i, true) and read.getControlFlowNode() = bb.getNode(i) ) } @@ -920,11 +870,8 @@ private module Cached { * passing through another read. */ cached - predicate adjacentReadPairSameVar(Definition def, ControlFlow::Node cfn1, ControlFlow::Node cfn2) { - exists( - ControlFlow::BasicBlock bb1, int i1, ControlFlow::BasicBlock bb2, int i2, - Ssa::SourceVariable v - | + predicate adjacentReadPairSameVar(Definition def, ControlFlowNode cfn1, ControlFlowNode cfn2) { + exists(BasicBlock bb1, int i1, BasicBlock bb2, int i2, Ssa::SourceVariable v | Impl::ssaDefReachesRead(v, def, bb1, i1) and Impl::adjacentUseUse(bb1, i1, bb2, i2, v, true) and cfn1 = bb1.getNode(i1) and @@ -932,15 +879,14 @@ private module Cached { ) } + /** + * Holds if the SSA definition `def` assigns to `out`/`ref` parameter `p`, and the + * parameter may remain unchanged throughout the rest of the enclosing callable. + */ cached - Definition uncertainWriteDefinitionInput(UncertainWriteDefinition def) { - Impl::uncertainWriteDefinitionInput(def, result) - } - - cached - predicate isLiveOutRefParameterDefinition(Ssa::Definition def, Parameter p) { + predicate isLiveOutRefParameterDefinition(SsaDefinition def, Parameter p) { p.isOutOrRef() and - exists(Ssa::SourceVariable v, Ssa::Definition def0, ControlFlow::BasicBlock bb, int i | + exists(Ssa::SourceVariable v, SsaDefinition def0, BasicBlock bb, int i | v = def.getSourceVariable() and p = v.getAssignable() and def = def0.getAnUltimateDefinition() and @@ -1022,47 +968,64 @@ private module Cached { import Cached -private string getSplitString(Definition def) { - exists(ControlFlow::BasicBlock bb, int i, ControlFlow::Node cfn | - def.definesAt(_, bb, i) and - result = cfn.(ControlFlow::Nodes::ElementNode).getSplitsString() - | - cfn = bb.getNode(i) - or - not exists(bb.getNode(i)) and - cfn = bb.getFirstNode() +deprecated AssignableDefinition getADefinition(Ssa::ExplicitDefinition def) { + exists(Ssa::SourceVariable v, AssignableDefinition ad | explicitDefinition(def, v, ad) | + result = ad or + result = getASameOutRefDefAfter(v, ad) ) } -string getToStringPrefix(Definition def) { - result = "[" + getSplitString(def) + "] " - or - not exists(getSplitString(def)) and - result = "" +deprecated predicate explicitDefinition( + WriteDefinition def, Ssa::SourceVariable v, AssignableDefinition ad +) { + exists(BasicBlock bb, int i | + def.definesAt(v, bb, i) and + variableDefinition(bb, i, v, ad) + ) +} + +deprecated predicate isLiveAtEndOfBlock(Definition def, BasicBlock bb) { + Impl::ssaDefReachesEndOfBlock(bb, def, _) +} + +deprecated Definition phiHasInputFromBlock(Ssa::PhiNode phi, BasicBlock bb) { + Impl::phiHasInputFromBlock(phi, result, bb) +} + +deprecated AssignableRead getAReadAtNode(Definition def, ControlFlowNode cfn) { + exists(Ssa::SourceVariable v, BasicBlock bb, int i | + Impl::ssaDefReachesRead(v, def, bb, i) and + variableReadActual(bb, i, v) and + cfn = bb.getNode(i) and + result.getControlFlowNode() = cfn + ) +} + +deprecated Definition uncertainWriteDefinitionInput(UncertainWriteDefinition def) { + Impl::uncertainWriteDefinitionInput(def, result) } private module DataFlowIntegrationInput implements Impl::DataFlowIntegrationInputSig { - private import semmle.code.csharp.controlflow.BasicBlocks private import codeql.util.Boolean - class Expr extends ControlFlow::Node { - predicate hasCfgNode(ControlFlow::BasicBlock bb, int i) { this = bb.getNode(i) } + class Expr extends ControlFlowNode { + predicate hasCfgNode(BasicBlock bb, int i) { this = bb.getNode(i) } } - Expr getARead(Definition def) { exists(getAReadAtNode(def, result)) } + Expr getARead(Definition def) { def.(SsaDefinition).getARead().getControlFlowNode() = result } - predicate ssaDefHasSource(WriteDefinition def) { + predicate ssaDefHasSource(Impl::WriteDefinition def) { // exclude flow directly from RHS to SSA definition, as we instead want to // go from RHS to matching assignable definition, and from there to SSA definition - def instanceof Ssa::ImplicitParameterDefinition + def instanceof SsaParameterInit } /** - * Allows for flow into uncertain defintions that are not call definitions, + * Allows for flow into uncertain definitions that are not call definitions, * as we, conservatively, consider such definitions to be certain. */ - predicate allowFlowIntoUncertainDef(UncertainWriteDefinition def) { - def instanceof Ssa::ExplicitDefinition + predicate allowFlowIntoUncertainDef(Impl::UncertainWriteDefinition def) { + def instanceof SsaExplicitWrite or def = any(Ssa::ImplicitQualifierDefinition qdef | @@ -1086,3 +1049,58 @@ private module DataFlowIntegrationInput implements Impl::DataFlowIntegrationInpu } private module DataFlowIntegrationImpl = Impl::DataFlowIntegration; + +deprecated private module MultiBodyNearestLocationInput implements NearestLocationInputSig { + class C = MultiBodyParameterDefinition; + + predicate relevantLocations(MultiBodyParameterDefinition def, Location l1, Location l2) { + exists(Callable c, ControlFlowNode n | + l1 = def.getParameter().getALocation() and + n = def.getBasicBlock().getANode() and + n.isBefore(c.getBody()) and + l2 = n.getLocation() + ) + } +} + +pragma[nomagic] +deprecated private predicate implicitEntryDef( + Ssa::ImplicitEntryDefinition def, Ssa::SourceVariable v, Callable c +) { + v = def.getSourceVariable() and + c = def.getCallable() +} + +/** + * An SSA definition representing the implicit initialization of a parameter + * at the beginning of a callable. + */ +abstract deprecated class ParameterDefinitionImpl extends Ssa::Definition { + /** Gets the parameter that this definition represents. */ + abstract Parameter getParameter(); + + override string toString() { + result = "SSA param(" + pragma[only_bind_out](this.getParameter()) + ")" + } +} + +deprecated class MultiBodyParameterDefinition extends ParameterDefinitionImpl, + Ssa::ImplicitEntryDefinition +{ + private Parameter p; + + MultiBodyParameterDefinition() { + exists(Ssa::SourceVariable sv, Callable c | + implicitEntryDef(this, sv, c) and + localScopeSourceVariable(sv, p, _, c) + ) + } + + override Parameter getParameter() { result = p } + + override string toString() { result = ParameterDefinitionImpl.super.toString() } + + override Location getLocation() { + NearestLocation::nearestLocation(this, result, _) + } +} diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/Steps.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/Steps.qll index 63cd0b65dc67..7e2709468d6a 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/Steps.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/Steps.qll @@ -15,8 +15,8 @@ module Steps { * Gets a read that may read the value assigned at definition `def`. */ private AssignableRead getARead(AssignableDefinition def) { - exists(BaseSsa::Definition ssaDef | - ssaDef.getAnUltimateDefinition().getDefinition() = def and + exists(BaseSsa::SsaDefinition ssaDef | + ssaDef.getAnUltimateDefinition().(BaseSsa::SsaExplicitWrite).getDefinition() = def and result = ssaDef.getARead() ) or diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPublic.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPublic.qll index 1e60165d7484..60ebece0ee5b 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPublic.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/TaintTrackingPublic.qll @@ -1,12 +1,17 @@ private import csharp private import TaintTrackingPrivate +private predicate localTaintStepPlus(DataFlow::Node source, DataFlow::Node sink) = + fastTC(localTaintStep/2)(source, sink) + /** * Holds if taint propagates from `source` to `sink` in zero or more local * (intra-procedural) steps. */ pragma[inline] -predicate localTaint(DataFlow::Node source, DataFlow::Node sink) { localTaintStep*(source, sink) } +predicate localTaint(DataFlow::Node source, DataFlow::Node sink) { + localTaintStepPlus(source, sink) or source = sink +} /** * Holds if taint can flow from `e1` to `e2` in zero or more diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/BoundSpecific.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/BoundSpecific.qll index 3885c11afd14..037422684306 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/BoundSpecific.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/BoundSpecific.qll @@ -10,7 +10,7 @@ private import semmle.code.csharp.dataflow.internal.rangeanalysis.SsaUtils as SU class SsaVariable = SU::SsaVariable; -class Expr = CS::ControlFlow::Nodes::ExprNode; +class Expr = CS::ControlFlowNodes::ExprNode; class Location = CS::Location; diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/ConstantUtils.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/ConstantUtils.qll index e3f5deb98989..91e0ee50ef5c 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/ConstantUtils.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/ConstantUtils.qll @@ -7,7 +7,7 @@ private import Ssa private import SsaUtils private import RangeUtils -private class ExprNode = ControlFlow::Nodes::ExprNode; +private class ExprNode = ControlFlowNodes::ExprNode; /** * Holds if `pa` is an access to the `Length` property of an array. @@ -23,7 +23,7 @@ predicate systemArrayLengthAccess(PropertyAccess pa) { * - a read of the `Length` of an array with `val` lengths. */ private predicate constantIntegerExpr(ExprNode e, int val) { - e.getValue().toInt() = val + e.getExpr().getIntValue() = val or exists(ExprNode src | e = getAnExplicitDefinitionRead(src) and diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/ModulusAnalysisSpecific.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/ModulusAnalysisSpecific.qll index ca0aa83f29fc..34b5ec9a5e85 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/ModulusAnalysisSpecific.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/ModulusAnalysisSpecific.qll @@ -4,15 +4,14 @@ module Private { private import semmle.code.csharp.dataflow.internal.rangeanalysis.RangeUtils as RU private import SsaUtils as SU private import SsaReadPositionCommon - private import semmle.code.csharp.controlflow.internal.ControlFlowGraphImpl as CfgImpl - class BasicBlock = CS::ControlFlow::BasicBlock; + class BasicBlock = CS::BasicBlock; class SsaVariable = SU::SsaVariable; - class SsaPhiNode = CS::Ssa::PhiNode; + class SsaPhiNode = CS::SsaPhiDefinition; - class Expr = CS::ControlFlow::Nodes::ExprNode; + class Expr = CS::ControlFlowNodes::ExprNode; class Guard = RU::Guard; diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/RangeUtils.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/RangeUtils.qll index 46153f18dae2..b85f68883ab6 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/RangeUtils.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/RangeUtils.qll @@ -9,7 +9,7 @@ private module Impl { private import SsaReadPositionCommon private import semmle.code.csharp.controlflow.Guards as G - private class ExprNode = ControlFlow::Nodes::ExprNode; + private class ExprNode = ControlFlowNodes::ExprNode; /** Holds if `parent` having child `child` implies `parentNode` having child `childNode`. */ predicate hasChild(Expr parent, Expr child, ExprNode parentNode, ExprNode childNode) { @@ -19,9 +19,9 @@ private module Impl { } /** Holds if SSA definition `def` equals `e + delta`. */ - predicate ssaUpdateStep(ExplicitDefinition def, ExprNode e, int delta) { - exists(ControlFlow::Node cfn | cfn = def.getControlFlowNode() | - e = cfn.(ExprNode::Assignment).getRValue() and + predicate ssaUpdateStep(SsaExplicitWrite def, ExprNode e, int delta) { + exists(ControlFlowNode cfn | cfn = def.getControlFlowNode() | + e = cfn.(ExprNode::Assignment).getRightOperand() and delta = 0 and not cfn instanceof ExprNode::AssignOperation or @@ -39,7 +39,7 @@ private module Impl { /** Holds if `e1 + delta` equals `e2`. */ predicate valueFlowStep(ExprNode e2, ExprNode e1, int delta) { - e2.(ExprNode::AssignExpr).getRValue() = e1 and delta = 0 + e2.(ExprNode::AssignExpr).getRightOperand() = e1 and delta = 0 or e2.(ExprNode::UnaryPlusExpr).getOperand() = e1 and delta = 0 or @@ -83,9 +83,7 @@ private module Impl { /** * Holds if basic block `bb` is guarded by this guard having value `v`. */ - predicate controlsBasicBlock(ControlFlow::BasicBlock bb, G::GuardValue v) { - super.controlsBasicBlock(bb, v) - } + predicate controlsBasicBlock(BasicBlock bb, G::GuardValue v) { super.controlsBasicBlock(bb, v) } /** * Holds if this guard is an equality test between `e1` and `e2`. If the test is @@ -108,7 +106,7 @@ private module Impl { * - `isEq = true` : `def == e + delta` * - `isEq = false` : `def != e + delta` */ - Guard eqFlowCond(Definition def, ExprNode e, int delta, boolean isEq, boolean testIsTrue) { + Guard eqFlowCond(SsaDefinition def, ExprNode e, int delta, boolean isEq, boolean testIsTrue) { exists(boolean eqpolarity | result.isEquality(ssaRead(def, delta), e, eqpolarity) and testIsTrue = [false, true] and @@ -160,7 +158,7 @@ import Impl module ExprNode { private import csharp as CS - private class ExprNode = CS::ControlFlow::Nodes::ExprNode; + private class ExprNode = CS::ControlFlowNodes::ExprNode; private import Sign @@ -207,13 +205,13 @@ module ExprNode { override CS::Assignment e; /** Gets the left operand of this assignment. */ - ExprNode getLValue() { - result = unique(ExprNode res | hasChild(e, e.getLValue(), this, res) | res) + ExprNode getLeftOperand() { + result = unique(ExprNode res | hasChild(e, e.getLeftOperand(), this, res) | res) } /** Gets the right operand of this assignment. */ - ExprNode getRValue() { - result = unique(ExprNode res | hasChild(e, e.getRValue(), this, res) | res) + ExprNode getRightOperand() { + result = unique(ExprNode res | hasChild(e, e.getRightOperand(), this, res) | res) } } @@ -225,6 +223,10 @@ module ExprNode { /** A compound assignment operation. */ class AssignOperation extends Assignment, BinaryOperation { override CS::AssignOperation e; + + override ExprNode getLeftOperand() { result = Assignment.super.getLeftOperand() } + + override ExprNode getRightOperand() { result = Assignment.super.getRightOperand() } } /** A unary operation. */ diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll index d59d7958765a..48ed00858a0d 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/SignAnalysisSpecific.qll @@ -13,9 +13,9 @@ module Private { class ConstantIntegerExpr = CU::ConstantIntegerExpr; - class SsaVariable = CS::Ssa::Definition; + class SsaVariable = CS::SsaDefinition; - class SsaPhiNode = CS::Ssa::PhiNode; + class SsaPhiNode = CS::SsaPhiDefinition; class VarAccess = RU::ExprNode::AssignableAccess; @@ -33,9 +33,9 @@ module Private { class Type = CS::Type; - class Expr = CS::ControlFlow::Nodes::ExprNode; + class Expr = CS::ControlFlowNodes::ExprNode; - class VariableUpdate = CS::Ssa::ExplicitDefinition; + class VariableUpdate = CS::SsaExplicitWrite; class Field = CS::Field; @@ -63,7 +63,7 @@ private module Impl { private import SsaReadPositionCommon private import semmle.code.csharp.commons.ComparisonTest - private class ExprNode = ControlFlow::Nodes::ExprNode; + private class ExprNode = ControlFlowNodes::ExprNode; /** Gets the character value of expression `e`. */ string getCharValue(ExprNode e) { result = e.getValue() and e.getType() instanceof CharType } @@ -122,53 +122,41 @@ private module Impl { } /** Returns the underlying variable update of the explicit SSA variable `v`. */ - Ssa::ExplicitDefinition getExplicitSsaAssignment(Ssa::ExplicitDefinition v) { result = v } + SsaExplicitWrite getExplicitSsaAssignment(SsaExplicitWrite v) { result = v } /** Returns the assignment of the variable update `def`. */ - ExprNode getExprFromSsaAssignment(Ssa::ExplicitDefinition def) { - exists(AssignableDefinition adef | - adef = def.getADefinition() and - hasChild(adef.getExpr(), adef.getSource(), def.getControlFlowNode(), result) - ) - or - exists(AssignableDefinitions::AssignOperationDefinition adef | - adef = def.getADefinition() and - result.getExpr() = adef.getSource() - ) - } + ExprNode getExprFromSsaAssignment(SsaExplicitWrite def) { result.getExpr() = def.getValue() } /** Holds if `def` can have any sign. */ - predicate explicitSsaDefWithAnySign(Ssa::ExplicitDefinition def) { - not exists(def.getADefinition().getSource()) and - not def.getElement() instanceof MutatorOperation + predicate explicitSsaDefWithAnySign(SsaExplicitWrite def) { + not exists(def.getValue()) and + not def.getDefiningExpr() instanceof MutatorOperation } /** Returns the operand of the operation if `def` is a decrement. */ - ExprNode getDecrementOperand(Ssa::ExplicitDefinition def) { - hasChild(def.getElement(), def.getElement().(DecrementOperation).getOperand(), - def.getControlFlowNode(), result) + ExprNode getDecrementOperand(SsaExplicitWrite def) { + result.getExpr() = def.getDefiningExpr().(DecrementOperation).getOperand() } /** Returns the operand of the operation if `def` is an increment. */ - ExprNode getIncrementOperand(Ssa::ExplicitDefinition def) { - hasChild(def.getElement(), def.getElement().(IncrementOperation).getOperand(), - def.getControlFlowNode(), result) + ExprNode getIncrementOperand(SsaExplicitWrite def) { + result.getExpr() = def.getDefiningExpr().(IncrementOperation).getOperand() } /** Gets the variable underlying the implicit SSA variable `def`. */ - Declaration getImplicitSsaDeclaration(Ssa::ImplicitDefinition def) { + Declaration getImplicitSsaDeclaration(SsaImplicitWrite def) { result = def.getSourceVariable().getAssignable() } /** Holds if the variable underlying the implicit SSA variable `def` is not a field. */ - predicate nonFieldImplicitSsaDefinition(Ssa::ImplicitDefinition def) { + predicate nonFieldImplicitSsaDefinition(SsaImplicitWrite def) { not getImplicitSsaDeclaration(def) instanceof Field } /** Returned an expression that is assigned to `f`. */ ExprNode getAssignedValueToField(Field f) { result.getExpr() in [ - f.getAnAssignedValue(), any(AssignOperation a | a.getLValue() = f.getAnAccess()) + f.getAnAssignedValue(), any(AssignOperation a | a.getLeftOperand() = f.getAnAccess()) ] } @@ -231,7 +219,7 @@ private module Impl { /** Returns a sub expression of `e` for expression types where the sign depends on the child. */ ExprNode getASubExprWithSameSign(ExprNode e) { exists(Expr e_, Expr child | hasChild(e_, child, e, result) | - child = e_.(AssignExpr).getRValue() or + child = e_.(AssignExpr).getRightOperand() or child = e_.(UnaryPlusExpr).getOperand() or child = e_.(PostIncrExpr).getOperand() or child = e_.(PostDecrExpr).getOperand() or @@ -245,7 +233,7 @@ private module Impl { ) } - ExprNode getARead(Ssa::Definition v) { exists(v.getAReadAtNode(result)) } + ExprNode getARead(SsaDefinition v) { v.getARead().getControlFlowNode() = result } Field getField(ExprNode fa) { result = fa.getExpr().(FieldAccess).getTarget() } @@ -254,7 +242,7 @@ private module Impl { Guard getComparisonGuard(ComparisonExpr ce) { result = ce.getExpr() } private newtype TComparisonExpr = - MkComparisonExpr(ComparisonTest ct, ExprNode e) { e = ct.getExpr().getAControlFlowNode() } + MkComparisonExpr(ComparisonTest ct, ExprNode e) { e = ct.getExpr().getControlFlowNode() } /** A relational comparison */ class ComparisonExpr extends MkComparisonExpr { diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/SsaReadPositionSpecific.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/SsaReadPositionSpecific.qll index cbf4a1d57393..77833591c3eb 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/SsaReadPositionSpecific.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/SsaReadPositionSpecific.qll @@ -2,39 +2,34 @@ * Provides C#-specific definitions for use in the `SsaReadPosition`. */ -private import csharp +private import csharp as CS private import SsaReadPositionCommon -private import semmle.code.csharp.controlflow.internal.ControlFlowGraphImpl as CfgImpl -class SsaVariable = Ssa::Definition; +class SsaVariable = CS::SsaDefinition; -class SsaPhiNode = Ssa::PhiNode; +class SsaPhiNode = CS::SsaPhiDefinition; -class BasicBlock = ControlFlow::BasicBlock; +class BasicBlock = CS::BasicBlock; /** Gets a basic block in which SSA variable `v` is read. */ -BasicBlock getAReadBasicBlock(SsaVariable v) { - result = v.getARead().getAControlFlowNode().getBasicBlock() -} +BasicBlock getAReadBasicBlock(SsaVariable v) { result = v.getARead().getBasicBlock() } private class PhiInputEdgeBlock extends BasicBlock { PhiInputEdgeBlock() { this = any(SsaReadPositionPhiInputEdge edge).getOrigBlock() } } -private int getId(PhiInputEdgeBlock bb) { - exists(CfgImpl::AstNode n | result = n.getId() | - n = bb.getFirstNode().getAstNode() - or - n = bb.(ControlFlow::BasicBlocks::EntryBlock).getCallable() - ) +private predicate id(CS::ControlFlowElementOrCallable x, CS::ControlFlowElementOrCallable y) { + x = y } -private string getSplitString(PhiInputEdgeBlock bb) { - result = bb.getFirstNode().(ControlFlow::Nodes::ElementNode).getSplitsString() - or - not exists(bb.getFirstNode().(ControlFlow::Nodes::ElementNode).getSplitsString()) and - result = "" -} +private predicate idOfAst(CS::ControlFlowElementOrCallable x, int y) = + equivalenceRelation(id/2)(x, y) + +private predicate idOf(PhiInputEdgeBlock x, int y) { idOfAst(x.getFirstNode().getAstNode(), y) } + +private int getId1(PhiInputEdgeBlock bb) { idOf(bb, result) } + +private string getId2(PhiInputEdgeBlock bb) { bb.getFirstNode().getIdTag() = result } /** * Declarations to be exposed to users of SsaReadPositionCommon. @@ -50,7 +45,7 @@ module Public { rank[r](SsaReadPositionPhiInputEdge e | e.phiInput(phi, _) | - e order by getId(e.getOrigBlock()), getSplitString(e.getOrigBlock()) + e order by getId1(e.getOrigBlock()), getId2(e.getOrigBlock()) ) } } diff --git a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/SsaUtils.qll b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/SsaUtils.qll index 89117d90ba79..33afe07dae33 100644 --- a/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/SsaUtils.qll +++ b/csharp/ql/lib/semmle/code/csharp/dataflow/internal/rangeanalysis/SsaUtils.qll @@ -7,27 +7,27 @@ private import Ssa private import RangeUtils private import ConstantUtils -private class ExprNode = ControlFlow::Nodes::ExprNode; +private class ExprNode = ControlFlowNodes::ExprNode; /** An SSA variable. */ -class SsaVariable extends Definition { +class SsaVariable extends SsaDefinition { /** Gets a read of this SSA variable. */ - ExprNode getAUse() { exists(this.getAReadAtNode(result)) } + ExprNode getAUse() { this.getARead().getControlFlowNode() = result } } /** Gets a node that reads `src` via an SSA explicit definition. */ ExprNode getAnExplicitDefinitionRead(ExprNode src) { - exists(ExplicitDefinition def | - exists(def.getAReadAtNode(result)) and - hasChild(def.getElement(), def.getADefinition().getSource(), def.getControlFlowNode(), src) + exists(SsaExplicitWrite def | + def.getARead().getControlFlowNode() = result and + hasChild(def.getDefiningExpr(), def.getValue(), def.getControlFlowNode(), src) ) } /** * Gets an expression that equals `v - delta`. */ -ExprNode ssaRead(Definition v, int delta) { - exists(v.getAReadAtNode(result)) and delta = 0 +ExprNode ssaRead(SsaDefinition v, int delta) { + v.getARead().getControlFlowNode() = result and delta = 0 or exists(ExprNode::AddOperation add, int d1, ConstantIntegerExpr c | result = add and @@ -45,15 +45,15 @@ ExprNode ssaRead(Definition v, int delta) { delta = d1 + c.getIntValue() ) or - v.(ExplicitDefinition).getControlFlowNode().(ExprNode::PreIncrExpr) = result and delta = 0 + v.(SsaExplicitWrite).getControlFlowNode().(ExprNode::PreIncrExpr) = result and delta = 0 or - v.(ExplicitDefinition).getControlFlowNode().(ExprNode::PreDecrExpr) = result and delta = 0 + v.(SsaExplicitWrite).getControlFlowNode().(ExprNode::PreDecrExpr) = result and delta = 0 or - v.(ExplicitDefinition).getControlFlowNode().(ExprNode::PostIncrExpr) = result and delta = 1 // x++ === ++x - 1 + v.(SsaExplicitWrite).getControlFlowNode().(ExprNode::PostIncrExpr) = result and delta = 1 // x++ === ++x - 1 or - v.(ExplicitDefinition).getControlFlowNode().(ExprNode::PostDecrExpr) = result and delta = -1 // x-- === --x + 1 + v.(SsaExplicitWrite).getControlFlowNode().(ExprNode::PostDecrExpr) = result and delta = -1 // x-- === --x + 1 or - v.(ExplicitDefinition).getControlFlowNode().(ExprNode::Assignment) = result and delta = 0 + v.(SsaExplicitWrite).getControlFlowNode().(ExprNode::Assignment) = result and delta = 0 or - result.(ExprNode::AssignExpr).getRValue() = ssaRead(v, delta) + result.(ExprNode::AssignExpr).getRightOperand() = ssaRead(v, delta) } diff --git a/csharp/ql/lib/semmle/code/csharp/dispatch/Dispatch.qll b/csharp/ql/lib/semmle/code/csharp/dispatch/Dispatch.qll index f7f6c7a50be4..15a64d12b499 100644 --- a/csharp/ql/lib/semmle/code/csharp/dispatch/Dispatch.qll +++ b/csharp/ql/lib/semmle/code/csharp/dispatch/Dispatch.qll @@ -20,6 +20,9 @@ class DispatchCall extends Internal::TDispatchCall { /** Gets the underlying expression of this call. */ Expr getCall() { result = Internal::getCall(this) } + /** Gets the control flow node of this call. */ + ControlFlowNode getControlFlowNode() { result = Internal::getControlFlowNode(this) } + /** Gets the `i`th argument of this call. */ Expr getArgument(int i) { result = Internal::getArgument(this, i) } @@ -90,8 +93,17 @@ private module Internal { not mc.isLateBound() and not isExtensionAccessorCall(mc) } or - TDispatchAccessorCall(AccessorCall ac) or - TDispatchOperatorCall(OperatorCall oc) { not oc.isLateBound() } or + TDispatchAccessorCall(AccessorCall ac, boolean isRead) { + // For compound assignments an AccessorCall can be both a read and a write + ac instanceof AssignableRead and isRead = true + or + ac instanceof AssignableWrite and isRead = false + } or + TDispatchOperatorCall(OperatorCall oc) { + not oc.isLateBound() and + not oc instanceof CompoundAssignmentOperatorCall + } or + TDispatchCompoundAssignmentOperatorCall(CompoundAssignmentOperatorCall caoc) or TDispatchReflectionCall(MethodCall mc, string name, Expr object, Expr qualifier, int args) { isReflectionCall(mc, name, object, qualifier, args) } or @@ -117,6 +129,11 @@ private module Internal { cached Expr getCall(DispatchCall dc) { result = dc.(DispatchCallImpl).getCall() } + cached + ControlFlowNode getControlFlowNode(DispatchCall dc) { + result = dc.(DispatchCallImpl).getControlFlowNode() + } + cached Expr getArgument(DispatchCall dc, int i) { result = dc.(DispatchCallImpl).getArgument(i) } @@ -224,6 +241,9 @@ private module Internal { /** Gets the underlying expression of this call. */ abstract Expr getCall(); + /** Gets the control flow node of this call. */ + ControlFlowNode getControlFlowNode() { result = this.getCall().getControlFlowNode() } + /** Gets the `i`th argument of this call. */ abstract Expr getArgument(int i); @@ -339,8 +359,8 @@ private module Internal { 1 < strictcount(this.getADynamicTarget().getUnboundDeclaration()) and c = this.getCall().getEnclosingCallable().getUnboundDeclaration() and ( - exists(BaseSsa::Definition def, Parameter p | - def.isImplicitEntryDefinition(p) and + exists(BaseSsa::SsaParameterInit def, Parameter p | + def.getParameter() = p and this.getSyntheticQualifier() = def.getARead() and p.getPosition() = i and c.getAParameter() = p and @@ -870,6 +890,20 @@ private module Internal { override Operator getAStaticTarget() { result = this.getCall().getTarget() } } + private class DispatchCompoundAssignmentOperatorCall extends DispatchOverridableCall, + TDispatchCompoundAssignmentOperatorCall + { + override CompoundAssignmentOperatorCall getCall() { + this = TDispatchCompoundAssignmentOperatorCall(result) + } + + override Expr getArgument(int i) { result = this.getCall().getArgument(i) } + + override Expr getQualifier() { result = this.getCall().getQualifier() } + + override Operator getAStaticTarget() { result = this.getCall().getTarget() } + } + /** * A call to an accessor. * @@ -877,13 +911,28 @@ private module Internal { * into account. */ private class DispatchAccessorCall extends DispatchOverridableCall, TDispatchAccessorCall { - override AccessorCall getCall() { this = TDispatchAccessorCall(result) } + private predicate isRead() { this = TDispatchAccessorCall(_, true) } + + override ControlFlowNode getControlFlowNode() { + if this.isRead() + then result = this.getCall().getControlFlowNode() + else + exists(AssignableDefinition def | + def.getTargetAccess() = this.getCall() and result = def.getExpr().getControlFlowNode() + ) + } + + override AccessorCall getCall() { this = TDispatchAccessorCall(result, _) } override Expr getArgument(int i) { result = this.getCall().getArgument(i) } override Expr getQualifier() { result = this.getCall().(MemberAccess).getQualifier() } - override Accessor getAStaticTarget() { result = this.getCall().getTarget() } + override Accessor getAStaticTarget() { + if this.isRead() + then result = this.getCall().getReadTarget() + else result = this.getCall().getWriteTarget() + } override RuntimeAccessor getADynamicTarget() { result = DispatchOverridableCall.super.getADynamicTarget() and @@ -1348,7 +1397,7 @@ private module Internal { any(DynamicMemberAccess dma | this = TDispatchDynamicEventAccess(_, dma, _)).getQualifier() } - override Expr getArgument(int i) { i = 0 and result = this.getCall().getRValue() } + override Expr getArgument(int i) { i = 0 and result = this.getCall().getRightOperand() } } /** A call to a constructor using dynamic types. */ diff --git a/csharp/ql/lib/semmle/code/csharp/exprs/Access.qll b/csharp/ql/lib/semmle/code/csharp/exprs/Access.qll index 84375bc70130..d9fb16f0974b 100644 --- a/csharp/ql/lib/semmle/code/csharp/exprs/Access.qll +++ b/csharp/ql/lib/semmle/code/csharp/exprs/Access.qll @@ -112,7 +112,7 @@ class BaseAccess extends Access, @base_access_expr { class MemberAccess extends Access, QualifiableExpr, @member_access_expr { override predicate hasImplicitThisQualifier() { QualifiableExpr.super.hasImplicitThisQualifier() and - not exists(MemberInitializer mi | mi.getLValue() = this) + not exists(MemberInitializer mi | mi.getLeftOperand() = this) } override Member getQualifiedDeclaration() { result = this.getTarget() } diff --git a/csharp/ql/lib/semmle/code/csharp/exprs/Assignment.qll b/csharp/ql/lib/semmle/code/csharp/exprs/Assignment.qll index 467149011d2c..f65b13bf8ecb 100644 --- a/csharp/ql/lib/semmle/code/csharp/exprs/Assignment.qll +++ b/csharp/ql/lib/semmle/code/csharp/exprs/Assignment.qll @@ -20,14 +20,22 @@ class Assignment extends BinaryOperation, @assign_expr { expr_parent(_, 1, this) } - /** Gets the left operand of this assignment. */ - Expr getLValue() { result = this.getLeftOperand() } + /** + * DEPRECATED: Use `getLeftOperand` instead. + * + * Gets the left operand of this assignment. + */ + deprecated Expr getLValue() { result = this.getLeftOperand() } - /** Gets the right operand of this assignment. */ - Expr getRValue() { result = this.getRightOperand() } + /** + * DEPRECATED: Use `getRightOperand` instead. + * + * Gets the right operand of this assignment. + */ + deprecated Expr getRValue() { result = this.getRightOperand() } /** Gets the variable being assigned to, if any. */ - Variable getTargetVariable() { result.getAnAccess() = this.getLValue() } + Variable getTargetVariable() { result.getAnAccess() = this.getLeftOperand() } override string getOperator() { none() } } @@ -40,7 +48,12 @@ class LocalVariableDeclAndInitExpr extends LocalVariableDeclExpr, Assignment { override LocalVariable getTargetVariable() { result = this.getVariable() } - override LocalVariableAccess getLValue() { result = Assignment.super.getLValue() } + /** + * DEPRECATED: Use `getLeftOperand` instead. + */ + deprecated override LocalVariableAccess getLValue() { result = this.getLeftOperand() } + + override LocalVariableAccess getLeftOperand() { result = Assignment.super.getLeftOperand() } override string toString() { result = LocalVariableDeclExpr.super.toString() + " = ..." } @@ -81,13 +94,17 @@ class AssignOperation extends Assignment, @assign_op_expr { } /** - * A compound assignment operation that implicitly invokes an operator. - * For example, `x += y` assigns the result of `x + y` to `x`. + * A compound assignment operation that invokes an operator. + * + * (1) `x += y` invokes the compound assignment operator `+=` (if it exists). + * (2) `x += y` invokes the operator `+` and assigns `x + y` to `x`. * * Either an arithmetic assignment operation (`AssignArithmeticOperation`) or a bitwise * assignment operation (`AssignBitwiseOperation`). */ -class AssignCallOperation extends AssignOperation, OperatorCall, @assign_op_call_expr { +class AssignCallOperation extends AssignOperation, OperatorCall, QualifiableExpr, + @assign_op_call_expr +{ override string toString() { result = AssignOperation.super.toString() } } @@ -223,9 +240,12 @@ deprecated class AssignUnsighedRightShiftExpr = AssignUnsignedRightShiftExpr; */ class AddOrRemoveEventExpr extends AssignOperation, @assign_event_expr { /** Gets the event targeted by this event assignment. */ - Event getTarget() { result = this.getLValue().getTarget() } + Event getTarget() { result = this.getLeftOperand().getTarget() } - override EventAccess getLValue() { result = this.getChild(0) } + /** + * DEPRECATED: Use `getLeftOperand` instead. + */ + deprecated override EventAccess getLValue() { result = this.getLeftOperand() } override EventAccess getLeftOperand() { result = this.getChild(0) } } diff --git a/csharp/ql/lib/semmle/code/csharp/exprs/Call.qll b/csharp/ql/lib/semmle/code/csharp/exprs/Call.qll index c3be99deac4c..4b86a4f6cd43 100644 --- a/csharp/ql/lib/semmle/code/csharp/exprs/Call.qll +++ b/csharp/ql/lib/semmle/code/csharp/exprs/Call.qll @@ -530,6 +530,19 @@ class ExtensionOperatorCall extends OperatorCall { ExtensionOperatorCall() { this.getTarget() instanceof ExtensionOperator } override string getAPrimaryQlClass() { result = "ExtensionOperatorCall" } + + private predicate isOrdinaryStaticCall() { + not exists(Expr e | e = this.getChildExpr(-1) | not e instanceof TypeAccess) + } + + override Expr getArgument(int i) { + exists(int j | result = this.getChildExpr(j) | + i >= 0 and + if this.isOrdinaryStaticCall() or this.getTarget() instanceof CompoundAssignmentOperator + then j = i + else j = i - 1 + ) + } } /** @@ -558,6 +571,58 @@ class MutatorOperatorCall extends OperatorCall { predicate isPostfix() { mutator_invocation_mode(this, 2) } } +/** + * A call to a compound assignment operator, for example `this += other` + * on line 7 in + * + * ```csharp + * class A { + * public void operator +=(A other) { + * ... + * } + * + * public void Add(A other) { + * this += other; + * } + * } + * ``` + */ +class CompoundAssignmentOperatorCall extends AssignCallOperation { + CompoundAssignmentOperatorCall() { this.getTarget() instanceof CompoundAssignmentOperator } + + override Expr getArgument(int i) { result = this.getChildExpr(i + 1) and i >= 0 } + + /** Gets the qualifier of this compound assignment operator call. */ + override Expr getQualifier() { result = this.getChildExpr(0) } +} + +/** + * A call to a compound assignment extension operator, for example `s1 *= s2` on + * line 9 in + * + * ```csharp + * static class MyExtensions { + * extension(string s) { + * public void operator *=(string other) { ... } + * } + * } + * + * class A { + * void M(string s1, string s2) { + * s1 *= s2; + * } + * } + */ +class ExtensionCompoundAssignmentOperatorCall extends CompoundAssignmentOperatorCall, + ExtensionOperatorCall +{ + override Expr getArgument(int i) { result = ExtensionOperatorCall.super.getArgument(i) } + + override Expr getQualifier() { none() } + + override string getAPrimaryQlClass() { result = "ExtensionCompoundAssignmentOperatorCall" } +} + private class DelegateLikeCall_ = @delegate_invocation_expr or @function_pointer_invocation_expr; /** @@ -634,7 +699,25 @@ class FunctionPointerCall extends DelegateLikeCall, @function_pointer_invocation * (`EventCall`). */ class AccessorCall extends Call, QualifiableExpr, @call_access_expr { - override Accessor getTarget() { none() } + override Accessor getTarget() { result = this.getReadTarget() or result = this.getWriteTarget() } + + /** + * Gets the static (compile-time) target of this call, assuming that this is + * an `AssignableRead`. + * + * Note that left-hand sides of compound assignments are both + * `AssignableRead`s and `AssignableWrite`s. + */ + Accessor getReadTarget() { none() } + + /** + * Gets the static (compile-time) target of this call, assuming that this is + * an `AssignableWrite`. + * + * Note that left-hand sides of compound assignments are both + * `AssignableRead`s and `AssignableWrite`s. + */ + Accessor getWriteTarget() { none() } override Expr getArgument(int i) { none() } @@ -656,12 +739,12 @@ class AccessorCall extends Call, QualifiableExpr, @call_access_expr { * ``` */ class PropertyCall extends AccessorCall, PropertyAccessExpr { - override Accessor getTarget() { - exists(PropertyAccess pa, Property p | pa = this and p = this.getProperty() | - pa instanceof AssignableRead and result = p.getGetter() - or - pa instanceof AssignableWrite and result = p.getSetter() - ) + override Accessor getReadTarget() { + this instanceof AssignableRead and result = this.getProperty().getGetter() + } + + override Accessor getWriteTarget() { + this instanceof AssignableWrite and result = this.getProperty().getSetter() } override Expr getArgument(int i) { @@ -691,12 +774,12 @@ class PropertyCall extends AccessorCall, PropertyAccessExpr { * ``` */ class IndexerCall extends AccessorCall, IndexerAccessExpr { - override Accessor getTarget() { - exists(IndexerAccess ia, Indexer i | ia = this and i = this.getIndexer() | - ia instanceof AssignableRead and result = i.getGetter() - or - ia instanceof AssignableWrite and result = i.getSetter() - ) + override Accessor getReadTarget() { + this instanceof AssignableRead and result = this.getIndexer().getGetter() + } + + override Accessor getWriteTarget() { + this instanceof AssignableWrite and result = this.getIndexer().getSetter() } override Expr getArgument(int i) { @@ -771,10 +854,10 @@ class ExtensionPropertyCall extends PropertyCall { * ``` */ class EventCall extends AccessorCall, EventAccessExpr { - override EventAccessor getTarget() { + override EventAccessor getWriteTarget() { exists(Event e, AddOrRemoveEventExpr aoree | e = this.getEvent() and - aoree.getLValue() = this + aoree.getLeftOperand() = this | aoree instanceof AddEventExpr and result = e.getAddEventAccessor() or @@ -785,8 +868,8 @@ class EventCall extends AccessorCall, EventAccessExpr { override Expr getArgument(int i) { i = 0 and exists(AddOrRemoveEventExpr aoree | - aoree.getLValue() = this and - result = aoree.getRValue() + aoree.getLeftOperand() = this and + result = aoree.getRightOperand() ) } diff --git a/csharp/ql/lib/semmle/code/csharp/exprs/Creation.qll b/csharp/ql/lib/semmle/code/csharp/exprs/Creation.qll index 0e16e0da9c3c..19ff9fac53b2 100644 --- a/csharp/ql/lib/semmle/code/csharp/exprs/Creation.qll +++ b/csharp/ql/lib/semmle/code/csharp/exprs/Creation.qll @@ -95,7 +95,7 @@ class MemberInitializer extends AssignExpr { MemberInitializer() { this.getParent() instanceof ObjectInitializer } /** Gets the initialized member. */ - Member getInitializedMember() { result.getAnAccess() = this.getLValue() } + Member getInitializedMember() { result.getAnAccess() = this.getLeftOperand() } override string getAPrimaryQlClass() { result = "MemberInitializer" } } diff --git a/csharp/ql/lib/semmle/code/csharp/exprs/Expr.qll b/csharp/ql/lib/semmle/code/csharp/exprs/Expr.qll index 66764d06479d..a26afb004901 100644 --- a/csharp/ql/lib/semmle/code/csharp/exprs/Expr.qll +++ b/csharp/ql/lib/semmle/code/csharp/exprs/Expr.qll @@ -57,6 +57,13 @@ class Expr extends ControlFlowElement, @expr { /** Gets the value of this expression, if any */ string getValue() { expr_value(this, result) } + /** Gets the integer value of this expression, if any. */ + cached + int getIntValue() { + result = this.getValue().toInt() and + (this.getType() instanceof IntegralType or this.getType() instanceof Enum) + } + /** Holds if this expression has a value. */ final predicate hasValue() { exists(this.getValue()) } @@ -1099,7 +1106,7 @@ class QualifiableExpr extends Expr, @qualifiable_expr { } private Expr getAnAssignOrForeachChild() { - result = any(AssignExpr e).getLValue() + result = any(AssignExpr e).getLeftOperand() or result = any(ForeachStmt fs).getVariableDeclTuple() or diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/Format.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/Format.qll index b00459c64b0e..d191f62aa920 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/Format.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/Format.qll @@ -126,7 +126,7 @@ private class SystemDiagnosticsFormatMethods extends FormatMethodImpl { pragma[nomagic] private predicate parameterReadPostDominatesEntry(ParameterRead pr) { - pr.getAControlFlowNode().postDominates(pr.getEnclosingCallable().getEntryPoint()) and + pr.getControlFlowNode().postDominates(pr.getEnclosingCallable().getEntryPoint()) and getParameterType(pr.getTarget()) instanceof ObjectType } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/Moq.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/Moq.qll index 9ab9a026fd29..0beec9a84b28 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/Moq.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/Moq.qll @@ -41,6 +41,6 @@ class ReturnedByMockObject extends ObjectCreation { * Gets a value used to initialize a member of this object creation. */ Expr getAMemberInitializationValue() { - result = this.getInitializer().(ObjectInitializer).getAMemberInitializer().getRValue() + result = this.getInitializer().(ObjectInitializer).getAMemberInitializer().getRightOperand() } } diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/Sql.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/Sql.qll index 6b1eb7b67fb7..58d6d68bf0ea 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/Sql.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/Sql.qll @@ -17,14 +17,14 @@ abstract class SqlExpr extends Expr { class CommandTextAssignmentSqlExpr extends SqlExpr, AssignExpr { CommandTextAssignmentSqlExpr() { exists(Property p, SystemDataIDbCommandInterface i, Property text | - p = this.getLValue().(PropertyAccess).getTarget() and + p = this.getLeftOperand().(PropertyAccess).getTarget() and text = i.getCommandTextProperty() | p.overridesOrImplementsOrEquals(text) ) } - override Expr getSql() { result = this.getRValue() } + override Expr getSql() { result = this.getRightOperand() } } /** A construction of an unknown `IDbCommand` object. */ diff --git a/csharp/ql/lib/semmle/code/csharp/frameworks/system/runtime/CompilerServices.qll b/csharp/ql/lib/semmle/code/csharp/frameworks/system/runtime/CompilerServices.qll index 2c0ba292b9c5..aca2cb2cb1c3 100644 --- a/csharp/ql/lib/semmle/code/csharp/frameworks/system/runtime/CompilerServices.qll +++ b/csharp/ql/lib/semmle/code/csharp/frameworks/system/runtime/CompilerServices.qll @@ -81,7 +81,7 @@ class SystemRuntimeCompilerServicesInlineArrayAttribute extends Attribute { /** * Gets the length of the inline array. */ - int getLength() { result = this.getConstructorArgument(0).getValue().toInt() } + int getLength() { result = this.getConstructorArgument(0).getIntValue() } } /** An attribute of type `System.Runtime.CompilerServices.OverloadResolutionPriority`. */ @@ -94,5 +94,5 @@ class SystemRuntimeCompilerServicesOverloadResolutionPriorityAttribute extends A /** * Gets the priority number. */ - int getPriority() { result = this.getConstructorArgument(0).getValue().toInt() } + int getPriority() { result = this.getConstructorArgument(0).getIntValue() } } diff --git a/csharp/ql/lib/semmle/code/csharp/security/auth/SecureCookies.qll b/csharp/ql/lib/semmle/code/csharp/security/auth/SecureCookies.qll index 56b6294949b8..e7cb6d8e3081 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/auth/SecureCookies.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/auth/SecureCookies.qll @@ -100,20 +100,20 @@ Expr getAValueForCookiePolicyProp(string prop) { Expr getAValueForProp(ObjectCreation create, Assignment a, string prop) { // values set in object init exists(MemberInitializer init, Expr src, PropertyAccess pa | - a.getLValue() = pa and + a.getLeftOperand() = pa and pa.getTarget().hasName(prop) and init = create.getInitializer().(ObjectInitializer).getAMemberInitializer() and - init.getLValue() = pa and - DataFlow::localExprFlow(src, init.getRValue()) and + init.getLeftOperand() = pa and + DataFlow::localExprFlow(src, init.getRightOperand()) and result = src ) or // values set on var that create is assigned to exists(Expr src, PropertyAccess pa | - a.getLValue() = pa and + a.getLeftOperand() = pa and pa.getTarget().hasName(prop) and DataFlow::localExprFlow(create, pa.getQualifier()) and - DataFlow::localExprFlow(src, a.getRValue()) and + DataFlow::localExprFlow(src, a.getRightOperand()) and result = src ) } @@ -138,15 +138,15 @@ private module OnAppendCookieTrackingConfig impl exists(PropertyWrite pw, Assignment delegateAssign, Callable c | pw.getProperty().getName() = "OnAppendCookie" and pw.getProperty().getDeclaringType() instanceof MicrosoftAspNetCoreBuilderCookiePolicyOptions and - delegateAssign.getLValue() = pw and + delegateAssign.getLeftOperand() = pw and ( exists(LambdaExpr lambda | - delegateAssign.getRValue() = lambda and + delegateAssign.getRightOperand() = lambda and lambda = c ) or exists(DelegateCreation delegate | - delegateAssign.getRValue() = delegate and + delegateAssign.getRightOperand() = delegate and delegate.getArgument().(CallableAccess).getTarget() = c ) ) and @@ -159,9 +159,9 @@ private module OnAppendCookieTrackingConfig impl exists(PropertyWrite pw, Assignment a | pw.getProperty().getDeclaringType() instanceof MicrosoftAspNetCoreHttpCookieOptions and pw.getProperty().getName() = getPropertyName() and - a.getLValue() = pw and + a.getLeftOperand() = pw and exists(Expr val | - DataFlow::localExprFlow(val, a.getRValue()) and + DataFlow::localExprFlow(val, a.getRightOperand()) and val.getValue() = "true" ) and sink.asExpr() = pw.getQualifier() diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ConditionalBypassQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ConditionalBypassQuery.qll index 53b44f873a64..a9ad31dc804c 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/ConditionalBypassQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/ConditionalBypassQuery.qll @@ -5,7 +5,6 @@ import csharp private import semmle.code.csharp.controlflow.Guards -private import semmle.code.csharp.controlflow.BasicBlocks private import semmle.code.csharp.security.dataflow.flowsinks.FlowSinks private import semmle.code.csharp.security.dataflow.flowsources.FlowSources private import semmle.code.csharp.frameworks.System diff --git a/csharp/ql/lib/semmle/code/csharp/security/dataflow/UnsafeDeserializationQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/dataflow/UnsafeDeserializationQuery.qll index 5b2bd407a5ce..3c8911ef8074 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/dataflow/UnsafeDeserializationQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/dataflow/UnsafeDeserializationQuery.qll @@ -126,16 +126,16 @@ private module TypeNameTrackingConfig implements DataFlow::ConfigSig { or node1.getType() instanceof TypeNameHandlingEnum and exists(PropertyWrite pw, Property p, Assignment a | - a.getLValue() = pw and + a.getLeftOperand() = pw and pw.getProperty() = p and p.getDeclaringType() instanceof JsonSerializerSettingsClass and p.hasName("TypeNameHandling") and ( - node1.asExpr() = a.getRValue() and + node1.asExpr() = a.getRightOperand() and node2.asExpr() = pw.getQualifier() or exists(ObjectInitializer oi | - node1.asExpr() = oi.getAMemberInitializer().getRValue() and + node1.asExpr() = oi.getAMemberInitializer().getRightOperand() and node2.asExpr() = oi ) ) 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 2906fde4e1de..aa8c8536556e 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 @@ -3,6 +3,7 @@ */ import csharp +private import semmle.code.csharp.commons.Collections private import semmle.code.csharp.frameworks.system.Net private import semmle.code.csharp.frameworks.system.Web private import semmle.code.csharp.frameworks.system.web.Http @@ -104,7 +105,7 @@ class WcfRemoteFlowSource extends RemoteFlowSource, DataFlow::ParameterNode { } /** A data flow source of remote user input (ASP.NET web service). */ -class AspNetServiceRemoteFlowSource extends RemoteFlowSource, DataFlow::ParameterNode { +class AspNetServiceRemoteFlowSource extends AspNetRemoteFlowSource, DataFlow::ParameterNode { AspNetServiceRemoteFlowSource() { exists(Method m | m.getAParameter() = this.getParameter() and @@ -115,8 +116,50 @@ class AspNetServiceRemoteFlowSource extends RemoteFlowSource, DataFlow::Paramete override string getSourceType() { result = "ASP.NET web service input" } } +private class CandidateMemberToTaint extends Member { + CandidateMemberToTaint() { + this.isPublic() and + not this.isStatic() and + ( + this = + any(Property p | + p.isAutoImplemented() and + p.getGetter().isPublic() and + p.getSetter().isPublic() + ) + or + this = any(Field f | f.isPublic()) + ) + } +} + +/** + * Taint members (transitively) on types used in + * 1. Action method parameters. + * 2. WebMethod parameters. + * + * Note that this also impacts uses of such types in other contexts. + */ +private class AspNetRemoteFlowSourceMember extends TaintTracking::TaintedMember, + CandidateMemberToTaint +{ + AspNetRemoteFlowSourceMember() { + exists(Type t, Type t0 | t = this.getDeclaringType() | + (t = t0 or t = t0.(CollectionType).getElementType()) and + ( + t0 = any(AspNetRemoteFlowSourceMember m).getType() + or + t0 = any(ActionMethodParameter p).getType() + or + t0 = any(AspNetServiceRemoteFlowSource source).getType() + ) + ) + } +} + /** A data flow source of remote user input (ASP.NET request message). */ -class SystemNetHttpRequestMessageRemoteFlowSource extends RemoteFlowSource, DataFlow::ExprNode { +class SystemNetHttpRequestMessageRemoteFlowSource extends AspNetRemoteFlowSource, DataFlow::ExprNode +{ SystemNetHttpRequestMessageRemoteFlowSource() { this.getType() instanceof SystemWebHttpRequestMessageClass } @@ -166,7 +209,7 @@ class MicrosoftOwinRequestRemoteFlowSource extends RemoteFlowSource, DataFlow::E } /** A parameter to an Mvc controller action method, viewed as a source of remote user input. */ -class ActionMethodParameter extends RemoteFlowSource, DataFlow::ParameterNode { +class ActionMethodParameter extends AspNetRemoteFlowSource, DataFlow::ParameterNode { ActionMethodParameter() { exists(Parameter p | p = this.getParameter() and @@ -218,14 +261,18 @@ class AspNetCoreRoutingMethodParameter extends AspNetCoreRemoteFlowSource, DataF * Flow is defined from any ASP.NET Core remote source object to any of its member * properties. */ -private class AspNetCoreRemoteFlowSourceMember extends TaintTracking::TaintedMember, Property { +private class AspNetCoreRemoteFlowSourceMember extends TaintTracking::TaintedMember, + CandidateMemberToTaint +{ AspNetCoreRemoteFlowSourceMember() { - this.getDeclaringType() = any(AspNetCoreRemoteFlowSource source).getType() and - this.isPublic() and - not this.isStatic() and - this.isAutoImplemented() and - this.getGetter().isPublic() and - this.getSetter().isPublic() + exists(Type t, Type t0 | t = this.getDeclaringType() | + (t = t0 or t = t0.(CollectionType).getElementType()) and + ( + t0 = any(AspNetCoreRemoteFlowSourceMember m).getType() + or + t0 = any(AspNetCoreRemoteFlowSource m).getType() + ) + ) } } diff --git a/csharp/ql/lib/semmle/code/csharp/security/xml/InsecureXMLQuery.qll b/csharp/ql/lib/semmle/code/csharp/security/xml/InsecureXMLQuery.qll index 1abeaf797b00..765dc2adf54a 100644 --- a/csharp/ql/lib/semmle/code/csharp/security/xml/InsecureXMLQuery.qll +++ b/csharp/ql/lib/semmle/code/csharp/security/xml/InsecureXMLQuery.qll @@ -84,15 +84,15 @@ private Expr getAValueForProp(ObjectCreation create, string prop) { // values set in object init exists(MemberInitializer init | init = create.getInitializer().(ObjectInitializer).getAMemberInitializer() and - init.getLValue().(PropertyAccess).getTarget().hasName(prop) and - result = init.getRValue() + init.getLeftOperand().(PropertyAccess).getTarget().hasName(prop) and + result = init.getRightOperand() ) or // values set on var that create is assigned to exists(Assignment propAssign | - DataFlow::localExprFlow(create, propAssign.getLValue().(PropertyAccess).getQualifier()) and - propAssign.getLValue().(PropertyAccess).getTarget().hasName(prop) and - result = propAssign.getRValue() + DataFlow::localExprFlow(create, propAssign.getLeftOperand().(PropertyAccess).getQualifier()) and + propAssign.getLeftOperand().(PropertyAccess).getTarget().hasName(prop) and + result = propAssign.getRightOperand() ) } diff --git a/csharp/ql/lib/semmlecode.csharp.dbscheme b/csharp/ql/lib/semmlecode.csharp.dbscheme index 19b8cc3e2dc7..3cabc77473cb 100644 --- a/csharp/ql/lib/semmlecode.csharp.dbscheme +++ b/csharp/ql/lib/semmlecode.csharp.dbscheme @@ -1338,7 +1338,8 @@ dynamic_member_name( @qualifiable_expr = @member_access_expr | @method_invocation_expr - | @element_access_expr; + | @element_access_expr + | @assign_op_call_expr; conditional_access( unique int id: @qualifiable_expr ref); @@ -1362,7 +1363,7 @@ compiler_generated(unique int id: @element ref); /** CONTROL/DATA FLOW **/ -@control_flow_element = @stmt | @expr; +@control_flow_element = @stmt | @expr | @parameter; /* XML Files */ diff --git a/csharp/ql/lib/upgrades/19b8cc3e2dc768d4cbc03d6e3773b709bbebd036/old.dbscheme b/csharp/ql/lib/upgrades/19b8cc3e2dc768d4cbc03d6e3773b709bbebd036/old.dbscheme new file mode 100644 index 000000000000..19b8cc3e2dc7 --- /dev/null +++ b/csharp/ql/lib/upgrades/19b8cc3e2dc768d4cbc03d6e3773b709bbebd036/old.dbscheme @@ -0,0 +1,1504 @@ +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2021-07-14 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * csc f1.cs f2.cs f3.cs + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + unique int id : @compilation, + string cwd : string ref +); + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | --compiler + * 1 | *path to compiler* + * 2 | f1.cs + * 3 | f2.cs + * 4 | f3.cs + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile.rsp` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.cs + * 1 | f2.cs + * 2 | f3.cs + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The references used by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs /r:ref1.dll /r:ref2.dll /r:ref3.dll + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | ref1.dll + * 1 | ref2.dll + * 2 | ref3.dll + */ +#keyset[id, num] +compilation_referencing_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location ref +); + +extractor_messages( + unique int id: @extractor_message, + int severity: int ref, + string origin : string ref, + string text : string ref, + string entity : string ref, + int location: @location ref, + string stack_trace : string ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +compilation_assembly( + unique int id : @compilation ref, + int assembly: @assembly ref +) + +// Populated by the CSV extractor +externalData( + int id: @externalDataElement, + string path: string ref, + int column: int ref, + string value: string ref); + +sourceLocationPrefix( + string prefix: string ref); + +/* + * Overlay support + */ + +/** + * The CLI will automatically emit the tuple `databaseMetadata("isOverlay", "true")`, + * along with an `overlayChangedFiles` tuple for each new/modified/deleted file, + * when building an overlay database, and these can be used by the discard predicates. + */ +databaseMetadata( + string metadataKey : string ref, + string value : string ref +); + +overlayChangedFiles( + string path : string ref +); + +/* + * C# dbscheme + */ + +/** ELEMENTS **/ + +@element = @declaration | @stmt | @expr | @modifier | @attribute | @namespace_declaration + | @using_directive | @type_parameter_constraints | @externalDataElement + | @xmllocatable | @asp_element | @namespace | @preprocessor_directive; + +@declaration = @callable | @generic | @assignable | @namespace; + +@named_element = @namespace | @declaration; + +@declaration_with_accessors = @property | @indexer | @event; + +@assignable = @variable | @assignable_with_accessors | @event; + +@assignable_with_accessors = @property | @indexer; + +@attributable = @assembly | @field | @parameter | @operator | @method | @constructor + | @destructor | @callable_accessor | @value_or_ref_type | @declaration_with_accessors + | @local_function | @lambda_expr; + +/** LOCATIONS, ASEMMBLIES, MODULES, FILES and FOLDERS **/ + +@location = @location_default | @assembly; + +@locatable = @declaration_with_accessors | @callable_accessor | @declaration_or_directive + | @diagnostic | @extractor_message | @preprocessor_directive | @attribute | @type_mention | @type_parameter_constraints + | @declaration_with_accessors | @callable_accessor | @operator | @method + | @constructor | @destructor | @field | @local_variable | @parameter | @stmt | @expr + | @xmllocatable | @commentline | @commentblock | @asp_element + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +locations_mapped( + unique int id: @location_default ref, + int mapped_to: @location_default ref); + +@sourceline = @file | @callable | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref); + +assemblies( + unique int id: @assembly, + int file: @file ref, + string fullname: string ref, + string name: string ref, + string version: string ref); + +files( + unique int id: @file, + string name: string ref); + +folders( + unique int id: @folder, + string name: string ref); + +@container = @folder | @file ; + +containerparent( + int parent: @container ref, + unique int child: @container ref); + +file_extraction_mode( + unique int file: @file ref, + int mode: int ref + /* 0 = normal, 1 = standalone extractor */ + ); + +/** NAMESPACES **/ + +@type_container = @namespace | @type; + +namespaces( + unique int id: @namespace, + string name: string ref); + +namespace_declarations( + unique int id: @namespace_declaration, + int namespace_id: @namespace ref); + +namespace_declaration_location( + unique int id: @namespace_declaration ref, + int loc: @location ref); + +parent_namespace( + unique int child_id: @type_container ref, + int namespace_id: @namespace ref); + +@declaration_or_directive = @namespace_declaration | @type | @using_directive; + +parent_namespace_declaration( + int child_id: @declaration_or_directive ref, // cannot be unique because of partial classes + int namespace_id: @namespace_declaration ref); + +@using_directive = @using_namespace_directive | @using_static_directive; + +using_global( + unique int id: @using_directive ref +); + +using_namespace_directives( + unique int id: @using_namespace_directive, + int namespace_id: @namespace ref); + +using_static_directives( + unique int id: @using_static_directive, + int type_id: @type_or_ref ref); + +using_directive_location( + unique int id: @using_directive ref, + int loc: @location ref); + +@preprocessor_directive = @pragma_warning | @pragma_checksum | @directive_define | @directive_undefine | @directive_warning + | @directive_error | @directive_nullable | @directive_line | @directive_region | @directive_endregion | @directive_if + | @directive_elif | @directive_else | @directive_endif; + +@conditional_directive = @directive_if | @directive_elif; +@branch_directive = @directive_if | @directive_elif | @directive_else; + +directive_ifs( + unique int id: @directive_if, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref); /* 0: false, 1: true */ + +directive_elifs( + unique int id: @directive_elif, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +directive_elses( + unique int id: @directive_else, + int branchTaken: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +#keyset[id, start] +directive_endifs( + unique int id: @directive_endif, + unique int start: @directive_if ref); + +directive_define_symbols( + unique int id: @define_symbol_expr ref, + string name: string ref); + +directive_regions( + unique int id: @directive_region, + string name: string ref); + +#keyset[id, start] +directive_endregions( + unique int id: @directive_endregion, + unique int start: @directive_region ref); + +directive_lines( + unique int id: @directive_line, + int kind: int ref); /* 0: default, 1: hidden, 2: numeric, 3: span */ + +directive_line_value( + unique int id: @directive_line ref, + int line: int ref); + +directive_line_file( + unique int id: @directive_line ref, + int file: @file ref); + +directive_line_offset( + unique int id: @directive_line ref, + int offset: int ref); + +directive_line_span( + unique int id: @directive_line ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +directive_nullables( + unique int id: @directive_nullable, + int setting: int ref, /* 0: disable, 1: enable, 2: restore */ + int target: int ref); /* 0: none, 1: annotations, 2: warnings */ + +directive_warnings( + unique int id: @directive_warning, + string message: string ref); + +directive_errors( + unique int id: @directive_error, + string message: string ref); + +directive_undefines( + unique int id: @directive_undefine, + string name: string ref); + +directive_defines( + unique int id: @directive_define, + string name: string ref); + +pragma_checksums( + unique int id: @pragma_checksum, + int file: @file ref, + string guid: string ref, + string bytes: string ref); + +pragma_warnings( + unique int id: @pragma_warning, + int kind: int ref /* 0 = disable, 1 = restore */); + +#keyset[id, index] +pragma_warning_error_codes( + int id: @pragma_warning ref, + string errorCode: string ref, + int index: int ref); + +preprocessor_directive_location( + unique int id: @preprocessor_directive ref, + int loc: @location ref); + +preprocessor_directive_compilation( + int id: @preprocessor_directive ref, + int compilation: @compilation ref); + +preprocessor_directive_active( + unique int id: @preprocessor_directive ref, + int active: int ref); /* 0: false, 1: true */ + +/** TYPES **/ + +types( + unique int id: @type, + int kind: int ref, + string name: string ref); + +case @type.kind of + 1 = @bool_type +| 2 = @char_type +| 3 = @decimal_type +| 4 = @sbyte_type +| 5 = @short_type +| 6 = @int_type +| 7 = @long_type +| 8 = @byte_type +| 9 = @ushort_type +| 10 = @uint_type +| 11 = @ulong_type +| 12 = @float_type +| 13 = @double_type +| 14 = @enum_type +| 15 = @struct_type +| 17 = @class_type +| 19 = @interface_type +| 20 = @delegate_type +| 21 = @null_type +| 22 = @type_parameter +| 23 = @pointer_type +| 24 = @nullable_type +| 25 = @array_type +| 26 = @void_type +| 27 = @int_ptr_type +| 28 = @uint_ptr_type +| 29 = @dynamic_type +| 30 = @arglist_type +| 31 = @unknown_type +| 32 = @tuple_type +| 33 = @function_pointer_type +| 34 = @inline_array_type +| 35 = @extension_type + ; + +@simple_type = @bool_type | @char_type | @integral_type | @floating_point_type | @decimal_type; +@integral_type = @signed_integral_type | @unsigned_integral_type; +@signed_integral_type = @sbyte_type | @short_type | @int_type | @long_type; +@unsigned_integral_type = @byte_type | @ushort_type | @uint_type | @ulong_type; +@floating_point_type = @float_type | @double_type; +@value_type = @simple_type | @enum_type | @struct_type | @nullable_type | @int_ptr_type + | @uint_ptr_type | @tuple_type | @void_type | @inline_array_type; +@ref_type = @class_type | @interface_type | @array_type | @delegate_type | @null_type + | @dynamic_type | @extension_type; +@value_or_ref_type = @value_type | @ref_type; + +typerefs( + unique int id: @typeref, + string name: string ref); + +typeref_type( + int id: @typeref ref, + unique int typeId: @type ref); + +@type_or_ref = @type | @typeref; + +array_element_type( + unique int array: @array_type ref, + int dimension: int ref, + int rank: int ref, + int element: @type_or_ref ref); + +nullable_underlying_type( + unique int nullable: @nullable_type ref, + int underlying: @type_or_ref ref); + +pointer_referent_type( + unique int pointer: @pointer_type ref, + int referent: @type_or_ref ref); + +enum_underlying_type( + unique int enum_id: @enum_type ref, + int underlying_type_id: @type_or_ref ref); + +delegate_return_type( + unique int delegate_id: @delegate_type ref, + int return_type_id: @type_or_ref ref); + +function_pointer_return_type( + unique int function_pointer_id: @function_pointer_type ref, + int return_type_id: @type_or_ref ref); + +extension_receiver_type( + unique int extension: @extension_type ref, + int receiver_type_id: @type_or_ref ref); + +extend( + int sub: @type ref, + int super: @type_or_ref ref); + +anonymous_types( + unique int id: @type ref); + +@interface_or_ref = @interface_type | @typeref; + +implement( + int sub: @type ref, + int super: @type_or_ref ref); + +type_location( + int id: @type ref, + int loc: @location ref); + +tuple_underlying_type( + unique int tuple: @tuple_type ref, + int struct: @type_or_ref ref); + +#keyset[tuple, index] +tuple_element( + int tuple: @tuple_type ref, + int index: int ref, + unique int field: @field ref); + +attributes( + unique int id: @attribute, + int kind: int ref, + int type_id: @type_or_ref ref, + int target: @attributable ref); + +case @attribute.kind of + 0 = @attribute_default +| 1 = @attribute_return +| 2 = @attribute_assembly +| 3 = @attribute_module +; + +attribute_location( + int id: @attribute ref, + int loc: @location ref); + +@type_mention_parent = @element | @type_mention; + +type_mention( + unique int id: @type_mention, + int type_id: @type_or_ref ref, + int parent: @type_mention_parent ref); + +type_mention_location( + unique int id: @type_mention ref, + int loc: @location ref); + +@has_type_annotation = @assignable | @type_parameter | @callable | @expr | @delegate_type | @generic | @function_pointer_type; + +/** + * A direct annotation on an entity, for example `string? x;`. + * + * Annotations: + * 2 = reftype is not annotated "!" + * 3 = reftype is annotated "?" + * 4 = readonly ref type / in parameter + * 5 = ref type parameter, return or local variable + * 6 = out parameter + * + * Note that the annotation depends on the element it annotates. + * @assignable: The annotation is on the type of the assignable, for example the variable type. + * @type_parameter: The annotation is on the reftype constraint + * @callable: The annotation is on the return type + * @array_type: The annotation is on the element type + */ +type_annotation(int id: @has_type_annotation ref, int annotation: int ref); + +nullability(unique int nullability: @nullability, int kind: int ref); + +case @nullability.kind of + 0 = @oblivious +| 1 = @not_annotated +| 2 = @annotated +; + +#keyset[parent, index] +nullability_parent(int nullability: @nullability ref, int index: int ref, int parent: @nullability ref) + +type_nullability(int id: @has_type_annotation ref, int nullability: @nullability ref); + +/** + * The nullable flow state of an expression, as determined by Roslyn. + * 0 = none (default, not populated) + * 1 = not null + * 2 = maybe null + */ +expr_flowstate(unique int id: @expr ref, int state: int ref); + +/** GENERICS **/ + +@generic = @type | @method | @local_function; + +type_parameters( + unique int id: @type_parameter ref, + int index: int ref, + int generic_id: @generic ref, + int variance: int ref /* none = 0, out = 1, in = 2 */); + +#keyset[constructed_id, index] +type_arguments( + int id: @type_or_ref ref, + int index: int ref, + int constructed_id: @generic_or_ref ref); + +@generic_or_ref = @generic | @typeref; + +constructed_generic( + unique int constructed: @generic ref, + int generic: @generic_or_ref ref); + +type_parameter_constraints( + unique int id: @type_parameter_constraints, + int param_id: @type_parameter ref); + +type_parameter_constraints_location( + int id: @type_parameter_constraints ref, + int loc: @location ref); + +general_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int kind: int ref /* class = 1, struct = 2, new = 3 */); + +specific_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref); + +specific_type_parameter_nullability( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref, + int nullability: @nullability ref); + +/** FUNCTION POINTERS */ + +function_pointer_calling_conventions( + int id: @function_pointer_type ref, + int kind: int ref); + +#keyset[id, index] +has_unmanaged_calling_conventions( + int id: @function_pointer_type ref, + int index: int ref, + int conv_id: @type_or_ref ref); + +/** MODIFIERS */ + +@modifiable = @modifiable_direct | @event_accessor; + +@modifiable_direct = @member | @accessor | @local_function | @anonymous_function_expr; + +modifiers( + unique int id: @modifier, + string name: string ref); + +has_modifiers( + int id: @modifiable_direct ref, + int mod_id: @modifier ref); + +/** MEMBERS **/ + +@member = @method | @constructor | @destructor | @field | @property | @event | @operator | @indexer | @type; + +@named_exprorstmt = @goto_stmt | @labeled_stmt | @expr; + +@virtualizable = @method | @property | @indexer | @event | @operator; + +exprorstmt_name( + unique int parent_id: @named_exprorstmt ref, + string name: string ref); + +nested_types( + unique int id: @type ref, + int declaring_type_id: @type ref, + int unbound_id: @type ref); + +properties( + unique int id: @property, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @property ref); + +property_location( + int id: @property ref, + int loc: @location ref); + +indexers( + unique int id: @indexer, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @indexer ref); + +indexer_location( + int id: @indexer ref, + int loc: @location ref); + +accessors( + unique int id: @accessor, + int kind: int ref, + string name: string ref, + int declaring_member_id: @member ref, + int unbound_id: @accessor ref); + +case @accessor.kind of + 1 = @getter +| 2 = @setter + ; + +init_only_accessors( + unique int id: @accessor ref); + +accessor_location( + int id: @accessor ref, + int loc: @location ref); + +events( + unique int id: @event, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @event ref); + +event_location( + int id: @event ref, + int loc: @location ref); + +event_accessors( + unique int id: @event_accessor, + int kind: int ref, + string name: string ref, + int declaring_event_id: @event ref, + int unbound_id: @event_accessor ref); + +case @event_accessor.kind of + 1 = @add_event_accessor +| 2 = @remove_event_accessor + ; + +event_accessor_location( + int id: @event_accessor ref, + int loc: @location ref); + +operators( + unique int id: @operator, + string name: string ref, + string symbol: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @operator ref); + +operator_location( + int id: @operator ref, + int loc: @location ref); + +constant_value( + int id: @variable ref, + string value: string ref); + +/** CALLABLES **/ + +@callable = @method | @constructor | @destructor | @operator | @callable_accessor | @anonymous_function_expr | @local_function; + +@callable_accessor = @accessor | @event_accessor; + +methods( + unique int id: @method, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @method ref); + +method_location( + int id: @method ref, + int loc: @location ref); + +constructors( + unique int id: @constructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @constructor ref); + +constructor_location( + int id: @constructor ref, + int loc: @location ref); + +destructors( + unique int id: @destructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @destructor ref); + +destructor_location( + int id: @destructor ref, + int loc: @location ref); + +overrides( + int id: @callable ref, + int base_id: @callable ref); + +explicitly_implements( + int id: @member ref, + int interface_id: @interface_or_ref ref); + +local_functions( + unique int id: @local_function, + string name: string ref, + int return_type: @type ref, + int unbound_id: @local_function ref); + +local_function_stmts( + unique int fn: @local_function_stmt ref, + int stmt: @local_function ref); + +/** VARIABLES **/ + +@variable = @local_scope_variable | @field; + +@local_scope_variable = @local_variable | @parameter; + +fields( + unique int id: @field, + int kind: int ref, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @field ref); + +case @field.kind of + 1 = @addressable_field +| 2 = @constant + ; + +field_location( + int id: @field ref, + int loc: @location ref); + +localvars( + unique int id: @local_variable, + int kind: int ref, + string name: string ref, + int implicitly_typed: int ref /* 0 = no, 1 = yes */, + int type_id: @type_or_ref ref, + int parent_id: @local_var_decl_expr ref); + +case @local_variable.kind of + 1 = @addressable_local_variable +| 2 = @local_constant +| 3 = @local_variable_ref + ; + +localvar_location( + unique int id: @local_variable ref, + int loc: @location ref); + +@parameterizable = @callable | @delegate_type | @indexer | @function_pointer_type | @extension_type; + +#keyset[name, parent_id] +#keyset[index, parent_id] +params( + unique int id: @parameter, + string name: string ref, + int type_id: @type_or_ref ref, + int index: int ref, + int mode: int ref, /* value = 0, ref = 1, out = 2, params/array = 3, this = 4, in = 5, ref readonly = 6 */ + int parent_id: @parameterizable ref, + int unbound_id: @parameter ref); + +param_location( + int id: @parameter ref, + int loc: @location ref); + +@has_scoped_annotation = @local_scope_variable + +scoped_annotation( + int id: @has_scoped_annotation ref, + int kind: int ref // scoped ref = 1, scoped value = 2 + ); + +/** STATEMENTS **/ + +@exprorstmt_parent = @control_flow_element | @top_level_exprorstmt_parent; + +statements( + unique int id: @stmt, + int kind: int ref); + +#keyset[index, parent] +stmt_parent( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_stmt_parent = @callable; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +stmt_parent_top_level( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @top_level_stmt_parent ref); + +case @stmt.kind of + 1 = @block_stmt +| 2 = @expr_stmt +| 3 = @if_stmt +| 4 = @switch_stmt +| 5 = @while_stmt +| 6 = @do_stmt +| 7 = @for_stmt +| 8 = @foreach_stmt +| 9 = @break_stmt +| 10 = @continue_stmt +| 11 = @goto_stmt +| 12 = @goto_case_stmt +| 13 = @goto_default_stmt +| 14 = @throw_stmt +| 15 = @return_stmt +| 16 = @yield_stmt +| 17 = @try_stmt +| 18 = @checked_stmt +| 19 = @unchecked_stmt +| 20 = @lock_stmt +| 21 = @using_block_stmt +| 22 = @var_decl_stmt +| 23 = @const_decl_stmt +| 24 = @empty_stmt +| 25 = @unsafe_stmt +| 26 = @fixed_stmt +| 27 = @label_stmt +| 28 = @catch +| 29 = @case_stmt +| 30 = @local_function_stmt +| 31 = @using_decl_stmt + ; + +@using_stmt = @using_block_stmt | @using_decl_stmt; + +@labeled_stmt = @label_stmt | @case; + +@decl_stmt = @var_decl_stmt | @const_decl_stmt | @using_decl_stmt; + +@cond_stmt = @if_stmt | @switch_stmt; + +@loop_stmt = @while_stmt | @do_stmt | @for_stmt | @foreach_stmt; + +@jump_stmt = @break_stmt | @goto_any_stmt | @continue_stmt | @throw_stmt | @return_stmt + | @yield_stmt; + +@goto_any_stmt = @goto_default_stmt | @goto_case_stmt | @goto_stmt; + + +stmt_location( + unique int id: @stmt ref, + int loc: @location ref); + +catch_type( + unique int catch_id: @catch ref, + int type_id: @type_or_ref ref, + int kind: int ref /* explicit = 1, implicit = 2 */); + +foreach_stmt_info( + unique int id: @foreach_stmt ref, + int kind: int ref /* non-async = 1, async = 2 */); + +@foreach_symbol = @method | @property | @type_or_ref; + +#keyset[id, kind] +foreach_stmt_desugar( + int id: @foreach_stmt ref, + int symbol: @foreach_symbol ref, + int kind: int ref /* GetEnumeratorMethod = 1, CurrentProperty = 2, MoveNextMethod = 3, DisposeMethod = 4, ElementType = 5 */); + +/** EXPRESSIONS **/ + +expressions( + unique int id: @expr, + int kind: int ref, + int type_id: @type_or_ref ref); + +#keyset[index, parent] +expr_parent( + unique int expr: @expr ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_expr_parent = @attribute | @field | @property | @indexer | @parameter | @directive_if | @directive_elif; + +@top_level_exprorstmt_parent = @top_level_expr_parent | @top_level_stmt_parent; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +expr_parent_top_level( + unique int expr: @expr ref, + int index: int ref, + int parent: @top_level_exprorstmt_parent ref); + +case @expr.kind of +/* literal */ + 1 = @bool_literal_expr +| 2 = @char_literal_expr +| 3 = @decimal_literal_expr +| 4 = @int_literal_expr +| 5 = @long_literal_expr +| 6 = @uint_literal_expr +| 7 = @ulong_literal_expr +| 8 = @float_literal_expr +| 9 = @double_literal_expr +| 10 = @utf16_string_literal_expr +| 11 = @null_literal_expr +/* primary & unary */ +| 12 = @this_access_expr +| 13 = @base_access_expr +| 14 = @local_variable_access_expr +| 15 = @parameter_access_expr +| 16 = @field_access_expr +| 17 = @property_access_expr +| 18 = @method_access_expr +| 19 = @event_access_expr +| 20 = @indexer_access_expr +| 21 = @array_access_expr +| 22 = @type_access_expr +| 23 = @typeof_expr +| 24 = @method_invocation_expr +| 25 = @delegate_invocation_expr +| 26 = @operator_invocation_expr +| 27 = @cast_expr +| 28 = @object_creation_expr +| 29 = @explicit_delegate_creation_expr +| 30 = @implicit_delegate_creation_expr +| 31 = @array_creation_expr +| 32 = @default_expr +| 33 = @plus_expr +| 34 = @minus_expr +| 35 = @bit_not_expr +| 36 = @log_not_expr +| 37 = @post_incr_expr +| 38 = @post_decr_expr +| 39 = @pre_incr_expr +| 40 = @pre_decr_expr +/* multiplicative */ +| 41 = @mul_expr +| 42 = @div_expr +| 43 = @rem_expr +/* additive */ +| 44 = @add_expr +| 45 = @sub_expr +/* shift */ +| 46 = @lshift_expr +| 47 = @rshift_expr +/* relational */ +| 48 = @lt_expr +| 49 = @gt_expr +| 50 = @le_expr +| 51 = @ge_expr +/* equality */ +| 52 = @eq_expr +| 53 = @ne_expr +/* logical */ +| 54 = @bit_and_expr +| 55 = @bit_xor_expr +| 56 = @bit_or_expr +| 57 = @log_and_expr +| 58 = @log_or_expr +/* type testing */ +| 59 = @is_expr +| 60 = @as_expr +/* null coalescing */ +| 61 = @null_coalescing_expr +/* conditional */ +| 62 = @conditional_expr +/* assignment */ +| 63 = @simple_assign_expr +| 64 = @assign_add_expr +| 65 = @assign_sub_expr +| 66 = @assign_mul_expr +| 67 = @assign_div_expr +| 68 = @assign_rem_expr +| 69 = @assign_and_expr +| 70 = @assign_xor_expr +| 71 = @assign_or_expr +| 72 = @assign_lshift_expr +| 73 = @assign_rshift_expr +/* more */ +| 74 = @object_init_expr +| 75 = @collection_init_expr +| 76 = @array_init_expr +| 77 = @checked_expr +| 78 = @unchecked_expr +| 79 = @constructor_init_expr +| 80 = @add_event_expr +| 81 = @remove_event_expr +| 82 = @par_expr +| 83 = @local_var_decl_expr +| 84 = @lambda_expr +| 85 = @anonymous_method_expr +| 86 = @namespace_expr +/* dynamic */ +| 92 = @dynamic_element_access_expr +| 93 = @dynamic_member_access_expr +/* unsafe */ +| 100 = @pointer_indirection_expr +| 101 = @address_of_expr +| 102 = @sizeof_expr +/* async */ +| 103 = @await_expr +/* C# 6.0 */ +| 104 = @nameof_expr +| 105 = @interpolated_string_expr +| 106 = @unknown_expr +/* C# 7.0 */ +| 107 = @throw_expr +| 108 = @tuple_expr +| 109 = @local_function_invocation_expr +| 110 = @ref_expr +| 111 = @discard_expr +/* C# 8.0 */ +| 112 = @range_expr +| 113 = @index_expr +| 114 = @switch_expr +| 115 = @recursive_pattern_expr +| 116 = @property_pattern_expr +| 117 = @positional_pattern_expr +| 118 = @switch_case_expr +| 119 = @assign_coalesce_expr +| 120 = @suppress_nullable_warning_expr +| 121 = @namespace_access_expr +/* C# 9.0 */ +| 122 = @lt_pattern_expr +| 123 = @gt_pattern_expr +| 124 = @le_pattern_expr +| 125 = @ge_pattern_expr +| 126 = @not_pattern_expr +| 127 = @and_pattern_expr +| 128 = @or_pattern_expr +| 129 = @function_pointer_invocation_expr +| 130 = @with_expr +/* C# 11.0 */ +| 131 = @list_pattern_expr +| 132 = @slice_pattern_expr +| 133 = @urshift_expr +| 134 = @assign_urshift_expr +| 135 = @utf8_string_literal_expr +/* C# 12.0 */ +| 136 = @collection_expr +| 137 = @spread_element_expr +| 138 = @interpolated_string_insert_expr +/* Preprocessor */ +| 999 = @define_symbol_expr +; + +@switch = @switch_stmt | @switch_expr; +@case = @case_stmt | @switch_case_expr; +@pattern_match = @case | @is_expr; +@unary_pattern_expr = @not_pattern_expr; +@relational_pattern_expr = @gt_pattern_expr | @lt_pattern_expr | @ge_pattern_expr | @le_pattern_expr; +@binary_pattern_expr = @and_pattern_expr | @or_pattern_expr; + +@integer_literal_expr = @int_literal_expr | @long_literal_expr | @uint_literal_expr | @ulong_literal_expr; +@real_literal_expr = @float_literal_expr | @double_literal_expr | @decimal_literal_expr; +@string_literal_expr = @utf16_string_literal_expr | @utf8_string_literal_expr; +@literal_expr = @bool_literal_expr | @char_literal_expr | @integer_literal_expr | @real_literal_expr + | @string_literal_expr | @null_literal_expr; + +@assign_expr = @simple_assign_expr | @assign_op_expr | @local_var_decl_expr; +@assign_op_call_expr = @assign_arith_expr | @assign_bitwise_expr +@assign_op_expr = @assign_op_call_expr | @assign_event_expr | @assign_coalesce_expr; +@assign_event_expr = @add_event_expr | @remove_event_expr; + +@add_operation = @add_expr | @assign_add_expr; +@sub_operation = @sub_expr | @assign_sub_expr; +@mul_operation = @mul_expr | @assign_mul_expr; +@div_operation = @div_expr | @assign_div_expr; +@rem_operation = @rem_expr | @assign_rem_expr; +@and_operation = @bit_and_expr | @assign_and_expr; +@xor_operation = @bit_xor_expr | @assign_xor_expr; +@or_operation = @bit_or_expr | @assign_or_expr; +@lshift_operation = @lshift_expr | @assign_lshift_expr; +@rshift_operation = @rshift_expr | @assign_rshift_expr; +@urshift_operation = @urshift_expr | @assign_urshift_expr; +@null_coalescing_operation = @null_coalescing_expr | @assign_coalesce_expr; + +@assign_arith_expr = @assign_add_expr | @assign_sub_expr | @assign_mul_expr | @assign_div_expr + | @assign_rem_expr +@assign_bitwise_expr = @assign_and_expr | @assign_or_expr | @assign_xor_expr + | @assign_lshift_expr | @assign_rshift_expr | @assign_urshift_expr; + +@member_access_expr = @field_access_expr | @property_access_expr | @indexer_access_expr | @event_access_expr + | @method_access_expr | @type_access_expr | @dynamic_member_access_expr; +@access_expr = @member_access_expr | @this_access_expr | @base_access_expr | @assignable_access_expr | @namespace_access_expr; +@element_access_expr = @indexer_access_expr | @array_access_expr | @dynamic_element_access_expr; + +@local_variable_access = @local_variable_access_expr | @local_var_decl_expr; +@local_scope_variable_access_expr = @parameter_access_expr | @local_variable_access; +@variable_access_expr = @local_scope_variable_access_expr | @field_access_expr; + +@assignable_access_expr = @variable_access_expr | @property_access_expr | @element_access_expr + | @event_access_expr | @dynamic_member_access_expr; + +@objectorcollection_init_expr = @object_init_expr | @collection_init_expr; + +@delegate_creation_expr = @explicit_delegate_creation_expr | @implicit_delegate_creation_expr; + +@bin_arith_op_expr = @mul_expr | @div_expr | @rem_expr | @add_expr | @sub_expr; +@incr_op_expr = @pre_incr_expr | @post_incr_expr; +@decr_op_expr = @pre_decr_expr | @post_decr_expr; +@mut_op_expr = @incr_op_expr | @decr_op_expr; +@un_arith_op_expr = @plus_expr | @minus_expr | @mut_op_expr; +@arith_op_expr = @bin_arith_op_expr | @un_arith_op_expr; + +@ternary_log_op_expr = @conditional_expr; +@bin_log_op_expr = @log_and_expr | @log_or_expr | @null_coalescing_expr; +@un_log_op_expr = @log_not_expr; +@log_expr = @un_log_op_expr | @bin_log_op_expr | @ternary_log_op_expr; + +@bin_bit_op_expr = @bit_and_expr | @bit_or_expr | @bit_xor_expr | @lshift_expr + | @rshift_expr | @urshift_expr; +@un_bit_op_expr = @bit_not_expr; +@bit_expr = @un_bit_op_expr | @bin_bit_op_expr; + +@equality_op_expr = @eq_expr | @ne_expr; +@rel_op_expr = @gt_expr | @lt_expr| @ge_expr | @le_expr; +@comp_expr = @equality_op_expr | @rel_op_expr; + +@op_expr = @un_op | @bin_op | @ternary_op; + +@ternary_op = @ternary_log_op_expr; +@bin_op = @assign_expr | @bin_arith_op_expr | @bin_log_op_expr | @bin_bit_op_expr | @comp_expr; +@un_op = @un_arith_op_expr | @un_log_op_expr | @un_bit_op_expr | @sizeof_expr + | @pointer_indirection_expr | @address_of_expr; + +@anonymous_function_expr = @lambda_expr | @anonymous_method_expr; + +@op_invoke_expr = @operator_invocation_expr | @assign_op_call_expr +@call = @method_invocation_expr | @constructor_init_expr | @op_invoke_expr + | @delegate_invocation_expr | @object_creation_expr | @call_access_expr + | @local_function_invocation_expr | @function_pointer_invocation_expr; + +@call_access_expr = @property_access_expr | @event_access_expr | @indexer_access_expr; + +@late_bindable_expr = @dynamic_element_access_expr | @dynamic_member_access_expr + | @object_creation_expr | @method_invocation_expr | @op_invoke_expr; + +@throw_element = @throw_expr | @throw_stmt; + +@implicitly_typeable_object_creation_expr = @object_creation_expr | @explicit_delegate_creation_expr; + +implicitly_typed_array_creation( + unique int id: @array_creation_expr ref); + +explicitly_sized_array_creation( + unique int id: @array_creation_expr ref); + +stackalloc_array_creation( + unique int id: @array_creation_expr ref); + +implicitly_typed_object_creation( + unique int id: @implicitly_typeable_object_creation_expr ref); + +mutator_invocation_mode( + unique int id: @operator_invocation_expr ref, + int mode: int ref /* prefix = 1, postfix = 2*/); + +expr_value( + unique int id: @expr ref, + string value: string ref); + +expr_call( + unique int caller_id: @expr ref, + int target_id: @callable ref); + +expr_access( + unique int accesser_id: @access_expr ref, + int target_id: @accessible ref); + +@accessible = @method | @assignable | @local_function | @namespace; + +expr_location( + unique int id: @expr ref, + int loc: @location ref); + +dynamic_member_name( + unique int id: @late_bindable_expr ref, + string name: string ref); + +@qualifiable_expr = @member_access_expr + | @method_invocation_expr + | @element_access_expr; + +conditional_access( + unique int id: @qualifiable_expr ref); + +expr_argument( + unique int id: @expr ref, + int mode: int ref); + /* mode is the same as params: value = 0, ref = 1, out = 2 */ + +expr_argument_name( + unique int id: @expr ref, + string name: string ref); + +lambda_expr_return_type( + unique int id: @lambda_expr ref, + int type_id: @type_or_ref ref); + +/* Compiler generated */ + +compiler_generated(unique int id: @element ref); + +/** CONTROL/DATA FLOW **/ + +@control_flow_element = @stmt | @expr; + +/* XML Files */ + +xmlEncoding ( + unique int id: @file ref, + string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* Comments */ + +commentline( + unique int id: @commentline, + int kind: int ref, + string text: string ref, + string rawtext: string ref); + +case @commentline.kind of + 0 = @singlelinecomment +| 1 = @xmldoccomment +| 2 = @multilinecomment; + +commentline_location( + unique int id: @commentline ref, + int loc: @location ref); + +commentblock( + unique int id : @commentblock); + +commentblock_location( + unique int id: @commentblock ref, + int loc: @location ref); + +commentblock_binding( + int id: @commentblock ref, + int entity: @element ref, + int bindtype: int ref); /* 0: Parent, 1: Best, 2: Before, 3: After */ + +commentblock_child( + int id: @commentblock ref, + int commentline: @commentline ref, + int index: int ref); + +/* ASP.NET */ + +case @asp_element.kind of + 0=@asp_close_tag +| 1=@asp_code +| 2=@asp_comment +| 3=@asp_data_binding +| 4=@asp_directive +| 5=@asp_open_tag +| 6=@asp_quoted_string +| 7=@asp_text +| 8=@asp_xml_directive; + +@asp_attribute = @asp_code | @asp_data_binding | @asp_quoted_string; + +asp_elements( + unique int id: @asp_element, + int kind: int ref, + int loc: @location ref); + +asp_comment_server(unique int comment: @asp_comment ref); +asp_code_inline(unique int code: @asp_code ref); +asp_directive_attribute( + int directive: @asp_directive ref, + int index: int ref, + string name: string ref, + int value: @asp_quoted_string ref); +asp_directive_name( + unique int directive: @asp_directive ref, + string name: string ref); +asp_element_body( + unique int element: @asp_element ref, + string body: string ref); +asp_tag_attribute( + int tag: @asp_open_tag ref, + int index: int ref, + string name: string ref, + int attribute: @asp_attribute ref); +asp_tag_name( + unique int tag: @asp_open_tag ref, + string name: string ref); +asp_tag_isempty(int tag: @asp_open_tag ref); diff --git a/csharp/ql/lib/upgrades/19b8cc3e2dc768d4cbc03d6e3773b709bbebd036/semmlecode.csharp.dbscheme b/csharp/ql/lib/upgrades/19b8cc3e2dc768d4cbc03d6e3773b709bbebd036/semmlecode.csharp.dbscheme new file mode 100644 index 000000000000..ea7ad33252e5 --- /dev/null +++ b/csharp/ql/lib/upgrades/19b8cc3e2dc768d4cbc03d6e3773b709bbebd036/semmlecode.csharp.dbscheme @@ -0,0 +1,1505 @@ +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2021-07-14 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * csc f1.cs f2.cs f3.cs + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + unique int id : @compilation, + string cwd : string ref +); + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | --compiler + * 1 | *path to compiler* + * 2 | f1.cs + * 3 | f2.cs + * 4 | f3.cs + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile.rsp` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.cs + * 1 | f2.cs + * 2 | f3.cs + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The references used by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs /r:ref1.dll /r:ref2.dll /r:ref3.dll + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | ref1.dll + * 1 | ref2.dll + * 2 | ref3.dll + */ +#keyset[id, num] +compilation_referencing_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location ref +); + +extractor_messages( + unique int id: @extractor_message, + int severity: int ref, + string origin : string ref, + string text : string ref, + string entity : string ref, + int location: @location ref, + string stack_trace : string ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +compilation_assembly( + unique int id : @compilation ref, + int assembly: @assembly ref +) + +// Populated by the CSV extractor +externalData( + int id: @externalDataElement, + string path: string ref, + int column: int ref, + string value: string ref); + +sourceLocationPrefix( + string prefix: string ref); + +/* + * Overlay support + */ + +/** + * The CLI will automatically emit the tuple `databaseMetadata("isOverlay", "true")`, + * along with an `overlayChangedFiles` tuple for each new/modified/deleted file, + * when building an overlay database, and these can be used by the discard predicates. + */ +databaseMetadata( + string metadataKey : string ref, + string value : string ref +); + +overlayChangedFiles( + string path : string ref +); + +/* + * C# dbscheme + */ + +/** ELEMENTS **/ + +@element = @declaration | @stmt | @expr | @modifier | @attribute | @namespace_declaration + | @using_directive | @type_parameter_constraints | @externalDataElement + | @xmllocatable | @asp_element | @namespace | @preprocessor_directive; + +@declaration = @callable | @generic | @assignable | @namespace; + +@named_element = @namespace | @declaration; + +@declaration_with_accessors = @property | @indexer | @event; + +@assignable = @variable | @assignable_with_accessors | @event; + +@assignable_with_accessors = @property | @indexer; + +@attributable = @assembly | @field | @parameter | @operator | @method | @constructor + | @destructor | @callable_accessor | @value_or_ref_type | @declaration_with_accessors + | @local_function | @lambda_expr; + +/** LOCATIONS, ASEMMBLIES, MODULES, FILES and FOLDERS **/ + +@location = @location_default | @assembly; + +@locatable = @declaration_with_accessors | @callable_accessor | @declaration_or_directive + | @diagnostic | @extractor_message | @preprocessor_directive | @attribute | @type_mention | @type_parameter_constraints + | @declaration_with_accessors | @callable_accessor | @operator | @method + | @constructor | @destructor | @field | @local_variable | @parameter | @stmt | @expr + | @xmllocatable | @commentline | @commentblock | @asp_element + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +locations_mapped( + unique int id: @location_default ref, + int mapped_to: @location_default ref); + +@sourceline = @file | @callable | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref); + +assemblies( + unique int id: @assembly, + int file: @file ref, + string fullname: string ref, + string name: string ref, + string version: string ref); + +files( + unique int id: @file, + string name: string ref); + +folders( + unique int id: @folder, + string name: string ref); + +@container = @folder | @file ; + +containerparent( + int parent: @container ref, + unique int child: @container ref); + +file_extraction_mode( + unique int file: @file ref, + int mode: int ref + /* 0 = normal, 1 = standalone extractor */ + ); + +/** NAMESPACES **/ + +@type_container = @namespace | @type; + +namespaces( + unique int id: @namespace, + string name: string ref); + +namespace_declarations( + unique int id: @namespace_declaration, + int namespace_id: @namespace ref); + +namespace_declaration_location( + unique int id: @namespace_declaration ref, + int loc: @location ref); + +parent_namespace( + unique int child_id: @type_container ref, + int namespace_id: @namespace ref); + +@declaration_or_directive = @namespace_declaration | @type | @using_directive; + +parent_namespace_declaration( + int child_id: @declaration_or_directive ref, // cannot be unique because of partial classes + int namespace_id: @namespace_declaration ref); + +@using_directive = @using_namespace_directive | @using_static_directive; + +using_global( + unique int id: @using_directive ref +); + +using_namespace_directives( + unique int id: @using_namespace_directive, + int namespace_id: @namespace ref); + +using_static_directives( + unique int id: @using_static_directive, + int type_id: @type_or_ref ref); + +using_directive_location( + unique int id: @using_directive ref, + int loc: @location ref); + +@preprocessor_directive = @pragma_warning | @pragma_checksum | @directive_define | @directive_undefine | @directive_warning + | @directive_error | @directive_nullable | @directive_line | @directive_region | @directive_endregion | @directive_if + | @directive_elif | @directive_else | @directive_endif; + +@conditional_directive = @directive_if | @directive_elif; +@branch_directive = @directive_if | @directive_elif | @directive_else; + +directive_ifs( + unique int id: @directive_if, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref); /* 0: false, 1: true */ + +directive_elifs( + unique int id: @directive_elif, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +directive_elses( + unique int id: @directive_else, + int branchTaken: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +#keyset[id, start] +directive_endifs( + unique int id: @directive_endif, + unique int start: @directive_if ref); + +directive_define_symbols( + unique int id: @define_symbol_expr ref, + string name: string ref); + +directive_regions( + unique int id: @directive_region, + string name: string ref); + +#keyset[id, start] +directive_endregions( + unique int id: @directive_endregion, + unique int start: @directive_region ref); + +directive_lines( + unique int id: @directive_line, + int kind: int ref); /* 0: default, 1: hidden, 2: numeric, 3: span */ + +directive_line_value( + unique int id: @directive_line ref, + int line: int ref); + +directive_line_file( + unique int id: @directive_line ref, + int file: @file ref); + +directive_line_offset( + unique int id: @directive_line ref, + int offset: int ref); + +directive_line_span( + unique int id: @directive_line ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +directive_nullables( + unique int id: @directive_nullable, + int setting: int ref, /* 0: disable, 1: enable, 2: restore */ + int target: int ref); /* 0: none, 1: annotations, 2: warnings */ + +directive_warnings( + unique int id: @directive_warning, + string message: string ref); + +directive_errors( + unique int id: @directive_error, + string message: string ref); + +directive_undefines( + unique int id: @directive_undefine, + string name: string ref); + +directive_defines( + unique int id: @directive_define, + string name: string ref); + +pragma_checksums( + unique int id: @pragma_checksum, + int file: @file ref, + string guid: string ref, + string bytes: string ref); + +pragma_warnings( + unique int id: @pragma_warning, + int kind: int ref /* 0 = disable, 1 = restore */); + +#keyset[id, index] +pragma_warning_error_codes( + int id: @pragma_warning ref, + string errorCode: string ref, + int index: int ref); + +preprocessor_directive_location( + unique int id: @preprocessor_directive ref, + int loc: @location ref); + +preprocessor_directive_compilation( + int id: @preprocessor_directive ref, + int compilation: @compilation ref); + +preprocessor_directive_active( + unique int id: @preprocessor_directive ref, + int active: int ref); /* 0: false, 1: true */ + +/** TYPES **/ + +types( + unique int id: @type, + int kind: int ref, + string name: string ref); + +case @type.kind of + 1 = @bool_type +| 2 = @char_type +| 3 = @decimal_type +| 4 = @sbyte_type +| 5 = @short_type +| 6 = @int_type +| 7 = @long_type +| 8 = @byte_type +| 9 = @ushort_type +| 10 = @uint_type +| 11 = @ulong_type +| 12 = @float_type +| 13 = @double_type +| 14 = @enum_type +| 15 = @struct_type +| 17 = @class_type +| 19 = @interface_type +| 20 = @delegate_type +| 21 = @null_type +| 22 = @type_parameter +| 23 = @pointer_type +| 24 = @nullable_type +| 25 = @array_type +| 26 = @void_type +| 27 = @int_ptr_type +| 28 = @uint_ptr_type +| 29 = @dynamic_type +| 30 = @arglist_type +| 31 = @unknown_type +| 32 = @tuple_type +| 33 = @function_pointer_type +| 34 = @inline_array_type +| 35 = @extension_type + ; + +@simple_type = @bool_type | @char_type | @integral_type | @floating_point_type | @decimal_type; +@integral_type = @signed_integral_type | @unsigned_integral_type; +@signed_integral_type = @sbyte_type | @short_type | @int_type | @long_type; +@unsigned_integral_type = @byte_type | @ushort_type | @uint_type | @ulong_type; +@floating_point_type = @float_type | @double_type; +@value_type = @simple_type | @enum_type | @struct_type | @nullable_type | @int_ptr_type + | @uint_ptr_type | @tuple_type | @void_type | @inline_array_type; +@ref_type = @class_type | @interface_type | @array_type | @delegate_type | @null_type + | @dynamic_type | @extension_type; +@value_or_ref_type = @value_type | @ref_type; + +typerefs( + unique int id: @typeref, + string name: string ref); + +typeref_type( + int id: @typeref ref, + unique int typeId: @type ref); + +@type_or_ref = @type | @typeref; + +array_element_type( + unique int array: @array_type ref, + int dimension: int ref, + int rank: int ref, + int element: @type_or_ref ref); + +nullable_underlying_type( + unique int nullable: @nullable_type ref, + int underlying: @type_or_ref ref); + +pointer_referent_type( + unique int pointer: @pointer_type ref, + int referent: @type_or_ref ref); + +enum_underlying_type( + unique int enum_id: @enum_type ref, + int underlying_type_id: @type_or_ref ref); + +delegate_return_type( + unique int delegate_id: @delegate_type ref, + int return_type_id: @type_or_ref ref); + +function_pointer_return_type( + unique int function_pointer_id: @function_pointer_type ref, + int return_type_id: @type_or_ref ref); + +extension_receiver_type( + unique int extension: @extension_type ref, + int receiver_type_id: @type_or_ref ref); + +extend( + int sub: @type ref, + int super: @type_or_ref ref); + +anonymous_types( + unique int id: @type ref); + +@interface_or_ref = @interface_type | @typeref; + +implement( + int sub: @type ref, + int super: @type_or_ref ref); + +type_location( + int id: @type ref, + int loc: @location ref); + +tuple_underlying_type( + unique int tuple: @tuple_type ref, + int struct: @type_or_ref ref); + +#keyset[tuple, index] +tuple_element( + int tuple: @tuple_type ref, + int index: int ref, + unique int field: @field ref); + +attributes( + unique int id: @attribute, + int kind: int ref, + int type_id: @type_or_ref ref, + int target: @attributable ref); + +case @attribute.kind of + 0 = @attribute_default +| 1 = @attribute_return +| 2 = @attribute_assembly +| 3 = @attribute_module +; + +attribute_location( + int id: @attribute ref, + int loc: @location ref); + +@type_mention_parent = @element | @type_mention; + +type_mention( + unique int id: @type_mention, + int type_id: @type_or_ref ref, + int parent: @type_mention_parent ref); + +type_mention_location( + unique int id: @type_mention ref, + int loc: @location ref); + +@has_type_annotation = @assignable | @type_parameter | @callable | @expr | @delegate_type | @generic | @function_pointer_type; + +/** + * A direct annotation on an entity, for example `string? x;`. + * + * Annotations: + * 2 = reftype is not annotated "!" + * 3 = reftype is annotated "?" + * 4 = readonly ref type / in parameter + * 5 = ref type parameter, return or local variable + * 6 = out parameter + * + * Note that the annotation depends on the element it annotates. + * @assignable: The annotation is on the type of the assignable, for example the variable type. + * @type_parameter: The annotation is on the reftype constraint + * @callable: The annotation is on the return type + * @array_type: The annotation is on the element type + */ +type_annotation(int id: @has_type_annotation ref, int annotation: int ref); + +nullability(unique int nullability: @nullability, int kind: int ref); + +case @nullability.kind of + 0 = @oblivious +| 1 = @not_annotated +| 2 = @annotated +; + +#keyset[parent, index] +nullability_parent(int nullability: @nullability ref, int index: int ref, int parent: @nullability ref) + +type_nullability(int id: @has_type_annotation ref, int nullability: @nullability ref); + +/** + * The nullable flow state of an expression, as determined by Roslyn. + * 0 = none (default, not populated) + * 1 = not null + * 2 = maybe null + */ +expr_flowstate(unique int id: @expr ref, int state: int ref); + +/** GENERICS **/ + +@generic = @type | @method | @local_function; + +type_parameters( + unique int id: @type_parameter ref, + int index: int ref, + int generic_id: @generic ref, + int variance: int ref /* none = 0, out = 1, in = 2 */); + +#keyset[constructed_id, index] +type_arguments( + int id: @type_or_ref ref, + int index: int ref, + int constructed_id: @generic_or_ref ref); + +@generic_or_ref = @generic | @typeref; + +constructed_generic( + unique int constructed: @generic ref, + int generic: @generic_or_ref ref); + +type_parameter_constraints( + unique int id: @type_parameter_constraints, + int param_id: @type_parameter ref); + +type_parameter_constraints_location( + int id: @type_parameter_constraints ref, + int loc: @location ref); + +general_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int kind: int ref /* class = 1, struct = 2, new = 3 */); + +specific_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref); + +specific_type_parameter_nullability( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref, + int nullability: @nullability ref); + +/** FUNCTION POINTERS */ + +function_pointer_calling_conventions( + int id: @function_pointer_type ref, + int kind: int ref); + +#keyset[id, index] +has_unmanaged_calling_conventions( + int id: @function_pointer_type ref, + int index: int ref, + int conv_id: @type_or_ref ref); + +/** MODIFIERS */ + +@modifiable = @modifiable_direct | @event_accessor; + +@modifiable_direct = @member | @accessor | @local_function | @anonymous_function_expr; + +modifiers( + unique int id: @modifier, + string name: string ref); + +has_modifiers( + int id: @modifiable_direct ref, + int mod_id: @modifier ref); + +/** MEMBERS **/ + +@member = @method | @constructor | @destructor | @field | @property | @event | @operator | @indexer | @type; + +@named_exprorstmt = @goto_stmt | @labeled_stmt | @expr; + +@virtualizable = @method | @property | @indexer | @event | @operator; + +exprorstmt_name( + unique int parent_id: @named_exprorstmt ref, + string name: string ref); + +nested_types( + unique int id: @type ref, + int declaring_type_id: @type ref, + int unbound_id: @type ref); + +properties( + unique int id: @property, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @property ref); + +property_location( + int id: @property ref, + int loc: @location ref); + +indexers( + unique int id: @indexer, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @indexer ref); + +indexer_location( + int id: @indexer ref, + int loc: @location ref); + +accessors( + unique int id: @accessor, + int kind: int ref, + string name: string ref, + int declaring_member_id: @member ref, + int unbound_id: @accessor ref); + +case @accessor.kind of + 1 = @getter +| 2 = @setter + ; + +init_only_accessors( + unique int id: @accessor ref); + +accessor_location( + int id: @accessor ref, + int loc: @location ref); + +events( + unique int id: @event, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @event ref); + +event_location( + int id: @event ref, + int loc: @location ref); + +event_accessors( + unique int id: @event_accessor, + int kind: int ref, + string name: string ref, + int declaring_event_id: @event ref, + int unbound_id: @event_accessor ref); + +case @event_accessor.kind of + 1 = @add_event_accessor +| 2 = @remove_event_accessor + ; + +event_accessor_location( + int id: @event_accessor ref, + int loc: @location ref); + +operators( + unique int id: @operator, + string name: string ref, + string symbol: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @operator ref); + +operator_location( + int id: @operator ref, + int loc: @location ref); + +constant_value( + int id: @variable ref, + string value: string ref); + +/** CALLABLES **/ + +@callable = @method | @constructor | @destructor | @operator | @callable_accessor | @anonymous_function_expr | @local_function; + +@callable_accessor = @accessor | @event_accessor; + +methods( + unique int id: @method, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @method ref); + +method_location( + int id: @method ref, + int loc: @location ref); + +constructors( + unique int id: @constructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @constructor ref); + +constructor_location( + int id: @constructor ref, + int loc: @location ref); + +destructors( + unique int id: @destructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @destructor ref); + +destructor_location( + int id: @destructor ref, + int loc: @location ref); + +overrides( + int id: @callable ref, + int base_id: @callable ref); + +explicitly_implements( + int id: @member ref, + int interface_id: @interface_or_ref ref); + +local_functions( + unique int id: @local_function, + string name: string ref, + int return_type: @type ref, + int unbound_id: @local_function ref); + +local_function_stmts( + unique int fn: @local_function_stmt ref, + int stmt: @local_function ref); + +/** VARIABLES **/ + +@variable = @local_scope_variable | @field; + +@local_scope_variable = @local_variable | @parameter; + +fields( + unique int id: @field, + int kind: int ref, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @field ref); + +case @field.kind of + 1 = @addressable_field +| 2 = @constant + ; + +field_location( + int id: @field ref, + int loc: @location ref); + +localvars( + unique int id: @local_variable, + int kind: int ref, + string name: string ref, + int implicitly_typed: int ref /* 0 = no, 1 = yes */, + int type_id: @type_or_ref ref, + int parent_id: @local_var_decl_expr ref); + +case @local_variable.kind of + 1 = @addressable_local_variable +| 2 = @local_constant +| 3 = @local_variable_ref + ; + +localvar_location( + unique int id: @local_variable ref, + int loc: @location ref); + +@parameterizable = @callable | @delegate_type | @indexer | @function_pointer_type | @extension_type; + +#keyset[name, parent_id] +#keyset[index, parent_id] +params( + unique int id: @parameter, + string name: string ref, + int type_id: @type_or_ref ref, + int index: int ref, + int mode: int ref, /* value = 0, ref = 1, out = 2, params/array = 3, this = 4, in = 5, ref readonly = 6 */ + int parent_id: @parameterizable ref, + int unbound_id: @parameter ref); + +param_location( + int id: @parameter ref, + int loc: @location ref); + +@has_scoped_annotation = @local_scope_variable + +scoped_annotation( + int id: @has_scoped_annotation ref, + int kind: int ref // scoped ref = 1, scoped value = 2 + ); + +/** STATEMENTS **/ + +@exprorstmt_parent = @control_flow_element | @top_level_exprorstmt_parent; + +statements( + unique int id: @stmt, + int kind: int ref); + +#keyset[index, parent] +stmt_parent( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_stmt_parent = @callable; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +stmt_parent_top_level( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @top_level_stmt_parent ref); + +case @stmt.kind of + 1 = @block_stmt +| 2 = @expr_stmt +| 3 = @if_stmt +| 4 = @switch_stmt +| 5 = @while_stmt +| 6 = @do_stmt +| 7 = @for_stmt +| 8 = @foreach_stmt +| 9 = @break_stmt +| 10 = @continue_stmt +| 11 = @goto_stmt +| 12 = @goto_case_stmt +| 13 = @goto_default_stmt +| 14 = @throw_stmt +| 15 = @return_stmt +| 16 = @yield_stmt +| 17 = @try_stmt +| 18 = @checked_stmt +| 19 = @unchecked_stmt +| 20 = @lock_stmt +| 21 = @using_block_stmt +| 22 = @var_decl_stmt +| 23 = @const_decl_stmt +| 24 = @empty_stmt +| 25 = @unsafe_stmt +| 26 = @fixed_stmt +| 27 = @label_stmt +| 28 = @catch +| 29 = @case_stmt +| 30 = @local_function_stmt +| 31 = @using_decl_stmt + ; + +@using_stmt = @using_block_stmt | @using_decl_stmt; + +@labeled_stmt = @label_stmt | @case; + +@decl_stmt = @var_decl_stmt | @const_decl_stmt | @using_decl_stmt; + +@cond_stmt = @if_stmt | @switch_stmt; + +@loop_stmt = @while_stmt | @do_stmt | @for_stmt | @foreach_stmt; + +@jump_stmt = @break_stmt | @goto_any_stmt | @continue_stmt | @throw_stmt | @return_stmt + | @yield_stmt; + +@goto_any_stmt = @goto_default_stmt | @goto_case_stmt | @goto_stmt; + + +stmt_location( + unique int id: @stmt ref, + int loc: @location ref); + +catch_type( + unique int catch_id: @catch ref, + int type_id: @type_or_ref ref, + int kind: int ref /* explicit = 1, implicit = 2 */); + +foreach_stmt_info( + unique int id: @foreach_stmt ref, + int kind: int ref /* non-async = 1, async = 2 */); + +@foreach_symbol = @method | @property | @type_or_ref; + +#keyset[id, kind] +foreach_stmt_desugar( + int id: @foreach_stmt ref, + int symbol: @foreach_symbol ref, + int kind: int ref /* GetEnumeratorMethod = 1, CurrentProperty = 2, MoveNextMethod = 3, DisposeMethod = 4, ElementType = 5 */); + +/** EXPRESSIONS **/ + +expressions( + unique int id: @expr, + int kind: int ref, + int type_id: @type_or_ref ref); + +#keyset[index, parent] +expr_parent( + unique int expr: @expr ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_expr_parent = @attribute | @field | @property | @indexer | @parameter | @directive_if | @directive_elif; + +@top_level_exprorstmt_parent = @top_level_expr_parent | @top_level_stmt_parent; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +expr_parent_top_level( + unique int expr: @expr ref, + int index: int ref, + int parent: @top_level_exprorstmt_parent ref); + +case @expr.kind of +/* literal */ + 1 = @bool_literal_expr +| 2 = @char_literal_expr +| 3 = @decimal_literal_expr +| 4 = @int_literal_expr +| 5 = @long_literal_expr +| 6 = @uint_literal_expr +| 7 = @ulong_literal_expr +| 8 = @float_literal_expr +| 9 = @double_literal_expr +| 10 = @utf16_string_literal_expr +| 11 = @null_literal_expr +/* primary & unary */ +| 12 = @this_access_expr +| 13 = @base_access_expr +| 14 = @local_variable_access_expr +| 15 = @parameter_access_expr +| 16 = @field_access_expr +| 17 = @property_access_expr +| 18 = @method_access_expr +| 19 = @event_access_expr +| 20 = @indexer_access_expr +| 21 = @array_access_expr +| 22 = @type_access_expr +| 23 = @typeof_expr +| 24 = @method_invocation_expr +| 25 = @delegate_invocation_expr +| 26 = @operator_invocation_expr +| 27 = @cast_expr +| 28 = @object_creation_expr +| 29 = @explicit_delegate_creation_expr +| 30 = @implicit_delegate_creation_expr +| 31 = @array_creation_expr +| 32 = @default_expr +| 33 = @plus_expr +| 34 = @minus_expr +| 35 = @bit_not_expr +| 36 = @log_not_expr +| 37 = @post_incr_expr +| 38 = @post_decr_expr +| 39 = @pre_incr_expr +| 40 = @pre_decr_expr +/* multiplicative */ +| 41 = @mul_expr +| 42 = @div_expr +| 43 = @rem_expr +/* additive */ +| 44 = @add_expr +| 45 = @sub_expr +/* shift */ +| 46 = @lshift_expr +| 47 = @rshift_expr +/* relational */ +| 48 = @lt_expr +| 49 = @gt_expr +| 50 = @le_expr +| 51 = @ge_expr +/* equality */ +| 52 = @eq_expr +| 53 = @ne_expr +/* logical */ +| 54 = @bit_and_expr +| 55 = @bit_xor_expr +| 56 = @bit_or_expr +| 57 = @log_and_expr +| 58 = @log_or_expr +/* type testing */ +| 59 = @is_expr +| 60 = @as_expr +/* null coalescing */ +| 61 = @null_coalescing_expr +/* conditional */ +| 62 = @conditional_expr +/* assignment */ +| 63 = @simple_assign_expr +| 64 = @assign_add_expr +| 65 = @assign_sub_expr +| 66 = @assign_mul_expr +| 67 = @assign_div_expr +| 68 = @assign_rem_expr +| 69 = @assign_and_expr +| 70 = @assign_xor_expr +| 71 = @assign_or_expr +| 72 = @assign_lshift_expr +| 73 = @assign_rshift_expr +/* more */ +| 74 = @object_init_expr +| 75 = @collection_init_expr +| 76 = @array_init_expr +| 77 = @checked_expr +| 78 = @unchecked_expr +| 79 = @constructor_init_expr +| 80 = @add_event_expr +| 81 = @remove_event_expr +| 82 = @par_expr +| 83 = @local_var_decl_expr +| 84 = @lambda_expr +| 85 = @anonymous_method_expr +| 86 = @namespace_expr +/* dynamic */ +| 92 = @dynamic_element_access_expr +| 93 = @dynamic_member_access_expr +/* unsafe */ +| 100 = @pointer_indirection_expr +| 101 = @address_of_expr +| 102 = @sizeof_expr +/* async */ +| 103 = @await_expr +/* C# 6.0 */ +| 104 = @nameof_expr +| 105 = @interpolated_string_expr +| 106 = @unknown_expr +/* C# 7.0 */ +| 107 = @throw_expr +| 108 = @tuple_expr +| 109 = @local_function_invocation_expr +| 110 = @ref_expr +| 111 = @discard_expr +/* C# 8.0 */ +| 112 = @range_expr +| 113 = @index_expr +| 114 = @switch_expr +| 115 = @recursive_pattern_expr +| 116 = @property_pattern_expr +| 117 = @positional_pattern_expr +| 118 = @switch_case_expr +| 119 = @assign_coalesce_expr +| 120 = @suppress_nullable_warning_expr +| 121 = @namespace_access_expr +/* C# 9.0 */ +| 122 = @lt_pattern_expr +| 123 = @gt_pattern_expr +| 124 = @le_pattern_expr +| 125 = @ge_pattern_expr +| 126 = @not_pattern_expr +| 127 = @and_pattern_expr +| 128 = @or_pattern_expr +| 129 = @function_pointer_invocation_expr +| 130 = @with_expr +/* C# 11.0 */ +| 131 = @list_pattern_expr +| 132 = @slice_pattern_expr +| 133 = @urshift_expr +| 134 = @assign_urshift_expr +| 135 = @utf8_string_literal_expr +/* C# 12.0 */ +| 136 = @collection_expr +| 137 = @spread_element_expr +| 138 = @interpolated_string_insert_expr +/* Preprocessor */ +| 999 = @define_symbol_expr +; + +@switch = @switch_stmt | @switch_expr; +@case = @case_stmt | @switch_case_expr; +@pattern_match = @case | @is_expr; +@unary_pattern_expr = @not_pattern_expr; +@relational_pattern_expr = @gt_pattern_expr | @lt_pattern_expr | @ge_pattern_expr | @le_pattern_expr; +@binary_pattern_expr = @and_pattern_expr | @or_pattern_expr; + +@integer_literal_expr = @int_literal_expr | @long_literal_expr | @uint_literal_expr | @ulong_literal_expr; +@real_literal_expr = @float_literal_expr | @double_literal_expr | @decimal_literal_expr; +@string_literal_expr = @utf16_string_literal_expr | @utf8_string_literal_expr; +@literal_expr = @bool_literal_expr | @char_literal_expr | @integer_literal_expr | @real_literal_expr + | @string_literal_expr | @null_literal_expr; + +@assign_expr = @simple_assign_expr | @assign_op_expr | @local_var_decl_expr; +@assign_op_call_expr = @assign_arith_expr | @assign_bitwise_expr +@assign_op_expr = @assign_op_call_expr | @assign_event_expr | @assign_coalesce_expr; +@assign_event_expr = @add_event_expr | @remove_event_expr; + +@add_operation = @add_expr | @assign_add_expr; +@sub_operation = @sub_expr | @assign_sub_expr; +@mul_operation = @mul_expr | @assign_mul_expr; +@div_operation = @div_expr | @assign_div_expr; +@rem_operation = @rem_expr | @assign_rem_expr; +@and_operation = @bit_and_expr | @assign_and_expr; +@xor_operation = @bit_xor_expr | @assign_xor_expr; +@or_operation = @bit_or_expr | @assign_or_expr; +@lshift_operation = @lshift_expr | @assign_lshift_expr; +@rshift_operation = @rshift_expr | @assign_rshift_expr; +@urshift_operation = @urshift_expr | @assign_urshift_expr; +@null_coalescing_operation = @null_coalescing_expr | @assign_coalesce_expr; + +@assign_arith_expr = @assign_add_expr | @assign_sub_expr | @assign_mul_expr | @assign_div_expr + | @assign_rem_expr +@assign_bitwise_expr = @assign_and_expr | @assign_or_expr | @assign_xor_expr + | @assign_lshift_expr | @assign_rshift_expr | @assign_urshift_expr; + +@member_access_expr = @field_access_expr | @property_access_expr | @indexer_access_expr | @event_access_expr + | @method_access_expr | @type_access_expr | @dynamic_member_access_expr; +@access_expr = @member_access_expr | @this_access_expr | @base_access_expr | @assignable_access_expr | @namespace_access_expr; +@element_access_expr = @indexer_access_expr | @array_access_expr | @dynamic_element_access_expr; + +@local_variable_access = @local_variable_access_expr | @local_var_decl_expr; +@local_scope_variable_access_expr = @parameter_access_expr | @local_variable_access; +@variable_access_expr = @local_scope_variable_access_expr | @field_access_expr; + +@assignable_access_expr = @variable_access_expr | @property_access_expr | @element_access_expr + | @event_access_expr | @dynamic_member_access_expr; + +@objectorcollection_init_expr = @object_init_expr | @collection_init_expr; + +@delegate_creation_expr = @explicit_delegate_creation_expr | @implicit_delegate_creation_expr; + +@bin_arith_op_expr = @mul_expr | @div_expr | @rem_expr | @add_expr | @sub_expr; +@incr_op_expr = @pre_incr_expr | @post_incr_expr; +@decr_op_expr = @pre_decr_expr | @post_decr_expr; +@mut_op_expr = @incr_op_expr | @decr_op_expr; +@un_arith_op_expr = @plus_expr | @minus_expr | @mut_op_expr; +@arith_op_expr = @bin_arith_op_expr | @un_arith_op_expr; + +@ternary_log_op_expr = @conditional_expr; +@bin_log_op_expr = @log_and_expr | @log_or_expr | @null_coalescing_expr; +@un_log_op_expr = @log_not_expr; +@log_expr = @un_log_op_expr | @bin_log_op_expr | @ternary_log_op_expr; + +@bin_bit_op_expr = @bit_and_expr | @bit_or_expr | @bit_xor_expr | @lshift_expr + | @rshift_expr | @urshift_expr; +@un_bit_op_expr = @bit_not_expr; +@bit_expr = @un_bit_op_expr | @bin_bit_op_expr; + +@equality_op_expr = @eq_expr | @ne_expr; +@rel_op_expr = @gt_expr | @lt_expr| @ge_expr | @le_expr; +@comp_expr = @equality_op_expr | @rel_op_expr; + +@op_expr = @un_op | @bin_op | @ternary_op; + +@ternary_op = @ternary_log_op_expr; +@bin_op = @assign_expr | @bin_arith_op_expr | @bin_log_op_expr | @bin_bit_op_expr | @comp_expr; +@un_op = @un_arith_op_expr | @un_log_op_expr | @un_bit_op_expr | @sizeof_expr + | @pointer_indirection_expr | @address_of_expr; + +@anonymous_function_expr = @lambda_expr | @anonymous_method_expr; + +@op_invoke_expr = @operator_invocation_expr | @assign_op_call_expr +@call = @method_invocation_expr | @constructor_init_expr | @op_invoke_expr + | @delegate_invocation_expr | @object_creation_expr | @call_access_expr + | @local_function_invocation_expr | @function_pointer_invocation_expr; + +@call_access_expr = @property_access_expr | @event_access_expr | @indexer_access_expr; + +@late_bindable_expr = @dynamic_element_access_expr | @dynamic_member_access_expr + | @object_creation_expr | @method_invocation_expr | @op_invoke_expr; + +@throw_element = @throw_expr | @throw_stmt; + +@implicitly_typeable_object_creation_expr = @object_creation_expr | @explicit_delegate_creation_expr; + +implicitly_typed_array_creation( + unique int id: @array_creation_expr ref); + +explicitly_sized_array_creation( + unique int id: @array_creation_expr ref); + +stackalloc_array_creation( + unique int id: @array_creation_expr ref); + +implicitly_typed_object_creation( + unique int id: @implicitly_typeable_object_creation_expr ref); + +mutator_invocation_mode( + unique int id: @operator_invocation_expr ref, + int mode: int ref /* prefix = 1, postfix = 2*/); + +expr_value( + unique int id: @expr ref, + string value: string ref); + +expr_call( + unique int caller_id: @expr ref, + int target_id: @callable ref); + +expr_access( + unique int accesser_id: @access_expr ref, + int target_id: @accessible ref); + +@accessible = @method | @assignable | @local_function | @namespace; + +expr_location( + unique int id: @expr ref, + int loc: @location ref); + +dynamic_member_name( + unique int id: @late_bindable_expr ref, + string name: string ref); + +@qualifiable_expr = @member_access_expr + | @method_invocation_expr + | @element_access_expr + | @assign_op_call_expr; + +conditional_access( + unique int id: @qualifiable_expr ref); + +expr_argument( + unique int id: @expr ref, + int mode: int ref); + /* mode is the same as params: value = 0, ref = 1, out = 2 */ + +expr_argument_name( + unique int id: @expr ref, + string name: string ref); + +lambda_expr_return_type( + unique int id: @lambda_expr ref, + int type_id: @type_or_ref ref); + +/* Compiler generated */ + +compiler_generated(unique int id: @element ref); + +/** CONTROL/DATA FLOW **/ + +@control_flow_element = @stmt | @expr; + +/* XML Files */ + +xmlEncoding ( + unique int id: @file ref, + string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* Comments */ + +commentline( + unique int id: @commentline, + int kind: int ref, + string text: string ref, + string rawtext: string ref); + +case @commentline.kind of + 0 = @singlelinecomment +| 1 = @xmldoccomment +| 2 = @multilinecomment; + +commentline_location( + unique int id: @commentline ref, + int loc: @location ref); + +commentblock( + unique int id : @commentblock); + +commentblock_location( + unique int id: @commentblock ref, + int loc: @location ref); + +commentblock_binding( + int id: @commentblock ref, + int entity: @element ref, + int bindtype: int ref); /* 0: Parent, 1: Best, 2: Before, 3: After */ + +commentblock_child( + int id: @commentblock ref, + int commentline: @commentline ref, + int index: int ref); + +/* ASP.NET */ + +case @asp_element.kind of + 0=@asp_close_tag +| 1=@asp_code +| 2=@asp_comment +| 3=@asp_data_binding +| 4=@asp_directive +| 5=@asp_open_tag +| 6=@asp_quoted_string +| 7=@asp_text +| 8=@asp_xml_directive; + +@asp_attribute = @asp_code | @asp_data_binding | @asp_quoted_string; + +asp_elements( + unique int id: @asp_element, + int kind: int ref, + int loc: @location ref); + +asp_comment_server(unique int comment: @asp_comment ref); +asp_code_inline(unique int code: @asp_code ref); +asp_directive_attribute( + int directive: @asp_directive ref, + int index: int ref, + string name: string ref, + int value: @asp_quoted_string ref); +asp_directive_name( + unique int directive: @asp_directive ref, + string name: string ref); +asp_element_body( + unique int element: @asp_element ref, + string body: string ref); +asp_tag_attribute( + int tag: @asp_open_tag ref, + int index: int ref, + string name: string ref, + int attribute: @asp_attribute ref); +asp_tag_name( + unique int tag: @asp_open_tag ref, + string name: string ref); +asp_tag_isempty(int tag: @asp_open_tag ref); diff --git a/csharp/ql/lib/upgrades/19b8cc3e2dc768d4cbc03d6e3773b709bbebd036/upgrade.properties b/csharp/ql/lib/upgrades/19b8cc3e2dc768d4cbc03d6e3773b709bbebd036/upgrade.properties new file mode 100644 index 000000000000..1a6c09d74158 --- /dev/null +++ b/csharp/ql/lib/upgrades/19b8cc3e2dc768d4cbc03d6e3773b709bbebd036/upgrade.properties @@ -0,0 +1,2 @@ +description: Add @assign_op_call_expr to @qualifiable_expr. +compatibility: full diff --git a/csharp/ql/lib/upgrades/ea7ad33252e550241975676f09fcc7b0a703deab/old.dbscheme b/csharp/ql/lib/upgrades/ea7ad33252e550241975676f09fcc7b0a703deab/old.dbscheme new file mode 100644 index 000000000000..ea7ad33252e5 --- /dev/null +++ b/csharp/ql/lib/upgrades/ea7ad33252e550241975676f09fcc7b0a703deab/old.dbscheme @@ -0,0 +1,1505 @@ +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2021-07-14 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * csc f1.cs f2.cs f3.cs + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + unique int id : @compilation, + string cwd : string ref +); + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | --compiler + * 1 | *path to compiler* + * 2 | f1.cs + * 3 | f2.cs + * 4 | f3.cs + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile.rsp` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.cs + * 1 | f2.cs + * 2 | f3.cs + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The references used by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs /r:ref1.dll /r:ref2.dll /r:ref3.dll + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | ref1.dll + * 1 | ref2.dll + * 2 | ref3.dll + */ +#keyset[id, num] +compilation_referencing_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location ref +); + +extractor_messages( + unique int id: @extractor_message, + int severity: int ref, + string origin : string ref, + string text : string ref, + string entity : string ref, + int location: @location ref, + string stack_trace : string ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +compilation_assembly( + unique int id : @compilation ref, + int assembly: @assembly ref +) + +// Populated by the CSV extractor +externalData( + int id: @externalDataElement, + string path: string ref, + int column: int ref, + string value: string ref); + +sourceLocationPrefix( + string prefix: string ref); + +/* + * Overlay support + */ + +/** + * The CLI will automatically emit the tuple `databaseMetadata("isOverlay", "true")`, + * along with an `overlayChangedFiles` tuple for each new/modified/deleted file, + * when building an overlay database, and these can be used by the discard predicates. + */ +databaseMetadata( + string metadataKey : string ref, + string value : string ref +); + +overlayChangedFiles( + string path : string ref +); + +/* + * C# dbscheme + */ + +/** ELEMENTS **/ + +@element = @declaration | @stmt | @expr | @modifier | @attribute | @namespace_declaration + | @using_directive | @type_parameter_constraints | @externalDataElement + | @xmllocatable | @asp_element | @namespace | @preprocessor_directive; + +@declaration = @callable | @generic | @assignable | @namespace; + +@named_element = @namespace | @declaration; + +@declaration_with_accessors = @property | @indexer | @event; + +@assignable = @variable | @assignable_with_accessors | @event; + +@assignable_with_accessors = @property | @indexer; + +@attributable = @assembly | @field | @parameter | @operator | @method | @constructor + | @destructor | @callable_accessor | @value_or_ref_type | @declaration_with_accessors + | @local_function | @lambda_expr; + +/** LOCATIONS, ASEMMBLIES, MODULES, FILES and FOLDERS **/ + +@location = @location_default | @assembly; + +@locatable = @declaration_with_accessors | @callable_accessor | @declaration_or_directive + | @diagnostic | @extractor_message | @preprocessor_directive | @attribute | @type_mention | @type_parameter_constraints + | @declaration_with_accessors | @callable_accessor | @operator | @method + | @constructor | @destructor | @field | @local_variable | @parameter | @stmt | @expr + | @xmllocatable | @commentline | @commentblock | @asp_element + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +locations_mapped( + unique int id: @location_default ref, + int mapped_to: @location_default ref); + +@sourceline = @file | @callable | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref); + +assemblies( + unique int id: @assembly, + int file: @file ref, + string fullname: string ref, + string name: string ref, + string version: string ref); + +files( + unique int id: @file, + string name: string ref); + +folders( + unique int id: @folder, + string name: string ref); + +@container = @folder | @file ; + +containerparent( + int parent: @container ref, + unique int child: @container ref); + +file_extraction_mode( + unique int file: @file ref, + int mode: int ref + /* 0 = normal, 1 = standalone extractor */ + ); + +/** NAMESPACES **/ + +@type_container = @namespace | @type; + +namespaces( + unique int id: @namespace, + string name: string ref); + +namespace_declarations( + unique int id: @namespace_declaration, + int namespace_id: @namespace ref); + +namespace_declaration_location( + unique int id: @namespace_declaration ref, + int loc: @location ref); + +parent_namespace( + unique int child_id: @type_container ref, + int namespace_id: @namespace ref); + +@declaration_or_directive = @namespace_declaration | @type | @using_directive; + +parent_namespace_declaration( + int child_id: @declaration_or_directive ref, // cannot be unique because of partial classes + int namespace_id: @namespace_declaration ref); + +@using_directive = @using_namespace_directive | @using_static_directive; + +using_global( + unique int id: @using_directive ref +); + +using_namespace_directives( + unique int id: @using_namespace_directive, + int namespace_id: @namespace ref); + +using_static_directives( + unique int id: @using_static_directive, + int type_id: @type_or_ref ref); + +using_directive_location( + unique int id: @using_directive ref, + int loc: @location ref); + +@preprocessor_directive = @pragma_warning | @pragma_checksum | @directive_define | @directive_undefine | @directive_warning + | @directive_error | @directive_nullable | @directive_line | @directive_region | @directive_endregion | @directive_if + | @directive_elif | @directive_else | @directive_endif; + +@conditional_directive = @directive_if | @directive_elif; +@branch_directive = @directive_if | @directive_elif | @directive_else; + +directive_ifs( + unique int id: @directive_if, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref); /* 0: false, 1: true */ + +directive_elifs( + unique int id: @directive_elif, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +directive_elses( + unique int id: @directive_else, + int branchTaken: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +#keyset[id, start] +directive_endifs( + unique int id: @directive_endif, + unique int start: @directive_if ref); + +directive_define_symbols( + unique int id: @define_symbol_expr ref, + string name: string ref); + +directive_regions( + unique int id: @directive_region, + string name: string ref); + +#keyset[id, start] +directive_endregions( + unique int id: @directive_endregion, + unique int start: @directive_region ref); + +directive_lines( + unique int id: @directive_line, + int kind: int ref); /* 0: default, 1: hidden, 2: numeric, 3: span */ + +directive_line_value( + unique int id: @directive_line ref, + int line: int ref); + +directive_line_file( + unique int id: @directive_line ref, + int file: @file ref); + +directive_line_offset( + unique int id: @directive_line ref, + int offset: int ref); + +directive_line_span( + unique int id: @directive_line ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +directive_nullables( + unique int id: @directive_nullable, + int setting: int ref, /* 0: disable, 1: enable, 2: restore */ + int target: int ref); /* 0: none, 1: annotations, 2: warnings */ + +directive_warnings( + unique int id: @directive_warning, + string message: string ref); + +directive_errors( + unique int id: @directive_error, + string message: string ref); + +directive_undefines( + unique int id: @directive_undefine, + string name: string ref); + +directive_defines( + unique int id: @directive_define, + string name: string ref); + +pragma_checksums( + unique int id: @pragma_checksum, + int file: @file ref, + string guid: string ref, + string bytes: string ref); + +pragma_warnings( + unique int id: @pragma_warning, + int kind: int ref /* 0 = disable, 1 = restore */); + +#keyset[id, index] +pragma_warning_error_codes( + int id: @pragma_warning ref, + string errorCode: string ref, + int index: int ref); + +preprocessor_directive_location( + unique int id: @preprocessor_directive ref, + int loc: @location ref); + +preprocessor_directive_compilation( + int id: @preprocessor_directive ref, + int compilation: @compilation ref); + +preprocessor_directive_active( + unique int id: @preprocessor_directive ref, + int active: int ref); /* 0: false, 1: true */ + +/** TYPES **/ + +types( + unique int id: @type, + int kind: int ref, + string name: string ref); + +case @type.kind of + 1 = @bool_type +| 2 = @char_type +| 3 = @decimal_type +| 4 = @sbyte_type +| 5 = @short_type +| 6 = @int_type +| 7 = @long_type +| 8 = @byte_type +| 9 = @ushort_type +| 10 = @uint_type +| 11 = @ulong_type +| 12 = @float_type +| 13 = @double_type +| 14 = @enum_type +| 15 = @struct_type +| 17 = @class_type +| 19 = @interface_type +| 20 = @delegate_type +| 21 = @null_type +| 22 = @type_parameter +| 23 = @pointer_type +| 24 = @nullable_type +| 25 = @array_type +| 26 = @void_type +| 27 = @int_ptr_type +| 28 = @uint_ptr_type +| 29 = @dynamic_type +| 30 = @arglist_type +| 31 = @unknown_type +| 32 = @tuple_type +| 33 = @function_pointer_type +| 34 = @inline_array_type +| 35 = @extension_type + ; + +@simple_type = @bool_type | @char_type | @integral_type | @floating_point_type | @decimal_type; +@integral_type = @signed_integral_type | @unsigned_integral_type; +@signed_integral_type = @sbyte_type | @short_type | @int_type | @long_type; +@unsigned_integral_type = @byte_type | @ushort_type | @uint_type | @ulong_type; +@floating_point_type = @float_type | @double_type; +@value_type = @simple_type | @enum_type | @struct_type | @nullable_type | @int_ptr_type + | @uint_ptr_type | @tuple_type | @void_type | @inline_array_type; +@ref_type = @class_type | @interface_type | @array_type | @delegate_type | @null_type + | @dynamic_type | @extension_type; +@value_or_ref_type = @value_type | @ref_type; + +typerefs( + unique int id: @typeref, + string name: string ref); + +typeref_type( + int id: @typeref ref, + unique int typeId: @type ref); + +@type_or_ref = @type | @typeref; + +array_element_type( + unique int array: @array_type ref, + int dimension: int ref, + int rank: int ref, + int element: @type_or_ref ref); + +nullable_underlying_type( + unique int nullable: @nullable_type ref, + int underlying: @type_or_ref ref); + +pointer_referent_type( + unique int pointer: @pointer_type ref, + int referent: @type_or_ref ref); + +enum_underlying_type( + unique int enum_id: @enum_type ref, + int underlying_type_id: @type_or_ref ref); + +delegate_return_type( + unique int delegate_id: @delegate_type ref, + int return_type_id: @type_or_ref ref); + +function_pointer_return_type( + unique int function_pointer_id: @function_pointer_type ref, + int return_type_id: @type_or_ref ref); + +extension_receiver_type( + unique int extension: @extension_type ref, + int receiver_type_id: @type_or_ref ref); + +extend( + int sub: @type ref, + int super: @type_or_ref ref); + +anonymous_types( + unique int id: @type ref); + +@interface_or_ref = @interface_type | @typeref; + +implement( + int sub: @type ref, + int super: @type_or_ref ref); + +type_location( + int id: @type ref, + int loc: @location ref); + +tuple_underlying_type( + unique int tuple: @tuple_type ref, + int struct: @type_or_ref ref); + +#keyset[tuple, index] +tuple_element( + int tuple: @tuple_type ref, + int index: int ref, + unique int field: @field ref); + +attributes( + unique int id: @attribute, + int kind: int ref, + int type_id: @type_or_ref ref, + int target: @attributable ref); + +case @attribute.kind of + 0 = @attribute_default +| 1 = @attribute_return +| 2 = @attribute_assembly +| 3 = @attribute_module +; + +attribute_location( + int id: @attribute ref, + int loc: @location ref); + +@type_mention_parent = @element | @type_mention; + +type_mention( + unique int id: @type_mention, + int type_id: @type_or_ref ref, + int parent: @type_mention_parent ref); + +type_mention_location( + unique int id: @type_mention ref, + int loc: @location ref); + +@has_type_annotation = @assignable | @type_parameter | @callable | @expr | @delegate_type | @generic | @function_pointer_type; + +/** + * A direct annotation on an entity, for example `string? x;`. + * + * Annotations: + * 2 = reftype is not annotated "!" + * 3 = reftype is annotated "?" + * 4 = readonly ref type / in parameter + * 5 = ref type parameter, return or local variable + * 6 = out parameter + * + * Note that the annotation depends on the element it annotates. + * @assignable: The annotation is on the type of the assignable, for example the variable type. + * @type_parameter: The annotation is on the reftype constraint + * @callable: The annotation is on the return type + * @array_type: The annotation is on the element type + */ +type_annotation(int id: @has_type_annotation ref, int annotation: int ref); + +nullability(unique int nullability: @nullability, int kind: int ref); + +case @nullability.kind of + 0 = @oblivious +| 1 = @not_annotated +| 2 = @annotated +; + +#keyset[parent, index] +nullability_parent(int nullability: @nullability ref, int index: int ref, int parent: @nullability ref) + +type_nullability(int id: @has_type_annotation ref, int nullability: @nullability ref); + +/** + * The nullable flow state of an expression, as determined by Roslyn. + * 0 = none (default, not populated) + * 1 = not null + * 2 = maybe null + */ +expr_flowstate(unique int id: @expr ref, int state: int ref); + +/** GENERICS **/ + +@generic = @type | @method | @local_function; + +type_parameters( + unique int id: @type_parameter ref, + int index: int ref, + int generic_id: @generic ref, + int variance: int ref /* none = 0, out = 1, in = 2 */); + +#keyset[constructed_id, index] +type_arguments( + int id: @type_or_ref ref, + int index: int ref, + int constructed_id: @generic_or_ref ref); + +@generic_or_ref = @generic | @typeref; + +constructed_generic( + unique int constructed: @generic ref, + int generic: @generic_or_ref ref); + +type_parameter_constraints( + unique int id: @type_parameter_constraints, + int param_id: @type_parameter ref); + +type_parameter_constraints_location( + int id: @type_parameter_constraints ref, + int loc: @location ref); + +general_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int kind: int ref /* class = 1, struct = 2, new = 3 */); + +specific_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref); + +specific_type_parameter_nullability( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref, + int nullability: @nullability ref); + +/** FUNCTION POINTERS */ + +function_pointer_calling_conventions( + int id: @function_pointer_type ref, + int kind: int ref); + +#keyset[id, index] +has_unmanaged_calling_conventions( + int id: @function_pointer_type ref, + int index: int ref, + int conv_id: @type_or_ref ref); + +/** MODIFIERS */ + +@modifiable = @modifiable_direct | @event_accessor; + +@modifiable_direct = @member | @accessor | @local_function | @anonymous_function_expr; + +modifiers( + unique int id: @modifier, + string name: string ref); + +has_modifiers( + int id: @modifiable_direct ref, + int mod_id: @modifier ref); + +/** MEMBERS **/ + +@member = @method | @constructor | @destructor | @field | @property | @event | @operator | @indexer | @type; + +@named_exprorstmt = @goto_stmt | @labeled_stmt | @expr; + +@virtualizable = @method | @property | @indexer | @event | @operator; + +exprorstmt_name( + unique int parent_id: @named_exprorstmt ref, + string name: string ref); + +nested_types( + unique int id: @type ref, + int declaring_type_id: @type ref, + int unbound_id: @type ref); + +properties( + unique int id: @property, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @property ref); + +property_location( + int id: @property ref, + int loc: @location ref); + +indexers( + unique int id: @indexer, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @indexer ref); + +indexer_location( + int id: @indexer ref, + int loc: @location ref); + +accessors( + unique int id: @accessor, + int kind: int ref, + string name: string ref, + int declaring_member_id: @member ref, + int unbound_id: @accessor ref); + +case @accessor.kind of + 1 = @getter +| 2 = @setter + ; + +init_only_accessors( + unique int id: @accessor ref); + +accessor_location( + int id: @accessor ref, + int loc: @location ref); + +events( + unique int id: @event, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @event ref); + +event_location( + int id: @event ref, + int loc: @location ref); + +event_accessors( + unique int id: @event_accessor, + int kind: int ref, + string name: string ref, + int declaring_event_id: @event ref, + int unbound_id: @event_accessor ref); + +case @event_accessor.kind of + 1 = @add_event_accessor +| 2 = @remove_event_accessor + ; + +event_accessor_location( + int id: @event_accessor ref, + int loc: @location ref); + +operators( + unique int id: @operator, + string name: string ref, + string symbol: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @operator ref); + +operator_location( + int id: @operator ref, + int loc: @location ref); + +constant_value( + int id: @variable ref, + string value: string ref); + +/** CALLABLES **/ + +@callable = @method | @constructor | @destructor | @operator | @callable_accessor | @anonymous_function_expr | @local_function; + +@callable_accessor = @accessor | @event_accessor; + +methods( + unique int id: @method, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @method ref); + +method_location( + int id: @method ref, + int loc: @location ref); + +constructors( + unique int id: @constructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @constructor ref); + +constructor_location( + int id: @constructor ref, + int loc: @location ref); + +destructors( + unique int id: @destructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @destructor ref); + +destructor_location( + int id: @destructor ref, + int loc: @location ref); + +overrides( + int id: @callable ref, + int base_id: @callable ref); + +explicitly_implements( + int id: @member ref, + int interface_id: @interface_or_ref ref); + +local_functions( + unique int id: @local_function, + string name: string ref, + int return_type: @type ref, + int unbound_id: @local_function ref); + +local_function_stmts( + unique int fn: @local_function_stmt ref, + int stmt: @local_function ref); + +/** VARIABLES **/ + +@variable = @local_scope_variable | @field; + +@local_scope_variable = @local_variable | @parameter; + +fields( + unique int id: @field, + int kind: int ref, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @field ref); + +case @field.kind of + 1 = @addressable_field +| 2 = @constant + ; + +field_location( + int id: @field ref, + int loc: @location ref); + +localvars( + unique int id: @local_variable, + int kind: int ref, + string name: string ref, + int implicitly_typed: int ref /* 0 = no, 1 = yes */, + int type_id: @type_or_ref ref, + int parent_id: @local_var_decl_expr ref); + +case @local_variable.kind of + 1 = @addressable_local_variable +| 2 = @local_constant +| 3 = @local_variable_ref + ; + +localvar_location( + unique int id: @local_variable ref, + int loc: @location ref); + +@parameterizable = @callable | @delegate_type | @indexer | @function_pointer_type | @extension_type; + +#keyset[name, parent_id] +#keyset[index, parent_id] +params( + unique int id: @parameter, + string name: string ref, + int type_id: @type_or_ref ref, + int index: int ref, + int mode: int ref, /* value = 0, ref = 1, out = 2, params/array = 3, this = 4, in = 5, ref readonly = 6 */ + int parent_id: @parameterizable ref, + int unbound_id: @parameter ref); + +param_location( + int id: @parameter ref, + int loc: @location ref); + +@has_scoped_annotation = @local_scope_variable + +scoped_annotation( + int id: @has_scoped_annotation ref, + int kind: int ref // scoped ref = 1, scoped value = 2 + ); + +/** STATEMENTS **/ + +@exprorstmt_parent = @control_flow_element | @top_level_exprorstmt_parent; + +statements( + unique int id: @stmt, + int kind: int ref); + +#keyset[index, parent] +stmt_parent( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_stmt_parent = @callable; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +stmt_parent_top_level( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @top_level_stmt_parent ref); + +case @stmt.kind of + 1 = @block_stmt +| 2 = @expr_stmt +| 3 = @if_stmt +| 4 = @switch_stmt +| 5 = @while_stmt +| 6 = @do_stmt +| 7 = @for_stmt +| 8 = @foreach_stmt +| 9 = @break_stmt +| 10 = @continue_stmt +| 11 = @goto_stmt +| 12 = @goto_case_stmt +| 13 = @goto_default_stmt +| 14 = @throw_stmt +| 15 = @return_stmt +| 16 = @yield_stmt +| 17 = @try_stmt +| 18 = @checked_stmt +| 19 = @unchecked_stmt +| 20 = @lock_stmt +| 21 = @using_block_stmt +| 22 = @var_decl_stmt +| 23 = @const_decl_stmt +| 24 = @empty_stmt +| 25 = @unsafe_stmt +| 26 = @fixed_stmt +| 27 = @label_stmt +| 28 = @catch +| 29 = @case_stmt +| 30 = @local_function_stmt +| 31 = @using_decl_stmt + ; + +@using_stmt = @using_block_stmt | @using_decl_stmt; + +@labeled_stmt = @label_stmt | @case; + +@decl_stmt = @var_decl_stmt | @const_decl_stmt | @using_decl_stmt; + +@cond_stmt = @if_stmt | @switch_stmt; + +@loop_stmt = @while_stmt | @do_stmt | @for_stmt | @foreach_stmt; + +@jump_stmt = @break_stmt | @goto_any_stmt | @continue_stmt | @throw_stmt | @return_stmt + | @yield_stmt; + +@goto_any_stmt = @goto_default_stmt | @goto_case_stmt | @goto_stmt; + + +stmt_location( + unique int id: @stmt ref, + int loc: @location ref); + +catch_type( + unique int catch_id: @catch ref, + int type_id: @type_or_ref ref, + int kind: int ref /* explicit = 1, implicit = 2 */); + +foreach_stmt_info( + unique int id: @foreach_stmt ref, + int kind: int ref /* non-async = 1, async = 2 */); + +@foreach_symbol = @method | @property | @type_or_ref; + +#keyset[id, kind] +foreach_stmt_desugar( + int id: @foreach_stmt ref, + int symbol: @foreach_symbol ref, + int kind: int ref /* GetEnumeratorMethod = 1, CurrentProperty = 2, MoveNextMethod = 3, DisposeMethod = 4, ElementType = 5 */); + +/** EXPRESSIONS **/ + +expressions( + unique int id: @expr, + int kind: int ref, + int type_id: @type_or_ref ref); + +#keyset[index, parent] +expr_parent( + unique int expr: @expr ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_expr_parent = @attribute | @field | @property | @indexer | @parameter | @directive_if | @directive_elif; + +@top_level_exprorstmt_parent = @top_level_expr_parent | @top_level_stmt_parent; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +expr_parent_top_level( + unique int expr: @expr ref, + int index: int ref, + int parent: @top_level_exprorstmt_parent ref); + +case @expr.kind of +/* literal */ + 1 = @bool_literal_expr +| 2 = @char_literal_expr +| 3 = @decimal_literal_expr +| 4 = @int_literal_expr +| 5 = @long_literal_expr +| 6 = @uint_literal_expr +| 7 = @ulong_literal_expr +| 8 = @float_literal_expr +| 9 = @double_literal_expr +| 10 = @utf16_string_literal_expr +| 11 = @null_literal_expr +/* primary & unary */ +| 12 = @this_access_expr +| 13 = @base_access_expr +| 14 = @local_variable_access_expr +| 15 = @parameter_access_expr +| 16 = @field_access_expr +| 17 = @property_access_expr +| 18 = @method_access_expr +| 19 = @event_access_expr +| 20 = @indexer_access_expr +| 21 = @array_access_expr +| 22 = @type_access_expr +| 23 = @typeof_expr +| 24 = @method_invocation_expr +| 25 = @delegate_invocation_expr +| 26 = @operator_invocation_expr +| 27 = @cast_expr +| 28 = @object_creation_expr +| 29 = @explicit_delegate_creation_expr +| 30 = @implicit_delegate_creation_expr +| 31 = @array_creation_expr +| 32 = @default_expr +| 33 = @plus_expr +| 34 = @minus_expr +| 35 = @bit_not_expr +| 36 = @log_not_expr +| 37 = @post_incr_expr +| 38 = @post_decr_expr +| 39 = @pre_incr_expr +| 40 = @pre_decr_expr +/* multiplicative */ +| 41 = @mul_expr +| 42 = @div_expr +| 43 = @rem_expr +/* additive */ +| 44 = @add_expr +| 45 = @sub_expr +/* shift */ +| 46 = @lshift_expr +| 47 = @rshift_expr +/* relational */ +| 48 = @lt_expr +| 49 = @gt_expr +| 50 = @le_expr +| 51 = @ge_expr +/* equality */ +| 52 = @eq_expr +| 53 = @ne_expr +/* logical */ +| 54 = @bit_and_expr +| 55 = @bit_xor_expr +| 56 = @bit_or_expr +| 57 = @log_and_expr +| 58 = @log_or_expr +/* type testing */ +| 59 = @is_expr +| 60 = @as_expr +/* null coalescing */ +| 61 = @null_coalescing_expr +/* conditional */ +| 62 = @conditional_expr +/* assignment */ +| 63 = @simple_assign_expr +| 64 = @assign_add_expr +| 65 = @assign_sub_expr +| 66 = @assign_mul_expr +| 67 = @assign_div_expr +| 68 = @assign_rem_expr +| 69 = @assign_and_expr +| 70 = @assign_xor_expr +| 71 = @assign_or_expr +| 72 = @assign_lshift_expr +| 73 = @assign_rshift_expr +/* more */ +| 74 = @object_init_expr +| 75 = @collection_init_expr +| 76 = @array_init_expr +| 77 = @checked_expr +| 78 = @unchecked_expr +| 79 = @constructor_init_expr +| 80 = @add_event_expr +| 81 = @remove_event_expr +| 82 = @par_expr +| 83 = @local_var_decl_expr +| 84 = @lambda_expr +| 85 = @anonymous_method_expr +| 86 = @namespace_expr +/* dynamic */ +| 92 = @dynamic_element_access_expr +| 93 = @dynamic_member_access_expr +/* unsafe */ +| 100 = @pointer_indirection_expr +| 101 = @address_of_expr +| 102 = @sizeof_expr +/* async */ +| 103 = @await_expr +/* C# 6.0 */ +| 104 = @nameof_expr +| 105 = @interpolated_string_expr +| 106 = @unknown_expr +/* C# 7.0 */ +| 107 = @throw_expr +| 108 = @tuple_expr +| 109 = @local_function_invocation_expr +| 110 = @ref_expr +| 111 = @discard_expr +/* C# 8.0 */ +| 112 = @range_expr +| 113 = @index_expr +| 114 = @switch_expr +| 115 = @recursive_pattern_expr +| 116 = @property_pattern_expr +| 117 = @positional_pattern_expr +| 118 = @switch_case_expr +| 119 = @assign_coalesce_expr +| 120 = @suppress_nullable_warning_expr +| 121 = @namespace_access_expr +/* C# 9.0 */ +| 122 = @lt_pattern_expr +| 123 = @gt_pattern_expr +| 124 = @le_pattern_expr +| 125 = @ge_pattern_expr +| 126 = @not_pattern_expr +| 127 = @and_pattern_expr +| 128 = @or_pattern_expr +| 129 = @function_pointer_invocation_expr +| 130 = @with_expr +/* C# 11.0 */ +| 131 = @list_pattern_expr +| 132 = @slice_pattern_expr +| 133 = @urshift_expr +| 134 = @assign_urshift_expr +| 135 = @utf8_string_literal_expr +/* C# 12.0 */ +| 136 = @collection_expr +| 137 = @spread_element_expr +| 138 = @interpolated_string_insert_expr +/* Preprocessor */ +| 999 = @define_symbol_expr +; + +@switch = @switch_stmt | @switch_expr; +@case = @case_stmt | @switch_case_expr; +@pattern_match = @case | @is_expr; +@unary_pattern_expr = @not_pattern_expr; +@relational_pattern_expr = @gt_pattern_expr | @lt_pattern_expr | @ge_pattern_expr | @le_pattern_expr; +@binary_pattern_expr = @and_pattern_expr | @or_pattern_expr; + +@integer_literal_expr = @int_literal_expr | @long_literal_expr | @uint_literal_expr | @ulong_literal_expr; +@real_literal_expr = @float_literal_expr | @double_literal_expr | @decimal_literal_expr; +@string_literal_expr = @utf16_string_literal_expr | @utf8_string_literal_expr; +@literal_expr = @bool_literal_expr | @char_literal_expr | @integer_literal_expr | @real_literal_expr + | @string_literal_expr | @null_literal_expr; + +@assign_expr = @simple_assign_expr | @assign_op_expr | @local_var_decl_expr; +@assign_op_call_expr = @assign_arith_expr | @assign_bitwise_expr +@assign_op_expr = @assign_op_call_expr | @assign_event_expr | @assign_coalesce_expr; +@assign_event_expr = @add_event_expr | @remove_event_expr; + +@add_operation = @add_expr | @assign_add_expr; +@sub_operation = @sub_expr | @assign_sub_expr; +@mul_operation = @mul_expr | @assign_mul_expr; +@div_operation = @div_expr | @assign_div_expr; +@rem_operation = @rem_expr | @assign_rem_expr; +@and_operation = @bit_and_expr | @assign_and_expr; +@xor_operation = @bit_xor_expr | @assign_xor_expr; +@or_operation = @bit_or_expr | @assign_or_expr; +@lshift_operation = @lshift_expr | @assign_lshift_expr; +@rshift_operation = @rshift_expr | @assign_rshift_expr; +@urshift_operation = @urshift_expr | @assign_urshift_expr; +@null_coalescing_operation = @null_coalescing_expr | @assign_coalesce_expr; + +@assign_arith_expr = @assign_add_expr | @assign_sub_expr | @assign_mul_expr | @assign_div_expr + | @assign_rem_expr +@assign_bitwise_expr = @assign_and_expr | @assign_or_expr | @assign_xor_expr + | @assign_lshift_expr | @assign_rshift_expr | @assign_urshift_expr; + +@member_access_expr = @field_access_expr | @property_access_expr | @indexer_access_expr | @event_access_expr + | @method_access_expr | @type_access_expr | @dynamic_member_access_expr; +@access_expr = @member_access_expr | @this_access_expr | @base_access_expr | @assignable_access_expr | @namespace_access_expr; +@element_access_expr = @indexer_access_expr | @array_access_expr | @dynamic_element_access_expr; + +@local_variable_access = @local_variable_access_expr | @local_var_decl_expr; +@local_scope_variable_access_expr = @parameter_access_expr | @local_variable_access; +@variable_access_expr = @local_scope_variable_access_expr | @field_access_expr; + +@assignable_access_expr = @variable_access_expr | @property_access_expr | @element_access_expr + | @event_access_expr | @dynamic_member_access_expr; + +@objectorcollection_init_expr = @object_init_expr | @collection_init_expr; + +@delegate_creation_expr = @explicit_delegate_creation_expr | @implicit_delegate_creation_expr; + +@bin_arith_op_expr = @mul_expr | @div_expr | @rem_expr | @add_expr | @sub_expr; +@incr_op_expr = @pre_incr_expr | @post_incr_expr; +@decr_op_expr = @pre_decr_expr | @post_decr_expr; +@mut_op_expr = @incr_op_expr | @decr_op_expr; +@un_arith_op_expr = @plus_expr | @minus_expr | @mut_op_expr; +@arith_op_expr = @bin_arith_op_expr | @un_arith_op_expr; + +@ternary_log_op_expr = @conditional_expr; +@bin_log_op_expr = @log_and_expr | @log_or_expr | @null_coalescing_expr; +@un_log_op_expr = @log_not_expr; +@log_expr = @un_log_op_expr | @bin_log_op_expr | @ternary_log_op_expr; + +@bin_bit_op_expr = @bit_and_expr | @bit_or_expr | @bit_xor_expr | @lshift_expr + | @rshift_expr | @urshift_expr; +@un_bit_op_expr = @bit_not_expr; +@bit_expr = @un_bit_op_expr | @bin_bit_op_expr; + +@equality_op_expr = @eq_expr | @ne_expr; +@rel_op_expr = @gt_expr | @lt_expr| @ge_expr | @le_expr; +@comp_expr = @equality_op_expr | @rel_op_expr; + +@op_expr = @un_op | @bin_op | @ternary_op; + +@ternary_op = @ternary_log_op_expr; +@bin_op = @assign_expr | @bin_arith_op_expr | @bin_log_op_expr | @bin_bit_op_expr | @comp_expr; +@un_op = @un_arith_op_expr | @un_log_op_expr | @un_bit_op_expr | @sizeof_expr + | @pointer_indirection_expr | @address_of_expr; + +@anonymous_function_expr = @lambda_expr | @anonymous_method_expr; + +@op_invoke_expr = @operator_invocation_expr | @assign_op_call_expr +@call = @method_invocation_expr | @constructor_init_expr | @op_invoke_expr + | @delegate_invocation_expr | @object_creation_expr | @call_access_expr + | @local_function_invocation_expr | @function_pointer_invocation_expr; + +@call_access_expr = @property_access_expr | @event_access_expr | @indexer_access_expr; + +@late_bindable_expr = @dynamic_element_access_expr | @dynamic_member_access_expr + | @object_creation_expr | @method_invocation_expr | @op_invoke_expr; + +@throw_element = @throw_expr | @throw_stmt; + +@implicitly_typeable_object_creation_expr = @object_creation_expr | @explicit_delegate_creation_expr; + +implicitly_typed_array_creation( + unique int id: @array_creation_expr ref); + +explicitly_sized_array_creation( + unique int id: @array_creation_expr ref); + +stackalloc_array_creation( + unique int id: @array_creation_expr ref); + +implicitly_typed_object_creation( + unique int id: @implicitly_typeable_object_creation_expr ref); + +mutator_invocation_mode( + unique int id: @operator_invocation_expr ref, + int mode: int ref /* prefix = 1, postfix = 2*/); + +expr_value( + unique int id: @expr ref, + string value: string ref); + +expr_call( + unique int caller_id: @expr ref, + int target_id: @callable ref); + +expr_access( + unique int accesser_id: @access_expr ref, + int target_id: @accessible ref); + +@accessible = @method | @assignable | @local_function | @namespace; + +expr_location( + unique int id: @expr ref, + int loc: @location ref); + +dynamic_member_name( + unique int id: @late_bindable_expr ref, + string name: string ref); + +@qualifiable_expr = @member_access_expr + | @method_invocation_expr + | @element_access_expr + | @assign_op_call_expr; + +conditional_access( + unique int id: @qualifiable_expr ref); + +expr_argument( + unique int id: @expr ref, + int mode: int ref); + /* mode is the same as params: value = 0, ref = 1, out = 2 */ + +expr_argument_name( + unique int id: @expr ref, + string name: string ref); + +lambda_expr_return_type( + unique int id: @lambda_expr ref, + int type_id: @type_or_ref ref); + +/* Compiler generated */ + +compiler_generated(unique int id: @element ref); + +/** CONTROL/DATA FLOW **/ + +@control_flow_element = @stmt | @expr; + +/* XML Files */ + +xmlEncoding ( + unique int id: @file ref, + string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* Comments */ + +commentline( + unique int id: @commentline, + int kind: int ref, + string text: string ref, + string rawtext: string ref); + +case @commentline.kind of + 0 = @singlelinecomment +| 1 = @xmldoccomment +| 2 = @multilinecomment; + +commentline_location( + unique int id: @commentline ref, + int loc: @location ref); + +commentblock( + unique int id : @commentblock); + +commentblock_location( + unique int id: @commentblock ref, + int loc: @location ref); + +commentblock_binding( + int id: @commentblock ref, + int entity: @element ref, + int bindtype: int ref); /* 0: Parent, 1: Best, 2: Before, 3: After */ + +commentblock_child( + int id: @commentblock ref, + int commentline: @commentline ref, + int index: int ref); + +/* ASP.NET */ + +case @asp_element.kind of + 0=@asp_close_tag +| 1=@asp_code +| 2=@asp_comment +| 3=@asp_data_binding +| 4=@asp_directive +| 5=@asp_open_tag +| 6=@asp_quoted_string +| 7=@asp_text +| 8=@asp_xml_directive; + +@asp_attribute = @asp_code | @asp_data_binding | @asp_quoted_string; + +asp_elements( + unique int id: @asp_element, + int kind: int ref, + int loc: @location ref); + +asp_comment_server(unique int comment: @asp_comment ref); +asp_code_inline(unique int code: @asp_code ref); +asp_directive_attribute( + int directive: @asp_directive ref, + int index: int ref, + string name: string ref, + int value: @asp_quoted_string ref); +asp_directive_name( + unique int directive: @asp_directive ref, + string name: string ref); +asp_element_body( + unique int element: @asp_element ref, + string body: string ref); +asp_tag_attribute( + int tag: @asp_open_tag ref, + int index: int ref, + string name: string ref, + int attribute: @asp_attribute ref); +asp_tag_name( + unique int tag: @asp_open_tag ref, + string name: string ref); +asp_tag_isempty(int tag: @asp_open_tag ref); diff --git a/csharp/ql/lib/upgrades/ea7ad33252e550241975676f09fcc7b0a703deab/semmlecode.csharp.dbscheme b/csharp/ql/lib/upgrades/ea7ad33252e550241975676f09fcc7b0a703deab/semmlecode.csharp.dbscheme new file mode 100644 index 000000000000..3cabc77473cb --- /dev/null +++ b/csharp/ql/lib/upgrades/ea7ad33252e550241975676f09fcc7b0a703deab/semmlecode.csharp.dbscheme @@ -0,0 +1,1505 @@ +/* This is a dummy line to alter the dbscheme, so we can make a database upgrade + * without actually changing any of the dbscheme predicates. It contains a date + * to allow for such updates in the future as well. + * + * 2021-07-14 + * + * DO NOT remove this comment carelessly, since it can revert the dbscheme back to a + * previously seen state (matching a previously seen SHA), which would make the upgrade + * mechanism not work properly. + */ + +/** + * An invocation of the compiler. Note that more than one file may be + * compiled per invocation. For example, this command compiles three + * source files: + * + * csc f1.cs f2.cs f3.cs + * + * The `id` simply identifies the invocation, while `cwd` is the working + * directory from which the compiler was invoked. + */ +compilations( + unique int id : @compilation, + string cwd : string ref +); + +compilation_info( + int id : @compilation ref, + string info_key: string ref, + string info_value: string ref +) + +/** + * The arguments that were passed to the extractor for a compiler + * invocation. If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then typically there will be rows for + * + * num | arg + * --- | --- + * 0 | --compiler + * 1 | *path to compiler* + * 2 | f1.cs + * 3 | f2.cs + * 4 | f3.cs + */ +#keyset[id, num] +compilation_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The expanded arguments that were passed to the extractor for a + * compiler invocation. This is similar to `compilation_args`, but + * for a `@someFile.rsp` argument, it includes the arguments from that + * file, rather than just taking the argument literally. + */ +#keyset[id, num] +compilation_expanded_args( + int id : @compilation ref, + int num : int ref, + string arg : string ref +); + +/** + * The source files that are compiled by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | f1.cs + * 1 | f2.cs + * 2 | f3.cs + */ +#keyset[id, num] +compilation_compiling_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The references used by a compiler invocation. + * If `id` is for the compiler invocation + * + * csc f1.cs f2.cs f3.cs /r:ref1.dll /r:ref2.dll /r:ref3.dll + * + * then there will be rows for + * + * num | arg + * --- | --- + * 0 | ref1.dll + * 1 | ref2.dll + * 2 | ref3.dll + */ +#keyset[id, num] +compilation_referencing_files( + int id : @compilation ref, + int num : int ref, + int file : @file ref +); + +/** + * The time taken by the extractor for a compiler invocation. + * + * For each file `num`, there will be rows for + * + * kind | seconds + * ---- | --- + * 1 | CPU seconds used by the extractor frontend + * 2 | Elapsed seconds during the extractor frontend + * 3 | CPU seconds used by the extractor backend + * 4 | Elapsed seconds during the extractor backend + */ +#keyset[id, num, kind] +compilation_time( + int id : @compilation ref, + int num : int ref, + /* kind: + 1 = frontend_cpu_seconds + 2 = frontend_elapsed_seconds + 3 = extractor_cpu_seconds + 4 = extractor_elapsed_seconds + */ + int kind : int ref, + float seconds : float ref +); + +/** + * An error or warning generated by the extractor. + * The diagnostic message `diagnostic` was generated during compiler + * invocation `compilation`, and is the `file_number_diagnostic_number`th + * message generated while extracting the `file_number`th file of that + * invocation. + */ +#keyset[compilation, file_number, file_number_diagnostic_number] +diagnostic_for( + unique int diagnostic : @diagnostic ref, + int compilation : @compilation ref, + int file_number : int ref, + int file_number_diagnostic_number : int ref +); + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location ref +); + +extractor_messages( + unique int id: @extractor_message, + int severity: int ref, + string origin : string ref, + string text : string ref, + string entity : string ref, + int location: @location ref, + string stack_trace : string ref +); + +/** + * If extraction was successful, then `cpu_seconds` and + * `elapsed_seconds` are the CPU time and elapsed time (respectively) + * that extraction took for compiler invocation `id`. + */ +compilation_finished( + unique int id : @compilation ref, + float cpu_seconds : float ref, + float elapsed_seconds : float ref +); + +compilation_assembly( + unique int id : @compilation ref, + int assembly: @assembly ref +) + +// Populated by the CSV extractor +externalData( + int id: @externalDataElement, + string path: string ref, + int column: int ref, + string value: string ref); + +sourceLocationPrefix( + string prefix: string ref); + +/* + * Overlay support + */ + +/** + * The CLI will automatically emit the tuple `databaseMetadata("isOverlay", "true")`, + * along with an `overlayChangedFiles` tuple for each new/modified/deleted file, + * when building an overlay database, and these can be used by the discard predicates. + */ +databaseMetadata( + string metadataKey : string ref, + string value : string ref +); + +overlayChangedFiles( + string path : string ref +); + +/* + * C# dbscheme + */ + +/** ELEMENTS **/ + +@element = @declaration | @stmt | @expr | @modifier | @attribute | @namespace_declaration + | @using_directive | @type_parameter_constraints | @externalDataElement + | @xmllocatable | @asp_element | @namespace | @preprocessor_directive; + +@declaration = @callable | @generic | @assignable | @namespace; + +@named_element = @namespace | @declaration; + +@declaration_with_accessors = @property | @indexer | @event; + +@assignable = @variable | @assignable_with_accessors | @event; + +@assignable_with_accessors = @property | @indexer; + +@attributable = @assembly | @field | @parameter | @operator | @method | @constructor + | @destructor | @callable_accessor | @value_or_ref_type | @declaration_with_accessors + | @local_function | @lambda_expr; + +/** LOCATIONS, ASEMMBLIES, MODULES, FILES and FOLDERS **/ + +@location = @location_default | @assembly; + +@locatable = @declaration_with_accessors | @callable_accessor | @declaration_or_directive + | @diagnostic | @extractor_message | @preprocessor_directive | @attribute | @type_mention | @type_parameter_constraints + | @declaration_with_accessors | @callable_accessor | @operator | @method + | @constructor | @destructor | @field | @local_variable | @parameter | @stmt | @expr + | @xmllocatable | @commentline | @commentblock | @asp_element + +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +locations_mapped( + unique int id: @location_default ref, + int mapped_to: @location_default ref); + +@sourceline = @file | @callable | @xmllocatable; + +numlines( + int element_id: @sourceline ref, + int num_lines: int ref, + int num_code: int ref, + int num_comment: int ref); + +assemblies( + unique int id: @assembly, + int file: @file ref, + string fullname: string ref, + string name: string ref, + string version: string ref); + +files( + unique int id: @file, + string name: string ref); + +folders( + unique int id: @folder, + string name: string ref); + +@container = @folder | @file ; + +containerparent( + int parent: @container ref, + unique int child: @container ref); + +file_extraction_mode( + unique int file: @file ref, + int mode: int ref + /* 0 = normal, 1 = standalone extractor */ + ); + +/** NAMESPACES **/ + +@type_container = @namespace | @type; + +namespaces( + unique int id: @namespace, + string name: string ref); + +namespace_declarations( + unique int id: @namespace_declaration, + int namespace_id: @namespace ref); + +namespace_declaration_location( + unique int id: @namespace_declaration ref, + int loc: @location ref); + +parent_namespace( + unique int child_id: @type_container ref, + int namespace_id: @namespace ref); + +@declaration_or_directive = @namespace_declaration | @type | @using_directive; + +parent_namespace_declaration( + int child_id: @declaration_or_directive ref, // cannot be unique because of partial classes + int namespace_id: @namespace_declaration ref); + +@using_directive = @using_namespace_directive | @using_static_directive; + +using_global( + unique int id: @using_directive ref +); + +using_namespace_directives( + unique int id: @using_namespace_directive, + int namespace_id: @namespace ref); + +using_static_directives( + unique int id: @using_static_directive, + int type_id: @type_or_ref ref); + +using_directive_location( + unique int id: @using_directive ref, + int loc: @location ref); + +@preprocessor_directive = @pragma_warning | @pragma_checksum | @directive_define | @directive_undefine | @directive_warning + | @directive_error | @directive_nullable | @directive_line | @directive_region | @directive_endregion | @directive_if + | @directive_elif | @directive_else | @directive_endif; + +@conditional_directive = @directive_if | @directive_elif; +@branch_directive = @directive_if | @directive_elif | @directive_else; + +directive_ifs( + unique int id: @directive_if, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref); /* 0: false, 1: true */ + +directive_elifs( + unique int id: @directive_elif, + int branchTaken: int ref, /* 0: false, 1: true */ + int conditionValue: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +directive_elses( + unique int id: @directive_else, + int branchTaken: int ref, /* 0: false, 1: true */ + int parent: @directive_if ref, + int index: int ref); + +#keyset[id, start] +directive_endifs( + unique int id: @directive_endif, + unique int start: @directive_if ref); + +directive_define_symbols( + unique int id: @define_symbol_expr ref, + string name: string ref); + +directive_regions( + unique int id: @directive_region, + string name: string ref); + +#keyset[id, start] +directive_endregions( + unique int id: @directive_endregion, + unique int start: @directive_region ref); + +directive_lines( + unique int id: @directive_line, + int kind: int ref); /* 0: default, 1: hidden, 2: numeric, 3: span */ + +directive_line_value( + unique int id: @directive_line ref, + int line: int ref); + +directive_line_file( + unique int id: @directive_line ref, + int file: @file ref); + +directive_line_offset( + unique int id: @directive_line ref, + int offset: int ref); + +directive_line_span( + unique int id: @directive_line ref, + int startLine: int ref, + int startColumn: int ref, + int endLine: int ref, + int endColumn: int ref); + +directive_nullables( + unique int id: @directive_nullable, + int setting: int ref, /* 0: disable, 1: enable, 2: restore */ + int target: int ref); /* 0: none, 1: annotations, 2: warnings */ + +directive_warnings( + unique int id: @directive_warning, + string message: string ref); + +directive_errors( + unique int id: @directive_error, + string message: string ref); + +directive_undefines( + unique int id: @directive_undefine, + string name: string ref); + +directive_defines( + unique int id: @directive_define, + string name: string ref); + +pragma_checksums( + unique int id: @pragma_checksum, + int file: @file ref, + string guid: string ref, + string bytes: string ref); + +pragma_warnings( + unique int id: @pragma_warning, + int kind: int ref /* 0 = disable, 1 = restore */); + +#keyset[id, index] +pragma_warning_error_codes( + int id: @pragma_warning ref, + string errorCode: string ref, + int index: int ref); + +preprocessor_directive_location( + unique int id: @preprocessor_directive ref, + int loc: @location ref); + +preprocessor_directive_compilation( + int id: @preprocessor_directive ref, + int compilation: @compilation ref); + +preprocessor_directive_active( + unique int id: @preprocessor_directive ref, + int active: int ref); /* 0: false, 1: true */ + +/** TYPES **/ + +types( + unique int id: @type, + int kind: int ref, + string name: string ref); + +case @type.kind of + 1 = @bool_type +| 2 = @char_type +| 3 = @decimal_type +| 4 = @sbyte_type +| 5 = @short_type +| 6 = @int_type +| 7 = @long_type +| 8 = @byte_type +| 9 = @ushort_type +| 10 = @uint_type +| 11 = @ulong_type +| 12 = @float_type +| 13 = @double_type +| 14 = @enum_type +| 15 = @struct_type +| 17 = @class_type +| 19 = @interface_type +| 20 = @delegate_type +| 21 = @null_type +| 22 = @type_parameter +| 23 = @pointer_type +| 24 = @nullable_type +| 25 = @array_type +| 26 = @void_type +| 27 = @int_ptr_type +| 28 = @uint_ptr_type +| 29 = @dynamic_type +| 30 = @arglist_type +| 31 = @unknown_type +| 32 = @tuple_type +| 33 = @function_pointer_type +| 34 = @inline_array_type +| 35 = @extension_type + ; + +@simple_type = @bool_type | @char_type | @integral_type | @floating_point_type | @decimal_type; +@integral_type = @signed_integral_type | @unsigned_integral_type; +@signed_integral_type = @sbyte_type | @short_type | @int_type | @long_type; +@unsigned_integral_type = @byte_type | @ushort_type | @uint_type | @ulong_type; +@floating_point_type = @float_type | @double_type; +@value_type = @simple_type | @enum_type | @struct_type | @nullable_type | @int_ptr_type + | @uint_ptr_type | @tuple_type | @void_type | @inline_array_type; +@ref_type = @class_type | @interface_type | @array_type | @delegate_type | @null_type + | @dynamic_type | @extension_type; +@value_or_ref_type = @value_type | @ref_type; + +typerefs( + unique int id: @typeref, + string name: string ref); + +typeref_type( + int id: @typeref ref, + unique int typeId: @type ref); + +@type_or_ref = @type | @typeref; + +array_element_type( + unique int array: @array_type ref, + int dimension: int ref, + int rank: int ref, + int element: @type_or_ref ref); + +nullable_underlying_type( + unique int nullable: @nullable_type ref, + int underlying: @type_or_ref ref); + +pointer_referent_type( + unique int pointer: @pointer_type ref, + int referent: @type_or_ref ref); + +enum_underlying_type( + unique int enum_id: @enum_type ref, + int underlying_type_id: @type_or_ref ref); + +delegate_return_type( + unique int delegate_id: @delegate_type ref, + int return_type_id: @type_or_ref ref); + +function_pointer_return_type( + unique int function_pointer_id: @function_pointer_type ref, + int return_type_id: @type_or_ref ref); + +extension_receiver_type( + unique int extension: @extension_type ref, + int receiver_type_id: @type_or_ref ref); + +extend( + int sub: @type ref, + int super: @type_or_ref ref); + +anonymous_types( + unique int id: @type ref); + +@interface_or_ref = @interface_type | @typeref; + +implement( + int sub: @type ref, + int super: @type_or_ref ref); + +type_location( + int id: @type ref, + int loc: @location ref); + +tuple_underlying_type( + unique int tuple: @tuple_type ref, + int struct: @type_or_ref ref); + +#keyset[tuple, index] +tuple_element( + int tuple: @tuple_type ref, + int index: int ref, + unique int field: @field ref); + +attributes( + unique int id: @attribute, + int kind: int ref, + int type_id: @type_or_ref ref, + int target: @attributable ref); + +case @attribute.kind of + 0 = @attribute_default +| 1 = @attribute_return +| 2 = @attribute_assembly +| 3 = @attribute_module +; + +attribute_location( + int id: @attribute ref, + int loc: @location ref); + +@type_mention_parent = @element | @type_mention; + +type_mention( + unique int id: @type_mention, + int type_id: @type_or_ref ref, + int parent: @type_mention_parent ref); + +type_mention_location( + unique int id: @type_mention ref, + int loc: @location ref); + +@has_type_annotation = @assignable | @type_parameter | @callable | @expr | @delegate_type | @generic | @function_pointer_type; + +/** + * A direct annotation on an entity, for example `string? x;`. + * + * Annotations: + * 2 = reftype is not annotated "!" + * 3 = reftype is annotated "?" + * 4 = readonly ref type / in parameter + * 5 = ref type parameter, return or local variable + * 6 = out parameter + * + * Note that the annotation depends on the element it annotates. + * @assignable: The annotation is on the type of the assignable, for example the variable type. + * @type_parameter: The annotation is on the reftype constraint + * @callable: The annotation is on the return type + * @array_type: The annotation is on the element type + */ +type_annotation(int id: @has_type_annotation ref, int annotation: int ref); + +nullability(unique int nullability: @nullability, int kind: int ref); + +case @nullability.kind of + 0 = @oblivious +| 1 = @not_annotated +| 2 = @annotated +; + +#keyset[parent, index] +nullability_parent(int nullability: @nullability ref, int index: int ref, int parent: @nullability ref) + +type_nullability(int id: @has_type_annotation ref, int nullability: @nullability ref); + +/** + * The nullable flow state of an expression, as determined by Roslyn. + * 0 = none (default, not populated) + * 1 = not null + * 2 = maybe null + */ +expr_flowstate(unique int id: @expr ref, int state: int ref); + +/** GENERICS **/ + +@generic = @type | @method | @local_function; + +type_parameters( + unique int id: @type_parameter ref, + int index: int ref, + int generic_id: @generic ref, + int variance: int ref /* none = 0, out = 1, in = 2 */); + +#keyset[constructed_id, index] +type_arguments( + int id: @type_or_ref ref, + int index: int ref, + int constructed_id: @generic_or_ref ref); + +@generic_or_ref = @generic | @typeref; + +constructed_generic( + unique int constructed: @generic ref, + int generic: @generic_or_ref ref); + +type_parameter_constraints( + unique int id: @type_parameter_constraints, + int param_id: @type_parameter ref); + +type_parameter_constraints_location( + int id: @type_parameter_constraints ref, + int loc: @location ref); + +general_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int kind: int ref /* class = 1, struct = 2, new = 3 */); + +specific_type_parameter_constraints( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref); + +specific_type_parameter_nullability( + int id: @type_parameter_constraints ref, + int base_id: @type_or_ref ref, + int nullability: @nullability ref); + +/** FUNCTION POINTERS */ + +function_pointer_calling_conventions( + int id: @function_pointer_type ref, + int kind: int ref); + +#keyset[id, index] +has_unmanaged_calling_conventions( + int id: @function_pointer_type ref, + int index: int ref, + int conv_id: @type_or_ref ref); + +/** MODIFIERS */ + +@modifiable = @modifiable_direct | @event_accessor; + +@modifiable_direct = @member | @accessor | @local_function | @anonymous_function_expr; + +modifiers( + unique int id: @modifier, + string name: string ref); + +has_modifiers( + int id: @modifiable_direct ref, + int mod_id: @modifier ref); + +/** MEMBERS **/ + +@member = @method | @constructor | @destructor | @field | @property | @event | @operator | @indexer | @type; + +@named_exprorstmt = @goto_stmt | @labeled_stmt | @expr; + +@virtualizable = @method | @property | @indexer | @event | @operator; + +exprorstmt_name( + unique int parent_id: @named_exprorstmt ref, + string name: string ref); + +nested_types( + unique int id: @type ref, + int declaring_type_id: @type ref, + int unbound_id: @type ref); + +properties( + unique int id: @property, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @property ref); + +property_location( + int id: @property ref, + int loc: @location ref); + +indexers( + unique int id: @indexer, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @indexer ref); + +indexer_location( + int id: @indexer ref, + int loc: @location ref); + +accessors( + unique int id: @accessor, + int kind: int ref, + string name: string ref, + int declaring_member_id: @member ref, + int unbound_id: @accessor ref); + +case @accessor.kind of + 1 = @getter +| 2 = @setter + ; + +init_only_accessors( + unique int id: @accessor ref); + +accessor_location( + int id: @accessor ref, + int loc: @location ref); + +events( + unique int id: @event, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @event ref); + +event_location( + int id: @event ref, + int loc: @location ref); + +event_accessors( + unique int id: @event_accessor, + int kind: int ref, + string name: string ref, + int declaring_event_id: @event ref, + int unbound_id: @event_accessor ref); + +case @event_accessor.kind of + 1 = @add_event_accessor +| 2 = @remove_event_accessor + ; + +event_accessor_location( + int id: @event_accessor ref, + int loc: @location ref); + +operators( + unique int id: @operator, + string name: string ref, + string symbol: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @operator ref); + +operator_location( + int id: @operator ref, + int loc: @location ref); + +constant_value( + int id: @variable ref, + string value: string ref); + +/** CALLABLES **/ + +@callable = @method | @constructor | @destructor | @operator | @callable_accessor | @anonymous_function_expr | @local_function; + +@callable_accessor = @accessor | @event_accessor; + +methods( + unique int id: @method, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @method ref); + +method_location( + int id: @method ref, + int loc: @location ref); + +constructors( + unique int id: @constructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @constructor ref); + +constructor_location( + int id: @constructor ref, + int loc: @location ref); + +destructors( + unique int id: @destructor, + string name: string ref, + int declaring_type_id: @type ref, + int unbound_id: @destructor ref); + +destructor_location( + int id: @destructor ref, + int loc: @location ref); + +overrides( + int id: @callable ref, + int base_id: @callable ref); + +explicitly_implements( + int id: @member ref, + int interface_id: @interface_or_ref ref); + +local_functions( + unique int id: @local_function, + string name: string ref, + int return_type: @type ref, + int unbound_id: @local_function ref); + +local_function_stmts( + unique int fn: @local_function_stmt ref, + int stmt: @local_function ref); + +/** VARIABLES **/ + +@variable = @local_scope_variable | @field; + +@local_scope_variable = @local_variable | @parameter; + +fields( + unique int id: @field, + int kind: int ref, + string name: string ref, + int declaring_type_id: @type ref, + int type_id: @type_or_ref ref, + int unbound_id: @field ref); + +case @field.kind of + 1 = @addressable_field +| 2 = @constant + ; + +field_location( + int id: @field ref, + int loc: @location ref); + +localvars( + unique int id: @local_variable, + int kind: int ref, + string name: string ref, + int implicitly_typed: int ref /* 0 = no, 1 = yes */, + int type_id: @type_or_ref ref, + int parent_id: @local_var_decl_expr ref); + +case @local_variable.kind of + 1 = @addressable_local_variable +| 2 = @local_constant +| 3 = @local_variable_ref + ; + +localvar_location( + unique int id: @local_variable ref, + int loc: @location ref); + +@parameterizable = @callable | @delegate_type | @indexer | @function_pointer_type | @extension_type; + +#keyset[name, parent_id] +#keyset[index, parent_id] +params( + unique int id: @parameter, + string name: string ref, + int type_id: @type_or_ref ref, + int index: int ref, + int mode: int ref, /* value = 0, ref = 1, out = 2, params/array = 3, this = 4, in = 5, ref readonly = 6 */ + int parent_id: @parameterizable ref, + int unbound_id: @parameter ref); + +param_location( + int id: @parameter ref, + int loc: @location ref); + +@has_scoped_annotation = @local_scope_variable + +scoped_annotation( + int id: @has_scoped_annotation ref, + int kind: int ref // scoped ref = 1, scoped value = 2 + ); + +/** STATEMENTS **/ + +@exprorstmt_parent = @control_flow_element | @top_level_exprorstmt_parent; + +statements( + unique int id: @stmt, + int kind: int ref); + +#keyset[index, parent] +stmt_parent( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_stmt_parent = @callable; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +stmt_parent_top_level( + unique int stmt: @stmt ref, + int index: int ref, + int parent: @top_level_stmt_parent ref); + +case @stmt.kind of + 1 = @block_stmt +| 2 = @expr_stmt +| 3 = @if_stmt +| 4 = @switch_stmt +| 5 = @while_stmt +| 6 = @do_stmt +| 7 = @for_stmt +| 8 = @foreach_stmt +| 9 = @break_stmt +| 10 = @continue_stmt +| 11 = @goto_stmt +| 12 = @goto_case_stmt +| 13 = @goto_default_stmt +| 14 = @throw_stmt +| 15 = @return_stmt +| 16 = @yield_stmt +| 17 = @try_stmt +| 18 = @checked_stmt +| 19 = @unchecked_stmt +| 20 = @lock_stmt +| 21 = @using_block_stmt +| 22 = @var_decl_stmt +| 23 = @const_decl_stmt +| 24 = @empty_stmt +| 25 = @unsafe_stmt +| 26 = @fixed_stmt +| 27 = @label_stmt +| 28 = @catch +| 29 = @case_stmt +| 30 = @local_function_stmt +| 31 = @using_decl_stmt + ; + +@using_stmt = @using_block_stmt | @using_decl_stmt; + +@labeled_stmt = @label_stmt | @case; + +@decl_stmt = @var_decl_stmt | @const_decl_stmt | @using_decl_stmt; + +@cond_stmt = @if_stmt | @switch_stmt; + +@loop_stmt = @while_stmt | @do_stmt | @for_stmt | @foreach_stmt; + +@jump_stmt = @break_stmt | @goto_any_stmt | @continue_stmt | @throw_stmt | @return_stmt + | @yield_stmt; + +@goto_any_stmt = @goto_default_stmt | @goto_case_stmt | @goto_stmt; + + +stmt_location( + unique int id: @stmt ref, + int loc: @location ref); + +catch_type( + unique int catch_id: @catch ref, + int type_id: @type_or_ref ref, + int kind: int ref /* explicit = 1, implicit = 2 */); + +foreach_stmt_info( + unique int id: @foreach_stmt ref, + int kind: int ref /* non-async = 1, async = 2 */); + +@foreach_symbol = @method | @property | @type_or_ref; + +#keyset[id, kind] +foreach_stmt_desugar( + int id: @foreach_stmt ref, + int symbol: @foreach_symbol ref, + int kind: int ref /* GetEnumeratorMethod = 1, CurrentProperty = 2, MoveNextMethod = 3, DisposeMethod = 4, ElementType = 5 */); + +/** EXPRESSIONS **/ + +expressions( + unique int id: @expr, + int kind: int ref, + int type_id: @type_or_ref ref); + +#keyset[index, parent] +expr_parent( + unique int expr: @expr ref, + int index: int ref, + int parent: @control_flow_element ref); + +@top_level_expr_parent = @attribute | @field | @property | @indexer | @parameter | @directive_if | @directive_elif; + +@top_level_exprorstmt_parent = @top_level_expr_parent | @top_level_stmt_parent; + +// [index, parent] is not a keyset because the same parent may be compiled multiple times +expr_parent_top_level( + unique int expr: @expr ref, + int index: int ref, + int parent: @top_level_exprorstmt_parent ref); + +case @expr.kind of +/* literal */ + 1 = @bool_literal_expr +| 2 = @char_literal_expr +| 3 = @decimal_literal_expr +| 4 = @int_literal_expr +| 5 = @long_literal_expr +| 6 = @uint_literal_expr +| 7 = @ulong_literal_expr +| 8 = @float_literal_expr +| 9 = @double_literal_expr +| 10 = @utf16_string_literal_expr +| 11 = @null_literal_expr +/* primary & unary */ +| 12 = @this_access_expr +| 13 = @base_access_expr +| 14 = @local_variable_access_expr +| 15 = @parameter_access_expr +| 16 = @field_access_expr +| 17 = @property_access_expr +| 18 = @method_access_expr +| 19 = @event_access_expr +| 20 = @indexer_access_expr +| 21 = @array_access_expr +| 22 = @type_access_expr +| 23 = @typeof_expr +| 24 = @method_invocation_expr +| 25 = @delegate_invocation_expr +| 26 = @operator_invocation_expr +| 27 = @cast_expr +| 28 = @object_creation_expr +| 29 = @explicit_delegate_creation_expr +| 30 = @implicit_delegate_creation_expr +| 31 = @array_creation_expr +| 32 = @default_expr +| 33 = @plus_expr +| 34 = @minus_expr +| 35 = @bit_not_expr +| 36 = @log_not_expr +| 37 = @post_incr_expr +| 38 = @post_decr_expr +| 39 = @pre_incr_expr +| 40 = @pre_decr_expr +/* multiplicative */ +| 41 = @mul_expr +| 42 = @div_expr +| 43 = @rem_expr +/* additive */ +| 44 = @add_expr +| 45 = @sub_expr +/* shift */ +| 46 = @lshift_expr +| 47 = @rshift_expr +/* relational */ +| 48 = @lt_expr +| 49 = @gt_expr +| 50 = @le_expr +| 51 = @ge_expr +/* equality */ +| 52 = @eq_expr +| 53 = @ne_expr +/* logical */ +| 54 = @bit_and_expr +| 55 = @bit_xor_expr +| 56 = @bit_or_expr +| 57 = @log_and_expr +| 58 = @log_or_expr +/* type testing */ +| 59 = @is_expr +| 60 = @as_expr +/* null coalescing */ +| 61 = @null_coalescing_expr +/* conditional */ +| 62 = @conditional_expr +/* assignment */ +| 63 = @simple_assign_expr +| 64 = @assign_add_expr +| 65 = @assign_sub_expr +| 66 = @assign_mul_expr +| 67 = @assign_div_expr +| 68 = @assign_rem_expr +| 69 = @assign_and_expr +| 70 = @assign_xor_expr +| 71 = @assign_or_expr +| 72 = @assign_lshift_expr +| 73 = @assign_rshift_expr +/* more */ +| 74 = @object_init_expr +| 75 = @collection_init_expr +| 76 = @array_init_expr +| 77 = @checked_expr +| 78 = @unchecked_expr +| 79 = @constructor_init_expr +| 80 = @add_event_expr +| 81 = @remove_event_expr +| 82 = @par_expr +| 83 = @local_var_decl_expr +| 84 = @lambda_expr +| 85 = @anonymous_method_expr +| 86 = @namespace_expr +/* dynamic */ +| 92 = @dynamic_element_access_expr +| 93 = @dynamic_member_access_expr +/* unsafe */ +| 100 = @pointer_indirection_expr +| 101 = @address_of_expr +| 102 = @sizeof_expr +/* async */ +| 103 = @await_expr +/* C# 6.0 */ +| 104 = @nameof_expr +| 105 = @interpolated_string_expr +| 106 = @unknown_expr +/* C# 7.0 */ +| 107 = @throw_expr +| 108 = @tuple_expr +| 109 = @local_function_invocation_expr +| 110 = @ref_expr +| 111 = @discard_expr +/* C# 8.0 */ +| 112 = @range_expr +| 113 = @index_expr +| 114 = @switch_expr +| 115 = @recursive_pattern_expr +| 116 = @property_pattern_expr +| 117 = @positional_pattern_expr +| 118 = @switch_case_expr +| 119 = @assign_coalesce_expr +| 120 = @suppress_nullable_warning_expr +| 121 = @namespace_access_expr +/* C# 9.0 */ +| 122 = @lt_pattern_expr +| 123 = @gt_pattern_expr +| 124 = @le_pattern_expr +| 125 = @ge_pattern_expr +| 126 = @not_pattern_expr +| 127 = @and_pattern_expr +| 128 = @or_pattern_expr +| 129 = @function_pointer_invocation_expr +| 130 = @with_expr +/* C# 11.0 */ +| 131 = @list_pattern_expr +| 132 = @slice_pattern_expr +| 133 = @urshift_expr +| 134 = @assign_urshift_expr +| 135 = @utf8_string_literal_expr +/* C# 12.0 */ +| 136 = @collection_expr +| 137 = @spread_element_expr +| 138 = @interpolated_string_insert_expr +/* Preprocessor */ +| 999 = @define_symbol_expr +; + +@switch = @switch_stmt | @switch_expr; +@case = @case_stmt | @switch_case_expr; +@pattern_match = @case | @is_expr; +@unary_pattern_expr = @not_pattern_expr; +@relational_pattern_expr = @gt_pattern_expr | @lt_pattern_expr | @ge_pattern_expr | @le_pattern_expr; +@binary_pattern_expr = @and_pattern_expr | @or_pattern_expr; + +@integer_literal_expr = @int_literal_expr | @long_literal_expr | @uint_literal_expr | @ulong_literal_expr; +@real_literal_expr = @float_literal_expr | @double_literal_expr | @decimal_literal_expr; +@string_literal_expr = @utf16_string_literal_expr | @utf8_string_literal_expr; +@literal_expr = @bool_literal_expr | @char_literal_expr | @integer_literal_expr | @real_literal_expr + | @string_literal_expr | @null_literal_expr; + +@assign_expr = @simple_assign_expr | @assign_op_expr | @local_var_decl_expr; +@assign_op_call_expr = @assign_arith_expr | @assign_bitwise_expr +@assign_op_expr = @assign_op_call_expr | @assign_event_expr | @assign_coalesce_expr; +@assign_event_expr = @add_event_expr | @remove_event_expr; + +@add_operation = @add_expr | @assign_add_expr; +@sub_operation = @sub_expr | @assign_sub_expr; +@mul_operation = @mul_expr | @assign_mul_expr; +@div_operation = @div_expr | @assign_div_expr; +@rem_operation = @rem_expr | @assign_rem_expr; +@and_operation = @bit_and_expr | @assign_and_expr; +@xor_operation = @bit_xor_expr | @assign_xor_expr; +@or_operation = @bit_or_expr | @assign_or_expr; +@lshift_operation = @lshift_expr | @assign_lshift_expr; +@rshift_operation = @rshift_expr | @assign_rshift_expr; +@urshift_operation = @urshift_expr | @assign_urshift_expr; +@null_coalescing_operation = @null_coalescing_expr | @assign_coalesce_expr; + +@assign_arith_expr = @assign_add_expr | @assign_sub_expr | @assign_mul_expr | @assign_div_expr + | @assign_rem_expr +@assign_bitwise_expr = @assign_and_expr | @assign_or_expr | @assign_xor_expr + | @assign_lshift_expr | @assign_rshift_expr | @assign_urshift_expr; + +@member_access_expr = @field_access_expr | @property_access_expr | @indexer_access_expr | @event_access_expr + | @method_access_expr | @type_access_expr | @dynamic_member_access_expr; +@access_expr = @member_access_expr | @this_access_expr | @base_access_expr | @assignable_access_expr | @namespace_access_expr; +@element_access_expr = @indexer_access_expr | @array_access_expr | @dynamic_element_access_expr; + +@local_variable_access = @local_variable_access_expr | @local_var_decl_expr; +@local_scope_variable_access_expr = @parameter_access_expr | @local_variable_access; +@variable_access_expr = @local_scope_variable_access_expr | @field_access_expr; + +@assignable_access_expr = @variable_access_expr | @property_access_expr | @element_access_expr + | @event_access_expr | @dynamic_member_access_expr; + +@objectorcollection_init_expr = @object_init_expr | @collection_init_expr; + +@delegate_creation_expr = @explicit_delegate_creation_expr | @implicit_delegate_creation_expr; + +@bin_arith_op_expr = @mul_expr | @div_expr | @rem_expr | @add_expr | @sub_expr; +@incr_op_expr = @pre_incr_expr | @post_incr_expr; +@decr_op_expr = @pre_decr_expr | @post_decr_expr; +@mut_op_expr = @incr_op_expr | @decr_op_expr; +@un_arith_op_expr = @plus_expr | @minus_expr | @mut_op_expr; +@arith_op_expr = @bin_arith_op_expr | @un_arith_op_expr; + +@ternary_log_op_expr = @conditional_expr; +@bin_log_op_expr = @log_and_expr | @log_or_expr | @null_coalescing_expr; +@un_log_op_expr = @log_not_expr; +@log_expr = @un_log_op_expr | @bin_log_op_expr | @ternary_log_op_expr; + +@bin_bit_op_expr = @bit_and_expr | @bit_or_expr | @bit_xor_expr | @lshift_expr + | @rshift_expr | @urshift_expr; +@un_bit_op_expr = @bit_not_expr; +@bit_expr = @un_bit_op_expr | @bin_bit_op_expr; + +@equality_op_expr = @eq_expr | @ne_expr; +@rel_op_expr = @gt_expr | @lt_expr| @ge_expr | @le_expr; +@comp_expr = @equality_op_expr | @rel_op_expr; + +@op_expr = @un_op | @bin_op | @ternary_op; + +@ternary_op = @ternary_log_op_expr; +@bin_op = @assign_expr | @bin_arith_op_expr | @bin_log_op_expr | @bin_bit_op_expr | @comp_expr; +@un_op = @un_arith_op_expr | @un_log_op_expr | @un_bit_op_expr | @sizeof_expr + | @pointer_indirection_expr | @address_of_expr; + +@anonymous_function_expr = @lambda_expr | @anonymous_method_expr; + +@op_invoke_expr = @operator_invocation_expr | @assign_op_call_expr +@call = @method_invocation_expr | @constructor_init_expr | @op_invoke_expr + | @delegate_invocation_expr | @object_creation_expr | @call_access_expr + | @local_function_invocation_expr | @function_pointer_invocation_expr; + +@call_access_expr = @property_access_expr | @event_access_expr | @indexer_access_expr; + +@late_bindable_expr = @dynamic_element_access_expr | @dynamic_member_access_expr + | @object_creation_expr | @method_invocation_expr | @op_invoke_expr; + +@throw_element = @throw_expr | @throw_stmt; + +@implicitly_typeable_object_creation_expr = @object_creation_expr | @explicit_delegate_creation_expr; + +implicitly_typed_array_creation( + unique int id: @array_creation_expr ref); + +explicitly_sized_array_creation( + unique int id: @array_creation_expr ref); + +stackalloc_array_creation( + unique int id: @array_creation_expr ref); + +implicitly_typed_object_creation( + unique int id: @implicitly_typeable_object_creation_expr ref); + +mutator_invocation_mode( + unique int id: @operator_invocation_expr ref, + int mode: int ref /* prefix = 1, postfix = 2*/); + +expr_value( + unique int id: @expr ref, + string value: string ref); + +expr_call( + unique int caller_id: @expr ref, + int target_id: @callable ref); + +expr_access( + unique int accesser_id: @access_expr ref, + int target_id: @accessible ref); + +@accessible = @method | @assignable | @local_function | @namespace; + +expr_location( + unique int id: @expr ref, + int loc: @location ref); + +dynamic_member_name( + unique int id: @late_bindable_expr ref, + string name: string ref); + +@qualifiable_expr = @member_access_expr + | @method_invocation_expr + | @element_access_expr + | @assign_op_call_expr; + +conditional_access( + unique int id: @qualifiable_expr ref); + +expr_argument( + unique int id: @expr ref, + int mode: int ref); + /* mode is the same as params: value = 0, ref = 1, out = 2 */ + +expr_argument_name( + unique int id: @expr ref, + string name: string ref); + +lambda_expr_return_type( + unique int id: @lambda_expr ref, + int type_id: @type_or_ref ref); + +/* Compiler generated */ + +compiler_generated(unique int id: @element ref); + +/** CONTROL/DATA FLOW **/ + +@control_flow_element = @stmt | @expr | @parameter; + +/* XML Files */ + +xmlEncoding ( + unique int id: @file ref, + string encoding: string ref); + +xmlDTDs( + unique int id: @xmldtd, + string root: string ref, + string publicId: string ref, + string systemId: string ref, + int fileid: @file ref); + +xmlElements( + unique int id: @xmlelement, + string name: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int fileid: @file ref); + +xmlAttrs( + unique int id: @xmlattribute, + int elementid: @xmlelement ref, + string name: string ref, + string value: string ref, + int idx: int ref, + int fileid: @file ref); + +xmlNs( + int id: @xmlnamespace, + string prefixName: string ref, + string URI: string ref, + int fileid: @file ref); + +xmlHasNs( + int elementId: @xmlnamespaceable ref, + int nsId: @xmlnamespace ref, + int fileid: @file ref); + +xmlComments( + unique int id: @xmlcomment, + string text: string ref, + int parentid: @xmlparent ref, + int fileid: @file ref); + +xmlChars( + unique int id: @xmlcharacters, + string text: string ref, + int parentid: @xmlparent ref, + int idx: int ref, + int isCDATA: int ref, + int fileid: @file ref); + +@xmlparent = @file | @xmlelement; +@xmlnamespaceable = @xmlelement | @xmlattribute; + +xmllocations( + int xmlElement: @xmllocatable ref, + int location: @location_default ref); + +@xmllocatable = @xmlcharacters | @xmlelement | @xmlcomment | @xmlattribute | @xmldtd | @file | @xmlnamespace; + +/* Comments */ + +commentline( + unique int id: @commentline, + int kind: int ref, + string text: string ref, + string rawtext: string ref); + +case @commentline.kind of + 0 = @singlelinecomment +| 1 = @xmldoccomment +| 2 = @multilinecomment; + +commentline_location( + unique int id: @commentline ref, + int loc: @location ref); + +commentblock( + unique int id : @commentblock); + +commentblock_location( + unique int id: @commentblock ref, + int loc: @location ref); + +commentblock_binding( + int id: @commentblock ref, + int entity: @element ref, + int bindtype: int ref); /* 0: Parent, 1: Best, 2: Before, 3: After */ + +commentblock_child( + int id: @commentblock ref, + int commentline: @commentline ref, + int index: int ref); + +/* ASP.NET */ + +case @asp_element.kind of + 0=@asp_close_tag +| 1=@asp_code +| 2=@asp_comment +| 3=@asp_data_binding +| 4=@asp_directive +| 5=@asp_open_tag +| 6=@asp_quoted_string +| 7=@asp_text +| 8=@asp_xml_directive; + +@asp_attribute = @asp_code | @asp_data_binding | @asp_quoted_string; + +asp_elements( + unique int id: @asp_element, + int kind: int ref, + int loc: @location ref); + +asp_comment_server(unique int comment: @asp_comment ref); +asp_code_inline(unique int code: @asp_code ref); +asp_directive_attribute( + int directive: @asp_directive ref, + int index: int ref, + string name: string ref, + int value: @asp_quoted_string ref); +asp_directive_name( + unique int directive: @asp_directive ref, + string name: string ref); +asp_element_body( + unique int element: @asp_element ref, + string body: string ref); +asp_tag_attribute( + int tag: @asp_open_tag ref, + int index: int ref, + string name: string ref, + int attribute: @asp_attribute ref); +asp_tag_name( + unique int tag: @asp_open_tag ref, + string name: string ref); +asp_tag_isempty(int tag: @asp_open_tag ref); diff --git a/csharp/ql/lib/upgrades/ea7ad33252e550241975676f09fcc7b0a703deab/upgrade.properties b/csharp/ql/lib/upgrades/ea7ad33252e550241975676f09fcc7b0a703deab/upgrade.properties new file mode 100644 index 000000000000..cd2dfa3d4d5d --- /dev/null +++ b/csharp/ql/lib/upgrades/ea7ad33252e550241975676f09fcc7b0a703deab/upgrade.properties @@ -0,0 +1,2 @@ +description: Add `@parameter` to `@control_flow_element` +compatibility: full diff --git a/csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql b/csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql index c1eb996863c5..295bdba1f7af 100644 --- a/csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql +++ b/csharp/ql/src/Bad Practices/Control-Flow/ConstantCondition.ql @@ -16,12 +16,11 @@ import csharp import semmle.code.csharp.commons.Assertions import semmle.code.csharp.commons.Constants -import semmle.code.csharp.controlflow.BasicBlocks import semmle.code.csharp.controlflow.Guards as Guards import codeql.controlflow.queries.ConstantCondition as ConstCond -module ConstCondInput implements ConstCond::InputSig { - class SsaDefinition = Ssa::Definition; +module ConstCondInput implements ConstCond::InputSig { + class SsaDefinition = Ssa::SsaDefinition; class GuardValue = Guards::GuardValue; diff --git a/csharp/ql/src/CHANGELOG.md b/csharp/ql/src/CHANGELOG.md index fc0f8c58d794..8c4388fe2bb6 100644 --- a/csharp/ql/src/CHANGELOG.md +++ b/csharp/ql/src/CHANGELOG.md @@ -1,3 +1,20 @@ +## 1.7.3 + +No user-facing changes. + +## 1.7.2 + +No user-facing changes. + +## 1.7.1 + +### Minor Analysis Improvements + +* The query `cs/useless-tostring-call` has been updated to avoid false + positive results in calls to `StringBuilder.AppendLine` and calls of + the form `base.ToString()`. Moreover, the alert message has been + made more precise. + ## 1.7.0 ### Query Metadata Changes diff --git a/csharp/ql/src/Concurrency/UnsynchronizedStaticAccess.ql b/csharp/ql/src/Concurrency/UnsynchronizedStaticAccess.ql index 150ae78ae090..340663c6701f 100644 --- a/csharp/ql/src/Concurrency/UnsynchronizedStaticAccess.ql +++ b/csharp/ql/src/Concurrency/UnsynchronizedStaticAccess.ql @@ -22,22 +22,32 @@ predicate correctlySynchronized(CollectionMember c, Expr access) { ( c.getType().(ValueOrRefType).getABaseType*().getName().matches("Concurrent%") or access.getEnclosingStmt().getParent*() instanceof LockStmt or - any(LockingCall call).getAControlFlowNode().getASuccessor+() = access.getAControlFlowNode() + any(LockingCall call).getControlFlowNode().getASuccessor+() = access.getControlFlowNode() ) } -ControlFlow::Node unlockedReachable(Callable a) { - result = a.getEntryPoint() +predicate firstLockingCallInBlock(BasicBlock b, int i) { + i = min(int j | b.getNode(j).asExpr() instanceof LockingCall) +} + +BasicBlock unlockedReachable(Callable a) { + result = a.getEntryPoint().getBasicBlock() or - exists(ControlFlow::Node mid | mid = unlockedReachable(a) | - not mid.getAstNode() instanceof LockingCall and + exists(BasicBlock mid | mid = unlockedReachable(a) | + not firstLockingCallInBlock(mid, _) and result = mid.getASuccessor() ) } predicate unlockedCalls(Callable a, Callable b) { - exists(Call call | - call.getAControlFlowNode() = unlockedReachable(a) and + exists(Call call, BasicBlock callBlock, int j | + call.getControlFlowNode() = callBlock.getNode(j) and + callBlock = unlockedReachable(a) and + ( + exists(int i | j <= i and firstLockingCallInBlock(callBlock, i)) + or + not firstLockingCallInBlock(callBlock, _) + ) and call.getARuntimeTarget() = b and not call.getParent*() instanceof LockStmt ) diff --git a/csharp/ql/src/Dead Code/DeadStoreOfLocal.ql b/csharp/ql/src/Dead Code/DeadStoreOfLocal.ql index 59816a18b3fb..cf57707608b4 100644 --- a/csharp/ql/src/Dead Code/DeadStoreOfLocal.ql +++ b/csharp/ql/src/Dead Code/DeadStoreOfLocal.ql @@ -92,7 +92,7 @@ class RelevantDefinition extends AssignableDefinition { private predicate isMaybeLive() { exists(LocalVariable v | v = this.getTarget() | // SSA definitions are only created for live variables - this = any(Ssa::ExplicitDefinition ssaDef).getADefinition() + this = any(SsaExplicitWrite ssaDef).getDefinition() or mayEscape(v) or @@ -131,7 +131,7 @@ class RelevantDefinition extends AssignableDefinition { /** Holds if this definition is dead and we want to report it. */ predicate isDead() { // Ensure that the definition is not in dead code - exists(this.getExpr().getAControlFlowNode()) and + exists(this.getExpr().getControlFlowNode()) and not this.isMaybeLive() and // Allow dead initializer assignments, such as `string s = string.Empty`, but only // if the initializer expression assigns a default-like value, and there exists another diff --git a/csharp/ql/src/Dead Code/NonAssignedFields.ql b/csharp/ql/src/Dead Code/NonAssignedFields.ql index 83aa889b77c7..b9e868097493 100644 --- a/csharp/ql/src/Dead Code/NonAssignedFields.ql +++ b/csharp/ql/src/Dead Code/NonAssignedFields.ql @@ -84,9 +84,9 @@ where not f.getDeclaringType() instanceof Enum and not f.getType() instanceof Struct and not exists(Assignment ae, Field g | - ae.getLValue().(FieldAccess).getTarget() = g and + ae.getLeftOperand().(FieldAccess).getTarget() = g and g.getUnboundDeclaration() = f and - not ae.getRValue() instanceof NullLiteral + not ae.getRightOperand() instanceof NullLiteral ) and not exists(MethodCall mc, int i, Field g | exists(Parameter p | mc.getTarget().getParameter(i) = p | p.isOut() or p.isRef()) and @@ -101,7 +101,7 @@ where not init instanceof NullLiteral ) and not exists(AssignOperation ua, Field g | - ua.getLValue().(FieldAccess).getTarget() = g and + ua.getLeftOperand().(FieldAccess).getTarget() = g and g.getUnboundDeclaration() = f ) and not exists(MutatorOperation op | diff --git a/csharp/ql/src/Language Abuse/ForeachCapture.ql b/csharp/ql/src/Language Abuse/ForeachCapture.ql index 03f1f99a044c..2ed24b42eba9 100644 --- a/csharp/ql/src/Language Abuse/ForeachCapture.ql +++ b/csharp/ql/src/Language Abuse/ForeachCapture.ql @@ -60,16 +60,16 @@ module LambdaDataFlow { } Element getAssignmentTarget(Expr e) { - exists(Assignment a | a.getRValue() = e | - result = a.getLValue().(PropertyAccess).getTarget() or - result = a.getLValue().(FieldAccess).getTarget() or - result = a.getLValue().(LocalVariableAccess).getTarget() or - result = a.getLValue().(EventAccess).getTarget() + exists(Assignment a | a.getRightOperand() = e | + result = a.getLeftOperand().(PropertyAccess).getTarget() or + result = a.getLeftOperand().(FieldAccess).getTarget() or + result = a.getLeftOperand().(LocalVariableAccess).getTarget() or + result = a.getLeftOperand().(EventAccess).getTarget() ) or exists(AddEventExpr aee | - e = aee.getRValue() and - result = aee.getLValue().getTarget() + e = aee.getRightOperand() and + result = aee.getLeftOperand().getTarget() ) or result = getCollectionAssignmentTarget(e) @@ -97,8 +97,8 @@ Element getCollectionAssignmentTarget(Expr e) { // Store values using indexer exists(IndexerAccess ia, AssignExpr ae | ia.getQualifier() = result.(Variable).getAnAccess() and - ia = ae.getLValue() and - e = ae.getRValue() + ia = ae.getLeftOperand() and + e = ae.getRightOperand() ) } diff --git a/csharp/ql/src/Language Abuse/MissedTernaryOpportunity.ql b/csharp/ql/src/Language Abuse/MissedTernaryOpportunity.ql index bd7492b8583e..01d6baa95732 100644 --- a/csharp/ql/src/Language Abuse/MissedTernaryOpportunity.ql +++ b/csharp/ql/src/Language Abuse/MissedTernaryOpportunity.ql @@ -15,7 +15,7 @@ import csharp import semmle.code.csharp.commons.StructuralComparison private Expr getAssignedExpr(Stmt stmt) { - result = stmt.stripSingletonBlocks().(ExprStmt).getExpr().(AssignExpr).getLValue() + result = stmt.stripSingletonBlocks().(ExprStmt).getExpr().(AssignExpr).getLeftOperand() } from IfStmt is, string what diff --git a/csharp/ql/src/Likely Bugs/BadCheckOdd.ql b/csharp/ql/src/Likely Bugs/BadCheckOdd.ql index 34ae4b632aec..72924f9103d8 100644 --- a/csharp/ql/src/Likely Bugs/BadCheckOdd.ql +++ b/csharp/ql/src/Likely Bugs/BadCheckOdd.ql @@ -13,7 +13,7 @@ import csharp predicate isDefinitelyPositive(Expr e) { - e.getValue().toInt() >= 0 or + e.getIntValue() >= 0 or e.(PropertyAccess).getTarget().hasName("Length") or e.(MethodCall).getTarget().hasUndecoratedName("Count") } @@ -23,12 +23,12 @@ where t.getLeftOperand() = lhs and t.getRightOperand() = rhs and not isDefinitelyPositive(lhs.getLeftOperand().stripCasts()) and - lhs.getRightOperand().(IntegerLiteral).getValue() = "2" and + lhs.getRightOperand().(IntegerLiteral).getIntValue() = 2 and ( - t instanceof EQExpr and rhs.getValue() = "1" and parity = "oddness" + t instanceof EQExpr and rhs.getIntValue() = 1 and parity = "oddness" or - t instanceof NEExpr and rhs.getValue() = "1" and parity = "evenness" + t instanceof NEExpr and rhs.getIntValue() = 1 and parity = "evenness" or - t instanceof GTExpr and rhs.getValue() = "0" and parity = "oddness" + t instanceof GTExpr and rhs.getIntValue() = 0 and parity = "oddness" ) select t, "Possibly invalid test for " + parity + ". This will fail for negative numbers." diff --git a/csharp/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql b/csharp/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql index 5fcb140e6791..046099213cc6 100644 --- a/csharp/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql +++ b/csharp/ql/src/Likely Bugs/Collections/WriteOnlyContainer.ql @@ -23,9 +23,10 @@ where ) and forex(Access a | a = v.getAnAccess() | a = any(ModifierMethodCall m).getQualifier() or - a = any(AssignExpr ass | ass.getRValue() instanceof ObjectCreation).getLValue() or + a = any(AssignExpr ass | ass.getRightOperand() instanceof ObjectCreation).getLeftOperand() or a = - any(LocalVariableDeclAndInitExpr ass | ass.getRValue() instanceof ObjectCreation).getLValue() + any(LocalVariableDeclAndInitExpr ass | ass.getRightOperand() instanceof ObjectCreation) + .getLeftOperand() ) and not v = any(ForeachStmt fs).getVariable() and not v = any(BindingPatternExpr vpe).getVariableDeclExpr().getVariable() and diff --git a/csharp/ql/src/Likely Bugs/Dynamic/BadDynamicCall.ql b/csharp/ql/src/Likely Bugs/Dynamic/BadDynamicCall.ql index 75f152b38de1..afb44727e34f 100644 --- a/csharp/ql/src/Likely Bugs/Dynamic/BadDynamicCall.ql +++ b/csharp/ql/src/Likely Bugs/Dynamic/BadDynamicCall.ql @@ -36,17 +36,16 @@ abstract class BadDynamicCall extends DynamicExpr { } private Type possibleTypeForRelevantSource(Variable v, int i, Expr source) { - exists(AssignableRead read, Ssa::Definition ssaDef, Ssa::ExplicitDefinition ultimateSsaDef | + exists(AssignableRead read, SsaDefinition ssaDef, SsaExplicitWrite ultimateSsaDef | read = this.getARelevantVariableAccess(i) and v = read.getTarget() and result = source.getType() and read = ssaDef.getARead() and ultimateSsaDef = ssaDef.getAnUltimateDefinition() | - ultimateSsaDef.getADefinition() = - any(AssignableDefinition def | source = def.getSource().stripImplicit()) + ultimateSsaDef.getValue().stripImplicit() = source or - ultimateSsaDef.getADefinition() = + ultimateSsaDef.getDefinition() = any(AssignableDefinitions::ImplicitParameterDefinition p | source = p.getParameter().getAnAssignedValue().stripImplicit() ) diff --git a/csharp/ql/src/Likely Bugs/MishandlingJapaneseEra.ql b/csharp/ql/src/Likely Bugs/MishandlingJapaneseEra.ql index c8df36bf7bf2..3e54a3a00dbd 100644 --- a/csharp/ql/src/Likely Bugs/MishandlingJapaneseEra.ql +++ b/csharp/ql/src/Likely Bugs/MishandlingJapaneseEra.ql @@ -27,8 +27,8 @@ predicate isExactEraStartDateCreation(ObjectCreation cr) { cr.getType().hasFullyQualifiedName("System", "DateTime") or cr.getType().hasFullyQualifiedName("System", "DateTimeOffset") ) and - isEraStart(cr.getArgument(0).getValue().toInt(), cr.getArgument(1).getValue().toInt(), - cr.getArgument(2).getValue().toInt()) + isEraStart(cr.getArgument(0).getIntValue(), cr.getArgument(1).getIntValue(), + cr.getArgument(2).getIntValue()) } predicate isDateFromJapaneseCalendarToDateTime(MethodCall mc) { @@ -44,7 +44,7 @@ predicate isDateFromJapaneseCalendarToDateTime(MethodCall mc) { mc.getNumberOfArguments() = 7 // implicitly current era or mc.getNumberOfArguments() = 8 and - mc.getArgument(7).getValue() = "0" + mc.getArgument(7).getIntValue() = 0 ) // explicitly current era } diff --git a/csharp/ql/src/Likely Bugs/NestedLoopsSameVariable.ql b/csharp/ql/src/Likely Bugs/NestedLoopsSameVariable.ql index 0831eb561997..d616c2377c3f 100644 --- a/csharp/ql/src/Likely Bugs/NestedLoopsSameVariable.ql +++ b/csharp/ql/src/Likely Bugs/NestedLoopsSameVariable.ql @@ -80,21 +80,20 @@ class NestedForLoopSameVariable extends ForStmt { } /** Finds elements inside the outer loop that are no longer guarded by the loop invariant. */ - private ControlFlow::Node getAnUnguardedNode() { + private ControlFlowNode getAnUnguardedNode() { hasChild(this.getOuterForStmt().getBody(), result.getAstNode()) and ( - result = - this.getCondition().(ControlFlowElement).getAControlFlowExitNode().getAFalseSuccessor() + result.isAfterFalse(this.getCondition()) or - exists(ControlFlow::Node mid | mid = this.getAnUnguardedNode() | + exists(ControlFlowNode mid | mid = this.getAnUnguardedNode() | mid.getASuccessor() = result and - not exists(this.getAComparisonTest(result.getAstNode())) + not exists(this.getAComparisonTest(result.asExpr())) ) ) } private VariableAccess getAnUnguardedAccess() { - result = this.getAnUnguardedNode().getAstNode() and + result = this.getAnUnguardedNode().asExpr() and result.getTarget() = iteration } } diff --git a/csharp/ql/src/Likely Bugs/PossibleLossOfPrecision.ql b/csharp/ql/src/Likely Bugs/PossibleLossOfPrecision.ql index 8b719bb92a57..1c41d24fb3c1 100644 --- a/csharp/ql/src/Likely Bugs/PossibleLossOfPrecision.ql +++ b/csharp/ql/src/Likely Bugs/PossibleLossOfPrecision.ql @@ -40,8 +40,8 @@ predicate convertedToFloatOrDecimal(Expr e, Type t) { /** Holds if `div` is an exact integer division. */ predicate exactDivision(DivExpr div) { exists(int numerator, int denominator | - numerator = div.getNumerator().stripCasts().getValue().toInt() and - denominator = div.getDenominator().stripCasts().getValue().toInt() and + numerator = div.getNumerator().stripCasts().getIntValue() and + denominator = div.getDenominator().stripCasts().getIntValue() and numerator % denominator = 0 ) } diff --git a/csharp/ql/src/Likely Bugs/SelfAssignment.ql b/csharp/ql/src/Likely Bugs/SelfAssignment.ql index f01a1378242e..6e51b87a779f 100644 --- a/csharp/ql/src/Likely Bugs/SelfAssignment.ql +++ b/csharp/ql/src/Likely Bugs/SelfAssignment.ql @@ -19,7 +19,7 @@ private predicate candidate(AssignExpr ae) { not ae instanceof MemberInitializer and // Enum field initializers are never self assignments. `enum E { A = 42 }` not ae.getParent().(Field).getDeclaringType() instanceof Enum and - forall(Expr e | e = ae.getLValue().getAChildExpr*() | + forall(Expr e | e = ae.getLeftOperand().getAChildExpr*() | // Non-trivial property accesses may have side-effects, // so these are not considered e instanceof PropertyAccess implies e instanceof TrivialPropertyAccess @@ -28,7 +28,7 @@ private predicate candidate(AssignExpr ae) { private predicate selfAssignExpr(AssignExpr ae) { candidate(ae) and - sameGvn(ae.getLValue(), ae.getRValue()) + sameGvn(ae.getLeftOperand(), ae.getRightOperand()) } private Declaration getDeclaration(Expr e) { @@ -40,5 +40,5 @@ private Declaration getDeclaration(Expr e) { } from AssignExpr ae, Declaration target -where selfAssignExpr(ae) and target = getDeclaration(ae.getLValue()) +where selfAssignExpr(ae) and target = getDeclaration(ae.getLeftOperand()) select ae, "This assignment assigns $@ to itself.", target, target.getName() diff --git a/csharp/ql/src/Likely Bugs/Statements/UseBraces.ql b/csharp/ql/src/Likely Bugs/Statements/UseBraces.ql index f639b060ac17..39f0bfddf6aa 100644 --- a/csharp/ql/src/Likely Bugs/Statements/UseBraces.ql +++ b/csharp/ql/src/Likely Bugs/Statements/UseBraces.ql @@ -15,15 +15,15 @@ import csharp // Iterate the control flow until we reach a Stmt -Stmt findSuccessorStmt(ControlFlow::Node n) { - result = n.getAstNode() +Stmt findSuccessorStmt(ControlFlowNode n) { + result = n.asStmt() or - not n.getAstNode() instanceof Stmt and result = findSuccessorStmt(n.getASuccessor()) + not exists(n.asStmt()) and result = findSuccessorStmt(n.getASuccessor()) } // Return a successor statement to s Stmt getASuccessorStmt(Stmt s) { - result = findSuccessorStmt(s.getAControlFlowNode().getASuccessor()) + result = findSuccessorStmt(s.getControlFlowNode().getASuccessor()) } class IfThenStmt extends IfStmt { diff --git a/csharp/ql/src/Likely Bugs/UncheckedCastInEquals.ql b/csharp/ql/src/Likely Bugs/UncheckedCastInEquals.ql index 5c11a77f30df..0b87b12041a0 100644 --- a/csharp/ql/src/Likely Bugs/UncheckedCastInEquals.ql +++ b/csharp/ql/src/Likely Bugs/UncheckedCastInEquals.ql @@ -13,20 +13,15 @@ import csharp import semmle.code.csharp.frameworks.System -private predicate equalsMethodChild(EqualsMethod equals, Element child) { - child = equals +pragma[nomagic] +predicate nodeBeforeParameterAccess(ControlFlowNode node) { + exists(EqualsMethod equals | equals.getBody().getControlFlowNode() = node) or - equalsMethodChild(equals, child.getParent()) -} - -predicate nodeBeforeParameterAccess(ControlFlow::Node node) { - exists(EqualsMethod equals | equals.getBody() = node.getAstNode()) - or - exists(EqualsMethod equals, Parameter param, ControlFlow::Node mid | + exists(EqualsMethod equals, Parameter param, ControlFlowNode mid | equals.getParameter(0) = param and - equalsMethodChild(equals, mid.getAstNode()) and + equals = mid.getEnclosingCallable() and nodeBeforeParameterAccess(mid) and - not param.getAnAccess() = mid.getAstNode() and + not param.getAnAccess().getControlFlowNode() = mid and mid.getASuccessor() = node ) } @@ -35,5 +30,5 @@ from ParameterAccess access, CastExpr cast where access = cast.getAChild() and access.getTarget().getDeclaringElement() = access.getEnclosingCallable() and - nodeBeforeParameterAccess(access.getAControlFlowNode()) + nodeBeforeParameterAccess(access.getControlFlowNode()) select cast, "Equals() method does not check argument type." diff --git a/csharp/ql/src/Linq/BadMultipleIteration.ql b/csharp/ql/src/Linq/BadMultipleIteration.ql index 8146bbf167d8..0f9e335e2251 100644 --- a/csharp/ql/src/Linq/BadMultipleIteration.ql +++ b/csharp/ql/src/Linq/BadMultipleIteration.ql @@ -50,7 +50,7 @@ predicate potentiallyConsumingAccess(VariableAccess va) { Expr sequenceSource(IEnumerableSequence seq) { result = seq.getInitializer() or - exists(Assignment a | a.getLValue() = seq.getAnAccess() and result = a.getRValue()) + exists(Assignment a | a.getLeftOperand() = seq.getAnAccess() and result = a.getRightOperand()) } from IEnumerableSequence seq, VariableAccess va diff --git a/csharp/ql/src/Performance/StringBuilderInLoop.ql b/csharp/ql/src/Performance/StringBuilderInLoop.ql index f1f23ebf5e0d..1f7e24988ceb 100644 --- a/csharp/ql/src/Performance/StringBuilderInLoop.ql +++ b/csharp/ql/src/Performance/StringBuilderInLoop.ql @@ -13,10 +13,10 @@ import csharp import semmle.code.csharp.frameworks.system.Text -from ObjectCreation creation, LoopStmt loop, ControlFlow::Node loopEntryNode +from ObjectCreation creation, LoopStmt loop, ControlFlowNode loopEntryNode where creation.getType() instanceof SystemTextStringBuilderClass and - loopEntryNode = loop.getBody().getAControlFlowEntryNode() and + loopEntryNode.isBefore(loop.getBody()) and loop.getBody().getAChild*() = creation and - creation.getAControlFlowNode().postDominates(loopEntryNode) + creation.getControlFlowNode().postDominates(loopEntryNode) select creation, "Creating a 'StringBuilder' in a loop." diff --git a/csharp/ql/src/Performance/StringConcatenationInLoop.ql b/csharp/ql/src/Performance/StringConcatenationInLoop.ql index 3b3228588a4b..d27b99e7bdd0 100644 --- a/csharp/ql/src/Performance/StringConcatenationInLoop.ql +++ b/csharp/ql/src/Performance/StringConcatenationInLoop.ql @@ -24,7 +24,7 @@ class StringCat extends AddExpr { */ predicate isSelfConcatAssignExpr(AssignExpr e, Variable v) { exists(VariableAccess use | - stringCatContains(e.getRValue(), use) and + stringCatContains(e.getRightOperand(), use) and use.getTarget() = e.getTargetVariable() and v = use.getTarget() ) @@ -41,7 +41,7 @@ predicate stringCatContains(StringCat expr, Expr child) { * where `v` is a simple variable (and not, for example, a property). */ predicate isConcatExpr(AssignAddExpr e, Variable v) { - e.getLValue().getType() instanceof StringType and + e.getLeftOperand().getType() instanceof StringType and v = e.getTargetVariable() } diff --git a/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.ql b/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.ql index dcc520540bb0..f72de01b5db2 100644 --- a/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.ql +++ b/csharp/ql/src/Security Features/CWE-1004/CookieWithoutHttpOnly.ql @@ -27,8 +27,8 @@ predicate cookieAppendHttpOnlyByDefault() { predicate httpOnlyFalse(ObjectCreation oc) { exists(Assignment a | - getAValueForProp(oc, a, "HttpOnly") = a.getRValue() and - a.getRValue().getValue() = "false" + getAValueForProp(oc, a, "HttpOnly") = a.getRightOperand() and + a.getRightOperand().getValue() = "false" ) } @@ -100,8 +100,8 @@ predicate nonHttpOnlyCookieBuilderAssignment(Assignment a, Expr val) { MicrosoftAspNetCoreAuthenticationCookiesCookieAuthenticationOptions ) and pw.getProperty().getName() = "HttpOnly" and - a.getLValue() = pw and - DataFlow::localExprFlow(val, a.getRValue()) + a.getLeftOperand() = pw and + DataFlow::localExprFlow(val, a.getRightOperand()) ) } @@ -111,7 +111,7 @@ where nonHttpOnlyCookieCall(httpOnlySink) or exists(Assignment a | - httpOnlySink = a.getRValue() and + httpOnlySink = a.getRightOperand() and nonHttpOnlyCookieBuilderAssignment(a, _) ) ) diff --git a/csharp/ql/src/Security Features/CWE-327/InsecureSQLConnection.ql b/csharp/ql/src/Security Features/CWE-327/InsecureSQLConnection.ql index 710228ffc0ef..eaee12a731a8 100644 --- a/csharp/ql/src/Security Features/CWE-327/InsecureSQLConnection.ql +++ b/csharp/ql/src/Security Features/CWE-327/InsecureSQLConnection.ql @@ -39,7 +39,12 @@ class Sink extends DataFlow::Node { or oc.getType().getName() = "SqlConnection" ) and - version = oc.getType().getALocation().(Assembly).getVersion() + version = oc.getType().getALocation().(Assembly).getVersion() and + not exists(MemberInitializer mi | + mi = oc.getInitializer().(ObjectInitializer).getAMemberInitializer() and + mi.getLeftOperand().(PropertyAccess).getTarget().getName() = "Encrypt" and + mi.getRightOperand().(BoolLiteral).getValue() = "true" + ) ) } diff --git a/csharp/ql/src/Security Features/CWE-384/AbandonSession.ql b/csharp/ql/src/Security Features/CWE-384/AbandonSession.ql index c350c8f37554..2654b48c233f 100644 --- a/csharp/ql/src/Security Features/CWE-384/AbandonSession.ql +++ b/csharp/ql/src/Security Features/CWE-384/AbandonSession.ql @@ -56,18 +56,18 @@ predicate sessionUse(MemberAccess ma) { } /** A control flow step that is not sanitised by a call to clear the session. */ -predicate controlStep(ControlFlow::Node s1, ControlFlow::Node s2) { +predicate controlStep(ControlFlowNode s1, ControlFlowNode s2) { s2 = s1.getASuccessor() and - not sessionEndMethod(s2.getAstNode().(MethodCall).getTarget()) + not sessionEndMethod(s2.asExpr().(MethodCall).getTarget()) } from - ControlFlow::Node loginCall, Method loginMethod, ControlFlow::Node sessionUse, + ControlFlowNode loginCall, Method loginMethod, ControlFlowNode sessionUse, ControlFlow::SuccessorType fromLoginFlow where - loginMethod = loginCall.getAstNode().(MethodCall).getTarget() and + loginMethod = loginCall.asExpr().(MethodCall).getTarget() and loginMethod(loginMethod, fromLoginFlow) and - sessionUse(sessionUse.getAstNode()) and - controlStep+(loginCall.getASuccessorByType(fromLoginFlow), sessionUse) + sessionUse(sessionUse.asExpr()) and + controlStep+(loginCall.getASuccessor(fromLoginFlow), sessionUse) select sessionUse, "This session has not been invalidated following the call to $@.", loginCall, loginMethod.getName() diff --git a/csharp/ql/src/Security Features/CWE-502/UnsafeDeserialization.qhelp b/csharp/ql/src/Security Features/CWE-502/UnsafeDeserialization.qhelp index 3c68b74a1d92..4cc76003fbf8 100644 --- a/csharp/ql/src/Security Features/CWE-502/UnsafeDeserialization.qhelp +++ b/csharp/ql/src/Security Features/CWE-502/UnsafeDeserialization.qhelp @@ -7,6 +7,17 @@

    Deserializing an object from untrusted input may result in security problems, such as denial of service or remote code execution.

    +

    +Note that a deserialization method is only dangerous if it can instantiate +arbitrary classes. Serialization frameworks that use a schema to instantiate +only expected, predefined types are generally not tracked by this query. Such +frameworks are generally safe with respect to arbitrary-class-instantiation and +gadget-chain attacks when the schema is trusted and does not permit +user-controlled type resolution. However, care must be taken to ensure the schema +strictly limits the allowed types. Permitting common standard library classes +can still leave the application vulnerable to gadget-chain attacks. +

    + diff --git a/csharp/ql/src/Security Features/CWE-502/UnsafeDeserializationUntrustedInput.qhelp b/csharp/ql/src/Security Features/CWE-502/UnsafeDeserializationUntrustedInput.qhelp index 7c8781b15a17..b2c123bed5c9 100644 --- a/csharp/ql/src/Security Features/CWE-502/UnsafeDeserializationUntrustedInput.qhelp +++ b/csharp/ql/src/Security Features/CWE-502/UnsafeDeserializationUntrustedInput.qhelp @@ -7,6 +7,17 @@

    Deserializing an object from untrusted input may result in security problems, such as denial of service or remote code execution.

    +

    +Note that a deserialization method is only dangerous if it can instantiate +arbitrary classes. Serialization frameworks that use a schema to instantiate +only expected, predefined types are generally not tracked by this query. Such +frameworks are generally safe with respect to arbitrary-class-instantiation and +gadget-chain attacks when the schema is trusted and does not permit +user-controlled type resolution. However, care must be taken to ensure the schema +strictly limits the allowed types. Permitting common standard library classes +can still leave the application vulnerable to gadget-chain attacks. +

    + diff --git a/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.ql b/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.ql index ce1f75d627c7..1149b4bcad24 100644 --- a/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.ql +++ b/csharp/ql/src/Security Features/CWE-614/CookieWithoutSecure.ql @@ -31,8 +31,8 @@ predicate cookieAppendSecureByDefault() { predicate secureFalse(ObjectCreation oc) { exists(Assignment a | - getAValueForProp(oc, a, "Secure") = a.getRValue() and - a.getRValue().getValue() = "false" + getAValueForProp(oc, a, "Secure") = a.getRightOperand() and + a.getRightOperand().getValue() = "false" ) } @@ -96,8 +96,8 @@ predicate insecureSecurePolicyAssignment(Assignment a, Expr val) { MicrosoftAspNetCoreAuthenticationCookiesCookieAuthenticationOptions ) and pw.getProperty().getName() = "SecurePolicy" and - a.getLValue() = pw and - DataFlow::localExprFlow(val, a.getRValue()) and + a.getLeftOperand() = pw and + DataFlow::localExprFlow(val, a.getRightOperand()) and val.getValue() = "2" // None ) } @@ -107,7 +107,7 @@ where insecureCookieCall(secureSink) or exists(Assignment a | - secureSink = a.getRValue() and + secureSink = a.getRightOperand() and insecureSecurePolicyAssignment(a, _) ) select secureSink, "Cookie attribute 'Secure' is not set to true." diff --git a/csharp/ql/src/Security Features/CookieWithOverlyBroadDomain.ql b/csharp/ql/src/Security Features/CookieWithOverlyBroadDomain.ql index 9c6e69351860..59a6340104a9 100644 --- a/csharp/ql/src/Security Features/CookieWithOverlyBroadDomain.ql +++ b/csharp/ql/src/Security Features/CookieWithOverlyBroadDomain.ql @@ -14,11 +14,11 @@ import csharp from Assignment a, PropertyAccess pa where - a.getLValue() = pa and + a.getLeftOperand() = pa and pa.getTarget().hasName("Domain") and pa.getTarget().getDeclaringType().hasFullyQualifiedName("System.Web", "HttpCookie") and ( - a.getRValue().getValue().regexpReplaceAll("[^.]", "").length() < 2 or - a.getRValue().getValue().matches(".%") + a.getRightOperand().getValue().regexpReplaceAll("[^.]", "").length() < 2 or + a.getRightOperand().getValue().matches(".%") ) select a, "Overly broad domain for cookie." diff --git a/csharp/ql/src/Security Features/CookieWithOverlyBroadPath.ql b/csharp/ql/src/Security Features/CookieWithOverlyBroadPath.ql index 6690cac47d26..d659f7c8dc56 100644 --- a/csharp/ql/src/Security Features/CookieWithOverlyBroadPath.ql +++ b/csharp/ql/src/Security Features/CookieWithOverlyBroadPath.ql @@ -14,8 +14,8 @@ import csharp from Assignment a, PropertyAccess pa where - a.getLValue() = pa and + a.getLeftOperand() = pa and pa.getTarget().hasName("Path") and pa.getTarget().getDeclaringType().hasFullyQualifiedName("System.Web", "HttpCookie") and - a.getRValue().getValue() = "/" + a.getRightOperand().getValue() = "/" select a, "Overly broad path for cookie." diff --git a/csharp/ql/src/Security Features/HeaderCheckingDisabled.ql b/csharp/ql/src/Security Features/HeaderCheckingDisabled.ql index 7a3a5fdc4f20..bc9bf289c2dd 100644 --- a/csharp/ql/src/Security Features/HeaderCheckingDisabled.ql +++ b/csharp/ql/src/Security Features/HeaderCheckingDisabled.ql @@ -17,12 +17,12 @@ from Element l where // header checking is disabled programmatically in the code exists(Assignment a, PropertyAccess pa | - a.getLValue() = pa and + a.getLeftOperand() = pa and pa.getTarget().hasName("EnableHeaderChecking") and pa.getTarget() .getDeclaringType() .hasFullyQualifiedName("System.Web.Configuration", "HttpRuntimeSection") and - a.getRValue().getValue() = "false" and + a.getRightOperand().getValue() = "false" and a = l ) or diff --git a/csharp/ql/src/Security Features/InsecureRandomness.ql b/csharp/ql/src/Security Features/InsecureRandomness.ql index 8237afdff130..649969a27782 100644 --- a/csharp/ql/src/Security Features/InsecureRandomness.ql +++ b/csharp/ql/src/Security Features/InsecureRandomness.ql @@ -89,10 +89,10 @@ module Random { e = any(SensitiveLibraryParameter v).getAnAssignedArgument() or // Assignment operation, e.g. += or similar - exists(AssignOperation ao | ao.getRValue() = e | - ao.getLValue() = any(SensitiveVariable v).getAnAccess() or - ao.getLValue() = any(SensitiveProperty v).getAnAccess() or - ao.getLValue() = any(SensitiveLibraryParameter v).getAnAccess() + exists(AssignOperation ao | ao.getRightOperand() = e | + ao.getLeftOperand() = any(SensitiveVariable v).getAnAccess() or + ao.getLeftOperand() = any(SensitiveProperty v).getAnAccess() or + ao.getLeftOperand() = any(SensitiveLibraryParameter v).getAnAccess() ) ) } diff --git a/csharp/ql/src/Security Features/InsufficientKeySize.ql b/csharp/ql/src/Security Features/InsufficientKeySize.ql index 94ae6b9286f2..98a7852fbaf5 100644 --- a/csharp/ql/src/Security Features/InsufficientKeySize.ql +++ b/csharp/ql/src/Security Features/InsufficientKeySize.ql @@ -20,7 +20,7 @@ predicate incorrectUseOfRC2(Assignment e, string msg) { .getDeclaringType() .hasFullyQualifiedName("System.Security.Cryptography", "RC2CryptoServiceProvider") ) and - e.getRValue().getValue().toInt() < 128 and + e.getRightOperand().getIntValue() < 128 and msg = "Key size should be at least 128 bits for RC2 encryption." } @@ -28,7 +28,7 @@ predicate incorrectUseOfDsa(ObjectCreation e, string msg) { e.getTarget() .getDeclaringType() .hasFullyQualifiedName("System.Security.Cryptography", "DSACryptoServiceProvider") and - exists(Expr i | e.getArgument(0) = i and i.getValue().toInt() < 2048) and + exists(Expr i | e.getArgument(0) = i and i.getIntValue() < 2048) and msg = "Key size should be at least 2048 bits for DSA encryption." } @@ -36,7 +36,7 @@ predicate incorrectUseOfRsa(ObjectCreation e, string msg) { e.getTarget() .getDeclaringType() .hasFullyQualifiedName("System.Security.Cryptography", "RSACryptoServiceProvider") and - exists(Expr i | e.getArgument(0) = i and i.getValue().toInt() < 2048) and + exists(Expr i | e.getArgument(0) = i and i.getIntValue() < 2048) and msg = "Key size should be at least 2048 bits for RSA encryption." } diff --git a/csharp/ql/src/Security Features/PersistentCookie.ql b/csharp/ql/src/Security Features/PersistentCookie.ql index 7f9861213fc1..edc97b464e5c 100644 --- a/csharp/ql/src/Security Features/PersistentCookie.ql +++ b/csharp/ql/src/Security Features/PersistentCookie.ql @@ -52,8 +52,8 @@ class FutureDateExpr extends MethodCall { from Assignment a, PropertyAccess pa, FutureDateExpr fde where - a.getLValue() = pa and - a.getRValue() = fde and + a.getLeftOperand() = pa and + a.getRightOperand() = fde and pa.getTarget().hasName("Expires") and pa.getTarget().getDeclaringType().hasFullyQualifiedName("System.Web", "HttpCookie") and (fde.timeIsNotClear() or fde.getTimeInSecond() > 300) // 5 minutes max diff --git a/csharp/ql/src/Telemetry/DatabaseQuality.qll b/csharp/ql/src/Telemetry/DatabaseQuality.qll index ca2ab3e7e165..ad7ac682bf5c 100644 --- a/csharp/ql/src/Telemetry/DatabaseQuality.qll +++ b/csharp/ql/src/Telemetry/DatabaseQuality.qll @@ -27,7 +27,7 @@ module CallTargetStats implements StatsSig { p = c.getProperty() and not p.getAnAccessor() instanceof Setter and assign = c.getParent() and - assign.getLValue() = c and + assign.getLeftOperand() = c and assign.getParent() instanceof Property ) } @@ -36,7 +36,7 @@ module CallTargetStats implements StatsSig { exists(Property p, AssignExpr assign | p = c.getProperty() and assign = c.getParent() and - assign.getLValue() = c and + assign.getLeftOperand() = c and assign.getParent() instanceof ObjectInitializer and assign.getParent().getParent() instanceof AnonymousObjectCreation ) @@ -46,8 +46,8 @@ module CallTargetStats implements StatsSig { exists(Property p, AssignExpr assign | p = c.getProperty() and assign = c.getParent() and - assign.getLValue() = c and - assign.getRValue() instanceof ObjectOrCollectionInitializer + assign.getLeftOperand() = c and + assign.getRightOperand() instanceof ObjectOrCollectionInitializer ) } diff --git a/csharp/ql/src/Useless code/DefaultToStringQuery.qll b/csharp/ql/src/Useless code/DefaultToStringQuery.qll index 411ca47b5e67..cd7a1419028b 100644 --- a/csharp/ql/src/Useless code/DefaultToStringQuery.qll +++ b/csharp/ql/src/Useless code/DefaultToStringQuery.qll @@ -30,7 +30,7 @@ predicate invokesToString(Expr e, ValueOrRefType t) { pragma[nomagic] private predicate parameterReadPostDominatesEntry(ParameterRead pr) { - pr.getAControlFlowNode().postDominates(pr.getEnclosingCallable().getEntryPoint()) + pr.getControlFlowNode().postDominates(pr.getEnclosingCallable().getEntryPoint()) } pragma[nomagic] diff --git a/csharp/ql/src/Useless code/RedundantToStringCall.ql b/csharp/ql/src/Useless code/RedundantToStringCall.ql index 55e7056e9a08..e29e071b4d9b 100644 --- a/csharp/ql/src/Useless code/RedundantToStringCall.ql +++ b/csharp/ql/src/Useless code/RedundantToStringCall.ql @@ -18,5 +18,6 @@ import semmle.code.csharp.frameworks.System from MethodCall mc where mc instanceof ImplicitToStringExpr and - mc.getTarget() instanceof ToStringMethod -select mc, "Redundant call to 'ToString' on a String object." + mc.getTarget() instanceof ToStringMethod and + not mc.getQualifier() instanceof BaseAccess +select mc, "Redundant call to 'ToString'." diff --git a/csharp/ql/src/change-notes/released/1.7.1.md b/csharp/ql/src/change-notes/released/1.7.1.md new file mode 100644 index 000000000000..0b5df9629c67 --- /dev/null +++ b/csharp/ql/src/change-notes/released/1.7.1.md @@ -0,0 +1,8 @@ +## 1.7.1 + +### Minor Analysis Improvements + +* The query `cs/useless-tostring-call` has been updated to avoid false + positive results in calls to `StringBuilder.AppendLine` and calls of + the form `base.ToString()`. Moreover, the alert message has been + made more precise. diff --git a/csharp/ql/src/change-notes/released/1.7.2.md b/csharp/ql/src/change-notes/released/1.7.2.md new file mode 100644 index 000000000000..b950385c16d7 --- /dev/null +++ b/csharp/ql/src/change-notes/released/1.7.2.md @@ -0,0 +1,3 @@ +## 1.7.2 + +No user-facing changes. diff --git a/csharp/ql/src/change-notes/released/1.7.3.md b/csharp/ql/src/change-notes/released/1.7.3.md new file mode 100644 index 000000000000..a629082e2155 --- /dev/null +++ b/csharp/ql/src/change-notes/released/1.7.3.md @@ -0,0 +1,3 @@ +## 1.7.3 + +No user-facing changes. diff --git a/csharp/ql/src/codeql-pack.release.yml b/csharp/ql/src/codeql-pack.release.yml index d1184cc67507..9f9661b1e77a 100644 --- a/csharp/ql/src/codeql-pack.release.yml +++ b/csharp/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.7.0 +lastReleaseVersion: 1.7.3 diff --git a/csharp/ql/src/experimental/Security Features/CWE-759/HashWithoutSalt.ql b/csharp/ql/src/experimental/Security Features/CWE-759/HashWithoutSalt.ql index d43050c2deb4..0dc8fc362d61 100644 --- a/csharp/ql/src/experimental/Security Features/CWE-759/HashWithoutSalt.ql +++ b/csharp/ql/src/experimental/Security Features/CWE-759/HashWithoutSalt.ql @@ -187,10 +187,10 @@ module HashWithoutSaltConfig implements DataFlow::ConfigSig { or // a salt or key is included in subclasses of `KeyedHashAlgorithm` exists(MethodCall mc, Assignment a, ObjectCreation oc | - a.getRValue() = oc and + a.getRightOperand() = oc and oc.getObjectType().getABaseType+() instanceof KeyedHashAlgorithm and mc.getTarget() instanceof HashMethod and - a.getLValue() = mc.getQualifier().(VariableAccess).getTarget().getAnAccess() and + a.getLeftOperand() = mc.getQualifier().(VariableAccess).getTarget().getAnAccess() and mc.getArgument(0) = node.asExpr() ) } diff --git a/csharp/ql/src/qlpack.yml b/csharp/ql/src/qlpack.yml index 64d02609317a..84a1271fcad4 100644 --- a/csharp/ql/src/qlpack.yml +++ b/csharp/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/csharp-queries -version: 1.7.0 +version: 1.7.3 groups: - csharp - queries diff --git a/csharp/ql/test/library-tests/assignables/AssignableDefinitionNode.ql b/csharp/ql/test/library-tests/assignables/AssignableDefinitionNode.ql index 8ff3aad95fcb..2e4af6cfe9b9 100644 --- a/csharp/ql/test/library-tests/assignables/AssignableDefinitionNode.ql +++ b/csharp/ql/test/library-tests/assignables/AssignableDefinitionNode.ql @@ -1,4 +1,4 @@ import csharp from AssignableDefinition def -select def, def.getExpr().getAControlFlowNode() +select def, def.getExpr().getControlFlowNode() diff --git a/csharp/ql/test/library-tests/assignments/AssignOperation.ql b/csharp/ql/test/library-tests/assignments/AssignOperation.ql index 2ca3b11a8313..2fa23ed0a9f3 100644 --- a/csharp/ql/test/library-tests/assignments/AssignOperation.ql +++ b/csharp/ql/test/library-tests/assignments/AssignOperation.ql @@ -1,4 +1,4 @@ import csharp from AssignOperation ao -select ao, ao.getLValue(), ao.getRValue() +select ao, ao.getLeftOperand(), ao.getRightOperand() diff --git a/csharp/ql/test/library-tests/controlflow/graph/BasicBlock.expected b/csharp/ql/test/library-tests/controlflow/graph/BasicBlock.expected index 9802f2b01955..819674d2746d 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/BasicBlock.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/BasicBlock.expected @@ -1,1178 +1,1329 @@ -| AccessorCalls.cs:1:7:1:19 | enter AccessorCalls | AccessorCalls.cs:1:7:1:19 | exit AccessorCalls | 7 | -| AccessorCalls.cs:5:23:5:25 | enter get_Item | AccessorCalls.cs:5:23:5:25 | exit get_Item | 4 | -| AccessorCalls.cs:5:33:5:35 | enter set_Item | AccessorCalls.cs:5:33:5:35 | exit set_Item | 4 | -| AccessorCalls.cs:7:32:7:34 | enter add_Event | AccessorCalls.cs:7:32:7:34 | exit add_Event | 4 | -| AccessorCalls.cs:7:40:7:45 | enter remove_Event | AccessorCalls.cs:7:40:7:45 | exit remove_Event | 4 | -| AccessorCalls.cs:10:10:10:11 | enter M1 | AccessorCalls.cs:10:10:10:11 | exit M1 | 34 | -| AccessorCalls.cs:19:10:19:11 | enter M2 | AccessorCalls.cs:19:10:19:11 | exit M2 | 42 | -| AccessorCalls.cs:28:10:28:11 | enter M3 | AccessorCalls.cs:28:10:28:11 | exit M3 | 17 | -| AccessorCalls.cs:35:10:35:11 | enter M4 | AccessorCalls.cs:35:10:35:11 | exit M4 | 20 | -| AccessorCalls.cs:42:10:42:11 | enter M5 | AccessorCalls.cs:42:10:42:11 | exit M5 | 24 | -| AccessorCalls.cs:49:10:49:11 | enter M6 | AccessorCalls.cs:49:10:49:11 | exit M6 | 30 | -| AccessorCalls.cs:56:10:56:11 | enter M7 | AccessorCalls.cs:56:10:56:11 | exit M7 | 25 | -| AccessorCalls.cs:61:10:61:11 | enter M8 | AccessorCalls.cs:61:10:61:11 | exit M8 | 31 | -| AccessorCalls.cs:66:10:66:11 | enter M9 | AccessorCalls.cs:66:10:66:11 | exit M9 | 51 | -| ArrayCreation.cs:1:7:1:19 | enter ArrayCreation | ArrayCreation.cs:1:7:1:19 | exit ArrayCreation | 7 | -| ArrayCreation.cs:3:11:3:12 | enter M1 | ArrayCreation.cs:3:11:3:12 | exit M1 | 5 | -| ArrayCreation.cs:5:12:5:13 | enter M2 | ArrayCreation.cs:5:12:5:13 | exit M2 | 6 | -| ArrayCreation.cs:7:11:7:12 | enter M3 | ArrayCreation.cs:7:11:7:12 | exit M3 | 8 | -| ArrayCreation.cs:9:12:9:13 | enter M4 | ArrayCreation.cs:9:12:9:13 | exit M4 | 13 | -| Assert.cs:5:7:5:17 | enter AssertTests | Assert.cs:5:7:5:17 | exit AssertTests | 7 | -| Assert.cs:7:10:7:11 | enter M1 | Assert.cs:9:20:9:20 | access to parameter b | 4 | -| Assert.cs:7:10:7:11 | exit M1 | Assert.cs:7:10:7:11 | exit M1 | 1 | -| Assert.cs:7:10:7:11 | exit M1 (abnormal) | Assert.cs:7:10:7:11 | exit M1 (abnormal) | 1 | -| Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:10:9:10:31 | call to method Assert | 7 | -| Assert.cs:9:24:9:27 | null | Assert.cs:9:24:9:27 | null | 1 | -| Assert.cs:9:31:9:32 | "" | Assert.cs:9:31:9:32 | "" | 1 | -| Assert.cs:11:9:11:36 | ...; | Assert.cs:7:10:7:11 | exit M1 (normal) | 5 | -| Assert.cs:14:10:14:11 | enter M2 | Assert.cs:16:20:16:20 | access to parameter b | 4 | -| Assert.cs:14:10:14:11 | exit M2 | Assert.cs:14:10:14:11 | exit M2 | 1 | -| Assert.cs:14:10:14:11 | exit M2 (abnormal) | Assert.cs:14:10:14:11 | exit M2 (abnormal) | 1 | -| Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:17:9:17:24 | call to method IsNull | 5 | -| Assert.cs:16:24:16:27 | null | Assert.cs:16:24:16:27 | null | 1 | -| Assert.cs:16:31:16:32 | "" | Assert.cs:16:31:16:32 | "" | 1 | -| Assert.cs:18:9:18:36 | ...; | Assert.cs:14:10:14:11 | exit M2 (normal) | 5 | -| Assert.cs:21:10:21:11 | enter M3 | Assert.cs:23:20:23:20 | access to parameter b | 4 | -| Assert.cs:21:10:21:11 | exit M3 | Assert.cs:21:10:21:11 | exit M3 | 1 | -| Assert.cs:21:10:21:11 | exit M3 (abnormal) | Assert.cs:21:10:21:11 | exit M3 (abnormal) | 1 | -| Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:24:9:24:27 | call to method IsNotNull | 5 | -| Assert.cs:23:24:23:27 | null | Assert.cs:23:24:23:27 | null | 1 | -| Assert.cs:23:31:23:32 | "" | Assert.cs:23:31:23:32 | "" | 1 | -| Assert.cs:25:9:25:36 | ...; | Assert.cs:21:10:21:11 | exit M3 (normal) | 5 | -| Assert.cs:28:10:28:11 | enter M4 | Assert.cs:30:20:30:20 | access to parameter b | 4 | -| Assert.cs:28:10:28:11 | exit M4 | Assert.cs:28:10:28:11 | exit M4 | 1 | -| Assert.cs:28:10:28:11 | exit M4 (abnormal) | Assert.cs:28:10:28:11 | exit M4 (abnormal) | 1 | -| Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:31:9:31:32 | call to method IsTrue | 7 | -| Assert.cs:30:24:30:27 | null | Assert.cs:30:24:30:27 | null | 1 | -| Assert.cs:30:31:30:32 | "" | Assert.cs:30:31:30:32 | "" | 1 | -| Assert.cs:32:9:32:36 | ...; | Assert.cs:28:10:28:11 | exit M4 (normal) | 5 | -| Assert.cs:35:10:35:11 | enter M5 | Assert.cs:37:20:37:20 | access to parameter b | 4 | -| Assert.cs:35:10:35:11 | exit M5 | Assert.cs:35:10:35:11 | exit M5 | 1 | -| Assert.cs:35:10:35:11 | exit M5 (abnormal) | Assert.cs:35:10:35:11 | exit M5 (abnormal) | 1 | -| Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:38:9:38:32 | call to method IsTrue | 7 | -| Assert.cs:37:24:37:27 | null | Assert.cs:37:24:37:27 | null | 1 | -| Assert.cs:37:31:37:32 | "" | Assert.cs:37:31:37:32 | "" | 1 | -| Assert.cs:39:9:39:36 | ...; | Assert.cs:35:10:35:11 | exit M5 (normal) | 5 | -| Assert.cs:42:10:42:11 | enter M6 | Assert.cs:44:20:44:20 | access to parameter b | 4 | -| Assert.cs:42:10:42:11 | exit M6 | Assert.cs:42:10:42:11 | exit M6 | 1 | -| Assert.cs:42:10:42:11 | exit M6 (abnormal) | Assert.cs:42:10:42:11 | exit M6 (abnormal) | 1 | -| Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:45:9:45:33 | call to method IsFalse | 7 | -| Assert.cs:44:24:44:27 | null | Assert.cs:44:24:44:27 | null | 1 | -| Assert.cs:44:31:44:32 | "" | Assert.cs:44:31:44:32 | "" | 1 | -| Assert.cs:46:9:46:36 | ...; | Assert.cs:42:10:42:11 | exit M6 (normal) | 5 | -| Assert.cs:49:10:49:11 | enter M7 | Assert.cs:51:20:51:20 | access to parameter b | 4 | -| Assert.cs:49:10:49:11 | exit M7 | Assert.cs:49:10:49:11 | exit M7 | 1 | -| Assert.cs:49:10:49:11 | exit M7 (abnormal) | Assert.cs:49:10:49:11 | exit M7 (abnormal) | 1 | -| Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:52:9:52:33 | call to method IsFalse | 7 | -| Assert.cs:51:24:51:27 | null | Assert.cs:51:24:51:27 | null | 1 | -| Assert.cs:51:31:51:32 | "" | Assert.cs:51:31:51:32 | "" | 1 | -| Assert.cs:53:9:53:36 | ...; | Assert.cs:49:10:49:11 | exit M7 (normal) | 5 | -| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:58:20:58:20 | access to parameter b | 4 | -| Assert.cs:56:10:56:11 | exit M8 | Assert.cs:56:10:56:11 | exit M8 | 1 | -| Assert.cs:56:10:56:11 | exit M8 (abnormal) | Assert.cs:56:10:56:11 | exit M8 (abnormal) | 1 | -| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:59:23:59:31 | ... != ... | 6 | -| Assert.cs:58:24:58:27 | null | Assert.cs:58:24:58:27 | null | 1 | -| Assert.cs:58:31:58:32 | "" | Assert.cs:58:31:58:32 | "" | 1 | -| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:59:9:59:37 | call to method IsTrue | 2 | -| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:36:59:36 | access to parameter b | 1 | -| Assert.cs:60:9:60:36 | ...; | Assert.cs:56:10:56:11 | exit M8 (normal) | 5 | -| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:65:20:65:20 | access to parameter b | 4 | -| Assert.cs:63:10:63:11 | exit M9 | Assert.cs:63:10:63:11 | exit M9 | 1 | -| Assert.cs:63:10:63:11 | exit M9 (abnormal) | Assert.cs:63:10:63:11 | exit M9 (abnormal) | 1 | -| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:66:24:66:32 | ... == ... | 6 | -| Assert.cs:65:24:65:27 | null | Assert.cs:65:24:65:27 | null | 1 | -| Assert.cs:65:31:65:32 | "" | Assert.cs:65:31:65:32 | "" | 1 | -| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:66:9:66:38 | call to method IsFalse | 2 | -| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:37:66:37 | access to parameter b | 1 | -| Assert.cs:67:9:67:36 | ...; | Assert.cs:63:10:63:11 | exit M9 (normal) | 5 | -| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:72:20:72:20 | access to parameter b | 4 | -| Assert.cs:70:10:70:12 | exit M10 | Assert.cs:70:10:70:12 | exit M10 | 1 | -| Assert.cs:70:10:70:12 | exit M10 (abnormal) | Assert.cs:70:10:70:12 | exit M10 (abnormal) | 1 | -| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:73:23:73:31 | ... == ... | 6 | -| Assert.cs:72:24:72:27 | null | Assert.cs:72:24:72:27 | null | 1 | -| Assert.cs:72:31:72:32 | "" | Assert.cs:72:31:72:32 | "" | 1 | -| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:73:9:73:37 | call to method IsTrue | 2 | -| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:36:73:36 | access to parameter b | 1 | -| Assert.cs:74:9:74:36 | ...; | Assert.cs:70:10:70:12 | exit M10 (normal) | 5 | -| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:79:20:79:20 | access to parameter b | 4 | -| Assert.cs:77:10:77:12 | exit M11 | Assert.cs:77:10:77:12 | exit M11 | 1 | -| Assert.cs:77:10:77:12 | exit M11 (abnormal) | Assert.cs:77:10:77:12 | exit M11 (abnormal) | 1 | -| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:80:24:80:32 | ... != ... | 6 | -| Assert.cs:79:24:79:27 | null | Assert.cs:79:24:79:27 | null | 1 | -| Assert.cs:79:31:79:32 | "" | Assert.cs:79:31:79:32 | "" | 1 | -| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:80:9:80:38 | call to method IsFalse | 2 | -| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:37:80:37 | access to parameter b | 1 | -| Assert.cs:81:9:81:36 | ...; | Assert.cs:77:10:77:12 | exit M11 (normal) | 5 | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:86:20:86:20 | access to parameter b | 4 | -| Assert.cs:84:10:84:12 | exit M12 | Assert.cs:84:10:84:12 | exit M12 | 1 | -| Assert.cs:84:10:84:12 | exit M12 (abnormal) | Assert.cs:84:10:84:12 | exit M12 (abnormal) | 1 | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:87:9:87:31 | call to method Assert | 7 | -| Assert.cs:86:24:86:27 | null | Assert.cs:86:24:86:27 | null | 1 | -| Assert.cs:86:31:86:32 | "" | Assert.cs:86:31:86:32 | "" | 1 | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:90:13:90:13 | access to parameter b | 6 | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:91:9:91:24 | call to method IsNull | 5 | -| Assert.cs:90:17:90:20 | null | Assert.cs:90:17:90:20 | null | 1 | -| Assert.cs:90:24:90:25 | "" | Assert.cs:90:24:90:25 | "" | 1 | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:94:13:94:13 | access to parameter b | 6 | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:95:9:95:27 | call to method IsNotNull | 5 | -| Assert.cs:94:17:94:20 | null | Assert.cs:94:17:94:20 | null | 1 | -| Assert.cs:94:24:94:25 | "" | Assert.cs:94:24:94:25 | "" | 1 | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:98:13:98:13 | access to parameter b | 6 | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:99:9:99:32 | call to method IsTrue | 7 | -| Assert.cs:98:17:98:20 | null | Assert.cs:98:17:98:20 | null | 1 | -| Assert.cs:98:24:98:25 | "" | Assert.cs:98:24:98:25 | "" | 1 | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:102:13:102:13 | access to parameter b | 6 | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:103:9:103:32 | call to method IsTrue | 7 | -| Assert.cs:102:17:102:20 | null | Assert.cs:102:17:102:20 | null | 1 | -| Assert.cs:102:24:102:25 | "" | Assert.cs:102:24:102:25 | "" | 1 | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:106:13:106:13 | access to parameter b | 6 | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:107:9:107:33 | call to method IsFalse | 7 | -| Assert.cs:106:17:106:20 | null | Assert.cs:106:17:106:20 | null | 1 | -| Assert.cs:106:24:106:25 | "" | Assert.cs:106:24:106:25 | "" | 1 | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:110:13:110:13 | access to parameter b | 6 | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:111:9:111:33 | call to method IsFalse | 7 | -| Assert.cs:110:17:110:20 | null | Assert.cs:110:17:110:20 | null | 1 | -| Assert.cs:110:24:110:25 | "" | Assert.cs:110:24:110:25 | "" | 1 | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:114:13:114:13 | access to parameter b | 6 | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:115:23:115:31 | ... != ... | 6 | -| Assert.cs:114:17:114:20 | null | Assert.cs:114:17:114:20 | null | 1 | -| Assert.cs:114:24:114:25 | "" | Assert.cs:114:24:114:25 | "" | 1 | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:115:9:115:37 | call to method IsTrue | 2 | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:36:115:36 | access to parameter b | 1 | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:118:13:118:13 | access to parameter b | 6 | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:119:24:119:32 | ... == ... | 6 | -| Assert.cs:118:17:118:20 | null | Assert.cs:118:17:118:20 | null | 1 | -| Assert.cs:118:24:118:25 | "" | Assert.cs:118:24:118:25 | "" | 1 | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:119:9:119:39 | call to method IsFalse | 2 | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:37:119:38 | !... | 2 | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:122:13:122:13 | access to parameter b | 6 | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:123:23:123:31 | ... == ... | 6 | -| Assert.cs:122:17:122:20 | null | Assert.cs:122:17:122:20 | null | 1 | -| Assert.cs:122:24:122:25 | "" | Assert.cs:122:24:122:25 | "" | 1 | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:123:9:123:37 | call to method IsTrue | 2 | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:36:123:36 | access to parameter b | 1 | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:126:13:126:13 | access to parameter b | 6 | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:127:24:127:32 | ... != ... | 6 | -| Assert.cs:126:17:126:20 | null | Assert.cs:126:17:126:20 | null | 1 | -| Assert.cs:126:24:126:25 | "" | Assert.cs:126:24:126:25 | "" | 1 | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:127:9:127:39 | call to method IsFalse | 2 | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:37:127:38 | !... | 2 | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:84:10:84:12 | exit M12 (normal) | 5 | -| Assert.cs:131:18:131:32 | enter AssertTrueFalse | Assert.cs:131:18:131:32 | exit AssertTrueFalse | 4 | -| Assert.cs:138:10:138:12 | enter M13 | Assert.cs:140:9:140:35 | call to method AssertTrueFalse | 8 | -| Assert.cs:138:10:138:12 | exit M13 | Assert.cs:138:10:138:12 | exit M13 | 1 | -| Assert.cs:138:10:138:12 | exit M13 (abnormal) | Assert.cs:138:10:138:12 | exit M13 (abnormal) | 1 | -| Assert.cs:141:9:141:15 | return ...; | Assert.cs:138:10:138:12 | exit M13 (normal) | 2 | -| Assignments.cs:1:7:1:17 | enter Assignments | Assignments.cs:1:7:1:17 | exit Assignments | 7 | -| Assignments.cs:3:10:3:10 | enter M | Assignments.cs:3:10:3:10 | exit M | 31 | -| Assignments.cs:14:18:14:35 | enter (...) => ... | Assignments.cs:14:18:14:35 | exit (...) => ... | 4 | -| Assignments.cs:17:40:17:40 | enter + | Assignments.cs:17:40:17:40 | exit + | 6 | -| Assignments.cs:27:10:27:23 | enter SetParamSingle | Assignments.cs:27:10:27:23 | exit SetParamSingle | 7 | -| Assignments.cs:32:10:32:22 | enter SetParamMulti | Assignments.cs:32:10:32:22 | exit SetParamMulti | 10 | -| Assignments.cs:38:10:38:11 | enter M2 | Assignments.cs:38:10:38:11 | exit M2 | 28 | -| BreakInTry.cs:1:7:1:16 | enter BreakInTry | BreakInTry.cs:1:7:1:16 | exit BreakInTry | 7 | -| BreakInTry.cs:3:10:3:11 | enter M1 | BreakInTry.cs:7:33:7:36 | access to parameter args | 5 | -| BreakInTry.cs:3:10:3:11 | exit M1 (normal) | BreakInTry.cs:3:10:3:11 | exit M1 | 2 | -| BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | 1 | -| BreakInTry.cs:7:26:7:28 | String arg | BreakInTry.cs:9:21:9:31 | ... == ... | 6 | -| BreakInTry.cs:10:21:10:26 | break; | BreakInTry.cs:10:21:10:26 | break; | 1 | -| BreakInTry.cs:14:9:17:9 | {...} | BreakInTry.cs:15:17:15:28 | ... == ... | 5 | -| BreakInTry.cs:16:17:16:17 | ; | BreakInTry.cs:16:17:16:17 | ; | 1 | -| BreakInTry.cs:20:10:20:11 | enter M2 | BreakInTry.cs:22:29:22:32 | access to parameter args | 3 | -| BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | 1 | -| BreakInTry.cs:22:22:22:24 | String arg | BreakInTry.cs:26:21:26:31 | ... == ... | 8 | -| BreakInTry.cs:27:21:27:26 | break; | BreakInTry.cs:27:21:27:26 | break; | 1 | -| BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:31:21:31:32 | ... == ... | 5 | -| BreakInTry.cs:32:21:32:21 | ; | BreakInTry.cs:32:21:32:21 | ; | 1 | -| BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:20:10:20:11 | exit M2 | 3 | -| BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:42:17:42:28 | ... == ... | 8 | -| BreakInTry.cs:38:10:38:11 | exit M3 (normal) | BreakInTry.cs:38:10:38:11 | exit M3 | 2 | -| BreakInTry.cs:43:17:43:23 | return ...; | BreakInTry.cs:43:17:43:23 | return ...; | 1 | -| BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:47:33:47:36 | access to parameter args | 2 | -| BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | 1 | -| BreakInTry.cs:47:26:47:28 | String arg | BreakInTry.cs:49:21:49:31 | ... == ... | 6 | -| BreakInTry.cs:50:21:50:26 | break; | BreakInTry.cs:50:21:50:26 | break; | 1 | -| BreakInTry.cs:53:7:53:7 | ; | BreakInTry.cs:53:7:53:7 | ; | 1 | -| BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:60:17:60:28 | ... == ... | 8 | -| BreakInTry.cs:56:10:56:11 | exit M4 (normal) | BreakInTry.cs:56:10:56:11 | exit M4 | 2 | -| BreakInTry.cs:61:17:61:23 | return ...; | BreakInTry.cs:61:17:61:23 | return ...; | 1 | -| BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:65:33:65:36 | access to parameter args | 2 | -| BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | 1 | -| BreakInTry.cs:65:26:65:28 | String arg | BreakInTry.cs:67:21:67:31 | ... == ... | 6 | -| BreakInTry.cs:68:21:68:26 | break; | BreakInTry.cs:68:21:68:26 | break; | 1 | -| CompileTimeOperators.cs:3:7:3:26 | enter CompileTimeOperators | CompileTimeOperators.cs:3:7:3:26 | exit CompileTimeOperators | 7 | -| CompileTimeOperators.cs:5:9:5:15 | enter Default | CompileTimeOperators.cs:5:9:5:15 | exit Default | 6 | -| CompileTimeOperators.cs:10:9:10:14 | enter Sizeof | CompileTimeOperators.cs:10:9:10:14 | exit Sizeof | 6 | -| CompileTimeOperators.cs:15:10:15:15 | enter Typeof | CompileTimeOperators.cs:15:10:15:15 | exit Typeof | 6 | -| CompileTimeOperators.cs:20:12:20:17 | enter Nameof | CompileTimeOperators.cs:20:12:20:17 | exit Nameof | 6 | -| CompileTimeOperators.cs:26:7:26:22 | enter GotoInTryFinally | CompileTimeOperators.cs:26:7:26:22 | exit GotoInTryFinally | 7 | -| CompileTimeOperators.cs:28:10:28:10 | enter M | CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | 9 | -| CompileTimeOperators.cs:28:10:28:10 | exit M | CompileTimeOperators.cs:28:10:28:10 | exit M | 1 | -| CompileTimeOperators.cs:28:10:28:10 | exit M (abnormal) | CompileTimeOperators.cs:28:10:28:10 | exit M (abnormal) | 1 | -| CompileTimeOperators.cs:39:9:39:34 | ...; | CompileTimeOperators.cs:39:9:39:33 | call to method WriteLine | 3 | -| CompileTimeOperators.cs:40:9:40:11 | End: | CompileTimeOperators.cs:28:10:28:10 | exit M (normal) | 5 | -| ConditionalAccess.cs:1:7:1:23 | enter ConditionalAccess | ConditionalAccess.cs:1:7:1:23 | exit ConditionalAccess | 7 | -| ConditionalAccess.cs:3:12:3:13 | enter M1 | ConditionalAccess.cs:3:26:3:26 | access to parameter i | 2 | -| ConditionalAccess.cs:3:12:3:13 | exit M1 (normal) | ConditionalAccess.cs:3:12:3:13 | exit M1 | 2 | -| ConditionalAccess.cs:3:26:3:38 | call to method ToString | ConditionalAccess.cs:3:26:3:38 | call to method ToString | 1 | -| ConditionalAccess.cs:3:26:3:49 | call to method ToLower | ConditionalAccess.cs:3:26:3:49 | call to method ToLower | 1 | -| ConditionalAccess.cs:5:10:5:11 | enter M2 | ConditionalAccess.cs:5:26:5:26 | access to parameter s | 2 | -| ConditionalAccess.cs:5:10:5:11 | exit M2 (normal) | ConditionalAccess.cs:5:10:5:11 | exit M2 | 2 | -| ConditionalAccess.cs:5:26:5:34 | access to property Length | ConditionalAccess.cs:5:26:5:34 | access to property Length | 1 | -| ConditionalAccess.cs:7:10:7:11 | enter M3 | ConditionalAccess.cs:7:39:7:40 | access to parameter s1 | 2 | -| ConditionalAccess.cs:7:10:7:11 | exit M3 (normal) | ConditionalAccess.cs:7:10:7:11 | exit M3 | 2 | -| ConditionalAccess.cs:7:38:7:55 | access to property Length | ConditionalAccess.cs:7:38:7:55 | access to property Length | 1 | -| ConditionalAccess.cs:7:39:7:46 | ... ?? ... | ConditionalAccess.cs:7:39:7:46 | ... ?? ... | 1 | -| ConditionalAccess.cs:7:39:7:46 | [non-null] ... ?? ... | ConditionalAccess.cs:7:39:7:46 | [non-null] ... ?? ... | 1 | -| ConditionalAccess.cs:7:39:7:46 | [null] ... ?? ... | ConditionalAccess.cs:7:39:7:46 | [null] ... ?? ... | 1 | -| ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | 1 | -| ConditionalAccess.cs:9:9:9:10 | enter M4 | ConditionalAccess.cs:9:25:9:25 | access to parameter s | 2 | -| ConditionalAccess.cs:9:25:9:33 | access to property Length | ConditionalAccess.cs:9:25:9:33 | access to property Length | 1 | -| ConditionalAccess.cs:9:25:9:38 | ... ?? ... | ConditionalAccess.cs:9:9:9:10 | exit M4 | 3 | -| ConditionalAccess.cs:9:38:9:38 | 0 | ConditionalAccess.cs:9:38:9:38 | 0 | 1 | -| ConditionalAccess.cs:11:9:11:10 | enter M5 | ConditionalAccess.cs:13:13:13:13 | access to parameter s | 4 | -| ConditionalAccess.cs:11:9:11:10 | exit M5 (normal) | ConditionalAccess.cs:11:9:11:10 | exit M5 | 2 | -| ConditionalAccess.cs:13:13:13:21 | access to property Length | ConditionalAccess.cs:13:13:13:21 | access to property Length | 1 | -| ConditionalAccess.cs:13:25:13:25 | 0 | ConditionalAccess.cs:13:13:13:25 | ... > ... | 3 | -| ConditionalAccess.cs:14:20:14:20 | 0 | ConditionalAccess.cs:14:13:14:21 | return ...; | 2 | -| ConditionalAccess.cs:16:20:16:20 | 1 | ConditionalAccess.cs:16:13:16:21 | return ...; | 2 | -| ConditionalAccess.cs:19:12:19:13 | enter M6 | ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | 2 | -| ConditionalAccess.cs:19:12:19:13 | exit M6 (normal) | ConditionalAccess.cs:19:12:19:13 | exit M6 | 2 | -| ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | ConditionalAccess.cs:19:40:19:60 | call to method CommaJoinWith | 2 | -| ConditionalAccess.cs:21:10:21:11 | enter M7 | ConditionalAccess.cs:23:18:23:29 | (...) ... | 5 | -| ConditionalAccess.cs:23:13:23:38 | Nullable j = ... | ConditionalAccess.cs:24:18:24:24 | (...) ... | 4 | -| ConditionalAccess.cs:24:17:24:37 | call to method ToString | ConditionalAccess.cs:25:13:25:14 | "" | 4 | -| ConditionalAccess.cs:25:31:25:31 | access to local variable s | ConditionalAccess.cs:21:10:21:11 | exit M7 | 5 | -| ConditionalAccess.cs:30:10:30:12 | enter Out | ConditionalAccess.cs:30:10:30:12 | exit Out | 5 | -| ConditionalAccess.cs:32:10:32:11 | enter M8 | ConditionalAccess.cs:35:9:35:12 | access to property Prop | 8 | -| ConditionalAccess.cs:32:10:32:11 | exit M8 (normal) | ConditionalAccess.cs:32:10:32:11 | exit M8 | 2 | -| ConditionalAccess.cs:35:9:35:24 | call to method Out | ConditionalAccess.cs:35:9:35:24 | call to method Out | 1 | -| ConditionalAccess.cs:42:9:42:11 | enter get_Item | ConditionalAccess.cs:42:9:42:11 | exit get_Item | 6 | -| ConditionalAccess.cs:43:9:43:11 | enter set_Item | ConditionalAccess.cs:43:9:43:11 | exit set_Item | 4 | -| ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:48:9:48:10 | access to parameter ca | 4 | -| ConditionalAccess.cs:48:24:48:25 | 42 | ConditionalAccess.cs:48:12:48:25 | ... = ... | 3 | -| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:49:9:49:10 | access to parameter ca | 2 | -| ConditionalAccess.cs:49:26:49:32 | "Hello" | ConditionalAccess.cs:49:12:49:32 | ... = ... | 3 | -| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:50:9:50:10 | access to parameter ca | 2 | -| ConditionalAccess.cs:50:13:50:13 | 0 | ConditionalAccess.cs:50:12:50:23 | ... = ... | 4 | -| ConditionalAccess.cs:51:9:51:16 | access to property Prop | ConditionalAccess.cs:51:9:51:16 | access to property Prop | 1 | -| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:51:9:51:10 | access to parameter ca | 2 | -| ConditionalAccess.cs:51:30:51:31 | 84 | ConditionalAccess.cs:51:18:51:31 | ... = ... | 3 | -| ConditionalAccess.cs:52:9:52:16 | access to property Prop | ConditionalAccess.cs:52:9:52:16 | access to property Prop | 1 | -| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:52:9:52:10 | access to parameter ca | 2 | -| ConditionalAccess.cs:52:32:52:38 | "World" | ConditionalAccess.cs:52:18:52:38 | ... = ... | 3 | -| ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:53:9:53:20 | access to field IntField | 1 | -| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | 2 | -| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | 4 | -| ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | 1 | -| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:46:10:46:11 | exit M9 | 4 | -| ConditionalAccess.cs:60:26:60:38 | enter CommaJoinWith | ConditionalAccess.cs:60:26:60:38 | exit CommaJoinWith | 8 | -| Conditions.cs:1:7:1:16 | enter Conditions | Conditions.cs:1:7:1:16 | exit Conditions | 7 | -| Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:5:13:5:15 | access to parameter inc | 4 | -| Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | Conditions.cs:3:10:3:19 | exit IncrOrDecr | 2 | -| Conditions.cs:6:13:6:16 | ...; | Conditions.cs:6:13:6:15 | ...++ | 3 | -| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:7:14:7:16 | access to parameter inc | 2 | -| Conditions.cs:7:13:7:16 | [false] !... | Conditions.cs:7:13:7:16 | [false] !... | 1 | -| Conditions.cs:7:13:7:16 | [true] !... | Conditions.cs:7:13:7:16 | [true] !... | 1 | -| Conditions.cs:8:13:8:16 | ...; | Conditions.cs:8:13:8:15 | ...-- | 3 | -| Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:14:13:14:13 | access to parameter b | 7 | -| Conditions.cs:15:13:15:16 | ...; | Conditions.cs:15:13:15:15 | ...++ | 3 | -| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:16:13:16:17 | ... > ... | 4 | -| Conditions.cs:17:13:18:20 | if (...) ... | Conditions.cs:17:18:17:18 | access to parameter b | 2 | -| Conditions.cs:17:17:17:18 | [false] !... | Conditions.cs:17:17:17:18 | [false] !... | 1 | -| Conditions.cs:17:17:17:18 | [true] !... | Conditions.cs:17:17:17:18 | [true] !... | 1 | -| Conditions.cs:18:17:18:20 | ...; | Conditions.cs:18:17:18:19 | ...-- | 3 | -| Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:11:9:11:10 | exit M1 | 4 | -| Conditions.cs:22:9:22:10 | enter M2 | Conditions.cs:25:13:25:14 | access to parameter b1 | 7 | -| Conditions.cs:26:13:27:20 | if (...) ... | Conditions.cs:26:17:26:18 | access to parameter b2 | 2 | -| Conditions.cs:27:17:27:20 | ...; | Conditions.cs:27:17:27:19 | ...++ | 3 | -| Conditions.cs:28:9:29:16 | if (...) ... | Conditions.cs:28:13:28:14 | access to parameter b2 | 2 | -| Conditions.cs:29:13:29:16 | ...; | Conditions.cs:29:13:29:15 | ...++ | 3 | -| Conditions.cs:30:16:30:16 | access to local variable x | Conditions.cs:22:9:22:10 | exit M2 | 4 | -| Conditions.cs:33:9:33:10 | enter M3 | Conditions.cs:37:13:37:14 | access to parameter b1 | 10 | -| Conditions.cs:38:13:38:20 | ...; | Conditions.cs:38:13:38:19 | ... = ... | 3 | -| Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:39:13:39:14 | access to local variable b2 | 2 | -| Conditions.cs:40:13:40:16 | ...; | Conditions.cs:40:13:40:15 | ...++ | 3 | -| Conditions.cs:41:9:42:16 | if (...) ... | Conditions.cs:41:13:41:14 | access to local variable b2 | 2 | -| Conditions.cs:42:13:42:16 | ...; | Conditions.cs:42:13:42:15 | ...++ | 3 | -| Conditions.cs:43:16:43:16 | access to local variable x | Conditions.cs:33:9:33:10 | exit M3 | 4 | -| Conditions.cs:46:9:46:10 | enter M4 | Conditions.cs:49:9:53:9 | while (...) ... | 6 | -| Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:49:16:49:22 | ... > ... | 4 | -| Conditions.cs:50:9:53:9 | {...} | Conditions.cs:51:17:51:17 | access to parameter b | 3 | -| Conditions.cs:52:17:52:20 | ...; | Conditions.cs:52:17:52:19 | ...++ | 3 | -| Conditions.cs:54:16:54:16 | access to local variable y | Conditions.cs:46:9:46:10 | exit M4 | 4 | -| Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:60:9:64:9 | while (...) ... | 6 | -| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:60:16:60:22 | ... > ... | 4 | -| Conditions.cs:61:9:64:9 | {...} | Conditions.cs:62:17:62:17 | access to parameter b | 3 | -| Conditions.cs:63:17:63:20 | ...; | Conditions.cs:63:17:63:19 | ...++ | 3 | -| Conditions.cs:65:9:66:16 | if (...) ... | Conditions.cs:65:13:65:13 | access to parameter b | 2 | -| Conditions.cs:66:13:66:16 | ...; | Conditions.cs:66:13:66:15 | ...++ | 3 | -| Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:57:9:57:10 | exit M5 | 4 | -| Conditions.cs:70:9:70:10 | enter M6 | Conditions.cs:74:27:74:28 | access to parameter ss | 12 | -| Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | 1 | +| AccessorCalls.cs:1:7:1:19 | Entry | AccessorCalls.cs:1:7:1:19 | Exit | 11 | +| AccessorCalls.cs:5:23:5:25 | Entry | AccessorCalls.cs:5:23:5:25 | Exit | 5 | +| AccessorCalls.cs:5:33:5:35 | Entry | AccessorCalls.cs:5:33:5:35 | Exit | 6 | +| AccessorCalls.cs:7:32:7:34 | Entry | AccessorCalls.cs:7:32:7:34 | Exit | 5 | +| AccessorCalls.cs:7:40:7:45 | Entry | AccessorCalls.cs:7:40:7:45 | Exit | 5 | +| AccessorCalls.cs:10:10:10:11 | Entry | AccessorCalls.cs:10:10:10:11 | Exit | 67 | +| AccessorCalls.cs:19:10:19:11 | Entry | AccessorCalls.cs:19:10:19:11 | Exit | 91 | +| AccessorCalls.cs:28:10:28:11 | Entry | AccessorCalls.cs:28:10:28:11 | Exit | 33 | +| AccessorCalls.cs:35:10:35:11 | Entry | AccessorCalls.cs:35:10:35:11 | Exit | 42 | +| AccessorCalls.cs:42:10:42:11 | Entry | AccessorCalls.cs:42:10:42:11 | Exit | 46 | +| AccessorCalls.cs:49:10:49:11 | Entry | AccessorCalls.cs:49:10:49:11 | Exit | 64 | +| AccessorCalls.cs:56:10:56:11 | Entry | AccessorCalls.cs:56:10:56:11 | Exit | 51 | +| AccessorCalls.cs:61:10:61:11 | Entry | AccessorCalls.cs:61:10:61:11 | Exit | 69 | +| AccessorCalls.cs:66:10:66:11 | Entry | AccessorCalls.cs:66:10:66:11 | Exit | 107 | +| ArrayCreation.cs:1:7:1:19 | Entry | ArrayCreation.cs:1:7:1:19 | Exit | 11 | +| ArrayCreation.cs:3:11:3:12 | Entry | ArrayCreation.cs:3:11:3:12 | Exit | 7 | +| ArrayCreation.cs:5:12:5:13 | Entry | ArrayCreation.cs:5:12:5:13 | Exit | 8 | +| ArrayCreation.cs:7:11:7:12 | Entry | ArrayCreation.cs:7:11:7:12 | Exit | 12 | +| ArrayCreation.cs:9:12:9:13 | Entry | ArrayCreation.cs:9:12:9:13 | Exit | 21 | +| Assert.cs:5:7:5:17 | Entry | Assert.cs:5:7:5:17 | Exit | 11 | +| Assert.cs:7:10:7:11 | Entry | Assert.cs:9:20:9:20 | access to parameter b | 8 | +| Assert.cs:7:10:7:11 | Exceptional Exit | Assert.cs:7:10:7:11 | Exceptional Exit | 1 | +| Assert.cs:7:10:7:11 | Exit | Assert.cs:7:10:7:11 | Exit | 1 | +| Assert.cs:9:20:9:20 | After access to parameter b [false] | Assert.cs:9:31:9:32 | "" | 2 | +| Assert.cs:9:20:9:20 | After access to parameter b [true] | Assert.cs:9:24:9:27 | null | 2 | +| Assert.cs:9:20:9:32 | After ... ? ... : ... | Assert.cs:10:9:10:31 | call to method Assert | 12 | +| Assert.cs:10:9:10:31 | After call to method Assert | Assert.cs:7:10:7:11 | Normal Exit | 13 | +| Assert.cs:14:10:14:11 | Entry | Assert.cs:16:20:16:20 | access to parameter b | 8 | +| Assert.cs:14:10:14:11 | Exceptional Exit | Assert.cs:14:10:14:11 | Exceptional Exit | 1 | +| Assert.cs:14:10:14:11 | Exit | Assert.cs:14:10:14:11 | Exit | 1 | +| Assert.cs:16:20:16:20 | After access to parameter b [false] | Assert.cs:16:31:16:32 | "" | 2 | +| Assert.cs:16:20:16:20 | After access to parameter b [true] | Assert.cs:16:24:16:27 | null | 2 | +| Assert.cs:16:20:16:32 | After ... ? ... : ... | Assert.cs:17:9:17:24 | call to method IsNull | 8 | +| Assert.cs:17:9:17:24 | After call to method IsNull | Assert.cs:14:10:14:11 | Normal Exit | 13 | +| Assert.cs:21:10:21:11 | Entry | Assert.cs:23:20:23:20 | access to parameter b | 8 | +| Assert.cs:21:10:21:11 | Exceptional Exit | Assert.cs:21:10:21:11 | Exceptional Exit | 1 | +| Assert.cs:21:10:21:11 | Exit | Assert.cs:21:10:21:11 | Exit | 1 | +| Assert.cs:23:20:23:20 | After access to parameter b [false] | Assert.cs:23:31:23:32 | "" | 2 | +| Assert.cs:23:20:23:20 | After access to parameter b [true] | Assert.cs:23:24:23:27 | null | 2 | +| Assert.cs:23:20:23:32 | After ... ? ... : ... | Assert.cs:24:9:24:27 | call to method IsNotNull | 8 | +| Assert.cs:24:9:24:27 | After call to method IsNotNull | Assert.cs:21:10:21:11 | Normal Exit | 13 | +| Assert.cs:28:10:28:11 | Entry | Assert.cs:30:20:30:20 | access to parameter b | 8 | +| Assert.cs:28:10:28:11 | Exceptional Exit | Assert.cs:28:10:28:11 | Exceptional Exit | 1 | +| Assert.cs:28:10:28:11 | Exit | Assert.cs:28:10:28:11 | Exit | 1 | +| Assert.cs:30:20:30:20 | After access to parameter b [false] | Assert.cs:30:31:30:32 | "" | 2 | +| Assert.cs:30:20:30:20 | After access to parameter b [true] | Assert.cs:30:24:30:27 | null | 2 | +| Assert.cs:30:20:30:32 | After ... ? ... : ... | Assert.cs:31:9:31:32 | call to method IsTrue | 12 | +| Assert.cs:31:9:31:32 | After call to method IsTrue | Assert.cs:28:10:28:11 | Normal Exit | 13 | +| Assert.cs:35:10:35:11 | Entry | Assert.cs:37:20:37:20 | access to parameter b | 8 | +| Assert.cs:35:10:35:11 | Exceptional Exit | Assert.cs:35:10:35:11 | Exceptional Exit | 1 | +| Assert.cs:35:10:35:11 | Exit | Assert.cs:35:10:35:11 | Exit | 1 | +| Assert.cs:37:20:37:20 | After access to parameter b [false] | Assert.cs:37:31:37:32 | "" | 2 | +| Assert.cs:37:20:37:20 | After access to parameter b [true] | Assert.cs:37:24:37:27 | null | 2 | +| Assert.cs:37:20:37:32 | After ... ? ... : ... | Assert.cs:38:9:38:32 | call to method IsTrue | 12 | +| Assert.cs:38:9:38:32 | After call to method IsTrue | Assert.cs:35:10:35:11 | Normal Exit | 13 | +| Assert.cs:42:10:42:11 | Entry | Assert.cs:44:20:44:20 | access to parameter b | 8 | +| Assert.cs:42:10:42:11 | Exceptional Exit | Assert.cs:42:10:42:11 | Exceptional Exit | 1 | +| Assert.cs:42:10:42:11 | Exit | Assert.cs:42:10:42:11 | Exit | 1 | +| Assert.cs:44:20:44:20 | After access to parameter b [false] | Assert.cs:44:31:44:32 | "" | 2 | +| Assert.cs:44:20:44:20 | After access to parameter b [true] | Assert.cs:44:24:44:27 | null | 2 | +| Assert.cs:44:20:44:32 | After ... ? ... : ... | Assert.cs:45:9:45:33 | call to method IsFalse | 12 | +| Assert.cs:45:9:45:33 | After call to method IsFalse | Assert.cs:42:10:42:11 | Normal Exit | 13 | +| Assert.cs:49:10:49:11 | Entry | Assert.cs:51:20:51:20 | access to parameter b | 8 | +| Assert.cs:49:10:49:11 | Exceptional Exit | Assert.cs:49:10:49:11 | Exceptional Exit | 1 | +| Assert.cs:49:10:49:11 | Exit | Assert.cs:49:10:49:11 | Exit | 1 | +| Assert.cs:51:20:51:20 | After access to parameter b [false] | Assert.cs:51:31:51:32 | "" | 2 | +| Assert.cs:51:20:51:20 | After access to parameter b [true] | Assert.cs:51:24:51:27 | null | 2 | +| Assert.cs:51:20:51:32 | After ... ? ... : ... | Assert.cs:52:9:52:33 | call to method IsFalse | 12 | +| Assert.cs:52:9:52:33 | After call to method IsFalse | Assert.cs:49:10:49:11 | Normal Exit | 13 | +| Assert.cs:56:10:56:11 | Entry | Assert.cs:58:20:58:20 | access to parameter b | 8 | +| Assert.cs:56:10:56:11 | Exceptional Exit | Assert.cs:56:10:56:11 | Exceptional Exit | 1 | +| Assert.cs:56:10:56:11 | Exit | Assert.cs:56:10:56:11 | Exit | 1 | +| Assert.cs:58:20:58:20 | After access to parameter b [false] | Assert.cs:58:31:58:32 | "" | 2 | +| Assert.cs:58:20:58:20 | After access to parameter b [true] | Assert.cs:58:24:58:27 | null | 2 | +| Assert.cs:58:20:58:32 | After ... ? ... : ... | Assert.cs:59:23:59:31 | ... != ... | 11 | +| Assert.cs:59:9:59:37 | After call to method IsTrue | Assert.cs:56:10:56:11 | Normal Exit | 13 | +| Assert.cs:59:23:59:31 | After ... != ... [false] | Assert.cs:59:23:59:31 | After ... != ... [false] | 1 | +| Assert.cs:59:23:59:31 | After ... != ... [true] | Assert.cs:59:36:59:36 | access to parameter b | 2 | +| Assert.cs:59:23:59:36 | After ... && ... | Assert.cs:59:9:59:37 | call to method IsTrue | 2 | +| Assert.cs:63:10:63:11 | Entry | Assert.cs:65:20:65:20 | access to parameter b | 8 | +| Assert.cs:63:10:63:11 | Exceptional Exit | Assert.cs:63:10:63:11 | Exceptional Exit | 1 | +| Assert.cs:63:10:63:11 | Exit | Assert.cs:63:10:63:11 | Exit | 1 | +| Assert.cs:65:20:65:20 | After access to parameter b [false] | Assert.cs:65:31:65:32 | "" | 2 | +| Assert.cs:65:20:65:20 | After access to parameter b [true] | Assert.cs:65:24:65:27 | null | 2 | +| Assert.cs:65:20:65:32 | After ... ? ... : ... | Assert.cs:66:24:66:32 | ... == ... | 11 | +| Assert.cs:66:9:66:38 | After call to method IsFalse | Assert.cs:63:10:63:11 | Normal Exit | 13 | +| Assert.cs:66:24:66:32 | After ... == ... [false] | Assert.cs:66:37:66:37 | access to parameter b | 2 | +| Assert.cs:66:24:66:32 | After ... == ... [true] | Assert.cs:66:24:66:32 | After ... == ... [true] | 1 | +| Assert.cs:66:24:66:37 | After ... \|\| ... | Assert.cs:66:9:66:38 | call to method IsFalse | 2 | +| Assert.cs:70:10:70:12 | Entry | Assert.cs:72:20:72:20 | access to parameter b | 8 | +| Assert.cs:70:10:70:12 | Exceptional Exit | Assert.cs:70:10:70:12 | Exceptional Exit | 1 | +| Assert.cs:70:10:70:12 | Exit | Assert.cs:70:10:70:12 | Exit | 1 | +| Assert.cs:72:20:72:20 | After access to parameter b [false] | Assert.cs:72:31:72:32 | "" | 2 | +| Assert.cs:72:20:72:20 | After access to parameter b [true] | Assert.cs:72:24:72:27 | null | 2 | +| Assert.cs:72:20:72:32 | After ... ? ... : ... | Assert.cs:73:23:73:31 | ... == ... | 11 | +| Assert.cs:73:9:73:37 | After call to method IsTrue | Assert.cs:70:10:70:12 | Normal Exit | 13 | +| Assert.cs:73:23:73:31 | After ... == ... [false] | Assert.cs:73:23:73:31 | After ... == ... [false] | 1 | +| Assert.cs:73:23:73:31 | After ... == ... [true] | Assert.cs:73:36:73:36 | access to parameter b | 2 | +| Assert.cs:73:23:73:36 | After ... && ... | Assert.cs:73:9:73:37 | call to method IsTrue | 2 | +| Assert.cs:77:10:77:12 | Entry | Assert.cs:79:20:79:20 | access to parameter b | 8 | +| Assert.cs:77:10:77:12 | Exceptional Exit | Assert.cs:77:10:77:12 | Exceptional Exit | 1 | +| Assert.cs:77:10:77:12 | Exit | Assert.cs:77:10:77:12 | Exit | 1 | +| Assert.cs:79:20:79:20 | After access to parameter b [false] | Assert.cs:79:31:79:32 | "" | 2 | +| Assert.cs:79:20:79:20 | After access to parameter b [true] | Assert.cs:79:24:79:27 | null | 2 | +| Assert.cs:79:20:79:32 | After ... ? ... : ... | Assert.cs:80:24:80:32 | ... != ... | 11 | +| Assert.cs:80:9:80:38 | After call to method IsFalse | Assert.cs:77:10:77:12 | Normal Exit | 13 | +| Assert.cs:80:24:80:32 | After ... != ... [false] | Assert.cs:80:37:80:37 | access to parameter b | 2 | +| Assert.cs:80:24:80:32 | After ... != ... [true] | Assert.cs:80:24:80:32 | After ... != ... [true] | 1 | +| Assert.cs:80:24:80:37 | After ... \|\| ... | Assert.cs:80:9:80:38 | call to method IsFalse | 2 | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:86:20:86:20 | access to parameter b | 8 | +| Assert.cs:84:10:84:12 | Exceptional Exit | Assert.cs:84:10:84:12 | Exceptional Exit | 1 | +| Assert.cs:84:10:84:12 | Exit | Assert.cs:84:10:84:12 | Exit | 1 | +| Assert.cs:86:20:86:20 | After access to parameter b [false] | Assert.cs:86:31:86:32 | "" | 2 | +| Assert.cs:86:20:86:20 | After access to parameter b [true] | Assert.cs:86:24:86:27 | null | 2 | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:87:9:87:31 | call to method Assert | 12 | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:90:13:90:13 | access to parameter b | 16 | +| Assert.cs:90:13:90:13 | After access to parameter b [false] | Assert.cs:90:24:90:25 | "" | 2 | +| Assert.cs:90:13:90:13 | After access to parameter b [true] | Assert.cs:90:17:90:20 | null | 2 | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:91:9:91:24 | call to method IsNull | 8 | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:94:13:94:13 | access to parameter b | 16 | +| Assert.cs:94:13:94:13 | After access to parameter b [false] | Assert.cs:94:24:94:25 | "" | 2 | +| Assert.cs:94:13:94:13 | After access to parameter b [true] | Assert.cs:94:17:94:20 | null | 2 | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:95:9:95:27 | call to method IsNotNull | 8 | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:98:13:98:13 | access to parameter b | 16 | +| Assert.cs:98:13:98:13 | After access to parameter b [false] | Assert.cs:98:24:98:25 | "" | 2 | +| Assert.cs:98:13:98:13 | After access to parameter b [true] | Assert.cs:98:17:98:20 | null | 2 | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:99:9:99:32 | call to method IsTrue | 12 | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:102:13:102:13 | access to parameter b | 16 | +| Assert.cs:102:13:102:13 | After access to parameter b [false] | Assert.cs:102:24:102:25 | "" | 2 | +| Assert.cs:102:13:102:13 | After access to parameter b [true] | Assert.cs:102:17:102:20 | null | 2 | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:103:9:103:32 | call to method IsTrue | 12 | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:106:13:106:13 | access to parameter b | 16 | +| Assert.cs:106:13:106:13 | After access to parameter b [false] | Assert.cs:106:24:106:25 | "" | 2 | +| Assert.cs:106:13:106:13 | After access to parameter b [true] | Assert.cs:106:17:106:20 | null | 2 | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:107:9:107:33 | call to method IsFalse | 12 | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:110:13:110:13 | access to parameter b | 16 | +| Assert.cs:110:13:110:13 | After access to parameter b [false] | Assert.cs:110:24:110:25 | "" | 2 | +| Assert.cs:110:13:110:13 | After access to parameter b [true] | Assert.cs:110:17:110:20 | null | 2 | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:111:9:111:33 | call to method IsFalse | 12 | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:114:13:114:13 | access to parameter b | 16 | +| Assert.cs:114:13:114:13 | After access to parameter b [false] | Assert.cs:114:24:114:25 | "" | 2 | +| Assert.cs:114:13:114:13 | After access to parameter b [true] | Assert.cs:114:17:114:20 | null | 2 | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:115:23:115:31 | ... != ... | 11 | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:118:13:118:13 | access to parameter b | 16 | +| Assert.cs:115:23:115:31 | After ... != ... [false] | Assert.cs:115:23:115:31 | After ... != ... [false] | 1 | +| Assert.cs:115:23:115:31 | After ... != ... [true] | Assert.cs:115:36:115:36 | access to parameter b | 2 | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:115:9:115:37 | call to method IsTrue | 2 | +| Assert.cs:118:13:118:13 | After access to parameter b [false] | Assert.cs:118:24:118:25 | "" | 2 | +| Assert.cs:118:13:118:13 | After access to parameter b [true] | Assert.cs:118:17:118:20 | null | 2 | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:119:24:119:32 | ... == ... | 11 | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:122:13:122:13 | access to parameter b | 16 | +| Assert.cs:119:24:119:32 | After ... == ... [false] | Assert.cs:119:37:119:38 | After !... | 4 | +| Assert.cs:119:24:119:32 | After ... == ... [true] | Assert.cs:119:24:119:32 | After ... == ... [true] | 1 | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:119:9:119:39 | call to method IsFalse | 2 | +| Assert.cs:122:13:122:13 | After access to parameter b [false] | Assert.cs:122:24:122:25 | "" | 2 | +| Assert.cs:122:13:122:13 | After access to parameter b [true] | Assert.cs:122:17:122:20 | null | 2 | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:123:23:123:31 | ... == ... | 11 | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:126:13:126:13 | access to parameter b | 16 | +| Assert.cs:123:23:123:31 | After ... == ... [false] | Assert.cs:123:23:123:31 | After ... == ... [false] | 1 | +| Assert.cs:123:23:123:31 | After ... == ... [true] | Assert.cs:123:36:123:36 | access to parameter b | 2 | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:123:9:123:37 | call to method IsTrue | 2 | +| Assert.cs:126:13:126:13 | After access to parameter b [false] | Assert.cs:126:24:126:25 | "" | 2 | +| Assert.cs:126:13:126:13 | After access to parameter b [true] | Assert.cs:126:17:126:20 | null | 2 | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:127:24:127:32 | ... != ... | 11 | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:84:10:84:12 | Normal Exit | 13 | +| Assert.cs:127:24:127:32 | After ... != ... [false] | Assert.cs:127:37:127:38 | After !... | 4 | +| Assert.cs:127:24:127:32 | After ... != ... [true] | Assert.cs:127:24:127:32 | After ... != ... [true] | 1 | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:127:9:127:39 | call to method IsFalse | 2 | +| Assert.cs:131:18:131:32 | Entry | Assert.cs:131:18:131:32 | Exit | 7 | +| Assert.cs:138:10:138:12 | Entry | Assert.cs:140:9:140:35 | call to method AssertTrueFalse | 12 | +| Assert.cs:138:10:138:12 | Exceptional Exit | Assert.cs:138:10:138:12 | Exceptional Exit | 1 | +| Assert.cs:138:10:138:12 | Exit | Assert.cs:138:10:138:12 | Exit | 1 | +| Assert.cs:140:9:140:35 | After call to method AssertTrueFalse | Assert.cs:138:10:138:12 | Normal Exit | 5 | +| Assignments.cs:1:7:1:17 | Entry | Assignments.cs:1:7:1:17 | Exit | 11 | +| Assignments.cs:3:10:3:10 | Entry | Assignments.cs:3:10:3:10 | Exit | 62 | +| Assignments.cs:14:18:14:35 | Entry | Assignments.cs:14:18:14:35 | Exit | 6 | +| Assignments.cs:17:40:17:40 | Entry | Assignments.cs:17:40:17:40 | Exit | 9 | +| Assignments.cs:27:10:27:23 | Entry | Assignments.cs:27:10:27:23 | Exit | 13 | +| Assignments.cs:32:10:32:22 | Entry | Assignments.cs:32:10:32:22 | Exit | 22 | +| Assignments.cs:38:10:38:11 | Entry | Assignments.cs:38:10:38:11 | Exit | 52 | +| BreakInTry.cs:1:7:1:16 | Entry | BreakInTry.cs:1:7:1:16 | Exit | 11 | +| BreakInTry.cs:3:10:3:11 | Entry | BreakInTry.cs:7:33:7:36 | access to parameter args | 7 | +| BreakInTry.cs:7:13:11:13 | After foreach (... ... in ...) ... | BreakInTry.cs:15:17:15:28 | ... == ... | 8 | +| BreakInTry.cs:7:26:7:28 | String arg | BreakInTry.cs:9:21:9:31 | ... == ... | 7 | +| BreakInTry.cs:7:33:7:36 | After access to parameter args [empty] | BreakInTry.cs:7:33:7:36 | After access to parameter args [empty] | 1 | +| BreakInTry.cs:7:33:7:36 | After access to parameter args [non-empty] | BreakInTry.cs:7:33:7:36 | After access to parameter args [non-empty] | 1 | +| BreakInTry.cs:9:21:9:31 | After ... == ... [false] | BreakInTry.cs:7:13:11:13 | [LoopHeader] foreach (... ... in ...) ... | 4 | +| BreakInTry.cs:9:21:9:31 | After ... == ... [true] | BreakInTry.cs:10:21:10:26 | break; | 3 | +| BreakInTry.cs:15:13:16:17 | After if (...) ... | BreakInTry.cs:3:10:3:11 | Exit | 6 | +| BreakInTry.cs:15:17:15:28 | After ... == ... [false] | BreakInTry.cs:15:17:15:28 | After ... == ... [false] | 1 | +| BreakInTry.cs:15:17:15:28 | After ... == ... [true] | BreakInTry.cs:16:17:16:17 | ; | 2 | +| BreakInTry.cs:20:10:20:11 | Entry | BreakInTry.cs:22:29:22:32 | access to parameter args | 5 | +| BreakInTry.cs:22:9:34:9 | After foreach (... ... in ...) ... | BreakInTry.cs:20:10:20:11 | Exit | 5 | +| BreakInTry.cs:22:22:22:24 | String arg | BreakInTry.cs:26:21:26:31 | ... == ... | 9 | +| BreakInTry.cs:22:29:22:32 | After access to parameter args [empty] | BreakInTry.cs:22:29:22:32 | After access to parameter args [empty] | 1 | +| BreakInTry.cs:22:29:22:32 | After access to parameter args [non-empty] | BreakInTry.cs:22:29:22:32 | After access to parameter args [non-empty] | 1 | +| BreakInTry.cs:24:13:33:13 | After try {...} ... | BreakInTry.cs:22:9:34:9 | [LoopHeader] foreach (... ... in ...) ... | 3 | +| BreakInTry.cs:26:21:26:31 | After ... == ... [false] | BreakInTry.cs:25:13:28:13 | After {...} | 3 | +| BreakInTry.cs:26:21:26:31 | After ... == ... [true] | BreakInTry.cs:27:21:27:26 | break; | 3 | +| BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:31:21:31:32 | ... == ... | 6 | +| BreakInTry.cs:31:17:32:21 | After if (...) ... | BreakInTry.cs:30:13:33:13 | After {...} | 2 | +| BreakInTry.cs:31:21:31:32 | After ... == ... [false] | BreakInTry.cs:31:21:31:32 | After ... == ... [false] | 1 | +| BreakInTry.cs:31:21:31:32 | After ... == ... [true] | BreakInTry.cs:32:21:32:21 | ; | 2 | +| BreakInTry.cs:38:10:38:11 | Entry | BreakInTry.cs:42:17:42:28 | ... == ... | 10 | +| BreakInTry.cs:38:10:38:11 | Normal Exit | BreakInTry.cs:38:10:38:11 | Exit | 2 | +| BreakInTry.cs:40:9:52:9 | After try {...} ... | BreakInTry.cs:39:5:54:5 | After {...} | 3 | +| BreakInTry.cs:42:17:42:28 | After ... == ... [false] | BreakInTry.cs:41:9:44:9 | After {...} | 3 | +| BreakInTry.cs:42:17:42:28 | After ... == ... [true] | BreakInTry.cs:43:17:43:23 | return ...; | 3 | +| BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:47:33:47:36 | access to parameter args | 3 | +| BreakInTry.cs:47:13:51:13 | After foreach (... ... in ...) ... | BreakInTry.cs:46:9:52:9 | After {...} | 2 | +| BreakInTry.cs:47:26:47:28 | String arg | BreakInTry.cs:49:21:49:31 | ... == ... | 7 | +| BreakInTry.cs:47:33:47:36 | After access to parameter args [empty] | BreakInTry.cs:47:33:47:36 | After access to parameter args [empty] | 1 | +| BreakInTry.cs:47:33:47:36 | After access to parameter args [non-empty] | BreakInTry.cs:47:33:47:36 | After access to parameter args [non-empty] | 1 | +| BreakInTry.cs:49:21:49:31 | After ... == ... [false] | BreakInTry.cs:47:13:51:13 | [LoopHeader] foreach (... ... in ...) ... | 4 | +| BreakInTry.cs:49:21:49:31 | After ... == ... [true] | BreakInTry.cs:50:21:50:26 | break; | 3 | +| BreakInTry.cs:56:10:56:11 | Entry | BreakInTry.cs:60:17:60:28 | ... == ... | 10 | +| BreakInTry.cs:56:10:56:11 | Normal Exit | BreakInTry.cs:56:10:56:11 | Exit | 2 | +| BreakInTry.cs:58:9:70:9 | After try {...} ... | BreakInTry.cs:57:5:71:5 | After {...} | 2 | +| BreakInTry.cs:60:17:60:28 | After ... == ... [false] | BreakInTry.cs:59:9:62:9 | After {...} | 3 | +| BreakInTry.cs:60:17:60:28 | After ... == ... [true] | BreakInTry.cs:61:17:61:23 | return ...; | 3 | +| BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:65:33:65:36 | access to parameter args | 3 | +| BreakInTry.cs:65:13:69:13 | After foreach (... ... in ...) ... | BreakInTry.cs:64:9:70:9 | After {...} | 2 | +| BreakInTry.cs:65:26:65:28 | String arg | BreakInTry.cs:67:21:67:31 | ... == ... | 7 | +| BreakInTry.cs:65:33:65:36 | After access to parameter args [empty] | BreakInTry.cs:65:33:65:36 | After access to parameter args [empty] | 1 | +| BreakInTry.cs:65:33:65:36 | After access to parameter args [non-empty] | BreakInTry.cs:65:33:65:36 | After access to parameter args [non-empty] | 1 | +| BreakInTry.cs:67:21:67:31 | After ... == ... [false] | BreakInTry.cs:65:13:69:13 | [LoopHeader] foreach (... ... in ...) ... | 4 | +| BreakInTry.cs:67:21:67:31 | After ... == ... [true] | BreakInTry.cs:68:21:68:26 | break; | 3 | +| CompileTimeOperators.cs:3:7:3:26 | Entry | CompileTimeOperators.cs:3:7:3:26 | Exit | 11 | +| CompileTimeOperators.cs:5:9:5:15 | Entry | CompileTimeOperators.cs:5:9:5:15 | Exit | 7 | +| CompileTimeOperators.cs:10:9:10:14 | Entry | CompileTimeOperators.cs:10:9:10:14 | Exit | 7 | +| CompileTimeOperators.cs:15:10:15:15 | Entry | CompileTimeOperators.cs:15:10:15:15 | Exit | 7 | +| CompileTimeOperators.cs:20:12:20:17 | Entry | CompileTimeOperators.cs:20:12:20:17 | Exit | 8 | +| CompileTimeOperators.cs:26:7:26:22 | Entry | CompileTimeOperators.cs:26:7:26:22 | Exit | 11 | +| CompileTimeOperators.cs:28:10:28:10 | Entry | CompileTimeOperators.cs:36:9:38:9 | After {...} | 14 | +| CompileTimeOperators.cs:28:10:28:10 | Exceptional Exit | CompileTimeOperators.cs:28:10:28:10 | Exceptional Exit | 1 | +| CompileTimeOperators.cs:28:10:28:10 | Exit | CompileTimeOperators.cs:28:10:28:10 | Exit | 1 | +| CompileTimeOperators.cs:30:9:38:9 | After try {...} ... | CompileTimeOperators.cs:39:9:39:34 | After ...; | 7 | +| CompileTimeOperators.cs:40:9:40:11 | End: | CompileTimeOperators.cs:28:10:28:10 | Normal Exit | 9 | +| ConditionalAccess.cs:1:7:1:23 | Entry | ConditionalAccess.cs:1:7:1:23 | Exit | 11 | +| ConditionalAccess.cs:3:12:3:13 | Entry | ConditionalAccess.cs:3:26:3:26 | access to parameter i | 5 | +| ConditionalAccess.cs:3:26:3:26 | After access to parameter i [non-null] | ConditionalAccess.cs:3:26:3:38 | call to method ToString | 2 | +| ConditionalAccess.cs:3:26:3:26 | After access to parameter i [null] | ConditionalAccess.cs:3:26:3:26 | After access to parameter i [null] | 1 | +| ConditionalAccess.cs:3:26:3:38 | After call to method ToString [non-null] | ConditionalAccess.cs:3:26:3:49 | call to method ToLower | 2 | +| ConditionalAccess.cs:3:26:3:38 | After call to method ToString [null] | ConditionalAccess.cs:3:26:3:38 | After call to method ToString [null] | 1 | +| ConditionalAccess.cs:3:26:3:49 | After call to method ToLower | ConditionalAccess.cs:3:12:3:13 | Exit | 3 | +| ConditionalAccess.cs:5:10:5:11 | Entry | ConditionalAccess.cs:5:26:5:26 | access to parameter s | 4 | +| ConditionalAccess.cs:5:26:5:26 | After access to parameter s [non-null] | ConditionalAccess.cs:5:26:5:34 | access to property Length | 2 | +| ConditionalAccess.cs:5:26:5:26 | After access to parameter s [null] | ConditionalAccess.cs:5:26:5:26 | After access to parameter s [null] | 1 | +| ConditionalAccess.cs:5:26:5:34 | After access to property Length | ConditionalAccess.cs:5:10:5:11 | Exit | 3 | +| ConditionalAccess.cs:7:10:7:11 | Entry | ConditionalAccess.cs:7:39:7:40 | access to parameter s1 | 6 | +| ConditionalAccess.cs:7:38:7:55 | After access to property Length | ConditionalAccess.cs:7:10:7:11 | Exit | 3 | +| ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [non-null] | ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [non-null] | 1 | +| ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [null] | ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | 2 | +| ConditionalAccess.cs:7:39:7:46 | After ... ?? ... [non-null] | ConditionalAccess.cs:7:38:7:55 | access to property Length | 2 | +| ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [non-null] | ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [non-null] | 1 | +| ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [null] | ConditionalAccess.cs:7:39:7:46 | After ... ?? ... [null] | 2 | +| ConditionalAccess.cs:9:9:9:10 | Entry | ConditionalAccess.cs:9:25:9:25 | access to parameter s | 5 | +| ConditionalAccess.cs:9:25:9:25 | After access to parameter s [non-null] | ConditionalAccess.cs:9:25:9:33 | access to property Length | 2 | +| ConditionalAccess.cs:9:25:9:25 | After access to parameter s [null] | ConditionalAccess.cs:9:25:9:25 | After access to parameter s [null] | 1 | +| ConditionalAccess.cs:9:25:9:33 | After access to property Length [non-null] | ConditionalAccess.cs:9:25:9:33 | After access to property Length [non-null] | 1 | +| ConditionalAccess.cs:9:25:9:33 | After access to property Length [null] | ConditionalAccess.cs:9:38:9:38 | 0 | 2 | +| ConditionalAccess.cs:9:25:9:38 | After ... ?? ... | ConditionalAccess.cs:9:9:9:10 | Exit | 3 | +| ConditionalAccess.cs:11:9:11:10 | Entry | ConditionalAccess.cs:13:13:13:13 | access to parameter s | 7 | +| ConditionalAccess.cs:11:9:11:10 | Normal Exit | ConditionalAccess.cs:11:9:11:10 | Exit | 2 | +| ConditionalAccess.cs:13:13:13:13 | After access to parameter s [non-null] | ConditionalAccess.cs:13:13:13:21 | access to property Length | 2 | +| ConditionalAccess.cs:13:13:13:13 | After access to parameter s [null] | ConditionalAccess.cs:13:13:13:13 | After access to parameter s [null] | 1 | +| ConditionalAccess.cs:13:13:13:21 | After access to property Length | ConditionalAccess.cs:13:13:13:25 | ... > ... | 6 | +| ConditionalAccess.cs:13:13:13:25 | After ... > ... [false] | ConditionalAccess.cs:16:13:16:21 | return ...; | 4 | +| ConditionalAccess.cs:13:13:13:25 | After ... > ... [true] | ConditionalAccess.cs:14:13:14:21 | return ...; | 4 | +| ConditionalAccess.cs:19:12:19:13 | Entry | ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | 5 | +| ConditionalAccess.cs:19:40:19:41 | After access to parameter s1 [non-null] | ConditionalAccess.cs:19:40:19:60 | call to method CommaJoinWith | 3 | +| ConditionalAccess.cs:19:40:19:41 | After access to parameter s1 [null] | ConditionalAccess.cs:19:40:19:41 | After access to parameter s1 [null] | 1 | +| ConditionalAccess.cs:19:40:19:60 | After call to method CommaJoinWith | ConditionalAccess.cs:19:12:19:13 | Exit | 3 | +| ConditionalAccess.cs:21:10:21:11 | Entry | ConditionalAccess.cs:23:18:23:29 | (...) ... | 10 | +| ConditionalAccess.cs:23:17:23:38 | After access to property Length | ConditionalAccess.cs:24:18:24:24 | (...) ... | 11 | +| ConditionalAccess.cs:23:18:23:29 | After (...) ... [non-null] | ConditionalAccess.cs:23:17:23:38 | access to property Length | 2 | +| ConditionalAccess.cs:23:18:23:29 | After (...) ... [null] | ConditionalAccess.cs:23:18:23:29 | After (...) ... [null] | 1 | +| ConditionalAccess.cs:24:17:24:37 | After call to method ToString | ConditionalAccess.cs:25:13:25:14 | "" | 9 | +| ConditionalAccess.cs:24:18:24:24 | After (...) ... [non-null] | ConditionalAccess.cs:24:17:24:37 | call to method ToString | 2 | +| ConditionalAccess.cs:24:18:24:24 | After (...) ... [null] | ConditionalAccess.cs:24:18:24:24 | After (...) ... [null] | 1 | +| ConditionalAccess.cs:25:13:25:14 | After "" [non-null] | ConditionalAccess.cs:25:13:25:32 | call to method CommaJoinWith | 3 | +| ConditionalAccess.cs:25:13:25:14 | After "" [null] | ConditionalAccess.cs:25:13:25:14 | After "" [null] | 1 | +| ConditionalAccess.cs:25:13:25:32 | After call to method CommaJoinWith | ConditionalAccess.cs:21:10:21:11 | Exit | 7 | +| ConditionalAccess.cs:30:10:30:12 | Entry | ConditionalAccess.cs:30:10:30:12 | Exit | 9 | +| ConditionalAccess.cs:32:10:32:11 | Entry | ConditionalAccess.cs:35:9:35:12 | access to property Prop | 16 | +| ConditionalAccess.cs:35:9:35:12 | After access to property Prop [non-null] | ConditionalAccess.cs:35:9:35:24 | call to method Out | 3 | +| ConditionalAccess.cs:35:9:35:12 | After access to property Prop [null] | ConditionalAccess.cs:35:9:35:12 | After access to property Prop [null] | 1 | +| ConditionalAccess.cs:35:9:35:24 | After call to method Out | ConditionalAccess.cs:32:10:32:11 | Exit | 5 | +| ConditionalAccess.cs:42:9:42:11 | Entry | ConditionalAccess.cs:42:9:42:11 | Exit | 8 | +| ConditionalAccess.cs:43:9:43:11 | Entry | ConditionalAccess.cs:43:9:43:11 | Exit | 6 | +| ConditionalAccess.cs:46:10:46:11 | Entry | ConditionalAccess.cs:48:9:48:10 | access to parameter ca | 7 | +| ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:48:12:48:25 | ... = ... | 5 | +| ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [null] | ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [null] | 1 | +| ConditionalAccess.cs:48:12:48:25 | After ... = ... | ConditionalAccess.cs:49:9:49:10 | access to parameter ca | 6 | +| ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:49:12:49:32 | ... = ... | 5 | +| ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [null] | ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [null] | 1 | +| ConditionalAccess.cs:49:12:49:32 | After ... = ... | ConditionalAccess.cs:50:9:50:10 | access to parameter ca | 6 | +| ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:50:12:50:23 | ... = ... | 6 | +| ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [null] | ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [null] | 1 | +| ConditionalAccess.cs:50:12:50:23 | After ... = ... | ConditionalAccess.cs:51:9:51:10 | access to parameter ca | 7 | +| ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:51:9:51:16 | access to property Prop | 2 | +| ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [null] | ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [null] | 1 | +| ConditionalAccess.cs:51:9:51:16 | After access to property Prop [non-null] | ConditionalAccess.cs:51:18:51:31 | ... = ... | 5 | +| ConditionalAccess.cs:51:9:51:16 | After access to property Prop [null] | ConditionalAccess.cs:51:9:51:16 | After access to property Prop [null] | 1 | +| ConditionalAccess.cs:51:18:51:31 | After ... = ... | ConditionalAccess.cs:52:9:52:10 | access to parameter ca | 7 | +| ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:52:9:52:16 | access to property Prop | 2 | +| ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [null] | ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [null] | 1 | +| ConditionalAccess.cs:52:9:52:16 | After access to property Prop [non-null] | ConditionalAccess.cs:52:18:52:38 | ... = ... | 5 | +| ConditionalAccess.cs:52:9:52:16 | After access to property Prop [null] | ConditionalAccess.cs:52:9:52:16 | After access to property Prop [null] | 1 | +| ConditionalAccess.cs:52:18:52:38 | After ... = ... | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | 6 | +| ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:53:12:53:25 | ... -= ... | 5 | +| ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [null] | ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [null] | 1 | +| ConditionalAccess.cs:53:12:53:25 | After ... -= ... | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | 6 | +| ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:54:12:54:29 | ... += ... | 5 | +| ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [null] | ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [null] | 1 | +| ConditionalAccess.cs:54:12:54:29 | After ... += ... | ConditionalAccess.cs:46:10:46:11 | Exit | 5 | +| ConditionalAccess.cs:60:26:60:38 | Entry | ConditionalAccess.cs:60:26:60:38 | Exit | 14 | +| Conditions.cs:1:7:1:16 | Entry | Conditions.cs:1:7:1:16 | Exit | 11 | +| Conditions.cs:3:10:3:19 | Entry | Conditions.cs:5:13:5:15 | access to parameter inc | 6 | +| Conditions.cs:5:9:6:16 | After if (...) ... | Conditions.cs:7:14:7:16 | access to parameter inc | 4 | +| Conditions.cs:5:13:5:15 | After access to parameter inc [false] | Conditions.cs:5:13:5:15 | After access to parameter inc [false] | 1 | +| Conditions.cs:5:13:5:15 | After access to parameter inc [true] | Conditions.cs:6:13:6:16 | After ...; | 7 | +| Conditions.cs:7:9:8:16 | After if (...) ... | Conditions.cs:3:10:3:19 | Exit | 4 | +| Conditions.cs:7:14:7:16 | After access to parameter inc [false] | Conditions.cs:8:13:8:16 | After ...; | 8 | +| Conditions.cs:7:14:7:16 | After access to parameter inc [true] | Conditions.cs:7:13:7:16 | After !... [false] | 2 | +| Conditions.cs:11:9:11:10 | Entry | Conditions.cs:14:13:14:13 | access to parameter b | 12 | +| Conditions.cs:14:9:15:16 | After if (...) ... | Conditions.cs:16:13:16:17 | ... > ... | 6 | +| Conditions.cs:14:13:14:13 | After access to parameter b [false] | Conditions.cs:14:13:14:13 | After access to parameter b [false] | 1 | +| Conditions.cs:14:13:14:13 | After access to parameter b [true] | Conditions.cs:15:13:15:16 | After ...; | 7 | +| Conditions.cs:16:9:18:20 | After if (...) ... | Conditions.cs:11:9:11:10 | Exit | 6 | +| Conditions.cs:16:13:16:17 | After ... > ... [false] | Conditions.cs:16:13:16:17 | After ... > ... [false] | 1 | +| Conditions.cs:16:13:16:17 | After ... > ... [true] | Conditions.cs:17:18:17:18 | access to parameter b | 4 | +| Conditions.cs:17:13:18:20 | After if (...) ... | Conditions.cs:17:13:18:20 | After if (...) ... | 1 | +| Conditions.cs:17:18:17:18 | After access to parameter b [false] | Conditions.cs:18:17:18:20 | After ...; | 8 | +| Conditions.cs:17:18:17:18 | After access to parameter b [true] | Conditions.cs:17:17:17:18 | After !... [false] | 2 | +| Conditions.cs:22:9:22:10 | Entry | Conditions.cs:25:13:25:14 | access to parameter b1 | 13 | +| Conditions.cs:25:9:27:20 | After if (...) ... | Conditions.cs:28:13:28:14 | access to parameter b2 | 3 | +| Conditions.cs:25:13:25:14 | After access to parameter b1 [false] | Conditions.cs:25:13:25:14 | After access to parameter b1 [false] | 1 | +| Conditions.cs:25:13:25:14 | After access to parameter b1 [true] | Conditions.cs:26:17:26:18 | access to parameter b2 | 3 | +| Conditions.cs:26:13:27:20 | After if (...) ... | Conditions.cs:26:13:27:20 | After if (...) ... | 1 | +| Conditions.cs:26:17:26:18 | After access to parameter b2 [false] | Conditions.cs:26:17:26:18 | After access to parameter b2 [false] | 1 | +| Conditions.cs:26:17:26:18 | After access to parameter b2 [true] | Conditions.cs:27:17:27:20 | After ...; | 7 | +| Conditions.cs:28:9:29:16 | After if (...) ... | Conditions.cs:22:9:22:10 | Exit | 6 | +| Conditions.cs:28:13:28:14 | After access to parameter b2 [false] | Conditions.cs:28:13:28:14 | After access to parameter b2 [false] | 1 | +| Conditions.cs:28:13:28:14 | After access to parameter b2 [true] | Conditions.cs:29:13:29:16 | After ...; | 7 | +| Conditions.cs:33:9:33:10 | Entry | Conditions.cs:37:13:37:14 | access to parameter b1 | 19 | +| Conditions.cs:37:9:38:20 | After if (...) ... | Conditions.cs:39:13:39:14 | access to local variable b2 | 3 | +| Conditions.cs:37:13:37:14 | After access to parameter b1 [false] | Conditions.cs:37:13:37:14 | After access to parameter b1 [false] | 1 | +| Conditions.cs:37:13:37:14 | After access to parameter b1 [true] | Conditions.cs:38:13:38:20 | After ...; | 8 | +| Conditions.cs:39:9:40:16 | After if (...) ... | Conditions.cs:41:13:41:14 | access to local variable b2 | 3 | +| Conditions.cs:39:13:39:14 | After access to local variable b2 [false] | Conditions.cs:39:13:39:14 | After access to local variable b2 [false] | 1 | +| Conditions.cs:39:13:39:14 | After access to local variable b2 [true] | Conditions.cs:40:13:40:16 | After ...; | 7 | +| Conditions.cs:41:9:42:16 | After if (...) ... | Conditions.cs:33:9:33:10 | Exit | 6 | +| Conditions.cs:41:13:41:14 | After access to local variable b2 [false] | Conditions.cs:41:13:41:14 | After access to local variable b2 [false] | 1 | +| Conditions.cs:41:13:41:14 | After access to local variable b2 [true] | Conditions.cs:42:13:42:16 | After ...; | 7 | +| Conditions.cs:46:9:46:10 | Entry | Conditions.cs:49:9:53:9 | while (...) ... | 12 | +| Conditions.cs:49:9:53:9 | [LoopHeader] while (...) ... | Conditions.cs:49:16:49:22 | ... > ... | 8 | +| Conditions.cs:49:16:49:22 | After ... > ... [false] | Conditions.cs:46:9:46:10 | Exit | 7 | +| Conditions.cs:49:16:49:22 | After ... > ... [true] | Conditions.cs:51:17:51:17 | access to parameter b | 4 | +| Conditions.cs:51:13:52:20 | After if (...) ... | Conditions.cs:50:9:53:9 | After {...} | 2 | +| Conditions.cs:51:17:51:17 | After access to parameter b [false] | Conditions.cs:51:17:51:17 | After access to parameter b [false] | 1 | +| Conditions.cs:51:17:51:17 | After access to parameter b [true] | Conditions.cs:52:17:52:20 | After ...; | 7 | +| Conditions.cs:57:9:57:10 | Entry | Conditions.cs:60:9:64:9 | while (...) ... | 12 | +| Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | Conditions.cs:60:16:60:22 | ... > ... | 8 | +| Conditions.cs:60:16:60:22 | After ... > ... [false] | Conditions.cs:65:13:65:13 | access to parameter b | 4 | +| Conditions.cs:60:16:60:22 | After ... > ... [true] | Conditions.cs:62:17:62:17 | access to parameter b | 4 | +| Conditions.cs:62:13:63:20 | After if (...) ... | Conditions.cs:61:9:64:9 | After {...} | 2 | +| Conditions.cs:62:17:62:17 | After access to parameter b [false] | Conditions.cs:62:17:62:17 | After access to parameter b [false] | 1 | +| Conditions.cs:62:17:62:17 | After access to parameter b [true] | Conditions.cs:63:17:63:20 | After ...; | 7 | +| Conditions.cs:65:9:66:16 | After if (...) ... | Conditions.cs:57:9:57:10 | Exit | 6 | +| Conditions.cs:65:13:65:13 | After access to parameter b [false] | Conditions.cs:65:13:65:13 | After access to parameter b [false] | 1 | +| Conditions.cs:65:13:65:13 | After access to parameter b [true] | Conditions.cs:66:13:66:16 | After ...; | 7 | +| Conditions.cs:70:9:70:10 | Entry | Conditions.cs:74:27:74:28 | access to parameter ss | 26 | +| Conditions.cs:74:9:80:9 | After foreach (... ... in ...) ... | Conditions.cs:81:13:81:13 | access to local variable b | 3 | | Conditions.cs:74:22:74:22 | String _ | Conditions.cs:76:17:76:17 | access to local variable b | 4 | -| Conditions.cs:77:17:77:20 | ...; | Conditions.cs:77:17:77:19 | ...++ | 3 | -| Conditions.cs:78:13:79:26 | if (...) ... | Conditions.cs:78:17:78:21 | ... > ... | 4 | -| Conditions.cs:79:17:79:26 | ...; | Conditions.cs:79:17:79:25 | ... = ... | 3 | -| Conditions.cs:81:9:82:16 | if (...) ... | Conditions.cs:81:13:81:13 | access to local variable b | 2 | -| Conditions.cs:82:13:82:16 | ...; | Conditions.cs:82:13:82:15 | ...++ | 3 | -| Conditions.cs:83:16:83:16 | access to local variable x | Conditions.cs:70:9:70:10 | exit M6 | 4 | -| Conditions.cs:86:9:86:10 | enter M7 | Conditions.cs:90:27:90:28 | access to parameter ss | 12 | -| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | 1 | +| Conditions.cs:74:27:74:28 | After access to parameter ss [empty] | Conditions.cs:74:27:74:28 | After access to parameter ss [empty] | 1 | +| Conditions.cs:74:27:74:28 | After access to parameter ss [non-empty] | Conditions.cs:74:27:74:28 | After access to parameter ss [non-empty] | 1 | +| Conditions.cs:76:13:77:20 | After if (...) ... | Conditions.cs:78:17:78:21 | ... > ... | 6 | +| Conditions.cs:76:17:76:17 | After access to local variable b [false] | Conditions.cs:76:17:76:17 | After access to local variable b [false] | 1 | +| Conditions.cs:76:17:76:17 | After access to local variable b [true] | Conditions.cs:77:17:77:20 | After ...; | 7 | +| Conditions.cs:78:13:79:26 | After if (...) ... | Conditions.cs:74:9:80:9 | [LoopHeader] foreach (... ... in ...) ... | 3 | +| Conditions.cs:78:17:78:21 | After ... > ... [false] | Conditions.cs:78:17:78:21 | After ... > ... [false] | 1 | +| Conditions.cs:78:17:78:21 | After ... > ... [true] | Conditions.cs:79:17:79:26 | After ...; | 8 | +| Conditions.cs:81:9:82:16 | After if (...) ... | Conditions.cs:70:9:70:10 | Exit | 6 | +| Conditions.cs:81:13:81:13 | After access to local variable b [false] | Conditions.cs:81:13:81:13 | After access to local variable b [false] | 1 | +| Conditions.cs:81:13:81:13 | After access to local variable b [true] | Conditions.cs:82:13:82:16 | After ...; | 7 | +| Conditions.cs:86:9:86:10 | Entry | Conditions.cs:90:27:90:28 | access to parameter ss | 26 | +| Conditions.cs:90:9:98:9 | After foreach (... ... in ...) ... | Conditions.cs:86:9:86:10 | Exit | 6 | | Conditions.cs:90:22:90:22 | String _ | Conditions.cs:92:17:92:17 | access to local variable b | 4 | -| Conditions.cs:93:17:93:20 | ...; | Conditions.cs:93:17:93:19 | ...++ | 3 | -| Conditions.cs:94:13:95:26 | if (...) ... | Conditions.cs:94:17:94:21 | ... > ... | 4 | -| Conditions.cs:95:17:95:26 | ...; | Conditions.cs:95:17:95:25 | ... = ... | 3 | -| Conditions.cs:96:13:97:20 | if (...) ... | Conditions.cs:96:17:96:17 | access to local variable b | 2 | -| Conditions.cs:97:17:97:20 | ...; | Conditions.cs:97:17:97:19 | ...++ | 3 | -| Conditions.cs:99:16:99:16 | access to local variable x | Conditions.cs:86:9:86:10 | exit M7 | 4 | -| Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:105:13:105:13 | access to parameter b | 8 | -| Conditions.cs:106:13:106:20 | ...; | Conditions.cs:106:13:106:19 | ... += ... | 4 | -| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:107:13:107:24 | ... > ... | 5 | -| Conditions.cs:108:13:109:24 | if (...) ... | Conditions.cs:108:18:108:18 | access to parameter b | 2 | -| Conditions.cs:108:17:108:18 | [false] !... | Conditions.cs:108:17:108:18 | [false] !... | 1 | -| Conditions.cs:108:17:108:18 | [true] !... | Conditions.cs:108:17:108:18 | [true] !... | 1 | -| Conditions.cs:109:17:109:24 | ...; | Conditions.cs:109:17:109:23 | ... += ... | 4 | -| Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:102:12:102:13 | exit M8 | 4 | -| Conditions.cs:113:10:113:11 | enter M9 | Conditions.cs:116:18:116:22 | Int32 i = ... | 8 | -| Conditions.cs:113:10:113:11 | exit M9 (normal) | Conditions.cs:113:10:113:11 | exit M9 | 2 | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:116:25:116:39 | ... < ... | 4 | -| Conditions.cs:116:42:116:42 | access to local variable i | Conditions.cs:116:42:116:44 | ...++ | 2 | -| Conditions.cs:117:9:123:9 | {...} | Conditions.cs:119:18:119:21 | access to local variable last | 11 | -| Conditions.cs:119:17:119:21 | [false] !... | Conditions.cs:119:17:119:21 | [false] !... | 1 | -| Conditions.cs:119:17:119:21 | [true] !... | Conditions.cs:119:17:119:21 | [true] !... | 1 | -| Conditions.cs:120:17:120:23 | ...; | Conditions.cs:120:17:120:22 | ... = ... | 3 | -| Conditions.cs:121:13:122:25 | if (...) ... | Conditions.cs:121:17:121:20 | access to local variable last | 2 | -| Conditions.cs:122:17:122:25 | ...; | Conditions.cs:122:17:122:24 | ... = ... | 3 | -| Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:131:9:140:9 | while (...) ... | 3 | -| Conditions.cs:131:16:131:19 | true | Conditions.cs:131:16:131:19 | true | 1 | -| Conditions.cs:132:9:140:9 | {...} | Conditions.cs:133:17:133:22 | access to field Field1 | 4 | -| Conditions.cs:134:13:139:13 | {...} | Conditions.cs:135:21:135:26 | access to field Field2 | 4 | -| Conditions.cs:136:17:138:17 | {...} | Conditions.cs:137:21:137:37 | call to method ToString | 5 | -| Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:145:17:145:17 | access to parameter b | 4 | -| Conditions.cs:143:10:143:12 | exit M11 (normal) | Conditions.cs:143:10:143:12 | exit M11 | 2 | -| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:146:13:146:13 | access to parameter b | 4 | -| Conditions.cs:145:21:145:23 | "a" | Conditions.cs:145:21:145:23 | "a" | 1 | -| Conditions.cs:145:27:145:29 | "b" | Conditions.cs:145:27:145:29 | "b" | 1 | -| Conditions.cs:147:13:147:49 | ...; | Conditions.cs:147:13:147:48 | call to method WriteLine | 6 | -| Conditions.cs:149:13:149:49 | ...; | Conditions.cs:149:13:149:48 | call to method WriteLine | 6 | -| ExitMethods.cs:6:7:6:17 | enter ExitMethods | ExitMethods.cs:6:7:6:17 | exit ExitMethods | 7 | -| ExitMethods.cs:8:10:8:11 | enter M1 | ExitMethods.cs:8:10:8:11 | exit M1 | 8 | -| ExitMethods.cs:14:10:14:11 | enter M2 | ExitMethods.cs:14:10:14:11 | exit M2 | 8 | -| ExitMethods.cs:20:10:20:11 | enter M3 | ExitMethods.cs:20:10:20:11 | exit M3 | 7 | -| ExitMethods.cs:26:10:26:11 | enter M4 | ExitMethods.cs:26:10:26:11 | exit M4 | 7 | -| ExitMethods.cs:32:10:32:11 | enter M5 | ExitMethods.cs:32:10:32:11 | exit M5 | 7 | -| ExitMethods.cs:38:10:38:11 | enter M6 | ExitMethods.cs:44:9:47:9 | catch (...) {...} | 8 | -| ExitMethods.cs:38:10:38:11 | exit M6 (normal) | ExitMethods.cs:38:10:38:11 | exit M6 | 2 | -| ExitMethods.cs:45:9:47:9 | {...} | ExitMethods.cs:46:13:46:19 | return ...; | 2 | -| ExitMethods.cs:48:9:51:9 | catch (...) {...} | ExitMethods.cs:48:9:51:9 | catch (...) {...} | 1 | -| ExitMethods.cs:49:9:51:9 | {...} | ExitMethods.cs:50:13:50:19 | return ...; | 2 | -| ExitMethods.cs:54:10:54:11 | enter M7 | ExitMethods.cs:54:10:54:11 | exit M7 | 6 | -| ExitMethods.cs:60:10:60:11 | enter M8 | ExitMethods.cs:60:10:60:11 | exit M8 | 6 | -| ExitMethods.cs:66:17:66:26 | enter ErrorMaybe | ExitMethods.cs:68:13:68:13 | access to parameter b | 4 | -| ExitMethods.cs:66:17:66:26 | exit ErrorMaybe | ExitMethods.cs:66:17:66:26 | exit ErrorMaybe | 1 | -| ExitMethods.cs:66:17:66:26 | exit ErrorMaybe (normal) | ExitMethods.cs:66:17:66:26 | exit ErrorMaybe (normal) | 1 | -| ExitMethods.cs:69:19:69:33 | object creation of type Exception | ExitMethods.cs:66:17:66:26 | exit ErrorMaybe (abnormal) | 3 | -| ExitMethods.cs:72:17:72:27 | enter ErrorAlways | ExitMethods.cs:74:13:74:13 | access to parameter b | 4 | -| ExitMethods.cs:72:17:72:27 | exit ErrorAlways (abnormal) | ExitMethods.cs:72:17:72:27 | exit ErrorAlways | 2 | -| ExitMethods.cs:75:19:75:33 | object creation of type Exception | ExitMethods.cs:75:13:75:34 | throw ...; | 2 | -| ExitMethods.cs:77:41:77:43 | "b" | ExitMethods.cs:77:13:77:45 | throw ...; | 3 | -| ExitMethods.cs:80:17:80:28 | enter ErrorAlways2 | ExitMethods.cs:80:17:80:28 | exit ErrorAlways2 | 6 | -| ExitMethods.cs:85:17:85:28 | enter ErrorAlways3 | ExitMethods.cs:85:17:85:28 | exit ErrorAlways3 | 5 | -| ExitMethods.cs:87:10:87:13 | enter Exit | ExitMethods.cs:87:10:87:13 | exit Exit | 7 | -| ExitMethods.cs:92:10:92:18 | enter ExitInTry | ExitMethods.cs:92:10:92:18 | exit ExitInTry | 9 | -| ExitMethods.cs:105:10:105:24 | enter ApplicationExit | ExitMethods.cs:105:10:105:24 | exit ApplicationExit | 6 | -| ExitMethods.cs:110:13:110:21 | enter ThrowExpr | ExitMethods.cs:112:16:112:25 | ... != ... | 6 | -| ExitMethods.cs:110:13:110:21 | exit ThrowExpr | ExitMethods.cs:110:13:110:21 | exit ThrowExpr | 1 | -| ExitMethods.cs:112:29:112:29 | 1 | ExitMethods.cs:110:13:110:21 | exit ThrowExpr (normal) | 7 | -| ExitMethods.cs:112:69:112:75 | "input" | ExitMethods.cs:110:13:110:21 | exit ThrowExpr (abnormal) | 4 | -| ExitMethods.cs:115:16:115:34 | enter ExtensionMethodCall | ExitMethods.cs:117:16:117:30 | call to method Contains | 5 | -| ExitMethods.cs:117:16:117:38 | ... ? ... : ... | ExitMethods.cs:115:16:115:34 | exit ExtensionMethodCall | 4 | -| ExitMethods.cs:117:34:117:34 | 0 | ExitMethods.cs:117:34:117:34 | 0 | 1 | -| ExitMethods.cs:117:38:117:38 | 1 | ExitMethods.cs:117:38:117:38 | 1 | 1 | -| ExitMethods.cs:120:17:120:32 | enter FailingAssertion | ExitMethods.cs:120:17:120:32 | exit FailingAssertion | 7 | -| ExitMethods.cs:126:17:126:33 | enter FailingAssertion2 | ExitMethods.cs:126:17:126:33 | exit FailingAssertion2 | 7 | -| ExitMethods.cs:132:10:132:20 | enter AssertFalse | ExitMethods.cs:132:33:132:49 | call to method IsFalse | 3 | -| ExitMethods.cs:132:10:132:20 | exit AssertFalse | ExitMethods.cs:132:10:132:20 | exit AssertFalse | 1 | -| ExitMethods.cs:132:10:132:20 | exit AssertFalse (abnormal) | ExitMethods.cs:132:10:132:20 | exit AssertFalse (abnormal) | 1 | -| ExitMethods.cs:132:10:132:20 | exit AssertFalse (normal) | ExitMethods.cs:132:10:132:20 | exit AssertFalse (normal) | 1 | -| ExitMethods.cs:134:17:134:33 | enter FailingAssertion3 | ExitMethods.cs:134:17:134:33 | exit FailingAssertion3 | 8 | -| ExitMethods.cs:140:17:140:42 | enter ExceptionDispatchInfoThrow | ExitMethods.cs:142:13:142:13 | access to parameter b | 4 | -| ExitMethods.cs:140:17:140:42 | exit ExceptionDispatchInfoThrow (abnormal) | ExitMethods.cs:140:17:140:42 | exit ExceptionDispatchInfoThrow | 2 | -| ExitMethods.cs:143:13:143:43 | ...; | ExitMethods.cs:143:13:143:42 | call to method Throw | 3 | -| ExitMethods.cs:145:13:145:53 | ...; | ExitMethods.cs:145:13:145:52 | call to method Throw | 4 | -| Extensions.cs:5:23:5:29 | enter ToInt32 | Extensions.cs:5:23:5:29 | exit ToInt32 | 7 | -| Extensions.cs:10:24:10:29 | enter ToBool | Extensions.cs:10:24:10:29 | exit ToBool | 8 | -| Extensions.cs:15:23:15:33 | enter CallToInt32 | Extensions.cs:15:23:15:33 | exit CallToInt32 | 5 | -| Extensions.cs:20:17:20:20 | enter Main | Extensions.cs:20:17:20:20 | exit Main | 20 | -| Finally.cs:3:14:3:20 | enter Finally | Finally.cs:3:14:3:20 | exit Finally | 7 | -| Finally.cs:7:10:7:11 | enter M1 | Finally.cs:15:13:15:40 | call to method WriteLine | 11 | -| Finally.cs:7:10:7:11 | exit M1 | Finally.cs:7:10:7:11 | exit M1 | 1 | -| Finally.cs:7:10:7:11 | exit M1 (abnormal) | Finally.cs:7:10:7:11 | exit M1 (abnormal) | 1 | -| Finally.cs:7:10:7:11 | exit M1 (normal) | Finally.cs:7:10:7:11 | exit M1 (normal) | 1 | -| Finally.cs:19:10:19:11 | enter M2 | Finally.cs:23:13:23:37 | call to method WriteLine | 7 | -| Finally.cs:19:10:19:11 | exit M2 | Finally.cs:19:10:19:11 | exit M2 | 1 | -| Finally.cs:19:10:19:11 | exit M2 (abnormal) | Finally.cs:19:10:19:11 | exit M2 (abnormal) | 1 | -| Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:19:10:19:11 | exit M2 (normal) | 1 | -| Finally.cs:24:13:24:19 | return ...; | Finally.cs:24:13:24:19 | return ...; | 1 | +| Conditions.cs:90:27:90:28 | After access to parameter ss [empty] | Conditions.cs:90:27:90:28 | After access to parameter ss [empty] | 1 | +| Conditions.cs:90:27:90:28 | After access to parameter ss [non-empty] | Conditions.cs:90:27:90:28 | After access to parameter ss [non-empty] | 1 | +| Conditions.cs:92:13:93:20 | After if (...) ... | Conditions.cs:94:17:94:21 | ... > ... | 6 | +| Conditions.cs:92:17:92:17 | After access to local variable b [false] | Conditions.cs:92:17:92:17 | After access to local variable b [false] | 1 | +| Conditions.cs:92:17:92:17 | After access to local variable b [true] | Conditions.cs:93:17:93:20 | After ...; | 7 | +| Conditions.cs:94:13:95:26 | After if (...) ... | Conditions.cs:96:17:96:17 | access to local variable b | 3 | +| Conditions.cs:94:17:94:21 | After ... > ... [false] | Conditions.cs:94:17:94:21 | After ... > ... [false] | 1 | +| Conditions.cs:94:17:94:21 | After ... > ... [true] | Conditions.cs:95:17:95:26 | After ...; | 8 | +| Conditions.cs:96:13:97:20 | After if (...) ... | Conditions.cs:90:9:98:9 | [LoopHeader] foreach (... ... in ...) ... | 3 | +| Conditions.cs:96:17:96:17 | After access to local variable b [false] | Conditions.cs:96:17:96:17 | After access to local variable b [false] | 1 | +| Conditions.cs:96:17:96:17 | After access to local variable b [true] | Conditions.cs:97:17:97:20 | After ...; | 7 | +| Conditions.cs:102:12:102:13 | Entry | Conditions.cs:105:13:105:13 | access to parameter b | 15 | +| Conditions.cs:105:9:106:20 | After if (...) ... | Conditions.cs:107:13:107:24 | ... > ... | 9 | +| Conditions.cs:105:13:105:13 | After access to parameter b [false] | Conditions.cs:105:13:105:13 | After access to parameter b [false] | 1 | +| Conditions.cs:105:13:105:13 | After access to parameter b [true] | Conditions.cs:106:13:106:20 | After ...; | 8 | +| Conditions.cs:107:9:109:24 | After if (...) ... | Conditions.cs:102:12:102:13 | Exit | 6 | +| Conditions.cs:107:13:107:24 | After ... > ... [false] | Conditions.cs:107:13:107:24 | After ... > ... [false] | 1 | +| Conditions.cs:107:13:107:24 | After ... > ... [true] | Conditions.cs:108:18:108:18 | access to parameter b | 4 | +| Conditions.cs:108:13:109:24 | After if (...) ... | Conditions.cs:108:13:109:24 | After if (...) ... | 1 | +| Conditions.cs:108:18:108:18 | After access to parameter b [false] | Conditions.cs:109:17:109:24 | After ...; | 9 | +| Conditions.cs:108:18:108:18 | After access to parameter b [true] | Conditions.cs:108:17:108:18 | After !... [false] | 2 | +| Conditions.cs:113:10:113:11 | Entry | Conditions.cs:116:18:116:22 | After Int32 i = ... | 16 | +| Conditions.cs:116:25:116:39 | After ... < ... [false] | Conditions.cs:113:10:113:11 | Exit | 5 | +| Conditions.cs:116:25:116:39 | After ... < ... [true] | Conditions.cs:119:18:119:21 | access to local variable last | 23 | +| Conditions.cs:116:25:116:39 | Before ... < ... | Conditions.cs:116:25:116:39 | ... < ... | 7 | +| Conditions.cs:119:13:120:23 | After if (...) ... | Conditions.cs:121:17:121:20 | access to local variable last | 3 | +| Conditions.cs:119:18:119:21 | After access to local variable last [false] | Conditions.cs:120:17:120:23 | After ...; | 9 | +| Conditions.cs:119:18:119:21 | After access to local variable last [true] | Conditions.cs:119:17:119:21 | After !... [false] | 2 | +| Conditions.cs:121:13:122:25 | After if (...) ... | Conditions.cs:116:42:116:44 | After ...++ | 7 | +| Conditions.cs:121:17:121:20 | After access to local variable last [false] | Conditions.cs:121:17:121:20 | After access to local variable last [false] | 1 | +| Conditions.cs:121:17:121:20 | After access to local variable last [true] | Conditions.cs:122:17:122:25 | After ...; | 8 | +| Conditions.cs:129:10:129:12 | Entry | Conditions.cs:131:9:140:9 | while (...) ... | 3 | +| Conditions.cs:131:9:140:9 | [LoopHeader] while (...) ... | Conditions.cs:133:17:133:22 | access to field Field1 | 8 | +| Conditions.cs:133:13:139:13 | After if (...) ... | Conditions.cs:132:9:140:9 | After {...} | 2 | +| Conditions.cs:133:17:133:22 | After access to field Field1 [false] | Conditions.cs:133:17:133:22 | After access to field Field1 [false] | 1 | +| Conditions.cs:133:17:133:22 | After access to field Field1 [true] | Conditions.cs:135:21:135:26 | access to field Field2 | 6 | +| Conditions.cs:135:17:138:17 | After if (...) ... | Conditions.cs:134:13:139:13 | After {...} | 2 | +| Conditions.cs:135:21:135:26 | After access to field Field2 [false] | Conditions.cs:135:21:135:26 | After access to field Field2 [false] | 1 | +| Conditions.cs:135:21:135:26 | After access to field Field2 [true] | Conditions.cs:136:17:138:17 | After {...} | 12 | +| Conditions.cs:143:10:143:12 | Entry | Conditions.cs:145:17:145:17 | access to parameter b | 8 | +| Conditions.cs:145:17:145:17 | After access to parameter b [false] | Conditions.cs:145:27:145:29 | "b" | 2 | +| Conditions.cs:145:17:145:17 | After access to parameter b [true] | Conditions.cs:145:21:145:23 | "a" | 2 | +| Conditions.cs:145:17:145:29 | After ... ? ... : ... | Conditions.cs:146:13:146:13 | access to parameter b | 6 | +| Conditions.cs:146:9:149:49 | After if (...) ... | Conditions.cs:143:10:143:12 | Exit | 4 | +| Conditions.cs:146:13:146:13 | After access to parameter b [false] | Conditions.cs:149:13:149:49 | After ...; | 14 | +| Conditions.cs:146:13:146:13 | After access to parameter b [true] | Conditions.cs:147:13:147:49 | After ...; | 14 | +| DefaultParam.cs:1:7:1:18 | Entry | DefaultParam.cs:1:7:1:18 | Exit | 11 | +| DefaultParam.cs:3:12:3:13 | Entry | DefaultParam.cs:3:30:3:30 | s | 3 | +| DefaultParam.cs:3:30:3:30 | After s [match] | DefaultParam.cs:3:30:3:30 | After s [match] | 1 | +| DefaultParam.cs:3:30:3:30 | After s [no-match] | DefaultParam.cs:3:34:3:35 | "" | 2 | +| DefaultParam.cs:3:42:3:42 | After i [match] | DefaultParam.cs:3:42:3:42 | After i [match] | 1 | +| DefaultParam.cs:3:42:3:42 | After i [no-match] | DefaultParam.cs:3:46:3:46 | 0 | 2 | +| DefaultParam.cs:3:42:3:42 | i | DefaultParam.cs:3:42:3:42 | i | 1 | +| DefaultParam.cs:4:5:6:5 | {...} | DefaultParam.cs:3:12:3:13 | Exit | 20 | +| ExitMethods.cs:6:7:6:17 | Entry | ExitMethods.cs:6:7:6:17 | Exit | 11 | +| ExitMethods.cs:8:10:8:11 | Entry | ExitMethods.cs:8:10:8:11 | Exit | 12 | +| ExitMethods.cs:14:10:14:11 | Entry | ExitMethods.cs:14:10:14:11 | Exit | 12 | +| ExitMethods.cs:20:10:20:11 | Entry | ExitMethods.cs:20:10:20:11 | Exit | 8 | +| ExitMethods.cs:26:10:26:11 | Entry | ExitMethods.cs:26:10:26:11 | Exit | 8 | +| ExitMethods.cs:32:10:32:11 | Entry | ExitMethods.cs:32:10:32:11 | Exit | 8 | +| ExitMethods.cs:38:10:38:11 | Entry | ExitMethods.cs:44:9:47:9 | catch (...) {...} | 9 | +| ExitMethods.cs:38:10:38:11 | Exit | ExitMethods.cs:38:10:38:11 | Exit | 1 | +| ExitMethods.cs:38:10:38:11 | Normal Exit | ExitMethods.cs:38:10:38:11 | Normal Exit | 1 | +| ExitMethods.cs:44:9:47:9 | After catch (...) {...} [match] | ExitMethods.cs:46:13:46:19 | return ...; | 4 | +| ExitMethods.cs:44:9:47:9 | After catch (...) {...} [no-match] | ExitMethods.cs:48:9:51:9 | catch (...) {...} | 2 | +| ExitMethods.cs:48:9:51:9 | After catch (...) {...} [match] | ExitMethods.cs:50:13:50:19 | return ...; | 4 | +| ExitMethods.cs:48:9:51:9 | After catch (...) {...} [no-match] | ExitMethods.cs:38:10:38:11 | Exceptional Exit | 2 | +| ExitMethods.cs:54:10:54:11 | Entry | ExitMethods.cs:54:10:54:11 | Exit | 7 | +| ExitMethods.cs:60:10:60:11 | Entry | ExitMethods.cs:60:10:60:11 | Exit | 7 | +| ExitMethods.cs:66:17:66:26 | Entry | ExitMethods.cs:68:13:68:13 | access to parameter b | 5 | +| ExitMethods.cs:66:17:66:26 | Exit | ExitMethods.cs:66:17:66:26 | Exit | 1 | +| ExitMethods.cs:68:13:68:13 | After access to parameter b [false] | ExitMethods.cs:66:17:66:26 | Normal Exit | 4 | +| ExitMethods.cs:68:13:68:13 | After access to parameter b [true] | ExitMethods.cs:66:17:66:26 | Exceptional Exit | 7 | +| ExitMethods.cs:72:17:72:27 | Entry | ExitMethods.cs:74:13:74:13 | access to parameter b | 5 | +| ExitMethods.cs:72:17:72:27 | Exceptional Exit | ExitMethods.cs:72:17:72:27 | Exit | 2 | +| ExitMethods.cs:74:13:74:13 | After access to parameter b [false] | ExitMethods.cs:77:13:77:45 | throw ...; | 7 | +| ExitMethods.cs:74:13:74:13 | After access to parameter b [true] | ExitMethods.cs:75:13:75:34 | throw ...; | 6 | +| ExitMethods.cs:80:17:80:28 | Entry | ExitMethods.cs:80:17:80:28 | Exit | 9 | +| ExitMethods.cs:85:17:85:28 | Entry | ExitMethods.cs:85:17:85:28 | Exit | 8 | +| ExitMethods.cs:87:10:87:13 | Entry | ExitMethods.cs:87:10:87:13 | Exit | 8 | +| ExitMethods.cs:92:10:92:18 | Entry | ExitMethods.cs:99:9:102:9 | After {...} | 16 | +| ExitMethods.cs:92:10:92:18 | Exceptional Exit | ExitMethods.cs:92:10:92:18 | Exceptional Exit | 1 | +| ExitMethods.cs:92:10:92:18 | Exit | ExitMethods.cs:92:10:92:18 | Exit | 1 | +| ExitMethods.cs:94:9:102:9 | After try {...} ... | ExitMethods.cs:92:10:92:18 | Normal Exit | 3 | +| ExitMethods.cs:105:10:105:24 | Entry | ExitMethods.cs:105:10:105:24 | Exit | 7 | +| ExitMethods.cs:110:13:110:21 | Entry | ExitMethods.cs:112:16:112:25 | ... != ... | 12 | +| ExitMethods.cs:110:13:110:21 | Exit | ExitMethods.cs:110:13:110:21 | Exit | 1 | +| ExitMethods.cs:112:16:112:25 | After ... != ... [false] | ExitMethods.cs:110:13:110:21 | Exceptional Exit | 8 | +| ExitMethods.cs:112:16:112:25 | After ... != ... [true] | ExitMethods.cs:110:13:110:21 | Normal Exit | 12 | +| ExitMethods.cs:115:16:115:34 | Entry | ExitMethods.cs:117:16:117:30 | call to method Contains | 9 | +| ExitMethods.cs:117:16:117:30 | After call to method Contains [false] | ExitMethods.cs:117:38:117:38 | 1 | 2 | +| ExitMethods.cs:117:16:117:30 | After call to method Contains [true] | ExitMethods.cs:117:34:117:34 | 0 | 2 | +| ExitMethods.cs:117:16:117:38 | After ... ? ... : ... | ExitMethods.cs:115:16:115:34 | Exit | 4 | +| ExitMethods.cs:120:17:120:32 | Entry | ExitMethods.cs:120:17:120:32 | Exit | 8 | +| ExitMethods.cs:126:17:126:33 | Entry | ExitMethods.cs:126:17:126:33 | Exit | 8 | +| ExitMethods.cs:132:10:132:20 | Entry | ExitMethods.cs:132:33:132:49 | call to method IsFalse | 5 | +| ExitMethods.cs:132:10:132:20 | Exceptional Exit | ExitMethods.cs:132:10:132:20 | Exceptional Exit | 1 | +| ExitMethods.cs:132:10:132:20 | Exit | ExitMethods.cs:132:10:132:20 | Exit | 1 | +| ExitMethods.cs:132:33:132:49 | After call to method IsFalse | ExitMethods.cs:132:10:132:20 | Normal Exit | 2 | +| ExitMethods.cs:134:17:134:33 | Entry | ExitMethods.cs:134:17:134:33 | Exit | 9 | +| ExitMethods.cs:140:17:140:42 | Entry | ExitMethods.cs:142:13:142:13 | access to parameter b | 6 | +| ExitMethods.cs:140:17:140:42 | Exceptional Exit | ExitMethods.cs:140:17:140:42 | Exit | 2 | +| ExitMethods.cs:142:13:142:13 | After access to parameter b [false] | ExitMethods.cs:145:13:145:52 | call to method Throw | 8 | +| ExitMethods.cs:142:13:142:13 | After access to parameter b [true] | ExitMethods.cs:143:13:143:42 | call to method Throw | 5 | +| Extensions.cs:5:23:5:29 | Entry | Extensions.cs:5:23:5:29 | Exit | 11 | +| Extensions.cs:10:24:10:29 | Entry | Extensions.cs:10:24:10:29 | Exit | 13 | +| Extensions.cs:15:23:15:33 | Entry | Extensions.cs:15:23:15:33 | Exit | 7 | +| Extensions.cs:20:17:20:20 | Entry | Extensions.cs:20:17:20:20 | Exit | 38 | +| Finally.cs:3:14:3:20 | Entry | Finally.cs:3:14:3:20 | Exit | 11 | +| Finally.cs:7:10:7:11 | Entry | Finally.cs:11:13:11:37 | call to method WriteLine | 8 | +| Finally.cs:7:10:7:11 | Exceptional Exit | Finally.cs:7:10:7:11 | Exceptional Exit | 1 | +| Finally.cs:7:10:7:11 | Exit | Finally.cs:7:10:7:11 | Exit | 1 | +| Finally.cs:9:9:16:9 | After try {...} ... | Finally.cs:7:10:7:11 | Normal Exit | 3 | +| Finally.cs:11:13:11:37 | After call to method WriteLine | Finally.cs:10:9:12:9 | After {...} | 3 | +| Finally.cs:14:9:16:9 | {...} | Finally.cs:14:9:16:9 | After {...} | 8 | +| Finally.cs:19:10:19:11 | Entry | Finally.cs:23:13:23:37 | call to method WriteLine | 8 | +| Finally.cs:19:10:19:11 | Exceptional Exit | Finally.cs:19:10:19:11 | Exceptional Exit | 1 | +| Finally.cs:19:10:19:11 | Exit | Finally.cs:19:10:19:11 | Exit | 1 | +| Finally.cs:19:10:19:11 | Normal Exit | Finally.cs:19:10:19:11 | Normal Exit | 1 | +| Finally.cs:21:9:51:9 | After try {...} ... | Finally.cs:20:5:52:5 | After {...} | 2 | +| Finally.cs:23:13:23:37 | After call to method WriteLine | Finally.cs:24:13:24:19 | return ...; | 4 | +| Finally.cs:26:9:29:9 | After catch (...) {...} [match] | Finally.cs:28:13:28:18 | throw ...; | 7 | +| Finally.cs:26:9:29:9 | After catch (...) {...} [no-match] | Finally.cs:30:9:40:9 | catch (...) {...} | 2 | | Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:26:9:29:9 | catch (...) {...} | 1 | -| Finally.cs:26:38:26:39 | IOException ex | Finally.cs:26:48:26:51 | true | 2 | -| Finally.cs:27:9:29:9 | {...} | Finally.cs:28:13:28:18 | throw ...; | 2 | -| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:30:9:40:9 | catch (...) {...} | 1 | -| Finally.cs:30:41:30:42 | ArgumentException ex | Finally.cs:34:21:34:24 | true | 6 | -| Finally.cs:34:27:34:32 | throw ...; | Finally.cs:38:17:38:44 | throw ...; | 5 | -| Finally.cs:41:9:43:9 | catch (...) {...} | Finally.cs:41:9:43:9 | catch (...) {...} | 1 | -| Finally.cs:42:9:43:9 | {...} | Finally.cs:42:9:43:9 | {...} | 1 | -| Finally.cs:44:9:47:9 | catch {...} | Finally.cs:46:13:46:19 | return ...; | 3 | -| Finally.cs:49:9:51:9 | {...} | Finally.cs:50:13:50:40 | call to method WriteLine | 4 | -| Finally.cs:54:10:54:11 | enter M3 | Finally.cs:58:13:58:37 | call to method WriteLine | 7 | -| Finally.cs:54:10:54:11 | exit M3 | Finally.cs:54:10:54:11 | exit M3 | 1 | -| Finally.cs:54:10:54:11 | exit M3 (abnormal) | Finally.cs:54:10:54:11 | exit M3 (abnormal) | 1 | -| Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:54:10:54:11 | exit M3 (normal) | 1 | -| Finally.cs:59:13:59:19 | return ...; | Finally.cs:59:13:59:19 | return ...; | 1 | +| Finally.cs:30:9:40:9 | After catch (...) {...} [match] | Finally.cs:38:17:38:44 | throw ...; | 17 | +| Finally.cs:30:9:40:9 | After catch (...) {...} [no-match] | Finally.cs:41:9:43:9 | catch (...) {...} | 2 | +| Finally.cs:41:9:43:9 | After catch (...) {...} [match] | Finally.cs:42:9:43:9 | {...} | 2 | +| Finally.cs:41:9:43:9 | After catch (...) {...} [no-match] | Finally.cs:46:13:46:19 | return ...; | 6 | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:49:9:51:9 | After {...} | 8 | +| Finally.cs:54:10:54:11 | Entry | Finally.cs:58:13:58:37 | call to method WriteLine | 8 | +| Finally.cs:54:10:54:11 | Exceptional Exit | Finally.cs:54:10:54:11 | Exceptional Exit | 1 | +| Finally.cs:54:10:54:11 | Exit | Finally.cs:54:10:54:11 | Exit | 1 | +| Finally.cs:54:10:54:11 | Normal Exit | Finally.cs:54:10:54:11 | Normal Exit | 1 | +| Finally.cs:56:9:71:9 | After try {...} ... | Finally.cs:55:5:72:5 | After {...} | 2 | +| Finally.cs:58:13:58:37 | After call to method WriteLine | Finally.cs:59:13:59:19 | return ...; | 4 | +| Finally.cs:61:9:64:9 | After catch (...) {...} [match] | Finally.cs:63:13:63:18 | throw ...; | 7 | +| Finally.cs:61:9:64:9 | After catch (...) {...} [no-match] | Finally.cs:65:9:67:9 | catch (...) {...} | 2 | | Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:61:9:64:9 | catch (...) {...} | 1 | -| Finally.cs:61:38:61:39 | IOException ex | Finally.cs:61:48:61:51 | true | 2 | -| Finally.cs:62:9:64:9 | {...} | Finally.cs:63:13:63:18 | throw ...; | 2 | -| Finally.cs:65:9:67:9 | catch (...) {...} | Finally.cs:65:9:67:9 | catch (...) {...} | 1 | -| Finally.cs:65:26:65:26 | Exception e | Finally.cs:65:35:65:51 | ... != ... | 5 | -| Finally.cs:66:9:67:9 | {...} | Finally.cs:66:9:67:9 | {...} | 1 | -| Finally.cs:69:9:71:9 | {...} | Finally.cs:70:13:70:40 | call to method WriteLine | 4 | -| Finally.cs:74:10:74:11 | enter M4 | Finally.cs:77:9:100:9 | while (...) ... | 6 | -| Finally.cs:74:10:74:11 | exit M4 | Finally.cs:74:10:74:11 | exit M4 | 1 | -| Finally.cs:74:10:74:11 | exit M4 (abnormal) | Finally.cs:74:10:74:11 | exit M4 (abnormal) | 1 | -| Finally.cs:74:10:74:11 | exit M4 (normal) | Finally.cs:74:10:74:11 | exit M4 (normal) | 1 | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:77:16:77:20 | ... > ... | 3 | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:81:21:81:26 | ... == ... | 7 | -| Finally.cs:82:21:82:27 | return ...; | Finally.cs:82:21:82:27 | return ...; | 1 | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:83:21:83:26 | ... == ... | 4 | -| Finally.cs:84:21:84:29 | continue; | Finally.cs:84:21:84:29 | continue; | 1 | -| Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:85:21:85:26 | ... == ... | 4 | -| Finally.cs:86:21:86:26 | break; | Finally.cs:86:21:86:26 | break; | 1 | -| Finally.cs:89:13:99:13 | {...} | Finally.cs:92:25:92:30 | ... == ... | 7 | -| Finally.cs:93:25:93:46 | throw ...; | Finally.cs:93:25:93:46 | throw ...; | 1 | -| Finally.cs:93:31:93:45 | object creation of type Exception | Finally.cs:93:31:93:45 | object creation of type Exception | 1 | -| Finally.cs:96:17:98:17 | {...} | Finally.cs:97:21:97:23 | ...-- | 4 | -| Finally.cs:103:10:103:11 | enter M5 | Finally.cs:107:17:107:21 | access to field Field | 7 | -| Finally.cs:103:10:103:11 | exit M5 | Finally.cs:103:10:103:11 | exit M5 | 1 | -| Finally.cs:103:10:103:11 | exit M5 (abnormal) | Finally.cs:103:10:103:11 | exit M5 (abnormal) | 1 | -| Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:103:10:103:11 | exit M5 (normal) | 1 | -| Finally.cs:107:17:107:28 | access to property Length | Finally.cs:107:17:107:28 | access to property Length | 1 | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:107:17:107:33 | ... == ... | 2 | -| Finally.cs:108:17:108:23 | return ...; | Finally.cs:108:17:108:23 | return ...; | 1 | -| Finally.cs:109:13:110:49 | if (...) ... | Finally.cs:109:17:109:21 | access to field Field | 3 | -| Finally.cs:109:17:109:28 | access to property Length | Finally.cs:109:17:109:28 | access to property Length | 1 | -| Finally.cs:109:33:109:33 | 1 | Finally.cs:109:17:109:33 | ... == ... | 2 | -| Finally.cs:110:17:110:49 | throw ...; | Finally.cs:110:17:110:49 | throw ...; | 1 | -| Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | 1 | -| Finally.cs:113:9:118:9 | {...} | Finally.cs:114:19:114:35 | ... == ... | 7 | -| Finally.cs:114:17:114:36 | [false] !... | Finally.cs:114:17:114:36 | [false] !... | 1 | -| Finally.cs:114:17:114:36 | [true] !... | Finally.cs:114:17:114:36 | [true] !... | 1 | -| Finally.cs:115:17:115:41 | ...; | Finally.cs:115:17:115:40 | call to method WriteLine | 4 | -| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:116:17:116:32 | ... > ... | 6 | -| Finally.cs:117:17:117:37 | ...; | Finally.cs:117:17:117:36 | call to method WriteLine | 3 | -| Finally.cs:121:10:121:11 | enter M6 | Finally.cs:121:10:121:11 | exit M6 | 12 | -| Finally.cs:133:10:133:11 | enter M7 | Finally.cs:133:10:133:11 | exit M7 | 13 | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:151:17:151:28 | ... == ... | 8 | -| Finally.cs:147:10:147:11 | exit M8 | Finally.cs:147:10:147:11 | exit M8 | 1 | -| Finally.cs:147:10:147:11 | exit M8 (abnormal) | Finally.cs:147:10:147:11 | exit M8 (abnormal) | 1 | -| Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:147:10:147:11 | exit M8 (normal) | 1 | -| Finally.cs:152:17:152:50 | throw ...; | Finally.cs:152:17:152:50 | throw ...; | 1 | -| Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | 1 | -| Finally.cs:155:9:169:9 | {...} | Finally.cs:158:21:158:31 | access to property Length | 6 | -| Finally.cs:158:36:158:36 | 1 | Finally.cs:158:21:158:36 | ... == ... | 2 | -| Finally.cs:159:21:159:45 | throw ...; | Finally.cs:159:21:159:45 | throw ...; | 1 | -| Finally.cs:159:41:159:43 | "1" | Finally.cs:159:27:159:44 | object creation of type Exception | 2 | +| Finally.cs:65:9:67:9 | After catch (...) {...} [match] | Finally.cs:65:35:65:51 | ... != ... | 9 | +| Finally.cs:65:9:67:9 | After catch (...) {...} [no-match] | Finally.cs:65:9:67:9 | After catch (...) {...} [no-match] | 1 | +| Finally.cs:65:35:65:51 | After ... != ... [false] | Finally.cs:65:35:65:51 | After ... != ... [false] | 1 | +| Finally.cs:65:35:65:51 | After ... != ... [true] | Finally.cs:66:9:67:9 | {...} | 2 | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:69:9:71:9 | After {...} | 8 | +| Finally.cs:74:10:74:11 | Entry | Finally.cs:77:9:100:9 | while (...) ... | 10 | +| Finally.cs:74:10:74:11 | Exceptional Exit | Finally.cs:74:10:74:11 | Exceptional Exit | 1 | +| Finally.cs:74:10:74:11 | Exit | Finally.cs:74:10:74:11 | Exit | 1 | +| Finally.cs:74:10:74:11 | Normal Exit | Finally.cs:74:10:74:11 | Normal Exit | 1 | +| Finally.cs:77:9:100:9 | After while (...) ... | Finally.cs:75:5:101:5 | After {...} | 2 | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:77:16:77:20 | ... > ... | 5 | +| Finally.cs:77:16:77:20 | After ... > ... [false] | Finally.cs:77:16:77:20 | After ... > ... [false] | 1 | +| Finally.cs:77:16:77:20 | After ... > ... [true] | Finally.cs:81:21:81:26 | ... == ... | 9 | +| Finally.cs:79:13:99:13 | After try {...} ... | Finally.cs:78:9:100:9 | After {...} | 2 | +| Finally.cs:81:21:81:26 | After ... == ... [false] | Finally.cs:83:21:83:26 | ... == ... | 7 | +| Finally.cs:81:21:81:26 | After ... == ... [true] | Finally.cs:82:21:82:27 | return ...; | 3 | +| Finally.cs:83:21:83:26 | After ... == ... [false] | Finally.cs:85:21:85:26 | ... == ... | 7 | +| Finally.cs:83:21:83:26 | After ... == ... [true] | Finally.cs:84:21:84:29 | continue; | 3 | +| Finally.cs:85:21:85:26 | After ... == ... [false] | Finally.cs:80:13:87:13 | After {...} | 3 | +| Finally.cs:85:21:85:26 | After ... == ... [true] | Finally.cs:86:21:86:26 | break; | 3 | +| Finally.cs:89:13:99:13 | {...} | Finally.cs:92:25:92:30 | ... == ... | 8 | +| Finally.cs:90:17:98:17 | After try {...} ... | Finally.cs:89:13:99:13 | After {...} | 2 | +| Finally.cs:92:25:92:30 | After ... == ... [false] | Finally.cs:91:17:94:17 | After {...} | 3 | +| Finally.cs:92:25:92:30 | After ... == ... [true] | Finally.cs:93:31:93:45 | object creation of type Exception | 4 | +| Finally.cs:93:31:93:45 | After object creation of type Exception | Finally.cs:93:25:93:46 | throw ...; | 2 | +| Finally.cs:96:17:98:17 | {...} | Finally.cs:96:17:98:17 | After {...} | 8 | +| Finally.cs:103:10:103:11 | Entry | Finally.cs:107:17:107:21 | access to field Field | 10 | +| Finally.cs:103:10:103:11 | Exceptional Exit | Finally.cs:103:10:103:11 | Exceptional Exit | 1 | +| Finally.cs:103:10:103:11 | Exit | Finally.cs:103:10:103:11 | Exit | 1 | +| Finally.cs:103:10:103:11 | Normal Exit | Finally.cs:103:10:103:11 | Normal Exit | 1 | +| Finally.cs:105:9:118:9 | After try {...} ... | Finally.cs:104:5:119:5 | After {...} | 2 | +| Finally.cs:107:17:107:21 | After access to field Field | Finally.cs:107:17:107:28 | access to property Length | 2 | +| Finally.cs:107:17:107:28 | After access to property Length | Finally.cs:107:17:107:33 | ... == ... | 3 | +| Finally.cs:107:17:107:33 | After ... == ... [false] | Finally.cs:109:17:109:21 | access to field Field | 8 | +| Finally.cs:107:17:107:33 | After ... == ... [true] | Finally.cs:108:17:108:23 | return ...; | 3 | +| Finally.cs:109:17:109:21 | After access to field Field | Finally.cs:109:17:109:28 | access to property Length | 2 | +| Finally.cs:109:17:109:28 | After access to property Length | Finally.cs:109:17:109:33 | ... == ... | 3 | +| Finally.cs:109:17:109:33 | After ... == ... [false] | Finally.cs:106:9:111:9 | After {...} | 3 | +| Finally.cs:109:17:109:33 | After ... == ... [true] | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | 4 | +| Finally.cs:110:23:110:48 | After object creation of type OutOfMemoryException | Finally.cs:110:17:110:49 | throw ...; | 2 | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:114:19:114:35 | ... == ... | 13 | +| Finally.cs:114:13:115:41 | After if (...) ... | Finally.cs:116:17:116:32 | ... > ... | 12 | +| Finally.cs:114:19:114:35 | After ... == ... [false] | Finally.cs:115:17:115:41 | After ...; | 11 | +| Finally.cs:114:19:114:35 | After ... == ... [true] | Finally.cs:114:17:114:36 | After !... [false] | 2 | +| Finally.cs:116:13:117:37 | After if (...) ... | Finally.cs:113:9:118:9 | After {...} | 2 | +| Finally.cs:116:17:116:32 | After ... > ... [false] | Finally.cs:116:17:116:32 | After ... > ... [false] | 1 | +| Finally.cs:116:17:116:32 | After ... > ... [true] | Finally.cs:117:17:117:37 | After ...; | 7 | +| Finally.cs:121:10:121:11 | Entry | Finally.cs:121:10:121:11 | Exit | 23 | +| Finally.cs:133:10:133:11 | Entry | Finally.cs:137:13:137:36 | call to method WriteLine | 8 | +| Finally.cs:137:13:137:36 | After call to method WriteLine | Finally.cs:136:9:138:9 | After {...} | 3 | +| Finally.cs:140:9:143:9 | {...} | Finally.cs:133:10:133:11 | Exit | 9 | +| Finally.cs:147:10:147:11 | Entry | Finally.cs:151:17:151:28 | ... == ... | 10 | +| Finally.cs:147:10:147:11 | Exceptional Exit | Finally.cs:147:10:147:11 | Exceptional Exit | 1 | +| Finally.cs:147:10:147:11 | Exit | Finally.cs:147:10:147:11 | Exit | 1 | +| Finally.cs:149:9:169:9 | After try {...} ... | Finally.cs:147:10:147:11 | Normal Exit | 3 | +| Finally.cs:151:17:151:28 | After ... == ... [false] | Finally.cs:150:9:153:9 | After {...} | 3 | +| Finally.cs:151:17:151:28 | After ... == ... [true] | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | 4 | +| Finally.cs:152:23:152:49 | After object creation of type ArgumentNullException | Finally.cs:152:17:152:50 | throw ...; | 2 | +| Finally.cs:155:9:169:9 | {...} | Finally.cs:158:21:158:31 | access to property Length | 8 | +| Finally.cs:156:13:168:13 | After try {...} ... | Finally.cs:155:9:169:9 | After {...} | 2 | +| Finally.cs:158:21:158:31 | After access to property Length | Finally.cs:158:21:158:36 | ... == ... | 3 | +| Finally.cs:158:21:158:36 | After ... == ... [false] | Finally.cs:157:13:160:13 | After {...} | 3 | +| Finally.cs:158:21:158:36 | After ... == ... [true] | Finally.cs:159:27:159:44 | object creation of type Exception | 5 | +| Finally.cs:159:27:159:44 | After object creation of type Exception | Finally.cs:159:21:159:45 | throw ...; | 2 | +| Finally.cs:161:13:164:13 | After catch (...) {...} [match] | Finally.cs:161:39:161:54 | ... == ... | 9 | +| Finally.cs:161:13:164:13 | After catch (...) {...} [no-match] | Finally.cs:166:13:168:13 | After {...} | 11 | | Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:161:13:164:13 | catch (...) {...} | 1 | -| Finally.cs:161:30:161:30 | Exception e | Finally.cs:161:39:161:54 | ... == ... | 5 | -| Finally.cs:162:13:164:13 | {...} | Finally.cs:163:17:163:42 | call to method WriteLine | 6 | -| Finally.cs:165:13:168:13 | catch {...} | Finally.cs:167:17:167:37 | call to method WriteLine | 5 | -| Finally.cs:172:11:172:20 | enter ExceptionA | Finally.cs:172:11:172:20 | exit ExceptionA | 7 | -| Finally.cs:173:11:173:20 | enter ExceptionB | Finally.cs:173:11:173:20 | exit ExceptionB | 7 | -| Finally.cs:174:11:174:20 | enter ExceptionC | Finally.cs:174:11:174:20 | exit ExceptionC | 7 | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:180:17:180:18 | access to parameter b1 | 6 | -| Finally.cs:176:10:176:11 | exit M9 | Finally.cs:176:10:176:11 | exit M9 | 1 | -| Finally.cs:176:10:176:11 | exit M9 (abnormal) | Finally.cs:176:10:176:11 | exit M9 (abnormal) | 1 | -| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:176:10:176:11 | exit M9 (normal) | 1 | -| Finally.cs:180:21:180:43 | throw ...; | Finally.cs:180:21:180:43 | throw ...; | 1 | -| Finally.cs:180:27:180:42 | object creation of type ExceptionA | Finally.cs:180:27:180:42 | object creation of type ExceptionA | 1 | +| Finally.cs:161:39:161:54 | After ... == ... [false] | Finally.cs:161:39:161:54 | After ... == ... [false] | 1 | +| Finally.cs:161:39:161:54 | After ... == ... [true] | Finally.cs:162:13:164:13 | After {...} | 13 | +| Finally.cs:172:11:172:20 | Entry | Finally.cs:172:11:172:20 | Exit | 11 | +| Finally.cs:173:11:173:20 | Entry | Finally.cs:173:11:173:20 | Exit | 11 | +| Finally.cs:174:11:174:20 | Entry | Finally.cs:174:11:174:20 | Exit | 11 | +| Finally.cs:176:10:176:11 | Entry | Finally.cs:180:17:180:18 | access to parameter b1 | 8 | +| Finally.cs:176:10:176:11 | Exceptional Exit | Finally.cs:176:10:176:11 | Exceptional Exit | 1 | +| Finally.cs:176:10:176:11 | Exit | Finally.cs:176:10:176:11 | Exit | 1 | +| Finally.cs:178:9:192:9 | After try {...} ... | Finally.cs:176:10:176:11 | Normal Exit | 3 | +| Finally.cs:180:17:180:18 | After access to parameter b1 [false] | Finally.cs:179:9:181:9 | After {...} | 3 | +| Finally.cs:180:17:180:18 | After access to parameter b1 [true] | Finally.cs:180:27:180:42 | object creation of type ExceptionA | 4 | +| Finally.cs:180:27:180:42 | After object creation of type ExceptionA | Finally.cs:180:21:180:43 | throw ...; | 2 | | Finally.cs:183:9:192:9 | {...} | Finally.cs:186:21:186:22 | access to parameter b2 | 5 | -| Finally.cs:186:25:186:47 | throw ...; | Finally.cs:186:25:186:47 | throw ...; | 1 | -| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:186:31:186:46 | object creation of type ExceptionB | 1 | +| Finally.cs:184:13:191:13 | After try {...} ... | Finally.cs:183:9:192:9 | After {...} | 2 | +| Finally.cs:186:21:186:22 | After access to parameter b2 [false] | Finally.cs:185:13:187:13 | After {...} | 3 | +| Finally.cs:186:21:186:22 | After access to parameter b2 [true] | Finally.cs:186:31:186:46 | object creation of type ExceptionB | 4 | +| Finally.cs:186:31:186:46 | After object creation of type ExceptionB | Finally.cs:186:25:186:47 | throw ...; | 2 | +| Finally.cs:188:13:191:13 | After catch (...) {...} [match] | Finally.cs:188:38:188:39 | access to parameter b2 | 2 | +| Finally.cs:188:13:191:13 | After catch (...) {...} [no-match] | Finally.cs:188:13:191:13 | After catch (...) {...} [no-match] | 1 | | Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:188:13:191:13 | catch (...) {...} | 1 | -| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:188:38:188:39 | access to parameter b2 | 1 | -| Finally.cs:189:13:191:13 | {...} | Finally.cs:190:21:190:22 | access to parameter b1 | 3 | -| Finally.cs:190:31:190:46 | object creation of type ExceptionC | Finally.cs:190:25:190:47 | throw ...; | 2 | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:199:17:199:18 | access to parameter b1 | 6 | -| Finally.cs:195:10:195:12 | exit M10 | Finally.cs:195:10:195:12 | exit M10 | 1 | -| Finally.cs:195:10:195:12 | exit M10 (abnormal) | Finally.cs:195:10:195:12 | exit M10 (abnormal) | 1 | -| Finally.cs:199:21:199:43 | throw ...; | Finally.cs:199:21:199:43 | throw ...; | 1 | -| Finally.cs:199:27:199:42 | object creation of type ExceptionA | Finally.cs:199:27:199:42 | object creation of type ExceptionA | 1 | +| Finally.cs:188:38:188:39 | After access to parameter b2 [false] | Finally.cs:188:38:188:39 | After access to parameter b2 [false] | 1 | +| Finally.cs:188:38:188:39 | After access to parameter b2 [true] | Finally.cs:190:21:190:22 | access to parameter b1 | 4 | +| Finally.cs:190:21:190:22 | After access to parameter b1 [false] | Finally.cs:189:13:191:13 | After {...} | 3 | +| Finally.cs:190:21:190:22 | After access to parameter b1 [true] | Finally.cs:190:25:190:47 | throw ...; | 6 | +| Finally.cs:195:10:195:12 | Entry | Finally.cs:199:17:199:18 | access to parameter b1 | 9 | +| Finally.cs:195:10:195:12 | Exceptional Exit | Finally.cs:195:10:195:12 | Exceptional Exit | 1 | +| Finally.cs:195:10:195:12 | Exit | Finally.cs:195:10:195:12 | Exit | 1 | +| Finally.cs:197:9:212:9 | After try {...} ... | Finally.cs:195:10:195:12 | Normal Exit | 13 | +| Finally.cs:199:17:199:18 | After access to parameter b1 [false] | Finally.cs:198:9:200:9 | After {...} | 3 | +| Finally.cs:199:17:199:18 | After access to parameter b1 [true] | Finally.cs:199:27:199:42 | object creation of type ExceptionA | 4 | +| Finally.cs:199:27:199:42 | After object creation of type ExceptionA | Finally.cs:199:21:199:43 | throw ...; | 2 | | Finally.cs:202:9:212:9 | {...} | Finally.cs:205:21:205:22 | access to parameter b2 | 5 | -| Finally.cs:205:25:205:47 | throw ...; | Finally.cs:205:25:205:47 | throw ...; | 1 | -| Finally.cs:205:31:205:46 | object creation of type ExceptionB | Finally.cs:205:31:205:46 | object creation of type ExceptionB | 1 | +| Finally.cs:203:13:210:13 | After try {...} ... | Finally.cs:202:9:212:9 | After {...} | 12 | +| Finally.cs:205:21:205:22 | After access to parameter b2 [false] | Finally.cs:204:13:206:13 | After {...} | 3 | +| Finally.cs:205:21:205:22 | After access to parameter b2 [true] | Finally.cs:205:31:205:46 | object creation of type ExceptionB | 4 | +| Finally.cs:205:31:205:46 | After object creation of type ExceptionB | Finally.cs:205:25:205:47 | throw ...; | 2 | | Finally.cs:208:13:210:13 | {...} | Finally.cs:209:21:209:22 | access to parameter b3 | 3 | -| Finally.cs:209:31:209:46 | object creation of type ExceptionC | Finally.cs:209:25:209:47 | throw ...; | 2 | -| Finally.cs:211:13:211:29 | ...; | Finally.cs:211:13:211:28 | ... = ... | 5 | -| Finally.cs:213:9:213:25 | ...; | Finally.cs:195:10:195:12 | exit M10 (normal) | 6 | -| Finally.cs:216:10:216:12 | enter M11 | Finally.cs:220:13:220:36 | call to method WriteLine | 7 | -| Finally.cs:222:9:225:9 | catch {...} | Finally.cs:224:13:224:38 | call to method WriteLine | 5 | -| Finally.cs:227:9:229:9 | {...} | Finally.cs:216:10:216:12 | exit M11 | 9 | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:239:21:239:22 | access to parameter b1 | 8 | -| Finally.cs:233:10:233:12 | exit M12 | Finally.cs:233:10:233:12 | exit M12 | 1 | -| Finally.cs:233:10:233:12 | exit M12 (abnormal) | Finally.cs:233:10:233:12 | exit M12 (abnormal) | 1 | -| Finally.cs:240:21:240:43 | throw ...; | Finally.cs:240:21:240:43 | throw ...; | 1 | -| Finally.cs:240:27:240:42 | object creation of type ExceptionA | Finally.cs:240:27:240:42 | object creation of type ExceptionA | 1 | +| Finally.cs:209:21:209:22 | After access to parameter b3 [false] | Finally.cs:208:13:210:13 | After {...} | 3 | +| Finally.cs:209:21:209:22 | After access to parameter b3 [true] | Finally.cs:209:25:209:47 | throw ...; | 6 | +| Finally.cs:216:10:216:12 | Entry | Finally.cs:220:13:220:36 | call to method WriteLine | 8 | +| Finally.cs:220:13:220:36 | After call to method WriteLine | Finally.cs:219:9:221:9 | After {...} | 3 | +| Finally.cs:222:9:225:9 | catch {...} | Finally.cs:223:9:225:9 | After {...} | 10 | +| Finally.cs:227:9:229:9 | {...} | Finally.cs:216:10:216:12 | Exit | 18 | +| Finally.cs:233:10:233:12 | Entry | Finally.cs:239:21:239:22 | access to parameter b1 | 10 | +| Finally.cs:233:10:233:12 | Exceptional Exit | Finally.cs:233:10:233:12 | Exceptional Exit | 1 | +| Finally.cs:233:10:233:12 | Exit | Finally.cs:233:10:233:12 | Exit | 1 | +| Finally.cs:235:9:259:9 | After try {...} ... | Finally.cs:233:10:233:12 | Normal Exit | 9 | +| Finally.cs:237:13:253:13 | After try {...} ... | Finally.cs:254:13:254:44 | call to method WriteLine | 5 | +| Finally.cs:239:21:239:22 | After access to parameter b1 [false] | Finally.cs:238:13:241:13 | After {...} | 3 | +| Finally.cs:239:21:239:22 | After access to parameter b1 [true] | Finally.cs:240:27:240:42 | object creation of type ExceptionA | 4 | +| Finally.cs:240:27:240:42 | After object creation of type ExceptionA | Finally.cs:240:21:240:43 | throw ...; | 2 | | Finally.cs:243:13:253:13 | {...} | Finally.cs:246:25:246:26 | access to parameter b2 | 5 | -| Finally.cs:247:25:247:47 | throw ...; | Finally.cs:247:25:247:47 | throw ...; | 1 | -| Finally.cs:247:31:247:46 | object creation of type ExceptionA | Finally.cs:247:31:247:46 | object creation of type ExceptionA | 1 | -| Finally.cs:250:17:252:17 | {...} | Finally.cs:251:21:251:54 | call to method WriteLine | 4 | -| Finally.cs:254:13:254:45 | ...; | Finally.cs:254:13:254:44 | call to method WriteLine | 3 | -| Finally.cs:257:9:259:9 | {...} | Finally.cs:258:13:258:46 | call to method WriteLine | 4 | -| Finally.cs:260:9:260:34 | ...; | Finally.cs:233:10:233:12 | exit M12 (normal) | 4 | -| Finally.cs:263:10:263:12 | enter M13 | Finally.cs:272:13:272:18 | ... += ... | 15 | -| Finally.cs:263:10:263:12 | exit M13 | Finally.cs:263:10:263:12 | exit M13 | 1 | -| Finally.cs:263:10:263:12 | exit M13 (abnormal) | Finally.cs:263:10:263:12 | exit M13 (abnormal) | 1 | -| Finally.cs:263:10:263:12 | exit M13 (normal) | Finally.cs:263:10:263:12 | exit M13 (normal) | 1 | -| Foreach.cs:4:7:4:13 | enter Foreach | Foreach.cs:4:7:4:13 | exit Foreach | 7 | -| Foreach.cs:6:10:6:11 | enter M1 | Foreach.cs:8:29:8:32 | access to parameter args | 3 | -| Foreach.cs:6:10:6:11 | exit M1 (normal) | Foreach.cs:6:10:6:11 | exit M1 | 2 | -| Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | 1 | -| Foreach.cs:8:22:8:24 | String arg | Foreach.cs:9:13:9:13 | ; | 2 | -| Foreach.cs:12:10:12:11 | enter M2 | Foreach.cs:14:27:14:30 | access to parameter args | 3 | -| Foreach.cs:12:10:12:11 | exit M2 (normal) | Foreach.cs:12:10:12:11 | exit M2 | 2 | -| Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | 1 | -| Foreach.cs:14:22:14:22 | String _ | Foreach.cs:15:13:15:13 | ; | 2 | -| Foreach.cs:18:10:18:11 | enter M3 | Foreach.cs:20:27:20:27 | access to parameter e | 3 | -| Foreach.cs:18:10:18:11 | exit M3 (normal) | Foreach.cs:18:10:18:11 | exit M3 | 2 | -| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | 1 | -| Foreach.cs:20:22:20:22 | String x | Foreach.cs:21:11:21:11 | ; | 2 | -| Foreach.cs:20:27:20:38 | call to method ToArray | Foreach.cs:20:27:20:38 | call to method ToArray | 1 | -| Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:20:27:20:68 | ... ?? ... | 1 | -| Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:20:43:20:68 | call to method Empty | 1 | -| Foreach.cs:24:10:24:11 | enter M4 | Foreach.cs:26:36:26:39 | access to parameter args | 3 | -| Foreach.cs:24:10:24:11 | exit M4 (normal) | Foreach.cs:24:10:24:11 | exit M4 | 2 | -| Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | 1 | -| Foreach.cs:26:23:26:23 | String x | Foreach.cs:27:11:27:11 | ; | 4 | -| Foreach.cs:30:10:30:11 | enter M5 | Foreach.cs:32:32:32:35 | access to parameter args | 3 | -| Foreach.cs:30:10:30:11 | exit M5 (normal) | Foreach.cs:30:10:30:11 | exit M5 | 2 | -| Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | 1 | -| Foreach.cs:32:23:32:23 | String x | Foreach.cs:33:11:33:11 | ; | 4 | -| Foreach.cs:36:10:36:11 | enter M6 | Foreach.cs:38:39:38:42 | access to parameter args | 3 | -| Foreach.cs:36:10:36:11 | exit M6 (normal) | Foreach.cs:36:10:36:11 | exit M6 | 2 | -| Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | 1 | -| Foreach.cs:38:26:38:26 | String x | Foreach.cs:39:11:39:11 | ; | 4 | -| Initializers.cs:3:7:3:18 | enter | Initializers.cs:3:7:3:18 | exit | 15 | -| Initializers.cs:3:7:3:18 | enter Initializers | Initializers.cs:3:7:3:18 | exit Initializers | 4 | -| Initializers.cs:8:5:8:16 | enter Initializers | Initializers.cs:8:5:8:16 | exit Initializers | 7 | -| Initializers.cs:10:5:10:16 | enter Initializers | Initializers.cs:10:5:10:16 | exit Initializers | 7 | -| Initializers.cs:12:10:12:10 | enter M | Initializers.cs:12:10:12:10 | exit M | 23 | -| Initializers.cs:18:16:18:16 | enter H | Initializers.cs:18:16:18:16 | exit H | 6 | -| Initializers.cs:20:11:20:23 | enter | Initializers.cs:20:11:20:23 | exit | 11 | -| Initializers.cs:20:11:20:23 | enter NoConstructor | Initializers.cs:20:11:20:23 | exit NoConstructor | 7 | -| Initializers.cs:26:11:26:13 | enter | Initializers.cs:26:11:26:13 | exit | 7 | -| Initializers.cs:31:9:31:11 | enter Sub | Initializers.cs:31:9:31:11 | exit Sub | 12 | -| Initializers.cs:33:9:33:11 | enter Sub | Initializers.cs:33:9:33:11 | exit Sub | 10 | -| Initializers.cs:35:9:35:11 | enter Sub | Initializers.cs:35:9:35:11 | exit Sub | 14 | -| Initializers.cs:39:7:39:23 | enter IndexInitializers | Initializers.cs:39:7:39:23 | exit IndexInitializers | 7 | -| Initializers.cs:41:11:41:18 | enter Compound | Initializers.cs:41:11:41:18 | exit Compound | 7 | -| Initializers.cs:51:10:51:13 | enter Test | Initializers.cs:51:10:51:13 | exit Test | 116 | -| LoopUnrolling.cs:5:7:5:19 | enter LoopUnrolling | LoopUnrolling.cs:5:7:5:19 | exit LoopUnrolling | 7 | -| LoopUnrolling.cs:7:10:7:11 | enter M1 | LoopUnrolling.cs:9:13:9:28 | ... == ... | 7 | -| LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | LoopUnrolling.cs:7:10:7:11 | exit M1 | 2 | -| LoopUnrolling.cs:10:13:10:19 | return ...; | LoopUnrolling.cs:10:13:10:19 | return ...; | 1 | -| LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | 1 | -| LoopUnrolling.cs:11:22:11:24 | String arg | LoopUnrolling.cs:12:13:12:34 | call to method WriteLine | 4 | -| LoopUnrolling.cs:11:29:11:32 | access to parameter args | LoopUnrolling.cs:11:29:11:32 | access to parameter args | 1 | -| LoopUnrolling.cs:15:10:15:11 | enter M2 | LoopUnrolling.cs:18:27:18:28 | access to local variable xs | 11 | -| LoopUnrolling.cs:15:10:15:11 | exit M2 (normal) | LoopUnrolling.cs:15:10:15:11 | exit M2 | 2 | -| LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | 1 | -| LoopUnrolling.cs:18:22:18:22 | String x | LoopUnrolling.cs:19:13:19:32 | call to method WriteLine | 4 | -| LoopUnrolling.cs:22:10:22:11 | enter M3 | LoopUnrolling.cs:24:29:24:32 | access to parameter args | 3 | -| LoopUnrolling.cs:22:10:22:11 | exit M3 (normal) | LoopUnrolling.cs:22:10:22:11 | exit M3 | 2 | -| LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | 1 | -| LoopUnrolling.cs:24:22:24:24 | Char arg | LoopUnrolling.cs:25:34:25:37 | access to parameter args | 2 | -| LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | 1 | -| LoopUnrolling.cs:25:26:25:29 | Char arg0 | LoopUnrolling.cs:26:17:26:39 | call to method WriteLine | 4 | -| LoopUnrolling.cs:29:10:29:11 | enter M4 | LoopUnrolling.cs:32:27:32:28 | access to local variable xs | 7 | -| LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | LoopUnrolling.cs:29:10:29:11 | exit M4 | 2 | -| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | 1 | -| LoopUnrolling.cs:32:22:32:22 | String x | LoopUnrolling.cs:33:13:33:32 | call to method WriteLine | 4 | -| LoopUnrolling.cs:36:10:36:11 | enter M5 | LoopUnrolling.cs:40:27:40:28 | access to local variable xs | 19 | -| LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | LoopUnrolling.cs:36:10:36:11 | exit M5 | 2 | -| LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | 1 | -| LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:41:31:41:32 | access to local variable ys | 2 | -| LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | 1 | -| LoopUnrolling.cs:41:26:41:26 | String y | LoopUnrolling.cs:42:17:42:40 | call to method WriteLine | 6 | -| LoopUnrolling.cs:45:10:45:11 | enter M6 | LoopUnrolling.cs:48:9:52:9 | foreach (... ... in ...) ... | 12 | -| LoopUnrolling.cs:45:10:45:11 | exit M6 (normal) | LoopUnrolling.cs:45:10:45:11 | exit M6 | 2 | -| LoopUnrolling.cs:48:22:48:22 | String x | LoopUnrolling.cs:49:9:52:9 | {...} | 2 | -| LoopUnrolling.cs:50:9:50:13 | Label: | LoopUnrolling.cs:51:13:51:23 | goto ...; | 5 | -| LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:58:27:58:28 | access to local variable xs | 11 | -| LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | LoopUnrolling.cs:55:10:55:11 | exit M7 | 2 | -| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | 1 | +| Finally.cs:244:17:252:17 | After try {...} ... | Finally.cs:243:13:253:13 | After {...} | 2 | +| Finally.cs:246:25:246:26 | After access to parameter b2 [false] | Finally.cs:245:17:248:17 | After {...} | 3 | +| Finally.cs:246:25:246:26 | After access to parameter b2 [true] | Finally.cs:247:31:247:46 | object creation of type ExceptionA | 4 | +| Finally.cs:247:31:247:46 | After object creation of type ExceptionA | Finally.cs:247:25:247:47 | throw ...; | 2 | +| Finally.cs:250:17:252:17 | {...} | Finally.cs:250:17:252:17 | After {...} | 8 | +| Finally.cs:254:13:254:44 | After call to method WriteLine | Finally.cs:236:9:255:9 | After {...} | 3 | +| Finally.cs:257:9:259:9 | {...} | Finally.cs:257:9:259:9 | After {...} | 8 | +| Finally.cs:263:10:263:12 | Entry | Finally.cs:267:13:267:34 | call to method WriteLine | 9 | +| Finally.cs:263:10:263:12 | Exceptional Exit | Finally.cs:263:10:263:12 | Exceptional Exit | 1 | +| Finally.cs:263:10:263:12 | Exit | Finally.cs:263:10:263:12 | Exit | 1 | +| Finally.cs:265:9:273:9 | After try {...} ... | Finally.cs:263:10:263:12 | Normal Exit | 3 | +| Finally.cs:267:13:267:34 | After call to method WriteLine | Finally.cs:266:9:268:9 | After {...} | 3 | +| Finally.cs:270:9:273:9 | {...} | Finally.cs:270:9:273:9 | After {...} | 15 | +| Foreach.cs:4:7:4:13 | Entry | Foreach.cs:4:7:4:13 | Exit | 11 | +| Foreach.cs:6:10:6:11 | Entry | Foreach.cs:8:29:8:32 | access to parameter args | 5 | +| Foreach.cs:8:9:9:13 | After foreach (... ... in ...) ... | Foreach.cs:6:10:6:11 | Exit | 4 | +| Foreach.cs:8:22:8:24 | String arg | Foreach.cs:8:9:9:13 | [LoopHeader] foreach (... ... in ...) ... | 3 | +| Foreach.cs:8:29:8:32 | After access to parameter args [empty] | Foreach.cs:8:29:8:32 | After access to parameter args [empty] | 1 | +| Foreach.cs:8:29:8:32 | After access to parameter args [non-empty] | Foreach.cs:8:29:8:32 | After access to parameter args [non-empty] | 1 | +| Foreach.cs:12:10:12:11 | Entry | Foreach.cs:14:27:14:30 | access to parameter args | 5 | +| Foreach.cs:14:9:15:13 | After foreach (... ... in ...) ... | Foreach.cs:12:10:12:11 | Exit | 4 | +| Foreach.cs:14:22:14:22 | String _ | Foreach.cs:14:9:15:13 | [LoopHeader] foreach (... ... in ...) ... | 3 | +| Foreach.cs:14:27:14:30 | After access to parameter args [empty] | Foreach.cs:14:27:14:30 | After access to parameter args [empty] | 1 | +| Foreach.cs:14:27:14:30 | After access to parameter args [non-empty] | Foreach.cs:14:27:14:30 | After access to parameter args [non-empty] | 1 | +| Foreach.cs:18:10:18:11 | Entry | Foreach.cs:20:27:20:27 | access to parameter e | 7 | +| Foreach.cs:20:9:21:11 | After foreach (... ... in ...) ... | Foreach.cs:18:10:18:11 | Exit | 4 | +| Foreach.cs:20:22:20:22 | String x | Foreach.cs:20:9:21:11 | [LoopHeader] foreach (... ... in ...) ... | 3 | +| Foreach.cs:20:27:20:27 | After access to parameter e [non-null] | Foreach.cs:20:27:20:38 | call to method ToArray | 2 | +| Foreach.cs:20:27:20:27 | After access to parameter e [null] | Foreach.cs:20:27:20:27 | After access to parameter e [null] | 1 | +| Foreach.cs:20:27:20:38 | After call to method ToArray [non-null] | Foreach.cs:20:27:20:38 | After call to method ToArray [non-null] | 1 | +| Foreach.cs:20:27:20:38 | After call to method ToArray [null] | Foreach.cs:20:43:20:68 | call to method Empty | 3 | +| Foreach.cs:20:27:20:68 | After ... ?? ... [empty] | Foreach.cs:20:27:20:68 | After ... ?? ... [empty] | 1 | +| Foreach.cs:20:27:20:68 | After ... ?? ... [non-empty] | Foreach.cs:20:27:20:68 | After ... ?? ... [non-empty] | 1 | +| Foreach.cs:20:43:20:68 | After call to method Empty [empty] | Foreach.cs:20:43:20:68 | After call to method Empty [empty] | 1 | +| Foreach.cs:20:43:20:68 | After call to method Empty [non-empty] | Foreach.cs:20:43:20:68 | After call to method Empty [non-empty] | 1 | +| Foreach.cs:24:10:24:11 | Entry | Foreach.cs:26:36:26:39 | access to parameter args | 5 | +| Foreach.cs:26:9:27:11 | After foreach (... ... in ...) ... | Foreach.cs:24:10:24:11 | Exit | 4 | +| Foreach.cs:26:18:26:31 | Before (..., ...) | Foreach.cs:26:9:27:11 | [LoopHeader] foreach (... ... in ...) ... | 7 | +| Foreach.cs:26:36:26:39 | After access to parameter args [empty] | Foreach.cs:26:36:26:39 | After access to parameter args [empty] | 1 | +| Foreach.cs:26:36:26:39 | After access to parameter args [non-empty] | Foreach.cs:26:36:26:39 | After access to parameter args [non-empty] | 1 | +| Foreach.cs:30:10:30:11 | Entry | Foreach.cs:32:32:32:35 | access to parameter args | 5 | +| Foreach.cs:32:9:33:11 | After foreach (... ... in ...) ... | Foreach.cs:30:10:30:11 | Exit | 4 | +| Foreach.cs:32:18:32:27 | Before (..., ...) | Foreach.cs:32:9:33:11 | [LoopHeader] foreach (... ... in ...) ... | 7 | +| Foreach.cs:32:32:32:35 | After access to parameter args [empty] | Foreach.cs:32:32:32:35 | After access to parameter args [empty] | 1 | +| Foreach.cs:32:32:32:35 | After access to parameter args [non-empty] | Foreach.cs:32:32:32:35 | After access to parameter args [non-empty] | 1 | +| Foreach.cs:36:10:36:11 | Entry | Foreach.cs:38:39:38:42 | access to parameter args | 5 | +| Foreach.cs:38:9:39:11 | After foreach (... ... in ...) ... | Foreach.cs:36:10:36:11 | Exit | 4 | +| Foreach.cs:38:18:38:34 | Before (..., ...) | Foreach.cs:38:9:39:11 | [LoopHeader] foreach (... ... in ...) ... | 7 | +| Foreach.cs:38:39:38:42 | After access to parameter args [empty] | Foreach.cs:38:39:38:42 | After access to parameter args [empty] | 1 | +| Foreach.cs:38:39:38:42 | After access to parameter args [non-empty] | Foreach.cs:38:39:38:42 | After access to parameter args [non-empty] | 1 | +| Initializers.cs:3:7:3:18 | Entry | Initializers.cs:3:7:3:18 | Exit | 9 | +| Initializers.cs:3:7:3:18 | Entry | Initializers.cs:3:7:3:18 | Exit | 27 | +| Initializers.cs:8:5:8:16 | Entry | Initializers.cs:8:5:8:16 | Exit | 11 | +| Initializers.cs:10:5:10:16 | Entry | Initializers.cs:10:5:10:16 | Exit | 12 | +| Initializers.cs:12:10:12:10 | Entry | Initializers.cs:12:10:12:10 | Exit | 48 | +| Initializers.cs:20:11:20:23 | Entry | Initializers.cs:20:11:20:23 | Exit | 11 | +| Initializers.cs:20:11:20:23 | Entry | Initializers.cs:20:11:20:23 | Exit | 19 | +| Initializers.cs:26:11:26:13 | Entry | Initializers.cs:26:11:26:13 | Exit | 11 | +| Initializers.cs:31:9:31:11 | Entry | Initializers.cs:31:9:31:11 | Exit | 22 | +| Initializers.cs:33:9:33:11 | Entry | Initializers.cs:33:9:33:11 | Exit | 19 | +| Initializers.cs:35:9:35:11 | Entry | Initializers.cs:35:9:35:11 | Exit | 28 | +| Initializers.cs:39:7:39:23 | Entry | Initializers.cs:39:7:39:23 | Exit | 11 | +| Initializers.cs:41:11:41:18 | Entry | Initializers.cs:41:11:41:18 | Exit | 11 | +| Initializers.cs:51:10:51:13 | Entry | Initializers.cs:51:10:51:13 | Exit | 246 | +| LoopUnrolling.cs:5:7:5:19 | Entry | LoopUnrolling.cs:5:7:5:19 | Exit | 11 | +| LoopUnrolling.cs:7:10:7:11 | Entry | LoopUnrolling.cs:9:13:9:28 | ... == ... | 11 | +| LoopUnrolling.cs:7:10:7:11 | Normal Exit | LoopUnrolling.cs:7:10:7:11 | Exit | 2 | +| LoopUnrolling.cs:9:13:9:28 | After ... == ... [false] | LoopUnrolling.cs:11:29:11:32 | access to parameter args | 4 | +| LoopUnrolling.cs:9:13:9:28 | After ... == ... [true] | LoopUnrolling.cs:10:13:10:19 | return ...; | 3 | +| LoopUnrolling.cs:11:9:12:35 | After foreach (... ... in ...) ... | LoopUnrolling.cs:8:5:13:5 | After {...} | 2 | +| LoopUnrolling.cs:11:22:11:24 | String arg | LoopUnrolling.cs:11:9:12:35 | [LoopHeader] foreach (... ... in ...) ... | 8 | +| LoopUnrolling.cs:11:29:11:32 | After access to parameter args [empty] | LoopUnrolling.cs:11:29:11:32 | After access to parameter args [empty] | 1 | +| LoopUnrolling.cs:11:29:11:32 | After access to parameter args [non-empty] | LoopUnrolling.cs:11:29:11:32 | After access to parameter args [non-empty] | 1 | +| LoopUnrolling.cs:15:10:15:11 | Entry | LoopUnrolling.cs:18:27:18:28 | access to local variable xs | 20 | +| LoopUnrolling.cs:18:9:19:33 | After foreach (... ... in ...) ... | LoopUnrolling.cs:15:10:15:11 | Exit | 4 | +| LoopUnrolling.cs:18:22:18:22 | String x | LoopUnrolling.cs:18:9:19:33 | [LoopHeader] foreach (... ... in ...) ... | 8 | +| LoopUnrolling.cs:18:27:18:28 | After access to local variable xs [empty] | LoopUnrolling.cs:18:27:18:28 | After access to local variable xs [empty] | 1 | +| LoopUnrolling.cs:18:27:18:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:18:27:18:28 | After access to local variable xs [non-empty] | 1 | +| LoopUnrolling.cs:22:10:22:11 | Entry | LoopUnrolling.cs:24:29:24:32 | access to parameter args | 5 | +| LoopUnrolling.cs:24:9:26:40 | After foreach (... ... in ...) ... | LoopUnrolling.cs:22:10:22:11 | Exit | 4 | +| LoopUnrolling.cs:24:22:24:24 | Char arg | LoopUnrolling.cs:25:34:25:37 | access to parameter args | 3 | +| LoopUnrolling.cs:24:29:24:32 | After access to parameter args [empty] | LoopUnrolling.cs:24:29:24:32 | After access to parameter args [empty] | 1 | +| LoopUnrolling.cs:24:29:24:32 | After access to parameter args [non-empty] | LoopUnrolling.cs:24:29:24:32 | After access to parameter args [non-empty] | 1 | +| LoopUnrolling.cs:25:13:26:40 | After foreach (... ... in ...) ... | LoopUnrolling.cs:24:9:26:40 | [LoopHeader] foreach (... ... in ...) ... | 2 | +| LoopUnrolling.cs:25:26:25:29 | Char arg0 | LoopUnrolling.cs:25:13:26:40 | [LoopHeader] foreach (... ... in ...) ... | 8 | +| LoopUnrolling.cs:25:34:25:37 | After access to parameter args [empty] | LoopUnrolling.cs:25:34:25:37 | After access to parameter args [empty] | 1 | +| LoopUnrolling.cs:25:34:25:37 | After access to parameter args [non-empty] | LoopUnrolling.cs:25:34:25:37 | After access to parameter args [non-empty] | 1 | +| LoopUnrolling.cs:29:10:29:11 | Entry | LoopUnrolling.cs:32:27:32:28 | access to local variable xs | 14 | +| LoopUnrolling.cs:32:9:33:33 | After foreach (... ... in ...) ... | LoopUnrolling.cs:29:10:29:11 | Exit | 4 | +| LoopUnrolling.cs:32:22:32:22 | String x | LoopUnrolling.cs:32:9:33:33 | [LoopHeader] foreach (... ... in ...) ... | 8 | +| LoopUnrolling.cs:32:27:32:28 | After access to local variable xs [empty] | LoopUnrolling.cs:32:27:32:28 | After access to local variable xs [empty] | 1 | +| LoopUnrolling.cs:32:27:32:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:32:27:32:28 | After access to local variable xs [non-empty] | 1 | +| LoopUnrolling.cs:36:10:36:11 | Entry | LoopUnrolling.cs:40:27:40:28 | access to local variable xs | 36 | +| LoopUnrolling.cs:40:9:42:41 | After foreach (... ... in ...) ... | LoopUnrolling.cs:36:10:36:11 | Exit | 4 | +| LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:41:31:41:32 | access to local variable ys | 3 | +| LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [empty] | LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [empty] | 1 | +| LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [non-empty] | 1 | +| LoopUnrolling.cs:41:13:42:41 | After foreach (... ... in ...) ... | LoopUnrolling.cs:40:9:42:41 | [LoopHeader] foreach (... ... in ...) ... | 2 | +| LoopUnrolling.cs:41:26:41:26 | String y | LoopUnrolling.cs:41:13:42:41 | [LoopHeader] foreach (... ... in ...) ... | 12 | +| LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [empty] | LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [empty] | 1 | +| LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [non-empty] | LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [non-empty] | 1 | +| LoopUnrolling.cs:45:10:45:11 | Entry | LoopUnrolling.cs:48:27:48:28 | access to local variable xs | 20 | +| LoopUnrolling.cs:48:27:48:28 | After access to local variable xs [empty] | LoopUnrolling.cs:45:10:45:11 | Exit | 5 | +| LoopUnrolling.cs:48:27:48:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:49:9:52:9 | {...} | 3 | +| LoopUnrolling.cs:50:9:50:13 | Label: | LoopUnrolling.cs:51:13:51:23 | goto ...; | 9 | +| LoopUnrolling.cs:55:10:55:11 | Entry | LoopUnrolling.cs:58:27:58:28 | access to local variable xs | 21 | +| LoopUnrolling.cs:58:9:64:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:55:10:55:11 | Exit | 4 | | LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:60:17:60:17 | access to parameter b | 4 | -| LoopUnrolling.cs:61:17:61:37 | ...; | LoopUnrolling.cs:61:17:61:36 | call to method WriteLine | 3 | -| LoopUnrolling.cs:62:13:63:37 | if (...) ... | LoopUnrolling.cs:62:17:62:17 | access to parameter b | 2 | -| LoopUnrolling.cs:63:17:63:37 | ...; | LoopUnrolling.cs:63:17:63:36 | call to method WriteLine | 3 | -| LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:69:14:69:23 | call to method Any | 5 | -| LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | LoopUnrolling.cs:67:10:67:11 | exit M8 | 2 | -| LoopUnrolling.cs:69:13:69:23 | [false] !... | LoopUnrolling.cs:69:13:69:23 | [false] !... | 1 | -| LoopUnrolling.cs:69:13:69:23 | [true] !... | LoopUnrolling.cs:69:13:69:23 | [true] !... | 1 | -| LoopUnrolling.cs:70:13:70:19 | return ...; | LoopUnrolling.cs:70:13:70:19 | return ...; | 1 | -| LoopUnrolling.cs:71:9:71:21 | ...; | LoopUnrolling.cs:72:29:72:32 | access to parameter args | 4 | -| LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | 1 | -| LoopUnrolling.cs:72:22:72:24 | String arg | LoopUnrolling.cs:73:13:73:34 | call to method WriteLine | 4 | -| LoopUnrolling.cs:76:10:76:11 | enter M9 | LoopUnrolling.cs:79:27:79:28 | access to local variable xs | 8 | -| LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | LoopUnrolling.cs:76:10:76:11 | exit M9 | 2 | -| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | 1 | -| LoopUnrolling.cs:79:22:79:22 | String x | LoopUnrolling.cs:81:13:81:32 | call to method WriteLine | 5 | -| LoopUnrolling.cs:85:10:85:12 | enter M10 | LoopUnrolling.cs:88:27:88:28 | access to local variable xs | 8 | -| LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | LoopUnrolling.cs:85:10:85:12 | exit M10 | 2 | -| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | 1 | -| LoopUnrolling.cs:88:22:88:22 | String x | LoopUnrolling.cs:90:13:90:32 | call to method WriteLine | 5 | -| LoopUnrolling.cs:94:10:94:12 | enter M11 | LoopUnrolling.cs:97:27:97:28 | access to local variable xs | 8 | -| LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | LoopUnrolling.cs:94:10:94:12 | exit M11 | 2 | -| LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | 1 | -| LoopUnrolling.cs:97:22:97:22 | String x | LoopUnrolling.cs:99:13:99:32 | call to method WriteLine | 5 | -| MultiImplementationA.cs:4:7:4:8 | enter C1 | MultiImplementationA.cs:4:7:4:8 | enter C1 | 1 | -| MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | MultiImplementationA.cs:4:7:4:8 | exit C1 | 2 | -| MultiImplementationA.cs:4:7:4:8 | this access | MultiImplementationA.cs:4:7:4:8 | {...} | 4 | -| MultiImplementationA.cs:6:22:6:31 | enter get_P1 | MultiImplementationA.cs:6:22:6:31 | enter get_P1 | 1 | -| MultiImplementationA.cs:6:22:6:31 | exit get_P1 | MultiImplementationA.cs:6:22:6:31 | exit get_P1 | 1 | -| MultiImplementationA.cs:6:28:6:31 | null | MultiImplementationA.cs:6:22:6:31 | exit get_P1 (abnormal) | 3 | -| MultiImplementationA.cs:7:21:7:23 | enter get_P2 | MultiImplementationA.cs:7:21:7:23 | enter get_P2 | 1 | -| MultiImplementationA.cs:7:21:7:23 | exit get_P2 | MultiImplementationA.cs:7:21:7:23 | exit get_P2 | 1 | -| MultiImplementationA.cs:7:25:7:39 | {...} | MultiImplementationA.cs:7:21:7:23 | exit get_P2 (abnormal) | 4 | -| MultiImplementationA.cs:7:41:7:43 | enter set_P2 | MultiImplementationA.cs:7:41:7:43 | enter set_P2 | 1 | -| MultiImplementationA.cs:7:41:7:43 | exit set_P2 | MultiImplementationA.cs:7:41:7:43 | exit set_P2 | 1 | -| MultiImplementationA.cs:7:45:7:59 | {...} | MultiImplementationA.cs:7:41:7:43 | exit set_P2 (abnormal) | 4 | -| MultiImplementationA.cs:8:16:8:16 | enter M | MultiImplementationA.cs:8:16:8:16 | enter M | 1 | -| MultiImplementationA.cs:8:16:8:16 | exit M | MultiImplementationA.cs:8:16:8:16 | exit M | 1 | -| MultiImplementationA.cs:8:29:8:32 | null | MultiImplementationA.cs:8:16:8:16 | exit M (abnormal) | 3 | -| MultiImplementationA.cs:11:7:11:8 | enter | MultiImplementationA.cs:11:7:11:8 | enter | 1 | -| MultiImplementationA.cs:11:7:11:8 | exit (normal) | MultiImplementationA.cs:11:7:11:8 | exit | 2 | -| MultiImplementationA.cs:13:16:13:16 | this access | MultiImplementationA.cs:24:32:24:34 | ... = ... | 8 | -| MultiImplementationA.cs:14:31:14:31 | access to parameter i | MultiImplementationA.cs:14:31:14:31 | exit get_Item (normal) | 2 | -| MultiImplementationA.cs:14:31:14:31 | enter get_Item | MultiImplementationA.cs:14:31:14:31 | enter get_Item | 1 | -| MultiImplementationA.cs:14:31:14:31 | exit get_Item | MultiImplementationA.cs:14:31:14:31 | exit get_Item | 1 | -| MultiImplementationA.cs:15:36:15:38 | enter get_Item | MultiImplementationA.cs:15:36:15:38 | enter get_Item | 1 | -| MultiImplementationA.cs:15:36:15:38 | exit get_Item | MultiImplementationA.cs:15:36:15:38 | exit get_Item | 1 | -| MultiImplementationA.cs:15:40:15:52 | {...} | MultiImplementationA.cs:15:36:15:38 | exit get_Item (normal) | 4 | -| MultiImplementationA.cs:15:54:15:56 | enter set_Item | MultiImplementationA.cs:15:54:15:56 | enter set_Item | 1 | -| MultiImplementationA.cs:15:54:15:56 | exit set_Item (normal) | MultiImplementationA.cs:15:54:15:56 | exit set_Item | 2 | +| LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [empty] | LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [empty] | 1 | +| LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [non-empty] | 1 | +| LoopUnrolling.cs:60:13:61:37 | After if (...) ... | LoopUnrolling.cs:62:17:62:17 | access to parameter b | 3 | +| LoopUnrolling.cs:60:17:60:17 | After access to parameter b [false] | LoopUnrolling.cs:60:17:60:17 | After access to parameter b [false] | 1 | +| LoopUnrolling.cs:60:17:60:17 | After access to parameter b [true] | LoopUnrolling.cs:61:17:61:37 | After ...; | 7 | +| LoopUnrolling.cs:62:13:63:37 | After if (...) ... | LoopUnrolling.cs:58:9:64:9 | [LoopHeader] foreach (... ... in ...) ... | 3 | +| LoopUnrolling.cs:62:17:62:17 | After access to parameter b [false] | LoopUnrolling.cs:62:17:62:17 | After access to parameter b [false] | 1 | +| LoopUnrolling.cs:62:17:62:17 | After access to parameter b [true] | LoopUnrolling.cs:63:17:63:37 | After ...; | 7 | +| LoopUnrolling.cs:67:10:67:11 | Entry | LoopUnrolling.cs:69:14:69:23 | call to method Any | 8 | +| LoopUnrolling.cs:67:10:67:11 | Normal Exit | LoopUnrolling.cs:67:10:67:11 | Exit | 2 | +| LoopUnrolling.cs:69:14:69:23 | After call to method Any [false] | LoopUnrolling.cs:70:13:70:19 | return ...; | 4 | +| LoopUnrolling.cs:69:14:69:23 | After call to method Any [true] | LoopUnrolling.cs:72:29:72:32 | access to parameter args | 11 | +| LoopUnrolling.cs:72:9:73:35 | After foreach (... ... in ...) ... | LoopUnrolling.cs:68:5:74:5 | After {...} | 2 | +| LoopUnrolling.cs:72:22:72:24 | String arg | LoopUnrolling.cs:72:9:73:35 | [LoopHeader] foreach (... ... in ...) ... | 8 | +| LoopUnrolling.cs:72:29:72:32 | After access to parameter args [empty] | LoopUnrolling.cs:72:29:72:32 | After access to parameter args [empty] | 1 | +| LoopUnrolling.cs:72:29:72:32 | After access to parameter args [non-empty] | LoopUnrolling.cs:72:29:72:32 | After access to parameter args [non-empty] | 1 | +| LoopUnrolling.cs:76:10:76:11 | Entry | LoopUnrolling.cs:79:27:79:28 | access to local variable xs | 15 | +| LoopUnrolling.cs:79:9:82:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:76:10:76:11 | Exit | 4 | +| LoopUnrolling.cs:79:22:79:22 | String x | LoopUnrolling.cs:79:9:82:9 | [LoopHeader] foreach (... ... in ...) ... | 10 | +| LoopUnrolling.cs:79:27:79:28 | After access to local variable xs [empty] | LoopUnrolling.cs:79:27:79:28 | After access to local variable xs [empty] | 1 | +| LoopUnrolling.cs:79:27:79:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:79:27:79:28 | After access to local variable xs [non-empty] | 1 | +| LoopUnrolling.cs:85:10:85:12 | Entry | LoopUnrolling.cs:88:27:88:28 | access to local variable xs | 15 | +| LoopUnrolling.cs:88:9:91:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:85:10:85:12 | Exit | 4 | +| LoopUnrolling.cs:88:22:88:22 | String x | LoopUnrolling.cs:88:9:91:9 | [LoopHeader] foreach (... ... in ...) ... | 10 | +| LoopUnrolling.cs:88:27:88:28 | After access to local variable xs [empty] | LoopUnrolling.cs:88:27:88:28 | After access to local variable xs [empty] | 1 | +| LoopUnrolling.cs:88:27:88:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:88:27:88:28 | After access to local variable xs [non-empty] | 1 | +| LoopUnrolling.cs:94:10:94:12 | Entry | LoopUnrolling.cs:97:27:97:28 | access to local variable xs | 15 | +| LoopUnrolling.cs:97:9:100:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:94:10:94:12 | Exit | 4 | +| LoopUnrolling.cs:97:22:97:22 | String x | LoopUnrolling.cs:97:9:100:9 | [LoopHeader] foreach (... ... in ...) ... | 10 | +| LoopUnrolling.cs:97:27:97:28 | After access to local variable xs [empty] | LoopUnrolling.cs:97:27:97:28 | After access to local variable xs [empty] | 1 | +| LoopUnrolling.cs:97:27:97:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:97:27:97:28 | After access to local variable xs [non-empty] | 1 | +| MultiImplementationA.cs:4:7:4:8 | Before call to method | MultiImplementationA.cs:4:7:4:8 | {...} | 8 | +| MultiImplementationA.cs:4:7:4:8 | Entry | MultiImplementationA.cs:4:7:4:8 | Entry | 1 | +| MultiImplementationA.cs:4:7:4:8 | Normal Exit | MultiImplementationA.cs:4:7:4:8 | Exit | 2 | +| MultiImplementationA.cs:6:22:6:31 | Before throw ... | MultiImplementationA.cs:6:22:6:31 | Exceptional Exit | 4 | +| MultiImplementationA.cs:6:22:6:31 | Entry | MultiImplementationA.cs:6:22:6:31 | Entry | 1 | +| MultiImplementationA.cs:6:22:6:31 | Exit | MultiImplementationA.cs:6:22:6:31 | Exit | 1 | +| MultiImplementationA.cs:7:21:7:23 | Entry | MultiImplementationA.cs:7:21:7:23 | Entry | 1 | +| MultiImplementationA.cs:7:21:7:23 | Exit | MultiImplementationA.cs:7:21:7:23 | Exit | 1 | +| MultiImplementationA.cs:7:25:7:39 | {...} | MultiImplementationA.cs:7:21:7:23 | Exceptional Exit | 5 | +| MultiImplementationA.cs:7:41:7:43 | Entry | MultiImplementationA.cs:7:41:7:43 | value | 2 | +| MultiImplementationA.cs:7:41:7:43 | Exit | MultiImplementationA.cs:7:41:7:43 | Exit | 1 | +| MultiImplementationA.cs:7:45:7:59 | {...} | MultiImplementationA.cs:7:41:7:43 | Exceptional Exit | 5 | +| MultiImplementationA.cs:8:16:8:16 | Entry | MultiImplementationA.cs:8:16:8:16 | Entry | 1 | +| MultiImplementationA.cs:8:16:8:16 | Exit | MultiImplementationA.cs:8:16:8:16 | Exit | 1 | +| MultiImplementationA.cs:8:23:8:32 | Before throw ... | MultiImplementationA.cs:8:16:8:16 | Exceptional Exit | 4 | +| MultiImplementationA.cs:11:7:11:8 | Entry | MultiImplementationA.cs:11:7:11:8 | Entry | 1 | +| MultiImplementationA.cs:11:7:11:8 | Normal Exit | MultiImplementationA.cs:11:7:11:8 | Exit | 2 | +| MultiImplementationA.cs:13:16:13:20 | Before ... = ... | MultiImplementationA.cs:24:32:24:34 | After ... = ... | 16 | +| MultiImplementationA.cs:14:31:14:31 | Entry | MultiImplementationA.cs:14:25:14:25 | i | 2 | +| MultiImplementationA.cs:14:31:14:31 | Exit | MultiImplementationA.cs:14:31:14:31 | Exit | 1 | +| MultiImplementationA.cs:14:31:14:31 | access to parameter i | MultiImplementationA.cs:14:31:14:31 | Normal Exit | 2 | +| MultiImplementationA.cs:15:36:15:38 | Entry | MultiImplementationA.cs:15:31:15:31 | s | 2 | +| MultiImplementationA.cs:15:36:15:38 | Exit | MultiImplementationA.cs:15:36:15:38 | Exit | 1 | +| MultiImplementationA.cs:15:40:15:52 | {...} | MultiImplementationA.cs:15:36:15:38 | Normal Exit | 5 | +| MultiImplementationA.cs:15:54:15:56 | Entry | MultiImplementationA.cs:15:54:15:56 | value | 3 | +| MultiImplementationA.cs:15:54:15:56 | Normal Exit | MultiImplementationA.cs:15:54:15:56 | Exit | 2 | | MultiImplementationA.cs:15:58:15:60 | {...} | MultiImplementationA.cs:15:58:15:60 | {...} | 1 | -| MultiImplementationA.cs:16:17:16:18 | enter M1 | MultiImplementationA.cs:16:17:16:18 | enter M1 | 1 | -| MultiImplementationA.cs:16:17:16:18 | exit M1 (normal) | MultiImplementationA.cs:16:17:16:18 | exit M1 | 2 | -| MultiImplementationA.cs:17:5:19:5 | {...} | MultiImplementationA.cs:18:9:18:22 | M2(...) | 2 | -| MultiImplementationA.cs:18:9:18:22 | enter M2 | MultiImplementationA.cs:18:9:18:22 | exit M2 | 4 | -| MultiImplementationA.cs:20:12:20:13 | enter C2 | MultiImplementationA.cs:20:12:20:13 | enter C2 | 1 | -| MultiImplementationA.cs:20:12:20:13 | exit C2 | MultiImplementationA.cs:20:12:20:13 | exit C2 | 1 | -| MultiImplementationA.cs:20:12:20:13 | this access | MultiImplementationA.cs:20:12:20:13 | exit C2 (normal) | 10 | -| MultiImplementationA.cs:21:12:21:13 | enter C2 | MultiImplementationA.cs:21:12:21:13 | enter C2 | 1 | -| MultiImplementationA.cs:21:12:21:13 | exit C2 (normal) | MultiImplementationA.cs:21:12:21:13 | exit C2 | 2 | -| MultiImplementationA.cs:21:24:21:24 | 0 | MultiImplementationA.cs:21:27:21:29 | {...} | 3 | -| MultiImplementationA.cs:22:6:22:7 | enter ~C2 | MultiImplementationA.cs:22:6:22:7 | enter ~C2 | 1 | -| MultiImplementationA.cs:22:6:22:7 | exit ~C2 | MultiImplementationA.cs:22:6:22:7 | exit ~C2 | 1 | -| MultiImplementationA.cs:22:11:22:13 | {...} | MultiImplementationA.cs:22:6:22:7 | exit ~C2 (normal) | 2 | -| MultiImplementationA.cs:23:28:23:35 | enter implicit conversion | MultiImplementationA.cs:23:28:23:35 | enter implicit conversion | 1 | -| MultiImplementationA.cs:23:28:23:35 | exit implicit conversion | MultiImplementationA.cs:23:28:23:35 | exit implicit conversion | 1 | -| MultiImplementationA.cs:23:50:23:53 | null | MultiImplementationA.cs:23:28:23:35 | exit implicit conversion (normal) | 2 | -| MultiImplementationA.cs:28:7:28:8 | enter C3 | MultiImplementationA.cs:28:7:28:8 | enter C3 | 1 | -| MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | MultiImplementationA.cs:28:7:28:8 | exit C3 | 2 | -| MultiImplementationA.cs:28:7:28:8 | this access | MultiImplementationA.cs:28:7:28:8 | {...} | 4 | -| MultiImplementationA.cs:30:21:30:23 | enter get_P3 | MultiImplementationA.cs:30:21:30:23 | exit get_P3 | 5 | -| MultiImplementationA.cs:34:15:34:16 | enter C4 | MultiImplementationA.cs:34:15:34:16 | enter C4 | 1 | -| MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | MultiImplementationA.cs:34:15:34:16 | exit C4 | 2 | -| MultiImplementationA.cs:34:15:34:16 | this access | MultiImplementationA.cs:34:15:34:16 | {...} | 4 | -| MultiImplementationA.cs:36:9:36:10 | enter M1 | MultiImplementationA.cs:36:9:36:10 | enter M1 | 1 | -| MultiImplementationA.cs:36:9:36:10 | exit M1 | MultiImplementationA.cs:36:9:36:10 | exit M1 | 1 | -| MultiImplementationA.cs:36:14:36:28 | {...} | MultiImplementationA.cs:36:9:36:10 | exit M1 (abnormal) | 4 | -| MultiImplementationA.cs:37:9:37:10 | enter M2 | MultiImplementationA.cs:37:9:37:10 | exit M2 | 6 | -| MultiImplementationB.cs:1:7:1:8 | this access | MultiImplementationB.cs:1:7:1:8 | {...} | 4 | -| MultiImplementationB.cs:3:22:3:22 | 0 | MultiImplementationA.cs:6:22:6:31 | exit get_P1 (normal) | 2 | -| MultiImplementationB.cs:4:25:4:37 | {...} | MultiImplementationA.cs:7:21:7:23 | exit get_P2 (normal) | 4 | -| MultiImplementationB.cs:4:43:4:45 | {...} | MultiImplementationA.cs:7:41:7:43 | exit set_P2 (normal) | 2 | -| MultiImplementationB.cs:5:23:5:23 | 2 | MultiImplementationA.cs:8:16:8:16 | exit M (normal) | 2 | -| MultiImplementationB.cs:11:16:11:16 | this access | MultiImplementationB.cs:22:32:22:34 | ... = ... | 8 | -| MultiImplementationB.cs:12:37:12:40 | null | MultiImplementationA.cs:14:31:14:31 | exit get_Item (abnormal) | 3 | -| MultiImplementationB.cs:13:40:13:54 | {...} | MultiImplementationA.cs:15:36:15:38 | exit get_Item (abnormal) | 4 | +| MultiImplementationA.cs:16:17:16:18 | Entry | MultiImplementationA.cs:16:24:16:24 | i | 2 | +| MultiImplementationA.cs:16:17:16:18 | Normal Exit | MultiImplementationA.cs:16:17:16:18 | Exit | 2 | +| MultiImplementationA.cs:17:5:19:5 | {...} | MultiImplementationA.cs:17:5:19:5 | After {...} | 3 | +| MultiImplementationA.cs:18:9:18:22 | Entry | MultiImplementationA.cs:18:9:18:22 | Exit | 4 | +| MultiImplementationA.cs:20:12:20:13 | Before call to method | MultiImplementationA.cs:20:12:20:13 | Normal Exit | 20 | +| MultiImplementationA.cs:20:12:20:13 | Entry | MultiImplementationA.cs:20:19:20:19 | i | 2 | +| MultiImplementationA.cs:20:12:20:13 | Exit | MultiImplementationA.cs:20:12:20:13 | Exit | 1 | +| MultiImplementationA.cs:21:12:21:13 | Entry | MultiImplementationA.cs:21:12:21:13 | Entry | 1 | +| MultiImplementationA.cs:21:12:21:13 | Normal Exit | MultiImplementationA.cs:21:12:21:13 | Exit | 2 | +| MultiImplementationA.cs:21:19:21:22 | Before call to constructor C2 | MultiImplementationA.cs:21:27:21:29 | {...} | 5 | +| MultiImplementationA.cs:22:6:22:7 | Entry | MultiImplementationA.cs:22:6:22:7 | Entry | 1 | +| MultiImplementationA.cs:22:6:22:7 | Exit | MultiImplementationA.cs:22:6:22:7 | Exit | 1 | +| MultiImplementationA.cs:22:11:22:13 | {...} | MultiImplementationA.cs:22:6:22:7 | Normal Exit | 2 | +| MultiImplementationA.cs:23:28:23:35 | Entry | MultiImplementationA.cs:23:44:23:44 | i | 2 | +| MultiImplementationA.cs:23:28:23:35 | Exit | MultiImplementationA.cs:23:28:23:35 | Exit | 1 | +| MultiImplementationA.cs:23:50:23:53 | null | MultiImplementationA.cs:23:28:23:35 | Normal Exit | 2 | +| MultiImplementationA.cs:28:7:28:8 | Before call to method | MultiImplementationA.cs:28:7:28:8 | {...} | 8 | +| MultiImplementationA.cs:28:7:28:8 | Entry | MultiImplementationA.cs:28:7:28:8 | Entry | 1 | +| MultiImplementationA.cs:28:7:28:8 | Normal Exit | MultiImplementationA.cs:28:7:28:8 | Exit | 2 | +| MultiImplementationA.cs:30:21:30:23 | Entry | MultiImplementationA.cs:30:21:30:23 | Exit | 6 | +| MultiImplementationA.cs:34:15:34:16 | Before call to method | MultiImplementationA.cs:34:15:34:16 | {...} | 8 | +| MultiImplementationA.cs:34:15:34:16 | Entry | MultiImplementationA.cs:34:15:34:16 | Entry | 1 | +| MultiImplementationA.cs:34:15:34:16 | Normal Exit | MultiImplementationA.cs:34:15:34:16 | Exit | 2 | +| MultiImplementationA.cs:36:9:36:10 | Entry | MultiImplementationA.cs:36:9:36:10 | Entry | 1 | +| MultiImplementationA.cs:36:9:36:10 | Exit | MultiImplementationA.cs:36:9:36:10 | Exit | 1 | +| MultiImplementationA.cs:36:14:36:28 | {...} | MultiImplementationA.cs:36:9:36:10 | Exceptional Exit | 5 | +| MultiImplementationA.cs:37:9:37:10 | Entry | MultiImplementationA.cs:37:9:37:10 | Exit | 7 | +| MultiImplementationB.cs:1:7:1:8 | Before call to method | MultiImplementationB.cs:1:7:1:8 | {...} | 8 | +| MultiImplementationB.cs:3:22:3:22 | 0 | MultiImplementationA.cs:6:22:6:31 | Normal Exit | 2 | +| MultiImplementationB.cs:4:25:4:37 | {...} | MultiImplementationA.cs:7:21:7:23 | Normal Exit | 5 | +| MultiImplementationB.cs:4:43:4:45 | {...} | MultiImplementationA.cs:7:41:7:43 | Normal Exit | 2 | +| MultiImplementationB.cs:5:23:5:23 | 2 | MultiImplementationA.cs:8:16:8:16 | Normal Exit | 2 | +| MultiImplementationB.cs:11:16:11:20 | Before ... = ... | MultiImplementationB.cs:22:32:22:34 | After ... = ... | 16 | +| MultiImplementationB.cs:12:31:12:40 | Before throw ... | MultiImplementationA.cs:14:31:14:31 | Exceptional Exit | 4 | +| MultiImplementationB.cs:13:40:13:54 | {...} | MultiImplementationA.cs:15:36:15:38 | Exceptional Exit | 5 | | MultiImplementationB.cs:13:60:13:62 | {...} | MultiImplementationB.cs:13:60:13:62 | {...} | 1 | -| MultiImplementationB.cs:15:5:17:5 | {...} | MultiImplementationB.cs:16:9:16:31 | M2(...) | 2 | -| MultiImplementationB.cs:16:9:16:31 | enter M2 | MultiImplementationB.cs:16:9:16:31 | exit M2 | 5 | -| MultiImplementationB.cs:18:12:18:13 | this access | MultiImplementationA.cs:20:12:20:13 | exit C2 (abnormal) | 7 | -| MultiImplementationB.cs:19:24:19:24 | 1 | MultiImplementationB.cs:19:27:19:29 | {...} | 3 | -| MultiImplementationB.cs:20:11:20:25 | {...} | MultiImplementationA.cs:22:6:22:7 | exit ~C2 (abnormal) | 4 | -| MultiImplementationB.cs:21:56:21:59 | null | MultiImplementationA.cs:23:28:23:35 | exit implicit conversion (abnormal) | 3 | -| MultiImplementationB.cs:25:7:25:8 | this access | MultiImplementationB.cs:25:7:25:8 | {...} | 4 | -| MultiImplementationB.cs:30:15:30:16 | this access | MultiImplementationB.cs:30:15:30:16 | {...} | 4 | -| MultiImplementationB.cs:32:17:32:17 | 0 | MultiImplementationA.cs:36:9:36:10 | exit M1 (normal) | 2 | -| NullCoalescing.cs:1:7:1:20 | enter NullCoalescing | NullCoalescing.cs:1:7:1:20 | exit NullCoalescing | 7 | -| NullCoalescing.cs:3:9:3:10 | enter M1 | NullCoalescing.cs:3:23:3:23 | access to parameter i | 2 | -| NullCoalescing.cs:3:23:3:28 | ... ?? ... | NullCoalescing.cs:3:9:3:10 | exit M1 | 3 | -| NullCoalescing.cs:3:28:3:28 | 0 | NullCoalescing.cs:3:28:3:28 | 0 | 1 | -| NullCoalescing.cs:5:9:5:10 | enter M2 | NullCoalescing.cs:5:25:5:25 | access to parameter b | 2 | -| NullCoalescing.cs:5:24:5:43 | ... ? ... : ... | NullCoalescing.cs:5:9:5:10 | exit M2 | 3 | -| NullCoalescing.cs:5:25:5:34 | [false] ... ?? ... | NullCoalescing.cs:5:25:5:34 | [false] ... ?? ... | 1 | -| NullCoalescing.cs:5:25:5:34 | [true] ... ?? ... | NullCoalescing.cs:5:25:5:34 | [true] ... ?? ... | 1 | -| NullCoalescing.cs:5:30:5:34 | false | NullCoalescing.cs:5:30:5:34 | false | 1 | -| NullCoalescing.cs:5:39:5:39 | 0 | NullCoalescing.cs:5:39:5:39 | 0 | 1 | -| NullCoalescing.cs:5:43:5:43 | 1 | NullCoalescing.cs:5:43:5:43 | 1 | 1 | -| NullCoalescing.cs:7:12:7:13 | enter M3 | NullCoalescing.cs:7:40:7:41 | access to parameter s1 | 2 | -| NullCoalescing.cs:7:40:7:53 | ... ?? ... | NullCoalescing.cs:7:12:7:13 | exit M3 | 3 | -| NullCoalescing.cs:7:46:7:47 | access to parameter s2 | NullCoalescing.cs:7:46:7:47 | access to parameter s2 | 1 | -| NullCoalescing.cs:7:46:7:53 | ... ?? ... | NullCoalescing.cs:7:46:7:53 | ... ?? ... | 1 | -| NullCoalescing.cs:7:52:7:53 | "" | NullCoalescing.cs:7:52:7:53 | "" | 1 | -| NullCoalescing.cs:9:12:9:13 | enter M4 | NullCoalescing.cs:9:37:9:37 | access to parameter b | 2 | -| NullCoalescing.cs:9:36:9:58 | ... ?? ... | NullCoalescing.cs:9:12:9:13 | exit M4 | 3 | -| NullCoalescing.cs:9:37:9:45 | [non-null] ... ? ... : ... | NullCoalescing.cs:9:37:9:45 | [non-null] ... ? ... : ... | 1 | -| NullCoalescing.cs:9:37:9:45 | [null] ... ? ... : ... | NullCoalescing.cs:9:37:9:45 | [null] ... ? ... : ... | 1 | -| NullCoalescing.cs:9:41:9:41 | access to parameter s | NullCoalescing.cs:9:41:9:41 | access to parameter s | 1 | -| NullCoalescing.cs:9:45:9:45 | access to parameter s | NullCoalescing.cs:9:45:9:45 | access to parameter s | 1 | -| NullCoalescing.cs:9:51:9:52 | "" | NullCoalescing.cs:9:51:9:52 | "" | 1 | -| NullCoalescing.cs:9:51:9:58 | ... ?? ... | NullCoalescing.cs:9:51:9:58 | ... ?? ... | 1 | -| NullCoalescing.cs:11:9:11:10 | enter M5 | NullCoalescing.cs:11:44:11:45 | access to parameter b1 | 2 | -| NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | NullCoalescing.cs:11:9:11:10 | exit M5 | 3 | -| NullCoalescing.cs:11:44:11:59 | [false] ... ?? ... | NullCoalescing.cs:11:44:11:59 | [false] ... ?? ... | 1 | -| NullCoalescing.cs:11:44:11:59 | [true] ... ?? ... | NullCoalescing.cs:11:44:11:59 | [true] ... ?? ... | 1 | -| NullCoalescing.cs:11:51:11:52 | access to parameter b2 | NullCoalescing.cs:11:51:11:52 | access to parameter b2 | 1 | -| NullCoalescing.cs:11:51:11:58 | [false] ... && ... | NullCoalescing.cs:11:51:11:58 | [false] ... && ... | 1 | -| NullCoalescing.cs:11:51:11:58 | [true] ... && ... | NullCoalescing.cs:11:51:11:58 | [true] ... && ... | 1 | -| NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:57:11:58 | access to parameter b3 | 1 | -| NullCoalescing.cs:11:64:11:64 | 0 | NullCoalescing.cs:11:64:11:64 | 0 | 1 | -| NullCoalescing.cs:11:68:11:68 | 1 | NullCoalescing.cs:11:68:11:68 | 1 | 1 | -| NullCoalescing.cs:13:10:13:11 | enter M6 | NullCoalescing.cs:15:17:15:26 | (...) ... | 5 | -| NullCoalescing.cs:15:31:15:31 | 0 | NullCoalescing.cs:16:17:16:18 | "" | 5 | -| NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:17:13:17:19 | (...) ... | 5 | -| NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:13:10:13:11 | exit M6 | 4 | -| PartialImplementationA.cs:1:15:1:21 | enter | PartialImplementationA.cs:1:15:1:21 | exit | 11 | -| PartialImplementationA.cs:3:12:3:18 | enter Partial | PartialImplementationA.cs:3:12:3:18 | exit Partial | 7 | -| PartialImplementationB.cs:4:12:4:18 | enter Partial | PartialImplementationB.cs:4:12:4:18 | exit Partial | 7 | -| Patterns.cs:3:7:3:14 | enter Patterns | Patterns.cs:3:7:3:14 | exit Patterns | 7 | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:8:18:8:23 | Int32 i1 | 8 | -| Patterns.cs:8:13:8:23 | [false] ... is ... | Patterns.cs:8:13:8:23 | [false] ... is ... | 1 | -| Patterns.cs:8:13:8:23 | [true] ... is ... | Patterns.cs:8:13:8:23 | [true] ... is ... | 1 | -| Patterns.cs:9:9:11:9 | {...} | Patterns.cs:10:13:10:42 | call to method WriteLine | 7 | -| Patterns.cs:12:14:18:9 | if (...) ... | Patterns.cs:12:23:12:31 | String s1 | 3 | -| Patterns.cs:12:18:12:31 | [false] ... is ... | Patterns.cs:12:18:12:31 | [false] ... is ... | 1 | -| Patterns.cs:12:18:12:31 | [true] ... is ... | Patterns.cs:12:18:12:31 | [true] ... is ... | 1 | -| Patterns.cs:13:9:15:9 | {...} | Patterns.cs:14:13:14:45 | call to method WriteLine | 7 | -| Patterns.cs:16:14:18:9 | if (...) ... | Patterns.cs:16:23:16:28 | Object v1 | 3 | -| Patterns.cs:16:18:16:28 | [false] ... is ... | Patterns.cs:16:18:16:28 | [false] ... is ... | 1 | -| Patterns.cs:16:18:16:28 | [true] ... is ... | Patterns.cs:16:18:16:28 | [true] ... is ... | 1 | -| Patterns.cs:17:9:18:9 | {...} | Patterns.cs:17:9:18:9 | {...} | 1 | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:22:18:22:22 | "xyz" | 4 | -| Patterns.cs:23:17:23:22 | break; | Patterns.cs:23:17:23:22 | break; | 1 | -| Patterns.cs:24:13:24:36 | case ...: | Patterns.cs:24:18:24:23 | Int32 i2 | 2 | -| Patterns.cs:24:30:24:31 | access to local variable i2 | Patterns.cs:24:30:24:35 | ... > ... | 3 | -| Patterns.cs:25:17:25:52 | ...; | Patterns.cs:26:17:26:22 | break; | 7 | +| MultiImplementationB.cs:15:5:17:5 | {...} | MultiImplementationB.cs:15:5:17:5 | After {...} | 3 | +| MultiImplementationB.cs:16:9:16:31 | Entry | MultiImplementationB.cs:16:9:16:31 | Exit | 6 | +| MultiImplementationB.cs:18:12:18:13 | Before call to method | MultiImplementationA.cs:20:12:20:13 | Exceptional Exit | 12 | +| MultiImplementationB.cs:19:19:19:22 | Before call to constructor C2 | MultiImplementationB.cs:19:27:19:29 | {...} | 5 | +| MultiImplementationB.cs:20:11:20:25 | {...} | MultiImplementationA.cs:22:6:22:7 | Exceptional Exit | 5 | +| MultiImplementationB.cs:21:50:21:59 | Before throw ... | MultiImplementationA.cs:23:28:23:35 | Exceptional Exit | 4 | +| MultiImplementationB.cs:25:7:25:8 | Before call to method | MultiImplementationB.cs:25:7:25:8 | {...} | 8 | +| MultiImplementationB.cs:30:15:30:16 | Before call to method | MultiImplementationB.cs:30:15:30:16 | {...} | 8 | +| MultiImplementationB.cs:32:17:32:17 | 0 | MultiImplementationA.cs:36:9:36:10 | Normal Exit | 2 | +| NullCoalescing.cs:1:7:1:20 | Entry | NullCoalescing.cs:1:7:1:20 | Exit | 11 | +| NullCoalescing.cs:3:9:3:10 | Entry | NullCoalescing.cs:3:23:3:23 | access to parameter i | 4 | +| NullCoalescing.cs:3:23:3:23 | After access to parameter i [non-null] | NullCoalescing.cs:3:23:3:23 | After access to parameter i [non-null] | 1 | +| NullCoalescing.cs:3:23:3:23 | After access to parameter i [null] | NullCoalescing.cs:3:28:3:28 | 0 | 2 | +| NullCoalescing.cs:3:23:3:28 | After ... ?? ... | NullCoalescing.cs:3:9:3:10 | Exit | 3 | +| NullCoalescing.cs:5:9:5:10 | Entry | NullCoalescing.cs:5:25:5:25 | access to parameter b | 5 | +| NullCoalescing.cs:5:24:5:43 | After ... ? ... : ... | NullCoalescing.cs:5:9:5:10 | Exit | 3 | +| NullCoalescing.cs:5:25:5:25 | After access to parameter b [non-null] | NullCoalescing.cs:5:25:5:25 | After access to parameter b [non-null] | 1 | +| NullCoalescing.cs:5:25:5:25 | After access to parameter b [null] | NullCoalescing.cs:5:30:5:34 | After false [false] | 3 | +| NullCoalescing.cs:5:25:5:34 | After ... ?? ... [false] | NullCoalescing.cs:5:43:5:43 | 1 | 2 | +| NullCoalescing.cs:5:25:5:34 | After ... ?? ... [true] | NullCoalescing.cs:5:39:5:39 | 0 | 2 | +| NullCoalescing.cs:7:12:7:13 | Entry | NullCoalescing.cs:7:40:7:41 | access to parameter s1 | 5 | +| NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [non-null] | NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [non-null] | 1 | +| NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [null] | NullCoalescing.cs:7:46:7:47 | access to parameter s2 | 3 | +| NullCoalescing.cs:7:40:7:53 | After ... ?? ... | NullCoalescing.cs:7:12:7:13 | Exit | 3 | +| NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [non-null] | NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [non-null] | 1 | +| NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [null] | NullCoalescing.cs:7:52:7:53 | "" | 2 | +| NullCoalescing.cs:7:46:7:53 | After ... ?? ... | NullCoalescing.cs:7:46:7:53 | After ... ?? ... | 1 | +| NullCoalescing.cs:9:12:9:13 | Entry | NullCoalescing.cs:9:37:9:37 | access to parameter b | 6 | +| NullCoalescing.cs:9:36:9:58 | After ... ?? ... | NullCoalescing.cs:9:12:9:13 | Exit | 3 | +| NullCoalescing.cs:9:37:9:37 | After access to parameter b [false] | NullCoalescing.cs:9:45:9:45 | access to parameter s | 2 | +| NullCoalescing.cs:9:37:9:37 | After access to parameter b [true] | NullCoalescing.cs:9:41:9:41 | access to parameter s | 2 | +| NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [non-null] | NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [non-null] | 1 | +| NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [null] | NullCoalescing.cs:9:51:9:52 | "" | 3 | +| NullCoalescing.cs:9:41:9:41 | After access to parameter s [non-null] | NullCoalescing.cs:9:41:9:41 | After access to parameter s [non-null] | 1 | +| NullCoalescing.cs:9:41:9:41 | After access to parameter s [null] | NullCoalescing.cs:9:41:9:41 | After access to parameter s [null] | 1 | +| NullCoalescing.cs:9:45:9:45 | After access to parameter s [non-null] | NullCoalescing.cs:9:45:9:45 | After access to parameter s [non-null] | 1 | +| NullCoalescing.cs:9:45:9:45 | After access to parameter s [null] | NullCoalescing.cs:9:45:9:45 | After access to parameter s [null] | 1 | +| NullCoalescing.cs:9:51:9:52 | After "" [non-null] | NullCoalescing.cs:9:51:9:52 | After "" [non-null] | 1 | +| NullCoalescing.cs:9:51:9:52 | After "" [null] | NullCoalescing.cs:9:57:9:58 | "" | 2 | +| NullCoalescing.cs:9:51:9:58 | After ... ?? ... | NullCoalescing.cs:9:51:9:58 | After ... ?? ... | 1 | +| NullCoalescing.cs:11:9:11:10 | Entry | NullCoalescing.cs:11:44:11:45 | access to parameter b1 | 7 | +| NullCoalescing.cs:11:43:11:68 | After ... ? ... : ... | NullCoalescing.cs:11:9:11:10 | Exit | 3 | +| NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [non-null] | NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [non-null] | 1 | +| NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [null] | NullCoalescing.cs:11:51:11:52 | access to parameter b2 | 3 | +| NullCoalescing.cs:11:44:11:59 | After ... ?? ... [false] | NullCoalescing.cs:11:68:11:68 | 1 | 2 | +| NullCoalescing.cs:11:44:11:59 | After ... ?? ... [true] | NullCoalescing.cs:11:64:11:64 | 0 | 2 | +| NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [false] | NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [false] | 1 | +| NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [true] | NullCoalescing.cs:11:57:11:58 | access to parameter b3 | 2 | +| NullCoalescing.cs:11:51:11:58 | After ... && ... [false] | NullCoalescing.cs:11:51:11:58 | After ... && ... [false] | 1 | +| NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [false] | NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [false] | 1 | +| NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [true] | NullCoalescing.cs:11:51:11:58 | After ... && ... [true] | 2 | +| NullCoalescing.cs:13:10:13:11 | Entry | NullCoalescing.cs:15:17:15:26 | (...) ... | 10 | +| NullCoalescing.cs:15:17:15:26 | After (...) ... [non-null] | NullCoalescing.cs:15:17:15:26 | After (...) ... [non-null] | 1 | +| NullCoalescing.cs:15:17:15:26 | After (...) ... [null] | NullCoalescing.cs:15:31:15:31 | 0 | 2 | +| NullCoalescing.cs:15:17:15:31 | After ... ?? ... | NullCoalescing.cs:16:17:16:18 | "" | 9 | +| NullCoalescing.cs:16:17:16:18 | After "" [non-null] | NullCoalescing.cs:16:17:16:18 | After "" [non-null] | 1 | +| NullCoalescing.cs:16:17:16:18 | After "" [null] | NullCoalescing.cs:16:23:16:25 | "a" | 2 | +| NullCoalescing.cs:16:17:16:25 | After ... ?? ... | NullCoalescing.cs:17:13:17:19 | (...) ... | 11 | +| NullCoalescing.cs:17:13:17:19 | After (...) ... [non-null] | NullCoalescing.cs:17:13:17:19 | After (...) ... [non-null] | 1 | +| NullCoalescing.cs:17:13:17:19 | After (...) ... [null] | NullCoalescing.cs:17:24:17:24 | 1 | 2 | +| NullCoalescing.cs:17:13:17:24 | After ... ?? ... | NullCoalescing.cs:13:10:13:11 | Exit | 7 | +| PartialImplementationA.cs:1:15:1:21 | Entry | PartialImplementationA.cs:1:15:1:21 | Exit | 19 | +| PartialImplementationA.cs:3:12:3:18 | Entry | PartialImplementationA.cs:3:12:3:18 | Exit | 12 | +| PartialImplementationB.cs:4:12:4:18 | Entry | PartialImplementationB.cs:4:12:4:18 | Exit | 11 | +| Patterns.cs:3:7:3:14 | Entry | Patterns.cs:3:7:3:14 | Exit | 11 | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:8:13:8:23 | ... is ... | 13 | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:22:18:22:22 | "xyz" | 5 | +| Patterns.cs:8:13:8:23 | After ... is ... [false] | Patterns.cs:12:18:12:31 | ... is ... | 5 | +| Patterns.cs:8:13:8:23 | [MatchTrue] ... is ... | Patterns.cs:9:9:11:9 | After {...} | 18 | +| Patterns.cs:12:14:18:9 | After if (...) ... | Patterns.cs:12:14:18:9 | After if (...) ... | 1 | +| Patterns.cs:12:18:12:31 | After ... is ... [false] | Patterns.cs:16:18:16:28 | ... is ... | 5 | +| Patterns.cs:12:18:12:31 | [MatchTrue] ... is ... | Patterns.cs:13:9:15:9 | After {...} | 18 | +| Patterns.cs:16:14:18:9 | After if (...) ... | Patterns.cs:16:14:18:9 | After if (...) ... | 1 | +| Patterns.cs:16:18:16:28 | After ... is ... [false] | Patterns.cs:16:18:16:28 | After ... is ... [false] | 1 | +| Patterns.cs:16:18:16:28 | [MatchTrue] ... is ... | Patterns.cs:17:9:18:9 | {...} | 4 | +| Patterns.cs:20:9:38:9 | After switch (...) {...} | Patterns.cs:5:10:5:11 | Exit | 7 | +| Patterns.cs:22:18:22:22 | After "xyz" [match] | Patterns.cs:23:17:23:22 | break; | 4 | +| Patterns.cs:22:18:22:22 | After "xyz" [no-match] | Patterns.cs:24:18:24:23 | Int32 i2 | 4 | +| Patterns.cs:24:18:24:23 | After Int32 i2 [match] | Patterns.cs:24:30:24:35 | ... > ... | 6 | +| Patterns.cs:24:18:24:23 | After Int32 i2 [no-match] | Patterns.cs:24:13:24:36 | After case ...: [no-match] | 2 | +| Patterns.cs:24:30:24:35 | After ... > ... [false] | Patterns.cs:24:30:24:35 | After ... > ... [false] | 1 | +| Patterns.cs:24:30:24:35 | After ... > ... [true] | Patterns.cs:26:17:26:22 | break; | 16 | | Patterns.cs:27:13:27:24 | case ...: | Patterns.cs:27:18:27:23 | Int32 i3 | 2 | -| Patterns.cs:28:17:28:47 | ...; | Patterns.cs:29:17:29:22 | break; | 7 | -| Patterns.cs:30:13:30:27 | case ...: | Patterns.cs:30:18:30:26 | String s2 | 2 | -| Patterns.cs:31:17:31:50 | ...; | Patterns.cs:32:17:32:22 | break; | 7 | -| Patterns.cs:33:13:33:24 | case ...: | Patterns.cs:33:18:33:23 | Object v2 | 2 | -| Patterns.cs:34:17:34:22 | break; | Patterns.cs:34:17:34:22 | break; | 1 | -| Patterns.cs:35:13:35:20 | default: | Patterns.cs:37:17:37:22 | break; | 5 | -| Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:5:10:5:11 | exit M1 | 4 | -| Patterns.cs:47:24:47:25 | enter M2 | Patterns.cs:47:24:47:25 | exit M2 | 7 | -| Patterns.cs:50:24:50:25 | enter M3 | Patterns.cs:51:18:51:21 | null | 3 | -| Patterns.cs:51:9:51:21 | [false] ... is ... | Patterns.cs:51:9:51:21 | [false] ... is ... | 1 | -| Patterns.cs:51:9:51:21 | [true] ... is ... | Patterns.cs:51:9:51:21 | [true] ... is ... | 1 | -| Patterns.cs:51:9:51:39 | ... ? ... : ... | Patterns.cs:50:24:50:25 | exit M3 | 3 | -| Patterns.cs:51:14:51:21 | [match] not ... | Patterns.cs:51:14:51:21 | [match] not ... | 1 | -| Patterns.cs:51:14:51:21 | [no-match] not ... | Patterns.cs:51:14:51:21 | [no-match] not ... | 1 | -| Patterns.cs:51:25:51:25 | access to parameter c | Patterns.cs:51:25:51:30 | ... is ... | 3 | -| Patterns.cs:51:34:51:34 | access to parameter c | Patterns.cs:51:34:51:39 | ... is ... | 3 | -| Patterns.cs:53:24:53:25 | enter M4 | Patterns.cs:54:18:54:37 | Patterns u | 3 | -| Patterns.cs:54:18:54:37 | { ... } | Patterns.cs:53:24:53:25 | exit M4 | 5 | -| Patterns.cs:54:27:54:35 | [match] { ... } | Patterns.cs:54:27:54:35 | [match] { ... } | 1 | -| Patterns.cs:54:27:54:35 | [no-match] { ... } | Patterns.cs:54:27:54:35 | [no-match] { ... } | 1 | -| Patterns.cs:54:33:54:33 | 1 | Patterns.cs:54:33:54:33 | 1 | 1 | -| Patterns.cs:56:26:56:27 | enter M5 | Patterns.cs:60:17:60:17 | 1 | 4 | -| Patterns.cs:58:16:62:9 | ... switch { ... } | Patterns.cs:56:26:56:27 | exit M5 | 4 | -| Patterns.cs:60:13:60:17 | [match] not ... | Patterns.cs:60:13:60:17 | [match] not ... | 1 | -| Patterns.cs:60:13:60:17 | [no-match] not ... | Patterns.cs:60:13:60:17 | [no-match] not ... | 1 | -| Patterns.cs:60:22:60:28 | "not 1" | Patterns.cs:60:13:60:28 | ... => ... | 2 | -| Patterns.cs:61:13:61:13 | _ | Patterns.cs:61:13:61:13 | _ | 1 | -| Patterns.cs:61:18:61:24 | "other" | Patterns.cs:61:13:61:24 | ... => ... | 2 | -| Patterns.cs:65:26:65:27 | enter M6 | Patterns.cs:69:17:69:17 | 2 | 4 | -| Patterns.cs:69:13:69:17 | [no-match] not ... | Patterns.cs:69:13:69:17 | [no-match] not ... | 1 | -| Patterns.cs:70:13:70:13 | 2 | Patterns.cs:70:13:70:13 | 2 | 1 | -| Patterns.cs:70:18:70:27 | "possible" | Patterns.cs:65:26:65:27 | exit M6 | 6 | -| Patterns.cs:74:26:74:27 | enter M7 | Patterns.cs:78:13:78:15 | > ... | 5 | -| Patterns.cs:76:16:82:9 | ... switch { ... } | Patterns.cs:74:26:74:27 | exit M7 | 4 | -| Patterns.cs:78:20:78:24 | "> 1" | Patterns.cs:78:13:78:24 | ... => ... | 2 | -| Patterns.cs:79:15:79:15 | 0 | Patterns.cs:79:13:79:15 | < ... | 2 | -| Patterns.cs:79:20:79:24 | "< 0" | Patterns.cs:79:13:79:24 | ... => ... | 2 | -| Patterns.cs:80:13:80:13 | 1 | Patterns.cs:80:13:80:13 | 1 | 1 | -| Patterns.cs:80:18:80:20 | "1" | Patterns.cs:80:13:80:20 | ... => ... | 2 | -| Patterns.cs:81:13:81:13 | _ | Patterns.cs:81:13:81:13 | _ | 1 | -| Patterns.cs:81:18:81:20 | "0" | Patterns.cs:81:13:81:20 | ... => ... | 2 | -| Patterns.cs:85:26:85:27 | enter M8 | Patterns.cs:85:44:85:44 | 1 | 3 | -| Patterns.cs:85:39:85:53 | [false] ... is ... | Patterns.cs:85:39:85:53 | [false] ... is ... | 1 | -| Patterns.cs:85:39:85:53 | [true] ... is ... | Patterns.cs:85:39:85:53 | [true] ... is ... | 1 | -| Patterns.cs:85:39:85:69 | ... ? ... : ... | Patterns.cs:85:26:85:27 | exit M8 | 3 | -| Patterns.cs:85:44:85:53 | [match] ... or ... | Patterns.cs:85:44:85:53 | [match] ... or ... | 1 | -| Patterns.cs:85:44:85:53 | [no-match] ... or ... | Patterns.cs:85:44:85:53 | [no-match] ... or ... | 1 | -| Patterns.cs:85:49:85:53 | [match] not ... | Patterns.cs:85:49:85:53 | [match] not ... | 1 | -| Patterns.cs:85:49:85:53 | [no-match] not ... | Patterns.cs:85:49:85:53 | [no-match] not ... | 1 | -| Patterns.cs:85:53:85:53 | 2 | Patterns.cs:85:53:85:53 | 2 | 1 | -| Patterns.cs:85:57:85:63 | "not 2" | Patterns.cs:85:57:85:63 | "not 2" | 1 | -| Patterns.cs:85:67:85:69 | "2" | Patterns.cs:85:67:85:69 | "2" | 1 | -| Patterns.cs:87:26:87:27 | enter M9 | Patterns.cs:87:44:87:44 | 1 | 3 | -| Patterns.cs:87:39:87:54 | [false] ... is ... | Patterns.cs:87:39:87:54 | [false] ... is ... | 1 | -| Patterns.cs:87:39:87:54 | [true] ... is ... | Patterns.cs:87:39:87:54 | [true] ... is ... | 1 | -| Patterns.cs:87:39:87:70 | ... ? ... : ... | Patterns.cs:87:26:87:27 | exit M9 | 3 | -| Patterns.cs:87:44:87:54 | [match] ... and ... | Patterns.cs:87:44:87:54 | [match] ... and ... | 1 | -| Patterns.cs:87:44:87:54 | [no-match] ... and ... | Patterns.cs:87:44:87:54 | [no-match] ... and ... | 1 | -| Patterns.cs:87:50:87:54 | [match] not ... | Patterns.cs:87:50:87:54 | [match] not ... | 1 | -| Patterns.cs:87:50:87:54 | [no-match] not ... | Patterns.cs:87:50:87:54 | [no-match] not ... | 1 | -| Patterns.cs:87:54:87:54 | 2 | Patterns.cs:87:54:87:54 | 2 | 1 | -| Patterns.cs:87:58:87:60 | "1" | Patterns.cs:87:58:87:60 | "1" | 1 | -| Patterns.cs:87:64:87:70 | "not 1" | Patterns.cs:87:64:87:70 | "not 1" | 1 | -| Patterns.cs:93:17:93:19 | enter M10 | Patterns.cs:95:29:95:31 | access to constant A | 5 | -| Patterns.cs:93:17:93:19 | exit M10 (normal) | Patterns.cs:93:17:93:19 | exit M10 | 2 | -| Patterns.cs:95:13:95:40 | [false] ... is ... | Patterns.cs:95:13:95:40 | [false] ... is ... | 1 | -| Patterns.cs:95:13:95:40 | [true] ... is ... | Patterns.cs:95:13:95:40 | [true] ... is ... | 1 | -| Patterns.cs:95:21:95:40 | [match] { ... } | Patterns.cs:95:21:95:40 | [match] { ... } | 1 | -| Patterns.cs:95:21:95:40 | [match] { ... } | Patterns.cs:95:21:95:40 | [match] { ... } | 1 | -| Patterns.cs:95:21:95:40 | [no-match] { ... } | Patterns.cs:95:21:95:40 | [no-match] { ... } | 1 | -| Patterns.cs:95:21:95:40 | [no-match] { ... } | Patterns.cs:95:21:95:40 | [no-match] { ... } | 1 | -| Patterns.cs:95:29:95:38 | [match] ... or ... | Patterns.cs:95:29:95:38 | [match] ... or ... | 1 | -| Patterns.cs:95:29:95:38 | [no-match] ... or ... | Patterns.cs:95:29:95:38 | [no-match] ... or ... | 1 | -| Patterns.cs:95:36:95:38 | access to constant B | Patterns.cs:95:36:95:38 | access to constant B | 1 | -| Patterns.cs:96:9:98:9 | {...} | Patterns.cs:97:13:97:38 | call to method WriteLine | 4 | -| PostDominance.cs:3:7:3:19 | enter PostDominance | PostDominance.cs:3:7:3:19 | exit PostDominance | 7 | -| PostDominance.cs:5:10:5:11 | enter M1 | PostDominance.cs:5:10:5:11 | exit M1 | 7 | -| PostDominance.cs:10:10:10:11 | enter M2 | PostDominance.cs:12:18:12:21 | null | 5 | -| PostDominance.cs:10:10:10:11 | exit M2 (normal) | PostDominance.cs:10:10:10:11 | exit M2 | 2 | -| PostDominance.cs:12:13:12:21 | [false] ... is ... | PostDominance.cs:12:13:12:21 | [false] ... is ... | 1 | -| PostDominance.cs:12:13:12:21 | [true] ... is ... | PostDominance.cs:12:13:12:21 | [true] ... is ... | 1 | -| PostDominance.cs:13:13:13:19 | return ...; | PostDominance.cs:13:13:13:19 | return ...; | 1 | -| PostDominance.cs:14:9:14:29 | ...; | PostDominance.cs:14:9:14:28 | call to method WriteLine | 3 | -| PostDominance.cs:17:10:17:11 | enter M3 | PostDominance.cs:19:18:19:21 | null | 5 | -| PostDominance.cs:17:10:17:11 | exit M3 | PostDominance.cs:17:10:17:11 | exit M3 | 1 | -| PostDominance.cs:19:13:19:21 | [false] ... is ... | PostDominance.cs:19:13:19:21 | [false] ... is ... | 1 | -| PostDominance.cs:19:13:19:21 | [true] ... is ... | PostDominance.cs:19:13:19:21 | [true] ... is ... | 1 | -| PostDominance.cs:20:45:20:53 | nameof(...) | PostDominance.cs:17:10:17:11 | exit M3 (abnormal) | 4 | -| PostDominance.cs:21:9:21:29 | ...; | PostDominance.cs:17:10:17:11 | exit M3 (normal) | 4 | -| Qualifiers.cs:1:7:1:16 | enter Qualifiers | Qualifiers.cs:1:7:1:16 | exit Qualifiers | 7 | -| Qualifiers.cs:7:16:7:21 | enter Method | Qualifiers.cs:7:16:7:21 | exit Method | 4 | -| Qualifiers.cs:8:23:8:34 | enter StaticMethod | Qualifiers.cs:8:23:8:34 | exit StaticMethod | 4 | -| Qualifiers.cs:10:10:10:10 | enter M | Qualifiers.cs:10:10:10:10 | exit M | 58 | -| Switch.cs:3:7:3:12 | enter Switch | Switch.cs:3:7:3:12 | exit Switch | 7 | -| Switch.cs:5:10:5:11 | enter M1 | Switch.cs:5:10:5:11 | exit M1 | 6 | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:14:18:14:20 | "a" | 6 | -| Switch.cs:10:10:10:11 | exit M2 | Switch.cs:10:10:10:11 | exit M2 | 1 | -| Switch.cs:10:10:10:11 | exit M2 (abnormal) | Switch.cs:10:10:10:11 | exit M2 (abnormal) | 1 | -| Switch.cs:10:10:10:11 | exit M2 (normal) | Switch.cs:10:10:10:11 | exit M2 (normal) | 1 | -| Switch.cs:15:17:15:23 | return ...; | Switch.cs:15:17:15:23 | return ...; | 1 | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:16:18:16:18 | 0 | 2 | -| Switch.cs:17:23:17:37 | object creation of type Exception | Switch.cs:17:17:17:38 | throw ...; | 2 | -| Switch.cs:18:13:18:22 | case ...: | Switch.cs:18:18:18:21 | null | 2 | -| Switch.cs:19:17:19:29 | goto default; | Switch.cs:19:17:19:29 | goto default; | 1 | -| Switch.cs:20:13:20:23 | case ...: | Switch.cs:20:18:20:22 | Int32 i | 2 | -| Switch.cs:21:17:22:27 | if (...) ... | Switch.cs:21:21:21:29 | ... == ... | 4 | -| Switch.cs:22:21:22:27 | return ...; | Switch.cs:22:21:22:27 | return ...; | 1 | -| Switch.cs:23:27:23:27 | 0 | Switch.cs:23:17:23:28 | goto case ...; | 2 | -| Switch.cs:24:13:24:56 | case ...: | Switch.cs:24:18:24:25 | String s | 2 | -| Switch.cs:24:32:24:32 | access to local variable s | Switch.cs:24:32:24:43 | ... > ... | 4 | -| Switch.cs:24:32:24:55 | [false] ... && ... | Switch.cs:24:32:24:55 | [false] ... && ... | 1 | -| Switch.cs:24:32:24:55 | [true] ... && ... | Switch.cs:24:32:24:55 | [true] ... && ... | 1 | -| Switch.cs:24:48:24:48 | access to local variable s | Switch.cs:24:48:24:55 | ... != ... | 3 | -| Switch.cs:25:17:25:37 | ...; | Switch.cs:26:17:26:23 | return ...; | 4 | +| Patterns.cs:27:18:27:23 | After Int32 i3 [match] | Patterns.cs:29:17:29:22 | break; | 17 | +| Patterns.cs:27:18:27:23 | After Int32 i3 [no-match] | Patterns.cs:30:18:30:26 | String s2 | 4 | +| Patterns.cs:30:18:30:26 | After String s2 [match] | Patterns.cs:32:17:32:22 | break; | 17 | +| Patterns.cs:30:18:30:26 | After String s2 [no-match] | Patterns.cs:33:18:33:23 | Object v2 | 4 | +| Patterns.cs:33:18:33:23 | After Object v2 [match] | Patterns.cs:34:17:34:22 | break; | 4 | +| Patterns.cs:33:18:33:23 | After Object v2 [no-match] | Patterns.cs:37:17:37:22 | break; | 12 | +| Patterns.cs:47:24:47:25 | Entry | Patterns.cs:48:9:48:20 | ... is ... | 5 | +| Patterns.cs:48:9:48:20 | After ... is ... | Patterns.cs:47:24:47:25 | Exit | 3 | +| Patterns.cs:48:9:48:20 | [MatchTrue] ... is ... | Patterns.cs:48:14:48:20 | After not ... | 5 | +| Patterns.cs:50:24:50:25 | Entry | Patterns.cs:51:9:51:21 | ... is ... | 6 | +| Patterns.cs:51:9:51:21 | After ... is ... [false] | Patterns.cs:51:34:51:39 | ... is ... | 4 | +| Patterns.cs:51:9:51:21 | [MatchTrue] ... is ... | Patterns.cs:51:25:51:30 | ... is ... | 9 | +| Patterns.cs:51:9:51:39 | After ... ? ... : ... | Patterns.cs:50:24:50:25 | Exit | 3 | +| Patterns.cs:51:25:51:30 | After ... is ... | Patterns.cs:51:25:51:30 | After ... is ... | 1 | +| Patterns.cs:51:25:51:30 | [MatchTrue] ... is ... | Patterns.cs:51:30:51:30 | 1 | 2 | +| Patterns.cs:51:34:51:39 | After ... is ... | Patterns.cs:51:34:51:39 | After ... is ... | 1 | +| Patterns.cs:51:34:51:39 | [MatchTrue] ... is ... | Patterns.cs:51:39:51:39 | 2 | 2 | +| Patterns.cs:53:24:53:25 | Entry | Patterns.cs:54:9:54:37 | ... is ... | 5 | +| Patterns.cs:54:9:54:37 | After ... is ... | Patterns.cs:53:24:53:25 | Exit | 3 | +| Patterns.cs:54:9:54:37 | [MatchTrue] ... is ... | Patterns.cs:54:14:54:37 | After not ... | 13 | +| Patterns.cs:56:26:56:27 | Entry | Patterns.cs:60:13:60:17 | not ... | 10 | +| Patterns.cs:58:16:62:9 | After ... switch { ... } | Patterns.cs:56:26:56:27 | Exit | 4 | +| Patterns.cs:60:13:60:17 | After not ... [match] | Patterns.cs:60:22:60:28 | "not 1" | 3 | +| Patterns.cs:60:13:60:17 | After not ... [no-match] | Patterns.cs:61:18:61:24 | "other" | 7 | +| Patterns.cs:65:26:65:27 | Entry | Patterns.cs:69:13:69:17 | not ... | 9 | +| Patterns.cs:67:16:71:9 | After ... switch { ... } | Patterns.cs:65:26:65:27 | Exit | 4 | +| Patterns.cs:69:13:69:17 | After not ... [match] | Patterns.cs:69:22:69:33 | "impossible" | 3 | +| Patterns.cs:69:13:69:17 | After not ... [no-match] | Patterns.cs:70:13:70:13 | 2 | 4 | +| Patterns.cs:70:13:70:13 | After 2 [match] | Patterns.cs:70:18:70:27 | "possible" | 3 | +| Patterns.cs:70:13:70:13 | After 2 [no-match] | Patterns.cs:70:13:70:27 | After ... => ... [no-match] | 2 | +| Patterns.cs:74:26:74:27 | Entry | Patterns.cs:78:13:78:15 | > ... | 10 | +| Patterns.cs:76:16:82:9 | After ... switch { ... } | Patterns.cs:74:26:74:27 | Exit | 4 | +| Patterns.cs:78:13:78:15 | After > ... [match] | Patterns.cs:78:20:78:24 | "> 1" | 3 | +| Patterns.cs:78:13:78:15 | After > ... [no-match] | Patterns.cs:79:13:79:15 | < ... | 6 | +| Patterns.cs:79:13:79:15 | After < ... [match] | Patterns.cs:79:20:79:24 | "< 0" | 3 | +| Patterns.cs:79:13:79:15 | After < ... [no-match] | Patterns.cs:80:13:80:13 | 1 | 4 | +| Patterns.cs:80:13:80:13 | After 1 [match] | Patterns.cs:80:18:80:20 | "1" | 3 | +| Patterns.cs:80:13:80:13 | After 1 [no-match] | Patterns.cs:81:18:81:20 | "0" | 7 | +| Patterns.cs:85:26:85:27 | Entry | Patterns.cs:85:39:85:53 | ... is ... | 6 | +| Patterns.cs:85:39:85:53 | After ... is ... [false] | Patterns.cs:85:67:85:69 | "2" | 2 | +| Patterns.cs:85:39:85:53 | [MatchTrue] ... is ... | Patterns.cs:85:57:85:63 | "not 2" | 11 | +| Patterns.cs:85:39:85:69 | After ... ? ... : ... | Patterns.cs:85:26:85:27 | Exit | 3 | +| Patterns.cs:87:26:87:27 | Entry | Patterns.cs:87:39:87:54 | ... is ... | 6 | +| Patterns.cs:87:39:87:54 | After ... is ... [false] | Patterns.cs:87:64:87:70 | "not 1" | 2 | +| Patterns.cs:87:39:87:54 | [MatchTrue] ... is ... | Patterns.cs:87:58:87:60 | "1" | 11 | +| Patterns.cs:87:39:87:70 | After ... ? ... : ... | Patterns.cs:87:26:87:27 | Exit | 3 | +| Patterns.cs:93:17:93:19 | Entry | Patterns.cs:95:13:95:40 | ... is ... | 6 | +| Patterns.cs:95:9:98:9 | After if (...) ... | Patterns.cs:93:17:93:19 | Exit | 4 | +| Patterns.cs:95:13:95:40 | After ... is ... [false] | Patterns.cs:95:13:95:40 | After ... is ... [false] | 1 | +| Patterns.cs:95:13:95:40 | [MatchTrue] ... is ... | Patterns.cs:96:9:98:9 | After {...} | 21 | +| PostDominance.cs:3:7:3:19 | Entry | PostDominance.cs:3:7:3:19 | Exit | 11 | +| PostDominance.cs:5:10:5:11 | Entry | PostDominance.cs:5:10:5:11 | Exit | 12 | +| PostDominance.cs:10:10:10:11 | Entry | PostDominance.cs:12:13:12:21 | ... is ... | 7 | +| PostDominance.cs:10:10:10:11 | Normal Exit | PostDominance.cs:10:10:10:11 | Exit | 2 | +| PostDominance.cs:12:13:12:21 | After ... is ... [false] | PostDominance.cs:11:5:15:5 | After {...} | 9 | +| PostDominance.cs:12:13:12:21 | [MatchTrue] ... is ... | PostDominance.cs:13:13:13:19 | return ...; | 5 | +| PostDominance.cs:17:10:17:11 | Entry | PostDominance.cs:19:13:19:21 | ... is ... | 7 | +| PostDominance.cs:17:10:17:11 | Exit | PostDominance.cs:17:10:17:11 | Exit | 1 | +| PostDominance.cs:19:13:19:21 | After ... is ... [false] | PostDominance.cs:17:10:17:11 | Normal Exit | 10 | +| PostDominance.cs:19:13:19:21 | [MatchTrue] ... is ... | PostDominance.cs:17:10:17:11 | Exceptional Exit | 10 | +| Qualifiers.cs:1:7:1:16 | Entry | Qualifiers.cs:1:7:1:16 | Exit | 11 | +| Qualifiers.cs:7:16:7:21 | Entry | Qualifiers.cs:7:16:7:21 | Exit | 4 | +| Qualifiers.cs:8:23:8:34 | Entry | Qualifiers.cs:8:23:8:34 | Exit | 4 | +| Qualifiers.cs:10:10:10:10 | Entry | Qualifiers.cs:10:10:10:10 | Exit | 149 | +| Switch.cs:3:7:3:12 | Entry | Switch.cs:3:7:3:12 | Exit | 11 | +| Switch.cs:5:10:5:11 | Entry | Switch.cs:5:10:5:11 | Exit | 9 | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:14:18:14:20 | "a" | 7 | +| Switch.cs:10:10:10:11 | Exceptional Exit | Switch.cs:10:10:10:11 | Exceptional Exit | 1 | +| Switch.cs:10:10:10:11 | Exit | Switch.cs:10:10:10:11 | Exit | 1 | +| Switch.cs:10:10:10:11 | Normal Exit | Switch.cs:10:10:10:11 | Normal Exit | 1 | +| Switch.cs:14:18:14:20 | After "a" [match] | Switch.cs:15:17:15:23 | return ...; | 4 | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:16:18:16:18 | 0 | 4 | +| Switch.cs:16:13:16:19 | After case ...: [match] | Switch.cs:17:17:17:38 | throw ...; | 6 | +| Switch.cs:16:18:16:18 | After 0 [match] | Switch.cs:16:18:16:18 | After 0 [match] | 1 | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:18:18:18:21 | null | 4 | +| Switch.cs:18:18:18:21 | After null [match] | Switch.cs:19:17:19:29 | goto default; | 4 | +| Switch.cs:18:18:18:21 | After null [no-match] | Switch.cs:20:18:20:22 | Int32 i | 4 | +| Switch.cs:20:18:20:22 | After Int32 i [match] | Switch.cs:21:21:21:29 | ... == ... | 7 | +| Switch.cs:20:18:20:22 | After Int32 i [no-match] | Switch.cs:24:18:24:25 | String s | 4 | +| Switch.cs:21:21:21:29 | After ... == ... [false] | Switch.cs:23:17:23:28 | goto case ...; | 5 | +| Switch.cs:21:21:21:29 | After ... == ... [true] | Switch.cs:22:21:22:27 | return ...; | 3 | +| Switch.cs:24:18:24:25 | After String s [match] | Switch.cs:24:32:24:43 | ... > ... | 10 | +| Switch.cs:24:18:24:25 | After String s [no-match] | Switch.cs:24:13:24:56 | After case ...: [no-match] | 2 | +| Switch.cs:24:32:24:43 | After ... > ... [false] | Switch.cs:24:32:24:43 | After ... > ... [false] | 1 | +| Switch.cs:24:32:24:43 | After ... > ... [true] | Switch.cs:24:48:24:55 | ... != ... | 5 | +| Switch.cs:24:32:24:55 | After ... && ... [false] | Switch.cs:24:32:24:55 | After ... && ... [false] | 1 | +| Switch.cs:24:48:24:55 | After ... != ... [false] | Switch.cs:24:48:24:55 | After ... != ... [false] | 1 | +| Switch.cs:24:48:24:55 | After ... != ... [true] | Switch.cs:26:17:26:23 | return ...; | 10 | | Switch.cs:27:13:27:39 | case ...: | Switch.cs:27:18:27:25 | Double d | 2 | -| Switch.cs:27:32:27:38 | call to method Throw | Switch.cs:27:32:27:38 | call to method Throw | 1 | -| Switch.cs:30:13:30:20 | default: | Switch.cs:29:17:29:23 | return ...; | 4 | -| Switch.cs:35:10:35:11 | enter M3 | Switch.cs:35:10:35:11 | exit M3 | 6 | -| Switch.cs:44:10:44:11 | enter M4 | Switch.cs:48:18:48:20 | access to type Int32 | 6 | -| Switch.cs:44:10:44:11 | exit M4 (normal) | Switch.cs:44:10:44:11 | exit M4 | 2 | -| Switch.cs:49:17:49:22 | break; | Switch.cs:49:17:49:22 | break; | 1 | -| Switch.cs:50:13:50:39 | case ...: | Switch.cs:50:18:50:21 | access to type Boolean | 2 | -| Switch.cs:50:30:50:30 | access to parameter o | Switch.cs:50:30:50:38 | ... != ... | 3 | -| Switch.cs:51:17:51:22 | break; | Switch.cs:51:17:51:22 | break; | 1 | -| Switch.cs:55:10:55:11 | enter M5 | Switch.cs:59:18:59:18 | 2 | 8 | -| Switch.cs:61:13:61:19 | case ...: | Switch.cs:61:18:61:18 | 3 | 2 | -| Switch.cs:62:17:62:22 | break; | Switch.cs:55:10:55:11 | exit M5 | 3 | -| Switch.cs:66:10:66:11 | enter M6 | Switch.cs:70:18:70:20 | access to type Int32 | 7 | -| Switch.cs:66:10:66:11 | exit M6 (normal) | Switch.cs:66:10:66:11 | exit M6 | 2 | -| Switch.cs:72:13:72:20 | case ...: | Switch.cs:72:18:72:19 | "" | 2 | -| Switch.cs:73:17:73:22 | break; | Switch.cs:73:17:73:22 | break; | 1 | -| Switch.cs:77:10:77:11 | enter M7 | Switch.cs:81:18:81:18 | 1 | 6 | -| Switch.cs:77:10:77:11 | exit M7 (normal) | Switch.cs:77:10:77:11 | exit M7 | 2 | -| Switch.cs:82:24:82:27 | true | Switch.cs:82:17:82:28 | return ...; | 2 | -| Switch.cs:83:13:83:19 | case ...: | Switch.cs:83:18:83:18 | 2 | 2 | -| Switch.cs:84:17:85:26 | if (...) ... | Switch.cs:84:21:84:25 | ... > ... | 4 | -| Switch.cs:85:21:85:26 | break; | Switch.cs:85:21:85:26 | break; | 1 | -| Switch.cs:86:24:86:27 | true | Switch.cs:86:17:86:28 | return ...; | 2 | -| Switch.cs:88:16:88:20 | false | Switch.cs:88:9:88:21 | return ...; | 2 | -| Switch.cs:91:10:91:11 | enter M8 | Switch.cs:95:18:95:20 | access to type Int32 | 6 | -| Switch.cs:91:10:91:11 | exit M8 (normal) | Switch.cs:91:10:91:11 | exit M8 | 2 | -| Switch.cs:96:24:96:27 | true | Switch.cs:96:17:96:28 | return ...; | 2 | -| Switch.cs:98:16:98:20 | false | Switch.cs:98:9:98:21 | return ...; | 2 | -| Switch.cs:101:9:101:10 | enter M9 | Switch.cs:103:17:103:17 | access to parameter s | 4 | -| Switch.cs:101:9:101:10 | exit M9 (normal) | Switch.cs:101:9:101:10 | exit M9 | 2 | -| Switch.cs:103:17:103:25 | access to property Length | Switch.cs:103:17:103:25 | access to property Length | 1 | -| Switch.cs:105:13:105:19 | case ...: | Switch.cs:105:18:105:18 | 0 | 2 | -| Switch.cs:105:28:105:28 | 0 | Switch.cs:105:21:105:29 | return ...; | 2 | -| Switch.cs:106:13:106:19 | case ...: | Switch.cs:106:18:106:18 | 1 | 2 | -| Switch.cs:106:28:106:28 | 1 | Switch.cs:106:21:106:29 | return ...; | 2 | -| Switch.cs:108:17:108:17 | 1 | Switch.cs:108:9:108:18 | return ...; | 3 | -| Switch.cs:111:17:111:21 | enter Throw | Switch.cs:111:17:111:21 | exit Throw | 5 | -| Switch.cs:113:9:113:11 | enter M10 | Switch.cs:117:18:117:18 | 3 | 7 | -| Switch.cs:113:9:113:11 | exit M10 (normal) | Switch.cs:113:9:113:11 | exit M10 | 2 | -| Switch.cs:117:25:117:25 | access to parameter s | Switch.cs:117:25:117:34 | ... == ... | 3 | -| Switch.cs:117:44:117:44 | 1 | Switch.cs:117:37:117:45 | return ...; | 2 | +| Switch.cs:27:18:27:25 | After Double d [match] | Switch.cs:27:32:27:38 | call to method Throw | 4 | +| Switch.cs:27:18:27:25 | After Double d [no-match] | Switch.cs:30:13:30:20 | default: | 3 | +| Switch.cs:30:13:30:20 | After default: [match] | Switch.cs:29:17:29:23 | return ...; | 6 | +| Switch.cs:35:10:35:11 | Entry | Switch.cs:35:10:35:11 | Exit | 7 | +| Switch.cs:44:10:44:11 | Entry | Switch.cs:48:18:48:20 | access to type Int32 | 7 | +| Switch.cs:46:9:52:9 | After switch (...) {...} | Switch.cs:44:10:44:11 | Exit | 4 | +| Switch.cs:48:18:48:20 | After access to type Int32 [match] | Switch.cs:49:17:49:22 | break; | 4 | +| Switch.cs:48:18:48:20 | After access to type Int32 [no-match] | Switch.cs:50:18:50:21 | access to type Boolean | 4 | +| Switch.cs:50:18:50:21 | After access to type Boolean [match] | Switch.cs:50:30:50:38 | ... != ... | 6 | +| Switch.cs:50:18:50:21 | After access to type Boolean [no-match] | Switch.cs:50:13:50:39 | After case ...: [no-match] | 2 | +| Switch.cs:50:30:50:38 | After ... != ... [false] | Switch.cs:50:30:50:38 | After ... != ... [false] | 1 | +| Switch.cs:50:30:50:38 | After ... != ... [true] | Switch.cs:51:17:51:22 | break; | 3 | +| Switch.cs:55:10:55:11 | Entry | Switch.cs:59:18:59:18 | 2 | 10 | +| Switch.cs:57:9:63:9 | After switch (...) {...} | Switch.cs:55:10:55:11 | Exit | 4 | +| Switch.cs:59:18:59:18 | After 2 [match] | Switch.cs:60:17:60:22 | break; | 4 | +| Switch.cs:59:18:59:18 | After 2 [no-match] | Switch.cs:61:18:61:18 | 3 | 4 | +| Switch.cs:61:18:61:18 | After 3 [match] | Switch.cs:62:17:62:22 | break; | 4 | +| Switch.cs:61:18:61:18 | After 3 [no-match] | Switch.cs:61:13:61:19 | After case ...: [no-match] | 2 | +| Switch.cs:66:10:66:11 | Entry | Switch.cs:70:18:70:20 | access to type Int32 | 10 | +| Switch.cs:68:9:74:9 | After switch (...) {...} | Switch.cs:66:10:66:11 | Exit | 4 | +| Switch.cs:70:18:70:20 | After access to type Int32 [match] | Switch.cs:71:17:71:22 | break; | 4 | +| Switch.cs:70:18:70:20 | After access to type Int32 [no-match] | Switch.cs:72:18:72:19 | "" | 4 | +| Switch.cs:72:18:72:19 | After "" [match] | Switch.cs:73:17:73:22 | break; | 4 | +| Switch.cs:72:18:72:19 | After "" [no-match] | Switch.cs:72:13:72:20 | After case ...: [no-match] | 2 | +| Switch.cs:77:10:77:11 | Entry | Switch.cs:81:18:81:18 | 1 | 8 | +| Switch.cs:77:10:77:11 | Normal Exit | Switch.cs:77:10:77:11 | Exit | 2 | +| Switch.cs:79:9:87:9 | After switch (...) {...} | Switch.cs:88:9:88:21 | return ...; | 4 | +| Switch.cs:81:18:81:18 | After 1 [match] | Switch.cs:82:17:82:28 | return ...; | 5 | +| Switch.cs:81:18:81:18 | After 1 [no-match] | Switch.cs:83:18:83:18 | 2 | 4 | +| Switch.cs:83:18:83:18 | After 2 [match] | Switch.cs:84:21:84:25 | ... > ... | 7 | +| Switch.cs:83:18:83:18 | After 2 [no-match] | Switch.cs:83:13:83:19 | After case ...: [no-match] | 2 | +| Switch.cs:84:21:84:25 | After ... > ... [false] | Switch.cs:86:17:86:28 | return ...; | 5 | +| Switch.cs:84:21:84:25 | After ... > ... [true] | Switch.cs:85:21:85:26 | break; | 3 | +| Switch.cs:91:10:91:11 | Entry | Switch.cs:95:18:95:20 | access to type Int32 | 7 | +| Switch.cs:91:10:91:11 | Normal Exit | Switch.cs:91:10:91:11 | Exit | 2 | +| Switch.cs:95:18:95:20 | After access to type Int32 [match] | Switch.cs:96:17:96:28 | return ...; | 5 | +| Switch.cs:95:18:95:20 | After access to type Int32 [no-match] | Switch.cs:98:9:98:21 | return ...; | 6 | +| Switch.cs:101:9:101:10 | Entry | Switch.cs:103:17:103:17 | access to parameter s | 6 | +| Switch.cs:101:9:101:10 | Normal Exit | Switch.cs:101:9:101:10 | Exit | 2 | +| Switch.cs:103:17:103:17 | After access to parameter s [non-null] | Switch.cs:103:17:103:25 | access to property Length | 2 | +| Switch.cs:103:17:103:17 | After access to parameter s [null] | Switch.cs:103:17:103:17 | After access to parameter s [null] | 1 | +| Switch.cs:103:17:103:25 | After access to property Length | Switch.cs:105:18:105:18 | 0 | 3 | +| Switch.cs:105:18:105:18 | After 0 [match] | Switch.cs:105:21:105:29 | return ...; | 5 | +| Switch.cs:105:18:105:18 | After 0 [no-match] | Switch.cs:106:18:106:18 | 1 | 4 | +| Switch.cs:106:18:106:18 | After 1 [match] | Switch.cs:106:21:106:29 | return ...; | 5 | +| Switch.cs:106:18:106:18 | After 1 [no-match] | Switch.cs:108:9:108:18 | return ...; | 9 | +| Switch.cs:111:17:111:21 | Entry | Switch.cs:111:17:111:21 | Exit | 8 | +| Switch.cs:113:9:113:11 | Entry | Switch.cs:117:18:117:18 | 3 | 10 | +| Switch.cs:113:9:113:11 | Normal Exit | Switch.cs:113:9:113:11 | Exit | 2 | +| Switch.cs:115:9:119:9 | After switch (...) {...} | Switch.cs:120:9:120:18 | return ...; | 7 | +| Switch.cs:117:18:117:18 | After 3 [match] | Switch.cs:117:25:117:34 | ... == ... | 6 | +| Switch.cs:117:18:117:18 | After 3 [no-match] | Switch.cs:117:13:117:35 | After case ...: [no-match] | 2 | +| Switch.cs:117:25:117:34 | After ... == ... [false] | Switch.cs:117:25:117:34 | After ... == ... [false] | 1 | +| Switch.cs:117:25:117:34 | After ... == ... [true] | Switch.cs:117:37:117:45 | return ...; | 4 | | Switch.cs:118:13:118:34 | case ...: | Switch.cs:118:18:118:18 | 2 | 2 | -| Switch.cs:118:25:118:25 | access to parameter s | Switch.cs:118:25:118:33 | ... == ... | 3 | -| Switch.cs:118:43:118:43 | 2 | Switch.cs:118:36:118:44 | return ...; | 2 | -| Switch.cs:120:17:120:17 | 1 | Switch.cs:120:9:120:18 | return ...; | 3 | -| Switch.cs:123:10:123:12 | enter M11 | Switch.cs:125:24:125:29 | Boolean b | 5 | -| Switch.cs:123:10:123:12 | exit M11 (normal) | Switch.cs:123:10:123:12 | exit M11 | 2 | -| Switch.cs:125:13:125:48 | [false] ... switch { ... } | Switch.cs:125:13:125:48 | [false] ... switch { ... } | 1 | -| Switch.cs:125:13:125:48 | [true] ... switch { ... } | Switch.cs:125:13:125:48 | [true] ... switch { ... } | 1 | -| Switch.cs:125:24:125:34 | [false] ... => ... | Switch.cs:125:24:125:34 | [false] ... => ... | 1 | -| Switch.cs:125:24:125:34 | [true] ... => ... | Switch.cs:125:24:125:34 | [true] ... => ... | 1 | -| Switch.cs:125:34:125:34 | access to local variable b | Switch.cs:125:34:125:34 | access to local variable b | 1 | -| Switch.cs:125:37:125:37 | _ | Switch.cs:125:37:125:37 | _ | 1 | -| Switch.cs:125:37:125:46 | [false] ... => ... | Switch.cs:125:37:125:46 | [false] ... => ... | 1 | -| Switch.cs:125:42:125:46 | false | Switch.cs:125:42:125:46 | false | 1 | -| Switch.cs:126:13:126:19 | return ...; | Switch.cs:126:13:126:19 | return ...; | 1 | -| Switch.cs:129:12:129:14 | enter M12 | Switch.cs:131:28:131:35 | String s | 4 | -| Switch.cs:131:9:131:67 | return ...; | Switch.cs:129:12:129:14 | exit M12 | 3 | -| Switch.cs:131:16:131:66 | call to method ToString | Switch.cs:131:16:131:66 | call to method ToString | 1 | -| Switch.cs:131:17:131:53 | [non-null] ... switch { ... } | Switch.cs:131:17:131:53 | [non-null] ... switch { ... } | 1 | -| Switch.cs:131:17:131:53 | [null] ... switch { ... } | Switch.cs:131:17:131:53 | [null] ... switch { ... } | 1 | -| Switch.cs:131:28:131:40 | [non-null] ... => ... | Switch.cs:131:28:131:40 | [non-null] ... => ... | 1 | -| Switch.cs:131:28:131:40 | [null] ... => ... | Switch.cs:131:28:131:40 | [null] ... => ... | 1 | -| Switch.cs:131:40:131:40 | access to local variable s | Switch.cs:131:40:131:40 | access to local variable s | 1 | -| Switch.cs:131:43:131:43 | _ | Switch.cs:131:43:131:43 | _ | 1 | -| Switch.cs:131:43:131:51 | [null] ... => ... | Switch.cs:131:43:131:51 | [null] ... => ... | 1 | -| Switch.cs:131:48:131:51 | null | Switch.cs:131:48:131:51 | null | 1 | -| Switch.cs:134:9:134:11 | enter M13 | Switch.cs:139:18:139:18 | 1 | 6 | -| Switch.cs:134:9:134:11 | exit M13 (normal) | Switch.cs:134:9:134:11 | exit M13 | 2 | -| Switch.cs:138:13:138:20 | default: | Switch.cs:138:22:138:31 | return ...; | 4 | -| Switch.cs:139:28:139:28 | 1 | Switch.cs:139:21:139:29 | return ...; | 2 | -| Switch.cs:140:13:140:19 | case ...: | Switch.cs:140:18:140:18 | 2 | 2 | -| Switch.cs:140:28:140:28 | 2 | Switch.cs:140:21:140:29 | return ...; | 2 | -| Switch.cs:144:9:144:11 | enter M14 | Switch.cs:148:18:148:18 | 1 | 6 | -| Switch.cs:144:9:144:11 | exit M14 (normal) | Switch.cs:144:9:144:11 | exit M14 | 2 | -| Switch.cs:148:28:148:28 | 1 | Switch.cs:148:21:148:29 | return ...; | 2 | -| Switch.cs:149:13:149:20 | default: | Switch.cs:149:22:149:31 | return ...; | 4 | -| Switch.cs:150:13:150:19 | case ...: | Switch.cs:150:18:150:18 | 2 | 2 | -| Switch.cs:150:28:150:28 | 2 | Switch.cs:150:21:150:29 | return ...; | 2 | -| Switch.cs:154:10:154:12 | enter M15 | Switch.cs:156:28:156:31 | true | 5 | -| Switch.cs:154:10:154:12 | exit M15 | Switch.cs:154:10:154:12 | exit M15 | 1 | -| Switch.cs:154:10:154:12 | exit M15 (abnormal) | Switch.cs:154:10:154:12 | exit M15 (abnormal) | 1 | -| Switch.cs:154:10:154:12 | exit M15 (normal) | Switch.cs:154:10:154:12 | exit M15 (normal) | 1 | -| Switch.cs:156:17:156:54 | ... switch { ... } | Switch.cs:157:13:157:13 | access to parameter b | 4 | -| Switch.cs:156:36:156:38 | "a" | Switch.cs:156:28:156:38 | ... => ... | 2 | -| Switch.cs:156:41:156:45 | false | Switch.cs:156:41:156:45 | false | 1 | -| Switch.cs:156:50:156:52 | "b" | Switch.cs:156:41:156:52 | ... => ... | 2 | -| Switch.cs:158:13:158:49 | ...; | Switch.cs:158:13:158:48 | call to method WriteLine | 6 | -| Switch.cs:160:13:160:49 | ...; | Switch.cs:160:13:160:48 | call to method WriteLine | 6 | -| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:167:18:167:18 | 1 | 6 | -| Switch.cs:163:10:163:12 | exit M16 (normal) | Switch.cs:163:10:163:12 | exit M16 | 2 | -| Switch.cs:168:13:168:19 | case ...: | Switch.cs:168:18:168:18 | 2 | 2 | -| Switch.cs:169:17:169:51 | ...; | Switch.cs:170:17:170:22 | break; | 4 | -| Switch.cs:171:13:171:19 | case ...: | Switch.cs:171:18:171:18 | 3 | 2 | -| Switch.cs:172:17:172:46 | ...; | Switch.cs:173:17:173:22 | break; | 4 | -| Switch.cs:174:13:174:20 | default: | Switch.cs:176:17:176:22 | break; | 5 | -| TypeAccesses.cs:1:7:1:18 | enter TypeAccesses | TypeAccesses.cs:1:7:1:18 | exit TypeAccesses | 7 | -| TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:7:18:7:22 | Int32 j | 13 | -| TypeAccesses.cs:7:13:7:22 | [false] ... is ... | TypeAccesses.cs:7:13:7:22 | [false] ... is ... | 1 | -| TypeAccesses.cs:7:13:7:22 | [true] ... is ... | TypeAccesses.cs:7:13:7:22 | [true] ... is ... | 1 | -| TypeAccesses.cs:7:25:7:25 | ; | TypeAccesses.cs:7:25:7:25 | ; | 1 | -| TypeAccesses.cs:8:9:8:28 | ... ...; | TypeAccesses.cs:3:10:3:10 | exit M | 5 | -| VarDecls.cs:3:7:3:14 | enter VarDecls | VarDecls.cs:3:7:3:14 | exit VarDecls | 7 | -| VarDecls.cs:5:18:5:19 | enter M1 | VarDecls.cs:5:18:5:19 | exit M1 | 19 | -| VarDecls.cs:13:12:13:13 | enter M2 | VarDecls.cs:13:12:13:13 | exit M2 | 13 | -| VarDecls.cs:19:7:19:8 | enter M3 | VarDecls.cs:25:20:25:20 | access to parameter b | 11 | -| VarDecls.cs:25:20:25:28 | ... ? ... : ... | VarDecls.cs:19:7:19:8 | exit M3 | 4 | -| VarDecls.cs:25:24:25:24 | access to local variable x | VarDecls.cs:25:24:25:24 | access to local variable x | 1 | -| VarDecls.cs:25:28:25:28 | access to local variable y | VarDecls.cs:25:28:25:28 | access to local variable y | 1 | -| VarDecls.cs:28:11:28:11 | enter C | VarDecls.cs:28:11:28:11 | exit C | 7 | -| VarDecls.cs:28:41:28:47 | enter Dispose | VarDecls.cs:28:41:28:47 | exit Dispose | 4 | -| cflow.cs:5:17:5:20 | enter Main | cflow.cs:11:13:11:17 | ... > ... | 15 | -| cflow.cs:5:17:5:20 | exit Main (normal) | cflow.cs:5:17:5:20 | exit Main | 2 | -| cflow.cs:12:13:12:49 | ...; | cflow.cs:12:13:12:48 | call to method WriteLine | 3 | -| cflow.cs:14:9:17:9 | while (...) ... | cflow.cs:14:9:17:9 | while (...) ... | 1 | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:14:16:14:20 | ... > ... | 3 | -| cflow.cs:15:9:17:9 | {...} | cflow.cs:16:13:16:40 | call to method WriteLine | 7 | -| cflow.cs:19:9:22:25 | do ... while (...); | cflow.cs:19:9:22:25 | do ... while (...); | 1 | -| cflow.cs:20:9:22:9 | {...} | cflow.cs:22:18:22:23 | ... < ... | 9 | -| cflow.cs:24:9:34:9 | for (...;...;...) ... | cflow.cs:24:18:24:22 | Int32 i = ... | 3 | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:24:25:24:31 | ... <= ... | 3 | -| cflow.cs:24:34:24:34 | access to local variable i | cflow.cs:24:34:24:36 | ...++ | 2 | -| cflow.cs:25:9:34:9 | {...} | cflow.cs:26:17:26:26 | ... == ... | 7 | -| cflow.cs:26:17:26:40 | [false] ... && ... | cflow.cs:26:17:26:40 | [false] ... && ... | 1 | -| cflow.cs:26:17:26:40 | [true] ... && ... | cflow.cs:26:17:26:40 | [true] ... && ... | 1 | -| cflow.cs:26:31:26:31 | access to local variable i | cflow.cs:26:31:26:40 | ... == ... | 5 | -| cflow.cs:27:17:27:46 | ...; | cflow.cs:27:17:27:45 | call to method WriteLine | 3 | -| cflow.cs:28:18:33:37 | if (...) ... | cflow.cs:28:22:28:31 | ... == ... | 6 | -| cflow.cs:29:17:29:42 | ...; | cflow.cs:29:17:29:41 | call to method WriteLine | 3 | -| cflow.cs:30:18:33:37 | if (...) ... | cflow.cs:30:22:30:31 | ... == ... | 6 | -| cflow.cs:31:17:31:42 | ...; | cflow.cs:31:17:31:41 | call to method WriteLine | 3 | -| cflow.cs:33:17:33:37 | ...; | cflow.cs:33:17:33:36 | call to method WriteLine | 3 | -| cflow.cs:37:17:37:22 | enter Switch | cflow.cs:39:17:39:17 | access to parameter a | 4 | -| cflow.cs:37:17:37:22 | exit Switch | cflow.cs:37:17:37:22 | exit Switch | 1 | -| cflow.cs:41:13:41:19 | case ...: | cflow.cs:41:18:41:18 | 1 | 2 | -| cflow.cs:42:17:42:39 | ...; | cflow.cs:43:17:43:28 | goto case ...; | 5 | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:44:18:44:18 | 2 | 2 | -| cflow.cs:45:17:45:39 | ...; | cflow.cs:46:17:46:28 | goto case ...; | 5 | -| cflow.cs:47:13:47:19 | case ...: | cflow.cs:47:18:47:18 | 3 | 2 | -| cflow.cs:48:17:48:39 | ...; | cflow.cs:49:17:49:22 | break; | 4 | -| cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:53:18:53:19 | 42 | 4 | -| cflow.cs:54:17:54:48 | ...; | cflow.cs:55:17:55:22 | break; | 4 | -| cflow.cs:56:13:56:20 | default: | cflow.cs:58:17:58:22 | break; | 5 | -| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:62:18:62:18 | 0 | 6 | -| cflow.cs:63:17:64:55 | if (...) ... | cflow.cs:63:23:63:33 | ... == ... | 5 | -| cflow.cs:63:21:63:34 | [false] !... | cflow.cs:63:21:63:34 | [false] !... | 1 | -| cflow.cs:63:21:63:34 | [true] !... | cflow.cs:63:21:63:34 | [true] !... | 1 | -| cflow.cs:64:27:64:54 | object creation of type NullReferenceException | cflow.cs:37:17:37:22 | exit Switch (abnormal) | 3 | -| cflow.cs:65:17:65:22 | break; | cflow.cs:65:17:65:22 | break; | 1 | -| cflow.cs:67:16:67:16 | access to parameter a | cflow.cs:37:17:37:22 | exit Switch (normal) | 3 | -| cflow.cs:70:18:70:18 | enter M | cflow.cs:72:13:72:21 | ... == ... | 6 | -| cflow.cs:70:18:70:18 | exit M (normal) | cflow.cs:70:18:70:18 | exit M | 2 | -| cflow.cs:73:13:73:19 | return ...; | cflow.cs:73:13:73:19 | return ...; | 1 | -| cflow.cs:74:9:81:9 | if (...) ... | cflow.cs:74:13:74:24 | ... > ... | 5 | -| cflow.cs:75:9:77:9 | {...} | cflow.cs:76:13:76:32 | call to method WriteLine | 4 | -| cflow.cs:79:9:81:9 | {...} | cflow.cs:80:13:80:47 | call to method WriteLine | 4 | -| cflow.cs:84:18:84:19 | enter M2 | cflow.cs:86:13:86:21 | ... != ... | 6 | -| cflow.cs:84:18:84:19 | exit M2 (normal) | cflow.cs:84:18:84:19 | exit M2 | 2 | -| cflow.cs:86:13:86:37 | [false] ... && ... | cflow.cs:86:13:86:37 | [false] ... && ... | 1 | -| cflow.cs:86:13:86:37 | [true] ... && ... | cflow.cs:86:13:86:37 | [true] ... && ... | 1 | -| cflow.cs:86:26:86:26 | access to parameter s | cflow.cs:86:26:86:37 | ... > ... | 4 | -| cflow.cs:87:13:87:33 | ...; | cflow.cs:87:13:87:32 | call to method WriteLine | 3 | -| cflow.cs:90:18:90:19 | enter M3 | cflow.cs:92:13:92:27 | call to method Equals | 6 | -| cflow.cs:90:18:90:19 | exit M3 | cflow.cs:90:18:90:19 | exit M3 | 1 | -| cflow.cs:90:18:90:19 | exit M3 (normal) | cflow.cs:90:18:90:19 | exit M3 (normal) | 1 | -| cflow.cs:93:45:93:47 | "s" | cflow.cs:90:18:90:19 | exit M3 (abnormal) | 4 | -| cflow.cs:94:9:94:29 | ...; | cflow.cs:96:13:96:25 | ... != ... | 8 | -| cflow.cs:97:13:97:55 | ...; | cflow.cs:97:13:97:54 | call to method WriteLine | 4 | -| cflow.cs:99:9:100:42 | if (...) ... | cflow.cs:99:13:99:25 | ... != ... | 5 | -| cflow.cs:100:13:100:42 | ...; | cflow.cs:100:13:100:41 | call to method WriteLine | 4 | -| cflow.cs:102:9:103:36 | if (...) ... | cflow.cs:102:13:102:29 | ... != ... | 5 | -| cflow.cs:103:13:103:36 | ...; | cflow.cs:103:13:103:35 | call to method WriteLine | 4 | -| cflow.cs:106:18:106:19 | enter M4 | cflow.cs:108:13:108:21 | ... != ... | 6 | -| cflow.cs:109:9:115:9 | {...} | cflow.cs:110:13:113:13 | while (...) ... | 2 | -| cflow.cs:110:20:110:23 | true | cflow.cs:110:20:110:23 | true | 1 | -| cflow.cs:111:13:113:13 | {...} | cflow.cs:112:17:112:36 | call to method WriteLine | 4 | -| cflow.cs:116:9:116:29 | ...; | cflow.cs:106:18:106:19 | exit M4 | 5 | -| cflow.cs:119:20:119:21 | enter M5 | cflow.cs:119:20:119:21 | exit M5 | 14 | -| cflow.cs:127:19:127:21 | enter get_Prop | cflow.cs:127:32:127:44 | ... == ... | 6 | -| cflow.cs:127:32:127:57 | ... ? ... : ... | cflow.cs:127:19:127:21 | exit get_Prop | 4 | -| cflow.cs:127:48:127:49 | "" | cflow.cs:127:48:127:49 | "" | 1 | -| cflow.cs:127:53:127:57 | this access | cflow.cs:127:53:127:57 | access to field Field | 2 | -| cflow.cs:127:62:127:64 | enter set_Prop | cflow.cs:127:62:127:64 | exit set_Prop | 9 | -| cflow.cs:129:5:129:15 | enter ControlFlow | cflow.cs:129:5:129:15 | exit ControlFlow | 12 | -| cflow.cs:134:5:134:15 | enter ControlFlow | cflow.cs:134:5:134:15 | exit ControlFlow | 9 | -| cflow.cs:136:12:136:22 | enter ControlFlow | cflow.cs:136:12:136:22 | exit ControlFlow | 8 | -| cflow.cs:138:40:138:40 | enter + | cflow.cs:138:40:138:40 | exit + | 9 | -| cflow.cs:144:33:144:35 | enter get_Item | cflow.cs:144:33:144:35 | exit get_Item | 9 | -| cflow.cs:144:56:144:58 | enter set_Item | cflow.cs:144:56:144:58 | exit set_Item | 4 | -| cflow.cs:146:10:146:12 | enter For | cflow.cs:149:9:150:33 | for (...;...;...) ... | 6 | -| cflow.cs:146:10:146:12 | exit For (normal) | cflow.cs:146:10:146:12 | exit For | 2 | -| cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:149:16:149:21 | ... < ... | 3 | -| cflow.cs:150:13:150:33 | ...; | cflow.cs:149:24:149:26 | ++... | 5 | -| cflow.cs:152:9:157:9 | for (...;...;...) ... | cflow.cs:152:9:157:9 | for (...;...;...) ... | 1 | -| cflow.cs:152:18:152:18 | access to local variable x | cflow.cs:152:18:152:20 | ...++ | 2 | -| cflow.cs:153:9:157:9 | {...} | cflow.cs:155:17:155:22 | ... > ... | 8 | -| cflow.cs:156:17:156:22 | break; | cflow.cs:159:9:165:9 | for (...;...;...) ... | 2 | -| cflow.cs:160:9:165:9 | {...} | cflow.cs:163:17:163:22 | ... > ... | 11 | -| cflow.cs:164:17:164:22 | break; | cflow.cs:167:9:171:9 | for (...;...;...) ... | 2 | -| cflow.cs:167:16:167:16 | access to local variable x | cflow.cs:167:16:167:21 | ... < ... | 3 | -| cflow.cs:168:9:171:9 | {...} | cflow.cs:170:13:170:15 | ...++ | 7 | -| cflow.cs:173:9:176:9 | for (...;...;...) ... | cflow.cs:173:25:173:29 | Int32 j = ... | 5 | -| cflow.cs:173:32:173:32 | access to local variable i | cflow.cs:173:32:173:41 | ... < ... | 5 | -| cflow.cs:174:9:176:9 | {...} | cflow.cs:173:49:173:51 | ...++ | 10 | -| cflow.cs:179:10:179:16 | enter Lambdas | cflow.cs:179:10:179:16 | exit Lambdas | 10 | -| cflow.cs:181:28:181:37 | enter (...) => ... | cflow.cs:181:28:181:37 | exit (...) => ... | 6 | -| cflow.cs:182:28:182:61 | enter delegate(...) { ... } | cflow.cs:182:28:182:61 | exit delegate(...) { ... } | 8 | -| cflow.cs:185:10:185:18 | enter LogicalOr | cflow.cs:187:13:187:18 | ... == ... | 6 | -| cflow.cs:187:13:187:28 | ... \|\| ... | cflow.cs:187:13:187:28 | ... \|\| ... | 1 | -| cflow.cs:187:13:187:50 | ... \|\| ... | cflow.cs:187:13:187:50 | ... \|\| ... | 1 | -| cflow.cs:187:23:187:23 | 2 | cflow.cs:187:23:187:28 | ... == ... | 3 | -| cflow.cs:187:34:187:34 | 1 | cflow.cs:187:34:187:39 | ... == ... | 3 | -| cflow.cs:187:34:187:49 | ... && ... | cflow.cs:187:34:187:49 | ... && ... | 1 | -| cflow.cs:190:13:190:52 | ...; | cflow.cs:185:10:185:18 | exit LogicalOr | 5 | -| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:195:17:195:32 | ... > ... | 8 | -| cflow.cs:193:10:193:17 | exit Booleans | cflow.cs:193:10:193:17 | exit Booleans | 1 | -| cflow.cs:193:10:193:17 | exit Booleans (normal) | cflow.cs:193:10:193:17 | exit Booleans (normal) | 1 | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:197:15:197:31 | ... == ... | 8 | -| cflow.cs:195:39:195:43 | this access | cflow.cs:195:37:195:56 | !... | 6 | -| cflow.cs:197:13:197:47 | [false] !... | cflow.cs:197:13:197:47 | [false] !... | 1 | -| cflow.cs:197:13:197:47 | [true] !... | cflow.cs:197:13:197:47 | [true] !... | 1 | -| cflow.cs:197:15:197:46 | [false] ... ? ... : ... | cflow.cs:197:15:197:46 | [false] ... ? ... : ... | 1 | -| cflow.cs:197:15:197:46 | [true] ... ? ... : ... | cflow.cs:197:15:197:46 | [true] ... ? ... : ... | 1 | -| cflow.cs:197:35:197:39 | false | cflow.cs:197:35:197:39 | false | 1 | -| cflow.cs:197:43:197:46 | true | cflow.cs:197:43:197:46 | true | 1 | -| cflow.cs:198:13:198:49 | ...; | cflow.cs:198:17:198:33 | ... == ... | 6 | -| cflow.cs:198:17:198:48 | ... ? ... : ... | cflow.cs:198:13:198:48 | ... = ... | 2 | -| cflow.cs:198:37:198:41 | false | cflow.cs:198:37:198:41 | false | 1 | -| cflow.cs:198:45:198:48 | true | cflow.cs:198:45:198:48 | true | 1 | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:200:15:200:31 | ... == ... | 6 | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:200:13:200:32 | [false] !... | 1 | -| cflow.cs:200:13:200:32 | [true] !... | cflow.cs:200:13:200:32 | [true] !... | 1 | -| cflow.cs:200:13:200:62 | [false] ... \|\| ... | cflow.cs:200:13:200:62 | [false] ... \|\| ... | 1 | -| cflow.cs:200:13:200:62 | [true] ... \|\| ... | cflow.cs:200:13:200:62 | [true] ... \|\| ... | 1 | -| cflow.cs:200:37:200:62 | [false] !... | cflow.cs:200:37:200:62 | [false] !... | 1 | -| cflow.cs:200:37:200:62 | [true] !... | cflow.cs:200:37:200:62 | [true] !... | 1 | -| cflow.cs:200:38:200:62 | [false] !... | cflow.cs:200:38:200:62 | [false] !... | 1 | -| cflow.cs:200:38:200:62 | [true] !... | cflow.cs:200:38:200:62 | [true] !... | 1 | -| cflow.cs:200:40:200:44 | this access | cflow.cs:200:40:200:56 | ... == ... | 5 | -| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:200:40:200:61 | [false] ... && ... | 1 | -| cflow.cs:200:40:200:61 | [true] ... && ... | cflow.cs:200:40:200:61 | [true] ... && ... | 1 | -| cflow.cs:200:61:200:61 | access to local variable b | cflow.cs:200:61:200:61 | access to local variable b | 1 | -| cflow.cs:201:9:205:9 | {...} | cflow.cs:193:10:193:17 | exit Booleans (abnormal) | 5 | -| cflow.cs:208:10:208:11 | enter Do | cflow.cs:210:9:221:36 | do ... while (...); | 3 | -| cflow.cs:208:10:208:11 | exit Do (normal) | cflow.cs:208:10:208:11 | exit Do | 2 | -| cflow.cs:211:9:221:9 | {...} | cflow.cs:213:17:213:32 | ... > ... | 12 | -| cflow.cs:214:13:216:13 | {...} | cflow.cs:215:17:215:25 | continue; | 2 | -| cflow.cs:217:13:220:13 | if (...) ... | cflow.cs:217:17:217:32 | ... < ... | 6 | -| cflow.cs:218:13:220:13 | {...} | cflow.cs:219:17:219:22 | break; | 2 | -| cflow.cs:221:18:221:22 | this access | cflow.cs:221:18:221:34 | ... < ... | 5 | -| cflow.cs:224:10:224:16 | enter Foreach | cflow.cs:226:27:226:64 | call to method Repeat | 5 | -| cflow.cs:224:10:224:16 | exit Foreach (normal) | cflow.cs:224:10:224:16 | exit Foreach | 2 | -| cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | 1 | -| cflow.cs:226:22:226:22 | String x | cflow.cs:229:17:229:32 | ... > ... | 13 | -| cflow.cs:230:13:232:13 | {...} | cflow.cs:231:17:231:25 | continue; | 2 | -| cflow.cs:233:13:236:13 | if (...) ... | cflow.cs:233:17:233:32 | ... < ... | 6 | -| cflow.cs:234:13:236:13 | {...} | cflow.cs:235:17:235:22 | break; | 2 | -| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:241:5:259:5 | {...} | 2 | -| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:240:10:240:13 | exit Goto | 2 | -| cflow.cs:242:5:242:9 | Label: | cflow.cs:242:19:242:35 | ... == ... | 7 | -| cflow.cs:242:16:242:36 | [false] !... | cflow.cs:242:16:242:36 | [false] !... | 1 | -| cflow.cs:242:16:242:36 | [true] !... | cflow.cs:242:16:242:36 | [true] !... | 1 | -| cflow.cs:242:17:242:36 | [false] !... | cflow.cs:242:17:242:36 | [false] !... | 1 | -| cflow.cs:242:17:242:36 | [true] !... | cflow.cs:242:17:242:36 | [true] !... | 1 | -| cflow.cs:242:39:242:41 | {...} | cflow.cs:242:39:242:41 | {...} | 1 | -| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:244:13:244:28 | ... > ... | 6 | -| cflow.cs:244:31:244:41 | goto ...; | cflow.cs:244:31:244:41 | goto ...; | 1 | -| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:248:18:248:18 | 0 | 8 | -| cflow.cs:249:17:249:29 | goto default; | cflow.cs:249:17:249:29 | goto default; | 1 | -| cflow.cs:250:13:250:19 | case ...: | cflow.cs:250:18:250:18 | 1 | 2 | -| cflow.cs:251:17:251:37 | ...; | cflow.cs:252:17:252:22 | break; | 4 | -| cflow.cs:253:13:253:19 | case ...: | cflow.cs:253:18:253:18 | 2 | 2 | -| cflow.cs:254:17:254:27 | goto ...; | cflow.cs:254:17:254:27 | goto ...; | 1 | -| cflow.cs:255:13:255:20 | default: | cflow.cs:257:17:257:22 | break; | 5 | -| cflow.cs:261:49:261:53 | enter Yield | cflow.cs:264:18:264:22 | Int32 i = ... | 7 | -| cflow.cs:261:49:261:53 | exit Yield | cflow.cs:261:49:261:53 | exit Yield | 1 | -| cflow.cs:261:49:261:53 | exit Yield (abnormal) | cflow.cs:261:49:261:53 | exit Yield (abnormal) | 1 | -| cflow.cs:261:49:261:53 | exit Yield (normal) | cflow.cs:261:49:261:53 | exit Yield (normal) | 1 | -| cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:264:25:264:30 | ... < ... | 3 | -| cflow.cs:265:9:267:9 | {...} | cflow.cs:264:33:264:35 | ...++ | 5 | -| cflow.cs:268:9:276:9 | try {...} ... | cflow.cs:275:13:275:41 | call to method WriteLine | 7 | -| cflow.cs:282:5:282:18 | enter ControlFlowSub | cflow.cs:282:5:282:18 | exit ControlFlowSub | 7 | -| cflow.cs:284:5:284:18 | enter ControlFlowSub | cflow.cs:284:5:284:18 | exit ControlFlowSub | 5 | -| cflow.cs:286:5:286:18 | enter ControlFlowSub | cflow.cs:286:5:286:18 | exit ControlFlowSub | 7 | -| cflow.cs:289:7:289:18 | enter DelegateCall | cflow.cs:289:7:289:18 | exit DelegateCall | 7 | -| cflow.cs:291:12:291:12 | enter M | cflow.cs:291:12:291:12 | exit M | 6 | -| cflow.cs:296:5:296:25 | enter NegationInConstructor | cflow.cs:296:5:296:25 | exit NegationInConstructor | 7 | -| cflow.cs:298:10:298:10 | enter M | cflow.cs:300:46:300:50 | ... > ... | 7 | -| cflow.cs:300:44:300:51 | [false] !... | cflow.cs:300:44:300:51 | [false] !... | 1 | -| cflow.cs:300:44:300:51 | [true] !... | cflow.cs:300:44:300:51 | [true] !... | 1 | -| cflow.cs:300:44:300:64 | ... && ... | cflow.cs:298:10:298:10 | exit M | 5 | -| cflow.cs:300:56:300:56 | access to parameter s | cflow.cs:300:56:300:64 | ... != ... | 3 | -| cflow.cs:304:7:304:18 | enter LambdaGetter | cflow.cs:304:7:304:18 | exit LambdaGetter | 7 | -| cflow.cs:306:60:310:5 | enter (...) => ... | cflow.cs:306:60:310:5 | exit (...) => ... | 9 | -| cflow.cs:306:60:310:5 | enter get__getter | cflow.cs:306:60:310:5 | exit get__getter | 4 | +| Switch.cs:118:18:118:18 | After 2 [match] | Switch.cs:118:25:118:33 | ... == ... | 6 | +| Switch.cs:118:18:118:18 | After 2 [no-match] | Switch.cs:118:13:118:34 | After case ...: [no-match] | 2 | +| Switch.cs:118:25:118:33 | After ... == ... [false] | Switch.cs:118:25:118:33 | After ... == ... [false] | 1 | +| Switch.cs:118:25:118:33 | After ... == ... [true] | Switch.cs:118:36:118:44 | return ...; | 4 | +| Switch.cs:123:10:123:12 | Entry | Switch.cs:125:24:125:29 | Boolean b | 8 | +| Switch.cs:123:10:123:12 | Normal Exit | Switch.cs:123:10:123:12 | Exit | 2 | +| Switch.cs:125:13:125:48 | After ... switch { ... } [false] | Switch.cs:124:5:127:5 | After {...} | 3 | +| Switch.cs:125:13:125:48 | After ... switch { ... } [true] | Switch.cs:126:13:126:19 | return ...; | 3 | +| Switch.cs:125:24:125:29 | After Boolean b [match] | Switch.cs:125:34:125:34 | access to local variable b | 3 | +| Switch.cs:125:24:125:29 | After Boolean b [no-match] | Switch.cs:125:42:125:46 | false | 7 | +| Switch.cs:129:12:129:14 | Entry | Switch.cs:131:28:131:35 | String s | 9 | +| Switch.cs:131:16:131:66 | After call to method ToString | Switch.cs:129:12:129:14 | Exit | 4 | +| Switch.cs:131:17:131:53 | After ... switch { ... } [non-null] | Switch.cs:131:16:131:66 | call to method ToString | 2 | +| Switch.cs:131:17:131:53 | After ... switch { ... } [null] | Switch.cs:131:17:131:53 | After ... switch { ... } [null] | 1 | +| Switch.cs:131:28:131:35 | After String s [match] | Switch.cs:131:40:131:40 | access to local variable s | 3 | +| Switch.cs:131:28:131:35 | After String s [no-match] | Switch.cs:131:48:131:51 | null | 7 | +| Switch.cs:134:9:134:11 | Entry | Switch.cs:139:18:139:18 | 1 | 7 | +| Switch.cs:134:9:134:11 | Normal Exit | Switch.cs:134:9:134:11 | Exit | 2 | +| Switch.cs:139:18:139:18 | After 1 [match] | Switch.cs:139:21:139:29 | return ...; | 5 | +| Switch.cs:139:18:139:18 | After 1 [no-match] | Switch.cs:140:18:140:18 | 2 | 4 | +| Switch.cs:140:18:140:18 | After 2 [match] | Switch.cs:140:21:140:29 | return ...; | 5 | +| Switch.cs:140:18:140:18 | After 2 [no-match] | Switch.cs:138:22:138:31 | return ...; | 10 | +| Switch.cs:144:9:144:11 | Entry | Switch.cs:148:18:148:18 | 1 | 7 | +| Switch.cs:144:9:144:11 | Normal Exit | Switch.cs:144:9:144:11 | Exit | 2 | +| Switch.cs:148:18:148:18 | After 1 [match] | Switch.cs:148:21:148:29 | return ...; | 5 | +| Switch.cs:148:18:148:18 | After 1 [no-match] | Switch.cs:150:18:150:18 | 2 | 4 | +| Switch.cs:150:18:150:18 | After 2 [match] | Switch.cs:150:21:150:29 | return ...; | 5 | +| Switch.cs:150:18:150:18 | After 2 [no-match] | Switch.cs:149:22:149:31 | return ...; | 10 | +| Switch.cs:154:10:154:12 | Entry | Switch.cs:156:28:156:31 | true | 10 | +| Switch.cs:156:17:156:54 | After ... switch { ... } | Switch.cs:157:13:157:13 | access to parameter b | 6 | +| Switch.cs:156:28:156:31 | After true [match] | Switch.cs:156:36:156:38 | "a" | 3 | +| Switch.cs:156:28:156:31 | After true [no-match] | Switch.cs:156:41:156:45 | false | 4 | +| Switch.cs:156:41:156:45 | After false [match] | Switch.cs:156:50:156:52 | "b" | 3 | +| Switch.cs:156:41:156:45 | After false [no-match] | Switch.cs:156:41:156:52 | After ... => ... [no-match] | 2 | +| Switch.cs:157:9:160:49 | After if (...) ... | Switch.cs:154:10:154:12 | Exit | 4 | +| Switch.cs:157:13:157:13 | After access to parameter b [false] | Switch.cs:160:13:160:49 | After ...; | 14 | +| Switch.cs:157:13:157:13 | After access to parameter b [true] | Switch.cs:158:13:158:49 | After ...; | 14 | +| Switch.cs:163:10:163:12 | Entry | Switch.cs:167:18:167:18 | 1 | 7 | +| Switch.cs:165:9:177:9 | After switch (...) {...} | Switch.cs:163:10:163:12 | Exit | 4 | +| Switch.cs:167:18:167:18 | After 1 [match] | Switch.cs:167:13:167:19 | After case ...: [match] | 2 | +| Switch.cs:167:18:167:18 | After 1 [no-match] | Switch.cs:168:18:168:18 | 2 | 4 | +| Switch.cs:168:18:168:18 | After 2 [match] | Switch.cs:168:13:168:19 | After case ...: [match] | 2 | +| Switch.cs:168:18:168:18 | After 2 [no-match] | Switch.cs:171:18:171:18 | 3 | 4 | +| Switch.cs:169:17:169:51 | ...; | Switch.cs:170:17:170:22 | break; | 8 | +| Switch.cs:171:18:171:18 | After 3 [match] | Switch.cs:173:17:173:22 | break; | 10 | +| Switch.cs:171:18:171:18 | After 3 [no-match] | Switch.cs:176:17:176:22 | break; | 12 | +| TypeAccesses.cs:1:7:1:18 | Entry | TypeAccesses.cs:1:7:1:18 | Exit | 11 | +| TypeAccesses.cs:3:10:3:10 | Entry | TypeAccesses.cs:7:13:7:22 | ... is ... | 27 | +| TypeAccesses.cs:7:9:7:25 | After if (...) ... | TypeAccesses.cs:3:10:3:10 | Exit | 11 | +| TypeAccesses.cs:7:13:7:22 | After ... is ... [false] | TypeAccesses.cs:7:13:7:22 | After ... is ... [false] | 1 | +| TypeAccesses.cs:7:13:7:22 | [MatchTrue] ... is ... | TypeAccesses.cs:7:25:7:25 | ; | 4 | +| VarDecls.cs:3:7:3:14 | Entry | VarDecls.cs:3:7:3:14 | Exit | 11 | +| VarDecls.cs:5:18:5:19 | Entry | VarDecls.cs:5:18:5:19 | Exit | 37 | +| VarDecls.cs:13:12:13:13 | Entry | VarDecls.cs:13:12:13:13 | Exit | 24 | +| VarDecls.cs:19:7:19:8 | Entry | VarDecls.cs:25:20:25:20 | access to parameter b | 27 | +| VarDecls.cs:25:20:25:20 | After access to parameter b [false] | VarDecls.cs:25:28:25:28 | access to local variable y | 2 | +| VarDecls.cs:25:20:25:20 | After access to parameter b [true] | VarDecls.cs:25:24:25:24 | access to local variable x | 2 | +| VarDecls.cs:25:20:25:28 | After ... ? ... : ... | VarDecls.cs:19:7:19:8 | Exit | 4 | +| VarDecls.cs:28:11:28:11 | Entry | VarDecls.cs:28:11:28:11 | Exit | 11 | +| VarDecls.cs:28:41:28:47 | Entry | VarDecls.cs:28:41:28:47 | Exit | 4 | +| cflow.cs:5:17:5:20 | Entry | cflow.cs:11:13:11:17 | ... > ... | 31 | +| cflow.cs:11:9:12:49 | After if (...) ... | cflow.cs:14:9:17:9 | while (...) ... | 2 | +| cflow.cs:11:13:11:17 | After ... > ... [false] | cflow.cs:11:13:11:17 | After ... > ... [false] | 1 | +| cflow.cs:11:13:11:17 | After ... > ... [true] | cflow.cs:12:13:12:49 | After ...; | 7 | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:14:16:14:20 | ... > ... | 5 | +| cflow.cs:14:16:14:20 | After ... > ... [false] | cflow.cs:19:9:22:25 | do ... while (...); | 3 | +| cflow.cs:14:16:14:20 | After ... > ... [true] | cflow.cs:15:9:17:9 | After {...} | 16 | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:22:18:22:23 | ... < ... | 19 | +| cflow.cs:22:18:22:23 | After ... < ... [false] | cflow.cs:24:18:24:22 | After Int32 i = ... | 8 | +| cflow.cs:22:18:22:23 | After ... < ... [true] | cflow.cs:22:18:22:23 | After ... < ... [true] | 1 | +| cflow.cs:24:25:24:31 | After ... <= ... [false] | cflow.cs:5:17:5:20 | Exit | 5 | +| cflow.cs:24:25:24:31 | After ... <= ... [true] | cflow.cs:26:17:26:26 | ... == ... | 12 | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:24:25:24:31 | ... <= ... | 4 | +| cflow.cs:26:13:33:37 | After if (...) ... | cflow.cs:24:34:24:36 | After ...++ | 7 | +| cflow.cs:26:17:26:26 | After ... == ... [false] | cflow.cs:26:17:26:26 | After ... == ... [false] | 1 | +| cflow.cs:26:17:26:26 | After ... == ... [true] | cflow.cs:26:31:26:40 | ... == ... | 9 | +| cflow.cs:26:17:26:40 | After ... && ... [false] | cflow.cs:28:22:28:31 | ... == ... | 10 | +| cflow.cs:26:31:26:40 | After ... == ... [false] | cflow.cs:26:31:26:40 | After ... == ... [false] | 1 | +| cflow.cs:26:31:26:40 | After ... == ... [true] | cflow.cs:27:17:27:46 | After ...; | 8 | +| cflow.cs:28:18:33:37 | After if (...) ... | cflow.cs:28:18:33:37 | After if (...) ... | 1 | +| cflow.cs:28:22:28:31 | After ... == ... [false] | cflow.cs:30:22:30:31 | ... == ... | 10 | +| cflow.cs:28:22:28:31 | After ... == ... [true] | cflow.cs:29:17:29:42 | After ...; | 7 | +| cflow.cs:30:18:33:37 | After if (...) ... | cflow.cs:30:18:33:37 | After if (...) ... | 1 | +| cflow.cs:30:22:30:31 | After ... == ... [false] | cflow.cs:33:17:33:37 | After ...; | 7 | +| cflow.cs:30:22:30:31 | After ... == ... [true] | cflow.cs:31:17:31:42 | After ...; | 7 | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:41:18:41:18 | 1 | 7 | +| cflow.cs:37:17:37:22 | Exit | cflow.cs:37:17:37:22 | Exit | 1 | +| cflow.cs:39:9:50:9 | After switch (...) {...} | cflow.cs:53:18:53:19 | 42 | 5 | +| cflow.cs:41:13:41:19 | After case ...: [match] | cflow.cs:43:17:43:28 | goto case ...; | 10 | +| cflow.cs:41:18:41:18 | After 1 [match] | cflow.cs:41:18:41:18 | After 1 [match] | 1 | +| cflow.cs:41:18:41:18 | After 1 [no-match] | cflow.cs:44:18:44:18 | 2 | 4 | +| cflow.cs:44:13:44:19 | After case ...: [match] | cflow.cs:46:17:46:28 | goto case ...; | 10 | +| cflow.cs:44:18:44:18 | After 2 [match] | cflow.cs:44:18:44:18 | After 2 [match] | 1 | +| cflow.cs:44:18:44:18 | After 2 [no-match] | cflow.cs:47:18:47:18 | 3 | 4 | +| cflow.cs:47:18:47:18 | After 3 [match] | cflow.cs:49:17:49:22 | break; | 10 | +| cflow.cs:47:18:47:18 | After 3 [no-match] | cflow.cs:47:13:47:19 | After case ...: [no-match] | 2 | +| cflow.cs:51:9:59:9 | After switch (...) {...} | cflow.cs:62:18:62:18 | 0 | 11 | +| cflow.cs:53:18:53:19 | After 42 [match] | cflow.cs:55:17:55:22 | break; | 10 | +| cflow.cs:53:18:53:19 | After 42 [no-match] | cflow.cs:58:17:58:22 | break; | 12 | +| cflow.cs:60:9:66:9 | After switch (...) {...} | cflow.cs:37:17:37:22 | Normal Exit | 5 | +| cflow.cs:62:18:62:18 | After 0 [match] | cflow.cs:63:23:63:33 | ... == ... | 11 | +| cflow.cs:62:18:62:18 | After 0 [no-match] | cflow.cs:62:13:62:19 | After case ...: [no-match] | 2 | +| cflow.cs:63:23:63:33 | After ... == ... [false] | cflow.cs:37:17:37:22 | Exceptional Exit | 8 | +| cflow.cs:63:23:63:33 | After ... == ... [true] | cflow.cs:65:17:65:22 | break; | 5 | +| cflow.cs:70:18:70:18 | Entry | cflow.cs:72:13:72:21 | ... == ... | 8 | +| cflow.cs:70:18:70:18 | Normal Exit | cflow.cs:70:18:70:18 | Exit | 2 | +| cflow.cs:72:13:72:21 | After ... == ... [false] | cflow.cs:74:13:74:24 | ... > ... | 10 | +| cflow.cs:72:13:72:21 | After ... == ... [true] | cflow.cs:73:13:73:19 | return ...; | 3 | +| cflow.cs:74:9:81:9 | After if (...) ... | cflow.cs:71:5:82:5 | After {...} | 2 | +| cflow.cs:74:13:74:24 | After ... > ... [false] | cflow.cs:79:9:81:9 | After {...} | 9 | +| cflow.cs:74:13:74:24 | After ... > ... [true] | cflow.cs:75:9:77:9 | After {...} | 9 | +| cflow.cs:84:18:84:19 | Entry | cflow.cs:86:13:86:21 | ... != ... | 9 | +| cflow.cs:86:9:87:33 | After if (...) ... | cflow.cs:84:18:84:19 | Exit | 4 | +| cflow.cs:86:13:86:21 | After ... != ... [false] | cflow.cs:86:13:86:21 | After ... != ... [false] | 1 | +| cflow.cs:86:13:86:21 | After ... != ... [true] | cflow.cs:86:26:86:37 | ... > ... | 8 | +| cflow.cs:86:13:86:37 | After ... && ... [false] | cflow.cs:86:13:86:37 | After ... && ... [false] | 1 | +| cflow.cs:86:26:86:37 | After ... > ... [false] | cflow.cs:86:26:86:37 | After ... > ... [false] | 1 | +| cflow.cs:86:26:86:37 | After ... > ... [true] | cflow.cs:87:13:87:33 | After ...; | 8 | +| cflow.cs:90:18:90:19 | Entry | cflow.cs:92:13:92:27 | call to method Equals | 8 | +| cflow.cs:90:18:90:19 | Exit | cflow.cs:90:18:90:19 | Exit | 1 | +| cflow.cs:92:13:92:27 | After call to method Equals [false] | cflow.cs:96:13:96:25 | ... != ... | 16 | +| cflow.cs:92:13:92:27 | After call to method Equals [true] | cflow.cs:90:18:90:19 | Exceptional Exit | 8 | +| cflow.cs:96:9:97:55 | After if (...) ... | cflow.cs:99:13:99:25 | ... != ... | 9 | +| cflow.cs:96:13:96:25 | After ... != ... [false] | cflow.cs:96:13:96:25 | After ... != ... [false] | 1 | +| cflow.cs:96:13:96:25 | After ... != ... [true] | cflow.cs:97:13:97:55 | After ...; | 12 | +| cflow.cs:99:9:100:42 | After if (...) ... | cflow.cs:102:13:102:29 | ... != ... | 9 | +| cflow.cs:99:13:99:25 | After ... != ... [false] | cflow.cs:99:13:99:25 | After ... != ... [false] | 1 | +| cflow.cs:99:13:99:25 | After ... != ... [true] | cflow.cs:100:13:100:42 | After ...; | 10 | +| cflow.cs:102:9:103:36 | After if (...) ... | cflow.cs:90:18:90:19 | Normal Exit | 3 | +| cflow.cs:102:13:102:29 | After ... != ... [false] | cflow.cs:102:13:102:29 | After ... != ... [false] | 1 | +| cflow.cs:102:13:102:29 | After ... != ... [true] | cflow.cs:103:13:103:36 | After ...; | 10 | +| cflow.cs:106:18:106:19 | Entry | cflow.cs:108:13:108:21 | ... != ... | 8 | +| cflow.cs:108:13:108:21 | After ... != ... [false] | cflow.cs:106:18:106:19 | Exit | 11 | +| cflow.cs:108:13:108:21 | After ... != ... [true] | cflow.cs:110:13:113:13 | while (...) ... | 3 | +| cflow.cs:110:13:113:13 | [LoopHeader] while (...) ... | cflow.cs:111:13:113:13 | After {...} | 11 | +| cflow.cs:119:20:119:21 | Entry | cflow.cs:119:20:119:21 | Exit | 26 | +| cflow.cs:127:19:127:21 | Entry | cflow.cs:127:32:127:44 | ... == ... | 11 | +| cflow.cs:127:32:127:44 | After ... == ... [false] | cflow.cs:127:53:127:57 | After access to field Field | 5 | +| cflow.cs:127:32:127:44 | After ... == ... [true] | cflow.cs:127:48:127:49 | "" | 2 | +| cflow.cs:127:32:127:57 | After ... ? ... : ... | cflow.cs:127:19:127:21 | Exit | 4 | +| cflow.cs:127:62:127:64 | Entry | cflow.cs:127:62:127:64 | Exit | 16 | +| cflow.cs:129:5:129:15 | Entry | cflow.cs:129:5:129:15 | Exit | 23 | +| cflow.cs:134:5:134:15 | Entry | cflow.cs:134:5:134:15 | Exit | 16 | +| cflow.cs:136:12:136:22 | Entry | cflow.cs:136:12:136:22 | Exit | 12 | +| cflow.cs:138:40:138:40 | Entry | cflow.cs:138:40:138:40 | Exit | 15 | +| cflow.cs:144:33:144:35 | Entry | cflow.cs:144:33:144:35 | Exit | 15 | +| cflow.cs:144:56:144:58 | Entry | cflow.cs:144:56:144:58 | Exit | 6 | +| cflow.cs:146:10:146:12 | Entry | cflow.cs:149:9:150:33 | for (...;...;...) ... | 10 | +| cflow.cs:149:16:149:21 | After ... < ... [false] | cflow.cs:152:9:157:9 | for (...;...;...) ... | 3 | +| cflow.cs:149:16:149:21 | After ... < ... [true] | cflow.cs:149:24:149:26 | After ++... | 12 | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:149:16:149:21 | ... < ... | 4 | +| cflow.cs:153:9:157:9 | {...} | cflow.cs:155:17:155:22 | ... > ... | 12 | +| cflow.cs:155:17:155:22 | After ... > ... [false] | cflow.cs:152:18:152:20 | After ...++ | 8 | +| cflow.cs:155:17:155:22 | After ... > ... [true] | cflow.cs:159:9:165:9 | for (...;...;...) ... | 5 | +| cflow.cs:160:9:165:9 | {...} | cflow.cs:163:17:163:22 | ... > ... | 18 | +| cflow.cs:163:17:163:22 | After ... > ... [false] | cflow.cs:159:9:165:9 | [LoopHeader] for (...;...;...) ... | 4 | +| cflow.cs:163:17:163:22 | After ... > ... [true] | cflow.cs:167:9:171:9 | for (...;...;...) ... | 5 | +| cflow.cs:167:16:167:21 | After ... < ... [false] | cflow.cs:173:25:173:29 | After Int32 j = ... | 13 | +| cflow.cs:167:16:167:21 | After ... < ... [true] | cflow.cs:167:9:171:9 | [LoopHeader] for (...;...;...) ... | 16 | +| cflow.cs:167:16:167:21 | Before ... < ... | cflow.cs:167:16:167:21 | ... < ... | 4 | +| cflow.cs:173:32:173:41 | After ... < ... [false] | cflow.cs:146:10:146:12 | Exit | 5 | +| cflow.cs:173:32:173:41 | After ... < ... [true] | cflow.cs:173:49:173:51 | After ...++ | 22 | +| cflow.cs:173:32:173:41 | Before ... < ... | cflow.cs:173:32:173:41 | ... < ... | 8 | +| cflow.cs:179:10:179:16 | Entry | cflow.cs:179:10:179:16 | Exit | 19 | +| cflow.cs:181:28:181:37 | Entry | cflow.cs:181:28:181:37 | Exit | 9 | +| cflow.cs:182:28:182:61 | Entry | cflow.cs:182:28:182:61 | Exit | 12 | +| cflow.cs:185:10:185:18 | Entry | cflow.cs:187:13:187:18 | ... == ... | 9 | +| cflow.cs:187:9:190:52 | After if (...) ... | cflow.cs:185:10:185:18 | Exit | 4 | +| cflow.cs:187:13:187:18 | After ... == ... [false] | cflow.cs:187:23:187:28 | ... == ... | 5 | +| cflow.cs:187:13:187:18 | After ... == ... [true] | cflow.cs:187:13:187:18 | After ... == ... [true] | 1 | +| cflow.cs:187:13:187:28 | After ... \|\| ... [true] | cflow.cs:187:13:187:28 | After ... \|\| ... [true] | 1 | +| cflow.cs:187:13:187:50 | After ... \|\| ... [true] | cflow.cs:188:13:188:55 | After ...; | 7 | +| cflow.cs:187:23:187:28 | After ... == ... [false] | cflow.cs:187:34:187:39 | ... == ... | 7 | +| cflow.cs:187:23:187:28 | After ... == ... [true] | cflow.cs:187:23:187:28 | After ... == ... [true] | 1 | +| cflow.cs:187:34:187:39 | After ... == ... [false] | cflow.cs:187:34:187:39 | After ... == ... [false] | 1 | +| cflow.cs:187:34:187:39 | After ... == ... [true] | cflow.cs:187:44:187:49 | ... == ... | 5 | +| cflow.cs:187:34:187:49 | After ... && ... [false] | cflow.cs:190:13:190:52 | After ...; | 8 | +| cflow.cs:187:44:187:49 | After ... == ... [false] | cflow.cs:187:44:187:49 | After ... == ... [false] | 1 | +| cflow.cs:187:44:187:49 | After ... == ... [true] | cflow.cs:187:34:187:49 | After ... && ... [true] | 2 | +| cflow.cs:193:10:193:17 | Entry | cflow.cs:195:17:195:32 | ... > ... | 16 | +| cflow.cs:193:10:193:17 | Exit | cflow.cs:193:10:193:17 | Exit | 1 | +| cflow.cs:195:17:195:32 | After ... > ... [false] | cflow.cs:195:17:195:32 | After ... > ... [false] | 1 | +| cflow.cs:195:17:195:32 | After ... > ... [true] | cflow.cs:195:37:195:56 | After !... | 14 | +| cflow.cs:195:17:195:56 | After ... && ... | cflow.cs:197:15:197:31 | ... == ... | 17 | +| cflow.cs:197:9:198:49 | After if (...) ... | cflow.cs:200:15:200:31 | ... == ... | 14 | +| cflow.cs:197:15:197:31 | After ... == ... [false] | cflow.cs:197:13:197:47 | After !... [false] | 5 | +| cflow.cs:197:15:197:31 | After ... == ... [true] | cflow.cs:198:17:198:33 | ... == ... | 19 | +| cflow.cs:198:17:198:33 | After ... == ... [false] | cflow.cs:198:45:198:48 | true | 2 | +| cflow.cs:198:17:198:33 | After ... == ... [true] | cflow.cs:198:37:198:41 | false | 2 | +| cflow.cs:198:17:198:48 | After ... ? ... : ... | cflow.cs:198:13:198:49 | After ...; | 4 | +| cflow.cs:200:13:200:62 | After ... \|\| ... [true] | cflow.cs:193:10:193:17 | Exceptional Exit | 9 | +| cflow.cs:200:15:200:31 | After ... == ... [false] | cflow.cs:200:13:200:32 | After !... [true] | 2 | +| cflow.cs:200:15:200:31 | After ... == ... [true] | cflow.cs:200:40:200:56 | ... == ... | 15 | +| cflow.cs:200:40:200:56 | After ... == ... [false] | cflow.cs:200:40:200:56 | After ... == ... [false] | 1 | +| cflow.cs:200:40:200:56 | After ... == ... [true] | cflow.cs:200:61:200:61 | access to local variable b | 2 | +| cflow.cs:200:40:200:61 | After ... && ... [false] | cflow.cs:193:10:193:17 | Normal Exit | 7 | +| cflow.cs:200:61:200:61 | After access to local variable b [false] | cflow.cs:200:61:200:61 | After access to local variable b [false] | 1 | +| cflow.cs:200:61:200:61 | After access to local variable b [true] | cflow.cs:200:37:200:62 | After !... [true] | 4 | +| cflow.cs:208:10:208:11 | Entry | cflow.cs:210:9:221:36 | do ... while (...); | 3 | +| cflow.cs:210:9:221:36 | After do ... while (...); | cflow.cs:208:10:208:11 | Exit | 4 | +| cflow.cs:210:9:221:36 | [LoopHeader] do ... while (...); | cflow.cs:221:18:221:34 | ... < ... | 11 | +| cflow.cs:211:9:221:9 | {...} | cflow.cs:213:17:213:32 | ... > ... | 22 | +| cflow.cs:213:17:213:32 | After ... > ... [false] | cflow.cs:217:17:217:32 | ... < ... | 13 | +| cflow.cs:213:17:213:32 | After ... > ... [true] | cflow.cs:215:17:215:25 | continue; | 4 | +| cflow.cs:217:17:217:32 | After ... < ... [false] | cflow.cs:211:9:221:9 | After {...} | 3 | +| cflow.cs:217:17:217:32 | After ... < ... [true] | cflow.cs:219:17:219:22 | break; | 4 | +| cflow.cs:221:18:221:34 | After ... < ... [false] | cflow.cs:221:18:221:34 | After ... < ... [false] | 1 | +| cflow.cs:221:18:221:34 | After ... < ... [true] | cflow.cs:221:18:221:34 | After ... < ... [true] | 1 | +| cflow.cs:224:10:224:16 | Entry | cflow.cs:226:27:226:64 | call to method Repeat | 7 | +| cflow.cs:226:9:237:9 | After foreach (... ... in ...) ... | cflow.cs:224:10:224:16 | Exit | 4 | +| cflow.cs:226:9:237:9 | [LoopHeader] foreach (... ... in ...) ... | cflow.cs:226:9:237:9 | [LoopHeader] foreach (... ... in ...) ... | 1 | +| cflow.cs:226:22:226:22 | String x | cflow.cs:229:17:229:32 | ... > ... | 23 | +| cflow.cs:226:27:226:64 | After call to method Repeat [empty] | cflow.cs:226:27:226:64 | After call to method Repeat [empty] | 1 | +| cflow.cs:226:27:226:64 | After call to method Repeat [non-empty] | cflow.cs:226:27:226:64 | After call to method Repeat [non-empty] | 1 | +| cflow.cs:229:17:229:32 | After ... > ... [false] | cflow.cs:233:17:233:32 | ... < ... | 13 | +| cflow.cs:229:17:229:32 | After ... > ... [true] | cflow.cs:231:17:231:25 | continue; | 4 | +| cflow.cs:233:17:233:32 | After ... < ... [false] | cflow.cs:227:9:237:9 | After {...} | 3 | +| cflow.cs:233:17:233:32 | After ... < ... [true] | cflow.cs:235:17:235:22 | break; | 4 | +| cflow.cs:240:10:240:13 | Entry | cflow.cs:241:5:259:5 | {...} | 2 | +| cflow.cs:242:5:242:9 | Label: | cflow.cs:242:19:242:35 | ... == ... | 14 | +| cflow.cs:242:12:242:41 | After if (...) ... | cflow.cs:244:13:244:28 | ... > ... | 12 | +| cflow.cs:242:19:242:35 | After ... == ... [false] | cflow.cs:242:16:242:36 | After !... [false] | 3 | +| cflow.cs:242:19:242:35 | After ... == ... [true] | cflow.cs:242:39:242:41 | {...} | 4 | +| cflow.cs:244:13:244:28 | After ... > ... [false] | cflow.cs:248:18:248:18 | 0 | 16 | +| cflow.cs:244:13:244:28 | After ... > ... [true] | cflow.cs:244:31:244:41 | goto ...; | 3 | +| cflow.cs:246:9:258:9 | After switch (...) {...} | cflow.cs:240:10:240:13 | Exit | 4 | +| cflow.cs:248:18:248:18 | After 0 [match] | cflow.cs:249:17:249:29 | goto default; | 4 | +| cflow.cs:248:18:248:18 | After 0 [no-match] | cflow.cs:250:18:250:18 | 1 | 4 | +| cflow.cs:250:18:250:18 | After 1 [match] | cflow.cs:252:17:252:22 | break; | 10 | +| cflow.cs:250:18:250:18 | After 1 [no-match] | cflow.cs:253:18:253:18 | 2 | 4 | +| cflow.cs:253:18:253:18 | After 2 [match] | cflow.cs:254:17:254:27 | goto ...; | 4 | +| cflow.cs:253:18:253:18 | After 2 [no-match] | cflow.cs:255:13:255:20 | default: | 3 | +| cflow.cs:255:13:255:20 | After default: [match] | cflow.cs:257:17:257:22 | break; | 9 | +| cflow.cs:261:49:261:53 | Entry | cflow.cs:264:18:264:22 | After Int32 i = ... | 12 | +| cflow.cs:261:49:261:53 | Exceptional Exit | cflow.cs:261:49:261:53 | Exceptional Exit | 1 | +| cflow.cs:261:49:261:53 | Exit | cflow.cs:261:49:261:53 | Exit | 1 | +| cflow.cs:261:49:261:53 | Normal Exit | cflow.cs:261:49:261:53 | Normal Exit | 1 | +| cflow.cs:264:25:264:30 | After ... < ... [false] | cflow.cs:274:9:276:9 | After {...} | 14 | +| cflow.cs:264:25:264:30 | After ... < ... [true] | cflow.cs:264:33:264:35 | After ...++ | 12 | +| cflow.cs:264:25:264:30 | Before ... < ... | cflow.cs:264:25:264:30 | ... < ... | 4 | +| cflow.cs:268:9:276:9 | After try {...} ... | cflow.cs:262:5:277:5 | After {...} | 2 | +| cflow.cs:282:5:282:18 | Entry | cflow.cs:282:5:282:18 | Exit | 11 | +| cflow.cs:284:5:284:18 | Entry | cflow.cs:284:5:284:18 | Exit | 8 | +| cflow.cs:286:5:286:18 | Entry | cflow.cs:286:5:286:18 | Exit | 12 | +| cflow.cs:289:7:289:18 | Entry | cflow.cs:289:7:289:18 | Exit | 11 | +| cflow.cs:291:12:291:12 | Entry | cflow.cs:291:12:291:12 | Exit | 9 | +| cflow.cs:296:5:296:25 | Entry | cflow.cs:296:5:296:25 | Exit | 14 | +| cflow.cs:298:10:298:10 | Entry | cflow.cs:300:46:300:50 | ... > ... | 14 | +| cflow.cs:300:44:300:64 | After ... && ... | cflow.cs:298:10:298:10 | Exit | 8 | +| cflow.cs:300:46:300:50 | After ... > ... [false] | cflow.cs:300:56:300:64 | After ... != ... | 7 | +| cflow.cs:300:46:300:50 | After ... > ... [true] | cflow.cs:300:44:300:51 | After !... [false] | 2 | +| cflow.cs:304:7:304:18 | Entry | cflow.cs:304:7:304:18 | Exit | 11 | +| cflow.cs:306:60:310:5 | Entry | cflow.cs:306:60:310:5 | Exit | 4 | +| cflow.cs:306:60:310:5 | Entry | cflow.cs:306:60:310:5 | Exit | 16 | diff --git a/csharp/ql/test/library-tests/controlflow/graph/CONSISTENCY/CfgConsistency.expected b/csharp/ql/test/library-tests/controlflow/graph/CONSISTENCY/CfgConsistency.expected deleted file mode 100644 index ff3ec45f5cea..000000000000 --- a/csharp/ql/test/library-tests/controlflow/graph/CONSISTENCY/CfgConsistency.expected +++ /dev/null @@ -1,6 +0,0 @@ -multipleSuccessors -| BreakInTry.cs:31:21:31:32 | ... == ... | false | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | -| BreakInTry.cs:31:21:31:32 | ... == ... | false | BreakInTry.cs:35:7:35:7 | ; | -simpleAndNormalSuccessors -| BreakInTry.cs:32:21:32:21 | ; | break | successor | BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | -| Finally.cs:97:21:97:23 | ...-- | break | successor | Finally.cs:74:10:74:11 | exit M4 (normal) | Finally.cs:77:16:77:16 | access to local variable i | diff --git a/csharp/ql/test/library-tests/controlflow/graph/Common.qll b/csharp/ql/test/library-tests/controlflow/graph/Common.qll index f6f9b26f1cdd..0df87ac46701 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/Common.qll +++ b/csharp/ql/test/library-tests/controlflow/graph/Common.qll @@ -10,14 +10,14 @@ class SourceControlFlowElement extends ControlFlowElement { } } -class SourceControlFlowNode extends ControlFlow::Node { +class SourceControlFlowNode extends ControlFlowNode { SourceControlFlowNode() { not this.getLocation().getFile() instanceof StubFile and not this.getLocation().getFile().fromLibrary() } } -class SourceBasicBlock extends ControlFlow::BasicBlock { +class SourceBasicBlock extends BasicBlock { SourceBasicBlock() { not this.getLocation().getFile() instanceof StubFile and not this.getLocation().getFile().fromLibrary() diff --git a/csharp/ql/test/library-tests/controlflow/graph/Condition.expected b/csharp/ql/test/library-tests/controlflow/graph/Condition.expected index cda25b6abd12..4ed3508dd690 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/Condition.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/Condition.expected @@ -1,1454 +1,1515 @@ conditionBlock -| Assert.cs:7:10:7:11 | enter M1 | Assert.cs:9:24:9:27 | null | true | -| Assert.cs:7:10:7:11 | enter M1 | Assert.cs:9:31:9:32 | "" | false | -| Assert.cs:14:10:14:11 | enter M2 | Assert.cs:16:24:16:27 | null | true | -| Assert.cs:14:10:14:11 | enter M2 | Assert.cs:16:31:16:32 | "" | false | -| Assert.cs:21:10:21:11 | enter M3 | Assert.cs:23:24:23:27 | null | true | -| Assert.cs:21:10:21:11 | enter M3 | Assert.cs:23:31:23:32 | "" | false | -| Assert.cs:28:10:28:11 | enter M4 | Assert.cs:30:24:30:27 | null | true | -| Assert.cs:28:10:28:11 | enter M4 | Assert.cs:30:31:30:32 | "" | false | -| Assert.cs:35:10:35:11 | enter M5 | Assert.cs:37:24:37:27 | null | true | -| Assert.cs:35:10:35:11 | enter M5 | Assert.cs:37:31:37:32 | "" | false | -| Assert.cs:42:10:42:11 | enter M6 | Assert.cs:44:24:44:27 | null | true | -| Assert.cs:42:10:42:11 | enter M6 | Assert.cs:44:31:44:32 | "" | false | -| Assert.cs:49:10:49:11 | enter M7 | Assert.cs:51:24:51:27 | null | true | -| Assert.cs:49:10:49:11 | enter M7 | Assert.cs:51:31:51:32 | "" | false | -| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:58:24:58:27 | null | true | -| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:58:31:58:32 | "" | false | -| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:59:36:59:36 | access to parameter b | true | -| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:65:24:65:27 | null | true | -| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:65:31:65:32 | "" | false | -| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:66:37:66:37 | access to parameter b | false | -| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:72:24:72:27 | null | true | -| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:72:31:72:32 | "" | false | -| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:73:36:73:36 | access to parameter b | true | -| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:79:24:79:27 | null | true | -| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:79:31:79:32 | "" | false | -| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:80:37:80:37 | access to parameter b | false | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:86:24:86:27 | null | true | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:86:31:86:32 | "" | false | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:90:17:90:20 | null | true | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:90:24:90:25 | "" | false | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:94:17:94:20 | null | true | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:94:24:94:25 | "" | false | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:98:17:98:20 | null | true | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:98:24:98:25 | "" | false | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:102:17:102:20 | null | true | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:102:24:102:25 | "" | false | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:106:17:106:20 | null | true | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:106:24:106:25 | "" | false | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:110:17:110:20 | null | true | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:110:24:110:25 | "" | false | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:114:17:114:20 | null | true | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:114:24:114:25 | "" | false | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | true | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:118:17:118:20 | null | true | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:118:24:118:25 | "" | false | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | false | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:122:17:122:20 | null | true | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:122:24:122:25 | "" | false | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | true | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:126:17:126:20 | null | true | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:126:24:126:25 | "" | false | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | false | -| BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | BreakInTry.cs:7:26:7:28 | String arg | false | -| BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | BreakInTry.cs:10:21:10:26 | break; | false | -| BreakInTry.cs:7:26:7:28 | String arg | BreakInTry.cs:10:21:10:26 | break; | true | -| BreakInTry.cs:14:9:17:9 | {...} | BreakInTry.cs:16:17:16:17 | ; | true | -| BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:22:22:22:24 | String arg | false | -| BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:27:21:27:26 | break; | false | -| BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:30:13:33:13 | {...} | false | -| BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:32:21:32:21 | ; | false | -| BreakInTry.cs:22:22:22:24 | String arg | BreakInTry.cs:27:21:27:26 | break; | true | -| BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:32:21:32:21 | ; | true | -| BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:43:17:43:23 | return ...; | true | -| BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:47:26:47:28 | String arg | false | -| BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:50:21:50:26 | break; | false | -| BreakInTry.cs:47:26:47:28 | String arg | BreakInTry.cs:50:21:50:26 | break; | true | -| BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:61:17:61:23 | return ...; | true | -| BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:65:26:65:28 | String arg | false | -| BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:68:21:68:26 | break; | false | -| BreakInTry.cs:65:26:65:28 | String arg | BreakInTry.cs:68:21:68:26 | break; | true | -| ConditionalAccess.cs:3:12:3:13 | enter M1 | ConditionalAccess.cs:3:26:3:38 | call to method ToString | false | -| ConditionalAccess.cs:3:12:3:13 | enter M1 | ConditionalAccess.cs:3:26:3:49 | call to method ToLower | false | -| ConditionalAccess.cs:3:26:3:38 | call to method ToString | ConditionalAccess.cs:3:26:3:49 | call to method ToLower | false | -| ConditionalAccess.cs:5:10:5:11 | enter M2 | ConditionalAccess.cs:5:26:5:34 | access to property Length | false | -| ConditionalAccess.cs:7:10:7:11 | enter M3 | ConditionalAccess.cs:7:39:7:46 | ... ?? ... | false | -| ConditionalAccess.cs:7:10:7:11 | enter M3 | ConditionalAccess.cs:7:39:7:46 | [non-null] ... ?? ... | true | -| ConditionalAccess.cs:7:10:7:11 | enter M3 | ConditionalAccess.cs:7:39:7:46 | [null] ... ?? ... | true | -| ConditionalAccess.cs:7:10:7:11 | enter M3 | ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | true | -| ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | ConditionalAccess.cs:7:39:7:46 | [non-null] ... ?? ... | false | -| ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | ConditionalAccess.cs:7:39:7:46 | [null] ... ?? ... | true | -| ConditionalAccess.cs:9:9:9:10 | enter M4 | ConditionalAccess.cs:9:25:9:33 | access to property Length | false | -| ConditionalAccess.cs:11:9:11:10 | enter M5 | ConditionalAccess.cs:13:13:13:21 | access to property Length | false | -| ConditionalAccess.cs:13:25:13:25 | 0 | ConditionalAccess.cs:14:20:14:20 | 0 | true | -| ConditionalAccess.cs:13:25:13:25 | 0 | ConditionalAccess.cs:16:20:16:20 | 1 | false | -| ConditionalAccess.cs:19:12:19:13 | enter M6 | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | false | -| ConditionalAccess.cs:21:10:21:11 | enter M7 | ConditionalAccess.cs:23:13:23:38 | Nullable j = ... | true | -| ConditionalAccess.cs:21:10:21:11 | enter M7 | ConditionalAccess.cs:24:17:24:37 | call to method ToString | true | -| ConditionalAccess.cs:21:10:21:11 | enter M7 | ConditionalAccess.cs:25:31:25:31 | access to local variable s | true | -| ConditionalAccess.cs:23:13:23:38 | Nullable j = ... | ConditionalAccess.cs:24:17:24:37 | call to method ToString | false | -| ConditionalAccess.cs:23:13:23:38 | Nullable j = ... | ConditionalAccess.cs:25:31:25:31 | access to local variable s | false | -| ConditionalAccess.cs:24:17:24:37 | call to method ToString | ConditionalAccess.cs:25:31:25:31 | access to local variable s | false | -| ConditionalAccess.cs:32:10:32:11 | enter M8 | ConditionalAccess.cs:35:9:35:24 | call to method Out | false | -| ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:48:24:48:25 | 42 | false | -| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:49:26:49:32 | "Hello" | false | -| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:50:13:50:13 | 0 | false | -| ConditionalAccess.cs:51:9:51:16 | access to property Prop | ConditionalAccess.cs:51:30:51:31 | 84 | false | -| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:51:9:51:16 | access to property Prop | false | -| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:51:30:51:31 | 84 | false | -| ConditionalAccess.cs:52:9:52:16 | access to property Prop | ConditionalAccess.cs:52:32:52:38 | "World" | false | -| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:52:9:52:16 | access to property Prop | false | -| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:52:32:52:38 | "World" | false | -| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:53:9:53:20 | access to field IntField | false | -| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | false | -| Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:6:13:6:16 | ...; | true | -| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:7:13:7:16 | [false] !... | true | -| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:7:13:7:16 | [true] !... | false | -| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:8:13:8:16 | ...; | false | -| Conditions.cs:7:13:7:16 | [true] !... | Conditions.cs:8:13:8:16 | ...; | true | -| Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:15:13:15:16 | ...; | true | -| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:17:13:18:20 | if (...) ... | true | -| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:17:17:17:18 | [false] !... | true | -| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:17:17:17:18 | [true] !... | true | -| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:18:17:18:20 | ...; | true | -| Conditions.cs:17:13:18:20 | if (...) ... | Conditions.cs:17:17:17:18 | [false] !... | true | -| Conditions.cs:17:13:18:20 | if (...) ... | Conditions.cs:17:17:17:18 | [true] !... | false | -| Conditions.cs:17:13:18:20 | if (...) ... | Conditions.cs:18:17:18:20 | ...; | false | -| Conditions.cs:17:17:17:18 | [true] !... | Conditions.cs:18:17:18:20 | ...; | true | -| Conditions.cs:22:9:22:10 | enter M2 | Conditions.cs:26:13:27:20 | if (...) ... | true | -| Conditions.cs:22:9:22:10 | enter M2 | Conditions.cs:27:17:27:20 | ...; | true | -| Conditions.cs:26:13:27:20 | if (...) ... | Conditions.cs:27:17:27:20 | ...; | true | -| Conditions.cs:28:9:29:16 | if (...) ... | Conditions.cs:29:13:29:16 | ...; | true | -| Conditions.cs:33:9:33:10 | enter M3 | Conditions.cs:38:13:38:20 | ...; | true | -| Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:40:13:40:16 | ...; | true | -| Conditions.cs:41:9:42:16 | if (...) ... | Conditions.cs:42:13:42:16 | ...; | true | -| Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:50:9:53:9 | {...} | true | -| Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:52:17:52:20 | ...; | true | -| Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:54:16:54:16 | access to local variable y | false | -| Conditions.cs:50:9:53:9 | {...} | Conditions.cs:52:17:52:20 | ...; | true | -| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:61:9:64:9 | {...} | true | -| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:63:17:63:20 | ...; | true | -| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:65:9:66:16 | if (...) ... | false | -| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:66:13:66:16 | ...; | false | -| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:67:16:67:16 | access to local variable y | false | -| Conditions.cs:61:9:64:9 | {...} | Conditions.cs:63:17:63:20 | ...; | true | -| Conditions.cs:65:9:66:16 | if (...) ... | Conditions.cs:66:13:66:16 | ...; | true | -| Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:74:22:74:22 | String _ | false | -| Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:77:17:77:20 | ...; | false | -| Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:78:13:79:26 | if (...) ... | false | -| Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:79:17:79:26 | ...; | false | -| Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:81:9:82:16 | if (...) ... | true | -| Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:82:13:82:16 | ...; | true | -| Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:83:16:83:16 | access to local variable x | true | -| Conditions.cs:74:22:74:22 | String _ | Conditions.cs:77:17:77:20 | ...; | true | -| Conditions.cs:78:13:79:26 | if (...) ... | Conditions.cs:79:17:79:26 | ...; | true | -| Conditions.cs:81:9:82:16 | if (...) ... | Conditions.cs:82:13:82:16 | ...; | true | -| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:90:22:90:22 | String _ | false | -| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:93:17:93:20 | ...; | false | -| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:94:13:95:26 | if (...) ... | false | -| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:95:17:95:26 | ...; | false | -| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:96:13:97:20 | if (...) ... | false | -| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:97:17:97:20 | ...; | false | -| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:99:16:99:16 | access to local variable x | true | -| Conditions.cs:90:22:90:22 | String _ | Conditions.cs:93:17:93:20 | ...; | true | -| Conditions.cs:94:13:95:26 | if (...) ... | Conditions.cs:95:17:95:26 | ...; | true | -| Conditions.cs:96:13:97:20 | if (...) ... | Conditions.cs:97:17:97:20 | ...; | true | -| Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:106:13:106:20 | ...; | true | -| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:108:13:109:24 | if (...) ... | true | -| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:108:17:108:18 | [false] !... | true | -| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:108:17:108:18 | [true] !... | true | -| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:109:17:109:24 | ...; | true | -| Conditions.cs:108:13:109:24 | if (...) ... | Conditions.cs:108:17:108:18 | [false] !... | true | -| Conditions.cs:108:13:109:24 | if (...) ... | Conditions.cs:108:17:108:18 | [true] !... | false | -| Conditions.cs:108:13:109:24 | if (...) ... | Conditions.cs:109:17:109:24 | ...; | false | -| Conditions.cs:108:17:108:18 | [true] !... | Conditions.cs:109:17:109:24 | ...; | true | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:113:10:113:11 | exit M9 (normal) | false | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:116:42:116:42 | access to local variable i | true | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:117:9:123:9 | {...} | true | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:119:17:119:21 | [false] !... | true | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:119:17:119:21 | [true] !... | true | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:120:17:120:23 | ...; | true | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:121:13:122:25 | if (...) ... | true | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:122:17:122:25 | ...; | true | -| Conditions.cs:117:9:123:9 | {...} | Conditions.cs:119:17:119:21 | [false] !... | true | -| Conditions.cs:117:9:123:9 | {...} | Conditions.cs:119:17:119:21 | [true] !... | false | -| Conditions.cs:117:9:123:9 | {...} | Conditions.cs:120:17:120:23 | ...; | false | -| Conditions.cs:119:17:119:21 | [true] !... | Conditions.cs:120:17:120:23 | ...; | true | -| Conditions.cs:121:13:122:25 | if (...) ... | Conditions.cs:122:17:122:25 | ...; | true | -| Conditions.cs:131:16:131:19 | true | Conditions.cs:132:9:140:9 | {...} | true | -| Conditions.cs:131:16:131:19 | true | Conditions.cs:134:13:139:13 | {...} | true | -| Conditions.cs:131:16:131:19 | true | Conditions.cs:136:17:138:17 | {...} | true | -| Conditions.cs:132:9:140:9 | {...} | Conditions.cs:134:13:139:13 | {...} | true | -| Conditions.cs:132:9:140:9 | {...} | Conditions.cs:136:17:138:17 | {...} | true | -| Conditions.cs:134:13:139:13 | {...} | Conditions.cs:136:17:138:17 | {...} | true | -| Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:145:21:145:23 | "a" | true | -| Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:145:27:145:29 | "b" | false | -| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:147:13:147:49 | ...; | true | -| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:149:13:149:49 | ...; | false | -| ExitMethods.cs:38:10:38:11 | enter M6 | ExitMethods.cs:45:9:47:9 | {...} | true | -| ExitMethods.cs:38:10:38:11 | enter M6 | ExitMethods.cs:48:9:51:9 | catch (...) {...} | false | -| ExitMethods.cs:38:10:38:11 | enter M6 | ExitMethods.cs:49:9:51:9 | {...} | false | -| ExitMethods.cs:48:9:51:9 | catch (...) {...} | ExitMethods.cs:49:9:51:9 | {...} | true | -| ExitMethods.cs:66:17:66:26 | enter ErrorMaybe | ExitMethods.cs:66:17:66:26 | exit ErrorMaybe (normal) | false | -| ExitMethods.cs:66:17:66:26 | enter ErrorMaybe | ExitMethods.cs:69:19:69:33 | object creation of type Exception | true | -| ExitMethods.cs:72:17:72:27 | enter ErrorAlways | ExitMethods.cs:75:19:75:33 | object creation of type Exception | true | -| ExitMethods.cs:72:17:72:27 | enter ErrorAlways | ExitMethods.cs:77:41:77:43 | "b" | false | -| ExitMethods.cs:110:13:110:21 | enter ThrowExpr | ExitMethods.cs:112:29:112:29 | 1 | true | -| ExitMethods.cs:110:13:110:21 | enter ThrowExpr | ExitMethods.cs:112:69:112:75 | "input" | false | -| ExitMethods.cs:115:16:115:34 | enter ExtensionMethodCall | ExitMethods.cs:117:34:117:34 | 0 | true | -| ExitMethods.cs:115:16:115:34 | enter ExtensionMethodCall | ExitMethods.cs:117:38:117:38 | 1 | false | -| ExitMethods.cs:140:17:140:42 | enter ExceptionDispatchInfoThrow | ExitMethods.cs:143:13:143:43 | ...; | true | -| ExitMethods.cs:140:17:140:42 | enter ExceptionDispatchInfoThrow | ExitMethods.cs:145:13:145:53 | ...; | false | -| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:26:38:26:39 | IOException ex | true | -| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:27:9:29:9 | {...} | true | -| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:30:9:40:9 | catch (...) {...} | false | -| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:30:41:30:42 | ArgumentException ex | false | -| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:34:27:34:32 | throw ...; | false | -| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:41:9:43:9 | catch (...) {...} | false | -| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:42:9:43:9 | {...} | false | -| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:44:9:47:9 | catch {...} | false | -| Finally.cs:26:38:26:39 | IOException ex | Finally.cs:27:9:29:9 | {...} | true | -| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:30:41:30:42 | ArgumentException ex | true | -| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:34:27:34:32 | throw ...; | true | -| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:41:9:43:9 | catch (...) {...} | false | -| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:42:9:43:9 | {...} | false | -| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:44:9:47:9 | catch {...} | false | -| Finally.cs:30:41:30:42 | ArgumentException ex | Finally.cs:34:27:34:32 | throw ...; | true | -| Finally.cs:41:9:43:9 | catch (...) {...} | Finally.cs:42:9:43:9 | {...} | true | -| Finally.cs:41:9:43:9 | catch (...) {...} | Finally.cs:44:9:47:9 | catch {...} | false | -| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:61:38:61:39 | IOException ex | true | -| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:62:9:64:9 | {...} | true | -| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:65:9:67:9 | catch (...) {...} | false | -| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:65:26:65:26 | Exception e | false | -| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:66:9:67:9 | {...} | false | -| Finally.cs:61:38:61:39 | IOException ex | Finally.cs:62:9:64:9 | {...} | true | -| Finally.cs:65:9:67:9 | catch (...) {...} | Finally.cs:65:26:65:26 | Exception e | true | -| Finally.cs:65:9:67:9 | catch (...) {...} | Finally.cs:66:9:67:9 | {...} | true | -| Finally.cs:65:26:65:26 | Exception e | Finally.cs:66:9:67:9 | {...} | true | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:74:10:74:11 | exit M4 (abnormal) | true | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:78:9:100:9 | {...} | true | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:82:21:82:27 | return ...; | true | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:83:17:84:29 | if (...) ... | true | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:84:21:84:29 | continue; | true | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:85:17:86:26 | if (...) ... | true | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:86:21:86:26 | break; | true | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:89:13:99:13 | {...} | true | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:93:25:93:46 | throw ...; | true | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:93:31:93:45 | object creation of type Exception | true | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:96:17:98:17 | {...} | true | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:82:21:82:27 | return ...; | true | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:83:17:84:29 | if (...) ... | false | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:84:21:84:29 | continue; | false | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:85:17:86:26 | if (...) ... | false | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:86:21:86:26 | break; | false | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:84:21:84:29 | continue; | true | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:85:17:86:26 | if (...) ... | false | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:86:21:86:26 | break; | false | -| Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:86:21:86:26 | break; | true | -| Finally.cs:89:13:99:13 | {...} | Finally.cs:93:25:93:46 | throw ...; | true | -| Finally.cs:89:13:99:13 | {...} | Finally.cs:93:31:93:45 | object creation of type Exception | true | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:108:17:108:23 | return ...; | true | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:109:13:110:49 | if (...) ... | false | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:109:17:109:28 | access to property Length | false | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:109:33:109:33 | 1 | false | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:110:17:110:49 | throw ...; | false | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | false | -| Finally.cs:109:33:109:33 | 1 | Finally.cs:110:17:110:49 | throw ...; | true | -| Finally.cs:109:33:109:33 | 1 | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | true | -| Finally.cs:113:9:118:9 | {...} | Finally.cs:114:17:114:36 | [false] !... | true | -| Finally.cs:113:9:118:9 | {...} | Finally.cs:114:17:114:36 | [true] !... | false | -| Finally.cs:113:9:118:9 | {...} | Finally.cs:115:17:115:41 | ...; | false | -| Finally.cs:114:17:114:36 | [true] !... | Finally.cs:115:17:115:41 | ...; | true | -| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:117:17:117:37 | ...; | true | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:152:17:152:50 | throw ...; | true | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | true | -| Finally.cs:158:36:158:36 | 1 | Finally.cs:159:21:159:45 | throw ...; | true | -| Finally.cs:158:36:158:36 | 1 | Finally.cs:159:41:159:43 | "1" | true | -| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:161:30:161:30 | Exception e | true | -| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:162:13:164:13 | {...} | true | -| Finally.cs:161:30:161:30 | Exception e | Finally.cs:162:13:164:13 | {...} | true | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:180:21:180:43 | throw ...; | true | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:180:27:180:42 | object creation of type ExceptionA | true | -| Finally.cs:183:9:192:9 | {...} | Finally.cs:186:25:186:47 | throw ...; | true | -| Finally.cs:183:9:192:9 | {...} | Finally.cs:186:31:186:46 | object creation of type ExceptionB | true | +| Assert.cs:7:10:7:11 | Entry | Assert.cs:9:20:9:20 | After access to parameter b [false] | false | +| Assert.cs:7:10:7:11 | Entry | Assert.cs:9:20:9:20 | After access to parameter b [true] | true | +| Assert.cs:14:10:14:11 | Entry | Assert.cs:16:20:16:20 | After access to parameter b [false] | false | +| Assert.cs:14:10:14:11 | Entry | Assert.cs:16:20:16:20 | After access to parameter b [true] | true | +| Assert.cs:21:10:21:11 | Entry | Assert.cs:23:20:23:20 | After access to parameter b [false] | false | +| Assert.cs:21:10:21:11 | Entry | Assert.cs:23:20:23:20 | After access to parameter b [true] | true | +| Assert.cs:28:10:28:11 | Entry | Assert.cs:30:20:30:20 | After access to parameter b [false] | false | +| Assert.cs:28:10:28:11 | Entry | Assert.cs:30:20:30:20 | After access to parameter b [true] | true | +| Assert.cs:35:10:35:11 | Entry | Assert.cs:37:20:37:20 | After access to parameter b [false] | false | +| Assert.cs:35:10:35:11 | Entry | Assert.cs:37:20:37:20 | After access to parameter b [true] | true | +| Assert.cs:42:10:42:11 | Entry | Assert.cs:44:20:44:20 | After access to parameter b [false] | false | +| Assert.cs:42:10:42:11 | Entry | Assert.cs:44:20:44:20 | After access to parameter b [true] | true | +| Assert.cs:49:10:49:11 | Entry | Assert.cs:51:20:51:20 | After access to parameter b [false] | false | +| Assert.cs:49:10:49:11 | Entry | Assert.cs:51:20:51:20 | After access to parameter b [true] | true | +| Assert.cs:56:10:56:11 | Entry | Assert.cs:58:20:58:20 | After access to parameter b [false] | false | +| Assert.cs:56:10:56:11 | Entry | Assert.cs:58:20:58:20 | After access to parameter b [true] | true | +| Assert.cs:58:20:58:32 | After ... ? ... : ... | Assert.cs:59:23:59:31 | After ... != ... [false] | false | +| Assert.cs:58:20:58:32 | After ... ? ... : ... | Assert.cs:59:23:59:31 | After ... != ... [true] | true | +| Assert.cs:63:10:63:11 | Entry | Assert.cs:65:20:65:20 | After access to parameter b [false] | false | +| Assert.cs:63:10:63:11 | Entry | Assert.cs:65:20:65:20 | After access to parameter b [true] | true | +| Assert.cs:65:20:65:32 | After ... ? ... : ... | Assert.cs:66:24:66:32 | After ... == ... [false] | false | +| Assert.cs:65:20:65:32 | After ... ? ... : ... | Assert.cs:66:24:66:32 | After ... == ... [true] | true | +| Assert.cs:70:10:70:12 | Entry | Assert.cs:72:20:72:20 | After access to parameter b [false] | false | +| Assert.cs:70:10:70:12 | Entry | Assert.cs:72:20:72:20 | After access to parameter b [true] | true | +| Assert.cs:72:20:72:32 | After ... ? ... : ... | Assert.cs:73:23:73:31 | After ... == ... [false] | false | +| Assert.cs:72:20:72:32 | After ... ? ... : ... | Assert.cs:73:23:73:31 | After ... == ... [true] | true | +| Assert.cs:77:10:77:12 | Entry | Assert.cs:79:20:79:20 | After access to parameter b [false] | false | +| Assert.cs:77:10:77:12 | Entry | Assert.cs:79:20:79:20 | After access to parameter b [true] | true | +| Assert.cs:79:20:79:32 | After ... ? ... : ... | Assert.cs:80:24:80:32 | After ... != ... [false] | false | +| Assert.cs:79:20:79:32 | After ... ? ... : ... | Assert.cs:80:24:80:32 | After ... != ... [true] | true | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:86:20:86:20 | After access to parameter b [false] | false | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:86:20:86:20 | After access to parameter b [true] | true | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:90:13:90:13 | After access to parameter b [false] | false | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:90:13:90:13 | After access to parameter b [true] | true | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:94:13:94:13 | After access to parameter b [false] | false | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:94:13:94:13 | After access to parameter b [true] | true | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:98:13:98:13 | After access to parameter b [false] | false | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:98:13:98:13 | After access to parameter b [true] | true | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:102:13:102:13 | After access to parameter b [false] | false | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:102:13:102:13 | After access to parameter b [true] | true | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:106:13:106:13 | After access to parameter b [false] | false | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:106:13:106:13 | After access to parameter b [true] | true | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:110:13:110:13 | After access to parameter b [false] | false | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:110:13:110:13 | After access to parameter b [true] | true | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:114:13:114:13 | After access to parameter b [false] | false | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:114:13:114:13 | After access to parameter b [true] | true | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:115:23:115:31 | After ... != ... [false] | false | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:115:23:115:31 | After ... != ... [true] | true | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:118:13:118:13 | After access to parameter b [false] | false | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:118:13:118:13 | After access to parameter b [true] | true | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:119:24:119:32 | After ... == ... [false] | false | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:119:24:119:32 | After ... == ... [true] | true | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:122:13:122:13 | After access to parameter b [false] | false | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:122:13:122:13 | After access to parameter b [true] | true | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:123:23:123:31 | After ... == ... [false] | false | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:123:23:123:31 | After ... == ... [true] | true | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:126:13:126:13 | After access to parameter b [false] | false | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:126:13:126:13 | After access to parameter b [true] | true | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:127:24:127:32 | After ... != ... [false] | false | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:127:24:127:32 | After ... != ... [true] | true | +| BreakInTry.cs:3:10:3:11 | Entry | BreakInTry.cs:7:26:7:28 | String arg | false | +| BreakInTry.cs:3:10:3:11 | Entry | BreakInTry.cs:7:33:7:36 | After access to parameter args [empty] | true | +| BreakInTry.cs:3:10:3:11 | Entry | BreakInTry.cs:7:33:7:36 | After access to parameter args [non-empty] | false | +| BreakInTry.cs:3:10:3:11 | Entry | BreakInTry.cs:9:21:9:31 | After ... == ... [false] | false | +| BreakInTry.cs:3:10:3:11 | Entry | BreakInTry.cs:9:21:9:31 | After ... == ... [true] | false | +| BreakInTry.cs:7:13:11:13 | After foreach (... ... in ...) ... | BreakInTry.cs:15:17:15:28 | After ... == ... [false] | false | +| BreakInTry.cs:7:13:11:13 | After foreach (... ... in ...) ... | BreakInTry.cs:15:17:15:28 | After ... == ... [true] | true | +| BreakInTry.cs:7:26:7:28 | String arg | BreakInTry.cs:9:21:9:31 | After ... == ... [false] | false | +| BreakInTry.cs:7:26:7:28 | String arg | BreakInTry.cs:9:21:9:31 | After ... == ... [true] | true | +| BreakInTry.cs:20:10:20:11 | Entry | BreakInTry.cs:22:22:22:24 | String arg | false | +| BreakInTry.cs:20:10:20:11 | Entry | BreakInTry.cs:22:29:22:32 | After access to parameter args [empty] | true | +| BreakInTry.cs:20:10:20:11 | Entry | BreakInTry.cs:22:29:22:32 | After access to parameter args [non-empty] | false | +| BreakInTry.cs:20:10:20:11 | Entry | BreakInTry.cs:24:13:33:13 | After try {...} ... | false | +| BreakInTry.cs:20:10:20:11 | Entry | BreakInTry.cs:26:21:26:31 | After ... == ... [false] | false | +| BreakInTry.cs:20:10:20:11 | Entry | BreakInTry.cs:26:21:26:31 | After ... == ... [true] | false | +| BreakInTry.cs:20:10:20:11 | Entry | BreakInTry.cs:30:13:33:13 | {...} | false | +| BreakInTry.cs:20:10:20:11 | Entry | BreakInTry.cs:31:17:32:21 | After if (...) ... | false | +| BreakInTry.cs:20:10:20:11 | Entry | BreakInTry.cs:31:21:31:32 | After ... == ... [false] | false | +| BreakInTry.cs:20:10:20:11 | Entry | BreakInTry.cs:31:21:31:32 | After ... == ... [true] | false | +| BreakInTry.cs:22:22:22:24 | String arg | BreakInTry.cs:26:21:26:31 | After ... == ... [false] | false | +| BreakInTry.cs:22:22:22:24 | String arg | BreakInTry.cs:26:21:26:31 | After ... == ... [true] | true | +| BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:31:21:31:32 | After ... == ... [false] | false | +| BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:31:21:31:32 | After ... == ... [true] | true | +| BreakInTry.cs:38:10:38:11 | Entry | BreakInTry.cs:42:17:42:28 | After ... == ... [false] | false | +| BreakInTry.cs:38:10:38:11 | Entry | BreakInTry.cs:42:17:42:28 | After ... == ... [true] | true | +| BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:47:26:47:28 | String arg | false | +| BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:47:33:47:36 | After access to parameter args [empty] | true | +| BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:47:33:47:36 | After access to parameter args [non-empty] | false | +| BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:49:21:49:31 | After ... == ... [false] | false | +| BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:49:21:49:31 | After ... == ... [true] | false | +| BreakInTry.cs:47:26:47:28 | String arg | BreakInTry.cs:49:21:49:31 | After ... == ... [false] | false | +| BreakInTry.cs:47:26:47:28 | String arg | BreakInTry.cs:49:21:49:31 | After ... == ... [true] | true | +| BreakInTry.cs:56:10:56:11 | Entry | BreakInTry.cs:60:17:60:28 | After ... == ... [false] | false | +| BreakInTry.cs:56:10:56:11 | Entry | BreakInTry.cs:60:17:60:28 | After ... == ... [true] | true | +| BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:65:26:65:28 | String arg | false | +| BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:65:33:65:36 | After access to parameter args [empty] | true | +| BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:65:33:65:36 | After access to parameter args [non-empty] | false | +| BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:67:21:67:31 | After ... == ... [false] | false | +| BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:67:21:67:31 | After ... == ... [true] | false | +| BreakInTry.cs:65:26:65:28 | String arg | BreakInTry.cs:67:21:67:31 | After ... == ... [false] | false | +| BreakInTry.cs:65:26:65:28 | String arg | BreakInTry.cs:67:21:67:31 | After ... == ... [true] | true | +| ConditionalAccess.cs:3:12:3:13 | Entry | ConditionalAccess.cs:3:26:3:26 | After access to parameter i [non-null] | false | +| ConditionalAccess.cs:3:12:3:13 | Entry | ConditionalAccess.cs:3:26:3:26 | After access to parameter i [null] | true | +| ConditionalAccess.cs:3:12:3:13 | Entry | ConditionalAccess.cs:3:26:3:38 | After call to method ToString [non-null] | false | +| ConditionalAccess.cs:3:26:3:26 | After access to parameter i [non-null] | ConditionalAccess.cs:3:26:3:38 | After call to method ToString [non-null] | false | +| ConditionalAccess.cs:5:10:5:11 | Entry | ConditionalAccess.cs:5:26:5:26 | After access to parameter s [non-null] | false | +| ConditionalAccess.cs:5:10:5:11 | Entry | ConditionalAccess.cs:5:26:5:26 | After access to parameter s [null] | true | +| ConditionalAccess.cs:7:10:7:11 | Entry | ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [non-null] | false | +| ConditionalAccess.cs:7:10:7:11 | Entry | ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [null] | true | +| ConditionalAccess.cs:7:10:7:11 | Entry | ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [non-null] | true | +| ConditionalAccess.cs:7:10:7:11 | Entry | ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [null] | true | +| ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [null] | ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [non-null] | false | +| ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [null] | ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [null] | true | +| ConditionalAccess.cs:9:9:9:10 | Entry | ConditionalAccess.cs:9:25:9:25 | After access to parameter s [non-null] | false | +| ConditionalAccess.cs:9:9:9:10 | Entry | ConditionalAccess.cs:9:25:9:25 | After access to parameter s [null] | true | +| ConditionalAccess.cs:9:9:9:10 | Entry | ConditionalAccess.cs:9:25:9:33 | After access to property Length [non-null] | false | +| ConditionalAccess.cs:9:25:9:25 | After access to parameter s [non-null] | ConditionalAccess.cs:9:25:9:33 | After access to property Length [non-null] | false | +| ConditionalAccess.cs:11:9:11:10 | Entry | ConditionalAccess.cs:13:13:13:13 | After access to parameter s [non-null] | false | +| ConditionalAccess.cs:11:9:11:10 | Entry | ConditionalAccess.cs:13:13:13:13 | After access to parameter s [null] | true | +| ConditionalAccess.cs:13:13:13:21 | After access to property Length | ConditionalAccess.cs:13:13:13:25 | After ... > ... [false] | false | +| ConditionalAccess.cs:13:13:13:21 | After access to property Length | ConditionalAccess.cs:13:13:13:25 | After ... > ... [true] | true | +| ConditionalAccess.cs:19:12:19:13 | Entry | ConditionalAccess.cs:19:40:19:41 | After access to parameter s1 [non-null] | false | +| ConditionalAccess.cs:19:12:19:13 | Entry | ConditionalAccess.cs:19:40:19:41 | After access to parameter s1 [null] | true | +| ConditionalAccess.cs:21:10:21:11 | Entry | ConditionalAccess.cs:23:18:23:29 | After (...) ... [non-null] | false | +| ConditionalAccess.cs:21:10:21:11 | Entry | ConditionalAccess.cs:23:18:23:29 | After (...) ... [null] | true | +| ConditionalAccess.cs:23:17:23:38 | After access to property Length | ConditionalAccess.cs:24:18:24:24 | After (...) ... [non-null] | false | +| ConditionalAccess.cs:23:17:23:38 | After access to property Length | ConditionalAccess.cs:24:18:24:24 | After (...) ... [null] | true | +| ConditionalAccess.cs:24:17:24:37 | After call to method ToString | ConditionalAccess.cs:25:13:25:14 | After "" [non-null] | false | +| ConditionalAccess.cs:24:17:24:37 | After call to method ToString | ConditionalAccess.cs:25:13:25:14 | After "" [null] | true | +| ConditionalAccess.cs:32:10:32:11 | Entry | ConditionalAccess.cs:35:9:35:12 | After access to property Prop [non-null] | false | +| ConditionalAccess.cs:32:10:32:11 | Entry | ConditionalAccess.cs:35:9:35:12 | After access to property Prop [null] | true | +| ConditionalAccess.cs:46:10:46:11 | Entry | ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [non-null] | false | +| ConditionalAccess.cs:46:10:46:11 | Entry | ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [null] | true | +| ConditionalAccess.cs:48:12:48:25 | After ... = ... | ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [non-null] | false | +| ConditionalAccess.cs:48:12:48:25 | After ... = ... | ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [null] | true | +| ConditionalAccess.cs:49:12:49:32 | After ... = ... | ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [non-null] | false | +| ConditionalAccess.cs:49:12:49:32 | After ... = ... | ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [null] | true | +| ConditionalAccess.cs:50:12:50:23 | After ... = ... | ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [non-null] | false | +| ConditionalAccess.cs:50:12:50:23 | After ... = ... | ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [null] | true | +| ConditionalAccess.cs:50:12:50:23 | After ... = ... | ConditionalAccess.cs:51:9:51:16 | After access to property Prop [non-null] | false | +| ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:51:9:51:16 | After access to property Prop [non-null] | false | +| ConditionalAccess.cs:51:18:51:31 | After ... = ... | ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [non-null] | false | +| ConditionalAccess.cs:51:18:51:31 | After ... = ... | ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [null] | true | +| ConditionalAccess.cs:51:18:51:31 | After ... = ... | ConditionalAccess.cs:52:9:52:16 | After access to property Prop [non-null] | false | +| ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:52:9:52:16 | After access to property Prop [non-null] | false | +| ConditionalAccess.cs:52:18:52:38 | After ... = ... | ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [non-null] | false | +| ConditionalAccess.cs:52:18:52:38 | After ... = ... | ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [null] | true | +| ConditionalAccess.cs:53:12:53:25 | After ... -= ... | ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [non-null] | false | +| ConditionalAccess.cs:53:12:53:25 | After ... -= ... | ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [null] | true | +| Conditions.cs:3:10:3:19 | Entry | Conditions.cs:5:13:5:15 | After access to parameter inc [false] | false | +| Conditions.cs:3:10:3:19 | Entry | Conditions.cs:5:13:5:15 | After access to parameter inc [true] | true | +| Conditions.cs:5:9:6:16 | After if (...) ... | Conditions.cs:7:14:7:16 | After access to parameter inc [false] | false | +| Conditions.cs:5:9:6:16 | After if (...) ... | Conditions.cs:7:14:7:16 | After access to parameter inc [true] | true | +| Conditions.cs:11:9:11:10 | Entry | Conditions.cs:14:13:14:13 | After access to parameter b [false] | false | +| Conditions.cs:11:9:11:10 | Entry | Conditions.cs:14:13:14:13 | After access to parameter b [true] | true | +| Conditions.cs:14:9:15:16 | After if (...) ... | Conditions.cs:16:13:16:17 | After ... > ... [false] | false | +| Conditions.cs:14:9:15:16 | After if (...) ... | Conditions.cs:16:13:16:17 | After ... > ... [true] | true | +| Conditions.cs:14:9:15:16 | After if (...) ... | Conditions.cs:17:13:18:20 | After if (...) ... | true | +| Conditions.cs:14:9:15:16 | After if (...) ... | Conditions.cs:17:18:17:18 | After access to parameter b [false] | true | +| Conditions.cs:14:9:15:16 | After if (...) ... | Conditions.cs:17:18:17:18 | After access to parameter b [true] | true | +| Conditions.cs:16:13:16:17 | After ... > ... [true] | Conditions.cs:17:18:17:18 | After access to parameter b [false] | false | +| Conditions.cs:16:13:16:17 | After ... > ... [true] | Conditions.cs:17:18:17:18 | After access to parameter b [true] | true | +| Conditions.cs:22:9:22:10 | Entry | Conditions.cs:25:13:25:14 | After access to parameter b1 [false] | false | +| Conditions.cs:22:9:22:10 | Entry | Conditions.cs:25:13:25:14 | After access to parameter b1 [true] | true | +| Conditions.cs:22:9:22:10 | Entry | Conditions.cs:26:13:27:20 | After if (...) ... | true | +| Conditions.cs:22:9:22:10 | Entry | Conditions.cs:26:17:26:18 | After access to parameter b2 [false] | true | +| Conditions.cs:22:9:22:10 | Entry | Conditions.cs:26:17:26:18 | After access to parameter b2 [true] | true | +| Conditions.cs:25:9:27:20 | After if (...) ... | Conditions.cs:28:13:28:14 | After access to parameter b2 [false] | false | +| Conditions.cs:25:9:27:20 | After if (...) ... | Conditions.cs:28:13:28:14 | After access to parameter b2 [true] | true | +| Conditions.cs:25:13:25:14 | After access to parameter b1 [true] | Conditions.cs:26:17:26:18 | After access to parameter b2 [false] | false | +| Conditions.cs:25:13:25:14 | After access to parameter b1 [true] | Conditions.cs:26:17:26:18 | After access to parameter b2 [true] | true | +| Conditions.cs:33:9:33:10 | Entry | Conditions.cs:37:13:37:14 | After access to parameter b1 [false] | false | +| Conditions.cs:33:9:33:10 | Entry | Conditions.cs:37:13:37:14 | After access to parameter b1 [true] | true | +| Conditions.cs:37:9:38:20 | After if (...) ... | Conditions.cs:39:13:39:14 | After access to local variable b2 [false] | false | +| Conditions.cs:37:9:38:20 | After if (...) ... | Conditions.cs:39:13:39:14 | After access to local variable b2 [true] | true | +| Conditions.cs:39:9:40:16 | After if (...) ... | Conditions.cs:41:13:41:14 | After access to local variable b2 [false] | false | +| Conditions.cs:39:9:40:16 | After if (...) ... | Conditions.cs:41:13:41:14 | After access to local variable b2 [true] | true | +| Conditions.cs:49:9:53:9 | [LoopHeader] while (...) ... | Conditions.cs:49:16:49:22 | After ... > ... [false] | false | +| Conditions.cs:49:9:53:9 | [LoopHeader] while (...) ... | Conditions.cs:49:16:49:22 | After ... > ... [true] | true | +| Conditions.cs:49:9:53:9 | [LoopHeader] while (...) ... | Conditions.cs:51:13:52:20 | After if (...) ... | true | +| Conditions.cs:49:9:53:9 | [LoopHeader] while (...) ... | Conditions.cs:51:17:51:17 | After access to parameter b [false] | true | +| Conditions.cs:49:9:53:9 | [LoopHeader] while (...) ... | Conditions.cs:51:17:51:17 | After access to parameter b [true] | true | +| Conditions.cs:49:16:49:22 | After ... > ... [true] | Conditions.cs:51:17:51:17 | After access to parameter b [false] | false | +| Conditions.cs:49:16:49:22 | After ... > ... [true] | Conditions.cs:51:17:51:17 | After access to parameter b [true] | true | +| Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | Conditions.cs:60:16:60:22 | After ... > ... [false] | false | +| Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | Conditions.cs:60:16:60:22 | After ... > ... [true] | true | +| Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | Conditions.cs:62:13:63:20 | After if (...) ... | true | +| Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | Conditions.cs:62:17:62:17 | After access to parameter b [false] | true | +| Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | Conditions.cs:62:17:62:17 | After access to parameter b [true] | true | +| Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | Conditions.cs:65:9:66:16 | After if (...) ... | false | +| Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | Conditions.cs:65:13:65:13 | After access to parameter b [false] | false | +| Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | Conditions.cs:65:13:65:13 | After access to parameter b [true] | false | +| Conditions.cs:60:16:60:22 | After ... > ... [false] | Conditions.cs:65:13:65:13 | After access to parameter b [false] | false | +| Conditions.cs:60:16:60:22 | After ... > ... [false] | Conditions.cs:65:13:65:13 | After access to parameter b [true] | true | +| Conditions.cs:60:16:60:22 | After ... > ... [true] | Conditions.cs:62:17:62:17 | After access to parameter b [false] | false | +| Conditions.cs:60:16:60:22 | After ... > ... [true] | Conditions.cs:62:17:62:17 | After access to parameter b [true] | true | +| Conditions.cs:70:9:70:10 | Entry | Conditions.cs:74:22:74:22 | String _ | false | +| Conditions.cs:70:9:70:10 | Entry | Conditions.cs:74:27:74:28 | After access to parameter ss [empty] | true | +| Conditions.cs:70:9:70:10 | Entry | Conditions.cs:74:27:74:28 | After access to parameter ss [non-empty] | false | +| Conditions.cs:70:9:70:10 | Entry | Conditions.cs:76:13:77:20 | After if (...) ... | false | +| Conditions.cs:70:9:70:10 | Entry | Conditions.cs:76:17:76:17 | After access to local variable b [false] | false | +| Conditions.cs:70:9:70:10 | Entry | Conditions.cs:76:17:76:17 | After access to local variable b [true] | false | +| Conditions.cs:70:9:70:10 | Entry | Conditions.cs:78:13:79:26 | After if (...) ... | false | +| Conditions.cs:70:9:70:10 | Entry | Conditions.cs:78:17:78:21 | After ... > ... [false] | false | +| Conditions.cs:70:9:70:10 | Entry | Conditions.cs:78:17:78:21 | After ... > ... [true] | false | +| Conditions.cs:74:9:80:9 | After foreach (... ... in ...) ... | Conditions.cs:81:13:81:13 | After access to local variable b [false] | false | +| Conditions.cs:74:9:80:9 | After foreach (... ... in ...) ... | Conditions.cs:81:13:81:13 | After access to local variable b [true] | true | +| Conditions.cs:74:22:74:22 | String _ | Conditions.cs:76:17:76:17 | After access to local variable b [false] | false | +| Conditions.cs:74:22:74:22 | String _ | Conditions.cs:76:17:76:17 | After access to local variable b [true] | true | +| Conditions.cs:76:13:77:20 | After if (...) ... | Conditions.cs:78:17:78:21 | After ... > ... [false] | false | +| Conditions.cs:76:13:77:20 | After if (...) ... | Conditions.cs:78:17:78:21 | After ... > ... [true] | true | +| Conditions.cs:86:9:86:10 | Entry | Conditions.cs:90:22:90:22 | String _ | false | +| Conditions.cs:86:9:86:10 | Entry | Conditions.cs:90:27:90:28 | After access to parameter ss [empty] | true | +| Conditions.cs:86:9:86:10 | Entry | Conditions.cs:90:27:90:28 | After access to parameter ss [non-empty] | false | +| Conditions.cs:86:9:86:10 | Entry | Conditions.cs:92:13:93:20 | After if (...) ... | false | +| Conditions.cs:86:9:86:10 | Entry | Conditions.cs:92:17:92:17 | After access to local variable b [false] | false | +| Conditions.cs:86:9:86:10 | Entry | Conditions.cs:92:17:92:17 | After access to local variable b [true] | false | +| Conditions.cs:86:9:86:10 | Entry | Conditions.cs:94:13:95:26 | After if (...) ... | false | +| Conditions.cs:86:9:86:10 | Entry | Conditions.cs:94:17:94:21 | After ... > ... [false] | false | +| Conditions.cs:86:9:86:10 | Entry | Conditions.cs:94:17:94:21 | After ... > ... [true] | false | +| Conditions.cs:86:9:86:10 | Entry | Conditions.cs:96:13:97:20 | After if (...) ... | false | +| Conditions.cs:86:9:86:10 | Entry | Conditions.cs:96:17:96:17 | After access to local variable b [false] | false | +| Conditions.cs:86:9:86:10 | Entry | Conditions.cs:96:17:96:17 | After access to local variable b [true] | false | +| Conditions.cs:90:22:90:22 | String _ | Conditions.cs:92:17:92:17 | After access to local variable b [false] | false | +| Conditions.cs:90:22:90:22 | String _ | Conditions.cs:92:17:92:17 | After access to local variable b [true] | true | +| Conditions.cs:92:13:93:20 | After if (...) ... | Conditions.cs:94:17:94:21 | After ... > ... [false] | false | +| Conditions.cs:92:13:93:20 | After if (...) ... | Conditions.cs:94:17:94:21 | After ... > ... [true] | true | +| Conditions.cs:94:13:95:26 | After if (...) ... | Conditions.cs:96:17:96:17 | After access to local variable b [false] | false | +| Conditions.cs:94:13:95:26 | After if (...) ... | Conditions.cs:96:17:96:17 | After access to local variable b [true] | true | +| Conditions.cs:102:12:102:13 | Entry | Conditions.cs:105:13:105:13 | After access to parameter b [false] | false | +| Conditions.cs:102:12:102:13 | Entry | Conditions.cs:105:13:105:13 | After access to parameter b [true] | true | +| Conditions.cs:105:9:106:20 | After if (...) ... | Conditions.cs:107:13:107:24 | After ... > ... [false] | false | +| Conditions.cs:105:9:106:20 | After if (...) ... | Conditions.cs:107:13:107:24 | After ... > ... [true] | true | +| Conditions.cs:105:9:106:20 | After if (...) ... | Conditions.cs:108:13:109:24 | After if (...) ... | true | +| Conditions.cs:105:9:106:20 | After if (...) ... | Conditions.cs:108:18:108:18 | After access to parameter b [false] | true | +| Conditions.cs:105:9:106:20 | After if (...) ... | Conditions.cs:108:18:108:18 | After access to parameter b [true] | true | +| Conditions.cs:107:13:107:24 | After ... > ... [true] | Conditions.cs:108:18:108:18 | After access to parameter b [false] | false | +| Conditions.cs:107:13:107:24 | After ... > ... [true] | Conditions.cs:108:18:108:18 | After access to parameter b [true] | true | +| Conditions.cs:116:25:116:39 | After ... < ... [true] | Conditions.cs:119:18:119:21 | After access to local variable last [false] | false | +| Conditions.cs:116:25:116:39 | After ... < ... [true] | Conditions.cs:119:18:119:21 | After access to local variable last [true] | true | +| Conditions.cs:116:25:116:39 | Before ... < ... | Conditions.cs:116:25:116:39 | After ... < ... [false] | false | +| Conditions.cs:116:25:116:39 | Before ... < ... | Conditions.cs:116:25:116:39 | After ... < ... [true] | true | +| Conditions.cs:116:25:116:39 | Before ... < ... | Conditions.cs:119:13:120:23 | After if (...) ... | true | +| Conditions.cs:116:25:116:39 | Before ... < ... | Conditions.cs:119:18:119:21 | After access to local variable last [false] | true | +| Conditions.cs:116:25:116:39 | Before ... < ... | Conditions.cs:119:18:119:21 | After access to local variable last [true] | true | +| Conditions.cs:116:25:116:39 | Before ... < ... | Conditions.cs:121:13:122:25 | After if (...) ... | true | +| Conditions.cs:116:25:116:39 | Before ... < ... | Conditions.cs:121:17:121:20 | After access to local variable last [false] | true | +| Conditions.cs:116:25:116:39 | Before ... < ... | Conditions.cs:121:17:121:20 | After access to local variable last [true] | true | +| Conditions.cs:119:13:120:23 | After if (...) ... | Conditions.cs:121:17:121:20 | After access to local variable last [false] | false | +| Conditions.cs:119:13:120:23 | After if (...) ... | Conditions.cs:121:17:121:20 | After access to local variable last [true] | true | +| Conditions.cs:131:9:140:9 | [LoopHeader] while (...) ... | Conditions.cs:133:17:133:22 | After access to field Field1 [false] | false | +| Conditions.cs:131:9:140:9 | [LoopHeader] while (...) ... | Conditions.cs:133:17:133:22 | After access to field Field1 [true] | true | +| Conditions.cs:131:9:140:9 | [LoopHeader] while (...) ... | Conditions.cs:135:17:138:17 | After if (...) ... | true | +| Conditions.cs:131:9:140:9 | [LoopHeader] while (...) ... | Conditions.cs:135:21:135:26 | After access to field Field2 [false] | true | +| Conditions.cs:131:9:140:9 | [LoopHeader] while (...) ... | Conditions.cs:135:21:135:26 | After access to field Field2 [true] | true | +| Conditions.cs:133:17:133:22 | After access to field Field1 [true] | Conditions.cs:135:21:135:26 | After access to field Field2 [false] | false | +| Conditions.cs:133:17:133:22 | After access to field Field1 [true] | Conditions.cs:135:21:135:26 | After access to field Field2 [true] | true | +| Conditions.cs:143:10:143:12 | Entry | Conditions.cs:145:17:145:17 | After access to parameter b [false] | false | +| Conditions.cs:143:10:143:12 | Entry | Conditions.cs:145:17:145:17 | After access to parameter b [true] | true | +| Conditions.cs:145:17:145:29 | After ... ? ... : ... | Conditions.cs:146:13:146:13 | After access to parameter b [false] | false | +| Conditions.cs:145:17:145:29 | After ... ? ... : ... | Conditions.cs:146:13:146:13 | After access to parameter b [true] | true | +| DefaultParam.cs:3:12:3:13 | Entry | DefaultParam.cs:3:30:3:30 | After s [match] | true | +| DefaultParam.cs:3:12:3:13 | Entry | DefaultParam.cs:3:30:3:30 | After s [no-match] | false | +| DefaultParam.cs:3:42:3:42 | i | DefaultParam.cs:3:42:3:42 | After i [match] | true | +| DefaultParam.cs:3:42:3:42 | i | DefaultParam.cs:3:42:3:42 | After i [no-match] | false | +| ExitMethods.cs:38:10:38:11 | Entry | ExitMethods.cs:44:9:47:9 | After catch (...) {...} [match] | true | +| ExitMethods.cs:38:10:38:11 | Entry | ExitMethods.cs:44:9:47:9 | After catch (...) {...} [no-match] | false | +| ExitMethods.cs:38:10:38:11 | Entry | ExitMethods.cs:48:9:51:9 | After catch (...) {...} [match] | false | +| ExitMethods.cs:38:10:38:11 | Entry | ExitMethods.cs:48:9:51:9 | After catch (...) {...} [no-match] | false | +| ExitMethods.cs:44:9:47:9 | After catch (...) {...} [no-match] | ExitMethods.cs:48:9:51:9 | After catch (...) {...} [match] | true | +| ExitMethods.cs:44:9:47:9 | After catch (...) {...} [no-match] | ExitMethods.cs:48:9:51:9 | After catch (...) {...} [no-match] | false | +| ExitMethods.cs:66:17:66:26 | Entry | ExitMethods.cs:68:13:68:13 | After access to parameter b [false] | false | +| ExitMethods.cs:66:17:66:26 | Entry | ExitMethods.cs:68:13:68:13 | After access to parameter b [true] | true | +| ExitMethods.cs:72:17:72:27 | Entry | ExitMethods.cs:74:13:74:13 | After access to parameter b [false] | false | +| ExitMethods.cs:72:17:72:27 | Entry | ExitMethods.cs:74:13:74:13 | After access to parameter b [true] | true | +| ExitMethods.cs:110:13:110:21 | Entry | ExitMethods.cs:112:16:112:25 | After ... != ... [false] | false | +| ExitMethods.cs:110:13:110:21 | Entry | ExitMethods.cs:112:16:112:25 | After ... != ... [true] | true | +| ExitMethods.cs:115:16:115:34 | Entry | ExitMethods.cs:117:16:117:30 | After call to method Contains [false] | false | +| ExitMethods.cs:115:16:115:34 | Entry | ExitMethods.cs:117:16:117:30 | After call to method Contains [true] | true | +| ExitMethods.cs:140:17:140:42 | Entry | ExitMethods.cs:142:13:142:13 | After access to parameter b [false] | false | +| ExitMethods.cs:140:17:140:42 | Entry | ExitMethods.cs:142:13:142:13 | After access to parameter b [true] | true | +| Finally.cs:26:9:29:9 | After catch (...) {...} [no-match] | Finally.cs:30:9:40:9 | After catch (...) {...} [match] | true | +| Finally.cs:26:9:29:9 | After catch (...) {...} [no-match] | Finally.cs:30:9:40:9 | After catch (...) {...} [no-match] | false | +| Finally.cs:26:9:29:9 | After catch (...) {...} [no-match] | Finally.cs:41:9:43:9 | After catch (...) {...} [match] | false | +| Finally.cs:26:9:29:9 | After catch (...) {...} [no-match] | Finally.cs:41:9:43:9 | After catch (...) {...} [no-match] | false | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:26:9:29:9 | After catch (...) {...} [match] | true | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:26:9:29:9 | After catch (...) {...} [no-match] | false | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:30:9:40:9 | After catch (...) {...} [match] | false | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:30:9:40:9 | After catch (...) {...} [no-match] | false | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:41:9:43:9 | After catch (...) {...} [match] | false | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:41:9:43:9 | After catch (...) {...} [no-match] | false | +| Finally.cs:30:9:40:9 | After catch (...) {...} [no-match] | Finally.cs:41:9:43:9 | After catch (...) {...} [match] | true | +| Finally.cs:30:9:40:9 | After catch (...) {...} [no-match] | Finally.cs:41:9:43:9 | After catch (...) {...} [no-match] | false | +| Finally.cs:61:9:64:9 | After catch (...) {...} [no-match] | Finally.cs:65:9:67:9 | After catch (...) {...} [match] | true | +| Finally.cs:61:9:64:9 | After catch (...) {...} [no-match] | Finally.cs:65:35:65:51 | After ... != ... [false] | true | +| Finally.cs:61:9:64:9 | After catch (...) {...} [no-match] | Finally.cs:65:35:65:51 | After ... != ... [true] | true | +| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:61:9:64:9 | After catch (...) {...} [match] | true | +| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:61:9:64:9 | After catch (...) {...} [no-match] | false | +| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:65:9:67:9 | After catch (...) {...} [match] | false | +| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:65:9:67:9 | After catch (...) {...} [no-match] | false | +| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:65:35:65:51 | After ... != ... [false] | false | +| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:65:35:65:51 | After ... != ... [true] | false | +| Finally.cs:65:9:67:9 | After catch (...) {...} [match] | Finally.cs:65:35:65:51 | After ... != ... [false] | false | +| Finally.cs:65:9:67:9 | After catch (...) {...} [match] | Finally.cs:65:35:65:51 | After ... != ... [true] | true | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:74:10:74:11 | Exceptional Exit | true | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:77:16:77:20 | After ... > ... [false] | false | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:77:16:77:20 | After ... > ... [true] | true | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:79:13:99:13 | After try {...} ... | true | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:81:21:81:26 | After ... == ... [false] | true | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:81:21:81:26 | After ... == ... [true] | true | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:83:21:83:26 | After ... == ... [false] | true | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:83:21:83:26 | After ... == ... [true] | true | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:85:21:85:26 | After ... == ... [false] | true | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:85:21:85:26 | After ... == ... [true] | true | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:89:13:99:13 | {...} | true | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:90:17:98:17 | After try {...} ... | true | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:92:25:92:30 | After ... == ... [false] | true | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:92:25:92:30 | After ... == ... [true] | true | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:93:31:93:45 | After object creation of type Exception | true | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:96:17:98:17 | {...} | true | +| Finally.cs:77:16:77:20 | After ... > ... [true] | Finally.cs:81:21:81:26 | After ... == ... [false] | false | +| Finally.cs:77:16:77:20 | After ... > ... [true] | Finally.cs:81:21:81:26 | After ... == ... [true] | true | +| Finally.cs:77:16:77:20 | After ... > ... [true] | Finally.cs:83:21:83:26 | After ... == ... [false] | false | +| Finally.cs:77:16:77:20 | After ... > ... [true] | Finally.cs:83:21:83:26 | After ... == ... [true] | false | +| Finally.cs:77:16:77:20 | After ... > ... [true] | Finally.cs:85:21:85:26 | After ... == ... [false] | false | +| Finally.cs:77:16:77:20 | After ... > ... [true] | Finally.cs:85:21:85:26 | After ... == ... [true] | false | +| Finally.cs:81:21:81:26 | After ... == ... [false] | Finally.cs:83:21:83:26 | After ... == ... [false] | false | +| Finally.cs:81:21:81:26 | After ... == ... [false] | Finally.cs:83:21:83:26 | After ... == ... [true] | true | +| Finally.cs:81:21:81:26 | After ... == ... [false] | Finally.cs:85:21:85:26 | After ... == ... [false] | false | +| Finally.cs:81:21:81:26 | After ... == ... [false] | Finally.cs:85:21:85:26 | After ... == ... [true] | false | +| Finally.cs:83:21:83:26 | After ... == ... [false] | Finally.cs:85:21:85:26 | After ... == ... [false] | false | +| Finally.cs:83:21:83:26 | After ... == ... [false] | Finally.cs:85:21:85:26 | After ... == ... [true] | true | +| Finally.cs:89:13:99:13 | {...} | Finally.cs:92:25:92:30 | After ... == ... [false] | false | +| Finally.cs:89:13:99:13 | {...} | Finally.cs:92:25:92:30 | After ... == ... [true] | true | +| Finally.cs:89:13:99:13 | {...} | Finally.cs:93:31:93:45 | After object creation of type Exception | true | +| Finally.cs:107:17:107:28 | After access to property Length | Finally.cs:107:17:107:33 | After ... == ... [false] | false | +| Finally.cs:107:17:107:28 | After access to property Length | Finally.cs:107:17:107:33 | After ... == ... [true] | true | +| Finally.cs:107:17:107:28 | After access to property Length | Finally.cs:109:17:109:21 | After access to field Field | false | +| Finally.cs:107:17:107:28 | After access to property Length | Finally.cs:109:17:109:28 | After access to property Length | false | +| Finally.cs:107:17:107:28 | After access to property Length | Finally.cs:109:17:109:33 | After ... == ... [false] | false | +| Finally.cs:107:17:107:28 | After access to property Length | Finally.cs:109:17:109:33 | After ... == ... [true] | false | +| Finally.cs:107:17:107:28 | After access to property Length | Finally.cs:110:23:110:48 | After object creation of type OutOfMemoryException | false | +| Finally.cs:109:17:109:28 | After access to property Length | Finally.cs:109:17:109:33 | After ... == ... [false] | false | +| Finally.cs:109:17:109:28 | After access to property Length | Finally.cs:109:17:109:33 | After ... == ... [true] | true | +| Finally.cs:109:17:109:28 | After access to property Length | Finally.cs:110:23:110:48 | After object creation of type OutOfMemoryException | true | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:114:19:114:35 | After ... == ... [false] | false | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:114:19:114:35 | After ... == ... [true] | true | +| Finally.cs:114:13:115:41 | After if (...) ... | Finally.cs:116:17:116:32 | After ... > ... [false] | false | +| Finally.cs:114:13:115:41 | After if (...) ... | Finally.cs:116:17:116:32 | After ... > ... [true] | true | +| Finally.cs:147:10:147:11 | Entry | Finally.cs:151:17:151:28 | After ... == ... [false] | false | +| Finally.cs:147:10:147:11 | Entry | Finally.cs:151:17:151:28 | After ... == ... [true] | true | +| Finally.cs:147:10:147:11 | Entry | Finally.cs:152:23:152:49 | After object creation of type ArgumentNullException | true | +| Finally.cs:158:21:158:31 | After access to property Length | Finally.cs:158:21:158:36 | After ... == ... [false] | false | +| Finally.cs:158:21:158:31 | After access to property Length | Finally.cs:158:21:158:36 | After ... == ... [true] | true | +| Finally.cs:158:21:158:31 | After access to property Length | Finally.cs:159:27:159:44 | After object creation of type Exception | true | +| Finally.cs:161:13:164:13 | After catch (...) {...} [match] | Finally.cs:161:39:161:54 | After ... == ... [false] | false | +| Finally.cs:161:13:164:13 | After catch (...) {...} [match] | Finally.cs:161:39:161:54 | After ... == ... [true] | true | +| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:161:13:164:13 | After catch (...) {...} [match] | true | +| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:161:39:161:54 | After ... == ... [false] | true | +| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:161:39:161:54 | After ... == ... [true] | true | +| Finally.cs:176:10:176:11 | Entry | Finally.cs:180:17:180:18 | After access to parameter b1 [false] | false | +| Finally.cs:176:10:176:11 | Entry | Finally.cs:180:17:180:18 | After access to parameter b1 [true] | true | +| Finally.cs:176:10:176:11 | Entry | Finally.cs:180:27:180:42 | After object creation of type ExceptionA | true | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:186:21:186:22 | After access to parameter b2 [false] | false | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:186:21:186:22 | After access to parameter b2 [true] | true | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:186:31:186:46 | After object creation of type ExceptionB | true | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:188:13:191:13 | After catch (...) {...} [match] | true | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:188:13:191:13 | After catch (...) {...} [no-match] | true | | Finally.cs:183:9:192:9 | {...} | Finally.cs:188:13:191:13 | catch (...) {...} | true | -| Finally.cs:183:9:192:9 | {...} | Finally.cs:188:38:188:39 | access to parameter b2 | true | -| Finally.cs:183:9:192:9 | {...} | Finally.cs:189:13:191:13 | {...} | true | -| Finally.cs:183:9:192:9 | {...} | Finally.cs:190:31:190:46 | object creation of type ExceptionC | true | -| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:188:38:188:39 | access to parameter b2 | true | -| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:189:13:191:13 | {...} | true | -| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:190:31:190:46 | object creation of type ExceptionC | true | -| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:189:13:191:13 | {...} | true | -| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:190:31:190:46 | object creation of type ExceptionC | true | -| Finally.cs:189:13:191:13 | {...} | Finally.cs:190:31:190:46 | object creation of type ExceptionC | true | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:199:21:199:43 | throw ...; | true | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:199:27:199:42 | object creation of type ExceptionA | true | -| Finally.cs:202:9:212:9 | {...} | Finally.cs:205:25:205:47 | throw ...; | true | -| Finally.cs:202:9:212:9 | {...} | Finally.cs:205:31:205:46 | object creation of type ExceptionB | true | -| Finally.cs:208:13:210:13 | {...} | Finally.cs:209:31:209:46 | object creation of type ExceptionC | true | -| Finally.cs:208:13:210:13 | {...} | Finally.cs:211:13:211:29 | ...; | false | -| Finally.cs:208:13:210:13 | {...} | Finally.cs:213:9:213:25 | ...; | false | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:240:21:240:43 | throw ...; | true | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:240:27:240:42 | object creation of type ExceptionA | true | -| Finally.cs:243:13:253:13 | {...} | Finally.cs:247:25:247:47 | throw ...; | true | -| Finally.cs:243:13:253:13 | {...} | Finally.cs:247:31:247:46 | object creation of type ExceptionA | true | -| Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:6:10:6:11 | exit M1 (normal) | true | -| Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:22:8:24 | String arg | false | -| Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:12:10:12:11 | exit M2 (normal) | true | -| Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:14:22:14:22 | String _ | false | -| Foreach.cs:18:10:18:11 | enter M3 | Foreach.cs:20:27:20:38 | call to method ToArray | false | -| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:18:10:18:11 | exit M3 (normal) | true | -| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:22:20:22 | String x | false | -| Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | Foreach.cs:24:10:24:11 | exit M4 (normal) | true | -| Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | Foreach.cs:26:23:26:23 | String x | false | -| Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | Foreach.cs:30:10:30:11 | exit M5 (normal) | true | -| Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | Foreach.cs:32:23:32:23 | String x | false | -| Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | Foreach.cs:36:10:36:11 | exit M6 (normal) | true | -| Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | Foreach.cs:38:26:38:26 | String x | false | -| LoopUnrolling.cs:7:10:7:11 | enter M1 | LoopUnrolling.cs:10:13:10:19 | return ...; | true | -| LoopUnrolling.cs:7:10:7:11 | enter M1 | LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | false | -| LoopUnrolling.cs:7:10:7:11 | enter M1 | LoopUnrolling.cs:11:22:11:24 | String arg | false | -| LoopUnrolling.cs:7:10:7:11 | enter M1 | LoopUnrolling.cs:11:29:11:32 | access to parameter args | false | -| LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:11:22:11:24 | String arg | false | -| LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:15:10:15:11 | exit M2 (normal) | true | -| LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:18:22:18:22 | String x | false | -| LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:22:10:22:11 | exit M3 (normal) | true | -| LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:24:22:24:24 | Char arg | false | -| LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | false | -| LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:25:26:25:29 | Char arg0 | false | -| LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:25:26:25:29 | Char arg0 | false | -| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | true | -| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:32:22:32:22 | String x | false | -| LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | true | -| LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:40:22:40:22 | String x | false | -| LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | false | -| LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:41:26:41:26 | String y | false | -| LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:41:26:41:26 | String y | false | -| LoopUnrolling.cs:45:10:45:11 | enter M6 | LoopUnrolling.cs:45:10:45:11 | exit M6 (normal) | true | -| LoopUnrolling.cs:45:10:45:11 | enter M6 | LoopUnrolling.cs:48:22:48:22 | String x | false | -| LoopUnrolling.cs:45:10:45:11 | enter M6 | LoopUnrolling.cs:50:9:50:13 | Label: | false | -| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | true | -| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:58:22:58:22 | String x | false | -| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:61:17:61:37 | ...; | false | -| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:62:13:63:37 | if (...) ... | false | -| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:63:17:63:37 | ...; | false | -| LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:61:17:61:37 | ...; | true | -| LoopUnrolling.cs:62:13:63:37 | if (...) ... | LoopUnrolling.cs:63:17:63:37 | ...; | true | -| LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:69:13:69:23 | [false] !... | true | -| LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:69:13:69:23 | [true] !... | false | -| LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:70:13:70:19 | return ...; | false | -| LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:71:9:71:21 | ...; | true | -| LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | true | -| LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:72:22:72:24 | String arg | true | -| LoopUnrolling.cs:69:13:69:23 | [false] !... | LoopUnrolling.cs:71:9:71:21 | ...; | false | -| LoopUnrolling.cs:69:13:69:23 | [false] !... | LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | false | -| LoopUnrolling.cs:69:13:69:23 | [false] !... | LoopUnrolling.cs:72:22:72:24 | String arg | false | -| LoopUnrolling.cs:69:13:69:23 | [true] !... | LoopUnrolling.cs:70:13:70:19 | return ...; | true | -| LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:72:22:72:24 | String arg | false | -| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | true | -| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:79:22:79:22 | String x | false | -| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | true | -| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:88:22:88:22 | String x | false | -| LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | true | -| LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:97:22:97:22 | String x | false | -| NullCoalescing.cs:3:9:3:10 | enter M1 | NullCoalescing.cs:3:28:3:28 | 0 | true | -| NullCoalescing.cs:5:9:5:10 | enter M2 | NullCoalescing.cs:5:25:5:34 | [true] ... ?? ... | true | -| NullCoalescing.cs:5:9:5:10 | enter M2 | NullCoalescing.cs:5:30:5:34 | false | true | -| NullCoalescing.cs:5:9:5:10 | enter M2 | NullCoalescing.cs:5:39:5:39 | 0 | true | -| NullCoalescing.cs:5:25:5:34 | [false] ... ?? ... | NullCoalescing.cs:5:43:5:43 | 1 | false | -| NullCoalescing.cs:5:25:5:34 | [true] ... ?? ... | NullCoalescing.cs:5:39:5:39 | 0 | true | -| NullCoalescing.cs:7:12:7:13 | enter M3 | NullCoalescing.cs:7:46:7:47 | access to parameter s2 | true | -| NullCoalescing.cs:7:12:7:13 | enter M3 | NullCoalescing.cs:7:46:7:53 | ... ?? ... | true | -| NullCoalescing.cs:7:12:7:13 | enter M3 | NullCoalescing.cs:7:52:7:53 | "" | true | -| NullCoalescing.cs:7:46:7:47 | access to parameter s2 | NullCoalescing.cs:7:52:7:53 | "" | true | -| NullCoalescing.cs:9:12:9:13 | enter M4 | NullCoalescing.cs:9:41:9:41 | access to parameter s | true | -| NullCoalescing.cs:9:12:9:13 | enter M4 | NullCoalescing.cs:9:45:9:45 | access to parameter s | false | -| NullCoalescing.cs:9:37:9:45 | [null] ... ? ... : ... | NullCoalescing.cs:9:51:9:52 | "" | true | -| NullCoalescing.cs:9:37:9:45 | [null] ... ? ... : ... | NullCoalescing.cs:9:51:9:58 | ... ?? ... | true | -| NullCoalescing.cs:9:51:9:52 | "" | NullCoalescing.cs:9:51:9:58 | ... ?? ... | false | -| NullCoalescing.cs:11:9:11:10 | enter M5 | NullCoalescing.cs:11:51:11:52 | access to parameter b2 | true | -| NullCoalescing.cs:11:9:11:10 | enter M5 | NullCoalescing.cs:11:51:11:58 | [false] ... && ... | true | -| NullCoalescing.cs:11:9:11:10 | enter M5 | NullCoalescing.cs:11:51:11:58 | [true] ... && ... | true | -| NullCoalescing.cs:11:9:11:10 | enter M5 | NullCoalescing.cs:11:57:11:58 | access to parameter b3 | true | -| NullCoalescing.cs:11:44:11:59 | [false] ... ?? ... | NullCoalescing.cs:11:68:11:68 | 1 | false | -| NullCoalescing.cs:11:44:11:59 | [true] ... ?? ... | NullCoalescing.cs:11:64:11:64 | 0 | true | -| NullCoalescing.cs:11:51:11:52 | access to parameter b2 | NullCoalescing.cs:11:51:11:58 | [true] ... && ... | true | -| NullCoalescing.cs:11:51:11:52 | access to parameter b2 | NullCoalescing.cs:11:57:11:58 | access to parameter b3 | true | -| NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:51:11:58 | [true] ... && ... | true | -| NullCoalescing.cs:13:10:13:11 | enter M6 | NullCoalescing.cs:15:31:15:31 | 0 | true | -| NullCoalescing.cs:13:10:13:11 | enter M6 | NullCoalescing.cs:16:17:16:25 | ... ?? ... | true | -| NullCoalescing.cs:13:10:13:11 | enter M6 | NullCoalescing.cs:17:13:17:24 | ... ?? ... | true | -| NullCoalescing.cs:15:31:15:31 | 0 | NullCoalescing.cs:16:17:16:25 | ... ?? ... | false | -| NullCoalescing.cs:15:31:15:31 | 0 | NullCoalescing.cs:17:13:17:24 | ... ?? ... | false | -| NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:17:13:17:24 | ... ?? ... | false | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:8:13:8:23 | [false] ... is ... | false | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:8:13:8:23 | [true] ... is ... | true | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:9:9:11:9 | {...} | true | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:12:14:18:9 | if (...) ... | false | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:12:18:12:31 | [false] ... is ... | false | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:12:18:12:31 | [true] ... is ... | false | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:13:9:15:9 | {...} | false | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:16:14:18:9 | if (...) ... | false | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:16:18:16:28 | [false] ... is ... | false | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:16:18:16:28 | [true] ... is ... | false | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:17:9:18:9 | {...} | false | -| Patterns.cs:8:13:8:23 | [false] ... is ... | Patterns.cs:12:14:18:9 | if (...) ... | false | -| Patterns.cs:8:13:8:23 | [false] ... is ... | Patterns.cs:12:18:12:31 | [false] ... is ... | false | -| Patterns.cs:8:13:8:23 | [false] ... is ... | Patterns.cs:12:18:12:31 | [true] ... is ... | false | -| Patterns.cs:8:13:8:23 | [false] ... is ... | Patterns.cs:13:9:15:9 | {...} | false | -| Patterns.cs:8:13:8:23 | [false] ... is ... | Patterns.cs:16:14:18:9 | if (...) ... | false | -| Patterns.cs:8:13:8:23 | [false] ... is ... | Patterns.cs:16:18:16:28 | [false] ... is ... | false | -| Patterns.cs:8:13:8:23 | [false] ... is ... | Patterns.cs:16:18:16:28 | [true] ... is ... | false | -| Patterns.cs:8:13:8:23 | [false] ... is ... | Patterns.cs:17:9:18:9 | {...} | false | -| Patterns.cs:8:13:8:23 | [true] ... is ... | Patterns.cs:9:9:11:9 | {...} | true | -| Patterns.cs:12:14:18:9 | if (...) ... | Patterns.cs:12:18:12:31 | [false] ... is ... | false | -| Patterns.cs:12:14:18:9 | if (...) ... | Patterns.cs:12:18:12:31 | [true] ... is ... | true | -| Patterns.cs:12:14:18:9 | if (...) ... | Patterns.cs:13:9:15:9 | {...} | true | -| Patterns.cs:12:14:18:9 | if (...) ... | Patterns.cs:16:14:18:9 | if (...) ... | false | -| Patterns.cs:12:14:18:9 | if (...) ... | Patterns.cs:16:18:16:28 | [false] ... is ... | false | -| Patterns.cs:12:14:18:9 | if (...) ... | Patterns.cs:16:18:16:28 | [true] ... is ... | false | -| Patterns.cs:12:14:18:9 | if (...) ... | Patterns.cs:17:9:18:9 | {...} | false | -| Patterns.cs:12:18:12:31 | [false] ... is ... | Patterns.cs:16:14:18:9 | if (...) ... | false | -| Patterns.cs:12:18:12:31 | [false] ... is ... | Patterns.cs:16:18:16:28 | [false] ... is ... | false | -| Patterns.cs:12:18:12:31 | [false] ... is ... | Patterns.cs:16:18:16:28 | [true] ... is ... | false | -| Patterns.cs:12:18:12:31 | [false] ... is ... | Patterns.cs:17:9:18:9 | {...} | false | -| Patterns.cs:12:18:12:31 | [true] ... is ... | Patterns.cs:13:9:15:9 | {...} | true | -| Patterns.cs:16:14:18:9 | if (...) ... | Patterns.cs:16:18:16:28 | [false] ... is ... | false | -| Patterns.cs:16:14:18:9 | if (...) ... | Patterns.cs:16:18:16:28 | [true] ... is ... | true | -| Patterns.cs:16:14:18:9 | if (...) ... | Patterns.cs:17:9:18:9 | {...} | true | -| Patterns.cs:16:18:16:28 | [true] ... is ... | Patterns.cs:17:9:18:9 | {...} | true | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:23:17:23:22 | break; | true | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:24:13:24:36 | case ...: | false | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:24:30:24:31 | access to local variable i2 | false | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:25:17:25:52 | ...; | false | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:27:13:27:24 | case ...: | false | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:28:17:28:47 | ...; | false | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:30:13:30:27 | case ...: | false | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:31:17:31:50 | ...; | false | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:33:13:33:24 | case ...: | false | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:34:17:34:22 | break; | false | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:35:13:35:20 | default: | false | -| Patterns.cs:24:13:24:36 | case ...: | Patterns.cs:24:30:24:31 | access to local variable i2 | true | -| Patterns.cs:24:13:24:36 | case ...: | Patterns.cs:25:17:25:52 | ...; | true | -| Patterns.cs:24:30:24:31 | access to local variable i2 | Patterns.cs:25:17:25:52 | ...; | true | -| Patterns.cs:27:13:27:24 | case ...: | Patterns.cs:28:17:28:47 | ...; | true | -| Patterns.cs:27:13:27:24 | case ...: | Patterns.cs:30:13:30:27 | case ...: | false | -| Patterns.cs:27:13:27:24 | case ...: | Patterns.cs:31:17:31:50 | ...; | false | -| Patterns.cs:27:13:27:24 | case ...: | Patterns.cs:33:13:33:24 | case ...: | false | -| Patterns.cs:27:13:27:24 | case ...: | Patterns.cs:34:17:34:22 | break; | false | -| Patterns.cs:27:13:27:24 | case ...: | Patterns.cs:35:13:35:20 | default: | false | -| Patterns.cs:30:13:30:27 | case ...: | Patterns.cs:31:17:31:50 | ...; | true | -| Patterns.cs:30:13:30:27 | case ...: | Patterns.cs:33:13:33:24 | case ...: | false | -| Patterns.cs:30:13:30:27 | case ...: | Patterns.cs:34:17:34:22 | break; | false | -| Patterns.cs:30:13:30:27 | case ...: | Patterns.cs:35:13:35:20 | default: | false | -| Patterns.cs:33:13:33:24 | case ...: | Patterns.cs:34:17:34:22 | break; | true | -| Patterns.cs:33:13:33:24 | case ...: | Patterns.cs:35:13:35:20 | default: | false | -| Patterns.cs:50:24:50:25 | enter M3 | Patterns.cs:51:9:51:21 | [false] ... is ... | true | -| Patterns.cs:50:24:50:25 | enter M3 | Patterns.cs:51:9:51:21 | [true] ... is ... | false | -| Patterns.cs:50:24:50:25 | enter M3 | Patterns.cs:51:14:51:21 | [match] not ... | false | -| Patterns.cs:50:24:50:25 | enter M3 | Patterns.cs:51:14:51:21 | [no-match] not ... | true | -| Patterns.cs:50:24:50:25 | enter M3 | Patterns.cs:51:25:51:25 | access to parameter c | false | -| Patterns.cs:50:24:50:25 | enter M3 | Patterns.cs:51:34:51:34 | access to parameter c | true | -| Patterns.cs:51:9:51:21 | [false] ... is ... | Patterns.cs:51:34:51:34 | access to parameter c | false | -| Patterns.cs:51:9:51:21 | [true] ... is ... | Patterns.cs:51:25:51:25 | access to parameter c | true | -| Patterns.cs:51:14:51:21 | [match] not ... | Patterns.cs:51:9:51:21 | [true] ... is ... | true | -| Patterns.cs:51:14:51:21 | [match] not ... | Patterns.cs:51:25:51:25 | access to parameter c | true | -| Patterns.cs:51:14:51:21 | [no-match] not ... | Patterns.cs:51:9:51:21 | [false] ... is ... | false | -| Patterns.cs:51:14:51:21 | [no-match] not ... | Patterns.cs:51:34:51:34 | access to parameter c | false | -| Patterns.cs:53:24:53:25 | enter M4 | Patterns.cs:54:27:54:35 | [match] { ... } | true | -| Patterns.cs:53:24:53:25 | enter M4 | Patterns.cs:54:27:54:35 | [no-match] { ... } | true | -| Patterns.cs:53:24:53:25 | enter M4 | Patterns.cs:54:33:54:33 | 1 | true | -| Patterns.cs:54:33:54:33 | 1 | Patterns.cs:54:27:54:35 | [match] { ... } | true | -| Patterns.cs:54:33:54:33 | 1 | Patterns.cs:54:27:54:35 | [no-match] { ... } | false | -| Patterns.cs:56:26:56:27 | enter M5 | Patterns.cs:60:13:60:17 | [match] not ... | false | -| Patterns.cs:56:26:56:27 | enter M5 | Patterns.cs:60:13:60:17 | [no-match] not ... | true | -| Patterns.cs:56:26:56:27 | enter M5 | Patterns.cs:60:22:60:28 | "not 1" | false | -| Patterns.cs:56:26:56:27 | enter M5 | Patterns.cs:61:13:61:13 | _ | true | -| Patterns.cs:56:26:56:27 | enter M5 | Patterns.cs:61:18:61:24 | "other" | true | -| Patterns.cs:60:13:60:17 | [match] not ... | Patterns.cs:60:22:60:28 | "not 1" | true | -| Patterns.cs:60:13:60:17 | [no-match] not ... | Patterns.cs:61:13:61:13 | _ | false | -| Patterns.cs:60:13:60:17 | [no-match] not ... | Patterns.cs:61:18:61:24 | "other" | false | -| Patterns.cs:61:13:61:13 | _ | Patterns.cs:61:18:61:24 | "other" | true | -| Patterns.cs:65:26:65:27 | enter M6 | Patterns.cs:69:13:69:17 | [no-match] not ... | true | -| Patterns.cs:65:26:65:27 | enter M6 | Patterns.cs:70:13:70:13 | 2 | true | -| Patterns.cs:65:26:65:27 | enter M6 | Patterns.cs:70:18:70:27 | "possible" | true | -| Patterns.cs:69:13:69:17 | [no-match] not ... | Patterns.cs:70:13:70:13 | 2 | false | -| Patterns.cs:69:13:69:17 | [no-match] not ... | Patterns.cs:70:18:70:27 | "possible" | false | -| Patterns.cs:70:13:70:13 | 2 | Patterns.cs:70:18:70:27 | "possible" | true | -| Patterns.cs:74:26:74:27 | enter M7 | Patterns.cs:78:20:78:24 | "> 1" | true | -| Patterns.cs:74:26:74:27 | enter M7 | Patterns.cs:79:15:79:15 | 0 | false | -| Patterns.cs:74:26:74:27 | enter M7 | Patterns.cs:79:20:79:24 | "< 0" | false | -| Patterns.cs:74:26:74:27 | enter M7 | Patterns.cs:80:13:80:13 | 1 | false | -| Patterns.cs:74:26:74:27 | enter M7 | Patterns.cs:80:18:80:20 | "1" | false | -| Patterns.cs:74:26:74:27 | enter M7 | Patterns.cs:81:13:81:13 | _ | false | -| Patterns.cs:74:26:74:27 | enter M7 | Patterns.cs:81:18:81:20 | "0" | false | -| Patterns.cs:79:15:79:15 | 0 | Patterns.cs:79:20:79:24 | "< 0" | true | -| Patterns.cs:79:15:79:15 | 0 | Patterns.cs:80:13:80:13 | 1 | false | -| Patterns.cs:79:15:79:15 | 0 | Patterns.cs:80:18:80:20 | "1" | false | -| Patterns.cs:79:15:79:15 | 0 | Patterns.cs:81:13:81:13 | _ | false | -| Patterns.cs:79:15:79:15 | 0 | Patterns.cs:81:18:81:20 | "0" | false | -| Patterns.cs:80:13:80:13 | 1 | Patterns.cs:80:18:80:20 | "1" | true | -| Patterns.cs:80:13:80:13 | 1 | Patterns.cs:81:13:81:13 | _ | false | -| Patterns.cs:80:13:80:13 | 1 | Patterns.cs:81:18:81:20 | "0" | false | -| Patterns.cs:81:13:81:13 | _ | Patterns.cs:81:18:81:20 | "0" | true | -| Patterns.cs:85:26:85:27 | enter M8 | Patterns.cs:85:39:85:53 | [false] ... is ... | false | -| Patterns.cs:85:26:85:27 | enter M8 | Patterns.cs:85:44:85:53 | [no-match] ... or ... | false | -| Patterns.cs:85:26:85:27 | enter M8 | Patterns.cs:85:49:85:53 | [match] not ... | false | -| Patterns.cs:85:26:85:27 | enter M8 | Patterns.cs:85:49:85:53 | [no-match] not ... | false | -| Patterns.cs:85:26:85:27 | enter M8 | Patterns.cs:85:53:85:53 | 2 | false | -| Patterns.cs:85:26:85:27 | enter M8 | Patterns.cs:85:67:85:69 | "2" | false | -| Patterns.cs:85:39:85:53 | [false] ... is ... | Patterns.cs:85:67:85:69 | "2" | false | -| Patterns.cs:85:39:85:53 | [true] ... is ... | Patterns.cs:85:57:85:63 | "not 2" | true | -| Patterns.cs:85:44:85:53 | [match] ... or ... | Patterns.cs:85:39:85:53 | [true] ... is ... | true | -| Patterns.cs:85:44:85:53 | [match] ... or ... | Patterns.cs:85:57:85:63 | "not 2" | true | -| Patterns.cs:85:44:85:53 | [no-match] ... or ... | Patterns.cs:85:39:85:53 | [false] ... is ... | false | -| Patterns.cs:85:44:85:53 | [no-match] ... or ... | Patterns.cs:85:67:85:69 | "2" | false | -| Patterns.cs:85:49:85:53 | [no-match] not ... | Patterns.cs:85:39:85:53 | [false] ... is ... | false | -| Patterns.cs:85:49:85:53 | [no-match] not ... | Patterns.cs:85:44:85:53 | [no-match] ... or ... | false | -| Patterns.cs:85:49:85:53 | [no-match] not ... | Patterns.cs:85:67:85:69 | "2" | false | -| Patterns.cs:85:53:85:53 | 2 | Patterns.cs:85:39:85:53 | [false] ... is ... | true | -| Patterns.cs:85:53:85:53 | 2 | Patterns.cs:85:44:85:53 | [no-match] ... or ... | true | -| Patterns.cs:85:53:85:53 | 2 | Patterns.cs:85:49:85:53 | [match] not ... | false | -| Patterns.cs:85:53:85:53 | 2 | Patterns.cs:85:49:85:53 | [no-match] not ... | true | -| Patterns.cs:85:53:85:53 | 2 | Patterns.cs:85:67:85:69 | "2" | true | -| Patterns.cs:87:26:87:27 | enter M9 | Patterns.cs:87:39:87:54 | [true] ... is ... | true | -| Patterns.cs:87:26:87:27 | enter M9 | Patterns.cs:87:44:87:54 | [match] ... and ... | true | -| Patterns.cs:87:26:87:27 | enter M9 | Patterns.cs:87:50:87:54 | [match] not ... | true | -| Patterns.cs:87:26:87:27 | enter M9 | Patterns.cs:87:50:87:54 | [no-match] not ... | true | -| Patterns.cs:87:26:87:27 | enter M9 | Patterns.cs:87:54:87:54 | 2 | true | -| Patterns.cs:87:26:87:27 | enter M9 | Patterns.cs:87:58:87:60 | "1" | true | -| Patterns.cs:87:39:87:54 | [false] ... is ... | Patterns.cs:87:64:87:70 | "not 1" | false | -| Patterns.cs:87:39:87:54 | [true] ... is ... | Patterns.cs:87:58:87:60 | "1" | true | -| Patterns.cs:87:44:87:54 | [match] ... and ... | Patterns.cs:87:39:87:54 | [true] ... is ... | true | -| Patterns.cs:87:44:87:54 | [match] ... and ... | Patterns.cs:87:58:87:60 | "1" | true | -| Patterns.cs:87:44:87:54 | [no-match] ... and ... | Patterns.cs:87:39:87:54 | [false] ... is ... | false | -| Patterns.cs:87:44:87:54 | [no-match] ... and ... | Patterns.cs:87:64:87:70 | "not 1" | false | -| Patterns.cs:87:50:87:54 | [match] not ... | Patterns.cs:87:39:87:54 | [true] ... is ... | true | -| Patterns.cs:87:50:87:54 | [match] not ... | Patterns.cs:87:44:87:54 | [match] ... and ... | true | -| Patterns.cs:87:50:87:54 | [match] not ... | Patterns.cs:87:58:87:60 | "1" | true | -| Patterns.cs:87:54:87:54 | 2 | Patterns.cs:87:39:87:54 | [true] ... is ... | false | -| Patterns.cs:87:54:87:54 | 2 | Patterns.cs:87:44:87:54 | [match] ... and ... | false | -| Patterns.cs:87:54:87:54 | 2 | Patterns.cs:87:50:87:54 | [match] not ... | false | -| Patterns.cs:87:54:87:54 | 2 | Patterns.cs:87:50:87:54 | [no-match] not ... | true | -| Patterns.cs:87:54:87:54 | 2 | Patterns.cs:87:58:87:60 | "1" | false | -| Patterns.cs:93:17:93:19 | enter M10 | Patterns.cs:95:13:95:40 | [false] ... is ... | false | -| Patterns.cs:93:17:93:19 | enter M10 | Patterns.cs:95:21:95:40 | [no-match] { ... } | false | -| Patterns.cs:93:17:93:19 | enter M10 | Patterns.cs:95:21:95:40 | [no-match] { ... } | false | -| Patterns.cs:93:17:93:19 | enter M10 | Patterns.cs:95:29:95:38 | [no-match] ... or ... | false | -| Patterns.cs:93:17:93:19 | enter M10 | Patterns.cs:95:36:95:38 | access to constant B | false | -| Patterns.cs:95:13:95:40 | [true] ... is ... | Patterns.cs:96:9:98:9 | {...} | true | -| Patterns.cs:95:21:95:40 | [match] { ... } | Patterns.cs:95:13:95:40 | [true] ... is ... | true | -| Patterns.cs:95:21:95:40 | [match] { ... } | Patterns.cs:95:13:95:40 | [true] ... is ... | true | -| Patterns.cs:95:21:95:40 | [match] { ... } | Patterns.cs:95:21:95:40 | [match] { ... } | true | -| Patterns.cs:95:21:95:40 | [match] { ... } | Patterns.cs:96:9:98:9 | {...} | true | -| Patterns.cs:95:21:95:40 | [match] { ... } | Patterns.cs:96:9:98:9 | {...} | true | -| Patterns.cs:95:21:95:40 | [no-match] { ... } | Patterns.cs:95:13:95:40 | [false] ... is ... | false | -| Patterns.cs:95:21:95:40 | [no-match] { ... } | Patterns.cs:95:13:95:40 | [false] ... is ... | false | -| Patterns.cs:95:21:95:40 | [no-match] { ... } | Patterns.cs:95:21:95:40 | [no-match] { ... } | false | -| Patterns.cs:95:29:95:38 | [match] ... or ... | Patterns.cs:95:13:95:40 | [true] ... is ... | true | -| Patterns.cs:95:29:95:38 | [match] ... or ... | Patterns.cs:95:21:95:40 | [match] { ... } | true | -| Patterns.cs:95:29:95:38 | [match] ... or ... | Patterns.cs:95:21:95:40 | [match] { ... } | true | -| Patterns.cs:95:29:95:38 | [match] ... or ... | Patterns.cs:96:9:98:9 | {...} | true | -| Patterns.cs:95:29:95:38 | [no-match] ... or ... | Patterns.cs:95:13:95:40 | [false] ... is ... | false | -| Patterns.cs:95:29:95:38 | [no-match] ... or ... | Patterns.cs:95:21:95:40 | [no-match] { ... } | false | -| Patterns.cs:95:29:95:38 | [no-match] ... or ... | Patterns.cs:95:21:95:40 | [no-match] { ... } | false | -| Patterns.cs:95:36:95:38 | access to constant B | Patterns.cs:95:13:95:40 | [false] ... is ... | false | -| Patterns.cs:95:36:95:38 | access to constant B | Patterns.cs:95:21:95:40 | [no-match] { ... } | false | -| Patterns.cs:95:36:95:38 | access to constant B | Patterns.cs:95:21:95:40 | [no-match] { ... } | false | -| Patterns.cs:95:36:95:38 | access to constant B | Patterns.cs:95:29:95:38 | [no-match] ... or ... | false | -| PostDominance.cs:10:10:10:11 | enter M2 | PostDominance.cs:12:13:12:21 | [false] ... is ... | false | -| PostDominance.cs:10:10:10:11 | enter M2 | PostDominance.cs:12:13:12:21 | [true] ... is ... | true | -| PostDominance.cs:10:10:10:11 | enter M2 | PostDominance.cs:13:13:13:19 | return ...; | true | -| PostDominance.cs:10:10:10:11 | enter M2 | PostDominance.cs:14:9:14:29 | ...; | false | -| PostDominance.cs:12:13:12:21 | [false] ... is ... | PostDominance.cs:14:9:14:29 | ...; | false | -| PostDominance.cs:12:13:12:21 | [true] ... is ... | PostDominance.cs:13:13:13:19 | return ...; | true | -| PostDominance.cs:17:10:17:11 | enter M3 | PostDominance.cs:19:13:19:21 | [false] ... is ... | false | -| PostDominance.cs:17:10:17:11 | enter M3 | PostDominance.cs:19:13:19:21 | [true] ... is ... | true | -| PostDominance.cs:17:10:17:11 | enter M3 | PostDominance.cs:20:45:20:53 | nameof(...) | true | -| PostDominance.cs:17:10:17:11 | enter M3 | PostDominance.cs:21:9:21:29 | ...; | false | -| PostDominance.cs:19:13:19:21 | [false] ... is ... | PostDominance.cs:21:9:21:29 | ...; | false | -| PostDominance.cs:19:13:19:21 | [true] ... is ... | PostDominance.cs:20:45:20:53 | nameof(...) | true | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:10:10:10:11 | exit M2 (abnormal) | false | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:15:17:15:23 | return ...; | true | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:16:13:16:19 | case ...: | false | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:17:23:17:37 | object creation of type Exception | false | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:18:13:18:22 | case ...: | false | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:19:17:19:29 | goto default; | false | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:20:13:20:23 | case ...: | false | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:21:17:22:27 | if (...) ... | false | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:22:21:22:27 | return ...; | false | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:23:27:23:27 | 0 | false | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:24:13:24:56 | case ...: | false | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:24:32:24:32 | access to local variable s | false | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:24:32:24:55 | [false] ... && ... | false | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:24:32:24:55 | [true] ... && ... | false | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:24:48:24:48 | access to local variable s | false | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:25:17:25:37 | ...; | false | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:27:13:27:39 | case ...: | false | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:27:32:27:38 | call to method Throw | false | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:30:13:30:20 | default: | false | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:17:23:17:37 | object creation of type Exception | true | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:18:13:18:22 | case ...: | false | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:19:17:19:29 | goto default; | false | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:20:13:20:23 | case ...: | false | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:21:17:22:27 | if (...) ... | false | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:22:21:22:27 | return ...; | false | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:23:27:23:27 | 0 | false | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:24:13:24:56 | case ...: | false | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:24:32:24:32 | access to local variable s | false | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:24:32:24:55 | [false] ... && ... | false | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:24:32:24:55 | [true] ... && ... | false | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:24:48:24:48 | access to local variable s | false | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:25:17:25:37 | ...; | false | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:27:13:27:39 | case ...: | false | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:27:32:27:38 | call to method Throw | false | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:30:13:30:20 | default: | false | -| Switch.cs:18:13:18:22 | case ...: | Switch.cs:19:17:19:29 | goto default; | true | -| Switch.cs:18:13:18:22 | case ...: | Switch.cs:20:13:20:23 | case ...: | false | -| Switch.cs:18:13:18:22 | case ...: | Switch.cs:21:17:22:27 | if (...) ... | false | -| Switch.cs:18:13:18:22 | case ...: | Switch.cs:22:21:22:27 | return ...; | false | -| Switch.cs:18:13:18:22 | case ...: | Switch.cs:23:27:23:27 | 0 | false | -| Switch.cs:18:13:18:22 | case ...: | Switch.cs:24:13:24:56 | case ...: | false | -| Switch.cs:18:13:18:22 | case ...: | Switch.cs:24:32:24:32 | access to local variable s | false | -| Switch.cs:18:13:18:22 | case ...: | Switch.cs:24:32:24:55 | [false] ... && ... | false | -| Switch.cs:18:13:18:22 | case ...: | Switch.cs:24:32:24:55 | [true] ... && ... | false | -| Switch.cs:18:13:18:22 | case ...: | Switch.cs:24:48:24:48 | access to local variable s | false | -| Switch.cs:18:13:18:22 | case ...: | Switch.cs:25:17:25:37 | ...; | false | -| Switch.cs:18:13:18:22 | case ...: | Switch.cs:27:13:27:39 | case ...: | false | -| Switch.cs:18:13:18:22 | case ...: | Switch.cs:27:32:27:38 | call to method Throw | false | -| Switch.cs:20:13:20:23 | case ...: | Switch.cs:21:17:22:27 | if (...) ... | true | -| Switch.cs:20:13:20:23 | case ...: | Switch.cs:22:21:22:27 | return ...; | true | -| Switch.cs:20:13:20:23 | case ...: | Switch.cs:23:27:23:27 | 0 | true | -| Switch.cs:20:13:20:23 | case ...: | Switch.cs:24:13:24:56 | case ...: | false | -| Switch.cs:20:13:20:23 | case ...: | Switch.cs:24:32:24:32 | access to local variable s | false | -| Switch.cs:20:13:20:23 | case ...: | Switch.cs:24:32:24:55 | [false] ... && ... | false | -| Switch.cs:20:13:20:23 | case ...: | Switch.cs:24:32:24:55 | [true] ... && ... | false | -| Switch.cs:20:13:20:23 | case ...: | Switch.cs:24:48:24:48 | access to local variable s | false | -| Switch.cs:20:13:20:23 | case ...: | Switch.cs:25:17:25:37 | ...; | false | -| Switch.cs:20:13:20:23 | case ...: | Switch.cs:27:13:27:39 | case ...: | false | -| Switch.cs:20:13:20:23 | case ...: | Switch.cs:27:32:27:38 | call to method Throw | false | -| Switch.cs:21:17:22:27 | if (...) ... | Switch.cs:22:21:22:27 | return ...; | true | -| Switch.cs:21:17:22:27 | if (...) ... | Switch.cs:23:27:23:27 | 0 | false | -| Switch.cs:24:13:24:56 | case ...: | Switch.cs:24:32:24:32 | access to local variable s | true | -| Switch.cs:24:13:24:56 | case ...: | Switch.cs:24:32:24:55 | [false] ... && ... | true | -| Switch.cs:24:13:24:56 | case ...: | Switch.cs:24:32:24:55 | [true] ... && ... | true | -| Switch.cs:24:13:24:56 | case ...: | Switch.cs:24:48:24:48 | access to local variable s | true | -| Switch.cs:24:13:24:56 | case ...: | Switch.cs:25:17:25:37 | ...; | true | -| Switch.cs:24:32:24:32 | access to local variable s | Switch.cs:24:32:24:55 | [true] ... && ... | true | -| Switch.cs:24:32:24:32 | access to local variable s | Switch.cs:24:48:24:48 | access to local variable s | true | -| Switch.cs:24:32:24:32 | access to local variable s | Switch.cs:25:17:25:37 | ...; | true | -| Switch.cs:24:32:24:55 | [true] ... && ... | Switch.cs:25:17:25:37 | ...; | true | -| Switch.cs:24:48:24:48 | access to local variable s | Switch.cs:24:32:24:55 | [true] ... && ... | true | -| Switch.cs:24:48:24:48 | access to local variable s | Switch.cs:25:17:25:37 | ...; | true | -| Switch.cs:27:13:27:39 | case ...: | Switch.cs:27:32:27:38 | call to method Throw | true | -| Switch.cs:44:10:44:11 | enter M4 | Switch.cs:49:17:49:22 | break; | true | -| Switch.cs:44:10:44:11 | enter M4 | Switch.cs:50:13:50:39 | case ...: | false | -| Switch.cs:44:10:44:11 | enter M4 | Switch.cs:50:30:50:30 | access to parameter o | false | -| Switch.cs:44:10:44:11 | enter M4 | Switch.cs:51:17:51:22 | break; | false | -| Switch.cs:50:13:50:39 | case ...: | Switch.cs:50:30:50:30 | access to parameter o | true | -| Switch.cs:50:13:50:39 | case ...: | Switch.cs:51:17:51:22 | break; | true | -| Switch.cs:50:30:50:30 | access to parameter o | Switch.cs:51:17:51:22 | break; | true | -| Switch.cs:55:10:55:11 | enter M5 | Switch.cs:61:13:61:19 | case ...: | false | -| Switch.cs:55:10:55:11 | enter M5 | Switch.cs:62:17:62:22 | break; | false | -| Switch.cs:61:13:61:19 | case ...: | Switch.cs:62:17:62:22 | break; | true | -| Switch.cs:66:10:66:11 | enter M6 | Switch.cs:66:10:66:11 | exit M6 (normal) | false | -| Switch.cs:66:10:66:11 | enter M6 | Switch.cs:72:13:72:20 | case ...: | false | -| Switch.cs:66:10:66:11 | enter M6 | Switch.cs:73:17:73:22 | break; | false | -| Switch.cs:72:13:72:20 | case ...: | Switch.cs:73:17:73:22 | break; | true | -| Switch.cs:77:10:77:11 | enter M7 | Switch.cs:82:24:82:27 | true | true | -| Switch.cs:77:10:77:11 | enter M7 | Switch.cs:83:13:83:19 | case ...: | false | -| Switch.cs:77:10:77:11 | enter M7 | Switch.cs:84:17:85:26 | if (...) ... | false | -| Switch.cs:77:10:77:11 | enter M7 | Switch.cs:85:21:85:26 | break; | false | -| Switch.cs:77:10:77:11 | enter M7 | Switch.cs:86:24:86:27 | true | false | -| Switch.cs:77:10:77:11 | enter M7 | Switch.cs:88:16:88:20 | false | false | -| Switch.cs:83:13:83:19 | case ...: | Switch.cs:84:17:85:26 | if (...) ... | true | -| Switch.cs:83:13:83:19 | case ...: | Switch.cs:85:21:85:26 | break; | true | -| Switch.cs:83:13:83:19 | case ...: | Switch.cs:86:24:86:27 | true | true | -| Switch.cs:84:17:85:26 | if (...) ... | Switch.cs:85:21:85:26 | break; | true | -| Switch.cs:84:17:85:26 | if (...) ... | Switch.cs:86:24:86:27 | true | false | -| Switch.cs:91:10:91:11 | enter M8 | Switch.cs:96:24:96:27 | true | true | -| Switch.cs:91:10:91:11 | enter M8 | Switch.cs:98:16:98:20 | false | false | -| Switch.cs:101:9:101:10 | enter M9 | Switch.cs:103:17:103:25 | access to property Length | false | -| Switch.cs:105:13:105:19 | case ...: | Switch.cs:105:28:105:28 | 0 | true | -| Switch.cs:105:13:105:19 | case ...: | Switch.cs:106:13:106:19 | case ...: | false | -| Switch.cs:105:13:105:19 | case ...: | Switch.cs:106:28:106:28 | 1 | false | -| Switch.cs:105:13:105:19 | case ...: | Switch.cs:108:17:108:17 | 1 | false | -| Switch.cs:106:13:106:19 | case ...: | Switch.cs:106:28:106:28 | 1 | true | -| Switch.cs:106:13:106:19 | case ...: | Switch.cs:108:17:108:17 | 1 | false | -| Switch.cs:113:9:113:11 | enter M10 | Switch.cs:117:25:117:25 | access to parameter s | true | -| Switch.cs:113:9:113:11 | enter M10 | Switch.cs:117:44:117:44 | 1 | true | -| Switch.cs:117:25:117:25 | access to parameter s | Switch.cs:117:44:117:44 | 1 | true | -| Switch.cs:118:13:118:34 | case ...: | Switch.cs:118:25:118:25 | access to parameter s | true | -| Switch.cs:118:13:118:34 | case ...: | Switch.cs:118:43:118:43 | 2 | true | -| Switch.cs:118:25:118:25 | access to parameter s | Switch.cs:118:43:118:43 | 2 | true | -| Switch.cs:123:10:123:12 | enter M11 | Switch.cs:125:13:125:48 | [true] ... switch { ... } | true | -| Switch.cs:123:10:123:12 | enter M11 | Switch.cs:125:24:125:34 | [false] ... => ... | true | -| Switch.cs:123:10:123:12 | enter M11 | Switch.cs:125:24:125:34 | [true] ... => ... | true | -| Switch.cs:123:10:123:12 | enter M11 | Switch.cs:125:34:125:34 | access to local variable b | true | -| Switch.cs:123:10:123:12 | enter M11 | Switch.cs:125:37:125:37 | _ | false | -| Switch.cs:123:10:123:12 | enter M11 | Switch.cs:125:37:125:46 | [false] ... => ... | false | -| Switch.cs:123:10:123:12 | enter M11 | Switch.cs:125:42:125:46 | false | false | -| Switch.cs:123:10:123:12 | enter M11 | Switch.cs:126:13:126:19 | return ...; | true | -| Switch.cs:125:13:125:48 | [true] ... switch { ... } | Switch.cs:126:13:126:19 | return ...; | true | -| Switch.cs:125:24:125:34 | [true] ... => ... | Switch.cs:125:13:125:48 | [true] ... switch { ... } | true | -| Switch.cs:125:24:125:34 | [true] ... => ... | Switch.cs:126:13:126:19 | return ...; | true | -| Switch.cs:125:34:125:34 | access to local variable b | Switch.cs:125:13:125:48 | [true] ... switch { ... } | true | -| Switch.cs:125:34:125:34 | access to local variable b | Switch.cs:125:24:125:34 | [false] ... => ... | false | -| Switch.cs:125:34:125:34 | access to local variable b | Switch.cs:125:24:125:34 | [true] ... => ... | true | -| Switch.cs:125:34:125:34 | access to local variable b | Switch.cs:126:13:126:19 | return ...; | true | -| Switch.cs:125:37:125:37 | _ | Switch.cs:125:37:125:46 | [false] ... => ... | true | -| Switch.cs:125:37:125:37 | _ | Switch.cs:125:42:125:46 | false | true | -| Switch.cs:125:42:125:46 | false | Switch.cs:125:37:125:46 | [false] ... => ... | false | -| Switch.cs:129:12:129:14 | enter M12 | Switch.cs:131:16:131:66 | call to method ToString | true | -| Switch.cs:129:12:129:14 | enter M12 | Switch.cs:131:17:131:53 | [non-null] ... switch { ... } | true | -| Switch.cs:129:12:129:14 | enter M12 | Switch.cs:131:28:131:40 | [non-null] ... => ... | true | -| Switch.cs:129:12:129:14 | enter M12 | Switch.cs:131:28:131:40 | [null] ... => ... | true | -| Switch.cs:129:12:129:14 | enter M12 | Switch.cs:131:40:131:40 | access to local variable s | true | -| Switch.cs:129:12:129:14 | enter M12 | Switch.cs:131:43:131:43 | _ | false | -| Switch.cs:129:12:129:14 | enter M12 | Switch.cs:131:43:131:51 | [null] ... => ... | false | -| Switch.cs:129:12:129:14 | enter M12 | Switch.cs:131:48:131:51 | null | false | -| Switch.cs:131:17:131:53 | [non-null] ... switch { ... } | Switch.cs:131:16:131:66 | call to method ToString | false | -| Switch.cs:131:28:131:40 | [non-null] ... => ... | Switch.cs:131:16:131:66 | call to method ToString | false | -| Switch.cs:131:28:131:40 | [non-null] ... => ... | Switch.cs:131:17:131:53 | [non-null] ... switch { ... } | false | -| Switch.cs:131:40:131:40 | access to local variable s | Switch.cs:131:16:131:66 | call to method ToString | false | -| Switch.cs:131:40:131:40 | access to local variable s | Switch.cs:131:17:131:53 | [non-null] ... switch { ... } | false | -| Switch.cs:131:40:131:40 | access to local variable s | Switch.cs:131:28:131:40 | [non-null] ... => ... | false | -| Switch.cs:131:40:131:40 | access to local variable s | Switch.cs:131:28:131:40 | [null] ... => ... | true | -| Switch.cs:131:43:131:43 | _ | Switch.cs:131:43:131:51 | [null] ... => ... | true | -| Switch.cs:131:43:131:43 | _ | Switch.cs:131:48:131:51 | null | true | -| Switch.cs:131:48:131:51 | null | Switch.cs:131:43:131:51 | [null] ... => ... | true | -| Switch.cs:134:9:134:11 | enter M13 | Switch.cs:138:13:138:20 | default: | false | -| Switch.cs:134:9:134:11 | enter M13 | Switch.cs:139:28:139:28 | 1 | true | -| Switch.cs:134:9:134:11 | enter M13 | Switch.cs:140:13:140:19 | case ...: | false | -| Switch.cs:134:9:134:11 | enter M13 | Switch.cs:140:28:140:28 | 2 | false | -| Switch.cs:140:13:140:19 | case ...: | Switch.cs:138:13:138:20 | default: | false | -| Switch.cs:140:13:140:19 | case ...: | Switch.cs:140:28:140:28 | 2 | true | -| Switch.cs:144:9:144:11 | enter M14 | Switch.cs:148:28:148:28 | 1 | true | -| Switch.cs:144:9:144:11 | enter M14 | Switch.cs:149:13:149:20 | default: | false | -| Switch.cs:144:9:144:11 | enter M14 | Switch.cs:150:13:150:19 | case ...: | false | -| Switch.cs:144:9:144:11 | enter M14 | Switch.cs:150:28:150:28 | 2 | false | -| Switch.cs:150:13:150:19 | case ...: | Switch.cs:149:13:149:20 | default: | false | -| Switch.cs:150:13:150:19 | case ...: | Switch.cs:150:28:150:28 | 2 | true | -| Switch.cs:154:10:154:12 | enter M15 | Switch.cs:154:10:154:12 | exit M15 (abnormal) | false | -| Switch.cs:154:10:154:12 | enter M15 | Switch.cs:156:36:156:38 | "a" | true | -| Switch.cs:154:10:154:12 | enter M15 | Switch.cs:156:41:156:45 | false | false | -| Switch.cs:154:10:154:12 | enter M15 | Switch.cs:156:50:156:52 | "b" | false | -| Switch.cs:156:17:156:54 | ... switch { ... } | Switch.cs:158:13:158:49 | ...; | true | -| Switch.cs:156:17:156:54 | ... switch { ... } | Switch.cs:160:13:160:49 | ...; | false | -| Switch.cs:156:41:156:45 | false | Switch.cs:156:50:156:52 | "b" | true | -| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:168:13:168:19 | case ...: | false | -| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:171:13:171:19 | case ...: | false | -| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:172:17:172:46 | ...; | false | -| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:174:13:174:20 | default: | false | -| Switch.cs:168:13:168:19 | case ...: | Switch.cs:171:13:171:19 | case ...: | false | -| Switch.cs:168:13:168:19 | case ...: | Switch.cs:172:17:172:46 | ...; | false | -| Switch.cs:168:13:168:19 | case ...: | Switch.cs:174:13:174:20 | default: | false | -| Switch.cs:171:13:171:19 | case ...: | Switch.cs:172:17:172:46 | ...; | true | -| Switch.cs:171:13:171:19 | case ...: | Switch.cs:174:13:174:20 | default: | false | -| TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:7:13:7:22 | [false] ... is ... | false | -| TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:7:13:7:22 | [true] ... is ... | true | -| TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:7:25:7:25 | ; | true | -| TypeAccesses.cs:7:13:7:22 | [true] ... is ... | TypeAccesses.cs:7:25:7:25 | ; | true | -| VarDecls.cs:19:7:19:8 | enter M3 | VarDecls.cs:25:24:25:24 | access to local variable x | true | -| VarDecls.cs:19:7:19:8 | enter M3 | VarDecls.cs:25:28:25:28 | access to local variable y | false | -| cflow.cs:5:17:5:20 | enter Main | cflow.cs:12:13:12:49 | ...; | true | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:5:17:5:20 | exit Main (normal) | false | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:15:9:17:9 | {...} | true | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:19:9:22:25 | do ... while (...); | false | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:20:9:22:9 | {...} | false | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:24:9:34:9 | for (...;...;...) ... | false | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:24:25:24:25 | access to local variable i | false | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:24:34:24:34 | access to local variable i | false | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:25:9:34:9 | {...} | false | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:26:17:26:40 | [false] ... && ... | false | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:26:17:26:40 | [true] ... && ... | false | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:26:31:26:31 | access to local variable i | false | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:27:17:27:46 | ...; | false | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:28:18:33:37 | if (...) ... | false | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:29:17:29:42 | ...; | false | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:30:18:33:37 | if (...) ... | false | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:31:17:31:42 | ...; | false | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:33:17:33:37 | ...; | false | -| cflow.cs:20:9:22:9 | {...} | cflow.cs:5:17:5:20 | exit Main (normal) | false | -| cflow.cs:20:9:22:9 | {...} | cflow.cs:24:9:34:9 | for (...;...;...) ... | false | -| cflow.cs:20:9:22:9 | {...} | cflow.cs:24:25:24:25 | access to local variable i | false | -| cflow.cs:20:9:22:9 | {...} | cflow.cs:24:34:24:34 | access to local variable i | false | -| cflow.cs:20:9:22:9 | {...} | cflow.cs:25:9:34:9 | {...} | false | -| cflow.cs:20:9:22:9 | {...} | cflow.cs:26:17:26:40 | [false] ... && ... | false | -| cflow.cs:20:9:22:9 | {...} | cflow.cs:26:17:26:40 | [true] ... && ... | false | -| cflow.cs:20:9:22:9 | {...} | cflow.cs:26:31:26:31 | access to local variable i | false | -| cflow.cs:20:9:22:9 | {...} | cflow.cs:27:17:27:46 | ...; | false | -| cflow.cs:20:9:22:9 | {...} | cflow.cs:28:18:33:37 | if (...) ... | false | -| cflow.cs:20:9:22:9 | {...} | cflow.cs:29:17:29:42 | ...; | false | -| cflow.cs:20:9:22:9 | {...} | cflow.cs:30:18:33:37 | if (...) ... | false | -| cflow.cs:20:9:22:9 | {...} | cflow.cs:31:17:31:42 | ...; | false | -| cflow.cs:20:9:22:9 | {...} | cflow.cs:33:17:33:37 | ...; | false | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:5:17:5:20 | exit Main (normal) | false | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:24:34:24:34 | access to local variable i | true | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:25:9:34:9 | {...} | true | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:26:17:26:40 | [false] ... && ... | true | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:26:17:26:40 | [true] ... && ... | true | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:26:31:26:31 | access to local variable i | true | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:27:17:27:46 | ...; | true | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:28:18:33:37 | if (...) ... | true | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:29:17:29:42 | ...; | true | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:30:18:33:37 | if (...) ... | true | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:31:17:31:42 | ...; | true | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:33:17:33:37 | ...; | true | -| cflow.cs:25:9:34:9 | {...} | cflow.cs:26:17:26:40 | [true] ... && ... | true | -| cflow.cs:25:9:34:9 | {...} | cflow.cs:26:31:26:31 | access to local variable i | true | -| cflow.cs:25:9:34:9 | {...} | cflow.cs:27:17:27:46 | ...; | true | -| cflow.cs:26:17:26:40 | [false] ... && ... | cflow.cs:28:18:33:37 | if (...) ... | false | -| cflow.cs:26:17:26:40 | [false] ... && ... | cflow.cs:29:17:29:42 | ...; | false | -| cflow.cs:26:17:26:40 | [false] ... && ... | cflow.cs:30:18:33:37 | if (...) ... | false | -| cflow.cs:26:17:26:40 | [false] ... && ... | cflow.cs:31:17:31:42 | ...; | false | -| cflow.cs:26:17:26:40 | [false] ... && ... | cflow.cs:33:17:33:37 | ...; | false | -| cflow.cs:26:17:26:40 | [true] ... && ... | cflow.cs:27:17:27:46 | ...; | true | -| cflow.cs:26:31:26:31 | access to local variable i | cflow.cs:26:17:26:40 | [true] ... && ... | true | -| cflow.cs:26:31:26:31 | access to local variable i | cflow.cs:27:17:27:46 | ...; | true | -| cflow.cs:28:18:33:37 | if (...) ... | cflow.cs:29:17:29:42 | ...; | true | -| cflow.cs:28:18:33:37 | if (...) ... | cflow.cs:30:18:33:37 | if (...) ... | false | -| cflow.cs:28:18:33:37 | if (...) ... | cflow.cs:31:17:31:42 | ...; | false | -| cflow.cs:28:18:33:37 | if (...) ... | cflow.cs:33:17:33:37 | ...; | false | -| cflow.cs:30:18:33:37 | if (...) ... | cflow.cs:31:17:31:42 | ...; | true | -| cflow.cs:30:18:33:37 | if (...) ... | cflow.cs:33:17:33:37 | ...; | false | -| cflow.cs:41:13:41:19 | case ...: | cflow.cs:42:17:42:39 | ...; | true | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:37:17:37:22 | exit Switch | false | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:45:17:45:39 | ...; | true | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:47:13:47:19 | case ...: | false | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:48:17:48:39 | ...; | false | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:51:9:59:9 | switch (...) {...} | false | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:54:17:54:48 | ...; | false | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:56:13:56:20 | default: | false | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:60:9:66:9 | switch (...) {...} | false | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:63:17:64:55 | if (...) ... | false | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:63:21:63:34 | [false] !... | false | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:63:21:63:34 | [true] !... | false | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:64:27:64:54 | object creation of type NullReferenceException | false | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:65:17:65:22 | break; | false | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:67:16:67:16 | access to parameter a | false | -| cflow.cs:47:13:47:19 | case ...: | cflow.cs:48:17:48:39 | ...; | true | -| cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:54:17:54:48 | ...; | true | -| cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:56:13:56:20 | default: | false | -| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:63:17:64:55 | if (...) ... | true | -| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:63:21:63:34 | [false] !... | true | -| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:63:21:63:34 | [true] !... | true | -| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:64:27:64:54 | object creation of type NullReferenceException | true | -| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:65:17:65:22 | break; | true | -| cflow.cs:63:17:64:55 | if (...) ... | cflow.cs:63:21:63:34 | [false] !... | true | -| cflow.cs:63:17:64:55 | if (...) ... | cflow.cs:63:21:63:34 | [true] !... | false | -| cflow.cs:63:17:64:55 | if (...) ... | cflow.cs:64:27:64:54 | object creation of type NullReferenceException | false | -| cflow.cs:63:17:64:55 | if (...) ... | cflow.cs:65:17:65:22 | break; | true | -| cflow.cs:63:21:63:34 | [false] !... | cflow.cs:65:17:65:22 | break; | false | -| cflow.cs:63:21:63:34 | [true] !... | cflow.cs:64:27:64:54 | object creation of type NullReferenceException | true | -| cflow.cs:70:18:70:18 | enter M | cflow.cs:73:13:73:19 | return ...; | true | -| cflow.cs:70:18:70:18 | enter M | cflow.cs:74:9:81:9 | if (...) ... | false | -| cflow.cs:70:18:70:18 | enter M | cflow.cs:75:9:77:9 | {...} | false | -| cflow.cs:70:18:70:18 | enter M | cflow.cs:79:9:81:9 | {...} | false | -| cflow.cs:74:9:81:9 | if (...) ... | cflow.cs:75:9:77:9 | {...} | true | -| cflow.cs:74:9:81:9 | if (...) ... | cflow.cs:79:9:81:9 | {...} | false | -| cflow.cs:84:18:84:19 | enter M2 | cflow.cs:86:13:86:37 | [true] ... && ... | true | -| cflow.cs:84:18:84:19 | enter M2 | cflow.cs:86:26:86:26 | access to parameter s | true | -| cflow.cs:84:18:84:19 | enter M2 | cflow.cs:87:13:87:33 | ...; | true | -| cflow.cs:86:13:86:37 | [true] ... && ... | cflow.cs:87:13:87:33 | ...; | true | -| cflow.cs:86:26:86:26 | access to parameter s | cflow.cs:86:13:86:37 | [true] ... && ... | true | -| cflow.cs:86:26:86:26 | access to parameter s | cflow.cs:87:13:87:33 | ...; | true | -| cflow.cs:90:18:90:19 | enter M3 | cflow.cs:90:18:90:19 | exit M3 (normal) | false | -| cflow.cs:90:18:90:19 | enter M3 | cflow.cs:93:45:93:47 | "s" | true | -| cflow.cs:90:18:90:19 | enter M3 | cflow.cs:94:9:94:29 | ...; | false | -| cflow.cs:90:18:90:19 | enter M3 | cflow.cs:97:13:97:55 | ...; | false | -| cflow.cs:90:18:90:19 | enter M3 | cflow.cs:99:9:100:42 | if (...) ... | false | -| cflow.cs:90:18:90:19 | enter M3 | cflow.cs:100:13:100:42 | ...; | false | -| cflow.cs:90:18:90:19 | enter M3 | cflow.cs:102:9:103:36 | if (...) ... | false | -| cflow.cs:90:18:90:19 | enter M3 | cflow.cs:103:13:103:36 | ...; | false | -| cflow.cs:94:9:94:29 | ...; | cflow.cs:97:13:97:55 | ...; | true | -| cflow.cs:99:9:100:42 | if (...) ... | cflow.cs:100:13:100:42 | ...; | true | -| cflow.cs:102:9:103:36 | if (...) ... | cflow.cs:103:13:103:36 | ...; | true | -| cflow.cs:106:18:106:19 | enter M4 | cflow.cs:109:9:115:9 | {...} | true | -| cflow.cs:106:18:106:19 | enter M4 | cflow.cs:110:20:110:23 | true | true | -| cflow.cs:106:18:106:19 | enter M4 | cflow.cs:111:13:113:13 | {...} | true | -| cflow.cs:106:18:106:19 | enter M4 | cflow.cs:116:9:116:29 | ...; | false | -| cflow.cs:110:20:110:23 | true | cflow.cs:111:13:113:13 | {...} | true | -| cflow.cs:127:19:127:21 | enter get_Prop | cflow.cs:127:48:127:49 | "" | true | -| cflow.cs:127:19:127:21 | enter get_Prop | cflow.cs:127:53:127:57 | this access | false | -| cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:146:10:146:12 | exit For (normal) | false | -| cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:150:13:150:33 | ...; | true | -| cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:152:9:157:9 | for (...;...;...) ... | false | -| cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:152:18:152:18 | access to local variable x | false | -| cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:153:9:157:9 | {...} | false | -| cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:156:17:156:22 | break; | false | -| cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:160:9:165:9 | {...} | false | -| cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:164:17:164:22 | break; | false | -| cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:167:16:167:16 | access to local variable x | false | -| cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:168:9:171:9 | {...} | false | -| cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:173:9:176:9 | for (...;...;...) ... | false | -| cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:173:32:173:32 | access to local variable i | false | -| cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:174:9:176:9 | {...} | false | -| cflow.cs:153:9:157:9 | {...} | cflow.cs:146:10:146:12 | exit For (normal) | true | -| cflow.cs:153:9:157:9 | {...} | cflow.cs:152:18:152:18 | access to local variable x | false | -| cflow.cs:153:9:157:9 | {...} | cflow.cs:156:17:156:22 | break; | true | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:188:38:188:39 | After access to parameter b2 [false] | true | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:188:38:188:39 | After access to parameter b2 [true] | true | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:190:21:190:22 | After access to parameter b1 [false] | true | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:190:21:190:22 | After access to parameter b1 [true] | true | +| Finally.cs:188:13:191:13 | After catch (...) {...} [match] | Finally.cs:188:38:188:39 | After access to parameter b2 [false] | false | +| Finally.cs:188:13:191:13 | After catch (...) {...} [match] | Finally.cs:188:38:188:39 | After access to parameter b2 [true] | true | +| Finally.cs:188:13:191:13 | After catch (...) {...} [match] | Finally.cs:190:21:190:22 | After access to parameter b1 [false] | true | +| Finally.cs:188:13:191:13 | After catch (...) {...} [match] | Finally.cs:190:21:190:22 | After access to parameter b1 [true] | true | +| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:188:13:191:13 | After catch (...) {...} [match] | true | +| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:188:38:188:39 | After access to parameter b2 [false] | true | +| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:188:38:188:39 | After access to parameter b2 [true] | true | +| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:190:21:190:22 | After access to parameter b1 [false] | true | +| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:190:21:190:22 | After access to parameter b1 [true] | true | +| Finally.cs:188:38:188:39 | After access to parameter b2 [true] | Finally.cs:190:21:190:22 | After access to parameter b1 [false] | false | +| Finally.cs:188:38:188:39 | After access to parameter b2 [true] | Finally.cs:190:21:190:22 | After access to parameter b1 [true] | true | +| Finally.cs:195:10:195:12 | Entry | Finally.cs:199:17:199:18 | After access to parameter b1 [false] | false | +| Finally.cs:195:10:195:12 | Entry | Finally.cs:199:17:199:18 | After access to parameter b1 [true] | true | +| Finally.cs:195:10:195:12 | Entry | Finally.cs:199:27:199:42 | After object creation of type ExceptionA | true | +| Finally.cs:202:9:212:9 | {...} | Finally.cs:205:21:205:22 | After access to parameter b2 [false] | false | +| Finally.cs:202:9:212:9 | {...} | Finally.cs:205:21:205:22 | After access to parameter b2 [true] | true | +| Finally.cs:202:9:212:9 | {...} | Finally.cs:205:31:205:46 | After object creation of type ExceptionB | true | +| Finally.cs:208:13:210:13 | {...} | Finally.cs:197:9:212:9 | After try {...} ... | false | +| Finally.cs:208:13:210:13 | {...} | Finally.cs:203:13:210:13 | After try {...} ... | false | +| Finally.cs:208:13:210:13 | {...} | Finally.cs:209:21:209:22 | After access to parameter b3 [false] | false | +| Finally.cs:208:13:210:13 | {...} | Finally.cs:209:21:209:22 | After access to parameter b3 [true] | true | +| Finally.cs:233:10:233:12 | Entry | Finally.cs:239:21:239:22 | After access to parameter b1 [false] | false | +| Finally.cs:233:10:233:12 | Entry | Finally.cs:239:21:239:22 | After access to parameter b1 [true] | true | +| Finally.cs:233:10:233:12 | Entry | Finally.cs:240:27:240:42 | After object creation of type ExceptionA | true | +| Finally.cs:243:13:253:13 | {...} | Finally.cs:246:25:246:26 | After access to parameter b2 [false] | false | +| Finally.cs:243:13:253:13 | {...} | Finally.cs:246:25:246:26 | After access to parameter b2 [true] | true | +| Finally.cs:243:13:253:13 | {...} | Finally.cs:247:31:247:46 | After object creation of type ExceptionA | true | +| Foreach.cs:6:10:6:11 | Entry | Foreach.cs:8:22:8:24 | String arg | false | +| Foreach.cs:6:10:6:11 | Entry | Foreach.cs:8:29:8:32 | After access to parameter args [empty] | true | +| Foreach.cs:6:10:6:11 | Entry | Foreach.cs:8:29:8:32 | After access to parameter args [non-empty] | false | +| Foreach.cs:12:10:12:11 | Entry | Foreach.cs:14:22:14:22 | String _ | false | +| Foreach.cs:12:10:12:11 | Entry | Foreach.cs:14:27:14:30 | After access to parameter args [empty] | true | +| Foreach.cs:12:10:12:11 | Entry | Foreach.cs:14:27:14:30 | After access to parameter args [non-empty] | false | +| Foreach.cs:18:10:18:11 | Entry | Foreach.cs:20:27:20:27 | After access to parameter e [non-null] | false | +| Foreach.cs:18:10:18:11 | Entry | Foreach.cs:20:27:20:27 | After access to parameter e [null] | true | +| Foreach.cs:18:10:18:11 | Entry | Foreach.cs:20:27:20:38 | After call to method ToArray [non-null] | false | +| Foreach.cs:20:27:20:27 | After access to parameter e [non-null] | Foreach.cs:20:27:20:38 | After call to method ToArray [non-null] | false | +| Foreach.cs:20:27:20:38 | After call to method ToArray [null] | Foreach.cs:20:43:20:68 | After call to method Empty [empty] | true | +| Foreach.cs:20:27:20:38 | After call to method ToArray [null] | Foreach.cs:20:43:20:68 | After call to method Empty [non-empty] | false | +| Foreach.cs:24:10:24:11 | Entry | Foreach.cs:26:18:26:31 | Before (..., ...) | false | +| Foreach.cs:24:10:24:11 | Entry | Foreach.cs:26:36:26:39 | After access to parameter args [empty] | true | +| Foreach.cs:24:10:24:11 | Entry | Foreach.cs:26:36:26:39 | After access to parameter args [non-empty] | false | +| Foreach.cs:30:10:30:11 | Entry | Foreach.cs:32:18:32:27 | Before (..., ...) | false | +| Foreach.cs:30:10:30:11 | Entry | Foreach.cs:32:32:32:35 | After access to parameter args [empty] | true | +| Foreach.cs:30:10:30:11 | Entry | Foreach.cs:32:32:32:35 | After access to parameter args [non-empty] | false | +| Foreach.cs:36:10:36:11 | Entry | Foreach.cs:38:18:38:34 | Before (..., ...) | false | +| Foreach.cs:36:10:36:11 | Entry | Foreach.cs:38:39:38:42 | After access to parameter args [empty] | true | +| Foreach.cs:36:10:36:11 | Entry | Foreach.cs:38:39:38:42 | After access to parameter args [non-empty] | false | +| LoopUnrolling.cs:7:10:7:11 | Entry | LoopUnrolling.cs:9:13:9:28 | After ... == ... [false] | false | +| LoopUnrolling.cs:7:10:7:11 | Entry | LoopUnrolling.cs:9:13:9:28 | After ... == ... [true] | true | +| LoopUnrolling.cs:7:10:7:11 | Entry | LoopUnrolling.cs:11:9:12:35 | After foreach (... ... in ...) ... | false | +| LoopUnrolling.cs:7:10:7:11 | Entry | LoopUnrolling.cs:11:22:11:24 | String arg | false | +| LoopUnrolling.cs:7:10:7:11 | Entry | LoopUnrolling.cs:11:29:11:32 | After access to parameter args [empty] | false | +| LoopUnrolling.cs:7:10:7:11 | Entry | LoopUnrolling.cs:11:29:11:32 | After access to parameter args [non-empty] | false | +| LoopUnrolling.cs:9:13:9:28 | After ... == ... [false] | LoopUnrolling.cs:11:22:11:24 | String arg | false | +| LoopUnrolling.cs:9:13:9:28 | After ... == ... [false] | LoopUnrolling.cs:11:29:11:32 | After access to parameter args [empty] | true | +| LoopUnrolling.cs:9:13:9:28 | After ... == ... [false] | LoopUnrolling.cs:11:29:11:32 | After access to parameter args [non-empty] | false | +| LoopUnrolling.cs:15:10:15:11 | Entry | LoopUnrolling.cs:18:22:18:22 | String x | false | +| LoopUnrolling.cs:15:10:15:11 | Entry | LoopUnrolling.cs:18:27:18:28 | After access to local variable xs [empty] | true | +| LoopUnrolling.cs:15:10:15:11 | Entry | LoopUnrolling.cs:18:27:18:28 | After access to local variable xs [non-empty] | false | +| LoopUnrolling.cs:22:10:22:11 | Entry | LoopUnrolling.cs:24:22:24:24 | Char arg | false | +| LoopUnrolling.cs:22:10:22:11 | Entry | LoopUnrolling.cs:24:29:24:32 | After access to parameter args [empty] | true | +| LoopUnrolling.cs:22:10:22:11 | Entry | LoopUnrolling.cs:24:29:24:32 | After access to parameter args [non-empty] | false | +| LoopUnrolling.cs:22:10:22:11 | Entry | LoopUnrolling.cs:25:13:26:40 | After foreach (... ... in ...) ... | false | +| LoopUnrolling.cs:22:10:22:11 | Entry | LoopUnrolling.cs:25:26:25:29 | Char arg0 | false | +| LoopUnrolling.cs:22:10:22:11 | Entry | LoopUnrolling.cs:25:34:25:37 | After access to parameter args [empty] | false | +| LoopUnrolling.cs:22:10:22:11 | Entry | LoopUnrolling.cs:25:34:25:37 | After access to parameter args [non-empty] | false | +| LoopUnrolling.cs:24:22:24:24 | Char arg | LoopUnrolling.cs:25:26:25:29 | Char arg0 | false | +| LoopUnrolling.cs:24:22:24:24 | Char arg | LoopUnrolling.cs:25:34:25:37 | After access to parameter args [empty] | true | +| LoopUnrolling.cs:24:22:24:24 | Char arg | LoopUnrolling.cs:25:34:25:37 | After access to parameter args [non-empty] | false | +| LoopUnrolling.cs:29:10:29:11 | Entry | LoopUnrolling.cs:32:22:32:22 | String x | false | +| LoopUnrolling.cs:29:10:29:11 | Entry | LoopUnrolling.cs:32:27:32:28 | After access to local variable xs [empty] | true | +| LoopUnrolling.cs:29:10:29:11 | Entry | LoopUnrolling.cs:32:27:32:28 | After access to local variable xs [non-empty] | false | +| LoopUnrolling.cs:36:10:36:11 | Entry | LoopUnrolling.cs:40:22:40:22 | String x | false | +| LoopUnrolling.cs:36:10:36:11 | Entry | LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [empty] | true | +| LoopUnrolling.cs:36:10:36:11 | Entry | LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [non-empty] | false | +| LoopUnrolling.cs:36:10:36:11 | Entry | LoopUnrolling.cs:41:13:42:41 | After foreach (... ... in ...) ... | false | +| LoopUnrolling.cs:36:10:36:11 | Entry | LoopUnrolling.cs:41:26:41:26 | String y | false | +| LoopUnrolling.cs:36:10:36:11 | Entry | LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [empty] | false | +| LoopUnrolling.cs:36:10:36:11 | Entry | LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [non-empty] | false | +| LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:41:26:41:26 | String y | false | +| LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [empty] | true | +| LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [non-empty] | false | +| LoopUnrolling.cs:45:10:45:11 | Entry | LoopUnrolling.cs:48:27:48:28 | After access to local variable xs [empty] | true | +| LoopUnrolling.cs:45:10:45:11 | Entry | LoopUnrolling.cs:48:27:48:28 | After access to local variable xs [non-empty] | false | +| LoopUnrolling.cs:45:10:45:11 | Entry | LoopUnrolling.cs:50:9:50:13 | Label: | false | +| LoopUnrolling.cs:55:10:55:11 | Entry | LoopUnrolling.cs:58:22:58:22 | String x | false | +| LoopUnrolling.cs:55:10:55:11 | Entry | LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [empty] | true | +| LoopUnrolling.cs:55:10:55:11 | Entry | LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [non-empty] | false | +| LoopUnrolling.cs:55:10:55:11 | Entry | LoopUnrolling.cs:60:13:61:37 | After if (...) ... | false | +| LoopUnrolling.cs:55:10:55:11 | Entry | LoopUnrolling.cs:60:17:60:17 | After access to parameter b [false] | false | +| LoopUnrolling.cs:55:10:55:11 | Entry | LoopUnrolling.cs:60:17:60:17 | After access to parameter b [true] | false | +| LoopUnrolling.cs:55:10:55:11 | Entry | LoopUnrolling.cs:62:13:63:37 | After if (...) ... | false | +| LoopUnrolling.cs:55:10:55:11 | Entry | LoopUnrolling.cs:62:17:62:17 | After access to parameter b [false] | false | +| LoopUnrolling.cs:55:10:55:11 | Entry | LoopUnrolling.cs:62:17:62:17 | After access to parameter b [true] | false | +| LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:60:17:60:17 | After access to parameter b [false] | false | +| LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:60:17:60:17 | After access to parameter b [true] | true | +| LoopUnrolling.cs:60:13:61:37 | After if (...) ... | LoopUnrolling.cs:62:17:62:17 | After access to parameter b [false] | false | +| LoopUnrolling.cs:60:13:61:37 | After if (...) ... | LoopUnrolling.cs:62:17:62:17 | After access to parameter b [true] | true | +| LoopUnrolling.cs:67:10:67:11 | Entry | LoopUnrolling.cs:69:14:69:23 | After call to method Any [false] | false | +| LoopUnrolling.cs:67:10:67:11 | Entry | LoopUnrolling.cs:69:14:69:23 | After call to method Any [true] | true | +| LoopUnrolling.cs:67:10:67:11 | Entry | LoopUnrolling.cs:72:9:73:35 | After foreach (... ... in ...) ... | true | +| LoopUnrolling.cs:67:10:67:11 | Entry | LoopUnrolling.cs:72:22:72:24 | String arg | true | +| LoopUnrolling.cs:67:10:67:11 | Entry | LoopUnrolling.cs:72:29:72:32 | After access to parameter args [empty] | true | +| LoopUnrolling.cs:67:10:67:11 | Entry | LoopUnrolling.cs:72:29:72:32 | After access to parameter args [non-empty] | true | +| LoopUnrolling.cs:69:14:69:23 | After call to method Any [true] | LoopUnrolling.cs:72:22:72:24 | String arg | false | +| LoopUnrolling.cs:69:14:69:23 | After call to method Any [true] | LoopUnrolling.cs:72:29:72:32 | After access to parameter args [empty] | true | +| LoopUnrolling.cs:69:14:69:23 | After call to method Any [true] | LoopUnrolling.cs:72:29:72:32 | After access to parameter args [non-empty] | false | +| LoopUnrolling.cs:76:10:76:11 | Entry | LoopUnrolling.cs:79:22:79:22 | String x | false | +| LoopUnrolling.cs:76:10:76:11 | Entry | LoopUnrolling.cs:79:27:79:28 | After access to local variable xs [empty] | true | +| LoopUnrolling.cs:76:10:76:11 | Entry | LoopUnrolling.cs:79:27:79:28 | After access to local variable xs [non-empty] | false | +| LoopUnrolling.cs:85:10:85:12 | Entry | LoopUnrolling.cs:88:22:88:22 | String x | false | +| LoopUnrolling.cs:85:10:85:12 | Entry | LoopUnrolling.cs:88:27:88:28 | After access to local variable xs [empty] | true | +| LoopUnrolling.cs:85:10:85:12 | Entry | LoopUnrolling.cs:88:27:88:28 | After access to local variable xs [non-empty] | false | +| LoopUnrolling.cs:94:10:94:12 | Entry | LoopUnrolling.cs:97:22:97:22 | String x | false | +| LoopUnrolling.cs:94:10:94:12 | Entry | LoopUnrolling.cs:97:27:97:28 | After access to local variable xs [empty] | true | +| LoopUnrolling.cs:94:10:94:12 | Entry | LoopUnrolling.cs:97:27:97:28 | After access to local variable xs [non-empty] | false | +| NullCoalescing.cs:3:9:3:10 | Entry | NullCoalescing.cs:3:23:3:23 | After access to parameter i [non-null] | false | +| NullCoalescing.cs:3:9:3:10 | Entry | NullCoalescing.cs:3:23:3:23 | After access to parameter i [null] | true | +| NullCoalescing.cs:5:9:5:10 | Entry | NullCoalescing.cs:5:25:5:25 | After access to parameter b [non-null] | false | +| NullCoalescing.cs:5:9:5:10 | Entry | NullCoalescing.cs:5:25:5:25 | After access to parameter b [null] | true | +| NullCoalescing.cs:5:9:5:10 | Entry | NullCoalescing.cs:5:25:5:34 | After ... ?? ... [true] | false | +| NullCoalescing.cs:5:25:5:25 | After access to parameter b [non-null] | NullCoalescing.cs:5:25:5:34 | After ... ?? ... [true] | true | +| NullCoalescing.cs:7:12:7:13 | Entry | NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [non-null] | false | +| NullCoalescing.cs:7:12:7:13 | Entry | NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [null] | true | +| NullCoalescing.cs:7:12:7:13 | Entry | NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [non-null] | true | +| NullCoalescing.cs:7:12:7:13 | Entry | NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [null] | true | +| NullCoalescing.cs:7:12:7:13 | Entry | NullCoalescing.cs:7:46:7:53 | After ... ?? ... | true | +| NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [null] | NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [non-null] | false | +| NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [null] | NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [null] | true | +| NullCoalescing.cs:9:12:9:13 | Entry | NullCoalescing.cs:9:37:9:37 | After access to parameter b [false] | false | +| NullCoalescing.cs:9:12:9:13 | Entry | NullCoalescing.cs:9:37:9:37 | After access to parameter b [true] | true | +| NullCoalescing.cs:9:12:9:13 | Entry | NullCoalescing.cs:9:41:9:41 | After access to parameter s [non-null] | true | +| NullCoalescing.cs:9:12:9:13 | Entry | NullCoalescing.cs:9:41:9:41 | After access to parameter s [null] | true | +| NullCoalescing.cs:9:12:9:13 | Entry | NullCoalescing.cs:9:45:9:45 | After access to parameter s [non-null] | false | +| NullCoalescing.cs:9:12:9:13 | Entry | NullCoalescing.cs:9:45:9:45 | After access to parameter s [null] | false | +| NullCoalescing.cs:9:37:9:37 | After access to parameter b [false] | NullCoalescing.cs:9:45:9:45 | After access to parameter s [non-null] | false | +| NullCoalescing.cs:9:37:9:37 | After access to parameter b [false] | NullCoalescing.cs:9:45:9:45 | After access to parameter s [null] | true | +| NullCoalescing.cs:9:37:9:37 | After access to parameter b [true] | NullCoalescing.cs:9:41:9:41 | After access to parameter s [non-null] | false | +| NullCoalescing.cs:9:37:9:37 | After access to parameter b [true] | NullCoalescing.cs:9:41:9:41 | After access to parameter s [null] | true | +| NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [null] | NullCoalescing.cs:9:51:9:52 | After "" [non-null] | false | +| NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [null] | NullCoalescing.cs:9:51:9:52 | After "" [null] | true | +| NullCoalescing.cs:11:9:11:10 | Entry | NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [non-null] | false | +| NullCoalescing.cs:11:9:11:10 | Entry | NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [null] | true | +| NullCoalescing.cs:11:9:11:10 | Entry | NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [false] | true | +| NullCoalescing.cs:11:9:11:10 | Entry | NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [true] | true | +| NullCoalescing.cs:11:9:11:10 | Entry | NullCoalescing.cs:11:51:11:58 | After ... && ... [false] | true | +| NullCoalescing.cs:11:9:11:10 | Entry | NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [false] | true | +| NullCoalescing.cs:11:9:11:10 | Entry | NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [true] | true | +| NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [null] | NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [false] | false | +| NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [null] | NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [true] | true | +| NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [null] | NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [false] | true | +| NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [null] | NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [true] | true | +| NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [true] | NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [false] | false | +| NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [true] | NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [true] | true | +| NullCoalescing.cs:13:10:13:11 | Entry | NullCoalescing.cs:15:17:15:26 | After (...) ... [non-null] | false | +| NullCoalescing.cs:13:10:13:11 | Entry | NullCoalescing.cs:15:17:15:26 | After (...) ... [null] | true | +| NullCoalescing.cs:15:17:15:31 | After ... ?? ... | NullCoalescing.cs:16:17:16:18 | After "" [non-null] | false | +| NullCoalescing.cs:15:17:15:31 | After ... ?? ... | NullCoalescing.cs:16:17:16:18 | After "" [null] | true | +| NullCoalescing.cs:16:17:16:25 | After ... ?? ... | NullCoalescing.cs:17:13:17:19 | After (...) ... [non-null] | false | +| NullCoalescing.cs:16:17:16:25 | After ... ?? ... | NullCoalescing.cs:17:13:17:19 | After (...) ... [null] | true | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:8:13:8:23 | After ... is ... [false] | false | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:8:13:8:23 | [MatchTrue] ... is ... | true | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:12:14:18:9 | After if (...) ... | false | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:12:18:12:31 | After ... is ... [false] | false | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:12:18:12:31 | [MatchTrue] ... is ... | false | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:16:14:18:9 | After if (...) ... | false | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:16:18:16:28 | After ... is ... [false] | false | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:16:18:16:28 | [MatchTrue] ... is ... | false | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:22:18:22:22 | After "xyz" [match] | true | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:22:18:22:22 | After "xyz" [no-match] | false | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:24:18:24:23 | After Int32 i2 [match] | false | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:24:18:24:23 | After Int32 i2 [no-match] | false | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:24:30:24:35 | After ... > ... [false] | false | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:24:30:24:35 | After ... > ... [true] | false | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:27:13:27:24 | case ...: | false | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:27:18:27:23 | After Int32 i3 [match] | false | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:27:18:27:23 | After Int32 i3 [no-match] | false | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:30:18:30:26 | After String s2 [match] | false | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:30:18:30:26 | After String s2 [no-match] | false | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:33:18:33:23 | After Object v2 [match] | false | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:33:18:33:23 | After Object v2 [no-match] | false | +| Patterns.cs:8:13:8:23 | After ... is ... [false] | Patterns.cs:12:18:12:31 | After ... is ... [false] | false | +| Patterns.cs:8:13:8:23 | After ... is ... [false] | Patterns.cs:12:18:12:31 | [MatchTrue] ... is ... | true | +| Patterns.cs:8:13:8:23 | After ... is ... [false] | Patterns.cs:16:14:18:9 | After if (...) ... | false | +| Patterns.cs:8:13:8:23 | After ... is ... [false] | Patterns.cs:16:18:16:28 | After ... is ... [false] | false | +| Patterns.cs:8:13:8:23 | After ... is ... [false] | Patterns.cs:16:18:16:28 | [MatchTrue] ... is ... | false | +| Patterns.cs:12:18:12:31 | After ... is ... [false] | Patterns.cs:16:18:16:28 | After ... is ... [false] | false | +| Patterns.cs:12:18:12:31 | After ... is ... [false] | Patterns.cs:16:18:16:28 | [MatchTrue] ... is ... | true | +| Patterns.cs:22:18:22:22 | After "xyz" [no-match] | Patterns.cs:24:18:24:23 | After Int32 i2 [match] | true | +| Patterns.cs:22:18:22:22 | After "xyz" [no-match] | Patterns.cs:24:18:24:23 | After Int32 i2 [no-match] | false | +| Patterns.cs:22:18:22:22 | After "xyz" [no-match] | Patterns.cs:24:30:24:35 | After ... > ... [false] | true | +| Patterns.cs:22:18:22:22 | After "xyz" [no-match] | Patterns.cs:24:30:24:35 | After ... > ... [true] | true | +| Patterns.cs:24:18:24:23 | After Int32 i2 [match] | Patterns.cs:24:30:24:35 | After ... > ... [false] | false | +| Patterns.cs:24:18:24:23 | After Int32 i2 [match] | Patterns.cs:24:30:24:35 | After ... > ... [true] | true | +| Patterns.cs:27:13:27:24 | case ...: | Patterns.cs:27:18:27:23 | After Int32 i3 [match] | true | +| Patterns.cs:27:13:27:24 | case ...: | Patterns.cs:27:18:27:23 | After Int32 i3 [no-match] | false | +| Patterns.cs:27:13:27:24 | case ...: | Patterns.cs:30:18:30:26 | After String s2 [match] | false | +| Patterns.cs:27:13:27:24 | case ...: | Patterns.cs:30:18:30:26 | After String s2 [no-match] | false | +| Patterns.cs:27:13:27:24 | case ...: | Patterns.cs:33:18:33:23 | After Object v2 [match] | false | +| Patterns.cs:27:13:27:24 | case ...: | Patterns.cs:33:18:33:23 | After Object v2 [no-match] | false | +| Patterns.cs:27:18:27:23 | After Int32 i3 [no-match] | Patterns.cs:30:18:30:26 | After String s2 [match] | true | +| Patterns.cs:27:18:27:23 | After Int32 i3 [no-match] | Patterns.cs:30:18:30:26 | After String s2 [no-match] | false | +| Patterns.cs:27:18:27:23 | After Int32 i3 [no-match] | Patterns.cs:33:18:33:23 | After Object v2 [match] | false | +| Patterns.cs:27:18:27:23 | After Int32 i3 [no-match] | Patterns.cs:33:18:33:23 | After Object v2 [no-match] | false | +| Patterns.cs:30:18:30:26 | After String s2 [no-match] | Patterns.cs:33:18:33:23 | After Object v2 [match] | true | +| Patterns.cs:30:18:30:26 | After String s2 [no-match] | Patterns.cs:33:18:33:23 | After Object v2 [no-match] | false | +| Patterns.cs:47:24:47:25 | Entry | Patterns.cs:48:9:48:20 | [MatchTrue] ... is ... | true | +| Patterns.cs:50:24:50:25 | Entry | Patterns.cs:51:9:51:21 | After ... is ... [false] | false | +| Patterns.cs:50:24:50:25 | Entry | Patterns.cs:51:9:51:21 | [MatchTrue] ... is ... | true | +| Patterns.cs:50:24:50:25 | Entry | Patterns.cs:51:25:51:30 | After ... is ... | true | +| Patterns.cs:50:24:50:25 | Entry | Patterns.cs:51:25:51:30 | [MatchTrue] ... is ... | true | +| Patterns.cs:50:24:50:25 | Entry | Patterns.cs:51:34:51:39 | After ... is ... | false | +| Patterns.cs:50:24:50:25 | Entry | Patterns.cs:51:34:51:39 | [MatchTrue] ... is ... | false | +| Patterns.cs:51:9:51:21 | After ... is ... [false] | Patterns.cs:51:34:51:39 | [MatchTrue] ... is ... | true | +| Patterns.cs:51:9:51:21 | [MatchTrue] ... is ... | Patterns.cs:51:25:51:30 | [MatchTrue] ... is ... | true | +| Patterns.cs:53:24:53:25 | Entry | Patterns.cs:54:9:54:37 | [MatchTrue] ... is ... | true | +| Patterns.cs:56:26:56:27 | Entry | Patterns.cs:60:13:60:17 | After not ... [match] | true | +| Patterns.cs:56:26:56:27 | Entry | Patterns.cs:60:13:60:17 | After not ... [no-match] | false | +| Patterns.cs:65:26:65:27 | Entry | Patterns.cs:69:13:69:17 | After not ... [match] | true | +| Patterns.cs:65:26:65:27 | Entry | Patterns.cs:69:13:69:17 | After not ... [no-match] | false | +| Patterns.cs:65:26:65:27 | Entry | Patterns.cs:70:13:70:13 | After 2 [match] | false | +| Patterns.cs:65:26:65:27 | Entry | Patterns.cs:70:13:70:13 | After 2 [no-match] | false | +| Patterns.cs:69:13:69:17 | After not ... [no-match] | Patterns.cs:70:13:70:13 | After 2 [match] | true | +| Patterns.cs:69:13:69:17 | After not ... [no-match] | Patterns.cs:70:13:70:13 | After 2 [no-match] | false | +| Patterns.cs:74:26:74:27 | Entry | Patterns.cs:78:13:78:15 | After > ... [match] | true | +| Patterns.cs:74:26:74:27 | Entry | Patterns.cs:78:13:78:15 | After > ... [no-match] | false | +| Patterns.cs:74:26:74:27 | Entry | Patterns.cs:79:13:79:15 | After < ... [match] | false | +| Patterns.cs:74:26:74:27 | Entry | Patterns.cs:79:13:79:15 | After < ... [no-match] | false | +| Patterns.cs:74:26:74:27 | Entry | Patterns.cs:80:13:80:13 | After 1 [match] | false | +| Patterns.cs:74:26:74:27 | Entry | Patterns.cs:80:13:80:13 | After 1 [no-match] | false | +| Patterns.cs:78:13:78:15 | After > ... [no-match] | Patterns.cs:79:13:79:15 | After < ... [match] | true | +| Patterns.cs:78:13:78:15 | After > ... [no-match] | Patterns.cs:79:13:79:15 | After < ... [no-match] | false | +| Patterns.cs:78:13:78:15 | After > ... [no-match] | Patterns.cs:80:13:80:13 | After 1 [match] | false | +| Patterns.cs:78:13:78:15 | After > ... [no-match] | Patterns.cs:80:13:80:13 | After 1 [no-match] | false | +| Patterns.cs:79:13:79:15 | After < ... [no-match] | Patterns.cs:80:13:80:13 | After 1 [match] | true | +| Patterns.cs:79:13:79:15 | After < ... [no-match] | Patterns.cs:80:13:80:13 | After 1 [no-match] | false | +| Patterns.cs:85:26:85:27 | Entry | Patterns.cs:85:39:85:53 | After ... is ... [false] | false | +| Patterns.cs:85:26:85:27 | Entry | Patterns.cs:85:39:85:53 | [MatchTrue] ... is ... | true | +| Patterns.cs:87:26:87:27 | Entry | Patterns.cs:87:39:87:54 | After ... is ... [false] | false | +| Patterns.cs:87:26:87:27 | Entry | Patterns.cs:87:39:87:54 | [MatchTrue] ... is ... | true | +| Patterns.cs:93:17:93:19 | Entry | Patterns.cs:95:13:95:40 | After ... is ... [false] | false | +| Patterns.cs:93:17:93:19 | Entry | Patterns.cs:95:13:95:40 | [MatchTrue] ... is ... | true | +| PostDominance.cs:10:10:10:11 | Entry | PostDominance.cs:12:13:12:21 | After ... is ... [false] | false | +| PostDominance.cs:10:10:10:11 | Entry | PostDominance.cs:12:13:12:21 | [MatchTrue] ... is ... | true | +| PostDominance.cs:17:10:17:11 | Entry | PostDominance.cs:19:13:19:21 | After ... is ... [false] | false | +| PostDominance.cs:17:10:17:11 | Entry | PostDominance.cs:19:13:19:21 | [MatchTrue] ... is ... | true | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:10:10:10:11 | Exceptional Exit | false | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:14:18:14:20 | After "a" [match] | true | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:14:18:14:20 | After "a" [no-match] | false | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:16:13:16:19 | After case ...: [match] | false | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:16:18:16:18 | After 0 [match] | false | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:16:18:16:18 | After 0 [no-match] | false | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:18:18:18:21 | After null [match] | false | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:18:18:18:21 | After null [no-match] | false | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:20:18:20:22 | After Int32 i [match] | false | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:20:18:20:22 | After Int32 i [no-match] | false | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:21:21:21:29 | After ... == ... [false] | false | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:21:21:21:29 | After ... == ... [true] | false | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:24:18:24:25 | After String s [match] | false | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:24:18:24:25 | After String s [no-match] | false | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:24:32:24:43 | After ... > ... [false] | false | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:24:32:24:43 | After ... > ... [true] | false | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:24:32:24:55 | After ... && ... [false] | false | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:24:48:24:55 | After ... != ... [false] | false | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:24:48:24:55 | After ... != ... [true] | false | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:27:13:27:39 | case ...: | false | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:27:18:27:25 | After Double d [match] | false | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:27:18:27:25 | After Double d [no-match] | false | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:30:13:30:20 | After default: [match] | false | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:16:18:16:18 | After 0 [match] | true | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:16:18:16:18 | After 0 [no-match] | false | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:18:18:18:21 | After null [match] | false | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:18:18:18:21 | After null [no-match] | false | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:20:18:20:22 | After Int32 i [match] | false | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:20:18:20:22 | After Int32 i [no-match] | false | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:21:21:21:29 | After ... == ... [false] | false | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:21:21:21:29 | After ... == ... [true] | false | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:24:18:24:25 | After String s [match] | false | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:24:18:24:25 | After String s [no-match] | false | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:24:32:24:43 | After ... > ... [false] | false | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:24:32:24:43 | After ... > ... [true] | false | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:24:32:24:55 | After ... && ... [false] | false | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:24:48:24:55 | After ... != ... [false] | false | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:24:48:24:55 | After ... != ... [true] | false | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:27:13:27:39 | case ...: | false | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:27:18:27:25 | After Double d [match] | false | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:27:18:27:25 | After Double d [no-match] | false | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:30:13:30:20 | After default: [match] | false | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:18:18:18:21 | After null [match] | true | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:18:18:18:21 | After null [no-match] | false | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:20:18:20:22 | After Int32 i [match] | false | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:20:18:20:22 | After Int32 i [no-match] | false | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:21:21:21:29 | After ... == ... [false] | false | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:21:21:21:29 | After ... == ... [true] | false | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:24:18:24:25 | After String s [match] | false | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:24:18:24:25 | After String s [no-match] | false | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:24:32:24:43 | After ... > ... [false] | false | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:24:32:24:43 | After ... > ... [true] | false | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:24:32:24:55 | After ... && ... [false] | false | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:24:48:24:55 | After ... != ... [false] | false | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:24:48:24:55 | After ... != ... [true] | false | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:27:13:27:39 | case ...: | false | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:27:18:27:25 | After Double d [match] | false | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:27:18:27:25 | After Double d [no-match] | false | +| Switch.cs:18:18:18:21 | After null [no-match] | Switch.cs:20:18:20:22 | After Int32 i [match] | true | +| Switch.cs:18:18:18:21 | After null [no-match] | Switch.cs:20:18:20:22 | After Int32 i [no-match] | false | +| Switch.cs:18:18:18:21 | After null [no-match] | Switch.cs:21:21:21:29 | After ... == ... [false] | true | +| Switch.cs:18:18:18:21 | After null [no-match] | Switch.cs:21:21:21:29 | After ... == ... [true] | true | +| Switch.cs:18:18:18:21 | After null [no-match] | Switch.cs:24:18:24:25 | After String s [match] | false | +| Switch.cs:18:18:18:21 | After null [no-match] | Switch.cs:24:18:24:25 | After String s [no-match] | false | +| Switch.cs:18:18:18:21 | After null [no-match] | Switch.cs:24:32:24:43 | After ... > ... [false] | false | +| Switch.cs:18:18:18:21 | After null [no-match] | Switch.cs:24:32:24:43 | After ... > ... [true] | false | +| Switch.cs:18:18:18:21 | After null [no-match] | Switch.cs:24:32:24:55 | After ... && ... [false] | false | +| Switch.cs:18:18:18:21 | After null [no-match] | Switch.cs:24:48:24:55 | After ... != ... [false] | false | +| Switch.cs:18:18:18:21 | After null [no-match] | Switch.cs:24:48:24:55 | After ... != ... [true] | false | +| Switch.cs:18:18:18:21 | After null [no-match] | Switch.cs:27:13:27:39 | case ...: | false | +| Switch.cs:18:18:18:21 | After null [no-match] | Switch.cs:27:18:27:25 | After Double d [match] | false | +| Switch.cs:18:18:18:21 | After null [no-match] | Switch.cs:27:18:27:25 | After Double d [no-match] | false | +| Switch.cs:20:18:20:22 | After Int32 i [match] | Switch.cs:21:21:21:29 | After ... == ... [false] | false | +| Switch.cs:20:18:20:22 | After Int32 i [match] | Switch.cs:21:21:21:29 | After ... == ... [true] | true | +| Switch.cs:20:18:20:22 | After Int32 i [no-match] | Switch.cs:24:18:24:25 | After String s [match] | true | +| Switch.cs:20:18:20:22 | After Int32 i [no-match] | Switch.cs:24:18:24:25 | After String s [no-match] | false | +| Switch.cs:20:18:20:22 | After Int32 i [no-match] | Switch.cs:24:32:24:43 | After ... > ... [false] | true | +| Switch.cs:20:18:20:22 | After Int32 i [no-match] | Switch.cs:24:32:24:43 | After ... > ... [true] | true | +| Switch.cs:20:18:20:22 | After Int32 i [no-match] | Switch.cs:24:32:24:55 | After ... && ... [false] | true | +| Switch.cs:20:18:20:22 | After Int32 i [no-match] | Switch.cs:24:48:24:55 | After ... != ... [false] | true | +| Switch.cs:20:18:20:22 | After Int32 i [no-match] | Switch.cs:24:48:24:55 | After ... != ... [true] | true | +| Switch.cs:24:18:24:25 | After String s [match] | Switch.cs:24:32:24:43 | After ... > ... [false] | false | +| Switch.cs:24:18:24:25 | After String s [match] | Switch.cs:24:32:24:43 | After ... > ... [true] | true | +| Switch.cs:24:18:24:25 | After String s [match] | Switch.cs:24:48:24:55 | After ... != ... [false] | true | +| Switch.cs:24:18:24:25 | After String s [match] | Switch.cs:24:48:24:55 | After ... != ... [true] | true | +| Switch.cs:24:32:24:43 | After ... > ... [true] | Switch.cs:24:48:24:55 | After ... != ... [false] | false | +| Switch.cs:24:32:24:43 | After ... > ... [true] | Switch.cs:24:48:24:55 | After ... != ... [true] | true | +| Switch.cs:27:13:27:39 | case ...: | Switch.cs:27:18:27:25 | After Double d [match] | true | +| Switch.cs:27:13:27:39 | case ...: | Switch.cs:27:18:27:25 | After Double d [no-match] | false | +| Switch.cs:44:10:44:11 | Entry | Switch.cs:48:18:48:20 | After access to type Int32 [match] | true | +| Switch.cs:44:10:44:11 | Entry | Switch.cs:48:18:48:20 | After access to type Int32 [no-match] | false | +| Switch.cs:44:10:44:11 | Entry | Switch.cs:50:18:50:21 | After access to type Boolean [match] | false | +| Switch.cs:44:10:44:11 | Entry | Switch.cs:50:18:50:21 | After access to type Boolean [no-match] | false | +| Switch.cs:44:10:44:11 | Entry | Switch.cs:50:30:50:38 | After ... != ... [false] | false | +| Switch.cs:44:10:44:11 | Entry | Switch.cs:50:30:50:38 | After ... != ... [true] | false | +| Switch.cs:48:18:48:20 | After access to type Int32 [no-match] | Switch.cs:50:18:50:21 | After access to type Boolean [match] | true | +| Switch.cs:48:18:48:20 | After access to type Int32 [no-match] | Switch.cs:50:18:50:21 | After access to type Boolean [no-match] | false | +| Switch.cs:48:18:48:20 | After access to type Int32 [no-match] | Switch.cs:50:30:50:38 | After ... != ... [false] | true | +| Switch.cs:48:18:48:20 | After access to type Int32 [no-match] | Switch.cs:50:30:50:38 | After ... != ... [true] | true | +| Switch.cs:50:18:50:21 | After access to type Boolean [match] | Switch.cs:50:30:50:38 | After ... != ... [false] | false | +| Switch.cs:50:18:50:21 | After access to type Boolean [match] | Switch.cs:50:30:50:38 | After ... != ... [true] | true | +| Switch.cs:55:10:55:11 | Entry | Switch.cs:59:18:59:18 | After 2 [match] | true | +| Switch.cs:55:10:55:11 | Entry | Switch.cs:59:18:59:18 | After 2 [no-match] | false | +| Switch.cs:55:10:55:11 | Entry | Switch.cs:61:18:61:18 | After 3 [match] | false | +| Switch.cs:55:10:55:11 | Entry | Switch.cs:61:18:61:18 | After 3 [no-match] | false | +| Switch.cs:59:18:59:18 | After 2 [no-match] | Switch.cs:61:18:61:18 | After 3 [match] | true | +| Switch.cs:59:18:59:18 | After 2 [no-match] | Switch.cs:61:18:61:18 | After 3 [no-match] | false | +| Switch.cs:66:10:66:11 | Entry | Switch.cs:70:18:70:20 | After access to type Int32 [match] | true | +| Switch.cs:66:10:66:11 | Entry | Switch.cs:70:18:70:20 | After access to type Int32 [no-match] | false | +| Switch.cs:66:10:66:11 | Entry | Switch.cs:72:18:72:19 | After "" [match] | false | +| Switch.cs:66:10:66:11 | Entry | Switch.cs:72:18:72:19 | After "" [no-match] | false | +| Switch.cs:70:18:70:20 | After access to type Int32 [no-match] | Switch.cs:72:18:72:19 | After "" [match] | true | +| Switch.cs:70:18:70:20 | After access to type Int32 [no-match] | Switch.cs:72:18:72:19 | After "" [no-match] | false | +| Switch.cs:77:10:77:11 | Entry | Switch.cs:79:9:87:9 | After switch (...) {...} | false | +| Switch.cs:77:10:77:11 | Entry | Switch.cs:81:18:81:18 | After 1 [match] | true | +| Switch.cs:77:10:77:11 | Entry | Switch.cs:81:18:81:18 | After 1 [no-match] | false | +| Switch.cs:77:10:77:11 | Entry | Switch.cs:83:18:83:18 | After 2 [match] | false | +| Switch.cs:77:10:77:11 | Entry | Switch.cs:83:18:83:18 | After 2 [no-match] | false | +| Switch.cs:77:10:77:11 | Entry | Switch.cs:84:21:84:25 | After ... > ... [false] | false | +| Switch.cs:77:10:77:11 | Entry | Switch.cs:84:21:84:25 | After ... > ... [true] | false | +| Switch.cs:81:18:81:18 | After 1 [no-match] | Switch.cs:83:18:83:18 | After 2 [match] | true | +| Switch.cs:81:18:81:18 | After 1 [no-match] | Switch.cs:83:18:83:18 | After 2 [no-match] | false | +| Switch.cs:81:18:81:18 | After 1 [no-match] | Switch.cs:84:21:84:25 | After ... > ... [false] | true | +| Switch.cs:81:18:81:18 | After 1 [no-match] | Switch.cs:84:21:84:25 | After ... > ... [true] | true | +| Switch.cs:83:18:83:18 | After 2 [match] | Switch.cs:84:21:84:25 | After ... > ... [false] | false | +| Switch.cs:83:18:83:18 | After 2 [match] | Switch.cs:84:21:84:25 | After ... > ... [true] | true | +| Switch.cs:91:10:91:11 | Entry | Switch.cs:95:18:95:20 | After access to type Int32 [match] | true | +| Switch.cs:91:10:91:11 | Entry | Switch.cs:95:18:95:20 | After access to type Int32 [no-match] | false | +| Switch.cs:101:9:101:10 | Entry | Switch.cs:103:17:103:17 | After access to parameter s [non-null] | false | +| Switch.cs:101:9:101:10 | Entry | Switch.cs:103:17:103:17 | After access to parameter s [null] | true | +| Switch.cs:103:17:103:25 | After access to property Length | Switch.cs:105:18:105:18 | After 0 [match] | true | +| Switch.cs:103:17:103:25 | After access to property Length | Switch.cs:105:18:105:18 | After 0 [no-match] | false | +| Switch.cs:103:17:103:25 | After access to property Length | Switch.cs:106:18:106:18 | After 1 [match] | false | +| Switch.cs:103:17:103:25 | After access to property Length | Switch.cs:106:18:106:18 | After 1 [no-match] | false | +| Switch.cs:105:18:105:18 | After 0 [no-match] | Switch.cs:106:18:106:18 | After 1 [match] | true | +| Switch.cs:105:18:105:18 | After 0 [no-match] | Switch.cs:106:18:106:18 | After 1 [no-match] | false | +| Switch.cs:113:9:113:11 | Entry | Switch.cs:117:18:117:18 | After 3 [match] | true | +| Switch.cs:113:9:113:11 | Entry | Switch.cs:117:18:117:18 | After 3 [no-match] | false | +| Switch.cs:113:9:113:11 | Entry | Switch.cs:117:25:117:34 | After ... == ... [false] | true | +| Switch.cs:113:9:113:11 | Entry | Switch.cs:117:25:117:34 | After ... == ... [true] | true | +| Switch.cs:117:18:117:18 | After 3 [match] | Switch.cs:117:25:117:34 | After ... == ... [false] | false | +| Switch.cs:117:18:117:18 | After 3 [match] | Switch.cs:117:25:117:34 | After ... == ... [true] | true | +| Switch.cs:118:13:118:34 | case ...: | Switch.cs:118:18:118:18 | After 2 [match] | true | +| Switch.cs:118:13:118:34 | case ...: | Switch.cs:118:18:118:18 | After 2 [no-match] | false | +| Switch.cs:118:13:118:34 | case ...: | Switch.cs:118:25:118:33 | After ... == ... [false] | true | +| Switch.cs:118:13:118:34 | case ...: | Switch.cs:118:25:118:33 | After ... == ... [true] | true | +| Switch.cs:118:18:118:18 | After 2 [match] | Switch.cs:118:25:118:33 | After ... == ... [false] | false | +| Switch.cs:118:18:118:18 | After 2 [match] | Switch.cs:118:25:118:33 | After ... == ... [true] | true | +| Switch.cs:123:10:123:12 | Entry | Switch.cs:125:24:125:29 | After Boolean b [match] | true | +| Switch.cs:123:10:123:12 | Entry | Switch.cs:125:24:125:29 | After Boolean b [no-match] | false | +| Switch.cs:129:12:129:14 | Entry | Switch.cs:131:28:131:35 | After String s [match] | true | +| Switch.cs:129:12:129:14 | Entry | Switch.cs:131:28:131:35 | After String s [no-match] | false | +| Switch.cs:134:9:134:11 | Entry | Switch.cs:139:18:139:18 | After 1 [match] | true | +| Switch.cs:134:9:134:11 | Entry | Switch.cs:139:18:139:18 | After 1 [no-match] | false | +| Switch.cs:134:9:134:11 | Entry | Switch.cs:140:18:140:18 | After 2 [match] | false | +| Switch.cs:134:9:134:11 | Entry | Switch.cs:140:18:140:18 | After 2 [no-match] | false | +| Switch.cs:139:18:139:18 | After 1 [no-match] | Switch.cs:140:18:140:18 | After 2 [match] | true | +| Switch.cs:139:18:139:18 | After 1 [no-match] | Switch.cs:140:18:140:18 | After 2 [no-match] | false | +| Switch.cs:144:9:144:11 | Entry | Switch.cs:148:18:148:18 | After 1 [match] | true | +| Switch.cs:144:9:144:11 | Entry | Switch.cs:148:18:148:18 | After 1 [no-match] | false | +| Switch.cs:144:9:144:11 | Entry | Switch.cs:150:18:150:18 | After 2 [match] | false | +| Switch.cs:144:9:144:11 | Entry | Switch.cs:150:18:150:18 | After 2 [no-match] | false | +| Switch.cs:148:18:148:18 | After 1 [no-match] | Switch.cs:150:18:150:18 | After 2 [match] | true | +| Switch.cs:148:18:148:18 | After 1 [no-match] | Switch.cs:150:18:150:18 | After 2 [no-match] | false | +| Switch.cs:154:10:154:12 | Entry | Switch.cs:156:28:156:31 | After true [match] | true | +| Switch.cs:154:10:154:12 | Entry | Switch.cs:156:28:156:31 | After true [no-match] | false | +| Switch.cs:154:10:154:12 | Entry | Switch.cs:156:41:156:45 | After false [match] | false | +| Switch.cs:154:10:154:12 | Entry | Switch.cs:156:41:156:45 | After false [no-match] | false | +| Switch.cs:156:17:156:54 | After ... switch { ... } | Switch.cs:157:13:157:13 | After access to parameter b [false] | false | +| Switch.cs:156:17:156:54 | After ... switch { ... } | Switch.cs:157:13:157:13 | After access to parameter b [true] | true | +| Switch.cs:156:28:156:31 | After true [no-match] | Switch.cs:156:41:156:45 | After false [match] | true | +| Switch.cs:156:28:156:31 | After true [no-match] | Switch.cs:156:41:156:45 | After false [no-match] | false | +| Switch.cs:163:10:163:12 | Entry | Switch.cs:167:18:167:18 | After 1 [match] | true | +| Switch.cs:163:10:163:12 | Entry | Switch.cs:167:18:167:18 | After 1 [no-match] | false | +| Switch.cs:163:10:163:12 | Entry | Switch.cs:168:18:168:18 | After 2 [match] | false | +| Switch.cs:163:10:163:12 | Entry | Switch.cs:168:18:168:18 | After 2 [no-match] | false | +| Switch.cs:163:10:163:12 | Entry | Switch.cs:171:18:171:18 | After 3 [match] | false | +| Switch.cs:163:10:163:12 | Entry | Switch.cs:171:18:171:18 | After 3 [no-match] | false | +| Switch.cs:167:18:167:18 | After 1 [no-match] | Switch.cs:168:18:168:18 | After 2 [match] | true | +| Switch.cs:167:18:167:18 | After 1 [no-match] | Switch.cs:168:18:168:18 | After 2 [no-match] | false | +| Switch.cs:167:18:167:18 | After 1 [no-match] | Switch.cs:171:18:171:18 | After 3 [match] | false | +| Switch.cs:167:18:167:18 | After 1 [no-match] | Switch.cs:171:18:171:18 | After 3 [no-match] | false | +| Switch.cs:168:18:168:18 | After 2 [no-match] | Switch.cs:171:18:171:18 | After 3 [match] | true | +| Switch.cs:168:18:168:18 | After 2 [no-match] | Switch.cs:171:18:171:18 | After 3 [no-match] | false | +| TypeAccesses.cs:3:10:3:10 | Entry | TypeAccesses.cs:7:13:7:22 | After ... is ... [false] | false | +| TypeAccesses.cs:3:10:3:10 | Entry | TypeAccesses.cs:7:13:7:22 | [MatchTrue] ... is ... | true | +| VarDecls.cs:19:7:19:8 | Entry | VarDecls.cs:25:20:25:20 | After access to parameter b [false] | false | +| VarDecls.cs:19:7:19:8 | Entry | VarDecls.cs:25:20:25:20 | After access to parameter b [true] | true | +| cflow.cs:5:17:5:20 | Entry | cflow.cs:11:13:11:17 | After ... > ... [false] | false | +| cflow.cs:5:17:5:20 | Entry | cflow.cs:11:13:11:17 | After ... > ... [true] | true | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:14:16:14:20 | After ... > ... [false] | false | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:14:16:14:20 | After ... > ... [true] | true | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:20:9:22:9 | {...} | false | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:22:18:22:23 | After ... < ... [false] | false | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:22:18:22:23 | After ... < ... [true] | false | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:24:25:24:31 | After ... <= ... [false] | false | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:24:25:24:31 | After ... <= ... [true] | false | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:24:25:24:31 | Before ... <= ... | false | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:26:13:33:37 | After if (...) ... | false | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:26:17:26:26 | After ... == ... [false] | false | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:26:17:26:26 | After ... == ... [true] | false | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:26:17:26:40 | After ... && ... [false] | false | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:26:31:26:40 | After ... == ... [false] | false | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:26:31:26:40 | After ... == ... [true] | false | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:28:18:33:37 | After if (...) ... | false | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:28:22:28:31 | After ... == ... [false] | false | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:28:22:28:31 | After ... == ... [true] | false | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:30:18:33:37 | After if (...) ... | false | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:30:22:30:31 | After ... == ... [false] | false | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:30:22:30:31 | After ... == ... [true] | false | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:22:18:22:23 | After ... < ... [false] | false | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:22:18:22:23 | After ... < ... [true] | true | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:24:25:24:31 | After ... <= ... [false] | false | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:24:25:24:31 | After ... <= ... [true] | false | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:24:25:24:31 | Before ... <= ... | false | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:26:13:33:37 | After if (...) ... | false | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:26:17:26:26 | After ... == ... [false] | false | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:26:17:26:26 | After ... == ... [true] | false | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:26:17:26:40 | After ... && ... [false] | false | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:26:31:26:40 | After ... == ... [false] | false | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:26:31:26:40 | After ... == ... [true] | false | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:28:18:33:37 | After if (...) ... | false | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:28:22:28:31 | After ... == ... [false] | false | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:28:22:28:31 | After ... == ... [true] | false | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:30:18:33:37 | After if (...) ... | false | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:30:22:30:31 | After ... == ... [false] | false | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:30:22:30:31 | After ... == ... [true] | false | +| cflow.cs:24:25:24:31 | After ... <= ... [true] | cflow.cs:26:17:26:26 | After ... == ... [false] | false | +| cflow.cs:24:25:24:31 | After ... <= ... [true] | cflow.cs:26:17:26:26 | After ... == ... [true] | true | +| cflow.cs:24:25:24:31 | After ... <= ... [true] | cflow.cs:26:31:26:40 | After ... == ... [false] | true | +| cflow.cs:24:25:24:31 | After ... <= ... [true] | cflow.cs:26:31:26:40 | After ... == ... [true] | true | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:24:25:24:31 | After ... <= ... [false] | false | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:24:25:24:31 | After ... <= ... [true] | true | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:26:13:33:37 | After if (...) ... | true | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:26:17:26:26 | After ... == ... [false] | true | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:26:17:26:26 | After ... == ... [true] | true | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:26:17:26:40 | After ... && ... [false] | true | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:26:31:26:40 | After ... == ... [false] | true | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:26:31:26:40 | After ... == ... [true] | true | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:28:18:33:37 | After if (...) ... | true | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:28:22:28:31 | After ... == ... [false] | true | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:28:22:28:31 | After ... == ... [true] | true | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:30:18:33:37 | After if (...) ... | true | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:30:22:30:31 | After ... == ... [false] | true | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:30:22:30:31 | After ... == ... [true] | true | +| cflow.cs:26:17:26:26 | After ... == ... [true] | cflow.cs:26:31:26:40 | After ... == ... [false] | false | +| cflow.cs:26:17:26:26 | After ... == ... [true] | cflow.cs:26:31:26:40 | After ... == ... [true] | true | +| cflow.cs:26:17:26:40 | After ... && ... [false] | cflow.cs:28:22:28:31 | After ... == ... [false] | false | +| cflow.cs:26:17:26:40 | After ... && ... [false] | cflow.cs:28:22:28:31 | After ... == ... [true] | true | +| cflow.cs:26:17:26:40 | After ... && ... [false] | cflow.cs:30:18:33:37 | After if (...) ... | false | +| cflow.cs:26:17:26:40 | After ... && ... [false] | cflow.cs:30:22:30:31 | After ... == ... [false] | false | +| cflow.cs:26:17:26:40 | After ... && ... [false] | cflow.cs:30:22:30:31 | After ... == ... [true] | false | +| cflow.cs:28:22:28:31 | After ... == ... [false] | cflow.cs:30:22:30:31 | After ... == ... [false] | false | +| cflow.cs:28:22:28:31 | After ... == ... [false] | cflow.cs:30:22:30:31 | After ... == ... [true] | true | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:37:17:37:22 | Exit | false | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:39:9:50:9 | After switch (...) {...} | false | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:41:18:41:18 | After 1 [match] | true | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:41:18:41:18 | After 1 [no-match] | false | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:44:18:44:18 | After 2 [match] | false | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:44:18:44:18 | After 2 [no-match] | false | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:47:18:47:18 | After 3 [match] | false | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:47:18:47:18 | After 3 [no-match] | false | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:51:9:59:9 | After switch (...) {...} | false | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:53:18:53:19 | After 42 [match] | false | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:53:18:53:19 | After 42 [no-match] | false | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:60:9:66:9 | After switch (...) {...} | false | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:62:18:62:18 | After 0 [match] | false | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:62:18:62:18 | After 0 [no-match] | false | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:63:23:63:33 | After ... == ... [false] | false | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:63:23:63:33 | After ... == ... [true] | false | +| cflow.cs:39:9:50:9 | After switch (...) {...} | cflow.cs:53:18:53:19 | After 42 [match] | true | +| cflow.cs:39:9:50:9 | After switch (...) {...} | cflow.cs:53:18:53:19 | After 42 [no-match] | false | +| cflow.cs:41:18:41:18 | After 1 [no-match] | cflow.cs:37:17:37:22 | Exit | false | +| cflow.cs:41:18:41:18 | After 1 [no-match] | cflow.cs:39:9:50:9 | After switch (...) {...} | false | +| cflow.cs:41:18:41:18 | After 1 [no-match] | cflow.cs:44:18:44:18 | After 2 [match] | true | +| cflow.cs:41:18:41:18 | After 1 [no-match] | cflow.cs:44:18:44:18 | After 2 [no-match] | false | +| cflow.cs:41:18:41:18 | After 1 [no-match] | cflow.cs:47:18:47:18 | After 3 [match] | false | +| cflow.cs:41:18:41:18 | After 1 [no-match] | cflow.cs:47:18:47:18 | After 3 [no-match] | false | +| cflow.cs:41:18:41:18 | After 1 [no-match] | cflow.cs:51:9:59:9 | After switch (...) {...} | false | +| cflow.cs:41:18:41:18 | After 1 [no-match] | cflow.cs:53:18:53:19 | After 42 [match] | false | +| cflow.cs:41:18:41:18 | After 1 [no-match] | cflow.cs:53:18:53:19 | After 42 [no-match] | false | +| cflow.cs:41:18:41:18 | After 1 [no-match] | cflow.cs:60:9:66:9 | After switch (...) {...} | false | +| cflow.cs:41:18:41:18 | After 1 [no-match] | cflow.cs:62:18:62:18 | After 0 [match] | false | +| cflow.cs:41:18:41:18 | After 1 [no-match] | cflow.cs:62:18:62:18 | After 0 [no-match] | false | +| cflow.cs:41:18:41:18 | After 1 [no-match] | cflow.cs:63:23:63:33 | After ... == ... [false] | false | +| cflow.cs:41:18:41:18 | After 1 [no-match] | cflow.cs:63:23:63:33 | After ... == ... [true] | false | +| cflow.cs:44:18:44:18 | After 2 [no-match] | cflow.cs:47:18:47:18 | After 3 [match] | true | +| cflow.cs:44:18:44:18 | After 2 [no-match] | cflow.cs:47:18:47:18 | After 3 [no-match] | false | +| cflow.cs:51:9:59:9 | After switch (...) {...} | cflow.cs:62:18:62:18 | After 0 [match] | true | +| cflow.cs:51:9:59:9 | After switch (...) {...} | cflow.cs:62:18:62:18 | After 0 [no-match] | false | +| cflow.cs:51:9:59:9 | After switch (...) {...} | cflow.cs:63:23:63:33 | After ... == ... [false] | true | +| cflow.cs:51:9:59:9 | After switch (...) {...} | cflow.cs:63:23:63:33 | After ... == ... [true] | true | +| cflow.cs:62:18:62:18 | After 0 [match] | cflow.cs:63:23:63:33 | After ... == ... [false] | false | +| cflow.cs:62:18:62:18 | After 0 [match] | cflow.cs:63:23:63:33 | After ... == ... [true] | true | +| cflow.cs:70:18:70:18 | Entry | cflow.cs:72:13:72:21 | After ... == ... [false] | false | +| cflow.cs:70:18:70:18 | Entry | cflow.cs:72:13:72:21 | After ... == ... [true] | true | +| cflow.cs:70:18:70:18 | Entry | cflow.cs:74:9:81:9 | After if (...) ... | false | +| cflow.cs:70:18:70:18 | Entry | cflow.cs:74:13:74:24 | After ... > ... [false] | false | +| cflow.cs:70:18:70:18 | Entry | cflow.cs:74:13:74:24 | After ... > ... [true] | false | +| cflow.cs:72:13:72:21 | After ... == ... [false] | cflow.cs:74:13:74:24 | After ... > ... [false] | false | +| cflow.cs:72:13:72:21 | After ... == ... [false] | cflow.cs:74:13:74:24 | After ... > ... [true] | true | +| cflow.cs:84:18:84:19 | Entry | cflow.cs:86:13:86:21 | After ... != ... [false] | false | +| cflow.cs:84:18:84:19 | Entry | cflow.cs:86:13:86:21 | After ... != ... [true] | true | +| cflow.cs:84:18:84:19 | Entry | cflow.cs:86:26:86:37 | After ... > ... [false] | true | +| cflow.cs:84:18:84:19 | Entry | cflow.cs:86:26:86:37 | After ... > ... [true] | true | +| cflow.cs:86:13:86:21 | After ... != ... [true] | cflow.cs:86:26:86:37 | After ... > ... [false] | false | +| cflow.cs:86:13:86:21 | After ... != ... [true] | cflow.cs:86:26:86:37 | After ... > ... [true] | true | +| cflow.cs:90:18:90:19 | Entry | cflow.cs:92:13:92:27 | After call to method Equals [false] | false | +| cflow.cs:90:18:90:19 | Entry | cflow.cs:92:13:92:27 | After call to method Equals [true] | true | +| cflow.cs:90:18:90:19 | Entry | cflow.cs:96:9:97:55 | After if (...) ... | false | +| cflow.cs:90:18:90:19 | Entry | cflow.cs:96:13:96:25 | After ... != ... [false] | false | +| cflow.cs:90:18:90:19 | Entry | cflow.cs:96:13:96:25 | After ... != ... [true] | false | +| cflow.cs:90:18:90:19 | Entry | cflow.cs:99:9:100:42 | After if (...) ... | false | +| cflow.cs:90:18:90:19 | Entry | cflow.cs:99:13:99:25 | After ... != ... [false] | false | +| cflow.cs:90:18:90:19 | Entry | cflow.cs:99:13:99:25 | After ... != ... [true] | false | +| cflow.cs:90:18:90:19 | Entry | cflow.cs:102:9:103:36 | After if (...) ... | false | +| cflow.cs:90:18:90:19 | Entry | cflow.cs:102:13:102:29 | After ... != ... [false] | false | +| cflow.cs:90:18:90:19 | Entry | cflow.cs:102:13:102:29 | After ... != ... [true] | false | +| cflow.cs:92:13:92:27 | After call to method Equals [false] | cflow.cs:96:13:96:25 | After ... != ... [false] | false | +| cflow.cs:92:13:92:27 | After call to method Equals [false] | cflow.cs:96:13:96:25 | After ... != ... [true] | true | +| cflow.cs:96:9:97:55 | After if (...) ... | cflow.cs:99:13:99:25 | After ... != ... [false] | false | +| cflow.cs:96:9:97:55 | After if (...) ... | cflow.cs:99:13:99:25 | After ... != ... [true] | true | +| cflow.cs:99:9:100:42 | After if (...) ... | cflow.cs:102:13:102:29 | After ... != ... [false] | false | +| cflow.cs:99:9:100:42 | After if (...) ... | cflow.cs:102:13:102:29 | After ... != ... [true] | true | +| cflow.cs:106:18:106:19 | Entry | cflow.cs:108:13:108:21 | After ... != ... [false] | false | +| cflow.cs:106:18:106:19 | Entry | cflow.cs:108:13:108:21 | After ... != ... [true] | true | +| cflow.cs:106:18:106:19 | Entry | cflow.cs:110:13:113:13 | [LoopHeader] while (...) ... | true | +| cflow.cs:127:19:127:21 | Entry | cflow.cs:127:32:127:44 | After ... == ... [false] | false | +| cflow.cs:127:19:127:21 | Entry | cflow.cs:127:32:127:44 | After ... == ... [true] | true | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:149:16:149:21 | After ... < ... [false] | false | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:149:16:149:21 | After ... < ... [true] | true | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:153:9:157:9 | {...} | false | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:155:17:155:22 | After ... > ... [false] | false | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:155:17:155:22 | After ... > ... [true] | false | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:160:9:165:9 | {...} | false | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:163:17:163:22 | After ... > ... [false] | false | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:163:17:163:22 | After ... > ... [true] | false | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:167:16:167:21 | After ... < ... [false] | false | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:167:16:167:21 | After ... < ... [true] | false | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:167:16:167:21 | Before ... < ... | false | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:173:32:173:41 | After ... < ... [false] | false | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:173:32:173:41 | After ... < ... [true] | false | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:173:32:173:41 | Before ... < ... | false | +| cflow.cs:153:9:157:9 | {...} | cflow.cs:155:17:155:22 | After ... > ... [false] | false | +| cflow.cs:153:9:157:9 | {...} | cflow.cs:155:17:155:22 | After ... > ... [true] | true | | cflow.cs:153:9:157:9 | {...} | cflow.cs:160:9:165:9 | {...} | true | -| cflow.cs:153:9:157:9 | {...} | cflow.cs:164:17:164:22 | break; | true | -| cflow.cs:153:9:157:9 | {...} | cflow.cs:167:16:167:16 | access to local variable x | true | -| cflow.cs:153:9:157:9 | {...} | cflow.cs:168:9:171:9 | {...} | true | -| cflow.cs:153:9:157:9 | {...} | cflow.cs:173:9:176:9 | for (...;...;...) ... | true | -| cflow.cs:153:9:157:9 | {...} | cflow.cs:173:32:173:32 | access to local variable i | true | -| cflow.cs:153:9:157:9 | {...} | cflow.cs:174:9:176:9 | {...} | true | -| cflow.cs:160:9:165:9 | {...} | cflow.cs:146:10:146:12 | exit For (normal) | true | -| cflow.cs:160:9:165:9 | {...} | cflow.cs:164:17:164:22 | break; | true | -| cflow.cs:160:9:165:9 | {...} | cflow.cs:167:16:167:16 | access to local variable x | true | -| cflow.cs:160:9:165:9 | {...} | cflow.cs:168:9:171:9 | {...} | true | -| cflow.cs:160:9:165:9 | {...} | cflow.cs:173:9:176:9 | for (...;...;...) ... | true | -| cflow.cs:160:9:165:9 | {...} | cflow.cs:173:32:173:32 | access to local variable i | true | -| cflow.cs:160:9:165:9 | {...} | cflow.cs:174:9:176:9 | {...} | true | -| cflow.cs:167:16:167:16 | access to local variable x | cflow.cs:146:10:146:12 | exit For (normal) | false | -| cflow.cs:167:16:167:16 | access to local variable x | cflow.cs:168:9:171:9 | {...} | true | -| cflow.cs:167:16:167:16 | access to local variable x | cflow.cs:173:9:176:9 | for (...;...;...) ... | false | -| cflow.cs:167:16:167:16 | access to local variable x | cflow.cs:173:32:173:32 | access to local variable i | false | -| cflow.cs:167:16:167:16 | access to local variable x | cflow.cs:174:9:176:9 | {...} | false | -| cflow.cs:173:32:173:32 | access to local variable i | cflow.cs:146:10:146:12 | exit For (normal) | false | -| cflow.cs:173:32:173:32 | access to local variable i | cflow.cs:174:9:176:9 | {...} | true | -| cflow.cs:185:10:185:18 | enter LogicalOr | cflow.cs:187:13:187:28 | ... \|\| ... | false | -| cflow.cs:185:10:185:18 | enter LogicalOr | cflow.cs:187:13:187:50 | ... \|\| ... | false | -| cflow.cs:185:10:185:18 | enter LogicalOr | cflow.cs:187:23:187:23 | 2 | false | -| cflow.cs:185:10:185:18 | enter LogicalOr | cflow.cs:187:34:187:34 | 1 | false | -| cflow.cs:185:10:185:18 | enter LogicalOr | cflow.cs:187:34:187:49 | ... && ... | false | -| cflow.cs:185:10:185:18 | enter LogicalOr | cflow.cs:190:13:190:52 | ...; | false | -| cflow.cs:187:13:187:28 | ... \|\| ... | cflow.cs:187:13:187:50 | ... \|\| ... | false | -| cflow.cs:187:13:187:28 | ... \|\| ... | cflow.cs:187:34:187:34 | 1 | false | -| cflow.cs:187:13:187:28 | ... \|\| ... | cflow.cs:187:34:187:49 | ... && ... | false | -| cflow.cs:187:13:187:28 | ... \|\| ... | cflow.cs:190:13:190:52 | ...; | false | -| cflow.cs:187:13:187:50 | ... \|\| ... | cflow.cs:190:13:190:52 | ...; | false | -| cflow.cs:187:23:187:23 | 2 | cflow.cs:187:13:187:28 | ... \|\| ... | false | -| cflow.cs:187:23:187:23 | 2 | cflow.cs:187:13:187:50 | ... \|\| ... | false | -| cflow.cs:187:23:187:23 | 2 | cflow.cs:187:34:187:34 | 1 | false | -| cflow.cs:187:23:187:23 | 2 | cflow.cs:187:34:187:49 | ... && ... | false | -| cflow.cs:187:23:187:23 | 2 | cflow.cs:190:13:190:52 | ...; | false | -| cflow.cs:187:34:187:34 | 1 | cflow.cs:187:13:187:50 | ... \|\| ... | false | -| cflow.cs:187:34:187:34 | 1 | cflow.cs:187:34:187:49 | ... && ... | false | -| cflow.cs:187:34:187:34 | 1 | cflow.cs:190:13:190:52 | ...; | false | -| cflow.cs:187:34:187:49 | ... && ... | cflow.cs:187:13:187:50 | ... \|\| ... | false | -| cflow.cs:187:34:187:49 | ... && ... | cflow.cs:190:13:190:52 | ...; | false | -| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:195:39:195:43 | this access | true | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:197:13:197:47 | [false] !... | false | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:197:13:197:47 | [true] !... | true | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:197:15:197:46 | [false] ... ? ... : ... | true | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:197:15:197:46 | [true] ... ? ... : ... | false | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:197:35:197:39 | false | true | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:197:43:197:46 | true | false | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:198:13:198:49 | ...; | true | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:198:17:198:48 | ... ? ... : ... | true | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:198:37:198:41 | false | true | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:198:45:198:48 | true | true | -| cflow.cs:197:13:197:47 | [true] !... | cflow.cs:198:13:198:49 | ...; | true | -| cflow.cs:197:13:197:47 | [true] !... | cflow.cs:198:17:198:48 | ... ? ... : ... | true | -| cflow.cs:197:13:197:47 | [true] !... | cflow.cs:198:37:198:41 | false | true | -| cflow.cs:197:13:197:47 | [true] !... | cflow.cs:198:45:198:48 | true | true | -| cflow.cs:197:15:197:46 | [false] ... ? ... : ... | cflow.cs:197:13:197:47 | [true] !... | false | -| cflow.cs:197:15:197:46 | [false] ... ? ... : ... | cflow.cs:198:13:198:49 | ...; | false | -| cflow.cs:197:15:197:46 | [false] ... ? ... : ... | cflow.cs:198:17:198:48 | ... ? ... : ... | false | -| cflow.cs:197:15:197:46 | [false] ... ? ... : ... | cflow.cs:198:37:198:41 | false | false | -| cflow.cs:197:15:197:46 | [false] ... ? ... : ... | cflow.cs:198:45:198:48 | true | false | -| cflow.cs:197:15:197:46 | [true] ... ? ... : ... | cflow.cs:197:13:197:47 | [false] !... | true | -| cflow.cs:197:35:197:39 | false | cflow.cs:197:13:197:47 | [true] !... | false | -| cflow.cs:197:35:197:39 | false | cflow.cs:197:15:197:46 | [false] ... ? ... : ... | false | -| cflow.cs:197:35:197:39 | false | cflow.cs:198:13:198:49 | ...; | false | -| cflow.cs:197:35:197:39 | false | cflow.cs:198:17:198:48 | ... ? ... : ... | false | -| cflow.cs:197:35:197:39 | false | cflow.cs:198:37:198:41 | false | false | -| cflow.cs:197:35:197:39 | false | cflow.cs:198:45:198:48 | true | false | -| cflow.cs:197:43:197:46 | true | cflow.cs:197:13:197:47 | [false] !... | true | -| cflow.cs:197:43:197:46 | true | cflow.cs:197:15:197:46 | [true] ... ? ... : ... | true | -| cflow.cs:198:13:198:49 | ...; | cflow.cs:198:37:198:41 | false | true | -| cflow.cs:198:13:198:49 | ...; | cflow.cs:198:45:198:48 | true | false | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:193:10:193:17 | exit Booleans (normal) | true | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:200:13:200:32 | [false] !... | true | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:200:13:200:32 | [true] !... | false | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:200:13:200:62 | [false] ... \|\| ... | true | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:200:37:200:62 | [false] !... | true | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:200:37:200:62 | [true] !... | true | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:200:38:200:62 | [false] !... | true | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:200:38:200:62 | [true] !... | true | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:200:40:200:44 | this access | true | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:200:40:200:61 | [false] ... && ... | true | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:200:40:200:61 | [true] ... && ... | true | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:200:61:200:61 | access to local variable b | true | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:193:10:193:17 | exit Booleans (normal) | false | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:200:13:200:62 | [false] ... \|\| ... | false | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:200:37:200:62 | [false] !... | false | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:200:37:200:62 | [true] !... | false | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:200:38:200:62 | [false] !... | false | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:200:38:200:62 | [true] !... | false | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:200:40:200:44 | this access | false | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:200:40:200:61 | [false] ... && ... | false | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:200:40:200:61 | [true] ... && ... | false | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:200:61:200:61 | access to local variable b | false | -| cflow.cs:200:13:200:62 | [false] ... \|\| ... | cflow.cs:193:10:193:17 | exit Booleans (normal) | false | -| cflow.cs:200:13:200:62 | [true] ... \|\| ... | cflow.cs:201:9:205:9 | {...} | true | -| cflow.cs:200:37:200:62 | [false] !... | cflow.cs:193:10:193:17 | exit Booleans (normal) | false | -| cflow.cs:200:37:200:62 | [false] !... | cflow.cs:200:13:200:62 | [false] ... \|\| ... | false | -| cflow.cs:200:38:200:62 | [false] !... | cflow.cs:200:37:200:62 | [true] !... | false | -| cflow.cs:200:38:200:62 | [true] !... | cflow.cs:193:10:193:17 | exit Booleans (normal) | true | -| cflow.cs:200:38:200:62 | [true] !... | cflow.cs:200:13:200:62 | [false] ... \|\| ... | true | -| cflow.cs:200:38:200:62 | [true] !... | cflow.cs:200:37:200:62 | [false] !... | true | -| cflow.cs:200:40:200:44 | this access | cflow.cs:200:37:200:62 | [true] !... | true | -| cflow.cs:200:40:200:44 | this access | cflow.cs:200:38:200:62 | [false] !... | true | -| cflow.cs:200:40:200:44 | this access | cflow.cs:200:40:200:61 | [true] ... && ... | true | -| cflow.cs:200:40:200:44 | this access | cflow.cs:200:61:200:61 | access to local variable b | true | -| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:193:10:193:17 | exit Booleans (normal) | false | -| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:200:13:200:62 | [false] ... \|\| ... | false | -| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:200:37:200:62 | [false] !... | false | -| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:200:38:200:62 | [true] !... | false | -| cflow.cs:200:40:200:61 | [true] ... && ... | cflow.cs:200:37:200:62 | [true] !... | true | -| cflow.cs:200:40:200:61 | [true] ... && ... | cflow.cs:200:38:200:62 | [false] !... | true | -| cflow.cs:200:61:200:61 | access to local variable b | cflow.cs:200:37:200:62 | [true] !... | true | -| cflow.cs:200:61:200:61 | access to local variable b | cflow.cs:200:38:200:62 | [false] !... | true | -| cflow.cs:200:61:200:61 | access to local variable b | cflow.cs:200:40:200:61 | [true] ... && ... | true | -| cflow.cs:211:9:221:9 | {...} | cflow.cs:214:13:216:13 | {...} | true | -| cflow.cs:211:9:221:9 | {...} | cflow.cs:217:13:220:13 | if (...) ... | false | -| cflow.cs:211:9:221:9 | {...} | cflow.cs:218:13:220:13 | {...} | false | -| cflow.cs:217:13:220:13 | if (...) ... | cflow.cs:218:13:220:13 | {...} | true | -| cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | cflow.cs:226:22:226:22 | String x | false | -| cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | cflow.cs:230:13:232:13 | {...} | false | -| cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | cflow.cs:233:13:236:13 | if (...) ... | false | -| cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | cflow.cs:234:13:236:13 | {...} | false | -| cflow.cs:226:22:226:22 | String x | cflow.cs:230:13:232:13 | {...} | true | -| cflow.cs:226:22:226:22 | String x | cflow.cs:233:13:236:13 | if (...) ... | false | -| cflow.cs:226:22:226:22 | String x | cflow.cs:234:13:236:13 | {...} | false | -| cflow.cs:233:13:236:13 | if (...) ... | cflow.cs:234:13:236:13 | {...} | true | -| cflow.cs:242:5:242:9 | Label: | cflow.cs:242:16:242:36 | [false] !... | false | -| cflow.cs:242:5:242:9 | Label: | cflow.cs:242:16:242:36 | [true] !... | true | -| cflow.cs:242:5:242:9 | Label: | cflow.cs:242:17:242:36 | [false] !... | true | -| cflow.cs:242:5:242:9 | Label: | cflow.cs:242:17:242:36 | [true] !... | false | -| cflow.cs:242:5:242:9 | Label: | cflow.cs:242:39:242:41 | {...} | true | -| cflow.cs:242:16:242:36 | [true] !... | cflow.cs:242:39:242:41 | {...} | true | -| cflow.cs:242:17:242:36 | [false] !... | cflow.cs:242:16:242:36 | [true] !... | false | -| cflow.cs:242:17:242:36 | [false] !... | cflow.cs:242:39:242:41 | {...} | false | -| cflow.cs:242:17:242:36 | [true] !... | cflow.cs:242:16:242:36 | [false] !... | true | -| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:240:10:240:13 | exit Goto (normal) | false | -| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:244:31:244:41 | goto ...; | true | -| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:246:9:258:9 | switch (...) {...} | false | -| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:249:17:249:29 | goto default; | false | -| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:250:13:250:19 | case ...: | false | -| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:251:17:251:37 | ...; | false | -| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:253:13:253:19 | case ...: | false | -| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:254:17:254:27 | goto ...; | false | -| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:255:13:255:20 | default: | false | -| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:249:17:249:29 | goto default; | true | -| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:250:13:250:19 | case ...: | false | -| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:251:17:251:37 | ...; | false | -| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:253:13:253:19 | case ...: | false | -| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:254:17:254:27 | goto ...; | false | -| cflow.cs:250:13:250:19 | case ...: | cflow.cs:251:17:251:37 | ...; | true | -| cflow.cs:250:13:250:19 | case ...: | cflow.cs:253:13:253:19 | case ...: | false | -| cflow.cs:250:13:250:19 | case ...: | cflow.cs:254:17:254:27 | goto ...; | false | -| cflow.cs:253:13:253:19 | case ...: | cflow.cs:254:17:254:27 | goto ...; | true | -| cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:261:49:261:53 | exit Yield | false | -| cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:261:49:261:53 | exit Yield (abnormal) | false | -| cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:261:49:261:53 | exit Yield (normal) | false | -| cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:265:9:267:9 | {...} | true | -| cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:268:9:276:9 | try {...} ... | false | -| cflow.cs:298:10:298:10 | enter M | cflow.cs:300:44:300:51 | [false] !... | true | -| cflow.cs:298:10:298:10 | enter M | cflow.cs:300:44:300:51 | [true] !... | false | -| cflow.cs:298:10:298:10 | enter M | cflow.cs:300:56:300:56 | access to parameter s | false | -| cflow.cs:300:44:300:51 | [true] !... | cflow.cs:300:56:300:56 | access to parameter s | true | +| cflow.cs:153:9:157:9 | {...} | cflow.cs:163:17:163:22 | After ... > ... [false] | true | +| cflow.cs:153:9:157:9 | {...} | cflow.cs:163:17:163:22 | After ... > ... [true] | true | +| cflow.cs:153:9:157:9 | {...} | cflow.cs:167:16:167:21 | After ... < ... [false] | true | +| cflow.cs:153:9:157:9 | {...} | cflow.cs:167:16:167:21 | After ... < ... [true] | true | +| cflow.cs:153:9:157:9 | {...} | cflow.cs:167:16:167:21 | Before ... < ... | true | +| cflow.cs:153:9:157:9 | {...} | cflow.cs:173:32:173:41 | After ... < ... [false] | true | +| cflow.cs:153:9:157:9 | {...} | cflow.cs:173:32:173:41 | After ... < ... [true] | true | +| cflow.cs:153:9:157:9 | {...} | cflow.cs:173:32:173:41 | Before ... < ... | true | +| cflow.cs:160:9:165:9 | {...} | cflow.cs:163:17:163:22 | After ... > ... [false] | false | +| cflow.cs:160:9:165:9 | {...} | cflow.cs:163:17:163:22 | After ... > ... [true] | true | +| cflow.cs:160:9:165:9 | {...} | cflow.cs:167:16:167:21 | After ... < ... [false] | true | +| cflow.cs:160:9:165:9 | {...} | cflow.cs:167:16:167:21 | After ... < ... [true] | true | +| cflow.cs:160:9:165:9 | {...} | cflow.cs:167:16:167:21 | Before ... < ... | true | +| cflow.cs:160:9:165:9 | {...} | cflow.cs:173:32:173:41 | After ... < ... [false] | true | +| cflow.cs:160:9:165:9 | {...} | cflow.cs:173:32:173:41 | After ... < ... [true] | true | +| cflow.cs:160:9:165:9 | {...} | cflow.cs:173:32:173:41 | Before ... < ... | true | +| cflow.cs:167:16:167:21 | Before ... < ... | cflow.cs:167:16:167:21 | After ... < ... [false] | false | +| cflow.cs:167:16:167:21 | Before ... < ... | cflow.cs:167:16:167:21 | After ... < ... [true] | true | +| cflow.cs:167:16:167:21 | Before ... < ... | cflow.cs:173:32:173:41 | After ... < ... [false] | false | +| cflow.cs:167:16:167:21 | Before ... < ... | cflow.cs:173:32:173:41 | After ... < ... [true] | false | +| cflow.cs:167:16:167:21 | Before ... < ... | cflow.cs:173:32:173:41 | Before ... < ... | false | +| cflow.cs:173:32:173:41 | Before ... < ... | cflow.cs:173:32:173:41 | After ... < ... [false] | false | +| cflow.cs:173:32:173:41 | Before ... < ... | cflow.cs:173:32:173:41 | After ... < ... [true] | true | +| cflow.cs:185:10:185:18 | Entry | cflow.cs:187:13:187:18 | After ... == ... [false] | false | +| cflow.cs:185:10:185:18 | Entry | cflow.cs:187:13:187:18 | After ... == ... [true] | true | +| cflow.cs:185:10:185:18 | Entry | cflow.cs:187:23:187:28 | After ... == ... [false] | false | +| cflow.cs:185:10:185:18 | Entry | cflow.cs:187:23:187:28 | After ... == ... [true] | false | +| cflow.cs:185:10:185:18 | Entry | cflow.cs:187:34:187:39 | After ... == ... [false] | false | +| cflow.cs:185:10:185:18 | Entry | cflow.cs:187:34:187:39 | After ... == ... [true] | false | +| cflow.cs:185:10:185:18 | Entry | cflow.cs:187:34:187:49 | After ... && ... [false] | false | +| cflow.cs:185:10:185:18 | Entry | cflow.cs:187:44:187:49 | After ... == ... [false] | false | +| cflow.cs:185:10:185:18 | Entry | cflow.cs:187:44:187:49 | After ... == ... [true] | false | +| cflow.cs:187:13:187:18 | After ... == ... [false] | cflow.cs:187:23:187:28 | After ... == ... [false] | false | +| cflow.cs:187:13:187:18 | After ... == ... [false] | cflow.cs:187:23:187:28 | After ... == ... [true] | true | +| cflow.cs:187:13:187:18 | After ... == ... [false] | cflow.cs:187:34:187:39 | After ... == ... [false] | false | +| cflow.cs:187:13:187:18 | After ... == ... [false] | cflow.cs:187:34:187:39 | After ... == ... [true] | false | +| cflow.cs:187:13:187:18 | After ... == ... [false] | cflow.cs:187:34:187:49 | After ... && ... [false] | false | +| cflow.cs:187:13:187:18 | After ... == ... [false] | cflow.cs:187:44:187:49 | After ... == ... [false] | false | +| cflow.cs:187:13:187:18 | After ... == ... [false] | cflow.cs:187:44:187:49 | After ... == ... [true] | false | +| cflow.cs:187:23:187:28 | After ... == ... [false] | cflow.cs:187:34:187:39 | After ... == ... [false] | false | +| cflow.cs:187:23:187:28 | After ... == ... [false] | cflow.cs:187:34:187:39 | After ... == ... [true] | true | +| cflow.cs:187:23:187:28 | After ... == ... [false] | cflow.cs:187:44:187:49 | After ... == ... [false] | true | +| cflow.cs:187:23:187:28 | After ... == ... [false] | cflow.cs:187:44:187:49 | After ... == ... [true] | true | +| cflow.cs:187:34:187:39 | After ... == ... [true] | cflow.cs:187:44:187:49 | After ... == ... [false] | false | +| cflow.cs:187:34:187:39 | After ... == ... [true] | cflow.cs:187:44:187:49 | After ... == ... [true] | true | +| cflow.cs:193:10:193:17 | Entry | cflow.cs:195:17:195:32 | After ... > ... [false] | false | +| cflow.cs:193:10:193:17 | Entry | cflow.cs:195:17:195:32 | After ... > ... [true] | true | +| cflow.cs:195:17:195:56 | After ... && ... | cflow.cs:197:15:197:31 | After ... == ... [false] | false | +| cflow.cs:195:17:195:56 | After ... && ... | cflow.cs:197:15:197:31 | After ... == ... [true] | true | +| cflow.cs:195:17:195:56 | After ... && ... | cflow.cs:198:17:198:33 | After ... == ... [false] | true | +| cflow.cs:195:17:195:56 | After ... && ... | cflow.cs:198:17:198:33 | After ... == ... [true] | true | +| cflow.cs:195:17:195:56 | After ... && ... | cflow.cs:198:17:198:48 | After ... ? ... : ... | true | +| cflow.cs:197:9:198:49 | After if (...) ... | cflow.cs:200:15:200:31 | After ... == ... [false] | false | +| cflow.cs:197:9:198:49 | After if (...) ... | cflow.cs:200:15:200:31 | After ... == ... [true] | true | +| cflow.cs:197:9:198:49 | After if (...) ... | cflow.cs:200:40:200:56 | After ... == ... [false] | true | +| cflow.cs:197:9:198:49 | After if (...) ... | cflow.cs:200:40:200:56 | After ... == ... [true] | true | +| cflow.cs:197:9:198:49 | After if (...) ... | cflow.cs:200:40:200:61 | After ... && ... [false] | true | +| cflow.cs:197:9:198:49 | After if (...) ... | cflow.cs:200:61:200:61 | After access to local variable b [false] | true | +| cflow.cs:197:9:198:49 | After if (...) ... | cflow.cs:200:61:200:61 | After access to local variable b [true] | true | +| cflow.cs:197:15:197:31 | After ... == ... [true] | cflow.cs:198:17:198:33 | After ... == ... [false] | false | +| cflow.cs:197:15:197:31 | After ... == ... [true] | cflow.cs:198:17:198:33 | After ... == ... [true] | true | +| cflow.cs:200:15:200:31 | After ... == ... [true] | cflow.cs:200:40:200:56 | After ... == ... [false] | false | +| cflow.cs:200:15:200:31 | After ... == ... [true] | cflow.cs:200:40:200:56 | After ... == ... [true] | true | +| cflow.cs:200:15:200:31 | After ... == ... [true] | cflow.cs:200:61:200:61 | After access to local variable b [false] | true | +| cflow.cs:200:15:200:31 | After ... == ... [true] | cflow.cs:200:61:200:61 | After access to local variable b [true] | true | +| cflow.cs:200:40:200:56 | After ... == ... [true] | cflow.cs:200:61:200:61 | After access to local variable b [false] | false | +| cflow.cs:200:40:200:56 | After ... == ... [true] | cflow.cs:200:61:200:61 | After access to local variable b [true] | true | +| cflow.cs:210:9:221:36 | [LoopHeader] do ... while (...); | cflow.cs:221:18:221:34 | After ... < ... [false] | false | +| cflow.cs:210:9:221:36 | [LoopHeader] do ... while (...); | cflow.cs:221:18:221:34 | After ... < ... [true] | true | +| cflow.cs:211:9:221:9 | {...} | cflow.cs:213:17:213:32 | After ... > ... [false] | false | +| cflow.cs:211:9:221:9 | {...} | cflow.cs:213:17:213:32 | After ... > ... [true] | true | +| cflow.cs:211:9:221:9 | {...} | cflow.cs:217:17:217:32 | After ... < ... [false] | false | +| cflow.cs:211:9:221:9 | {...} | cflow.cs:217:17:217:32 | After ... < ... [true] | false | +| cflow.cs:213:17:213:32 | After ... > ... [false] | cflow.cs:217:17:217:32 | After ... < ... [false] | false | +| cflow.cs:213:17:213:32 | After ... > ... [false] | cflow.cs:217:17:217:32 | After ... < ... [true] | true | +| cflow.cs:224:10:224:16 | Entry | cflow.cs:226:9:237:9 | [LoopHeader] foreach (... ... in ...) ... | false | +| cflow.cs:224:10:224:16 | Entry | cflow.cs:226:22:226:22 | String x | false | +| cflow.cs:224:10:224:16 | Entry | cflow.cs:226:27:226:64 | After call to method Repeat [empty] | true | +| cflow.cs:224:10:224:16 | Entry | cflow.cs:226:27:226:64 | After call to method Repeat [non-empty] | false | +| cflow.cs:224:10:224:16 | Entry | cflow.cs:229:17:229:32 | After ... > ... [false] | false | +| cflow.cs:224:10:224:16 | Entry | cflow.cs:229:17:229:32 | After ... > ... [true] | false | +| cflow.cs:224:10:224:16 | Entry | cflow.cs:233:17:233:32 | After ... < ... [false] | false | +| cflow.cs:224:10:224:16 | Entry | cflow.cs:233:17:233:32 | After ... < ... [true] | false | +| cflow.cs:226:22:226:22 | String x | cflow.cs:229:17:229:32 | After ... > ... [false] | false | +| cflow.cs:226:22:226:22 | String x | cflow.cs:229:17:229:32 | After ... > ... [true] | true | +| cflow.cs:226:22:226:22 | String x | cflow.cs:233:17:233:32 | After ... < ... [false] | false | +| cflow.cs:226:22:226:22 | String x | cflow.cs:233:17:233:32 | After ... < ... [true] | false | +| cflow.cs:229:17:229:32 | After ... > ... [false] | cflow.cs:233:17:233:32 | After ... < ... [false] | false | +| cflow.cs:229:17:229:32 | After ... > ... [false] | cflow.cs:233:17:233:32 | After ... < ... [true] | true | +| cflow.cs:242:5:242:9 | Label: | cflow.cs:242:19:242:35 | After ... == ... [false] | false | +| cflow.cs:242:5:242:9 | Label: | cflow.cs:242:19:242:35 | After ... == ... [true] | true | +| cflow.cs:242:12:242:41 | After if (...) ... | cflow.cs:244:13:244:28 | After ... > ... [false] | false | +| cflow.cs:242:12:242:41 | After if (...) ... | cflow.cs:244:13:244:28 | After ... > ... [true] | true | +| cflow.cs:242:12:242:41 | After if (...) ... | cflow.cs:246:9:258:9 | After switch (...) {...} | false | +| cflow.cs:242:12:242:41 | After if (...) ... | cflow.cs:248:18:248:18 | After 0 [match] | false | +| cflow.cs:242:12:242:41 | After if (...) ... | cflow.cs:248:18:248:18 | After 0 [no-match] | false | +| cflow.cs:242:12:242:41 | After if (...) ... | cflow.cs:250:18:250:18 | After 1 [match] | false | +| cflow.cs:242:12:242:41 | After if (...) ... | cflow.cs:250:18:250:18 | After 1 [no-match] | false | +| cflow.cs:242:12:242:41 | After if (...) ... | cflow.cs:253:18:253:18 | After 2 [match] | false | +| cflow.cs:242:12:242:41 | After if (...) ... | cflow.cs:253:18:253:18 | After 2 [no-match] | false | +| cflow.cs:242:12:242:41 | After if (...) ... | cflow.cs:255:13:255:20 | After default: [match] | false | +| cflow.cs:244:13:244:28 | After ... > ... [false] | cflow.cs:248:18:248:18 | After 0 [match] | true | +| cflow.cs:244:13:244:28 | After ... > ... [false] | cflow.cs:248:18:248:18 | After 0 [no-match] | false | +| cflow.cs:244:13:244:28 | After ... > ... [false] | cflow.cs:250:18:250:18 | After 1 [match] | false | +| cflow.cs:244:13:244:28 | After ... > ... [false] | cflow.cs:250:18:250:18 | After 1 [no-match] | false | +| cflow.cs:244:13:244:28 | After ... > ... [false] | cflow.cs:253:18:253:18 | After 2 [match] | false | +| cflow.cs:244:13:244:28 | After ... > ... [false] | cflow.cs:253:18:253:18 | After 2 [no-match] | false | +| cflow.cs:248:18:248:18 | After 0 [no-match] | cflow.cs:250:18:250:18 | After 1 [match] | true | +| cflow.cs:248:18:248:18 | After 0 [no-match] | cflow.cs:250:18:250:18 | After 1 [no-match] | false | +| cflow.cs:248:18:248:18 | After 0 [no-match] | cflow.cs:253:18:253:18 | After 2 [match] | false | +| cflow.cs:248:18:248:18 | After 0 [no-match] | cflow.cs:253:18:253:18 | After 2 [no-match] | false | +| cflow.cs:250:18:250:18 | After 1 [no-match] | cflow.cs:253:18:253:18 | After 2 [match] | true | +| cflow.cs:250:18:250:18 | After 1 [no-match] | cflow.cs:253:18:253:18 | After 2 [no-match] | false | +| cflow.cs:264:25:264:30 | Before ... < ... | cflow.cs:261:49:261:53 | Exceptional Exit | false | +| cflow.cs:264:25:264:30 | Before ... < ... | cflow.cs:261:49:261:53 | Exit | false | +| cflow.cs:264:25:264:30 | Before ... < ... | cflow.cs:261:49:261:53 | Normal Exit | false | +| cflow.cs:264:25:264:30 | Before ... < ... | cflow.cs:264:25:264:30 | After ... < ... [false] | false | +| cflow.cs:264:25:264:30 | Before ... < ... | cflow.cs:264:25:264:30 | After ... < ... [true] | true | +| cflow.cs:264:25:264:30 | Before ... < ... | cflow.cs:268:9:276:9 | After try {...} ... | false | +| cflow.cs:298:10:298:10 | Entry | cflow.cs:300:46:300:50 | After ... > ... [false] | false | +| cflow.cs:298:10:298:10 | Entry | cflow.cs:300:46:300:50 | After ... > ... [true] | true | conditionFlow -| Assert.cs:9:20:9:20 | access to parameter b | Assert.cs:9:24:9:27 | null | true | -| Assert.cs:9:20:9:20 | access to parameter b | Assert.cs:9:31:9:32 | "" | false | -| Assert.cs:16:20:16:20 | access to parameter b | Assert.cs:16:24:16:27 | null | true | -| Assert.cs:16:20:16:20 | access to parameter b | Assert.cs:16:31:16:32 | "" | false | -| Assert.cs:23:20:23:20 | access to parameter b | Assert.cs:23:24:23:27 | null | true | -| Assert.cs:23:20:23:20 | access to parameter b | Assert.cs:23:31:23:32 | "" | false | -| Assert.cs:30:20:30:20 | access to parameter b | Assert.cs:30:24:30:27 | null | true | -| Assert.cs:30:20:30:20 | access to parameter b | Assert.cs:30:31:30:32 | "" | false | -| Assert.cs:37:20:37:20 | access to parameter b | Assert.cs:37:24:37:27 | null | true | -| Assert.cs:37:20:37:20 | access to parameter b | Assert.cs:37:31:37:32 | "" | false | -| Assert.cs:44:20:44:20 | access to parameter b | Assert.cs:44:24:44:27 | null | true | -| Assert.cs:44:20:44:20 | access to parameter b | Assert.cs:44:31:44:32 | "" | false | -| Assert.cs:51:20:51:20 | access to parameter b | Assert.cs:51:24:51:27 | null | true | -| Assert.cs:51:20:51:20 | access to parameter b | Assert.cs:51:31:51:32 | "" | false | -| Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:24:58:27 | null | true | -| Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:31:58:32 | "" | false | -| Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:23:59:36 | ... && ... | false | -| Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:36:59:36 | access to parameter b | true | -| Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:24:65:27 | null | true | -| Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:31:65:32 | "" | false | -| Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:24:66:37 | ... \|\| ... | true | -| Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:37:66:37 | access to parameter b | false | -| Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:24:72:27 | null | true | -| Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:31:72:32 | "" | false | -| Assert.cs:73:23:73:31 | ... == ... | Assert.cs:73:23:73:36 | ... && ... | false | -| Assert.cs:73:23:73:31 | ... == ... | Assert.cs:73:36:73:36 | access to parameter b | true | -| Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:24:79:27 | null | true | -| Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:31:79:32 | "" | false | -| Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:24:80:37 | ... \|\| ... | true | -| Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:37:80:37 | access to parameter b | false | -| Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:86:24:86:27 | null | true | -| Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:86:31:86:32 | "" | false | -| Assert.cs:90:13:90:13 | access to parameter b | Assert.cs:90:17:90:20 | null | true | -| Assert.cs:90:13:90:13 | access to parameter b | Assert.cs:90:24:90:25 | "" | false | -| Assert.cs:94:13:94:13 | access to parameter b | Assert.cs:94:17:94:20 | null | true | -| Assert.cs:94:13:94:13 | access to parameter b | Assert.cs:94:24:94:25 | "" | false | -| Assert.cs:98:13:98:13 | access to parameter b | Assert.cs:98:17:98:20 | null | true | -| Assert.cs:98:13:98:13 | access to parameter b | Assert.cs:98:24:98:25 | "" | false | -| Assert.cs:102:13:102:13 | access to parameter b | Assert.cs:102:17:102:20 | null | true | -| Assert.cs:102:13:102:13 | access to parameter b | Assert.cs:102:24:102:25 | "" | false | -| Assert.cs:106:13:106:13 | access to parameter b | Assert.cs:106:17:106:20 | null | true | -| Assert.cs:106:13:106:13 | access to parameter b | Assert.cs:106:24:106:25 | "" | false | -| Assert.cs:110:13:110:13 | access to parameter b | Assert.cs:110:17:110:20 | null | true | -| Assert.cs:110:13:110:13 | access to parameter b | Assert.cs:110:24:110:25 | "" | false | -| Assert.cs:114:13:114:13 | access to parameter b | Assert.cs:114:17:114:20 | null | true | -| Assert.cs:114:13:114:13 | access to parameter b | Assert.cs:114:24:114:25 | "" | false | -| Assert.cs:115:23:115:31 | ... != ... | Assert.cs:115:23:115:36 | ... && ... | false | -| Assert.cs:115:23:115:31 | ... != ... | Assert.cs:115:36:115:36 | access to parameter b | true | -| Assert.cs:118:13:118:13 | access to parameter b | Assert.cs:118:17:118:20 | null | true | -| Assert.cs:118:13:118:13 | access to parameter b | Assert.cs:118:24:118:25 | "" | false | -| Assert.cs:119:24:119:32 | ... == ... | Assert.cs:119:24:119:38 | ... \|\| ... | true | -| Assert.cs:119:24:119:32 | ... == ... | Assert.cs:119:38:119:38 | access to parameter b | false | -| Assert.cs:122:13:122:13 | access to parameter b | Assert.cs:122:17:122:20 | null | true | -| Assert.cs:122:13:122:13 | access to parameter b | Assert.cs:122:24:122:25 | "" | false | -| Assert.cs:123:23:123:31 | ... == ... | Assert.cs:123:23:123:36 | ... && ... | false | -| Assert.cs:123:23:123:31 | ... == ... | Assert.cs:123:36:123:36 | access to parameter b | true | -| Assert.cs:126:13:126:13 | access to parameter b | Assert.cs:126:17:126:20 | null | true | -| Assert.cs:126:13:126:13 | access to parameter b | Assert.cs:126:24:126:25 | "" | false | -| Assert.cs:127:24:127:32 | ... != ... | Assert.cs:127:24:127:38 | ... \|\| ... | true | -| Assert.cs:127:24:127:32 | ... != ... | Assert.cs:127:38:127:38 | access to parameter b | false | -| BreakInTry.cs:9:21:9:31 | ... == ... | BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | false | -| BreakInTry.cs:9:21:9:31 | ... == ... | BreakInTry.cs:10:21:10:26 | break; | true | -| BreakInTry.cs:15:17:15:28 | ... == ... | BreakInTry.cs:3:10:3:11 | exit M1 (normal) | false | -| BreakInTry.cs:15:17:15:28 | ... == ... | BreakInTry.cs:16:17:16:17 | ; | true | -| BreakInTry.cs:26:21:26:31 | ... == ... | BreakInTry.cs:27:21:27:26 | break; | true | -| BreakInTry.cs:26:21:26:31 | ... == ... | BreakInTry.cs:30:13:33:13 | {...} | false | -| BreakInTry.cs:31:21:31:32 | ... == ... | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | false | -| BreakInTry.cs:31:21:31:32 | ... == ... | BreakInTry.cs:32:21:32:21 | ; | true | -| BreakInTry.cs:31:21:31:32 | ... == ... | BreakInTry.cs:35:7:35:7 | ; | false | -| BreakInTry.cs:42:17:42:28 | ... == ... | BreakInTry.cs:43:17:43:23 | return ...; | true | -| BreakInTry.cs:42:17:42:28 | ... == ... | BreakInTry.cs:46:9:52:9 | {...} | false | -| BreakInTry.cs:49:21:49:31 | ... == ... | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | false | -| BreakInTry.cs:49:21:49:31 | ... == ... | BreakInTry.cs:50:21:50:26 | break; | true | -| BreakInTry.cs:60:17:60:28 | ... == ... | BreakInTry.cs:61:17:61:23 | return ...; | true | -| BreakInTry.cs:60:17:60:28 | ... == ... | BreakInTry.cs:64:9:70:9 | {...} | false | -| BreakInTry.cs:67:21:67:31 | ... == ... | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | false | -| BreakInTry.cs:67:21:67:31 | ... == ... | BreakInTry.cs:68:21:68:26 | break; | true | -| ConditionalAccess.cs:13:13:13:25 | ... > ... | ConditionalAccess.cs:14:20:14:20 | 0 | true | -| ConditionalAccess.cs:13:13:13:25 | ... > ... | ConditionalAccess.cs:16:20:16:20 | 1 | false | -| Conditions.cs:5:13:5:15 | access to parameter inc | Conditions.cs:6:13:6:16 | ...; | true | -| Conditions.cs:5:13:5:15 | access to parameter inc | Conditions.cs:7:9:8:16 | if (...) ... | false | -| Conditions.cs:7:13:7:16 | [false] !... | Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | false | -| Conditions.cs:7:13:7:16 | [true] !... | Conditions.cs:8:13:8:16 | ...; | true | -| Conditions.cs:7:14:7:16 | access to parameter inc | Conditions.cs:7:13:7:16 | [false] !... | true | -| Conditions.cs:7:14:7:16 | access to parameter inc | Conditions.cs:7:13:7:16 | [true] !... | false | -| Conditions.cs:14:13:14:13 | access to parameter b | Conditions.cs:15:13:15:16 | ...; | true | -| Conditions.cs:14:13:14:13 | access to parameter b | Conditions.cs:16:9:18:20 | if (...) ... | false | -| Conditions.cs:16:13:16:17 | ... > ... | Conditions.cs:17:13:18:20 | if (...) ... | true | -| Conditions.cs:16:13:16:17 | ... > ... | Conditions.cs:19:16:19:16 | access to local variable x | false | -| Conditions.cs:17:17:17:18 | [false] !... | Conditions.cs:19:16:19:16 | access to local variable x | false | -| Conditions.cs:17:17:17:18 | [true] !... | Conditions.cs:18:17:18:20 | ...; | true | -| Conditions.cs:17:18:17:18 | access to parameter b | Conditions.cs:17:17:17:18 | [false] !... | true | -| Conditions.cs:17:18:17:18 | access to parameter b | Conditions.cs:17:17:17:18 | [true] !... | false | -| Conditions.cs:25:13:25:14 | access to parameter b1 | Conditions.cs:26:13:27:20 | if (...) ... | true | -| Conditions.cs:25:13:25:14 | access to parameter b1 | Conditions.cs:28:9:29:16 | if (...) ... | false | -| Conditions.cs:26:17:26:18 | access to parameter b2 | Conditions.cs:27:17:27:20 | ...; | true | -| Conditions.cs:26:17:26:18 | access to parameter b2 | Conditions.cs:28:9:29:16 | if (...) ... | false | -| Conditions.cs:28:13:28:14 | access to parameter b2 | Conditions.cs:29:13:29:16 | ...; | true | -| Conditions.cs:28:13:28:14 | access to parameter b2 | Conditions.cs:30:16:30:16 | access to local variable x | false | -| Conditions.cs:37:13:37:14 | access to parameter b1 | Conditions.cs:38:13:38:20 | ...; | true | -| Conditions.cs:37:13:37:14 | access to parameter b1 | Conditions.cs:39:9:40:16 | if (...) ... | false | -| Conditions.cs:39:13:39:14 | access to local variable b2 | Conditions.cs:40:13:40:16 | ...; | true | -| Conditions.cs:39:13:39:14 | access to local variable b2 | Conditions.cs:41:9:42:16 | if (...) ... | false | -| Conditions.cs:41:13:41:14 | access to local variable b2 | Conditions.cs:42:13:42:16 | ...; | true | -| Conditions.cs:41:13:41:14 | access to local variable b2 | Conditions.cs:43:16:43:16 | access to local variable x | false | -| Conditions.cs:49:16:49:22 | ... > ... | Conditions.cs:50:9:53:9 | {...} | true | -| Conditions.cs:49:16:49:22 | ... > ... | Conditions.cs:54:16:54:16 | access to local variable y | false | -| Conditions.cs:51:17:51:17 | access to parameter b | Conditions.cs:49:16:49:16 | access to parameter x | false | -| Conditions.cs:51:17:51:17 | access to parameter b | Conditions.cs:52:17:52:20 | ...; | true | -| Conditions.cs:60:16:60:22 | ... > ... | Conditions.cs:61:9:64:9 | {...} | true | -| Conditions.cs:60:16:60:22 | ... > ... | Conditions.cs:65:9:66:16 | if (...) ... | false | -| Conditions.cs:62:17:62:17 | access to parameter b | Conditions.cs:60:16:60:16 | access to parameter x | false | -| Conditions.cs:62:17:62:17 | access to parameter b | Conditions.cs:63:17:63:20 | ...; | true | -| Conditions.cs:65:13:65:13 | access to parameter b | Conditions.cs:66:13:66:16 | ...; | true | -| Conditions.cs:65:13:65:13 | access to parameter b | Conditions.cs:67:16:67:16 | access to local variable y | false | -| Conditions.cs:76:17:76:17 | access to local variable b | Conditions.cs:77:17:77:20 | ...; | true | -| Conditions.cs:76:17:76:17 | access to local variable b | Conditions.cs:78:13:79:26 | if (...) ... | false | -| Conditions.cs:78:17:78:21 | ... > ... | Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | false | -| Conditions.cs:78:17:78:21 | ... > ... | Conditions.cs:79:17:79:26 | ...; | true | -| Conditions.cs:81:13:81:13 | access to local variable b | Conditions.cs:82:13:82:16 | ...; | true | -| Conditions.cs:81:13:81:13 | access to local variable b | Conditions.cs:83:16:83:16 | access to local variable x | false | -| Conditions.cs:92:17:92:17 | access to local variable b | Conditions.cs:93:17:93:20 | ...; | true | -| Conditions.cs:92:17:92:17 | access to local variable b | Conditions.cs:94:13:95:26 | if (...) ... | false | -| Conditions.cs:94:17:94:21 | ... > ... | Conditions.cs:95:17:95:26 | ...; | true | -| Conditions.cs:94:17:94:21 | ... > ... | Conditions.cs:96:13:97:20 | if (...) ... | false | -| Conditions.cs:96:17:96:17 | access to local variable b | Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | false | -| Conditions.cs:96:17:96:17 | access to local variable b | Conditions.cs:97:17:97:20 | ...; | true | -| Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:106:13:106:20 | ...; | true | -| Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:107:9:109:24 | if (...) ... | false | -| Conditions.cs:107:13:107:24 | ... > ... | Conditions.cs:108:13:109:24 | if (...) ... | true | -| Conditions.cs:107:13:107:24 | ... > ... | Conditions.cs:110:16:110:16 | access to local variable x | false | -| Conditions.cs:108:17:108:18 | [false] !... | Conditions.cs:110:16:110:16 | access to local variable x | false | -| Conditions.cs:108:17:108:18 | [true] !... | Conditions.cs:109:17:109:24 | ...; | true | -| Conditions.cs:108:18:108:18 | access to parameter b | Conditions.cs:108:17:108:18 | [false] !... | true | -| Conditions.cs:108:18:108:18 | access to parameter b | Conditions.cs:108:17:108:18 | [true] !... | false | -| Conditions.cs:116:25:116:39 | ... < ... | Conditions.cs:113:10:113:11 | exit M9 (normal) | false | -| Conditions.cs:116:25:116:39 | ... < ... | Conditions.cs:117:9:123:9 | {...} | true | -| Conditions.cs:119:17:119:21 | [false] !... | Conditions.cs:121:13:122:25 | if (...) ... | false | -| Conditions.cs:119:17:119:21 | [true] !... | Conditions.cs:120:17:120:23 | ...; | true | -| Conditions.cs:119:18:119:21 | access to local variable last | Conditions.cs:119:17:119:21 | [false] !... | true | -| Conditions.cs:119:18:119:21 | access to local variable last | Conditions.cs:119:17:119:21 | [true] !... | false | -| Conditions.cs:121:17:121:20 | access to local variable last | Conditions.cs:116:42:116:42 | access to local variable i | false | -| Conditions.cs:121:17:121:20 | access to local variable last | Conditions.cs:122:17:122:25 | ...; | true | -| Conditions.cs:131:16:131:19 | true | Conditions.cs:132:9:140:9 | {...} | true | -| Conditions.cs:133:17:133:22 | access to field Field1 | Conditions.cs:131:16:131:19 | true | false | -| Conditions.cs:133:17:133:22 | access to field Field1 | Conditions.cs:134:13:139:13 | {...} | true | -| Conditions.cs:135:21:135:26 | access to field Field2 | Conditions.cs:131:16:131:19 | true | false | -| Conditions.cs:135:21:135:26 | access to field Field2 | Conditions.cs:136:17:138:17 | {...} | true | -| Conditions.cs:145:17:145:17 | access to parameter b | Conditions.cs:145:21:145:23 | "a" | true | -| Conditions.cs:145:17:145:17 | access to parameter b | Conditions.cs:145:27:145:29 | "b" | false | -| Conditions.cs:146:13:146:13 | access to parameter b | Conditions.cs:147:13:147:49 | ...; | true | -| Conditions.cs:146:13:146:13 | access to parameter b | Conditions.cs:149:13:149:49 | ...; | false | -| ExitMethods.cs:68:13:68:13 | access to parameter b | ExitMethods.cs:66:17:66:26 | exit ErrorMaybe (normal) | false | -| ExitMethods.cs:68:13:68:13 | access to parameter b | ExitMethods.cs:69:19:69:33 | object creation of type Exception | true | -| ExitMethods.cs:74:13:74:13 | access to parameter b | ExitMethods.cs:75:19:75:33 | object creation of type Exception | true | -| ExitMethods.cs:74:13:74:13 | access to parameter b | ExitMethods.cs:77:41:77:43 | "b" | false | -| ExitMethods.cs:112:16:112:25 | ... != ... | ExitMethods.cs:112:29:112:29 | 1 | true | -| ExitMethods.cs:112:16:112:25 | ... != ... | ExitMethods.cs:112:69:112:75 | "input" | false | -| ExitMethods.cs:117:16:117:30 | call to method Contains | ExitMethods.cs:117:34:117:34 | 0 | true | -| ExitMethods.cs:117:16:117:30 | call to method Contains | ExitMethods.cs:117:38:117:38 | 1 | false | -| ExitMethods.cs:142:13:142:13 | access to parameter b | ExitMethods.cs:143:13:143:43 | ...; | true | -| ExitMethods.cs:142:13:142:13 | access to parameter b | ExitMethods.cs:145:13:145:53 | ...; | false | -| Finally.cs:26:48:26:51 | true | Finally.cs:27:9:29:9 | {...} | true | -| Finally.cs:34:21:34:24 | true | Finally.cs:34:27:34:32 | throw ...; | true | -| Finally.cs:61:48:61:51 | true | Finally.cs:62:9:64:9 | {...} | true | -| Finally.cs:65:35:65:51 | ... != ... | Finally.cs:66:9:67:9 | {...} | true | -| Finally.cs:77:16:77:20 | ... > ... | Finally.cs:74:10:74:11 | exit M4 (normal) | false | -| Finally.cs:77:16:77:20 | ... > ... | Finally.cs:78:9:100:9 | {...} | true | -| Finally.cs:81:21:81:26 | ... == ... | Finally.cs:82:21:82:27 | return ...; | true | -| Finally.cs:81:21:81:26 | ... == ... | Finally.cs:83:17:84:29 | if (...) ... | false | -| Finally.cs:83:21:83:26 | ... == ... | Finally.cs:84:21:84:29 | continue; | true | -| Finally.cs:83:21:83:26 | ... == ... | Finally.cs:85:17:86:26 | if (...) ... | false | -| Finally.cs:85:21:85:26 | ... == ... | Finally.cs:86:21:86:26 | break; | true | -| Finally.cs:85:21:85:26 | ... == ... | Finally.cs:89:13:99:13 | {...} | false | -| Finally.cs:92:25:92:30 | ... == ... | Finally.cs:93:31:93:45 | object creation of type Exception | true | -| Finally.cs:92:25:92:30 | ... == ... | Finally.cs:96:17:98:17 | {...} | false | -| Finally.cs:107:17:107:33 | ... == ... | Finally.cs:108:17:108:23 | return ...; | true | -| Finally.cs:107:17:107:33 | ... == ... | Finally.cs:109:13:110:49 | if (...) ... | false | -| Finally.cs:109:17:109:33 | ... == ... | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | true | -| Finally.cs:109:17:109:33 | ... == ... | Finally.cs:113:9:118:9 | {...} | false | -| Finally.cs:114:17:114:36 | [false] !... | Finally.cs:116:13:117:37 | if (...) ... | false | -| Finally.cs:114:17:114:36 | [true] !... | Finally.cs:115:17:115:41 | ...; | true | -| Finally.cs:114:19:114:35 | ... == ... | Finally.cs:114:17:114:36 | [false] !... | true | -| Finally.cs:114:19:114:35 | ... == ... | Finally.cs:114:17:114:36 | [true] !... | false | -| Finally.cs:116:17:116:32 | ... > ... | Finally.cs:103:10:103:11 | exit M5 (normal) | false | -| Finally.cs:116:17:116:32 | ... > ... | Finally.cs:117:17:117:37 | ...; | true | -| Finally.cs:151:17:151:28 | ... == ... | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | true | -| Finally.cs:151:17:151:28 | ... == ... | Finally.cs:155:9:169:9 | {...} | false | -| Finally.cs:158:21:158:36 | ... == ... | Finally.cs:147:10:147:11 | exit M8 (normal) | false | -| Finally.cs:158:21:158:36 | ... == ... | Finally.cs:159:41:159:43 | "1" | true | -| Finally.cs:161:39:161:54 | ... == ... | Finally.cs:162:13:164:13 | {...} | true | -| Finally.cs:161:39:161:54 | ... == ... | Finally.cs:165:13:168:13 | catch {...} | false | -| Finally.cs:180:17:180:18 | access to parameter b1 | Finally.cs:180:27:180:42 | object creation of type ExceptionA | true | -| Finally.cs:180:17:180:18 | access to parameter b1 | Finally.cs:183:9:192:9 | {...} | false | -| Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:176:10:176:11 | exit M9 (normal) | false | -| Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:186:31:186:46 | object creation of type ExceptionB | true | -| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:189:13:191:13 | {...} | true | -| Finally.cs:190:21:190:22 | access to parameter b1 | Finally.cs:176:10:176:11 | exit M9 (normal) | false | -| Finally.cs:190:21:190:22 | access to parameter b1 | Finally.cs:190:31:190:46 | object creation of type ExceptionC | true | -| Finally.cs:199:17:199:18 | access to parameter b1 | Finally.cs:199:27:199:42 | object creation of type ExceptionA | true | -| Finally.cs:199:17:199:18 | access to parameter b1 | Finally.cs:202:9:212:9 | {...} | false | -| Finally.cs:205:21:205:22 | access to parameter b2 | Finally.cs:205:31:205:46 | object creation of type ExceptionB | true | -| Finally.cs:205:21:205:22 | access to parameter b2 | Finally.cs:208:13:210:13 | {...} | false | -| Finally.cs:209:21:209:22 | access to parameter b3 | Finally.cs:209:31:209:46 | object creation of type ExceptionC | true | -| Finally.cs:209:21:209:22 | access to parameter b3 | Finally.cs:211:13:211:29 | ...; | false | -| Finally.cs:239:21:239:22 | access to parameter b1 | Finally.cs:240:27:240:42 | object creation of type ExceptionA | true | -| Finally.cs:239:21:239:22 | access to parameter b1 | Finally.cs:243:13:253:13 | {...} | false | -| Finally.cs:246:25:246:26 | access to parameter b2 | Finally.cs:247:31:247:46 | object creation of type ExceptionA | true | -| Finally.cs:246:25:246:26 | access to parameter b2 | Finally.cs:250:17:252:17 | {...} | false | -| LoopUnrolling.cs:9:13:9:28 | ... == ... | LoopUnrolling.cs:10:13:10:19 | return ...; | true | -| LoopUnrolling.cs:9:13:9:28 | ... == ... | LoopUnrolling.cs:11:29:11:32 | access to parameter args | false | -| LoopUnrolling.cs:60:17:60:17 | access to parameter b | LoopUnrolling.cs:61:17:61:37 | ...; | true | -| LoopUnrolling.cs:60:17:60:17 | access to parameter b | LoopUnrolling.cs:62:13:63:37 | if (...) ... | false | -| LoopUnrolling.cs:62:17:62:17 | access to parameter b | LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | false | -| LoopUnrolling.cs:62:17:62:17 | access to parameter b | LoopUnrolling.cs:63:17:63:37 | ...; | true | -| LoopUnrolling.cs:69:13:69:23 | [false] !... | LoopUnrolling.cs:71:9:71:21 | ...; | false | -| LoopUnrolling.cs:69:13:69:23 | [true] !... | LoopUnrolling.cs:70:13:70:19 | return ...; | true | -| LoopUnrolling.cs:69:14:69:23 | call to method Any | LoopUnrolling.cs:69:13:69:23 | [false] !... | true | -| LoopUnrolling.cs:69:14:69:23 | call to method Any | LoopUnrolling.cs:69:13:69:23 | [true] !... | false | -| NullCoalescing.cs:5:25:5:25 | access to parameter b | NullCoalescing.cs:5:25:5:34 | [false] ... ?? ... | false | -| NullCoalescing.cs:5:25:5:25 | access to parameter b | NullCoalescing.cs:5:25:5:34 | [true] ... ?? ... | true | -| NullCoalescing.cs:5:25:5:34 | [false] ... ?? ... | NullCoalescing.cs:5:43:5:43 | 1 | false | -| NullCoalescing.cs:5:25:5:34 | [true] ... ?? ... | NullCoalescing.cs:5:39:5:39 | 0 | true | -| NullCoalescing.cs:5:30:5:34 | false | NullCoalescing.cs:5:25:5:34 | [false] ... ?? ... | false | -| NullCoalescing.cs:9:37:9:37 | access to parameter b | NullCoalescing.cs:9:41:9:41 | access to parameter s | true | -| NullCoalescing.cs:9:37:9:37 | access to parameter b | NullCoalescing.cs:9:45:9:45 | access to parameter s | false | -| NullCoalescing.cs:11:44:11:45 | access to parameter b1 | NullCoalescing.cs:11:44:11:59 | [false] ... ?? ... | false | -| NullCoalescing.cs:11:44:11:45 | access to parameter b1 | NullCoalescing.cs:11:44:11:59 | [true] ... ?? ... | true | -| NullCoalescing.cs:11:44:11:59 | [false] ... ?? ... | NullCoalescing.cs:11:68:11:68 | 1 | false | -| NullCoalescing.cs:11:44:11:59 | [true] ... ?? ... | NullCoalescing.cs:11:64:11:64 | 0 | true | -| NullCoalescing.cs:11:51:11:52 | access to parameter b2 | NullCoalescing.cs:11:51:11:58 | [false] ... && ... | false | -| NullCoalescing.cs:11:51:11:52 | access to parameter b2 | NullCoalescing.cs:11:57:11:58 | access to parameter b3 | true | -| NullCoalescing.cs:11:51:11:58 | [false] ... && ... | NullCoalescing.cs:11:44:11:59 | [false] ... ?? ... | false | -| NullCoalescing.cs:11:51:11:58 | [true] ... && ... | NullCoalescing.cs:11:44:11:59 | [true] ... ?? ... | true | -| NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:51:11:58 | [false] ... && ... | false | -| NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:51:11:58 | [true] ... && ... | true | -| Patterns.cs:8:13:8:23 | [false] ... is ... | Patterns.cs:12:14:18:9 | if (...) ... | false | -| Patterns.cs:8:13:8:23 | [true] ... is ... | Patterns.cs:9:9:11:9 | {...} | true | -| Patterns.cs:12:18:12:31 | [false] ... is ... | Patterns.cs:16:14:18:9 | if (...) ... | false | -| Patterns.cs:12:18:12:31 | [true] ... is ... | Patterns.cs:13:9:15:9 | {...} | true | -| Patterns.cs:16:18:16:28 | [false] ... is ... | Patterns.cs:20:9:38:9 | switch (...) {...} | false | -| Patterns.cs:16:18:16:28 | [true] ... is ... | Patterns.cs:17:9:18:9 | {...} | true | -| Patterns.cs:24:30:24:35 | ... > ... | Patterns.cs:25:17:25:52 | ...; | true | -| Patterns.cs:24:30:24:35 | ... > ... | Patterns.cs:27:13:27:24 | case ...: | false | -| Patterns.cs:51:9:51:21 | [false] ... is ... | Patterns.cs:51:34:51:34 | access to parameter c | false | -| Patterns.cs:51:9:51:21 | [true] ... is ... | Patterns.cs:51:25:51:25 | access to parameter c | true | -| Patterns.cs:85:39:85:53 | [false] ... is ... | Patterns.cs:85:67:85:69 | "2" | false | -| Patterns.cs:85:39:85:53 | [true] ... is ... | Patterns.cs:85:57:85:63 | "not 2" | true | -| Patterns.cs:87:39:87:54 | [false] ... is ... | Patterns.cs:87:64:87:70 | "not 1" | false | -| Patterns.cs:87:39:87:54 | [true] ... is ... | Patterns.cs:87:58:87:60 | "1" | true | -| Patterns.cs:95:13:95:40 | [false] ... is ... | Patterns.cs:93:17:93:19 | exit M10 (normal) | false | -| Patterns.cs:95:13:95:40 | [true] ... is ... | Patterns.cs:96:9:98:9 | {...} | true | -| PostDominance.cs:12:13:12:21 | [false] ... is ... | PostDominance.cs:14:9:14:29 | ...; | false | -| PostDominance.cs:12:13:12:21 | [true] ... is ... | PostDominance.cs:13:13:13:19 | return ...; | true | -| PostDominance.cs:19:13:19:21 | [false] ... is ... | PostDominance.cs:21:9:21:29 | ...; | false | -| PostDominance.cs:19:13:19:21 | [true] ... is ... | PostDominance.cs:20:45:20:53 | nameof(...) | true | -| Switch.cs:21:21:21:29 | ... == ... | Switch.cs:22:21:22:27 | return ...; | true | -| Switch.cs:21:21:21:29 | ... == ... | Switch.cs:23:27:23:27 | 0 | false | -| Switch.cs:24:32:24:43 | ... > ... | Switch.cs:24:32:24:55 | [false] ... && ... | false | -| Switch.cs:24:32:24:43 | ... > ... | Switch.cs:24:48:24:48 | access to local variable s | true | -| Switch.cs:24:32:24:55 | [false] ... && ... | Switch.cs:27:13:27:39 | case ...: | false | -| Switch.cs:24:32:24:55 | [true] ... && ... | Switch.cs:25:17:25:37 | ...; | true | -| Switch.cs:24:48:24:55 | ... != ... | Switch.cs:24:32:24:55 | [false] ... && ... | false | -| Switch.cs:24:48:24:55 | ... != ... | Switch.cs:24:32:24:55 | [true] ... && ... | true | -| Switch.cs:50:30:50:38 | ... != ... | Switch.cs:44:10:44:11 | exit M4 (normal) | false | -| Switch.cs:50:30:50:38 | ... != ... | Switch.cs:51:17:51:22 | break; | true | -| Switch.cs:84:21:84:25 | ... > ... | Switch.cs:85:21:85:26 | break; | true | -| Switch.cs:84:21:84:25 | ... > ... | Switch.cs:86:24:86:27 | true | false | -| Switch.cs:117:25:117:34 | ... == ... | Switch.cs:117:44:117:44 | 1 | true | -| Switch.cs:117:25:117:34 | ... == ... | Switch.cs:118:13:118:34 | case ...: | false | -| Switch.cs:118:25:118:33 | ... == ... | Switch.cs:118:43:118:43 | 2 | true | -| Switch.cs:118:25:118:33 | ... == ... | Switch.cs:120:17:120:17 | 1 | false | -| Switch.cs:125:13:125:48 | [false] ... switch { ... } | Switch.cs:123:10:123:12 | exit M11 (normal) | false | -| Switch.cs:125:13:125:48 | [true] ... switch { ... } | Switch.cs:126:13:126:19 | return ...; | true | -| Switch.cs:125:24:125:34 | [false] ... => ... | Switch.cs:125:13:125:48 | [false] ... switch { ... } | false | -| Switch.cs:125:24:125:34 | [true] ... => ... | Switch.cs:125:13:125:48 | [true] ... switch { ... } | true | -| Switch.cs:125:34:125:34 | access to local variable b | Switch.cs:125:24:125:34 | [false] ... => ... | false | -| Switch.cs:125:34:125:34 | access to local variable b | Switch.cs:125:24:125:34 | [true] ... => ... | true | -| Switch.cs:125:37:125:46 | [false] ... => ... | Switch.cs:125:13:125:48 | [false] ... switch { ... } | false | -| Switch.cs:125:42:125:46 | false | Switch.cs:125:37:125:46 | [false] ... => ... | false | -| Switch.cs:157:13:157:13 | access to parameter b | Switch.cs:158:13:158:49 | ...; | true | -| Switch.cs:157:13:157:13 | access to parameter b | Switch.cs:160:13:160:49 | ...; | false | -| TypeAccesses.cs:7:13:7:22 | [false] ... is ... | TypeAccesses.cs:8:9:8:28 | ... ...; | false | -| TypeAccesses.cs:7:13:7:22 | [true] ... is ... | TypeAccesses.cs:7:25:7:25 | ; | true | -| VarDecls.cs:25:20:25:20 | access to parameter b | VarDecls.cs:25:24:25:24 | access to local variable x | true | -| VarDecls.cs:25:20:25:20 | access to parameter b | VarDecls.cs:25:28:25:28 | access to local variable y | false | -| cflow.cs:11:13:11:17 | ... > ... | cflow.cs:12:13:12:49 | ...; | true | -| cflow.cs:11:13:11:17 | ... > ... | cflow.cs:14:9:17:9 | while (...) ... | false | -| cflow.cs:14:16:14:20 | ... > ... | cflow.cs:15:9:17:9 | {...} | true | -| cflow.cs:14:16:14:20 | ... > ... | cflow.cs:19:9:22:25 | do ... while (...); | false | -| cflow.cs:22:18:22:23 | ... < ... | cflow.cs:20:9:22:9 | {...} | true | -| cflow.cs:22:18:22:23 | ... < ... | cflow.cs:24:9:34:9 | for (...;...;...) ... | false | -| cflow.cs:24:25:24:31 | ... <= ... | cflow.cs:5:17:5:20 | exit Main (normal) | false | -| cflow.cs:24:25:24:31 | ... <= ... | cflow.cs:25:9:34:9 | {...} | true | -| cflow.cs:26:17:26:26 | ... == ... | cflow.cs:26:17:26:40 | [false] ... && ... | false | -| cflow.cs:26:17:26:26 | ... == ... | cflow.cs:26:31:26:31 | access to local variable i | true | -| cflow.cs:26:17:26:40 | [false] ... && ... | cflow.cs:28:18:33:37 | if (...) ... | false | -| cflow.cs:26:17:26:40 | [true] ... && ... | cflow.cs:27:17:27:46 | ...; | true | -| cflow.cs:26:31:26:40 | ... == ... | cflow.cs:26:17:26:40 | [false] ... && ... | false | -| cflow.cs:26:31:26:40 | ... == ... | cflow.cs:26:17:26:40 | [true] ... && ... | true | -| cflow.cs:28:22:28:31 | ... == ... | cflow.cs:29:17:29:42 | ...; | true | -| cflow.cs:28:22:28:31 | ... == ... | cflow.cs:30:18:33:37 | if (...) ... | false | -| cflow.cs:30:22:30:31 | ... == ... | cflow.cs:31:17:31:42 | ...; | true | -| cflow.cs:30:22:30:31 | ... == ... | cflow.cs:33:17:33:37 | ...; | false | -| cflow.cs:63:21:63:34 | [false] !... | cflow.cs:65:17:65:22 | break; | false | -| cflow.cs:63:21:63:34 | [true] !... | cflow.cs:64:27:64:54 | object creation of type NullReferenceException | true | -| cflow.cs:63:23:63:33 | ... == ... | cflow.cs:63:21:63:34 | [false] !... | true | -| cflow.cs:63:23:63:33 | ... == ... | cflow.cs:63:21:63:34 | [true] !... | false | -| cflow.cs:72:13:72:21 | ... == ... | cflow.cs:73:13:73:19 | return ...; | true | -| cflow.cs:72:13:72:21 | ... == ... | cflow.cs:74:9:81:9 | if (...) ... | false | -| cflow.cs:74:13:74:24 | ... > ... | cflow.cs:75:9:77:9 | {...} | true | -| cflow.cs:74:13:74:24 | ... > ... | cflow.cs:79:9:81:9 | {...} | false | -| cflow.cs:86:13:86:21 | ... != ... | cflow.cs:86:13:86:37 | [false] ... && ... | false | -| cflow.cs:86:13:86:21 | ... != ... | cflow.cs:86:26:86:26 | access to parameter s | true | -| cflow.cs:86:13:86:37 | [false] ... && ... | cflow.cs:84:18:84:19 | exit M2 (normal) | false | -| cflow.cs:86:13:86:37 | [true] ... && ... | cflow.cs:87:13:87:33 | ...; | true | -| cflow.cs:86:26:86:37 | ... > ... | cflow.cs:86:13:86:37 | [false] ... && ... | false | -| cflow.cs:86:26:86:37 | ... > ... | cflow.cs:86:13:86:37 | [true] ... && ... | true | -| cflow.cs:92:13:92:27 | call to method Equals | cflow.cs:93:45:93:47 | "s" | true | -| cflow.cs:92:13:92:27 | call to method Equals | cflow.cs:94:9:94:29 | ...; | false | -| cflow.cs:96:13:96:25 | ... != ... | cflow.cs:97:13:97:55 | ...; | true | -| cflow.cs:96:13:96:25 | ... != ... | cflow.cs:99:9:100:42 | if (...) ... | false | -| cflow.cs:99:13:99:25 | ... != ... | cflow.cs:100:13:100:42 | ...; | true | -| cflow.cs:99:13:99:25 | ... != ... | cflow.cs:102:9:103:36 | if (...) ... | false | -| cflow.cs:102:13:102:29 | ... != ... | cflow.cs:90:18:90:19 | exit M3 (normal) | false | -| cflow.cs:102:13:102:29 | ... != ... | cflow.cs:103:13:103:36 | ...; | true | -| cflow.cs:108:13:108:21 | ... != ... | cflow.cs:109:9:115:9 | {...} | true | -| cflow.cs:108:13:108:21 | ... != ... | cflow.cs:116:9:116:29 | ...; | false | -| cflow.cs:110:20:110:23 | true | cflow.cs:111:13:113:13 | {...} | true | -| cflow.cs:127:32:127:44 | ... == ... | cflow.cs:127:48:127:49 | "" | true | -| cflow.cs:127:32:127:44 | ... == ... | cflow.cs:127:53:127:57 | this access | false | -| cflow.cs:149:16:149:21 | ... < ... | cflow.cs:150:13:150:33 | ...; | true | -| cflow.cs:149:16:149:21 | ... < ... | cflow.cs:152:9:157:9 | for (...;...;...) ... | false | -| cflow.cs:155:17:155:22 | ... > ... | cflow.cs:152:18:152:18 | access to local variable x | false | -| cflow.cs:155:17:155:22 | ... > ... | cflow.cs:156:17:156:22 | break; | true | -| cflow.cs:163:17:163:22 | ... > ... | cflow.cs:160:9:165:9 | {...} | false | -| cflow.cs:163:17:163:22 | ... > ... | cflow.cs:164:17:164:22 | break; | true | -| cflow.cs:167:16:167:21 | ... < ... | cflow.cs:168:9:171:9 | {...} | true | -| cflow.cs:167:16:167:21 | ... < ... | cflow.cs:173:9:176:9 | for (...;...;...) ... | false | -| cflow.cs:173:32:173:41 | ... < ... | cflow.cs:146:10:146:12 | exit For (normal) | false | -| cflow.cs:173:32:173:41 | ... < ... | cflow.cs:174:9:176:9 | {...} | true | -| cflow.cs:187:13:187:18 | ... == ... | cflow.cs:187:23:187:23 | 2 | false | -| cflow.cs:187:13:187:28 | ... \|\| ... | cflow.cs:187:34:187:34 | 1 | false | -| cflow.cs:187:13:187:50 | ... \|\| ... | cflow.cs:190:13:190:52 | ...; | false | -| cflow.cs:187:23:187:28 | ... == ... | cflow.cs:187:13:187:28 | ... \|\| ... | false | -| cflow.cs:187:34:187:39 | ... == ... | cflow.cs:187:34:187:49 | ... && ... | false | -| cflow.cs:187:34:187:49 | ... && ... | cflow.cs:187:13:187:50 | ... \|\| ... | false | -| cflow.cs:195:17:195:32 | ... > ... | cflow.cs:195:17:195:56 | ... && ... | false | -| cflow.cs:195:17:195:32 | ... > ... | cflow.cs:195:39:195:43 | this access | true | -| cflow.cs:197:13:197:47 | [false] !... | cflow.cs:200:9:205:9 | if (...) ... | false | -| cflow.cs:197:13:197:47 | [true] !... | cflow.cs:198:13:198:49 | ...; | true | -| cflow.cs:197:15:197:31 | ... == ... | cflow.cs:197:35:197:39 | false | true | -| cflow.cs:197:15:197:31 | ... == ... | cflow.cs:197:43:197:46 | true | false | -| cflow.cs:197:15:197:46 | [false] ... ? ... : ... | cflow.cs:197:13:197:47 | [true] !... | false | -| cflow.cs:197:15:197:46 | [true] ... ? ... : ... | cflow.cs:197:13:197:47 | [false] !... | true | -| cflow.cs:197:35:197:39 | false | cflow.cs:197:15:197:46 | [false] ... ? ... : ... | false | -| cflow.cs:197:43:197:46 | true | cflow.cs:197:15:197:46 | [true] ... ? ... : ... | true | -| cflow.cs:198:17:198:33 | ... == ... | cflow.cs:198:37:198:41 | false | true | -| cflow.cs:198:17:198:33 | ... == ... | cflow.cs:198:45:198:48 | true | false | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:200:40:200:44 | this access | false | -| cflow.cs:200:13:200:32 | [true] !... | cflow.cs:200:13:200:62 | [true] ... \|\| ... | true | -| cflow.cs:200:13:200:62 | [false] ... \|\| ... | cflow.cs:193:10:193:17 | exit Booleans (normal) | false | -| cflow.cs:200:13:200:62 | [true] ... \|\| ... | cflow.cs:201:9:205:9 | {...} | true | -| cflow.cs:200:15:200:31 | ... == ... | cflow.cs:200:13:200:32 | [false] !... | true | -| cflow.cs:200:15:200:31 | ... == ... | cflow.cs:200:13:200:32 | [true] !... | false | -| cflow.cs:200:37:200:62 | [false] !... | cflow.cs:200:13:200:62 | [false] ... \|\| ... | false | -| cflow.cs:200:37:200:62 | [true] !... | cflow.cs:200:13:200:62 | [true] ... \|\| ... | true | -| cflow.cs:200:38:200:62 | [false] !... | cflow.cs:200:37:200:62 | [true] !... | false | -| cflow.cs:200:38:200:62 | [true] !... | cflow.cs:200:37:200:62 | [false] !... | true | -| cflow.cs:200:40:200:56 | ... == ... | cflow.cs:200:40:200:61 | [false] ... && ... | false | -| cflow.cs:200:40:200:56 | ... == ... | cflow.cs:200:61:200:61 | access to local variable b | true | -| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:200:38:200:62 | [true] !... | false | -| cflow.cs:200:40:200:61 | [true] ... && ... | cflow.cs:200:38:200:62 | [false] !... | true | -| cflow.cs:200:61:200:61 | access to local variable b | cflow.cs:200:40:200:61 | [false] ... && ... | false | -| cflow.cs:200:61:200:61 | access to local variable b | cflow.cs:200:40:200:61 | [true] ... && ... | true | -| cflow.cs:213:17:213:32 | ... > ... | cflow.cs:214:13:216:13 | {...} | true | -| cflow.cs:213:17:213:32 | ... > ... | cflow.cs:217:13:220:13 | if (...) ... | false | -| cflow.cs:217:17:217:32 | ... < ... | cflow.cs:218:13:220:13 | {...} | true | -| cflow.cs:217:17:217:32 | ... < ... | cflow.cs:221:18:221:22 | this access | false | -| cflow.cs:221:18:221:34 | ... < ... | cflow.cs:208:10:208:11 | exit Do (normal) | false | -| cflow.cs:221:18:221:34 | ... < ... | cflow.cs:211:9:221:9 | {...} | true | -| cflow.cs:229:17:229:32 | ... > ... | cflow.cs:230:13:232:13 | {...} | true | -| cflow.cs:229:17:229:32 | ... > ... | cflow.cs:233:13:236:13 | if (...) ... | false | -| cflow.cs:233:17:233:32 | ... < ... | cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | false | -| cflow.cs:233:17:233:32 | ... < ... | cflow.cs:234:13:236:13 | {...} | true | -| cflow.cs:242:16:242:36 | [false] !... | cflow.cs:244:9:244:41 | if (...) ... | false | -| cflow.cs:242:16:242:36 | [true] !... | cflow.cs:242:39:242:41 | {...} | true | -| cflow.cs:242:17:242:36 | [false] !... | cflow.cs:242:16:242:36 | [true] !... | false | -| cflow.cs:242:17:242:36 | [true] !... | cflow.cs:242:16:242:36 | [false] !... | true | -| cflow.cs:242:19:242:35 | ... == ... | cflow.cs:242:17:242:36 | [false] !... | true | -| cflow.cs:242:19:242:35 | ... == ... | cflow.cs:242:17:242:36 | [true] !... | false | -| cflow.cs:244:13:244:28 | ... > ... | cflow.cs:244:31:244:41 | goto ...; | true | -| cflow.cs:244:13:244:28 | ... > ... | cflow.cs:246:9:258:9 | switch (...) {...} | false | -| cflow.cs:264:25:264:30 | ... < ... | cflow.cs:265:9:267:9 | {...} | true | -| cflow.cs:264:25:264:30 | ... < ... | cflow.cs:268:9:276:9 | try {...} ... | false | -| cflow.cs:300:44:300:51 | [false] !... | cflow.cs:300:44:300:64 | ... && ... | false | -| cflow.cs:300:44:300:51 | [true] !... | cflow.cs:300:56:300:56 | access to parameter s | true | -| cflow.cs:300:46:300:50 | ... > ... | cflow.cs:300:44:300:51 | [false] !... | true | -| cflow.cs:300:46:300:50 | ... > ... | cflow.cs:300:44:300:51 | [true] !... | false | +| Assert.cs:9:20:9:20 | access to parameter b | Assert.cs:9:20:9:20 | After access to parameter b [false] | false | +| Assert.cs:9:20:9:20 | access to parameter b | Assert.cs:9:20:9:20 | After access to parameter b [true] | true | +| Assert.cs:16:20:16:20 | access to parameter b | Assert.cs:16:20:16:20 | After access to parameter b [false] | false | +| Assert.cs:16:20:16:20 | access to parameter b | Assert.cs:16:20:16:20 | After access to parameter b [true] | true | +| Assert.cs:23:20:23:20 | access to parameter b | Assert.cs:23:20:23:20 | After access to parameter b [false] | false | +| Assert.cs:23:20:23:20 | access to parameter b | Assert.cs:23:20:23:20 | After access to parameter b [true] | true | +| Assert.cs:30:20:30:20 | access to parameter b | Assert.cs:30:20:30:20 | After access to parameter b [false] | false | +| Assert.cs:30:20:30:20 | access to parameter b | Assert.cs:30:20:30:20 | After access to parameter b [true] | true | +| Assert.cs:37:20:37:20 | access to parameter b | Assert.cs:37:20:37:20 | After access to parameter b [false] | false | +| Assert.cs:37:20:37:20 | access to parameter b | Assert.cs:37:20:37:20 | After access to parameter b [true] | true | +| Assert.cs:44:20:44:20 | access to parameter b | Assert.cs:44:20:44:20 | After access to parameter b [false] | false | +| Assert.cs:44:20:44:20 | access to parameter b | Assert.cs:44:20:44:20 | After access to parameter b [true] | true | +| Assert.cs:51:20:51:20 | access to parameter b | Assert.cs:51:20:51:20 | After access to parameter b [false] | false | +| Assert.cs:51:20:51:20 | access to parameter b | Assert.cs:51:20:51:20 | After access to parameter b [true] | true | +| Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:20:58:20 | After access to parameter b [false] | false | +| Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:20:58:20 | After access to parameter b [true] | true | +| Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:23:59:31 | After ... != ... [false] | false | +| Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:23:59:31 | After ... != ... [true] | true | +| Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:20:65:20 | After access to parameter b [false] | false | +| Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:20:65:20 | After access to parameter b [true] | true | +| Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:24:66:32 | After ... == ... [false] | false | +| Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:24:66:32 | After ... == ... [true] | true | +| Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:20:72:20 | After access to parameter b [false] | false | +| Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:20:72:20 | After access to parameter b [true] | true | +| Assert.cs:73:23:73:31 | ... == ... | Assert.cs:73:23:73:31 | After ... == ... [false] | false | +| Assert.cs:73:23:73:31 | ... == ... | Assert.cs:73:23:73:31 | After ... == ... [true] | true | +| Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:20:79:20 | After access to parameter b [false] | false | +| Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:20:79:20 | After access to parameter b [true] | true | +| Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:24:80:32 | After ... != ... [false] | false | +| Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:24:80:32 | After ... != ... [true] | true | +| Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:86:20:86:20 | After access to parameter b [false] | false | +| Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:86:20:86:20 | After access to parameter b [true] | true | +| Assert.cs:90:13:90:13 | access to parameter b | Assert.cs:90:13:90:13 | After access to parameter b [false] | false | +| Assert.cs:90:13:90:13 | access to parameter b | Assert.cs:90:13:90:13 | After access to parameter b [true] | true | +| Assert.cs:94:13:94:13 | access to parameter b | Assert.cs:94:13:94:13 | After access to parameter b [false] | false | +| Assert.cs:94:13:94:13 | access to parameter b | Assert.cs:94:13:94:13 | After access to parameter b [true] | true | +| Assert.cs:98:13:98:13 | access to parameter b | Assert.cs:98:13:98:13 | After access to parameter b [false] | false | +| Assert.cs:98:13:98:13 | access to parameter b | Assert.cs:98:13:98:13 | After access to parameter b [true] | true | +| Assert.cs:102:13:102:13 | access to parameter b | Assert.cs:102:13:102:13 | After access to parameter b [false] | false | +| Assert.cs:102:13:102:13 | access to parameter b | Assert.cs:102:13:102:13 | After access to parameter b [true] | true | +| Assert.cs:106:13:106:13 | access to parameter b | Assert.cs:106:13:106:13 | After access to parameter b [false] | false | +| Assert.cs:106:13:106:13 | access to parameter b | Assert.cs:106:13:106:13 | After access to parameter b [true] | true | +| Assert.cs:110:13:110:13 | access to parameter b | Assert.cs:110:13:110:13 | After access to parameter b [false] | false | +| Assert.cs:110:13:110:13 | access to parameter b | Assert.cs:110:13:110:13 | After access to parameter b [true] | true | +| Assert.cs:114:13:114:13 | access to parameter b | Assert.cs:114:13:114:13 | After access to parameter b [false] | false | +| Assert.cs:114:13:114:13 | access to parameter b | Assert.cs:114:13:114:13 | After access to parameter b [true] | true | +| Assert.cs:115:23:115:31 | ... != ... | Assert.cs:115:23:115:31 | After ... != ... [false] | false | +| Assert.cs:115:23:115:31 | ... != ... | Assert.cs:115:23:115:31 | After ... != ... [true] | true | +| Assert.cs:118:13:118:13 | access to parameter b | Assert.cs:118:13:118:13 | After access to parameter b [false] | false | +| Assert.cs:118:13:118:13 | access to parameter b | Assert.cs:118:13:118:13 | After access to parameter b [true] | true | +| Assert.cs:119:24:119:32 | ... == ... | Assert.cs:119:24:119:32 | After ... == ... [false] | false | +| Assert.cs:119:24:119:32 | ... == ... | Assert.cs:119:24:119:32 | After ... == ... [true] | true | +| Assert.cs:122:13:122:13 | access to parameter b | Assert.cs:122:13:122:13 | After access to parameter b [false] | false | +| Assert.cs:122:13:122:13 | access to parameter b | Assert.cs:122:13:122:13 | After access to parameter b [true] | true | +| Assert.cs:123:23:123:31 | ... == ... | Assert.cs:123:23:123:31 | After ... == ... [false] | false | +| Assert.cs:123:23:123:31 | ... == ... | Assert.cs:123:23:123:31 | After ... == ... [true] | true | +| Assert.cs:126:13:126:13 | access to parameter b | Assert.cs:126:13:126:13 | After access to parameter b [false] | false | +| Assert.cs:126:13:126:13 | access to parameter b | Assert.cs:126:13:126:13 | After access to parameter b [true] | true | +| Assert.cs:127:24:127:32 | ... != ... | Assert.cs:127:24:127:32 | After ... != ... [false] | false | +| Assert.cs:127:24:127:32 | ... != ... | Assert.cs:127:24:127:32 | After ... != ... [true] | true | +| BreakInTry.cs:9:21:9:31 | ... == ... | BreakInTry.cs:9:21:9:31 | After ... == ... [false] | false | +| BreakInTry.cs:9:21:9:31 | ... == ... | BreakInTry.cs:9:21:9:31 | After ... == ... [true] | true | +| BreakInTry.cs:15:17:15:28 | ... == ... | BreakInTry.cs:15:17:15:28 | After ... == ... [false] | false | +| BreakInTry.cs:15:17:15:28 | ... == ... | BreakInTry.cs:15:17:15:28 | After ... == ... [true] | true | +| BreakInTry.cs:26:21:26:31 | ... == ... | BreakInTry.cs:26:21:26:31 | After ... == ... [false] | false | +| BreakInTry.cs:26:21:26:31 | ... == ... | BreakInTry.cs:26:21:26:31 | After ... == ... [true] | true | +| BreakInTry.cs:31:21:31:32 | ... == ... | BreakInTry.cs:31:21:31:32 | After ... == ... [false] | false | +| BreakInTry.cs:31:21:31:32 | ... == ... | BreakInTry.cs:31:21:31:32 | After ... == ... [true] | true | +| BreakInTry.cs:42:17:42:28 | ... == ... | BreakInTry.cs:42:17:42:28 | After ... == ... [false] | false | +| BreakInTry.cs:42:17:42:28 | ... == ... | BreakInTry.cs:42:17:42:28 | After ... == ... [true] | true | +| BreakInTry.cs:49:21:49:31 | ... == ... | BreakInTry.cs:49:21:49:31 | After ... == ... [false] | false | +| BreakInTry.cs:49:21:49:31 | ... == ... | BreakInTry.cs:49:21:49:31 | After ... == ... [true] | true | +| BreakInTry.cs:60:17:60:28 | ... == ... | BreakInTry.cs:60:17:60:28 | After ... == ... [false] | false | +| BreakInTry.cs:60:17:60:28 | ... == ... | BreakInTry.cs:60:17:60:28 | After ... == ... [true] | true | +| BreakInTry.cs:67:21:67:31 | ... == ... | BreakInTry.cs:67:21:67:31 | After ... == ... [false] | false | +| BreakInTry.cs:67:21:67:31 | ... == ... | BreakInTry.cs:67:21:67:31 | After ... == ... [true] | true | +| ConditionalAccess.cs:13:13:13:25 | ... > ... | ConditionalAccess.cs:13:13:13:25 | After ... > ... [false] | false | +| ConditionalAccess.cs:13:13:13:25 | ... > ... | ConditionalAccess.cs:13:13:13:25 | After ... > ... [true] | true | +| Conditions.cs:5:13:5:15 | access to parameter inc | Conditions.cs:5:13:5:15 | After access to parameter inc [false] | false | +| Conditions.cs:5:13:5:15 | access to parameter inc | Conditions.cs:5:13:5:15 | After access to parameter inc [true] | true | +| Conditions.cs:7:14:7:16 | After access to parameter inc [false] | Conditions.cs:7:13:7:16 | After !... [true] | true | +| Conditions.cs:7:14:7:16 | After access to parameter inc [true] | Conditions.cs:7:13:7:16 | After !... [false] | false | +| Conditions.cs:7:14:7:16 | access to parameter inc | Conditions.cs:7:14:7:16 | After access to parameter inc [false] | false | +| Conditions.cs:7:14:7:16 | access to parameter inc | Conditions.cs:7:14:7:16 | After access to parameter inc [true] | true | +| Conditions.cs:14:13:14:13 | access to parameter b | Conditions.cs:14:13:14:13 | After access to parameter b [false] | false | +| Conditions.cs:14:13:14:13 | access to parameter b | Conditions.cs:14:13:14:13 | After access to parameter b [true] | true | +| Conditions.cs:16:13:16:17 | ... > ... | Conditions.cs:16:13:16:17 | After ... > ... [false] | false | +| Conditions.cs:16:13:16:17 | ... > ... | Conditions.cs:16:13:16:17 | After ... > ... [true] | true | +| Conditions.cs:17:18:17:18 | After access to parameter b [false] | Conditions.cs:17:17:17:18 | After !... [true] | true | +| Conditions.cs:17:18:17:18 | After access to parameter b [true] | Conditions.cs:17:17:17:18 | After !... [false] | false | +| Conditions.cs:17:18:17:18 | access to parameter b | Conditions.cs:17:18:17:18 | After access to parameter b [false] | false | +| Conditions.cs:17:18:17:18 | access to parameter b | Conditions.cs:17:18:17:18 | After access to parameter b [true] | true | +| Conditions.cs:25:13:25:14 | access to parameter b1 | Conditions.cs:25:13:25:14 | After access to parameter b1 [false] | false | +| Conditions.cs:25:13:25:14 | access to parameter b1 | Conditions.cs:25:13:25:14 | After access to parameter b1 [true] | true | +| Conditions.cs:26:17:26:18 | access to parameter b2 | Conditions.cs:26:17:26:18 | After access to parameter b2 [false] | false | +| Conditions.cs:26:17:26:18 | access to parameter b2 | Conditions.cs:26:17:26:18 | After access to parameter b2 [true] | true | +| Conditions.cs:28:13:28:14 | access to parameter b2 | Conditions.cs:28:13:28:14 | After access to parameter b2 [false] | false | +| Conditions.cs:28:13:28:14 | access to parameter b2 | Conditions.cs:28:13:28:14 | After access to parameter b2 [true] | true | +| Conditions.cs:37:13:37:14 | access to parameter b1 | Conditions.cs:37:13:37:14 | After access to parameter b1 [false] | false | +| Conditions.cs:37:13:37:14 | access to parameter b1 | Conditions.cs:37:13:37:14 | After access to parameter b1 [true] | true | +| Conditions.cs:39:13:39:14 | access to local variable b2 | Conditions.cs:39:13:39:14 | After access to local variable b2 [false] | false | +| Conditions.cs:39:13:39:14 | access to local variable b2 | Conditions.cs:39:13:39:14 | After access to local variable b2 [true] | true | +| Conditions.cs:41:13:41:14 | access to local variable b2 | Conditions.cs:41:13:41:14 | After access to local variable b2 [false] | false | +| Conditions.cs:41:13:41:14 | access to local variable b2 | Conditions.cs:41:13:41:14 | After access to local variable b2 [true] | true | +| Conditions.cs:49:16:49:22 | ... > ... | Conditions.cs:49:16:49:22 | After ... > ... [false] | false | +| Conditions.cs:49:16:49:22 | ... > ... | Conditions.cs:49:16:49:22 | After ... > ... [true] | true | +| Conditions.cs:51:17:51:17 | access to parameter b | Conditions.cs:51:17:51:17 | After access to parameter b [false] | false | +| Conditions.cs:51:17:51:17 | access to parameter b | Conditions.cs:51:17:51:17 | After access to parameter b [true] | true | +| Conditions.cs:60:16:60:22 | ... > ... | Conditions.cs:60:16:60:22 | After ... > ... [false] | false | +| Conditions.cs:60:16:60:22 | ... > ... | Conditions.cs:60:16:60:22 | After ... > ... [true] | true | +| Conditions.cs:62:17:62:17 | access to parameter b | Conditions.cs:62:17:62:17 | After access to parameter b [false] | false | +| Conditions.cs:62:17:62:17 | access to parameter b | Conditions.cs:62:17:62:17 | After access to parameter b [true] | true | +| Conditions.cs:65:13:65:13 | access to parameter b | Conditions.cs:65:13:65:13 | After access to parameter b [false] | false | +| Conditions.cs:65:13:65:13 | access to parameter b | Conditions.cs:65:13:65:13 | After access to parameter b [true] | true | +| Conditions.cs:76:17:76:17 | access to local variable b | Conditions.cs:76:17:76:17 | After access to local variable b [false] | false | +| Conditions.cs:76:17:76:17 | access to local variable b | Conditions.cs:76:17:76:17 | After access to local variable b [true] | true | +| Conditions.cs:78:17:78:21 | ... > ... | Conditions.cs:78:17:78:21 | After ... > ... [false] | false | +| Conditions.cs:78:17:78:21 | ... > ... | Conditions.cs:78:17:78:21 | After ... > ... [true] | true | +| Conditions.cs:81:13:81:13 | access to local variable b | Conditions.cs:81:13:81:13 | After access to local variable b [false] | false | +| Conditions.cs:81:13:81:13 | access to local variable b | Conditions.cs:81:13:81:13 | After access to local variable b [true] | true | +| Conditions.cs:92:17:92:17 | access to local variable b | Conditions.cs:92:17:92:17 | After access to local variable b [false] | false | +| Conditions.cs:92:17:92:17 | access to local variable b | Conditions.cs:92:17:92:17 | After access to local variable b [true] | true | +| Conditions.cs:94:17:94:21 | ... > ... | Conditions.cs:94:17:94:21 | After ... > ... [false] | false | +| Conditions.cs:94:17:94:21 | ... > ... | Conditions.cs:94:17:94:21 | After ... > ... [true] | true | +| Conditions.cs:96:17:96:17 | access to local variable b | Conditions.cs:96:17:96:17 | After access to local variable b [false] | false | +| Conditions.cs:96:17:96:17 | access to local variable b | Conditions.cs:96:17:96:17 | After access to local variable b [true] | true | +| Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:105:13:105:13 | After access to parameter b [false] | false | +| Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:105:13:105:13 | After access to parameter b [true] | true | +| Conditions.cs:107:13:107:24 | ... > ... | Conditions.cs:107:13:107:24 | After ... > ... [false] | false | +| Conditions.cs:107:13:107:24 | ... > ... | Conditions.cs:107:13:107:24 | After ... > ... [true] | true | +| Conditions.cs:108:18:108:18 | After access to parameter b [false] | Conditions.cs:108:17:108:18 | After !... [true] | true | +| Conditions.cs:108:18:108:18 | After access to parameter b [true] | Conditions.cs:108:17:108:18 | After !... [false] | false | +| Conditions.cs:108:18:108:18 | access to parameter b | Conditions.cs:108:18:108:18 | After access to parameter b [false] | false | +| Conditions.cs:108:18:108:18 | access to parameter b | Conditions.cs:108:18:108:18 | After access to parameter b [true] | true | +| Conditions.cs:116:25:116:39 | ... < ... | Conditions.cs:116:25:116:39 | After ... < ... [false] | false | +| Conditions.cs:116:25:116:39 | ... < ... | Conditions.cs:116:25:116:39 | After ... < ... [true] | true | +| Conditions.cs:119:18:119:21 | After access to local variable last [false] | Conditions.cs:119:17:119:21 | After !... [true] | true | +| Conditions.cs:119:18:119:21 | After access to local variable last [true] | Conditions.cs:119:17:119:21 | After !... [false] | false | +| Conditions.cs:119:18:119:21 | access to local variable last | Conditions.cs:119:18:119:21 | After access to local variable last [false] | false | +| Conditions.cs:119:18:119:21 | access to local variable last | Conditions.cs:119:18:119:21 | After access to local variable last [true] | true | +| Conditions.cs:121:17:121:20 | access to local variable last | Conditions.cs:121:17:121:20 | After access to local variable last [false] | false | +| Conditions.cs:121:17:121:20 | access to local variable last | Conditions.cs:121:17:121:20 | After access to local variable last [true] | true | +| Conditions.cs:131:16:131:19 | true | Conditions.cs:131:16:131:19 | After true [true] | true | +| Conditions.cs:133:17:133:22 | access to field Field1 | Conditions.cs:133:17:133:22 | After access to field Field1 [false] | false | +| Conditions.cs:133:17:133:22 | access to field Field1 | Conditions.cs:133:17:133:22 | After access to field Field1 [true] | true | +| Conditions.cs:135:21:135:26 | access to field Field2 | Conditions.cs:135:21:135:26 | After access to field Field2 [false] | false | +| Conditions.cs:135:21:135:26 | access to field Field2 | Conditions.cs:135:21:135:26 | After access to field Field2 [true] | true | +| Conditions.cs:145:17:145:17 | access to parameter b | Conditions.cs:145:17:145:17 | After access to parameter b [false] | false | +| Conditions.cs:145:17:145:17 | access to parameter b | Conditions.cs:145:17:145:17 | After access to parameter b [true] | true | +| Conditions.cs:146:13:146:13 | access to parameter b | Conditions.cs:146:13:146:13 | After access to parameter b [false] | false | +| Conditions.cs:146:13:146:13 | access to parameter b | Conditions.cs:146:13:146:13 | After access to parameter b [true] | true | +| ExitMethods.cs:68:13:68:13 | access to parameter b | ExitMethods.cs:68:13:68:13 | After access to parameter b [false] | false | +| ExitMethods.cs:68:13:68:13 | access to parameter b | ExitMethods.cs:68:13:68:13 | After access to parameter b [true] | true | +| ExitMethods.cs:74:13:74:13 | access to parameter b | ExitMethods.cs:74:13:74:13 | After access to parameter b [false] | false | +| ExitMethods.cs:74:13:74:13 | access to parameter b | ExitMethods.cs:74:13:74:13 | After access to parameter b [true] | true | +| ExitMethods.cs:112:16:112:25 | ... != ... | ExitMethods.cs:112:16:112:25 | After ... != ... [false] | false | +| ExitMethods.cs:112:16:112:25 | ... != ... | ExitMethods.cs:112:16:112:25 | After ... != ... [true] | true | +| ExitMethods.cs:117:16:117:30 | call to method Contains | ExitMethods.cs:117:16:117:30 | After call to method Contains [false] | false | +| ExitMethods.cs:117:16:117:30 | call to method Contains | ExitMethods.cs:117:16:117:30 | After call to method Contains [true] | true | +| ExitMethods.cs:142:13:142:13 | access to parameter b | ExitMethods.cs:142:13:142:13 | After access to parameter b [false] | false | +| ExitMethods.cs:142:13:142:13 | access to parameter b | ExitMethods.cs:142:13:142:13 | After access to parameter b [true] | true | +| Finally.cs:26:48:26:51 | true | Finally.cs:26:48:26:51 | After true [true] | true | +| Finally.cs:34:21:34:24 | true | Finally.cs:34:21:34:24 | After true [true] | true | +| Finally.cs:61:48:61:51 | true | Finally.cs:61:48:61:51 | After true [true] | true | +| Finally.cs:65:35:65:51 | ... != ... | Finally.cs:65:35:65:51 | After ... != ... [false] | false | +| Finally.cs:65:35:65:51 | ... != ... | Finally.cs:65:35:65:51 | After ... != ... [true] | true | +| Finally.cs:77:16:77:20 | ... > ... | Finally.cs:77:16:77:20 | After ... > ... [false] | false | +| Finally.cs:77:16:77:20 | ... > ... | Finally.cs:77:16:77:20 | After ... > ... [true] | true | +| Finally.cs:81:21:81:26 | ... == ... | Finally.cs:81:21:81:26 | After ... == ... [false] | false | +| Finally.cs:81:21:81:26 | ... == ... | Finally.cs:81:21:81:26 | After ... == ... [true] | true | +| Finally.cs:83:21:83:26 | ... == ... | Finally.cs:83:21:83:26 | After ... == ... [false] | false | +| Finally.cs:83:21:83:26 | ... == ... | Finally.cs:83:21:83:26 | After ... == ... [true] | true | +| Finally.cs:85:21:85:26 | ... == ... | Finally.cs:85:21:85:26 | After ... == ... [false] | false | +| Finally.cs:85:21:85:26 | ... == ... | Finally.cs:85:21:85:26 | After ... == ... [true] | true | +| Finally.cs:92:25:92:30 | ... == ... | Finally.cs:92:25:92:30 | After ... == ... [false] | false | +| Finally.cs:92:25:92:30 | ... == ... | Finally.cs:92:25:92:30 | After ... == ... [true] | true | +| Finally.cs:107:17:107:33 | ... == ... | Finally.cs:107:17:107:33 | After ... == ... [false] | false | +| Finally.cs:107:17:107:33 | ... == ... | Finally.cs:107:17:107:33 | After ... == ... [true] | true | +| Finally.cs:109:17:109:33 | ... == ... | Finally.cs:109:17:109:33 | After ... == ... [false] | false | +| Finally.cs:109:17:109:33 | ... == ... | Finally.cs:109:17:109:33 | After ... == ... [true] | true | +| Finally.cs:114:19:114:35 | ... == ... | Finally.cs:114:19:114:35 | After ... == ... [false] | false | +| Finally.cs:114:19:114:35 | ... == ... | Finally.cs:114:19:114:35 | After ... == ... [true] | true | +| Finally.cs:114:19:114:35 | After ... == ... [false] | Finally.cs:114:17:114:36 | After !... [true] | true | +| Finally.cs:114:19:114:35 | After ... == ... [true] | Finally.cs:114:17:114:36 | After !... [false] | false | +| Finally.cs:116:17:116:32 | ... > ... | Finally.cs:116:17:116:32 | After ... > ... [false] | false | +| Finally.cs:116:17:116:32 | ... > ... | Finally.cs:116:17:116:32 | After ... > ... [true] | true | +| Finally.cs:151:17:151:28 | ... == ... | Finally.cs:151:17:151:28 | After ... == ... [false] | false | +| Finally.cs:151:17:151:28 | ... == ... | Finally.cs:151:17:151:28 | After ... == ... [true] | true | +| Finally.cs:158:21:158:36 | ... == ... | Finally.cs:158:21:158:36 | After ... == ... [false] | false | +| Finally.cs:158:21:158:36 | ... == ... | Finally.cs:158:21:158:36 | After ... == ... [true] | true | +| Finally.cs:161:39:161:54 | ... == ... | Finally.cs:161:39:161:54 | After ... == ... [false] | false | +| Finally.cs:161:39:161:54 | ... == ... | Finally.cs:161:39:161:54 | After ... == ... [true] | true | +| Finally.cs:180:17:180:18 | access to parameter b1 | Finally.cs:180:17:180:18 | After access to parameter b1 [false] | false | +| Finally.cs:180:17:180:18 | access to parameter b1 | Finally.cs:180:17:180:18 | After access to parameter b1 [true] | true | +| Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:186:21:186:22 | After access to parameter b2 [false] | false | +| Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:186:21:186:22 | After access to parameter b2 [true] | true | +| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:188:38:188:39 | After access to parameter b2 [false] | false | +| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:188:38:188:39 | After access to parameter b2 [true] | true | +| Finally.cs:190:21:190:22 | access to parameter b1 | Finally.cs:190:21:190:22 | After access to parameter b1 [false] | false | +| Finally.cs:190:21:190:22 | access to parameter b1 | Finally.cs:190:21:190:22 | After access to parameter b1 [true] | true | +| Finally.cs:199:17:199:18 | access to parameter b1 | Finally.cs:199:17:199:18 | After access to parameter b1 [false] | false | +| Finally.cs:199:17:199:18 | access to parameter b1 | Finally.cs:199:17:199:18 | After access to parameter b1 [true] | true | +| Finally.cs:205:21:205:22 | access to parameter b2 | Finally.cs:205:21:205:22 | After access to parameter b2 [false] | false | +| Finally.cs:205:21:205:22 | access to parameter b2 | Finally.cs:205:21:205:22 | After access to parameter b2 [true] | true | +| Finally.cs:209:21:209:22 | access to parameter b3 | Finally.cs:209:21:209:22 | After access to parameter b3 [false] | false | +| Finally.cs:209:21:209:22 | access to parameter b3 | Finally.cs:209:21:209:22 | After access to parameter b3 [true] | true | +| Finally.cs:239:21:239:22 | access to parameter b1 | Finally.cs:239:21:239:22 | After access to parameter b1 [false] | false | +| Finally.cs:239:21:239:22 | access to parameter b1 | Finally.cs:239:21:239:22 | After access to parameter b1 [true] | true | +| Finally.cs:246:25:246:26 | access to parameter b2 | Finally.cs:246:25:246:26 | After access to parameter b2 [false] | false | +| Finally.cs:246:25:246:26 | access to parameter b2 | Finally.cs:246:25:246:26 | After access to parameter b2 [true] | true | +| LoopUnrolling.cs:9:13:9:28 | ... == ... | LoopUnrolling.cs:9:13:9:28 | After ... == ... [false] | false | +| LoopUnrolling.cs:9:13:9:28 | ... == ... | LoopUnrolling.cs:9:13:9:28 | After ... == ... [true] | true | +| LoopUnrolling.cs:60:17:60:17 | access to parameter b | LoopUnrolling.cs:60:17:60:17 | After access to parameter b [false] | false | +| LoopUnrolling.cs:60:17:60:17 | access to parameter b | LoopUnrolling.cs:60:17:60:17 | After access to parameter b [true] | true | +| LoopUnrolling.cs:62:17:62:17 | access to parameter b | LoopUnrolling.cs:62:17:62:17 | After access to parameter b [false] | false | +| LoopUnrolling.cs:62:17:62:17 | access to parameter b | LoopUnrolling.cs:62:17:62:17 | After access to parameter b [true] | true | +| LoopUnrolling.cs:69:14:69:23 | After call to method Any [false] | LoopUnrolling.cs:69:13:69:23 | After !... [true] | true | +| LoopUnrolling.cs:69:14:69:23 | After call to method Any [true] | LoopUnrolling.cs:69:13:69:23 | After !... [false] | false | +| LoopUnrolling.cs:69:14:69:23 | call to method Any | LoopUnrolling.cs:69:14:69:23 | After call to method Any [false] | false | +| LoopUnrolling.cs:69:14:69:23 | call to method Any | LoopUnrolling.cs:69:14:69:23 | After call to method Any [true] | true | +| NullCoalescing.cs:5:25:5:25 | After access to parameter b [non-null] | NullCoalescing.cs:5:25:5:34 | After ... ?? ... [false] | false | +| NullCoalescing.cs:5:25:5:25 | After access to parameter b [non-null] | NullCoalescing.cs:5:25:5:34 | After ... ?? ... [true] | true | +| NullCoalescing.cs:5:30:5:34 | After false [false] | NullCoalescing.cs:5:25:5:34 | After ... ?? ... [false] | false | +| NullCoalescing.cs:5:30:5:34 | false | NullCoalescing.cs:5:30:5:34 | After false [false] | false | +| NullCoalescing.cs:9:37:9:37 | access to parameter b | NullCoalescing.cs:9:37:9:37 | After access to parameter b [false] | false | +| NullCoalescing.cs:9:37:9:37 | access to parameter b | NullCoalescing.cs:9:37:9:37 | After access to parameter b [true] | true | +| NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [non-null] | NullCoalescing.cs:11:44:11:59 | After ... ?? ... [false] | false | +| NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [non-null] | NullCoalescing.cs:11:44:11:59 | After ... ?? ... [true] | true | +| NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [false] | NullCoalescing.cs:11:51:11:58 | After ... && ... [false] | false | +| NullCoalescing.cs:11:51:11:52 | access to parameter b2 | NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [false] | false | +| NullCoalescing.cs:11:51:11:52 | access to parameter b2 | NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [true] | true | +| NullCoalescing.cs:11:51:11:58 | After ... && ... [false] | NullCoalescing.cs:11:44:11:59 | After ... ?? ... [false] | false | +| NullCoalescing.cs:11:51:11:58 | After ... && ... [true] | NullCoalescing.cs:11:44:11:59 | After ... ?? ... [true] | true | +| NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [false] | NullCoalescing.cs:11:51:11:58 | After ... && ... [false] | false | +| NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [true] | NullCoalescing.cs:11:51:11:58 | After ... && ... [true] | true | +| NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [false] | false | +| NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [true] | true | +| Patterns.cs:8:13:8:23 | ... is ... | Patterns.cs:8:13:8:23 | After ... is ... [false] | false | +| Patterns.cs:8:13:8:23 | ... is ... | Patterns.cs:8:13:8:23 | [MatchTrue] ... is ... | true | +| Patterns.cs:8:18:8:23 | Int32 i1 | Patterns.cs:8:13:8:23 | After ... is ... [true] | true | +| Patterns.cs:12:18:12:31 | ... is ... | Patterns.cs:12:18:12:31 | After ... is ... [false] | false | +| Patterns.cs:12:18:12:31 | ... is ... | Patterns.cs:12:18:12:31 | [MatchTrue] ... is ... | true | +| Patterns.cs:12:23:12:31 | String s1 | Patterns.cs:12:18:12:31 | After ... is ... [true] | true | +| Patterns.cs:16:18:16:28 | ... is ... | Patterns.cs:16:18:16:28 | After ... is ... [false] | false | +| Patterns.cs:16:18:16:28 | ... is ... | Patterns.cs:16:18:16:28 | [MatchTrue] ... is ... | true | +| Patterns.cs:16:23:16:28 | Object v1 | Patterns.cs:16:18:16:28 | After ... is ... [true] | true | +| Patterns.cs:24:30:24:35 | ... > ... | Patterns.cs:24:30:24:35 | After ... > ... [false] | false | +| Patterns.cs:24:30:24:35 | ... > ... | Patterns.cs:24:30:24:35 | After ... > ... [true] | true | +| Patterns.cs:48:9:48:20 | ... is ... | Patterns.cs:48:9:48:20 | [MatchTrue] ... is ... | true | +| Patterns.cs:51:9:51:21 | ... is ... | Patterns.cs:51:9:51:21 | After ... is ... [false] | false | +| Patterns.cs:51:9:51:21 | ... is ... | Patterns.cs:51:9:51:21 | [MatchTrue] ... is ... | true | +| Patterns.cs:51:14:51:21 | After not ... | Patterns.cs:51:9:51:21 | After ... is ... [true] | true | +| Patterns.cs:51:25:51:30 | ... is ... | Patterns.cs:51:25:51:30 | [MatchTrue] ... is ... | true | +| Patterns.cs:51:34:51:39 | ... is ... | Patterns.cs:51:34:51:39 | [MatchTrue] ... is ... | true | +| Patterns.cs:54:9:54:37 | ... is ... | Patterns.cs:54:9:54:37 | [MatchTrue] ... is ... | true | +| Patterns.cs:85:39:85:53 | ... is ... | Patterns.cs:85:39:85:53 | After ... is ... [false] | false | +| Patterns.cs:85:39:85:53 | ... is ... | Patterns.cs:85:39:85:53 | [MatchTrue] ... is ... | true | +| Patterns.cs:85:44:85:53 | After ... or ... | Patterns.cs:85:39:85:53 | After ... is ... [true] | true | +| Patterns.cs:87:39:87:54 | ... is ... | Patterns.cs:87:39:87:54 | After ... is ... [false] | false | +| Patterns.cs:87:39:87:54 | ... is ... | Patterns.cs:87:39:87:54 | [MatchTrue] ... is ... | true | +| Patterns.cs:87:44:87:54 | After ... and ... | Patterns.cs:87:39:87:54 | After ... is ... [true] | true | +| Patterns.cs:95:13:95:40 | ... is ... | Patterns.cs:95:13:95:40 | After ... is ... [false] | false | +| Patterns.cs:95:13:95:40 | ... is ... | Patterns.cs:95:13:95:40 | [MatchTrue] ... is ... | true | +| Patterns.cs:95:21:95:40 | After { ... } | Patterns.cs:95:13:95:40 | After ... is ... [true] | true | +| PostDominance.cs:12:13:12:21 | ... is ... | PostDominance.cs:12:13:12:21 | After ... is ... [false] | false | +| PostDominance.cs:12:13:12:21 | ... is ... | PostDominance.cs:12:13:12:21 | [MatchTrue] ... is ... | true | +| PostDominance.cs:12:18:12:21 | null | PostDominance.cs:12:13:12:21 | After ... is ... [true] | true | +| PostDominance.cs:19:13:19:21 | ... is ... | PostDominance.cs:19:13:19:21 | After ... is ... [false] | false | +| PostDominance.cs:19:13:19:21 | ... is ... | PostDominance.cs:19:13:19:21 | [MatchTrue] ... is ... | true | +| PostDominance.cs:19:18:19:21 | null | PostDominance.cs:19:13:19:21 | After ... is ... [true] | true | +| Switch.cs:21:21:21:29 | ... == ... | Switch.cs:21:21:21:29 | After ... == ... [false] | false | +| Switch.cs:21:21:21:29 | ... == ... | Switch.cs:21:21:21:29 | After ... == ... [true] | true | +| Switch.cs:24:32:24:43 | ... > ... | Switch.cs:24:32:24:43 | After ... > ... [false] | false | +| Switch.cs:24:32:24:43 | ... > ... | Switch.cs:24:32:24:43 | After ... > ... [true] | true | +| Switch.cs:24:32:24:43 | After ... > ... [false] | Switch.cs:24:32:24:55 | After ... && ... [false] | false | +| Switch.cs:24:48:24:55 | ... != ... | Switch.cs:24:48:24:55 | After ... != ... [false] | false | +| Switch.cs:24:48:24:55 | ... != ... | Switch.cs:24:48:24:55 | After ... != ... [true] | true | +| Switch.cs:24:48:24:55 | After ... != ... [false] | Switch.cs:24:32:24:55 | After ... && ... [false] | false | +| Switch.cs:24:48:24:55 | After ... != ... [true] | Switch.cs:24:32:24:55 | After ... && ... [true] | true | +| Switch.cs:50:30:50:38 | ... != ... | Switch.cs:50:30:50:38 | After ... != ... [false] | false | +| Switch.cs:50:30:50:38 | ... != ... | Switch.cs:50:30:50:38 | After ... != ... [true] | true | +| Switch.cs:84:21:84:25 | ... > ... | Switch.cs:84:21:84:25 | After ... > ... [false] | false | +| Switch.cs:84:21:84:25 | ... > ... | Switch.cs:84:21:84:25 | After ... > ... [true] | true | +| Switch.cs:117:25:117:34 | ... == ... | Switch.cs:117:25:117:34 | After ... == ... [false] | false | +| Switch.cs:117:25:117:34 | ... == ... | Switch.cs:117:25:117:34 | After ... == ... [true] | true | +| Switch.cs:118:25:118:33 | ... == ... | Switch.cs:118:25:118:33 | After ... == ... [false] | false | +| Switch.cs:118:25:118:33 | ... == ... | Switch.cs:118:25:118:33 | After ... == ... [true] | true | +| Switch.cs:125:34:125:34 | access to local variable b | Switch.cs:125:13:125:48 | After ... switch { ... } [false] | false | +| Switch.cs:125:34:125:34 | access to local variable b | Switch.cs:125:13:125:48 | After ... switch { ... } [true] | true | +| Switch.cs:125:42:125:46 | false | Switch.cs:125:13:125:48 | After ... switch { ... } [false] | false | +| Switch.cs:125:42:125:46 | false | Switch.cs:125:13:125:48 | After ... switch { ... } [true] | true | +| Switch.cs:157:13:157:13 | access to parameter b | Switch.cs:157:13:157:13 | After access to parameter b [false] | false | +| Switch.cs:157:13:157:13 | access to parameter b | Switch.cs:157:13:157:13 | After access to parameter b [true] | true | +| TypeAccesses.cs:7:13:7:22 | ... is ... | TypeAccesses.cs:7:13:7:22 | After ... is ... [false] | false | +| TypeAccesses.cs:7:13:7:22 | ... is ... | TypeAccesses.cs:7:13:7:22 | [MatchTrue] ... is ... | true | +| TypeAccesses.cs:7:18:7:22 | Int32 j | TypeAccesses.cs:7:13:7:22 | After ... is ... [true] | true | +| VarDecls.cs:25:20:25:20 | access to parameter b | VarDecls.cs:25:20:25:20 | After access to parameter b [false] | false | +| VarDecls.cs:25:20:25:20 | access to parameter b | VarDecls.cs:25:20:25:20 | After access to parameter b [true] | true | +| cflow.cs:11:13:11:17 | ... > ... | cflow.cs:11:13:11:17 | After ... > ... [false] | false | +| cflow.cs:11:13:11:17 | ... > ... | cflow.cs:11:13:11:17 | After ... > ... [true] | true | +| cflow.cs:14:16:14:20 | ... > ... | cflow.cs:14:16:14:20 | After ... > ... [false] | false | +| cflow.cs:14:16:14:20 | ... > ... | cflow.cs:14:16:14:20 | After ... > ... [true] | true | +| cflow.cs:22:18:22:23 | ... < ... | cflow.cs:22:18:22:23 | After ... < ... [false] | false | +| cflow.cs:22:18:22:23 | ... < ... | cflow.cs:22:18:22:23 | After ... < ... [true] | true | +| cflow.cs:24:25:24:31 | ... <= ... | cflow.cs:24:25:24:31 | After ... <= ... [false] | false | +| cflow.cs:24:25:24:31 | ... <= ... | cflow.cs:24:25:24:31 | After ... <= ... [true] | true | +| cflow.cs:26:17:26:26 | ... == ... | cflow.cs:26:17:26:26 | After ... == ... [false] | false | +| cflow.cs:26:17:26:26 | ... == ... | cflow.cs:26:17:26:26 | After ... == ... [true] | true | +| cflow.cs:26:17:26:26 | After ... == ... [false] | cflow.cs:26:17:26:40 | After ... && ... [false] | false | +| cflow.cs:26:31:26:40 | ... == ... | cflow.cs:26:31:26:40 | After ... == ... [false] | false | +| cflow.cs:26:31:26:40 | ... == ... | cflow.cs:26:31:26:40 | After ... == ... [true] | true | +| cflow.cs:26:31:26:40 | After ... == ... [false] | cflow.cs:26:17:26:40 | After ... && ... [false] | false | +| cflow.cs:26:31:26:40 | After ... == ... [true] | cflow.cs:26:17:26:40 | After ... && ... [true] | true | +| cflow.cs:28:22:28:31 | ... == ... | cflow.cs:28:22:28:31 | After ... == ... [false] | false | +| cflow.cs:28:22:28:31 | ... == ... | cflow.cs:28:22:28:31 | After ... == ... [true] | true | +| cflow.cs:30:22:30:31 | ... == ... | cflow.cs:30:22:30:31 | After ... == ... [false] | false | +| cflow.cs:30:22:30:31 | ... == ... | cflow.cs:30:22:30:31 | After ... == ... [true] | true | +| cflow.cs:63:23:63:33 | ... == ... | cflow.cs:63:23:63:33 | After ... == ... [false] | false | +| cflow.cs:63:23:63:33 | ... == ... | cflow.cs:63:23:63:33 | After ... == ... [true] | true | +| cflow.cs:63:23:63:33 | After ... == ... [false] | cflow.cs:63:21:63:34 | After !... [true] | true | +| cflow.cs:63:23:63:33 | After ... == ... [true] | cflow.cs:63:21:63:34 | After !... [false] | false | +| cflow.cs:72:13:72:21 | ... == ... | cflow.cs:72:13:72:21 | After ... == ... [false] | false | +| cflow.cs:72:13:72:21 | ... == ... | cflow.cs:72:13:72:21 | After ... == ... [true] | true | +| cflow.cs:74:13:74:24 | ... > ... | cflow.cs:74:13:74:24 | After ... > ... [false] | false | +| cflow.cs:74:13:74:24 | ... > ... | cflow.cs:74:13:74:24 | After ... > ... [true] | true | +| cflow.cs:86:13:86:21 | ... != ... | cflow.cs:86:13:86:21 | After ... != ... [false] | false | +| cflow.cs:86:13:86:21 | ... != ... | cflow.cs:86:13:86:21 | After ... != ... [true] | true | +| cflow.cs:86:13:86:21 | After ... != ... [false] | cflow.cs:86:13:86:37 | After ... && ... [false] | false | +| cflow.cs:86:26:86:37 | ... > ... | cflow.cs:86:26:86:37 | After ... > ... [false] | false | +| cflow.cs:86:26:86:37 | ... > ... | cflow.cs:86:26:86:37 | After ... > ... [true] | true | +| cflow.cs:86:26:86:37 | After ... > ... [false] | cflow.cs:86:13:86:37 | After ... && ... [false] | false | +| cflow.cs:86:26:86:37 | After ... > ... [true] | cflow.cs:86:13:86:37 | After ... && ... [true] | true | +| cflow.cs:92:13:92:27 | call to method Equals | cflow.cs:92:13:92:27 | After call to method Equals [false] | false | +| cflow.cs:92:13:92:27 | call to method Equals | cflow.cs:92:13:92:27 | After call to method Equals [true] | true | +| cflow.cs:96:13:96:25 | ... != ... | cflow.cs:96:13:96:25 | After ... != ... [false] | false | +| cflow.cs:96:13:96:25 | ... != ... | cflow.cs:96:13:96:25 | After ... != ... [true] | true | +| cflow.cs:99:13:99:25 | ... != ... | cflow.cs:99:13:99:25 | After ... != ... [false] | false | +| cflow.cs:99:13:99:25 | ... != ... | cflow.cs:99:13:99:25 | After ... != ... [true] | true | +| cflow.cs:102:13:102:29 | ... != ... | cflow.cs:102:13:102:29 | After ... != ... [false] | false | +| cflow.cs:102:13:102:29 | ... != ... | cflow.cs:102:13:102:29 | After ... != ... [true] | true | +| cflow.cs:108:13:108:21 | ... != ... | cflow.cs:108:13:108:21 | After ... != ... [false] | false | +| cflow.cs:108:13:108:21 | ... != ... | cflow.cs:108:13:108:21 | After ... != ... [true] | true | +| cflow.cs:110:20:110:23 | true | cflow.cs:110:20:110:23 | After true [true] | true | +| cflow.cs:127:32:127:44 | ... == ... | cflow.cs:127:32:127:44 | After ... == ... [false] | false | +| cflow.cs:127:32:127:44 | ... == ... | cflow.cs:127:32:127:44 | After ... == ... [true] | true | +| cflow.cs:149:16:149:21 | ... < ... | cflow.cs:149:16:149:21 | After ... < ... [false] | false | +| cflow.cs:149:16:149:21 | ... < ... | cflow.cs:149:16:149:21 | After ... < ... [true] | true | +| cflow.cs:155:17:155:22 | ... > ... | cflow.cs:155:17:155:22 | After ... > ... [false] | false | +| cflow.cs:155:17:155:22 | ... > ... | cflow.cs:155:17:155:22 | After ... > ... [true] | true | +| cflow.cs:163:17:163:22 | ... > ... | cflow.cs:163:17:163:22 | After ... > ... [false] | false | +| cflow.cs:163:17:163:22 | ... > ... | cflow.cs:163:17:163:22 | After ... > ... [true] | true | +| cflow.cs:167:16:167:21 | ... < ... | cflow.cs:167:16:167:21 | After ... < ... [false] | false | +| cflow.cs:167:16:167:21 | ... < ... | cflow.cs:167:16:167:21 | After ... < ... [true] | true | +| cflow.cs:173:32:173:41 | ... < ... | cflow.cs:173:32:173:41 | After ... < ... [false] | false | +| cflow.cs:173:32:173:41 | ... < ... | cflow.cs:173:32:173:41 | After ... < ... [true] | true | +| cflow.cs:187:13:187:18 | ... == ... | cflow.cs:187:13:187:18 | After ... == ... [false] | false | +| cflow.cs:187:13:187:18 | ... == ... | cflow.cs:187:13:187:18 | After ... == ... [true] | true | +| cflow.cs:187:13:187:18 | After ... == ... [true] | cflow.cs:187:13:187:28 | After ... \|\| ... [true] | true | +| cflow.cs:187:13:187:28 | After ... \|\| ... [true] | cflow.cs:187:13:187:50 | After ... \|\| ... [true] | true | +| cflow.cs:187:23:187:28 | ... == ... | cflow.cs:187:23:187:28 | After ... == ... [false] | false | +| cflow.cs:187:23:187:28 | ... == ... | cflow.cs:187:23:187:28 | After ... == ... [true] | true | +| cflow.cs:187:23:187:28 | After ... == ... [false] | cflow.cs:187:13:187:28 | After ... \|\| ... [false] | false | +| cflow.cs:187:23:187:28 | After ... == ... [true] | cflow.cs:187:13:187:28 | After ... \|\| ... [true] | true | +| cflow.cs:187:34:187:39 | ... == ... | cflow.cs:187:34:187:39 | After ... == ... [false] | false | +| cflow.cs:187:34:187:39 | ... == ... | cflow.cs:187:34:187:39 | After ... == ... [true] | true | +| cflow.cs:187:34:187:39 | After ... == ... [false] | cflow.cs:187:34:187:49 | After ... && ... [false] | false | +| cflow.cs:187:34:187:49 | After ... && ... [false] | cflow.cs:187:13:187:50 | After ... \|\| ... [false] | false | +| cflow.cs:187:34:187:49 | After ... && ... [true] | cflow.cs:187:13:187:50 | After ... \|\| ... [true] | true | +| cflow.cs:187:44:187:49 | ... == ... | cflow.cs:187:44:187:49 | After ... == ... [false] | false | +| cflow.cs:187:44:187:49 | ... == ... | cflow.cs:187:44:187:49 | After ... == ... [true] | true | +| cflow.cs:187:44:187:49 | After ... == ... [false] | cflow.cs:187:34:187:49 | After ... && ... [false] | false | +| cflow.cs:187:44:187:49 | After ... == ... [true] | cflow.cs:187:34:187:49 | After ... && ... [true] | true | +| cflow.cs:195:17:195:32 | ... > ... | cflow.cs:195:17:195:32 | After ... > ... [false] | false | +| cflow.cs:195:17:195:32 | ... > ... | cflow.cs:195:17:195:32 | After ... > ... [true] | true | +| cflow.cs:197:15:197:31 | ... == ... | cflow.cs:197:15:197:31 | After ... == ... [false] | false | +| cflow.cs:197:15:197:31 | ... == ... | cflow.cs:197:15:197:31 | After ... == ... [true] | true | +| cflow.cs:197:15:197:46 | After ... ? ... : ... [false] | cflow.cs:197:13:197:47 | After !... [true] | true | +| cflow.cs:197:15:197:46 | After ... ? ... : ... [true] | cflow.cs:197:13:197:47 | After !... [false] | false | +| cflow.cs:197:35:197:39 | After false [false] | cflow.cs:197:15:197:46 | After ... ? ... : ... [false] | false | +| cflow.cs:197:35:197:39 | false | cflow.cs:197:35:197:39 | After false [false] | false | +| cflow.cs:197:43:197:46 | After true [true] | cflow.cs:197:15:197:46 | After ... ? ... : ... [true] | true | +| cflow.cs:197:43:197:46 | true | cflow.cs:197:43:197:46 | After true [true] | true | +| cflow.cs:198:17:198:33 | ... == ... | cflow.cs:198:17:198:33 | After ... == ... [false] | false | +| cflow.cs:198:17:198:33 | ... == ... | cflow.cs:198:17:198:33 | After ... == ... [true] | true | +| cflow.cs:200:13:200:32 | After !... [true] | cflow.cs:200:13:200:62 | After ... \|\| ... [true] | true | +| cflow.cs:200:15:200:31 | ... == ... | cflow.cs:200:15:200:31 | After ... == ... [false] | false | +| cflow.cs:200:15:200:31 | ... == ... | cflow.cs:200:15:200:31 | After ... == ... [true] | true | +| cflow.cs:200:15:200:31 | After ... == ... [false] | cflow.cs:200:13:200:32 | After !... [true] | true | +| cflow.cs:200:15:200:31 | After ... == ... [true] | cflow.cs:200:13:200:32 | After !... [false] | false | +| cflow.cs:200:37:200:62 | After !... [false] | cflow.cs:200:13:200:62 | After ... \|\| ... [false] | false | +| cflow.cs:200:37:200:62 | After !... [true] | cflow.cs:200:13:200:62 | After ... \|\| ... [true] | true | +| cflow.cs:200:38:200:62 | After !... [false] | cflow.cs:200:37:200:62 | After !... [true] | true | +| cflow.cs:200:38:200:62 | After !... [true] | cflow.cs:200:37:200:62 | After !... [false] | false | +| cflow.cs:200:40:200:56 | ... == ... | cflow.cs:200:40:200:56 | After ... == ... [false] | false | +| cflow.cs:200:40:200:56 | ... == ... | cflow.cs:200:40:200:56 | After ... == ... [true] | true | +| cflow.cs:200:40:200:56 | After ... == ... [false] | cflow.cs:200:40:200:61 | After ... && ... [false] | false | +| cflow.cs:200:40:200:61 | After ... && ... [false] | cflow.cs:200:38:200:62 | After !... [true] | true | +| cflow.cs:200:40:200:61 | After ... && ... [true] | cflow.cs:200:38:200:62 | After !... [false] | false | +| cflow.cs:200:61:200:61 | After access to local variable b [false] | cflow.cs:200:40:200:61 | After ... && ... [false] | false | +| cflow.cs:200:61:200:61 | After access to local variable b [true] | cflow.cs:200:40:200:61 | After ... && ... [true] | true | +| cflow.cs:200:61:200:61 | access to local variable b | cflow.cs:200:61:200:61 | After access to local variable b [false] | false | +| cflow.cs:200:61:200:61 | access to local variable b | cflow.cs:200:61:200:61 | After access to local variable b [true] | true | +| cflow.cs:213:17:213:32 | ... > ... | cflow.cs:213:17:213:32 | After ... > ... [false] | false | +| cflow.cs:213:17:213:32 | ... > ... | cflow.cs:213:17:213:32 | After ... > ... [true] | true | +| cflow.cs:217:17:217:32 | ... < ... | cflow.cs:217:17:217:32 | After ... < ... [false] | false | +| cflow.cs:217:17:217:32 | ... < ... | cflow.cs:217:17:217:32 | After ... < ... [true] | true | +| cflow.cs:221:18:221:34 | ... < ... | cflow.cs:221:18:221:34 | After ... < ... [false] | false | +| cflow.cs:221:18:221:34 | ... < ... | cflow.cs:221:18:221:34 | After ... < ... [true] | true | +| cflow.cs:229:17:229:32 | ... > ... | cflow.cs:229:17:229:32 | After ... > ... [false] | false | +| cflow.cs:229:17:229:32 | ... > ... | cflow.cs:229:17:229:32 | After ... > ... [true] | true | +| cflow.cs:233:17:233:32 | ... < ... | cflow.cs:233:17:233:32 | After ... < ... [false] | false | +| cflow.cs:233:17:233:32 | ... < ... | cflow.cs:233:17:233:32 | After ... < ... [true] | true | +| cflow.cs:242:17:242:36 | After !... [false] | cflow.cs:242:16:242:36 | After !... [true] | true | +| cflow.cs:242:17:242:36 | After !... [true] | cflow.cs:242:16:242:36 | After !... [false] | false | +| cflow.cs:242:19:242:35 | ... == ... | cflow.cs:242:19:242:35 | After ... == ... [false] | false | +| cflow.cs:242:19:242:35 | ... == ... | cflow.cs:242:19:242:35 | After ... == ... [true] | true | +| cflow.cs:242:19:242:35 | After ... == ... [false] | cflow.cs:242:17:242:36 | After !... [true] | true | +| cflow.cs:242:19:242:35 | After ... == ... [true] | cflow.cs:242:17:242:36 | After !... [false] | false | +| cflow.cs:244:13:244:28 | ... > ... | cflow.cs:244:13:244:28 | After ... > ... [false] | false | +| cflow.cs:244:13:244:28 | ... > ... | cflow.cs:244:13:244:28 | After ... > ... [true] | true | +| cflow.cs:264:25:264:30 | ... < ... | cflow.cs:264:25:264:30 | After ... < ... [false] | false | +| cflow.cs:264:25:264:30 | ... < ... | cflow.cs:264:25:264:30 | After ... < ... [true] | true | +| cflow.cs:300:46:300:50 | ... > ... | cflow.cs:300:46:300:50 | After ... > ... [false] | false | +| cflow.cs:300:46:300:50 | ... > ... | cflow.cs:300:46:300:50 | After ... > ... [true] | true | +| cflow.cs:300:46:300:50 | After ... > ... [false] | cflow.cs:300:44:300:51 | After !... [true] | true | +| cflow.cs:300:46:300:50 | After ... > ... [true] | cflow.cs:300:44:300:51 | After !... [false] | false | diff --git a/csharp/ql/test/library-tests/controlflow/graph/Condition.ql b/csharp/ql/test/library-tests/controlflow/graph/Condition.ql index 61c801819246..616c4d1b95f4 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/Condition.ql +++ b/csharp/ql/test/library-tests/controlflow/graph/Condition.ql @@ -1,18 +1,14 @@ import csharp import ControlFlow -query predicate conditionBlock( - BasicBlocks::ConditionBlock cb, BasicBlock controlled, boolean testIsTrue -) { +query predicate conditionBlock(BasicBlock cb, BasicBlock controlled, boolean testIsTrue) { cb.edgeDominates(controlled, any(ConditionalSuccessor s | testIsTrue = s.getValue())) } -ControlFlow::Node successor(ControlFlow::Node node, boolean kind) { - kind = true and result = node.getATrueSuccessor() - or - kind = false and result = node.getAFalseSuccessor() +ControlFlowNode successor(ControlFlowNode node, boolean kind) { + result = node.getASuccessor(any(BooleanSuccessor s | s.getValue() = kind)) } -query predicate conditionFlow(ControlFlow::Node node, ControlFlow::Node successor, boolean kind) { +query predicate conditionFlow(ControlFlowNode node, ControlFlowNode successor, boolean kind) { successor = successor(node, kind) } diff --git a/csharp/ql/test/library-tests/controlflow/graph/DefaultParam.cs b/csharp/ql/test/library-tests/controlflow/graph/DefaultParam.cs new file mode 100644 index 000000000000..6ef844582e58 --- /dev/null +++ b/csharp/ql/test/library-tests/controlflow/graph/DefaultParam.cs @@ -0,0 +1,7 @@ +class DefaultParam +{ + string M1(bool b, string s = "", int i = 0) + { + return b + s + i; + } +} diff --git a/csharp/ql/test/library-tests/controlflow/graph/Dominance.expected b/csharp/ql/test/library-tests/controlflow/graph/Dominance.expected index 072d874d8d4f..5001f49300a9 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/Dominance.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/Dominance.expected @@ -1,15206 +1,23744 @@ dominance -| AccessorCalls.cs:1:7:1:19 | call to constructor Object | AccessorCalls.cs:1:7:1:19 | {...} | -| AccessorCalls.cs:1:7:1:19 | call to method | AccessorCalls.cs:1:7:1:19 | call to constructor Object | -| AccessorCalls.cs:1:7:1:19 | enter AccessorCalls | AccessorCalls.cs:1:7:1:19 | this access | -| AccessorCalls.cs:1:7:1:19 | exit AccessorCalls (normal) | AccessorCalls.cs:1:7:1:19 | exit AccessorCalls | +| AccessorCalls.cs:1:7:1:19 | After call to constructor Object | AccessorCalls.cs:1:7:1:19 | {...} | +| AccessorCalls.cs:1:7:1:19 | After call to method | AccessorCalls.cs:1:7:1:19 | Before call to constructor Object | +| AccessorCalls.cs:1:7:1:19 | Before call to constructor Object | AccessorCalls.cs:1:7:1:19 | call to constructor Object | +| AccessorCalls.cs:1:7:1:19 | Before call to method | AccessorCalls.cs:1:7:1:19 | this access | +| AccessorCalls.cs:1:7:1:19 | Entry | AccessorCalls.cs:1:7:1:19 | Before call to method | +| AccessorCalls.cs:1:7:1:19 | Normal Exit | AccessorCalls.cs:1:7:1:19 | Exit | +| AccessorCalls.cs:1:7:1:19 | call to constructor Object | AccessorCalls.cs:1:7:1:19 | After call to constructor Object | +| AccessorCalls.cs:1:7:1:19 | call to method | AccessorCalls.cs:1:7:1:19 | After call to method | | AccessorCalls.cs:1:7:1:19 | this access | AccessorCalls.cs:1:7:1:19 | call to method | -| AccessorCalls.cs:1:7:1:19 | {...} | AccessorCalls.cs:1:7:1:19 | exit AccessorCalls (normal) | -| AccessorCalls.cs:5:23:5:25 | enter get_Item | AccessorCalls.cs:5:30:5:30 | access to parameter i | -| AccessorCalls.cs:5:23:5:25 | exit get_Item (normal) | AccessorCalls.cs:5:23:5:25 | exit get_Item | -| AccessorCalls.cs:5:30:5:30 | access to parameter i | AccessorCalls.cs:5:23:5:25 | exit get_Item (normal) | -| AccessorCalls.cs:5:33:5:35 | enter set_Item | AccessorCalls.cs:5:37:5:39 | {...} | -| AccessorCalls.cs:5:33:5:35 | exit set_Item (normal) | AccessorCalls.cs:5:33:5:35 | exit set_Item | -| AccessorCalls.cs:5:37:5:39 | {...} | AccessorCalls.cs:5:33:5:35 | exit set_Item (normal) | -| AccessorCalls.cs:7:32:7:34 | enter add_Event | AccessorCalls.cs:7:36:7:38 | {...} | -| AccessorCalls.cs:7:32:7:34 | exit add_Event (normal) | AccessorCalls.cs:7:32:7:34 | exit add_Event | -| AccessorCalls.cs:7:36:7:38 | {...} | AccessorCalls.cs:7:32:7:34 | exit add_Event (normal) | -| AccessorCalls.cs:7:40:7:45 | enter remove_Event | AccessorCalls.cs:7:47:7:49 | {...} | -| AccessorCalls.cs:7:40:7:45 | exit remove_Event (normal) | AccessorCalls.cs:7:40:7:45 | exit remove_Event | -| AccessorCalls.cs:7:47:7:49 | {...} | AccessorCalls.cs:7:40:7:45 | exit remove_Event (normal) | -| AccessorCalls.cs:10:10:10:11 | enter M1 | AccessorCalls.cs:11:5:17:5 | {...} | -| AccessorCalls.cs:10:10:10:11 | exit M1 (normal) | AccessorCalls.cs:10:10:10:11 | exit M1 | +| AccessorCalls.cs:1:7:1:19 | {...} | AccessorCalls.cs:1:7:1:19 | Normal Exit | +| AccessorCalls.cs:5:18:5:18 | i | AccessorCalls.cs:5:30:5:30 | access to parameter i | +| AccessorCalls.cs:5:18:5:18 | i | AccessorCalls.cs:5:33:5:35 | value | +| AccessorCalls.cs:5:23:5:25 | Entry | AccessorCalls.cs:5:18:5:18 | i | +| AccessorCalls.cs:5:23:5:25 | Normal Exit | AccessorCalls.cs:5:23:5:25 | Exit | +| AccessorCalls.cs:5:30:5:30 | access to parameter i | AccessorCalls.cs:5:23:5:25 | Normal Exit | +| AccessorCalls.cs:5:33:5:35 | Entry | AccessorCalls.cs:5:18:5:18 | i | +| AccessorCalls.cs:5:33:5:35 | Normal Exit | AccessorCalls.cs:5:33:5:35 | Exit | +| AccessorCalls.cs:5:33:5:35 | value | AccessorCalls.cs:5:37:5:39 | {...} | +| AccessorCalls.cs:5:37:5:39 | {...} | AccessorCalls.cs:5:33:5:35 | Normal Exit | +| AccessorCalls.cs:7:32:7:34 | Entry | AccessorCalls.cs:7:32:7:34 | value | +| AccessorCalls.cs:7:32:7:34 | Normal Exit | AccessorCalls.cs:7:32:7:34 | Exit | +| AccessorCalls.cs:7:32:7:34 | value | AccessorCalls.cs:7:36:7:38 | {...} | +| AccessorCalls.cs:7:36:7:38 | {...} | AccessorCalls.cs:7:32:7:34 | Normal Exit | +| AccessorCalls.cs:7:40:7:45 | Entry | AccessorCalls.cs:7:40:7:45 | value | +| AccessorCalls.cs:7:40:7:45 | Normal Exit | AccessorCalls.cs:7:40:7:45 | Exit | +| AccessorCalls.cs:7:40:7:45 | value | AccessorCalls.cs:7:47:7:49 | {...} | +| AccessorCalls.cs:7:47:7:49 | {...} | AccessorCalls.cs:7:40:7:45 | Normal Exit | +| AccessorCalls.cs:10:10:10:11 | Entry | AccessorCalls.cs:10:26:10:26 | e | +| AccessorCalls.cs:10:10:10:11 | Normal Exit | AccessorCalls.cs:10:10:10:11 | Exit | +| AccessorCalls.cs:10:26:10:26 | e | AccessorCalls.cs:11:5:17:5 | {...} | +| AccessorCalls.cs:11:5:17:5 | After {...} | AccessorCalls.cs:10:10:10:11 | Normal Exit | | AccessorCalls.cs:11:5:17:5 | {...} | AccessorCalls.cs:12:9:12:32 | ...; | -| AccessorCalls.cs:12:9:12:12 | this access | AccessorCalls.cs:12:22:12:25 | this access | -| AccessorCalls.cs:12:9:12:18 | access to field Field | AccessorCalls.cs:12:9:12:31 | ... = ... | -| AccessorCalls.cs:12:9:12:31 | ... = ... | AccessorCalls.cs:13:9:13:30 | ...; | -| AccessorCalls.cs:12:9:12:32 | ...; | AccessorCalls.cs:12:9:12:12 | this access | +| AccessorCalls.cs:12:9:12:12 | this access | AccessorCalls.cs:12:9:12:18 | access to field Field | +| AccessorCalls.cs:12:9:12:18 | After access to field Field | AccessorCalls.cs:12:22:12:31 | Before access to field Field | +| AccessorCalls.cs:12:9:12:18 | Before access to field Field | AccessorCalls.cs:12:9:12:12 | this access | +| AccessorCalls.cs:12:9:12:18 | access to field Field | AccessorCalls.cs:12:9:12:18 | After access to field Field | +| AccessorCalls.cs:12:9:12:31 | ... = ... | AccessorCalls.cs:12:9:12:31 | After ... = ... | +| AccessorCalls.cs:12:9:12:31 | After ... = ... | AccessorCalls.cs:12:9:12:32 | After ...; | +| AccessorCalls.cs:12:9:12:31 | Before ... = ... | AccessorCalls.cs:12:9:12:18 | Before access to field Field | +| AccessorCalls.cs:12:9:12:32 | ...; | AccessorCalls.cs:12:9:12:31 | Before ... = ... | +| AccessorCalls.cs:12:9:12:32 | After ...; | AccessorCalls.cs:13:9:13:30 | ...; | | AccessorCalls.cs:12:22:12:25 | this access | AccessorCalls.cs:12:22:12:31 | access to field Field | -| AccessorCalls.cs:12:22:12:31 | access to field Field | AccessorCalls.cs:12:9:12:18 | access to field Field | -| AccessorCalls.cs:13:9:13:12 | this access | AccessorCalls.cs:13:21:13:24 | this access | -| AccessorCalls.cs:13:9:13:17 | access to property Prop | AccessorCalls.cs:13:9:13:29 | ... = ... | -| AccessorCalls.cs:13:9:13:29 | ... = ... | AccessorCalls.cs:14:9:14:26 | ...; | -| AccessorCalls.cs:13:9:13:30 | ...; | AccessorCalls.cs:13:9:13:12 | this access | +| AccessorCalls.cs:12:22:12:31 | After access to field Field | AccessorCalls.cs:12:9:12:31 | ... = ... | +| AccessorCalls.cs:12:22:12:31 | Before access to field Field | AccessorCalls.cs:12:22:12:25 | this access | +| AccessorCalls.cs:12:22:12:31 | access to field Field | AccessorCalls.cs:12:22:12:31 | After access to field Field | +| AccessorCalls.cs:13:9:13:12 | this access | AccessorCalls.cs:13:9:13:17 | access to property Prop | +| AccessorCalls.cs:13:9:13:17 | After access to property Prop | AccessorCalls.cs:13:21:13:29 | Before access to property Prop | +| AccessorCalls.cs:13:9:13:17 | Before access to property Prop | AccessorCalls.cs:13:9:13:12 | this access | +| AccessorCalls.cs:13:9:13:17 | access to property Prop | AccessorCalls.cs:13:9:13:17 | After access to property Prop | +| AccessorCalls.cs:13:9:13:29 | ... = ... | AccessorCalls.cs:13:9:13:29 | After ... = ... | +| AccessorCalls.cs:13:9:13:29 | After ... = ... | AccessorCalls.cs:13:9:13:30 | After ...; | +| AccessorCalls.cs:13:9:13:29 | Before ... = ... | AccessorCalls.cs:13:9:13:17 | Before access to property Prop | +| AccessorCalls.cs:13:9:13:30 | ...; | AccessorCalls.cs:13:9:13:29 | Before ... = ... | +| AccessorCalls.cs:13:9:13:30 | After ...; | AccessorCalls.cs:14:9:14:26 | ...; | | AccessorCalls.cs:13:21:13:24 | this access | AccessorCalls.cs:13:21:13:29 | access to property Prop | -| AccessorCalls.cs:13:21:13:29 | access to property Prop | AccessorCalls.cs:13:9:13:17 | access to property Prop | +| AccessorCalls.cs:13:21:13:29 | After access to property Prop | AccessorCalls.cs:13:9:13:29 | ... = ... | +| AccessorCalls.cs:13:21:13:29 | Before access to property Prop | AccessorCalls.cs:13:21:13:24 | this access | +| AccessorCalls.cs:13:21:13:29 | access to property Prop | AccessorCalls.cs:13:21:13:29 | After access to property Prop | | AccessorCalls.cs:14:9:14:12 | this access | AccessorCalls.cs:14:14:14:14 | 0 | -| AccessorCalls.cs:14:9:14:15 | access to indexer | AccessorCalls.cs:14:9:14:25 | ... = ... | -| AccessorCalls.cs:14:9:14:25 | ... = ... | AccessorCalls.cs:15:9:15:24 | ...; | -| AccessorCalls.cs:14:9:14:26 | ...; | AccessorCalls.cs:14:9:14:12 | this access | -| AccessorCalls.cs:14:14:14:14 | 0 | AccessorCalls.cs:14:19:14:22 | this access | +| AccessorCalls.cs:14:9:14:15 | After access to indexer | AccessorCalls.cs:14:19:14:25 | Before access to indexer | +| AccessorCalls.cs:14:9:14:15 | Before access to indexer | AccessorCalls.cs:14:9:14:12 | this access | +| AccessorCalls.cs:14:9:14:15 | access to indexer | AccessorCalls.cs:14:9:14:15 | After access to indexer | +| AccessorCalls.cs:14:9:14:25 | ... = ... | AccessorCalls.cs:14:9:14:25 | After ... = ... | +| AccessorCalls.cs:14:9:14:25 | After ... = ... | AccessorCalls.cs:14:9:14:26 | After ...; | +| AccessorCalls.cs:14:9:14:25 | Before ... = ... | AccessorCalls.cs:14:9:14:15 | Before access to indexer | +| AccessorCalls.cs:14:9:14:26 | ...; | AccessorCalls.cs:14:9:14:25 | Before ... = ... | +| AccessorCalls.cs:14:9:14:26 | After ...; | AccessorCalls.cs:15:9:15:24 | ...; | +| AccessorCalls.cs:14:14:14:14 | 0 | AccessorCalls.cs:14:9:14:15 | access to indexer | | AccessorCalls.cs:14:19:14:22 | this access | AccessorCalls.cs:14:24:14:24 | 1 | -| AccessorCalls.cs:14:19:14:25 | access to indexer | AccessorCalls.cs:14:9:14:15 | access to indexer | +| AccessorCalls.cs:14:19:14:25 | After access to indexer | AccessorCalls.cs:14:9:14:25 | ... = ... | +| AccessorCalls.cs:14:19:14:25 | Before access to indexer | AccessorCalls.cs:14:19:14:22 | this access | +| AccessorCalls.cs:14:19:14:25 | access to indexer | AccessorCalls.cs:14:19:14:25 | After access to indexer | | AccessorCalls.cs:14:24:14:24 | 1 | AccessorCalls.cs:14:19:14:25 | access to indexer | -| AccessorCalls.cs:15:9:15:12 | this access | AccessorCalls.cs:15:23:15:23 | access to parameter e | -| AccessorCalls.cs:15:9:15:18 | access to event Event | AccessorCalls.cs:15:9:15:23 | ... += ... | -| AccessorCalls.cs:15:9:15:23 | ... += ... | AccessorCalls.cs:16:9:16:24 | ...; | -| AccessorCalls.cs:15:9:15:24 | ...; | AccessorCalls.cs:15:9:15:12 | this access | -| AccessorCalls.cs:15:23:15:23 | access to parameter e | AccessorCalls.cs:15:9:15:18 | access to event Event | -| AccessorCalls.cs:16:9:16:12 | this access | AccessorCalls.cs:16:23:16:23 | access to parameter e | -| AccessorCalls.cs:16:9:16:18 | access to event Event | AccessorCalls.cs:16:9:16:23 | ... -= ... | -| AccessorCalls.cs:16:9:16:23 | ... -= ... | AccessorCalls.cs:10:10:10:11 | exit M1 (normal) | -| AccessorCalls.cs:16:9:16:24 | ...; | AccessorCalls.cs:16:9:16:12 | this access | -| AccessorCalls.cs:16:23:16:23 | access to parameter e | AccessorCalls.cs:16:9:16:18 | access to event Event | -| AccessorCalls.cs:19:10:19:11 | enter M2 | AccessorCalls.cs:20:5:26:5 | {...} | -| AccessorCalls.cs:19:10:19:11 | exit M2 (normal) | AccessorCalls.cs:19:10:19:11 | exit M2 | +| AccessorCalls.cs:15:9:15:12 | this access | AccessorCalls.cs:15:9:15:18 | access to event Event | +| AccessorCalls.cs:15:9:15:18 | After access to event Event | AccessorCalls.cs:15:23:15:23 | access to parameter e | +| AccessorCalls.cs:15:9:15:18 | Before access to event Event | AccessorCalls.cs:15:9:15:12 | this access | +| AccessorCalls.cs:15:9:15:18 | access to event Event | AccessorCalls.cs:15:9:15:18 | After access to event Event | +| AccessorCalls.cs:15:9:15:23 | ... += ... | AccessorCalls.cs:15:9:15:23 | After ... += ... | +| AccessorCalls.cs:15:9:15:23 | After ... += ... | AccessorCalls.cs:15:9:15:24 | After ...; | +| AccessorCalls.cs:15:9:15:23 | Before ... += ... | AccessorCalls.cs:15:9:15:18 | Before access to event Event | +| AccessorCalls.cs:15:9:15:24 | ...; | AccessorCalls.cs:15:9:15:23 | Before ... += ... | +| AccessorCalls.cs:15:9:15:24 | After ...; | AccessorCalls.cs:16:9:16:24 | ...; | +| AccessorCalls.cs:15:23:15:23 | access to parameter e | AccessorCalls.cs:15:9:15:23 | ... += ... | +| AccessorCalls.cs:16:9:16:12 | this access | AccessorCalls.cs:16:9:16:18 | access to event Event | +| AccessorCalls.cs:16:9:16:18 | After access to event Event | AccessorCalls.cs:16:23:16:23 | access to parameter e | +| AccessorCalls.cs:16:9:16:18 | Before access to event Event | AccessorCalls.cs:16:9:16:12 | this access | +| AccessorCalls.cs:16:9:16:18 | access to event Event | AccessorCalls.cs:16:9:16:18 | After access to event Event | +| AccessorCalls.cs:16:9:16:23 | ... -= ... | AccessorCalls.cs:16:9:16:23 | After ... -= ... | +| AccessorCalls.cs:16:9:16:23 | After ... -= ... | AccessorCalls.cs:16:9:16:24 | After ...; | +| AccessorCalls.cs:16:9:16:23 | Before ... -= ... | AccessorCalls.cs:16:9:16:18 | Before access to event Event | +| AccessorCalls.cs:16:9:16:24 | ...; | AccessorCalls.cs:16:9:16:23 | Before ... -= ... | +| AccessorCalls.cs:16:9:16:24 | After ...; | AccessorCalls.cs:11:5:17:5 | After {...} | +| AccessorCalls.cs:16:23:16:23 | access to parameter e | AccessorCalls.cs:16:9:16:23 | ... -= ... | +| AccessorCalls.cs:19:10:19:11 | Entry | AccessorCalls.cs:19:26:19:26 | e | +| AccessorCalls.cs:19:10:19:11 | Normal Exit | AccessorCalls.cs:19:10:19:11 | Exit | +| AccessorCalls.cs:19:26:19:26 | e | AccessorCalls.cs:20:5:26:5 | {...} | +| AccessorCalls.cs:20:5:26:5 | After {...} | AccessorCalls.cs:19:10:19:11 | Normal Exit | | AccessorCalls.cs:20:5:26:5 | {...} | AccessorCalls.cs:21:9:21:36 | ...; | | AccessorCalls.cs:21:9:21:12 | this access | AccessorCalls.cs:21:9:21:14 | access to field x | -| AccessorCalls.cs:21:9:21:14 | access to field x | AccessorCalls.cs:21:24:21:27 | this access | -| AccessorCalls.cs:21:9:21:20 | access to field Field | AccessorCalls.cs:21:9:21:35 | ... = ... | -| AccessorCalls.cs:21:9:21:35 | ... = ... | AccessorCalls.cs:22:9:22:34 | ...; | -| AccessorCalls.cs:21:9:21:36 | ...; | AccessorCalls.cs:21:9:21:12 | this access | +| AccessorCalls.cs:21:9:21:14 | After access to field x | AccessorCalls.cs:21:9:21:20 | access to field Field | +| AccessorCalls.cs:21:9:21:14 | Before access to field x | AccessorCalls.cs:21:9:21:12 | this access | +| AccessorCalls.cs:21:9:21:14 | access to field x | AccessorCalls.cs:21:9:21:14 | After access to field x | +| AccessorCalls.cs:21:9:21:20 | After access to field Field | AccessorCalls.cs:21:24:21:35 | Before access to field Field | +| AccessorCalls.cs:21:9:21:20 | Before access to field Field | AccessorCalls.cs:21:9:21:14 | Before access to field x | +| AccessorCalls.cs:21:9:21:20 | access to field Field | AccessorCalls.cs:21:9:21:20 | After access to field Field | +| AccessorCalls.cs:21:9:21:35 | ... = ... | AccessorCalls.cs:21:9:21:35 | After ... = ... | +| AccessorCalls.cs:21:9:21:35 | After ... = ... | AccessorCalls.cs:21:9:21:36 | After ...; | +| AccessorCalls.cs:21:9:21:35 | Before ... = ... | AccessorCalls.cs:21:9:21:20 | Before access to field Field | +| AccessorCalls.cs:21:9:21:36 | ...; | AccessorCalls.cs:21:9:21:35 | Before ... = ... | +| AccessorCalls.cs:21:9:21:36 | After ...; | AccessorCalls.cs:22:9:22:34 | ...; | | AccessorCalls.cs:21:24:21:27 | this access | AccessorCalls.cs:21:24:21:29 | access to field x | -| AccessorCalls.cs:21:24:21:29 | access to field x | AccessorCalls.cs:21:24:21:35 | access to field Field | -| AccessorCalls.cs:21:24:21:35 | access to field Field | AccessorCalls.cs:21:9:21:20 | access to field Field | +| AccessorCalls.cs:21:24:21:29 | After access to field x | AccessorCalls.cs:21:24:21:35 | access to field Field | +| AccessorCalls.cs:21:24:21:29 | Before access to field x | AccessorCalls.cs:21:24:21:27 | this access | +| AccessorCalls.cs:21:24:21:29 | access to field x | AccessorCalls.cs:21:24:21:29 | After access to field x | +| AccessorCalls.cs:21:24:21:35 | After access to field Field | AccessorCalls.cs:21:9:21:35 | ... = ... | +| AccessorCalls.cs:21:24:21:35 | Before access to field Field | AccessorCalls.cs:21:24:21:29 | Before access to field x | +| AccessorCalls.cs:21:24:21:35 | access to field Field | AccessorCalls.cs:21:24:21:35 | After access to field Field | | AccessorCalls.cs:22:9:22:12 | this access | AccessorCalls.cs:22:9:22:14 | access to field x | -| AccessorCalls.cs:22:9:22:14 | access to field x | AccessorCalls.cs:22:23:22:26 | this access | -| AccessorCalls.cs:22:9:22:19 | access to property Prop | AccessorCalls.cs:22:9:22:33 | ... = ... | -| AccessorCalls.cs:22:9:22:33 | ... = ... | AccessorCalls.cs:23:9:23:30 | ...; | -| AccessorCalls.cs:22:9:22:34 | ...; | AccessorCalls.cs:22:9:22:12 | this access | +| AccessorCalls.cs:22:9:22:14 | After access to field x | AccessorCalls.cs:22:9:22:19 | access to property Prop | +| AccessorCalls.cs:22:9:22:14 | Before access to field x | AccessorCalls.cs:22:9:22:12 | this access | +| AccessorCalls.cs:22:9:22:14 | access to field x | AccessorCalls.cs:22:9:22:14 | After access to field x | +| AccessorCalls.cs:22:9:22:19 | After access to property Prop | AccessorCalls.cs:22:23:22:33 | Before access to property Prop | +| AccessorCalls.cs:22:9:22:19 | Before access to property Prop | AccessorCalls.cs:22:9:22:14 | Before access to field x | +| AccessorCalls.cs:22:9:22:19 | access to property Prop | AccessorCalls.cs:22:9:22:19 | After access to property Prop | +| AccessorCalls.cs:22:9:22:33 | ... = ... | AccessorCalls.cs:22:9:22:33 | After ... = ... | +| AccessorCalls.cs:22:9:22:33 | After ... = ... | AccessorCalls.cs:22:9:22:34 | After ...; | +| AccessorCalls.cs:22:9:22:33 | Before ... = ... | AccessorCalls.cs:22:9:22:19 | Before access to property Prop | +| AccessorCalls.cs:22:9:22:34 | ...; | AccessorCalls.cs:22:9:22:33 | Before ... = ... | +| AccessorCalls.cs:22:9:22:34 | After ...; | AccessorCalls.cs:23:9:23:30 | ...; | | AccessorCalls.cs:22:23:22:26 | this access | AccessorCalls.cs:22:23:22:28 | access to field x | -| AccessorCalls.cs:22:23:22:28 | access to field x | AccessorCalls.cs:22:23:22:33 | access to property Prop | -| AccessorCalls.cs:22:23:22:33 | access to property Prop | AccessorCalls.cs:22:9:22:19 | access to property Prop | +| AccessorCalls.cs:22:23:22:28 | After access to field x | AccessorCalls.cs:22:23:22:33 | access to property Prop | +| AccessorCalls.cs:22:23:22:28 | Before access to field x | AccessorCalls.cs:22:23:22:26 | this access | +| AccessorCalls.cs:22:23:22:28 | access to field x | AccessorCalls.cs:22:23:22:28 | After access to field x | +| AccessorCalls.cs:22:23:22:33 | After access to property Prop | AccessorCalls.cs:22:9:22:33 | ... = ... | +| AccessorCalls.cs:22:23:22:33 | Before access to property Prop | AccessorCalls.cs:22:23:22:28 | Before access to field x | +| AccessorCalls.cs:22:23:22:33 | access to property Prop | AccessorCalls.cs:22:23:22:33 | After access to property Prop | | AccessorCalls.cs:23:9:23:12 | this access | AccessorCalls.cs:23:9:23:14 | access to field x | -| AccessorCalls.cs:23:9:23:14 | access to field x | AccessorCalls.cs:23:16:23:16 | 0 | -| AccessorCalls.cs:23:9:23:17 | access to indexer | AccessorCalls.cs:23:9:23:29 | ... = ... | -| AccessorCalls.cs:23:9:23:29 | ... = ... | AccessorCalls.cs:24:9:24:26 | ...; | -| AccessorCalls.cs:23:9:23:30 | ...; | AccessorCalls.cs:23:9:23:12 | this access | -| AccessorCalls.cs:23:16:23:16 | 0 | AccessorCalls.cs:23:21:23:24 | this access | +| AccessorCalls.cs:23:9:23:14 | After access to field x | AccessorCalls.cs:23:16:23:16 | 0 | +| AccessorCalls.cs:23:9:23:14 | Before access to field x | AccessorCalls.cs:23:9:23:12 | this access | +| AccessorCalls.cs:23:9:23:14 | access to field x | AccessorCalls.cs:23:9:23:14 | After access to field x | +| AccessorCalls.cs:23:9:23:17 | After access to indexer | AccessorCalls.cs:23:21:23:29 | Before access to indexer | +| AccessorCalls.cs:23:9:23:17 | Before access to indexer | AccessorCalls.cs:23:9:23:14 | Before access to field x | +| AccessorCalls.cs:23:9:23:17 | access to indexer | AccessorCalls.cs:23:9:23:17 | After access to indexer | +| AccessorCalls.cs:23:9:23:29 | ... = ... | AccessorCalls.cs:23:9:23:29 | After ... = ... | +| AccessorCalls.cs:23:9:23:29 | After ... = ... | AccessorCalls.cs:23:9:23:30 | After ...; | +| AccessorCalls.cs:23:9:23:29 | Before ... = ... | AccessorCalls.cs:23:9:23:17 | Before access to indexer | +| AccessorCalls.cs:23:9:23:30 | ...; | AccessorCalls.cs:23:9:23:29 | Before ... = ... | +| AccessorCalls.cs:23:9:23:30 | After ...; | AccessorCalls.cs:24:9:24:26 | ...; | +| AccessorCalls.cs:23:16:23:16 | 0 | AccessorCalls.cs:23:9:23:17 | access to indexer | | AccessorCalls.cs:23:21:23:24 | this access | AccessorCalls.cs:23:21:23:26 | access to field x | -| AccessorCalls.cs:23:21:23:26 | access to field x | AccessorCalls.cs:23:28:23:28 | 1 | -| AccessorCalls.cs:23:21:23:29 | access to indexer | AccessorCalls.cs:23:9:23:17 | access to indexer | +| AccessorCalls.cs:23:21:23:26 | After access to field x | AccessorCalls.cs:23:28:23:28 | 1 | +| AccessorCalls.cs:23:21:23:26 | Before access to field x | AccessorCalls.cs:23:21:23:24 | this access | +| AccessorCalls.cs:23:21:23:26 | access to field x | AccessorCalls.cs:23:21:23:26 | After access to field x | +| AccessorCalls.cs:23:21:23:29 | After access to indexer | AccessorCalls.cs:23:9:23:29 | ... = ... | +| AccessorCalls.cs:23:21:23:29 | Before access to indexer | AccessorCalls.cs:23:21:23:26 | Before access to field x | +| AccessorCalls.cs:23:21:23:29 | access to indexer | AccessorCalls.cs:23:21:23:29 | After access to indexer | | AccessorCalls.cs:23:28:23:28 | 1 | AccessorCalls.cs:23:21:23:29 | access to indexer | | AccessorCalls.cs:24:9:24:12 | this access | AccessorCalls.cs:24:9:24:14 | access to field x | -| AccessorCalls.cs:24:9:24:14 | access to field x | AccessorCalls.cs:24:25:24:25 | access to parameter e | -| AccessorCalls.cs:24:9:24:20 | access to event Event | AccessorCalls.cs:24:9:24:25 | ... += ... | -| AccessorCalls.cs:24:9:24:25 | ... += ... | AccessorCalls.cs:25:9:25:26 | ...; | -| AccessorCalls.cs:24:9:24:26 | ...; | AccessorCalls.cs:24:9:24:12 | this access | -| AccessorCalls.cs:24:25:24:25 | access to parameter e | AccessorCalls.cs:24:9:24:20 | access to event Event | +| AccessorCalls.cs:24:9:24:14 | After access to field x | AccessorCalls.cs:24:9:24:20 | access to event Event | +| AccessorCalls.cs:24:9:24:14 | Before access to field x | AccessorCalls.cs:24:9:24:12 | this access | +| AccessorCalls.cs:24:9:24:14 | access to field x | AccessorCalls.cs:24:9:24:14 | After access to field x | +| AccessorCalls.cs:24:9:24:20 | After access to event Event | AccessorCalls.cs:24:25:24:25 | access to parameter e | +| AccessorCalls.cs:24:9:24:20 | Before access to event Event | AccessorCalls.cs:24:9:24:14 | Before access to field x | +| AccessorCalls.cs:24:9:24:20 | access to event Event | AccessorCalls.cs:24:9:24:20 | After access to event Event | +| AccessorCalls.cs:24:9:24:25 | ... += ... | AccessorCalls.cs:24:9:24:25 | After ... += ... | +| AccessorCalls.cs:24:9:24:25 | After ... += ... | AccessorCalls.cs:24:9:24:26 | After ...; | +| AccessorCalls.cs:24:9:24:25 | Before ... += ... | AccessorCalls.cs:24:9:24:20 | Before access to event Event | +| AccessorCalls.cs:24:9:24:26 | ...; | AccessorCalls.cs:24:9:24:25 | Before ... += ... | +| AccessorCalls.cs:24:9:24:26 | After ...; | AccessorCalls.cs:25:9:25:26 | ...; | +| AccessorCalls.cs:24:25:24:25 | access to parameter e | AccessorCalls.cs:24:9:24:25 | ... += ... | | AccessorCalls.cs:25:9:25:12 | this access | AccessorCalls.cs:25:9:25:14 | access to field x | -| AccessorCalls.cs:25:9:25:14 | access to field x | AccessorCalls.cs:25:25:25:25 | access to parameter e | -| AccessorCalls.cs:25:9:25:20 | access to event Event | AccessorCalls.cs:25:9:25:25 | ... -= ... | -| AccessorCalls.cs:25:9:25:25 | ... -= ... | AccessorCalls.cs:19:10:19:11 | exit M2 (normal) | -| AccessorCalls.cs:25:9:25:26 | ...; | AccessorCalls.cs:25:9:25:12 | this access | -| AccessorCalls.cs:25:25:25:25 | access to parameter e | AccessorCalls.cs:25:9:25:20 | access to event Event | -| AccessorCalls.cs:28:10:28:11 | enter M3 | AccessorCalls.cs:29:5:33:5 | {...} | -| AccessorCalls.cs:28:10:28:11 | exit M3 (normal) | AccessorCalls.cs:28:10:28:11 | exit M3 | +| AccessorCalls.cs:25:9:25:14 | After access to field x | AccessorCalls.cs:25:9:25:20 | access to event Event | +| AccessorCalls.cs:25:9:25:14 | Before access to field x | AccessorCalls.cs:25:9:25:12 | this access | +| AccessorCalls.cs:25:9:25:14 | access to field x | AccessorCalls.cs:25:9:25:14 | After access to field x | +| AccessorCalls.cs:25:9:25:20 | After access to event Event | AccessorCalls.cs:25:25:25:25 | access to parameter e | +| AccessorCalls.cs:25:9:25:20 | Before access to event Event | AccessorCalls.cs:25:9:25:14 | Before access to field x | +| AccessorCalls.cs:25:9:25:20 | access to event Event | AccessorCalls.cs:25:9:25:20 | After access to event Event | +| AccessorCalls.cs:25:9:25:25 | ... -= ... | AccessorCalls.cs:25:9:25:25 | After ... -= ... | +| AccessorCalls.cs:25:9:25:25 | After ... -= ... | AccessorCalls.cs:25:9:25:26 | After ...; | +| AccessorCalls.cs:25:9:25:25 | Before ... -= ... | AccessorCalls.cs:25:9:25:20 | Before access to event Event | +| AccessorCalls.cs:25:9:25:26 | ...; | AccessorCalls.cs:25:9:25:25 | Before ... -= ... | +| AccessorCalls.cs:25:9:25:26 | After ...; | AccessorCalls.cs:20:5:26:5 | After {...} | +| AccessorCalls.cs:25:25:25:25 | access to parameter e | AccessorCalls.cs:25:9:25:25 | ... -= ... | +| AccessorCalls.cs:28:10:28:11 | Entry | AccessorCalls.cs:29:5:33:5 | {...} | +| AccessorCalls.cs:28:10:28:11 | Normal Exit | AccessorCalls.cs:28:10:28:11 | Exit | +| AccessorCalls.cs:29:5:33:5 | After {...} | AccessorCalls.cs:28:10:28:11 | Normal Exit | | AccessorCalls.cs:29:5:33:5 | {...} | AccessorCalls.cs:30:9:30:21 | ...; | | AccessorCalls.cs:30:9:30:12 | this access | AccessorCalls.cs:30:9:30:18 | access to field Field | -| AccessorCalls.cs:30:9:30:18 | access to field Field | AccessorCalls.cs:30:9:30:20 | ...++ | -| AccessorCalls.cs:30:9:30:20 | ...++ | AccessorCalls.cs:31:9:31:20 | ...; | -| AccessorCalls.cs:30:9:30:21 | ...; | AccessorCalls.cs:30:9:30:12 | this access | +| AccessorCalls.cs:30:9:30:18 | After access to field Field | AccessorCalls.cs:30:9:30:20 | ...++ | +| AccessorCalls.cs:30:9:30:18 | Before access to field Field | AccessorCalls.cs:30:9:30:12 | this access | +| AccessorCalls.cs:30:9:30:18 | access to field Field | AccessorCalls.cs:30:9:30:18 | After access to field Field | +| AccessorCalls.cs:30:9:30:20 | ...++ | AccessorCalls.cs:30:9:30:20 | After ...++ | +| AccessorCalls.cs:30:9:30:20 | After ...++ | AccessorCalls.cs:30:9:30:21 | After ...; | +| AccessorCalls.cs:30:9:30:20 | Before ...++ | AccessorCalls.cs:30:9:30:18 | Before access to field Field | +| AccessorCalls.cs:30:9:30:21 | ...; | AccessorCalls.cs:30:9:30:20 | Before ...++ | +| AccessorCalls.cs:30:9:30:21 | After ...; | AccessorCalls.cs:31:9:31:20 | ...; | | AccessorCalls.cs:31:9:31:12 | this access | AccessorCalls.cs:31:9:31:17 | access to property Prop | -| AccessorCalls.cs:31:9:31:17 | access to property Prop | AccessorCalls.cs:31:9:31:19 | ...++ | -| AccessorCalls.cs:31:9:31:19 | ...++ | AccessorCalls.cs:32:9:32:18 | ...; | -| AccessorCalls.cs:31:9:31:20 | ...; | AccessorCalls.cs:31:9:31:12 | this access | +| AccessorCalls.cs:31:9:31:17 | After access to property Prop | AccessorCalls.cs:31:9:31:19 | ...++ | +| AccessorCalls.cs:31:9:31:17 | Before access to property Prop | AccessorCalls.cs:31:9:31:12 | this access | +| AccessorCalls.cs:31:9:31:17 | access to property Prop | AccessorCalls.cs:31:9:31:17 | After access to property Prop | +| AccessorCalls.cs:31:9:31:19 | ...++ | AccessorCalls.cs:31:9:31:19 | After ...++ | +| AccessorCalls.cs:31:9:31:19 | After ...++ | AccessorCalls.cs:31:9:31:20 | After ...; | +| AccessorCalls.cs:31:9:31:19 | Before ...++ | AccessorCalls.cs:31:9:31:17 | Before access to property Prop | +| AccessorCalls.cs:31:9:31:20 | ...; | AccessorCalls.cs:31:9:31:19 | Before ...++ | +| AccessorCalls.cs:31:9:31:20 | After ...; | AccessorCalls.cs:32:9:32:18 | ...; | | AccessorCalls.cs:32:9:32:12 | this access | AccessorCalls.cs:32:14:32:14 | 0 | -| AccessorCalls.cs:32:9:32:15 | access to indexer | AccessorCalls.cs:32:9:32:17 | ...++ | -| AccessorCalls.cs:32:9:32:17 | ...++ | AccessorCalls.cs:28:10:28:11 | exit M3 (normal) | -| AccessorCalls.cs:32:9:32:18 | ...; | AccessorCalls.cs:32:9:32:12 | this access | +| AccessorCalls.cs:32:9:32:15 | After access to indexer | AccessorCalls.cs:32:9:32:17 | ...++ | +| AccessorCalls.cs:32:9:32:15 | Before access to indexer | AccessorCalls.cs:32:9:32:12 | this access | +| AccessorCalls.cs:32:9:32:15 | access to indexer | AccessorCalls.cs:32:9:32:15 | After access to indexer | +| AccessorCalls.cs:32:9:32:17 | ...++ | AccessorCalls.cs:32:9:32:17 | After ...++ | +| AccessorCalls.cs:32:9:32:17 | After ...++ | AccessorCalls.cs:32:9:32:18 | After ...; | +| AccessorCalls.cs:32:9:32:17 | Before ...++ | AccessorCalls.cs:32:9:32:15 | Before access to indexer | +| AccessorCalls.cs:32:9:32:18 | ...; | AccessorCalls.cs:32:9:32:17 | Before ...++ | +| AccessorCalls.cs:32:9:32:18 | After ...; | AccessorCalls.cs:29:5:33:5 | After {...} | | AccessorCalls.cs:32:14:32:14 | 0 | AccessorCalls.cs:32:9:32:15 | access to indexer | -| AccessorCalls.cs:35:10:35:11 | enter M4 | AccessorCalls.cs:36:5:40:5 | {...} | -| AccessorCalls.cs:35:10:35:11 | exit M4 (normal) | AccessorCalls.cs:35:10:35:11 | exit M4 | +| AccessorCalls.cs:35:10:35:11 | Entry | AccessorCalls.cs:36:5:40:5 | {...} | +| AccessorCalls.cs:35:10:35:11 | Normal Exit | AccessorCalls.cs:35:10:35:11 | Exit | +| AccessorCalls.cs:36:5:40:5 | After {...} | AccessorCalls.cs:35:10:35:11 | Normal Exit | | AccessorCalls.cs:36:5:40:5 | {...} | AccessorCalls.cs:37:9:37:23 | ...; | | AccessorCalls.cs:37:9:37:12 | this access | AccessorCalls.cs:37:9:37:14 | access to field x | -| AccessorCalls.cs:37:9:37:14 | access to field x | AccessorCalls.cs:37:9:37:20 | access to field Field | -| AccessorCalls.cs:37:9:37:20 | access to field Field | AccessorCalls.cs:37:9:37:22 | ...++ | -| AccessorCalls.cs:37:9:37:22 | ...++ | AccessorCalls.cs:38:9:38:22 | ...; | -| AccessorCalls.cs:37:9:37:23 | ...; | AccessorCalls.cs:37:9:37:12 | this access | +| AccessorCalls.cs:37:9:37:14 | After access to field x | AccessorCalls.cs:37:9:37:20 | access to field Field | +| AccessorCalls.cs:37:9:37:14 | Before access to field x | AccessorCalls.cs:37:9:37:12 | this access | +| AccessorCalls.cs:37:9:37:14 | access to field x | AccessorCalls.cs:37:9:37:14 | After access to field x | +| AccessorCalls.cs:37:9:37:20 | After access to field Field | AccessorCalls.cs:37:9:37:22 | ...++ | +| AccessorCalls.cs:37:9:37:20 | Before access to field Field | AccessorCalls.cs:37:9:37:14 | Before access to field x | +| AccessorCalls.cs:37:9:37:20 | access to field Field | AccessorCalls.cs:37:9:37:20 | After access to field Field | +| AccessorCalls.cs:37:9:37:22 | ...++ | AccessorCalls.cs:37:9:37:22 | After ...++ | +| AccessorCalls.cs:37:9:37:22 | After ...++ | AccessorCalls.cs:37:9:37:23 | After ...; | +| AccessorCalls.cs:37:9:37:22 | Before ...++ | AccessorCalls.cs:37:9:37:20 | Before access to field Field | +| AccessorCalls.cs:37:9:37:23 | ...; | AccessorCalls.cs:37:9:37:22 | Before ...++ | +| AccessorCalls.cs:37:9:37:23 | After ...; | AccessorCalls.cs:38:9:38:22 | ...; | | AccessorCalls.cs:38:9:38:12 | this access | AccessorCalls.cs:38:9:38:14 | access to field x | -| AccessorCalls.cs:38:9:38:14 | access to field x | AccessorCalls.cs:38:9:38:19 | access to property Prop | -| AccessorCalls.cs:38:9:38:19 | access to property Prop | AccessorCalls.cs:38:9:38:21 | ...++ | -| AccessorCalls.cs:38:9:38:21 | ...++ | AccessorCalls.cs:39:9:39:20 | ...; | -| AccessorCalls.cs:38:9:38:22 | ...; | AccessorCalls.cs:38:9:38:12 | this access | +| AccessorCalls.cs:38:9:38:14 | After access to field x | AccessorCalls.cs:38:9:38:19 | access to property Prop | +| AccessorCalls.cs:38:9:38:14 | Before access to field x | AccessorCalls.cs:38:9:38:12 | this access | +| AccessorCalls.cs:38:9:38:14 | access to field x | AccessorCalls.cs:38:9:38:14 | After access to field x | +| AccessorCalls.cs:38:9:38:19 | After access to property Prop | AccessorCalls.cs:38:9:38:21 | ...++ | +| AccessorCalls.cs:38:9:38:19 | Before access to property Prop | AccessorCalls.cs:38:9:38:14 | Before access to field x | +| AccessorCalls.cs:38:9:38:19 | access to property Prop | AccessorCalls.cs:38:9:38:19 | After access to property Prop | +| AccessorCalls.cs:38:9:38:21 | ...++ | AccessorCalls.cs:38:9:38:21 | After ...++ | +| AccessorCalls.cs:38:9:38:21 | After ...++ | AccessorCalls.cs:38:9:38:22 | After ...; | +| AccessorCalls.cs:38:9:38:21 | Before ...++ | AccessorCalls.cs:38:9:38:19 | Before access to property Prop | +| AccessorCalls.cs:38:9:38:22 | ...; | AccessorCalls.cs:38:9:38:21 | Before ...++ | +| AccessorCalls.cs:38:9:38:22 | After ...; | AccessorCalls.cs:39:9:39:20 | ...; | | AccessorCalls.cs:39:9:39:12 | this access | AccessorCalls.cs:39:9:39:14 | access to field x | -| AccessorCalls.cs:39:9:39:14 | access to field x | AccessorCalls.cs:39:16:39:16 | 0 | -| AccessorCalls.cs:39:9:39:17 | access to indexer | AccessorCalls.cs:39:9:39:19 | ...++ | -| AccessorCalls.cs:39:9:39:19 | ...++ | AccessorCalls.cs:35:10:35:11 | exit M4 (normal) | -| AccessorCalls.cs:39:9:39:20 | ...; | AccessorCalls.cs:39:9:39:12 | this access | +| AccessorCalls.cs:39:9:39:14 | After access to field x | AccessorCalls.cs:39:16:39:16 | 0 | +| AccessorCalls.cs:39:9:39:14 | Before access to field x | AccessorCalls.cs:39:9:39:12 | this access | +| AccessorCalls.cs:39:9:39:14 | access to field x | AccessorCalls.cs:39:9:39:14 | After access to field x | +| AccessorCalls.cs:39:9:39:17 | After access to indexer | AccessorCalls.cs:39:9:39:19 | ...++ | +| AccessorCalls.cs:39:9:39:17 | Before access to indexer | AccessorCalls.cs:39:9:39:14 | Before access to field x | +| AccessorCalls.cs:39:9:39:17 | access to indexer | AccessorCalls.cs:39:9:39:17 | After access to indexer | +| AccessorCalls.cs:39:9:39:19 | ...++ | AccessorCalls.cs:39:9:39:19 | After ...++ | +| AccessorCalls.cs:39:9:39:19 | After ...++ | AccessorCalls.cs:39:9:39:20 | After ...; | +| AccessorCalls.cs:39:9:39:19 | Before ...++ | AccessorCalls.cs:39:9:39:17 | Before access to indexer | +| AccessorCalls.cs:39:9:39:20 | ...; | AccessorCalls.cs:39:9:39:19 | Before ...++ | +| AccessorCalls.cs:39:9:39:20 | After ...; | AccessorCalls.cs:36:5:40:5 | After {...} | | AccessorCalls.cs:39:16:39:16 | 0 | AccessorCalls.cs:39:9:39:17 | access to indexer | -| AccessorCalls.cs:42:10:42:11 | enter M5 | AccessorCalls.cs:43:5:47:5 | {...} | -| AccessorCalls.cs:42:10:42:11 | exit M5 (normal) | AccessorCalls.cs:42:10:42:11 | exit M5 | +| AccessorCalls.cs:42:10:42:11 | Entry | AccessorCalls.cs:43:5:47:5 | {...} | +| AccessorCalls.cs:42:10:42:11 | Normal Exit | AccessorCalls.cs:42:10:42:11 | Exit | +| AccessorCalls.cs:43:5:47:5 | After {...} | AccessorCalls.cs:42:10:42:11 | Normal Exit | | AccessorCalls.cs:43:5:47:5 | {...} | AccessorCalls.cs:44:9:44:33 | ...; | | AccessorCalls.cs:44:9:44:12 | this access | AccessorCalls.cs:44:9:44:18 | access to field Field | -| AccessorCalls.cs:44:9:44:18 | access to field Field | AccessorCalls.cs:44:23:44:26 | this access | -| AccessorCalls.cs:44:9:44:32 | ... += ... | AccessorCalls.cs:45:9:45:31 | ...; | -| AccessorCalls.cs:44:9:44:33 | ...; | AccessorCalls.cs:44:9:44:12 | this access | +| AccessorCalls.cs:44:9:44:18 | After access to field Field | AccessorCalls.cs:44:23:44:32 | Before access to field Field | +| AccessorCalls.cs:44:9:44:18 | Before access to field Field | AccessorCalls.cs:44:9:44:12 | this access | +| AccessorCalls.cs:44:9:44:18 | access to field Field | AccessorCalls.cs:44:9:44:18 | After access to field Field | +| AccessorCalls.cs:44:9:44:32 | ... += ... | AccessorCalls.cs:44:9:44:32 | After ... += ... | +| AccessorCalls.cs:44:9:44:32 | After ... += ... | AccessorCalls.cs:44:9:44:33 | After ...; | +| AccessorCalls.cs:44:9:44:32 | Before ... += ... | AccessorCalls.cs:44:9:44:18 | Before access to field Field | +| AccessorCalls.cs:44:9:44:33 | ...; | AccessorCalls.cs:44:9:44:32 | Before ... += ... | +| AccessorCalls.cs:44:9:44:33 | After ...; | AccessorCalls.cs:45:9:45:31 | ...; | | AccessorCalls.cs:44:23:44:26 | this access | AccessorCalls.cs:44:23:44:32 | access to field Field | -| AccessorCalls.cs:44:23:44:32 | access to field Field | AccessorCalls.cs:44:9:44:32 | ... += ... | +| AccessorCalls.cs:44:23:44:32 | After access to field Field | AccessorCalls.cs:44:9:44:32 | ... += ... | +| AccessorCalls.cs:44:23:44:32 | Before access to field Field | AccessorCalls.cs:44:23:44:26 | this access | +| AccessorCalls.cs:44:23:44:32 | access to field Field | AccessorCalls.cs:44:23:44:32 | After access to field Field | | AccessorCalls.cs:45:9:45:12 | this access | AccessorCalls.cs:45:9:45:17 | access to property Prop | -| AccessorCalls.cs:45:9:45:17 | access to property Prop | AccessorCalls.cs:45:22:45:25 | this access | -| AccessorCalls.cs:45:9:45:30 | ... += ... | AccessorCalls.cs:46:9:46:27 | ...; | -| AccessorCalls.cs:45:9:45:31 | ...; | AccessorCalls.cs:45:9:45:12 | this access | +| AccessorCalls.cs:45:9:45:17 | After access to property Prop | AccessorCalls.cs:45:22:45:30 | Before access to property Prop | +| AccessorCalls.cs:45:9:45:17 | Before access to property Prop | AccessorCalls.cs:45:9:45:12 | this access | +| AccessorCalls.cs:45:9:45:17 | access to property Prop | AccessorCalls.cs:45:9:45:17 | After access to property Prop | +| AccessorCalls.cs:45:9:45:30 | ... += ... | AccessorCalls.cs:45:9:45:30 | After ... += ... | +| AccessorCalls.cs:45:9:45:30 | After ... += ... | AccessorCalls.cs:45:9:45:31 | After ...; | +| AccessorCalls.cs:45:9:45:30 | Before ... += ... | AccessorCalls.cs:45:9:45:17 | Before access to property Prop | +| AccessorCalls.cs:45:9:45:31 | ...; | AccessorCalls.cs:45:9:45:30 | Before ... += ... | +| AccessorCalls.cs:45:9:45:31 | After ...; | AccessorCalls.cs:46:9:46:27 | ...; | | AccessorCalls.cs:45:22:45:25 | this access | AccessorCalls.cs:45:22:45:30 | access to property Prop | -| AccessorCalls.cs:45:22:45:30 | access to property Prop | AccessorCalls.cs:45:9:45:30 | ... += ... | +| AccessorCalls.cs:45:22:45:30 | After access to property Prop | AccessorCalls.cs:45:9:45:30 | ... += ... | +| AccessorCalls.cs:45:22:45:30 | Before access to property Prop | AccessorCalls.cs:45:22:45:25 | this access | +| AccessorCalls.cs:45:22:45:30 | access to property Prop | AccessorCalls.cs:45:22:45:30 | After access to property Prop | | AccessorCalls.cs:46:9:46:12 | this access | AccessorCalls.cs:46:14:46:14 | 0 | -| AccessorCalls.cs:46:9:46:15 | access to indexer | AccessorCalls.cs:46:20:46:23 | this access | -| AccessorCalls.cs:46:9:46:26 | ... += ... | AccessorCalls.cs:42:10:42:11 | exit M5 (normal) | -| AccessorCalls.cs:46:9:46:27 | ...; | AccessorCalls.cs:46:9:46:12 | this access | +| AccessorCalls.cs:46:9:46:15 | After access to indexer | AccessorCalls.cs:46:20:46:26 | Before access to indexer | +| AccessorCalls.cs:46:9:46:15 | Before access to indexer | AccessorCalls.cs:46:9:46:12 | this access | +| AccessorCalls.cs:46:9:46:15 | access to indexer | AccessorCalls.cs:46:9:46:15 | After access to indexer | +| AccessorCalls.cs:46:9:46:26 | ... += ... | AccessorCalls.cs:46:9:46:26 | After ... += ... | +| AccessorCalls.cs:46:9:46:26 | After ... += ... | AccessorCalls.cs:46:9:46:27 | After ...; | +| AccessorCalls.cs:46:9:46:26 | Before ... += ... | AccessorCalls.cs:46:9:46:15 | Before access to indexer | +| AccessorCalls.cs:46:9:46:27 | ...; | AccessorCalls.cs:46:9:46:26 | Before ... += ... | +| AccessorCalls.cs:46:9:46:27 | After ...; | AccessorCalls.cs:43:5:47:5 | After {...} | | AccessorCalls.cs:46:14:46:14 | 0 | AccessorCalls.cs:46:9:46:15 | access to indexer | | AccessorCalls.cs:46:20:46:23 | this access | AccessorCalls.cs:46:25:46:25 | 0 | -| AccessorCalls.cs:46:20:46:26 | access to indexer | AccessorCalls.cs:46:9:46:26 | ... += ... | +| AccessorCalls.cs:46:20:46:26 | After access to indexer | AccessorCalls.cs:46:9:46:26 | ... += ... | +| AccessorCalls.cs:46:20:46:26 | Before access to indexer | AccessorCalls.cs:46:20:46:23 | this access | +| AccessorCalls.cs:46:20:46:26 | access to indexer | AccessorCalls.cs:46:20:46:26 | After access to indexer | | AccessorCalls.cs:46:25:46:25 | 0 | AccessorCalls.cs:46:20:46:26 | access to indexer | -| AccessorCalls.cs:49:10:49:11 | enter M6 | AccessorCalls.cs:50:5:54:5 | {...} | -| AccessorCalls.cs:49:10:49:11 | exit M6 (normal) | AccessorCalls.cs:49:10:49:11 | exit M6 | +| AccessorCalls.cs:49:10:49:11 | Entry | AccessorCalls.cs:50:5:54:5 | {...} | +| AccessorCalls.cs:49:10:49:11 | Normal Exit | AccessorCalls.cs:49:10:49:11 | Exit | +| AccessorCalls.cs:50:5:54:5 | After {...} | AccessorCalls.cs:49:10:49:11 | Normal Exit | | AccessorCalls.cs:50:5:54:5 | {...} | AccessorCalls.cs:51:9:51:37 | ...; | | AccessorCalls.cs:51:9:51:12 | this access | AccessorCalls.cs:51:9:51:14 | access to field x | -| AccessorCalls.cs:51:9:51:14 | access to field x | AccessorCalls.cs:51:9:51:20 | access to field Field | -| AccessorCalls.cs:51:9:51:20 | access to field Field | AccessorCalls.cs:51:25:51:28 | this access | -| AccessorCalls.cs:51:9:51:36 | ... += ... | AccessorCalls.cs:52:9:52:35 | ...; | -| AccessorCalls.cs:51:9:51:37 | ...; | AccessorCalls.cs:51:9:51:12 | this access | +| AccessorCalls.cs:51:9:51:14 | After access to field x | AccessorCalls.cs:51:9:51:20 | access to field Field | +| AccessorCalls.cs:51:9:51:14 | Before access to field x | AccessorCalls.cs:51:9:51:12 | this access | +| AccessorCalls.cs:51:9:51:14 | access to field x | AccessorCalls.cs:51:9:51:14 | After access to field x | +| AccessorCalls.cs:51:9:51:20 | After access to field Field | AccessorCalls.cs:51:25:51:36 | Before access to field Field | +| AccessorCalls.cs:51:9:51:20 | Before access to field Field | AccessorCalls.cs:51:9:51:14 | Before access to field x | +| AccessorCalls.cs:51:9:51:20 | access to field Field | AccessorCalls.cs:51:9:51:20 | After access to field Field | +| AccessorCalls.cs:51:9:51:36 | ... += ... | AccessorCalls.cs:51:9:51:36 | After ... += ... | +| AccessorCalls.cs:51:9:51:36 | After ... += ... | AccessorCalls.cs:51:9:51:37 | After ...; | +| AccessorCalls.cs:51:9:51:36 | Before ... += ... | AccessorCalls.cs:51:9:51:20 | Before access to field Field | +| AccessorCalls.cs:51:9:51:37 | ...; | AccessorCalls.cs:51:9:51:36 | Before ... += ... | +| AccessorCalls.cs:51:9:51:37 | After ...; | AccessorCalls.cs:52:9:52:35 | ...; | | AccessorCalls.cs:51:25:51:28 | this access | AccessorCalls.cs:51:25:51:30 | access to field x | -| AccessorCalls.cs:51:25:51:30 | access to field x | AccessorCalls.cs:51:25:51:36 | access to field Field | -| AccessorCalls.cs:51:25:51:36 | access to field Field | AccessorCalls.cs:51:9:51:36 | ... += ... | +| AccessorCalls.cs:51:25:51:30 | After access to field x | AccessorCalls.cs:51:25:51:36 | access to field Field | +| AccessorCalls.cs:51:25:51:30 | Before access to field x | AccessorCalls.cs:51:25:51:28 | this access | +| AccessorCalls.cs:51:25:51:30 | access to field x | AccessorCalls.cs:51:25:51:30 | After access to field x | +| AccessorCalls.cs:51:25:51:36 | After access to field Field | AccessorCalls.cs:51:9:51:36 | ... += ... | +| AccessorCalls.cs:51:25:51:36 | Before access to field Field | AccessorCalls.cs:51:25:51:30 | Before access to field x | +| AccessorCalls.cs:51:25:51:36 | access to field Field | AccessorCalls.cs:51:25:51:36 | After access to field Field | | AccessorCalls.cs:52:9:52:12 | this access | AccessorCalls.cs:52:9:52:14 | access to field x | -| AccessorCalls.cs:52:9:52:14 | access to field x | AccessorCalls.cs:52:9:52:19 | access to property Prop | -| AccessorCalls.cs:52:9:52:19 | access to property Prop | AccessorCalls.cs:52:24:52:27 | this access | -| AccessorCalls.cs:52:9:52:34 | ... += ... | AccessorCalls.cs:53:9:53:31 | ...; | -| AccessorCalls.cs:52:9:52:35 | ...; | AccessorCalls.cs:52:9:52:12 | this access | +| AccessorCalls.cs:52:9:52:14 | After access to field x | AccessorCalls.cs:52:9:52:19 | access to property Prop | +| AccessorCalls.cs:52:9:52:14 | Before access to field x | AccessorCalls.cs:52:9:52:12 | this access | +| AccessorCalls.cs:52:9:52:14 | access to field x | AccessorCalls.cs:52:9:52:14 | After access to field x | +| AccessorCalls.cs:52:9:52:19 | After access to property Prop | AccessorCalls.cs:52:24:52:34 | Before access to property Prop | +| AccessorCalls.cs:52:9:52:19 | Before access to property Prop | AccessorCalls.cs:52:9:52:14 | Before access to field x | +| AccessorCalls.cs:52:9:52:19 | access to property Prop | AccessorCalls.cs:52:9:52:19 | After access to property Prop | +| AccessorCalls.cs:52:9:52:34 | ... += ... | AccessorCalls.cs:52:9:52:34 | After ... += ... | +| AccessorCalls.cs:52:9:52:34 | After ... += ... | AccessorCalls.cs:52:9:52:35 | After ...; | +| AccessorCalls.cs:52:9:52:34 | Before ... += ... | AccessorCalls.cs:52:9:52:19 | Before access to property Prop | +| AccessorCalls.cs:52:9:52:35 | ...; | AccessorCalls.cs:52:9:52:34 | Before ... += ... | +| AccessorCalls.cs:52:9:52:35 | After ...; | AccessorCalls.cs:53:9:53:31 | ...; | | AccessorCalls.cs:52:24:52:27 | this access | AccessorCalls.cs:52:24:52:29 | access to field x | -| AccessorCalls.cs:52:24:52:29 | access to field x | AccessorCalls.cs:52:24:52:34 | access to property Prop | -| AccessorCalls.cs:52:24:52:34 | access to property Prop | AccessorCalls.cs:52:9:52:34 | ... += ... | +| AccessorCalls.cs:52:24:52:29 | After access to field x | AccessorCalls.cs:52:24:52:34 | access to property Prop | +| AccessorCalls.cs:52:24:52:29 | Before access to field x | AccessorCalls.cs:52:24:52:27 | this access | +| AccessorCalls.cs:52:24:52:29 | access to field x | AccessorCalls.cs:52:24:52:29 | After access to field x | +| AccessorCalls.cs:52:24:52:34 | After access to property Prop | AccessorCalls.cs:52:9:52:34 | ... += ... | +| AccessorCalls.cs:52:24:52:34 | Before access to property Prop | AccessorCalls.cs:52:24:52:29 | Before access to field x | +| AccessorCalls.cs:52:24:52:34 | access to property Prop | AccessorCalls.cs:52:24:52:34 | After access to property Prop | | AccessorCalls.cs:53:9:53:12 | this access | AccessorCalls.cs:53:9:53:14 | access to field x | -| AccessorCalls.cs:53:9:53:14 | access to field x | AccessorCalls.cs:53:16:53:16 | 0 | -| AccessorCalls.cs:53:9:53:17 | access to indexer | AccessorCalls.cs:53:22:53:25 | this access | -| AccessorCalls.cs:53:9:53:30 | ... += ... | AccessorCalls.cs:49:10:49:11 | exit M6 (normal) | -| AccessorCalls.cs:53:9:53:31 | ...; | AccessorCalls.cs:53:9:53:12 | this access | +| AccessorCalls.cs:53:9:53:14 | After access to field x | AccessorCalls.cs:53:16:53:16 | 0 | +| AccessorCalls.cs:53:9:53:14 | Before access to field x | AccessorCalls.cs:53:9:53:12 | this access | +| AccessorCalls.cs:53:9:53:14 | access to field x | AccessorCalls.cs:53:9:53:14 | After access to field x | +| AccessorCalls.cs:53:9:53:17 | After access to indexer | AccessorCalls.cs:53:22:53:30 | Before access to indexer | +| AccessorCalls.cs:53:9:53:17 | Before access to indexer | AccessorCalls.cs:53:9:53:14 | Before access to field x | +| AccessorCalls.cs:53:9:53:17 | access to indexer | AccessorCalls.cs:53:9:53:17 | After access to indexer | +| AccessorCalls.cs:53:9:53:30 | ... += ... | AccessorCalls.cs:53:9:53:30 | After ... += ... | +| AccessorCalls.cs:53:9:53:30 | After ... += ... | AccessorCalls.cs:53:9:53:31 | After ...; | +| AccessorCalls.cs:53:9:53:30 | Before ... += ... | AccessorCalls.cs:53:9:53:17 | Before access to indexer | +| AccessorCalls.cs:53:9:53:31 | ...; | AccessorCalls.cs:53:9:53:30 | Before ... += ... | +| AccessorCalls.cs:53:9:53:31 | After ...; | AccessorCalls.cs:50:5:54:5 | After {...} | | AccessorCalls.cs:53:16:53:16 | 0 | AccessorCalls.cs:53:9:53:17 | access to indexer | | AccessorCalls.cs:53:22:53:25 | this access | AccessorCalls.cs:53:22:53:27 | access to field x | -| AccessorCalls.cs:53:22:53:27 | access to field x | AccessorCalls.cs:53:29:53:29 | 0 | -| AccessorCalls.cs:53:22:53:30 | access to indexer | AccessorCalls.cs:53:9:53:30 | ... += ... | +| AccessorCalls.cs:53:22:53:27 | After access to field x | AccessorCalls.cs:53:29:53:29 | 0 | +| AccessorCalls.cs:53:22:53:27 | Before access to field x | AccessorCalls.cs:53:22:53:25 | this access | +| AccessorCalls.cs:53:22:53:27 | access to field x | AccessorCalls.cs:53:22:53:27 | After access to field x | +| AccessorCalls.cs:53:22:53:30 | After access to indexer | AccessorCalls.cs:53:9:53:30 | ... += ... | +| AccessorCalls.cs:53:22:53:30 | Before access to indexer | AccessorCalls.cs:53:22:53:27 | Before access to field x | +| AccessorCalls.cs:53:22:53:30 | access to indexer | AccessorCalls.cs:53:22:53:30 | After access to indexer | | AccessorCalls.cs:53:29:53:29 | 0 | AccessorCalls.cs:53:22:53:30 | access to indexer | -| AccessorCalls.cs:56:10:56:11 | enter M7 | AccessorCalls.cs:57:5:59:5 | {...} | -| AccessorCalls.cs:56:10:56:11 | exit M7 (normal) | AccessorCalls.cs:56:10:56:11 | exit M7 | +| AccessorCalls.cs:56:10:56:11 | Entry | AccessorCalls.cs:56:17:56:17 | i | +| AccessorCalls.cs:56:10:56:11 | Normal Exit | AccessorCalls.cs:56:10:56:11 | Exit | +| AccessorCalls.cs:56:17:56:17 | i | AccessorCalls.cs:57:5:59:5 | {...} | +| AccessorCalls.cs:57:5:59:5 | After {...} | AccessorCalls.cs:56:10:56:11 | Normal Exit | | AccessorCalls.cs:57:5:59:5 | {...} | AccessorCalls.cs:58:9:58:86 | ...; | -| AccessorCalls.cs:58:9:58:45 | (..., ...) | AccessorCalls.cs:58:50:58:53 | this access | -| AccessorCalls.cs:58:9:58:85 | ... = ... | AccessorCalls.cs:56:10:56:11 | exit M7 (normal) | -| AccessorCalls.cs:58:9:58:86 | ...; | AccessorCalls.cs:58:10:58:13 | this access | -| AccessorCalls.cs:58:10:58:13 | this access | AccessorCalls.cs:58:22:58:25 | this access | -| AccessorCalls.cs:58:10:58:19 | access to field Field | AccessorCalls.cs:58:22:58:30 | access to property Prop | -| AccessorCalls.cs:58:22:58:25 | this access | AccessorCalls.cs:58:37:58:40 | this access | -| AccessorCalls.cs:58:22:58:30 | access to property Prop | AccessorCalls.cs:58:37:58:43 | access to indexer | -| AccessorCalls.cs:58:33:58:44 | (..., ...) | AccessorCalls.cs:58:9:58:45 | (..., ...) | +| AccessorCalls.cs:58:9:58:45 | (..., ...) | AccessorCalls.cs:58:9:58:45 | After (..., ...) | +| AccessorCalls.cs:58:9:58:45 | After (..., ...) | AccessorCalls.cs:58:49:58:85 | Before (..., ...) | +| AccessorCalls.cs:58:9:58:45 | Before (..., ...) | AccessorCalls.cs:58:10:58:19 | Before access to field Field | +| AccessorCalls.cs:58:9:58:85 | ... = ... | AccessorCalls.cs:58:9:58:85 | After ... = ... | +| AccessorCalls.cs:58:9:58:85 | After ... = ... | AccessorCalls.cs:58:9:58:86 | After ...; | +| AccessorCalls.cs:58:9:58:85 | Before ... = ... | AccessorCalls.cs:58:9:58:45 | Before (..., ...) | +| AccessorCalls.cs:58:9:58:86 | ...; | AccessorCalls.cs:58:9:58:85 | Before ... = ... | +| AccessorCalls.cs:58:9:58:86 | After ...; | AccessorCalls.cs:57:5:59:5 | After {...} | +| AccessorCalls.cs:58:10:58:13 | this access | AccessorCalls.cs:58:10:58:19 | access to field Field | +| AccessorCalls.cs:58:10:58:19 | After access to field Field | AccessorCalls.cs:58:22:58:30 | Before access to property Prop | +| AccessorCalls.cs:58:10:58:19 | Before access to field Field | AccessorCalls.cs:58:10:58:13 | this access | +| AccessorCalls.cs:58:10:58:19 | access to field Field | AccessorCalls.cs:58:10:58:19 | After access to field Field | +| AccessorCalls.cs:58:22:58:25 | this access | AccessorCalls.cs:58:22:58:30 | access to property Prop | +| AccessorCalls.cs:58:22:58:30 | After access to property Prop | AccessorCalls.cs:58:33:58:44 | Before (..., ...) | +| AccessorCalls.cs:58:22:58:30 | Before access to property Prop | AccessorCalls.cs:58:22:58:25 | this access | +| AccessorCalls.cs:58:22:58:30 | access to property Prop | AccessorCalls.cs:58:22:58:30 | After access to property Prop | +| AccessorCalls.cs:58:33:58:44 | (..., ...) | AccessorCalls.cs:58:33:58:44 | After (..., ...) | +| AccessorCalls.cs:58:33:58:44 | After (..., ...) | AccessorCalls.cs:58:9:58:45 | (..., ...) | +| AccessorCalls.cs:58:33:58:44 | Before (..., ...) | AccessorCalls.cs:58:34:58:34 | access to parameter i | +| AccessorCalls.cs:58:34:58:34 | access to parameter i | AccessorCalls.cs:58:37:58:43 | Before access to indexer | | AccessorCalls.cs:58:37:58:40 | this access | AccessorCalls.cs:58:42:58:42 | 0 | -| AccessorCalls.cs:58:37:58:43 | access to indexer | AccessorCalls.cs:58:9:58:85 | ... = ... | -| AccessorCalls.cs:58:42:58:42 | 0 | AccessorCalls.cs:58:33:58:44 | (..., ...) | -| AccessorCalls.cs:58:49:58:85 | (..., ...) | AccessorCalls.cs:58:10:58:19 | access to field Field | +| AccessorCalls.cs:58:37:58:43 | After access to indexer | AccessorCalls.cs:58:33:58:44 | (..., ...) | +| AccessorCalls.cs:58:37:58:43 | Before access to indexer | AccessorCalls.cs:58:37:58:40 | this access | +| AccessorCalls.cs:58:37:58:43 | access to indexer | AccessorCalls.cs:58:37:58:43 | After access to indexer | +| AccessorCalls.cs:58:42:58:42 | 0 | AccessorCalls.cs:58:37:58:43 | access to indexer | +| AccessorCalls.cs:58:49:58:85 | (..., ...) | AccessorCalls.cs:58:49:58:85 | After (..., ...) | +| AccessorCalls.cs:58:49:58:85 | After (..., ...) | AccessorCalls.cs:58:9:58:85 | ... = ... | +| AccessorCalls.cs:58:49:58:85 | Before (..., ...) | AccessorCalls.cs:58:50:58:59 | Before access to field Field | | AccessorCalls.cs:58:50:58:53 | this access | AccessorCalls.cs:58:50:58:59 | access to field Field | -| AccessorCalls.cs:58:50:58:59 | access to field Field | AccessorCalls.cs:58:62:58:65 | this access | +| AccessorCalls.cs:58:50:58:59 | After access to field Field | AccessorCalls.cs:58:62:58:70 | Before access to property Prop | +| AccessorCalls.cs:58:50:58:59 | Before access to field Field | AccessorCalls.cs:58:50:58:53 | this access | +| AccessorCalls.cs:58:50:58:59 | access to field Field | AccessorCalls.cs:58:50:58:59 | After access to field Field | | AccessorCalls.cs:58:62:58:65 | this access | AccessorCalls.cs:58:62:58:70 | access to property Prop | -| AccessorCalls.cs:58:62:58:70 | access to property Prop | AccessorCalls.cs:58:74:58:74 | 0 | -| AccessorCalls.cs:58:73:58:84 | (..., ...) | AccessorCalls.cs:58:49:58:85 | (..., ...) | -| AccessorCalls.cs:58:74:58:74 | 0 | AccessorCalls.cs:58:77:58:80 | this access | +| AccessorCalls.cs:58:62:58:70 | After access to property Prop | AccessorCalls.cs:58:73:58:84 | Before (..., ...) | +| AccessorCalls.cs:58:62:58:70 | Before access to property Prop | AccessorCalls.cs:58:62:58:65 | this access | +| AccessorCalls.cs:58:62:58:70 | access to property Prop | AccessorCalls.cs:58:62:58:70 | After access to property Prop | +| AccessorCalls.cs:58:73:58:84 | (..., ...) | AccessorCalls.cs:58:73:58:84 | After (..., ...) | +| AccessorCalls.cs:58:73:58:84 | After (..., ...) | AccessorCalls.cs:58:49:58:85 | (..., ...) | +| AccessorCalls.cs:58:73:58:84 | Before (..., ...) | AccessorCalls.cs:58:74:58:74 | 0 | +| AccessorCalls.cs:58:74:58:74 | 0 | AccessorCalls.cs:58:77:58:83 | Before access to indexer | | AccessorCalls.cs:58:77:58:80 | this access | AccessorCalls.cs:58:82:58:82 | 1 | -| AccessorCalls.cs:58:77:58:83 | access to indexer | AccessorCalls.cs:58:73:58:84 | (..., ...) | +| AccessorCalls.cs:58:77:58:83 | After access to indexer | AccessorCalls.cs:58:73:58:84 | (..., ...) | +| AccessorCalls.cs:58:77:58:83 | Before access to indexer | AccessorCalls.cs:58:77:58:80 | this access | +| AccessorCalls.cs:58:77:58:83 | access to indexer | AccessorCalls.cs:58:77:58:83 | After access to indexer | | AccessorCalls.cs:58:82:58:82 | 1 | AccessorCalls.cs:58:77:58:83 | access to indexer | -| AccessorCalls.cs:61:10:61:11 | enter M8 | AccessorCalls.cs:62:5:64:5 | {...} | -| AccessorCalls.cs:61:10:61:11 | exit M8 (normal) | AccessorCalls.cs:61:10:61:11 | exit M8 | +| AccessorCalls.cs:61:10:61:11 | Entry | AccessorCalls.cs:61:17:61:17 | i | +| AccessorCalls.cs:61:10:61:11 | Normal Exit | AccessorCalls.cs:61:10:61:11 | Exit | +| AccessorCalls.cs:61:17:61:17 | i | AccessorCalls.cs:62:5:64:5 | {...} | +| AccessorCalls.cs:62:5:64:5 | After {...} | AccessorCalls.cs:61:10:61:11 | Normal Exit | | AccessorCalls.cs:62:5:64:5 | {...} | AccessorCalls.cs:63:9:63:98 | ...; | -| AccessorCalls.cs:63:9:63:51 | (..., ...) | AccessorCalls.cs:63:56:63:59 | this access | -| AccessorCalls.cs:63:9:63:97 | ... = ... | AccessorCalls.cs:61:10:61:11 | exit M8 (normal) | -| AccessorCalls.cs:63:9:63:98 | ...; | AccessorCalls.cs:63:10:63:13 | this access | +| AccessorCalls.cs:63:9:63:51 | (..., ...) | AccessorCalls.cs:63:9:63:51 | After (..., ...) | +| AccessorCalls.cs:63:9:63:51 | After (..., ...) | AccessorCalls.cs:63:55:63:97 | Before (..., ...) | +| AccessorCalls.cs:63:9:63:51 | Before (..., ...) | AccessorCalls.cs:63:10:63:21 | Before access to field Field | +| AccessorCalls.cs:63:9:63:97 | ... = ... | AccessorCalls.cs:63:9:63:97 | After ... = ... | +| AccessorCalls.cs:63:9:63:97 | After ... = ... | AccessorCalls.cs:63:9:63:98 | After ...; | +| AccessorCalls.cs:63:9:63:97 | Before ... = ... | AccessorCalls.cs:63:9:63:51 | Before (..., ...) | +| AccessorCalls.cs:63:9:63:98 | ...; | AccessorCalls.cs:63:9:63:97 | Before ... = ... | +| AccessorCalls.cs:63:9:63:98 | After ...; | AccessorCalls.cs:62:5:64:5 | After {...} | | AccessorCalls.cs:63:10:63:13 | this access | AccessorCalls.cs:63:10:63:15 | access to field x | -| AccessorCalls.cs:63:10:63:15 | access to field x | AccessorCalls.cs:63:24:63:27 | this access | -| AccessorCalls.cs:63:10:63:21 | access to field Field | AccessorCalls.cs:63:24:63:34 | access to property Prop | +| AccessorCalls.cs:63:10:63:15 | After access to field x | AccessorCalls.cs:63:10:63:21 | access to field Field | +| AccessorCalls.cs:63:10:63:15 | Before access to field x | AccessorCalls.cs:63:10:63:13 | this access | +| AccessorCalls.cs:63:10:63:15 | access to field x | AccessorCalls.cs:63:10:63:15 | After access to field x | +| AccessorCalls.cs:63:10:63:21 | After access to field Field | AccessorCalls.cs:63:24:63:34 | Before access to property Prop | +| AccessorCalls.cs:63:10:63:21 | Before access to field Field | AccessorCalls.cs:63:10:63:15 | Before access to field x | +| AccessorCalls.cs:63:10:63:21 | access to field Field | AccessorCalls.cs:63:10:63:21 | After access to field Field | | AccessorCalls.cs:63:24:63:27 | this access | AccessorCalls.cs:63:24:63:29 | access to field x | -| AccessorCalls.cs:63:24:63:29 | access to field x | AccessorCalls.cs:63:41:63:44 | this access | -| AccessorCalls.cs:63:24:63:34 | access to property Prop | AccessorCalls.cs:63:41:63:49 | access to indexer | -| AccessorCalls.cs:63:37:63:50 | (..., ...) | AccessorCalls.cs:63:9:63:51 | (..., ...) | +| AccessorCalls.cs:63:24:63:29 | After access to field x | AccessorCalls.cs:63:24:63:34 | access to property Prop | +| AccessorCalls.cs:63:24:63:29 | Before access to field x | AccessorCalls.cs:63:24:63:27 | this access | +| AccessorCalls.cs:63:24:63:29 | access to field x | AccessorCalls.cs:63:24:63:29 | After access to field x | +| AccessorCalls.cs:63:24:63:34 | After access to property Prop | AccessorCalls.cs:63:37:63:50 | Before (..., ...) | +| AccessorCalls.cs:63:24:63:34 | Before access to property Prop | AccessorCalls.cs:63:24:63:29 | Before access to field x | +| AccessorCalls.cs:63:24:63:34 | access to property Prop | AccessorCalls.cs:63:24:63:34 | After access to property Prop | +| AccessorCalls.cs:63:37:63:50 | (..., ...) | AccessorCalls.cs:63:37:63:50 | After (..., ...) | +| AccessorCalls.cs:63:37:63:50 | After (..., ...) | AccessorCalls.cs:63:9:63:51 | (..., ...) | +| AccessorCalls.cs:63:37:63:50 | Before (..., ...) | AccessorCalls.cs:63:38:63:38 | access to parameter i | +| AccessorCalls.cs:63:38:63:38 | access to parameter i | AccessorCalls.cs:63:41:63:49 | Before access to indexer | | AccessorCalls.cs:63:41:63:44 | this access | AccessorCalls.cs:63:41:63:46 | access to field x | -| AccessorCalls.cs:63:41:63:46 | access to field x | AccessorCalls.cs:63:48:63:48 | 0 | -| AccessorCalls.cs:63:41:63:49 | access to indexer | AccessorCalls.cs:63:9:63:97 | ... = ... | -| AccessorCalls.cs:63:48:63:48 | 0 | AccessorCalls.cs:63:37:63:50 | (..., ...) | -| AccessorCalls.cs:63:55:63:97 | (..., ...) | AccessorCalls.cs:63:10:63:21 | access to field Field | +| AccessorCalls.cs:63:41:63:46 | After access to field x | AccessorCalls.cs:63:48:63:48 | 0 | +| AccessorCalls.cs:63:41:63:46 | Before access to field x | AccessorCalls.cs:63:41:63:44 | this access | +| AccessorCalls.cs:63:41:63:46 | access to field x | AccessorCalls.cs:63:41:63:46 | After access to field x | +| AccessorCalls.cs:63:41:63:49 | After access to indexer | AccessorCalls.cs:63:37:63:50 | (..., ...) | +| AccessorCalls.cs:63:41:63:49 | Before access to indexer | AccessorCalls.cs:63:41:63:46 | Before access to field x | +| AccessorCalls.cs:63:41:63:49 | access to indexer | AccessorCalls.cs:63:41:63:49 | After access to indexer | +| AccessorCalls.cs:63:48:63:48 | 0 | AccessorCalls.cs:63:41:63:49 | access to indexer | +| AccessorCalls.cs:63:55:63:97 | (..., ...) | AccessorCalls.cs:63:55:63:97 | After (..., ...) | +| AccessorCalls.cs:63:55:63:97 | After (..., ...) | AccessorCalls.cs:63:9:63:97 | ... = ... | +| AccessorCalls.cs:63:55:63:97 | Before (..., ...) | AccessorCalls.cs:63:56:63:67 | Before access to field Field | | AccessorCalls.cs:63:56:63:59 | this access | AccessorCalls.cs:63:56:63:61 | access to field x | -| AccessorCalls.cs:63:56:63:61 | access to field x | AccessorCalls.cs:63:56:63:67 | access to field Field | -| AccessorCalls.cs:63:56:63:67 | access to field Field | AccessorCalls.cs:63:70:63:73 | this access | +| AccessorCalls.cs:63:56:63:61 | After access to field x | AccessorCalls.cs:63:56:63:67 | access to field Field | +| AccessorCalls.cs:63:56:63:61 | Before access to field x | AccessorCalls.cs:63:56:63:59 | this access | +| AccessorCalls.cs:63:56:63:61 | access to field x | AccessorCalls.cs:63:56:63:61 | After access to field x | +| AccessorCalls.cs:63:56:63:67 | After access to field Field | AccessorCalls.cs:63:70:63:80 | Before access to property Prop | +| AccessorCalls.cs:63:56:63:67 | Before access to field Field | AccessorCalls.cs:63:56:63:61 | Before access to field x | +| AccessorCalls.cs:63:56:63:67 | access to field Field | AccessorCalls.cs:63:56:63:67 | After access to field Field | | AccessorCalls.cs:63:70:63:73 | this access | AccessorCalls.cs:63:70:63:75 | access to field x | -| AccessorCalls.cs:63:70:63:75 | access to field x | AccessorCalls.cs:63:70:63:80 | access to property Prop | -| AccessorCalls.cs:63:70:63:80 | access to property Prop | AccessorCalls.cs:63:84:63:84 | 0 | -| AccessorCalls.cs:63:83:63:96 | (..., ...) | AccessorCalls.cs:63:55:63:97 | (..., ...) | -| AccessorCalls.cs:63:84:63:84 | 0 | AccessorCalls.cs:63:87:63:90 | this access | +| AccessorCalls.cs:63:70:63:75 | After access to field x | AccessorCalls.cs:63:70:63:80 | access to property Prop | +| AccessorCalls.cs:63:70:63:75 | Before access to field x | AccessorCalls.cs:63:70:63:73 | this access | +| AccessorCalls.cs:63:70:63:75 | access to field x | AccessorCalls.cs:63:70:63:75 | After access to field x | +| AccessorCalls.cs:63:70:63:80 | After access to property Prop | AccessorCalls.cs:63:83:63:96 | Before (..., ...) | +| AccessorCalls.cs:63:70:63:80 | Before access to property Prop | AccessorCalls.cs:63:70:63:75 | Before access to field x | +| AccessorCalls.cs:63:70:63:80 | access to property Prop | AccessorCalls.cs:63:70:63:80 | After access to property Prop | +| AccessorCalls.cs:63:83:63:96 | (..., ...) | AccessorCalls.cs:63:83:63:96 | After (..., ...) | +| AccessorCalls.cs:63:83:63:96 | After (..., ...) | AccessorCalls.cs:63:55:63:97 | (..., ...) | +| AccessorCalls.cs:63:83:63:96 | Before (..., ...) | AccessorCalls.cs:63:84:63:84 | 0 | +| AccessorCalls.cs:63:84:63:84 | 0 | AccessorCalls.cs:63:87:63:95 | Before access to indexer | | AccessorCalls.cs:63:87:63:90 | this access | AccessorCalls.cs:63:87:63:92 | access to field x | -| AccessorCalls.cs:63:87:63:92 | access to field x | AccessorCalls.cs:63:94:63:94 | 1 | -| AccessorCalls.cs:63:87:63:95 | access to indexer | AccessorCalls.cs:63:83:63:96 | (..., ...) | +| AccessorCalls.cs:63:87:63:92 | After access to field x | AccessorCalls.cs:63:94:63:94 | 1 | +| AccessorCalls.cs:63:87:63:92 | Before access to field x | AccessorCalls.cs:63:87:63:90 | this access | +| AccessorCalls.cs:63:87:63:92 | access to field x | AccessorCalls.cs:63:87:63:92 | After access to field x | +| AccessorCalls.cs:63:87:63:95 | After access to indexer | AccessorCalls.cs:63:83:63:96 | (..., ...) | +| AccessorCalls.cs:63:87:63:95 | Before access to indexer | AccessorCalls.cs:63:87:63:92 | Before access to field x | +| AccessorCalls.cs:63:87:63:95 | access to indexer | AccessorCalls.cs:63:87:63:95 | After access to indexer | | AccessorCalls.cs:63:94:63:94 | 1 | AccessorCalls.cs:63:87:63:95 | access to indexer | -| AccessorCalls.cs:66:10:66:11 | enter M9 | AccessorCalls.cs:67:5:74:5 | {...} | -| AccessorCalls.cs:66:10:66:11 | exit M9 (normal) | AccessorCalls.cs:66:10:66:11 | exit M9 | +| AccessorCalls.cs:66:10:66:11 | Entry | AccessorCalls.cs:66:20:66:20 | o | +| AccessorCalls.cs:66:10:66:11 | Normal Exit | AccessorCalls.cs:66:10:66:11 | Exit | +| AccessorCalls.cs:66:20:66:20 | o | AccessorCalls.cs:66:27:66:27 | i | +| AccessorCalls.cs:66:27:66:27 | i | AccessorCalls.cs:66:43:66:43 | e | +| AccessorCalls.cs:66:43:66:43 | e | AccessorCalls.cs:67:5:74:5 | {...} | +| AccessorCalls.cs:67:5:74:5 | After {...} | AccessorCalls.cs:66:10:66:11 | Normal Exit | | AccessorCalls.cs:67:5:74:5 | {...} | AccessorCalls.cs:68:9:68:22 | ... ...; | -| AccessorCalls.cs:68:9:68:22 | ... ...; | AccessorCalls.cs:68:21:68:21 | access to parameter o | -| AccessorCalls.cs:68:17:68:21 | dynamic d = ... | AccessorCalls.cs:69:9:69:36 | ...; | +| AccessorCalls.cs:68:9:68:22 | ... ...; | AccessorCalls.cs:68:17:68:21 | Before dynamic d = ... | +| AccessorCalls.cs:68:9:68:22 | After ... ...; | AccessorCalls.cs:69:9:69:36 | ...; | +| AccessorCalls.cs:68:17:68:17 | access to local variable d | AccessorCalls.cs:68:21:68:21 | access to parameter o | +| AccessorCalls.cs:68:17:68:21 | After dynamic d = ... | AccessorCalls.cs:68:9:68:22 | After ... ...; | +| AccessorCalls.cs:68:17:68:21 | Before dynamic d = ... | AccessorCalls.cs:68:17:68:17 | access to local variable d | +| AccessorCalls.cs:68:17:68:21 | dynamic d = ... | AccessorCalls.cs:68:17:68:21 | After dynamic d = ... | | AccessorCalls.cs:68:21:68:21 | access to parameter o | AccessorCalls.cs:68:17:68:21 | dynamic d = ... | -| AccessorCalls.cs:69:9:69:9 | access to local variable d | AccessorCalls.cs:69:24:69:24 | access to local variable d | -| AccessorCalls.cs:69:9:69:20 | dynamic access to member MaybeProp1 | AccessorCalls.cs:69:9:69:35 | ... = ... | -| AccessorCalls.cs:69:9:69:35 | ... = ... | AccessorCalls.cs:70:9:70:22 | ...; | -| AccessorCalls.cs:69:9:69:36 | ...; | AccessorCalls.cs:69:9:69:9 | access to local variable d | +| AccessorCalls.cs:69:9:69:9 | access to local variable d | AccessorCalls.cs:69:9:69:20 | dynamic access to member MaybeProp1 | +| AccessorCalls.cs:69:9:69:20 | After dynamic access to member MaybeProp1 | AccessorCalls.cs:69:24:69:35 | Before dynamic access to member MaybeProp2 | +| AccessorCalls.cs:69:9:69:20 | Before dynamic access to member MaybeProp1 | AccessorCalls.cs:69:9:69:9 | access to local variable d | +| AccessorCalls.cs:69:9:69:20 | dynamic access to member MaybeProp1 | AccessorCalls.cs:69:9:69:20 | After dynamic access to member MaybeProp1 | +| AccessorCalls.cs:69:9:69:35 | ... = ... | AccessorCalls.cs:69:9:69:35 | After ... = ... | +| AccessorCalls.cs:69:9:69:35 | After ... = ... | AccessorCalls.cs:69:9:69:36 | After ...; | +| AccessorCalls.cs:69:9:69:35 | Before ... = ... | AccessorCalls.cs:69:9:69:20 | Before dynamic access to member MaybeProp1 | +| AccessorCalls.cs:69:9:69:36 | ...; | AccessorCalls.cs:69:9:69:35 | Before ... = ... | +| AccessorCalls.cs:69:9:69:36 | After ...; | AccessorCalls.cs:70:9:70:22 | ...; | | AccessorCalls.cs:69:24:69:24 | access to local variable d | AccessorCalls.cs:69:24:69:35 | dynamic access to member MaybeProp2 | -| AccessorCalls.cs:69:24:69:35 | dynamic access to member MaybeProp2 | AccessorCalls.cs:69:9:69:20 | dynamic access to member MaybeProp1 | +| AccessorCalls.cs:69:24:69:35 | After dynamic access to member MaybeProp2 | AccessorCalls.cs:69:9:69:35 | ... = ... | +| AccessorCalls.cs:69:24:69:35 | Before dynamic access to member MaybeProp2 | AccessorCalls.cs:69:24:69:24 | access to local variable d | +| AccessorCalls.cs:69:24:69:35 | dynamic access to member MaybeProp2 | AccessorCalls.cs:69:24:69:35 | After dynamic access to member MaybeProp2 | | AccessorCalls.cs:70:9:70:9 | access to local variable d | AccessorCalls.cs:70:9:70:19 | dynamic access to member MaybeProp | -| AccessorCalls.cs:70:9:70:19 | dynamic access to member MaybeProp | AccessorCalls.cs:70:9:70:21 | dynamic call to operator ++ | -| AccessorCalls.cs:70:9:70:21 | dynamic call to operator ++ | AccessorCalls.cs:71:9:71:26 | ...; | -| AccessorCalls.cs:70:9:70:22 | ...; | AccessorCalls.cs:70:9:70:9 | access to local variable d | +| AccessorCalls.cs:70:9:70:19 | After dynamic access to member MaybeProp | AccessorCalls.cs:70:9:70:21 | dynamic call to operator ++ | +| AccessorCalls.cs:70:9:70:19 | Before dynamic access to member MaybeProp | AccessorCalls.cs:70:9:70:9 | access to local variable d | +| AccessorCalls.cs:70:9:70:19 | dynamic access to member MaybeProp | AccessorCalls.cs:70:9:70:19 | After dynamic access to member MaybeProp | +| AccessorCalls.cs:70:9:70:21 | After dynamic call to operator ++ | AccessorCalls.cs:70:9:70:22 | After ...; | +| AccessorCalls.cs:70:9:70:21 | Before dynamic call to operator ++ | AccessorCalls.cs:70:9:70:19 | Before dynamic access to member MaybeProp | +| AccessorCalls.cs:70:9:70:21 | dynamic call to operator ++ | AccessorCalls.cs:70:9:70:21 | After dynamic call to operator ++ | +| AccessorCalls.cs:70:9:70:22 | ...; | AccessorCalls.cs:70:9:70:21 | Before dynamic call to operator ++ | +| AccessorCalls.cs:70:9:70:22 | After ...; | AccessorCalls.cs:71:9:71:26 | ...; | | AccessorCalls.cs:71:9:71:9 | access to local variable d | AccessorCalls.cs:71:9:71:20 | dynamic access to member MaybeEvent | -| AccessorCalls.cs:71:9:71:20 | dynamic access to member MaybeEvent | AccessorCalls.cs:71:25:71:25 | access to parameter e | -| AccessorCalls.cs:71:9:71:25 | ... += ... | AccessorCalls.cs:72:9:72:21 | ...; | -| AccessorCalls.cs:71:9:71:26 | ...; | AccessorCalls.cs:71:9:71:9 | access to local variable d | +| AccessorCalls.cs:71:9:71:20 | After dynamic access to member MaybeEvent | AccessorCalls.cs:71:25:71:25 | access to parameter e | +| AccessorCalls.cs:71:9:71:20 | Before dynamic access to member MaybeEvent | AccessorCalls.cs:71:9:71:9 | access to local variable d | +| AccessorCalls.cs:71:9:71:20 | dynamic access to member MaybeEvent | AccessorCalls.cs:71:9:71:20 | After dynamic access to member MaybeEvent | +| AccessorCalls.cs:71:9:71:25 | ... += ... | AccessorCalls.cs:71:9:71:25 | After ... += ... | +| AccessorCalls.cs:71:9:71:25 | After ... += ... | AccessorCalls.cs:71:9:71:26 | After ...; | +| AccessorCalls.cs:71:9:71:25 | Before ... += ... | AccessorCalls.cs:71:9:71:20 | Before dynamic access to member MaybeEvent | +| AccessorCalls.cs:71:9:71:26 | ...; | AccessorCalls.cs:71:9:71:25 | Before ... += ... | +| AccessorCalls.cs:71:9:71:26 | After ...; | AccessorCalls.cs:72:9:72:21 | ...; | | AccessorCalls.cs:71:25:71:25 | access to parameter e | AccessorCalls.cs:71:9:71:25 | ... += ... | | AccessorCalls.cs:72:9:72:9 | access to local variable d | AccessorCalls.cs:72:11:72:11 | 0 | -| AccessorCalls.cs:72:9:72:12 | dynamic access to element | AccessorCalls.cs:72:17:72:17 | access to local variable d | -| AccessorCalls.cs:72:9:72:20 | ... += ... | AccessorCalls.cs:73:9:73:84 | ...; | -| AccessorCalls.cs:72:9:72:21 | ...; | AccessorCalls.cs:72:9:72:9 | access to local variable d | +| AccessorCalls.cs:72:9:72:12 | After dynamic access to element | AccessorCalls.cs:72:17:72:20 | Before dynamic access to element | +| AccessorCalls.cs:72:9:72:12 | Before dynamic access to element | AccessorCalls.cs:72:9:72:9 | access to local variable d | +| AccessorCalls.cs:72:9:72:12 | dynamic access to element | AccessorCalls.cs:72:9:72:12 | After dynamic access to element | +| AccessorCalls.cs:72:9:72:20 | ... += ... | AccessorCalls.cs:72:9:72:20 | After ... += ... | +| AccessorCalls.cs:72:9:72:20 | After ... += ... | AccessorCalls.cs:72:9:72:21 | After ...; | +| AccessorCalls.cs:72:9:72:20 | Before ... += ... | AccessorCalls.cs:72:9:72:12 | Before dynamic access to element | +| AccessorCalls.cs:72:9:72:21 | ...; | AccessorCalls.cs:72:9:72:20 | Before ... += ... | +| AccessorCalls.cs:72:9:72:21 | After ...; | AccessorCalls.cs:73:9:73:84 | ...; | | AccessorCalls.cs:72:11:72:11 | 0 | AccessorCalls.cs:72:9:72:12 | dynamic access to element | | AccessorCalls.cs:72:17:72:17 | access to local variable d | AccessorCalls.cs:72:19:72:19 | 1 | -| AccessorCalls.cs:72:17:72:20 | dynamic access to element | AccessorCalls.cs:72:9:72:20 | ... += ... | +| AccessorCalls.cs:72:17:72:20 | After dynamic access to element | AccessorCalls.cs:72:9:72:20 | ... += ... | +| AccessorCalls.cs:72:17:72:20 | Before dynamic access to element | AccessorCalls.cs:72:17:72:17 | access to local variable d | +| AccessorCalls.cs:72:17:72:20 | dynamic access to element | AccessorCalls.cs:72:17:72:20 | After dynamic access to element | | AccessorCalls.cs:72:19:72:19 | 1 | AccessorCalls.cs:72:17:72:20 | dynamic access to element | -| AccessorCalls.cs:73:9:73:44 | (..., ...) | AccessorCalls.cs:73:49:73:49 | access to local variable d | -| AccessorCalls.cs:73:9:73:83 | ... = ... | AccessorCalls.cs:66:10:66:11 | exit M9 (normal) | -| AccessorCalls.cs:73:9:73:84 | ...; | AccessorCalls.cs:73:10:73:10 | access to local variable d | -| AccessorCalls.cs:73:10:73:10 | access to local variable d | AccessorCalls.cs:73:24:73:27 | this access | -| AccessorCalls.cs:73:10:73:21 | dynamic access to member MaybeProp1 | AccessorCalls.cs:73:24:73:32 | access to property Prop | -| AccessorCalls.cs:73:24:73:27 | this access | AccessorCalls.cs:73:39:73:39 | access to local variable d | -| AccessorCalls.cs:73:24:73:32 | access to property Prop | AccessorCalls.cs:73:39:73:42 | dynamic access to element | -| AccessorCalls.cs:73:35:73:43 | (..., ...) | AccessorCalls.cs:73:9:73:44 | (..., ...) | +| AccessorCalls.cs:73:9:73:44 | (..., ...) | AccessorCalls.cs:73:9:73:44 | After (..., ...) | +| AccessorCalls.cs:73:9:73:44 | After (..., ...) | AccessorCalls.cs:73:48:73:83 | Before (..., ...) | +| AccessorCalls.cs:73:9:73:44 | Before (..., ...) | AccessorCalls.cs:73:10:73:21 | Before dynamic access to member MaybeProp1 | +| AccessorCalls.cs:73:9:73:83 | ... = ... | AccessorCalls.cs:73:9:73:83 | After ... = ... | +| AccessorCalls.cs:73:9:73:83 | After ... = ... | AccessorCalls.cs:73:9:73:84 | After ...; | +| AccessorCalls.cs:73:9:73:83 | Before ... = ... | AccessorCalls.cs:73:9:73:44 | Before (..., ...) | +| AccessorCalls.cs:73:9:73:84 | ...; | AccessorCalls.cs:73:9:73:83 | Before ... = ... | +| AccessorCalls.cs:73:9:73:84 | After ...; | AccessorCalls.cs:67:5:74:5 | After {...} | +| AccessorCalls.cs:73:10:73:10 | access to local variable d | AccessorCalls.cs:73:10:73:21 | dynamic access to member MaybeProp1 | +| AccessorCalls.cs:73:10:73:21 | After dynamic access to member MaybeProp1 | AccessorCalls.cs:73:24:73:32 | Before access to property Prop | +| AccessorCalls.cs:73:10:73:21 | Before dynamic access to member MaybeProp1 | AccessorCalls.cs:73:10:73:10 | access to local variable d | +| AccessorCalls.cs:73:10:73:21 | dynamic access to member MaybeProp1 | AccessorCalls.cs:73:10:73:21 | After dynamic access to member MaybeProp1 | +| AccessorCalls.cs:73:24:73:27 | this access | AccessorCalls.cs:73:24:73:32 | access to property Prop | +| AccessorCalls.cs:73:24:73:32 | After access to property Prop | AccessorCalls.cs:73:35:73:43 | Before (..., ...) | +| AccessorCalls.cs:73:24:73:32 | Before access to property Prop | AccessorCalls.cs:73:24:73:27 | this access | +| AccessorCalls.cs:73:24:73:32 | access to property Prop | AccessorCalls.cs:73:24:73:32 | After access to property Prop | +| AccessorCalls.cs:73:35:73:43 | (..., ...) | AccessorCalls.cs:73:35:73:43 | After (..., ...) | +| AccessorCalls.cs:73:35:73:43 | After (..., ...) | AccessorCalls.cs:73:9:73:44 | (..., ...) | +| AccessorCalls.cs:73:35:73:43 | Before (..., ...) | AccessorCalls.cs:73:36:73:36 | access to parameter i | +| AccessorCalls.cs:73:36:73:36 | access to parameter i | AccessorCalls.cs:73:39:73:42 | Before dynamic access to element | | AccessorCalls.cs:73:39:73:39 | access to local variable d | AccessorCalls.cs:73:41:73:41 | 0 | -| AccessorCalls.cs:73:39:73:42 | dynamic access to element | AccessorCalls.cs:73:9:73:83 | ... = ... | -| AccessorCalls.cs:73:41:73:41 | 0 | AccessorCalls.cs:73:35:73:43 | (..., ...) | -| AccessorCalls.cs:73:48:73:83 | (..., ...) | AccessorCalls.cs:73:10:73:21 | dynamic access to member MaybeProp1 | +| AccessorCalls.cs:73:39:73:42 | After dynamic access to element | AccessorCalls.cs:73:35:73:43 | (..., ...) | +| AccessorCalls.cs:73:39:73:42 | Before dynamic access to element | AccessorCalls.cs:73:39:73:39 | access to local variable d | +| AccessorCalls.cs:73:39:73:42 | dynamic access to element | AccessorCalls.cs:73:39:73:42 | After dynamic access to element | +| AccessorCalls.cs:73:41:73:41 | 0 | AccessorCalls.cs:73:39:73:42 | dynamic access to element | +| AccessorCalls.cs:73:48:73:83 | (..., ...) | AccessorCalls.cs:73:48:73:83 | After (..., ...) | +| AccessorCalls.cs:73:48:73:83 | After (..., ...) | AccessorCalls.cs:73:9:73:83 | ... = ... | +| AccessorCalls.cs:73:48:73:83 | Before (..., ...) | AccessorCalls.cs:73:49:73:60 | Before dynamic access to member MaybeProp1 | | AccessorCalls.cs:73:49:73:49 | access to local variable d | AccessorCalls.cs:73:49:73:60 | dynamic access to member MaybeProp1 | -| AccessorCalls.cs:73:49:73:60 | dynamic access to member MaybeProp1 | AccessorCalls.cs:73:63:73:66 | this access | +| AccessorCalls.cs:73:49:73:60 | After dynamic access to member MaybeProp1 | AccessorCalls.cs:73:63:73:71 | Before access to property Prop | +| AccessorCalls.cs:73:49:73:60 | Before dynamic access to member MaybeProp1 | AccessorCalls.cs:73:49:73:49 | access to local variable d | +| AccessorCalls.cs:73:49:73:60 | dynamic access to member MaybeProp1 | AccessorCalls.cs:73:49:73:60 | After dynamic access to member MaybeProp1 | | AccessorCalls.cs:73:63:73:66 | this access | AccessorCalls.cs:73:63:73:71 | access to property Prop | -| AccessorCalls.cs:73:63:73:71 | access to property Prop | AccessorCalls.cs:73:75:73:75 | 0 | -| AccessorCalls.cs:73:74:73:82 | (..., ...) | AccessorCalls.cs:73:48:73:83 | (..., ...) | -| AccessorCalls.cs:73:75:73:75 | 0 | AccessorCalls.cs:73:78:73:78 | access to local variable d | +| AccessorCalls.cs:73:63:73:71 | After access to property Prop | AccessorCalls.cs:73:74:73:82 | Before (..., ...) | +| AccessorCalls.cs:73:63:73:71 | Before access to property Prop | AccessorCalls.cs:73:63:73:66 | this access | +| AccessorCalls.cs:73:63:73:71 | access to property Prop | AccessorCalls.cs:73:63:73:71 | After access to property Prop | +| AccessorCalls.cs:73:74:73:82 | (..., ...) | AccessorCalls.cs:73:74:73:82 | After (..., ...) | +| AccessorCalls.cs:73:74:73:82 | After (..., ...) | AccessorCalls.cs:73:48:73:83 | (..., ...) | +| AccessorCalls.cs:73:74:73:82 | Before (..., ...) | AccessorCalls.cs:73:75:73:75 | 0 | +| AccessorCalls.cs:73:75:73:75 | 0 | AccessorCalls.cs:73:78:73:81 | Before dynamic access to element | | AccessorCalls.cs:73:78:73:78 | access to local variable d | AccessorCalls.cs:73:80:73:80 | 1 | -| AccessorCalls.cs:73:78:73:81 | dynamic access to element | AccessorCalls.cs:73:74:73:82 | (..., ...) | +| AccessorCalls.cs:73:78:73:81 | After dynamic access to element | AccessorCalls.cs:73:74:73:82 | (..., ...) | +| AccessorCalls.cs:73:78:73:81 | Before dynamic access to element | AccessorCalls.cs:73:78:73:78 | access to local variable d | +| AccessorCalls.cs:73:78:73:81 | dynamic access to element | AccessorCalls.cs:73:78:73:81 | After dynamic access to element | | AccessorCalls.cs:73:80:73:80 | 1 | AccessorCalls.cs:73:78:73:81 | dynamic access to element | -| ArrayCreation.cs:1:7:1:19 | call to constructor Object | ArrayCreation.cs:1:7:1:19 | {...} | -| ArrayCreation.cs:1:7:1:19 | call to method | ArrayCreation.cs:1:7:1:19 | call to constructor Object | -| ArrayCreation.cs:1:7:1:19 | enter ArrayCreation | ArrayCreation.cs:1:7:1:19 | this access | -| ArrayCreation.cs:1:7:1:19 | exit ArrayCreation (normal) | ArrayCreation.cs:1:7:1:19 | exit ArrayCreation | +| ArrayCreation.cs:1:7:1:19 | After call to constructor Object | ArrayCreation.cs:1:7:1:19 | {...} | +| ArrayCreation.cs:1:7:1:19 | After call to method | ArrayCreation.cs:1:7:1:19 | Before call to constructor Object | +| ArrayCreation.cs:1:7:1:19 | Before call to constructor Object | ArrayCreation.cs:1:7:1:19 | call to constructor Object | +| ArrayCreation.cs:1:7:1:19 | Before call to method | ArrayCreation.cs:1:7:1:19 | this access | +| ArrayCreation.cs:1:7:1:19 | Entry | ArrayCreation.cs:1:7:1:19 | Before call to method | +| ArrayCreation.cs:1:7:1:19 | Normal Exit | ArrayCreation.cs:1:7:1:19 | Exit | +| ArrayCreation.cs:1:7:1:19 | call to constructor Object | ArrayCreation.cs:1:7:1:19 | After call to constructor Object | +| ArrayCreation.cs:1:7:1:19 | call to method | ArrayCreation.cs:1:7:1:19 | After call to method | | ArrayCreation.cs:1:7:1:19 | this access | ArrayCreation.cs:1:7:1:19 | call to method | -| ArrayCreation.cs:1:7:1:19 | {...} | ArrayCreation.cs:1:7:1:19 | exit ArrayCreation (normal) | -| ArrayCreation.cs:3:11:3:12 | enter M1 | ArrayCreation.cs:3:27:3:27 | 0 | -| ArrayCreation.cs:3:11:3:12 | exit M1 (normal) | ArrayCreation.cs:3:11:3:12 | exit M1 | -| ArrayCreation.cs:3:19:3:28 | array creation of type Int32[] | ArrayCreation.cs:3:11:3:12 | exit M1 (normal) | +| ArrayCreation.cs:1:7:1:19 | {...} | ArrayCreation.cs:1:7:1:19 | Normal Exit | +| ArrayCreation.cs:3:11:3:12 | Entry | ArrayCreation.cs:3:19:3:28 | Before array creation of type Int32[] | +| ArrayCreation.cs:3:11:3:12 | Normal Exit | ArrayCreation.cs:3:11:3:12 | Exit | +| ArrayCreation.cs:3:19:3:28 | After array creation of type Int32[] | ArrayCreation.cs:3:11:3:12 | Normal Exit | +| ArrayCreation.cs:3:19:3:28 | Before array creation of type Int32[] | ArrayCreation.cs:3:27:3:27 | 0 | +| ArrayCreation.cs:3:19:3:28 | array creation of type Int32[] | ArrayCreation.cs:3:19:3:28 | After array creation of type Int32[] | | ArrayCreation.cs:3:27:3:27 | 0 | ArrayCreation.cs:3:19:3:28 | array creation of type Int32[] | -| ArrayCreation.cs:5:12:5:13 | enter M2 | ArrayCreation.cs:5:28:5:28 | 0 | -| ArrayCreation.cs:5:12:5:13 | exit M2 (normal) | ArrayCreation.cs:5:12:5:13 | exit M2 | -| ArrayCreation.cs:5:20:5:32 | array creation of type Int32[,] | ArrayCreation.cs:5:12:5:13 | exit M2 (normal) | +| ArrayCreation.cs:5:12:5:13 | Entry | ArrayCreation.cs:5:20:5:32 | Before array creation of type Int32[,] | +| ArrayCreation.cs:5:12:5:13 | Normal Exit | ArrayCreation.cs:5:12:5:13 | Exit | +| ArrayCreation.cs:5:20:5:32 | After array creation of type Int32[,] | ArrayCreation.cs:5:12:5:13 | Normal Exit | +| ArrayCreation.cs:5:20:5:32 | Before array creation of type Int32[,] | ArrayCreation.cs:5:28:5:28 | 0 | +| ArrayCreation.cs:5:20:5:32 | array creation of type Int32[,] | ArrayCreation.cs:5:20:5:32 | After array creation of type Int32[,] | | ArrayCreation.cs:5:28:5:28 | 0 | ArrayCreation.cs:5:31:5:31 | 1 | | ArrayCreation.cs:5:31:5:31 | 1 | ArrayCreation.cs:5:20:5:32 | array creation of type Int32[,] | -| ArrayCreation.cs:7:11:7:12 | enter M3 | ArrayCreation.cs:7:19:7:36 | 2 | -| ArrayCreation.cs:7:11:7:12 | exit M3 (normal) | ArrayCreation.cs:7:11:7:12 | exit M3 | +| ArrayCreation.cs:7:11:7:12 | Entry | ArrayCreation.cs:7:19:7:36 | Before array creation of type Int32[] | +| ArrayCreation.cs:7:11:7:12 | Normal Exit | ArrayCreation.cs:7:11:7:12 | Exit | | ArrayCreation.cs:7:19:7:36 | 2 | ArrayCreation.cs:7:19:7:36 | array creation of type Int32[] | -| ArrayCreation.cs:7:19:7:36 | array creation of type Int32[] | ArrayCreation.cs:7:31:7:31 | 0 | -| ArrayCreation.cs:7:29:7:36 | { ..., ... } | ArrayCreation.cs:7:11:7:12 | exit M3 (normal) | +| ArrayCreation.cs:7:19:7:36 | After array creation of type Int32[] | ArrayCreation.cs:7:11:7:12 | Normal Exit | +| ArrayCreation.cs:7:19:7:36 | Before array creation of type Int32[] | ArrayCreation.cs:7:29:7:36 | Before { ..., ... } | +| ArrayCreation.cs:7:19:7:36 | array creation of type Int32[] | ArrayCreation.cs:7:19:7:36 | After array creation of type Int32[] | +| ArrayCreation.cs:7:29:7:36 | After { ..., ... } | ArrayCreation.cs:7:19:7:36 | 2 | +| ArrayCreation.cs:7:29:7:36 | Before { ..., ... } | ArrayCreation.cs:7:31:7:31 | 0 | +| ArrayCreation.cs:7:29:7:36 | { ..., ... } | ArrayCreation.cs:7:29:7:36 | After { ..., ... } | | ArrayCreation.cs:7:31:7:31 | 0 | ArrayCreation.cs:7:34:7:34 | 1 | | ArrayCreation.cs:7:34:7:34 | 1 | ArrayCreation.cs:7:29:7:36 | { ..., ... } | -| ArrayCreation.cs:9:12:9:13 | enter M4 | ArrayCreation.cs:9:20:9:52 | 2 | -| ArrayCreation.cs:9:12:9:13 | exit M4 (normal) | ArrayCreation.cs:9:12:9:13 | exit M4 | +| ArrayCreation.cs:9:12:9:13 | Entry | ArrayCreation.cs:9:20:9:52 | Before array creation of type Int32[,] | +| ArrayCreation.cs:9:12:9:13 | Normal Exit | ArrayCreation.cs:9:12:9:13 | Exit | | ArrayCreation.cs:9:20:9:52 | 2 | ArrayCreation.cs:9:20:9:52 | 2 | | ArrayCreation.cs:9:20:9:52 | 2 | ArrayCreation.cs:9:20:9:52 | array creation of type Int32[,] | -| ArrayCreation.cs:9:20:9:52 | array creation of type Int32[,] | ArrayCreation.cs:9:35:9:35 | 0 | -| ArrayCreation.cs:9:31:9:52 | { ..., ... } | ArrayCreation.cs:9:12:9:13 | exit M4 (normal) | -| ArrayCreation.cs:9:33:9:40 | { ..., ... } | ArrayCreation.cs:9:45:9:45 | 2 | +| ArrayCreation.cs:9:20:9:52 | After array creation of type Int32[,] | ArrayCreation.cs:9:12:9:13 | Normal Exit | +| ArrayCreation.cs:9:20:9:52 | Before array creation of type Int32[,] | ArrayCreation.cs:9:31:9:52 | Before { ..., ... } | +| ArrayCreation.cs:9:20:9:52 | array creation of type Int32[,] | ArrayCreation.cs:9:20:9:52 | After array creation of type Int32[,] | +| ArrayCreation.cs:9:31:9:52 | After { ..., ... } | ArrayCreation.cs:9:20:9:52 | 2 | +| ArrayCreation.cs:9:31:9:52 | Before { ..., ... } | ArrayCreation.cs:9:33:9:40 | Before { ..., ... } | +| ArrayCreation.cs:9:31:9:52 | { ..., ... } | ArrayCreation.cs:9:31:9:52 | After { ..., ... } | +| ArrayCreation.cs:9:33:9:40 | After { ..., ... } | ArrayCreation.cs:9:43:9:50 | Before { ..., ... } | +| ArrayCreation.cs:9:33:9:40 | Before { ..., ... } | ArrayCreation.cs:9:35:9:35 | 0 | +| ArrayCreation.cs:9:33:9:40 | { ..., ... } | ArrayCreation.cs:9:33:9:40 | After { ..., ... } | | ArrayCreation.cs:9:35:9:35 | 0 | ArrayCreation.cs:9:38:9:38 | 1 | | ArrayCreation.cs:9:38:9:38 | 1 | ArrayCreation.cs:9:33:9:40 | { ..., ... } | -| ArrayCreation.cs:9:43:9:50 | { ..., ... } | ArrayCreation.cs:9:31:9:52 | { ..., ... } | +| ArrayCreation.cs:9:43:9:50 | After { ..., ... } | ArrayCreation.cs:9:31:9:52 | { ..., ... } | +| ArrayCreation.cs:9:43:9:50 | Before { ..., ... } | ArrayCreation.cs:9:45:9:45 | 2 | +| ArrayCreation.cs:9:43:9:50 | { ..., ... } | ArrayCreation.cs:9:43:9:50 | After { ..., ... } | | ArrayCreation.cs:9:45:9:45 | 2 | ArrayCreation.cs:9:48:9:48 | 3 | | ArrayCreation.cs:9:48:9:48 | 3 | ArrayCreation.cs:9:43:9:50 | { ..., ... } | -| Assert.cs:5:7:5:17 | call to constructor Object | Assert.cs:5:7:5:17 | {...} | -| Assert.cs:5:7:5:17 | call to method | Assert.cs:5:7:5:17 | call to constructor Object | -| Assert.cs:5:7:5:17 | enter AssertTests | Assert.cs:5:7:5:17 | this access | -| Assert.cs:5:7:5:17 | exit AssertTests (normal) | Assert.cs:5:7:5:17 | exit AssertTests | +| Assert.cs:5:7:5:17 | After call to constructor Object | Assert.cs:5:7:5:17 | {...} | +| Assert.cs:5:7:5:17 | After call to method | Assert.cs:5:7:5:17 | Before call to constructor Object | +| Assert.cs:5:7:5:17 | Before call to constructor Object | Assert.cs:5:7:5:17 | call to constructor Object | +| Assert.cs:5:7:5:17 | Before call to method | Assert.cs:5:7:5:17 | this access | +| Assert.cs:5:7:5:17 | Entry | Assert.cs:5:7:5:17 | Before call to method | +| Assert.cs:5:7:5:17 | Normal Exit | Assert.cs:5:7:5:17 | Exit | +| Assert.cs:5:7:5:17 | call to constructor Object | Assert.cs:5:7:5:17 | After call to constructor Object | +| Assert.cs:5:7:5:17 | call to method | Assert.cs:5:7:5:17 | After call to method | | Assert.cs:5:7:5:17 | this access | Assert.cs:5:7:5:17 | call to method | -| Assert.cs:5:7:5:17 | {...} | Assert.cs:5:7:5:17 | exit AssertTests (normal) | -| Assert.cs:7:10:7:11 | enter M1 | Assert.cs:8:5:12:5 | {...} | +| Assert.cs:5:7:5:17 | {...} | Assert.cs:5:7:5:17 | Normal Exit | +| Assert.cs:7:10:7:11 | Entry | Assert.cs:7:18:7:18 | b | +| Assert.cs:7:18:7:18 | b | Assert.cs:8:5:12:5 | {...} | +| Assert.cs:8:5:12:5 | After {...} | Assert.cs:7:10:7:11 | Normal Exit | | Assert.cs:8:5:12:5 | {...} | Assert.cs:9:9:9:33 | ... ...; | -| Assert.cs:9:9:9:33 | ... ...; | Assert.cs:9:20:9:20 | access to parameter b | -| Assert.cs:9:16:9:32 | String s = ... | Assert.cs:10:9:10:32 | ...; | -| Assert.cs:9:20:9:20 | access to parameter b | Assert.cs:9:24:9:27 | null | -| Assert.cs:9:20:9:20 | access to parameter b | Assert.cs:9:31:9:32 | "" | -| Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:9:16:9:32 | String s = ... | -| Assert.cs:10:9:10:31 | call to method Assert | Assert.cs:7:10:7:11 | exit M1 (abnormal) | -| Assert.cs:10:9:10:31 | call to method Assert | Assert.cs:11:9:11:36 | ...; | -| Assert.cs:10:9:10:32 | ...; | Assert.cs:10:22:10:22 | access to local variable s | +| Assert.cs:9:9:9:33 | ... ...; | Assert.cs:9:16:9:32 | Before String s = ... | +| Assert.cs:9:9:9:33 | After ... ...; | Assert.cs:10:9:10:32 | ...; | +| Assert.cs:9:16:9:16 | access to local variable s | Assert.cs:9:20:9:32 | ... ? ... : ... | +| Assert.cs:9:16:9:32 | After String s = ... | Assert.cs:9:9:9:33 | After ... ...; | +| Assert.cs:9:16:9:32 | Before String s = ... | Assert.cs:9:16:9:16 | access to local variable s | +| Assert.cs:9:16:9:32 | String s = ... | Assert.cs:9:16:9:32 | After String s = ... | +| Assert.cs:9:20:9:20 | After access to parameter b [false] | Assert.cs:9:31:9:32 | "" | +| Assert.cs:9:20:9:20 | After access to parameter b [true] | Assert.cs:9:24:9:27 | null | +| Assert.cs:9:20:9:20 | access to parameter b | Assert.cs:9:20:9:20 | After access to parameter b [false] | +| Assert.cs:9:20:9:20 | access to parameter b | Assert.cs:9:20:9:20 | After access to parameter b [true] | +| Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:9:20:9:20 | access to parameter b | +| Assert.cs:9:20:9:32 | After ... ? ... : ... | Assert.cs:9:16:9:32 | String s = ... | +| Assert.cs:10:9:10:31 | After call to method Assert | Assert.cs:10:9:10:32 | After ...; | +| Assert.cs:10:9:10:31 | Before call to method Assert | Assert.cs:10:22:10:30 | Before ... != ... | +| Assert.cs:10:9:10:31 | call to method Assert | Assert.cs:7:10:7:11 | Exceptional Exit | +| Assert.cs:10:9:10:31 | call to method Assert | Assert.cs:10:9:10:31 | After call to method Assert | +| Assert.cs:10:9:10:32 | ...; | Assert.cs:10:9:10:31 | Before call to method Assert | +| Assert.cs:10:9:10:32 | After ...; | Assert.cs:11:9:11:36 | ...; | | Assert.cs:10:22:10:22 | access to local variable s | Assert.cs:10:27:10:30 | null | -| Assert.cs:10:22:10:30 | ... != ... | Assert.cs:10:9:10:31 | call to method Assert | +| Assert.cs:10:22:10:30 | ... != ... | Assert.cs:10:22:10:30 | After ... != ... | +| Assert.cs:10:22:10:30 | After ... != ... | Assert.cs:10:9:10:31 | call to method Assert | +| Assert.cs:10:22:10:30 | Before ... != ... | Assert.cs:10:22:10:22 | access to local variable s | | Assert.cs:10:27:10:30 | null | Assert.cs:10:22:10:30 | ... != ... | -| Assert.cs:11:9:11:35 | call to method WriteLine | Assert.cs:7:10:7:11 | exit M1 (normal) | -| Assert.cs:11:9:11:36 | ...; | Assert.cs:11:27:11:27 | access to local variable s | +| Assert.cs:11:9:11:35 | After call to method WriteLine | Assert.cs:11:9:11:36 | After ...; | +| Assert.cs:11:9:11:35 | Before call to method WriteLine | Assert.cs:11:27:11:34 | Before access to property Length | +| Assert.cs:11:9:11:35 | call to method WriteLine | Assert.cs:11:9:11:35 | After call to method WriteLine | +| Assert.cs:11:9:11:36 | ...; | Assert.cs:11:9:11:35 | Before call to method WriteLine | +| Assert.cs:11:9:11:36 | After ...; | Assert.cs:8:5:12:5 | After {...} | | Assert.cs:11:27:11:27 | access to local variable s | Assert.cs:11:27:11:34 | access to property Length | -| Assert.cs:11:27:11:34 | access to property Length | Assert.cs:11:9:11:35 | call to method WriteLine | -| Assert.cs:14:10:14:11 | enter M2 | Assert.cs:15:5:19:5 | {...} | +| Assert.cs:11:27:11:34 | After access to property Length | Assert.cs:11:9:11:35 | call to method WriteLine | +| Assert.cs:11:27:11:34 | Before access to property Length | Assert.cs:11:27:11:27 | access to local variable s | +| Assert.cs:11:27:11:34 | access to property Length | Assert.cs:11:27:11:34 | After access to property Length | +| Assert.cs:14:10:14:11 | Entry | Assert.cs:14:18:14:18 | b | +| Assert.cs:14:18:14:18 | b | Assert.cs:15:5:19:5 | {...} | +| Assert.cs:15:5:19:5 | After {...} | Assert.cs:14:10:14:11 | Normal Exit | | Assert.cs:15:5:19:5 | {...} | Assert.cs:16:9:16:33 | ... ...; | -| Assert.cs:16:9:16:33 | ... ...; | Assert.cs:16:20:16:20 | access to parameter b | -| Assert.cs:16:16:16:32 | String s = ... | Assert.cs:17:9:17:25 | ...; | -| Assert.cs:16:20:16:20 | access to parameter b | Assert.cs:16:24:16:27 | null | -| Assert.cs:16:20:16:20 | access to parameter b | Assert.cs:16:31:16:32 | "" | -| Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:16:16:16:32 | String s = ... | -| Assert.cs:17:9:17:24 | call to method IsNull | Assert.cs:14:10:14:11 | exit M2 (abnormal) | -| Assert.cs:17:9:17:24 | call to method IsNull | Assert.cs:18:9:18:36 | ...; | -| Assert.cs:17:9:17:25 | ...; | Assert.cs:17:23:17:23 | access to local variable s | +| Assert.cs:16:9:16:33 | ... ...; | Assert.cs:16:16:16:32 | Before String s = ... | +| Assert.cs:16:9:16:33 | After ... ...; | Assert.cs:17:9:17:25 | ...; | +| Assert.cs:16:16:16:16 | access to local variable s | Assert.cs:16:20:16:32 | ... ? ... : ... | +| Assert.cs:16:16:16:32 | After String s = ... | Assert.cs:16:9:16:33 | After ... ...; | +| Assert.cs:16:16:16:32 | Before String s = ... | Assert.cs:16:16:16:16 | access to local variable s | +| Assert.cs:16:16:16:32 | String s = ... | Assert.cs:16:16:16:32 | After String s = ... | +| Assert.cs:16:20:16:20 | After access to parameter b [false] | Assert.cs:16:31:16:32 | "" | +| Assert.cs:16:20:16:20 | After access to parameter b [true] | Assert.cs:16:24:16:27 | null | +| Assert.cs:16:20:16:20 | access to parameter b | Assert.cs:16:20:16:20 | After access to parameter b [false] | +| Assert.cs:16:20:16:20 | access to parameter b | Assert.cs:16:20:16:20 | After access to parameter b [true] | +| Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:16:20:16:20 | access to parameter b | +| Assert.cs:16:20:16:32 | After ... ? ... : ... | Assert.cs:16:16:16:32 | String s = ... | +| Assert.cs:17:9:17:24 | After call to method IsNull | Assert.cs:17:9:17:25 | After ...; | +| Assert.cs:17:9:17:24 | Before call to method IsNull | Assert.cs:17:23:17:23 | access to local variable s | +| Assert.cs:17:9:17:24 | call to method IsNull | Assert.cs:14:10:14:11 | Exceptional Exit | +| Assert.cs:17:9:17:24 | call to method IsNull | Assert.cs:17:9:17:24 | After call to method IsNull | +| Assert.cs:17:9:17:25 | ...; | Assert.cs:17:9:17:24 | Before call to method IsNull | +| Assert.cs:17:9:17:25 | After ...; | Assert.cs:18:9:18:36 | ...; | | Assert.cs:17:23:17:23 | access to local variable s | Assert.cs:17:9:17:24 | call to method IsNull | -| Assert.cs:18:9:18:35 | call to method WriteLine | Assert.cs:14:10:14:11 | exit M2 (normal) | -| Assert.cs:18:9:18:36 | ...; | Assert.cs:18:27:18:27 | access to local variable s | +| Assert.cs:18:9:18:35 | After call to method WriteLine | Assert.cs:18:9:18:36 | After ...; | +| Assert.cs:18:9:18:35 | Before call to method WriteLine | Assert.cs:18:27:18:34 | Before access to property Length | +| Assert.cs:18:9:18:35 | call to method WriteLine | Assert.cs:18:9:18:35 | After call to method WriteLine | +| Assert.cs:18:9:18:36 | ...; | Assert.cs:18:9:18:35 | Before call to method WriteLine | +| Assert.cs:18:9:18:36 | After ...; | Assert.cs:15:5:19:5 | After {...} | | Assert.cs:18:27:18:27 | access to local variable s | Assert.cs:18:27:18:34 | access to property Length | -| Assert.cs:18:27:18:34 | access to property Length | Assert.cs:18:9:18:35 | call to method WriteLine | -| Assert.cs:21:10:21:11 | enter M3 | Assert.cs:22:5:26:5 | {...} | +| Assert.cs:18:27:18:34 | After access to property Length | Assert.cs:18:9:18:35 | call to method WriteLine | +| Assert.cs:18:27:18:34 | Before access to property Length | Assert.cs:18:27:18:27 | access to local variable s | +| Assert.cs:18:27:18:34 | access to property Length | Assert.cs:18:27:18:34 | After access to property Length | +| Assert.cs:21:10:21:11 | Entry | Assert.cs:21:18:21:18 | b | +| Assert.cs:21:18:21:18 | b | Assert.cs:22:5:26:5 | {...} | +| Assert.cs:22:5:26:5 | After {...} | Assert.cs:21:10:21:11 | Normal Exit | | Assert.cs:22:5:26:5 | {...} | Assert.cs:23:9:23:33 | ... ...; | -| Assert.cs:23:9:23:33 | ... ...; | Assert.cs:23:20:23:20 | access to parameter b | -| Assert.cs:23:16:23:32 | String s = ... | Assert.cs:24:9:24:28 | ...; | -| Assert.cs:23:20:23:20 | access to parameter b | Assert.cs:23:24:23:27 | null | -| Assert.cs:23:20:23:20 | access to parameter b | Assert.cs:23:31:23:32 | "" | -| Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:23:16:23:32 | String s = ... | -| Assert.cs:24:9:24:27 | call to method IsNotNull | Assert.cs:21:10:21:11 | exit M3 (abnormal) | -| Assert.cs:24:9:24:27 | call to method IsNotNull | Assert.cs:25:9:25:36 | ...; | -| Assert.cs:24:9:24:28 | ...; | Assert.cs:24:26:24:26 | access to local variable s | +| Assert.cs:23:9:23:33 | ... ...; | Assert.cs:23:16:23:32 | Before String s = ... | +| Assert.cs:23:9:23:33 | After ... ...; | Assert.cs:24:9:24:28 | ...; | +| Assert.cs:23:16:23:16 | access to local variable s | Assert.cs:23:20:23:32 | ... ? ... : ... | +| Assert.cs:23:16:23:32 | After String s = ... | Assert.cs:23:9:23:33 | After ... ...; | +| Assert.cs:23:16:23:32 | Before String s = ... | Assert.cs:23:16:23:16 | access to local variable s | +| Assert.cs:23:16:23:32 | String s = ... | Assert.cs:23:16:23:32 | After String s = ... | +| Assert.cs:23:20:23:20 | After access to parameter b [false] | Assert.cs:23:31:23:32 | "" | +| Assert.cs:23:20:23:20 | After access to parameter b [true] | Assert.cs:23:24:23:27 | null | +| Assert.cs:23:20:23:20 | access to parameter b | Assert.cs:23:20:23:20 | After access to parameter b [false] | +| Assert.cs:23:20:23:20 | access to parameter b | Assert.cs:23:20:23:20 | After access to parameter b [true] | +| Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:23:20:23:20 | access to parameter b | +| Assert.cs:23:20:23:32 | After ... ? ... : ... | Assert.cs:23:16:23:32 | String s = ... | +| Assert.cs:24:9:24:27 | After call to method IsNotNull | Assert.cs:24:9:24:28 | After ...; | +| Assert.cs:24:9:24:27 | Before call to method IsNotNull | Assert.cs:24:26:24:26 | access to local variable s | +| Assert.cs:24:9:24:27 | call to method IsNotNull | Assert.cs:21:10:21:11 | Exceptional Exit | +| Assert.cs:24:9:24:27 | call to method IsNotNull | Assert.cs:24:9:24:27 | After call to method IsNotNull | +| Assert.cs:24:9:24:28 | ...; | Assert.cs:24:9:24:27 | Before call to method IsNotNull | +| Assert.cs:24:9:24:28 | After ...; | Assert.cs:25:9:25:36 | ...; | | Assert.cs:24:26:24:26 | access to local variable s | Assert.cs:24:9:24:27 | call to method IsNotNull | -| Assert.cs:25:9:25:35 | call to method WriteLine | Assert.cs:21:10:21:11 | exit M3 (normal) | -| Assert.cs:25:9:25:36 | ...; | Assert.cs:25:27:25:27 | access to local variable s | +| Assert.cs:25:9:25:35 | After call to method WriteLine | Assert.cs:25:9:25:36 | After ...; | +| Assert.cs:25:9:25:35 | Before call to method WriteLine | Assert.cs:25:27:25:34 | Before access to property Length | +| Assert.cs:25:9:25:35 | call to method WriteLine | Assert.cs:25:9:25:35 | After call to method WriteLine | +| Assert.cs:25:9:25:36 | ...; | Assert.cs:25:9:25:35 | Before call to method WriteLine | +| Assert.cs:25:9:25:36 | After ...; | Assert.cs:22:5:26:5 | After {...} | | Assert.cs:25:27:25:27 | access to local variable s | Assert.cs:25:27:25:34 | access to property Length | -| Assert.cs:25:27:25:34 | access to property Length | Assert.cs:25:9:25:35 | call to method WriteLine | -| Assert.cs:28:10:28:11 | enter M4 | Assert.cs:29:5:33:5 | {...} | +| Assert.cs:25:27:25:34 | After access to property Length | Assert.cs:25:9:25:35 | call to method WriteLine | +| Assert.cs:25:27:25:34 | Before access to property Length | Assert.cs:25:27:25:27 | access to local variable s | +| Assert.cs:25:27:25:34 | access to property Length | Assert.cs:25:27:25:34 | After access to property Length | +| Assert.cs:28:10:28:11 | Entry | Assert.cs:28:18:28:18 | b | +| Assert.cs:28:18:28:18 | b | Assert.cs:29:5:33:5 | {...} | +| Assert.cs:29:5:33:5 | After {...} | Assert.cs:28:10:28:11 | Normal Exit | | Assert.cs:29:5:33:5 | {...} | Assert.cs:30:9:30:33 | ... ...; | -| Assert.cs:30:9:30:33 | ... ...; | Assert.cs:30:20:30:20 | access to parameter b | -| Assert.cs:30:16:30:32 | String s = ... | Assert.cs:31:9:31:33 | ...; | -| Assert.cs:30:20:30:20 | access to parameter b | Assert.cs:30:24:30:27 | null | -| Assert.cs:30:20:30:20 | access to parameter b | Assert.cs:30:31:30:32 | "" | -| Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:30:16:30:32 | String s = ... | -| Assert.cs:31:9:31:32 | call to method IsTrue | Assert.cs:28:10:28:11 | exit M4 (abnormal) | -| Assert.cs:31:9:31:32 | call to method IsTrue | Assert.cs:32:9:32:36 | ...; | -| Assert.cs:31:9:31:33 | ...; | Assert.cs:31:23:31:23 | access to local variable s | +| Assert.cs:30:9:30:33 | ... ...; | Assert.cs:30:16:30:32 | Before String s = ... | +| Assert.cs:30:9:30:33 | After ... ...; | Assert.cs:31:9:31:33 | ...; | +| Assert.cs:30:16:30:16 | access to local variable s | Assert.cs:30:20:30:32 | ... ? ... : ... | +| Assert.cs:30:16:30:32 | After String s = ... | Assert.cs:30:9:30:33 | After ... ...; | +| Assert.cs:30:16:30:32 | Before String s = ... | Assert.cs:30:16:30:16 | access to local variable s | +| Assert.cs:30:16:30:32 | String s = ... | Assert.cs:30:16:30:32 | After String s = ... | +| Assert.cs:30:20:30:20 | After access to parameter b [false] | Assert.cs:30:31:30:32 | "" | +| Assert.cs:30:20:30:20 | After access to parameter b [true] | Assert.cs:30:24:30:27 | null | +| Assert.cs:30:20:30:20 | access to parameter b | Assert.cs:30:20:30:20 | After access to parameter b [false] | +| Assert.cs:30:20:30:20 | access to parameter b | Assert.cs:30:20:30:20 | After access to parameter b [true] | +| Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:30:20:30:20 | access to parameter b | +| Assert.cs:30:20:30:32 | After ... ? ... : ... | Assert.cs:30:16:30:32 | String s = ... | +| Assert.cs:31:9:31:32 | After call to method IsTrue | Assert.cs:31:9:31:33 | After ...; | +| Assert.cs:31:9:31:32 | Before call to method IsTrue | Assert.cs:31:23:31:31 | Before ... == ... | +| Assert.cs:31:9:31:32 | call to method IsTrue | Assert.cs:28:10:28:11 | Exceptional Exit | +| Assert.cs:31:9:31:32 | call to method IsTrue | Assert.cs:31:9:31:32 | After call to method IsTrue | +| Assert.cs:31:9:31:33 | ...; | Assert.cs:31:9:31:32 | Before call to method IsTrue | +| Assert.cs:31:9:31:33 | After ...; | Assert.cs:32:9:32:36 | ...; | | Assert.cs:31:23:31:23 | access to local variable s | Assert.cs:31:28:31:31 | null | -| Assert.cs:31:23:31:31 | ... == ... | Assert.cs:31:9:31:32 | call to method IsTrue | +| Assert.cs:31:23:31:31 | ... == ... | Assert.cs:31:23:31:31 | After ... == ... | +| Assert.cs:31:23:31:31 | After ... == ... | Assert.cs:31:9:31:32 | call to method IsTrue | +| Assert.cs:31:23:31:31 | Before ... == ... | Assert.cs:31:23:31:23 | access to local variable s | | Assert.cs:31:28:31:31 | null | Assert.cs:31:23:31:31 | ... == ... | -| Assert.cs:32:9:32:35 | call to method WriteLine | Assert.cs:28:10:28:11 | exit M4 (normal) | -| Assert.cs:32:9:32:36 | ...; | Assert.cs:32:27:32:27 | access to local variable s | +| Assert.cs:32:9:32:35 | After call to method WriteLine | Assert.cs:32:9:32:36 | After ...; | +| Assert.cs:32:9:32:35 | Before call to method WriteLine | Assert.cs:32:27:32:34 | Before access to property Length | +| Assert.cs:32:9:32:35 | call to method WriteLine | Assert.cs:32:9:32:35 | After call to method WriteLine | +| Assert.cs:32:9:32:36 | ...; | Assert.cs:32:9:32:35 | Before call to method WriteLine | +| Assert.cs:32:9:32:36 | After ...; | Assert.cs:29:5:33:5 | After {...} | | Assert.cs:32:27:32:27 | access to local variable s | Assert.cs:32:27:32:34 | access to property Length | -| Assert.cs:32:27:32:34 | access to property Length | Assert.cs:32:9:32:35 | call to method WriteLine | -| Assert.cs:35:10:35:11 | enter M5 | Assert.cs:36:5:40:5 | {...} | +| Assert.cs:32:27:32:34 | After access to property Length | Assert.cs:32:9:32:35 | call to method WriteLine | +| Assert.cs:32:27:32:34 | Before access to property Length | Assert.cs:32:27:32:27 | access to local variable s | +| Assert.cs:32:27:32:34 | access to property Length | Assert.cs:32:27:32:34 | After access to property Length | +| Assert.cs:35:10:35:11 | Entry | Assert.cs:35:18:35:18 | b | +| Assert.cs:35:18:35:18 | b | Assert.cs:36:5:40:5 | {...} | +| Assert.cs:36:5:40:5 | After {...} | Assert.cs:35:10:35:11 | Normal Exit | | Assert.cs:36:5:40:5 | {...} | Assert.cs:37:9:37:33 | ... ...; | -| Assert.cs:37:9:37:33 | ... ...; | Assert.cs:37:20:37:20 | access to parameter b | -| Assert.cs:37:16:37:32 | String s = ... | Assert.cs:38:9:38:33 | ...; | -| Assert.cs:37:20:37:20 | access to parameter b | Assert.cs:37:24:37:27 | null | -| Assert.cs:37:20:37:20 | access to parameter b | Assert.cs:37:31:37:32 | "" | -| Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:37:16:37:32 | String s = ... | -| Assert.cs:38:9:38:32 | call to method IsTrue | Assert.cs:35:10:35:11 | exit M5 (abnormal) | -| Assert.cs:38:9:38:32 | call to method IsTrue | Assert.cs:39:9:39:36 | ...; | -| Assert.cs:38:9:38:33 | ...; | Assert.cs:38:23:38:23 | access to local variable s | +| Assert.cs:37:9:37:33 | ... ...; | Assert.cs:37:16:37:32 | Before String s = ... | +| Assert.cs:37:9:37:33 | After ... ...; | Assert.cs:38:9:38:33 | ...; | +| Assert.cs:37:16:37:16 | access to local variable s | Assert.cs:37:20:37:32 | ... ? ... : ... | +| Assert.cs:37:16:37:32 | After String s = ... | Assert.cs:37:9:37:33 | After ... ...; | +| Assert.cs:37:16:37:32 | Before String s = ... | Assert.cs:37:16:37:16 | access to local variable s | +| Assert.cs:37:16:37:32 | String s = ... | Assert.cs:37:16:37:32 | After String s = ... | +| Assert.cs:37:20:37:20 | After access to parameter b [false] | Assert.cs:37:31:37:32 | "" | +| Assert.cs:37:20:37:20 | After access to parameter b [true] | Assert.cs:37:24:37:27 | null | +| Assert.cs:37:20:37:20 | access to parameter b | Assert.cs:37:20:37:20 | After access to parameter b [false] | +| Assert.cs:37:20:37:20 | access to parameter b | Assert.cs:37:20:37:20 | After access to parameter b [true] | +| Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:37:20:37:20 | access to parameter b | +| Assert.cs:37:20:37:32 | After ... ? ... : ... | Assert.cs:37:16:37:32 | String s = ... | +| Assert.cs:38:9:38:32 | After call to method IsTrue | Assert.cs:38:9:38:33 | After ...; | +| Assert.cs:38:9:38:32 | Before call to method IsTrue | Assert.cs:38:23:38:31 | Before ... != ... | +| Assert.cs:38:9:38:32 | call to method IsTrue | Assert.cs:35:10:35:11 | Exceptional Exit | +| Assert.cs:38:9:38:32 | call to method IsTrue | Assert.cs:38:9:38:32 | After call to method IsTrue | +| Assert.cs:38:9:38:33 | ...; | Assert.cs:38:9:38:32 | Before call to method IsTrue | +| Assert.cs:38:9:38:33 | After ...; | Assert.cs:39:9:39:36 | ...; | | Assert.cs:38:23:38:23 | access to local variable s | Assert.cs:38:28:38:31 | null | -| Assert.cs:38:23:38:31 | ... != ... | Assert.cs:38:9:38:32 | call to method IsTrue | +| Assert.cs:38:23:38:31 | ... != ... | Assert.cs:38:23:38:31 | After ... != ... | +| Assert.cs:38:23:38:31 | After ... != ... | Assert.cs:38:9:38:32 | call to method IsTrue | +| Assert.cs:38:23:38:31 | Before ... != ... | Assert.cs:38:23:38:23 | access to local variable s | | Assert.cs:38:28:38:31 | null | Assert.cs:38:23:38:31 | ... != ... | -| Assert.cs:39:9:39:35 | call to method WriteLine | Assert.cs:35:10:35:11 | exit M5 (normal) | -| Assert.cs:39:9:39:36 | ...; | Assert.cs:39:27:39:27 | access to local variable s | +| Assert.cs:39:9:39:35 | After call to method WriteLine | Assert.cs:39:9:39:36 | After ...; | +| Assert.cs:39:9:39:35 | Before call to method WriteLine | Assert.cs:39:27:39:34 | Before access to property Length | +| Assert.cs:39:9:39:35 | call to method WriteLine | Assert.cs:39:9:39:35 | After call to method WriteLine | +| Assert.cs:39:9:39:36 | ...; | Assert.cs:39:9:39:35 | Before call to method WriteLine | +| Assert.cs:39:9:39:36 | After ...; | Assert.cs:36:5:40:5 | After {...} | | Assert.cs:39:27:39:27 | access to local variable s | Assert.cs:39:27:39:34 | access to property Length | -| Assert.cs:39:27:39:34 | access to property Length | Assert.cs:39:9:39:35 | call to method WriteLine | -| Assert.cs:42:10:42:11 | enter M6 | Assert.cs:43:5:47:5 | {...} | +| Assert.cs:39:27:39:34 | After access to property Length | Assert.cs:39:9:39:35 | call to method WriteLine | +| Assert.cs:39:27:39:34 | Before access to property Length | Assert.cs:39:27:39:27 | access to local variable s | +| Assert.cs:39:27:39:34 | access to property Length | Assert.cs:39:27:39:34 | After access to property Length | +| Assert.cs:42:10:42:11 | Entry | Assert.cs:42:18:42:18 | b | +| Assert.cs:42:18:42:18 | b | Assert.cs:43:5:47:5 | {...} | +| Assert.cs:43:5:47:5 | After {...} | Assert.cs:42:10:42:11 | Normal Exit | | Assert.cs:43:5:47:5 | {...} | Assert.cs:44:9:44:33 | ... ...; | -| Assert.cs:44:9:44:33 | ... ...; | Assert.cs:44:20:44:20 | access to parameter b | -| Assert.cs:44:16:44:32 | String s = ... | Assert.cs:45:9:45:34 | ...; | -| Assert.cs:44:20:44:20 | access to parameter b | Assert.cs:44:24:44:27 | null | -| Assert.cs:44:20:44:20 | access to parameter b | Assert.cs:44:31:44:32 | "" | -| Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:44:16:44:32 | String s = ... | -| Assert.cs:45:9:45:33 | call to method IsFalse | Assert.cs:42:10:42:11 | exit M6 (abnormal) | -| Assert.cs:45:9:45:33 | call to method IsFalse | Assert.cs:46:9:46:36 | ...; | -| Assert.cs:45:9:45:34 | ...; | Assert.cs:45:24:45:24 | access to local variable s | +| Assert.cs:44:9:44:33 | ... ...; | Assert.cs:44:16:44:32 | Before String s = ... | +| Assert.cs:44:9:44:33 | After ... ...; | Assert.cs:45:9:45:34 | ...; | +| Assert.cs:44:16:44:16 | access to local variable s | Assert.cs:44:20:44:32 | ... ? ... : ... | +| Assert.cs:44:16:44:32 | After String s = ... | Assert.cs:44:9:44:33 | After ... ...; | +| Assert.cs:44:16:44:32 | Before String s = ... | Assert.cs:44:16:44:16 | access to local variable s | +| Assert.cs:44:16:44:32 | String s = ... | Assert.cs:44:16:44:32 | After String s = ... | +| Assert.cs:44:20:44:20 | After access to parameter b [false] | Assert.cs:44:31:44:32 | "" | +| Assert.cs:44:20:44:20 | After access to parameter b [true] | Assert.cs:44:24:44:27 | null | +| Assert.cs:44:20:44:20 | access to parameter b | Assert.cs:44:20:44:20 | After access to parameter b [false] | +| Assert.cs:44:20:44:20 | access to parameter b | Assert.cs:44:20:44:20 | After access to parameter b [true] | +| Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:44:20:44:20 | access to parameter b | +| Assert.cs:44:20:44:32 | After ... ? ... : ... | Assert.cs:44:16:44:32 | String s = ... | +| Assert.cs:45:9:45:33 | After call to method IsFalse | Assert.cs:45:9:45:34 | After ...; | +| Assert.cs:45:9:45:33 | Before call to method IsFalse | Assert.cs:45:24:45:32 | Before ... != ... | +| Assert.cs:45:9:45:33 | call to method IsFalse | Assert.cs:42:10:42:11 | Exceptional Exit | +| Assert.cs:45:9:45:33 | call to method IsFalse | Assert.cs:45:9:45:33 | After call to method IsFalse | +| Assert.cs:45:9:45:34 | ...; | Assert.cs:45:9:45:33 | Before call to method IsFalse | +| Assert.cs:45:9:45:34 | After ...; | Assert.cs:46:9:46:36 | ...; | | Assert.cs:45:24:45:24 | access to local variable s | Assert.cs:45:29:45:32 | null | -| Assert.cs:45:24:45:32 | ... != ... | Assert.cs:45:9:45:33 | call to method IsFalse | +| Assert.cs:45:24:45:32 | ... != ... | Assert.cs:45:24:45:32 | After ... != ... | +| Assert.cs:45:24:45:32 | After ... != ... | Assert.cs:45:9:45:33 | call to method IsFalse | +| Assert.cs:45:24:45:32 | Before ... != ... | Assert.cs:45:24:45:24 | access to local variable s | | Assert.cs:45:29:45:32 | null | Assert.cs:45:24:45:32 | ... != ... | -| Assert.cs:46:9:46:35 | call to method WriteLine | Assert.cs:42:10:42:11 | exit M6 (normal) | -| Assert.cs:46:9:46:36 | ...; | Assert.cs:46:27:46:27 | access to local variable s | +| Assert.cs:46:9:46:35 | After call to method WriteLine | Assert.cs:46:9:46:36 | After ...; | +| Assert.cs:46:9:46:35 | Before call to method WriteLine | Assert.cs:46:27:46:34 | Before access to property Length | +| Assert.cs:46:9:46:35 | call to method WriteLine | Assert.cs:46:9:46:35 | After call to method WriteLine | +| Assert.cs:46:9:46:36 | ...; | Assert.cs:46:9:46:35 | Before call to method WriteLine | +| Assert.cs:46:9:46:36 | After ...; | Assert.cs:43:5:47:5 | After {...} | | Assert.cs:46:27:46:27 | access to local variable s | Assert.cs:46:27:46:34 | access to property Length | -| Assert.cs:46:27:46:34 | access to property Length | Assert.cs:46:9:46:35 | call to method WriteLine | -| Assert.cs:49:10:49:11 | enter M7 | Assert.cs:50:5:54:5 | {...} | +| Assert.cs:46:27:46:34 | After access to property Length | Assert.cs:46:9:46:35 | call to method WriteLine | +| Assert.cs:46:27:46:34 | Before access to property Length | Assert.cs:46:27:46:27 | access to local variable s | +| Assert.cs:46:27:46:34 | access to property Length | Assert.cs:46:27:46:34 | After access to property Length | +| Assert.cs:49:10:49:11 | Entry | Assert.cs:49:18:49:18 | b | +| Assert.cs:49:18:49:18 | b | Assert.cs:50:5:54:5 | {...} | +| Assert.cs:50:5:54:5 | After {...} | Assert.cs:49:10:49:11 | Normal Exit | | Assert.cs:50:5:54:5 | {...} | Assert.cs:51:9:51:33 | ... ...; | -| Assert.cs:51:9:51:33 | ... ...; | Assert.cs:51:20:51:20 | access to parameter b | -| Assert.cs:51:16:51:32 | String s = ... | Assert.cs:52:9:52:34 | ...; | -| Assert.cs:51:20:51:20 | access to parameter b | Assert.cs:51:24:51:27 | null | -| Assert.cs:51:20:51:20 | access to parameter b | Assert.cs:51:31:51:32 | "" | -| Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:51:16:51:32 | String s = ... | -| Assert.cs:52:9:52:33 | call to method IsFalse | Assert.cs:49:10:49:11 | exit M7 (abnormal) | -| Assert.cs:52:9:52:33 | call to method IsFalse | Assert.cs:53:9:53:36 | ...; | -| Assert.cs:52:9:52:34 | ...; | Assert.cs:52:24:52:24 | access to local variable s | +| Assert.cs:51:9:51:33 | ... ...; | Assert.cs:51:16:51:32 | Before String s = ... | +| Assert.cs:51:9:51:33 | After ... ...; | Assert.cs:52:9:52:34 | ...; | +| Assert.cs:51:16:51:16 | access to local variable s | Assert.cs:51:20:51:32 | ... ? ... : ... | +| Assert.cs:51:16:51:32 | After String s = ... | Assert.cs:51:9:51:33 | After ... ...; | +| Assert.cs:51:16:51:32 | Before String s = ... | Assert.cs:51:16:51:16 | access to local variable s | +| Assert.cs:51:16:51:32 | String s = ... | Assert.cs:51:16:51:32 | After String s = ... | +| Assert.cs:51:20:51:20 | After access to parameter b [false] | Assert.cs:51:31:51:32 | "" | +| Assert.cs:51:20:51:20 | After access to parameter b [true] | Assert.cs:51:24:51:27 | null | +| Assert.cs:51:20:51:20 | access to parameter b | Assert.cs:51:20:51:20 | After access to parameter b [false] | +| Assert.cs:51:20:51:20 | access to parameter b | Assert.cs:51:20:51:20 | After access to parameter b [true] | +| Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:51:20:51:20 | access to parameter b | +| Assert.cs:51:20:51:32 | After ... ? ... : ... | Assert.cs:51:16:51:32 | String s = ... | +| Assert.cs:52:9:52:33 | After call to method IsFalse | Assert.cs:52:9:52:34 | After ...; | +| Assert.cs:52:9:52:33 | Before call to method IsFalse | Assert.cs:52:24:52:32 | Before ... == ... | +| Assert.cs:52:9:52:33 | call to method IsFalse | Assert.cs:49:10:49:11 | Exceptional Exit | +| Assert.cs:52:9:52:33 | call to method IsFalse | Assert.cs:52:9:52:33 | After call to method IsFalse | +| Assert.cs:52:9:52:34 | ...; | Assert.cs:52:9:52:33 | Before call to method IsFalse | +| Assert.cs:52:9:52:34 | After ...; | Assert.cs:53:9:53:36 | ...; | | Assert.cs:52:24:52:24 | access to local variable s | Assert.cs:52:29:52:32 | null | -| Assert.cs:52:24:52:32 | ... == ... | Assert.cs:52:9:52:33 | call to method IsFalse | +| Assert.cs:52:24:52:32 | ... == ... | Assert.cs:52:24:52:32 | After ... == ... | +| Assert.cs:52:24:52:32 | After ... == ... | Assert.cs:52:9:52:33 | call to method IsFalse | +| Assert.cs:52:24:52:32 | Before ... == ... | Assert.cs:52:24:52:24 | access to local variable s | | Assert.cs:52:29:52:32 | null | Assert.cs:52:24:52:32 | ... == ... | -| Assert.cs:53:9:53:35 | call to method WriteLine | Assert.cs:49:10:49:11 | exit M7 (normal) | -| Assert.cs:53:9:53:36 | ...; | Assert.cs:53:27:53:27 | access to local variable s | +| Assert.cs:53:9:53:35 | After call to method WriteLine | Assert.cs:53:9:53:36 | After ...; | +| Assert.cs:53:9:53:35 | Before call to method WriteLine | Assert.cs:53:27:53:34 | Before access to property Length | +| Assert.cs:53:9:53:35 | call to method WriteLine | Assert.cs:53:9:53:35 | After call to method WriteLine | +| Assert.cs:53:9:53:36 | ...; | Assert.cs:53:9:53:35 | Before call to method WriteLine | +| Assert.cs:53:9:53:36 | After ...; | Assert.cs:50:5:54:5 | After {...} | | Assert.cs:53:27:53:27 | access to local variable s | Assert.cs:53:27:53:34 | access to property Length | -| Assert.cs:53:27:53:34 | access to property Length | Assert.cs:53:9:53:35 | call to method WriteLine | -| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:57:5:61:5 | {...} | +| Assert.cs:53:27:53:34 | After access to property Length | Assert.cs:53:9:53:35 | call to method WriteLine | +| Assert.cs:53:27:53:34 | Before access to property Length | Assert.cs:53:27:53:27 | access to local variable s | +| Assert.cs:53:27:53:34 | access to property Length | Assert.cs:53:27:53:34 | After access to property Length | +| Assert.cs:56:10:56:11 | Entry | Assert.cs:56:18:56:18 | b | +| Assert.cs:56:18:56:18 | b | Assert.cs:57:5:61:5 | {...} | +| Assert.cs:57:5:61:5 | After {...} | Assert.cs:56:10:56:11 | Normal Exit | | Assert.cs:57:5:61:5 | {...} | Assert.cs:58:9:58:33 | ... ...; | -| Assert.cs:58:9:58:33 | ... ...; | Assert.cs:58:20:58:20 | access to parameter b | -| Assert.cs:58:16:58:32 | String s = ... | Assert.cs:59:9:59:38 | ...; | -| Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:24:58:27 | null | -| Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:31:58:32 | "" | -| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:16:58:32 | String s = ... | -| Assert.cs:59:9:59:37 | call to method IsTrue | Assert.cs:56:10:56:11 | exit M8 (abnormal) | -| Assert.cs:59:9:59:37 | call to method IsTrue | Assert.cs:60:9:60:36 | ...; | -| Assert.cs:59:9:59:38 | ...; | Assert.cs:59:23:59:23 | access to local variable s | +| Assert.cs:58:9:58:33 | ... ...; | Assert.cs:58:16:58:32 | Before String s = ... | +| Assert.cs:58:9:58:33 | After ... ...; | Assert.cs:59:9:59:38 | ...; | +| Assert.cs:58:16:58:16 | access to local variable s | Assert.cs:58:20:58:32 | ... ? ... : ... | +| Assert.cs:58:16:58:32 | After String s = ... | Assert.cs:58:9:58:33 | After ... ...; | +| Assert.cs:58:16:58:32 | Before String s = ... | Assert.cs:58:16:58:16 | access to local variable s | +| Assert.cs:58:16:58:32 | String s = ... | Assert.cs:58:16:58:32 | After String s = ... | +| Assert.cs:58:20:58:20 | After access to parameter b [false] | Assert.cs:58:31:58:32 | "" | +| Assert.cs:58:20:58:20 | After access to parameter b [true] | Assert.cs:58:24:58:27 | null | +| Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:20:58:20 | After access to parameter b [false] | +| Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:20:58:20 | After access to parameter b [true] | +| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:20:58:20 | access to parameter b | +| Assert.cs:58:20:58:32 | After ... ? ... : ... | Assert.cs:58:16:58:32 | String s = ... | +| Assert.cs:59:9:59:37 | After call to method IsTrue | Assert.cs:59:9:59:38 | After ...; | +| Assert.cs:59:9:59:37 | Before call to method IsTrue | Assert.cs:59:23:59:36 | ... && ... | +| Assert.cs:59:9:59:37 | call to method IsTrue | Assert.cs:56:10:56:11 | Exceptional Exit | +| Assert.cs:59:9:59:37 | call to method IsTrue | Assert.cs:59:9:59:37 | After call to method IsTrue | +| Assert.cs:59:9:59:38 | ...; | Assert.cs:59:9:59:37 | Before call to method IsTrue | +| Assert.cs:59:9:59:38 | After ...; | Assert.cs:60:9:60:36 | ...; | | Assert.cs:59:23:59:23 | access to local variable s | Assert.cs:59:28:59:31 | null | -| Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:23:59:36 | ... && ... | -| Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:36:59:36 | access to parameter b | -| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:59:9:59:37 | call to method IsTrue | +| Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:23:59:31 | After ... != ... [false] | +| Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:23:59:31 | After ... != ... [true] | +| Assert.cs:59:23:59:31 | After ... != ... [true] | Assert.cs:59:36:59:36 | access to parameter b | +| Assert.cs:59:23:59:31 | Before ... != ... | Assert.cs:59:23:59:23 | access to local variable s | +| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:59:23:59:31 | Before ... != ... | +| Assert.cs:59:23:59:36 | After ... && ... | Assert.cs:59:9:59:37 | call to method IsTrue | | Assert.cs:59:28:59:31 | null | Assert.cs:59:23:59:31 | ... != ... | -| Assert.cs:60:9:60:35 | call to method WriteLine | Assert.cs:56:10:56:11 | exit M8 (normal) | -| Assert.cs:60:9:60:36 | ...; | Assert.cs:60:27:60:27 | access to local variable s | +| Assert.cs:60:9:60:35 | After call to method WriteLine | Assert.cs:60:9:60:36 | After ...; | +| Assert.cs:60:9:60:35 | Before call to method WriteLine | Assert.cs:60:27:60:34 | Before access to property Length | +| Assert.cs:60:9:60:35 | call to method WriteLine | Assert.cs:60:9:60:35 | After call to method WriteLine | +| Assert.cs:60:9:60:36 | ...; | Assert.cs:60:9:60:35 | Before call to method WriteLine | +| Assert.cs:60:9:60:36 | After ...; | Assert.cs:57:5:61:5 | After {...} | | Assert.cs:60:27:60:27 | access to local variable s | Assert.cs:60:27:60:34 | access to property Length | -| Assert.cs:60:27:60:34 | access to property Length | Assert.cs:60:9:60:35 | call to method WriteLine | -| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:64:5:68:5 | {...} | +| Assert.cs:60:27:60:34 | After access to property Length | Assert.cs:60:9:60:35 | call to method WriteLine | +| Assert.cs:60:27:60:34 | Before access to property Length | Assert.cs:60:27:60:27 | access to local variable s | +| Assert.cs:60:27:60:34 | access to property Length | Assert.cs:60:27:60:34 | After access to property Length | +| Assert.cs:63:10:63:11 | Entry | Assert.cs:63:18:63:18 | b | +| Assert.cs:63:18:63:18 | b | Assert.cs:64:5:68:5 | {...} | +| Assert.cs:64:5:68:5 | After {...} | Assert.cs:63:10:63:11 | Normal Exit | | Assert.cs:64:5:68:5 | {...} | Assert.cs:65:9:65:33 | ... ...; | -| Assert.cs:65:9:65:33 | ... ...; | Assert.cs:65:20:65:20 | access to parameter b | -| Assert.cs:65:16:65:32 | String s = ... | Assert.cs:66:9:66:39 | ...; | -| Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:24:65:27 | null | -| Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:31:65:32 | "" | -| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:16:65:32 | String s = ... | -| Assert.cs:66:9:66:38 | call to method IsFalse | Assert.cs:63:10:63:11 | exit M9 (abnormal) | -| Assert.cs:66:9:66:38 | call to method IsFalse | Assert.cs:67:9:67:36 | ...; | -| Assert.cs:66:9:66:39 | ...; | Assert.cs:66:24:66:24 | access to local variable s | +| Assert.cs:65:9:65:33 | ... ...; | Assert.cs:65:16:65:32 | Before String s = ... | +| Assert.cs:65:9:65:33 | After ... ...; | Assert.cs:66:9:66:39 | ...; | +| Assert.cs:65:16:65:16 | access to local variable s | Assert.cs:65:20:65:32 | ... ? ... : ... | +| Assert.cs:65:16:65:32 | After String s = ... | Assert.cs:65:9:65:33 | After ... ...; | +| Assert.cs:65:16:65:32 | Before String s = ... | Assert.cs:65:16:65:16 | access to local variable s | +| Assert.cs:65:16:65:32 | String s = ... | Assert.cs:65:16:65:32 | After String s = ... | +| Assert.cs:65:20:65:20 | After access to parameter b [false] | Assert.cs:65:31:65:32 | "" | +| Assert.cs:65:20:65:20 | After access to parameter b [true] | Assert.cs:65:24:65:27 | null | +| Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:20:65:20 | After access to parameter b [false] | +| Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:20:65:20 | After access to parameter b [true] | +| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:20:65:20 | access to parameter b | +| Assert.cs:65:20:65:32 | After ... ? ... : ... | Assert.cs:65:16:65:32 | String s = ... | +| Assert.cs:66:9:66:38 | After call to method IsFalse | Assert.cs:66:9:66:39 | After ...; | +| Assert.cs:66:9:66:38 | Before call to method IsFalse | Assert.cs:66:24:66:37 | ... \|\| ... | +| Assert.cs:66:9:66:38 | call to method IsFalse | Assert.cs:63:10:63:11 | Exceptional Exit | +| Assert.cs:66:9:66:38 | call to method IsFalse | Assert.cs:66:9:66:38 | After call to method IsFalse | +| Assert.cs:66:9:66:39 | ...; | Assert.cs:66:9:66:38 | Before call to method IsFalse | +| Assert.cs:66:9:66:39 | After ...; | Assert.cs:67:9:67:36 | ...; | | Assert.cs:66:24:66:24 | access to local variable s | Assert.cs:66:29:66:32 | null | -| Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:24:66:37 | ... \|\| ... | -| Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:37:66:37 | access to parameter b | -| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:66:9:66:38 | call to method IsFalse | +| Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:24:66:32 | After ... == ... [false] | +| Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:24:66:32 | After ... == ... [true] | +| Assert.cs:66:24:66:32 | After ... == ... [false] | Assert.cs:66:37:66:37 | access to parameter b | +| Assert.cs:66:24:66:32 | Before ... == ... | Assert.cs:66:24:66:24 | access to local variable s | +| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:66:24:66:32 | Before ... == ... | +| Assert.cs:66:24:66:37 | After ... \|\| ... | Assert.cs:66:9:66:38 | call to method IsFalse | | Assert.cs:66:29:66:32 | null | Assert.cs:66:24:66:32 | ... == ... | -| Assert.cs:67:9:67:35 | call to method WriteLine | Assert.cs:63:10:63:11 | exit M9 (normal) | -| Assert.cs:67:9:67:36 | ...; | Assert.cs:67:27:67:27 | access to local variable s | +| Assert.cs:67:9:67:35 | After call to method WriteLine | Assert.cs:67:9:67:36 | After ...; | +| Assert.cs:67:9:67:35 | Before call to method WriteLine | Assert.cs:67:27:67:34 | Before access to property Length | +| Assert.cs:67:9:67:35 | call to method WriteLine | Assert.cs:67:9:67:35 | After call to method WriteLine | +| Assert.cs:67:9:67:36 | ...; | Assert.cs:67:9:67:35 | Before call to method WriteLine | +| Assert.cs:67:9:67:36 | After ...; | Assert.cs:64:5:68:5 | After {...} | | Assert.cs:67:27:67:27 | access to local variable s | Assert.cs:67:27:67:34 | access to property Length | -| Assert.cs:67:27:67:34 | access to property Length | Assert.cs:67:9:67:35 | call to method WriteLine | -| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:71:5:75:5 | {...} | +| Assert.cs:67:27:67:34 | After access to property Length | Assert.cs:67:9:67:35 | call to method WriteLine | +| Assert.cs:67:27:67:34 | Before access to property Length | Assert.cs:67:27:67:27 | access to local variable s | +| Assert.cs:67:27:67:34 | access to property Length | Assert.cs:67:27:67:34 | After access to property Length | +| Assert.cs:70:10:70:12 | Entry | Assert.cs:70:19:70:19 | b | +| Assert.cs:70:19:70:19 | b | Assert.cs:71:5:75:5 | {...} | +| Assert.cs:71:5:75:5 | After {...} | Assert.cs:70:10:70:12 | Normal Exit | | Assert.cs:71:5:75:5 | {...} | Assert.cs:72:9:72:33 | ... ...; | -| Assert.cs:72:9:72:33 | ... ...; | Assert.cs:72:20:72:20 | access to parameter b | -| Assert.cs:72:16:72:32 | String s = ... | Assert.cs:73:9:73:38 | ...; | -| Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:24:72:27 | null | -| Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:31:72:32 | "" | -| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:16:72:32 | String s = ... | -| Assert.cs:73:9:73:37 | call to method IsTrue | Assert.cs:70:10:70:12 | exit M10 (abnormal) | -| Assert.cs:73:9:73:37 | call to method IsTrue | Assert.cs:74:9:74:36 | ...; | -| Assert.cs:73:9:73:38 | ...; | Assert.cs:73:23:73:23 | access to local variable s | +| Assert.cs:72:9:72:33 | ... ...; | Assert.cs:72:16:72:32 | Before String s = ... | +| Assert.cs:72:9:72:33 | After ... ...; | Assert.cs:73:9:73:38 | ...; | +| Assert.cs:72:16:72:16 | access to local variable s | Assert.cs:72:20:72:32 | ... ? ... : ... | +| Assert.cs:72:16:72:32 | After String s = ... | Assert.cs:72:9:72:33 | After ... ...; | +| Assert.cs:72:16:72:32 | Before String s = ... | Assert.cs:72:16:72:16 | access to local variable s | +| Assert.cs:72:16:72:32 | String s = ... | Assert.cs:72:16:72:32 | After String s = ... | +| Assert.cs:72:20:72:20 | After access to parameter b [false] | Assert.cs:72:31:72:32 | "" | +| Assert.cs:72:20:72:20 | After access to parameter b [true] | Assert.cs:72:24:72:27 | null | +| Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:20:72:20 | After access to parameter b [false] | +| Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:20:72:20 | After access to parameter b [true] | +| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:20:72:20 | access to parameter b | +| Assert.cs:72:20:72:32 | After ... ? ... : ... | Assert.cs:72:16:72:32 | String s = ... | +| Assert.cs:73:9:73:37 | After call to method IsTrue | Assert.cs:73:9:73:38 | After ...; | +| Assert.cs:73:9:73:37 | Before call to method IsTrue | Assert.cs:73:23:73:36 | ... && ... | +| Assert.cs:73:9:73:37 | call to method IsTrue | Assert.cs:70:10:70:12 | Exceptional Exit | +| Assert.cs:73:9:73:37 | call to method IsTrue | Assert.cs:73:9:73:37 | After call to method IsTrue | +| Assert.cs:73:9:73:38 | ...; | Assert.cs:73:9:73:37 | Before call to method IsTrue | +| Assert.cs:73:9:73:38 | After ...; | Assert.cs:74:9:74:36 | ...; | | Assert.cs:73:23:73:23 | access to local variable s | Assert.cs:73:28:73:31 | null | -| Assert.cs:73:23:73:31 | ... == ... | Assert.cs:73:23:73:36 | ... && ... | -| Assert.cs:73:23:73:31 | ... == ... | Assert.cs:73:36:73:36 | access to parameter b | -| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:73:9:73:37 | call to method IsTrue | +| Assert.cs:73:23:73:31 | ... == ... | Assert.cs:73:23:73:31 | After ... == ... [false] | +| Assert.cs:73:23:73:31 | ... == ... | Assert.cs:73:23:73:31 | After ... == ... [true] | +| Assert.cs:73:23:73:31 | After ... == ... [true] | Assert.cs:73:36:73:36 | access to parameter b | +| Assert.cs:73:23:73:31 | Before ... == ... | Assert.cs:73:23:73:23 | access to local variable s | +| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:73:23:73:31 | Before ... == ... | +| Assert.cs:73:23:73:36 | After ... && ... | Assert.cs:73:9:73:37 | call to method IsTrue | | Assert.cs:73:28:73:31 | null | Assert.cs:73:23:73:31 | ... == ... | -| Assert.cs:74:9:74:35 | call to method WriteLine | Assert.cs:70:10:70:12 | exit M10 (normal) | -| Assert.cs:74:9:74:36 | ...; | Assert.cs:74:27:74:27 | access to local variable s | +| Assert.cs:74:9:74:35 | After call to method WriteLine | Assert.cs:74:9:74:36 | After ...; | +| Assert.cs:74:9:74:35 | Before call to method WriteLine | Assert.cs:74:27:74:34 | Before access to property Length | +| Assert.cs:74:9:74:35 | call to method WriteLine | Assert.cs:74:9:74:35 | After call to method WriteLine | +| Assert.cs:74:9:74:36 | ...; | Assert.cs:74:9:74:35 | Before call to method WriteLine | +| Assert.cs:74:9:74:36 | After ...; | Assert.cs:71:5:75:5 | After {...} | | Assert.cs:74:27:74:27 | access to local variable s | Assert.cs:74:27:74:34 | access to property Length | -| Assert.cs:74:27:74:34 | access to property Length | Assert.cs:74:9:74:35 | call to method WriteLine | -| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:78:5:82:5 | {...} | +| Assert.cs:74:27:74:34 | After access to property Length | Assert.cs:74:9:74:35 | call to method WriteLine | +| Assert.cs:74:27:74:34 | Before access to property Length | Assert.cs:74:27:74:27 | access to local variable s | +| Assert.cs:74:27:74:34 | access to property Length | Assert.cs:74:27:74:34 | After access to property Length | +| Assert.cs:77:10:77:12 | Entry | Assert.cs:77:19:77:19 | b | +| Assert.cs:77:19:77:19 | b | Assert.cs:78:5:82:5 | {...} | +| Assert.cs:78:5:82:5 | After {...} | Assert.cs:77:10:77:12 | Normal Exit | | Assert.cs:78:5:82:5 | {...} | Assert.cs:79:9:79:33 | ... ...; | -| Assert.cs:79:9:79:33 | ... ...; | Assert.cs:79:20:79:20 | access to parameter b | -| Assert.cs:79:16:79:32 | String s = ... | Assert.cs:80:9:80:39 | ...; | -| Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:24:79:27 | null | -| Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:31:79:32 | "" | -| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:16:79:32 | String s = ... | -| Assert.cs:80:9:80:38 | call to method IsFalse | Assert.cs:77:10:77:12 | exit M11 (abnormal) | -| Assert.cs:80:9:80:38 | call to method IsFalse | Assert.cs:81:9:81:36 | ...; | -| Assert.cs:80:9:80:39 | ...; | Assert.cs:80:24:80:24 | access to local variable s | +| Assert.cs:79:9:79:33 | ... ...; | Assert.cs:79:16:79:32 | Before String s = ... | +| Assert.cs:79:9:79:33 | After ... ...; | Assert.cs:80:9:80:39 | ...; | +| Assert.cs:79:16:79:16 | access to local variable s | Assert.cs:79:20:79:32 | ... ? ... : ... | +| Assert.cs:79:16:79:32 | After String s = ... | Assert.cs:79:9:79:33 | After ... ...; | +| Assert.cs:79:16:79:32 | Before String s = ... | Assert.cs:79:16:79:16 | access to local variable s | +| Assert.cs:79:16:79:32 | String s = ... | Assert.cs:79:16:79:32 | After String s = ... | +| Assert.cs:79:20:79:20 | After access to parameter b [false] | Assert.cs:79:31:79:32 | "" | +| Assert.cs:79:20:79:20 | After access to parameter b [true] | Assert.cs:79:24:79:27 | null | +| Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:20:79:20 | After access to parameter b [false] | +| Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:20:79:20 | After access to parameter b [true] | +| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:20:79:20 | access to parameter b | +| Assert.cs:79:20:79:32 | After ... ? ... : ... | Assert.cs:79:16:79:32 | String s = ... | +| Assert.cs:80:9:80:38 | After call to method IsFalse | Assert.cs:80:9:80:39 | After ...; | +| Assert.cs:80:9:80:38 | Before call to method IsFalse | Assert.cs:80:24:80:37 | ... \|\| ... | +| Assert.cs:80:9:80:38 | call to method IsFalse | Assert.cs:77:10:77:12 | Exceptional Exit | +| Assert.cs:80:9:80:38 | call to method IsFalse | Assert.cs:80:9:80:38 | After call to method IsFalse | +| Assert.cs:80:9:80:39 | ...; | Assert.cs:80:9:80:38 | Before call to method IsFalse | +| Assert.cs:80:9:80:39 | After ...; | Assert.cs:81:9:81:36 | ...; | | Assert.cs:80:24:80:24 | access to local variable s | Assert.cs:80:29:80:32 | null | -| Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:24:80:37 | ... \|\| ... | -| Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:37:80:37 | access to parameter b | -| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:80:9:80:38 | call to method IsFalse | +| Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:24:80:32 | After ... != ... [false] | +| Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:24:80:32 | After ... != ... [true] | +| Assert.cs:80:24:80:32 | After ... != ... [false] | Assert.cs:80:37:80:37 | access to parameter b | +| Assert.cs:80:24:80:32 | Before ... != ... | Assert.cs:80:24:80:24 | access to local variable s | +| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:80:24:80:32 | Before ... != ... | +| Assert.cs:80:24:80:37 | After ... \|\| ... | Assert.cs:80:9:80:38 | call to method IsFalse | | Assert.cs:80:29:80:32 | null | Assert.cs:80:24:80:32 | ... != ... | -| Assert.cs:81:9:81:35 | call to method WriteLine | Assert.cs:77:10:77:12 | exit M11 (normal) | -| Assert.cs:81:9:81:36 | ...; | Assert.cs:81:27:81:27 | access to local variable s | +| Assert.cs:81:9:81:35 | After call to method WriteLine | Assert.cs:81:9:81:36 | After ...; | +| Assert.cs:81:9:81:35 | Before call to method WriteLine | Assert.cs:81:27:81:34 | Before access to property Length | +| Assert.cs:81:9:81:35 | call to method WriteLine | Assert.cs:81:9:81:35 | After call to method WriteLine | +| Assert.cs:81:9:81:36 | ...; | Assert.cs:81:9:81:35 | Before call to method WriteLine | +| Assert.cs:81:9:81:36 | After ...; | Assert.cs:78:5:82:5 | After {...} | | Assert.cs:81:27:81:27 | access to local variable s | Assert.cs:81:27:81:34 | access to property Length | -| Assert.cs:81:27:81:34 | access to property Length | Assert.cs:81:9:81:35 | call to method WriteLine | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:85:5:129:5 | {...} | +| Assert.cs:81:27:81:34 | After access to property Length | Assert.cs:81:9:81:35 | call to method WriteLine | +| Assert.cs:81:27:81:34 | Before access to property Length | Assert.cs:81:27:81:27 | access to local variable s | +| Assert.cs:81:27:81:34 | access to property Length | Assert.cs:81:27:81:34 | After access to property Length | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:84:19:84:19 | b | +| Assert.cs:84:19:84:19 | b | Assert.cs:85:5:129:5 | {...} | +| Assert.cs:85:5:129:5 | After {...} | Assert.cs:84:10:84:12 | Normal Exit | | Assert.cs:85:5:129:5 | {...} | Assert.cs:86:9:86:33 | ... ...; | -| Assert.cs:86:9:86:33 | ... ...; | Assert.cs:86:20:86:20 | access to parameter b | -| Assert.cs:86:16:86:32 | String s = ... | Assert.cs:87:9:87:32 | ...; | -| Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:86:24:86:27 | null | -| Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:86:31:86:32 | "" | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:86:16:86:32 | String s = ... | -| Assert.cs:87:9:87:31 | call to method Assert | Assert.cs:84:10:84:12 | exit M12 (abnormal) | -| Assert.cs:87:9:87:31 | call to method Assert | Assert.cs:88:9:88:36 | ...; | -| Assert.cs:87:9:87:32 | ...; | Assert.cs:87:22:87:22 | access to local variable s | +| Assert.cs:86:9:86:33 | ... ...; | Assert.cs:86:16:86:32 | Before String s = ... | +| Assert.cs:86:9:86:33 | After ... ...; | Assert.cs:87:9:87:32 | ...; | +| Assert.cs:86:16:86:16 | access to local variable s | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:86:16:86:32 | After String s = ... | Assert.cs:86:9:86:33 | After ... ...; | +| Assert.cs:86:16:86:32 | Before String s = ... | Assert.cs:86:16:86:16 | access to local variable s | +| Assert.cs:86:16:86:32 | String s = ... | Assert.cs:86:16:86:32 | After String s = ... | +| Assert.cs:86:20:86:20 | After access to parameter b [false] | Assert.cs:86:31:86:32 | "" | +| Assert.cs:86:20:86:20 | After access to parameter b [true] | Assert.cs:86:24:86:27 | null | +| Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:86:20:86:20 | After access to parameter b [false] | +| Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:86:20:86:20 | After access to parameter b [true] | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:86:20:86:20 | access to parameter b | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:86:16:86:32 | String s = ... | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:87:9:87:32 | After ...; | +| Assert.cs:87:9:87:31 | Before call to method Assert | Assert.cs:87:22:87:30 | Before ... != ... | +| Assert.cs:87:9:87:31 | call to method Assert | Assert.cs:84:10:84:12 | Exceptional Exit | +| Assert.cs:87:9:87:31 | call to method Assert | Assert.cs:87:9:87:31 | After call to method Assert | +| Assert.cs:87:9:87:32 | ...; | Assert.cs:87:9:87:31 | Before call to method Assert | +| Assert.cs:87:9:87:32 | After ...; | Assert.cs:88:9:88:36 | ...; | | Assert.cs:87:22:87:22 | access to local variable s | Assert.cs:87:27:87:30 | null | -| Assert.cs:87:22:87:30 | ... != ... | Assert.cs:87:9:87:31 | call to method Assert | +| Assert.cs:87:22:87:30 | ... != ... | Assert.cs:87:22:87:30 | After ... != ... | +| Assert.cs:87:22:87:30 | After ... != ... | Assert.cs:87:9:87:31 | call to method Assert | +| Assert.cs:87:22:87:30 | Before ... != ... | Assert.cs:87:22:87:22 | access to local variable s | | Assert.cs:87:27:87:30 | null | Assert.cs:87:22:87:30 | ... != ... | -| Assert.cs:88:9:88:35 | call to method WriteLine | Assert.cs:90:9:90:26 | ...; | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:88:27:88:27 | access to local variable s | +| Assert.cs:88:9:88:35 | After call to method WriteLine | Assert.cs:88:9:88:36 | After ...; | +| Assert.cs:88:9:88:35 | Before call to method WriteLine | Assert.cs:88:27:88:34 | Before access to property Length | +| Assert.cs:88:9:88:35 | call to method WriteLine | Assert.cs:88:9:88:35 | After call to method WriteLine | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:88:9:88:35 | Before call to method WriteLine | +| Assert.cs:88:9:88:36 | After ...; | Assert.cs:90:9:90:26 | ...; | | Assert.cs:88:27:88:27 | access to local variable s | Assert.cs:88:27:88:34 | access to property Length | -| Assert.cs:88:27:88:34 | access to property Length | Assert.cs:88:9:88:35 | call to method WriteLine | -| Assert.cs:90:9:90:25 | ... = ... | Assert.cs:91:9:91:25 | ...; | -| Assert.cs:90:9:90:26 | ...; | Assert.cs:90:13:90:13 | access to parameter b | -| Assert.cs:90:13:90:13 | access to parameter b | Assert.cs:90:17:90:20 | null | -| Assert.cs:90:13:90:13 | access to parameter b | Assert.cs:90:24:90:25 | "" | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:90:9:90:25 | ... = ... | -| Assert.cs:91:9:91:24 | call to method IsNull | Assert.cs:92:9:92:36 | ...; | -| Assert.cs:91:9:91:25 | ...; | Assert.cs:91:23:91:23 | access to local variable s | +| Assert.cs:88:27:88:34 | After access to property Length | Assert.cs:88:9:88:35 | call to method WriteLine | +| Assert.cs:88:27:88:34 | Before access to property Length | Assert.cs:88:27:88:27 | access to local variable s | +| Assert.cs:88:27:88:34 | access to property Length | Assert.cs:88:27:88:34 | After access to property Length | +| Assert.cs:90:9:90:9 | access to local variable s | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:90:9:90:25 | ... = ... | Assert.cs:90:9:90:25 | After ... = ... | +| Assert.cs:90:9:90:25 | After ... = ... | Assert.cs:90:9:90:26 | After ...; | +| Assert.cs:90:9:90:25 | Before ... = ... | Assert.cs:90:9:90:9 | access to local variable s | +| Assert.cs:90:9:90:26 | ...; | Assert.cs:90:9:90:25 | Before ... = ... | +| Assert.cs:90:9:90:26 | After ...; | Assert.cs:91:9:91:25 | ...; | +| Assert.cs:90:13:90:13 | After access to parameter b [false] | Assert.cs:90:24:90:25 | "" | +| Assert.cs:90:13:90:13 | After access to parameter b [true] | Assert.cs:90:17:90:20 | null | +| Assert.cs:90:13:90:13 | access to parameter b | Assert.cs:90:13:90:13 | After access to parameter b [false] | +| Assert.cs:90:13:90:13 | access to parameter b | Assert.cs:90:13:90:13 | After access to parameter b [true] | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:90:13:90:13 | access to parameter b | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:90:9:90:25 | ... = ... | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:91:9:91:25 | After ...; | +| Assert.cs:91:9:91:24 | Before call to method IsNull | Assert.cs:91:23:91:23 | access to local variable s | +| Assert.cs:91:9:91:24 | call to method IsNull | Assert.cs:91:9:91:24 | After call to method IsNull | +| Assert.cs:91:9:91:25 | ...; | Assert.cs:91:9:91:24 | Before call to method IsNull | +| Assert.cs:91:9:91:25 | After ...; | Assert.cs:92:9:92:36 | ...; | | Assert.cs:91:23:91:23 | access to local variable s | Assert.cs:91:9:91:24 | call to method IsNull | -| Assert.cs:92:9:92:35 | call to method WriteLine | Assert.cs:94:9:94:26 | ...; | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:92:27:92:27 | access to local variable s | +| Assert.cs:92:9:92:35 | After call to method WriteLine | Assert.cs:92:9:92:36 | After ...; | +| Assert.cs:92:9:92:35 | Before call to method WriteLine | Assert.cs:92:27:92:34 | Before access to property Length | +| Assert.cs:92:9:92:35 | call to method WriteLine | Assert.cs:92:9:92:35 | After call to method WriteLine | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:92:9:92:35 | Before call to method WriteLine | +| Assert.cs:92:9:92:36 | After ...; | Assert.cs:94:9:94:26 | ...; | | Assert.cs:92:27:92:27 | access to local variable s | Assert.cs:92:27:92:34 | access to property Length | -| Assert.cs:92:27:92:34 | access to property Length | Assert.cs:92:9:92:35 | call to method WriteLine | -| Assert.cs:94:9:94:25 | ... = ... | Assert.cs:95:9:95:28 | ...; | -| Assert.cs:94:9:94:26 | ...; | Assert.cs:94:13:94:13 | access to parameter b | -| Assert.cs:94:13:94:13 | access to parameter b | Assert.cs:94:17:94:20 | null | -| Assert.cs:94:13:94:13 | access to parameter b | Assert.cs:94:24:94:25 | "" | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:94:9:94:25 | ... = ... | -| Assert.cs:95:9:95:27 | call to method IsNotNull | Assert.cs:96:9:96:36 | ...; | -| Assert.cs:95:9:95:28 | ...; | Assert.cs:95:26:95:26 | access to local variable s | +| Assert.cs:92:27:92:34 | After access to property Length | Assert.cs:92:9:92:35 | call to method WriteLine | +| Assert.cs:92:27:92:34 | Before access to property Length | Assert.cs:92:27:92:27 | access to local variable s | +| Assert.cs:92:27:92:34 | access to property Length | Assert.cs:92:27:92:34 | After access to property Length | +| Assert.cs:94:9:94:9 | access to local variable s | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:94:9:94:25 | ... = ... | Assert.cs:94:9:94:25 | After ... = ... | +| Assert.cs:94:9:94:25 | After ... = ... | Assert.cs:94:9:94:26 | After ...; | +| Assert.cs:94:9:94:25 | Before ... = ... | Assert.cs:94:9:94:9 | access to local variable s | +| Assert.cs:94:9:94:26 | ...; | Assert.cs:94:9:94:25 | Before ... = ... | +| Assert.cs:94:9:94:26 | After ...; | Assert.cs:95:9:95:28 | ...; | +| Assert.cs:94:13:94:13 | After access to parameter b [false] | Assert.cs:94:24:94:25 | "" | +| Assert.cs:94:13:94:13 | After access to parameter b [true] | Assert.cs:94:17:94:20 | null | +| Assert.cs:94:13:94:13 | access to parameter b | Assert.cs:94:13:94:13 | After access to parameter b [false] | +| Assert.cs:94:13:94:13 | access to parameter b | Assert.cs:94:13:94:13 | After access to parameter b [true] | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:94:13:94:13 | access to parameter b | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:94:9:94:25 | ... = ... | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:95:9:95:28 | After ...; | +| Assert.cs:95:9:95:27 | Before call to method IsNotNull | Assert.cs:95:26:95:26 | access to local variable s | +| Assert.cs:95:9:95:27 | call to method IsNotNull | Assert.cs:95:9:95:27 | After call to method IsNotNull | +| Assert.cs:95:9:95:28 | ...; | Assert.cs:95:9:95:27 | Before call to method IsNotNull | +| Assert.cs:95:9:95:28 | After ...; | Assert.cs:96:9:96:36 | ...; | | Assert.cs:95:26:95:26 | access to local variable s | Assert.cs:95:9:95:27 | call to method IsNotNull | -| Assert.cs:96:9:96:35 | call to method WriteLine | Assert.cs:98:9:98:26 | ...; | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:96:27:96:27 | access to local variable s | +| Assert.cs:96:9:96:35 | After call to method WriteLine | Assert.cs:96:9:96:36 | After ...; | +| Assert.cs:96:9:96:35 | Before call to method WriteLine | Assert.cs:96:27:96:34 | Before access to property Length | +| Assert.cs:96:9:96:35 | call to method WriteLine | Assert.cs:96:9:96:35 | After call to method WriteLine | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:96:9:96:35 | Before call to method WriteLine | +| Assert.cs:96:9:96:36 | After ...; | Assert.cs:98:9:98:26 | ...; | | Assert.cs:96:27:96:27 | access to local variable s | Assert.cs:96:27:96:34 | access to property Length | -| Assert.cs:96:27:96:34 | access to property Length | Assert.cs:96:9:96:35 | call to method WriteLine | -| Assert.cs:98:9:98:25 | ... = ... | Assert.cs:99:9:99:33 | ...; | -| Assert.cs:98:9:98:26 | ...; | Assert.cs:98:13:98:13 | access to parameter b | -| Assert.cs:98:13:98:13 | access to parameter b | Assert.cs:98:17:98:20 | null | -| Assert.cs:98:13:98:13 | access to parameter b | Assert.cs:98:24:98:25 | "" | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:98:9:98:25 | ... = ... | -| Assert.cs:99:9:99:32 | call to method IsTrue | Assert.cs:100:9:100:36 | ...; | -| Assert.cs:99:9:99:33 | ...; | Assert.cs:99:23:99:23 | access to local variable s | +| Assert.cs:96:27:96:34 | After access to property Length | Assert.cs:96:9:96:35 | call to method WriteLine | +| Assert.cs:96:27:96:34 | Before access to property Length | Assert.cs:96:27:96:27 | access to local variable s | +| Assert.cs:96:27:96:34 | access to property Length | Assert.cs:96:27:96:34 | After access to property Length | +| Assert.cs:98:9:98:9 | access to local variable s | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:98:9:98:25 | ... = ... | Assert.cs:98:9:98:25 | After ... = ... | +| Assert.cs:98:9:98:25 | After ... = ... | Assert.cs:98:9:98:26 | After ...; | +| Assert.cs:98:9:98:25 | Before ... = ... | Assert.cs:98:9:98:9 | access to local variable s | +| Assert.cs:98:9:98:26 | ...; | Assert.cs:98:9:98:25 | Before ... = ... | +| Assert.cs:98:9:98:26 | After ...; | Assert.cs:99:9:99:33 | ...; | +| Assert.cs:98:13:98:13 | After access to parameter b [false] | Assert.cs:98:24:98:25 | "" | +| Assert.cs:98:13:98:13 | After access to parameter b [true] | Assert.cs:98:17:98:20 | null | +| Assert.cs:98:13:98:13 | access to parameter b | Assert.cs:98:13:98:13 | After access to parameter b [false] | +| Assert.cs:98:13:98:13 | access to parameter b | Assert.cs:98:13:98:13 | After access to parameter b [true] | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:98:13:98:13 | access to parameter b | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:98:9:98:25 | ... = ... | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:99:9:99:33 | After ...; | +| Assert.cs:99:9:99:32 | Before call to method IsTrue | Assert.cs:99:23:99:31 | Before ... == ... | +| Assert.cs:99:9:99:32 | call to method IsTrue | Assert.cs:99:9:99:32 | After call to method IsTrue | +| Assert.cs:99:9:99:33 | ...; | Assert.cs:99:9:99:32 | Before call to method IsTrue | +| Assert.cs:99:9:99:33 | After ...; | Assert.cs:100:9:100:36 | ...; | | Assert.cs:99:23:99:23 | access to local variable s | Assert.cs:99:28:99:31 | null | -| Assert.cs:99:23:99:31 | ... == ... | Assert.cs:99:9:99:32 | call to method IsTrue | +| Assert.cs:99:23:99:31 | ... == ... | Assert.cs:99:23:99:31 | After ... == ... | +| Assert.cs:99:23:99:31 | After ... == ... | Assert.cs:99:9:99:32 | call to method IsTrue | +| Assert.cs:99:23:99:31 | Before ... == ... | Assert.cs:99:23:99:23 | access to local variable s | | Assert.cs:99:28:99:31 | null | Assert.cs:99:23:99:31 | ... == ... | -| Assert.cs:100:9:100:35 | call to method WriteLine | Assert.cs:102:9:102:26 | ...; | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:100:27:100:27 | access to local variable s | +| Assert.cs:100:9:100:35 | After call to method WriteLine | Assert.cs:100:9:100:36 | After ...; | +| Assert.cs:100:9:100:35 | Before call to method WriteLine | Assert.cs:100:27:100:34 | Before access to property Length | +| Assert.cs:100:9:100:35 | call to method WriteLine | Assert.cs:100:9:100:35 | After call to method WriteLine | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:100:9:100:35 | Before call to method WriteLine | +| Assert.cs:100:9:100:36 | After ...; | Assert.cs:102:9:102:26 | ...; | | Assert.cs:100:27:100:27 | access to local variable s | Assert.cs:100:27:100:34 | access to property Length | -| Assert.cs:100:27:100:34 | access to property Length | Assert.cs:100:9:100:35 | call to method WriteLine | -| Assert.cs:102:9:102:25 | ... = ... | Assert.cs:103:9:103:33 | ...; | -| Assert.cs:102:9:102:26 | ...; | Assert.cs:102:13:102:13 | access to parameter b | -| Assert.cs:102:13:102:13 | access to parameter b | Assert.cs:102:17:102:20 | null | -| Assert.cs:102:13:102:13 | access to parameter b | Assert.cs:102:24:102:25 | "" | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:102:9:102:25 | ... = ... | -| Assert.cs:103:9:103:32 | call to method IsTrue | Assert.cs:104:9:104:36 | ...; | -| Assert.cs:103:9:103:33 | ...; | Assert.cs:103:23:103:23 | access to local variable s | +| Assert.cs:100:27:100:34 | After access to property Length | Assert.cs:100:9:100:35 | call to method WriteLine | +| Assert.cs:100:27:100:34 | Before access to property Length | Assert.cs:100:27:100:27 | access to local variable s | +| Assert.cs:100:27:100:34 | access to property Length | Assert.cs:100:27:100:34 | After access to property Length | +| Assert.cs:102:9:102:9 | access to local variable s | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:102:9:102:25 | ... = ... | Assert.cs:102:9:102:25 | After ... = ... | +| Assert.cs:102:9:102:25 | After ... = ... | Assert.cs:102:9:102:26 | After ...; | +| Assert.cs:102:9:102:25 | Before ... = ... | Assert.cs:102:9:102:9 | access to local variable s | +| Assert.cs:102:9:102:26 | ...; | Assert.cs:102:9:102:25 | Before ... = ... | +| Assert.cs:102:9:102:26 | After ...; | Assert.cs:103:9:103:33 | ...; | +| Assert.cs:102:13:102:13 | After access to parameter b [false] | Assert.cs:102:24:102:25 | "" | +| Assert.cs:102:13:102:13 | After access to parameter b [true] | Assert.cs:102:17:102:20 | null | +| Assert.cs:102:13:102:13 | access to parameter b | Assert.cs:102:13:102:13 | After access to parameter b [false] | +| Assert.cs:102:13:102:13 | access to parameter b | Assert.cs:102:13:102:13 | After access to parameter b [true] | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:102:13:102:13 | access to parameter b | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:102:9:102:25 | ... = ... | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:103:9:103:33 | After ...; | +| Assert.cs:103:9:103:32 | Before call to method IsTrue | Assert.cs:103:23:103:31 | Before ... != ... | +| Assert.cs:103:9:103:32 | call to method IsTrue | Assert.cs:103:9:103:32 | After call to method IsTrue | +| Assert.cs:103:9:103:33 | ...; | Assert.cs:103:9:103:32 | Before call to method IsTrue | +| Assert.cs:103:9:103:33 | After ...; | Assert.cs:104:9:104:36 | ...; | | Assert.cs:103:23:103:23 | access to local variable s | Assert.cs:103:28:103:31 | null | -| Assert.cs:103:23:103:31 | ... != ... | Assert.cs:103:9:103:32 | call to method IsTrue | +| Assert.cs:103:23:103:31 | ... != ... | Assert.cs:103:23:103:31 | After ... != ... | +| Assert.cs:103:23:103:31 | After ... != ... | Assert.cs:103:9:103:32 | call to method IsTrue | +| Assert.cs:103:23:103:31 | Before ... != ... | Assert.cs:103:23:103:23 | access to local variable s | | Assert.cs:103:28:103:31 | null | Assert.cs:103:23:103:31 | ... != ... | -| Assert.cs:104:9:104:35 | call to method WriteLine | Assert.cs:106:9:106:26 | ...; | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:104:27:104:27 | access to local variable s | +| Assert.cs:104:9:104:35 | After call to method WriteLine | Assert.cs:104:9:104:36 | After ...; | +| Assert.cs:104:9:104:35 | Before call to method WriteLine | Assert.cs:104:27:104:34 | Before access to property Length | +| Assert.cs:104:9:104:35 | call to method WriteLine | Assert.cs:104:9:104:35 | After call to method WriteLine | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:104:9:104:35 | Before call to method WriteLine | +| Assert.cs:104:9:104:36 | After ...; | Assert.cs:106:9:106:26 | ...; | | Assert.cs:104:27:104:27 | access to local variable s | Assert.cs:104:27:104:34 | access to property Length | -| Assert.cs:104:27:104:34 | access to property Length | Assert.cs:104:9:104:35 | call to method WriteLine | -| Assert.cs:106:9:106:25 | ... = ... | Assert.cs:107:9:107:34 | ...; | -| Assert.cs:106:9:106:26 | ...; | Assert.cs:106:13:106:13 | access to parameter b | -| Assert.cs:106:13:106:13 | access to parameter b | Assert.cs:106:17:106:20 | null | -| Assert.cs:106:13:106:13 | access to parameter b | Assert.cs:106:24:106:25 | "" | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:106:9:106:25 | ... = ... | -| Assert.cs:107:9:107:33 | call to method IsFalse | Assert.cs:108:9:108:36 | ...; | -| Assert.cs:107:9:107:34 | ...; | Assert.cs:107:24:107:24 | access to local variable s | +| Assert.cs:104:27:104:34 | After access to property Length | Assert.cs:104:9:104:35 | call to method WriteLine | +| Assert.cs:104:27:104:34 | Before access to property Length | Assert.cs:104:27:104:27 | access to local variable s | +| Assert.cs:104:27:104:34 | access to property Length | Assert.cs:104:27:104:34 | After access to property Length | +| Assert.cs:106:9:106:9 | access to local variable s | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:106:9:106:25 | ... = ... | Assert.cs:106:9:106:25 | After ... = ... | +| Assert.cs:106:9:106:25 | After ... = ... | Assert.cs:106:9:106:26 | After ...; | +| Assert.cs:106:9:106:25 | Before ... = ... | Assert.cs:106:9:106:9 | access to local variable s | +| Assert.cs:106:9:106:26 | ...; | Assert.cs:106:9:106:25 | Before ... = ... | +| Assert.cs:106:9:106:26 | After ...; | Assert.cs:107:9:107:34 | ...; | +| Assert.cs:106:13:106:13 | After access to parameter b [false] | Assert.cs:106:24:106:25 | "" | +| Assert.cs:106:13:106:13 | After access to parameter b [true] | Assert.cs:106:17:106:20 | null | +| Assert.cs:106:13:106:13 | access to parameter b | Assert.cs:106:13:106:13 | After access to parameter b [false] | +| Assert.cs:106:13:106:13 | access to parameter b | Assert.cs:106:13:106:13 | After access to parameter b [true] | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:106:13:106:13 | access to parameter b | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:106:9:106:25 | ... = ... | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:107:9:107:34 | After ...; | +| Assert.cs:107:9:107:33 | Before call to method IsFalse | Assert.cs:107:24:107:32 | Before ... != ... | +| Assert.cs:107:9:107:33 | call to method IsFalse | Assert.cs:107:9:107:33 | After call to method IsFalse | +| Assert.cs:107:9:107:34 | ...; | Assert.cs:107:9:107:33 | Before call to method IsFalse | +| Assert.cs:107:9:107:34 | After ...; | Assert.cs:108:9:108:36 | ...; | | Assert.cs:107:24:107:24 | access to local variable s | Assert.cs:107:29:107:32 | null | -| Assert.cs:107:24:107:32 | ... != ... | Assert.cs:107:9:107:33 | call to method IsFalse | +| Assert.cs:107:24:107:32 | ... != ... | Assert.cs:107:24:107:32 | After ... != ... | +| Assert.cs:107:24:107:32 | After ... != ... | Assert.cs:107:9:107:33 | call to method IsFalse | +| Assert.cs:107:24:107:32 | Before ... != ... | Assert.cs:107:24:107:24 | access to local variable s | | Assert.cs:107:29:107:32 | null | Assert.cs:107:24:107:32 | ... != ... | -| Assert.cs:108:9:108:35 | call to method WriteLine | Assert.cs:110:9:110:26 | ...; | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:108:27:108:27 | access to local variable s | +| Assert.cs:108:9:108:35 | After call to method WriteLine | Assert.cs:108:9:108:36 | After ...; | +| Assert.cs:108:9:108:35 | Before call to method WriteLine | Assert.cs:108:27:108:34 | Before access to property Length | +| Assert.cs:108:9:108:35 | call to method WriteLine | Assert.cs:108:9:108:35 | After call to method WriteLine | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:108:9:108:35 | Before call to method WriteLine | +| Assert.cs:108:9:108:36 | After ...; | Assert.cs:110:9:110:26 | ...; | | Assert.cs:108:27:108:27 | access to local variable s | Assert.cs:108:27:108:34 | access to property Length | -| Assert.cs:108:27:108:34 | access to property Length | Assert.cs:108:9:108:35 | call to method WriteLine | -| Assert.cs:110:9:110:25 | ... = ... | Assert.cs:111:9:111:34 | ...; | -| Assert.cs:110:9:110:26 | ...; | Assert.cs:110:13:110:13 | access to parameter b | -| Assert.cs:110:13:110:13 | access to parameter b | Assert.cs:110:17:110:20 | null | -| Assert.cs:110:13:110:13 | access to parameter b | Assert.cs:110:24:110:25 | "" | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:110:9:110:25 | ... = ... | -| Assert.cs:111:9:111:33 | call to method IsFalse | Assert.cs:112:9:112:36 | ...; | -| Assert.cs:111:9:111:34 | ...; | Assert.cs:111:24:111:24 | access to local variable s | +| Assert.cs:108:27:108:34 | After access to property Length | Assert.cs:108:9:108:35 | call to method WriteLine | +| Assert.cs:108:27:108:34 | Before access to property Length | Assert.cs:108:27:108:27 | access to local variable s | +| Assert.cs:108:27:108:34 | access to property Length | Assert.cs:108:27:108:34 | After access to property Length | +| Assert.cs:110:9:110:9 | access to local variable s | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:110:9:110:25 | ... = ... | Assert.cs:110:9:110:25 | After ... = ... | +| Assert.cs:110:9:110:25 | After ... = ... | Assert.cs:110:9:110:26 | After ...; | +| Assert.cs:110:9:110:25 | Before ... = ... | Assert.cs:110:9:110:9 | access to local variable s | +| Assert.cs:110:9:110:26 | ...; | Assert.cs:110:9:110:25 | Before ... = ... | +| Assert.cs:110:9:110:26 | After ...; | Assert.cs:111:9:111:34 | ...; | +| Assert.cs:110:13:110:13 | After access to parameter b [false] | Assert.cs:110:24:110:25 | "" | +| Assert.cs:110:13:110:13 | After access to parameter b [true] | Assert.cs:110:17:110:20 | null | +| Assert.cs:110:13:110:13 | access to parameter b | Assert.cs:110:13:110:13 | After access to parameter b [false] | +| Assert.cs:110:13:110:13 | access to parameter b | Assert.cs:110:13:110:13 | After access to parameter b [true] | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:110:13:110:13 | access to parameter b | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:110:9:110:25 | ... = ... | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:111:9:111:34 | After ...; | +| Assert.cs:111:9:111:33 | Before call to method IsFalse | Assert.cs:111:24:111:32 | Before ... == ... | +| Assert.cs:111:9:111:33 | call to method IsFalse | Assert.cs:111:9:111:33 | After call to method IsFalse | +| Assert.cs:111:9:111:34 | ...; | Assert.cs:111:9:111:33 | Before call to method IsFalse | +| Assert.cs:111:9:111:34 | After ...; | Assert.cs:112:9:112:36 | ...; | | Assert.cs:111:24:111:24 | access to local variable s | Assert.cs:111:29:111:32 | null | -| Assert.cs:111:24:111:32 | ... == ... | Assert.cs:111:9:111:33 | call to method IsFalse | +| Assert.cs:111:24:111:32 | ... == ... | Assert.cs:111:24:111:32 | After ... == ... | +| Assert.cs:111:24:111:32 | After ... == ... | Assert.cs:111:9:111:33 | call to method IsFalse | +| Assert.cs:111:24:111:32 | Before ... == ... | Assert.cs:111:24:111:24 | access to local variable s | | Assert.cs:111:29:111:32 | null | Assert.cs:111:24:111:32 | ... == ... | -| Assert.cs:112:9:112:35 | call to method WriteLine | Assert.cs:114:9:114:26 | ...; | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:112:27:112:27 | access to local variable s | +| Assert.cs:112:9:112:35 | After call to method WriteLine | Assert.cs:112:9:112:36 | After ...; | +| Assert.cs:112:9:112:35 | Before call to method WriteLine | Assert.cs:112:27:112:34 | Before access to property Length | +| Assert.cs:112:9:112:35 | call to method WriteLine | Assert.cs:112:9:112:35 | After call to method WriteLine | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:112:9:112:35 | Before call to method WriteLine | +| Assert.cs:112:9:112:36 | After ...; | Assert.cs:114:9:114:26 | ...; | | Assert.cs:112:27:112:27 | access to local variable s | Assert.cs:112:27:112:34 | access to property Length | -| Assert.cs:112:27:112:34 | access to property Length | Assert.cs:112:9:112:35 | call to method WriteLine | -| Assert.cs:114:9:114:25 | ... = ... | Assert.cs:115:9:115:38 | ...; | -| Assert.cs:114:9:114:26 | ...; | Assert.cs:114:13:114:13 | access to parameter b | -| Assert.cs:114:13:114:13 | access to parameter b | Assert.cs:114:17:114:20 | null | -| Assert.cs:114:13:114:13 | access to parameter b | Assert.cs:114:24:114:25 | "" | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:114:9:114:25 | ... = ... | -| Assert.cs:115:9:115:37 | call to method IsTrue | Assert.cs:116:9:116:36 | ...; | -| Assert.cs:115:9:115:38 | ...; | Assert.cs:115:23:115:23 | access to local variable s | +| Assert.cs:112:27:112:34 | After access to property Length | Assert.cs:112:9:112:35 | call to method WriteLine | +| Assert.cs:112:27:112:34 | Before access to property Length | Assert.cs:112:27:112:27 | access to local variable s | +| Assert.cs:112:27:112:34 | access to property Length | Assert.cs:112:27:112:34 | After access to property Length | +| Assert.cs:114:9:114:9 | access to local variable s | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:114:9:114:25 | ... = ... | Assert.cs:114:9:114:25 | After ... = ... | +| Assert.cs:114:9:114:25 | After ... = ... | Assert.cs:114:9:114:26 | After ...; | +| Assert.cs:114:9:114:25 | Before ... = ... | Assert.cs:114:9:114:9 | access to local variable s | +| Assert.cs:114:9:114:26 | ...; | Assert.cs:114:9:114:25 | Before ... = ... | +| Assert.cs:114:9:114:26 | After ...; | Assert.cs:115:9:115:38 | ...; | +| Assert.cs:114:13:114:13 | After access to parameter b [false] | Assert.cs:114:24:114:25 | "" | +| Assert.cs:114:13:114:13 | After access to parameter b [true] | Assert.cs:114:17:114:20 | null | +| Assert.cs:114:13:114:13 | access to parameter b | Assert.cs:114:13:114:13 | After access to parameter b [false] | +| Assert.cs:114:13:114:13 | access to parameter b | Assert.cs:114:13:114:13 | After access to parameter b [true] | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:114:13:114:13 | access to parameter b | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:114:9:114:25 | ... = ... | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:115:9:115:38 | After ...; | +| Assert.cs:115:9:115:37 | Before call to method IsTrue | Assert.cs:115:23:115:36 | ... && ... | +| Assert.cs:115:9:115:37 | call to method IsTrue | Assert.cs:115:9:115:37 | After call to method IsTrue | +| Assert.cs:115:9:115:38 | ...; | Assert.cs:115:9:115:37 | Before call to method IsTrue | +| Assert.cs:115:9:115:38 | After ...; | Assert.cs:116:9:116:36 | ...; | | Assert.cs:115:23:115:23 | access to local variable s | Assert.cs:115:28:115:31 | null | -| Assert.cs:115:23:115:31 | ... != ... | Assert.cs:115:23:115:36 | ... && ... | -| Assert.cs:115:23:115:31 | ... != ... | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:115:9:115:37 | call to method IsTrue | +| Assert.cs:115:23:115:31 | ... != ... | Assert.cs:115:23:115:31 | After ... != ... [false] | +| Assert.cs:115:23:115:31 | ... != ... | Assert.cs:115:23:115:31 | After ... != ... [true] | +| Assert.cs:115:23:115:31 | After ... != ... [true] | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:115:23:115:31 | Before ... != ... | Assert.cs:115:23:115:23 | access to local variable s | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:115:23:115:31 | Before ... != ... | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:115:9:115:37 | call to method IsTrue | | Assert.cs:115:28:115:31 | null | Assert.cs:115:23:115:31 | ... != ... | -| Assert.cs:116:9:116:35 | call to method WriteLine | Assert.cs:118:9:118:26 | ...; | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:116:27:116:27 | access to local variable s | +| Assert.cs:116:9:116:35 | After call to method WriteLine | Assert.cs:116:9:116:36 | After ...; | +| Assert.cs:116:9:116:35 | Before call to method WriteLine | Assert.cs:116:27:116:34 | Before access to property Length | +| Assert.cs:116:9:116:35 | call to method WriteLine | Assert.cs:116:9:116:35 | After call to method WriteLine | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:116:9:116:35 | Before call to method WriteLine | +| Assert.cs:116:9:116:36 | After ...; | Assert.cs:118:9:118:26 | ...; | | Assert.cs:116:27:116:27 | access to local variable s | Assert.cs:116:27:116:34 | access to property Length | -| Assert.cs:116:27:116:34 | access to property Length | Assert.cs:116:9:116:35 | call to method WriteLine | -| Assert.cs:118:9:118:25 | ... = ... | Assert.cs:119:9:119:40 | ...; | -| Assert.cs:118:9:118:26 | ...; | Assert.cs:118:13:118:13 | access to parameter b | -| Assert.cs:118:13:118:13 | access to parameter b | Assert.cs:118:17:118:20 | null | -| Assert.cs:118:13:118:13 | access to parameter b | Assert.cs:118:24:118:25 | "" | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:118:9:118:25 | ... = ... | -| Assert.cs:119:9:119:39 | call to method IsFalse | Assert.cs:120:9:120:36 | ...; | -| Assert.cs:119:9:119:40 | ...; | Assert.cs:119:24:119:24 | access to local variable s | +| Assert.cs:116:27:116:34 | After access to property Length | Assert.cs:116:9:116:35 | call to method WriteLine | +| Assert.cs:116:27:116:34 | Before access to property Length | Assert.cs:116:27:116:27 | access to local variable s | +| Assert.cs:116:27:116:34 | access to property Length | Assert.cs:116:27:116:34 | After access to property Length | +| Assert.cs:118:9:118:9 | access to local variable s | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:118:9:118:25 | ... = ... | Assert.cs:118:9:118:25 | After ... = ... | +| Assert.cs:118:9:118:25 | After ... = ... | Assert.cs:118:9:118:26 | After ...; | +| Assert.cs:118:9:118:25 | Before ... = ... | Assert.cs:118:9:118:9 | access to local variable s | +| Assert.cs:118:9:118:26 | ...; | Assert.cs:118:9:118:25 | Before ... = ... | +| Assert.cs:118:9:118:26 | After ...; | Assert.cs:119:9:119:40 | ...; | +| Assert.cs:118:13:118:13 | After access to parameter b [false] | Assert.cs:118:24:118:25 | "" | +| Assert.cs:118:13:118:13 | After access to parameter b [true] | Assert.cs:118:17:118:20 | null | +| Assert.cs:118:13:118:13 | access to parameter b | Assert.cs:118:13:118:13 | After access to parameter b [false] | +| Assert.cs:118:13:118:13 | access to parameter b | Assert.cs:118:13:118:13 | After access to parameter b [true] | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:118:13:118:13 | access to parameter b | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:118:9:118:25 | ... = ... | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:119:9:119:40 | After ...; | +| Assert.cs:119:9:119:39 | Before call to method IsFalse | Assert.cs:119:24:119:38 | ... \|\| ... | +| Assert.cs:119:9:119:39 | call to method IsFalse | Assert.cs:119:9:119:39 | After call to method IsFalse | +| Assert.cs:119:9:119:40 | ...; | Assert.cs:119:9:119:39 | Before call to method IsFalse | +| Assert.cs:119:9:119:40 | After ...; | Assert.cs:120:9:120:36 | ...; | | Assert.cs:119:24:119:24 | access to local variable s | Assert.cs:119:29:119:32 | null | -| Assert.cs:119:24:119:32 | ... == ... | Assert.cs:119:24:119:38 | ... \|\| ... | -| Assert.cs:119:24:119:32 | ... == ... | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:119:9:119:39 | call to method IsFalse | +| Assert.cs:119:24:119:32 | ... == ... | Assert.cs:119:24:119:32 | After ... == ... [false] | +| Assert.cs:119:24:119:32 | ... == ... | Assert.cs:119:24:119:32 | After ... == ... [true] | +| Assert.cs:119:24:119:32 | After ... == ... [false] | Assert.cs:119:37:119:38 | !... | +| Assert.cs:119:24:119:32 | Before ... == ... | Assert.cs:119:24:119:24 | access to local variable s | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:119:24:119:32 | Before ... == ... | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:119:9:119:39 | call to method IsFalse | | Assert.cs:119:29:119:32 | null | Assert.cs:119:24:119:32 | ... == ... | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:37:119:38 | !... | -| Assert.cs:120:9:120:35 | call to method WriteLine | Assert.cs:122:9:122:26 | ...; | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:120:27:120:27 | access to local variable s | +| Assert.cs:119:37:119:38 | !... | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:37:119:38 | After !... | +| Assert.cs:120:9:120:35 | After call to method WriteLine | Assert.cs:120:9:120:36 | After ...; | +| Assert.cs:120:9:120:35 | Before call to method WriteLine | Assert.cs:120:27:120:34 | Before access to property Length | +| Assert.cs:120:9:120:35 | call to method WriteLine | Assert.cs:120:9:120:35 | After call to method WriteLine | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:120:9:120:35 | Before call to method WriteLine | +| Assert.cs:120:9:120:36 | After ...; | Assert.cs:122:9:122:26 | ...; | | Assert.cs:120:27:120:27 | access to local variable s | Assert.cs:120:27:120:34 | access to property Length | -| Assert.cs:120:27:120:34 | access to property Length | Assert.cs:120:9:120:35 | call to method WriteLine | -| Assert.cs:122:9:122:25 | ... = ... | Assert.cs:123:9:123:38 | ...; | -| Assert.cs:122:9:122:26 | ...; | Assert.cs:122:13:122:13 | access to parameter b | -| Assert.cs:122:13:122:13 | access to parameter b | Assert.cs:122:17:122:20 | null | -| Assert.cs:122:13:122:13 | access to parameter b | Assert.cs:122:24:122:25 | "" | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:122:9:122:25 | ... = ... | -| Assert.cs:123:9:123:37 | call to method IsTrue | Assert.cs:124:9:124:36 | ...; | -| Assert.cs:123:9:123:38 | ...; | Assert.cs:123:23:123:23 | access to local variable s | +| Assert.cs:120:27:120:34 | After access to property Length | Assert.cs:120:9:120:35 | call to method WriteLine | +| Assert.cs:120:27:120:34 | Before access to property Length | Assert.cs:120:27:120:27 | access to local variable s | +| Assert.cs:120:27:120:34 | access to property Length | Assert.cs:120:27:120:34 | After access to property Length | +| Assert.cs:122:9:122:9 | access to local variable s | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:122:9:122:25 | ... = ... | Assert.cs:122:9:122:25 | After ... = ... | +| Assert.cs:122:9:122:25 | After ... = ... | Assert.cs:122:9:122:26 | After ...; | +| Assert.cs:122:9:122:25 | Before ... = ... | Assert.cs:122:9:122:9 | access to local variable s | +| Assert.cs:122:9:122:26 | ...; | Assert.cs:122:9:122:25 | Before ... = ... | +| Assert.cs:122:9:122:26 | After ...; | Assert.cs:123:9:123:38 | ...; | +| Assert.cs:122:13:122:13 | After access to parameter b [false] | Assert.cs:122:24:122:25 | "" | +| Assert.cs:122:13:122:13 | After access to parameter b [true] | Assert.cs:122:17:122:20 | null | +| Assert.cs:122:13:122:13 | access to parameter b | Assert.cs:122:13:122:13 | After access to parameter b [false] | +| Assert.cs:122:13:122:13 | access to parameter b | Assert.cs:122:13:122:13 | After access to parameter b [true] | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:122:13:122:13 | access to parameter b | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:122:9:122:25 | ... = ... | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:123:9:123:38 | After ...; | +| Assert.cs:123:9:123:37 | Before call to method IsTrue | Assert.cs:123:23:123:36 | ... && ... | +| Assert.cs:123:9:123:37 | call to method IsTrue | Assert.cs:123:9:123:37 | After call to method IsTrue | +| Assert.cs:123:9:123:38 | ...; | Assert.cs:123:9:123:37 | Before call to method IsTrue | +| Assert.cs:123:9:123:38 | After ...; | Assert.cs:124:9:124:36 | ...; | | Assert.cs:123:23:123:23 | access to local variable s | Assert.cs:123:28:123:31 | null | -| Assert.cs:123:23:123:31 | ... == ... | Assert.cs:123:23:123:36 | ... && ... | -| Assert.cs:123:23:123:31 | ... == ... | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:123:9:123:37 | call to method IsTrue | +| Assert.cs:123:23:123:31 | ... == ... | Assert.cs:123:23:123:31 | After ... == ... [false] | +| Assert.cs:123:23:123:31 | ... == ... | Assert.cs:123:23:123:31 | After ... == ... [true] | +| Assert.cs:123:23:123:31 | After ... == ... [true] | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:123:23:123:31 | Before ... == ... | Assert.cs:123:23:123:23 | access to local variable s | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:123:23:123:31 | Before ... == ... | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:123:9:123:37 | call to method IsTrue | | Assert.cs:123:28:123:31 | null | Assert.cs:123:23:123:31 | ... == ... | -| Assert.cs:124:9:124:35 | call to method WriteLine | Assert.cs:126:9:126:26 | ...; | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:124:27:124:27 | access to local variable s | +| Assert.cs:124:9:124:35 | After call to method WriteLine | Assert.cs:124:9:124:36 | After ...; | +| Assert.cs:124:9:124:35 | Before call to method WriteLine | Assert.cs:124:27:124:34 | Before access to property Length | +| Assert.cs:124:9:124:35 | call to method WriteLine | Assert.cs:124:9:124:35 | After call to method WriteLine | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:124:9:124:35 | Before call to method WriteLine | +| Assert.cs:124:9:124:36 | After ...; | Assert.cs:126:9:126:26 | ...; | | Assert.cs:124:27:124:27 | access to local variable s | Assert.cs:124:27:124:34 | access to property Length | -| Assert.cs:124:27:124:34 | access to property Length | Assert.cs:124:9:124:35 | call to method WriteLine | -| Assert.cs:126:9:126:25 | ... = ... | Assert.cs:127:9:127:40 | ...; | -| Assert.cs:126:9:126:26 | ...; | Assert.cs:126:13:126:13 | access to parameter b | -| Assert.cs:126:13:126:13 | access to parameter b | Assert.cs:126:17:126:20 | null | -| Assert.cs:126:13:126:13 | access to parameter b | Assert.cs:126:24:126:25 | "" | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:126:9:126:25 | ... = ... | -| Assert.cs:127:9:127:39 | call to method IsFalse | Assert.cs:128:9:128:36 | ...; | -| Assert.cs:127:9:127:40 | ...; | Assert.cs:127:24:127:24 | access to local variable s | +| Assert.cs:124:27:124:34 | After access to property Length | Assert.cs:124:9:124:35 | call to method WriteLine | +| Assert.cs:124:27:124:34 | Before access to property Length | Assert.cs:124:27:124:27 | access to local variable s | +| Assert.cs:124:27:124:34 | access to property Length | Assert.cs:124:27:124:34 | After access to property Length | +| Assert.cs:126:9:126:9 | access to local variable s | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:126:9:126:25 | ... = ... | Assert.cs:126:9:126:25 | After ... = ... | +| Assert.cs:126:9:126:25 | After ... = ... | Assert.cs:126:9:126:26 | After ...; | +| Assert.cs:126:9:126:25 | Before ... = ... | Assert.cs:126:9:126:9 | access to local variable s | +| Assert.cs:126:9:126:26 | ...; | Assert.cs:126:9:126:25 | Before ... = ... | +| Assert.cs:126:9:126:26 | After ...; | Assert.cs:127:9:127:40 | ...; | +| Assert.cs:126:13:126:13 | After access to parameter b [false] | Assert.cs:126:24:126:25 | "" | +| Assert.cs:126:13:126:13 | After access to parameter b [true] | Assert.cs:126:17:126:20 | null | +| Assert.cs:126:13:126:13 | access to parameter b | Assert.cs:126:13:126:13 | After access to parameter b [false] | +| Assert.cs:126:13:126:13 | access to parameter b | Assert.cs:126:13:126:13 | After access to parameter b [true] | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:126:13:126:13 | access to parameter b | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:126:9:126:25 | ... = ... | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:127:9:127:40 | After ...; | +| Assert.cs:127:9:127:39 | Before call to method IsFalse | Assert.cs:127:24:127:38 | ... \|\| ... | +| Assert.cs:127:9:127:39 | call to method IsFalse | Assert.cs:127:9:127:39 | After call to method IsFalse | +| Assert.cs:127:9:127:40 | ...; | Assert.cs:127:9:127:39 | Before call to method IsFalse | +| Assert.cs:127:9:127:40 | After ...; | Assert.cs:128:9:128:36 | ...; | | Assert.cs:127:24:127:24 | access to local variable s | Assert.cs:127:29:127:32 | null | -| Assert.cs:127:24:127:32 | ... != ... | Assert.cs:127:24:127:38 | ... \|\| ... | -| Assert.cs:127:24:127:32 | ... != ... | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:127:9:127:39 | call to method IsFalse | +| Assert.cs:127:24:127:32 | ... != ... | Assert.cs:127:24:127:32 | After ... != ... [false] | +| Assert.cs:127:24:127:32 | ... != ... | Assert.cs:127:24:127:32 | After ... != ... [true] | +| Assert.cs:127:24:127:32 | After ... != ... [false] | Assert.cs:127:37:127:38 | !... | +| Assert.cs:127:24:127:32 | Before ... != ... | Assert.cs:127:24:127:24 | access to local variable s | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:127:24:127:32 | Before ... != ... | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:127:9:127:39 | call to method IsFalse | | Assert.cs:127:29:127:32 | null | Assert.cs:127:24:127:32 | ... != ... | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:37:127:38 | !... | -| Assert.cs:128:9:128:35 | call to method WriteLine | Assert.cs:84:10:84:12 | exit M12 (normal) | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:128:27:128:27 | access to local variable s | +| Assert.cs:127:37:127:38 | !... | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:37:127:38 | After !... | +| Assert.cs:128:9:128:35 | After call to method WriteLine | Assert.cs:128:9:128:36 | After ...; | +| Assert.cs:128:9:128:35 | Before call to method WriteLine | Assert.cs:128:27:128:34 | Before access to property Length | +| Assert.cs:128:9:128:35 | call to method WriteLine | Assert.cs:128:9:128:35 | After call to method WriteLine | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:128:9:128:35 | Before call to method WriteLine | +| Assert.cs:128:9:128:36 | After ...; | Assert.cs:85:5:129:5 | After {...} | | Assert.cs:128:27:128:27 | access to local variable s | Assert.cs:128:27:128:34 | access to property Length | -| Assert.cs:128:27:128:34 | access to property Length | Assert.cs:128:9:128:35 | call to method WriteLine | -| Assert.cs:131:18:131:32 | enter AssertTrueFalse | Assert.cs:135:5:136:5 | {...} | -| Assert.cs:131:18:131:32 | exit AssertTrueFalse (normal) | Assert.cs:131:18:131:32 | exit AssertTrueFalse | -| Assert.cs:135:5:136:5 | {...} | Assert.cs:131:18:131:32 | exit AssertTrueFalse (normal) | -| Assert.cs:138:10:138:12 | enter M13 | Assert.cs:139:5:142:5 | {...} | +| Assert.cs:128:27:128:34 | After access to property Length | Assert.cs:128:9:128:35 | call to method WriteLine | +| Assert.cs:128:27:128:34 | Before access to property Length | Assert.cs:128:27:128:27 | access to local variable s | +| Assert.cs:128:27:128:34 | access to property Length | Assert.cs:128:27:128:34 | After access to property Length | +| Assert.cs:131:18:131:32 | Entry | Assert.cs:132:74:132:83 | condition1 | +| Assert.cs:131:18:131:32 | Normal Exit | Assert.cs:131:18:131:32 | Exit | +| Assert.cs:132:74:132:83 | condition1 | Assert.cs:133:73:133:82 | condition2 | +| Assert.cs:133:73:133:82 | condition2 | Assert.cs:134:17:134:28 | nonCondition | +| Assert.cs:134:17:134:28 | nonCondition | Assert.cs:135:5:136:5 | {...} | +| Assert.cs:135:5:136:5 | {...} | Assert.cs:131:18:131:32 | Normal Exit | +| Assert.cs:138:10:138:12 | Entry | Assert.cs:138:19:138:20 | b1 | +| Assert.cs:138:19:138:20 | b1 | Assert.cs:138:28:138:29 | b2 | +| Assert.cs:138:28:138:29 | b2 | Assert.cs:138:37:138:38 | b3 | +| Assert.cs:138:37:138:38 | b3 | Assert.cs:139:5:142:5 | {...} | | Assert.cs:139:5:142:5 | {...} | Assert.cs:140:9:140:36 | ...; | -| Assert.cs:140:9:140:35 | call to method AssertTrueFalse | Assert.cs:138:10:138:12 | exit M13 (abnormal) | -| Assert.cs:140:9:140:35 | call to method AssertTrueFalse | Assert.cs:141:9:141:15 | return ...; | +| Assert.cs:140:9:140:35 | After call to method AssertTrueFalse | Assert.cs:140:9:140:36 | After ...; | +| Assert.cs:140:9:140:35 | Before call to method AssertTrueFalse | Assert.cs:140:9:140:35 | this access | +| Assert.cs:140:9:140:35 | call to method AssertTrueFalse | Assert.cs:138:10:138:12 | Exceptional Exit | +| Assert.cs:140:9:140:35 | call to method AssertTrueFalse | Assert.cs:140:9:140:35 | After call to method AssertTrueFalse | | Assert.cs:140:9:140:35 | this access | Assert.cs:140:25:140:26 | access to parameter b1 | -| Assert.cs:140:9:140:36 | ...; | Assert.cs:140:9:140:35 | this access | +| Assert.cs:140:9:140:36 | ...; | Assert.cs:140:9:140:35 | Before call to method AssertTrueFalse | +| Assert.cs:140:9:140:36 | After ...; | Assert.cs:141:9:141:15 | Before return ...; | | Assert.cs:140:25:140:26 | access to parameter b1 | Assert.cs:140:29:140:30 | access to parameter b2 | | Assert.cs:140:29:140:30 | access to parameter b2 | Assert.cs:140:33:140:34 | access to parameter b3 | | Assert.cs:140:33:140:34 | access to parameter b3 | Assert.cs:140:9:140:35 | call to method AssertTrueFalse | -| Assert.cs:141:9:141:15 | return ...; | Assert.cs:138:10:138:12 | exit M13 (normal) | -| Assignments.cs:1:7:1:17 | call to constructor Object | Assignments.cs:1:7:1:17 | {...} | -| Assignments.cs:1:7:1:17 | call to method | Assignments.cs:1:7:1:17 | call to constructor Object | -| Assignments.cs:1:7:1:17 | enter Assignments | Assignments.cs:1:7:1:17 | this access | -| Assignments.cs:1:7:1:17 | exit Assignments (normal) | Assignments.cs:1:7:1:17 | exit Assignments | +| Assert.cs:141:9:141:15 | Before return ...; | Assert.cs:141:9:141:15 | return ...; | +| Assert.cs:141:9:141:15 | return ...; | Assert.cs:138:10:138:12 | Normal Exit | +| Assignments.cs:1:7:1:17 | After call to constructor Object | Assignments.cs:1:7:1:17 | {...} | +| Assignments.cs:1:7:1:17 | After call to method | Assignments.cs:1:7:1:17 | Before call to constructor Object | +| Assignments.cs:1:7:1:17 | Before call to constructor Object | Assignments.cs:1:7:1:17 | call to constructor Object | +| Assignments.cs:1:7:1:17 | Before call to method | Assignments.cs:1:7:1:17 | this access | +| Assignments.cs:1:7:1:17 | Entry | Assignments.cs:1:7:1:17 | Before call to method | +| Assignments.cs:1:7:1:17 | Normal Exit | Assignments.cs:1:7:1:17 | Exit | +| Assignments.cs:1:7:1:17 | call to constructor Object | Assignments.cs:1:7:1:17 | After call to constructor Object | +| Assignments.cs:1:7:1:17 | call to method | Assignments.cs:1:7:1:17 | After call to method | | Assignments.cs:1:7:1:17 | this access | Assignments.cs:1:7:1:17 | call to method | -| Assignments.cs:1:7:1:17 | {...} | Assignments.cs:1:7:1:17 | exit Assignments (normal) | -| Assignments.cs:3:10:3:10 | enter M | Assignments.cs:4:5:15:5 | {...} | -| Assignments.cs:3:10:3:10 | exit M (normal) | Assignments.cs:3:10:3:10 | exit M | +| Assignments.cs:1:7:1:17 | {...} | Assignments.cs:1:7:1:17 | Normal Exit | +| Assignments.cs:3:10:3:10 | Entry | Assignments.cs:4:5:15:5 | {...} | +| Assignments.cs:3:10:3:10 | Normal Exit | Assignments.cs:3:10:3:10 | Exit | +| Assignments.cs:4:5:15:5 | After {...} | Assignments.cs:3:10:3:10 | Normal Exit | | Assignments.cs:4:5:15:5 | {...} | Assignments.cs:5:9:5:18 | ... ...; | -| Assignments.cs:5:9:5:18 | ... ...; | Assignments.cs:5:17:5:17 | 0 | -| Assignments.cs:5:13:5:17 | Int32 x = ... | Assignments.cs:6:9:6:15 | ...; | +| Assignments.cs:5:9:5:18 | ... ...; | Assignments.cs:5:13:5:17 | Before Int32 x = ... | +| Assignments.cs:5:9:5:18 | After ... ...; | Assignments.cs:6:9:6:15 | ...; | +| Assignments.cs:5:13:5:13 | access to local variable x | Assignments.cs:5:17:5:17 | 0 | +| Assignments.cs:5:13:5:17 | After Int32 x = ... | Assignments.cs:5:9:5:18 | After ... ...; | +| Assignments.cs:5:13:5:17 | Before Int32 x = ... | Assignments.cs:5:13:5:13 | access to local variable x | +| Assignments.cs:5:13:5:17 | Int32 x = ... | Assignments.cs:5:13:5:17 | After Int32 x = ... | | Assignments.cs:5:17:5:17 | 0 | Assignments.cs:5:13:5:17 | Int32 x = ... | | Assignments.cs:6:9:6:9 | access to local variable x | Assignments.cs:6:14:6:14 | 1 | -| Assignments.cs:6:9:6:14 | ... += ... | Assignments.cs:8:9:8:22 | ... ...; | -| Assignments.cs:6:9:6:15 | ...; | Assignments.cs:6:9:6:9 | access to local variable x | +| Assignments.cs:6:9:6:14 | ... += ... | Assignments.cs:6:9:6:14 | After ... += ... | +| Assignments.cs:6:9:6:14 | After ... += ... | Assignments.cs:6:9:6:15 | After ...; | +| Assignments.cs:6:9:6:14 | Before ... += ... | Assignments.cs:6:9:6:9 | access to local variable x | +| Assignments.cs:6:9:6:15 | ...; | Assignments.cs:6:9:6:14 | Before ... += ... | +| Assignments.cs:6:9:6:15 | After ...; | Assignments.cs:8:9:8:22 | ... ...; | | Assignments.cs:6:14:6:14 | 1 | Assignments.cs:6:9:6:14 | ... += ... | -| Assignments.cs:8:9:8:22 | ... ...; | Assignments.cs:8:21:8:21 | 0 | -| Assignments.cs:8:17:8:21 | dynamic d = ... | Assignments.cs:9:9:9:15 | ...; | +| Assignments.cs:8:9:8:22 | ... ...; | Assignments.cs:8:17:8:21 | Before dynamic d = ... | +| Assignments.cs:8:9:8:22 | After ... ...; | Assignments.cs:9:9:9:15 | ...; | +| Assignments.cs:8:17:8:17 | access to local variable d | Assignments.cs:8:21:8:21 | Before (...) ... | +| Assignments.cs:8:17:8:21 | After dynamic d = ... | Assignments.cs:8:9:8:22 | After ... ...; | +| Assignments.cs:8:17:8:21 | Before dynamic d = ... | Assignments.cs:8:17:8:17 | access to local variable d | +| Assignments.cs:8:17:8:21 | dynamic d = ... | Assignments.cs:8:17:8:21 | After dynamic d = ... | | Assignments.cs:8:21:8:21 | 0 | Assignments.cs:8:21:8:21 | (...) ... | -| Assignments.cs:8:21:8:21 | (...) ... | Assignments.cs:8:17:8:21 | dynamic d = ... | +| Assignments.cs:8:21:8:21 | (...) ... | Assignments.cs:8:21:8:21 | After (...) ... | +| Assignments.cs:8:21:8:21 | After (...) ... | Assignments.cs:8:17:8:21 | dynamic d = ... | +| Assignments.cs:8:21:8:21 | Before (...) ... | Assignments.cs:8:21:8:21 | 0 | | Assignments.cs:9:9:9:9 | access to local variable d | Assignments.cs:9:14:9:14 | 2 | -| Assignments.cs:9:9:9:14 | ... -= ... | Assignments.cs:11:9:11:34 | ... ...; | -| Assignments.cs:9:9:9:15 | ...; | Assignments.cs:9:9:9:9 | access to local variable d | +| Assignments.cs:9:9:9:14 | ... -= ... | Assignments.cs:9:9:9:14 | After ... -= ... | +| Assignments.cs:9:9:9:14 | After ... -= ... | Assignments.cs:9:9:9:15 | After ...; | +| Assignments.cs:9:9:9:14 | Before ... -= ... | Assignments.cs:9:9:9:9 | access to local variable d | +| Assignments.cs:9:9:9:15 | ...; | Assignments.cs:9:9:9:14 | Before ... -= ... | +| Assignments.cs:9:9:9:15 | After ...; | Assignments.cs:11:9:11:34 | ... ...; | | Assignments.cs:9:14:9:14 | 2 | Assignments.cs:9:9:9:14 | ... -= ... | -| Assignments.cs:11:9:11:34 | ... ...; | Assignments.cs:11:17:11:33 | object creation of type Assignments | -| Assignments.cs:11:13:11:33 | Assignments a = ... | Assignments.cs:12:9:12:18 | ...; | -| Assignments.cs:11:17:11:33 | object creation of type Assignments | Assignments.cs:11:13:11:33 | Assignments a = ... | +| Assignments.cs:11:9:11:34 | ... ...; | Assignments.cs:11:13:11:33 | Before Assignments a = ... | +| Assignments.cs:11:9:11:34 | After ... ...; | Assignments.cs:12:9:12:18 | ...; | +| Assignments.cs:11:13:11:13 | access to local variable a | Assignments.cs:11:17:11:33 | Before object creation of type Assignments | +| Assignments.cs:11:13:11:33 | After Assignments a = ... | Assignments.cs:11:9:11:34 | After ... ...; | +| Assignments.cs:11:13:11:33 | Assignments a = ... | Assignments.cs:11:13:11:33 | After Assignments a = ... | +| Assignments.cs:11:13:11:33 | Before Assignments a = ... | Assignments.cs:11:13:11:13 | access to local variable a | +| Assignments.cs:11:17:11:33 | After object creation of type Assignments | Assignments.cs:11:13:11:33 | Assignments a = ... | +| Assignments.cs:11:17:11:33 | Before object creation of type Assignments | Assignments.cs:11:17:11:33 | object creation of type Assignments | +| Assignments.cs:11:17:11:33 | object creation of type Assignments | Assignments.cs:11:17:11:33 | After object creation of type Assignments | | Assignments.cs:12:9:12:9 | access to local variable a | Assignments.cs:12:14:12:17 | this access | -| Assignments.cs:12:9:12:17 | ... += ... | Assignments.cs:14:9:14:36 | ...; | -| Assignments.cs:12:9:12:18 | ...; | Assignments.cs:12:9:12:9 | access to local variable a | +| Assignments.cs:12:9:12:17 | ... += ... | Assignments.cs:12:9:12:17 | After ... += ... | +| Assignments.cs:12:9:12:17 | After ... += ... | Assignments.cs:12:9:12:18 | After ...; | +| Assignments.cs:12:9:12:17 | Before ... += ... | Assignments.cs:12:9:12:9 | access to local variable a | +| Assignments.cs:12:9:12:18 | ...; | Assignments.cs:12:9:12:17 | Before ... += ... | +| Assignments.cs:12:9:12:18 | After ...; | Assignments.cs:14:9:14:36 | ...; | | Assignments.cs:12:14:12:17 | this access | Assignments.cs:12:9:12:17 | ... += ... | -| Assignments.cs:14:9:14:13 | access to event Event | Assignments.cs:14:9:14:35 | ... += ... | -| Assignments.cs:14:9:14:13 | this access | Assignments.cs:14:18:14:35 | (...) => ... | -| Assignments.cs:14:9:14:35 | ... += ... | Assignments.cs:3:10:3:10 | exit M (normal) | -| Assignments.cs:14:9:14:36 | ...; | Assignments.cs:14:9:14:13 | this access | -| Assignments.cs:14:18:14:35 | (...) => ... | Assignments.cs:14:9:14:13 | access to event Event | -| Assignments.cs:14:18:14:35 | enter (...) => ... | Assignments.cs:14:33:14:35 | {...} | -| Assignments.cs:14:18:14:35 | exit (...) => ... (normal) | Assignments.cs:14:18:14:35 | exit (...) => ... | -| Assignments.cs:14:33:14:35 | {...} | Assignments.cs:14:18:14:35 | exit (...) => ... (normal) | -| Assignments.cs:17:40:17:40 | enter + | Assignments.cs:18:5:20:5 | {...} | -| Assignments.cs:17:40:17:40 | exit + (normal) | Assignments.cs:17:40:17:40 | exit + | -| Assignments.cs:18:5:20:5 | {...} | Assignments.cs:19:16:19:16 | access to parameter x | -| Assignments.cs:19:9:19:17 | return ...; | Assignments.cs:17:40:17:40 | exit + (normal) | +| Assignments.cs:14:9:14:13 | After access to event Event | Assignments.cs:14:18:14:35 | (...) => ... | +| Assignments.cs:14:9:14:13 | Before access to event Event | Assignments.cs:14:9:14:13 | this access | +| Assignments.cs:14:9:14:13 | access to event Event | Assignments.cs:14:9:14:13 | After access to event Event | +| Assignments.cs:14:9:14:13 | this access | Assignments.cs:14:9:14:13 | access to event Event | +| Assignments.cs:14:9:14:35 | ... += ... | Assignments.cs:14:9:14:35 | After ... += ... | +| Assignments.cs:14:9:14:35 | After ... += ... | Assignments.cs:14:9:14:36 | After ...; | +| Assignments.cs:14:9:14:35 | Before ... += ... | Assignments.cs:14:9:14:13 | Before access to event Event | +| Assignments.cs:14:9:14:36 | ...; | Assignments.cs:14:9:14:35 | Before ... += ... | +| Assignments.cs:14:9:14:36 | After ...; | Assignments.cs:4:5:15:5 | After {...} | +| Assignments.cs:14:18:14:35 | (...) => ... | Assignments.cs:14:9:14:35 | ... += ... | +| Assignments.cs:14:18:14:35 | Entry | Assignments.cs:14:19:14:24 | sender | +| Assignments.cs:14:18:14:35 | Normal Exit | Assignments.cs:14:18:14:35 | Exit | +| Assignments.cs:14:19:14:24 | sender | Assignments.cs:14:27:14:27 | e | +| Assignments.cs:14:27:14:27 | e | Assignments.cs:14:33:14:35 | {...} | +| Assignments.cs:14:33:14:35 | {...} | Assignments.cs:14:18:14:35 | Normal Exit | +| Assignments.cs:17:40:17:40 | Entry | Assignments.cs:17:54:17:54 | x | +| Assignments.cs:17:40:17:40 | Normal Exit | Assignments.cs:17:40:17:40 | Exit | +| Assignments.cs:17:54:17:54 | x | Assignments.cs:17:69:17:69 | y | +| Assignments.cs:17:69:17:69 | y | Assignments.cs:18:5:20:5 | {...} | +| Assignments.cs:18:5:20:5 | {...} | Assignments.cs:19:9:19:17 | Before return ...; | +| Assignments.cs:19:9:19:17 | Before return ...; | Assignments.cs:19:16:19:16 | access to parameter x | +| Assignments.cs:19:9:19:17 | return ...; | Assignments.cs:17:40:17:40 | Normal Exit | | Assignments.cs:19:16:19:16 | access to parameter x | Assignments.cs:19:9:19:17 | return ...; | -| Assignments.cs:27:10:27:23 | enter SetParamSingle | Assignments.cs:28:5:30:5 | {...} | -| Assignments.cs:27:10:27:23 | exit SetParamSingle (normal) | Assignments.cs:27:10:27:23 | exit SetParamSingle | +| Assignments.cs:27:10:27:23 | Entry | Assignments.cs:27:33:27:33 | x | +| Assignments.cs:27:10:27:23 | Normal Exit | Assignments.cs:27:10:27:23 | Exit | +| Assignments.cs:27:33:27:33 | x | Assignments.cs:28:5:30:5 | {...} | +| Assignments.cs:28:5:30:5 | After {...} | Assignments.cs:27:10:27:23 | Normal Exit | | Assignments.cs:28:5:30:5 | {...} | Assignments.cs:29:9:29:15 | ...; | -| Assignments.cs:29:9:29:14 | ... = ... | Assignments.cs:27:10:27:23 | exit SetParamSingle (normal) | -| Assignments.cs:29:9:29:15 | ...; | Assignments.cs:29:13:29:14 | 42 | +| Assignments.cs:29:9:29:9 | access to parameter x | Assignments.cs:29:13:29:14 | 42 | +| Assignments.cs:29:9:29:14 | ... = ... | Assignments.cs:29:9:29:14 | After ... = ... | +| Assignments.cs:29:9:29:14 | After ... = ... | Assignments.cs:29:9:29:15 | After ...; | +| Assignments.cs:29:9:29:14 | Before ... = ... | Assignments.cs:29:9:29:9 | access to parameter x | +| Assignments.cs:29:9:29:15 | ...; | Assignments.cs:29:9:29:14 | Before ... = ... | +| Assignments.cs:29:9:29:15 | After ...; | Assignments.cs:28:5:30:5 | After {...} | | Assignments.cs:29:13:29:14 | 42 | Assignments.cs:29:9:29:14 | ... = ... | -| Assignments.cs:32:10:32:22 | enter SetParamMulti | Assignments.cs:33:5:36:5 | {...} | -| Assignments.cs:32:10:32:22 | exit SetParamMulti (normal) | Assignments.cs:32:10:32:22 | exit SetParamMulti | +| Assignments.cs:32:10:32:22 | Entry | Assignments.cs:32:32:32:32 | x | +| Assignments.cs:32:10:32:22 | Normal Exit | Assignments.cs:32:10:32:22 | Exit | +| Assignments.cs:32:32:32:32 | x | Assignments.cs:32:42:32:42 | o | +| Assignments.cs:32:42:32:42 | o | Assignments.cs:32:56:32:56 | y | +| Assignments.cs:32:56:32:56 | y | Assignments.cs:33:5:36:5 | {...} | +| Assignments.cs:33:5:36:5 | After {...} | Assignments.cs:32:10:32:22 | Normal Exit | | Assignments.cs:33:5:36:5 | {...} | Assignments.cs:34:9:34:15 | ...; | -| Assignments.cs:34:9:34:14 | ... = ... | Assignments.cs:35:9:35:20 | ...; | -| Assignments.cs:34:9:34:15 | ...; | Assignments.cs:34:13:34:14 | 42 | +| Assignments.cs:34:9:34:9 | access to parameter x | Assignments.cs:34:13:34:14 | 42 | +| Assignments.cs:34:9:34:14 | ... = ... | Assignments.cs:34:9:34:14 | After ... = ... | +| Assignments.cs:34:9:34:14 | After ... = ... | Assignments.cs:34:9:34:15 | After ...; | +| Assignments.cs:34:9:34:14 | Before ... = ... | Assignments.cs:34:9:34:9 | access to parameter x | +| Assignments.cs:34:9:34:15 | ...; | Assignments.cs:34:9:34:14 | Before ... = ... | +| Assignments.cs:34:9:34:15 | After ...; | Assignments.cs:35:9:35:20 | ...; | | Assignments.cs:34:13:34:14 | 42 | Assignments.cs:34:9:34:14 | ... = ... | -| Assignments.cs:35:9:35:19 | ... = ... | Assignments.cs:32:10:32:22 | exit SetParamMulti (normal) | -| Assignments.cs:35:9:35:20 | ...; | Assignments.cs:35:13:35:19 | "Hello" | +| Assignments.cs:35:9:35:9 | access to parameter y | Assignments.cs:35:13:35:19 | "Hello" | +| Assignments.cs:35:9:35:19 | ... = ... | Assignments.cs:35:9:35:19 | After ... = ... | +| Assignments.cs:35:9:35:19 | After ... = ... | Assignments.cs:35:9:35:20 | After ...; | +| Assignments.cs:35:9:35:19 | Before ... = ... | Assignments.cs:35:9:35:9 | access to parameter y | +| Assignments.cs:35:9:35:20 | ...; | Assignments.cs:35:9:35:19 | Before ... = ... | +| Assignments.cs:35:9:35:20 | After ...; | Assignments.cs:33:5:36:5 | After {...} | | Assignments.cs:35:13:35:19 | "Hello" | Assignments.cs:35:9:35:19 | ... = ... | -| Assignments.cs:38:10:38:11 | enter M2 | Assignments.cs:39:5:45:5 | {...} | -| Assignments.cs:38:10:38:11 | exit M2 (normal) | Assignments.cs:38:10:38:11 | exit M2 | +| Assignments.cs:38:10:38:11 | Entry | Assignments.cs:39:5:45:5 | {...} | +| Assignments.cs:38:10:38:11 | Normal Exit | Assignments.cs:38:10:38:11 | Exit | +| Assignments.cs:39:5:45:5 | After {...} | Assignments.cs:38:10:38:11 | Normal Exit | | Assignments.cs:39:5:45:5 | {...} | Assignments.cs:40:9:40:15 | ... ...; | | Assignments.cs:40:9:40:15 | ... ...; | Assignments.cs:40:13:40:14 | Int32 x1 | -| Assignments.cs:40:13:40:14 | Int32 x1 | Assignments.cs:41:9:41:31 | ...; | -| Assignments.cs:41:9:41:30 | call to method SetParamSingle | Assignments.cs:42:9:42:37 | ...; | -| Assignments.cs:41:9:41:30 | this access | Assignments.cs:41:9:41:30 | call to method SetParamSingle | -| Assignments.cs:41:9:41:31 | ...; | Assignments.cs:41:9:41:30 | this access | -| Assignments.cs:42:9:42:36 | call to method SetParamSingle | Assignments.cs:43:9:43:56 | ...; | -| Assignments.cs:42:9:42:36 | this access | Assignments.cs:42:28:42:35 | this access | -| Assignments.cs:42:9:42:37 | ...; | Assignments.cs:42:9:42:36 | this access | -| Assignments.cs:42:28:42:35 | access to field IntField | Assignments.cs:42:9:42:36 | call to method SetParamSingle | +| Assignments.cs:40:9:40:15 | After ... ...; | Assignments.cs:41:9:41:31 | ...; | +| Assignments.cs:40:13:40:14 | Int32 x1 | Assignments.cs:40:9:40:15 | After ... ...; | +| Assignments.cs:41:9:41:30 | After call to method SetParamSingle | Assignments.cs:41:9:41:31 | After ...; | +| Assignments.cs:41:9:41:30 | Before call to method SetParamSingle | Assignments.cs:41:9:41:30 | this access | +| Assignments.cs:41:9:41:30 | call to method SetParamSingle | Assignments.cs:41:9:41:30 | After call to method SetParamSingle | +| Assignments.cs:41:9:41:30 | this access | Assignments.cs:41:28:41:29 | access to local variable x1 | +| Assignments.cs:41:9:41:31 | ...; | Assignments.cs:41:9:41:30 | Before call to method SetParamSingle | +| Assignments.cs:41:9:41:31 | After ...; | Assignments.cs:42:9:42:37 | ...; | +| Assignments.cs:41:28:41:29 | access to local variable x1 | Assignments.cs:41:9:41:30 | call to method SetParamSingle | +| Assignments.cs:42:9:42:36 | After call to method SetParamSingle | Assignments.cs:42:9:42:37 | After ...; | +| Assignments.cs:42:9:42:36 | Before call to method SetParamSingle | Assignments.cs:42:9:42:36 | this access | +| Assignments.cs:42:9:42:36 | call to method SetParamSingle | Assignments.cs:42:9:42:36 | After call to method SetParamSingle | +| Assignments.cs:42:9:42:36 | this access | Assignments.cs:42:28:42:35 | Before access to field IntField | +| Assignments.cs:42:9:42:37 | ...; | Assignments.cs:42:9:42:36 | Before call to method SetParamSingle | +| Assignments.cs:42:9:42:37 | After ...; | Assignments.cs:43:9:43:56 | ...; | +| Assignments.cs:42:28:42:35 | After access to field IntField | Assignments.cs:42:9:42:36 | call to method SetParamSingle | +| Assignments.cs:42:28:42:35 | Before access to field IntField | Assignments.cs:42:28:42:35 | this access | +| Assignments.cs:42:28:42:35 | access to field IntField | Assignments.cs:42:28:42:35 | After access to field IntField | | Assignments.cs:42:28:42:35 | this access | Assignments.cs:42:28:42:35 | access to field IntField | -| Assignments.cs:43:9:43:55 | call to method SetParamMulti | Assignments.cs:44:9:44:59 | ...; | -| Assignments.cs:43:9:43:55 | this access | Assignments.cs:43:34:43:37 | null | -| Assignments.cs:43:9:43:56 | ...; | Assignments.cs:43:9:43:55 | this access | -| Assignments.cs:43:34:43:37 | null | Assignments.cs:43:44:43:54 | this access | -| Assignments.cs:43:44:43:54 | access to field StringField | Assignments.cs:43:9:43:55 | call to method SetParamMulti | +| Assignments.cs:43:9:43:55 | After call to method SetParamMulti | Assignments.cs:43:9:43:56 | After ...; | +| Assignments.cs:43:9:43:55 | Before call to method SetParamMulti | Assignments.cs:43:9:43:55 | this access | +| Assignments.cs:43:9:43:55 | call to method SetParamMulti | Assignments.cs:43:9:43:55 | After call to method SetParamMulti | +| Assignments.cs:43:9:43:55 | this access | Assignments.cs:43:31:43:31 | Int32 y | +| Assignments.cs:43:9:43:56 | ...; | Assignments.cs:43:9:43:55 | Before call to method SetParamMulti | +| Assignments.cs:43:9:43:56 | After ...; | Assignments.cs:44:9:44:59 | ...; | +| Assignments.cs:43:31:43:31 | Int32 y | Assignments.cs:43:34:43:37 | null | +| Assignments.cs:43:34:43:37 | null | Assignments.cs:43:44:43:54 | Before access to field StringField | +| Assignments.cs:43:44:43:54 | After access to field StringField | Assignments.cs:43:9:43:55 | call to method SetParamMulti | +| Assignments.cs:43:44:43:54 | Before access to field StringField | Assignments.cs:43:44:43:54 | this access | +| Assignments.cs:43:44:43:54 | access to field StringField | Assignments.cs:43:44:43:54 | After access to field StringField | | Assignments.cs:43:44:43:54 | this access | Assignments.cs:43:44:43:54 | access to field StringField | -| Assignments.cs:44:9:44:58 | call to method SetParamMulti | Assignments.cs:38:10:38:11 | exit M2 (normal) | -| Assignments.cs:44:9:44:58 | this access | Assignments.cs:44:27:44:34 | this access | -| Assignments.cs:44:9:44:59 | ...; | Assignments.cs:44:9:44:58 | this access | -| Assignments.cs:44:27:44:34 | access to field IntField | Assignments.cs:44:37:44:40 | null | +| Assignments.cs:44:9:44:58 | After call to method SetParamMulti | Assignments.cs:44:9:44:59 | After ...; | +| Assignments.cs:44:9:44:58 | Before call to method SetParamMulti | Assignments.cs:44:9:44:58 | this access | +| Assignments.cs:44:9:44:58 | call to method SetParamMulti | Assignments.cs:44:9:44:58 | After call to method SetParamMulti | +| Assignments.cs:44:9:44:58 | this access | Assignments.cs:44:27:44:34 | Before access to field IntField | +| Assignments.cs:44:9:44:59 | ...; | Assignments.cs:44:9:44:58 | Before call to method SetParamMulti | +| Assignments.cs:44:9:44:59 | After ...; | Assignments.cs:39:5:45:5 | After {...} | +| Assignments.cs:44:27:44:34 | After access to field IntField | Assignments.cs:44:37:44:40 | null | +| Assignments.cs:44:27:44:34 | Before access to field IntField | Assignments.cs:44:27:44:34 | this access | +| Assignments.cs:44:27:44:34 | access to field IntField | Assignments.cs:44:27:44:34 | After access to field IntField | | Assignments.cs:44:27:44:34 | this access | Assignments.cs:44:27:44:34 | access to field IntField | -| Assignments.cs:44:37:44:40 | null | Assignments.cs:44:47:44:57 | this access | -| Assignments.cs:44:47:44:57 | access to field StringField | Assignments.cs:44:9:44:58 | call to method SetParamMulti | +| Assignments.cs:44:37:44:40 | null | Assignments.cs:44:47:44:57 | Before access to field StringField | +| Assignments.cs:44:47:44:57 | After access to field StringField | Assignments.cs:44:9:44:58 | call to method SetParamMulti | +| Assignments.cs:44:47:44:57 | Before access to field StringField | Assignments.cs:44:47:44:57 | this access | +| Assignments.cs:44:47:44:57 | access to field StringField | Assignments.cs:44:47:44:57 | After access to field StringField | | Assignments.cs:44:47:44:57 | this access | Assignments.cs:44:47:44:57 | access to field StringField | -| BreakInTry.cs:1:7:1:16 | call to constructor Object | BreakInTry.cs:1:7:1:16 | {...} | -| BreakInTry.cs:1:7:1:16 | call to method | BreakInTry.cs:1:7:1:16 | call to constructor Object | -| BreakInTry.cs:1:7:1:16 | enter BreakInTry | BreakInTry.cs:1:7:1:16 | this access | -| BreakInTry.cs:1:7:1:16 | exit BreakInTry (normal) | BreakInTry.cs:1:7:1:16 | exit BreakInTry | +| BreakInTry.cs:1:7:1:16 | After call to constructor Object | BreakInTry.cs:1:7:1:16 | {...} | +| BreakInTry.cs:1:7:1:16 | After call to method | BreakInTry.cs:1:7:1:16 | Before call to constructor Object | +| BreakInTry.cs:1:7:1:16 | Before call to constructor Object | BreakInTry.cs:1:7:1:16 | call to constructor Object | +| BreakInTry.cs:1:7:1:16 | Before call to method | BreakInTry.cs:1:7:1:16 | this access | +| BreakInTry.cs:1:7:1:16 | Entry | BreakInTry.cs:1:7:1:16 | Before call to method | +| BreakInTry.cs:1:7:1:16 | Normal Exit | BreakInTry.cs:1:7:1:16 | Exit | +| BreakInTry.cs:1:7:1:16 | call to constructor Object | BreakInTry.cs:1:7:1:16 | After call to constructor Object | +| BreakInTry.cs:1:7:1:16 | call to method | BreakInTry.cs:1:7:1:16 | After call to method | | BreakInTry.cs:1:7:1:16 | this access | BreakInTry.cs:1:7:1:16 | call to method | -| BreakInTry.cs:1:7:1:16 | {...} | BreakInTry.cs:1:7:1:16 | exit BreakInTry (normal) | -| BreakInTry.cs:3:10:3:11 | enter M1 | BreakInTry.cs:4:5:18:5 | {...} | -| BreakInTry.cs:3:10:3:11 | exit M1 (normal) | BreakInTry.cs:3:10:3:11 | exit M1 | +| BreakInTry.cs:1:7:1:16 | {...} | BreakInTry.cs:1:7:1:16 | Normal Exit | +| BreakInTry.cs:3:10:3:11 | Entry | BreakInTry.cs:3:22:3:25 | args | +| BreakInTry.cs:3:10:3:11 | Normal Exit | BreakInTry.cs:3:10:3:11 | Exit | +| BreakInTry.cs:3:22:3:25 | args | BreakInTry.cs:4:5:18:5 | {...} | +| BreakInTry.cs:4:5:18:5 | After {...} | BreakInTry.cs:3:10:3:11 | Normal Exit | | BreakInTry.cs:4:5:18:5 | {...} | BreakInTry.cs:5:9:17:9 | try {...} ... | +| BreakInTry.cs:5:9:17:9 | After try {...} ... | BreakInTry.cs:4:5:18:5 | After {...} | | BreakInTry.cs:5:9:17:9 | try {...} ... | BreakInTry.cs:6:9:12:9 | {...} | -| BreakInTry.cs:6:9:12:9 | {...} | BreakInTry.cs:7:33:7:36 | access to parameter args | -| BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | BreakInTry.cs:7:26:7:28 | String arg | -| BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | BreakInTry.cs:14:9:17:9 | {...} | +| BreakInTry.cs:6:9:12:9 | After {...} | BreakInTry.cs:14:9:17:9 | {...} | +| BreakInTry.cs:6:9:12:9 | {...} | BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | +| BreakInTry.cs:7:13:11:13 | After foreach (... ... in ...) ... | BreakInTry.cs:6:9:12:9 | After {...} | +| BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | BreakInTry.cs:7:33:7:36 | access to parameter args | | BreakInTry.cs:7:26:7:28 | String arg | BreakInTry.cs:8:13:11:13 | {...} | -| BreakInTry.cs:7:33:7:36 | access to parameter args | BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | +| BreakInTry.cs:7:33:7:36 | After access to parameter args [non-empty] | BreakInTry.cs:7:26:7:28 | String arg | +| BreakInTry.cs:7:33:7:36 | access to parameter args | BreakInTry.cs:7:33:7:36 | After access to parameter args [empty] | +| BreakInTry.cs:7:33:7:36 | access to parameter args | BreakInTry.cs:7:33:7:36 | After access to parameter args [non-empty] | +| BreakInTry.cs:8:13:11:13 | After {...} | BreakInTry.cs:7:13:11:13 | [LoopHeader] foreach (... ... in ...) ... | | BreakInTry.cs:8:13:11:13 | {...} | BreakInTry.cs:9:17:10:26 | if (...) ... | -| BreakInTry.cs:9:17:10:26 | if (...) ... | BreakInTry.cs:9:21:9:23 | access to local variable arg | +| BreakInTry.cs:9:17:10:26 | After if (...) ... | BreakInTry.cs:8:13:11:13 | After {...} | +| BreakInTry.cs:9:17:10:26 | if (...) ... | BreakInTry.cs:9:21:9:31 | Before ... == ... | | BreakInTry.cs:9:21:9:23 | access to local variable arg | BreakInTry.cs:9:28:9:31 | null | -| BreakInTry.cs:9:21:9:31 | ... == ... | BreakInTry.cs:10:21:10:26 | break; | +| BreakInTry.cs:9:21:9:31 | ... == ... | BreakInTry.cs:9:21:9:31 | After ... == ... [false] | +| BreakInTry.cs:9:21:9:31 | ... == ... | BreakInTry.cs:9:21:9:31 | After ... == ... [true] | +| BreakInTry.cs:9:21:9:31 | After ... == ... [false] | BreakInTry.cs:9:17:10:26 | After if (...) ... | +| BreakInTry.cs:9:21:9:31 | After ... == ... [true] | BreakInTry.cs:10:21:10:26 | Before break; | +| BreakInTry.cs:9:21:9:31 | Before ... == ... | BreakInTry.cs:9:21:9:23 | access to local variable arg | | BreakInTry.cs:9:28:9:31 | null | BreakInTry.cs:9:21:9:31 | ... == ... | +| BreakInTry.cs:10:21:10:26 | Before break; | BreakInTry.cs:10:21:10:26 | break; | +| BreakInTry.cs:14:9:17:9 | After {...} | BreakInTry.cs:5:9:17:9 | After try {...} ... | | BreakInTry.cs:14:9:17:9 | {...} | BreakInTry.cs:15:13:16:17 | if (...) ... | -| BreakInTry.cs:15:13:16:17 | if (...) ... | BreakInTry.cs:15:17:15:20 | access to parameter args | +| BreakInTry.cs:15:13:16:17 | After if (...) ... | BreakInTry.cs:14:9:17:9 | After {...} | +| BreakInTry.cs:15:13:16:17 | if (...) ... | BreakInTry.cs:15:17:15:28 | Before ... == ... | | BreakInTry.cs:15:17:15:20 | access to parameter args | BreakInTry.cs:15:25:15:28 | null | -| BreakInTry.cs:15:17:15:28 | ... == ... | BreakInTry.cs:3:10:3:11 | exit M1 (normal) | -| BreakInTry.cs:15:17:15:28 | ... == ... | BreakInTry.cs:16:17:16:17 | ; | +| BreakInTry.cs:15:17:15:28 | ... == ... | BreakInTry.cs:15:17:15:28 | After ... == ... [false] | +| BreakInTry.cs:15:17:15:28 | ... == ... | BreakInTry.cs:15:17:15:28 | After ... == ... [true] | +| BreakInTry.cs:15:17:15:28 | After ... == ... [true] | BreakInTry.cs:16:17:16:17 | ; | +| BreakInTry.cs:15:17:15:28 | Before ... == ... | BreakInTry.cs:15:17:15:20 | access to parameter args | | BreakInTry.cs:15:25:15:28 | null | BreakInTry.cs:15:17:15:28 | ... == ... | -| BreakInTry.cs:20:10:20:11 | enter M2 | BreakInTry.cs:21:5:36:5 | {...} | -| BreakInTry.cs:20:10:20:11 | exit M2 (normal) | BreakInTry.cs:20:10:20:11 | exit M2 | -| BreakInTry.cs:21:5:36:5 | {...} | BreakInTry.cs:22:29:22:32 | access to parameter args | -| BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:22:22:22:24 | String arg | -| BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:35:7:35:7 | ; | +| BreakInTry.cs:20:10:20:11 | Entry | BreakInTry.cs:20:22:20:25 | args | +| BreakInTry.cs:20:10:20:11 | Normal Exit | BreakInTry.cs:20:10:20:11 | Exit | +| BreakInTry.cs:20:22:20:25 | args | BreakInTry.cs:21:5:36:5 | {...} | +| BreakInTry.cs:21:5:36:5 | After {...} | BreakInTry.cs:20:10:20:11 | Normal Exit | +| BreakInTry.cs:21:5:36:5 | {...} | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | +| BreakInTry.cs:22:9:34:9 | After foreach (... ... in ...) ... | BreakInTry.cs:35:7:35:7 | ; | +| BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:22:29:22:32 | access to parameter args | | BreakInTry.cs:22:22:22:24 | String arg | BreakInTry.cs:23:9:34:9 | {...} | -| BreakInTry.cs:22:29:22:32 | access to parameter args | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | +| BreakInTry.cs:22:29:22:32 | After access to parameter args [non-empty] | BreakInTry.cs:22:22:22:24 | String arg | +| BreakInTry.cs:22:29:22:32 | access to parameter args | BreakInTry.cs:22:29:22:32 | After access to parameter args [empty] | +| BreakInTry.cs:22:29:22:32 | access to parameter args | BreakInTry.cs:22:29:22:32 | After access to parameter args [non-empty] | +| BreakInTry.cs:23:9:34:9 | After {...} | BreakInTry.cs:22:9:34:9 | [LoopHeader] foreach (... ... in ...) ... | | BreakInTry.cs:23:9:34:9 | {...} | BreakInTry.cs:24:13:33:13 | try {...} ... | +| BreakInTry.cs:24:13:33:13 | After try {...} ... | BreakInTry.cs:23:9:34:9 | After {...} | | BreakInTry.cs:24:13:33:13 | try {...} ... | BreakInTry.cs:25:13:28:13 | {...} | | BreakInTry.cs:25:13:28:13 | {...} | BreakInTry.cs:26:17:27:26 | if (...) ... | -| BreakInTry.cs:26:17:27:26 | if (...) ... | BreakInTry.cs:26:21:26:23 | access to local variable arg | +| BreakInTry.cs:26:17:27:26 | After if (...) ... | BreakInTry.cs:25:13:28:13 | After {...} | +| BreakInTry.cs:26:17:27:26 | if (...) ... | BreakInTry.cs:26:21:26:31 | Before ... == ... | | BreakInTry.cs:26:21:26:23 | access to local variable arg | BreakInTry.cs:26:28:26:31 | null | -| BreakInTry.cs:26:21:26:31 | ... == ... | BreakInTry.cs:27:21:27:26 | break; | -| BreakInTry.cs:26:21:26:31 | ... == ... | BreakInTry.cs:30:13:33:13 | {...} | +| BreakInTry.cs:26:21:26:31 | ... == ... | BreakInTry.cs:26:21:26:31 | After ... == ... [false] | +| BreakInTry.cs:26:21:26:31 | ... == ... | BreakInTry.cs:26:21:26:31 | After ... == ... [true] | +| BreakInTry.cs:26:21:26:31 | After ... == ... [false] | BreakInTry.cs:26:17:27:26 | After if (...) ... | +| BreakInTry.cs:26:21:26:31 | After ... == ... [true] | BreakInTry.cs:27:21:27:26 | Before break; | +| BreakInTry.cs:26:21:26:31 | Before ... == ... | BreakInTry.cs:26:21:26:23 | access to local variable arg | | BreakInTry.cs:26:28:26:31 | null | BreakInTry.cs:26:21:26:31 | ... == ... | +| BreakInTry.cs:27:21:27:26 | Before break; | BreakInTry.cs:27:21:27:26 | break; | +| BreakInTry.cs:30:13:33:13 | After {...} | BreakInTry.cs:24:13:33:13 | After try {...} ... | | BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:31:17:32:21 | if (...) ... | -| BreakInTry.cs:31:17:32:21 | if (...) ... | BreakInTry.cs:31:21:31:24 | access to parameter args | +| BreakInTry.cs:31:17:32:21 | After if (...) ... | BreakInTry.cs:30:13:33:13 | After {...} | +| BreakInTry.cs:31:17:32:21 | if (...) ... | BreakInTry.cs:31:21:31:32 | Before ... == ... | | BreakInTry.cs:31:21:31:24 | access to parameter args | BreakInTry.cs:31:29:31:32 | null | -| BreakInTry.cs:31:21:31:32 | ... == ... | BreakInTry.cs:32:21:32:21 | ; | +| BreakInTry.cs:31:21:31:32 | ... == ... | BreakInTry.cs:31:21:31:32 | After ... == ... [false] | +| BreakInTry.cs:31:21:31:32 | ... == ... | BreakInTry.cs:31:21:31:32 | After ... == ... [true] | +| BreakInTry.cs:31:21:31:32 | After ... == ... [true] | BreakInTry.cs:32:21:32:21 | ; | +| BreakInTry.cs:31:21:31:32 | Before ... == ... | BreakInTry.cs:31:21:31:24 | access to parameter args | | BreakInTry.cs:31:29:31:32 | null | BreakInTry.cs:31:21:31:32 | ... == ... | -| BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:20:10:20:11 | exit M2 (normal) | -| BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:39:5:54:5 | {...} | -| BreakInTry.cs:38:10:38:11 | exit M3 (normal) | BreakInTry.cs:38:10:38:11 | exit M3 | +| BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:21:5:36:5 | After {...} | +| BreakInTry.cs:38:10:38:11 | Entry | BreakInTry.cs:38:22:38:25 | args | +| BreakInTry.cs:38:10:38:11 | Normal Exit | BreakInTry.cs:38:10:38:11 | Exit | +| BreakInTry.cs:38:22:38:25 | args | BreakInTry.cs:39:5:54:5 | {...} | | BreakInTry.cs:39:5:54:5 | {...} | BreakInTry.cs:40:9:52:9 | try {...} ... | +| BreakInTry.cs:40:9:52:9 | After try {...} ... | BreakInTry.cs:53:7:53:7 | ; | | BreakInTry.cs:40:9:52:9 | try {...} ... | BreakInTry.cs:41:9:44:9 | {...} | | BreakInTry.cs:41:9:44:9 | {...} | BreakInTry.cs:42:13:43:23 | if (...) ... | -| BreakInTry.cs:42:13:43:23 | if (...) ... | BreakInTry.cs:42:17:42:20 | access to parameter args | +| BreakInTry.cs:42:13:43:23 | After if (...) ... | BreakInTry.cs:41:9:44:9 | After {...} | +| BreakInTry.cs:42:13:43:23 | if (...) ... | BreakInTry.cs:42:17:42:28 | Before ... == ... | | BreakInTry.cs:42:17:42:20 | access to parameter args | BreakInTry.cs:42:25:42:28 | null | -| BreakInTry.cs:42:17:42:28 | ... == ... | BreakInTry.cs:43:17:43:23 | return ...; | -| BreakInTry.cs:42:17:42:28 | ... == ... | BreakInTry.cs:46:9:52:9 | {...} | +| BreakInTry.cs:42:17:42:28 | ... == ... | BreakInTry.cs:42:17:42:28 | After ... == ... [false] | +| BreakInTry.cs:42:17:42:28 | ... == ... | BreakInTry.cs:42:17:42:28 | After ... == ... [true] | +| BreakInTry.cs:42:17:42:28 | After ... == ... [false] | BreakInTry.cs:42:13:43:23 | After if (...) ... | +| BreakInTry.cs:42:17:42:28 | After ... == ... [true] | BreakInTry.cs:43:17:43:23 | Before return ...; | +| BreakInTry.cs:42:17:42:28 | Before ... == ... | BreakInTry.cs:42:17:42:20 | access to parameter args | | BreakInTry.cs:42:25:42:28 | null | BreakInTry.cs:42:17:42:28 | ... == ... | -| BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:47:33:47:36 | access to parameter args | -| BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:38:10:38:11 | exit M3 (normal) | -| BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:47:26:47:28 | String arg | -| BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:53:7:53:7 | ; | +| BreakInTry.cs:43:17:43:23 | Before return ...; | BreakInTry.cs:43:17:43:23 | return ...; | +| BreakInTry.cs:46:9:52:9 | After {...} | BreakInTry.cs:38:10:38:11 | Normal Exit | +| BreakInTry.cs:46:9:52:9 | After {...} | BreakInTry.cs:40:9:52:9 | After try {...} ... | +| BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | +| BreakInTry.cs:47:13:51:13 | After foreach (... ... in ...) ... | BreakInTry.cs:46:9:52:9 | After {...} | +| BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:47:33:47:36 | access to parameter args | | BreakInTry.cs:47:26:47:28 | String arg | BreakInTry.cs:48:13:51:13 | {...} | -| BreakInTry.cs:47:33:47:36 | access to parameter args | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | +| BreakInTry.cs:47:33:47:36 | After access to parameter args [non-empty] | BreakInTry.cs:47:26:47:28 | String arg | +| BreakInTry.cs:47:33:47:36 | access to parameter args | BreakInTry.cs:47:33:47:36 | After access to parameter args [empty] | +| BreakInTry.cs:47:33:47:36 | access to parameter args | BreakInTry.cs:47:33:47:36 | After access to parameter args [non-empty] | +| BreakInTry.cs:48:13:51:13 | After {...} | BreakInTry.cs:47:13:51:13 | [LoopHeader] foreach (... ... in ...) ... | | BreakInTry.cs:48:13:51:13 | {...} | BreakInTry.cs:49:17:50:26 | if (...) ... | -| BreakInTry.cs:49:17:50:26 | if (...) ... | BreakInTry.cs:49:21:49:23 | access to local variable arg | +| BreakInTry.cs:49:17:50:26 | After if (...) ... | BreakInTry.cs:48:13:51:13 | After {...} | +| BreakInTry.cs:49:17:50:26 | if (...) ... | BreakInTry.cs:49:21:49:31 | Before ... == ... | | BreakInTry.cs:49:21:49:23 | access to local variable arg | BreakInTry.cs:49:28:49:31 | null | -| BreakInTry.cs:49:21:49:31 | ... == ... | BreakInTry.cs:50:21:50:26 | break; | +| BreakInTry.cs:49:21:49:31 | ... == ... | BreakInTry.cs:49:21:49:31 | After ... == ... [false] | +| BreakInTry.cs:49:21:49:31 | ... == ... | BreakInTry.cs:49:21:49:31 | After ... == ... [true] | +| BreakInTry.cs:49:21:49:31 | After ... == ... [false] | BreakInTry.cs:49:17:50:26 | After if (...) ... | +| BreakInTry.cs:49:21:49:31 | After ... == ... [true] | BreakInTry.cs:50:21:50:26 | Before break; | +| BreakInTry.cs:49:21:49:31 | Before ... == ... | BreakInTry.cs:49:21:49:23 | access to local variable arg | | BreakInTry.cs:49:28:49:31 | null | BreakInTry.cs:49:21:49:31 | ... == ... | -| BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:57:5:71:5 | {...} | -| BreakInTry.cs:56:10:56:11 | exit M4 (normal) | BreakInTry.cs:56:10:56:11 | exit M4 | +| BreakInTry.cs:50:21:50:26 | Before break; | BreakInTry.cs:50:21:50:26 | break; | +| BreakInTry.cs:53:7:53:7 | ; | BreakInTry.cs:39:5:54:5 | After {...} | +| BreakInTry.cs:56:10:56:11 | Entry | BreakInTry.cs:56:22:56:25 | args | +| BreakInTry.cs:56:10:56:11 | Normal Exit | BreakInTry.cs:56:10:56:11 | Exit | +| BreakInTry.cs:56:22:56:25 | args | BreakInTry.cs:57:5:71:5 | {...} | | BreakInTry.cs:57:5:71:5 | {...} | BreakInTry.cs:58:9:70:9 | try {...} ... | +| BreakInTry.cs:58:9:70:9 | After try {...} ... | BreakInTry.cs:57:5:71:5 | After {...} | | BreakInTry.cs:58:9:70:9 | try {...} ... | BreakInTry.cs:59:9:62:9 | {...} | | BreakInTry.cs:59:9:62:9 | {...} | BreakInTry.cs:60:13:61:23 | if (...) ... | -| BreakInTry.cs:60:13:61:23 | if (...) ... | BreakInTry.cs:60:17:60:20 | access to parameter args | +| BreakInTry.cs:60:13:61:23 | After if (...) ... | BreakInTry.cs:59:9:62:9 | After {...} | +| BreakInTry.cs:60:13:61:23 | if (...) ... | BreakInTry.cs:60:17:60:28 | Before ... == ... | | BreakInTry.cs:60:17:60:20 | access to parameter args | BreakInTry.cs:60:25:60:28 | null | -| BreakInTry.cs:60:17:60:28 | ... == ... | BreakInTry.cs:61:17:61:23 | return ...; | -| BreakInTry.cs:60:17:60:28 | ... == ... | BreakInTry.cs:64:9:70:9 | {...} | +| BreakInTry.cs:60:17:60:28 | ... == ... | BreakInTry.cs:60:17:60:28 | After ... == ... [false] | +| BreakInTry.cs:60:17:60:28 | ... == ... | BreakInTry.cs:60:17:60:28 | After ... == ... [true] | +| BreakInTry.cs:60:17:60:28 | After ... == ... [false] | BreakInTry.cs:60:13:61:23 | After if (...) ... | +| BreakInTry.cs:60:17:60:28 | After ... == ... [true] | BreakInTry.cs:61:17:61:23 | Before return ...; | +| BreakInTry.cs:60:17:60:28 | Before ... == ... | BreakInTry.cs:60:17:60:20 | access to parameter args | | BreakInTry.cs:60:25:60:28 | null | BreakInTry.cs:60:17:60:28 | ... == ... | -| BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:65:33:65:36 | access to parameter args | -| BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:56:10:56:11 | exit M4 (normal) | -| BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:65:26:65:28 | String arg | +| BreakInTry.cs:61:17:61:23 | Before return ...; | BreakInTry.cs:61:17:61:23 | return ...; | +| BreakInTry.cs:64:9:70:9 | After {...} | BreakInTry.cs:56:10:56:11 | Normal Exit | +| BreakInTry.cs:64:9:70:9 | After {...} | BreakInTry.cs:58:9:70:9 | After try {...} ... | +| BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | +| BreakInTry.cs:65:13:69:13 | After foreach (... ... in ...) ... | BreakInTry.cs:64:9:70:9 | After {...} | +| BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:65:33:65:36 | access to parameter args | | BreakInTry.cs:65:26:65:28 | String arg | BreakInTry.cs:66:13:69:13 | {...} | -| BreakInTry.cs:65:33:65:36 | access to parameter args | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | +| BreakInTry.cs:65:33:65:36 | After access to parameter args [non-empty] | BreakInTry.cs:65:26:65:28 | String arg | +| BreakInTry.cs:65:33:65:36 | access to parameter args | BreakInTry.cs:65:33:65:36 | After access to parameter args [empty] | +| BreakInTry.cs:65:33:65:36 | access to parameter args | BreakInTry.cs:65:33:65:36 | After access to parameter args [non-empty] | +| BreakInTry.cs:66:13:69:13 | After {...} | BreakInTry.cs:65:13:69:13 | [LoopHeader] foreach (... ... in ...) ... | | BreakInTry.cs:66:13:69:13 | {...} | BreakInTry.cs:67:17:68:26 | if (...) ... | -| BreakInTry.cs:67:17:68:26 | if (...) ... | BreakInTry.cs:67:21:67:23 | access to local variable arg | +| BreakInTry.cs:67:17:68:26 | After if (...) ... | BreakInTry.cs:66:13:69:13 | After {...} | +| BreakInTry.cs:67:17:68:26 | if (...) ... | BreakInTry.cs:67:21:67:31 | Before ... == ... | | BreakInTry.cs:67:21:67:23 | access to local variable arg | BreakInTry.cs:67:28:67:31 | null | -| BreakInTry.cs:67:21:67:31 | ... == ... | BreakInTry.cs:68:21:68:26 | break; | +| BreakInTry.cs:67:21:67:31 | ... == ... | BreakInTry.cs:67:21:67:31 | After ... == ... [false] | +| BreakInTry.cs:67:21:67:31 | ... == ... | BreakInTry.cs:67:21:67:31 | After ... == ... [true] | +| BreakInTry.cs:67:21:67:31 | After ... == ... [false] | BreakInTry.cs:67:17:68:26 | After if (...) ... | +| BreakInTry.cs:67:21:67:31 | After ... == ... [true] | BreakInTry.cs:68:21:68:26 | Before break; | +| BreakInTry.cs:67:21:67:31 | Before ... == ... | BreakInTry.cs:67:21:67:23 | access to local variable arg | | BreakInTry.cs:67:28:67:31 | null | BreakInTry.cs:67:21:67:31 | ... == ... | -| CompileTimeOperators.cs:3:7:3:26 | call to constructor Object | CompileTimeOperators.cs:3:7:3:26 | {...} | -| CompileTimeOperators.cs:3:7:3:26 | call to method | CompileTimeOperators.cs:3:7:3:26 | call to constructor Object | -| CompileTimeOperators.cs:3:7:3:26 | enter CompileTimeOperators | CompileTimeOperators.cs:3:7:3:26 | this access | -| CompileTimeOperators.cs:3:7:3:26 | exit CompileTimeOperators (normal) | CompileTimeOperators.cs:3:7:3:26 | exit CompileTimeOperators | +| BreakInTry.cs:68:21:68:26 | Before break; | BreakInTry.cs:68:21:68:26 | break; | +| CompileTimeOperators.cs:3:7:3:26 | After call to constructor Object | CompileTimeOperators.cs:3:7:3:26 | {...} | +| CompileTimeOperators.cs:3:7:3:26 | After call to method | CompileTimeOperators.cs:3:7:3:26 | Before call to constructor Object | +| CompileTimeOperators.cs:3:7:3:26 | Before call to constructor Object | CompileTimeOperators.cs:3:7:3:26 | call to constructor Object | +| CompileTimeOperators.cs:3:7:3:26 | Before call to method | CompileTimeOperators.cs:3:7:3:26 | this access | +| CompileTimeOperators.cs:3:7:3:26 | Entry | CompileTimeOperators.cs:3:7:3:26 | Before call to method | +| CompileTimeOperators.cs:3:7:3:26 | Normal Exit | CompileTimeOperators.cs:3:7:3:26 | Exit | +| CompileTimeOperators.cs:3:7:3:26 | call to constructor Object | CompileTimeOperators.cs:3:7:3:26 | After call to constructor Object | +| CompileTimeOperators.cs:3:7:3:26 | call to method | CompileTimeOperators.cs:3:7:3:26 | After call to method | | CompileTimeOperators.cs:3:7:3:26 | this access | CompileTimeOperators.cs:3:7:3:26 | call to method | -| CompileTimeOperators.cs:3:7:3:26 | {...} | CompileTimeOperators.cs:3:7:3:26 | exit CompileTimeOperators (normal) | -| CompileTimeOperators.cs:5:9:5:15 | enter Default | CompileTimeOperators.cs:6:5:8:5 | {...} | -| CompileTimeOperators.cs:5:9:5:15 | exit Default (normal) | CompileTimeOperators.cs:5:9:5:15 | exit Default | -| CompileTimeOperators.cs:6:5:8:5 | {...} | CompileTimeOperators.cs:7:16:7:27 | default(...) | -| CompileTimeOperators.cs:7:9:7:28 | return ...; | CompileTimeOperators.cs:5:9:5:15 | exit Default (normal) | +| CompileTimeOperators.cs:3:7:3:26 | {...} | CompileTimeOperators.cs:3:7:3:26 | Normal Exit | +| CompileTimeOperators.cs:5:9:5:15 | Entry | CompileTimeOperators.cs:6:5:8:5 | {...} | +| CompileTimeOperators.cs:5:9:5:15 | Normal Exit | CompileTimeOperators.cs:5:9:5:15 | Exit | +| CompileTimeOperators.cs:6:5:8:5 | {...} | CompileTimeOperators.cs:7:9:7:28 | Before return ...; | +| CompileTimeOperators.cs:7:9:7:28 | Before return ...; | CompileTimeOperators.cs:7:16:7:27 | default(...) | +| CompileTimeOperators.cs:7:9:7:28 | return ...; | CompileTimeOperators.cs:5:9:5:15 | Normal Exit | | CompileTimeOperators.cs:7:16:7:27 | default(...) | CompileTimeOperators.cs:7:9:7:28 | return ...; | -| CompileTimeOperators.cs:10:9:10:14 | enter Sizeof | CompileTimeOperators.cs:11:5:13:5 | {...} | -| CompileTimeOperators.cs:10:9:10:14 | exit Sizeof (normal) | CompileTimeOperators.cs:10:9:10:14 | exit Sizeof | -| CompileTimeOperators.cs:11:5:13:5 | {...} | CompileTimeOperators.cs:12:16:12:26 | sizeof(..) | -| CompileTimeOperators.cs:12:9:12:27 | return ...; | CompileTimeOperators.cs:10:9:10:14 | exit Sizeof (normal) | +| CompileTimeOperators.cs:10:9:10:14 | Entry | CompileTimeOperators.cs:11:5:13:5 | {...} | +| CompileTimeOperators.cs:10:9:10:14 | Normal Exit | CompileTimeOperators.cs:10:9:10:14 | Exit | +| CompileTimeOperators.cs:11:5:13:5 | {...} | CompileTimeOperators.cs:12:9:12:27 | Before return ...; | +| CompileTimeOperators.cs:12:9:12:27 | Before return ...; | CompileTimeOperators.cs:12:16:12:26 | sizeof(..) | +| CompileTimeOperators.cs:12:9:12:27 | return ...; | CompileTimeOperators.cs:10:9:10:14 | Normal Exit | | CompileTimeOperators.cs:12:16:12:26 | sizeof(..) | CompileTimeOperators.cs:12:9:12:27 | return ...; | -| CompileTimeOperators.cs:15:10:15:15 | enter Typeof | CompileTimeOperators.cs:16:5:18:5 | {...} | -| CompileTimeOperators.cs:15:10:15:15 | exit Typeof (normal) | CompileTimeOperators.cs:15:10:15:15 | exit Typeof | -| CompileTimeOperators.cs:16:5:18:5 | {...} | CompileTimeOperators.cs:17:16:17:26 | typeof(...) | -| CompileTimeOperators.cs:17:9:17:27 | return ...; | CompileTimeOperators.cs:15:10:15:15 | exit Typeof (normal) | +| CompileTimeOperators.cs:15:10:15:15 | Entry | CompileTimeOperators.cs:16:5:18:5 | {...} | +| CompileTimeOperators.cs:15:10:15:15 | Normal Exit | CompileTimeOperators.cs:15:10:15:15 | Exit | +| CompileTimeOperators.cs:16:5:18:5 | {...} | CompileTimeOperators.cs:17:9:17:27 | Before return ...; | +| CompileTimeOperators.cs:17:9:17:27 | Before return ...; | CompileTimeOperators.cs:17:16:17:26 | typeof(...) | +| CompileTimeOperators.cs:17:9:17:27 | return ...; | CompileTimeOperators.cs:15:10:15:15 | Normal Exit | | CompileTimeOperators.cs:17:16:17:26 | typeof(...) | CompileTimeOperators.cs:17:9:17:27 | return ...; | -| CompileTimeOperators.cs:20:12:20:17 | enter Nameof | CompileTimeOperators.cs:21:5:23:5 | {...} | -| CompileTimeOperators.cs:20:12:20:17 | exit Nameof (normal) | CompileTimeOperators.cs:20:12:20:17 | exit Nameof | -| CompileTimeOperators.cs:21:5:23:5 | {...} | CompileTimeOperators.cs:22:16:22:24 | nameof(...) | -| CompileTimeOperators.cs:22:9:22:25 | return ...; | CompileTimeOperators.cs:20:12:20:17 | exit Nameof (normal) | +| CompileTimeOperators.cs:20:12:20:17 | Entry | CompileTimeOperators.cs:20:23:20:23 | i | +| CompileTimeOperators.cs:20:12:20:17 | Normal Exit | CompileTimeOperators.cs:20:12:20:17 | Exit | +| CompileTimeOperators.cs:20:23:20:23 | i | CompileTimeOperators.cs:21:5:23:5 | {...} | +| CompileTimeOperators.cs:21:5:23:5 | {...} | CompileTimeOperators.cs:22:9:22:25 | Before return ...; | +| CompileTimeOperators.cs:22:9:22:25 | Before return ...; | CompileTimeOperators.cs:22:16:22:24 | nameof(...) | +| CompileTimeOperators.cs:22:9:22:25 | return ...; | CompileTimeOperators.cs:20:12:20:17 | Normal Exit | | CompileTimeOperators.cs:22:16:22:24 | nameof(...) | CompileTimeOperators.cs:22:9:22:25 | return ...; | -| CompileTimeOperators.cs:26:7:26:22 | call to constructor Object | CompileTimeOperators.cs:26:7:26:22 | {...} | -| CompileTimeOperators.cs:26:7:26:22 | call to method | CompileTimeOperators.cs:26:7:26:22 | call to constructor Object | -| CompileTimeOperators.cs:26:7:26:22 | enter GotoInTryFinally | CompileTimeOperators.cs:26:7:26:22 | this access | -| CompileTimeOperators.cs:26:7:26:22 | exit GotoInTryFinally (normal) | CompileTimeOperators.cs:26:7:26:22 | exit GotoInTryFinally | +| CompileTimeOperators.cs:26:7:26:22 | After call to constructor Object | CompileTimeOperators.cs:26:7:26:22 | {...} | +| CompileTimeOperators.cs:26:7:26:22 | After call to method | CompileTimeOperators.cs:26:7:26:22 | Before call to constructor Object | +| CompileTimeOperators.cs:26:7:26:22 | Before call to constructor Object | CompileTimeOperators.cs:26:7:26:22 | call to constructor Object | +| CompileTimeOperators.cs:26:7:26:22 | Before call to method | CompileTimeOperators.cs:26:7:26:22 | this access | +| CompileTimeOperators.cs:26:7:26:22 | Entry | CompileTimeOperators.cs:26:7:26:22 | Before call to method | +| CompileTimeOperators.cs:26:7:26:22 | Normal Exit | CompileTimeOperators.cs:26:7:26:22 | Exit | +| CompileTimeOperators.cs:26:7:26:22 | call to constructor Object | CompileTimeOperators.cs:26:7:26:22 | After call to constructor Object | +| CompileTimeOperators.cs:26:7:26:22 | call to method | CompileTimeOperators.cs:26:7:26:22 | After call to method | | CompileTimeOperators.cs:26:7:26:22 | this access | CompileTimeOperators.cs:26:7:26:22 | call to method | -| CompileTimeOperators.cs:26:7:26:22 | {...} | CompileTimeOperators.cs:26:7:26:22 | exit GotoInTryFinally (normal) | -| CompileTimeOperators.cs:28:10:28:10 | enter M | CompileTimeOperators.cs:29:5:41:5 | {...} | +| CompileTimeOperators.cs:26:7:26:22 | {...} | CompileTimeOperators.cs:26:7:26:22 | Normal Exit | +| CompileTimeOperators.cs:28:10:28:10 | Entry | CompileTimeOperators.cs:29:5:41:5 | {...} | +| CompileTimeOperators.cs:29:5:41:5 | After {...} | CompileTimeOperators.cs:28:10:28:10 | Normal Exit | | CompileTimeOperators.cs:29:5:41:5 | {...} | CompileTimeOperators.cs:30:9:38:9 | try {...} ... | +| CompileTimeOperators.cs:30:9:38:9 | After try {...} ... | CompileTimeOperators.cs:39:9:39:34 | ...; | | CompileTimeOperators.cs:30:9:38:9 | try {...} ... | CompileTimeOperators.cs:31:9:34:9 | {...} | -| CompileTimeOperators.cs:31:9:34:9 | {...} | CompileTimeOperators.cs:32:13:32:21 | goto ...; | +| CompileTimeOperators.cs:31:9:34:9 | {...} | CompileTimeOperators.cs:32:13:32:21 | Before goto ...; | +| CompileTimeOperators.cs:32:13:32:21 | Before goto ...; | CompileTimeOperators.cs:32:13:32:21 | goto ...; | | CompileTimeOperators.cs:32:13:32:21 | goto ...; | CompileTimeOperators.cs:36:9:38:9 | {...} | +| CompileTimeOperators.cs:36:9:38:9 | After {...} | CompileTimeOperators.cs:28:10:28:10 | Exceptional Exit | +| CompileTimeOperators.cs:36:9:38:9 | After {...} | CompileTimeOperators.cs:30:9:38:9 | After try {...} ... | +| CompileTimeOperators.cs:36:9:38:9 | After {...} | CompileTimeOperators.cs:40:9:40:11 | End: | | CompileTimeOperators.cs:36:9:38:9 | {...} | CompileTimeOperators.cs:37:13:37:41 | ...; | -| CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | CompileTimeOperators.cs:28:10:28:10 | exit M (abnormal) | -| CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | CompileTimeOperators.cs:39:9:39:34 | ...; | -| CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | CompileTimeOperators.cs:40:9:40:11 | End: | -| CompileTimeOperators.cs:37:13:37:41 | ...; | CompileTimeOperators.cs:37:31:37:39 | "Finally" | +| CompileTimeOperators.cs:37:13:37:40 | After call to method WriteLine | CompileTimeOperators.cs:37:13:37:41 | After ...; | +| CompileTimeOperators.cs:37:13:37:40 | Before call to method WriteLine | CompileTimeOperators.cs:37:31:37:39 | "Finally" | +| CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | CompileTimeOperators.cs:37:13:37:40 | After call to method WriteLine | +| CompileTimeOperators.cs:37:13:37:41 | ...; | CompileTimeOperators.cs:37:13:37:40 | Before call to method WriteLine | +| CompileTimeOperators.cs:37:13:37:41 | After ...; | CompileTimeOperators.cs:36:9:38:9 | After {...} | | CompileTimeOperators.cs:37:31:37:39 | "Finally" | CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | -| CompileTimeOperators.cs:39:9:39:34 | ...; | CompileTimeOperators.cs:39:27:39:32 | "Dead" | +| CompileTimeOperators.cs:39:9:39:33 | After call to method WriteLine | CompileTimeOperators.cs:39:9:39:34 | After ...; | +| CompileTimeOperators.cs:39:9:39:33 | Before call to method WriteLine | CompileTimeOperators.cs:39:27:39:32 | "Dead" | +| CompileTimeOperators.cs:39:9:39:33 | call to method WriteLine | CompileTimeOperators.cs:39:9:39:33 | After call to method WriteLine | +| CompileTimeOperators.cs:39:9:39:34 | ...; | CompileTimeOperators.cs:39:9:39:33 | Before call to method WriteLine | | CompileTimeOperators.cs:39:27:39:32 | "Dead" | CompileTimeOperators.cs:39:9:39:33 | call to method WriteLine | | CompileTimeOperators.cs:40:9:40:11 | End: | CompileTimeOperators.cs:40:14:40:38 | ...; | -| CompileTimeOperators.cs:40:14:40:37 | call to method WriteLine | CompileTimeOperators.cs:28:10:28:10 | exit M (normal) | -| CompileTimeOperators.cs:40:14:40:38 | ...; | CompileTimeOperators.cs:40:32:40:36 | "End" | +| CompileTimeOperators.cs:40:14:40:37 | After call to method WriteLine | CompileTimeOperators.cs:40:14:40:38 | After ...; | +| CompileTimeOperators.cs:40:14:40:37 | Before call to method WriteLine | CompileTimeOperators.cs:40:32:40:36 | "End" | +| CompileTimeOperators.cs:40:14:40:37 | call to method WriteLine | CompileTimeOperators.cs:40:14:40:37 | After call to method WriteLine | +| CompileTimeOperators.cs:40:14:40:38 | ...; | CompileTimeOperators.cs:40:14:40:37 | Before call to method WriteLine | +| CompileTimeOperators.cs:40:14:40:38 | After ...; | CompileTimeOperators.cs:29:5:41:5 | After {...} | | CompileTimeOperators.cs:40:32:40:36 | "End" | CompileTimeOperators.cs:40:14:40:37 | call to method WriteLine | -| ConditionalAccess.cs:1:7:1:23 | call to constructor Object | ConditionalAccess.cs:1:7:1:23 | {...} | -| ConditionalAccess.cs:1:7:1:23 | call to method | ConditionalAccess.cs:1:7:1:23 | call to constructor Object | -| ConditionalAccess.cs:1:7:1:23 | enter ConditionalAccess | ConditionalAccess.cs:1:7:1:23 | this access | -| ConditionalAccess.cs:1:7:1:23 | exit ConditionalAccess (normal) | ConditionalAccess.cs:1:7:1:23 | exit ConditionalAccess | +| ConditionalAccess.cs:1:7:1:23 | After call to constructor Object | ConditionalAccess.cs:1:7:1:23 | {...} | +| ConditionalAccess.cs:1:7:1:23 | After call to method | ConditionalAccess.cs:1:7:1:23 | Before call to constructor Object | +| ConditionalAccess.cs:1:7:1:23 | Before call to constructor Object | ConditionalAccess.cs:1:7:1:23 | call to constructor Object | +| ConditionalAccess.cs:1:7:1:23 | Before call to method | ConditionalAccess.cs:1:7:1:23 | this access | +| ConditionalAccess.cs:1:7:1:23 | Entry | ConditionalAccess.cs:1:7:1:23 | Before call to method | +| ConditionalAccess.cs:1:7:1:23 | Normal Exit | ConditionalAccess.cs:1:7:1:23 | Exit | +| ConditionalAccess.cs:1:7:1:23 | call to constructor Object | ConditionalAccess.cs:1:7:1:23 | After call to constructor Object | +| ConditionalAccess.cs:1:7:1:23 | call to method | ConditionalAccess.cs:1:7:1:23 | After call to method | | ConditionalAccess.cs:1:7:1:23 | this access | ConditionalAccess.cs:1:7:1:23 | call to method | -| ConditionalAccess.cs:1:7:1:23 | {...} | ConditionalAccess.cs:1:7:1:23 | exit ConditionalAccess (normal) | -| ConditionalAccess.cs:3:12:3:13 | enter M1 | ConditionalAccess.cs:3:26:3:26 | access to parameter i | -| ConditionalAccess.cs:3:12:3:13 | exit M1 (normal) | ConditionalAccess.cs:3:12:3:13 | exit M1 | -| ConditionalAccess.cs:3:26:3:26 | access to parameter i | ConditionalAccess.cs:3:12:3:13 | exit M1 (normal) | -| ConditionalAccess.cs:3:26:3:26 | access to parameter i | ConditionalAccess.cs:3:26:3:38 | call to method ToString | -| ConditionalAccess.cs:3:26:3:38 | call to method ToString | ConditionalAccess.cs:3:26:3:49 | call to method ToLower | -| ConditionalAccess.cs:5:10:5:11 | enter M2 | ConditionalAccess.cs:5:26:5:26 | access to parameter s | -| ConditionalAccess.cs:5:10:5:11 | exit M2 (normal) | ConditionalAccess.cs:5:10:5:11 | exit M2 | -| ConditionalAccess.cs:5:26:5:26 | access to parameter s | ConditionalAccess.cs:5:10:5:11 | exit M2 (normal) | -| ConditionalAccess.cs:5:26:5:26 | access to parameter s | ConditionalAccess.cs:5:26:5:34 | access to property Length | -| ConditionalAccess.cs:7:10:7:11 | enter M3 | ConditionalAccess.cs:7:39:7:40 | access to parameter s1 | -| ConditionalAccess.cs:7:10:7:11 | exit M3 (normal) | ConditionalAccess.cs:7:10:7:11 | exit M3 | -| ConditionalAccess.cs:7:39:7:40 | access to parameter s1 | ConditionalAccess.cs:7:39:7:46 | ... ?? ... | -| ConditionalAccess.cs:7:39:7:40 | access to parameter s1 | ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | -| ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | ConditionalAccess.cs:7:39:7:46 | [non-null] ... ?? ... | -| ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | ConditionalAccess.cs:7:39:7:46 | [null] ... ?? ... | -| ConditionalAccess.cs:9:9:9:10 | enter M4 | ConditionalAccess.cs:9:25:9:25 | access to parameter s | -| ConditionalAccess.cs:9:9:9:10 | exit M4 (normal) | ConditionalAccess.cs:9:9:9:10 | exit M4 | -| ConditionalAccess.cs:9:25:9:25 | access to parameter s | ConditionalAccess.cs:9:25:9:33 | access to property Length | -| ConditionalAccess.cs:9:25:9:25 | access to parameter s | ConditionalAccess.cs:9:38:9:38 | 0 | -| ConditionalAccess.cs:9:25:9:38 | ... ?? ... | ConditionalAccess.cs:9:9:9:10 | exit M4 (normal) | -| ConditionalAccess.cs:11:9:11:10 | enter M5 | ConditionalAccess.cs:12:5:17:5 | {...} | -| ConditionalAccess.cs:11:9:11:10 | exit M5 (normal) | ConditionalAccess.cs:11:9:11:10 | exit M5 | +| ConditionalAccess.cs:1:7:1:23 | {...} | ConditionalAccess.cs:1:7:1:23 | Normal Exit | +| ConditionalAccess.cs:3:12:3:13 | Entry | ConditionalAccess.cs:3:20:3:20 | i | +| ConditionalAccess.cs:3:12:3:13 | Normal Exit | ConditionalAccess.cs:3:12:3:13 | Exit | +| ConditionalAccess.cs:3:20:3:20 | i | ConditionalAccess.cs:3:26:3:49 | Before call to method ToLower | +| ConditionalAccess.cs:3:26:3:26 | After access to parameter i [non-null] | ConditionalAccess.cs:3:26:3:38 | call to method ToString | +| ConditionalAccess.cs:3:26:3:26 | access to parameter i | ConditionalAccess.cs:3:26:3:26 | After access to parameter i [non-null] | +| ConditionalAccess.cs:3:26:3:26 | access to parameter i | ConditionalAccess.cs:3:26:3:26 | After access to parameter i [null] | +| ConditionalAccess.cs:3:26:3:38 | After call to method ToString [non-null] | ConditionalAccess.cs:3:26:3:49 | call to method ToLower | +| ConditionalAccess.cs:3:26:3:38 | Before call to method ToString | ConditionalAccess.cs:3:26:3:26 | access to parameter i | +| ConditionalAccess.cs:3:26:3:38 | call to method ToString | ConditionalAccess.cs:3:26:3:38 | After call to method ToString [non-null] | +| ConditionalAccess.cs:3:26:3:49 | After call to method ToLower | ConditionalAccess.cs:3:12:3:13 | Normal Exit | +| ConditionalAccess.cs:3:26:3:49 | Before call to method ToLower | ConditionalAccess.cs:3:26:3:38 | Before call to method ToString | +| ConditionalAccess.cs:5:10:5:11 | Entry | ConditionalAccess.cs:5:20:5:20 | s | +| ConditionalAccess.cs:5:10:5:11 | Normal Exit | ConditionalAccess.cs:5:10:5:11 | Exit | +| ConditionalAccess.cs:5:20:5:20 | s | ConditionalAccess.cs:5:26:5:34 | Before access to property Length | +| ConditionalAccess.cs:5:26:5:26 | After access to parameter s [non-null] | ConditionalAccess.cs:5:26:5:34 | access to property Length | +| ConditionalAccess.cs:5:26:5:26 | access to parameter s | ConditionalAccess.cs:5:26:5:26 | After access to parameter s [non-null] | +| ConditionalAccess.cs:5:26:5:26 | access to parameter s | ConditionalAccess.cs:5:26:5:26 | After access to parameter s [null] | +| ConditionalAccess.cs:5:26:5:34 | After access to property Length | ConditionalAccess.cs:5:10:5:11 | Normal Exit | +| ConditionalAccess.cs:5:26:5:34 | Before access to property Length | ConditionalAccess.cs:5:26:5:26 | access to parameter s | +| ConditionalAccess.cs:7:10:7:11 | Entry | ConditionalAccess.cs:7:20:7:21 | s1 | +| ConditionalAccess.cs:7:10:7:11 | Normal Exit | ConditionalAccess.cs:7:10:7:11 | Exit | +| ConditionalAccess.cs:7:20:7:21 | s1 | ConditionalAccess.cs:7:31:7:32 | s2 | +| ConditionalAccess.cs:7:31:7:32 | s2 | ConditionalAccess.cs:7:38:7:55 | Before access to property Length | +| ConditionalAccess.cs:7:38:7:55 | After access to property Length | ConditionalAccess.cs:7:10:7:11 | Normal Exit | +| ConditionalAccess.cs:7:38:7:55 | Before access to property Length | ConditionalAccess.cs:7:39:7:46 | ... ?? ... | +| ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [null] | ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | +| ConditionalAccess.cs:7:39:7:40 | access to parameter s1 | ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [non-null] | +| ConditionalAccess.cs:7:39:7:40 | access to parameter s1 | ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [null] | +| ConditionalAccess.cs:7:39:7:46 | ... ?? ... | ConditionalAccess.cs:7:39:7:40 | access to parameter s1 | +| ConditionalAccess.cs:7:39:7:46 | After ... ?? ... [non-null] | ConditionalAccess.cs:7:38:7:55 | access to property Length | +| ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [null] | ConditionalAccess.cs:7:39:7:46 | After ... ?? ... [null] | +| ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [non-null] | +| ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [null] | +| ConditionalAccess.cs:9:9:9:10 | Entry | ConditionalAccess.cs:9:19:9:19 | s | +| ConditionalAccess.cs:9:9:9:10 | Normal Exit | ConditionalAccess.cs:9:9:9:10 | Exit | +| ConditionalAccess.cs:9:19:9:19 | s | ConditionalAccess.cs:9:25:9:38 | ... ?? ... | +| ConditionalAccess.cs:9:25:9:25 | After access to parameter s [non-null] | ConditionalAccess.cs:9:25:9:33 | access to property Length | +| ConditionalAccess.cs:9:25:9:25 | access to parameter s | ConditionalAccess.cs:9:25:9:25 | After access to parameter s [non-null] | +| ConditionalAccess.cs:9:25:9:25 | access to parameter s | ConditionalAccess.cs:9:25:9:25 | After access to parameter s [null] | +| ConditionalAccess.cs:9:25:9:33 | After access to property Length [null] | ConditionalAccess.cs:9:38:9:38 | 0 | +| ConditionalAccess.cs:9:25:9:33 | Before access to property Length | ConditionalAccess.cs:9:25:9:25 | access to parameter s | +| ConditionalAccess.cs:9:25:9:33 | access to property Length | ConditionalAccess.cs:9:25:9:33 | After access to property Length [non-null] | +| ConditionalAccess.cs:9:25:9:38 | ... ?? ... | ConditionalAccess.cs:9:25:9:33 | Before access to property Length | +| ConditionalAccess.cs:9:25:9:38 | After ... ?? ... | ConditionalAccess.cs:9:9:9:10 | Normal Exit | +| ConditionalAccess.cs:11:9:11:10 | Entry | ConditionalAccess.cs:11:19:11:19 | s | +| ConditionalAccess.cs:11:9:11:10 | Normal Exit | ConditionalAccess.cs:11:9:11:10 | Exit | +| ConditionalAccess.cs:11:19:11:19 | s | ConditionalAccess.cs:12:5:17:5 | {...} | | ConditionalAccess.cs:12:5:17:5 | {...} | ConditionalAccess.cs:13:9:16:21 | if (...) ... | -| ConditionalAccess.cs:13:9:16:21 | if (...) ... | ConditionalAccess.cs:13:13:13:13 | access to parameter s | -| ConditionalAccess.cs:13:13:13:13 | access to parameter s | ConditionalAccess.cs:13:13:13:21 | access to property Length | -| ConditionalAccess.cs:13:13:13:13 | access to parameter s | ConditionalAccess.cs:13:25:13:25 | 0 | -| ConditionalAccess.cs:13:13:13:25 | ... > ... | ConditionalAccess.cs:14:20:14:20 | 0 | -| ConditionalAccess.cs:13:13:13:25 | ... > ... | ConditionalAccess.cs:16:20:16:20 | 1 | +| ConditionalAccess.cs:13:9:16:21 | if (...) ... | ConditionalAccess.cs:13:13:13:25 | Before ... > ... | +| ConditionalAccess.cs:13:13:13:13 | After access to parameter s [non-null] | ConditionalAccess.cs:13:13:13:21 | access to property Length | +| ConditionalAccess.cs:13:13:13:13 | access to parameter s | ConditionalAccess.cs:13:13:13:13 | After access to parameter s [non-null] | +| ConditionalAccess.cs:13:13:13:13 | access to parameter s | ConditionalAccess.cs:13:13:13:13 | After access to parameter s [null] | +| ConditionalAccess.cs:13:13:13:21 | After access to property Length | ConditionalAccess.cs:13:25:13:25 | Before (...) ... | +| ConditionalAccess.cs:13:13:13:21 | Before access to property Length | ConditionalAccess.cs:13:13:13:13 | access to parameter s | +| ConditionalAccess.cs:13:13:13:25 | ... > ... | ConditionalAccess.cs:13:13:13:25 | After ... > ... [false] | +| ConditionalAccess.cs:13:13:13:25 | ... > ... | ConditionalAccess.cs:13:13:13:25 | After ... > ... [true] | +| ConditionalAccess.cs:13:13:13:25 | After ... > ... [false] | ConditionalAccess.cs:16:13:16:21 | Before return ...; | +| ConditionalAccess.cs:13:13:13:25 | After ... > ... [true] | ConditionalAccess.cs:14:13:14:21 | Before return ...; | +| ConditionalAccess.cs:13:13:13:25 | Before ... > ... | ConditionalAccess.cs:13:13:13:21 | Before access to property Length | | ConditionalAccess.cs:13:25:13:25 | 0 | ConditionalAccess.cs:13:25:13:25 | (...) ... | -| ConditionalAccess.cs:13:25:13:25 | (...) ... | ConditionalAccess.cs:13:13:13:25 | ... > ... | +| ConditionalAccess.cs:13:25:13:25 | (...) ... | ConditionalAccess.cs:13:25:13:25 | After (...) ... | +| ConditionalAccess.cs:13:25:13:25 | After (...) ... | ConditionalAccess.cs:13:13:13:25 | ... > ... | +| ConditionalAccess.cs:13:25:13:25 | Before (...) ... | ConditionalAccess.cs:13:25:13:25 | 0 | +| ConditionalAccess.cs:14:13:14:21 | Before return ...; | ConditionalAccess.cs:14:20:14:20 | 0 | | ConditionalAccess.cs:14:20:14:20 | 0 | ConditionalAccess.cs:14:13:14:21 | return ...; | +| ConditionalAccess.cs:16:13:16:21 | Before return ...; | ConditionalAccess.cs:16:20:16:20 | 1 | | ConditionalAccess.cs:16:20:16:20 | 1 | ConditionalAccess.cs:16:13:16:21 | return ...; | -| ConditionalAccess.cs:19:12:19:13 | enter M6 | ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | -| ConditionalAccess.cs:19:12:19:13 | exit M6 (normal) | ConditionalAccess.cs:19:12:19:13 | exit M6 | -| ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | ConditionalAccess.cs:19:12:19:13 | exit M6 (normal) | -| ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | +| ConditionalAccess.cs:19:12:19:13 | Entry | ConditionalAccess.cs:19:22:19:23 | s1 | +| ConditionalAccess.cs:19:12:19:13 | Normal Exit | ConditionalAccess.cs:19:12:19:13 | Exit | +| ConditionalAccess.cs:19:22:19:23 | s1 | ConditionalAccess.cs:19:33:19:34 | s2 | +| ConditionalAccess.cs:19:33:19:34 | s2 | ConditionalAccess.cs:19:40:19:60 | Before call to method CommaJoinWith | +| ConditionalAccess.cs:19:40:19:41 | After access to parameter s1 [non-null] | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | +| ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | ConditionalAccess.cs:19:40:19:41 | After access to parameter s1 [non-null] | +| ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | ConditionalAccess.cs:19:40:19:41 | After access to parameter s1 [null] | +| ConditionalAccess.cs:19:40:19:60 | After call to method CommaJoinWith | ConditionalAccess.cs:19:12:19:13 | Normal Exit | +| ConditionalAccess.cs:19:40:19:60 | Before call to method CommaJoinWith | ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | ConditionalAccess.cs:19:40:19:60 | call to method CommaJoinWith | -| ConditionalAccess.cs:21:10:21:11 | enter M7 | ConditionalAccess.cs:22:5:26:5 | {...} | -| ConditionalAccess.cs:21:10:21:11 | exit M7 (normal) | ConditionalAccess.cs:21:10:21:11 | exit M7 | +| ConditionalAccess.cs:21:10:21:11 | Entry | ConditionalAccess.cs:21:17:21:17 | i | +| ConditionalAccess.cs:21:10:21:11 | Normal Exit | ConditionalAccess.cs:21:10:21:11 | Exit | +| ConditionalAccess.cs:21:17:21:17 | i | ConditionalAccess.cs:22:5:26:5 | {...} | +| ConditionalAccess.cs:22:5:26:5 | After {...} | ConditionalAccess.cs:21:10:21:11 | Normal Exit | | ConditionalAccess.cs:22:5:26:5 | {...} | ConditionalAccess.cs:23:9:23:39 | ... ...; | -| ConditionalAccess.cs:23:9:23:39 | ... ...; | ConditionalAccess.cs:23:26:23:29 | null | -| ConditionalAccess.cs:23:13:23:38 | Nullable j = ... | ConditionalAccess.cs:24:9:24:38 | ... ...; | -| ConditionalAccess.cs:23:18:23:29 | (...) ... | ConditionalAccess.cs:23:13:23:38 | Nullable j = ... | +| ConditionalAccess.cs:23:9:23:39 | ... ...; | ConditionalAccess.cs:23:13:23:38 | Before Nullable j = ... | +| ConditionalAccess.cs:23:9:23:39 | After ... ...; | ConditionalAccess.cs:24:9:24:38 | ... ...; | +| ConditionalAccess.cs:23:13:23:13 | access to local variable j | ConditionalAccess.cs:23:17:23:38 | Before access to property Length | +| ConditionalAccess.cs:23:13:23:38 | After Nullable j = ... | ConditionalAccess.cs:23:9:23:39 | After ... ...; | +| ConditionalAccess.cs:23:13:23:38 | Before Nullable j = ... | ConditionalAccess.cs:23:13:23:13 | access to local variable j | +| ConditionalAccess.cs:23:13:23:38 | Nullable j = ... | ConditionalAccess.cs:23:13:23:38 | After Nullable j = ... | +| ConditionalAccess.cs:23:17:23:38 | After access to property Length | ConditionalAccess.cs:23:13:23:38 | Nullable j = ... | +| ConditionalAccess.cs:23:17:23:38 | Before access to property Length | ConditionalAccess.cs:23:18:23:29 | Before (...) ... | +| ConditionalAccess.cs:23:18:23:29 | (...) ... | ConditionalAccess.cs:23:18:23:29 | After (...) ... [non-null] | +| ConditionalAccess.cs:23:18:23:29 | (...) ... | ConditionalAccess.cs:23:18:23:29 | After (...) ... [null] | +| ConditionalAccess.cs:23:18:23:29 | After (...) ... [non-null] | ConditionalAccess.cs:23:17:23:38 | access to property Length | +| ConditionalAccess.cs:23:18:23:29 | Before (...) ... | ConditionalAccess.cs:23:26:23:29 | null | | ConditionalAccess.cs:23:26:23:29 | null | ConditionalAccess.cs:23:18:23:29 | (...) ... | -| ConditionalAccess.cs:24:9:24:38 | ... ...; | ConditionalAccess.cs:24:24:24:24 | access to parameter i | -| ConditionalAccess.cs:24:13:24:37 | String s = ... | ConditionalAccess.cs:25:9:25:33 | ...; | -| ConditionalAccess.cs:24:17:24:37 | call to method ToString | ConditionalAccess.cs:24:13:24:37 | String s = ... | -| ConditionalAccess.cs:24:18:24:24 | (...) ... | ConditionalAccess.cs:24:17:24:37 | call to method ToString | +| ConditionalAccess.cs:24:9:24:38 | ... ...; | ConditionalAccess.cs:24:13:24:37 | Before String s = ... | +| ConditionalAccess.cs:24:9:24:38 | After ... ...; | ConditionalAccess.cs:25:9:25:33 | ...; | +| ConditionalAccess.cs:24:13:24:13 | access to local variable s | ConditionalAccess.cs:24:17:24:37 | Before call to method ToString | +| ConditionalAccess.cs:24:13:24:37 | After String s = ... | ConditionalAccess.cs:24:9:24:38 | After ... ...; | +| ConditionalAccess.cs:24:13:24:37 | Before String s = ... | ConditionalAccess.cs:24:13:24:13 | access to local variable s | +| ConditionalAccess.cs:24:13:24:37 | String s = ... | ConditionalAccess.cs:24:13:24:37 | After String s = ... | +| ConditionalAccess.cs:24:17:24:37 | After call to method ToString | ConditionalAccess.cs:24:13:24:37 | String s = ... | +| ConditionalAccess.cs:24:17:24:37 | Before call to method ToString | ConditionalAccess.cs:24:18:24:24 | Before (...) ... | +| ConditionalAccess.cs:24:18:24:24 | (...) ... | ConditionalAccess.cs:24:18:24:24 | After (...) ... [non-null] | +| ConditionalAccess.cs:24:18:24:24 | (...) ... | ConditionalAccess.cs:24:18:24:24 | After (...) ... [null] | +| ConditionalAccess.cs:24:18:24:24 | After (...) ... [non-null] | ConditionalAccess.cs:24:17:24:37 | call to method ToString | +| ConditionalAccess.cs:24:18:24:24 | Before (...) ... | ConditionalAccess.cs:24:24:24:24 | access to parameter i | | ConditionalAccess.cs:24:24:24:24 | access to parameter i | ConditionalAccess.cs:24:18:24:24 | (...) ... | -| ConditionalAccess.cs:25:9:25:32 | ... = ... | ConditionalAccess.cs:21:10:21:11 | exit M7 (normal) | -| ConditionalAccess.cs:25:9:25:33 | ...; | ConditionalAccess.cs:25:13:25:14 | "" | -| ConditionalAccess.cs:25:13:25:14 | "" | ConditionalAccess.cs:25:31:25:31 | access to local variable s | -| ConditionalAccess.cs:25:13:25:32 | call to method CommaJoinWith | ConditionalAccess.cs:25:9:25:32 | ... = ... | +| ConditionalAccess.cs:25:9:25:9 | access to local variable s | ConditionalAccess.cs:25:13:25:32 | Before call to method CommaJoinWith | +| ConditionalAccess.cs:25:9:25:32 | ... = ... | ConditionalAccess.cs:25:9:25:32 | After ... = ... | +| ConditionalAccess.cs:25:9:25:32 | After ... = ... | ConditionalAccess.cs:25:9:25:33 | After ...; | +| ConditionalAccess.cs:25:9:25:32 | Before ... = ... | ConditionalAccess.cs:25:9:25:9 | access to local variable s | +| ConditionalAccess.cs:25:9:25:33 | ...; | ConditionalAccess.cs:25:9:25:32 | Before ... = ... | +| ConditionalAccess.cs:25:9:25:33 | After ...; | ConditionalAccess.cs:22:5:26:5 | After {...} | +| ConditionalAccess.cs:25:13:25:14 | "" | ConditionalAccess.cs:25:13:25:14 | After "" [non-null] | +| ConditionalAccess.cs:25:13:25:14 | "" | ConditionalAccess.cs:25:13:25:14 | After "" [null] | +| ConditionalAccess.cs:25:13:25:14 | After "" [non-null] | ConditionalAccess.cs:25:31:25:31 | access to local variable s | +| ConditionalAccess.cs:25:13:25:32 | After call to method CommaJoinWith | ConditionalAccess.cs:25:9:25:32 | ... = ... | +| ConditionalAccess.cs:25:13:25:32 | Before call to method CommaJoinWith | ConditionalAccess.cs:25:13:25:14 | "" | | ConditionalAccess.cs:25:31:25:31 | access to local variable s | ConditionalAccess.cs:25:13:25:32 | call to method CommaJoinWith | -| ConditionalAccess.cs:30:10:30:12 | enter Out | ConditionalAccess.cs:30:32:30:32 | 0 | -| ConditionalAccess.cs:30:10:30:12 | exit Out (normal) | ConditionalAccess.cs:30:10:30:12 | exit Out | -| ConditionalAccess.cs:30:28:30:32 | ... = ... | ConditionalAccess.cs:30:10:30:12 | exit Out (normal) | +| ConditionalAccess.cs:30:10:30:12 | Entry | ConditionalAccess.cs:30:22:30:22 | i | +| ConditionalAccess.cs:30:10:30:12 | Normal Exit | ConditionalAccess.cs:30:10:30:12 | Exit | +| ConditionalAccess.cs:30:22:30:22 | i | ConditionalAccess.cs:30:28:30:32 | Before ... = ... | +| ConditionalAccess.cs:30:28:30:28 | access to parameter i | ConditionalAccess.cs:30:32:30:32 | 0 | +| ConditionalAccess.cs:30:28:30:32 | ... = ... | ConditionalAccess.cs:30:28:30:32 | After ... = ... | +| ConditionalAccess.cs:30:28:30:32 | After ... = ... | ConditionalAccess.cs:30:10:30:12 | Normal Exit | +| ConditionalAccess.cs:30:28:30:32 | Before ... = ... | ConditionalAccess.cs:30:28:30:28 | access to parameter i | | ConditionalAccess.cs:30:32:30:32 | 0 | ConditionalAccess.cs:30:28:30:32 | ... = ... | -| ConditionalAccess.cs:32:10:32:11 | enter M8 | ConditionalAccess.cs:33:5:36:5 | {...} | -| ConditionalAccess.cs:32:10:32:11 | exit M8 (normal) | ConditionalAccess.cs:32:10:32:11 | exit M8 | +| ConditionalAccess.cs:32:10:32:11 | Entry | ConditionalAccess.cs:32:18:32:18 | b | +| ConditionalAccess.cs:32:10:32:11 | Normal Exit | ConditionalAccess.cs:32:10:32:11 | Exit | +| ConditionalAccess.cs:32:18:32:18 | b | ConditionalAccess.cs:32:29:32:29 | i | +| ConditionalAccess.cs:32:29:32:29 | i | ConditionalAccess.cs:33:5:36:5 | {...} | +| ConditionalAccess.cs:33:5:36:5 | After {...} | ConditionalAccess.cs:32:10:32:11 | Normal Exit | | ConditionalAccess.cs:33:5:36:5 | {...} | ConditionalAccess.cs:34:9:34:14 | ...; | -| ConditionalAccess.cs:34:9:34:13 | ... = ... | ConditionalAccess.cs:35:9:35:25 | ...; | -| ConditionalAccess.cs:34:9:34:14 | ...; | ConditionalAccess.cs:34:13:34:13 | 0 | +| ConditionalAccess.cs:34:9:34:9 | access to parameter i | ConditionalAccess.cs:34:13:34:13 | 0 | +| ConditionalAccess.cs:34:9:34:13 | ... = ... | ConditionalAccess.cs:34:9:34:13 | After ... = ... | +| ConditionalAccess.cs:34:9:34:13 | After ... = ... | ConditionalAccess.cs:34:9:34:14 | After ...; | +| ConditionalAccess.cs:34:9:34:13 | Before ... = ... | ConditionalAccess.cs:34:9:34:9 | access to parameter i | +| ConditionalAccess.cs:34:9:34:14 | ...; | ConditionalAccess.cs:34:9:34:13 | Before ... = ... | +| ConditionalAccess.cs:34:9:34:14 | After ...; | ConditionalAccess.cs:35:9:35:25 | ...; | | ConditionalAccess.cs:34:13:34:13 | 0 | ConditionalAccess.cs:34:9:34:13 | ... = ... | -| ConditionalAccess.cs:35:9:35:12 | access to property Prop | ConditionalAccess.cs:32:10:32:11 | exit M8 (normal) | -| ConditionalAccess.cs:35:9:35:12 | access to property Prop | ConditionalAccess.cs:35:9:35:24 | call to method Out | +| ConditionalAccess.cs:35:9:35:12 | After access to property Prop [non-null] | ConditionalAccess.cs:35:23:35:23 | access to parameter i | +| ConditionalAccess.cs:35:9:35:12 | Before access to property Prop | ConditionalAccess.cs:35:9:35:12 | this access | +| ConditionalAccess.cs:35:9:35:12 | access to property Prop | ConditionalAccess.cs:35:9:35:12 | After access to property Prop [non-null] | +| ConditionalAccess.cs:35:9:35:12 | access to property Prop | ConditionalAccess.cs:35:9:35:12 | After access to property Prop [null] | | ConditionalAccess.cs:35:9:35:12 | this access | ConditionalAccess.cs:35:9:35:12 | access to property Prop | -| ConditionalAccess.cs:35:9:35:25 | ...; | ConditionalAccess.cs:35:9:35:12 | this access | -| ConditionalAccess.cs:42:9:42:11 | enter get_Item | ConditionalAccess.cs:42:13:42:28 | {...} | -| ConditionalAccess.cs:42:9:42:11 | exit get_Item (normal) | ConditionalAccess.cs:42:9:42:11 | exit get_Item | -| ConditionalAccess.cs:42:13:42:28 | {...} | ConditionalAccess.cs:42:22:42:25 | null | -| ConditionalAccess.cs:42:15:42:26 | return ...; | ConditionalAccess.cs:42:9:42:11 | exit get_Item (normal) | +| ConditionalAccess.cs:35:9:35:24 | After call to method Out | ConditionalAccess.cs:35:9:35:25 | After ...; | +| ConditionalAccess.cs:35:9:35:24 | Before call to method Out | ConditionalAccess.cs:35:9:35:12 | Before access to property Prop | +| ConditionalAccess.cs:35:9:35:25 | ...; | ConditionalAccess.cs:35:9:35:24 | Before call to method Out | +| ConditionalAccess.cs:35:9:35:25 | After ...; | ConditionalAccess.cs:33:5:36:5 | After {...} | +| ConditionalAccess.cs:35:23:35:23 | access to parameter i | ConditionalAccess.cs:35:9:35:24 | call to method Out | +| ConditionalAccess.cs:40:21:40:25 | index | ConditionalAccess.cs:42:13:42:28 | {...} | +| ConditionalAccess.cs:40:21:40:25 | index | ConditionalAccess.cs:43:9:43:11 | value | +| ConditionalAccess.cs:42:9:42:11 | Entry | ConditionalAccess.cs:40:21:40:25 | index | +| ConditionalAccess.cs:42:9:42:11 | Normal Exit | ConditionalAccess.cs:42:9:42:11 | Exit | +| ConditionalAccess.cs:42:13:42:28 | {...} | ConditionalAccess.cs:42:15:42:26 | Before return ...; | +| ConditionalAccess.cs:42:15:42:26 | Before return ...; | ConditionalAccess.cs:42:22:42:25 | null | +| ConditionalAccess.cs:42:15:42:26 | return ...; | ConditionalAccess.cs:42:9:42:11 | Normal Exit | | ConditionalAccess.cs:42:22:42:25 | null | ConditionalAccess.cs:42:15:42:26 | return ...; | -| ConditionalAccess.cs:43:9:43:11 | enter set_Item | ConditionalAccess.cs:43:13:43:15 | {...} | -| ConditionalAccess.cs:43:9:43:11 | exit set_Item (normal) | ConditionalAccess.cs:43:9:43:11 | exit set_Item | -| ConditionalAccess.cs:43:13:43:15 | {...} | ConditionalAccess.cs:43:9:43:11 | exit set_Item (normal) | -| ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:47:5:55:5 | {...} | -| ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | ConditionalAccess.cs:46:10:46:11 | exit M9 | +| ConditionalAccess.cs:43:9:43:11 | Entry | ConditionalAccess.cs:40:21:40:25 | index | +| ConditionalAccess.cs:43:9:43:11 | Normal Exit | ConditionalAccess.cs:43:9:43:11 | Exit | +| ConditionalAccess.cs:43:9:43:11 | value | ConditionalAccess.cs:43:13:43:15 | {...} | +| ConditionalAccess.cs:43:13:43:15 | {...} | ConditionalAccess.cs:43:9:43:11 | Normal Exit | +| ConditionalAccess.cs:46:10:46:11 | Entry | ConditionalAccess.cs:46:31:46:32 | ca | +| ConditionalAccess.cs:46:10:46:11 | Normal Exit | ConditionalAccess.cs:46:10:46:11 | Exit | +| ConditionalAccess.cs:46:31:46:32 | ca | ConditionalAccess.cs:47:5:55:5 | {...} | +| ConditionalAccess.cs:47:5:55:5 | After {...} | ConditionalAccess.cs:46:10:46:11 | Normal Exit | | ConditionalAccess.cs:47:5:55:5 | {...} | ConditionalAccess.cs:48:9:48:26 | ...; | -| ConditionalAccess.cs:48:9:48:10 | access to parameter ca | ConditionalAccess.cs:48:24:48:25 | 42 | -| ConditionalAccess.cs:48:9:48:10 | access to parameter ca | ConditionalAccess.cs:49:9:49:33 | ...; | -| ConditionalAccess.cs:48:9:48:20 | access to field IntField | ConditionalAccess.cs:48:12:48:25 | ... = ... | -| ConditionalAccess.cs:48:9:48:26 | ...; | ConditionalAccess.cs:48:9:48:10 | access to parameter ca | -| ConditionalAccess.cs:48:24:48:25 | 42 | ConditionalAccess.cs:48:9:48:20 | access to field IntField | -| ConditionalAccess.cs:49:9:49:10 | access to parameter ca | ConditionalAccess.cs:49:26:49:32 | "Hello" | -| ConditionalAccess.cs:49:9:49:10 | access to parameter ca | ConditionalAccess.cs:50:9:50:24 | ...; | -| ConditionalAccess.cs:49:9:49:22 | access to property StringProp | ConditionalAccess.cs:49:12:49:32 | ... = ... | -| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:49:9:49:10 | access to parameter ca | -| ConditionalAccess.cs:49:26:49:32 | "Hello" | ConditionalAccess.cs:49:9:49:22 | access to property StringProp | -| ConditionalAccess.cs:50:9:50:10 | access to parameter ca | ConditionalAccess.cs:50:13:50:13 | 0 | -| ConditionalAccess.cs:50:9:50:10 | access to parameter ca | ConditionalAccess.cs:51:9:51:32 | ...; | -| ConditionalAccess.cs:50:9:50:14 | access to indexer | ConditionalAccess.cs:50:12:50:23 | ... = ... | -| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:50:9:50:10 | access to parameter ca | -| ConditionalAccess.cs:50:13:50:13 | 0 | ConditionalAccess.cs:50:18:50:23 | "Set0" | -| ConditionalAccess.cs:50:18:50:23 | "Set0" | ConditionalAccess.cs:50:9:50:14 | access to indexer | -| ConditionalAccess.cs:51:9:51:10 | access to parameter ca | ConditionalAccess.cs:51:9:51:16 | access to property Prop | -| ConditionalAccess.cs:51:9:51:10 | access to parameter ca | ConditionalAccess.cs:52:9:52:39 | ...; | -| ConditionalAccess.cs:51:9:51:16 | access to property Prop | ConditionalAccess.cs:51:30:51:31 | 84 | -| ConditionalAccess.cs:51:9:51:26 | access to field IntField | ConditionalAccess.cs:51:18:51:31 | ... = ... | -| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:51:9:51:10 | access to parameter ca | -| ConditionalAccess.cs:51:30:51:31 | 84 | ConditionalAccess.cs:51:9:51:26 | access to field IntField | -| ConditionalAccess.cs:52:9:52:10 | access to parameter ca | ConditionalAccess.cs:52:9:52:16 | access to property Prop | -| ConditionalAccess.cs:52:9:52:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:26 | ...; | -| ConditionalAccess.cs:52:9:52:16 | access to property Prop | ConditionalAccess.cs:52:32:52:38 | "World" | -| ConditionalAccess.cs:52:9:52:28 | access to property StringProp | ConditionalAccess.cs:52:18:52:38 | ... = ... | -| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:52:9:52:10 | access to parameter ca | -| ConditionalAccess.cs:52:32:52:38 | "World" | ConditionalAccess.cs:52:9:52:28 | access to property StringProp | -| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:20 | access to field IntField | -| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:25:53:25 | 1 | -| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | -| ConditionalAccess.cs:53:12:53:25 | ... -= ... | ConditionalAccess.cs:54:9:54:30 | ...; | +| ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:48:9:48:20 | access to field IntField | +| ConditionalAccess.cs:48:9:48:10 | access to parameter ca | ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:48:9:48:10 | access to parameter ca | ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:48:9:48:20 | After access to field IntField | ConditionalAccess.cs:48:24:48:25 | 42 | +| ConditionalAccess.cs:48:9:48:20 | Before access to field IntField | ConditionalAccess.cs:48:9:48:10 | access to parameter ca | +| ConditionalAccess.cs:48:9:48:20 | access to field IntField | ConditionalAccess.cs:48:9:48:20 | After access to field IntField | +| ConditionalAccess.cs:48:9:48:26 | ...; | ConditionalAccess.cs:48:12:48:25 | Before ... = ... | +| ConditionalAccess.cs:48:9:48:26 | After ...; | ConditionalAccess.cs:49:9:49:33 | ...; | +| ConditionalAccess.cs:48:12:48:25 | After ... = ... | ConditionalAccess.cs:48:9:48:26 | After ...; | +| ConditionalAccess.cs:48:12:48:25 | Before ... = ... | ConditionalAccess.cs:48:9:48:20 | Before access to field IntField | +| ConditionalAccess.cs:48:24:48:25 | 42 | ConditionalAccess.cs:48:12:48:25 | ... = ... | +| ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:49:9:49:22 | access to property StringProp | +| ConditionalAccess.cs:49:9:49:10 | access to parameter ca | ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:49:9:49:10 | access to parameter ca | ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:49:9:49:22 | After access to property StringProp | ConditionalAccess.cs:49:26:49:32 | "Hello" | +| ConditionalAccess.cs:49:9:49:22 | Before access to property StringProp | ConditionalAccess.cs:49:9:49:10 | access to parameter ca | +| ConditionalAccess.cs:49:9:49:22 | access to property StringProp | ConditionalAccess.cs:49:9:49:22 | After access to property StringProp | +| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:49:12:49:32 | Before ... = ... | +| ConditionalAccess.cs:49:9:49:33 | After ...; | ConditionalAccess.cs:50:9:50:24 | ...; | +| ConditionalAccess.cs:49:12:49:32 | After ... = ... | ConditionalAccess.cs:49:9:49:33 | After ...; | +| ConditionalAccess.cs:49:12:49:32 | Before ... = ... | ConditionalAccess.cs:49:9:49:22 | Before access to property StringProp | +| ConditionalAccess.cs:49:26:49:32 | "Hello" | ConditionalAccess.cs:49:12:49:32 | ... = ... | +| ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:50:13:50:13 | 0 | +| ConditionalAccess.cs:50:9:50:10 | access to parameter ca | ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:50:9:50:10 | access to parameter ca | ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:50:9:50:14 | After access to indexer | ConditionalAccess.cs:50:18:50:23 | "Set0" | +| ConditionalAccess.cs:50:9:50:14 | Before access to indexer | ConditionalAccess.cs:50:9:50:10 | access to parameter ca | +| ConditionalAccess.cs:50:9:50:14 | access to indexer | ConditionalAccess.cs:50:9:50:14 | After access to indexer | +| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:50:12:50:23 | Before ... = ... | +| ConditionalAccess.cs:50:9:50:24 | After ...; | ConditionalAccess.cs:51:9:51:32 | ...; | +| ConditionalAccess.cs:50:12:50:23 | After ... = ... | ConditionalAccess.cs:50:9:50:24 | After ...; | +| ConditionalAccess.cs:50:12:50:23 | Before ... = ... | ConditionalAccess.cs:50:9:50:14 | Before access to indexer | +| ConditionalAccess.cs:50:13:50:13 | 0 | ConditionalAccess.cs:50:9:50:14 | access to indexer | +| ConditionalAccess.cs:50:18:50:23 | "Set0" | ConditionalAccess.cs:50:12:50:23 | ... = ... | +| ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:51:9:51:16 | access to property Prop | +| ConditionalAccess.cs:51:9:51:10 | access to parameter ca | ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:51:9:51:10 | access to parameter ca | ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:51:9:51:16 | After access to property Prop [non-null] | ConditionalAccess.cs:51:9:51:26 | access to field IntField | +| ConditionalAccess.cs:51:9:51:16 | Before access to property Prop | ConditionalAccess.cs:51:9:51:10 | access to parameter ca | +| ConditionalAccess.cs:51:9:51:16 | access to property Prop | ConditionalAccess.cs:51:9:51:16 | After access to property Prop [non-null] | +| ConditionalAccess.cs:51:9:51:26 | After access to field IntField | ConditionalAccess.cs:51:30:51:31 | 84 | +| ConditionalAccess.cs:51:9:51:26 | Before access to field IntField | ConditionalAccess.cs:51:9:51:16 | Before access to property Prop | +| ConditionalAccess.cs:51:9:51:26 | access to field IntField | ConditionalAccess.cs:51:9:51:26 | After access to field IntField | +| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:51:18:51:31 | Before ... = ... | +| ConditionalAccess.cs:51:9:51:32 | After ...; | ConditionalAccess.cs:52:9:52:39 | ...; | +| ConditionalAccess.cs:51:18:51:31 | After ... = ... | ConditionalAccess.cs:51:9:51:32 | After ...; | +| ConditionalAccess.cs:51:18:51:31 | Before ... = ... | ConditionalAccess.cs:51:9:51:26 | Before access to field IntField | +| ConditionalAccess.cs:51:30:51:31 | 84 | ConditionalAccess.cs:51:18:51:31 | ... = ... | +| ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:52:9:52:16 | access to property Prop | +| ConditionalAccess.cs:52:9:52:10 | access to parameter ca | ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:52:9:52:10 | access to parameter ca | ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:52:9:52:16 | After access to property Prop [non-null] | ConditionalAccess.cs:52:9:52:28 | access to property StringProp | +| ConditionalAccess.cs:52:9:52:16 | Before access to property Prop | ConditionalAccess.cs:52:9:52:10 | access to parameter ca | +| ConditionalAccess.cs:52:9:52:16 | access to property Prop | ConditionalAccess.cs:52:9:52:16 | After access to property Prop [non-null] | +| ConditionalAccess.cs:52:9:52:28 | After access to property StringProp | ConditionalAccess.cs:52:32:52:38 | "World" | +| ConditionalAccess.cs:52:9:52:28 | Before access to property StringProp | ConditionalAccess.cs:52:9:52:16 | Before access to property Prop | +| ConditionalAccess.cs:52:9:52:28 | access to property StringProp | ConditionalAccess.cs:52:9:52:28 | After access to property StringProp | +| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:52:18:52:38 | Before ... = ... | +| ConditionalAccess.cs:52:9:52:39 | After ...; | ConditionalAccess.cs:53:9:53:26 | ...; | +| ConditionalAccess.cs:52:18:52:38 | After ... = ... | ConditionalAccess.cs:52:9:52:39 | After ...; | +| ConditionalAccess.cs:52:18:52:38 | Before ... = ... | ConditionalAccess.cs:52:9:52:28 | Before access to property StringProp | +| ConditionalAccess.cs:52:32:52:38 | "World" | ConditionalAccess.cs:52:18:52:38 | ... = ... | +| ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:53:9:53:20 | access to field IntField | +| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:53:9:53:20 | After access to field IntField | ConditionalAccess.cs:53:25:53:25 | 1 | +| ConditionalAccess.cs:53:9:53:20 | Before access to field IntField | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | +| ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:53:9:53:20 | After access to field IntField | +| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:53:12:53:25 | Before ... -= ... | +| ConditionalAccess.cs:53:9:53:26 | After ...; | ConditionalAccess.cs:54:9:54:30 | ...; | +| ConditionalAccess.cs:53:12:53:25 | After ... -= ... | ConditionalAccess.cs:53:9:53:26 | After ...; | +| ConditionalAccess.cs:53:12:53:25 | Before ... -= ... | ConditionalAccess.cs:53:9:53:20 | Before access to field IntField | | ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:53:12:53:25 | ... -= ... | -| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | -| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:27:54:29 | "!" | -| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | -| ConditionalAccess.cs:54:12:54:29 | ... += ... | ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | +| ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | +| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:54:9:54:22 | After access to property StringProp | ConditionalAccess.cs:54:27:54:29 | "!" | +| ConditionalAccess.cs:54:9:54:22 | Before access to property StringProp | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | +| ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:54:9:54:22 | After access to property StringProp | +| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:54:12:54:29 | Before ... += ... | +| ConditionalAccess.cs:54:9:54:30 | After ...; | ConditionalAccess.cs:47:5:55:5 | After {...} | +| ConditionalAccess.cs:54:12:54:29 | After ... += ... | ConditionalAccess.cs:54:9:54:30 | After ...; | +| ConditionalAccess.cs:54:12:54:29 | Before ... += ... | ConditionalAccess.cs:54:9:54:22 | Before access to property StringProp | | ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:54:12:54:29 | ... += ... | -| ConditionalAccess.cs:60:26:60:38 | enter CommaJoinWith | ConditionalAccess.cs:60:70:60:71 | access to parameter s1 | -| ConditionalAccess.cs:60:26:60:38 | exit CommaJoinWith (normal) | ConditionalAccess.cs:60:26:60:38 | exit CommaJoinWith | +| ConditionalAccess.cs:60:26:60:38 | Entry | ConditionalAccess.cs:60:52:60:53 | s1 | +| ConditionalAccess.cs:60:26:60:38 | Normal Exit | ConditionalAccess.cs:60:26:60:38 | Exit | +| ConditionalAccess.cs:60:52:60:53 | s1 | ConditionalAccess.cs:60:63:60:64 | s2 | +| ConditionalAccess.cs:60:63:60:64 | s2 | ConditionalAccess.cs:60:70:60:83 | Before ... + ... | | ConditionalAccess.cs:60:70:60:71 | access to parameter s1 | ConditionalAccess.cs:60:75:60:78 | ", " | -| ConditionalAccess.cs:60:70:60:78 | ... + ... | ConditionalAccess.cs:60:82:60:83 | access to parameter s2 | -| ConditionalAccess.cs:60:70:60:83 | ... + ... | ConditionalAccess.cs:60:26:60:38 | exit CommaJoinWith (normal) | +| ConditionalAccess.cs:60:70:60:78 | ... + ... | ConditionalAccess.cs:60:70:60:78 | After ... + ... | +| ConditionalAccess.cs:60:70:60:78 | After ... + ... | ConditionalAccess.cs:60:82:60:83 | access to parameter s2 | +| ConditionalAccess.cs:60:70:60:78 | Before ... + ... | ConditionalAccess.cs:60:70:60:71 | access to parameter s1 | +| ConditionalAccess.cs:60:70:60:83 | ... + ... | ConditionalAccess.cs:60:70:60:83 | After ... + ... | +| ConditionalAccess.cs:60:70:60:83 | After ... + ... | ConditionalAccess.cs:60:26:60:38 | Normal Exit | +| ConditionalAccess.cs:60:70:60:83 | Before ... + ... | ConditionalAccess.cs:60:70:60:78 | Before ... + ... | | ConditionalAccess.cs:60:75:60:78 | ", " | ConditionalAccess.cs:60:70:60:78 | ... + ... | | ConditionalAccess.cs:60:82:60:83 | access to parameter s2 | ConditionalAccess.cs:60:70:60:83 | ... + ... | -| Conditions.cs:1:7:1:16 | call to constructor Object | Conditions.cs:1:7:1:16 | {...} | -| Conditions.cs:1:7:1:16 | call to method | Conditions.cs:1:7:1:16 | call to constructor Object | -| Conditions.cs:1:7:1:16 | enter Conditions | Conditions.cs:1:7:1:16 | this access | -| Conditions.cs:1:7:1:16 | exit Conditions (normal) | Conditions.cs:1:7:1:16 | exit Conditions | +| Conditions.cs:1:7:1:16 | After call to constructor Object | Conditions.cs:1:7:1:16 | {...} | +| Conditions.cs:1:7:1:16 | After call to method | Conditions.cs:1:7:1:16 | Before call to constructor Object | +| Conditions.cs:1:7:1:16 | Before call to constructor Object | Conditions.cs:1:7:1:16 | call to constructor Object | +| Conditions.cs:1:7:1:16 | Before call to method | Conditions.cs:1:7:1:16 | this access | +| Conditions.cs:1:7:1:16 | Entry | Conditions.cs:1:7:1:16 | Before call to method | +| Conditions.cs:1:7:1:16 | Normal Exit | Conditions.cs:1:7:1:16 | Exit | +| Conditions.cs:1:7:1:16 | call to constructor Object | Conditions.cs:1:7:1:16 | After call to constructor Object | +| Conditions.cs:1:7:1:16 | call to method | Conditions.cs:1:7:1:16 | After call to method | | Conditions.cs:1:7:1:16 | this access | Conditions.cs:1:7:1:16 | call to method | -| Conditions.cs:1:7:1:16 | {...} | Conditions.cs:1:7:1:16 | exit Conditions (normal) | -| Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:4:5:9:5 | {...} | -| Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | Conditions.cs:3:10:3:19 | exit IncrOrDecr | +| Conditions.cs:1:7:1:16 | {...} | Conditions.cs:1:7:1:16 | Normal Exit | +| Conditions.cs:3:10:3:19 | Entry | Conditions.cs:3:26:3:28 | inc | +| Conditions.cs:3:10:3:19 | Normal Exit | Conditions.cs:3:10:3:19 | Exit | +| Conditions.cs:3:26:3:28 | inc | Conditions.cs:3:39:3:39 | x | +| Conditions.cs:3:39:3:39 | x | Conditions.cs:4:5:9:5 | {...} | +| Conditions.cs:4:5:9:5 | After {...} | Conditions.cs:3:10:3:19 | Normal Exit | | Conditions.cs:4:5:9:5 | {...} | Conditions.cs:5:9:6:16 | if (...) ... | +| Conditions.cs:5:9:6:16 | After if (...) ... | Conditions.cs:7:9:8:16 | if (...) ... | | Conditions.cs:5:9:6:16 | if (...) ... | Conditions.cs:5:13:5:15 | access to parameter inc | -| Conditions.cs:5:13:5:15 | access to parameter inc | Conditions.cs:6:13:6:16 | ...; | -| Conditions.cs:5:13:5:15 | access to parameter inc | Conditions.cs:7:9:8:16 | if (...) ... | +| Conditions.cs:5:13:5:15 | After access to parameter inc [true] | Conditions.cs:6:13:6:16 | ...; | +| Conditions.cs:5:13:5:15 | access to parameter inc | Conditions.cs:5:13:5:15 | After access to parameter inc [false] | +| Conditions.cs:5:13:5:15 | access to parameter inc | Conditions.cs:5:13:5:15 | After access to parameter inc [true] | | Conditions.cs:6:13:6:13 | access to parameter x | Conditions.cs:6:13:6:15 | ...++ | -| Conditions.cs:6:13:6:16 | ...; | Conditions.cs:6:13:6:13 | access to parameter x | -| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:7:14:7:16 | access to parameter inc | -| Conditions.cs:7:13:7:16 | [true] !... | Conditions.cs:8:13:8:16 | ...; | -| Conditions.cs:7:14:7:16 | access to parameter inc | Conditions.cs:7:13:7:16 | [false] !... | -| Conditions.cs:7:14:7:16 | access to parameter inc | Conditions.cs:7:13:7:16 | [true] !... | +| Conditions.cs:6:13:6:15 | ...++ | Conditions.cs:6:13:6:15 | After ...++ | +| Conditions.cs:6:13:6:15 | After ...++ | Conditions.cs:6:13:6:16 | After ...; | +| Conditions.cs:6:13:6:15 | Before ...++ | Conditions.cs:6:13:6:13 | access to parameter x | +| Conditions.cs:6:13:6:16 | ...; | Conditions.cs:6:13:6:15 | Before ...++ | +| Conditions.cs:7:9:8:16 | After if (...) ... | Conditions.cs:4:5:9:5 | After {...} | +| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:7:13:7:16 | !... | +| Conditions.cs:7:13:7:16 | !... | Conditions.cs:7:14:7:16 | access to parameter inc | +| Conditions.cs:7:13:7:16 | After !... [true] | Conditions.cs:8:13:8:16 | ...; | +| Conditions.cs:7:14:7:16 | After access to parameter inc [false] | Conditions.cs:7:13:7:16 | After !... [true] | +| Conditions.cs:7:14:7:16 | After access to parameter inc [true] | Conditions.cs:7:13:7:16 | After !... [false] | +| Conditions.cs:7:14:7:16 | access to parameter inc | Conditions.cs:7:14:7:16 | After access to parameter inc [false] | +| Conditions.cs:7:14:7:16 | access to parameter inc | Conditions.cs:7:14:7:16 | After access to parameter inc [true] | | Conditions.cs:8:13:8:13 | access to parameter x | Conditions.cs:8:13:8:15 | ...-- | -| Conditions.cs:8:13:8:16 | ...; | Conditions.cs:8:13:8:13 | access to parameter x | -| Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:12:5:20:5 | {...} | -| Conditions.cs:11:9:11:10 | exit M1 (normal) | Conditions.cs:11:9:11:10 | exit M1 | +| Conditions.cs:8:13:8:15 | ...-- | Conditions.cs:8:13:8:15 | After ...-- | +| Conditions.cs:8:13:8:15 | After ...-- | Conditions.cs:8:13:8:16 | After ...; | +| Conditions.cs:8:13:8:15 | Before ...-- | Conditions.cs:8:13:8:13 | access to parameter x | +| Conditions.cs:8:13:8:16 | ...; | Conditions.cs:8:13:8:15 | Before ...-- | +| Conditions.cs:11:9:11:10 | Entry | Conditions.cs:11:17:11:17 | b | +| Conditions.cs:11:9:11:10 | Normal Exit | Conditions.cs:11:9:11:10 | Exit | +| Conditions.cs:11:17:11:17 | b | Conditions.cs:12:5:20:5 | {...} | | Conditions.cs:12:5:20:5 | {...} | Conditions.cs:13:9:13:18 | ... ...; | -| Conditions.cs:13:9:13:18 | ... ...; | Conditions.cs:13:17:13:17 | 0 | -| Conditions.cs:13:13:13:17 | Int32 x = ... | Conditions.cs:14:9:15:16 | if (...) ... | +| Conditions.cs:13:9:13:18 | ... ...; | Conditions.cs:13:13:13:17 | Before Int32 x = ... | +| Conditions.cs:13:9:13:18 | After ... ...; | Conditions.cs:14:9:15:16 | if (...) ... | +| Conditions.cs:13:13:13:13 | access to local variable x | Conditions.cs:13:17:13:17 | 0 | +| Conditions.cs:13:13:13:17 | After Int32 x = ... | Conditions.cs:13:9:13:18 | After ... ...; | +| Conditions.cs:13:13:13:17 | Before Int32 x = ... | Conditions.cs:13:13:13:13 | access to local variable x | +| Conditions.cs:13:13:13:17 | Int32 x = ... | Conditions.cs:13:13:13:17 | After Int32 x = ... | | Conditions.cs:13:17:13:17 | 0 | Conditions.cs:13:13:13:17 | Int32 x = ... | +| Conditions.cs:14:9:15:16 | After if (...) ... | Conditions.cs:16:9:18:20 | if (...) ... | | Conditions.cs:14:9:15:16 | if (...) ... | Conditions.cs:14:13:14:13 | access to parameter b | -| Conditions.cs:14:13:14:13 | access to parameter b | Conditions.cs:15:13:15:16 | ...; | -| Conditions.cs:14:13:14:13 | access to parameter b | Conditions.cs:16:9:18:20 | if (...) ... | +| Conditions.cs:14:13:14:13 | After access to parameter b [true] | Conditions.cs:15:13:15:16 | ...; | +| Conditions.cs:14:13:14:13 | access to parameter b | Conditions.cs:14:13:14:13 | After access to parameter b [false] | +| Conditions.cs:14:13:14:13 | access to parameter b | Conditions.cs:14:13:14:13 | After access to parameter b [true] | | Conditions.cs:15:13:15:13 | access to local variable x | Conditions.cs:15:13:15:15 | ...++ | -| Conditions.cs:15:13:15:16 | ...; | Conditions.cs:15:13:15:13 | access to local variable x | -| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:16:13:16:13 | access to local variable x | +| Conditions.cs:15:13:15:15 | ...++ | Conditions.cs:15:13:15:15 | After ...++ | +| Conditions.cs:15:13:15:15 | After ...++ | Conditions.cs:15:13:15:16 | After ...; | +| Conditions.cs:15:13:15:15 | Before ...++ | Conditions.cs:15:13:15:13 | access to local variable x | +| Conditions.cs:15:13:15:16 | ...; | Conditions.cs:15:13:15:15 | Before ...++ | +| Conditions.cs:16:9:18:20 | After if (...) ... | Conditions.cs:19:9:19:17 | Before return ...; | +| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:16:13:16:17 | Before ... > ... | | Conditions.cs:16:13:16:13 | access to local variable x | Conditions.cs:16:17:16:17 | 0 | -| Conditions.cs:16:13:16:17 | ... > ... | Conditions.cs:17:13:18:20 | if (...) ... | -| Conditions.cs:16:13:16:17 | ... > ... | Conditions.cs:19:16:19:16 | access to local variable x | +| Conditions.cs:16:13:16:17 | ... > ... | Conditions.cs:16:13:16:17 | After ... > ... [false] | +| Conditions.cs:16:13:16:17 | ... > ... | Conditions.cs:16:13:16:17 | After ... > ... [true] | +| Conditions.cs:16:13:16:17 | After ... > ... [true] | Conditions.cs:17:13:18:20 | if (...) ... | +| Conditions.cs:16:13:16:17 | Before ... > ... | Conditions.cs:16:13:16:13 | access to local variable x | | Conditions.cs:16:17:16:17 | 0 | Conditions.cs:16:13:16:17 | ... > ... | -| Conditions.cs:17:13:18:20 | if (...) ... | Conditions.cs:17:18:17:18 | access to parameter b | -| Conditions.cs:17:17:17:18 | [true] !... | Conditions.cs:18:17:18:20 | ...; | -| Conditions.cs:17:18:17:18 | access to parameter b | Conditions.cs:17:17:17:18 | [false] !... | -| Conditions.cs:17:18:17:18 | access to parameter b | Conditions.cs:17:17:17:18 | [true] !... | +| Conditions.cs:17:13:18:20 | if (...) ... | Conditions.cs:17:17:17:18 | !... | +| Conditions.cs:17:17:17:18 | !... | Conditions.cs:17:18:17:18 | access to parameter b | +| Conditions.cs:17:17:17:18 | After !... [true] | Conditions.cs:18:17:18:20 | ...; | +| Conditions.cs:17:18:17:18 | After access to parameter b [false] | Conditions.cs:17:17:17:18 | After !... [true] | +| Conditions.cs:17:18:17:18 | After access to parameter b [true] | Conditions.cs:17:17:17:18 | After !... [false] | +| Conditions.cs:17:18:17:18 | access to parameter b | Conditions.cs:17:18:17:18 | After access to parameter b [false] | +| Conditions.cs:17:18:17:18 | access to parameter b | Conditions.cs:17:18:17:18 | After access to parameter b [true] | | Conditions.cs:18:17:18:17 | access to local variable x | Conditions.cs:18:17:18:19 | ...-- | -| Conditions.cs:18:17:18:20 | ...; | Conditions.cs:18:17:18:17 | access to local variable x | -| Conditions.cs:19:9:19:17 | return ...; | Conditions.cs:11:9:11:10 | exit M1 (normal) | +| Conditions.cs:18:17:18:19 | ...-- | Conditions.cs:18:17:18:19 | After ...-- | +| Conditions.cs:18:17:18:19 | After ...-- | Conditions.cs:18:17:18:20 | After ...; | +| Conditions.cs:18:17:18:19 | Before ...-- | Conditions.cs:18:17:18:17 | access to local variable x | +| Conditions.cs:18:17:18:20 | ...; | Conditions.cs:18:17:18:19 | Before ...-- | +| Conditions.cs:19:9:19:17 | Before return ...; | Conditions.cs:19:16:19:16 | access to local variable x | +| Conditions.cs:19:9:19:17 | return ...; | Conditions.cs:11:9:11:10 | Normal Exit | | Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:19:9:19:17 | return ...; | -| Conditions.cs:22:9:22:10 | enter M2 | Conditions.cs:23:5:31:5 | {...} | -| Conditions.cs:22:9:22:10 | exit M2 (normal) | Conditions.cs:22:9:22:10 | exit M2 | +| Conditions.cs:22:9:22:10 | Entry | Conditions.cs:22:17:22:18 | b1 | +| Conditions.cs:22:9:22:10 | Normal Exit | Conditions.cs:22:9:22:10 | Exit | +| Conditions.cs:22:17:22:18 | b1 | Conditions.cs:22:26:22:27 | b2 | +| Conditions.cs:22:26:22:27 | b2 | Conditions.cs:23:5:31:5 | {...} | | Conditions.cs:23:5:31:5 | {...} | Conditions.cs:24:9:24:18 | ... ...; | -| Conditions.cs:24:9:24:18 | ... ...; | Conditions.cs:24:17:24:17 | 0 | -| Conditions.cs:24:13:24:17 | Int32 x = ... | Conditions.cs:25:9:27:20 | if (...) ... | +| Conditions.cs:24:9:24:18 | ... ...; | Conditions.cs:24:13:24:17 | Before Int32 x = ... | +| Conditions.cs:24:9:24:18 | After ... ...; | Conditions.cs:25:9:27:20 | if (...) ... | +| Conditions.cs:24:13:24:13 | access to local variable x | Conditions.cs:24:17:24:17 | 0 | +| Conditions.cs:24:13:24:17 | After Int32 x = ... | Conditions.cs:24:9:24:18 | After ... ...; | +| Conditions.cs:24:13:24:17 | Before Int32 x = ... | Conditions.cs:24:13:24:13 | access to local variable x | +| Conditions.cs:24:13:24:17 | Int32 x = ... | Conditions.cs:24:13:24:17 | After Int32 x = ... | | Conditions.cs:24:17:24:17 | 0 | Conditions.cs:24:13:24:17 | Int32 x = ... | +| Conditions.cs:25:9:27:20 | After if (...) ... | Conditions.cs:28:9:29:16 | if (...) ... | | Conditions.cs:25:9:27:20 | if (...) ... | Conditions.cs:25:13:25:14 | access to parameter b1 | -| Conditions.cs:25:13:25:14 | access to parameter b1 | Conditions.cs:26:13:27:20 | if (...) ... | -| Conditions.cs:25:13:25:14 | access to parameter b1 | Conditions.cs:28:9:29:16 | if (...) ... | +| Conditions.cs:25:13:25:14 | After access to parameter b1 [true] | Conditions.cs:26:13:27:20 | if (...) ... | +| Conditions.cs:25:13:25:14 | access to parameter b1 | Conditions.cs:25:13:25:14 | After access to parameter b1 [false] | +| Conditions.cs:25:13:25:14 | access to parameter b1 | Conditions.cs:25:13:25:14 | After access to parameter b1 [true] | | Conditions.cs:26:13:27:20 | if (...) ... | Conditions.cs:26:17:26:18 | access to parameter b2 | -| Conditions.cs:26:17:26:18 | access to parameter b2 | Conditions.cs:27:17:27:20 | ...; | +| Conditions.cs:26:17:26:18 | After access to parameter b2 [true] | Conditions.cs:27:17:27:20 | ...; | +| Conditions.cs:26:17:26:18 | access to parameter b2 | Conditions.cs:26:17:26:18 | After access to parameter b2 [false] | +| Conditions.cs:26:17:26:18 | access to parameter b2 | Conditions.cs:26:17:26:18 | After access to parameter b2 [true] | | Conditions.cs:27:17:27:17 | access to local variable x | Conditions.cs:27:17:27:19 | ...++ | -| Conditions.cs:27:17:27:20 | ...; | Conditions.cs:27:17:27:17 | access to local variable x | +| Conditions.cs:27:17:27:19 | ...++ | Conditions.cs:27:17:27:19 | After ...++ | +| Conditions.cs:27:17:27:19 | After ...++ | Conditions.cs:27:17:27:20 | After ...; | +| Conditions.cs:27:17:27:19 | Before ...++ | Conditions.cs:27:17:27:17 | access to local variable x | +| Conditions.cs:27:17:27:20 | ...; | Conditions.cs:27:17:27:19 | Before ...++ | +| Conditions.cs:28:9:29:16 | After if (...) ... | Conditions.cs:30:9:30:17 | Before return ...; | | Conditions.cs:28:9:29:16 | if (...) ... | Conditions.cs:28:13:28:14 | access to parameter b2 | -| Conditions.cs:28:13:28:14 | access to parameter b2 | Conditions.cs:29:13:29:16 | ...; | -| Conditions.cs:28:13:28:14 | access to parameter b2 | Conditions.cs:30:16:30:16 | access to local variable x | +| Conditions.cs:28:13:28:14 | After access to parameter b2 [true] | Conditions.cs:29:13:29:16 | ...; | +| Conditions.cs:28:13:28:14 | access to parameter b2 | Conditions.cs:28:13:28:14 | After access to parameter b2 [false] | +| Conditions.cs:28:13:28:14 | access to parameter b2 | Conditions.cs:28:13:28:14 | After access to parameter b2 [true] | | Conditions.cs:29:13:29:13 | access to local variable x | Conditions.cs:29:13:29:15 | ...++ | -| Conditions.cs:29:13:29:16 | ...; | Conditions.cs:29:13:29:13 | access to local variable x | -| Conditions.cs:30:9:30:17 | return ...; | Conditions.cs:22:9:22:10 | exit M2 (normal) | +| Conditions.cs:29:13:29:15 | ...++ | Conditions.cs:29:13:29:15 | After ...++ | +| Conditions.cs:29:13:29:15 | After ...++ | Conditions.cs:29:13:29:16 | After ...; | +| Conditions.cs:29:13:29:15 | Before ...++ | Conditions.cs:29:13:29:13 | access to local variable x | +| Conditions.cs:29:13:29:16 | ...; | Conditions.cs:29:13:29:15 | Before ...++ | +| Conditions.cs:30:9:30:17 | Before return ...; | Conditions.cs:30:16:30:16 | access to local variable x | +| Conditions.cs:30:9:30:17 | return ...; | Conditions.cs:22:9:22:10 | Normal Exit | | Conditions.cs:30:16:30:16 | access to local variable x | Conditions.cs:30:9:30:17 | return ...; | -| Conditions.cs:33:9:33:10 | enter M3 | Conditions.cs:34:5:44:5 | {...} | -| Conditions.cs:33:9:33:10 | exit M3 (normal) | Conditions.cs:33:9:33:10 | exit M3 | +| Conditions.cs:33:9:33:10 | Entry | Conditions.cs:33:17:33:18 | b1 | +| Conditions.cs:33:9:33:10 | Normal Exit | Conditions.cs:33:9:33:10 | Exit | +| Conditions.cs:33:17:33:18 | b1 | Conditions.cs:34:5:44:5 | {...} | | Conditions.cs:34:5:44:5 | {...} | Conditions.cs:35:9:35:18 | ... ...; | -| Conditions.cs:35:9:35:18 | ... ...; | Conditions.cs:35:17:35:17 | 0 | -| Conditions.cs:35:13:35:17 | Int32 x = ... | Conditions.cs:36:9:36:23 | ... ...; | +| Conditions.cs:35:9:35:18 | ... ...; | Conditions.cs:35:13:35:17 | Before Int32 x = ... | +| Conditions.cs:35:9:35:18 | After ... ...; | Conditions.cs:36:9:36:23 | ... ...; | +| Conditions.cs:35:13:35:13 | access to local variable x | Conditions.cs:35:17:35:17 | 0 | +| Conditions.cs:35:13:35:17 | After Int32 x = ... | Conditions.cs:35:9:35:18 | After ... ...; | +| Conditions.cs:35:13:35:17 | Before Int32 x = ... | Conditions.cs:35:13:35:13 | access to local variable x | +| Conditions.cs:35:13:35:17 | Int32 x = ... | Conditions.cs:35:13:35:17 | After Int32 x = ... | | Conditions.cs:35:17:35:17 | 0 | Conditions.cs:35:13:35:17 | Int32 x = ... | -| Conditions.cs:36:9:36:23 | ... ...; | Conditions.cs:36:18:36:22 | false | -| Conditions.cs:36:13:36:22 | Boolean b2 = ... | Conditions.cs:37:9:38:20 | if (...) ... | +| Conditions.cs:36:9:36:23 | ... ...; | Conditions.cs:36:13:36:22 | Before Boolean b2 = ... | +| Conditions.cs:36:9:36:23 | After ... ...; | Conditions.cs:37:9:38:20 | if (...) ... | +| Conditions.cs:36:13:36:14 | access to local variable b2 | Conditions.cs:36:18:36:22 | false | +| Conditions.cs:36:13:36:22 | After Boolean b2 = ... | Conditions.cs:36:9:36:23 | After ... ...; | +| Conditions.cs:36:13:36:22 | Before Boolean b2 = ... | Conditions.cs:36:13:36:14 | access to local variable b2 | +| Conditions.cs:36:13:36:22 | Boolean b2 = ... | Conditions.cs:36:13:36:22 | After Boolean b2 = ... | | Conditions.cs:36:18:36:22 | false | Conditions.cs:36:13:36:22 | Boolean b2 = ... | +| Conditions.cs:37:9:38:20 | After if (...) ... | Conditions.cs:39:9:40:16 | if (...) ... | | Conditions.cs:37:9:38:20 | if (...) ... | Conditions.cs:37:13:37:14 | access to parameter b1 | -| Conditions.cs:37:13:37:14 | access to parameter b1 | Conditions.cs:38:13:38:20 | ...; | -| Conditions.cs:37:13:37:14 | access to parameter b1 | Conditions.cs:39:9:40:16 | if (...) ... | -| Conditions.cs:38:13:38:20 | ...; | Conditions.cs:38:18:38:19 | access to parameter b1 | +| Conditions.cs:37:13:37:14 | After access to parameter b1 [true] | Conditions.cs:38:13:38:20 | ...; | +| Conditions.cs:37:13:37:14 | access to parameter b1 | Conditions.cs:37:13:37:14 | After access to parameter b1 [false] | +| Conditions.cs:37:13:37:14 | access to parameter b1 | Conditions.cs:37:13:37:14 | After access to parameter b1 [true] | +| Conditions.cs:38:13:38:14 | access to local variable b2 | Conditions.cs:38:18:38:19 | access to parameter b1 | +| Conditions.cs:38:13:38:19 | ... = ... | Conditions.cs:38:13:38:19 | After ... = ... | +| Conditions.cs:38:13:38:19 | After ... = ... | Conditions.cs:38:13:38:20 | After ...; | +| Conditions.cs:38:13:38:19 | Before ... = ... | Conditions.cs:38:13:38:14 | access to local variable b2 | +| Conditions.cs:38:13:38:20 | ...; | Conditions.cs:38:13:38:19 | Before ... = ... | | Conditions.cs:38:18:38:19 | access to parameter b1 | Conditions.cs:38:13:38:19 | ... = ... | +| Conditions.cs:39:9:40:16 | After if (...) ... | Conditions.cs:41:9:42:16 | if (...) ... | | Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:39:13:39:14 | access to local variable b2 | -| Conditions.cs:39:13:39:14 | access to local variable b2 | Conditions.cs:40:13:40:16 | ...; | -| Conditions.cs:39:13:39:14 | access to local variable b2 | Conditions.cs:41:9:42:16 | if (...) ... | +| Conditions.cs:39:13:39:14 | After access to local variable b2 [true] | Conditions.cs:40:13:40:16 | ...; | +| Conditions.cs:39:13:39:14 | access to local variable b2 | Conditions.cs:39:13:39:14 | After access to local variable b2 [false] | +| Conditions.cs:39:13:39:14 | access to local variable b2 | Conditions.cs:39:13:39:14 | After access to local variable b2 [true] | | Conditions.cs:40:13:40:13 | access to local variable x | Conditions.cs:40:13:40:15 | ...++ | -| Conditions.cs:40:13:40:16 | ...; | Conditions.cs:40:13:40:13 | access to local variable x | +| Conditions.cs:40:13:40:15 | ...++ | Conditions.cs:40:13:40:15 | After ...++ | +| Conditions.cs:40:13:40:15 | After ...++ | Conditions.cs:40:13:40:16 | After ...; | +| Conditions.cs:40:13:40:15 | Before ...++ | Conditions.cs:40:13:40:13 | access to local variable x | +| Conditions.cs:40:13:40:16 | ...; | Conditions.cs:40:13:40:15 | Before ...++ | +| Conditions.cs:41:9:42:16 | After if (...) ... | Conditions.cs:43:9:43:17 | Before return ...; | | Conditions.cs:41:9:42:16 | if (...) ... | Conditions.cs:41:13:41:14 | access to local variable b2 | -| Conditions.cs:41:13:41:14 | access to local variable b2 | Conditions.cs:42:13:42:16 | ...; | -| Conditions.cs:41:13:41:14 | access to local variable b2 | Conditions.cs:43:16:43:16 | access to local variable x | +| Conditions.cs:41:13:41:14 | After access to local variable b2 [true] | Conditions.cs:42:13:42:16 | ...; | +| Conditions.cs:41:13:41:14 | access to local variable b2 | Conditions.cs:41:13:41:14 | After access to local variable b2 [false] | +| Conditions.cs:41:13:41:14 | access to local variable b2 | Conditions.cs:41:13:41:14 | After access to local variable b2 [true] | | Conditions.cs:42:13:42:13 | access to local variable x | Conditions.cs:42:13:42:15 | ...++ | -| Conditions.cs:42:13:42:16 | ...; | Conditions.cs:42:13:42:13 | access to local variable x | -| Conditions.cs:43:9:43:17 | return ...; | Conditions.cs:33:9:33:10 | exit M3 (normal) | +| Conditions.cs:42:13:42:15 | ...++ | Conditions.cs:42:13:42:15 | After ...++ | +| Conditions.cs:42:13:42:15 | After ...++ | Conditions.cs:42:13:42:16 | After ...; | +| Conditions.cs:42:13:42:15 | Before ...++ | Conditions.cs:42:13:42:13 | access to local variable x | +| Conditions.cs:42:13:42:16 | ...; | Conditions.cs:42:13:42:15 | Before ...++ | +| Conditions.cs:43:9:43:17 | Before return ...; | Conditions.cs:43:16:43:16 | access to local variable x | +| Conditions.cs:43:9:43:17 | return ...; | Conditions.cs:33:9:33:10 | Normal Exit | | Conditions.cs:43:16:43:16 | access to local variable x | Conditions.cs:43:9:43:17 | return ...; | -| Conditions.cs:46:9:46:10 | enter M4 | Conditions.cs:47:5:55:5 | {...} | -| Conditions.cs:46:9:46:10 | exit M4 (normal) | Conditions.cs:46:9:46:10 | exit M4 | +| Conditions.cs:46:9:46:10 | Entry | Conditions.cs:46:17:46:17 | b | +| Conditions.cs:46:9:46:10 | Normal Exit | Conditions.cs:46:9:46:10 | Exit | +| Conditions.cs:46:17:46:17 | b | Conditions.cs:46:24:46:24 | x | +| Conditions.cs:46:24:46:24 | x | Conditions.cs:47:5:55:5 | {...} | | Conditions.cs:47:5:55:5 | {...} | Conditions.cs:48:9:48:18 | ... ...; | -| Conditions.cs:48:9:48:18 | ... ...; | Conditions.cs:48:17:48:17 | 0 | -| Conditions.cs:48:13:48:17 | Int32 y = ... | Conditions.cs:49:9:53:9 | while (...) ... | +| Conditions.cs:48:9:48:18 | ... ...; | Conditions.cs:48:13:48:17 | Before Int32 y = ... | +| Conditions.cs:48:9:48:18 | After ... ...; | Conditions.cs:49:9:53:9 | while (...) ... | +| Conditions.cs:48:13:48:13 | access to local variable y | Conditions.cs:48:17:48:17 | 0 | +| Conditions.cs:48:13:48:17 | After Int32 y = ... | Conditions.cs:48:9:48:18 | After ... ...; | +| Conditions.cs:48:13:48:17 | Before Int32 y = ... | Conditions.cs:48:13:48:13 | access to local variable y | +| Conditions.cs:48:13:48:17 | Int32 y = ... | Conditions.cs:48:13:48:17 | After Int32 y = ... | | Conditions.cs:48:17:48:17 | 0 | Conditions.cs:48:13:48:17 | Int32 y = ... | -| Conditions.cs:49:9:53:9 | while (...) ... | Conditions.cs:49:16:49:16 | access to parameter x | +| Conditions.cs:49:9:53:9 | After while (...) ... | Conditions.cs:54:9:54:17 | Before return ...; | +| Conditions.cs:49:9:53:9 | [LoopHeader] while (...) ... | Conditions.cs:49:16:49:22 | Before ... > ... | +| Conditions.cs:49:9:53:9 | while (...) ... | Conditions.cs:49:9:53:9 | [LoopHeader] while (...) ... | | Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:49:16:49:18 | ...-- | -| Conditions.cs:49:16:49:18 | ...-- | Conditions.cs:49:22:49:22 | 0 | -| Conditions.cs:49:16:49:22 | ... > ... | Conditions.cs:50:9:53:9 | {...} | -| Conditions.cs:49:16:49:22 | ... > ... | Conditions.cs:54:16:54:16 | access to local variable y | +| Conditions.cs:49:16:49:18 | ...-- | Conditions.cs:49:16:49:18 | After ...-- | +| Conditions.cs:49:16:49:18 | After ...-- | Conditions.cs:49:22:49:22 | 0 | +| Conditions.cs:49:16:49:18 | Before ...-- | Conditions.cs:49:16:49:16 | access to parameter x | +| Conditions.cs:49:16:49:22 | ... > ... | Conditions.cs:49:16:49:22 | After ... > ... [false] | +| Conditions.cs:49:16:49:22 | ... > ... | Conditions.cs:49:16:49:22 | After ... > ... [true] | +| Conditions.cs:49:16:49:22 | After ... > ... [false] | Conditions.cs:49:9:53:9 | After while (...) ... | +| Conditions.cs:49:16:49:22 | After ... > ... [true] | Conditions.cs:50:9:53:9 | {...} | +| Conditions.cs:49:16:49:22 | Before ... > ... | Conditions.cs:49:16:49:18 | Before ...-- | | Conditions.cs:49:22:49:22 | 0 | Conditions.cs:49:16:49:22 | ... > ... | | Conditions.cs:50:9:53:9 | {...} | Conditions.cs:51:13:52:20 | if (...) ... | +| Conditions.cs:51:13:52:20 | After if (...) ... | Conditions.cs:50:9:53:9 | After {...} | | Conditions.cs:51:13:52:20 | if (...) ... | Conditions.cs:51:17:51:17 | access to parameter b | -| Conditions.cs:51:17:51:17 | access to parameter b | Conditions.cs:52:17:52:20 | ...; | +| Conditions.cs:51:17:51:17 | After access to parameter b [true] | Conditions.cs:52:17:52:20 | ...; | +| Conditions.cs:51:17:51:17 | access to parameter b | Conditions.cs:51:17:51:17 | After access to parameter b [false] | +| Conditions.cs:51:17:51:17 | access to parameter b | Conditions.cs:51:17:51:17 | After access to parameter b [true] | | Conditions.cs:52:17:52:17 | access to local variable y | Conditions.cs:52:17:52:19 | ...++ | -| Conditions.cs:52:17:52:20 | ...; | Conditions.cs:52:17:52:17 | access to local variable y | -| Conditions.cs:54:9:54:17 | return ...; | Conditions.cs:46:9:46:10 | exit M4 (normal) | +| Conditions.cs:52:17:52:19 | ...++ | Conditions.cs:52:17:52:19 | After ...++ | +| Conditions.cs:52:17:52:19 | After ...++ | Conditions.cs:52:17:52:20 | After ...; | +| Conditions.cs:52:17:52:19 | Before ...++ | Conditions.cs:52:17:52:17 | access to local variable y | +| Conditions.cs:52:17:52:20 | ...; | Conditions.cs:52:17:52:19 | Before ...++ | +| Conditions.cs:54:9:54:17 | Before return ...; | Conditions.cs:54:16:54:16 | access to local variable y | +| Conditions.cs:54:9:54:17 | return ...; | Conditions.cs:46:9:46:10 | Normal Exit | | Conditions.cs:54:16:54:16 | access to local variable y | Conditions.cs:54:9:54:17 | return ...; | -| Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:58:5:68:5 | {...} | -| Conditions.cs:57:9:57:10 | exit M5 (normal) | Conditions.cs:57:9:57:10 | exit M5 | +| Conditions.cs:57:9:57:10 | Entry | Conditions.cs:57:17:57:17 | b | +| Conditions.cs:57:9:57:10 | Normal Exit | Conditions.cs:57:9:57:10 | Exit | +| Conditions.cs:57:17:57:17 | b | Conditions.cs:57:24:57:24 | x | +| Conditions.cs:57:24:57:24 | x | Conditions.cs:58:5:68:5 | {...} | | Conditions.cs:58:5:68:5 | {...} | Conditions.cs:59:9:59:18 | ... ...; | -| Conditions.cs:59:9:59:18 | ... ...; | Conditions.cs:59:17:59:17 | 0 | -| Conditions.cs:59:13:59:17 | Int32 y = ... | Conditions.cs:60:9:64:9 | while (...) ... | +| Conditions.cs:59:9:59:18 | ... ...; | Conditions.cs:59:13:59:17 | Before Int32 y = ... | +| Conditions.cs:59:9:59:18 | After ... ...; | Conditions.cs:60:9:64:9 | while (...) ... | +| Conditions.cs:59:13:59:13 | access to local variable y | Conditions.cs:59:17:59:17 | 0 | +| Conditions.cs:59:13:59:17 | After Int32 y = ... | Conditions.cs:59:9:59:18 | After ... ...; | +| Conditions.cs:59:13:59:17 | Before Int32 y = ... | Conditions.cs:59:13:59:13 | access to local variable y | +| Conditions.cs:59:13:59:17 | Int32 y = ... | Conditions.cs:59:13:59:17 | After Int32 y = ... | | Conditions.cs:59:17:59:17 | 0 | Conditions.cs:59:13:59:17 | Int32 y = ... | -| Conditions.cs:60:9:64:9 | while (...) ... | Conditions.cs:60:16:60:16 | access to parameter x | +| Conditions.cs:60:9:64:9 | After while (...) ... | Conditions.cs:65:9:66:16 | if (...) ... | +| Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | Conditions.cs:60:16:60:22 | Before ... > ... | +| Conditions.cs:60:9:64:9 | while (...) ... | Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | | Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:60:16:60:18 | ...-- | -| Conditions.cs:60:16:60:18 | ...-- | Conditions.cs:60:22:60:22 | 0 | -| Conditions.cs:60:16:60:22 | ... > ... | Conditions.cs:61:9:64:9 | {...} | -| Conditions.cs:60:16:60:22 | ... > ... | Conditions.cs:65:9:66:16 | if (...) ... | +| Conditions.cs:60:16:60:18 | ...-- | Conditions.cs:60:16:60:18 | After ...-- | +| Conditions.cs:60:16:60:18 | After ...-- | Conditions.cs:60:22:60:22 | 0 | +| Conditions.cs:60:16:60:18 | Before ...-- | Conditions.cs:60:16:60:16 | access to parameter x | +| Conditions.cs:60:16:60:22 | ... > ... | Conditions.cs:60:16:60:22 | After ... > ... [false] | +| Conditions.cs:60:16:60:22 | ... > ... | Conditions.cs:60:16:60:22 | After ... > ... [true] | +| Conditions.cs:60:16:60:22 | After ... > ... [false] | Conditions.cs:60:9:64:9 | After while (...) ... | +| Conditions.cs:60:16:60:22 | After ... > ... [true] | Conditions.cs:61:9:64:9 | {...} | +| Conditions.cs:60:16:60:22 | Before ... > ... | Conditions.cs:60:16:60:18 | Before ...-- | | Conditions.cs:60:22:60:22 | 0 | Conditions.cs:60:16:60:22 | ... > ... | | Conditions.cs:61:9:64:9 | {...} | Conditions.cs:62:13:63:20 | if (...) ... | +| Conditions.cs:62:13:63:20 | After if (...) ... | Conditions.cs:61:9:64:9 | After {...} | | Conditions.cs:62:13:63:20 | if (...) ... | Conditions.cs:62:17:62:17 | access to parameter b | -| Conditions.cs:62:17:62:17 | access to parameter b | Conditions.cs:63:17:63:20 | ...; | +| Conditions.cs:62:17:62:17 | After access to parameter b [true] | Conditions.cs:63:17:63:20 | ...; | +| Conditions.cs:62:17:62:17 | access to parameter b | Conditions.cs:62:17:62:17 | After access to parameter b [false] | +| Conditions.cs:62:17:62:17 | access to parameter b | Conditions.cs:62:17:62:17 | After access to parameter b [true] | | Conditions.cs:63:17:63:17 | access to local variable y | Conditions.cs:63:17:63:19 | ...++ | -| Conditions.cs:63:17:63:20 | ...; | Conditions.cs:63:17:63:17 | access to local variable y | +| Conditions.cs:63:17:63:19 | ...++ | Conditions.cs:63:17:63:19 | After ...++ | +| Conditions.cs:63:17:63:19 | After ...++ | Conditions.cs:63:17:63:20 | After ...; | +| Conditions.cs:63:17:63:19 | Before ...++ | Conditions.cs:63:17:63:17 | access to local variable y | +| Conditions.cs:63:17:63:20 | ...; | Conditions.cs:63:17:63:19 | Before ...++ | +| Conditions.cs:65:9:66:16 | After if (...) ... | Conditions.cs:67:9:67:17 | Before return ...; | | Conditions.cs:65:9:66:16 | if (...) ... | Conditions.cs:65:13:65:13 | access to parameter b | -| Conditions.cs:65:13:65:13 | access to parameter b | Conditions.cs:66:13:66:16 | ...; | -| Conditions.cs:65:13:65:13 | access to parameter b | Conditions.cs:67:16:67:16 | access to local variable y | +| Conditions.cs:65:13:65:13 | After access to parameter b [true] | Conditions.cs:66:13:66:16 | ...; | +| Conditions.cs:65:13:65:13 | access to parameter b | Conditions.cs:65:13:65:13 | After access to parameter b [false] | +| Conditions.cs:65:13:65:13 | access to parameter b | Conditions.cs:65:13:65:13 | After access to parameter b [true] | | Conditions.cs:66:13:66:13 | access to local variable y | Conditions.cs:66:13:66:15 | ...++ | -| Conditions.cs:66:13:66:16 | ...; | Conditions.cs:66:13:66:13 | access to local variable y | -| Conditions.cs:67:9:67:17 | return ...; | Conditions.cs:57:9:57:10 | exit M5 (normal) | +| Conditions.cs:66:13:66:15 | ...++ | Conditions.cs:66:13:66:15 | After ...++ | +| Conditions.cs:66:13:66:15 | After ...++ | Conditions.cs:66:13:66:16 | After ...; | +| Conditions.cs:66:13:66:15 | Before ...++ | Conditions.cs:66:13:66:13 | access to local variable y | +| Conditions.cs:66:13:66:16 | ...; | Conditions.cs:66:13:66:15 | Before ...++ | +| Conditions.cs:67:9:67:17 | Before return ...; | Conditions.cs:67:16:67:16 | access to local variable y | +| Conditions.cs:67:9:67:17 | return ...; | Conditions.cs:57:9:57:10 | Normal Exit | | Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:67:9:67:17 | return ...; | -| Conditions.cs:70:9:70:10 | enter M6 | Conditions.cs:71:5:84:5 | {...} | -| Conditions.cs:70:9:70:10 | exit M6 (normal) | Conditions.cs:70:9:70:10 | exit M6 | +| Conditions.cs:70:9:70:10 | Entry | Conditions.cs:70:21:70:22 | ss | +| Conditions.cs:70:9:70:10 | Normal Exit | Conditions.cs:70:9:70:10 | Exit | +| Conditions.cs:70:21:70:22 | ss | Conditions.cs:71:5:84:5 | {...} | | Conditions.cs:71:5:84:5 | {...} | Conditions.cs:72:9:72:30 | ... ...; | -| Conditions.cs:72:9:72:30 | ... ...; | Conditions.cs:72:17:72:18 | access to parameter ss | -| Conditions.cs:72:13:72:29 | Boolean b = ... | Conditions.cs:73:9:73:18 | ... ...; | +| Conditions.cs:72:9:72:30 | ... ...; | Conditions.cs:72:13:72:29 | Before Boolean b = ... | +| Conditions.cs:72:9:72:30 | After ... ...; | Conditions.cs:73:9:73:18 | ... ...; | +| Conditions.cs:72:13:72:13 | access to local variable b | Conditions.cs:72:17:72:29 | Before ... > ... | +| Conditions.cs:72:13:72:29 | After Boolean b = ... | Conditions.cs:72:9:72:30 | After ... ...; | +| Conditions.cs:72:13:72:29 | Before Boolean b = ... | Conditions.cs:72:13:72:13 | access to local variable b | +| Conditions.cs:72:13:72:29 | Boolean b = ... | Conditions.cs:72:13:72:29 | After Boolean b = ... | | Conditions.cs:72:17:72:18 | access to parameter ss | Conditions.cs:72:17:72:25 | access to property Length | -| Conditions.cs:72:17:72:25 | access to property Length | Conditions.cs:72:29:72:29 | 0 | -| Conditions.cs:72:17:72:29 | ... > ... | Conditions.cs:72:13:72:29 | Boolean b = ... | +| Conditions.cs:72:17:72:25 | After access to property Length | Conditions.cs:72:29:72:29 | 0 | +| Conditions.cs:72:17:72:25 | Before access to property Length | Conditions.cs:72:17:72:18 | access to parameter ss | +| Conditions.cs:72:17:72:25 | access to property Length | Conditions.cs:72:17:72:25 | After access to property Length | +| Conditions.cs:72:17:72:29 | ... > ... | Conditions.cs:72:17:72:29 | After ... > ... | +| Conditions.cs:72:17:72:29 | After ... > ... | Conditions.cs:72:13:72:29 | Boolean b = ... | +| Conditions.cs:72:17:72:29 | Before ... > ... | Conditions.cs:72:17:72:25 | Before access to property Length | | Conditions.cs:72:29:72:29 | 0 | Conditions.cs:72:17:72:29 | ... > ... | -| Conditions.cs:73:9:73:18 | ... ...; | Conditions.cs:73:17:73:17 | 0 | -| Conditions.cs:73:13:73:17 | Int32 x = ... | Conditions.cs:74:27:74:28 | access to parameter ss | +| Conditions.cs:73:9:73:18 | ... ...; | Conditions.cs:73:13:73:17 | Before Int32 x = ... | +| Conditions.cs:73:9:73:18 | After ... ...; | Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | +| Conditions.cs:73:13:73:13 | access to local variable x | Conditions.cs:73:17:73:17 | 0 | +| Conditions.cs:73:13:73:17 | After Int32 x = ... | Conditions.cs:73:9:73:18 | After ... ...; | +| Conditions.cs:73:13:73:17 | Before Int32 x = ... | Conditions.cs:73:13:73:13 | access to local variable x | +| Conditions.cs:73:13:73:17 | Int32 x = ... | Conditions.cs:73:13:73:17 | After Int32 x = ... | | Conditions.cs:73:17:73:17 | 0 | Conditions.cs:73:13:73:17 | Int32 x = ... | -| Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:74:22:74:22 | String _ | -| Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:81:9:82:16 | if (...) ... | +| Conditions.cs:74:9:80:9 | After foreach (... ... in ...) ... | Conditions.cs:81:9:82:16 | if (...) ... | +| Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:74:27:74:28 | access to parameter ss | | Conditions.cs:74:22:74:22 | String _ | Conditions.cs:75:9:80:9 | {...} | -| Conditions.cs:74:27:74:28 | access to parameter ss | Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | +| Conditions.cs:74:27:74:28 | After access to parameter ss [non-empty] | Conditions.cs:74:22:74:22 | String _ | +| Conditions.cs:74:27:74:28 | access to parameter ss | Conditions.cs:74:27:74:28 | After access to parameter ss [empty] | +| Conditions.cs:74:27:74:28 | access to parameter ss | Conditions.cs:74:27:74:28 | After access to parameter ss [non-empty] | +| Conditions.cs:75:9:80:9 | After {...} | Conditions.cs:74:9:80:9 | [LoopHeader] foreach (... ... in ...) ... | | Conditions.cs:75:9:80:9 | {...} | Conditions.cs:76:13:77:20 | if (...) ... | +| Conditions.cs:76:13:77:20 | After if (...) ... | Conditions.cs:78:13:79:26 | if (...) ... | | Conditions.cs:76:13:77:20 | if (...) ... | Conditions.cs:76:17:76:17 | access to local variable b | -| Conditions.cs:76:17:76:17 | access to local variable b | Conditions.cs:77:17:77:20 | ...; | -| Conditions.cs:76:17:76:17 | access to local variable b | Conditions.cs:78:13:79:26 | if (...) ... | +| Conditions.cs:76:17:76:17 | After access to local variable b [true] | Conditions.cs:77:17:77:20 | ...; | +| Conditions.cs:76:17:76:17 | access to local variable b | Conditions.cs:76:17:76:17 | After access to local variable b [false] | +| Conditions.cs:76:17:76:17 | access to local variable b | Conditions.cs:76:17:76:17 | After access to local variable b [true] | | Conditions.cs:77:17:77:17 | access to local variable x | Conditions.cs:77:17:77:19 | ...++ | -| Conditions.cs:77:17:77:20 | ...; | Conditions.cs:77:17:77:17 | access to local variable x | -| Conditions.cs:78:13:79:26 | if (...) ... | Conditions.cs:78:17:78:17 | access to local variable x | +| Conditions.cs:77:17:77:19 | ...++ | Conditions.cs:77:17:77:19 | After ...++ | +| Conditions.cs:77:17:77:19 | After ...++ | Conditions.cs:77:17:77:20 | After ...; | +| Conditions.cs:77:17:77:19 | Before ...++ | Conditions.cs:77:17:77:17 | access to local variable x | +| Conditions.cs:77:17:77:20 | ...; | Conditions.cs:77:17:77:19 | Before ...++ | +| Conditions.cs:78:13:79:26 | After if (...) ... | Conditions.cs:75:9:80:9 | After {...} | +| Conditions.cs:78:13:79:26 | if (...) ... | Conditions.cs:78:17:78:21 | Before ... > ... | | Conditions.cs:78:17:78:17 | access to local variable x | Conditions.cs:78:21:78:21 | 0 | -| Conditions.cs:78:17:78:21 | ... > ... | Conditions.cs:79:17:79:26 | ...; | +| Conditions.cs:78:17:78:21 | ... > ... | Conditions.cs:78:17:78:21 | After ... > ... [false] | +| Conditions.cs:78:17:78:21 | ... > ... | Conditions.cs:78:17:78:21 | After ... > ... [true] | +| Conditions.cs:78:17:78:21 | After ... > ... [true] | Conditions.cs:79:17:79:26 | ...; | +| Conditions.cs:78:17:78:21 | Before ... > ... | Conditions.cs:78:17:78:17 | access to local variable x | | Conditions.cs:78:21:78:21 | 0 | Conditions.cs:78:17:78:21 | ... > ... | -| Conditions.cs:79:17:79:26 | ...; | Conditions.cs:79:21:79:25 | false | +| Conditions.cs:79:17:79:17 | access to local variable b | Conditions.cs:79:21:79:25 | false | +| Conditions.cs:79:17:79:25 | ... = ... | Conditions.cs:79:17:79:25 | After ... = ... | +| Conditions.cs:79:17:79:25 | After ... = ... | Conditions.cs:79:17:79:26 | After ...; | +| Conditions.cs:79:17:79:25 | Before ... = ... | Conditions.cs:79:17:79:17 | access to local variable b | +| Conditions.cs:79:17:79:26 | ...; | Conditions.cs:79:17:79:25 | Before ... = ... | | Conditions.cs:79:21:79:25 | false | Conditions.cs:79:17:79:25 | ... = ... | +| Conditions.cs:81:9:82:16 | After if (...) ... | Conditions.cs:83:9:83:17 | Before return ...; | | Conditions.cs:81:9:82:16 | if (...) ... | Conditions.cs:81:13:81:13 | access to local variable b | -| Conditions.cs:81:13:81:13 | access to local variable b | Conditions.cs:82:13:82:16 | ...; | -| Conditions.cs:81:13:81:13 | access to local variable b | Conditions.cs:83:16:83:16 | access to local variable x | +| Conditions.cs:81:13:81:13 | After access to local variable b [true] | Conditions.cs:82:13:82:16 | ...; | +| Conditions.cs:81:13:81:13 | access to local variable b | Conditions.cs:81:13:81:13 | After access to local variable b [false] | +| Conditions.cs:81:13:81:13 | access to local variable b | Conditions.cs:81:13:81:13 | After access to local variable b [true] | | Conditions.cs:82:13:82:13 | access to local variable x | Conditions.cs:82:13:82:15 | ...++ | -| Conditions.cs:82:13:82:16 | ...; | Conditions.cs:82:13:82:13 | access to local variable x | -| Conditions.cs:83:9:83:17 | return ...; | Conditions.cs:70:9:70:10 | exit M6 (normal) | +| Conditions.cs:82:13:82:15 | ...++ | Conditions.cs:82:13:82:15 | After ...++ | +| Conditions.cs:82:13:82:15 | After ...++ | Conditions.cs:82:13:82:16 | After ...; | +| Conditions.cs:82:13:82:15 | Before ...++ | Conditions.cs:82:13:82:13 | access to local variable x | +| Conditions.cs:82:13:82:16 | ...; | Conditions.cs:82:13:82:15 | Before ...++ | +| Conditions.cs:83:9:83:17 | Before return ...; | Conditions.cs:83:16:83:16 | access to local variable x | +| Conditions.cs:83:9:83:17 | return ...; | Conditions.cs:70:9:70:10 | Normal Exit | | Conditions.cs:83:16:83:16 | access to local variable x | Conditions.cs:83:9:83:17 | return ...; | -| Conditions.cs:86:9:86:10 | enter M7 | Conditions.cs:87:5:100:5 | {...} | -| Conditions.cs:86:9:86:10 | exit M7 (normal) | Conditions.cs:86:9:86:10 | exit M7 | +| Conditions.cs:86:9:86:10 | Entry | Conditions.cs:86:21:86:22 | ss | +| Conditions.cs:86:9:86:10 | Normal Exit | Conditions.cs:86:9:86:10 | Exit | +| Conditions.cs:86:21:86:22 | ss | Conditions.cs:87:5:100:5 | {...} | | Conditions.cs:87:5:100:5 | {...} | Conditions.cs:88:9:88:30 | ... ...; | -| Conditions.cs:88:9:88:30 | ... ...; | Conditions.cs:88:17:88:18 | access to parameter ss | -| Conditions.cs:88:13:88:29 | Boolean b = ... | Conditions.cs:89:9:89:18 | ... ...; | +| Conditions.cs:88:9:88:30 | ... ...; | Conditions.cs:88:13:88:29 | Before Boolean b = ... | +| Conditions.cs:88:9:88:30 | After ... ...; | Conditions.cs:89:9:89:18 | ... ...; | +| Conditions.cs:88:13:88:13 | access to local variable b | Conditions.cs:88:17:88:29 | Before ... > ... | +| Conditions.cs:88:13:88:29 | After Boolean b = ... | Conditions.cs:88:9:88:30 | After ... ...; | +| Conditions.cs:88:13:88:29 | Before Boolean b = ... | Conditions.cs:88:13:88:13 | access to local variable b | +| Conditions.cs:88:13:88:29 | Boolean b = ... | Conditions.cs:88:13:88:29 | After Boolean b = ... | | Conditions.cs:88:17:88:18 | access to parameter ss | Conditions.cs:88:17:88:25 | access to property Length | -| Conditions.cs:88:17:88:25 | access to property Length | Conditions.cs:88:29:88:29 | 0 | -| Conditions.cs:88:17:88:29 | ... > ... | Conditions.cs:88:13:88:29 | Boolean b = ... | +| Conditions.cs:88:17:88:25 | After access to property Length | Conditions.cs:88:29:88:29 | 0 | +| Conditions.cs:88:17:88:25 | Before access to property Length | Conditions.cs:88:17:88:18 | access to parameter ss | +| Conditions.cs:88:17:88:25 | access to property Length | Conditions.cs:88:17:88:25 | After access to property Length | +| Conditions.cs:88:17:88:29 | ... > ... | Conditions.cs:88:17:88:29 | After ... > ... | +| Conditions.cs:88:17:88:29 | After ... > ... | Conditions.cs:88:13:88:29 | Boolean b = ... | +| Conditions.cs:88:17:88:29 | Before ... > ... | Conditions.cs:88:17:88:25 | Before access to property Length | | Conditions.cs:88:29:88:29 | 0 | Conditions.cs:88:17:88:29 | ... > ... | -| Conditions.cs:89:9:89:18 | ... ...; | Conditions.cs:89:17:89:17 | 0 | -| Conditions.cs:89:13:89:17 | Int32 x = ... | Conditions.cs:90:27:90:28 | access to parameter ss | +| Conditions.cs:89:9:89:18 | ... ...; | Conditions.cs:89:13:89:17 | Before Int32 x = ... | +| Conditions.cs:89:9:89:18 | After ... ...; | Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | +| Conditions.cs:89:13:89:13 | access to local variable x | Conditions.cs:89:17:89:17 | 0 | +| Conditions.cs:89:13:89:17 | After Int32 x = ... | Conditions.cs:89:9:89:18 | After ... ...; | +| Conditions.cs:89:13:89:17 | Before Int32 x = ... | Conditions.cs:89:13:89:13 | access to local variable x | +| Conditions.cs:89:13:89:17 | Int32 x = ... | Conditions.cs:89:13:89:17 | After Int32 x = ... | | Conditions.cs:89:17:89:17 | 0 | Conditions.cs:89:13:89:17 | Int32 x = ... | -| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:90:22:90:22 | String _ | -| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:99:16:99:16 | access to local variable x | +| Conditions.cs:90:9:98:9 | After foreach (... ... in ...) ... | Conditions.cs:99:9:99:17 | Before return ...; | +| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:90:27:90:28 | access to parameter ss | | Conditions.cs:90:22:90:22 | String _ | Conditions.cs:91:9:98:9 | {...} | -| Conditions.cs:90:27:90:28 | access to parameter ss | Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | +| Conditions.cs:90:27:90:28 | After access to parameter ss [non-empty] | Conditions.cs:90:22:90:22 | String _ | +| Conditions.cs:90:27:90:28 | access to parameter ss | Conditions.cs:90:27:90:28 | After access to parameter ss [empty] | +| Conditions.cs:90:27:90:28 | access to parameter ss | Conditions.cs:90:27:90:28 | After access to parameter ss [non-empty] | +| Conditions.cs:91:9:98:9 | After {...} | Conditions.cs:90:9:98:9 | [LoopHeader] foreach (... ... in ...) ... | | Conditions.cs:91:9:98:9 | {...} | Conditions.cs:92:13:93:20 | if (...) ... | +| Conditions.cs:92:13:93:20 | After if (...) ... | Conditions.cs:94:13:95:26 | if (...) ... | | Conditions.cs:92:13:93:20 | if (...) ... | Conditions.cs:92:17:92:17 | access to local variable b | -| Conditions.cs:92:17:92:17 | access to local variable b | Conditions.cs:93:17:93:20 | ...; | -| Conditions.cs:92:17:92:17 | access to local variable b | Conditions.cs:94:13:95:26 | if (...) ... | +| Conditions.cs:92:17:92:17 | After access to local variable b [true] | Conditions.cs:93:17:93:20 | ...; | +| Conditions.cs:92:17:92:17 | access to local variable b | Conditions.cs:92:17:92:17 | After access to local variable b [false] | +| Conditions.cs:92:17:92:17 | access to local variable b | Conditions.cs:92:17:92:17 | After access to local variable b [true] | | Conditions.cs:93:17:93:17 | access to local variable x | Conditions.cs:93:17:93:19 | ...++ | -| Conditions.cs:93:17:93:20 | ...; | Conditions.cs:93:17:93:17 | access to local variable x | -| Conditions.cs:94:13:95:26 | if (...) ... | Conditions.cs:94:17:94:17 | access to local variable x | +| Conditions.cs:93:17:93:19 | ...++ | Conditions.cs:93:17:93:19 | After ...++ | +| Conditions.cs:93:17:93:19 | After ...++ | Conditions.cs:93:17:93:20 | After ...; | +| Conditions.cs:93:17:93:19 | Before ...++ | Conditions.cs:93:17:93:17 | access to local variable x | +| Conditions.cs:93:17:93:20 | ...; | Conditions.cs:93:17:93:19 | Before ...++ | +| Conditions.cs:94:13:95:26 | After if (...) ... | Conditions.cs:96:13:97:20 | if (...) ... | +| Conditions.cs:94:13:95:26 | if (...) ... | Conditions.cs:94:17:94:21 | Before ... > ... | | Conditions.cs:94:17:94:17 | access to local variable x | Conditions.cs:94:21:94:21 | 0 | -| Conditions.cs:94:17:94:21 | ... > ... | Conditions.cs:95:17:95:26 | ...; | -| Conditions.cs:94:17:94:21 | ... > ... | Conditions.cs:96:13:97:20 | if (...) ... | +| Conditions.cs:94:17:94:21 | ... > ... | Conditions.cs:94:17:94:21 | After ... > ... [false] | +| Conditions.cs:94:17:94:21 | ... > ... | Conditions.cs:94:17:94:21 | After ... > ... [true] | +| Conditions.cs:94:17:94:21 | After ... > ... [true] | Conditions.cs:95:17:95:26 | ...; | +| Conditions.cs:94:17:94:21 | Before ... > ... | Conditions.cs:94:17:94:17 | access to local variable x | | Conditions.cs:94:21:94:21 | 0 | Conditions.cs:94:17:94:21 | ... > ... | -| Conditions.cs:95:17:95:26 | ...; | Conditions.cs:95:21:95:25 | false | +| Conditions.cs:95:17:95:17 | access to local variable b | Conditions.cs:95:21:95:25 | false | +| Conditions.cs:95:17:95:25 | ... = ... | Conditions.cs:95:17:95:25 | After ... = ... | +| Conditions.cs:95:17:95:25 | After ... = ... | Conditions.cs:95:17:95:26 | After ...; | +| Conditions.cs:95:17:95:25 | Before ... = ... | Conditions.cs:95:17:95:17 | access to local variable b | +| Conditions.cs:95:17:95:26 | ...; | Conditions.cs:95:17:95:25 | Before ... = ... | | Conditions.cs:95:21:95:25 | false | Conditions.cs:95:17:95:25 | ... = ... | +| Conditions.cs:96:13:97:20 | After if (...) ... | Conditions.cs:91:9:98:9 | After {...} | | Conditions.cs:96:13:97:20 | if (...) ... | Conditions.cs:96:17:96:17 | access to local variable b | -| Conditions.cs:96:17:96:17 | access to local variable b | Conditions.cs:97:17:97:20 | ...; | +| Conditions.cs:96:17:96:17 | After access to local variable b [true] | Conditions.cs:97:17:97:20 | ...; | +| Conditions.cs:96:17:96:17 | access to local variable b | Conditions.cs:96:17:96:17 | After access to local variable b [false] | +| Conditions.cs:96:17:96:17 | access to local variable b | Conditions.cs:96:17:96:17 | After access to local variable b [true] | | Conditions.cs:97:17:97:17 | access to local variable x | Conditions.cs:97:17:97:19 | ...++ | -| Conditions.cs:97:17:97:20 | ...; | Conditions.cs:97:17:97:17 | access to local variable x | -| Conditions.cs:99:9:99:17 | return ...; | Conditions.cs:86:9:86:10 | exit M7 (normal) | +| Conditions.cs:97:17:97:19 | ...++ | Conditions.cs:97:17:97:19 | After ...++ | +| Conditions.cs:97:17:97:19 | After ...++ | Conditions.cs:97:17:97:20 | After ...; | +| Conditions.cs:97:17:97:19 | Before ...++ | Conditions.cs:97:17:97:17 | access to local variable x | +| Conditions.cs:97:17:97:20 | ...; | Conditions.cs:97:17:97:19 | Before ...++ | +| Conditions.cs:99:9:99:17 | Before return ...; | Conditions.cs:99:16:99:16 | access to local variable x | +| Conditions.cs:99:9:99:17 | return ...; | Conditions.cs:86:9:86:10 | Normal Exit | | Conditions.cs:99:16:99:16 | access to local variable x | Conditions.cs:99:9:99:17 | return ...; | -| Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:103:5:111:5 | {...} | -| Conditions.cs:102:12:102:13 | exit M8 (normal) | Conditions.cs:102:12:102:13 | exit M8 | +| Conditions.cs:102:12:102:13 | Entry | Conditions.cs:102:20:102:20 | b | +| Conditions.cs:102:12:102:13 | Normal Exit | Conditions.cs:102:12:102:13 | Exit | +| Conditions.cs:102:20:102:20 | b | Conditions.cs:103:5:111:5 | {...} | | Conditions.cs:103:5:111:5 | {...} | Conditions.cs:104:9:104:29 | ... ...; | -| Conditions.cs:104:9:104:29 | ... ...; | Conditions.cs:104:17:104:17 | access to parameter b | -| Conditions.cs:104:13:104:28 | String x = ... | Conditions.cs:105:9:106:20 | if (...) ... | +| Conditions.cs:104:9:104:29 | ... ...; | Conditions.cs:104:13:104:28 | Before String x = ... | +| Conditions.cs:104:9:104:29 | After ... ...; | Conditions.cs:105:9:106:20 | if (...) ... | +| Conditions.cs:104:13:104:13 | access to local variable x | Conditions.cs:104:17:104:28 | Before call to method ToString | +| Conditions.cs:104:13:104:28 | After String x = ... | Conditions.cs:104:9:104:29 | After ... ...; | +| Conditions.cs:104:13:104:28 | Before String x = ... | Conditions.cs:104:13:104:13 | access to local variable x | +| Conditions.cs:104:13:104:28 | String x = ... | Conditions.cs:104:13:104:28 | After String x = ... | | Conditions.cs:104:17:104:17 | access to parameter b | Conditions.cs:104:17:104:28 | call to method ToString | -| Conditions.cs:104:17:104:28 | call to method ToString | Conditions.cs:104:13:104:28 | String x = ... | +| Conditions.cs:104:17:104:28 | After call to method ToString | Conditions.cs:104:13:104:28 | String x = ... | +| Conditions.cs:104:17:104:28 | Before call to method ToString | Conditions.cs:104:17:104:17 | access to parameter b | +| Conditions.cs:104:17:104:28 | call to method ToString | Conditions.cs:104:17:104:28 | After call to method ToString | +| Conditions.cs:105:9:106:20 | After if (...) ... | Conditions.cs:107:9:109:24 | if (...) ... | | Conditions.cs:105:9:106:20 | if (...) ... | Conditions.cs:105:13:105:13 | access to parameter b | -| Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:106:13:106:20 | ...; | -| Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:107:9:109:24 | if (...) ... | +| Conditions.cs:105:13:105:13 | After access to parameter b [true] | Conditions.cs:106:13:106:20 | ...; | +| Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:105:13:105:13 | After access to parameter b [false] | +| Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:105:13:105:13 | After access to parameter b [true] | | Conditions.cs:106:13:106:13 | access to local variable x | Conditions.cs:106:18:106:19 | "" | -| Conditions.cs:106:13:106:20 | ...; | Conditions.cs:106:13:106:13 | access to local variable x | +| Conditions.cs:106:13:106:19 | ... += ... | Conditions.cs:106:13:106:19 | After ... += ... | +| Conditions.cs:106:13:106:19 | After ... += ... | Conditions.cs:106:13:106:20 | After ...; | +| Conditions.cs:106:13:106:19 | Before ... += ... | Conditions.cs:106:13:106:13 | access to local variable x | +| Conditions.cs:106:13:106:20 | ...; | Conditions.cs:106:13:106:19 | Before ... += ... | | Conditions.cs:106:18:106:19 | "" | Conditions.cs:106:13:106:19 | ... += ... | -| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:107:13:107:13 | access to local variable x | +| Conditions.cs:107:9:109:24 | After if (...) ... | Conditions.cs:110:9:110:17 | Before return ...; | +| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:107:13:107:24 | Before ... > ... | | Conditions.cs:107:13:107:13 | access to local variable x | Conditions.cs:107:13:107:20 | access to property Length | -| Conditions.cs:107:13:107:20 | access to property Length | Conditions.cs:107:24:107:24 | 0 | -| Conditions.cs:107:13:107:24 | ... > ... | Conditions.cs:108:13:109:24 | if (...) ... | -| Conditions.cs:107:13:107:24 | ... > ... | Conditions.cs:110:16:110:16 | access to local variable x | +| Conditions.cs:107:13:107:20 | After access to property Length | Conditions.cs:107:24:107:24 | 0 | +| Conditions.cs:107:13:107:20 | Before access to property Length | Conditions.cs:107:13:107:13 | access to local variable x | +| Conditions.cs:107:13:107:20 | access to property Length | Conditions.cs:107:13:107:20 | After access to property Length | +| Conditions.cs:107:13:107:24 | ... > ... | Conditions.cs:107:13:107:24 | After ... > ... [false] | +| Conditions.cs:107:13:107:24 | ... > ... | Conditions.cs:107:13:107:24 | After ... > ... [true] | +| Conditions.cs:107:13:107:24 | After ... > ... [true] | Conditions.cs:108:13:109:24 | if (...) ... | +| Conditions.cs:107:13:107:24 | Before ... > ... | Conditions.cs:107:13:107:20 | Before access to property Length | | Conditions.cs:107:24:107:24 | 0 | Conditions.cs:107:13:107:24 | ... > ... | -| Conditions.cs:108:13:109:24 | if (...) ... | Conditions.cs:108:18:108:18 | access to parameter b | -| Conditions.cs:108:17:108:18 | [true] !... | Conditions.cs:109:17:109:24 | ...; | -| Conditions.cs:108:18:108:18 | access to parameter b | Conditions.cs:108:17:108:18 | [false] !... | -| Conditions.cs:108:18:108:18 | access to parameter b | Conditions.cs:108:17:108:18 | [true] !... | +| Conditions.cs:108:13:109:24 | if (...) ... | Conditions.cs:108:17:108:18 | !... | +| Conditions.cs:108:17:108:18 | !... | Conditions.cs:108:18:108:18 | access to parameter b | +| Conditions.cs:108:17:108:18 | After !... [true] | Conditions.cs:109:17:109:24 | ...; | +| Conditions.cs:108:18:108:18 | After access to parameter b [false] | Conditions.cs:108:17:108:18 | After !... [true] | +| Conditions.cs:108:18:108:18 | After access to parameter b [true] | Conditions.cs:108:17:108:18 | After !... [false] | +| Conditions.cs:108:18:108:18 | access to parameter b | Conditions.cs:108:18:108:18 | After access to parameter b [false] | +| Conditions.cs:108:18:108:18 | access to parameter b | Conditions.cs:108:18:108:18 | After access to parameter b [true] | | Conditions.cs:109:17:109:17 | access to local variable x | Conditions.cs:109:22:109:23 | "" | -| Conditions.cs:109:17:109:24 | ...; | Conditions.cs:109:17:109:17 | access to local variable x | +| Conditions.cs:109:17:109:23 | ... += ... | Conditions.cs:109:17:109:23 | After ... += ... | +| Conditions.cs:109:17:109:23 | After ... += ... | Conditions.cs:109:17:109:24 | After ...; | +| Conditions.cs:109:17:109:23 | Before ... += ... | Conditions.cs:109:17:109:17 | access to local variable x | +| Conditions.cs:109:17:109:24 | ...; | Conditions.cs:109:17:109:23 | Before ... += ... | | Conditions.cs:109:22:109:23 | "" | Conditions.cs:109:17:109:23 | ... += ... | -| Conditions.cs:110:9:110:17 | return ...; | Conditions.cs:102:12:102:13 | exit M8 (normal) | +| Conditions.cs:110:9:110:17 | Before return ...; | Conditions.cs:110:16:110:16 | access to local variable x | +| Conditions.cs:110:9:110:17 | return ...; | Conditions.cs:102:12:102:13 | Normal Exit | | Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:110:9:110:17 | return ...; | -| Conditions.cs:113:10:113:11 | enter M9 | Conditions.cs:114:5:124:5 | {...} | -| Conditions.cs:113:10:113:11 | exit M9 (normal) | Conditions.cs:113:10:113:11 | exit M9 | +| Conditions.cs:113:10:113:11 | Entry | Conditions.cs:113:22:113:25 | args | +| Conditions.cs:113:10:113:11 | Normal Exit | Conditions.cs:113:10:113:11 | Exit | +| Conditions.cs:113:22:113:25 | args | Conditions.cs:114:5:124:5 | {...} | +| Conditions.cs:114:5:124:5 | After {...} | Conditions.cs:113:10:113:11 | Normal Exit | | Conditions.cs:114:5:124:5 | {...} | Conditions.cs:115:9:115:24 | ... ...; | -| Conditions.cs:115:9:115:24 | ... ...; | Conditions.cs:115:20:115:23 | null | -| Conditions.cs:115:16:115:23 | String s = ... | Conditions.cs:116:9:123:9 | for (...;...;...) ... | +| Conditions.cs:115:9:115:24 | ... ...; | Conditions.cs:115:16:115:23 | Before String s = ... | +| Conditions.cs:115:9:115:24 | After ... ...; | Conditions.cs:116:9:123:9 | for (...;...;...) ... | +| Conditions.cs:115:16:115:16 | access to local variable s | Conditions.cs:115:20:115:23 | null | +| Conditions.cs:115:16:115:23 | After String s = ... | Conditions.cs:115:9:115:24 | After ... ...; | +| Conditions.cs:115:16:115:23 | Before String s = ... | Conditions.cs:115:16:115:16 | access to local variable s | +| Conditions.cs:115:16:115:23 | String s = ... | Conditions.cs:115:16:115:23 | After String s = ... | | Conditions.cs:115:20:115:23 | null | Conditions.cs:115:16:115:23 | String s = ... | -| Conditions.cs:116:9:123:9 | for (...;...;...) ... | Conditions.cs:116:22:116:22 | 0 | -| Conditions.cs:116:18:116:22 | Int32 i = ... | Conditions.cs:116:25:116:25 | access to local variable i | +| Conditions.cs:116:9:123:9 | After for (...;...;...) ... | Conditions.cs:114:5:124:5 | After {...} | +| Conditions.cs:116:9:123:9 | [LoopHeader] for (...;...;...) ... | Conditions.cs:116:42:116:44 | Before ...++ | +| Conditions.cs:116:9:123:9 | for (...;...;...) ... | Conditions.cs:116:18:116:22 | Before Int32 i = ... | +| Conditions.cs:116:18:116:18 | access to local variable i | Conditions.cs:116:22:116:22 | 0 | +| Conditions.cs:116:18:116:22 | After Int32 i = ... | Conditions.cs:116:25:116:39 | Before ... < ... | +| Conditions.cs:116:18:116:22 | Before Int32 i = ... | Conditions.cs:116:18:116:18 | access to local variable i | +| Conditions.cs:116:18:116:22 | Int32 i = ... | Conditions.cs:116:18:116:22 | After Int32 i = ... | | Conditions.cs:116:22:116:22 | 0 | Conditions.cs:116:18:116:22 | Int32 i = ... | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:116:29:116:32 | access to parameter args | -| Conditions.cs:116:25:116:39 | ... < ... | Conditions.cs:113:10:113:11 | exit M9 (normal) | -| Conditions.cs:116:25:116:39 | ... < ... | Conditions.cs:117:9:123:9 | {...} | +| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:116:29:116:39 | Before access to property Length | +| Conditions.cs:116:25:116:39 | ... < ... | Conditions.cs:116:25:116:39 | After ... < ... [false] | +| Conditions.cs:116:25:116:39 | ... < ... | Conditions.cs:116:25:116:39 | After ... < ... [true] | +| Conditions.cs:116:25:116:39 | After ... < ... [false] | Conditions.cs:116:9:123:9 | After for (...;...;...) ... | +| Conditions.cs:116:25:116:39 | After ... < ... [true] | Conditions.cs:117:9:123:9 | {...} | +| Conditions.cs:116:25:116:39 | Before ... < ... | Conditions.cs:116:25:116:25 | access to local variable i | | Conditions.cs:116:29:116:32 | access to parameter args | Conditions.cs:116:29:116:39 | access to property Length | -| Conditions.cs:116:29:116:39 | access to property Length | Conditions.cs:116:25:116:39 | ... < ... | +| Conditions.cs:116:29:116:39 | After access to property Length | Conditions.cs:116:25:116:39 | ... < ... | +| Conditions.cs:116:29:116:39 | Before access to property Length | Conditions.cs:116:29:116:32 | access to parameter args | +| Conditions.cs:116:29:116:39 | access to property Length | Conditions.cs:116:29:116:39 | After access to property Length | | Conditions.cs:116:42:116:42 | access to local variable i | Conditions.cs:116:42:116:44 | ...++ | +| Conditions.cs:116:42:116:44 | ...++ | Conditions.cs:116:42:116:44 | After ...++ | +| Conditions.cs:116:42:116:44 | Before ...++ | Conditions.cs:116:42:116:42 | access to local variable i | +| Conditions.cs:117:9:123:9 | After {...} | Conditions.cs:116:9:123:9 | [LoopHeader] for (...;...;...) ... | | Conditions.cs:117:9:123:9 | {...} | Conditions.cs:118:13:118:44 | ... ...; | -| Conditions.cs:118:13:118:44 | ... ...; | Conditions.cs:118:24:118:24 | access to local variable i | -| Conditions.cs:118:17:118:43 | Boolean last = ... | Conditions.cs:119:13:120:23 | if (...) ... | -| Conditions.cs:118:24:118:24 | access to local variable i | Conditions.cs:118:29:118:32 | access to parameter args | -| Conditions.cs:118:24:118:43 | ... == ... | Conditions.cs:118:17:118:43 | Boolean last = ... | +| Conditions.cs:118:13:118:44 | ... ...; | Conditions.cs:118:17:118:43 | Before Boolean last = ... | +| Conditions.cs:118:13:118:44 | After ... ...; | Conditions.cs:119:13:120:23 | if (...) ... | +| Conditions.cs:118:17:118:20 | access to local variable last | Conditions.cs:118:24:118:43 | Before ... == ... | +| Conditions.cs:118:17:118:43 | After Boolean last = ... | Conditions.cs:118:13:118:44 | After ... ...; | +| Conditions.cs:118:17:118:43 | Before Boolean last = ... | Conditions.cs:118:17:118:20 | access to local variable last | +| Conditions.cs:118:17:118:43 | Boolean last = ... | Conditions.cs:118:17:118:43 | After Boolean last = ... | +| Conditions.cs:118:24:118:24 | access to local variable i | Conditions.cs:118:29:118:43 | Before ... - ... | +| Conditions.cs:118:24:118:43 | ... == ... | Conditions.cs:118:24:118:43 | After ... == ... | +| Conditions.cs:118:24:118:43 | After ... == ... | Conditions.cs:118:17:118:43 | Boolean last = ... | +| Conditions.cs:118:24:118:43 | Before ... == ... | Conditions.cs:118:24:118:24 | access to local variable i | | Conditions.cs:118:29:118:32 | access to parameter args | Conditions.cs:118:29:118:39 | access to property Length | -| Conditions.cs:118:29:118:39 | access to property Length | Conditions.cs:118:43:118:43 | 1 | -| Conditions.cs:118:29:118:43 | ... - ... | Conditions.cs:118:24:118:43 | ... == ... | +| Conditions.cs:118:29:118:39 | After access to property Length | Conditions.cs:118:43:118:43 | 1 | +| Conditions.cs:118:29:118:39 | Before access to property Length | Conditions.cs:118:29:118:32 | access to parameter args | +| Conditions.cs:118:29:118:39 | access to property Length | Conditions.cs:118:29:118:39 | After access to property Length | +| Conditions.cs:118:29:118:43 | ... - ... | Conditions.cs:118:29:118:43 | After ... - ... | +| Conditions.cs:118:29:118:43 | After ... - ... | Conditions.cs:118:24:118:43 | ... == ... | +| Conditions.cs:118:29:118:43 | Before ... - ... | Conditions.cs:118:29:118:39 | Before access to property Length | | Conditions.cs:118:43:118:43 | 1 | Conditions.cs:118:29:118:43 | ... - ... | -| Conditions.cs:119:13:120:23 | if (...) ... | Conditions.cs:119:18:119:21 | access to local variable last | -| Conditions.cs:119:17:119:21 | [true] !... | Conditions.cs:120:17:120:23 | ...; | -| Conditions.cs:119:18:119:21 | access to local variable last | Conditions.cs:119:17:119:21 | [false] !... | -| Conditions.cs:119:18:119:21 | access to local variable last | Conditions.cs:119:17:119:21 | [true] !... | -| Conditions.cs:120:17:120:23 | ...; | Conditions.cs:120:21:120:22 | "" | +| Conditions.cs:119:13:120:23 | After if (...) ... | Conditions.cs:121:13:122:25 | if (...) ... | +| Conditions.cs:119:13:120:23 | if (...) ... | Conditions.cs:119:17:119:21 | !... | +| Conditions.cs:119:17:119:21 | !... | Conditions.cs:119:18:119:21 | access to local variable last | +| Conditions.cs:119:17:119:21 | After !... [true] | Conditions.cs:120:17:120:23 | ...; | +| Conditions.cs:119:18:119:21 | After access to local variable last [false] | Conditions.cs:119:17:119:21 | After !... [true] | +| Conditions.cs:119:18:119:21 | After access to local variable last [true] | Conditions.cs:119:17:119:21 | After !... [false] | +| Conditions.cs:119:18:119:21 | access to local variable last | Conditions.cs:119:18:119:21 | After access to local variable last [false] | +| Conditions.cs:119:18:119:21 | access to local variable last | Conditions.cs:119:18:119:21 | After access to local variable last [true] | +| Conditions.cs:120:17:120:17 | access to local variable s | Conditions.cs:120:21:120:22 | "" | +| Conditions.cs:120:17:120:22 | ... = ... | Conditions.cs:120:17:120:22 | After ... = ... | +| Conditions.cs:120:17:120:22 | After ... = ... | Conditions.cs:120:17:120:23 | After ...; | +| Conditions.cs:120:17:120:22 | Before ... = ... | Conditions.cs:120:17:120:17 | access to local variable s | +| Conditions.cs:120:17:120:23 | ...; | Conditions.cs:120:17:120:22 | Before ... = ... | | Conditions.cs:120:21:120:22 | "" | Conditions.cs:120:17:120:22 | ... = ... | +| Conditions.cs:121:13:122:25 | After if (...) ... | Conditions.cs:117:9:123:9 | After {...} | | Conditions.cs:121:13:122:25 | if (...) ... | Conditions.cs:121:17:121:20 | access to local variable last | -| Conditions.cs:121:17:121:20 | access to local variable last | Conditions.cs:116:42:116:42 | access to local variable i | -| Conditions.cs:121:17:121:20 | access to local variable last | Conditions.cs:122:17:122:25 | ...; | -| Conditions.cs:122:17:122:25 | ...; | Conditions.cs:122:21:122:24 | null | +| Conditions.cs:121:17:121:20 | After access to local variable last [true] | Conditions.cs:122:17:122:25 | ...; | +| Conditions.cs:121:17:121:20 | access to local variable last | Conditions.cs:121:17:121:20 | After access to local variable last [false] | +| Conditions.cs:121:17:121:20 | access to local variable last | Conditions.cs:121:17:121:20 | After access to local variable last [true] | +| Conditions.cs:122:17:122:17 | access to local variable s | Conditions.cs:122:21:122:24 | null | +| Conditions.cs:122:17:122:24 | ... = ... | Conditions.cs:122:17:122:24 | After ... = ... | +| Conditions.cs:122:17:122:24 | After ... = ... | Conditions.cs:122:17:122:25 | After ...; | +| Conditions.cs:122:17:122:24 | Before ... = ... | Conditions.cs:122:17:122:17 | access to local variable s | +| Conditions.cs:122:17:122:25 | ...; | Conditions.cs:122:17:122:24 | Before ... = ... | | Conditions.cs:122:21:122:24 | null | Conditions.cs:122:17:122:24 | ... = ... | -| Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:130:5:141:5 | {...} | +| Conditions.cs:129:10:129:12 | Entry | Conditions.cs:130:5:141:5 | {...} | | Conditions.cs:130:5:141:5 | {...} | Conditions.cs:131:9:140:9 | while (...) ... | -| Conditions.cs:131:9:140:9 | while (...) ... | Conditions.cs:131:16:131:19 | true | -| Conditions.cs:131:16:131:19 | true | Conditions.cs:132:9:140:9 | {...} | +| Conditions.cs:131:9:140:9 | [LoopHeader] while (...) ... | Conditions.cs:131:16:131:19 | true | +| Conditions.cs:131:9:140:9 | while (...) ... | Conditions.cs:131:9:140:9 | [LoopHeader] while (...) ... | +| Conditions.cs:131:16:131:19 | After true [true] | Conditions.cs:132:9:140:9 | {...} | +| Conditions.cs:131:16:131:19 | true | Conditions.cs:131:16:131:19 | After true [true] | | Conditions.cs:132:9:140:9 | {...} | Conditions.cs:133:13:139:13 | if (...) ... | -| Conditions.cs:133:13:139:13 | if (...) ... | Conditions.cs:133:17:133:22 | this access | -| Conditions.cs:133:17:133:22 | access to field Field1 | Conditions.cs:134:13:139:13 | {...} | +| Conditions.cs:133:13:139:13 | After if (...) ... | Conditions.cs:132:9:140:9 | After {...} | +| Conditions.cs:133:13:139:13 | if (...) ... | Conditions.cs:133:17:133:22 | Before access to field Field1 | +| Conditions.cs:133:17:133:22 | After access to field Field1 [true] | Conditions.cs:134:13:139:13 | {...} | +| Conditions.cs:133:17:133:22 | Before access to field Field1 | Conditions.cs:133:17:133:22 | this access | +| Conditions.cs:133:17:133:22 | access to field Field1 | Conditions.cs:133:17:133:22 | After access to field Field1 [false] | +| Conditions.cs:133:17:133:22 | access to field Field1 | Conditions.cs:133:17:133:22 | After access to field Field1 [true] | | Conditions.cs:133:17:133:22 | this access | Conditions.cs:133:17:133:22 | access to field Field1 | | Conditions.cs:134:13:139:13 | {...} | Conditions.cs:135:17:138:17 | if (...) ... | -| Conditions.cs:135:17:138:17 | if (...) ... | Conditions.cs:135:21:135:26 | this access | -| Conditions.cs:135:21:135:26 | access to field Field2 | Conditions.cs:136:17:138:17 | {...} | +| Conditions.cs:135:17:138:17 | After if (...) ... | Conditions.cs:134:13:139:13 | After {...} | +| Conditions.cs:135:17:138:17 | if (...) ... | Conditions.cs:135:21:135:26 | Before access to field Field2 | +| Conditions.cs:135:21:135:26 | After access to field Field2 [true] | Conditions.cs:136:17:138:17 | {...} | +| Conditions.cs:135:21:135:26 | Before access to field Field2 | Conditions.cs:135:21:135:26 | this access | +| Conditions.cs:135:21:135:26 | access to field Field2 | Conditions.cs:135:21:135:26 | After access to field Field2 [false] | +| Conditions.cs:135:21:135:26 | access to field Field2 | Conditions.cs:135:21:135:26 | After access to field Field2 [true] | | Conditions.cs:135:21:135:26 | this access | Conditions.cs:135:21:135:26 | access to field Field2 | | Conditions.cs:136:17:138:17 | {...} | Conditions.cs:137:21:137:38 | ...; | -| Conditions.cs:137:21:137:26 | access to field Field1 | Conditions.cs:137:21:137:37 | call to method ToString | +| Conditions.cs:137:21:137:26 | After access to field Field1 | Conditions.cs:137:21:137:37 | call to method ToString | +| Conditions.cs:137:21:137:26 | Before access to field Field1 | Conditions.cs:137:21:137:26 | this access | +| Conditions.cs:137:21:137:26 | access to field Field1 | Conditions.cs:137:21:137:26 | After access to field Field1 | | Conditions.cs:137:21:137:26 | this access | Conditions.cs:137:21:137:26 | access to field Field1 | -| Conditions.cs:137:21:137:38 | ...; | Conditions.cs:137:21:137:26 | this access | -| Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:144:5:150:5 | {...} | -| Conditions.cs:143:10:143:12 | exit M11 (normal) | Conditions.cs:143:10:143:12 | exit M11 | +| Conditions.cs:137:21:137:37 | After call to method ToString | Conditions.cs:137:21:137:38 | After ...; | +| Conditions.cs:137:21:137:37 | Before call to method ToString | Conditions.cs:137:21:137:26 | Before access to field Field1 | +| Conditions.cs:137:21:137:37 | call to method ToString | Conditions.cs:137:21:137:37 | After call to method ToString | +| Conditions.cs:137:21:137:38 | ...; | Conditions.cs:137:21:137:37 | Before call to method ToString | +| Conditions.cs:137:21:137:38 | After ...; | Conditions.cs:136:17:138:17 | After {...} | +| Conditions.cs:143:10:143:12 | Entry | Conditions.cs:143:19:143:19 | b | +| Conditions.cs:143:10:143:12 | Normal Exit | Conditions.cs:143:10:143:12 | Exit | +| Conditions.cs:143:19:143:19 | b | Conditions.cs:144:5:150:5 | {...} | +| Conditions.cs:144:5:150:5 | After {...} | Conditions.cs:143:10:143:12 | Normal Exit | | Conditions.cs:144:5:150:5 | {...} | Conditions.cs:145:9:145:30 | ... ...; | -| Conditions.cs:145:9:145:30 | ... ...; | Conditions.cs:145:17:145:17 | access to parameter b | -| Conditions.cs:145:13:145:29 | String s = ... | Conditions.cs:146:9:149:49 | if (...) ... | -| Conditions.cs:145:17:145:17 | access to parameter b | Conditions.cs:145:21:145:23 | "a" | -| Conditions.cs:145:17:145:17 | access to parameter b | Conditions.cs:145:27:145:29 | "b" | -| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:145:13:145:29 | String s = ... | +| Conditions.cs:145:9:145:30 | ... ...; | Conditions.cs:145:13:145:29 | Before String s = ... | +| Conditions.cs:145:9:145:30 | After ... ...; | Conditions.cs:146:9:149:49 | if (...) ... | +| Conditions.cs:145:13:145:13 | access to local variable s | Conditions.cs:145:17:145:29 | ... ? ... : ... | +| Conditions.cs:145:13:145:29 | After String s = ... | Conditions.cs:145:9:145:30 | After ... ...; | +| Conditions.cs:145:13:145:29 | Before String s = ... | Conditions.cs:145:13:145:13 | access to local variable s | +| Conditions.cs:145:13:145:29 | String s = ... | Conditions.cs:145:13:145:29 | After String s = ... | +| Conditions.cs:145:17:145:17 | After access to parameter b [false] | Conditions.cs:145:27:145:29 | "b" | +| Conditions.cs:145:17:145:17 | After access to parameter b [true] | Conditions.cs:145:21:145:23 | "a" | +| Conditions.cs:145:17:145:17 | access to parameter b | Conditions.cs:145:17:145:17 | After access to parameter b [false] | +| Conditions.cs:145:17:145:17 | access to parameter b | Conditions.cs:145:17:145:17 | After access to parameter b [true] | +| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:145:17:145:17 | access to parameter b | +| Conditions.cs:145:17:145:29 | After ... ? ... : ... | Conditions.cs:145:13:145:29 | String s = ... | +| Conditions.cs:146:9:149:49 | After if (...) ... | Conditions.cs:144:5:150:5 | After {...} | | Conditions.cs:146:9:149:49 | if (...) ... | Conditions.cs:146:13:146:13 | access to parameter b | -| Conditions.cs:146:13:146:13 | access to parameter b | Conditions.cs:147:13:147:49 | ...; | -| Conditions.cs:146:13:146:13 | access to parameter b | Conditions.cs:149:13:149:49 | ...; | -| Conditions.cs:147:13:147:49 | ...; | Conditions.cs:147:40:147:43 | "a = " | -| Conditions.cs:147:38:147:47 | $"..." | Conditions.cs:147:13:147:48 | call to method WriteLine | -| Conditions.cs:147:40:147:43 | "a = " | Conditions.cs:147:45:147:45 | access to local variable s | -| Conditions.cs:147:44:147:46 | {...} | Conditions.cs:147:38:147:47 | $"..." | +| Conditions.cs:146:13:146:13 | After access to parameter b [false] | Conditions.cs:149:13:149:49 | ...; | +| Conditions.cs:146:13:146:13 | After access to parameter b [true] | Conditions.cs:147:13:147:49 | ...; | +| Conditions.cs:146:13:146:13 | access to parameter b | Conditions.cs:146:13:146:13 | After access to parameter b [false] | +| Conditions.cs:146:13:146:13 | access to parameter b | Conditions.cs:146:13:146:13 | After access to parameter b [true] | +| Conditions.cs:147:13:147:48 | After call to method WriteLine | Conditions.cs:147:13:147:49 | After ...; | +| Conditions.cs:147:13:147:48 | Before call to method WriteLine | Conditions.cs:147:38:147:47 | Before $"..." | +| Conditions.cs:147:13:147:48 | call to method WriteLine | Conditions.cs:147:13:147:48 | After call to method WriteLine | +| Conditions.cs:147:13:147:49 | ...; | Conditions.cs:147:13:147:48 | Before call to method WriteLine | +| Conditions.cs:147:38:147:47 | $"..." | Conditions.cs:147:38:147:47 | After $"..." | +| Conditions.cs:147:38:147:47 | After $"..." | Conditions.cs:147:13:147:48 | call to method WriteLine | +| Conditions.cs:147:38:147:47 | Before $"..." | Conditions.cs:147:40:147:43 | "a = " | +| Conditions.cs:147:40:147:43 | "a = " | Conditions.cs:147:44:147:46 | Before {...} | +| Conditions.cs:147:44:147:46 | After {...} | Conditions.cs:147:38:147:47 | $"..." | +| Conditions.cs:147:44:147:46 | Before {...} | Conditions.cs:147:45:147:45 | access to local variable s | +| Conditions.cs:147:44:147:46 | {...} | Conditions.cs:147:44:147:46 | After {...} | | Conditions.cs:147:45:147:45 | access to local variable s | Conditions.cs:147:44:147:46 | {...} | -| Conditions.cs:149:13:149:49 | ...; | Conditions.cs:149:40:149:43 | "b = " | -| Conditions.cs:149:38:149:47 | $"..." | Conditions.cs:149:13:149:48 | call to method WriteLine | -| Conditions.cs:149:40:149:43 | "b = " | Conditions.cs:149:45:149:45 | access to local variable s | -| Conditions.cs:149:44:149:46 | {...} | Conditions.cs:149:38:149:47 | $"..." | +| Conditions.cs:149:13:149:48 | After call to method WriteLine | Conditions.cs:149:13:149:49 | After ...; | +| Conditions.cs:149:13:149:48 | Before call to method WriteLine | Conditions.cs:149:38:149:47 | Before $"..." | +| Conditions.cs:149:13:149:48 | call to method WriteLine | Conditions.cs:149:13:149:48 | After call to method WriteLine | +| Conditions.cs:149:13:149:49 | ...; | Conditions.cs:149:13:149:48 | Before call to method WriteLine | +| Conditions.cs:149:38:149:47 | $"..." | Conditions.cs:149:38:149:47 | After $"..." | +| Conditions.cs:149:38:149:47 | After $"..." | Conditions.cs:149:13:149:48 | call to method WriteLine | +| Conditions.cs:149:38:149:47 | Before $"..." | Conditions.cs:149:40:149:43 | "b = " | +| Conditions.cs:149:40:149:43 | "b = " | Conditions.cs:149:44:149:46 | Before {...} | +| Conditions.cs:149:44:149:46 | After {...} | Conditions.cs:149:38:149:47 | $"..." | +| Conditions.cs:149:44:149:46 | Before {...} | Conditions.cs:149:45:149:45 | access to local variable s | +| Conditions.cs:149:44:149:46 | {...} | Conditions.cs:149:44:149:46 | After {...} | | Conditions.cs:149:45:149:45 | access to local variable s | Conditions.cs:149:44:149:46 | {...} | -| ExitMethods.cs:6:7:6:17 | call to constructor Object | ExitMethods.cs:6:7:6:17 | {...} | -| ExitMethods.cs:6:7:6:17 | call to method | ExitMethods.cs:6:7:6:17 | call to constructor Object | -| ExitMethods.cs:6:7:6:17 | enter ExitMethods | ExitMethods.cs:6:7:6:17 | this access | -| ExitMethods.cs:6:7:6:17 | exit ExitMethods (normal) | ExitMethods.cs:6:7:6:17 | exit ExitMethods | +| DefaultParam.cs:1:7:1:18 | After call to constructor Object | DefaultParam.cs:1:7:1:18 | {...} | +| DefaultParam.cs:1:7:1:18 | After call to method | DefaultParam.cs:1:7:1:18 | Before call to constructor Object | +| DefaultParam.cs:1:7:1:18 | Before call to constructor Object | DefaultParam.cs:1:7:1:18 | call to constructor Object | +| DefaultParam.cs:1:7:1:18 | Before call to method | DefaultParam.cs:1:7:1:18 | this access | +| DefaultParam.cs:1:7:1:18 | Entry | DefaultParam.cs:1:7:1:18 | Before call to method | +| DefaultParam.cs:1:7:1:18 | Normal Exit | DefaultParam.cs:1:7:1:18 | Exit | +| DefaultParam.cs:1:7:1:18 | call to constructor Object | DefaultParam.cs:1:7:1:18 | After call to constructor Object | +| DefaultParam.cs:1:7:1:18 | call to method | DefaultParam.cs:1:7:1:18 | After call to method | +| DefaultParam.cs:1:7:1:18 | this access | DefaultParam.cs:1:7:1:18 | call to method | +| DefaultParam.cs:1:7:1:18 | {...} | DefaultParam.cs:1:7:1:18 | Normal Exit | +| DefaultParam.cs:3:12:3:13 | Entry | DefaultParam.cs:3:20:3:20 | b | +| DefaultParam.cs:3:12:3:13 | Normal Exit | DefaultParam.cs:3:12:3:13 | Exit | +| DefaultParam.cs:3:20:3:20 | b | DefaultParam.cs:3:30:3:30 | s | +| DefaultParam.cs:3:30:3:30 | After s [no-match] | DefaultParam.cs:3:34:3:35 | "" | +| DefaultParam.cs:3:30:3:30 | s | DefaultParam.cs:3:30:3:30 | After s [match] | +| DefaultParam.cs:3:30:3:30 | s | DefaultParam.cs:3:30:3:30 | After s [no-match] | +| DefaultParam.cs:3:42:3:42 | After i [no-match] | DefaultParam.cs:3:46:3:46 | 0 | +| DefaultParam.cs:3:42:3:42 | i | DefaultParam.cs:3:42:3:42 | After i [match] | +| DefaultParam.cs:3:42:3:42 | i | DefaultParam.cs:3:42:3:42 | After i [no-match] | +| DefaultParam.cs:4:5:6:5 | {...} | DefaultParam.cs:5:9:5:25 | Before return ...; | +| DefaultParam.cs:5:9:5:25 | Before return ...; | DefaultParam.cs:5:16:5:24 | Before ... + ... | +| DefaultParam.cs:5:9:5:25 | return ...; | DefaultParam.cs:3:12:3:13 | Normal Exit | +| DefaultParam.cs:5:16:5:16 | (...) ... | DefaultParam.cs:5:16:5:16 | After (...) ... | +| DefaultParam.cs:5:16:5:16 | After (...) ... | DefaultParam.cs:5:20:5:20 | access to parameter s | +| DefaultParam.cs:5:16:5:16 | Before (...) ... | DefaultParam.cs:5:16:5:16 | access to parameter b | +| DefaultParam.cs:5:16:5:16 | access to parameter b | DefaultParam.cs:5:16:5:16 | (...) ... | +| DefaultParam.cs:5:16:5:20 | ... + ... | DefaultParam.cs:5:16:5:20 | After ... + ... | +| DefaultParam.cs:5:16:5:20 | After ... + ... | DefaultParam.cs:5:24:5:24 | Before (...) ... | +| DefaultParam.cs:5:16:5:20 | Before ... + ... | DefaultParam.cs:5:16:5:16 | Before (...) ... | +| DefaultParam.cs:5:16:5:24 | ... + ... | DefaultParam.cs:5:16:5:24 | After ... + ... | +| DefaultParam.cs:5:16:5:24 | After ... + ... | DefaultParam.cs:5:9:5:25 | return ...; | +| DefaultParam.cs:5:16:5:24 | Before ... + ... | DefaultParam.cs:5:16:5:20 | Before ... + ... | +| DefaultParam.cs:5:20:5:20 | access to parameter s | DefaultParam.cs:5:16:5:20 | ... + ... | +| DefaultParam.cs:5:24:5:24 | (...) ... | DefaultParam.cs:5:24:5:24 | After (...) ... | +| DefaultParam.cs:5:24:5:24 | After (...) ... | DefaultParam.cs:5:16:5:24 | ... + ... | +| DefaultParam.cs:5:24:5:24 | Before (...) ... | DefaultParam.cs:5:24:5:24 | access to parameter i | +| DefaultParam.cs:5:24:5:24 | access to parameter i | DefaultParam.cs:5:24:5:24 | (...) ... | +| ExitMethods.cs:6:7:6:17 | After call to constructor Object | ExitMethods.cs:6:7:6:17 | {...} | +| ExitMethods.cs:6:7:6:17 | After call to method | ExitMethods.cs:6:7:6:17 | Before call to constructor Object | +| ExitMethods.cs:6:7:6:17 | Before call to constructor Object | ExitMethods.cs:6:7:6:17 | call to constructor Object | +| ExitMethods.cs:6:7:6:17 | Before call to method | ExitMethods.cs:6:7:6:17 | this access | +| ExitMethods.cs:6:7:6:17 | Entry | ExitMethods.cs:6:7:6:17 | Before call to method | +| ExitMethods.cs:6:7:6:17 | Normal Exit | ExitMethods.cs:6:7:6:17 | Exit | +| ExitMethods.cs:6:7:6:17 | call to constructor Object | ExitMethods.cs:6:7:6:17 | After call to constructor Object | +| ExitMethods.cs:6:7:6:17 | call to method | ExitMethods.cs:6:7:6:17 | After call to method | | ExitMethods.cs:6:7:6:17 | this access | ExitMethods.cs:6:7:6:17 | call to method | -| ExitMethods.cs:6:7:6:17 | {...} | ExitMethods.cs:6:7:6:17 | exit ExitMethods (normal) | -| ExitMethods.cs:8:10:8:11 | enter M1 | ExitMethods.cs:9:5:12:5 | {...} | -| ExitMethods.cs:8:10:8:11 | exit M1 (normal) | ExitMethods.cs:8:10:8:11 | exit M1 | +| ExitMethods.cs:6:7:6:17 | {...} | ExitMethods.cs:6:7:6:17 | Normal Exit | +| ExitMethods.cs:8:10:8:11 | Entry | ExitMethods.cs:9:5:12:5 | {...} | +| ExitMethods.cs:8:10:8:11 | Normal Exit | ExitMethods.cs:8:10:8:11 | Exit | | ExitMethods.cs:9:5:12:5 | {...} | ExitMethods.cs:10:9:10:25 | ...; | -| ExitMethods.cs:10:9:10:24 | call to method ErrorMaybe | ExitMethods.cs:11:9:11:15 | return ...; | -| ExitMethods.cs:10:9:10:25 | ...; | ExitMethods.cs:10:20:10:23 | true | +| ExitMethods.cs:10:9:10:24 | After call to method ErrorMaybe | ExitMethods.cs:10:9:10:25 | After ...; | +| ExitMethods.cs:10:9:10:24 | Before call to method ErrorMaybe | ExitMethods.cs:10:20:10:23 | true | +| ExitMethods.cs:10:9:10:24 | call to method ErrorMaybe | ExitMethods.cs:10:9:10:24 | After call to method ErrorMaybe | +| ExitMethods.cs:10:9:10:25 | ...; | ExitMethods.cs:10:9:10:24 | Before call to method ErrorMaybe | +| ExitMethods.cs:10:9:10:25 | After ...; | ExitMethods.cs:11:9:11:15 | Before return ...; | | ExitMethods.cs:10:20:10:23 | true | ExitMethods.cs:10:9:10:24 | call to method ErrorMaybe | -| ExitMethods.cs:11:9:11:15 | return ...; | ExitMethods.cs:8:10:8:11 | exit M1 (normal) | -| ExitMethods.cs:14:10:14:11 | enter M2 | ExitMethods.cs:15:5:18:5 | {...} | -| ExitMethods.cs:14:10:14:11 | exit M2 (normal) | ExitMethods.cs:14:10:14:11 | exit M2 | +| ExitMethods.cs:11:9:11:15 | Before return ...; | ExitMethods.cs:11:9:11:15 | return ...; | +| ExitMethods.cs:11:9:11:15 | return ...; | ExitMethods.cs:8:10:8:11 | Normal Exit | +| ExitMethods.cs:14:10:14:11 | Entry | ExitMethods.cs:15:5:18:5 | {...} | +| ExitMethods.cs:14:10:14:11 | Normal Exit | ExitMethods.cs:14:10:14:11 | Exit | | ExitMethods.cs:15:5:18:5 | {...} | ExitMethods.cs:16:9:16:26 | ...; | -| ExitMethods.cs:16:9:16:25 | call to method ErrorMaybe | ExitMethods.cs:17:9:17:15 | return ...; | -| ExitMethods.cs:16:9:16:26 | ...; | ExitMethods.cs:16:20:16:24 | false | +| ExitMethods.cs:16:9:16:25 | After call to method ErrorMaybe | ExitMethods.cs:16:9:16:26 | After ...; | +| ExitMethods.cs:16:9:16:25 | Before call to method ErrorMaybe | ExitMethods.cs:16:20:16:24 | false | +| ExitMethods.cs:16:9:16:25 | call to method ErrorMaybe | ExitMethods.cs:16:9:16:25 | After call to method ErrorMaybe | +| ExitMethods.cs:16:9:16:26 | ...; | ExitMethods.cs:16:9:16:25 | Before call to method ErrorMaybe | +| ExitMethods.cs:16:9:16:26 | After ...; | ExitMethods.cs:17:9:17:15 | Before return ...; | | ExitMethods.cs:16:20:16:24 | false | ExitMethods.cs:16:9:16:25 | call to method ErrorMaybe | -| ExitMethods.cs:17:9:17:15 | return ...; | ExitMethods.cs:14:10:14:11 | exit M2 (normal) | -| ExitMethods.cs:20:10:20:11 | enter M3 | ExitMethods.cs:21:5:24:5 | {...} | -| ExitMethods.cs:20:10:20:11 | exit M3 (abnormal) | ExitMethods.cs:20:10:20:11 | exit M3 | +| ExitMethods.cs:17:9:17:15 | Before return ...; | ExitMethods.cs:17:9:17:15 | return ...; | +| ExitMethods.cs:17:9:17:15 | return ...; | ExitMethods.cs:14:10:14:11 | Normal Exit | +| ExitMethods.cs:20:10:20:11 | Entry | ExitMethods.cs:21:5:24:5 | {...} | +| ExitMethods.cs:20:10:20:11 | Exceptional Exit | ExitMethods.cs:20:10:20:11 | Exit | | ExitMethods.cs:21:5:24:5 | {...} | ExitMethods.cs:22:9:22:26 | ...; | -| ExitMethods.cs:22:9:22:25 | call to method ErrorAlways | ExitMethods.cs:20:10:20:11 | exit M3 (abnormal) | -| ExitMethods.cs:22:9:22:26 | ...; | ExitMethods.cs:22:21:22:24 | true | +| ExitMethods.cs:22:9:22:25 | Before call to method ErrorAlways | ExitMethods.cs:22:21:22:24 | true | +| ExitMethods.cs:22:9:22:25 | call to method ErrorAlways | ExitMethods.cs:20:10:20:11 | Exceptional Exit | +| ExitMethods.cs:22:9:22:26 | ...; | ExitMethods.cs:22:9:22:25 | Before call to method ErrorAlways | | ExitMethods.cs:22:21:22:24 | true | ExitMethods.cs:22:9:22:25 | call to method ErrorAlways | -| ExitMethods.cs:26:10:26:11 | enter M4 | ExitMethods.cs:27:5:30:5 | {...} | -| ExitMethods.cs:26:10:26:11 | exit M4 (abnormal) | ExitMethods.cs:26:10:26:11 | exit M4 | +| ExitMethods.cs:26:10:26:11 | Entry | ExitMethods.cs:27:5:30:5 | {...} | +| ExitMethods.cs:26:10:26:11 | Exceptional Exit | ExitMethods.cs:26:10:26:11 | Exit | | ExitMethods.cs:27:5:30:5 | {...} | ExitMethods.cs:28:9:28:15 | ...; | -| ExitMethods.cs:28:9:28:14 | call to method Exit | ExitMethods.cs:26:10:26:11 | exit M4 (abnormal) | +| ExitMethods.cs:28:9:28:14 | Before call to method Exit | ExitMethods.cs:28:9:28:14 | this access | +| ExitMethods.cs:28:9:28:14 | call to method Exit | ExitMethods.cs:26:10:26:11 | Exceptional Exit | | ExitMethods.cs:28:9:28:14 | this access | ExitMethods.cs:28:9:28:14 | call to method Exit | -| ExitMethods.cs:28:9:28:15 | ...; | ExitMethods.cs:28:9:28:14 | this access | -| ExitMethods.cs:32:10:32:11 | enter M5 | ExitMethods.cs:33:5:36:5 | {...} | -| ExitMethods.cs:32:10:32:11 | exit M5 (abnormal) | ExitMethods.cs:32:10:32:11 | exit M5 | +| ExitMethods.cs:28:9:28:15 | ...; | ExitMethods.cs:28:9:28:14 | Before call to method Exit | +| ExitMethods.cs:32:10:32:11 | Entry | ExitMethods.cs:33:5:36:5 | {...} | +| ExitMethods.cs:32:10:32:11 | Exceptional Exit | ExitMethods.cs:32:10:32:11 | Exit | | ExitMethods.cs:33:5:36:5 | {...} | ExitMethods.cs:34:9:34:26 | ...; | -| ExitMethods.cs:34:9:34:25 | call to method ApplicationExit | ExitMethods.cs:32:10:32:11 | exit M5 (abnormal) | +| ExitMethods.cs:34:9:34:25 | Before call to method ApplicationExit | ExitMethods.cs:34:9:34:25 | this access | +| ExitMethods.cs:34:9:34:25 | call to method ApplicationExit | ExitMethods.cs:32:10:32:11 | Exceptional Exit | | ExitMethods.cs:34:9:34:25 | this access | ExitMethods.cs:34:9:34:25 | call to method ApplicationExit | -| ExitMethods.cs:34:9:34:26 | ...; | ExitMethods.cs:34:9:34:25 | this access | -| ExitMethods.cs:38:10:38:11 | enter M6 | ExitMethods.cs:39:5:52:5 | {...} | -| ExitMethods.cs:38:10:38:11 | exit M6 (normal) | ExitMethods.cs:38:10:38:11 | exit M6 | +| ExitMethods.cs:34:9:34:26 | ...; | ExitMethods.cs:34:9:34:25 | Before call to method ApplicationExit | +| ExitMethods.cs:38:10:38:11 | Entry | ExitMethods.cs:39:5:52:5 | {...} | | ExitMethods.cs:39:5:52:5 | {...} | ExitMethods.cs:40:9:51:9 | try {...} ... | | ExitMethods.cs:40:9:51:9 | try {...} ... | ExitMethods.cs:41:9:43:9 | {...} | | ExitMethods.cs:41:9:43:9 | {...} | ExitMethods.cs:42:13:42:31 | ...; | +| ExitMethods.cs:42:13:42:30 | Before call to method ErrorAlways | ExitMethods.cs:42:25:42:29 | false | | ExitMethods.cs:42:13:42:30 | call to method ErrorAlways | ExitMethods.cs:44:9:47:9 | catch (...) {...} | -| ExitMethods.cs:42:13:42:31 | ...; | ExitMethods.cs:42:25:42:29 | false | +| ExitMethods.cs:42:13:42:31 | ...; | ExitMethods.cs:42:13:42:30 | Before call to method ErrorAlways | | ExitMethods.cs:42:25:42:29 | false | ExitMethods.cs:42:13:42:30 | call to method ErrorAlways | -| ExitMethods.cs:44:9:47:9 | catch (...) {...} | ExitMethods.cs:45:9:47:9 | {...} | -| ExitMethods.cs:44:9:47:9 | catch (...) {...} | ExitMethods.cs:48:9:51:9 | catch (...) {...} | -| ExitMethods.cs:45:9:47:9 | {...} | ExitMethods.cs:46:13:46:19 | return ...; | -| ExitMethods.cs:48:9:51:9 | catch (...) {...} | ExitMethods.cs:49:9:51:9 | {...} | -| ExitMethods.cs:49:9:51:9 | {...} | ExitMethods.cs:50:13:50:19 | return ...; | -| ExitMethods.cs:54:10:54:11 | enter M7 | ExitMethods.cs:55:5:58:5 | {...} | -| ExitMethods.cs:54:10:54:11 | exit M7 (abnormal) | ExitMethods.cs:54:10:54:11 | exit M7 | +| ExitMethods.cs:44:9:47:9 | After catch (...) {...} [match] | ExitMethods.cs:45:9:47:9 | {...} | +| ExitMethods.cs:44:9:47:9 | After catch (...) {...} [no-match] | ExitMethods.cs:48:9:51:9 | catch (...) {...} | +| ExitMethods.cs:44:9:47:9 | catch (...) {...} | ExitMethods.cs:44:9:47:9 | After catch (...) {...} [match] | +| ExitMethods.cs:44:9:47:9 | catch (...) {...} | ExitMethods.cs:44:9:47:9 | After catch (...) {...} [no-match] | +| ExitMethods.cs:45:9:47:9 | {...} | ExitMethods.cs:46:13:46:19 | Before return ...; | +| ExitMethods.cs:46:13:46:19 | Before return ...; | ExitMethods.cs:46:13:46:19 | return ...; | +| ExitMethods.cs:48:9:51:9 | After catch (...) {...} [match] | ExitMethods.cs:49:9:51:9 | {...} | +| ExitMethods.cs:48:9:51:9 | After catch (...) {...} [no-match] | ExitMethods.cs:38:10:38:11 | Exceptional Exit | +| ExitMethods.cs:48:9:51:9 | catch (...) {...} | ExitMethods.cs:48:9:51:9 | After catch (...) {...} [match] | +| ExitMethods.cs:48:9:51:9 | catch (...) {...} | ExitMethods.cs:48:9:51:9 | After catch (...) {...} [no-match] | +| ExitMethods.cs:49:9:51:9 | {...} | ExitMethods.cs:50:13:50:19 | Before return ...; | +| ExitMethods.cs:50:13:50:19 | Before return ...; | ExitMethods.cs:50:13:50:19 | return ...; | +| ExitMethods.cs:54:10:54:11 | Entry | ExitMethods.cs:55:5:58:5 | {...} | +| ExitMethods.cs:54:10:54:11 | Exceptional Exit | ExitMethods.cs:54:10:54:11 | Exit | | ExitMethods.cs:55:5:58:5 | {...} | ExitMethods.cs:56:9:56:23 | ...; | -| ExitMethods.cs:56:9:56:22 | call to method ErrorAlways2 | ExitMethods.cs:54:10:54:11 | exit M7 (abnormal) | -| ExitMethods.cs:56:9:56:23 | ...; | ExitMethods.cs:56:9:56:22 | call to method ErrorAlways2 | -| ExitMethods.cs:60:10:60:11 | enter M8 | ExitMethods.cs:61:5:64:5 | {...} | -| ExitMethods.cs:60:10:60:11 | exit M8 (abnormal) | ExitMethods.cs:60:10:60:11 | exit M8 | +| ExitMethods.cs:56:9:56:22 | Before call to method ErrorAlways2 | ExitMethods.cs:56:9:56:22 | call to method ErrorAlways2 | +| ExitMethods.cs:56:9:56:22 | call to method ErrorAlways2 | ExitMethods.cs:54:10:54:11 | Exceptional Exit | +| ExitMethods.cs:56:9:56:23 | ...; | ExitMethods.cs:56:9:56:22 | Before call to method ErrorAlways2 | +| ExitMethods.cs:60:10:60:11 | Entry | ExitMethods.cs:61:5:64:5 | {...} | +| ExitMethods.cs:60:10:60:11 | Exceptional Exit | ExitMethods.cs:60:10:60:11 | Exit | | ExitMethods.cs:61:5:64:5 | {...} | ExitMethods.cs:62:9:62:23 | ...; | -| ExitMethods.cs:62:9:62:22 | call to method ErrorAlways3 | ExitMethods.cs:60:10:60:11 | exit M8 (abnormal) | -| ExitMethods.cs:62:9:62:23 | ...; | ExitMethods.cs:62:9:62:22 | call to method ErrorAlways3 | -| ExitMethods.cs:66:17:66:26 | enter ErrorMaybe | ExitMethods.cs:67:5:70:5 | {...} | +| ExitMethods.cs:62:9:62:22 | Before call to method ErrorAlways3 | ExitMethods.cs:62:9:62:22 | call to method ErrorAlways3 | +| ExitMethods.cs:62:9:62:22 | call to method ErrorAlways3 | ExitMethods.cs:60:10:60:11 | Exceptional Exit | +| ExitMethods.cs:62:9:62:23 | ...; | ExitMethods.cs:62:9:62:22 | Before call to method ErrorAlways3 | +| ExitMethods.cs:66:17:66:26 | Entry | ExitMethods.cs:66:33:66:33 | b | +| ExitMethods.cs:66:33:66:33 | b | ExitMethods.cs:67:5:70:5 | {...} | +| ExitMethods.cs:67:5:70:5 | After {...} | ExitMethods.cs:66:17:66:26 | Normal Exit | | ExitMethods.cs:67:5:70:5 | {...} | ExitMethods.cs:68:9:69:34 | if (...) ... | +| ExitMethods.cs:68:9:69:34 | After if (...) ... | ExitMethods.cs:67:5:70:5 | After {...} | | ExitMethods.cs:68:9:69:34 | if (...) ... | ExitMethods.cs:68:13:68:13 | access to parameter b | -| ExitMethods.cs:68:13:68:13 | access to parameter b | ExitMethods.cs:66:17:66:26 | exit ErrorMaybe (normal) | -| ExitMethods.cs:68:13:68:13 | access to parameter b | ExitMethods.cs:69:19:69:33 | object creation of type Exception | -| ExitMethods.cs:69:13:69:34 | throw ...; | ExitMethods.cs:66:17:66:26 | exit ErrorMaybe (abnormal) | -| ExitMethods.cs:69:19:69:33 | object creation of type Exception | ExitMethods.cs:69:13:69:34 | throw ...; | -| ExitMethods.cs:72:17:72:27 | enter ErrorAlways | ExitMethods.cs:73:5:78:5 | {...} | -| ExitMethods.cs:72:17:72:27 | exit ErrorAlways (abnormal) | ExitMethods.cs:72:17:72:27 | exit ErrorAlways | +| ExitMethods.cs:68:13:68:13 | After access to parameter b [false] | ExitMethods.cs:68:9:69:34 | After if (...) ... | +| ExitMethods.cs:68:13:68:13 | After access to parameter b [true] | ExitMethods.cs:69:13:69:34 | Before throw ...; | +| ExitMethods.cs:68:13:68:13 | access to parameter b | ExitMethods.cs:68:13:68:13 | After access to parameter b [false] | +| ExitMethods.cs:68:13:68:13 | access to parameter b | ExitMethods.cs:68:13:68:13 | After access to parameter b [true] | +| ExitMethods.cs:69:13:69:34 | Before throw ...; | ExitMethods.cs:69:19:69:33 | Before object creation of type Exception | +| ExitMethods.cs:69:13:69:34 | throw ...; | ExitMethods.cs:66:17:66:26 | Exceptional Exit | +| ExitMethods.cs:69:19:69:33 | After object creation of type Exception | ExitMethods.cs:69:13:69:34 | throw ...; | +| ExitMethods.cs:69:19:69:33 | Before object creation of type Exception | ExitMethods.cs:69:19:69:33 | object creation of type Exception | +| ExitMethods.cs:69:19:69:33 | object creation of type Exception | ExitMethods.cs:69:19:69:33 | After object creation of type Exception | +| ExitMethods.cs:72:17:72:27 | Entry | ExitMethods.cs:72:34:72:34 | b | +| ExitMethods.cs:72:17:72:27 | Exceptional Exit | ExitMethods.cs:72:17:72:27 | Exit | +| ExitMethods.cs:72:34:72:34 | b | ExitMethods.cs:73:5:78:5 | {...} | | ExitMethods.cs:73:5:78:5 | {...} | ExitMethods.cs:74:9:77:45 | if (...) ... | | ExitMethods.cs:74:9:77:45 | if (...) ... | ExitMethods.cs:74:13:74:13 | access to parameter b | -| ExitMethods.cs:74:13:74:13 | access to parameter b | ExitMethods.cs:75:19:75:33 | object creation of type Exception | -| ExitMethods.cs:74:13:74:13 | access to parameter b | ExitMethods.cs:77:41:77:43 | "b" | -| ExitMethods.cs:75:19:75:33 | object creation of type Exception | ExitMethods.cs:75:13:75:34 | throw ...; | -| ExitMethods.cs:77:19:77:44 | object creation of type ArgumentException | ExitMethods.cs:77:13:77:45 | throw ...; | +| ExitMethods.cs:74:13:74:13 | After access to parameter b [false] | ExitMethods.cs:77:13:77:45 | Before throw ...; | +| ExitMethods.cs:74:13:74:13 | After access to parameter b [true] | ExitMethods.cs:75:13:75:34 | Before throw ...; | +| ExitMethods.cs:74:13:74:13 | access to parameter b | ExitMethods.cs:74:13:74:13 | After access to parameter b [false] | +| ExitMethods.cs:74:13:74:13 | access to parameter b | ExitMethods.cs:74:13:74:13 | After access to parameter b [true] | +| ExitMethods.cs:75:13:75:34 | Before throw ...; | ExitMethods.cs:75:19:75:33 | Before object creation of type Exception | +| ExitMethods.cs:75:19:75:33 | After object creation of type Exception | ExitMethods.cs:75:13:75:34 | throw ...; | +| ExitMethods.cs:75:19:75:33 | Before object creation of type Exception | ExitMethods.cs:75:19:75:33 | object creation of type Exception | +| ExitMethods.cs:75:19:75:33 | object creation of type Exception | ExitMethods.cs:75:19:75:33 | After object creation of type Exception | +| ExitMethods.cs:77:13:77:45 | Before throw ...; | ExitMethods.cs:77:19:77:44 | Before object creation of type ArgumentException | +| ExitMethods.cs:77:19:77:44 | After object creation of type ArgumentException | ExitMethods.cs:77:13:77:45 | throw ...; | +| ExitMethods.cs:77:19:77:44 | Before object creation of type ArgumentException | ExitMethods.cs:77:41:77:43 | "b" | +| ExitMethods.cs:77:19:77:44 | object creation of type ArgumentException | ExitMethods.cs:77:19:77:44 | After object creation of type ArgumentException | | ExitMethods.cs:77:41:77:43 | "b" | ExitMethods.cs:77:19:77:44 | object creation of type ArgumentException | -| ExitMethods.cs:80:17:80:28 | enter ErrorAlways2 | ExitMethods.cs:81:5:83:5 | {...} | -| ExitMethods.cs:80:17:80:28 | exit ErrorAlways2 (abnormal) | ExitMethods.cs:80:17:80:28 | exit ErrorAlways2 | -| ExitMethods.cs:81:5:83:5 | {...} | ExitMethods.cs:82:15:82:29 | object creation of type Exception | -| ExitMethods.cs:82:9:82:30 | throw ...; | ExitMethods.cs:80:17:80:28 | exit ErrorAlways2 (abnormal) | -| ExitMethods.cs:82:15:82:29 | object creation of type Exception | ExitMethods.cs:82:9:82:30 | throw ...; | -| ExitMethods.cs:85:17:85:28 | enter ErrorAlways3 | ExitMethods.cs:85:41:85:55 | object creation of type Exception | -| ExitMethods.cs:85:17:85:28 | exit ErrorAlways3 (abnormal) | ExitMethods.cs:85:17:85:28 | exit ErrorAlways3 | -| ExitMethods.cs:85:35:85:55 | throw ... | ExitMethods.cs:85:17:85:28 | exit ErrorAlways3 (abnormal) | -| ExitMethods.cs:85:41:85:55 | object creation of type Exception | ExitMethods.cs:85:35:85:55 | throw ... | -| ExitMethods.cs:87:10:87:13 | enter Exit | ExitMethods.cs:88:5:90:5 | {...} | -| ExitMethods.cs:87:10:87:13 | exit Exit (abnormal) | ExitMethods.cs:87:10:87:13 | exit Exit | +| ExitMethods.cs:80:17:80:28 | Entry | ExitMethods.cs:81:5:83:5 | {...} | +| ExitMethods.cs:80:17:80:28 | Exceptional Exit | ExitMethods.cs:80:17:80:28 | Exit | +| ExitMethods.cs:81:5:83:5 | {...} | ExitMethods.cs:82:9:82:30 | Before throw ...; | +| ExitMethods.cs:82:9:82:30 | Before throw ...; | ExitMethods.cs:82:15:82:29 | Before object creation of type Exception | +| ExitMethods.cs:82:9:82:30 | throw ...; | ExitMethods.cs:80:17:80:28 | Exceptional Exit | +| ExitMethods.cs:82:15:82:29 | After object creation of type Exception | ExitMethods.cs:82:9:82:30 | throw ...; | +| ExitMethods.cs:82:15:82:29 | Before object creation of type Exception | ExitMethods.cs:82:15:82:29 | object creation of type Exception | +| ExitMethods.cs:82:15:82:29 | object creation of type Exception | ExitMethods.cs:82:15:82:29 | After object creation of type Exception | +| ExitMethods.cs:85:17:85:28 | Entry | ExitMethods.cs:85:35:85:55 | Before throw ... | +| ExitMethods.cs:85:17:85:28 | Exceptional Exit | ExitMethods.cs:85:17:85:28 | Exit | +| ExitMethods.cs:85:35:85:55 | Before throw ... | ExitMethods.cs:85:41:85:55 | Before object creation of type Exception | +| ExitMethods.cs:85:35:85:55 | throw ... | ExitMethods.cs:85:17:85:28 | Exceptional Exit | +| ExitMethods.cs:85:41:85:55 | After object creation of type Exception | ExitMethods.cs:85:35:85:55 | throw ... | +| ExitMethods.cs:85:41:85:55 | Before object creation of type Exception | ExitMethods.cs:85:41:85:55 | object creation of type Exception | +| ExitMethods.cs:85:41:85:55 | object creation of type Exception | ExitMethods.cs:85:41:85:55 | After object creation of type Exception | +| ExitMethods.cs:87:10:87:13 | Entry | ExitMethods.cs:88:5:90:5 | {...} | +| ExitMethods.cs:87:10:87:13 | Exceptional Exit | ExitMethods.cs:87:10:87:13 | Exit | | ExitMethods.cs:88:5:90:5 | {...} | ExitMethods.cs:89:9:89:28 | ...; | -| ExitMethods.cs:89:9:89:27 | call to method Exit | ExitMethods.cs:87:10:87:13 | exit Exit (abnormal) | -| ExitMethods.cs:89:9:89:28 | ...; | ExitMethods.cs:89:26:89:26 | 0 | +| ExitMethods.cs:89:9:89:27 | Before call to method Exit | ExitMethods.cs:89:26:89:26 | 0 | +| ExitMethods.cs:89:9:89:27 | call to method Exit | ExitMethods.cs:87:10:87:13 | Exceptional Exit | +| ExitMethods.cs:89:9:89:28 | ...; | ExitMethods.cs:89:9:89:27 | Before call to method Exit | | ExitMethods.cs:89:26:89:26 | 0 | ExitMethods.cs:89:9:89:27 | call to method Exit | -| ExitMethods.cs:92:10:92:18 | enter ExitInTry | ExitMethods.cs:93:5:103:5 | {...} | -| ExitMethods.cs:92:10:92:18 | exit ExitInTry (abnormal) | ExitMethods.cs:92:10:92:18 | exit ExitInTry | +| ExitMethods.cs:92:10:92:18 | Entry | ExitMethods.cs:93:5:103:5 | {...} | +| ExitMethods.cs:93:5:103:5 | After {...} | ExitMethods.cs:92:10:92:18 | Normal Exit | | ExitMethods.cs:93:5:103:5 | {...} | ExitMethods.cs:94:9:102:9 | try {...} ... | +| ExitMethods.cs:94:9:102:9 | After try {...} ... | ExitMethods.cs:93:5:103:5 | After {...} | | ExitMethods.cs:94:9:102:9 | try {...} ... | ExitMethods.cs:95:9:97:9 | {...} | | ExitMethods.cs:95:9:97:9 | {...} | ExitMethods.cs:96:13:96:19 | ...; | -| ExitMethods.cs:96:13:96:18 | call to method Exit | ExitMethods.cs:92:10:92:18 | exit ExitInTry (abnormal) | +| ExitMethods.cs:96:13:96:18 | Before call to method Exit | ExitMethods.cs:96:13:96:18 | this access | +| ExitMethods.cs:96:13:96:18 | call to method Exit | ExitMethods.cs:99:9:102:9 | {...} | | ExitMethods.cs:96:13:96:18 | this access | ExitMethods.cs:96:13:96:18 | call to method Exit | -| ExitMethods.cs:96:13:96:19 | ...; | ExitMethods.cs:96:13:96:18 | this access | -| ExitMethods.cs:105:10:105:24 | enter ApplicationExit | ExitMethods.cs:106:5:108:5 | {...} | -| ExitMethods.cs:105:10:105:24 | exit ApplicationExit (abnormal) | ExitMethods.cs:105:10:105:24 | exit ApplicationExit | +| ExitMethods.cs:96:13:96:19 | ...; | ExitMethods.cs:96:13:96:18 | Before call to method Exit | +| ExitMethods.cs:99:9:102:9 | After {...} | ExitMethods.cs:92:10:92:18 | Exceptional Exit | +| ExitMethods.cs:99:9:102:9 | After {...} | ExitMethods.cs:94:9:102:9 | After try {...} ... | +| ExitMethods.cs:99:9:102:9 | {...} | ExitMethods.cs:101:13:101:41 | ...; | +| ExitMethods.cs:101:13:101:40 | After call to method WriteLine | ExitMethods.cs:101:13:101:41 | After ...; | +| ExitMethods.cs:101:13:101:40 | Before call to method WriteLine | ExitMethods.cs:101:38:101:39 | "" | +| ExitMethods.cs:101:13:101:40 | call to method WriteLine | ExitMethods.cs:101:13:101:40 | After call to method WriteLine | +| ExitMethods.cs:101:13:101:41 | ...; | ExitMethods.cs:101:13:101:40 | Before call to method WriteLine | +| ExitMethods.cs:101:13:101:41 | After ...; | ExitMethods.cs:99:9:102:9 | After {...} | +| ExitMethods.cs:101:38:101:39 | "" | ExitMethods.cs:101:13:101:40 | call to method WriteLine | +| ExitMethods.cs:105:10:105:24 | Entry | ExitMethods.cs:106:5:108:5 | {...} | +| ExitMethods.cs:105:10:105:24 | Exceptional Exit | ExitMethods.cs:105:10:105:24 | Exit | | ExitMethods.cs:106:5:108:5 | {...} | ExitMethods.cs:107:9:107:48 | ...; | -| ExitMethods.cs:107:9:107:47 | call to method Exit | ExitMethods.cs:105:10:105:24 | exit ApplicationExit (abnormal) | -| ExitMethods.cs:107:9:107:48 | ...; | ExitMethods.cs:107:9:107:47 | call to method Exit | -| ExitMethods.cs:110:13:110:21 | enter ThrowExpr | ExitMethods.cs:111:5:113:5 | {...} | -| ExitMethods.cs:111:5:113:5 | {...} | ExitMethods.cs:112:16:112:20 | access to parameter input | -| ExitMethods.cs:112:9:112:77 | return ...; | ExitMethods.cs:110:13:110:21 | exit ThrowExpr (normal) | -| ExitMethods.cs:112:16:112:20 | access to parameter input | ExitMethods.cs:112:25:112:25 | 0 | -| ExitMethods.cs:112:16:112:25 | ... != ... | ExitMethods.cs:112:29:112:29 | 1 | -| ExitMethods.cs:112:16:112:25 | ... != ... | ExitMethods.cs:112:69:112:75 | "input" | -| ExitMethods.cs:112:16:112:76 | ... ? ... : ... | ExitMethods.cs:112:9:112:77 | return ...; | +| ExitMethods.cs:107:9:107:47 | Before call to method Exit | ExitMethods.cs:107:9:107:47 | call to method Exit | +| ExitMethods.cs:107:9:107:47 | call to method Exit | ExitMethods.cs:105:10:105:24 | Exceptional Exit | +| ExitMethods.cs:107:9:107:48 | ...; | ExitMethods.cs:107:9:107:47 | Before call to method Exit | +| ExitMethods.cs:110:13:110:21 | Entry | ExitMethods.cs:110:31:110:35 | input | +| ExitMethods.cs:110:31:110:35 | input | ExitMethods.cs:111:5:113:5 | {...} | +| ExitMethods.cs:111:5:113:5 | {...} | ExitMethods.cs:112:9:112:77 | Before return ...; | +| ExitMethods.cs:112:9:112:77 | Before return ...; | ExitMethods.cs:112:16:112:76 | ... ? ... : ... | +| ExitMethods.cs:112:9:112:77 | return ...; | ExitMethods.cs:110:13:110:21 | Normal Exit | +| ExitMethods.cs:112:16:112:20 | access to parameter input | ExitMethods.cs:112:25:112:25 | Before (...) ... | +| ExitMethods.cs:112:16:112:25 | ... != ... | ExitMethods.cs:112:16:112:25 | After ... != ... [false] | +| ExitMethods.cs:112:16:112:25 | ... != ... | ExitMethods.cs:112:16:112:25 | After ... != ... [true] | +| ExitMethods.cs:112:16:112:25 | After ... != ... [false] | ExitMethods.cs:112:41:112:76 | Before throw ... | +| ExitMethods.cs:112:16:112:25 | After ... != ... [true] | ExitMethods.cs:112:29:112:37 | Before ... / ... | +| ExitMethods.cs:112:16:112:25 | Before ... != ... | ExitMethods.cs:112:16:112:20 | access to parameter input | +| ExitMethods.cs:112:16:112:76 | ... ? ... : ... | ExitMethods.cs:112:16:112:25 | Before ... != ... | +| ExitMethods.cs:112:16:112:76 | After ... ? ... : ... | ExitMethods.cs:112:9:112:77 | return ...; | | ExitMethods.cs:112:25:112:25 | 0 | ExitMethods.cs:112:25:112:25 | (...) ... | -| ExitMethods.cs:112:25:112:25 | (...) ... | ExitMethods.cs:112:16:112:25 | ... != ... | +| ExitMethods.cs:112:25:112:25 | (...) ... | ExitMethods.cs:112:25:112:25 | After (...) ... | +| ExitMethods.cs:112:25:112:25 | After (...) ... | ExitMethods.cs:112:16:112:25 | ... != ... | +| ExitMethods.cs:112:25:112:25 | Before (...) ... | ExitMethods.cs:112:25:112:25 | 0 | | ExitMethods.cs:112:29:112:29 | 1 | ExitMethods.cs:112:29:112:29 | (...) ... | -| ExitMethods.cs:112:29:112:29 | (...) ... | ExitMethods.cs:112:33:112:37 | access to parameter input | -| ExitMethods.cs:112:29:112:37 | ... / ... | ExitMethods.cs:112:16:112:76 | ... ? ... : ... | +| ExitMethods.cs:112:29:112:29 | (...) ... | ExitMethods.cs:112:29:112:29 | After (...) ... | +| ExitMethods.cs:112:29:112:29 | After (...) ... | ExitMethods.cs:112:33:112:37 | access to parameter input | +| ExitMethods.cs:112:29:112:29 | Before (...) ... | ExitMethods.cs:112:29:112:29 | 1 | +| ExitMethods.cs:112:29:112:37 | ... / ... | ExitMethods.cs:112:29:112:37 | After ... / ... | +| ExitMethods.cs:112:29:112:37 | After ... / ... | ExitMethods.cs:112:16:112:76 | After ... ? ... : ... | +| ExitMethods.cs:112:29:112:37 | Before ... / ... | ExitMethods.cs:112:29:112:29 | Before (...) ... | | ExitMethods.cs:112:33:112:37 | access to parameter input | ExitMethods.cs:112:29:112:37 | ... / ... | -| ExitMethods.cs:112:41:112:76 | throw ... | ExitMethods.cs:110:13:110:21 | exit ThrowExpr (abnormal) | -| ExitMethods.cs:112:47:112:76 | object creation of type ArgumentException | ExitMethods.cs:112:41:112:76 | throw ... | +| ExitMethods.cs:112:41:112:76 | Before throw ... | ExitMethods.cs:112:47:112:76 | Before object creation of type ArgumentException | +| ExitMethods.cs:112:41:112:76 | throw ... | ExitMethods.cs:110:13:110:21 | Exceptional Exit | +| ExitMethods.cs:112:47:112:76 | After object creation of type ArgumentException | ExitMethods.cs:112:41:112:76 | throw ... | +| ExitMethods.cs:112:47:112:76 | Before object creation of type ArgumentException | ExitMethods.cs:112:69:112:75 | "input" | +| ExitMethods.cs:112:47:112:76 | object creation of type ArgumentException | ExitMethods.cs:112:47:112:76 | After object creation of type ArgumentException | | ExitMethods.cs:112:69:112:75 | "input" | ExitMethods.cs:112:47:112:76 | object creation of type ArgumentException | -| ExitMethods.cs:115:16:115:34 | enter ExtensionMethodCall | ExitMethods.cs:116:5:118:5 | {...} | -| ExitMethods.cs:115:16:115:34 | exit ExtensionMethodCall (normal) | ExitMethods.cs:115:16:115:34 | exit ExtensionMethodCall | -| ExitMethods.cs:116:5:118:5 | {...} | ExitMethods.cs:117:16:117:16 | access to parameter s | -| ExitMethods.cs:117:9:117:39 | return ...; | ExitMethods.cs:115:16:115:34 | exit ExtensionMethodCall (normal) | +| ExitMethods.cs:115:16:115:34 | Entry | ExitMethods.cs:115:43:115:43 | s | +| ExitMethods.cs:115:16:115:34 | Normal Exit | ExitMethods.cs:115:16:115:34 | Exit | +| ExitMethods.cs:115:43:115:43 | s | ExitMethods.cs:116:5:118:5 | {...} | +| ExitMethods.cs:116:5:118:5 | {...} | ExitMethods.cs:117:9:117:39 | Before return ...; | +| ExitMethods.cs:117:9:117:39 | Before return ...; | ExitMethods.cs:117:16:117:38 | ... ? ... : ... | +| ExitMethods.cs:117:9:117:39 | return ...; | ExitMethods.cs:115:16:115:34 | Normal Exit | | ExitMethods.cs:117:16:117:16 | access to parameter s | ExitMethods.cs:117:27:117:29 | - | -| ExitMethods.cs:117:16:117:30 | call to method Contains | ExitMethods.cs:117:34:117:34 | 0 | -| ExitMethods.cs:117:16:117:30 | call to method Contains | ExitMethods.cs:117:38:117:38 | 1 | -| ExitMethods.cs:117:16:117:38 | ... ? ... : ... | ExitMethods.cs:117:9:117:39 | return ...; | +| ExitMethods.cs:117:16:117:30 | After call to method Contains [false] | ExitMethods.cs:117:38:117:38 | 1 | +| ExitMethods.cs:117:16:117:30 | After call to method Contains [true] | ExitMethods.cs:117:34:117:34 | 0 | +| ExitMethods.cs:117:16:117:30 | Before call to method Contains | ExitMethods.cs:117:16:117:16 | access to parameter s | +| ExitMethods.cs:117:16:117:30 | call to method Contains | ExitMethods.cs:117:16:117:30 | After call to method Contains [false] | +| ExitMethods.cs:117:16:117:30 | call to method Contains | ExitMethods.cs:117:16:117:30 | After call to method Contains [true] | +| ExitMethods.cs:117:16:117:38 | ... ? ... : ... | ExitMethods.cs:117:16:117:30 | Before call to method Contains | +| ExitMethods.cs:117:16:117:38 | After ... ? ... : ... | ExitMethods.cs:117:9:117:39 | return ...; | | ExitMethods.cs:117:27:117:29 | - | ExitMethods.cs:117:16:117:30 | call to method Contains | -| ExitMethods.cs:120:17:120:32 | enter FailingAssertion | ExitMethods.cs:121:5:124:5 | {...} | -| ExitMethods.cs:120:17:120:32 | exit FailingAssertion (abnormal) | ExitMethods.cs:120:17:120:32 | exit FailingAssertion | +| ExitMethods.cs:120:17:120:32 | Entry | ExitMethods.cs:121:5:124:5 | {...} | +| ExitMethods.cs:120:17:120:32 | Exceptional Exit | ExitMethods.cs:120:17:120:32 | Exit | | ExitMethods.cs:121:5:124:5 | {...} | ExitMethods.cs:122:9:122:29 | ...; | -| ExitMethods.cs:122:9:122:28 | call to method IsTrue | ExitMethods.cs:120:17:120:32 | exit FailingAssertion (abnormal) | -| ExitMethods.cs:122:9:122:29 | ...; | ExitMethods.cs:122:23:122:27 | false | +| ExitMethods.cs:122:9:122:28 | Before call to method IsTrue | ExitMethods.cs:122:23:122:27 | false | +| ExitMethods.cs:122:9:122:28 | call to method IsTrue | ExitMethods.cs:120:17:120:32 | Exceptional Exit | +| ExitMethods.cs:122:9:122:29 | ...; | ExitMethods.cs:122:9:122:28 | Before call to method IsTrue | | ExitMethods.cs:122:23:122:27 | false | ExitMethods.cs:122:9:122:28 | call to method IsTrue | -| ExitMethods.cs:126:17:126:33 | enter FailingAssertion2 | ExitMethods.cs:127:5:130:5 | {...} | -| ExitMethods.cs:126:17:126:33 | exit FailingAssertion2 (abnormal) | ExitMethods.cs:126:17:126:33 | exit FailingAssertion2 | +| ExitMethods.cs:126:17:126:33 | Entry | ExitMethods.cs:127:5:130:5 | {...} | +| ExitMethods.cs:126:17:126:33 | Exceptional Exit | ExitMethods.cs:126:17:126:33 | Exit | | ExitMethods.cs:127:5:130:5 | {...} | ExitMethods.cs:128:9:128:27 | ...; | -| ExitMethods.cs:128:9:128:26 | call to method FailingAssertion | ExitMethods.cs:126:17:126:33 | exit FailingAssertion2 (abnormal) | +| ExitMethods.cs:128:9:128:26 | Before call to method FailingAssertion | ExitMethods.cs:128:9:128:26 | this access | +| ExitMethods.cs:128:9:128:26 | call to method FailingAssertion | ExitMethods.cs:126:17:126:33 | Exceptional Exit | | ExitMethods.cs:128:9:128:26 | this access | ExitMethods.cs:128:9:128:26 | call to method FailingAssertion | -| ExitMethods.cs:128:9:128:27 | ...; | ExitMethods.cs:128:9:128:26 | this access | -| ExitMethods.cs:132:10:132:20 | enter AssertFalse | ExitMethods.cs:132:48:132:48 | access to parameter b | -| ExitMethods.cs:132:33:132:49 | call to method IsFalse | ExitMethods.cs:132:10:132:20 | exit AssertFalse (abnormal) | -| ExitMethods.cs:132:33:132:49 | call to method IsFalse | ExitMethods.cs:132:10:132:20 | exit AssertFalse (normal) | +| ExitMethods.cs:128:9:128:27 | ...; | ExitMethods.cs:128:9:128:26 | Before call to method FailingAssertion | +| ExitMethods.cs:132:10:132:20 | Entry | ExitMethods.cs:132:27:132:27 | b | +| ExitMethods.cs:132:27:132:27 | b | ExitMethods.cs:132:33:132:49 | Before call to method IsFalse | +| ExitMethods.cs:132:33:132:49 | After call to method IsFalse | ExitMethods.cs:132:10:132:20 | Normal Exit | +| ExitMethods.cs:132:33:132:49 | Before call to method IsFalse | ExitMethods.cs:132:48:132:48 | access to parameter b | +| ExitMethods.cs:132:33:132:49 | call to method IsFalse | ExitMethods.cs:132:10:132:20 | Exceptional Exit | +| ExitMethods.cs:132:33:132:49 | call to method IsFalse | ExitMethods.cs:132:33:132:49 | After call to method IsFalse | | ExitMethods.cs:132:48:132:48 | access to parameter b | ExitMethods.cs:132:33:132:49 | call to method IsFalse | -| ExitMethods.cs:134:17:134:33 | enter FailingAssertion3 | ExitMethods.cs:135:5:138:5 | {...} | -| ExitMethods.cs:134:17:134:33 | exit FailingAssertion3 (abnormal) | ExitMethods.cs:134:17:134:33 | exit FailingAssertion3 | +| ExitMethods.cs:134:17:134:33 | Entry | ExitMethods.cs:135:5:138:5 | {...} | +| ExitMethods.cs:134:17:134:33 | Exceptional Exit | ExitMethods.cs:134:17:134:33 | Exit | | ExitMethods.cs:135:5:138:5 | {...} | ExitMethods.cs:136:9:136:26 | ...; | -| ExitMethods.cs:136:9:136:25 | call to method AssertFalse | ExitMethods.cs:134:17:134:33 | exit FailingAssertion3 (abnormal) | +| ExitMethods.cs:136:9:136:25 | Before call to method AssertFalse | ExitMethods.cs:136:9:136:25 | this access | +| ExitMethods.cs:136:9:136:25 | call to method AssertFalse | ExitMethods.cs:134:17:134:33 | Exceptional Exit | | ExitMethods.cs:136:9:136:25 | this access | ExitMethods.cs:136:21:136:24 | true | -| ExitMethods.cs:136:9:136:26 | ...; | ExitMethods.cs:136:9:136:25 | this access | +| ExitMethods.cs:136:9:136:26 | ...; | ExitMethods.cs:136:9:136:25 | Before call to method AssertFalse | | ExitMethods.cs:136:21:136:24 | true | ExitMethods.cs:136:9:136:25 | call to method AssertFalse | -| ExitMethods.cs:140:17:140:42 | enter ExceptionDispatchInfoThrow | ExitMethods.cs:141:5:147:5 | {...} | -| ExitMethods.cs:140:17:140:42 | exit ExceptionDispatchInfoThrow (abnormal) | ExitMethods.cs:140:17:140:42 | exit ExceptionDispatchInfoThrow | +| ExitMethods.cs:140:17:140:42 | Entry | ExitMethods.cs:140:49:140:49 | b | +| ExitMethods.cs:140:17:140:42 | Exceptional Exit | ExitMethods.cs:140:17:140:42 | Exit | +| ExitMethods.cs:140:49:140:49 | b | ExitMethods.cs:140:70:140:70 | e | +| ExitMethods.cs:140:70:140:70 | e | ExitMethods.cs:141:5:147:5 | {...} | | ExitMethods.cs:141:5:147:5 | {...} | ExitMethods.cs:142:9:145:53 | if (...) ... | | ExitMethods.cs:142:9:145:53 | if (...) ... | ExitMethods.cs:142:13:142:13 | access to parameter b | -| ExitMethods.cs:142:13:142:13 | access to parameter b | ExitMethods.cs:143:13:143:43 | ...; | -| ExitMethods.cs:142:13:142:13 | access to parameter b | ExitMethods.cs:145:13:145:53 | ...; | -| ExitMethods.cs:143:13:143:43 | ...; | ExitMethods.cs:143:41:143:41 | access to parameter e | +| ExitMethods.cs:142:13:142:13 | After access to parameter b [false] | ExitMethods.cs:145:13:145:53 | ...; | +| ExitMethods.cs:142:13:142:13 | After access to parameter b [true] | ExitMethods.cs:143:13:143:43 | ...; | +| ExitMethods.cs:142:13:142:13 | access to parameter b | ExitMethods.cs:142:13:142:13 | After access to parameter b [false] | +| ExitMethods.cs:142:13:142:13 | access to parameter b | ExitMethods.cs:142:13:142:13 | After access to parameter b [true] | +| ExitMethods.cs:143:13:143:42 | Before call to method Throw | ExitMethods.cs:143:41:143:41 | access to parameter e | +| ExitMethods.cs:143:13:143:43 | ...; | ExitMethods.cs:143:13:143:42 | Before call to method Throw | | ExitMethods.cs:143:41:143:41 | access to parameter e | ExitMethods.cs:143:13:143:42 | call to method Throw | -| ExitMethods.cs:145:13:145:44 | call to method Capture | ExitMethods.cs:145:13:145:52 | call to method Throw | -| ExitMethods.cs:145:13:145:53 | ...; | ExitMethods.cs:145:43:145:43 | access to parameter e | +| ExitMethods.cs:145:13:145:44 | After call to method Capture | ExitMethods.cs:145:13:145:52 | call to method Throw | +| ExitMethods.cs:145:13:145:44 | Before call to method Capture | ExitMethods.cs:145:43:145:43 | access to parameter e | +| ExitMethods.cs:145:13:145:44 | call to method Capture | ExitMethods.cs:145:13:145:44 | After call to method Capture | +| ExitMethods.cs:145:13:145:52 | Before call to method Throw | ExitMethods.cs:145:13:145:44 | Before call to method Capture | +| ExitMethods.cs:145:13:145:53 | ...; | ExitMethods.cs:145:13:145:52 | Before call to method Throw | | ExitMethods.cs:145:43:145:43 | access to parameter e | ExitMethods.cs:145:13:145:44 | call to method Capture | -| Extensions.cs:5:23:5:29 | enter ToInt32 | Extensions.cs:6:5:8:5 | {...} | -| Extensions.cs:5:23:5:29 | exit ToInt32 (normal) | Extensions.cs:5:23:5:29 | exit ToInt32 | -| Extensions.cs:6:5:8:5 | {...} | Extensions.cs:7:28:7:28 | access to parameter s | -| Extensions.cs:7:9:7:30 | return ...; | Extensions.cs:5:23:5:29 | exit ToInt32 (normal) | -| Extensions.cs:7:16:7:29 | call to method Parse | Extensions.cs:7:9:7:30 | return ...; | +| Extensions.cs:5:23:5:29 | Entry | Extensions.cs:5:43:5:43 | s | +| Extensions.cs:5:23:5:29 | Normal Exit | Extensions.cs:5:23:5:29 | Exit | +| Extensions.cs:5:43:5:43 | s | Extensions.cs:6:5:8:5 | {...} | +| Extensions.cs:6:5:8:5 | {...} | Extensions.cs:7:9:7:30 | Before return ...; | +| Extensions.cs:7:9:7:30 | Before return ...; | Extensions.cs:7:16:7:29 | Before call to method Parse | +| Extensions.cs:7:9:7:30 | return ...; | Extensions.cs:5:23:5:29 | Normal Exit | +| Extensions.cs:7:16:7:29 | After call to method Parse | Extensions.cs:7:9:7:30 | return ...; | +| Extensions.cs:7:16:7:29 | Before call to method Parse | Extensions.cs:7:28:7:28 | access to parameter s | +| Extensions.cs:7:16:7:29 | call to method Parse | Extensions.cs:7:16:7:29 | After call to method Parse | | Extensions.cs:7:28:7:28 | access to parameter s | Extensions.cs:7:16:7:29 | call to method Parse | -| Extensions.cs:10:24:10:29 | enter ToBool | Extensions.cs:11:5:13:5 | {...} | -| Extensions.cs:10:24:10:29 | exit ToBool (normal) | Extensions.cs:10:24:10:29 | exit ToBool | -| Extensions.cs:11:5:13:5 | {...} | Extensions.cs:12:16:12:16 | access to parameter f | -| Extensions.cs:12:9:12:20 | return ...; | Extensions.cs:10:24:10:29 | exit ToBool (normal) | +| Extensions.cs:10:24:10:29 | Entry | Extensions.cs:10:43:10:43 | s | +| Extensions.cs:10:24:10:29 | Normal Exit | Extensions.cs:10:24:10:29 | Exit | +| Extensions.cs:10:43:10:43 | s | Extensions.cs:10:65:10:65 | f | +| Extensions.cs:10:65:10:65 | f | Extensions.cs:11:5:13:5 | {...} | +| Extensions.cs:11:5:13:5 | {...} | Extensions.cs:12:9:12:20 | Before return ...; | +| Extensions.cs:12:9:12:20 | Before return ...; | Extensions.cs:12:16:12:19 | Before delegate call | +| Extensions.cs:12:9:12:20 | return ...; | Extensions.cs:10:24:10:29 | Normal Exit | | Extensions.cs:12:16:12:16 | access to parameter f | Extensions.cs:12:18:12:18 | access to parameter s | -| Extensions.cs:12:16:12:19 | delegate call | Extensions.cs:12:9:12:20 | return ...; | +| Extensions.cs:12:16:12:19 | After delegate call | Extensions.cs:12:9:12:20 | return ...; | +| Extensions.cs:12:16:12:19 | Before delegate call | Extensions.cs:12:16:12:16 | access to parameter f | +| Extensions.cs:12:16:12:19 | delegate call | Extensions.cs:12:16:12:19 | After delegate call | | Extensions.cs:12:18:12:18 | access to parameter s | Extensions.cs:12:16:12:19 | delegate call | -| Extensions.cs:15:23:15:33 | enter CallToInt32 | Extensions.cs:15:48:15:50 | "0" | -| Extensions.cs:15:23:15:33 | exit CallToInt32 (normal) | Extensions.cs:15:23:15:33 | exit CallToInt32 | -| Extensions.cs:15:40:15:51 | call to method ToInt32 | Extensions.cs:15:23:15:33 | exit CallToInt32 (normal) | +| Extensions.cs:15:23:15:33 | Entry | Extensions.cs:15:40:15:51 | Before call to method ToInt32 | +| Extensions.cs:15:23:15:33 | Normal Exit | Extensions.cs:15:23:15:33 | Exit | +| Extensions.cs:15:40:15:51 | After call to method ToInt32 | Extensions.cs:15:23:15:33 | Normal Exit | +| Extensions.cs:15:40:15:51 | Before call to method ToInt32 | Extensions.cs:15:48:15:50 | "0" | +| Extensions.cs:15:40:15:51 | call to method ToInt32 | Extensions.cs:15:40:15:51 | After call to method ToInt32 | | Extensions.cs:15:48:15:50 | "0" | Extensions.cs:15:40:15:51 | call to method ToInt32 | -| Extensions.cs:20:17:20:20 | enter Main | Extensions.cs:21:5:26:5 | {...} | -| Extensions.cs:20:17:20:20 | exit Main (normal) | Extensions.cs:20:17:20:20 | exit Main | +| Extensions.cs:20:17:20:20 | Entry | Extensions.cs:20:29:20:29 | s | +| Extensions.cs:20:17:20:20 | Normal Exit | Extensions.cs:20:17:20:20 | Exit | +| Extensions.cs:20:29:20:29 | s | Extensions.cs:21:5:26:5 | {...} | +| Extensions.cs:21:5:26:5 | After {...} | Extensions.cs:20:17:20:20 | Normal Exit | | Extensions.cs:21:5:26:5 | {...} | Extensions.cs:22:9:22:20 | ...; | | Extensions.cs:22:9:22:9 | access to parameter s | Extensions.cs:22:9:22:19 | call to method ToInt32 | -| Extensions.cs:22:9:22:19 | call to method ToInt32 | Extensions.cs:23:9:23:31 | ...; | -| Extensions.cs:22:9:22:20 | ...; | Extensions.cs:22:9:22:9 | access to parameter s | -| Extensions.cs:23:9:23:30 | call to method ToInt32 | Extensions.cs:24:9:24:46 | ...; | -| Extensions.cs:23:9:23:31 | ...; | Extensions.cs:23:28:23:29 | "" | +| Extensions.cs:22:9:22:19 | After call to method ToInt32 | Extensions.cs:22:9:22:20 | After ...; | +| Extensions.cs:22:9:22:19 | Before call to method ToInt32 | Extensions.cs:22:9:22:9 | access to parameter s | +| Extensions.cs:22:9:22:19 | call to method ToInt32 | Extensions.cs:22:9:22:19 | After call to method ToInt32 | +| Extensions.cs:22:9:22:20 | ...; | Extensions.cs:22:9:22:19 | Before call to method ToInt32 | +| Extensions.cs:22:9:22:20 | After ...; | Extensions.cs:23:9:23:31 | ...; | +| Extensions.cs:23:9:23:30 | After call to method ToInt32 | Extensions.cs:23:9:23:31 | After ...; | +| Extensions.cs:23:9:23:30 | Before call to method ToInt32 | Extensions.cs:23:28:23:29 | "" | +| Extensions.cs:23:9:23:30 | call to method ToInt32 | Extensions.cs:23:9:23:30 | After call to method ToInt32 | +| Extensions.cs:23:9:23:31 | ...; | Extensions.cs:23:9:23:30 | Before call to method ToInt32 | +| Extensions.cs:23:9:23:31 | After ...; | Extensions.cs:24:9:24:46 | ...; | | Extensions.cs:23:28:23:29 | "" | Extensions.cs:23:9:23:30 | call to method ToInt32 | -| Extensions.cs:24:9:24:45 | call to method ToBool | Extensions.cs:25:9:25:34 | ...; | -| Extensions.cs:24:9:24:46 | ...; | Extensions.cs:24:27:24:32 | "true" | -| Extensions.cs:24:27:24:32 | "true" | Extensions.cs:24:35:24:44 | access to method Parse | +| Extensions.cs:24:9:24:45 | After call to method ToBool | Extensions.cs:24:9:24:46 | After ...; | +| Extensions.cs:24:9:24:45 | Before call to method ToBool | Extensions.cs:24:27:24:32 | "true" | +| Extensions.cs:24:9:24:45 | call to method ToBool | Extensions.cs:24:9:24:45 | After call to method ToBool | +| Extensions.cs:24:9:24:46 | ...; | Extensions.cs:24:9:24:45 | Before call to method ToBool | +| Extensions.cs:24:9:24:46 | After ...; | Extensions.cs:25:9:25:34 | ...; | +| Extensions.cs:24:27:24:32 | "true" | Extensions.cs:24:35:24:44 | Before delegate creation of type Func | +| Extensions.cs:24:35:24:44 | After delegate creation of type Func | Extensions.cs:24:9:24:45 | call to method ToBool | +| Extensions.cs:24:35:24:44 | Before delegate creation of type Func | Extensions.cs:24:35:24:44 | access to method Parse | | Extensions.cs:24:35:24:44 | access to method Parse | Extensions.cs:24:35:24:44 | delegate creation of type Func | -| Extensions.cs:24:35:24:44 | delegate creation of type Func | Extensions.cs:24:9:24:45 | call to method ToBool | -| Extensions.cs:25:9:25:14 | "true" | Extensions.cs:25:23:25:32 | access to method Parse | -| Extensions.cs:25:9:25:33 | call to method ToBool | Extensions.cs:20:17:20:20 | exit Main (normal) | -| Extensions.cs:25:9:25:34 | ...; | Extensions.cs:25:9:25:14 | "true" | +| Extensions.cs:24:35:24:44 | delegate creation of type Func | Extensions.cs:24:35:24:44 | After delegate creation of type Func | +| Extensions.cs:25:9:25:14 | "true" | Extensions.cs:25:23:25:32 | Before delegate creation of type Func | +| Extensions.cs:25:9:25:33 | After call to method ToBool | Extensions.cs:25:9:25:34 | After ...; | +| Extensions.cs:25:9:25:33 | Before call to method ToBool | Extensions.cs:25:9:25:14 | "true" | +| Extensions.cs:25:9:25:33 | call to method ToBool | Extensions.cs:25:9:25:33 | After call to method ToBool | +| Extensions.cs:25:9:25:34 | ...; | Extensions.cs:25:9:25:33 | Before call to method ToBool | +| Extensions.cs:25:9:25:34 | After ...; | Extensions.cs:21:5:26:5 | After {...} | +| Extensions.cs:25:23:25:32 | After delegate creation of type Func | Extensions.cs:25:9:25:33 | call to method ToBool | +| Extensions.cs:25:23:25:32 | Before delegate creation of type Func | Extensions.cs:25:23:25:32 | access to method Parse | | Extensions.cs:25:23:25:32 | access to method Parse | Extensions.cs:25:23:25:32 | delegate creation of type Func | -| Extensions.cs:25:23:25:32 | delegate creation of type Func | Extensions.cs:25:9:25:33 | call to method ToBool | -| Finally.cs:3:14:3:20 | call to constructor Object | Finally.cs:3:14:3:20 | {...} | -| Finally.cs:3:14:3:20 | call to method | Finally.cs:3:14:3:20 | call to constructor Object | -| Finally.cs:3:14:3:20 | enter Finally | Finally.cs:3:14:3:20 | this access | -| Finally.cs:3:14:3:20 | exit Finally (normal) | Finally.cs:3:14:3:20 | exit Finally | +| Extensions.cs:25:23:25:32 | delegate creation of type Func | Extensions.cs:25:23:25:32 | After delegate creation of type Func | +| Finally.cs:3:14:3:20 | After call to constructor Object | Finally.cs:3:14:3:20 | {...} | +| Finally.cs:3:14:3:20 | After call to method | Finally.cs:3:14:3:20 | Before call to constructor Object | +| Finally.cs:3:14:3:20 | Before call to constructor Object | Finally.cs:3:14:3:20 | call to constructor Object | +| Finally.cs:3:14:3:20 | Before call to method | Finally.cs:3:14:3:20 | this access | +| Finally.cs:3:14:3:20 | Entry | Finally.cs:3:14:3:20 | Before call to method | +| Finally.cs:3:14:3:20 | Normal Exit | Finally.cs:3:14:3:20 | Exit | +| Finally.cs:3:14:3:20 | call to constructor Object | Finally.cs:3:14:3:20 | After call to constructor Object | +| Finally.cs:3:14:3:20 | call to method | Finally.cs:3:14:3:20 | After call to method | | Finally.cs:3:14:3:20 | this access | Finally.cs:3:14:3:20 | call to method | -| Finally.cs:3:14:3:20 | {...} | Finally.cs:3:14:3:20 | exit Finally (normal) | -| Finally.cs:7:10:7:11 | enter M1 | Finally.cs:8:5:17:5 | {...} | +| Finally.cs:3:14:3:20 | {...} | Finally.cs:3:14:3:20 | Normal Exit | +| Finally.cs:7:10:7:11 | Entry | Finally.cs:8:5:17:5 | {...} | +| Finally.cs:8:5:17:5 | After {...} | Finally.cs:7:10:7:11 | Normal Exit | | Finally.cs:8:5:17:5 | {...} | Finally.cs:9:9:16:9 | try {...} ... | +| Finally.cs:9:9:16:9 | After try {...} ... | Finally.cs:8:5:17:5 | After {...} | | Finally.cs:9:9:16:9 | try {...} ... | Finally.cs:10:9:12:9 | {...} | | Finally.cs:10:9:12:9 | {...} | Finally.cs:11:13:11:38 | ...; | +| Finally.cs:11:13:11:37 | After call to method WriteLine | Finally.cs:11:13:11:38 | After ...; | +| Finally.cs:11:13:11:37 | Before call to method WriteLine | Finally.cs:11:31:11:36 | "Try1" | +| Finally.cs:11:13:11:37 | call to method WriteLine | Finally.cs:11:13:11:37 | After call to method WriteLine | | Finally.cs:11:13:11:37 | call to method WriteLine | Finally.cs:14:9:16:9 | {...} | -| Finally.cs:11:13:11:38 | ...; | Finally.cs:11:31:11:36 | "Try1" | +| Finally.cs:11:13:11:38 | ...; | Finally.cs:11:13:11:37 | Before call to method WriteLine | +| Finally.cs:11:13:11:38 | After ...; | Finally.cs:10:9:12:9 | After {...} | | Finally.cs:11:31:11:36 | "Try1" | Finally.cs:11:13:11:37 | call to method WriteLine | +| Finally.cs:14:9:16:9 | After {...} | Finally.cs:7:10:7:11 | Exceptional Exit | +| Finally.cs:14:9:16:9 | After {...} | Finally.cs:9:9:16:9 | After try {...} ... | | Finally.cs:14:9:16:9 | {...} | Finally.cs:15:13:15:41 | ...; | -| Finally.cs:15:13:15:40 | call to method WriteLine | Finally.cs:7:10:7:11 | exit M1 (abnormal) | -| Finally.cs:15:13:15:40 | call to method WriteLine | Finally.cs:7:10:7:11 | exit M1 (normal) | -| Finally.cs:15:13:15:41 | ...; | Finally.cs:15:31:15:39 | "Finally" | +| Finally.cs:15:13:15:40 | After call to method WriteLine | Finally.cs:15:13:15:41 | After ...; | +| Finally.cs:15:13:15:40 | Before call to method WriteLine | Finally.cs:15:31:15:39 | "Finally" | +| Finally.cs:15:13:15:40 | call to method WriteLine | Finally.cs:15:13:15:40 | After call to method WriteLine | +| Finally.cs:15:13:15:41 | ...; | Finally.cs:15:13:15:40 | Before call to method WriteLine | +| Finally.cs:15:13:15:41 | After ...; | Finally.cs:14:9:16:9 | After {...} | | Finally.cs:15:31:15:39 | "Finally" | Finally.cs:15:13:15:40 | call to method WriteLine | -| Finally.cs:19:10:19:11 | enter M2 | Finally.cs:20:5:52:5 | {...} | +| Finally.cs:19:10:19:11 | Entry | Finally.cs:20:5:52:5 | {...} | | Finally.cs:20:5:52:5 | {...} | Finally.cs:21:9:51:9 | try {...} ... | +| Finally.cs:21:9:51:9 | After try {...} ... | Finally.cs:20:5:52:5 | After {...} | | Finally.cs:21:9:51:9 | try {...} ... | Finally.cs:22:9:25:9 | {...} | | Finally.cs:22:9:25:9 | {...} | Finally.cs:23:13:23:38 | ...; | -| Finally.cs:23:13:23:37 | call to method WriteLine | Finally.cs:24:13:24:19 | return ...; | +| Finally.cs:23:13:23:37 | After call to method WriteLine | Finally.cs:23:13:23:38 | After ...; | +| Finally.cs:23:13:23:37 | Before call to method WriteLine | Finally.cs:23:31:23:36 | "Try2" | +| Finally.cs:23:13:23:37 | call to method WriteLine | Finally.cs:23:13:23:37 | After call to method WriteLine | | Finally.cs:23:13:23:37 | call to method WriteLine | Finally.cs:26:9:29:9 | catch (...) {...} | -| Finally.cs:23:13:23:38 | ...; | Finally.cs:23:31:23:36 | "Try2" | +| Finally.cs:23:13:23:38 | ...; | Finally.cs:23:13:23:37 | Before call to method WriteLine | +| Finally.cs:23:13:23:38 | After ...; | Finally.cs:24:13:24:19 | Before return ...; | | Finally.cs:23:31:23:36 | "Try2" | Finally.cs:23:13:23:37 | call to method WriteLine | -| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:26:38:26:39 | IOException ex | -| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:30:9:40:9 | catch (...) {...} | +| Finally.cs:24:13:24:19 | Before return ...; | Finally.cs:24:13:24:19 | return ...; | +| Finally.cs:26:9:29:9 | After catch (...) {...} [match] | Finally.cs:26:38:26:39 | IOException ex | +| Finally.cs:26:9:29:9 | After catch (...) {...} [no-match] | Finally.cs:30:9:40:9 | catch (...) {...} | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:26:9:29:9 | After catch (...) {...} [match] | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:26:9:29:9 | After catch (...) {...} [no-match] | | Finally.cs:26:38:26:39 | IOException ex | Finally.cs:26:48:26:51 | true | -| Finally.cs:26:48:26:51 | true | Finally.cs:27:9:29:9 | {...} | -| Finally.cs:27:9:29:9 | {...} | Finally.cs:28:13:28:18 | throw ...; | -| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:30:41:30:42 | ArgumentException ex | -| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:41:9:43:9 | catch (...) {...} | +| Finally.cs:26:48:26:51 | After true [true] | Finally.cs:27:9:29:9 | {...} | +| Finally.cs:26:48:26:51 | true | Finally.cs:26:48:26:51 | After true [true] | +| Finally.cs:27:9:29:9 | {...} | Finally.cs:28:13:28:18 | Before throw ...; | +| Finally.cs:28:13:28:18 | Before throw ...; | Finally.cs:28:13:28:18 | throw ...; | +| Finally.cs:30:9:40:9 | After catch (...) {...} [match] | Finally.cs:30:41:30:42 | ArgumentException ex | +| Finally.cs:30:9:40:9 | After catch (...) {...} [no-match] | Finally.cs:41:9:43:9 | catch (...) {...} | +| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:30:9:40:9 | After catch (...) {...} [match] | +| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:30:9:40:9 | After catch (...) {...} [no-match] | | Finally.cs:30:41:30:42 | ArgumentException ex | Finally.cs:31:9:40:9 | {...} | | Finally.cs:31:9:40:9 | {...} | Finally.cs:32:13:39:13 | try {...} ... | | Finally.cs:32:13:39:13 | try {...} ... | Finally.cs:33:13:35:13 | {...} | | Finally.cs:33:13:35:13 | {...} | Finally.cs:34:17:34:32 | if (...) ... | | Finally.cs:34:17:34:32 | if (...) ... | Finally.cs:34:21:34:24 | true | -| Finally.cs:34:21:34:24 | true | Finally.cs:34:27:34:32 | throw ...; | +| Finally.cs:34:21:34:24 | After true [true] | Finally.cs:34:27:34:32 | Before throw ...; | +| Finally.cs:34:21:34:24 | true | Finally.cs:34:21:34:24 | After true [true] | +| Finally.cs:34:27:34:32 | Before throw ...; | Finally.cs:34:27:34:32 | throw ...; | | Finally.cs:34:27:34:32 | throw ...; | Finally.cs:37:13:39:13 | {...} | -| Finally.cs:37:13:39:13 | {...} | Finally.cs:38:37:38:42 | "Boo!" | -| Finally.cs:38:23:38:43 | object creation of type Exception | Finally.cs:38:17:38:44 | throw ...; | +| Finally.cs:37:13:39:13 | {...} | Finally.cs:38:17:38:44 | Before throw ...; | +| Finally.cs:38:17:38:44 | Before throw ...; | Finally.cs:38:23:38:43 | Before object creation of type Exception | +| Finally.cs:38:23:38:43 | After object creation of type Exception | Finally.cs:38:17:38:44 | throw ...; | +| Finally.cs:38:23:38:43 | Before object creation of type Exception | Finally.cs:38:37:38:42 | "Boo!" | +| Finally.cs:38:23:38:43 | object creation of type Exception | Finally.cs:38:23:38:43 | After object creation of type Exception | | Finally.cs:38:37:38:42 | "Boo!" | Finally.cs:38:23:38:43 | object creation of type Exception | -| Finally.cs:41:9:43:9 | catch (...) {...} | Finally.cs:42:9:43:9 | {...} | -| Finally.cs:41:9:43:9 | catch (...) {...} | Finally.cs:44:9:47:9 | catch {...} | -| Finally.cs:44:9:47:9 | catch {...} | Finally.cs:45:9:47:9 | {...} | -| Finally.cs:45:9:47:9 | {...} | Finally.cs:46:13:46:19 | return ...; | +| Finally.cs:41:9:43:9 | After catch (...) {...} [match] | Finally.cs:42:9:43:9 | {...} | +| Finally.cs:41:9:43:9 | After catch (...) {...} [no-match] | Finally.cs:44:9:47:9 | catch {...} | +| Finally.cs:41:9:43:9 | catch (...) {...} | Finally.cs:41:9:43:9 | After catch (...) {...} [match] | +| Finally.cs:41:9:43:9 | catch (...) {...} | Finally.cs:41:9:43:9 | After catch (...) {...} [no-match] | +| Finally.cs:44:9:47:9 | After catch {...} [match] | Finally.cs:45:9:47:9 | {...} | +| Finally.cs:44:9:47:9 | catch {...} | Finally.cs:44:9:47:9 | After catch {...} [match] | +| Finally.cs:45:9:47:9 | {...} | Finally.cs:46:13:46:19 | Before return ...; | +| Finally.cs:46:13:46:19 | Before return ...; | Finally.cs:46:13:46:19 | return ...; | +| Finally.cs:49:9:51:9 | After {...} | Finally.cs:19:10:19:11 | Exceptional Exit | +| Finally.cs:49:9:51:9 | After {...} | Finally.cs:19:10:19:11 | Normal Exit | +| Finally.cs:49:9:51:9 | After {...} | Finally.cs:21:9:51:9 | After try {...} ... | | Finally.cs:49:9:51:9 | {...} | Finally.cs:50:13:50:41 | ...; | -| Finally.cs:50:13:50:40 | call to method WriteLine | Finally.cs:19:10:19:11 | exit M2 (abnormal) | -| Finally.cs:50:13:50:40 | call to method WriteLine | Finally.cs:19:10:19:11 | exit M2 (normal) | -| Finally.cs:50:13:50:41 | ...; | Finally.cs:50:31:50:39 | "Finally" | +| Finally.cs:50:13:50:40 | After call to method WriteLine | Finally.cs:50:13:50:41 | After ...; | +| Finally.cs:50:13:50:40 | Before call to method WriteLine | Finally.cs:50:31:50:39 | "Finally" | +| Finally.cs:50:13:50:40 | call to method WriteLine | Finally.cs:50:13:50:40 | After call to method WriteLine | +| Finally.cs:50:13:50:41 | ...; | Finally.cs:50:13:50:40 | Before call to method WriteLine | +| Finally.cs:50:13:50:41 | After ...; | Finally.cs:49:9:51:9 | After {...} | | Finally.cs:50:31:50:39 | "Finally" | Finally.cs:50:13:50:40 | call to method WriteLine | -| Finally.cs:54:10:54:11 | enter M3 | Finally.cs:55:5:72:5 | {...} | +| Finally.cs:54:10:54:11 | Entry | Finally.cs:55:5:72:5 | {...} | | Finally.cs:55:5:72:5 | {...} | Finally.cs:56:9:71:9 | try {...} ... | +| Finally.cs:56:9:71:9 | After try {...} ... | Finally.cs:55:5:72:5 | After {...} | | Finally.cs:56:9:71:9 | try {...} ... | Finally.cs:57:9:60:9 | {...} | | Finally.cs:57:9:60:9 | {...} | Finally.cs:58:13:58:38 | ...; | -| Finally.cs:58:13:58:37 | call to method WriteLine | Finally.cs:59:13:59:19 | return ...; | +| Finally.cs:58:13:58:37 | After call to method WriteLine | Finally.cs:58:13:58:38 | After ...; | +| Finally.cs:58:13:58:37 | Before call to method WriteLine | Finally.cs:58:31:58:36 | "Try3" | +| Finally.cs:58:13:58:37 | call to method WriteLine | Finally.cs:58:13:58:37 | After call to method WriteLine | | Finally.cs:58:13:58:37 | call to method WriteLine | Finally.cs:61:9:64:9 | catch (...) {...} | -| Finally.cs:58:13:58:38 | ...; | Finally.cs:58:31:58:36 | "Try3" | +| Finally.cs:58:13:58:38 | ...; | Finally.cs:58:13:58:37 | Before call to method WriteLine | +| Finally.cs:58:13:58:38 | After ...; | Finally.cs:59:13:59:19 | Before return ...; | | Finally.cs:58:31:58:36 | "Try3" | Finally.cs:58:13:58:37 | call to method WriteLine | -| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:61:38:61:39 | IOException ex | -| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:65:9:67:9 | catch (...) {...} | +| Finally.cs:59:13:59:19 | Before return ...; | Finally.cs:59:13:59:19 | return ...; | +| Finally.cs:61:9:64:9 | After catch (...) {...} [match] | Finally.cs:61:38:61:39 | IOException ex | +| Finally.cs:61:9:64:9 | After catch (...) {...} [no-match] | Finally.cs:65:9:67:9 | catch (...) {...} | +| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:61:9:64:9 | After catch (...) {...} [match] | +| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:61:9:64:9 | After catch (...) {...} [no-match] | | Finally.cs:61:38:61:39 | IOException ex | Finally.cs:61:48:61:51 | true | -| Finally.cs:61:48:61:51 | true | Finally.cs:62:9:64:9 | {...} | -| Finally.cs:62:9:64:9 | {...} | Finally.cs:63:13:63:18 | throw ...; | -| Finally.cs:65:9:67:9 | catch (...) {...} | Finally.cs:65:26:65:26 | Exception e | -| Finally.cs:65:26:65:26 | Exception e | Finally.cs:65:35:65:35 | access to local variable e | +| Finally.cs:61:48:61:51 | After true [true] | Finally.cs:62:9:64:9 | {...} | +| Finally.cs:61:48:61:51 | true | Finally.cs:61:48:61:51 | After true [true] | +| Finally.cs:62:9:64:9 | {...} | Finally.cs:63:13:63:18 | Before throw ...; | +| Finally.cs:63:13:63:18 | Before throw ...; | Finally.cs:63:13:63:18 | throw ...; | +| Finally.cs:65:9:67:9 | After catch (...) {...} [match] | Finally.cs:65:26:65:26 | Exception e | +| Finally.cs:65:9:67:9 | catch (...) {...} | Finally.cs:65:9:67:9 | After catch (...) {...} [match] | +| Finally.cs:65:9:67:9 | catch (...) {...} | Finally.cs:65:9:67:9 | After catch (...) {...} [no-match] | +| Finally.cs:65:26:65:26 | Exception e | Finally.cs:65:35:65:51 | Before ... != ... | | Finally.cs:65:35:65:35 | access to local variable e | Finally.cs:65:35:65:43 | access to property Message | -| Finally.cs:65:35:65:43 | access to property Message | Finally.cs:65:48:65:51 | null | -| Finally.cs:65:35:65:51 | ... != ... | Finally.cs:66:9:67:9 | {...} | +| Finally.cs:65:35:65:43 | After access to property Message | Finally.cs:65:48:65:51 | null | +| Finally.cs:65:35:65:43 | Before access to property Message | Finally.cs:65:35:65:35 | access to local variable e | +| Finally.cs:65:35:65:43 | access to property Message | Finally.cs:65:35:65:43 | After access to property Message | +| Finally.cs:65:35:65:51 | ... != ... | Finally.cs:65:35:65:51 | After ... != ... [false] | +| Finally.cs:65:35:65:51 | ... != ... | Finally.cs:65:35:65:51 | After ... != ... [true] | +| Finally.cs:65:35:65:51 | After ... != ... [true] | Finally.cs:66:9:67:9 | {...} | +| Finally.cs:65:35:65:51 | Before ... != ... | Finally.cs:65:35:65:43 | Before access to property Message | | Finally.cs:65:48:65:51 | null | Finally.cs:65:35:65:51 | ... != ... | +| Finally.cs:69:9:71:9 | After {...} | Finally.cs:54:10:54:11 | Exceptional Exit | +| Finally.cs:69:9:71:9 | After {...} | Finally.cs:54:10:54:11 | Normal Exit | +| Finally.cs:69:9:71:9 | After {...} | Finally.cs:56:9:71:9 | After try {...} ... | | Finally.cs:69:9:71:9 | {...} | Finally.cs:70:13:70:41 | ...; | -| Finally.cs:70:13:70:40 | call to method WriteLine | Finally.cs:54:10:54:11 | exit M3 (abnormal) | -| Finally.cs:70:13:70:40 | call to method WriteLine | Finally.cs:54:10:54:11 | exit M3 (normal) | -| Finally.cs:70:13:70:41 | ...; | Finally.cs:70:31:70:39 | "Finally" | +| Finally.cs:70:13:70:40 | After call to method WriteLine | Finally.cs:70:13:70:41 | After ...; | +| Finally.cs:70:13:70:40 | Before call to method WriteLine | Finally.cs:70:31:70:39 | "Finally" | +| Finally.cs:70:13:70:40 | call to method WriteLine | Finally.cs:70:13:70:40 | After call to method WriteLine | +| Finally.cs:70:13:70:41 | ...; | Finally.cs:70:13:70:40 | Before call to method WriteLine | +| Finally.cs:70:13:70:41 | After ...; | Finally.cs:69:9:71:9 | After {...} | | Finally.cs:70:31:70:39 | "Finally" | Finally.cs:70:13:70:40 | call to method WriteLine | -| Finally.cs:74:10:74:11 | enter M4 | Finally.cs:75:5:101:5 | {...} | +| Finally.cs:74:10:74:11 | Entry | Finally.cs:75:5:101:5 | {...} | | Finally.cs:75:5:101:5 | {...} | Finally.cs:76:9:76:19 | ... ...; | -| Finally.cs:76:9:76:19 | ... ...; | Finally.cs:76:17:76:18 | 10 | -| Finally.cs:76:13:76:18 | Int32 i = ... | Finally.cs:77:9:100:9 | while (...) ... | +| Finally.cs:76:9:76:19 | ... ...; | Finally.cs:76:13:76:18 | Before Int32 i = ... | +| Finally.cs:76:9:76:19 | After ... ...; | Finally.cs:77:9:100:9 | while (...) ... | +| Finally.cs:76:13:76:13 | access to local variable i | Finally.cs:76:17:76:18 | 10 | +| Finally.cs:76:13:76:18 | After Int32 i = ... | Finally.cs:76:9:76:19 | After ... ...; | +| Finally.cs:76:13:76:18 | Before Int32 i = ... | Finally.cs:76:13:76:13 | access to local variable i | +| Finally.cs:76:13:76:18 | Int32 i = ... | Finally.cs:76:13:76:18 | After Int32 i = ... | | Finally.cs:76:17:76:18 | 10 | Finally.cs:76:13:76:18 | Int32 i = ... | -| Finally.cs:77:9:100:9 | while (...) ... | Finally.cs:77:16:77:16 | access to local variable i | +| Finally.cs:77:9:100:9 | After while (...) ... | Finally.cs:75:5:101:5 | After {...} | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:77:16:77:20 | Before ... > ... | +| Finally.cs:77:9:100:9 | while (...) ... | Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | | Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:77:20:77:20 | 0 | -| Finally.cs:77:16:77:20 | ... > ... | Finally.cs:74:10:74:11 | exit M4 (normal) | -| Finally.cs:77:16:77:20 | ... > ... | Finally.cs:78:9:100:9 | {...} | +| Finally.cs:77:16:77:20 | ... > ... | Finally.cs:77:16:77:20 | After ... > ... [false] | +| Finally.cs:77:16:77:20 | ... > ... | Finally.cs:77:16:77:20 | After ... > ... [true] | +| Finally.cs:77:16:77:20 | After ... > ... [true] | Finally.cs:78:9:100:9 | {...} | +| Finally.cs:77:16:77:20 | Before ... > ... | Finally.cs:77:16:77:16 | access to local variable i | | Finally.cs:77:20:77:20 | 0 | Finally.cs:77:16:77:20 | ... > ... | | Finally.cs:78:9:100:9 | {...} | Finally.cs:79:13:99:13 | try {...} ... | +| Finally.cs:79:13:99:13 | After try {...} ... | Finally.cs:78:9:100:9 | After {...} | | Finally.cs:79:13:99:13 | try {...} ... | Finally.cs:80:13:87:13 | {...} | | Finally.cs:80:13:87:13 | {...} | Finally.cs:81:17:82:27 | if (...) ... | -| Finally.cs:81:17:82:27 | if (...) ... | Finally.cs:81:21:81:21 | access to local variable i | +| Finally.cs:81:17:82:27 | After if (...) ... | Finally.cs:83:17:84:29 | if (...) ... | +| Finally.cs:81:17:82:27 | if (...) ... | Finally.cs:81:21:81:26 | Before ... == ... | | Finally.cs:81:21:81:21 | access to local variable i | Finally.cs:81:26:81:26 | 0 | -| Finally.cs:81:21:81:26 | ... == ... | Finally.cs:82:21:82:27 | return ...; | -| Finally.cs:81:21:81:26 | ... == ... | Finally.cs:83:17:84:29 | if (...) ... | +| Finally.cs:81:21:81:26 | ... == ... | Finally.cs:81:21:81:26 | After ... == ... [false] | +| Finally.cs:81:21:81:26 | ... == ... | Finally.cs:81:21:81:26 | After ... == ... [true] | +| Finally.cs:81:21:81:26 | After ... == ... [false] | Finally.cs:81:17:82:27 | After if (...) ... | +| Finally.cs:81:21:81:26 | After ... == ... [true] | Finally.cs:82:21:82:27 | Before return ...; | +| Finally.cs:81:21:81:26 | Before ... == ... | Finally.cs:81:21:81:21 | access to local variable i | | Finally.cs:81:26:81:26 | 0 | Finally.cs:81:21:81:26 | ... == ... | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:83:21:83:21 | access to local variable i | +| Finally.cs:82:21:82:27 | Before return ...; | Finally.cs:82:21:82:27 | return ...; | +| Finally.cs:83:17:84:29 | After if (...) ... | Finally.cs:85:17:86:26 | if (...) ... | +| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:83:21:83:26 | Before ... == ... | | Finally.cs:83:21:83:21 | access to local variable i | Finally.cs:83:26:83:26 | 1 | -| Finally.cs:83:21:83:26 | ... == ... | Finally.cs:84:21:84:29 | continue; | -| Finally.cs:83:21:83:26 | ... == ... | Finally.cs:85:17:86:26 | if (...) ... | +| Finally.cs:83:21:83:26 | ... == ... | Finally.cs:83:21:83:26 | After ... == ... [false] | +| Finally.cs:83:21:83:26 | ... == ... | Finally.cs:83:21:83:26 | After ... == ... [true] | +| Finally.cs:83:21:83:26 | After ... == ... [false] | Finally.cs:83:17:84:29 | After if (...) ... | +| Finally.cs:83:21:83:26 | After ... == ... [true] | Finally.cs:84:21:84:29 | Before continue; | +| Finally.cs:83:21:83:26 | Before ... == ... | Finally.cs:83:21:83:21 | access to local variable i | | Finally.cs:83:26:83:26 | 1 | Finally.cs:83:21:83:26 | ... == ... | -| Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:85:21:85:21 | access to local variable i | +| Finally.cs:84:21:84:29 | Before continue; | Finally.cs:84:21:84:29 | continue; | +| Finally.cs:85:17:86:26 | After if (...) ... | Finally.cs:80:13:87:13 | After {...} | +| Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:85:21:85:26 | Before ... == ... | | Finally.cs:85:21:85:21 | access to local variable i | Finally.cs:85:26:85:26 | 2 | -| Finally.cs:85:21:85:26 | ... == ... | Finally.cs:86:21:86:26 | break; | +| Finally.cs:85:21:85:26 | ... == ... | Finally.cs:85:21:85:26 | After ... == ... [false] | +| Finally.cs:85:21:85:26 | ... == ... | Finally.cs:85:21:85:26 | After ... == ... [true] | +| Finally.cs:85:21:85:26 | After ... == ... [false] | Finally.cs:85:17:86:26 | After if (...) ... | +| Finally.cs:85:21:85:26 | After ... == ... [true] | Finally.cs:86:21:86:26 | Before break; | +| Finally.cs:85:21:85:26 | Before ... == ... | Finally.cs:85:21:85:21 | access to local variable i | | Finally.cs:85:26:85:26 | 2 | Finally.cs:85:21:85:26 | ... == ... | +| Finally.cs:86:21:86:26 | Before break; | Finally.cs:86:21:86:26 | break; | +| Finally.cs:89:13:99:13 | After {...} | Finally.cs:79:13:99:13 | After try {...} ... | | Finally.cs:89:13:99:13 | {...} | Finally.cs:90:17:98:17 | try {...} ... | +| Finally.cs:90:17:98:17 | After try {...} ... | Finally.cs:89:13:99:13 | After {...} | | Finally.cs:90:17:98:17 | try {...} ... | Finally.cs:91:17:94:17 | {...} | | Finally.cs:91:17:94:17 | {...} | Finally.cs:92:21:93:46 | if (...) ... | -| Finally.cs:92:21:93:46 | if (...) ... | Finally.cs:92:25:92:25 | access to local variable i | +| Finally.cs:92:21:93:46 | After if (...) ... | Finally.cs:91:17:94:17 | After {...} | +| Finally.cs:92:21:93:46 | if (...) ... | Finally.cs:92:25:92:30 | Before ... == ... | | Finally.cs:92:25:92:25 | access to local variable i | Finally.cs:92:30:92:30 | 3 | -| Finally.cs:92:25:92:30 | ... == ... | Finally.cs:93:31:93:45 | object creation of type Exception | -| Finally.cs:92:25:92:30 | ... == ... | Finally.cs:96:17:98:17 | {...} | +| Finally.cs:92:25:92:30 | ... == ... | Finally.cs:92:25:92:30 | After ... == ... [false] | +| Finally.cs:92:25:92:30 | ... == ... | Finally.cs:92:25:92:30 | After ... == ... [true] | +| Finally.cs:92:25:92:30 | After ... == ... [false] | Finally.cs:92:21:93:46 | After if (...) ... | +| Finally.cs:92:25:92:30 | After ... == ... [true] | Finally.cs:93:25:93:46 | Before throw ...; | +| Finally.cs:92:25:92:30 | Before ... == ... | Finally.cs:92:25:92:25 | access to local variable i | | Finally.cs:92:30:92:30 | 3 | Finally.cs:92:25:92:30 | ... == ... | -| Finally.cs:93:31:93:45 | object creation of type Exception | Finally.cs:93:25:93:46 | throw ...; | +| Finally.cs:93:25:93:46 | Before throw ...; | Finally.cs:93:31:93:45 | Before object creation of type Exception | +| Finally.cs:93:31:93:45 | After object creation of type Exception | Finally.cs:93:25:93:46 | throw ...; | +| Finally.cs:93:31:93:45 | Before object creation of type Exception | Finally.cs:93:31:93:45 | object creation of type Exception | +| Finally.cs:93:31:93:45 | object creation of type Exception | Finally.cs:93:31:93:45 | After object creation of type Exception | +| Finally.cs:96:17:98:17 | After {...} | Finally.cs:74:10:74:11 | Exceptional Exit | +| Finally.cs:96:17:98:17 | After {...} | Finally.cs:90:17:98:17 | After try {...} ... | | Finally.cs:96:17:98:17 | {...} | Finally.cs:97:21:97:24 | ...; | | Finally.cs:97:21:97:21 | access to local variable i | Finally.cs:97:21:97:23 | ...-- | -| Finally.cs:97:21:97:23 | ...-- | Finally.cs:74:10:74:11 | exit M4 (abnormal) | -| Finally.cs:97:21:97:24 | ...; | Finally.cs:97:21:97:21 | access to local variable i | -| Finally.cs:103:10:103:11 | enter M5 | Finally.cs:104:5:119:5 | {...} | +| Finally.cs:97:21:97:23 | ...-- | Finally.cs:97:21:97:23 | After ...-- | +| Finally.cs:97:21:97:23 | After ...-- | Finally.cs:97:21:97:24 | After ...; | +| Finally.cs:97:21:97:23 | Before ...-- | Finally.cs:97:21:97:21 | access to local variable i | +| Finally.cs:97:21:97:24 | ...; | Finally.cs:97:21:97:23 | Before ...-- | +| Finally.cs:97:21:97:24 | After ...; | Finally.cs:96:17:98:17 | After {...} | +| Finally.cs:103:10:103:11 | Entry | Finally.cs:104:5:119:5 | {...} | | Finally.cs:104:5:119:5 | {...} | Finally.cs:105:9:118:9 | try {...} ... | +| Finally.cs:105:9:118:9 | After try {...} ... | Finally.cs:104:5:119:5 | After {...} | | Finally.cs:105:9:118:9 | try {...} ... | Finally.cs:106:9:111:9 | {...} | | Finally.cs:106:9:111:9 | {...} | Finally.cs:107:13:108:23 | if (...) ... | -| Finally.cs:107:13:108:23 | if (...) ... | Finally.cs:107:17:107:21 | this access | -| Finally.cs:107:17:107:21 | access to field Field | Finally.cs:107:17:107:28 | access to property Length | +| Finally.cs:107:13:108:23 | After if (...) ... | Finally.cs:109:13:110:49 | if (...) ... | +| Finally.cs:107:13:108:23 | if (...) ... | Finally.cs:107:17:107:33 | Before ... == ... | +| Finally.cs:107:17:107:21 | After access to field Field | Finally.cs:107:17:107:28 | access to property Length | +| Finally.cs:107:17:107:21 | Before access to field Field | Finally.cs:107:17:107:21 | this access | +| Finally.cs:107:17:107:21 | access to field Field | Finally.cs:107:17:107:21 | After access to field Field | | Finally.cs:107:17:107:21 | access to field Field | Finally.cs:113:9:118:9 | {...} | | Finally.cs:107:17:107:21 | this access | Finally.cs:107:17:107:21 | access to field Field | -| Finally.cs:107:17:107:28 | access to property Length | Finally.cs:107:33:107:33 | 0 | -| Finally.cs:107:17:107:33 | ... == ... | Finally.cs:108:17:108:23 | return ...; | -| Finally.cs:107:17:107:33 | ... == ... | Finally.cs:109:13:110:49 | if (...) ... | +| Finally.cs:107:17:107:28 | After access to property Length | Finally.cs:107:33:107:33 | 0 | +| Finally.cs:107:17:107:28 | Before access to property Length | Finally.cs:107:17:107:21 | Before access to field Field | +| Finally.cs:107:17:107:28 | access to property Length | Finally.cs:107:17:107:28 | After access to property Length | +| Finally.cs:107:17:107:33 | ... == ... | Finally.cs:107:17:107:33 | After ... == ... [false] | +| Finally.cs:107:17:107:33 | ... == ... | Finally.cs:107:17:107:33 | After ... == ... [true] | +| Finally.cs:107:17:107:33 | After ... == ... [false] | Finally.cs:107:13:108:23 | After if (...) ... | +| Finally.cs:107:17:107:33 | After ... == ... [true] | Finally.cs:108:17:108:23 | Before return ...; | +| Finally.cs:107:17:107:33 | Before ... == ... | Finally.cs:107:17:107:28 | Before access to property Length | | Finally.cs:107:33:107:33 | 0 | Finally.cs:107:17:107:33 | ... == ... | -| Finally.cs:109:13:110:49 | if (...) ... | Finally.cs:109:17:109:21 | this access | -| Finally.cs:109:17:109:21 | access to field Field | Finally.cs:109:17:109:28 | access to property Length | +| Finally.cs:108:17:108:23 | Before return ...; | Finally.cs:108:17:108:23 | return ...; | +| Finally.cs:109:13:110:49 | After if (...) ... | Finally.cs:106:9:111:9 | After {...} | +| Finally.cs:109:13:110:49 | if (...) ... | Finally.cs:109:17:109:33 | Before ... == ... | +| Finally.cs:109:17:109:21 | After access to field Field | Finally.cs:109:17:109:28 | access to property Length | +| Finally.cs:109:17:109:21 | Before access to field Field | Finally.cs:109:17:109:21 | this access | +| Finally.cs:109:17:109:21 | access to field Field | Finally.cs:109:17:109:21 | After access to field Field | | Finally.cs:109:17:109:21 | this access | Finally.cs:109:17:109:21 | access to field Field | -| Finally.cs:109:17:109:28 | access to property Length | Finally.cs:109:33:109:33 | 1 | -| Finally.cs:109:17:109:33 | ... == ... | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | +| Finally.cs:109:17:109:28 | After access to property Length | Finally.cs:109:33:109:33 | 1 | +| Finally.cs:109:17:109:28 | Before access to property Length | Finally.cs:109:17:109:21 | Before access to field Field | +| Finally.cs:109:17:109:28 | access to property Length | Finally.cs:109:17:109:28 | After access to property Length | +| Finally.cs:109:17:109:33 | ... == ... | Finally.cs:109:17:109:33 | After ... == ... [false] | +| Finally.cs:109:17:109:33 | ... == ... | Finally.cs:109:17:109:33 | After ... == ... [true] | +| Finally.cs:109:17:109:33 | After ... == ... [false] | Finally.cs:109:13:110:49 | After if (...) ... | +| Finally.cs:109:17:109:33 | After ... == ... [true] | Finally.cs:110:17:110:49 | Before throw ...; | +| Finally.cs:109:17:109:33 | Before ... == ... | Finally.cs:109:17:109:28 | Before access to property Length | | Finally.cs:109:33:109:33 | 1 | Finally.cs:109:17:109:33 | ... == ... | -| Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | Finally.cs:110:17:110:49 | throw ...; | +| Finally.cs:110:17:110:49 | Before throw ...; | Finally.cs:110:23:110:48 | Before object creation of type OutOfMemoryException | +| Finally.cs:110:23:110:48 | After object creation of type OutOfMemoryException | Finally.cs:110:17:110:49 | throw ...; | +| Finally.cs:110:23:110:48 | Before object creation of type OutOfMemoryException | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | +| Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | Finally.cs:110:23:110:48 | After object creation of type OutOfMemoryException | +| Finally.cs:113:9:118:9 | After {...} | Finally.cs:103:10:103:11 | Exceptional Exit | +| Finally.cs:113:9:118:9 | After {...} | Finally.cs:103:10:103:11 | Normal Exit | +| Finally.cs:113:9:118:9 | After {...} | Finally.cs:105:9:118:9 | After try {...} ... | | Finally.cs:113:9:118:9 | {...} | Finally.cs:114:13:115:41 | if (...) ... | -| Finally.cs:114:13:115:41 | if (...) ... | Finally.cs:114:19:114:23 | this access | -| Finally.cs:114:17:114:36 | [true] !... | Finally.cs:115:17:115:41 | ...; | -| Finally.cs:114:19:114:23 | access to field Field | Finally.cs:114:19:114:30 | access to property Length | +| Finally.cs:114:13:115:41 | After if (...) ... | Finally.cs:116:13:117:37 | if (...) ... | +| Finally.cs:114:13:115:41 | if (...) ... | Finally.cs:114:17:114:36 | !... | +| Finally.cs:114:17:114:36 | !... | Finally.cs:114:19:114:35 | Before ... == ... | +| Finally.cs:114:17:114:36 | After !... [true] | Finally.cs:115:17:115:41 | ...; | +| Finally.cs:114:19:114:23 | After access to field Field | Finally.cs:114:19:114:30 | access to property Length | +| Finally.cs:114:19:114:23 | Before access to field Field | Finally.cs:114:19:114:23 | this access | +| Finally.cs:114:19:114:23 | access to field Field | Finally.cs:114:19:114:23 | After access to field Field | | Finally.cs:114:19:114:23 | this access | Finally.cs:114:19:114:23 | access to field Field | -| Finally.cs:114:19:114:30 | access to property Length | Finally.cs:114:35:114:35 | 0 | -| Finally.cs:114:19:114:35 | ... == ... | Finally.cs:114:17:114:36 | [false] !... | -| Finally.cs:114:19:114:35 | ... == ... | Finally.cs:114:17:114:36 | [true] !... | +| Finally.cs:114:19:114:30 | After access to property Length | Finally.cs:114:35:114:35 | 0 | +| Finally.cs:114:19:114:30 | Before access to property Length | Finally.cs:114:19:114:23 | Before access to field Field | +| Finally.cs:114:19:114:30 | access to property Length | Finally.cs:114:19:114:30 | After access to property Length | +| Finally.cs:114:19:114:35 | ... == ... | Finally.cs:114:19:114:35 | After ... == ... [false] | +| Finally.cs:114:19:114:35 | ... == ... | Finally.cs:114:19:114:35 | After ... == ... [true] | +| Finally.cs:114:19:114:35 | After ... == ... [false] | Finally.cs:114:17:114:36 | After !... [true] | +| Finally.cs:114:19:114:35 | After ... == ... [true] | Finally.cs:114:17:114:36 | After !... [false] | +| Finally.cs:114:19:114:35 | Before ... == ... | Finally.cs:114:19:114:30 | Before access to property Length | | Finally.cs:114:35:114:35 | 0 | Finally.cs:114:19:114:35 | ... == ... | -| Finally.cs:115:17:115:41 | ...; | Finally.cs:115:35:115:39 | this access | -| Finally.cs:115:35:115:39 | access to field Field | Finally.cs:115:17:115:40 | call to method WriteLine | +| Finally.cs:115:17:115:40 | After call to method WriteLine | Finally.cs:115:17:115:41 | After ...; | +| Finally.cs:115:17:115:40 | Before call to method WriteLine | Finally.cs:115:35:115:39 | Before access to field Field | +| Finally.cs:115:17:115:40 | call to method WriteLine | Finally.cs:115:17:115:40 | After call to method WriteLine | +| Finally.cs:115:17:115:41 | ...; | Finally.cs:115:17:115:40 | Before call to method WriteLine | +| Finally.cs:115:35:115:39 | After access to field Field | Finally.cs:115:17:115:40 | call to method WriteLine | +| Finally.cs:115:35:115:39 | Before access to field Field | Finally.cs:115:35:115:39 | this access | +| Finally.cs:115:35:115:39 | access to field Field | Finally.cs:115:35:115:39 | After access to field Field | | Finally.cs:115:35:115:39 | this access | Finally.cs:115:35:115:39 | access to field Field | -| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:116:17:116:21 | this access | -| Finally.cs:116:17:116:21 | access to field Field | Finally.cs:116:17:116:28 | access to property Length | +| Finally.cs:116:13:117:37 | After if (...) ... | Finally.cs:113:9:118:9 | After {...} | +| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:116:17:116:32 | Before ... > ... | +| Finally.cs:116:17:116:21 | After access to field Field | Finally.cs:116:17:116:28 | access to property Length | +| Finally.cs:116:17:116:21 | Before access to field Field | Finally.cs:116:17:116:21 | this access | +| Finally.cs:116:17:116:21 | access to field Field | Finally.cs:116:17:116:21 | After access to field Field | | Finally.cs:116:17:116:21 | this access | Finally.cs:116:17:116:21 | access to field Field | -| Finally.cs:116:17:116:28 | access to property Length | Finally.cs:116:32:116:32 | 0 | -| Finally.cs:116:17:116:32 | ... > ... | Finally.cs:103:10:103:11 | exit M5 (abnormal) | -| Finally.cs:116:17:116:32 | ... > ... | Finally.cs:103:10:103:11 | exit M5 (normal) | -| Finally.cs:116:17:116:32 | ... > ... | Finally.cs:117:17:117:37 | ...; | +| Finally.cs:116:17:116:28 | After access to property Length | Finally.cs:116:32:116:32 | 0 | +| Finally.cs:116:17:116:28 | Before access to property Length | Finally.cs:116:17:116:21 | Before access to field Field | +| Finally.cs:116:17:116:28 | access to property Length | Finally.cs:116:17:116:28 | After access to property Length | +| Finally.cs:116:17:116:32 | ... > ... | Finally.cs:116:17:116:32 | After ... > ... [false] | +| Finally.cs:116:17:116:32 | ... > ... | Finally.cs:116:17:116:32 | After ... > ... [true] | +| Finally.cs:116:17:116:32 | After ... > ... [true] | Finally.cs:117:17:117:37 | ...; | +| Finally.cs:116:17:116:32 | Before ... > ... | Finally.cs:116:17:116:28 | Before access to property Length | | Finally.cs:116:32:116:32 | 0 | Finally.cs:116:17:116:32 | ... > ... | -| Finally.cs:117:17:117:37 | ...; | Finally.cs:117:35:117:35 | 1 | +| Finally.cs:117:17:117:36 | After call to method WriteLine | Finally.cs:117:17:117:37 | After ...; | +| Finally.cs:117:17:117:36 | Before call to method WriteLine | Finally.cs:117:35:117:35 | 1 | +| Finally.cs:117:17:117:36 | call to method WriteLine | Finally.cs:117:17:117:36 | After call to method WriteLine | +| Finally.cs:117:17:117:37 | ...; | Finally.cs:117:17:117:36 | Before call to method WriteLine | | Finally.cs:117:35:117:35 | 1 | Finally.cs:117:17:117:36 | call to method WriteLine | -| Finally.cs:121:10:121:11 | enter M6 | Finally.cs:122:5:131:5 | {...} | -| Finally.cs:121:10:121:11 | exit M6 (normal) | Finally.cs:121:10:121:11 | exit M6 | +| Finally.cs:121:10:121:11 | Entry | Finally.cs:122:5:131:5 | {...} | +| Finally.cs:121:10:121:11 | Normal Exit | Finally.cs:121:10:121:11 | Exit | +| Finally.cs:122:5:131:5 | After {...} | Finally.cs:121:10:121:11 | Normal Exit | | Finally.cs:122:5:131:5 | {...} | Finally.cs:123:9:130:9 | try {...} ... | +| Finally.cs:123:9:130:9 | After try {...} ... | Finally.cs:122:5:131:5 | After {...} | | Finally.cs:123:9:130:9 | try {...} ... | Finally.cs:124:9:126:9 | {...} | +| Finally.cs:124:9:126:9 | After {...} | Finally.cs:123:9:130:9 | After try {...} ... | | Finally.cs:124:9:126:9 | {...} | Finally.cs:125:13:125:41 | ... ...; | -| Finally.cs:125:13:125:41 | ... ...; | Finally.cs:125:24:125:24 | 0 | -| Finally.cs:125:17:125:40 | Double temp = ... | Finally.cs:121:10:121:11 | exit M6 (normal) | +| Finally.cs:125:13:125:41 | ... ...; | Finally.cs:125:17:125:40 | Before Double temp = ... | +| Finally.cs:125:13:125:41 | After ... ...; | Finally.cs:124:9:126:9 | After {...} | +| Finally.cs:125:17:125:20 | access to local variable temp | Finally.cs:125:24:125:40 | Before ... / ... | +| Finally.cs:125:17:125:40 | After Double temp = ... | Finally.cs:125:13:125:41 | After ... ...; | +| Finally.cs:125:17:125:40 | Before Double temp = ... | Finally.cs:125:17:125:20 | access to local variable temp | +| Finally.cs:125:17:125:40 | Double temp = ... | Finally.cs:125:17:125:40 | After Double temp = ... | | Finally.cs:125:24:125:24 | 0 | Finally.cs:125:24:125:24 | (...) ... | -| Finally.cs:125:24:125:24 | (...) ... | Finally.cs:125:28:125:40 | access to constant E | -| Finally.cs:125:24:125:40 | ... / ... | Finally.cs:125:17:125:40 | Double temp = ... | +| Finally.cs:125:24:125:24 | (...) ... | Finally.cs:125:24:125:24 | After (...) ... | +| Finally.cs:125:24:125:24 | After (...) ... | Finally.cs:125:28:125:40 | access to constant E | +| Finally.cs:125:24:125:24 | Before (...) ... | Finally.cs:125:24:125:24 | 0 | +| Finally.cs:125:24:125:40 | ... / ... | Finally.cs:125:24:125:40 | After ... / ... | +| Finally.cs:125:24:125:40 | After ... / ... | Finally.cs:125:17:125:40 | Double temp = ... | +| Finally.cs:125:24:125:40 | Before ... / ... | Finally.cs:125:24:125:24 | Before (...) ... | | Finally.cs:125:28:125:40 | access to constant E | Finally.cs:125:24:125:40 | ... / ... | -| Finally.cs:133:10:133:11 | enter M7 | Finally.cs:134:5:145:5 | {...} | -| Finally.cs:133:10:133:11 | exit M7 (abnormal) | Finally.cs:133:10:133:11 | exit M7 | +| Finally.cs:133:10:133:11 | Entry | Finally.cs:134:5:145:5 | {...} | +| Finally.cs:133:10:133:11 | Exceptional Exit | Finally.cs:133:10:133:11 | Exit | | Finally.cs:134:5:145:5 | {...} | Finally.cs:135:9:143:9 | try {...} ... | | Finally.cs:135:9:143:9 | try {...} ... | Finally.cs:136:9:138:9 | {...} | | Finally.cs:136:9:138:9 | {...} | Finally.cs:137:13:137:37 | ...; | +| Finally.cs:137:13:137:36 | After call to method WriteLine | Finally.cs:137:13:137:37 | After ...; | +| Finally.cs:137:13:137:36 | Before call to method WriteLine | Finally.cs:137:31:137:35 | "Try" | +| Finally.cs:137:13:137:36 | call to method WriteLine | Finally.cs:137:13:137:36 | After call to method WriteLine | | Finally.cs:137:13:137:36 | call to method WriteLine | Finally.cs:140:9:143:9 | {...} | -| Finally.cs:137:13:137:37 | ...; | Finally.cs:137:31:137:35 | "Try" | +| Finally.cs:137:13:137:37 | ...; | Finally.cs:137:13:137:36 | Before call to method WriteLine | +| Finally.cs:137:13:137:37 | After ...; | Finally.cs:136:9:138:9 | After {...} | | Finally.cs:137:31:137:35 | "Try" | Finally.cs:137:13:137:36 | call to method WriteLine | -| Finally.cs:140:9:143:9 | {...} | Finally.cs:141:41:141:42 | "" | -| Finally.cs:141:13:141:44 | throw ...; | Finally.cs:133:10:133:11 | exit M7 (abnormal) | -| Finally.cs:141:19:141:43 | object creation of type ArgumentException | Finally.cs:141:13:141:44 | throw ...; | +| Finally.cs:140:9:143:9 | {...} | Finally.cs:141:13:141:44 | Before throw ...; | +| Finally.cs:141:13:141:44 | Before throw ...; | Finally.cs:141:19:141:43 | Before object creation of type ArgumentException | +| Finally.cs:141:13:141:44 | throw ...; | Finally.cs:133:10:133:11 | Exceptional Exit | +| Finally.cs:141:19:141:43 | After object creation of type ArgumentException | Finally.cs:141:13:141:44 | throw ...; | +| Finally.cs:141:19:141:43 | Before object creation of type ArgumentException | Finally.cs:141:41:141:42 | "" | +| Finally.cs:141:19:141:43 | object creation of type ArgumentException | Finally.cs:141:19:141:43 | After object creation of type ArgumentException | | Finally.cs:141:41:141:42 | "" | Finally.cs:141:19:141:43 | object creation of type ArgumentException | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:148:5:170:5 | {...} | +| Finally.cs:147:10:147:11 | Entry | Finally.cs:147:22:147:25 | args | +| Finally.cs:147:22:147:25 | args | Finally.cs:148:5:170:5 | {...} | +| Finally.cs:148:5:170:5 | After {...} | Finally.cs:147:10:147:11 | Normal Exit | | Finally.cs:148:5:170:5 | {...} | Finally.cs:149:9:169:9 | try {...} ... | +| Finally.cs:149:9:169:9 | After try {...} ... | Finally.cs:148:5:170:5 | After {...} | | Finally.cs:149:9:169:9 | try {...} ... | Finally.cs:150:9:153:9 | {...} | | Finally.cs:150:9:153:9 | {...} | Finally.cs:151:13:152:50 | if (...) ... | -| Finally.cs:151:13:152:50 | if (...) ... | Finally.cs:151:17:151:20 | access to parameter args | +| Finally.cs:151:13:152:50 | After if (...) ... | Finally.cs:150:9:153:9 | After {...} | +| Finally.cs:151:13:152:50 | if (...) ... | Finally.cs:151:17:151:28 | Before ... == ... | | Finally.cs:151:17:151:20 | access to parameter args | Finally.cs:151:25:151:28 | null | -| Finally.cs:151:17:151:28 | ... == ... | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | -| Finally.cs:151:17:151:28 | ... == ... | Finally.cs:155:9:169:9 | {...} | +| Finally.cs:151:17:151:28 | ... == ... | Finally.cs:151:17:151:28 | After ... == ... [false] | +| Finally.cs:151:17:151:28 | ... == ... | Finally.cs:151:17:151:28 | After ... == ... [true] | +| Finally.cs:151:17:151:28 | After ... == ... [false] | Finally.cs:151:13:152:50 | After if (...) ... | +| Finally.cs:151:17:151:28 | After ... == ... [true] | Finally.cs:152:17:152:50 | Before throw ...; | +| Finally.cs:151:17:151:28 | Before ... == ... | Finally.cs:151:17:151:20 | access to parameter args | | Finally.cs:151:25:151:28 | null | Finally.cs:151:17:151:28 | ... == ... | -| Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | Finally.cs:152:17:152:50 | throw ...; | +| Finally.cs:152:17:152:50 | Before throw ...; | Finally.cs:152:23:152:49 | Before object creation of type ArgumentNullException | +| Finally.cs:152:23:152:49 | After object creation of type ArgumentNullException | Finally.cs:152:17:152:50 | throw ...; | +| Finally.cs:152:23:152:49 | Before object creation of type ArgumentNullException | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | +| Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | Finally.cs:152:23:152:49 | After object creation of type ArgumentNullException | +| Finally.cs:155:9:169:9 | After {...} | Finally.cs:147:10:147:11 | Exceptional Exit | +| Finally.cs:155:9:169:9 | After {...} | Finally.cs:149:9:169:9 | After try {...} ... | | Finally.cs:155:9:169:9 | {...} | Finally.cs:156:13:168:13 | try {...} ... | +| Finally.cs:156:13:168:13 | After try {...} ... | Finally.cs:155:9:169:9 | After {...} | | Finally.cs:156:13:168:13 | try {...} ... | Finally.cs:157:13:160:13 | {...} | | Finally.cs:157:13:160:13 | {...} | Finally.cs:158:17:159:45 | if (...) ... | -| Finally.cs:158:17:159:45 | if (...) ... | Finally.cs:158:21:158:24 | access to parameter args | +| Finally.cs:158:17:159:45 | After if (...) ... | Finally.cs:157:13:160:13 | After {...} | +| Finally.cs:158:17:159:45 | if (...) ... | Finally.cs:158:21:158:36 | Before ... == ... | | Finally.cs:158:21:158:24 | access to parameter args | Finally.cs:158:21:158:31 | access to property Length | -| Finally.cs:158:21:158:31 | access to property Length | Finally.cs:158:36:158:36 | 1 | +| Finally.cs:158:21:158:31 | After access to property Length | Finally.cs:158:36:158:36 | 1 | +| Finally.cs:158:21:158:31 | Before access to property Length | Finally.cs:158:21:158:24 | access to parameter args | +| Finally.cs:158:21:158:31 | access to property Length | Finally.cs:158:21:158:31 | After access to property Length | | Finally.cs:158:21:158:31 | access to property Length | Finally.cs:161:13:164:13 | catch (...) {...} | -| Finally.cs:158:21:158:36 | ... == ... | Finally.cs:159:41:159:43 | "1" | +| Finally.cs:158:21:158:36 | ... == ... | Finally.cs:158:21:158:36 | After ... == ... [false] | +| Finally.cs:158:21:158:36 | ... == ... | Finally.cs:158:21:158:36 | After ... == ... [true] | +| Finally.cs:158:21:158:36 | After ... == ... [false] | Finally.cs:158:17:159:45 | After if (...) ... | +| Finally.cs:158:21:158:36 | After ... == ... [true] | Finally.cs:159:21:159:45 | Before throw ...; | +| Finally.cs:158:21:158:36 | Before ... == ... | Finally.cs:158:21:158:31 | Before access to property Length | | Finally.cs:158:36:158:36 | 1 | Finally.cs:158:21:158:36 | ... == ... | -| Finally.cs:159:27:159:44 | object creation of type Exception | Finally.cs:159:21:159:45 | throw ...; | +| Finally.cs:159:21:159:45 | Before throw ...; | Finally.cs:159:27:159:44 | Before object creation of type Exception | +| Finally.cs:159:27:159:44 | After object creation of type Exception | Finally.cs:159:21:159:45 | throw ...; | +| Finally.cs:159:27:159:44 | Before object creation of type Exception | Finally.cs:159:41:159:43 | "1" | +| Finally.cs:159:27:159:44 | object creation of type Exception | Finally.cs:159:27:159:44 | After object creation of type Exception | | Finally.cs:159:41:159:43 | "1" | Finally.cs:159:27:159:44 | object creation of type Exception | -| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:161:30:161:30 | Exception e | -| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:165:13:168:13 | catch {...} | -| Finally.cs:161:30:161:30 | Exception e | Finally.cs:161:39:161:39 | access to local variable e | +| Finally.cs:161:13:164:13 | After catch (...) {...} [match] | Finally.cs:161:30:161:30 | Exception e | +| Finally.cs:161:13:164:13 | After catch (...) {...} [no-match] | Finally.cs:165:13:168:13 | catch {...} | +| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:161:13:164:13 | After catch (...) {...} [match] | +| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:161:13:164:13 | After catch (...) {...} [no-match] | +| Finally.cs:161:30:161:30 | Exception e | Finally.cs:161:39:161:54 | Before ... == ... | | Finally.cs:161:39:161:39 | access to local variable e | Finally.cs:161:39:161:47 | access to property Message | -| Finally.cs:161:39:161:47 | access to property Message | Finally.cs:161:52:161:54 | "1" | -| Finally.cs:161:39:161:54 | ... == ... | Finally.cs:162:13:164:13 | {...} | +| Finally.cs:161:39:161:47 | After access to property Message | Finally.cs:161:52:161:54 | "1" | +| Finally.cs:161:39:161:47 | Before access to property Message | Finally.cs:161:39:161:39 | access to local variable e | +| Finally.cs:161:39:161:47 | access to property Message | Finally.cs:161:39:161:47 | After access to property Message | +| Finally.cs:161:39:161:54 | ... == ... | Finally.cs:161:39:161:54 | After ... == ... [false] | +| Finally.cs:161:39:161:54 | ... == ... | Finally.cs:161:39:161:54 | After ... == ... [true] | +| Finally.cs:161:39:161:54 | After ... == ... [true] | Finally.cs:162:13:164:13 | {...} | +| Finally.cs:161:39:161:54 | Before ... == ... | Finally.cs:161:39:161:47 | Before access to property Message | | Finally.cs:161:52:161:54 | "1" | Finally.cs:161:39:161:54 | ... == ... | | Finally.cs:162:13:164:13 | {...} | Finally.cs:163:17:163:43 | ...; | -| Finally.cs:163:17:163:43 | ...; | Finally.cs:163:35:163:38 | access to parameter args | +| Finally.cs:163:17:163:42 | After call to method WriteLine | Finally.cs:163:17:163:43 | After ...; | +| Finally.cs:163:17:163:42 | Before call to method WriteLine | Finally.cs:163:35:163:41 | Before access to array element | +| Finally.cs:163:17:163:42 | call to method WriteLine | Finally.cs:163:17:163:42 | After call to method WriteLine | +| Finally.cs:163:17:163:43 | ...; | Finally.cs:163:17:163:42 | Before call to method WriteLine | +| Finally.cs:163:17:163:43 | After ...; | Finally.cs:162:13:164:13 | After {...} | | Finally.cs:163:35:163:38 | access to parameter args | Finally.cs:163:40:163:40 | 0 | -| Finally.cs:163:35:163:41 | access to array element | Finally.cs:163:17:163:42 | call to method WriteLine | +| Finally.cs:163:35:163:41 | After access to array element | Finally.cs:163:17:163:42 | call to method WriteLine | +| Finally.cs:163:35:163:41 | Before access to array element | Finally.cs:163:35:163:38 | access to parameter args | +| Finally.cs:163:35:163:41 | access to array element | Finally.cs:163:35:163:41 | After access to array element | | Finally.cs:163:40:163:40 | 0 | Finally.cs:163:35:163:41 | access to array element | -| Finally.cs:165:13:168:13 | catch {...} | Finally.cs:166:13:168:13 | {...} | +| Finally.cs:165:13:168:13 | After catch {...} [match] | Finally.cs:166:13:168:13 | {...} | +| Finally.cs:165:13:168:13 | catch {...} | Finally.cs:165:13:168:13 | After catch {...} [match] | | Finally.cs:166:13:168:13 | {...} | Finally.cs:167:17:167:38 | ...; | -| Finally.cs:167:17:167:38 | ...; | Finally.cs:167:35:167:36 | "" | +| Finally.cs:167:17:167:37 | After call to method WriteLine | Finally.cs:167:17:167:38 | After ...; | +| Finally.cs:167:17:167:37 | Before call to method WriteLine | Finally.cs:167:35:167:36 | "" | +| Finally.cs:167:17:167:37 | call to method WriteLine | Finally.cs:167:17:167:37 | After call to method WriteLine | +| Finally.cs:167:17:167:38 | ...; | Finally.cs:167:17:167:37 | Before call to method WriteLine | +| Finally.cs:167:17:167:38 | After ...; | Finally.cs:166:13:168:13 | After {...} | | Finally.cs:167:35:167:36 | "" | Finally.cs:167:17:167:37 | call to method WriteLine | -| Finally.cs:172:11:172:20 | call to constructor Exception | Finally.cs:172:11:172:20 | {...} | -| Finally.cs:172:11:172:20 | call to method | Finally.cs:172:11:172:20 | call to constructor Exception | -| Finally.cs:172:11:172:20 | enter ExceptionA | Finally.cs:172:11:172:20 | this access | -| Finally.cs:172:11:172:20 | exit ExceptionA (normal) | Finally.cs:172:11:172:20 | exit ExceptionA | +| Finally.cs:172:11:172:20 | After call to constructor Exception | Finally.cs:172:11:172:20 | {...} | +| Finally.cs:172:11:172:20 | After call to method | Finally.cs:172:11:172:20 | Before call to constructor Exception | +| Finally.cs:172:11:172:20 | Before call to constructor Exception | Finally.cs:172:11:172:20 | call to constructor Exception | +| Finally.cs:172:11:172:20 | Before call to method | Finally.cs:172:11:172:20 | this access | +| Finally.cs:172:11:172:20 | Entry | Finally.cs:172:11:172:20 | Before call to method | +| Finally.cs:172:11:172:20 | Normal Exit | Finally.cs:172:11:172:20 | Exit | +| Finally.cs:172:11:172:20 | call to constructor Exception | Finally.cs:172:11:172:20 | After call to constructor Exception | +| Finally.cs:172:11:172:20 | call to method | Finally.cs:172:11:172:20 | After call to method | | Finally.cs:172:11:172:20 | this access | Finally.cs:172:11:172:20 | call to method | -| Finally.cs:172:11:172:20 | {...} | Finally.cs:172:11:172:20 | exit ExceptionA (normal) | -| Finally.cs:173:11:173:20 | call to constructor Exception | Finally.cs:173:11:173:20 | {...} | -| Finally.cs:173:11:173:20 | call to method | Finally.cs:173:11:173:20 | call to constructor Exception | -| Finally.cs:173:11:173:20 | enter ExceptionB | Finally.cs:173:11:173:20 | this access | -| Finally.cs:173:11:173:20 | exit ExceptionB (normal) | Finally.cs:173:11:173:20 | exit ExceptionB | +| Finally.cs:172:11:172:20 | {...} | Finally.cs:172:11:172:20 | Normal Exit | +| Finally.cs:173:11:173:20 | After call to constructor Exception | Finally.cs:173:11:173:20 | {...} | +| Finally.cs:173:11:173:20 | After call to method | Finally.cs:173:11:173:20 | Before call to constructor Exception | +| Finally.cs:173:11:173:20 | Before call to constructor Exception | Finally.cs:173:11:173:20 | call to constructor Exception | +| Finally.cs:173:11:173:20 | Before call to method | Finally.cs:173:11:173:20 | this access | +| Finally.cs:173:11:173:20 | Entry | Finally.cs:173:11:173:20 | Before call to method | +| Finally.cs:173:11:173:20 | Normal Exit | Finally.cs:173:11:173:20 | Exit | +| Finally.cs:173:11:173:20 | call to constructor Exception | Finally.cs:173:11:173:20 | After call to constructor Exception | +| Finally.cs:173:11:173:20 | call to method | Finally.cs:173:11:173:20 | After call to method | | Finally.cs:173:11:173:20 | this access | Finally.cs:173:11:173:20 | call to method | -| Finally.cs:173:11:173:20 | {...} | Finally.cs:173:11:173:20 | exit ExceptionB (normal) | -| Finally.cs:174:11:174:20 | call to constructor Exception | Finally.cs:174:11:174:20 | {...} | -| Finally.cs:174:11:174:20 | call to method | Finally.cs:174:11:174:20 | call to constructor Exception | -| Finally.cs:174:11:174:20 | enter ExceptionC | Finally.cs:174:11:174:20 | this access | -| Finally.cs:174:11:174:20 | exit ExceptionC (normal) | Finally.cs:174:11:174:20 | exit ExceptionC | +| Finally.cs:173:11:173:20 | {...} | Finally.cs:173:11:173:20 | Normal Exit | +| Finally.cs:174:11:174:20 | After call to constructor Exception | Finally.cs:174:11:174:20 | {...} | +| Finally.cs:174:11:174:20 | After call to method | Finally.cs:174:11:174:20 | Before call to constructor Exception | +| Finally.cs:174:11:174:20 | Before call to constructor Exception | Finally.cs:174:11:174:20 | call to constructor Exception | +| Finally.cs:174:11:174:20 | Before call to method | Finally.cs:174:11:174:20 | this access | +| Finally.cs:174:11:174:20 | Entry | Finally.cs:174:11:174:20 | Before call to method | +| Finally.cs:174:11:174:20 | Normal Exit | Finally.cs:174:11:174:20 | Exit | +| Finally.cs:174:11:174:20 | call to constructor Exception | Finally.cs:174:11:174:20 | After call to constructor Exception | +| Finally.cs:174:11:174:20 | call to method | Finally.cs:174:11:174:20 | After call to method | | Finally.cs:174:11:174:20 | this access | Finally.cs:174:11:174:20 | call to method | -| Finally.cs:174:11:174:20 | {...} | Finally.cs:174:11:174:20 | exit ExceptionC (normal) | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:177:5:193:5 | {...} | +| Finally.cs:174:11:174:20 | {...} | Finally.cs:174:11:174:20 | Normal Exit | +| Finally.cs:176:10:176:11 | Entry | Finally.cs:176:18:176:19 | b1 | +| Finally.cs:176:18:176:19 | b1 | Finally.cs:176:27:176:28 | b2 | +| Finally.cs:176:27:176:28 | b2 | Finally.cs:177:5:193:5 | {...} | +| Finally.cs:177:5:193:5 | After {...} | Finally.cs:176:10:176:11 | Normal Exit | | Finally.cs:177:5:193:5 | {...} | Finally.cs:178:9:192:9 | try {...} ... | +| Finally.cs:178:9:192:9 | After try {...} ... | Finally.cs:177:5:193:5 | After {...} | | Finally.cs:178:9:192:9 | try {...} ... | Finally.cs:179:9:181:9 | {...} | | Finally.cs:179:9:181:9 | {...} | Finally.cs:180:13:180:43 | if (...) ... | +| Finally.cs:180:13:180:43 | After if (...) ... | Finally.cs:179:9:181:9 | After {...} | | Finally.cs:180:13:180:43 | if (...) ... | Finally.cs:180:17:180:18 | access to parameter b1 | -| Finally.cs:180:17:180:18 | access to parameter b1 | Finally.cs:180:27:180:42 | object creation of type ExceptionA | -| Finally.cs:180:17:180:18 | access to parameter b1 | Finally.cs:183:9:192:9 | {...} | -| Finally.cs:180:27:180:42 | object creation of type ExceptionA | Finally.cs:180:21:180:43 | throw ...; | +| Finally.cs:180:17:180:18 | After access to parameter b1 [false] | Finally.cs:180:13:180:43 | After if (...) ... | +| Finally.cs:180:17:180:18 | After access to parameter b1 [true] | Finally.cs:180:21:180:43 | Before throw ...; | +| Finally.cs:180:17:180:18 | access to parameter b1 | Finally.cs:180:17:180:18 | After access to parameter b1 [false] | +| Finally.cs:180:17:180:18 | access to parameter b1 | Finally.cs:180:17:180:18 | After access to parameter b1 [true] | +| Finally.cs:180:21:180:43 | Before throw ...; | Finally.cs:180:27:180:42 | Before object creation of type ExceptionA | +| Finally.cs:180:27:180:42 | After object creation of type ExceptionA | Finally.cs:180:21:180:43 | throw ...; | +| Finally.cs:180:27:180:42 | Before object creation of type ExceptionA | Finally.cs:180:27:180:42 | object creation of type ExceptionA | +| Finally.cs:180:27:180:42 | object creation of type ExceptionA | Finally.cs:180:27:180:42 | After object creation of type ExceptionA | +| Finally.cs:183:9:192:9 | After {...} | Finally.cs:178:9:192:9 | After try {...} ... | | Finally.cs:183:9:192:9 | {...} | Finally.cs:184:13:191:13 | try {...} ... | +| Finally.cs:184:13:191:13 | After try {...} ... | Finally.cs:183:9:192:9 | After {...} | | Finally.cs:184:13:191:13 | try {...} ... | Finally.cs:185:13:187:13 | {...} | | Finally.cs:185:13:187:13 | {...} | Finally.cs:186:17:186:47 | if (...) ... | +| Finally.cs:186:17:186:47 | After if (...) ... | Finally.cs:185:13:187:13 | After {...} | | Finally.cs:186:17:186:47 | if (...) ... | Finally.cs:186:21:186:22 | access to parameter b2 | -| Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:176:10:176:11 | exit M9 (abnormal) | -| Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:176:10:176:11 | exit M9 (normal) | -| Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:186:31:186:46 | object creation of type ExceptionB | -| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:186:25:186:47 | throw ...; | +| Finally.cs:186:21:186:22 | After access to parameter b2 [false] | Finally.cs:186:17:186:47 | After if (...) ... | +| Finally.cs:186:21:186:22 | After access to parameter b2 [true] | Finally.cs:186:25:186:47 | Before throw ...; | +| Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:186:21:186:22 | After access to parameter b2 [false] | +| Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:186:21:186:22 | After access to parameter b2 [true] | +| Finally.cs:186:25:186:47 | Before throw ...; | Finally.cs:186:31:186:46 | Before object creation of type ExceptionB | +| Finally.cs:186:31:186:46 | After object creation of type ExceptionB | Finally.cs:186:25:186:47 | throw ...; | +| Finally.cs:186:31:186:46 | Before object creation of type ExceptionB | Finally.cs:186:31:186:46 | object creation of type ExceptionB | +| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:186:31:186:46 | After object creation of type ExceptionB | | Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:188:13:191:13 | catch (...) {...} | -| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:188:38:188:39 | access to parameter b2 | -| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:189:13:191:13 | {...} | +| Finally.cs:188:13:191:13 | After catch (...) {...} [match] | Finally.cs:188:38:188:39 | access to parameter b2 | +| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:188:13:191:13 | After catch (...) {...} [match] | +| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:188:13:191:13 | After catch (...) {...} [no-match] | +| Finally.cs:188:38:188:39 | After access to parameter b2 [true] | Finally.cs:189:13:191:13 | {...} | +| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:188:38:188:39 | After access to parameter b2 [false] | +| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:188:38:188:39 | After access to parameter b2 [true] | | Finally.cs:189:13:191:13 | {...} | Finally.cs:190:17:190:47 | if (...) ... | +| Finally.cs:190:17:190:47 | After if (...) ... | Finally.cs:189:13:191:13 | After {...} | | Finally.cs:190:17:190:47 | if (...) ... | Finally.cs:190:21:190:22 | access to parameter b1 | -| Finally.cs:190:21:190:22 | access to parameter b1 | Finally.cs:190:31:190:46 | object creation of type ExceptionC | -| Finally.cs:190:31:190:46 | object creation of type ExceptionC | Finally.cs:190:25:190:47 | throw ...; | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:196:5:214:5 | {...} | +| Finally.cs:190:21:190:22 | After access to parameter b1 [false] | Finally.cs:190:17:190:47 | After if (...) ... | +| Finally.cs:190:21:190:22 | After access to parameter b1 [true] | Finally.cs:190:25:190:47 | Before throw ...; | +| Finally.cs:190:21:190:22 | access to parameter b1 | Finally.cs:190:21:190:22 | After access to parameter b1 [false] | +| Finally.cs:190:21:190:22 | access to parameter b1 | Finally.cs:190:21:190:22 | After access to parameter b1 [true] | +| Finally.cs:190:25:190:47 | Before throw ...; | Finally.cs:190:31:190:46 | Before object creation of type ExceptionC | +| Finally.cs:190:31:190:46 | After object creation of type ExceptionC | Finally.cs:190:25:190:47 | throw ...; | +| Finally.cs:190:31:190:46 | Before object creation of type ExceptionC | Finally.cs:190:31:190:46 | object creation of type ExceptionC | +| Finally.cs:190:31:190:46 | object creation of type ExceptionC | Finally.cs:190:31:190:46 | After object creation of type ExceptionC | +| Finally.cs:195:10:195:12 | Entry | Finally.cs:195:19:195:20 | b1 | +| Finally.cs:195:19:195:20 | b1 | Finally.cs:195:28:195:29 | b2 | +| Finally.cs:195:28:195:29 | b2 | Finally.cs:195:37:195:38 | b3 | +| Finally.cs:195:37:195:38 | b3 | Finally.cs:196:5:214:5 | {...} | +| Finally.cs:196:5:214:5 | After {...} | Finally.cs:195:10:195:12 | Normal Exit | | Finally.cs:196:5:214:5 | {...} | Finally.cs:197:9:212:9 | try {...} ... | +| Finally.cs:197:9:212:9 | After try {...} ... | Finally.cs:213:9:213:25 | ...; | | Finally.cs:197:9:212:9 | try {...} ... | Finally.cs:198:9:200:9 | {...} | | Finally.cs:198:9:200:9 | {...} | Finally.cs:199:13:199:43 | if (...) ... | +| Finally.cs:199:13:199:43 | After if (...) ... | Finally.cs:198:9:200:9 | After {...} | | Finally.cs:199:13:199:43 | if (...) ... | Finally.cs:199:17:199:18 | access to parameter b1 | -| Finally.cs:199:17:199:18 | access to parameter b1 | Finally.cs:199:27:199:42 | object creation of type ExceptionA | -| Finally.cs:199:17:199:18 | access to parameter b1 | Finally.cs:202:9:212:9 | {...} | -| Finally.cs:199:27:199:42 | object creation of type ExceptionA | Finally.cs:199:21:199:43 | throw ...; | +| Finally.cs:199:17:199:18 | After access to parameter b1 [false] | Finally.cs:199:13:199:43 | After if (...) ... | +| Finally.cs:199:17:199:18 | After access to parameter b1 [true] | Finally.cs:199:21:199:43 | Before throw ...; | +| Finally.cs:199:17:199:18 | access to parameter b1 | Finally.cs:199:17:199:18 | After access to parameter b1 [false] | +| Finally.cs:199:17:199:18 | access to parameter b1 | Finally.cs:199:17:199:18 | After access to parameter b1 [true] | +| Finally.cs:199:21:199:43 | Before throw ...; | Finally.cs:199:27:199:42 | Before object creation of type ExceptionA | +| Finally.cs:199:27:199:42 | After object creation of type ExceptionA | Finally.cs:199:21:199:43 | throw ...; | +| Finally.cs:199:27:199:42 | Before object creation of type ExceptionA | Finally.cs:199:27:199:42 | object creation of type ExceptionA | +| Finally.cs:199:27:199:42 | object creation of type ExceptionA | Finally.cs:199:27:199:42 | After object creation of type ExceptionA | +| Finally.cs:202:9:212:9 | After {...} | Finally.cs:197:9:212:9 | After try {...} ... | | Finally.cs:202:9:212:9 | {...} | Finally.cs:203:13:210:13 | try {...} ... | +| Finally.cs:203:13:210:13 | After try {...} ... | Finally.cs:211:13:211:29 | ...; | | Finally.cs:203:13:210:13 | try {...} ... | Finally.cs:204:13:206:13 | {...} | | Finally.cs:204:13:206:13 | {...} | Finally.cs:205:17:205:47 | if (...) ... | +| Finally.cs:205:17:205:47 | After if (...) ... | Finally.cs:204:13:206:13 | After {...} | | Finally.cs:205:17:205:47 | if (...) ... | Finally.cs:205:21:205:22 | access to parameter b2 | -| Finally.cs:205:21:205:22 | access to parameter b2 | Finally.cs:205:31:205:46 | object creation of type ExceptionB | -| Finally.cs:205:21:205:22 | access to parameter b2 | Finally.cs:208:13:210:13 | {...} | -| Finally.cs:205:31:205:46 | object creation of type ExceptionB | Finally.cs:205:25:205:47 | throw ...; | +| Finally.cs:205:21:205:22 | After access to parameter b2 [false] | Finally.cs:205:17:205:47 | After if (...) ... | +| Finally.cs:205:21:205:22 | After access to parameter b2 [true] | Finally.cs:205:25:205:47 | Before throw ...; | +| Finally.cs:205:21:205:22 | access to parameter b2 | Finally.cs:205:21:205:22 | After access to parameter b2 [false] | +| Finally.cs:205:21:205:22 | access to parameter b2 | Finally.cs:205:21:205:22 | After access to parameter b2 [true] | +| Finally.cs:205:25:205:47 | Before throw ...; | Finally.cs:205:31:205:46 | Before object creation of type ExceptionB | +| Finally.cs:205:31:205:46 | After object creation of type ExceptionB | Finally.cs:205:25:205:47 | throw ...; | +| Finally.cs:205:31:205:46 | Before object creation of type ExceptionB | Finally.cs:205:31:205:46 | object creation of type ExceptionB | +| Finally.cs:205:31:205:46 | object creation of type ExceptionB | Finally.cs:205:31:205:46 | After object creation of type ExceptionB | +| Finally.cs:208:13:210:13 | After {...} | Finally.cs:203:13:210:13 | After try {...} ... | | Finally.cs:208:13:210:13 | {...} | Finally.cs:209:17:209:47 | if (...) ... | +| Finally.cs:209:17:209:47 | After if (...) ... | Finally.cs:208:13:210:13 | After {...} | | Finally.cs:209:17:209:47 | if (...) ... | Finally.cs:209:21:209:22 | access to parameter b3 | -| Finally.cs:209:21:209:22 | access to parameter b3 | Finally.cs:195:10:195:12 | exit M10 (abnormal) | -| Finally.cs:209:21:209:22 | access to parameter b3 | Finally.cs:209:31:209:46 | object creation of type ExceptionC | -| Finally.cs:209:21:209:22 | access to parameter b3 | Finally.cs:211:13:211:29 | ...; | -| Finally.cs:209:31:209:46 | object creation of type ExceptionC | Finally.cs:209:25:209:47 | throw ...; | -| Finally.cs:211:13:211:16 | this access | Finally.cs:211:26:211:28 | "0" | -| Finally.cs:211:13:211:22 | access to field Field | Finally.cs:211:13:211:28 | ... = ... | -| Finally.cs:211:13:211:28 | ... = ... | Finally.cs:213:9:213:25 | ...; | -| Finally.cs:211:13:211:29 | ...; | Finally.cs:211:13:211:16 | this access | -| Finally.cs:211:26:211:28 | "0" | Finally.cs:211:13:211:22 | access to field Field | -| Finally.cs:213:9:213:12 | this access | Finally.cs:213:22:213:24 | "1" | -| Finally.cs:213:9:213:18 | access to field Field | Finally.cs:213:9:213:24 | ... = ... | -| Finally.cs:213:9:213:24 | ... = ... | Finally.cs:195:10:195:12 | exit M10 (normal) | -| Finally.cs:213:9:213:25 | ...; | Finally.cs:213:9:213:12 | this access | -| Finally.cs:213:22:213:24 | "1" | Finally.cs:213:9:213:18 | access to field Field | -| Finally.cs:216:10:216:12 | enter M11 | Finally.cs:217:5:231:5 | {...} | -| Finally.cs:216:10:216:12 | exit M11 (normal) | Finally.cs:216:10:216:12 | exit M11 | +| Finally.cs:209:21:209:22 | After access to parameter b3 [false] | Finally.cs:209:17:209:47 | After if (...) ... | +| Finally.cs:209:21:209:22 | After access to parameter b3 [true] | Finally.cs:209:25:209:47 | Before throw ...; | +| Finally.cs:209:21:209:22 | access to parameter b3 | Finally.cs:209:21:209:22 | After access to parameter b3 [false] | +| Finally.cs:209:21:209:22 | access to parameter b3 | Finally.cs:209:21:209:22 | After access to parameter b3 [true] | +| Finally.cs:209:25:209:47 | Before throw ...; | Finally.cs:209:31:209:46 | Before object creation of type ExceptionC | +| Finally.cs:209:31:209:46 | After object creation of type ExceptionC | Finally.cs:209:25:209:47 | throw ...; | +| Finally.cs:209:31:209:46 | Before object creation of type ExceptionC | Finally.cs:209:31:209:46 | object creation of type ExceptionC | +| Finally.cs:209:31:209:46 | object creation of type ExceptionC | Finally.cs:209:31:209:46 | After object creation of type ExceptionC | +| Finally.cs:211:13:211:16 | this access | Finally.cs:211:13:211:22 | access to field Field | +| Finally.cs:211:13:211:22 | After access to field Field | Finally.cs:211:26:211:28 | "0" | +| Finally.cs:211:13:211:22 | Before access to field Field | Finally.cs:211:13:211:16 | this access | +| Finally.cs:211:13:211:22 | access to field Field | Finally.cs:211:13:211:22 | After access to field Field | +| Finally.cs:211:13:211:28 | ... = ... | Finally.cs:211:13:211:28 | After ... = ... | +| Finally.cs:211:13:211:28 | After ... = ... | Finally.cs:211:13:211:29 | After ...; | +| Finally.cs:211:13:211:28 | Before ... = ... | Finally.cs:211:13:211:22 | Before access to field Field | +| Finally.cs:211:13:211:29 | ...; | Finally.cs:211:13:211:28 | Before ... = ... | +| Finally.cs:211:13:211:29 | After ...; | Finally.cs:202:9:212:9 | After {...} | +| Finally.cs:211:26:211:28 | "0" | Finally.cs:211:13:211:28 | ... = ... | +| Finally.cs:213:9:213:12 | this access | Finally.cs:213:9:213:18 | access to field Field | +| Finally.cs:213:9:213:18 | After access to field Field | Finally.cs:213:22:213:24 | "1" | +| Finally.cs:213:9:213:18 | Before access to field Field | Finally.cs:213:9:213:12 | this access | +| Finally.cs:213:9:213:18 | access to field Field | Finally.cs:213:9:213:18 | After access to field Field | +| Finally.cs:213:9:213:24 | ... = ... | Finally.cs:213:9:213:24 | After ... = ... | +| Finally.cs:213:9:213:24 | After ... = ... | Finally.cs:213:9:213:25 | After ...; | +| Finally.cs:213:9:213:24 | Before ... = ... | Finally.cs:213:9:213:18 | Before access to field Field | +| Finally.cs:213:9:213:25 | ...; | Finally.cs:213:9:213:24 | Before ... = ... | +| Finally.cs:213:9:213:25 | After ...; | Finally.cs:196:5:214:5 | After {...} | +| Finally.cs:213:22:213:24 | "1" | Finally.cs:213:9:213:24 | ... = ... | +| Finally.cs:216:10:216:12 | Entry | Finally.cs:217:5:231:5 | {...} | +| Finally.cs:216:10:216:12 | Normal Exit | Finally.cs:216:10:216:12 | Exit | +| Finally.cs:217:5:231:5 | After {...} | Finally.cs:216:10:216:12 | Normal Exit | | Finally.cs:217:5:231:5 | {...} | Finally.cs:218:9:229:9 | try {...} ... | +| Finally.cs:218:9:229:9 | After try {...} ... | Finally.cs:230:9:230:34 | ...; | | Finally.cs:218:9:229:9 | try {...} ... | Finally.cs:219:9:221:9 | {...} | | Finally.cs:219:9:221:9 | {...} | Finally.cs:220:13:220:37 | ...; | +| Finally.cs:220:13:220:36 | After call to method WriteLine | Finally.cs:220:13:220:37 | After ...; | +| Finally.cs:220:13:220:36 | Before call to method WriteLine | Finally.cs:220:31:220:35 | "Try" | +| Finally.cs:220:13:220:36 | call to method WriteLine | Finally.cs:220:13:220:36 | After call to method WriteLine | | Finally.cs:220:13:220:36 | call to method WriteLine | Finally.cs:222:9:225:9 | catch {...} | -| Finally.cs:220:13:220:36 | call to method WriteLine | Finally.cs:227:9:229:9 | {...} | -| Finally.cs:220:13:220:37 | ...; | Finally.cs:220:31:220:35 | "Try" | +| Finally.cs:220:13:220:37 | ...; | Finally.cs:220:13:220:36 | Before call to method WriteLine | +| Finally.cs:220:13:220:37 | After ...; | Finally.cs:219:9:221:9 | After {...} | | Finally.cs:220:31:220:35 | "Try" | Finally.cs:220:13:220:36 | call to method WriteLine | -| Finally.cs:222:9:225:9 | catch {...} | Finally.cs:223:9:225:9 | {...} | +| Finally.cs:222:9:225:9 | After catch {...} [match] | Finally.cs:223:9:225:9 | {...} | +| Finally.cs:222:9:225:9 | catch {...} | Finally.cs:222:9:225:9 | After catch {...} [match] | | Finally.cs:223:9:225:9 | {...} | Finally.cs:224:13:224:39 | ...; | -| Finally.cs:224:13:224:39 | ...; | Finally.cs:224:31:224:37 | "Catch" | +| Finally.cs:224:13:224:38 | After call to method WriteLine | Finally.cs:224:13:224:39 | After ...; | +| Finally.cs:224:13:224:38 | Before call to method WriteLine | Finally.cs:224:31:224:37 | "Catch" | +| Finally.cs:224:13:224:38 | call to method WriteLine | Finally.cs:224:13:224:38 | After call to method WriteLine | +| Finally.cs:224:13:224:39 | ...; | Finally.cs:224:13:224:38 | Before call to method WriteLine | +| Finally.cs:224:13:224:39 | After ...; | Finally.cs:223:9:225:9 | After {...} | | Finally.cs:224:31:224:37 | "Catch" | Finally.cs:224:13:224:38 | call to method WriteLine | +| Finally.cs:227:9:229:9 | After {...} | Finally.cs:218:9:229:9 | After try {...} ... | | Finally.cs:227:9:229:9 | {...} | Finally.cs:228:13:228:41 | ...; | -| Finally.cs:228:13:228:40 | call to method WriteLine | Finally.cs:230:9:230:34 | ...; | -| Finally.cs:228:13:228:41 | ...; | Finally.cs:228:31:228:39 | "Finally" | +| Finally.cs:228:13:228:40 | After call to method WriteLine | Finally.cs:228:13:228:41 | After ...; | +| Finally.cs:228:13:228:40 | Before call to method WriteLine | Finally.cs:228:31:228:39 | "Finally" | +| Finally.cs:228:13:228:40 | call to method WriteLine | Finally.cs:228:13:228:40 | After call to method WriteLine | +| Finally.cs:228:13:228:41 | ...; | Finally.cs:228:13:228:40 | Before call to method WriteLine | +| Finally.cs:228:13:228:41 | After ...; | Finally.cs:227:9:229:9 | After {...} | | Finally.cs:228:31:228:39 | "Finally" | Finally.cs:228:13:228:40 | call to method WriteLine | -| Finally.cs:230:9:230:33 | call to method WriteLine | Finally.cs:216:10:216:12 | exit M11 (normal) | -| Finally.cs:230:9:230:34 | ...; | Finally.cs:230:27:230:32 | "Done" | +| Finally.cs:230:9:230:33 | After call to method WriteLine | Finally.cs:230:9:230:34 | After ...; | +| Finally.cs:230:9:230:33 | Before call to method WriteLine | Finally.cs:230:27:230:32 | "Done" | +| Finally.cs:230:9:230:33 | call to method WriteLine | Finally.cs:230:9:230:33 | After call to method WriteLine | +| Finally.cs:230:9:230:34 | ...; | Finally.cs:230:9:230:33 | Before call to method WriteLine | +| Finally.cs:230:9:230:34 | After ...; | Finally.cs:217:5:231:5 | After {...} | | Finally.cs:230:27:230:32 | "Done" | Finally.cs:230:9:230:33 | call to method WriteLine | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:234:5:261:5 | {...} | +| Finally.cs:233:10:233:12 | Entry | Finally.cs:233:19:233:20 | b1 | +| Finally.cs:233:19:233:20 | b1 | Finally.cs:233:28:233:29 | b2 | +| Finally.cs:233:28:233:29 | b2 | Finally.cs:234:5:261:5 | {...} | +| Finally.cs:234:5:261:5 | After {...} | Finally.cs:233:10:233:12 | Normal Exit | | Finally.cs:234:5:261:5 | {...} | Finally.cs:235:9:259:9 | try {...} ... | +| Finally.cs:235:9:259:9 | After try {...} ... | Finally.cs:260:9:260:34 | ...; | | Finally.cs:235:9:259:9 | try {...} ... | Finally.cs:236:9:255:9 | {...} | | Finally.cs:236:9:255:9 | {...} | Finally.cs:237:13:253:13 | try {...} ... | +| Finally.cs:237:13:253:13 | After try {...} ... | Finally.cs:254:13:254:45 | ...; | | Finally.cs:237:13:253:13 | try {...} ... | Finally.cs:238:13:241:13 | {...} | | Finally.cs:238:13:241:13 | {...} | Finally.cs:239:17:240:43 | if (...) ... | +| Finally.cs:239:17:240:43 | After if (...) ... | Finally.cs:238:13:241:13 | After {...} | | Finally.cs:239:17:240:43 | if (...) ... | Finally.cs:239:21:239:22 | access to parameter b1 | -| Finally.cs:239:21:239:22 | access to parameter b1 | Finally.cs:240:27:240:42 | object creation of type ExceptionA | -| Finally.cs:239:21:239:22 | access to parameter b1 | Finally.cs:243:13:253:13 | {...} | -| Finally.cs:240:27:240:42 | object creation of type ExceptionA | Finally.cs:240:21:240:43 | throw ...; | +| Finally.cs:239:21:239:22 | After access to parameter b1 [false] | Finally.cs:239:17:240:43 | After if (...) ... | +| Finally.cs:239:21:239:22 | After access to parameter b1 [true] | Finally.cs:240:21:240:43 | Before throw ...; | +| Finally.cs:239:21:239:22 | access to parameter b1 | Finally.cs:239:21:239:22 | After access to parameter b1 [false] | +| Finally.cs:239:21:239:22 | access to parameter b1 | Finally.cs:239:21:239:22 | After access to parameter b1 [true] | +| Finally.cs:240:21:240:43 | Before throw ...; | Finally.cs:240:27:240:42 | Before object creation of type ExceptionA | +| Finally.cs:240:27:240:42 | After object creation of type ExceptionA | Finally.cs:240:21:240:43 | throw ...; | +| Finally.cs:240:27:240:42 | Before object creation of type ExceptionA | Finally.cs:240:27:240:42 | object creation of type ExceptionA | +| Finally.cs:240:27:240:42 | object creation of type ExceptionA | Finally.cs:240:27:240:42 | After object creation of type ExceptionA | +| Finally.cs:243:13:253:13 | After {...} | Finally.cs:237:13:253:13 | After try {...} ... | | Finally.cs:243:13:253:13 | {...} | Finally.cs:244:17:252:17 | try {...} ... | +| Finally.cs:244:17:252:17 | After try {...} ... | Finally.cs:243:13:253:13 | After {...} | | Finally.cs:244:17:252:17 | try {...} ... | Finally.cs:245:17:248:17 | {...} | | Finally.cs:245:17:248:17 | {...} | Finally.cs:246:21:247:47 | if (...) ... | +| Finally.cs:246:21:247:47 | After if (...) ... | Finally.cs:245:17:248:17 | After {...} | | Finally.cs:246:21:247:47 | if (...) ... | Finally.cs:246:25:246:26 | access to parameter b2 | -| Finally.cs:246:25:246:26 | access to parameter b2 | Finally.cs:247:31:247:46 | object creation of type ExceptionA | -| Finally.cs:246:25:246:26 | access to parameter b2 | Finally.cs:250:17:252:17 | {...} | -| Finally.cs:247:31:247:46 | object creation of type ExceptionA | Finally.cs:247:25:247:47 | throw ...; | +| Finally.cs:246:25:246:26 | After access to parameter b2 [false] | Finally.cs:246:21:247:47 | After if (...) ... | +| Finally.cs:246:25:246:26 | After access to parameter b2 [true] | Finally.cs:247:25:247:47 | Before throw ...; | +| Finally.cs:246:25:246:26 | access to parameter b2 | Finally.cs:246:25:246:26 | After access to parameter b2 [false] | +| Finally.cs:246:25:246:26 | access to parameter b2 | Finally.cs:246:25:246:26 | After access to parameter b2 [true] | +| Finally.cs:247:25:247:47 | Before throw ...; | Finally.cs:247:31:247:46 | Before object creation of type ExceptionA | +| Finally.cs:247:31:247:46 | After object creation of type ExceptionA | Finally.cs:247:25:247:47 | throw ...; | +| Finally.cs:247:31:247:46 | Before object creation of type ExceptionA | Finally.cs:247:31:247:46 | object creation of type ExceptionA | +| Finally.cs:247:31:247:46 | object creation of type ExceptionA | Finally.cs:247:31:247:46 | After object creation of type ExceptionA | +| Finally.cs:250:17:252:17 | After {...} | Finally.cs:244:17:252:17 | After try {...} ... | +| Finally.cs:250:17:252:17 | After {...} | Finally.cs:257:9:259:9 | {...} | | Finally.cs:250:17:252:17 | {...} | Finally.cs:251:21:251:55 | ...; | -| Finally.cs:251:21:251:54 | call to method WriteLine | Finally.cs:254:13:254:45 | ...; | -| Finally.cs:251:21:251:54 | call to method WriteLine | Finally.cs:257:9:259:9 | {...} | -| Finally.cs:251:21:251:55 | ...; | Finally.cs:251:39:251:53 | "Inner finally" | +| Finally.cs:251:21:251:54 | After call to method WriteLine | Finally.cs:251:21:251:55 | After ...; | +| Finally.cs:251:21:251:54 | Before call to method WriteLine | Finally.cs:251:39:251:53 | "Inner finally" | +| Finally.cs:251:21:251:54 | call to method WriteLine | Finally.cs:251:21:251:54 | After call to method WriteLine | +| Finally.cs:251:21:251:55 | ...; | Finally.cs:251:21:251:54 | Before call to method WriteLine | +| Finally.cs:251:21:251:55 | After ...; | Finally.cs:250:17:252:17 | After {...} | | Finally.cs:251:39:251:53 | "Inner finally" | Finally.cs:251:21:251:54 | call to method WriteLine | -| Finally.cs:254:13:254:45 | ...; | Finally.cs:254:31:254:43 | "Mid finally" | +| Finally.cs:254:13:254:44 | After call to method WriteLine | Finally.cs:254:13:254:45 | After ...; | +| Finally.cs:254:13:254:44 | Before call to method WriteLine | Finally.cs:254:31:254:43 | "Mid finally" | +| Finally.cs:254:13:254:44 | call to method WriteLine | Finally.cs:254:13:254:44 | After call to method WriteLine | +| Finally.cs:254:13:254:45 | ...; | Finally.cs:254:13:254:44 | Before call to method WriteLine | +| Finally.cs:254:13:254:45 | After ...; | Finally.cs:236:9:255:9 | After {...} | | Finally.cs:254:31:254:43 | "Mid finally" | Finally.cs:254:13:254:44 | call to method WriteLine | +| Finally.cs:257:9:259:9 | After {...} | Finally.cs:233:10:233:12 | Exceptional Exit | +| Finally.cs:257:9:259:9 | After {...} | Finally.cs:235:9:259:9 | After try {...} ... | | Finally.cs:257:9:259:9 | {...} | Finally.cs:258:13:258:47 | ...; | -| Finally.cs:258:13:258:46 | call to method WriteLine | Finally.cs:233:10:233:12 | exit M12 (abnormal) | -| Finally.cs:258:13:258:46 | call to method WriteLine | Finally.cs:260:9:260:34 | ...; | -| Finally.cs:258:13:258:47 | ...; | Finally.cs:258:31:258:45 | "Outer finally" | +| Finally.cs:258:13:258:46 | After call to method WriteLine | Finally.cs:258:13:258:47 | After ...; | +| Finally.cs:258:13:258:46 | Before call to method WriteLine | Finally.cs:258:31:258:45 | "Outer finally" | +| Finally.cs:258:13:258:46 | call to method WriteLine | Finally.cs:258:13:258:46 | After call to method WriteLine | +| Finally.cs:258:13:258:47 | ...; | Finally.cs:258:13:258:46 | Before call to method WriteLine | +| Finally.cs:258:13:258:47 | After ...; | Finally.cs:257:9:259:9 | After {...} | | Finally.cs:258:31:258:45 | "Outer finally" | Finally.cs:258:13:258:46 | call to method WriteLine | -| Finally.cs:260:9:260:33 | call to method WriteLine | Finally.cs:233:10:233:12 | exit M12 (normal) | -| Finally.cs:260:9:260:34 | ...; | Finally.cs:260:27:260:32 | "Done" | +| Finally.cs:260:9:260:33 | After call to method WriteLine | Finally.cs:260:9:260:34 | After ...; | +| Finally.cs:260:9:260:33 | Before call to method WriteLine | Finally.cs:260:27:260:32 | "Done" | +| Finally.cs:260:9:260:33 | call to method WriteLine | Finally.cs:260:9:260:33 | After call to method WriteLine | +| Finally.cs:260:9:260:34 | ...; | Finally.cs:260:9:260:33 | Before call to method WriteLine | +| Finally.cs:260:9:260:34 | After ...; | Finally.cs:234:5:261:5 | After {...} | | Finally.cs:260:27:260:32 | "Done" | Finally.cs:260:9:260:33 | call to method WriteLine | -| Finally.cs:263:10:263:12 | enter M13 | Finally.cs:264:5:274:5 | {...} | +| Finally.cs:263:10:263:12 | Entry | Finally.cs:263:18:263:18 | i | +| Finally.cs:263:18:263:18 | i | Finally.cs:264:5:274:5 | {...} | +| Finally.cs:264:5:274:5 | After {...} | Finally.cs:263:10:263:12 | Normal Exit | | Finally.cs:264:5:274:5 | {...} | Finally.cs:265:9:273:9 | try {...} ... | +| Finally.cs:265:9:273:9 | After try {...} ... | Finally.cs:264:5:274:5 | After {...} | | Finally.cs:265:9:273:9 | try {...} ... | Finally.cs:266:9:268:9 | {...} | | Finally.cs:266:9:268:9 | {...} | Finally.cs:267:13:267:35 | ...; | +| Finally.cs:267:13:267:34 | After call to method WriteLine | Finally.cs:267:13:267:35 | After ...; | +| Finally.cs:267:13:267:34 | Before call to method WriteLine | Finally.cs:267:31:267:33 | "1" | +| Finally.cs:267:13:267:34 | call to method WriteLine | Finally.cs:267:13:267:34 | After call to method WriteLine | | Finally.cs:267:13:267:34 | call to method WriteLine | Finally.cs:270:9:273:9 | {...} | -| Finally.cs:267:13:267:35 | ...; | Finally.cs:267:31:267:33 | "1" | +| Finally.cs:267:13:267:35 | ...; | Finally.cs:267:13:267:34 | Before call to method WriteLine | +| Finally.cs:267:13:267:35 | After ...; | Finally.cs:266:9:268:9 | After {...} | | Finally.cs:267:31:267:33 | "1" | Finally.cs:267:13:267:34 | call to method WriteLine | +| Finally.cs:270:9:273:9 | After {...} | Finally.cs:263:10:263:12 | Exceptional Exit | +| Finally.cs:270:9:273:9 | After {...} | Finally.cs:265:9:273:9 | After try {...} ... | | Finally.cs:270:9:273:9 | {...} | Finally.cs:271:13:271:35 | ...; | -| Finally.cs:271:13:271:34 | call to method WriteLine | Finally.cs:272:13:272:19 | ...; | -| Finally.cs:271:13:271:35 | ...; | Finally.cs:271:31:271:33 | "3" | +| Finally.cs:271:13:271:34 | After call to method WriteLine | Finally.cs:271:13:271:35 | After ...; | +| Finally.cs:271:13:271:34 | Before call to method WriteLine | Finally.cs:271:31:271:33 | "3" | +| Finally.cs:271:13:271:34 | call to method WriteLine | Finally.cs:271:13:271:34 | After call to method WriteLine | +| Finally.cs:271:13:271:35 | ...; | Finally.cs:271:13:271:34 | Before call to method WriteLine | +| Finally.cs:271:13:271:35 | After ...; | Finally.cs:272:13:272:19 | ...; | | Finally.cs:271:31:271:33 | "3" | Finally.cs:271:13:271:34 | call to method WriteLine | | Finally.cs:272:13:272:13 | access to parameter i | Finally.cs:272:18:272:18 | 3 | -| Finally.cs:272:13:272:18 | ... += ... | Finally.cs:263:10:263:12 | exit M13 (abnormal) | -| Finally.cs:272:13:272:18 | ... += ... | Finally.cs:263:10:263:12 | exit M13 (normal) | -| Finally.cs:272:13:272:19 | ...; | Finally.cs:272:13:272:13 | access to parameter i | +| Finally.cs:272:13:272:18 | ... += ... | Finally.cs:272:13:272:18 | After ... += ... | +| Finally.cs:272:13:272:18 | After ... += ... | Finally.cs:272:13:272:19 | After ...; | +| Finally.cs:272:13:272:18 | Before ... += ... | Finally.cs:272:13:272:13 | access to parameter i | +| Finally.cs:272:13:272:19 | ...; | Finally.cs:272:13:272:18 | Before ... += ... | +| Finally.cs:272:13:272:19 | After ...; | Finally.cs:270:9:273:9 | After {...} | | Finally.cs:272:18:272:18 | 3 | Finally.cs:272:13:272:18 | ... += ... | -| Foreach.cs:4:7:4:13 | call to constructor Object | Foreach.cs:4:7:4:13 | {...} | -| Foreach.cs:4:7:4:13 | call to method | Foreach.cs:4:7:4:13 | call to constructor Object | -| Foreach.cs:4:7:4:13 | enter Foreach | Foreach.cs:4:7:4:13 | this access | -| Foreach.cs:4:7:4:13 | exit Foreach (normal) | Foreach.cs:4:7:4:13 | exit Foreach | +| Foreach.cs:4:7:4:13 | After call to constructor Object | Foreach.cs:4:7:4:13 | {...} | +| Foreach.cs:4:7:4:13 | After call to method | Foreach.cs:4:7:4:13 | Before call to constructor Object | +| Foreach.cs:4:7:4:13 | Before call to constructor Object | Foreach.cs:4:7:4:13 | call to constructor Object | +| Foreach.cs:4:7:4:13 | Before call to method | Foreach.cs:4:7:4:13 | this access | +| Foreach.cs:4:7:4:13 | Entry | Foreach.cs:4:7:4:13 | Before call to method | +| Foreach.cs:4:7:4:13 | Normal Exit | Foreach.cs:4:7:4:13 | Exit | +| Foreach.cs:4:7:4:13 | call to constructor Object | Foreach.cs:4:7:4:13 | After call to constructor Object | +| Foreach.cs:4:7:4:13 | call to method | Foreach.cs:4:7:4:13 | After call to method | | Foreach.cs:4:7:4:13 | this access | Foreach.cs:4:7:4:13 | call to method | -| Foreach.cs:4:7:4:13 | {...} | Foreach.cs:4:7:4:13 | exit Foreach (normal) | -| Foreach.cs:6:10:6:11 | enter M1 | Foreach.cs:7:5:10:5 | {...} | -| Foreach.cs:6:10:6:11 | exit M1 (normal) | Foreach.cs:6:10:6:11 | exit M1 | -| Foreach.cs:7:5:10:5 | {...} | Foreach.cs:8:29:8:32 | access to parameter args | -| Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:6:10:6:11 | exit M1 (normal) | -| Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:22:8:24 | String arg | +| Foreach.cs:4:7:4:13 | {...} | Foreach.cs:4:7:4:13 | Normal Exit | +| Foreach.cs:6:10:6:11 | Entry | Foreach.cs:6:22:6:25 | args | +| Foreach.cs:6:10:6:11 | Normal Exit | Foreach.cs:6:10:6:11 | Exit | +| Foreach.cs:6:22:6:25 | args | Foreach.cs:7:5:10:5 | {...} | +| Foreach.cs:7:5:10:5 | After {...} | Foreach.cs:6:10:6:11 | Normal Exit | +| Foreach.cs:7:5:10:5 | {...} | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | +| Foreach.cs:8:9:9:13 | After foreach (... ... in ...) ... | Foreach.cs:7:5:10:5 | After {...} | +| Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:29:8:32 | access to parameter args | | Foreach.cs:8:22:8:24 | String arg | Foreach.cs:9:13:9:13 | ; | -| Foreach.cs:8:29:8:32 | access to parameter args | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | -| Foreach.cs:12:10:12:11 | enter M2 | Foreach.cs:13:5:16:5 | {...} | -| Foreach.cs:12:10:12:11 | exit M2 (normal) | Foreach.cs:12:10:12:11 | exit M2 | -| Foreach.cs:13:5:16:5 | {...} | Foreach.cs:14:27:14:30 | access to parameter args | -| Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:12:10:12:11 | exit M2 (normal) | -| Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:14:22:14:22 | String _ | +| Foreach.cs:8:29:8:32 | After access to parameter args [non-empty] | Foreach.cs:8:22:8:24 | String arg | +| Foreach.cs:8:29:8:32 | access to parameter args | Foreach.cs:8:29:8:32 | After access to parameter args [empty] | +| Foreach.cs:8:29:8:32 | access to parameter args | Foreach.cs:8:29:8:32 | After access to parameter args [non-empty] | +| Foreach.cs:9:13:9:13 | ; | Foreach.cs:8:9:9:13 | [LoopHeader] foreach (... ... in ...) ... | +| Foreach.cs:12:10:12:11 | Entry | Foreach.cs:12:22:12:25 | args | +| Foreach.cs:12:10:12:11 | Normal Exit | Foreach.cs:12:10:12:11 | Exit | +| Foreach.cs:12:22:12:25 | args | Foreach.cs:13:5:16:5 | {...} | +| Foreach.cs:13:5:16:5 | After {...} | Foreach.cs:12:10:12:11 | Normal Exit | +| Foreach.cs:13:5:16:5 | {...} | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | +| Foreach.cs:14:9:15:13 | After foreach (... ... in ...) ... | Foreach.cs:13:5:16:5 | After {...} | +| Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:14:27:14:30 | access to parameter args | | Foreach.cs:14:22:14:22 | String _ | Foreach.cs:15:13:15:13 | ; | -| Foreach.cs:14:27:14:30 | access to parameter args | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | -| Foreach.cs:18:10:18:11 | enter M3 | Foreach.cs:19:5:22:5 | {...} | -| Foreach.cs:18:10:18:11 | exit M3 (normal) | Foreach.cs:18:10:18:11 | exit M3 | -| Foreach.cs:19:5:22:5 | {...} | Foreach.cs:20:27:20:27 | access to parameter e | -| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:18:10:18:11 | exit M3 (normal) | -| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:22:20:22 | String x | +| Foreach.cs:14:27:14:30 | After access to parameter args [non-empty] | Foreach.cs:14:22:14:22 | String _ | +| Foreach.cs:14:27:14:30 | access to parameter args | Foreach.cs:14:27:14:30 | After access to parameter args [empty] | +| Foreach.cs:14:27:14:30 | access to parameter args | Foreach.cs:14:27:14:30 | After access to parameter args [non-empty] | +| Foreach.cs:15:13:15:13 | ; | Foreach.cs:14:9:15:13 | [LoopHeader] foreach (... ... in ...) ... | +| Foreach.cs:18:10:18:11 | Entry | Foreach.cs:18:33:18:33 | e | +| Foreach.cs:18:10:18:11 | Normal Exit | Foreach.cs:18:10:18:11 | Exit | +| Foreach.cs:18:33:18:33 | e | Foreach.cs:19:5:22:5 | {...} | +| Foreach.cs:19:5:22:5 | After {...} | Foreach.cs:18:10:18:11 | Normal Exit | +| Foreach.cs:19:5:22:5 | {...} | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | +| Foreach.cs:20:9:21:11 | After foreach (... ... in ...) ... | Foreach.cs:19:5:22:5 | After {...} | +| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:27:20:68 | ... ?? ... | | Foreach.cs:20:22:20:22 | String x | Foreach.cs:21:11:21:11 | ; | -| Foreach.cs:20:27:20:27 | access to parameter e | Foreach.cs:20:27:20:38 | call to method ToArray | -| Foreach.cs:20:27:20:27 | access to parameter e | Foreach.cs:20:43:20:68 | call to method Empty | -| Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | -| Foreach.cs:24:10:24:11 | enter M4 | Foreach.cs:25:5:28:5 | {...} | -| Foreach.cs:24:10:24:11 | exit M4 (normal) | Foreach.cs:24:10:24:11 | exit M4 | -| Foreach.cs:25:5:28:5 | {...} | Foreach.cs:26:36:26:39 | access to parameter args | -| Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | Foreach.cs:24:10:24:11 | exit M4 (normal) | -| Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | Foreach.cs:26:23:26:23 | String x | -| Foreach.cs:26:18:26:31 | (..., ...) | Foreach.cs:27:11:27:11 | ; | +| Foreach.cs:20:27:20:27 | After access to parameter e [non-null] | Foreach.cs:20:27:20:38 | call to method ToArray | +| Foreach.cs:20:27:20:27 | access to parameter e | Foreach.cs:20:27:20:27 | After access to parameter e [non-null] | +| Foreach.cs:20:27:20:27 | access to parameter e | Foreach.cs:20:27:20:27 | After access to parameter e [null] | +| Foreach.cs:20:27:20:38 | After call to method ToArray [null] | Foreach.cs:20:43:20:68 | Before call to method Empty | +| Foreach.cs:20:27:20:38 | Before call to method ToArray | Foreach.cs:20:27:20:27 | access to parameter e | +| Foreach.cs:20:27:20:38 | call to method ToArray | Foreach.cs:20:27:20:38 | After call to method ToArray [non-null] | +| Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:20:27:20:38 | Before call to method ToArray | +| Foreach.cs:20:27:20:68 | After ... ?? ... [non-empty] | Foreach.cs:20:22:20:22 | String x | +| Foreach.cs:20:43:20:68 | Before call to method Empty | Foreach.cs:20:43:20:68 | call to method Empty | +| Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:20:43:20:68 | After call to method Empty [empty] | +| Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:20:43:20:68 | After call to method Empty [non-empty] | +| Foreach.cs:21:11:21:11 | ; | Foreach.cs:20:9:21:11 | [LoopHeader] foreach (... ... in ...) ... | +| Foreach.cs:24:10:24:11 | Entry | Foreach.cs:24:40:24:43 | args | +| Foreach.cs:24:10:24:11 | Normal Exit | Foreach.cs:24:10:24:11 | Exit | +| Foreach.cs:24:40:24:43 | args | Foreach.cs:25:5:28:5 | {...} | +| Foreach.cs:25:5:28:5 | After {...} | Foreach.cs:24:10:24:11 | Normal Exit | +| Foreach.cs:25:5:28:5 | {...} | Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | +| Foreach.cs:26:9:27:11 | After foreach (... ... in ...) ... | Foreach.cs:25:5:28:5 | After {...} | +| Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | Foreach.cs:26:36:26:39 | access to parameter args | +| Foreach.cs:26:18:26:31 | (..., ...) | Foreach.cs:26:18:26:31 | After (..., ...) | +| Foreach.cs:26:18:26:31 | After (..., ...) | Foreach.cs:27:11:27:11 | ; | +| Foreach.cs:26:18:26:31 | Before (..., ...) | Foreach.cs:26:23:26:23 | String x | | Foreach.cs:26:23:26:23 | String x | Foreach.cs:26:30:26:30 | Int32 y | | Foreach.cs:26:30:26:30 | Int32 y | Foreach.cs:26:18:26:31 | (..., ...) | -| Foreach.cs:26:36:26:39 | access to parameter args | Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | -| Foreach.cs:30:10:30:11 | enter M5 | Foreach.cs:31:5:34:5 | {...} | -| Foreach.cs:30:10:30:11 | exit M5 (normal) | Foreach.cs:30:10:30:11 | exit M5 | -| Foreach.cs:31:5:34:5 | {...} | Foreach.cs:32:32:32:35 | access to parameter args | -| Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | Foreach.cs:30:10:30:11 | exit M5 (normal) | -| Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | Foreach.cs:32:23:32:23 | String x | -| Foreach.cs:32:18:32:27 | (..., ...) | Foreach.cs:33:11:33:11 | ; | +| Foreach.cs:26:36:26:39 | After access to parameter args [non-empty] | Foreach.cs:26:18:26:31 | Before (..., ...) | +| Foreach.cs:26:36:26:39 | access to parameter args | Foreach.cs:26:36:26:39 | After access to parameter args [empty] | +| Foreach.cs:26:36:26:39 | access to parameter args | Foreach.cs:26:36:26:39 | After access to parameter args [non-empty] | +| Foreach.cs:27:11:27:11 | ; | Foreach.cs:26:9:27:11 | [LoopHeader] foreach (... ... in ...) ... | +| Foreach.cs:30:10:30:11 | Entry | Foreach.cs:30:40:30:43 | args | +| Foreach.cs:30:10:30:11 | Normal Exit | Foreach.cs:30:10:30:11 | Exit | +| Foreach.cs:30:40:30:43 | args | Foreach.cs:31:5:34:5 | {...} | +| Foreach.cs:31:5:34:5 | After {...} | Foreach.cs:30:10:30:11 | Normal Exit | +| Foreach.cs:31:5:34:5 | {...} | Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | +| Foreach.cs:32:9:33:11 | After foreach (... ... in ...) ... | Foreach.cs:31:5:34:5 | After {...} | +| Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | Foreach.cs:32:32:32:35 | access to parameter args | +| Foreach.cs:32:18:32:27 | (..., ...) | Foreach.cs:32:18:32:27 | After (..., ...) | +| Foreach.cs:32:18:32:27 | After (..., ...) | Foreach.cs:33:11:33:11 | ; | +| Foreach.cs:32:18:32:27 | Before (..., ...) | Foreach.cs:32:23:32:23 | String x | | Foreach.cs:32:23:32:23 | String x | Foreach.cs:32:26:32:26 | Int32 y | | Foreach.cs:32:26:32:26 | Int32 y | Foreach.cs:32:18:32:27 | (..., ...) | -| Foreach.cs:32:32:32:35 | access to parameter args | Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | -| Foreach.cs:36:10:36:11 | enter M6 | Foreach.cs:37:5:40:5 | {...} | -| Foreach.cs:36:10:36:11 | exit M6 (normal) | Foreach.cs:36:10:36:11 | exit M6 | -| Foreach.cs:37:5:40:5 | {...} | Foreach.cs:38:39:38:42 | access to parameter args | -| Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | Foreach.cs:36:10:36:11 | exit M6 (normal) | -| Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | Foreach.cs:38:26:38:26 | String x | -| Foreach.cs:38:18:38:34 | (..., ...) | Foreach.cs:39:11:39:11 | ; | +| Foreach.cs:32:32:32:35 | After access to parameter args [non-empty] | Foreach.cs:32:18:32:27 | Before (..., ...) | +| Foreach.cs:32:32:32:35 | access to parameter args | Foreach.cs:32:32:32:35 | After access to parameter args [empty] | +| Foreach.cs:32:32:32:35 | access to parameter args | Foreach.cs:32:32:32:35 | After access to parameter args [non-empty] | +| Foreach.cs:33:11:33:11 | ; | Foreach.cs:32:9:33:11 | [LoopHeader] foreach (... ... in ...) ... | +| Foreach.cs:36:10:36:11 | Entry | Foreach.cs:36:40:36:43 | args | +| Foreach.cs:36:10:36:11 | Normal Exit | Foreach.cs:36:10:36:11 | Exit | +| Foreach.cs:36:40:36:43 | args | Foreach.cs:37:5:40:5 | {...} | +| Foreach.cs:37:5:40:5 | After {...} | Foreach.cs:36:10:36:11 | Normal Exit | +| Foreach.cs:37:5:40:5 | {...} | Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | +| Foreach.cs:38:9:39:11 | After foreach (... ... in ...) ... | Foreach.cs:37:5:40:5 | After {...} | +| Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | Foreach.cs:38:39:38:42 | access to parameter args | +| Foreach.cs:38:18:38:34 | (..., ...) | Foreach.cs:38:18:38:34 | After (..., ...) | +| Foreach.cs:38:18:38:34 | After (..., ...) | Foreach.cs:39:11:39:11 | ; | +| Foreach.cs:38:18:38:34 | Before (..., ...) | Foreach.cs:38:26:38:26 | String x | | Foreach.cs:38:26:38:26 | String x | Foreach.cs:38:33:38:33 | Int32 y | | Foreach.cs:38:33:38:33 | Int32 y | Foreach.cs:38:18:38:34 | (..., ...) | -| Foreach.cs:38:39:38:42 | access to parameter args | Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | -| Initializers.cs:3:7:3:18 | enter | Initializers.cs:5:9:5:9 | this access | -| Initializers.cs:3:7:3:18 | enter Initializers | Initializers.cs:3:7:3:18 | {...} | -| Initializers.cs:3:7:3:18 | exit (normal) | Initializers.cs:3:7:3:18 | exit | -| Initializers.cs:3:7:3:18 | exit Initializers (normal) | Initializers.cs:3:7:3:18 | exit Initializers | -| Initializers.cs:3:7:3:18 | {...} | Initializers.cs:3:7:3:18 | exit Initializers (normal) | -| Initializers.cs:5:9:5:9 | access to field F | Initializers.cs:5:9:5:17 | ... = ... | -| Initializers.cs:5:9:5:9 | this access | Initializers.cs:5:13:5:13 | access to field H | -| Initializers.cs:5:9:5:17 | ... = ... | Initializers.cs:6:9:6:9 | this access | +| Foreach.cs:38:39:38:42 | After access to parameter args [non-empty] | Foreach.cs:38:18:38:34 | Before (..., ...) | +| Foreach.cs:38:39:38:42 | access to parameter args | Foreach.cs:38:39:38:42 | After access to parameter args [empty] | +| Foreach.cs:38:39:38:42 | access to parameter args | Foreach.cs:38:39:38:42 | After access to parameter args [non-empty] | +| Foreach.cs:39:11:39:11 | ; | Foreach.cs:38:9:39:11 | [LoopHeader] foreach (... ... in ...) ... | +| Initializers.cs:3:7:3:18 | Entry | Initializers.cs:5:9:5:17 | Before ... = ... | +| Initializers.cs:3:7:3:18 | Entry | Initializers.cs:18:16:18:20 | Before ... = ... | +| Initializers.cs:3:7:3:18 | Normal Exit | Initializers.cs:3:7:3:18 | Exit | +| Initializers.cs:3:7:3:18 | Normal Exit | Initializers.cs:3:7:3:18 | Exit | +| Initializers.cs:3:7:3:18 | {...} | Initializers.cs:3:7:3:18 | Normal Exit | +| Initializers.cs:5:9:5:9 | After access to field F | Initializers.cs:5:13:5:17 | Before ... + ... | +| Initializers.cs:5:9:5:9 | Before access to field F | Initializers.cs:5:9:5:9 | this access | +| Initializers.cs:5:9:5:9 | access to field F | Initializers.cs:5:9:5:9 | After access to field F | +| Initializers.cs:5:9:5:9 | this access | Initializers.cs:5:9:5:9 | access to field F | +| Initializers.cs:5:9:5:17 | ... = ... | Initializers.cs:5:9:5:17 | After ... = ... | +| Initializers.cs:5:9:5:17 | After ... = ... | Initializers.cs:6:25:6:31 | Before ... = ... | +| Initializers.cs:5:9:5:17 | Before ... = ... | Initializers.cs:5:9:5:9 | Before access to field F | | Initializers.cs:5:13:5:13 | access to field H | Initializers.cs:5:17:5:17 | 1 | -| Initializers.cs:5:13:5:17 | ... + ... | Initializers.cs:5:9:5:9 | access to field F | +| Initializers.cs:5:13:5:17 | ... + ... | Initializers.cs:5:13:5:17 | After ... + ... | +| Initializers.cs:5:13:5:17 | After ... + ... | Initializers.cs:5:9:5:17 | ... = ... | +| Initializers.cs:5:13:5:17 | Before ... + ... | Initializers.cs:5:13:5:13 | access to field H | | Initializers.cs:5:17:5:17 | 1 | Initializers.cs:5:13:5:17 | ... + ... | -| Initializers.cs:6:9:6:9 | access to property G | Initializers.cs:6:25:6:31 | ... = ... | -| Initializers.cs:6:9:6:9 | this access | Initializers.cs:6:27:6:27 | access to field H | -| Initializers.cs:6:25:6:31 | ... = ... | Initializers.cs:3:7:3:18 | exit (normal) | +| Initializers.cs:6:9:6:9 | After access to property G | Initializers.cs:6:27:6:31 | Before ... + ... | +| Initializers.cs:6:9:6:9 | Before access to property G | Initializers.cs:6:9:6:9 | this access | +| Initializers.cs:6:9:6:9 | access to property G | Initializers.cs:6:9:6:9 | After access to property G | +| Initializers.cs:6:9:6:9 | this access | Initializers.cs:6:9:6:9 | access to property G | +| Initializers.cs:6:25:6:31 | ... = ... | Initializers.cs:6:25:6:31 | After ... = ... | +| Initializers.cs:6:25:6:31 | After ... = ... | Initializers.cs:3:7:3:18 | Normal Exit | +| Initializers.cs:6:25:6:31 | Before ... = ... | Initializers.cs:6:9:6:9 | Before access to property G | | Initializers.cs:6:27:6:27 | access to field H | Initializers.cs:6:31:6:31 | 2 | -| Initializers.cs:6:27:6:31 | ... + ... | Initializers.cs:6:9:6:9 | access to property G | +| Initializers.cs:6:27:6:31 | ... + ... | Initializers.cs:6:27:6:31 | After ... + ... | +| Initializers.cs:6:27:6:31 | After ... + ... | Initializers.cs:6:25:6:31 | ... = ... | +| Initializers.cs:6:27:6:31 | Before ... + ... | Initializers.cs:6:27:6:27 | access to field H | | Initializers.cs:6:31:6:31 | 2 | Initializers.cs:6:27:6:31 | ... + ... | -| Initializers.cs:8:5:8:16 | call to constructor Object | Initializers.cs:8:20:8:22 | {...} | -| Initializers.cs:8:5:8:16 | call to method | Initializers.cs:8:5:8:16 | call to constructor Object | -| Initializers.cs:8:5:8:16 | enter Initializers | Initializers.cs:8:5:8:16 | this access | -| Initializers.cs:8:5:8:16 | exit Initializers (normal) | Initializers.cs:8:5:8:16 | exit Initializers | +| Initializers.cs:8:5:8:16 | After call to constructor Object | Initializers.cs:8:20:8:22 | {...} | +| Initializers.cs:8:5:8:16 | After call to method | Initializers.cs:8:5:8:16 | Before call to constructor Object | +| Initializers.cs:8:5:8:16 | Before call to constructor Object | Initializers.cs:8:5:8:16 | call to constructor Object | +| Initializers.cs:8:5:8:16 | Before call to method | Initializers.cs:8:5:8:16 | this access | +| Initializers.cs:8:5:8:16 | Entry | Initializers.cs:8:5:8:16 | Before call to method | +| Initializers.cs:8:5:8:16 | Normal Exit | Initializers.cs:8:5:8:16 | Exit | +| Initializers.cs:8:5:8:16 | call to constructor Object | Initializers.cs:8:5:8:16 | After call to constructor Object | +| Initializers.cs:8:5:8:16 | call to method | Initializers.cs:8:5:8:16 | After call to method | | Initializers.cs:8:5:8:16 | this access | Initializers.cs:8:5:8:16 | call to method | -| Initializers.cs:8:20:8:22 | {...} | Initializers.cs:8:5:8:16 | exit Initializers (normal) | -| Initializers.cs:10:5:10:16 | call to constructor Object | Initializers.cs:10:28:10:30 | {...} | -| Initializers.cs:10:5:10:16 | call to method | Initializers.cs:10:5:10:16 | call to constructor Object | -| Initializers.cs:10:5:10:16 | enter Initializers | Initializers.cs:10:5:10:16 | this access | -| Initializers.cs:10:5:10:16 | exit Initializers (normal) | Initializers.cs:10:5:10:16 | exit Initializers | +| Initializers.cs:8:20:8:22 | {...} | Initializers.cs:8:5:8:16 | Normal Exit | +| Initializers.cs:10:5:10:16 | After call to constructor Object | Initializers.cs:10:28:10:30 | {...} | +| Initializers.cs:10:5:10:16 | After call to method | Initializers.cs:10:5:10:16 | Before call to constructor Object | +| Initializers.cs:10:5:10:16 | Before call to constructor Object | Initializers.cs:10:5:10:16 | call to constructor Object | +| Initializers.cs:10:5:10:16 | Before call to method | Initializers.cs:10:5:10:16 | this access | +| Initializers.cs:10:5:10:16 | Entry | Initializers.cs:10:25:10:25 | s | +| Initializers.cs:10:5:10:16 | Normal Exit | Initializers.cs:10:5:10:16 | Exit | +| Initializers.cs:10:5:10:16 | call to constructor Object | Initializers.cs:10:5:10:16 | After call to constructor Object | +| Initializers.cs:10:5:10:16 | call to method | Initializers.cs:10:5:10:16 | After call to method | | Initializers.cs:10:5:10:16 | this access | Initializers.cs:10:5:10:16 | call to method | -| Initializers.cs:10:28:10:30 | {...} | Initializers.cs:10:5:10:16 | exit Initializers (normal) | -| Initializers.cs:12:10:12:10 | enter M | Initializers.cs:13:5:16:5 | {...} | -| Initializers.cs:12:10:12:10 | exit M (normal) | Initializers.cs:12:10:12:10 | exit M | +| Initializers.cs:10:25:10:25 | s | Initializers.cs:10:5:10:16 | Before call to method | +| Initializers.cs:10:28:10:30 | {...} | Initializers.cs:10:5:10:16 | Normal Exit | +| Initializers.cs:12:10:12:10 | Entry | Initializers.cs:13:5:16:5 | {...} | +| Initializers.cs:12:10:12:10 | Normal Exit | Initializers.cs:12:10:12:10 | Exit | +| Initializers.cs:13:5:16:5 | After {...} | Initializers.cs:12:10:12:10 | Normal Exit | | Initializers.cs:13:5:16:5 | {...} | Initializers.cs:14:9:14:54 | ... ...; | -| Initializers.cs:14:9:14:54 | ... ...; | Initializers.cs:14:34:14:35 | "" | -| Initializers.cs:14:13:14:53 | Initializers i = ... | Initializers.cs:15:9:15:64 | ... ...; | -| Initializers.cs:14:17:14:53 | object creation of type Initializers | Initializers.cs:14:44:14:44 | 0 | +| Initializers.cs:14:9:14:54 | ... ...; | Initializers.cs:14:13:14:53 | Before Initializers i = ... | +| Initializers.cs:14:9:14:54 | After ... ...; | Initializers.cs:15:9:15:64 | ... ...; | +| Initializers.cs:14:13:14:13 | access to local variable i | Initializers.cs:14:17:14:53 | Before object creation of type Initializers | +| Initializers.cs:14:13:14:53 | After Initializers i = ... | Initializers.cs:14:9:14:54 | After ... ...; | +| Initializers.cs:14:13:14:53 | Before Initializers i = ... | Initializers.cs:14:13:14:13 | access to local variable i | +| Initializers.cs:14:13:14:53 | Initializers i = ... | Initializers.cs:14:13:14:53 | After Initializers i = ... | +| Initializers.cs:14:17:14:53 | After object creation of type Initializers | Initializers.cs:14:13:14:53 | Initializers i = ... | +| Initializers.cs:14:17:14:53 | Before object creation of type Initializers | Initializers.cs:14:34:14:35 | "" | +| Initializers.cs:14:17:14:53 | object creation of type Initializers | Initializers.cs:14:38:14:53 | Before { ..., ... } | | Initializers.cs:14:34:14:35 | "" | Initializers.cs:14:17:14:53 | object creation of type Initializers | -| Initializers.cs:14:38:14:53 | { ..., ... } | Initializers.cs:14:13:14:53 | Initializers i = ... | -| Initializers.cs:14:40:14:40 | access to field F | Initializers.cs:14:40:14:44 | ... = ... | -| Initializers.cs:14:40:14:44 | ... = ... | Initializers.cs:14:51:14:51 | 1 | -| Initializers.cs:14:44:14:44 | 0 | Initializers.cs:14:40:14:40 | access to field F | -| Initializers.cs:14:47:14:47 | access to property G | Initializers.cs:14:47:14:51 | ... = ... | -| Initializers.cs:14:47:14:51 | ... = ... | Initializers.cs:14:38:14:53 | { ..., ... } | -| Initializers.cs:14:51:14:51 | 1 | Initializers.cs:14:47:14:47 | access to property G | -| Initializers.cs:15:9:15:64 | ... ...; | Initializers.cs:15:18:15:63 | 2 | -| Initializers.cs:15:13:15:63 | Initializers[] iz = ... | Initializers.cs:12:10:12:10 | exit M (normal) | +| Initializers.cs:14:38:14:53 | After { ..., ... } | Initializers.cs:14:17:14:53 | After object creation of type Initializers | +| Initializers.cs:14:38:14:53 | Before { ..., ... } | Initializers.cs:14:40:14:44 | Before ... = ... | +| Initializers.cs:14:38:14:53 | { ..., ... } | Initializers.cs:14:38:14:53 | After { ..., ... } | +| Initializers.cs:14:40:14:40 | access to field F | Initializers.cs:14:44:14:44 | 0 | +| Initializers.cs:14:40:14:44 | ... = ... | Initializers.cs:14:40:14:44 | After ... = ... | +| Initializers.cs:14:40:14:44 | After ... = ... | Initializers.cs:14:47:14:51 | Before ... = ... | +| Initializers.cs:14:40:14:44 | Before ... = ... | Initializers.cs:14:40:14:40 | access to field F | +| Initializers.cs:14:44:14:44 | 0 | Initializers.cs:14:40:14:44 | ... = ... | +| Initializers.cs:14:47:14:47 | After access to property G | Initializers.cs:14:51:14:51 | 1 | +| Initializers.cs:14:47:14:47 | Before access to property G | Initializers.cs:14:47:14:47 | access to property G | +| Initializers.cs:14:47:14:47 | access to property G | Initializers.cs:14:47:14:47 | After access to property G | +| Initializers.cs:14:47:14:51 | ... = ... | Initializers.cs:14:47:14:51 | After ... = ... | +| Initializers.cs:14:47:14:51 | After ... = ... | Initializers.cs:14:38:14:53 | { ..., ... } | +| Initializers.cs:14:47:14:51 | Before ... = ... | Initializers.cs:14:47:14:47 | Before access to property G | +| Initializers.cs:14:51:14:51 | 1 | Initializers.cs:14:47:14:51 | ... = ... | +| Initializers.cs:15:9:15:64 | ... ...; | Initializers.cs:15:13:15:63 | Before Initializers[] iz = ... | +| Initializers.cs:15:9:15:64 | After ... ...; | Initializers.cs:13:5:16:5 | After {...} | +| Initializers.cs:15:13:15:14 | access to local variable iz | Initializers.cs:15:18:15:63 | Before array creation of type Initializers[] | +| Initializers.cs:15:13:15:63 | After Initializers[] iz = ... | Initializers.cs:15:9:15:64 | After ... ...; | +| Initializers.cs:15:13:15:63 | Before Initializers[] iz = ... | Initializers.cs:15:13:15:14 | access to local variable iz | +| Initializers.cs:15:13:15:63 | Initializers[] iz = ... | Initializers.cs:15:13:15:63 | After Initializers[] iz = ... | | Initializers.cs:15:18:15:63 | 2 | Initializers.cs:15:18:15:63 | array creation of type Initializers[] | -| Initializers.cs:15:18:15:63 | array creation of type Initializers[] | Initializers.cs:15:39:15:39 | access to local variable i | -| Initializers.cs:15:37:15:63 | { ..., ... } | Initializers.cs:15:13:15:63 | Initializers[] iz = ... | -| Initializers.cs:15:39:15:39 | access to local variable i | Initializers.cs:15:59:15:60 | "" | -| Initializers.cs:15:42:15:61 | object creation of type Initializers | Initializers.cs:15:37:15:63 | { ..., ... } | +| Initializers.cs:15:18:15:63 | After array creation of type Initializers[] | Initializers.cs:15:13:15:63 | Initializers[] iz = ... | +| Initializers.cs:15:18:15:63 | Before array creation of type Initializers[] | Initializers.cs:15:37:15:63 | Before { ..., ... } | +| Initializers.cs:15:18:15:63 | array creation of type Initializers[] | Initializers.cs:15:18:15:63 | After array creation of type Initializers[] | +| Initializers.cs:15:37:15:63 | After { ..., ... } | Initializers.cs:15:18:15:63 | 2 | +| Initializers.cs:15:37:15:63 | Before { ..., ... } | Initializers.cs:15:39:15:39 | access to local variable i | +| Initializers.cs:15:37:15:63 | { ..., ... } | Initializers.cs:15:37:15:63 | After { ..., ... } | +| Initializers.cs:15:39:15:39 | access to local variable i | Initializers.cs:15:42:15:61 | Before object creation of type Initializers | +| Initializers.cs:15:42:15:61 | After object creation of type Initializers | Initializers.cs:15:37:15:63 | { ..., ... } | +| Initializers.cs:15:42:15:61 | Before object creation of type Initializers | Initializers.cs:15:59:15:60 | "" | +| Initializers.cs:15:42:15:61 | object creation of type Initializers | Initializers.cs:15:42:15:61 | After object creation of type Initializers | | Initializers.cs:15:59:15:60 | "" | Initializers.cs:15:42:15:61 | object creation of type Initializers | -| Initializers.cs:18:16:18:16 | access to field H | Initializers.cs:18:16:18:20 | ... = ... | -| Initializers.cs:18:16:18:16 | enter H | Initializers.cs:18:20:18:20 | 1 | -| Initializers.cs:18:16:18:16 | exit H (normal) | Initializers.cs:18:16:18:16 | exit H | -| Initializers.cs:18:16:18:20 | ... = ... | Initializers.cs:18:16:18:16 | exit H (normal) | -| Initializers.cs:18:20:18:20 | 1 | Initializers.cs:18:16:18:16 | access to field H | -| Initializers.cs:20:11:20:23 | call to constructor Object | Initializers.cs:20:11:20:23 | {...} | -| Initializers.cs:20:11:20:23 | call to method | Initializers.cs:20:11:20:23 | call to constructor Object | -| Initializers.cs:20:11:20:23 | enter | Initializers.cs:22:23:22:23 | this access | -| Initializers.cs:20:11:20:23 | enter NoConstructor | Initializers.cs:20:11:20:23 | this access | -| Initializers.cs:20:11:20:23 | exit (normal) | Initializers.cs:20:11:20:23 | exit | -| Initializers.cs:20:11:20:23 | exit NoConstructor (normal) | Initializers.cs:20:11:20:23 | exit NoConstructor | +| Initializers.cs:18:16:18:16 | access to field H | Initializers.cs:18:20:18:20 | 1 | +| Initializers.cs:18:16:18:20 | ... = ... | Initializers.cs:18:16:18:20 | After ... = ... | +| Initializers.cs:18:16:18:20 | After ... = ... | Initializers.cs:3:7:3:18 | {...} | +| Initializers.cs:18:16:18:20 | Before ... = ... | Initializers.cs:18:16:18:16 | access to field H | +| Initializers.cs:18:20:18:20 | 1 | Initializers.cs:18:16:18:20 | ... = ... | +| Initializers.cs:20:11:20:23 | After call to constructor Object | Initializers.cs:20:11:20:23 | {...} | +| Initializers.cs:20:11:20:23 | After call to method | Initializers.cs:20:11:20:23 | Before call to constructor Object | +| Initializers.cs:20:11:20:23 | Before call to constructor Object | Initializers.cs:20:11:20:23 | call to constructor Object | +| Initializers.cs:20:11:20:23 | Before call to method | Initializers.cs:20:11:20:23 | this access | +| Initializers.cs:20:11:20:23 | Entry | Initializers.cs:20:11:20:23 | Before call to method | +| Initializers.cs:20:11:20:23 | Entry | Initializers.cs:22:23:22:27 | Before ... = ... | +| Initializers.cs:20:11:20:23 | Normal Exit | Initializers.cs:20:11:20:23 | Exit | +| Initializers.cs:20:11:20:23 | Normal Exit | Initializers.cs:20:11:20:23 | Exit | +| Initializers.cs:20:11:20:23 | call to constructor Object | Initializers.cs:20:11:20:23 | After call to constructor Object | +| Initializers.cs:20:11:20:23 | call to method | Initializers.cs:20:11:20:23 | After call to method | | Initializers.cs:20:11:20:23 | this access | Initializers.cs:20:11:20:23 | call to method | -| Initializers.cs:20:11:20:23 | {...} | Initializers.cs:20:11:20:23 | exit NoConstructor (normal) | -| Initializers.cs:22:23:22:23 | access to field F | Initializers.cs:22:23:22:27 | ... = ... | -| Initializers.cs:22:23:22:23 | this access | Initializers.cs:22:27:22:27 | 0 | -| Initializers.cs:22:23:22:27 | ... = ... | Initializers.cs:23:23:23:23 | this access | -| Initializers.cs:22:27:22:27 | 0 | Initializers.cs:22:23:22:23 | access to field F | -| Initializers.cs:23:23:23:23 | access to field G | Initializers.cs:23:23:23:27 | ... = ... | -| Initializers.cs:23:23:23:23 | this access | Initializers.cs:23:27:23:27 | 1 | -| Initializers.cs:23:23:23:27 | ... = ... | Initializers.cs:20:11:20:23 | exit (normal) | -| Initializers.cs:23:27:23:27 | 1 | Initializers.cs:23:23:23:23 | access to field G | -| Initializers.cs:26:11:26:13 | enter | Initializers.cs:28:13:28:13 | this access | -| Initializers.cs:26:11:26:13 | exit (normal) | Initializers.cs:26:11:26:13 | exit | -| Initializers.cs:28:13:28:13 | access to field H | Initializers.cs:28:13:28:17 | ... = ... | -| Initializers.cs:28:13:28:13 | this access | Initializers.cs:28:17:28:17 | 2 | -| Initializers.cs:28:13:28:17 | ... = ... | Initializers.cs:26:11:26:13 | exit (normal) | -| Initializers.cs:28:17:28:17 | 2 | Initializers.cs:28:13:28:13 | access to field H | -| Initializers.cs:31:9:31:11 | call to method | Initializers.cs:31:17:31:20 | call to constructor NoConstructor | -| Initializers.cs:31:9:31:11 | enter Sub | Initializers.cs:31:9:31:11 | this access | -| Initializers.cs:31:9:31:11 | exit Sub (normal) | Initializers.cs:31:9:31:11 | exit Sub | +| Initializers.cs:20:11:20:23 | {...} | Initializers.cs:20:11:20:23 | Normal Exit | +| Initializers.cs:22:23:22:23 | After access to field F | Initializers.cs:22:27:22:27 | 0 | +| Initializers.cs:22:23:22:23 | Before access to field F | Initializers.cs:22:23:22:23 | this access | +| Initializers.cs:22:23:22:23 | access to field F | Initializers.cs:22:23:22:23 | After access to field F | +| Initializers.cs:22:23:22:23 | this access | Initializers.cs:22:23:22:23 | access to field F | +| Initializers.cs:22:23:22:27 | ... = ... | Initializers.cs:22:23:22:27 | After ... = ... | +| Initializers.cs:22:23:22:27 | After ... = ... | Initializers.cs:23:23:23:27 | Before ... = ... | +| Initializers.cs:22:23:22:27 | Before ... = ... | Initializers.cs:22:23:22:23 | Before access to field F | +| Initializers.cs:22:27:22:27 | 0 | Initializers.cs:22:23:22:27 | ... = ... | +| Initializers.cs:23:23:23:23 | After access to field G | Initializers.cs:23:27:23:27 | 1 | +| Initializers.cs:23:23:23:23 | Before access to field G | Initializers.cs:23:23:23:23 | this access | +| Initializers.cs:23:23:23:23 | access to field G | Initializers.cs:23:23:23:23 | After access to field G | +| Initializers.cs:23:23:23:23 | this access | Initializers.cs:23:23:23:23 | access to field G | +| Initializers.cs:23:23:23:27 | ... = ... | Initializers.cs:23:23:23:27 | After ... = ... | +| Initializers.cs:23:23:23:27 | After ... = ... | Initializers.cs:20:11:20:23 | Normal Exit | +| Initializers.cs:23:23:23:27 | Before ... = ... | Initializers.cs:23:23:23:23 | Before access to field G | +| Initializers.cs:23:27:23:27 | 1 | Initializers.cs:23:23:23:27 | ... = ... | +| Initializers.cs:26:11:26:13 | Entry | Initializers.cs:28:13:28:17 | Before ... = ... | +| Initializers.cs:26:11:26:13 | Normal Exit | Initializers.cs:26:11:26:13 | Exit | +| Initializers.cs:28:13:28:13 | After access to field H | Initializers.cs:28:17:28:17 | 2 | +| Initializers.cs:28:13:28:13 | Before access to field H | Initializers.cs:28:13:28:13 | this access | +| Initializers.cs:28:13:28:13 | access to field H | Initializers.cs:28:13:28:13 | After access to field H | +| Initializers.cs:28:13:28:13 | this access | Initializers.cs:28:13:28:13 | access to field H | +| Initializers.cs:28:13:28:17 | ... = ... | Initializers.cs:28:13:28:17 | After ... = ... | +| Initializers.cs:28:13:28:17 | After ... = ... | Initializers.cs:26:11:26:13 | Normal Exit | +| Initializers.cs:28:13:28:17 | Before ... = ... | Initializers.cs:28:13:28:13 | Before access to field H | +| Initializers.cs:28:17:28:17 | 2 | Initializers.cs:28:13:28:17 | ... = ... | +| Initializers.cs:31:9:31:11 | After call to method | Initializers.cs:31:17:31:20 | Before call to constructor NoConstructor | +| Initializers.cs:31:9:31:11 | Before call to method | Initializers.cs:31:9:31:11 | this access | +| Initializers.cs:31:9:31:11 | Entry | Initializers.cs:31:9:31:11 | Before call to method | +| Initializers.cs:31:9:31:11 | Normal Exit | Initializers.cs:31:9:31:11 | Exit | +| Initializers.cs:31:9:31:11 | call to method | Initializers.cs:31:9:31:11 | After call to method | | Initializers.cs:31:9:31:11 | this access | Initializers.cs:31:9:31:11 | call to method | -| Initializers.cs:31:17:31:20 | call to constructor NoConstructor | Initializers.cs:31:24:31:33 | {...} | +| Initializers.cs:31:17:31:20 | After call to constructor NoConstructor | Initializers.cs:31:24:31:33 | {...} | +| Initializers.cs:31:17:31:20 | Before call to constructor NoConstructor | Initializers.cs:31:17:31:20 | call to constructor NoConstructor | +| Initializers.cs:31:17:31:20 | call to constructor NoConstructor | Initializers.cs:31:17:31:20 | After call to constructor NoConstructor | +| Initializers.cs:31:24:31:33 | After {...} | Initializers.cs:31:9:31:11 | Normal Exit | | Initializers.cs:31:24:31:33 | {...} | Initializers.cs:31:26:31:31 | ...; | -| Initializers.cs:31:26:31:26 | access to field I | Initializers.cs:31:26:31:30 | ... = ... | -| Initializers.cs:31:26:31:26 | this access | Initializers.cs:31:30:31:30 | 3 | -| Initializers.cs:31:26:31:30 | ... = ... | Initializers.cs:31:9:31:11 | exit Sub (normal) | -| Initializers.cs:31:26:31:31 | ...; | Initializers.cs:31:26:31:26 | this access | -| Initializers.cs:31:30:31:30 | 3 | Initializers.cs:31:26:31:26 | access to field I | -| Initializers.cs:33:9:33:11 | enter Sub | Initializers.cs:33:22:33:25 | call to constructor Sub | -| Initializers.cs:33:9:33:11 | exit Sub (normal) | Initializers.cs:33:9:33:11 | exit Sub | -| Initializers.cs:33:22:33:25 | call to constructor Sub | Initializers.cs:33:29:33:38 | {...} | +| Initializers.cs:31:26:31:26 | After access to field I | Initializers.cs:31:30:31:30 | 3 | +| Initializers.cs:31:26:31:26 | Before access to field I | Initializers.cs:31:26:31:26 | this access | +| Initializers.cs:31:26:31:26 | access to field I | Initializers.cs:31:26:31:26 | After access to field I | +| Initializers.cs:31:26:31:26 | this access | Initializers.cs:31:26:31:26 | access to field I | +| Initializers.cs:31:26:31:30 | ... = ... | Initializers.cs:31:26:31:30 | After ... = ... | +| Initializers.cs:31:26:31:30 | After ... = ... | Initializers.cs:31:26:31:31 | After ...; | +| Initializers.cs:31:26:31:30 | Before ... = ... | Initializers.cs:31:26:31:26 | Before access to field I | +| Initializers.cs:31:26:31:31 | ...; | Initializers.cs:31:26:31:30 | Before ... = ... | +| Initializers.cs:31:26:31:31 | After ...; | Initializers.cs:31:24:31:33 | After {...} | +| Initializers.cs:31:30:31:30 | 3 | Initializers.cs:31:26:31:30 | ... = ... | +| Initializers.cs:33:9:33:11 | Entry | Initializers.cs:33:17:33:17 | i | +| Initializers.cs:33:9:33:11 | Normal Exit | Initializers.cs:33:9:33:11 | Exit | +| Initializers.cs:33:17:33:17 | i | Initializers.cs:33:22:33:25 | Before call to constructor Sub | +| Initializers.cs:33:22:33:25 | After call to constructor Sub | Initializers.cs:33:29:33:38 | {...} | +| Initializers.cs:33:22:33:25 | Before call to constructor Sub | Initializers.cs:33:22:33:25 | call to constructor Sub | +| Initializers.cs:33:22:33:25 | call to constructor Sub | Initializers.cs:33:22:33:25 | After call to constructor Sub | +| Initializers.cs:33:29:33:38 | After {...} | Initializers.cs:33:9:33:11 | Normal Exit | | Initializers.cs:33:29:33:38 | {...} | Initializers.cs:33:31:33:36 | ...; | -| Initializers.cs:33:31:33:31 | access to field I | Initializers.cs:33:31:33:35 | ... = ... | -| Initializers.cs:33:31:33:31 | this access | Initializers.cs:33:35:33:35 | access to parameter i | -| Initializers.cs:33:31:33:35 | ... = ... | Initializers.cs:33:9:33:11 | exit Sub (normal) | -| Initializers.cs:33:31:33:36 | ...; | Initializers.cs:33:31:33:31 | this access | -| Initializers.cs:33:35:33:35 | access to parameter i | Initializers.cs:33:31:33:31 | access to field I | -| Initializers.cs:35:9:35:11 | call to constructor NoConstructor | Initializers.cs:35:27:35:40 | {...} | -| Initializers.cs:35:9:35:11 | call to method | Initializers.cs:35:9:35:11 | call to constructor NoConstructor | -| Initializers.cs:35:9:35:11 | enter Sub | Initializers.cs:35:9:35:11 | this access | -| Initializers.cs:35:9:35:11 | exit Sub (normal) | Initializers.cs:35:9:35:11 | exit Sub | +| Initializers.cs:33:31:33:31 | After access to field I | Initializers.cs:33:35:33:35 | access to parameter i | +| Initializers.cs:33:31:33:31 | Before access to field I | Initializers.cs:33:31:33:31 | this access | +| Initializers.cs:33:31:33:31 | access to field I | Initializers.cs:33:31:33:31 | After access to field I | +| Initializers.cs:33:31:33:31 | this access | Initializers.cs:33:31:33:31 | access to field I | +| Initializers.cs:33:31:33:35 | ... = ... | Initializers.cs:33:31:33:35 | After ... = ... | +| Initializers.cs:33:31:33:35 | After ... = ... | Initializers.cs:33:31:33:36 | After ...; | +| Initializers.cs:33:31:33:35 | Before ... = ... | Initializers.cs:33:31:33:31 | Before access to field I | +| Initializers.cs:33:31:33:36 | ...; | Initializers.cs:33:31:33:35 | Before ... = ... | +| Initializers.cs:33:31:33:36 | After ...; | Initializers.cs:33:29:33:38 | After {...} | +| Initializers.cs:33:35:33:35 | access to parameter i | Initializers.cs:33:31:33:35 | ... = ... | +| Initializers.cs:35:9:35:11 | After call to constructor NoConstructor | Initializers.cs:35:27:35:40 | {...} | +| Initializers.cs:35:9:35:11 | After call to method | Initializers.cs:35:9:35:11 | Before call to constructor NoConstructor | +| Initializers.cs:35:9:35:11 | Before call to constructor NoConstructor | Initializers.cs:35:9:35:11 | call to constructor NoConstructor | +| Initializers.cs:35:9:35:11 | Before call to method | Initializers.cs:35:9:35:11 | this access | +| Initializers.cs:35:9:35:11 | Entry | Initializers.cs:35:17:35:17 | i | +| Initializers.cs:35:9:35:11 | Normal Exit | Initializers.cs:35:9:35:11 | Exit | +| Initializers.cs:35:9:35:11 | call to constructor NoConstructor | Initializers.cs:35:9:35:11 | After call to constructor NoConstructor | +| Initializers.cs:35:9:35:11 | call to method | Initializers.cs:35:9:35:11 | After call to method | | Initializers.cs:35:9:35:11 | this access | Initializers.cs:35:9:35:11 | call to method | +| Initializers.cs:35:17:35:17 | i | Initializers.cs:35:24:35:24 | j | +| Initializers.cs:35:24:35:24 | j | Initializers.cs:35:9:35:11 | Before call to method | +| Initializers.cs:35:27:35:40 | After {...} | Initializers.cs:35:9:35:11 | Normal Exit | | Initializers.cs:35:27:35:40 | {...} | Initializers.cs:35:29:35:38 | ...; | -| Initializers.cs:35:29:35:29 | access to field I | Initializers.cs:35:29:35:37 | ... = ... | -| Initializers.cs:35:29:35:29 | this access | Initializers.cs:35:33:35:33 | access to parameter i | -| Initializers.cs:35:29:35:37 | ... = ... | Initializers.cs:35:9:35:11 | exit Sub (normal) | -| Initializers.cs:35:29:35:38 | ...; | Initializers.cs:35:29:35:29 | this access | +| Initializers.cs:35:29:35:29 | After access to field I | Initializers.cs:35:33:35:37 | Before ... + ... | +| Initializers.cs:35:29:35:29 | Before access to field I | Initializers.cs:35:29:35:29 | this access | +| Initializers.cs:35:29:35:29 | access to field I | Initializers.cs:35:29:35:29 | After access to field I | +| Initializers.cs:35:29:35:29 | this access | Initializers.cs:35:29:35:29 | access to field I | +| Initializers.cs:35:29:35:37 | ... = ... | Initializers.cs:35:29:35:37 | After ... = ... | +| Initializers.cs:35:29:35:37 | After ... = ... | Initializers.cs:35:29:35:38 | After ...; | +| Initializers.cs:35:29:35:37 | Before ... = ... | Initializers.cs:35:29:35:29 | Before access to field I | +| Initializers.cs:35:29:35:38 | ...; | Initializers.cs:35:29:35:37 | Before ... = ... | +| Initializers.cs:35:29:35:38 | After ...; | Initializers.cs:35:27:35:40 | After {...} | | Initializers.cs:35:33:35:33 | access to parameter i | Initializers.cs:35:37:35:37 | access to parameter j | -| Initializers.cs:35:33:35:37 | ... + ... | Initializers.cs:35:29:35:29 | access to field I | +| Initializers.cs:35:33:35:37 | ... + ... | Initializers.cs:35:33:35:37 | After ... + ... | +| Initializers.cs:35:33:35:37 | After ... + ... | Initializers.cs:35:29:35:37 | ... = ... | +| Initializers.cs:35:33:35:37 | Before ... + ... | Initializers.cs:35:33:35:33 | access to parameter i | | Initializers.cs:35:37:35:37 | access to parameter j | Initializers.cs:35:33:35:37 | ... + ... | -| Initializers.cs:39:7:39:23 | call to constructor Object | Initializers.cs:39:7:39:23 | {...} | -| Initializers.cs:39:7:39:23 | call to method | Initializers.cs:39:7:39:23 | call to constructor Object | -| Initializers.cs:39:7:39:23 | enter IndexInitializers | Initializers.cs:39:7:39:23 | this access | -| Initializers.cs:39:7:39:23 | exit IndexInitializers (normal) | Initializers.cs:39:7:39:23 | exit IndexInitializers | +| Initializers.cs:39:7:39:23 | After call to constructor Object | Initializers.cs:39:7:39:23 | {...} | +| Initializers.cs:39:7:39:23 | After call to method | Initializers.cs:39:7:39:23 | Before call to constructor Object | +| Initializers.cs:39:7:39:23 | Before call to constructor Object | Initializers.cs:39:7:39:23 | call to constructor Object | +| Initializers.cs:39:7:39:23 | Before call to method | Initializers.cs:39:7:39:23 | this access | +| Initializers.cs:39:7:39:23 | Entry | Initializers.cs:39:7:39:23 | Before call to method | +| Initializers.cs:39:7:39:23 | Normal Exit | Initializers.cs:39:7:39:23 | Exit | +| Initializers.cs:39:7:39:23 | call to constructor Object | Initializers.cs:39:7:39:23 | After call to constructor Object | +| Initializers.cs:39:7:39:23 | call to method | Initializers.cs:39:7:39:23 | After call to method | | Initializers.cs:39:7:39:23 | this access | Initializers.cs:39:7:39:23 | call to method | -| Initializers.cs:39:7:39:23 | {...} | Initializers.cs:39:7:39:23 | exit IndexInitializers (normal) | -| Initializers.cs:41:11:41:18 | call to constructor Object | Initializers.cs:41:11:41:18 | {...} | -| Initializers.cs:41:11:41:18 | call to method | Initializers.cs:41:11:41:18 | call to constructor Object | -| Initializers.cs:41:11:41:18 | enter Compound | Initializers.cs:41:11:41:18 | this access | -| Initializers.cs:41:11:41:18 | exit Compound (normal) | Initializers.cs:41:11:41:18 | exit Compound | +| Initializers.cs:39:7:39:23 | {...} | Initializers.cs:39:7:39:23 | Normal Exit | +| Initializers.cs:41:11:41:18 | After call to constructor Object | Initializers.cs:41:11:41:18 | {...} | +| Initializers.cs:41:11:41:18 | After call to method | Initializers.cs:41:11:41:18 | Before call to constructor Object | +| Initializers.cs:41:11:41:18 | Before call to constructor Object | Initializers.cs:41:11:41:18 | call to constructor Object | +| Initializers.cs:41:11:41:18 | Before call to method | Initializers.cs:41:11:41:18 | this access | +| Initializers.cs:41:11:41:18 | Entry | Initializers.cs:41:11:41:18 | Before call to method | +| Initializers.cs:41:11:41:18 | Normal Exit | Initializers.cs:41:11:41:18 | Exit | +| Initializers.cs:41:11:41:18 | call to constructor Object | Initializers.cs:41:11:41:18 | After call to constructor Object | +| Initializers.cs:41:11:41:18 | call to method | Initializers.cs:41:11:41:18 | After call to method | | Initializers.cs:41:11:41:18 | this access | Initializers.cs:41:11:41:18 | call to method | -| Initializers.cs:41:11:41:18 | {...} | Initializers.cs:41:11:41:18 | exit Compound (normal) | -| Initializers.cs:51:10:51:13 | enter Test | Initializers.cs:52:5:66:5 | {...} | -| Initializers.cs:51:10:51:13 | exit Test (normal) | Initializers.cs:51:10:51:13 | exit Test | +| Initializers.cs:41:11:41:18 | {...} | Initializers.cs:41:11:41:18 | Normal Exit | +| Initializers.cs:51:10:51:13 | Entry | Initializers.cs:51:19:51:19 | i | +| Initializers.cs:51:10:51:13 | Normal Exit | Initializers.cs:51:10:51:13 | Exit | +| Initializers.cs:51:19:51:19 | i | Initializers.cs:52:5:66:5 | {...} | +| Initializers.cs:52:5:66:5 | After {...} | Initializers.cs:51:10:51:13 | Normal Exit | | Initializers.cs:52:5:66:5 | {...} | Initializers.cs:54:9:54:96 | ... ...; | -| Initializers.cs:54:9:54:96 | ... ...; | Initializers.cs:54:20:54:95 | object creation of type Dictionary | -| Initializers.cs:54:13:54:95 | Dictionary dict = ... | Initializers.cs:57:9:65:10 | ... ...; | -| Initializers.cs:54:20:54:95 | object creation of type Dictionary | Initializers.cs:54:53:54:53 | 0 | -| Initializers.cs:54:50:54:95 | { ..., ... } | Initializers.cs:54:13:54:95 | Dictionary dict = ... | -| Initializers.cs:54:52:54:54 | access to indexer | Initializers.cs:54:52:54:63 | ... = ... | -| Initializers.cs:54:52:54:63 | ... = ... | Initializers.cs:54:67:54:67 | 1 | -| Initializers.cs:54:53:54:53 | 0 | Initializers.cs:54:58:54:63 | "Zero" | -| Initializers.cs:54:58:54:63 | "Zero" | Initializers.cs:54:52:54:54 | access to indexer | -| Initializers.cs:54:66:54:68 | access to indexer | Initializers.cs:54:66:54:76 | ... = ... | -| Initializers.cs:54:66:54:76 | ... = ... | Initializers.cs:54:80:54:80 | access to parameter i | -| Initializers.cs:54:67:54:67 | 1 | Initializers.cs:54:72:54:76 | "One" | -| Initializers.cs:54:72:54:76 | "One" | Initializers.cs:54:66:54:68 | access to indexer | -| Initializers.cs:54:79:54:85 | access to indexer | Initializers.cs:54:79:54:93 | ... = ... | -| Initializers.cs:54:79:54:93 | ... = ... | Initializers.cs:54:50:54:95 | { ..., ... } | +| Initializers.cs:54:9:54:96 | ... ...; | Initializers.cs:54:13:54:95 | Before Dictionary dict = ... | +| Initializers.cs:54:9:54:96 | After ... ...; | Initializers.cs:57:9:65:10 | ... ...; | +| Initializers.cs:54:13:54:16 | access to local variable dict | Initializers.cs:54:20:54:95 | Before object creation of type Dictionary | +| Initializers.cs:54:13:54:95 | After Dictionary dict = ... | Initializers.cs:54:9:54:96 | After ... ...; | +| Initializers.cs:54:13:54:95 | Before Dictionary dict = ... | Initializers.cs:54:13:54:16 | access to local variable dict | +| Initializers.cs:54:13:54:95 | Dictionary dict = ... | Initializers.cs:54:13:54:95 | After Dictionary dict = ... | +| Initializers.cs:54:20:54:95 | After object creation of type Dictionary | Initializers.cs:54:13:54:95 | Dictionary dict = ... | +| Initializers.cs:54:20:54:95 | Before object creation of type Dictionary | Initializers.cs:54:20:54:95 | object creation of type Dictionary | +| Initializers.cs:54:20:54:95 | object creation of type Dictionary | Initializers.cs:54:50:54:95 | Before { ..., ... } | +| Initializers.cs:54:50:54:95 | After { ..., ... } | Initializers.cs:54:20:54:95 | After object creation of type Dictionary | +| Initializers.cs:54:50:54:95 | Before { ..., ... } | Initializers.cs:54:52:54:63 | Before ... = ... | +| Initializers.cs:54:50:54:95 | { ..., ... } | Initializers.cs:54:50:54:95 | After { ..., ... } | +| Initializers.cs:54:52:54:54 | After access to indexer | Initializers.cs:54:58:54:63 | "Zero" | +| Initializers.cs:54:52:54:54 | Before access to indexer | Initializers.cs:54:53:54:53 | 0 | +| Initializers.cs:54:52:54:54 | access to indexer | Initializers.cs:54:52:54:54 | After access to indexer | +| Initializers.cs:54:52:54:63 | ... = ... | Initializers.cs:54:52:54:63 | After ... = ... | +| Initializers.cs:54:52:54:63 | After ... = ... | Initializers.cs:54:66:54:76 | Before ... = ... | +| Initializers.cs:54:52:54:63 | Before ... = ... | Initializers.cs:54:52:54:54 | Before access to indexer | +| Initializers.cs:54:53:54:53 | 0 | Initializers.cs:54:52:54:54 | access to indexer | +| Initializers.cs:54:58:54:63 | "Zero" | Initializers.cs:54:52:54:63 | ... = ... | +| Initializers.cs:54:66:54:68 | After access to indexer | Initializers.cs:54:72:54:76 | "One" | +| Initializers.cs:54:66:54:68 | Before access to indexer | Initializers.cs:54:67:54:67 | 1 | +| Initializers.cs:54:66:54:68 | access to indexer | Initializers.cs:54:66:54:68 | After access to indexer | +| Initializers.cs:54:66:54:76 | ... = ... | Initializers.cs:54:66:54:76 | After ... = ... | +| Initializers.cs:54:66:54:76 | After ... = ... | Initializers.cs:54:79:54:93 | Before ... = ... | +| Initializers.cs:54:66:54:76 | Before ... = ... | Initializers.cs:54:66:54:68 | Before access to indexer | +| Initializers.cs:54:67:54:67 | 1 | Initializers.cs:54:66:54:68 | access to indexer | +| Initializers.cs:54:72:54:76 | "One" | Initializers.cs:54:66:54:76 | ... = ... | +| Initializers.cs:54:79:54:85 | After access to indexer | Initializers.cs:54:89:54:93 | "Two" | +| Initializers.cs:54:79:54:85 | Before access to indexer | Initializers.cs:54:80:54:84 | Before ... + ... | +| Initializers.cs:54:79:54:85 | access to indexer | Initializers.cs:54:79:54:85 | After access to indexer | +| Initializers.cs:54:79:54:93 | ... = ... | Initializers.cs:54:79:54:93 | After ... = ... | +| Initializers.cs:54:79:54:93 | After ... = ... | Initializers.cs:54:50:54:95 | { ..., ... } | +| Initializers.cs:54:79:54:93 | Before ... = ... | Initializers.cs:54:79:54:85 | Before access to indexer | | Initializers.cs:54:80:54:80 | access to parameter i | Initializers.cs:54:84:54:84 | 2 | -| Initializers.cs:54:80:54:84 | ... + ... | Initializers.cs:54:89:54:93 | "Two" | +| Initializers.cs:54:80:54:84 | ... + ... | Initializers.cs:54:80:54:84 | After ... + ... | +| Initializers.cs:54:80:54:84 | After ... + ... | Initializers.cs:54:79:54:85 | access to indexer | +| Initializers.cs:54:80:54:84 | Before ... + ... | Initializers.cs:54:80:54:80 | access to parameter i | | Initializers.cs:54:84:54:84 | 2 | Initializers.cs:54:80:54:84 | ... + ... | -| Initializers.cs:54:89:54:93 | "Two" | Initializers.cs:54:79:54:85 | access to indexer | -| Initializers.cs:57:9:65:10 | ... ...; | Initializers.cs:57:24:65:9 | object creation of type Compound | -| Initializers.cs:57:13:65:9 | Compound compound = ... | Initializers.cs:51:10:51:13 | exit Test (normal) | -| Initializers.cs:57:24:65:9 | object creation of type Compound | Initializers.cs:59:34:59:34 | 0 | -| Initializers.cs:58:9:65:9 | { ..., ... } | Initializers.cs:57:13:65:9 | Compound compound = ... | -| Initializers.cs:59:13:59:27 | access to field DictionaryField | Initializers.cs:59:13:59:76 | ... = ... | -| Initializers.cs:59:13:59:76 | ... = ... | Initializers.cs:60:37:60:37 | 3 | -| Initializers.cs:59:31:59:76 | { ..., ... } | Initializers.cs:59:13:59:27 | access to field DictionaryField | -| Initializers.cs:59:33:59:35 | access to indexer | Initializers.cs:59:33:59:44 | ... = ... | -| Initializers.cs:59:33:59:44 | ... = ... | Initializers.cs:59:48:59:48 | 1 | -| Initializers.cs:59:34:59:34 | 0 | Initializers.cs:59:39:59:44 | "Zero" | -| Initializers.cs:59:39:59:44 | "Zero" | Initializers.cs:59:33:59:35 | access to indexer | -| Initializers.cs:59:47:59:49 | access to indexer | Initializers.cs:59:47:59:57 | ... = ... | -| Initializers.cs:59:47:59:57 | ... = ... | Initializers.cs:59:61:59:61 | access to parameter i | -| Initializers.cs:59:48:59:48 | 1 | Initializers.cs:59:53:59:57 | "One" | -| Initializers.cs:59:53:59:57 | "One" | Initializers.cs:59:47:59:49 | access to indexer | -| Initializers.cs:59:60:59:66 | access to indexer | Initializers.cs:59:60:59:74 | ... = ... | -| Initializers.cs:59:60:59:74 | ... = ... | Initializers.cs:59:31:59:76 | { ..., ... } | +| Initializers.cs:54:89:54:93 | "Two" | Initializers.cs:54:79:54:93 | ... = ... | +| Initializers.cs:57:9:65:10 | ... ...; | Initializers.cs:57:13:65:9 | Before Compound compound = ... | +| Initializers.cs:57:9:65:10 | After ... ...; | Initializers.cs:52:5:66:5 | After {...} | +| Initializers.cs:57:13:57:20 | access to local variable compound | Initializers.cs:57:24:65:9 | Before object creation of type Compound | +| Initializers.cs:57:13:65:9 | After Compound compound = ... | Initializers.cs:57:9:65:10 | After ... ...; | +| Initializers.cs:57:13:65:9 | Before Compound compound = ... | Initializers.cs:57:13:57:20 | access to local variable compound | +| Initializers.cs:57:13:65:9 | Compound compound = ... | Initializers.cs:57:13:65:9 | After Compound compound = ... | +| Initializers.cs:57:24:65:9 | After object creation of type Compound | Initializers.cs:57:13:65:9 | Compound compound = ... | +| Initializers.cs:57:24:65:9 | Before object creation of type Compound | Initializers.cs:57:24:65:9 | object creation of type Compound | +| Initializers.cs:57:24:65:9 | object creation of type Compound | Initializers.cs:58:9:65:9 | Before { ..., ... } | +| Initializers.cs:58:9:65:9 | After { ..., ... } | Initializers.cs:57:24:65:9 | After object creation of type Compound | +| Initializers.cs:58:9:65:9 | Before { ..., ... } | Initializers.cs:59:13:59:76 | Before ... = ... | +| Initializers.cs:58:9:65:9 | { ..., ... } | Initializers.cs:58:9:65:9 | After { ..., ... } | +| Initializers.cs:59:13:59:27 | access to field DictionaryField | Initializers.cs:59:31:59:76 | Before { ..., ... } | +| Initializers.cs:59:13:59:76 | ... = ... | Initializers.cs:59:13:59:76 | After ... = ... | +| Initializers.cs:59:13:59:76 | After ... = ... | Initializers.cs:60:13:60:80 | Before ... = ... | +| Initializers.cs:59:13:59:76 | Before ... = ... | Initializers.cs:59:13:59:27 | access to field DictionaryField | +| Initializers.cs:59:31:59:76 | After { ..., ... } | Initializers.cs:59:13:59:76 | ... = ... | +| Initializers.cs:59:31:59:76 | Before { ..., ... } | Initializers.cs:59:33:59:44 | Before ... = ... | +| Initializers.cs:59:31:59:76 | { ..., ... } | Initializers.cs:59:31:59:76 | After { ..., ... } | +| Initializers.cs:59:33:59:35 | After access to indexer | Initializers.cs:59:39:59:44 | "Zero" | +| Initializers.cs:59:33:59:35 | Before access to indexer | Initializers.cs:59:34:59:34 | 0 | +| Initializers.cs:59:33:59:35 | access to indexer | Initializers.cs:59:33:59:35 | After access to indexer | +| Initializers.cs:59:33:59:44 | ... = ... | Initializers.cs:59:33:59:44 | After ... = ... | +| Initializers.cs:59:33:59:44 | After ... = ... | Initializers.cs:59:47:59:57 | Before ... = ... | +| Initializers.cs:59:33:59:44 | Before ... = ... | Initializers.cs:59:33:59:35 | Before access to indexer | +| Initializers.cs:59:34:59:34 | 0 | Initializers.cs:59:33:59:35 | access to indexer | +| Initializers.cs:59:39:59:44 | "Zero" | Initializers.cs:59:33:59:44 | ... = ... | +| Initializers.cs:59:47:59:49 | After access to indexer | Initializers.cs:59:53:59:57 | "One" | +| Initializers.cs:59:47:59:49 | Before access to indexer | Initializers.cs:59:48:59:48 | 1 | +| Initializers.cs:59:47:59:49 | access to indexer | Initializers.cs:59:47:59:49 | After access to indexer | +| Initializers.cs:59:47:59:57 | ... = ... | Initializers.cs:59:47:59:57 | After ... = ... | +| Initializers.cs:59:47:59:57 | After ... = ... | Initializers.cs:59:60:59:74 | Before ... = ... | +| Initializers.cs:59:47:59:57 | Before ... = ... | Initializers.cs:59:47:59:49 | Before access to indexer | +| Initializers.cs:59:48:59:48 | 1 | Initializers.cs:59:47:59:49 | access to indexer | +| Initializers.cs:59:53:59:57 | "One" | Initializers.cs:59:47:59:57 | ... = ... | +| Initializers.cs:59:60:59:66 | After access to indexer | Initializers.cs:59:70:59:74 | "Two" | +| Initializers.cs:59:60:59:66 | Before access to indexer | Initializers.cs:59:61:59:65 | Before ... + ... | +| Initializers.cs:59:60:59:66 | access to indexer | Initializers.cs:59:60:59:66 | After access to indexer | +| Initializers.cs:59:60:59:74 | ... = ... | Initializers.cs:59:60:59:74 | After ... = ... | +| Initializers.cs:59:60:59:74 | After ... = ... | Initializers.cs:59:31:59:76 | { ..., ... } | +| Initializers.cs:59:60:59:74 | Before ... = ... | Initializers.cs:59:60:59:66 | Before access to indexer | | Initializers.cs:59:61:59:61 | access to parameter i | Initializers.cs:59:65:59:65 | 2 | -| Initializers.cs:59:61:59:65 | ... + ... | Initializers.cs:59:70:59:74 | "Two" | +| Initializers.cs:59:61:59:65 | ... + ... | Initializers.cs:59:61:59:65 | After ... + ... | +| Initializers.cs:59:61:59:65 | After ... + ... | Initializers.cs:59:60:59:66 | access to indexer | +| Initializers.cs:59:61:59:65 | Before ... + ... | Initializers.cs:59:61:59:61 | access to parameter i | | Initializers.cs:59:65:59:65 | 2 | Initializers.cs:59:61:59:65 | ... + ... | -| Initializers.cs:59:70:59:74 | "Two" | Initializers.cs:59:60:59:66 | access to indexer | -| Initializers.cs:60:13:60:30 | access to property DictionaryProperty | Initializers.cs:60:13:60:80 | ... = ... | -| Initializers.cs:60:13:60:80 | ... = ... | Initializers.cs:61:29:61:29 | 0 | -| Initializers.cs:60:34:60:80 | { ..., ... } | Initializers.cs:60:13:60:30 | access to property DictionaryProperty | -| Initializers.cs:60:36:60:38 | access to indexer | Initializers.cs:60:36:60:48 | ... = ... | -| Initializers.cs:60:36:60:48 | ... = ... | Initializers.cs:60:52:60:52 | 2 | -| Initializers.cs:60:37:60:37 | 3 | Initializers.cs:60:42:60:48 | "Three" | -| Initializers.cs:60:42:60:48 | "Three" | Initializers.cs:60:36:60:38 | access to indexer | -| Initializers.cs:60:51:60:53 | access to indexer | Initializers.cs:60:51:60:61 | ... = ... | -| Initializers.cs:60:51:60:61 | ... = ... | Initializers.cs:60:65:60:65 | access to parameter i | -| Initializers.cs:60:52:60:52 | 2 | Initializers.cs:60:57:60:61 | "Two" | -| Initializers.cs:60:57:60:61 | "Two" | Initializers.cs:60:51:60:53 | access to indexer | -| Initializers.cs:60:64:60:70 | access to indexer | Initializers.cs:60:64:60:78 | ... = ... | -| Initializers.cs:60:64:60:78 | ... = ... | Initializers.cs:60:34:60:80 | { ..., ... } | +| Initializers.cs:59:70:59:74 | "Two" | Initializers.cs:59:60:59:74 | ... = ... | +| Initializers.cs:60:13:60:30 | After access to property DictionaryProperty | Initializers.cs:60:34:60:80 | Before { ..., ... } | +| Initializers.cs:60:13:60:30 | Before access to property DictionaryProperty | Initializers.cs:60:13:60:30 | access to property DictionaryProperty | +| Initializers.cs:60:13:60:30 | access to property DictionaryProperty | Initializers.cs:60:13:60:30 | After access to property DictionaryProperty | +| Initializers.cs:60:13:60:80 | ... = ... | Initializers.cs:60:13:60:80 | After ... = ... | +| Initializers.cs:60:13:60:80 | After ... = ... | Initializers.cs:61:13:61:58 | Before ... = ... | +| Initializers.cs:60:13:60:80 | Before ... = ... | Initializers.cs:60:13:60:30 | Before access to property DictionaryProperty | +| Initializers.cs:60:34:60:80 | After { ..., ... } | Initializers.cs:60:13:60:80 | ... = ... | +| Initializers.cs:60:34:60:80 | Before { ..., ... } | Initializers.cs:60:36:60:48 | Before ... = ... | +| Initializers.cs:60:34:60:80 | { ..., ... } | Initializers.cs:60:34:60:80 | After { ..., ... } | +| Initializers.cs:60:36:60:38 | After access to indexer | Initializers.cs:60:42:60:48 | "Three" | +| Initializers.cs:60:36:60:38 | Before access to indexer | Initializers.cs:60:37:60:37 | 3 | +| Initializers.cs:60:36:60:38 | access to indexer | Initializers.cs:60:36:60:38 | After access to indexer | +| Initializers.cs:60:36:60:48 | ... = ... | Initializers.cs:60:36:60:48 | After ... = ... | +| Initializers.cs:60:36:60:48 | After ... = ... | Initializers.cs:60:51:60:61 | Before ... = ... | +| Initializers.cs:60:36:60:48 | Before ... = ... | Initializers.cs:60:36:60:38 | Before access to indexer | +| Initializers.cs:60:37:60:37 | 3 | Initializers.cs:60:36:60:38 | access to indexer | +| Initializers.cs:60:42:60:48 | "Three" | Initializers.cs:60:36:60:48 | ... = ... | +| Initializers.cs:60:51:60:53 | After access to indexer | Initializers.cs:60:57:60:61 | "Two" | +| Initializers.cs:60:51:60:53 | Before access to indexer | Initializers.cs:60:52:60:52 | 2 | +| Initializers.cs:60:51:60:53 | access to indexer | Initializers.cs:60:51:60:53 | After access to indexer | +| Initializers.cs:60:51:60:61 | ... = ... | Initializers.cs:60:51:60:61 | After ... = ... | +| Initializers.cs:60:51:60:61 | After ... = ... | Initializers.cs:60:64:60:78 | Before ... = ... | +| Initializers.cs:60:51:60:61 | Before ... = ... | Initializers.cs:60:51:60:53 | Before access to indexer | +| Initializers.cs:60:52:60:52 | 2 | Initializers.cs:60:51:60:53 | access to indexer | +| Initializers.cs:60:57:60:61 | "Two" | Initializers.cs:60:51:60:61 | ... = ... | +| Initializers.cs:60:64:60:70 | After access to indexer | Initializers.cs:60:74:60:78 | "One" | +| Initializers.cs:60:64:60:70 | Before access to indexer | Initializers.cs:60:65:60:69 | Before ... + ... | +| Initializers.cs:60:64:60:70 | access to indexer | Initializers.cs:60:64:60:70 | After access to indexer | +| Initializers.cs:60:64:60:78 | ... = ... | Initializers.cs:60:64:60:78 | After ... = ... | +| Initializers.cs:60:64:60:78 | After ... = ... | Initializers.cs:60:34:60:80 | { ..., ... } | +| Initializers.cs:60:64:60:78 | Before ... = ... | Initializers.cs:60:64:60:70 | Before access to indexer | | Initializers.cs:60:65:60:65 | access to parameter i | Initializers.cs:60:69:60:69 | 1 | -| Initializers.cs:60:65:60:69 | ... + ... | Initializers.cs:60:74:60:78 | "One" | +| Initializers.cs:60:65:60:69 | ... + ... | Initializers.cs:60:65:60:69 | After ... + ... | +| Initializers.cs:60:65:60:69 | After ... + ... | Initializers.cs:60:64:60:70 | access to indexer | +| Initializers.cs:60:65:60:69 | Before ... + ... | Initializers.cs:60:65:60:65 | access to parameter i | | Initializers.cs:60:69:60:69 | 1 | Initializers.cs:60:65:60:69 | ... + ... | -| Initializers.cs:60:74:60:78 | "One" | Initializers.cs:60:64:60:70 | access to indexer | -| Initializers.cs:61:13:61:22 | access to field ArrayField | Initializers.cs:61:13:61:58 | ... = ... | -| Initializers.cs:61:13:61:58 | ... = ... | Initializers.cs:62:30:62:30 | 0 | -| Initializers.cs:61:26:61:58 | { ..., ... } | Initializers.cs:61:13:61:22 | access to field ArrayField | -| Initializers.cs:61:28:61:30 | access to array element | Initializers.cs:61:28:61:39 | ... = ... | -| Initializers.cs:61:28:61:39 | ... = ... | Initializers.cs:61:43:61:43 | access to parameter i | -| Initializers.cs:61:29:61:29 | 0 | Initializers.cs:61:34:61:39 | "Zero" | -| Initializers.cs:61:34:61:39 | "Zero" | Initializers.cs:61:28:61:30 | access to array element | -| Initializers.cs:61:42:61:48 | access to array element | Initializers.cs:61:42:61:56 | ... = ... | -| Initializers.cs:61:42:61:56 | ... = ... | Initializers.cs:61:26:61:58 | { ..., ... } | +| Initializers.cs:60:74:60:78 | "One" | Initializers.cs:60:64:60:78 | ... = ... | +| Initializers.cs:61:13:61:22 | access to field ArrayField | Initializers.cs:61:26:61:58 | Before { ..., ... } | +| Initializers.cs:61:13:61:58 | ... = ... | Initializers.cs:61:13:61:58 | After ... = ... | +| Initializers.cs:61:13:61:58 | After ... = ... | Initializers.cs:62:13:62:60 | Before ... = ... | +| Initializers.cs:61:13:61:58 | Before ... = ... | Initializers.cs:61:13:61:22 | access to field ArrayField | +| Initializers.cs:61:26:61:58 | After { ..., ... } | Initializers.cs:61:13:61:58 | ... = ... | +| Initializers.cs:61:26:61:58 | Before { ..., ... } | Initializers.cs:61:28:61:39 | Before ... = ... | +| Initializers.cs:61:26:61:58 | { ..., ... } | Initializers.cs:61:26:61:58 | After { ..., ... } | +| Initializers.cs:61:28:61:30 | After access to array element | Initializers.cs:61:34:61:39 | "Zero" | +| Initializers.cs:61:28:61:30 | Before access to array element | Initializers.cs:61:29:61:29 | 0 | +| Initializers.cs:61:28:61:30 | access to array element | Initializers.cs:61:28:61:30 | After access to array element | +| Initializers.cs:61:28:61:39 | ... = ... | Initializers.cs:61:28:61:39 | After ... = ... | +| Initializers.cs:61:28:61:39 | After ... = ... | Initializers.cs:61:42:61:56 | Before ... = ... | +| Initializers.cs:61:28:61:39 | Before ... = ... | Initializers.cs:61:28:61:30 | Before access to array element | +| Initializers.cs:61:29:61:29 | 0 | Initializers.cs:61:28:61:30 | access to array element | +| Initializers.cs:61:34:61:39 | "Zero" | Initializers.cs:61:28:61:39 | ... = ... | +| Initializers.cs:61:42:61:48 | After access to array element | Initializers.cs:61:52:61:56 | "One" | +| Initializers.cs:61:42:61:48 | Before access to array element | Initializers.cs:61:43:61:47 | Before ... + ... | +| Initializers.cs:61:42:61:48 | access to array element | Initializers.cs:61:42:61:48 | After access to array element | +| Initializers.cs:61:42:61:56 | ... = ... | Initializers.cs:61:42:61:56 | After ... = ... | +| Initializers.cs:61:42:61:56 | After ... = ... | Initializers.cs:61:26:61:58 | { ..., ... } | +| Initializers.cs:61:42:61:56 | Before ... = ... | Initializers.cs:61:42:61:48 | Before access to array element | | Initializers.cs:61:43:61:43 | access to parameter i | Initializers.cs:61:47:61:47 | 1 | -| Initializers.cs:61:43:61:47 | ... + ... | Initializers.cs:61:52:61:56 | "One" | +| Initializers.cs:61:43:61:47 | ... + ... | Initializers.cs:61:43:61:47 | After ... + ... | +| Initializers.cs:61:43:61:47 | After ... + ... | Initializers.cs:61:42:61:48 | access to array element | +| Initializers.cs:61:43:61:47 | Before ... + ... | Initializers.cs:61:43:61:43 | access to parameter i | | Initializers.cs:61:47:61:47 | 1 | Initializers.cs:61:43:61:47 | ... + ... | -| Initializers.cs:61:52:61:56 | "One" | Initializers.cs:61:42:61:48 | access to array element | -| Initializers.cs:62:13:62:23 | access to field ArrayField2 | Initializers.cs:62:13:62:60 | ... = ... | -| Initializers.cs:62:13:62:60 | ... = ... | Initializers.cs:63:32:63:32 | 1 | -| Initializers.cs:62:27:62:60 | { ..., ... } | Initializers.cs:62:13:62:23 | access to field ArrayField2 | -| Initializers.cs:62:29:62:34 | access to array element | Initializers.cs:62:29:62:40 | ... = ... | -| Initializers.cs:62:29:62:40 | ... = ... | Initializers.cs:62:44:62:44 | 1 | +| Initializers.cs:61:52:61:56 | "One" | Initializers.cs:61:42:61:56 | ... = ... | +| Initializers.cs:62:13:62:23 | access to field ArrayField2 | Initializers.cs:62:27:62:60 | Before { ..., ... } | +| Initializers.cs:62:13:62:60 | ... = ... | Initializers.cs:62:13:62:60 | After ... = ... | +| Initializers.cs:62:13:62:60 | After ... = ... | Initializers.cs:63:13:63:60 | Before ... = ... | +| Initializers.cs:62:13:62:60 | Before ... = ... | Initializers.cs:62:13:62:23 | access to field ArrayField2 | +| Initializers.cs:62:27:62:60 | After { ..., ... } | Initializers.cs:62:13:62:60 | ... = ... | +| Initializers.cs:62:27:62:60 | Before { ..., ... } | Initializers.cs:62:29:62:40 | Before ... = ... | +| Initializers.cs:62:27:62:60 | { ..., ... } | Initializers.cs:62:27:62:60 | After { ..., ... } | +| Initializers.cs:62:29:62:34 | After access to array element | Initializers.cs:62:38:62:40 | "i" | +| Initializers.cs:62:29:62:34 | Before access to array element | Initializers.cs:62:30:62:30 | 0 | +| Initializers.cs:62:29:62:34 | access to array element | Initializers.cs:62:29:62:34 | After access to array element | +| Initializers.cs:62:29:62:40 | ... = ... | Initializers.cs:62:29:62:40 | After ... = ... | +| Initializers.cs:62:29:62:40 | After ... = ... | Initializers.cs:62:43:62:58 | Before ... = ... | +| Initializers.cs:62:29:62:40 | Before ... = ... | Initializers.cs:62:29:62:34 | Before access to array element | | Initializers.cs:62:30:62:30 | 0 | Initializers.cs:62:33:62:33 | 1 | -| Initializers.cs:62:33:62:33 | 1 | Initializers.cs:62:38:62:40 | "i" | -| Initializers.cs:62:38:62:40 | "i" | Initializers.cs:62:29:62:34 | access to array element | -| Initializers.cs:62:43:62:52 | access to array element | Initializers.cs:62:43:62:58 | ... = ... | -| Initializers.cs:62:43:62:58 | ... = ... | Initializers.cs:62:27:62:60 | { ..., ... } | -| Initializers.cs:62:44:62:44 | 1 | Initializers.cs:62:47:62:47 | access to parameter i | +| Initializers.cs:62:33:62:33 | 1 | Initializers.cs:62:29:62:34 | access to array element | +| Initializers.cs:62:38:62:40 | "i" | Initializers.cs:62:29:62:40 | ... = ... | +| Initializers.cs:62:43:62:52 | After access to array element | Initializers.cs:62:56:62:58 | "1" | +| Initializers.cs:62:43:62:52 | Before access to array element | Initializers.cs:62:44:62:44 | 1 | +| Initializers.cs:62:43:62:52 | access to array element | Initializers.cs:62:43:62:52 | After access to array element | +| Initializers.cs:62:43:62:58 | ... = ... | Initializers.cs:62:43:62:58 | After ... = ... | +| Initializers.cs:62:43:62:58 | After ... = ... | Initializers.cs:62:27:62:60 | { ..., ... } | +| Initializers.cs:62:43:62:58 | Before ... = ... | Initializers.cs:62:43:62:52 | Before access to array element | +| Initializers.cs:62:44:62:44 | 1 | Initializers.cs:62:47:62:51 | Before ... + ... | | Initializers.cs:62:47:62:47 | access to parameter i | Initializers.cs:62:51:62:51 | 0 | -| Initializers.cs:62:47:62:51 | ... + ... | Initializers.cs:62:56:62:58 | "1" | +| Initializers.cs:62:47:62:51 | ... + ... | Initializers.cs:62:47:62:51 | After ... + ... | +| Initializers.cs:62:47:62:51 | After ... + ... | Initializers.cs:62:43:62:52 | access to array element | +| Initializers.cs:62:47:62:51 | Before ... + ... | Initializers.cs:62:47:62:47 | access to parameter i | | Initializers.cs:62:51:62:51 | 0 | Initializers.cs:62:47:62:51 | ... + ... | -| Initializers.cs:62:56:62:58 | "1" | Initializers.cs:62:43:62:52 | access to array element | -| Initializers.cs:63:13:63:25 | access to property ArrayProperty | Initializers.cs:63:13:63:60 | ... = ... | -| Initializers.cs:63:13:63:60 | ... = ... | Initializers.cs:64:33:64:33 | 0 | -| Initializers.cs:63:29:63:60 | { ..., ... } | Initializers.cs:63:13:63:25 | access to property ArrayProperty | -| Initializers.cs:63:31:63:33 | access to array element | Initializers.cs:63:31:63:41 | ... = ... | -| Initializers.cs:63:31:63:41 | ... = ... | Initializers.cs:63:45:63:45 | access to parameter i | -| Initializers.cs:63:32:63:32 | 1 | Initializers.cs:63:37:63:41 | "One" | -| Initializers.cs:63:37:63:41 | "One" | Initializers.cs:63:31:63:33 | access to array element | -| Initializers.cs:63:44:63:50 | access to array element | Initializers.cs:63:44:63:58 | ... = ... | -| Initializers.cs:63:44:63:58 | ... = ... | Initializers.cs:63:29:63:60 | { ..., ... } | +| Initializers.cs:62:56:62:58 | "1" | Initializers.cs:62:43:62:58 | ... = ... | +| Initializers.cs:63:13:63:25 | After access to property ArrayProperty | Initializers.cs:63:29:63:60 | Before { ..., ... } | +| Initializers.cs:63:13:63:25 | Before access to property ArrayProperty | Initializers.cs:63:13:63:25 | access to property ArrayProperty | +| Initializers.cs:63:13:63:25 | access to property ArrayProperty | Initializers.cs:63:13:63:25 | After access to property ArrayProperty | +| Initializers.cs:63:13:63:60 | ... = ... | Initializers.cs:63:13:63:60 | After ... = ... | +| Initializers.cs:63:13:63:60 | After ... = ... | Initializers.cs:64:13:64:63 | Before ... = ... | +| Initializers.cs:63:13:63:60 | Before ... = ... | Initializers.cs:63:13:63:25 | Before access to property ArrayProperty | +| Initializers.cs:63:29:63:60 | After { ..., ... } | Initializers.cs:63:13:63:60 | ... = ... | +| Initializers.cs:63:29:63:60 | Before { ..., ... } | Initializers.cs:63:31:63:41 | Before ... = ... | +| Initializers.cs:63:29:63:60 | { ..., ... } | Initializers.cs:63:29:63:60 | After { ..., ... } | +| Initializers.cs:63:31:63:33 | After access to array element | Initializers.cs:63:37:63:41 | "One" | +| Initializers.cs:63:31:63:33 | Before access to array element | Initializers.cs:63:32:63:32 | 1 | +| Initializers.cs:63:31:63:33 | access to array element | Initializers.cs:63:31:63:33 | After access to array element | +| Initializers.cs:63:31:63:41 | ... = ... | Initializers.cs:63:31:63:41 | After ... = ... | +| Initializers.cs:63:31:63:41 | After ... = ... | Initializers.cs:63:44:63:58 | Before ... = ... | +| Initializers.cs:63:31:63:41 | Before ... = ... | Initializers.cs:63:31:63:33 | Before access to array element | +| Initializers.cs:63:32:63:32 | 1 | Initializers.cs:63:31:63:33 | access to array element | +| Initializers.cs:63:37:63:41 | "One" | Initializers.cs:63:31:63:41 | ... = ... | +| Initializers.cs:63:44:63:50 | After access to array element | Initializers.cs:63:54:63:58 | "Two" | +| Initializers.cs:63:44:63:50 | Before access to array element | Initializers.cs:63:45:63:49 | Before ... + ... | +| Initializers.cs:63:44:63:50 | access to array element | Initializers.cs:63:44:63:50 | After access to array element | +| Initializers.cs:63:44:63:58 | ... = ... | Initializers.cs:63:44:63:58 | After ... = ... | +| Initializers.cs:63:44:63:58 | After ... = ... | Initializers.cs:63:29:63:60 | { ..., ... } | +| Initializers.cs:63:44:63:58 | Before ... = ... | Initializers.cs:63:44:63:50 | Before access to array element | | Initializers.cs:63:45:63:45 | access to parameter i | Initializers.cs:63:49:63:49 | 2 | -| Initializers.cs:63:45:63:49 | ... + ... | Initializers.cs:63:54:63:58 | "Two" | +| Initializers.cs:63:45:63:49 | ... + ... | Initializers.cs:63:45:63:49 | After ... + ... | +| Initializers.cs:63:45:63:49 | After ... + ... | Initializers.cs:63:44:63:50 | access to array element | +| Initializers.cs:63:45:63:49 | Before ... + ... | Initializers.cs:63:45:63:45 | access to parameter i | | Initializers.cs:63:49:63:49 | 2 | Initializers.cs:63:45:63:49 | ... + ... | -| Initializers.cs:63:54:63:58 | "Two" | Initializers.cs:63:44:63:50 | access to array element | -| Initializers.cs:64:13:64:26 | access to property ArrayProperty2 | Initializers.cs:64:13:64:63 | ... = ... | -| Initializers.cs:64:13:64:63 | ... = ... | Initializers.cs:58:9:65:9 | { ..., ... } | -| Initializers.cs:64:30:64:63 | { ..., ... } | Initializers.cs:64:13:64:26 | access to property ArrayProperty2 | -| Initializers.cs:64:32:64:37 | access to array element | Initializers.cs:64:32:64:43 | ... = ... | -| Initializers.cs:64:32:64:43 | ... = ... | Initializers.cs:64:47:64:47 | 1 | +| Initializers.cs:63:54:63:58 | "Two" | Initializers.cs:63:44:63:58 | ... = ... | +| Initializers.cs:64:13:64:26 | After access to property ArrayProperty2 | Initializers.cs:64:30:64:63 | Before { ..., ... } | +| Initializers.cs:64:13:64:26 | Before access to property ArrayProperty2 | Initializers.cs:64:13:64:26 | access to property ArrayProperty2 | +| Initializers.cs:64:13:64:26 | access to property ArrayProperty2 | Initializers.cs:64:13:64:26 | After access to property ArrayProperty2 | +| Initializers.cs:64:13:64:63 | ... = ... | Initializers.cs:64:13:64:63 | After ... = ... | +| Initializers.cs:64:13:64:63 | After ... = ... | Initializers.cs:58:9:65:9 | { ..., ... } | +| Initializers.cs:64:13:64:63 | Before ... = ... | Initializers.cs:64:13:64:26 | Before access to property ArrayProperty2 | +| Initializers.cs:64:30:64:63 | After { ..., ... } | Initializers.cs:64:13:64:63 | ... = ... | +| Initializers.cs:64:30:64:63 | Before { ..., ... } | Initializers.cs:64:32:64:43 | Before ... = ... | +| Initializers.cs:64:30:64:63 | { ..., ... } | Initializers.cs:64:30:64:63 | After { ..., ... } | +| Initializers.cs:64:32:64:37 | After access to array element | Initializers.cs:64:41:64:43 | "i" | +| Initializers.cs:64:32:64:37 | Before access to array element | Initializers.cs:64:33:64:33 | 0 | +| Initializers.cs:64:32:64:37 | access to array element | Initializers.cs:64:32:64:37 | After access to array element | +| Initializers.cs:64:32:64:43 | ... = ... | Initializers.cs:64:32:64:43 | After ... = ... | +| Initializers.cs:64:32:64:43 | After ... = ... | Initializers.cs:64:46:64:61 | Before ... = ... | +| Initializers.cs:64:32:64:43 | Before ... = ... | Initializers.cs:64:32:64:37 | Before access to array element | | Initializers.cs:64:33:64:33 | 0 | Initializers.cs:64:36:64:36 | 1 | -| Initializers.cs:64:36:64:36 | 1 | Initializers.cs:64:41:64:43 | "i" | -| Initializers.cs:64:41:64:43 | "i" | Initializers.cs:64:32:64:37 | access to array element | -| Initializers.cs:64:46:64:55 | access to array element | Initializers.cs:64:46:64:61 | ... = ... | -| Initializers.cs:64:46:64:61 | ... = ... | Initializers.cs:64:30:64:63 | { ..., ... } | -| Initializers.cs:64:47:64:47 | 1 | Initializers.cs:64:50:64:50 | access to parameter i | +| Initializers.cs:64:36:64:36 | 1 | Initializers.cs:64:32:64:37 | access to array element | +| Initializers.cs:64:41:64:43 | "i" | Initializers.cs:64:32:64:43 | ... = ... | +| Initializers.cs:64:46:64:55 | After access to array element | Initializers.cs:64:59:64:61 | "1" | +| Initializers.cs:64:46:64:55 | Before access to array element | Initializers.cs:64:47:64:47 | 1 | +| Initializers.cs:64:46:64:55 | access to array element | Initializers.cs:64:46:64:55 | After access to array element | +| Initializers.cs:64:46:64:61 | ... = ... | Initializers.cs:64:46:64:61 | After ... = ... | +| Initializers.cs:64:46:64:61 | After ... = ... | Initializers.cs:64:30:64:63 | { ..., ... } | +| Initializers.cs:64:46:64:61 | Before ... = ... | Initializers.cs:64:46:64:55 | Before access to array element | +| Initializers.cs:64:47:64:47 | 1 | Initializers.cs:64:50:64:54 | Before ... + ... | | Initializers.cs:64:50:64:50 | access to parameter i | Initializers.cs:64:54:64:54 | 0 | -| Initializers.cs:64:50:64:54 | ... + ... | Initializers.cs:64:59:64:61 | "1" | +| Initializers.cs:64:50:64:54 | ... + ... | Initializers.cs:64:50:64:54 | After ... + ... | +| Initializers.cs:64:50:64:54 | After ... + ... | Initializers.cs:64:46:64:55 | access to array element | +| Initializers.cs:64:50:64:54 | Before ... + ... | Initializers.cs:64:50:64:50 | access to parameter i | | Initializers.cs:64:54:64:54 | 0 | Initializers.cs:64:50:64:54 | ... + ... | -| Initializers.cs:64:59:64:61 | "1" | Initializers.cs:64:46:64:55 | access to array element | -| LoopUnrolling.cs:5:7:5:19 | call to constructor Object | LoopUnrolling.cs:5:7:5:19 | {...} | -| LoopUnrolling.cs:5:7:5:19 | call to method | LoopUnrolling.cs:5:7:5:19 | call to constructor Object | -| LoopUnrolling.cs:5:7:5:19 | enter LoopUnrolling | LoopUnrolling.cs:5:7:5:19 | this access | -| LoopUnrolling.cs:5:7:5:19 | exit LoopUnrolling (normal) | LoopUnrolling.cs:5:7:5:19 | exit LoopUnrolling | +| Initializers.cs:64:59:64:61 | "1" | Initializers.cs:64:46:64:61 | ... = ... | +| LoopUnrolling.cs:5:7:5:19 | After call to constructor Object | LoopUnrolling.cs:5:7:5:19 | {...} | +| LoopUnrolling.cs:5:7:5:19 | After call to method | LoopUnrolling.cs:5:7:5:19 | Before call to constructor Object | +| LoopUnrolling.cs:5:7:5:19 | Before call to constructor Object | LoopUnrolling.cs:5:7:5:19 | call to constructor Object | +| LoopUnrolling.cs:5:7:5:19 | Before call to method | LoopUnrolling.cs:5:7:5:19 | this access | +| LoopUnrolling.cs:5:7:5:19 | Entry | LoopUnrolling.cs:5:7:5:19 | Before call to method | +| LoopUnrolling.cs:5:7:5:19 | Normal Exit | LoopUnrolling.cs:5:7:5:19 | Exit | +| LoopUnrolling.cs:5:7:5:19 | call to constructor Object | LoopUnrolling.cs:5:7:5:19 | After call to constructor Object | +| LoopUnrolling.cs:5:7:5:19 | call to method | LoopUnrolling.cs:5:7:5:19 | After call to method | | LoopUnrolling.cs:5:7:5:19 | this access | LoopUnrolling.cs:5:7:5:19 | call to method | -| LoopUnrolling.cs:5:7:5:19 | {...} | LoopUnrolling.cs:5:7:5:19 | exit LoopUnrolling (normal) | -| LoopUnrolling.cs:7:10:7:11 | enter M1 | LoopUnrolling.cs:8:5:13:5 | {...} | -| LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | LoopUnrolling.cs:7:10:7:11 | exit M1 | +| LoopUnrolling.cs:5:7:5:19 | {...} | LoopUnrolling.cs:5:7:5:19 | Normal Exit | +| LoopUnrolling.cs:7:10:7:11 | Entry | LoopUnrolling.cs:7:22:7:25 | args | +| LoopUnrolling.cs:7:10:7:11 | Normal Exit | LoopUnrolling.cs:7:10:7:11 | Exit | +| LoopUnrolling.cs:7:22:7:25 | args | LoopUnrolling.cs:8:5:13:5 | {...} | | LoopUnrolling.cs:8:5:13:5 | {...} | LoopUnrolling.cs:9:9:10:19 | if (...) ... | -| LoopUnrolling.cs:9:9:10:19 | if (...) ... | LoopUnrolling.cs:9:13:9:16 | access to parameter args | +| LoopUnrolling.cs:9:9:10:19 | After if (...) ... | LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:9:9:10:19 | if (...) ... | LoopUnrolling.cs:9:13:9:28 | Before ... == ... | | LoopUnrolling.cs:9:13:9:16 | access to parameter args | LoopUnrolling.cs:9:13:9:23 | access to property Length | -| LoopUnrolling.cs:9:13:9:23 | access to property Length | LoopUnrolling.cs:9:28:9:28 | 0 | -| LoopUnrolling.cs:9:13:9:28 | ... == ... | LoopUnrolling.cs:10:13:10:19 | return ...; | -| LoopUnrolling.cs:9:13:9:28 | ... == ... | LoopUnrolling.cs:11:29:11:32 | access to parameter args | +| LoopUnrolling.cs:9:13:9:23 | After access to property Length | LoopUnrolling.cs:9:28:9:28 | 0 | +| LoopUnrolling.cs:9:13:9:23 | Before access to property Length | LoopUnrolling.cs:9:13:9:16 | access to parameter args | +| LoopUnrolling.cs:9:13:9:23 | access to property Length | LoopUnrolling.cs:9:13:9:23 | After access to property Length | +| LoopUnrolling.cs:9:13:9:28 | ... == ... | LoopUnrolling.cs:9:13:9:28 | After ... == ... [false] | +| LoopUnrolling.cs:9:13:9:28 | ... == ... | LoopUnrolling.cs:9:13:9:28 | After ... == ... [true] | +| LoopUnrolling.cs:9:13:9:28 | After ... == ... [false] | LoopUnrolling.cs:9:9:10:19 | After if (...) ... | +| LoopUnrolling.cs:9:13:9:28 | After ... == ... [true] | LoopUnrolling.cs:10:13:10:19 | Before return ...; | +| LoopUnrolling.cs:9:13:9:28 | Before ... == ... | LoopUnrolling.cs:9:13:9:23 | Before access to property Length | | LoopUnrolling.cs:9:28:9:28 | 0 | LoopUnrolling.cs:9:13:9:28 | ... == ... | -| LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:11:22:11:24 | String arg | +| LoopUnrolling.cs:10:13:10:19 | Before return ...; | LoopUnrolling.cs:10:13:10:19 | return ...; | +| LoopUnrolling.cs:11:9:12:35 | After foreach (... ... in ...) ... | LoopUnrolling.cs:8:5:13:5 | After {...} | +| LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:11:29:11:32 | access to parameter args | | LoopUnrolling.cs:11:22:11:24 | String arg | LoopUnrolling.cs:12:13:12:35 | ...; | -| LoopUnrolling.cs:11:29:11:32 | access to parameter args | LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:12:13:12:35 | ...; | LoopUnrolling.cs:12:31:12:33 | access to local variable arg | +| LoopUnrolling.cs:11:29:11:32 | After access to parameter args [non-empty] | LoopUnrolling.cs:11:22:11:24 | String arg | +| LoopUnrolling.cs:11:29:11:32 | access to parameter args | LoopUnrolling.cs:11:29:11:32 | After access to parameter args [empty] | +| LoopUnrolling.cs:11:29:11:32 | access to parameter args | LoopUnrolling.cs:11:29:11:32 | After access to parameter args [non-empty] | +| LoopUnrolling.cs:12:13:12:34 | After call to method WriteLine | LoopUnrolling.cs:12:13:12:35 | After ...; | +| LoopUnrolling.cs:12:13:12:34 | Before call to method WriteLine | LoopUnrolling.cs:12:31:12:33 | access to local variable arg | +| LoopUnrolling.cs:12:13:12:34 | call to method WriteLine | LoopUnrolling.cs:12:13:12:34 | After call to method WriteLine | +| LoopUnrolling.cs:12:13:12:35 | ...; | LoopUnrolling.cs:12:13:12:34 | Before call to method WriteLine | +| LoopUnrolling.cs:12:13:12:35 | After ...; | LoopUnrolling.cs:11:9:12:35 | [LoopHeader] foreach (... ... in ...) ... | | LoopUnrolling.cs:12:31:12:33 | access to local variable arg | LoopUnrolling.cs:12:13:12:34 | call to method WriteLine | -| LoopUnrolling.cs:15:10:15:11 | enter M2 | LoopUnrolling.cs:16:5:20:5 | {...} | -| LoopUnrolling.cs:15:10:15:11 | exit M2 (normal) | LoopUnrolling.cs:15:10:15:11 | exit M2 | +| LoopUnrolling.cs:15:10:15:11 | Entry | LoopUnrolling.cs:16:5:20:5 | {...} | +| LoopUnrolling.cs:15:10:15:11 | Normal Exit | LoopUnrolling.cs:15:10:15:11 | Exit | +| LoopUnrolling.cs:16:5:20:5 | After {...} | LoopUnrolling.cs:15:10:15:11 | Normal Exit | | LoopUnrolling.cs:16:5:20:5 | {...} | LoopUnrolling.cs:17:9:17:48 | ... ...; | -| LoopUnrolling.cs:17:9:17:48 | ... ...; | LoopUnrolling.cs:17:18:17:47 | 3 | -| LoopUnrolling.cs:17:13:17:47 | String[] xs = ... | LoopUnrolling.cs:18:27:18:28 | access to local variable xs | +| LoopUnrolling.cs:17:9:17:48 | ... ...; | LoopUnrolling.cs:17:13:17:47 | Before String[] xs = ... | +| LoopUnrolling.cs:17:9:17:48 | After ... ...; | LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:17:13:17:14 | access to local variable xs | LoopUnrolling.cs:17:18:17:47 | Before array creation of type String[] | +| LoopUnrolling.cs:17:13:17:47 | After String[] xs = ... | LoopUnrolling.cs:17:9:17:48 | After ... ...; | +| LoopUnrolling.cs:17:13:17:47 | Before String[] xs = ... | LoopUnrolling.cs:17:13:17:14 | access to local variable xs | +| LoopUnrolling.cs:17:13:17:47 | String[] xs = ... | LoopUnrolling.cs:17:13:17:47 | After String[] xs = ... | | LoopUnrolling.cs:17:18:17:47 | 3 | LoopUnrolling.cs:17:18:17:47 | array creation of type String[] | -| LoopUnrolling.cs:17:18:17:47 | array creation of type String[] | LoopUnrolling.cs:17:33:17:35 | "a" | -| LoopUnrolling.cs:17:31:17:47 | { ..., ... } | LoopUnrolling.cs:17:13:17:47 | String[] xs = ... | +| LoopUnrolling.cs:17:18:17:47 | After array creation of type String[] | LoopUnrolling.cs:17:13:17:47 | String[] xs = ... | +| LoopUnrolling.cs:17:18:17:47 | Before array creation of type String[] | LoopUnrolling.cs:17:31:17:47 | Before { ..., ... } | +| LoopUnrolling.cs:17:18:17:47 | array creation of type String[] | LoopUnrolling.cs:17:18:17:47 | After array creation of type String[] | +| LoopUnrolling.cs:17:31:17:47 | After { ..., ... } | LoopUnrolling.cs:17:18:17:47 | 3 | +| LoopUnrolling.cs:17:31:17:47 | Before { ..., ... } | LoopUnrolling.cs:17:33:17:35 | "a" | +| LoopUnrolling.cs:17:31:17:47 | { ..., ... } | LoopUnrolling.cs:17:31:17:47 | After { ..., ... } | | LoopUnrolling.cs:17:33:17:35 | "a" | LoopUnrolling.cs:17:38:17:40 | "b" | | LoopUnrolling.cs:17:38:17:40 | "b" | LoopUnrolling.cs:17:43:17:45 | "c" | | LoopUnrolling.cs:17:43:17:45 | "c" | LoopUnrolling.cs:17:31:17:47 | { ..., ... } | -| LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:15:10:15:11 | exit M2 (normal) | -| LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:18:22:18:22 | String x | +| LoopUnrolling.cs:18:9:19:33 | After foreach (... ... in ...) ... | LoopUnrolling.cs:16:5:20:5 | After {...} | +| LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:18:27:18:28 | access to local variable xs | | LoopUnrolling.cs:18:22:18:22 | String x | LoopUnrolling.cs:19:13:19:33 | ...; | -| LoopUnrolling.cs:18:27:18:28 | access to local variable xs | LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:19:13:19:33 | ...; | LoopUnrolling.cs:19:31:19:31 | access to local variable x | +| LoopUnrolling.cs:18:27:18:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:18:22:18:22 | String x | +| LoopUnrolling.cs:18:27:18:28 | access to local variable xs | LoopUnrolling.cs:18:27:18:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:18:27:18:28 | access to local variable xs | LoopUnrolling.cs:18:27:18:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:19:13:19:32 | After call to method WriteLine | LoopUnrolling.cs:19:13:19:33 | After ...; | +| LoopUnrolling.cs:19:13:19:32 | Before call to method WriteLine | LoopUnrolling.cs:19:31:19:31 | access to local variable x | +| LoopUnrolling.cs:19:13:19:32 | call to method WriteLine | LoopUnrolling.cs:19:13:19:32 | After call to method WriteLine | +| LoopUnrolling.cs:19:13:19:33 | ...; | LoopUnrolling.cs:19:13:19:32 | Before call to method WriteLine | +| LoopUnrolling.cs:19:13:19:33 | After ...; | LoopUnrolling.cs:18:9:19:33 | [LoopHeader] foreach (... ... in ...) ... | | LoopUnrolling.cs:19:31:19:31 | access to local variable x | LoopUnrolling.cs:19:13:19:32 | call to method WriteLine | -| LoopUnrolling.cs:22:10:22:11 | enter M3 | LoopUnrolling.cs:23:5:27:5 | {...} | -| LoopUnrolling.cs:22:10:22:11 | exit M3 (normal) | LoopUnrolling.cs:22:10:22:11 | exit M3 | -| LoopUnrolling.cs:23:5:27:5 | {...} | LoopUnrolling.cs:24:29:24:32 | access to parameter args | -| LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:22:10:22:11 | exit M3 (normal) | -| LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:24:22:24:24 | Char arg | -| LoopUnrolling.cs:24:22:24:24 | Char arg | LoopUnrolling.cs:25:34:25:37 | access to parameter args | -| LoopUnrolling.cs:24:29:24:32 | access to parameter args | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:25:26:25:29 | Char arg0 | +| LoopUnrolling.cs:22:10:22:11 | Entry | LoopUnrolling.cs:22:20:22:23 | args | +| LoopUnrolling.cs:22:10:22:11 | Normal Exit | LoopUnrolling.cs:22:10:22:11 | Exit | +| LoopUnrolling.cs:22:20:22:23 | args | LoopUnrolling.cs:23:5:27:5 | {...} | +| LoopUnrolling.cs:23:5:27:5 | After {...} | LoopUnrolling.cs:22:10:22:11 | Normal Exit | +| LoopUnrolling.cs:23:5:27:5 | {...} | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:24:9:26:40 | After foreach (... ... in ...) ... | LoopUnrolling.cs:23:5:27:5 | After {...} | +| LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:24:29:24:32 | access to parameter args | +| LoopUnrolling.cs:24:22:24:24 | Char arg | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:24:29:24:32 | After access to parameter args [non-empty] | LoopUnrolling.cs:24:22:24:24 | Char arg | +| LoopUnrolling.cs:24:29:24:32 | access to parameter args | LoopUnrolling.cs:24:29:24:32 | After access to parameter args [empty] | +| LoopUnrolling.cs:24:29:24:32 | access to parameter args | LoopUnrolling.cs:24:29:24:32 | After access to parameter args [non-empty] | +| LoopUnrolling.cs:25:13:26:40 | After foreach (... ... in ...) ... | LoopUnrolling.cs:24:9:26:40 | [LoopHeader] foreach (... ... in ...) ... | +| LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:25:34:25:37 | access to parameter args | | LoopUnrolling.cs:25:26:25:29 | Char arg0 | LoopUnrolling.cs:26:17:26:40 | ...; | -| LoopUnrolling.cs:25:34:25:37 | access to parameter args | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:26:17:26:40 | ...; | LoopUnrolling.cs:26:35:26:38 | access to local variable arg0 | +| LoopUnrolling.cs:25:34:25:37 | After access to parameter args [non-empty] | LoopUnrolling.cs:25:26:25:29 | Char arg0 | +| LoopUnrolling.cs:25:34:25:37 | access to parameter args | LoopUnrolling.cs:25:34:25:37 | After access to parameter args [empty] | +| LoopUnrolling.cs:25:34:25:37 | access to parameter args | LoopUnrolling.cs:25:34:25:37 | After access to parameter args [non-empty] | +| LoopUnrolling.cs:26:17:26:39 | After call to method WriteLine | LoopUnrolling.cs:26:17:26:40 | After ...; | +| LoopUnrolling.cs:26:17:26:39 | Before call to method WriteLine | LoopUnrolling.cs:26:35:26:38 | access to local variable arg0 | +| LoopUnrolling.cs:26:17:26:39 | call to method WriteLine | LoopUnrolling.cs:26:17:26:39 | After call to method WriteLine | +| LoopUnrolling.cs:26:17:26:40 | ...; | LoopUnrolling.cs:26:17:26:39 | Before call to method WriteLine | +| LoopUnrolling.cs:26:17:26:40 | After ...; | LoopUnrolling.cs:25:13:26:40 | [LoopHeader] foreach (... ... in ...) ... | | LoopUnrolling.cs:26:35:26:38 | access to local variable arg0 | LoopUnrolling.cs:26:17:26:39 | call to method WriteLine | -| LoopUnrolling.cs:29:10:29:11 | enter M4 | LoopUnrolling.cs:30:5:34:5 | {...} | -| LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | LoopUnrolling.cs:29:10:29:11 | exit M4 | +| LoopUnrolling.cs:29:10:29:11 | Entry | LoopUnrolling.cs:30:5:34:5 | {...} | +| LoopUnrolling.cs:29:10:29:11 | Normal Exit | LoopUnrolling.cs:29:10:29:11 | Exit | +| LoopUnrolling.cs:30:5:34:5 | After {...} | LoopUnrolling.cs:29:10:29:11 | Normal Exit | | LoopUnrolling.cs:30:5:34:5 | {...} | LoopUnrolling.cs:31:9:31:31 | ... ...; | -| LoopUnrolling.cs:31:9:31:31 | ... ...; | LoopUnrolling.cs:31:29:31:29 | 0 | -| LoopUnrolling.cs:31:13:31:30 | String[] xs = ... | LoopUnrolling.cs:32:27:32:28 | access to local variable xs | -| LoopUnrolling.cs:31:18:31:30 | array creation of type String[] | LoopUnrolling.cs:31:13:31:30 | String[] xs = ... | +| LoopUnrolling.cs:31:9:31:31 | ... ...; | LoopUnrolling.cs:31:13:31:30 | Before String[] xs = ... | +| LoopUnrolling.cs:31:9:31:31 | After ... ...; | LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:31:13:31:14 | access to local variable xs | LoopUnrolling.cs:31:18:31:30 | Before array creation of type String[] | +| LoopUnrolling.cs:31:13:31:30 | After String[] xs = ... | LoopUnrolling.cs:31:9:31:31 | After ... ...; | +| LoopUnrolling.cs:31:13:31:30 | Before String[] xs = ... | LoopUnrolling.cs:31:13:31:14 | access to local variable xs | +| LoopUnrolling.cs:31:13:31:30 | String[] xs = ... | LoopUnrolling.cs:31:13:31:30 | After String[] xs = ... | +| LoopUnrolling.cs:31:18:31:30 | After array creation of type String[] | LoopUnrolling.cs:31:13:31:30 | String[] xs = ... | +| LoopUnrolling.cs:31:18:31:30 | Before array creation of type String[] | LoopUnrolling.cs:31:29:31:29 | 0 | +| LoopUnrolling.cs:31:18:31:30 | array creation of type String[] | LoopUnrolling.cs:31:18:31:30 | After array creation of type String[] | | LoopUnrolling.cs:31:29:31:29 | 0 | LoopUnrolling.cs:31:18:31:30 | array creation of type String[] | -| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | -| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:32:22:32:22 | String x | +| LoopUnrolling.cs:32:9:33:33 | After foreach (... ... in ...) ... | LoopUnrolling.cs:30:5:34:5 | After {...} | +| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:32:27:32:28 | access to local variable xs | | LoopUnrolling.cs:32:22:32:22 | String x | LoopUnrolling.cs:33:13:33:33 | ...; | -| LoopUnrolling.cs:32:27:32:28 | access to local variable xs | LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:33:13:33:33 | ...; | LoopUnrolling.cs:33:31:33:31 | access to local variable x | +| LoopUnrolling.cs:32:27:32:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:32:22:32:22 | String x | +| LoopUnrolling.cs:32:27:32:28 | access to local variable xs | LoopUnrolling.cs:32:27:32:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:32:27:32:28 | access to local variable xs | LoopUnrolling.cs:32:27:32:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:33:13:33:32 | After call to method WriteLine | LoopUnrolling.cs:33:13:33:33 | After ...; | +| LoopUnrolling.cs:33:13:33:32 | Before call to method WriteLine | LoopUnrolling.cs:33:31:33:31 | access to local variable x | +| LoopUnrolling.cs:33:13:33:32 | call to method WriteLine | LoopUnrolling.cs:33:13:33:32 | After call to method WriteLine | +| LoopUnrolling.cs:33:13:33:33 | ...; | LoopUnrolling.cs:33:13:33:32 | Before call to method WriteLine | +| LoopUnrolling.cs:33:13:33:33 | After ...; | LoopUnrolling.cs:32:9:33:33 | [LoopHeader] foreach (... ... in ...) ... | | LoopUnrolling.cs:33:31:33:31 | access to local variable x | LoopUnrolling.cs:33:13:33:32 | call to method WriteLine | -| LoopUnrolling.cs:36:10:36:11 | enter M5 | LoopUnrolling.cs:37:5:43:5 | {...} | -| LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | LoopUnrolling.cs:36:10:36:11 | exit M5 | +| LoopUnrolling.cs:36:10:36:11 | Entry | LoopUnrolling.cs:37:5:43:5 | {...} | +| LoopUnrolling.cs:36:10:36:11 | Normal Exit | LoopUnrolling.cs:36:10:36:11 | Exit | +| LoopUnrolling.cs:37:5:43:5 | After {...} | LoopUnrolling.cs:36:10:36:11 | Normal Exit | | LoopUnrolling.cs:37:5:43:5 | {...} | LoopUnrolling.cs:38:9:38:48 | ... ...; | -| LoopUnrolling.cs:38:9:38:48 | ... ...; | LoopUnrolling.cs:38:18:38:47 | 3 | -| LoopUnrolling.cs:38:13:38:47 | String[] xs = ... | LoopUnrolling.cs:39:9:39:48 | ... ...; | +| LoopUnrolling.cs:38:9:38:48 | ... ...; | LoopUnrolling.cs:38:13:38:47 | Before String[] xs = ... | +| LoopUnrolling.cs:38:9:38:48 | After ... ...; | LoopUnrolling.cs:39:9:39:48 | ... ...; | +| LoopUnrolling.cs:38:13:38:14 | access to local variable xs | LoopUnrolling.cs:38:18:38:47 | Before array creation of type String[] | +| LoopUnrolling.cs:38:13:38:47 | After String[] xs = ... | LoopUnrolling.cs:38:9:38:48 | After ... ...; | +| LoopUnrolling.cs:38:13:38:47 | Before String[] xs = ... | LoopUnrolling.cs:38:13:38:14 | access to local variable xs | +| LoopUnrolling.cs:38:13:38:47 | String[] xs = ... | LoopUnrolling.cs:38:13:38:47 | After String[] xs = ... | | LoopUnrolling.cs:38:18:38:47 | 3 | LoopUnrolling.cs:38:18:38:47 | array creation of type String[] | -| LoopUnrolling.cs:38:18:38:47 | array creation of type String[] | LoopUnrolling.cs:38:33:38:35 | "a" | -| LoopUnrolling.cs:38:31:38:47 | { ..., ... } | LoopUnrolling.cs:38:13:38:47 | String[] xs = ... | +| LoopUnrolling.cs:38:18:38:47 | After array creation of type String[] | LoopUnrolling.cs:38:13:38:47 | String[] xs = ... | +| LoopUnrolling.cs:38:18:38:47 | Before array creation of type String[] | LoopUnrolling.cs:38:31:38:47 | Before { ..., ... } | +| LoopUnrolling.cs:38:18:38:47 | array creation of type String[] | LoopUnrolling.cs:38:18:38:47 | After array creation of type String[] | +| LoopUnrolling.cs:38:31:38:47 | After { ..., ... } | LoopUnrolling.cs:38:18:38:47 | 3 | +| LoopUnrolling.cs:38:31:38:47 | Before { ..., ... } | LoopUnrolling.cs:38:33:38:35 | "a" | +| LoopUnrolling.cs:38:31:38:47 | { ..., ... } | LoopUnrolling.cs:38:31:38:47 | After { ..., ... } | | LoopUnrolling.cs:38:33:38:35 | "a" | LoopUnrolling.cs:38:38:38:40 | "b" | | LoopUnrolling.cs:38:38:38:40 | "b" | LoopUnrolling.cs:38:43:38:45 | "c" | | LoopUnrolling.cs:38:43:38:45 | "c" | LoopUnrolling.cs:38:31:38:47 | { ..., ... } | -| LoopUnrolling.cs:39:9:39:48 | ... ...; | LoopUnrolling.cs:39:18:39:47 | 3 | -| LoopUnrolling.cs:39:13:39:47 | String[] ys = ... | LoopUnrolling.cs:40:27:40:28 | access to local variable xs | +| LoopUnrolling.cs:39:9:39:48 | ... ...; | LoopUnrolling.cs:39:13:39:47 | Before String[] ys = ... | +| LoopUnrolling.cs:39:9:39:48 | After ... ...; | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:39:13:39:14 | access to local variable ys | LoopUnrolling.cs:39:18:39:47 | Before array creation of type String[] | +| LoopUnrolling.cs:39:13:39:47 | After String[] ys = ... | LoopUnrolling.cs:39:9:39:48 | After ... ...; | +| LoopUnrolling.cs:39:13:39:47 | Before String[] ys = ... | LoopUnrolling.cs:39:13:39:14 | access to local variable ys | +| LoopUnrolling.cs:39:13:39:47 | String[] ys = ... | LoopUnrolling.cs:39:13:39:47 | After String[] ys = ... | | LoopUnrolling.cs:39:18:39:47 | 3 | LoopUnrolling.cs:39:18:39:47 | array creation of type String[] | -| LoopUnrolling.cs:39:18:39:47 | array creation of type String[] | LoopUnrolling.cs:39:33:39:35 | "0" | -| LoopUnrolling.cs:39:31:39:47 | { ..., ... } | LoopUnrolling.cs:39:13:39:47 | String[] ys = ... | +| LoopUnrolling.cs:39:18:39:47 | After array creation of type String[] | LoopUnrolling.cs:39:13:39:47 | String[] ys = ... | +| LoopUnrolling.cs:39:18:39:47 | Before array creation of type String[] | LoopUnrolling.cs:39:31:39:47 | Before { ..., ... } | +| LoopUnrolling.cs:39:18:39:47 | array creation of type String[] | LoopUnrolling.cs:39:18:39:47 | After array creation of type String[] | +| LoopUnrolling.cs:39:31:39:47 | After { ..., ... } | LoopUnrolling.cs:39:18:39:47 | 3 | +| LoopUnrolling.cs:39:31:39:47 | Before { ..., ... } | LoopUnrolling.cs:39:33:39:35 | "0" | +| LoopUnrolling.cs:39:31:39:47 | { ..., ... } | LoopUnrolling.cs:39:31:39:47 | After { ..., ... } | | LoopUnrolling.cs:39:33:39:35 | "0" | LoopUnrolling.cs:39:38:39:40 | "1" | | LoopUnrolling.cs:39:38:39:40 | "1" | LoopUnrolling.cs:39:43:39:45 | "2" | | LoopUnrolling.cs:39:43:39:45 | "2" | LoopUnrolling.cs:39:31:39:47 | { ..., ... } | -| LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | -| LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:40:22:40:22 | String x | -| LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:41:31:41:32 | access to local variable ys | -| LoopUnrolling.cs:40:27:40:28 | access to local variable xs | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:41:26:41:26 | String y | +| LoopUnrolling.cs:40:9:42:41 | After foreach (... ... in ...) ... | LoopUnrolling.cs:37:5:43:5 | After {...} | +| LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:40:27:40:28 | access to local variable xs | +| LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:40:22:40:22 | String x | +| LoopUnrolling.cs:40:27:40:28 | access to local variable xs | LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:40:27:40:28 | access to local variable xs | LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:41:13:42:41 | After foreach (... ... in ...) ... | LoopUnrolling.cs:40:9:42:41 | [LoopHeader] foreach (... ... in ...) ... | +| LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:41:31:41:32 | access to local variable ys | | LoopUnrolling.cs:41:26:41:26 | String y | LoopUnrolling.cs:42:17:42:41 | ...; | -| LoopUnrolling.cs:41:31:41:32 | access to local variable ys | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:42:17:42:41 | ...; | LoopUnrolling.cs:42:35:42:35 | access to local variable x | +| LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [non-empty] | LoopUnrolling.cs:41:26:41:26 | String y | +| LoopUnrolling.cs:41:31:41:32 | access to local variable ys | LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [empty] | +| LoopUnrolling.cs:41:31:41:32 | access to local variable ys | LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [non-empty] | +| LoopUnrolling.cs:42:17:42:40 | After call to method WriteLine | LoopUnrolling.cs:42:17:42:41 | After ...; | +| LoopUnrolling.cs:42:17:42:40 | Before call to method WriteLine | LoopUnrolling.cs:42:35:42:39 | Before ... + ... | +| LoopUnrolling.cs:42:17:42:40 | call to method WriteLine | LoopUnrolling.cs:42:17:42:40 | After call to method WriteLine | +| LoopUnrolling.cs:42:17:42:41 | ...; | LoopUnrolling.cs:42:17:42:40 | Before call to method WriteLine | +| LoopUnrolling.cs:42:17:42:41 | After ...; | LoopUnrolling.cs:41:13:42:41 | [LoopHeader] foreach (... ... in ...) ... | | LoopUnrolling.cs:42:35:42:35 | access to local variable x | LoopUnrolling.cs:42:39:42:39 | access to local variable y | -| LoopUnrolling.cs:42:35:42:39 | ... + ... | LoopUnrolling.cs:42:17:42:40 | call to method WriteLine | +| LoopUnrolling.cs:42:35:42:39 | ... + ... | LoopUnrolling.cs:42:35:42:39 | After ... + ... | +| LoopUnrolling.cs:42:35:42:39 | After ... + ... | LoopUnrolling.cs:42:17:42:40 | call to method WriteLine | +| LoopUnrolling.cs:42:35:42:39 | Before ... + ... | LoopUnrolling.cs:42:35:42:35 | access to local variable x | | LoopUnrolling.cs:42:39:42:39 | access to local variable y | LoopUnrolling.cs:42:35:42:39 | ... + ... | -| LoopUnrolling.cs:45:10:45:11 | enter M6 | LoopUnrolling.cs:46:5:53:5 | {...} | -| LoopUnrolling.cs:45:10:45:11 | exit M6 (normal) | LoopUnrolling.cs:45:10:45:11 | exit M6 | +| LoopUnrolling.cs:45:10:45:11 | Entry | LoopUnrolling.cs:46:5:53:5 | {...} | +| LoopUnrolling.cs:45:10:45:11 | Normal Exit | LoopUnrolling.cs:45:10:45:11 | Exit | +| LoopUnrolling.cs:46:5:53:5 | After {...} | LoopUnrolling.cs:45:10:45:11 | Normal Exit | | LoopUnrolling.cs:46:5:53:5 | {...} | LoopUnrolling.cs:47:9:47:48 | ... ...; | -| LoopUnrolling.cs:47:9:47:48 | ... ...; | LoopUnrolling.cs:47:18:47:47 | 3 | -| LoopUnrolling.cs:47:13:47:47 | String[] xs = ... | LoopUnrolling.cs:48:27:48:28 | access to local variable xs | +| LoopUnrolling.cs:47:9:47:48 | ... ...; | LoopUnrolling.cs:47:13:47:47 | Before String[] xs = ... | +| LoopUnrolling.cs:47:9:47:48 | After ... ...; | LoopUnrolling.cs:48:9:52:9 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:47:13:47:14 | access to local variable xs | LoopUnrolling.cs:47:18:47:47 | Before array creation of type String[] | +| LoopUnrolling.cs:47:13:47:47 | After String[] xs = ... | LoopUnrolling.cs:47:9:47:48 | After ... ...; | +| LoopUnrolling.cs:47:13:47:47 | Before String[] xs = ... | LoopUnrolling.cs:47:13:47:14 | access to local variable xs | +| LoopUnrolling.cs:47:13:47:47 | String[] xs = ... | LoopUnrolling.cs:47:13:47:47 | After String[] xs = ... | | LoopUnrolling.cs:47:18:47:47 | 3 | LoopUnrolling.cs:47:18:47:47 | array creation of type String[] | -| LoopUnrolling.cs:47:18:47:47 | array creation of type String[] | LoopUnrolling.cs:47:33:47:35 | "a" | -| LoopUnrolling.cs:47:31:47:47 | { ..., ... } | LoopUnrolling.cs:47:13:47:47 | String[] xs = ... | +| LoopUnrolling.cs:47:18:47:47 | After array creation of type String[] | LoopUnrolling.cs:47:13:47:47 | String[] xs = ... | +| LoopUnrolling.cs:47:18:47:47 | Before array creation of type String[] | LoopUnrolling.cs:47:31:47:47 | Before { ..., ... } | +| LoopUnrolling.cs:47:18:47:47 | array creation of type String[] | LoopUnrolling.cs:47:18:47:47 | After array creation of type String[] | +| LoopUnrolling.cs:47:31:47:47 | After { ..., ... } | LoopUnrolling.cs:47:18:47:47 | 3 | +| LoopUnrolling.cs:47:31:47:47 | Before { ..., ... } | LoopUnrolling.cs:47:33:47:35 | "a" | +| LoopUnrolling.cs:47:31:47:47 | { ..., ... } | LoopUnrolling.cs:47:31:47:47 | After { ..., ... } | | LoopUnrolling.cs:47:33:47:35 | "a" | LoopUnrolling.cs:47:38:47:40 | "b" | | LoopUnrolling.cs:47:38:47:40 | "b" | LoopUnrolling.cs:47:43:47:45 | "c" | | LoopUnrolling.cs:47:43:47:45 | "c" | LoopUnrolling.cs:47:31:47:47 | { ..., ... } | -| LoopUnrolling.cs:48:9:52:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:45:10:45:11 | exit M6 (normal) | -| LoopUnrolling.cs:48:9:52:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:48:22:48:22 | String x | +| LoopUnrolling.cs:48:9:52:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:46:5:53:5 | After {...} | +| LoopUnrolling.cs:48:9:52:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:48:27:48:28 | access to local variable xs | | LoopUnrolling.cs:48:22:48:22 | String x | LoopUnrolling.cs:49:9:52:9 | {...} | -| LoopUnrolling.cs:48:27:48:28 | access to local variable xs | LoopUnrolling.cs:48:9:52:9 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:48:27:48:28 | After access to local variable xs [empty] | LoopUnrolling.cs:48:9:52:9 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:48:27:48:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:48:22:48:22 | String x | +| LoopUnrolling.cs:48:27:48:28 | access to local variable xs | LoopUnrolling.cs:48:27:48:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:48:27:48:28 | access to local variable xs | LoopUnrolling.cs:48:27:48:28 | After access to local variable xs [non-empty] | | LoopUnrolling.cs:49:9:52:9 | {...} | LoopUnrolling.cs:50:9:50:13 | Label: | | LoopUnrolling.cs:50:9:50:13 | Label: | LoopUnrolling.cs:50:16:50:36 | ...; | -| LoopUnrolling.cs:50:16:50:35 | call to method WriteLine | LoopUnrolling.cs:51:13:51:23 | goto ...; | -| LoopUnrolling.cs:50:16:50:36 | ...; | LoopUnrolling.cs:50:34:50:34 | access to local variable x | +| LoopUnrolling.cs:50:16:50:35 | After call to method WriteLine | LoopUnrolling.cs:50:16:50:36 | After ...; | +| LoopUnrolling.cs:50:16:50:35 | Before call to method WriteLine | LoopUnrolling.cs:50:34:50:34 | access to local variable x | +| LoopUnrolling.cs:50:16:50:35 | call to method WriteLine | LoopUnrolling.cs:50:16:50:35 | After call to method WriteLine | +| LoopUnrolling.cs:50:16:50:36 | ...; | LoopUnrolling.cs:50:16:50:35 | Before call to method WriteLine | +| LoopUnrolling.cs:50:16:50:36 | After ...; | LoopUnrolling.cs:51:13:51:23 | Before goto ...; | | LoopUnrolling.cs:50:34:50:34 | access to local variable x | LoopUnrolling.cs:50:16:50:35 | call to method WriteLine | -| LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:56:5:65:5 | {...} | -| LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | LoopUnrolling.cs:55:10:55:11 | exit M7 | +| LoopUnrolling.cs:51:13:51:23 | Before goto ...; | LoopUnrolling.cs:51:13:51:23 | goto ...; | +| LoopUnrolling.cs:55:10:55:11 | Entry | LoopUnrolling.cs:55:18:55:18 | b | +| LoopUnrolling.cs:55:10:55:11 | Normal Exit | LoopUnrolling.cs:55:10:55:11 | Exit | +| LoopUnrolling.cs:55:18:55:18 | b | LoopUnrolling.cs:56:5:65:5 | {...} | +| LoopUnrolling.cs:56:5:65:5 | After {...} | LoopUnrolling.cs:55:10:55:11 | Normal Exit | | LoopUnrolling.cs:56:5:65:5 | {...} | LoopUnrolling.cs:57:9:57:48 | ... ...; | -| LoopUnrolling.cs:57:9:57:48 | ... ...; | LoopUnrolling.cs:57:18:57:47 | 3 | -| LoopUnrolling.cs:57:13:57:47 | String[] xs = ... | LoopUnrolling.cs:58:27:58:28 | access to local variable xs | +| LoopUnrolling.cs:57:9:57:48 | ... ...; | LoopUnrolling.cs:57:13:57:47 | Before String[] xs = ... | +| LoopUnrolling.cs:57:9:57:48 | After ... ...; | LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:57:13:57:14 | access to local variable xs | LoopUnrolling.cs:57:18:57:47 | Before array creation of type String[] | +| LoopUnrolling.cs:57:13:57:47 | After String[] xs = ... | LoopUnrolling.cs:57:9:57:48 | After ... ...; | +| LoopUnrolling.cs:57:13:57:47 | Before String[] xs = ... | LoopUnrolling.cs:57:13:57:14 | access to local variable xs | +| LoopUnrolling.cs:57:13:57:47 | String[] xs = ... | LoopUnrolling.cs:57:13:57:47 | After String[] xs = ... | | LoopUnrolling.cs:57:18:57:47 | 3 | LoopUnrolling.cs:57:18:57:47 | array creation of type String[] | -| LoopUnrolling.cs:57:18:57:47 | array creation of type String[] | LoopUnrolling.cs:57:33:57:35 | "a" | -| LoopUnrolling.cs:57:31:57:47 | { ..., ... } | LoopUnrolling.cs:57:13:57:47 | String[] xs = ... | +| LoopUnrolling.cs:57:18:57:47 | After array creation of type String[] | LoopUnrolling.cs:57:13:57:47 | String[] xs = ... | +| LoopUnrolling.cs:57:18:57:47 | Before array creation of type String[] | LoopUnrolling.cs:57:31:57:47 | Before { ..., ... } | +| LoopUnrolling.cs:57:18:57:47 | array creation of type String[] | LoopUnrolling.cs:57:18:57:47 | After array creation of type String[] | +| LoopUnrolling.cs:57:31:57:47 | After { ..., ... } | LoopUnrolling.cs:57:18:57:47 | 3 | +| LoopUnrolling.cs:57:31:57:47 | Before { ..., ... } | LoopUnrolling.cs:57:33:57:35 | "a" | +| LoopUnrolling.cs:57:31:57:47 | { ..., ... } | LoopUnrolling.cs:57:31:57:47 | After { ..., ... } | | LoopUnrolling.cs:57:33:57:35 | "a" | LoopUnrolling.cs:57:38:57:40 | "b" | | LoopUnrolling.cs:57:38:57:40 | "b" | LoopUnrolling.cs:57:43:57:45 | "c" | | LoopUnrolling.cs:57:43:57:45 | "c" | LoopUnrolling.cs:57:31:57:47 | { ..., ... } | -| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | -| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:58:22:58:22 | String x | +| LoopUnrolling.cs:58:9:64:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:56:5:65:5 | After {...} | +| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:58:27:58:28 | access to local variable xs | | LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:59:9:64:9 | {...} | -| LoopUnrolling.cs:58:27:58:28 | access to local variable xs | LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:58:22:58:22 | String x | +| LoopUnrolling.cs:58:27:58:28 | access to local variable xs | LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:58:27:58:28 | access to local variable xs | LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:59:9:64:9 | After {...} | LoopUnrolling.cs:58:9:64:9 | [LoopHeader] foreach (... ... in ...) ... | | LoopUnrolling.cs:59:9:64:9 | {...} | LoopUnrolling.cs:60:13:61:37 | if (...) ... | +| LoopUnrolling.cs:60:13:61:37 | After if (...) ... | LoopUnrolling.cs:62:13:63:37 | if (...) ... | | LoopUnrolling.cs:60:13:61:37 | if (...) ... | LoopUnrolling.cs:60:17:60:17 | access to parameter b | -| LoopUnrolling.cs:60:17:60:17 | access to parameter b | LoopUnrolling.cs:61:17:61:37 | ...; | -| LoopUnrolling.cs:60:17:60:17 | access to parameter b | LoopUnrolling.cs:62:13:63:37 | if (...) ... | -| LoopUnrolling.cs:61:17:61:37 | ...; | LoopUnrolling.cs:61:35:61:35 | access to local variable x | +| LoopUnrolling.cs:60:17:60:17 | After access to parameter b [true] | LoopUnrolling.cs:61:17:61:37 | ...; | +| LoopUnrolling.cs:60:17:60:17 | access to parameter b | LoopUnrolling.cs:60:17:60:17 | After access to parameter b [false] | +| LoopUnrolling.cs:60:17:60:17 | access to parameter b | LoopUnrolling.cs:60:17:60:17 | After access to parameter b [true] | +| LoopUnrolling.cs:61:17:61:36 | After call to method WriteLine | LoopUnrolling.cs:61:17:61:37 | After ...; | +| LoopUnrolling.cs:61:17:61:36 | Before call to method WriteLine | LoopUnrolling.cs:61:35:61:35 | access to local variable x | +| LoopUnrolling.cs:61:17:61:36 | call to method WriteLine | LoopUnrolling.cs:61:17:61:36 | After call to method WriteLine | +| LoopUnrolling.cs:61:17:61:37 | ...; | LoopUnrolling.cs:61:17:61:36 | Before call to method WriteLine | | LoopUnrolling.cs:61:35:61:35 | access to local variable x | LoopUnrolling.cs:61:17:61:36 | call to method WriteLine | +| LoopUnrolling.cs:62:13:63:37 | After if (...) ... | LoopUnrolling.cs:59:9:64:9 | After {...} | | LoopUnrolling.cs:62:13:63:37 | if (...) ... | LoopUnrolling.cs:62:17:62:17 | access to parameter b | -| LoopUnrolling.cs:62:17:62:17 | access to parameter b | LoopUnrolling.cs:63:17:63:37 | ...; | -| LoopUnrolling.cs:63:17:63:37 | ...; | LoopUnrolling.cs:63:35:63:35 | access to local variable x | +| LoopUnrolling.cs:62:17:62:17 | After access to parameter b [true] | LoopUnrolling.cs:63:17:63:37 | ...; | +| LoopUnrolling.cs:62:17:62:17 | access to parameter b | LoopUnrolling.cs:62:17:62:17 | After access to parameter b [false] | +| LoopUnrolling.cs:62:17:62:17 | access to parameter b | LoopUnrolling.cs:62:17:62:17 | After access to parameter b [true] | +| LoopUnrolling.cs:63:17:63:36 | After call to method WriteLine | LoopUnrolling.cs:63:17:63:37 | After ...; | +| LoopUnrolling.cs:63:17:63:36 | Before call to method WriteLine | LoopUnrolling.cs:63:35:63:35 | access to local variable x | +| LoopUnrolling.cs:63:17:63:36 | call to method WriteLine | LoopUnrolling.cs:63:17:63:36 | After call to method WriteLine | +| LoopUnrolling.cs:63:17:63:37 | ...; | LoopUnrolling.cs:63:17:63:36 | Before call to method WriteLine | | LoopUnrolling.cs:63:35:63:35 | access to local variable x | LoopUnrolling.cs:63:17:63:36 | call to method WriteLine | -| LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:68:5:74:5 | {...} | -| LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | LoopUnrolling.cs:67:10:67:11 | exit M8 | +| LoopUnrolling.cs:67:10:67:11 | Entry | LoopUnrolling.cs:67:26:67:29 | args | +| LoopUnrolling.cs:67:10:67:11 | Normal Exit | LoopUnrolling.cs:67:10:67:11 | Exit | +| LoopUnrolling.cs:67:26:67:29 | args | LoopUnrolling.cs:68:5:74:5 | {...} | | LoopUnrolling.cs:68:5:74:5 | {...} | LoopUnrolling.cs:69:9:70:19 | if (...) ... | -| LoopUnrolling.cs:69:9:70:19 | if (...) ... | LoopUnrolling.cs:69:14:69:17 | access to parameter args | -| LoopUnrolling.cs:69:13:69:23 | [false] !... | LoopUnrolling.cs:71:9:71:21 | ...; | -| LoopUnrolling.cs:69:13:69:23 | [true] !... | LoopUnrolling.cs:70:13:70:19 | return ...; | +| LoopUnrolling.cs:69:9:70:19 | After if (...) ... | LoopUnrolling.cs:71:9:71:21 | ...; | +| LoopUnrolling.cs:69:9:70:19 | if (...) ... | LoopUnrolling.cs:69:13:69:23 | !... | +| LoopUnrolling.cs:69:13:69:23 | !... | LoopUnrolling.cs:69:14:69:23 | Before call to method Any | +| LoopUnrolling.cs:69:13:69:23 | After !... [false] | LoopUnrolling.cs:69:9:70:19 | After if (...) ... | +| LoopUnrolling.cs:69:13:69:23 | After !... [true] | LoopUnrolling.cs:70:13:70:19 | Before return ...; | | LoopUnrolling.cs:69:14:69:17 | access to parameter args | LoopUnrolling.cs:69:14:69:23 | call to method Any | -| LoopUnrolling.cs:69:14:69:23 | call to method Any | LoopUnrolling.cs:69:13:69:23 | [false] !... | -| LoopUnrolling.cs:69:14:69:23 | call to method Any | LoopUnrolling.cs:69:13:69:23 | [true] !... | +| LoopUnrolling.cs:69:14:69:23 | After call to method Any [false] | LoopUnrolling.cs:69:13:69:23 | After !... [true] | +| LoopUnrolling.cs:69:14:69:23 | After call to method Any [true] | LoopUnrolling.cs:69:13:69:23 | After !... [false] | +| LoopUnrolling.cs:69:14:69:23 | Before call to method Any | LoopUnrolling.cs:69:14:69:17 | access to parameter args | +| LoopUnrolling.cs:69:14:69:23 | call to method Any | LoopUnrolling.cs:69:14:69:23 | After call to method Any [false] | +| LoopUnrolling.cs:69:14:69:23 | call to method Any | LoopUnrolling.cs:69:14:69:23 | After call to method Any [true] | +| LoopUnrolling.cs:70:13:70:19 | Before return ...; | LoopUnrolling.cs:70:13:70:19 | return ...; | | LoopUnrolling.cs:71:9:71:12 | access to parameter args | LoopUnrolling.cs:71:9:71:20 | call to method Clear | -| LoopUnrolling.cs:71:9:71:20 | call to method Clear | LoopUnrolling.cs:72:29:72:32 | access to parameter args | -| LoopUnrolling.cs:71:9:71:21 | ...; | LoopUnrolling.cs:71:9:71:12 | access to parameter args | -| LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:72:22:72:24 | String arg | +| LoopUnrolling.cs:71:9:71:20 | After call to method Clear | LoopUnrolling.cs:71:9:71:21 | After ...; | +| LoopUnrolling.cs:71:9:71:20 | Before call to method Clear | LoopUnrolling.cs:71:9:71:12 | access to parameter args | +| LoopUnrolling.cs:71:9:71:20 | call to method Clear | LoopUnrolling.cs:71:9:71:20 | After call to method Clear | +| LoopUnrolling.cs:71:9:71:21 | ...; | LoopUnrolling.cs:71:9:71:20 | Before call to method Clear | +| LoopUnrolling.cs:71:9:71:21 | After ...; | LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:72:9:73:35 | After foreach (... ... in ...) ... | LoopUnrolling.cs:68:5:74:5 | After {...} | +| LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:72:29:72:32 | access to parameter args | | LoopUnrolling.cs:72:22:72:24 | String arg | LoopUnrolling.cs:73:13:73:35 | ...; | -| LoopUnrolling.cs:72:29:72:32 | access to parameter args | LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:73:13:73:35 | ...; | LoopUnrolling.cs:73:31:73:33 | access to local variable arg | +| LoopUnrolling.cs:72:29:72:32 | After access to parameter args [non-empty] | LoopUnrolling.cs:72:22:72:24 | String arg | +| LoopUnrolling.cs:72:29:72:32 | access to parameter args | LoopUnrolling.cs:72:29:72:32 | After access to parameter args [empty] | +| LoopUnrolling.cs:72:29:72:32 | access to parameter args | LoopUnrolling.cs:72:29:72:32 | After access to parameter args [non-empty] | +| LoopUnrolling.cs:73:13:73:34 | After call to method WriteLine | LoopUnrolling.cs:73:13:73:35 | After ...; | +| LoopUnrolling.cs:73:13:73:34 | Before call to method WriteLine | LoopUnrolling.cs:73:31:73:33 | access to local variable arg | +| LoopUnrolling.cs:73:13:73:34 | call to method WriteLine | LoopUnrolling.cs:73:13:73:34 | After call to method WriteLine | +| LoopUnrolling.cs:73:13:73:35 | ...; | LoopUnrolling.cs:73:13:73:34 | Before call to method WriteLine | +| LoopUnrolling.cs:73:13:73:35 | After ...; | LoopUnrolling.cs:72:9:73:35 | [LoopHeader] foreach (... ... in ...) ... | | LoopUnrolling.cs:73:31:73:33 | access to local variable arg | LoopUnrolling.cs:73:13:73:34 | call to method WriteLine | -| LoopUnrolling.cs:76:10:76:11 | enter M9 | LoopUnrolling.cs:77:5:83:5 | {...} | -| LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | LoopUnrolling.cs:76:10:76:11 | exit M9 | +| LoopUnrolling.cs:76:10:76:11 | Entry | LoopUnrolling.cs:77:5:83:5 | {...} | +| LoopUnrolling.cs:76:10:76:11 | Normal Exit | LoopUnrolling.cs:76:10:76:11 | Exit | +| LoopUnrolling.cs:77:5:83:5 | After {...} | LoopUnrolling.cs:76:10:76:11 | Normal Exit | | LoopUnrolling.cs:77:5:83:5 | {...} | LoopUnrolling.cs:78:9:78:34 | ... ...; | -| LoopUnrolling.cs:78:9:78:34 | ... ...; | LoopUnrolling.cs:78:29:78:29 | 2 | -| LoopUnrolling.cs:78:13:78:33 | String[,] xs = ... | LoopUnrolling.cs:79:27:79:28 | access to local variable xs | -| LoopUnrolling.cs:78:18:78:33 | array creation of type String[,] | LoopUnrolling.cs:78:13:78:33 | String[,] xs = ... | +| LoopUnrolling.cs:78:9:78:34 | ... ...; | LoopUnrolling.cs:78:13:78:33 | Before String[,] xs = ... | +| LoopUnrolling.cs:78:9:78:34 | After ... ...; | LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:78:13:78:14 | access to local variable xs | LoopUnrolling.cs:78:18:78:33 | Before array creation of type String[,] | +| LoopUnrolling.cs:78:13:78:33 | After String[,] xs = ... | LoopUnrolling.cs:78:9:78:34 | After ... ...; | +| LoopUnrolling.cs:78:13:78:33 | Before String[,] xs = ... | LoopUnrolling.cs:78:13:78:14 | access to local variable xs | +| LoopUnrolling.cs:78:13:78:33 | String[,] xs = ... | LoopUnrolling.cs:78:13:78:33 | After String[,] xs = ... | +| LoopUnrolling.cs:78:18:78:33 | After array creation of type String[,] | LoopUnrolling.cs:78:13:78:33 | String[,] xs = ... | +| LoopUnrolling.cs:78:18:78:33 | Before array creation of type String[,] | LoopUnrolling.cs:78:29:78:29 | 2 | +| LoopUnrolling.cs:78:18:78:33 | array creation of type String[,] | LoopUnrolling.cs:78:18:78:33 | After array creation of type String[,] | | LoopUnrolling.cs:78:29:78:29 | 2 | LoopUnrolling.cs:78:32:78:32 | 0 | | LoopUnrolling.cs:78:32:78:32 | 0 | LoopUnrolling.cs:78:18:78:33 | array creation of type String[,] | -| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | -| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:79:22:79:22 | String x | +| LoopUnrolling.cs:79:9:82:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:77:5:83:5 | After {...} | +| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:79:27:79:28 | access to local variable xs | | LoopUnrolling.cs:79:22:79:22 | String x | LoopUnrolling.cs:80:9:82:9 | {...} | -| LoopUnrolling.cs:79:27:79:28 | access to local variable xs | LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:79:27:79:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:79:22:79:22 | String x | +| LoopUnrolling.cs:79:27:79:28 | access to local variable xs | LoopUnrolling.cs:79:27:79:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:79:27:79:28 | access to local variable xs | LoopUnrolling.cs:79:27:79:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:80:9:82:9 | After {...} | LoopUnrolling.cs:79:9:82:9 | [LoopHeader] foreach (... ... in ...) ... | | LoopUnrolling.cs:80:9:82:9 | {...} | LoopUnrolling.cs:81:13:81:33 | ...; | -| LoopUnrolling.cs:81:13:81:33 | ...; | LoopUnrolling.cs:81:31:81:31 | access to local variable x | +| LoopUnrolling.cs:81:13:81:32 | After call to method WriteLine | LoopUnrolling.cs:81:13:81:33 | After ...; | +| LoopUnrolling.cs:81:13:81:32 | Before call to method WriteLine | LoopUnrolling.cs:81:31:81:31 | access to local variable x | +| LoopUnrolling.cs:81:13:81:32 | call to method WriteLine | LoopUnrolling.cs:81:13:81:32 | After call to method WriteLine | +| LoopUnrolling.cs:81:13:81:33 | ...; | LoopUnrolling.cs:81:13:81:32 | Before call to method WriteLine | +| LoopUnrolling.cs:81:13:81:33 | After ...; | LoopUnrolling.cs:80:9:82:9 | After {...} | | LoopUnrolling.cs:81:31:81:31 | access to local variable x | LoopUnrolling.cs:81:13:81:32 | call to method WriteLine | -| LoopUnrolling.cs:85:10:85:12 | enter M10 | LoopUnrolling.cs:86:5:92:5 | {...} | -| LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | LoopUnrolling.cs:85:10:85:12 | exit M10 | +| LoopUnrolling.cs:85:10:85:12 | Entry | LoopUnrolling.cs:86:5:92:5 | {...} | +| LoopUnrolling.cs:85:10:85:12 | Normal Exit | LoopUnrolling.cs:85:10:85:12 | Exit | +| LoopUnrolling.cs:86:5:92:5 | After {...} | LoopUnrolling.cs:85:10:85:12 | Normal Exit | | LoopUnrolling.cs:86:5:92:5 | {...} | LoopUnrolling.cs:87:9:87:34 | ... ...; | -| LoopUnrolling.cs:87:9:87:34 | ... ...; | LoopUnrolling.cs:87:29:87:29 | 0 | -| LoopUnrolling.cs:87:13:87:33 | String[,] xs = ... | LoopUnrolling.cs:88:27:88:28 | access to local variable xs | -| LoopUnrolling.cs:87:18:87:33 | array creation of type String[,] | LoopUnrolling.cs:87:13:87:33 | String[,] xs = ... | +| LoopUnrolling.cs:87:9:87:34 | ... ...; | LoopUnrolling.cs:87:13:87:33 | Before String[,] xs = ... | +| LoopUnrolling.cs:87:9:87:34 | After ... ...; | LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:87:13:87:14 | access to local variable xs | LoopUnrolling.cs:87:18:87:33 | Before array creation of type String[,] | +| LoopUnrolling.cs:87:13:87:33 | After String[,] xs = ... | LoopUnrolling.cs:87:9:87:34 | After ... ...; | +| LoopUnrolling.cs:87:13:87:33 | Before String[,] xs = ... | LoopUnrolling.cs:87:13:87:14 | access to local variable xs | +| LoopUnrolling.cs:87:13:87:33 | String[,] xs = ... | LoopUnrolling.cs:87:13:87:33 | After String[,] xs = ... | +| LoopUnrolling.cs:87:18:87:33 | After array creation of type String[,] | LoopUnrolling.cs:87:13:87:33 | String[,] xs = ... | +| LoopUnrolling.cs:87:18:87:33 | Before array creation of type String[,] | LoopUnrolling.cs:87:29:87:29 | 0 | +| LoopUnrolling.cs:87:18:87:33 | array creation of type String[,] | LoopUnrolling.cs:87:18:87:33 | After array creation of type String[,] | | LoopUnrolling.cs:87:29:87:29 | 0 | LoopUnrolling.cs:87:32:87:32 | 2 | | LoopUnrolling.cs:87:32:87:32 | 2 | LoopUnrolling.cs:87:18:87:33 | array creation of type String[,] | -| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | -| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:88:22:88:22 | String x | +| LoopUnrolling.cs:88:9:91:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:86:5:92:5 | After {...} | +| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:88:27:88:28 | access to local variable xs | | LoopUnrolling.cs:88:22:88:22 | String x | LoopUnrolling.cs:89:9:91:9 | {...} | -| LoopUnrolling.cs:88:27:88:28 | access to local variable xs | LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:88:27:88:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:88:22:88:22 | String x | +| LoopUnrolling.cs:88:27:88:28 | access to local variable xs | LoopUnrolling.cs:88:27:88:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:88:27:88:28 | access to local variable xs | LoopUnrolling.cs:88:27:88:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:89:9:91:9 | After {...} | LoopUnrolling.cs:88:9:91:9 | [LoopHeader] foreach (... ... in ...) ... | | LoopUnrolling.cs:89:9:91:9 | {...} | LoopUnrolling.cs:90:13:90:33 | ...; | -| LoopUnrolling.cs:90:13:90:33 | ...; | LoopUnrolling.cs:90:31:90:31 | access to local variable x | +| LoopUnrolling.cs:90:13:90:32 | After call to method WriteLine | LoopUnrolling.cs:90:13:90:33 | After ...; | +| LoopUnrolling.cs:90:13:90:32 | Before call to method WriteLine | LoopUnrolling.cs:90:31:90:31 | access to local variable x | +| LoopUnrolling.cs:90:13:90:32 | call to method WriteLine | LoopUnrolling.cs:90:13:90:32 | After call to method WriteLine | +| LoopUnrolling.cs:90:13:90:33 | ...; | LoopUnrolling.cs:90:13:90:32 | Before call to method WriteLine | +| LoopUnrolling.cs:90:13:90:33 | After ...; | LoopUnrolling.cs:89:9:91:9 | After {...} | | LoopUnrolling.cs:90:31:90:31 | access to local variable x | LoopUnrolling.cs:90:13:90:32 | call to method WriteLine | -| LoopUnrolling.cs:94:10:94:12 | enter M11 | LoopUnrolling.cs:95:5:101:5 | {...} | -| LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | LoopUnrolling.cs:94:10:94:12 | exit M11 | +| LoopUnrolling.cs:94:10:94:12 | Entry | LoopUnrolling.cs:95:5:101:5 | {...} | +| LoopUnrolling.cs:94:10:94:12 | Normal Exit | LoopUnrolling.cs:94:10:94:12 | Exit | +| LoopUnrolling.cs:95:5:101:5 | After {...} | LoopUnrolling.cs:94:10:94:12 | Normal Exit | | LoopUnrolling.cs:95:5:101:5 | {...} | LoopUnrolling.cs:96:9:96:34 | ... ...; | -| LoopUnrolling.cs:96:9:96:34 | ... ...; | LoopUnrolling.cs:96:29:96:29 | 2 | -| LoopUnrolling.cs:96:13:96:33 | String[,] xs = ... | LoopUnrolling.cs:97:27:97:28 | access to local variable xs | -| LoopUnrolling.cs:96:18:96:33 | array creation of type String[,] | LoopUnrolling.cs:96:13:96:33 | String[,] xs = ... | +| LoopUnrolling.cs:96:9:96:34 | ... ...; | LoopUnrolling.cs:96:13:96:33 | Before String[,] xs = ... | +| LoopUnrolling.cs:96:9:96:34 | After ... ...; | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:96:13:96:14 | access to local variable xs | LoopUnrolling.cs:96:18:96:33 | Before array creation of type String[,] | +| LoopUnrolling.cs:96:13:96:33 | After String[,] xs = ... | LoopUnrolling.cs:96:9:96:34 | After ... ...; | +| LoopUnrolling.cs:96:13:96:33 | Before String[,] xs = ... | LoopUnrolling.cs:96:13:96:14 | access to local variable xs | +| LoopUnrolling.cs:96:13:96:33 | String[,] xs = ... | LoopUnrolling.cs:96:13:96:33 | After String[,] xs = ... | +| LoopUnrolling.cs:96:18:96:33 | After array creation of type String[,] | LoopUnrolling.cs:96:13:96:33 | String[,] xs = ... | +| LoopUnrolling.cs:96:18:96:33 | Before array creation of type String[,] | LoopUnrolling.cs:96:29:96:29 | 2 | +| LoopUnrolling.cs:96:18:96:33 | array creation of type String[,] | LoopUnrolling.cs:96:18:96:33 | After array creation of type String[,] | | LoopUnrolling.cs:96:29:96:29 | 2 | LoopUnrolling.cs:96:32:96:32 | 2 | | LoopUnrolling.cs:96:32:96:32 | 2 | LoopUnrolling.cs:96:18:96:33 | array creation of type String[,] | -| LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | -| LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:97:22:97:22 | String x | +| LoopUnrolling.cs:97:9:100:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:95:5:101:5 | After {...} | +| LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:97:27:97:28 | access to local variable xs | | LoopUnrolling.cs:97:22:97:22 | String x | LoopUnrolling.cs:98:9:100:9 | {...} | -| LoopUnrolling.cs:97:27:97:28 | access to local variable xs | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:97:27:97:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:97:22:97:22 | String x | +| LoopUnrolling.cs:97:27:97:28 | access to local variable xs | LoopUnrolling.cs:97:27:97:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:97:27:97:28 | access to local variable xs | LoopUnrolling.cs:97:27:97:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:98:9:100:9 | After {...} | LoopUnrolling.cs:97:9:100:9 | [LoopHeader] foreach (... ... in ...) ... | | LoopUnrolling.cs:98:9:100:9 | {...} | LoopUnrolling.cs:99:13:99:33 | ...; | -| LoopUnrolling.cs:99:13:99:33 | ...; | LoopUnrolling.cs:99:31:99:31 | access to local variable x | +| LoopUnrolling.cs:99:13:99:32 | After call to method WriteLine | LoopUnrolling.cs:99:13:99:33 | After ...; | +| LoopUnrolling.cs:99:13:99:32 | Before call to method WriteLine | LoopUnrolling.cs:99:31:99:31 | access to local variable x | +| LoopUnrolling.cs:99:13:99:32 | call to method WriteLine | LoopUnrolling.cs:99:13:99:32 | After call to method WriteLine | +| LoopUnrolling.cs:99:13:99:33 | ...; | LoopUnrolling.cs:99:13:99:32 | Before call to method WriteLine | +| LoopUnrolling.cs:99:13:99:33 | After ...; | LoopUnrolling.cs:98:9:100:9 | After {...} | | LoopUnrolling.cs:99:31:99:31 | access to local variable x | LoopUnrolling.cs:99:13:99:32 | call to method WriteLine | -| MultiImplementationA.cs:4:7:4:8 | call to constructor Object | MultiImplementationA.cs:4:7:4:8 | {...} | -| MultiImplementationA.cs:4:7:4:8 | call to method | MultiImplementationA.cs:4:7:4:8 | call to constructor Object | -| MultiImplementationA.cs:4:7:4:8 | enter C1 | MultiImplementationA.cs:4:7:4:8 | this access | -| MultiImplementationA.cs:4:7:4:8 | enter C1 | MultiImplementationB.cs:1:7:1:8 | this access | -| MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | MultiImplementationA.cs:4:7:4:8 | exit C1 | +| MultiImplementationA.cs:4:7:4:8 | After call to constructor Object | MultiImplementationA.cs:4:7:4:8 | {...} | +| MultiImplementationA.cs:4:7:4:8 | After call to method | MultiImplementationA.cs:4:7:4:8 | Before call to constructor Object | +| MultiImplementationA.cs:4:7:4:8 | Before call to constructor Object | MultiImplementationA.cs:4:7:4:8 | call to constructor Object | +| MultiImplementationA.cs:4:7:4:8 | Before call to method | MultiImplementationA.cs:4:7:4:8 | this access | +| MultiImplementationA.cs:4:7:4:8 | Entry | MultiImplementationA.cs:4:7:4:8 | Before call to method | +| MultiImplementationA.cs:4:7:4:8 | Entry | MultiImplementationB.cs:1:7:1:8 | Before call to method | +| MultiImplementationA.cs:4:7:4:8 | Normal Exit | MultiImplementationA.cs:4:7:4:8 | Exit | +| MultiImplementationA.cs:4:7:4:8 | call to constructor Object | MultiImplementationA.cs:4:7:4:8 | After call to constructor Object | +| MultiImplementationA.cs:4:7:4:8 | call to method | MultiImplementationA.cs:4:7:4:8 | After call to method | | MultiImplementationA.cs:4:7:4:8 | this access | MultiImplementationA.cs:4:7:4:8 | call to method | -| MultiImplementationA.cs:6:22:6:31 | enter get_P1 | MultiImplementationA.cs:6:28:6:31 | null | -| MultiImplementationA.cs:6:22:6:31 | enter get_P1 | MultiImplementationB.cs:3:22:3:22 | 0 | -| MultiImplementationA.cs:6:22:6:31 | throw ... | MultiImplementationA.cs:6:22:6:31 | exit get_P1 (abnormal) | +| MultiImplementationA.cs:6:22:6:31 | Before throw ... | MultiImplementationA.cs:6:28:6:31 | null | +| MultiImplementationA.cs:6:22:6:31 | Entry | MultiImplementationA.cs:6:22:6:31 | Before throw ... | +| MultiImplementationA.cs:6:22:6:31 | Entry | MultiImplementationB.cs:3:22:3:22 | 0 | +| MultiImplementationA.cs:6:22:6:31 | throw ... | MultiImplementationA.cs:6:22:6:31 | Exceptional Exit | | MultiImplementationA.cs:6:28:6:31 | null | MultiImplementationA.cs:6:22:6:31 | throw ... | -| MultiImplementationA.cs:7:21:7:23 | enter get_P2 | MultiImplementationA.cs:7:25:7:39 | {...} | -| MultiImplementationA.cs:7:21:7:23 | enter get_P2 | MultiImplementationB.cs:4:25:4:37 | {...} | -| MultiImplementationA.cs:7:25:7:39 | {...} | MultiImplementationA.cs:7:33:7:36 | null | -| MultiImplementationA.cs:7:27:7:37 | throw ...; | MultiImplementationA.cs:7:21:7:23 | exit get_P2 (abnormal) | +| MultiImplementationA.cs:7:21:7:23 | Entry | MultiImplementationA.cs:7:25:7:39 | {...} | +| MultiImplementationA.cs:7:21:7:23 | Entry | MultiImplementationB.cs:4:25:4:37 | {...} | +| MultiImplementationA.cs:7:25:7:39 | {...} | MultiImplementationA.cs:7:27:7:37 | Before throw ...; | +| MultiImplementationA.cs:7:27:7:37 | Before throw ...; | MultiImplementationA.cs:7:33:7:36 | null | +| MultiImplementationA.cs:7:27:7:37 | throw ...; | MultiImplementationA.cs:7:21:7:23 | Exceptional Exit | | MultiImplementationA.cs:7:33:7:36 | null | MultiImplementationA.cs:7:27:7:37 | throw ...; | -| MultiImplementationA.cs:7:41:7:43 | enter set_P2 | MultiImplementationA.cs:7:45:7:59 | {...} | -| MultiImplementationA.cs:7:41:7:43 | enter set_P2 | MultiImplementationB.cs:4:43:4:45 | {...} | -| MultiImplementationA.cs:7:45:7:59 | {...} | MultiImplementationA.cs:7:53:7:56 | null | -| MultiImplementationA.cs:7:47:7:57 | throw ...; | MultiImplementationA.cs:7:41:7:43 | exit set_P2 (abnormal) | +| MultiImplementationA.cs:7:41:7:43 | Entry | MultiImplementationA.cs:7:41:7:43 | value | +| MultiImplementationA.cs:7:41:7:43 | value | MultiImplementationA.cs:7:45:7:59 | {...} | +| MultiImplementationA.cs:7:41:7:43 | value | MultiImplementationB.cs:4:43:4:45 | {...} | +| MultiImplementationA.cs:7:45:7:59 | {...} | MultiImplementationA.cs:7:47:7:57 | Before throw ...; | +| MultiImplementationA.cs:7:47:7:57 | Before throw ...; | MultiImplementationA.cs:7:53:7:56 | null | +| MultiImplementationA.cs:7:47:7:57 | throw ...; | MultiImplementationA.cs:7:41:7:43 | Exceptional Exit | | MultiImplementationA.cs:7:53:7:56 | null | MultiImplementationA.cs:7:47:7:57 | throw ...; | -| MultiImplementationA.cs:8:16:8:16 | enter M | MultiImplementationA.cs:8:29:8:32 | null | -| MultiImplementationA.cs:8:16:8:16 | enter M | MultiImplementationB.cs:5:23:5:23 | 2 | -| MultiImplementationA.cs:8:23:8:32 | throw ... | MultiImplementationA.cs:8:16:8:16 | exit M (abnormal) | +| MultiImplementationA.cs:8:16:8:16 | Entry | MultiImplementationA.cs:8:23:8:32 | Before throw ... | +| MultiImplementationA.cs:8:16:8:16 | Entry | MultiImplementationB.cs:5:23:5:23 | 2 | +| MultiImplementationA.cs:8:23:8:32 | Before throw ... | MultiImplementationA.cs:8:29:8:32 | null | +| MultiImplementationA.cs:8:23:8:32 | throw ... | MultiImplementationA.cs:8:16:8:16 | Exceptional Exit | | MultiImplementationA.cs:8:29:8:32 | null | MultiImplementationA.cs:8:23:8:32 | throw ... | -| MultiImplementationA.cs:11:7:11:8 | enter | MultiImplementationA.cs:13:16:13:16 | this access | -| MultiImplementationA.cs:11:7:11:8 | enter | MultiImplementationB.cs:11:16:11:16 | this access | -| MultiImplementationA.cs:11:7:11:8 | exit (normal) | MultiImplementationA.cs:11:7:11:8 | exit | -| MultiImplementationA.cs:13:16:13:16 | access to field F | MultiImplementationA.cs:13:16:13:20 | ... = ... | -| MultiImplementationA.cs:13:16:13:16 | this access | MultiImplementationA.cs:13:20:13:20 | 0 | -| MultiImplementationA.cs:13:16:13:20 | ... = ... | MultiImplementationA.cs:24:16:24:16 | this access | -| MultiImplementationA.cs:13:20:13:20 | 0 | MultiImplementationA.cs:13:16:13:16 | access to field F | -| MultiImplementationA.cs:14:31:14:31 | access to parameter i | MultiImplementationA.cs:14:31:14:31 | exit get_Item (normal) | -| MultiImplementationA.cs:14:31:14:31 | enter get_Item | MultiImplementationA.cs:14:31:14:31 | access to parameter i | -| MultiImplementationA.cs:14:31:14:31 | enter get_Item | MultiImplementationB.cs:12:37:12:40 | null | -| MultiImplementationA.cs:15:36:15:38 | enter get_Item | MultiImplementationA.cs:15:40:15:52 | {...} | -| MultiImplementationA.cs:15:36:15:38 | enter get_Item | MultiImplementationB.cs:13:40:13:54 | {...} | -| MultiImplementationA.cs:15:40:15:52 | {...} | MultiImplementationA.cs:15:49:15:49 | access to parameter s | -| MultiImplementationA.cs:15:42:15:50 | return ...; | MultiImplementationA.cs:15:36:15:38 | exit get_Item (normal) | +| MultiImplementationA.cs:11:7:11:8 | Entry | MultiImplementationA.cs:13:16:13:20 | Before ... = ... | +| MultiImplementationA.cs:11:7:11:8 | Entry | MultiImplementationB.cs:11:16:11:20 | Before ... = ... | +| MultiImplementationA.cs:11:7:11:8 | Normal Exit | MultiImplementationA.cs:11:7:11:8 | Exit | +| MultiImplementationA.cs:13:16:13:16 | After access to field F | MultiImplementationA.cs:13:20:13:20 | 0 | +| MultiImplementationA.cs:13:16:13:16 | Before access to field F | MultiImplementationA.cs:13:16:13:16 | this access | +| MultiImplementationA.cs:13:16:13:16 | access to field F | MultiImplementationA.cs:13:16:13:16 | After access to field F | +| MultiImplementationA.cs:13:16:13:16 | this access | MultiImplementationA.cs:13:16:13:16 | access to field F | +| MultiImplementationA.cs:13:16:13:20 | ... = ... | MultiImplementationA.cs:13:16:13:20 | After ... = ... | +| MultiImplementationA.cs:13:16:13:20 | After ... = ... | MultiImplementationA.cs:24:32:24:34 | Before ... = ... | +| MultiImplementationA.cs:13:16:13:20 | Before ... = ... | MultiImplementationA.cs:13:16:13:16 | Before access to field F | +| MultiImplementationA.cs:13:20:13:20 | 0 | MultiImplementationA.cs:13:16:13:20 | ... = ... | +| MultiImplementationA.cs:14:25:14:25 | i | MultiImplementationA.cs:14:31:14:31 | access to parameter i | +| MultiImplementationA.cs:14:25:14:25 | i | MultiImplementationB.cs:12:31:12:40 | Before throw ... | +| MultiImplementationA.cs:14:31:14:31 | Entry | MultiImplementationA.cs:14:25:14:25 | i | +| MultiImplementationA.cs:14:31:14:31 | access to parameter i | MultiImplementationA.cs:14:31:14:31 | Normal Exit | +| MultiImplementationA.cs:15:31:15:31 | s | MultiImplementationA.cs:15:40:15:52 | {...} | +| MultiImplementationA.cs:15:31:15:31 | s | MultiImplementationA.cs:15:54:15:56 | value | +| MultiImplementationA.cs:15:31:15:31 | s | MultiImplementationB.cs:13:40:13:54 | {...} | +| MultiImplementationA.cs:15:36:15:38 | Entry | MultiImplementationA.cs:15:31:15:31 | s | +| MultiImplementationA.cs:15:40:15:52 | {...} | MultiImplementationA.cs:15:42:15:50 | Before return ...; | +| MultiImplementationA.cs:15:42:15:50 | Before return ...; | MultiImplementationA.cs:15:49:15:49 | access to parameter s | +| MultiImplementationA.cs:15:42:15:50 | return ...; | MultiImplementationA.cs:15:36:15:38 | Normal Exit | | MultiImplementationA.cs:15:49:15:49 | access to parameter s | MultiImplementationA.cs:15:42:15:50 | return ...; | -| MultiImplementationA.cs:15:54:15:56 | enter set_Item | MultiImplementationA.cs:15:58:15:60 | {...} | -| MultiImplementationA.cs:15:54:15:56 | enter set_Item | MultiImplementationB.cs:13:60:13:62 | {...} | -| MultiImplementationA.cs:15:54:15:56 | exit set_Item (normal) | MultiImplementationA.cs:15:54:15:56 | exit set_Item | -| MultiImplementationA.cs:16:17:16:18 | enter M1 | MultiImplementationA.cs:17:5:19:5 | {...} | -| MultiImplementationA.cs:16:17:16:18 | enter M1 | MultiImplementationB.cs:15:5:17:5 | {...} | -| MultiImplementationA.cs:16:17:16:18 | exit M1 (normal) | MultiImplementationA.cs:16:17:16:18 | exit M1 | +| MultiImplementationA.cs:15:54:15:56 | Entry | MultiImplementationA.cs:15:31:15:31 | s | +| MultiImplementationA.cs:15:54:15:56 | Normal Exit | MultiImplementationA.cs:15:54:15:56 | Exit | +| MultiImplementationA.cs:15:54:15:56 | value | MultiImplementationA.cs:15:58:15:60 | {...} | +| MultiImplementationA.cs:15:54:15:56 | value | MultiImplementationB.cs:13:60:13:62 | {...} | +| MultiImplementationA.cs:16:17:16:18 | Entry | MultiImplementationA.cs:16:24:16:24 | i | +| MultiImplementationA.cs:16:17:16:18 | Normal Exit | MultiImplementationA.cs:16:17:16:18 | Exit | +| MultiImplementationA.cs:16:24:16:24 | i | MultiImplementationA.cs:17:5:19:5 | {...} | +| MultiImplementationA.cs:16:24:16:24 | i | MultiImplementationB.cs:15:5:17:5 | {...} | | MultiImplementationA.cs:17:5:19:5 | {...} | MultiImplementationA.cs:18:9:18:22 | M2(...) | -| MultiImplementationA.cs:18:9:18:22 | enter M2 | MultiImplementationA.cs:18:21:18:21 | 0 | -| MultiImplementationA.cs:18:9:18:22 | exit M2 (normal) | MultiImplementationA.cs:18:9:18:22 | exit M2 | -| MultiImplementationA.cs:18:21:18:21 | 0 | MultiImplementationA.cs:18:9:18:22 | exit M2 (normal) | -| MultiImplementationA.cs:20:12:20:13 | call to constructor Object | MultiImplementationA.cs:20:22:20:31 | {...} | -| MultiImplementationA.cs:20:12:20:13 | call to method | MultiImplementationA.cs:20:12:20:13 | call to constructor Object | -| MultiImplementationA.cs:20:12:20:13 | enter C2 | MultiImplementationA.cs:20:12:20:13 | this access | -| MultiImplementationA.cs:20:12:20:13 | enter C2 | MultiImplementationB.cs:18:12:18:13 | this access | +| MultiImplementationA.cs:18:9:18:22 | Entry | MultiImplementationA.cs:18:21:18:21 | 0 | +| MultiImplementationA.cs:18:9:18:22 | M2(...) | MultiImplementationA.cs:17:5:19:5 | After {...} | +| MultiImplementationA.cs:18:9:18:22 | Normal Exit | MultiImplementationA.cs:18:9:18:22 | Exit | +| MultiImplementationA.cs:18:21:18:21 | 0 | MultiImplementationA.cs:18:9:18:22 | Normal Exit | +| MultiImplementationA.cs:20:12:20:13 | After call to constructor Object | MultiImplementationA.cs:20:22:20:31 | {...} | +| MultiImplementationA.cs:20:12:20:13 | After call to method | MultiImplementationA.cs:20:12:20:13 | Before call to constructor Object | +| MultiImplementationA.cs:20:12:20:13 | Before call to constructor Object | MultiImplementationA.cs:20:12:20:13 | call to constructor Object | +| MultiImplementationA.cs:20:12:20:13 | Before call to method | MultiImplementationA.cs:20:12:20:13 | this access | +| MultiImplementationA.cs:20:12:20:13 | Entry | MultiImplementationA.cs:20:19:20:19 | i | +| MultiImplementationA.cs:20:12:20:13 | call to constructor Object | MultiImplementationA.cs:20:12:20:13 | After call to constructor Object | +| MultiImplementationA.cs:20:12:20:13 | call to method | MultiImplementationA.cs:20:12:20:13 | After call to method | | MultiImplementationA.cs:20:12:20:13 | this access | MultiImplementationA.cs:20:12:20:13 | call to method | +| MultiImplementationA.cs:20:19:20:19 | i | MultiImplementationA.cs:20:12:20:13 | Before call to method | +| MultiImplementationA.cs:20:19:20:19 | i | MultiImplementationB.cs:18:12:18:13 | Before call to method | +| MultiImplementationA.cs:20:22:20:31 | After {...} | MultiImplementationA.cs:20:12:20:13 | Normal Exit | | MultiImplementationA.cs:20:22:20:31 | {...} | MultiImplementationA.cs:20:24:20:29 | ...; | -| MultiImplementationA.cs:20:24:20:24 | access to field F | MultiImplementationA.cs:20:24:20:28 | ... = ... | -| MultiImplementationA.cs:20:24:20:24 | this access | MultiImplementationA.cs:20:28:20:28 | access to parameter i | -| MultiImplementationA.cs:20:24:20:28 | ... = ... | MultiImplementationA.cs:20:12:20:13 | exit C2 (normal) | -| MultiImplementationA.cs:20:24:20:29 | ...; | MultiImplementationA.cs:20:24:20:24 | this access | -| MultiImplementationA.cs:20:28:20:28 | access to parameter i | MultiImplementationA.cs:20:24:20:24 | access to field F | -| MultiImplementationA.cs:21:12:21:13 | enter C2 | MultiImplementationA.cs:21:24:21:24 | 0 | -| MultiImplementationA.cs:21:12:21:13 | enter C2 | MultiImplementationB.cs:19:24:19:24 | 1 | -| MultiImplementationA.cs:21:12:21:13 | exit C2 (normal) | MultiImplementationA.cs:21:12:21:13 | exit C2 | -| MultiImplementationA.cs:21:19:21:22 | call to constructor C2 | MultiImplementationA.cs:21:27:21:29 | {...} | +| MultiImplementationA.cs:20:24:20:24 | After access to field F | MultiImplementationA.cs:20:28:20:28 | access to parameter i | +| MultiImplementationA.cs:20:24:20:24 | Before access to field F | MultiImplementationA.cs:20:24:20:24 | this access | +| MultiImplementationA.cs:20:24:20:24 | access to field F | MultiImplementationA.cs:20:24:20:24 | After access to field F | +| MultiImplementationA.cs:20:24:20:24 | this access | MultiImplementationA.cs:20:24:20:24 | access to field F | +| MultiImplementationA.cs:20:24:20:28 | ... = ... | MultiImplementationA.cs:20:24:20:28 | After ... = ... | +| MultiImplementationA.cs:20:24:20:28 | After ... = ... | MultiImplementationA.cs:20:24:20:29 | After ...; | +| MultiImplementationA.cs:20:24:20:28 | Before ... = ... | MultiImplementationA.cs:20:24:20:24 | Before access to field F | +| MultiImplementationA.cs:20:24:20:29 | ...; | MultiImplementationA.cs:20:24:20:28 | Before ... = ... | +| MultiImplementationA.cs:20:24:20:29 | After ...; | MultiImplementationA.cs:20:22:20:31 | After {...} | +| MultiImplementationA.cs:20:28:20:28 | access to parameter i | MultiImplementationA.cs:20:24:20:28 | ... = ... | +| MultiImplementationA.cs:21:12:21:13 | Entry | MultiImplementationA.cs:21:19:21:22 | Before call to constructor C2 | +| MultiImplementationA.cs:21:12:21:13 | Entry | MultiImplementationB.cs:19:19:19:22 | Before call to constructor C2 | +| MultiImplementationA.cs:21:12:21:13 | Normal Exit | MultiImplementationA.cs:21:12:21:13 | Exit | +| MultiImplementationA.cs:21:19:21:22 | After call to constructor C2 | MultiImplementationA.cs:21:27:21:29 | {...} | +| MultiImplementationA.cs:21:19:21:22 | Before call to constructor C2 | MultiImplementationA.cs:21:24:21:24 | 0 | +| MultiImplementationA.cs:21:19:21:22 | call to constructor C2 | MultiImplementationA.cs:21:19:21:22 | After call to constructor C2 | | MultiImplementationA.cs:21:24:21:24 | 0 | MultiImplementationA.cs:21:19:21:22 | call to constructor C2 | -| MultiImplementationA.cs:22:6:22:7 | enter ~C2 | MultiImplementationA.cs:22:11:22:13 | {...} | -| MultiImplementationA.cs:22:6:22:7 | enter ~C2 | MultiImplementationB.cs:20:11:20:25 | {...} | -| MultiImplementationA.cs:22:11:22:13 | {...} | MultiImplementationA.cs:22:6:22:7 | exit ~C2 (normal) | -| MultiImplementationA.cs:23:28:23:35 | enter implicit conversion | MultiImplementationA.cs:23:50:23:53 | null | -| MultiImplementationA.cs:23:28:23:35 | enter implicit conversion | MultiImplementationB.cs:21:56:21:59 | null | -| MultiImplementationA.cs:23:50:23:53 | null | MultiImplementationA.cs:23:28:23:35 | exit implicit conversion (normal) | -| MultiImplementationA.cs:24:16:24:16 | access to property P | MultiImplementationA.cs:24:32:24:34 | ... = ... | -| MultiImplementationA.cs:24:16:24:16 | this access | MultiImplementationA.cs:24:34:24:34 | 0 | -| MultiImplementationA.cs:24:34:24:34 | 0 | MultiImplementationA.cs:24:16:24:16 | access to property P | -| MultiImplementationA.cs:28:7:28:8 | call to constructor Object | MultiImplementationA.cs:28:7:28:8 | {...} | -| MultiImplementationA.cs:28:7:28:8 | call to method | MultiImplementationA.cs:28:7:28:8 | call to constructor Object | -| MultiImplementationA.cs:28:7:28:8 | enter C3 | MultiImplementationA.cs:28:7:28:8 | this access | -| MultiImplementationA.cs:28:7:28:8 | enter C3 | MultiImplementationB.cs:25:7:25:8 | this access | -| MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | MultiImplementationA.cs:28:7:28:8 | exit C3 | +| MultiImplementationA.cs:22:6:22:7 | Entry | MultiImplementationA.cs:22:11:22:13 | {...} | +| MultiImplementationA.cs:22:6:22:7 | Entry | MultiImplementationB.cs:20:11:20:25 | {...} | +| MultiImplementationA.cs:22:11:22:13 | {...} | MultiImplementationA.cs:22:6:22:7 | Normal Exit | +| MultiImplementationA.cs:23:28:23:35 | Entry | MultiImplementationA.cs:23:44:23:44 | i | +| MultiImplementationA.cs:23:44:23:44 | i | MultiImplementationA.cs:23:50:23:53 | null | +| MultiImplementationA.cs:23:44:23:44 | i | MultiImplementationB.cs:21:50:21:59 | Before throw ... | +| MultiImplementationA.cs:23:50:23:53 | null | MultiImplementationA.cs:23:28:23:35 | Normal Exit | +| MultiImplementationA.cs:24:16:24:16 | After access to property P | MultiImplementationA.cs:24:34:24:34 | 0 | +| MultiImplementationA.cs:24:16:24:16 | Before access to property P | MultiImplementationA.cs:24:16:24:16 | this access | +| MultiImplementationA.cs:24:16:24:16 | access to property P | MultiImplementationA.cs:24:16:24:16 | After access to property P | +| MultiImplementationA.cs:24:16:24:16 | this access | MultiImplementationA.cs:24:16:24:16 | access to property P | +| MultiImplementationA.cs:24:32:24:34 | ... = ... | MultiImplementationA.cs:24:32:24:34 | After ... = ... | +| MultiImplementationA.cs:24:32:24:34 | Before ... = ... | MultiImplementationA.cs:24:16:24:16 | Before access to property P | +| MultiImplementationA.cs:24:34:24:34 | 0 | MultiImplementationA.cs:24:32:24:34 | ... = ... | +| MultiImplementationA.cs:28:7:28:8 | After call to constructor Object | MultiImplementationA.cs:28:7:28:8 | {...} | +| MultiImplementationA.cs:28:7:28:8 | After call to method | MultiImplementationA.cs:28:7:28:8 | Before call to constructor Object | +| MultiImplementationA.cs:28:7:28:8 | Before call to constructor Object | MultiImplementationA.cs:28:7:28:8 | call to constructor Object | +| MultiImplementationA.cs:28:7:28:8 | Before call to method | MultiImplementationA.cs:28:7:28:8 | this access | +| MultiImplementationA.cs:28:7:28:8 | Entry | MultiImplementationA.cs:28:7:28:8 | Before call to method | +| MultiImplementationA.cs:28:7:28:8 | Entry | MultiImplementationB.cs:25:7:25:8 | Before call to method | +| MultiImplementationA.cs:28:7:28:8 | Normal Exit | MultiImplementationA.cs:28:7:28:8 | Exit | +| MultiImplementationA.cs:28:7:28:8 | call to constructor Object | MultiImplementationA.cs:28:7:28:8 | After call to constructor Object | +| MultiImplementationA.cs:28:7:28:8 | call to method | MultiImplementationA.cs:28:7:28:8 | After call to method | | MultiImplementationA.cs:28:7:28:8 | this access | MultiImplementationA.cs:28:7:28:8 | call to method | -| MultiImplementationA.cs:30:21:30:23 | enter get_P3 | MultiImplementationA.cs:30:34:30:37 | null | -| MultiImplementationA.cs:30:21:30:23 | exit get_P3 (abnormal) | MultiImplementationA.cs:30:21:30:23 | exit get_P3 | -| MultiImplementationA.cs:30:28:30:37 | throw ... | MultiImplementationA.cs:30:21:30:23 | exit get_P3 (abnormal) | +| MultiImplementationA.cs:30:21:30:23 | Entry | MultiImplementationA.cs:30:28:30:37 | Before throw ... | +| MultiImplementationA.cs:30:21:30:23 | Exceptional Exit | MultiImplementationA.cs:30:21:30:23 | Exit | +| MultiImplementationA.cs:30:28:30:37 | Before throw ... | MultiImplementationA.cs:30:34:30:37 | null | +| MultiImplementationA.cs:30:28:30:37 | throw ... | MultiImplementationA.cs:30:21:30:23 | Exceptional Exit | | MultiImplementationA.cs:30:34:30:37 | null | MultiImplementationA.cs:30:28:30:37 | throw ... | -| MultiImplementationA.cs:34:15:34:16 | call to constructor Object | MultiImplementationA.cs:34:15:34:16 | {...} | -| MultiImplementationA.cs:34:15:34:16 | call to method | MultiImplementationA.cs:34:15:34:16 | call to constructor Object | -| MultiImplementationA.cs:34:15:34:16 | enter C4 | MultiImplementationA.cs:34:15:34:16 | this access | -| MultiImplementationA.cs:34:15:34:16 | enter C4 | MultiImplementationB.cs:30:15:30:16 | this access | -| MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | MultiImplementationA.cs:34:15:34:16 | exit C4 | +| MultiImplementationA.cs:34:15:34:16 | After call to constructor Object | MultiImplementationA.cs:34:15:34:16 | {...} | +| MultiImplementationA.cs:34:15:34:16 | After call to method | MultiImplementationA.cs:34:15:34:16 | Before call to constructor Object | +| MultiImplementationA.cs:34:15:34:16 | Before call to constructor Object | MultiImplementationA.cs:34:15:34:16 | call to constructor Object | +| MultiImplementationA.cs:34:15:34:16 | Before call to method | MultiImplementationA.cs:34:15:34:16 | this access | +| MultiImplementationA.cs:34:15:34:16 | Entry | MultiImplementationA.cs:34:15:34:16 | Before call to method | +| MultiImplementationA.cs:34:15:34:16 | Entry | MultiImplementationB.cs:30:15:30:16 | Before call to method | +| MultiImplementationA.cs:34:15:34:16 | Normal Exit | MultiImplementationA.cs:34:15:34:16 | Exit | +| MultiImplementationA.cs:34:15:34:16 | call to constructor Object | MultiImplementationA.cs:34:15:34:16 | After call to constructor Object | +| MultiImplementationA.cs:34:15:34:16 | call to method | MultiImplementationA.cs:34:15:34:16 | After call to method | | MultiImplementationA.cs:34:15:34:16 | this access | MultiImplementationA.cs:34:15:34:16 | call to method | -| MultiImplementationA.cs:36:9:36:10 | enter M1 | MultiImplementationA.cs:36:14:36:28 | {...} | -| MultiImplementationA.cs:36:9:36:10 | enter M1 | MultiImplementationB.cs:32:17:32:17 | 0 | -| MultiImplementationA.cs:36:14:36:28 | {...} | MultiImplementationA.cs:36:22:36:25 | null | -| MultiImplementationA.cs:36:16:36:26 | throw ...; | MultiImplementationA.cs:36:9:36:10 | exit M1 (abnormal) | +| MultiImplementationA.cs:36:9:36:10 | Entry | MultiImplementationA.cs:36:14:36:28 | {...} | +| MultiImplementationA.cs:36:9:36:10 | Entry | MultiImplementationB.cs:32:17:32:17 | 0 | +| MultiImplementationA.cs:36:14:36:28 | {...} | MultiImplementationA.cs:36:16:36:26 | Before throw ...; | +| MultiImplementationA.cs:36:16:36:26 | Before throw ...; | MultiImplementationA.cs:36:22:36:25 | null | +| MultiImplementationA.cs:36:16:36:26 | throw ...; | MultiImplementationA.cs:36:9:36:10 | Exceptional Exit | | MultiImplementationA.cs:36:22:36:25 | null | MultiImplementationA.cs:36:16:36:26 | throw ...; | -| MultiImplementationA.cs:37:9:37:10 | enter M2 | MultiImplementationA.cs:37:14:37:28 | {...} | -| MultiImplementationA.cs:37:9:37:10 | exit M2 (abnormal) | MultiImplementationA.cs:37:9:37:10 | exit M2 | -| MultiImplementationA.cs:37:14:37:28 | {...} | MultiImplementationA.cs:37:22:37:25 | null | -| MultiImplementationA.cs:37:16:37:26 | throw ...; | MultiImplementationA.cs:37:9:37:10 | exit M2 (abnormal) | +| MultiImplementationA.cs:37:9:37:10 | Entry | MultiImplementationA.cs:37:14:37:28 | {...} | +| MultiImplementationA.cs:37:9:37:10 | Exceptional Exit | MultiImplementationA.cs:37:9:37:10 | Exit | +| MultiImplementationA.cs:37:14:37:28 | {...} | MultiImplementationA.cs:37:16:37:26 | Before throw ...; | +| MultiImplementationA.cs:37:16:37:26 | Before throw ...; | MultiImplementationA.cs:37:22:37:25 | null | +| MultiImplementationA.cs:37:16:37:26 | throw ...; | MultiImplementationA.cs:37:9:37:10 | Exceptional Exit | | MultiImplementationA.cs:37:22:37:25 | null | MultiImplementationA.cs:37:16:37:26 | throw ...; | -| MultiImplementationB.cs:1:7:1:8 | call to constructor Object | MultiImplementationB.cs:1:7:1:8 | {...} | -| MultiImplementationB.cs:1:7:1:8 | call to method | MultiImplementationB.cs:1:7:1:8 | call to constructor Object | +| MultiImplementationB.cs:1:7:1:8 | After call to constructor Object | MultiImplementationB.cs:1:7:1:8 | {...} | +| MultiImplementationB.cs:1:7:1:8 | After call to method | MultiImplementationB.cs:1:7:1:8 | Before call to constructor Object | +| MultiImplementationB.cs:1:7:1:8 | Before call to constructor Object | MultiImplementationB.cs:1:7:1:8 | call to constructor Object | +| MultiImplementationB.cs:1:7:1:8 | Before call to method | MultiImplementationB.cs:1:7:1:8 | this access | +| MultiImplementationB.cs:1:7:1:8 | call to constructor Object | MultiImplementationB.cs:1:7:1:8 | After call to constructor Object | +| MultiImplementationB.cs:1:7:1:8 | call to method | MultiImplementationB.cs:1:7:1:8 | After call to method | | MultiImplementationB.cs:1:7:1:8 | this access | MultiImplementationB.cs:1:7:1:8 | call to method | -| MultiImplementationB.cs:3:22:3:22 | 0 | MultiImplementationA.cs:6:22:6:31 | exit get_P1 (normal) | -| MultiImplementationB.cs:4:25:4:37 | {...} | MultiImplementationB.cs:4:34:4:34 | 1 | -| MultiImplementationB.cs:4:27:4:35 | return ...; | MultiImplementationA.cs:7:21:7:23 | exit get_P2 (normal) | +| MultiImplementationB.cs:3:22:3:22 | 0 | MultiImplementationA.cs:6:22:6:31 | Normal Exit | +| MultiImplementationB.cs:4:25:4:37 | {...} | MultiImplementationB.cs:4:27:4:35 | Before return ...; | +| MultiImplementationB.cs:4:27:4:35 | Before return ...; | MultiImplementationB.cs:4:34:4:34 | 1 | +| MultiImplementationB.cs:4:27:4:35 | return ...; | MultiImplementationA.cs:7:21:7:23 | Normal Exit | | MultiImplementationB.cs:4:34:4:34 | 1 | MultiImplementationB.cs:4:27:4:35 | return ...; | -| MultiImplementationB.cs:4:43:4:45 | {...} | MultiImplementationA.cs:7:41:7:43 | exit set_P2 (normal) | -| MultiImplementationB.cs:5:23:5:23 | 2 | MultiImplementationA.cs:8:16:8:16 | exit M (normal) | -| MultiImplementationB.cs:11:16:11:16 | access to field F | MultiImplementationB.cs:11:16:11:20 | ... = ... | -| MultiImplementationB.cs:11:16:11:16 | this access | MultiImplementationB.cs:11:20:11:20 | 1 | -| MultiImplementationB.cs:11:16:11:20 | ... = ... | MultiImplementationB.cs:22:16:22:16 | this access | -| MultiImplementationB.cs:11:20:11:20 | 1 | MultiImplementationB.cs:11:16:11:16 | access to field F | -| MultiImplementationB.cs:12:31:12:40 | throw ... | MultiImplementationA.cs:14:31:14:31 | exit get_Item (abnormal) | +| MultiImplementationB.cs:4:43:4:45 | {...} | MultiImplementationA.cs:7:41:7:43 | Normal Exit | +| MultiImplementationB.cs:5:23:5:23 | 2 | MultiImplementationA.cs:8:16:8:16 | Normal Exit | +| MultiImplementationB.cs:11:16:11:16 | After access to field F | MultiImplementationB.cs:11:20:11:20 | 1 | +| MultiImplementationB.cs:11:16:11:16 | Before access to field F | MultiImplementationB.cs:11:16:11:16 | this access | +| MultiImplementationB.cs:11:16:11:16 | access to field F | MultiImplementationB.cs:11:16:11:16 | After access to field F | +| MultiImplementationB.cs:11:16:11:16 | this access | MultiImplementationB.cs:11:16:11:16 | access to field F | +| MultiImplementationB.cs:11:16:11:20 | ... = ... | MultiImplementationB.cs:11:16:11:20 | After ... = ... | +| MultiImplementationB.cs:11:16:11:20 | After ... = ... | MultiImplementationB.cs:22:32:22:34 | Before ... = ... | +| MultiImplementationB.cs:11:16:11:20 | Before ... = ... | MultiImplementationB.cs:11:16:11:16 | Before access to field F | +| MultiImplementationB.cs:11:20:11:20 | 1 | MultiImplementationB.cs:11:16:11:20 | ... = ... | +| MultiImplementationB.cs:12:31:12:40 | Before throw ... | MultiImplementationB.cs:12:37:12:40 | null | +| MultiImplementationB.cs:12:31:12:40 | throw ... | MultiImplementationA.cs:14:31:14:31 | Exceptional Exit | | MultiImplementationB.cs:12:37:12:40 | null | MultiImplementationB.cs:12:31:12:40 | throw ... | -| MultiImplementationB.cs:13:40:13:54 | {...} | MultiImplementationB.cs:13:48:13:51 | null | -| MultiImplementationB.cs:13:42:13:52 | throw ...; | MultiImplementationA.cs:15:36:15:38 | exit get_Item (abnormal) | +| MultiImplementationB.cs:13:40:13:54 | {...} | MultiImplementationB.cs:13:42:13:52 | Before throw ...; | +| MultiImplementationB.cs:13:42:13:52 | Before throw ...; | MultiImplementationB.cs:13:48:13:51 | null | +| MultiImplementationB.cs:13:42:13:52 | throw ...; | MultiImplementationA.cs:15:36:15:38 | Exceptional Exit | | MultiImplementationB.cs:13:48:13:51 | null | MultiImplementationB.cs:13:42:13:52 | throw ...; | | MultiImplementationB.cs:15:5:17:5 | {...} | MultiImplementationB.cs:16:9:16:31 | M2(...) | -| MultiImplementationB.cs:16:9:16:31 | enter M2 | MultiImplementationB.cs:16:27:16:30 | null | -| MultiImplementationB.cs:16:9:16:31 | exit M2 (abnormal) | MultiImplementationB.cs:16:9:16:31 | exit M2 | -| MultiImplementationB.cs:16:21:16:30 | throw ... | MultiImplementationB.cs:16:9:16:31 | exit M2 (abnormal) | +| MultiImplementationB.cs:16:9:16:31 | Entry | MultiImplementationB.cs:16:21:16:30 | Before throw ... | +| MultiImplementationB.cs:16:9:16:31 | Exceptional Exit | MultiImplementationB.cs:16:9:16:31 | Exit | +| MultiImplementationB.cs:16:9:16:31 | M2(...) | MultiImplementationB.cs:15:5:17:5 | After {...} | +| MultiImplementationB.cs:16:21:16:30 | Before throw ... | MultiImplementationB.cs:16:27:16:30 | null | +| MultiImplementationB.cs:16:21:16:30 | throw ... | MultiImplementationB.cs:16:9:16:31 | Exceptional Exit | | MultiImplementationB.cs:16:27:16:30 | null | MultiImplementationB.cs:16:21:16:30 | throw ... | -| MultiImplementationB.cs:18:12:18:13 | call to constructor Object | MultiImplementationB.cs:18:22:18:36 | {...} | -| MultiImplementationB.cs:18:12:18:13 | call to method | MultiImplementationB.cs:18:12:18:13 | call to constructor Object | +| MultiImplementationB.cs:18:12:18:13 | After call to constructor Object | MultiImplementationB.cs:18:22:18:36 | {...} | +| MultiImplementationB.cs:18:12:18:13 | After call to method | MultiImplementationB.cs:18:12:18:13 | Before call to constructor Object | +| MultiImplementationB.cs:18:12:18:13 | Before call to constructor Object | MultiImplementationB.cs:18:12:18:13 | call to constructor Object | +| MultiImplementationB.cs:18:12:18:13 | Before call to method | MultiImplementationB.cs:18:12:18:13 | this access | +| MultiImplementationB.cs:18:12:18:13 | call to constructor Object | MultiImplementationB.cs:18:12:18:13 | After call to constructor Object | +| MultiImplementationB.cs:18:12:18:13 | call to method | MultiImplementationB.cs:18:12:18:13 | After call to method | | MultiImplementationB.cs:18:12:18:13 | this access | MultiImplementationB.cs:18:12:18:13 | call to method | -| MultiImplementationB.cs:18:22:18:36 | {...} | MultiImplementationB.cs:18:30:18:33 | null | -| MultiImplementationB.cs:18:24:18:34 | throw ...; | MultiImplementationA.cs:20:12:20:13 | exit C2 (abnormal) | +| MultiImplementationB.cs:18:22:18:36 | {...} | MultiImplementationB.cs:18:24:18:34 | Before throw ...; | +| MultiImplementationB.cs:18:24:18:34 | Before throw ...; | MultiImplementationB.cs:18:30:18:33 | null | +| MultiImplementationB.cs:18:24:18:34 | throw ...; | MultiImplementationA.cs:20:12:20:13 | Exceptional Exit | | MultiImplementationB.cs:18:30:18:33 | null | MultiImplementationB.cs:18:24:18:34 | throw ...; | -| MultiImplementationB.cs:19:19:19:22 | call to constructor C2 | MultiImplementationB.cs:19:27:19:29 | {...} | +| MultiImplementationB.cs:19:19:19:22 | After call to constructor C2 | MultiImplementationB.cs:19:27:19:29 | {...} | +| MultiImplementationB.cs:19:19:19:22 | Before call to constructor C2 | MultiImplementationB.cs:19:24:19:24 | 1 | +| MultiImplementationB.cs:19:19:19:22 | call to constructor C2 | MultiImplementationB.cs:19:19:19:22 | After call to constructor C2 | | MultiImplementationB.cs:19:24:19:24 | 1 | MultiImplementationB.cs:19:19:19:22 | call to constructor C2 | -| MultiImplementationB.cs:20:11:20:25 | {...} | MultiImplementationB.cs:20:19:20:22 | null | -| MultiImplementationB.cs:20:13:20:23 | throw ...; | MultiImplementationA.cs:22:6:22:7 | exit ~C2 (abnormal) | +| MultiImplementationB.cs:20:11:20:25 | {...} | MultiImplementationB.cs:20:13:20:23 | Before throw ...; | +| MultiImplementationB.cs:20:13:20:23 | Before throw ...; | MultiImplementationB.cs:20:19:20:22 | null | +| MultiImplementationB.cs:20:13:20:23 | throw ...; | MultiImplementationA.cs:22:6:22:7 | Exceptional Exit | | MultiImplementationB.cs:20:19:20:22 | null | MultiImplementationB.cs:20:13:20:23 | throw ...; | -| MultiImplementationB.cs:21:50:21:59 | throw ... | MultiImplementationA.cs:23:28:23:35 | exit implicit conversion (abnormal) | +| MultiImplementationB.cs:21:50:21:59 | Before throw ... | MultiImplementationB.cs:21:56:21:59 | null | +| MultiImplementationB.cs:21:50:21:59 | throw ... | MultiImplementationA.cs:23:28:23:35 | Exceptional Exit | | MultiImplementationB.cs:21:56:21:59 | null | MultiImplementationB.cs:21:50:21:59 | throw ... | -| MultiImplementationB.cs:22:16:22:16 | access to property P | MultiImplementationB.cs:22:32:22:34 | ... = ... | -| MultiImplementationB.cs:22:16:22:16 | this access | MultiImplementationB.cs:22:34:22:34 | 1 | -| MultiImplementationB.cs:22:34:22:34 | 1 | MultiImplementationB.cs:22:16:22:16 | access to property P | -| MultiImplementationB.cs:25:7:25:8 | call to constructor Object | MultiImplementationB.cs:25:7:25:8 | {...} | -| MultiImplementationB.cs:25:7:25:8 | call to method | MultiImplementationB.cs:25:7:25:8 | call to constructor Object | +| MultiImplementationB.cs:22:16:22:16 | After access to property P | MultiImplementationB.cs:22:34:22:34 | 1 | +| MultiImplementationB.cs:22:16:22:16 | Before access to property P | MultiImplementationB.cs:22:16:22:16 | this access | +| MultiImplementationB.cs:22:16:22:16 | access to property P | MultiImplementationB.cs:22:16:22:16 | After access to property P | +| MultiImplementationB.cs:22:16:22:16 | this access | MultiImplementationB.cs:22:16:22:16 | access to property P | +| MultiImplementationB.cs:22:32:22:34 | ... = ... | MultiImplementationB.cs:22:32:22:34 | After ... = ... | +| MultiImplementationB.cs:22:32:22:34 | Before ... = ... | MultiImplementationB.cs:22:16:22:16 | Before access to property P | +| MultiImplementationB.cs:22:34:22:34 | 1 | MultiImplementationB.cs:22:32:22:34 | ... = ... | +| MultiImplementationB.cs:25:7:25:8 | After call to constructor Object | MultiImplementationB.cs:25:7:25:8 | {...} | +| MultiImplementationB.cs:25:7:25:8 | After call to method | MultiImplementationB.cs:25:7:25:8 | Before call to constructor Object | +| MultiImplementationB.cs:25:7:25:8 | Before call to constructor Object | MultiImplementationB.cs:25:7:25:8 | call to constructor Object | +| MultiImplementationB.cs:25:7:25:8 | Before call to method | MultiImplementationB.cs:25:7:25:8 | this access | +| MultiImplementationB.cs:25:7:25:8 | call to constructor Object | MultiImplementationB.cs:25:7:25:8 | After call to constructor Object | +| MultiImplementationB.cs:25:7:25:8 | call to method | MultiImplementationB.cs:25:7:25:8 | After call to method | | MultiImplementationB.cs:25:7:25:8 | this access | MultiImplementationB.cs:25:7:25:8 | call to method | -| MultiImplementationB.cs:30:15:30:16 | call to constructor Object | MultiImplementationB.cs:30:15:30:16 | {...} | -| MultiImplementationB.cs:30:15:30:16 | call to method | MultiImplementationB.cs:30:15:30:16 | call to constructor Object | +| MultiImplementationB.cs:30:15:30:16 | After call to constructor Object | MultiImplementationB.cs:30:15:30:16 | {...} | +| MultiImplementationB.cs:30:15:30:16 | After call to method | MultiImplementationB.cs:30:15:30:16 | Before call to constructor Object | +| MultiImplementationB.cs:30:15:30:16 | Before call to constructor Object | MultiImplementationB.cs:30:15:30:16 | call to constructor Object | +| MultiImplementationB.cs:30:15:30:16 | Before call to method | MultiImplementationB.cs:30:15:30:16 | this access | +| MultiImplementationB.cs:30:15:30:16 | call to constructor Object | MultiImplementationB.cs:30:15:30:16 | After call to constructor Object | +| MultiImplementationB.cs:30:15:30:16 | call to method | MultiImplementationB.cs:30:15:30:16 | After call to method | | MultiImplementationB.cs:30:15:30:16 | this access | MultiImplementationB.cs:30:15:30:16 | call to method | -| MultiImplementationB.cs:32:17:32:17 | 0 | MultiImplementationA.cs:36:9:36:10 | exit M1 (normal) | -| NullCoalescing.cs:1:7:1:20 | call to constructor Object | NullCoalescing.cs:1:7:1:20 | {...} | -| NullCoalescing.cs:1:7:1:20 | call to method | NullCoalescing.cs:1:7:1:20 | call to constructor Object | -| NullCoalescing.cs:1:7:1:20 | enter NullCoalescing | NullCoalescing.cs:1:7:1:20 | this access | -| NullCoalescing.cs:1:7:1:20 | exit NullCoalescing (normal) | NullCoalescing.cs:1:7:1:20 | exit NullCoalescing | +| MultiImplementationB.cs:32:17:32:17 | 0 | MultiImplementationA.cs:36:9:36:10 | Normal Exit | +| NullCoalescing.cs:1:7:1:20 | After call to constructor Object | NullCoalescing.cs:1:7:1:20 | {...} | +| NullCoalescing.cs:1:7:1:20 | After call to method | NullCoalescing.cs:1:7:1:20 | Before call to constructor Object | +| NullCoalescing.cs:1:7:1:20 | Before call to constructor Object | NullCoalescing.cs:1:7:1:20 | call to constructor Object | +| NullCoalescing.cs:1:7:1:20 | Before call to method | NullCoalescing.cs:1:7:1:20 | this access | +| NullCoalescing.cs:1:7:1:20 | Entry | NullCoalescing.cs:1:7:1:20 | Before call to method | +| NullCoalescing.cs:1:7:1:20 | Normal Exit | NullCoalescing.cs:1:7:1:20 | Exit | +| NullCoalescing.cs:1:7:1:20 | call to constructor Object | NullCoalescing.cs:1:7:1:20 | After call to constructor Object | +| NullCoalescing.cs:1:7:1:20 | call to method | NullCoalescing.cs:1:7:1:20 | After call to method | | NullCoalescing.cs:1:7:1:20 | this access | NullCoalescing.cs:1:7:1:20 | call to method | -| NullCoalescing.cs:1:7:1:20 | {...} | NullCoalescing.cs:1:7:1:20 | exit NullCoalescing (normal) | -| NullCoalescing.cs:3:9:3:10 | enter M1 | NullCoalescing.cs:3:23:3:23 | access to parameter i | -| NullCoalescing.cs:3:9:3:10 | exit M1 (normal) | NullCoalescing.cs:3:9:3:10 | exit M1 | -| NullCoalescing.cs:3:23:3:23 | access to parameter i | NullCoalescing.cs:3:23:3:28 | ... ?? ... | -| NullCoalescing.cs:3:23:3:23 | access to parameter i | NullCoalescing.cs:3:28:3:28 | 0 | -| NullCoalescing.cs:3:23:3:28 | ... ?? ... | NullCoalescing.cs:3:9:3:10 | exit M1 (normal) | -| NullCoalescing.cs:5:9:5:10 | enter M2 | NullCoalescing.cs:5:25:5:25 | access to parameter b | -| NullCoalescing.cs:5:9:5:10 | exit M2 (normal) | NullCoalescing.cs:5:9:5:10 | exit M2 | -| NullCoalescing.cs:5:24:5:43 | ... ? ... : ... | NullCoalescing.cs:5:9:5:10 | exit M2 (normal) | -| NullCoalescing.cs:5:25:5:25 | access to parameter b | NullCoalescing.cs:5:25:5:34 | [false] ... ?? ... | -| NullCoalescing.cs:5:25:5:25 | access to parameter b | NullCoalescing.cs:5:25:5:34 | [true] ... ?? ... | -| NullCoalescing.cs:5:25:5:25 | access to parameter b | NullCoalescing.cs:5:30:5:34 | false | -| NullCoalescing.cs:5:25:5:34 | [false] ... ?? ... | NullCoalescing.cs:5:43:5:43 | 1 | -| NullCoalescing.cs:5:25:5:34 | [true] ... ?? ... | NullCoalescing.cs:5:39:5:39 | 0 | -| NullCoalescing.cs:7:12:7:13 | enter M3 | NullCoalescing.cs:7:40:7:41 | access to parameter s1 | -| NullCoalescing.cs:7:12:7:13 | exit M3 (normal) | NullCoalescing.cs:7:12:7:13 | exit M3 | -| NullCoalescing.cs:7:40:7:41 | access to parameter s1 | NullCoalescing.cs:7:40:7:53 | ... ?? ... | -| NullCoalescing.cs:7:40:7:41 | access to parameter s1 | NullCoalescing.cs:7:46:7:47 | access to parameter s2 | -| NullCoalescing.cs:7:40:7:53 | ... ?? ... | NullCoalescing.cs:7:12:7:13 | exit M3 (normal) | -| NullCoalescing.cs:7:46:7:47 | access to parameter s2 | NullCoalescing.cs:7:46:7:53 | ... ?? ... | -| NullCoalescing.cs:7:46:7:47 | access to parameter s2 | NullCoalescing.cs:7:52:7:53 | "" | -| NullCoalescing.cs:9:12:9:13 | enter M4 | NullCoalescing.cs:9:37:9:37 | access to parameter b | -| NullCoalescing.cs:9:12:9:13 | exit M4 (normal) | NullCoalescing.cs:9:12:9:13 | exit M4 | -| NullCoalescing.cs:9:36:9:58 | ... ?? ... | NullCoalescing.cs:9:12:9:13 | exit M4 (normal) | -| NullCoalescing.cs:9:37:9:37 | access to parameter b | NullCoalescing.cs:9:41:9:41 | access to parameter s | -| NullCoalescing.cs:9:37:9:37 | access to parameter b | NullCoalescing.cs:9:45:9:45 | access to parameter s | -| NullCoalescing.cs:9:37:9:45 | [null] ... ? ... : ... | NullCoalescing.cs:9:51:9:52 | "" | -| NullCoalescing.cs:9:51:9:52 | "" | NullCoalescing.cs:9:51:9:58 | ... ?? ... | -| NullCoalescing.cs:11:9:11:10 | enter M5 | NullCoalescing.cs:11:44:11:45 | access to parameter b1 | -| NullCoalescing.cs:11:9:11:10 | exit M5 (normal) | NullCoalescing.cs:11:9:11:10 | exit M5 | -| NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | NullCoalescing.cs:11:9:11:10 | exit M5 (normal) | -| NullCoalescing.cs:11:44:11:45 | access to parameter b1 | NullCoalescing.cs:11:44:11:59 | [false] ... ?? ... | -| NullCoalescing.cs:11:44:11:45 | access to parameter b1 | NullCoalescing.cs:11:44:11:59 | [true] ... ?? ... | -| NullCoalescing.cs:11:44:11:45 | access to parameter b1 | NullCoalescing.cs:11:51:11:52 | access to parameter b2 | -| NullCoalescing.cs:11:44:11:59 | [false] ... ?? ... | NullCoalescing.cs:11:68:11:68 | 1 | -| NullCoalescing.cs:11:44:11:59 | [true] ... ?? ... | NullCoalescing.cs:11:64:11:64 | 0 | -| NullCoalescing.cs:11:51:11:52 | access to parameter b2 | NullCoalescing.cs:11:51:11:58 | [false] ... && ... | -| NullCoalescing.cs:11:51:11:52 | access to parameter b2 | NullCoalescing.cs:11:57:11:58 | access to parameter b3 | -| NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:51:11:58 | [true] ... && ... | -| NullCoalescing.cs:13:10:13:11 | enter M6 | NullCoalescing.cs:14:5:18:5 | {...} | -| NullCoalescing.cs:13:10:13:11 | exit M6 (normal) | NullCoalescing.cs:13:10:13:11 | exit M6 | +| NullCoalescing.cs:1:7:1:20 | {...} | NullCoalescing.cs:1:7:1:20 | Normal Exit | +| NullCoalescing.cs:3:9:3:10 | Entry | NullCoalescing.cs:3:17:3:17 | i | +| NullCoalescing.cs:3:9:3:10 | Normal Exit | NullCoalescing.cs:3:9:3:10 | Exit | +| NullCoalescing.cs:3:17:3:17 | i | NullCoalescing.cs:3:23:3:28 | ... ?? ... | +| NullCoalescing.cs:3:23:3:23 | After access to parameter i [null] | NullCoalescing.cs:3:28:3:28 | 0 | +| NullCoalescing.cs:3:23:3:23 | access to parameter i | NullCoalescing.cs:3:23:3:23 | After access to parameter i [non-null] | +| NullCoalescing.cs:3:23:3:23 | access to parameter i | NullCoalescing.cs:3:23:3:23 | After access to parameter i [null] | +| NullCoalescing.cs:3:23:3:28 | ... ?? ... | NullCoalescing.cs:3:23:3:23 | access to parameter i | +| NullCoalescing.cs:3:23:3:28 | After ... ?? ... | NullCoalescing.cs:3:9:3:10 | Normal Exit | +| NullCoalescing.cs:5:9:5:10 | Entry | NullCoalescing.cs:5:18:5:18 | b | +| NullCoalescing.cs:5:9:5:10 | Normal Exit | NullCoalescing.cs:5:9:5:10 | Exit | +| NullCoalescing.cs:5:18:5:18 | b | NullCoalescing.cs:5:24:5:43 | ... ? ... : ... | +| NullCoalescing.cs:5:24:5:43 | ... ? ... : ... | NullCoalescing.cs:5:25:5:34 | ... ?? ... | +| NullCoalescing.cs:5:24:5:43 | After ... ? ... : ... | NullCoalescing.cs:5:9:5:10 | Normal Exit | +| NullCoalescing.cs:5:25:5:25 | After access to parameter b [non-null] | NullCoalescing.cs:5:25:5:34 | After ... ?? ... [true] | +| NullCoalescing.cs:5:25:5:25 | After access to parameter b [null] | NullCoalescing.cs:5:30:5:34 | false | +| NullCoalescing.cs:5:25:5:25 | access to parameter b | NullCoalescing.cs:5:25:5:25 | After access to parameter b [non-null] | +| NullCoalescing.cs:5:25:5:25 | access to parameter b | NullCoalescing.cs:5:25:5:25 | After access to parameter b [null] | +| NullCoalescing.cs:5:25:5:34 | ... ?? ... | NullCoalescing.cs:5:25:5:25 | access to parameter b | +| NullCoalescing.cs:5:25:5:34 | After ... ?? ... [false] | NullCoalescing.cs:5:43:5:43 | 1 | +| NullCoalescing.cs:5:25:5:34 | After ... ?? ... [true] | NullCoalescing.cs:5:39:5:39 | 0 | +| NullCoalescing.cs:5:30:5:34 | false | NullCoalescing.cs:5:30:5:34 | After false [false] | +| NullCoalescing.cs:7:12:7:13 | Entry | NullCoalescing.cs:7:22:7:23 | s1 | +| NullCoalescing.cs:7:12:7:13 | Normal Exit | NullCoalescing.cs:7:12:7:13 | Exit | +| NullCoalescing.cs:7:22:7:23 | s1 | NullCoalescing.cs:7:33:7:34 | s2 | +| NullCoalescing.cs:7:33:7:34 | s2 | NullCoalescing.cs:7:40:7:53 | ... ?? ... | +| NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [null] | NullCoalescing.cs:7:46:7:53 | ... ?? ... | +| NullCoalescing.cs:7:40:7:41 | access to parameter s1 | NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [non-null] | +| NullCoalescing.cs:7:40:7:41 | access to parameter s1 | NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [null] | +| NullCoalescing.cs:7:40:7:53 | ... ?? ... | NullCoalescing.cs:7:40:7:41 | access to parameter s1 | +| NullCoalescing.cs:7:40:7:53 | After ... ?? ... | NullCoalescing.cs:7:12:7:13 | Normal Exit | +| NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [null] | NullCoalescing.cs:7:52:7:53 | "" | +| NullCoalescing.cs:7:46:7:47 | access to parameter s2 | NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [non-null] | +| NullCoalescing.cs:7:46:7:47 | access to parameter s2 | NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [null] | +| NullCoalescing.cs:7:46:7:53 | ... ?? ... | NullCoalescing.cs:7:46:7:47 | access to parameter s2 | +| NullCoalescing.cs:9:12:9:13 | Entry | NullCoalescing.cs:9:20:9:20 | b | +| NullCoalescing.cs:9:12:9:13 | Normal Exit | NullCoalescing.cs:9:12:9:13 | Exit | +| NullCoalescing.cs:9:20:9:20 | b | NullCoalescing.cs:9:30:9:30 | s | +| NullCoalescing.cs:9:30:9:30 | s | NullCoalescing.cs:9:36:9:58 | ... ?? ... | +| NullCoalescing.cs:9:36:9:58 | ... ?? ... | NullCoalescing.cs:9:37:9:45 | ... ? ... : ... | +| NullCoalescing.cs:9:36:9:58 | After ... ?? ... | NullCoalescing.cs:9:12:9:13 | Normal Exit | +| NullCoalescing.cs:9:37:9:37 | After access to parameter b [false] | NullCoalescing.cs:9:45:9:45 | access to parameter s | +| NullCoalescing.cs:9:37:9:37 | After access to parameter b [true] | NullCoalescing.cs:9:41:9:41 | access to parameter s | +| NullCoalescing.cs:9:37:9:37 | access to parameter b | NullCoalescing.cs:9:37:9:37 | After access to parameter b [false] | +| NullCoalescing.cs:9:37:9:37 | access to parameter b | NullCoalescing.cs:9:37:9:37 | After access to parameter b [true] | +| NullCoalescing.cs:9:37:9:45 | ... ? ... : ... | NullCoalescing.cs:9:37:9:37 | access to parameter b | +| NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [null] | NullCoalescing.cs:9:51:9:58 | ... ?? ... | +| NullCoalescing.cs:9:41:9:41 | access to parameter s | NullCoalescing.cs:9:41:9:41 | After access to parameter s [non-null] | +| NullCoalescing.cs:9:41:9:41 | access to parameter s | NullCoalescing.cs:9:41:9:41 | After access to parameter s [null] | +| NullCoalescing.cs:9:45:9:45 | access to parameter s | NullCoalescing.cs:9:45:9:45 | After access to parameter s [non-null] | +| NullCoalescing.cs:9:45:9:45 | access to parameter s | NullCoalescing.cs:9:45:9:45 | After access to parameter s [null] | +| NullCoalescing.cs:9:51:9:52 | "" | NullCoalescing.cs:9:51:9:52 | After "" [non-null] | +| NullCoalescing.cs:9:51:9:52 | "" | NullCoalescing.cs:9:51:9:52 | After "" [null] | +| NullCoalescing.cs:9:51:9:52 | After "" [null] | NullCoalescing.cs:9:57:9:58 | "" | +| NullCoalescing.cs:9:51:9:58 | ... ?? ... | NullCoalescing.cs:9:51:9:52 | "" | +| NullCoalescing.cs:11:9:11:10 | Entry | NullCoalescing.cs:11:18:11:19 | b1 | +| NullCoalescing.cs:11:9:11:10 | Normal Exit | NullCoalescing.cs:11:9:11:10 | Exit | +| NullCoalescing.cs:11:18:11:19 | b1 | NullCoalescing.cs:11:27:11:28 | b2 | +| NullCoalescing.cs:11:27:11:28 | b2 | NullCoalescing.cs:11:36:11:37 | b3 | +| NullCoalescing.cs:11:36:11:37 | b3 | NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | +| NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | NullCoalescing.cs:11:44:11:59 | ... ?? ... | +| NullCoalescing.cs:11:43:11:68 | After ... ? ... : ... | NullCoalescing.cs:11:9:11:10 | Normal Exit | +| NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [null] | NullCoalescing.cs:11:51:11:58 | ... && ... | +| NullCoalescing.cs:11:44:11:45 | access to parameter b1 | NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [non-null] | +| NullCoalescing.cs:11:44:11:45 | access to parameter b1 | NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [null] | +| NullCoalescing.cs:11:44:11:59 | ... ?? ... | NullCoalescing.cs:11:44:11:45 | access to parameter b1 | +| NullCoalescing.cs:11:44:11:59 | After ... ?? ... [false] | NullCoalescing.cs:11:68:11:68 | 1 | +| NullCoalescing.cs:11:44:11:59 | After ... ?? ... [true] | NullCoalescing.cs:11:64:11:64 | 0 | +| NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [true] | NullCoalescing.cs:11:57:11:58 | access to parameter b3 | +| NullCoalescing.cs:11:51:11:52 | access to parameter b2 | NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [false] | +| NullCoalescing.cs:11:51:11:52 | access to parameter b2 | NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [true] | +| NullCoalescing.cs:11:51:11:58 | ... && ... | NullCoalescing.cs:11:51:11:52 | access to parameter b2 | +| NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [true] | NullCoalescing.cs:11:51:11:58 | After ... && ... [true] | +| NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [false] | +| NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [true] | +| NullCoalescing.cs:13:10:13:11 | Entry | NullCoalescing.cs:13:17:13:17 | i | +| NullCoalescing.cs:13:10:13:11 | Normal Exit | NullCoalescing.cs:13:10:13:11 | Exit | +| NullCoalescing.cs:13:17:13:17 | i | NullCoalescing.cs:14:5:18:5 | {...} | +| NullCoalescing.cs:14:5:18:5 | After {...} | NullCoalescing.cs:13:10:13:11 | Normal Exit | | NullCoalescing.cs:14:5:18:5 | {...} | NullCoalescing.cs:15:9:15:32 | ... ...; | -| NullCoalescing.cs:15:9:15:32 | ... ...; | NullCoalescing.cs:15:23:15:26 | null | -| NullCoalescing.cs:15:13:15:31 | Int32 j = ... | NullCoalescing.cs:16:9:16:26 | ... ...; | -| NullCoalescing.cs:15:17:15:26 | (...) ... | NullCoalescing.cs:15:31:15:31 | 0 | -| NullCoalescing.cs:15:17:15:31 | ... ?? ... | NullCoalescing.cs:15:13:15:31 | Int32 j = ... | +| NullCoalescing.cs:15:9:15:32 | ... ...; | NullCoalescing.cs:15:13:15:31 | Before Int32 j = ... | +| NullCoalescing.cs:15:9:15:32 | After ... ...; | NullCoalescing.cs:16:9:16:26 | ... ...; | +| NullCoalescing.cs:15:13:15:13 | access to local variable j | NullCoalescing.cs:15:17:15:31 | ... ?? ... | +| NullCoalescing.cs:15:13:15:31 | After Int32 j = ... | NullCoalescing.cs:15:9:15:32 | After ... ...; | +| NullCoalescing.cs:15:13:15:31 | Before Int32 j = ... | NullCoalescing.cs:15:13:15:13 | access to local variable j | +| NullCoalescing.cs:15:13:15:31 | Int32 j = ... | NullCoalescing.cs:15:13:15:31 | After Int32 j = ... | +| NullCoalescing.cs:15:17:15:26 | (...) ... | NullCoalescing.cs:15:17:15:26 | After (...) ... [non-null] | +| NullCoalescing.cs:15:17:15:26 | (...) ... | NullCoalescing.cs:15:17:15:26 | After (...) ... [null] | +| NullCoalescing.cs:15:17:15:26 | After (...) ... [null] | NullCoalescing.cs:15:31:15:31 | 0 | +| NullCoalescing.cs:15:17:15:26 | Before (...) ... | NullCoalescing.cs:15:23:15:26 | null | +| NullCoalescing.cs:15:17:15:31 | ... ?? ... | NullCoalescing.cs:15:17:15:26 | Before (...) ... | +| NullCoalescing.cs:15:17:15:31 | After ... ?? ... | NullCoalescing.cs:15:13:15:31 | Int32 j = ... | | NullCoalescing.cs:15:23:15:26 | null | NullCoalescing.cs:15:17:15:26 | (...) ... | -| NullCoalescing.cs:15:31:15:31 | 0 | NullCoalescing.cs:15:17:15:31 | ... ?? ... | -| NullCoalescing.cs:16:9:16:26 | ... ...; | NullCoalescing.cs:16:17:16:18 | "" | -| NullCoalescing.cs:16:13:16:25 | String s = ... | NullCoalescing.cs:17:9:17:25 | ...; | -| NullCoalescing.cs:16:17:16:18 | "" | NullCoalescing.cs:16:17:16:25 | ... ?? ... | -| NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:16:13:16:25 | String s = ... | -| NullCoalescing.cs:17:9:17:24 | ... = ... | NullCoalescing.cs:13:10:13:11 | exit M6 (normal) | -| NullCoalescing.cs:17:9:17:25 | ...; | NullCoalescing.cs:17:19:17:19 | access to parameter i | -| NullCoalescing.cs:17:13:17:19 | (...) ... | NullCoalescing.cs:17:13:17:24 | ... ?? ... | -| NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:17:9:17:24 | ... = ... | +| NullCoalescing.cs:16:9:16:26 | ... ...; | NullCoalescing.cs:16:13:16:25 | Before String s = ... | +| NullCoalescing.cs:16:9:16:26 | After ... ...; | NullCoalescing.cs:17:9:17:25 | ...; | +| NullCoalescing.cs:16:13:16:13 | access to local variable s | NullCoalescing.cs:16:17:16:25 | ... ?? ... | +| NullCoalescing.cs:16:13:16:25 | After String s = ... | NullCoalescing.cs:16:9:16:26 | After ... ...; | +| NullCoalescing.cs:16:13:16:25 | Before String s = ... | NullCoalescing.cs:16:13:16:13 | access to local variable s | +| NullCoalescing.cs:16:13:16:25 | String s = ... | NullCoalescing.cs:16:13:16:25 | After String s = ... | +| NullCoalescing.cs:16:17:16:18 | "" | NullCoalescing.cs:16:17:16:18 | After "" [non-null] | +| NullCoalescing.cs:16:17:16:18 | "" | NullCoalescing.cs:16:17:16:18 | After "" [null] | +| NullCoalescing.cs:16:17:16:18 | After "" [null] | NullCoalescing.cs:16:23:16:25 | "a" | +| NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:16:17:16:18 | "" | +| NullCoalescing.cs:16:17:16:25 | After ... ?? ... | NullCoalescing.cs:16:13:16:25 | String s = ... | +| NullCoalescing.cs:17:9:17:9 | access to local variable j | NullCoalescing.cs:17:13:17:24 | ... ?? ... | +| NullCoalescing.cs:17:9:17:24 | ... = ... | NullCoalescing.cs:17:9:17:24 | After ... = ... | +| NullCoalescing.cs:17:9:17:24 | After ... = ... | NullCoalescing.cs:17:9:17:25 | After ...; | +| NullCoalescing.cs:17:9:17:24 | Before ... = ... | NullCoalescing.cs:17:9:17:9 | access to local variable j | +| NullCoalescing.cs:17:9:17:25 | ...; | NullCoalescing.cs:17:9:17:24 | Before ... = ... | +| NullCoalescing.cs:17:9:17:25 | After ...; | NullCoalescing.cs:14:5:18:5 | After {...} | +| NullCoalescing.cs:17:13:17:19 | (...) ... | NullCoalescing.cs:17:13:17:19 | After (...) ... [non-null] | +| NullCoalescing.cs:17:13:17:19 | (...) ... | NullCoalescing.cs:17:13:17:19 | After (...) ... [null] | +| NullCoalescing.cs:17:13:17:19 | After (...) ... [null] | NullCoalescing.cs:17:24:17:24 | 1 | +| NullCoalescing.cs:17:13:17:19 | Before (...) ... | NullCoalescing.cs:17:19:17:19 | access to parameter i | +| NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:17:13:17:19 | Before (...) ... | +| NullCoalescing.cs:17:13:17:24 | After ... ?? ... | NullCoalescing.cs:17:9:17:24 | ... = ... | | NullCoalescing.cs:17:19:17:19 | access to parameter i | NullCoalescing.cs:17:13:17:19 | (...) ... | -| PartialImplementationA.cs:1:15:1:21 | enter | PartialImplementationB.cs:3:16:3:16 | this access | -| PartialImplementationA.cs:1:15:1:21 | exit (normal) | PartialImplementationA.cs:1:15:1:21 | exit | -| PartialImplementationA.cs:3:12:3:18 | call to constructor Object | PartialImplementationA.cs:3:27:3:29 | {...} | -| PartialImplementationA.cs:3:12:3:18 | call to method | PartialImplementationA.cs:3:12:3:18 | call to constructor Object | -| PartialImplementationA.cs:3:12:3:18 | enter Partial | PartialImplementationA.cs:3:12:3:18 | this access | -| PartialImplementationA.cs:3:12:3:18 | exit Partial (normal) | PartialImplementationA.cs:3:12:3:18 | exit Partial | +| PartialImplementationA.cs:1:15:1:21 | Entry | PartialImplementationB.cs:3:16:3:20 | Before ... = ... | +| PartialImplementationA.cs:1:15:1:21 | Normal Exit | PartialImplementationA.cs:1:15:1:21 | Exit | +| PartialImplementationA.cs:3:12:3:18 | After call to constructor Object | PartialImplementationA.cs:3:27:3:29 | {...} | +| PartialImplementationA.cs:3:12:3:18 | After call to method | PartialImplementationA.cs:3:12:3:18 | Before call to constructor Object | +| PartialImplementationA.cs:3:12:3:18 | Before call to constructor Object | PartialImplementationA.cs:3:12:3:18 | call to constructor Object | +| PartialImplementationA.cs:3:12:3:18 | Before call to method | PartialImplementationA.cs:3:12:3:18 | this access | +| PartialImplementationA.cs:3:12:3:18 | Entry | PartialImplementationA.cs:3:24:3:24 | i | +| PartialImplementationA.cs:3:12:3:18 | Normal Exit | PartialImplementationA.cs:3:12:3:18 | Exit | +| PartialImplementationA.cs:3:12:3:18 | call to constructor Object | PartialImplementationA.cs:3:12:3:18 | After call to constructor Object | +| PartialImplementationA.cs:3:12:3:18 | call to method | PartialImplementationA.cs:3:12:3:18 | After call to method | | PartialImplementationA.cs:3:12:3:18 | this access | PartialImplementationA.cs:3:12:3:18 | call to method | -| PartialImplementationA.cs:3:27:3:29 | {...} | PartialImplementationA.cs:3:12:3:18 | exit Partial (normal) | -| PartialImplementationB.cs:3:16:3:16 | access to field F | PartialImplementationB.cs:3:16:3:20 | ... = ... | -| PartialImplementationB.cs:3:16:3:16 | this access | PartialImplementationB.cs:3:20:3:20 | 0 | -| PartialImplementationB.cs:3:16:3:20 | ... = ... | PartialImplementationB.cs:5:16:5:16 | this access | -| PartialImplementationB.cs:3:20:3:20 | 0 | PartialImplementationB.cs:3:16:3:16 | access to field F | -| PartialImplementationB.cs:4:12:4:18 | call to constructor Object | PartialImplementationB.cs:4:22:4:24 | {...} | -| PartialImplementationB.cs:4:12:4:18 | call to method | PartialImplementationB.cs:4:12:4:18 | call to constructor Object | -| PartialImplementationB.cs:4:12:4:18 | enter Partial | PartialImplementationB.cs:4:12:4:18 | this access | -| PartialImplementationB.cs:4:12:4:18 | exit Partial (normal) | PartialImplementationB.cs:4:12:4:18 | exit Partial | +| PartialImplementationA.cs:3:24:3:24 | i | PartialImplementationA.cs:3:12:3:18 | Before call to method | +| PartialImplementationA.cs:3:27:3:29 | {...} | PartialImplementationA.cs:3:12:3:18 | Normal Exit | +| PartialImplementationB.cs:3:16:3:16 | After access to field F | PartialImplementationB.cs:3:20:3:20 | 0 | +| PartialImplementationB.cs:3:16:3:16 | Before access to field F | PartialImplementationB.cs:3:16:3:16 | this access | +| PartialImplementationB.cs:3:16:3:16 | access to field F | PartialImplementationB.cs:3:16:3:16 | After access to field F | +| PartialImplementationB.cs:3:16:3:16 | this access | PartialImplementationB.cs:3:16:3:16 | access to field F | +| PartialImplementationB.cs:3:16:3:20 | ... = ... | PartialImplementationB.cs:3:16:3:20 | After ... = ... | +| PartialImplementationB.cs:3:16:3:20 | After ... = ... | PartialImplementationB.cs:5:32:5:34 | Before ... = ... | +| PartialImplementationB.cs:3:16:3:20 | Before ... = ... | PartialImplementationB.cs:3:16:3:16 | Before access to field F | +| PartialImplementationB.cs:3:20:3:20 | 0 | PartialImplementationB.cs:3:16:3:20 | ... = ... | +| PartialImplementationB.cs:4:12:4:18 | After call to constructor Object | PartialImplementationB.cs:4:22:4:24 | {...} | +| PartialImplementationB.cs:4:12:4:18 | After call to method | PartialImplementationB.cs:4:12:4:18 | Before call to constructor Object | +| PartialImplementationB.cs:4:12:4:18 | Before call to constructor Object | PartialImplementationB.cs:4:12:4:18 | call to constructor Object | +| PartialImplementationB.cs:4:12:4:18 | Before call to method | PartialImplementationB.cs:4:12:4:18 | this access | +| PartialImplementationB.cs:4:12:4:18 | Entry | PartialImplementationB.cs:4:12:4:18 | Before call to method | +| PartialImplementationB.cs:4:12:4:18 | Normal Exit | PartialImplementationB.cs:4:12:4:18 | Exit | +| PartialImplementationB.cs:4:12:4:18 | call to constructor Object | PartialImplementationB.cs:4:12:4:18 | After call to constructor Object | +| PartialImplementationB.cs:4:12:4:18 | call to method | PartialImplementationB.cs:4:12:4:18 | After call to method | | PartialImplementationB.cs:4:12:4:18 | this access | PartialImplementationB.cs:4:12:4:18 | call to method | -| PartialImplementationB.cs:4:22:4:24 | {...} | PartialImplementationB.cs:4:12:4:18 | exit Partial (normal) | -| PartialImplementationB.cs:5:16:5:16 | access to property P | PartialImplementationB.cs:5:32:5:34 | ... = ... | -| PartialImplementationB.cs:5:16:5:16 | this access | PartialImplementationB.cs:5:34:5:34 | 0 | -| PartialImplementationB.cs:5:32:5:34 | ... = ... | PartialImplementationA.cs:1:15:1:21 | exit (normal) | -| PartialImplementationB.cs:5:34:5:34 | 0 | PartialImplementationB.cs:5:16:5:16 | access to property P | -| Patterns.cs:3:7:3:14 | call to constructor Object | Patterns.cs:3:7:3:14 | {...} | -| Patterns.cs:3:7:3:14 | call to method | Patterns.cs:3:7:3:14 | call to constructor Object | -| Patterns.cs:3:7:3:14 | enter Patterns | Patterns.cs:3:7:3:14 | this access | -| Patterns.cs:3:7:3:14 | exit Patterns (normal) | Patterns.cs:3:7:3:14 | exit Patterns | +| PartialImplementationB.cs:4:22:4:24 | {...} | PartialImplementationB.cs:4:12:4:18 | Normal Exit | +| PartialImplementationB.cs:5:16:5:16 | After access to property P | PartialImplementationB.cs:5:34:5:34 | 0 | +| PartialImplementationB.cs:5:16:5:16 | Before access to property P | PartialImplementationB.cs:5:16:5:16 | this access | +| PartialImplementationB.cs:5:16:5:16 | access to property P | PartialImplementationB.cs:5:16:5:16 | After access to property P | +| PartialImplementationB.cs:5:16:5:16 | this access | PartialImplementationB.cs:5:16:5:16 | access to property P | +| PartialImplementationB.cs:5:32:5:34 | ... = ... | PartialImplementationB.cs:5:32:5:34 | After ... = ... | +| PartialImplementationB.cs:5:32:5:34 | After ... = ... | PartialImplementationA.cs:1:15:1:21 | Normal Exit | +| PartialImplementationB.cs:5:32:5:34 | Before ... = ... | PartialImplementationB.cs:5:16:5:16 | Before access to property P | +| PartialImplementationB.cs:5:34:5:34 | 0 | PartialImplementationB.cs:5:32:5:34 | ... = ... | +| Patterns.cs:3:7:3:14 | After call to constructor Object | Patterns.cs:3:7:3:14 | {...} | +| Patterns.cs:3:7:3:14 | After call to method | Patterns.cs:3:7:3:14 | Before call to constructor Object | +| Patterns.cs:3:7:3:14 | Before call to constructor Object | Patterns.cs:3:7:3:14 | call to constructor Object | +| Patterns.cs:3:7:3:14 | Before call to method | Patterns.cs:3:7:3:14 | this access | +| Patterns.cs:3:7:3:14 | Entry | Patterns.cs:3:7:3:14 | Before call to method | +| Patterns.cs:3:7:3:14 | Normal Exit | Patterns.cs:3:7:3:14 | Exit | +| Patterns.cs:3:7:3:14 | call to constructor Object | Patterns.cs:3:7:3:14 | After call to constructor Object | +| Patterns.cs:3:7:3:14 | call to method | Patterns.cs:3:7:3:14 | After call to method | | Patterns.cs:3:7:3:14 | this access | Patterns.cs:3:7:3:14 | call to method | -| Patterns.cs:3:7:3:14 | {...} | Patterns.cs:3:7:3:14 | exit Patterns (normal) | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:6:5:43:5 | {...} | -| Patterns.cs:5:10:5:11 | exit M1 (normal) | Patterns.cs:5:10:5:11 | exit M1 | +| Patterns.cs:3:7:3:14 | {...} | Patterns.cs:3:7:3:14 | Normal Exit | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:6:5:43:5 | {...} | +| Patterns.cs:5:10:5:11 | Normal Exit | Patterns.cs:5:10:5:11 | Exit | +| Patterns.cs:6:5:43:5 | After {...} | Patterns.cs:5:10:5:11 | Normal Exit | | Patterns.cs:6:5:43:5 | {...} | Patterns.cs:7:9:7:24 | ... ...; | -| Patterns.cs:7:9:7:24 | ... ...; | Patterns.cs:7:20:7:23 | null | -| Patterns.cs:7:16:7:23 | Object o = ... | Patterns.cs:8:9:18:9 | if (...) ... | +| Patterns.cs:7:9:7:24 | ... ...; | Patterns.cs:7:16:7:23 | Before Object o = ... | +| Patterns.cs:7:9:7:24 | After ... ...; | Patterns.cs:8:9:18:9 | if (...) ... | +| Patterns.cs:7:16:7:16 | access to local variable o | Patterns.cs:7:20:7:23 | null | +| Patterns.cs:7:16:7:23 | After Object o = ... | Patterns.cs:7:9:7:24 | After ... ...; | +| Patterns.cs:7:16:7:23 | Before Object o = ... | Patterns.cs:7:16:7:16 | access to local variable o | +| Patterns.cs:7:16:7:23 | Object o = ... | Patterns.cs:7:16:7:23 | After Object o = ... | | Patterns.cs:7:20:7:23 | null | Patterns.cs:7:16:7:23 | Object o = ... | -| Patterns.cs:8:9:18:9 | if (...) ... | Patterns.cs:8:13:8:13 | access to local variable o | -| Patterns.cs:8:13:8:13 | access to local variable o | Patterns.cs:8:18:8:23 | Int32 i1 | -| Patterns.cs:8:13:8:23 | [false] ... is ... | Patterns.cs:12:14:18:9 | if (...) ... | -| Patterns.cs:8:13:8:23 | [true] ... is ... | Patterns.cs:9:9:11:9 | {...} | -| Patterns.cs:8:18:8:23 | Int32 i1 | Patterns.cs:8:13:8:23 | [false] ... is ... | -| Patterns.cs:8:18:8:23 | Int32 i1 | Patterns.cs:8:13:8:23 | [true] ... is ... | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:20:9:38:9 | switch (...) {...} | +| Patterns.cs:8:9:18:9 | if (...) ... | Patterns.cs:8:13:8:23 | Before ... is ... | +| Patterns.cs:8:13:8:13 | access to local variable o | Patterns.cs:8:13:8:23 | ... is ... | +| Patterns.cs:8:13:8:23 | ... is ... | Patterns.cs:8:13:8:23 | After ... is ... [false] | +| Patterns.cs:8:13:8:23 | ... is ... | Patterns.cs:8:13:8:23 | [MatchTrue] ... is ... | +| Patterns.cs:8:13:8:23 | After ... is ... [false] | Patterns.cs:12:14:18:9 | if (...) ... | +| Patterns.cs:8:13:8:23 | After ... is ... [true] | Patterns.cs:9:9:11:9 | {...} | +| Patterns.cs:8:13:8:23 | Before ... is ... | Patterns.cs:8:13:8:13 | access to local variable o | +| Patterns.cs:8:13:8:23 | [MatchTrue] ... is ... | Patterns.cs:8:18:8:23 | Int32 i1 | +| Patterns.cs:8:18:8:23 | Int32 i1 | Patterns.cs:8:13:8:23 | After ... is ... [true] | | Patterns.cs:9:9:11:9 | {...} | Patterns.cs:10:13:10:43 | ...; | -| Patterns.cs:10:13:10:43 | ...; | Patterns.cs:10:33:10:36 | "int " | -| Patterns.cs:10:31:10:41 | $"..." | Patterns.cs:10:13:10:42 | call to method WriteLine | -| Patterns.cs:10:33:10:36 | "int " | Patterns.cs:10:38:10:39 | access to local variable i1 | -| Patterns.cs:10:37:10:40 | {...} | Patterns.cs:10:31:10:41 | $"..." | +| Patterns.cs:10:13:10:42 | After call to method WriteLine | Patterns.cs:10:13:10:43 | After ...; | +| Patterns.cs:10:13:10:42 | Before call to method WriteLine | Patterns.cs:10:31:10:41 | Before $"..." | +| Patterns.cs:10:13:10:42 | call to method WriteLine | Patterns.cs:10:13:10:42 | After call to method WriteLine | +| Patterns.cs:10:13:10:43 | ...; | Patterns.cs:10:13:10:42 | Before call to method WriteLine | +| Patterns.cs:10:13:10:43 | After ...; | Patterns.cs:9:9:11:9 | After {...} | +| Patterns.cs:10:31:10:41 | $"..." | Patterns.cs:10:31:10:41 | After $"..." | +| Patterns.cs:10:31:10:41 | After $"..." | Patterns.cs:10:13:10:42 | call to method WriteLine | +| Patterns.cs:10:31:10:41 | Before $"..." | Patterns.cs:10:33:10:36 | "int " | +| Patterns.cs:10:33:10:36 | "int " | Patterns.cs:10:37:10:40 | Before {...} | +| Patterns.cs:10:37:10:40 | After {...} | Patterns.cs:10:31:10:41 | $"..." | +| Patterns.cs:10:37:10:40 | Before {...} | Patterns.cs:10:38:10:39 | access to local variable i1 | +| Patterns.cs:10:37:10:40 | {...} | Patterns.cs:10:37:10:40 | After {...} | | Patterns.cs:10:38:10:39 | access to local variable i1 | Patterns.cs:10:37:10:40 | {...} | -| Patterns.cs:12:14:18:9 | if (...) ... | Patterns.cs:12:18:12:18 | access to local variable o | -| Patterns.cs:12:18:12:18 | access to local variable o | Patterns.cs:12:23:12:31 | String s1 | -| Patterns.cs:12:18:12:31 | [false] ... is ... | Patterns.cs:16:14:18:9 | if (...) ... | -| Patterns.cs:12:18:12:31 | [true] ... is ... | Patterns.cs:13:9:15:9 | {...} | -| Patterns.cs:12:23:12:31 | String s1 | Patterns.cs:12:18:12:31 | [false] ... is ... | -| Patterns.cs:12:23:12:31 | String s1 | Patterns.cs:12:18:12:31 | [true] ... is ... | +| Patterns.cs:12:14:18:9 | if (...) ... | Patterns.cs:12:18:12:31 | Before ... is ... | +| Patterns.cs:12:18:12:18 | access to local variable o | Patterns.cs:12:18:12:31 | ... is ... | +| Patterns.cs:12:18:12:31 | ... is ... | Patterns.cs:12:18:12:31 | After ... is ... [false] | +| Patterns.cs:12:18:12:31 | ... is ... | Patterns.cs:12:18:12:31 | [MatchTrue] ... is ... | +| Patterns.cs:12:18:12:31 | After ... is ... [false] | Patterns.cs:16:14:18:9 | if (...) ... | +| Patterns.cs:12:18:12:31 | After ... is ... [true] | Patterns.cs:13:9:15:9 | {...} | +| Patterns.cs:12:18:12:31 | Before ... is ... | Patterns.cs:12:18:12:18 | access to local variable o | +| Patterns.cs:12:18:12:31 | [MatchTrue] ... is ... | Patterns.cs:12:23:12:31 | String s1 | +| Patterns.cs:12:23:12:31 | String s1 | Patterns.cs:12:18:12:31 | After ... is ... [true] | | Patterns.cs:13:9:15:9 | {...} | Patterns.cs:14:13:14:46 | ...; | -| Patterns.cs:14:13:14:46 | ...; | Patterns.cs:14:33:14:39 | "string " | -| Patterns.cs:14:31:14:44 | $"..." | Patterns.cs:14:13:14:45 | call to method WriteLine | -| Patterns.cs:14:33:14:39 | "string " | Patterns.cs:14:41:14:42 | access to local variable s1 | -| Patterns.cs:14:40:14:43 | {...} | Patterns.cs:14:31:14:44 | $"..." | +| Patterns.cs:14:13:14:45 | After call to method WriteLine | Patterns.cs:14:13:14:46 | After ...; | +| Patterns.cs:14:13:14:45 | Before call to method WriteLine | Patterns.cs:14:31:14:44 | Before $"..." | +| Patterns.cs:14:13:14:45 | call to method WriteLine | Patterns.cs:14:13:14:45 | After call to method WriteLine | +| Patterns.cs:14:13:14:46 | ...; | Patterns.cs:14:13:14:45 | Before call to method WriteLine | +| Patterns.cs:14:13:14:46 | After ...; | Patterns.cs:13:9:15:9 | After {...} | +| Patterns.cs:14:31:14:44 | $"..." | Patterns.cs:14:31:14:44 | After $"..." | +| Patterns.cs:14:31:14:44 | After $"..." | Patterns.cs:14:13:14:45 | call to method WriteLine | +| Patterns.cs:14:31:14:44 | Before $"..." | Patterns.cs:14:33:14:39 | "string " | +| Patterns.cs:14:33:14:39 | "string " | Patterns.cs:14:40:14:43 | Before {...} | +| Patterns.cs:14:40:14:43 | After {...} | Patterns.cs:14:31:14:44 | $"..." | +| Patterns.cs:14:40:14:43 | Before {...} | Patterns.cs:14:41:14:42 | access to local variable s1 | +| Patterns.cs:14:40:14:43 | {...} | Patterns.cs:14:40:14:43 | After {...} | | Patterns.cs:14:41:14:42 | access to local variable s1 | Patterns.cs:14:40:14:43 | {...} | -| Patterns.cs:16:14:18:9 | if (...) ... | Patterns.cs:16:18:16:18 | access to local variable o | -| Patterns.cs:16:18:16:18 | access to local variable o | Patterns.cs:16:23:16:28 | Object v1 | -| Patterns.cs:16:18:16:28 | [true] ... is ... | Patterns.cs:17:9:18:9 | {...} | -| Patterns.cs:16:23:16:28 | Object v1 | Patterns.cs:16:18:16:28 | [false] ... is ... | -| Patterns.cs:16:23:16:28 | Object v1 | Patterns.cs:16:18:16:28 | [true] ... is ... | +| Patterns.cs:16:14:18:9 | if (...) ... | Patterns.cs:16:18:16:28 | Before ... is ... | +| Patterns.cs:16:18:16:18 | access to local variable o | Patterns.cs:16:18:16:28 | ... is ... | +| Patterns.cs:16:18:16:28 | ... is ... | Patterns.cs:16:18:16:28 | After ... is ... [false] | +| Patterns.cs:16:18:16:28 | ... is ... | Patterns.cs:16:18:16:28 | [MatchTrue] ... is ... | +| Patterns.cs:16:18:16:28 | After ... is ... [true] | Patterns.cs:17:9:18:9 | {...} | +| Patterns.cs:16:18:16:28 | Before ... is ... | Patterns.cs:16:18:16:18 | access to local variable o | +| Patterns.cs:16:18:16:28 | [MatchTrue] ... is ... | Patterns.cs:16:23:16:28 | Object v1 | +| Patterns.cs:16:23:16:28 | Object v1 | Patterns.cs:16:18:16:28 | After ... is ... [true] | +| Patterns.cs:20:9:38:9 | After switch (...) {...} | Patterns.cs:40:9:42:9 | switch (...) {...} | | Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:20:17:20:17 | access to local variable o | | Patterns.cs:20:17:20:17 | access to local variable o | Patterns.cs:22:13:22:23 | case ...: | +| Patterns.cs:22:13:22:23 | After case ...: [match] | Patterns.cs:23:17:23:22 | Before break; | +| Patterns.cs:22:13:22:23 | After case ...: [no-match] | Patterns.cs:24:13:24:36 | case ...: | | Patterns.cs:22:13:22:23 | case ...: | Patterns.cs:22:18:22:22 | "xyz" | -| Patterns.cs:22:18:22:22 | "xyz" | Patterns.cs:23:17:23:22 | break; | -| Patterns.cs:22:18:22:22 | "xyz" | Patterns.cs:24:13:24:36 | case ...: | +| Patterns.cs:22:18:22:22 | "xyz" | Patterns.cs:22:18:22:22 | After "xyz" [match] | +| Patterns.cs:22:18:22:22 | "xyz" | Patterns.cs:22:18:22:22 | After "xyz" [no-match] | +| Patterns.cs:22:18:22:22 | After "xyz" [match] | Patterns.cs:22:13:22:23 | After case ...: [match] | +| Patterns.cs:22:18:22:22 | After "xyz" [no-match] | Patterns.cs:22:13:22:23 | After case ...: [no-match] | +| Patterns.cs:23:17:23:22 | Before break; | Patterns.cs:23:17:23:22 | break; | +| Patterns.cs:24:13:24:36 | After case ...: [match] | Patterns.cs:24:30:24:35 | Before ... > ... | | Patterns.cs:24:13:24:36 | case ...: | Patterns.cs:24:18:24:23 | Int32 i2 | -| Patterns.cs:24:18:24:23 | Int32 i2 | Patterns.cs:24:30:24:31 | access to local variable i2 | -| Patterns.cs:24:18:24:23 | Int32 i2 | Patterns.cs:27:13:27:24 | case ...: | +| Patterns.cs:24:18:24:23 | After Int32 i2 [match] | Patterns.cs:24:13:24:36 | After case ...: [match] | +| Patterns.cs:24:18:24:23 | After Int32 i2 [no-match] | Patterns.cs:24:13:24:36 | After case ...: [no-match] | +| Patterns.cs:24:18:24:23 | Int32 i2 | Patterns.cs:24:18:24:23 | After Int32 i2 [match] | +| Patterns.cs:24:18:24:23 | Int32 i2 | Patterns.cs:24:18:24:23 | After Int32 i2 [no-match] | | Patterns.cs:24:30:24:31 | access to local variable i2 | Patterns.cs:24:35:24:35 | 0 | -| Patterns.cs:24:30:24:35 | ... > ... | Patterns.cs:25:17:25:52 | ...; | +| Patterns.cs:24:30:24:35 | ... > ... | Patterns.cs:24:30:24:35 | After ... > ... [false] | +| Patterns.cs:24:30:24:35 | ... > ... | Patterns.cs:24:30:24:35 | After ... > ... [true] | +| Patterns.cs:24:30:24:35 | After ... > ... [true] | Patterns.cs:25:17:25:52 | ...; | +| Patterns.cs:24:30:24:35 | Before ... > ... | Patterns.cs:24:30:24:31 | access to local variable i2 | | Patterns.cs:24:35:24:35 | 0 | Patterns.cs:24:30:24:35 | ... > ... | -| Patterns.cs:25:17:25:51 | call to method WriteLine | Patterns.cs:26:17:26:22 | break; | -| Patterns.cs:25:17:25:52 | ...; | Patterns.cs:25:37:25:45 | "positive " | -| Patterns.cs:25:35:25:50 | $"..." | Patterns.cs:25:17:25:51 | call to method WriteLine | -| Patterns.cs:25:37:25:45 | "positive " | Patterns.cs:25:47:25:48 | access to local variable i2 | -| Patterns.cs:25:46:25:49 | {...} | Patterns.cs:25:35:25:50 | $"..." | +| Patterns.cs:25:17:25:51 | After call to method WriteLine | Patterns.cs:25:17:25:52 | After ...; | +| Patterns.cs:25:17:25:51 | Before call to method WriteLine | Patterns.cs:25:35:25:50 | Before $"..." | +| Patterns.cs:25:17:25:51 | call to method WriteLine | Patterns.cs:25:17:25:51 | After call to method WriteLine | +| Patterns.cs:25:17:25:52 | ...; | Patterns.cs:25:17:25:51 | Before call to method WriteLine | +| Patterns.cs:25:17:25:52 | After ...; | Patterns.cs:26:17:26:22 | Before break; | +| Patterns.cs:25:35:25:50 | $"..." | Patterns.cs:25:35:25:50 | After $"..." | +| Patterns.cs:25:35:25:50 | After $"..." | Patterns.cs:25:17:25:51 | call to method WriteLine | +| Patterns.cs:25:35:25:50 | Before $"..." | Patterns.cs:25:37:25:45 | "positive " | +| Patterns.cs:25:37:25:45 | "positive " | Patterns.cs:25:46:25:49 | Before {...} | +| Patterns.cs:25:46:25:49 | After {...} | Patterns.cs:25:35:25:50 | $"..." | +| Patterns.cs:25:46:25:49 | Before {...} | Patterns.cs:25:47:25:48 | access to local variable i2 | +| Patterns.cs:25:46:25:49 | {...} | Patterns.cs:25:46:25:49 | After {...} | | Patterns.cs:25:47:25:48 | access to local variable i2 | Patterns.cs:25:46:25:49 | {...} | +| Patterns.cs:26:17:26:22 | Before break; | Patterns.cs:26:17:26:22 | break; | +| Patterns.cs:27:13:27:24 | After case ...: [match] | Patterns.cs:28:17:28:47 | ...; | +| Patterns.cs:27:13:27:24 | After case ...: [no-match] | Patterns.cs:30:13:30:27 | case ...: | | Patterns.cs:27:13:27:24 | case ...: | Patterns.cs:27:18:27:23 | Int32 i3 | -| Patterns.cs:27:18:27:23 | Int32 i3 | Patterns.cs:28:17:28:47 | ...; | -| Patterns.cs:27:18:27:23 | Int32 i3 | Patterns.cs:30:13:30:27 | case ...: | -| Patterns.cs:28:17:28:46 | call to method WriteLine | Patterns.cs:29:17:29:22 | break; | -| Patterns.cs:28:17:28:47 | ...; | Patterns.cs:28:37:28:40 | "int " | -| Patterns.cs:28:35:28:45 | $"..." | Patterns.cs:28:17:28:46 | call to method WriteLine | -| Patterns.cs:28:37:28:40 | "int " | Patterns.cs:28:42:28:43 | access to local variable i3 | -| Patterns.cs:28:41:28:44 | {...} | Patterns.cs:28:35:28:45 | $"..." | +| Patterns.cs:27:18:27:23 | After Int32 i3 [match] | Patterns.cs:27:13:27:24 | After case ...: [match] | +| Patterns.cs:27:18:27:23 | After Int32 i3 [no-match] | Patterns.cs:27:13:27:24 | After case ...: [no-match] | +| Patterns.cs:27:18:27:23 | Int32 i3 | Patterns.cs:27:18:27:23 | After Int32 i3 [match] | +| Patterns.cs:27:18:27:23 | Int32 i3 | Patterns.cs:27:18:27:23 | After Int32 i3 [no-match] | +| Patterns.cs:28:17:28:46 | After call to method WriteLine | Patterns.cs:28:17:28:47 | After ...; | +| Patterns.cs:28:17:28:46 | Before call to method WriteLine | Patterns.cs:28:35:28:45 | Before $"..." | +| Patterns.cs:28:17:28:46 | call to method WriteLine | Patterns.cs:28:17:28:46 | After call to method WriteLine | +| Patterns.cs:28:17:28:47 | ...; | Patterns.cs:28:17:28:46 | Before call to method WriteLine | +| Patterns.cs:28:17:28:47 | After ...; | Patterns.cs:29:17:29:22 | Before break; | +| Patterns.cs:28:35:28:45 | $"..." | Patterns.cs:28:35:28:45 | After $"..." | +| Patterns.cs:28:35:28:45 | After $"..." | Patterns.cs:28:17:28:46 | call to method WriteLine | +| Patterns.cs:28:35:28:45 | Before $"..." | Patterns.cs:28:37:28:40 | "int " | +| Patterns.cs:28:37:28:40 | "int " | Patterns.cs:28:41:28:44 | Before {...} | +| Patterns.cs:28:41:28:44 | After {...} | Patterns.cs:28:35:28:45 | $"..." | +| Patterns.cs:28:41:28:44 | Before {...} | Patterns.cs:28:42:28:43 | access to local variable i3 | +| Patterns.cs:28:41:28:44 | {...} | Patterns.cs:28:41:28:44 | After {...} | | Patterns.cs:28:42:28:43 | access to local variable i3 | Patterns.cs:28:41:28:44 | {...} | +| Patterns.cs:29:17:29:22 | Before break; | Patterns.cs:29:17:29:22 | break; | +| Patterns.cs:30:13:30:27 | After case ...: [match] | Patterns.cs:31:17:31:50 | ...; | +| Patterns.cs:30:13:30:27 | After case ...: [no-match] | Patterns.cs:33:13:33:24 | case ...: | | Patterns.cs:30:13:30:27 | case ...: | Patterns.cs:30:18:30:26 | String s2 | -| Patterns.cs:30:18:30:26 | String s2 | Patterns.cs:31:17:31:50 | ...; | -| Patterns.cs:30:18:30:26 | String s2 | Patterns.cs:33:13:33:24 | case ...: | -| Patterns.cs:31:17:31:49 | call to method WriteLine | Patterns.cs:32:17:32:22 | break; | -| Patterns.cs:31:17:31:50 | ...; | Patterns.cs:31:37:31:43 | "string " | -| Patterns.cs:31:35:31:48 | $"..." | Patterns.cs:31:17:31:49 | call to method WriteLine | -| Patterns.cs:31:37:31:43 | "string " | Patterns.cs:31:45:31:46 | access to local variable s2 | -| Patterns.cs:31:44:31:47 | {...} | Patterns.cs:31:35:31:48 | $"..." | +| Patterns.cs:30:18:30:26 | After String s2 [match] | Patterns.cs:30:13:30:27 | After case ...: [match] | +| Patterns.cs:30:18:30:26 | After String s2 [no-match] | Patterns.cs:30:13:30:27 | After case ...: [no-match] | +| Patterns.cs:30:18:30:26 | String s2 | Patterns.cs:30:18:30:26 | After String s2 [match] | +| Patterns.cs:30:18:30:26 | String s2 | Patterns.cs:30:18:30:26 | After String s2 [no-match] | +| Patterns.cs:31:17:31:49 | After call to method WriteLine | Patterns.cs:31:17:31:50 | After ...; | +| Patterns.cs:31:17:31:49 | Before call to method WriteLine | Patterns.cs:31:35:31:48 | Before $"..." | +| Patterns.cs:31:17:31:49 | call to method WriteLine | Patterns.cs:31:17:31:49 | After call to method WriteLine | +| Patterns.cs:31:17:31:50 | ...; | Patterns.cs:31:17:31:49 | Before call to method WriteLine | +| Patterns.cs:31:17:31:50 | After ...; | Patterns.cs:32:17:32:22 | Before break; | +| Patterns.cs:31:35:31:48 | $"..." | Patterns.cs:31:35:31:48 | After $"..." | +| Patterns.cs:31:35:31:48 | After $"..." | Patterns.cs:31:17:31:49 | call to method WriteLine | +| Patterns.cs:31:35:31:48 | Before $"..." | Patterns.cs:31:37:31:43 | "string " | +| Patterns.cs:31:37:31:43 | "string " | Patterns.cs:31:44:31:47 | Before {...} | +| Patterns.cs:31:44:31:47 | After {...} | Patterns.cs:31:35:31:48 | $"..." | +| Patterns.cs:31:44:31:47 | Before {...} | Patterns.cs:31:45:31:46 | access to local variable s2 | +| Patterns.cs:31:44:31:47 | {...} | Patterns.cs:31:44:31:47 | After {...} | | Patterns.cs:31:45:31:46 | access to local variable s2 | Patterns.cs:31:44:31:47 | {...} | +| Patterns.cs:32:17:32:22 | Before break; | Patterns.cs:32:17:32:22 | break; | +| Patterns.cs:33:13:33:24 | After case ...: [match] | Patterns.cs:34:17:34:22 | Before break; | +| Patterns.cs:33:13:33:24 | After case ...: [no-match] | Patterns.cs:35:13:35:20 | default: | | Patterns.cs:33:13:33:24 | case ...: | Patterns.cs:33:18:33:23 | Object v2 | -| Patterns.cs:33:18:33:23 | Object v2 | Patterns.cs:34:17:34:22 | break; | -| Patterns.cs:33:18:33:23 | Object v2 | Patterns.cs:35:13:35:20 | default: | -| Patterns.cs:35:13:35:20 | default: | Patterns.cs:36:17:36:52 | ...; | -| Patterns.cs:36:17:36:51 | call to method WriteLine | Patterns.cs:37:17:37:22 | break; | -| Patterns.cs:36:17:36:52 | ...; | Patterns.cs:36:35:36:50 | "Something else" | +| Patterns.cs:33:18:33:23 | After Object v2 [match] | Patterns.cs:33:13:33:24 | After case ...: [match] | +| Patterns.cs:33:18:33:23 | After Object v2 [no-match] | Patterns.cs:33:13:33:24 | After case ...: [no-match] | +| Patterns.cs:33:18:33:23 | Object v2 | Patterns.cs:33:18:33:23 | After Object v2 [match] | +| Patterns.cs:33:18:33:23 | Object v2 | Patterns.cs:33:18:33:23 | After Object v2 [no-match] | +| Patterns.cs:34:17:34:22 | Before break; | Patterns.cs:34:17:34:22 | break; | +| Patterns.cs:35:13:35:20 | After default: [match] | Patterns.cs:36:17:36:52 | ...; | +| Patterns.cs:35:13:35:20 | default: | Patterns.cs:35:13:35:20 | After default: [match] | +| Patterns.cs:36:17:36:51 | After call to method WriteLine | Patterns.cs:36:17:36:52 | After ...; | +| Patterns.cs:36:17:36:51 | Before call to method WriteLine | Patterns.cs:36:35:36:50 | "Something else" | +| Patterns.cs:36:17:36:51 | call to method WriteLine | Patterns.cs:36:17:36:51 | After call to method WriteLine | +| Patterns.cs:36:17:36:52 | ...; | Patterns.cs:36:17:36:51 | Before call to method WriteLine | +| Patterns.cs:36:17:36:52 | After ...; | Patterns.cs:37:17:37:22 | Before break; | | Patterns.cs:36:35:36:50 | "Something else" | Patterns.cs:36:17:36:51 | call to method WriteLine | +| Patterns.cs:37:17:37:22 | Before break; | Patterns.cs:37:17:37:22 | break; | +| Patterns.cs:40:9:42:9 | After switch (...) {...} | Patterns.cs:6:5:43:5 | After {...} | | Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:40:17:40:17 | access to local variable o | -| Patterns.cs:40:17:40:17 | access to local variable o | Patterns.cs:5:10:5:11 | exit M1 (normal) | -| Patterns.cs:47:24:47:25 | enter M2 | Patterns.cs:48:9:48:9 | access to parameter c | -| Patterns.cs:47:24:47:25 | exit M2 (normal) | Patterns.cs:47:24:47:25 | exit M2 | -| Patterns.cs:48:9:48:9 | access to parameter c | Patterns.cs:48:18:48:20 | a | -| Patterns.cs:48:9:48:20 | ... is ... | Patterns.cs:47:24:47:25 | exit M2 (normal) | -| Patterns.cs:48:14:48:20 | not ... | Patterns.cs:48:9:48:20 | ... is ... | +| Patterns.cs:40:17:40:17 | access to local variable o | Patterns.cs:40:9:42:9 | After switch (...) {...} | +| Patterns.cs:47:24:47:25 | Entry | Patterns.cs:47:32:47:32 | c | +| Patterns.cs:47:24:47:25 | Normal Exit | Patterns.cs:47:24:47:25 | Exit | +| Patterns.cs:47:32:47:32 | c | Patterns.cs:48:9:48:20 | Before ... is ... | +| Patterns.cs:48:9:48:9 | access to parameter c | Patterns.cs:48:9:48:20 | ... is ... | +| Patterns.cs:48:9:48:20 | ... is ... | Patterns.cs:48:9:48:20 | After ... is ... | +| Patterns.cs:48:9:48:20 | ... is ... | Patterns.cs:48:9:48:20 | [MatchTrue] ... is ... | +| Patterns.cs:48:9:48:20 | After ... is ... | Patterns.cs:47:24:47:25 | Normal Exit | +| Patterns.cs:48:9:48:20 | Before ... is ... | Patterns.cs:48:9:48:9 | access to parameter c | +| Patterns.cs:48:9:48:20 | [MatchTrue] ... is ... | Patterns.cs:48:14:48:20 | Before not ... | +| Patterns.cs:48:14:48:20 | Before not ... | Patterns.cs:48:18:48:20 | a | +| Patterns.cs:48:14:48:20 | not ... | Patterns.cs:48:14:48:20 | After not ... | | Patterns.cs:48:18:48:20 | a | Patterns.cs:48:14:48:20 | not ... | -| Patterns.cs:50:24:50:25 | enter M3 | Patterns.cs:51:9:51:9 | access to parameter c | -| Patterns.cs:50:24:50:25 | exit M3 (normal) | Patterns.cs:50:24:50:25 | exit M3 | -| Patterns.cs:51:9:51:9 | access to parameter c | Patterns.cs:51:18:51:21 | null | -| Patterns.cs:51:9:51:21 | [false] ... is ... | Patterns.cs:51:34:51:34 | access to parameter c | -| Patterns.cs:51:9:51:21 | [true] ... is ... | Patterns.cs:51:25:51:25 | access to parameter c | -| Patterns.cs:51:9:51:39 | ... ? ... : ... | Patterns.cs:50:24:50:25 | exit M3 (normal) | -| Patterns.cs:51:14:51:21 | [match] not ... | Patterns.cs:51:9:51:21 | [true] ... is ... | -| Patterns.cs:51:14:51:21 | [no-match] not ... | Patterns.cs:51:9:51:21 | [false] ... is ... | -| Patterns.cs:51:18:51:21 | null | Patterns.cs:51:14:51:21 | [match] not ... | -| Patterns.cs:51:18:51:21 | null | Patterns.cs:51:14:51:21 | [no-match] not ... | -| Patterns.cs:51:25:51:25 | access to parameter c | Patterns.cs:51:30:51:30 | 1 | -| Patterns.cs:51:30:51:30 | 1 | Patterns.cs:51:25:51:30 | ... is ... | -| Patterns.cs:51:34:51:34 | access to parameter c | Patterns.cs:51:39:51:39 | 2 | -| Patterns.cs:51:39:51:39 | 2 | Patterns.cs:51:34:51:39 | ... is ... | -| Patterns.cs:53:24:53:25 | enter M4 | Patterns.cs:54:9:54:9 | access to parameter c | -| Patterns.cs:53:24:53:25 | exit M4 (normal) | Patterns.cs:53:24:53:25 | exit M4 | -| Patterns.cs:54:9:54:9 | access to parameter c | Patterns.cs:54:18:54:37 | Patterns u | -| Patterns.cs:54:9:54:37 | ... is ... | Patterns.cs:53:24:53:25 | exit M4 (normal) | -| Patterns.cs:54:14:54:37 | not ... | Patterns.cs:54:9:54:37 | ... is ... | -| Patterns.cs:54:18:54:37 | Patterns u | Patterns.cs:54:18:54:37 | { ... } | -| Patterns.cs:54:18:54:37 | Patterns u | Patterns.cs:54:33:54:33 | 1 | -| Patterns.cs:54:18:54:37 | { ... } | Patterns.cs:54:14:54:37 | not ... | -| Patterns.cs:54:33:54:33 | 1 | Patterns.cs:54:27:54:35 | [match] { ... } | -| Patterns.cs:54:33:54:33 | 1 | Patterns.cs:54:27:54:35 | [no-match] { ... } | -| Patterns.cs:56:26:56:27 | enter M5 | Patterns.cs:57:5:63:5 | {...} | -| Patterns.cs:56:26:56:27 | exit M5 (normal) | Patterns.cs:56:26:56:27 | exit M5 | -| Patterns.cs:57:5:63:5 | {...} | Patterns.cs:58:16:58:16 | access to parameter i | -| Patterns.cs:58:9:62:10 | return ...; | Patterns.cs:56:26:56:27 | exit M5 (normal) | -| Patterns.cs:58:16:58:16 | access to parameter i | Patterns.cs:60:17:60:17 | 1 | -| Patterns.cs:58:16:62:9 | ... switch { ... } | Patterns.cs:58:9:62:10 | return ...; | -| Patterns.cs:60:13:60:17 | [match] not ... | Patterns.cs:60:22:60:28 | "not 1" | -| Patterns.cs:60:13:60:17 | [no-match] not ... | Patterns.cs:61:13:61:13 | _ | -| Patterns.cs:60:17:60:17 | 1 | Patterns.cs:60:13:60:17 | [match] not ... | -| Patterns.cs:60:17:60:17 | 1 | Patterns.cs:60:13:60:17 | [no-match] not ... | -| Patterns.cs:60:22:60:28 | "not 1" | Patterns.cs:60:13:60:28 | ... => ... | -| Patterns.cs:61:13:61:13 | _ | Patterns.cs:61:18:61:24 | "other" | -| Patterns.cs:61:18:61:24 | "other" | Patterns.cs:61:13:61:24 | ... => ... | -| Patterns.cs:65:26:65:27 | enter M6 | Patterns.cs:66:5:72:5 | {...} | -| Patterns.cs:65:26:65:27 | exit M6 (normal) | Patterns.cs:65:26:65:27 | exit M6 | -| Patterns.cs:66:5:72:5 | {...} | Patterns.cs:67:16:67:16 | 2 | -| Patterns.cs:67:9:71:10 | return ...; | Patterns.cs:65:26:65:27 | exit M6 (normal) | -| Patterns.cs:67:16:67:16 | 2 | Patterns.cs:69:17:69:17 | 2 | -| Patterns.cs:67:16:71:9 | ... switch { ... } | Patterns.cs:67:9:71:10 | return ...; | -| Patterns.cs:69:13:69:17 | [no-match] not ... | Patterns.cs:70:13:70:13 | 2 | -| Patterns.cs:69:17:69:17 | 2 | Patterns.cs:69:13:69:17 | [no-match] not ... | -| Patterns.cs:70:13:70:13 | 2 | Patterns.cs:70:18:70:27 | "possible" | -| Patterns.cs:70:13:70:27 | ... => ... | Patterns.cs:67:16:71:9 | ... switch { ... } | -| Patterns.cs:70:18:70:27 | "possible" | Patterns.cs:70:13:70:27 | ... => ... | -| Patterns.cs:74:26:74:27 | enter M7 | Patterns.cs:75:5:83:5 | {...} | -| Patterns.cs:74:26:74:27 | exit M7 (normal) | Patterns.cs:74:26:74:27 | exit M7 | -| Patterns.cs:75:5:83:5 | {...} | Patterns.cs:76:16:76:16 | access to parameter i | -| Patterns.cs:76:9:82:10 | return ...; | Patterns.cs:74:26:74:27 | exit M7 (normal) | -| Patterns.cs:76:16:76:16 | access to parameter i | Patterns.cs:78:15:78:15 | 1 | -| Patterns.cs:76:16:82:9 | ... switch { ... } | Patterns.cs:76:9:82:10 | return ...; | -| Patterns.cs:78:13:78:15 | > ... | Patterns.cs:78:20:78:24 | "> 1" | -| Patterns.cs:78:13:78:15 | > ... | Patterns.cs:79:15:79:15 | 0 | +| Patterns.cs:50:24:50:25 | Entry | Patterns.cs:50:34:50:34 | c | +| Patterns.cs:50:24:50:25 | Normal Exit | Patterns.cs:50:24:50:25 | Exit | +| Patterns.cs:50:34:50:34 | c | Patterns.cs:51:9:51:39 | ... ? ... : ... | +| Patterns.cs:51:9:51:9 | access to parameter c | Patterns.cs:51:9:51:21 | ... is ... | +| Patterns.cs:51:9:51:21 | ... is ... | Patterns.cs:51:9:51:21 | After ... is ... [false] | +| Patterns.cs:51:9:51:21 | ... is ... | Patterns.cs:51:9:51:21 | [MatchTrue] ... is ... | +| Patterns.cs:51:9:51:21 | After ... is ... [false] | Patterns.cs:51:34:51:39 | Before ... is ... | +| Patterns.cs:51:9:51:21 | After ... is ... [true] | Patterns.cs:51:25:51:30 | Before ... is ... | +| Patterns.cs:51:9:51:21 | Before ... is ... | Patterns.cs:51:9:51:9 | access to parameter c | +| Patterns.cs:51:9:51:21 | [MatchTrue] ... is ... | Patterns.cs:51:14:51:21 | Before not ... | +| Patterns.cs:51:9:51:39 | ... ? ... : ... | Patterns.cs:51:9:51:21 | Before ... is ... | +| Patterns.cs:51:9:51:39 | After ... ? ... : ... | Patterns.cs:50:24:50:25 | Normal Exit | +| Patterns.cs:51:14:51:21 | After not ... | Patterns.cs:51:9:51:21 | After ... is ... [true] | +| Patterns.cs:51:14:51:21 | Before not ... | Patterns.cs:51:18:51:21 | null | +| Patterns.cs:51:14:51:21 | not ... | Patterns.cs:51:14:51:21 | After not ... | +| Patterns.cs:51:18:51:21 | null | Patterns.cs:51:14:51:21 | not ... | +| Patterns.cs:51:25:51:25 | access to parameter c | Patterns.cs:51:25:51:30 | ... is ... | +| Patterns.cs:51:25:51:30 | ... is ... | Patterns.cs:51:25:51:30 | After ... is ... | +| Patterns.cs:51:25:51:30 | ... is ... | Patterns.cs:51:25:51:30 | [MatchTrue] ... is ... | +| Patterns.cs:51:25:51:30 | Before ... is ... | Patterns.cs:51:25:51:25 | access to parameter c | +| Patterns.cs:51:25:51:30 | [MatchTrue] ... is ... | Patterns.cs:51:30:51:30 | 1 | +| Patterns.cs:51:34:51:34 | access to parameter c | Patterns.cs:51:34:51:39 | ... is ... | +| Patterns.cs:51:34:51:39 | ... is ... | Patterns.cs:51:34:51:39 | After ... is ... | +| Patterns.cs:51:34:51:39 | ... is ... | Patterns.cs:51:34:51:39 | [MatchTrue] ... is ... | +| Patterns.cs:51:34:51:39 | Before ... is ... | Patterns.cs:51:34:51:34 | access to parameter c | +| Patterns.cs:51:34:51:39 | [MatchTrue] ... is ... | Patterns.cs:51:39:51:39 | 2 | +| Patterns.cs:53:24:53:25 | Entry | Patterns.cs:53:34:53:34 | c | +| Patterns.cs:53:24:53:25 | Normal Exit | Patterns.cs:53:24:53:25 | Exit | +| Patterns.cs:53:34:53:34 | c | Patterns.cs:54:9:54:37 | Before ... is ... | +| Patterns.cs:54:9:54:9 | access to parameter c | Patterns.cs:54:9:54:37 | ... is ... | +| Patterns.cs:54:9:54:37 | ... is ... | Patterns.cs:54:9:54:37 | After ... is ... | +| Patterns.cs:54:9:54:37 | ... is ... | Patterns.cs:54:9:54:37 | [MatchTrue] ... is ... | +| Patterns.cs:54:9:54:37 | After ... is ... | Patterns.cs:53:24:53:25 | Normal Exit | +| Patterns.cs:54:9:54:37 | Before ... is ... | Patterns.cs:54:9:54:9 | access to parameter c | +| Patterns.cs:54:9:54:37 | [MatchTrue] ... is ... | Patterns.cs:54:14:54:37 | Before not ... | +| Patterns.cs:54:14:54:37 | Before not ... | Patterns.cs:54:18:54:37 | Before { ... } | +| Patterns.cs:54:14:54:37 | not ... | Patterns.cs:54:14:54:37 | After not ... | +| Patterns.cs:54:18:54:25 | access to type Patterns | Patterns.cs:54:27:54:35 | Before { ... } | +| Patterns.cs:54:18:54:37 | After { ... } | Patterns.cs:54:14:54:37 | not ... | +| Patterns.cs:54:18:54:37 | Before { ... } | Patterns.cs:54:18:54:37 | Patterns u | +| Patterns.cs:54:18:54:37 | Patterns u | Patterns.cs:54:18:54:25 | access to type Patterns | +| Patterns.cs:54:18:54:37 | { ... } | Patterns.cs:54:18:54:37 | After { ... } | +| Patterns.cs:54:27:54:35 | After { ... } | Patterns.cs:54:18:54:37 | { ... } | +| Patterns.cs:54:27:54:35 | Before { ... } | Patterns.cs:54:33:54:33 | 1 | +| Patterns.cs:54:27:54:35 | { ... } | Patterns.cs:54:27:54:35 | After { ... } | +| Patterns.cs:54:33:54:33 | 1 | Patterns.cs:54:27:54:35 | { ... } | +| Patterns.cs:56:26:56:27 | Entry | Patterns.cs:56:33:56:33 | i | +| Patterns.cs:56:26:56:27 | Normal Exit | Patterns.cs:56:26:56:27 | Exit | +| Patterns.cs:56:33:56:33 | i | Patterns.cs:57:5:63:5 | {...} | +| Patterns.cs:57:5:63:5 | {...} | Patterns.cs:58:9:62:10 | Before return ...; | +| Patterns.cs:58:9:62:10 | Before return ...; | Patterns.cs:58:16:62:9 | ... switch { ... } | +| Patterns.cs:58:9:62:10 | return ...; | Patterns.cs:56:26:56:27 | Normal Exit | +| Patterns.cs:58:16:58:16 | access to parameter i | Patterns.cs:60:13:60:28 | ... => ... | +| Patterns.cs:58:16:62:9 | ... switch { ... } | Patterns.cs:58:16:58:16 | access to parameter i | +| Patterns.cs:58:16:62:9 | After ... switch { ... } | Patterns.cs:58:9:62:10 | return ...; | +| Patterns.cs:60:13:60:17 | After not ... [match] | Patterns.cs:60:13:60:28 | After ... => ... [match] | +| Patterns.cs:60:13:60:17 | After not ... [no-match] | Patterns.cs:60:13:60:28 | After ... => ... [no-match] | +| Patterns.cs:60:13:60:17 | Before not ... | Patterns.cs:60:17:60:17 | 1 | +| Patterns.cs:60:13:60:17 | not ... | Patterns.cs:60:13:60:17 | After not ... [match] | +| Patterns.cs:60:13:60:17 | not ... | Patterns.cs:60:13:60:17 | After not ... [no-match] | +| Patterns.cs:60:13:60:28 | ... => ... | Patterns.cs:60:13:60:17 | Before not ... | +| Patterns.cs:60:13:60:28 | After ... => ... [match] | Patterns.cs:60:22:60:28 | "not 1" | +| Patterns.cs:60:13:60:28 | After ... => ... [no-match] | Patterns.cs:61:13:61:24 | ... => ... | +| Patterns.cs:60:17:60:17 | 1 | Patterns.cs:60:13:60:17 | not ... | +| Patterns.cs:61:13:61:13 | After _ [match] | Patterns.cs:61:13:61:24 | After ... => ... [match] | +| Patterns.cs:61:13:61:13 | _ | Patterns.cs:61:13:61:13 | After _ [match] | +| Patterns.cs:61:13:61:24 | ... => ... | Patterns.cs:61:13:61:13 | _ | +| Patterns.cs:61:13:61:24 | After ... => ... [match] | Patterns.cs:61:18:61:24 | "other" | +| Patterns.cs:65:26:65:27 | Entry | Patterns.cs:66:5:72:5 | {...} | +| Patterns.cs:65:26:65:27 | Normal Exit | Patterns.cs:65:26:65:27 | Exit | +| Patterns.cs:66:5:72:5 | {...} | Patterns.cs:67:9:71:10 | Before return ...; | +| Patterns.cs:67:9:71:10 | Before return ...; | Patterns.cs:67:16:71:9 | ... switch { ... } | +| Patterns.cs:67:9:71:10 | return ...; | Patterns.cs:65:26:65:27 | Normal Exit | +| Patterns.cs:67:16:67:16 | 2 | Patterns.cs:69:13:69:33 | ... => ... | +| Patterns.cs:67:16:71:9 | ... switch { ... } | Patterns.cs:67:16:67:16 | 2 | +| Patterns.cs:67:16:71:9 | After ... switch { ... } | Patterns.cs:67:9:71:10 | return ...; | +| Patterns.cs:69:13:69:17 | After not ... [match] | Patterns.cs:69:13:69:33 | After ... => ... [match] | +| Patterns.cs:69:13:69:17 | After not ... [no-match] | Patterns.cs:69:13:69:33 | After ... => ... [no-match] | +| Patterns.cs:69:13:69:17 | Before not ... | Patterns.cs:69:17:69:17 | 2 | +| Patterns.cs:69:13:69:17 | not ... | Patterns.cs:69:13:69:17 | After not ... [match] | +| Patterns.cs:69:13:69:17 | not ... | Patterns.cs:69:13:69:17 | After not ... [no-match] | +| Patterns.cs:69:13:69:33 | ... => ... | Patterns.cs:69:13:69:17 | Before not ... | +| Patterns.cs:69:13:69:33 | After ... => ... [match] | Patterns.cs:69:22:69:33 | "impossible" | +| Patterns.cs:69:13:69:33 | After ... => ... [no-match] | Patterns.cs:70:13:70:27 | ... => ... | +| Patterns.cs:69:17:69:17 | 2 | Patterns.cs:69:13:69:17 | not ... | +| Patterns.cs:70:13:70:13 | 2 | Patterns.cs:70:13:70:13 | After 2 [match] | +| Patterns.cs:70:13:70:13 | 2 | Patterns.cs:70:13:70:13 | After 2 [no-match] | +| Patterns.cs:70:13:70:13 | After 2 [match] | Patterns.cs:70:13:70:27 | After ... => ... [match] | +| Patterns.cs:70:13:70:13 | After 2 [no-match] | Patterns.cs:70:13:70:27 | After ... => ... [no-match] | +| Patterns.cs:70:13:70:27 | ... => ... | Patterns.cs:70:13:70:13 | 2 | +| Patterns.cs:70:13:70:27 | After ... => ... [match] | Patterns.cs:70:18:70:27 | "possible" | +| Patterns.cs:74:26:74:27 | Entry | Patterns.cs:74:33:74:33 | i | +| Patterns.cs:74:26:74:27 | Normal Exit | Patterns.cs:74:26:74:27 | Exit | +| Patterns.cs:74:33:74:33 | i | Patterns.cs:75:5:83:5 | {...} | +| Patterns.cs:75:5:83:5 | {...} | Patterns.cs:76:9:82:10 | Before return ...; | +| Patterns.cs:76:9:82:10 | Before return ...; | Patterns.cs:76:16:82:9 | ... switch { ... } | +| Patterns.cs:76:9:82:10 | return ...; | Patterns.cs:74:26:74:27 | Normal Exit | +| Patterns.cs:76:16:76:16 | access to parameter i | Patterns.cs:78:13:78:24 | ... => ... | +| Patterns.cs:76:16:82:9 | ... switch { ... } | Patterns.cs:76:16:76:16 | access to parameter i | +| Patterns.cs:76:16:82:9 | After ... switch { ... } | Patterns.cs:76:9:82:10 | return ...; | +| Patterns.cs:78:13:78:15 | > ... | Patterns.cs:78:13:78:15 | After > ... [match] | +| Patterns.cs:78:13:78:15 | > ... | Patterns.cs:78:13:78:15 | After > ... [no-match] | +| Patterns.cs:78:13:78:15 | After > ... [match] | Patterns.cs:78:13:78:24 | After ... => ... [match] | +| Patterns.cs:78:13:78:15 | After > ... [no-match] | Patterns.cs:78:13:78:24 | After ... => ... [no-match] | +| Patterns.cs:78:13:78:15 | Before > ... | Patterns.cs:78:15:78:15 | 1 | +| Patterns.cs:78:13:78:24 | ... => ... | Patterns.cs:78:13:78:15 | Before > ... | +| Patterns.cs:78:13:78:24 | After ... => ... [match] | Patterns.cs:78:20:78:24 | "> 1" | +| Patterns.cs:78:13:78:24 | After ... => ... [no-match] | Patterns.cs:79:13:79:24 | ... => ... | | Patterns.cs:78:15:78:15 | 1 | Patterns.cs:78:13:78:15 | > ... | -| Patterns.cs:78:20:78:24 | "> 1" | Patterns.cs:78:13:78:24 | ... => ... | -| Patterns.cs:79:13:79:15 | < ... | Patterns.cs:79:20:79:24 | "< 0" | -| Patterns.cs:79:13:79:15 | < ... | Patterns.cs:80:13:80:13 | 1 | +| Patterns.cs:79:13:79:15 | < ... | Patterns.cs:79:13:79:15 | After < ... [match] | +| Patterns.cs:79:13:79:15 | < ... | Patterns.cs:79:13:79:15 | After < ... [no-match] | +| Patterns.cs:79:13:79:15 | After < ... [match] | Patterns.cs:79:13:79:24 | After ... => ... [match] | +| Patterns.cs:79:13:79:15 | After < ... [no-match] | Patterns.cs:79:13:79:24 | After ... => ... [no-match] | +| Patterns.cs:79:13:79:15 | Before < ... | Patterns.cs:79:15:79:15 | 0 | +| Patterns.cs:79:13:79:24 | ... => ... | Patterns.cs:79:13:79:15 | Before < ... | +| Patterns.cs:79:13:79:24 | After ... => ... [match] | Patterns.cs:79:20:79:24 | "< 0" | +| Patterns.cs:79:13:79:24 | After ... => ... [no-match] | Patterns.cs:80:13:80:20 | ... => ... | | Patterns.cs:79:15:79:15 | 0 | Patterns.cs:79:13:79:15 | < ... | -| Patterns.cs:79:20:79:24 | "< 0" | Patterns.cs:79:13:79:24 | ... => ... | -| Patterns.cs:80:13:80:13 | 1 | Patterns.cs:80:18:80:20 | "1" | -| Patterns.cs:80:13:80:13 | 1 | Patterns.cs:81:13:81:13 | _ | -| Patterns.cs:80:18:80:20 | "1" | Patterns.cs:80:13:80:20 | ... => ... | -| Patterns.cs:81:13:81:13 | _ | Patterns.cs:81:18:81:20 | "0" | -| Patterns.cs:81:18:81:20 | "0" | Patterns.cs:81:13:81:20 | ... => ... | -| Patterns.cs:85:26:85:27 | enter M8 | Patterns.cs:85:39:85:39 | access to parameter i | -| Patterns.cs:85:26:85:27 | exit M8 (normal) | Patterns.cs:85:26:85:27 | exit M8 | -| Patterns.cs:85:39:85:39 | access to parameter i | Patterns.cs:85:44:85:44 | 1 | -| Patterns.cs:85:39:85:53 | [false] ... is ... | Patterns.cs:85:67:85:69 | "2" | -| Patterns.cs:85:39:85:53 | [true] ... is ... | Patterns.cs:85:57:85:63 | "not 2" | -| Patterns.cs:85:39:85:69 | ... ? ... : ... | Patterns.cs:85:26:85:27 | exit M8 (normal) | -| Patterns.cs:85:44:85:44 | 1 | Patterns.cs:85:44:85:53 | [match] ... or ... | -| Patterns.cs:85:44:85:44 | 1 | Patterns.cs:85:53:85:53 | 2 | -| Patterns.cs:85:44:85:53 | [match] ... or ... | Patterns.cs:85:39:85:53 | [true] ... is ... | -| Patterns.cs:85:44:85:53 | [no-match] ... or ... | Patterns.cs:85:39:85:53 | [false] ... is ... | -| Patterns.cs:85:49:85:53 | [no-match] not ... | Patterns.cs:85:44:85:53 | [no-match] ... or ... | -| Patterns.cs:85:53:85:53 | 2 | Patterns.cs:85:49:85:53 | [match] not ... | -| Patterns.cs:85:53:85:53 | 2 | Patterns.cs:85:49:85:53 | [no-match] not ... | -| Patterns.cs:87:26:87:27 | enter M9 | Patterns.cs:87:39:87:39 | access to parameter i | -| Patterns.cs:87:26:87:27 | exit M9 (normal) | Patterns.cs:87:26:87:27 | exit M9 | -| Patterns.cs:87:39:87:39 | access to parameter i | Patterns.cs:87:44:87:44 | 1 | -| Patterns.cs:87:39:87:54 | [false] ... is ... | Patterns.cs:87:64:87:70 | "not 1" | -| Patterns.cs:87:39:87:54 | [true] ... is ... | Patterns.cs:87:58:87:60 | "1" | -| Patterns.cs:87:39:87:70 | ... ? ... : ... | Patterns.cs:87:26:87:27 | exit M9 (normal) | -| Patterns.cs:87:44:87:44 | 1 | Patterns.cs:87:44:87:54 | [no-match] ... and ... | -| Patterns.cs:87:44:87:44 | 1 | Patterns.cs:87:54:87:54 | 2 | -| Patterns.cs:87:44:87:54 | [match] ... and ... | Patterns.cs:87:39:87:54 | [true] ... is ... | -| Patterns.cs:87:44:87:54 | [no-match] ... and ... | Patterns.cs:87:39:87:54 | [false] ... is ... | -| Patterns.cs:87:50:87:54 | [match] not ... | Patterns.cs:87:44:87:54 | [match] ... and ... | -| Patterns.cs:87:54:87:54 | 2 | Patterns.cs:87:50:87:54 | [match] not ... | -| Patterns.cs:87:54:87:54 | 2 | Patterns.cs:87:50:87:54 | [no-match] not ... | -| Patterns.cs:93:17:93:19 | enter M10 | Patterns.cs:94:5:99:5 | {...} | -| Patterns.cs:93:17:93:19 | exit M10 (normal) | Patterns.cs:93:17:93:19 | exit M10 | +| Patterns.cs:80:13:80:13 | 1 | Patterns.cs:80:13:80:13 | After 1 [match] | +| Patterns.cs:80:13:80:13 | 1 | Patterns.cs:80:13:80:13 | After 1 [no-match] | +| Patterns.cs:80:13:80:13 | After 1 [match] | Patterns.cs:80:13:80:20 | After ... => ... [match] | +| Patterns.cs:80:13:80:13 | After 1 [no-match] | Patterns.cs:80:13:80:20 | After ... => ... [no-match] | +| Patterns.cs:80:13:80:20 | ... => ... | Patterns.cs:80:13:80:13 | 1 | +| Patterns.cs:80:13:80:20 | After ... => ... [match] | Patterns.cs:80:18:80:20 | "1" | +| Patterns.cs:80:13:80:20 | After ... => ... [no-match] | Patterns.cs:81:13:81:20 | ... => ... | +| Patterns.cs:81:13:81:13 | After _ [match] | Patterns.cs:81:13:81:20 | After ... => ... [match] | +| Patterns.cs:81:13:81:13 | _ | Patterns.cs:81:13:81:13 | After _ [match] | +| Patterns.cs:81:13:81:20 | ... => ... | Patterns.cs:81:13:81:13 | _ | +| Patterns.cs:81:13:81:20 | After ... => ... [match] | Patterns.cs:81:18:81:20 | "0" | +| Patterns.cs:85:26:85:27 | Entry | Patterns.cs:85:33:85:33 | i | +| Patterns.cs:85:26:85:27 | Normal Exit | Patterns.cs:85:26:85:27 | Exit | +| Patterns.cs:85:33:85:33 | i | Patterns.cs:85:39:85:69 | ... ? ... : ... | +| Patterns.cs:85:39:85:39 | access to parameter i | Patterns.cs:85:39:85:53 | ... is ... | +| Patterns.cs:85:39:85:53 | ... is ... | Patterns.cs:85:39:85:53 | After ... is ... [false] | +| Patterns.cs:85:39:85:53 | ... is ... | Patterns.cs:85:39:85:53 | [MatchTrue] ... is ... | +| Patterns.cs:85:39:85:53 | After ... is ... [false] | Patterns.cs:85:67:85:69 | "2" | +| Patterns.cs:85:39:85:53 | After ... is ... [true] | Patterns.cs:85:57:85:63 | "not 2" | +| Patterns.cs:85:39:85:53 | Before ... is ... | Patterns.cs:85:39:85:39 | access to parameter i | +| Patterns.cs:85:39:85:53 | [MatchTrue] ... is ... | Patterns.cs:85:44:85:53 | Before ... or ... | +| Patterns.cs:85:39:85:69 | ... ? ... : ... | Patterns.cs:85:39:85:53 | Before ... is ... | +| Patterns.cs:85:39:85:69 | After ... ? ... : ... | Patterns.cs:85:26:85:27 | Normal Exit | +| Patterns.cs:85:44:85:44 | 1 | Patterns.cs:85:49:85:53 | Before not ... | +| Patterns.cs:85:44:85:53 | ... or ... | Patterns.cs:85:44:85:53 | After ... or ... | +| Patterns.cs:85:44:85:53 | After ... or ... | Patterns.cs:85:39:85:53 | After ... is ... [true] | +| Patterns.cs:85:44:85:53 | Before ... or ... | Patterns.cs:85:44:85:44 | 1 | +| Patterns.cs:85:49:85:53 | After not ... | Patterns.cs:85:44:85:53 | ... or ... | +| Patterns.cs:85:49:85:53 | Before not ... | Patterns.cs:85:53:85:53 | 2 | +| Patterns.cs:85:49:85:53 | not ... | Patterns.cs:85:49:85:53 | After not ... | +| Patterns.cs:85:53:85:53 | 2 | Patterns.cs:85:49:85:53 | not ... | +| Patterns.cs:87:26:87:27 | Entry | Patterns.cs:87:33:87:33 | i | +| Patterns.cs:87:26:87:27 | Normal Exit | Patterns.cs:87:26:87:27 | Exit | +| Patterns.cs:87:33:87:33 | i | Patterns.cs:87:39:87:70 | ... ? ... : ... | +| Patterns.cs:87:39:87:39 | access to parameter i | Patterns.cs:87:39:87:54 | ... is ... | +| Patterns.cs:87:39:87:54 | ... is ... | Patterns.cs:87:39:87:54 | After ... is ... [false] | +| Patterns.cs:87:39:87:54 | ... is ... | Patterns.cs:87:39:87:54 | [MatchTrue] ... is ... | +| Patterns.cs:87:39:87:54 | After ... is ... [false] | Patterns.cs:87:64:87:70 | "not 1" | +| Patterns.cs:87:39:87:54 | After ... is ... [true] | Patterns.cs:87:58:87:60 | "1" | +| Patterns.cs:87:39:87:54 | Before ... is ... | Patterns.cs:87:39:87:39 | access to parameter i | +| Patterns.cs:87:39:87:54 | [MatchTrue] ... is ... | Patterns.cs:87:44:87:54 | Before ... and ... | +| Patterns.cs:87:39:87:70 | ... ? ... : ... | Patterns.cs:87:39:87:54 | Before ... is ... | +| Patterns.cs:87:39:87:70 | After ... ? ... : ... | Patterns.cs:87:26:87:27 | Normal Exit | +| Patterns.cs:87:44:87:44 | 1 | Patterns.cs:87:50:87:54 | Before not ... | +| Patterns.cs:87:44:87:54 | ... and ... | Patterns.cs:87:44:87:54 | After ... and ... | +| Patterns.cs:87:44:87:54 | After ... and ... | Patterns.cs:87:39:87:54 | After ... is ... [true] | +| Patterns.cs:87:44:87:54 | Before ... and ... | Patterns.cs:87:44:87:44 | 1 | +| Patterns.cs:87:50:87:54 | After not ... | Patterns.cs:87:44:87:54 | ... and ... | +| Patterns.cs:87:50:87:54 | Before not ... | Patterns.cs:87:54:87:54 | 2 | +| Patterns.cs:87:50:87:54 | not ... | Patterns.cs:87:50:87:54 | After not ... | +| Patterns.cs:87:54:87:54 | 2 | Patterns.cs:87:50:87:54 | not ... | +| Patterns.cs:93:17:93:19 | Entry | Patterns.cs:94:5:99:5 | {...} | +| Patterns.cs:93:17:93:19 | Normal Exit | Patterns.cs:93:17:93:19 | Exit | +| Patterns.cs:94:5:99:5 | After {...} | Patterns.cs:93:17:93:19 | Normal Exit | | Patterns.cs:94:5:99:5 | {...} | Patterns.cs:95:9:98:9 | if (...) ... | -| Patterns.cs:95:9:98:9 | if (...) ... | Patterns.cs:95:13:95:16 | this access | -| Patterns.cs:95:13:95:16 | this access | Patterns.cs:95:29:95:31 | access to constant A | -| Patterns.cs:95:13:95:40 | [true] ... is ... | Patterns.cs:96:9:98:9 | {...} | -| Patterns.cs:95:21:95:40 | [match] { ... } | Patterns.cs:95:13:95:40 | [true] ... is ... | -| Patterns.cs:95:21:95:40 | [match] { ... } | Patterns.cs:95:21:95:40 | [match] { ... } | -| Patterns.cs:95:21:95:40 | [no-match] { ... } | Patterns.cs:95:13:95:40 | [false] ... is ... | -| Patterns.cs:95:21:95:40 | [no-match] { ... } | Patterns.cs:95:21:95:40 | [no-match] { ... } | -| Patterns.cs:95:29:95:31 | access to constant A | Patterns.cs:95:29:95:38 | [match] ... or ... | +| Patterns.cs:95:9:98:9 | After if (...) ... | Patterns.cs:94:5:99:5 | After {...} | +| Patterns.cs:95:9:98:9 | if (...) ... | Patterns.cs:95:13:95:40 | Before ... is ... | +| Patterns.cs:95:13:95:16 | this access | Patterns.cs:95:13:95:40 | ... is ... | +| Patterns.cs:95:13:95:40 | ... is ... | Patterns.cs:95:13:95:40 | After ... is ... [false] | +| Patterns.cs:95:13:95:40 | ... is ... | Patterns.cs:95:13:95:40 | [MatchTrue] ... is ... | +| Patterns.cs:95:13:95:40 | After ... is ... [true] | Patterns.cs:96:9:98:9 | {...} | +| Patterns.cs:95:13:95:40 | Before ... is ... | Patterns.cs:95:13:95:16 | this access | +| Patterns.cs:95:13:95:40 | [MatchTrue] ... is ... | Patterns.cs:95:21:95:40 | Before { ... } | +| Patterns.cs:95:21:95:40 | After { ... } | Patterns.cs:95:13:95:40 | After ... is ... [true] | +| Patterns.cs:95:21:95:40 | After { ... } | Patterns.cs:95:21:95:40 | { ... } | +| Patterns.cs:95:21:95:40 | Before { ... } | Patterns.cs:95:21:95:40 | Before { ... } | +| Patterns.cs:95:21:95:40 | Before { ... } | Patterns.cs:95:29:95:38 | Before ... or ... | +| Patterns.cs:95:21:95:40 | { ... } | Patterns.cs:95:21:95:40 | After { ... } | +| Patterns.cs:95:21:95:40 | { ... } | Patterns.cs:95:21:95:40 | After { ... } | | Patterns.cs:95:29:95:31 | access to constant A | Patterns.cs:95:36:95:38 | access to constant B | -| Patterns.cs:95:29:95:38 | [match] ... or ... | Patterns.cs:95:21:95:40 | [match] { ... } | -| Patterns.cs:95:29:95:38 | [no-match] ... or ... | Patterns.cs:95:21:95:40 | [no-match] { ... } | -| Patterns.cs:95:36:95:38 | access to constant B | Patterns.cs:95:29:95:38 | [no-match] ... or ... | +| Patterns.cs:95:29:95:38 | ... or ... | Patterns.cs:95:29:95:38 | After ... or ... | +| Patterns.cs:95:29:95:38 | After ... or ... | Patterns.cs:95:21:95:40 | { ... } | +| Patterns.cs:95:29:95:38 | Before ... or ... | Patterns.cs:95:29:95:31 | access to constant A | +| Patterns.cs:95:36:95:38 | access to constant B | Patterns.cs:95:29:95:38 | ... or ... | | Patterns.cs:96:9:98:9 | {...} | Patterns.cs:97:13:97:39 | ...; | -| Patterns.cs:97:13:97:39 | ...; | Patterns.cs:97:31:97:37 | "not C" | +| Patterns.cs:97:13:97:38 | After call to method WriteLine | Patterns.cs:97:13:97:39 | After ...; | +| Patterns.cs:97:13:97:38 | Before call to method WriteLine | Patterns.cs:97:31:97:37 | "not C" | +| Patterns.cs:97:13:97:38 | call to method WriteLine | Patterns.cs:97:13:97:38 | After call to method WriteLine | +| Patterns.cs:97:13:97:39 | ...; | Patterns.cs:97:13:97:38 | Before call to method WriteLine | +| Patterns.cs:97:13:97:39 | After ...; | Patterns.cs:96:9:98:9 | After {...} | | Patterns.cs:97:31:97:37 | "not C" | Patterns.cs:97:13:97:38 | call to method WriteLine | -| PostDominance.cs:3:7:3:19 | call to constructor Object | PostDominance.cs:3:7:3:19 | {...} | -| PostDominance.cs:3:7:3:19 | call to method | PostDominance.cs:3:7:3:19 | call to constructor Object | -| PostDominance.cs:3:7:3:19 | enter PostDominance | PostDominance.cs:3:7:3:19 | this access | -| PostDominance.cs:3:7:3:19 | exit PostDominance (normal) | PostDominance.cs:3:7:3:19 | exit PostDominance | +| PostDominance.cs:3:7:3:19 | After call to constructor Object | PostDominance.cs:3:7:3:19 | {...} | +| PostDominance.cs:3:7:3:19 | After call to method | PostDominance.cs:3:7:3:19 | Before call to constructor Object | +| PostDominance.cs:3:7:3:19 | Before call to constructor Object | PostDominance.cs:3:7:3:19 | call to constructor Object | +| PostDominance.cs:3:7:3:19 | Before call to method | PostDominance.cs:3:7:3:19 | this access | +| PostDominance.cs:3:7:3:19 | Entry | PostDominance.cs:3:7:3:19 | Before call to method | +| PostDominance.cs:3:7:3:19 | Normal Exit | PostDominance.cs:3:7:3:19 | Exit | +| PostDominance.cs:3:7:3:19 | call to constructor Object | PostDominance.cs:3:7:3:19 | After call to constructor Object | +| PostDominance.cs:3:7:3:19 | call to method | PostDominance.cs:3:7:3:19 | After call to method | | PostDominance.cs:3:7:3:19 | this access | PostDominance.cs:3:7:3:19 | call to method | -| PostDominance.cs:3:7:3:19 | {...} | PostDominance.cs:3:7:3:19 | exit PostDominance (normal) | -| PostDominance.cs:5:10:5:11 | enter M1 | PostDominance.cs:6:5:8:5 | {...} | -| PostDominance.cs:5:10:5:11 | exit M1 (normal) | PostDominance.cs:5:10:5:11 | exit M1 | +| PostDominance.cs:3:7:3:19 | {...} | PostDominance.cs:3:7:3:19 | Normal Exit | +| PostDominance.cs:5:10:5:11 | Entry | PostDominance.cs:5:20:5:20 | s | +| PostDominance.cs:5:10:5:11 | Normal Exit | PostDominance.cs:5:10:5:11 | Exit | +| PostDominance.cs:5:20:5:20 | s | PostDominance.cs:6:5:8:5 | {...} | +| PostDominance.cs:6:5:8:5 | After {...} | PostDominance.cs:5:10:5:11 | Normal Exit | | PostDominance.cs:6:5:8:5 | {...} | PostDominance.cs:7:9:7:29 | ...; | -| PostDominance.cs:7:9:7:28 | call to method WriteLine | PostDominance.cs:5:10:5:11 | exit M1 (normal) | -| PostDominance.cs:7:9:7:29 | ...; | PostDominance.cs:7:27:7:27 | access to parameter s | +| PostDominance.cs:7:9:7:28 | After call to method WriteLine | PostDominance.cs:7:9:7:29 | After ...; | +| PostDominance.cs:7:9:7:28 | Before call to method WriteLine | PostDominance.cs:7:27:7:27 | access to parameter s | +| PostDominance.cs:7:9:7:28 | call to method WriteLine | PostDominance.cs:7:9:7:28 | After call to method WriteLine | +| PostDominance.cs:7:9:7:29 | ...; | PostDominance.cs:7:9:7:28 | Before call to method WriteLine | +| PostDominance.cs:7:9:7:29 | After ...; | PostDominance.cs:6:5:8:5 | After {...} | | PostDominance.cs:7:27:7:27 | access to parameter s | PostDominance.cs:7:9:7:28 | call to method WriteLine | -| PostDominance.cs:10:10:10:11 | enter M2 | PostDominance.cs:11:5:15:5 | {...} | -| PostDominance.cs:10:10:10:11 | exit M2 (normal) | PostDominance.cs:10:10:10:11 | exit M2 | +| PostDominance.cs:10:10:10:11 | Entry | PostDominance.cs:10:20:10:20 | s | +| PostDominance.cs:10:10:10:11 | Normal Exit | PostDominance.cs:10:10:10:11 | Exit | +| PostDominance.cs:10:20:10:20 | s | PostDominance.cs:11:5:15:5 | {...} | | PostDominance.cs:11:5:15:5 | {...} | PostDominance.cs:12:9:13:19 | if (...) ... | -| PostDominance.cs:12:9:13:19 | if (...) ... | PostDominance.cs:12:13:12:13 | access to parameter s | -| PostDominance.cs:12:13:12:13 | access to parameter s | PostDominance.cs:12:18:12:21 | null | -| PostDominance.cs:12:13:12:21 | [false] ... is ... | PostDominance.cs:14:9:14:29 | ...; | -| PostDominance.cs:12:13:12:21 | [true] ... is ... | PostDominance.cs:13:13:13:19 | return ...; | -| PostDominance.cs:12:18:12:21 | null | PostDominance.cs:12:13:12:21 | [false] ... is ... | -| PostDominance.cs:12:18:12:21 | null | PostDominance.cs:12:13:12:21 | [true] ... is ... | -| PostDominance.cs:14:9:14:29 | ...; | PostDominance.cs:14:27:14:27 | access to parameter s | +| PostDominance.cs:12:9:13:19 | After if (...) ... | PostDominance.cs:14:9:14:29 | ...; | +| PostDominance.cs:12:9:13:19 | if (...) ... | PostDominance.cs:12:13:12:21 | Before ... is ... | +| PostDominance.cs:12:13:12:13 | access to parameter s | PostDominance.cs:12:13:12:21 | ... is ... | +| PostDominance.cs:12:13:12:21 | ... is ... | PostDominance.cs:12:13:12:21 | After ... is ... [false] | +| PostDominance.cs:12:13:12:21 | ... is ... | PostDominance.cs:12:13:12:21 | [MatchTrue] ... is ... | +| PostDominance.cs:12:13:12:21 | After ... is ... [false] | PostDominance.cs:12:9:13:19 | After if (...) ... | +| PostDominance.cs:12:13:12:21 | After ... is ... [true] | PostDominance.cs:13:13:13:19 | Before return ...; | +| PostDominance.cs:12:13:12:21 | Before ... is ... | PostDominance.cs:12:13:12:13 | access to parameter s | +| PostDominance.cs:12:13:12:21 | [MatchTrue] ... is ... | PostDominance.cs:12:18:12:21 | null | +| PostDominance.cs:12:18:12:21 | null | PostDominance.cs:12:13:12:21 | After ... is ... [true] | +| PostDominance.cs:13:13:13:19 | Before return ...; | PostDominance.cs:13:13:13:19 | return ...; | +| PostDominance.cs:14:9:14:28 | After call to method WriteLine | PostDominance.cs:14:9:14:29 | After ...; | +| PostDominance.cs:14:9:14:28 | Before call to method WriteLine | PostDominance.cs:14:27:14:27 | access to parameter s | +| PostDominance.cs:14:9:14:28 | call to method WriteLine | PostDominance.cs:14:9:14:28 | After call to method WriteLine | +| PostDominance.cs:14:9:14:29 | ...; | PostDominance.cs:14:9:14:28 | Before call to method WriteLine | +| PostDominance.cs:14:9:14:29 | After ...; | PostDominance.cs:11:5:15:5 | After {...} | | PostDominance.cs:14:27:14:27 | access to parameter s | PostDominance.cs:14:9:14:28 | call to method WriteLine | -| PostDominance.cs:17:10:17:11 | enter M3 | PostDominance.cs:18:5:22:5 | {...} | +| PostDominance.cs:17:10:17:11 | Entry | PostDominance.cs:17:20:17:20 | s | +| PostDominance.cs:17:20:17:20 | s | PostDominance.cs:18:5:22:5 | {...} | +| PostDominance.cs:18:5:22:5 | After {...} | PostDominance.cs:17:10:17:11 | Normal Exit | | PostDominance.cs:18:5:22:5 | {...} | PostDominance.cs:19:9:20:55 | if (...) ... | -| PostDominance.cs:19:9:20:55 | if (...) ... | PostDominance.cs:19:13:19:13 | access to parameter s | -| PostDominance.cs:19:13:19:13 | access to parameter s | PostDominance.cs:19:18:19:21 | null | -| PostDominance.cs:19:13:19:21 | [false] ... is ... | PostDominance.cs:21:9:21:29 | ...; | -| PostDominance.cs:19:13:19:21 | [true] ... is ... | PostDominance.cs:20:45:20:53 | nameof(...) | -| PostDominance.cs:19:18:19:21 | null | PostDominance.cs:19:13:19:21 | [false] ... is ... | -| PostDominance.cs:19:18:19:21 | null | PostDominance.cs:19:13:19:21 | [true] ... is ... | -| PostDominance.cs:20:13:20:55 | throw ...; | PostDominance.cs:17:10:17:11 | exit M3 (abnormal) | -| PostDominance.cs:20:19:20:54 | object creation of type ArgumentNullException | PostDominance.cs:20:13:20:55 | throw ...; | +| PostDominance.cs:19:9:20:55 | After if (...) ... | PostDominance.cs:21:9:21:29 | ...; | +| PostDominance.cs:19:9:20:55 | if (...) ... | PostDominance.cs:19:13:19:21 | Before ... is ... | +| PostDominance.cs:19:13:19:13 | access to parameter s | PostDominance.cs:19:13:19:21 | ... is ... | +| PostDominance.cs:19:13:19:21 | ... is ... | PostDominance.cs:19:13:19:21 | After ... is ... [false] | +| PostDominance.cs:19:13:19:21 | ... is ... | PostDominance.cs:19:13:19:21 | [MatchTrue] ... is ... | +| PostDominance.cs:19:13:19:21 | After ... is ... [false] | PostDominance.cs:19:9:20:55 | After if (...) ... | +| PostDominance.cs:19:13:19:21 | After ... is ... [true] | PostDominance.cs:20:13:20:55 | Before throw ...; | +| PostDominance.cs:19:13:19:21 | Before ... is ... | PostDominance.cs:19:13:19:13 | access to parameter s | +| PostDominance.cs:19:13:19:21 | [MatchTrue] ... is ... | PostDominance.cs:19:18:19:21 | null | +| PostDominance.cs:19:18:19:21 | null | PostDominance.cs:19:13:19:21 | After ... is ... [true] | +| PostDominance.cs:20:13:20:55 | Before throw ...; | PostDominance.cs:20:19:20:54 | Before object creation of type ArgumentNullException | +| PostDominance.cs:20:13:20:55 | throw ...; | PostDominance.cs:17:10:17:11 | Exceptional Exit | +| PostDominance.cs:20:19:20:54 | After object creation of type ArgumentNullException | PostDominance.cs:20:13:20:55 | throw ...; | +| PostDominance.cs:20:19:20:54 | Before object creation of type ArgumentNullException | PostDominance.cs:20:45:20:53 | nameof(...) | +| PostDominance.cs:20:19:20:54 | object creation of type ArgumentNullException | PostDominance.cs:20:19:20:54 | After object creation of type ArgumentNullException | | PostDominance.cs:20:45:20:53 | nameof(...) | PostDominance.cs:20:19:20:54 | object creation of type ArgumentNullException | -| PostDominance.cs:21:9:21:28 | call to method WriteLine | PostDominance.cs:17:10:17:11 | exit M3 (normal) | -| PostDominance.cs:21:9:21:29 | ...; | PostDominance.cs:21:27:21:27 | access to parameter s | +| PostDominance.cs:21:9:21:28 | After call to method WriteLine | PostDominance.cs:21:9:21:29 | After ...; | +| PostDominance.cs:21:9:21:28 | Before call to method WriteLine | PostDominance.cs:21:27:21:27 | access to parameter s | +| PostDominance.cs:21:9:21:28 | call to method WriteLine | PostDominance.cs:21:9:21:28 | After call to method WriteLine | +| PostDominance.cs:21:9:21:29 | ...; | PostDominance.cs:21:9:21:28 | Before call to method WriteLine | +| PostDominance.cs:21:9:21:29 | After ...; | PostDominance.cs:18:5:22:5 | After {...} | | PostDominance.cs:21:27:21:27 | access to parameter s | PostDominance.cs:21:9:21:28 | call to method WriteLine | -| Qualifiers.cs:1:7:1:16 | call to constructor Object | Qualifiers.cs:1:7:1:16 | {...} | -| Qualifiers.cs:1:7:1:16 | call to method | Qualifiers.cs:1:7:1:16 | call to constructor Object | -| Qualifiers.cs:1:7:1:16 | enter Qualifiers | Qualifiers.cs:1:7:1:16 | this access | -| Qualifiers.cs:1:7:1:16 | exit Qualifiers (normal) | Qualifiers.cs:1:7:1:16 | exit Qualifiers | +| Qualifiers.cs:1:7:1:16 | After call to constructor Object | Qualifiers.cs:1:7:1:16 | {...} | +| Qualifiers.cs:1:7:1:16 | After call to method | Qualifiers.cs:1:7:1:16 | Before call to constructor Object | +| Qualifiers.cs:1:7:1:16 | Before call to constructor Object | Qualifiers.cs:1:7:1:16 | call to constructor Object | +| Qualifiers.cs:1:7:1:16 | Before call to method | Qualifiers.cs:1:7:1:16 | this access | +| Qualifiers.cs:1:7:1:16 | Entry | Qualifiers.cs:1:7:1:16 | Before call to method | +| Qualifiers.cs:1:7:1:16 | Normal Exit | Qualifiers.cs:1:7:1:16 | Exit | +| Qualifiers.cs:1:7:1:16 | call to constructor Object | Qualifiers.cs:1:7:1:16 | After call to constructor Object | +| Qualifiers.cs:1:7:1:16 | call to method | Qualifiers.cs:1:7:1:16 | After call to method | | Qualifiers.cs:1:7:1:16 | this access | Qualifiers.cs:1:7:1:16 | call to method | -| Qualifiers.cs:1:7:1:16 | {...} | Qualifiers.cs:1:7:1:16 | exit Qualifiers (normal) | -| Qualifiers.cs:7:16:7:21 | enter Method | Qualifiers.cs:7:28:7:31 | null | -| Qualifiers.cs:7:16:7:21 | exit Method (normal) | Qualifiers.cs:7:16:7:21 | exit Method | -| Qualifiers.cs:7:28:7:31 | null | Qualifiers.cs:7:16:7:21 | exit Method (normal) | -| Qualifiers.cs:8:23:8:34 | enter StaticMethod | Qualifiers.cs:8:41:8:44 | null | -| Qualifiers.cs:8:23:8:34 | exit StaticMethod (normal) | Qualifiers.cs:8:23:8:34 | exit StaticMethod | -| Qualifiers.cs:8:41:8:44 | null | Qualifiers.cs:8:23:8:34 | exit StaticMethod (normal) | -| Qualifiers.cs:10:10:10:10 | enter M | Qualifiers.cs:11:5:31:5 | {...} | -| Qualifiers.cs:10:10:10:10 | exit M (normal) | Qualifiers.cs:10:10:10:10 | exit M | +| Qualifiers.cs:1:7:1:16 | {...} | Qualifiers.cs:1:7:1:16 | Normal Exit | +| Qualifiers.cs:7:16:7:21 | Entry | Qualifiers.cs:7:28:7:31 | null | +| Qualifiers.cs:7:16:7:21 | Normal Exit | Qualifiers.cs:7:16:7:21 | Exit | +| Qualifiers.cs:7:28:7:31 | null | Qualifiers.cs:7:16:7:21 | Normal Exit | +| Qualifiers.cs:8:23:8:34 | Entry | Qualifiers.cs:8:41:8:44 | null | +| Qualifiers.cs:8:23:8:34 | Normal Exit | Qualifiers.cs:8:23:8:34 | Exit | +| Qualifiers.cs:8:41:8:44 | null | Qualifiers.cs:8:23:8:34 | Normal Exit | +| Qualifiers.cs:10:10:10:10 | Entry | Qualifiers.cs:11:5:31:5 | {...} | +| Qualifiers.cs:10:10:10:10 | Normal Exit | Qualifiers.cs:10:10:10:10 | Exit | +| Qualifiers.cs:11:5:31:5 | After {...} | Qualifiers.cs:10:10:10:10 | Normal Exit | | Qualifiers.cs:11:5:31:5 | {...} | Qualifiers.cs:12:9:12:22 | ... ...; | -| Qualifiers.cs:12:9:12:22 | ... ...; | Qualifiers.cs:12:17:12:21 | this access | -| Qualifiers.cs:12:13:12:21 | Qualifiers q = ... | Qualifiers.cs:13:9:13:21 | ...; | -| Qualifiers.cs:12:17:12:21 | access to field Field | Qualifiers.cs:12:13:12:21 | Qualifiers q = ... | +| Qualifiers.cs:12:9:12:22 | ... ...; | Qualifiers.cs:12:13:12:21 | Before Qualifiers q = ... | +| Qualifiers.cs:12:9:12:22 | After ... ...; | Qualifiers.cs:13:9:13:21 | ...; | +| Qualifiers.cs:12:13:12:13 | access to local variable q | Qualifiers.cs:12:17:12:21 | Before access to field Field | +| Qualifiers.cs:12:13:12:21 | After Qualifiers q = ... | Qualifiers.cs:12:9:12:22 | After ... ...; | +| Qualifiers.cs:12:13:12:21 | Before Qualifiers q = ... | Qualifiers.cs:12:13:12:13 | access to local variable q | +| Qualifiers.cs:12:13:12:21 | Qualifiers q = ... | Qualifiers.cs:12:13:12:21 | After Qualifiers q = ... | +| Qualifiers.cs:12:17:12:21 | After access to field Field | Qualifiers.cs:12:13:12:21 | Qualifiers q = ... | +| Qualifiers.cs:12:17:12:21 | Before access to field Field | Qualifiers.cs:12:17:12:21 | this access | +| Qualifiers.cs:12:17:12:21 | access to field Field | Qualifiers.cs:12:17:12:21 | After access to field Field | | Qualifiers.cs:12:17:12:21 | this access | Qualifiers.cs:12:17:12:21 | access to field Field | -| Qualifiers.cs:13:9:13:20 | ... = ... | Qualifiers.cs:14:9:14:21 | ...; | -| Qualifiers.cs:13:9:13:21 | ...; | Qualifiers.cs:13:13:13:20 | this access | -| Qualifiers.cs:13:13:13:20 | access to property Property | Qualifiers.cs:13:9:13:20 | ... = ... | +| Qualifiers.cs:13:9:13:9 | access to local variable q | Qualifiers.cs:13:13:13:20 | Before access to property Property | +| Qualifiers.cs:13:9:13:20 | ... = ... | Qualifiers.cs:13:9:13:20 | After ... = ... | +| Qualifiers.cs:13:9:13:20 | After ... = ... | Qualifiers.cs:13:9:13:21 | After ...; | +| Qualifiers.cs:13:9:13:20 | Before ... = ... | Qualifiers.cs:13:9:13:9 | access to local variable q | +| Qualifiers.cs:13:9:13:21 | ...; | Qualifiers.cs:13:9:13:20 | Before ... = ... | +| Qualifiers.cs:13:9:13:21 | After ...; | Qualifiers.cs:14:9:14:21 | ...; | +| Qualifiers.cs:13:13:13:20 | After access to property Property | Qualifiers.cs:13:9:13:20 | ... = ... | +| Qualifiers.cs:13:13:13:20 | Before access to property Property | Qualifiers.cs:13:13:13:20 | this access | +| Qualifiers.cs:13:13:13:20 | access to property Property | Qualifiers.cs:13:13:13:20 | After access to property Property | | Qualifiers.cs:13:13:13:20 | this access | Qualifiers.cs:13:13:13:20 | access to property Property | -| Qualifiers.cs:14:9:14:20 | ... = ... | Qualifiers.cs:16:9:16:23 | ...; | -| Qualifiers.cs:14:9:14:21 | ...; | Qualifiers.cs:14:13:14:20 | this access | -| Qualifiers.cs:14:13:14:20 | call to method Method | Qualifiers.cs:14:9:14:20 | ... = ... | +| Qualifiers.cs:14:9:14:9 | access to local variable q | Qualifiers.cs:14:13:14:20 | Before call to method Method | +| Qualifiers.cs:14:9:14:20 | ... = ... | Qualifiers.cs:14:9:14:20 | After ... = ... | +| Qualifiers.cs:14:9:14:20 | After ... = ... | Qualifiers.cs:14:9:14:21 | After ...; | +| Qualifiers.cs:14:9:14:20 | Before ... = ... | Qualifiers.cs:14:9:14:9 | access to local variable q | +| Qualifiers.cs:14:9:14:21 | ...; | Qualifiers.cs:14:9:14:20 | Before ... = ... | +| Qualifiers.cs:14:9:14:21 | After ...; | Qualifiers.cs:16:9:16:23 | ...; | +| Qualifiers.cs:14:13:14:20 | After call to method Method | Qualifiers.cs:14:9:14:20 | ... = ... | +| Qualifiers.cs:14:13:14:20 | Before call to method Method | Qualifiers.cs:14:13:14:20 | this access | +| Qualifiers.cs:14:13:14:20 | call to method Method | Qualifiers.cs:14:13:14:20 | After call to method Method | | Qualifiers.cs:14:13:14:20 | this access | Qualifiers.cs:14:13:14:20 | call to method Method | -| Qualifiers.cs:16:9:16:22 | ... = ... | Qualifiers.cs:17:9:17:26 | ...; | -| Qualifiers.cs:16:9:16:23 | ...; | Qualifiers.cs:16:13:16:16 | this access | +| Qualifiers.cs:16:9:16:9 | access to local variable q | Qualifiers.cs:16:13:16:22 | Before access to field Field | +| Qualifiers.cs:16:9:16:22 | ... = ... | Qualifiers.cs:16:9:16:22 | After ... = ... | +| Qualifiers.cs:16:9:16:22 | After ... = ... | Qualifiers.cs:16:9:16:23 | After ...; | +| Qualifiers.cs:16:9:16:22 | Before ... = ... | Qualifiers.cs:16:9:16:9 | access to local variable q | +| Qualifiers.cs:16:9:16:23 | ...; | Qualifiers.cs:16:9:16:22 | Before ... = ... | +| Qualifiers.cs:16:9:16:23 | After ...; | Qualifiers.cs:17:9:17:26 | ...; | | Qualifiers.cs:16:13:16:16 | this access | Qualifiers.cs:16:13:16:22 | access to field Field | -| Qualifiers.cs:16:13:16:22 | access to field Field | Qualifiers.cs:16:9:16:22 | ... = ... | -| Qualifiers.cs:17:9:17:25 | ... = ... | Qualifiers.cs:18:9:18:26 | ...; | -| Qualifiers.cs:17:9:17:26 | ...; | Qualifiers.cs:17:13:17:16 | this access | +| Qualifiers.cs:16:13:16:22 | After access to field Field | Qualifiers.cs:16:9:16:22 | ... = ... | +| Qualifiers.cs:16:13:16:22 | Before access to field Field | Qualifiers.cs:16:13:16:16 | this access | +| Qualifiers.cs:16:13:16:22 | access to field Field | Qualifiers.cs:16:13:16:22 | After access to field Field | +| Qualifiers.cs:17:9:17:9 | access to local variable q | Qualifiers.cs:17:13:17:25 | Before access to property Property | +| Qualifiers.cs:17:9:17:25 | ... = ... | Qualifiers.cs:17:9:17:25 | After ... = ... | +| Qualifiers.cs:17:9:17:25 | After ... = ... | Qualifiers.cs:17:9:17:26 | After ...; | +| Qualifiers.cs:17:9:17:25 | Before ... = ... | Qualifiers.cs:17:9:17:9 | access to local variable q | +| Qualifiers.cs:17:9:17:26 | ...; | Qualifiers.cs:17:9:17:25 | Before ... = ... | +| Qualifiers.cs:17:9:17:26 | After ...; | Qualifiers.cs:18:9:18:26 | ...; | | Qualifiers.cs:17:13:17:16 | this access | Qualifiers.cs:17:13:17:25 | access to property Property | -| Qualifiers.cs:17:13:17:25 | access to property Property | Qualifiers.cs:17:9:17:25 | ... = ... | -| Qualifiers.cs:18:9:18:25 | ... = ... | Qualifiers.cs:20:9:20:24 | ...; | -| Qualifiers.cs:18:9:18:26 | ...; | Qualifiers.cs:18:13:18:16 | this access | +| Qualifiers.cs:17:13:17:25 | After access to property Property | Qualifiers.cs:17:9:17:25 | ... = ... | +| Qualifiers.cs:17:13:17:25 | Before access to property Property | Qualifiers.cs:17:13:17:16 | this access | +| Qualifiers.cs:17:13:17:25 | access to property Property | Qualifiers.cs:17:13:17:25 | After access to property Property | +| Qualifiers.cs:18:9:18:9 | access to local variable q | Qualifiers.cs:18:13:18:25 | Before call to method Method | +| Qualifiers.cs:18:9:18:25 | ... = ... | Qualifiers.cs:18:9:18:25 | After ... = ... | +| Qualifiers.cs:18:9:18:25 | After ... = ... | Qualifiers.cs:18:9:18:26 | After ...; | +| Qualifiers.cs:18:9:18:25 | Before ... = ... | Qualifiers.cs:18:9:18:9 | access to local variable q | +| Qualifiers.cs:18:9:18:26 | ...; | Qualifiers.cs:18:9:18:25 | Before ... = ... | +| Qualifiers.cs:18:9:18:26 | After ...; | Qualifiers.cs:20:9:20:24 | ...; | | Qualifiers.cs:18:13:18:16 | this access | Qualifiers.cs:18:13:18:25 | call to method Method | -| Qualifiers.cs:18:13:18:25 | call to method Method | Qualifiers.cs:18:9:18:25 | ... = ... | -| Qualifiers.cs:20:9:20:23 | ... = ... | Qualifiers.cs:21:9:21:27 | ...; | -| Qualifiers.cs:20:9:20:24 | ...; | Qualifiers.cs:20:13:20:23 | access to field StaticField | +| Qualifiers.cs:18:13:18:25 | After call to method Method | Qualifiers.cs:18:9:18:25 | ... = ... | +| Qualifiers.cs:18:13:18:25 | Before call to method Method | Qualifiers.cs:18:13:18:16 | this access | +| Qualifiers.cs:18:13:18:25 | call to method Method | Qualifiers.cs:18:13:18:25 | After call to method Method | +| Qualifiers.cs:20:9:20:9 | access to local variable q | Qualifiers.cs:20:13:20:23 | access to field StaticField | +| Qualifiers.cs:20:9:20:23 | ... = ... | Qualifiers.cs:20:9:20:23 | After ... = ... | +| Qualifiers.cs:20:9:20:23 | After ... = ... | Qualifiers.cs:20:9:20:24 | After ...; | +| Qualifiers.cs:20:9:20:23 | Before ... = ... | Qualifiers.cs:20:9:20:9 | access to local variable q | +| Qualifiers.cs:20:9:20:24 | ...; | Qualifiers.cs:20:9:20:23 | Before ... = ... | +| Qualifiers.cs:20:9:20:24 | After ...; | Qualifiers.cs:21:9:21:27 | ...; | | Qualifiers.cs:20:13:20:23 | access to field StaticField | Qualifiers.cs:20:9:20:23 | ... = ... | -| Qualifiers.cs:21:9:21:26 | ... = ... | Qualifiers.cs:22:9:22:27 | ...; | -| Qualifiers.cs:21:9:21:27 | ...; | Qualifiers.cs:21:13:21:26 | access to property StaticProperty | -| Qualifiers.cs:21:13:21:26 | access to property StaticProperty | Qualifiers.cs:21:9:21:26 | ... = ... | -| Qualifiers.cs:22:9:22:26 | ... = ... | Qualifiers.cs:24:9:24:35 | ...; | -| Qualifiers.cs:22:9:22:27 | ...; | Qualifiers.cs:22:13:22:26 | call to method StaticMethod | -| Qualifiers.cs:22:13:22:26 | call to method StaticMethod | Qualifiers.cs:22:9:22:26 | ... = ... | -| Qualifiers.cs:24:9:24:34 | ... = ... | Qualifiers.cs:25:9:25:38 | ...; | -| Qualifiers.cs:24:9:24:35 | ...; | Qualifiers.cs:24:13:24:34 | access to field StaticField | +| Qualifiers.cs:21:9:21:9 | access to local variable q | Qualifiers.cs:21:13:21:26 | Before access to property StaticProperty | +| Qualifiers.cs:21:9:21:26 | ... = ... | Qualifiers.cs:21:9:21:26 | After ... = ... | +| Qualifiers.cs:21:9:21:26 | After ... = ... | Qualifiers.cs:21:9:21:27 | After ...; | +| Qualifiers.cs:21:9:21:26 | Before ... = ... | Qualifiers.cs:21:9:21:9 | access to local variable q | +| Qualifiers.cs:21:9:21:27 | ...; | Qualifiers.cs:21:9:21:26 | Before ... = ... | +| Qualifiers.cs:21:9:21:27 | After ...; | Qualifiers.cs:22:9:22:27 | ...; | +| Qualifiers.cs:21:13:21:26 | After access to property StaticProperty | Qualifiers.cs:21:9:21:26 | ... = ... | +| Qualifiers.cs:21:13:21:26 | Before access to property StaticProperty | Qualifiers.cs:21:13:21:26 | access to property StaticProperty | +| Qualifiers.cs:21:13:21:26 | access to property StaticProperty | Qualifiers.cs:21:13:21:26 | After access to property StaticProperty | +| Qualifiers.cs:22:9:22:9 | access to local variable q | Qualifiers.cs:22:13:22:26 | Before call to method StaticMethod | +| Qualifiers.cs:22:9:22:26 | ... = ... | Qualifiers.cs:22:9:22:26 | After ... = ... | +| Qualifiers.cs:22:9:22:26 | After ... = ... | Qualifiers.cs:22:9:22:27 | After ...; | +| Qualifiers.cs:22:9:22:26 | Before ... = ... | Qualifiers.cs:22:9:22:9 | access to local variable q | +| Qualifiers.cs:22:9:22:27 | ...; | Qualifiers.cs:22:9:22:26 | Before ... = ... | +| Qualifiers.cs:22:9:22:27 | After ...; | Qualifiers.cs:24:9:24:35 | ...; | +| Qualifiers.cs:22:13:22:26 | After call to method StaticMethod | Qualifiers.cs:22:9:22:26 | ... = ... | +| Qualifiers.cs:22:13:22:26 | Before call to method StaticMethod | Qualifiers.cs:22:13:22:26 | call to method StaticMethod | +| Qualifiers.cs:22:13:22:26 | call to method StaticMethod | Qualifiers.cs:22:13:22:26 | After call to method StaticMethod | +| Qualifiers.cs:24:9:24:9 | access to local variable q | Qualifiers.cs:24:13:24:34 | access to field StaticField | +| Qualifiers.cs:24:9:24:34 | ... = ... | Qualifiers.cs:24:9:24:34 | After ... = ... | +| Qualifiers.cs:24:9:24:34 | After ... = ... | Qualifiers.cs:24:9:24:35 | After ...; | +| Qualifiers.cs:24:9:24:34 | Before ... = ... | Qualifiers.cs:24:9:24:9 | access to local variable q | +| Qualifiers.cs:24:9:24:35 | ...; | Qualifiers.cs:24:9:24:34 | Before ... = ... | +| Qualifiers.cs:24:9:24:35 | After ...; | Qualifiers.cs:25:9:25:38 | ...; | | Qualifiers.cs:24:13:24:34 | access to field StaticField | Qualifiers.cs:24:9:24:34 | ... = ... | -| Qualifiers.cs:25:9:25:37 | ... = ... | Qualifiers.cs:26:9:26:38 | ...; | -| Qualifiers.cs:25:9:25:38 | ...; | Qualifiers.cs:25:13:25:37 | access to property StaticProperty | -| Qualifiers.cs:25:13:25:37 | access to property StaticProperty | Qualifiers.cs:25:9:25:37 | ... = ... | -| Qualifiers.cs:26:9:26:37 | ... = ... | Qualifiers.cs:28:9:28:41 | ...; | -| Qualifiers.cs:26:9:26:38 | ...; | Qualifiers.cs:26:13:26:37 | call to method StaticMethod | -| Qualifiers.cs:26:13:26:37 | call to method StaticMethod | Qualifiers.cs:26:9:26:37 | ... = ... | -| Qualifiers.cs:28:9:28:40 | ... = ... | Qualifiers.cs:29:9:29:47 | ...; | -| Qualifiers.cs:28:9:28:41 | ...; | Qualifiers.cs:28:13:28:34 | access to field StaticField | +| Qualifiers.cs:25:9:25:9 | access to local variable q | Qualifiers.cs:25:13:25:37 | Before access to property StaticProperty | +| Qualifiers.cs:25:9:25:37 | ... = ... | Qualifiers.cs:25:9:25:37 | After ... = ... | +| Qualifiers.cs:25:9:25:37 | After ... = ... | Qualifiers.cs:25:9:25:38 | After ...; | +| Qualifiers.cs:25:9:25:37 | Before ... = ... | Qualifiers.cs:25:9:25:9 | access to local variable q | +| Qualifiers.cs:25:9:25:38 | ...; | Qualifiers.cs:25:9:25:37 | Before ... = ... | +| Qualifiers.cs:25:9:25:38 | After ...; | Qualifiers.cs:26:9:26:38 | ...; | +| Qualifiers.cs:25:13:25:37 | After access to property StaticProperty | Qualifiers.cs:25:9:25:37 | ... = ... | +| Qualifiers.cs:25:13:25:37 | Before access to property StaticProperty | Qualifiers.cs:25:13:25:37 | access to property StaticProperty | +| Qualifiers.cs:25:13:25:37 | access to property StaticProperty | Qualifiers.cs:25:13:25:37 | After access to property StaticProperty | +| Qualifiers.cs:26:9:26:9 | access to local variable q | Qualifiers.cs:26:13:26:37 | Before call to method StaticMethod | +| Qualifiers.cs:26:9:26:37 | ... = ... | Qualifiers.cs:26:9:26:37 | After ... = ... | +| Qualifiers.cs:26:9:26:37 | After ... = ... | Qualifiers.cs:26:9:26:38 | After ...; | +| Qualifiers.cs:26:9:26:37 | Before ... = ... | Qualifiers.cs:26:9:26:9 | access to local variable q | +| Qualifiers.cs:26:9:26:38 | ...; | Qualifiers.cs:26:9:26:37 | Before ... = ... | +| Qualifiers.cs:26:9:26:38 | After ...; | Qualifiers.cs:28:9:28:41 | ...; | +| Qualifiers.cs:26:13:26:37 | After call to method StaticMethod | Qualifiers.cs:26:9:26:37 | ... = ... | +| Qualifiers.cs:26:13:26:37 | Before call to method StaticMethod | Qualifiers.cs:26:13:26:37 | call to method StaticMethod | +| Qualifiers.cs:26:13:26:37 | call to method StaticMethod | Qualifiers.cs:26:13:26:37 | After call to method StaticMethod | +| Qualifiers.cs:28:9:28:9 | access to local variable q | Qualifiers.cs:28:13:28:40 | Before access to field Field | +| Qualifiers.cs:28:9:28:40 | ... = ... | Qualifiers.cs:28:9:28:40 | After ... = ... | +| Qualifiers.cs:28:9:28:40 | After ... = ... | Qualifiers.cs:28:9:28:41 | After ...; | +| Qualifiers.cs:28:9:28:40 | Before ... = ... | Qualifiers.cs:28:9:28:9 | access to local variable q | +| Qualifiers.cs:28:9:28:41 | ...; | Qualifiers.cs:28:9:28:40 | Before ... = ... | +| Qualifiers.cs:28:9:28:41 | After ...; | Qualifiers.cs:29:9:29:47 | ...; | | Qualifiers.cs:28:13:28:34 | access to field StaticField | Qualifiers.cs:28:13:28:40 | access to field Field | -| Qualifiers.cs:28:13:28:40 | access to field Field | Qualifiers.cs:28:9:28:40 | ... = ... | -| Qualifiers.cs:29:9:29:46 | ... = ... | Qualifiers.cs:30:9:30:47 | ...; | -| Qualifiers.cs:29:9:29:47 | ...; | Qualifiers.cs:29:13:29:37 | access to property StaticProperty | -| Qualifiers.cs:29:13:29:37 | access to property StaticProperty | Qualifiers.cs:29:13:29:46 | access to property Property | -| Qualifiers.cs:29:13:29:46 | access to property Property | Qualifiers.cs:29:9:29:46 | ... = ... | -| Qualifiers.cs:30:9:30:46 | ... = ... | Qualifiers.cs:10:10:10:10 | exit M (normal) | -| Qualifiers.cs:30:9:30:47 | ...; | Qualifiers.cs:30:13:30:37 | call to method StaticMethod | -| Qualifiers.cs:30:13:30:37 | call to method StaticMethod | Qualifiers.cs:30:13:30:46 | call to method Method | -| Qualifiers.cs:30:13:30:46 | call to method Method | Qualifiers.cs:30:9:30:46 | ... = ... | -| Switch.cs:3:7:3:12 | call to constructor Object | Switch.cs:3:7:3:12 | {...} | -| Switch.cs:3:7:3:12 | call to method | Switch.cs:3:7:3:12 | call to constructor Object | -| Switch.cs:3:7:3:12 | enter Switch | Switch.cs:3:7:3:12 | this access | -| Switch.cs:3:7:3:12 | exit Switch (normal) | Switch.cs:3:7:3:12 | exit Switch | +| Qualifiers.cs:28:13:28:40 | After access to field Field | Qualifiers.cs:28:9:28:40 | ... = ... | +| Qualifiers.cs:28:13:28:40 | Before access to field Field | Qualifiers.cs:28:13:28:34 | access to field StaticField | +| Qualifiers.cs:28:13:28:40 | access to field Field | Qualifiers.cs:28:13:28:40 | After access to field Field | +| Qualifiers.cs:29:9:29:9 | access to local variable q | Qualifiers.cs:29:13:29:46 | Before access to property Property | +| Qualifiers.cs:29:9:29:46 | ... = ... | Qualifiers.cs:29:9:29:46 | After ... = ... | +| Qualifiers.cs:29:9:29:46 | After ... = ... | Qualifiers.cs:29:9:29:47 | After ...; | +| Qualifiers.cs:29:9:29:46 | Before ... = ... | Qualifiers.cs:29:9:29:9 | access to local variable q | +| Qualifiers.cs:29:9:29:47 | ...; | Qualifiers.cs:29:9:29:46 | Before ... = ... | +| Qualifiers.cs:29:9:29:47 | After ...; | Qualifiers.cs:30:9:30:47 | ...; | +| Qualifiers.cs:29:13:29:37 | After access to property StaticProperty | Qualifiers.cs:29:13:29:46 | access to property Property | +| Qualifiers.cs:29:13:29:37 | Before access to property StaticProperty | Qualifiers.cs:29:13:29:37 | access to property StaticProperty | +| Qualifiers.cs:29:13:29:37 | access to property StaticProperty | Qualifiers.cs:29:13:29:37 | After access to property StaticProperty | +| Qualifiers.cs:29:13:29:46 | After access to property Property | Qualifiers.cs:29:9:29:46 | ... = ... | +| Qualifiers.cs:29:13:29:46 | Before access to property Property | Qualifiers.cs:29:13:29:37 | Before access to property StaticProperty | +| Qualifiers.cs:29:13:29:46 | access to property Property | Qualifiers.cs:29:13:29:46 | After access to property Property | +| Qualifiers.cs:30:9:30:9 | access to local variable q | Qualifiers.cs:30:13:30:46 | Before call to method Method | +| Qualifiers.cs:30:9:30:46 | ... = ... | Qualifiers.cs:30:9:30:46 | After ... = ... | +| Qualifiers.cs:30:9:30:46 | After ... = ... | Qualifiers.cs:30:9:30:47 | After ...; | +| Qualifiers.cs:30:9:30:46 | Before ... = ... | Qualifiers.cs:30:9:30:9 | access to local variable q | +| Qualifiers.cs:30:9:30:47 | ...; | Qualifiers.cs:30:9:30:46 | Before ... = ... | +| Qualifiers.cs:30:9:30:47 | After ...; | Qualifiers.cs:11:5:31:5 | After {...} | +| Qualifiers.cs:30:13:30:37 | After call to method StaticMethod | Qualifiers.cs:30:13:30:46 | call to method Method | +| Qualifiers.cs:30:13:30:37 | Before call to method StaticMethod | Qualifiers.cs:30:13:30:37 | call to method StaticMethod | +| Qualifiers.cs:30:13:30:37 | call to method StaticMethod | Qualifiers.cs:30:13:30:37 | After call to method StaticMethod | +| Qualifiers.cs:30:13:30:46 | After call to method Method | Qualifiers.cs:30:9:30:46 | ... = ... | +| Qualifiers.cs:30:13:30:46 | Before call to method Method | Qualifiers.cs:30:13:30:37 | Before call to method StaticMethod | +| Qualifiers.cs:30:13:30:46 | call to method Method | Qualifiers.cs:30:13:30:46 | After call to method Method | +| Switch.cs:3:7:3:12 | After call to constructor Object | Switch.cs:3:7:3:12 | {...} | +| Switch.cs:3:7:3:12 | After call to method | Switch.cs:3:7:3:12 | Before call to constructor Object | +| Switch.cs:3:7:3:12 | Before call to constructor Object | Switch.cs:3:7:3:12 | call to constructor Object | +| Switch.cs:3:7:3:12 | Before call to method | Switch.cs:3:7:3:12 | this access | +| Switch.cs:3:7:3:12 | Entry | Switch.cs:3:7:3:12 | Before call to method | +| Switch.cs:3:7:3:12 | Normal Exit | Switch.cs:3:7:3:12 | Exit | +| Switch.cs:3:7:3:12 | call to constructor Object | Switch.cs:3:7:3:12 | After call to constructor Object | +| Switch.cs:3:7:3:12 | call to method | Switch.cs:3:7:3:12 | After call to method | | Switch.cs:3:7:3:12 | this access | Switch.cs:3:7:3:12 | call to method | -| Switch.cs:3:7:3:12 | {...} | Switch.cs:3:7:3:12 | exit Switch (normal) | -| Switch.cs:5:10:5:11 | enter M1 | Switch.cs:6:5:8:5 | {...} | -| Switch.cs:5:10:5:11 | exit M1 (normal) | Switch.cs:5:10:5:11 | exit M1 | +| Switch.cs:3:7:3:12 | {...} | Switch.cs:3:7:3:12 | Normal Exit | +| Switch.cs:5:10:5:11 | Entry | Switch.cs:5:20:5:20 | o | +| Switch.cs:5:10:5:11 | Normal Exit | Switch.cs:5:10:5:11 | Exit | +| Switch.cs:5:20:5:20 | o | Switch.cs:6:5:8:5 | {...} | +| Switch.cs:6:5:8:5 | After {...} | Switch.cs:5:10:5:11 | Normal Exit | | Switch.cs:6:5:8:5 | {...} | Switch.cs:7:9:7:22 | switch (...) {...} | +| Switch.cs:7:9:7:22 | After switch (...) {...} | Switch.cs:6:5:8:5 | After {...} | | Switch.cs:7:9:7:22 | switch (...) {...} | Switch.cs:7:17:7:17 | access to parameter o | -| Switch.cs:7:17:7:17 | access to parameter o | Switch.cs:5:10:5:11 | exit M1 (normal) | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:11:5:33:5 | {...} | +| Switch.cs:7:17:7:17 | access to parameter o | Switch.cs:7:9:7:22 | After switch (...) {...} | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:10:20:10:20 | o | +| Switch.cs:10:20:10:20 | o | Switch.cs:11:5:33:5 | {...} | | Switch.cs:11:5:33:5 | {...} | Switch.cs:12:9:32:9 | switch (...) {...} | | Switch.cs:12:9:32:9 | switch (...) {...} | Switch.cs:12:17:12:17 | access to parameter o | | Switch.cs:12:17:12:17 | access to parameter o | Switch.cs:14:13:14:21 | case ...: | +| Switch.cs:14:13:14:21 | After case ...: [match] | Switch.cs:15:17:15:23 | Before return ...; | +| Switch.cs:14:13:14:21 | After case ...: [no-match] | Switch.cs:16:13:16:19 | case ...: | | Switch.cs:14:13:14:21 | case ...: | Switch.cs:14:18:14:20 | "a" | -| Switch.cs:14:18:14:20 | "a" | Switch.cs:15:17:15:23 | return ...; | -| Switch.cs:14:18:14:20 | "a" | Switch.cs:16:13:16:19 | case ...: | +| Switch.cs:14:18:14:20 | "a" | Switch.cs:14:18:14:20 | After "a" [match] | +| Switch.cs:14:18:14:20 | "a" | Switch.cs:14:18:14:20 | After "a" [no-match] | +| Switch.cs:14:18:14:20 | After "a" [match] | Switch.cs:14:13:14:21 | After case ...: [match] | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:14:13:14:21 | After case ...: [no-match] | +| Switch.cs:15:17:15:23 | Before return ...; | Switch.cs:15:17:15:23 | return ...; | +| Switch.cs:16:13:16:19 | After case ...: [match] | Switch.cs:17:17:17:38 | Before throw ...; | +| Switch.cs:16:13:16:19 | After case ...: [no-match] | Switch.cs:18:13:18:22 | case ...: | | Switch.cs:16:13:16:19 | case ...: | Switch.cs:16:18:16:18 | 0 | -| Switch.cs:16:18:16:18 | 0 | Switch.cs:17:23:17:37 | object creation of type Exception | -| Switch.cs:16:18:16:18 | 0 | Switch.cs:18:13:18:22 | case ...: | -| Switch.cs:17:23:17:37 | object creation of type Exception | Switch.cs:17:17:17:38 | throw ...; | +| Switch.cs:16:18:16:18 | 0 | Switch.cs:16:18:16:18 | After 0 [match] | +| Switch.cs:16:18:16:18 | 0 | Switch.cs:16:18:16:18 | After 0 [no-match] | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:16:13:16:19 | After case ...: [no-match] | +| Switch.cs:17:17:17:38 | Before throw ...; | Switch.cs:17:23:17:37 | Before object creation of type Exception | +| Switch.cs:17:23:17:37 | After object creation of type Exception | Switch.cs:17:17:17:38 | throw ...; | +| Switch.cs:17:23:17:37 | Before object creation of type Exception | Switch.cs:17:23:17:37 | object creation of type Exception | +| Switch.cs:17:23:17:37 | object creation of type Exception | Switch.cs:17:23:17:37 | After object creation of type Exception | +| Switch.cs:18:13:18:22 | After case ...: [match] | Switch.cs:19:17:19:29 | Before goto default; | +| Switch.cs:18:13:18:22 | After case ...: [no-match] | Switch.cs:20:13:20:23 | case ...: | | Switch.cs:18:13:18:22 | case ...: | Switch.cs:18:18:18:21 | null | -| Switch.cs:18:18:18:21 | null | Switch.cs:19:17:19:29 | goto default; | -| Switch.cs:18:18:18:21 | null | Switch.cs:20:13:20:23 | case ...: | +| Switch.cs:18:18:18:21 | After null [match] | Switch.cs:18:13:18:22 | After case ...: [match] | +| Switch.cs:18:18:18:21 | After null [no-match] | Switch.cs:18:13:18:22 | After case ...: [no-match] | +| Switch.cs:18:18:18:21 | null | Switch.cs:18:18:18:21 | After null [match] | +| Switch.cs:18:18:18:21 | null | Switch.cs:18:18:18:21 | After null [no-match] | +| Switch.cs:19:17:19:29 | Before goto default; | Switch.cs:19:17:19:29 | goto default; | +| Switch.cs:20:13:20:23 | After case ...: [match] | Switch.cs:21:17:22:27 | if (...) ... | +| Switch.cs:20:13:20:23 | After case ...: [no-match] | Switch.cs:24:13:24:56 | case ...: | | Switch.cs:20:13:20:23 | case ...: | Switch.cs:20:18:20:22 | Int32 i | -| Switch.cs:20:18:20:22 | Int32 i | Switch.cs:21:17:22:27 | if (...) ... | -| Switch.cs:20:18:20:22 | Int32 i | Switch.cs:24:13:24:56 | case ...: | -| Switch.cs:21:17:22:27 | if (...) ... | Switch.cs:21:21:21:21 | access to parameter o | +| Switch.cs:20:18:20:22 | After Int32 i [match] | Switch.cs:20:13:20:23 | After case ...: [match] | +| Switch.cs:20:18:20:22 | After Int32 i [no-match] | Switch.cs:20:13:20:23 | After case ...: [no-match] | +| Switch.cs:20:18:20:22 | Int32 i | Switch.cs:20:18:20:22 | After Int32 i [match] | +| Switch.cs:20:18:20:22 | Int32 i | Switch.cs:20:18:20:22 | After Int32 i [no-match] | +| Switch.cs:21:17:22:27 | After if (...) ... | Switch.cs:23:17:23:28 | Before goto case ...; | +| Switch.cs:21:17:22:27 | if (...) ... | Switch.cs:21:21:21:29 | Before ... == ... | | Switch.cs:21:21:21:21 | access to parameter o | Switch.cs:21:26:21:29 | null | -| Switch.cs:21:21:21:29 | ... == ... | Switch.cs:22:21:22:27 | return ...; | -| Switch.cs:21:21:21:29 | ... == ... | Switch.cs:23:27:23:27 | 0 | +| Switch.cs:21:21:21:29 | ... == ... | Switch.cs:21:21:21:29 | After ... == ... [false] | +| Switch.cs:21:21:21:29 | ... == ... | Switch.cs:21:21:21:29 | After ... == ... [true] | +| Switch.cs:21:21:21:29 | After ... == ... [false] | Switch.cs:21:17:22:27 | After if (...) ... | +| Switch.cs:21:21:21:29 | After ... == ... [true] | Switch.cs:22:21:22:27 | Before return ...; | +| Switch.cs:21:21:21:29 | Before ... == ... | Switch.cs:21:21:21:21 | access to parameter o | | Switch.cs:21:26:21:29 | null | Switch.cs:21:21:21:29 | ... == ... | +| Switch.cs:22:21:22:27 | Before return ...; | Switch.cs:22:21:22:27 | return ...; | +| Switch.cs:23:17:23:28 | Before goto case ...; | Switch.cs:23:27:23:27 | 0 | | Switch.cs:23:27:23:27 | 0 | Switch.cs:23:17:23:28 | goto case ...; | +| Switch.cs:24:13:24:56 | After case ...: [match] | Switch.cs:24:32:24:55 | ... && ... | | Switch.cs:24:13:24:56 | case ...: | Switch.cs:24:18:24:25 | String s | -| Switch.cs:24:18:24:25 | String s | Switch.cs:24:32:24:32 | access to local variable s | -| Switch.cs:24:18:24:25 | String s | Switch.cs:27:13:27:39 | case ...: | +| Switch.cs:24:18:24:25 | After String s [match] | Switch.cs:24:13:24:56 | After case ...: [match] | +| Switch.cs:24:18:24:25 | After String s [no-match] | Switch.cs:24:13:24:56 | After case ...: [no-match] | +| Switch.cs:24:18:24:25 | String s | Switch.cs:24:18:24:25 | After String s [match] | +| Switch.cs:24:18:24:25 | String s | Switch.cs:24:18:24:25 | After String s [no-match] | | Switch.cs:24:32:24:32 | access to local variable s | Switch.cs:24:32:24:39 | access to property Length | -| Switch.cs:24:32:24:39 | access to property Length | Switch.cs:24:43:24:43 | 0 | -| Switch.cs:24:32:24:43 | ... > ... | Switch.cs:24:32:24:55 | [false] ... && ... | -| Switch.cs:24:32:24:43 | ... > ... | Switch.cs:24:48:24:48 | access to local variable s | -| Switch.cs:24:32:24:55 | [true] ... && ... | Switch.cs:25:17:25:37 | ...; | +| Switch.cs:24:32:24:39 | After access to property Length | Switch.cs:24:43:24:43 | 0 | +| Switch.cs:24:32:24:39 | Before access to property Length | Switch.cs:24:32:24:32 | access to local variable s | +| Switch.cs:24:32:24:39 | access to property Length | Switch.cs:24:32:24:39 | After access to property Length | +| Switch.cs:24:32:24:43 | ... > ... | Switch.cs:24:32:24:43 | After ... > ... [false] | +| Switch.cs:24:32:24:43 | ... > ... | Switch.cs:24:32:24:43 | After ... > ... [true] | +| Switch.cs:24:32:24:43 | After ... > ... [true] | Switch.cs:24:48:24:55 | Before ... != ... | +| Switch.cs:24:32:24:43 | Before ... > ... | Switch.cs:24:32:24:39 | Before access to property Length | +| Switch.cs:24:32:24:55 | ... && ... | Switch.cs:24:32:24:43 | Before ... > ... | +| Switch.cs:24:32:24:55 | After ... && ... [true] | Switch.cs:25:17:25:37 | ...; | | Switch.cs:24:43:24:43 | 0 | Switch.cs:24:32:24:43 | ... > ... | | Switch.cs:24:48:24:48 | access to local variable s | Switch.cs:24:53:24:55 | "a" | -| Switch.cs:24:48:24:55 | ... != ... | Switch.cs:24:32:24:55 | [true] ... && ... | +| Switch.cs:24:48:24:55 | ... != ... | Switch.cs:24:48:24:55 | After ... != ... [false] | +| Switch.cs:24:48:24:55 | ... != ... | Switch.cs:24:48:24:55 | After ... != ... [true] | +| Switch.cs:24:48:24:55 | After ... != ... [true] | Switch.cs:24:32:24:55 | After ... && ... [true] | +| Switch.cs:24:48:24:55 | Before ... != ... | Switch.cs:24:48:24:48 | access to local variable s | | Switch.cs:24:53:24:55 | "a" | Switch.cs:24:48:24:55 | ... != ... | -| Switch.cs:25:17:25:36 | call to method WriteLine | Switch.cs:26:17:26:23 | return ...; | -| Switch.cs:25:17:25:37 | ...; | Switch.cs:25:35:25:35 | access to local variable s | +| Switch.cs:25:17:25:36 | After call to method WriteLine | Switch.cs:25:17:25:37 | After ...; | +| Switch.cs:25:17:25:36 | Before call to method WriteLine | Switch.cs:25:35:25:35 | access to local variable s | +| Switch.cs:25:17:25:36 | call to method WriteLine | Switch.cs:25:17:25:36 | After call to method WriteLine | +| Switch.cs:25:17:25:37 | ...; | Switch.cs:25:17:25:36 | Before call to method WriteLine | +| Switch.cs:25:17:25:37 | After ...; | Switch.cs:26:17:26:23 | Before return ...; | | Switch.cs:25:35:25:35 | access to local variable s | Switch.cs:25:17:25:36 | call to method WriteLine | +| Switch.cs:26:17:26:23 | Before return ...; | Switch.cs:26:17:26:23 | return ...; | +| Switch.cs:27:13:27:39 | After case ...: [match] | Switch.cs:27:32:27:38 | Before call to method Throw | +| Switch.cs:27:13:27:39 | After case ...: [no-match] | Switch.cs:30:13:30:20 | default: | | Switch.cs:27:13:27:39 | case ...: | Switch.cs:27:18:27:25 | Double d | -| Switch.cs:27:18:27:25 | Double d | Switch.cs:27:32:27:38 | call to method Throw | -| Switch.cs:28:13:28:17 | Label: | Switch.cs:29:17:29:23 | return ...; | -| Switch.cs:30:13:30:20 | default: | Switch.cs:31:17:31:27 | goto ...; | +| Switch.cs:27:18:27:25 | After Double d [match] | Switch.cs:27:13:27:39 | After case ...: [match] | +| Switch.cs:27:18:27:25 | After Double d [no-match] | Switch.cs:27:13:27:39 | After case ...: [no-match] | +| Switch.cs:27:18:27:25 | Double d | Switch.cs:27:18:27:25 | After Double d [match] | +| Switch.cs:27:18:27:25 | Double d | Switch.cs:27:18:27:25 | After Double d [no-match] | +| Switch.cs:27:32:27:38 | Before call to method Throw | Switch.cs:27:32:27:38 | call to method Throw | +| Switch.cs:28:13:28:17 | Label: | Switch.cs:29:17:29:23 | Before return ...; | +| Switch.cs:29:17:29:23 | Before return ...; | Switch.cs:29:17:29:23 | return ...; | +| Switch.cs:30:13:30:20 | After default: [match] | Switch.cs:31:17:31:27 | Before goto ...; | +| Switch.cs:31:17:31:27 | Before goto ...; | Switch.cs:31:17:31:27 | goto ...; | | Switch.cs:31:17:31:27 | goto ...; | Switch.cs:28:13:28:17 | Label: | -| Switch.cs:35:10:35:11 | enter M3 | Switch.cs:36:5:42:5 | {...} | -| Switch.cs:35:10:35:11 | exit M3 (abnormal) | Switch.cs:35:10:35:11 | exit M3 | +| Switch.cs:35:10:35:11 | Entry | Switch.cs:36:5:42:5 | {...} | +| Switch.cs:35:10:35:11 | Exceptional Exit | Switch.cs:35:10:35:11 | Exit | | Switch.cs:36:5:42:5 | {...} | Switch.cs:37:9:41:9 | switch (...) {...} | -| Switch.cs:37:9:41:9 | switch (...) {...} | Switch.cs:37:17:37:23 | call to method Throw | -| Switch.cs:37:17:37:23 | call to method Throw | Switch.cs:35:10:35:11 | exit M3 (abnormal) | -| Switch.cs:44:10:44:11 | enter M4 | Switch.cs:45:5:53:5 | {...} | -| Switch.cs:44:10:44:11 | exit M4 (normal) | Switch.cs:44:10:44:11 | exit M4 | +| Switch.cs:37:9:41:9 | switch (...) {...} | Switch.cs:37:17:37:23 | Before call to method Throw | +| Switch.cs:37:17:37:23 | Before call to method Throw | Switch.cs:37:17:37:23 | call to method Throw | +| Switch.cs:37:17:37:23 | call to method Throw | Switch.cs:35:10:35:11 | Exceptional Exit | +| Switch.cs:44:10:44:11 | Entry | Switch.cs:44:20:44:20 | o | +| Switch.cs:44:10:44:11 | Normal Exit | Switch.cs:44:10:44:11 | Exit | +| Switch.cs:44:20:44:20 | o | Switch.cs:45:5:53:5 | {...} | +| Switch.cs:45:5:53:5 | After {...} | Switch.cs:44:10:44:11 | Normal Exit | | Switch.cs:45:5:53:5 | {...} | Switch.cs:46:9:52:9 | switch (...) {...} | +| Switch.cs:46:9:52:9 | After switch (...) {...} | Switch.cs:45:5:53:5 | After {...} | | Switch.cs:46:9:52:9 | switch (...) {...} | Switch.cs:46:17:46:17 | access to parameter o | | Switch.cs:46:17:46:17 | access to parameter o | Switch.cs:48:13:48:23 | case ...: | +| Switch.cs:48:13:48:23 | After case ...: [match] | Switch.cs:49:17:49:22 | Before break; | +| Switch.cs:48:13:48:23 | After case ...: [no-match] | Switch.cs:50:13:50:39 | case ...: | | Switch.cs:48:13:48:23 | case ...: | Switch.cs:48:18:48:20 | access to type Int32 | -| Switch.cs:48:18:48:20 | access to type Int32 | Switch.cs:49:17:49:22 | break; | -| Switch.cs:48:18:48:20 | access to type Int32 | Switch.cs:50:13:50:39 | case ...: | +| Switch.cs:48:18:48:20 | After access to type Int32 [match] | Switch.cs:48:13:48:23 | After case ...: [match] | +| Switch.cs:48:18:48:20 | After access to type Int32 [no-match] | Switch.cs:48:13:48:23 | After case ...: [no-match] | +| Switch.cs:48:18:48:20 | access to type Int32 | Switch.cs:48:18:48:20 | After access to type Int32 [match] | +| Switch.cs:48:18:48:20 | access to type Int32 | Switch.cs:48:18:48:20 | After access to type Int32 [no-match] | +| Switch.cs:49:17:49:22 | Before break; | Switch.cs:49:17:49:22 | break; | +| Switch.cs:50:13:50:39 | After case ...: [match] | Switch.cs:50:30:50:38 | Before ... != ... | | Switch.cs:50:13:50:39 | case ...: | Switch.cs:50:18:50:21 | access to type Boolean | -| Switch.cs:50:18:50:21 | access to type Boolean | Switch.cs:50:30:50:30 | access to parameter o | +| Switch.cs:50:18:50:21 | After access to type Boolean [match] | Switch.cs:50:13:50:39 | After case ...: [match] | +| Switch.cs:50:18:50:21 | After access to type Boolean [no-match] | Switch.cs:50:13:50:39 | After case ...: [no-match] | +| Switch.cs:50:18:50:21 | access to type Boolean | Switch.cs:50:18:50:21 | After access to type Boolean [match] | +| Switch.cs:50:18:50:21 | access to type Boolean | Switch.cs:50:18:50:21 | After access to type Boolean [no-match] | | Switch.cs:50:30:50:30 | access to parameter o | Switch.cs:50:35:50:38 | null | -| Switch.cs:50:30:50:38 | ... != ... | Switch.cs:51:17:51:22 | break; | +| Switch.cs:50:30:50:38 | ... != ... | Switch.cs:50:30:50:38 | After ... != ... [false] | +| Switch.cs:50:30:50:38 | ... != ... | Switch.cs:50:30:50:38 | After ... != ... [true] | +| Switch.cs:50:30:50:38 | After ... != ... [true] | Switch.cs:51:17:51:22 | Before break; | +| Switch.cs:50:30:50:38 | Before ... != ... | Switch.cs:50:30:50:30 | access to parameter o | | Switch.cs:50:35:50:38 | null | Switch.cs:50:30:50:38 | ... != ... | -| Switch.cs:55:10:55:11 | enter M5 | Switch.cs:56:5:64:5 | {...} | -| Switch.cs:55:10:55:11 | exit M5 (normal) | Switch.cs:55:10:55:11 | exit M5 | +| Switch.cs:51:17:51:22 | Before break; | Switch.cs:51:17:51:22 | break; | +| Switch.cs:55:10:55:11 | Entry | Switch.cs:56:5:64:5 | {...} | +| Switch.cs:55:10:55:11 | Normal Exit | Switch.cs:55:10:55:11 | Exit | +| Switch.cs:56:5:64:5 | After {...} | Switch.cs:55:10:55:11 | Normal Exit | | Switch.cs:56:5:64:5 | {...} | Switch.cs:57:9:63:9 | switch (...) {...} | -| Switch.cs:57:9:63:9 | switch (...) {...} | Switch.cs:57:17:57:17 | 1 | +| Switch.cs:57:9:63:9 | After switch (...) {...} | Switch.cs:56:5:64:5 | After {...} | +| Switch.cs:57:9:63:9 | switch (...) {...} | Switch.cs:57:17:57:21 | Before ... + ... | | Switch.cs:57:17:57:17 | 1 | Switch.cs:57:21:57:21 | 2 | -| Switch.cs:57:17:57:21 | ... + ... | Switch.cs:59:13:59:19 | case ...: | +| Switch.cs:57:17:57:21 | ... + ... | Switch.cs:57:17:57:21 | After ... + ... | +| Switch.cs:57:17:57:21 | After ... + ... | Switch.cs:59:13:59:19 | case ...: | +| Switch.cs:57:17:57:21 | Before ... + ... | Switch.cs:57:17:57:17 | 1 | | Switch.cs:57:21:57:21 | 2 | Switch.cs:57:17:57:21 | ... + ... | +| Switch.cs:59:13:59:19 | After case ...: [match] | Switch.cs:60:17:60:22 | Before break; | +| Switch.cs:59:13:59:19 | After case ...: [no-match] | Switch.cs:61:13:61:19 | case ...: | | Switch.cs:59:13:59:19 | case ...: | Switch.cs:59:18:59:18 | 2 | -| Switch.cs:59:18:59:18 | 2 | Switch.cs:61:13:61:19 | case ...: | +| Switch.cs:59:18:59:18 | 2 | Switch.cs:59:18:59:18 | After 2 [match] | +| Switch.cs:59:18:59:18 | 2 | Switch.cs:59:18:59:18 | After 2 [no-match] | +| Switch.cs:59:18:59:18 | After 2 [match] | Switch.cs:59:13:59:19 | After case ...: [match] | +| Switch.cs:59:18:59:18 | After 2 [no-match] | Switch.cs:59:13:59:19 | After case ...: [no-match] | +| Switch.cs:60:17:60:22 | Before break; | Switch.cs:60:17:60:22 | break; | +| Switch.cs:61:13:61:19 | After case ...: [match] | Switch.cs:62:17:62:22 | Before break; | | Switch.cs:61:13:61:19 | case ...: | Switch.cs:61:18:61:18 | 3 | -| Switch.cs:61:18:61:18 | 3 | Switch.cs:62:17:62:22 | break; | -| Switch.cs:62:17:62:22 | break; | Switch.cs:55:10:55:11 | exit M5 (normal) | -| Switch.cs:66:10:66:11 | enter M6 | Switch.cs:67:5:75:5 | {...} | -| Switch.cs:66:10:66:11 | exit M6 (normal) | Switch.cs:66:10:66:11 | exit M6 | +| Switch.cs:61:18:61:18 | 3 | Switch.cs:61:18:61:18 | After 3 [match] | +| Switch.cs:61:18:61:18 | 3 | Switch.cs:61:18:61:18 | After 3 [no-match] | +| Switch.cs:61:18:61:18 | After 3 [match] | Switch.cs:61:13:61:19 | After case ...: [match] | +| Switch.cs:61:18:61:18 | After 3 [no-match] | Switch.cs:61:13:61:19 | After case ...: [no-match] | +| Switch.cs:62:17:62:22 | Before break; | Switch.cs:62:17:62:22 | break; | +| Switch.cs:66:10:66:11 | Entry | Switch.cs:66:20:66:20 | s | +| Switch.cs:66:10:66:11 | Normal Exit | Switch.cs:66:10:66:11 | Exit | +| Switch.cs:66:20:66:20 | s | Switch.cs:67:5:75:5 | {...} | +| Switch.cs:67:5:75:5 | After {...} | Switch.cs:66:10:66:11 | Normal Exit | | Switch.cs:67:5:75:5 | {...} | Switch.cs:68:9:74:9 | switch (...) {...} | -| Switch.cs:68:9:74:9 | switch (...) {...} | Switch.cs:68:25:68:25 | access to parameter s | -| Switch.cs:68:17:68:25 | (...) ... | Switch.cs:70:13:70:23 | case ...: | +| Switch.cs:68:9:74:9 | After switch (...) {...} | Switch.cs:67:5:75:5 | After {...} | +| Switch.cs:68:9:74:9 | switch (...) {...} | Switch.cs:68:17:68:25 | Before (...) ... | +| Switch.cs:68:17:68:25 | (...) ... | Switch.cs:68:17:68:25 | After (...) ... | +| Switch.cs:68:17:68:25 | After (...) ... | Switch.cs:70:13:70:23 | case ...: | +| Switch.cs:68:17:68:25 | Before (...) ... | Switch.cs:68:25:68:25 | access to parameter s | | Switch.cs:68:25:68:25 | access to parameter s | Switch.cs:68:17:68:25 | (...) ... | +| Switch.cs:70:13:70:23 | After case ...: [match] | Switch.cs:71:17:71:22 | Before break; | +| Switch.cs:70:13:70:23 | After case ...: [no-match] | Switch.cs:72:13:72:20 | case ...: | | Switch.cs:70:13:70:23 | case ...: | Switch.cs:70:18:70:20 | access to type Int32 | -| Switch.cs:70:18:70:20 | access to type Int32 | Switch.cs:72:13:72:20 | case ...: | +| Switch.cs:70:18:70:20 | After access to type Int32 [match] | Switch.cs:70:13:70:23 | After case ...: [match] | +| Switch.cs:70:18:70:20 | After access to type Int32 [no-match] | Switch.cs:70:13:70:23 | After case ...: [no-match] | +| Switch.cs:70:18:70:20 | access to type Int32 | Switch.cs:70:18:70:20 | After access to type Int32 [match] | +| Switch.cs:70:18:70:20 | access to type Int32 | Switch.cs:70:18:70:20 | After access to type Int32 [no-match] | +| Switch.cs:71:17:71:22 | Before break; | Switch.cs:71:17:71:22 | break; | +| Switch.cs:72:13:72:20 | After case ...: [match] | Switch.cs:73:17:73:22 | Before break; | | Switch.cs:72:13:72:20 | case ...: | Switch.cs:72:18:72:19 | "" | -| Switch.cs:72:18:72:19 | "" | Switch.cs:66:10:66:11 | exit M6 (normal) | -| Switch.cs:72:18:72:19 | "" | Switch.cs:73:17:73:22 | break; | -| Switch.cs:77:10:77:11 | enter M7 | Switch.cs:78:5:89:5 | {...} | -| Switch.cs:77:10:77:11 | exit M7 (normal) | Switch.cs:77:10:77:11 | exit M7 | +| Switch.cs:72:18:72:19 | "" | Switch.cs:72:18:72:19 | After "" [match] | +| Switch.cs:72:18:72:19 | "" | Switch.cs:72:18:72:19 | After "" [no-match] | +| Switch.cs:72:18:72:19 | After "" [match] | Switch.cs:72:13:72:20 | After case ...: [match] | +| Switch.cs:72:18:72:19 | After "" [no-match] | Switch.cs:72:13:72:20 | After case ...: [no-match] | +| Switch.cs:73:17:73:22 | Before break; | Switch.cs:73:17:73:22 | break; | +| Switch.cs:77:10:77:11 | Entry | Switch.cs:77:17:77:17 | i | +| Switch.cs:77:10:77:11 | Normal Exit | Switch.cs:77:10:77:11 | Exit | +| Switch.cs:77:17:77:17 | i | Switch.cs:77:24:77:24 | j | +| Switch.cs:77:24:77:24 | j | Switch.cs:78:5:89:5 | {...} | | Switch.cs:78:5:89:5 | {...} | Switch.cs:79:9:87:9 | switch (...) {...} | +| Switch.cs:79:9:87:9 | After switch (...) {...} | Switch.cs:88:9:88:21 | Before return ...; | | Switch.cs:79:9:87:9 | switch (...) {...} | Switch.cs:79:17:79:17 | access to parameter i | | Switch.cs:79:17:79:17 | access to parameter i | Switch.cs:81:13:81:19 | case ...: | +| Switch.cs:81:13:81:19 | After case ...: [match] | Switch.cs:82:17:82:28 | Before return ...; | +| Switch.cs:81:13:81:19 | After case ...: [no-match] | Switch.cs:83:13:83:19 | case ...: | | Switch.cs:81:13:81:19 | case ...: | Switch.cs:81:18:81:18 | 1 | -| Switch.cs:81:18:81:18 | 1 | Switch.cs:82:24:82:27 | true | -| Switch.cs:81:18:81:18 | 1 | Switch.cs:83:13:83:19 | case ...: | +| Switch.cs:81:18:81:18 | 1 | Switch.cs:81:18:81:18 | After 1 [match] | +| Switch.cs:81:18:81:18 | 1 | Switch.cs:81:18:81:18 | After 1 [no-match] | +| Switch.cs:81:18:81:18 | After 1 [match] | Switch.cs:81:13:81:19 | After case ...: [match] | +| Switch.cs:81:18:81:18 | After 1 [no-match] | Switch.cs:81:13:81:19 | After case ...: [no-match] | +| Switch.cs:82:17:82:28 | Before return ...; | Switch.cs:82:24:82:27 | true | | Switch.cs:82:24:82:27 | true | Switch.cs:82:17:82:28 | return ...; | +| Switch.cs:83:13:83:19 | After case ...: [match] | Switch.cs:84:17:85:26 | if (...) ... | | Switch.cs:83:13:83:19 | case ...: | Switch.cs:83:18:83:18 | 2 | -| Switch.cs:83:18:83:18 | 2 | Switch.cs:84:17:85:26 | if (...) ... | -| Switch.cs:83:18:83:18 | 2 | Switch.cs:88:16:88:20 | false | -| Switch.cs:84:17:85:26 | if (...) ... | Switch.cs:84:21:84:21 | access to parameter j | +| Switch.cs:83:18:83:18 | 2 | Switch.cs:83:18:83:18 | After 2 [match] | +| Switch.cs:83:18:83:18 | 2 | Switch.cs:83:18:83:18 | After 2 [no-match] | +| Switch.cs:83:18:83:18 | After 2 [match] | Switch.cs:83:13:83:19 | After case ...: [match] | +| Switch.cs:83:18:83:18 | After 2 [no-match] | Switch.cs:83:13:83:19 | After case ...: [no-match] | +| Switch.cs:84:17:85:26 | After if (...) ... | Switch.cs:86:17:86:28 | Before return ...; | +| Switch.cs:84:17:85:26 | if (...) ... | Switch.cs:84:21:84:25 | Before ... > ... | | Switch.cs:84:21:84:21 | access to parameter j | Switch.cs:84:25:84:25 | 2 | -| Switch.cs:84:21:84:25 | ... > ... | Switch.cs:85:21:85:26 | break; | -| Switch.cs:84:21:84:25 | ... > ... | Switch.cs:86:24:86:27 | true | +| Switch.cs:84:21:84:25 | ... > ... | Switch.cs:84:21:84:25 | After ... > ... [false] | +| Switch.cs:84:21:84:25 | ... > ... | Switch.cs:84:21:84:25 | After ... > ... [true] | +| Switch.cs:84:21:84:25 | After ... > ... [false] | Switch.cs:84:17:85:26 | After if (...) ... | +| Switch.cs:84:21:84:25 | After ... > ... [true] | Switch.cs:85:21:85:26 | Before break; | +| Switch.cs:84:21:84:25 | Before ... > ... | Switch.cs:84:21:84:21 | access to parameter j | | Switch.cs:84:25:84:25 | 2 | Switch.cs:84:21:84:25 | ... > ... | +| Switch.cs:85:21:85:26 | Before break; | Switch.cs:85:21:85:26 | break; | +| Switch.cs:86:17:86:28 | Before return ...; | Switch.cs:86:24:86:27 | true | | Switch.cs:86:24:86:27 | true | Switch.cs:86:17:86:28 | return ...; | +| Switch.cs:88:9:88:21 | Before return ...; | Switch.cs:88:16:88:20 | false | | Switch.cs:88:16:88:20 | false | Switch.cs:88:9:88:21 | return ...; | -| Switch.cs:91:10:91:11 | enter M8 | Switch.cs:92:5:99:5 | {...} | -| Switch.cs:91:10:91:11 | exit M8 (normal) | Switch.cs:91:10:91:11 | exit M8 | +| Switch.cs:91:10:91:11 | Entry | Switch.cs:91:20:91:20 | o | +| Switch.cs:91:10:91:11 | Normal Exit | Switch.cs:91:10:91:11 | Exit | +| Switch.cs:91:20:91:20 | o | Switch.cs:92:5:99:5 | {...} | | Switch.cs:92:5:99:5 | {...} | Switch.cs:93:9:97:9 | switch (...) {...} | +| Switch.cs:93:9:97:9 | After switch (...) {...} | Switch.cs:98:9:98:21 | Before return ...; | | Switch.cs:93:9:97:9 | switch (...) {...} | Switch.cs:93:17:93:17 | access to parameter o | | Switch.cs:93:17:93:17 | access to parameter o | Switch.cs:95:13:95:23 | case ...: | +| Switch.cs:95:13:95:23 | After case ...: [match] | Switch.cs:96:17:96:28 | Before return ...; | +| Switch.cs:95:13:95:23 | After case ...: [no-match] | Switch.cs:93:9:97:9 | After switch (...) {...} | | Switch.cs:95:13:95:23 | case ...: | Switch.cs:95:18:95:20 | access to type Int32 | -| Switch.cs:95:18:95:20 | access to type Int32 | Switch.cs:96:24:96:27 | true | -| Switch.cs:95:18:95:20 | access to type Int32 | Switch.cs:98:16:98:20 | false | +| Switch.cs:95:18:95:20 | After access to type Int32 [match] | Switch.cs:95:13:95:23 | After case ...: [match] | +| Switch.cs:95:18:95:20 | After access to type Int32 [no-match] | Switch.cs:95:13:95:23 | After case ...: [no-match] | +| Switch.cs:95:18:95:20 | access to type Int32 | Switch.cs:95:18:95:20 | After access to type Int32 [match] | +| Switch.cs:95:18:95:20 | access to type Int32 | Switch.cs:95:18:95:20 | After access to type Int32 [no-match] | +| Switch.cs:96:17:96:28 | Before return ...; | Switch.cs:96:24:96:27 | true | | Switch.cs:96:24:96:27 | true | Switch.cs:96:17:96:28 | return ...; | +| Switch.cs:98:9:98:21 | Before return ...; | Switch.cs:98:16:98:20 | false | | Switch.cs:98:16:98:20 | false | Switch.cs:98:9:98:21 | return ...; | -| Switch.cs:101:9:101:10 | enter M9 | Switch.cs:102:5:109:5 | {...} | -| Switch.cs:101:9:101:10 | exit M9 (normal) | Switch.cs:101:9:101:10 | exit M9 | +| Switch.cs:101:9:101:10 | Entry | Switch.cs:101:19:101:19 | s | +| Switch.cs:101:9:101:10 | Normal Exit | Switch.cs:101:9:101:10 | Exit | +| Switch.cs:101:19:101:19 | s | Switch.cs:102:5:109:5 | {...} | | Switch.cs:102:5:109:5 | {...} | Switch.cs:103:9:107:9 | switch (...) {...} | -| Switch.cs:103:9:107:9 | switch (...) {...} | Switch.cs:103:17:103:17 | access to parameter s | -| Switch.cs:103:17:103:17 | access to parameter s | Switch.cs:103:17:103:25 | access to property Length | -| Switch.cs:103:17:103:17 | access to parameter s | Switch.cs:105:13:105:19 | case ...: | +| Switch.cs:103:9:107:9 | After switch (...) {...} | Switch.cs:108:9:108:18 | Before return ...; | +| Switch.cs:103:9:107:9 | switch (...) {...} | Switch.cs:103:17:103:25 | Before access to property Length | +| Switch.cs:103:17:103:17 | After access to parameter s [non-null] | Switch.cs:103:17:103:25 | access to property Length | +| Switch.cs:103:17:103:17 | access to parameter s | Switch.cs:103:17:103:17 | After access to parameter s [non-null] | +| Switch.cs:103:17:103:17 | access to parameter s | Switch.cs:103:17:103:17 | After access to parameter s [null] | +| Switch.cs:103:17:103:25 | After access to property Length | Switch.cs:105:13:105:19 | case ...: | +| Switch.cs:103:17:103:25 | Before access to property Length | Switch.cs:103:17:103:17 | access to parameter s | +| Switch.cs:105:13:105:19 | After case ...: [match] | Switch.cs:105:21:105:29 | Before return ...; | +| Switch.cs:105:13:105:19 | After case ...: [no-match] | Switch.cs:106:13:106:19 | case ...: | | Switch.cs:105:13:105:19 | case ...: | Switch.cs:105:18:105:18 | 0 | -| Switch.cs:105:18:105:18 | 0 | Switch.cs:105:28:105:28 | 0 | -| Switch.cs:105:18:105:18 | 0 | Switch.cs:106:13:106:19 | case ...: | +| Switch.cs:105:18:105:18 | 0 | Switch.cs:105:18:105:18 | After 0 [match] | +| Switch.cs:105:18:105:18 | 0 | Switch.cs:105:18:105:18 | After 0 [no-match] | +| Switch.cs:105:18:105:18 | After 0 [match] | Switch.cs:105:13:105:19 | After case ...: [match] | +| Switch.cs:105:18:105:18 | After 0 [no-match] | Switch.cs:105:13:105:19 | After case ...: [no-match] | +| Switch.cs:105:21:105:29 | Before return ...; | Switch.cs:105:28:105:28 | 0 | | Switch.cs:105:28:105:28 | 0 | Switch.cs:105:21:105:29 | return ...; | +| Switch.cs:106:13:106:19 | After case ...: [match] | Switch.cs:106:21:106:29 | Before return ...; | +| Switch.cs:106:13:106:19 | After case ...: [no-match] | Switch.cs:103:9:107:9 | After switch (...) {...} | | Switch.cs:106:13:106:19 | case ...: | Switch.cs:106:18:106:18 | 1 | -| Switch.cs:106:18:106:18 | 1 | Switch.cs:106:28:106:28 | 1 | -| Switch.cs:106:18:106:18 | 1 | Switch.cs:108:17:108:17 | 1 | +| Switch.cs:106:18:106:18 | 1 | Switch.cs:106:18:106:18 | After 1 [match] | +| Switch.cs:106:18:106:18 | 1 | Switch.cs:106:18:106:18 | After 1 [no-match] | +| Switch.cs:106:18:106:18 | After 1 [match] | Switch.cs:106:13:106:19 | After case ...: [match] | +| Switch.cs:106:18:106:18 | After 1 [no-match] | Switch.cs:106:13:106:19 | After case ...: [no-match] | +| Switch.cs:106:21:106:29 | Before return ...; | Switch.cs:106:28:106:28 | 1 | | Switch.cs:106:28:106:28 | 1 | Switch.cs:106:21:106:29 | return ...; | -| Switch.cs:108:16:108:17 | -... | Switch.cs:108:9:108:18 | return ...; | +| Switch.cs:108:9:108:18 | Before return ...; | Switch.cs:108:16:108:17 | Before -... | +| Switch.cs:108:16:108:17 | -... | Switch.cs:108:16:108:17 | After -... | +| Switch.cs:108:16:108:17 | After -... | Switch.cs:108:9:108:18 | return ...; | +| Switch.cs:108:16:108:17 | Before -... | Switch.cs:108:17:108:17 | 1 | | Switch.cs:108:17:108:17 | 1 | Switch.cs:108:16:108:17 | -... | -| Switch.cs:111:17:111:21 | enter Throw | Switch.cs:111:34:111:48 | object creation of type Exception | -| Switch.cs:111:17:111:21 | exit Throw (abnormal) | Switch.cs:111:17:111:21 | exit Throw | -| Switch.cs:111:28:111:48 | throw ... | Switch.cs:111:17:111:21 | exit Throw (abnormal) | -| Switch.cs:111:34:111:48 | object creation of type Exception | Switch.cs:111:28:111:48 | throw ... | -| Switch.cs:113:9:113:11 | enter M10 | Switch.cs:114:5:121:5 | {...} | -| Switch.cs:113:9:113:11 | exit M10 (normal) | Switch.cs:113:9:113:11 | exit M10 | +| Switch.cs:111:17:111:21 | Entry | Switch.cs:111:28:111:48 | Before throw ... | +| Switch.cs:111:17:111:21 | Exceptional Exit | Switch.cs:111:17:111:21 | Exit | +| Switch.cs:111:28:111:48 | Before throw ... | Switch.cs:111:34:111:48 | Before object creation of type Exception | +| Switch.cs:111:28:111:48 | throw ... | Switch.cs:111:17:111:21 | Exceptional Exit | +| Switch.cs:111:34:111:48 | After object creation of type Exception | Switch.cs:111:28:111:48 | throw ... | +| Switch.cs:111:34:111:48 | Before object creation of type Exception | Switch.cs:111:34:111:48 | object creation of type Exception | +| Switch.cs:111:34:111:48 | object creation of type Exception | Switch.cs:111:34:111:48 | After object creation of type Exception | +| Switch.cs:113:9:113:11 | Entry | Switch.cs:113:20:113:20 | s | +| Switch.cs:113:9:113:11 | Normal Exit | Switch.cs:113:9:113:11 | Exit | +| Switch.cs:113:20:113:20 | s | Switch.cs:114:5:121:5 | {...} | | Switch.cs:114:5:121:5 | {...} | Switch.cs:115:9:119:9 | switch (...) {...} | -| Switch.cs:115:9:119:9 | switch (...) {...} | Switch.cs:115:17:115:17 | access to parameter s | +| Switch.cs:115:9:119:9 | After switch (...) {...} | Switch.cs:120:9:120:18 | Before return ...; | +| Switch.cs:115:9:119:9 | switch (...) {...} | Switch.cs:115:17:115:24 | Before access to property Length | | Switch.cs:115:17:115:17 | access to parameter s | Switch.cs:115:17:115:24 | access to property Length | -| Switch.cs:115:17:115:24 | access to property Length | Switch.cs:117:13:117:35 | case ...: | +| Switch.cs:115:17:115:24 | After access to property Length | Switch.cs:117:13:117:35 | case ...: | +| Switch.cs:115:17:115:24 | Before access to property Length | Switch.cs:115:17:115:17 | access to parameter s | +| Switch.cs:115:17:115:24 | access to property Length | Switch.cs:115:17:115:24 | After access to property Length | +| Switch.cs:117:13:117:35 | After case ...: [match] | Switch.cs:117:25:117:34 | Before ... == ... | | Switch.cs:117:13:117:35 | case ...: | Switch.cs:117:18:117:18 | 3 | -| Switch.cs:117:18:117:18 | 3 | Switch.cs:117:25:117:25 | access to parameter s | -| Switch.cs:117:18:117:18 | 3 | Switch.cs:118:13:118:34 | case ...: | +| Switch.cs:117:18:117:18 | 3 | Switch.cs:117:18:117:18 | After 3 [match] | +| Switch.cs:117:18:117:18 | 3 | Switch.cs:117:18:117:18 | After 3 [no-match] | +| Switch.cs:117:18:117:18 | After 3 [match] | Switch.cs:117:13:117:35 | After case ...: [match] | +| Switch.cs:117:18:117:18 | After 3 [no-match] | Switch.cs:117:13:117:35 | After case ...: [no-match] | | Switch.cs:117:25:117:25 | access to parameter s | Switch.cs:117:30:117:34 | "foo" | -| Switch.cs:117:25:117:34 | ... == ... | Switch.cs:117:44:117:44 | 1 | +| Switch.cs:117:25:117:34 | ... == ... | Switch.cs:117:25:117:34 | After ... == ... [false] | +| Switch.cs:117:25:117:34 | ... == ... | Switch.cs:117:25:117:34 | After ... == ... [true] | +| Switch.cs:117:25:117:34 | After ... == ... [true] | Switch.cs:117:37:117:45 | Before return ...; | +| Switch.cs:117:25:117:34 | Before ... == ... | Switch.cs:117:25:117:25 | access to parameter s | | Switch.cs:117:30:117:34 | "foo" | Switch.cs:117:25:117:34 | ... == ... | +| Switch.cs:117:37:117:45 | Before return ...; | Switch.cs:117:44:117:44 | 1 | | Switch.cs:117:44:117:44 | 1 | Switch.cs:117:37:117:45 | return ...; | +| Switch.cs:118:13:118:34 | After case ...: [match] | Switch.cs:118:25:118:33 | Before ... == ... | | Switch.cs:118:13:118:34 | case ...: | Switch.cs:118:18:118:18 | 2 | -| Switch.cs:118:18:118:18 | 2 | Switch.cs:118:25:118:25 | access to parameter s | -| Switch.cs:118:18:118:18 | 2 | Switch.cs:120:17:120:17 | 1 | +| Switch.cs:118:18:118:18 | 2 | Switch.cs:118:18:118:18 | After 2 [match] | +| Switch.cs:118:18:118:18 | 2 | Switch.cs:118:18:118:18 | After 2 [no-match] | +| Switch.cs:118:18:118:18 | After 2 [match] | Switch.cs:118:13:118:34 | After case ...: [match] | +| Switch.cs:118:18:118:18 | After 2 [no-match] | Switch.cs:118:13:118:34 | After case ...: [no-match] | | Switch.cs:118:25:118:25 | access to parameter s | Switch.cs:118:30:118:33 | "fu" | -| Switch.cs:118:25:118:33 | ... == ... | Switch.cs:118:43:118:43 | 2 | +| Switch.cs:118:25:118:33 | ... == ... | Switch.cs:118:25:118:33 | After ... == ... [false] | +| Switch.cs:118:25:118:33 | ... == ... | Switch.cs:118:25:118:33 | After ... == ... [true] | +| Switch.cs:118:25:118:33 | After ... == ... [true] | Switch.cs:118:36:118:44 | Before return ...; | +| Switch.cs:118:25:118:33 | Before ... == ... | Switch.cs:118:25:118:25 | access to parameter s | | Switch.cs:118:30:118:33 | "fu" | Switch.cs:118:25:118:33 | ... == ... | +| Switch.cs:118:36:118:44 | Before return ...; | Switch.cs:118:43:118:43 | 2 | | Switch.cs:118:43:118:43 | 2 | Switch.cs:118:36:118:44 | return ...; | -| Switch.cs:120:16:120:17 | -... | Switch.cs:120:9:120:18 | return ...; | +| Switch.cs:120:9:120:18 | Before return ...; | Switch.cs:120:16:120:17 | Before -... | +| Switch.cs:120:16:120:17 | -... | Switch.cs:120:16:120:17 | After -... | +| Switch.cs:120:16:120:17 | After -... | Switch.cs:120:9:120:18 | return ...; | +| Switch.cs:120:16:120:17 | Before -... | Switch.cs:120:17:120:17 | 1 | | Switch.cs:120:17:120:17 | 1 | Switch.cs:120:16:120:17 | -... | -| Switch.cs:123:10:123:12 | enter M11 | Switch.cs:124:5:127:5 | {...} | -| Switch.cs:123:10:123:12 | exit M11 (normal) | Switch.cs:123:10:123:12 | exit M11 | +| Switch.cs:123:10:123:12 | Entry | Switch.cs:123:21:123:21 | o | +| Switch.cs:123:10:123:12 | Normal Exit | Switch.cs:123:10:123:12 | Exit | +| Switch.cs:123:21:123:21 | o | Switch.cs:124:5:127:5 | {...} | | Switch.cs:124:5:127:5 | {...} | Switch.cs:125:9:126:19 | if (...) ... | -| Switch.cs:125:9:126:19 | if (...) ... | Switch.cs:125:13:125:13 | access to parameter o | -| Switch.cs:125:13:125:13 | access to parameter o | Switch.cs:125:24:125:29 | Boolean b | -| Switch.cs:125:13:125:48 | [true] ... switch { ... } | Switch.cs:126:13:126:19 | return ...; | -| Switch.cs:125:24:125:29 | Boolean b | Switch.cs:125:34:125:34 | access to local variable b | -| Switch.cs:125:24:125:29 | Boolean b | Switch.cs:125:37:125:37 | _ | -| Switch.cs:125:24:125:34 | [true] ... => ... | Switch.cs:125:13:125:48 | [true] ... switch { ... } | -| Switch.cs:125:34:125:34 | access to local variable b | Switch.cs:125:24:125:34 | [false] ... => ... | -| Switch.cs:125:34:125:34 | access to local variable b | Switch.cs:125:24:125:34 | [true] ... => ... | -| Switch.cs:125:37:125:37 | _ | Switch.cs:125:42:125:46 | false | -| Switch.cs:125:42:125:46 | false | Switch.cs:125:37:125:46 | [false] ... => ... | -| Switch.cs:129:12:129:14 | enter M12 | Switch.cs:130:5:132:5 | {...} | -| Switch.cs:129:12:129:14 | exit M12 (normal) | Switch.cs:129:12:129:14 | exit M12 | -| Switch.cs:130:5:132:5 | {...} | Switch.cs:131:17:131:17 | access to parameter o | -| Switch.cs:131:9:131:67 | return ...; | Switch.cs:129:12:129:14 | exit M12 (normal) | -| Switch.cs:131:17:131:17 | access to parameter o | Switch.cs:131:28:131:35 | String s | -| Switch.cs:131:17:131:53 | [non-null] ... switch { ... } | Switch.cs:131:16:131:66 | call to method ToString | -| Switch.cs:131:28:131:35 | String s | Switch.cs:131:40:131:40 | access to local variable s | -| Switch.cs:131:28:131:35 | String s | Switch.cs:131:43:131:43 | _ | -| Switch.cs:131:28:131:40 | [non-null] ... => ... | Switch.cs:131:17:131:53 | [non-null] ... switch { ... } | -| Switch.cs:131:40:131:40 | access to local variable s | Switch.cs:131:28:131:40 | [non-null] ... => ... | -| Switch.cs:131:40:131:40 | access to local variable s | Switch.cs:131:28:131:40 | [null] ... => ... | -| Switch.cs:131:43:131:43 | _ | Switch.cs:131:48:131:51 | null | -| Switch.cs:131:48:131:51 | null | Switch.cs:131:43:131:51 | [null] ... => ... | -| Switch.cs:134:9:134:11 | enter M13 | Switch.cs:135:5:142:5 | {...} | -| Switch.cs:134:9:134:11 | exit M13 (normal) | Switch.cs:134:9:134:11 | exit M13 | +| Switch.cs:125:9:126:19 | After if (...) ... | Switch.cs:124:5:127:5 | After {...} | +| Switch.cs:125:9:126:19 | if (...) ... | Switch.cs:125:13:125:48 | ... switch { ... } | +| Switch.cs:125:13:125:13 | access to parameter o | Switch.cs:125:24:125:34 | ... => ... | +| Switch.cs:125:13:125:48 | ... switch { ... } | Switch.cs:125:13:125:13 | access to parameter o | +| Switch.cs:125:13:125:48 | After ... switch { ... } [false] | Switch.cs:125:9:126:19 | After if (...) ... | +| Switch.cs:125:13:125:48 | After ... switch { ... } [true] | Switch.cs:126:13:126:19 | Before return ...; | +| Switch.cs:125:24:125:29 | After Boolean b [match] | Switch.cs:125:24:125:34 | After ... => ... [match] | +| Switch.cs:125:24:125:29 | After Boolean b [no-match] | Switch.cs:125:24:125:34 | After ... => ... [no-match] | +| Switch.cs:125:24:125:29 | Boolean b | Switch.cs:125:24:125:29 | After Boolean b [match] | +| Switch.cs:125:24:125:29 | Boolean b | Switch.cs:125:24:125:29 | After Boolean b [no-match] | +| Switch.cs:125:24:125:34 | ... => ... | Switch.cs:125:24:125:29 | Boolean b | +| Switch.cs:125:24:125:34 | After ... => ... [match] | Switch.cs:125:34:125:34 | access to local variable b | +| Switch.cs:125:24:125:34 | After ... => ... [no-match] | Switch.cs:125:37:125:46 | ... => ... | +| Switch.cs:125:37:125:37 | After _ [match] | Switch.cs:125:37:125:46 | After ... => ... [match] | +| Switch.cs:125:37:125:37 | _ | Switch.cs:125:37:125:37 | After _ [match] | +| Switch.cs:125:37:125:46 | ... => ... | Switch.cs:125:37:125:37 | _ | +| Switch.cs:125:37:125:46 | After ... => ... [match] | Switch.cs:125:42:125:46 | false | +| Switch.cs:126:13:126:19 | Before return ...; | Switch.cs:126:13:126:19 | return ...; | +| Switch.cs:129:12:129:14 | Entry | Switch.cs:129:23:129:23 | o | +| Switch.cs:129:12:129:14 | Normal Exit | Switch.cs:129:12:129:14 | Exit | +| Switch.cs:129:23:129:23 | o | Switch.cs:130:5:132:5 | {...} | +| Switch.cs:130:5:132:5 | {...} | Switch.cs:131:9:131:67 | Before return ...; | +| Switch.cs:131:9:131:67 | Before return ...; | Switch.cs:131:16:131:66 | Before call to method ToString | +| Switch.cs:131:9:131:67 | return ...; | Switch.cs:129:12:129:14 | Normal Exit | +| Switch.cs:131:16:131:66 | After call to method ToString | Switch.cs:131:9:131:67 | return ...; | +| Switch.cs:131:16:131:66 | Before call to method ToString | Switch.cs:131:17:131:53 | ... switch { ... } | +| Switch.cs:131:17:131:17 | access to parameter o | Switch.cs:131:28:131:40 | ... => ... | +| Switch.cs:131:17:131:53 | ... switch { ... } | Switch.cs:131:17:131:17 | access to parameter o | +| Switch.cs:131:17:131:53 | After ... switch { ... } [non-null] | Switch.cs:131:16:131:66 | call to method ToString | +| Switch.cs:131:28:131:35 | After String s [match] | Switch.cs:131:28:131:40 | After ... => ... [match] | +| Switch.cs:131:28:131:35 | After String s [no-match] | Switch.cs:131:28:131:40 | After ... => ... [no-match] | +| Switch.cs:131:28:131:35 | String s | Switch.cs:131:28:131:35 | After String s [match] | +| Switch.cs:131:28:131:35 | String s | Switch.cs:131:28:131:35 | After String s [no-match] | +| Switch.cs:131:28:131:40 | ... => ... | Switch.cs:131:28:131:35 | String s | +| Switch.cs:131:28:131:40 | After ... => ... [match] | Switch.cs:131:40:131:40 | access to local variable s | +| Switch.cs:131:28:131:40 | After ... => ... [no-match] | Switch.cs:131:43:131:51 | ... => ... | +| Switch.cs:131:43:131:43 | After _ [match] | Switch.cs:131:43:131:51 | After ... => ... [match] | +| Switch.cs:131:43:131:43 | _ | Switch.cs:131:43:131:43 | After _ [match] | +| Switch.cs:131:43:131:51 | ... => ... | Switch.cs:131:43:131:43 | _ | +| Switch.cs:131:43:131:51 | After ... => ... [match] | Switch.cs:131:48:131:51 | null | +| Switch.cs:134:9:134:11 | Entry | Switch.cs:134:17:134:17 | i | +| Switch.cs:134:9:134:11 | Normal Exit | Switch.cs:134:9:134:11 | Exit | +| Switch.cs:134:17:134:17 | i | Switch.cs:135:5:142:5 | {...} | | Switch.cs:135:5:142:5 | {...} | Switch.cs:136:9:141:9 | switch (...) {...} | | Switch.cs:136:9:141:9 | switch (...) {...} | Switch.cs:136:17:136:17 | access to parameter i | | Switch.cs:136:17:136:17 | access to parameter i | Switch.cs:139:13:139:19 | case ...: | -| Switch.cs:138:13:138:20 | default: | Switch.cs:138:30:138:30 | 1 | -| Switch.cs:138:29:138:30 | -... | Switch.cs:138:22:138:31 | return ...; | +| Switch.cs:138:13:138:20 | After default: [match] | Switch.cs:138:22:138:31 | Before return ...; | +| Switch.cs:138:13:138:20 | default: | Switch.cs:138:13:138:20 | After default: [match] | +| Switch.cs:138:22:138:31 | Before return ...; | Switch.cs:138:29:138:30 | Before -... | +| Switch.cs:138:29:138:30 | -... | Switch.cs:138:29:138:30 | After -... | +| Switch.cs:138:29:138:30 | After -... | Switch.cs:138:22:138:31 | return ...; | +| Switch.cs:138:29:138:30 | Before -... | Switch.cs:138:30:138:30 | 1 | | Switch.cs:138:30:138:30 | 1 | Switch.cs:138:29:138:30 | -... | +| Switch.cs:139:13:139:19 | After case ...: [match] | Switch.cs:139:21:139:29 | Before return ...; | +| Switch.cs:139:13:139:19 | After case ...: [no-match] | Switch.cs:140:13:140:19 | case ...: | | Switch.cs:139:13:139:19 | case ...: | Switch.cs:139:18:139:18 | 1 | -| Switch.cs:139:18:139:18 | 1 | Switch.cs:139:28:139:28 | 1 | -| Switch.cs:139:18:139:18 | 1 | Switch.cs:140:13:140:19 | case ...: | +| Switch.cs:139:18:139:18 | 1 | Switch.cs:139:18:139:18 | After 1 [match] | +| Switch.cs:139:18:139:18 | 1 | Switch.cs:139:18:139:18 | After 1 [no-match] | +| Switch.cs:139:18:139:18 | After 1 [match] | Switch.cs:139:13:139:19 | After case ...: [match] | +| Switch.cs:139:18:139:18 | After 1 [no-match] | Switch.cs:139:13:139:19 | After case ...: [no-match] | +| Switch.cs:139:21:139:29 | Before return ...; | Switch.cs:139:28:139:28 | 1 | | Switch.cs:139:28:139:28 | 1 | Switch.cs:139:21:139:29 | return ...; | +| Switch.cs:140:13:140:19 | After case ...: [match] | Switch.cs:140:21:140:29 | Before return ...; | +| Switch.cs:140:13:140:19 | After case ...: [no-match] | Switch.cs:138:13:138:20 | default: | | Switch.cs:140:13:140:19 | case ...: | Switch.cs:140:18:140:18 | 2 | -| Switch.cs:140:18:140:18 | 2 | Switch.cs:138:13:138:20 | default: | -| Switch.cs:140:18:140:18 | 2 | Switch.cs:140:28:140:28 | 2 | +| Switch.cs:140:18:140:18 | 2 | Switch.cs:140:18:140:18 | After 2 [match] | +| Switch.cs:140:18:140:18 | 2 | Switch.cs:140:18:140:18 | After 2 [no-match] | +| Switch.cs:140:18:140:18 | After 2 [match] | Switch.cs:140:13:140:19 | After case ...: [match] | +| Switch.cs:140:18:140:18 | After 2 [no-match] | Switch.cs:140:13:140:19 | After case ...: [no-match] | +| Switch.cs:140:21:140:29 | Before return ...; | Switch.cs:140:28:140:28 | 2 | | Switch.cs:140:28:140:28 | 2 | Switch.cs:140:21:140:29 | return ...; | -| Switch.cs:144:9:144:11 | enter M14 | Switch.cs:145:5:152:5 | {...} | -| Switch.cs:144:9:144:11 | exit M14 (normal) | Switch.cs:144:9:144:11 | exit M14 | +| Switch.cs:144:9:144:11 | Entry | Switch.cs:144:17:144:17 | i | +| Switch.cs:144:9:144:11 | Normal Exit | Switch.cs:144:9:144:11 | Exit | +| Switch.cs:144:17:144:17 | i | Switch.cs:145:5:152:5 | {...} | | Switch.cs:145:5:152:5 | {...} | Switch.cs:146:9:151:9 | switch (...) {...} | | Switch.cs:146:9:151:9 | switch (...) {...} | Switch.cs:146:17:146:17 | access to parameter i | | Switch.cs:146:17:146:17 | access to parameter i | Switch.cs:148:13:148:19 | case ...: | +| Switch.cs:148:13:148:19 | After case ...: [match] | Switch.cs:148:21:148:29 | Before return ...; | +| Switch.cs:148:13:148:19 | After case ...: [no-match] | Switch.cs:150:13:150:19 | case ...: | | Switch.cs:148:13:148:19 | case ...: | Switch.cs:148:18:148:18 | 1 | -| Switch.cs:148:18:148:18 | 1 | Switch.cs:148:28:148:28 | 1 | -| Switch.cs:148:18:148:18 | 1 | Switch.cs:150:13:150:19 | case ...: | +| Switch.cs:148:18:148:18 | 1 | Switch.cs:148:18:148:18 | After 1 [match] | +| Switch.cs:148:18:148:18 | 1 | Switch.cs:148:18:148:18 | After 1 [no-match] | +| Switch.cs:148:18:148:18 | After 1 [match] | Switch.cs:148:13:148:19 | After case ...: [match] | +| Switch.cs:148:18:148:18 | After 1 [no-match] | Switch.cs:148:13:148:19 | After case ...: [no-match] | +| Switch.cs:148:21:148:29 | Before return ...; | Switch.cs:148:28:148:28 | 1 | | Switch.cs:148:28:148:28 | 1 | Switch.cs:148:21:148:29 | return ...; | -| Switch.cs:149:13:149:20 | default: | Switch.cs:149:30:149:30 | 1 | -| Switch.cs:149:29:149:30 | -... | Switch.cs:149:22:149:31 | return ...; | +| Switch.cs:149:13:149:20 | After default: [match] | Switch.cs:149:22:149:31 | Before return ...; | +| Switch.cs:149:13:149:20 | default: | Switch.cs:149:13:149:20 | After default: [match] | +| Switch.cs:149:22:149:31 | Before return ...; | Switch.cs:149:29:149:30 | Before -... | +| Switch.cs:149:29:149:30 | -... | Switch.cs:149:29:149:30 | After -... | +| Switch.cs:149:29:149:30 | After -... | Switch.cs:149:22:149:31 | return ...; | +| Switch.cs:149:29:149:30 | Before -... | Switch.cs:149:30:149:30 | 1 | | Switch.cs:149:30:149:30 | 1 | Switch.cs:149:29:149:30 | -... | +| Switch.cs:150:13:150:19 | After case ...: [match] | Switch.cs:150:21:150:29 | Before return ...; | +| Switch.cs:150:13:150:19 | After case ...: [no-match] | Switch.cs:149:13:149:20 | default: | | Switch.cs:150:13:150:19 | case ...: | Switch.cs:150:18:150:18 | 2 | -| Switch.cs:150:18:150:18 | 2 | Switch.cs:149:13:149:20 | default: | -| Switch.cs:150:18:150:18 | 2 | Switch.cs:150:28:150:28 | 2 | +| Switch.cs:150:18:150:18 | 2 | Switch.cs:150:18:150:18 | After 2 [match] | +| Switch.cs:150:18:150:18 | 2 | Switch.cs:150:18:150:18 | After 2 [no-match] | +| Switch.cs:150:18:150:18 | After 2 [match] | Switch.cs:150:13:150:19 | After case ...: [match] | +| Switch.cs:150:18:150:18 | After 2 [no-match] | Switch.cs:150:13:150:19 | After case ...: [no-match] | +| Switch.cs:150:21:150:29 | Before return ...; | Switch.cs:150:28:150:28 | 2 | | Switch.cs:150:28:150:28 | 2 | Switch.cs:150:21:150:29 | return ...; | -| Switch.cs:154:10:154:12 | enter M15 | Switch.cs:155:5:161:5 | {...} | +| Switch.cs:154:10:154:12 | Entry | Switch.cs:154:19:154:19 | b | +| Switch.cs:154:10:154:12 | Normal Exit | Switch.cs:154:10:154:12 | Exit | +| Switch.cs:154:19:154:19 | b | Switch.cs:155:5:161:5 | {...} | +| Switch.cs:155:5:161:5 | After {...} | Switch.cs:154:10:154:12 | Normal Exit | | Switch.cs:155:5:161:5 | {...} | Switch.cs:156:9:156:55 | ... ...; | -| Switch.cs:156:9:156:55 | ... ...; | Switch.cs:156:17:156:17 | access to parameter b | -| Switch.cs:156:13:156:54 | String s = ... | Switch.cs:157:9:160:49 | if (...) ... | -| Switch.cs:156:17:156:17 | access to parameter b | Switch.cs:156:28:156:31 | true | -| Switch.cs:156:17:156:54 | ... switch { ... } | Switch.cs:156:13:156:54 | String s = ... | -| Switch.cs:156:28:156:31 | true | Switch.cs:156:36:156:38 | "a" | -| Switch.cs:156:28:156:31 | true | Switch.cs:156:41:156:45 | false | -| Switch.cs:156:36:156:38 | "a" | Switch.cs:156:28:156:38 | ... => ... | -| Switch.cs:156:41:156:45 | false | Switch.cs:154:10:154:12 | exit M15 (abnormal) | -| Switch.cs:156:41:156:45 | false | Switch.cs:156:50:156:52 | "b" | -| Switch.cs:156:50:156:52 | "b" | Switch.cs:156:41:156:52 | ... => ... | +| Switch.cs:156:9:156:55 | ... ...; | Switch.cs:156:13:156:54 | Before String s = ... | +| Switch.cs:156:9:156:55 | After ... ...; | Switch.cs:157:9:160:49 | if (...) ... | +| Switch.cs:156:13:156:13 | access to local variable s | Switch.cs:156:17:156:54 | ... switch { ... } | +| Switch.cs:156:13:156:54 | After String s = ... | Switch.cs:156:9:156:55 | After ... ...; | +| Switch.cs:156:13:156:54 | Before String s = ... | Switch.cs:156:13:156:13 | access to local variable s | +| Switch.cs:156:13:156:54 | String s = ... | Switch.cs:156:13:156:54 | After String s = ... | +| Switch.cs:156:17:156:17 | access to parameter b | Switch.cs:156:28:156:38 | ... => ... | +| Switch.cs:156:17:156:54 | ... switch { ... } | Switch.cs:156:17:156:17 | access to parameter b | +| Switch.cs:156:17:156:54 | After ... switch { ... } | Switch.cs:156:13:156:54 | String s = ... | +| Switch.cs:156:28:156:31 | After true [match] | Switch.cs:156:28:156:38 | After ... => ... [match] | +| Switch.cs:156:28:156:31 | After true [no-match] | Switch.cs:156:28:156:38 | After ... => ... [no-match] | +| Switch.cs:156:28:156:31 | true | Switch.cs:156:28:156:31 | After true [match] | +| Switch.cs:156:28:156:31 | true | Switch.cs:156:28:156:31 | After true [no-match] | +| Switch.cs:156:28:156:38 | ... => ... | Switch.cs:156:28:156:31 | true | +| Switch.cs:156:28:156:38 | After ... => ... [match] | Switch.cs:156:36:156:38 | "a" | +| Switch.cs:156:28:156:38 | After ... => ... [no-match] | Switch.cs:156:41:156:52 | ... => ... | +| Switch.cs:156:41:156:45 | After false [match] | Switch.cs:156:41:156:52 | After ... => ... [match] | +| Switch.cs:156:41:156:45 | After false [no-match] | Switch.cs:156:41:156:52 | After ... => ... [no-match] | +| Switch.cs:156:41:156:45 | false | Switch.cs:156:41:156:45 | After false [match] | +| Switch.cs:156:41:156:45 | false | Switch.cs:156:41:156:45 | After false [no-match] | +| Switch.cs:156:41:156:52 | ... => ... | Switch.cs:156:41:156:45 | false | +| Switch.cs:156:41:156:52 | After ... => ... [match] | Switch.cs:156:50:156:52 | "b" | +| Switch.cs:157:9:160:49 | After if (...) ... | Switch.cs:155:5:161:5 | After {...} | | Switch.cs:157:9:160:49 | if (...) ... | Switch.cs:157:13:157:13 | access to parameter b | -| Switch.cs:157:13:157:13 | access to parameter b | Switch.cs:158:13:158:49 | ...; | -| Switch.cs:157:13:157:13 | access to parameter b | Switch.cs:160:13:160:49 | ...; | -| Switch.cs:158:13:158:49 | ...; | Switch.cs:158:40:158:43 | "a = " | -| Switch.cs:158:38:158:47 | $"..." | Switch.cs:158:13:158:48 | call to method WriteLine | -| Switch.cs:158:40:158:43 | "a = " | Switch.cs:158:45:158:45 | access to local variable s | -| Switch.cs:158:44:158:46 | {...} | Switch.cs:158:38:158:47 | $"..." | +| Switch.cs:157:13:157:13 | After access to parameter b [false] | Switch.cs:160:13:160:49 | ...; | +| Switch.cs:157:13:157:13 | After access to parameter b [true] | Switch.cs:158:13:158:49 | ...; | +| Switch.cs:157:13:157:13 | access to parameter b | Switch.cs:157:13:157:13 | After access to parameter b [false] | +| Switch.cs:157:13:157:13 | access to parameter b | Switch.cs:157:13:157:13 | After access to parameter b [true] | +| Switch.cs:158:13:158:48 | After call to method WriteLine | Switch.cs:158:13:158:49 | After ...; | +| Switch.cs:158:13:158:48 | Before call to method WriteLine | Switch.cs:158:38:158:47 | Before $"..." | +| Switch.cs:158:13:158:48 | call to method WriteLine | Switch.cs:158:13:158:48 | After call to method WriteLine | +| Switch.cs:158:13:158:49 | ...; | Switch.cs:158:13:158:48 | Before call to method WriteLine | +| Switch.cs:158:38:158:47 | $"..." | Switch.cs:158:38:158:47 | After $"..." | +| Switch.cs:158:38:158:47 | After $"..." | Switch.cs:158:13:158:48 | call to method WriteLine | +| Switch.cs:158:38:158:47 | Before $"..." | Switch.cs:158:40:158:43 | "a = " | +| Switch.cs:158:40:158:43 | "a = " | Switch.cs:158:44:158:46 | Before {...} | +| Switch.cs:158:44:158:46 | After {...} | Switch.cs:158:38:158:47 | $"..." | +| Switch.cs:158:44:158:46 | Before {...} | Switch.cs:158:45:158:45 | access to local variable s | +| Switch.cs:158:44:158:46 | {...} | Switch.cs:158:44:158:46 | After {...} | | Switch.cs:158:45:158:45 | access to local variable s | Switch.cs:158:44:158:46 | {...} | -| Switch.cs:160:13:160:49 | ...; | Switch.cs:160:40:160:43 | "b = " | -| Switch.cs:160:38:160:47 | $"..." | Switch.cs:160:13:160:48 | call to method WriteLine | -| Switch.cs:160:40:160:43 | "b = " | Switch.cs:160:45:160:45 | access to local variable s | -| Switch.cs:160:44:160:46 | {...} | Switch.cs:160:38:160:47 | $"..." | +| Switch.cs:160:13:160:48 | After call to method WriteLine | Switch.cs:160:13:160:49 | After ...; | +| Switch.cs:160:13:160:48 | Before call to method WriteLine | Switch.cs:160:38:160:47 | Before $"..." | +| Switch.cs:160:13:160:48 | call to method WriteLine | Switch.cs:160:13:160:48 | After call to method WriteLine | +| Switch.cs:160:13:160:49 | ...; | Switch.cs:160:13:160:48 | Before call to method WriteLine | +| Switch.cs:160:38:160:47 | $"..." | Switch.cs:160:38:160:47 | After $"..." | +| Switch.cs:160:38:160:47 | After $"..." | Switch.cs:160:13:160:48 | call to method WriteLine | +| Switch.cs:160:38:160:47 | Before $"..." | Switch.cs:160:40:160:43 | "b = " | +| Switch.cs:160:40:160:43 | "b = " | Switch.cs:160:44:160:46 | Before {...} | +| Switch.cs:160:44:160:46 | After {...} | Switch.cs:160:38:160:47 | $"..." | +| Switch.cs:160:44:160:46 | Before {...} | Switch.cs:160:45:160:45 | access to local variable s | +| Switch.cs:160:44:160:46 | {...} | Switch.cs:160:44:160:46 | After {...} | | Switch.cs:160:45:160:45 | access to local variable s | Switch.cs:160:44:160:46 | {...} | -| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:164:5:178:5 | {...} | -| Switch.cs:163:10:163:12 | exit M16 (normal) | Switch.cs:163:10:163:12 | exit M16 | +| Switch.cs:163:10:163:12 | Entry | Switch.cs:163:18:163:18 | i | +| Switch.cs:163:10:163:12 | Normal Exit | Switch.cs:163:10:163:12 | Exit | +| Switch.cs:163:18:163:18 | i | Switch.cs:164:5:178:5 | {...} | +| Switch.cs:164:5:178:5 | After {...} | Switch.cs:163:10:163:12 | Normal Exit | | Switch.cs:164:5:178:5 | {...} | Switch.cs:165:9:177:9 | switch (...) {...} | +| Switch.cs:165:9:177:9 | After switch (...) {...} | Switch.cs:164:5:178:5 | After {...} | | Switch.cs:165:9:177:9 | switch (...) {...} | Switch.cs:165:17:165:17 | access to parameter i | | Switch.cs:165:17:165:17 | access to parameter i | Switch.cs:167:13:167:19 | case ...: | +| Switch.cs:167:13:167:19 | After case ...: [no-match] | Switch.cs:168:13:168:19 | case ...: | | Switch.cs:167:13:167:19 | case ...: | Switch.cs:167:18:167:18 | 1 | -| Switch.cs:167:18:167:18 | 1 | Switch.cs:168:13:168:19 | case ...: | -| Switch.cs:167:18:167:18 | 1 | Switch.cs:169:17:169:51 | ...; | +| Switch.cs:167:18:167:18 | 1 | Switch.cs:167:18:167:18 | After 1 [match] | +| Switch.cs:167:18:167:18 | 1 | Switch.cs:167:18:167:18 | After 1 [no-match] | +| Switch.cs:167:18:167:18 | After 1 [match] | Switch.cs:167:13:167:19 | After case ...: [match] | +| Switch.cs:167:18:167:18 | After 1 [no-match] | Switch.cs:167:13:167:19 | After case ...: [no-match] | +| Switch.cs:168:13:168:19 | After case ...: [no-match] | Switch.cs:171:13:171:19 | case ...: | | Switch.cs:168:13:168:19 | case ...: | Switch.cs:168:18:168:18 | 2 | -| Switch.cs:168:18:168:18 | 2 | Switch.cs:171:13:171:19 | case ...: | -| Switch.cs:169:17:169:50 | call to method WriteLine | Switch.cs:170:17:170:22 | break; | -| Switch.cs:169:17:169:51 | ...; | Switch.cs:169:42:169:49 | "1 or 2" | +| Switch.cs:168:18:168:18 | 2 | Switch.cs:168:18:168:18 | After 2 [match] | +| Switch.cs:168:18:168:18 | 2 | Switch.cs:168:18:168:18 | After 2 [no-match] | +| Switch.cs:168:18:168:18 | After 2 [match] | Switch.cs:168:13:168:19 | After case ...: [match] | +| Switch.cs:168:18:168:18 | After 2 [no-match] | Switch.cs:168:13:168:19 | After case ...: [no-match] | +| Switch.cs:169:17:169:50 | After call to method WriteLine | Switch.cs:169:17:169:51 | After ...; | +| Switch.cs:169:17:169:50 | Before call to method WriteLine | Switch.cs:169:42:169:49 | "1 or 2" | +| Switch.cs:169:17:169:50 | call to method WriteLine | Switch.cs:169:17:169:50 | After call to method WriteLine | +| Switch.cs:169:17:169:51 | ...; | Switch.cs:169:17:169:50 | Before call to method WriteLine | +| Switch.cs:169:17:169:51 | After ...; | Switch.cs:170:17:170:22 | Before break; | | Switch.cs:169:42:169:49 | "1 or 2" | Switch.cs:169:17:169:50 | call to method WriteLine | +| Switch.cs:170:17:170:22 | Before break; | Switch.cs:170:17:170:22 | break; | +| Switch.cs:171:13:171:19 | After case ...: [match] | Switch.cs:172:17:172:46 | ...; | +| Switch.cs:171:13:171:19 | After case ...: [no-match] | Switch.cs:174:13:174:20 | default: | | Switch.cs:171:13:171:19 | case ...: | Switch.cs:171:18:171:18 | 3 | -| Switch.cs:171:18:171:18 | 3 | Switch.cs:172:17:172:46 | ...; | -| Switch.cs:171:18:171:18 | 3 | Switch.cs:174:13:174:20 | default: | -| Switch.cs:172:17:172:45 | call to method WriteLine | Switch.cs:173:17:173:22 | break; | -| Switch.cs:172:17:172:46 | ...; | Switch.cs:172:42:172:44 | "3" | +| Switch.cs:171:18:171:18 | 3 | Switch.cs:171:18:171:18 | After 3 [match] | +| Switch.cs:171:18:171:18 | 3 | Switch.cs:171:18:171:18 | After 3 [no-match] | +| Switch.cs:171:18:171:18 | After 3 [match] | Switch.cs:171:13:171:19 | After case ...: [match] | +| Switch.cs:171:18:171:18 | After 3 [no-match] | Switch.cs:171:13:171:19 | After case ...: [no-match] | +| Switch.cs:172:17:172:45 | After call to method WriteLine | Switch.cs:172:17:172:46 | After ...; | +| Switch.cs:172:17:172:45 | Before call to method WriteLine | Switch.cs:172:42:172:44 | "3" | +| Switch.cs:172:17:172:45 | call to method WriteLine | Switch.cs:172:17:172:45 | After call to method WriteLine | +| Switch.cs:172:17:172:46 | ...; | Switch.cs:172:17:172:45 | Before call to method WriteLine | +| Switch.cs:172:17:172:46 | After ...; | Switch.cs:173:17:173:22 | Before break; | | Switch.cs:172:42:172:44 | "3" | Switch.cs:172:17:172:45 | call to method WriteLine | -| Switch.cs:174:13:174:20 | default: | Switch.cs:175:17:175:48 | ...; | -| Switch.cs:175:17:175:47 | call to method WriteLine | Switch.cs:176:17:176:22 | break; | -| Switch.cs:175:17:175:48 | ...; | Switch.cs:175:42:175:46 | "def" | +| Switch.cs:173:17:173:22 | Before break; | Switch.cs:173:17:173:22 | break; | +| Switch.cs:174:13:174:20 | After default: [match] | Switch.cs:175:17:175:48 | ...; | +| Switch.cs:174:13:174:20 | default: | Switch.cs:174:13:174:20 | After default: [match] | +| Switch.cs:175:17:175:47 | After call to method WriteLine | Switch.cs:175:17:175:48 | After ...; | +| Switch.cs:175:17:175:47 | Before call to method WriteLine | Switch.cs:175:42:175:46 | "def" | +| Switch.cs:175:17:175:47 | call to method WriteLine | Switch.cs:175:17:175:47 | After call to method WriteLine | +| Switch.cs:175:17:175:48 | ...; | Switch.cs:175:17:175:47 | Before call to method WriteLine | +| Switch.cs:175:17:175:48 | After ...; | Switch.cs:176:17:176:22 | Before break; | | Switch.cs:175:42:175:46 | "def" | Switch.cs:175:17:175:47 | call to method WriteLine | -| TypeAccesses.cs:1:7:1:18 | call to constructor Object | TypeAccesses.cs:1:7:1:18 | {...} | -| TypeAccesses.cs:1:7:1:18 | call to method | TypeAccesses.cs:1:7:1:18 | call to constructor Object | -| TypeAccesses.cs:1:7:1:18 | enter TypeAccesses | TypeAccesses.cs:1:7:1:18 | this access | -| TypeAccesses.cs:1:7:1:18 | exit TypeAccesses (normal) | TypeAccesses.cs:1:7:1:18 | exit TypeAccesses | +| Switch.cs:176:17:176:22 | Before break; | Switch.cs:176:17:176:22 | break; | +| TypeAccesses.cs:1:7:1:18 | After call to constructor Object | TypeAccesses.cs:1:7:1:18 | {...} | +| TypeAccesses.cs:1:7:1:18 | After call to method | TypeAccesses.cs:1:7:1:18 | Before call to constructor Object | +| TypeAccesses.cs:1:7:1:18 | Before call to constructor Object | TypeAccesses.cs:1:7:1:18 | call to constructor Object | +| TypeAccesses.cs:1:7:1:18 | Before call to method | TypeAccesses.cs:1:7:1:18 | this access | +| TypeAccesses.cs:1:7:1:18 | Entry | TypeAccesses.cs:1:7:1:18 | Before call to method | +| TypeAccesses.cs:1:7:1:18 | Normal Exit | TypeAccesses.cs:1:7:1:18 | Exit | +| TypeAccesses.cs:1:7:1:18 | call to constructor Object | TypeAccesses.cs:1:7:1:18 | After call to constructor Object | +| TypeAccesses.cs:1:7:1:18 | call to method | TypeAccesses.cs:1:7:1:18 | After call to method | | TypeAccesses.cs:1:7:1:18 | this access | TypeAccesses.cs:1:7:1:18 | call to method | -| TypeAccesses.cs:1:7:1:18 | {...} | TypeAccesses.cs:1:7:1:18 | exit TypeAccesses (normal) | -| TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:4:5:9:5 | {...} | -| TypeAccesses.cs:3:10:3:10 | exit M (normal) | TypeAccesses.cs:3:10:3:10 | exit M | +| TypeAccesses.cs:1:7:1:18 | {...} | TypeAccesses.cs:1:7:1:18 | Normal Exit | +| TypeAccesses.cs:3:10:3:10 | Entry | TypeAccesses.cs:3:19:3:19 | o | +| TypeAccesses.cs:3:10:3:10 | Normal Exit | TypeAccesses.cs:3:10:3:10 | Exit | +| TypeAccesses.cs:3:19:3:19 | o | TypeAccesses.cs:4:5:9:5 | {...} | +| TypeAccesses.cs:4:5:9:5 | After {...} | TypeAccesses.cs:3:10:3:10 | Normal Exit | | TypeAccesses.cs:4:5:9:5 | {...} | TypeAccesses.cs:5:9:5:26 | ... ...; | -| TypeAccesses.cs:5:9:5:26 | ... ...; | TypeAccesses.cs:5:25:5:25 | access to parameter o | -| TypeAccesses.cs:5:13:5:25 | String s = ... | TypeAccesses.cs:6:9:6:24 | ...; | -| TypeAccesses.cs:5:17:5:25 | (...) ... | TypeAccesses.cs:5:13:5:25 | String s = ... | +| TypeAccesses.cs:5:9:5:26 | ... ...; | TypeAccesses.cs:5:13:5:25 | Before String s = ... | +| TypeAccesses.cs:5:9:5:26 | After ... ...; | TypeAccesses.cs:6:9:6:24 | ...; | +| TypeAccesses.cs:5:13:5:13 | access to local variable s | TypeAccesses.cs:5:17:5:25 | Before (...) ... | +| TypeAccesses.cs:5:13:5:25 | After String s = ... | TypeAccesses.cs:5:9:5:26 | After ... ...; | +| TypeAccesses.cs:5:13:5:25 | Before String s = ... | TypeAccesses.cs:5:13:5:13 | access to local variable s | +| TypeAccesses.cs:5:13:5:25 | String s = ... | TypeAccesses.cs:5:13:5:25 | After String s = ... | +| TypeAccesses.cs:5:17:5:25 | (...) ... | TypeAccesses.cs:5:17:5:25 | After (...) ... | +| TypeAccesses.cs:5:17:5:25 | After (...) ... | TypeAccesses.cs:5:13:5:25 | String s = ... | +| TypeAccesses.cs:5:17:5:25 | Before (...) ... | TypeAccesses.cs:5:25:5:25 | access to parameter o | | TypeAccesses.cs:5:25:5:25 | access to parameter o | TypeAccesses.cs:5:17:5:25 | (...) ... | -| TypeAccesses.cs:6:9:6:23 | ... = ... | TypeAccesses.cs:7:9:7:25 | if (...) ... | -| TypeAccesses.cs:6:9:6:24 | ...; | TypeAccesses.cs:6:13:6:13 | access to parameter o | +| TypeAccesses.cs:6:9:6:9 | access to local variable s | TypeAccesses.cs:6:13:6:23 | Before ... as ... | +| TypeAccesses.cs:6:9:6:23 | ... = ... | TypeAccesses.cs:6:9:6:23 | After ... = ... | +| TypeAccesses.cs:6:9:6:23 | After ... = ... | TypeAccesses.cs:6:9:6:24 | After ...; | +| TypeAccesses.cs:6:9:6:23 | Before ... = ... | TypeAccesses.cs:6:9:6:9 | access to local variable s | +| TypeAccesses.cs:6:9:6:24 | ...; | TypeAccesses.cs:6:9:6:23 | Before ... = ... | +| TypeAccesses.cs:6:9:6:24 | After ...; | TypeAccesses.cs:7:9:7:25 | if (...) ... | | TypeAccesses.cs:6:13:6:13 | access to parameter o | TypeAccesses.cs:6:13:6:23 | ... as ... | -| TypeAccesses.cs:6:13:6:23 | ... as ... | TypeAccesses.cs:6:9:6:23 | ... = ... | -| TypeAccesses.cs:7:9:7:25 | if (...) ... | TypeAccesses.cs:7:13:7:13 | access to parameter o | -| TypeAccesses.cs:7:13:7:13 | access to parameter o | TypeAccesses.cs:7:18:7:22 | Int32 j | -| TypeAccesses.cs:7:13:7:22 | [true] ... is ... | TypeAccesses.cs:7:25:7:25 | ; | -| TypeAccesses.cs:7:18:7:22 | Int32 j | TypeAccesses.cs:7:13:7:22 | [false] ... is ... | -| TypeAccesses.cs:7:18:7:22 | Int32 j | TypeAccesses.cs:7:13:7:22 | [true] ... is ... | -| TypeAccesses.cs:8:9:8:28 | ... ...; | TypeAccesses.cs:8:17:8:27 | typeof(...) | -| TypeAccesses.cs:8:13:8:27 | Type t = ... | TypeAccesses.cs:3:10:3:10 | exit M (normal) | +| TypeAccesses.cs:6:13:6:23 | ... as ... | TypeAccesses.cs:6:13:6:23 | After ... as ... | +| TypeAccesses.cs:6:13:6:23 | After ... as ... | TypeAccesses.cs:6:9:6:23 | ... = ... | +| TypeAccesses.cs:6:13:6:23 | Before ... as ... | TypeAccesses.cs:6:13:6:13 | access to parameter o | +| TypeAccesses.cs:7:9:7:25 | After if (...) ... | TypeAccesses.cs:8:9:8:28 | ... ...; | +| TypeAccesses.cs:7:9:7:25 | if (...) ... | TypeAccesses.cs:7:13:7:22 | Before ... is ... | +| TypeAccesses.cs:7:13:7:13 | access to parameter o | TypeAccesses.cs:7:13:7:22 | ... is ... | +| TypeAccesses.cs:7:13:7:22 | ... is ... | TypeAccesses.cs:7:13:7:22 | After ... is ... [false] | +| TypeAccesses.cs:7:13:7:22 | ... is ... | TypeAccesses.cs:7:13:7:22 | [MatchTrue] ... is ... | +| TypeAccesses.cs:7:13:7:22 | After ... is ... [true] | TypeAccesses.cs:7:25:7:25 | ; | +| TypeAccesses.cs:7:13:7:22 | Before ... is ... | TypeAccesses.cs:7:13:7:13 | access to parameter o | +| TypeAccesses.cs:7:13:7:22 | [MatchTrue] ... is ... | TypeAccesses.cs:7:18:7:22 | Int32 j | +| TypeAccesses.cs:7:18:7:22 | Int32 j | TypeAccesses.cs:7:13:7:22 | After ... is ... [true] | +| TypeAccesses.cs:8:9:8:28 | ... ...; | TypeAccesses.cs:8:13:8:27 | Before Type t = ... | +| TypeAccesses.cs:8:9:8:28 | After ... ...; | TypeAccesses.cs:4:5:9:5 | After {...} | +| TypeAccesses.cs:8:13:8:13 | access to local variable t | TypeAccesses.cs:8:17:8:27 | typeof(...) | +| TypeAccesses.cs:8:13:8:27 | After Type t = ... | TypeAccesses.cs:8:9:8:28 | After ... ...; | +| TypeAccesses.cs:8:13:8:27 | Before Type t = ... | TypeAccesses.cs:8:13:8:13 | access to local variable t | +| TypeAccesses.cs:8:13:8:27 | Type t = ... | TypeAccesses.cs:8:13:8:27 | After Type t = ... | | TypeAccesses.cs:8:17:8:27 | typeof(...) | TypeAccesses.cs:8:13:8:27 | Type t = ... | -| VarDecls.cs:3:7:3:14 | call to constructor Object | VarDecls.cs:3:7:3:14 | {...} | -| VarDecls.cs:3:7:3:14 | call to method | VarDecls.cs:3:7:3:14 | call to constructor Object | -| VarDecls.cs:3:7:3:14 | enter VarDecls | VarDecls.cs:3:7:3:14 | this access | -| VarDecls.cs:3:7:3:14 | exit VarDecls (normal) | VarDecls.cs:3:7:3:14 | exit VarDecls | +| VarDecls.cs:3:7:3:14 | After call to constructor Object | VarDecls.cs:3:7:3:14 | {...} | +| VarDecls.cs:3:7:3:14 | After call to method | VarDecls.cs:3:7:3:14 | Before call to constructor Object | +| VarDecls.cs:3:7:3:14 | Before call to constructor Object | VarDecls.cs:3:7:3:14 | call to constructor Object | +| VarDecls.cs:3:7:3:14 | Before call to method | VarDecls.cs:3:7:3:14 | this access | +| VarDecls.cs:3:7:3:14 | Entry | VarDecls.cs:3:7:3:14 | Before call to method | +| VarDecls.cs:3:7:3:14 | Normal Exit | VarDecls.cs:3:7:3:14 | Exit | +| VarDecls.cs:3:7:3:14 | call to constructor Object | VarDecls.cs:3:7:3:14 | After call to constructor Object | +| VarDecls.cs:3:7:3:14 | call to method | VarDecls.cs:3:7:3:14 | After call to method | | VarDecls.cs:3:7:3:14 | this access | VarDecls.cs:3:7:3:14 | call to method | -| VarDecls.cs:3:7:3:14 | {...} | VarDecls.cs:3:7:3:14 | exit VarDecls (normal) | -| VarDecls.cs:5:18:5:19 | enter M1 | VarDecls.cs:6:5:11:5 | {...} | -| VarDecls.cs:5:18:5:19 | exit M1 (normal) | VarDecls.cs:5:18:5:19 | exit M1 | +| VarDecls.cs:3:7:3:14 | {...} | VarDecls.cs:3:7:3:14 | Normal Exit | +| VarDecls.cs:5:18:5:19 | Entry | VarDecls.cs:5:30:5:36 | strings | +| VarDecls.cs:5:18:5:19 | Normal Exit | VarDecls.cs:5:18:5:19 | Exit | +| VarDecls.cs:5:30:5:36 | strings | VarDecls.cs:6:5:11:5 | {...} | | VarDecls.cs:6:5:11:5 | {...} | VarDecls.cs:7:9:10:9 | fixed(...) { ... } | -| VarDecls.cs:7:9:10:9 | fixed(...) { ... } | VarDecls.cs:7:27:7:33 | access to parameter strings | -| VarDecls.cs:7:22:7:36 | Char* c1 = ... | VarDecls.cs:7:44:7:50 | access to parameter strings | +| VarDecls.cs:7:9:10:9 | fixed(...) { ... } | VarDecls.cs:7:22:7:36 | Before Char* c1 = ... | +| VarDecls.cs:7:22:7:23 | access to local variable c1 | VarDecls.cs:7:27:7:36 | Before (...) ... | +| VarDecls.cs:7:22:7:36 | After Char* c1 = ... | VarDecls.cs:7:39:7:53 | Before Char* c2 = ... | +| VarDecls.cs:7:22:7:36 | Before Char* c1 = ... | VarDecls.cs:7:22:7:23 | access to local variable c1 | +| VarDecls.cs:7:22:7:36 | Char* c1 = ... | VarDecls.cs:7:22:7:36 | After Char* c1 = ... | | VarDecls.cs:7:27:7:33 | access to parameter strings | VarDecls.cs:7:35:7:35 | 0 | -| VarDecls.cs:7:27:7:36 | (...) ... | VarDecls.cs:7:22:7:36 | Char* c1 = ... | -| VarDecls.cs:7:27:7:36 | access to array element | VarDecls.cs:7:27:7:36 | (...) ... | +| VarDecls.cs:7:27:7:36 | (...) ... | VarDecls.cs:7:27:7:36 | After (...) ... | +| VarDecls.cs:7:27:7:36 | After (...) ... | VarDecls.cs:7:22:7:36 | Char* c1 = ... | +| VarDecls.cs:7:27:7:36 | After access to array element | VarDecls.cs:7:27:7:36 | (...) ... | +| VarDecls.cs:7:27:7:36 | Before (...) ... | VarDecls.cs:7:27:7:36 | Before access to array element | +| VarDecls.cs:7:27:7:36 | Before access to array element | VarDecls.cs:7:27:7:33 | access to parameter strings | +| VarDecls.cs:7:27:7:36 | access to array element | VarDecls.cs:7:27:7:36 | After access to array element | | VarDecls.cs:7:35:7:35 | 0 | VarDecls.cs:7:27:7:36 | access to array element | -| VarDecls.cs:7:39:7:53 | Char* c2 = ... | VarDecls.cs:8:9:10:9 | {...} | +| VarDecls.cs:7:39:7:40 | access to local variable c2 | VarDecls.cs:7:44:7:53 | Before (...) ... | +| VarDecls.cs:7:39:7:53 | After Char* c2 = ... | VarDecls.cs:8:9:10:9 | {...} | +| VarDecls.cs:7:39:7:53 | Before Char* c2 = ... | VarDecls.cs:7:39:7:40 | access to local variable c2 | +| VarDecls.cs:7:39:7:53 | Char* c2 = ... | VarDecls.cs:7:39:7:53 | After Char* c2 = ... | | VarDecls.cs:7:44:7:50 | access to parameter strings | VarDecls.cs:7:52:7:52 | 1 | -| VarDecls.cs:7:44:7:53 | (...) ... | VarDecls.cs:7:39:7:53 | Char* c2 = ... | -| VarDecls.cs:7:44:7:53 | access to array element | VarDecls.cs:7:44:7:53 | (...) ... | +| VarDecls.cs:7:44:7:53 | (...) ... | VarDecls.cs:7:44:7:53 | After (...) ... | +| VarDecls.cs:7:44:7:53 | After (...) ... | VarDecls.cs:7:39:7:53 | Char* c2 = ... | +| VarDecls.cs:7:44:7:53 | After access to array element | VarDecls.cs:7:44:7:53 | (...) ... | +| VarDecls.cs:7:44:7:53 | Before (...) ... | VarDecls.cs:7:44:7:53 | Before access to array element | +| VarDecls.cs:7:44:7:53 | Before access to array element | VarDecls.cs:7:44:7:50 | access to parameter strings | +| VarDecls.cs:7:44:7:53 | access to array element | VarDecls.cs:7:44:7:53 | After access to array element | | VarDecls.cs:7:52:7:52 | 1 | VarDecls.cs:7:44:7:53 | access to array element | -| VarDecls.cs:8:9:10:9 | {...} | VarDecls.cs:9:27:9:28 | access to local variable c1 | -| VarDecls.cs:9:13:9:29 | return ...; | VarDecls.cs:5:18:5:19 | exit M1 (normal) | -| VarDecls.cs:9:20:9:28 | (...) ... | VarDecls.cs:9:13:9:29 | return ...; | +| VarDecls.cs:8:9:10:9 | {...} | VarDecls.cs:9:13:9:29 | Before return ...; | +| VarDecls.cs:9:13:9:29 | Before return ...; | VarDecls.cs:9:20:9:28 | Before (...) ... | +| VarDecls.cs:9:13:9:29 | return ...; | VarDecls.cs:5:18:5:19 | Normal Exit | +| VarDecls.cs:9:20:9:28 | (...) ... | VarDecls.cs:9:20:9:28 | After (...) ... | +| VarDecls.cs:9:20:9:28 | After (...) ... | VarDecls.cs:9:13:9:29 | return ...; | +| VarDecls.cs:9:20:9:28 | Before (...) ... | VarDecls.cs:9:27:9:28 | access to local variable c1 | | VarDecls.cs:9:27:9:28 | access to local variable c1 | VarDecls.cs:9:20:9:28 | (...) ... | -| VarDecls.cs:13:12:13:13 | enter M2 | VarDecls.cs:14:5:17:5 | {...} | -| VarDecls.cs:13:12:13:13 | exit M2 (normal) | VarDecls.cs:13:12:13:13 | exit M2 | +| VarDecls.cs:13:12:13:13 | Entry | VarDecls.cs:13:22:13:22 | s | +| VarDecls.cs:13:12:13:13 | Normal Exit | VarDecls.cs:13:12:13:13 | Exit | +| VarDecls.cs:13:22:13:22 | s | VarDecls.cs:14:5:17:5 | {...} | | VarDecls.cs:14:5:17:5 | {...} | VarDecls.cs:15:9:15:30 | ... ...; | -| VarDecls.cs:15:9:15:30 | ... ...; | VarDecls.cs:15:21:15:21 | access to parameter s | -| VarDecls.cs:15:16:15:21 | String s1 = ... | VarDecls.cs:15:29:15:29 | access to parameter s | +| VarDecls.cs:15:9:15:30 | ... ...; | VarDecls.cs:15:16:15:21 | Before String s1 = ... | +| VarDecls.cs:15:9:15:30 | After ... ...; | VarDecls.cs:16:9:16:23 | Before return ...; | +| VarDecls.cs:15:16:15:17 | access to local variable s1 | VarDecls.cs:15:21:15:21 | access to parameter s | +| VarDecls.cs:15:16:15:21 | After String s1 = ... | VarDecls.cs:15:24:15:29 | Before String s2 = ... | +| VarDecls.cs:15:16:15:21 | Before String s1 = ... | VarDecls.cs:15:16:15:17 | access to local variable s1 | +| VarDecls.cs:15:16:15:21 | String s1 = ... | VarDecls.cs:15:16:15:21 | After String s1 = ... | | VarDecls.cs:15:21:15:21 | access to parameter s | VarDecls.cs:15:16:15:21 | String s1 = ... | -| VarDecls.cs:15:24:15:29 | String s2 = ... | VarDecls.cs:16:16:16:17 | access to local variable s1 | +| VarDecls.cs:15:24:15:25 | access to local variable s2 | VarDecls.cs:15:29:15:29 | access to parameter s | +| VarDecls.cs:15:24:15:29 | After String s2 = ... | VarDecls.cs:15:9:15:30 | After ... ...; | +| VarDecls.cs:15:24:15:29 | Before String s2 = ... | VarDecls.cs:15:24:15:25 | access to local variable s2 | +| VarDecls.cs:15:24:15:29 | String s2 = ... | VarDecls.cs:15:24:15:29 | After String s2 = ... | | VarDecls.cs:15:29:15:29 | access to parameter s | VarDecls.cs:15:24:15:29 | String s2 = ... | -| VarDecls.cs:16:9:16:23 | return ...; | VarDecls.cs:13:12:13:13 | exit M2 (normal) | +| VarDecls.cs:16:9:16:23 | Before return ...; | VarDecls.cs:16:16:16:22 | Before ... + ... | +| VarDecls.cs:16:9:16:23 | return ...; | VarDecls.cs:13:12:13:13 | Normal Exit | | VarDecls.cs:16:16:16:17 | access to local variable s1 | VarDecls.cs:16:21:16:22 | access to local variable s2 | -| VarDecls.cs:16:16:16:22 | ... + ... | VarDecls.cs:16:9:16:23 | return ...; | +| VarDecls.cs:16:16:16:22 | ... + ... | VarDecls.cs:16:16:16:22 | After ... + ... | +| VarDecls.cs:16:16:16:22 | After ... + ... | VarDecls.cs:16:9:16:23 | return ...; | +| VarDecls.cs:16:16:16:22 | Before ... + ... | VarDecls.cs:16:16:16:17 | access to local variable s1 | | VarDecls.cs:16:21:16:22 | access to local variable s2 | VarDecls.cs:16:16:16:22 | ... + ... | -| VarDecls.cs:19:7:19:8 | enter M3 | VarDecls.cs:20:5:26:5 | {...} | -| VarDecls.cs:19:7:19:8 | exit M3 (normal) | VarDecls.cs:19:7:19:8 | exit M3 | +| VarDecls.cs:19:7:19:8 | Entry | VarDecls.cs:19:15:19:15 | b | +| VarDecls.cs:19:7:19:8 | Normal Exit | VarDecls.cs:19:7:19:8 | Exit | +| VarDecls.cs:19:15:19:15 | b | VarDecls.cs:20:5:26:5 | {...} | | VarDecls.cs:20:5:26:5 | {...} | VarDecls.cs:21:9:22:13 | using (...) {...} | -| VarDecls.cs:21:9:22:13 | using (...) {...} | VarDecls.cs:21:16:21:22 | object creation of type C | -| VarDecls.cs:21:16:21:22 | object creation of type C | VarDecls.cs:22:13:22:13 | ; | -| VarDecls.cs:22:13:22:13 | ; | VarDecls.cs:24:9:25:29 | using (...) {...} | -| VarDecls.cs:24:9:25:29 | using (...) {...} | VarDecls.cs:24:22:24:28 | object creation of type C | -| VarDecls.cs:24:18:24:28 | C x = ... | VarDecls.cs:24:35:24:41 | object creation of type C | -| VarDecls.cs:24:22:24:28 | object creation of type C | VarDecls.cs:24:18:24:28 | C x = ... | -| VarDecls.cs:24:31:24:41 | C y = ... | VarDecls.cs:25:20:25:20 | access to parameter b | -| VarDecls.cs:24:35:24:41 | object creation of type C | VarDecls.cs:24:31:24:41 | C y = ... | -| VarDecls.cs:25:13:25:29 | return ...; | VarDecls.cs:19:7:19:8 | exit M3 (normal) | -| VarDecls.cs:25:20:25:20 | access to parameter b | VarDecls.cs:25:24:25:24 | access to local variable x | -| VarDecls.cs:25:20:25:20 | access to parameter b | VarDecls.cs:25:28:25:28 | access to local variable y | -| VarDecls.cs:25:20:25:28 | ... ? ... : ... | VarDecls.cs:25:13:25:29 | return ...; | -| VarDecls.cs:28:11:28:11 | call to constructor Object | VarDecls.cs:28:11:28:11 | {...} | -| VarDecls.cs:28:11:28:11 | call to method | VarDecls.cs:28:11:28:11 | call to constructor Object | -| VarDecls.cs:28:11:28:11 | enter C | VarDecls.cs:28:11:28:11 | this access | -| VarDecls.cs:28:11:28:11 | exit C (normal) | VarDecls.cs:28:11:28:11 | exit C | +| VarDecls.cs:21:9:22:13 | After using (...) {...} | VarDecls.cs:24:9:25:29 | using (...) {...} | +| VarDecls.cs:21:9:22:13 | using (...) {...} | VarDecls.cs:21:16:21:22 | Before object creation of type C | +| VarDecls.cs:21:16:21:22 | After object creation of type C | VarDecls.cs:22:13:22:13 | ; | +| VarDecls.cs:21:16:21:22 | Before object creation of type C | VarDecls.cs:21:16:21:22 | object creation of type C | +| VarDecls.cs:21:16:21:22 | object creation of type C | VarDecls.cs:21:16:21:22 | After object creation of type C | +| VarDecls.cs:22:13:22:13 | ; | VarDecls.cs:21:9:22:13 | After using (...) {...} | +| VarDecls.cs:24:9:25:29 | using (...) {...} | VarDecls.cs:24:18:24:28 | Before C x = ... | +| VarDecls.cs:24:18:24:18 | access to local variable x | VarDecls.cs:24:22:24:28 | Before object creation of type C | +| VarDecls.cs:24:18:24:28 | After C x = ... | VarDecls.cs:24:31:24:41 | Before C y = ... | +| VarDecls.cs:24:18:24:28 | Before C x = ... | VarDecls.cs:24:18:24:18 | access to local variable x | +| VarDecls.cs:24:18:24:28 | C x = ... | VarDecls.cs:24:18:24:28 | After C x = ... | +| VarDecls.cs:24:22:24:28 | After object creation of type C | VarDecls.cs:24:18:24:28 | C x = ... | +| VarDecls.cs:24:22:24:28 | Before object creation of type C | VarDecls.cs:24:22:24:28 | object creation of type C | +| VarDecls.cs:24:22:24:28 | object creation of type C | VarDecls.cs:24:22:24:28 | After object creation of type C | +| VarDecls.cs:24:31:24:31 | access to local variable y | VarDecls.cs:24:35:24:41 | Before object creation of type C | +| VarDecls.cs:24:31:24:41 | After C y = ... | VarDecls.cs:25:13:25:29 | Before return ...; | +| VarDecls.cs:24:31:24:41 | Before C y = ... | VarDecls.cs:24:31:24:31 | access to local variable y | +| VarDecls.cs:24:31:24:41 | C y = ... | VarDecls.cs:24:31:24:41 | After C y = ... | +| VarDecls.cs:24:35:24:41 | After object creation of type C | VarDecls.cs:24:31:24:41 | C y = ... | +| VarDecls.cs:24:35:24:41 | Before object creation of type C | VarDecls.cs:24:35:24:41 | object creation of type C | +| VarDecls.cs:24:35:24:41 | object creation of type C | VarDecls.cs:24:35:24:41 | After object creation of type C | +| VarDecls.cs:25:13:25:29 | Before return ...; | VarDecls.cs:25:20:25:28 | ... ? ... : ... | +| VarDecls.cs:25:13:25:29 | return ...; | VarDecls.cs:19:7:19:8 | Normal Exit | +| VarDecls.cs:25:20:25:20 | After access to parameter b [false] | VarDecls.cs:25:28:25:28 | access to local variable y | +| VarDecls.cs:25:20:25:20 | After access to parameter b [true] | VarDecls.cs:25:24:25:24 | access to local variable x | +| VarDecls.cs:25:20:25:20 | access to parameter b | VarDecls.cs:25:20:25:20 | After access to parameter b [false] | +| VarDecls.cs:25:20:25:20 | access to parameter b | VarDecls.cs:25:20:25:20 | After access to parameter b [true] | +| VarDecls.cs:25:20:25:28 | ... ? ... : ... | VarDecls.cs:25:20:25:20 | access to parameter b | +| VarDecls.cs:25:20:25:28 | After ... ? ... : ... | VarDecls.cs:25:13:25:29 | return ...; | +| VarDecls.cs:28:11:28:11 | After call to constructor Object | VarDecls.cs:28:11:28:11 | {...} | +| VarDecls.cs:28:11:28:11 | After call to method | VarDecls.cs:28:11:28:11 | Before call to constructor Object | +| VarDecls.cs:28:11:28:11 | Before call to constructor Object | VarDecls.cs:28:11:28:11 | call to constructor Object | +| VarDecls.cs:28:11:28:11 | Before call to method | VarDecls.cs:28:11:28:11 | this access | +| VarDecls.cs:28:11:28:11 | Entry | VarDecls.cs:28:11:28:11 | Before call to method | +| VarDecls.cs:28:11:28:11 | Normal Exit | VarDecls.cs:28:11:28:11 | Exit | +| VarDecls.cs:28:11:28:11 | call to constructor Object | VarDecls.cs:28:11:28:11 | After call to constructor Object | +| VarDecls.cs:28:11:28:11 | call to method | VarDecls.cs:28:11:28:11 | After call to method | | VarDecls.cs:28:11:28:11 | this access | VarDecls.cs:28:11:28:11 | call to method | -| VarDecls.cs:28:11:28:11 | {...} | VarDecls.cs:28:11:28:11 | exit C (normal) | -| VarDecls.cs:28:41:28:47 | enter Dispose | VarDecls.cs:28:51:28:53 | {...} | -| VarDecls.cs:28:41:28:47 | exit Dispose (normal) | VarDecls.cs:28:41:28:47 | exit Dispose | -| VarDecls.cs:28:51:28:53 | {...} | VarDecls.cs:28:41:28:47 | exit Dispose (normal) | -| cflow.cs:5:17:5:20 | enter Main | cflow.cs:6:5:35:5 | {...} | -| cflow.cs:5:17:5:20 | exit Main (normal) | cflow.cs:5:17:5:20 | exit Main | +| VarDecls.cs:28:11:28:11 | {...} | VarDecls.cs:28:11:28:11 | Normal Exit | +| VarDecls.cs:28:41:28:47 | Entry | VarDecls.cs:28:51:28:53 | {...} | +| VarDecls.cs:28:41:28:47 | Normal Exit | VarDecls.cs:28:41:28:47 | Exit | +| VarDecls.cs:28:51:28:53 | {...} | VarDecls.cs:28:41:28:47 | Normal Exit | +| cflow.cs:5:17:5:20 | Entry | cflow.cs:5:31:5:34 | args | +| cflow.cs:5:17:5:20 | Normal Exit | cflow.cs:5:17:5:20 | Exit | +| cflow.cs:5:31:5:34 | args | cflow.cs:6:5:35:5 | {...} | +| cflow.cs:6:5:35:5 | After {...} | cflow.cs:5:17:5:20 | Normal Exit | | cflow.cs:6:5:35:5 | {...} | cflow.cs:7:9:7:28 | ... ...; | -| cflow.cs:7:9:7:28 | ... ...; | cflow.cs:7:17:7:20 | access to parameter args | -| cflow.cs:7:13:7:27 | Int32 a = ... | cflow.cs:9:9:9:40 | ...; | +| cflow.cs:7:9:7:28 | ... ...; | cflow.cs:7:13:7:27 | Before Int32 a = ... | +| cflow.cs:7:9:7:28 | After ... ...; | cflow.cs:9:9:9:40 | ...; | +| cflow.cs:7:13:7:13 | access to local variable a | cflow.cs:7:17:7:27 | Before access to property Length | +| cflow.cs:7:13:7:27 | After Int32 a = ... | cflow.cs:7:9:7:28 | After ... ...; | +| cflow.cs:7:13:7:27 | Before Int32 a = ... | cflow.cs:7:13:7:13 | access to local variable a | +| cflow.cs:7:13:7:27 | Int32 a = ... | cflow.cs:7:13:7:27 | After Int32 a = ... | | cflow.cs:7:17:7:20 | access to parameter args | cflow.cs:7:17:7:27 | access to property Length | -| cflow.cs:7:17:7:27 | access to property Length | cflow.cs:7:13:7:27 | Int32 a = ... | -| cflow.cs:9:9:9:39 | ... = ... | cflow.cs:11:9:12:49 | if (...) ... | -| cflow.cs:9:9:9:40 | ...; | cflow.cs:9:13:9:29 | object creation of type ControlFlow | -| cflow.cs:9:13:9:29 | object creation of type ControlFlow | cflow.cs:9:38:9:38 | access to local variable a | -| cflow.cs:9:13:9:39 | call to method Switch | cflow.cs:9:9:9:39 | ... = ... | +| cflow.cs:7:17:7:27 | After access to property Length | cflow.cs:7:13:7:27 | Int32 a = ... | +| cflow.cs:7:17:7:27 | Before access to property Length | cflow.cs:7:17:7:20 | access to parameter args | +| cflow.cs:7:17:7:27 | access to property Length | cflow.cs:7:17:7:27 | After access to property Length | +| cflow.cs:9:9:9:9 | access to local variable a | cflow.cs:9:13:9:39 | Before call to method Switch | +| cflow.cs:9:9:9:39 | ... = ... | cflow.cs:9:9:9:39 | After ... = ... | +| cflow.cs:9:9:9:39 | After ... = ... | cflow.cs:9:9:9:40 | After ...; | +| cflow.cs:9:9:9:39 | Before ... = ... | cflow.cs:9:9:9:9 | access to local variable a | +| cflow.cs:9:9:9:40 | ...; | cflow.cs:9:9:9:39 | Before ... = ... | +| cflow.cs:9:9:9:40 | After ...; | cflow.cs:11:9:12:49 | if (...) ... | +| cflow.cs:9:13:9:29 | After object creation of type ControlFlow | cflow.cs:9:38:9:38 | access to local variable a | +| cflow.cs:9:13:9:29 | Before object creation of type ControlFlow | cflow.cs:9:13:9:29 | object creation of type ControlFlow | +| cflow.cs:9:13:9:29 | object creation of type ControlFlow | cflow.cs:9:13:9:29 | After object creation of type ControlFlow | +| cflow.cs:9:13:9:39 | After call to method Switch | cflow.cs:9:9:9:39 | ... = ... | +| cflow.cs:9:13:9:39 | Before call to method Switch | cflow.cs:9:13:9:29 | Before object creation of type ControlFlow | +| cflow.cs:9:13:9:39 | call to method Switch | cflow.cs:9:13:9:39 | After call to method Switch | | cflow.cs:9:38:9:38 | access to local variable a | cflow.cs:9:13:9:39 | call to method Switch | -| cflow.cs:11:9:12:49 | if (...) ... | cflow.cs:11:13:11:13 | access to local variable a | +| cflow.cs:11:9:12:49 | After if (...) ... | cflow.cs:14:9:17:9 | while (...) ... | +| cflow.cs:11:9:12:49 | if (...) ... | cflow.cs:11:13:11:17 | Before ... > ... | | cflow.cs:11:13:11:13 | access to local variable a | cflow.cs:11:17:11:17 | 3 | -| cflow.cs:11:13:11:17 | ... > ... | cflow.cs:12:13:12:49 | ...; | -| cflow.cs:11:13:11:17 | ... > ... | cflow.cs:14:9:17:9 | while (...) ... | +| cflow.cs:11:13:11:17 | ... > ... | cflow.cs:11:13:11:17 | After ... > ... [false] | +| cflow.cs:11:13:11:17 | ... > ... | cflow.cs:11:13:11:17 | After ... > ... [true] | +| cflow.cs:11:13:11:17 | After ... > ... [true] | cflow.cs:12:13:12:49 | ...; | +| cflow.cs:11:13:11:17 | Before ... > ... | cflow.cs:11:13:11:13 | access to local variable a | | cflow.cs:11:17:11:17 | 3 | cflow.cs:11:13:11:17 | ... > ... | -| cflow.cs:12:13:12:49 | ...; | cflow.cs:12:31:12:47 | "more than a few" | +| cflow.cs:12:13:12:48 | After call to method WriteLine | cflow.cs:12:13:12:49 | After ...; | +| cflow.cs:12:13:12:48 | Before call to method WriteLine | cflow.cs:12:31:12:47 | "more than a few" | +| cflow.cs:12:13:12:48 | call to method WriteLine | cflow.cs:12:13:12:48 | After call to method WriteLine | +| cflow.cs:12:13:12:49 | ...; | cflow.cs:12:13:12:48 | Before call to method WriteLine | | cflow.cs:12:31:12:47 | "more than a few" | cflow.cs:12:13:12:48 | call to method WriteLine | -| cflow.cs:14:9:17:9 | while (...) ... | cflow.cs:14:16:14:16 | access to local variable a | +| cflow.cs:14:9:17:9 | After while (...) ... | cflow.cs:19:9:22:25 | do ... while (...); | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:14:16:14:20 | Before ... > ... | +| cflow.cs:14:9:17:9 | while (...) ... | cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | | cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:14:20:14:20 | 0 | -| cflow.cs:14:16:14:20 | ... > ... | cflow.cs:15:9:17:9 | {...} | -| cflow.cs:14:16:14:20 | ... > ... | cflow.cs:19:9:22:25 | do ... while (...); | +| cflow.cs:14:16:14:20 | ... > ... | cflow.cs:14:16:14:20 | After ... > ... [false] | +| cflow.cs:14:16:14:20 | ... > ... | cflow.cs:14:16:14:20 | After ... > ... [true] | +| cflow.cs:14:16:14:20 | After ... > ... [false] | cflow.cs:14:9:17:9 | After while (...) ... | +| cflow.cs:14:16:14:20 | After ... > ... [true] | cflow.cs:15:9:17:9 | {...} | +| cflow.cs:14:16:14:20 | Before ... > ... | cflow.cs:14:16:14:16 | access to local variable a | | cflow.cs:14:20:14:20 | 0 | cflow.cs:14:16:14:20 | ... > ... | | cflow.cs:15:9:17:9 | {...} | cflow.cs:16:13:16:41 | ...; | -| cflow.cs:16:13:16:41 | ...; | cflow.cs:16:31:16:31 | access to local variable a | +| cflow.cs:16:13:16:40 | After call to method WriteLine | cflow.cs:16:13:16:41 | After ...; | +| cflow.cs:16:13:16:40 | Before call to method WriteLine | cflow.cs:16:31:16:39 | Before ... * ... | +| cflow.cs:16:13:16:40 | call to method WriteLine | cflow.cs:16:13:16:40 | After call to method WriteLine | +| cflow.cs:16:13:16:41 | ...; | cflow.cs:16:13:16:40 | Before call to method WriteLine | +| cflow.cs:16:13:16:41 | After ...; | cflow.cs:15:9:17:9 | After {...} | | cflow.cs:16:31:16:31 | access to local variable a | cflow.cs:16:31:16:33 | ...-- | -| cflow.cs:16:31:16:33 | ...-- | cflow.cs:16:37:16:39 | 100 | -| cflow.cs:16:31:16:39 | ... * ... | cflow.cs:16:13:16:40 | call to method WriteLine | +| cflow.cs:16:31:16:33 | ...-- | cflow.cs:16:31:16:33 | After ...-- | +| cflow.cs:16:31:16:33 | After ...-- | cflow.cs:16:37:16:39 | 100 | +| cflow.cs:16:31:16:33 | Before ...-- | cflow.cs:16:31:16:31 | access to local variable a | +| cflow.cs:16:31:16:39 | ... * ... | cflow.cs:16:31:16:39 | After ... * ... | +| cflow.cs:16:31:16:39 | After ... * ... | cflow.cs:16:13:16:40 | call to method WriteLine | +| cflow.cs:16:31:16:39 | Before ... * ... | cflow.cs:16:31:16:33 | Before ...-- | | cflow.cs:16:37:16:39 | 100 | cflow.cs:16:31:16:39 | ... * ... | +| cflow.cs:19:9:22:25 | After do ... while (...); | cflow.cs:24:9:34:9 | for (...;...;...) ... | +| cflow.cs:19:9:22:25 | [LoopHeader] do ... while (...); | cflow.cs:22:18:22:23 | Before ... < ... | | cflow.cs:19:9:22:25 | do ... while (...); | cflow.cs:20:9:22:9 | {...} | +| cflow.cs:20:9:22:9 | After {...} | cflow.cs:19:9:22:25 | [LoopHeader] do ... while (...); | | cflow.cs:20:9:22:9 | {...} | cflow.cs:21:13:21:36 | ...; | -| cflow.cs:21:13:21:35 | call to method WriteLine | cflow.cs:22:18:22:18 | access to local variable a | -| cflow.cs:21:13:21:36 | ...; | cflow.cs:21:32:21:32 | access to local variable a | -| cflow.cs:21:31:21:34 | -... | cflow.cs:21:13:21:35 | call to method WriteLine | +| cflow.cs:21:13:21:35 | After call to method WriteLine | cflow.cs:21:13:21:36 | After ...; | +| cflow.cs:21:13:21:35 | Before call to method WriteLine | cflow.cs:21:31:21:34 | Before -... | +| cflow.cs:21:13:21:35 | call to method WriteLine | cflow.cs:21:13:21:35 | After call to method WriteLine | +| cflow.cs:21:13:21:36 | ...; | cflow.cs:21:13:21:35 | Before call to method WriteLine | +| cflow.cs:21:13:21:36 | After ...; | cflow.cs:20:9:22:9 | After {...} | +| cflow.cs:21:31:21:34 | -... | cflow.cs:21:31:21:34 | After -... | +| cflow.cs:21:31:21:34 | After -... | cflow.cs:21:13:21:35 | call to method WriteLine | +| cflow.cs:21:31:21:34 | Before -... | cflow.cs:21:32:21:34 | Before ...++ | | cflow.cs:21:32:21:32 | access to local variable a | cflow.cs:21:32:21:34 | ...++ | -| cflow.cs:21:32:21:34 | ...++ | cflow.cs:21:31:21:34 | -... | +| cflow.cs:21:32:21:34 | ...++ | cflow.cs:21:32:21:34 | After ...++ | +| cflow.cs:21:32:21:34 | After ...++ | cflow.cs:21:31:21:34 | -... | +| cflow.cs:21:32:21:34 | Before ...++ | cflow.cs:21:32:21:32 | access to local variable a | | cflow.cs:22:18:22:18 | access to local variable a | cflow.cs:22:22:22:23 | 10 | -| cflow.cs:22:18:22:23 | ... < ... | cflow.cs:24:9:34:9 | for (...;...;...) ... | +| cflow.cs:22:18:22:23 | ... < ... | cflow.cs:22:18:22:23 | After ... < ... [false] | +| cflow.cs:22:18:22:23 | ... < ... | cflow.cs:22:18:22:23 | After ... < ... [true] | +| cflow.cs:22:18:22:23 | After ... < ... [false] | cflow.cs:19:9:22:25 | After do ... while (...); | +| cflow.cs:22:18:22:23 | Before ... < ... | cflow.cs:22:18:22:18 | access to local variable a | | cflow.cs:22:22:22:23 | 10 | cflow.cs:22:18:22:23 | ... < ... | -| cflow.cs:24:9:34:9 | for (...;...;...) ... | cflow.cs:24:22:24:22 | 1 | -| cflow.cs:24:18:24:22 | Int32 i = ... | cflow.cs:24:25:24:25 | access to local variable i | +| cflow.cs:24:9:34:9 | After for (...;...;...) ... | cflow.cs:6:5:35:5 | After {...} | +| cflow.cs:24:9:34:9 | [LoopHeader] for (...;...;...) ... | cflow.cs:24:34:24:36 | Before ...++ | +| cflow.cs:24:9:34:9 | for (...;...;...) ... | cflow.cs:24:18:24:22 | Before Int32 i = ... | +| cflow.cs:24:18:24:18 | access to local variable i | cflow.cs:24:22:24:22 | 1 | +| cflow.cs:24:18:24:22 | After Int32 i = ... | cflow.cs:24:25:24:31 | Before ... <= ... | +| cflow.cs:24:18:24:22 | Before Int32 i = ... | cflow.cs:24:18:24:18 | access to local variable i | +| cflow.cs:24:18:24:22 | Int32 i = ... | cflow.cs:24:18:24:22 | After Int32 i = ... | | cflow.cs:24:22:24:22 | 1 | cflow.cs:24:18:24:22 | Int32 i = ... | | cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:24:30:24:31 | 20 | -| cflow.cs:24:25:24:31 | ... <= ... | cflow.cs:5:17:5:20 | exit Main (normal) | -| cflow.cs:24:25:24:31 | ... <= ... | cflow.cs:25:9:34:9 | {...} | +| cflow.cs:24:25:24:31 | ... <= ... | cflow.cs:24:25:24:31 | After ... <= ... [false] | +| cflow.cs:24:25:24:31 | ... <= ... | cflow.cs:24:25:24:31 | After ... <= ... [true] | +| cflow.cs:24:25:24:31 | After ... <= ... [false] | cflow.cs:24:9:34:9 | After for (...;...;...) ... | +| cflow.cs:24:25:24:31 | After ... <= ... [true] | cflow.cs:25:9:34:9 | {...} | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:24:25:24:25 | access to local variable i | | cflow.cs:24:30:24:31 | 20 | cflow.cs:24:25:24:31 | ... <= ... | | cflow.cs:24:34:24:34 | access to local variable i | cflow.cs:24:34:24:36 | ...++ | +| cflow.cs:24:34:24:36 | ...++ | cflow.cs:24:34:24:36 | After ...++ | +| cflow.cs:24:34:24:36 | Before ...++ | cflow.cs:24:34:24:34 | access to local variable i | +| cflow.cs:25:9:34:9 | After {...} | cflow.cs:24:9:34:9 | [LoopHeader] for (...;...;...) ... | | cflow.cs:25:9:34:9 | {...} | cflow.cs:26:13:33:37 | if (...) ... | -| cflow.cs:26:13:33:37 | if (...) ... | cflow.cs:26:17:26:17 | access to local variable i | +| cflow.cs:26:13:33:37 | After if (...) ... | cflow.cs:25:9:34:9 | After {...} | +| cflow.cs:26:13:33:37 | if (...) ... | cflow.cs:26:17:26:40 | ... && ... | | cflow.cs:26:17:26:17 | access to local variable i | cflow.cs:26:21:26:21 | 3 | -| cflow.cs:26:17:26:21 | ... % ... | cflow.cs:26:26:26:26 | 0 | -| cflow.cs:26:17:26:26 | ... == ... | cflow.cs:26:17:26:40 | [false] ... && ... | -| cflow.cs:26:17:26:26 | ... == ... | cflow.cs:26:31:26:31 | access to local variable i | -| cflow.cs:26:17:26:40 | [false] ... && ... | cflow.cs:28:18:33:37 | if (...) ... | -| cflow.cs:26:17:26:40 | [true] ... && ... | cflow.cs:27:17:27:46 | ...; | +| cflow.cs:26:17:26:21 | ... % ... | cflow.cs:26:17:26:21 | After ... % ... | +| cflow.cs:26:17:26:21 | After ... % ... | cflow.cs:26:26:26:26 | 0 | +| cflow.cs:26:17:26:21 | Before ... % ... | cflow.cs:26:17:26:17 | access to local variable i | +| cflow.cs:26:17:26:26 | ... == ... | cflow.cs:26:17:26:26 | After ... == ... [false] | +| cflow.cs:26:17:26:26 | ... == ... | cflow.cs:26:17:26:26 | After ... == ... [true] | +| cflow.cs:26:17:26:26 | After ... == ... [true] | cflow.cs:26:31:26:40 | Before ... == ... | +| cflow.cs:26:17:26:26 | Before ... == ... | cflow.cs:26:17:26:21 | Before ... % ... | +| cflow.cs:26:17:26:40 | ... && ... | cflow.cs:26:17:26:26 | Before ... == ... | +| cflow.cs:26:17:26:40 | After ... && ... [false] | cflow.cs:28:18:33:37 | if (...) ... | +| cflow.cs:26:17:26:40 | After ... && ... [true] | cflow.cs:27:17:27:46 | ...; | | cflow.cs:26:21:26:21 | 3 | cflow.cs:26:17:26:21 | ... % ... | | cflow.cs:26:26:26:26 | 0 | cflow.cs:26:17:26:26 | ... == ... | | cflow.cs:26:31:26:31 | access to local variable i | cflow.cs:26:35:26:35 | 5 | -| cflow.cs:26:31:26:35 | ... % ... | cflow.cs:26:40:26:40 | 0 | -| cflow.cs:26:31:26:40 | ... == ... | cflow.cs:26:17:26:40 | [true] ... && ... | +| cflow.cs:26:31:26:35 | ... % ... | cflow.cs:26:31:26:35 | After ... % ... | +| cflow.cs:26:31:26:35 | After ... % ... | cflow.cs:26:40:26:40 | 0 | +| cflow.cs:26:31:26:35 | Before ... % ... | cflow.cs:26:31:26:31 | access to local variable i | +| cflow.cs:26:31:26:40 | ... == ... | cflow.cs:26:31:26:40 | After ... == ... [false] | +| cflow.cs:26:31:26:40 | ... == ... | cflow.cs:26:31:26:40 | After ... == ... [true] | +| cflow.cs:26:31:26:40 | After ... == ... [true] | cflow.cs:26:17:26:40 | After ... && ... [true] | +| cflow.cs:26:31:26:40 | Before ... == ... | cflow.cs:26:31:26:35 | Before ... % ... | | cflow.cs:26:35:26:35 | 5 | cflow.cs:26:31:26:35 | ... % ... | | cflow.cs:26:40:26:40 | 0 | cflow.cs:26:31:26:40 | ... == ... | -| cflow.cs:27:17:27:46 | ...; | cflow.cs:27:35:27:44 | "FizzBuzz" | +| cflow.cs:27:17:27:45 | After call to method WriteLine | cflow.cs:27:17:27:46 | After ...; | +| cflow.cs:27:17:27:45 | Before call to method WriteLine | cflow.cs:27:35:27:44 | "FizzBuzz" | +| cflow.cs:27:17:27:45 | call to method WriteLine | cflow.cs:27:17:27:45 | After call to method WriteLine | +| cflow.cs:27:17:27:46 | ...; | cflow.cs:27:17:27:45 | Before call to method WriteLine | | cflow.cs:27:35:27:44 | "FizzBuzz" | cflow.cs:27:17:27:45 | call to method WriteLine | -| cflow.cs:28:18:33:37 | if (...) ... | cflow.cs:28:22:28:22 | access to local variable i | +| cflow.cs:28:18:33:37 | if (...) ... | cflow.cs:28:22:28:31 | Before ... == ... | | cflow.cs:28:22:28:22 | access to local variable i | cflow.cs:28:26:28:26 | 3 | -| cflow.cs:28:22:28:26 | ... % ... | cflow.cs:28:31:28:31 | 0 | -| cflow.cs:28:22:28:31 | ... == ... | cflow.cs:29:17:29:42 | ...; | -| cflow.cs:28:22:28:31 | ... == ... | cflow.cs:30:18:33:37 | if (...) ... | +| cflow.cs:28:22:28:26 | ... % ... | cflow.cs:28:22:28:26 | After ... % ... | +| cflow.cs:28:22:28:26 | After ... % ... | cflow.cs:28:31:28:31 | 0 | +| cflow.cs:28:22:28:26 | Before ... % ... | cflow.cs:28:22:28:22 | access to local variable i | +| cflow.cs:28:22:28:31 | ... == ... | cflow.cs:28:22:28:31 | After ... == ... [false] | +| cflow.cs:28:22:28:31 | ... == ... | cflow.cs:28:22:28:31 | After ... == ... [true] | +| cflow.cs:28:22:28:31 | After ... == ... [false] | cflow.cs:30:18:33:37 | if (...) ... | +| cflow.cs:28:22:28:31 | After ... == ... [true] | cflow.cs:29:17:29:42 | ...; | +| cflow.cs:28:22:28:31 | Before ... == ... | cflow.cs:28:22:28:26 | Before ... % ... | | cflow.cs:28:26:28:26 | 3 | cflow.cs:28:22:28:26 | ... % ... | | cflow.cs:28:31:28:31 | 0 | cflow.cs:28:22:28:31 | ... == ... | -| cflow.cs:29:17:29:42 | ...; | cflow.cs:29:35:29:40 | "Fizz" | +| cflow.cs:29:17:29:41 | After call to method WriteLine | cflow.cs:29:17:29:42 | After ...; | +| cflow.cs:29:17:29:41 | Before call to method WriteLine | cflow.cs:29:35:29:40 | "Fizz" | +| cflow.cs:29:17:29:41 | call to method WriteLine | cflow.cs:29:17:29:41 | After call to method WriteLine | +| cflow.cs:29:17:29:42 | ...; | cflow.cs:29:17:29:41 | Before call to method WriteLine | | cflow.cs:29:35:29:40 | "Fizz" | cflow.cs:29:17:29:41 | call to method WriteLine | -| cflow.cs:30:18:33:37 | if (...) ... | cflow.cs:30:22:30:22 | access to local variable i | +| cflow.cs:30:18:33:37 | if (...) ... | cflow.cs:30:22:30:31 | Before ... == ... | | cflow.cs:30:22:30:22 | access to local variable i | cflow.cs:30:26:30:26 | 5 | -| cflow.cs:30:22:30:26 | ... % ... | cflow.cs:30:31:30:31 | 0 | -| cflow.cs:30:22:30:31 | ... == ... | cflow.cs:31:17:31:42 | ...; | -| cflow.cs:30:22:30:31 | ... == ... | cflow.cs:33:17:33:37 | ...; | +| cflow.cs:30:22:30:26 | ... % ... | cflow.cs:30:22:30:26 | After ... % ... | +| cflow.cs:30:22:30:26 | After ... % ... | cflow.cs:30:31:30:31 | 0 | +| cflow.cs:30:22:30:26 | Before ... % ... | cflow.cs:30:22:30:22 | access to local variable i | +| cflow.cs:30:22:30:31 | ... == ... | cflow.cs:30:22:30:31 | After ... == ... [false] | +| cflow.cs:30:22:30:31 | ... == ... | cflow.cs:30:22:30:31 | After ... == ... [true] | +| cflow.cs:30:22:30:31 | After ... == ... [false] | cflow.cs:33:17:33:37 | ...; | +| cflow.cs:30:22:30:31 | After ... == ... [true] | cflow.cs:31:17:31:42 | ...; | +| cflow.cs:30:22:30:31 | Before ... == ... | cflow.cs:30:22:30:26 | Before ... % ... | | cflow.cs:30:26:30:26 | 5 | cflow.cs:30:22:30:26 | ... % ... | | cflow.cs:30:31:30:31 | 0 | cflow.cs:30:22:30:31 | ... == ... | -| cflow.cs:31:17:31:42 | ...; | cflow.cs:31:35:31:40 | "Buzz" | +| cflow.cs:31:17:31:41 | After call to method WriteLine | cflow.cs:31:17:31:42 | After ...; | +| cflow.cs:31:17:31:41 | Before call to method WriteLine | cflow.cs:31:35:31:40 | "Buzz" | +| cflow.cs:31:17:31:41 | call to method WriteLine | cflow.cs:31:17:31:41 | After call to method WriteLine | +| cflow.cs:31:17:31:42 | ...; | cflow.cs:31:17:31:41 | Before call to method WriteLine | | cflow.cs:31:35:31:40 | "Buzz" | cflow.cs:31:17:31:41 | call to method WriteLine | -| cflow.cs:33:17:33:37 | ...; | cflow.cs:33:35:33:35 | access to local variable i | +| cflow.cs:33:17:33:36 | After call to method WriteLine | cflow.cs:33:17:33:37 | After ...; | +| cflow.cs:33:17:33:36 | Before call to method WriteLine | cflow.cs:33:35:33:35 | access to local variable i | +| cflow.cs:33:17:33:36 | call to method WriteLine | cflow.cs:33:17:33:36 | After call to method WriteLine | +| cflow.cs:33:17:33:37 | ...; | cflow.cs:33:17:33:36 | Before call to method WriteLine | | cflow.cs:33:35:33:35 | access to local variable i | cflow.cs:33:17:33:36 | call to method WriteLine | -| cflow.cs:37:17:37:22 | enter Switch | cflow.cs:38:5:68:5 | {...} | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:37:28:37:28 | a | +| cflow.cs:37:28:37:28 | a | cflow.cs:38:5:68:5 | {...} | | cflow.cs:38:5:68:5 | {...} | cflow.cs:39:9:50:9 | switch (...) {...} | +| cflow.cs:39:9:50:9 | After switch (...) {...} | cflow.cs:51:9:59:9 | switch (...) {...} | | cflow.cs:39:9:50:9 | switch (...) {...} | cflow.cs:39:17:39:17 | access to parameter a | | cflow.cs:39:17:39:17 | access to parameter a | cflow.cs:41:13:41:19 | case ...: | +| cflow.cs:41:13:41:19 | After case ...: [match] | cflow.cs:42:17:42:39 | ...; | +| cflow.cs:41:13:41:19 | After case ...: [no-match] | cflow.cs:44:13:44:19 | case ...: | | cflow.cs:41:13:41:19 | case ...: | cflow.cs:41:18:41:18 | 1 | -| cflow.cs:41:18:41:18 | 1 | cflow.cs:42:17:42:39 | ...; | -| cflow.cs:41:18:41:18 | 1 | cflow.cs:44:13:44:19 | case ...: | -| cflow.cs:42:17:42:38 | call to method WriteLine | cflow.cs:43:27:43:27 | 2 | -| cflow.cs:42:17:42:39 | ...; | cflow.cs:42:35:42:37 | "1" | +| cflow.cs:41:18:41:18 | 1 | cflow.cs:41:18:41:18 | After 1 [match] | +| cflow.cs:41:18:41:18 | 1 | cflow.cs:41:18:41:18 | After 1 [no-match] | +| cflow.cs:41:18:41:18 | After 1 [no-match] | cflow.cs:41:13:41:19 | After case ...: [no-match] | +| cflow.cs:42:17:42:38 | After call to method WriteLine | cflow.cs:42:17:42:39 | After ...; | +| cflow.cs:42:17:42:38 | Before call to method WriteLine | cflow.cs:42:35:42:37 | "1" | +| cflow.cs:42:17:42:38 | call to method WriteLine | cflow.cs:42:17:42:38 | After call to method WriteLine | +| cflow.cs:42:17:42:39 | ...; | cflow.cs:42:17:42:38 | Before call to method WriteLine | +| cflow.cs:42:17:42:39 | After ...; | cflow.cs:43:17:43:28 | Before goto case ...; | | cflow.cs:42:35:42:37 | "1" | cflow.cs:42:17:42:38 | call to method WriteLine | +| cflow.cs:43:17:43:28 | Before goto case ...; | cflow.cs:43:27:43:27 | 2 | | cflow.cs:43:27:43:27 | 2 | cflow.cs:43:17:43:28 | goto case ...; | +| cflow.cs:44:13:44:19 | After case ...: [match] | cflow.cs:45:17:45:39 | ...; | +| cflow.cs:44:13:44:19 | After case ...: [no-match] | cflow.cs:47:13:47:19 | case ...: | | cflow.cs:44:13:44:19 | case ...: | cflow.cs:44:18:44:18 | 2 | -| cflow.cs:44:18:44:18 | 2 | cflow.cs:45:17:45:39 | ...; | -| cflow.cs:44:18:44:18 | 2 | cflow.cs:47:13:47:19 | case ...: | -| cflow.cs:45:17:45:38 | call to method WriteLine | cflow.cs:46:27:46:27 | 1 | -| cflow.cs:45:17:45:39 | ...; | cflow.cs:45:35:45:37 | "2" | +| cflow.cs:44:18:44:18 | 2 | cflow.cs:44:18:44:18 | After 2 [match] | +| cflow.cs:44:18:44:18 | 2 | cflow.cs:44:18:44:18 | After 2 [no-match] | +| cflow.cs:44:18:44:18 | After 2 [no-match] | cflow.cs:44:13:44:19 | After case ...: [no-match] | +| cflow.cs:45:17:45:38 | After call to method WriteLine | cflow.cs:45:17:45:39 | After ...; | +| cflow.cs:45:17:45:38 | Before call to method WriteLine | cflow.cs:45:35:45:37 | "2" | +| cflow.cs:45:17:45:38 | call to method WriteLine | cflow.cs:45:17:45:38 | After call to method WriteLine | +| cflow.cs:45:17:45:39 | ...; | cflow.cs:45:17:45:38 | Before call to method WriteLine | +| cflow.cs:45:17:45:39 | After ...; | cflow.cs:46:17:46:28 | Before goto case ...; | | cflow.cs:45:35:45:37 | "2" | cflow.cs:45:17:45:38 | call to method WriteLine | +| cflow.cs:46:17:46:28 | Before goto case ...; | cflow.cs:46:27:46:27 | 1 | | cflow.cs:46:27:46:27 | 1 | cflow.cs:46:17:46:28 | goto case ...; | +| cflow.cs:47:13:47:19 | After case ...: [match] | cflow.cs:48:17:48:39 | ...; | | cflow.cs:47:13:47:19 | case ...: | cflow.cs:47:18:47:18 | 3 | -| cflow.cs:47:18:47:18 | 3 | cflow.cs:48:17:48:39 | ...; | -| cflow.cs:47:18:47:18 | 3 | cflow.cs:51:9:59:9 | switch (...) {...} | -| cflow.cs:48:17:48:38 | call to method WriteLine | cflow.cs:49:17:49:22 | break; | -| cflow.cs:48:17:48:39 | ...; | cflow.cs:48:35:48:37 | "3" | +| cflow.cs:47:18:47:18 | 3 | cflow.cs:47:18:47:18 | After 3 [match] | +| cflow.cs:47:18:47:18 | 3 | cflow.cs:47:18:47:18 | After 3 [no-match] | +| cflow.cs:47:18:47:18 | After 3 [match] | cflow.cs:47:13:47:19 | After case ...: [match] | +| cflow.cs:47:18:47:18 | After 3 [no-match] | cflow.cs:47:13:47:19 | After case ...: [no-match] | +| cflow.cs:48:17:48:38 | After call to method WriteLine | cflow.cs:48:17:48:39 | After ...; | +| cflow.cs:48:17:48:38 | Before call to method WriteLine | cflow.cs:48:35:48:37 | "3" | +| cflow.cs:48:17:48:38 | call to method WriteLine | cflow.cs:48:17:48:38 | After call to method WriteLine | +| cflow.cs:48:17:48:39 | ...; | cflow.cs:48:17:48:38 | Before call to method WriteLine | +| cflow.cs:48:17:48:39 | After ...; | cflow.cs:49:17:49:22 | Before break; | | cflow.cs:48:35:48:37 | "3" | cflow.cs:48:17:48:38 | call to method WriteLine | +| cflow.cs:49:17:49:22 | Before break; | cflow.cs:49:17:49:22 | break; | +| cflow.cs:51:9:59:9 | After switch (...) {...} | cflow.cs:60:9:66:9 | switch (...) {...} | | cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:51:17:51:17 | access to parameter a | | cflow.cs:51:17:51:17 | access to parameter a | cflow.cs:53:13:53:20 | case ...: | +| cflow.cs:53:13:53:20 | After case ...: [match] | cflow.cs:54:17:54:48 | ...; | +| cflow.cs:53:13:53:20 | After case ...: [no-match] | cflow.cs:56:13:56:20 | default: | | cflow.cs:53:13:53:20 | case ...: | cflow.cs:53:18:53:19 | 42 | -| cflow.cs:53:18:53:19 | 42 | cflow.cs:54:17:54:48 | ...; | -| cflow.cs:53:18:53:19 | 42 | cflow.cs:56:13:56:20 | default: | -| cflow.cs:54:17:54:47 | call to method WriteLine | cflow.cs:55:17:55:22 | break; | -| cflow.cs:54:17:54:48 | ...; | cflow.cs:54:35:54:46 | "The answer" | +| cflow.cs:53:18:53:19 | 42 | cflow.cs:53:18:53:19 | After 42 [match] | +| cflow.cs:53:18:53:19 | 42 | cflow.cs:53:18:53:19 | After 42 [no-match] | +| cflow.cs:53:18:53:19 | After 42 [match] | cflow.cs:53:13:53:20 | After case ...: [match] | +| cflow.cs:53:18:53:19 | After 42 [no-match] | cflow.cs:53:13:53:20 | After case ...: [no-match] | +| cflow.cs:54:17:54:47 | After call to method WriteLine | cflow.cs:54:17:54:48 | After ...; | +| cflow.cs:54:17:54:47 | Before call to method WriteLine | cflow.cs:54:35:54:46 | "The answer" | +| cflow.cs:54:17:54:47 | call to method WriteLine | cflow.cs:54:17:54:47 | After call to method WriteLine | +| cflow.cs:54:17:54:48 | ...; | cflow.cs:54:17:54:47 | Before call to method WriteLine | +| cflow.cs:54:17:54:48 | After ...; | cflow.cs:55:17:55:22 | Before break; | | cflow.cs:54:35:54:46 | "The answer" | cflow.cs:54:17:54:47 | call to method WriteLine | -| cflow.cs:56:13:56:20 | default: | cflow.cs:57:17:57:52 | ...; | -| cflow.cs:57:17:57:51 | call to method WriteLine | cflow.cs:58:17:58:22 | break; | -| cflow.cs:57:17:57:52 | ...; | cflow.cs:57:35:57:50 | "Not the answer" | +| cflow.cs:55:17:55:22 | Before break; | cflow.cs:55:17:55:22 | break; | +| cflow.cs:56:13:56:20 | After default: [match] | cflow.cs:57:17:57:52 | ...; | +| cflow.cs:56:13:56:20 | default: | cflow.cs:56:13:56:20 | After default: [match] | +| cflow.cs:57:17:57:51 | After call to method WriteLine | cflow.cs:57:17:57:52 | After ...; | +| cflow.cs:57:17:57:51 | Before call to method WriteLine | cflow.cs:57:35:57:50 | "Not the answer" | +| cflow.cs:57:17:57:51 | call to method WriteLine | cflow.cs:57:17:57:51 | After call to method WriteLine | +| cflow.cs:57:17:57:52 | ...; | cflow.cs:57:17:57:51 | Before call to method WriteLine | +| cflow.cs:57:17:57:52 | After ...; | cflow.cs:58:17:58:22 | Before break; | | cflow.cs:57:35:57:50 | "Not the answer" | cflow.cs:57:17:57:51 | call to method WriteLine | -| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:60:27:60:31 | this access | -| cflow.cs:60:17:60:32 | call to method Parse | cflow.cs:62:13:62:19 | case ...: | -| cflow.cs:60:27:60:31 | access to field Field | cflow.cs:60:17:60:32 | call to method Parse | +| cflow.cs:58:17:58:22 | Before break; | cflow.cs:58:17:58:22 | break; | +| cflow.cs:60:9:66:9 | After switch (...) {...} | cflow.cs:67:9:67:17 | Before return ...; | +| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:60:17:60:32 | Before call to method Parse | +| cflow.cs:60:17:60:32 | After call to method Parse | cflow.cs:62:13:62:19 | case ...: | +| cflow.cs:60:17:60:32 | Before call to method Parse | cflow.cs:60:27:60:31 | Before access to field Field | +| cflow.cs:60:17:60:32 | call to method Parse | cflow.cs:60:17:60:32 | After call to method Parse | +| cflow.cs:60:27:60:31 | After access to field Field | cflow.cs:60:17:60:32 | call to method Parse | +| cflow.cs:60:27:60:31 | Before access to field Field | cflow.cs:60:27:60:31 | this access | +| cflow.cs:60:27:60:31 | access to field Field | cflow.cs:60:27:60:31 | After access to field Field | | cflow.cs:60:27:60:31 | this access | cflow.cs:60:27:60:31 | access to field Field | +| cflow.cs:62:13:62:19 | After case ...: [match] | cflow.cs:63:17:64:55 | if (...) ... | | cflow.cs:62:13:62:19 | case ...: | cflow.cs:62:18:62:18 | 0 | -| cflow.cs:62:18:62:18 | 0 | cflow.cs:63:17:64:55 | if (...) ... | -| cflow.cs:62:18:62:18 | 0 | cflow.cs:67:16:67:16 | access to parameter a | -| cflow.cs:63:17:64:55 | if (...) ... | cflow.cs:63:23:63:27 | this access | -| cflow.cs:63:21:63:34 | [false] !... | cflow.cs:65:17:65:22 | break; | -| cflow.cs:63:21:63:34 | [true] !... | cflow.cs:64:27:64:54 | object creation of type NullReferenceException | -| cflow.cs:63:23:63:27 | access to field Field | cflow.cs:63:32:63:33 | "" | +| cflow.cs:62:18:62:18 | 0 | cflow.cs:62:18:62:18 | After 0 [match] | +| cflow.cs:62:18:62:18 | 0 | cflow.cs:62:18:62:18 | After 0 [no-match] | +| cflow.cs:62:18:62:18 | After 0 [match] | cflow.cs:62:13:62:19 | After case ...: [match] | +| cflow.cs:62:18:62:18 | After 0 [no-match] | cflow.cs:62:13:62:19 | After case ...: [no-match] | +| cflow.cs:63:17:64:55 | After if (...) ... | cflow.cs:65:17:65:22 | Before break; | +| cflow.cs:63:17:64:55 | if (...) ... | cflow.cs:63:21:63:34 | !... | +| cflow.cs:63:21:63:34 | !... | cflow.cs:63:23:63:33 | Before ... == ... | +| cflow.cs:63:21:63:34 | After !... [false] | cflow.cs:63:17:64:55 | After if (...) ... | +| cflow.cs:63:21:63:34 | After !... [true] | cflow.cs:64:21:64:55 | Before throw ...; | +| cflow.cs:63:23:63:27 | After access to field Field | cflow.cs:63:32:63:33 | "" | +| cflow.cs:63:23:63:27 | Before access to field Field | cflow.cs:63:23:63:27 | this access | +| cflow.cs:63:23:63:27 | access to field Field | cflow.cs:63:23:63:27 | After access to field Field | | cflow.cs:63:23:63:27 | this access | cflow.cs:63:23:63:27 | access to field Field | -| cflow.cs:63:23:63:33 | ... == ... | cflow.cs:63:21:63:34 | [false] !... | -| cflow.cs:63:23:63:33 | ... == ... | cflow.cs:63:21:63:34 | [true] !... | +| cflow.cs:63:23:63:33 | ... == ... | cflow.cs:63:23:63:33 | After ... == ... [false] | +| cflow.cs:63:23:63:33 | ... == ... | cflow.cs:63:23:63:33 | After ... == ... [true] | +| cflow.cs:63:23:63:33 | After ... == ... [false] | cflow.cs:63:21:63:34 | After !... [true] | +| cflow.cs:63:23:63:33 | After ... == ... [true] | cflow.cs:63:21:63:34 | After !... [false] | +| cflow.cs:63:23:63:33 | Before ... == ... | cflow.cs:63:23:63:27 | Before access to field Field | | cflow.cs:63:32:63:33 | "" | cflow.cs:63:23:63:33 | ... == ... | -| cflow.cs:64:21:64:55 | throw ...; | cflow.cs:37:17:37:22 | exit Switch (abnormal) | -| cflow.cs:64:27:64:54 | object creation of type NullReferenceException | cflow.cs:64:21:64:55 | throw ...; | -| cflow.cs:67:9:67:17 | return ...; | cflow.cs:37:17:37:22 | exit Switch (normal) | +| cflow.cs:64:21:64:55 | Before throw ...; | cflow.cs:64:27:64:54 | Before object creation of type NullReferenceException | +| cflow.cs:64:21:64:55 | throw ...; | cflow.cs:37:17:37:22 | Exceptional Exit | +| cflow.cs:64:27:64:54 | After object creation of type NullReferenceException | cflow.cs:64:21:64:55 | throw ...; | +| cflow.cs:64:27:64:54 | Before object creation of type NullReferenceException | cflow.cs:64:27:64:54 | object creation of type NullReferenceException | +| cflow.cs:64:27:64:54 | object creation of type NullReferenceException | cflow.cs:64:27:64:54 | After object creation of type NullReferenceException | +| cflow.cs:65:17:65:22 | Before break; | cflow.cs:65:17:65:22 | break; | +| cflow.cs:67:9:67:17 | Before return ...; | cflow.cs:67:16:67:16 | access to parameter a | +| cflow.cs:67:9:67:17 | return ...; | cflow.cs:37:17:37:22 | Normal Exit | | cflow.cs:67:16:67:16 | access to parameter a | cflow.cs:67:9:67:17 | return ...; | -| cflow.cs:70:18:70:18 | enter M | cflow.cs:71:5:82:5 | {...} | -| cflow.cs:70:18:70:18 | exit M (normal) | cflow.cs:70:18:70:18 | exit M | +| cflow.cs:70:18:70:18 | Entry | cflow.cs:70:27:70:27 | s | +| cflow.cs:70:18:70:18 | Normal Exit | cflow.cs:70:18:70:18 | Exit | +| cflow.cs:70:27:70:27 | s | cflow.cs:71:5:82:5 | {...} | | cflow.cs:71:5:82:5 | {...} | cflow.cs:72:9:73:19 | if (...) ... | -| cflow.cs:72:9:73:19 | if (...) ... | cflow.cs:72:13:72:13 | access to parameter s | +| cflow.cs:72:9:73:19 | After if (...) ... | cflow.cs:74:9:81:9 | if (...) ... | +| cflow.cs:72:9:73:19 | if (...) ... | cflow.cs:72:13:72:21 | Before ... == ... | | cflow.cs:72:13:72:13 | access to parameter s | cflow.cs:72:18:72:21 | null | -| cflow.cs:72:13:72:21 | ... == ... | cflow.cs:73:13:73:19 | return ...; | -| cflow.cs:72:13:72:21 | ... == ... | cflow.cs:74:9:81:9 | if (...) ... | +| cflow.cs:72:13:72:21 | ... == ... | cflow.cs:72:13:72:21 | After ... == ... [false] | +| cflow.cs:72:13:72:21 | ... == ... | cflow.cs:72:13:72:21 | After ... == ... [true] | +| cflow.cs:72:13:72:21 | After ... == ... [false] | cflow.cs:72:9:73:19 | After if (...) ... | +| cflow.cs:72:13:72:21 | After ... == ... [true] | cflow.cs:73:13:73:19 | Before return ...; | +| cflow.cs:72:13:72:21 | Before ... == ... | cflow.cs:72:13:72:13 | access to parameter s | | cflow.cs:72:18:72:21 | null | cflow.cs:72:13:72:21 | ... == ... | -| cflow.cs:74:9:81:9 | if (...) ... | cflow.cs:74:13:74:13 | access to parameter s | +| cflow.cs:73:13:73:19 | Before return ...; | cflow.cs:73:13:73:19 | return ...; | +| cflow.cs:74:9:81:9 | After if (...) ... | cflow.cs:71:5:82:5 | After {...} | +| cflow.cs:74:9:81:9 | if (...) ... | cflow.cs:74:13:74:24 | Before ... > ... | | cflow.cs:74:13:74:13 | access to parameter s | cflow.cs:74:13:74:20 | access to property Length | -| cflow.cs:74:13:74:20 | access to property Length | cflow.cs:74:24:74:24 | 0 | -| cflow.cs:74:13:74:24 | ... > ... | cflow.cs:75:9:77:9 | {...} | -| cflow.cs:74:13:74:24 | ... > ... | cflow.cs:79:9:81:9 | {...} | +| cflow.cs:74:13:74:20 | After access to property Length | cflow.cs:74:24:74:24 | 0 | +| cflow.cs:74:13:74:20 | Before access to property Length | cflow.cs:74:13:74:13 | access to parameter s | +| cflow.cs:74:13:74:20 | access to property Length | cflow.cs:74:13:74:20 | After access to property Length | +| cflow.cs:74:13:74:24 | ... > ... | cflow.cs:74:13:74:24 | After ... > ... [false] | +| cflow.cs:74:13:74:24 | ... > ... | cflow.cs:74:13:74:24 | After ... > ... [true] | +| cflow.cs:74:13:74:24 | After ... > ... [false] | cflow.cs:79:9:81:9 | {...} | +| cflow.cs:74:13:74:24 | After ... > ... [true] | cflow.cs:75:9:77:9 | {...} | +| cflow.cs:74:13:74:24 | Before ... > ... | cflow.cs:74:13:74:20 | Before access to property Length | | cflow.cs:74:24:74:24 | 0 | cflow.cs:74:13:74:24 | ... > ... | | cflow.cs:75:9:77:9 | {...} | cflow.cs:76:13:76:33 | ...; | -| cflow.cs:76:13:76:33 | ...; | cflow.cs:76:31:76:31 | access to parameter s | +| cflow.cs:76:13:76:32 | After call to method WriteLine | cflow.cs:76:13:76:33 | After ...; | +| cflow.cs:76:13:76:32 | Before call to method WriteLine | cflow.cs:76:31:76:31 | access to parameter s | +| cflow.cs:76:13:76:32 | call to method WriteLine | cflow.cs:76:13:76:32 | After call to method WriteLine | +| cflow.cs:76:13:76:33 | ...; | cflow.cs:76:13:76:32 | Before call to method WriteLine | +| cflow.cs:76:13:76:33 | After ...; | cflow.cs:75:9:77:9 | After {...} | | cflow.cs:76:31:76:31 | access to parameter s | cflow.cs:76:13:76:32 | call to method WriteLine | | cflow.cs:79:9:81:9 | {...} | cflow.cs:80:13:80:48 | ...; | -| cflow.cs:80:13:80:48 | ...; | cflow.cs:80:31:80:46 | "" | +| cflow.cs:80:13:80:47 | After call to method WriteLine | cflow.cs:80:13:80:48 | After ...; | +| cflow.cs:80:13:80:47 | Before call to method WriteLine | cflow.cs:80:31:80:46 | "" | +| cflow.cs:80:13:80:47 | call to method WriteLine | cflow.cs:80:13:80:47 | After call to method WriteLine | +| cflow.cs:80:13:80:48 | ...; | cflow.cs:80:13:80:47 | Before call to method WriteLine | +| cflow.cs:80:13:80:48 | After ...; | cflow.cs:79:9:81:9 | After {...} | | cflow.cs:80:31:80:46 | "" | cflow.cs:80:13:80:47 | call to method WriteLine | -| cflow.cs:84:18:84:19 | enter M2 | cflow.cs:85:5:88:5 | {...} | -| cflow.cs:84:18:84:19 | exit M2 (normal) | cflow.cs:84:18:84:19 | exit M2 | +| cflow.cs:84:18:84:19 | Entry | cflow.cs:84:28:84:28 | s | +| cflow.cs:84:18:84:19 | Normal Exit | cflow.cs:84:18:84:19 | Exit | +| cflow.cs:84:28:84:28 | s | cflow.cs:85:5:88:5 | {...} | +| cflow.cs:85:5:88:5 | After {...} | cflow.cs:84:18:84:19 | Normal Exit | | cflow.cs:85:5:88:5 | {...} | cflow.cs:86:9:87:33 | if (...) ... | -| cflow.cs:86:9:87:33 | if (...) ... | cflow.cs:86:13:86:13 | access to parameter s | +| cflow.cs:86:9:87:33 | After if (...) ... | cflow.cs:85:5:88:5 | After {...} | +| cflow.cs:86:9:87:33 | if (...) ... | cflow.cs:86:13:86:37 | ... && ... | | cflow.cs:86:13:86:13 | access to parameter s | cflow.cs:86:18:86:21 | null | -| cflow.cs:86:13:86:21 | ... != ... | cflow.cs:86:13:86:37 | [false] ... && ... | -| cflow.cs:86:13:86:21 | ... != ... | cflow.cs:86:26:86:26 | access to parameter s | -| cflow.cs:86:13:86:37 | [true] ... && ... | cflow.cs:87:13:87:33 | ...; | +| cflow.cs:86:13:86:21 | ... != ... | cflow.cs:86:13:86:21 | After ... != ... [false] | +| cflow.cs:86:13:86:21 | ... != ... | cflow.cs:86:13:86:21 | After ... != ... [true] | +| cflow.cs:86:13:86:21 | After ... != ... [true] | cflow.cs:86:26:86:37 | Before ... > ... | +| cflow.cs:86:13:86:21 | Before ... != ... | cflow.cs:86:13:86:13 | access to parameter s | +| cflow.cs:86:13:86:37 | ... && ... | cflow.cs:86:13:86:21 | Before ... != ... | +| cflow.cs:86:13:86:37 | After ... && ... [true] | cflow.cs:87:13:87:33 | ...; | | cflow.cs:86:18:86:21 | null | cflow.cs:86:13:86:21 | ... != ... | | cflow.cs:86:26:86:26 | access to parameter s | cflow.cs:86:26:86:33 | access to property Length | -| cflow.cs:86:26:86:33 | access to property Length | cflow.cs:86:37:86:37 | 0 | -| cflow.cs:86:26:86:37 | ... > ... | cflow.cs:86:13:86:37 | [true] ... && ... | +| cflow.cs:86:26:86:33 | After access to property Length | cflow.cs:86:37:86:37 | 0 | +| cflow.cs:86:26:86:33 | Before access to property Length | cflow.cs:86:26:86:26 | access to parameter s | +| cflow.cs:86:26:86:33 | access to property Length | cflow.cs:86:26:86:33 | After access to property Length | +| cflow.cs:86:26:86:37 | ... > ... | cflow.cs:86:26:86:37 | After ... > ... [false] | +| cflow.cs:86:26:86:37 | ... > ... | cflow.cs:86:26:86:37 | After ... > ... [true] | +| cflow.cs:86:26:86:37 | After ... > ... [true] | cflow.cs:86:13:86:37 | After ... && ... [true] | +| cflow.cs:86:26:86:37 | Before ... > ... | cflow.cs:86:26:86:33 | Before access to property Length | | cflow.cs:86:37:86:37 | 0 | cflow.cs:86:26:86:37 | ... > ... | -| cflow.cs:87:13:87:33 | ...; | cflow.cs:87:31:87:31 | access to parameter s | +| cflow.cs:87:13:87:32 | After call to method WriteLine | cflow.cs:87:13:87:33 | After ...; | +| cflow.cs:87:13:87:32 | Before call to method WriteLine | cflow.cs:87:31:87:31 | access to parameter s | +| cflow.cs:87:13:87:32 | call to method WriteLine | cflow.cs:87:13:87:32 | After call to method WriteLine | +| cflow.cs:87:13:87:33 | ...; | cflow.cs:87:13:87:32 | Before call to method WriteLine | | cflow.cs:87:31:87:31 | access to parameter s | cflow.cs:87:13:87:32 | call to method WriteLine | -| cflow.cs:90:18:90:19 | enter M3 | cflow.cs:91:5:104:5 | {...} | +| cflow.cs:90:18:90:19 | Entry | cflow.cs:90:28:90:28 | s | +| cflow.cs:90:28:90:28 | s | cflow.cs:91:5:104:5 | {...} | +| cflow.cs:91:5:104:5 | After {...} | cflow.cs:90:18:90:19 | Normal Exit | | cflow.cs:91:5:104:5 | {...} | cflow.cs:92:9:93:49 | if (...) ... | -| cflow.cs:92:9:93:49 | if (...) ... | cflow.cs:92:20:92:20 | access to parameter s | -| cflow.cs:92:13:92:27 | call to method Equals | cflow.cs:93:45:93:47 | "s" | -| cflow.cs:92:13:92:27 | call to method Equals | cflow.cs:94:9:94:29 | ...; | +| cflow.cs:92:9:93:49 | After if (...) ... | cflow.cs:94:9:94:29 | ...; | +| cflow.cs:92:9:93:49 | if (...) ... | cflow.cs:92:13:92:27 | Before call to method Equals | +| cflow.cs:92:13:92:27 | After call to method Equals [false] | cflow.cs:92:9:93:49 | After if (...) ... | +| cflow.cs:92:13:92:27 | After call to method Equals [true] | cflow.cs:93:13:93:49 | Before throw ...; | +| cflow.cs:92:13:92:27 | Before call to method Equals | cflow.cs:92:20:92:20 | access to parameter s | +| cflow.cs:92:13:92:27 | call to method Equals | cflow.cs:92:13:92:27 | After call to method Equals [false] | +| cflow.cs:92:13:92:27 | call to method Equals | cflow.cs:92:13:92:27 | After call to method Equals [true] | | cflow.cs:92:20:92:20 | access to parameter s | cflow.cs:92:23:92:26 | null | | cflow.cs:92:23:92:26 | null | cflow.cs:92:13:92:27 | call to method Equals | -| cflow.cs:93:13:93:49 | throw ...; | cflow.cs:90:18:90:19 | exit M3 (abnormal) | -| cflow.cs:93:19:93:48 | object creation of type ArgumentNullException | cflow.cs:93:13:93:49 | throw ...; | +| cflow.cs:93:13:93:49 | Before throw ...; | cflow.cs:93:19:93:48 | Before object creation of type ArgumentNullException | +| cflow.cs:93:13:93:49 | throw ...; | cflow.cs:90:18:90:19 | Exceptional Exit | +| cflow.cs:93:19:93:48 | After object creation of type ArgumentNullException | cflow.cs:93:13:93:49 | throw ...; | +| cflow.cs:93:19:93:48 | Before object creation of type ArgumentNullException | cflow.cs:93:45:93:47 | "s" | +| cflow.cs:93:19:93:48 | object creation of type ArgumentNullException | cflow.cs:93:19:93:48 | After object creation of type ArgumentNullException | | cflow.cs:93:45:93:47 | "s" | cflow.cs:93:19:93:48 | object creation of type ArgumentNullException | -| cflow.cs:94:9:94:28 | call to method WriteLine | cflow.cs:96:9:97:55 | if (...) ... | -| cflow.cs:94:9:94:29 | ...; | cflow.cs:94:27:94:27 | access to parameter s | +| cflow.cs:94:9:94:28 | After call to method WriteLine | cflow.cs:94:9:94:29 | After ...; | +| cflow.cs:94:9:94:28 | Before call to method WriteLine | cflow.cs:94:27:94:27 | access to parameter s | +| cflow.cs:94:9:94:28 | call to method WriteLine | cflow.cs:94:9:94:28 | After call to method WriteLine | +| cflow.cs:94:9:94:29 | ...; | cflow.cs:94:9:94:28 | Before call to method WriteLine | +| cflow.cs:94:9:94:29 | After ...; | cflow.cs:96:9:97:55 | if (...) ... | | cflow.cs:94:27:94:27 | access to parameter s | cflow.cs:94:9:94:28 | call to method WriteLine | -| cflow.cs:96:9:97:55 | if (...) ... | cflow.cs:96:13:96:17 | this access | -| cflow.cs:96:13:96:17 | access to field Field | cflow.cs:96:22:96:25 | null | +| cflow.cs:96:9:97:55 | After if (...) ... | cflow.cs:99:9:100:42 | if (...) ... | +| cflow.cs:96:9:97:55 | if (...) ... | cflow.cs:96:13:96:25 | Before ... != ... | +| cflow.cs:96:13:96:17 | After access to field Field | cflow.cs:96:22:96:25 | null | +| cflow.cs:96:13:96:17 | Before access to field Field | cflow.cs:96:13:96:17 | this access | +| cflow.cs:96:13:96:17 | access to field Field | cflow.cs:96:13:96:17 | After access to field Field | | cflow.cs:96:13:96:17 | this access | cflow.cs:96:13:96:17 | access to field Field | -| cflow.cs:96:13:96:25 | ... != ... | cflow.cs:97:13:97:55 | ...; | -| cflow.cs:96:13:96:25 | ... != ... | cflow.cs:99:9:100:42 | if (...) ... | +| cflow.cs:96:13:96:25 | ... != ... | cflow.cs:96:13:96:25 | After ... != ... [false] | +| cflow.cs:96:13:96:25 | ... != ... | cflow.cs:96:13:96:25 | After ... != ... [true] | +| cflow.cs:96:13:96:25 | After ... != ... [true] | cflow.cs:97:13:97:55 | ...; | +| cflow.cs:96:13:96:25 | Before ... != ... | cflow.cs:96:13:96:17 | Before access to field Field | | cflow.cs:96:22:96:25 | null | cflow.cs:96:13:96:25 | ... != ... | -| cflow.cs:97:13:97:55 | ...; | cflow.cs:97:31:97:47 | object creation of type ControlFlow | -| cflow.cs:97:31:97:47 | object creation of type ControlFlow | cflow.cs:97:31:97:53 | access to field Field | -| cflow.cs:97:31:97:53 | access to field Field | cflow.cs:97:13:97:54 | call to method WriteLine | -| cflow.cs:99:9:100:42 | if (...) ... | cflow.cs:99:13:99:17 | this access | -| cflow.cs:99:13:99:17 | access to field Field | cflow.cs:99:22:99:25 | null | +| cflow.cs:97:13:97:54 | After call to method WriteLine | cflow.cs:97:13:97:55 | After ...; | +| cflow.cs:97:13:97:54 | Before call to method WriteLine | cflow.cs:97:31:97:53 | Before access to field Field | +| cflow.cs:97:13:97:54 | call to method WriteLine | cflow.cs:97:13:97:54 | After call to method WriteLine | +| cflow.cs:97:13:97:55 | ...; | cflow.cs:97:13:97:54 | Before call to method WriteLine | +| cflow.cs:97:31:97:47 | After object creation of type ControlFlow | cflow.cs:97:31:97:53 | access to field Field | +| cflow.cs:97:31:97:47 | Before object creation of type ControlFlow | cflow.cs:97:31:97:47 | object creation of type ControlFlow | +| cflow.cs:97:31:97:47 | object creation of type ControlFlow | cflow.cs:97:31:97:47 | After object creation of type ControlFlow | +| cflow.cs:97:31:97:53 | After access to field Field | cflow.cs:97:13:97:54 | call to method WriteLine | +| cflow.cs:97:31:97:53 | Before access to field Field | cflow.cs:97:31:97:47 | Before object creation of type ControlFlow | +| cflow.cs:97:31:97:53 | access to field Field | cflow.cs:97:31:97:53 | After access to field Field | +| cflow.cs:99:9:100:42 | After if (...) ... | cflow.cs:102:9:103:36 | if (...) ... | +| cflow.cs:99:9:100:42 | if (...) ... | cflow.cs:99:13:99:25 | Before ... != ... | +| cflow.cs:99:13:99:17 | After access to field Field | cflow.cs:99:22:99:25 | null | +| cflow.cs:99:13:99:17 | Before access to field Field | cflow.cs:99:13:99:17 | this access | +| cflow.cs:99:13:99:17 | access to field Field | cflow.cs:99:13:99:17 | After access to field Field | | cflow.cs:99:13:99:17 | this access | cflow.cs:99:13:99:17 | access to field Field | -| cflow.cs:99:13:99:25 | ... != ... | cflow.cs:100:13:100:42 | ...; | -| cflow.cs:99:13:99:25 | ... != ... | cflow.cs:102:9:103:36 | if (...) ... | +| cflow.cs:99:13:99:25 | ... != ... | cflow.cs:99:13:99:25 | After ... != ... [false] | +| cflow.cs:99:13:99:25 | ... != ... | cflow.cs:99:13:99:25 | After ... != ... [true] | +| cflow.cs:99:13:99:25 | After ... != ... [true] | cflow.cs:100:13:100:42 | ...; | +| cflow.cs:99:13:99:25 | Before ... != ... | cflow.cs:99:13:99:17 | Before access to field Field | | cflow.cs:99:22:99:25 | null | cflow.cs:99:13:99:25 | ... != ... | -| cflow.cs:100:13:100:42 | ...; | cflow.cs:100:31:100:34 | this access | +| cflow.cs:100:13:100:41 | After call to method WriteLine | cflow.cs:100:13:100:42 | After ...; | +| cflow.cs:100:13:100:41 | Before call to method WriteLine | cflow.cs:100:31:100:40 | Before access to field Field | +| cflow.cs:100:13:100:41 | call to method WriteLine | cflow.cs:100:13:100:41 | After call to method WriteLine | +| cflow.cs:100:13:100:42 | ...; | cflow.cs:100:13:100:41 | Before call to method WriteLine | | cflow.cs:100:31:100:34 | this access | cflow.cs:100:31:100:40 | access to field Field | -| cflow.cs:100:31:100:40 | access to field Field | cflow.cs:100:13:100:41 | call to method WriteLine | -| cflow.cs:102:9:103:36 | if (...) ... | cflow.cs:102:13:102:16 | this access | +| cflow.cs:100:31:100:40 | After access to field Field | cflow.cs:100:13:100:41 | call to method WriteLine | +| cflow.cs:100:31:100:40 | Before access to field Field | cflow.cs:100:31:100:34 | this access | +| cflow.cs:100:31:100:40 | access to field Field | cflow.cs:100:31:100:40 | After access to field Field | +| cflow.cs:102:9:103:36 | After if (...) ... | cflow.cs:91:5:104:5 | After {...} | +| cflow.cs:102:9:103:36 | if (...) ... | cflow.cs:102:13:102:29 | Before ... != ... | | cflow.cs:102:13:102:16 | this access | cflow.cs:102:13:102:21 | access to property Prop | -| cflow.cs:102:13:102:21 | access to property Prop | cflow.cs:102:26:102:29 | null | -| cflow.cs:102:13:102:29 | ... != ... | cflow.cs:90:18:90:19 | exit M3 (normal) | -| cflow.cs:102:13:102:29 | ... != ... | cflow.cs:103:13:103:36 | ...; | +| cflow.cs:102:13:102:21 | After access to property Prop | cflow.cs:102:26:102:29 | null | +| cflow.cs:102:13:102:21 | Before access to property Prop | cflow.cs:102:13:102:16 | this access | +| cflow.cs:102:13:102:21 | access to property Prop | cflow.cs:102:13:102:21 | After access to property Prop | +| cflow.cs:102:13:102:29 | ... != ... | cflow.cs:102:13:102:29 | After ... != ... [false] | +| cflow.cs:102:13:102:29 | ... != ... | cflow.cs:102:13:102:29 | After ... != ... [true] | +| cflow.cs:102:13:102:29 | After ... != ... [true] | cflow.cs:103:13:103:36 | ...; | +| cflow.cs:102:13:102:29 | Before ... != ... | cflow.cs:102:13:102:21 | Before access to property Prop | | cflow.cs:102:26:102:29 | null | cflow.cs:102:13:102:29 | ... != ... | -| cflow.cs:103:13:103:36 | ...; | cflow.cs:103:31:103:34 | this access | -| cflow.cs:103:31:103:34 | access to property Prop | cflow.cs:103:13:103:35 | call to method WriteLine | +| cflow.cs:103:13:103:35 | After call to method WriteLine | cflow.cs:103:13:103:36 | After ...; | +| cflow.cs:103:13:103:35 | Before call to method WriteLine | cflow.cs:103:31:103:34 | Before access to property Prop | +| cflow.cs:103:13:103:35 | call to method WriteLine | cflow.cs:103:13:103:35 | After call to method WriteLine | +| cflow.cs:103:13:103:36 | ...; | cflow.cs:103:13:103:35 | Before call to method WriteLine | +| cflow.cs:103:31:103:34 | After access to property Prop | cflow.cs:103:13:103:35 | call to method WriteLine | +| cflow.cs:103:31:103:34 | Before access to property Prop | cflow.cs:103:31:103:34 | this access | +| cflow.cs:103:31:103:34 | access to property Prop | cflow.cs:103:31:103:34 | After access to property Prop | | cflow.cs:103:31:103:34 | this access | cflow.cs:103:31:103:34 | access to property Prop | -| cflow.cs:106:18:106:19 | enter M4 | cflow.cs:107:5:117:5 | {...} | -| cflow.cs:106:18:106:19 | exit M4 (normal) | cflow.cs:106:18:106:19 | exit M4 | +| cflow.cs:106:18:106:19 | Entry | cflow.cs:106:28:106:28 | s | +| cflow.cs:106:18:106:19 | Normal Exit | cflow.cs:106:18:106:19 | Exit | +| cflow.cs:106:28:106:28 | s | cflow.cs:107:5:117:5 | {...} | +| cflow.cs:107:5:117:5 | After {...} | cflow.cs:106:18:106:19 | Normal Exit | | cflow.cs:107:5:117:5 | {...} | cflow.cs:108:9:115:9 | if (...) ... | -| cflow.cs:108:9:115:9 | if (...) ... | cflow.cs:108:13:108:13 | access to parameter s | +| cflow.cs:108:9:115:9 | After if (...) ... | cflow.cs:116:9:116:29 | ...; | +| cflow.cs:108:9:115:9 | if (...) ... | cflow.cs:108:13:108:21 | Before ... != ... | | cflow.cs:108:13:108:13 | access to parameter s | cflow.cs:108:18:108:21 | null | -| cflow.cs:108:13:108:21 | ... != ... | cflow.cs:109:9:115:9 | {...} | -| cflow.cs:108:13:108:21 | ... != ... | cflow.cs:116:9:116:29 | ...; | +| cflow.cs:108:13:108:21 | ... != ... | cflow.cs:108:13:108:21 | After ... != ... [false] | +| cflow.cs:108:13:108:21 | ... != ... | cflow.cs:108:13:108:21 | After ... != ... [true] | +| cflow.cs:108:13:108:21 | After ... != ... [false] | cflow.cs:108:9:115:9 | After if (...) ... | +| cflow.cs:108:13:108:21 | After ... != ... [true] | cflow.cs:109:9:115:9 | {...} | +| cflow.cs:108:13:108:21 | Before ... != ... | cflow.cs:108:13:108:13 | access to parameter s | | cflow.cs:108:18:108:21 | null | cflow.cs:108:13:108:21 | ... != ... | | cflow.cs:109:9:115:9 | {...} | cflow.cs:110:13:113:13 | while (...) ... | -| cflow.cs:110:13:113:13 | while (...) ... | cflow.cs:110:20:110:23 | true | -| cflow.cs:110:20:110:23 | true | cflow.cs:111:13:113:13 | {...} | +| cflow.cs:110:13:113:13 | [LoopHeader] while (...) ... | cflow.cs:110:20:110:23 | true | +| cflow.cs:110:13:113:13 | while (...) ... | cflow.cs:110:13:113:13 | [LoopHeader] while (...) ... | +| cflow.cs:110:20:110:23 | After true [true] | cflow.cs:111:13:113:13 | {...} | +| cflow.cs:110:20:110:23 | true | cflow.cs:110:20:110:23 | After true [true] | | cflow.cs:111:13:113:13 | {...} | cflow.cs:112:17:112:37 | ...; | -| cflow.cs:112:17:112:37 | ...; | cflow.cs:112:35:112:35 | access to parameter s | +| cflow.cs:112:17:112:36 | After call to method WriteLine | cflow.cs:112:17:112:37 | After ...; | +| cflow.cs:112:17:112:36 | Before call to method WriteLine | cflow.cs:112:35:112:35 | access to parameter s | +| cflow.cs:112:17:112:36 | call to method WriteLine | cflow.cs:112:17:112:36 | After call to method WriteLine | +| cflow.cs:112:17:112:37 | ...; | cflow.cs:112:17:112:36 | Before call to method WriteLine | +| cflow.cs:112:17:112:37 | After ...; | cflow.cs:111:13:113:13 | After {...} | | cflow.cs:112:35:112:35 | access to parameter s | cflow.cs:112:17:112:36 | call to method WriteLine | -| cflow.cs:116:9:116:28 | call to method WriteLine | cflow.cs:106:18:106:19 | exit M4 (normal) | -| cflow.cs:116:9:116:29 | ...; | cflow.cs:116:27:116:27 | access to parameter s | +| cflow.cs:116:9:116:28 | After call to method WriteLine | cflow.cs:116:9:116:29 | After ...; | +| cflow.cs:116:9:116:28 | Before call to method WriteLine | cflow.cs:116:27:116:27 | access to parameter s | +| cflow.cs:116:9:116:28 | call to method WriteLine | cflow.cs:116:9:116:28 | After call to method WriteLine | +| cflow.cs:116:9:116:29 | ...; | cflow.cs:116:9:116:28 | Before call to method WriteLine | +| cflow.cs:116:9:116:29 | After ...; | cflow.cs:107:5:117:5 | After {...} | | cflow.cs:116:27:116:27 | access to parameter s | cflow.cs:116:9:116:28 | call to method WriteLine | -| cflow.cs:119:20:119:21 | enter M5 | cflow.cs:120:5:124:5 | {...} | -| cflow.cs:119:20:119:21 | exit M5 (normal) | cflow.cs:119:20:119:21 | exit M5 | +| cflow.cs:119:20:119:21 | Entry | cflow.cs:119:30:119:30 | s | +| cflow.cs:119:20:119:21 | Normal Exit | cflow.cs:119:20:119:21 | Exit | +| cflow.cs:119:30:119:30 | s | cflow.cs:120:5:124:5 | {...} | | cflow.cs:120:5:124:5 | {...} | cflow.cs:121:9:121:18 | ... ...; | -| cflow.cs:121:9:121:18 | ... ...; | cflow.cs:121:17:121:17 | access to parameter s | -| cflow.cs:121:13:121:17 | String x = ... | cflow.cs:122:9:122:20 | ...; | +| cflow.cs:121:9:121:18 | ... ...; | cflow.cs:121:13:121:17 | Before String x = ... | +| cflow.cs:121:9:121:18 | After ... ...; | cflow.cs:122:9:122:20 | ...; | +| cflow.cs:121:13:121:13 | access to local variable x | cflow.cs:121:17:121:17 | access to parameter s | +| cflow.cs:121:13:121:17 | After String x = ... | cflow.cs:121:9:121:18 | After ... ...; | +| cflow.cs:121:13:121:17 | Before String x = ... | cflow.cs:121:13:121:13 | access to local variable x | +| cflow.cs:121:13:121:17 | String x = ... | cflow.cs:121:13:121:17 | After String x = ... | | cflow.cs:121:17:121:17 | access to parameter s | cflow.cs:121:13:121:17 | String x = ... | -| cflow.cs:122:9:122:19 | ... = ... | cflow.cs:123:16:123:16 | access to local variable x | -| cflow.cs:122:9:122:20 | ...; | cflow.cs:122:13:122:13 | access to local variable x | +| cflow.cs:122:9:122:9 | access to local variable x | cflow.cs:122:13:122:19 | Before ... + ... | +| cflow.cs:122:9:122:19 | ... = ... | cflow.cs:122:9:122:19 | After ... = ... | +| cflow.cs:122:9:122:19 | After ... = ... | cflow.cs:122:9:122:20 | After ...; | +| cflow.cs:122:9:122:19 | Before ... = ... | cflow.cs:122:9:122:9 | access to local variable x | +| cflow.cs:122:9:122:20 | ...; | cflow.cs:122:9:122:19 | Before ... = ... | +| cflow.cs:122:9:122:20 | After ...; | cflow.cs:123:9:123:17 | Before return ...; | | cflow.cs:122:13:122:13 | access to local variable x | cflow.cs:122:17:122:19 | " " | -| cflow.cs:122:13:122:19 | ... + ... | cflow.cs:122:9:122:19 | ... = ... | +| cflow.cs:122:13:122:19 | ... + ... | cflow.cs:122:13:122:19 | After ... + ... | +| cflow.cs:122:13:122:19 | After ... + ... | cflow.cs:122:9:122:19 | ... = ... | +| cflow.cs:122:13:122:19 | Before ... + ... | cflow.cs:122:13:122:13 | access to local variable x | | cflow.cs:122:17:122:19 | " " | cflow.cs:122:13:122:19 | ... + ... | -| cflow.cs:123:9:123:17 | return ...; | cflow.cs:119:20:119:21 | exit M5 (normal) | +| cflow.cs:123:9:123:17 | Before return ...; | cflow.cs:123:16:123:16 | access to local variable x | +| cflow.cs:123:9:123:17 | return ...; | cflow.cs:119:20:119:21 | Normal Exit | | cflow.cs:123:16:123:16 | access to local variable x | cflow.cs:123:9:123:17 | return ...; | -| cflow.cs:127:19:127:21 | enter get_Prop | cflow.cs:127:23:127:60 | {...} | -| cflow.cs:127:19:127:21 | exit get_Prop (normal) | cflow.cs:127:19:127:21 | exit get_Prop | -| cflow.cs:127:23:127:60 | {...} | cflow.cs:127:32:127:36 | this access | -| cflow.cs:127:25:127:58 | return ...; | cflow.cs:127:19:127:21 | exit get_Prop (normal) | -| cflow.cs:127:32:127:36 | access to field Field | cflow.cs:127:41:127:44 | null | +| cflow.cs:127:19:127:21 | Entry | cflow.cs:127:23:127:60 | {...} | +| cflow.cs:127:19:127:21 | Normal Exit | cflow.cs:127:19:127:21 | Exit | +| cflow.cs:127:23:127:60 | {...} | cflow.cs:127:25:127:58 | Before return ...; | +| cflow.cs:127:25:127:58 | Before return ...; | cflow.cs:127:32:127:57 | ... ? ... : ... | +| cflow.cs:127:25:127:58 | return ...; | cflow.cs:127:19:127:21 | Normal Exit | +| cflow.cs:127:32:127:36 | After access to field Field | cflow.cs:127:41:127:44 | null | +| cflow.cs:127:32:127:36 | Before access to field Field | cflow.cs:127:32:127:36 | this access | +| cflow.cs:127:32:127:36 | access to field Field | cflow.cs:127:32:127:36 | After access to field Field | | cflow.cs:127:32:127:36 | this access | cflow.cs:127:32:127:36 | access to field Field | -| cflow.cs:127:32:127:44 | ... == ... | cflow.cs:127:48:127:49 | "" | -| cflow.cs:127:32:127:44 | ... == ... | cflow.cs:127:53:127:57 | this access | -| cflow.cs:127:32:127:57 | ... ? ... : ... | cflow.cs:127:25:127:58 | return ...; | +| cflow.cs:127:32:127:44 | ... == ... | cflow.cs:127:32:127:44 | After ... == ... [false] | +| cflow.cs:127:32:127:44 | ... == ... | cflow.cs:127:32:127:44 | After ... == ... [true] | +| cflow.cs:127:32:127:44 | After ... == ... [false] | cflow.cs:127:53:127:57 | Before access to field Field | +| cflow.cs:127:32:127:44 | After ... == ... [true] | cflow.cs:127:48:127:49 | "" | +| cflow.cs:127:32:127:44 | Before ... == ... | cflow.cs:127:32:127:36 | Before access to field Field | +| cflow.cs:127:32:127:57 | ... ? ... : ... | cflow.cs:127:32:127:44 | Before ... == ... | +| cflow.cs:127:32:127:57 | After ... ? ... : ... | cflow.cs:127:25:127:58 | return ...; | | cflow.cs:127:41:127:44 | null | cflow.cs:127:32:127:44 | ... == ... | +| cflow.cs:127:53:127:57 | Before access to field Field | cflow.cs:127:53:127:57 | this access | +| cflow.cs:127:53:127:57 | access to field Field | cflow.cs:127:53:127:57 | After access to field Field | | cflow.cs:127:53:127:57 | this access | cflow.cs:127:53:127:57 | access to field Field | -| cflow.cs:127:62:127:64 | enter set_Prop | cflow.cs:127:66:127:83 | {...} | -| cflow.cs:127:62:127:64 | exit set_Prop (normal) | cflow.cs:127:62:127:64 | exit set_Prop | +| cflow.cs:127:62:127:64 | Entry | cflow.cs:127:62:127:64 | value | +| cflow.cs:127:62:127:64 | Normal Exit | cflow.cs:127:62:127:64 | Exit | +| cflow.cs:127:62:127:64 | value | cflow.cs:127:66:127:83 | {...} | +| cflow.cs:127:66:127:83 | After {...} | cflow.cs:127:62:127:64 | Normal Exit | | cflow.cs:127:66:127:83 | {...} | cflow.cs:127:68:127:81 | ...; | -| cflow.cs:127:68:127:72 | access to field Field | cflow.cs:127:68:127:80 | ... = ... | -| cflow.cs:127:68:127:72 | this access | cflow.cs:127:76:127:80 | access to parameter value | -| cflow.cs:127:68:127:80 | ... = ... | cflow.cs:127:62:127:64 | exit set_Prop (normal) | -| cflow.cs:127:68:127:81 | ...; | cflow.cs:127:68:127:72 | this access | -| cflow.cs:127:76:127:80 | access to parameter value | cflow.cs:127:68:127:72 | access to field Field | -| cflow.cs:129:5:129:15 | call to constructor Object | cflow.cs:130:5:132:5 | {...} | -| cflow.cs:129:5:129:15 | call to method | cflow.cs:129:5:129:15 | call to constructor Object | -| cflow.cs:129:5:129:15 | enter ControlFlow | cflow.cs:129:5:129:15 | this access | -| cflow.cs:129:5:129:15 | exit ControlFlow (normal) | cflow.cs:129:5:129:15 | exit ControlFlow | +| cflow.cs:127:68:127:72 | After access to field Field | cflow.cs:127:76:127:80 | access to parameter value | +| cflow.cs:127:68:127:72 | Before access to field Field | cflow.cs:127:68:127:72 | this access | +| cflow.cs:127:68:127:72 | access to field Field | cflow.cs:127:68:127:72 | After access to field Field | +| cflow.cs:127:68:127:72 | this access | cflow.cs:127:68:127:72 | access to field Field | +| cflow.cs:127:68:127:80 | ... = ... | cflow.cs:127:68:127:80 | After ... = ... | +| cflow.cs:127:68:127:80 | After ... = ... | cflow.cs:127:68:127:81 | After ...; | +| cflow.cs:127:68:127:80 | Before ... = ... | cflow.cs:127:68:127:72 | Before access to field Field | +| cflow.cs:127:68:127:81 | ...; | cflow.cs:127:68:127:80 | Before ... = ... | +| cflow.cs:127:68:127:81 | After ...; | cflow.cs:127:66:127:83 | After {...} | +| cflow.cs:127:76:127:80 | access to parameter value | cflow.cs:127:68:127:80 | ... = ... | +| cflow.cs:129:5:129:15 | After call to constructor Object | cflow.cs:130:5:132:5 | {...} | +| cflow.cs:129:5:129:15 | After call to method | cflow.cs:129:5:129:15 | Before call to constructor Object | +| cflow.cs:129:5:129:15 | Before call to constructor Object | cflow.cs:129:5:129:15 | call to constructor Object | +| cflow.cs:129:5:129:15 | Before call to method | cflow.cs:129:5:129:15 | this access | +| cflow.cs:129:5:129:15 | Entry | cflow.cs:129:24:129:24 | s | +| cflow.cs:129:5:129:15 | Normal Exit | cflow.cs:129:5:129:15 | Exit | +| cflow.cs:129:5:129:15 | call to constructor Object | cflow.cs:129:5:129:15 | After call to constructor Object | +| cflow.cs:129:5:129:15 | call to method | cflow.cs:129:5:129:15 | After call to method | | cflow.cs:129:5:129:15 | this access | cflow.cs:129:5:129:15 | call to method | +| cflow.cs:129:24:129:24 | s | cflow.cs:129:5:129:15 | Before call to method | +| cflow.cs:130:5:132:5 | After {...} | cflow.cs:129:5:129:15 | Normal Exit | | cflow.cs:130:5:132:5 | {...} | cflow.cs:131:9:131:18 | ...; | -| cflow.cs:131:9:131:13 | access to field Field | cflow.cs:131:9:131:17 | ... = ... | -| cflow.cs:131:9:131:13 | this access | cflow.cs:131:17:131:17 | access to parameter s | -| cflow.cs:131:9:131:17 | ... = ... | cflow.cs:129:5:129:15 | exit ControlFlow (normal) | -| cflow.cs:131:9:131:18 | ...; | cflow.cs:131:9:131:13 | this access | -| cflow.cs:131:17:131:17 | access to parameter s | cflow.cs:131:9:131:13 | access to field Field | -| cflow.cs:134:5:134:15 | enter ControlFlow | cflow.cs:134:31:134:31 | access to parameter i | -| cflow.cs:134:5:134:15 | exit ControlFlow (normal) | cflow.cs:134:5:134:15 | exit ControlFlow | -| cflow.cs:134:26:134:29 | call to constructor ControlFlow | cflow.cs:134:39:134:41 | {...} | -| cflow.cs:134:31:134:31 | (...) ... | cflow.cs:134:35:134:36 | "" | +| cflow.cs:131:9:131:13 | After access to field Field | cflow.cs:131:17:131:17 | access to parameter s | +| cflow.cs:131:9:131:13 | Before access to field Field | cflow.cs:131:9:131:13 | this access | +| cflow.cs:131:9:131:13 | access to field Field | cflow.cs:131:9:131:13 | After access to field Field | +| cflow.cs:131:9:131:13 | this access | cflow.cs:131:9:131:13 | access to field Field | +| cflow.cs:131:9:131:17 | ... = ... | cflow.cs:131:9:131:17 | After ... = ... | +| cflow.cs:131:9:131:17 | After ... = ... | cflow.cs:131:9:131:18 | After ...; | +| cflow.cs:131:9:131:17 | Before ... = ... | cflow.cs:131:9:131:13 | Before access to field Field | +| cflow.cs:131:9:131:18 | ...; | cflow.cs:131:9:131:17 | Before ... = ... | +| cflow.cs:131:9:131:18 | After ...; | cflow.cs:130:5:132:5 | After {...} | +| cflow.cs:131:17:131:17 | access to parameter s | cflow.cs:131:9:131:17 | ... = ... | +| cflow.cs:134:5:134:15 | Entry | cflow.cs:134:21:134:21 | i | +| cflow.cs:134:5:134:15 | Normal Exit | cflow.cs:134:5:134:15 | Exit | +| cflow.cs:134:21:134:21 | i | cflow.cs:134:26:134:29 | Before call to constructor ControlFlow | +| cflow.cs:134:26:134:29 | After call to constructor ControlFlow | cflow.cs:134:39:134:41 | {...} | +| cflow.cs:134:26:134:29 | Before call to constructor ControlFlow | cflow.cs:134:31:134:36 | Before ... + ... | +| cflow.cs:134:26:134:29 | call to constructor ControlFlow | cflow.cs:134:26:134:29 | After call to constructor ControlFlow | +| cflow.cs:134:31:134:31 | (...) ... | cflow.cs:134:31:134:31 | After (...) ... | +| cflow.cs:134:31:134:31 | After (...) ... | cflow.cs:134:35:134:36 | "" | +| cflow.cs:134:31:134:31 | Before (...) ... | cflow.cs:134:31:134:31 | access to parameter i | | cflow.cs:134:31:134:31 | access to parameter i | cflow.cs:134:31:134:31 | (...) ... | -| cflow.cs:134:31:134:36 | ... + ... | cflow.cs:134:26:134:29 | call to constructor ControlFlow | +| cflow.cs:134:31:134:36 | ... + ... | cflow.cs:134:31:134:36 | After ... + ... | +| cflow.cs:134:31:134:36 | After ... + ... | cflow.cs:134:26:134:29 | call to constructor ControlFlow | +| cflow.cs:134:31:134:36 | Before ... + ... | cflow.cs:134:31:134:31 | Before (...) ... | | cflow.cs:134:35:134:36 | "" | cflow.cs:134:31:134:36 | ... + ... | -| cflow.cs:134:39:134:41 | {...} | cflow.cs:134:5:134:15 | exit ControlFlow (normal) | -| cflow.cs:136:12:136:22 | enter ControlFlow | cflow.cs:136:33:136:33 | 0 | -| cflow.cs:136:12:136:22 | exit ControlFlow (normal) | cflow.cs:136:12:136:22 | exit ControlFlow | -| cflow.cs:136:28:136:31 | call to constructor ControlFlow | cflow.cs:136:40:136:42 | {...} | +| cflow.cs:134:39:134:41 | {...} | cflow.cs:134:5:134:15 | Normal Exit | +| cflow.cs:136:12:136:22 | Entry | cflow.cs:136:28:136:31 | Before call to constructor ControlFlow | +| cflow.cs:136:12:136:22 | Normal Exit | cflow.cs:136:12:136:22 | Exit | +| cflow.cs:136:28:136:31 | After call to constructor ControlFlow | cflow.cs:136:40:136:42 | {...} | +| cflow.cs:136:28:136:31 | Before call to constructor ControlFlow | cflow.cs:136:33:136:37 | Before ... + ... | +| cflow.cs:136:28:136:31 | call to constructor ControlFlow | cflow.cs:136:28:136:31 | After call to constructor ControlFlow | | cflow.cs:136:33:136:33 | 0 | cflow.cs:136:37:136:37 | 1 | -| cflow.cs:136:33:136:37 | ... + ... | cflow.cs:136:28:136:31 | call to constructor ControlFlow | +| cflow.cs:136:33:136:37 | ... + ... | cflow.cs:136:33:136:37 | After ... + ... | +| cflow.cs:136:33:136:37 | After ... + ... | cflow.cs:136:28:136:31 | call to constructor ControlFlow | +| cflow.cs:136:33:136:37 | Before ... + ... | cflow.cs:136:33:136:33 | 0 | | cflow.cs:136:37:136:37 | 1 | cflow.cs:136:33:136:37 | ... + ... | -| cflow.cs:136:40:136:42 | {...} | cflow.cs:136:12:136:22 | exit ControlFlow (normal) | -| cflow.cs:138:40:138:40 | enter + | cflow.cs:139:5:142:5 | {...} | -| cflow.cs:138:40:138:40 | exit + (normal) | cflow.cs:138:40:138:40 | exit + | +| cflow.cs:136:40:136:42 | {...} | cflow.cs:136:12:136:22 | Normal Exit | +| cflow.cs:138:40:138:40 | Entry | cflow.cs:138:54:138:54 | x | +| cflow.cs:138:40:138:40 | Normal Exit | cflow.cs:138:40:138:40 | Exit | +| cflow.cs:138:54:138:54 | x | cflow.cs:138:69:138:69 | y | +| cflow.cs:138:69:138:69 | y | cflow.cs:139:5:142:5 | {...} | | cflow.cs:139:5:142:5 | {...} | cflow.cs:140:9:140:29 | ...; | -| cflow.cs:140:9:140:28 | call to method WriteLine | cflow.cs:141:16:141:16 | access to parameter y | -| cflow.cs:140:9:140:29 | ...; | cflow.cs:140:27:140:27 | access to parameter x | +| cflow.cs:140:9:140:28 | After call to method WriteLine | cflow.cs:140:9:140:29 | After ...; | +| cflow.cs:140:9:140:28 | Before call to method WriteLine | cflow.cs:140:27:140:27 | access to parameter x | +| cflow.cs:140:9:140:28 | call to method WriteLine | cflow.cs:140:9:140:28 | After call to method WriteLine | +| cflow.cs:140:9:140:29 | ...; | cflow.cs:140:9:140:28 | Before call to method WriteLine | +| cflow.cs:140:9:140:29 | After ...; | cflow.cs:141:9:141:17 | Before return ...; | | cflow.cs:140:27:140:27 | access to parameter x | cflow.cs:140:9:140:28 | call to method WriteLine | -| cflow.cs:141:9:141:17 | return ...; | cflow.cs:138:40:138:40 | exit + (normal) | +| cflow.cs:141:9:141:17 | Before return ...; | cflow.cs:141:16:141:16 | access to parameter y | +| cflow.cs:141:9:141:17 | return ...; | cflow.cs:138:40:138:40 | Normal Exit | | cflow.cs:141:16:141:16 | access to parameter y | cflow.cs:141:9:141:17 | return ...; | -| cflow.cs:144:33:144:35 | enter get_Item | cflow.cs:144:37:144:54 | {...} | -| cflow.cs:144:33:144:35 | exit get_Item (normal) | cflow.cs:144:33:144:35 | exit get_Item | -| cflow.cs:144:37:144:54 | {...} | cflow.cs:144:46:144:46 | access to parameter i | -| cflow.cs:144:39:144:52 | return ...; | cflow.cs:144:33:144:35 | exit get_Item (normal) | -| cflow.cs:144:46:144:46 | (...) ... | cflow.cs:144:50:144:51 | "" | +| cflow.cs:144:28:144:28 | i | cflow.cs:144:37:144:54 | {...} | +| cflow.cs:144:28:144:28 | i | cflow.cs:144:56:144:58 | value | +| cflow.cs:144:33:144:35 | Entry | cflow.cs:144:28:144:28 | i | +| cflow.cs:144:33:144:35 | Normal Exit | cflow.cs:144:33:144:35 | Exit | +| cflow.cs:144:37:144:54 | {...} | cflow.cs:144:39:144:52 | Before return ...; | +| cflow.cs:144:39:144:52 | Before return ...; | cflow.cs:144:46:144:51 | Before ... + ... | +| cflow.cs:144:39:144:52 | return ...; | cflow.cs:144:33:144:35 | Normal Exit | +| cflow.cs:144:46:144:46 | (...) ... | cflow.cs:144:46:144:46 | After (...) ... | +| cflow.cs:144:46:144:46 | After (...) ... | cflow.cs:144:50:144:51 | "" | +| cflow.cs:144:46:144:46 | Before (...) ... | cflow.cs:144:46:144:46 | access to parameter i | | cflow.cs:144:46:144:46 | access to parameter i | cflow.cs:144:46:144:46 | (...) ... | -| cflow.cs:144:46:144:51 | ... + ... | cflow.cs:144:39:144:52 | return ...; | +| cflow.cs:144:46:144:51 | ... + ... | cflow.cs:144:46:144:51 | After ... + ... | +| cflow.cs:144:46:144:51 | After ... + ... | cflow.cs:144:39:144:52 | return ...; | +| cflow.cs:144:46:144:51 | Before ... + ... | cflow.cs:144:46:144:46 | Before (...) ... | | cflow.cs:144:50:144:51 | "" | cflow.cs:144:46:144:51 | ... + ... | -| cflow.cs:144:56:144:58 | enter set_Item | cflow.cs:144:60:144:62 | {...} | -| cflow.cs:144:56:144:58 | exit set_Item (normal) | cflow.cs:144:56:144:58 | exit set_Item | -| cflow.cs:144:60:144:62 | {...} | cflow.cs:144:56:144:58 | exit set_Item (normal) | -| cflow.cs:146:10:146:12 | enter For | cflow.cs:147:5:177:5 | {...} | -| cflow.cs:146:10:146:12 | exit For (normal) | cflow.cs:146:10:146:12 | exit For | +| cflow.cs:144:56:144:58 | Entry | cflow.cs:144:28:144:28 | i | +| cflow.cs:144:56:144:58 | Normal Exit | cflow.cs:144:56:144:58 | Exit | +| cflow.cs:144:56:144:58 | value | cflow.cs:144:60:144:62 | {...} | +| cflow.cs:144:60:144:62 | {...} | cflow.cs:144:56:144:58 | Normal Exit | +| cflow.cs:146:10:146:12 | Entry | cflow.cs:147:5:177:5 | {...} | +| cflow.cs:146:10:146:12 | Normal Exit | cflow.cs:146:10:146:12 | Exit | +| cflow.cs:147:5:177:5 | After {...} | cflow.cs:146:10:146:12 | Normal Exit | | cflow.cs:147:5:177:5 | {...} | cflow.cs:148:9:148:18 | ... ...; | -| cflow.cs:148:9:148:18 | ... ...; | cflow.cs:148:17:148:17 | 0 | -| cflow.cs:148:13:148:17 | Int32 x = ... | cflow.cs:149:9:150:33 | for (...;...;...) ... | +| cflow.cs:148:9:148:18 | ... ...; | cflow.cs:148:13:148:17 | Before Int32 x = ... | +| cflow.cs:148:9:148:18 | After ... ...; | cflow.cs:149:9:150:33 | for (...;...;...) ... | +| cflow.cs:148:13:148:13 | access to local variable x | cflow.cs:148:17:148:17 | 0 | +| cflow.cs:148:13:148:17 | After Int32 x = ... | cflow.cs:148:9:148:18 | After ... ...; | +| cflow.cs:148:13:148:17 | Before Int32 x = ... | cflow.cs:148:13:148:13 | access to local variable x | +| cflow.cs:148:13:148:17 | Int32 x = ... | cflow.cs:148:13:148:17 | After Int32 x = ... | | cflow.cs:148:17:148:17 | 0 | cflow.cs:148:13:148:17 | Int32 x = ... | -| cflow.cs:149:9:150:33 | for (...;...;...) ... | cflow.cs:149:16:149:16 | access to local variable x | +| cflow.cs:149:9:150:33 | After for (...;...;...) ... | cflow.cs:152:9:157:9 | for (...;...;...) ... | +| cflow.cs:149:9:150:33 | [LoopHeader] for (...;...;...) ... | cflow.cs:149:24:149:26 | Before ++... | +| cflow.cs:149:9:150:33 | for (...;...;...) ... | cflow.cs:149:16:149:21 | Before ... < ... | | cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:149:20:149:21 | 10 | -| cflow.cs:149:16:149:21 | ... < ... | cflow.cs:150:13:150:33 | ...; | -| cflow.cs:149:16:149:21 | ... < ... | cflow.cs:152:9:157:9 | for (...;...;...) ... | +| cflow.cs:149:16:149:21 | ... < ... | cflow.cs:149:16:149:21 | After ... < ... [false] | +| cflow.cs:149:16:149:21 | ... < ... | cflow.cs:149:16:149:21 | After ... < ... [true] | +| cflow.cs:149:16:149:21 | After ... < ... [false] | cflow.cs:149:9:150:33 | After for (...;...;...) ... | +| cflow.cs:149:16:149:21 | After ... < ... [true] | cflow.cs:150:13:150:33 | ...; | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:149:16:149:16 | access to local variable x | | cflow.cs:149:20:149:21 | 10 | cflow.cs:149:16:149:21 | ... < ... | +| cflow.cs:149:24:149:26 | ++... | cflow.cs:149:24:149:26 | After ++... | +| cflow.cs:149:24:149:26 | Before ++... | cflow.cs:149:26:149:26 | access to local variable x | | cflow.cs:149:26:149:26 | access to local variable x | cflow.cs:149:24:149:26 | ++... | -| cflow.cs:150:13:150:32 | call to method WriteLine | cflow.cs:149:26:149:26 | access to local variable x | -| cflow.cs:150:13:150:33 | ...; | cflow.cs:150:31:150:31 | access to local variable x | +| cflow.cs:150:13:150:32 | After call to method WriteLine | cflow.cs:150:13:150:33 | After ...; | +| cflow.cs:150:13:150:32 | Before call to method WriteLine | cflow.cs:150:31:150:31 | access to local variable x | +| cflow.cs:150:13:150:32 | call to method WriteLine | cflow.cs:150:13:150:32 | After call to method WriteLine | +| cflow.cs:150:13:150:33 | ...; | cflow.cs:150:13:150:32 | Before call to method WriteLine | +| cflow.cs:150:13:150:33 | After ...; | cflow.cs:149:9:150:33 | [LoopHeader] for (...;...;...) ... | | cflow.cs:150:31:150:31 | access to local variable x | cflow.cs:150:13:150:32 | call to method WriteLine | +| cflow.cs:152:9:157:9 | After for (...;...;...) ... | cflow.cs:159:9:165:9 | for (...;...;...) ... | +| cflow.cs:152:9:157:9 | [LoopHeader] for (...;...;...) ... | cflow.cs:152:18:152:20 | Before ...++ | | cflow.cs:152:9:157:9 | for (...;...;...) ... | cflow.cs:153:9:157:9 | {...} | | cflow.cs:152:18:152:18 | access to local variable x | cflow.cs:152:18:152:20 | ...++ | +| cflow.cs:152:18:152:20 | ...++ | cflow.cs:152:18:152:20 | After ...++ | +| cflow.cs:152:18:152:20 | Before ...++ | cflow.cs:152:18:152:18 | access to local variable x | +| cflow.cs:153:9:157:9 | After {...} | cflow.cs:152:9:157:9 | [LoopHeader] for (...;...;...) ... | | cflow.cs:153:9:157:9 | {...} | cflow.cs:154:13:154:33 | ...; | -| cflow.cs:154:13:154:32 | call to method WriteLine | cflow.cs:155:13:156:22 | if (...) ... | -| cflow.cs:154:13:154:33 | ...; | cflow.cs:154:31:154:31 | access to local variable x | +| cflow.cs:154:13:154:32 | After call to method WriteLine | cflow.cs:154:13:154:33 | After ...; | +| cflow.cs:154:13:154:32 | Before call to method WriteLine | cflow.cs:154:31:154:31 | access to local variable x | +| cflow.cs:154:13:154:32 | call to method WriteLine | cflow.cs:154:13:154:32 | After call to method WriteLine | +| cflow.cs:154:13:154:33 | ...; | cflow.cs:154:13:154:32 | Before call to method WriteLine | +| cflow.cs:154:13:154:33 | After ...; | cflow.cs:155:13:156:22 | if (...) ... | | cflow.cs:154:31:154:31 | access to local variable x | cflow.cs:154:13:154:32 | call to method WriteLine | -| cflow.cs:155:13:156:22 | if (...) ... | cflow.cs:155:17:155:17 | access to local variable x | +| cflow.cs:155:13:156:22 | After if (...) ... | cflow.cs:153:9:157:9 | After {...} | +| cflow.cs:155:13:156:22 | if (...) ... | cflow.cs:155:17:155:22 | Before ... > ... | | cflow.cs:155:17:155:17 | access to local variable x | cflow.cs:155:21:155:22 | 20 | -| cflow.cs:155:17:155:22 | ... > ... | cflow.cs:152:18:152:18 | access to local variable x | -| cflow.cs:155:17:155:22 | ... > ... | cflow.cs:156:17:156:22 | break; | +| cflow.cs:155:17:155:22 | ... > ... | cflow.cs:155:17:155:22 | After ... > ... [false] | +| cflow.cs:155:17:155:22 | ... > ... | cflow.cs:155:17:155:22 | After ... > ... [true] | +| cflow.cs:155:17:155:22 | After ... > ... [false] | cflow.cs:155:13:156:22 | After if (...) ... | +| cflow.cs:155:17:155:22 | After ... > ... [true] | cflow.cs:156:17:156:22 | Before break; | +| cflow.cs:155:17:155:22 | Before ... > ... | cflow.cs:155:17:155:17 | access to local variable x | | cflow.cs:155:21:155:22 | 20 | cflow.cs:155:17:155:22 | ... > ... | -| cflow.cs:156:17:156:22 | break; | cflow.cs:159:9:165:9 | for (...;...;...) ... | +| cflow.cs:156:17:156:22 | Before break; | cflow.cs:156:17:156:22 | break; | +| cflow.cs:156:17:156:22 | break; | cflow.cs:152:9:157:9 | After for (...;...;...) ... | +| cflow.cs:159:9:165:9 | After for (...;...;...) ... | cflow.cs:167:9:171:9 | for (...;...;...) ... | | cflow.cs:159:9:165:9 | for (...;...;...) ... | cflow.cs:160:9:165:9 | {...} | +| cflow.cs:160:9:165:9 | After {...} | cflow.cs:159:9:165:9 | [LoopHeader] for (...;...;...) ... | | cflow.cs:160:9:165:9 | {...} | cflow.cs:161:13:161:33 | ...; | -| cflow.cs:161:13:161:32 | call to method WriteLine | cflow.cs:162:13:162:16 | ...; | -| cflow.cs:161:13:161:33 | ...; | cflow.cs:161:31:161:31 | access to local variable x | +| cflow.cs:161:13:161:32 | After call to method WriteLine | cflow.cs:161:13:161:33 | After ...; | +| cflow.cs:161:13:161:32 | Before call to method WriteLine | cflow.cs:161:31:161:31 | access to local variable x | +| cflow.cs:161:13:161:32 | call to method WriteLine | cflow.cs:161:13:161:32 | After call to method WriteLine | +| cflow.cs:161:13:161:33 | ...; | cflow.cs:161:13:161:32 | Before call to method WriteLine | +| cflow.cs:161:13:161:33 | After ...; | cflow.cs:162:13:162:16 | ...; | | cflow.cs:161:31:161:31 | access to local variable x | cflow.cs:161:13:161:32 | call to method WriteLine | | cflow.cs:162:13:162:13 | access to local variable x | cflow.cs:162:13:162:15 | ...++ | -| cflow.cs:162:13:162:15 | ...++ | cflow.cs:163:13:164:22 | if (...) ... | -| cflow.cs:162:13:162:16 | ...; | cflow.cs:162:13:162:13 | access to local variable x | -| cflow.cs:163:13:164:22 | if (...) ... | cflow.cs:163:17:163:17 | access to local variable x | +| cflow.cs:162:13:162:15 | ...++ | cflow.cs:162:13:162:15 | After ...++ | +| cflow.cs:162:13:162:15 | After ...++ | cflow.cs:162:13:162:16 | After ...; | +| cflow.cs:162:13:162:15 | Before ...++ | cflow.cs:162:13:162:13 | access to local variable x | +| cflow.cs:162:13:162:16 | ...; | cflow.cs:162:13:162:15 | Before ...++ | +| cflow.cs:162:13:162:16 | After ...; | cflow.cs:163:13:164:22 | if (...) ... | +| cflow.cs:163:13:164:22 | After if (...) ... | cflow.cs:160:9:165:9 | After {...} | +| cflow.cs:163:13:164:22 | if (...) ... | cflow.cs:163:17:163:22 | Before ... > ... | | cflow.cs:163:17:163:17 | access to local variable x | cflow.cs:163:21:163:22 | 30 | -| cflow.cs:163:17:163:22 | ... > ... | cflow.cs:164:17:164:22 | break; | +| cflow.cs:163:17:163:22 | ... > ... | cflow.cs:163:17:163:22 | After ... > ... [false] | +| cflow.cs:163:17:163:22 | ... > ... | cflow.cs:163:17:163:22 | After ... > ... [true] | +| cflow.cs:163:17:163:22 | After ... > ... [false] | cflow.cs:163:13:164:22 | After if (...) ... | +| cflow.cs:163:17:163:22 | After ... > ... [true] | cflow.cs:164:17:164:22 | Before break; | +| cflow.cs:163:17:163:22 | Before ... > ... | cflow.cs:163:17:163:17 | access to local variable x | | cflow.cs:163:21:163:22 | 30 | cflow.cs:163:17:163:22 | ... > ... | -| cflow.cs:164:17:164:22 | break; | cflow.cs:167:9:171:9 | for (...;...;...) ... | -| cflow.cs:167:9:171:9 | for (...;...;...) ... | cflow.cs:167:16:167:16 | access to local variable x | +| cflow.cs:164:17:164:22 | Before break; | cflow.cs:164:17:164:22 | break; | +| cflow.cs:164:17:164:22 | break; | cflow.cs:159:9:165:9 | After for (...;...;...) ... | +| cflow.cs:167:9:171:9 | After for (...;...;...) ... | cflow.cs:173:9:176:9 | for (...;...;...) ... | +| cflow.cs:167:9:171:9 | for (...;...;...) ... | cflow.cs:167:16:167:21 | Before ... < ... | | cflow.cs:167:16:167:16 | access to local variable x | cflow.cs:167:20:167:21 | 40 | -| cflow.cs:167:16:167:21 | ... < ... | cflow.cs:168:9:171:9 | {...} | -| cflow.cs:167:16:167:21 | ... < ... | cflow.cs:173:9:176:9 | for (...;...;...) ... | +| cflow.cs:167:16:167:21 | ... < ... | cflow.cs:167:16:167:21 | After ... < ... [false] | +| cflow.cs:167:16:167:21 | ... < ... | cflow.cs:167:16:167:21 | After ... < ... [true] | +| cflow.cs:167:16:167:21 | After ... < ... [false] | cflow.cs:167:9:171:9 | After for (...;...;...) ... | +| cflow.cs:167:16:167:21 | After ... < ... [true] | cflow.cs:168:9:171:9 | {...} | +| cflow.cs:167:16:167:21 | Before ... < ... | cflow.cs:167:16:167:16 | access to local variable x | | cflow.cs:167:20:167:21 | 40 | cflow.cs:167:16:167:21 | ... < ... | +| cflow.cs:168:9:171:9 | After {...} | cflow.cs:167:9:171:9 | [LoopHeader] for (...;...;...) ... | | cflow.cs:168:9:171:9 | {...} | cflow.cs:169:13:169:33 | ...; | -| cflow.cs:169:13:169:32 | call to method WriteLine | cflow.cs:170:13:170:16 | ...; | -| cflow.cs:169:13:169:33 | ...; | cflow.cs:169:31:169:31 | access to local variable x | +| cflow.cs:169:13:169:32 | After call to method WriteLine | cflow.cs:169:13:169:33 | After ...; | +| cflow.cs:169:13:169:32 | Before call to method WriteLine | cflow.cs:169:31:169:31 | access to local variable x | +| cflow.cs:169:13:169:32 | call to method WriteLine | cflow.cs:169:13:169:32 | After call to method WriteLine | +| cflow.cs:169:13:169:33 | ...; | cflow.cs:169:13:169:32 | Before call to method WriteLine | +| cflow.cs:169:13:169:33 | After ...; | cflow.cs:170:13:170:16 | ...; | | cflow.cs:169:31:169:31 | access to local variable x | cflow.cs:169:13:169:32 | call to method WriteLine | | cflow.cs:170:13:170:13 | access to local variable x | cflow.cs:170:13:170:15 | ...++ | -| cflow.cs:170:13:170:16 | ...; | cflow.cs:170:13:170:13 | access to local variable x | -| cflow.cs:173:9:176:9 | for (...;...;...) ... | cflow.cs:173:22:173:22 | 0 | -| cflow.cs:173:18:173:22 | Int32 i = ... | cflow.cs:173:29:173:29 | 0 | +| cflow.cs:170:13:170:15 | ...++ | cflow.cs:170:13:170:15 | After ...++ | +| cflow.cs:170:13:170:15 | After ...++ | cflow.cs:170:13:170:16 | After ...; | +| cflow.cs:170:13:170:15 | Before ...++ | cflow.cs:170:13:170:13 | access to local variable x | +| cflow.cs:170:13:170:16 | ...; | cflow.cs:170:13:170:15 | Before ...++ | +| cflow.cs:170:13:170:16 | After ...; | cflow.cs:168:9:171:9 | After {...} | +| cflow.cs:173:9:176:9 | After for (...;...;...) ... | cflow.cs:147:5:177:5 | After {...} | +| cflow.cs:173:9:176:9 | [LoopHeader] for (...;...;...) ... | cflow.cs:173:44:173:46 | Before ...++ | +| cflow.cs:173:9:176:9 | for (...;...;...) ... | cflow.cs:173:18:173:22 | Before Int32 i = ... | +| cflow.cs:173:18:173:18 | access to local variable i | cflow.cs:173:22:173:22 | 0 | +| cflow.cs:173:18:173:22 | After Int32 i = ... | cflow.cs:173:25:173:29 | Before Int32 j = ... | +| cflow.cs:173:18:173:22 | Before Int32 i = ... | cflow.cs:173:18:173:18 | access to local variable i | +| cflow.cs:173:18:173:22 | Int32 i = ... | cflow.cs:173:18:173:22 | After Int32 i = ... | | cflow.cs:173:22:173:22 | 0 | cflow.cs:173:18:173:22 | Int32 i = ... | -| cflow.cs:173:25:173:29 | Int32 j = ... | cflow.cs:173:32:173:32 | access to local variable i | +| cflow.cs:173:25:173:25 | access to local variable j | cflow.cs:173:29:173:29 | 0 | +| cflow.cs:173:25:173:29 | After Int32 j = ... | cflow.cs:173:32:173:41 | Before ... < ... | +| cflow.cs:173:25:173:29 | Before Int32 j = ... | cflow.cs:173:25:173:25 | access to local variable j | +| cflow.cs:173:25:173:29 | Int32 j = ... | cflow.cs:173:25:173:29 | After Int32 j = ... | | cflow.cs:173:29:173:29 | 0 | cflow.cs:173:25:173:29 | Int32 j = ... | | cflow.cs:173:32:173:32 | access to local variable i | cflow.cs:173:36:173:36 | access to local variable j | -| cflow.cs:173:32:173:36 | ... + ... | cflow.cs:173:40:173:41 | 10 | -| cflow.cs:173:32:173:41 | ... < ... | cflow.cs:146:10:146:12 | exit For (normal) | -| cflow.cs:173:32:173:41 | ... < ... | cflow.cs:174:9:176:9 | {...} | +| cflow.cs:173:32:173:36 | ... + ... | cflow.cs:173:32:173:36 | After ... + ... | +| cflow.cs:173:32:173:36 | After ... + ... | cflow.cs:173:40:173:41 | 10 | +| cflow.cs:173:32:173:36 | Before ... + ... | cflow.cs:173:32:173:32 | access to local variable i | +| cflow.cs:173:32:173:41 | ... < ... | cflow.cs:173:32:173:41 | After ... < ... [false] | +| cflow.cs:173:32:173:41 | ... < ... | cflow.cs:173:32:173:41 | After ... < ... [true] | +| cflow.cs:173:32:173:41 | After ... < ... [false] | cflow.cs:173:9:176:9 | After for (...;...;...) ... | +| cflow.cs:173:32:173:41 | After ... < ... [true] | cflow.cs:174:9:176:9 | {...} | +| cflow.cs:173:32:173:41 | Before ... < ... | cflow.cs:173:32:173:36 | Before ... + ... | | cflow.cs:173:36:173:36 | access to local variable j | cflow.cs:173:32:173:36 | ... + ... | | cflow.cs:173:40:173:41 | 10 | cflow.cs:173:32:173:41 | ... < ... | | cflow.cs:173:44:173:44 | access to local variable i | cflow.cs:173:44:173:46 | ...++ | -| cflow.cs:173:44:173:46 | ...++ | cflow.cs:173:49:173:49 | access to local variable j | +| cflow.cs:173:44:173:46 | ...++ | cflow.cs:173:44:173:46 | After ...++ | +| cflow.cs:173:44:173:46 | After ...++ | cflow.cs:173:49:173:51 | Before ...++ | +| cflow.cs:173:44:173:46 | Before ...++ | cflow.cs:173:44:173:44 | access to local variable i | | cflow.cs:173:49:173:49 | access to local variable j | cflow.cs:173:49:173:51 | ...++ | +| cflow.cs:173:49:173:51 | ...++ | cflow.cs:173:49:173:51 | After ...++ | +| cflow.cs:173:49:173:51 | Before ...++ | cflow.cs:173:49:173:49 | access to local variable j | +| cflow.cs:174:9:176:9 | After {...} | cflow.cs:173:9:176:9 | [LoopHeader] for (...;...;...) ... | | cflow.cs:174:9:176:9 | {...} | cflow.cs:175:13:175:37 | ...; | -| cflow.cs:175:13:175:36 | call to method WriteLine | cflow.cs:173:44:173:44 | access to local variable i | -| cflow.cs:175:13:175:37 | ...; | cflow.cs:175:31:175:31 | access to local variable i | +| cflow.cs:175:13:175:36 | After call to method WriteLine | cflow.cs:175:13:175:37 | After ...; | +| cflow.cs:175:13:175:36 | Before call to method WriteLine | cflow.cs:175:31:175:35 | Before ... + ... | +| cflow.cs:175:13:175:36 | call to method WriteLine | cflow.cs:175:13:175:36 | After call to method WriteLine | +| cflow.cs:175:13:175:37 | ...; | cflow.cs:175:13:175:36 | Before call to method WriteLine | +| cflow.cs:175:13:175:37 | After ...; | cflow.cs:174:9:176:9 | After {...} | | cflow.cs:175:31:175:31 | access to local variable i | cflow.cs:175:35:175:35 | access to local variable j | -| cflow.cs:175:31:175:35 | ... + ... | cflow.cs:175:13:175:36 | call to method WriteLine | +| cflow.cs:175:31:175:35 | ... + ... | cflow.cs:175:31:175:35 | After ... + ... | +| cflow.cs:175:31:175:35 | After ... + ... | cflow.cs:175:13:175:36 | call to method WriteLine | +| cflow.cs:175:31:175:35 | Before ... + ... | cflow.cs:175:31:175:31 | access to local variable i | | cflow.cs:175:35:175:35 | access to local variable j | cflow.cs:175:31:175:35 | ... + ... | -| cflow.cs:179:10:179:16 | enter Lambdas | cflow.cs:180:5:183:5 | {...} | -| cflow.cs:179:10:179:16 | exit Lambdas (normal) | cflow.cs:179:10:179:16 | exit Lambdas | +| cflow.cs:179:10:179:16 | Entry | cflow.cs:180:5:183:5 | {...} | +| cflow.cs:179:10:179:16 | Normal Exit | cflow.cs:179:10:179:16 | Exit | +| cflow.cs:180:5:183:5 | After {...} | cflow.cs:179:10:179:16 | Normal Exit | | cflow.cs:180:5:183:5 | {...} | cflow.cs:181:9:181:38 | ... ...; | -| cflow.cs:181:9:181:38 | ... ...; | cflow.cs:181:28:181:37 | (...) => ... | -| cflow.cs:181:24:181:37 | Func y = ... | cflow.cs:182:9:182:62 | ... ...; | +| cflow.cs:181:9:181:38 | ... ...; | cflow.cs:181:24:181:37 | Before Func y = ... | +| cflow.cs:181:9:181:38 | After ... ...; | cflow.cs:182:9:182:62 | ... ...; | +| cflow.cs:181:24:181:24 | access to local variable y | cflow.cs:181:28:181:37 | (...) => ... | +| cflow.cs:181:24:181:37 | After Func y = ... | cflow.cs:181:9:181:38 | After ... ...; | +| cflow.cs:181:24:181:37 | Before Func y = ... | cflow.cs:181:24:181:24 | access to local variable y | +| cflow.cs:181:24:181:37 | Func y = ... | cflow.cs:181:24:181:37 | After Func y = ... | +| cflow.cs:181:28:181:28 | x | cflow.cs:181:33:181:37 | Before ... + ... | | cflow.cs:181:28:181:37 | (...) => ... | cflow.cs:181:24:181:37 | Func y = ... | -| cflow.cs:181:28:181:37 | enter (...) => ... | cflow.cs:181:33:181:33 | access to parameter x | -| cflow.cs:181:28:181:37 | exit (...) => ... (normal) | cflow.cs:181:28:181:37 | exit (...) => ... | +| cflow.cs:181:28:181:37 | Entry | cflow.cs:181:28:181:28 | x | +| cflow.cs:181:28:181:37 | Normal Exit | cflow.cs:181:28:181:37 | Exit | | cflow.cs:181:33:181:33 | access to parameter x | cflow.cs:181:37:181:37 | 1 | -| cflow.cs:181:33:181:37 | ... + ... | cflow.cs:181:28:181:37 | exit (...) => ... (normal) | +| cflow.cs:181:33:181:37 | ... + ... | cflow.cs:181:33:181:37 | After ... + ... | +| cflow.cs:181:33:181:37 | After ... + ... | cflow.cs:181:28:181:37 | Normal Exit | +| cflow.cs:181:33:181:37 | Before ... + ... | cflow.cs:181:33:181:33 | access to parameter x | | cflow.cs:181:37:181:37 | 1 | cflow.cs:181:33:181:37 | ... + ... | -| cflow.cs:182:9:182:62 | ... ...; | cflow.cs:182:28:182:61 | delegate(...) { ... } | -| cflow.cs:182:24:182:61 | Func z = ... | cflow.cs:179:10:179:16 | exit Lambdas (normal) | +| cflow.cs:182:9:182:62 | ... ...; | cflow.cs:182:24:182:61 | Before Func z = ... | +| cflow.cs:182:9:182:62 | After ... ...; | cflow.cs:180:5:183:5 | After {...} | +| cflow.cs:182:24:182:24 | access to local variable z | cflow.cs:182:28:182:61 | delegate(...) { ... } | +| cflow.cs:182:24:182:61 | After Func z = ... | cflow.cs:182:9:182:62 | After ... ...; | +| cflow.cs:182:24:182:61 | Before Func z = ... | cflow.cs:182:24:182:24 | access to local variable z | +| cflow.cs:182:24:182:61 | Func z = ... | cflow.cs:182:24:182:61 | After Func z = ... | +| cflow.cs:182:28:182:61 | Entry | cflow.cs:182:42:182:42 | x | +| cflow.cs:182:28:182:61 | Normal Exit | cflow.cs:182:28:182:61 | Exit | | cflow.cs:182:28:182:61 | delegate(...) { ... } | cflow.cs:182:24:182:61 | Func z = ... | -| cflow.cs:182:28:182:61 | enter delegate(...) { ... } | cflow.cs:182:45:182:61 | {...} | -| cflow.cs:182:28:182:61 | exit delegate(...) { ... } (normal) | cflow.cs:182:28:182:61 | exit delegate(...) { ... } | -| cflow.cs:182:45:182:61 | {...} | cflow.cs:182:54:182:54 | access to parameter x | -| cflow.cs:182:47:182:59 | return ...; | cflow.cs:182:28:182:61 | exit delegate(...) { ... } (normal) | +| cflow.cs:182:42:182:42 | x | cflow.cs:182:45:182:61 | {...} | +| cflow.cs:182:45:182:61 | {...} | cflow.cs:182:47:182:59 | Before return ...; | +| cflow.cs:182:47:182:59 | Before return ...; | cflow.cs:182:54:182:58 | Before ... + ... | +| cflow.cs:182:47:182:59 | return ...; | cflow.cs:182:28:182:61 | Normal Exit | | cflow.cs:182:54:182:54 | access to parameter x | cflow.cs:182:58:182:58 | 1 | -| cflow.cs:182:54:182:58 | ... + ... | cflow.cs:182:47:182:59 | return ...; | +| cflow.cs:182:54:182:58 | ... + ... | cflow.cs:182:54:182:58 | After ... + ... | +| cflow.cs:182:54:182:58 | After ... + ... | cflow.cs:182:47:182:59 | return ...; | +| cflow.cs:182:54:182:58 | Before ... + ... | cflow.cs:182:54:182:54 | access to parameter x | | cflow.cs:182:58:182:58 | 1 | cflow.cs:182:54:182:58 | ... + ... | -| cflow.cs:185:10:185:18 | enter LogicalOr | cflow.cs:186:5:191:5 | {...} | -| cflow.cs:185:10:185:18 | exit LogicalOr (normal) | cflow.cs:185:10:185:18 | exit LogicalOr | +| cflow.cs:185:10:185:18 | Entry | cflow.cs:186:5:191:5 | {...} | +| cflow.cs:185:10:185:18 | Normal Exit | cflow.cs:185:10:185:18 | Exit | +| cflow.cs:186:5:191:5 | After {...} | cflow.cs:185:10:185:18 | Normal Exit | | cflow.cs:186:5:191:5 | {...} | cflow.cs:187:9:190:52 | if (...) ... | -| cflow.cs:187:9:190:52 | if (...) ... | cflow.cs:187:13:187:13 | 1 | +| cflow.cs:187:9:190:52 | After if (...) ... | cflow.cs:186:5:191:5 | After {...} | +| cflow.cs:187:9:190:52 | if (...) ... | cflow.cs:187:13:187:50 | ... \|\| ... | | cflow.cs:187:13:187:13 | 1 | cflow.cs:187:18:187:18 | 2 | -| cflow.cs:187:13:187:18 | ... == ... | cflow.cs:187:23:187:23 | 2 | -| cflow.cs:187:13:187:28 | ... \|\| ... | cflow.cs:187:34:187:34 | 1 | -| cflow.cs:187:13:187:50 | ... \|\| ... | cflow.cs:190:13:190:52 | ...; | +| cflow.cs:187:13:187:18 | ... == ... | cflow.cs:187:13:187:18 | After ... == ... [false] | +| cflow.cs:187:13:187:18 | ... == ... | cflow.cs:187:13:187:18 | After ... == ... [true] | +| cflow.cs:187:13:187:18 | After ... == ... [false] | cflow.cs:187:23:187:28 | Before ... == ... | +| cflow.cs:187:13:187:18 | Before ... == ... | cflow.cs:187:13:187:13 | 1 | +| cflow.cs:187:13:187:28 | ... \|\| ... | cflow.cs:187:13:187:18 | Before ... == ... | +| cflow.cs:187:13:187:28 | After ... \|\| ... [false] | cflow.cs:187:34:187:49 | ... && ... | +| cflow.cs:187:13:187:50 | ... \|\| ... | cflow.cs:187:13:187:28 | ... \|\| ... | +| cflow.cs:187:13:187:50 | After ... \|\| ... [false] | cflow.cs:190:13:190:52 | ...; | +| cflow.cs:187:13:187:50 | After ... \|\| ... [true] | cflow.cs:188:13:188:55 | ...; | | cflow.cs:187:18:187:18 | 2 | cflow.cs:187:13:187:18 | ... == ... | | cflow.cs:187:23:187:23 | 2 | cflow.cs:187:28:187:28 | 3 | -| cflow.cs:187:23:187:28 | ... == ... | cflow.cs:187:13:187:28 | ... \|\| ... | +| cflow.cs:187:23:187:28 | ... == ... | cflow.cs:187:23:187:28 | After ... == ... [false] | +| cflow.cs:187:23:187:28 | ... == ... | cflow.cs:187:23:187:28 | After ... == ... [true] | +| cflow.cs:187:23:187:28 | After ... == ... [false] | cflow.cs:187:13:187:28 | After ... \|\| ... [false] | +| cflow.cs:187:23:187:28 | Before ... == ... | cflow.cs:187:23:187:23 | 2 | | cflow.cs:187:28:187:28 | 3 | cflow.cs:187:23:187:28 | ... == ... | | cflow.cs:187:34:187:34 | 1 | cflow.cs:187:39:187:39 | 3 | -| cflow.cs:187:34:187:39 | ... == ... | cflow.cs:187:34:187:49 | ... && ... | -| cflow.cs:187:34:187:49 | ... && ... | cflow.cs:187:13:187:50 | ... \|\| ... | +| cflow.cs:187:34:187:39 | ... == ... | cflow.cs:187:34:187:39 | After ... == ... [false] | +| cflow.cs:187:34:187:39 | ... == ... | cflow.cs:187:34:187:39 | After ... == ... [true] | +| cflow.cs:187:34:187:39 | After ... == ... [true] | cflow.cs:187:44:187:49 | Before ... == ... | +| cflow.cs:187:34:187:39 | Before ... == ... | cflow.cs:187:34:187:34 | 1 | +| cflow.cs:187:34:187:49 | ... && ... | cflow.cs:187:34:187:39 | Before ... == ... | +| cflow.cs:187:34:187:49 | After ... && ... [false] | cflow.cs:187:13:187:50 | After ... \|\| ... [false] | | cflow.cs:187:39:187:39 | 3 | cflow.cs:187:34:187:39 | ... == ... | -| cflow.cs:190:13:190:51 | call to method WriteLine | cflow.cs:185:10:185:18 | exit LogicalOr (normal) | -| cflow.cs:190:13:190:52 | ...; | cflow.cs:190:31:190:50 | "This should happen" | +| cflow.cs:187:44:187:44 | 3 | cflow.cs:187:49:187:49 | 1 | +| cflow.cs:187:44:187:49 | ... == ... | cflow.cs:187:44:187:49 | After ... == ... [false] | +| cflow.cs:187:44:187:49 | ... == ... | cflow.cs:187:44:187:49 | After ... == ... [true] | +| cflow.cs:187:44:187:49 | After ... == ... [true] | cflow.cs:187:34:187:49 | After ... && ... [true] | +| cflow.cs:187:44:187:49 | Before ... == ... | cflow.cs:187:44:187:44 | 3 | +| cflow.cs:187:49:187:49 | 1 | cflow.cs:187:44:187:49 | ... == ... | +| cflow.cs:188:13:188:54 | After call to method WriteLine | cflow.cs:188:13:188:55 | After ...; | +| cflow.cs:188:13:188:54 | Before call to method WriteLine | cflow.cs:188:31:188:53 | "This shouldn't happen" | +| cflow.cs:188:13:188:54 | call to method WriteLine | cflow.cs:188:13:188:54 | After call to method WriteLine | +| cflow.cs:188:13:188:55 | ...; | cflow.cs:188:13:188:54 | Before call to method WriteLine | +| cflow.cs:188:31:188:53 | "This shouldn't happen" | cflow.cs:188:13:188:54 | call to method WriteLine | +| cflow.cs:190:13:190:51 | After call to method WriteLine | cflow.cs:190:13:190:52 | After ...; | +| cflow.cs:190:13:190:51 | Before call to method WriteLine | cflow.cs:190:31:190:50 | "This should happen" | +| cflow.cs:190:13:190:51 | call to method WriteLine | cflow.cs:190:13:190:51 | After call to method WriteLine | +| cflow.cs:190:13:190:52 | ...; | cflow.cs:190:13:190:51 | Before call to method WriteLine | | cflow.cs:190:31:190:50 | "This should happen" | cflow.cs:190:13:190:51 | call to method WriteLine | -| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:194:5:206:5 | {...} | +| cflow.cs:193:10:193:17 | Entry | cflow.cs:194:5:206:5 | {...} | +| cflow.cs:194:5:206:5 | After {...} | cflow.cs:193:10:193:17 | Normal Exit | | cflow.cs:194:5:206:5 | {...} | cflow.cs:195:9:195:57 | ... ...; | -| cflow.cs:195:9:195:57 | ... ...; | cflow.cs:195:17:195:21 | this access | -| cflow.cs:195:13:195:56 | Boolean b = ... | cflow.cs:197:9:198:49 | if (...) ... | -| cflow.cs:195:17:195:21 | access to field Field | cflow.cs:195:17:195:28 | access to property Length | +| cflow.cs:195:9:195:57 | ... ...; | cflow.cs:195:13:195:56 | Before Boolean b = ... | +| cflow.cs:195:9:195:57 | After ... ...; | cflow.cs:197:9:198:49 | if (...) ... | +| cflow.cs:195:13:195:13 | access to local variable b | cflow.cs:195:17:195:56 | ... && ... | +| cflow.cs:195:13:195:56 | After Boolean b = ... | cflow.cs:195:9:195:57 | After ... ...; | +| cflow.cs:195:13:195:56 | Before Boolean b = ... | cflow.cs:195:13:195:13 | access to local variable b | +| cflow.cs:195:13:195:56 | Boolean b = ... | cflow.cs:195:13:195:56 | After Boolean b = ... | +| cflow.cs:195:17:195:21 | After access to field Field | cflow.cs:195:17:195:28 | access to property Length | +| cflow.cs:195:17:195:21 | Before access to field Field | cflow.cs:195:17:195:21 | this access | +| cflow.cs:195:17:195:21 | access to field Field | cflow.cs:195:17:195:21 | After access to field Field | | cflow.cs:195:17:195:21 | this access | cflow.cs:195:17:195:21 | access to field Field | -| cflow.cs:195:17:195:28 | access to property Length | cflow.cs:195:32:195:32 | 0 | -| cflow.cs:195:17:195:32 | ... > ... | cflow.cs:195:17:195:56 | ... && ... | -| cflow.cs:195:17:195:32 | ... > ... | cflow.cs:195:39:195:43 | this access | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:195:13:195:56 | Boolean b = ... | +| cflow.cs:195:17:195:28 | After access to property Length | cflow.cs:195:32:195:32 | 0 | +| cflow.cs:195:17:195:28 | Before access to property Length | cflow.cs:195:17:195:21 | Before access to field Field | +| cflow.cs:195:17:195:28 | access to property Length | cflow.cs:195:17:195:28 | After access to property Length | +| cflow.cs:195:17:195:32 | ... > ... | cflow.cs:195:17:195:32 | After ... > ... [false] | +| cflow.cs:195:17:195:32 | ... > ... | cflow.cs:195:17:195:32 | After ... > ... [true] | +| cflow.cs:195:17:195:32 | After ... > ... [true] | cflow.cs:195:37:195:56 | !... | +| cflow.cs:195:17:195:32 | Before ... > ... | cflow.cs:195:17:195:28 | Before access to property Length | +| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:195:17:195:32 | Before ... > ... | +| cflow.cs:195:17:195:56 | After ... && ... | cflow.cs:195:13:195:56 | Boolean b = ... | | cflow.cs:195:32:195:32 | 0 | cflow.cs:195:17:195:32 | ... > ... | -| cflow.cs:195:39:195:43 | access to field Field | cflow.cs:195:39:195:50 | access to property Length | +| cflow.cs:195:37:195:56 | !... | cflow.cs:195:39:195:55 | Before ... == ... | +| cflow.cs:195:39:195:43 | After access to field Field | cflow.cs:195:39:195:50 | access to property Length | +| cflow.cs:195:39:195:43 | Before access to field Field | cflow.cs:195:39:195:43 | this access | +| cflow.cs:195:39:195:43 | access to field Field | cflow.cs:195:39:195:43 | After access to field Field | | cflow.cs:195:39:195:43 | this access | cflow.cs:195:39:195:43 | access to field Field | -| cflow.cs:195:39:195:50 | access to property Length | cflow.cs:195:55:195:55 | 1 | -| cflow.cs:195:39:195:55 | ... == ... | cflow.cs:195:37:195:56 | !... | +| cflow.cs:195:39:195:50 | After access to property Length | cflow.cs:195:55:195:55 | 1 | +| cflow.cs:195:39:195:50 | Before access to property Length | cflow.cs:195:39:195:43 | Before access to field Field | +| cflow.cs:195:39:195:50 | access to property Length | cflow.cs:195:39:195:50 | After access to property Length | +| cflow.cs:195:39:195:55 | ... == ... | cflow.cs:195:39:195:55 | After ... == ... | +| cflow.cs:195:39:195:55 | After ... == ... | cflow.cs:195:37:195:56 | After !... | +| cflow.cs:195:39:195:55 | Before ... == ... | cflow.cs:195:39:195:50 | Before access to property Length | | cflow.cs:195:55:195:55 | 1 | cflow.cs:195:39:195:55 | ... == ... | -| cflow.cs:197:9:198:49 | if (...) ... | cflow.cs:197:15:197:19 | this access | -| cflow.cs:197:13:197:47 | [true] !... | cflow.cs:198:13:198:49 | ...; | -| cflow.cs:197:15:197:19 | access to field Field | cflow.cs:197:15:197:26 | access to property Length | +| cflow.cs:197:9:198:49 | After if (...) ... | cflow.cs:200:9:205:9 | if (...) ... | +| cflow.cs:197:9:198:49 | if (...) ... | cflow.cs:197:13:197:47 | !... | +| cflow.cs:197:13:197:47 | !... | cflow.cs:197:15:197:46 | ... ? ... : ... | +| cflow.cs:197:13:197:47 | After !... [true] | cflow.cs:198:13:198:49 | ...; | +| cflow.cs:197:15:197:19 | After access to field Field | cflow.cs:197:15:197:26 | access to property Length | +| cflow.cs:197:15:197:19 | Before access to field Field | cflow.cs:197:15:197:19 | this access | +| cflow.cs:197:15:197:19 | access to field Field | cflow.cs:197:15:197:19 | After access to field Field | | cflow.cs:197:15:197:19 | this access | cflow.cs:197:15:197:19 | access to field Field | -| cflow.cs:197:15:197:26 | access to property Length | cflow.cs:197:31:197:31 | 0 | -| cflow.cs:197:15:197:31 | ... == ... | cflow.cs:197:35:197:39 | false | -| cflow.cs:197:15:197:31 | ... == ... | cflow.cs:197:43:197:46 | true | -| cflow.cs:197:15:197:46 | [false] ... ? ... : ... | cflow.cs:197:13:197:47 | [true] !... | -| cflow.cs:197:15:197:46 | [true] ... ? ... : ... | cflow.cs:197:13:197:47 | [false] !... | +| cflow.cs:197:15:197:26 | After access to property Length | cflow.cs:197:31:197:31 | 0 | +| cflow.cs:197:15:197:26 | Before access to property Length | cflow.cs:197:15:197:19 | Before access to field Field | +| cflow.cs:197:15:197:26 | access to property Length | cflow.cs:197:15:197:26 | After access to property Length | +| cflow.cs:197:15:197:31 | ... == ... | cflow.cs:197:15:197:31 | After ... == ... [false] | +| cflow.cs:197:15:197:31 | ... == ... | cflow.cs:197:15:197:31 | After ... == ... [true] | +| cflow.cs:197:15:197:31 | After ... == ... [false] | cflow.cs:197:43:197:46 | true | +| cflow.cs:197:15:197:31 | After ... == ... [true] | cflow.cs:197:35:197:39 | false | +| cflow.cs:197:15:197:31 | Before ... == ... | cflow.cs:197:15:197:26 | Before access to property Length | +| cflow.cs:197:15:197:46 | ... ? ... : ... | cflow.cs:197:15:197:31 | Before ... == ... | +| cflow.cs:197:15:197:46 | After ... ? ... : ... [false] | cflow.cs:197:13:197:47 | After !... [true] | +| cflow.cs:197:15:197:46 | After ... ? ... : ... [true] | cflow.cs:197:13:197:47 | After !... [false] | | cflow.cs:197:31:197:31 | 0 | cflow.cs:197:15:197:31 | ... == ... | -| cflow.cs:197:35:197:39 | false | cflow.cs:197:15:197:46 | [false] ... ? ... : ... | -| cflow.cs:197:43:197:46 | true | cflow.cs:197:15:197:46 | [true] ... ? ... : ... | -| cflow.cs:198:13:198:49 | ...; | cflow.cs:198:17:198:21 | this access | -| cflow.cs:198:17:198:21 | access to field Field | cflow.cs:198:17:198:28 | access to property Length | +| cflow.cs:197:35:197:39 | After false [false] | cflow.cs:197:15:197:46 | After ... ? ... : ... [false] | +| cflow.cs:197:35:197:39 | false | cflow.cs:197:35:197:39 | After false [false] | +| cflow.cs:197:43:197:46 | After true [true] | cflow.cs:197:15:197:46 | After ... ? ... : ... [true] | +| cflow.cs:197:43:197:46 | true | cflow.cs:197:43:197:46 | After true [true] | +| cflow.cs:198:13:198:13 | access to local variable b | cflow.cs:198:17:198:48 | ... ? ... : ... | +| cflow.cs:198:13:198:48 | ... = ... | cflow.cs:198:13:198:48 | After ... = ... | +| cflow.cs:198:13:198:48 | After ... = ... | cflow.cs:198:13:198:49 | After ...; | +| cflow.cs:198:13:198:48 | Before ... = ... | cflow.cs:198:13:198:13 | access to local variable b | +| cflow.cs:198:13:198:49 | ...; | cflow.cs:198:13:198:48 | Before ... = ... | +| cflow.cs:198:17:198:21 | After access to field Field | cflow.cs:198:17:198:28 | access to property Length | +| cflow.cs:198:17:198:21 | Before access to field Field | cflow.cs:198:17:198:21 | this access | +| cflow.cs:198:17:198:21 | access to field Field | cflow.cs:198:17:198:21 | After access to field Field | | cflow.cs:198:17:198:21 | this access | cflow.cs:198:17:198:21 | access to field Field | -| cflow.cs:198:17:198:28 | access to property Length | cflow.cs:198:33:198:33 | 0 | -| cflow.cs:198:17:198:33 | ... == ... | cflow.cs:198:37:198:41 | false | -| cflow.cs:198:17:198:33 | ... == ... | cflow.cs:198:45:198:48 | true | -| cflow.cs:198:17:198:48 | ... ? ... : ... | cflow.cs:198:13:198:48 | ... = ... | +| cflow.cs:198:17:198:28 | After access to property Length | cflow.cs:198:33:198:33 | 0 | +| cflow.cs:198:17:198:28 | Before access to property Length | cflow.cs:198:17:198:21 | Before access to field Field | +| cflow.cs:198:17:198:28 | access to property Length | cflow.cs:198:17:198:28 | After access to property Length | +| cflow.cs:198:17:198:33 | ... == ... | cflow.cs:198:17:198:33 | After ... == ... [false] | +| cflow.cs:198:17:198:33 | ... == ... | cflow.cs:198:17:198:33 | After ... == ... [true] | +| cflow.cs:198:17:198:33 | After ... == ... [false] | cflow.cs:198:45:198:48 | true | +| cflow.cs:198:17:198:33 | After ... == ... [true] | cflow.cs:198:37:198:41 | false | +| cflow.cs:198:17:198:33 | Before ... == ... | cflow.cs:198:17:198:28 | Before access to property Length | +| cflow.cs:198:17:198:48 | ... ? ... : ... | cflow.cs:198:17:198:33 | Before ... == ... | +| cflow.cs:198:17:198:48 | After ... ? ... : ... | cflow.cs:198:13:198:48 | ... = ... | | cflow.cs:198:33:198:33 | 0 | cflow.cs:198:17:198:33 | ... == ... | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:200:15:200:19 | this access | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:200:40:200:44 | this access | -| cflow.cs:200:13:200:62 | [false] ... \|\| ... | cflow.cs:193:10:193:17 | exit Booleans (normal) | -| cflow.cs:200:13:200:62 | [true] ... \|\| ... | cflow.cs:201:9:205:9 | {...} | -| cflow.cs:200:15:200:19 | access to field Field | cflow.cs:200:15:200:26 | access to property Length | +| cflow.cs:200:9:205:9 | After if (...) ... | cflow.cs:194:5:206:5 | After {...} | +| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:200:13:200:62 | ... \|\| ... | +| cflow.cs:200:13:200:32 | !... | cflow.cs:200:15:200:31 | Before ... == ... | +| cflow.cs:200:13:200:32 | After !... [false] | cflow.cs:200:37:200:62 | !... | +| cflow.cs:200:13:200:62 | ... \|\| ... | cflow.cs:200:13:200:32 | !... | +| cflow.cs:200:13:200:62 | After ... \|\| ... [false] | cflow.cs:200:9:205:9 | After if (...) ... | +| cflow.cs:200:13:200:62 | After ... \|\| ... [true] | cflow.cs:201:9:205:9 | {...} | +| cflow.cs:200:15:200:19 | After access to field Field | cflow.cs:200:15:200:26 | access to property Length | +| cflow.cs:200:15:200:19 | Before access to field Field | cflow.cs:200:15:200:19 | this access | +| cflow.cs:200:15:200:19 | access to field Field | cflow.cs:200:15:200:19 | After access to field Field | | cflow.cs:200:15:200:19 | this access | cflow.cs:200:15:200:19 | access to field Field | -| cflow.cs:200:15:200:26 | access to property Length | cflow.cs:200:31:200:31 | 0 | -| cflow.cs:200:15:200:31 | ... == ... | cflow.cs:200:13:200:32 | [false] !... | -| cflow.cs:200:15:200:31 | ... == ... | cflow.cs:200:13:200:32 | [true] !... | +| cflow.cs:200:15:200:26 | After access to property Length | cflow.cs:200:31:200:31 | 0 | +| cflow.cs:200:15:200:26 | Before access to property Length | cflow.cs:200:15:200:19 | Before access to field Field | +| cflow.cs:200:15:200:26 | access to property Length | cflow.cs:200:15:200:26 | After access to property Length | +| cflow.cs:200:15:200:31 | ... == ... | cflow.cs:200:15:200:31 | After ... == ... [false] | +| cflow.cs:200:15:200:31 | ... == ... | cflow.cs:200:15:200:31 | After ... == ... [true] | +| cflow.cs:200:15:200:31 | After ... == ... [false] | cflow.cs:200:13:200:32 | After !... [true] | +| cflow.cs:200:15:200:31 | After ... == ... [true] | cflow.cs:200:13:200:32 | After !... [false] | +| cflow.cs:200:15:200:31 | Before ... == ... | cflow.cs:200:15:200:26 | Before access to property Length | | cflow.cs:200:31:200:31 | 0 | cflow.cs:200:15:200:31 | ... == ... | -| cflow.cs:200:37:200:62 | [false] !... | cflow.cs:200:13:200:62 | [false] ... \|\| ... | -| cflow.cs:200:38:200:62 | [false] !... | cflow.cs:200:37:200:62 | [true] !... | -| cflow.cs:200:38:200:62 | [true] !... | cflow.cs:200:37:200:62 | [false] !... | -| cflow.cs:200:40:200:44 | access to field Field | cflow.cs:200:40:200:51 | access to property Length | +| cflow.cs:200:37:200:62 | !... | cflow.cs:200:38:200:62 | !... | +| cflow.cs:200:37:200:62 | After !... [false] | cflow.cs:200:13:200:62 | After ... \|\| ... [false] | +| cflow.cs:200:38:200:62 | !... | cflow.cs:200:40:200:61 | ... && ... | +| cflow.cs:200:38:200:62 | After !... [false] | cflow.cs:200:37:200:62 | After !... [true] | +| cflow.cs:200:38:200:62 | After !... [true] | cflow.cs:200:37:200:62 | After !... [false] | +| cflow.cs:200:40:200:44 | After access to field Field | cflow.cs:200:40:200:51 | access to property Length | +| cflow.cs:200:40:200:44 | Before access to field Field | cflow.cs:200:40:200:44 | this access | +| cflow.cs:200:40:200:44 | access to field Field | cflow.cs:200:40:200:44 | After access to field Field | | cflow.cs:200:40:200:44 | this access | cflow.cs:200:40:200:44 | access to field Field | -| cflow.cs:200:40:200:51 | access to property Length | cflow.cs:200:56:200:56 | 1 | -| cflow.cs:200:40:200:56 | ... == ... | cflow.cs:200:40:200:61 | [false] ... && ... | -| cflow.cs:200:40:200:56 | ... == ... | cflow.cs:200:61:200:61 | access to local variable b | -| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:200:38:200:62 | [true] !... | -| cflow.cs:200:40:200:61 | [true] ... && ... | cflow.cs:200:38:200:62 | [false] !... | +| cflow.cs:200:40:200:51 | After access to property Length | cflow.cs:200:56:200:56 | 1 | +| cflow.cs:200:40:200:51 | Before access to property Length | cflow.cs:200:40:200:44 | Before access to field Field | +| cflow.cs:200:40:200:51 | access to property Length | cflow.cs:200:40:200:51 | After access to property Length | +| cflow.cs:200:40:200:56 | ... == ... | cflow.cs:200:40:200:56 | After ... == ... [false] | +| cflow.cs:200:40:200:56 | ... == ... | cflow.cs:200:40:200:56 | After ... == ... [true] | +| cflow.cs:200:40:200:56 | After ... == ... [true] | cflow.cs:200:61:200:61 | access to local variable b | +| cflow.cs:200:40:200:56 | Before ... == ... | cflow.cs:200:40:200:51 | Before access to property Length | +| cflow.cs:200:40:200:61 | ... && ... | cflow.cs:200:40:200:56 | Before ... == ... | +| cflow.cs:200:40:200:61 | After ... && ... [false] | cflow.cs:200:38:200:62 | After !... [true] | +| cflow.cs:200:40:200:61 | After ... && ... [true] | cflow.cs:200:38:200:62 | After !... [false] | | cflow.cs:200:56:200:56 | 1 | cflow.cs:200:40:200:56 | ... == ... | -| cflow.cs:200:61:200:61 | access to local variable b | cflow.cs:200:40:200:61 | [true] ... && ... | +| cflow.cs:200:61:200:61 | After access to local variable b [true] | cflow.cs:200:40:200:61 | After ... && ... [true] | +| cflow.cs:200:61:200:61 | access to local variable b | cflow.cs:200:61:200:61 | After access to local variable b [false] | +| cflow.cs:200:61:200:61 | access to local variable b | cflow.cs:200:61:200:61 | After access to local variable b [true] | | cflow.cs:201:9:205:9 | {...} | cflow.cs:202:13:204:13 | {...} | -| cflow.cs:202:13:204:13 | {...} | cflow.cs:203:23:203:37 | object creation of type Exception | -| cflow.cs:203:17:203:38 | throw ...; | cflow.cs:193:10:193:17 | exit Booleans (abnormal) | -| cflow.cs:203:23:203:37 | object creation of type Exception | cflow.cs:203:17:203:38 | throw ...; | -| cflow.cs:208:10:208:11 | enter Do | cflow.cs:209:5:222:5 | {...} | -| cflow.cs:208:10:208:11 | exit Do (normal) | cflow.cs:208:10:208:11 | exit Do | +| cflow.cs:202:13:204:13 | {...} | cflow.cs:203:17:203:38 | Before throw ...; | +| cflow.cs:203:17:203:38 | Before throw ...; | cflow.cs:203:23:203:37 | Before object creation of type Exception | +| cflow.cs:203:17:203:38 | throw ...; | cflow.cs:193:10:193:17 | Exceptional Exit | +| cflow.cs:203:23:203:37 | After object creation of type Exception | cflow.cs:203:17:203:38 | throw ...; | +| cflow.cs:203:23:203:37 | Before object creation of type Exception | cflow.cs:203:23:203:37 | object creation of type Exception | +| cflow.cs:203:23:203:37 | object creation of type Exception | cflow.cs:203:23:203:37 | After object creation of type Exception | +| cflow.cs:208:10:208:11 | Entry | cflow.cs:209:5:222:5 | {...} | +| cflow.cs:208:10:208:11 | Normal Exit | cflow.cs:208:10:208:11 | Exit | +| cflow.cs:209:5:222:5 | After {...} | cflow.cs:208:10:208:11 | Normal Exit | | cflow.cs:209:5:222:5 | {...} | cflow.cs:210:9:221:36 | do ... while (...); | +| cflow.cs:210:9:221:36 | After do ... while (...); | cflow.cs:209:5:222:5 | After {...} | +| cflow.cs:210:9:221:36 | [LoopHeader] do ... while (...); | cflow.cs:221:18:221:34 | Before ... < ... | | cflow.cs:210:9:221:36 | do ... while (...); | cflow.cs:211:9:221:9 | {...} | | cflow.cs:211:9:221:9 | {...} | cflow.cs:212:13:212:25 | ...; | -| cflow.cs:212:13:212:17 | access to field Field | cflow.cs:212:22:212:24 | "a" | +| cflow.cs:212:13:212:17 | After access to field Field | cflow.cs:212:22:212:24 | "a" | +| cflow.cs:212:13:212:17 | Before access to field Field | cflow.cs:212:13:212:17 | this access | +| cflow.cs:212:13:212:17 | access to field Field | cflow.cs:212:13:212:17 | After access to field Field | | cflow.cs:212:13:212:17 | this access | cflow.cs:212:13:212:17 | access to field Field | -| cflow.cs:212:13:212:24 | ... += ... | cflow.cs:213:13:216:13 | if (...) ... | -| cflow.cs:212:13:212:25 | ...; | cflow.cs:212:13:212:17 | this access | +| cflow.cs:212:13:212:24 | ... += ... | cflow.cs:212:13:212:24 | After ... += ... | +| cflow.cs:212:13:212:24 | After ... += ... | cflow.cs:212:13:212:25 | After ...; | +| cflow.cs:212:13:212:24 | Before ... += ... | cflow.cs:212:13:212:17 | Before access to field Field | +| cflow.cs:212:13:212:25 | ...; | cflow.cs:212:13:212:24 | Before ... += ... | +| cflow.cs:212:13:212:25 | After ...; | cflow.cs:213:13:216:13 | if (...) ... | | cflow.cs:212:22:212:24 | "a" | cflow.cs:212:13:212:24 | ... += ... | -| cflow.cs:213:13:216:13 | if (...) ... | cflow.cs:213:17:213:21 | this access | -| cflow.cs:213:17:213:21 | access to field Field | cflow.cs:213:17:213:28 | access to property Length | +| cflow.cs:213:13:216:13 | After if (...) ... | cflow.cs:217:13:220:13 | if (...) ... | +| cflow.cs:213:13:216:13 | if (...) ... | cflow.cs:213:17:213:32 | Before ... > ... | +| cflow.cs:213:17:213:21 | After access to field Field | cflow.cs:213:17:213:28 | access to property Length | +| cflow.cs:213:17:213:21 | Before access to field Field | cflow.cs:213:17:213:21 | this access | +| cflow.cs:213:17:213:21 | access to field Field | cflow.cs:213:17:213:21 | After access to field Field | | cflow.cs:213:17:213:21 | this access | cflow.cs:213:17:213:21 | access to field Field | -| cflow.cs:213:17:213:28 | access to property Length | cflow.cs:213:32:213:32 | 0 | -| cflow.cs:213:17:213:32 | ... > ... | cflow.cs:214:13:216:13 | {...} | -| cflow.cs:213:17:213:32 | ... > ... | cflow.cs:217:13:220:13 | if (...) ... | +| cflow.cs:213:17:213:28 | After access to property Length | cflow.cs:213:32:213:32 | 0 | +| cflow.cs:213:17:213:28 | Before access to property Length | cflow.cs:213:17:213:21 | Before access to field Field | +| cflow.cs:213:17:213:28 | access to property Length | cflow.cs:213:17:213:28 | After access to property Length | +| cflow.cs:213:17:213:32 | ... > ... | cflow.cs:213:17:213:32 | After ... > ... [false] | +| cflow.cs:213:17:213:32 | ... > ... | cflow.cs:213:17:213:32 | After ... > ... [true] | +| cflow.cs:213:17:213:32 | After ... > ... [false] | cflow.cs:213:13:216:13 | After if (...) ... | +| cflow.cs:213:17:213:32 | After ... > ... [true] | cflow.cs:214:13:216:13 | {...} | +| cflow.cs:213:17:213:32 | Before ... > ... | cflow.cs:213:17:213:28 | Before access to property Length | | cflow.cs:213:32:213:32 | 0 | cflow.cs:213:17:213:32 | ... > ... | -| cflow.cs:214:13:216:13 | {...} | cflow.cs:215:17:215:25 | continue; | -| cflow.cs:217:13:220:13 | if (...) ... | cflow.cs:217:17:217:21 | this access | -| cflow.cs:217:17:217:21 | access to field Field | cflow.cs:217:17:217:28 | access to property Length | +| cflow.cs:214:13:216:13 | {...} | cflow.cs:215:17:215:25 | Before continue; | +| cflow.cs:215:17:215:25 | Before continue; | cflow.cs:215:17:215:25 | continue; | +| cflow.cs:217:13:220:13 | After if (...) ... | cflow.cs:211:9:221:9 | After {...} | +| cflow.cs:217:13:220:13 | if (...) ... | cflow.cs:217:17:217:32 | Before ... < ... | +| cflow.cs:217:17:217:21 | After access to field Field | cflow.cs:217:17:217:28 | access to property Length | +| cflow.cs:217:17:217:21 | Before access to field Field | cflow.cs:217:17:217:21 | this access | +| cflow.cs:217:17:217:21 | access to field Field | cflow.cs:217:17:217:21 | After access to field Field | | cflow.cs:217:17:217:21 | this access | cflow.cs:217:17:217:21 | access to field Field | -| cflow.cs:217:17:217:28 | access to property Length | cflow.cs:217:32:217:32 | 0 | -| cflow.cs:217:17:217:32 | ... < ... | cflow.cs:218:13:220:13 | {...} | +| cflow.cs:217:17:217:28 | After access to property Length | cflow.cs:217:32:217:32 | 0 | +| cflow.cs:217:17:217:28 | Before access to property Length | cflow.cs:217:17:217:21 | Before access to field Field | +| cflow.cs:217:17:217:28 | access to property Length | cflow.cs:217:17:217:28 | After access to property Length | +| cflow.cs:217:17:217:32 | ... < ... | cflow.cs:217:17:217:32 | After ... < ... [false] | +| cflow.cs:217:17:217:32 | ... < ... | cflow.cs:217:17:217:32 | After ... < ... [true] | +| cflow.cs:217:17:217:32 | After ... < ... [false] | cflow.cs:217:13:220:13 | After if (...) ... | +| cflow.cs:217:17:217:32 | After ... < ... [true] | cflow.cs:218:13:220:13 | {...} | +| cflow.cs:217:17:217:32 | Before ... < ... | cflow.cs:217:17:217:28 | Before access to property Length | | cflow.cs:217:32:217:32 | 0 | cflow.cs:217:17:217:32 | ... < ... | -| cflow.cs:218:13:220:13 | {...} | cflow.cs:219:17:219:22 | break; | -| cflow.cs:221:18:221:22 | access to field Field | cflow.cs:221:18:221:29 | access to property Length | +| cflow.cs:218:13:220:13 | {...} | cflow.cs:219:17:219:22 | Before break; | +| cflow.cs:219:17:219:22 | Before break; | cflow.cs:219:17:219:22 | break; | +| cflow.cs:221:18:221:22 | After access to field Field | cflow.cs:221:18:221:29 | access to property Length | +| cflow.cs:221:18:221:22 | Before access to field Field | cflow.cs:221:18:221:22 | this access | +| cflow.cs:221:18:221:22 | access to field Field | cflow.cs:221:18:221:22 | After access to field Field | | cflow.cs:221:18:221:22 | this access | cflow.cs:221:18:221:22 | access to field Field | -| cflow.cs:221:18:221:29 | access to property Length | cflow.cs:221:33:221:34 | 10 | +| cflow.cs:221:18:221:29 | After access to property Length | cflow.cs:221:33:221:34 | 10 | +| cflow.cs:221:18:221:29 | Before access to property Length | cflow.cs:221:18:221:22 | Before access to field Field | +| cflow.cs:221:18:221:29 | access to property Length | cflow.cs:221:18:221:29 | After access to property Length | +| cflow.cs:221:18:221:34 | ... < ... | cflow.cs:221:18:221:34 | After ... < ... [false] | +| cflow.cs:221:18:221:34 | ... < ... | cflow.cs:221:18:221:34 | After ... < ... [true] | +| cflow.cs:221:18:221:34 | Before ... < ... | cflow.cs:221:18:221:29 | Before access to property Length | | cflow.cs:221:33:221:34 | 10 | cflow.cs:221:18:221:34 | ... < ... | -| cflow.cs:224:10:224:16 | enter Foreach | cflow.cs:225:5:238:5 | {...} | -| cflow.cs:224:10:224:16 | exit Foreach (normal) | cflow.cs:224:10:224:16 | exit Foreach | -| cflow.cs:225:5:238:5 | {...} | cflow.cs:226:57:226:59 | "a" | -| cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | cflow.cs:224:10:224:16 | exit Foreach (normal) | -| cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | cflow.cs:226:22:226:22 | String x | +| cflow.cs:224:10:224:16 | Entry | cflow.cs:225:5:238:5 | {...} | +| cflow.cs:224:10:224:16 | Normal Exit | cflow.cs:224:10:224:16 | Exit | +| cflow.cs:225:5:238:5 | After {...} | cflow.cs:224:10:224:16 | Normal Exit | +| cflow.cs:225:5:238:5 | {...} | cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | +| cflow.cs:226:9:237:9 | After foreach (... ... in ...) ... | cflow.cs:225:5:238:5 | After {...} | +| cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | cflow.cs:226:27:226:64 | Before call to method Repeat | | cflow.cs:226:22:226:22 | String x | cflow.cs:227:9:237:9 | {...} | -| cflow.cs:226:27:226:64 | call to method Repeat | cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | +| cflow.cs:226:27:226:64 | After call to method Repeat [non-empty] | cflow.cs:226:22:226:22 | String x | +| cflow.cs:226:27:226:64 | Before call to method Repeat | cflow.cs:226:57:226:59 | "a" | +| cflow.cs:226:27:226:64 | call to method Repeat | cflow.cs:226:27:226:64 | After call to method Repeat [empty] | +| cflow.cs:226:27:226:64 | call to method Repeat | cflow.cs:226:27:226:64 | After call to method Repeat [non-empty] | | cflow.cs:226:57:226:59 | "a" | cflow.cs:226:62:226:63 | 10 | | cflow.cs:226:62:226:63 | 10 | cflow.cs:226:27:226:64 | call to method Repeat | | cflow.cs:227:9:237:9 | {...} | cflow.cs:228:13:228:23 | ...; | -| cflow.cs:228:13:228:17 | access to field Field | cflow.cs:228:22:228:22 | access to local variable x | +| cflow.cs:228:13:228:17 | After access to field Field | cflow.cs:228:22:228:22 | access to local variable x | +| cflow.cs:228:13:228:17 | Before access to field Field | cflow.cs:228:13:228:17 | this access | +| cflow.cs:228:13:228:17 | access to field Field | cflow.cs:228:13:228:17 | After access to field Field | | cflow.cs:228:13:228:17 | this access | cflow.cs:228:13:228:17 | access to field Field | -| cflow.cs:228:13:228:22 | ... += ... | cflow.cs:229:13:232:13 | if (...) ... | -| cflow.cs:228:13:228:23 | ...; | cflow.cs:228:13:228:17 | this access | +| cflow.cs:228:13:228:22 | ... += ... | cflow.cs:228:13:228:22 | After ... += ... | +| cflow.cs:228:13:228:22 | After ... += ... | cflow.cs:228:13:228:23 | After ...; | +| cflow.cs:228:13:228:22 | Before ... += ... | cflow.cs:228:13:228:17 | Before access to field Field | +| cflow.cs:228:13:228:23 | ...; | cflow.cs:228:13:228:22 | Before ... += ... | +| cflow.cs:228:13:228:23 | After ...; | cflow.cs:229:13:232:13 | if (...) ... | | cflow.cs:228:22:228:22 | access to local variable x | cflow.cs:228:13:228:22 | ... += ... | -| cflow.cs:229:13:232:13 | if (...) ... | cflow.cs:229:17:229:21 | this access | -| cflow.cs:229:17:229:21 | access to field Field | cflow.cs:229:17:229:28 | access to property Length | +| cflow.cs:229:13:232:13 | After if (...) ... | cflow.cs:233:13:236:13 | if (...) ... | +| cflow.cs:229:13:232:13 | if (...) ... | cflow.cs:229:17:229:32 | Before ... > ... | +| cflow.cs:229:17:229:21 | After access to field Field | cflow.cs:229:17:229:28 | access to property Length | +| cflow.cs:229:17:229:21 | Before access to field Field | cflow.cs:229:17:229:21 | this access | +| cflow.cs:229:17:229:21 | access to field Field | cflow.cs:229:17:229:21 | After access to field Field | | cflow.cs:229:17:229:21 | this access | cflow.cs:229:17:229:21 | access to field Field | -| cflow.cs:229:17:229:28 | access to property Length | cflow.cs:229:32:229:32 | 0 | -| cflow.cs:229:17:229:32 | ... > ... | cflow.cs:230:13:232:13 | {...} | -| cflow.cs:229:17:229:32 | ... > ... | cflow.cs:233:13:236:13 | if (...) ... | +| cflow.cs:229:17:229:28 | After access to property Length | cflow.cs:229:32:229:32 | 0 | +| cflow.cs:229:17:229:28 | Before access to property Length | cflow.cs:229:17:229:21 | Before access to field Field | +| cflow.cs:229:17:229:28 | access to property Length | cflow.cs:229:17:229:28 | After access to property Length | +| cflow.cs:229:17:229:32 | ... > ... | cflow.cs:229:17:229:32 | After ... > ... [false] | +| cflow.cs:229:17:229:32 | ... > ... | cflow.cs:229:17:229:32 | After ... > ... [true] | +| cflow.cs:229:17:229:32 | After ... > ... [false] | cflow.cs:229:13:232:13 | After if (...) ... | +| cflow.cs:229:17:229:32 | After ... > ... [true] | cflow.cs:230:13:232:13 | {...} | +| cflow.cs:229:17:229:32 | Before ... > ... | cflow.cs:229:17:229:28 | Before access to property Length | | cflow.cs:229:32:229:32 | 0 | cflow.cs:229:17:229:32 | ... > ... | -| cflow.cs:230:13:232:13 | {...} | cflow.cs:231:17:231:25 | continue; | -| cflow.cs:233:13:236:13 | if (...) ... | cflow.cs:233:17:233:21 | this access | -| cflow.cs:233:17:233:21 | access to field Field | cflow.cs:233:17:233:28 | access to property Length | +| cflow.cs:230:13:232:13 | {...} | cflow.cs:231:17:231:25 | Before continue; | +| cflow.cs:231:17:231:25 | Before continue; | cflow.cs:231:17:231:25 | continue; | +| cflow.cs:233:13:236:13 | After if (...) ... | cflow.cs:227:9:237:9 | After {...} | +| cflow.cs:233:13:236:13 | if (...) ... | cflow.cs:233:17:233:32 | Before ... < ... | +| cflow.cs:233:17:233:21 | After access to field Field | cflow.cs:233:17:233:28 | access to property Length | +| cflow.cs:233:17:233:21 | Before access to field Field | cflow.cs:233:17:233:21 | this access | +| cflow.cs:233:17:233:21 | access to field Field | cflow.cs:233:17:233:21 | After access to field Field | | cflow.cs:233:17:233:21 | this access | cflow.cs:233:17:233:21 | access to field Field | -| cflow.cs:233:17:233:28 | access to property Length | cflow.cs:233:32:233:32 | 0 | -| cflow.cs:233:17:233:32 | ... < ... | cflow.cs:234:13:236:13 | {...} | +| cflow.cs:233:17:233:28 | After access to property Length | cflow.cs:233:32:233:32 | 0 | +| cflow.cs:233:17:233:28 | Before access to property Length | cflow.cs:233:17:233:21 | Before access to field Field | +| cflow.cs:233:17:233:28 | access to property Length | cflow.cs:233:17:233:28 | After access to property Length | +| cflow.cs:233:17:233:32 | ... < ... | cflow.cs:233:17:233:32 | After ... < ... [false] | +| cflow.cs:233:17:233:32 | ... < ... | cflow.cs:233:17:233:32 | After ... < ... [true] | +| cflow.cs:233:17:233:32 | After ... < ... [false] | cflow.cs:233:13:236:13 | After if (...) ... | +| cflow.cs:233:17:233:32 | After ... < ... [true] | cflow.cs:234:13:236:13 | {...} | +| cflow.cs:233:17:233:32 | Before ... < ... | cflow.cs:233:17:233:28 | Before access to property Length | | cflow.cs:233:32:233:32 | 0 | cflow.cs:233:17:233:32 | ... < ... | -| cflow.cs:234:13:236:13 | {...} | cflow.cs:235:17:235:22 | break; | -| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:241:5:259:5 | {...} | -| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:240:10:240:13 | exit Goto | +| cflow.cs:234:13:236:13 | {...} | cflow.cs:235:17:235:22 | Before break; | +| cflow.cs:235:17:235:22 | Before break; | cflow.cs:235:17:235:22 | break; | +| cflow.cs:240:10:240:13 | Entry | cflow.cs:241:5:259:5 | {...} | +| cflow.cs:240:10:240:13 | Normal Exit | cflow.cs:240:10:240:13 | Exit | +| cflow.cs:241:5:259:5 | After {...} | cflow.cs:240:10:240:13 | Normal Exit | | cflow.cs:241:5:259:5 | {...} | cflow.cs:242:5:242:9 | Label: | | cflow.cs:242:5:242:9 | Label: | cflow.cs:242:12:242:41 | if (...) ... | -| cflow.cs:242:12:242:41 | if (...) ... | cflow.cs:242:19:242:23 | this access | -| cflow.cs:242:16:242:36 | [true] !... | cflow.cs:242:39:242:41 | {...} | -| cflow.cs:242:17:242:36 | [false] !... | cflow.cs:242:16:242:36 | [true] !... | -| cflow.cs:242:17:242:36 | [true] !... | cflow.cs:242:16:242:36 | [false] !... | -| cflow.cs:242:19:242:23 | access to field Field | cflow.cs:242:19:242:30 | access to property Length | +| cflow.cs:242:12:242:41 | After if (...) ... | cflow.cs:244:9:244:41 | if (...) ... | +| cflow.cs:242:12:242:41 | if (...) ... | cflow.cs:242:16:242:36 | !... | +| cflow.cs:242:16:242:36 | !... | cflow.cs:242:17:242:36 | !... | +| cflow.cs:242:16:242:36 | After !... [true] | cflow.cs:242:39:242:41 | {...} | +| cflow.cs:242:17:242:36 | !... | cflow.cs:242:19:242:35 | Before ... == ... | +| cflow.cs:242:17:242:36 | After !... [false] | cflow.cs:242:16:242:36 | After !... [true] | +| cflow.cs:242:17:242:36 | After !... [true] | cflow.cs:242:16:242:36 | After !... [false] | +| cflow.cs:242:19:242:23 | After access to field Field | cflow.cs:242:19:242:30 | access to property Length | +| cflow.cs:242:19:242:23 | Before access to field Field | cflow.cs:242:19:242:23 | this access | +| cflow.cs:242:19:242:23 | access to field Field | cflow.cs:242:19:242:23 | After access to field Field | | cflow.cs:242:19:242:23 | this access | cflow.cs:242:19:242:23 | access to field Field | -| cflow.cs:242:19:242:30 | access to property Length | cflow.cs:242:35:242:35 | 0 | -| cflow.cs:242:19:242:35 | ... == ... | cflow.cs:242:17:242:36 | [false] !... | -| cflow.cs:242:19:242:35 | ... == ... | cflow.cs:242:17:242:36 | [true] !... | +| cflow.cs:242:19:242:30 | After access to property Length | cflow.cs:242:35:242:35 | 0 | +| cflow.cs:242:19:242:30 | Before access to property Length | cflow.cs:242:19:242:23 | Before access to field Field | +| cflow.cs:242:19:242:30 | access to property Length | cflow.cs:242:19:242:30 | After access to property Length | +| cflow.cs:242:19:242:35 | ... == ... | cflow.cs:242:19:242:35 | After ... == ... [false] | +| cflow.cs:242:19:242:35 | ... == ... | cflow.cs:242:19:242:35 | After ... == ... [true] | +| cflow.cs:242:19:242:35 | After ... == ... [false] | cflow.cs:242:17:242:36 | After !... [true] | +| cflow.cs:242:19:242:35 | After ... == ... [true] | cflow.cs:242:17:242:36 | After !... [false] | +| cflow.cs:242:19:242:35 | Before ... == ... | cflow.cs:242:19:242:30 | Before access to property Length | | cflow.cs:242:35:242:35 | 0 | cflow.cs:242:19:242:35 | ... == ... | -| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:244:13:244:17 | this access | -| cflow.cs:244:13:244:17 | access to field Field | cflow.cs:244:13:244:24 | access to property Length | +| cflow.cs:244:9:244:41 | After if (...) ... | cflow.cs:246:9:258:9 | switch (...) {...} | +| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:244:13:244:28 | Before ... > ... | +| cflow.cs:244:13:244:17 | After access to field Field | cflow.cs:244:13:244:24 | access to property Length | +| cflow.cs:244:13:244:17 | Before access to field Field | cflow.cs:244:13:244:17 | this access | +| cflow.cs:244:13:244:17 | access to field Field | cflow.cs:244:13:244:17 | After access to field Field | | cflow.cs:244:13:244:17 | this access | cflow.cs:244:13:244:17 | access to field Field | -| cflow.cs:244:13:244:24 | access to property Length | cflow.cs:244:28:244:28 | 0 | -| cflow.cs:244:13:244:28 | ... > ... | cflow.cs:244:31:244:41 | goto ...; | -| cflow.cs:244:13:244:28 | ... > ... | cflow.cs:246:9:258:9 | switch (...) {...} | +| cflow.cs:244:13:244:24 | After access to property Length | cflow.cs:244:28:244:28 | 0 | +| cflow.cs:244:13:244:24 | Before access to property Length | cflow.cs:244:13:244:17 | Before access to field Field | +| cflow.cs:244:13:244:24 | access to property Length | cflow.cs:244:13:244:24 | After access to property Length | +| cflow.cs:244:13:244:28 | ... > ... | cflow.cs:244:13:244:28 | After ... > ... [false] | +| cflow.cs:244:13:244:28 | ... > ... | cflow.cs:244:13:244:28 | After ... > ... [true] | +| cflow.cs:244:13:244:28 | After ... > ... [false] | cflow.cs:244:9:244:41 | After if (...) ... | +| cflow.cs:244:13:244:28 | After ... > ... [true] | cflow.cs:244:31:244:41 | Before goto ...; | +| cflow.cs:244:13:244:28 | Before ... > ... | cflow.cs:244:13:244:24 | Before access to property Length | | cflow.cs:244:28:244:28 | 0 | cflow.cs:244:13:244:28 | ... > ... | -| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:246:17:246:21 | this access | -| cflow.cs:246:17:246:21 | access to field Field | cflow.cs:246:17:246:28 | access to property Length | +| cflow.cs:244:31:244:41 | Before goto ...; | cflow.cs:244:31:244:41 | goto ...; | +| cflow.cs:246:9:258:9 | After switch (...) {...} | cflow.cs:241:5:259:5 | After {...} | +| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:246:17:246:32 | Before ... + ... | +| cflow.cs:246:17:246:21 | After access to field Field | cflow.cs:246:17:246:28 | access to property Length | +| cflow.cs:246:17:246:21 | Before access to field Field | cflow.cs:246:17:246:21 | this access | +| cflow.cs:246:17:246:21 | access to field Field | cflow.cs:246:17:246:21 | After access to field Field | | cflow.cs:246:17:246:21 | this access | cflow.cs:246:17:246:21 | access to field Field | -| cflow.cs:246:17:246:28 | access to property Length | cflow.cs:246:32:246:32 | 3 | -| cflow.cs:246:17:246:32 | ... + ... | cflow.cs:248:13:248:19 | case ...: | +| cflow.cs:246:17:246:28 | After access to property Length | cflow.cs:246:32:246:32 | 3 | +| cflow.cs:246:17:246:28 | Before access to property Length | cflow.cs:246:17:246:21 | Before access to field Field | +| cflow.cs:246:17:246:28 | access to property Length | cflow.cs:246:17:246:28 | After access to property Length | +| cflow.cs:246:17:246:32 | ... + ... | cflow.cs:246:17:246:32 | After ... + ... | +| cflow.cs:246:17:246:32 | After ... + ... | cflow.cs:248:13:248:19 | case ...: | +| cflow.cs:246:17:246:32 | Before ... + ... | cflow.cs:246:17:246:28 | Before access to property Length | | cflow.cs:246:32:246:32 | 3 | cflow.cs:246:17:246:32 | ... + ... | +| cflow.cs:248:13:248:19 | After case ...: [match] | cflow.cs:249:17:249:29 | Before goto default; | +| cflow.cs:248:13:248:19 | After case ...: [no-match] | cflow.cs:250:13:250:19 | case ...: | | cflow.cs:248:13:248:19 | case ...: | cflow.cs:248:18:248:18 | 0 | -| cflow.cs:248:18:248:18 | 0 | cflow.cs:249:17:249:29 | goto default; | -| cflow.cs:248:18:248:18 | 0 | cflow.cs:250:13:250:19 | case ...: | +| cflow.cs:248:18:248:18 | 0 | cflow.cs:248:18:248:18 | After 0 [match] | +| cflow.cs:248:18:248:18 | 0 | cflow.cs:248:18:248:18 | After 0 [no-match] | +| cflow.cs:248:18:248:18 | After 0 [match] | cflow.cs:248:13:248:19 | After case ...: [match] | +| cflow.cs:248:18:248:18 | After 0 [no-match] | cflow.cs:248:13:248:19 | After case ...: [no-match] | +| cflow.cs:249:17:249:29 | Before goto default; | cflow.cs:249:17:249:29 | goto default; | +| cflow.cs:250:13:250:19 | After case ...: [match] | cflow.cs:251:17:251:37 | ...; | +| cflow.cs:250:13:250:19 | After case ...: [no-match] | cflow.cs:253:13:253:19 | case ...: | | cflow.cs:250:13:250:19 | case ...: | cflow.cs:250:18:250:18 | 1 | -| cflow.cs:250:18:250:18 | 1 | cflow.cs:251:17:251:37 | ...; | -| cflow.cs:250:18:250:18 | 1 | cflow.cs:253:13:253:19 | case ...: | -| cflow.cs:251:17:251:36 | call to method WriteLine | cflow.cs:252:17:252:22 | break; | -| cflow.cs:251:17:251:37 | ...; | cflow.cs:251:35:251:35 | 1 | +| cflow.cs:250:18:250:18 | 1 | cflow.cs:250:18:250:18 | After 1 [match] | +| cflow.cs:250:18:250:18 | 1 | cflow.cs:250:18:250:18 | After 1 [no-match] | +| cflow.cs:250:18:250:18 | After 1 [match] | cflow.cs:250:13:250:19 | After case ...: [match] | +| cflow.cs:250:18:250:18 | After 1 [no-match] | cflow.cs:250:13:250:19 | After case ...: [no-match] | +| cflow.cs:251:17:251:36 | After call to method WriteLine | cflow.cs:251:17:251:37 | After ...; | +| cflow.cs:251:17:251:36 | Before call to method WriteLine | cflow.cs:251:35:251:35 | 1 | +| cflow.cs:251:17:251:36 | call to method WriteLine | cflow.cs:251:17:251:36 | After call to method WriteLine | +| cflow.cs:251:17:251:37 | ...; | cflow.cs:251:17:251:36 | Before call to method WriteLine | +| cflow.cs:251:17:251:37 | After ...; | cflow.cs:252:17:252:22 | Before break; | | cflow.cs:251:35:251:35 | 1 | cflow.cs:251:17:251:36 | call to method WriteLine | +| cflow.cs:252:17:252:22 | Before break; | cflow.cs:252:17:252:22 | break; | +| cflow.cs:253:13:253:19 | After case ...: [match] | cflow.cs:254:17:254:27 | Before goto ...; | +| cflow.cs:253:13:253:19 | After case ...: [no-match] | cflow.cs:255:13:255:20 | default: | | cflow.cs:253:13:253:19 | case ...: | cflow.cs:253:18:253:18 | 2 | -| cflow.cs:253:18:253:18 | 2 | cflow.cs:254:17:254:27 | goto ...; | -| cflow.cs:255:13:255:20 | default: | cflow.cs:256:17:256:37 | ...; | -| cflow.cs:256:17:256:36 | call to method WriteLine | cflow.cs:257:17:257:22 | break; | -| cflow.cs:256:17:256:37 | ...; | cflow.cs:256:35:256:35 | 0 | +| cflow.cs:253:18:253:18 | 2 | cflow.cs:253:18:253:18 | After 2 [match] | +| cflow.cs:253:18:253:18 | 2 | cflow.cs:253:18:253:18 | After 2 [no-match] | +| cflow.cs:253:18:253:18 | After 2 [match] | cflow.cs:253:13:253:19 | After case ...: [match] | +| cflow.cs:253:18:253:18 | After 2 [no-match] | cflow.cs:253:13:253:19 | After case ...: [no-match] | +| cflow.cs:254:17:254:27 | Before goto ...; | cflow.cs:254:17:254:27 | goto ...; | +| cflow.cs:255:13:255:20 | After default: [match] | cflow.cs:256:17:256:37 | ...; | +| cflow.cs:256:17:256:36 | After call to method WriteLine | cflow.cs:256:17:256:37 | After ...; | +| cflow.cs:256:17:256:36 | Before call to method WriteLine | cflow.cs:256:35:256:35 | 0 | +| cflow.cs:256:17:256:36 | call to method WriteLine | cflow.cs:256:17:256:36 | After call to method WriteLine | +| cflow.cs:256:17:256:37 | ...; | cflow.cs:256:17:256:36 | Before call to method WriteLine | +| cflow.cs:256:17:256:37 | After ...; | cflow.cs:257:17:257:22 | Before break; | | cflow.cs:256:35:256:35 | 0 | cflow.cs:256:17:256:36 | call to method WriteLine | -| cflow.cs:261:49:261:53 | enter Yield | cflow.cs:262:5:277:5 | {...} | -| cflow.cs:262:5:277:5 | {...} | cflow.cs:263:22:263:22 | 0 | -| cflow.cs:263:9:263:23 | yield return ...; | cflow.cs:264:9:267:9 | for (...;...;...) ... | +| cflow.cs:257:17:257:22 | Before break; | cflow.cs:257:17:257:22 | break; | +| cflow.cs:261:49:261:53 | Entry | cflow.cs:262:5:277:5 | {...} | +| cflow.cs:262:5:277:5 | {...} | cflow.cs:263:9:263:23 | Before yield return ...; | +| cflow.cs:263:9:263:23 | After yield return ...; | cflow.cs:264:9:267:9 | for (...;...;...) ... | +| cflow.cs:263:9:263:23 | Before yield return ...; | cflow.cs:263:22:263:22 | 0 | +| cflow.cs:263:9:263:23 | yield return ...; | cflow.cs:263:9:263:23 | After yield return ...; | | cflow.cs:263:22:263:22 | 0 | cflow.cs:263:9:263:23 | yield return ...; | -| cflow.cs:264:9:267:9 | for (...;...;...) ... | cflow.cs:264:22:264:22 | 1 | -| cflow.cs:264:18:264:22 | Int32 i = ... | cflow.cs:264:25:264:25 | access to local variable i | +| cflow.cs:264:9:267:9 | After for (...;...;...) ... | cflow.cs:268:9:276:9 | try {...} ... | +| cflow.cs:264:9:267:9 | [LoopHeader] for (...;...;...) ... | cflow.cs:264:33:264:35 | Before ...++ | +| cflow.cs:264:9:267:9 | for (...;...;...) ... | cflow.cs:264:18:264:22 | Before Int32 i = ... | +| cflow.cs:264:18:264:18 | access to local variable i | cflow.cs:264:22:264:22 | 1 | +| cflow.cs:264:18:264:22 | After Int32 i = ... | cflow.cs:264:25:264:30 | Before ... < ... | +| cflow.cs:264:18:264:22 | Before Int32 i = ... | cflow.cs:264:18:264:18 | access to local variable i | +| cflow.cs:264:18:264:22 | Int32 i = ... | cflow.cs:264:18:264:22 | After Int32 i = ... | | cflow.cs:264:22:264:22 | 1 | cflow.cs:264:18:264:22 | Int32 i = ... | | cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:264:29:264:30 | 10 | -| cflow.cs:264:25:264:30 | ... < ... | cflow.cs:265:9:267:9 | {...} | -| cflow.cs:264:25:264:30 | ... < ... | cflow.cs:268:9:276:9 | try {...} ... | +| cflow.cs:264:25:264:30 | ... < ... | cflow.cs:264:25:264:30 | After ... < ... [false] | +| cflow.cs:264:25:264:30 | ... < ... | cflow.cs:264:25:264:30 | After ... < ... [true] | +| cflow.cs:264:25:264:30 | After ... < ... [false] | cflow.cs:264:9:267:9 | After for (...;...;...) ... | +| cflow.cs:264:25:264:30 | After ... < ... [true] | cflow.cs:265:9:267:9 | {...} | +| cflow.cs:264:25:264:30 | Before ... < ... | cflow.cs:264:25:264:25 | access to local variable i | | cflow.cs:264:29:264:30 | 10 | cflow.cs:264:25:264:30 | ... < ... | | cflow.cs:264:33:264:33 | access to local variable i | cflow.cs:264:33:264:35 | ...++ | -| cflow.cs:265:9:267:9 | {...} | cflow.cs:266:26:266:26 | access to local variable i | -| cflow.cs:266:13:266:27 | yield return ...; | cflow.cs:264:33:264:33 | access to local variable i | +| cflow.cs:264:33:264:35 | ...++ | cflow.cs:264:33:264:35 | After ...++ | +| cflow.cs:264:33:264:35 | Before ...++ | cflow.cs:264:33:264:33 | access to local variable i | +| cflow.cs:265:9:267:9 | After {...} | cflow.cs:264:9:267:9 | [LoopHeader] for (...;...;...) ... | +| cflow.cs:265:9:267:9 | {...} | cflow.cs:266:13:266:27 | Before yield return ...; | +| cflow.cs:266:13:266:27 | After yield return ...; | cflow.cs:265:9:267:9 | After {...} | +| cflow.cs:266:13:266:27 | Before yield return ...; | cflow.cs:266:26:266:26 | access to local variable i | +| cflow.cs:266:13:266:27 | yield return ...; | cflow.cs:266:13:266:27 | After yield return ...; | | cflow.cs:266:26:266:26 | access to local variable i | cflow.cs:266:13:266:27 | yield return ...; | +| cflow.cs:268:9:276:9 | After try {...} ... | cflow.cs:262:5:277:5 | After {...} | | cflow.cs:268:9:276:9 | try {...} ... | cflow.cs:269:9:272:9 | {...} | -| cflow.cs:269:9:272:9 | {...} | cflow.cs:270:13:270:24 | yield break; | +| cflow.cs:269:9:272:9 | {...} | cflow.cs:270:13:270:24 | Before yield break; | +| cflow.cs:270:13:270:24 | Before yield break; | cflow.cs:270:13:270:24 | yield break; | | cflow.cs:270:13:270:24 | yield break; | cflow.cs:274:9:276:9 | {...} | +| cflow.cs:274:9:276:9 | After {...} | cflow.cs:261:49:261:53 | Exceptional Exit | +| cflow.cs:274:9:276:9 | After {...} | cflow.cs:261:49:261:53 | Normal Exit | +| cflow.cs:274:9:276:9 | After {...} | cflow.cs:268:9:276:9 | After try {...} ... | | cflow.cs:274:9:276:9 | {...} | cflow.cs:275:13:275:42 | ...; | -| cflow.cs:275:13:275:41 | call to method WriteLine | cflow.cs:261:49:261:53 | exit Yield (abnormal) | -| cflow.cs:275:13:275:41 | call to method WriteLine | cflow.cs:261:49:261:53 | exit Yield (normal) | -| cflow.cs:275:13:275:42 | ...; | cflow.cs:275:31:275:40 | "not dead" | +| cflow.cs:275:13:275:41 | After call to method WriteLine | cflow.cs:275:13:275:42 | After ...; | +| cflow.cs:275:13:275:41 | Before call to method WriteLine | cflow.cs:275:31:275:40 | "not dead" | +| cflow.cs:275:13:275:41 | call to method WriteLine | cflow.cs:275:13:275:41 | After call to method WriteLine | +| cflow.cs:275:13:275:42 | ...; | cflow.cs:275:13:275:41 | Before call to method WriteLine | +| cflow.cs:275:13:275:42 | After ...; | cflow.cs:274:9:276:9 | After {...} | | cflow.cs:275:31:275:40 | "not dead" | cflow.cs:275:13:275:41 | call to method WriteLine | -| cflow.cs:282:5:282:18 | call to method | cflow.cs:282:24:282:27 | call to constructor ControlFlow | -| cflow.cs:282:5:282:18 | enter ControlFlowSub | cflow.cs:282:5:282:18 | this access | -| cflow.cs:282:5:282:18 | exit ControlFlowSub (normal) | cflow.cs:282:5:282:18 | exit ControlFlowSub | +| cflow.cs:282:5:282:18 | After call to method | cflow.cs:282:24:282:27 | Before call to constructor ControlFlow | +| cflow.cs:282:5:282:18 | Before call to method | cflow.cs:282:5:282:18 | this access | +| cflow.cs:282:5:282:18 | Entry | cflow.cs:282:5:282:18 | Before call to method | +| cflow.cs:282:5:282:18 | Normal Exit | cflow.cs:282:5:282:18 | Exit | +| cflow.cs:282:5:282:18 | call to method | cflow.cs:282:5:282:18 | After call to method | | cflow.cs:282:5:282:18 | this access | cflow.cs:282:5:282:18 | call to method | -| cflow.cs:282:24:282:27 | call to constructor ControlFlow | cflow.cs:282:31:282:33 | {...} | -| cflow.cs:282:31:282:33 | {...} | cflow.cs:282:5:282:18 | exit ControlFlowSub (normal) | -| cflow.cs:284:5:284:18 | enter ControlFlowSub | cflow.cs:284:32:284:35 | call to constructor ControlFlowSub | -| cflow.cs:284:5:284:18 | exit ControlFlowSub (normal) | cflow.cs:284:5:284:18 | exit ControlFlowSub | -| cflow.cs:284:32:284:35 | call to constructor ControlFlowSub | cflow.cs:284:39:284:41 | {...} | -| cflow.cs:284:39:284:41 | {...} | cflow.cs:284:5:284:18 | exit ControlFlowSub (normal) | -| cflow.cs:286:5:286:18 | enter ControlFlowSub | cflow.cs:286:34:286:34 | access to parameter i | -| cflow.cs:286:5:286:18 | exit ControlFlowSub (normal) | cflow.cs:286:5:286:18 | exit ControlFlowSub | -| cflow.cs:286:29:286:32 | call to constructor ControlFlowSub | cflow.cs:286:48:286:50 | {...} | +| cflow.cs:282:24:282:27 | After call to constructor ControlFlow | cflow.cs:282:31:282:33 | {...} | +| cflow.cs:282:24:282:27 | Before call to constructor ControlFlow | cflow.cs:282:24:282:27 | call to constructor ControlFlow | +| cflow.cs:282:24:282:27 | call to constructor ControlFlow | cflow.cs:282:24:282:27 | After call to constructor ControlFlow | +| cflow.cs:282:31:282:33 | {...} | cflow.cs:282:5:282:18 | Normal Exit | +| cflow.cs:284:5:284:18 | Entry | cflow.cs:284:27:284:27 | s | +| cflow.cs:284:5:284:18 | Normal Exit | cflow.cs:284:5:284:18 | Exit | +| cflow.cs:284:27:284:27 | s | cflow.cs:284:32:284:35 | Before call to constructor ControlFlowSub | +| cflow.cs:284:32:284:35 | After call to constructor ControlFlowSub | cflow.cs:284:39:284:41 | {...} | +| cflow.cs:284:32:284:35 | Before call to constructor ControlFlowSub | cflow.cs:284:32:284:35 | call to constructor ControlFlowSub | +| cflow.cs:284:32:284:35 | call to constructor ControlFlowSub | cflow.cs:284:32:284:35 | After call to constructor ControlFlowSub | +| cflow.cs:284:39:284:41 | {...} | cflow.cs:284:5:284:18 | Normal Exit | +| cflow.cs:286:5:286:18 | Entry | cflow.cs:286:24:286:24 | i | +| cflow.cs:286:5:286:18 | Normal Exit | cflow.cs:286:5:286:18 | Exit | +| cflow.cs:286:24:286:24 | i | cflow.cs:286:29:286:32 | Before call to constructor ControlFlowSub | +| cflow.cs:286:29:286:32 | After call to constructor ControlFlowSub | cflow.cs:286:48:286:50 | {...} | +| cflow.cs:286:29:286:32 | Before call to constructor ControlFlowSub | cflow.cs:286:34:286:45 | Before call to method ToString | +| cflow.cs:286:29:286:32 | call to constructor ControlFlowSub | cflow.cs:286:29:286:32 | After call to constructor ControlFlowSub | | cflow.cs:286:34:286:34 | access to parameter i | cflow.cs:286:34:286:45 | call to method ToString | -| cflow.cs:286:34:286:45 | call to method ToString | cflow.cs:286:29:286:32 | call to constructor ControlFlowSub | -| cflow.cs:286:48:286:50 | {...} | cflow.cs:286:5:286:18 | exit ControlFlowSub (normal) | -| cflow.cs:289:7:289:18 | call to constructor Object | cflow.cs:289:7:289:18 | {...} | -| cflow.cs:289:7:289:18 | call to method | cflow.cs:289:7:289:18 | call to constructor Object | -| cflow.cs:289:7:289:18 | enter DelegateCall | cflow.cs:289:7:289:18 | this access | -| cflow.cs:289:7:289:18 | exit DelegateCall (normal) | cflow.cs:289:7:289:18 | exit DelegateCall | +| cflow.cs:286:34:286:45 | After call to method ToString | cflow.cs:286:29:286:32 | call to constructor ControlFlowSub | +| cflow.cs:286:34:286:45 | Before call to method ToString | cflow.cs:286:34:286:34 | access to parameter i | +| cflow.cs:286:34:286:45 | call to method ToString | cflow.cs:286:34:286:45 | After call to method ToString | +| cflow.cs:286:48:286:50 | {...} | cflow.cs:286:5:286:18 | Normal Exit | +| cflow.cs:289:7:289:18 | After call to constructor Object | cflow.cs:289:7:289:18 | {...} | +| cflow.cs:289:7:289:18 | After call to method | cflow.cs:289:7:289:18 | Before call to constructor Object | +| cflow.cs:289:7:289:18 | Before call to constructor Object | cflow.cs:289:7:289:18 | call to constructor Object | +| cflow.cs:289:7:289:18 | Before call to method | cflow.cs:289:7:289:18 | this access | +| cflow.cs:289:7:289:18 | Entry | cflow.cs:289:7:289:18 | Before call to method | +| cflow.cs:289:7:289:18 | Normal Exit | cflow.cs:289:7:289:18 | Exit | +| cflow.cs:289:7:289:18 | call to constructor Object | cflow.cs:289:7:289:18 | After call to constructor Object | +| cflow.cs:289:7:289:18 | call to method | cflow.cs:289:7:289:18 | After call to method | | cflow.cs:289:7:289:18 | this access | cflow.cs:289:7:289:18 | call to method | -| cflow.cs:289:7:289:18 | {...} | cflow.cs:289:7:289:18 | exit DelegateCall (normal) | -| cflow.cs:291:12:291:12 | enter M | cflow.cs:291:38:291:38 | access to parameter f | -| cflow.cs:291:12:291:12 | exit M (normal) | cflow.cs:291:12:291:12 | exit M | +| cflow.cs:289:7:289:18 | {...} | cflow.cs:289:7:289:18 | Normal Exit | +| cflow.cs:291:12:291:12 | Entry | cflow.cs:291:32:291:32 | f | +| cflow.cs:291:12:291:12 | Normal Exit | cflow.cs:291:12:291:12 | Exit | +| cflow.cs:291:32:291:32 | f | cflow.cs:291:38:291:41 | Before delegate call | | cflow.cs:291:38:291:38 | access to parameter f | cflow.cs:291:40:291:40 | 0 | -| cflow.cs:291:38:291:41 | delegate call | cflow.cs:291:12:291:12 | exit M (normal) | +| cflow.cs:291:38:291:41 | After delegate call | cflow.cs:291:12:291:12 | Normal Exit | +| cflow.cs:291:38:291:41 | Before delegate call | cflow.cs:291:38:291:38 | access to parameter f | +| cflow.cs:291:38:291:41 | delegate call | cflow.cs:291:38:291:41 | After delegate call | | cflow.cs:291:40:291:40 | 0 | cflow.cs:291:38:291:41 | delegate call | -| cflow.cs:296:5:296:25 | call to constructor Object | cflow.cs:296:52:296:54 | {...} | -| cflow.cs:296:5:296:25 | call to method | cflow.cs:296:5:296:25 | call to constructor Object | -| cflow.cs:296:5:296:25 | enter NegationInConstructor | cflow.cs:296:5:296:25 | this access | -| cflow.cs:296:5:296:25 | exit NegationInConstructor (normal) | cflow.cs:296:5:296:25 | exit NegationInConstructor | +| cflow.cs:296:5:296:25 | After call to constructor Object | cflow.cs:296:52:296:54 | {...} | +| cflow.cs:296:5:296:25 | After call to method | cflow.cs:296:5:296:25 | Before call to constructor Object | +| cflow.cs:296:5:296:25 | Before call to constructor Object | cflow.cs:296:5:296:25 | call to constructor Object | +| cflow.cs:296:5:296:25 | Before call to method | cflow.cs:296:5:296:25 | this access | +| cflow.cs:296:5:296:25 | Entry | cflow.cs:296:32:296:32 | b | +| cflow.cs:296:5:296:25 | Normal Exit | cflow.cs:296:5:296:25 | Exit | +| cflow.cs:296:5:296:25 | call to constructor Object | cflow.cs:296:5:296:25 | After call to constructor Object | +| cflow.cs:296:5:296:25 | call to method | cflow.cs:296:5:296:25 | After call to method | | cflow.cs:296:5:296:25 | this access | cflow.cs:296:5:296:25 | call to method | -| cflow.cs:296:52:296:54 | {...} | cflow.cs:296:5:296:25 | exit NegationInConstructor (normal) | -| cflow.cs:298:10:298:10 | enter M | cflow.cs:299:5:301:5 | {...} | -| cflow.cs:298:10:298:10 | exit M (normal) | cflow.cs:298:10:298:10 | exit M | +| cflow.cs:296:32:296:32 | b | cflow.cs:296:39:296:39 | i | +| cflow.cs:296:39:296:39 | i | cflow.cs:296:49:296:49 | s | +| cflow.cs:296:49:296:49 | s | cflow.cs:296:5:296:25 | Before call to method | +| cflow.cs:296:52:296:54 | {...} | cflow.cs:296:5:296:25 | Normal Exit | +| cflow.cs:298:10:298:10 | Entry | cflow.cs:298:16:298:16 | i | +| cflow.cs:298:10:298:10 | Normal Exit | cflow.cs:298:10:298:10 | Exit | +| cflow.cs:298:16:298:16 | i | cflow.cs:298:26:298:26 | s | +| cflow.cs:298:26:298:26 | s | cflow.cs:298:34:298:34 | b | +| cflow.cs:298:34:298:34 | b | cflow.cs:299:5:301:5 | {...} | +| cflow.cs:299:5:301:5 | After {...} | cflow.cs:298:10:298:10 | Normal Exit | | cflow.cs:299:5:301:5 | {...} | cflow.cs:300:9:300:73 | ...; | -| cflow.cs:300:9:300:72 | object creation of type NegationInConstructor | cflow.cs:298:10:298:10 | exit M (normal) | -| cflow.cs:300:9:300:73 | ...; | cflow.cs:300:38:300:38 | 0 | -| cflow.cs:300:38:300:38 | 0 | cflow.cs:300:46:300:46 | access to parameter i | -| cflow.cs:300:44:300:51 | [true] !... | cflow.cs:300:56:300:56 | access to parameter s | -| cflow.cs:300:44:300:64 | ... && ... | cflow.cs:300:70:300:71 | "" | +| cflow.cs:300:9:300:72 | After object creation of type NegationInConstructor | cflow.cs:300:9:300:73 | After ...; | +| cflow.cs:300:9:300:72 | Before object creation of type NegationInConstructor | cflow.cs:300:38:300:38 | 0 | +| cflow.cs:300:9:300:72 | object creation of type NegationInConstructor | cflow.cs:300:9:300:72 | After object creation of type NegationInConstructor | +| cflow.cs:300:9:300:73 | ...; | cflow.cs:300:9:300:72 | Before object creation of type NegationInConstructor | +| cflow.cs:300:9:300:73 | After ...; | cflow.cs:299:5:301:5 | After {...} | +| cflow.cs:300:38:300:38 | 0 | cflow.cs:300:44:300:64 | ... && ... | +| cflow.cs:300:44:300:51 | !... | cflow.cs:300:46:300:50 | Before ... > ... | +| cflow.cs:300:44:300:51 | After !... [true] | cflow.cs:300:56:300:64 | Before ... != ... | +| cflow.cs:300:44:300:64 | ... && ... | cflow.cs:300:44:300:51 | !... | +| cflow.cs:300:44:300:64 | After ... && ... | cflow.cs:300:70:300:71 | "" | | cflow.cs:300:46:300:46 | access to parameter i | cflow.cs:300:50:300:50 | 0 | -| cflow.cs:300:46:300:50 | ... > ... | cflow.cs:300:44:300:51 | [false] !... | -| cflow.cs:300:46:300:50 | ... > ... | cflow.cs:300:44:300:51 | [true] !... | +| cflow.cs:300:46:300:50 | ... > ... | cflow.cs:300:46:300:50 | After ... > ... [false] | +| cflow.cs:300:46:300:50 | ... > ... | cflow.cs:300:46:300:50 | After ... > ... [true] | +| cflow.cs:300:46:300:50 | After ... > ... [false] | cflow.cs:300:44:300:51 | After !... [true] | +| cflow.cs:300:46:300:50 | After ... > ... [true] | cflow.cs:300:44:300:51 | After !... [false] | +| cflow.cs:300:46:300:50 | Before ... > ... | cflow.cs:300:46:300:46 | access to parameter i | | cflow.cs:300:50:300:50 | 0 | cflow.cs:300:46:300:50 | ... > ... | | cflow.cs:300:56:300:56 | access to parameter s | cflow.cs:300:61:300:64 | null | +| cflow.cs:300:56:300:64 | ... != ... | cflow.cs:300:56:300:64 | After ... != ... | +| cflow.cs:300:56:300:64 | Before ... != ... | cflow.cs:300:56:300:56 | access to parameter s | | cflow.cs:300:61:300:64 | null | cflow.cs:300:56:300:64 | ... != ... | | cflow.cs:300:70:300:71 | "" | cflow.cs:300:9:300:72 | object creation of type NegationInConstructor | -| cflow.cs:304:7:304:18 | call to constructor Object | cflow.cs:304:7:304:18 | {...} | -| cflow.cs:304:7:304:18 | call to method | cflow.cs:304:7:304:18 | call to constructor Object | -| cflow.cs:304:7:304:18 | enter LambdaGetter | cflow.cs:304:7:304:18 | this access | -| cflow.cs:304:7:304:18 | exit LambdaGetter (normal) | cflow.cs:304:7:304:18 | exit LambdaGetter | +| cflow.cs:304:7:304:18 | After call to constructor Object | cflow.cs:304:7:304:18 | {...} | +| cflow.cs:304:7:304:18 | After call to method | cflow.cs:304:7:304:18 | Before call to constructor Object | +| cflow.cs:304:7:304:18 | Before call to constructor Object | cflow.cs:304:7:304:18 | call to constructor Object | +| cflow.cs:304:7:304:18 | Before call to method | cflow.cs:304:7:304:18 | this access | +| cflow.cs:304:7:304:18 | Entry | cflow.cs:304:7:304:18 | Before call to method | +| cflow.cs:304:7:304:18 | Normal Exit | cflow.cs:304:7:304:18 | Exit | +| cflow.cs:304:7:304:18 | call to constructor Object | cflow.cs:304:7:304:18 | After call to constructor Object | +| cflow.cs:304:7:304:18 | call to method | cflow.cs:304:7:304:18 | After call to method | | cflow.cs:304:7:304:18 | this access | cflow.cs:304:7:304:18 | call to method | -| cflow.cs:304:7:304:18 | {...} | cflow.cs:304:7:304:18 | exit LambdaGetter (normal) | -| cflow.cs:306:60:310:5 | (...) => ... | cflow.cs:306:60:310:5 | exit get__getter (normal) | -| cflow.cs:306:60:310:5 | enter (...) => ... | cflow.cs:307:5:310:5 | {...} | -| cflow.cs:306:60:310:5 | enter get__getter | cflow.cs:306:60:310:5 | (...) => ... | -| cflow.cs:306:60:310:5 | exit (...) => ... (normal) | cflow.cs:306:60:310:5 | exit (...) => ... | -| cflow.cs:306:60:310:5 | exit get__getter (normal) | cflow.cs:306:60:310:5 | exit get__getter | +| cflow.cs:304:7:304:18 | {...} | cflow.cs:304:7:304:18 | Normal Exit | +| cflow.cs:306:60:310:5 | (...) => ... | cflow.cs:306:60:310:5 | Normal Exit | +| cflow.cs:306:60:310:5 | Entry | cflow.cs:306:60:310:5 | (...) => ... | +| cflow.cs:306:60:310:5 | Entry | cflow.cs:306:61:306:61 | o | +| cflow.cs:306:60:310:5 | Normal Exit | cflow.cs:306:60:310:5 | Exit | +| cflow.cs:306:60:310:5 | Normal Exit | cflow.cs:306:60:310:5 | Exit | +| cflow.cs:306:61:306:61 | o | cflow.cs:306:64:306:64 | n | +| cflow.cs:306:64:306:64 | n | cflow.cs:307:5:310:5 | {...} | | cflow.cs:307:5:310:5 | {...} | cflow.cs:308:9:308:21 | ... ...; | -| cflow.cs:308:9:308:21 | ... ...; | cflow.cs:308:20:308:20 | access to parameter o | -| cflow.cs:308:16:308:20 | Object x = ... | cflow.cs:309:16:309:16 | access to local variable x | +| cflow.cs:308:9:308:21 | ... ...; | cflow.cs:308:16:308:20 | Before Object x = ... | +| cflow.cs:308:9:308:21 | After ... ...; | cflow.cs:309:9:309:17 | Before return ...; | +| cflow.cs:308:16:308:16 | access to local variable x | cflow.cs:308:20:308:20 | access to parameter o | +| cflow.cs:308:16:308:20 | After Object x = ... | cflow.cs:308:9:308:21 | After ... ...; | +| cflow.cs:308:16:308:20 | Before Object x = ... | cflow.cs:308:16:308:16 | access to local variable x | +| cflow.cs:308:16:308:20 | Object x = ... | cflow.cs:308:16:308:20 | After Object x = ... | | cflow.cs:308:20:308:20 | access to parameter o | cflow.cs:308:16:308:20 | Object x = ... | -| cflow.cs:309:9:309:17 | return ...; | cflow.cs:306:60:310:5 | exit (...) => ... (normal) | +| cflow.cs:309:9:309:17 | Before return ...; | cflow.cs:309:16:309:16 | access to local variable x | +| cflow.cs:309:9:309:17 | return ...; | cflow.cs:306:60:310:5 | Normal Exit | | cflow.cs:309:16:309:16 | access to local variable x | cflow.cs:309:9:309:17 | return ...; | postDominance -| AccessorCalls.cs:1:7:1:19 | call to constructor Object | AccessorCalls.cs:1:7:1:19 | call to method | +| AccessorCalls.cs:1:7:1:19 | After call to constructor Object | AccessorCalls.cs:1:7:1:19 | call to constructor Object | +| AccessorCalls.cs:1:7:1:19 | After call to method | AccessorCalls.cs:1:7:1:19 | call to method | +| AccessorCalls.cs:1:7:1:19 | Before call to constructor Object | AccessorCalls.cs:1:7:1:19 | After call to method | +| AccessorCalls.cs:1:7:1:19 | Before call to method | AccessorCalls.cs:1:7:1:19 | Entry | +| AccessorCalls.cs:1:7:1:19 | Exit | AccessorCalls.cs:1:7:1:19 | Normal Exit | +| AccessorCalls.cs:1:7:1:19 | Normal Exit | AccessorCalls.cs:1:7:1:19 | {...} | +| AccessorCalls.cs:1:7:1:19 | call to constructor Object | AccessorCalls.cs:1:7:1:19 | Before call to constructor Object | | AccessorCalls.cs:1:7:1:19 | call to method | AccessorCalls.cs:1:7:1:19 | this access | -| AccessorCalls.cs:1:7:1:19 | exit AccessorCalls | AccessorCalls.cs:1:7:1:19 | exit AccessorCalls (normal) | -| AccessorCalls.cs:1:7:1:19 | exit AccessorCalls (normal) | AccessorCalls.cs:1:7:1:19 | {...} | -| AccessorCalls.cs:1:7:1:19 | this access | AccessorCalls.cs:1:7:1:19 | enter AccessorCalls | -| AccessorCalls.cs:1:7:1:19 | {...} | AccessorCalls.cs:1:7:1:19 | call to constructor Object | -| AccessorCalls.cs:5:23:5:25 | exit get_Item | AccessorCalls.cs:5:23:5:25 | exit get_Item (normal) | -| AccessorCalls.cs:5:23:5:25 | exit get_Item (normal) | AccessorCalls.cs:5:30:5:30 | access to parameter i | -| AccessorCalls.cs:5:30:5:30 | access to parameter i | AccessorCalls.cs:5:23:5:25 | enter get_Item | -| AccessorCalls.cs:5:33:5:35 | exit set_Item | AccessorCalls.cs:5:33:5:35 | exit set_Item (normal) | -| AccessorCalls.cs:5:33:5:35 | exit set_Item (normal) | AccessorCalls.cs:5:37:5:39 | {...} | -| AccessorCalls.cs:5:37:5:39 | {...} | AccessorCalls.cs:5:33:5:35 | enter set_Item | -| AccessorCalls.cs:7:32:7:34 | exit add_Event | AccessorCalls.cs:7:32:7:34 | exit add_Event (normal) | -| AccessorCalls.cs:7:32:7:34 | exit add_Event (normal) | AccessorCalls.cs:7:36:7:38 | {...} | -| AccessorCalls.cs:7:36:7:38 | {...} | AccessorCalls.cs:7:32:7:34 | enter add_Event | -| AccessorCalls.cs:7:40:7:45 | exit remove_Event | AccessorCalls.cs:7:40:7:45 | exit remove_Event (normal) | -| AccessorCalls.cs:7:40:7:45 | exit remove_Event (normal) | AccessorCalls.cs:7:47:7:49 | {...} | -| AccessorCalls.cs:7:47:7:49 | {...} | AccessorCalls.cs:7:40:7:45 | enter remove_Event | -| AccessorCalls.cs:10:10:10:11 | exit M1 | AccessorCalls.cs:10:10:10:11 | exit M1 (normal) | -| AccessorCalls.cs:10:10:10:11 | exit M1 (normal) | AccessorCalls.cs:16:9:16:23 | ... -= ... | -| AccessorCalls.cs:11:5:17:5 | {...} | AccessorCalls.cs:10:10:10:11 | enter M1 | -| AccessorCalls.cs:12:9:12:12 | this access | AccessorCalls.cs:12:9:12:32 | ...; | -| AccessorCalls.cs:12:9:12:18 | access to field Field | AccessorCalls.cs:12:22:12:31 | access to field Field | -| AccessorCalls.cs:12:9:12:31 | ... = ... | AccessorCalls.cs:12:9:12:18 | access to field Field | +| AccessorCalls.cs:1:7:1:19 | this access | AccessorCalls.cs:1:7:1:19 | Before call to method | +| AccessorCalls.cs:1:7:1:19 | {...} | AccessorCalls.cs:1:7:1:19 | After call to constructor Object | +| AccessorCalls.cs:5:18:5:18 | i | AccessorCalls.cs:5:23:5:25 | Entry | +| AccessorCalls.cs:5:18:5:18 | i | AccessorCalls.cs:5:33:5:35 | Entry | +| AccessorCalls.cs:5:23:5:25 | Exit | AccessorCalls.cs:5:23:5:25 | Normal Exit | +| AccessorCalls.cs:5:23:5:25 | Normal Exit | AccessorCalls.cs:5:30:5:30 | access to parameter i | +| AccessorCalls.cs:5:30:5:30 | access to parameter i | AccessorCalls.cs:5:18:5:18 | i | +| AccessorCalls.cs:5:33:5:35 | Exit | AccessorCalls.cs:5:33:5:35 | Normal Exit | +| AccessorCalls.cs:5:33:5:35 | Normal Exit | AccessorCalls.cs:5:37:5:39 | {...} | +| AccessorCalls.cs:5:33:5:35 | value | AccessorCalls.cs:5:18:5:18 | i | +| AccessorCalls.cs:5:37:5:39 | {...} | AccessorCalls.cs:5:33:5:35 | value | +| AccessorCalls.cs:7:32:7:34 | Exit | AccessorCalls.cs:7:32:7:34 | Normal Exit | +| AccessorCalls.cs:7:32:7:34 | Normal Exit | AccessorCalls.cs:7:36:7:38 | {...} | +| AccessorCalls.cs:7:32:7:34 | value | AccessorCalls.cs:7:32:7:34 | Entry | +| AccessorCalls.cs:7:36:7:38 | {...} | AccessorCalls.cs:7:32:7:34 | value | +| AccessorCalls.cs:7:40:7:45 | Exit | AccessorCalls.cs:7:40:7:45 | Normal Exit | +| AccessorCalls.cs:7:40:7:45 | Normal Exit | AccessorCalls.cs:7:47:7:49 | {...} | +| AccessorCalls.cs:7:40:7:45 | value | AccessorCalls.cs:7:40:7:45 | Entry | +| AccessorCalls.cs:7:47:7:49 | {...} | AccessorCalls.cs:7:40:7:45 | value | +| AccessorCalls.cs:10:10:10:11 | Exit | AccessorCalls.cs:10:10:10:11 | Normal Exit | +| AccessorCalls.cs:10:10:10:11 | Normal Exit | AccessorCalls.cs:11:5:17:5 | After {...} | +| AccessorCalls.cs:10:26:10:26 | e | AccessorCalls.cs:10:10:10:11 | Entry | +| AccessorCalls.cs:11:5:17:5 | After {...} | AccessorCalls.cs:16:9:16:24 | After ...; | +| AccessorCalls.cs:11:5:17:5 | {...} | AccessorCalls.cs:10:26:10:26 | e | +| AccessorCalls.cs:12:9:12:12 | this access | AccessorCalls.cs:12:9:12:18 | Before access to field Field | +| AccessorCalls.cs:12:9:12:18 | After access to field Field | AccessorCalls.cs:12:9:12:18 | access to field Field | +| AccessorCalls.cs:12:9:12:18 | Before access to field Field | AccessorCalls.cs:12:9:12:31 | Before ... = ... | +| AccessorCalls.cs:12:9:12:18 | access to field Field | AccessorCalls.cs:12:9:12:12 | this access | +| AccessorCalls.cs:12:9:12:31 | ... = ... | AccessorCalls.cs:12:22:12:31 | After access to field Field | +| AccessorCalls.cs:12:9:12:31 | After ... = ... | AccessorCalls.cs:12:9:12:31 | ... = ... | +| AccessorCalls.cs:12:9:12:31 | Before ... = ... | AccessorCalls.cs:12:9:12:32 | ...; | | AccessorCalls.cs:12:9:12:32 | ...; | AccessorCalls.cs:11:5:17:5 | {...} | -| AccessorCalls.cs:12:22:12:25 | this access | AccessorCalls.cs:12:9:12:12 | this access | +| AccessorCalls.cs:12:9:12:32 | After ...; | AccessorCalls.cs:12:9:12:31 | After ... = ... | +| AccessorCalls.cs:12:22:12:25 | this access | AccessorCalls.cs:12:22:12:31 | Before access to field Field | +| AccessorCalls.cs:12:22:12:31 | After access to field Field | AccessorCalls.cs:12:22:12:31 | access to field Field | +| AccessorCalls.cs:12:22:12:31 | Before access to field Field | AccessorCalls.cs:12:9:12:18 | After access to field Field | | AccessorCalls.cs:12:22:12:31 | access to field Field | AccessorCalls.cs:12:22:12:25 | this access | -| AccessorCalls.cs:13:9:13:12 | this access | AccessorCalls.cs:13:9:13:30 | ...; | -| AccessorCalls.cs:13:9:13:17 | access to property Prop | AccessorCalls.cs:13:21:13:29 | access to property Prop | -| AccessorCalls.cs:13:9:13:29 | ... = ... | AccessorCalls.cs:13:9:13:17 | access to property Prop | -| AccessorCalls.cs:13:9:13:30 | ...; | AccessorCalls.cs:12:9:12:31 | ... = ... | -| AccessorCalls.cs:13:21:13:24 | this access | AccessorCalls.cs:13:9:13:12 | this access | +| AccessorCalls.cs:13:9:13:12 | this access | AccessorCalls.cs:13:9:13:17 | Before access to property Prop | +| AccessorCalls.cs:13:9:13:17 | After access to property Prop | AccessorCalls.cs:13:9:13:17 | access to property Prop | +| AccessorCalls.cs:13:9:13:17 | Before access to property Prop | AccessorCalls.cs:13:9:13:29 | Before ... = ... | +| AccessorCalls.cs:13:9:13:17 | access to property Prop | AccessorCalls.cs:13:9:13:12 | this access | +| AccessorCalls.cs:13:9:13:29 | ... = ... | AccessorCalls.cs:13:21:13:29 | After access to property Prop | +| AccessorCalls.cs:13:9:13:29 | After ... = ... | AccessorCalls.cs:13:9:13:29 | ... = ... | +| AccessorCalls.cs:13:9:13:29 | Before ... = ... | AccessorCalls.cs:13:9:13:30 | ...; | +| AccessorCalls.cs:13:9:13:30 | ...; | AccessorCalls.cs:12:9:12:32 | After ...; | +| AccessorCalls.cs:13:9:13:30 | After ...; | AccessorCalls.cs:13:9:13:29 | After ... = ... | +| AccessorCalls.cs:13:21:13:24 | this access | AccessorCalls.cs:13:21:13:29 | Before access to property Prop | +| AccessorCalls.cs:13:21:13:29 | After access to property Prop | AccessorCalls.cs:13:21:13:29 | access to property Prop | +| AccessorCalls.cs:13:21:13:29 | Before access to property Prop | AccessorCalls.cs:13:9:13:17 | After access to property Prop | | AccessorCalls.cs:13:21:13:29 | access to property Prop | AccessorCalls.cs:13:21:13:24 | this access | -| AccessorCalls.cs:14:9:14:12 | this access | AccessorCalls.cs:14:9:14:26 | ...; | -| AccessorCalls.cs:14:9:14:15 | access to indexer | AccessorCalls.cs:14:19:14:25 | access to indexer | -| AccessorCalls.cs:14:9:14:25 | ... = ... | AccessorCalls.cs:14:9:14:15 | access to indexer | -| AccessorCalls.cs:14:9:14:26 | ...; | AccessorCalls.cs:13:9:13:29 | ... = ... | +| AccessorCalls.cs:14:9:14:12 | this access | AccessorCalls.cs:14:9:14:15 | Before access to indexer | +| AccessorCalls.cs:14:9:14:15 | After access to indexer | AccessorCalls.cs:14:9:14:15 | access to indexer | +| AccessorCalls.cs:14:9:14:15 | Before access to indexer | AccessorCalls.cs:14:9:14:25 | Before ... = ... | +| AccessorCalls.cs:14:9:14:15 | access to indexer | AccessorCalls.cs:14:14:14:14 | 0 | +| AccessorCalls.cs:14:9:14:25 | ... = ... | AccessorCalls.cs:14:19:14:25 | After access to indexer | +| AccessorCalls.cs:14:9:14:25 | After ... = ... | AccessorCalls.cs:14:9:14:25 | ... = ... | +| AccessorCalls.cs:14:9:14:25 | Before ... = ... | AccessorCalls.cs:14:9:14:26 | ...; | +| AccessorCalls.cs:14:9:14:26 | ...; | AccessorCalls.cs:13:9:13:30 | After ...; | +| AccessorCalls.cs:14:9:14:26 | After ...; | AccessorCalls.cs:14:9:14:25 | After ... = ... | | AccessorCalls.cs:14:14:14:14 | 0 | AccessorCalls.cs:14:9:14:12 | this access | -| AccessorCalls.cs:14:19:14:22 | this access | AccessorCalls.cs:14:14:14:14 | 0 | +| AccessorCalls.cs:14:19:14:22 | this access | AccessorCalls.cs:14:19:14:25 | Before access to indexer | +| AccessorCalls.cs:14:19:14:25 | After access to indexer | AccessorCalls.cs:14:19:14:25 | access to indexer | +| AccessorCalls.cs:14:19:14:25 | Before access to indexer | AccessorCalls.cs:14:9:14:15 | After access to indexer | | AccessorCalls.cs:14:19:14:25 | access to indexer | AccessorCalls.cs:14:24:14:24 | 1 | | AccessorCalls.cs:14:24:14:24 | 1 | AccessorCalls.cs:14:19:14:22 | this access | -| AccessorCalls.cs:15:9:15:12 | this access | AccessorCalls.cs:15:9:15:24 | ...; | -| AccessorCalls.cs:15:9:15:18 | access to event Event | AccessorCalls.cs:15:23:15:23 | access to parameter e | -| AccessorCalls.cs:15:9:15:23 | ... += ... | AccessorCalls.cs:15:9:15:18 | access to event Event | -| AccessorCalls.cs:15:9:15:24 | ...; | AccessorCalls.cs:14:9:14:25 | ... = ... | -| AccessorCalls.cs:15:23:15:23 | access to parameter e | AccessorCalls.cs:15:9:15:12 | this access | -| AccessorCalls.cs:16:9:16:12 | this access | AccessorCalls.cs:16:9:16:24 | ...; | -| AccessorCalls.cs:16:9:16:18 | access to event Event | AccessorCalls.cs:16:23:16:23 | access to parameter e | -| AccessorCalls.cs:16:9:16:23 | ... -= ... | AccessorCalls.cs:16:9:16:18 | access to event Event | -| AccessorCalls.cs:16:9:16:24 | ...; | AccessorCalls.cs:15:9:15:23 | ... += ... | -| AccessorCalls.cs:16:23:16:23 | access to parameter e | AccessorCalls.cs:16:9:16:12 | this access | -| AccessorCalls.cs:19:10:19:11 | exit M2 | AccessorCalls.cs:19:10:19:11 | exit M2 (normal) | -| AccessorCalls.cs:19:10:19:11 | exit M2 (normal) | AccessorCalls.cs:25:9:25:25 | ... -= ... | -| AccessorCalls.cs:20:5:26:5 | {...} | AccessorCalls.cs:19:10:19:11 | enter M2 | -| AccessorCalls.cs:21:9:21:12 | this access | AccessorCalls.cs:21:9:21:36 | ...; | +| AccessorCalls.cs:15:9:15:12 | this access | AccessorCalls.cs:15:9:15:18 | Before access to event Event | +| AccessorCalls.cs:15:9:15:18 | After access to event Event | AccessorCalls.cs:15:9:15:18 | access to event Event | +| AccessorCalls.cs:15:9:15:18 | Before access to event Event | AccessorCalls.cs:15:9:15:23 | Before ... += ... | +| AccessorCalls.cs:15:9:15:18 | access to event Event | AccessorCalls.cs:15:9:15:12 | this access | +| AccessorCalls.cs:15:9:15:23 | ... += ... | AccessorCalls.cs:15:23:15:23 | access to parameter e | +| AccessorCalls.cs:15:9:15:23 | After ... += ... | AccessorCalls.cs:15:9:15:23 | ... += ... | +| AccessorCalls.cs:15:9:15:23 | Before ... += ... | AccessorCalls.cs:15:9:15:24 | ...; | +| AccessorCalls.cs:15:9:15:24 | ...; | AccessorCalls.cs:14:9:14:26 | After ...; | +| AccessorCalls.cs:15:9:15:24 | After ...; | AccessorCalls.cs:15:9:15:23 | After ... += ... | +| AccessorCalls.cs:15:23:15:23 | access to parameter e | AccessorCalls.cs:15:9:15:18 | After access to event Event | +| AccessorCalls.cs:16:9:16:12 | this access | AccessorCalls.cs:16:9:16:18 | Before access to event Event | +| AccessorCalls.cs:16:9:16:18 | After access to event Event | AccessorCalls.cs:16:9:16:18 | access to event Event | +| AccessorCalls.cs:16:9:16:18 | Before access to event Event | AccessorCalls.cs:16:9:16:23 | Before ... -= ... | +| AccessorCalls.cs:16:9:16:18 | access to event Event | AccessorCalls.cs:16:9:16:12 | this access | +| AccessorCalls.cs:16:9:16:23 | ... -= ... | AccessorCalls.cs:16:23:16:23 | access to parameter e | +| AccessorCalls.cs:16:9:16:23 | After ... -= ... | AccessorCalls.cs:16:9:16:23 | ... -= ... | +| AccessorCalls.cs:16:9:16:23 | Before ... -= ... | AccessorCalls.cs:16:9:16:24 | ...; | +| AccessorCalls.cs:16:9:16:24 | ...; | AccessorCalls.cs:15:9:15:24 | After ...; | +| AccessorCalls.cs:16:9:16:24 | After ...; | AccessorCalls.cs:16:9:16:23 | After ... -= ... | +| AccessorCalls.cs:16:23:16:23 | access to parameter e | AccessorCalls.cs:16:9:16:18 | After access to event Event | +| AccessorCalls.cs:19:10:19:11 | Exit | AccessorCalls.cs:19:10:19:11 | Normal Exit | +| AccessorCalls.cs:19:10:19:11 | Normal Exit | AccessorCalls.cs:20:5:26:5 | After {...} | +| AccessorCalls.cs:19:26:19:26 | e | AccessorCalls.cs:19:10:19:11 | Entry | +| AccessorCalls.cs:20:5:26:5 | After {...} | AccessorCalls.cs:25:9:25:26 | After ...; | +| AccessorCalls.cs:20:5:26:5 | {...} | AccessorCalls.cs:19:26:19:26 | e | +| AccessorCalls.cs:21:9:21:12 | this access | AccessorCalls.cs:21:9:21:14 | Before access to field x | +| AccessorCalls.cs:21:9:21:14 | After access to field x | AccessorCalls.cs:21:9:21:14 | access to field x | +| AccessorCalls.cs:21:9:21:14 | Before access to field x | AccessorCalls.cs:21:9:21:20 | Before access to field Field | | AccessorCalls.cs:21:9:21:14 | access to field x | AccessorCalls.cs:21:9:21:12 | this access | -| AccessorCalls.cs:21:9:21:20 | access to field Field | AccessorCalls.cs:21:24:21:35 | access to field Field | -| AccessorCalls.cs:21:9:21:35 | ... = ... | AccessorCalls.cs:21:9:21:20 | access to field Field | +| AccessorCalls.cs:21:9:21:20 | After access to field Field | AccessorCalls.cs:21:9:21:20 | access to field Field | +| AccessorCalls.cs:21:9:21:20 | Before access to field Field | AccessorCalls.cs:21:9:21:35 | Before ... = ... | +| AccessorCalls.cs:21:9:21:20 | access to field Field | AccessorCalls.cs:21:9:21:14 | After access to field x | +| AccessorCalls.cs:21:9:21:35 | ... = ... | AccessorCalls.cs:21:24:21:35 | After access to field Field | +| AccessorCalls.cs:21:9:21:35 | After ... = ... | AccessorCalls.cs:21:9:21:35 | ... = ... | +| AccessorCalls.cs:21:9:21:35 | Before ... = ... | AccessorCalls.cs:21:9:21:36 | ...; | | AccessorCalls.cs:21:9:21:36 | ...; | AccessorCalls.cs:20:5:26:5 | {...} | -| AccessorCalls.cs:21:24:21:27 | this access | AccessorCalls.cs:21:9:21:14 | access to field x | +| AccessorCalls.cs:21:9:21:36 | After ...; | AccessorCalls.cs:21:9:21:35 | After ... = ... | +| AccessorCalls.cs:21:24:21:27 | this access | AccessorCalls.cs:21:24:21:29 | Before access to field x | +| AccessorCalls.cs:21:24:21:29 | After access to field x | AccessorCalls.cs:21:24:21:29 | access to field x | +| AccessorCalls.cs:21:24:21:29 | Before access to field x | AccessorCalls.cs:21:24:21:35 | Before access to field Field | | AccessorCalls.cs:21:24:21:29 | access to field x | AccessorCalls.cs:21:24:21:27 | this access | -| AccessorCalls.cs:21:24:21:35 | access to field Field | AccessorCalls.cs:21:24:21:29 | access to field x | -| AccessorCalls.cs:22:9:22:12 | this access | AccessorCalls.cs:22:9:22:34 | ...; | +| AccessorCalls.cs:21:24:21:35 | After access to field Field | AccessorCalls.cs:21:24:21:35 | access to field Field | +| AccessorCalls.cs:21:24:21:35 | Before access to field Field | AccessorCalls.cs:21:9:21:20 | After access to field Field | +| AccessorCalls.cs:21:24:21:35 | access to field Field | AccessorCalls.cs:21:24:21:29 | After access to field x | +| AccessorCalls.cs:22:9:22:12 | this access | AccessorCalls.cs:22:9:22:14 | Before access to field x | +| AccessorCalls.cs:22:9:22:14 | After access to field x | AccessorCalls.cs:22:9:22:14 | access to field x | +| AccessorCalls.cs:22:9:22:14 | Before access to field x | AccessorCalls.cs:22:9:22:19 | Before access to property Prop | | AccessorCalls.cs:22:9:22:14 | access to field x | AccessorCalls.cs:22:9:22:12 | this access | -| AccessorCalls.cs:22:9:22:19 | access to property Prop | AccessorCalls.cs:22:23:22:33 | access to property Prop | -| AccessorCalls.cs:22:9:22:33 | ... = ... | AccessorCalls.cs:22:9:22:19 | access to property Prop | -| AccessorCalls.cs:22:9:22:34 | ...; | AccessorCalls.cs:21:9:21:35 | ... = ... | -| AccessorCalls.cs:22:23:22:26 | this access | AccessorCalls.cs:22:9:22:14 | access to field x | +| AccessorCalls.cs:22:9:22:19 | After access to property Prop | AccessorCalls.cs:22:9:22:19 | access to property Prop | +| AccessorCalls.cs:22:9:22:19 | Before access to property Prop | AccessorCalls.cs:22:9:22:33 | Before ... = ... | +| AccessorCalls.cs:22:9:22:19 | access to property Prop | AccessorCalls.cs:22:9:22:14 | After access to field x | +| AccessorCalls.cs:22:9:22:33 | ... = ... | AccessorCalls.cs:22:23:22:33 | After access to property Prop | +| AccessorCalls.cs:22:9:22:33 | After ... = ... | AccessorCalls.cs:22:9:22:33 | ... = ... | +| AccessorCalls.cs:22:9:22:33 | Before ... = ... | AccessorCalls.cs:22:9:22:34 | ...; | +| AccessorCalls.cs:22:9:22:34 | ...; | AccessorCalls.cs:21:9:21:36 | After ...; | +| AccessorCalls.cs:22:9:22:34 | After ...; | AccessorCalls.cs:22:9:22:33 | After ... = ... | +| AccessorCalls.cs:22:23:22:26 | this access | AccessorCalls.cs:22:23:22:28 | Before access to field x | +| AccessorCalls.cs:22:23:22:28 | After access to field x | AccessorCalls.cs:22:23:22:28 | access to field x | +| AccessorCalls.cs:22:23:22:28 | Before access to field x | AccessorCalls.cs:22:23:22:33 | Before access to property Prop | | AccessorCalls.cs:22:23:22:28 | access to field x | AccessorCalls.cs:22:23:22:26 | this access | -| AccessorCalls.cs:22:23:22:33 | access to property Prop | AccessorCalls.cs:22:23:22:28 | access to field x | -| AccessorCalls.cs:23:9:23:12 | this access | AccessorCalls.cs:23:9:23:30 | ...; | +| AccessorCalls.cs:22:23:22:33 | After access to property Prop | AccessorCalls.cs:22:23:22:33 | access to property Prop | +| AccessorCalls.cs:22:23:22:33 | Before access to property Prop | AccessorCalls.cs:22:9:22:19 | After access to property Prop | +| AccessorCalls.cs:22:23:22:33 | access to property Prop | AccessorCalls.cs:22:23:22:28 | After access to field x | +| AccessorCalls.cs:23:9:23:12 | this access | AccessorCalls.cs:23:9:23:14 | Before access to field x | +| AccessorCalls.cs:23:9:23:14 | After access to field x | AccessorCalls.cs:23:9:23:14 | access to field x | +| AccessorCalls.cs:23:9:23:14 | Before access to field x | AccessorCalls.cs:23:9:23:17 | Before access to indexer | | AccessorCalls.cs:23:9:23:14 | access to field x | AccessorCalls.cs:23:9:23:12 | this access | -| AccessorCalls.cs:23:9:23:17 | access to indexer | AccessorCalls.cs:23:21:23:29 | access to indexer | -| AccessorCalls.cs:23:9:23:29 | ... = ... | AccessorCalls.cs:23:9:23:17 | access to indexer | -| AccessorCalls.cs:23:9:23:30 | ...; | AccessorCalls.cs:22:9:22:33 | ... = ... | -| AccessorCalls.cs:23:16:23:16 | 0 | AccessorCalls.cs:23:9:23:14 | access to field x | -| AccessorCalls.cs:23:21:23:24 | this access | AccessorCalls.cs:23:16:23:16 | 0 | +| AccessorCalls.cs:23:9:23:17 | After access to indexer | AccessorCalls.cs:23:9:23:17 | access to indexer | +| AccessorCalls.cs:23:9:23:17 | Before access to indexer | AccessorCalls.cs:23:9:23:29 | Before ... = ... | +| AccessorCalls.cs:23:9:23:17 | access to indexer | AccessorCalls.cs:23:16:23:16 | 0 | +| AccessorCalls.cs:23:9:23:29 | ... = ... | AccessorCalls.cs:23:21:23:29 | After access to indexer | +| AccessorCalls.cs:23:9:23:29 | After ... = ... | AccessorCalls.cs:23:9:23:29 | ... = ... | +| AccessorCalls.cs:23:9:23:29 | Before ... = ... | AccessorCalls.cs:23:9:23:30 | ...; | +| AccessorCalls.cs:23:9:23:30 | ...; | AccessorCalls.cs:22:9:22:34 | After ...; | +| AccessorCalls.cs:23:9:23:30 | After ...; | AccessorCalls.cs:23:9:23:29 | After ... = ... | +| AccessorCalls.cs:23:16:23:16 | 0 | AccessorCalls.cs:23:9:23:14 | After access to field x | +| AccessorCalls.cs:23:21:23:24 | this access | AccessorCalls.cs:23:21:23:26 | Before access to field x | +| AccessorCalls.cs:23:21:23:26 | After access to field x | AccessorCalls.cs:23:21:23:26 | access to field x | +| AccessorCalls.cs:23:21:23:26 | Before access to field x | AccessorCalls.cs:23:21:23:29 | Before access to indexer | | AccessorCalls.cs:23:21:23:26 | access to field x | AccessorCalls.cs:23:21:23:24 | this access | +| AccessorCalls.cs:23:21:23:29 | After access to indexer | AccessorCalls.cs:23:21:23:29 | access to indexer | +| AccessorCalls.cs:23:21:23:29 | Before access to indexer | AccessorCalls.cs:23:9:23:17 | After access to indexer | | AccessorCalls.cs:23:21:23:29 | access to indexer | AccessorCalls.cs:23:28:23:28 | 1 | -| AccessorCalls.cs:23:28:23:28 | 1 | AccessorCalls.cs:23:21:23:26 | access to field x | -| AccessorCalls.cs:24:9:24:12 | this access | AccessorCalls.cs:24:9:24:26 | ...; | +| AccessorCalls.cs:23:28:23:28 | 1 | AccessorCalls.cs:23:21:23:26 | After access to field x | +| AccessorCalls.cs:24:9:24:12 | this access | AccessorCalls.cs:24:9:24:14 | Before access to field x | +| AccessorCalls.cs:24:9:24:14 | After access to field x | AccessorCalls.cs:24:9:24:14 | access to field x | +| AccessorCalls.cs:24:9:24:14 | Before access to field x | AccessorCalls.cs:24:9:24:20 | Before access to event Event | | AccessorCalls.cs:24:9:24:14 | access to field x | AccessorCalls.cs:24:9:24:12 | this access | -| AccessorCalls.cs:24:9:24:20 | access to event Event | AccessorCalls.cs:24:25:24:25 | access to parameter e | -| AccessorCalls.cs:24:9:24:25 | ... += ... | AccessorCalls.cs:24:9:24:20 | access to event Event | -| AccessorCalls.cs:24:9:24:26 | ...; | AccessorCalls.cs:23:9:23:29 | ... = ... | -| AccessorCalls.cs:24:25:24:25 | access to parameter e | AccessorCalls.cs:24:9:24:14 | access to field x | -| AccessorCalls.cs:25:9:25:12 | this access | AccessorCalls.cs:25:9:25:26 | ...; | +| AccessorCalls.cs:24:9:24:20 | After access to event Event | AccessorCalls.cs:24:9:24:20 | access to event Event | +| AccessorCalls.cs:24:9:24:20 | Before access to event Event | AccessorCalls.cs:24:9:24:25 | Before ... += ... | +| AccessorCalls.cs:24:9:24:20 | access to event Event | AccessorCalls.cs:24:9:24:14 | After access to field x | +| AccessorCalls.cs:24:9:24:25 | ... += ... | AccessorCalls.cs:24:25:24:25 | access to parameter e | +| AccessorCalls.cs:24:9:24:25 | After ... += ... | AccessorCalls.cs:24:9:24:25 | ... += ... | +| AccessorCalls.cs:24:9:24:25 | Before ... += ... | AccessorCalls.cs:24:9:24:26 | ...; | +| AccessorCalls.cs:24:9:24:26 | ...; | AccessorCalls.cs:23:9:23:30 | After ...; | +| AccessorCalls.cs:24:9:24:26 | After ...; | AccessorCalls.cs:24:9:24:25 | After ... += ... | +| AccessorCalls.cs:24:25:24:25 | access to parameter e | AccessorCalls.cs:24:9:24:20 | After access to event Event | +| AccessorCalls.cs:25:9:25:12 | this access | AccessorCalls.cs:25:9:25:14 | Before access to field x | +| AccessorCalls.cs:25:9:25:14 | After access to field x | AccessorCalls.cs:25:9:25:14 | access to field x | +| AccessorCalls.cs:25:9:25:14 | Before access to field x | AccessorCalls.cs:25:9:25:20 | Before access to event Event | | AccessorCalls.cs:25:9:25:14 | access to field x | AccessorCalls.cs:25:9:25:12 | this access | -| AccessorCalls.cs:25:9:25:20 | access to event Event | AccessorCalls.cs:25:25:25:25 | access to parameter e | -| AccessorCalls.cs:25:9:25:25 | ... -= ... | AccessorCalls.cs:25:9:25:20 | access to event Event | -| AccessorCalls.cs:25:9:25:26 | ...; | AccessorCalls.cs:24:9:24:25 | ... += ... | -| AccessorCalls.cs:25:25:25:25 | access to parameter e | AccessorCalls.cs:25:9:25:14 | access to field x | -| AccessorCalls.cs:28:10:28:11 | exit M3 | AccessorCalls.cs:28:10:28:11 | exit M3 (normal) | -| AccessorCalls.cs:28:10:28:11 | exit M3 (normal) | AccessorCalls.cs:32:9:32:17 | ...++ | -| AccessorCalls.cs:29:5:33:5 | {...} | AccessorCalls.cs:28:10:28:11 | enter M3 | -| AccessorCalls.cs:30:9:30:12 | this access | AccessorCalls.cs:30:9:30:21 | ...; | +| AccessorCalls.cs:25:9:25:20 | After access to event Event | AccessorCalls.cs:25:9:25:20 | access to event Event | +| AccessorCalls.cs:25:9:25:20 | Before access to event Event | AccessorCalls.cs:25:9:25:25 | Before ... -= ... | +| AccessorCalls.cs:25:9:25:20 | access to event Event | AccessorCalls.cs:25:9:25:14 | After access to field x | +| AccessorCalls.cs:25:9:25:25 | ... -= ... | AccessorCalls.cs:25:25:25:25 | access to parameter e | +| AccessorCalls.cs:25:9:25:25 | After ... -= ... | AccessorCalls.cs:25:9:25:25 | ... -= ... | +| AccessorCalls.cs:25:9:25:25 | Before ... -= ... | AccessorCalls.cs:25:9:25:26 | ...; | +| AccessorCalls.cs:25:9:25:26 | ...; | AccessorCalls.cs:24:9:24:26 | After ...; | +| AccessorCalls.cs:25:9:25:26 | After ...; | AccessorCalls.cs:25:9:25:25 | After ... -= ... | +| AccessorCalls.cs:25:25:25:25 | access to parameter e | AccessorCalls.cs:25:9:25:20 | After access to event Event | +| AccessorCalls.cs:28:10:28:11 | Exit | AccessorCalls.cs:28:10:28:11 | Normal Exit | +| AccessorCalls.cs:28:10:28:11 | Normal Exit | AccessorCalls.cs:29:5:33:5 | After {...} | +| AccessorCalls.cs:29:5:33:5 | After {...} | AccessorCalls.cs:32:9:32:18 | After ...; | +| AccessorCalls.cs:29:5:33:5 | {...} | AccessorCalls.cs:28:10:28:11 | Entry | +| AccessorCalls.cs:30:9:30:12 | this access | AccessorCalls.cs:30:9:30:18 | Before access to field Field | +| AccessorCalls.cs:30:9:30:18 | After access to field Field | AccessorCalls.cs:30:9:30:18 | access to field Field | +| AccessorCalls.cs:30:9:30:18 | Before access to field Field | AccessorCalls.cs:30:9:30:20 | Before ...++ | | AccessorCalls.cs:30:9:30:18 | access to field Field | AccessorCalls.cs:30:9:30:12 | this access | -| AccessorCalls.cs:30:9:30:20 | ...++ | AccessorCalls.cs:30:9:30:18 | access to field Field | +| AccessorCalls.cs:30:9:30:20 | ...++ | AccessorCalls.cs:30:9:30:18 | After access to field Field | +| AccessorCalls.cs:30:9:30:20 | After ...++ | AccessorCalls.cs:30:9:30:20 | ...++ | +| AccessorCalls.cs:30:9:30:20 | Before ...++ | AccessorCalls.cs:30:9:30:21 | ...; | | AccessorCalls.cs:30:9:30:21 | ...; | AccessorCalls.cs:29:5:33:5 | {...} | -| AccessorCalls.cs:31:9:31:12 | this access | AccessorCalls.cs:31:9:31:20 | ...; | +| AccessorCalls.cs:30:9:30:21 | After ...; | AccessorCalls.cs:30:9:30:20 | After ...++ | +| AccessorCalls.cs:31:9:31:12 | this access | AccessorCalls.cs:31:9:31:17 | Before access to property Prop | +| AccessorCalls.cs:31:9:31:17 | After access to property Prop | AccessorCalls.cs:31:9:31:17 | access to property Prop | +| AccessorCalls.cs:31:9:31:17 | Before access to property Prop | AccessorCalls.cs:31:9:31:19 | Before ...++ | | AccessorCalls.cs:31:9:31:17 | access to property Prop | AccessorCalls.cs:31:9:31:12 | this access | -| AccessorCalls.cs:31:9:31:19 | ...++ | AccessorCalls.cs:31:9:31:17 | access to property Prop | -| AccessorCalls.cs:31:9:31:20 | ...; | AccessorCalls.cs:30:9:30:20 | ...++ | -| AccessorCalls.cs:32:9:32:12 | this access | AccessorCalls.cs:32:9:32:18 | ...; | +| AccessorCalls.cs:31:9:31:19 | ...++ | AccessorCalls.cs:31:9:31:17 | After access to property Prop | +| AccessorCalls.cs:31:9:31:19 | After ...++ | AccessorCalls.cs:31:9:31:19 | ...++ | +| AccessorCalls.cs:31:9:31:19 | Before ...++ | AccessorCalls.cs:31:9:31:20 | ...; | +| AccessorCalls.cs:31:9:31:20 | ...; | AccessorCalls.cs:30:9:30:21 | After ...; | +| AccessorCalls.cs:31:9:31:20 | After ...; | AccessorCalls.cs:31:9:31:19 | After ...++ | +| AccessorCalls.cs:32:9:32:12 | this access | AccessorCalls.cs:32:9:32:15 | Before access to indexer | +| AccessorCalls.cs:32:9:32:15 | After access to indexer | AccessorCalls.cs:32:9:32:15 | access to indexer | +| AccessorCalls.cs:32:9:32:15 | Before access to indexer | AccessorCalls.cs:32:9:32:17 | Before ...++ | | AccessorCalls.cs:32:9:32:15 | access to indexer | AccessorCalls.cs:32:14:32:14 | 0 | -| AccessorCalls.cs:32:9:32:17 | ...++ | AccessorCalls.cs:32:9:32:15 | access to indexer | -| AccessorCalls.cs:32:9:32:18 | ...; | AccessorCalls.cs:31:9:31:19 | ...++ | +| AccessorCalls.cs:32:9:32:17 | ...++ | AccessorCalls.cs:32:9:32:15 | After access to indexer | +| AccessorCalls.cs:32:9:32:17 | After ...++ | AccessorCalls.cs:32:9:32:17 | ...++ | +| AccessorCalls.cs:32:9:32:17 | Before ...++ | AccessorCalls.cs:32:9:32:18 | ...; | +| AccessorCalls.cs:32:9:32:18 | ...; | AccessorCalls.cs:31:9:31:20 | After ...; | +| AccessorCalls.cs:32:9:32:18 | After ...; | AccessorCalls.cs:32:9:32:17 | After ...++ | | AccessorCalls.cs:32:14:32:14 | 0 | AccessorCalls.cs:32:9:32:12 | this access | -| AccessorCalls.cs:35:10:35:11 | exit M4 | AccessorCalls.cs:35:10:35:11 | exit M4 (normal) | -| AccessorCalls.cs:35:10:35:11 | exit M4 (normal) | AccessorCalls.cs:39:9:39:19 | ...++ | -| AccessorCalls.cs:36:5:40:5 | {...} | AccessorCalls.cs:35:10:35:11 | enter M4 | -| AccessorCalls.cs:37:9:37:12 | this access | AccessorCalls.cs:37:9:37:23 | ...; | +| AccessorCalls.cs:35:10:35:11 | Exit | AccessorCalls.cs:35:10:35:11 | Normal Exit | +| AccessorCalls.cs:35:10:35:11 | Normal Exit | AccessorCalls.cs:36:5:40:5 | After {...} | +| AccessorCalls.cs:36:5:40:5 | After {...} | AccessorCalls.cs:39:9:39:20 | After ...; | +| AccessorCalls.cs:36:5:40:5 | {...} | AccessorCalls.cs:35:10:35:11 | Entry | +| AccessorCalls.cs:37:9:37:12 | this access | AccessorCalls.cs:37:9:37:14 | Before access to field x | +| AccessorCalls.cs:37:9:37:14 | After access to field x | AccessorCalls.cs:37:9:37:14 | access to field x | +| AccessorCalls.cs:37:9:37:14 | Before access to field x | AccessorCalls.cs:37:9:37:20 | Before access to field Field | | AccessorCalls.cs:37:9:37:14 | access to field x | AccessorCalls.cs:37:9:37:12 | this access | -| AccessorCalls.cs:37:9:37:20 | access to field Field | AccessorCalls.cs:37:9:37:14 | access to field x | -| AccessorCalls.cs:37:9:37:22 | ...++ | AccessorCalls.cs:37:9:37:20 | access to field Field | +| AccessorCalls.cs:37:9:37:20 | After access to field Field | AccessorCalls.cs:37:9:37:20 | access to field Field | +| AccessorCalls.cs:37:9:37:20 | Before access to field Field | AccessorCalls.cs:37:9:37:22 | Before ...++ | +| AccessorCalls.cs:37:9:37:20 | access to field Field | AccessorCalls.cs:37:9:37:14 | After access to field x | +| AccessorCalls.cs:37:9:37:22 | ...++ | AccessorCalls.cs:37:9:37:20 | After access to field Field | +| AccessorCalls.cs:37:9:37:22 | After ...++ | AccessorCalls.cs:37:9:37:22 | ...++ | +| AccessorCalls.cs:37:9:37:22 | Before ...++ | AccessorCalls.cs:37:9:37:23 | ...; | | AccessorCalls.cs:37:9:37:23 | ...; | AccessorCalls.cs:36:5:40:5 | {...} | -| AccessorCalls.cs:38:9:38:12 | this access | AccessorCalls.cs:38:9:38:22 | ...; | +| AccessorCalls.cs:37:9:37:23 | After ...; | AccessorCalls.cs:37:9:37:22 | After ...++ | +| AccessorCalls.cs:38:9:38:12 | this access | AccessorCalls.cs:38:9:38:14 | Before access to field x | +| AccessorCalls.cs:38:9:38:14 | After access to field x | AccessorCalls.cs:38:9:38:14 | access to field x | +| AccessorCalls.cs:38:9:38:14 | Before access to field x | AccessorCalls.cs:38:9:38:19 | Before access to property Prop | | AccessorCalls.cs:38:9:38:14 | access to field x | AccessorCalls.cs:38:9:38:12 | this access | -| AccessorCalls.cs:38:9:38:19 | access to property Prop | AccessorCalls.cs:38:9:38:14 | access to field x | -| AccessorCalls.cs:38:9:38:21 | ...++ | AccessorCalls.cs:38:9:38:19 | access to property Prop | -| AccessorCalls.cs:38:9:38:22 | ...; | AccessorCalls.cs:37:9:37:22 | ...++ | -| AccessorCalls.cs:39:9:39:12 | this access | AccessorCalls.cs:39:9:39:20 | ...; | +| AccessorCalls.cs:38:9:38:19 | After access to property Prop | AccessorCalls.cs:38:9:38:19 | access to property Prop | +| AccessorCalls.cs:38:9:38:19 | Before access to property Prop | AccessorCalls.cs:38:9:38:21 | Before ...++ | +| AccessorCalls.cs:38:9:38:19 | access to property Prop | AccessorCalls.cs:38:9:38:14 | After access to field x | +| AccessorCalls.cs:38:9:38:21 | ...++ | AccessorCalls.cs:38:9:38:19 | After access to property Prop | +| AccessorCalls.cs:38:9:38:21 | After ...++ | AccessorCalls.cs:38:9:38:21 | ...++ | +| AccessorCalls.cs:38:9:38:21 | Before ...++ | AccessorCalls.cs:38:9:38:22 | ...; | +| AccessorCalls.cs:38:9:38:22 | ...; | AccessorCalls.cs:37:9:37:23 | After ...; | +| AccessorCalls.cs:38:9:38:22 | After ...; | AccessorCalls.cs:38:9:38:21 | After ...++ | +| AccessorCalls.cs:39:9:39:12 | this access | AccessorCalls.cs:39:9:39:14 | Before access to field x | +| AccessorCalls.cs:39:9:39:14 | After access to field x | AccessorCalls.cs:39:9:39:14 | access to field x | +| AccessorCalls.cs:39:9:39:14 | Before access to field x | AccessorCalls.cs:39:9:39:17 | Before access to indexer | | AccessorCalls.cs:39:9:39:14 | access to field x | AccessorCalls.cs:39:9:39:12 | this access | +| AccessorCalls.cs:39:9:39:17 | After access to indexer | AccessorCalls.cs:39:9:39:17 | access to indexer | +| AccessorCalls.cs:39:9:39:17 | Before access to indexer | AccessorCalls.cs:39:9:39:19 | Before ...++ | | AccessorCalls.cs:39:9:39:17 | access to indexer | AccessorCalls.cs:39:16:39:16 | 0 | -| AccessorCalls.cs:39:9:39:19 | ...++ | AccessorCalls.cs:39:9:39:17 | access to indexer | -| AccessorCalls.cs:39:9:39:20 | ...; | AccessorCalls.cs:38:9:38:21 | ...++ | -| AccessorCalls.cs:39:16:39:16 | 0 | AccessorCalls.cs:39:9:39:14 | access to field x | -| AccessorCalls.cs:42:10:42:11 | exit M5 | AccessorCalls.cs:42:10:42:11 | exit M5 (normal) | -| AccessorCalls.cs:42:10:42:11 | exit M5 (normal) | AccessorCalls.cs:46:9:46:26 | ... += ... | -| AccessorCalls.cs:43:5:47:5 | {...} | AccessorCalls.cs:42:10:42:11 | enter M5 | -| AccessorCalls.cs:44:9:44:12 | this access | AccessorCalls.cs:44:9:44:33 | ...; | +| AccessorCalls.cs:39:9:39:19 | ...++ | AccessorCalls.cs:39:9:39:17 | After access to indexer | +| AccessorCalls.cs:39:9:39:19 | After ...++ | AccessorCalls.cs:39:9:39:19 | ...++ | +| AccessorCalls.cs:39:9:39:19 | Before ...++ | AccessorCalls.cs:39:9:39:20 | ...; | +| AccessorCalls.cs:39:9:39:20 | ...; | AccessorCalls.cs:38:9:38:22 | After ...; | +| AccessorCalls.cs:39:9:39:20 | After ...; | AccessorCalls.cs:39:9:39:19 | After ...++ | +| AccessorCalls.cs:39:16:39:16 | 0 | AccessorCalls.cs:39:9:39:14 | After access to field x | +| AccessorCalls.cs:42:10:42:11 | Exit | AccessorCalls.cs:42:10:42:11 | Normal Exit | +| AccessorCalls.cs:42:10:42:11 | Normal Exit | AccessorCalls.cs:43:5:47:5 | After {...} | +| AccessorCalls.cs:43:5:47:5 | After {...} | AccessorCalls.cs:46:9:46:27 | After ...; | +| AccessorCalls.cs:43:5:47:5 | {...} | AccessorCalls.cs:42:10:42:11 | Entry | +| AccessorCalls.cs:44:9:44:12 | this access | AccessorCalls.cs:44:9:44:18 | Before access to field Field | +| AccessorCalls.cs:44:9:44:18 | After access to field Field | AccessorCalls.cs:44:9:44:18 | access to field Field | +| AccessorCalls.cs:44:9:44:18 | Before access to field Field | AccessorCalls.cs:44:9:44:32 | Before ... += ... | | AccessorCalls.cs:44:9:44:18 | access to field Field | AccessorCalls.cs:44:9:44:12 | this access | -| AccessorCalls.cs:44:9:44:32 | ... += ... | AccessorCalls.cs:44:23:44:32 | access to field Field | +| AccessorCalls.cs:44:9:44:32 | ... += ... | AccessorCalls.cs:44:23:44:32 | After access to field Field | +| AccessorCalls.cs:44:9:44:32 | After ... += ... | AccessorCalls.cs:44:9:44:32 | ... += ... | +| AccessorCalls.cs:44:9:44:32 | Before ... += ... | AccessorCalls.cs:44:9:44:33 | ...; | | AccessorCalls.cs:44:9:44:33 | ...; | AccessorCalls.cs:43:5:47:5 | {...} | -| AccessorCalls.cs:44:23:44:26 | this access | AccessorCalls.cs:44:9:44:18 | access to field Field | +| AccessorCalls.cs:44:9:44:33 | After ...; | AccessorCalls.cs:44:9:44:32 | After ... += ... | +| AccessorCalls.cs:44:23:44:26 | this access | AccessorCalls.cs:44:23:44:32 | Before access to field Field | +| AccessorCalls.cs:44:23:44:32 | After access to field Field | AccessorCalls.cs:44:23:44:32 | access to field Field | +| AccessorCalls.cs:44:23:44:32 | Before access to field Field | AccessorCalls.cs:44:9:44:18 | After access to field Field | | AccessorCalls.cs:44:23:44:32 | access to field Field | AccessorCalls.cs:44:23:44:26 | this access | -| AccessorCalls.cs:45:9:45:12 | this access | AccessorCalls.cs:45:9:45:31 | ...; | +| AccessorCalls.cs:45:9:45:12 | this access | AccessorCalls.cs:45:9:45:17 | Before access to property Prop | +| AccessorCalls.cs:45:9:45:17 | After access to property Prop | AccessorCalls.cs:45:9:45:17 | access to property Prop | +| AccessorCalls.cs:45:9:45:17 | Before access to property Prop | AccessorCalls.cs:45:9:45:30 | Before ... += ... | | AccessorCalls.cs:45:9:45:17 | access to property Prop | AccessorCalls.cs:45:9:45:12 | this access | -| AccessorCalls.cs:45:9:45:30 | ... += ... | AccessorCalls.cs:45:22:45:30 | access to property Prop | -| AccessorCalls.cs:45:9:45:31 | ...; | AccessorCalls.cs:44:9:44:32 | ... += ... | -| AccessorCalls.cs:45:22:45:25 | this access | AccessorCalls.cs:45:9:45:17 | access to property Prop | +| AccessorCalls.cs:45:9:45:30 | ... += ... | AccessorCalls.cs:45:22:45:30 | After access to property Prop | +| AccessorCalls.cs:45:9:45:30 | After ... += ... | AccessorCalls.cs:45:9:45:30 | ... += ... | +| AccessorCalls.cs:45:9:45:30 | Before ... += ... | AccessorCalls.cs:45:9:45:31 | ...; | +| AccessorCalls.cs:45:9:45:31 | ...; | AccessorCalls.cs:44:9:44:33 | After ...; | +| AccessorCalls.cs:45:9:45:31 | After ...; | AccessorCalls.cs:45:9:45:30 | After ... += ... | +| AccessorCalls.cs:45:22:45:25 | this access | AccessorCalls.cs:45:22:45:30 | Before access to property Prop | +| AccessorCalls.cs:45:22:45:30 | After access to property Prop | AccessorCalls.cs:45:22:45:30 | access to property Prop | +| AccessorCalls.cs:45:22:45:30 | Before access to property Prop | AccessorCalls.cs:45:9:45:17 | After access to property Prop | | AccessorCalls.cs:45:22:45:30 | access to property Prop | AccessorCalls.cs:45:22:45:25 | this access | -| AccessorCalls.cs:46:9:46:12 | this access | AccessorCalls.cs:46:9:46:27 | ...; | +| AccessorCalls.cs:46:9:46:12 | this access | AccessorCalls.cs:46:9:46:15 | Before access to indexer | +| AccessorCalls.cs:46:9:46:15 | After access to indexer | AccessorCalls.cs:46:9:46:15 | access to indexer | +| AccessorCalls.cs:46:9:46:15 | Before access to indexer | AccessorCalls.cs:46:9:46:26 | Before ... += ... | | AccessorCalls.cs:46:9:46:15 | access to indexer | AccessorCalls.cs:46:14:46:14 | 0 | -| AccessorCalls.cs:46:9:46:26 | ... += ... | AccessorCalls.cs:46:20:46:26 | access to indexer | -| AccessorCalls.cs:46:9:46:27 | ...; | AccessorCalls.cs:45:9:45:30 | ... += ... | +| AccessorCalls.cs:46:9:46:26 | ... += ... | AccessorCalls.cs:46:20:46:26 | After access to indexer | +| AccessorCalls.cs:46:9:46:26 | After ... += ... | AccessorCalls.cs:46:9:46:26 | ... += ... | +| AccessorCalls.cs:46:9:46:26 | Before ... += ... | AccessorCalls.cs:46:9:46:27 | ...; | +| AccessorCalls.cs:46:9:46:27 | ...; | AccessorCalls.cs:45:9:45:31 | After ...; | +| AccessorCalls.cs:46:9:46:27 | After ...; | AccessorCalls.cs:46:9:46:26 | After ... += ... | | AccessorCalls.cs:46:14:46:14 | 0 | AccessorCalls.cs:46:9:46:12 | this access | -| AccessorCalls.cs:46:20:46:23 | this access | AccessorCalls.cs:46:9:46:15 | access to indexer | +| AccessorCalls.cs:46:20:46:23 | this access | AccessorCalls.cs:46:20:46:26 | Before access to indexer | +| AccessorCalls.cs:46:20:46:26 | After access to indexer | AccessorCalls.cs:46:20:46:26 | access to indexer | +| AccessorCalls.cs:46:20:46:26 | Before access to indexer | AccessorCalls.cs:46:9:46:15 | After access to indexer | | AccessorCalls.cs:46:20:46:26 | access to indexer | AccessorCalls.cs:46:25:46:25 | 0 | | AccessorCalls.cs:46:25:46:25 | 0 | AccessorCalls.cs:46:20:46:23 | this access | -| AccessorCalls.cs:49:10:49:11 | exit M6 | AccessorCalls.cs:49:10:49:11 | exit M6 (normal) | -| AccessorCalls.cs:49:10:49:11 | exit M6 (normal) | AccessorCalls.cs:53:9:53:30 | ... += ... | -| AccessorCalls.cs:50:5:54:5 | {...} | AccessorCalls.cs:49:10:49:11 | enter M6 | -| AccessorCalls.cs:51:9:51:12 | this access | AccessorCalls.cs:51:9:51:37 | ...; | +| AccessorCalls.cs:49:10:49:11 | Exit | AccessorCalls.cs:49:10:49:11 | Normal Exit | +| AccessorCalls.cs:49:10:49:11 | Normal Exit | AccessorCalls.cs:50:5:54:5 | After {...} | +| AccessorCalls.cs:50:5:54:5 | After {...} | AccessorCalls.cs:53:9:53:31 | After ...; | +| AccessorCalls.cs:50:5:54:5 | {...} | AccessorCalls.cs:49:10:49:11 | Entry | +| AccessorCalls.cs:51:9:51:12 | this access | AccessorCalls.cs:51:9:51:14 | Before access to field x | +| AccessorCalls.cs:51:9:51:14 | After access to field x | AccessorCalls.cs:51:9:51:14 | access to field x | +| AccessorCalls.cs:51:9:51:14 | Before access to field x | AccessorCalls.cs:51:9:51:20 | Before access to field Field | | AccessorCalls.cs:51:9:51:14 | access to field x | AccessorCalls.cs:51:9:51:12 | this access | -| AccessorCalls.cs:51:9:51:20 | access to field Field | AccessorCalls.cs:51:9:51:14 | access to field x | -| AccessorCalls.cs:51:9:51:36 | ... += ... | AccessorCalls.cs:51:25:51:36 | access to field Field | +| AccessorCalls.cs:51:9:51:20 | After access to field Field | AccessorCalls.cs:51:9:51:20 | access to field Field | +| AccessorCalls.cs:51:9:51:20 | Before access to field Field | AccessorCalls.cs:51:9:51:36 | Before ... += ... | +| AccessorCalls.cs:51:9:51:20 | access to field Field | AccessorCalls.cs:51:9:51:14 | After access to field x | +| AccessorCalls.cs:51:9:51:36 | ... += ... | AccessorCalls.cs:51:25:51:36 | After access to field Field | +| AccessorCalls.cs:51:9:51:36 | After ... += ... | AccessorCalls.cs:51:9:51:36 | ... += ... | +| AccessorCalls.cs:51:9:51:36 | Before ... += ... | AccessorCalls.cs:51:9:51:37 | ...; | | AccessorCalls.cs:51:9:51:37 | ...; | AccessorCalls.cs:50:5:54:5 | {...} | -| AccessorCalls.cs:51:25:51:28 | this access | AccessorCalls.cs:51:9:51:20 | access to field Field | +| AccessorCalls.cs:51:9:51:37 | After ...; | AccessorCalls.cs:51:9:51:36 | After ... += ... | +| AccessorCalls.cs:51:25:51:28 | this access | AccessorCalls.cs:51:25:51:30 | Before access to field x | +| AccessorCalls.cs:51:25:51:30 | After access to field x | AccessorCalls.cs:51:25:51:30 | access to field x | +| AccessorCalls.cs:51:25:51:30 | Before access to field x | AccessorCalls.cs:51:25:51:36 | Before access to field Field | | AccessorCalls.cs:51:25:51:30 | access to field x | AccessorCalls.cs:51:25:51:28 | this access | -| AccessorCalls.cs:51:25:51:36 | access to field Field | AccessorCalls.cs:51:25:51:30 | access to field x | -| AccessorCalls.cs:52:9:52:12 | this access | AccessorCalls.cs:52:9:52:35 | ...; | +| AccessorCalls.cs:51:25:51:36 | After access to field Field | AccessorCalls.cs:51:25:51:36 | access to field Field | +| AccessorCalls.cs:51:25:51:36 | Before access to field Field | AccessorCalls.cs:51:9:51:20 | After access to field Field | +| AccessorCalls.cs:51:25:51:36 | access to field Field | AccessorCalls.cs:51:25:51:30 | After access to field x | +| AccessorCalls.cs:52:9:52:12 | this access | AccessorCalls.cs:52:9:52:14 | Before access to field x | +| AccessorCalls.cs:52:9:52:14 | After access to field x | AccessorCalls.cs:52:9:52:14 | access to field x | +| AccessorCalls.cs:52:9:52:14 | Before access to field x | AccessorCalls.cs:52:9:52:19 | Before access to property Prop | | AccessorCalls.cs:52:9:52:14 | access to field x | AccessorCalls.cs:52:9:52:12 | this access | -| AccessorCalls.cs:52:9:52:19 | access to property Prop | AccessorCalls.cs:52:9:52:14 | access to field x | -| AccessorCalls.cs:52:9:52:34 | ... += ... | AccessorCalls.cs:52:24:52:34 | access to property Prop | -| AccessorCalls.cs:52:9:52:35 | ...; | AccessorCalls.cs:51:9:51:36 | ... += ... | -| AccessorCalls.cs:52:24:52:27 | this access | AccessorCalls.cs:52:9:52:19 | access to property Prop | +| AccessorCalls.cs:52:9:52:19 | After access to property Prop | AccessorCalls.cs:52:9:52:19 | access to property Prop | +| AccessorCalls.cs:52:9:52:19 | Before access to property Prop | AccessorCalls.cs:52:9:52:34 | Before ... += ... | +| AccessorCalls.cs:52:9:52:19 | access to property Prop | AccessorCalls.cs:52:9:52:14 | After access to field x | +| AccessorCalls.cs:52:9:52:34 | ... += ... | AccessorCalls.cs:52:24:52:34 | After access to property Prop | +| AccessorCalls.cs:52:9:52:34 | After ... += ... | AccessorCalls.cs:52:9:52:34 | ... += ... | +| AccessorCalls.cs:52:9:52:34 | Before ... += ... | AccessorCalls.cs:52:9:52:35 | ...; | +| AccessorCalls.cs:52:9:52:35 | ...; | AccessorCalls.cs:51:9:51:37 | After ...; | +| AccessorCalls.cs:52:9:52:35 | After ...; | AccessorCalls.cs:52:9:52:34 | After ... += ... | +| AccessorCalls.cs:52:24:52:27 | this access | AccessorCalls.cs:52:24:52:29 | Before access to field x | +| AccessorCalls.cs:52:24:52:29 | After access to field x | AccessorCalls.cs:52:24:52:29 | access to field x | +| AccessorCalls.cs:52:24:52:29 | Before access to field x | AccessorCalls.cs:52:24:52:34 | Before access to property Prop | | AccessorCalls.cs:52:24:52:29 | access to field x | AccessorCalls.cs:52:24:52:27 | this access | -| AccessorCalls.cs:52:24:52:34 | access to property Prop | AccessorCalls.cs:52:24:52:29 | access to field x | -| AccessorCalls.cs:53:9:53:12 | this access | AccessorCalls.cs:53:9:53:31 | ...; | +| AccessorCalls.cs:52:24:52:34 | After access to property Prop | AccessorCalls.cs:52:24:52:34 | access to property Prop | +| AccessorCalls.cs:52:24:52:34 | Before access to property Prop | AccessorCalls.cs:52:9:52:19 | After access to property Prop | +| AccessorCalls.cs:52:24:52:34 | access to property Prop | AccessorCalls.cs:52:24:52:29 | After access to field x | +| AccessorCalls.cs:53:9:53:12 | this access | AccessorCalls.cs:53:9:53:14 | Before access to field x | +| AccessorCalls.cs:53:9:53:14 | After access to field x | AccessorCalls.cs:53:9:53:14 | access to field x | +| AccessorCalls.cs:53:9:53:14 | Before access to field x | AccessorCalls.cs:53:9:53:17 | Before access to indexer | | AccessorCalls.cs:53:9:53:14 | access to field x | AccessorCalls.cs:53:9:53:12 | this access | +| AccessorCalls.cs:53:9:53:17 | After access to indexer | AccessorCalls.cs:53:9:53:17 | access to indexer | +| AccessorCalls.cs:53:9:53:17 | Before access to indexer | AccessorCalls.cs:53:9:53:30 | Before ... += ... | | AccessorCalls.cs:53:9:53:17 | access to indexer | AccessorCalls.cs:53:16:53:16 | 0 | -| AccessorCalls.cs:53:9:53:30 | ... += ... | AccessorCalls.cs:53:22:53:30 | access to indexer | -| AccessorCalls.cs:53:9:53:31 | ...; | AccessorCalls.cs:52:9:52:34 | ... += ... | -| AccessorCalls.cs:53:16:53:16 | 0 | AccessorCalls.cs:53:9:53:14 | access to field x | -| AccessorCalls.cs:53:22:53:25 | this access | AccessorCalls.cs:53:9:53:17 | access to indexer | +| AccessorCalls.cs:53:9:53:30 | ... += ... | AccessorCalls.cs:53:22:53:30 | After access to indexer | +| AccessorCalls.cs:53:9:53:30 | After ... += ... | AccessorCalls.cs:53:9:53:30 | ... += ... | +| AccessorCalls.cs:53:9:53:30 | Before ... += ... | AccessorCalls.cs:53:9:53:31 | ...; | +| AccessorCalls.cs:53:9:53:31 | ...; | AccessorCalls.cs:52:9:52:35 | After ...; | +| AccessorCalls.cs:53:9:53:31 | After ...; | AccessorCalls.cs:53:9:53:30 | After ... += ... | +| AccessorCalls.cs:53:16:53:16 | 0 | AccessorCalls.cs:53:9:53:14 | After access to field x | +| AccessorCalls.cs:53:22:53:25 | this access | AccessorCalls.cs:53:22:53:27 | Before access to field x | +| AccessorCalls.cs:53:22:53:27 | After access to field x | AccessorCalls.cs:53:22:53:27 | access to field x | +| AccessorCalls.cs:53:22:53:27 | Before access to field x | AccessorCalls.cs:53:22:53:30 | Before access to indexer | | AccessorCalls.cs:53:22:53:27 | access to field x | AccessorCalls.cs:53:22:53:25 | this access | +| AccessorCalls.cs:53:22:53:30 | After access to indexer | AccessorCalls.cs:53:22:53:30 | access to indexer | +| AccessorCalls.cs:53:22:53:30 | Before access to indexer | AccessorCalls.cs:53:9:53:17 | After access to indexer | | AccessorCalls.cs:53:22:53:30 | access to indexer | AccessorCalls.cs:53:29:53:29 | 0 | -| AccessorCalls.cs:53:29:53:29 | 0 | AccessorCalls.cs:53:22:53:27 | access to field x | -| AccessorCalls.cs:56:10:56:11 | exit M7 | AccessorCalls.cs:56:10:56:11 | exit M7 (normal) | -| AccessorCalls.cs:56:10:56:11 | exit M7 (normal) | AccessorCalls.cs:58:9:58:85 | ... = ... | -| AccessorCalls.cs:57:5:59:5 | {...} | AccessorCalls.cs:56:10:56:11 | enter M7 | -| AccessorCalls.cs:58:9:58:45 | (..., ...) | AccessorCalls.cs:58:33:58:44 | (..., ...) | -| AccessorCalls.cs:58:9:58:85 | ... = ... | AccessorCalls.cs:58:37:58:43 | access to indexer | +| AccessorCalls.cs:53:29:53:29 | 0 | AccessorCalls.cs:53:22:53:27 | After access to field x | +| AccessorCalls.cs:56:10:56:11 | Exit | AccessorCalls.cs:56:10:56:11 | Normal Exit | +| AccessorCalls.cs:56:10:56:11 | Normal Exit | AccessorCalls.cs:57:5:59:5 | After {...} | +| AccessorCalls.cs:56:17:56:17 | i | AccessorCalls.cs:56:10:56:11 | Entry | +| AccessorCalls.cs:57:5:59:5 | After {...} | AccessorCalls.cs:58:9:58:86 | After ...; | +| AccessorCalls.cs:57:5:59:5 | {...} | AccessorCalls.cs:56:17:56:17 | i | +| AccessorCalls.cs:58:9:58:45 | (..., ...) | AccessorCalls.cs:58:33:58:44 | After (..., ...) | +| AccessorCalls.cs:58:9:58:45 | After (..., ...) | AccessorCalls.cs:58:9:58:45 | (..., ...) | +| AccessorCalls.cs:58:9:58:45 | Before (..., ...) | AccessorCalls.cs:58:9:58:85 | Before ... = ... | +| AccessorCalls.cs:58:9:58:85 | ... = ... | AccessorCalls.cs:58:49:58:85 | After (..., ...) | +| AccessorCalls.cs:58:9:58:85 | After ... = ... | AccessorCalls.cs:58:9:58:85 | ... = ... | +| AccessorCalls.cs:58:9:58:85 | Before ... = ... | AccessorCalls.cs:58:9:58:86 | ...; | | AccessorCalls.cs:58:9:58:86 | ...; | AccessorCalls.cs:57:5:59:5 | {...} | -| AccessorCalls.cs:58:10:58:13 | this access | AccessorCalls.cs:58:9:58:86 | ...; | -| AccessorCalls.cs:58:10:58:19 | access to field Field | AccessorCalls.cs:58:49:58:85 | (..., ...) | -| AccessorCalls.cs:58:22:58:25 | this access | AccessorCalls.cs:58:10:58:13 | this access | -| AccessorCalls.cs:58:22:58:30 | access to property Prop | AccessorCalls.cs:58:10:58:19 | access to field Field | -| AccessorCalls.cs:58:33:58:44 | (..., ...) | AccessorCalls.cs:58:42:58:42 | 0 | -| AccessorCalls.cs:58:37:58:40 | this access | AccessorCalls.cs:58:22:58:25 | this access | -| AccessorCalls.cs:58:37:58:43 | access to indexer | AccessorCalls.cs:58:22:58:30 | access to property Prop | +| AccessorCalls.cs:58:9:58:86 | After ...; | AccessorCalls.cs:58:9:58:85 | After ... = ... | +| AccessorCalls.cs:58:10:58:13 | this access | AccessorCalls.cs:58:10:58:19 | Before access to field Field | +| AccessorCalls.cs:58:10:58:19 | After access to field Field | AccessorCalls.cs:58:10:58:19 | access to field Field | +| AccessorCalls.cs:58:10:58:19 | Before access to field Field | AccessorCalls.cs:58:9:58:45 | Before (..., ...) | +| AccessorCalls.cs:58:10:58:19 | access to field Field | AccessorCalls.cs:58:10:58:13 | this access | +| AccessorCalls.cs:58:22:58:25 | this access | AccessorCalls.cs:58:22:58:30 | Before access to property Prop | +| AccessorCalls.cs:58:22:58:30 | After access to property Prop | AccessorCalls.cs:58:22:58:30 | access to property Prop | +| AccessorCalls.cs:58:22:58:30 | Before access to property Prop | AccessorCalls.cs:58:10:58:19 | After access to field Field | +| AccessorCalls.cs:58:22:58:30 | access to property Prop | AccessorCalls.cs:58:22:58:25 | this access | +| AccessorCalls.cs:58:33:58:44 | (..., ...) | AccessorCalls.cs:58:37:58:43 | After access to indexer | +| AccessorCalls.cs:58:33:58:44 | After (..., ...) | AccessorCalls.cs:58:33:58:44 | (..., ...) | +| AccessorCalls.cs:58:33:58:44 | Before (..., ...) | AccessorCalls.cs:58:22:58:30 | After access to property Prop | +| AccessorCalls.cs:58:34:58:34 | access to parameter i | AccessorCalls.cs:58:33:58:44 | Before (..., ...) | +| AccessorCalls.cs:58:37:58:40 | this access | AccessorCalls.cs:58:37:58:43 | Before access to indexer | +| AccessorCalls.cs:58:37:58:43 | After access to indexer | AccessorCalls.cs:58:37:58:43 | access to indexer | +| AccessorCalls.cs:58:37:58:43 | Before access to indexer | AccessorCalls.cs:58:34:58:34 | access to parameter i | +| AccessorCalls.cs:58:37:58:43 | access to indexer | AccessorCalls.cs:58:42:58:42 | 0 | | AccessorCalls.cs:58:42:58:42 | 0 | AccessorCalls.cs:58:37:58:40 | this access | -| AccessorCalls.cs:58:49:58:85 | (..., ...) | AccessorCalls.cs:58:73:58:84 | (..., ...) | -| AccessorCalls.cs:58:50:58:53 | this access | AccessorCalls.cs:58:9:58:45 | (..., ...) | +| AccessorCalls.cs:58:49:58:85 | (..., ...) | AccessorCalls.cs:58:73:58:84 | After (..., ...) | +| AccessorCalls.cs:58:49:58:85 | After (..., ...) | AccessorCalls.cs:58:49:58:85 | (..., ...) | +| AccessorCalls.cs:58:49:58:85 | Before (..., ...) | AccessorCalls.cs:58:9:58:45 | After (..., ...) | +| AccessorCalls.cs:58:50:58:53 | this access | AccessorCalls.cs:58:50:58:59 | Before access to field Field | +| AccessorCalls.cs:58:50:58:59 | After access to field Field | AccessorCalls.cs:58:50:58:59 | access to field Field | +| AccessorCalls.cs:58:50:58:59 | Before access to field Field | AccessorCalls.cs:58:49:58:85 | Before (..., ...) | | AccessorCalls.cs:58:50:58:59 | access to field Field | AccessorCalls.cs:58:50:58:53 | this access | -| AccessorCalls.cs:58:62:58:65 | this access | AccessorCalls.cs:58:50:58:59 | access to field Field | +| AccessorCalls.cs:58:62:58:65 | this access | AccessorCalls.cs:58:62:58:70 | Before access to property Prop | +| AccessorCalls.cs:58:62:58:70 | After access to property Prop | AccessorCalls.cs:58:62:58:70 | access to property Prop | +| AccessorCalls.cs:58:62:58:70 | Before access to property Prop | AccessorCalls.cs:58:50:58:59 | After access to field Field | | AccessorCalls.cs:58:62:58:70 | access to property Prop | AccessorCalls.cs:58:62:58:65 | this access | -| AccessorCalls.cs:58:73:58:84 | (..., ...) | AccessorCalls.cs:58:77:58:83 | access to indexer | -| AccessorCalls.cs:58:74:58:74 | 0 | AccessorCalls.cs:58:62:58:70 | access to property Prop | -| AccessorCalls.cs:58:77:58:80 | this access | AccessorCalls.cs:58:74:58:74 | 0 | +| AccessorCalls.cs:58:73:58:84 | (..., ...) | AccessorCalls.cs:58:77:58:83 | After access to indexer | +| AccessorCalls.cs:58:73:58:84 | After (..., ...) | AccessorCalls.cs:58:73:58:84 | (..., ...) | +| AccessorCalls.cs:58:73:58:84 | Before (..., ...) | AccessorCalls.cs:58:62:58:70 | After access to property Prop | +| AccessorCalls.cs:58:74:58:74 | 0 | AccessorCalls.cs:58:73:58:84 | Before (..., ...) | +| AccessorCalls.cs:58:77:58:80 | this access | AccessorCalls.cs:58:77:58:83 | Before access to indexer | +| AccessorCalls.cs:58:77:58:83 | After access to indexer | AccessorCalls.cs:58:77:58:83 | access to indexer | +| AccessorCalls.cs:58:77:58:83 | Before access to indexer | AccessorCalls.cs:58:74:58:74 | 0 | | AccessorCalls.cs:58:77:58:83 | access to indexer | AccessorCalls.cs:58:82:58:82 | 1 | | AccessorCalls.cs:58:82:58:82 | 1 | AccessorCalls.cs:58:77:58:80 | this access | -| AccessorCalls.cs:61:10:61:11 | exit M8 | AccessorCalls.cs:61:10:61:11 | exit M8 (normal) | -| AccessorCalls.cs:61:10:61:11 | exit M8 (normal) | AccessorCalls.cs:63:9:63:97 | ... = ... | -| AccessorCalls.cs:62:5:64:5 | {...} | AccessorCalls.cs:61:10:61:11 | enter M8 | -| AccessorCalls.cs:63:9:63:51 | (..., ...) | AccessorCalls.cs:63:37:63:50 | (..., ...) | -| AccessorCalls.cs:63:9:63:97 | ... = ... | AccessorCalls.cs:63:41:63:49 | access to indexer | +| AccessorCalls.cs:61:10:61:11 | Exit | AccessorCalls.cs:61:10:61:11 | Normal Exit | +| AccessorCalls.cs:61:10:61:11 | Normal Exit | AccessorCalls.cs:62:5:64:5 | After {...} | +| AccessorCalls.cs:61:17:61:17 | i | AccessorCalls.cs:61:10:61:11 | Entry | +| AccessorCalls.cs:62:5:64:5 | After {...} | AccessorCalls.cs:63:9:63:98 | After ...; | +| AccessorCalls.cs:62:5:64:5 | {...} | AccessorCalls.cs:61:17:61:17 | i | +| AccessorCalls.cs:63:9:63:51 | (..., ...) | AccessorCalls.cs:63:37:63:50 | After (..., ...) | +| AccessorCalls.cs:63:9:63:51 | After (..., ...) | AccessorCalls.cs:63:9:63:51 | (..., ...) | +| AccessorCalls.cs:63:9:63:51 | Before (..., ...) | AccessorCalls.cs:63:9:63:97 | Before ... = ... | +| AccessorCalls.cs:63:9:63:97 | ... = ... | AccessorCalls.cs:63:55:63:97 | After (..., ...) | +| AccessorCalls.cs:63:9:63:97 | After ... = ... | AccessorCalls.cs:63:9:63:97 | ... = ... | +| AccessorCalls.cs:63:9:63:97 | Before ... = ... | AccessorCalls.cs:63:9:63:98 | ...; | | AccessorCalls.cs:63:9:63:98 | ...; | AccessorCalls.cs:62:5:64:5 | {...} | -| AccessorCalls.cs:63:10:63:13 | this access | AccessorCalls.cs:63:9:63:98 | ...; | +| AccessorCalls.cs:63:9:63:98 | After ...; | AccessorCalls.cs:63:9:63:97 | After ... = ... | +| AccessorCalls.cs:63:10:63:13 | this access | AccessorCalls.cs:63:10:63:15 | Before access to field x | +| AccessorCalls.cs:63:10:63:15 | After access to field x | AccessorCalls.cs:63:10:63:15 | access to field x | +| AccessorCalls.cs:63:10:63:15 | Before access to field x | AccessorCalls.cs:63:10:63:21 | Before access to field Field | | AccessorCalls.cs:63:10:63:15 | access to field x | AccessorCalls.cs:63:10:63:13 | this access | -| AccessorCalls.cs:63:10:63:21 | access to field Field | AccessorCalls.cs:63:55:63:97 | (..., ...) | -| AccessorCalls.cs:63:24:63:27 | this access | AccessorCalls.cs:63:10:63:15 | access to field x | +| AccessorCalls.cs:63:10:63:21 | After access to field Field | AccessorCalls.cs:63:10:63:21 | access to field Field | +| AccessorCalls.cs:63:10:63:21 | Before access to field Field | AccessorCalls.cs:63:9:63:51 | Before (..., ...) | +| AccessorCalls.cs:63:10:63:21 | access to field Field | AccessorCalls.cs:63:10:63:15 | After access to field x | +| AccessorCalls.cs:63:24:63:27 | this access | AccessorCalls.cs:63:24:63:29 | Before access to field x | +| AccessorCalls.cs:63:24:63:29 | After access to field x | AccessorCalls.cs:63:24:63:29 | access to field x | +| AccessorCalls.cs:63:24:63:29 | Before access to field x | AccessorCalls.cs:63:24:63:34 | Before access to property Prop | | AccessorCalls.cs:63:24:63:29 | access to field x | AccessorCalls.cs:63:24:63:27 | this access | -| AccessorCalls.cs:63:24:63:34 | access to property Prop | AccessorCalls.cs:63:10:63:21 | access to field Field | -| AccessorCalls.cs:63:37:63:50 | (..., ...) | AccessorCalls.cs:63:48:63:48 | 0 | -| AccessorCalls.cs:63:41:63:44 | this access | AccessorCalls.cs:63:24:63:29 | access to field x | +| AccessorCalls.cs:63:24:63:34 | After access to property Prop | AccessorCalls.cs:63:24:63:34 | access to property Prop | +| AccessorCalls.cs:63:24:63:34 | Before access to property Prop | AccessorCalls.cs:63:10:63:21 | After access to field Field | +| AccessorCalls.cs:63:24:63:34 | access to property Prop | AccessorCalls.cs:63:24:63:29 | After access to field x | +| AccessorCalls.cs:63:37:63:50 | (..., ...) | AccessorCalls.cs:63:41:63:49 | After access to indexer | +| AccessorCalls.cs:63:37:63:50 | After (..., ...) | AccessorCalls.cs:63:37:63:50 | (..., ...) | +| AccessorCalls.cs:63:37:63:50 | Before (..., ...) | AccessorCalls.cs:63:24:63:34 | After access to property Prop | +| AccessorCalls.cs:63:38:63:38 | access to parameter i | AccessorCalls.cs:63:37:63:50 | Before (..., ...) | +| AccessorCalls.cs:63:41:63:44 | this access | AccessorCalls.cs:63:41:63:46 | Before access to field x | +| AccessorCalls.cs:63:41:63:46 | After access to field x | AccessorCalls.cs:63:41:63:46 | access to field x | +| AccessorCalls.cs:63:41:63:46 | Before access to field x | AccessorCalls.cs:63:41:63:49 | Before access to indexer | | AccessorCalls.cs:63:41:63:46 | access to field x | AccessorCalls.cs:63:41:63:44 | this access | -| AccessorCalls.cs:63:41:63:49 | access to indexer | AccessorCalls.cs:63:24:63:34 | access to property Prop | -| AccessorCalls.cs:63:48:63:48 | 0 | AccessorCalls.cs:63:41:63:46 | access to field x | -| AccessorCalls.cs:63:55:63:97 | (..., ...) | AccessorCalls.cs:63:83:63:96 | (..., ...) | -| AccessorCalls.cs:63:56:63:59 | this access | AccessorCalls.cs:63:9:63:51 | (..., ...) | +| AccessorCalls.cs:63:41:63:49 | After access to indexer | AccessorCalls.cs:63:41:63:49 | access to indexer | +| AccessorCalls.cs:63:41:63:49 | Before access to indexer | AccessorCalls.cs:63:38:63:38 | access to parameter i | +| AccessorCalls.cs:63:41:63:49 | access to indexer | AccessorCalls.cs:63:48:63:48 | 0 | +| AccessorCalls.cs:63:48:63:48 | 0 | AccessorCalls.cs:63:41:63:46 | After access to field x | +| AccessorCalls.cs:63:55:63:97 | (..., ...) | AccessorCalls.cs:63:83:63:96 | After (..., ...) | +| AccessorCalls.cs:63:55:63:97 | After (..., ...) | AccessorCalls.cs:63:55:63:97 | (..., ...) | +| AccessorCalls.cs:63:55:63:97 | Before (..., ...) | AccessorCalls.cs:63:9:63:51 | After (..., ...) | +| AccessorCalls.cs:63:56:63:59 | this access | AccessorCalls.cs:63:56:63:61 | Before access to field x | +| AccessorCalls.cs:63:56:63:61 | After access to field x | AccessorCalls.cs:63:56:63:61 | access to field x | +| AccessorCalls.cs:63:56:63:61 | Before access to field x | AccessorCalls.cs:63:56:63:67 | Before access to field Field | | AccessorCalls.cs:63:56:63:61 | access to field x | AccessorCalls.cs:63:56:63:59 | this access | -| AccessorCalls.cs:63:56:63:67 | access to field Field | AccessorCalls.cs:63:56:63:61 | access to field x | -| AccessorCalls.cs:63:70:63:73 | this access | AccessorCalls.cs:63:56:63:67 | access to field Field | +| AccessorCalls.cs:63:56:63:67 | After access to field Field | AccessorCalls.cs:63:56:63:67 | access to field Field | +| AccessorCalls.cs:63:56:63:67 | Before access to field Field | AccessorCalls.cs:63:55:63:97 | Before (..., ...) | +| AccessorCalls.cs:63:56:63:67 | access to field Field | AccessorCalls.cs:63:56:63:61 | After access to field x | +| AccessorCalls.cs:63:70:63:73 | this access | AccessorCalls.cs:63:70:63:75 | Before access to field x | +| AccessorCalls.cs:63:70:63:75 | After access to field x | AccessorCalls.cs:63:70:63:75 | access to field x | +| AccessorCalls.cs:63:70:63:75 | Before access to field x | AccessorCalls.cs:63:70:63:80 | Before access to property Prop | | AccessorCalls.cs:63:70:63:75 | access to field x | AccessorCalls.cs:63:70:63:73 | this access | -| AccessorCalls.cs:63:70:63:80 | access to property Prop | AccessorCalls.cs:63:70:63:75 | access to field x | -| AccessorCalls.cs:63:83:63:96 | (..., ...) | AccessorCalls.cs:63:87:63:95 | access to indexer | -| AccessorCalls.cs:63:84:63:84 | 0 | AccessorCalls.cs:63:70:63:80 | access to property Prop | -| AccessorCalls.cs:63:87:63:90 | this access | AccessorCalls.cs:63:84:63:84 | 0 | +| AccessorCalls.cs:63:70:63:80 | After access to property Prop | AccessorCalls.cs:63:70:63:80 | access to property Prop | +| AccessorCalls.cs:63:70:63:80 | Before access to property Prop | AccessorCalls.cs:63:56:63:67 | After access to field Field | +| AccessorCalls.cs:63:70:63:80 | access to property Prop | AccessorCalls.cs:63:70:63:75 | After access to field x | +| AccessorCalls.cs:63:83:63:96 | (..., ...) | AccessorCalls.cs:63:87:63:95 | After access to indexer | +| AccessorCalls.cs:63:83:63:96 | After (..., ...) | AccessorCalls.cs:63:83:63:96 | (..., ...) | +| AccessorCalls.cs:63:83:63:96 | Before (..., ...) | AccessorCalls.cs:63:70:63:80 | After access to property Prop | +| AccessorCalls.cs:63:84:63:84 | 0 | AccessorCalls.cs:63:83:63:96 | Before (..., ...) | +| AccessorCalls.cs:63:87:63:90 | this access | AccessorCalls.cs:63:87:63:92 | Before access to field x | +| AccessorCalls.cs:63:87:63:92 | After access to field x | AccessorCalls.cs:63:87:63:92 | access to field x | +| AccessorCalls.cs:63:87:63:92 | Before access to field x | AccessorCalls.cs:63:87:63:95 | Before access to indexer | | AccessorCalls.cs:63:87:63:92 | access to field x | AccessorCalls.cs:63:87:63:90 | this access | +| AccessorCalls.cs:63:87:63:95 | After access to indexer | AccessorCalls.cs:63:87:63:95 | access to indexer | +| AccessorCalls.cs:63:87:63:95 | Before access to indexer | AccessorCalls.cs:63:84:63:84 | 0 | | AccessorCalls.cs:63:87:63:95 | access to indexer | AccessorCalls.cs:63:94:63:94 | 1 | -| AccessorCalls.cs:63:94:63:94 | 1 | AccessorCalls.cs:63:87:63:92 | access to field x | -| AccessorCalls.cs:66:10:66:11 | exit M9 | AccessorCalls.cs:66:10:66:11 | exit M9 (normal) | -| AccessorCalls.cs:66:10:66:11 | exit M9 (normal) | AccessorCalls.cs:73:9:73:83 | ... = ... | -| AccessorCalls.cs:67:5:74:5 | {...} | AccessorCalls.cs:66:10:66:11 | enter M9 | +| AccessorCalls.cs:63:94:63:94 | 1 | AccessorCalls.cs:63:87:63:92 | After access to field x | +| AccessorCalls.cs:66:10:66:11 | Exit | AccessorCalls.cs:66:10:66:11 | Normal Exit | +| AccessorCalls.cs:66:10:66:11 | Normal Exit | AccessorCalls.cs:67:5:74:5 | After {...} | +| AccessorCalls.cs:66:20:66:20 | o | AccessorCalls.cs:66:10:66:11 | Entry | +| AccessorCalls.cs:66:27:66:27 | i | AccessorCalls.cs:66:20:66:20 | o | +| AccessorCalls.cs:66:43:66:43 | e | AccessorCalls.cs:66:27:66:27 | i | +| AccessorCalls.cs:67:5:74:5 | After {...} | AccessorCalls.cs:73:9:73:84 | After ...; | +| AccessorCalls.cs:67:5:74:5 | {...} | AccessorCalls.cs:66:43:66:43 | e | | AccessorCalls.cs:68:9:68:22 | ... ...; | AccessorCalls.cs:67:5:74:5 | {...} | +| AccessorCalls.cs:68:9:68:22 | After ... ...; | AccessorCalls.cs:68:17:68:21 | After dynamic d = ... | +| AccessorCalls.cs:68:17:68:17 | access to local variable d | AccessorCalls.cs:68:17:68:21 | Before dynamic d = ... | +| AccessorCalls.cs:68:17:68:21 | After dynamic d = ... | AccessorCalls.cs:68:17:68:21 | dynamic d = ... | +| AccessorCalls.cs:68:17:68:21 | Before dynamic d = ... | AccessorCalls.cs:68:9:68:22 | ... ...; | | AccessorCalls.cs:68:17:68:21 | dynamic d = ... | AccessorCalls.cs:68:21:68:21 | access to parameter o | -| AccessorCalls.cs:68:21:68:21 | access to parameter o | AccessorCalls.cs:68:9:68:22 | ... ...; | -| AccessorCalls.cs:69:9:69:9 | access to local variable d | AccessorCalls.cs:69:9:69:36 | ...; | -| AccessorCalls.cs:69:9:69:20 | dynamic access to member MaybeProp1 | AccessorCalls.cs:69:24:69:35 | dynamic access to member MaybeProp2 | -| AccessorCalls.cs:69:9:69:35 | ... = ... | AccessorCalls.cs:69:9:69:20 | dynamic access to member MaybeProp1 | -| AccessorCalls.cs:69:9:69:36 | ...; | AccessorCalls.cs:68:17:68:21 | dynamic d = ... | -| AccessorCalls.cs:69:24:69:24 | access to local variable d | AccessorCalls.cs:69:9:69:9 | access to local variable d | +| AccessorCalls.cs:68:21:68:21 | access to parameter o | AccessorCalls.cs:68:17:68:17 | access to local variable d | +| AccessorCalls.cs:69:9:69:9 | access to local variable d | AccessorCalls.cs:69:9:69:20 | Before dynamic access to member MaybeProp1 | +| AccessorCalls.cs:69:9:69:20 | After dynamic access to member MaybeProp1 | AccessorCalls.cs:69:9:69:20 | dynamic access to member MaybeProp1 | +| AccessorCalls.cs:69:9:69:20 | Before dynamic access to member MaybeProp1 | AccessorCalls.cs:69:9:69:35 | Before ... = ... | +| AccessorCalls.cs:69:9:69:20 | dynamic access to member MaybeProp1 | AccessorCalls.cs:69:9:69:9 | access to local variable d | +| AccessorCalls.cs:69:9:69:35 | ... = ... | AccessorCalls.cs:69:24:69:35 | After dynamic access to member MaybeProp2 | +| AccessorCalls.cs:69:9:69:35 | After ... = ... | AccessorCalls.cs:69:9:69:35 | ... = ... | +| AccessorCalls.cs:69:9:69:35 | Before ... = ... | AccessorCalls.cs:69:9:69:36 | ...; | +| AccessorCalls.cs:69:9:69:36 | ...; | AccessorCalls.cs:68:9:68:22 | After ... ...; | +| AccessorCalls.cs:69:9:69:36 | After ...; | AccessorCalls.cs:69:9:69:35 | After ... = ... | +| AccessorCalls.cs:69:24:69:24 | access to local variable d | AccessorCalls.cs:69:24:69:35 | Before dynamic access to member MaybeProp2 | +| AccessorCalls.cs:69:24:69:35 | After dynamic access to member MaybeProp2 | AccessorCalls.cs:69:24:69:35 | dynamic access to member MaybeProp2 | +| AccessorCalls.cs:69:24:69:35 | Before dynamic access to member MaybeProp2 | AccessorCalls.cs:69:9:69:20 | After dynamic access to member MaybeProp1 | | AccessorCalls.cs:69:24:69:35 | dynamic access to member MaybeProp2 | AccessorCalls.cs:69:24:69:24 | access to local variable d | -| AccessorCalls.cs:70:9:70:9 | access to local variable d | AccessorCalls.cs:70:9:70:22 | ...; | +| AccessorCalls.cs:70:9:70:9 | access to local variable d | AccessorCalls.cs:70:9:70:19 | Before dynamic access to member MaybeProp | +| AccessorCalls.cs:70:9:70:19 | After dynamic access to member MaybeProp | AccessorCalls.cs:70:9:70:19 | dynamic access to member MaybeProp | +| AccessorCalls.cs:70:9:70:19 | Before dynamic access to member MaybeProp | AccessorCalls.cs:70:9:70:21 | Before dynamic call to operator ++ | | AccessorCalls.cs:70:9:70:19 | dynamic access to member MaybeProp | AccessorCalls.cs:70:9:70:9 | access to local variable d | -| AccessorCalls.cs:70:9:70:21 | dynamic call to operator ++ | AccessorCalls.cs:70:9:70:19 | dynamic access to member MaybeProp | -| AccessorCalls.cs:70:9:70:22 | ...; | AccessorCalls.cs:69:9:69:35 | ... = ... | -| AccessorCalls.cs:71:9:71:9 | access to local variable d | AccessorCalls.cs:71:9:71:26 | ...; | +| AccessorCalls.cs:70:9:70:21 | After dynamic call to operator ++ | AccessorCalls.cs:70:9:70:21 | dynamic call to operator ++ | +| AccessorCalls.cs:70:9:70:21 | Before dynamic call to operator ++ | AccessorCalls.cs:70:9:70:22 | ...; | +| AccessorCalls.cs:70:9:70:21 | dynamic call to operator ++ | AccessorCalls.cs:70:9:70:19 | After dynamic access to member MaybeProp | +| AccessorCalls.cs:70:9:70:22 | ...; | AccessorCalls.cs:69:9:69:36 | After ...; | +| AccessorCalls.cs:70:9:70:22 | After ...; | AccessorCalls.cs:70:9:70:21 | After dynamic call to operator ++ | +| AccessorCalls.cs:71:9:71:9 | access to local variable d | AccessorCalls.cs:71:9:71:20 | Before dynamic access to member MaybeEvent | +| AccessorCalls.cs:71:9:71:20 | After dynamic access to member MaybeEvent | AccessorCalls.cs:71:9:71:20 | dynamic access to member MaybeEvent | +| AccessorCalls.cs:71:9:71:20 | Before dynamic access to member MaybeEvent | AccessorCalls.cs:71:9:71:25 | Before ... += ... | | AccessorCalls.cs:71:9:71:20 | dynamic access to member MaybeEvent | AccessorCalls.cs:71:9:71:9 | access to local variable d | | AccessorCalls.cs:71:9:71:25 | ... += ... | AccessorCalls.cs:71:25:71:25 | access to parameter e | -| AccessorCalls.cs:71:9:71:26 | ...; | AccessorCalls.cs:70:9:70:21 | dynamic call to operator ++ | -| AccessorCalls.cs:71:25:71:25 | access to parameter e | AccessorCalls.cs:71:9:71:20 | dynamic access to member MaybeEvent | -| AccessorCalls.cs:72:9:72:9 | access to local variable d | AccessorCalls.cs:72:9:72:21 | ...; | +| AccessorCalls.cs:71:9:71:25 | After ... += ... | AccessorCalls.cs:71:9:71:25 | ... += ... | +| AccessorCalls.cs:71:9:71:25 | Before ... += ... | AccessorCalls.cs:71:9:71:26 | ...; | +| AccessorCalls.cs:71:9:71:26 | ...; | AccessorCalls.cs:70:9:70:22 | After ...; | +| AccessorCalls.cs:71:9:71:26 | After ...; | AccessorCalls.cs:71:9:71:25 | After ... += ... | +| AccessorCalls.cs:71:25:71:25 | access to parameter e | AccessorCalls.cs:71:9:71:20 | After dynamic access to member MaybeEvent | +| AccessorCalls.cs:72:9:72:9 | access to local variable d | AccessorCalls.cs:72:9:72:12 | Before dynamic access to element | +| AccessorCalls.cs:72:9:72:12 | After dynamic access to element | AccessorCalls.cs:72:9:72:12 | dynamic access to element | +| AccessorCalls.cs:72:9:72:12 | Before dynamic access to element | AccessorCalls.cs:72:9:72:20 | Before ... += ... | | AccessorCalls.cs:72:9:72:12 | dynamic access to element | AccessorCalls.cs:72:11:72:11 | 0 | -| AccessorCalls.cs:72:9:72:20 | ... += ... | AccessorCalls.cs:72:17:72:20 | dynamic access to element | -| AccessorCalls.cs:72:9:72:21 | ...; | AccessorCalls.cs:71:9:71:25 | ... += ... | +| AccessorCalls.cs:72:9:72:20 | ... += ... | AccessorCalls.cs:72:17:72:20 | After dynamic access to element | +| AccessorCalls.cs:72:9:72:20 | After ... += ... | AccessorCalls.cs:72:9:72:20 | ... += ... | +| AccessorCalls.cs:72:9:72:20 | Before ... += ... | AccessorCalls.cs:72:9:72:21 | ...; | +| AccessorCalls.cs:72:9:72:21 | ...; | AccessorCalls.cs:71:9:71:26 | After ...; | +| AccessorCalls.cs:72:9:72:21 | After ...; | AccessorCalls.cs:72:9:72:20 | After ... += ... | | AccessorCalls.cs:72:11:72:11 | 0 | AccessorCalls.cs:72:9:72:9 | access to local variable d | -| AccessorCalls.cs:72:17:72:17 | access to local variable d | AccessorCalls.cs:72:9:72:12 | dynamic access to element | +| AccessorCalls.cs:72:17:72:17 | access to local variable d | AccessorCalls.cs:72:17:72:20 | Before dynamic access to element | +| AccessorCalls.cs:72:17:72:20 | After dynamic access to element | AccessorCalls.cs:72:17:72:20 | dynamic access to element | +| AccessorCalls.cs:72:17:72:20 | Before dynamic access to element | AccessorCalls.cs:72:9:72:12 | After dynamic access to element | | AccessorCalls.cs:72:17:72:20 | dynamic access to element | AccessorCalls.cs:72:19:72:19 | 1 | | AccessorCalls.cs:72:19:72:19 | 1 | AccessorCalls.cs:72:17:72:17 | access to local variable d | -| AccessorCalls.cs:73:9:73:44 | (..., ...) | AccessorCalls.cs:73:35:73:43 | (..., ...) | -| AccessorCalls.cs:73:9:73:83 | ... = ... | AccessorCalls.cs:73:39:73:42 | dynamic access to element | -| AccessorCalls.cs:73:9:73:84 | ...; | AccessorCalls.cs:72:9:72:20 | ... += ... | -| AccessorCalls.cs:73:10:73:10 | access to local variable d | AccessorCalls.cs:73:9:73:84 | ...; | -| AccessorCalls.cs:73:10:73:21 | dynamic access to member MaybeProp1 | AccessorCalls.cs:73:48:73:83 | (..., ...) | -| AccessorCalls.cs:73:24:73:27 | this access | AccessorCalls.cs:73:10:73:10 | access to local variable d | -| AccessorCalls.cs:73:24:73:32 | access to property Prop | AccessorCalls.cs:73:10:73:21 | dynamic access to member MaybeProp1 | -| AccessorCalls.cs:73:35:73:43 | (..., ...) | AccessorCalls.cs:73:41:73:41 | 0 | -| AccessorCalls.cs:73:39:73:39 | access to local variable d | AccessorCalls.cs:73:24:73:27 | this access | -| AccessorCalls.cs:73:39:73:42 | dynamic access to element | AccessorCalls.cs:73:24:73:32 | access to property Prop | +| AccessorCalls.cs:73:9:73:44 | (..., ...) | AccessorCalls.cs:73:35:73:43 | After (..., ...) | +| AccessorCalls.cs:73:9:73:44 | After (..., ...) | AccessorCalls.cs:73:9:73:44 | (..., ...) | +| AccessorCalls.cs:73:9:73:44 | Before (..., ...) | AccessorCalls.cs:73:9:73:83 | Before ... = ... | +| AccessorCalls.cs:73:9:73:83 | ... = ... | AccessorCalls.cs:73:48:73:83 | After (..., ...) | +| AccessorCalls.cs:73:9:73:83 | After ... = ... | AccessorCalls.cs:73:9:73:83 | ... = ... | +| AccessorCalls.cs:73:9:73:83 | Before ... = ... | AccessorCalls.cs:73:9:73:84 | ...; | +| AccessorCalls.cs:73:9:73:84 | ...; | AccessorCalls.cs:72:9:72:21 | After ...; | +| AccessorCalls.cs:73:9:73:84 | After ...; | AccessorCalls.cs:73:9:73:83 | After ... = ... | +| AccessorCalls.cs:73:10:73:10 | access to local variable d | AccessorCalls.cs:73:10:73:21 | Before dynamic access to member MaybeProp1 | +| AccessorCalls.cs:73:10:73:21 | After dynamic access to member MaybeProp1 | AccessorCalls.cs:73:10:73:21 | dynamic access to member MaybeProp1 | +| AccessorCalls.cs:73:10:73:21 | Before dynamic access to member MaybeProp1 | AccessorCalls.cs:73:9:73:44 | Before (..., ...) | +| AccessorCalls.cs:73:10:73:21 | dynamic access to member MaybeProp1 | AccessorCalls.cs:73:10:73:10 | access to local variable d | +| AccessorCalls.cs:73:24:73:27 | this access | AccessorCalls.cs:73:24:73:32 | Before access to property Prop | +| AccessorCalls.cs:73:24:73:32 | After access to property Prop | AccessorCalls.cs:73:24:73:32 | access to property Prop | +| AccessorCalls.cs:73:24:73:32 | Before access to property Prop | AccessorCalls.cs:73:10:73:21 | After dynamic access to member MaybeProp1 | +| AccessorCalls.cs:73:24:73:32 | access to property Prop | AccessorCalls.cs:73:24:73:27 | this access | +| AccessorCalls.cs:73:35:73:43 | (..., ...) | AccessorCalls.cs:73:39:73:42 | After dynamic access to element | +| AccessorCalls.cs:73:35:73:43 | After (..., ...) | AccessorCalls.cs:73:35:73:43 | (..., ...) | +| AccessorCalls.cs:73:35:73:43 | Before (..., ...) | AccessorCalls.cs:73:24:73:32 | After access to property Prop | +| AccessorCalls.cs:73:36:73:36 | access to parameter i | AccessorCalls.cs:73:35:73:43 | Before (..., ...) | +| AccessorCalls.cs:73:39:73:39 | access to local variable d | AccessorCalls.cs:73:39:73:42 | Before dynamic access to element | +| AccessorCalls.cs:73:39:73:42 | After dynamic access to element | AccessorCalls.cs:73:39:73:42 | dynamic access to element | +| AccessorCalls.cs:73:39:73:42 | Before dynamic access to element | AccessorCalls.cs:73:36:73:36 | access to parameter i | +| AccessorCalls.cs:73:39:73:42 | dynamic access to element | AccessorCalls.cs:73:41:73:41 | 0 | | AccessorCalls.cs:73:41:73:41 | 0 | AccessorCalls.cs:73:39:73:39 | access to local variable d | -| AccessorCalls.cs:73:48:73:83 | (..., ...) | AccessorCalls.cs:73:74:73:82 | (..., ...) | -| AccessorCalls.cs:73:49:73:49 | access to local variable d | AccessorCalls.cs:73:9:73:44 | (..., ...) | +| AccessorCalls.cs:73:48:73:83 | (..., ...) | AccessorCalls.cs:73:74:73:82 | After (..., ...) | +| AccessorCalls.cs:73:48:73:83 | After (..., ...) | AccessorCalls.cs:73:48:73:83 | (..., ...) | +| AccessorCalls.cs:73:48:73:83 | Before (..., ...) | AccessorCalls.cs:73:9:73:44 | After (..., ...) | +| AccessorCalls.cs:73:49:73:49 | access to local variable d | AccessorCalls.cs:73:49:73:60 | Before dynamic access to member MaybeProp1 | +| AccessorCalls.cs:73:49:73:60 | After dynamic access to member MaybeProp1 | AccessorCalls.cs:73:49:73:60 | dynamic access to member MaybeProp1 | +| AccessorCalls.cs:73:49:73:60 | Before dynamic access to member MaybeProp1 | AccessorCalls.cs:73:48:73:83 | Before (..., ...) | | AccessorCalls.cs:73:49:73:60 | dynamic access to member MaybeProp1 | AccessorCalls.cs:73:49:73:49 | access to local variable d | -| AccessorCalls.cs:73:63:73:66 | this access | AccessorCalls.cs:73:49:73:60 | dynamic access to member MaybeProp1 | +| AccessorCalls.cs:73:63:73:66 | this access | AccessorCalls.cs:73:63:73:71 | Before access to property Prop | +| AccessorCalls.cs:73:63:73:71 | After access to property Prop | AccessorCalls.cs:73:63:73:71 | access to property Prop | +| AccessorCalls.cs:73:63:73:71 | Before access to property Prop | AccessorCalls.cs:73:49:73:60 | After dynamic access to member MaybeProp1 | | AccessorCalls.cs:73:63:73:71 | access to property Prop | AccessorCalls.cs:73:63:73:66 | this access | -| AccessorCalls.cs:73:74:73:82 | (..., ...) | AccessorCalls.cs:73:78:73:81 | dynamic access to element | -| AccessorCalls.cs:73:75:73:75 | 0 | AccessorCalls.cs:73:63:73:71 | access to property Prop | -| AccessorCalls.cs:73:78:73:78 | access to local variable d | AccessorCalls.cs:73:75:73:75 | 0 | +| AccessorCalls.cs:73:74:73:82 | (..., ...) | AccessorCalls.cs:73:78:73:81 | After dynamic access to element | +| AccessorCalls.cs:73:74:73:82 | After (..., ...) | AccessorCalls.cs:73:74:73:82 | (..., ...) | +| AccessorCalls.cs:73:74:73:82 | Before (..., ...) | AccessorCalls.cs:73:63:73:71 | After access to property Prop | +| AccessorCalls.cs:73:75:73:75 | 0 | AccessorCalls.cs:73:74:73:82 | Before (..., ...) | +| AccessorCalls.cs:73:78:73:78 | access to local variable d | AccessorCalls.cs:73:78:73:81 | Before dynamic access to element | +| AccessorCalls.cs:73:78:73:81 | After dynamic access to element | AccessorCalls.cs:73:78:73:81 | dynamic access to element | +| AccessorCalls.cs:73:78:73:81 | Before dynamic access to element | AccessorCalls.cs:73:75:73:75 | 0 | | AccessorCalls.cs:73:78:73:81 | dynamic access to element | AccessorCalls.cs:73:80:73:80 | 1 | | AccessorCalls.cs:73:80:73:80 | 1 | AccessorCalls.cs:73:78:73:78 | access to local variable d | -| ArrayCreation.cs:1:7:1:19 | call to constructor Object | ArrayCreation.cs:1:7:1:19 | call to method | +| ArrayCreation.cs:1:7:1:19 | After call to constructor Object | ArrayCreation.cs:1:7:1:19 | call to constructor Object | +| ArrayCreation.cs:1:7:1:19 | After call to method | ArrayCreation.cs:1:7:1:19 | call to method | +| ArrayCreation.cs:1:7:1:19 | Before call to constructor Object | ArrayCreation.cs:1:7:1:19 | After call to method | +| ArrayCreation.cs:1:7:1:19 | Before call to method | ArrayCreation.cs:1:7:1:19 | Entry | +| ArrayCreation.cs:1:7:1:19 | Exit | ArrayCreation.cs:1:7:1:19 | Normal Exit | +| ArrayCreation.cs:1:7:1:19 | Normal Exit | ArrayCreation.cs:1:7:1:19 | {...} | +| ArrayCreation.cs:1:7:1:19 | call to constructor Object | ArrayCreation.cs:1:7:1:19 | Before call to constructor Object | | ArrayCreation.cs:1:7:1:19 | call to method | ArrayCreation.cs:1:7:1:19 | this access | -| ArrayCreation.cs:1:7:1:19 | exit ArrayCreation | ArrayCreation.cs:1:7:1:19 | exit ArrayCreation (normal) | -| ArrayCreation.cs:1:7:1:19 | exit ArrayCreation (normal) | ArrayCreation.cs:1:7:1:19 | {...} | -| ArrayCreation.cs:1:7:1:19 | this access | ArrayCreation.cs:1:7:1:19 | enter ArrayCreation | -| ArrayCreation.cs:1:7:1:19 | {...} | ArrayCreation.cs:1:7:1:19 | call to constructor Object | -| ArrayCreation.cs:3:11:3:12 | exit M1 | ArrayCreation.cs:3:11:3:12 | exit M1 (normal) | -| ArrayCreation.cs:3:11:3:12 | exit M1 (normal) | ArrayCreation.cs:3:19:3:28 | array creation of type Int32[] | +| ArrayCreation.cs:1:7:1:19 | this access | ArrayCreation.cs:1:7:1:19 | Before call to method | +| ArrayCreation.cs:1:7:1:19 | {...} | ArrayCreation.cs:1:7:1:19 | After call to constructor Object | +| ArrayCreation.cs:3:11:3:12 | Exit | ArrayCreation.cs:3:11:3:12 | Normal Exit | +| ArrayCreation.cs:3:11:3:12 | Normal Exit | ArrayCreation.cs:3:19:3:28 | After array creation of type Int32[] | +| ArrayCreation.cs:3:19:3:28 | After array creation of type Int32[] | ArrayCreation.cs:3:19:3:28 | array creation of type Int32[] | +| ArrayCreation.cs:3:19:3:28 | Before array creation of type Int32[] | ArrayCreation.cs:3:11:3:12 | Entry | | ArrayCreation.cs:3:19:3:28 | array creation of type Int32[] | ArrayCreation.cs:3:27:3:27 | 0 | -| ArrayCreation.cs:3:27:3:27 | 0 | ArrayCreation.cs:3:11:3:12 | enter M1 | -| ArrayCreation.cs:5:12:5:13 | exit M2 | ArrayCreation.cs:5:12:5:13 | exit M2 (normal) | -| ArrayCreation.cs:5:12:5:13 | exit M2 (normal) | ArrayCreation.cs:5:20:5:32 | array creation of type Int32[,] | +| ArrayCreation.cs:3:27:3:27 | 0 | ArrayCreation.cs:3:19:3:28 | Before array creation of type Int32[] | +| ArrayCreation.cs:5:12:5:13 | Exit | ArrayCreation.cs:5:12:5:13 | Normal Exit | +| ArrayCreation.cs:5:12:5:13 | Normal Exit | ArrayCreation.cs:5:20:5:32 | After array creation of type Int32[,] | +| ArrayCreation.cs:5:20:5:32 | After array creation of type Int32[,] | ArrayCreation.cs:5:20:5:32 | array creation of type Int32[,] | +| ArrayCreation.cs:5:20:5:32 | Before array creation of type Int32[,] | ArrayCreation.cs:5:12:5:13 | Entry | | ArrayCreation.cs:5:20:5:32 | array creation of type Int32[,] | ArrayCreation.cs:5:31:5:31 | 1 | -| ArrayCreation.cs:5:28:5:28 | 0 | ArrayCreation.cs:5:12:5:13 | enter M2 | +| ArrayCreation.cs:5:28:5:28 | 0 | ArrayCreation.cs:5:20:5:32 | Before array creation of type Int32[,] | | ArrayCreation.cs:5:31:5:31 | 1 | ArrayCreation.cs:5:28:5:28 | 0 | -| ArrayCreation.cs:7:11:7:12 | exit M3 | ArrayCreation.cs:7:11:7:12 | exit M3 (normal) | -| ArrayCreation.cs:7:11:7:12 | exit M3 (normal) | ArrayCreation.cs:7:29:7:36 | { ..., ... } | -| ArrayCreation.cs:7:19:7:36 | 2 | ArrayCreation.cs:7:11:7:12 | enter M3 | +| ArrayCreation.cs:7:11:7:12 | Exit | ArrayCreation.cs:7:11:7:12 | Normal Exit | +| ArrayCreation.cs:7:11:7:12 | Normal Exit | ArrayCreation.cs:7:19:7:36 | After array creation of type Int32[] | +| ArrayCreation.cs:7:19:7:36 | 2 | ArrayCreation.cs:7:29:7:36 | After { ..., ... } | +| ArrayCreation.cs:7:19:7:36 | After array creation of type Int32[] | ArrayCreation.cs:7:19:7:36 | array creation of type Int32[] | +| ArrayCreation.cs:7:19:7:36 | Before array creation of type Int32[] | ArrayCreation.cs:7:11:7:12 | Entry | | ArrayCreation.cs:7:19:7:36 | array creation of type Int32[] | ArrayCreation.cs:7:19:7:36 | 2 | +| ArrayCreation.cs:7:29:7:36 | After { ..., ... } | ArrayCreation.cs:7:29:7:36 | { ..., ... } | +| ArrayCreation.cs:7:29:7:36 | Before { ..., ... } | ArrayCreation.cs:7:19:7:36 | Before array creation of type Int32[] | | ArrayCreation.cs:7:29:7:36 | { ..., ... } | ArrayCreation.cs:7:34:7:34 | 1 | -| ArrayCreation.cs:7:31:7:31 | 0 | ArrayCreation.cs:7:19:7:36 | array creation of type Int32[] | +| ArrayCreation.cs:7:31:7:31 | 0 | ArrayCreation.cs:7:29:7:36 | Before { ..., ... } | | ArrayCreation.cs:7:34:7:34 | 1 | ArrayCreation.cs:7:31:7:31 | 0 | -| ArrayCreation.cs:9:12:9:13 | exit M4 | ArrayCreation.cs:9:12:9:13 | exit M4 (normal) | -| ArrayCreation.cs:9:12:9:13 | exit M4 (normal) | ArrayCreation.cs:9:31:9:52 | { ..., ... } | -| ArrayCreation.cs:9:20:9:52 | 2 | ArrayCreation.cs:9:12:9:13 | enter M4 | +| ArrayCreation.cs:9:12:9:13 | Exit | ArrayCreation.cs:9:12:9:13 | Normal Exit | +| ArrayCreation.cs:9:12:9:13 | Normal Exit | ArrayCreation.cs:9:20:9:52 | After array creation of type Int32[,] | | ArrayCreation.cs:9:20:9:52 | 2 | ArrayCreation.cs:9:20:9:52 | 2 | +| ArrayCreation.cs:9:20:9:52 | 2 | ArrayCreation.cs:9:31:9:52 | After { ..., ... } | +| ArrayCreation.cs:9:20:9:52 | After array creation of type Int32[,] | ArrayCreation.cs:9:20:9:52 | array creation of type Int32[,] | +| ArrayCreation.cs:9:20:9:52 | Before array creation of type Int32[,] | ArrayCreation.cs:9:12:9:13 | Entry | | ArrayCreation.cs:9:20:9:52 | array creation of type Int32[,] | ArrayCreation.cs:9:20:9:52 | 2 | -| ArrayCreation.cs:9:31:9:52 | { ..., ... } | ArrayCreation.cs:9:43:9:50 | { ..., ... } | +| ArrayCreation.cs:9:31:9:52 | After { ..., ... } | ArrayCreation.cs:9:31:9:52 | { ..., ... } | +| ArrayCreation.cs:9:31:9:52 | Before { ..., ... } | ArrayCreation.cs:9:20:9:52 | Before array creation of type Int32[,] | +| ArrayCreation.cs:9:31:9:52 | { ..., ... } | ArrayCreation.cs:9:43:9:50 | After { ..., ... } | +| ArrayCreation.cs:9:33:9:40 | After { ..., ... } | ArrayCreation.cs:9:33:9:40 | { ..., ... } | +| ArrayCreation.cs:9:33:9:40 | Before { ..., ... } | ArrayCreation.cs:9:31:9:52 | Before { ..., ... } | | ArrayCreation.cs:9:33:9:40 | { ..., ... } | ArrayCreation.cs:9:38:9:38 | 1 | -| ArrayCreation.cs:9:35:9:35 | 0 | ArrayCreation.cs:9:20:9:52 | array creation of type Int32[,] | +| ArrayCreation.cs:9:35:9:35 | 0 | ArrayCreation.cs:9:33:9:40 | Before { ..., ... } | | ArrayCreation.cs:9:38:9:38 | 1 | ArrayCreation.cs:9:35:9:35 | 0 | +| ArrayCreation.cs:9:43:9:50 | After { ..., ... } | ArrayCreation.cs:9:43:9:50 | { ..., ... } | +| ArrayCreation.cs:9:43:9:50 | Before { ..., ... } | ArrayCreation.cs:9:33:9:40 | After { ..., ... } | | ArrayCreation.cs:9:43:9:50 | { ..., ... } | ArrayCreation.cs:9:48:9:48 | 3 | -| ArrayCreation.cs:9:45:9:45 | 2 | ArrayCreation.cs:9:33:9:40 | { ..., ... } | +| ArrayCreation.cs:9:45:9:45 | 2 | ArrayCreation.cs:9:43:9:50 | Before { ..., ... } | | ArrayCreation.cs:9:48:9:48 | 3 | ArrayCreation.cs:9:45:9:45 | 2 | -| Assert.cs:5:7:5:17 | call to constructor Object | Assert.cs:5:7:5:17 | call to method | +| Assert.cs:5:7:5:17 | After call to constructor Object | Assert.cs:5:7:5:17 | call to constructor Object | +| Assert.cs:5:7:5:17 | After call to method | Assert.cs:5:7:5:17 | call to method | +| Assert.cs:5:7:5:17 | Before call to constructor Object | Assert.cs:5:7:5:17 | After call to method | +| Assert.cs:5:7:5:17 | Before call to method | Assert.cs:5:7:5:17 | Entry | +| Assert.cs:5:7:5:17 | Exit | Assert.cs:5:7:5:17 | Normal Exit | +| Assert.cs:5:7:5:17 | Normal Exit | Assert.cs:5:7:5:17 | {...} | +| Assert.cs:5:7:5:17 | call to constructor Object | Assert.cs:5:7:5:17 | Before call to constructor Object | | Assert.cs:5:7:5:17 | call to method | Assert.cs:5:7:5:17 | this access | -| Assert.cs:5:7:5:17 | exit AssertTests | Assert.cs:5:7:5:17 | exit AssertTests (normal) | -| Assert.cs:5:7:5:17 | exit AssertTests (normal) | Assert.cs:5:7:5:17 | {...} | -| Assert.cs:5:7:5:17 | this access | Assert.cs:5:7:5:17 | enter AssertTests | -| Assert.cs:5:7:5:17 | {...} | Assert.cs:5:7:5:17 | call to constructor Object | -| Assert.cs:7:10:7:11 | exit M1 (normal) | Assert.cs:11:9:11:35 | call to method WriteLine | -| Assert.cs:8:5:12:5 | {...} | Assert.cs:7:10:7:11 | enter M1 | +| Assert.cs:5:7:5:17 | this access | Assert.cs:5:7:5:17 | Before call to method | +| Assert.cs:5:7:5:17 | {...} | Assert.cs:5:7:5:17 | After call to constructor Object | +| Assert.cs:7:10:7:11 | Normal Exit | Assert.cs:8:5:12:5 | After {...} | +| Assert.cs:7:18:7:18 | b | Assert.cs:7:10:7:11 | Entry | +| Assert.cs:8:5:12:5 | After {...} | Assert.cs:11:9:11:36 | After ...; | +| Assert.cs:8:5:12:5 | {...} | Assert.cs:7:18:7:18 | b | | Assert.cs:9:9:9:33 | ... ...; | Assert.cs:8:5:12:5 | {...} | -| Assert.cs:9:16:9:32 | String s = ... | Assert.cs:9:20:9:32 | ... ? ... : ... | -| Assert.cs:9:20:9:20 | access to parameter b | Assert.cs:9:9:9:33 | ... ...; | -| Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:9:24:9:27 | null | -| Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:9:31:9:32 | "" | -| Assert.cs:10:9:10:31 | call to method Assert | Assert.cs:10:22:10:30 | ... != ... | -| Assert.cs:10:9:10:32 | ...; | Assert.cs:9:16:9:32 | String s = ... | -| Assert.cs:10:22:10:22 | access to local variable s | Assert.cs:10:9:10:32 | ...; | +| Assert.cs:9:9:9:33 | After ... ...; | Assert.cs:9:16:9:32 | After String s = ... | +| Assert.cs:9:16:9:16 | access to local variable s | Assert.cs:9:16:9:32 | Before String s = ... | +| Assert.cs:9:16:9:32 | After String s = ... | Assert.cs:9:16:9:32 | String s = ... | +| Assert.cs:9:16:9:32 | Before String s = ... | Assert.cs:9:9:9:33 | ... ...; | +| Assert.cs:9:16:9:32 | String s = ... | Assert.cs:9:20:9:32 | After ... ? ... : ... | +| Assert.cs:9:20:9:20 | access to parameter b | Assert.cs:9:20:9:32 | ... ? ... : ... | +| Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:9:16:9:16 | access to local variable s | +| Assert.cs:9:20:9:32 | After ... ? ... : ... | Assert.cs:9:24:9:27 | null | +| Assert.cs:9:20:9:32 | After ... ? ... : ... | Assert.cs:9:31:9:32 | "" | +| Assert.cs:9:24:9:27 | null | Assert.cs:9:20:9:20 | After access to parameter b [true] | +| Assert.cs:9:31:9:32 | "" | Assert.cs:9:20:9:20 | After access to parameter b [false] | +| Assert.cs:10:9:10:31 | After call to method Assert | Assert.cs:10:9:10:31 | call to method Assert | +| Assert.cs:10:9:10:31 | Before call to method Assert | Assert.cs:10:9:10:32 | ...; | +| Assert.cs:10:9:10:31 | call to method Assert | Assert.cs:10:22:10:30 | After ... != ... | +| Assert.cs:10:9:10:32 | ...; | Assert.cs:9:9:9:33 | After ... ...; | +| Assert.cs:10:9:10:32 | After ...; | Assert.cs:10:9:10:31 | After call to method Assert | +| Assert.cs:10:22:10:22 | access to local variable s | Assert.cs:10:22:10:30 | Before ... != ... | | Assert.cs:10:22:10:30 | ... != ... | Assert.cs:10:27:10:30 | null | +| Assert.cs:10:22:10:30 | After ... != ... | Assert.cs:10:22:10:30 | ... != ... | +| Assert.cs:10:22:10:30 | Before ... != ... | Assert.cs:10:9:10:31 | Before call to method Assert | | Assert.cs:10:27:10:30 | null | Assert.cs:10:22:10:22 | access to local variable s | -| Assert.cs:11:9:11:35 | call to method WriteLine | Assert.cs:11:27:11:34 | access to property Length | -| Assert.cs:11:9:11:36 | ...; | Assert.cs:10:9:10:31 | call to method Assert | -| Assert.cs:11:27:11:27 | access to local variable s | Assert.cs:11:9:11:36 | ...; | +| Assert.cs:11:9:11:35 | After call to method WriteLine | Assert.cs:11:9:11:35 | call to method WriteLine | +| Assert.cs:11:9:11:35 | Before call to method WriteLine | Assert.cs:11:9:11:36 | ...; | +| Assert.cs:11:9:11:35 | call to method WriteLine | Assert.cs:11:27:11:34 | After access to property Length | +| Assert.cs:11:9:11:36 | ...; | Assert.cs:10:9:10:32 | After ...; | +| Assert.cs:11:9:11:36 | After ...; | Assert.cs:11:9:11:35 | After call to method WriteLine | +| Assert.cs:11:27:11:27 | access to local variable s | Assert.cs:11:27:11:34 | Before access to property Length | +| Assert.cs:11:27:11:34 | After access to property Length | Assert.cs:11:27:11:34 | access to property Length | +| Assert.cs:11:27:11:34 | Before access to property Length | Assert.cs:11:9:11:35 | Before call to method WriteLine | | Assert.cs:11:27:11:34 | access to property Length | Assert.cs:11:27:11:27 | access to local variable s | -| Assert.cs:14:10:14:11 | exit M2 (normal) | Assert.cs:18:9:18:35 | call to method WriteLine | -| Assert.cs:15:5:19:5 | {...} | Assert.cs:14:10:14:11 | enter M2 | +| Assert.cs:14:10:14:11 | Normal Exit | Assert.cs:15:5:19:5 | After {...} | +| Assert.cs:14:18:14:18 | b | Assert.cs:14:10:14:11 | Entry | +| Assert.cs:15:5:19:5 | After {...} | Assert.cs:18:9:18:36 | After ...; | +| Assert.cs:15:5:19:5 | {...} | Assert.cs:14:18:14:18 | b | | Assert.cs:16:9:16:33 | ... ...; | Assert.cs:15:5:19:5 | {...} | -| Assert.cs:16:16:16:32 | String s = ... | Assert.cs:16:20:16:32 | ... ? ... : ... | -| Assert.cs:16:20:16:20 | access to parameter b | Assert.cs:16:9:16:33 | ... ...; | -| Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:16:24:16:27 | null | -| Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:16:31:16:32 | "" | +| Assert.cs:16:9:16:33 | After ... ...; | Assert.cs:16:16:16:32 | After String s = ... | +| Assert.cs:16:16:16:16 | access to local variable s | Assert.cs:16:16:16:32 | Before String s = ... | +| Assert.cs:16:16:16:32 | After String s = ... | Assert.cs:16:16:16:32 | String s = ... | +| Assert.cs:16:16:16:32 | Before String s = ... | Assert.cs:16:9:16:33 | ... ...; | +| Assert.cs:16:16:16:32 | String s = ... | Assert.cs:16:20:16:32 | After ... ? ... : ... | +| Assert.cs:16:20:16:20 | access to parameter b | Assert.cs:16:20:16:32 | ... ? ... : ... | +| Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:16:16:16:16 | access to local variable s | +| Assert.cs:16:20:16:32 | After ... ? ... : ... | Assert.cs:16:24:16:27 | null | +| Assert.cs:16:20:16:32 | After ... ? ... : ... | Assert.cs:16:31:16:32 | "" | +| Assert.cs:16:24:16:27 | null | Assert.cs:16:20:16:20 | After access to parameter b [true] | +| Assert.cs:16:31:16:32 | "" | Assert.cs:16:20:16:20 | After access to parameter b [false] | +| Assert.cs:17:9:17:24 | After call to method IsNull | Assert.cs:17:9:17:24 | call to method IsNull | +| Assert.cs:17:9:17:24 | Before call to method IsNull | Assert.cs:17:9:17:25 | ...; | | Assert.cs:17:9:17:24 | call to method IsNull | Assert.cs:17:23:17:23 | access to local variable s | -| Assert.cs:17:9:17:25 | ...; | Assert.cs:16:16:16:32 | String s = ... | -| Assert.cs:17:23:17:23 | access to local variable s | Assert.cs:17:9:17:25 | ...; | -| Assert.cs:18:9:18:35 | call to method WriteLine | Assert.cs:18:27:18:34 | access to property Length | -| Assert.cs:18:9:18:36 | ...; | Assert.cs:17:9:17:24 | call to method IsNull | -| Assert.cs:18:27:18:27 | access to local variable s | Assert.cs:18:9:18:36 | ...; | +| Assert.cs:17:9:17:25 | ...; | Assert.cs:16:9:16:33 | After ... ...; | +| Assert.cs:17:9:17:25 | After ...; | Assert.cs:17:9:17:24 | After call to method IsNull | +| Assert.cs:17:23:17:23 | access to local variable s | Assert.cs:17:9:17:24 | Before call to method IsNull | +| Assert.cs:18:9:18:35 | After call to method WriteLine | Assert.cs:18:9:18:35 | call to method WriteLine | +| Assert.cs:18:9:18:35 | Before call to method WriteLine | Assert.cs:18:9:18:36 | ...; | +| Assert.cs:18:9:18:35 | call to method WriteLine | Assert.cs:18:27:18:34 | After access to property Length | +| Assert.cs:18:9:18:36 | ...; | Assert.cs:17:9:17:25 | After ...; | +| Assert.cs:18:9:18:36 | After ...; | Assert.cs:18:9:18:35 | After call to method WriteLine | +| Assert.cs:18:27:18:27 | access to local variable s | Assert.cs:18:27:18:34 | Before access to property Length | +| Assert.cs:18:27:18:34 | After access to property Length | Assert.cs:18:27:18:34 | access to property Length | +| Assert.cs:18:27:18:34 | Before access to property Length | Assert.cs:18:9:18:35 | Before call to method WriteLine | | Assert.cs:18:27:18:34 | access to property Length | Assert.cs:18:27:18:27 | access to local variable s | -| Assert.cs:21:10:21:11 | exit M3 (normal) | Assert.cs:25:9:25:35 | call to method WriteLine | -| Assert.cs:22:5:26:5 | {...} | Assert.cs:21:10:21:11 | enter M3 | +| Assert.cs:21:10:21:11 | Normal Exit | Assert.cs:22:5:26:5 | After {...} | +| Assert.cs:21:18:21:18 | b | Assert.cs:21:10:21:11 | Entry | +| Assert.cs:22:5:26:5 | After {...} | Assert.cs:25:9:25:36 | After ...; | +| Assert.cs:22:5:26:5 | {...} | Assert.cs:21:18:21:18 | b | | Assert.cs:23:9:23:33 | ... ...; | Assert.cs:22:5:26:5 | {...} | -| Assert.cs:23:16:23:32 | String s = ... | Assert.cs:23:20:23:32 | ... ? ... : ... | -| Assert.cs:23:20:23:20 | access to parameter b | Assert.cs:23:9:23:33 | ... ...; | -| Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:23:24:23:27 | null | -| Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:23:31:23:32 | "" | +| Assert.cs:23:9:23:33 | After ... ...; | Assert.cs:23:16:23:32 | After String s = ... | +| Assert.cs:23:16:23:16 | access to local variable s | Assert.cs:23:16:23:32 | Before String s = ... | +| Assert.cs:23:16:23:32 | After String s = ... | Assert.cs:23:16:23:32 | String s = ... | +| Assert.cs:23:16:23:32 | Before String s = ... | Assert.cs:23:9:23:33 | ... ...; | +| Assert.cs:23:16:23:32 | String s = ... | Assert.cs:23:20:23:32 | After ... ? ... : ... | +| Assert.cs:23:20:23:20 | access to parameter b | Assert.cs:23:20:23:32 | ... ? ... : ... | +| Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:23:16:23:16 | access to local variable s | +| Assert.cs:23:20:23:32 | After ... ? ... : ... | Assert.cs:23:24:23:27 | null | +| Assert.cs:23:20:23:32 | After ... ? ... : ... | Assert.cs:23:31:23:32 | "" | +| Assert.cs:23:24:23:27 | null | Assert.cs:23:20:23:20 | After access to parameter b [true] | +| Assert.cs:23:31:23:32 | "" | Assert.cs:23:20:23:20 | After access to parameter b [false] | +| Assert.cs:24:9:24:27 | After call to method IsNotNull | Assert.cs:24:9:24:27 | call to method IsNotNull | +| Assert.cs:24:9:24:27 | Before call to method IsNotNull | Assert.cs:24:9:24:28 | ...; | | Assert.cs:24:9:24:27 | call to method IsNotNull | Assert.cs:24:26:24:26 | access to local variable s | -| Assert.cs:24:9:24:28 | ...; | Assert.cs:23:16:23:32 | String s = ... | -| Assert.cs:24:26:24:26 | access to local variable s | Assert.cs:24:9:24:28 | ...; | -| Assert.cs:25:9:25:35 | call to method WriteLine | Assert.cs:25:27:25:34 | access to property Length | -| Assert.cs:25:9:25:36 | ...; | Assert.cs:24:9:24:27 | call to method IsNotNull | -| Assert.cs:25:27:25:27 | access to local variable s | Assert.cs:25:9:25:36 | ...; | +| Assert.cs:24:9:24:28 | ...; | Assert.cs:23:9:23:33 | After ... ...; | +| Assert.cs:24:9:24:28 | After ...; | Assert.cs:24:9:24:27 | After call to method IsNotNull | +| Assert.cs:24:26:24:26 | access to local variable s | Assert.cs:24:9:24:27 | Before call to method IsNotNull | +| Assert.cs:25:9:25:35 | After call to method WriteLine | Assert.cs:25:9:25:35 | call to method WriteLine | +| Assert.cs:25:9:25:35 | Before call to method WriteLine | Assert.cs:25:9:25:36 | ...; | +| Assert.cs:25:9:25:35 | call to method WriteLine | Assert.cs:25:27:25:34 | After access to property Length | +| Assert.cs:25:9:25:36 | ...; | Assert.cs:24:9:24:28 | After ...; | +| Assert.cs:25:9:25:36 | After ...; | Assert.cs:25:9:25:35 | After call to method WriteLine | +| Assert.cs:25:27:25:27 | access to local variable s | Assert.cs:25:27:25:34 | Before access to property Length | +| Assert.cs:25:27:25:34 | After access to property Length | Assert.cs:25:27:25:34 | access to property Length | +| Assert.cs:25:27:25:34 | Before access to property Length | Assert.cs:25:9:25:35 | Before call to method WriteLine | | Assert.cs:25:27:25:34 | access to property Length | Assert.cs:25:27:25:27 | access to local variable s | -| Assert.cs:28:10:28:11 | exit M4 (normal) | Assert.cs:32:9:32:35 | call to method WriteLine | -| Assert.cs:29:5:33:5 | {...} | Assert.cs:28:10:28:11 | enter M4 | +| Assert.cs:28:10:28:11 | Normal Exit | Assert.cs:29:5:33:5 | After {...} | +| Assert.cs:28:18:28:18 | b | Assert.cs:28:10:28:11 | Entry | +| Assert.cs:29:5:33:5 | After {...} | Assert.cs:32:9:32:36 | After ...; | +| Assert.cs:29:5:33:5 | {...} | Assert.cs:28:18:28:18 | b | | Assert.cs:30:9:30:33 | ... ...; | Assert.cs:29:5:33:5 | {...} | -| Assert.cs:30:16:30:32 | String s = ... | Assert.cs:30:20:30:32 | ... ? ... : ... | -| Assert.cs:30:20:30:20 | access to parameter b | Assert.cs:30:9:30:33 | ... ...; | -| Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:30:24:30:27 | null | -| Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:30:31:30:32 | "" | -| Assert.cs:31:9:31:32 | call to method IsTrue | Assert.cs:31:23:31:31 | ... == ... | -| Assert.cs:31:9:31:33 | ...; | Assert.cs:30:16:30:32 | String s = ... | -| Assert.cs:31:23:31:23 | access to local variable s | Assert.cs:31:9:31:33 | ...; | +| Assert.cs:30:9:30:33 | After ... ...; | Assert.cs:30:16:30:32 | After String s = ... | +| Assert.cs:30:16:30:16 | access to local variable s | Assert.cs:30:16:30:32 | Before String s = ... | +| Assert.cs:30:16:30:32 | After String s = ... | Assert.cs:30:16:30:32 | String s = ... | +| Assert.cs:30:16:30:32 | Before String s = ... | Assert.cs:30:9:30:33 | ... ...; | +| Assert.cs:30:16:30:32 | String s = ... | Assert.cs:30:20:30:32 | After ... ? ... : ... | +| Assert.cs:30:20:30:20 | access to parameter b | Assert.cs:30:20:30:32 | ... ? ... : ... | +| Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:30:16:30:16 | access to local variable s | +| Assert.cs:30:20:30:32 | After ... ? ... : ... | Assert.cs:30:24:30:27 | null | +| Assert.cs:30:20:30:32 | After ... ? ... : ... | Assert.cs:30:31:30:32 | "" | +| Assert.cs:30:24:30:27 | null | Assert.cs:30:20:30:20 | After access to parameter b [true] | +| Assert.cs:30:31:30:32 | "" | Assert.cs:30:20:30:20 | After access to parameter b [false] | +| Assert.cs:31:9:31:32 | After call to method IsTrue | Assert.cs:31:9:31:32 | call to method IsTrue | +| Assert.cs:31:9:31:32 | Before call to method IsTrue | Assert.cs:31:9:31:33 | ...; | +| Assert.cs:31:9:31:32 | call to method IsTrue | Assert.cs:31:23:31:31 | After ... == ... | +| Assert.cs:31:9:31:33 | ...; | Assert.cs:30:9:30:33 | After ... ...; | +| Assert.cs:31:9:31:33 | After ...; | Assert.cs:31:9:31:32 | After call to method IsTrue | +| Assert.cs:31:23:31:23 | access to local variable s | Assert.cs:31:23:31:31 | Before ... == ... | | Assert.cs:31:23:31:31 | ... == ... | Assert.cs:31:28:31:31 | null | +| Assert.cs:31:23:31:31 | After ... == ... | Assert.cs:31:23:31:31 | ... == ... | +| Assert.cs:31:23:31:31 | Before ... == ... | Assert.cs:31:9:31:32 | Before call to method IsTrue | | Assert.cs:31:28:31:31 | null | Assert.cs:31:23:31:23 | access to local variable s | -| Assert.cs:32:9:32:35 | call to method WriteLine | Assert.cs:32:27:32:34 | access to property Length | -| Assert.cs:32:9:32:36 | ...; | Assert.cs:31:9:31:32 | call to method IsTrue | -| Assert.cs:32:27:32:27 | access to local variable s | Assert.cs:32:9:32:36 | ...; | +| Assert.cs:32:9:32:35 | After call to method WriteLine | Assert.cs:32:9:32:35 | call to method WriteLine | +| Assert.cs:32:9:32:35 | Before call to method WriteLine | Assert.cs:32:9:32:36 | ...; | +| Assert.cs:32:9:32:35 | call to method WriteLine | Assert.cs:32:27:32:34 | After access to property Length | +| Assert.cs:32:9:32:36 | ...; | Assert.cs:31:9:31:33 | After ...; | +| Assert.cs:32:9:32:36 | After ...; | Assert.cs:32:9:32:35 | After call to method WriteLine | +| Assert.cs:32:27:32:27 | access to local variable s | Assert.cs:32:27:32:34 | Before access to property Length | +| Assert.cs:32:27:32:34 | After access to property Length | Assert.cs:32:27:32:34 | access to property Length | +| Assert.cs:32:27:32:34 | Before access to property Length | Assert.cs:32:9:32:35 | Before call to method WriteLine | | Assert.cs:32:27:32:34 | access to property Length | Assert.cs:32:27:32:27 | access to local variable s | -| Assert.cs:35:10:35:11 | exit M5 (normal) | Assert.cs:39:9:39:35 | call to method WriteLine | -| Assert.cs:36:5:40:5 | {...} | Assert.cs:35:10:35:11 | enter M5 | +| Assert.cs:35:10:35:11 | Normal Exit | Assert.cs:36:5:40:5 | After {...} | +| Assert.cs:35:18:35:18 | b | Assert.cs:35:10:35:11 | Entry | +| Assert.cs:36:5:40:5 | After {...} | Assert.cs:39:9:39:36 | After ...; | +| Assert.cs:36:5:40:5 | {...} | Assert.cs:35:18:35:18 | b | | Assert.cs:37:9:37:33 | ... ...; | Assert.cs:36:5:40:5 | {...} | -| Assert.cs:37:16:37:32 | String s = ... | Assert.cs:37:20:37:32 | ... ? ... : ... | -| Assert.cs:37:20:37:20 | access to parameter b | Assert.cs:37:9:37:33 | ... ...; | -| Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:37:24:37:27 | null | -| Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:37:31:37:32 | "" | -| Assert.cs:38:9:38:32 | call to method IsTrue | Assert.cs:38:23:38:31 | ... != ... | -| Assert.cs:38:9:38:33 | ...; | Assert.cs:37:16:37:32 | String s = ... | -| Assert.cs:38:23:38:23 | access to local variable s | Assert.cs:38:9:38:33 | ...; | +| Assert.cs:37:9:37:33 | After ... ...; | Assert.cs:37:16:37:32 | After String s = ... | +| Assert.cs:37:16:37:16 | access to local variable s | Assert.cs:37:16:37:32 | Before String s = ... | +| Assert.cs:37:16:37:32 | After String s = ... | Assert.cs:37:16:37:32 | String s = ... | +| Assert.cs:37:16:37:32 | Before String s = ... | Assert.cs:37:9:37:33 | ... ...; | +| Assert.cs:37:16:37:32 | String s = ... | Assert.cs:37:20:37:32 | After ... ? ... : ... | +| Assert.cs:37:20:37:20 | access to parameter b | Assert.cs:37:20:37:32 | ... ? ... : ... | +| Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:37:16:37:16 | access to local variable s | +| Assert.cs:37:20:37:32 | After ... ? ... : ... | Assert.cs:37:24:37:27 | null | +| Assert.cs:37:20:37:32 | After ... ? ... : ... | Assert.cs:37:31:37:32 | "" | +| Assert.cs:37:24:37:27 | null | Assert.cs:37:20:37:20 | After access to parameter b [true] | +| Assert.cs:37:31:37:32 | "" | Assert.cs:37:20:37:20 | After access to parameter b [false] | +| Assert.cs:38:9:38:32 | After call to method IsTrue | Assert.cs:38:9:38:32 | call to method IsTrue | +| Assert.cs:38:9:38:32 | Before call to method IsTrue | Assert.cs:38:9:38:33 | ...; | +| Assert.cs:38:9:38:32 | call to method IsTrue | Assert.cs:38:23:38:31 | After ... != ... | +| Assert.cs:38:9:38:33 | ...; | Assert.cs:37:9:37:33 | After ... ...; | +| Assert.cs:38:9:38:33 | After ...; | Assert.cs:38:9:38:32 | After call to method IsTrue | +| Assert.cs:38:23:38:23 | access to local variable s | Assert.cs:38:23:38:31 | Before ... != ... | | Assert.cs:38:23:38:31 | ... != ... | Assert.cs:38:28:38:31 | null | +| Assert.cs:38:23:38:31 | After ... != ... | Assert.cs:38:23:38:31 | ... != ... | +| Assert.cs:38:23:38:31 | Before ... != ... | Assert.cs:38:9:38:32 | Before call to method IsTrue | | Assert.cs:38:28:38:31 | null | Assert.cs:38:23:38:23 | access to local variable s | -| Assert.cs:39:9:39:35 | call to method WriteLine | Assert.cs:39:27:39:34 | access to property Length | -| Assert.cs:39:9:39:36 | ...; | Assert.cs:38:9:38:32 | call to method IsTrue | -| Assert.cs:39:27:39:27 | access to local variable s | Assert.cs:39:9:39:36 | ...; | +| Assert.cs:39:9:39:35 | After call to method WriteLine | Assert.cs:39:9:39:35 | call to method WriteLine | +| Assert.cs:39:9:39:35 | Before call to method WriteLine | Assert.cs:39:9:39:36 | ...; | +| Assert.cs:39:9:39:35 | call to method WriteLine | Assert.cs:39:27:39:34 | After access to property Length | +| Assert.cs:39:9:39:36 | ...; | Assert.cs:38:9:38:33 | After ...; | +| Assert.cs:39:9:39:36 | After ...; | Assert.cs:39:9:39:35 | After call to method WriteLine | +| Assert.cs:39:27:39:27 | access to local variable s | Assert.cs:39:27:39:34 | Before access to property Length | +| Assert.cs:39:27:39:34 | After access to property Length | Assert.cs:39:27:39:34 | access to property Length | +| Assert.cs:39:27:39:34 | Before access to property Length | Assert.cs:39:9:39:35 | Before call to method WriteLine | | Assert.cs:39:27:39:34 | access to property Length | Assert.cs:39:27:39:27 | access to local variable s | -| Assert.cs:42:10:42:11 | exit M6 (normal) | Assert.cs:46:9:46:35 | call to method WriteLine | -| Assert.cs:43:5:47:5 | {...} | Assert.cs:42:10:42:11 | enter M6 | +| Assert.cs:42:10:42:11 | Normal Exit | Assert.cs:43:5:47:5 | After {...} | +| Assert.cs:42:18:42:18 | b | Assert.cs:42:10:42:11 | Entry | +| Assert.cs:43:5:47:5 | After {...} | Assert.cs:46:9:46:36 | After ...; | +| Assert.cs:43:5:47:5 | {...} | Assert.cs:42:18:42:18 | b | | Assert.cs:44:9:44:33 | ... ...; | Assert.cs:43:5:47:5 | {...} | -| Assert.cs:44:16:44:32 | String s = ... | Assert.cs:44:20:44:32 | ... ? ... : ... | -| Assert.cs:44:20:44:20 | access to parameter b | Assert.cs:44:9:44:33 | ... ...; | -| Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:44:24:44:27 | null | -| Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:44:31:44:32 | "" | -| Assert.cs:45:9:45:33 | call to method IsFalse | Assert.cs:45:24:45:32 | ... != ... | -| Assert.cs:45:9:45:34 | ...; | Assert.cs:44:16:44:32 | String s = ... | -| Assert.cs:45:24:45:24 | access to local variable s | Assert.cs:45:9:45:34 | ...; | +| Assert.cs:44:9:44:33 | After ... ...; | Assert.cs:44:16:44:32 | After String s = ... | +| Assert.cs:44:16:44:16 | access to local variable s | Assert.cs:44:16:44:32 | Before String s = ... | +| Assert.cs:44:16:44:32 | After String s = ... | Assert.cs:44:16:44:32 | String s = ... | +| Assert.cs:44:16:44:32 | Before String s = ... | Assert.cs:44:9:44:33 | ... ...; | +| Assert.cs:44:16:44:32 | String s = ... | Assert.cs:44:20:44:32 | After ... ? ... : ... | +| Assert.cs:44:20:44:20 | access to parameter b | Assert.cs:44:20:44:32 | ... ? ... : ... | +| Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:44:16:44:16 | access to local variable s | +| Assert.cs:44:20:44:32 | After ... ? ... : ... | Assert.cs:44:24:44:27 | null | +| Assert.cs:44:20:44:32 | After ... ? ... : ... | Assert.cs:44:31:44:32 | "" | +| Assert.cs:44:24:44:27 | null | Assert.cs:44:20:44:20 | After access to parameter b [true] | +| Assert.cs:44:31:44:32 | "" | Assert.cs:44:20:44:20 | After access to parameter b [false] | +| Assert.cs:45:9:45:33 | After call to method IsFalse | Assert.cs:45:9:45:33 | call to method IsFalse | +| Assert.cs:45:9:45:33 | Before call to method IsFalse | Assert.cs:45:9:45:34 | ...; | +| Assert.cs:45:9:45:33 | call to method IsFalse | Assert.cs:45:24:45:32 | After ... != ... | +| Assert.cs:45:9:45:34 | ...; | Assert.cs:44:9:44:33 | After ... ...; | +| Assert.cs:45:9:45:34 | After ...; | Assert.cs:45:9:45:33 | After call to method IsFalse | +| Assert.cs:45:24:45:24 | access to local variable s | Assert.cs:45:24:45:32 | Before ... != ... | | Assert.cs:45:24:45:32 | ... != ... | Assert.cs:45:29:45:32 | null | +| Assert.cs:45:24:45:32 | After ... != ... | Assert.cs:45:24:45:32 | ... != ... | +| Assert.cs:45:24:45:32 | Before ... != ... | Assert.cs:45:9:45:33 | Before call to method IsFalse | | Assert.cs:45:29:45:32 | null | Assert.cs:45:24:45:24 | access to local variable s | -| Assert.cs:46:9:46:35 | call to method WriteLine | Assert.cs:46:27:46:34 | access to property Length | -| Assert.cs:46:9:46:36 | ...; | Assert.cs:45:9:45:33 | call to method IsFalse | -| Assert.cs:46:27:46:27 | access to local variable s | Assert.cs:46:9:46:36 | ...; | +| Assert.cs:46:9:46:35 | After call to method WriteLine | Assert.cs:46:9:46:35 | call to method WriteLine | +| Assert.cs:46:9:46:35 | Before call to method WriteLine | Assert.cs:46:9:46:36 | ...; | +| Assert.cs:46:9:46:35 | call to method WriteLine | Assert.cs:46:27:46:34 | After access to property Length | +| Assert.cs:46:9:46:36 | ...; | Assert.cs:45:9:45:34 | After ...; | +| Assert.cs:46:9:46:36 | After ...; | Assert.cs:46:9:46:35 | After call to method WriteLine | +| Assert.cs:46:27:46:27 | access to local variable s | Assert.cs:46:27:46:34 | Before access to property Length | +| Assert.cs:46:27:46:34 | After access to property Length | Assert.cs:46:27:46:34 | access to property Length | +| Assert.cs:46:27:46:34 | Before access to property Length | Assert.cs:46:9:46:35 | Before call to method WriteLine | | Assert.cs:46:27:46:34 | access to property Length | Assert.cs:46:27:46:27 | access to local variable s | -| Assert.cs:49:10:49:11 | exit M7 (normal) | Assert.cs:53:9:53:35 | call to method WriteLine | -| Assert.cs:50:5:54:5 | {...} | Assert.cs:49:10:49:11 | enter M7 | +| Assert.cs:49:10:49:11 | Normal Exit | Assert.cs:50:5:54:5 | After {...} | +| Assert.cs:49:18:49:18 | b | Assert.cs:49:10:49:11 | Entry | +| Assert.cs:50:5:54:5 | After {...} | Assert.cs:53:9:53:36 | After ...; | +| Assert.cs:50:5:54:5 | {...} | Assert.cs:49:18:49:18 | b | | Assert.cs:51:9:51:33 | ... ...; | Assert.cs:50:5:54:5 | {...} | -| Assert.cs:51:16:51:32 | String s = ... | Assert.cs:51:20:51:32 | ... ? ... : ... | -| Assert.cs:51:20:51:20 | access to parameter b | Assert.cs:51:9:51:33 | ... ...; | -| Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:51:24:51:27 | null | -| Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:51:31:51:32 | "" | -| Assert.cs:52:9:52:33 | call to method IsFalse | Assert.cs:52:24:52:32 | ... == ... | -| Assert.cs:52:9:52:34 | ...; | Assert.cs:51:16:51:32 | String s = ... | -| Assert.cs:52:24:52:24 | access to local variable s | Assert.cs:52:9:52:34 | ...; | +| Assert.cs:51:9:51:33 | After ... ...; | Assert.cs:51:16:51:32 | After String s = ... | +| Assert.cs:51:16:51:16 | access to local variable s | Assert.cs:51:16:51:32 | Before String s = ... | +| Assert.cs:51:16:51:32 | After String s = ... | Assert.cs:51:16:51:32 | String s = ... | +| Assert.cs:51:16:51:32 | Before String s = ... | Assert.cs:51:9:51:33 | ... ...; | +| Assert.cs:51:16:51:32 | String s = ... | Assert.cs:51:20:51:32 | After ... ? ... : ... | +| Assert.cs:51:20:51:20 | access to parameter b | Assert.cs:51:20:51:32 | ... ? ... : ... | +| Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:51:16:51:16 | access to local variable s | +| Assert.cs:51:20:51:32 | After ... ? ... : ... | Assert.cs:51:24:51:27 | null | +| Assert.cs:51:20:51:32 | After ... ? ... : ... | Assert.cs:51:31:51:32 | "" | +| Assert.cs:51:24:51:27 | null | Assert.cs:51:20:51:20 | After access to parameter b [true] | +| Assert.cs:51:31:51:32 | "" | Assert.cs:51:20:51:20 | After access to parameter b [false] | +| Assert.cs:52:9:52:33 | After call to method IsFalse | Assert.cs:52:9:52:33 | call to method IsFalse | +| Assert.cs:52:9:52:33 | Before call to method IsFalse | Assert.cs:52:9:52:34 | ...; | +| Assert.cs:52:9:52:33 | call to method IsFalse | Assert.cs:52:24:52:32 | After ... == ... | +| Assert.cs:52:9:52:34 | ...; | Assert.cs:51:9:51:33 | After ... ...; | +| Assert.cs:52:9:52:34 | After ...; | Assert.cs:52:9:52:33 | After call to method IsFalse | +| Assert.cs:52:24:52:24 | access to local variable s | Assert.cs:52:24:52:32 | Before ... == ... | | Assert.cs:52:24:52:32 | ... == ... | Assert.cs:52:29:52:32 | null | +| Assert.cs:52:24:52:32 | After ... == ... | Assert.cs:52:24:52:32 | ... == ... | +| Assert.cs:52:24:52:32 | Before ... == ... | Assert.cs:52:9:52:33 | Before call to method IsFalse | | Assert.cs:52:29:52:32 | null | Assert.cs:52:24:52:24 | access to local variable s | -| Assert.cs:53:9:53:35 | call to method WriteLine | Assert.cs:53:27:53:34 | access to property Length | -| Assert.cs:53:9:53:36 | ...; | Assert.cs:52:9:52:33 | call to method IsFalse | -| Assert.cs:53:27:53:27 | access to local variable s | Assert.cs:53:9:53:36 | ...; | +| Assert.cs:53:9:53:35 | After call to method WriteLine | Assert.cs:53:9:53:35 | call to method WriteLine | +| Assert.cs:53:9:53:35 | Before call to method WriteLine | Assert.cs:53:9:53:36 | ...; | +| Assert.cs:53:9:53:35 | call to method WriteLine | Assert.cs:53:27:53:34 | After access to property Length | +| Assert.cs:53:9:53:36 | ...; | Assert.cs:52:9:52:34 | After ...; | +| Assert.cs:53:9:53:36 | After ...; | Assert.cs:53:9:53:35 | After call to method WriteLine | +| Assert.cs:53:27:53:27 | access to local variable s | Assert.cs:53:27:53:34 | Before access to property Length | +| Assert.cs:53:27:53:34 | After access to property Length | Assert.cs:53:27:53:34 | access to property Length | +| Assert.cs:53:27:53:34 | Before access to property Length | Assert.cs:53:9:53:35 | Before call to method WriteLine | | Assert.cs:53:27:53:34 | access to property Length | Assert.cs:53:27:53:27 | access to local variable s | -| Assert.cs:56:10:56:11 | exit M8 (normal) | Assert.cs:60:9:60:35 | call to method WriteLine | -| Assert.cs:57:5:61:5 | {...} | Assert.cs:56:10:56:11 | enter M8 | +| Assert.cs:56:10:56:11 | Normal Exit | Assert.cs:57:5:61:5 | After {...} | +| Assert.cs:56:18:56:18 | b | Assert.cs:56:10:56:11 | Entry | +| Assert.cs:57:5:61:5 | After {...} | Assert.cs:60:9:60:36 | After ...; | +| Assert.cs:57:5:61:5 | {...} | Assert.cs:56:18:56:18 | b | | Assert.cs:58:9:58:33 | ... ...; | Assert.cs:57:5:61:5 | {...} | -| Assert.cs:58:16:58:32 | String s = ... | Assert.cs:58:20:58:32 | ... ? ... : ... | -| Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:9:58:33 | ... ...; | -| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:24:58:27 | null | -| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:31:58:32 | "" | -| Assert.cs:59:9:59:37 | call to method IsTrue | Assert.cs:59:23:59:36 | ... && ... | -| Assert.cs:59:9:59:38 | ...; | Assert.cs:58:16:58:32 | String s = ... | -| Assert.cs:59:23:59:23 | access to local variable s | Assert.cs:59:9:59:38 | ...; | +| Assert.cs:58:9:58:33 | After ... ...; | Assert.cs:58:16:58:32 | After String s = ... | +| Assert.cs:58:16:58:16 | access to local variable s | Assert.cs:58:16:58:32 | Before String s = ... | +| Assert.cs:58:16:58:32 | After String s = ... | Assert.cs:58:16:58:32 | String s = ... | +| Assert.cs:58:16:58:32 | Before String s = ... | Assert.cs:58:9:58:33 | ... ...; | +| Assert.cs:58:16:58:32 | String s = ... | Assert.cs:58:20:58:32 | After ... ? ... : ... | +| Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:20:58:32 | ... ? ... : ... | +| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:16:58:16 | access to local variable s | +| Assert.cs:58:20:58:32 | After ... ? ... : ... | Assert.cs:58:24:58:27 | null | +| Assert.cs:58:20:58:32 | After ... ? ... : ... | Assert.cs:58:31:58:32 | "" | +| Assert.cs:58:24:58:27 | null | Assert.cs:58:20:58:20 | After access to parameter b [true] | +| Assert.cs:58:31:58:32 | "" | Assert.cs:58:20:58:20 | After access to parameter b [false] | +| Assert.cs:59:9:59:37 | After call to method IsTrue | Assert.cs:59:9:59:37 | call to method IsTrue | +| Assert.cs:59:9:59:37 | Before call to method IsTrue | Assert.cs:59:9:59:38 | ...; | +| Assert.cs:59:9:59:37 | call to method IsTrue | Assert.cs:59:23:59:36 | After ... && ... | +| Assert.cs:59:9:59:38 | ...; | Assert.cs:58:9:58:33 | After ... ...; | +| Assert.cs:59:9:59:38 | After ...; | Assert.cs:59:9:59:37 | After call to method IsTrue | +| Assert.cs:59:23:59:23 | access to local variable s | Assert.cs:59:23:59:31 | Before ... != ... | | Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:28:59:31 | null | -| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:59:23:59:31 | ... != ... | -| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:59:36:59:36 | access to parameter b | +| Assert.cs:59:23:59:31 | Before ... != ... | Assert.cs:59:23:59:36 | ... && ... | +| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:59:9:59:37 | Before call to method IsTrue | +| Assert.cs:59:23:59:36 | After ... && ... | Assert.cs:59:23:59:31 | After ... != ... [false] | +| Assert.cs:59:23:59:36 | After ... && ... | Assert.cs:59:36:59:36 | access to parameter b | | Assert.cs:59:28:59:31 | null | Assert.cs:59:23:59:23 | access to local variable s | -| Assert.cs:60:9:60:35 | call to method WriteLine | Assert.cs:60:27:60:34 | access to property Length | -| Assert.cs:60:9:60:36 | ...; | Assert.cs:59:9:59:37 | call to method IsTrue | -| Assert.cs:60:27:60:27 | access to local variable s | Assert.cs:60:9:60:36 | ...; | +| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:23:59:31 | After ... != ... [true] | +| Assert.cs:60:9:60:35 | After call to method WriteLine | Assert.cs:60:9:60:35 | call to method WriteLine | +| Assert.cs:60:9:60:35 | Before call to method WriteLine | Assert.cs:60:9:60:36 | ...; | +| Assert.cs:60:9:60:35 | call to method WriteLine | Assert.cs:60:27:60:34 | After access to property Length | +| Assert.cs:60:9:60:36 | ...; | Assert.cs:59:9:59:38 | After ...; | +| Assert.cs:60:9:60:36 | After ...; | Assert.cs:60:9:60:35 | After call to method WriteLine | +| Assert.cs:60:27:60:27 | access to local variable s | Assert.cs:60:27:60:34 | Before access to property Length | +| Assert.cs:60:27:60:34 | After access to property Length | Assert.cs:60:27:60:34 | access to property Length | +| Assert.cs:60:27:60:34 | Before access to property Length | Assert.cs:60:9:60:35 | Before call to method WriteLine | | Assert.cs:60:27:60:34 | access to property Length | Assert.cs:60:27:60:27 | access to local variable s | -| Assert.cs:63:10:63:11 | exit M9 (normal) | Assert.cs:67:9:67:35 | call to method WriteLine | -| Assert.cs:64:5:68:5 | {...} | Assert.cs:63:10:63:11 | enter M9 | +| Assert.cs:63:10:63:11 | Normal Exit | Assert.cs:64:5:68:5 | After {...} | +| Assert.cs:63:18:63:18 | b | Assert.cs:63:10:63:11 | Entry | +| Assert.cs:64:5:68:5 | After {...} | Assert.cs:67:9:67:36 | After ...; | +| Assert.cs:64:5:68:5 | {...} | Assert.cs:63:18:63:18 | b | | Assert.cs:65:9:65:33 | ... ...; | Assert.cs:64:5:68:5 | {...} | -| Assert.cs:65:16:65:32 | String s = ... | Assert.cs:65:20:65:32 | ... ? ... : ... | -| Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:9:65:33 | ... ...; | -| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:24:65:27 | null | -| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:31:65:32 | "" | -| Assert.cs:66:9:66:38 | call to method IsFalse | Assert.cs:66:24:66:37 | ... \|\| ... | -| Assert.cs:66:9:66:39 | ...; | Assert.cs:65:16:65:32 | String s = ... | -| Assert.cs:66:24:66:24 | access to local variable s | Assert.cs:66:9:66:39 | ...; | +| Assert.cs:65:9:65:33 | After ... ...; | Assert.cs:65:16:65:32 | After String s = ... | +| Assert.cs:65:16:65:16 | access to local variable s | Assert.cs:65:16:65:32 | Before String s = ... | +| Assert.cs:65:16:65:32 | After String s = ... | Assert.cs:65:16:65:32 | String s = ... | +| Assert.cs:65:16:65:32 | Before String s = ... | Assert.cs:65:9:65:33 | ... ...; | +| Assert.cs:65:16:65:32 | String s = ... | Assert.cs:65:20:65:32 | After ... ? ... : ... | +| Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:20:65:32 | ... ? ... : ... | +| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:16:65:16 | access to local variable s | +| Assert.cs:65:20:65:32 | After ... ? ... : ... | Assert.cs:65:24:65:27 | null | +| Assert.cs:65:20:65:32 | After ... ? ... : ... | Assert.cs:65:31:65:32 | "" | +| Assert.cs:65:24:65:27 | null | Assert.cs:65:20:65:20 | After access to parameter b [true] | +| Assert.cs:65:31:65:32 | "" | Assert.cs:65:20:65:20 | After access to parameter b [false] | +| Assert.cs:66:9:66:38 | After call to method IsFalse | Assert.cs:66:9:66:38 | call to method IsFalse | +| Assert.cs:66:9:66:38 | Before call to method IsFalse | Assert.cs:66:9:66:39 | ...; | +| Assert.cs:66:9:66:38 | call to method IsFalse | Assert.cs:66:24:66:37 | After ... \|\| ... | +| Assert.cs:66:9:66:39 | ...; | Assert.cs:65:9:65:33 | After ... ...; | +| Assert.cs:66:9:66:39 | After ...; | Assert.cs:66:9:66:38 | After call to method IsFalse | +| Assert.cs:66:24:66:24 | access to local variable s | Assert.cs:66:24:66:32 | Before ... == ... | | Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:29:66:32 | null | -| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:66:24:66:32 | ... == ... | -| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:66:37:66:37 | access to parameter b | +| Assert.cs:66:24:66:32 | Before ... == ... | Assert.cs:66:24:66:37 | ... \|\| ... | +| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:66:9:66:38 | Before call to method IsFalse | +| Assert.cs:66:24:66:37 | After ... \|\| ... | Assert.cs:66:24:66:32 | After ... == ... [true] | +| Assert.cs:66:24:66:37 | After ... \|\| ... | Assert.cs:66:37:66:37 | access to parameter b | | Assert.cs:66:29:66:32 | null | Assert.cs:66:24:66:24 | access to local variable s | -| Assert.cs:67:9:67:35 | call to method WriteLine | Assert.cs:67:27:67:34 | access to property Length | -| Assert.cs:67:9:67:36 | ...; | Assert.cs:66:9:66:38 | call to method IsFalse | -| Assert.cs:67:27:67:27 | access to local variable s | Assert.cs:67:9:67:36 | ...; | +| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:24:66:32 | After ... == ... [false] | +| Assert.cs:67:9:67:35 | After call to method WriteLine | Assert.cs:67:9:67:35 | call to method WriteLine | +| Assert.cs:67:9:67:35 | Before call to method WriteLine | Assert.cs:67:9:67:36 | ...; | +| Assert.cs:67:9:67:35 | call to method WriteLine | Assert.cs:67:27:67:34 | After access to property Length | +| Assert.cs:67:9:67:36 | ...; | Assert.cs:66:9:66:39 | After ...; | +| Assert.cs:67:9:67:36 | After ...; | Assert.cs:67:9:67:35 | After call to method WriteLine | +| Assert.cs:67:27:67:27 | access to local variable s | Assert.cs:67:27:67:34 | Before access to property Length | +| Assert.cs:67:27:67:34 | After access to property Length | Assert.cs:67:27:67:34 | access to property Length | +| Assert.cs:67:27:67:34 | Before access to property Length | Assert.cs:67:9:67:35 | Before call to method WriteLine | | Assert.cs:67:27:67:34 | access to property Length | Assert.cs:67:27:67:27 | access to local variable s | -| Assert.cs:70:10:70:12 | exit M10 (normal) | Assert.cs:74:9:74:35 | call to method WriteLine | -| Assert.cs:71:5:75:5 | {...} | Assert.cs:70:10:70:12 | enter M10 | +| Assert.cs:70:10:70:12 | Normal Exit | Assert.cs:71:5:75:5 | After {...} | +| Assert.cs:70:19:70:19 | b | Assert.cs:70:10:70:12 | Entry | +| Assert.cs:71:5:75:5 | After {...} | Assert.cs:74:9:74:36 | After ...; | +| Assert.cs:71:5:75:5 | {...} | Assert.cs:70:19:70:19 | b | | Assert.cs:72:9:72:33 | ... ...; | Assert.cs:71:5:75:5 | {...} | -| Assert.cs:72:16:72:32 | String s = ... | Assert.cs:72:20:72:32 | ... ? ... : ... | -| Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:9:72:33 | ... ...; | -| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:24:72:27 | null | -| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:31:72:32 | "" | -| Assert.cs:73:9:73:37 | call to method IsTrue | Assert.cs:73:23:73:36 | ... && ... | -| Assert.cs:73:9:73:38 | ...; | Assert.cs:72:16:72:32 | String s = ... | -| Assert.cs:73:23:73:23 | access to local variable s | Assert.cs:73:9:73:38 | ...; | +| Assert.cs:72:9:72:33 | After ... ...; | Assert.cs:72:16:72:32 | After String s = ... | +| Assert.cs:72:16:72:16 | access to local variable s | Assert.cs:72:16:72:32 | Before String s = ... | +| Assert.cs:72:16:72:32 | After String s = ... | Assert.cs:72:16:72:32 | String s = ... | +| Assert.cs:72:16:72:32 | Before String s = ... | Assert.cs:72:9:72:33 | ... ...; | +| Assert.cs:72:16:72:32 | String s = ... | Assert.cs:72:20:72:32 | After ... ? ... : ... | +| Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:20:72:32 | ... ? ... : ... | +| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:16:72:16 | access to local variable s | +| Assert.cs:72:20:72:32 | After ... ? ... : ... | Assert.cs:72:24:72:27 | null | +| Assert.cs:72:20:72:32 | After ... ? ... : ... | Assert.cs:72:31:72:32 | "" | +| Assert.cs:72:24:72:27 | null | Assert.cs:72:20:72:20 | After access to parameter b [true] | +| Assert.cs:72:31:72:32 | "" | Assert.cs:72:20:72:20 | After access to parameter b [false] | +| Assert.cs:73:9:73:37 | After call to method IsTrue | Assert.cs:73:9:73:37 | call to method IsTrue | +| Assert.cs:73:9:73:37 | Before call to method IsTrue | Assert.cs:73:9:73:38 | ...; | +| Assert.cs:73:9:73:37 | call to method IsTrue | Assert.cs:73:23:73:36 | After ... && ... | +| Assert.cs:73:9:73:38 | ...; | Assert.cs:72:9:72:33 | After ... ...; | +| Assert.cs:73:9:73:38 | After ...; | Assert.cs:73:9:73:37 | After call to method IsTrue | +| Assert.cs:73:23:73:23 | access to local variable s | Assert.cs:73:23:73:31 | Before ... == ... | | Assert.cs:73:23:73:31 | ... == ... | Assert.cs:73:28:73:31 | null | -| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:73:23:73:31 | ... == ... | -| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:73:36:73:36 | access to parameter b | +| Assert.cs:73:23:73:31 | Before ... == ... | Assert.cs:73:23:73:36 | ... && ... | +| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:73:9:73:37 | Before call to method IsTrue | +| Assert.cs:73:23:73:36 | After ... && ... | Assert.cs:73:23:73:31 | After ... == ... [false] | +| Assert.cs:73:23:73:36 | After ... && ... | Assert.cs:73:36:73:36 | access to parameter b | | Assert.cs:73:28:73:31 | null | Assert.cs:73:23:73:23 | access to local variable s | -| Assert.cs:74:9:74:35 | call to method WriteLine | Assert.cs:74:27:74:34 | access to property Length | -| Assert.cs:74:9:74:36 | ...; | Assert.cs:73:9:73:37 | call to method IsTrue | -| Assert.cs:74:27:74:27 | access to local variable s | Assert.cs:74:9:74:36 | ...; | +| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:23:73:31 | After ... == ... [true] | +| Assert.cs:74:9:74:35 | After call to method WriteLine | Assert.cs:74:9:74:35 | call to method WriteLine | +| Assert.cs:74:9:74:35 | Before call to method WriteLine | Assert.cs:74:9:74:36 | ...; | +| Assert.cs:74:9:74:35 | call to method WriteLine | Assert.cs:74:27:74:34 | After access to property Length | +| Assert.cs:74:9:74:36 | ...; | Assert.cs:73:9:73:38 | After ...; | +| Assert.cs:74:9:74:36 | After ...; | Assert.cs:74:9:74:35 | After call to method WriteLine | +| Assert.cs:74:27:74:27 | access to local variable s | Assert.cs:74:27:74:34 | Before access to property Length | +| Assert.cs:74:27:74:34 | After access to property Length | Assert.cs:74:27:74:34 | access to property Length | +| Assert.cs:74:27:74:34 | Before access to property Length | Assert.cs:74:9:74:35 | Before call to method WriteLine | | Assert.cs:74:27:74:34 | access to property Length | Assert.cs:74:27:74:27 | access to local variable s | -| Assert.cs:77:10:77:12 | exit M11 (normal) | Assert.cs:81:9:81:35 | call to method WriteLine | -| Assert.cs:78:5:82:5 | {...} | Assert.cs:77:10:77:12 | enter M11 | +| Assert.cs:77:10:77:12 | Normal Exit | Assert.cs:78:5:82:5 | After {...} | +| Assert.cs:77:19:77:19 | b | Assert.cs:77:10:77:12 | Entry | +| Assert.cs:78:5:82:5 | After {...} | Assert.cs:81:9:81:36 | After ...; | +| Assert.cs:78:5:82:5 | {...} | Assert.cs:77:19:77:19 | b | | Assert.cs:79:9:79:33 | ... ...; | Assert.cs:78:5:82:5 | {...} | -| Assert.cs:79:16:79:32 | String s = ... | Assert.cs:79:20:79:32 | ... ? ... : ... | -| Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:9:79:33 | ... ...; | -| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:24:79:27 | null | -| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:31:79:32 | "" | -| Assert.cs:80:9:80:38 | call to method IsFalse | Assert.cs:80:24:80:37 | ... \|\| ... | -| Assert.cs:80:9:80:39 | ...; | Assert.cs:79:16:79:32 | String s = ... | -| Assert.cs:80:24:80:24 | access to local variable s | Assert.cs:80:9:80:39 | ...; | +| Assert.cs:79:9:79:33 | After ... ...; | Assert.cs:79:16:79:32 | After String s = ... | +| Assert.cs:79:16:79:16 | access to local variable s | Assert.cs:79:16:79:32 | Before String s = ... | +| Assert.cs:79:16:79:32 | After String s = ... | Assert.cs:79:16:79:32 | String s = ... | +| Assert.cs:79:16:79:32 | Before String s = ... | Assert.cs:79:9:79:33 | ... ...; | +| Assert.cs:79:16:79:32 | String s = ... | Assert.cs:79:20:79:32 | After ... ? ... : ... | +| Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:20:79:32 | ... ? ... : ... | +| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:16:79:16 | access to local variable s | +| Assert.cs:79:20:79:32 | After ... ? ... : ... | Assert.cs:79:24:79:27 | null | +| Assert.cs:79:20:79:32 | After ... ? ... : ... | Assert.cs:79:31:79:32 | "" | +| Assert.cs:79:24:79:27 | null | Assert.cs:79:20:79:20 | After access to parameter b [true] | +| Assert.cs:79:31:79:32 | "" | Assert.cs:79:20:79:20 | After access to parameter b [false] | +| Assert.cs:80:9:80:38 | After call to method IsFalse | Assert.cs:80:9:80:38 | call to method IsFalse | +| Assert.cs:80:9:80:38 | Before call to method IsFalse | Assert.cs:80:9:80:39 | ...; | +| Assert.cs:80:9:80:38 | call to method IsFalse | Assert.cs:80:24:80:37 | After ... \|\| ... | +| Assert.cs:80:9:80:39 | ...; | Assert.cs:79:9:79:33 | After ... ...; | +| Assert.cs:80:9:80:39 | After ...; | Assert.cs:80:9:80:38 | After call to method IsFalse | +| Assert.cs:80:24:80:24 | access to local variable s | Assert.cs:80:24:80:32 | Before ... != ... | | Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:29:80:32 | null | -| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:80:24:80:32 | ... != ... | -| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:80:37:80:37 | access to parameter b | +| Assert.cs:80:24:80:32 | Before ... != ... | Assert.cs:80:24:80:37 | ... \|\| ... | +| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:80:9:80:38 | Before call to method IsFalse | +| Assert.cs:80:24:80:37 | After ... \|\| ... | Assert.cs:80:24:80:32 | After ... != ... [true] | +| Assert.cs:80:24:80:37 | After ... \|\| ... | Assert.cs:80:37:80:37 | access to parameter b | | Assert.cs:80:29:80:32 | null | Assert.cs:80:24:80:24 | access to local variable s | -| Assert.cs:81:9:81:35 | call to method WriteLine | Assert.cs:81:27:81:34 | access to property Length | -| Assert.cs:81:9:81:36 | ...; | Assert.cs:80:9:80:38 | call to method IsFalse | -| Assert.cs:81:27:81:27 | access to local variable s | Assert.cs:81:9:81:36 | ...; | +| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:24:80:32 | After ... != ... [false] | +| Assert.cs:81:9:81:35 | After call to method WriteLine | Assert.cs:81:9:81:35 | call to method WriteLine | +| Assert.cs:81:9:81:35 | Before call to method WriteLine | Assert.cs:81:9:81:36 | ...; | +| Assert.cs:81:9:81:35 | call to method WriteLine | Assert.cs:81:27:81:34 | After access to property Length | +| Assert.cs:81:9:81:36 | ...; | Assert.cs:80:9:80:39 | After ...; | +| Assert.cs:81:9:81:36 | After ...; | Assert.cs:81:9:81:35 | After call to method WriteLine | +| Assert.cs:81:27:81:27 | access to local variable s | Assert.cs:81:27:81:34 | Before access to property Length | +| Assert.cs:81:27:81:34 | After access to property Length | Assert.cs:81:27:81:34 | access to property Length | +| Assert.cs:81:27:81:34 | Before access to property Length | Assert.cs:81:9:81:35 | Before call to method WriteLine | | Assert.cs:81:27:81:34 | access to property Length | Assert.cs:81:27:81:27 | access to local variable s | -| Assert.cs:84:10:84:12 | exit M12 (normal) | Assert.cs:128:9:128:35 | call to method WriteLine | -| Assert.cs:85:5:129:5 | {...} | Assert.cs:84:10:84:12 | enter M12 | +| Assert.cs:84:10:84:12 | Normal Exit | Assert.cs:85:5:129:5 | After {...} | +| Assert.cs:84:19:84:19 | b | Assert.cs:84:10:84:12 | Entry | +| Assert.cs:85:5:129:5 | After {...} | Assert.cs:128:9:128:36 | After ...; | +| Assert.cs:85:5:129:5 | {...} | Assert.cs:84:19:84:19 | b | | Assert.cs:86:9:86:33 | ... ...; | Assert.cs:85:5:129:5 | {...} | -| Assert.cs:86:16:86:32 | String s = ... | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:86:9:86:33 | ... ...; | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:86:24:86:27 | null | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:86:31:86:32 | "" | -| Assert.cs:87:9:87:31 | call to method Assert | Assert.cs:87:22:87:30 | ... != ... | -| Assert.cs:87:9:87:32 | ...; | Assert.cs:86:16:86:32 | String s = ... | -| Assert.cs:87:22:87:22 | access to local variable s | Assert.cs:87:9:87:32 | ...; | +| Assert.cs:86:9:86:33 | After ... ...; | Assert.cs:86:16:86:32 | After String s = ... | +| Assert.cs:86:16:86:16 | access to local variable s | Assert.cs:86:16:86:32 | Before String s = ... | +| Assert.cs:86:16:86:32 | After String s = ... | Assert.cs:86:16:86:32 | String s = ... | +| Assert.cs:86:16:86:32 | Before String s = ... | Assert.cs:86:9:86:33 | ... ...; | +| Assert.cs:86:16:86:32 | String s = ... | Assert.cs:86:20:86:32 | After ... ? ... : ... | +| Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:86:20:86:32 | ... ? ... : ... | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:86:16:86:16 | access to local variable s | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:86:24:86:27 | null | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:86:31:86:32 | "" | +| Assert.cs:86:24:86:27 | null | Assert.cs:86:20:86:20 | After access to parameter b [true] | +| Assert.cs:86:31:86:32 | "" | Assert.cs:86:20:86:20 | After access to parameter b [false] | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:87:9:87:31 | call to method Assert | +| Assert.cs:87:9:87:31 | Before call to method Assert | Assert.cs:87:9:87:32 | ...; | +| Assert.cs:87:9:87:31 | call to method Assert | Assert.cs:87:22:87:30 | After ... != ... | +| Assert.cs:87:9:87:32 | ...; | Assert.cs:86:9:86:33 | After ... ...; | +| Assert.cs:87:9:87:32 | After ...; | Assert.cs:87:9:87:31 | After call to method Assert | +| Assert.cs:87:22:87:22 | access to local variable s | Assert.cs:87:22:87:30 | Before ... != ... | | Assert.cs:87:22:87:30 | ... != ... | Assert.cs:87:27:87:30 | null | +| Assert.cs:87:22:87:30 | After ... != ... | Assert.cs:87:22:87:30 | ... != ... | +| Assert.cs:87:22:87:30 | Before ... != ... | Assert.cs:87:9:87:31 | Before call to method Assert | | Assert.cs:87:27:87:30 | null | Assert.cs:87:22:87:22 | access to local variable s | -| Assert.cs:88:9:88:35 | call to method WriteLine | Assert.cs:88:27:88:34 | access to property Length | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:87:9:87:31 | call to method Assert | -| Assert.cs:88:27:88:27 | access to local variable s | Assert.cs:88:9:88:36 | ...; | +| Assert.cs:88:9:88:35 | After call to method WriteLine | Assert.cs:88:9:88:35 | call to method WriteLine | +| Assert.cs:88:9:88:35 | Before call to method WriteLine | Assert.cs:88:9:88:36 | ...; | +| Assert.cs:88:9:88:35 | call to method WriteLine | Assert.cs:88:27:88:34 | After access to property Length | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:87:9:87:32 | After ...; | +| Assert.cs:88:9:88:36 | After ...; | Assert.cs:88:9:88:35 | After call to method WriteLine | +| Assert.cs:88:27:88:27 | access to local variable s | Assert.cs:88:27:88:34 | Before access to property Length | +| Assert.cs:88:27:88:34 | After access to property Length | Assert.cs:88:27:88:34 | access to property Length | +| Assert.cs:88:27:88:34 | Before access to property Length | Assert.cs:88:9:88:35 | Before call to method WriteLine | | Assert.cs:88:27:88:34 | access to property Length | Assert.cs:88:27:88:27 | access to local variable s | -| Assert.cs:90:9:90:25 | ... = ... | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:90:9:90:26 | ...; | Assert.cs:88:9:88:35 | call to method WriteLine | -| Assert.cs:90:13:90:13 | access to parameter b | Assert.cs:90:9:90:26 | ...; | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | +| Assert.cs:90:9:90:9 | access to local variable s | Assert.cs:90:9:90:25 | Before ... = ... | +| Assert.cs:90:9:90:25 | ... = ... | Assert.cs:90:13:90:25 | After ... ? ... : ... | +| Assert.cs:90:9:90:25 | After ... = ... | Assert.cs:90:9:90:25 | ... = ... | +| Assert.cs:90:9:90:25 | Before ... = ... | Assert.cs:90:9:90:26 | ...; | +| Assert.cs:90:9:90:26 | ...; | Assert.cs:88:9:88:36 | After ...; | +| Assert.cs:90:9:90:26 | After ...; | Assert.cs:90:9:90:25 | After ... = ... | +| Assert.cs:90:13:90:13 | access to parameter b | Assert.cs:90:13:90:25 | ... ? ... : ... | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:90:9:90:9 | access to local variable s | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:90:17:90:20 | null | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:90:24:90:25 | "" | +| Assert.cs:90:17:90:20 | null | Assert.cs:90:13:90:13 | After access to parameter b [true] | +| Assert.cs:90:24:90:25 | "" | Assert.cs:90:13:90:13 | After access to parameter b [false] | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:91:9:91:24 | call to method IsNull | +| Assert.cs:91:9:91:24 | Before call to method IsNull | Assert.cs:91:9:91:25 | ...; | | Assert.cs:91:9:91:24 | call to method IsNull | Assert.cs:91:23:91:23 | access to local variable s | -| Assert.cs:91:9:91:25 | ...; | Assert.cs:90:9:90:25 | ... = ... | -| Assert.cs:91:23:91:23 | access to local variable s | Assert.cs:91:9:91:25 | ...; | -| Assert.cs:92:9:92:35 | call to method WriteLine | Assert.cs:92:27:92:34 | access to property Length | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:91:9:91:24 | call to method IsNull | -| Assert.cs:92:27:92:27 | access to local variable s | Assert.cs:92:9:92:36 | ...; | +| Assert.cs:91:9:91:25 | ...; | Assert.cs:90:9:90:26 | After ...; | +| Assert.cs:91:9:91:25 | After ...; | Assert.cs:91:9:91:24 | After call to method IsNull | +| Assert.cs:91:23:91:23 | access to local variable s | Assert.cs:91:9:91:24 | Before call to method IsNull | +| Assert.cs:92:9:92:35 | After call to method WriteLine | Assert.cs:92:9:92:35 | call to method WriteLine | +| Assert.cs:92:9:92:35 | Before call to method WriteLine | Assert.cs:92:9:92:36 | ...; | +| Assert.cs:92:9:92:35 | call to method WriteLine | Assert.cs:92:27:92:34 | After access to property Length | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:91:9:91:25 | After ...; | +| Assert.cs:92:9:92:36 | After ...; | Assert.cs:92:9:92:35 | After call to method WriteLine | +| Assert.cs:92:27:92:27 | access to local variable s | Assert.cs:92:27:92:34 | Before access to property Length | +| Assert.cs:92:27:92:34 | After access to property Length | Assert.cs:92:27:92:34 | access to property Length | +| Assert.cs:92:27:92:34 | Before access to property Length | Assert.cs:92:9:92:35 | Before call to method WriteLine | | Assert.cs:92:27:92:34 | access to property Length | Assert.cs:92:27:92:27 | access to local variable s | -| Assert.cs:94:9:94:25 | ... = ... | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:94:9:94:26 | ...; | Assert.cs:92:9:92:35 | call to method WriteLine | -| Assert.cs:94:13:94:13 | access to parameter b | Assert.cs:94:9:94:26 | ...; | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | +| Assert.cs:94:9:94:9 | access to local variable s | Assert.cs:94:9:94:25 | Before ... = ... | +| Assert.cs:94:9:94:25 | ... = ... | Assert.cs:94:13:94:25 | After ... ? ... : ... | +| Assert.cs:94:9:94:25 | After ... = ... | Assert.cs:94:9:94:25 | ... = ... | +| Assert.cs:94:9:94:25 | Before ... = ... | Assert.cs:94:9:94:26 | ...; | +| Assert.cs:94:9:94:26 | ...; | Assert.cs:92:9:92:36 | After ...; | +| Assert.cs:94:9:94:26 | After ...; | Assert.cs:94:9:94:25 | After ... = ... | +| Assert.cs:94:13:94:13 | access to parameter b | Assert.cs:94:13:94:25 | ... ? ... : ... | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:94:9:94:9 | access to local variable s | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:94:17:94:20 | null | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:94:24:94:25 | "" | +| Assert.cs:94:17:94:20 | null | Assert.cs:94:13:94:13 | After access to parameter b [true] | +| Assert.cs:94:24:94:25 | "" | Assert.cs:94:13:94:13 | After access to parameter b [false] | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:95:9:95:27 | call to method IsNotNull | +| Assert.cs:95:9:95:27 | Before call to method IsNotNull | Assert.cs:95:9:95:28 | ...; | | Assert.cs:95:9:95:27 | call to method IsNotNull | Assert.cs:95:26:95:26 | access to local variable s | -| Assert.cs:95:9:95:28 | ...; | Assert.cs:94:9:94:25 | ... = ... | -| Assert.cs:95:26:95:26 | access to local variable s | Assert.cs:95:9:95:28 | ...; | -| Assert.cs:96:9:96:35 | call to method WriteLine | Assert.cs:96:27:96:34 | access to property Length | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:95:9:95:27 | call to method IsNotNull | -| Assert.cs:96:27:96:27 | access to local variable s | Assert.cs:96:9:96:36 | ...; | +| Assert.cs:95:9:95:28 | ...; | Assert.cs:94:9:94:26 | After ...; | +| Assert.cs:95:9:95:28 | After ...; | Assert.cs:95:9:95:27 | After call to method IsNotNull | +| Assert.cs:95:26:95:26 | access to local variable s | Assert.cs:95:9:95:27 | Before call to method IsNotNull | +| Assert.cs:96:9:96:35 | After call to method WriteLine | Assert.cs:96:9:96:35 | call to method WriteLine | +| Assert.cs:96:9:96:35 | Before call to method WriteLine | Assert.cs:96:9:96:36 | ...; | +| Assert.cs:96:9:96:35 | call to method WriteLine | Assert.cs:96:27:96:34 | After access to property Length | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:95:9:95:28 | After ...; | +| Assert.cs:96:9:96:36 | After ...; | Assert.cs:96:9:96:35 | After call to method WriteLine | +| Assert.cs:96:27:96:27 | access to local variable s | Assert.cs:96:27:96:34 | Before access to property Length | +| Assert.cs:96:27:96:34 | After access to property Length | Assert.cs:96:27:96:34 | access to property Length | +| Assert.cs:96:27:96:34 | Before access to property Length | Assert.cs:96:9:96:35 | Before call to method WriteLine | | Assert.cs:96:27:96:34 | access to property Length | Assert.cs:96:27:96:27 | access to local variable s | -| Assert.cs:98:9:98:25 | ... = ... | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:98:9:98:26 | ...; | Assert.cs:96:9:96:35 | call to method WriteLine | -| Assert.cs:98:13:98:13 | access to parameter b | Assert.cs:98:9:98:26 | ...; | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | -| Assert.cs:99:9:99:32 | call to method IsTrue | Assert.cs:99:23:99:31 | ... == ... | -| Assert.cs:99:9:99:33 | ...; | Assert.cs:98:9:98:25 | ... = ... | -| Assert.cs:99:23:99:23 | access to local variable s | Assert.cs:99:9:99:33 | ...; | +| Assert.cs:98:9:98:9 | access to local variable s | Assert.cs:98:9:98:25 | Before ... = ... | +| Assert.cs:98:9:98:25 | ... = ... | Assert.cs:98:13:98:25 | After ... ? ... : ... | +| Assert.cs:98:9:98:25 | After ... = ... | Assert.cs:98:9:98:25 | ... = ... | +| Assert.cs:98:9:98:25 | Before ... = ... | Assert.cs:98:9:98:26 | ...; | +| Assert.cs:98:9:98:26 | ...; | Assert.cs:96:9:96:36 | After ...; | +| Assert.cs:98:9:98:26 | After ...; | Assert.cs:98:9:98:25 | After ... = ... | +| Assert.cs:98:13:98:13 | access to parameter b | Assert.cs:98:13:98:25 | ... ? ... : ... | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:98:9:98:9 | access to local variable s | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:98:17:98:20 | null | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:98:24:98:25 | "" | +| Assert.cs:98:17:98:20 | null | Assert.cs:98:13:98:13 | After access to parameter b [true] | +| Assert.cs:98:24:98:25 | "" | Assert.cs:98:13:98:13 | After access to parameter b [false] | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:99:9:99:32 | call to method IsTrue | +| Assert.cs:99:9:99:32 | Before call to method IsTrue | Assert.cs:99:9:99:33 | ...; | +| Assert.cs:99:9:99:32 | call to method IsTrue | Assert.cs:99:23:99:31 | After ... == ... | +| Assert.cs:99:9:99:33 | ...; | Assert.cs:98:9:98:26 | After ...; | +| Assert.cs:99:9:99:33 | After ...; | Assert.cs:99:9:99:32 | After call to method IsTrue | +| Assert.cs:99:23:99:23 | access to local variable s | Assert.cs:99:23:99:31 | Before ... == ... | | Assert.cs:99:23:99:31 | ... == ... | Assert.cs:99:28:99:31 | null | +| Assert.cs:99:23:99:31 | After ... == ... | Assert.cs:99:23:99:31 | ... == ... | +| Assert.cs:99:23:99:31 | Before ... == ... | Assert.cs:99:9:99:32 | Before call to method IsTrue | | Assert.cs:99:28:99:31 | null | Assert.cs:99:23:99:23 | access to local variable s | -| Assert.cs:100:9:100:35 | call to method WriteLine | Assert.cs:100:27:100:34 | access to property Length | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:99:9:99:32 | call to method IsTrue | -| Assert.cs:100:27:100:27 | access to local variable s | Assert.cs:100:9:100:36 | ...; | +| Assert.cs:100:9:100:35 | After call to method WriteLine | Assert.cs:100:9:100:35 | call to method WriteLine | +| Assert.cs:100:9:100:35 | Before call to method WriteLine | Assert.cs:100:9:100:36 | ...; | +| Assert.cs:100:9:100:35 | call to method WriteLine | Assert.cs:100:27:100:34 | After access to property Length | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:99:9:99:33 | After ...; | +| Assert.cs:100:9:100:36 | After ...; | Assert.cs:100:9:100:35 | After call to method WriteLine | +| Assert.cs:100:27:100:27 | access to local variable s | Assert.cs:100:27:100:34 | Before access to property Length | +| Assert.cs:100:27:100:34 | After access to property Length | Assert.cs:100:27:100:34 | access to property Length | +| Assert.cs:100:27:100:34 | Before access to property Length | Assert.cs:100:9:100:35 | Before call to method WriteLine | | Assert.cs:100:27:100:34 | access to property Length | Assert.cs:100:27:100:27 | access to local variable s | -| Assert.cs:102:9:102:25 | ... = ... | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:102:9:102:26 | ...; | Assert.cs:100:9:100:35 | call to method WriteLine | -| Assert.cs:102:13:102:13 | access to parameter b | Assert.cs:102:9:102:26 | ...; | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | -| Assert.cs:103:9:103:32 | call to method IsTrue | Assert.cs:103:23:103:31 | ... != ... | -| Assert.cs:103:9:103:33 | ...; | Assert.cs:102:9:102:25 | ... = ... | -| Assert.cs:103:23:103:23 | access to local variable s | Assert.cs:103:9:103:33 | ...; | +| Assert.cs:102:9:102:9 | access to local variable s | Assert.cs:102:9:102:25 | Before ... = ... | +| Assert.cs:102:9:102:25 | ... = ... | Assert.cs:102:13:102:25 | After ... ? ... : ... | +| Assert.cs:102:9:102:25 | After ... = ... | Assert.cs:102:9:102:25 | ... = ... | +| Assert.cs:102:9:102:25 | Before ... = ... | Assert.cs:102:9:102:26 | ...; | +| Assert.cs:102:9:102:26 | ...; | Assert.cs:100:9:100:36 | After ...; | +| Assert.cs:102:9:102:26 | After ...; | Assert.cs:102:9:102:25 | After ... = ... | +| Assert.cs:102:13:102:13 | access to parameter b | Assert.cs:102:13:102:25 | ... ? ... : ... | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:102:9:102:9 | access to local variable s | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:102:17:102:20 | null | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:102:24:102:25 | "" | +| Assert.cs:102:17:102:20 | null | Assert.cs:102:13:102:13 | After access to parameter b [true] | +| Assert.cs:102:24:102:25 | "" | Assert.cs:102:13:102:13 | After access to parameter b [false] | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:103:9:103:32 | call to method IsTrue | +| Assert.cs:103:9:103:32 | Before call to method IsTrue | Assert.cs:103:9:103:33 | ...; | +| Assert.cs:103:9:103:32 | call to method IsTrue | Assert.cs:103:23:103:31 | After ... != ... | +| Assert.cs:103:9:103:33 | ...; | Assert.cs:102:9:102:26 | After ...; | +| Assert.cs:103:9:103:33 | After ...; | Assert.cs:103:9:103:32 | After call to method IsTrue | +| Assert.cs:103:23:103:23 | access to local variable s | Assert.cs:103:23:103:31 | Before ... != ... | | Assert.cs:103:23:103:31 | ... != ... | Assert.cs:103:28:103:31 | null | +| Assert.cs:103:23:103:31 | After ... != ... | Assert.cs:103:23:103:31 | ... != ... | +| Assert.cs:103:23:103:31 | Before ... != ... | Assert.cs:103:9:103:32 | Before call to method IsTrue | | Assert.cs:103:28:103:31 | null | Assert.cs:103:23:103:23 | access to local variable s | -| Assert.cs:104:9:104:35 | call to method WriteLine | Assert.cs:104:27:104:34 | access to property Length | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:103:9:103:32 | call to method IsTrue | -| Assert.cs:104:27:104:27 | access to local variable s | Assert.cs:104:9:104:36 | ...; | +| Assert.cs:104:9:104:35 | After call to method WriteLine | Assert.cs:104:9:104:35 | call to method WriteLine | +| Assert.cs:104:9:104:35 | Before call to method WriteLine | Assert.cs:104:9:104:36 | ...; | +| Assert.cs:104:9:104:35 | call to method WriteLine | Assert.cs:104:27:104:34 | After access to property Length | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:103:9:103:33 | After ...; | +| Assert.cs:104:9:104:36 | After ...; | Assert.cs:104:9:104:35 | After call to method WriteLine | +| Assert.cs:104:27:104:27 | access to local variable s | Assert.cs:104:27:104:34 | Before access to property Length | +| Assert.cs:104:27:104:34 | After access to property Length | Assert.cs:104:27:104:34 | access to property Length | +| Assert.cs:104:27:104:34 | Before access to property Length | Assert.cs:104:9:104:35 | Before call to method WriteLine | | Assert.cs:104:27:104:34 | access to property Length | Assert.cs:104:27:104:27 | access to local variable s | -| Assert.cs:106:9:106:25 | ... = ... | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:106:9:106:26 | ...; | Assert.cs:104:9:104:35 | call to method WriteLine | -| Assert.cs:106:13:106:13 | access to parameter b | Assert.cs:106:9:106:26 | ...; | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | -| Assert.cs:107:9:107:33 | call to method IsFalse | Assert.cs:107:24:107:32 | ... != ... | -| Assert.cs:107:9:107:34 | ...; | Assert.cs:106:9:106:25 | ... = ... | -| Assert.cs:107:24:107:24 | access to local variable s | Assert.cs:107:9:107:34 | ...; | +| Assert.cs:106:9:106:9 | access to local variable s | Assert.cs:106:9:106:25 | Before ... = ... | +| Assert.cs:106:9:106:25 | ... = ... | Assert.cs:106:13:106:25 | After ... ? ... : ... | +| Assert.cs:106:9:106:25 | After ... = ... | Assert.cs:106:9:106:25 | ... = ... | +| Assert.cs:106:9:106:25 | Before ... = ... | Assert.cs:106:9:106:26 | ...; | +| Assert.cs:106:9:106:26 | ...; | Assert.cs:104:9:104:36 | After ...; | +| Assert.cs:106:9:106:26 | After ...; | Assert.cs:106:9:106:25 | After ... = ... | +| Assert.cs:106:13:106:13 | access to parameter b | Assert.cs:106:13:106:25 | ... ? ... : ... | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:106:9:106:9 | access to local variable s | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:106:17:106:20 | null | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:106:24:106:25 | "" | +| Assert.cs:106:17:106:20 | null | Assert.cs:106:13:106:13 | After access to parameter b [true] | +| Assert.cs:106:24:106:25 | "" | Assert.cs:106:13:106:13 | After access to parameter b [false] | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:107:9:107:33 | call to method IsFalse | +| Assert.cs:107:9:107:33 | Before call to method IsFalse | Assert.cs:107:9:107:34 | ...; | +| Assert.cs:107:9:107:33 | call to method IsFalse | Assert.cs:107:24:107:32 | After ... != ... | +| Assert.cs:107:9:107:34 | ...; | Assert.cs:106:9:106:26 | After ...; | +| Assert.cs:107:9:107:34 | After ...; | Assert.cs:107:9:107:33 | After call to method IsFalse | +| Assert.cs:107:24:107:24 | access to local variable s | Assert.cs:107:24:107:32 | Before ... != ... | | Assert.cs:107:24:107:32 | ... != ... | Assert.cs:107:29:107:32 | null | +| Assert.cs:107:24:107:32 | After ... != ... | Assert.cs:107:24:107:32 | ... != ... | +| Assert.cs:107:24:107:32 | Before ... != ... | Assert.cs:107:9:107:33 | Before call to method IsFalse | | Assert.cs:107:29:107:32 | null | Assert.cs:107:24:107:24 | access to local variable s | -| Assert.cs:108:9:108:35 | call to method WriteLine | Assert.cs:108:27:108:34 | access to property Length | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:107:9:107:33 | call to method IsFalse | -| Assert.cs:108:27:108:27 | access to local variable s | Assert.cs:108:9:108:36 | ...; | +| Assert.cs:108:9:108:35 | After call to method WriteLine | Assert.cs:108:9:108:35 | call to method WriteLine | +| Assert.cs:108:9:108:35 | Before call to method WriteLine | Assert.cs:108:9:108:36 | ...; | +| Assert.cs:108:9:108:35 | call to method WriteLine | Assert.cs:108:27:108:34 | After access to property Length | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:107:9:107:34 | After ...; | +| Assert.cs:108:9:108:36 | After ...; | Assert.cs:108:9:108:35 | After call to method WriteLine | +| Assert.cs:108:27:108:27 | access to local variable s | Assert.cs:108:27:108:34 | Before access to property Length | +| Assert.cs:108:27:108:34 | After access to property Length | Assert.cs:108:27:108:34 | access to property Length | +| Assert.cs:108:27:108:34 | Before access to property Length | Assert.cs:108:9:108:35 | Before call to method WriteLine | | Assert.cs:108:27:108:34 | access to property Length | Assert.cs:108:27:108:27 | access to local variable s | -| Assert.cs:110:9:110:25 | ... = ... | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:110:9:110:26 | ...; | Assert.cs:108:9:108:35 | call to method WriteLine | -| Assert.cs:110:13:110:13 | access to parameter b | Assert.cs:110:9:110:26 | ...; | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | -| Assert.cs:111:9:111:33 | call to method IsFalse | Assert.cs:111:24:111:32 | ... == ... | -| Assert.cs:111:9:111:34 | ...; | Assert.cs:110:9:110:25 | ... = ... | -| Assert.cs:111:24:111:24 | access to local variable s | Assert.cs:111:9:111:34 | ...; | +| Assert.cs:110:9:110:9 | access to local variable s | Assert.cs:110:9:110:25 | Before ... = ... | +| Assert.cs:110:9:110:25 | ... = ... | Assert.cs:110:13:110:25 | After ... ? ... : ... | +| Assert.cs:110:9:110:25 | After ... = ... | Assert.cs:110:9:110:25 | ... = ... | +| Assert.cs:110:9:110:25 | Before ... = ... | Assert.cs:110:9:110:26 | ...; | +| Assert.cs:110:9:110:26 | ...; | Assert.cs:108:9:108:36 | After ...; | +| Assert.cs:110:9:110:26 | After ...; | Assert.cs:110:9:110:25 | After ... = ... | +| Assert.cs:110:13:110:13 | access to parameter b | Assert.cs:110:13:110:25 | ... ? ... : ... | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:110:9:110:9 | access to local variable s | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:110:17:110:20 | null | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:110:24:110:25 | "" | +| Assert.cs:110:17:110:20 | null | Assert.cs:110:13:110:13 | After access to parameter b [true] | +| Assert.cs:110:24:110:25 | "" | Assert.cs:110:13:110:13 | After access to parameter b [false] | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:111:9:111:33 | call to method IsFalse | +| Assert.cs:111:9:111:33 | Before call to method IsFalse | Assert.cs:111:9:111:34 | ...; | +| Assert.cs:111:9:111:33 | call to method IsFalse | Assert.cs:111:24:111:32 | After ... == ... | +| Assert.cs:111:9:111:34 | ...; | Assert.cs:110:9:110:26 | After ...; | +| Assert.cs:111:9:111:34 | After ...; | Assert.cs:111:9:111:33 | After call to method IsFalse | +| Assert.cs:111:24:111:24 | access to local variable s | Assert.cs:111:24:111:32 | Before ... == ... | | Assert.cs:111:24:111:32 | ... == ... | Assert.cs:111:29:111:32 | null | +| Assert.cs:111:24:111:32 | After ... == ... | Assert.cs:111:24:111:32 | ... == ... | +| Assert.cs:111:24:111:32 | Before ... == ... | Assert.cs:111:9:111:33 | Before call to method IsFalse | | Assert.cs:111:29:111:32 | null | Assert.cs:111:24:111:24 | access to local variable s | -| Assert.cs:112:9:112:35 | call to method WriteLine | Assert.cs:112:27:112:34 | access to property Length | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:111:9:111:33 | call to method IsFalse | -| Assert.cs:112:27:112:27 | access to local variable s | Assert.cs:112:9:112:36 | ...; | +| Assert.cs:112:9:112:35 | After call to method WriteLine | Assert.cs:112:9:112:35 | call to method WriteLine | +| Assert.cs:112:9:112:35 | Before call to method WriteLine | Assert.cs:112:9:112:36 | ...; | +| Assert.cs:112:9:112:35 | call to method WriteLine | Assert.cs:112:27:112:34 | After access to property Length | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:111:9:111:34 | After ...; | +| Assert.cs:112:9:112:36 | After ...; | Assert.cs:112:9:112:35 | After call to method WriteLine | +| Assert.cs:112:27:112:27 | access to local variable s | Assert.cs:112:27:112:34 | Before access to property Length | +| Assert.cs:112:27:112:34 | After access to property Length | Assert.cs:112:27:112:34 | access to property Length | +| Assert.cs:112:27:112:34 | Before access to property Length | Assert.cs:112:9:112:35 | Before call to method WriteLine | | Assert.cs:112:27:112:34 | access to property Length | Assert.cs:112:27:112:27 | access to local variable s | -| Assert.cs:114:9:114:25 | ... = ... | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:114:9:114:26 | ...; | Assert.cs:112:9:112:35 | call to method WriteLine | -| Assert.cs:114:13:114:13 | access to parameter b | Assert.cs:114:9:114:26 | ...; | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | -| Assert.cs:115:9:115:37 | call to method IsTrue | Assert.cs:115:23:115:36 | ... && ... | -| Assert.cs:115:9:115:38 | ...; | Assert.cs:114:9:114:25 | ... = ... | -| Assert.cs:115:23:115:23 | access to local variable s | Assert.cs:115:9:115:38 | ...; | +| Assert.cs:114:9:114:9 | access to local variable s | Assert.cs:114:9:114:25 | Before ... = ... | +| Assert.cs:114:9:114:25 | ... = ... | Assert.cs:114:13:114:25 | After ... ? ... : ... | +| Assert.cs:114:9:114:25 | After ... = ... | Assert.cs:114:9:114:25 | ... = ... | +| Assert.cs:114:9:114:25 | Before ... = ... | Assert.cs:114:9:114:26 | ...; | +| Assert.cs:114:9:114:26 | ...; | Assert.cs:112:9:112:36 | After ...; | +| Assert.cs:114:9:114:26 | After ...; | Assert.cs:114:9:114:25 | After ... = ... | +| Assert.cs:114:13:114:13 | access to parameter b | Assert.cs:114:13:114:25 | ... ? ... : ... | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:114:9:114:9 | access to local variable s | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:114:17:114:20 | null | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:114:24:114:25 | "" | +| Assert.cs:114:17:114:20 | null | Assert.cs:114:13:114:13 | After access to parameter b [true] | +| Assert.cs:114:24:114:25 | "" | Assert.cs:114:13:114:13 | After access to parameter b [false] | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:115:9:115:37 | call to method IsTrue | +| Assert.cs:115:9:115:37 | Before call to method IsTrue | Assert.cs:115:9:115:38 | ...; | +| Assert.cs:115:9:115:37 | call to method IsTrue | Assert.cs:115:23:115:36 | After ... && ... | +| Assert.cs:115:9:115:38 | ...; | Assert.cs:114:9:114:26 | After ...; | +| Assert.cs:115:9:115:38 | After ...; | Assert.cs:115:9:115:37 | After call to method IsTrue | +| Assert.cs:115:23:115:23 | access to local variable s | Assert.cs:115:23:115:31 | Before ... != ... | | Assert.cs:115:23:115:31 | ... != ... | Assert.cs:115:28:115:31 | null | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:115:23:115:31 | ... != ... | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:115:36:115:36 | access to parameter b | +| Assert.cs:115:23:115:31 | Before ... != ... | Assert.cs:115:23:115:36 | ... && ... | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:115:9:115:37 | Before call to method IsTrue | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:115:23:115:31 | After ... != ... [false] | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:115:36:115:36 | access to parameter b | | Assert.cs:115:28:115:31 | null | Assert.cs:115:23:115:23 | access to local variable s | -| Assert.cs:116:9:116:35 | call to method WriteLine | Assert.cs:116:27:116:34 | access to property Length | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:115:9:115:37 | call to method IsTrue | -| Assert.cs:116:27:116:27 | access to local variable s | Assert.cs:116:9:116:36 | ...; | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:23:115:31 | After ... != ... [true] | +| Assert.cs:116:9:116:35 | After call to method WriteLine | Assert.cs:116:9:116:35 | call to method WriteLine | +| Assert.cs:116:9:116:35 | Before call to method WriteLine | Assert.cs:116:9:116:36 | ...; | +| Assert.cs:116:9:116:35 | call to method WriteLine | Assert.cs:116:27:116:34 | After access to property Length | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:115:9:115:38 | After ...; | +| Assert.cs:116:9:116:36 | After ...; | Assert.cs:116:9:116:35 | After call to method WriteLine | +| Assert.cs:116:27:116:27 | access to local variable s | Assert.cs:116:27:116:34 | Before access to property Length | +| Assert.cs:116:27:116:34 | After access to property Length | Assert.cs:116:27:116:34 | access to property Length | +| Assert.cs:116:27:116:34 | Before access to property Length | Assert.cs:116:9:116:35 | Before call to method WriteLine | | Assert.cs:116:27:116:34 | access to property Length | Assert.cs:116:27:116:27 | access to local variable s | -| Assert.cs:118:9:118:25 | ... = ... | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:118:9:118:26 | ...; | Assert.cs:116:9:116:35 | call to method WriteLine | -| Assert.cs:118:13:118:13 | access to parameter b | Assert.cs:118:9:118:26 | ...; | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | -| Assert.cs:119:9:119:39 | call to method IsFalse | Assert.cs:119:24:119:38 | ... \|\| ... | -| Assert.cs:119:9:119:40 | ...; | Assert.cs:118:9:118:25 | ... = ... | -| Assert.cs:119:24:119:24 | access to local variable s | Assert.cs:119:9:119:40 | ...; | +| Assert.cs:118:9:118:9 | access to local variable s | Assert.cs:118:9:118:25 | Before ... = ... | +| Assert.cs:118:9:118:25 | ... = ... | Assert.cs:118:13:118:25 | After ... ? ... : ... | +| Assert.cs:118:9:118:25 | After ... = ... | Assert.cs:118:9:118:25 | ... = ... | +| Assert.cs:118:9:118:25 | Before ... = ... | Assert.cs:118:9:118:26 | ...; | +| Assert.cs:118:9:118:26 | ...; | Assert.cs:116:9:116:36 | After ...; | +| Assert.cs:118:9:118:26 | After ...; | Assert.cs:118:9:118:25 | After ... = ... | +| Assert.cs:118:13:118:13 | access to parameter b | Assert.cs:118:13:118:25 | ... ? ... : ... | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:118:9:118:9 | access to local variable s | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:118:17:118:20 | null | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:118:24:118:25 | "" | +| Assert.cs:118:17:118:20 | null | Assert.cs:118:13:118:13 | After access to parameter b [true] | +| Assert.cs:118:24:118:25 | "" | Assert.cs:118:13:118:13 | After access to parameter b [false] | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:119:9:119:39 | call to method IsFalse | +| Assert.cs:119:9:119:39 | Before call to method IsFalse | Assert.cs:119:9:119:40 | ...; | +| Assert.cs:119:9:119:39 | call to method IsFalse | Assert.cs:119:24:119:38 | After ... \|\| ... | +| Assert.cs:119:9:119:40 | ...; | Assert.cs:118:9:118:26 | After ...; | +| Assert.cs:119:9:119:40 | After ...; | Assert.cs:119:9:119:39 | After call to method IsFalse | +| Assert.cs:119:24:119:24 | access to local variable s | Assert.cs:119:24:119:32 | Before ... == ... | | Assert.cs:119:24:119:32 | ... == ... | Assert.cs:119:29:119:32 | null | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:119:24:119:32 | ... == ... | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:119:37:119:38 | !... | +| Assert.cs:119:24:119:32 | Before ... == ... | Assert.cs:119:24:119:38 | ... \|\| ... | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:119:9:119:39 | Before call to method IsFalse | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:119:24:119:32 | After ... == ... [true] | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:119:37:119:38 | After !... | | Assert.cs:119:29:119:32 | null | Assert.cs:119:24:119:24 | access to local variable s | -| Assert.cs:119:37:119:38 | !... | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:120:9:120:35 | call to method WriteLine | Assert.cs:120:27:120:34 | access to property Length | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:119:9:119:39 | call to method IsFalse | -| Assert.cs:120:27:120:27 | access to local variable s | Assert.cs:120:9:120:36 | ...; | +| Assert.cs:119:37:119:38 | !... | Assert.cs:119:24:119:32 | After ... == ... [false] | +| Assert.cs:119:37:119:38 | After !... | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:37:119:38 | !... | +| Assert.cs:120:9:120:35 | After call to method WriteLine | Assert.cs:120:9:120:35 | call to method WriteLine | +| Assert.cs:120:9:120:35 | Before call to method WriteLine | Assert.cs:120:9:120:36 | ...; | +| Assert.cs:120:9:120:35 | call to method WriteLine | Assert.cs:120:27:120:34 | After access to property Length | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:119:9:119:40 | After ...; | +| Assert.cs:120:9:120:36 | After ...; | Assert.cs:120:9:120:35 | After call to method WriteLine | +| Assert.cs:120:27:120:27 | access to local variable s | Assert.cs:120:27:120:34 | Before access to property Length | +| Assert.cs:120:27:120:34 | After access to property Length | Assert.cs:120:27:120:34 | access to property Length | +| Assert.cs:120:27:120:34 | Before access to property Length | Assert.cs:120:9:120:35 | Before call to method WriteLine | | Assert.cs:120:27:120:34 | access to property Length | Assert.cs:120:27:120:27 | access to local variable s | -| Assert.cs:122:9:122:25 | ... = ... | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:122:9:122:26 | ...; | Assert.cs:120:9:120:35 | call to method WriteLine | -| Assert.cs:122:13:122:13 | access to parameter b | Assert.cs:122:9:122:26 | ...; | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | -| Assert.cs:123:9:123:37 | call to method IsTrue | Assert.cs:123:23:123:36 | ... && ... | -| Assert.cs:123:9:123:38 | ...; | Assert.cs:122:9:122:25 | ... = ... | -| Assert.cs:123:23:123:23 | access to local variable s | Assert.cs:123:9:123:38 | ...; | +| Assert.cs:122:9:122:9 | access to local variable s | Assert.cs:122:9:122:25 | Before ... = ... | +| Assert.cs:122:9:122:25 | ... = ... | Assert.cs:122:13:122:25 | After ... ? ... : ... | +| Assert.cs:122:9:122:25 | After ... = ... | Assert.cs:122:9:122:25 | ... = ... | +| Assert.cs:122:9:122:25 | Before ... = ... | Assert.cs:122:9:122:26 | ...; | +| Assert.cs:122:9:122:26 | ...; | Assert.cs:120:9:120:36 | After ...; | +| Assert.cs:122:9:122:26 | After ...; | Assert.cs:122:9:122:25 | After ... = ... | +| Assert.cs:122:13:122:13 | access to parameter b | Assert.cs:122:13:122:25 | ... ? ... : ... | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:122:9:122:9 | access to local variable s | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:122:17:122:20 | null | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:122:24:122:25 | "" | +| Assert.cs:122:17:122:20 | null | Assert.cs:122:13:122:13 | After access to parameter b [true] | +| Assert.cs:122:24:122:25 | "" | Assert.cs:122:13:122:13 | After access to parameter b [false] | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:123:9:123:37 | call to method IsTrue | +| Assert.cs:123:9:123:37 | Before call to method IsTrue | Assert.cs:123:9:123:38 | ...; | +| Assert.cs:123:9:123:37 | call to method IsTrue | Assert.cs:123:23:123:36 | After ... && ... | +| Assert.cs:123:9:123:38 | ...; | Assert.cs:122:9:122:26 | After ...; | +| Assert.cs:123:9:123:38 | After ...; | Assert.cs:123:9:123:37 | After call to method IsTrue | +| Assert.cs:123:23:123:23 | access to local variable s | Assert.cs:123:23:123:31 | Before ... == ... | | Assert.cs:123:23:123:31 | ... == ... | Assert.cs:123:28:123:31 | null | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:123:23:123:31 | ... == ... | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:123:36:123:36 | access to parameter b | +| Assert.cs:123:23:123:31 | Before ... == ... | Assert.cs:123:23:123:36 | ... && ... | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:123:9:123:37 | Before call to method IsTrue | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:123:23:123:31 | After ... == ... [false] | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:123:36:123:36 | access to parameter b | | Assert.cs:123:28:123:31 | null | Assert.cs:123:23:123:23 | access to local variable s | -| Assert.cs:124:9:124:35 | call to method WriteLine | Assert.cs:124:27:124:34 | access to property Length | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:123:9:123:37 | call to method IsTrue | -| Assert.cs:124:27:124:27 | access to local variable s | Assert.cs:124:9:124:36 | ...; | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:23:123:31 | After ... == ... [true] | +| Assert.cs:124:9:124:35 | After call to method WriteLine | Assert.cs:124:9:124:35 | call to method WriteLine | +| Assert.cs:124:9:124:35 | Before call to method WriteLine | Assert.cs:124:9:124:36 | ...; | +| Assert.cs:124:9:124:35 | call to method WriteLine | Assert.cs:124:27:124:34 | After access to property Length | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:123:9:123:38 | After ...; | +| Assert.cs:124:9:124:36 | After ...; | Assert.cs:124:9:124:35 | After call to method WriteLine | +| Assert.cs:124:27:124:27 | access to local variable s | Assert.cs:124:27:124:34 | Before access to property Length | +| Assert.cs:124:27:124:34 | After access to property Length | Assert.cs:124:27:124:34 | access to property Length | +| Assert.cs:124:27:124:34 | Before access to property Length | Assert.cs:124:9:124:35 | Before call to method WriteLine | | Assert.cs:124:27:124:34 | access to property Length | Assert.cs:124:27:124:27 | access to local variable s | -| Assert.cs:126:9:126:25 | ... = ... | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:126:9:126:26 | ...; | Assert.cs:124:9:124:35 | call to method WriteLine | -| Assert.cs:126:13:126:13 | access to parameter b | Assert.cs:126:9:126:26 | ...; | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | -| Assert.cs:127:9:127:39 | call to method IsFalse | Assert.cs:127:24:127:38 | ... \|\| ... | -| Assert.cs:127:9:127:40 | ...; | Assert.cs:126:9:126:25 | ... = ... | -| Assert.cs:127:24:127:24 | access to local variable s | Assert.cs:127:9:127:40 | ...; | +| Assert.cs:126:9:126:9 | access to local variable s | Assert.cs:126:9:126:25 | Before ... = ... | +| Assert.cs:126:9:126:25 | ... = ... | Assert.cs:126:13:126:25 | After ... ? ... : ... | +| Assert.cs:126:9:126:25 | After ... = ... | Assert.cs:126:9:126:25 | ... = ... | +| Assert.cs:126:9:126:25 | Before ... = ... | Assert.cs:126:9:126:26 | ...; | +| Assert.cs:126:9:126:26 | ...; | Assert.cs:124:9:124:36 | After ...; | +| Assert.cs:126:9:126:26 | After ...; | Assert.cs:126:9:126:25 | After ... = ... | +| Assert.cs:126:13:126:13 | access to parameter b | Assert.cs:126:13:126:25 | ... ? ... : ... | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:126:9:126:9 | access to local variable s | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:126:17:126:20 | null | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:126:24:126:25 | "" | +| Assert.cs:126:17:126:20 | null | Assert.cs:126:13:126:13 | After access to parameter b [true] | +| Assert.cs:126:24:126:25 | "" | Assert.cs:126:13:126:13 | After access to parameter b [false] | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:127:9:127:39 | call to method IsFalse | +| Assert.cs:127:9:127:39 | Before call to method IsFalse | Assert.cs:127:9:127:40 | ...; | +| Assert.cs:127:9:127:39 | call to method IsFalse | Assert.cs:127:24:127:38 | After ... \|\| ... | +| Assert.cs:127:9:127:40 | ...; | Assert.cs:126:9:126:26 | After ...; | +| Assert.cs:127:9:127:40 | After ...; | Assert.cs:127:9:127:39 | After call to method IsFalse | +| Assert.cs:127:24:127:24 | access to local variable s | Assert.cs:127:24:127:32 | Before ... != ... | | Assert.cs:127:24:127:32 | ... != ... | Assert.cs:127:29:127:32 | null | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:127:24:127:32 | ... != ... | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:127:37:127:38 | !... | +| Assert.cs:127:24:127:32 | Before ... != ... | Assert.cs:127:24:127:38 | ... \|\| ... | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:127:9:127:39 | Before call to method IsFalse | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:127:24:127:32 | After ... != ... [true] | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:127:37:127:38 | After !... | | Assert.cs:127:29:127:32 | null | Assert.cs:127:24:127:24 | access to local variable s | -| Assert.cs:127:37:127:38 | !... | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:128:9:128:35 | call to method WriteLine | Assert.cs:128:27:128:34 | access to property Length | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:127:9:127:39 | call to method IsFalse | -| Assert.cs:128:27:128:27 | access to local variable s | Assert.cs:128:9:128:36 | ...; | +| Assert.cs:127:37:127:38 | !... | Assert.cs:127:24:127:32 | After ... != ... [false] | +| Assert.cs:127:37:127:38 | After !... | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:37:127:38 | !... | +| Assert.cs:128:9:128:35 | After call to method WriteLine | Assert.cs:128:9:128:35 | call to method WriteLine | +| Assert.cs:128:9:128:35 | Before call to method WriteLine | Assert.cs:128:9:128:36 | ...; | +| Assert.cs:128:9:128:35 | call to method WriteLine | Assert.cs:128:27:128:34 | After access to property Length | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:127:9:127:40 | After ...; | +| Assert.cs:128:9:128:36 | After ...; | Assert.cs:128:9:128:35 | After call to method WriteLine | +| Assert.cs:128:27:128:27 | access to local variable s | Assert.cs:128:27:128:34 | Before access to property Length | +| Assert.cs:128:27:128:34 | After access to property Length | Assert.cs:128:27:128:34 | access to property Length | +| Assert.cs:128:27:128:34 | Before access to property Length | Assert.cs:128:9:128:35 | Before call to method WriteLine | | Assert.cs:128:27:128:34 | access to property Length | Assert.cs:128:27:128:27 | access to local variable s | -| Assert.cs:131:18:131:32 | exit AssertTrueFalse | Assert.cs:131:18:131:32 | exit AssertTrueFalse (normal) | -| Assert.cs:131:18:131:32 | exit AssertTrueFalse (normal) | Assert.cs:135:5:136:5 | {...} | -| Assert.cs:135:5:136:5 | {...} | Assert.cs:131:18:131:32 | enter AssertTrueFalse | -| Assert.cs:138:10:138:12 | exit M13 (normal) | Assert.cs:141:9:141:15 | return ...; | -| Assert.cs:139:5:142:5 | {...} | Assert.cs:138:10:138:12 | enter M13 | +| Assert.cs:131:18:131:32 | Exit | Assert.cs:131:18:131:32 | Normal Exit | +| Assert.cs:131:18:131:32 | Normal Exit | Assert.cs:135:5:136:5 | {...} | +| Assert.cs:132:74:132:83 | condition1 | Assert.cs:131:18:131:32 | Entry | +| Assert.cs:133:73:133:82 | condition2 | Assert.cs:132:74:132:83 | condition1 | +| Assert.cs:134:17:134:28 | nonCondition | Assert.cs:133:73:133:82 | condition2 | +| Assert.cs:135:5:136:5 | {...} | Assert.cs:134:17:134:28 | nonCondition | +| Assert.cs:138:10:138:12 | Normal Exit | Assert.cs:141:9:141:15 | return ...; | +| Assert.cs:138:19:138:20 | b1 | Assert.cs:138:10:138:12 | Entry | +| Assert.cs:138:28:138:29 | b2 | Assert.cs:138:19:138:20 | b1 | +| Assert.cs:138:37:138:38 | b3 | Assert.cs:138:28:138:29 | b2 | +| Assert.cs:139:5:142:5 | {...} | Assert.cs:138:37:138:38 | b3 | +| Assert.cs:140:9:140:35 | After call to method AssertTrueFalse | Assert.cs:140:9:140:35 | call to method AssertTrueFalse | +| Assert.cs:140:9:140:35 | Before call to method AssertTrueFalse | Assert.cs:140:9:140:36 | ...; | | Assert.cs:140:9:140:35 | call to method AssertTrueFalse | Assert.cs:140:33:140:34 | access to parameter b3 | -| Assert.cs:140:9:140:35 | this access | Assert.cs:140:9:140:36 | ...; | +| Assert.cs:140:9:140:35 | this access | Assert.cs:140:9:140:35 | Before call to method AssertTrueFalse | | Assert.cs:140:9:140:36 | ...; | Assert.cs:139:5:142:5 | {...} | +| Assert.cs:140:9:140:36 | After ...; | Assert.cs:140:9:140:35 | After call to method AssertTrueFalse | | Assert.cs:140:25:140:26 | access to parameter b1 | Assert.cs:140:9:140:35 | this access | | Assert.cs:140:29:140:30 | access to parameter b2 | Assert.cs:140:25:140:26 | access to parameter b1 | | Assert.cs:140:33:140:34 | access to parameter b3 | Assert.cs:140:29:140:30 | access to parameter b2 | -| Assert.cs:141:9:141:15 | return ...; | Assert.cs:140:9:140:35 | call to method AssertTrueFalse | -| Assignments.cs:1:7:1:17 | call to constructor Object | Assignments.cs:1:7:1:17 | call to method | +| Assert.cs:141:9:141:15 | Before return ...; | Assert.cs:140:9:140:36 | After ...; | +| Assert.cs:141:9:141:15 | return ...; | Assert.cs:141:9:141:15 | Before return ...; | +| Assignments.cs:1:7:1:17 | After call to constructor Object | Assignments.cs:1:7:1:17 | call to constructor Object | +| Assignments.cs:1:7:1:17 | After call to method | Assignments.cs:1:7:1:17 | call to method | +| Assignments.cs:1:7:1:17 | Before call to constructor Object | Assignments.cs:1:7:1:17 | After call to method | +| Assignments.cs:1:7:1:17 | Before call to method | Assignments.cs:1:7:1:17 | Entry | +| Assignments.cs:1:7:1:17 | Exit | Assignments.cs:1:7:1:17 | Normal Exit | +| Assignments.cs:1:7:1:17 | Normal Exit | Assignments.cs:1:7:1:17 | {...} | +| Assignments.cs:1:7:1:17 | call to constructor Object | Assignments.cs:1:7:1:17 | Before call to constructor Object | | Assignments.cs:1:7:1:17 | call to method | Assignments.cs:1:7:1:17 | this access | -| Assignments.cs:1:7:1:17 | exit Assignments | Assignments.cs:1:7:1:17 | exit Assignments (normal) | -| Assignments.cs:1:7:1:17 | exit Assignments (normal) | Assignments.cs:1:7:1:17 | {...} | -| Assignments.cs:1:7:1:17 | this access | Assignments.cs:1:7:1:17 | enter Assignments | -| Assignments.cs:1:7:1:17 | {...} | Assignments.cs:1:7:1:17 | call to constructor Object | -| Assignments.cs:3:10:3:10 | exit M | Assignments.cs:3:10:3:10 | exit M (normal) | -| Assignments.cs:3:10:3:10 | exit M (normal) | Assignments.cs:14:9:14:35 | ... += ... | -| Assignments.cs:4:5:15:5 | {...} | Assignments.cs:3:10:3:10 | enter M | +| Assignments.cs:1:7:1:17 | this access | Assignments.cs:1:7:1:17 | Before call to method | +| Assignments.cs:1:7:1:17 | {...} | Assignments.cs:1:7:1:17 | After call to constructor Object | +| Assignments.cs:3:10:3:10 | Exit | Assignments.cs:3:10:3:10 | Normal Exit | +| Assignments.cs:3:10:3:10 | Normal Exit | Assignments.cs:4:5:15:5 | After {...} | +| Assignments.cs:4:5:15:5 | After {...} | Assignments.cs:14:9:14:36 | After ...; | +| Assignments.cs:4:5:15:5 | {...} | Assignments.cs:3:10:3:10 | Entry | | Assignments.cs:5:9:5:18 | ... ...; | Assignments.cs:4:5:15:5 | {...} | +| Assignments.cs:5:9:5:18 | After ... ...; | Assignments.cs:5:13:5:17 | After Int32 x = ... | +| Assignments.cs:5:13:5:13 | access to local variable x | Assignments.cs:5:13:5:17 | Before Int32 x = ... | +| Assignments.cs:5:13:5:17 | After Int32 x = ... | Assignments.cs:5:13:5:17 | Int32 x = ... | +| Assignments.cs:5:13:5:17 | Before Int32 x = ... | Assignments.cs:5:9:5:18 | ... ...; | | Assignments.cs:5:13:5:17 | Int32 x = ... | Assignments.cs:5:17:5:17 | 0 | -| Assignments.cs:5:17:5:17 | 0 | Assignments.cs:5:9:5:18 | ... ...; | -| Assignments.cs:6:9:6:9 | access to local variable x | Assignments.cs:6:9:6:15 | ...; | +| Assignments.cs:5:17:5:17 | 0 | Assignments.cs:5:13:5:13 | access to local variable x | +| Assignments.cs:6:9:6:9 | access to local variable x | Assignments.cs:6:9:6:14 | Before ... += ... | | Assignments.cs:6:9:6:14 | ... += ... | Assignments.cs:6:14:6:14 | 1 | -| Assignments.cs:6:9:6:15 | ...; | Assignments.cs:5:13:5:17 | Int32 x = ... | +| Assignments.cs:6:9:6:14 | After ... += ... | Assignments.cs:6:9:6:14 | ... += ... | +| Assignments.cs:6:9:6:14 | Before ... += ... | Assignments.cs:6:9:6:15 | ...; | +| Assignments.cs:6:9:6:15 | ...; | Assignments.cs:5:9:5:18 | After ... ...; | +| Assignments.cs:6:9:6:15 | After ...; | Assignments.cs:6:9:6:14 | After ... += ... | | Assignments.cs:6:14:6:14 | 1 | Assignments.cs:6:9:6:9 | access to local variable x | -| Assignments.cs:8:9:8:22 | ... ...; | Assignments.cs:6:9:6:14 | ... += ... | -| Assignments.cs:8:17:8:21 | dynamic d = ... | Assignments.cs:8:21:8:21 | (...) ... | -| Assignments.cs:8:21:8:21 | 0 | Assignments.cs:8:9:8:22 | ... ...; | +| Assignments.cs:8:9:8:22 | ... ...; | Assignments.cs:6:9:6:15 | After ...; | +| Assignments.cs:8:9:8:22 | After ... ...; | Assignments.cs:8:17:8:21 | After dynamic d = ... | +| Assignments.cs:8:17:8:17 | access to local variable d | Assignments.cs:8:17:8:21 | Before dynamic d = ... | +| Assignments.cs:8:17:8:21 | After dynamic d = ... | Assignments.cs:8:17:8:21 | dynamic d = ... | +| Assignments.cs:8:17:8:21 | Before dynamic d = ... | Assignments.cs:8:9:8:22 | ... ...; | +| Assignments.cs:8:17:8:21 | dynamic d = ... | Assignments.cs:8:21:8:21 | After (...) ... | +| Assignments.cs:8:21:8:21 | 0 | Assignments.cs:8:21:8:21 | Before (...) ... | | Assignments.cs:8:21:8:21 | (...) ... | Assignments.cs:8:21:8:21 | 0 | -| Assignments.cs:9:9:9:9 | access to local variable d | Assignments.cs:9:9:9:15 | ...; | +| Assignments.cs:8:21:8:21 | After (...) ... | Assignments.cs:8:21:8:21 | (...) ... | +| Assignments.cs:8:21:8:21 | Before (...) ... | Assignments.cs:8:17:8:17 | access to local variable d | +| Assignments.cs:9:9:9:9 | access to local variable d | Assignments.cs:9:9:9:14 | Before ... -= ... | | Assignments.cs:9:9:9:14 | ... -= ... | Assignments.cs:9:14:9:14 | 2 | -| Assignments.cs:9:9:9:15 | ...; | Assignments.cs:8:17:8:21 | dynamic d = ... | +| Assignments.cs:9:9:9:14 | After ... -= ... | Assignments.cs:9:9:9:14 | ... -= ... | +| Assignments.cs:9:9:9:14 | Before ... -= ... | Assignments.cs:9:9:9:15 | ...; | +| Assignments.cs:9:9:9:15 | ...; | Assignments.cs:8:9:8:22 | After ... ...; | +| Assignments.cs:9:9:9:15 | After ...; | Assignments.cs:9:9:9:14 | After ... -= ... | | Assignments.cs:9:14:9:14 | 2 | Assignments.cs:9:9:9:9 | access to local variable d | -| Assignments.cs:11:9:11:34 | ... ...; | Assignments.cs:9:9:9:14 | ... -= ... | -| Assignments.cs:11:13:11:33 | Assignments a = ... | Assignments.cs:11:17:11:33 | object creation of type Assignments | -| Assignments.cs:11:17:11:33 | object creation of type Assignments | Assignments.cs:11:9:11:34 | ... ...; | -| Assignments.cs:12:9:12:9 | access to local variable a | Assignments.cs:12:9:12:18 | ...; | +| Assignments.cs:11:9:11:34 | ... ...; | Assignments.cs:9:9:9:15 | After ...; | +| Assignments.cs:11:9:11:34 | After ... ...; | Assignments.cs:11:13:11:33 | After Assignments a = ... | +| Assignments.cs:11:13:11:13 | access to local variable a | Assignments.cs:11:13:11:33 | Before Assignments a = ... | +| Assignments.cs:11:13:11:33 | After Assignments a = ... | Assignments.cs:11:13:11:33 | Assignments a = ... | +| Assignments.cs:11:13:11:33 | Assignments a = ... | Assignments.cs:11:17:11:33 | After object creation of type Assignments | +| Assignments.cs:11:13:11:33 | Before Assignments a = ... | Assignments.cs:11:9:11:34 | ... ...; | +| Assignments.cs:11:17:11:33 | After object creation of type Assignments | Assignments.cs:11:17:11:33 | object creation of type Assignments | +| Assignments.cs:11:17:11:33 | Before object creation of type Assignments | Assignments.cs:11:13:11:13 | access to local variable a | +| Assignments.cs:11:17:11:33 | object creation of type Assignments | Assignments.cs:11:17:11:33 | Before object creation of type Assignments | +| Assignments.cs:12:9:12:9 | access to local variable a | Assignments.cs:12:9:12:17 | Before ... += ... | | Assignments.cs:12:9:12:17 | ... += ... | Assignments.cs:12:14:12:17 | this access | -| Assignments.cs:12:9:12:18 | ...; | Assignments.cs:11:13:11:33 | Assignments a = ... | +| Assignments.cs:12:9:12:17 | After ... += ... | Assignments.cs:12:9:12:17 | ... += ... | +| Assignments.cs:12:9:12:17 | Before ... += ... | Assignments.cs:12:9:12:18 | ...; | +| Assignments.cs:12:9:12:18 | ...; | Assignments.cs:11:9:11:34 | After ... ...; | +| Assignments.cs:12:9:12:18 | After ...; | Assignments.cs:12:9:12:17 | After ... += ... | | Assignments.cs:12:14:12:17 | this access | Assignments.cs:12:9:12:9 | access to local variable a | -| Assignments.cs:14:9:14:13 | access to event Event | Assignments.cs:14:18:14:35 | (...) => ... | -| Assignments.cs:14:9:14:13 | this access | Assignments.cs:14:9:14:36 | ...; | -| Assignments.cs:14:9:14:35 | ... += ... | Assignments.cs:14:9:14:13 | access to event Event | -| Assignments.cs:14:9:14:36 | ...; | Assignments.cs:12:9:12:17 | ... += ... | -| Assignments.cs:14:18:14:35 | (...) => ... | Assignments.cs:14:9:14:13 | this access | -| Assignments.cs:14:18:14:35 | exit (...) => ... | Assignments.cs:14:18:14:35 | exit (...) => ... (normal) | -| Assignments.cs:14:18:14:35 | exit (...) => ... (normal) | Assignments.cs:14:33:14:35 | {...} | -| Assignments.cs:14:33:14:35 | {...} | Assignments.cs:14:18:14:35 | enter (...) => ... | -| Assignments.cs:17:40:17:40 | exit + | Assignments.cs:17:40:17:40 | exit + (normal) | -| Assignments.cs:17:40:17:40 | exit + (normal) | Assignments.cs:19:9:19:17 | return ...; | -| Assignments.cs:18:5:20:5 | {...} | Assignments.cs:17:40:17:40 | enter + | +| Assignments.cs:14:9:14:13 | After access to event Event | Assignments.cs:14:9:14:13 | access to event Event | +| Assignments.cs:14:9:14:13 | Before access to event Event | Assignments.cs:14:9:14:35 | Before ... += ... | +| Assignments.cs:14:9:14:13 | access to event Event | Assignments.cs:14:9:14:13 | this access | +| Assignments.cs:14:9:14:13 | this access | Assignments.cs:14:9:14:13 | Before access to event Event | +| Assignments.cs:14:9:14:35 | ... += ... | Assignments.cs:14:18:14:35 | (...) => ... | +| Assignments.cs:14:9:14:35 | After ... += ... | Assignments.cs:14:9:14:35 | ... += ... | +| Assignments.cs:14:9:14:35 | Before ... += ... | Assignments.cs:14:9:14:36 | ...; | +| Assignments.cs:14:9:14:36 | ...; | Assignments.cs:12:9:12:18 | After ...; | +| Assignments.cs:14:9:14:36 | After ...; | Assignments.cs:14:9:14:35 | After ... += ... | +| Assignments.cs:14:18:14:35 | (...) => ... | Assignments.cs:14:9:14:13 | After access to event Event | +| Assignments.cs:14:18:14:35 | Exit | Assignments.cs:14:18:14:35 | Normal Exit | +| Assignments.cs:14:18:14:35 | Normal Exit | Assignments.cs:14:33:14:35 | {...} | +| Assignments.cs:14:19:14:24 | sender | Assignments.cs:14:18:14:35 | Entry | +| Assignments.cs:14:27:14:27 | e | Assignments.cs:14:19:14:24 | sender | +| Assignments.cs:14:33:14:35 | {...} | Assignments.cs:14:27:14:27 | e | +| Assignments.cs:17:40:17:40 | Exit | Assignments.cs:17:40:17:40 | Normal Exit | +| Assignments.cs:17:40:17:40 | Normal Exit | Assignments.cs:19:9:19:17 | return ...; | +| Assignments.cs:17:54:17:54 | x | Assignments.cs:17:40:17:40 | Entry | +| Assignments.cs:17:69:17:69 | y | Assignments.cs:17:54:17:54 | x | +| Assignments.cs:18:5:20:5 | {...} | Assignments.cs:17:69:17:69 | y | +| Assignments.cs:19:9:19:17 | Before return ...; | Assignments.cs:18:5:20:5 | {...} | | Assignments.cs:19:9:19:17 | return ...; | Assignments.cs:19:16:19:16 | access to parameter x | -| Assignments.cs:19:16:19:16 | access to parameter x | Assignments.cs:18:5:20:5 | {...} | -| Assignments.cs:27:10:27:23 | exit SetParamSingle | Assignments.cs:27:10:27:23 | exit SetParamSingle (normal) | -| Assignments.cs:27:10:27:23 | exit SetParamSingle (normal) | Assignments.cs:29:9:29:14 | ... = ... | -| Assignments.cs:28:5:30:5 | {...} | Assignments.cs:27:10:27:23 | enter SetParamSingle | +| Assignments.cs:19:16:19:16 | access to parameter x | Assignments.cs:19:9:19:17 | Before return ...; | +| Assignments.cs:27:10:27:23 | Exit | Assignments.cs:27:10:27:23 | Normal Exit | +| Assignments.cs:27:10:27:23 | Normal Exit | Assignments.cs:28:5:30:5 | After {...} | +| Assignments.cs:27:33:27:33 | x | Assignments.cs:27:10:27:23 | Entry | +| Assignments.cs:28:5:30:5 | After {...} | Assignments.cs:29:9:29:15 | After ...; | +| Assignments.cs:28:5:30:5 | {...} | Assignments.cs:27:33:27:33 | x | +| Assignments.cs:29:9:29:9 | access to parameter x | Assignments.cs:29:9:29:14 | Before ... = ... | | Assignments.cs:29:9:29:14 | ... = ... | Assignments.cs:29:13:29:14 | 42 | +| Assignments.cs:29:9:29:14 | After ... = ... | Assignments.cs:29:9:29:14 | ... = ... | +| Assignments.cs:29:9:29:14 | Before ... = ... | Assignments.cs:29:9:29:15 | ...; | | Assignments.cs:29:9:29:15 | ...; | Assignments.cs:28:5:30:5 | {...} | -| Assignments.cs:29:13:29:14 | 42 | Assignments.cs:29:9:29:15 | ...; | -| Assignments.cs:32:10:32:22 | exit SetParamMulti | Assignments.cs:32:10:32:22 | exit SetParamMulti (normal) | -| Assignments.cs:32:10:32:22 | exit SetParamMulti (normal) | Assignments.cs:35:9:35:19 | ... = ... | -| Assignments.cs:33:5:36:5 | {...} | Assignments.cs:32:10:32:22 | enter SetParamMulti | +| Assignments.cs:29:9:29:15 | After ...; | Assignments.cs:29:9:29:14 | After ... = ... | +| Assignments.cs:29:13:29:14 | 42 | Assignments.cs:29:9:29:9 | access to parameter x | +| Assignments.cs:32:10:32:22 | Exit | Assignments.cs:32:10:32:22 | Normal Exit | +| Assignments.cs:32:10:32:22 | Normal Exit | Assignments.cs:33:5:36:5 | After {...} | +| Assignments.cs:32:32:32:32 | x | Assignments.cs:32:10:32:22 | Entry | +| Assignments.cs:32:42:32:42 | o | Assignments.cs:32:32:32:32 | x | +| Assignments.cs:32:56:32:56 | y | Assignments.cs:32:42:32:42 | o | +| Assignments.cs:33:5:36:5 | After {...} | Assignments.cs:35:9:35:20 | After ...; | +| Assignments.cs:33:5:36:5 | {...} | Assignments.cs:32:56:32:56 | y | +| Assignments.cs:34:9:34:9 | access to parameter x | Assignments.cs:34:9:34:14 | Before ... = ... | | Assignments.cs:34:9:34:14 | ... = ... | Assignments.cs:34:13:34:14 | 42 | +| Assignments.cs:34:9:34:14 | After ... = ... | Assignments.cs:34:9:34:14 | ... = ... | +| Assignments.cs:34:9:34:14 | Before ... = ... | Assignments.cs:34:9:34:15 | ...; | | Assignments.cs:34:9:34:15 | ...; | Assignments.cs:33:5:36:5 | {...} | -| Assignments.cs:34:13:34:14 | 42 | Assignments.cs:34:9:34:15 | ...; | +| Assignments.cs:34:9:34:15 | After ...; | Assignments.cs:34:9:34:14 | After ... = ... | +| Assignments.cs:34:13:34:14 | 42 | Assignments.cs:34:9:34:9 | access to parameter x | +| Assignments.cs:35:9:35:9 | access to parameter y | Assignments.cs:35:9:35:19 | Before ... = ... | | Assignments.cs:35:9:35:19 | ... = ... | Assignments.cs:35:13:35:19 | "Hello" | -| Assignments.cs:35:9:35:20 | ...; | Assignments.cs:34:9:34:14 | ... = ... | -| Assignments.cs:35:13:35:19 | "Hello" | Assignments.cs:35:9:35:20 | ...; | -| Assignments.cs:38:10:38:11 | exit M2 | Assignments.cs:38:10:38:11 | exit M2 (normal) | -| Assignments.cs:38:10:38:11 | exit M2 (normal) | Assignments.cs:44:9:44:58 | call to method SetParamMulti | -| Assignments.cs:39:5:45:5 | {...} | Assignments.cs:38:10:38:11 | enter M2 | +| Assignments.cs:35:9:35:19 | After ... = ... | Assignments.cs:35:9:35:19 | ... = ... | +| Assignments.cs:35:9:35:19 | Before ... = ... | Assignments.cs:35:9:35:20 | ...; | +| Assignments.cs:35:9:35:20 | ...; | Assignments.cs:34:9:34:15 | After ...; | +| Assignments.cs:35:9:35:20 | After ...; | Assignments.cs:35:9:35:19 | After ... = ... | +| Assignments.cs:35:13:35:19 | "Hello" | Assignments.cs:35:9:35:9 | access to parameter y | +| Assignments.cs:38:10:38:11 | Exit | Assignments.cs:38:10:38:11 | Normal Exit | +| Assignments.cs:38:10:38:11 | Normal Exit | Assignments.cs:39:5:45:5 | After {...} | +| Assignments.cs:39:5:45:5 | After {...} | Assignments.cs:44:9:44:59 | After ...; | +| Assignments.cs:39:5:45:5 | {...} | Assignments.cs:38:10:38:11 | Entry | | Assignments.cs:40:9:40:15 | ... ...; | Assignments.cs:39:5:45:5 | {...} | +| Assignments.cs:40:9:40:15 | After ... ...; | Assignments.cs:40:13:40:14 | Int32 x1 | | Assignments.cs:40:13:40:14 | Int32 x1 | Assignments.cs:40:9:40:15 | ... ...; | -| Assignments.cs:41:9:41:30 | call to method SetParamSingle | Assignments.cs:41:9:41:30 | this access | -| Assignments.cs:41:9:41:30 | this access | Assignments.cs:41:9:41:31 | ...; | -| Assignments.cs:41:9:41:31 | ...; | Assignments.cs:40:13:40:14 | Int32 x1 | -| Assignments.cs:42:9:42:36 | call to method SetParamSingle | Assignments.cs:42:28:42:35 | access to field IntField | -| Assignments.cs:42:9:42:36 | this access | Assignments.cs:42:9:42:37 | ...; | -| Assignments.cs:42:9:42:37 | ...; | Assignments.cs:41:9:41:30 | call to method SetParamSingle | +| Assignments.cs:41:9:41:30 | After call to method SetParamSingle | Assignments.cs:41:9:41:30 | call to method SetParamSingle | +| Assignments.cs:41:9:41:30 | Before call to method SetParamSingle | Assignments.cs:41:9:41:31 | ...; | +| Assignments.cs:41:9:41:30 | call to method SetParamSingle | Assignments.cs:41:28:41:29 | access to local variable x1 | +| Assignments.cs:41:9:41:30 | this access | Assignments.cs:41:9:41:30 | Before call to method SetParamSingle | +| Assignments.cs:41:9:41:31 | ...; | Assignments.cs:40:9:40:15 | After ... ...; | +| Assignments.cs:41:9:41:31 | After ...; | Assignments.cs:41:9:41:30 | After call to method SetParamSingle | +| Assignments.cs:41:28:41:29 | access to local variable x1 | Assignments.cs:41:9:41:30 | this access | +| Assignments.cs:42:9:42:36 | After call to method SetParamSingle | Assignments.cs:42:9:42:36 | call to method SetParamSingle | +| Assignments.cs:42:9:42:36 | Before call to method SetParamSingle | Assignments.cs:42:9:42:37 | ...; | +| Assignments.cs:42:9:42:36 | call to method SetParamSingle | Assignments.cs:42:28:42:35 | After access to field IntField | +| Assignments.cs:42:9:42:36 | this access | Assignments.cs:42:9:42:36 | Before call to method SetParamSingle | +| Assignments.cs:42:9:42:37 | ...; | Assignments.cs:41:9:41:31 | After ...; | +| Assignments.cs:42:9:42:37 | After ...; | Assignments.cs:42:9:42:36 | After call to method SetParamSingle | +| Assignments.cs:42:28:42:35 | After access to field IntField | Assignments.cs:42:28:42:35 | access to field IntField | +| Assignments.cs:42:28:42:35 | Before access to field IntField | Assignments.cs:42:9:42:36 | this access | | Assignments.cs:42:28:42:35 | access to field IntField | Assignments.cs:42:28:42:35 | this access | -| Assignments.cs:42:28:42:35 | this access | Assignments.cs:42:9:42:36 | this access | -| Assignments.cs:43:9:43:55 | call to method SetParamMulti | Assignments.cs:43:44:43:54 | access to field StringField | -| Assignments.cs:43:9:43:55 | this access | Assignments.cs:43:9:43:56 | ...; | -| Assignments.cs:43:9:43:56 | ...; | Assignments.cs:42:9:42:36 | call to method SetParamSingle | -| Assignments.cs:43:34:43:37 | null | Assignments.cs:43:9:43:55 | this access | +| Assignments.cs:42:28:42:35 | this access | Assignments.cs:42:28:42:35 | Before access to field IntField | +| Assignments.cs:43:9:43:55 | After call to method SetParamMulti | Assignments.cs:43:9:43:55 | call to method SetParamMulti | +| Assignments.cs:43:9:43:55 | Before call to method SetParamMulti | Assignments.cs:43:9:43:56 | ...; | +| Assignments.cs:43:9:43:55 | call to method SetParamMulti | Assignments.cs:43:44:43:54 | After access to field StringField | +| Assignments.cs:43:9:43:55 | this access | Assignments.cs:43:9:43:55 | Before call to method SetParamMulti | +| Assignments.cs:43:9:43:56 | ...; | Assignments.cs:42:9:42:37 | After ...; | +| Assignments.cs:43:9:43:56 | After ...; | Assignments.cs:43:9:43:55 | After call to method SetParamMulti | +| Assignments.cs:43:31:43:31 | Int32 y | Assignments.cs:43:9:43:55 | this access | +| Assignments.cs:43:34:43:37 | null | Assignments.cs:43:31:43:31 | Int32 y | +| Assignments.cs:43:44:43:54 | After access to field StringField | Assignments.cs:43:44:43:54 | access to field StringField | +| Assignments.cs:43:44:43:54 | Before access to field StringField | Assignments.cs:43:34:43:37 | null | | Assignments.cs:43:44:43:54 | access to field StringField | Assignments.cs:43:44:43:54 | this access | -| Assignments.cs:43:44:43:54 | this access | Assignments.cs:43:34:43:37 | null | -| Assignments.cs:44:9:44:58 | call to method SetParamMulti | Assignments.cs:44:47:44:57 | access to field StringField | -| Assignments.cs:44:9:44:58 | this access | Assignments.cs:44:9:44:59 | ...; | -| Assignments.cs:44:9:44:59 | ...; | Assignments.cs:43:9:43:55 | call to method SetParamMulti | +| Assignments.cs:43:44:43:54 | this access | Assignments.cs:43:44:43:54 | Before access to field StringField | +| Assignments.cs:44:9:44:58 | After call to method SetParamMulti | Assignments.cs:44:9:44:58 | call to method SetParamMulti | +| Assignments.cs:44:9:44:58 | Before call to method SetParamMulti | Assignments.cs:44:9:44:59 | ...; | +| Assignments.cs:44:9:44:58 | call to method SetParamMulti | Assignments.cs:44:47:44:57 | After access to field StringField | +| Assignments.cs:44:9:44:58 | this access | Assignments.cs:44:9:44:58 | Before call to method SetParamMulti | +| Assignments.cs:44:9:44:59 | ...; | Assignments.cs:43:9:43:56 | After ...; | +| Assignments.cs:44:9:44:59 | After ...; | Assignments.cs:44:9:44:58 | After call to method SetParamMulti | +| Assignments.cs:44:27:44:34 | After access to field IntField | Assignments.cs:44:27:44:34 | access to field IntField | +| Assignments.cs:44:27:44:34 | Before access to field IntField | Assignments.cs:44:9:44:58 | this access | | Assignments.cs:44:27:44:34 | access to field IntField | Assignments.cs:44:27:44:34 | this access | -| Assignments.cs:44:27:44:34 | this access | Assignments.cs:44:9:44:58 | this access | -| Assignments.cs:44:37:44:40 | null | Assignments.cs:44:27:44:34 | access to field IntField | +| Assignments.cs:44:27:44:34 | this access | Assignments.cs:44:27:44:34 | Before access to field IntField | +| Assignments.cs:44:37:44:40 | null | Assignments.cs:44:27:44:34 | After access to field IntField | +| Assignments.cs:44:47:44:57 | After access to field StringField | Assignments.cs:44:47:44:57 | access to field StringField | +| Assignments.cs:44:47:44:57 | Before access to field StringField | Assignments.cs:44:37:44:40 | null | | Assignments.cs:44:47:44:57 | access to field StringField | Assignments.cs:44:47:44:57 | this access | -| Assignments.cs:44:47:44:57 | this access | Assignments.cs:44:37:44:40 | null | -| BreakInTry.cs:1:7:1:16 | call to constructor Object | BreakInTry.cs:1:7:1:16 | call to method | +| Assignments.cs:44:47:44:57 | this access | Assignments.cs:44:47:44:57 | Before access to field StringField | +| BreakInTry.cs:1:7:1:16 | After call to constructor Object | BreakInTry.cs:1:7:1:16 | call to constructor Object | +| BreakInTry.cs:1:7:1:16 | After call to method | BreakInTry.cs:1:7:1:16 | call to method | +| BreakInTry.cs:1:7:1:16 | Before call to constructor Object | BreakInTry.cs:1:7:1:16 | After call to method | +| BreakInTry.cs:1:7:1:16 | Before call to method | BreakInTry.cs:1:7:1:16 | Entry | +| BreakInTry.cs:1:7:1:16 | Exit | BreakInTry.cs:1:7:1:16 | Normal Exit | +| BreakInTry.cs:1:7:1:16 | Normal Exit | BreakInTry.cs:1:7:1:16 | {...} | +| BreakInTry.cs:1:7:1:16 | call to constructor Object | BreakInTry.cs:1:7:1:16 | Before call to constructor Object | | BreakInTry.cs:1:7:1:16 | call to method | BreakInTry.cs:1:7:1:16 | this access | -| BreakInTry.cs:1:7:1:16 | exit BreakInTry | BreakInTry.cs:1:7:1:16 | exit BreakInTry (normal) | -| BreakInTry.cs:1:7:1:16 | exit BreakInTry (normal) | BreakInTry.cs:1:7:1:16 | {...} | -| BreakInTry.cs:1:7:1:16 | this access | BreakInTry.cs:1:7:1:16 | enter BreakInTry | -| BreakInTry.cs:1:7:1:16 | {...} | BreakInTry.cs:1:7:1:16 | call to constructor Object | -| BreakInTry.cs:3:10:3:11 | exit M1 | BreakInTry.cs:3:10:3:11 | exit M1 (normal) | -| BreakInTry.cs:3:10:3:11 | exit M1 (normal) | BreakInTry.cs:15:17:15:28 | ... == ... | -| BreakInTry.cs:3:10:3:11 | exit M1 (normal) | BreakInTry.cs:16:17:16:17 | ; | -| BreakInTry.cs:4:5:18:5 | {...} | BreakInTry.cs:3:10:3:11 | enter M1 | +| BreakInTry.cs:1:7:1:16 | this access | BreakInTry.cs:1:7:1:16 | Before call to method | +| BreakInTry.cs:1:7:1:16 | {...} | BreakInTry.cs:1:7:1:16 | After call to constructor Object | +| BreakInTry.cs:3:10:3:11 | Exit | BreakInTry.cs:3:10:3:11 | Normal Exit | +| BreakInTry.cs:3:10:3:11 | Normal Exit | BreakInTry.cs:4:5:18:5 | After {...} | +| BreakInTry.cs:3:22:3:25 | args | BreakInTry.cs:3:10:3:11 | Entry | +| BreakInTry.cs:4:5:18:5 | After {...} | BreakInTry.cs:5:9:17:9 | After try {...} ... | +| BreakInTry.cs:4:5:18:5 | {...} | BreakInTry.cs:3:22:3:25 | args | +| BreakInTry.cs:5:9:17:9 | After try {...} ... | BreakInTry.cs:14:9:17:9 | After {...} | | BreakInTry.cs:5:9:17:9 | try {...} ... | BreakInTry.cs:4:5:18:5 | {...} | +| BreakInTry.cs:6:9:12:9 | After {...} | BreakInTry.cs:7:13:11:13 | After foreach (... ... in ...) ... | | BreakInTry.cs:6:9:12:9 | {...} | BreakInTry.cs:5:9:17:9 | try {...} ... | -| BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | BreakInTry.cs:7:33:7:36 | access to parameter args | -| BreakInTry.cs:7:33:7:36 | access to parameter args | BreakInTry.cs:6:9:12:9 | {...} | +| BreakInTry.cs:7:13:11:13 | After foreach (... ... in ...) ... | BreakInTry.cs:7:13:11:13 | [LoopHeader] foreach (... ... in ...) ... | +| BreakInTry.cs:7:13:11:13 | After foreach (... ... in ...) ... | BreakInTry.cs:7:33:7:36 | After access to parameter args [empty] | +| BreakInTry.cs:7:13:11:13 | After foreach (... ... in ...) ... | BreakInTry.cs:10:21:10:26 | break; | +| BreakInTry.cs:7:13:11:13 | [LoopHeader] foreach (... ... in ...) ... | BreakInTry.cs:8:13:11:13 | After {...} | +| BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | BreakInTry.cs:6:9:12:9 | {...} | +| BreakInTry.cs:7:26:7:28 | String arg | BreakInTry.cs:7:33:7:36 | After access to parameter args [non-empty] | +| BreakInTry.cs:7:33:7:36 | access to parameter args | BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | +| BreakInTry.cs:8:13:11:13 | After {...} | BreakInTry.cs:9:17:10:26 | After if (...) ... | | BreakInTry.cs:8:13:11:13 | {...} | BreakInTry.cs:7:26:7:28 | String arg | +| BreakInTry.cs:9:17:10:26 | After if (...) ... | BreakInTry.cs:9:21:9:31 | After ... == ... [false] | | BreakInTry.cs:9:17:10:26 | if (...) ... | BreakInTry.cs:8:13:11:13 | {...} | -| BreakInTry.cs:9:21:9:23 | access to local variable arg | BreakInTry.cs:9:17:10:26 | if (...) ... | +| BreakInTry.cs:9:21:9:23 | access to local variable arg | BreakInTry.cs:9:21:9:31 | Before ... == ... | | BreakInTry.cs:9:21:9:31 | ... == ... | BreakInTry.cs:9:28:9:31 | null | +| BreakInTry.cs:9:21:9:31 | Before ... == ... | BreakInTry.cs:9:17:10:26 | if (...) ... | | BreakInTry.cs:9:28:9:31 | null | BreakInTry.cs:9:21:9:23 | access to local variable arg | -| BreakInTry.cs:14:9:17:9 | {...} | BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | -| BreakInTry.cs:14:9:17:9 | {...} | BreakInTry.cs:10:21:10:26 | break; | +| BreakInTry.cs:10:21:10:26 | Before break; | BreakInTry.cs:9:21:9:31 | After ... == ... [true] | +| BreakInTry.cs:10:21:10:26 | break; | BreakInTry.cs:10:21:10:26 | Before break; | +| BreakInTry.cs:14:9:17:9 | After {...} | BreakInTry.cs:15:13:16:17 | After if (...) ... | +| BreakInTry.cs:14:9:17:9 | {...} | BreakInTry.cs:6:9:12:9 | After {...} | +| BreakInTry.cs:15:13:16:17 | After if (...) ... | BreakInTry.cs:15:17:15:28 | After ... == ... [false] | +| BreakInTry.cs:15:13:16:17 | After if (...) ... | BreakInTry.cs:16:17:16:17 | ; | | BreakInTry.cs:15:13:16:17 | if (...) ... | BreakInTry.cs:14:9:17:9 | {...} | -| BreakInTry.cs:15:17:15:20 | access to parameter args | BreakInTry.cs:15:13:16:17 | if (...) ... | +| BreakInTry.cs:15:17:15:20 | access to parameter args | BreakInTry.cs:15:17:15:28 | Before ... == ... | | BreakInTry.cs:15:17:15:28 | ... == ... | BreakInTry.cs:15:25:15:28 | null | +| BreakInTry.cs:15:17:15:28 | Before ... == ... | BreakInTry.cs:15:13:16:17 | if (...) ... | | BreakInTry.cs:15:25:15:28 | null | BreakInTry.cs:15:17:15:20 | access to parameter args | -| BreakInTry.cs:20:10:20:11 | exit M2 | BreakInTry.cs:20:10:20:11 | exit M2 (normal) | -| BreakInTry.cs:20:10:20:11 | exit M2 (normal) | BreakInTry.cs:35:7:35:7 | ; | -| BreakInTry.cs:21:5:36:5 | {...} | BreakInTry.cs:20:10:20:11 | enter M2 | -| BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:22:29:22:32 | access to parameter args | -| BreakInTry.cs:22:29:22:32 | access to parameter args | BreakInTry.cs:21:5:36:5 | {...} | +| BreakInTry.cs:16:17:16:17 | ; | BreakInTry.cs:15:17:15:28 | After ... == ... [true] | +| BreakInTry.cs:20:10:20:11 | Exit | BreakInTry.cs:20:10:20:11 | Normal Exit | +| BreakInTry.cs:20:10:20:11 | Normal Exit | BreakInTry.cs:21:5:36:5 | After {...} | +| BreakInTry.cs:20:22:20:25 | args | BreakInTry.cs:20:10:20:11 | Entry | +| BreakInTry.cs:21:5:36:5 | After {...} | BreakInTry.cs:35:7:35:7 | ; | +| BreakInTry.cs:21:5:36:5 | {...} | BreakInTry.cs:20:22:20:25 | args | +| BreakInTry.cs:22:9:34:9 | After foreach (... ... in ...) ... | BreakInTry.cs:22:9:34:9 | [LoopHeader] foreach (... ... in ...) ... | +| BreakInTry.cs:22:9:34:9 | After foreach (... ... in ...) ... | BreakInTry.cs:22:29:22:32 | After access to parameter args [empty] | +| BreakInTry.cs:22:9:34:9 | After foreach (... ... in ...) ... | BreakInTry.cs:30:13:33:13 | After {...} | +| BreakInTry.cs:22:9:34:9 | [LoopHeader] foreach (... ... in ...) ... | BreakInTry.cs:23:9:34:9 | After {...} | +| BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:21:5:36:5 | {...} | +| BreakInTry.cs:22:22:22:24 | String arg | BreakInTry.cs:22:29:22:32 | After access to parameter args [non-empty] | +| BreakInTry.cs:22:29:22:32 | access to parameter args | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | +| BreakInTry.cs:23:9:34:9 | After {...} | BreakInTry.cs:24:13:33:13 | After try {...} ... | | BreakInTry.cs:23:9:34:9 | {...} | BreakInTry.cs:22:22:22:24 | String arg | | BreakInTry.cs:24:13:33:13 | try {...} ... | BreakInTry.cs:23:9:34:9 | {...} | +| BreakInTry.cs:25:13:28:13 | After {...} | BreakInTry.cs:26:17:27:26 | After if (...) ... | | BreakInTry.cs:25:13:28:13 | {...} | BreakInTry.cs:24:13:33:13 | try {...} ... | +| BreakInTry.cs:26:17:27:26 | After if (...) ... | BreakInTry.cs:26:21:26:31 | After ... == ... [false] | | BreakInTry.cs:26:17:27:26 | if (...) ... | BreakInTry.cs:25:13:28:13 | {...} | -| BreakInTry.cs:26:21:26:23 | access to local variable arg | BreakInTry.cs:26:17:27:26 | if (...) ... | +| BreakInTry.cs:26:21:26:23 | access to local variable arg | BreakInTry.cs:26:21:26:31 | Before ... == ... | | BreakInTry.cs:26:21:26:31 | ... == ... | BreakInTry.cs:26:28:26:31 | null | +| BreakInTry.cs:26:21:26:31 | Before ... == ... | BreakInTry.cs:26:17:27:26 | if (...) ... | | BreakInTry.cs:26:28:26:31 | null | BreakInTry.cs:26:21:26:23 | access to local variable arg | -| BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:26:21:26:31 | ... == ... | +| BreakInTry.cs:27:21:27:26 | Before break; | BreakInTry.cs:26:21:26:31 | After ... == ... [true] | +| BreakInTry.cs:27:21:27:26 | break; | BreakInTry.cs:27:21:27:26 | Before break; | +| BreakInTry.cs:30:13:33:13 | After {...} | BreakInTry.cs:31:17:32:21 | After if (...) ... | +| BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:25:13:28:13 | After {...} | | BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:27:21:27:26 | break; | +| BreakInTry.cs:31:17:32:21 | After if (...) ... | BreakInTry.cs:31:21:31:32 | After ... == ... [false] | +| BreakInTry.cs:31:17:32:21 | After if (...) ... | BreakInTry.cs:32:21:32:21 | ; | | BreakInTry.cs:31:17:32:21 | if (...) ... | BreakInTry.cs:30:13:33:13 | {...} | -| BreakInTry.cs:31:21:31:24 | access to parameter args | BreakInTry.cs:31:17:32:21 | if (...) ... | +| BreakInTry.cs:31:21:31:24 | access to parameter args | BreakInTry.cs:31:21:31:32 | Before ... == ... | | BreakInTry.cs:31:21:31:32 | ... == ... | BreakInTry.cs:31:29:31:32 | null | +| BreakInTry.cs:31:21:31:32 | Before ... == ... | BreakInTry.cs:31:17:32:21 | if (...) ... | | BreakInTry.cs:31:29:31:32 | null | BreakInTry.cs:31:21:31:24 | access to parameter args | -| BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | -| BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:31:21:31:32 | ... == ... | -| BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:32:21:32:21 | ; | -| BreakInTry.cs:38:10:38:11 | exit M3 | BreakInTry.cs:38:10:38:11 | exit M3 (normal) | -| BreakInTry.cs:38:10:38:11 | exit M3 (normal) | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | -| BreakInTry.cs:38:10:38:11 | exit M3 (normal) | BreakInTry.cs:50:21:50:26 | break; | -| BreakInTry.cs:38:10:38:11 | exit M3 (normal) | BreakInTry.cs:53:7:53:7 | ; | -| BreakInTry.cs:39:5:54:5 | {...} | BreakInTry.cs:38:10:38:11 | enter M3 | +| BreakInTry.cs:32:21:32:21 | ; | BreakInTry.cs:31:21:31:32 | After ... == ... [true] | +| BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:22:9:34:9 | After foreach (... ... in ...) ... | +| BreakInTry.cs:38:10:38:11 | Exit | BreakInTry.cs:38:10:38:11 | Normal Exit | +| BreakInTry.cs:38:10:38:11 | Normal Exit | BreakInTry.cs:39:5:54:5 | After {...} | +| BreakInTry.cs:38:10:38:11 | Normal Exit | BreakInTry.cs:46:9:52:9 | After {...} | +| BreakInTry.cs:38:22:38:25 | args | BreakInTry.cs:38:10:38:11 | Entry | +| BreakInTry.cs:39:5:54:5 | After {...} | BreakInTry.cs:53:7:53:7 | ; | +| BreakInTry.cs:39:5:54:5 | {...} | BreakInTry.cs:38:22:38:25 | args | | BreakInTry.cs:40:9:52:9 | try {...} ... | BreakInTry.cs:39:5:54:5 | {...} | +| BreakInTry.cs:41:9:44:9 | After {...} | BreakInTry.cs:42:13:43:23 | After if (...) ... | | BreakInTry.cs:41:9:44:9 | {...} | BreakInTry.cs:40:9:52:9 | try {...} ... | +| BreakInTry.cs:42:13:43:23 | After if (...) ... | BreakInTry.cs:42:17:42:28 | After ... == ... [false] | | BreakInTry.cs:42:13:43:23 | if (...) ... | BreakInTry.cs:41:9:44:9 | {...} | -| BreakInTry.cs:42:17:42:20 | access to parameter args | BreakInTry.cs:42:13:43:23 | if (...) ... | +| BreakInTry.cs:42:17:42:20 | access to parameter args | BreakInTry.cs:42:17:42:28 | Before ... == ... | | BreakInTry.cs:42:17:42:28 | ... == ... | BreakInTry.cs:42:25:42:28 | null | +| BreakInTry.cs:42:17:42:28 | Before ... == ... | BreakInTry.cs:42:13:43:23 | if (...) ... | | BreakInTry.cs:42:25:42:28 | null | BreakInTry.cs:42:17:42:20 | access to parameter args | -| BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:42:17:42:28 | ... == ... | +| BreakInTry.cs:43:17:43:23 | Before return ...; | BreakInTry.cs:42:17:42:28 | After ... == ... [true] | +| BreakInTry.cs:43:17:43:23 | return ...; | BreakInTry.cs:43:17:43:23 | Before return ...; | +| BreakInTry.cs:46:9:52:9 | After {...} | BreakInTry.cs:47:13:51:13 | After foreach (... ... in ...) ... | +| BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:41:9:44:9 | After {...} | | BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:43:17:43:23 | return ...; | -| BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:47:33:47:36 | access to parameter args | -| BreakInTry.cs:47:33:47:36 | access to parameter args | BreakInTry.cs:46:9:52:9 | {...} | +| BreakInTry.cs:47:13:51:13 | After foreach (... ... in ...) ... | BreakInTry.cs:47:13:51:13 | [LoopHeader] foreach (... ... in ...) ... | +| BreakInTry.cs:47:13:51:13 | After foreach (... ... in ...) ... | BreakInTry.cs:47:33:47:36 | After access to parameter args [empty] | +| BreakInTry.cs:47:13:51:13 | After foreach (... ... in ...) ... | BreakInTry.cs:50:21:50:26 | break; | +| BreakInTry.cs:47:13:51:13 | [LoopHeader] foreach (... ... in ...) ... | BreakInTry.cs:48:13:51:13 | After {...} | +| BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:46:9:52:9 | {...} | +| BreakInTry.cs:47:26:47:28 | String arg | BreakInTry.cs:47:33:47:36 | After access to parameter args [non-empty] | +| BreakInTry.cs:47:33:47:36 | access to parameter args | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | +| BreakInTry.cs:48:13:51:13 | After {...} | BreakInTry.cs:49:17:50:26 | After if (...) ... | | BreakInTry.cs:48:13:51:13 | {...} | BreakInTry.cs:47:26:47:28 | String arg | +| BreakInTry.cs:49:17:50:26 | After if (...) ... | BreakInTry.cs:49:21:49:31 | After ... == ... [false] | | BreakInTry.cs:49:17:50:26 | if (...) ... | BreakInTry.cs:48:13:51:13 | {...} | -| BreakInTry.cs:49:21:49:23 | access to local variable arg | BreakInTry.cs:49:17:50:26 | if (...) ... | +| BreakInTry.cs:49:21:49:23 | access to local variable arg | BreakInTry.cs:49:21:49:31 | Before ... == ... | | BreakInTry.cs:49:21:49:31 | ... == ... | BreakInTry.cs:49:28:49:31 | null | +| BreakInTry.cs:49:21:49:31 | Before ... == ... | BreakInTry.cs:49:17:50:26 | if (...) ... | | BreakInTry.cs:49:28:49:31 | null | BreakInTry.cs:49:21:49:23 | access to local variable arg | -| BreakInTry.cs:56:10:56:11 | exit M4 | BreakInTry.cs:56:10:56:11 | exit M4 (normal) | -| BreakInTry.cs:56:10:56:11 | exit M4 (normal) | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | -| BreakInTry.cs:56:10:56:11 | exit M4 (normal) | BreakInTry.cs:68:21:68:26 | break; | -| BreakInTry.cs:57:5:71:5 | {...} | BreakInTry.cs:56:10:56:11 | enter M4 | +| BreakInTry.cs:50:21:50:26 | Before break; | BreakInTry.cs:49:21:49:31 | After ... == ... [true] | +| BreakInTry.cs:50:21:50:26 | break; | BreakInTry.cs:50:21:50:26 | Before break; | +| BreakInTry.cs:53:7:53:7 | ; | BreakInTry.cs:40:9:52:9 | After try {...} ... | +| BreakInTry.cs:56:10:56:11 | Exit | BreakInTry.cs:56:10:56:11 | Normal Exit | +| BreakInTry.cs:56:10:56:11 | Normal Exit | BreakInTry.cs:57:5:71:5 | After {...} | +| BreakInTry.cs:56:10:56:11 | Normal Exit | BreakInTry.cs:64:9:70:9 | After {...} | +| BreakInTry.cs:56:22:56:25 | args | BreakInTry.cs:56:10:56:11 | Entry | +| BreakInTry.cs:57:5:71:5 | After {...} | BreakInTry.cs:58:9:70:9 | After try {...} ... | +| BreakInTry.cs:57:5:71:5 | {...} | BreakInTry.cs:56:22:56:25 | args | | BreakInTry.cs:58:9:70:9 | try {...} ... | BreakInTry.cs:57:5:71:5 | {...} | +| BreakInTry.cs:59:9:62:9 | After {...} | BreakInTry.cs:60:13:61:23 | After if (...) ... | | BreakInTry.cs:59:9:62:9 | {...} | BreakInTry.cs:58:9:70:9 | try {...} ... | +| BreakInTry.cs:60:13:61:23 | After if (...) ... | BreakInTry.cs:60:17:60:28 | After ... == ... [false] | | BreakInTry.cs:60:13:61:23 | if (...) ... | BreakInTry.cs:59:9:62:9 | {...} | -| BreakInTry.cs:60:17:60:20 | access to parameter args | BreakInTry.cs:60:13:61:23 | if (...) ... | +| BreakInTry.cs:60:17:60:20 | access to parameter args | BreakInTry.cs:60:17:60:28 | Before ... == ... | | BreakInTry.cs:60:17:60:28 | ... == ... | BreakInTry.cs:60:25:60:28 | null | +| BreakInTry.cs:60:17:60:28 | Before ... == ... | BreakInTry.cs:60:13:61:23 | if (...) ... | | BreakInTry.cs:60:25:60:28 | null | BreakInTry.cs:60:17:60:20 | access to parameter args | -| BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:60:17:60:28 | ... == ... | +| BreakInTry.cs:61:17:61:23 | Before return ...; | BreakInTry.cs:60:17:60:28 | After ... == ... [true] | +| BreakInTry.cs:61:17:61:23 | return ...; | BreakInTry.cs:61:17:61:23 | Before return ...; | +| BreakInTry.cs:64:9:70:9 | After {...} | BreakInTry.cs:65:13:69:13 | After foreach (... ... in ...) ... | +| BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:59:9:62:9 | After {...} | | BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:61:17:61:23 | return ...; | -| BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:65:33:65:36 | access to parameter args | -| BreakInTry.cs:65:33:65:36 | access to parameter args | BreakInTry.cs:64:9:70:9 | {...} | +| BreakInTry.cs:65:13:69:13 | After foreach (... ... in ...) ... | BreakInTry.cs:65:13:69:13 | [LoopHeader] foreach (... ... in ...) ... | +| BreakInTry.cs:65:13:69:13 | After foreach (... ... in ...) ... | BreakInTry.cs:65:33:65:36 | After access to parameter args [empty] | +| BreakInTry.cs:65:13:69:13 | After foreach (... ... in ...) ... | BreakInTry.cs:68:21:68:26 | break; | +| BreakInTry.cs:65:13:69:13 | [LoopHeader] foreach (... ... in ...) ... | BreakInTry.cs:66:13:69:13 | After {...} | +| BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:64:9:70:9 | {...} | +| BreakInTry.cs:65:26:65:28 | String arg | BreakInTry.cs:65:33:65:36 | After access to parameter args [non-empty] | +| BreakInTry.cs:65:33:65:36 | access to parameter args | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | +| BreakInTry.cs:66:13:69:13 | After {...} | BreakInTry.cs:67:17:68:26 | After if (...) ... | | BreakInTry.cs:66:13:69:13 | {...} | BreakInTry.cs:65:26:65:28 | String arg | +| BreakInTry.cs:67:17:68:26 | After if (...) ... | BreakInTry.cs:67:21:67:31 | After ... == ... [false] | | BreakInTry.cs:67:17:68:26 | if (...) ... | BreakInTry.cs:66:13:69:13 | {...} | -| BreakInTry.cs:67:21:67:23 | access to local variable arg | BreakInTry.cs:67:17:68:26 | if (...) ... | +| BreakInTry.cs:67:21:67:23 | access to local variable arg | BreakInTry.cs:67:21:67:31 | Before ... == ... | | BreakInTry.cs:67:21:67:31 | ... == ... | BreakInTry.cs:67:28:67:31 | null | +| BreakInTry.cs:67:21:67:31 | Before ... == ... | BreakInTry.cs:67:17:68:26 | if (...) ... | | BreakInTry.cs:67:28:67:31 | null | BreakInTry.cs:67:21:67:23 | access to local variable arg | -| CompileTimeOperators.cs:3:7:3:26 | call to constructor Object | CompileTimeOperators.cs:3:7:3:26 | call to method | +| BreakInTry.cs:68:21:68:26 | Before break; | BreakInTry.cs:67:21:67:31 | After ... == ... [true] | +| BreakInTry.cs:68:21:68:26 | break; | BreakInTry.cs:68:21:68:26 | Before break; | +| CompileTimeOperators.cs:3:7:3:26 | After call to constructor Object | CompileTimeOperators.cs:3:7:3:26 | call to constructor Object | +| CompileTimeOperators.cs:3:7:3:26 | After call to method | CompileTimeOperators.cs:3:7:3:26 | call to method | +| CompileTimeOperators.cs:3:7:3:26 | Before call to constructor Object | CompileTimeOperators.cs:3:7:3:26 | After call to method | +| CompileTimeOperators.cs:3:7:3:26 | Before call to method | CompileTimeOperators.cs:3:7:3:26 | Entry | +| CompileTimeOperators.cs:3:7:3:26 | Exit | CompileTimeOperators.cs:3:7:3:26 | Normal Exit | +| CompileTimeOperators.cs:3:7:3:26 | Normal Exit | CompileTimeOperators.cs:3:7:3:26 | {...} | +| CompileTimeOperators.cs:3:7:3:26 | call to constructor Object | CompileTimeOperators.cs:3:7:3:26 | Before call to constructor Object | | CompileTimeOperators.cs:3:7:3:26 | call to method | CompileTimeOperators.cs:3:7:3:26 | this access | -| CompileTimeOperators.cs:3:7:3:26 | exit CompileTimeOperators | CompileTimeOperators.cs:3:7:3:26 | exit CompileTimeOperators (normal) | -| CompileTimeOperators.cs:3:7:3:26 | exit CompileTimeOperators (normal) | CompileTimeOperators.cs:3:7:3:26 | {...} | -| CompileTimeOperators.cs:3:7:3:26 | this access | CompileTimeOperators.cs:3:7:3:26 | enter CompileTimeOperators | -| CompileTimeOperators.cs:3:7:3:26 | {...} | CompileTimeOperators.cs:3:7:3:26 | call to constructor Object | -| CompileTimeOperators.cs:5:9:5:15 | exit Default | CompileTimeOperators.cs:5:9:5:15 | exit Default (normal) | -| CompileTimeOperators.cs:5:9:5:15 | exit Default (normal) | CompileTimeOperators.cs:7:9:7:28 | return ...; | -| CompileTimeOperators.cs:6:5:8:5 | {...} | CompileTimeOperators.cs:5:9:5:15 | enter Default | +| CompileTimeOperators.cs:3:7:3:26 | this access | CompileTimeOperators.cs:3:7:3:26 | Before call to method | +| CompileTimeOperators.cs:3:7:3:26 | {...} | CompileTimeOperators.cs:3:7:3:26 | After call to constructor Object | +| CompileTimeOperators.cs:5:9:5:15 | Exit | CompileTimeOperators.cs:5:9:5:15 | Normal Exit | +| CompileTimeOperators.cs:5:9:5:15 | Normal Exit | CompileTimeOperators.cs:7:9:7:28 | return ...; | +| CompileTimeOperators.cs:6:5:8:5 | {...} | CompileTimeOperators.cs:5:9:5:15 | Entry | +| CompileTimeOperators.cs:7:9:7:28 | Before return ...; | CompileTimeOperators.cs:6:5:8:5 | {...} | | CompileTimeOperators.cs:7:9:7:28 | return ...; | CompileTimeOperators.cs:7:16:7:27 | default(...) | -| CompileTimeOperators.cs:7:16:7:27 | default(...) | CompileTimeOperators.cs:6:5:8:5 | {...} | -| CompileTimeOperators.cs:10:9:10:14 | exit Sizeof | CompileTimeOperators.cs:10:9:10:14 | exit Sizeof (normal) | -| CompileTimeOperators.cs:10:9:10:14 | exit Sizeof (normal) | CompileTimeOperators.cs:12:9:12:27 | return ...; | -| CompileTimeOperators.cs:11:5:13:5 | {...} | CompileTimeOperators.cs:10:9:10:14 | enter Sizeof | +| CompileTimeOperators.cs:7:16:7:27 | default(...) | CompileTimeOperators.cs:7:9:7:28 | Before return ...; | +| CompileTimeOperators.cs:10:9:10:14 | Exit | CompileTimeOperators.cs:10:9:10:14 | Normal Exit | +| CompileTimeOperators.cs:10:9:10:14 | Normal Exit | CompileTimeOperators.cs:12:9:12:27 | return ...; | +| CompileTimeOperators.cs:11:5:13:5 | {...} | CompileTimeOperators.cs:10:9:10:14 | Entry | +| CompileTimeOperators.cs:12:9:12:27 | Before return ...; | CompileTimeOperators.cs:11:5:13:5 | {...} | | CompileTimeOperators.cs:12:9:12:27 | return ...; | CompileTimeOperators.cs:12:16:12:26 | sizeof(..) | -| CompileTimeOperators.cs:12:16:12:26 | sizeof(..) | CompileTimeOperators.cs:11:5:13:5 | {...} | -| CompileTimeOperators.cs:15:10:15:15 | exit Typeof | CompileTimeOperators.cs:15:10:15:15 | exit Typeof (normal) | -| CompileTimeOperators.cs:15:10:15:15 | exit Typeof (normal) | CompileTimeOperators.cs:17:9:17:27 | return ...; | -| CompileTimeOperators.cs:16:5:18:5 | {...} | CompileTimeOperators.cs:15:10:15:15 | enter Typeof | +| CompileTimeOperators.cs:12:16:12:26 | sizeof(..) | CompileTimeOperators.cs:12:9:12:27 | Before return ...; | +| CompileTimeOperators.cs:15:10:15:15 | Exit | CompileTimeOperators.cs:15:10:15:15 | Normal Exit | +| CompileTimeOperators.cs:15:10:15:15 | Normal Exit | CompileTimeOperators.cs:17:9:17:27 | return ...; | +| CompileTimeOperators.cs:16:5:18:5 | {...} | CompileTimeOperators.cs:15:10:15:15 | Entry | +| CompileTimeOperators.cs:17:9:17:27 | Before return ...; | CompileTimeOperators.cs:16:5:18:5 | {...} | | CompileTimeOperators.cs:17:9:17:27 | return ...; | CompileTimeOperators.cs:17:16:17:26 | typeof(...) | -| CompileTimeOperators.cs:17:16:17:26 | typeof(...) | CompileTimeOperators.cs:16:5:18:5 | {...} | -| CompileTimeOperators.cs:20:12:20:17 | exit Nameof | CompileTimeOperators.cs:20:12:20:17 | exit Nameof (normal) | -| CompileTimeOperators.cs:20:12:20:17 | exit Nameof (normal) | CompileTimeOperators.cs:22:9:22:25 | return ...; | -| CompileTimeOperators.cs:21:5:23:5 | {...} | CompileTimeOperators.cs:20:12:20:17 | enter Nameof | +| CompileTimeOperators.cs:17:16:17:26 | typeof(...) | CompileTimeOperators.cs:17:9:17:27 | Before return ...; | +| CompileTimeOperators.cs:20:12:20:17 | Exit | CompileTimeOperators.cs:20:12:20:17 | Normal Exit | +| CompileTimeOperators.cs:20:12:20:17 | Normal Exit | CompileTimeOperators.cs:22:9:22:25 | return ...; | +| CompileTimeOperators.cs:20:23:20:23 | i | CompileTimeOperators.cs:20:12:20:17 | Entry | +| CompileTimeOperators.cs:21:5:23:5 | {...} | CompileTimeOperators.cs:20:23:20:23 | i | +| CompileTimeOperators.cs:22:9:22:25 | Before return ...; | CompileTimeOperators.cs:21:5:23:5 | {...} | | CompileTimeOperators.cs:22:9:22:25 | return ...; | CompileTimeOperators.cs:22:16:22:24 | nameof(...) | -| CompileTimeOperators.cs:22:16:22:24 | nameof(...) | CompileTimeOperators.cs:21:5:23:5 | {...} | -| CompileTimeOperators.cs:26:7:26:22 | call to constructor Object | CompileTimeOperators.cs:26:7:26:22 | call to method | +| CompileTimeOperators.cs:22:16:22:24 | nameof(...) | CompileTimeOperators.cs:22:9:22:25 | Before return ...; | +| CompileTimeOperators.cs:26:7:26:22 | After call to constructor Object | CompileTimeOperators.cs:26:7:26:22 | call to constructor Object | +| CompileTimeOperators.cs:26:7:26:22 | After call to method | CompileTimeOperators.cs:26:7:26:22 | call to method | +| CompileTimeOperators.cs:26:7:26:22 | Before call to constructor Object | CompileTimeOperators.cs:26:7:26:22 | After call to method | +| CompileTimeOperators.cs:26:7:26:22 | Before call to method | CompileTimeOperators.cs:26:7:26:22 | Entry | +| CompileTimeOperators.cs:26:7:26:22 | Exit | CompileTimeOperators.cs:26:7:26:22 | Normal Exit | +| CompileTimeOperators.cs:26:7:26:22 | Normal Exit | CompileTimeOperators.cs:26:7:26:22 | {...} | +| CompileTimeOperators.cs:26:7:26:22 | call to constructor Object | CompileTimeOperators.cs:26:7:26:22 | Before call to constructor Object | | CompileTimeOperators.cs:26:7:26:22 | call to method | CompileTimeOperators.cs:26:7:26:22 | this access | -| CompileTimeOperators.cs:26:7:26:22 | exit GotoInTryFinally | CompileTimeOperators.cs:26:7:26:22 | exit GotoInTryFinally (normal) | -| CompileTimeOperators.cs:26:7:26:22 | exit GotoInTryFinally (normal) | CompileTimeOperators.cs:26:7:26:22 | {...} | -| CompileTimeOperators.cs:26:7:26:22 | this access | CompileTimeOperators.cs:26:7:26:22 | enter GotoInTryFinally | -| CompileTimeOperators.cs:26:7:26:22 | {...} | CompileTimeOperators.cs:26:7:26:22 | call to constructor Object | -| CompileTimeOperators.cs:28:10:28:10 | exit M (normal) | CompileTimeOperators.cs:40:14:40:37 | call to method WriteLine | -| CompileTimeOperators.cs:29:5:41:5 | {...} | CompileTimeOperators.cs:28:10:28:10 | enter M | +| CompileTimeOperators.cs:26:7:26:22 | this access | CompileTimeOperators.cs:26:7:26:22 | Before call to method | +| CompileTimeOperators.cs:26:7:26:22 | {...} | CompileTimeOperators.cs:26:7:26:22 | After call to constructor Object | +| CompileTimeOperators.cs:28:10:28:10 | Normal Exit | CompileTimeOperators.cs:29:5:41:5 | After {...} | +| CompileTimeOperators.cs:29:5:41:5 | After {...} | CompileTimeOperators.cs:40:14:40:38 | After ...; | +| CompileTimeOperators.cs:29:5:41:5 | {...} | CompileTimeOperators.cs:28:10:28:10 | Entry | | CompileTimeOperators.cs:30:9:38:9 | try {...} ... | CompileTimeOperators.cs:29:5:41:5 | {...} | | CompileTimeOperators.cs:31:9:34:9 | {...} | CompileTimeOperators.cs:30:9:38:9 | try {...} ... | -| CompileTimeOperators.cs:32:13:32:21 | goto ...; | CompileTimeOperators.cs:31:9:34:9 | {...} | +| CompileTimeOperators.cs:32:13:32:21 | Before goto ...; | CompileTimeOperators.cs:31:9:34:9 | {...} | +| CompileTimeOperators.cs:32:13:32:21 | goto ...; | CompileTimeOperators.cs:32:13:32:21 | Before goto ...; | +| CompileTimeOperators.cs:36:9:38:9 | After {...} | CompileTimeOperators.cs:37:13:37:41 | After ...; | | CompileTimeOperators.cs:36:9:38:9 | {...} | CompileTimeOperators.cs:32:13:32:21 | goto ...; | +| CompileTimeOperators.cs:37:13:37:40 | After call to method WriteLine | CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | +| CompileTimeOperators.cs:37:13:37:40 | Before call to method WriteLine | CompileTimeOperators.cs:37:13:37:41 | ...; | | CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | CompileTimeOperators.cs:37:31:37:39 | "Finally" | | CompileTimeOperators.cs:37:13:37:41 | ...; | CompileTimeOperators.cs:36:9:38:9 | {...} | -| CompileTimeOperators.cs:37:31:37:39 | "Finally" | CompileTimeOperators.cs:37:13:37:41 | ...; | +| CompileTimeOperators.cs:37:13:37:41 | After ...; | CompileTimeOperators.cs:37:13:37:40 | After call to method WriteLine | +| CompileTimeOperators.cs:37:31:37:39 | "Finally" | CompileTimeOperators.cs:37:13:37:40 | Before call to method WriteLine | +| CompileTimeOperators.cs:39:9:39:33 | After call to method WriteLine | CompileTimeOperators.cs:39:9:39:33 | call to method WriteLine | +| CompileTimeOperators.cs:39:9:39:33 | Before call to method WriteLine | CompileTimeOperators.cs:39:9:39:34 | ...; | | CompileTimeOperators.cs:39:9:39:33 | call to method WriteLine | CompileTimeOperators.cs:39:27:39:32 | "Dead" | -| CompileTimeOperators.cs:39:27:39:32 | "Dead" | CompileTimeOperators.cs:39:9:39:34 | ...; | -| CompileTimeOperators.cs:40:9:40:11 | End: | CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | -| CompileTimeOperators.cs:40:9:40:11 | End: | CompileTimeOperators.cs:39:9:39:33 | call to method WriteLine | +| CompileTimeOperators.cs:39:9:39:34 | ...; | CompileTimeOperators.cs:30:9:38:9 | After try {...} ... | +| CompileTimeOperators.cs:39:9:39:34 | After ...; | CompileTimeOperators.cs:39:9:39:33 | After call to method WriteLine | +| CompileTimeOperators.cs:39:27:39:32 | "Dead" | CompileTimeOperators.cs:39:9:39:33 | Before call to method WriteLine | +| CompileTimeOperators.cs:40:9:40:11 | End: | CompileTimeOperators.cs:36:9:38:9 | After {...} | +| CompileTimeOperators.cs:40:9:40:11 | End: | CompileTimeOperators.cs:39:9:39:34 | After ...; | +| CompileTimeOperators.cs:40:14:40:37 | After call to method WriteLine | CompileTimeOperators.cs:40:14:40:37 | call to method WriteLine | +| CompileTimeOperators.cs:40:14:40:37 | Before call to method WriteLine | CompileTimeOperators.cs:40:14:40:38 | ...; | | CompileTimeOperators.cs:40:14:40:37 | call to method WriteLine | CompileTimeOperators.cs:40:32:40:36 | "End" | | CompileTimeOperators.cs:40:14:40:38 | ...; | CompileTimeOperators.cs:40:9:40:11 | End: | -| CompileTimeOperators.cs:40:32:40:36 | "End" | CompileTimeOperators.cs:40:14:40:38 | ...; | -| ConditionalAccess.cs:1:7:1:23 | call to constructor Object | ConditionalAccess.cs:1:7:1:23 | call to method | +| CompileTimeOperators.cs:40:14:40:38 | After ...; | CompileTimeOperators.cs:40:14:40:37 | After call to method WriteLine | +| CompileTimeOperators.cs:40:32:40:36 | "End" | CompileTimeOperators.cs:40:14:40:37 | Before call to method WriteLine | +| ConditionalAccess.cs:1:7:1:23 | After call to constructor Object | ConditionalAccess.cs:1:7:1:23 | call to constructor Object | +| ConditionalAccess.cs:1:7:1:23 | After call to method | ConditionalAccess.cs:1:7:1:23 | call to method | +| ConditionalAccess.cs:1:7:1:23 | Before call to constructor Object | ConditionalAccess.cs:1:7:1:23 | After call to method | +| ConditionalAccess.cs:1:7:1:23 | Before call to method | ConditionalAccess.cs:1:7:1:23 | Entry | +| ConditionalAccess.cs:1:7:1:23 | Exit | ConditionalAccess.cs:1:7:1:23 | Normal Exit | +| ConditionalAccess.cs:1:7:1:23 | Normal Exit | ConditionalAccess.cs:1:7:1:23 | {...} | +| ConditionalAccess.cs:1:7:1:23 | call to constructor Object | ConditionalAccess.cs:1:7:1:23 | Before call to constructor Object | | ConditionalAccess.cs:1:7:1:23 | call to method | ConditionalAccess.cs:1:7:1:23 | this access | -| ConditionalAccess.cs:1:7:1:23 | exit ConditionalAccess | ConditionalAccess.cs:1:7:1:23 | exit ConditionalAccess (normal) | -| ConditionalAccess.cs:1:7:1:23 | exit ConditionalAccess (normal) | ConditionalAccess.cs:1:7:1:23 | {...} | -| ConditionalAccess.cs:1:7:1:23 | this access | ConditionalAccess.cs:1:7:1:23 | enter ConditionalAccess | -| ConditionalAccess.cs:1:7:1:23 | {...} | ConditionalAccess.cs:1:7:1:23 | call to constructor Object | -| ConditionalAccess.cs:3:12:3:13 | exit M1 | ConditionalAccess.cs:3:12:3:13 | exit M1 (normal) | -| ConditionalAccess.cs:3:12:3:13 | exit M1 (normal) | ConditionalAccess.cs:3:26:3:26 | access to parameter i | -| ConditionalAccess.cs:3:12:3:13 | exit M1 (normal) | ConditionalAccess.cs:3:26:3:38 | call to method ToString | -| ConditionalAccess.cs:3:12:3:13 | exit M1 (normal) | ConditionalAccess.cs:3:26:3:49 | call to method ToLower | -| ConditionalAccess.cs:3:26:3:26 | access to parameter i | ConditionalAccess.cs:3:12:3:13 | enter M1 | -| ConditionalAccess.cs:5:10:5:11 | exit M2 | ConditionalAccess.cs:5:10:5:11 | exit M2 (normal) | -| ConditionalAccess.cs:5:10:5:11 | exit M2 (normal) | ConditionalAccess.cs:5:26:5:26 | access to parameter s | -| ConditionalAccess.cs:5:10:5:11 | exit M2 (normal) | ConditionalAccess.cs:5:26:5:34 | access to property Length | -| ConditionalAccess.cs:5:26:5:26 | access to parameter s | ConditionalAccess.cs:5:10:5:11 | enter M2 | -| ConditionalAccess.cs:7:10:7:11 | exit M3 | ConditionalAccess.cs:7:10:7:11 | exit M3 (normal) | -| ConditionalAccess.cs:7:10:7:11 | exit M3 (normal) | ConditionalAccess.cs:7:38:7:55 | access to property Length | -| ConditionalAccess.cs:7:10:7:11 | exit M3 (normal) | ConditionalAccess.cs:7:39:7:46 | ... ?? ... | -| ConditionalAccess.cs:7:10:7:11 | exit M3 (normal) | ConditionalAccess.cs:7:39:7:46 | [null] ... ?? ... | -| ConditionalAccess.cs:7:38:7:55 | access to property Length | ConditionalAccess.cs:7:39:7:46 | [non-null] ... ?? ... | -| ConditionalAccess.cs:7:39:7:40 | access to parameter s1 | ConditionalAccess.cs:7:10:7:11 | enter M3 | -| ConditionalAccess.cs:9:9:9:10 | exit M4 | ConditionalAccess.cs:9:9:9:10 | exit M4 (normal) | -| ConditionalAccess.cs:9:9:9:10 | exit M4 (normal) | ConditionalAccess.cs:9:25:9:38 | ... ?? ... | -| ConditionalAccess.cs:9:25:9:25 | access to parameter s | ConditionalAccess.cs:9:9:9:10 | enter M4 | -| ConditionalAccess.cs:9:25:9:38 | ... ?? ... | ConditionalAccess.cs:9:25:9:33 | access to property Length | -| ConditionalAccess.cs:9:25:9:38 | ... ?? ... | ConditionalAccess.cs:9:38:9:38 | 0 | -| ConditionalAccess.cs:11:9:11:10 | exit M5 | ConditionalAccess.cs:11:9:11:10 | exit M5 (normal) | -| ConditionalAccess.cs:11:9:11:10 | exit M5 (normal) | ConditionalAccess.cs:14:13:14:21 | return ...; | -| ConditionalAccess.cs:11:9:11:10 | exit M5 (normal) | ConditionalAccess.cs:16:13:16:21 | return ...; | -| ConditionalAccess.cs:12:5:17:5 | {...} | ConditionalAccess.cs:11:9:11:10 | enter M5 | +| ConditionalAccess.cs:1:7:1:23 | this access | ConditionalAccess.cs:1:7:1:23 | Before call to method | +| ConditionalAccess.cs:1:7:1:23 | {...} | ConditionalAccess.cs:1:7:1:23 | After call to constructor Object | +| ConditionalAccess.cs:3:12:3:13 | Exit | ConditionalAccess.cs:3:12:3:13 | Normal Exit | +| ConditionalAccess.cs:3:12:3:13 | Normal Exit | ConditionalAccess.cs:3:26:3:49 | After call to method ToLower | +| ConditionalAccess.cs:3:20:3:20 | i | ConditionalAccess.cs:3:12:3:13 | Entry | +| ConditionalAccess.cs:3:26:3:26 | access to parameter i | ConditionalAccess.cs:3:26:3:38 | Before call to method ToString | +| ConditionalAccess.cs:3:26:3:38 | After call to method ToString [null] | ConditionalAccess.cs:3:26:3:26 | After access to parameter i [null] | +| ConditionalAccess.cs:3:26:3:38 | Before call to method ToString | ConditionalAccess.cs:3:26:3:49 | Before call to method ToLower | +| ConditionalAccess.cs:3:26:3:38 | call to method ToString | ConditionalAccess.cs:3:26:3:26 | After access to parameter i [non-null] | +| ConditionalAccess.cs:3:26:3:49 | After call to method ToLower | ConditionalAccess.cs:3:26:3:38 | After call to method ToString [null] | +| ConditionalAccess.cs:3:26:3:49 | After call to method ToLower | ConditionalAccess.cs:3:26:3:49 | call to method ToLower | +| ConditionalAccess.cs:3:26:3:49 | Before call to method ToLower | ConditionalAccess.cs:3:20:3:20 | i | +| ConditionalAccess.cs:3:26:3:49 | call to method ToLower | ConditionalAccess.cs:3:26:3:38 | After call to method ToString [non-null] | +| ConditionalAccess.cs:5:10:5:11 | Exit | ConditionalAccess.cs:5:10:5:11 | Normal Exit | +| ConditionalAccess.cs:5:10:5:11 | Normal Exit | ConditionalAccess.cs:5:26:5:34 | After access to property Length | +| ConditionalAccess.cs:5:20:5:20 | s | ConditionalAccess.cs:5:10:5:11 | Entry | +| ConditionalAccess.cs:5:26:5:26 | access to parameter s | ConditionalAccess.cs:5:26:5:34 | Before access to property Length | +| ConditionalAccess.cs:5:26:5:34 | After access to property Length | ConditionalAccess.cs:5:26:5:26 | After access to parameter s [null] | +| ConditionalAccess.cs:5:26:5:34 | After access to property Length | ConditionalAccess.cs:5:26:5:34 | access to property Length | +| ConditionalAccess.cs:5:26:5:34 | Before access to property Length | ConditionalAccess.cs:5:20:5:20 | s | +| ConditionalAccess.cs:5:26:5:34 | access to property Length | ConditionalAccess.cs:5:26:5:26 | After access to parameter s [non-null] | +| ConditionalAccess.cs:7:10:7:11 | Exit | ConditionalAccess.cs:7:10:7:11 | Normal Exit | +| ConditionalAccess.cs:7:10:7:11 | Normal Exit | ConditionalAccess.cs:7:38:7:55 | After access to property Length | +| ConditionalAccess.cs:7:20:7:21 | s1 | ConditionalAccess.cs:7:10:7:11 | Entry | +| ConditionalAccess.cs:7:31:7:32 | s2 | ConditionalAccess.cs:7:20:7:21 | s1 | +| ConditionalAccess.cs:7:38:7:55 | After access to property Length | ConditionalAccess.cs:7:38:7:55 | access to property Length | +| ConditionalAccess.cs:7:38:7:55 | After access to property Length | ConditionalAccess.cs:7:39:7:46 | After ... ?? ... [null] | +| ConditionalAccess.cs:7:38:7:55 | Before access to property Length | ConditionalAccess.cs:7:31:7:32 | s2 | +| ConditionalAccess.cs:7:38:7:55 | access to property Length | ConditionalAccess.cs:7:39:7:46 | After ... ?? ... [non-null] | +| ConditionalAccess.cs:7:39:7:40 | access to parameter s1 | ConditionalAccess.cs:7:39:7:46 | ... ?? ... | +| ConditionalAccess.cs:7:39:7:46 | ... ?? ... | ConditionalAccess.cs:7:38:7:55 | Before access to property Length | +| ConditionalAccess.cs:7:39:7:46 | After ... ?? ... [non-null] | ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [non-null] | +| ConditionalAccess.cs:7:39:7:46 | After ... ?? ... [non-null] | ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [non-null] | +| ConditionalAccess.cs:7:39:7:46 | After ... ?? ... [null] | ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [null] | +| ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [null] | +| ConditionalAccess.cs:9:9:9:10 | Exit | ConditionalAccess.cs:9:9:9:10 | Normal Exit | +| ConditionalAccess.cs:9:9:9:10 | Normal Exit | ConditionalAccess.cs:9:25:9:38 | After ... ?? ... | +| ConditionalAccess.cs:9:19:9:19 | s | ConditionalAccess.cs:9:9:9:10 | Entry | +| ConditionalAccess.cs:9:25:9:25 | access to parameter s | ConditionalAccess.cs:9:25:9:33 | Before access to property Length | +| ConditionalAccess.cs:9:25:9:33 | After access to property Length [null] | ConditionalAccess.cs:9:25:9:25 | After access to parameter s [null] | +| ConditionalAccess.cs:9:25:9:33 | Before access to property Length | ConditionalAccess.cs:9:25:9:38 | ... ?? ... | +| ConditionalAccess.cs:9:25:9:33 | access to property Length | ConditionalAccess.cs:9:25:9:25 | After access to parameter s [non-null] | +| ConditionalAccess.cs:9:25:9:38 | ... ?? ... | ConditionalAccess.cs:9:19:9:19 | s | +| ConditionalAccess.cs:9:25:9:38 | After ... ?? ... | ConditionalAccess.cs:9:25:9:33 | After access to property Length [non-null] | +| ConditionalAccess.cs:9:25:9:38 | After ... ?? ... | ConditionalAccess.cs:9:38:9:38 | 0 | +| ConditionalAccess.cs:9:38:9:38 | 0 | ConditionalAccess.cs:9:25:9:33 | After access to property Length [null] | +| ConditionalAccess.cs:11:9:11:10 | Exit | ConditionalAccess.cs:11:9:11:10 | Normal Exit | +| ConditionalAccess.cs:11:9:11:10 | Normal Exit | ConditionalAccess.cs:14:13:14:21 | return ...; | +| ConditionalAccess.cs:11:9:11:10 | Normal Exit | ConditionalAccess.cs:16:13:16:21 | return ...; | +| ConditionalAccess.cs:11:19:11:19 | s | ConditionalAccess.cs:11:9:11:10 | Entry | +| ConditionalAccess.cs:12:5:17:5 | {...} | ConditionalAccess.cs:11:19:11:19 | s | | ConditionalAccess.cs:13:9:16:21 | if (...) ... | ConditionalAccess.cs:12:5:17:5 | {...} | -| ConditionalAccess.cs:13:13:13:13 | access to parameter s | ConditionalAccess.cs:13:9:16:21 | if (...) ... | -| ConditionalAccess.cs:13:13:13:25 | ... > ... | ConditionalAccess.cs:13:25:13:25 | (...) ... | -| ConditionalAccess.cs:13:25:13:25 | 0 | ConditionalAccess.cs:13:13:13:13 | access to parameter s | -| ConditionalAccess.cs:13:25:13:25 | 0 | ConditionalAccess.cs:13:13:13:21 | access to property Length | +| ConditionalAccess.cs:13:13:13:13 | access to parameter s | ConditionalAccess.cs:13:13:13:21 | Before access to property Length | +| ConditionalAccess.cs:13:13:13:21 | After access to property Length | ConditionalAccess.cs:13:13:13:13 | After access to parameter s [null] | +| ConditionalAccess.cs:13:13:13:21 | After access to property Length | ConditionalAccess.cs:13:13:13:21 | access to property Length | +| ConditionalAccess.cs:13:13:13:21 | Before access to property Length | ConditionalAccess.cs:13:13:13:25 | Before ... > ... | +| ConditionalAccess.cs:13:13:13:21 | access to property Length | ConditionalAccess.cs:13:13:13:13 | After access to parameter s [non-null] | +| ConditionalAccess.cs:13:13:13:25 | ... > ... | ConditionalAccess.cs:13:25:13:25 | After (...) ... | +| ConditionalAccess.cs:13:13:13:25 | Before ... > ... | ConditionalAccess.cs:13:9:16:21 | if (...) ... | +| ConditionalAccess.cs:13:25:13:25 | 0 | ConditionalAccess.cs:13:25:13:25 | Before (...) ... | | ConditionalAccess.cs:13:25:13:25 | (...) ... | ConditionalAccess.cs:13:25:13:25 | 0 | +| ConditionalAccess.cs:13:25:13:25 | After (...) ... | ConditionalAccess.cs:13:25:13:25 | (...) ... | +| ConditionalAccess.cs:13:25:13:25 | Before (...) ... | ConditionalAccess.cs:13:13:13:21 | After access to property Length | +| ConditionalAccess.cs:14:13:14:21 | Before return ...; | ConditionalAccess.cs:13:13:13:25 | After ... > ... [true] | | ConditionalAccess.cs:14:13:14:21 | return ...; | ConditionalAccess.cs:14:20:14:20 | 0 | +| ConditionalAccess.cs:14:20:14:20 | 0 | ConditionalAccess.cs:14:13:14:21 | Before return ...; | +| ConditionalAccess.cs:16:13:16:21 | Before return ...; | ConditionalAccess.cs:13:13:13:25 | After ... > ... [false] | | ConditionalAccess.cs:16:13:16:21 | return ...; | ConditionalAccess.cs:16:20:16:20 | 1 | -| ConditionalAccess.cs:19:12:19:13 | exit M6 | ConditionalAccess.cs:19:12:19:13 | exit M6 (normal) | -| ConditionalAccess.cs:19:12:19:13 | exit M6 (normal) | ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | -| ConditionalAccess.cs:19:12:19:13 | exit M6 (normal) | ConditionalAccess.cs:19:40:19:60 | call to method CommaJoinWith | -| ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | ConditionalAccess.cs:19:12:19:13 | enter M6 | +| ConditionalAccess.cs:16:20:16:20 | 1 | ConditionalAccess.cs:16:13:16:21 | Before return ...; | +| ConditionalAccess.cs:19:12:19:13 | Exit | ConditionalAccess.cs:19:12:19:13 | Normal Exit | +| ConditionalAccess.cs:19:12:19:13 | Normal Exit | ConditionalAccess.cs:19:40:19:60 | After call to method CommaJoinWith | +| ConditionalAccess.cs:19:22:19:23 | s1 | ConditionalAccess.cs:19:12:19:13 | Entry | +| ConditionalAccess.cs:19:33:19:34 | s2 | ConditionalAccess.cs:19:22:19:23 | s1 | +| ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | ConditionalAccess.cs:19:40:19:60 | Before call to method CommaJoinWith | +| ConditionalAccess.cs:19:40:19:60 | After call to method CommaJoinWith | ConditionalAccess.cs:19:40:19:41 | After access to parameter s1 [null] | +| ConditionalAccess.cs:19:40:19:60 | After call to method CommaJoinWith | ConditionalAccess.cs:19:40:19:60 | call to method CommaJoinWith | +| ConditionalAccess.cs:19:40:19:60 | Before call to method CommaJoinWith | ConditionalAccess.cs:19:33:19:34 | s2 | | ConditionalAccess.cs:19:40:19:60 | call to method CommaJoinWith | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | -| ConditionalAccess.cs:21:10:21:11 | exit M7 | ConditionalAccess.cs:21:10:21:11 | exit M7 (normal) | -| ConditionalAccess.cs:21:10:21:11 | exit M7 (normal) | ConditionalAccess.cs:25:9:25:32 | ... = ... | -| ConditionalAccess.cs:22:5:26:5 | {...} | ConditionalAccess.cs:21:10:21:11 | enter M7 | +| ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | ConditionalAccess.cs:19:40:19:41 | After access to parameter s1 [non-null] | +| ConditionalAccess.cs:21:10:21:11 | Exit | ConditionalAccess.cs:21:10:21:11 | Normal Exit | +| ConditionalAccess.cs:21:10:21:11 | Normal Exit | ConditionalAccess.cs:22:5:26:5 | After {...} | +| ConditionalAccess.cs:21:17:21:17 | i | ConditionalAccess.cs:21:10:21:11 | Entry | +| ConditionalAccess.cs:22:5:26:5 | After {...} | ConditionalAccess.cs:25:9:25:33 | After ...; | +| ConditionalAccess.cs:22:5:26:5 | {...} | ConditionalAccess.cs:21:17:21:17 | i | | ConditionalAccess.cs:23:9:23:39 | ... ...; | ConditionalAccess.cs:22:5:26:5 | {...} | -| ConditionalAccess.cs:23:13:23:38 | Nullable j = ... | ConditionalAccess.cs:23:18:23:29 | (...) ... | +| ConditionalAccess.cs:23:9:23:39 | After ... ...; | ConditionalAccess.cs:23:13:23:38 | After Nullable j = ... | +| ConditionalAccess.cs:23:13:23:13 | access to local variable j | ConditionalAccess.cs:23:13:23:38 | Before Nullable j = ... | +| ConditionalAccess.cs:23:13:23:38 | After Nullable j = ... | ConditionalAccess.cs:23:13:23:38 | Nullable j = ... | +| ConditionalAccess.cs:23:13:23:38 | Before Nullable j = ... | ConditionalAccess.cs:23:9:23:39 | ... ...; | +| ConditionalAccess.cs:23:13:23:38 | Nullable j = ... | ConditionalAccess.cs:23:17:23:38 | After access to property Length | +| ConditionalAccess.cs:23:17:23:38 | After access to property Length | ConditionalAccess.cs:23:17:23:38 | access to property Length | +| ConditionalAccess.cs:23:17:23:38 | After access to property Length | ConditionalAccess.cs:23:18:23:29 | After (...) ... [null] | +| ConditionalAccess.cs:23:17:23:38 | Before access to property Length | ConditionalAccess.cs:23:13:23:13 | access to local variable j | +| ConditionalAccess.cs:23:17:23:38 | access to property Length | ConditionalAccess.cs:23:18:23:29 | After (...) ... [non-null] | | ConditionalAccess.cs:23:18:23:29 | (...) ... | ConditionalAccess.cs:23:26:23:29 | null | -| ConditionalAccess.cs:23:26:23:29 | null | ConditionalAccess.cs:23:9:23:39 | ... ...; | -| ConditionalAccess.cs:24:9:24:38 | ... ...; | ConditionalAccess.cs:23:13:23:38 | Nullable j = ... | -| ConditionalAccess.cs:24:13:24:37 | String s = ... | ConditionalAccess.cs:24:17:24:37 | call to method ToString | -| ConditionalAccess.cs:24:17:24:37 | call to method ToString | ConditionalAccess.cs:24:18:24:24 | (...) ... | +| ConditionalAccess.cs:23:18:23:29 | Before (...) ... | ConditionalAccess.cs:23:17:23:38 | Before access to property Length | +| ConditionalAccess.cs:23:26:23:29 | null | ConditionalAccess.cs:23:18:23:29 | Before (...) ... | +| ConditionalAccess.cs:24:9:24:38 | ... ...; | ConditionalAccess.cs:23:9:23:39 | After ... ...; | +| ConditionalAccess.cs:24:9:24:38 | After ... ...; | ConditionalAccess.cs:24:13:24:37 | After String s = ... | +| ConditionalAccess.cs:24:13:24:13 | access to local variable s | ConditionalAccess.cs:24:13:24:37 | Before String s = ... | +| ConditionalAccess.cs:24:13:24:37 | After String s = ... | ConditionalAccess.cs:24:13:24:37 | String s = ... | +| ConditionalAccess.cs:24:13:24:37 | Before String s = ... | ConditionalAccess.cs:24:9:24:38 | ... ...; | +| ConditionalAccess.cs:24:13:24:37 | String s = ... | ConditionalAccess.cs:24:17:24:37 | After call to method ToString | +| ConditionalAccess.cs:24:17:24:37 | After call to method ToString | ConditionalAccess.cs:24:17:24:37 | call to method ToString | +| ConditionalAccess.cs:24:17:24:37 | After call to method ToString | ConditionalAccess.cs:24:18:24:24 | After (...) ... [null] | +| ConditionalAccess.cs:24:17:24:37 | Before call to method ToString | ConditionalAccess.cs:24:13:24:13 | access to local variable s | +| ConditionalAccess.cs:24:17:24:37 | call to method ToString | ConditionalAccess.cs:24:18:24:24 | After (...) ... [non-null] | | ConditionalAccess.cs:24:18:24:24 | (...) ... | ConditionalAccess.cs:24:24:24:24 | access to parameter i | -| ConditionalAccess.cs:24:24:24:24 | access to parameter i | ConditionalAccess.cs:24:9:24:38 | ... ...; | -| ConditionalAccess.cs:25:9:25:32 | ... = ... | ConditionalAccess.cs:25:13:25:32 | call to method CommaJoinWith | -| ConditionalAccess.cs:25:9:25:33 | ...; | ConditionalAccess.cs:24:13:24:37 | String s = ... | -| ConditionalAccess.cs:25:13:25:14 | "" | ConditionalAccess.cs:25:9:25:33 | ...; | +| ConditionalAccess.cs:24:18:24:24 | Before (...) ... | ConditionalAccess.cs:24:17:24:37 | Before call to method ToString | +| ConditionalAccess.cs:24:24:24:24 | access to parameter i | ConditionalAccess.cs:24:18:24:24 | Before (...) ... | +| ConditionalAccess.cs:25:9:25:9 | access to local variable s | ConditionalAccess.cs:25:9:25:32 | Before ... = ... | +| ConditionalAccess.cs:25:9:25:32 | ... = ... | ConditionalAccess.cs:25:13:25:32 | After call to method CommaJoinWith | +| ConditionalAccess.cs:25:9:25:32 | After ... = ... | ConditionalAccess.cs:25:9:25:32 | ... = ... | +| ConditionalAccess.cs:25:9:25:32 | Before ... = ... | ConditionalAccess.cs:25:9:25:33 | ...; | +| ConditionalAccess.cs:25:9:25:33 | ...; | ConditionalAccess.cs:24:9:24:38 | After ... ...; | +| ConditionalAccess.cs:25:9:25:33 | After ...; | ConditionalAccess.cs:25:9:25:32 | After ... = ... | +| ConditionalAccess.cs:25:13:25:14 | "" | ConditionalAccess.cs:25:13:25:32 | Before call to method CommaJoinWith | +| ConditionalAccess.cs:25:13:25:32 | After call to method CommaJoinWith | ConditionalAccess.cs:25:13:25:14 | After "" [null] | +| ConditionalAccess.cs:25:13:25:32 | After call to method CommaJoinWith | ConditionalAccess.cs:25:13:25:32 | call to method CommaJoinWith | +| ConditionalAccess.cs:25:13:25:32 | Before call to method CommaJoinWith | ConditionalAccess.cs:25:9:25:9 | access to local variable s | | ConditionalAccess.cs:25:13:25:32 | call to method CommaJoinWith | ConditionalAccess.cs:25:31:25:31 | access to local variable s | -| ConditionalAccess.cs:25:31:25:31 | access to local variable s | ConditionalAccess.cs:25:13:25:14 | "" | -| ConditionalAccess.cs:30:10:30:12 | exit Out | ConditionalAccess.cs:30:10:30:12 | exit Out (normal) | -| ConditionalAccess.cs:30:10:30:12 | exit Out (normal) | ConditionalAccess.cs:30:28:30:32 | ... = ... | +| ConditionalAccess.cs:25:31:25:31 | access to local variable s | ConditionalAccess.cs:25:13:25:14 | After "" [non-null] | +| ConditionalAccess.cs:30:10:30:12 | Exit | ConditionalAccess.cs:30:10:30:12 | Normal Exit | +| ConditionalAccess.cs:30:10:30:12 | Normal Exit | ConditionalAccess.cs:30:28:30:32 | After ... = ... | +| ConditionalAccess.cs:30:22:30:22 | i | ConditionalAccess.cs:30:10:30:12 | Entry | +| ConditionalAccess.cs:30:28:30:28 | access to parameter i | ConditionalAccess.cs:30:28:30:32 | Before ... = ... | | ConditionalAccess.cs:30:28:30:32 | ... = ... | ConditionalAccess.cs:30:32:30:32 | 0 | -| ConditionalAccess.cs:30:32:30:32 | 0 | ConditionalAccess.cs:30:10:30:12 | enter Out | -| ConditionalAccess.cs:32:10:32:11 | exit M8 | ConditionalAccess.cs:32:10:32:11 | exit M8 (normal) | -| ConditionalAccess.cs:32:10:32:11 | exit M8 (normal) | ConditionalAccess.cs:35:9:35:12 | access to property Prop | -| ConditionalAccess.cs:32:10:32:11 | exit M8 (normal) | ConditionalAccess.cs:35:9:35:24 | call to method Out | -| ConditionalAccess.cs:33:5:36:5 | {...} | ConditionalAccess.cs:32:10:32:11 | enter M8 | +| ConditionalAccess.cs:30:28:30:32 | After ... = ... | ConditionalAccess.cs:30:28:30:32 | ... = ... | +| ConditionalAccess.cs:30:28:30:32 | Before ... = ... | ConditionalAccess.cs:30:22:30:22 | i | +| ConditionalAccess.cs:30:32:30:32 | 0 | ConditionalAccess.cs:30:28:30:28 | access to parameter i | +| ConditionalAccess.cs:32:10:32:11 | Exit | ConditionalAccess.cs:32:10:32:11 | Normal Exit | +| ConditionalAccess.cs:32:10:32:11 | Normal Exit | ConditionalAccess.cs:33:5:36:5 | After {...} | +| ConditionalAccess.cs:32:18:32:18 | b | ConditionalAccess.cs:32:10:32:11 | Entry | +| ConditionalAccess.cs:32:29:32:29 | i | ConditionalAccess.cs:32:18:32:18 | b | +| ConditionalAccess.cs:33:5:36:5 | After {...} | ConditionalAccess.cs:35:9:35:25 | After ...; | +| ConditionalAccess.cs:33:5:36:5 | {...} | ConditionalAccess.cs:32:29:32:29 | i | +| ConditionalAccess.cs:34:9:34:9 | access to parameter i | ConditionalAccess.cs:34:9:34:13 | Before ... = ... | | ConditionalAccess.cs:34:9:34:13 | ... = ... | ConditionalAccess.cs:34:13:34:13 | 0 | +| ConditionalAccess.cs:34:9:34:13 | After ... = ... | ConditionalAccess.cs:34:9:34:13 | ... = ... | +| ConditionalAccess.cs:34:9:34:13 | Before ... = ... | ConditionalAccess.cs:34:9:34:14 | ...; | | ConditionalAccess.cs:34:9:34:14 | ...; | ConditionalAccess.cs:33:5:36:5 | {...} | -| ConditionalAccess.cs:34:13:34:13 | 0 | ConditionalAccess.cs:34:9:34:14 | ...; | +| ConditionalAccess.cs:34:9:34:14 | After ...; | ConditionalAccess.cs:34:9:34:13 | After ... = ... | +| ConditionalAccess.cs:34:13:34:13 | 0 | ConditionalAccess.cs:34:9:34:9 | access to parameter i | +| ConditionalAccess.cs:35:9:35:12 | Before access to property Prop | ConditionalAccess.cs:35:9:35:24 | Before call to method Out | | ConditionalAccess.cs:35:9:35:12 | access to property Prop | ConditionalAccess.cs:35:9:35:12 | this access | -| ConditionalAccess.cs:35:9:35:12 | this access | ConditionalAccess.cs:35:9:35:25 | ...; | -| ConditionalAccess.cs:35:9:35:25 | ...; | ConditionalAccess.cs:34:9:34:13 | ... = ... | -| ConditionalAccess.cs:42:9:42:11 | exit get_Item | ConditionalAccess.cs:42:9:42:11 | exit get_Item (normal) | -| ConditionalAccess.cs:42:9:42:11 | exit get_Item (normal) | ConditionalAccess.cs:42:15:42:26 | return ...; | -| ConditionalAccess.cs:42:13:42:28 | {...} | ConditionalAccess.cs:42:9:42:11 | enter get_Item | +| ConditionalAccess.cs:35:9:35:12 | this access | ConditionalAccess.cs:35:9:35:12 | Before access to property Prop | +| ConditionalAccess.cs:35:9:35:24 | After call to method Out | ConditionalAccess.cs:35:9:35:12 | After access to property Prop [null] | +| ConditionalAccess.cs:35:9:35:24 | After call to method Out | ConditionalAccess.cs:35:9:35:24 | call to method Out | +| ConditionalAccess.cs:35:9:35:24 | Before call to method Out | ConditionalAccess.cs:35:9:35:25 | ...; | +| ConditionalAccess.cs:35:9:35:24 | call to method Out | ConditionalAccess.cs:35:23:35:23 | access to parameter i | +| ConditionalAccess.cs:35:9:35:25 | ...; | ConditionalAccess.cs:34:9:34:14 | After ...; | +| ConditionalAccess.cs:35:9:35:25 | After ...; | ConditionalAccess.cs:35:9:35:24 | After call to method Out | +| ConditionalAccess.cs:35:23:35:23 | access to parameter i | ConditionalAccess.cs:35:9:35:12 | After access to property Prop [non-null] | +| ConditionalAccess.cs:40:21:40:25 | index | ConditionalAccess.cs:42:9:42:11 | Entry | +| ConditionalAccess.cs:40:21:40:25 | index | ConditionalAccess.cs:43:9:43:11 | Entry | +| ConditionalAccess.cs:42:9:42:11 | Exit | ConditionalAccess.cs:42:9:42:11 | Normal Exit | +| ConditionalAccess.cs:42:9:42:11 | Normal Exit | ConditionalAccess.cs:42:15:42:26 | return ...; | +| ConditionalAccess.cs:42:13:42:28 | {...} | ConditionalAccess.cs:40:21:40:25 | index | +| ConditionalAccess.cs:42:15:42:26 | Before return ...; | ConditionalAccess.cs:42:13:42:28 | {...} | | ConditionalAccess.cs:42:15:42:26 | return ...; | ConditionalAccess.cs:42:22:42:25 | null | -| ConditionalAccess.cs:42:22:42:25 | null | ConditionalAccess.cs:42:13:42:28 | {...} | -| ConditionalAccess.cs:43:9:43:11 | exit set_Item | ConditionalAccess.cs:43:9:43:11 | exit set_Item (normal) | -| ConditionalAccess.cs:43:9:43:11 | exit set_Item (normal) | ConditionalAccess.cs:43:13:43:15 | {...} | -| ConditionalAccess.cs:43:13:43:15 | {...} | ConditionalAccess.cs:43:9:43:11 | enter set_Item | -| ConditionalAccess.cs:46:10:46:11 | exit M9 | ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | -| ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | ConditionalAccess.cs:54:12:54:29 | ... += ... | -| ConditionalAccess.cs:47:5:55:5 | {...} | ConditionalAccess.cs:46:10:46:11 | enter M9 | -| ConditionalAccess.cs:48:9:48:10 | access to parameter ca | ConditionalAccess.cs:48:9:48:26 | ...; | -| ConditionalAccess.cs:48:9:48:20 | access to field IntField | ConditionalAccess.cs:48:24:48:25 | 42 | +| ConditionalAccess.cs:42:22:42:25 | null | ConditionalAccess.cs:42:15:42:26 | Before return ...; | +| ConditionalAccess.cs:43:9:43:11 | Exit | ConditionalAccess.cs:43:9:43:11 | Normal Exit | +| ConditionalAccess.cs:43:9:43:11 | Normal Exit | ConditionalAccess.cs:43:13:43:15 | {...} | +| ConditionalAccess.cs:43:9:43:11 | value | ConditionalAccess.cs:40:21:40:25 | index | +| ConditionalAccess.cs:43:13:43:15 | {...} | ConditionalAccess.cs:43:9:43:11 | value | +| ConditionalAccess.cs:46:10:46:11 | Exit | ConditionalAccess.cs:46:10:46:11 | Normal Exit | +| ConditionalAccess.cs:46:10:46:11 | Normal Exit | ConditionalAccess.cs:47:5:55:5 | After {...} | +| ConditionalAccess.cs:46:31:46:32 | ca | ConditionalAccess.cs:46:10:46:11 | Entry | +| ConditionalAccess.cs:47:5:55:5 | After {...} | ConditionalAccess.cs:54:9:54:30 | After ...; | +| ConditionalAccess.cs:47:5:55:5 | {...} | ConditionalAccess.cs:46:31:46:32 | ca | +| ConditionalAccess.cs:48:9:48:10 | access to parameter ca | ConditionalAccess.cs:48:9:48:20 | Before access to field IntField | +| ConditionalAccess.cs:48:9:48:20 | After access to field IntField | ConditionalAccess.cs:48:9:48:20 | access to field IntField | +| ConditionalAccess.cs:48:9:48:20 | Before access to field IntField | ConditionalAccess.cs:48:12:48:25 | Before ... = ... | +| ConditionalAccess.cs:48:9:48:20 | access to field IntField | ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [non-null] | | ConditionalAccess.cs:48:9:48:26 | ...; | ConditionalAccess.cs:47:5:55:5 | {...} | -| ConditionalAccess.cs:48:12:48:25 | ... = ... | ConditionalAccess.cs:48:9:48:20 | access to field IntField | -| ConditionalAccess.cs:49:9:49:10 | access to parameter ca | ConditionalAccess.cs:49:9:49:33 | ...; | -| ConditionalAccess.cs:49:9:49:22 | access to property StringProp | ConditionalAccess.cs:49:26:49:32 | "Hello" | -| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:48:9:48:10 | access to parameter ca | -| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:48:12:48:25 | ... = ... | -| ConditionalAccess.cs:49:12:49:32 | ... = ... | ConditionalAccess.cs:49:9:49:22 | access to property StringProp | -| ConditionalAccess.cs:50:9:50:10 | access to parameter ca | ConditionalAccess.cs:50:9:50:24 | ...; | -| ConditionalAccess.cs:50:9:50:14 | access to indexer | ConditionalAccess.cs:50:18:50:23 | "Set0" | -| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:49:9:49:10 | access to parameter ca | -| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:49:12:49:32 | ... = ... | -| ConditionalAccess.cs:50:12:50:23 | ... = ... | ConditionalAccess.cs:50:9:50:14 | access to indexer | -| ConditionalAccess.cs:50:18:50:23 | "Set0" | ConditionalAccess.cs:50:13:50:13 | 0 | -| ConditionalAccess.cs:51:9:51:10 | access to parameter ca | ConditionalAccess.cs:51:9:51:32 | ...; | -| ConditionalAccess.cs:51:9:51:26 | access to field IntField | ConditionalAccess.cs:51:30:51:31 | 84 | -| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:50:9:50:10 | access to parameter ca | -| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:50:12:50:23 | ... = ... | -| ConditionalAccess.cs:51:18:51:31 | ... = ... | ConditionalAccess.cs:51:9:51:26 | access to field IntField | -| ConditionalAccess.cs:52:9:52:10 | access to parameter ca | ConditionalAccess.cs:52:9:52:39 | ...; | -| ConditionalAccess.cs:52:9:52:28 | access to property StringProp | ConditionalAccess.cs:52:32:52:38 | "World" | -| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:51:9:51:10 | access to parameter ca | -| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:51:9:51:16 | access to property Prop | -| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:51:18:51:31 | ... = ... | -| ConditionalAccess.cs:52:18:52:38 | ... = ... | ConditionalAccess.cs:52:9:52:28 | access to property StringProp | -| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:26 | ...; | -| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:52:9:52:10 | access to parameter ca | -| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:52:9:52:16 | access to property Prop | -| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:52:18:52:38 | ... = ... | +| ConditionalAccess.cs:48:9:48:26 | After ...; | ConditionalAccess.cs:48:12:48:25 | After ... = ... | +| ConditionalAccess.cs:48:12:48:25 | ... = ... | ConditionalAccess.cs:48:24:48:25 | 42 | +| ConditionalAccess.cs:48:12:48:25 | After ... = ... | ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:48:12:48:25 | After ... = ... | ConditionalAccess.cs:48:12:48:25 | ... = ... | +| ConditionalAccess.cs:48:12:48:25 | Before ... = ... | ConditionalAccess.cs:48:9:48:26 | ...; | +| ConditionalAccess.cs:48:24:48:25 | 42 | ConditionalAccess.cs:48:9:48:20 | After access to field IntField | +| ConditionalAccess.cs:49:9:49:10 | access to parameter ca | ConditionalAccess.cs:49:9:49:22 | Before access to property StringProp | +| ConditionalAccess.cs:49:9:49:22 | After access to property StringProp | ConditionalAccess.cs:49:9:49:22 | access to property StringProp | +| ConditionalAccess.cs:49:9:49:22 | Before access to property StringProp | ConditionalAccess.cs:49:12:49:32 | Before ... = ... | +| ConditionalAccess.cs:49:9:49:22 | access to property StringProp | ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:48:9:48:26 | After ...; | +| ConditionalAccess.cs:49:9:49:33 | After ...; | ConditionalAccess.cs:49:12:49:32 | After ... = ... | +| ConditionalAccess.cs:49:12:49:32 | ... = ... | ConditionalAccess.cs:49:26:49:32 | "Hello" | +| ConditionalAccess.cs:49:12:49:32 | After ... = ... | ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:49:12:49:32 | After ... = ... | ConditionalAccess.cs:49:12:49:32 | ... = ... | +| ConditionalAccess.cs:49:12:49:32 | Before ... = ... | ConditionalAccess.cs:49:9:49:33 | ...; | +| ConditionalAccess.cs:49:26:49:32 | "Hello" | ConditionalAccess.cs:49:9:49:22 | After access to property StringProp | +| ConditionalAccess.cs:50:9:50:10 | access to parameter ca | ConditionalAccess.cs:50:9:50:14 | Before access to indexer | +| ConditionalAccess.cs:50:9:50:14 | After access to indexer | ConditionalAccess.cs:50:9:50:14 | access to indexer | +| ConditionalAccess.cs:50:9:50:14 | Before access to indexer | ConditionalAccess.cs:50:12:50:23 | Before ... = ... | +| ConditionalAccess.cs:50:9:50:14 | access to indexer | ConditionalAccess.cs:50:13:50:13 | 0 | +| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:49:9:49:33 | After ...; | +| ConditionalAccess.cs:50:9:50:24 | After ...; | ConditionalAccess.cs:50:12:50:23 | After ... = ... | +| ConditionalAccess.cs:50:12:50:23 | ... = ... | ConditionalAccess.cs:50:18:50:23 | "Set0" | +| ConditionalAccess.cs:50:12:50:23 | After ... = ... | ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:50:12:50:23 | After ... = ... | ConditionalAccess.cs:50:12:50:23 | ... = ... | +| ConditionalAccess.cs:50:12:50:23 | Before ... = ... | ConditionalAccess.cs:50:9:50:24 | ...; | +| ConditionalAccess.cs:50:13:50:13 | 0 | ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:50:18:50:23 | "Set0" | ConditionalAccess.cs:50:9:50:14 | After access to indexer | +| ConditionalAccess.cs:51:9:51:10 | access to parameter ca | ConditionalAccess.cs:51:9:51:16 | Before access to property Prop | +| ConditionalAccess.cs:51:9:51:16 | After access to property Prop [null] | ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:51:9:51:16 | Before access to property Prop | ConditionalAccess.cs:51:9:51:26 | Before access to field IntField | +| ConditionalAccess.cs:51:9:51:16 | access to property Prop | ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:51:9:51:26 | After access to field IntField | ConditionalAccess.cs:51:9:51:26 | access to field IntField | +| ConditionalAccess.cs:51:9:51:26 | Before access to field IntField | ConditionalAccess.cs:51:18:51:31 | Before ... = ... | +| ConditionalAccess.cs:51:9:51:26 | access to field IntField | ConditionalAccess.cs:51:9:51:16 | After access to property Prop [non-null] | +| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:50:9:50:24 | After ...; | +| ConditionalAccess.cs:51:9:51:32 | After ...; | ConditionalAccess.cs:51:18:51:31 | After ... = ... | +| ConditionalAccess.cs:51:18:51:31 | ... = ... | ConditionalAccess.cs:51:30:51:31 | 84 | +| ConditionalAccess.cs:51:18:51:31 | After ... = ... | ConditionalAccess.cs:51:9:51:16 | After access to property Prop [null] | +| ConditionalAccess.cs:51:18:51:31 | After ... = ... | ConditionalAccess.cs:51:18:51:31 | ... = ... | +| ConditionalAccess.cs:51:18:51:31 | Before ... = ... | ConditionalAccess.cs:51:9:51:32 | ...; | +| ConditionalAccess.cs:51:30:51:31 | 84 | ConditionalAccess.cs:51:9:51:26 | After access to field IntField | +| ConditionalAccess.cs:52:9:52:10 | access to parameter ca | ConditionalAccess.cs:52:9:52:16 | Before access to property Prop | +| ConditionalAccess.cs:52:9:52:16 | After access to property Prop [null] | ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:52:9:52:16 | Before access to property Prop | ConditionalAccess.cs:52:9:52:28 | Before access to property StringProp | +| ConditionalAccess.cs:52:9:52:16 | access to property Prop | ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:52:9:52:28 | After access to property StringProp | ConditionalAccess.cs:52:9:52:28 | access to property StringProp | +| ConditionalAccess.cs:52:9:52:28 | Before access to property StringProp | ConditionalAccess.cs:52:18:52:38 | Before ... = ... | +| ConditionalAccess.cs:52:9:52:28 | access to property StringProp | ConditionalAccess.cs:52:9:52:16 | After access to property Prop [non-null] | +| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:51:9:51:32 | After ...; | +| ConditionalAccess.cs:52:9:52:39 | After ...; | ConditionalAccess.cs:52:18:52:38 | After ... = ... | +| ConditionalAccess.cs:52:18:52:38 | ... = ... | ConditionalAccess.cs:52:32:52:38 | "World" | +| ConditionalAccess.cs:52:18:52:38 | After ... = ... | ConditionalAccess.cs:52:9:52:16 | After access to property Prop [null] | +| ConditionalAccess.cs:52:18:52:38 | After ... = ... | ConditionalAccess.cs:52:18:52:38 | ... = ... | +| ConditionalAccess.cs:52:18:52:38 | Before ... = ... | ConditionalAccess.cs:52:9:52:39 | ...; | +| ConditionalAccess.cs:52:32:52:38 | "World" | ConditionalAccess.cs:52:9:52:28 | After access to property StringProp | +| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:20 | Before access to field IntField | +| ConditionalAccess.cs:53:9:53:20 | After access to field IntField | ConditionalAccess.cs:53:9:53:20 | access to field IntField | +| ConditionalAccess.cs:53:9:53:20 | Before access to field IntField | ConditionalAccess.cs:53:12:53:25 | Before ... -= ... | +| ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:52:9:52:39 | After ...; | +| ConditionalAccess.cs:53:9:53:26 | After ...; | ConditionalAccess.cs:53:12:53:25 | After ... -= ... | | ConditionalAccess.cs:53:12:53:25 | ... -= ... | ConditionalAccess.cs:53:25:53:25 | 1 | -| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | -| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:53:9:53:20 | access to field IntField | -| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:30 | ...; | -| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:53:12:53:25 | ... -= ... | +| ConditionalAccess.cs:53:12:53:25 | After ... -= ... | ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:53:12:53:25 | After ... -= ... | ConditionalAccess.cs:53:12:53:25 | ... -= ... | +| ConditionalAccess.cs:53:12:53:25 | Before ... -= ... | ConditionalAccess.cs:53:9:53:26 | ...; | +| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:53:9:53:20 | After access to field IntField | +| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:22 | Before access to property StringProp | +| ConditionalAccess.cs:54:9:54:22 | After access to property StringProp | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | +| ConditionalAccess.cs:54:9:54:22 | Before access to property StringProp | ConditionalAccess.cs:54:12:54:29 | Before ... += ... | +| ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:53:9:53:26 | After ...; | +| ConditionalAccess.cs:54:9:54:30 | After ...; | ConditionalAccess.cs:54:12:54:29 | After ... += ... | | ConditionalAccess.cs:54:12:54:29 | ... += ... | ConditionalAccess.cs:54:27:54:29 | "!" | -| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | -| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | -| ConditionalAccess.cs:60:26:60:38 | exit CommaJoinWith | ConditionalAccess.cs:60:26:60:38 | exit CommaJoinWith (normal) | -| ConditionalAccess.cs:60:26:60:38 | exit CommaJoinWith (normal) | ConditionalAccess.cs:60:70:60:83 | ... + ... | -| ConditionalAccess.cs:60:70:60:71 | access to parameter s1 | ConditionalAccess.cs:60:26:60:38 | enter CommaJoinWith | +| ConditionalAccess.cs:54:12:54:29 | After ... += ... | ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:54:12:54:29 | After ... += ... | ConditionalAccess.cs:54:12:54:29 | ... += ... | +| ConditionalAccess.cs:54:12:54:29 | Before ... += ... | ConditionalAccess.cs:54:9:54:30 | ...; | +| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:54:9:54:22 | After access to property StringProp | +| ConditionalAccess.cs:60:26:60:38 | Exit | ConditionalAccess.cs:60:26:60:38 | Normal Exit | +| ConditionalAccess.cs:60:26:60:38 | Normal Exit | ConditionalAccess.cs:60:70:60:83 | After ... + ... | +| ConditionalAccess.cs:60:52:60:53 | s1 | ConditionalAccess.cs:60:26:60:38 | Entry | +| ConditionalAccess.cs:60:63:60:64 | s2 | ConditionalAccess.cs:60:52:60:53 | s1 | +| ConditionalAccess.cs:60:70:60:71 | access to parameter s1 | ConditionalAccess.cs:60:70:60:78 | Before ... + ... | | ConditionalAccess.cs:60:70:60:78 | ... + ... | ConditionalAccess.cs:60:75:60:78 | ", " | +| ConditionalAccess.cs:60:70:60:78 | After ... + ... | ConditionalAccess.cs:60:70:60:78 | ... + ... | +| ConditionalAccess.cs:60:70:60:78 | Before ... + ... | ConditionalAccess.cs:60:70:60:83 | Before ... + ... | | ConditionalAccess.cs:60:70:60:83 | ... + ... | ConditionalAccess.cs:60:82:60:83 | access to parameter s2 | +| ConditionalAccess.cs:60:70:60:83 | After ... + ... | ConditionalAccess.cs:60:70:60:83 | ... + ... | +| ConditionalAccess.cs:60:70:60:83 | Before ... + ... | ConditionalAccess.cs:60:63:60:64 | s2 | | ConditionalAccess.cs:60:75:60:78 | ", " | ConditionalAccess.cs:60:70:60:71 | access to parameter s1 | -| ConditionalAccess.cs:60:82:60:83 | access to parameter s2 | ConditionalAccess.cs:60:70:60:78 | ... + ... | -| Conditions.cs:1:7:1:16 | call to constructor Object | Conditions.cs:1:7:1:16 | call to method | +| ConditionalAccess.cs:60:82:60:83 | access to parameter s2 | ConditionalAccess.cs:60:70:60:78 | After ... + ... | +| Conditions.cs:1:7:1:16 | After call to constructor Object | Conditions.cs:1:7:1:16 | call to constructor Object | +| Conditions.cs:1:7:1:16 | After call to method | Conditions.cs:1:7:1:16 | call to method | +| Conditions.cs:1:7:1:16 | Before call to constructor Object | Conditions.cs:1:7:1:16 | After call to method | +| Conditions.cs:1:7:1:16 | Before call to method | Conditions.cs:1:7:1:16 | Entry | +| Conditions.cs:1:7:1:16 | Exit | Conditions.cs:1:7:1:16 | Normal Exit | +| Conditions.cs:1:7:1:16 | Normal Exit | Conditions.cs:1:7:1:16 | {...} | +| Conditions.cs:1:7:1:16 | call to constructor Object | Conditions.cs:1:7:1:16 | Before call to constructor Object | | Conditions.cs:1:7:1:16 | call to method | Conditions.cs:1:7:1:16 | this access | -| Conditions.cs:1:7:1:16 | exit Conditions | Conditions.cs:1:7:1:16 | exit Conditions (normal) | -| Conditions.cs:1:7:1:16 | exit Conditions (normal) | Conditions.cs:1:7:1:16 | {...} | -| Conditions.cs:1:7:1:16 | this access | Conditions.cs:1:7:1:16 | enter Conditions | -| Conditions.cs:1:7:1:16 | {...} | Conditions.cs:1:7:1:16 | call to constructor Object | -| Conditions.cs:3:10:3:19 | exit IncrOrDecr | Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | -| Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | Conditions.cs:7:13:7:16 | [false] !... | -| Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | Conditions.cs:8:13:8:15 | ...-- | -| Conditions.cs:4:5:9:5 | {...} | Conditions.cs:3:10:3:19 | enter IncrOrDecr | +| Conditions.cs:1:7:1:16 | this access | Conditions.cs:1:7:1:16 | Before call to method | +| Conditions.cs:1:7:1:16 | {...} | Conditions.cs:1:7:1:16 | After call to constructor Object | +| Conditions.cs:3:10:3:19 | Exit | Conditions.cs:3:10:3:19 | Normal Exit | +| Conditions.cs:3:10:3:19 | Normal Exit | Conditions.cs:4:5:9:5 | After {...} | +| Conditions.cs:3:26:3:28 | inc | Conditions.cs:3:10:3:19 | Entry | +| Conditions.cs:3:39:3:39 | x | Conditions.cs:3:26:3:28 | inc | +| Conditions.cs:4:5:9:5 | After {...} | Conditions.cs:7:9:8:16 | After if (...) ... | +| Conditions.cs:4:5:9:5 | {...} | Conditions.cs:3:39:3:39 | x | +| Conditions.cs:5:9:6:16 | After if (...) ... | Conditions.cs:5:13:5:15 | After access to parameter inc [false] | +| Conditions.cs:5:9:6:16 | After if (...) ... | Conditions.cs:6:13:6:16 | After ...; | | Conditions.cs:5:9:6:16 | if (...) ... | Conditions.cs:4:5:9:5 | {...} | | Conditions.cs:5:13:5:15 | access to parameter inc | Conditions.cs:5:9:6:16 | if (...) ... | -| Conditions.cs:6:13:6:13 | access to parameter x | Conditions.cs:6:13:6:16 | ...; | +| Conditions.cs:6:13:6:13 | access to parameter x | Conditions.cs:6:13:6:15 | Before ...++ | | Conditions.cs:6:13:6:15 | ...++ | Conditions.cs:6:13:6:13 | access to parameter x | -| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:5:13:5:15 | access to parameter inc | -| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:6:13:6:15 | ...++ | -| Conditions.cs:7:14:7:16 | access to parameter inc | Conditions.cs:7:9:8:16 | if (...) ... | -| Conditions.cs:8:13:8:13 | access to parameter x | Conditions.cs:8:13:8:16 | ...; | +| Conditions.cs:6:13:6:15 | After ...++ | Conditions.cs:6:13:6:15 | ...++ | +| Conditions.cs:6:13:6:15 | Before ...++ | Conditions.cs:6:13:6:16 | ...; | +| Conditions.cs:6:13:6:16 | ...; | Conditions.cs:5:13:5:15 | After access to parameter inc [true] | +| Conditions.cs:6:13:6:16 | After ...; | Conditions.cs:6:13:6:15 | After ...++ | +| Conditions.cs:7:9:8:16 | After if (...) ... | Conditions.cs:7:13:7:16 | After !... [false] | +| Conditions.cs:7:9:8:16 | After if (...) ... | Conditions.cs:8:13:8:16 | After ...; | +| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:5:9:6:16 | After if (...) ... | +| Conditions.cs:7:13:7:16 | !... | Conditions.cs:7:9:8:16 | if (...) ... | +| Conditions.cs:7:13:7:16 | After !... [false] | Conditions.cs:7:14:7:16 | After access to parameter inc [true] | +| Conditions.cs:7:13:7:16 | After !... [true] | Conditions.cs:7:14:7:16 | After access to parameter inc [false] | +| Conditions.cs:7:14:7:16 | access to parameter inc | Conditions.cs:7:13:7:16 | !... | +| Conditions.cs:8:13:8:13 | access to parameter x | Conditions.cs:8:13:8:15 | Before ...-- | | Conditions.cs:8:13:8:15 | ...-- | Conditions.cs:8:13:8:13 | access to parameter x | -| Conditions.cs:8:13:8:16 | ...; | Conditions.cs:7:13:7:16 | [true] !... | -| Conditions.cs:11:9:11:10 | exit M1 | Conditions.cs:11:9:11:10 | exit M1 (normal) | -| Conditions.cs:11:9:11:10 | exit M1 (normal) | Conditions.cs:19:9:19:17 | return ...; | -| Conditions.cs:12:5:20:5 | {...} | Conditions.cs:11:9:11:10 | enter M1 | +| Conditions.cs:8:13:8:15 | After ...-- | Conditions.cs:8:13:8:15 | ...-- | +| Conditions.cs:8:13:8:15 | Before ...-- | Conditions.cs:8:13:8:16 | ...; | +| Conditions.cs:8:13:8:16 | ...; | Conditions.cs:7:13:7:16 | After !... [true] | +| Conditions.cs:8:13:8:16 | After ...; | Conditions.cs:8:13:8:15 | After ...-- | +| Conditions.cs:11:9:11:10 | Exit | Conditions.cs:11:9:11:10 | Normal Exit | +| Conditions.cs:11:9:11:10 | Normal Exit | Conditions.cs:19:9:19:17 | return ...; | +| Conditions.cs:11:17:11:17 | b | Conditions.cs:11:9:11:10 | Entry | +| Conditions.cs:12:5:20:5 | {...} | Conditions.cs:11:17:11:17 | b | | Conditions.cs:13:9:13:18 | ... ...; | Conditions.cs:12:5:20:5 | {...} | +| Conditions.cs:13:9:13:18 | After ... ...; | Conditions.cs:13:13:13:17 | After Int32 x = ... | +| Conditions.cs:13:13:13:13 | access to local variable x | Conditions.cs:13:13:13:17 | Before Int32 x = ... | +| Conditions.cs:13:13:13:17 | After Int32 x = ... | Conditions.cs:13:13:13:17 | Int32 x = ... | +| Conditions.cs:13:13:13:17 | Before Int32 x = ... | Conditions.cs:13:9:13:18 | ... ...; | | Conditions.cs:13:13:13:17 | Int32 x = ... | Conditions.cs:13:17:13:17 | 0 | -| Conditions.cs:13:17:13:17 | 0 | Conditions.cs:13:9:13:18 | ... ...; | -| Conditions.cs:14:9:15:16 | if (...) ... | Conditions.cs:13:13:13:17 | Int32 x = ... | +| Conditions.cs:13:17:13:17 | 0 | Conditions.cs:13:13:13:13 | access to local variable x | +| Conditions.cs:14:9:15:16 | After if (...) ... | Conditions.cs:14:13:14:13 | After access to parameter b [false] | +| Conditions.cs:14:9:15:16 | After if (...) ... | Conditions.cs:15:13:15:16 | After ...; | +| Conditions.cs:14:9:15:16 | if (...) ... | Conditions.cs:13:9:13:18 | After ... ...; | | Conditions.cs:14:13:14:13 | access to parameter b | Conditions.cs:14:9:15:16 | if (...) ... | -| Conditions.cs:15:13:15:13 | access to local variable x | Conditions.cs:15:13:15:16 | ...; | +| Conditions.cs:15:13:15:13 | access to local variable x | Conditions.cs:15:13:15:15 | Before ...++ | | Conditions.cs:15:13:15:15 | ...++ | Conditions.cs:15:13:15:13 | access to local variable x | -| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:14:13:14:13 | access to parameter b | -| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:15:13:15:15 | ...++ | -| Conditions.cs:16:13:16:13 | access to local variable x | Conditions.cs:16:9:18:20 | if (...) ... | +| Conditions.cs:15:13:15:15 | After ...++ | Conditions.cs:15:13:15:15 | ...++ | +| Conditions.cs:15:13:15:15 | Before ...++ | Conditions.cs:15:13:15:16 | ...; | +| Conditions.cs:15:13:15:16 | ...; | Conditions.cs:14:13:14:13 | After access to parameter b [true] | +| Conditions.cs:15:13:15:16 | After ...; | Conditions.cs:15:13:15:15 | After ...++ | +| Conditions.cs:16:9:18:20 | After if (...) ... | Conditions.cs:16:13:16:17 | After ... > ... [false] | +| Conditions.cs:16:9:18:20 | After if (...) ... | Conditions.cs:17:13:18:20 | After if (...) ... | +| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:14:9:15:16 | After if (...) ... | +| Conditions.cs:16:13:16:13 | access to local variable x | Conditions.cs:16:13:16:17 | Before ... > ... | | Conditions.cs:16:13:16:17 | ... > ... | Conditions.cs:16:17:16:17 | 0 | +| Conditions.cs:16:13:16:17 | Before ... > ... | Conditions.cs:16:9:18:20 | if (...) ... | | Conditions.cs:16:17:16:17 | 0 | Conditions.cs:16:13:16:13 | access to local variable x | -| Conditions.cs:17:18:17:18 | access to parameter b | Conditions.cs:17:13:18:20 | if (...) ... | -| Conditions.cs:18:17:18:17 | access to local variable x | Conditions.cs:18:17:18:20 | ...; | +| Conditions.cs:17:13:18:20 | After if (...) ... | Conditions.cs:17:17:17:18 | After !... [false] | +| Conditions.cs:17:13:18:20 | After if (...) ... | Conditions.cs:18:17:18:20 | After ...; | +| Conditions.cs:17:13:18:20 | if (...) ... | Conditions.cs:16:13:16:17 | After ... > ... [true] | +| Conditions.cs:17:17:17:18 | !... | Conditions.cs:17:13:18:20 | if (...) ... | +| Conditions.cs:17:17:17:18 | After !... [false] | Conditions.cs:17:18:17:18 | After access to parameter b [true] | +| Conditions.cs:17:17:17:18 | After !... [true] | Conditions.cs:17:18:17:18 | After access to parameter b [false] | +| Conditions.cs:17:18:17:18 | access to parameter b | Conditions.cs:17:17:17:18 | !... | +| Conditions.cs:18:17:18:17 | access to local variable x | Conditions.cs:18:17:18:19 | Before ...-- | | Conditions.cs:18:17:18:19 | ...-- | Conditions.cs:18:17:18:17 | access to local variable x | -| Conditions.cs:18:17:18:20 | ...; | Conditions.cs:17:17:17:18 | [true] !... | +| Conditions.cs:18:17:18:19 | After ...-- | Conditions.cs:18:17:18:19 | ...-- | +| Conditions.cs:18:17:18:19 | Before ...-- | Conditions.cs:18:17:18:20 | ...; | +| Conditions.cs:18:17:18:20 | ...; | Conditions.cs:17:17:17:18 | After !... [true] | +| Conditions.cs:18:17:18:20 | After ...; | Conditions.cs:18:17:18:19 | After ...-- | +| Conditions.cs:19:9:19:17 | Before return ...; | Conditions.cs:16:9:18:20 | After if (...) ... | | Conditions.cs:19:9:19:17 | return ...; | Conditions.cs:19:16:19:16 | access to local variable x | -| Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:16:13:16:17 | ... > ... | -| Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:17:17:17:18 | [false] !... | -| Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:18:17:18:19 | ...-- | -| Conditions.cs:22:9:22:10 | exit M2 | Conditions.cs:22:9:22:10 | exit M2 (normal) | -| Conditions.cs:22:9:22:10 | exit M2 (normal) | Conditions.cs:30:9:30:17 | return ...; | -| Conditions.cs:23:5:31:5 | {...} | Conditions.cs:22:9:22:10 | enter M2 | +| Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:19:9:19:17 | Before return ...; | +| Conditions.cs:22:9:22:10 | Exit | Conditions.cs:22:9:22:10 | Normal Exit | +| Conditions.cs:22:9:22:10 | Normal Exit | Conditions.cs:30:9:30:17 | return ...; | +| Conditions.cs:22:17:22:18 | b1 | Conditions.cs:22:9:22:10 | Entry | +| Conditions.cs:22:26:22:27 | b2 | Conditions.cs:22:17:22:18 | b1 | +| Conditions.cs:23:5:31:5 | {...} | Conditions.cs:22:26:22:27 | b2 | | Conditions.cs:24:9:24:18 | ... ...; | Conditions.cs:23:5:31:5 | {...} | +| Conditions.cs:24:9:24:18 | After ... ...; | Conditions.cs:24:13:24:17 | After Int32 x = ... | +| Conditions.cs:24:13:24:13 | access to local variable x | Conditions.cs:24:13:24:17 | Before Int32 x = ... | +| Conditions.cs:24:13:24:17 | After Int32 x = ... | Conditions.cs:24:13:24:17 | Int32 x = ... | +| Conditions.cs:24:13:24:17 | Before Int32 x = ... | Conditions.cs:24:9:24:18 | ... ...; | | Conditions.cs:24:13:24:17 | Int32 x = ... | Conditions.cs:24:17:24:17 | 0 | -| Conditions.cs:24:17:24:17 | 0 | Conditions.cs:24:9:24:18 | ... ...; | -| Conditions.cs:25:9:27:20 | if (...) ... | Conditions.cs:24:13:24:17 | Int32 x = ... | +| Conditions.cs:24:17:24:17 | 0 | Conditions.cs:24:13:24:13 | access to local variable x | +| Conditions.cs:25:9:27:20 | After if (...) ... | Conditions.cs:25:13:25:14 | After access to parameter b1 [false] | +| Conditions.cs:25:9:27:20 | After if (...) ... | Conditions.cs:26:13:27:20 | After if (...) ... | +| Conditions.cs:25:9:27:20 | if (...) ... | Conditions.cs:24:9:24:18 | After ... ...; | | Conditions.cs:25:13:25:14 | access to parameter b1 | Conditions.cs:25:9:27:20 | if (...) ... | +| Conditions.cs:26:13:27:20 | After if (...) ... | Conditions.cs:26:17:26:18 | After access to parameter b2 [false] | +| Conditions.cs:26:13:27:20 | After if (...) ... | Conditions.cs:27:17:27:20 | After ...; | +| Conditions.cs:26:13:27:20 | if (...) ... | Conditions.cs:25:13:25:14 | After access to parameter b1 [true] | | Conditions.cs:26:17:26:18 | access to parameter b2 | Conditions.cs:26:13:27:20 | if (...) ... | -| Conditions.cs:27:17:27:17 | access to local variable x | Conditions.cs:27:17:27:20 | ...; | +| Conditions.cs:27:17:27:17 | access to local variable x | Conditions.cs:27:17:27:19 | Before ...++ | | Conditions.cs:27:17:27:19 | ...++ | Conditions.cs:27:17:27:17 | access to local variable x | -| Conditions.cs:28:9:29:16 | if (...) ... | Conditions.cs:25:13:25:14 | access to parameter b1 | -| Conditions.cs:28:9:29:16 | if (...) ... | Conditions.cs:26:17:26:18 | access to parameter b2 | -| Conditions.cs:28:9:29:16 | if (...) ... | Conditions.cs:27:17:27:19 | ...++ | +| Conditions.cs:27:17:27:19 | After ...++ | Conditions.cs:27:17:27:19 | ...++ | +| Conditions.cs:27:17:27:19 | Before ...++ | Conditions.cs:27:17:27:20 | ...; | +| Conditions.cs:27:17:27:20 | ...; | Conditions.cs:26:17:26:18 | After access to parameter b2 [true] | +| Conditions.cs:27:17:27:20 | After ...; | Conditions.cs:27:17:27:19 | After ...++ | +| Conditions.cs:28:9:29:16 | After if (...) ... | Conditions.cs:28:13:28:14 | After access to parameter b2 [false] | +| Conditions.cs:28:9:29:16 | After if (...) ... | Conditions.cs:29:13:29:16 | After ...; | +| Conditions.cs:28:9:29:16 | if (...) ... | Conditions.cs:25:9:27:20 | After if (...) ... | | Conditions.cs:28:13:28:14 | access to parameter b2 | Conditions.cs:28:9:29:16 | if (...) ... | -| Conditions.cs:29:13:29:13 | access to local variable x | Conditions.cs:29:13:29:16 | ...; | +| Conditions.cs:29:13:29:13 | access to local variable x | Conditions.cs:29:13:29:15 | Before ...++ | | Conditions.cs:29:13:29:15 | ...++ | Conditions.cs:29:13:29:13 | access to local variable x | +| Conditions.cs:29:13:29:15 | After ...++ | Conditions.cs:29:13:29:15 | ...++ | +| Conditions.cs:29:13:29:15 | Before ...++ | Conditions.cs:29:13:29:16 | ...; | +| Conditions.cs:29:13:29:16 | ...; | Conditions.cs:28:13:28:14 | After access to parameter b2 [true] | +| Conditions.cs:29:13:29:16 | After ...; | Conditions.cs:29:13:29:15 | After ...++ | +| Conditions.cs:30:9:30:17 | Before return ...; | Conditions.cs:28:9:29:16 | After if (...) ... | | Conditions.cs:30:9:30:17 | return ...; | Conditions.cs:30:16:30:16 | access to local variable x | -| Conditions.cs:30:16:30:16 | access to local variable x | Conditions.cs:28:13:28:14 | access to parameter b2 | -| Conditions.cs:30:16:30:16 | access to local variable x | Conditions.cs:29:13:29:15 | ...++ | -| Conditions.cs:33:9:33:10 | exit M3 | Conditions.cs:33:9:33:10 | exit M3 (normal) | -| Conditions.cs:33:9:33:10 | exit M3 (normal) | Conditions.cs:43:9:43:17 | return ...; | -| Conditions.cs:34:5:44:5 | {...} | Conditions.cs:33:9:33:10 | enter M3 | +| Conditions.cs:30:16:30:16 | access to local variable x | Conditions.cs:30:9:30:17 | Before return ...; | +| Conditions.cs:33:9:33:10 | Exit | Conditions.cs:33:9:33:10 | Normal Exit | +| Conditions.cs:33:9:33:10 | Normal Exit | Conditions.cs:43:9:43:17 | return ...; | +| Conditions.cs:33:17:33:18 | b1 | Conditions.cs:33:9:33:10 | Entry | +| Conditions.cs:34:5:44:5 | {...} | Conditions.cs:33:17:33:18 | b1 | | Conditions.cs:35:9:35:18 | ... ...; | Conditions.cs:34:5:44:5 | {...} | +| Conditions.cs:35:9:35:18 | After ... ...; | Conditions.cs:35:13:35:17 | After Int32 x = ... | +| Conditions.cs:35:13:35:13 | access to local variable x | Conditions.cs:35:13:35:17 | Before Int32 x = ... | +| Conditions.cs:35:13:35:17 | After Int32 x = ... | Conditions.cs:35:13:35:17 | Int32 x = ... | +| Conditions.cs:35:13:35:17 | Before Int32 x = ... | Conditions.cs:35:9:35:18 | ... ...; | | Conditions.cs:35:13:35:17 | Int32 x = ... | Conditions.cs:35:17:35:17 | 0 | -| Conditions.cs:35:17:35:17 | 0 | Conditions.cs:35:9:35:18 | ... ...; | -| Conditions.cs:36:9:36:23 | ... ...; | Conditions.cs:35:13:35:17 | Int32 x = ... | +| Conditions.cs:35:17:35:17 | 0 | Conditions.cs:35:13:35:13 | access to local variable x | +| Conditions.cs:36:9:36:23 | ... ...; | Conditions.cs:35:9:35:18 | After ... ...; | +| Conditions.cs:36:9:36:23 | After ... ...; | Conditions.cs:36:13:36:22 | After Boolean b2 = ... | +| Conditions.cs:36:13:36:14 | access to local variable b2 | Conditions.cs:36:13:36:22 | Before Boolean b2 = ... | +| Conditions.cs:36:13:36:22 | After Boolean b2 = ... | Conditions.cs:36:13:36:22 | Boolean b2 = ... | +| Conditions.cs:36:13:36:22 | Before Boolean b2 = ... | Conditions.cs:36:9:36:23 | ... ...; | | Conditions.cs:36:13:36:22 | Boolean b2 = ... | Conditions.cs:36:18:36:22 | false | -| Conditions.cs:36:18:36:22 | false | Conditions.cs:36:9:36:23 | ... ...; | -| Conditions.cs:37:9:38:20 | if (...) ... | Conditions.cs:36:13:36:22 | Boolean b2 = ... | +| Conditions.cs:36:18:36:22 | false | Conditions.cs:36:13:36:14 | access to local variable b2 | +| Conditions.cs:37:9:38:20 | After if (...) ... | Conditions.cs:37:13:37:14 | After access to parameter b1 [false] | +| Conditions.cs:37:9:38:20 | After if (...) ... | Conditions.cs:38:13:38:20 | After ...; | +| Conditions.cs:37:9:38:20 | if (...) ... | Conditions.cs:36:9:36:23 | After ... ...; | | Conditions.cs:37:13:37:14 | access to parameter b1 | Conditions.cs:37:9:38:20 | if (...) ... | +| Conditions.cs:38:13:38:14 | access to local variable b2 | Conditions.cs:38:13:38:19 | Before ... = ... | | Conditions.cs:38:13:38:19 | ... = ... | Conditions.cs:38:18:38:19 | access to parameter b1 | -| Conditions.cs:38:18:38:19 | access to parameter b1 | Conditions.cs:38:13:38:20 | ...; | -| Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:37:13:37:14 | access to parameter b1 | -| Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:38:13:38:19 | ... = ... | +| Conditions.cs:38:13:38:19 | After ... = ... | Conditions.cs:38:13:38:19 | ... = ... | +| Conditions.cs:38:13:38:19 | Before ... = ... | Conditions.cs:38:13:38:20 | ...; | +| Conditions.cs:38:13:38:20 | ...; | Conditions.cs:37:13:37:14 | After access to parameter b1 [true] | +| Conditions.cs:38:13:38:20 | After ...; | Conditions.cs:38:13:38:19 | After ... = ... | +| Conditions.cs:38:18:38:19 | access to parameter b1 | Conditions.cs:38:13:38:14 | access to local variable b2 | +| Conditions.cs:39:9:40:16 | After if (...) ... | Conditions.cs:39:13:39:14 | After access to local variable b2 [false] | +| Conditions.cs:39:9:40:16 | After if (...) ... | Conditions.cs:40:13:40:16 | After ...; | +| Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:37:9:38:20 | After if (...) ... | | Conditions.cs:39:13:39:14 | access to local variable b2 | Conditions.cs:39:9:40:16 | if (...) ... | -| Conditions.cs:40:13:40:13 | access to local variable x | Conditions.cs:40:13:40:16 | ...; | +| Conditions.cs:40:13:40:13 | access to local variable x | Conditions.cs:40:13:40:15 | Before ...++ | | Conditions.cs:40:13:40:15 | ...++ | Conditions.cs:40:13:40:13 | access to local variable x | -| Conditions.cs:41:9:42:16 | if (...) ... | Conditions.cs:39:13:39:14 | access to local variable b2 | -| Conditions.cs:41:9:42:16 | if (...) ... | Conditions.cs:40:13:40:15 | ...++ | +| Conditions.cs:40:13:40:15 | After ...++ | Conditions.cs:40:13:40:15 | ...++ | +| Conditions.cs:40:13:40:15 | Before ...++ | Conditions.cs:40:13:40:16 | ...; | +| Conditions.cs:40:13:40:16 | ...; | Conditions.cs:39:13:39:14 | After access to local variable b2 [true] | +| Conditions.cs:40:13:40:16 | After ...; | Conditions.cs:40:13:40:15 | After ...++ | +| Conditions.cs:41:9:42:16 | After if (...) ... | Conditions.cs:41:13:41:14 | After access to local variable b2 [false] | +| Conditions.cs:41:9:42:16 | After if (...) ... | Conditions.cs:42:13:42:16 | After ...; | +| Conditions.cs:41:9:42:16 | if (...) ... | Conditions.cs:39:9:40:16 | After if (...) ... | | Conditions.cs:41:13:41:14 | access to local variable b2 | Conditions.cs:41:9:42:16 | if (...) ... | -| Conditions.cs:42:13:42:13 | access to local variable x | Conditions.cs:42:13:42:16 | ...; | +| Conditions.cs:42:13:42:13 | access to local variable x | Conditions.cs:42:13:42:15 | Before ...++ | | Conditions.cs:42:13:42:15 | ...++ | Conditions.cs:42:13:42:13 | access to local variable x | +| Conditions.cs:42:13:42:15 | After ...++ | Conditions.cs:42:13:42:15 | ...++ | +| Conditions.cs:42:13:42:15 | Before ...++ | Conditions.cs:42:13:42:16 | ...; | +| Conditions.cs:42:13:42:16 | ...; | Conditions.cs:41:13:41:14 | After access to local variable b2 [true] | +| Conditions.cs:42:13:42:16 | After ...; | Conditions.cs:42:13:42:15 | After ...++ | +| Conditions.cs:43:9:43:17 | Before return ...; | Conditions.cs:41:9:42:16 | After if (...) ... | | Conditions.cs:43:9:43:17 | return ...; | Conditions.cs:43:16:43:16 | access to local variable x | -| Conditions.cs:43:16:43:16 | access to local variable x | Conditions.cs:41:13:41:14 | access to local variable b2 | -| Conditions.cs:43:16:43:16 | access to local variable x | Conditions.cs:42:13:42:15 | ...++ | -| Conditions.cs:46:9:46:10 | exit M4 | Conditions.cs:46:9:46:10 | exit M4 (normal) | -| Conditions.cs:46:9:46:10 | exit M4 (normal) | Conditions.cs:54:9:54:17 | return ...; | -| Conditions.cs:47:5:55:5 | {...} | Conditions.cs:46:9:46:10 | enter M4 | +| Conditions.cs:43:16:43:16 | access to local variable x | Conditions.cs:43:9:43:17 | Before return ...; | +| Conditions.cs:46:9:46:10 | Exit | Conditions.cs:46:9:46:10 | Normal Exit | +| Conditions.cs:46:9:46:10 | Normal Exit | Conditions.cs:54:9:54:17 | return ...; | +| Conditions.cs:46:17:46:17 | b | Conditions.cs:46:9:46:10 | Entry | +| Conditions.cs:46:24:46:24 | x | Conditions.cs:46:17:46:17 | b | +| Conditions.cs:47:5:55:5 | {...} | Conditions.cs:46:24:46:24 | x | | Conditions.cs:48:9:48:18 | ... ...; | Conditions.cs:47:5:55:5 | {...} | +| Conditions.cs:48:9:48:18 | After ... ...; | Conditions.cs:48:13:48:17 | After Int32 y = ... | +| Conditions.cs:48:13:48:13 | access to local variable y | Conditions.cs:48:13:48:17 | Before Int32 y = ... | +| Conditions.cs:48:13:48:17 | After Int32 y = ... | Conditions.cs:48:13:48:17 | Int32 y = ... | +| Conditions.cs:48:13:48:17 | Before Int32 y = ... | Conditions.cs:48:9:48:18 | ... ...; | | Conditions.cs:48:13:48:17 | Int32 y = ... | Conditions.cs:48:17:48:17 | 0 | -| Conditions.cs:48:17:48:17 | 0 | Conditions.cs:48:9:48:18 | ... ...; | -| Conditions.cs:49:9:53:9 | while (...) ... | Conditions.cs:48:13:48:17 | Int32 y = ... | -| Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:49:9:53:9 | while (...) ... | -| Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:51:17:51:17 | access to parameter b | -| Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:52:17:52:19 | ...++ | +| Conditions.cs:48:17:48:17 | 0 | Conditions.cs:48:13:48:13 | access to local variable y | +| Conditions.cs:49:9:53:9 | After while (...) ... | Conditions.cs:49:16:49:22 | After ... > ... [false] | +| Conditions.cs:49:9:53:9 | [LoopHeader] while (...) ... | Conditions.cs:49:9:53:9 | while (...) ... | +| Conditions.cs:49:9:53:9 | [LoopHeader] while (...) ... | Conditions.cs:50:9:53:9 | After {...} | +| Conditions.cs:49:9:53:9 | while (...) ... | Conditions.cs:48:9:48:18 | After ... ...; | +| Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:49:16:49:18 | Before ...-- | | Conditions.cs:49:16:49:18 | ...-- | Conditions.cs:49:16:49:16 | access to parameter x | +| Conditions.cs:49:16:49:18 | After ...-- | Conditions.cs:49:16:49:18 | ...-- | +| Conditions.cs:49:16:49:18 | Before ...-- | Conditions.cs:49:16:49:22 | Before ... > ... | | Conditions.cs:49:16:49:22 | ... > ... | Conditions.cs:49:22:49:22 | 0 | -| Conditions.cs:49:22:49:22 | 0 | Conditions.cs:49:16:49:18 | ...-- | +| Conditions.cs:49:16:49:22 | After ... > ... [false] | Conditions.cs:49:16:49:22 | ... > ... | +| Conditions.cs:49:16:49:22 | Before ... > ... | Conditions.cs:49:9:53:9 | [LoopHeader] while (...) ... | +| Conditions.cs:49:22:49:22 | 0 | Conditions.cs:49:16:49:18 | After ...-- | +| Conditions.cs:50:9:53:9 | After {...} | Conditions.cs:51:13:52:20 | After if (...) ... | +| Conditions.cs:50:9:53:9 | {...} | Conditions.cs:49:16:49:22 | After ... > ... [true] | +| Conditions.cs:51:13:52:20 | After if (...) ... | Conditions.cs:51:17:51:17 | After access to parameter b [false] | +| Conditions.cs:51:13:52:20 | After if (...) ... | Conditions.cs:52:17:52:20 | After ...; | | Conditions.cs:51:13:52:20 | if (...) ... | Conditions.cs:50:9:53:9 | {...} | | Conditions.cs:51:17:51:17 | access to parameter b | Conditions.cs:51:13:52:20 | if (...) ... | -| Conditions.cs:52:17:52:17 | access to local variable y | Conditions.cs:52:17:52:20 | ...; | +| Conditions.cs:52:17:52:17 | access to local variable y | Conditions.cs:52:17:52:19 | Before ...++ | | Conditions.cs:52:17:52:19 | ...++ | Conditions.cs:52:17:52:17 | access to local variable y | +| Conditions.cs:52:17:52:19 | After ...++ | Conditions.cs:52:17:52:19 | ...++ | +| Conditions.cs:52:17:52:19 | Before ...++ | Conditions.cs:52:17:52:20 | ...; | +| Conditions.cs:52:17:52:20 | ...; | Conditions.cs:51:17:51:17 | After access to parameter b [true] | +| Conditions.cs:52:17:52:20 | After ...; | Conditions.cs:52:17:52:19 | After ...++ | +| Conditions.cs:54:9:54:17 | Before return ...; | Conditions.cs:49:9:53:9 | After while (...) ... | | Conditions.cs:54:9:54:17 | return ...; | Conditions.cs:54:16:54:16 | access to local variable y | -| Conditions.cs:54:16:54:16 | access to local variable y | Conditions.cs:49:16:49:22 | ... > ... | -| Conditions.cs:57:9:57:10 | exit M5 | Conditions.cs:57:9:57:10 | exit M5 (normal) | -| Conditions.cs:57:9:57:10 | exit M5 (normal) | Conditions.cs:67:9:67:17 | return ...; | -| Conditions.cs:58:5:68:5 | {...} | Conditions.cs:57:9:57:10 | enter M5 | +| Conditions.cs:54:16:54:16 | access to local variable y | Conditions.cs:54:9:54:17 | Before return ...; | +| Conditions.cs:57:9:57:10 | Exit | Conditions.cs:57:9:57:10 | Normal Exit | +| Conditions.cs:57:9:57:10 | Normal Exit | Conditions.cs:67:9:67:17 | return ...; | +| Conditions.cs:57:17:57:17 | b | Conditions.cs:57:9:57:10 | Entry | +| Conditions.cs:57:24:57:24 | x | Conditions.cs:57:17:57:17 | b | +| Conditions.cs:58:5:68:5 | {...} | Conditions.cs:57:24:57:24 | x | | Conditions.cs:59:9:59:18 | ... ...; | Conditions.cs:58:5:68:5 | {...} | +| Conditions.cs:59:9:59:18 | After ... ...; | Conditions.cs:59:13:59:17 | After Int32 y = ... | +| Conditions.cs:59:13:59:13 | access to local variable y | Conditions.cs:59:13:59:17 | Before Int32 y = ... | +| Conditions.cs:59:13:59:17 | After Int32 y = ... | Conditions.cs:59:13:59:17 | Int32 y = ... | +| Conditions.cs:59:13:59:17 | Before Int32 y = ... | Conditions.cs:59:9:59:18 | ... ...; | | Conditions.cs:59:13:59:17 | Int32 y = ... | Conditions.cs:59:17:59:17 | 0 | -| Conditions.cs:59:17:59:17 | 0 | Conditions.cs:59:9:59:18 | ... ...; | -| Conditions.cs:60:9:64:9 | while (...) ... | Conditions.cs:59:13:59:17 | Int32 y = ... | -| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:60:9:64:9 | while (...) ... | -| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:62:17:62:17 | access to parameter b | -| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:63:17:63:19 | ...++ | +| Conditions.cs:59:17:59:17 | 0 | Conditions.cs:59:13:59:13 | access to local variable y | +| Conditions.cs:60:9:64:9 | After while (...) ... | Conditions.cs:60:16:60:22 | After ... > ... [false] | +| Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | Conditions.cs:60:9:64:9 | while (...) ... | +| Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | Conditions.cs:61:9:64:9 | After {...} | +| Conditions.cs:60:9:64:9 | while (...) ... | Conditions.cs:59:9:59:18 | After ... ...; | +| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:60:16:60:18 | Before ...-- | | Conditions.cs:60:16:60:18 | ...-- | Conditions.cs:60:16:60:16 | access to parameter x | +| Conditions.cs:60:16:60:18 | After ...-- | Conditions.cs:60:16:60:18 | ...-- | +| Conditions.cs:60:16:60:18 | Before ...-- | Conditions.cs:60:16:60:22 | Before ... > ... | | Conditions.cs:60:16:60:22 | ... > ... | Conditions.cs:60:22:60:22 | 0 | -| Conditions.cs:60:22:60:22 | 0 | Conditions.cs:60:16:60:18 | ...-- | +| Conditions.cs:60:16:60:22 | After ... > ... [false] | Conditions.cs:60:16:60:22 | ... > ... | +| Conditions.cs:60:16:60:22 | Before ... > ... | Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | +| Conditions.cs:60:22:60:22 | 0 | Conditions.cs:60:16:60:18 | After ...-- | +| Conditions.cs:61:9:64:9 | After {...} | Conditions.cs:62:13:63:20 | After if (...) ... | +| Conditions.cs:61:9:64:9 | {...} | Conditions.cs:60:16:60:22 | After ... > ... [true] | +| Conditions.cs:62:13:63:20 | After if (...) ... | Conditions.cs:62:17:62:17 | After access to parameter b [false] | +| Conditions.cs:62:13:63:20 | After if (...) ... | Conditions.cs:63:17:63:20 | After ...; | | Conditions.cs:62:13:63:20 | if (...) ... | Conditions.cs:61:9:64:9 | {...} | | Conditions.cs:62:17:62:17 | access to parameter b | Conditions.cs:62:13:63:20 | if (...) ... | -| Conditions.cs:63:17:63:17 | access to local variable y | Conditions.cs:63:17:63:20 | ...; | +| Conditions.cs:63:17:63:17 | access to local variable y | Conditions.cs:63:17:63:19 | Before ...++ | | Conditions.cs:63:17:63:19 | ...++ | Conditions.cs:63:17:63:17 | access to local variable y | -| Conditions.cs:65:9:66:16 | if (...) ... | Conditions.cs:60:16:60:22 | ... > ... | +| Conditions.cs:63:17:63:19 | After ...++ | Conditions.cs:63:17:63:19 | ...++ | +| Conditions.cs:63:17:63:19 | Before ...++ | Conditions.cs:63:17:63:20 | ...; | +| Conditions.cs:63:17:63:20 | ...; | Conditions.cs:62:17:62:17 | After access to parameter b [true] | +| Conditions.cs:63:17:63:20 | After ...; | Conditions.cs:63:17:63:19 | After ...++ | +| Conditions.cs:65:9:66:16 | After if (...) ... | Conditions.cs:65:13:65:13 | After access to parameter b [false] | +| Conditions.cs:65:9:66:16 | After if (...) ... | Conditions.cs:66:13:66:16 | After ...; | +| Conditions.cs:65:9:66:16 | if (...) ... | Conditions.cs:60:9:64:9 | After while (...) ... | | Conditions.cs:65:13:65:13 | access to parameter b | Conditions.cs:65:9:66:16 | if (...) ... | -| Conditions.cs:66:13:66:13 | access to local variable y | Conditions.cs:66:13:66:16 | ...; | +| Conditions.cs:66:13:66:13 | access to local variable y | Conditions.cs:66:13:66:15 | Before ...++ | | Conditions.cs:66:13:66:15 | ...++ | Conditions.cs:66:13:66:13 | access to local variable y | +| Conditions.cs:66:13:66:15 | After ...++ | Conditions.cs:66:13:66:15 | ...++ | +| Conditions.cs:66:13:66:15 | Before ...++ | Conditions.cs:66:13:66:16 | ...; | +| Conditions.cs:66:13:66:16 | ...; | Conditions.cs:65:13:65:13 | After access to parameter b [true] | +| Conditions.cs:66:13:66:16 | After ...; | Conditions.cs:66:13:66:15 | After ...++ | +| Conditions.cs:67:9:67:17 | Before return ...; | Conditions.cs:65:9:66:16 | After if (...) ... | | Conditions.cs:67:9:67:17 | return ...; | Conditions.cs:67:16:67:16 | access to local variable y | -| Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:65:13:65:13 | access to parameter b | -| Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:66:13:66:15 | ...++ | -| Conditions.cs:70:9:70:10 | exit M6 | Conditions.cs:70:9:70:10 | exit M6 (normal) | -| Conditions.cs:70:9:70:10 | exit M6 (normal) | Conditions.cs:83:9:83:17 | return ...; | -| Conditions.cs:71:5:84:5 | {...} | Conditions.cs:70:9:70:10 | enter M6 | +| Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:67:9:67:17 | Before return ...; | +| Conditions.cs:70:9:70:10 | Exit | Conditions.cs:70:9:70:10 | Normal Exit | +| Conditions.cs:70:9:70:10 | Normal Exit | Conditions.cs:83:9:83:17 | return ...; | +| Conditions.cs:70:21:70:22 | ss | Conditions.cs:70:9:70:10 | Entry | +| Conditions.cs:71:5:84:5 | {...} | Conditions.cs:70:21:70:22 | ss | | Conditions.cs:72:9:72:30 | ... ...; | Conditions.cs:71:5:84:5 | {...} | -| Conditions.cs:72:13:72:29 | Boolean b = ... | Conditions.cs:72:17:72:29 | ... > ... | -| Conditions.cs:72:17:72:18 | access to parameter ss | Conditions.cs:72:9:72:30 | ... ...; | +| Conditions.cs:72:9:72:30 | After ... ...; | Conditions.cs:72:13:72:29 | After Boolean b = ... | +| Conditions.cs:72:13:72:13 | access to local variable b | Conditions.cs:72:13:72:29 | Before Boolean b = ... | +| Conditions.cs:72:13:72:29 | After Boolean b = ... | Conditions.cs:72:13:72:29 | Boolean b = ... | +| Conditions.cs:72:13:72:29 | Before Boolean b = ... | Conditions.cs:72:9:72:30 | ... ...; | +| Conditions.cs:72:13:72:29 | Boolean b = ... | Conditions.cs:72:17:72:29 | After ... > ... | +| Conditions.cs:72:17:72:18 | access to parameter ss | Conditions.cs:72:17:72:25 | Before access to property Length | +| Conditions.cs:72:17:72:25 | After access to property Length | Conditions.cs:72:17:72:25 | access to property Length | +| Conditions.cs:72:17:72:25 | Before access to property Length | Conditions.cs:72:17:72:29 | Before ... > ... | | Conditions.cs:72:17:72:25 | access to property Length | Conditions.cs:72:17:72:18 | access to parameter ss | | Conditions.cs:72:17:72:29 | ... > ... | Conditions.cs:72:29:72:29 | 0 | -| Conditions.cs:72:29:72:29 | 0 | Conditions.cs:72:17:72:25 | access to property Length | -| Conditions.cs:73:9:73:18 | ... ...; | Conditions.cs:72:13:72:29 | Boolean b = ... | +| Conditions.cs:72:17:72:29 | After ... > ... | Conditions.cs:72:17:72:29 | ... > ... | +| Conditions.cs:72:17:72:29 | Before ... > ... | Conditions.cs:72:13:72:13 | access to local variable b | +| Conditions.cs:72:29:72:29 | 0 | Conditions.cs:72:17:72:25 | After access to property Length | +| Conditions.cs:73:9:73:18 | ... ...; | Conditions.cs:72:9:72:30 | After ... ...; | +| Conditions.cs:73:9:73:18 | After ... ...; | Conditions.cs:73:13:73:17 | After Int32 x = ... | +| Conditions.cs:73:13:73:13 | access to local variable x | Conditions.cs:73:13:73:17 | Before Int32 x = ... | +| Conditions.cs:73:13:73:17 | After Int32 x = ... | Conditions.cs:73:13:73:17 | Int32 x = ... | +| Conditions.cs:73:13:73:17 | Before Int32 x = ... | Conditions.cs:73:9:73:18 | ... ...; | | Conditions.cs:73:13:73:17 | Int32 x = ... | Conditions.cs:73:17:73:17 | 0 | -| Conditions.cs:73:17:73:17 | 0 | Conditions.cs:73:9:73:18 | ... ...; | -| Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:74:27:74:28 | access to parameter ss | -| Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:78:17:78:21 | ... > ... | -| Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:79:17:79:25 | ... = ... | -| Conditions.cs:74:27:74:28 | access to parameter ss | Conditions.cs:73:13:73:17 | Int32 x = ... | +| Conditions.cs:73:17:73:17 | 0 | Conditions.cs:73:13:73:13 | access to local variable x | +| Conditions.cs:74:9:80:9 | After foreach (... ... in ...) ... | Conditions.cs:74:9:80:9 | [LoopHeader] foreach (... ... in ...) ... | +| Conditions.cs:74:9:80:9 | After foreach (... ... in ...) ... | Conditions.cs:74:27:74:28 | After access to parameter ss [empty] | +| Conditions.cs:74:9:80:9 | [LoopHeader] foreach (... ... in ...) ... | Conditions.cs:75:9:80:9 | After {...} | +| Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:73:9:73:18 | After ... ...; | +| Conditions.cs:74:22:74:22 | String _ | Conditions.cs:74:27:74:28 | After access to parameter ss [non-empty] | +| Conditions.cs:74:27:74:28 | access to parameter ss | Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | +| Conditions.cs:75:9:80:9 | After {...} | Conditions.cs:78:13:79:26 | After if (...) ... | | Conditions.cs:75:9:80:9 | {...} | Conditions.cs:74:22:74:22 | String _ | +| Conditions.cs:76:13:77:20 | After if (...) ... | Conditions.cs:76:17:76:17 | After access to local variable b [false] | +| Conditions.cs:76:13:77:20 | After if (...) ... | Conditions.cs:77:17:77:20 | After ...; | | Conditions.cs:76:13:77:20 | if (...) ... | Conditions.cs:75:9:80:9 | {...} | | Conditions.cs:76:17:76:17 | access to local variable b | Conditions.cs:76:13:77:20 | if (...) ... | -| Conditions.cs:77:17:77:17 | access to local variable x | Conditions.cs:77:17:77:20 | ...; | +| Conditions.cs:77:17:77:17 | access to local variable x | Conditions.cs:77:17:77:19 | Before ...++ | | Conditions.cs:77:17:77:19 | ...++ | Conditions.cs:77:17:77:17 | access to local variable x | -| Conditions.cs:78:13:79:26 | if (...) ... | Conditions.cs:76:17:76:17 | access to local variable b | -| Conditions.cs:78:13:79:26 | if (...) ... | Conditions.cs:77:17:77:19 | ...++ | -| Conditions.cs:78:17:78:17 | access to local variable x | Conditions.cs:78:13:79:26 | if (...) ... | +| Conditions.cs:77:17:77:19 | After ...++ | Conditions.cs:77:17:77:19 | ...++ | +| Conditions.cs:77:17:77:19 | Before ...++ | Conditions.cs:77:17:77:20 | ...; | +| Conditions.cs:77:17:77:20 | ...; | Conditions.cs:76:17:76:17 | After access to local variable b [true] | +| Conditions.cs:77:17:77:20 | After ...; | Conditions.cs:77:17:77:19 | After ...++ | +| Conditions.cs:78:13:79:26 | After if (...) ... | Conditions.cs:78:17:78:21 | After ... > ... [false] | +| Conditions.cs:78:13:79:26 | After if (...) ... | Conditions.cs:79:17:79:26 | After ...; | +| Conditions.cs:78:13:79:26 | if (...) ... | Conditions.cs:76:13:77:20 | After if (...) ... | +| Conditions.cs:78:17:78:17 | access to local variable x | Conditions.cs:78:17:78:21 | Before ... > ... | | Conditions.cs:78:17:78:21 | ... > ... | Conditions.cs:78:21:78:21 | 0 | +| Conditions.cs:78:17:78:21 | Before ... > ... | Conditions.cs:78:13:79:26 | if (...) ... | | Conditions.cs:78:21:78:21 | 0 | Conditions.cs:78:17:78:17 | access to local variable x | +| Conditions.cs:79:17:79:17 | access to local variable b | Conditions.cs:79:17:79:25 | Before ... = ... | | Conditions.cs:79:17:79:25 | ... = ... | Conditions.cs:79:21:79:25 | false | -| Conditions.cs:79:21:79:25 | false | Conditions.cs:79:17:79:26 | ...; | -| Conditions.cs:81:9:82:16 | if (...) ... | Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | +| Conditions.cs:79:17:79:25 | After ... = ... | Conditions.cs:79:17:79:25 | ... = ... | +| Conditions.cs:79:17:79:25 | Before ... = ... | Conditions.cs:79:17:79:26 | ...; | +| Conditions.cs:79:17:79:26 | ...; | Conditions.cs:78:17:78:21 | After ... > ... [true] | +| Conditions.cs:79:17:79:26 | After ...; | Conditions.cs:79:17:79:25 | After ... = ... | +| Conditions.cs:79:21:79:25 | false | Conditions.cs:79:17:79:17 | access to local variable b | +| Conditions.cs:81:9:82:16 | After if (...) ... | Conditions.cs:81:13:81:13 | After access to local variable b [false] | +| Conditions.cs:81:9:82:16 | After if (...) ... | Conditions.cs:82:13:82:16 | After ...; | +| Conditions.cs:81:9:82:16 | if (...) ... | Conditions.cs:74:9:80:9 | After foreach (... ... in ...) ... | | Conditions.cs:81:13:81:13 | access to local variable b | Conditions.cs:81:9:82:16 | if (...) ... | -| Conditions.cs:82:13:82:13 | access to local variable x | Conditions.cs:82:13:82:16 | ...; | +| Conditions.cs:82:13:82:13 | access to local variable x | Conditions.cs:82:13:82:15 | Before ...++ | | Conditions.cs:82:13:82:15 | ...++ | Conditions.cs:82:13:82:13 | access to local variable x | +| Conditions.cs:82:13:82:15 | After ...++ | Conditions.cs:82:13:82:15 | ...++ | +| Conditions.cs:82:13:82:15 | Before ...++ | Conditions.cs:82:13:82:16 | ...; | +| Conditions.cs:82:13:82:16 | ...; | Conditions.cs:81:13:81:13 | After access to local variable b [true] | +| Conditions.cs:82:13:82:16 | After ...; | Conditions.cs:82:13:82:15 | After ...++ | +| Conditions.cs:83:9:83:17 | Before return ...; | Conditions.cs:81:9:82:16 | After if (...) ... | | Conditions.cs:83:9:83:17 | return ...; | Conditions.cs:83:16:83:16 | access to local variable x | -| Conditions.cs:83:16:83:16 | access to local variable x | Conditions.cs:81:13:81:13 | access to local variable b | -| Conditions.cs:83:16:83:16 | access to local variable x | Conditions.cs:82:13:82:15 | ...++ | -| Conditions.cs:86:9:86:10 | exit M7 | Conditions.cs:86:9:86:10 | exit M7 (normal) | -| Conditions.cs:86:9:86:10 | exit M7 (normal) | Conditions.cs:99:9:99:17 | return ...; | -| Conditions.cs:87:5:100:5 | {...} | Conditions.cs:86:9:86:10 | enter M7 | +| Conditions.cs:83:16:83:16 | access to local variable x | Conditions.cs:83:9:83:17 | Before return ...; | +| Conditions.cs:86:9:86:10 | Exit | Conditions.cs:86:9:86:10 | Normal Exit | +| Conditions.cs:86:9:86:10 | Normal Exit | Conditions.cs:99:9:99:17 | return ...; | +| Conditions.cs:86:21:86:22 | ss | Conditions.cs:86:9:86:10 | Entry | +| Conditions.cs:87:5:100:5 | {...} | Conditions.cs:86:21:86:22 | ss | | Conditions.cs:88:9:88:30 | ... ...; | Conditions.cs:87:5:100:5 | {...} | -| Conditions.cs:88:13:88:29 | Boolean b = ... | Conditions.cs:88:17:88:29 | ... > ... | -| Conditions.cs:88:17:88:18 | access to parameter ss | Conditions.cs:88:9:88:30 | ... ...; | +| Conditions.cs:88:9:88:30 | After ... ...; | Conditions.cs:88:13:88:29 | After Boolean b = ... | +| Conditions.cs:88:13:88:13 | access to local variable b | Conditions.cs:88:13:88:29 | Before Boolean b = ... | +| Conditions.cs:88:13:88:29 | After Boolean b = ... | Conditions.cs:88:13:88:29 | Boolean b = ... | +| Conditions.cs:88:13:88:29 | Before Boolean b = ... | Conditions.cs:88:9:88:30 | ... ...; | +| Conditions.cs:88:13:88:29 | Boolean b = ... | Conditions.cs:88:17:88:29 | After ... > ... | +| Conditions.cs:88:17:88:18 | access to parameter ss | Conditions.cs:88:17:88:25 | Before access to property Length | +| Conditions.cs:88:17:88:25 | After access to property Length | Conditions.cs:88:17:88:25 | access to property Length | +| Conditions.cs:88:17:88:25 | Before access to property Length | Conditions.cs:88:17:88:29 | Before ... > ... | | Conditions.cs:88:17:88:25 | access to property Length | Conditions.cs:88:17:88:18 | access to parameter ss | | Conditions.cs:88:17:88:29 | ... > ... | Conditions.cs:88:29:88:29 | 0 | -| Conditions.cs:88:29:88:29 | 0 | Conditions.cs:88:17:88:25 | access to property Length | -| Conditions.cs:89:9:89:18 | ... ...; | Conditions.cs:88:13:88:29 | Boolean b = ... | +| Conditions.cs:88:17:88:29 | After ... > ... | Conditions.cs:88:17:88:29 | ... > ... | +| Conditions.cs:88:17:88:29 | Before ... > ... | Conditions.cs:88:13:88:13 | access to local variable b | +| Conditions.cs:88:29:88:29 | 0 | Conditions.cs:88:17:88:25 | After access to property Length | +| Conditions.cs:89:9:89:18 | ... ...; | Conditions.cs:88:9:88:30 | After ... ...; | +| Conditions.cs:89:9:89:18 | After ... ...; | Conditions.cs:89:13:89:17 | After Int32 x = ... | +| Conditions.cs:89:13:89:13 | access to local variable x | Conditions.cs:89:13:89:17 | Before Int32 x = ... | +| Conditions.cs:89:13:89:17 | After Int32 x = ... | Conditions.cs:89:13:89:17 | Int32 x = ... | +| Conditions.cs:89:13:89:17 | Before Int32 x = ... | Conditions.cs:89:9:89:18 | ... ...; | | Conditions.cs:89:13:89:17 | Int32 x = ... | Conditions.cs:89:17:89:17 | 0 | -| Conditions.cs:89:17:89:17 | 0 | Conditions.cs:89:9:89:18 | ... ...; | -| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:90:27:90:28 | access to parameter ss | -| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:96:17:96:17 | access to local variable b | -| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:97:17:97:19 | ...++ | -| Conditions.cs:90:27:90:28 | access to parameter ss | Conditions.cs:89:13:89:17 | Int32 x = ... | +| Conditions.cs:89:17:89:17 | 0 | Conditions.cs:89:13:89:13 | access to local variable x | +| Conditions.cs:90:9:98:9 | After foreach (... ... in ...) ... | Conditions.cs:90:9:98:9 | [LoopHeader] foreach (... ... in ...) ... | +| Conditions.cs:90:9:98:9 | After foreach (... ... in ...) ... | Conditions.cs:90:27:90:28 | After access to parameter ss [empty] | +| Conditions.cs:90:9:98:9 | [LoopHeader] foreach (... ... in ...) ... | Conditions.cs:91:9:98:9 | After {...} | +| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:89:9:89:18 | After ... ...; | +| Conditions.cs:90:22:90:22 | String _ | Conditions.cs:90:27:90:28 | After access to parameter ss [non-empty] | +| Conditions.cs:90:27:90:28 | access to parameter ss | Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | +| Conditions.cs:91:9:98:9 | After {...} | Conditions.cs:96:13:97:20 | After if (...) ... | | Conditions.cs:91:9:98:9 | {...} | Conditions.cs:90:22:90:22 | String _ | +| Conditions.cs:92:13:93:20 | After if (...) ... | Conditions.cs:92:17:92:17 | After access to local variable b [false] | +| Conditions.cs:92:13:93:20 | After if (...) ... | Conditions.cs:93:17:93:20 | After ...; | | Conditions.cs:92:13:93:20 | if (...) ... | Conditions.cs:91:9:98:9 | {...} | | Conditions.cs:92:17:92:17 | access to local variable b | Conditions.cs:92:13:93:20 | if (...) ... | -| Conditions.cs:93:17:93:17 | access to local variable x | Conditions.cs:93:17:93:20 | ...; | +| Conditions.cs:93:17:93:17 | access to local variable x | Conditions.cs:93:17:93:19 | Before ...++ | | Conditions.cs:93:17:93:19 | ...++ | Conditions.cs:93:17:93:17 | access to local variable x | -| Conditions.cs:94:13:95:26 | if (...) ... | Conditions.cs:92:17:92:17 | access to local variable b | -| Conditions.cs:94:13:95:26 | if (...) ... | Conditions.cs:93:17:93:19 | ...++ | -| Conditions.cs:94:17:94:17 | access to local variable x | Conditions.cs:94:13:95:26 | if (...) ... | +| Conditions.cs:93:17:93:19 | After ...++ | Conditions.cs:93:17:93:19 | ...++ | +| Conditions.cs:93:17:93:19 | Before ...++ | Conditions.cs:93:17:93:20 | ...; | +| Conditions.cs:93:17:93:20 | ...; | Conditions.cs:92:17:92:17 | After access to local variable b [true] | +| Conditions.cs:93:17:93:20 | After ...; | Conditions.cs:93:17:93:19 | After ...++ | +| Conditions.cs:94:13:95:26 | After if (...) ... | Conditions.cs:94:17:94:21 | After ... > ... [false] | +| Conditions.cs:94:13:95:26 | After if (...) ... | Conditions.cs:95:17:95:26 | After ...; | +| Conditions.cs:94:13:95:26 | if (...) ... | Conditions.cs:92:13:93:20 | After if (...) ... | +| Conditions.cs:94:17:94:17 | access to local variable x | Conditions.cs:94:17:94:21 | Before ... > ... | | Conditions.cs:94:17:94:21 | ... > ... | Conditions.cs:94:21:94:21 | 0 | +| Conditions.cs:94:17:94:21 | Before ... > ... | Conditions.cs:94:13:95:26 | if (...) ... | | Conditions.cs:94:21:94:21 | 0 | Conditions.cs:94:17:94:17 | access to local variable x | +| Conditions.cs:95:17:95:17 | access to local variable b | Conditions.cs:95:17:95:25 | Before ... = ... | | Conditions.cs:95:17:95:25 | ... = ... | Conditions.cs:95:21:95:25 | false | -| Conditions.cs:95:21:95:25 | false | Conditions.cs:95:17:95:26 | ...; | -| Conditions.cs:96:13:97:20 | if (...) ... | Conditions.cs:94:17:94:21 | ... > ... | -| Conditions.cs:96:13:97:20 | if (...) ... | Conditions.cs:95:17:95:25 | ... = ... | +| Conditions.cs:95:17:95:25 | After ... = ... | Conditions.cs:95:17:95:25 | ... = ... | +| Conditions.cs:95:17:95:25 | Before ... = ... | Conditions.cs:95:17:95:26 | ...; | +| Conditions.cs:95:17:95:26 | ...; | Conditions.cs:94:17:94:21 | After ... > ... [true] | +| Conditions.cs:95:17:95:26 | After ...; | Conditions.cs:95:17:95:25 | After ... = ... | +| Conditions.cs:95:21:95:25 | false | Conditions.cs:95:17:95:17 | access to local variable b | +| Conditions.cs:96:13:97:20 | After if (...) ... | Conditions.cs:96:17:96:17 | After access to local variable b [false] | +| Conditions.cs:96:13:97:20 | After if (...) ... | Conditions.cs:97:17:97:20 | After ...; | +| Conditions.cs:96:13:97:20 | if (...) ... | Conditions.cs:94:13:95:26 | After if (...) ... | | Conditions.cs:96:17:96:17 | access to local variable b | Conditions.cs:96:13:97:20 | if (...) ... | -| Conditions.cs:97:17:97:17 | access to local variable x | Conditions.cs:97:17:97:20 | ...; | +| Conditions.cs:97:17:97:17 | access to local variable x | Conditions.cs:97:17:97:19 | Before ...++ | | Conditions.cs:97:17:97:19 | ...++ | Conditions.cs:97:17:97:17 | access to local variable x | +| Conditions.cs:97:17:97:19 | After ...++ | Conditions.cs:97:17:97:19 | ...++ | +| Conditions.cs:97:17:97:19 | Before ...++ | Conditions.cs:97:17:97:20 | ...; | +| Conditions.cs:97:17:97:20 | ...; | Conditions.cs:96:17:96:17 | After access to local variable b [true] | +| Conditions.cs:97:17:97:20 | After ...; | Conditions.cs:97:17:97:19 | After ...++ | +| Conditions.cs:99:9:99:17 | Before return ...; | Conditions.cs:90:9:98:9 | After foreach (... ... in ...) ... | | Conditions.cs:99:9:99:17 | return ...; | Conditions.cs:99:16:99:16 | access to local variable x | -| Conditions.cs:99:16:99:16 | access to local variable x | Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | -| Conditions.cs:102:12:102:13 | exit M8 | Conditions.cs:102:12:102:13 | exit M8 (normal) | -| Conditions.cs:102:12:102:13 | exit M8 (normal) | Conditions.cs:110:9:110:17 | return ...; | -| Conditions.cs:103:5:111:5 | {...} | Conditions.cs:102:12:102:13 | enter M8 | +| Conditions.cs:99:16:99:16 | access to local variable x | Conditions.cs:99:9:99:17 | Before return ...; | +| Conditions.cs:102:12:102:13 | Exit | Conditions.cs:102:12:102:13 | Normal Exit | +| Conditions.cs:102:12:102:13 | Normal Exit | Conditions.cs:110:9:110:17 | return ...; | +| Conditions.cs:102:20:102:20 | b | Conditions.cs:102:12:102:13 | Entry | +| Conditions.cs:103:5:111:5 | {...} | Conditions.cs:102:20:102:20 | b | | Conditions.cs:104:9:104:29 | ... ...; | Conditions.cs:103:5:111:5 | {...} | -| Conditions.cs:104:13:104:28 | String x = ... | Conditions.cs:104:17:104:28 | call to method ToString | -| Conditions.cs:104:17:104:17 | access to parameter b | Conditions.cs:104:9:104:29 | ... ...; | +| Conditions.cs:104:9:104:29 | After ... ...; | Conditions.cs:104:13:104:28 | After String x = ... | +| Conditions.cs:104:13:104:13 | access to local variable x | Conditions.cs:104:13:104:28 | Before String x = ... | +| Conditions.cs:104:13:104:28 | After String x = ... | Conditions.cs:104:13:104:28 | String x = ... | +| Conditions.cs:104:13:104:28 | Before String x = ... | Conditions.cs:104:9:104:29 | ... ...; | +| Conditions.cs:104:13:104:28 | String x = ... | Conditions.cs:104:17:104:28 | After call to method ToString | +| Conditions.cs:104:17:104:17 | access to parameter b | Conditions.cs:104:17:104:28 | Before call to method ToString | +| Conditions.cs:104:17:104:28 | After call to method ToString | Conditions.cs:104:17:104:28 | call to method ToString | +| Conditions.cs:104:17:104:28 | Before call to method ToString | Conditions.cs:104:13:104:13 | access to local variable x | | Conditions.cs:104:17:104:28 | call to method ToString | Conditions.cs:104:17:104:17 | access to parameter b | -| Conditions.cs:105:9:106:20 | if (...) ... | Conditions.cs:104:13:104:28 | String x = ... | +| Conditions.cs:105:9:106:20 | After if (...) ... | Conditions.cs:105:13:105:13 | After access to parameter b [false] | +| Conditions.cs:105:9:106:20 | After if (...) ... | Conditions.cs:106:13:106:20 | After ...; | +| Conditions.cs:105:9:106:20 | if (...) ... | Conditions.cs:104:9:104:29 | After ... ...; | | Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:105:9:106:20 | if (...) ... | -| Conditions.cs:106:13:106:13 | access to local variable x | Conditions.cs:106:13:106:20 | ...; | +| Conditions.cs:106:13:106:13 | access to local variable x | Conditions.cs:106:13:106:19 | Before ... += ... | | Conditions.cs:106:13:106:19 | ... += ... | Conditions.cs:106:18:106:19 | "" | +| Conditions.cs:106:13:106:19 | After ... += ... | Conditions.cs:106:13:106:19 | ... += ... | +| Conditions.cs:106:13:106:19 | Before ... += ... | Conditions.cs:106:13:106:20 | ...; | +| Conditions.cs:106:13:106:20 | ...; | Conditions.cs:105:13:105:13 | After access to parameter b [true] | +| Conditions.cs:106:13:106:20 | After ...; | Conditions.cs:106:13:106:19 | After ... += ... | | Conditions.cs:106:18:106:19 | "" | Conditions.cs:106:13:106:13 | access to local variable x | -| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:105:13:105:13 | access to parameter b | -| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:106:13:106:19 | ... += ... | -| Conditions.cs:107:13:107:13 | access to local variable x | Conditions.cs:107:9:109:24 | if (...) ... | +| Conditions.cs:107:9:109:24 | After if (...) ... | Conditions.cs:107:13:107:24 | After ... > ... [false] | +| Conditions.cs:107:9:109:24 | After if (...) ... | Conditions.cs:108:13:109:24 | After if (...) ... | +| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:105:9:106:20 | After if (...) ... | +| Conditions.cs:107:13:107:13 | access to local variable x | Conditions.cs:107:13:107:20 | Before access to property Length | +| Conditions.cs:107:13:107:20 | After access to property Length | Conditions.cs:107:13:107:20 | access to property Length | +| Conditions.cs:107:13:107:20 | Before access to property Length | Conditions.cs:107:13:107:24 | Before ... > ... | | Conditions.cs:107:13:107:20 | access to property Length | Conditions.cs:107:13:107:13 | access to local variable x | | Conditions.cs:107:13:107:24 | ... > ... | Conditions.cs:107:24:107:24 | 0 | -| Conditions.cs:107:24:107:24 | 0 | Conditions.cs:107:13:107:20 | access to property Length | -| Conditions.cs:108:18:108:18 | access to parameter b | Conditions.cs:108:13:109:24 | if (...) ... | -| Conditions.cs:109:17:109:17 | access to local variable x | Conditions.cs:109:17:109:24 | ...; | +| Conditions.cs:107:13:107:24 | Before ... > ... | Conditions.cs:107:9:109:24 | if (...) ... | +| Conditions.cs:107:24:107:24 | 0 | Conditions.cs:107:13:107:20 | After access to property Length | +| Conditions.cs:108:13:109:24 | After if (...) ... | Conditions.cs:108:17:108:18 | After !... [false] | +| Conditions.cs:108:13:109:24 | After if (...) ... | Conditions.cs:109:17:109:24 | After ...; | +| Conditions.cs:108:13:109:24 | if (...) ... | Conditions.cs:107:13:107:24 | After ... > ... [true] | +| Conditions.cs:108:17:108:18 | !... | Conditions.cs:108:13:109:24 | if (...) ... | +| Conditions.cs:108:17:108:18 | After !... [false] | Conditions.cs:108:18:108:18 | After access to parameter b [true] | +| Conditions.cs:108:17:108:18 | After !... [true] | Conditions.cs:108:18:108:18 | After access to parameter b [false] | +| Conditions.cs:108:18:108:18 | access to parameter b | Conditions.cs:108:17:108:18 | !... | +| Conditions.cs:109:17:109:17 | access to local variable x | Conditions.cs:109:17:109:23 | Before ... += ... | | Conditions.cs:109:17:109:23 | ... += ... | Conditions.cs:109:22:109:23 | "" | -| Conditions.cs:109:17:109:24 | ...; | Conditions.cs:108:17:108:18 | [true] !... | +| Conditions.cs:109:17:109:23 | After ... += ... | Conditions.cs:109:17:109:23 | ... += ... | +| Conditions.cs:109:17:109:23 | Before ... += ... | Conditions.cs:109:17:109:24 | ...; | +| Conditions.cs:109:17:109:24 | ...; | Conditions.cs:108:17:108:18 | After !... [true] | +| Conditions.cs:109:17:109:24 | After ...; | Conditions.cs:109:17:109:23 | After ... += ... | | Conditions.cs:109:22:109:23 | "" | Conditions.cs:109:17:109:17 | access to local variable x | +| Conditions.cs:110:9:110:17 | Before return ...; | Conditions.cs:107:9:109:24 | After if (...) ... | | Conditions.cs:110:9:110:17 | return ...; | Conditions.cs:110:16:110:16 | access to local variable x | -| Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:107:13:107:24 | ... > ... | -| Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:108:17:108:18 | [false] !... | -| Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:109:17:109:23 | ... += ... | -| Conditions.cs:113:10:113:11 | exit M9 | Conditions.cs:113:10:113:11 | exit M9 (normal) | -| Conditions.cs:113:10:113:11 | exit M9 (normal) | Conditions.cs:116:25:116:39 | ... < ... | -| Conditions.cs:114:5:124:5 | {...} | Conditions.cs:113:10:113:11 | enter M9 | +| Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:110:9:110:17 | Before return ...; | +| Conditions.cs:113:10:113:11 | Exit | Conditions.cs:113:10:113:11 | Normal Exit | +| Conditions.cs:113:10:113:11 | Normal Exit | Conditions.cs:114:5:124:5 | After {...} | +| Conditions.cs:113:22:113:25 | args | Conditions.cs:113:10:113:11 | Entry | +| Conditions.cs:114:5:124:5 | After {...} | Conditions.cs:116:9:123:9 | After for (...;...;...) ... | +| Conditions.cs:114:5:124:5 | {...} | Conditions.cs:113:22:113:25 | args | | Conditions.cs:115:9:115:24 | ... ...; | Conditions.cs:114:5:124:5 | {...} | +| Conditions.cs:115:9:115:24 | After ... ...; | Conditions.cs:115:16:115:23 | After String s = ... | +| Conditions.cs:115:16:115:16 | access to local variable s | Conditions.cs:115:16:115:23 | Before String s = ... | +| Conditions.cs:115:16:115:23 | After String s = ... | Conditions.cs:115:16:115:23 | String s = ... | +| Conditions.cs:115:16:115:23 | Before String s = ... | Conditions.cs:115:9:115:24 | ... ...; | | Conditions.cs:115:16:115:23 | String s = ... | Conditions.cs:115:20:115:23 | null | -| Conditions.cs:115:20:115:23 | null | Conditions.cs:115:9:115:24 | ... ...; | -| Conditions.cs:116:9:123:9 | for (...;...;...) ... | Conditions.cs:115:16:115:23 | String s = ... | +| Conditions.cs:115:20:115:23 | null | Conditions.cs:115:16:115:16 | access to local variable s | +| Conditions.cs:116:9:123:9 | After for (...;...;...) ... | Conditions.cs:116:25:116:39 | After ... < ... [false] | +| Conditions.cs:116:9:123:9 | [LoopHeader] for (...;...;...) ... | Conditions.cs:117:9:123:9 | After {...} | +| Conditions.cs:116:9:123:9 | for (...;...;...) ... | Conditions.cs:115:9:115:24 | After ... ...; | +| Conditions.cs:116:18:116:18 | access to local variable i | Conditions.cs:116:18:116:22 | Before Int32 i = ... | +| Conditions.cs:116:18:116:22 | After Int32 i = ... | Conditions.cs:116:18:116:22 | Int32 i = ... | +| Conditions.cs:116:18:116:22 | Before Int32 i = ... | Conditions.cs:116:9:123:9 | for (...;...;...) ... | | Conditions.cs:116:18:116:22 | Int32 i = ... | Conditions.cs:116:22:116:22 | 0 | -| Conditions.cs:116:22:116:22 | 0 | Conditions.cs:116:9:123:9 | for (...;...;...) ... | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:116:18:116:22 | Int32 i = ... | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:116:42:116:44 | ...++ | -| Conditions.cs:116:25:116:39 | ... < ... | Conditions.cs:116:29:116:39 | access to property Length | -| Conditions.cs:116:29:116:32 | access to parameter args | Conditions.cs:116:25:116:25 | access to local variable i | +| Conditions.cs:116:22:116:22 | 0 | Conditions.cs:116:18:116:18 | access to local variable i | +| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:116:25:116:39 | Before ... < ... | +| Conditions.cs:116:25:116:39 | ... < ... | Conditions.cs:116:29:116:39 | After access to property Length | +| Conditions.cs:116:25:116:39 | After ... < ... [false] | Conditions.cs:116:25:116:39 | ... < ... | +| Conditions.cs:116:25:116:39 | Before ... < ... | Conditions.cs:116:18:116:22 | After Int32 i = ... | +| Conditions.cs:116:25:116:39 | Before ... < ... | Conditions.cs:116:42:116:44 | After ...++ | +| Conditions.cs:116:29:116:32 | access to parameter args | Conditions.cs:116:29:116:39 | Before access to property Length | +| Conditions.cs:116:29:116:39 | After access to property Length | Conditions.cs:116:29:116:39 | access to property Length | +| Conditions.cs:116:29:116:39 | Before access to property Length | Conditions.cs:116:25:116:25 | access to local variable i | | Conditions.cs:116:29:116:39 | access to property Length | Conditions.cs:116:29:116:32 | access to parameter args | -| Conditions.cs:116:42:116:42 | access to local variable i | Conditions.cs:121:17:121:20 | access to local variable last | -| Conditions.cs:116:42:116:42 | access to local variable i | Conditions.cs:122:17:122:24 | ... = ... | +| Conditions.cs:116:42:116:42 | access to local variable i | Conditions.cs:116:42:116:44 | Before ...++ | | Conditions.cs:116:42:116:44 | ...++ | Conditions.cs:116:42:116:42 | access to local variable i | +| Conditions.cs:116:42:116:44 | After ...++ | Conditions.cs:116:42:116:44 | ...++ | +| Conditions.cs:116:42:116:44 | Before ...++ | Conditions.cs:116:9:123:9 | [LoopHeader] for (...;...;...) ... | +| Conditions.cs:117:9:123:9 | After {...} | Conditions.cs:121:13:122:25 | After if (...) ... | +| Conditions.cs:117:9:123:9 | {...} | Conditions.cs:116:25:116:39 | After ... < ... [true] | | Conditions.cs:118:13:118:44 | ... ...; | Conditions.cs:117:9:123:9 | {...} | -| Conditions.cs:118:17:118:43 | Boolean last = ... | Conditions.cs:118:24:118:43 | ... == ... | -| Conditions.cs:118:24:118:24 | access to local variable i | Conditions.cs:118:13:118:44 | ... ...; | -| Conditions.cs:118:24:118:43 | ... == ... | Conditions.cs:118:29:118:43 | ... - ... | -| Conditions.cs:118:29:118:32 | access to parameter args | Conditions.cs:118:24:118:24 | access to local variable i | +| Conditions.cs:118:13:118:44 | After ... ...; | Conditions.cs:118:17:118:43 | After Boolean last = ... | +| Conditions.cs:118:17:118:20 | access to local variable last | Conditions.cs:118:17:118:43 | Before Boolean last = ... | +| Conditions.cs:118:17:118:43 | After Boolean last = ... | Conditions.cs:118:17:118:43 | Boolean last = ... | +| Conditions.cs:118:17:118:43 | Before Boolean last = ... | Conditions.cs:118:13:118:44 | ... ...; | +| Conditions.cs:118:17:118:43 | Boolean last = ... | Conditions.cs:118:24:118:43 | After ... == ... | +| Conditions.cs:118:24:118:24 | access to local variable i | Conditions.cs:118:24:118:43 | Before ... == ... | +| Conditions.cs:118:24:118:43 | ... == ... | Conditions.cs:118:29:118:43 | After ... - ... | +| Conditions.cs:118:24:118:43 | After ... == ... | Conditions.cs:118:24:118:43 | ... == ... | +| Conditions.cs:118:24:118:43 | Before ... == ... | Conditions.cs:118:17:118:20 | access to local variable last | +| Conditions.cs:118:29:118:32 | access to parameter args | Conditions.cs:118:29:118:39 | Before access to property Length | +| Conditions.cs:118:29:118:39 | After access to property Length | Conditions.cs:118:29:118:39 | access to property Length | +| Conditions.cs:118:29:118:39 | Before access to property Length | Conditions.cs:118:29:118:43 | Before ... - ... | | Conditions.cs:118:29:118:39 | access to property Length | Conditions.cs:118:29:118:32 | access to parameter args | | Conditions.cs:118:29:118:43 | ... - ... | Conditions.cs:118:43:118:43 | 1 | -| Conditions.cs:118:43:118:43 | 1 | Conditions.cs:118:29:118:39 | access to property Length | -| Conditions.cs:119:13:120:23 | if (...) ... | Conditions.cs:118:17:118:43 | Boolean last = ... | -| Conditions.cs:119:18:119:21 | access to local variable last | Conditions.cs:119:13:120:23 | if (...) ... | +| Conditions.cs:118:29:118:43 | After ... - ... | Conditions.cs:118:29:118:43 | ... - ... | +| Conditions.cs:118:29:118:43 | Before ... - ... | Conditions.cs:118:24:118:24 | access to local variable i | +| Conditions.cs:118:43:118:43 | 1 | Conditions.cs:118:29:118:39 | After access to property Length | +| Conditions.cs:119:13:120:23 | After if (...) ... | Conditions.cs:119:17:119:21 | After !... [false] | +| Conditions.cs:119:13:120:23 | After if (...) ... | Conditions.cs:120:17:120:23 | After ...; | +| Conditions.cs:119:13:120:23 | if (...) ... | Conditions.cs:118:13:118:44 | After ... ...; | +| Conditions.cs:119:17:119:21 | !... | Conditions.cs:119:13:120:23 | if (...) ... | +| Conditions.cs:119:17:119:21 | After !... [false] | Conditions.cs:119:18:119:21 | After access to local variable last [true] | +| Conditions.cs:119:17:119:21 | After !... [true] | Conditions.cs:119:18:119:21 | After access to local variable last [false] | +| Conditions.cs:119:18:119:21 | access to local variable last | Conditions.cs:119:17:119:21 | !... | +| Conditions.cs:120:17:120:17 | access to local variable s | Conditions.cs:120:17:120:22 | Before ... = ... | | Conditions.cs:120:17:120:22 | ... = ... | Conditions.cs:120:21:120:22 | "" | -| Conditions.cs:120:17:120:23 | ...; | Conditions.cs:119:17:119:21 | [true] !... | -| Conditions.cs:120:21:120:22 | "" | Conditions.cs:120:17:120:23 | ...; | -| Conditions.cs:121:13:122:25 | if (...) ... | Conditions.cs:119:17:119:21 | [false] !... | -| Conditions.cs:121:13:122:25 | if (...) ... | Conditions.cs:120:17:120:22 | ... = ... | +| Conditions.cs:120:17:120:22 | After ... = ... | Conditions.cs:120:17:120:22 | ... = ... | +| Conditions.cs:120:17:120:22 | Before ... = ... | Conditions.cs:120:17:120:23 | ...; | +| Conditions.cs:120:17:120:23 | ...; | Conditions.cs:119:17:119:21 | After !... [true] | +| Conditions.cs:120:17:120:23 | After ...; | Conditions.cs:120:17:120:22 | After ... = ... | +| Conditions.cs:120:21:120:22 | "" | Conditions.cs:120:17:120:17 | access to local variable s | +| Conditions.cs:121:13:122:25 | After if (...) ... | Conditions.cs:121:17:121:20 | After access to local variable last [false] | +| Conditions.cs:121:13:122:25 | After if (...) ... | Conditions.cs:122:17:122:25 | After ...; | +| Conditions.cs:121:13:122:25 | if (...) ... | Conditions.cs:119:13:120:23 | After if (...) ... | | Conditions.cs:121:17:121:20 | access to local variable last | Conditions.cs:121:13:122:25 | if (...) ... | +| Conditions.cs:122:17:122:17 | access to local variable s | Conditions.cs:122:17:122:24 | Before ... = ... | | Conditions.cs:122:17:122:24 | ... = ... | Conditions.cs:122:21:122:24 | null | -| Conditions.cs:122:21:122:24 | null | Conditions.cs:122:17:122:25 | ...; | -| Conditions.cs:130:5:141:5 | {...} | Conditions.cs:129:10:129:12 | enter M10 | +| Conditions.cs:122:17:122:24 | After ... = ... | Conditions.cs:122:17:122:24 | ... = ... | +| Conditions.cs:122:17:122:24 | Before ... = ... | Conditions.cs:122:17:122:25 | ...; | +| Conditions.cs:122:17:122:25 | ...; | Conditions.cs:121:17:121:20 | After access to local variable last [true] | +| Conditions.cs:122:17:122:25 | After ...; | Conditions.cs:122:17:122:24 | After ... = ... | +| Conditions.cs:122:21:122:24 | null | Conditions.cs:122:17:122:17 | access to local variable s | +| Conditions.cs:130:5:141:5 | {...} | Conditions.cs:129:10:129:12 | Entry | | Conditions.cs:131:9:140:9 | while (...) ... | Conditions.cs:130:5:141:5 | {...} | +| Conditions.cs:131:16:131:19 | After true [true] | Conditions.cs:131:16:131:19 | true | +| Conditions.cs:131:16:131:19 | true | Conditions.cs:131:9:140:9 | [LoopHeader] while (...) ... | +| Conditions.cs:132:9:140:9 | After {...} | Conditions.cs:133:13:139:13 | After if (...) ... | +| Conditions.cs:132:9:140:9 | {...} | Conditions.cs:131:16:131:19 | After true [true] | | Conditions.cs:133:13:139:13 | if (...) ... | Conditions.cs:132:9:140:9 | {...} | +| Conditions.cs:133:17:133:22 | Before access to field Field1 | Conditions.cs:133:13:139:13 | if (...) ... | | Conditions.cs:133:17:133:22 | access to field Field1 | Conditions.cs:133:17:133:22 | this access | -| Conditions.cs:133:17:133:22 | this access | Conditions.cs:133:13:139:13 | if (...) ... | +| Conditions.cs:133:17:133:22 | this access | Conditions.cs:133:17:133:22 | Before access to field Field1 | +| Conditions.cs:134:13:139:13 | After {...} | Conditions.cs:135:17:138:17 | After if (...) ... | +| Conditions.cs:134:13:139:13 | {...} | Conditions.cs:133:17:133:22 | After access to field Field1 [true] | | Conditions.cs:135:17:138:17 | if (...) ... | Conditions.cs:134:13:139:13 | {...} | +| Conditions.cs:135:21:135:26 | Before access to field Field2 | Conditions.cs:135:17:138:17 | if (...) ... | | Conditions.cs:135:21:135:26 | access to field Field2 | Conditions.cs:135:21:135:26 | this access | -| Conditions.cs:135:21:135:26 | this access | Conditions.cs:135:17:138:17 | if (...) ... | +| Conditions.cs:135:21:135:26 | this access | Conditions.cs:135:21:135:26 | Before access to field Field2 | +| Conditions.cs:136:17:138:17 | After {...} | Conditions.cs:137:21:137:38 | After ...; | +| Conditions.cs:136:17:138:17 | {...} | Conditions.cs:135:21:135:26 | After access to field Field2 [true] | +| Conditions.cs:137:21:137:26 | After access to field Field1 | Conditions.cs:137:21:137:26 | access to field Field1 | +| Conditions.cs:137:21:137:26 | Before access to field Field1 | Conditions.cs:137:21:137:37 | Before call to method ToString | | Conditions.cs:137:21:137:26 | access to field Field1 | Conditions.cs:137:21:137:26 | this access | -| Conditions.cs:137:21:137:26 | this access | Conditions.cs:137:21:137:38 | ...; | -| Conditions.cs:137:21:137:37 | call to method ToString | Conditions.cs:137:21:137:26 | access to field Field1 | +| Conditions.cs:137:21:137:26 | this access | Conditions.cs:137:21:137:26 | Before access to field Field1 | +| Conditions.cs:137:21:137:37 | After call to method ToString | Conditions.cs:137:21:137:37 | call to method ToString | +| Conditions.cs:137:21:137:37 | Before call to method ToString | Conditions.cs:137:21:137:38 | ...; | +| Conditions.cs:137:21:137:37 | call to method ToString | Conditions.cs:137:21:137:26 | After access to field Field1 | | Conditions.cs:137:21:137:38 | ...; | Conditions.cs:136:17:138:17 | {...} | -| Conditions.cs:143:10:143:12 | exit M11 | Conditions.cs:143:10:143:12 | exit M11 (normal) | -| Conditions.cs:143:10:143:12 | exit M11 (normal) | Conditions.cs:147:13:147:48 | call to method WriteLine | -| Conditions.cs:143:10:143:12 | exit M11 (normal) | Conditions.cs:149:13:149:48 | call to method WriteLine | -| Conditions.cs:144:5:150:5 | {...} | Conditions.cs:143:10:143:12 | enter M11 | +| Conditions.cs:137:21:137:38 | After ...; | Conditions.cs:137:21:137:37 | After call to method ToString | +| Conditions.cs:143:10:143:12 | Exit | Conditions.cs:143:10:143:12 | Normal Exit | +| Conditions.cs:143:10:143:12 | Normal Exit | Conditions.cs:144:5:150:5 | After {...} | +| Conditions.cs:143:19:143:19 | b | Conditions.cs:143:10:143:12 | Entry | +| Conditions.cs:144:5:150:5 | After {...} | Conditions.cs:146:9:149:49 | After if (...) ... | +| Conditions.cs:144:5:150:5 | {...} | Conditions.cs:143:19:143:19 | b | | Conditions.cs:145:9:145:30 | ... ...; | Conditions.cs:144:5:150:5 | {...} | -| Conditions.cs:145:13:145:29 | String s = ... | Conditions.cs:145:17:145:29 | ... ? ... : ... | -| Conditions.cs:145:17:145:17 | access to parameter b | Conditions.cs:145:9:145:30 | ... ...; | -| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:145:21:145:23 | "a" | -| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:145:27:145:29 | "b" | -| Conditions.cs:146:9:149:49 | if (...) ... | Conditions.cs:145:13:145:29 | String s = ... | +| Conditions.cs:145:9:145:30 | After ... ...; | Conditions.cs:145:13:145:29 | After String s = ... | +| Conditions.cs:145:13:145:13 | access to local variable s | Conditions.cs:145:13:145:29 | Before String s = ... | +| Conditions.cs:145:13:145:29 | After String s = ... | Conditions.cs:145:13:145:29 | String s = ... | +| Conditions.cs:145:13:145:29 | Before String s = ... | Conditions.cs:145:9:145:30 | ... ...; | +| Conditions.cs:145:13:145:29 | String s = ... | Conditions.cs:145:17:145:29 | After ... ? ... : ... | +| Conditions.cs:145:17:145:17 | access to parameter b | Conditions.cs:145:17:145:29 | ... ? ... : ... | +| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:145:13:145:13 | access to local variable s | +| Conditions.cs:145:17:145:29 | After ... ? ... : ... | Conditions.cs:145:21:145:23 | "a" | +| Conditions.cs:145:17:145:29 | After ... ? ... : ... | Conditions.cs:145:27:145:29 | "b" | +| Conditions.cs:145:21:145:23 | "a" | Conditions.cs:145:17:145:17 | After access to parameter b [true] | +| Conditions.cs:145:27:145:29 | "b" | Conditions.cs:145:17:145:17 | After access to parameter b [false] | +| Conditions.cs:146:9:149:49 | After if (...) ... | Conditions.cs:147:13:147:49 | After ...; | +| Conditions.cs:146:9:149:49 | After if (...) ... | Conditions.cs:149:13:149:49 | After ...; | +| Conditions.cs:146:9:149:49 | if (...) ... | Conditions.cs:145:9:145:30 | After ... ...; | | Conditions.cs:146:13:146:13 | access to parameter b | Conditions.cs:146:9:149:49 | if (...) ... | -| Conditions.cs:147:13:147:48 | call to method WriteLine | Conditions.cs:147:38:147:47 | $"..." | -| Conditions.cs:147:38:147:47 | $"..." | Conditions.cs:147:44:147:46 | {...} | -| Conditions.cs:147:40:147:43 | "a = " | Conditions.cs:147:13:147:49 | ...; | +| Conditions.cs:147:13:147:48 | After call to method WriteLine | Conditions.cs:147:13:147:48 | call to method WriteLine | +| Conditions.cs:147:13:147:48 | Before call to method WriteLine | Conditions.cs:147:13:147:49 | ...; | +| Conditions.cs:147:13:147:48 | call to method WriteLine | Conditions.cs:147:38:147:47 | After $"..." | +| Conditions.cs:147:13:147:49 | ...; | Conditions.cs:146:13:146:13 | After access to parameter b [true] | +| Conditions.cs:147:13:147:49 | After ...; | Conditions.cs:147:13:147:48 | After call to method WriteLine | +| Conditions.cs:147:38:147:47 | $"..." | Conditions.cs:147:44:147:46 | After {...} | +| Conditions.cs:147:38:147:47 | After $"..." | Conditions.cs:147:38:147:47 | $"..." | +| Conditions.cs:147:38:147:47 | Before $"..." | Conditions.cs:147:13:147:48 | Before call to method WriteLine | +| Conditions.cs:147:40:147:43 | "a = " | Conditions.cs:147:38:147:47 | Before $"..." | +| Conditions.cs:147:44:147:46 | After {...} | Conditions.cs:147:44:147:46 | {...} | +| Conditions.cs:147:44:147:46 | Before {...} | Conditions.cs:147:40:147:43 | "a = " | | Conditions.cs:147:44:147:46 | {...} | Conditions.cs:147:45:147:45 | access to local variable s | -| Conditions.cs:147:45:147:45 | access to local variable s | Conditions.cs:147:40:147:43 | "a = " | -| Conditions.cs:149:13:149:48 | call to method WriteLine | Conditions.cs:149:38:149:47 | $"..." | -| Conditions.cs:149:38:149:47 | $"..." | Conditions.cs:149:44:149:46 | {...} | -| Conditions.cs:149:40:149:43 | "b = " | Conditions.cs:149:13:149:49 | ...; | +| Conditions.cs:147:45:147:45 | access to local variable s | Conditions.cs:147:44:147:46 | Before {...} | +| Conditions.cs:149:13:149:48 | After call to method WriteLine | Conditions.cs:149:13:149:48 | call to method WriteLine | +| Conditions.cs:149:13:149:48 | Before call to method WriteLine | Conditions.cs:149:13:149:49 | ...; | +| Conditions.cs:149:13:149:48 | call to method WriteLine | Conditions.cs:149:38:149:47 | After $"..." | +| Conditions.cs:149:13:149:49 | ...; | Conditions.cs:146:13:146:13 | After access to parameter b [false] | +| Conditions.cs:149:13:149:49 | After ...; | Conditions.cs:149:13:149:48 | After call to method WriteLine | +| Conditions.cs:149:38:149:47 | $"..." | Conditions.cs:149:44:149:46 | After {...} | +| Conditions.cs:149:38:149:47 | After $"..." | Conditions.cs:149:38:149:47 | $"..." | +| Conditions.cs:149:38:149:47 | Before $"..." | Conditions.cs:149:13:149:48 | Before call to method WriteLine | +| Conditions.cs:149:40:149:43 | "b = " | Conditions.cs:149:38:149:47 | Before $"..." | +| Conditions.cs:149:44:149:46 | After {...} | Conditions.cs:149:44:149:46 | {...} | +| Conditions.cs:149:44:149:46 | Before {...} | Conditions.cs:149:40:149:43 | "b = " | | Conditions.cs:149:44:149:46 | {...} | Conditions.cs:149:45:149:45 | access to local variable s | -| Conditions.cs:149:45:149:45 | access to local variable s | Conditions.cs:149:40:149:43 | "b = " | -| ExitMethods.cs:6:7:6:17 | call to constructor Object | ExitMethods.cs:6:7:6:17 | call to method | +| Conditions.cs:149:45:149:45 | access to local variable s | Conditions.cs:149:44:149:46 | Before {...} | +| DefaultParam.cs:1:7:1:18 | After call to constructor Object | DefaultParam.cs:1:7:1:18 | call to constructor Object | +| DefaultParam.cs:1:7:1:18 | After call to method | DefaultParam.cs:1:7:1:18 | call to method | +| DefaultParam.cs:1:7:1:18 | Before call to constructor Object | DefaultParam.cs:1:7:1:18 | After call to method | +| DefaultParam.cs:1:7:1:18 | Before call to method | DefaultParam.cs:1:7:1:18 | Entry | +| DefaultParam.cs:1:7:1:18 | Exit | DefaultParam.cs:1:7:1:18 | Normal Exit | +| DefaultParam.cs:1:7:1:18 | Normal Exit | DefaultParam.cs:1:7:1:18 | {...} | +| DefaultParam.cs:1:7:1:18 | call to constructor Object | DefaultParam.cs:1:7:1:18 | Before call to constructor Object | +| DefaultParam.cs:1:7:1:18 | call to method | DefaultParam.cs:1:7:1:18 | this access | +| DefaultParam.cs:1:7:1:18 | this access | DefaultParam.cs:1:7:1:18 | Before call to method | +| DefaultParam.cs:1:7:1:18 | {...} | DefaultParam.cs:1:7:1:18 | After call to constructor Object | +| DefaultParam.cs:3:12:3:13 | Exit | DefaultParam.cs:3:12:3:13 | Normal Exit | +| DefaultParam.cs:3:12:3:13 | Normal Exit | DefaultParam.cs:5:9:5:25 | return ...; | +| DefaultParam.cs:3:20:3:20 | b | DefaultParam.cs:3:12:3:13 | Entry | +| DefaultParam.cs:3:30:3:30 | s | DefaultParam.cs:3:20:3:20 | b | +| DefaultParam.cs:3:34:3:35 | "" | DefaultParam.cs:3:30:3:30 | After s [no-match] | +| DefaultParam.cs:3:42:3:42 | i | DefaultParam.cs:3:30:3:30 | After s [match] | +| DefaultParam.cs:3:42:3:42 | i | DefaultParam.cs:3:34:3:35 | "" | +| DefaultParam.cs:3:46:3:46 | 0 | DefaultParam.cs:3:42:3:42 | After i [no-match] | +| DefaultParam.cs:4:5:6:5 | {...} | DefaultParam.cs:3:42:3:42 | After i [match] | +| DefaultParam.cs:4:5:6:5 | {...} | DefaultParam.cs:3:46:3:46 | 0 | +| DefaultParam.cs:5:9:5:25 | Before return ...; | DefaultParam.cs:4:5:6:5 | {...} | +| DefaultParam.cs:5:9:5:25 | return ...; | DefaultParam.cs:5:16:5:24 | After ... + ... | +| DefaultParam.cs:5:16:5:16 | (...) ... | DefaultParam.cs:5:16:5:16 | access to parameter b | +| DefaultParam.cs:5:16:5:16 | After (...) ... | DefaultParam.cs:5:16:5:16 | (...) ... | +| DefaultParam.cs:5:16:5:16 | Before (...) ... | DefaultParam.cs:5:16:5:20 | Before ... + ... | +| DefaultParam.cs:5:16:5:16 | access to parameter b | DefaultParam.cs:5:16:5:16 | Before (...) ... | +| DefaultParam.cs:5:16:5:20 | ... + ... | DefaultParam.cs:5:20:5:20 | access to parameter s | +| DefaultParam.cs:5:16:5:20 | After ... + ... | DefaultParam.cs:5:16:5:20 | ... + ... | +| DefaultParam.cs:5:16:5:20 | Before ... + ... | DefaultParam.cs:5:16:5:24 | Before ... + ... | +| DefaultParam.cs:5:16:5:24 | ... + ... | DefaultParam.cs:5:24:5:24 | After (...) ... | +| DefaultParam.cs:5:16:5:24 | After ... + ... | DefaultParam.cs:5:16:5:24 | ... + ... | +| DefaultParam.cs:5:16:5:24 | Before ... + ... | DefaultParam.cs:5:9:5:25 | Before return ...; | +| DefaultParam.cs:5:20:5:20 | access to parameter s | DefaultParam.cs:5:16:5:16 | After (...) ... | +| DefaultParam.cs:5:24:5:24 | (...) ... | DefaultParam.cs:5:24:5:24 | access to parameter i | +| DefaultParam.cs:5:24:5:24 | After (...) ... | DefaultParam.cs:5:24:5:24 | (...) ... | +| DefaultParam.cs:5:24:5:24 | Before (...) ... | DefaultParam.cs:5:16:5:20 | After ... + ... | +| DefaultParam.cs:5:24:5:24 | access to parameter i | DefaultParam.cs:5:24:5:24 | Before (...) ... | +| ExitMethods.cs:6:7:6:17 | After call to constructor Object | ExitMethods.cs:6:7:6:17 | call to constructor Object | +| ExitMethods.cs:6:7:6:17 | After call to method | ExitMethods.cs:6:7:6:17 | call to method | +| ExitMethods.cs:6:7:6:17 | Before call to constructor Object | ExitMethods.cs:6:7:6:17 | After call to method | +| ExitMethods.cs:6:7:6:17 | Before call to method | ExitMethods.cs:6:7:6:17 | Entry | +| ExitMethods.cs:6:7:6:17 | Exit | ExitMethods.cs:6:7:6:17 | Normal Exit | +| ExitMethods.cs:6:7:6:17 | Normal Exit | ExitMethods.cs:6:7:6:17 | {...} | +| ExitMethods.cs:6:7:6:17 | call to constructor Object | ExitMethods.cs:6:7:6:17 | Before call to constructor Object | | ExitMethods.cs:6:7:6:17 | call to method | ExitMethods.cs:6:7:6:17 | this access | -| ExitMethods.cs:6:7:6:17 | exit ExitMethods | ExitMethods.cs:6:7:6:17 | exit ExitMethods (normal) | -| ExitMethods.cs:6:7:6:17 | exit ExitMethods (normal) | ExitMethods.cs:6:7:6:17 | {...} | -| ExitMethods.cs:6:7:6:17 | this access | ExitMethods.cs:6:7:6:17 | enter ExitMethods | -| ExitMethods.cs:6:7:6:17 | {...} | ExitMethods.cs:6:7:6:17 | call to constructor Object | -| ExitMethods.cs:8:10:8:11 | exit M1 | ExitMethods.cs:8:10:8:11 | exit M1 (normal) | -| ExitMethods.cs:8:10:8:11 | exit M1 (normal) | ExitMethods.cs:11:9:11:15 | return ...; | -| ExitMethods.cs:9:5:12:5 | {...} | ExitMethods.cs:8:10:8:11 | enter M1 | +| ExitMethods.cs:6:7:6:17 | this access | ExitMethods.cs:6:7:6:17 | Before call to method | +| ExitMethods.cs:6:7:6:17 | {...} | ExitMethods.cs:6:7:6:17 | After call to constructor Object | +| ExitMethods.cs:8:10:8:11 | Exit | ExitMethods.cs:8:10:8:11 | Normal Exit | +| ExitMethods.cs:8:10:8:11 | Normal Exit | ExitMethods.cs:11:9:11:15 | return ...; | +| ExitMethods.cs:9:5:12:5 | {...} | ExitMethods.cs:8:10:8:11 | Entry | +| ExitMethods.cs:10:9:10:24 | After call to method ErrorMaybe | ExitMethods.cs:10:9:10:24 | call to method ErrorMaybe | +| ExitMethods.cs:10:9:10:24 | Before call to method ErrorMaybe | ExitMethods.cs:10:9:10:25 | ...; | | ExitMethods.cs:10:9:10:24 | call to method ErrorMaybe | ExitMethods.cs:10:20:10:23 | true | | ExitMethods.cs:10:9:10:25 | ...; | ExitMethods.cs:9:5:12:5 | {...} | -| ExitMethods.cs:10:20:10:23 | true | ExitMethods.cs:10:9:10:25 | ...; | -| ExitMethods.cs:11:9:11:15 | return ...; | ExitMethods.cs:10:9:10:24 | call to method ErrorMaybe | -| ExitMethods.cs:14:10:14:11 | exit M2 | ExitMethods.cs:14:10:14:11 | exit M2 (normal) | -| ExitMethods.cs:14:10:14:11 | exit M2 (normal) | ExitMethods.cs:17:9:17:15 | return ...; | -| ExitMethods.cs:15:5:18:5 | {...} | ExitMethods.cs:14:10:14:11 | enter M2 | +| ExitMethods.cs:10:9:10:25 | After ...; | ExitMethods.cs:10:9:10:24 | After call to method ErrorMaybe | +| ExitMethods.cs:10:20:10:23 | true | ExitMethods.cs:10:9:10:24 | Before call to method ErrorMaybe | +| ExitMethods.cs:11:9:11:15 | Before return ...; | ExitMethods.cs:10:9:10:25 | After ...; | +| ExitMethods.cs:11:9:11:15 | return ...; | ExitMethods.cs:11:9:11:15 | Before return ...; | +| ExitMethods.cs:14:10:14:11 | Exit | ExitMethods.cs:14:10:14:11 | Normal Exit | +| ExitMethods.cs:14:10:14:11 | Normal Exit | ExitMethods.cs:17:9:17:15 | return ...; | +| ExitMethods.cs:15:5:18:5 | {...} | ExitMethods.cs:14:10:14:11 | Entry | +| ExitMethods.cs:16:9:16:25 | After call to method ErrorMaybe | ExitMethods.cs:16:9:16:25 | call to method ErrorMaybe | +| ExitMethods.cs:16:9:16:25 | Before call to method ErrorMaybe | ExitMethods.cs:16:9:16:26 | ...; | | ExitMethods.cs:16:9:16:25 | call to method ErrorMaybe | ExitMethods.cs:16:20:16:24 | false | | ExitMethods.cs:16:9:16:26 | ...; | ExitMethods.cs:15:5:18:5 | {...} | -| ExitMethods.cs:16:20:16:24 | false | ExitMethods.cs:16:9:16:26 | ...; | -| ExitMethods.cs:17:9:17:15 | return ...; | ExitMethods.cs:16:9:16:25 | call to method ErrorMaybe | -| ExitMethods.cs:20:10:20:11 | exit M3 | ExitMethods.cs:20:10:20:11 | exit M3 (abnormal) | -| ExitMethods.cs:20:10:20:11 | exit M3 (abnormal) | ExitMethods.cs:22:9:22:25 | call to method ErrorAlways | -| ExitMethods.cs:21:5:24:5 | {...} | ExitMethods.cs:20:10:20:11 | enter M3 | +| ExitMethods.cs:16:9:16:26 | After ...; | ExitMethods.cs:16:9:16:25 | After call to method ErrorMaybe | +| ExitMethods.cs:16:20:16:24 | false | ExitMethods.cs:16:9:16:25 | Before call to method ErrorMaybe | +| ExitMethods.cs:17:9:17:15 | Before return ...; | ExitMethods.cs:16:9:16:26 | After ...; | +| ExitMethods.cs:17:9:17:15 | return ...; | ExitMethods.cs:17:9:17:15 | Before return ...; | +| ExitMethods.cs:20:10:20:11 | Exceptional Exit | ExitMethods.cs:22:9:22:25 | call to method ErrorAlways | +| ExitMethods.cs:20:10:20:11 | Exit | ExitMethods.cs:20:10:20:11 | Exceptional Exit | +| ExitMethods.cs:21:5:24:5 | {...} | ExitMethods.cs:20:10:20:11 | Entry | +| ExitMethods.cs:22:9:22:25 | Before call to method ErrorAlways | ExitMethods.cs:22:9:22:26 | ...; | | ExitMethods.cs:22:9:22:25 | call to method ErrorAlways | ExitMethods.cs:22:21:22:24 | true | | ExitMethods.cs:22:9:22:26 | ...; | ExitMethods.cs:21:5:24:5 | {...} | -| ExitMethods.cs:22:21:22:24 | true | ExitMethods.cs:22:9:22:26 | ...; | -| ExitMethods.cs:26:10:26:11 | exit M4 | ExitMethods.cs:26:10:26:11 | exit M4 (abnormal) | -| ExitMethods.cs:26:10:26:11 | exit M4 (abnormal) | ExitMethods.cs:28:9:28:14 | call to method Exit | -| ExitMethods.cs:27:5:30:5 | {...} | ExitMethods.cs:26:10:26:11 | enter M4 | +| ExitMethods.cs:22:21:22:24 | true | ExitMethods.cs:22:9:22:25 | Before call to method ErrorAlways | +| ExitMethods.cs:26:10:26:11 | Exceptional Exit | ExitMethods.cs:28:9:28:14 | call to method Exit | +| ExitMethods.cs:26:10:26:11 | Exit | ExitMethods.cs:26:10:26:11 | Exceptional Exit | +| ExitMethods.cs:27:5:30:5 | {...} | ExitMethods.cs:26:10:26:11 | Entry | +| ExitMethods.cs:28:9:28:14 | Before call to method Exit | ExitMethods.cs:28:9:28:15 | ...; | | ExitMethods.cs:28:9:28:14 | call to method Exit | ExitMethods.cs:28:9:28:14 | this access | -| ExitMethods.cs:28:9:28:14 | this access | ExitMethods.cs:28:9:28:15 | ...; | +| ExitMethods.cs:28:9:28:14 | this access | ExitMethods.cs:28:9:28:14 | Before call to method Exit | | ExitMethods.cs:28:9:28:15 | ...; | ExitMethods.cs:27:5:30:5 | {...} | -| ExitMethods.cs:32:10:32:11 | exit M5 | ExitMethods.cs:32:10:32:11 | exit M5 (abnormal) | -| ExitMethods.cs:32:10:32:11 | exit M5 (abnormal) | ExitMethods.cs:34:9:34:25 | call to method ApplicationExit | -| ExitMethods.cs:33:5:36:5 | {...} | ExitMethods.cs:32:10:32:11 | enter M5 | +| ExitMethods.cs:32:10:32:11 | Exceptional Exit | ExitMethods.cs:34:9:34:25 | call to method ApplicationExit | +| ExitMethods.cs:32:10:32:11 | Exit | ExitMethods.cs:32:10:32:11 | Exceptional Exit | +| ExitMethods.cs:33:5:36:5 | {...} | ExitMethods.cs:32:10:32:11 | Entry | +| ExitMethods.cs:34:9:34:25 | Before call to method ApplicationExit | ExitMethods.cs:34:9:34:26 | ...; | | ExitMethods.cs:34:9:34:25 | call to method ApplicationExit | ExitMethods.cs:34:9:34:25 | this access | -| ExitMethods.cs:34:9:34:25 | this access | ExitMethods.cs:34:9:34:26 | ...; | +| ExitMethods.cs:34:9:34:25 | this access | ExitMethods.cs:34:9:34:25 | Before call to method ApplicationExit | | ExitMethods.cs:34:9:34:26 | ...; | ExitMethods.cs:33:5:36:5 | {...} | -| ExitMethods.cs:38:10:38:11 | exit M6 | ExitMethods.cs:38:10:38:11 | exit M6 (normal) | -| ExitMethods.cs:38:10:38:11 | exit M6 (normal) | ExitMethods.cs:46:13:46:19 | return ...; | -| ExitMethods.cs:38:10:38:11 | exit M6 (normal) | ExitMethods.cs:50:13:50:19 | return ...; | -| ExitMethods.cs:39:5:52:5 | {...} | ExitMethods.cs:38:10:38:11 | enter M6 | +| ExitMethods.cs:38:10:38:11 | Exceptional Exit | ExitMethods.cs:48:9:51:9 | After catch (...) {...} [no-match] | +| ExitMethods.cs:38:10:38:11 | Normal Exit | ExitMethods.cs:46:13:46:19 | return ...; | +| ExitMethods.cs:38:10:38:11 | Normal Exit | ExitMethods.cs:50:13:50:19 | return ...; | +| ExitMethods.cs:39:5:52:5 | {...} | ExitMethods.cs:38:10:38:11 | Entry | | ExitMethods.cs:40:9:51:9 | try {...} ... | ExitMethods.cs:39:5:52:5 | {...} | | ExitMethods.cs:41:9:43:9 | {...} | ExitMethods.cs:40:9:51:9 | try {...} ... | +| ExitMethods.cs:42:13:42:30 | Before call to method ErrorAlways | ExitMethods.cs:42:13:42:31 | ...; | | ExitMethods.cs:42:13:42:30 | call to method ErrorAlways | ExitMethods.cs:42:25:42:29 | false | | ExitMethods.cs:42:13:42:31 | ...; | ExitMethods.cs:41:9:43:9 | {...} | -| ExitMethods.cs:42:25:42:29 | false | ExitMethods.cs:42:13:42:31 | ...; | +| ExitMethods.cs:42:25:42:29 | false | ExitMethods.cs:42:13:42:30 | Before call to method ErrorAlways | | ExitMethods.cs:44:9:47:9 | catch (...) {...} | ExitMethods.cs:42:13:42:30 | call to method ErrorAlways | -| ExitMethods.cs:46:13:46:19 | return ...; | ExitMethods.cs:45:9:47:9 | {...} | -| ExitMethods.cs:49:9:51:9 | {...} | ExitMethods.cs:48:9:51:9 | catch (...) {...} | -| ExitMethods.cs:50:13:50:19 | return ...; | ExitMethods.cs:49:9:51:9 | {...} | -| ExitMethods.cs:54:10:54:11 | exit M7 | ExitMethods.cs:54:10:54:11 | exit M7 (abnormal) | -| ExitMethods.cs:54:10:54:11 | exit M7 (abnormal) | ExitMethods.cs:56:9:56:22 | call to method ErrorAlways2 | -| ExitMethods.cs:55:5:58:5 | {...} | ExitMethods.cs:54:10:54:11 | enter M7 | -| ExitMethods.cs:56:9:56:22 | call to method ErrorAlways2 | ExitMethods.cs:56:9:56:23 | ...; | +| ExitMethods.cs:45:9:47:9 | {...} | ExitMethods.cs:44:9:47:9 | After catch (...) {...} [match] | +| ExitMethods.cs:46:13:46:19 | Before return ...; | ExitMethods.cs:45:9:47:9 | {...} | +| ExitMethods.cs:46:13:46:19 | return ...; | ExitMethods.cs:46:13:46:19 | Before return ...; | +| ExitMethods.cs:48:9:51:9 | After catch (...) {...} [match] | ExitMethods.cs:48:9:51:9 | catch (...) {...} | +| ExitMethods.cs:48:9:51:9 | catch (...) {...} | ExitMethods.cs:44:9:47:9 | After catch (...) {...} [no-match] | +| ExitMethods.cs:49:9:51:9 | {...} | ExitMethods.cs:48:9:51:9 | After catch (...) {...} [match] | +| ExitMethods.cs:50:13:50:19 | Before return ...; | ExitMethods.cs:49:9:51:9 | {...} | +| ExitMethods.cs:50:13:50:19 | return ...; | ExitMethods.cs:50:13:50:19 | Before return ...; | +| ExitMethods.cs:54:10:54:11 | Exceptional Exit | ExitMethods.cs:56:9:56:22 | call to method ErrorAlways2 | +| ExitMethods.cs:54:10:54:11 | Exit | ExitMethods.cs:54:10:54:11 | Exceptional Exit | +| ExitMethods.cs:55:5:58:5 | {...} | ExitMethods.cs:54:10:54:11 | Entry | +| ExitMethods.cs:56:9:56:22 | Before call to method ErrorAlways2 | ExitMethods.cs:56:9:56:23 | ...; | +| ExitMethods.cs:56:9:56:22 | call to method ErrorAlways2 | ExitMethods.cs:56:9:56:22 | Before call to method ErrorAlways2 | | ExitMethods.cs:56:9:56:23 | ...; | ExitMethods.cs:55:5:58:5 | {...} | -| ExitMethods.cs:60:10:60:11 | exit M8 | ExitMethods.cs:60:10:60:11 | exit M8 (abnormal) | -| ExitMethods.cs:60:10:60:11 | exit M8 (abnormal) | ExitMethods.cs:62:9:62:22 | call to method ErrorAlways3 | -| ExitMethods.cs:61:5:64:5 | {...} | ExitMethods.cs:60:10:60:11 | enter M8 | -| ExitMethods.cs:62:9:62:22 | call to method ErrorAlways3 | ExitMethods.cs:62:9:62:23 | ...; | +| ExitMethods.cs:60:10:60:11 | Exceptional Exit | ExitMethods.cs:62:9:62:22 | call to method ErrorAlways3 | +| ExitMethods.cs:60:10:60:11 | Exit | ExitMethods.cs:60:10:60:11 | Exceptional Exit | +| ExitMethods.cs:61:5:64:5 | {...} | ExitMethods.cs:60:10:60:11 | Entry | +| ExitMethods.cs:62:9:62:22 | Before call to method ErrorAlways3 | ExitMethods.cs:62:9:62:23 | ...; | +| ExitMethods.cs:62:9:62:22 | call to method ErrorAlways3 | ExitMethods.cs:62:9:62:22 | Before call to method ErrorAlways3 | | ExitMethods.cs:62:9:62:23 | ...; | ExitMethods.cs:61:5:64:5 | {...} | -| ExitMethods.cs:66:17:66:26 | exit ErrorMaybe (abnormal) | ExitMethods.cs:69:13:69:34 | throw ...; | -| ExitMethods.cs:66:17:66:26 | exit ErrorMaybe (normal) | ExitMethods.cs:68:13:68:13 | access to parameter b | -| ExitMethods.cs:67:5:70:5 | {...} | ExitMethods.cs:66:17:66:26 | enter ErrorMaybe | +| ExitMethods.cs:66:17:66:26 | Exceptional Exit | ExitMethods.cs:69:13:69:34 | throw ...; | +| ExitMethods.cs:66:17:66:26 | Normal Exit | ExitMethods.cs:67:5:70:5 | After {...} | +| ExitMethods.cs:66:33:66:33 | b | ExitMethods.cs:66:17:66:26 | Entry | +| ExitMethods.cs:67:5:70:5 | After {...} | ExitMethods.cs:68:9:69:34 | After if (...) ... | +| ExitMethods.cs:67:5:70:5 | {...} | ExitMethods.cs:66:33:66:33 | b | +| ExitMethods.cs:68:9:69:34 | After if (...) ... | ExitMethods.cs:68:13:68:13 | After access to parameter b [false] | | ExitMethods.cs:68:9:69:34 | if (...) ... | ExitMethods.cs:67:5:70:5 | {...} | +| ExitMethods.cs:68:13:68:13 | After access to parameter b [false] | ExitMethods.cs:68:13:68:13 | access to parameter b | | ExitMethods.cs:68:13:68:13 | access to parameter b | ExitMethods.cs:68:9:69:34 | if (...) ... | -| ExitMethods.cs:69:13:69:34 | throw ...; | ExitMethods.cs:69:19:69:33 | object creation of type Exception | -| ExitMethods.cs:72:17:72:27 | exit ErrorAlways | ExitMethods.cs:72:17:72:27 | exit ErrorAlways (abnormal) | -| ExitMethods.cs:73:5:78:5 | {...} | ExitMethods.cs:72:17:72:27 | enter ErrorAlways | +| ExitMethods.cs:69:13:69:34 | Before throw ...; | ExitMethods.cs:68:13:68:13 | After access to parameter b [true] | +| ExitMethods.cs:69:13:69:34 | throw ...; | ExitMethods.cs:69:19:69:33 | After object creation of type Exception | +| ExitMethods.cs:69:19:69:33 | After object creation of type Exception | ExitMethods.cs:69:19:69:33 | object creation of type Exception | +| ExitMethods.cs:69:19:69:33 | Before object creation of type Exception | ExitMethods.cs:69:13:69:34 | Before throw ...; | +| ExitMethods.cs:69:19:69:33 | object creation of type Exception | ExitMethods.cs:69:19:69:33 | Before object creation of type Exception | +| ExitMethods.cs:72:17:72:27 | Exit | ExitMethods.cs:72:17:72:27 | Exceptional Exit | +| ExitMethods.cs:72:34:72:34 | b | ExitMethods.cs:72:17:72:27 | Entry | +| ExitMethods.cs:73:5:78:5 | {...} | ExitMethods.cs:72:34:72:34 | b | | ExitMethods.cs:74:9:77:45 | if (...) ... | ExitMethods.cs:73:5:78:5 | {...} | | ExitMethods.cs:74:13:74:13 | access to parameter b | ExitMethods.cs:74:9:77:45 | if (...) ... | -| ExitMethods.cs:75:13:75:34 | throw ...; | ExitMethods.cs:75:19:75:33 | object creation of type Exception | -| ExitMethods.cs:77:13:77:45 | throw ...; | ExitMethods.cs:77:19:77:44 | object creation of type ArgumentException | +| ExitMethods.cs:75:13:75:34 | Before throw ...; | ExitMethods.cs:74:13:74:13 | After access to parameter b [true] | +| ExitMethods.cs:75:13:75:34 | throw ...; | ExitMethods.cs:75:19:75:33 | After object creation of type Exception | +| ExitMethods.cs:75:19:75:33 | After object creation of type Exception | ExitMethods.cs:75:19:75:33 | object creation of type Exception | +| ExitMethods.cs:75:19:75:33 | Before object creation of type Exception | ExitMethods.cs:75:13:75:34 | Before throw ...; | +| ExitMethods.cs:75:19:75:33 | object creation of type Exception | ExitMethods.cs:75:19:75:33 | Before object creation of type Exception | +| ExitMethods.cs:77:13:77:45 | Before throw ...; | ExitMethods.cs:74:13:74:13 | After access to parameter b [false] | +| ExitMethods.cs:77:13:77:45 | throw ...; | ExitMethods.cs:77:19:77:44 | After object creation of type ArgumentException | +| ExitMethods.cs:77:19:77:44 | After object creation of type ArgumentException | ExitMethods.cs:77:19:77:44 | object creation of type ArgumentException | +| ExitMethods.cs:77:19:77:44 | Before object creation of type ArgumentException | ExitMethods.cs:77:13:77:45 | Before throw ...; | | ExitMethods.cs:77:19:77:44 | object creation of type ArgumentException | ExitMethods.cs:77:41:77:43 | "b" | -| ExitMethods.cs:80:17:80:28 | exit ErrorAlways2 | ExitMethods.cs:80:17:80:28 | exit ErrorAlways2 (abnormal) | -| ExitMethods.cs:80:17:80:28 | exit ErrorAlways2 (abnormal) | ExitMethods.cs:82:9:82:30 | throw ...; | -| ExitMethods.cs:81:5:83:5 | {...} | ExitMethods.cs:80:17:80:28 | enter ErrorAlways2 | -| ExitMethods.cs:82:9:82:30 | throw ...; | ExitMethods.cs:82:15:82:29 | object creation of type Exception | -| ExitMethods.cs:82:15:82:29 | object creation of type Exception | ExitMethods.cs:81:5:83:5 | {...} | -| ExitMethods.cs:85:17:85:28 | exit ErrorAlways3 | ExitMethods.cs:85:17:85:28 | exit ErrorAlways3 (abnormal) | -| ExitMethods.cs:85:17:85:28 | exit ErrorAlways3 (abnormal) | ExitMethods.cs:85:35:85:55 | throw ... | -| ExitMethods.cs:85:35:85:55 | throw ... | ExitMethods.cs:85:41:85:55 | object creation of type Exception | -| ExitMethods.cs:85:41:85:55 | object creation of type Exception | ExitMethods.cs:85:17:85:28 | enter ErrorAlways3 | -| ExitMethods.cs:87:10:87:13 | exit Exit | ExitMethods.cs:87:10:87:13 | exit Exit (abnormal) | -| ExitMethods.cs:87:10:87:13 | exit Exit (abnormal) | ExitMethods.cs:89:9:89:27 | call to method Exit | -| ExitMethods.cs:88:5:90:5 | {...} | ExitMethods.cs:87:10:87:13 | enter Exit | +| ExitMethods.cs:77:41:77:43 | "b" | ExitMethods.cs:77:19:77:44 | Before object creation of type ArgumentException | +| ExitMethods.cs:80:17:80:28 | Exceptional Exit | ExitMethods.cs:82:9:82:30 | throw ...; | +| ExitMethods.cs:80:17:80:28 | Exit | ExitMethods.cs:80:17:80:28 | Exceptional Exit | +| ExitMethods.cs:81:5:83:5 | {...} | ExitMethods.cs:80:17:80:28 | Entry | +| ExitMethods.cs:82:9:82:30 | Before throw ...; | ExitMethods.cs:81:5:83:5 | {...} | +| ExitMethods.cs:82:9:82:30 | throw ...; | ExitMethods.cs:82:15:82:29 | After object creation of type Exception | +| ExitMethods.cs:82:15:82:29 | After object creation of type Exception | ExitMethods.cs:82:15:82:29 | object creation of type Exception | +| ExitMethods.cs:82:15:82:29 | Before object creation of type Exception | ExitMethods.cs:82:9:82:30 | Before throw ...; | +| ExitMethods.cs:82:15:82:29 | object creation of type Exception | ExitMethods.cs:82:15:82:29 | Before object creation of type Exception | +| ExitMethods.cs:85:17:85:28 | Exceptional Exit | ExitMethods.cs:85:35:85:55 | throw ... | +| ExitMethods.cs:85:17:85:28 | Exit | ExitMethods.cs:85:17:85:28 | Exceptional Exit | +| ExitMethods.cs:85:35:85:55 | Before throw ... | ExitMethods.cs:85:17:85:28 | Entry | +| ExitMethods.cs:85:35:85:55 | throw ... | ExitMethods.cs:85:41:85:55 | After object creation of type Exception | +| ExitMethods.cs:85:41:85:55 | After object creation of type Exception | ExitMethods.cs:85:41:85:55 | object creation of type Exception | +| ExitMethods.cs:85:41:85:55 | Before object creation of type Exception | ExitMethods.cs:85:35:85:55 | Before throw ... | +| ExitMethods.cs:85:41:85:55 | object creation of type Exception | ExitMethods.cs:85:41:85:55 | Before object creation of type Exception | +| ExitMethods.cs:87:10:87:13 | Exceptional Exit | ExitMethods.cs:89:9:89:27 | call to method Exit | +| ExitMethods.cs:87:10:87:13 | Exit | ExitMethods.cs:87:10:87:13 | Exceptional Exit | +| ExitMethods.cs:88:5:90:5 | {...} | ExitMethods.cs:87:10:87:13 | Entry | +| ExitMethods.cs:89:9:89:27 | Before call to method Exit | ExitMethods.cs:89:9:89:28 | ...; | | ExitMethods.cs:89:9:89:27 | call to method Exit | ExitMethods.cs:89:26:89:26 | 0 | | ExitMethods.cs:89:9:89:28 | ...; | ExitMethods.cs:88:5:90:5 | {...} | -| ExitMethods.cs:89:26:89:26 | 0 | ExitMethods.cs:89:9:89:28 | ...; | -| ExitMethods.cs:92:10:92:18 | exit ExitInTry | ExitMethods.cs:92:10:92:18 | exit ExitInTry (abnormal) | -| ExitMethods.cs:92:10:92:18 | exit ExitInTry (abnormal) | ExitMethods.cs:96:13:96:18 | call to method Exit | -| ExitMethods.cs:93:5:103:5 | {...} | ExitMethods.cs:92:10:92:18 | enter ExitInTry | +| ExitMethods.cs:89:26:89:26 | 0 | ExitMethods.cs:89:9:89:27 | Before call to method Exit | +| ExitMethods.cs:92:10:92:18 | Normal Exit | ExitMethods.cs:93:5:103:5 | After {...} | +| ExitMethods.cs:93:5:103:5 | After {...} | ExitMethods.cs:94:9:102:9 | After try {...} ... | +| ExitMethods.cs:93:5:103:5 | {...} | ExitMethods.cs:92:10:92:18 | Entry | +| ExitMethods.cs:94:9:102:9 | After try {...} ... | ExitMethods.cs:99:9:102:9 | After {...} | | ExitMethods.cs:94:9:102:9 | try {...} ... | ExitMethods.cs:93:5:103:5 | {...} | | ExitMethods.cs:95:9:97:9 | {...} | ExitMethods.cs:94:9:102:9 | try {...} ... | +| ExitMethods.cs:96:13:96:18 | Before call to method Exit | ExitMethods.cs:96:13:96:19 | ...; | | ExitMethods.cs:96:13:96:18 | call to method Exit | ExitMethods.cs:96:13:96:18 | this access | -| ExitMethods.cs:96:13:96:18 | this access | ExitMethods.cs:96:13:96:19 | ...; | +| ExitMethods.cs:96:13:96:18 | this access | ExitMethods.cs:96:13:96:18 | Before call to method Exit | | ExitMethods.cs:96:13:96:19 | ...; | ExitMethods.cs:95:9:97:9 | {...} | -| ExitMethods.cs:105:10:105:24 | exit ApplicationExit | ExitMethods.cs:105:10:105:24 | exit ApplicationExit (abnormal) | -| ExitMethods.cs:105:10:105:24 | exit ApplicationExit (abnormal) | ExitMethods.cs:107:9:107:47 | call to method Exit | -| ExitMethods.cs:106:5:108:5 | {...} | ExitMethods.cs:105:10:105:24 | enter ApplicationExit | -| ExitMethods.cs:107:9:107:47 | call to method Exit | ExitMethods.cs:107:9:107:48 | ...; | +| ExitMethods.cs:99:9:102:9 | After {...} | ExitMethods.cs:101:13:101:41 | After ...; | +| ExitMethods.cs:99:9:102:9 | {...} | ExitMethods.cs:96:13:96:18 | call to method Exit | +| ExitMethods.cs:101:13:101:40 | After call to method WriteLine | ExitMethods.cs:101:13:101:40 | call to method WriteLine | +| ExitMethods.cs:101:13:101:40 | Before call to method WriteLine | ExitMethods.cs:101:13:101:41 | ...; | +| ExitMethods.cs:101:13:101:40 | call to method WriteLine | ExitMethods.cs:101:38:101:39 | "" | +| ExitMethods.cs:101:13:101:41 | ...; | ExitMethods.cs:99:9:102:9 | {...} | +| ExitMethods.cs:101:13:101:41 | After ...; | ExitMethods.cs:101:13:101:40 | After call to method WriteLine | +| ExitMethods.cs:101:38:101:39 | "" | ExitMethods.cs:101:13:101:40 | Before call to method WriteLine | +| ExitMethods.cs:105:10:105:24 | Exceptional Exit | ExitMethods.cs:107:9:107:47 | call to method Exit | +| ExitMethods.cs:105:10:105:24 | Exit | ExitMethods.cs:105:10:105:24 | Exceptional Exit | +| ExitMethods.cs:106:5:108:5 | {...} | ExitMethods.cs:105:10:105:24 | Entry | +| ExitMethods.cs:107:9:107:47 | Before call to method Exit | ExitMethods.cs:107:9:107:48 | ...; | +| ExitMethods.cs:107:9:107:47 | call to method Exit | ExitMethods.cs:107:9:107:47 | Before call to method Exit | | ExitMethods.cs:107:9:107:48 | ...; | ExitMethods.cs:106:5:108:5 | {...} | -| ExitMethods.cs:110:13:110:21 | exit ThrowExpr (abnormal) | ExitMethods.cs:112:41:112:76 | throw ... | -| ExitMethods.cs:110:13:110:21 | exit ThrowExpr (normal) | ExitMethods.cs:112:9:112:77 | return ...; | -| ExitMethods.cs:111:5:113:5 | {...} | ExitMethods.cs:110:13:110:21 | enter ThrowExpr | -| ExitMethods.cs:112:9:112:77 | return ...; | ExitMethods.cs:112:16:112:76 | ... ? ... : ... | -| ExitMethods.cs:112:16:112:20 | access to parameter input | ExitMethods.cs:111:5:113:5 | {...} | -| ExitMethods.cs:112:16:112:25 | ... != ... | ExitMethods.cs:112:25:112:25 | (...) ... | -| ExitMethods.cs:112:16:112:76 | ... ? ... : ... | ExitMethods.cs:112:29:112:37 | ... / ... | -| ExitMethods.cs:112:25:112:25 | 0 | ExitMethods.cs:112:16:112:20 | access to parameter input | +| ExitMethods.cs:110:13:110:21 | Exceptional Exit | ExitMethods.cs:112:41:112:76 | throw ... | +| ExitMethods.cs:110:13:110:21 | Normal Exit | ExitMethods.cs:112:9:112:77 | return ...; | +| ExitMethods.cs:110:31:110:35 | input | ExitMethods.cs:110:13:110:21 | Entry | +| ExitMethods.cs:111:5:113:5 | {...} | ExitMethods.cs:110:31:110:35 | input | +| ExitMethods.cs:112:9:112:77 | Before return ...; | ExitMethods.cs:111:5:113:5 | {...} | +| ExitMethods.cs:112:9:112:77 | return ...; | ExitMethods.cs:112:16:112:76 | After ... ? ... : ... | +| ExitMethods.cs:112:16:112:20 | access to parameter input | ExitMethods.cs:112:16:112:25 | Before ... != ... | +| ExitMethods.cs:112:16:112:25 | ... != ... | ExitMethods.cs:112:25:112:25 | After (...) ... | +| ExitMethods.cs:112:16:112:25 | After ... != ... [true] | ExitMethods.cs:112:16:112:25 | ... != ... | +| ExitMethods.cs:112:16:112:25 | Before ... != ... | ExitMethods.cs:112:16:112:76 | ... ? ... : ... | +| ExitMethods.cs:112:16:112:76 | ... ? ... : ... | ExitMethods.cs:112:9:112:77 | Before return ...; | +| ExitMethods.cs:112:16:112:76 | After ... ? ... : ... | ExitMethods.cs:112:29:112:37 | After ... / ... | +| ExitMethods.cs:112:25:112:25 | 0 | ExitMethods.cs:112:25:112:25 | Before (...) ... | | ExitMethods.cs:112:25:112:25 | (...) ... | ExitMethods.cs:112:25:112:25 | 0 | -| ExitMethods.cs:112:29:112:29 | 1 | ExitMethods.cs:112:16:112:25 | ... != ... | +| ExitMethods.cs:112:25:112:25 | After (...) ... | ExitMethods.cs:112:25:112:25 | (...) ... | +| ExitMethods.cs:112:25:112:25 | Before (...) ... | ExitMethods.cs:112:16:112:20 | access to parameter input | +| ExitMethods.cs:112:29:112:29 | 1 | ExitMethods.cs:112:29:112:29 | Before (...) ... | | ExitMethods.cs:112:29:112:29 | (...) ... | ExitMethods.cs:112:29:112:29 | 1 | +| ExitMethods.cs:112:29:112:29 | After (...) ... | ExitMethods.cs:112:29:112:29 | (...) ... | +| ExitMethods.cs:112:29:112:29 | Before (...) ... | ExitMethods.cs:112:29:112:37 | Before ... / ... | | ExitMethods.cs:112:29:112:37 | ... / ... | ExitMethods.cs:112:33:112:37 | access to parameter input | -| ExitMethods.cs:112:33:112:37 | access to parameter input | ExitMethods.cs:112:29:112:29 | (...) ... | -| ExitMethods.cs:112:41:112:76 | throw ... | ExitMethods.cs:112:47:112:76 | object creation of type ArgumentException | +| ExitMethods.cs:112:29:112:37 | After ... / ... | ExitMethods.cs:112:29:112:37 | ... / ... | +| ExitMethods.cs:112:29:112:37 | Before ... / ... | ExitMethods.cs:112:16:112:25 | After ... != ... [true] | +| ExitMethods.cs:112:33:112:37 | access to parameter input | ExitMethods.cs:112:29:112:29 | After (...) ... | +| ExitMethods.cs:112:41:112:76 | Before throw ... | ExitMethods.cs:112:16:112:25 | After ... != ... [false] | +| ExitMethods.cs:112:41:112:76 | throw ... | ExitMethods.cs:112:47:112:76 | After object creation of type ArgumentException | +| ExitMethods.cs:112:47:112:76 | After object creation of type ArgumentException | ExitMethods.cs:112:47:112:76 | object creation of type ArgumentException | +| ExitMethods.cs:112:47:112:76 | Before object creation of type ArgumentException | ExitMethods.cs:112:41:112:76 | Before throw ... | | ExitMethods.cs:112:47:112:76 | object creation of type ArgumentException | ExitMethods.cs:112:69:112:75 | "input" | -| ExitMethods.cs:115:16:115:34 | exit ExtensionMethodCall | ExitMethods.cs:115:16:115:34 | exit ExtensionMethodCall (normal) | -| ExitMethods.cs:115:16:115:34 | exit ExtensionMethodCall (normal) | ExitMethods.cs:117:9:117:39 | return ...; | -| ExitMethods.cs:116:5:118:5 | {...} | ExitMethods.cs:115:16:115:34 | enter ExtensionMethodCall | -| ExitMethods.cs:117:9:117:39 | return ...; | ExitMethods.cs:117:16:117:38 | ... ? ... : ... | -| ExitMethods.cs:117:16:117:16 | access to parameter s | ExitMethods.cs:116:5:118:5 | {...} | +| ExitMethods.cs:112:69:112:75 | "input" | ExitMethods.cs:112:47:112:76 | Before object creation of type ArgumentException | +| ExitMethods.cs:115:16:115:34 | Exit | ExitMethods.cs:115:16:115:34 | Normal Exit | +| ExitMethods.cs:115:16:115:34 | Normal Exit | ExitMethods.cs:117:9:117:39 | return ...; | +| ExitMethods.cs:115:43:115:43 | s | ExitMethods.cs:115:16:115:34 | Entry | +| ExitMethods.cs:116:5:118:5 | {...} | ExitMethods.cs:115:43:115:43 | s | +| ExitMethods.cs:117:9:117:39 | Before return ...; | ExitMethods.cs:116:5:118:5 | {...} | +| ExitMethods.cs:117:9:117:39 | return ...; | ExitMethods.cs:117:16:117:38 | After ... ? ... : ... | +| ExitMethods.cs:117:16:117:16 | access to parameter s | ExitMethods.cs:117:16:117:30 | Before call to method Contains | +| ExitMethods.cs:117:16:117:30 | Before call to method Contains | ExitMethods.cs:117:16:117:38 | ... ? ... : ... | | ExitMethods.cs:117:16:117:30 | call to method Contains | ExitMethods.cs:117:27:117:29 | - | -| ExitMethods.cs:117:16:117:38 | ... ? ... : ... | ExitMethods.cs:117:34:117:34 | 0 | -| ExitMethods.cs:117:16:117:38 | ... ? ... : ... | ExitMethods.cs:117:38:117:38 | 1 | +| ExitMethods.cs:117:16:117:38 | ... ? ... : ... | ExitMethods.cs:117:9:117:39 | Before return ...; | +| ExitMethods.cs:117:16:117:38 | After ... ? ... : ... | ExitMethods.cs:117:34:117:34 | 0 | +| ExitMethods.cs:117:16:117:38 | After ... ? ... : ... | ExitMethods.cs:117:38:117:38 | 1 | | ExitMethods.cs:117:27:117:29 | - | ExitMethods.cs:117:16:117:16 | access to parameter s | -| ExitMethods.cs:120:17:120:32 | exit FailingAssertion | ExitMethods.cs:120:17:120:32 | exit FailingAssertion (abnormal) | -| ExitMethods.cs:120:17:120:32 | exit FailingAssertion (abnormal) | ExitMethods.cs:122:9:122:28 | call to method IsTrue | -| ExitMethods.cs:121:5:124:5 | {...} | ExitMethods.cs:120:17:120:32 | enter FailingAssertion | +| ExitMethods.cs:117:34:117:34 | 0 | ExitMethods.cs:117:16:117:30 | After call to method Contains [true] | +| ExitMethods.cs:117:38:117:38 | 1 | ExitMethods.cs:117:16:117:30 | After call to method Contains [false] | +| ExitMethods.cs:120:17:120:32 | Exceptional Exit | ExitMethods.cs:122:9:122:28 | call to method IsTrue | +| ExitMethods.cs:120:17:120:32 | Exit | ExitMethods.cs:120:17:120:32 | Exceptional Exit | +| ExitMethods.cs:121:5:124:5 | {...} | ExitMethods.cs:120:17:120:32 | Entry | +| ExitMethods.cs:122:9:122:28 | Before call to method IsTrue | ExitMethods.cs:122:9:122:29 | ...; | | ExitMethods.cs:122:9:122:28 | call to method IsTrue | ExitMethods.cs:122:23:122:27 | false | | ExitMethods.cs:122:9:122:29 | ...; | ExitMethods.cs:121:5:124:5 | {...} | -| ExitMethods.cs:122:23:122:27 | false | ExitMethods.cs:122:9:122:29 | ...; | -| ExitMethods.cs:126:17:126:33 | exit FailingAssertion2 | ExitMethods.cs:126:17:126:33 | exit FailingAssertion2 (abnormal) | -| ExitMethods.cs:126:17:126:33 | exit FailingAssertion2 (abnormal) | ExitMethods.cs:128:9:128:26 | call to method FailingAssertion | -| ExitMethods.cs:127:5:130:5 | {...} | ExitMethods.cs:126:17:126:33 | enter FailingAssertion2 | +| ExitMethods.cs:122:23:122:27 | false | ExitMethods.cs:122:9:122:28 | Before call to method IsTrue | +| ExitMethods.cs:126:17:126:33 | Exceptional Exit | ExitMethods.cs:128:9:128:26 | call to method FailingAssertion | +| ExitMethods.cs:126:17:126:33 | Exit | ExitMethods.cs:126:17:126:33 | Exceptional Exit | +| ExitMethods.cs:127:5:130:5 | {...} | ExitMethods.cs:126:17:126:33 | Entry | +| ExitMethods.cs:128:9:128:26 | Before call to method FailingAssertion | ExitMethods.cs:128:9:128:27 | ...; | | ExitMethods.cs:128:9:128:26 | call to method FailingAssertion | ExitMethods.cs:128:9:128:26 | this access | -| ExitMethods.cs:128:9:128:26 | this access | ExitMethods.cs:128:9:128:27 | ...; | +| ExitMethods.cs:128:9:128:26 | this access | ExitMethods.cs:128:9:128:26 | Before call to method FailingAssertion | | ExitMethods.cs:128:9:128:27 | ...; | ExitMethods.cs:127:5:130:5 | {...} | -| ExitMethods.cs:132:10:132:20 | exit AssertFalse (normal) | ExitMethods.cs:132:33:132:49 | call to method IsFalse | +| ExitMethods.cs:132:10:132:20 | Normal Exit | ExitMethods.cs:132:33:132:49 | After call to method IsFalse | +| ExitMethods.cs:132:27:132:27 | b | ExitMethods.cs:132:10:132:20 | Entry | +| ExitMethods.cs:132:33:132:49 | After call to method IsFalse | ExitMethods.cs:132:33:132:49 | call to method IsFalse | +| ExitMethods.cs:132:33:132:49 | Before call to method IsFalse | ExitMethods.cs:132:27:132:27 | b | | ExitMethods.cs:132:33:132:49 | call to method IsFalse | ExitMethods.cs:132:48:132:48 | access to parameter b | -| ExitMethods.cs:132:48:132:48 | access to parameter b | ExitMethods.cs:132:10:132:20 | enter AssertFalse | -| ExitMethods.cs:134:17:134:33 | exit FailingAssertion3 | ExitMethods.cs:134:17:134:33 | exit FailingAssertion3 (abnormal) | -| ExitMethods.cs:134:17:134:33 | exit FailingAssertion3 (abnormal) | ExitMethods.cs:136:9:136:25 | call to method AssertFalse | -| ExitMethods.cs:135:5:138:5 | {...} | ExitMethods.cs:134:17:134:33 | enter FailingAssertion3 | +| ExitMethods.cs:132:48:132:48 | access to parameter b | ExitMethods.cs:132:33:132:49 | Before call to method IsFalse | +| ExitMethods.cs:134:17:134:33 | Exceptional Exit | ExitMethods.cs:136:9:136:25 | call to method AssertFalse | +| ExitMethods.cs:134:17:134:33 | Exit | ExitMethods.cs:134:17:134:33 | Exceptional Exit | +| ExitMethods.cs:135:5:138:5 | {...} | ExitMethods.cs:134:17:134:33 | Entry | +| ExitMethods.cs:136:9:136:25 | Before call to method AssertFalse | ExitMethods.cs:136:9:136:26 | ...; | | ExitMethods.cs:136:9:136:25 | call to method AssertFalse | ExitMethods.cs:136:21:136:24 | true | -| ExitMethods.cs:136:9:136:25 | this access | ExitMethods.cs:136:9:136:26 | ...; | +| ExitMethods.cs:136:9:136:25 | this access | ExitMethods.cs:136:9:136:25 | Before call to method AssertFalse | | ExitMethods.cs:136:9:136:26 | ...; | ExitMethods.cs:135:5:138:5 | {...} | | ExitMethods.cs:136:21:136:24 | true | ExitMethods.cs:136:9:136:25 | this access | -| ExitMethods.cs:140:17:140:42 | exit ExceptionDispatchInfoThrow | ExitMethods.cs:140:17:140:42 | exit ExceptionDispatchInfoThrow (abnormal) | -| ExitMethods.cs:141:5:147:5 | {...} | ExitMethods.cs:140:17:140:42 | enter ExceptionDispatchInfoThrow | +| ExitMethods.cs:140:17:140:42 | Exit | ExitMethods.cs:140:17:140:42 | Exceptional Exit | +| ExitMethods.cs:140:49:140:49 | b | ExitMethods.cs:140:17:140:42 | Entry | +| ExitMethods.cs:140:70:140:70 | e | ExitMethods.cs:140:49:140:49 | b | +| ExitMethods.cs:141:5:147:5 | {...} | ExitMethods.cs:140:70:140:70 | e | | ExitMethods.cs:142:9:145:53 | if (...) ... | ExitMethods.cs:141:5:147:5 | {...} | | ExitMethods.cs:142:13:142:13 | access to parameter b | ExitMethods.cs:142:9:145:53 | if (...) ... | +| ExitMethods.cs:143:13:143:42 | Before call to method Throw | ExitMethods.cs:143:13:143:43 | ...; | | ExitMethods.cs:143:13:143:42 | call to method Throw | ExitMethods.cs:143:41:143:41 | access to parameter e | -| ExitMethods.cs:143:41:143:41 | access to parameter e | ExitMethods.cs:143:13:143:43 | ...; | +| ExitMethods.cs:143:13:143:43 | ...; | ExitMethods.cs:142:13:142:13 | After access to parameter b [true] | +| ExitMethods.cs:143:41:143:41 | access to parameter e | ExitMethods.cs:143:13:143:42 | Before call to method Throw | +| ExitMethods.cs:145:13:145:44 | After call to method Capture | ExitMethods.cs:145:13:145:44 | call to method Capture | +| ExitMethods.cs:145:13:145:44 | Before call to method Capture | ExitMethods.cs:145:13:145:52 | Before call to method Throw | | ExitMethods.cs:145:13:145:44 | call to method Capture | ExitMethods.cs:145:43:145:43 | access to parameter e | -| ExitMethods.cs:145:13:145:52 | call to method Throw | ExitMethods.cs:145:13:145:44 | call to method Capture | -| ExitMethods.cs:145:43:145:43 | access to parameter e | ExitMethods.cs:145:13:145:53 | ...; | -| Extensions.cs:5:23:5:29 | exit ToInt32 | Extensions.cs:5:23:5:29 | exit ToInt32 (normal) | -| Extensions.cs:5:23:5:29 | exit ToInt32 (normal) | Extensions.cs:7:9:7:30 | return ...; | -| Extensions.cs:6:5:8:5 | {...} | Extensions.cs:5:23:5:29 | enter ToInt32 | -| Extensions.cs:7:9:7:30 | return ...; | Extensions.cs:7:16:7:29 | call to method Parse | +| ExitMethods.cs:145:13:145:52 | Before call to method Throw | ExitMethods.cs:145:13:145:53 | ...; | +| ExitMethods.cs:145:13:145:52 | call to method Throw | ExitMethods.cs:145:13:145:44 | After call to method Capture | +| ExitMethods.cs:145:13:145:53 | ...; | ExitMethods.cs:142:13:142:13 | After access to parameter b [false] | +| ExitMethods.cs:145:43:145:43 | access to parameter e | ExitMethods.cs:145:13:145:44 | Before call to method Capture | +| Extensions.cs:5:23:5:29 | Exit | Extensions.cs:5:23:5:29 | Normal Exit | +| Extensions.cs:5:23:5:29 | Normal Exit | Extensions.cs:7:9:7:30 | return ...; | +| Extensions.cs:5:43:5:43 | s | Extensions.cs:5:23:5:29 | Entry | +| Extensions.cs:6:5:8:5 | {...} | Extensions.cs:5:43:5:43 | s | +| Extensions.cs:7:9:7:30 | Before return ...; | Extensions.cs:6:5:8:5 | {...} | +| Extensions.cs:7:9:7:30 | return ...; | Extensions.cs:7:16:7:29 | After call to method Parse | +| Extensions.cs:7:16:7:29 | After call to method Parse | Extensions.cs:7:16:7:29 | call to method Parse | +| Extensions.cs:7:16:7:29 | Before call to method Parse | Extensions.cs:7:9:7:30 | Before return ...; | | Extensions.cs:7:16:7:29 | call to method Parse | Extensions.cs:7:28:7:28 | access to parameter s | -| Extensions.cs:7:28:7:28 | access to parameter s | Extensions.cs:6:5:8:5 | {...} | -| Extensions.cs:10:24:10:29 | exit ToBool | Extensions.cs:10:24:10:29 | exit ToBool (normal) | -| Extensions.cs:10:24:10:29 | exit ToBool (normal) | Extensions.cs:12:9:12:20 | return ...; | -| Extensions.cs:11:5:13:5 | {...} | Extensions.cs:10:24:10:29 | enter ToBool | -| Extensions.cs:12:9:12:20 | return ...; | Extensions.cs:12:16:12:19 | delegate call | -| Extensions.cs:12:16:12:16 | access to parameter f | Extensions.cs:11:5:13:5 | {...} | +| Extensions.cs:7:28:7:28 | access to parameter s | Extensions.cs:7:16:7:29 | Before call to method Parse | +| Extensions.cs:10:24:10:29 | Exit | Extensions.cs:10:24:10:29 | Normal Exit | +| Extensions.cs:10:24:10:29 | Normal Exit | Extensions.cs:12:9:12:20 | return ...; | +| Extensions.cs:10:43:10:43 | s | Extensions.cs:10:24:10:29 | Entry | +| Extensions.cs:10:65:10:65 | f | Extensions.cs:10:43:10:43 | s | +| Extensions.cs:11:5:13:5 | {...} | Extensions.cs:10:65:10:65 | f | +| Extensions.cs:12:9:12:20 | Before return ...; | Extensions.cs:11:5:13:5 | {...} | +| Extensions.cs:12:9:12:20 | return ...; | Extensions.cs:12:16:12:19 | After delegate call | +| Extensions.cs:12:16:12:16 | access to parameter f | Extensions.cs:12:16:12:19 | Before delegate call | +| Extensions.cs:12:16:12:19 | After delegate call | Extensions.cs:12:16:12:19 | delegate call | +| Extensions.cs:12:16:12:19 | Before delegate call | Extensions.cs:12:9:12:20 | Before return ...; | | Extensions.cs:12:16:12:19 | delegate call | Extensions.cs:12:18:12:18 | access to parameter s | | Extensions.cs:12:18:12:18 | access to parameter s | Extensions.cs:12:16:12:16 | access to parameter f | -| Extensions.cs:15:23:15:33 | exit CallToInt32 | Extensions.cs:15:23:15:33 | exit CallToInt32 (normal) | -| Extensions.cs:15:23:15:33 | exit CallToInt32 (normal) | Extensions.cs:15:40:15:51 | call to method ToInt32 | +| Extensions.cs:15:23:15:33 | Exit | Extensions.cs:15:23:15:33 | Normal Exit | +| Extensions.cs:15:23:15:33 | Normal Exit | Extensions.cs:15:40:15:51 | After call to method ToInt32 | +| Extensions.cs:15:40:15:51 | After call to method ToInt32 | Extensions.cs:15:40:15:51 | call to method ToInt32 | +| Extensions.cs:15:40:15:51 | Before call to method ToInt32 | Extensions.cs:15:23:15:33 | Entry | | Extensions.cs:15:40:15:51 | call to method ToInt32 | Extensions.cs:15:48:15:50 | "0" | -| Extensions.cs:15:48:15:50 | "0" | Extensions.cs:15:23:15:33 | enter CallToInt32 | -| Extensions.cs:20:17:20:20 | exit Main | Extensions.cs:20:17:20:20 | exit Main (normal) | -| Extensions.cs:20:17:20:20 | exit Main (normal) | Extensions.cs:25:9:25:33 | call to method ToBool | -| Extensions.cs:21:5:26:5 | {...} | Extensions.cs:20:17:20:20 | enter Main | -| Extensions.cs:22:9:22:9 | access to parameter s | Extensions.cs:22:9:22:20 | ...; | +| Extensions.cs:15:48:15:50 | "0" | Extensions.cs:15:40:15:51 | Before call to method ToInt32 | +| Extensions.cs:20:17:20:20 | Exit | Extensions.cs:20:17:20:20 | Normal Exit | +| Extensions.cs:20:17:20:20 | Normal Exit | Extensions.cs:21:5:26:5 | After {...} | +| Extensions.cs:20:29:20:29 | s | Extensions.cs:20:17:20:20 | Entry | +| Extensions.cs:21:5:26:5 | After {...} | Extensions.cs:25:9:25:34 | After ...; | +| Extensions.cs:21:5:26:5 | {...} | Extensions.cs:20:29:20:29 | s | +| Extensions.cs:22:9:22:9 | access to parameter s | Extensions.cs:22:9:22:19 | Before call to method ToInt32 | +| Extensions.cs:22:9:22:19 | After call to method ToInt32 | Extensions.cs:22:9:22:19 | call to method ToInt32 | +| Extensions.cs:22:9:22:19 | Before call to method ToInt32 | Extensions.cs:22:9:22:20 | ...; | | Extensions.cs:22:9:22:19 | call to method ToInt32 | Extensions.cs:22:9:22:9 | access to parameter s | | Extensions.cs:22:9:22:20 | ...; | Extensions.cs:21:5:26:5 | {...} | +| Extensions.cs:22:9:22:20 | After ...; | Extensions.cs:22:9:22:19 | After call to method ToInt32 | +| Extensions.cs:23:9:23:30 | After call to method ToInt32 | Extensions.cs:23:9:23:30 | call to method ToInt32 | +| Extensions.cs:23:9:23:30 | Before call to method ToInt32 | Extensions.cs:23:9:23:31 | ...; | | Extensions.cs:23:9:23:30 | call to method ToInt32 | Extensions.cs:23:28:23:29 | "" | -| Extensions.cs:23:9:23:31 | ...; | Extensions.cs:22:9:22:19 | call to method ToInt32 | -| Extensions.cs:23:28:23:29 | "" | Extensions.cs:23:9:23:31 | ...; | -| Extensions.cs:24:9:24:45 | call to method ToBool | Extensions.cs:24:35:24:44 | delegate creation of type Func | -| Extensions.cs:24:9:24:46 | ...; | Extensions.cs:23:9:23:30 | call to method ToInt32 | -| Extensions.cs:24:27:24:32 | "true" | Extensions.cs:24:9:24:46 | ...; | -| Extensions.cs:24:35:24:44 | access to method Parse | Extensions.cs:24:27:24:32 | "true" | +| Extensions.cs:23:9:23:31 | ...; | Extensions.cs:22:9:22:20 | After ...; | +| Extensions.cs:23:9:23:31 | After ...; | Extensions.cs:23:9:23:30 | After call to method ToInt32 | +| Extensions.cs:23:28:23:29 | "" | Extensions.cs:23:9:23:30 | Before call to method ToInt32 | +| Extensions.cs:24:9:24:45 | After call to method ToBool | Extensions.cs:24:9:24:45 | call to method ToBool | +| Extensions.cs:24:9:24:45 | Before call to method ToBool | Extensions.cs:24:9:24:46 | ...; | +| Extensions.cs:24:9:24:45 | call to method ToBool | Extensions.cs:24:35:24:44 | After delegate creation of type Func | +| Extensions.cs:24:9:24:46 | ...; | Extensions.cs:23:9:23:31 | After ...; | +| Extensions.cs:24:9:24:46 | After ...; | Extensions.cs:24:9:24:45 | After call to method ToBool | +| Extensions.cs:24:27:24:32 | "true" | Extensions.cs:24:9:24:45 | Before call to method ToBool | +| Extensions.cs:24:35:24:44 | After delegate creation of type Func | Extensions.cs:24:35:24:44 | delegate creation of type Func | +| Extensions.cs:24:35:24:44 | Before delegate creation of type Func | Extensions.cs:24:27:24:32 | "true" | +| Extensions.cs:24:35:24:44 | access to method Parse | Extensions.cs:24:35:24:44 | Before delegate creation of type Func | | Extensions.cs:24:35:24:44 | delegate creation of type Func | Extensions.cs:24:35:24:44 | access to method Parse | -| Extensions.cs:25:9:25:14 | "true" | Extensions.cs:25:9:25:34 | ...; | -| Extensions.cs:25:9:25:33 | call to method ToBool | Extensions.cs:25:23:25:32 | delegate creation of type Func | -| Extensions.cs:25:9:25:34 | ...; | Extensions.cs:24:9:24:45 | call to method ToBool | -| Extensions.cs:25:23:25:32 | access to method Parse | Extensions.cs:25:9:25:14 | "true" | +| Extensions.cs:25:9:25:14 | "true" | Extensions.cs:25:9:25:33 | Before call to method ToBool | +| Extensions.cs:25:9:25:33 | After call to method ToBool | Extensions.cs:25:9:25:33 | call to method ToBool | +| Extensions.cs:25:9:25:33 | Before call to method ToBool | Extensions.cs:25:9:25:34 | ...; | +| Extensions.cs:25:9:25:33 | call to method ToBool | Extensions.cs:25:23:25:32 | After delegate creation of type Func | +| Extensions.cs:25:9:25:34 | ...; | Extensions.cs:24:9:24:46 | After ...; | +| Extensions.cs:25:9:25:34 | After ...; | Extensions.cs:25:9:25:33 | After call to method ToBool | +| Extensions.cs:25:23:25:32 | After delegate creation of type Func | Extensions.cs:25:23:25:32 | delegate creation of type Func | +| Extensions.cs:25:23:25:32 | Before delegate creation of type Func | Extensions.cs:25:9:25:14 | "true" | +| Extensions.cs:25:23:25:32 | access to method Parse | Extensions.cs:25:23:25:32 | Before delegate creation of type Func | | Extensions.cs:25:23:25:32 | delegate creation of type Func | Extensions.cs:25:23:25:32 | access to method Parse | -| Finally.cs:3:14:3:20 | call to constructor Object | Finally.cs:3:14:3:20 | call to method | +| Finally.cs:3:14:3:20 | After call to constructor Object | Finally.cs:3:14:3:20 | call to constructor Object | +| Finally.cs:3:14:3:20 | After call to method | Finally.cs:3:14:3:20 | call to method | +| Finally.cs:3:14:3:20 | Before call to constructor Object | Finally.cs:3:14:3:20 | After call to method | +| Finally.cs:3:14:3:20 | Before call to method | Finally.cs:3:14:3:20 | Entry | +| Finally.cs:3:14:3:20 | Exit | Finally.cs:3:14:3:20 | Normal Exit | +| Finally.cs:3:14:3:20 | Normal Exit | Finally.cs:3:14:3:20 | {...} | +| Finally.cs:3:14:3:20 | call to constructor Object | Finally.cs:3:14:3:20 | Before call to constructor Object | | Finally.cs:3:14:3:20 | call to method | Finally.cs:3:14:3:20 | this access | -| Finally.cs:3:14:3:20 | exit Finally | Finally.cs:3:14:3:20 | exit Finally (normal) | -| Finally.cs:3:14:3:20 | exit Finally (normal) | Finally.cs:3:14:3:20 | {...} | -| Finally.cs:3:14:3:20 | this access | Finally.cs:3:14:3:20 | enter Finally | -| Finally.cs:3:14:3:20 | {...} | Finally.cs:3:14:3:20 | call to constructor Object | -| Finally.cs:7:10:7:11 | exit M1 (normal) | Finally.cs:15:13:15:40 | call to method WriteLine | -| Finally.cs:8:5:17:5 | {...} | Finally.cs:7:10:7:11 | enter M1 | +| Finally.cs:3:14:3:20 | this access | Finally.cs:3:14:3:20 | Before call to method | +| Finally.cs:3:14:3:20 | {...} | Finally.cs:3:14:3:20 | After call to constructor Object | +| Finally.cs:7:10:7:11 | Normal Exit | Finally.cs:8:5:17:5 | After {...} | +| Finally.cs:8:5:17:5 | After {...} | Finally.cs:9:9:16:9 | After try {...} ... | +| Finally.cs:8:5:17:5 | {...} | Finally.cs:7:10:7:11 | Entry | +| Finally.cs:9:9:16:9 | After try {...} ... | Finally.cs:14:9:16:9 | After {...} | | Finally.cs:9:9:16:9 | try {...} ... | Finally.cs:8:5:17:5 | {...} | +| Finally.cs:10:9:12:9 | After {...} | Finally.cs:11:13:11:38 | After ...; | | Finally.cs:10:9:12:9 | {...} | Finally.cs:9:9:16:9 | try {...} ... | +| Finally.cs:11:13:11:37 | Before call to method WriteLine | Finally.cs:11:13:11:38 | ...; | | Finally.cs:11:13:11:37 | call to method WriteLine | Finally.cs:11:31:11:36 | "Try1" | | Finally.cs:11:13:11:38 | ...; | Finally.cs:10:9:12:9 | {...} | -| Finally.cs:11:31:11:36 | "Try1" | Finally.cs:11:13:11:38 | ...; | +| Finally.cs:11:13:11:38 | After ...; | Finally.cs:11:13:11:37 | After call to method WriteLine | +| Finally.cs:11:31:11:36 | "Try1" | Finally.cs:11:13:11:37 | Before call to method WriteLine | +| Finally.cs:14:9:16:9 | After {...} | Finally.cs:15:13:15:41 | After ...; | +| Finally.cs:14:9:16:9 | {...} | Finally.cs:10:9:12:9 | After {...} | | Finally.cs:14:9:16:9 | {...} | Finally.cs:11:13:11:37 | call to method WriteLine | +| Finally.cs:15:13:15:40 | After call to method WriteLine | Finally.cs:15:13:15:40 | call to method WriteLine | +| Finally.cs:15:13:15:40 | Before call to method WriteLine | Finally.cs:15:13:15:41 | ...; | | Finally.cs:15:13:15:40 | call to method WriteLine | Finally.cs:15:31:15:39 | "Finally" | | Finally.cs:15:13:15:41 | ...; | Finally.cs:14:9:16:9 | {...} | -| Finally.cs:15:31:15:39 | "Finally" | Finally.cs:15:13:15:41 | ...; | -| Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:50:13:50:40 | call to method WriteLine | -| Finally.cs:20:5:52:5 | {...} | Finally.cs:19:10:19:11 | enter M2 | +| Finally.cs:15:13:15:41 | After ...; | Finally.cs:15:13:15:40 | After call to method WriteLine | +| Finally.cs:15:31:15:39 | "Finally" | Finally.cs:15:13:15:40 | Before call to method WriteLine | +| Finally.cs:19:10:19:11 | Normal Exit | Finally.cs:20:5:52:5 | After {...} | +| Finally.cs:19:10:19:11 | Normal Exit | Finally.cs:49:9:51:9 | After {...} | +| Finally.cs:20:5:52:5 | After {...} | Finally.cs:21:9:51:9 | After try {...} ... | +| Finally.cs:20:5:52:5 | {...} | Finally.cs:19:10:19:11 | Entry | | Finally.cs:21:9:51:9 | try {...} ... | Finally.cs:20:5:52:5 | {...} | | Finally.cs:22:9:25:9 | {...} | Finally.cs:21:9:51:9 | try {...} ... | +| Finally.cs:23:13:23:37 | Before call to method WriteLine | Finally.cs:23:13:23:38 | ...; | | Finally.cs:23:13:23:37 | call to method WriteLine | Finally.cs:23:31:23:36 | "Try2" | | Finally.cs:23:13:23:38 | ...; | Finally.cs:22:9:25:9 | {...} | -| Finally.cs:23:31:23:36 | "Try2" | Finally.cs:23:13:23:38 | ...; | +| Finally.cs:23:13:23:38 | After ...; | Finally.cs:23:13:23:37 | After call to method WriteLine | +| Finally.cs:23:31:23:36 | "Try2" | Finally.cs:23:13:23:37 | Before call to method WriteLine | +| Finally.cs:24:13:24:19 | Before return ...; | Finally.cs:23:13:23:38 | After ...; | +| Finally.cs:24:13:24:19 | return ...; | Finally.cs:24:13:24:19 | Before return ...; | +| Finally.cs:26:38:26:39 | IOException ex | Finally.cs:26:9:29:9 | After catch (...) {...} [match] | +| Finally.cs:26:48:26:51 | After true [true] | Finally.cs:26:48:26:51 | true | | Finally.cs:26:48:26:51 | true | Finally.cs:26:38:26:39 | IOException ex | -| Finally.cs:27:9:29:9 | {...} | Finally.cs:26:48:26:51 | true | -| Finally.cs:28:13:28:18 | throw ...; | Finally.cs:27:9:29:9 | {...} | +| Finally.cs:27:9:29:9 | {...} | Finally.cs:26:48:26:51 | After true [true] | +| Finally.cs:28:13:28:18 | Before throw ...; | Finally.cs:27:9:29:9 | {...} | +| Finally.cs:28:13:28:18 | throw ...; | Finally.cs:28:13:28:18 | Before throw ...; | +| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:26:9:29:9 | After catch (...) {...} [no-match] | +| Finally.cs:30:41:30:42 | ArgumentException ex | Finally.cs:30:9:40:9 | After catch (...) {...} [match] | | Finally.cs:31:9:40:9 | {...} | Finally.cs:30:41:30:42 | ArgumentException ex | | Finally.cs:32:13:39:13 | try {...} ... | Finally.cs:31:9:40:9 | {...} | | Finally.cs:33:13:35:13 | {...} | Finally.cs:32:13:39:13 | try {...} ... | | Finally.cs:34:17:34:32 | if (...) ... | Finally.cs:33:13:35:13 | {...} | +| Finally.cs:34:21:34:24 | After true [true] | Finally.cs:34:21:34:24 | true | | Finally.cs:34:21:34:24 | true | Finally.cs:34:17:34:32 | if (...) ... | -| Finally.cs:34:27:34:32 | throw ...; | Finally.cs:34:21:34:24 | true | +| Finally.cs:34:27:34:32 | Before throw ...; | Finally.cs:34:21:34:24 | After true [true] | +| Finally.cs:34:27:34:32 | throw ...; | Finally.cs:34:27:34:32 | Before throw ...; | | Finally.cs:37:13:39:13 | {...} | Finally.cs:34:27:34:32 | throw ...; | -| Finally.cs:38:17:38:44 | throw ...; | Finally.cs:38:23:38:43 | object creation of type Exception | +| Finally.cs:38:17:38:44 | Before throw ...; | Finally.cs:37:13:39:13 | {...} | +| Finally.cs:38:17:38:44 | throw ...; | Finally.cs:38:23:38:43 | After object creation of type Exception | +| Finally.cs:38:23:38:43 | After object creation of type Exception | Finally.cs:38:23:38:43 | object creation of type Exception | +| Finally.cs:38:23:38:43 | Before object creation of type Exception | Finally.cs:38:17:38:44 | Before throw ...; | | Finally.cs:38:23:38:43 | object creation of type Exception | Finally.cs:38:37:38:42 | "Boo!" | -| Finally.cs:38:37:38:42 | "Boo!" | Finally.cs:37:13:39:13 | {...} | -| Finally.cs:45:9:47:9 | {...} | Finally.cs:44:9:47:9 | catch {...} | -| Finally.cs:46:13:46:19 | return ...; | Finally.cs:45:9:47:9 | {...} | +| Finally.cs:38:37:38:42 | "Boo!" | Finally.cs:38:23:38:43 | Before object creation of type Exception | +| Finally.cs:41:9:43:9 | catch (...) {...} | Finally.cs:30:9:40:9 | After catch (...) {...} [no-match] | +| Finally.cs:42:9:43:9 | {...} | Finally.cs:41:9:43:9 | After catch (...) {...} [match] | +| Finally.cs:44:9:47:9 | After catch {...} [match] | Finally.cs:44:9:47:9 | catch {...} | +| Finally.cs:44:9:47:9 | catch {...} | Finally.cs:41:9:43:9 | After catch (...) {...} [no-match] | +| Finally.cs:45:9:47:9 | {...} | Finally.cs:44:9:47:9 | After catch {...} [match] | +| Finally.cs:46:13:46:19 | Before return ...; | Finally.cs:45:9:47:9 | {...} | +| Finally.cs:46:13:46:19 | return ...; | Finally.cs:46:13:46:19 | Before return ...; | +| Finally.cs:49:9:51:9 | After {...} | Finally.cs:50:13:50:41 | After ...; | | Finally.cs:49:9:51:9 | {...} | Finally.cs:24:13:24:19 | return ...; | | Finally.cs:49:9:51:9 | {...} | Finally.cs:28:13:28:18 | throw ...; | | Finally.cs:49:9:51:9 | {...} | Finally.cs:38:17:38:44 | throw ...; | | Finally.cs:49:9:51:9 | {...} | Finally.cs:42:9:43:9 | {...} | | Finally.cs:49:9:51:9 | {...} | Finally.cs:46:13:46:19 | return ...; | +| Finally.cs:50:13:50:40 | After call to method WriteLine | Finally.cs:50:13:50:40 | call to method WriteLine | +| Finally.cs:50:13:50:40 | Before call to method WriteLine | Finally.cs:50:13:50:41 | ...; | | Finally.cs:50:13:50:40 | call to method WriteLine | Finally.cs:50:31:50:39 | "Finally" | | Finally.cs:50:13:50:41 | ...; | Finally.cs:49:9:51:9 | {...} | -| Finally.cs:50:31:50:39 | "Finally" | Finally.cs:50:13:50:41 | ...; | -| Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:70:13:70:40 | call to method WriteLine | -| Finally.cs:55:5:72:5 | {...} | Finally.cs:54:10:54:11 | enter M3 | +| Finally.cs:50:13:50:41 | After ...; | Finally.cs:50:13:50:40 | After call to method WriteLine | +| Finally.cs:50:31:50:39 | "Finally" | Finally.cs:50:13:50:40 | Before call to method WriteLine | +| Finally.cs:54:10:54:11 | Normal Exit | Finally.cs:55:5:72:5 | After {...} | +| Finally.cs:54:10:54:11 | Normal Exit | Finally.cs:69:9:71:9 | After {...} | +| Finally.cs:55:5:72:5 | After {...} | Finally.cs:56:9:71:9 | After try {...} ... | +| Finally.cs:55:5:72:5 | {...} | Finally.cs:54:10:54:11 | Entry | | Finally.cs:56:9:71:9 | try {...} ... | Finally.cs:55:5:72:5 | {...} | | Finally.cs:57:9:60:9 | {...} | Finally.cs:56:9:71:9 | try {...} ... | +| Finally.cs:58:13:58:37 | Before call to method WriteLine | Finally.cs:58:13:58:38 | ...; | | Finally.cs:58:13:58:37 | call to method WriteLine | Finally.cs:58:31:58:36 | "Try3" | | Finally.cs:58:13:58:38 | ...; | Finally.cs:57:9:60:9 | {...} | -| Finally.cs:58:31:58:36 | "Try3" | Finally.cs:58:13:58:38 | ...; | +| Finally.cs:58:13:58:38 | After ...; | Finally.cs:58:13:58:37 | After call to method WriteLine | +| Finally.cs:58:31:58:36 | "Try3" | Finally.cs:58:13:58:37 | Before call to method WriteLine | +| Finally.cs:59:13:59:19 | Before return ...; | Finally.cs:58:13:58:38 | After ...; | +| Finally.cs:59:13:59:19 | return ...; | Finally.cs:59:13:59:19 | Before return ...; | +| Finally.cs:61:38:61:39 | IOException ex | Finally.cs:61:9:64:9 | After catch (...) {...} [match] | +| Finally.cs:61:48:61:51 | After true [true] | Finally.cs:61:48:61:51 | true | | Finally.cs:61:48:61:51 | true | Finally.cs:61:38:61:39 | IOException ex | -| Finally.cs:62:9:64:9 | {...} | Finally.cs:61:48:61:51 | true | -| Finally.cs:63:13:63:18 | throw ...; | Finally.cs:62:9:64:9 | {...} | -| Finally.cs:65:35:65:35 | access to local variable e | Finally.cs:65:26:65:26 | Exception e | +| Finally.cs:62:9:64:9 | {...} | Finally.cs:61:48:61:51 | After true [true] | +| Finally.cs:63:13:63:18 | Before throw ...; | Finally.cs:62:9:64:9 | {...} | +| Finally.cs:63:13:63:18 | throw ...; | Finally.cs:63:13:63:18 | Before throw ...; | +| Finally.cs:65:9:67:9 | After catch (...) {...} [no-match] | Finally.cs:65:35:65:51 | After ... != ... [false] | +| Finally.cs:65:9:67:9 | catch (...) {...} | Finally.cs:61:9:64:9 | After catch (...) {...} [no-match] | +| Finally.cs:65:26:65:26 | Exception e | Finally.cs:65:9:67:9 | After catch (...) {...} [match] | +| Finally.cs:65:35:65:35 | access to local variable e | Finally.cs:65:35:65:43 | Before access to property Message | +| Finally.cs:65:35:65:43 | After access to property Message | Finally.cs:65:35:65:43 | access to property Message | +| Finally.cs:65:35:65:43 | Before access to property Message | Finally.cs:65:35:65:51 | Before ... != ... | | Finally.cs:65:35:65:43 | access to property Message | Finally.cs:65:35:65:35 | access to local variable e | | Finally.cs:65:35:65:51 | ... != ... | Finally.cs:65:48:65:51 | null | -| Finally.cs:65:48:65:51 | null | Finally.cs:65:35:65:43 | access to property Message | +| Finally.cs:65:35:65:51 | Before ... != ... | Finally.cs:65:26:65:26 | Exception e | +| Finally.cs:65:48:65:51 | null | Finally.cs:65:35:65:43 | After access to property Message | +| Finally.cs:66:9:67:9 | {...} | Finally.cs:65:35:65:51 | After ... != ... [true] | +| Finally.cs:69:9:71:9 | After {...} | Finally.cs:70:13:70:41 | After ...; | | Finally.cs:69:9:71:9 | {...} | Finally.cs:59:13:59:19 | return ...; | | Finally.cs:69:9:71:9 | {...} | Finally.cs:63:13:63:18 | throw ...; | -| Finally.cs:69:9:71:9 | {...} | Finally.cs:65:9:67:9 | catch (...) {...} | -| Finally.cs:69:9:71:9 | {...} | Finally.cs:65:35:65:51 | ... != ... | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:65:9:67:9 | After catch (...) {...} [no-match] | | Finally.cs:69:9:71:9 | {...} | Finally.cs:66:9:67:9 | {...} | +| Finally.cs:70:13:70:40 | After call to method WriteLine | Finally.cs:70:13:70:40 | call to method WriteLine | +| Finally.cs:70:13:70:40 | Before call to method WriteLine | Finally.cs:70:13:70:41 | ...; | | Finally.cs:70:13:70:40 | call to method WriteLine | Finally.cs:70:31:70:39 | "Finally" | | Finally.cs:70:13:70:41 | ...; | Finally.cs:69:9:71:9 | {...} | -| Finally.cs:70:31:70:39 | "Finally" | Finally.cs:70:13:70:41 | ...; | -| Finally.cs:74:10:74:11 | exit M4 (normal) | Finally.cs:77:16:77:20 | ... > ... | -| Finally.cs:74:10:74:11 | exit M4 (normal) | Finally.cs:97:21:97:23 | ...-- | -| Finally.cs:75:5:101:5 | {...} | Finally.cs:74:10:74:11 | enter M4 | +| Finally.cs:70:13:70:41 | After ...; | Finally.cs:70:13:70:40 | After call to method WriteLine | +| Finally.cs:70:31:70:39 | "Finally" | Finally.cs:70:13:70:40 | Before call to method WriteLine | +| Finally.cs:74:10:74:11 | Normal Exit | Finally.cs:75:5:101:5 | After {...} | +| Finally.cs:74:10:74:11 | Normal Exit | Finally.cs:89:13:99:13 | After {...} | +| Finally.cs:75:5:101:5 | After {...} | Finally.cs:77:9:100:9 | After while (...) ... | +| Finally.cs:75:5:101:5 | {...} | Finally.cs:74:10:74:11 | Entry | | Finally.cs:76:9:76:19 | ... ...; | Finally.cs:75:5:101:5 | {...} | +| Finally.cs:76:9:76:19 | After ... ...; | Finally.cs:76:13:76:18 | After Int32 i = ... | +| Finally.cs:76:13:76:13 | access to local variable i | Finally.cs:76:13:76:18 | Before Int32 i = ... | +| Finally.cs:76:13:76:18 | After Int32 i = ... | Finally.cs:76:13:76:18 | Int32 i = ... | +| Finally.cs:76:13:76:18 | Before Int32 i = ... | Finally.cs:76:9:76:19 | ... ...; | | Finally.cs:76:13:76:18 | Int32 i = ... | Finally.cs:76:17:76:18 | 10 | -| Finally.cs:76:17:76:18 | 10 | Finally.cs:76:9:76:19 | ... ...; | -| Finally.cs:77:9:100:9 | while (...) ... | Finally.cs:76:13:76:18 | Int32 i = ... | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:77:9:100:9 | while (...) ... | +| Finally.cs:76:17:76:18 | 10 | Finally.cs:76:13:76:13 | access to local variable i | +| Finally.cs:77:9:100:9 | After while (...) ... | Finally.cs:77:16:77:20 | After ... > ... [false] | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:77:9:100:9 | while (...) ... | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:78:9:100:9 | After {...} | +| Finally.cs:77:9:100:9 | while (...) ... | Finally.cs:76:9:76:19 | After ... ...; | +| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:77:16:77:20 | Before ... > ... | | Finally.cs:77:16:77:20 | ... > ... | Finally.cs:77:20:77:20 | 0 | +| Finally.cs:77:16:77:20 | Before ... > ... | Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | | Finally.cs:77:20:77:20 | 0 | Finally.cs:77:16:77:16 | access to local variable i | +| Finally.cs:78:9:100:9 | After {...} | Finally.cs:79:13:99:13 | After try {...} ... | +| Finally.cs:78:9:100:9 | {...} | Finally.cs:77:16:77:20 | After ... > ... [true] | | Finally.cs:79:13:99:13 | try {...} ... | Finally.cs:78:9:100:9 | {...} | +| Finally.cs:80:13:87:13 | After {...} | Finally.cs:85:17:86:26 | After if (...) ... | | Finally.cs:80:13:87:13 | {...} | Finally.cs:79:13:99:13 | try {...} ... | +| Finally.cs:81:17:82:27 | After if (...) ... | Finally.cs:81:21:81:26 | After ... == ... [false] | | Finally.cs:81:17:82:27 | if (...) ... | Finally.cs:80:13:87:13 | {...} | -| Finally.cs:81:21:81:21 | access to local variable i | Finally.cs:81:17:82:27 | if (...) ... | +| Finally.cs:81:21:81:21 | access to local variable i | Finally.cs:81:21:81:26 | Before ... == ... | | Finally.cs:81:21:81:26 | ... == ... | Finally.cs:81:26:81:26 | 0 | +| Finally.cs:81:21:81:26 | Before ... == ... | Finally.cs:81:17:82:27 | if (...) ... | | Finally.cs:81:26:81:26 | 0 | Finally.cs:81:21:81:21 | access to local variable i | -| Finally.cs:83:21:83:21 | access to local variable i | Finally.cs:83:17:84:29 | if (...) ... | +| Finally.cs:82:21:82:27 | Before return ...; | Finally.cs:81:21:81:26 | After ... == ... [true] | +| Finally.cs:82:21:82:27 | return ...; | Finally.cs:82:21:82:27 | Before return ...; | +| Finally.cs:83:17:84:29 | After if (...) ... | Finally.cs:83:21:83:26 | After ... == ... [false] | +| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:81:17:82:27 | After if (...) ... | +| Finally.cs:83:21:83:21 | access to local variable i | Finally.cs:83:21:83:26 | Before ... == ... | | Finally.cs:83:21:83:26 | ... == ... | Finally.cs:83:26:83:26 | 1 | +| Finally.cs:83:21:83:26 | Before ... == ... | Finally.cs:83:17:84:29 | if (...) ... | | Finally.cs:83:26:83:26 | 1 | Finally.cs:83:21:83:21 | access to local variable i | -| Finally.cs:85:21:85:21 | access to local variable i | Finally.cs:85:17:86:26 | if (...) ... | +| Finally.cs:84:21:84:29 | Before continue; | Finally.cs:83:21:83:26 | After ... == ... [true] | +| Finally.cs:84:21:84:29 | continue; | Finally.cs:84:21:84:29 | Before continue; | +| Finally.cs:85:17:86:26 | After if (...) ... | Finally.cs:85:21:85:26 | After ... == ... [false] | +| Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:83:17:84:29 | After if (...) ... | +| Finally.cs:85:21:85:21 | access to local variable i | Finally.cs:85:21:85:26 | Before ... == ... | | Finally.cs:85:21:85:26 | ... == ... | Finally.cs:85:26:85:26 | 2 | +| Finally.cs:85:21:85:26 | Before ... == ... | Finally.cs:85:17:86:26 | if (...) ... | | Finally.cs:85:26:85:26 | 2 | Finally.cs:85:21:85:21 | access to local variable i | +| Finally.cs:86:21:86:26 | Before break; | Finally.cs:85:21:85:26 | After ... == ... [true] | +| Finally.cs:86:21:86:26 | break; | Finally.cs:86:21:86:26 | Before break; | +| Finally.cs:89:13:99:13 | After {...} | Finally.cs:90:17:98:17 | After try {...} ... | +| Finally.cs:89:13:99:13 | {...} | Finally.cs:80:13:87:13 | After {...} | | Finally.cs:89:13:99:13 | {...} | Finally.cs:82:21:82:27 | return ...; | | Finally.cs:89:13:99:13 | {...} | Finally.cs:84:21:84:29 | continue; | -| Finally.cs:89:13:99:13 | {...} | Finally.cs:85:21:85:26 | ... == ... | | Finally.cs:89:13:99:13 | {...} | Finally.cs:86:21:86:26 | break; | +| Finally.cs:90:17:98:17 | After try {...} ... | Finally.cs:96:17:98:17 | After {...} | | Finally.cs:90:17:98:17 | try {...} ... | Finally.cs:89:13:99:13 | {...} | +| Finally.cs:91:17:94:17 | After {...} | Finally.cs:92:21:93:46 | After if (...) ... | | Finally.cs:91:17:94:17 | {...} | Finally.cs:90:17:98:17 | try {...} ... | +| Finally.cs:92:21:93:46 | After if (...) ... | Finally.cs:92:25:92:30 | After ... == ... [false] | | Finally.cs:92:21:93:46 | if (...) ... | Finally.cs:91:17:94:17 | {...} | -| Finally.cs:92:25:92:25 | access to local variable i | Finally.cs:92:21:93:46 | if (...) ... | +| Finally.cs:92:25:92:25 | access to local variable i | Finally.cs:92:25:92:30 | Before ... == ... | | Finally.cs:92:25:92:30 | ... == ... | Finally.cs:92:30:92:30 | 3 | +| Finally.cs:92:25:92:30 | Before ... == ... | Finally.cs:92:21:93:46 | if (...) ... | | Finally.cs:92:30:92:30 | 3 | Finally.cs:92:25:92:25 | access to local variable i | -| Finally.cs:96:17:98:17 | {...} | Finally.cs:92:25:92:30 | ... == ... | +| Finally.cs:93:25:93:46 | Before throw ...; | Finally.cs:92:25:92:30 | After ... == ... [true] | +| Finally.cs:93:25:93:46 | throw ...; | Finally.cs:93:31:93:45 | After object creation of type Exception | +| Finally.cs:93:31:93:45 | Before object creation of type Exception | Finally.cs:93:25:93:46 | Before throw ...; | +| Finally.cs:93:31:93:45 | object creation of type Exception | Finally.cs:93:31:93:45 | Before object creation of type Exception | +| Finally.cs:96:17:98:17 | After {...} | Finally.cs:97:21:97:24 | After ...; | +| Finally.cs:96:17:98:17 | {...} | Finally.cs:91:17:94:17 | After {...} | | Finally.cs:96:17:98:17 | {...} | Finally.cs:93:25:93:46 | throw ...; | | Finally.cs:96:17:98:17 | {...} | Finally.cs:93:31:93:45 | object creation of type Exception | -| Finally.cs:97:21:97:21 | access to local variable i | Finally.cs:97:21:97:24 | ...; | +| Finally.cs:97:21:97:21 | access to local variable i | Finally.cs:97:21:97:23 | Before ...-- | | Finally.cs:97:21:97:23 | ...-- | Finally.cs:97:21:97:21 | access to local variable i | +| Finally.cs:97:21:97:23 | After ...-- | Finally.cs:97:21:97:23 | ...-- | +| Finally.cs:97:21:97:23 | Before ...-- | Finally.cs:97:21:97:24 | ...; | | Finally.cs:97:21:97:24 | ...; | Finally.cs:96:17:98:17 | {...} | -| Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:116:17:116:32 | ... > ... | -| Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:117:17:117:36 | call to method WriteLine | -| Finally.cs:104:5:119:5 | {...} | Finally.cs:103:10:103:11 | enter M5 | +| Finally.cs:97:21:97:24 | After ...; | Finally.cs:97:21:97:23 | After ...-- | +| Finally.cs:103:10:103:11 | Normal Exit | Finally.cs:104:5:119:5 | After {...} | +| Finally.cs:103:10:103:11 | Normal Exit | Finally.cs:113:9:118:9 | After {...} | +| Finally.cs:104:5:119:5 | After {...} | Finally.cs:105:9:118:9 | After try {...} ... | +| Finally.cs:104:5:119:5 | {...} | Finally.cs:103:10:103:11 | Entry | | Finally.cs:105:9:118:9 | try {...} ... | Finally.cs:104:5:119:5 | {...} | +| Finally.cs:106:9:111:9 | After {...} | Finally.cs:109:13:110:49 | After if (...) ... | | Finally.cs:106:9:111:9 | {...} | Finally.cs:105:9:118:9 | try {...} ... | +| Finally.cs:107:13:108:23 | After if (...) ... | Finally.cs:107:17:107:33 | After ... == ... [false] | | Finally.cs:107:13:108:23 | if (...) ... | Finally.cs:106:9:111:9 | {...} | +| Finally.cs:107:17:107:21 | Before access to field Field | Finally.cs:107:17:107:28 | Before access to property Length | | Finally.cs:107:17:107:21 | access to field Field | Finally.cs:107:17:107:21 | this access | -| Finally.cs:107:17:107:21 | this access | Finally.cs:107:13:108:23 | if (...) ... | +| Finally.cs:107:17:107:21 | this access | Finally.cs:107:17:107:21 | Before access to field Field | +| Finally.cs:107:17:107:28 | Before access to property Length | Finally.cs:107:17:107:33 | Before ... == ... | +| Finally.cs:107:17:107:28 | access to property Length | Finally.cs:107:17:107:21 | After access to field Field | | Finally.cs:107:17:107:33 | ... == ... | Finally.cs:107:33:107:33 | 0 | +| Finally.cs:107:17:107:33 | Before ... == ... | Finally.cs:107:13:108:23 | if (...) ... | +| Finally.cs:107:33:107:33 | 0 | Finally.cs:107:17:107:28 | After access to property Length | +| Finally.cs:108:17:108:23 | Before return ...; | Finally.cs:107:17:107:33 | After ... == ... [true] | +| Finally.cs:108:17:108:23 | return ...; | Finally.cs:108:17:108:23 | Before return ...; | +| Finally.cs:109:13:110:49 | After if (...) ... | Finally.cs:109:17:109:33 | After ... == ... [false] | +| Finally.cs:109:13:110:49 | if (...) ... | Finally.cs:107:13:108:23 | After if (...) ... | +| Finally.cs:109:17:109:21 | Before access to field Field | Finally.cs:109:17:109:28 | Before access to property Length | | Finally.cs:109:17:109:21 | access to field Field | Finally.cs:109:17:109:21 | this access | -| Finally.cs:109:17:109:21 | this access | Finally.cs:109:13:110:49 | if (...) ... | +| Finally.cs:109:17:109:21 | this access | Finally.cs:109:17:109:21 | Before access to field Field | +| Finally.cs:109:17:109:28 | Before access to property Length | Finally.cs:109:17:109:33 | Before ... == ... | +| Finally.cs:109:17:109:28 | access to property Length | Finally.cs:109:17:109:21 | After access to field Field | | Finally.cs:109:17:109:33 | ... == ... | Finally.cs:109:33:109:33 | 1 | +| Finally.cs:109:17:109:33 | Before ... == ... | Finally.cs:109:13:110:49 | if (...) ... | +| Finally.cs:109:33:109:33 | 1 | Finally.cs:109:17:109:28 | After access to property Length | +| Finally.cs:110:17:110:49 | Before throw ...; | Finally.cs:109:17:109:33 | After ... == ... [true] | +| Finally.cs:110:17:110:49 | throw ...; | Finally.cs:110:23:110:48 | After object creation of type OutOfMemoryException | +| Finally.cs:110:23:110:48 | Before object creation of type OutOfMemoryException | Finally.cs:110:17:110:49 | Before throw ...; | +| Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | Finally.cs:110:23:110:48 | Before object creation of type OutOfMemoryException | +| Finally.cs:113:9:118:9 | After {...} | Finally.cs:116:13:117:37 | After if (...) ... | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:106:9:111:9 | After {...} | | Finally.cs:113:9:118:9 | {...} | Finally.cs:107:17:107:21 | access to field Field | | Finally.cs:113:9:118:9 | {...} | Finally.cs:107:17:107:28 | access to property Length | | Finally.cs:113:9:118:9 | {...} | Finally.cs:108:17:108:23 | return ...; | | Finally.cs:113:9:118:9 | {...} | Finally.cs:109:17:109:21 | access to field Field | | Finally.cs:113:9:118:9 | {...} | Finally.cs:109:17:109:28 | access to property Length | -| Finally.cs:113:9:118:9 | {...} | Finally.cs:109:17:109:33 | ... == ... | | Finally.cs:113:9:118:9 | {...} | Finally.cs:110:17:110:49 | throw ...; | | Finally.cs:113:9:118:9 | {...} | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | +| Finally.cs:114:13:115:41 | After if (...) ... | Finally.cs:114:17:114:36 | After !... [false] | +| Finally.cs:114:13:115:41 | After if (...) ... | Finally.cs:115:17:115:41 | After ...; | | Finally.cs:114:13:115:41 | if (...) ... | Finally.cs:113:9:118:9 | {...} | +| Finally.cs:114:17:114:36 | !... | Finally.cs:114:13:115:41 | if (...) ... | +| Finally.cs:114:17:114:36 | After !... [false] | Finally.cs:114:19:114:35 | After ... == ... [true] | +| Finally.cs:114:17:114:36 | After !... [true] | Finally.cs:114:19:114:35 | After ... == ... [false] | +| Finally.cs:114:19:114:23 | After access to field Field | Finally.cs:114:19:114:23 | access to field Field | +| Finally.cs:114:19:114:23 | Before access to field Field | Finally.cs:114:19:114:30 | Before access to property Length | | Finally.cs:114:19:114:23 | access to field Field | Finally.cs:114:19:114:23 | this access | -| Finally.cs:114:19:114:23 | this access | Finally.cs:114:13:115:41 | if (...) ... | -| Finally.cs:114:19:114:30 | access to property Length | Finally.cs:114:19:114:23 | access to field Field | +| Finally.cs:114:19:114:23 | this access | Finally.cs:114:19:114:23 | Before access to field Field | +| Finally.cs:114:19:114:30 | After access to property Length | Finally.cs:114:19:114:30 | access to property Length | +| Finally.cs:114:19:114:30 | Before access to property Length | Finally.cs:114:19:114:35 | Before ... == ... | +| Finally.cs:114:19:114:30 | access to property Length | Finally.cs:114:19:114:23 | After access to field Field | | Finally.cs:114:19:114:35 | ... == ... | Finally.cs:114:35:114:35 | 0 | -| Finally.cs:114:35:114:35 | 0 | Finally.cs:114:19:114:30 | access to property Length | -| Finally.cs:115:17:115:40 | call to method WriteLine | Finally.cs:115:35:115:39 | access to field Field | -| Finally.cs:115:17:115:41 | ...; | Finally.cs:114:17:114:36 | [true] !... | +| Finally.cs:114:19:114:35 | Before ... == ... | Finally.cs:114:17:114:36 | !... | +| Finally.cs:114:35:114:35 | 0 | Finally.cs:114:19:114:30 | After access to property Length | +| Finally.cs:115:17:115:40 | After call to method WriteLine | Finally.cs:115:17:115:40 | call to method WriteLine | +| Finally.cs:115:17:115:40 | Before call to method WriteLine | Finally.cs:115:17:115:41 | ...; | +| Finally.cs:115:17:115:40 | call to method WriteLine | Finally.cs:115:35:115:39 | After access to field Field | +| Finally.cs:115:17:115:41 | ...; | Finally.cs:114:17:114:36 | After !... [true] | +| Finally.cs:115:17:115:41 | After ...; | Finally.cs:115:17:115:40 | After call to method WriteLine | +| Finally.cs:115:35:115:39 | After access to field Field | Finally.cs:115:35:115:39 | access to field Field | +| Finally.cs:115:35:115:39 | Before access to field Field | Finally.cs:115:17:115:40 | Before call to method WriteLine | | Finally.cs:115:35:115:39 | access to field Field | Finally.cs:115:35:115:39 | this access | -| Finally.cs:115:35:115:39 | this access | Finally.cs:115:17:115:41 | ...; | -| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:114:17:114:36 | [false] !... | -| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:115:17:115:40 | call to method WriteLine | +| Finally.cs:115:35:115:39 | this access | Finally.cs:115:35:115:39 | Before access to field Field | +| Finally.cs:116:13:117:37 | After if (...) ... | Finally.cs:116:17:116:32 | After ... > ... [false] | +| Finally.cs:116:13:117:37 | After if (...) ... | Finally.cs:117:17:117:37 | After ...; | +| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:114:13:115:41 | After if (...) ... | +| Finally.cs:116:17:116:21 | After access to field Field | Finally.cs:116:17:116:21 | access to field Field | +| Finally.cs:116:17:116:21 | Before access to field Field | Finally.cs:116:17:116:28 | Before access to property Length | | Finally.cs:116:17:116:21 | access to field Field | Finally.cs:116:17:116:21 | this access | -| Finally.cs:116:17:116:21 | this access | Finally.cs:116:13:117:37 | if (...) ... | -| Finally.cs:116:17:116:28 | access to property Length | Finally.cs:116:17:116:21 | access to field Field | +| Finally.cs:116:17:116:21 | this access | Finally.cs:116:17:116:21 | Before access to field Field | +| Finally.cs:116:17:116:28 | After access to property Length | Finally.cs:116:17:116:28 | access to property Length | +| Finally.cs:116:17:116:28 | Before access to property Length | Finally.cs:116:17:116:32 | Before ... > ... | +| Finally.cs:116:17:116:28 | access to property Length | Finally.cs:116:17:116:21 | After access to field Field | | Finally.cs:116:17:116:32 | ... > ... | Finally.cs:116:32:116:32 | 0 | -| Finally.cs:116:32:116:32 | 0 | Finally.cs:116:17:116:28 | access to property Length | +| Finally.cs:116:17:116:32 | Before ... > ... | Finally.cs:116:13:117:37 | if (...) ... | +| Finally.cs:116:32:116:32 | 0 | Finally.cs:116:17:116:28 | After access to property Length | +| Finally.cs:117:17:117:36 | After call to method WriteLine | Finally.cs:117:17:117:36 | call to method WriteLine | +| Finally.cs:117:17:117:36 | Before call to method WriteLine | Finally.cs:117:17:117:37 | ...; | | Finally.cs:117:17:117:36 | call to method WriteLine | Finally.cs:117:35:117:35 | 1 | -| Finally.cs:117:35:117:35 | 1 | Finally.cs:117:17:117:37 | ...; | -| Finally.cs:121:10:121:11 | exit M6 | Finally.cs:121:10:121:11 | exit M6 (normal) | -| Finally.cs:121:10:121:11 | exit M6 (normal) | Finally.cs:125:17:125:40 | Double temp = ... | -| Finally.cs:122:5:131:5 | {...} | Finally.cs:121:10:121:11 | enter M6 | +| Finally.cs:117:17:117:37 | ...; | Finally.cs:116:17:116:32 | After ... > ... [true] | +| Finally.cs:117:17:117:37 | After ...; | Finally.cs:117:17:117:36 | After call to method WriteLine | +| Finally.cs:117:35:117:35 | 1 | Finally.cs:117:17:117:36 | Before call to method WriteLine | +| Finally.cs:121:10:121:11 | Exit | Finally.cs:121:10:121:11 | Normal Exit | +| Finally.cs:121:10:121:11 | Normal Exit | Finally.cs:122:5:131:5 | After {...} | +| Finally.cs:122:5:131:5 | After {...} | Finally.cs:123:9:130:9 | After try {...} ... | +| Finally.cs:122:5:131:5 | {...} | Finally.cs:121:10:121:11 | Entry | +| Finally.cs:123:9:130:9 | After try {...} ... | Finally.cs:124:9:126:9 | After {...} | | Finally.cs:123:9:130:9 | try {...} ... | Finally.cs:122:5:131:5 | {...} | +| Finally.cs:124:9:126:9 | After {...} | Finally.cs:125:13:125:41 | After ... ...; | | Finally.cs:124:9:126:9 | {...} | Finally.cs:123:9:130:9 | try {...} ... | | Finally.cs:125:13:125:41 | ... ...; | Finally.cs:124:9:126:9 | {...} | -| Finally.cs:125:17:125:40 | Double temp = ... | Finally.cs:125:24:125:40 | ... / ... | -| Finally.cs:125:24:125:24 | 0 | Finally.cs:125:13:125:41 | ... ...; | +| Finally.cs:125:13:125:41 | After ... ...; | Finally.cs:125:17:125:40 | After Double temp = ... | +| Finally.cs:125:17:125:20 | access to local variable temp | Finally.cs:125:17:125:40 | Before Double temp = ... | +| Finally.cs:125:17:125:40 | After Double temp = ... | Finally.cs:125:17:125:40 | Double temp = ... | +| Finally.cs:125:17:125:40 | Before Double temp = ... | Finally.cs:125:13:125:41 | ... ...; | +| Finally.cs:125:17:125:40 | Double temp = ... | Finally.cs:125:24:125:40 | After ... / ... | +| Finally.cs:125:24:125:24 | 0 | Finally.cs:125:24:125:24 | Before (...) ... | | Finally.cs:125:24:125:24 | (...) ... | Finally.cs:125:24:125:24 | 0 | +| Finally.cs:125:24:125:24 | After (...) ... | Finally.cs:125:24:125:24 | (...) ... | +| Finally.cs:125:24:125:24 | Before (...) ... | Finally.cs:125:24:125:40 | Before ... / ... | | Finally.cs:125:24:125:40 | ... / ... | Finally.cs:125:28:125:40 | access to constant E | -| Finally.cs:125:28:125:40 | access to constant E | Finally.cs:125:24:125:24 | (...) ... | -| Finally.cs:133:10:133:11 | exit M7 | Finally.cs:133:10:133:11 | exit M7 (abnormal) | -| Finally.cs:133:10:133:11 | exit M7 (abnormal) | Finally.cs:141:13:141:44 | throw ...; | -| Finally.cs:134:5:145:5 | {...} | Finally.cs:133:10:133:11 | enter M7 | +| Finally.cs:125:24:125:40 | After ... / ... | Finally.cs:125:24:125:40 | ... / ... | +| Finally.cs:125:24:125:40 | Before ... / ... | Finally.cs:125:17:125:20 | access to local variable temp | +| Finally.cs:125:28:125:40 | access to constant E | Finally.cs:125:24:125:24 | After (...) ... | +| Finally.cs:133:10:133:11 | Exceptional Exit | Finally.cs:141:13:141:44 | throw ...; | +| Finally.cs:133:10:133:11 | Exit | Finally.cs:133:10:133:11 | Exceptional Exit | +| Finally.cs:134:5:145:5 | {...} | Finally.cs:133:10:133:11 | Entry | | Finally.cs:135:9:143:9 | try {...} ... | Finally.cs:134:5:145:5 | {...} | +| Finally.cs:136:9:138:9 | After {...} | Finally.cs:137:13:137:37 | After ...; | | Finally.cs:136:9:138:9 | {...} | Finally.cs:135:9:143:9 | try {...} ... | +| Finally.cs:137:13:137:36 | Before call to method WriteLine | Finally.cs:137:13:137:37 | ...; | | Finally.cs:137:13:137:36 | call to method WriteLine | Finally.cs:137:31:137:35 | "Try" | | Finally.cs:137:13:137:37 | ...; | Finally.cs:136:9:138:9 | {...} | -| Finally.cs:137:31:137:35 | "Try" | Finally.cs:137:13:137:37 | ...; | -| Finally.cs:140:9:143:9 | {...} | Finally.cs:137:13:137:36 | call to method WriteLine | -| Finally.cs:141:13:141:44 | throw ...; | Finally.cs:141:19:141:43 | object creation of type ArgumentException | +| Finally.cs:137:13:137:37 | After ...; | Finally.cs:137:13:137:36 | After call to method WriteLine | +| Finally.cs:137:31:137:35 | "Try" | Finally.cs:137:13:137:36 | Before call to method WriteLine | +| Finally.cs:141:13:141:44 | Before throw ...; | Finally.cs:140:9:143:9 | {...} | +| Finally.cs:141:13:141:44 | throw ...; | Finally.cs:141:19:141:43 | After object creation of type ArgumentException | +| Finally.cs:141:19:141:43 | After object creation of type ArgumentException | Finally.cs:141:19:141:43 | object creation of type ArgumentException | +| Finally.cs:141:19:141:43 | Before object creation of type ArgumentException | Finally.cs:141:13:141:44 | Before throw ...; | | Finally.cs:141:19:141:43 | object creation of type ArgumentException | Finally.cs:141:41:141:42 | "" | -| Finally.cs:141:41:141:42 | "" | Finally.cs:140:9:143:9 | {...} | -| Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:158:21:158:36 | ... == ... | -| Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:163:17:163:42 | call to method WriteLine | -| Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:167:17:167:37 | call to method WriteLine | -| Finally.cs:148:5:170:5 | {...} | Finally.cs:147:10:147:11 | enter M8 | +| Finally.cs:141:41:141:42 | "" | Finally.cs:141:19:141:43 | Before object creation of type ArgumentException | +| Finally.cs:147:10:147:11 | Normal Exit | Finally.cs:148:5:170:5 | After {...} | +| Finally.cs:147:22:147:25 | args | Finally.cs:147:10:147:11 | Entry | +| Finally.cs:148:5:170:5 | After {...} | Finally.cs:149:9:169:9 | After try {...} ... | +| Finally.cs:148:5:170:5 | {...} | Finally.cs:147:22:147:25 | args | +| Finally.cs:149:9:169:9 | After try {...} ... | Finally.cs:155:9:169:9 | After {...} | | Finally.cs:149:9:169:9 | try {...} ... | Finally.cs:148:5:170:5 | {...} | +| Finally.cs:150:9:153:9 | After {...} | Finally.cs:151:13:152:50 | After if (...) ... | | Finally.cs:150:9:153:9 | {...} | Finally.cs:149:9:169:9 | try {...} ... | +| Finally.cs:151:13:152:50 | After if (...) ... | Finally.cs:151:17:151:28 | After ... == ... [false] | | Finally.cs:151:13:152:50 | if (...) ... | Finally.cs:150:9:153:9 | {...} | -| Finally.cs:151:17:151:20 | access to parameter args | Finally.cs:151:13:152:50 | if (...) ... | +| Finally.cs:151:17:151:20 | access to parameter args | Finally.cs:151:17:151:28 | Before ... == ... | | Finally.cs:151:17:151:28 | ... == ... | Finally.cs:151:25:151:28 | null | +| Finally.cs:151:17:151:28 | Before ... == ... | Finally.cs:151:13:152:50 | if (...) ... | | Finally.cs:151:25:151:28 | null | Finally.cs:151:17:151:20 | access to parameter args | -| Finally.cs:155:9:169:9 | {...} | Finally.cs:151:17:151:28 | ... == ... | +| Finally.cs:152:17:152:50 | Before throw ...; | Finally.cs:151:17:151:28 | After ... == ... [true] | +| Finally.cs:152:17:152:50 | throw ...; | Finally.cs:152:23:152:49 | After object creation of type ArgumentNullException | +| Finally.cs:152:23:152:49 | Before object creation of type ArgumentNullException | Finally.cs:152:17:152:50 | Before throw ...; | +| Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | Finally.cs:152:23:152:49 | Before object creation of type ArgumentNullException | +| Finally.cs:155:9:169:9 | After {...} | Finally.cs:156:13:168:13 | After try {...} ... | +| Finally.cs:155:9:169:9 | {...} | Finally.cs:150:9:153:9 | After {...} | | Finally.cs:155:9:169:9 | {...} | Finally.cs:152:17:152:50 | throw ...; | | Finally.cs:155:9:169:9 | {...} | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | +| Finally.cs:156:13:168:13 | After try {...} ... | Finally.cs:157:13:160:13 | After {...} | +| Finally.cs:156:13:168:13 | After try {...} ... | Finally.cs:162:13:164:13 | After {...} | +| Finally.cs:156:13:168:13 | After try {...} ... | Finally.cs:166:13:168:13 | After {...} | | Finally.cs:156:13:168:13 | try {...} ... | Finally.cs:155:9:169:9 | {...} | +| Finally.cs:157:13:160:13 | After {...} | Finally.cs:158:17:159:45 | After if (...) ... | | Finally.cs:157:13:160:13 | {...} | Finally.cs:156:13:168:13 | try {...} ... | +| Finally.cs:158:17:159:45 | After if (...) ... | Finally.cs:158:21:158:36 | After ... == ... [false] | | Finally.cs:158:17:159:45 | if (...) ... | Finally.cs:157:13:160:13 | {...} | -| Finally.cs:158:21:158:24 | access to parameter args | Finally.cs:158:17:159:45 | if (...) ... | +| Finally.cs:158:21:158:24 | access to parameter args | Finally.cs:158:21:158:31 | Before access to property Length | +| Finally.cs:158:21:158:31 | Before access to property Length | Finally.cs:158:21:158:36 | Before ... == ... | | Finally.cs:158:21:158:31 | access to property Length | Finally.cs:158:21:158:24 | access to parameter args | | Finally.cs:158:21:158:36 | ... == ... | Finally.cs:158:36:158:36 | 1 | +| Finally.cs:158:21:158:36 | Before ... == ... | Finally.cs:158:17:159:45 | if (...) ... | +| Finally.cs:158:36:158:36 | 1 | Finally.cs:158:21:158:31 | After access to property Length | +| Finally.cs:159:21:159:45 | Before throw ...; | Finally.cs:158:21:158:36 | After ... == ... [true] | +| Finally.cs:159:21:159:45 | throw ...; | Finally.cs:159:27:159:44 | After object creation of type Exception | +| Finally.cs:159:27:159:44 | Before object creation of type Exception | Finally.cs:159:21:159:45 | Before throw ...; | | Finally.cs:159:27:159:44 | object creation of type Exception | Finally.cs:159:41:159:43 | "1" | +| Finally.cs:159:41:159:43 | "1" | Finally.cs:159:27:159:44 | Before object creation of type Exception | +| Finally.cs:161:13:164:13 | After catch (...) {...} [no-match] | Finally.cs:161:39:161:54 | After ... == ... [false] | | Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:159:21:159:45 | throw ...; | | Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:159:27:159:44 | object creation of type Exception | -| Finally.cs:161:39:161:39 | access to local variable e | Finally.cs:161:30:161:30 | Exception e | +| Finally.cs:161:30:161:30 | Exception e | Finally.cs:161:13:164:13 | After catch (...) {...} [match] | +| Finally.cs:161:39:161:39 | access to local variable e | Finally.cs:161:39:161:47 | Before access to property Message | +| Finally.cs:161:39:161:47 | After access to property Message | Finally.cs:161:39:161:47 | access to property Message | +| Finally.cs:161:39:161:47 | Before access to property Message | Finally.cs:161:39:161:54 | Before ... == ... | | Finally.cs:161:39:161:47 | access to property Message | Finally.cs:161:39:161:39 | access to local variable e | | Finally.cs:161:39:161:54 | ... == ... | Finally.cs:161:52:161:54 | "1" | -| Finally.cs:161:52:161:54 | "1" | Finally.cs:161:39:161:47 | access to property Message | -| Finally.cs:163:17:163:42 | call to method WriteLine | Finally.cs:163:35:163:41 | access to array element | +| Finally.cs:161:39:161:54 | Before ... == ... | Finally.cs:161:30:161:30 | Exception e | +| Finally.cs:161:52:161:54 | "1" | Finally.cs:161:39:161:47 | After access to property Message | +| Finally.cs:162:13:164:13 | After {...} | Finally.cs:163:17:163:43 | After ...; | +| Finally.cs:162:13:164:13 | {...} | Finally.cs:161:39:161:54 | After ... == ... [true] | +| Finally.cs:163:17:163:42 | After call to method WriteLine | Finally.cs:163:17:163:42 | call to method WriteLine | +| Finally.cs:163:17:163:42 | Before call to method WriteLine | Finally.cs:163:17:163:43 | ...; | +| Finally.cs:163:17:163:42 | call to method WriteLine | Finally.cs:163:35:163:41 | After access to array element | | Finally.cs:163:17:163:43 | ...; | Finally.cs:162:13:164:13 | {...} | -| Finally.cs:163:35:163:38 | access to parameter args | Finally.cs:163:17:163:43 | ...; | +| Finally.cs:163:17:163:43 | After ...; | Finally.cs:163:17:163:42 | After call to method WriteLine | +| Finally.cs:163:35:163:38 | access to parameter args | Finally.cs:163:35:163:41 | Before access to array element | +| Finally.cs:163:35:163:41 | After access to array element | Finally.cs:163:35:163:41 | access to array element | +| Finally.cs:163:35:163:41 | Before access to array element | Finally.cs:163:17:163:42 | Before call to method WriteLine | | Finally.cs:163:35:163:41 | access to array element | Finally.cs:163:40:163:40 | 0 | | Finally.cs:163:40:163:40 | 0 | Finally.cs:163:35:163:38 | access to parameter args | -| Finally.cs:166:13:168:13 | {...} | Finally.cs:165:13:168:13 | catch {...} | +| Finally.cs:165:13:168:13 | After catch {...} [match] | Finally.cs:165:13:168:13 | catch {...} | +| Finally.cs:165:13:168:13 | catch {...} | Finally.cs:161:13:164:13 | After catch (...) {...} [no-match] | +| Finally.cs:166:13:168:13 | After {...} | Finally.cs:167:17:167:38 | After ...; | +| Finally.cs:166:13:168:13 | {...} | Finally.cs:165:13:168:13 | After catch {...} [match] | +| Finally.cs:167:17:167:37 | After call to method WriteLine | Finally.cs:167:17:167:37 | call to method WriteLine | +| Finally.cs:167:17:167:37 | Before call to method WriteLine | Finally.cs:167:17:167:38 | ...; | | Finally.cs:167:17:167:37 | call to method WriteLine | Finally.cs:167:35:167:36 | "" | | Finally.cs:167:17:167:38 | ...; | Finally.cs:166:13:168:13 | {...} | -| Finally.cs:167:35:167:36 | "" | Finally.cs:167:17:167:38 | ...; | -| Finally.cs:172:11:172:20 | call to constructor Exception | Finally.cs:172:11:172:20 | call to method | +| Finally.cs:167:17:167:38 | After ...; | Finally.cs:167:17:167:37 | After call to method WriteLine | +| Finally.cs:167:35:167:36 | "" | Finally.cs:167:17:167:37 | Before call to method WriteLine | +| Finally.cs:172:11:172:20 | After call to constructor Exception | Finally.cs:172:11:172:20 | call to constructor Exception | +| Finally.cs:172:11:172:20 | After call to method | Finally.cs:172:11:172:20 | call to method | +| Finally.cs:172:11:172:20 | Before call to constructor Exception | Finally.cs:172:11:172:20 | After call to method | +| Finally.cs:172:11:172:20 | Before call to method | Finally.cs:172:11:172:20 | Entry | +| Finally.cs:172:11:172:20 | Exit | Finally.cs:172:11:172:20 | Normal Exit | +| Finally.cs:172:11:172:20 | Normal Exit | Finally.cs:172:11:172:20 | {...} | +| Finally.cs:172:11:172:20 | call to constructor Exception | Finally.cs:172:11:172:20 | Before call to constructor Exception | | Finally.cs:172:11:172:20 | call to method | Finally.cs:172:11:172:20 | this access | -| Finally.cs:172:11:172:20 | exit ExceptionA | Finally.cs:172:11:172:20 | exit ExceptionA (normal) | -| Finally.cs:172:11:172:20 | exit ExceptionA (normal) | Finally.cs:172:11:172:20 | {...} | -| Finally.cs:172:11:172:20 | this access | Finally.cs:172:11:172:20 | enter ExceptionA | -| Finally.cs:172:11:172:20 | {...} | Finally.cs:172:11:172:20 | call to constructor Exception | -| Finally.cs:173:11:173:20 | call to constructor Exception | Finally.cs:173:11:173:20 | call to method | +| Finally.cs:172:11:172:20 | this access | Finally.cs:172:11:172:20 | Before call to method | +| Finally.cs:172:11:172:20 | {...} | Finally.cs:172:11:172:20 | After call to constructor Exception | +| Finally.cs:173:11:173:20 | After call to constructor Exception | Finally.cs:173:11:173:20 | call to constructor Exception | +| Finally.cs:173:11:173:20 | After call to method | Finally.cs:173:11:173:20 | call to method | +| Finally.cs:173:11:173:20 | Before call to constructor Exception | Finally.cs:173:11:173:20 | After call to method | +| Finally.cs:173:11:173:20 | Before call to method | Finally.cs:173:11:173:20 | Entry | +| Finally.cs:173:11:173:20 | Exit | Finally.cs:173:11:173:20 | Normal Exit | +| Finally.cs:173:11:173:20 | Normal Exit | Finally.cs:173:11:173:20 | {...} | +| Finally.cs:173:11:173:20 | call to constructor Exception | Finally.cs:173:11:173:20 | Before call to constructor Exception | | Finally.cs:173:11:173:20 | call to method | Finally.cs:173:11:173:20 | this access | -| Finally.cs:173:11:173:20 | exit ExceptionB | Finally.cs:173:11:173:20 | exit ExceptionB (normal) | -| Finally.cs:173:11:173:20 | exit ExceptionB (normal) | Finally.cs:173:11:173:20 | {...} | -| Finally.cs:173:11:173:20 | this access | Finally.cs:173:11:173:20 | enter ExceptionB | -| Finally.cs:173:11:173:20 | {...} | Finally.cs:173:11:173:20 | call to constructor Exception | -| Finally.cs:174:11:174:20 | call to constructor Exception | Finally.cs:174:11:174:20 | call to method | +| Finally.cs:173:11:173:20 | this access | Finally.cs:173:11:173:20 | Before call to method | +| Finally.cs:173:11:173:20 | {...} | Finally.cs:173:11:173:20 | After call to constructor Exception | +| Finally.cs:174:11:174:20 | After call to constructor Exception | Finally.cs:174:11:174:20 | call to constructor Exception | +| Finally.cs:174:11:174:20 | After call to method | Finally.cs:174:11:174:20 | call to method | +| Finally.cs:174:11:174:20 | Before call to constructor Exception | Finally.cs:174:11:174:20 | After call to method | +| Finally.cs:174:11:174:20 | Before call to method | Finally.cs:174:11:174:20 | Entry | +| Finally.cs:174:11:174:20 | Exit | Finally.cs:174:11:174:20 | Normal Exit | +| Finally.cs:174:11:174:20 | Normal Exit | Finally.cs:174:11:174:20 | {...} | +| Finally.cs:174:11:174:20 | call to constructor Exception | Finally.cs:174:11:174:20 | Before call to constructor Exception | | Finally.cs:174:11:174:20 | call to method | Finally.cs:174:11:174:20 | this access | -| Finally.cs:174:11:174:20 | exit ExceptionC | Finally.cs:174:11:174:20 | exit ExceptionC (normal) | -| Finally.cs:174:11:174:20 | exit ExceptionC (normal) | Finally.cs:174:11:174:20 | {...} | -| Finally.cs:174:11:174:20 | this access | Finally.cs:174:11:174:20 | enter ExceptionC | -| Finally.cs:174:11:174:20 | {...} | Finally.cs:174:11:174:20 | call to constructor Exception | -| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:186:21:186:22 | access to parameter b2 | -| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:190:21:190:22 | access to parameter b1 | -| Finally.cs:177:5:193:5 | {...} | Finally.cs:176:10:176:11 | enter M9 | +| Finally.cs:174:11:174:20 | this access | Finally.cs:174:11:174:20 | Before call to method | +| Finally.cs:174:11:174:20 | {...} | Finally.cs:174:11:174:20 | After call to constructor Exception | +| Finally.cs:176:10:176:11 | Normal Exit | Finally.cs:177:5:193:5 | After {...} | +| Finally.cs:176:18:176:19 | b1 | Finally.cs:176:10:176:11 | Entry | +| Finally.cs:176:27:176:28 | b2 | Finally.cs:176:18:176:19 | b1 | +| Finally.cs:177:5:193:5 | After {...} | Finally.cs:178:9:192:9 | After try {...} ... | +| Finally.cs:177:5:193:5 | {...} | Finally.cs:176:27:176:28 | b2 | +| Finally.cs:178:9:192:9 | After try {...} ... | Finally.cs:183:9:192:9 | After {...} | | Finally.cs:178:9:192:9 | try {...} ... | Finally.cs:177:5:193:5 | {...} | +| Finally.cs:179:9:181:9 | After {...} | Finally.cs:180:13:180:43 | After if (...) ... | | Finally.cs:179:9:181:9 | {...} | Finally.cs:178:9:192:9 | try {...} ... | +| Finally.cs:180:13:180:43 | After if (...) ... | Finally.cs:180:17:180:18 | After access to parameter b1 [false] | | Finally.cs:180:13:180:43 | if (...) ... | Finally.cs:179:9:181:9 | {...} | | Finally.cs:180:17:180:18 | access to parameter b1 | Finally.cs:180:13:180:43 | if (...) ... | -| Finally.cs:183:9:192:9 | {...} | Finally.cs:180:17:180:18 | access to parameter b1 | +| Finally.cs:180:21:180:43 | Before throw ...; | Finally.cs:180:17:180:18 | After access to parameter b1 [true] | +| Finally.cs:180:21:180:43 | throw ...; | Finally.cs:180:27:180:42 | After object creation of type ExceptionA | +| Finally.cs:180:27:180:42 | Before object creation of type ExceptionA | Finally.cs:180:21:180:43 | Before throw ...; | +| Finally.cs:180:27:180:42 | object creation of type ExceptionA | Finally.cs:180:27:180:42 | Before object creation of type ExceptionA | +| Finally.cs:183:9:192:9 | After {...} | Finally.cs:184:13:191:13 | After try {...} ... | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:179:9:181:9 | After {...} | | Finally.cs:183:9:192:9 | {...} | Finally.cs:180:21:180:43 | throw ...; | | Finally.cs:183:9:192:9 | {...} | Finally.cs:180:27:180:42 | object creation of type ExceptionA | +| Finally.cs:184:13:191:13 | After try {...} ... | Finally.cs:185:13:187:13 | After {...} | +| Finally.cs:184:13:191:13 | After try {...} ... | Finally.cs:189:13:191:13 | After {...} | | Finally.cs:184:13:191:13 | try {...} ... | Finally.cs:183:9:192:9 | {...} | +| Finally.cs:185:13:187:13 | After {...} | Finally.cs:186:17:186:47 | After if (...) ... | | Finally.cs:185:13:187:13 | {...} | Finally.cs:184:13:191:13 | try {...} ... | +| Finally.cs:186:17:186:47 | After if (...) ... | Finally.cs:186:21:186:22 | After access to parameter b2 [false] | | Finally.cs:186:17:186:47 | if (...) ... | Finally.cs:185:13:187:13 | {...} | | Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:186:17:186:47 | if (...) ... | +| Finally.cs:186:25:186:47 | Before throw ...; | Finally.cs:186:21:186:22 | After access to parameter b2 [true] | +| Finally.cs:186:25:186:47 | throw ...; | Finally.cs:186:31:186:46 | After object creation of type ExceptionB | +| Finally.cs:186:31:186:46 | Before object creation of type ExceptionB | Finally.cs:186:25:186:47 | Before throw ...; | +| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:186:31:186:46 | Before object creation of type ExceptionB | +| Finally.cs:188:13:191:13 | After catch (...) {...} [match] | Finally.cs:188:13:191:13 | catch (...) {...} | | Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:186:25:186:47 | throw ...; | | Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:186:31:186:46 | object creation of type ExceptionB | -| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:188:13:191:13 | catch (...) {...} | -| Finally.cs:189:13:191:13 | {...} | Finally.cs:188:38:188:39 | access to parameter b2 | +| Finally.cs:188:38:188:39 | After access to parameter b2 [true] | Finally.cs:188:38:188:39 | access to parameter b2 | +| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:188:13:191:13 | After catch (...) {...} [match] | +| Finally.cs:189:13:191:13 | After {...} | Finally.cs:190:17:190:47 | After if (...) ... | +| Finally.cs:189:13:191:13 | {...} | Finally.cs:188:38:188:39 | After access to parameter b2 [true] | +| Finally.cs:190:17:190:47 | After if (...) ... | Finally.cs:190:21:190:22 | After access to parameter b1 [false] | | Finally.cs:190:17:190:47 | if (...) ... | Finally.cs:189:13:191:13 | {...} | +| Finally.cs:190:21:190:22 | After access to parameter b1 [false] | Finally.cs:190:21:190:22 | access to parameter b1 | | Finally.cs:190:21:190:22 | access to parameter b1 | Finally.cs:190:17:190:47 | if (...) ... | -| Finally.cs:190:25:190:47 | throw ...; | Finally.cs:190:31:190:46 | object creation of type ExceptionC | -| Finally.cs:195:10:195:12 | exit M10 (normal) | Finally.cs:213:9:213:24 | ... = ... | -| Finally.cs:196:5:214:5 | {...} | Finally.cs:195:10:195:12 | enter M10 | +| Finally.cs:190:25:190:47 | Before throw ...; | Finally.cs:190:21:190:22 | After access to parameter b1 [true] | +| Finally.cs:190:25:190:47 | throw ...; | Finally.cs:190:31:190:46 | After object creation of type ExceptionC | +| Finally.cs:190:31:190:46 | After object creation of type ExceptionC | Finally.cs:190:31:190:46 | object creation of type ExceptionC | +| Finally.cs:190:31:190:46 | Before object creation of type ExceptionC | Finally.cs:190:25:190:47 | Before throw ...; | +| Finally.cs:190:31:190:46 | object creation of type ExceptionC | Finally.cs:190:31:190:46 | Before object creation of type ExceptionC | +| Finally.cs:195:10:195:12 | Normal Exit | Finally.cs:196:5:214:5 | After {...} | +| Finally.cs:195:19:195:20 | b1 | Finally.cs:195:10:195:12 | Entry | +| Finally.cs:195:28:195:29 | b2 | Finally.cs:195:19:195:20 | b1 | +| Finally.cs:195:37:195:38 | b3 | Finally.cs:195:28:195:29 | b2 | +| Finally.cs:196:5:214:5 | After {...} | Finally.cs:213:9:213:25 | After ...; | +| Finally.cs:196:5:214:5 | {...} | Finally.cs:195:37:195:38 | b3 | +| Finally.cs:197:9:212:9 | After try {...} ... | Finally.cs:202:9:212:9 | After {...} | | Finally.cs:197:9:212:9 | try {...} ... | Finally.cs:196:5:214:5 | {...} | +| Finally.cs:198:9:200:9 | After {...} | Finally.cs:199:13:199:43 | After if (...) ... | | Finally.cs:198:9:200:9 | {...} | Finally.cs:197:9:212:9 | try {...} ... | +| Finally.cs:199:13:199:43 | After if (...) ... | Finally.cs:199:17:199:18 | After access to parameter b1 [false] | | Finally.cs:199:13:199:43 | if (...) ... | Finally.cs:198:9:200:9 | {...} | | Finally.cs:199:17:199:18 | access to parameter b1 | Finally.cs:199:13:199:43 | if (...) ... | -| Finally.cs:202:9:212:9 | {...} | Finally.cs:199:17:199:18 | access to parameter b1 | +| Finally.cs:199:21:199:43 | Before throw ...; | Finally.cs:199:17:199:18 | After access to parameter b1 [true] | +| Finally.cs:199:21:199:43 | throw ...; | Finally.cs:199:27:199:42 | After object creation of type ExceptionA | +| Finally.cs:199:27:199:42 | Before object creation of type ExceptionA | Finally.cs:199:21:199:43 | Before throw ...; | +| Finally.cs:199:27:199:42 | object creation of type ExceptionA | Finally.cs:199:27:199:42 | Before object creation of type ExceptionA | +| Finally.cs:202:9:212:9 | After {...} | Finally.cs:211:13:211:29 | After ...; | +| Finally.cs:202:9:212:9 | {...} | Finally.cs:198:9:200:9 | After {...} | | Finally.cs:202:9:212:9 | {...} | Finally.cs:199:21:199:43 | throw ...; | | Finally.cs:202:9:212:9 | {...} | Finally.cs:199:27:199:42 | object creation of type ExceptionA | +| Finally.cs:203:13:210:13 | After try {...} ... | Finally.cs:208:13:210:13 | After {...} | | Finally.cs:203:13:210:13 | try {...} ... | Finally.cs:202:9:212:9 | {...} | +| Finally.cs:204:13:206:13 | After {...} | Finally.cs:205:17:205:47 | After if (...) ... | | Finally.cs:204:13:206:13 | {...} | Finally.cs:203:13:210:13 | try {...} ... | +| Finally.cs:205:17:205:47 | After if (...) ... | Finally.cs:205:21:205:22 | After access to parameter b2 [false] | | Finally.cs:205:17:205:47 | if (...) ... | Finally.cs:204:13:206:13 | {...} | | Finally.cs:205:21:205:22 | access to parameter b2 | Finally.cs:205:17:205:47 | if (...) ... | -| Finally.cs:208:13:210:13 | {...} | Finally.cs:205:21:205:22 | access to parameter b2 | +| Finally.cs:205:25:205:47 | Before throw ...; | Finally.cs:205:21:205:22 | After access to parameter b2 [true] | +| Finally.cs:205:25:205:47 | throw ...; | Finally.cs:205:31:205:46 | After object creation of type ExceptionB | +| Finally.cs:205:31:205:46 | Before object creation of type ExceptionB | Finally.cs:205:25:205:47 | Before throw ...; | +| Finally.cs:205:31:205:46 | object creation of type ExceptionB | Finally.cs:205:31:205:46 | Before object creation of type ExceptionB | +| Finally.cs:208:13:210:13 | After {...} | Finally.cs:209:17:209:47 | After if (...) ... | +| Finally.cs:208:13:210:13 | {...} | Finally.cs:204:13:206:13 | After {...} | | Finally.cs:208:13:210:13 | {...} | Finally.cs:205:25:205:47 | throw ...; | | Finally.cs:208:13:210:13 | {...} | Finally.cs:205:31:205:46 | object creation of type ExceptionB | +| Finally.cs:209:17:209:47 | After if (...) ... | Finally.cs:209:21:209:22 | After access to parameter b3 [false] | | Finally.cs:209:17:209:47 | if (...) ... | Finally.cs:208:13:210:13 | {...} | +| Finally.cs:209:21:209:22 | After access to parameter b3 [false] | Finally.cs:209:21:209:22 | access to parameter b3 | | Finally.cs:209:21:209:22 | access to parameter b3 | Finally.cs:209:17:209:47 | if (...) ... | -| Finally.cs:209:25:209:47 | throw ...; | Finally.cs:209:31:209:46 | object creation of type ExceptionC | -| Finally.cs:211:13:211:16 | this access | Finally.cs:211:13:211:29 | ...; | -| Finally.cs:211:13:211:22 | access to field Field | Finally.cs:211:26:211:28 | "0" | -| Finally.cs:211:13:211:28 | ... = ... | Finally.cs:211:13:211:22 | access to field Field | -| Finally.cs:211:13:211:29 | ...; | Finally.cs:209:21:209:22 | access to parameter b3 | -| Finally.cs:211:26:211:28 | "0" | Finally.cs:211:13:211:16 | this access | -| Finally.cs:213:9:213:12 | this access | Finally.cs:213:9:213:25 | ...; | -| Finally.cs:213:9:213:18 | access to field Field | Finally.cs:213:22:213:24 | "1" | -| Finally.cs:213:9:213:24 | ... = ... | Finally.cs:213:9:213:18 | access to field Field | -| Finally.cs:213:9:213:25 | ...; | Finally.cs:211:13:211:28 | ... = ... | -| Finally.cs:213:22:213:24 | "1" | Finally.cs:213:9:213:12 | this access | -| Finally.cs:216:10:216:12 | exit M11 | Finally.cs:216:10:216:12 | exit M11 (normal) | -| Finally.cs:216:10:216:12 | exit M11 (normal) | Finally.cs:230:9:230:33 | call to method WriteLine | -| Finally.cs:217:5:231:5 | {...} | Finally.cs:216:10:216:12 | enter M11 | +| Finally.cs:209:25:209:47 | Before throw ...; | Finally.cs:209:21:209:22 | After access to parameter b3 [true] | +| Finally.cs:209:25:209:47 | throw ...; | Finally.cs:209:31:209:46 | After object creation of type ExceptionC | +| Finally.cs:209:31:209:46 | After object creation of type ExceptionC | Finally.cs:209:31:209:46 | object creation of type ExceptionC | +| Finally.cs:209:31:209:46 | Before object creation of type ExceptionC | Finally.cs:209:25:209:47 | Before throw ...; | +| Finally.cs:209:31:209:46 | object creation of type ExceptionC | Finally.cs:209:31:209:46 | Before object creation of type ExceptionC | +| Finally.cs:211:13:211:16 | this access | Finally.cs:211:13:211:22 | Before access to field Field | +| Finally.cs:211:13:211:22 | After access to field Field | Finally.cs:211:13:211:22 | access to field Field | +| Finally.cs:211:13:211:22 | Before access to field Field | Finally.cs:211:13:211:28 | Before ... = ... | +| Finally.cs:211:13:211:22 | access to field Field | Finally.cs:211:13:211:16 | this access | +| Finally.cs:211:13:211:28 | ... = ... | Finally.cs:211:26:211:28 | "0" | +| Finally.cs:211:13:211:28 | After ... = ... | Finally.cs:211:13:211:28 | ... = ... | +| Finally.cs:211:13:211:28 | Before ... = ... | Finally.cs:211:13:211:29 | ...; | +| Finally.cs:211:13:211:29 | ...; | Finally.cs:203:13:210:13 | After try {...} ... | +| Finally.cs:211:13:211:29 | After ...; | Finally.cs:211:13:211:28 | After ... = ... | +| Finally.cs:211:26:211:28 | "0" | Finally.cs:211:13:211:22 | After access to field Field | +| Finally.cs:213:9:213:12 | this access | Finally.cs:213:9:213:18 | Before access to field Field | +| Finally.cs:213:9:213:18 | After access to field Field | Finally.cs:213:9:213:18 | access to field Field | +| Finally.cs:213:9:213:18 | Before access to field Field | Finally.cs:213:9:213:24 | Before ... = ... | +| Finally.cs:213:9:213:18 | access to field Field | Finally.cs:213:9:213:12 | this access | +| Finally.cs:213:9:213:24 | ... = ... | Finally.cs:213:22:213:24 | "1" | +| Finally.cs:213:9:213:24 | After ... = ... | Finally.cs:213:9:213:24 | ... = ... | +| Finally.cs:213:9:213:24 | Before ... = ... | Finally.cs:213:9:213:25 | ...; | +| Finally.cs:213:9:213:25 | ...; | Finally.cs:197:9:212:9 | After try {...} ... | +| Finally.cs:213:9:213:25 | After ...; | Finally.cs:213:9:213:24 | After ... = ... | +| Finally.cs:213:22:213:24 | "1" | Finally.cs:213:9:213:18 | After access to field Field | +| Finally.cs:216:10:216:12 | Exit | Finally.cs:216:10:216:12 | Normal Exit | +| Finally.cs:216:10:216:12 | Normal Exit | Finally.cs:217:5:231:5 | After {...} | +| Finally.cs:217:5:231:5 | After {...} | Finally.cs:230:9:230:34 | After ...; | +| Finally.cs:217:5:231:5 | {...} | Finally.cs:216:10:216:12 | Entry | +| Finally.cs:218:9:229:9 | After try {...} ... | Finally.cs:227:9:229:9 | After {...} | | Finally.cs:218:9:229:9 | try {...} ... | Finally.cs:217:5:231:5 | {...} | +| Finally.cs:219:9:221:9 | After {...} | Finally.cs:220:13:220:37 | After ...; | | Finally.cs:219:9:221:9 | {...} | Finally.cs:218:9:229:9 | try {...} ... | +| Finally.cs:220:13:220:36 | Before call to method WriteLine | Finally.cs:220:13:220:37 | ...; | | Finally.cs:220:13:220:36 | call to method WriteLine | Finally.cs:220:31:220:35 | "Try" | | Finally.cs:220:13:220:37 | ...; | Finally.cs:219:9:221:9 | {...} | -| Finally.cs:220:31:220:35 | "Try" | Finally.cs:220:13:220:37 | ...; | -| Finally.cs:223:9:225:9 | {...} | Finally.cs:222:9:225:9 | catch {...} | +| Finally.cs:220:13:220:37 | After ...; | Finally.cs:220:13:220:36 | After call to method WriteLine | +| Finally.cs:220:31:220:35 | "Try" | Finally.cs:220:13:220:36 | Before call to method WriteLine | +| Finally.cs:222:9:225:9 | After catch {...} [match] | Finally.cs:222:9:225:9 | catch {...} | +| Finally.cs:223:9:225:9 | After {...} | Finally.cs:224:13:224:39 | After ...; | +| Finally.cs:223:9:225:9 | {...} | Finally.cs:222:9:225:9 | After catch {...} [match] | +| Finally.cs:224:13:224:38 | After call to method WriteLine | Finally.cs:224:13:224:38 | call to method WriteLine | +| Finally.cs:224:13:224:38 | Before call to method WriteLine | Finally.cs:224:13:224:39 | ...; | | Finally.cs:224:13:224:38 | call to method WriteLine | Finally.cs:224:31:224:37 | "Catch" | | Finally.cs:224:13:224:39 | ...; | Finally.cs:223:9:225:9 | {...} | -| Finally.cs:224:31:224:37 | "Catch" | Finally.cs:224:13:224:39 | ...; | -| Finally.cs:227:9:229:9 | {...} | Finally.cs:220:13:220:36 | call to method WriteLine | -| Finally.cs:227:9:229:9 | {...} | Finally.cs:224:13:224:38 | call to method WriteLine | +| Finally.cs:224:13:224:39 | After ...; | Finally.cs:224:13:224:38 | After call to method WriteLine | +| Finally.cs:224:31:224:37 | "Catch" | Finally.cs:224:13:224:38 | Before call to method WriteLine | +| Finally.cs:227:9:229:9 | After {...} | Finally.cs:228:13:228:41 | After ...; | +| Finally.cs:227:9:229:9 | {...} | Finally.cs:219:9:221:9 | After {...} | +| Finally.cs:227:9:229:9 | {...} | Finally.cs:223:9:225:9 | After {...} | +| Finally.cs:228:13:228:40 | After call to method WriteLine | Finally.cs:228:13:228:40 | call to method WriteLine | +| Finally.cs:228:13:228:40 | Before call to method WriteLine | Finally.cs:228:13:228:41 | ...; | | Finally.cs:228:13:228:40 | call to method WriteLine | Finally.cs:228:31:228:39 | "Finally" | | Finally.cs:228:13:228:41 | ...; | Finally.cs:227:9:229:9 | {...} | -| Finally.cs:228:31:228:39 | "Finally" | Finally.cs:228:13:228:41 | ...; | +| Finally.cs:228:13:228:41 | After ...; | Finally.cs:228:13:228:40 | After call to method WriteLine | +| Finally.cs:228:31:228:39 | "Finally" | Finally.cs:228:13:228:40 | Before call to method WriteLine | +| Finally.cs:230:9:230:33 | After call to method WriteLine | Finally.cs:230:9:230:33 | call to method WriteLine | +| Finally.cs:230:9:230:33 | Before call to method WriteLine | Finally.cs:230:9:230:34 | ...; | | Finally.cs:230:9:230:33 | call to method WriteLine | Finally.cs:230:27:230:32 | "Done" | -| Finally.cs:230:9:230:34 | ...; | Finally.cs:228:13:228:40 | call to method WriteLine | -| Finally.cs:230:27:230:32 | "Done" | Finally.cs:230:9:230:34 | ...; | -| Finally.cs:233:10:233:12 | exit M12 (normal) | Finally.cs:260:9:260:33 | call to method WriteLine | -| Finally.cs:234:5:261:5 | {...} | Finally.cs:233:10:233:12 | enter M12 | +| Finally.cs:230:9:230:34 | ...; | Finally.cs:218:9:229:9 | After try {...} ... | +| Finally.cs:230:9:230:34 | After ...; | Finally.cs:230:9:230:33 | After call to method WriteLine | +| Finally.cs:230:27:230:32 | "Done" | Finally.cs:230:9:230:33 | Before call to method WriteLine | +| Finally.cs:233:10:233:12 | Normal Exit | Finally.cs:234:5:261:5 | After {...} | +| Finally.cs:233:19:233:20 | b1 | Finally.cs:233:10:233:12 | Entry | +| Finally.cs:233:28:233:29 | b2 | Finally.cs:233:19:233:20 | b1 | +| Finally.cs:234:5:261:5 | After {...} | Finally.cs:260:9:260:34 | After ...; | +| Finally.cs:234:5:261:5 | {...} | Finally.cs:233:28:233:29 | b2 | +| Finally.cs:235:9:259:9 | After try {...} ... | Finally.cs:257:9:259:9 | After {...} | | Finally.cs:235:9:259:9 | try {...} ... | Finally.cs:234:5:261:5 | {...} | +| Finally.cs:236:9:255:9 | After {...} | Finally.cs:254:13:254:45 | After ...; | | Finally.cs:236:9:255:9 | {...} | Finally.cs:235:9:259:9 | try {...} ... | | Finally.cs:237:13:253:13 | try {...} ... | Finally.cs:236:9:255:9 | {...} | +| Finally.cs:238:13:241:13 | After {...} | Finally.cs:239:17:240:43 | After if (...) ... | | Finally.cs:238:13:241:13 | {...} | Finally.cs:237:13:253:13 | try {...} ... | +| Finally.cs:239:17:240:43 | After if (...) ... | Finally.cs:239:21:239:22 | After access to parameter b1 [false] | | Finally.cs:239:17:240:43 | if (...) ... | Finally.cs:238:13:241:13 | {...} | | Finally.cs:239:21:239:22 | access to parameter b1 | Finally.cs:239:17:240:43 | if (...) ... | -| Finally.cs:243:13:253:13 | {...} | Finally.cs:239:21:239:22 | access to parameter b1 | +| Finally.cs:240:21:240:43 | Before throw ...; | Finally.cs:239:21:239:22 | After access to parameter b1 [true] | +| Finally.cs:240:21:240:43 | throw ...; | Finally.cs:240:27:240:42 | After object creation of type ExceptionA | +| Finally.cs:240:27:240:42 | Before object creation of type ExceptionA | Finally.cs:240:21:240:43 | Before throw ...; | +| Finally.cs:240:27:240:42 | object creation of type ExceptionA | Finally.cs:240:27:240:42 | Before object creation of type ExceptionA | +| Finally.cs:243:13:253:13 | After {...} | Finally.cs:244:17:252:17 | After try {...} ... | +| Finally.cs:243:13:253:13 | {...} | Finally.cs:238:13:241:13 | After {...} | | Finally.cs:243:13:253:13 | {...} | Finally.cs:240:21:240:43 | throw ...; | | Finally.cs:243:13:253:13 | {...} | Finally.cs:240:27:240:42 | object creation of type ExceptionA | | Finally.cs:244:17:252:17 | try {...} ... | Finally.cs:243:13:253:13 | {...} | +| Finally.cs:245:17:248:17 | After {...} | Finally.cs:246:21:247:47 | After if (...) ... | | Finally.cs:245:17:248:17 | {...} | Finally.cs:244:17:252:17 | try {...} ... | +| Finally.cs:246:21:247:47 | After if (...) ... | Finally.cs:246:25:246:26 | After access to parameter b2 [false] | | Finally.cs:246:21:247:47 | if (...) ... | Finally.cs:245:17:248:17 | {...} | | Finally.cs:246:25:246:26 | access to parameter b2 | Finally.cs:246:21:247:47 | if (...) ... | -| Finally.cs:250:17:252:17 | {...} | Finally.cs:246:25:246:26 | access to parameter b2 | +| Finally.cs:247:25:247:47 | Before throw ...; | Finally.cs:246:25:246:26 | After access to parameter b2 [true] | +| Finally.cs:247:25:247:47 | throw ...; | Finally.cs:247:31:247:46 | After object creation of type ExceptionA | +| Finally.cs:247:31:247:46 | Before object creation of type ExceptionA | Finally.cs:247:25:247:47 | Before throw ...; | +| Finally.cs:247:31:247:46 | object creation of type ExceptionA | Finally.cs:247:31:247:46 | Before object creation of type ExceptionA | +| Finally.cs:250:17:252:17 | After {...} | Finally.cs:251:21:251:55 | After ...; | +| Finally.cs:250:17:252:17 | {...} | Finally.cs:245:17:248:17 | After {...} | | Finally.cs:250:17:252:17 | {...} | Finally.cs:247:25:247:47 | throw ...; | | Finally.cs:250:17:252:17 | {...} | Finally.cs:247:31:247:46 | object creation of type ExceptionA | +| Finally.cs:251:21:251:54 | After call to method WriteLine | Finally.cs:251:21:251:54 | call to method WriteLine | +| Finally.cs:251:21:251:54 | Before call to method WriteLine | Finally.cs:251:21:251:55 | ...; | | Finally.cs:251:21:251:54 | call to method WriteLine | Finally.cs:251:39:251:53 | "Inner finally" | | Finally.cs:251:21:251:55 | ...; | Finally.cs:250:17:252:17 | {...} | -| Finally.cs:251:39:251:53 | "Inner finally" | Finally.cs:251:21:251:55 | ...; | +| Finally.cs:251:21:251:55 | After ...; | Finally.cs:251:21:251:54 | After call to method WriteLine | +| Finally.cs:251:39:251:53 | "Inner finally" | Finally.cs:251:21:251:54 | Before call to method WriteLine | +| Finally.cs:254:13:254:44 | Before call to method WriteLine | Finally.cs:254:13:254:45 | ...; | | Finally.cs:254:13:254:44 | call to method WriteLine | Finally.cs:254:31:254:43 | "Mid finally" | -| Finally.cs:254:31:254:43 | "Mid finally" | Finally.cs:254:13:254:45 | ...; | -| Finally.cs:257:9:259:9 | {...} | Finally.cs:251:21:251:54 | call to method WriteLine | +| Finally.cs:254:13:254:45 | ...; | Finally.cs:237:13:253:13 | After try {...} ... | +| Finally.cs:254:13:254:45 | After ...; | Finally.cs:254:13:254:44 | After call to method WriteLine | +| Finally.cs:254:31:254:43 | "Mid finally" | Finally.cs:254:13:254:44 | Before call to method WriteLine | +| Finally.cs:257:9:259:9 | After {...} | Finally.cs:258:13:258:47 | After ...; | +| Finally.cs:257:9:259:9 | {...} | Finally.cs:236:9:255:9 | After {...} | +| Finally.cs:257:9:259:9 | {...} | Finally.cs:243:13:253:13 | After {...} | +| Finally.cs:257:9:259:9 | {...} | Finally.cs:250:17:252:17 | After {...} | | Finally.cs:257:9:259:9 | {...} | Finally.cs:254:13:254:44 | call to method WriteLine | +| Finally.cs:258:13:258:46 | After call to method WriteLine | Finally.cs:258:13:258:46 | call to method WriteLine | +| Finally.cs:258:13:258:46 | Before call to method WriteLine | Finally.cs:258:13:258:47 | ...; | | Finally.cs:258:13:258:46 | call to method WriteLine | Finally.cs:258:31:258:45 | "Outer finally" | | Finally.cs:258:13:258:47 | ...; | Finally.cs:257:9:259:9 | {...} | -| Finally.cs:258:31:258:45 | "Outer finally" | Finally.cs:258:13:258:47 | ...; | +| Finally.cs:258:13:258:47 | After ...; | Finally.cs:258:13:258:46 | After call to method WriteLine | +| Finally.cs:258:31:258:45 | "Outer finally" | Finally.cs:258:13:258:46 | Before call to method WriteLine | +| Finally.cs:260:9:260:33 | After call to method WriteLine | Finally.cs:260:9:260:33 | call to method WriteLine | +| Finally.cs:260:9:260:33 | Before call to method WriteLine | Finally.cs:260:9:260:34 | ...; | | Finally.cs:260:9:260:33 | call to method WriteLine | Finally.cs:260:27:260:32 | "Done" | -| Finally.cs:260:9:260:34 | ...; | Finally.cs:258:13:258:46 | call to method WriteLine | -| Finally.cs:260:27:260:32 | "Done" | Finally.cs:260:9:260:34 | ...; | -| Finally.cs:263:10:263:12 | exit M13 (normal) | Finally.cs:272:13:272:18 | ... += ... | -| Finally.cs:264:5:274:5 | {...} | Finally.cs:263:10:263:12 | enter M13 | +| Finally.cs:260:9:260:34 | ...; | Finally.cs:235:9:259:9 | After try {...} ... | +| Finally.cs:260:9:260:34 | After ...; | Finally.cs:260:9:260:33 | After call to method WriteLine | +| Finally.cs:260:27:260:32 | "Done" | Finally.cs:260:9:260:33 | Before call to method WriteLine | +| Finally.cs:263:10:263:12 | Normal Exit | Finally.cs:264:5:274:5 | After {...} | +| Finally.cs:263:18:263:18 | i | Finally.cs:263:10:263:12 | Entry | +| Finally.cs:264:5:274:5 | After {...} | Finally.cs:265:9:273:9 | After try {...} ... | +| Finally.cs:264:5:274:5 | {...} | Finally.cs:263:18:263:18 | i | +| Finally.cs:265:9:273:9 | After try {...} ... | Finally.cs:270:9:273:9 | After {...} | | Finally.cs:265:9:273:9 | try {...} ... | Finally.cs:264:5:274:5 | {...} | +| Finally.cs:266:9:268:9 | After {...} | Finally.cs:267:13:267:35 | After ...; | | Finally.cs:266:9:268:9 | {...} | Finally.cs:265:9:273:9 | try {...} ... | +| Finally.cs:267:13:267:34 | Before call to method WriteLine | Finally.cs:267:13:267:35 | ...; | | Finally.cs:267:13:267:34 | call to method WriteLine | Finally.cs:267:31:267:33 | "1" | | Finally.cs:267:13:267:35 | ...; | Finally.cs:266:9:268:9 | {...} | -| Finally.cs:267:31:267:33 | "1" | Finally.cs:267:13:267:35 | ...; | +| Finally.cs:267:13:267:35 | After ...; | Finally.cs:267:13:267:34 | After call to method WriteLine | +| Finally.cs:267:31:267:33 | "1" | Finally.cs:267:13:267:34 | Before call to method WriteLine | +| Finally.cs:270:9:273:9 | After {...} | Finally.cs:272:13:272:19 | After ...; | +| Finally.cs:270:9:273:9 | {...} | Finally.cs:266:9:268:9 | After {...} | | Finally.cs:270:9:273:9 | {...} | Finally.cs:267:13:267:34 | call to method WriteLine | +| Finally.cs:271:13:271:34 | After call to method WriteLine | Finally.cs:271:13:271:34 | call to method WriteLine | +| Finally.cs:271:13:271:34 | Before call to method WriteLine | Finally.cs:271:13:271:35 | ...; | | Finally.cs:271:13:271:34 | call to method WriteLine | Finally.cs:271:31:271:33 | "3" | | Finally.cs:271:13:271:35 | ...; | Finally.cs:270:9:273:9 | {...} | -| Finally.cs:271:31:271:33 | "3" | Finally.cs:271:13:271:35 | ...; | -| Finally.cs:272:13:272:13 | access to parameter i | Finally.cs:272:13:272:19 | ...; | +| Finally.cs:271:13:271:35 | After ...; | Finally.cs:271:13:271:34 | After call to method WriteLine | +| Finally.cs:271:31:271:33 | "3" | Finally.cs:271:13:271:34 | Before call to method WriteLine | +| Finally.cs:272:13:272:13 | access to parameter i | Finally.cs:272:13:272:18 | Before ... += ... | | Finally.cs:272:13:272:18 | ... += ... | Finally.cs:272:18:272:18 | 3 | -| Finally.cs:272:13:272:19 | ...; | Finally.cs:271:13:271:34 | call to method WriteLine | +| Finally.cs:272:13:272:18 | After ... += ... | Finally.cs:272:13:272:18 | ... += ... | +| Finally.cs:272:13:272:18 | Before ... += ... | Finally.cs:272:13:272:19 | ...; | +| Finally.cs:272:13:272:19 | ...; | Finally.cs:271:13:271:35 | After ...; | +| Finally.cs:272:13:272:19 | After ...; | Finally.cs:272:13:272:18 | After ... += ... | | Finally.cs:272:18:272:18 | 3 | Finally.cs:272:13:272:13 | access to parameter i | -| Foreach.cs:4:7:4:13 | call to constructor Object | Foreach.cs:4:7:4:13 | call to method | +| Foreach.cs:4:7:4:13 | After call to constructor Object | Foreach.cs:4:7:4:13 | call to constructor Object | +| Foreach.cs:4:7:4:13 | After call to method | Foreach.cs:4:7:4:13 | call to method | +| Foreach.cs:4:7:4:13 | Before call to constructor Object | Foreach.cs:4:7:4:13 | After call to method | +| Foreach.cs:4:7:4:13 | Before call to method | Foreach.cs:4:7:4:13 | Entry | +| Foreach.cs:4:7:4:13 | Exit | Foreach.cs:4:7:4:13 | Normal Exit | +| Foreach.cs:4:7:4:13 | Normal Exit | Foreach.cs:4:7:4:13 | {...} | +| Foreach.cs:4:7:4:13 | call to constructor Object | Foreach.cs:4:7:4:13 | Before call to constructor Object | | Foreach.cs:4:7:4:13 | call to method | Foreach.cs:4:7:4:13 | this access | -| Foreach.cs:4:7:4:13 | exit Foreach | Foreach.cs:4:7:4:13 | exit Foreach (normal) | -| Foreach.cs:4:7:4:13 | exit Foreach (normal) | Foreach.cs:4:7:4:13 | {...} | -| Foreach.cs:4:7:4:13 | this access | Foreach.cs:4:7:4:13 | enter Foreach | -| Foreach.cs:4:7:4:13 | {...} | Foreach.cs:4:7:4:13 | call to constructor Object | -| Foreach.cs:6:10:6:11 | exit M1 | Foreach.cs:6:10:6:11 | exit M1 (normal) | -| Foreach.cs:6:10:6:11 | exit M1 (normal) | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | -| Foreach.cs:7:5:10:5 | {...} | Foreach.cs:6:10:6:11 | enter M1 | -| Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:29:8:32 | access to parameter args | -| Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:9:13:9:13 | ; | -| Foreach.cs:8:29:8:32 | access to parameter args | Foreach.cs:7:5:10:5 | {...} | +| Foreach.cs:4:7:4:13 | this access | Foreach.cs:4:7:4:13 | Before call to method | +| Foreach.cs:4:7:4:13 | {...} | Foreach.cs:4:7:4:13 | After call to constructor Object | +| Foreach.cs:6:10:6:11 | Exit | Foreach.cs:6:10:6:11 | Normal Exit | +| Foreach.cs:6:10:6:11 | Normal Exit | Foreach.cs:7:5:10:5 | After {...} | +| Foreach.cs:6:22:6:25 | args | Foreach.cs:6:10:6:11 | Entry | +| Foreach.cs:7:5:10:5 | After {...} | Foreach.cs:8:9:9:13 | After foreach (... ... in ...) ... | +| Foreach.cs:7:5:10:5 | {...} | Foreach.cs:6:22:6:25 | args | +| Foreach.cs:8:9:9:13 | After foreach (... ... in ...) ... | Foreach.cs:8:9:9:13 | [LoopHeader] foreach (... ... in ...) ... | +| Foreach.cs:8:9:9:13 | After foreach (... ... in ...) ... | Foreach.cs:8:29:8:32 | After access to parameter args [empty] | +| Foreach.cs:8:9:9:13 | [LoopHeader] foreach (... ... in ...) ... | Foreach.cs:9:13:9:13 | ; | +| Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:7:5:10:5 | {...} | +| Foreach.cs:8:22:8:24 | String arg | Foreach.cs:8:29:8:32 | After access to parameter args [non-empty] | +| Foreach.cs:8:29:8:32 | access to parameter args | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | | Foreach.cs:9:13:9:13 | ; | Foreach.cs:8:22:8:24 | String arg | -| Foreach.cs:12:10:12:11 | exit M2 | Foreach.cs:12:10:12:11 | exit M2 (normal) | -| Foreach.cs:12:10:12:11 | exit M2 (normal) | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | -| Foreach.cs:13:5:16:5 | {...} | Foreach.cs:12:10:12:11 | enter M2 | -| Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:14:27:14:30 | access to parameter args | -| Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:15:13:15:13 | ; | -| Foreach.cs:14:27:14:30 | access to parameter args | Foreach.cs:13:5:16:5 | {...} | +| Foreach.cs:12:10:12:11 | Exit | Foreach.cs:12:10:12:11 | Normal Exit | +| Foreach.cs:12:10:12:11 | Normal Exit | Foreach.cs:13:5:16:5 | After {...} | +| Foreach.cs:12:22:12:25 | args | Foreach.cs:12:10:12:11 | Entry | +| Foreach.cs:13:5:16:5 | After {...} | Foreach.cs:14:9:15:13 | After foreach (... ... in ...) ... | +| Foreach.cs:13:5:16:5 | {...} | Foreach.cs:12:22:12:25 | args | +| Foreach.cs:14:9:15:13 | After foreach (... ... in ...) ... | Foreach.cs:14:9:15:13 | [LoopHeader] foreach (... ... in ...) ... | +| Foreach.cs:14:9:15:13 | After foreach (... ... in ...) ... | Foreach.cs:14:27:14:30 | After access to parameter args [empty] | +| Foreach.cs:14:9:15:13 | [LoopHeader] foreach (... ... in ...) ... | Foreach.cs:15:13:15:13 | ; | +| Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:13:5:16:5 | {...} | +| Foreach.cs:14:22:14:22 | String _ | Foreach.cs:14:27:14:30 | After access to parameter args [non-empty] | +| Foreach.cs:14:27:14:30 | access to parameter args | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | | Foreach.cs:15:13:15:13 | ; | Foreach.cs:14:22:14:22 | String _ | -| Foreach.cs:18:10:18:11 | exit M3 | Foreach.cs:18:10:18:11 | exit M3 (normal) | -| Foreach.cs:18:10:18:11 | exit M3 (normal) | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | -| Foreach.cs:19:5:22:5 | {...} | Foreach.cs:18:10:18:11 | enter M3 | -| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:27:20:68 | ... ?? ... | -| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:21:11:21:11 | ; | -| Foreach.cs:20:27:20:27 | access to parameter e | Foreach.cs:19:5:22:5 | {...} | -| Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:20:27:20:38 | call to method ToArray | -| Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:20:43:20:68 | call to method Empty | +| Foreach.cs:18:10:18:11 | Exit | Foreach.cs:18:10:18:11 | Normal Exit | +| Foreach.cs:18:10:18:11 | Normal Exit | Foreach.cs:19:5:22:5 | After {...} | +| Foreach.cs:18:33:18:33 | e | Foreach.cs:18:10:18:11 | Entry | +| Foreach.cs:19:5:22:5 | After {...} | Foreach.cs:20:9:21:11 | After foreach (... ... in ...) ... | +| Foreach.cs:19:5:22:5 | {...} | Foreach.cs:18:33:18:33 | e | +| Foreach.cs:20:9:21:11 | After foreach (... ... in ...) ... | Foreach.cs:20:9:21:11 | [LoopHeader] foreach (... ... in ...) ... | +| Foreach.cs:20:9:21:11 | After foreach (... ... in ...) ... | Foreach.cs:20:27:20:68 | After ... ?? ... [empty] | +| Foreach.cs:20:9:21:11 | [LoopHeader] foreach (... ... in ...) ... | Foreach.cs:21:11:21:11 | ; | +| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:19:5:22:5 | {...} | +| Foreach.cs:20:22:20:22 | String x | Foreach.cs:20:27:20:68 | After ... ?? ... [non-empty] | +| Foreach.cs:20:27:20:27 | access to parameter e | Foreach.cs:20:27:20:38 | Before call to method ToArray | +| Foreach.cs:20:27:20:38 | After call to method ToArray [null] | Foreach.cs:20:27:20:27 | After access to parameter e [null] | +| Foreach.cs:20:27:20:38 | Before call to method ToArray | Foreach.cs:20:27:20:68 | ... ?? ... | +| Foreach.cs:20:27:20:38 | call to method ToArray | Foreach.cs:20:27:20:27 | After access to parameter e [non-null] | +| Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | +| Foreach.cs:20:27:20:68 | After ... ?? ... [empty] | Foreach.cs:20:43:20:68 | After call to method Empty [empty] | +| Foreach.cs:20:27:20:68 | After ... ?? ... [non-empty] | Foreach.cs:20:43:20:68 | After call to method Empty [non-empty] | +| Foreach.cs:20:43:20:68 | Before call to method Empty | Foreach.cs:20:27:20:38 | After call to method ToArray [null] | +| Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:20:43:20:68 | Before call to method Empty | | Foreach.cs:21:11:21:11 | ; | Foreach.cs:20:22:20:22 | String x | -| Foreach.cs:24:10:24:11 | exit M4 | Foreach.cs:24:10:24:11 | exit M4 (normal) | -| Foreach.cs:24:10:24:11 | exit M4 (normal) | Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | -| Foreach.cs:25:5:28:5 | {...} | Foreach.cs:24:10:24:11 | enter M4 | -| Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | Foreach.cs:26:36:26:39 | access to parameter args | -| Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | Foreach.cs:27:11:27:11 | ; | +| Foreach.cs:24:10:24:11 | Exit | Foreach.cs:24:10:24:11 | Normal Exit | +| Foreach.cs:24:10:24:11 | Normal Exit | Foreach.cs:25:5:28:5 | After {...} | +| Foreach.cs:24:40:24:43 | args | Foreach.cs:24:10:24:11 | Entry | +| Foreach.cs:25:5:28:5 | After {...} | Foreach.cs:26:9:27:11 | After foreach (... ... in ...) ... | +| Foreach.cs:25:5:28:5 | {...} | Foreach.cs:24:40:24:43 | args | +| Foreach.cs:26:9:27:11 | After foreach (... ... in ...) ... | Foreach.cs:26:9:27:11 | [LoopHeader] foreach (... ... in ...) ... | +| Foreach.cs:26:9:27:11 | After foreach (... ... in ...) ... | Foreach.cs:26:36:26:39 | After access to parameter args [empty] | +| Foreach.cs:26:9:27:11 | [LoopHeader] foreach (... ... in ...) ... | Foreach.cs:27:11:27:11 | ; | +| Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | Foreach.cs:25:5:28:5 | {...} | | Foreach.cs:26:18:26:31 | (..., ...) | Foreach.cs:26:30:26:30 | Int32 y | +| Foreach.cs:26:18:26:31 | After (..., ...) | Foreach.cs:26:18:26:31 | (..., ...) | +| Foreach.cs:26:18:26:31 | Before (..., ...) | Foreach.cs:26:36:26:39 | After access to parameter args [non-empty] | +| Foreach.cs:26:23:26:23 | String x | Foreach.cs:26:18:26:31 | Before (..., ...) | | Foreach.cs:26:30:26:30 | Int32 y | Foreach.cs:26:23:26:23 | String x | -| Foreach.cs:26:36:26:39 | access to parameter args | Foreach.cs:25:5:28:5 | {...} | -| Foreach.cs:27:11:27:11 | ; | Foreach.cs:26:18:26:31 | (..., ...) | -| Foreach.cs:30:10:30:11 | exit M5 | Foreach.cs:30:10:30:11 | exit M5 (normal) | -| Foreach.cs:30:10:30:11 | exit M5 (normal) | Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | -| Foreach.cs:31:5:34:5 | {...} | Foreach.cs:30:10:30:11 | enter M5 | -| Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | Foreach.cs:32:32:32:35 | access to parameter args | -| Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | Foreach.cs:33:11:33:11 | ; | +| Foreach.cs:26:36:26:39 | access to parameter args | Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | +| Foreach.cs:27:11:27:11 | ; | Foreach.cs:26:18:26:31 | After (..., ...) | +| Foreach.cs:30:10:30:11 | Exit | Foreach.cs:30:10:30:11 | Normal Exit | +| Foreach.cs:30:10:30:11 | Normal Exit | Foreach.cs:31:5:34:5 | After {...} | +| Foreach.cs:30:40:30:43 | args | Foreach.cs:30:10:30:11 | Entry | +| Foreach.cs:31:5:34:5 | After {...} | Foreach.cs:32:9:33:11 | After foreach (... ... in ...) ... | +| Foreach.cs:31:5:34:5 | {...} | Foreach.cs:30:40:30:43 | args | +| Foreach.cs:32:9:33:11 | After foreach (... ... in ...) ... | Foreach.cs:32:9:33:11 | [LoopHeader] foreach (... ... in ...) ... | +| Foreach.cs:32:9:33:11 | After foreach (... ... in ...) ... | Foreach.cs:32:32:32:35 | After access to parameter args [empty] | +| Foreach.cs:32:9:33:11 | [LoopHeader] foreach (... ... in ...) ... | Foreach.cs:33:11:33:11 | ; | +| Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | Foreach.cs:31:5:34:5 | {...} | | Foreach.cs:32:18:32:27 | (..., ...) | Foreach.cs:32:26:32:26 | Int32 y | +| Foreach.cs:32:18:32:27 | After (..., ...) | Foreach.cs:32:18:32:27 | (..., ...) | +| Foreach.cs:32:18:32:27 | Before (..., ...) | Foreach.cs:32:32:32:35 | After access to parameter args [non-empty] | +| Foreach.cs:32:23:32:23 | String x | Foreach.cs:32:18:32:27 | Before (..., ...) | | Foreach.cs:32:26:32:26 | Int32 y | Foreach.cs:32:23:32:23 | String x | -| Foreach.cs:32:32:32:35 | access to parameter args | Foreach.cs:31:5:34:5 | {...} | -| Foreach.cs:33:11:33:11 | ; | Foreach.cs:32:18:32:27 | (..., ...) | -| Foreach.cs:36:10:36:11 | exit M6 | Foreach.cs:36:10:36:11 | exit M6 (normal) | -| Foreach.cs:36:10:36:11 | exit M6 (normal) | Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | -| Foreach.cs:37:5:40:5 | {...} | Foreach.cs:36:10:36:11 | enter M6 | -| Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | Foreach.cs:38:39:38:42 | access to parameter args | -| Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | Foreach.cs:39:11:39:11 | ; | +| Foreach.cs:32:32:32:35 | access to parameter args | Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | +| Foreach.cs:33:11:33:11 | ; | Foreach.cs:32:18:32:27 | After (..., ...) | +| Foreach.cs:36:10:36:11 | Exit | Foreach.cs:36:10:36:11 | Normal Exit | +| Foreach.cs:36:10:36:11 | Normal Exit | Foreach.cs:37:5:40:5 | After {...} | +| Foreach.cs:36:40:36:43 | args | Foreach.cs:36:10:36:11 | Entry | +| Foreach.cs:37:5:40:5 | After {...} | Foreach.cs:38:9:39:11 | After foreach (... ... in ...) ... | +| Foreach.cs:37:5:40:5 | {...} | Foreach.cs:36:40:36:43 | args | +| Foreach.cs:38:9:39:11 | After foreach (... ... in ...) ... | Foreach.cs:38:9:39:11 | [LoopHeader] foreach (... ... in ...) ... | +| Foreach.cs:38:9:39:11 | After foreach (... ... in ...) ... | Foreach.cs:38:39:38:42 | After access to parameter args [empty] | +| Foreach.cs:38:9:39:11 | [LoopHeader] foreach (... ... in ...) ... | Foreach.cs:39:11:39:11 | ; | +| Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | Foreach.cs:37:5:40:5 | {...} | | Foreach.cs:38:18:38:34 | (..., ...) | Foreach.cs:38:33:38:33 | Int32 y | +| Foreach.cs:38:18:38:34 | After (..., ...) | Foreach.cs:38:18:38:34 | (..., ...) | +| Foreach.cs:38:18:38:34 | Before (..., ...) | Foreach.cs:38:39:38:42 | After access to parameter args [non-empty] | +| Foreach.cs:38:26:38:26 | String x | Foreach.cs:38:18:38:34 | Before (..., ...) | | Foreach.cs:38:33:38:33 | Int32 y | Foreach.cs:38:26:38:26 | String x | -| Foreach.cs:38:39:38:42 | access to parameter args | Foreach.cs:37:5:40:5 | {...} | -| Foreach.cs:39:11:39:11 | ; | Foreach.cs:38:18:38:34 | (..., ...) | -| Initializers.cs:3:7:3:18 | exit | Initializers.cs:3:7:3:18 | exit (normal) | -| Initializers.cs:3:7:3:18 | exit (normal) | Initializers.cs:6:25:6:31 | ... = ... | -| Initializers.cs:3:7:3:18 | exit Initializers | Initializers.cs:3:7:3:18 | exit Initializers (normal) | -| Initializers.cs:3:7:3:18 | exit Initializers (normal) | Initializers.cs:3:7:3:18 | {...} | -| Initializers.cs:3:7:3:18 | {...} | Initializers.cs:3:7:3:18 | enter Initializers | -| Initializers.cs:5:9:5:9 | access to field F | Initializers.cs:5:13:5:17 | ... + ... | -| Initializers.cs:5:9:5:9 | this access | Initializers.cs:3:7:3:18 | enter | -| Initializers.cs:5:9:5:17 | ... = ... | Initializers.cs:5:9:5:9 | access to field F | -| Initializers.cs:5:13:5:13 | access to field H | Initializers.cs:5:9:5:9 | this access | +| Foreach.cs:38:39:38:42 | access to parameter args | Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | +| Foreach.cs:39:11:39:11 | ; | Foreach.cs:38:18:38:34 | After (..., ...) | +| Initializers.cs:3:7:3:18 | Exit | Initializers.cs:3:7:3:18 | Normal Exit | +| Initializers.cs:3:7:3:18 | Exit | Initializers.cs:3:7:3:18 | Normal Exit | +| Initializers.cs:3:7:3:18 | Normal Exit | Initializers.cs:3:7:3:18 | {...} | +| Initializers.cs:3:7:3:18 | Normal Exit | Initializers.cs:6:25:6:31 | After ... = ... | +| Initializers.cs:3:7:3:18 | {...} | Initializers.cs:18:16:18:20 | After ... = ... | +| Initializers.cs:5:9:5:9 | After access to field F | Initializers.cs:5:9:5:9 | access to field F | +| Initializers.cs:5:9:5:9 | Before access to field F | Initializers.cs:5:9:5:17 | Before ... = ... | +| Initializers.cs:5:9:5:9 | access to field F | Initializers.cs:5:9:5:9 | this access | +| Initializers.cs:5:9:5:9 | this access | Initializers.cs:5:9:5:9 | Before access to field F | +| Initializers.cs:5:9:5:17 | ... = ... | Initializers.cs:5:13:5:17 | After ... + ... | +| Initializers.cs:5:9:5:17 | After ... = ... | Initializers.cs:5:9:5:17 | ... = ... | +| Initializers.cs:5:9:5:17 | Before ... = ... | Initializers.cs:3:7:3:18 | Entry | +| Initializers.cs:5:13:5:13 | access to field H | Initializers.cs:5:13:5:17 | Before ... + ... | | Initializers.cs:5:13:5:17 | ... + ... | Initializers.cs:5:17:5:17 | 1 | +| Initializers.cs:5:13:5:17 | After ... + ... | Initializers.cs:5:13:5:17 | ... + ... | +| Initializers.cs:5:13:5:17 | Before ... + ... | Initializers.cs:5:9:5:9 | After access to field F | | Initializers.cs:5:17:5:17 | 1 | Initializers.cs:5:13:5:13 | access to field H | -| Initializers.cs:6:9:6:9 | access to property G | Initializers.cs:6:27:6:31 | ... + ... | -| Initializers.cs:6:9:6:9 | this access | Initializers.cs:5:9:5:17 | ... = ... | -| Initializers.cs:6:25:6:31 | ... = ... | Initializers.cs:6:9:6:9 | access to property G | -| Initializers.cs:6:27:6:27 | access to field H | Initializers.cs:6:9:6:9 | this access | +| Initializers.cs:6:9:6:9 | After access to property G | Initializers.cs:6:9:6:9 | access to property G | +| Initializers.cs:6:9:6:9 | Before access to property G | Initializers.cs:6:25:6:31 | Before ... = ... | +| Initializers.cs:6:9:6:9 | access to property G | Initializers.cs:6:9:6:9 | this access | +| Initializers.cs:6:9:6:9 | this access | Initializers.cs:6:9:6:9 | Before access to property G | +| Initializers.cs:6:25:6:31 | ... = ... | Initializers.cs:6:27:6:31 | After ... + ... | +| Initializers.cs:6:25:6:31 | After ... = ... | Initializers.cs:6:25:6:31 | ... = ... | +| Initializers.cs:6:25:6:31 | Before ... = ... | Initializers.cs:5:9:5:17 | After ... = ... | +| Initializers.cs:6:27:6:27 | access to field H | Initializers.cs:6:27:6:31 | Before ... + ... | | Initializers.cs:6:27:6:31 | ... + ... | Initializers.cs:6:31:6:31 | 2 | +| Initializers.cs:6:27:6:31 | After ... + ... | Initializers.cs:6:27:6:31 | ... + ... | +| Initializers.cs:6:27:6:31 | Before ... + ... | Initializers.cs:6:9:6:9 | After access to property G | | Initializers.cs:6:31:6:31 | 2 | Initializers.cs:6:27:6:27 | access to field H | -| Initializers.cs:8:5:8:16 | call to constructor Object | Initializers.cs:8:5:8:16 | call to method | +| Initializers.cs:8:5:8:16 | After call to constructor Object | Initializers.cs:8:5:8:16 | call to constructor Object | +| Initializers.cs:8:5:8:16 | After call to method | Initializers.cs:8:5:8:16 | call to method | +| Initializers.cs:8:5:8:16 | Before call to constructor Object | Initializers.cs:8:5:8:16 | After call to method | +| Initializers.cs:8:5:8:16 | Before call to method | Initializers.cs:8:5:8:16 | Entry | +| Initializers.cs:8:5:8:16 | Exit | Initializers.cs:8:5:8:16 | Normal Exit | +| Initializers.cs:8:5:8:16 | Normal Exit | Initializers.cs:8:20:8:22 | {...} | +| Initializers.cs:8:5:8:16 | call to constructor Object | Initializers.cs:8:5:8:16 | Before call to constructor Object | | Initializers.cs:8:5:8:16 | call to method | Initializers.cs:8:5:8:16 | this access | -| Initializers.cs:8:5:8:16 | exit Initializers | Initializers.cs:8:5:8:16 | exit Initializers (normal) | -| Initializers.cs:8:5:8:16 | exit Initializers (normal) | Initializers.cs:8:20:8:22 | {...} | -| Initializers.cs:8:5:8:16 | this access | Initializers.cs:8:5:8:16 | enter Initializers | -| Initializers.cs:8:20:8:22 | {...} | Initializers.cs:8:5:8:16 | call to constructor Object | -| Initializers.cs:10:5:10:16 | call to constructor Object | Initializers.cs:10:5:10:16 | call to method | +| Initializers.cs:8:5:8:16 | this access | Initializers.cs:8:5:8:16 | Before call to method | +| Initializers.cs:8:20:8:22 | {...} | Initializers.cs:8:5:8:16 | After call to constructor Object | +| Initializers.cs:10:5:10:16 | After call to constructor Object | Initializers.cs:10:5:10:16 | call to constructor Object | +| Initializers.cs:10:5:10:16 | After call to method | Initializers.cs:10:5:10:16 | call to method | +| Initializers.cs:10:5:10:16 | Before call to constructor Object | Initializers.cs:10:5:10:16 | After call to method | +| Initializers.cs:10:5:10:16 | Before call to method | Initializers.cs:10:25:10:25 | s | +| Initializers.cs:10:5:10:16 | Exit | Initializers.cs:10:5:10:16 | Normal Exit | +| Initializers.cs:10:5:10:16 | Normal Exit | Initializers.cs:10:28:10:30 | {...} | +| Initializers.cs:10:5:10:16 | call to constructor Object | Initializers.cs:10:5:10:16 | Before call to constructor Object | | Initializers.cs:10:5:10:16 | call to method | Initializers.cs:10:5:10:16 | this access | -| Initializers.cs:10:5:10:16 | exit Initializers | Initializers.cs:10:5:10:16 | exit Initializers (normal) | -| Initializers.cs:10:5:10:16 | exit Initializers (normal) | Initializers.cs:10:28:10:30 | {...} | -| Initializers.cs:10:5:10:16 | this access | Initializers.cs:10:5:10:16 | enter Initializers | -| Initializers.cs:10:28:10:30 | {...} | Initializers.cs:10:5:10:16 | call to constructor Object | -| Initializers.cs:12:10:12:10 | exit M | Initializers.cs:12:10:12:10 | exit M (normal) | -| Initializers.cs:12:10:12:10 | exit M (normal) | Initializers.cs:15:13:15:63 | Initializers[] iz = ... | -| Initializers.cs:13:5:16:5 | {...} | Initializers.cs:12:10:12:10 | enter M | +| Initializers.cs:10:5:10:16 | this access | Initializers.cs:10:5:10:16 | Before call to method | +| Initializers.cs:10:25:10:25 | s | Initializers.cs:10:5:10:16 | Entry | +| Initializers.cs:10:28:10:30 | {...} | Initializers.cs:10:5:10:16 | After call to constructor Object | +| Initializers.cs:12:10:12:10 | Exit | Initializers.cs:12:10:12:10 | Normal Exit | +| Initializers.cs:12:10:12:10 | Normal Exit | Initializers.cs:13:5:16:5 | After {...} | +| Initializers.cs:13:5:16:5 | After {...} | Initializers.cs:15:9:15:64 | After ... ...; | +| Initializers.cs:13:5:16:5 | {...} | Initializers.cs:12:10:12:10 | Entry | | Initializers.cs:14:9:14:54 | ... ...; | Initializers.cs:13:5:16:5 | {...} | -| Initializers.cs:14:13:14:53 | Initializers i = ... | Initializers.cs:14:38:14:53 | { ..., ... } | +| Initializers.cs:14:9:14:54 | After ... ...; | Initializers.cs:14:13:14:53 | After Initializers i = ... | +| Initializers.cs:14:13:14:13 | access to local variable i | Initializers.cs:14:13:14:53 | Before Initializers i = ... | +| Initializers.cs:14:13:14:53 | After Initializers i = ... | Initializers.cs:14:13:14:53 | Initializers i = ... | +| Initializers.cs:14:13:14:53 | Before Initializers i = ... | Initializers.cs:14:9:14:54 | ... ...; | +| Initializers.cs:14:13:14:53 | Initializers i = ... | Initializers.cs:14:17:14:53 | After object creation of type Initializers | +| Initializers.cs:14:17:14:53 | After object creation of type Initializers | Initializers.cs:14:38:14:53 | After { ..., ... } | +| Initializers.cs:14:17:14:53 | Before object creation of type Initializers | Initializers.cs:14:13:14:13 | access to local variable i | | Initializers.cs:14:17:14:53 | object creation of type Initializers | Initializers.cs:14:34:14:35 | "" | -| Initializers.cs:14:34:14:35 | "" | Initializers.cs:14:9:14:54 | ... ...; | -| Initializers.cs:14:38:14:53 | { ..., ... } | Initializers.cs:14:47:14:51 | ... = ... | -| Initializers.cs:14:40:14:40 | access to field F | Initializers.cs:14:44:14:44 | 0 | -| Initializers.cs:14:40:14:44 | ... = ... | Initializers.cs:14:40:14:40 | access to field F | -| Initializers.cs:14:44:14:44 | 0 | Initializers.cs:14:17:14:53 | object creation of type Initializers | -| Initializers.cs:14:47:14:47 | access to property G | Initializers.cs:14:51:14:51 | 1 | -| Initializers.cs:14:47:14:51 | ... = ... | Initializers.cs:14:47:14:47 | access to property G | -| Initializers.cs:14:51:14:51 | 1 | Initializers.cs:14:40:14:44 | ... = ... | -| Initializers.cs:15:9:15:64 | ... ...; | Initializers.cs:14:13:14:53 | Initializers i = ... | -| Initializers.cs:15:13:15:63 | Initializers[] iz = ... | Initializers.cs:15:37:15:63 | { ..., ... } | -| Initializers.cs:15:18:15:63 | 2 | Initializers.cs:15:9:15:64 | ... ...; | +| Initializers.cs:14:34:14:35 | "" | Initializers.cs:14:17:14:53 | Before object creation of type Initializers | +| Initializers.cs:14:38:14:53 | After { ..., ... } | Initializers.cs:14:38:14:53 | { ..., ... } | +| Initializers.cs:14:38:14:53 | Before { ..., ... } | Initializers.cs:14:17:14:53 | object creation of type Initializers | +| Initializers.cs:14:38:14:53 | { ..., ... } | Initializers.cs:14:47:14:51 | After ... = ... | +| Initializers.cs:14:40:14:40 | access to field F | Initializers.cs:14:40:14:44 | Before ... = ... | +| Initializers.cs:14:40:14:44 | ... = ... | Initializers.cs:14:44:14:44 | 0 | +| Initializers.cs:14:40:14:44 | After ... = ... | Initializers.cs:14:40:14:44 | ... = ... | +| Initializers.cs:14:40:14:44 | Before ... = ... | Initializers.cs:14:38:14:53 | Before { ..., ... } | +| Initializers.cs:14:44:14:44 | 0 | Initializers.cs:14:40:14:40 | access to field F | +| Initializers.cs:14:47:14:47 | After access to property G | Initializers.cs:14:47:14:47 | access to property G | +| Initializers.cs:14:47:14:47 | Before access to property G | Initializers.cs:14:47:14:51 | Before ... = ... | +| Initializers.cs:14:47:14:47 | access to property G | Initializers.cs:14:47:14:47 | Before access to property G | +| Initializers.cs:14:47:14:51 | ... = ... | Initializers.cs:14:51:14:51 | 1 | +| Initializers.cs:14:47:14:51 | After ... = ... | Initializers.cs:14:47:14:51 | ... = ... | +| Initializers.cs:14:47:14:51 | Before ... = ... | Initializers.cs:14:40:14:44 | After ... = ... | +| Initializers.cs:14:51:14:51 | 1 | Initializers.cs:14:47:14:47 | After access to property G | +| Initializers.cs:15:9:15:64 | ... ...; | Initializers.cs:14:9:14:54 | After ... ...; | +| Initializers.cs:15:9:15:64 | After ... ...; | Initializers.cs:15:13:15:63 | After Initializers[] iz = ... | +| Initializers.cs:15:13:15:14 | access to local variable iz | Initializers.cs:15:13:15:63 | Before Initializers[] iz = ... | +| Initializers.cs:15:13:15:63 | After Initializers[] iz = ... | Initializers.cs:15:13:15:63 | Initializers[] iz = ... | +| Initializers.cs:15:13:15:63 | Before Initializers[] iz = ... | Initializers.cs:15:9:15:64 | ... ...; | +| Initializers.cs:15:13:15:63 | Initializers[] iz = ... | Initializers.cs:15:18:15:63 | After array creation of type Initializers[] | +| Initializers.cs:15:18:15:63 | 2 | Initializers.cs:15:37:15:63 | After { ..., ... } | +| Initializers.cs:15:18:15:63 | After array creation of type Initializers[] | Initializers.cs:15:18:15:63 | array creation of type Initializers[] | +| Initializers.cs:15:18:15:63 | Before array creation of type Initializers[] | Initializers.cs:15:13:15:14 | access to local variable iz | | Initializers.cs:15:18:15:63 | array creation of type Initializers[] | Initializers.cs:15:18:15:63 | 2 | -| Initializers.cs:15:37:15:63 | { ..., ... } | Initializers.cs:15:42:15:61 | object creation of type Initializers | -| Initializers.cs:15:39:15:39 | access to local variable i | Initializers.cs:15:18:15:63 | array creation of type Initializers[] | +| Initializers.cs:15:37:15:63 | After { ..., ... } | Initializers.cs:15:37:15:63 | { ..., ... } | +| Initializers.cs:15:37:15:63 | Before { ..., ... } | Initializers.cs:15:18:15:63 | Before array creation of type Initializers[] | +| Initializers.cs:15:37:15:63 | { ..., ... } | Initializers.cs:15:42:15:61 | After object creation of type Initializers | +| Initializers.cs:15:39:15:39 | access to local variable i | Initializers.cs:15:37:15:63 | Before { ..., ... } | +| Initializers.cs:15:42:15:61 | After object creation of type Initializers | Initializers.cs:15:42:15:61 | object creation of type Initializers | +| Initializers.cs:15:42:15:61 | Before object creation of type Initializers | Initializers.cs:15:39:15:39 | access to local variable i | | Initializers.cs:15:42:15:61 | object creation of type Initializers | Initializers.cs:15:59:15:60 | "" | -| Initializers.cs:15:59:15:60 | "" | Initializers.cs:15:39:15:39 | access to local variable i | -| Initializers.cs:18:16:18:16 | access to field H | Initializers.cs:18:20:18:20 | 1 | -| Initializers.cs:18:16:18:16 | exit H | Initializers.cs:18:16:18:16 | exit H (normal) | -| Initializers.cs:18:16:18:16 | exit H (normal) | Initializers.cs:18:16:18:20 | ... = ... | -| Initializers.cs:18:16:18:20 | ... = ... | Initializers.cs:18:16:18:16 | access to field H | -| Initializers.cs:18:20:18:20 | 1 | Initializers.cs:18:16:18:16 | enter H | -| Initializers.cs:20:11:20:23 | call to constructor Object | Initializers.cs:20:11:20:23 | call to method | +| Initializers.cs:15:59:15:60 | "" | Initializers.cs:15:42:15:61 | Before object creation of type Initializers | +| Initializers.cs:18:16:18:16 | access to field H | Initializers.cs:18:16:18:20 | Before ... = ... | +| Initializers.cs:18:16:18:20 | ... = ... | Initializers.cs:18:20:18:20 | 1 | +| Initializers.cs:18:16:18:20 | After ... = ... | Initializers.cs:18:16:18:20 | ... = ... | +| Initializers.cs:18:16:18:20 | Before ... = ... | Initializers.cs:3:7:3:18 | Entry | +| Initializers.cs:18:20:18:20 | 1 | Initializers.cs:18:16:18:16 | access to field H | +| Initializers.cs:20:11:20:23 | After call to constructor Object | Initializers.cs:20:11:20:23 | call to constructor Object | +| Initializers.cs:20:11:20:23 | After call to method | Initializers.cs:20:11:20:23 | call to method | +| Initializers.cs:20:11:20:23 | Before call to constructor Object | Initializers.cs:20:11:20:23 | After call to method | +| Initializers.cs:20:11:20:23 | Before call to method | Initializers.cs:20:11:20:23 | Entry | +| Initializers.cs:20:11:20:23 | Exit | Initializers.cs:20:11:20:23 | Normal Exit | +| Initializers.cs:20:11:20:23 | Exit | Initializers.cs:20:11:20:23 | Normal Exit | +| Initializers.cs:20:11:20:23 | Normal Exit | Initializers.cs:20:11:20:23 | {...} | +| Initializers.cs:20:11:20:23 | Normal Exit | Initializers.cs:23:23:23:27 | After ... = ... | +| Initializers.cs:20:11:20:23 | call to constructor Object | Initializers.cs:20:11:20:23 | Before call to constructor Object | | Initializers.cs:20:11:20:23 | call to method | Initializers.cs:20:11:20:23 | this access | -| Initializers.cs:20:11:20:23 | exit | Initializers.cs:20:11:20:23 | exit (normal) | -| Initializers.cs:20:11:20:23 | exit (normal) | Initializers.cs:23:23:23:27 | ... = ... | -| Initializers.cs:20:11:20:23 | exit NoConstructor | Initializers.cs:20:11:20:23 | exit NoConstructor (normal) | -| Initializers.cs:20:11:20:23 | exit NoConstructor (normal) | Initializers.cs:20:11:20:23 | {...} | -| Initializers.cs:20:11:20:23 | this access | Initializers.cs:20:11:20:23 | enter NoConstructor | -| Initializers.cs:20:11:20:23 | {...} | Initializers.cs:20:11:20:23 | call to constructor Object | -| Initializers.cs:22:23:22:23 | access to field F | Initializers.cs:22:27:22:27 | 0 | -| Initializers.cs:22:23:22:23 | this access | Initializers.cs:20:11:20:23 | enter | -| Initializers.cs:22:23:22:27 | ... = ... | Initializers.cs:22:23:22:23 | access to field F | -| Initializers.cs:22:27:22:27 | 0 | Initializers.cs:22:23:22:23 | this access | -| Initializers.cs:23:23:23:23 | access to field G | Initializers.cs:23:27:23:27 | 1 | -| Initializers.cs:23:23:23:23 | this access | Initializers.cs:22:23:22:27 | ... = ... | -| Initializers.cs:23:23:23:27 | ... = ... | Initializers.cs:23:23:23:23 | access to field G | -| Initializers.cs:23:27:23:27 | 1 | Initializers.cs:23:23:23:23 | this access | -| Initializers.cs:26:11:26:13 | exit | Initializers.cs:26:11:26:13 | exit (normal) | -| Initializers.cs:26:11:26:13 | exit (normal) | Initializers.cs:28:13:28:17 | ... = ... | -| Initializers.cs:28:13:28:13 | access to field H | Initializers.cs:28:17:28:17 | 2 | -| Initializers.cs:28:13:28:13 | this access | Initializers.cs:26:11:26:13 | enter | -| Initializers.cs:28:13:28:17 | ... = ... | Initializers.cs:28:13:28:13 | access to field H | -| Initializers.cs:28:17:28:17 | 2 | Initializers.cs:28:13:28:13 | this access | +| Initializers.cs:20:11:20:23 | this access | Initializers.cs:20:11:20:23 | Before call to method | +| Initializers.cs:20:11:20:23 | {...} | Initializers.cs:20:11:20:23 | After call to constructor Object | +| Initializers.cs:22:23:22:23 | After access to field F | Initializers.cs:22:23:22:23 | access to field F | +| Initializers.cs:22:23:22:23 | Before access to field F | Initializers.cs:22:23:22:27 | Before ... = ... | +| Initializers.cs:22:23:22:23 | access to field F | Initializers.cs:22:23:22:23 | this access | +| Initializers.cs:22:23:22:23 | this access | Initializers.cs:22:23:22:23 | Before access to field F | +| Initializers.cs:22:23:22:27 | ... = ... | Initializers.cs:22:27:22:27 | 0 | +| Initializers.cs:22:23:22:27 | After ... = ... | Initializers.cs:22:23:22:27 | ... = ... | +| Initializers.cs:22:23:22:27 | Before ... = ... | Initializers.cs:20:11:20:23 | Entry | +| Initializers.cs:22:27:22:27 | 0 | Initializers.cs:22:23:22:23 | After access to field F | +| Initializers.cs:23:23:23:23 | After access to field G | Initializers.cs:23:23:23:23 | access to field G | +| Initializers.cs:23:23:23:23 | Before access to field G | Initializers.cs:23:23:23:27 | Before ... = ... | +| Initializers.cs:23:23:23:23 | access to field G | Initializers.cs:23:23:23:23 | this access | +| Initializers.cs:23:23:23:23 | this access | Initializers.cs:23:23:23:23 | Before access to field G | +| Initializers.cs:23:23:23:27 | ... = ... | Initializers.cs:23:27:23:27 | 1 | +| Initializers.cs:23:23:23:27 | After ... = ... | Initializers.cs:23:23:23:27 | ... = ... | +| Initializers.cs:23:23:23:27 | Before ... = ... | Initializers.cs:22:23:22:27 | After ... = ... | +| Initializers.cs:23:27:23:27 | 1 | Initializers.cs:23:23:23:23 | After access to field G | +| Initializers.cs:26:11:26:13 | Exit | Initializers.cs:26:11:26:13 | Normal Exit | +| Initializers.cs:26:11:26:13 | Normal Exit | Initializers.cs:28:13:28:17 | After ... = ... | +| Initializers.cs:28:13:28:13 | After access to field H | Initializers.cs:28:13:28:13 | access to field H | +| Initializers.cs:28:13:28:13 | Before access to field H | Initializers.cs:28:13:28:17 | Before ... = ... | +| Initializers.cs:28:13:28:13 | access to field H | Initializers.cs:28:13:28:13 | this access | +| Initializers.cs:28:13:28:13 | this access | Initializers.cs:28:13:28:13 | Before access to field H | +| Initializers.cs:28:13:28:17 | ... = ... | Initializers.cs:28:17:28:17 | 2 | +| Initializers.cs:28:13:28:17 | After ... = ... | Initializers.cs:28:13:28:17 | ... = ... | +| Initializers.cs:28:13:28:17 | Before ... = ... | Initializers.cs:26:11:26:13 | Entry | +| Initializers.cs:28:17:28:17 | 2 | Initializers.cs:28:13:28:13 | After access to field H | +| Initializers.cs:31:9:31:11 | After call to method | Initializers.cs:31:9:31:11 | call to method | +| Initializers.cs:31:9:31:11 | Before call to method | Initializers.cs:31:9:31:11 | Entry | +| Initializers.cs:31:9:31:11 | Exit | Initializers.cs:31:9:31:11 | Normal Exit | +| Initializers.cs:31:9:31:11 | Normal Exit | Initializers.cs:31:24:31:33 | After {...} | | Initializers.cs:31:9:31:11 | call to method | Initializers.cs:31:9:31:11 | this access | -| Initializers.cs:31:9:31:11 | exit Sub | Initializers.cs:31:9:31:11 | exit Sub (normal) | -| Initializers.cs:31:9:31:11 | exit Sub (normal) | Initializers.cs:31:26:31:30 | ... = ... | -| Initializers.cs:31:9:31:11 | this access | Initializers.cs:31:9:31:11 | enter Sub | -| Initializers.cs:31:17:31:20 | call to constructor NoConstructor | Initializers.cs:31:9:31:11 | call to method | -| Initializers.cs:31:24:31:33 | {...} | Initializers.cs:31:17:31:20 | call to constructor NoConstructor | -| Initializers.cs:31:26:31:26 | access to field I | Initializers.cs:31:30:31:30 | 3 | -| Initializers.cs:31:26:31:26 | this access | Initializers.cs:31:26:31:31 | ...; | -| Initializers.cs:31:26:31:30 | ... = ... | Initializers.cs:31:26:31:26 | access to field I | +| Initializers.cs:31:9:31:11 | this access | Initializers.cs:31:9:31:11 | Before call to method | +| Initializers.cs:31:17:31:20 | After call to constructor NoConstructor | Initializers.cs:31:17:31:20 | call to constructor NoConstructor | +| Initializers.cs:31:17:31:20 | Before call to constructor NoConstructor | Initializers.cs:31:9:31:11 | After call to method | +| Initializers.cs:31:17:31:20 | call to constructor NoConstructor | Initializers.cs:31:17:31:20 | Before call to constructor NoConstructor | +| Initializers.cs:31:24:31:33 | After {...} | Initializers.cs:31:26:31:31 | After ...; | +| Initializers.cs:31:24:31:33 | {...} | Initializers.cs:31:17:31:20 | After call to constructor NoConstructor | +| Initializers.cs:31:26:31:26 | After access to field I | Initializers.cs:31:26:31:26 | access to field I | +| Initializers.cs:31:26:31:26 | Before access to field I | Initializers.cs:31:26:31:30 | Before ... = ... | +| Initializers.cs:31:26:31:26 | access to field I | Initializers.cs:31:26:31:26 | this access | +| Initializers.cs:31:26:31:26 | this access | Initializers.cs:31:26:31:26 | Before access to field I | +| Initializers.cs:31:26:31:30 | ... = ... | Initializers.cs:31:30:31:30 | 3 | +| Initializers.cs:31:26:31:30 | After ... = ... | Initializers.cs:31:26:31:30 | ... = ... | +| Initializers.cs:31:26:31:30 | Before ... = ... | Initializers.cs:31:26:31:31 | ...; | | Initializers.cs:31:26:31:31 | ...; | Initializers.cs:31:24:31:33 | {...} | -| Initializers.cs:31:30:31:30 | 3 | Initializers.cs:31:26:31:26 | this access | -| Initializers.cs:33:9:33:11 | exit Sub | Initializers.cs:33:9:33:11 | exit Sub (normal) | -| Initializers.cs:33:9:33:11 | exit Sub (normal) | Initializers.cs:33:31:33:35 | ... = ... | -| Initializers.cs:33:22:33:25 | call to constructor Sub | Initializers.cs:33:9:33:11 | enter Sub | -| Initializers.cs:33:29:33:38 | {...} | Initializers.cs:33:22:33:25 | call to constructor Sub | -| Initializers.cs:33:31:33:31 | access to field I | Initializers.cs:33:35:33:35 | access to parameter i | -| Initializers.cs:33:31:33:31 | this access | Initializers.cs:33:31:33:36 | ...; | -| Initializers.cs:33:31:33:35 | ... = ... | Initializers.cs:33:31:33:31 | access to field I | +| Initializers.cs:31:26:31:31 | After ...; | Initializers.cs:31:26:31:30 | After ... = ... | +| Initializers.cs:31:30:31:30 | 3 | Initializers.cs:31:26:31:26 | After access to field I | +| Initializers.cs:33:9:33:11 | Exit | Initializers.cs:33:9:33:11 | Normal Exit | +| Initializers.cs:33:9:33:11 | Normal Exit | Initializers.cs:33:29:33:38 | After {...} | +| Initializers.cs:33:17:33:17 | i | Initializers.cs:33:9:33:11 | Entry | +| Initializers.cs:33:22:33:25 | After call to constructor Sub | Initializers.cs:33:22:33:25 | call to constructor Sub | +| Initializers.cs:33:22:33:25 | Before call to constructor Sub | Initializers.cs:33:17:33:17 | i | +| Initializers.cs:33:22:33:25 | call to constructor Sub | Initializers.cs:33:22:33:25 | Before call to constructor Sub | +| Initializers.cs:33:29:33:38 | After {...} | Initializers.cs:33:31:33:36 | After ...; | +| Initializers.cs:33:29:33:38 | {...} | Initializers.cs:33:22:33:25 | After call to constructor Sub | +| Initializers.cs:33:31:33:31 | After access to field I | Initializers.cs:33:31:33:31 | access to field I | +| Initializers.cs:33:31:33:31 | Before access to field I | Initializers.cs:33:31:33:35 | Before ... = ... | +| Initializers.cs:33:31:33:31 | access to field I | Initializers.cs:33:31:33:31 | this access | +| Initializers.cs:33:31:33:31 | this access | Initializers.cs:33:31:33:31 | Before access to field I | +| Initializers.cs:33:31:33:35 | ... = ... | Initializers.cs:33:35:33:35 | access to parameter i | +| Initializers.cs:33:31:33:35 | After ... = ... | Initializers.cs:33:31:33:35 | ... = ... | +| Initializers.cs:33:31:33:35 | Before ... = ... | Initializers.cs:33:31:33:36 | ...; | | Initializers.cs:33:31:33:36 | ...; | Initializers.cs:33:29:33:38 | {...} | -| Initializers.cs:33:35:33:35 | access to parameter i | Initializers.cs:33:31:33:31 | this access | -| Initializers.cs:35:9:35:11 | call to constructor NoConstructor | Initializers.cs:35:9:35:11 | call to method | +| Initializers.cs:33:31:33:36 | After ...; | Initializers.cs:33:31:33:35 | After ... = ... | +| Initializers.cs:33:35:33:35 | access to parameter i | Initializers.cs:33:31:33:31 | After access to field I | +| Initializers.cs:35:9:35:11 | After call to constructor NoConstructor | Initializers.cs:35:9:35:11 | call to constructor NoConstructor | +| Initializers.cs:35:9:35:11 | After call to method | Initializers.cs:35:9:35:11 | call to method | +| Initializers.cs:35:9:35:11 | Before call to constructor NoConstructor | Initializers.cs:35:9:35:11 | After call to method | +| Initializers.cs:35:9:35:11 | Before call to method | Initializers.cs:35:24:35:24 | j | +| Initializers.cs:35:9:35:11 | Exit | Initializers.cs:35:9:35:11 | Normal Exit | +| Initializers.cs:35:9:35:11 | Normal Exit | Initializers.cs:35:27:35:40 | After {...} | +| Initializers.cs:35:9:35:11 | call to constructor NoConstructor | Initializers.cs:35:9:35:11 | Before call to constructor NoConstructor | | Initializers.cs:35:9:35:11 | call to method | Initializers.cs:35:9:35:11 | this access | -| Initializers.cs:35:9:35:11 | exit Sub | Initializers.cs:35:9:35:11 | exit Sub (normal) | -| Initializers.cs:35:9:35:11 | exit Sub (normal) | Initializers.cs:35:29:35:37 | ... = ... | -| Initializers.cs:35:9:35:11 | this access | Initializers.cs:35:9:35:11 | enter Sub | -| Initializers.cs:35:27:35:40 | {...} | Initializers.cs:35:9:35:11 | call to constructor NoConstructor | -| Initializers.cs:35:29:35:29 | access to field I | Initializers.cs:35:33:35:37 | ... + ... | -| Initializers.cs:35:29:35:29 | this access | Initializers.cs:35:29:35:38 | ...; | -| Initializers.cs:35:29:35:37 | ... = ... | Initializers.cs:35:29:35:29 | access to field I | +| Initializers.cs:35:9:35:11 | this access | Initializers.cs:35:9:35:11 | Before call to method | +| Initializers.cs:35:17:35:17 | i | Initializers.cs:35:9:35:11 | Entry | +| Initializers.cs:35:24:35:24 | j | Initializers.cs:35:17:35:17 | i | +| Initializers.cs:35:27:35:40 | After {...} | Initializers.cs:35:29:35:38 | After ...; | +| Initializers.cs:35:27:35:40 | {...} | Initializers.cs:35:9:35:11 | After call to constructor NoConstructor | +| Initializers.cs:35:29:35:29 | After access to field I | Initializers.cs:35:29:35:29 | access to field I | +| Initializers.cs:35:29:35:29 | Before access to field I | Initializers.cs:35:29:35:37 | Before ... = ... | +| Initializers.cs:35:29:35:29 | access to field I | Initializers.cs:35:29:35:29 | this access | +| Initializers.cs:35:29:35:29 | this access | Initializers.cs:35:29:35:29 | Before access to field I | +| Initializers.cs:35:29:35:37 | ... = ... | Initializers.cs:35:33:35:37 | After ... + ... | +| Initializers.cs:35:29:35:37 | After ... = ... | Initializers.cs:35:29:35:37 | ... = ... | +| Initializers.cs:35:29:35:37 | Before ... = ... | Initializers.cs:35:29:35:38 | ...; | | Initializers.cs:35:29:35:38 | ...; | Initializers.cs:35:27:35:40 | {...} | -| Initializers.cs:35:33:35:33 | access to parameter i | Initializers.cs:35:29:35:29 | this access | +| Initializers.cs:35:29:35:38 | After ...; | Initializers.cs:35:29:35:37 | After ... = ... | +| Initializers.cs:35:33:35:33 | access to parameter i | Initializers.cs:35:33:35:37 | Before ... + ... | | Initializers.cs:35:33:35:37 | ... + ... | Initializers.cs:35:37:35:37 | access to parameter j | +| Initializers.cs:35:33:35:37 | After ... + ... | Initializers.cs:35:33:35:37 | ... + ... | +| Initializers.cs:35:33:35:37 | Before ... + ... | Initializers.cs:35:29:35:29 | After access to field I | | Initializers.cs:35:37:35:37 | access to parameter j | Initializers.cs:35:33:35:33 | access to parameter i | -| Initializers.cs:39:7:39:23 | call to constructor Object | Initializers.cs:39:7:39:23 | call to method | +| Initializers.cs:39:7:39:23 | After call to constructor Object | Initializers.cs:39:7:39:23 | call to constructor Object | +| Initializers.cs:39:7:39:23 | After call to method | Initializers.cs:39:7:39:23 | call to method | +| Initializers.cs:39:7:39:23 | Before call to constructor Object | Initializers.cs:39:7:39:23 | After call to method | +| Initializers.cs:39:7:39:23 | Before call to method | Initializers.cs:39:7:39:23 | Entry | +| Initializers.cs:39:7:39:23 | Exit | Initializers.cs:39:7:39:23 | Normal Exit | +| Initializers.cs:39:7:39:23 | Normal Exit | Initializers.cs:39:7:39:23 | {...} | +| Initializers.cs:39:7:39:23 | call to constructor Object | Initializers.cs:39:7:39:23 | Before call to constructor Object | | Initializers.cs:39:7:39:23 | call to method | Initializers.cs:39:7:39:23 | this access | -| Initializers.cs:39:7:39:23 | exit IndexInitializers | Initializers.cs:39:7:39:23 | exit IndexInitializers (normal) | -| Initializers.cs:39:7:39:23 | exit IndexInitializers (normal) | Initializers.cs:39:7:39:23 | {...} | -| Initializers.cs:39:7:39:23 | this access | Initializers.cs:39:7:39:23 | enter IndexInitializers | -| Initializers.cs:39:7:39:23 | {...} | Initializers.cs:39:7:39:23 | call to constructor Object | -| Initializers.cs:41:11:41:18 | call to constructor Object | Initializers.cs:41:11:41:18 | call to method | +| Initializers.cs:39:7:39:23 | this access | Initializers.cs:39:7:39:23 | Before call to method | +| Initializers.cs:39:7:39:23 | {...} | Initializers.cs:39:7:39:23 | After call to constructor Object | +| Initializers.cs:41:11:41:18 | After call to constructor Object | Initializers.cs:41:11:41:18 | call to constructor Object | +| Initializers.cs:41:11:41:18 | After call to method | Initializers.cs:41:11:41:18 | call to method | +| Initializers.cs:41:11:41:18 | Before call to constructor Object | Initializers.cs:41:11:41:18 | After call to method | +| Initializers.cs:41:11:41:18 | Before call to method | Initializers.cs:41:11:41:18 | Entry | +| Initializers.cs:41:11:41:18 | Exit | Initializers.cs:41:11:41:18 | Normal Exit | +| Initializers.cs:41:11:41:18 | Normal Exit | Initializers.cs:41:11:41:18 | {...} | +| Initializers.cs:41:11:41:18 | call to constructor Object | Initializers.cs:41:11:41:18 | Before call to constructor Object | | Initializers.cs:41:11:41:18 | call to method | Initializers.cs:41:11:41:18 | this access | -| Initializers.cs:41:11:41:18 | exit Compound | Initializers.cs:41:11:41:18 | exit Compound (normal) | -| Initializers.cs:41:11:41:18 | exit Compound (normal) | Initializers.cs:41:11:41:18 | {...} | -| Initializers.cs:41:11:41:18 | this access | Initializers.cs:41:11:41:18 | enter Compound | -| Initializers.cs:41:11:41:18 | {...} | Initializers.cs:41:11:41:18 | call to constructor Object | -| Initializers.cs:51:10:51:13 | exit Test | Initializers.cs:51:10:51:13 | exit Test (normal) | -| Initializers.cs:51:10:51:13 | exit Test (normal) | Initializers.cs:57:13:65:9 | Compound compound = ... | -| Initializers.cs:52:5:66:5 | {...} | Initializers.cs:51:10:51:13 | enter Test | +| Initializers.cs:41:11:41:18 | this access | Initializers.cs:41:11:41:18 | Before call to method | +| Initializers.cs:41:11:41:18 | {...} | Initializers.cs:41:11:41:18 | After call to constructor Object | +| Initializers.cs:51:10:51:13 | Exit | Initializers.cs:51:10:51:13 | Normal Exit | +| Initializers.cs:51:10:51:13 | Normal Exit | Initializers.cs:52:5:66:5 | After {...} | +| Initializers.cs:51:19:51:19 | i | Initializers.cs:51:10:51:13 | Entry | +| Initializers.cs:52:5:66:5 | After {...} | Initializers.cs:57:9:65:10 | After ... ...; | +| Initializers.cs:52:5:66:5 | {...} | Initializers.cs:51:19:51:19 | i | | Initializers.cs:54:9:54:96 | ... ...; | Initializers.cs:52:5:66:5 | {...} | -| Initializers.cs:54:13:54:95 | Dictionary dict = ... | Initializers.cs:54:50:54:95 | { ..., ... } | -| Initializers.cs:54:20:54:95 | object creation of type Dictionary | Initializers.cs:54:9:54:96 | ... ...; | -| Initializers.cs:54:50:54:95 | { ..., ... } | Initializers.cs:54:79:54:93 | ... = ... | -| Initializers.cs:54:52:54:54 | access to indexer | Initializers.cs:54:58:54:63 | "Zero" | -| Initializers.cs:54:52:54:63 | ... = ... | Initializers.cs:54:52:54:54 | access to indexer | -| Initializers.cs:54:53:54:53 | 0 | Initializers.cs:54:20:54:95 | object creation of type Dictionary | -| Initializers.cs:54:58:54:63 | "Zero" | Initializers.cs:54:53:54:53 | 0 | -| Initializers.cs:54:66:54:68 | access to indexer | Initializers.cs:54:72:54:76 | "One" | -| Initializers.cs:54:66:54:76 | ... = ... | Initializers.cs:54:66:54:68 | access to indexer | -| Initializers.cs:54:67:54:67 | 1 | Initializers.cs:54:52:54:63 | ... = ... | -| Initializers.cs:54:72:54:76 | "One" | Initializers.cs:54:67:54:67 | 1 | -| Initializers.cs:54:79:54:85 | access to indexer | Initializers.cs:54:89:54:93 | "Two" | -| Initializers.cs:54:79:54:93 | ... = ... | Initializers.cs:54:79:54:85 | access to indexer | -| Initializers.cs:54:80:54:80 | access to parameter i | Initializers.cs:54:66:54:76 | ... = ... | +| Initializers.cs:54:9:54:96 | After ... ...; | Initializers.cs:54:13:54:95 | After Dictionary dict = ... | +| Initializers.cs:54:13:54:16 | access to local variable dict | Initializers.cs:54:13:54:95 | Before Dictionary dict = ... | +| Initializers.cs:54:13:54:95 | After Dictionary dict = ... | Initializers.cs:54:13:54:95 | Dictionary dict = ... | +| Initializers.cs:54:13:54:95 | Before Dictionary dict = ... | Initializers.cs:54:9:54:96 | ... ...; | +| Initializers.cs:54:13:54:95 | Dictionary dict = ... | Initializers.cs:54:20:54:95 | After object creation of type Dictionary | +| Initializers.cs:54:20:54:95 | After object creation of type Dictionary | Initializers.cs:54:50:54:95 | After { ..., ... } | +| Initializers.cs:54:20:54:95 | Before object creation of type Dictionary | Initializers.cs:54:13:54:16 | access to local variable dict | +| Initializers.cs:54:20:54:95 | object creation of type Dictionary | Initializers.cs:54:20:54:95 | Before object creation of type Dictionary | +| Initializers.cs:54:50:54:95 | After { ..., ... } | Initializers.cs:54:50:54:95 | { ..., ... } | +| Initializers.cs:54:50:54:95 | Before { ..., ... } | Initializers.cs:54:20:54:95 | object creation of type Dictionary | +| Initializers.cs:54:50:54:95 | { ..., ... } | Initializers.cs:54:79:54:93 | After ... = ... | +| Initializers.cs:54:52:54:54 | After access to indexer | Initializers.cs:54:52:54:54 | access to indexer | +| Initializers.cs:54:52:54:54 | Before access to indexer | Initializers.cs:54:52:54:63 | Before ... = ... | +| Initializers.cs:54:52:54:54 | access to indexer | Initializers.cs:54:53:54:53 | 0 | +| Initializers.cs:54:52:54:63 | ... = ... | Initializers.cs:54:58:54:63 | "Zero" | +| Initializers.cs:54:52:54:63 | After ... = ... | Initializers.cs:54:52:54:63 | ... = ... | +| Initializers.cs:54:52:54:63 | Before ... = ... | Initializers.cs:54:50:54:95 | Before { ..., ... } | +| Initializers.cs:54:53:54:53 | 0 | Initializers.cs:54:52:54:54 | Before access to indexer | +| Initializers.cs:54:58:54:63 | "Zero" | Initializers.cs:54:52:54:54 | After access to indexer | +| Initializers.cs:54:66:54:68 | After access to indexer | Initializers.cs:54:66:54:68 | access to indexer | +| Initializers.cs:54:66:54:68 | Before access to indexer | Initializers.cs:54:66:54:76 | Before ... = ... | +| Initializers.cs:54:66:54:68 | access to indexer | Initializers.cs:54:67:54:67 | 1 | +| Initializers.cs:54:66:54:76 | ... = ... | Initializers.cs:54:72:54:76 | "One" | +| Initializers.cs:54:66:54:76 | After ... = ... | Initializers.cs:54:66:54:76 | ... = ... | +| Initializers.cs:54:66:54:76 | Before ... = ... | Initializers.cs:54:52:54:63 | After ... = ... | +| Initializers.cs:54:67:54:67 | 1 | Initializers.cs:54:66:54:68 | Before access to indexer | +| Initializers.cs:54:72:54:76 | "One" | Initializers.cs:54:66:54:68 | After access to indexer | +| Initializers.cs:54:79:54:85 | After access to indexer | Initializers.cs:54:79:54:85 | access to indexer | +| Initializers.cs:54:79:54:85 | Before access to indexer | Initializers.cs:54:79:54:93 | Before ... = ... | +| Initializers.cs:54:79:54:85 | access to indexer | Initializers.cs:54:80:54:84 | After ... + ... | +| Initializers.cs:54:79:54:93 | ... = ... | Initializers.cs:54:89:54:93 | "Two" | +| Initializers.cs:54:79:54:93 | After ... = ... | Initializers.cs:54:79:54:93 | ... = ... | +| Initializers.cs:54:79:54:93 | Before ... = ... | Initializers.cs:54:66:54:76 | After ... = ... | +| Initializers.cs:54:80:54:80 | access to parameter i | Initializers.cs:54:80:54:84 | Before ... + ... | | Initializers.cs:54:80:54:84 | ... + ... | Initializers.cs:54:84:54:84 | 2 | +| Initializers.cs:54:80:54:84 | After ... + ... | Initializers.cs:54:80:54:84 | ... + ... | +| Initializers.cs:54:80:54:84 | Before ... + ... | Initializers.cs:54:79:54:85 | Before access to indexer | | Initializers.cs:54:84:54:84 | 2 | Initializers.cs:54:80:54:80 | access to parameter i | -| Initializers.cs:54:89:54:93 | "Two" | Initializers.cs:54:80:54:84 | ... + ... | -| Initializers.cs:57:9:65:10 | ... ...; | Initializers.cs:54:13:54:95 | Dictionary dict = ... | -| Initializers.cs:57:13:65:9 | Compound compound = ... | Initializers.cs:58:9:65:9 | { ..., ... } | -| Initializers.cs:57:24:65:9 | object creation of type Compound | Initializers.cs:57:9:65:10 | ... ...; | -| Initializers.cs:58:9:65:9 | { ..., ... } | Initializers.cs:64:13:64:63 | ... = ... | -| Initializers.cs:59:13:59:27 | access to field DictionaryField | Initializers.cs:59:31:59:76 | { ..., ... } | -| Initializers.cs:59:13:59:76 | ... = ... | Initializers.cs:59:13:59:27 | access to field DictionaryField | -| Initializers.cs:59:31:59:76 | { ..., ... } | Initializers.cs:59:60:59:74 | ... = ... | -| Initializers.cs:59:33:59:35 | access to indexer | Initializers.cs:59:39:59:44 | "Zero" | -| Initializers.cs:59:33:59:44 | ... = ... | Initializers.cs:59:33:59:35 | access to indexer | -| Initializers.cs:59:34:59:34 | 0 | Initializers.cs:57:24:65:9 | object creation of type Compound | -| Initializers.cs:59:39:59:44 | "Zero" | Initializers.cs:59:34:59:34 | 0 | -| Initializers.cs:59:47:59:49 | access to indexer | Initializers.cs:59:53:59:57 | "One" | -| Initializers.cs:59:47:59:57 | ... = ... | Initializers.cs:59:47:59:49 | access to indexer | -| Initializers.cs:59:48:59:48 | 1 | Initializers.cs:59:33:59:44 | ... = ... | -| Initializers.cs:59:53:59:57 | "One" | Initializers.cs:59:48:59:48 | 1 | -| Initializers.cs:59:60:59:66 | access to indexer | Initializers.cs:59:70:59:74 | "Two" | -| Initializers.cs:59:60:59:74 | ... = ... | Initializers.cs:59:60:59:66 | access to indexer | -| Initializers.cs:59:61:59:61 | access to parameter i | Initializers.cs:59:47:59:57 | ... = ... | +| Initializers.cs:54:89:54:93 | "Two" | Initializers.cs:54:79:54:85 | After access to indexer | +| Initializers.cs:57:9:65:10 | ... ...; | Initializers.cs:54:9:54:96 | After ... ...; | +| Initializers.cs:57:9:65:10 | After ... ...; | Initializers.cs:57:13:65:9 | After Compound compound = ... | +| Initializers.cs:57:13:57:20 | access to local variable compound | Initializers.cs:57:13:65:9 | Before Compound compound = ... | +| Initializers.cs:57:13:65:9 | After Compound compound = ... | Initializers.cs:57:13:65:9 | Compound compound = ... | +| Initializers.cs:57:13:65:9 | Before Compound compound = ... | Initializers.cs:57:9:65:10 | ... ...; | +| Initializers.cs:57:13:65:9 | Compound compound = ... | Initializers.cs:57:24:65:9 | After object creation of type Compound | +| Initializers.cs:57:24:65:9 | After object creation of type Compound | Initializers.cs:58:9:65:9 | After { ..., ... } | +| Initializers.cs:57:24:65:9 | Before object creation of type Compound | Initializers.cs:57:13:57:20 | access to local variable compound | +| Initializers.cs:57:24:65:9 | object creation of type Compound | Initializers.cs:57:24:65:9 | Before object creation of type Compound | +| Initializers.cs:58:9:65:9 | After { ..., ... } | Initializers.cs:58:9:65:9 | { ..., ... } | +| Initializers.cs:58:9:65:9 | Before { ..., ... } | Initializers.cs:57:24:65:9 | object creation of type Compound | +| Initializers.cs:58:9:65:9 | { ..., ... } | Initializers.cs:64:13:64:63 | After ... = ... | +| Initializers.cs:59:13:59:27 | access to field DictionaryField | Initializers.cs:59:13:59:76 | Before ... = ... | +| Initializers.cs:59:13:59:76 | ... = ... | Initializers.cs:59:31:59:76 | After { ..., ... } | +| Initializers.cs:59:13:59:76 | After ... = ... | Initializers.cs:59:13:59:76 | ... = ... | +| Initializers.cs:59:13:59:76 | Before ... = ... | Initializers.cs:58:9:65:9 | Before { ..., ... } | +| Initializers.cs:59:31:59:76 | After { ..., ... } | Initializers.cs:59:31:59:76 | { ..., ... } | +| Initializers.cs:59:31:59:76 | Before { ..., ... } | Initializers.cs:59:13:59:27 | access to field DictionaryField | +| Initializers.cs:59:31:59:76 | { ..., ... } | Initializers.cs:59:60:59:74 | After ... = ... | +| Initializers.cs:59:33:59:35 | After access to indexer | Initializers.cs:59:33:59:35 | access to indexer | +| Initializers.cs:59:33:59:35 | Before access to indexer | Initializers.cs:59:33:59:44 | Before ... = ... | +| Initializers.cs:59:33:59:35 | access to indexer | Initializers.cs:59:34:59:34 | 0 | +| Initializers.cs:59:33:59:44 | ... = ... | Initializers.cs:59:39:59:44 | "Zero" | +| Initializers.cs:59:33:59:44 | After ... = ... | Initializers.cs:59:33:59:44 | ... = ... | +| Initializers.cs:59:33:59:44 | Before ... = ... | Initializers.cs:59:31:59:76 | Before { ..., ... } | +| Initializers.cs:59:34:59:34 | 0 | Initializers.cs:59:33:59:35 | Before access to indexer | +| Initializers.cs:59:39:59:44 | "Zero" | Initializers.cs:59:33:59:35 | After access to indexer | +| Initializers.cs:59:47:59:49 | After access to indexer | Initializers.cs:59:47:59:49 | access to indexer | +| Initializers.cs:59:47:59:49 | Before access to indexer | Initializers.cs:59:47:59:57 | Before ... = ... | +| Initializers.cs:59:47:59:49 | access to indexer | Initializers.cs:59:48:59:48 | 1 | +| Initializers.cs:59:47:59:57 | ... = ... | Initializers.cs:59:53:59:57 | "One" | +| Initializers.cs:59:47:59:57 | After ... = ... | Initializers.cs:59:47:59:57 | ... = ... | +| Initializers.cs:59:47:59:57 | Before ... = ... | Initializers.cs:59:33:59:44 | After ... = ... | +| Initializers.cs:59:48:59:48 | 1 | Initializers.cs:59:47:59:49 | Before access to indexer | +| Initializers.cs:59:53:59:57 | "One" | Initializers.cs:59:47:59:49 | After access to indexer | +| Initializers.cs:59:60:59:66 | After access to indexer | Initializers.cs:59:60:59:66 | access to indexer | +| Initializers.cs:59:60:59:66 | Before access to indexer | Initializers.cs:59:60:59:74 | Before ... = ... | +| Initializers.cs:59:60:59:66 | access to indexer | Initializers.cs:59:61:59:65 | After ... + ... | +| Initializers.cs:59:60:59:74 | ... = ... | Initializers.cs:59:70:59:74 | "Two" | +| Initializers.cs:59:60:59:74 | After ... = ... | Initializers.cs:59:60:59:74 | ... = ... | +| Initializers.cs:59:60:59:74 | Before ... = ... | Initializers.cs:59:47:59:57 | After ... = ... | +| Initializers.cs:59:61:59:61 | access to parameter i | Initializers.cs:59:61:59:65 | Before ... + ... | | Initializers.cs:59:61:59:65 | ... + ... | Initializers.cs:59:65:59:65 | 2 | +| Initializers.cs:59:61:59:65 | After ... + ... | Initializers.cs:59:61:59:65 | ... + ... | +| Initializers.cs:59:61:59:65 | Before ... + ... | Initializers.cs:59:60:59:66 | Before access to indexer | | Initializers.cs:59:65:59:65 | 2 | Initializers.cs:59:61:59:61 | access to parameter i | -| Initializers.cs:59:70:59:74 | "Two" | Initializers.cs:59:61:59:65 | ... + ... | -| Initializers.cs:60:13:60:30 | access to property DictionaryProperty | Initializers.cs:60:34:60:80 | { ..., ... } | -| Initializers.cs:60:13:60:80 | ... = ... | Initializers.cs:60:13:60:30 | access to property DictionaryProperty | -| Initializers.cs:60:34:60:80 | { ..., ... } | Initializers.cs:60:64:60:78 | ... = ... | -| Initializers.cs:60:36:60:38 | access to indexer | Initializers.cs:60:42:60:48 | "Three" | -| Initializers.cs:60:36:60:48 | ... = ... | Initializers.cs:60:36:60:38 | access to indexer | -| Initializers.cs:60:37:60:37 | 3 | Initializers.cs:59:13:59:76 | ... = ... | -| Initializers.cs:60:42:60:48 | "Three" | Initializers.cs:60:37:60:37 | 3 | -| Initializers.cs:60:51:60:53 | access to indexer | Initializers.cs:60:57:60:61 | "Two" | -| Initializers.cs:60:51:60:61 | ... = ... | Initializers.cs:60:51:60:53 | access to indexer | -| Initializers.cs:60:52:60:52 | 2 | Initializers.cs:60:36:60:48 | ... = ... | -| Initializers.cs:60:57:60:61 | "Two" | Initializers.cs:60:52:60:52 | 2 | -| Initializers.cs:60:64:60:70 | access to indexer | Initializers.cs:60:74:60:78 | "One" | -| Initializers.cs:60:64:60:78 | ... = ... | Initializers.cs:60:64:60:70 | access to indexer | -| Initializers.cs:60:65:60:65 | access to parameter i | Initializers.cs:60:51:60:61 | ... = ... | +| Initializers.cs:59:70:59:74 | "Two" | Initializers.cs:59:60:59:66 | After access to indexer | +| Initializers.cs:60:13:60:30 | After access to property DictionaryProperty | Initializers.cs:60:13:60:30 | access to property DictionaryProperty | +| Initializers.cs:60:13:60:30 | Before access to property DictionaryProperty | Initializers.cs:60:13:60:80 | Before ... = ... | +| Initializers.cs:60:13:60:30 | access to property DictionaryProperty | Initializers.cs:60:13:60:30 | Before access to property DictionaryProperty | +| Initializers.cs:60:13:60:80 | ... = ... | Initializers.cs:60:34:60:80 | After { ..., ... } | +| Initializers.cs:60:13:60:80 | After ... = ... | Initializers.cs:60:13:60:80 | ... = ... | +| Initializers.cs:60:13:60:80 | Before ... = ... | Initializers.cs:59:13:59:76 | After ... = ... | +| Initializers.cs:60:34:60:80 | After { ..., ... } | Initializers.cs:60:34:60:80 | { ..., ... } | +| Initializers.cs:60:34:60:80 | Before { ..., ... } | Initializers.cs:60:13:60:30 | After access to property DictionaryProperty | +| Initializers.cs:60:34:60:80 | { ..., ... } | Initializers.cs:60:64:60:78 | After ... = ... | +| Initializers.cs:60:36:60:38 | After access to indexer | Initializers.cs:60:36:60:38 | access to indexer | +| Initializers.cs:60:36:60:38 | Before access to indexer | Initializers.cs:60:36:60:48 | Before ... = ... | +| Initializers.cs:60:36:60:38 | access to indexer | Initializers.cs:60:37:60:37 | 3 | +| Initializers.cs:60:36:60:48 | ... = ... | Initializers.cs:60:42:60:48 | "Three" | +| Initializers.cs:60:36:60:48 | After ... = ... | Initializers.cs:60:36:60:48 | ... = ... | +| Initializers.cs:60:36:60:48 | Before ... = ... | Initializers.cs:60:34:60:80 | Before { ..., ... } | +| Initializers.cs:60:37:60:37 | 3 | Initializers.cs:60:36:60:38 | Before access to indexer | +| Initializers.cs:60:42:60:48 | "Three" | Initializers.cs:60:36:60:38 | After access to indexer | +| Initializers.cs:60:51:60:53 | After access to indexer | Initializers.cs:60:51:60:53 | access to indexer | +| Initializers.cs:60:51:60:53 | Before access to indexer | Initializers.cs:60:51:60:61 | Before ... = ... | +| Initializers.cs:60:51:60:53 | access to indexer | Initializers.cs:60:52:60:52 | 2 | +| Initializers.cs:60:51:60:61 | ... = ... | Initializers.cs:60:57:60:61 | "Two" | +| Initializers.cs:60:51:60:61 | After ... = ... | Initializers.cs:60:51:60:61 | ... = ... | +| Initializers.cs:60:51:60:61 | Before ... = ... | Initializers.cs:60:36:60:48 | After ... = ... | +| Initializers.cs:60:52:60:52 | 2 | Initializers.cs:60:51:60:53 | Before access to indexer | +| Initializers.cs:60:57:60:61 | "Two" | Initializers.cs:60:51:60:53 | After access to indexer | +| Initializers.cs:60:64:60:70 | After access to indexer | Initializers.cs:60:64:60:70 | access to indexer | +| Initializers.cs:60:64:60:70 | Before access to indexer | Initializers.cs:60:64:60:78 | Before ... = ... | +| Initializers.cs:60:64:60:70 | access to indexer | Initializers.cs:60:65:60:69 | After ... + ... | +| Initializers.cs:60:64:60:78 | ... = ... | Initializers.cs:60:74:60:78 | "One" | +| Initializers.cs:60:64:60:78 | After ... = ... | Initializers.cs:60:64:60:78 | ... = ... | +| Initializers.cs:60:64:60:78 | Before ... = ... | Initializers.cs:60:51:60:61 | After ... = ... | +| Initializers.cs:60:65:60:65 | access to parameter i | Initializers.cs:60:65:60:69 | Before ... + ... | | Initializers.cs:60:65:60:69 | ... + ... | Initializers.cs:60:69:60:69 | 1 | +| Initializers.cs:60:65:60:69 | After ... + ... | Initializers.cs:60:65:60:69 | ... + ... | +| Initializers.cs:60:65:60:69 | Before ... + ... | Initializers.cs:60:64:60:70 | Before access to indexer | | Initializers.cs:60:69:60:69 | 1 | Initializers.cs:60:65:60:65 | access to parameter i | -| Initializers.cs:60:74:60:78 | "One" | Initializers.cs:60:65:60:69 | ... + ... | -| Initializers.cs:61:13:61:22 | access to field ArrayField | Initializers.cs:61:26:61:58 | { ..., ... } | -| Initializers.cs:61:13:61:58 | ... = ... | Initializers.cs:61:13:61:22 | access to field ArrayField | -| Initializers.cs:61:26:61:58 | { ..., ... } | Initializers.cs:61:42:61:56 | ... = ... | -| Initializers.cs:61:28:61:30 | access to array element | Initializers.cs:61:34:61:39 | "Zero" | -| Initializers.cs:61:28:61:39 | ... = ... | Initializers.cs:61:28:61:30 | access to array element | -| Initializers.cs:61:29:61:29 | 0 | Initializers.cs:60:13:60:80 | ... = ... | -| Initializers.cs:61:34:61:39 | "Zero" | Initializers.cs:61:29:61:29 | 0 | -| Initializers.cs:61:42:61:48 | access to array element | Initializers.cs:61:52:61:56 | "One" | -| Initializers.cs:61:42:61:56 | ... = ... | Initializers.cs:61:42:61:48 | access to array element | -| Initializers.cs:61:43:61:43 | access to parameter i | Initializers.cs:61:28:61:39 | ... = ... | +| Initializers.cs:60:74:60:78 | "One" | Initializers.cs:60:64:60:70 | After access to indexer | +| Initializers.cs:61:13:61:22 | access to field ArrayField | Initializers.cs:61:13:61:58 | Before ... = ... | +| Initializers.cs:61:13:61:58 | ... = ... | Initializers.cs:61:26:61:58 | After { ..., ... } | +| Initializers.cs:61:13:61:58 | After ... = ... | Initializers.cs:61:13:61:58 | ... = ... | +| Initializers.cs:61:13:61:58 | Before ... = ... | Initializers.cs:60:13:60:80 | After ... = ... | +| Initializers.cs:61:26:61:58 | After { ..., ... } | Initializers.cs:61:26:61:58 | { ..., ... } | +| Initializers.cs:61:26:61:58 | Before { ..., ... } | Initializers.cs:61:13:61:22 | access to field ArrayField | +| Initializers.cs:61:26:61:58 | { ..., ... } | Initializers.cs:61:42:61:56 | After ... = ... | +| Initializers.cs:61:28:61:30 | After access to array element | Initializers.cs:61:28:61:30 | access to array element | +| Initializers.cs:61:28:61:30 | Before access to array element | Initializers.cs:61:28:61:39 | Before ... = ... | +| Initializers.cs:61:28:61:30 | access to array element | Initializers.cs:61:29:61:29 | 0 | +| Initializers.cs:61:28:61:39 | ... = ... | Initializers.cs:61:34:61:39 | "Zero" | +| Initializers.cs:61:28:61:39 | After ... = ... | Initializers.cs:61:28:61:39 | ... = ... | +| Initializers.cs:61:28:61:39 | Before ... = ... | Initializers.cs:61:26:61:58 | Before { ..., ... } | +| Initializers.cs:61:29:61:29 | 0 | Initializers.cs:61:28:61:30 | Before access to array element | +| Initializers.cs:61:34:61:39 | "Zero" | Initializers.cs:61:28:61:30 | After access to array element | +| Initializers.cs:61:42:61:48 | After access to array element | Initializers.cs:61:42:61:48 | access to array element | +| Initializers.cs:61:42:61:48 | Before access to array element | Initializers.cs:61:42:61:56 | Before ... = ... | +| Initializers.cs:61:42:61:48 | access to array element | Initializers.cs:61:43:61:47 | After ... + ... | +| Initializers.cs:61:42:61:56 | ... = ... | Initializers.cs:61:52:61:56 | "One" | +| Initializers.cs:61:42:61:56 | After ... = ... | Initializers.cs:61:42:61:56 | ... = ... | +| Initializers.cs:61:42:61:56 | Before ... = ... | Initializers.cs:61:28:61:39 | After ... = ... | +| Initializers.cs:61:43:61:43 | access to parameter i | Initializers.cs:61:43:61:47 | Before ... + ... | | Initializers.cs:61:43:61:47 | ... + ... | Initializers.cs:61:47:61:47 | 1 | +| Initializers.cs:61:43:61:47 | After ... + ... | Initializers.cs:61:43:61:47 | ... + ... | +| Initializers.cs:61:43:61:47 | Before ... + ... | Initializers.cs:61:42:61:48 | Before access to array element | | Initializers.cs:61:47:61:47 | 1 | Initializers.cs:61:43:61:43 | access to parameter i | -| Initializers.cs:61:52:61:56 | "One" | Initializers.cs:61:43:61:47 | ... + ... | -| Initializers.cs:62:13:62:23 | access to field ArrayField2 | Initializers.cs:62:27:62:60 | { ..., ... } | -| Initializers.cs:62:13:62:60 | ... = ... | Initializers.cs:62:13:62:23 | access to field ArrayField2 | -| Initializers.cs:62:27:62:60 | { ..., ... } | Initializers.cs:62:43:62:58 | ... = ... | -| Initializers.cs:62:29:62:34 | access to array element | Initializers.cs:62:38:62:40 | "i" | -| Initializers.cs:62:29:62:40 | ... = ... | Initializers.cs:62:29:62:34 | access to array element | -| Initializers.cs:62:30:62:30 | 0 | Initializers.cs:61:13:61:58 | ... = ... | +| Initializers.cs:61:52:61:56 | "One" | Initializers.cs:61:42:61:48 | After access to array element | +| Initializers.cs:62:13:62:23 | access to field ArrayField2 | Initializers.cs:62:13:62:60 | Before ... = ... | +| Initializers.cs:62:13:62:60 | ... = ... | Initializers.cs:62:27:62:60 | After { ..., ... } | +| Initializers.cs:62:13:62:60 | After ... = ... | Initializers.cs:62:13:62:60 | ... = ... | +| Initializers.cs:62:13:62:60 | Before ... = ... | Initializers.cs:61:13:61:58 | After ... = ... | +| Initializers.cs:62:27:62:60 | After { ..., ... } | Initializers.cs:62:27:62:60 | { ..., ... } | +| Initializers.cs:62:27:62:60 | Before { ..., ... } | Initializers.cs:62:13:62:23 | access to field ArrayField2 | +| Initializers.cs:62:27:62:60 | { ..., ... } | Initializers.cs:62:43:62:58 | After ... = ... | +| Initializers.cs:62:29:62:34 | After access to array element | Initializers.cs:62:29:62:34 | access to array element | +| Initializers.cs:62:29:62:34 | Before access to array element | Initializers.cs:62:29:62:40 | Before ... = ... | +| Initializers.cs:62:29:62:34 | access to array element | Initializers.cs:62:33:62:33 | 1 | +| Initializers.cs:62:29:62:40 | ... = ... | Initializers.cs:62:38:62:40 | "i" | +| Initializers.cs:62:29:62:40 | After ... = ... | Initializers.cs:62:29:62:40 | ... = ... | +| Initializers.cs:62:29:62:40 | Before ... = ... | Initializers.cs:62:27:62:60 | Before { ..., ... } | +| Initializers.cs:62:30:62:30 | 0 | Initializers.cs:62:29:62:34 | Before access to array element | | Initializers.cs:62:33:62:33 | 1 | Initializers.cs:62:30:62:30 | 0 | -| Initializers.cs:62:38:62:40 | "i" | Initializers.cs:62:33:62:33 | 1 | -| Initializers.cs:62:43:62:52 | access to array element | Initializers.cs:62:56:62:58 | "1" | -| Initializers.cs:62:43:62:58 | ... = ... | Initializers.cs:62:43:62:52 | access to array element | -| Initializers.cs:62:44:62:44 | 1 | Initializers.cs:62:29:62:40 | ... = ... | -| Initializers.cs:62:47:62:47 | access to parameter i | Initializers.cs:62:44:62:44 | 1 | +| Initializers.cs:62:38:62:40 | "i" | Initializers.cs:62:29:62:34 | After access to array element | +| Initializers.cs:62:43:62:52 | After access to array element | Initializers.cs:62:43:62:52 | access to array element | +| Initializers.cs:62:43:62:52 | Before access to array element | Initializers.cs:62:43:62:58 | Before ... = ... | +| Initializers.cs:62:43:62:52 | access to array element | Initializers.cs:62:47:62:51 | After ... + ... | +| Initializers.cs:62:43:62:58 | ... = ... | Initializers.cs:62:56:62:58 | "1" | +| Initializers.cs:62:43:62:58 | After ... = ... | Initializers.cs:62:43:62:58 | ... = ... | +| Initializers.cs:62:43:62:58 | Before ... = ... | Initializers.cs:62:29:62:40 | After ... = ... | +| Initializers.cs:62:44:62:44 | 1 | Initializers.cs:62:43:62:52 | Before access to array element | +| Initializers.cs:62:47:62:47 | access to parameter i | Initializers.cs:62:47:62:51 | Before ... + ... | | Initializers.cs:62:47:62:51 | ... + ... | Initializers.cs:62:51:62:51 | 0 | +| Initializers.cs:62:47:62:51 | After ... + ... | Initializers.cs:62:47:62:51 | ... + ... | +| Initializers.cs:62:47:62:51 | Before ... + ... | Initializers.cs:62:44:62:44 | 1 | | Initializers.cs:62:51:62:51 | 0 | Initializers.cs:62:47:62:47 | access to parameter i | -| Initializers.cs:62:56:62:58 | "1" | Initializers.cs:62:47:62:51 | ... + ... | -| Initializers.cs:63:13:63:25 | access to property ArrayProperty | Initializers.cs:63:29:63:60 | { ..., ... } | -| Initializers.cs:63:13:63:60 | ... = ... | Initializers.cs:63:13:63:25 | access to property ArrayProperty | -| Initializers.cs:63:29:63:60 | { ..., ... } | Initializers.cs:63:44:63:58 | ... = ... | -| Initializers.cs:63:31:63:33 | access to array element | Initializers.cs:63:37:63:41 | "One" | -| Initializers.cs:63:31:63:41 | ... = ... | Initializers.cs:63:31:63:33 | access to array element | -| Initializers.cs:63:32:63:32 | 1 | Initializers.cs:62:13:62:60 | ... = ... | -| Initializers.cs:63:37:63:41 | "One" | Initializers.cs:63:32:63:32 | 1 | -| Initializers.cs:63:44:63:50 | access to array element | Initializers.cs:63:54:63:58 | "Two" | -| Initializers.cs:63:44:63:58 | ... = ... | Initializers.cs:63:44:63:50 | access to array element | -| Initializers.cs:63:45:63:45 | access to parameter i | Initializers.cs:63:31:63:41 | ... = ... | +| Initializers.cs:62:56:62:58 | "1" | Initializers.cs:62:43:62:52 | After access to array element | +| Initializers.cs:63:13:63:25 | After access to property ArrayProperty | Initializers.cs:63:13:63:25 | access to property ArrayProperty | +| Initializers.cs:63:13:63:25 | Before access to property ArrayProperty | Initializers.cs:63:13:63:60 | Before ... = ... | +| Initializers.cs:63:13:63:25 | access to property ArrayProperty | Initializers.cs:63:13:63:25 | Before access to property ArrayProperty | +| Initializers.cs:63:13:63:60 | ... = ... | Initializers.cs:63:29:63:60 | After { ..., ... } | +| Initializers.cs:63:13:63:60 | After ... = ... | Initializers.cs:63:13:63:60 | ... = ... | +| Initializers.cs:63:13:63:60 | Before ... = ... | Initializers.cs:62:13:62:60 | After ... = ... | +| Initializers.cs:63:29:63:60 | After { ..., ... } | Initializers.cs:63:29:63:60 | { ..., ... } | +| Initializers.cs:63:29:63:60 | Before { ..., ... } | Initializers.cs:63:13:63:25 | After access to property ArrayProperty | +| Initializers.cs:63:29:63:60 | { ..., ... } | Initializers.cs:63:44:63:58 | After ... = ... | +| Initializers.cs:63:31:63:33 | After access to array element | Initializers.cs:63:31:63:33 | access to array element | +| Initializers.cs:63:31:63:33 | Before access to array element | Initializers.cs:63:31:63:41 | Before ... = ... | +| Initializers.cs:63:31:63:33 | access to array element | Initializers.cs:63:32:63:32 | 1 | +| Initializers.cs:63:31:63:41 | ... = ... | Initializers.cs:63:37:63:41 | "One" | +| Initializers.cs:63:31:63:41 | After ... = ... | Initializers.cs:63:31:63:41 | ... = ... | +| Initializers.cs:63:31:63:41 | Before ... = ... | Initializers.cs:63:29:63:60 | Before { ..., ... } | +| Initializers.cs:63:32:63:32 | 1 | Initializers.cs:63:31:63:33 | Before access to array element | +| Initializers.cs:63:37:63:41 | "One" | Initializers.cs:63:31:63:33 | After access to array element | +| Initializers.cs:63:44:63:50 | After access to array element | Initializers.cs:63:44:63:50 | access to array element | +| Initializers.cs:63:44:63:50 | Before access to array element | Initializers.cs:63:44:63:58 | Before ... = ... | +| Initializers.cs:63:44:63:50 | access to array element | Initializers.cs:63:45:63:49 | After ... + ... | +| Initializers.cs:63:44:63:58 | ... = ... | Initializers.cs:63:54:63:58 | "Two" | +| Initializers.cs:63:44:63:58 | After ... = ... | Initializers.cs:63:44:63:58 | ... = ... | +| Initializers.cs:63:44:63:58 | Before ... = ... | Initializers.cs:63:31:63:41 | After ... = ... | +| Initializers.cs:63:45:63:45 | access to parameter i | Initializers.cs:63:45:63:49 | Before ... + ... | | Initializers.cs:63:45:63:49 | ... + ... | Initializers.cs:63:49:63:49 | 2 | +| Initializers.cs:63:45:63:49 | After ... + ... | Initializers.cs:63:45:63:49 | ... + ... | +| Initializers.cs:63:45:63:49 | Before ... + ... | Initializers.cs:63:44:63:50 | Before access to array element | | Initializers.cs:63:49:63:49 | 2 | Initializers.cs:63:45:63:45 | access to parameter i | -| Initializers.cs:63:54:63:58 | "Two" | Initializers.cs:63:45:63:49 | ... + ... | -| Initializers.cs:64:13:64:26 | access to property ArrayProperty2 | Initializers.cs:64:30:64:63 | { ..., ... } | -| Initializers.cs:64:13:64:63 | ... = ... | Initializers.cs:64:13:64:26 | access to property ArrayProperty2 | -| Initializers.cs:64:30:64:63 | { ..., ... } | Initializers.cs:64:46:64:61 | ... = ... | -| Initializers.cs:64:32:64:37 | access to array element | Initializers.cs:64:41:64:43 | "i" | -| Initializers.cs:64:32:64:43 | ... = ... | Initializers.cs:64:32:64:37 | access to array element | -| Initializers.cs:64:33:64:33 | 0 | Initializers.cs:63:13:63:60 | ... = ... | +| Initializers.cs:63:54:63:58 | "Two" | Initializers.cs:63:44:63:50 | After access to array element | +| Initializers.cs:64:13:64:26 | After access to property ArrayProperty2 | Initializers.cs:64:13:64:26 | access to property ArrayProperty2 | +| Initializers.cs:64:13:64:26 | Before access to property ArrayProperty2 | Initializers.cs:64:13:64:63 | Before ... = ... | +| Initializers.cs:64:13:64:26 | access to property ArrayProperty2 | Initializers.cs:64:13:64:26 | Before access to property ArrayProperty2 | +| Initializers.cs:64:13:64:63 | ... = ... | Initializers.cs:64:30:64:63 | After { ..., ... } | +| Initializers.cs:64:13:64:63 | After ... = ... | Initializers.cs:64:13:64:63 | ... = ... | +| Initializers.cs:64:13:64:63 | Before ... = ... | Initializers.cs:63:13:63:60 | After ... = ... | +| Initializers.cs:64:30:64:63 | After { ..., ... } | Initializers.cs:64:30:64:63 | { ..., ... } | +| Initializers.cs:64:30:64:63 | Before { ..., ... } | Initializers.cs:64:13:64:26 | After access to property ArrayProperty2 | +| Initializers.cs:64:30:64:63 | { ..., ... } | Initializers.cs:64:46:64:61 | After ... = ... | +| Initializers.cs:64:32:64:37 | After access to array element | Initializers.cs:64:32:64:37 | access to array element | +| Initializers.cs:64:32:64:37 | Before access to array element | Initializers.cs:64:32:64:43 | Before ... = ... | +| Initializers.cs:64:32:64:37 | access to array element | Initializers.cs:64:36:64:36 | 1 | +| Initializers.cs:64:32:64:43 | ... = ... | Initializers.cs:64:41:64:43 | "i" | +| Initializers.cs:64:32:64:43 | After ... = ... | Initializers.cs:64:32:64:43 | ... = ... | +| Initializers.cs:64:32:64:43 | Before ... = ... | Initializers.cs:64:30:64:63 | Before { ..., ... } | +| Initializers.cs:64:33:64:33 | 0 | Initializers.cs:64:32:64:37 | Before access to array element | | Initializers.cs:64:36:64:36 | 1 | Initializers.cs:64:33:64:33 | 0 | -| Initializers.cs:64:41:64:43 | "i" | Initializers.cs:64:36:64:36 | 1 | -| Initializers.cs:64:46:64:55 | access to array element | Initializers.cs:64:59:64:61 | "1" | -| Initializers.cs:64:46:64:61 | ... = ... | Initializers.cs:64:46:64:55 | access to array element | -| Initializers.cs:64:47:64:47 | 1 | Initializers.cs:64:32:64:43 | ... = ... | -| Initializers.cs:64:50:64:50 | access to parameter i | Initializers.cs:64:47:64:47 | 1 | +| Initializers.cs:64:41:64:43 | "i" | Initializers.cs:64:32:64:37 | After access to array element | +| Initializers.cs:64:46:64:55 | After access to array element | Initializers.cs:64:46:64:55 | access to array element | +| Initializers.cs:64:46:64:55 | Before access to array element | Initializers.cs:64:46:64:61 | Before ... = ... | +| Initializers.cs:64:46:64:55 | access to array element | Initializers.cs:64:50:64:54 | After ... + ... | +| Initializers.cs:64:46:64:61 | ... = ... | Initializers.cs:64:59:64:61 | "1" | +| Initializers.cs:64:46:64:61 | After ... = ... | Initializers.cs:64:46:64:61 | ... = ... | +| Initializers.cs:64:46:64:61 | Before ... = ... | Initializers.cs:64:32:64:43 | After ... = ... | +| Initializers.cs:64:47:64:47 | 1 | Initializers.cs:64:46:64:55 | Before access to array element | +| Initializers.cs:64:50:64:50 | access to parameter i | Initializers.cs:64:50:64:54 | Before ... + ... | | Initializers.cs:64:50:64:54 | ... + ... | Initializers.cs:64:54:64:54 | 0 | +| Initializers.cs:64:50:64:54 | After ... + ... | Initializers.cs:64:50:64:54 | ... + ... | +| Initializers.cs:64:50:64:54 | Before ... + ... | Initializers.cs:64:47:64:47 | 1 | | Initializers.cs:64:54:64:54 | 0 | Initializers.cs:64:50:64:50 | access to parameter i | -| Initializers.cs:64:59:64:61 | "1" | Initializers.cs:64:50:64:54 | ... + ... | -| LoopUnrolling.cs:5:7:5:19 | call to constructor Object | LoopUnrolling.cs:5:7:5:19 | call to method | +| Initializers.cs:64:59:64:61 | "1" | Initializers.cs:64:46:64:55 | After access to array element | +| LoopUnrolling.cs:5:7:5:19 | After call to constructor Object | LoopUnrolling.cs:5:7:5:19 | call to constructor Object | +| LoopUnrolling.cs:5:7:5:19 | After call to method | LoopUnrolling.cs:5:7:5:19 | call to method | +| LoopUnrolling.cs:5:7:5:19 | Before call to constructor Object | LoopUnrolling.cs:5:7:5:19 | After call to method | +| LoopUnrolling.cs:5:7:5:19 | Before call to method | LoopUnrolling.cs:5:7:5:19 | Entry | +| LoopUnrolling.cs:5:7:5:19 | Exit | LoopUnrolling.cs:5:7:5:19 | Normal Exit | +| LoopUnrolling.cs:5:7:5:19 | Normal Exit | LoopUnrolling.cs:5:7:5:19 | {...} | +| LoopUnrolling.cs:5:7:5:19 | call to constructor Object | LoopUnrolling.cs:5:7:5:19 | Before call to constructor Object | | LoopUnrolling.cs:5:7:5:19 | call to method | LoopUnrolling.cs:5:7:5:19 | this access | -| LoopUnrolling.cs:5:7:5:19 | exit LoopUnrolling | LoopUnrolling.cs:5:7:5:19 | exit LoopUnrolling (normal) | -| LoopUnrolling.cs:5:7:5:19 | exit LoopUnrolling (normal) | LoopUnrolling.cs:5:7:5:19 | {...} | -| LoopUnrolling.cs:5:7:5:19 | this access | LoopUnrolling.cs:5:7:5:19 | enter LoopUnrolling | -| LoopUnrolling.cs:5:7:5:19 | {...} | LoopUnrolling.cs:5:7:5:19 | call to constructor Object | -| LoopUnrolling.cs:7:10:7:11 | exit M1 | LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | -| LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | LoopUnrolling.cs:10:13:10:19 | return ...; | -| LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:8:5:13:5 | {...} | LoopUnrolling.cs:7:10:7:11 | enter M1 | +| LoopUnrolling.cs:5:7:5:19 | this access | LoopUnrolling.cs:5:7:5:19 | Before call to method | +| LoopUnrolling.cs:5:7:5:19 | {...} | LoopUnrolling.cs:5:7:5:19 | After call to constructor Object | +| LoopUnrolling.cs:7:10:7:11 | Exit | LoopUnrolling.cs:7:10:7:11 | Normal Exit | +| LoopUnrolling.cs:7:10:7:11 | Normal Exit | LoopUnrolling.cs:8:5:13:5 | After {...} | +| LoopUnrolling.cs:7:10:7:11 | Normal Exit | LoopUnrolling.cs:10:13:10:19 | return ...; | +| LoopUnrolling.cs:7:22:7:25 | args | LoopUnrolling.cs:7:10:7:11 | Entry | +| LoopUnrolling.cs:8:5:13:5 | After {...} | LoopUnrolling.cs:11:9:12:35 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:8:5:13:5 | {...} | LoopUnrolling.cs:7:22:7:25 | args | +| LoopUnrolling.cs:9:9:10:19 | After if (...) ... | LoopUnrolling.cs:9:13:9:28 | After ... == ... [false] | | LoopUnrolling.cs:9:9:10:19 | if (...) ... | LoopUnrolling.cs:8:5:13:5 | {...} | -| LoopUnrolling.cs:9:13:9:16 | access to parameter args | LoopUnrolling.cs:9:9:10:19 | if (...) ... | +| LoopUnrolling.cs:9:13:9:16 | access to parameter args | LoopUnrolling.cs:9:13:9:23 | Before access to property Length | +| LoopUnrolling.cs:9:13:9:23 | After access to property Length | LoopUnrolling.cs:9:13:9:23 | access to property Length | +| LoopUnrolling.cs:9:13:9:23 | Before access to property Length | LoopUnrolling.cs:9:13:9:28 | Before ... == ... | | LoopUnrolling.cs:9:13:9:23 | access to property Length | LoopUnrolling.cs:9:13:9:16 | access to parameter args | | LoopUnrolling.cs:9:13:9:28 | ... == ... | LoopUnrolling.cs:9:28:9:28 | 0 | -| LoopUnrolling.cs:9:28:9:28 | 0 | LoopUnrolling.cs:9:13:9:23 | access to property Length | -| LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:11:29:11:32 | access to parameter args | -| LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:12:13:12:34 | call to method WriteLine | +| LoopUnrolling.cs:9:13:9:28 | Before ... == ... | LoopUnrolling.cs:9:9:10:19 | if (...) ... | +| LoopUnrolling.cs:9:28:9:28 | 0 | LoopUnrolling.cs:9:13:9:23 | After access to property Length | +| LoopUnrolling.cs:10:13:10:19 | Before return ...; | LoopUnrolling.cs:9:13:9:28 | After ... == ... [true] | +| LoopUnrolling.cs:10:13:10:19 | return ...; | LoopUnrolling.cs:10:13:10:19 | Before return ...; | +| LoopUnrolling.cs:11:9:12:35 | After foreach (... ... in ...) ... | LoopUnrolling.cs:11:9:12:35 | [LoopHeader] foreach (... ... in ...) ... | +| LoopUnrolling.cs:11:9:12:35 | After foreach (... ... in ...) ... | LoopUnrolling.cs:11:29:11:32 | After access to parameter args [empty] | +| LoopUnrolling.cs:11:9:12:35 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:12:13:12:35 | After ...; | +| LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:9:9:10:19 | After if (...) ... | +| LoopUnrolling.cs:11:22:11:24 | String arg | LoopUnrolling.cs:11:29:11:32 | After access to parameter args [non-empty] | +| LoopUnrolling.cs:11:29:11:32 | access to parameter args | LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:12:13:12:34 | After call to method WriteLine | LoopUnrolling.cs:12:13:12:34 | call to method WriteLine | +| LoopUnrolling.cs:12:13:12:34 | Before call to method WriteLine | LoopUnrolling.cs:12:13:12:35 | ...; | | LoopUnrolling.cs:12:13:12:34 | call to method WriteLine | LoopUnrolling.cs:12:31:12:33 | access to local variable arg | | LoopUnrolling.cs:12:13:12:35 | ...; | LoopUnrolling.cs:11:22:11:24 | String arg | -| LoopUnrolling.cs:12:31:12:33 | access to local variable arg | LoopUnrolling.cs:12:13:12:35 | ...; | -| LoopUnrolling.cs:15:10:15:11 | exit M2 | LoopUnrolling.cs:15:10:15:11 | exit M2 (normal) | -| LoopUnrolling.cs:15:10:15:11 | exit M2 (normal) | LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:16:5:20:5 | {...} | LoopUnrolling.cs:15:10:15:11 | enter M2 | +| LoopUnrolling.cs:12:13:12:35 | After ...; | LoopUnrolling.cs:12:13:12:34 | After call to method WriteLine | +| LoopUnrolling.cs:12:31:12:33 | access to local variable arg | LoopUnrolling.cs:12:13:12:34 | Before call to method WriteLine | +| LoopUnrolling.cs:15:10:15:11 | Exit | LoopUnrolling.cs:15:10:15:11 | Normal Exit | +| LoopUnrolling.cs:15:10:15:11 | Normal Exit | LoopUnrolling.cs:16:5:20:5 | After {...} | +| LoopUnrolling.cs:16:5:20:5 | After {...} | LoopUnrolling.cs:18:9:19:33 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:16:5:20:5 | {...} | LoopUnrolling.cs:15:10:15:11 | Entry | | LoopUnrolling.cs:17:9:17:48 | ... ...; | LoopUnrolling.cs:16:5:20:5 | {...} | -| LoopUnrolling.cs:17:13:17:47 | String[] xs = ... | LoopUnrolling.cs:17:31:17:47 | { ..., ... } | -| LoopUnrolling.cs:17:18:17:47 | 3 | LoopUnrolling.cs:17:9:17:48 | ... ...; | +| LoopUnrolling.cs:17:9:17:48 | After ... ...; | LoopUnrolling.cs:17:13:17:47 | After String[] xs = ... | +| LoopUnrolling.cs:17:13:17:14 | access to local variable xs | LoopUnrolling.cs:17:13:17:47 | Before String[] xs = ... | +| LoopUnrolling.cs:17:13:17:47 | After String[] xs = ... | LoopUnrolling.cs:17:13:17:47 | String[] xs = ... | +| LoopUnrolling.cs:17:13:17:47 | Before String[] xs = ... | LoopUnrolling.cs:17:9:17:48 | ... ...; | +| LoopUnrolling.cs:17:13:17:47 | String[] xs = ... | LoopUnrolling.cs:17:18:17:47 | After array creation of type String[] | +| LoopUnrolling.cs:17:18:17:47 | 3 | LoopUnrolling.cs:17:31:17:47 | After { ..., ... } | +| LoopUnrolling.cs:17:18:17:47 | After array creation of type String[] | LoopUnrolling.cs:17:18:17:47 | array creation of type String[] | +| LoopUnrolling.cs:17:18:17:47 | Before array creation of type String[] | LoopUnrolling.cs:17:13:17:14 | access to local variable xs | | LoopUnrolling.cs:17:18:17:47 | array creation of type String[] | LoopUnrolling.cs:17:18:17:47 | 3 | +| LoopUnrolling.cs:17:31:17:47 | After { ..., ... } | LoopUnrolling.cs:17:31:17:47 | { ..., ... } | +| LoopUnrolling.cs:17:31:17:47 | Before { ..., ... } | LoopUnrolling.cs:17:18:17:47 | Before array creation of type String[] | | LoopUnrolling.cs:17:31:17:47 | { ..., ... } | LoopUnrolling.cs:17:43:17:45 | "c" | -| LoopUnrolling.cs:17:33:17:35 | "a" | LoopUnrolling.cs:17:18:17:47 | array creation of type String[] | +| LoopUnrolling.cs:17:33:17:35 | "a" | LoopUnrolling.cs:17:31:17:47 | Before { ..., ... } | | LoopUnrolling.cs:17:38:17:40 | "b" | LoopUnrolling.cs:17:33:17:35 | "a" | | LoopUnrolling.cs:17:43:17:45 | "c" | LoopUnrolling.cs:17:38:17:40 | "b" | -| LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:18:27:18:28 | access to local variable xs | -| LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:19:13:19:32 | call to method WriteLine | -| LoopUnrolling.cs:18:27:18:28 | access to local variable xs | LoopUnrolling.cs:17:13:17:47 | String[] xs = ... | +| LoopUnrolling.cs:18:9:19:33 | After foreach (... ... in ...) ... | LoopUnrolling.cs:18:9:19:33 | [LoopHeader] foreach (... ... in ...) ... | +| LoopUnrolling.cs:18:9:19:33 | After foreach (... ... in ...) ... | LoopUnrolling.cs:18:27:18:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:18:9:19:33 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:19:13:19:33 | After ...; | +| LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:17:9:17:48 | After ... ...; | +| LoopUnrolling.cs:18:22:18:22 | String x | LoopUnrolling.cs:18:27:18:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:18:27:18:28 | access to local variable xs | LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:19:13:19:32 | After call to method WriteLine | LoopUnrolling.cs:19:13:19:32 | call to method WriteLine | +| LoopUnrolling.cs:19:13:19:32 | Before call to method WriteLine | LoopUnrolling.cs:19:13:19:33 | ...; | | LoopUnrolling.cs:19:13:19:32 | call to method WriteLine | LoopUnrolling.cs:19:31:19:31 | access to local variable x | | LoopUnrolling.cs:19:13:19:33 | ...; | LoopUnrolling.cs:18:22:18:22 | String x | -| LoopUnrolling.cs:19:31:19:31 | access to local variable x | LoopUnrolling.cs:19:13:19:33 | ...; | -| LoopUnrolling.cs:22:10:22:11 | exit M3 | LoopUnrolling.cs:22:10:22:11 | exit M3 (normal) | -| LoopUnrolling.cs:22:10:22:11 | exit M3 (normal) | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:23:5:27:5 | {...} | LoopUnrolling.cs:22:10:22:11 | enter M3 | -| LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:24:29:24:32 | access to parameter args | -| LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:24:29:24:32 | access to parameter args | LoopUnrolling.cs:23:5:27:5 | {...} | -| LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:25:34:25:37 | access to parameter args | -| LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:26:17:26:39 | call to method WriteLine | -| LoopUnrolling.cs:25:34:25:37 | access to parameter args | LoopUnrolling.cs:24:22:24:24 | Char arg | +| LoopUnrolling.cs:19:13:19:33 | After ...; | LoopUnrolling.cs:19:13:19:32 | After call to method WriteLine | +| LoopUnrolling.cs:19:31:19:31 | access to local variable x | LoopUnrolling.cs:19:13:19:32 | Before call to method WriteLine | +| LoopUnrolling.cs:22:10:22:11 | Exit | LoopUnrolling.cs:22:10:22:11 | Normal Exit | +| LoopUnrolling.cs:22:10:22:11 | Normal Exit | LoopUnrolling.cs:23:5:27:5 | After {...} | +| LoopUnrolling.cs:22:20:22:23 | args | LoopUnrolling.cs:22:10:22:11 | Entry | +| LoopUnrolling.cs:23:5:27:5 | After {...} | LoopUnrolling.cs:24:9:26:40 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:23:5:27:5 | {...} | LoopUnrolling.cs:22:20:22:23 | args | +| LoopUnrolling.cs:24:9:26:40 | After foreach (... ... in ...) ... | LoopUnrolling.cs:24:9:26:40 | [LoopHeader] foreach (... ... in ...) ... | +| LoopUnrolling.cs:24:9:26:40 | After foreach (... ... in ...) ... | LoopUnrolling.cs:24:29:24:32 | After access to parameter args [empty] | +| LoopUnrolling.cs:24:9:26:40 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:25:13:26:40 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:23:5:27:5 | {...} | +| LoopUnrolling.cs:24:22:24:24 | Char arg | LoopUnrolling.cs:24:29:24:32 | After access to parameter args [non-empty] | +| LoopUnrolling.cs:24:29:24:32 | access to parameter args | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:25:13:26:40 | After foreach (... ... in ...) ... | LoopUnrolling.cs:25:13:26:40 | [LoopHeader] foreach (... ... in ...) ... | +| LoopUnrolling.cs:25:13:26:40 | After foreach (... ... in ...) ... | LoopUnrolling.cs:25:34:25:37 | After access to parameter args [empty] | +| LoopUnrolling.cs:25:13:26:40 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:26:17:26:40 | After ...; | +| LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:24:22:24:24 | Char arg | +| LoopUnrolling.cs:25:26:25:29 | Char arg0 | LoopUnrolling.cs:25:34:25:37 | After access to parameter args [non-empty] | +| LoopUnrolling.cs:25:34:25:37 | access to parameter args | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:26:17:26:39 | After call to method WriteLine | LoopUnrolling.cs:26:17:26:39 | call to method WriteLine | +| LoopUnrolling.cs:26:17:26:39 | Before call to method WriteLine | LoopUnrolling.cs:26:17:26:40 | ...; | | LoopUnrolling.cs:26:17:26:39 | call to method WriteLine | LoopUnrolling.cs:26:35:26:38 | access to local variable arg0 | | LoopUnrolling.cs:26:17:26:40 | ...; | LoopUnrolling.cs:25:26:25:29 | Char arg0 | -| LoopUnrolling.cs:26:35:26:38 | access to local variable arg0 | LoopUnrolling.cs:26:17:26:40 | ...; | -| LoopUnrolling.cs:29:10:29:11 | exit M4 | LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | -| LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:30:5:34:5 | {...} | LoopUnrolling.cs:29:10:29:11 | enter M4 | +| LoopUnrolling.cs:26:17:26:40 | After ...; | LoopUnrolling.cs:26:17:26:39 | After call to method WriteLine | +| LoopUnrolling.cs:26:35:26:38 | access to local variable arg0 | LoopUnrolling.cs:26:17:26:39 | Before call to method WriteLine | +| LoopUnrolling.cs:29:10:29:11 | Exit | LoopUnrolling.cs:29:10:29:11 | Normal Exit | +| LoopUnrolling.cs:29:10:29:11 | Normal Exit | LoopUnrolling.cs:30:5:34:5 | After {...} | +| LoopUnrolling.cs:30:5:34:5 | After {...} | LoopUnrolling.cs:32:9:33:33 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:30:5:34:5 | {...} | LoopUnrolling.cs:29:10:29:11 | Entry | | LoopUnrolling.cs:31:9:31:31 | ... ...; | LoopUnrolling.cs:30:5:34:5 | {...} | -| LoopUnrolling.cs:31:13:31:30 | String[] xs = ... | LoopUnrolling.cs:31:18:31:30 | array creation of type String[] | +| LoopUnrolling.cs:31:9:31:31 | After ... ...; | LoopUnrolling.cs:31:13:31:30 | After String[] xs = ... | +| LoopUnrolling.cs:31:13:31:14 | access to local variable xs | LoopUnrolling.cs:31:13:31:30 | Before String[] xs = ... | +| LoopUnrolling.cs:31:13:31:30 | After String[] xs = ... | LoopUnrolling.cs:31:13:31:30 | String[] xs = ... | +| LoopUnrolling.cs:31:13:31:30 | Before String[] xs = ... | LoopUnrolling.cs:31:9:31:31 | ... ...; | +| LoopUnrolling.cs:31:13:31:30 | String[] xs = ... | LoopUnrolling.cs:31:18:31:30 | After array creation of type String[] | +| LoopUnrolling.cs:31:18:31:30 | After array creation of type String[] | LoopUnrolling.cs:31:18:31:30 | array creation of type String[] | +| LoopUnrolling.cs:31:18:31:30 | Before array creation of type String[] | LoopUnrolling.cs:31:13:31:14 | access to local variable xs | | LoopUnrolling.cs:31:18:31:30 | array creation of type String[] | LoopUnrolling.cs:31:29:31:29 | 0 | -| LoopUnrolling.cs:31:29:31:29 | 0 | LoopUnrolling.cs:31:9:31:31 | ... ...; | -| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:32:27:32:28 | access to local variable xs | -| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:33:13:33:32 | call to method WriteLine | -| LoopUnrolling.cs:32:27:32:28 | access to local variable xs | LoopUnrolling.cs:31:13:31:30 | String[] xs = ... | +| LoopUnrolling.cs:31:29:31:29 | 0 | LoopUnrolling.cs:31:18:31:30 | Before array creation of type String[] | +| LoopUnrolling.cs:32:9:33:33 | After foreach (... ... in ...) ... | LoopUnrolling.cs:32:9:33:33 | [LoopHeader] foreach (... ... in ...) ... | +| LoopUnrolling.cs:32:9:33:33 | After foreach (... ... in ...) ... | LoopUnrolling.cs:32:27:32:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:32:9:33:33 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:33:13:33:33 | After ...; | +| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:31:9:31:31 | After ... ...; | +| LoopUnrolling.cs:32:22:32:22 | String x | LoopUnrolling.cs:32:27:32:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:32:27:32:28 | access to local variable xs | LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:33:13:33:32 | After call to method WriteLine | LoopUnrolling.cs:33:13:33:32 | call to method WriteLine | +| LoopUnrolling.cs:33:13:33:32 | Before call to method WriteLine | LoopUnrolling.cs:33:13:33:33 | ...; | | LoopUnrolling.cs:33:13:33:32 | call to method WriteLine | LoopUnrolling.cs:33:31:33:31 | access to local variable x | | LoopUnrolling.cs:33:13:33:33 | ...; | LoopUnrolling.cs:32:22:32:22 | String x | -| LoopUnrolling.cs:33:31:33:31 | access to local variable x | LoopUnrolling.cs:33:13:33:33 | ...; | -| LoopUnrolling.cs:36:10:36:11 | exit M5 | LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | -| LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:37:5:43:5 | {...} | LoopUnrolling.cs:36:10:36:11 | enter M5 | +| LoopUnrolling.cs:33:13:33:33 | After ...; | LoopUnrolling.cs:33:13:33:32 | After call to method WriteLine | +| LoopUnrolling.cs:33:31:33:31 | access to local variable x | LoopUnrolling.cs:33:13:33:32 | Before call to method WriteLine | +| LoopUnrolling.cs:36:10:36:11 | Exit | LoopUnrolling.cs:36:10:36:11 | Normal Exit | +| LoopUnrolling.cs:36:10:36:11 | Normal Exit | LoopUnrolling.cs:37:5:43:5 | After {...} | +| LoopUnrolling.cs:37:5:43:5 | After {...} | LoopUnrolling.cs:40:9:42:41 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:37:5:43:5 | {...} | LoopUnrolling.cs:36:10:36:11 | Entry | | LoopUnrolling.cs:38:9:38:48 | ... ...; | LoopUnrolling.cs:37:5:43:5 | {...} | -| LoopUnrolling.cs:38:13:38:47 | String[] xs = ... | LoopUnrolling.cs:38:31:38:47 | { ..., ... } | -| LoopUnrolling.cs:38:18:38:47 | 3 | LoopUnrolling.cs:38:9:38:48 | ... ...; | +| LoopUnrolling.cs:38:9:38:48 | After ... ...; | LoopUnrolling.cs:38:13:38:47 | After String[] xs = ... | +| LoopUnrolling.cs:38:13:38:14 | access to local variable xs | LoopUnrolling.cs:38:13:38:47 | Before String[] xs = ... | +| LoopUnrolling.cs:38:13:38:47 | After String[] xs = ... | LoopUnrolling.cs:38:13:38:47 | String[] xs = ... | +| LoopUnrolling.cs:38:13:38:47 | Before String[] xs = ... | LoopUnrolling.cs:38:9:38:48 | ... ...; | +| LoopUnrolling.cs:38:13:38:47 | String[] xs = ... | LoopUnrolling.cs:38:18:38:47 | After array creation of type String[] | +| LoopUnrolling.cs:38:18:38:47 | 3 | LoopUnrolling.cs:38:31:38:47 | After { ..., ... } | +| LoopUnrolling.cs:38:18:38:47 | After array creation of type String[] | LoopUnrolling.cs:38:18:38:47 | array creation of type String[] | +| LoopUnrolling.cs:38:18:38:47 | Before array creation of type String[] | LoopUnrolling.cs:38:13:38:14 | access to local variable xs | | LoopUnrolling.cs:38:18:38:47 | array creation of type String[] | LoopUnrolling.cs:38:18:38:47 | 3 | +| LoopUnrolling.cs:38:31:38:47 | After { ..., ... } | LoopUnrolling.cs:38:31:38:47 | { ..., ... } | +| LoopUnrolling.cs:38:31:38:47 | Before { ..., ... } | LoopUnrolling.cs:38:18:38:47 | Before array creation of type String[] | | LoopUnrolling.cs:38:31:38:47 | { ..., ... } | LoopUnrolling.cs:38:43:38:45 | "c" | -| LoopUnrolling.cs:38:33:38:35 | "a" | LoopUnrolling.cs:38:18:38:47 | array creation of type String[] | +| LoopUnrolling.cs:38:33:38:35 | "a" | LoopUnrolling.cs:38:31:38:47 | Before { ..., ... } | | LoopUnrolling.cs:38:38:38:40 | "b" | LoopUnrolling.cs:38:33:38:35 | "a" | | LoopUnrolling.cs:38:43:38:45 | "c" | LoopUnrolling.cs:38:38:38:40 | "b" | -| LoopUnrolling.cs:39:9:39:48 | ... ...; | LoopUnrolling.cs:38:13:38:47 | String[] xs = ... | -| LoopUnrolling.cs:39:13:39:47 | String[] ys = ... | LoopUnrolling.cs:39:31:39:47 | { ..., ... } | -| LoopUnrolling.cs:39:18:39:47 | 3 | LoopUnrolling.cs:39:9:39:48 | ... ...; | +| LoopUnrolling.cs:39:9:39:48 | ... ...; | LoopUnrolling.cs:38:9:38:48 | After ... ...; | +| LoopUnrolling.cs:39:9:39:48 | After ... ...; | LoopUnrolling.cs:39:13:39:47 | After String[] ys = ... | +| LoopUnrolling.cs:39:13:39:14 | access to local variable ys | LoopUnrolling.cs:39:13:39:47 | Before String[] ys = ... | +| LoopUnrolling.cs:39:13:39:47 | After String[] ys = ... | LoopUnrolling.cs:39:13:39:47 | String[] ys = ... | +| LoopUnrolling.cs:39:13:39:47 | Before String[] ys = ... | LoopUnrolling.cs:39:9:39:48 | ... ...; | +| LoopUnrolling.cs:39:13:39:47 | String[] ys = ... | LoopUnrolling.cs:39:18:39:47 | After array creation of type String[] | +| LoopUnrolling.cs:39:18:39:47 | 3 | LoopUnrolling.cs:39:31:39:47 | After { ..., ... } | +| LoopUnrolling.cs:39:18:39:47 | After array creation of type String[] | LoopUnrolling.cs:39:18:39:47 | array creation of type String[] | +| LoopUnrolling.cs:39:18:39:47 | Before array creation of type String[] | LoopUnrolling.cs:39:13:39:14 | access to local variable ys | | LoopUnrolling.cs:39:18:39:47 | array creation of type String[] | LoopUnrolling.cs:39:18:39:47 | 3 | +| LoopUnrolling.cs:39:31:39:47 | After { ..., ... } | LoopUnrolling.cs:39:31:39:47 | { ..., ... } | +| LoopUnrolling.cs:39:31:39:47 | Before { ..., ... } | LoopUnrolling.cs:39:18:39:47 | Before array creation of type String[] | | LoopUnrolling.cs:39:31:39:47 | { ..., ... } | LoopUnrolling.cs:39:43:39:45 | "2" | -| LoopUnrolling.cs:39:33:39:35 | "0" | LoopUnrolling.cs:39:18:39:47 | array creation of type String[] | +| LoopUnrolling.cs:39:33:39:35 | "0" | LoopUnrolling.cs:39:31:39:47 | Before { ..., ... } | | LoopUnrolling.cs:39:38:39:40 | "1" | LoopUnrolling.cs:39:33:39:35 | "0" | | LoopUnrolling.cs:39:43:39:45 | "2" | LoopUnrolling.cs:39:38:39:40 | "1" | -| LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:40:27:40:28 | access to local variable xs | -| LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:40:27:40:28 | access to local variable xs | LoopUnrolling.cs:39:13:39:47 | String[] ys = ... | -| LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:41:31:41:32 | access to local variable ys | -| LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:42:17:42:40 | call to method WriteLine | -| LoopUnrolling.cs:41:31:41:32 | access to local variable ys | LoopUnrolling.cs:40:22:40:22 | String x | -| LoopUnrolling.cs:42:17:42:40 | call to method WriteLine | LoopUnrolling.cs:42:35:42:39 | ... + ... | +| LoopUnrolling.cs:40:9:42:41 | After foreach (... ... in ...) ... | LoopUnrolling.cs:40:9:42:41 | [LoopHeader] foreach (... ... in ...) ... | +| LoopUnrolling.cs:40:9:42:41 | After foreach (... ... in ...) ... | LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:40:9:42:41 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:41:13:42:41 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:39:9:39:48 | After ... ...; | +| LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:40:27:40:28 | access to local variable xs | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:41:13:42:41 | After foreach (... ... in ...) ... | LoopUnrolling.cs:41:13:42:41 | [LoopHeader] foreach (... ... in ...) ... | +| LoopUnrolling.cs:41:13:42:41 | After foreach (... ... in ...) ... | LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [empty] | +| LoopUnrolling.cs:41:13:42:41 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:42:17:42:41 | After ...; | +| LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:40:22:40:22 | String x | +| LoopUnrolling.cs:41:26:41:26 | String y | LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [non-empty] | +| LoopUnrolling.cs:41:31:41:32 | access to local variable ys | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:42:17:42:40 | After call to method WriteLine | LoopUnrolling.cs:42:17:42:40 | call to method WriteLine | +| LoopUnrolling.cs:42:17:42:40 | Before call to method WriteLine | LoopUnrolling.cs:42:17:42:41 | ...; | +| LoopUnrolling.cs:42:17:42:40 | call to method WriteLine | LoopUnrolling.cs:42:35:42:39 | After ... + ... | | LoopUnrolling.cs:42:17:42:41 | ...; | LoopUnrolling.cs:41:26:41:26 | String y | -| LoopUnrolling.cs:42:35:42:35 | access to local variable x | LoopUnrolling.cs:42:17:42:41 | ...; | +| LoopUnrolling.cs:42:17:42:41 | After ...; | LoopUnrolling.cs:42:17:42:40 | After call to method WriteLine | +| LoopUnrolling.cs:42:35:42:35 | access to local variable x | LoopUnrolling.cs:42:35:42:39 | Before ... + ... | | LoopUnrolling.cs:42:35:42:39 | ... + ... | LoopUnrolling.cs:42:39:42:39 | access to local variable y | +| LoopUnrolling.cs:42:35:42:39 | After ... + ... | LoopUnrolling.cs:42:35:42:39 | ... + ... | +| LoopUnrolling.cs:42:35:42:39 | Before ... + ... | LoopUnrolling.cs:42:17:42:40 | Before call to method WriteLine | | LoopUnrolling.cs:42:39:42:39 | access to local variable y | LoopUnrolling.cs:42:35:42:35 | access to local variable x | -| LoopUnrolling.cs:45:10:45:11 | exit M6 | LoopUnrolling.cs:45:10:45:11 | exit M6 (normal) | -| LoopUnrolling.cs:45:10:45:11 | exit M6 (normal) | LoopUnrolling.cs:48:9:52:9 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:46:5:53:5 | {...} | LoopUnrolling.cs:45:10:45:11 | enter M6 | +| LoopUnrolling.cs:45:10:45:11 | Exit | LoopUnrolling.cs:45:10:45:11 | Normal Exit | +| LoopUnrolling.cs:45:10:45:11 | Normal Exit | LoopUnrolling.cs:46:5:53:5 | After {...} | +| LoopUnrolling.cs:46:5:53:5 | After {...} | LoopUnrolling.cs:48:9:52:9 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:46:5:53:5 | {...} | LoopUnrolling.cs:45:10:45:11 | Entry | | LoopUnrolling.cs:47:9:47:48 | ... ...; | LoopUnrolling.cs:46:5:53:5 | {...} | -| LoopUnrolling.cs:47:13:47:47 | String[] xs = ... | LoopUnrolling.cs:47:31:47:47 | { ..., ... } | -| LoopUnrolling.cs:47:18:47:47 | 3 | LoopUnrolling.cs:47:9:47:48 | ... ...; | +| LoopUnrolling.cs:47:9:47:48 | After ... ...; | LoopUnrolling.cs:47:13:47:47 | After String[] xs = ... | +| LoopUnrolling.cs:47:13:47:14 | access to local variable xs | LoopUnrolling.cs:47:13:47:47 | Before String[] xs = ... | +| LoopUnrolling.cs:47:13:47:47 | After String[] xs = ... | LoopUnrolling.cs:47:13:47:47 | String[] xs = ... | +| LoopUnrolling.cs:47:13:47:47 | Before String[] xs = ... | LoopUnrolling.cs:47:9:47:48 | ... ...; | +| LoopUnrolling.cs:47:13:47:47 | String[] xs = ... | LoopUnrolling.cs:47:18:47:47 | After array creation of type String[] | +| LoopUnrolling.cs:47:18:47:47 | 3 | LoopUnrolling.cs:47:31:47:47 | After { ..., ... } | +| LoopUnrolling.cs:47:18:47:47 | After array creation of type String[] | LoopUnrolling.cs:47:18:47:47 | array creation of type String[] | +| LoopUnrolling.cs:47:18:47:47 | Before array creation of type String[] | LoopUnrolling.cs:47:13:47:14 | access to local variable xs | | LoopUnrolling.cs:47:18:47:47 | array creation of type String[] | LoopUnrolling.cs:47:18:47:47 | 3 | +| LoopUnrolling.cs:47:31:47:47 | After { ..., ... } | LoopUnrolling.cs:47:31:47:47 | { ..., ... } | +| LoopUnrolling.cs:47:31:47:47 | Before { ..., ... } | LoopUnrolling.cs:47:18:47:47 | Before array creation of type String[] | | LoopUnrolling.cs:47:31:47:47 | { ..., ... } | LoopUnrolling.cs:47:43:47:45 | "c" | -| LoopUnrolling.cs:47:33:47:35 | "a" | LoopUnrolling.cs:47:18:47:47 | array creation of type String[] | +| LoopUnrolling.cs:47:33:47:35 | "a" | LoopUnrolling.cs:47:31:47:47 | Before { ..., ... } | | LoopUnrolling.cs:47:38:47:40 | "b" | LoopUnrolling.cs:47:33:47:35 | "a" | | LoopUnrolling.cs:47:43:47:45 | "c" | LoopUnrolling.cs:47:38:47:40 | "b" | -| LoopUnrolling.cs:48:9:52:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:48:27:48:28 | access to local variable xs | -| LoopUnrolling.cs:48:27:48:28 | access to local variable xs | LoopUnrolling.cs:47:13:47:47 | String[] xs = ... | +| LoopUnrolling.cs:48:9:52:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:48:27:48:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:48:9:52:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:47:9:47:48 | After ... ...; | +| LoopUnrolling.cs:48:22:48:22 | String x | LoopUnrolling.cs:48:27:48:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:48:27:48:28 | After access to local variable xs [empty] | LoopUnrolling.cs:48:27:48:28 | access to local variable xs | +| LoopUnrolling.cs:48:27:48:28 | access to local variable xs | LoopUnrolling.cs:48:9:52:9 | foreach (... ... in ...) ... | | LoopUnrolling.cs:49:9:52:9 | {...} | LoopUnrolling.cs:48:22:48:22 | String x | +| LoopUnrolling.cs:50:16:50:35 | After call to method WriteLine | LoopUnrolling.cs:50:16:50:35 | call to method WriteLine | +| LoopUnrolling.cs:50:16:50:35 | Before call to method WriteLine | LoopUnrolling.cs:50:16:50:36 | ...; | | LoopUnrolling.cs:50:16:50:35 | call to method WriteLine | LoopUnrolling.cs:50:34:50:34 | access to local variable x | | LoopUnrolling.cs:50:16:50:36 | ...; | LoopUnrolling.cs:50:9:50:13 | Label: | -| LoopUnrolling.cs:50:34:50:34 | access to local variable x | LoopUnrolling.cs:50:16:50:36 | ...; | -| LoopUnrolling.cs:51:13:51:23 | goto ...; | LoopUnrolling.cs:50:16:50:35 | call to method WriteLine | -| LoopUnrolling.cs:55:10:55:11 | exit M7 | LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | -| LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:56:5:65:5 | {...} | LoopUnrolling.cs:55:10:55:11 | enter M7 | +| LoopUnrolling.cs:50:16:50:36 | After ...; | LoopUnrolling.cs:50:16:50:35 | After call to method WriteLine | +| LoopUnrolling.cs:50:34:50:34 | access to local variable x | LoopUnrolling.cs:50:16:50:35 | Before call to method WriteLine | +| LoopUnrolling.cs:51:13:51:23 | Before goto ...; | LoopUnrolling.cs:50:16:50:36 | After ...; | +| LoopUnrolling.cs:51:13:51:23 | goto ...; | LoopUnrolling.cs:51:13:51:23 | Before goto ...; | +| LoopUnrolling.cs:55:10:55:11 | Exit | LoopUnrolling.cs:55:10:55:11 | Normal Exit | +| LoopUnrolling.cs:55:10:55:11 | Normal Exit | LoopUnrolling.cs:56:5:65:5 | After {...} | +| LoopUnrolling.cs:55:18:55:18 | b | LoopUnrolling.cs:55:10:55:11 | Entry | +| LoopUnrolling.cs:56:5:65:5 | After {...} | LoopUnrolling.cs:58:9:64:9 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:56:5:65:5 | {...} | LoopUnrolling.cs:55:18:55:18 | b | | LoopUnrolling.cs:57:9:57:48 | ... ...; | LoopUnrolling.cs:56:5:65:5 | {...} | -| LoopUnrolling.cs:57:13:57:47 | String[] xs = ... | LoopUnrolling.cs:57:31:57:47 | { ..., ... } | -| LoopUnrolling.cs:57:18:57:47 | 3 | LoopUnrolling.cs:57:9:57:48 | ... ...; | +| LoopUnrolling.cs:57:9:57:48 | After ... ...; | LoopUnrolling.cs:57:13:57:47 | After String[] xs = ... | +| LoopUnrolling.cs:57:13:57:14 | access to local variable xs | LoopUnrolling.cs:57:13:57:47 | Before String[] xs = ... | +| LoopUnrolling.cs:57:13:57:47 | After String[] xs = ... | LoopUnrolling.cs:57:13:57:47 | String[] xs = ... | +| LoopUnrolling.cs:57:13:57:47 | Before String[] xs = ... | LoopUnrolling.cs:57:9:57:48 | ... ...; | +| LoopUnrolling.cs:57:13:57:47 | String[] xs = ... | LoopUnrolling.cs:57:18:57:47 | After array creation of type String[] | +| LoopUnrolling.cs:57:18:57:47 | 3 | LoopUnrolling.cs:57:31:57:47 | After { ..., ... } | +| LoopUnrolling.cs:57:18:57:47 | After array creation of type String[] | LoopUnrolling.cs:57:18:57:47 | array creation of type String[] | +| LoopUnrolling.cs:57:18:57:47 | Before array creation of type String[] | LoopUnrolling.cs:57:13:57:14 | access to local variable xs | | LoopUnrolling.cs:57:18:57:47 | array creation of type String[] | LoopUnrolling.cs:57:18:57:47 | 3 | +| LoopUnrolling.cs:57:31:57:47 | After { ..., ... } | LoopUnrolling.cs:57:31:57:47 | { ..., ... } | +| LoopUnrolling.cs:57:31:57:47 | Before { ..., ... } | LoopUnrolling.cs:57:18:57:47 | Before array creation of type String[] | | LoopUnrolling.cs:57:31:57:47 | { ..., ... } | LoopUnrolling.cs:57:43:57:45 | "c" | -| LoopUnrolling.cs:57:33:57:35 | "a" | LoopUnrolling.cs:57:18:57:47 | array creation of type String[] | +| LoopUnrolling.cs:57:33:57:35 | "a" | LoopUnrolling.cs:57:31:57:47 | Before { ..., ... } | | LoopUnrolling.cs:57:38:57:40 | "b" | LoopUnrolling.cs:57:33:57:35 | "a" | | LoopUnrolling.cs:57:43:57:45 | "c" | LoopUnrolling.cs:57:38:57:40 | "b" | -| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:58:27:58:28 | access to local variable xs | -| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:62:17:62:17 | access to parameter b | -| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:63:17:63:36 | call to method WriteLine | -| LoopUnrolling.cs:58:27:58:28 | access to local variable xs | LoopUnrolling.cs:57:13:57:47 | String[] xs = ... | +| LoopUnrolling.cs:58:9:64:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:58:9:64:9 | [LoopHeader] foreach (... ... in ...) ... | +| LoopUnrolling.cs:58:9:64:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:58:9:64:9 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:59:9:64:9 | After {...} | +| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:57:9:57:48 | After ... ...; | +| LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:58:27:58:28 | access to local variable xs | LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:59:9:64:9 | After {...} | LoopUnrolling.cs:62:13:63:37 | After if (...) ... | | LoopUnrolling.cs:59:9:64:9 | {...} | LoopUnrolling.cs:58:22:58:22 | String x | +| LoopUnrolling.cs:60:13:61:37 | After if (...) ... | LoopUnrolling.cs:60:17:60:17 | After access to parameter b [false] | +| LoopUnrolling.cs:60:13:61:37 | After if (...) ... | LoopUnrolling.cs:61:17:61:37 | After ...; | | LoopUnrolling.cs:60:13:61:37 | if (...) ... | LoopUnrolling.cs:59:9:64:9 | {...} | | LoopUnrolling.cs:60:17:60:17 | access to parameter b | LoopUnrolling.cs:60:13:61:37 | if (...) ... | +| LoopUnrolling.cs:61:17:61:36 | After call to method WriteLine | LoopUnrolling.cs:61:17:61:36 | call to method WriteLine | +| LoopUnrolling.cs:61:17:61:36 | Before call to method WriteLine | LoopUnrolling.cs:61:17:61:37 | ...; | | LoopUnrolling.cs:61:17:61:36 | call to method WriteLine | LoopUnrolling.cs:61:35:61:35 | access to local variable x | -| LoopUnrolling.cs:61:35:61:35 | access to local variable x | LoopUnrolling.cs:61:17:61:37 | ...; | -| LoopUnrolling.cs:62:13:63:37 | if (...) ... | LoopUnrolling.cs:60:17:60:17 | access to parameter b | -| LoopUnrolling.cs:62:13:63:37 | if (...) ... | LoopUnrolling.cs:61:17:61:36 | call to method WriteLine | +| LoopUnrolling.cs:61:17:61:37 | ...; | LoopUnrolling.cs:60:17:60:17 | After access to parameter b [true] | +| LoopUnrolling.cs:61:17:61:37 | After ...; | LoopUnrolling.cs:61:17:61:36 | After call to method WriteLine | +| LoopUnrolling.cs:61:35:61:35 | access to local variable x | LoopUnrolling.cs:61:17:61:36 | Before call to method WriteLine | +| LoopUnrolling.cs:62:13:63:37 | After if (...) ... | LoopUnrolling.cs:62:17:62:17 | After access to parameter b [false] | +| LoopUnrolling.cs:62:13:63:37 | After if (...) ... | LoopUnrolling.cs:63:17:63:37 | After ...; | +| LoopUnrolling.cs:62:13:63:37 | if (...) ... | LoopUnrolling.cs:60:13:61:37 | After if (...) ... | | LoopUnrolling.cs:62:17:62:17 | access to parameter b | LoopUnrolling.cs:62:13:63:37 | if (...) ... | +| LoopUnrolling.cs:63:17:63:36 | After call to method WriteLine | LoopUnrolling.cs:63:17:63:36 | call to method WriteLine | +| LoopUnrolling.cs:63:17:63:36 | Before call to method WriteLine | LoopUnrolling.cs:63:17:63:37 | ...; | | LoopUnrolling.cs:63:17:63:36 | call to method WriteLine | LoopUnrolling.cs:63:35:63:35 | access to local variable x | -| LoopUnrolling.cs:63:35:63:35 | access to local variable x | LoopUnrolling.cs:63:17:63:37 | ...; | -| LoopUnrolling.cs:67:10:67:11 | exit M8 | LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | -| LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | LoopUnrolling.cs:70:13:70:19 | return ...; | -| LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:68:5:74:5 | {...} | LoopUnrolling.cs:67:10:67:11 | enter M8 | +| LoopUnrolling.cs:63:17:63:37 | ...; | LoopUnrolling.cs:62:17:62:17 | After access to parameter b [true] | +| LoopUnrolling.cs:63:17:63:37 | After ...; | LoopUnrolling.cs:63:17:63:36 | After call to method WriteLine | +| LoopUnrolling.cs:63:35:63:35 | access to local variable x | LoopUnrolling.cs:63:17:63:36 | Before call to method WriteLine | +| LoopUnrolling.cs:67:10:67:11 | Exit | LoopUnrolling.cs:67:10:67:11 | Normal Exit | +| LoopUnrolling.cs:67:10:67:11 | Normal Exit | LoopUnrolling.cs:68:5:74:5 | After {...} | +| LoopUnrolling.cs:67:10:67:11 | Normal Exit | LoopUnrolling.cs:70:13:70:19 | return ...; | +| LoopUnrolling.cs:67:26:67:29 | args | LoopUnrolling.cs:67:10:67:11 | Entry | +| LoopUnrolling.cs:68:5:74:5 | After {...} | LoopUnrolling.cs:72:9:73:35 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:68:5:74:5 | {...} | LoopUnrolling.cs:67:26:67:29 | args | +| LoopUnrolling.cs:69:9:70:19 | After if (...) ... | LoopUnrolling.cs:69:13:69:23 | After !... [false] | | LoopUnrolling.cs:69:9:70:19 | if (...) ... | LoopUnrolling.cs:68:5:74:5 | {...} | -| LoopUnrolling.cs:69:14:69:17 | access to parameter args | LoopUnrolling.cs:69:9:70:19 | if (...) ... | +| LoopUnrolling.cs:69:13:69:23 | !... | LoopUnrolling.cs:69:9:70:19 | if (...) ... | +| LoopUnrolling.cs:69:13:69:23 | After !... [false] | LoopUnrolling.cs:69:14:69:23 | After call to method Any [true] | +| LoopUnrolling.cs:69:13:69:23 | After !... [true] | LoopUnrolling.cs:69:14:69:23 | After call to method Any [false] | +| LoopUnrolling.cs:69:14:69:17 | access to parameter args | LoopUnrolling.cs:69:14:69:23 | Before call to method Any | +| LoopUnrolling.cs:69:14:69:23 | Before call to method Any | LoopUnrolling.cs:69:13:69:23 | !... | | LoopUnrolling.cs:69:14:69:23 | call to method Any | LoopUnrolling.cs:69:14:69:17 | access to parameter args | -| LoopUnrolling.cs:70:13:70:19 | return ...; | LoopUnrolling.cs:69:13:69:23 | [true] !... | -| LoopUnrolling.cs:71:9:71:12 | access to parameter args | LoopUnrolling.cs:71:9:71:21 | ...; | +| LoopUnrolling.cs:70:13:70:19 | Before return ...; | LoopUnrolling.cs:69:13:69:23 | After !... [true] | +| LoopUnrolling.cs:70:13:70:19 | return ...; | LoopUnrolling.cs:70:13:70:19 | Before return ...; | +| LoopUnrolling.cs:71:9:71:12 | access to parameter args | LoopUnrolling.cs:71:9:71:20 | Before call to method Clear | +| LoopUnrolling.cs:71:9:71:20 | After call to method Clear | LoopUnrolling.cs:71:9:71:20 | call to method Clear | +| LoopUnrolling.cs:71:9:71:20 | Before call to method Clear | LoopUnrolling.cs:71:9:71:21 | ...; | | LoopUnrolling.cs:71:9:71:20 | call to method Clear | LoopUnrolling.cs:71:9:71:12 | access to parameter args | -| LoopUnrolling.cs:71:9:71:21 | ...; | LoopUnrolling.cs:69:13:69:23 | [false] !... | -| LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:72:29:72:32 | access to parameter args | -| LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:73:13:73:34 | call to method WriteLine | -| LoopUnrolling.cs:72:29:72:32 | access to parameter args | LoopUnrolling.cs:71:9:71:20 | call to method Clear | +| LoopUnrolling.cs:71:9:71:21 | ...; | LoopUnrolling.cs:69:9:70:19 | After if (...) ... | +| LoopUnrolling.cs:71:9:71:21 | After ...; | LoopUnrolling.cs:71:9:71:20 | After call to method Clear | +| LoopUnrolling.cs:72:9:73:35 | After foreach (... ... in ...) ... | LoopUnrolling.cs:72:9:73:35 | [LoopHeader] foreach (... ... in ...) ... | +| LoopUnrolling.cs:72:9:73:35 | After foreach (... ... in ...) ... | LoopUnrolling.cs:72:29:72:32 | After access to parameter args [empty] | +| LoopUnrolling.cs:72:9:73:35 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:73:13:73:35 | After ...; | +| LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:71:9:71:21 | After ...; | +| LoopUnrolling.cs:72:22:72:24 | String arg | LoopUnrolling.cs:72:29:72:32 | After access to parameter args [non-empty] | +| LoopUnrolling.cs:72:29:72:32 | access to parameter args | LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:73:13:73:34 | After call to method WriteLine | LoopUnrolling.cs:73:13:73:34 | call to method WriteLine | +| LoopUnrolling.cs:73:13:73:34 | Before call to method WriteLine | LoopUnrolling.cs:73:13:73:35 | ...; | | LoopUnrolling.cs:73:13:73:34 | call to method WriteLine | LoopUnrolling.cs:73:31:73:33 | access to local variable arg | | LoopUnrolling.cs:73:13:73:35 | ...; | LoopUnrolling.cs:72:22:72:24 | String arg | -| LoopUnrolling.cs:73:31:73:33 | access to local variable arg | LoopUnrolling.cs:73:13:73:35 | ...; | -| LoopUnrolling.cs:76:10:76:11 | exit M9 | LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | -| LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:77:5:83:5 | {...} | LoopUnrolling.cs:76:10:76:11 | enter M9 | +| LoopUnrolling.cs:73:13:73:35 | After ...; | LoopUnrolling.cs:73:13:73:34 | After call to method WriteLine | +| LoopUnrolling.cs:73:31:73:33 | access to local variable arg | LoopUnrolling.cs:73:13:73:34 | Before call to method WriteLine | +| LoopUnrolling.cs:76:10:76:11 | Exit | LoopUnrolling.cs:76:10:76:11 | Normal Exit | +| LoopUnrolling.cs:76:10:76:11 | Normal Exit | LoopUnrolling.cs:77:5:83:5 | After {...} | +| LoopUnrolling.cs:77:5:83:5 | After {...} | LoopUnrolling.cs:79:9:82:9 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:77:5:83:5 | {...} | LoopUnrolling.cs:76:10:76:11 | Entry | | LoopUnrolling.cs:78:9:78:34 | ... ...; | LoopUnrolling.cs:77:5:83:5 | {...} | -| LoopUnrolling.cs:78:13:78:33 | String[,] xs = ... | LoopUnrolling.cs:78:18:78:33 | array creation of type String[,] | +| LoopUnrolling.cs:78:9:78:34 | After ... ...; | LoopUnrolling.cs:78:13:78:33 | After String[,] xs = ... | +| LoopUnrolling.cs:78:13:78:14 | access to local variable xs | LoopUnrolling.cs:78:13:78:33 | Before String[,] xs = ... | +| LoopUnrolling.cs:78:13:78:33 | After String[,] xs = ... | LoopUnrolling.cs:78:13:78:33 | String[,] xs = ... | +| LoopUnrolling.cs:78:13:78:33 | Before String[,] xs = ... | LoopUnrolling.cs:78:9:78:34 | ... ...; | +| LoopUnrolling.cs:78:13:78:33 | String[,] xs = ... | LoopUnrolling.cs:78:18:78:33 | After array creation of type String[,] | +| LoopUnrolling.cs:78:18:78:33 | After array creation of type String[,] | LoopUnrolling.cs:78:18:78:33 | array creation of type String[,] | +| LoopUnrolling.cs:78:18:78:33 | Before array creation of type String[,] | LoopUnrolling.cs:78:13:78:14 | access to local variable xs | | LoopUnrolling.cs:78:18:78:33 | array creation of type String[,] | LoopUnrolling.cs:78:32:78:32 | 0 | -| LoopUnrolling.cs:78:29:78:29 | 2 | LoopUnrolling.cs:78:9:78:34 | ... ...; | +| LoopUnrolling.cs:78:29:78:29 | 2 | LoopUnrolling.cs:78:18:78:33 | Before array creation of type String[,] | | LoopUnrolling.cs:78:32:78:32 | 0 | LoopUnrolling.cs:78:29:78:29 | 2 | -| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:79:27:79:28 | access to local variable xs | -| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:81:13:81:32 | call to method WriteLine | -| LoopUnrolling.cs:79:27:79:28 | access to local variable xs | LoopUnrolling.cs:78:13:78:33 | String[,] xs = ... | +| LoopUnrolling.cs:79:9:82:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:79:9:82:9 | [LoopHeader] foreach (... ... in ...) ... | +| LoopUnrolling.cs:79:9:82:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:79:27:79:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:79:9:82:9 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:80:9:82:9 | After {...} | +| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:78:9:78:34 | After ... ...; | +| LoopUnrolling.cs:79:22:79:22 | String x | LoopUnrolling.cs:79:27:79:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:79:27:79:28 | access to local variable xs | LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:80:9:82:9 | After {...} | LoopUnrolling.cs:81:13:81:33 | After ...; | | LoopUnrolling.cs:80:9:82:9 | {...} | LoopUnrolling.cs:79:22:79:22 | String x | +| LoopUnrolling.cs:81:13:81:32 | After call to method WriteLine | LoopUnrolling.cs:81:13:81:32 | call to method WriteLine | +| LoopUnrolling.cs:81:13:81:32 | Before call to method WriteLine | LoopUnrolling.cs:81:13:81:33 | ...; | | LoopUnrolling.cs:81:13:81:32 | call to method WriteLine | LoopUnrolling.cs:81:31:81:31 | access to local variable x | | LoopUnrolling.cs:81:13:81:33 | ...; | LoopUnrolling.cs:80:9:82:9 | {...} | -| LoopUnrolling.cs:81:31:81:31 | access to local variable x | LoopUnrolling.cs:81:13:81:33 | ...; | -| LoopUnrolling.cs:85:10:85:12 | exit M10 | LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | -| LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:86:5:92:5 | {...} | LoopUnrolling.cs:85:10:85:12 | enter M10 | +| LoopUnrolling.cs:81:13:81:33 | After ...; | LoopUnrolling.cs:81:13:81:32 | After call to method WriteLine | +| LoopUnrolling.cs:81:31:81:31 | access to local variable x | LoopUnrolling.cs:81:13:81:32 | Before call to method WriteLine | +| LoopUnrolling.cs:85:10:85:12 | Exit | LoopUnrolling.cs:85:10:85:12 | Normal Exit | +| LoopUnrolling.cs:85:10:85:12 | Normal Exit | LoopUnrolling.cs:86:5:92:5 | After {...} | +| LoopUnrolling.cs:86:5:92:5 | After {...} | LoopUnrolling.cs:88:9:91:9 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:86:5:92:5 | {...} | LoopUnrolling.cs:85:10:85:12 | Entry | | LoopUnrolling.cs:87:9:87:34 | ... ...; | LoopUnrolling.cs:86:5:92:5 | {...} | -| LoopUnrolling.cs:87:13:87:33 | String[,] xs = ... | LoopUnrolling.cs:87:18:87:33 | array creation of type String[,] | +| LoopUnrolling.cs:87:9:87:34 | After ... ...; | LoopUnrolling.cs:87:13:87:33 | After String[,] xs = ... | +| LoopUnrolling.cs:87:13:87:14 | access to local variable xs | LoopUnrolling.cs:87:13:87:33 | Before String[,] xs = ... | +| LoopUnrolling.cs:87:13:87:33 | After String[,] xs = ... | LoopUnrolling.cs:87:13:87:33 | String[,] xs = ... | +| LoopUnrolling.cs:87:13:87:33 | Before String[,] xs = ... | LoopUnrolling.cs:87:9:87:34 | ... ...; | +| LoopUnrolling.cs:87:13:87:33 | String[,] xs = ... | LoopUnrolling.cs:87:18:87:33 | After array creation of type String[,] | +| LoopUnrolling.cs:87:18:87:33 | After array creation of type String[,] | LoopUnrolling.cs:87:18:87:33 | array creation of type String[,] | +| LoopUnrolling.cs:87:18:87:33 | Before array creation of type String[,] | LoopUnrolling.cs:87:13:87:14 | access to local variable xs | | LoopUnrolling.cs:87:18:87:33 | array creation of type String[,] | LoopUnrolling.cs:87:32:87:32 | 2 | -| LoopUnrolling.cs:87:29:87:29 | 0 | LoopUnrolling.cs:87:9:87:34 | ... ...; | +| LoopUnrolling.cs:87:29:87:29 | 0 | LoopUnrolling.cs:87:18:87:33 | Before array creation of type String[,] | | LoopUnrolling.cs:87:32:87:32 | 2 | LoopUnrolling.cs:87:29:87:29 | 0 | -| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:88:27:88:28 | access to local variable xs | -| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:90:13:90:32 | call to method WriteLine | -| LoopUnrolling.cs:88:27:88:28 | access to local variable xs | LoopUnrolling.cs:87:13:87:33 | String[,] xs = ... | +| LoopUnrolling.cs:88:9:91:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:88:9:91:9 | [LoopHeader] foreach (... ... in ...) ... | +| LoopUnrolling.cs:88:9:91:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:88:27:88:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:88:9:91:9 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:89:9:91:9 | After {...} | +| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:87:9:87:34 | After ... ...; | +| LoopUnrolling.cs:88:22:88:22 | String x | LoopUnrolling.cs:88:27:88:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:88:27:88:28 | access to local variable xs | LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:89:9:91:9 | After {...} | LoopUnrolling.cs:90:13:90:33 | After ...; | | LoopUnrolling.cs:89:9:91:9 | {...} | LoopUnrolling.cs:88:22:88:22 | String x | +| LoopUnrolling.cs:90:13:90:32 | After call to method WriteLine | LoopUnrolling.cs:90:13:90:32 | call to method WriteLine | +| LoopUnrolling.cs:90:13:90:32 | Before call to method WriteLine | LoopUnrolling.cs:90:13:90:33 | ...; | | LoopUnrolling.cs:90:13:90:32 | call to method WriteLine | LoopUnrolling.cs:90:31:90:31 | access to local variable x | | LoopUnrolling.cs:90:13:90:33 | ...; | LoopUnrolling.cs:89:9:91:9 | {...} | -| LoopUnrolling.cs:90:31:90:31 | access to local variable x | LoopUnrolling.cs:90:13:90:33 | ...; | -| LoopUnrolling.cs:94:10:94:12 | exit M11 | LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | -| LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:95:5:101:5 | {...} | LoopUnrolling.cs:94:10:94:12 | enter M11 | +| LoopUnrolling.cs:90:13:90:33 | After ...; | LoopUnrolling.cs:90:13:90:32 | After call to method WriteLine | +| LoopUnrolling.cs:90:31:90:31 | access to local variable x | LoopUnrolling.cs:90:13:90:32 | Before call to method WriteLine | +| LoopUnrolling.cs:94:10:94:12 | Exit | LoopUnrolling.cs:94:10:94:12 | Normal Exit | +| LoopUnrolling.cs:94:10:94:12 | Normal Exit | LoopUnrolling.cs:95:5:101:5 | After {...} | +| LoopUnrolling.cs:95:5:101:5 | After {...} | LoopUnrolling.cs:97:9:100:9 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:95:5:101:5 | {...} | LoopUnrolling.cs:94:10:94:12 | Entry | | LoopUnrolling.cs:96:9:96:34 | ... ...; | LoopUnrolling.cs:95:5:101:5 | {...} | -| LoopUnrolling.cs:96:13:96:33 | String[,] xs = ... | LoopUnrolling.cs:96:18:96:33 | array creation of type String[,] | +| LoopUnrolling.cs:96:9:96:34 | After ... ...; | LoopUnrolling.cs:96:13:96:33 | After String[,] xs = ... | +| LoopUnrolling.cs:96:13:96:14 | access to local variable xs | LoopUnrolling.cs:96:13:96:33 | Before String[,] xs = ... | +| LoopUnrolling.cs:96:13:96:33 | After String[,] xs = ... | LoopUnrolling.cs:96:13:96:33 | String[,] xs = ... | +| LoopUnrolling.cs:96:13:96:33 | Before String[,] xs = ... | LoopUnrolling.cs:96:9:96:34 | ... ...; | +| LoopUnrolling.cs:96:13:96:33 | String[,] xs = ... | LoopUnrolling.cs:96:18:96:33 | After array creation of type String[,] | +| LoopUnrolling.cs:96:18:96:33 | After array creation of type String[,] | LoopUnrolling.cs:96:18:96:33 | array creation of type String[,] | +| LoopUnrolling.cs:96:18:96:33 | Before array creation of type String[,] | LoopUnrolling.cs:96:13:96:14 | access to local variable xs | | LoopUnrolling.cs:96:18:96:33 | array creation of type String[,] | LoopUnrolling.cs:96:32:96:32 | 2 | -| LoopUnrolling.cs:96:29:96:29 | 2 | LoopUnrolling.cs:96:9:96:34 | ... ...; | +| LoopUnrolling.cs:96:29:96:29 | 2 | LoopUnrolling.cs:96:18:96:33 | Before array creation of type String[,] | | LoopUnrolling.cs:96:32:96:32 | 2 | LoopUnrolling.cs:96:29:96:29 | 2 | -| LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:97:27:97:28 | access to local variable xs | -| LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:99:13:99:32 | call to method WriteLine | -| LoopUnrolling.cs:97:27:97:28 | access to local variable xs | LoopUnrolling.cs:96:13:96:33 | String[,] xs = ... | +| LoopUnrolling.cs:97:9:100:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:97:9:100:9 | [LoopHeader] foreach (... ... in ...) ... | +| LoopUnrolling.cs:97:9:100:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:97:27:97:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:97:9:100:9 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:98:9:100:9 | After {...} | +| LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:96:9:96:34 | After ... ...; | +| LoopUnrolling.cs:97:22:97:22 | String x | LoopUnrolling.cs:97:27:97:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:97:27:97:28 | access to local variable xs | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:98:9:100:9 | After {...} | LoopUnrolling.cs:99:13:99:33 | After ...; | | LoopUnrolling.cs:98:9:100:9 | {...} | LoopUnrolling.cs:97:22:97:22 | String x | +| LoopUnrolling.cs:99:13:99:32 | After call to method WriteLine | LoopUnrolling.cs:99:13:99:32 | call to method WriteLine | +| LoopUnrolling.cs:99:13:99:32 | Before call to method WriteLine | LoopUnrolling.cs:99:13:99:33 | ...; | | LoopUnrolling.cs:99:13:99:32 | call to method WriteLine | LoopUnrolling.cs:99:31:99:31 | access to local variable x | | LoopUnrolling.cs:99:13:99:33 | ...; | LoopUnrolling.cs:98:9:100:9 | {...} | -| LoopUnrolling.cs:99:31:99:31 | access to local variable x | LoopUnrolling.cs:99:13:99:33 | ...; | -| MultiImplementationA.cs:4:7:4:8 | call to constructor Object | MultiImplementationA.cs:4:7:4:8 | call to method | +| LoopUnrolling.cs:99:13:99:33 | After ...; | LoopUnrolling.cs:99:13:99:32 | After call to method WriteLine | +| LoopUnrolling.cs:99:31:99:31 | access to local variable x | LoopUnrolling.cs:99:13:99:32 | Before call to method WriteLine | +| MultiImplementationA.cs:4:7:4:8 | After call to constructor Object | MultiImplementationA.cs:4:7:4:8 | call to constructor Object | +| MultiImplementationA.cs:4:7:4:8 | After call to method | MultiImplementationA.cs:4:7:4:8 | call to method | +| MultiImplementationA.cs:4:7:4:8 | Before call to constructor Object | MultiImplementationA.cs:4:7:4:8 | After call to method | +| MultiImplementationA.cs:4:7:4:8 | Exit | MultiImplementationA.cs:4:7:4:8 | Normal Exit | +| MultiImplementationA.cs:4:7:4:8 | Normal Exit | MultiImplementationA.cs:4:7:4:8 | {...} | +| MultiImplementationA.cs:4:7:4:8 | Normal Exit | MultiImplementationB.cs:1:7:1:8 | {...} | +| MultiImplementationA.cs:4:7:4:8 | call to constructor Object | MultiImplementationA.cs:4:7:4:8 | Before call to constructor Object | | MultiImplementationA.cs:4:7:4:8 | call to method | MultiImplementationA.cs:4:7:4:8 | this access | -| MultiImplementationA.cs:4:7:4:8 | exit C1 | MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | -| MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | MultiImplementationA.cs:4:7:4:8 | {...} | -| MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | MultiImplementationB.cs:1:7:1:8 | {...} | -| MultiImplementationA.cs:4:7:4:8 | {...} | MultiImplementationA.cs:4:7:4:8 | call to constructor Object | -| MultiImplementationA.cs:6:22:6:31 | exit get_P1 (abnormal) | MultiImplementationA.cs:6:22:6:31 | throw ... | -| MultiImplementationA.cs:6:22:6:31 | exit get_P1 (normal) | MultiImplementationB.cs:3:22:3:22 | 0 | +| MultiImplementationA.cs:4:7:4:8 | this access | MultiImplementationA.cs:4:7:4:8 | Before call to method | +| MultiImplementationA.cs:4:7:4:8 | {...} | MultiImplementationA.cs:4:7:4:8 | After call to constructor Object | +| MultiImplementationA.cs:6:22:6:31 | Exceptional Exit | MultiImplementationA.cs:6:22:6:31 | throw ... | +| MultiImplementationA.cs:6:22:6:31 | Normal Exit | MultiImplementationB.cs:3:22:3:22 | 0 | | MultiImplementationA.cs:6:22:6:31 | throw ... | MultiImplementationA.cs:6:28:6:31 | null | -| MultiImplementationA.cs:7:21:7:23 | exit get_P2 (abnormal) | MultiImplementationA.cs:7:27:7:37 | throw ...; | -| MultiImplementationA.cs:7:21:7:23 | exit get_P2 (normal) | MultiImplementationB.cs:4:27:4:35 | return ...; | +| MultiImplementationA.cs:6:28:6:31 | null | MultiImplementationA.cs:6:22:6:31 | Before throw ... | +| MultiImplementationA.cs:7:21:7:23 | Exceptional Exit | MultiImplementationA.cs:7:27:7:37 | throw ...; | +| MultiImplementationA.cs:7:21:7:23 | Normal Exit | MultiImplementationB.cs:4:27:4:35 | return ...; | +| MultiImplementationA.cs:7:27:7:37 | Before throw ...; | MultiImplementationA.cs:7:25:7:39 | {...} | | MultiImplementationA.cs:7:27:7:37 | throw ...; | MultiImplementationA.cs:7:33:7:36 | null | -| MultiImplementationA.cs:7:33:7:36 | null | MultiImplementationA.cs:7:25:7:39 | {...} | -| MultiImplementationA.cs:7:41:7:43 | exit set_P2 (abnormal) | MultiImplementationA.cs:7:47:7:57 | throw ...; | -| MultiImplementationA.cs:7:41:7:43 | exit set_P2 (normal) | MultiImplementationB.cs:4:43:4:45 | {...} | +| MultiImplementationA.cs:7:33:7:36 | null | MultiImplementationA.cs:7:27:7:37 | Before throw ...; | +| MultiImplementationA.cs:7:41:7:43 | Exceptional Exit | MultiImplementationA.cs:7:47:7:57 | throw ...; | +| MultiImplementationA.cs:7:41:7:43 | Normal Exit | MultiImplementationB.cs:4:43:4:45 | {...} | +| MultiImplementationA.cs:7:41:7:43 | value | MultiImplementationA.cs:7:41:7:43 | Entry | +| MultiImplementationA.cs:7:47:7:57 | Before throw ...; | MultiImplementationA.cs:7:45:7:59 | {...} | | MultiImplementationA.cs:7:47:7:57 | throw ...; | MultiImplementationA.cs:7:53:7:56 | null | -| MultiImplementationA.cs:7:53:7:56 | null | MultiImplementationA.cs:7:45:7:59 | {...} | -| MultiImplementationA.cs:8:16:8:16 | exit M (abnormal) | MultiImplementationA.cs:8:23:8:32 | throw ... | -| MultiImplementationA.cs:8:16:8:16 | exit M (normal) | MultiImplementationB.cs:5:23:5:23 | 2 | +| MultiImplementationA.cs:7:53:7:56 | null | MultiImplementationA.cs:7:47:7:57 | Before throw ...; | +| MultiImplementationA.cs:8:16:8:16 | Exceptional Exit | MultiImplementationA.cs:8:23:8:32 | throw ... | +| MultiImplementationA.cs:8:16:8:16 | Normal Exit | MultiImplementationB.cs:5:23:5:23 | 2 | | MultiImplementationA.cs:8:23:8:32 | throw ... | MultiImplementationA.cs:8:29:8:32 | null | -| MultiImplementationA.cs:11:7:11:8 | exit | MultiImplementationA.cs:11:7:11:8 | exit (normal) | -| MultiImplementationA.cs:11:7:11:8 | exit (normal) | MultiImplementationA.cs:24:32:24:34 | ... = ... | -| MultiImplementationA.cs:11:7:11:8 | exit (normal) | MultiImplementationB.cs:22:32:22:34 | ... = ... | -| MultiImplementationA.cs:13:16:13:16 | access to field F | MultiImplementationA.cs:13:20:13:20 | 0 | -| MultiImplementationA.cs:13:16:13:20 | ... = ... | MultiImplementationA.cs:13:16:13:16 | access to field F | -| MultiImplementationA.cs:13:20:13:20 | 0 | MultiImplementationA.cs:13:16:13:16 | this access | -| MultiImplementationA.cs:14:31:14:31 | access to parameter i | MultiImplementationA.cs:14:31:14:31 | enter get_Item | -| MultiImplementationA.cs:14:31:14:31 | exit get_Item (abnormal) | MultiImplementationB.cs:12:31:12:40 | throw ... | -| MultiImplementationA.cs:14:31:14:31 | exit get_Item (normal) | MultiImplementationA.cs:14:31:14:31 | access to parameter i | -| MultiImplementationA.cs:15:36:15:38 | exit get_Item (abnormal) | MultiImplementationB.cs:13:42:13:52 | throw ...; | -| MultiImplementationA.cs:15:36:15:38 | exit get_Item (normal) | MultiImplementationA.cs:15:42:15:50 | return ...; | -| MultiImplementationA.cs:15:40:15:52 | {...} | MultiImplementationA.cs:15:36:15:38 | enter get_Item | +| MultiImplementationA.cs:8:29:8:32 | null | MultiImplementationA.cs:8:23:8:32 | Before throw ... | +| MultiImplementationA.cs:11:7:11:8 | Exit | MultiImplementationA.cs:11:7:11:8 | Normal Exit | +| MultiImplementationA.cs:11:7:11:8 | Normal Exit | MultiImplementationA.cs:24:32:24:34 | After ... = ... | +| MultiImplementationA.cs:11:7:11:8 | Normal Exit | MultiImplementationB.cs:22:32:22:34 | After ... = ... | +| MultiImplementationA.cs:13:16:13:16 | After access to field F | MultiImplementationA.cs:13:16:13:16 | access to field F | +| MultiImplementationA.cs:13:16:13:16 | Before access to field F | MultiImplementationA.cs:13:16:13:20 | Before ... = ... | +| MultiImplementationA.cs:13:16:13:16 | access to field F | MultiImplementationA.cs:13:16:13:16 | this access | +| MultiImplementationA.cs:13:16:13:16 | this access | MultiImplementationA.cs:13:16:13:16 | Before access to field F | +| MultiImplementationA.cs:13:16:13:20 | ... = ... | MultiImplementationA.cs:13:20:13:20 | 0 | +| MultiImplementationA.cs:13:16:13:20 | After ... = ... | MultiImplementationA.cs:13:16:13:20 | ... = ... | +| MultiImplementationA.cs:13:20:13:20 | 0 | MultiImplementationA.cs:13:16:13:16 | After access to field F | +| MultiImplementationA.cs:14:25:14:25 | i | MultiImplementationA.cs:14:31:14:31 | Entry | +| MultiImplementationA.cs:14:31:14:31 | Exceptional Exit | MultiImplementationB.cs:12:31:12:40 | throw ... | +| MultiImplementationA.cs:14:31:14:31 | Normal Exit | MultiImplementationA.cs:14:31:14:31 | access to parameter i | +| MultiImplementationA.cs:14:31:14:31 | access to parameter i | MultiImplementationA.cs:14:25:14:25 | i | +| MultiImplementationA.cs:15:31:15:31 | s | MultiImplementationA.cs:15:36:15:38 | Entry | +| MultiImplementationA.cs:15:31:15:31 | s | MultiImplementationA.cs:15:54:15:56 | Entry | +| MultiImplementationA.cs:15:36:15:38 | Exceptional Exit | MultiImplementationB.cs:13:42:13:52 | throw ...; | +| MultiImplementationA.cs:15:36:15:38 | Normal Exit | MultiImplementationA.cs:15:42:15:50 | return ...; | +| MultiImplementationA.cs:15:40:15:52 | {...} | MultiImplementationA.cs:15:31:15:31 | s | +| MultiImplementationA.cs:15:42:15:50 | Before return ...; | MultiImplementationA.cs:15:40:15:52 | {...} | | MultiImplementationA.cs:15:42:15:50 | return ...; | MultiImplementationA.cs:15:49:15:49 | access to parameter s | -| MultiImplementationA.cs:15:49:15:49 | access to parameter s | MultiImplementationA.cs:15:40:15:52 | {...} | -| MultiImplementationA.cs:15:54:15:56 | exit set_Item | MultiImplementationA.cs:15:54:15:56 | exit set_Item (normal) | -| MultiImplementationA.cs:15:54:15:56 | exit set_Item (normal) | MultiImplementationA.cs:15:58:15:60 | {...} | -| MultiImplementationA.cs:15:54:15:56 | exit set_Item (normal) | MultiImplementationB.cs:13:60:13:62 | {...} | -| MultiImplementationA.cs:16:17:16:18 | exit M1 | MultiImplementationA.cs:16:17:16:18 | exit M1 (normal) | -| MultiImplementationA.cs:16:17:16:18 | exit M1 (normal) | MultiImplementationA.cs:18:9:18:22 | M2(...) | -| MultiImplementationA.cs:16:17:16:18 | exit M1 (normal) | MultiImplementationB.cs:16:9:16:31 | M2(...) | +| MultiImplementationA.cs:15:49:15:49 | access to parameter s | MultiImplementationA.cs:15:42:15:50 | Before return ...; | +| MultiImplementationA.cs:15:54:15:56 | Exit | MultiImplementationA.cs:15:54:15:56 | Normal Exit | +| MultiImplementationA.cs:15:54:15:56 | Normal Exit | MultiImplementationA.cs:15:58:15:60 | {...} | +| MultiImplementationA.cs:15:54:15:56 | Normal Exit | MultiImplementationB.cs:13:60:13:62 | {...} | +| MultiImplementationA.cs:15:54:15:56 | value | MultiImplementationA.cs:15:31:15:31 | s | +| MultiImplementationA.cs:16:17:16:18 | Exit | MultiImplementationA.cs:16:17:16:18 | Normal Exit | +| MultiImplementationA.cs:16:17:16:18 | Normal Exit | MultiImplementationA.cs:17:5:19:5 | After {...} | +| MultiImplementationA.cs:16:17:16:18 | Normal Exit | MultiImplementationB.cs:15:5:17:5 | After {...} | +| MultiImplementationA.cs:16:24:16:24 | i | MultiImplementationA.cs:16:17:16:18 | Entry | +| MultiImplementationA.cs:17:5:19:5 | After {...} | MultiImplementationA.cs:18:9:18:22 | M2(...) | +| MultiImplementationA.cs:18:9:18:22 | Exit | MultiImplementationA.cs:18:9:18:22 | Normal Exit | | MultiImplementationA.cs:18:9:18:22 | M2(...) | MultiImplementationA.cs:17:5:19:5 | {...} | -| MultiImplementationA.cs:18:9:18:22 | exit M2 | MultiImplementationA.cs:18:9:18:22 | exit M2 (normal) | -| MultiImplementationA.cs:18:9:18:22 | exit M2 (normal) | MultiImplementationA.cs:18:21:18:21 | 0 | -| MultiImplementationA.cs:18:21:18:21 | 0 | MultiImplementationA.cs:18:9:18:22 | enter M2 | -| MultiImplementationA.cs:20:12:20:13 | call to constructor Object | MultiImplementationA.cs:20:12:20:13 | call to method | +| MultiImplementationA.cs:18:9:18:22 | Normal Exit | MultiImplementationA.cs:18:21:18:21 | 0 | +| MultiImplementationA.cs:18:21:18:21 | 0 | MultiImplementationA.cs:18:9:18:22 | Entry | +| MultiImplementationA.cs:20:12:20:13 | After call to constructor Object | MultiImplementationA.cs:20:12:20:13 | call to constructor Object | +| MultiImplementationA.cs:20:12:20:13 | After call to method | MultiImplementationA.cs:20:12:20:13 | call to method | +| MultiImplementationA.cs:20:12:20:13 | Before call to constructor Object | MultiImplementationA.cs:20:12:20:13 | After call to method | +| MultiImplementationA.cs:20:12:20:13 | Before call to method | MultiImplementationA.cs:20:19:20:19 | i | +| MultiImplementationA.cs:20:12:20:13 | Exceptional Exit | MultiImplementationB.cs:18:24:18:34 | throw ...; | +| MultiImplementationA.cs:20:12:20:13 | Normal Exit | MultiImplementationA.cs:20:22:20:31 | After {...} | +| MultiImplementationA.cs:20:12:20:13 | call to constructor Object | MultiImplementationA.cs:20:12:20:13 | Before call to constructor Object | | MultiImplementationA.cs:20:12:20:13 | call to method | MultiImplementationA.cs:20:12:20:13 | this access | -| MultiImplementationA.cs:20:12:20:13 | exit C2 (abnormal) | MultiImplementationB.cs:18:24:18:34 | throw ...; | -| MultiImplementationA.cs:20:12:20:13 | exit C2 (normal) | MultiImplementationA.cs:20:24:20:28 | ... = ... | -| MultiImplementationA.cs:20:12:20:13 | this access | MultiImplementationA.cs:20:12:20:13 | enter C2 | -| MultiImplementationA.cs:20:22:20:31 | {...} | MultiImplementationA.cs:20:12:20:13 | call to constructor Object | -| MultiImplementationA.cs:20:24:20:24 | access to field F | MultiImplementationA.cs:20:28:20:28 | access to parameter i | -| MultiImplementationA.cs:20:24:20:24 | this access | MultiImplementationA.cs:20:24:20:29 | ...; | -| MultiImplementationA.cs:20:24:20:28 | ... = ... | MultiImplementationA.cs:20:24:20:24 | access to field F | +| MultiImplementationA.cs:20:12:20:13 | this access | MultiImplementationA.cs:20:12:20:13 | Before call to method | +| MultiImplementationA.cs:20:19:20:19 | i | MultiImplementationA.cs:20:12:20:13 | Entry | +| MultiImplementationA.cs:20:22:20:31 | After {...} | MultiImplementationA.cs:20:24:20:29 | After ...; | +| MultiImplementationA.cs:20:22:20:31 | {...} | MultiImplementationA.cs:20:12:20:13 | After call to constructor Object | +| MultiImplementationA.cs:20:24:20:24 | After access to field F | MultiImplementationA.cs:20:24:20:24 | access to field F | +| MultiImplementationA.cs:20:24:20:24 | Before access to field F | MultiImplementationA.cs:20:24:20:28 | Before ... = ... | +| MultiImplementationA.cs:20:24:20:24 | access to field F | MultiImplementationA.cs:20:24:20:24 | this access | +| MultiImplementationA.cs:20:24:20:24 | this access | MultiImplementationA.cs:20:24:20:24 | Before access to field F | +| MultiImplementationA.cs:20:24:20:28 | ... = ... | MultiImplementationA.cs:20:28:20:28 | access to parameter i | +| MultiImplementationA.cs:20:24:20:28 | After ... = ... | MultiImplementationA.cs:20:24:20:28 | ... = ... | +| MultiImplementationA.cs:20:24:20:28 | Before ... = ... | MultiImplementationA.cs:20:24:20:29 | ...; | | MultiImplementationA.cs:20:24:20:29 | ...; | MultiImplementationA.cs:20:22:20:31 | {...} | -| MultiImplementationA.cs:20:28:20:28 | access to parameter i | MultiImplementationA.cs:20:24:20:24 | this access | -| MultiImplementationA.cs:21:12:21:13 | exit C2 | MultiImplementationA.cs:21:12:21:13 | exit C2 (normal) | -| MultiImplementationA.cs:21:12:21:13 | exit C2 (normal) | MultiImplementationA.cs:21:27:21:29 | {...} | -| MultiImplementationA.cs:21:12:21:13 | exit C2 (normal) | MultiImplementationB.cs:19:27:19:29 | {...} | +| MultiImplementationA.cs:20:24:20:29 | After ...; | MultiImplementationA.cs:20:24:20:28 | After ... = ... | +| MultiImplementationA.cs:20:28:20:28 | access to parameter i | MultiImplementationA.cs:20:24:20:24 | After access to field F | +| MultiImplementationA.cs:21:12:21:13 | Exit | MultiImplementationA.cs:21:12:21:13 | Normal Exit | +| MultiImplementationA.cs:21:12:21:13 | Normal Exit | MultiImplementationA.cs:21:27:21:29 | {...} | +| MultiImplementationA.cs:21:12:21:13 | Normal Exit | MultiImplementationB.cs:19:27:19:29 | {...} | +| MultiImplementationA.cs:21:19:21:22 | After call to constructor C2 | MultiImplementationA.cs:21:19:21:22 | call to constructor C2 | | MultiImplementationA.cs:21:19:21:22 | call to constructor C2 | MultiImplementationA.cs:21:24:21:24 | 0 | -| MultiImplementationA.cs:21:27:21:29 | {...} | MultiImplementationA.cs:21:19:21:22 | call to constructor C2 | -| MultiImplementationA.cs:22:6:22:7 | exit ~C2 (abnormal) | MultiImplementationB.cs:20:13:20:23 | throw ...; | -| MultiImplementationA.cs:22:6:22:7 | exit ~C2 (normal) | MultiImplementationA.cs:22:11:22:13 | {...} | -| MultiImplementationA.cs:22:11:22:13 | {...} | MultiImplementationA.cs:22:6:22:7 | enter ~C2 | -| MultiImplementationA.cs:23:28:23:35 | exit implicit conversion (abnormal) | MultiImplementationB.cs:21:50:21:59 | throw ... | -| MultiImplementationA.cs:23:28:23:35 | exit implicit conversion (normal) | MultiImplementationA.cs:23:50:23:53 | null | -| MultiImplementationA.cs:23:50:23:53 | null | MultiImplementationA.cs:23:28:23:35 | enter implicit conversion | -| MultiImplementationA.cs:24:16:24:16 | access to property P | MultiImplementationA.cs:24:34:24:34 | 0 | -| MultiImplementationA.cs:24:16:24:16 | this access | MultiImplementationA.cs:13:16:13:20 | ... = ... | -| MultiImplementationA.cs:24:32:24:34 | ... = ... | MultiImplementationA.cs:24:16:24:16 | access to property P | -| MultiImplementationA.cs:24:34:24:34 | 0 | MultiImplementationA.cs:24:16:24:16 | this access | -| MultiImplementationA.cs:28:7:28:8 | call to constructor Object | MultiImplementationA.cs:28:7:28:8 | call to method | +| MultiImplementationA.cs:21:24:21:24 | 0 | MultiImplementationA.cs:21:19:21:22 | Before call to constructor C2 | +| MultiImplementationA.cs:21:27:21:29 | {...} | MultiImplementationA.cs:21:19:21:22 | After call to constructor C2 | +| MultiImplementationA.cs:22:6:22:7 | Exceptional Exit | MultiImplementationB.cs:20:13:20:23 | throw ...; | +| MultiImplementationA.cs:22:6:22:7 | Normal Exit | MultiImplementationA.cs:22:11:22:13 | {...} | +| MultiImplementationA.cs:22:11:22:13 | {...} | MultiImplementationA.cs:22:6:22:7 | Entry | +| MultiImplementationA.cs:23:28:23:35 | Exceptional Exit | MultiImplementationB.cs:21:50:21:59 | throw ... | +| MultiImplementationA.cs:23:28:23:35 | Normal Exit | MultiImplementationA.cs:23:50:23:53 | null | +| MultiImplementationA.cs:23:44:23:44 | i | MultiImplementationA.cs:23:28:23:35 | Entry | +| MultiImplementationA.cs:23:50:23:53 | null | MultiImplementationA.cs:23:44:23:44 | i | +| MultiImplementationA.cs:24:16:24:16 | After access to property P | MultiImplementationA.cs:24:16:24:16 | access to property P | +| MultiImplementationA.cs:24:16:24:16 | Before access to property P | MultiImplementationA.cs:24:32:24:34 | Before ... = ... | +| MultiImplementationA.cs:24:16:24:16 | access to property P | MultiImplementationA.cs:24:16:24:16 | this access | +| MultiImplementationA.cs:24:16:24:16 | this access | MultiImplementationA.cs:24:16:24:16 | Before access to property P | +| MultiImplementationA.cs:24:32:24:34 | ... = ... | MultiImplementationA.cs:24:34:24:34 | 0 | +| MultiImplementationA.cs:24:32:24:34 | After ... = ... | MultiImplementationA.cs:24:32:24:34 | ... = ... | +| MultiImplementationA.cs:24:32:24:34 | Before ... = ... | MultiImplementationA.cs:13:16:13:20 | After ... = ... | +| MultiImplementationA.cs:24:34:24:34 | 0 | MultiImplementationA.cs:24:16:24:16 | After access to property P | +| MultiImplementationA.cs:28:7:28:8 | After call to constructor Object | MultiImplementationA.cs:28:7:28:8 | call to constructor Object | +| MultiImplementationA.cs:28:7:28:8 | After call to method | MultiImplementationA.cs:28:7:28:8 | call to method | +| MultiImplementationA.cs:28:7:28:8 | Before call to constructor Object | MultiImplementationA.cs:28:7:28:8 | After call to method | +| MultiImplementationA.cs:28:7:28:8 | Exit | MultiImplementationA.cs:28:7:28:8 | Normal Exit | +| MultiImplementationA.cs:28:7:28:8 | Normal Exit | MultiImplementationA.cs:28:7:28:8 | {...} | +| MultiImplementationA.cs:28:7:28:8 | Normal Exit | MultiImplementationB.cs:25:7:25:8 | {...} | +| MultiImplementationA.cs:28:7:28:8 | call to constructor Object | MultiImplementationA.cs:28:7:28:8 | Before call to constructor Object | | MultiImplementationA.cs:28:7:28:8 | call to method | MultiImplementationA.cs:28:7:28:8 | this access | -| MultiImplementationA.cs:28:7:28:8 | exit C3 | MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | -| MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | MultiImplementationA.cs:28:7:28:8 | {...} | -| MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | MultiImplementationB.cs:25:7:25:8 | {...} | -| MultiImplementationA.cs:28:7:28:8 | {...} | MultiImplementationA.cs:28:7:28:8 | call to constructor Object | -| MultiImplementationA.cs:30:21:30:23 | exit get_P3 | MultiImplementationA.cs:30:21:30:23 | exit get_P3 (abnormal) | -| MultiImplementationA.cs:30:21:30:23 | exit get_P3 (abnormal) | MultiImplementationA.cs:30:28:30:37 | throw ... | +| MultiImplementationA.cs:28:7:28:8 | this access | MultiImplementationA.cs:28:7:28:8 | Before call to method | +| MultiImplementationA.cs:28:7:28:8 | {...} | MultiImplementationA.cs:28:7:28:8 | After call to constructor Object | +| MultiImplementationA.cs:30:21:30:23 | Exceptional Exit | MultiImplementationA.cs:30:28:30:37 | throw ... | +| MultiImplementationA.cs:30:21:30:23 | Exit | MultiImplementationA.cs:30:21:30:23 | Exceptional Exit | +| MultiImplementationA.cs:30:28:30:37 | Before throw ... | MultiImplementationA.cs:30:21:30:23 | Entry | | MultiImplementationA.cs:30:28:30:37 | throw ... | MultiImplementationA.cs:30:34:30:37 | null | -| MultiImplementationA.cs:30:34:30:37 | null | MultiImplementationA.cs:30:21:30:23 | enter get_P3 | -| MultiImplementationA.cs:34:15:34:16 | call to constructor Object | MultiImplementationA.cs:34:15:34:16 | call to method | +| MultiImplementationA.cs:30:34:30:37 | null | MultiImplementationA.cs:30:28:30:37 | Before throw ... | +| MultiImplementationA.cs:34:15:34:16 | After call to constructor Object | MultiImplementationA.cs:34:15:34:16 | call to constructor Object | +| MultiImplementationA.cs:34:15:34:16 | After call to method | MultiImplementationA.cs:34:15:34:16 | call to method | +| MultiImplementationA.cs:34:15:34:16 | Before call to constructor Object | MultiImplementationA.cs:34:15:34:16 | After call to method | +| MultiImplementationA.cs:34:15:34:16 | Exit | MultiImplementationA.cs:34:15:34:16 | Normal Exit | +| MultiImplementationA.cs:34:15:34:16 | Normal Exit | MultiImplementationA.cs:34:15:34:16 | {...} | +| MultiImplementationA.cs:34:15:34:16 | Normal Exit | MultiImplementationB.cs:30:15:30:16 | {...} | +| MultiImplementationA.cs:34:15:34:16 | call to constructor Object | MultiImplementationA.cs:34:15:34:16 | Before call to constructor Object | | MultiImplementationA.cs:34:15:34:16 | call to method | MultiImplementationA.cs:34:15:34:16 | this access | -| MultiImplementationA.cs:34:15:34:16 | exit C4 | MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | -| MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | MultiImplementationA.cs:34:15:34:16 | {...} | -| MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | MultiImplementationB.cs:30:15:30:16 | {...} | -| MultiImplementationA.cs:34:15:34:16 | {...} | MultiImplementationA.cs:34:15:34:16 | call to constructor Object | -| MultiImplementationA.cs:36:9:36:10 | exit M1 (abnormal) | MultiImplementationA.cs:36:16:36:26 | throw ...; | -| MultiImplementationA.cs:36:9:36:10 | exit M1 (normal) | MultiImplementationB.cs:32:17:32:17 | 0 | +| MultiImplementationA.cs:34:15:34:16 | this access | MultiImplementationA.cs:34:15:34:16 | Before call to method | +| MultiImplementationA.cs:34:15:34:16 | {...} | MultiImplementationA.cs:34:15:34:16 | After call to constructor Object | +| MultiImplementationA.cs:36:9:36:10 | Exceptional Exit | MultiImplementationA.cs:36:16:36:26 | throw ...; | +| MultiImplementationA.cs:36:9:36:10 | Normal Exit | MultiImplementationB.cs:32:17:32:17 | 0 | +| MultiImplementationA.cs:36:16:36:26 | Before throw ...; | MultiImplementationA.cs:36:14:36:28 | {...} | | MultiImplementationA.cs:36:16:36:26 | throw ...; | MultiImplementationA.cs:36:22:36:25 | null | -| MultiImplementationA.cs:36:22:36:25 | null | MultiImplementationA.cs:36:14:36:28 | {...} | -| MultiImplementationA.cs:37:9:37:10 | exit M2 | MultiImplementationA.cs:37:9:37:10 | exit M2 (abnormal) | -| MultiImplementationA.cs:37:9:37:10 | exit M2 (abnormal) | MultiImplementationA.cs:37:16:37:26 | throw ...; | -| MultiImplementationA.cs:37:14:37:28 | {...} | MultiImplementationA.cs:37:9:37:10 | enter M2 | +| MultiImplementationA.cs:36:22:36:25 | null | MultiImplementationA.cs:36:16:36:26 | Before throw ...; | +| MultiImplementationA.cs:37:9:37:10 | Exceptional Exit | MultiImplementationA.cs:37:16:37:26 | throw ...; | +| MultiImplementationA.cs:37:9:37:10 | Exit | MultiImplementationA.cs:37:9:37:10 | Exceptional Exit | +| MultiImplementationA.cs:37:14:37:28 | {...} | MultiImplementationA.cs:37:9:37:10 | Entry | +| MultiImplementationA.cs:37:16:37:26 | Before throw ...; | MultiImplementationA.cs:37:14:37:28 | {...} | | MultiImplementationA.cs:37:16:37:26 | throw ...; | MultiImplementationA.cs:37:22:37:25 | null | -| MultiImplementationA.cs:37:22:37:25 | null | MultiImplementationA.cs:37:14:37:28 | {...} | -| MultiImplementationB.cs:1:7:1:8 | call to constructor Object | MultiImplementationB.cs:1:7:1:8 | call to method | +| MultiImplementationA.cs:37:22:37:25 | null | MultiImplementationA.cs:37:16:37:26 | Before throw ...; | +| MultiImplementationB.cs:1:7:1:8 | After call to constructor Object | MultiImplementationB.cs:1:7:1:8 | call to constructor Object | +| MultiImplementationB.cs:1:7:1:8 | After call to method | MultiImplementationB.cs:1:7:1:8 | call to method | +| MultiImplementationB.cs:1:7:1:8 | Before call to constructor Object | MultiImplementationB.cs:1:7:1:8 | After call to method | +| MultiImplementationB.cs:1:7:1:8 | call to constructor Object | MultiImplementationB.cs:1:7:1:8 | Before call to constructor Object | | MultiImplementationB.cs:1:7:1:8 | call to method | MultiImplementationB.cs:1:7:1:8 | this access | -| MultiImplementationB.cs:1:7:1:8 | {...} | MultiImplementationB.cs:1:7:1:8 | call to constructor Object | -| MultiImplementationB.cs:3:22:3:22 | 0 | MultiImplementationA.cs:6:22:6:31 | enter get_P1 | -| MultiImplementationB.cs:4:25:4:37 | {...} | MultiImplementationA.cs:7:21:7:23 | enter get_P2 | +| MultiImplementationB.cs:1:7:1:8 | this access | MultiImplementationB.cs:1:7:1:8 | Before call to method | +| MultiImplementationB.cs:1:7:1:8 | {...} | MultiImplementationB.cs:1:7:1:8 | After call to constructor Object | +| MultiImplementationB.cs:3:22:3:22 | 0 | MultiImplementationA.cs:6:22:6:31 | Entry | +| MultiImplementationB.cs:4:25:4:37 | {...} | MultiImplementationA.cs:7:21:7:23 | Entry | +| MultiImplementationB.cs:4:27:4:35 | Before return ...; | MultiImplementationB.cs:4:25:4:37 | {...} | | MultiImplementationB.cs:4:27:4:35 | return ...; | MultiImplementationB.cs:4:34:4:34 | 1 | -| MultiImplementationB.cs:4:34:4:34 | 1 | MultiImplementationB.cs:4:25:4:37 | {...} | -| MultiImplementationB.cs:4:43:4:45 | {...} | MultiImplementationA.cs:7:41:7:43 | enter set_P2 | -| MultiImplementationB.cs:5:23:5:23 | 2 | MultiImplementationA.cs:8:16:8:16 | enter M | -| MultiImplementationB.cs:11:16:11:16 | access to field F | MultiImplementationB.cs:11:20:11:20 | 1 | -| MultiImplementationB.cs:11:16:11:20 | ... = ... | MultiImplementationB.cs:11:16:11:16 | access to field F | -| MultiImplementationB.cs:11:20:11:20 | 1 | MultiImplementationB.cs:11:16:11:16 | this access | +| MultiImplementationB.cs:4:34:4:34 | 1 | MultiImplementationB.cs:4:27:4:35 | Before return ...; | +| MultiImplementationB.cs:4:43:4:45 | {...} | MultiImplementationA.cs:7:41:7:43 | value | +| MultiImplementationB.cs:5:23:5:23 | 2 | MultiImplementationA.cs:8:16:8:16 | Entry | +| MultiImplementationB.cs:11:16:11:16 | After access to field F | MultiImplementationB.cs:11:16:11:16 | access to field F | +| MultiImplementationB.cs:11:16:11:16 | Before access to field F | MultiImplementationB.cs:11:16:11:20 | Before ... = ... | +| MultiImplementationB.cs:11:16:11:16 | access to field F | MultiImplementationB.cs:11:16:11:16 | this access | +| MultiImplementationB.cs:11:16:11:16 | this access | MultiImplementationB.cs:11:16:11:16 | Before access to field F | +| MultiImplementationB.cs:11:16:11:20 | ... = ... | MultiImplementationB.cs:11:20:11:20 | 1 | +| MultiImplementationB.cs:11:16:11:20 | After ... = ... | MultiImplementationB.cs:11:16:11:20 | ... = ... | +| MultiImplementationB.cs:11:20:11:20 | 1 | MultiImplementationB.cs:11:16:11:16 | After access to field F | | MultiImplementationB.cs:12:31:12:40 | throw ... | MultiImplementationB.cs:12:37:12:40 | null | +| MultiImplementationB.cs:12:37:12:40 | null | MultiImplementationB.cs:12:31:12:40 | Before throw ... | +| MultiImplementationB.cs:13:42:13:52 | Before throw ...; | MultiImplementationB.cs:13:40:13:54 | {...} | | MultiImplementationB.cs:13:42:13:52 | throw ...; | MultiImplementationB.cs:13:48:13:51 | null | -| MultiImplementationB.cs:13:48:13:51 | null | MultiImplementationB.cs:13:40:13:54 | {...} | +| MultiImplementationB.cs:13:48:13:51 | null | MultiImplementationB.cs:13:42:13:52 | Before throw ...; | +| MultiImplementationB.cs:15:5:17:5 | After {...} | MultiImplementationB.cs:16:9:16:31 | M2(...) | +| MultiImplementationB.cs:16:9:16:31 | Exceptional Exit | MultiImplementationB.cs:16:21:16:30 | throw ... | +| MultiImplementationB.cs:16:9:16:31 | Exit | MultiImplementationB.cs:16:9:16:31 | Exceptional Exit | | MultiImplementationB.cs:16:9:16:31 | M2(...) | MultiImplementationB.cs:15:5:17:5 | {...} | -| MultiImplementationB.cs:16:9:16:31 | exit M2 | MultiImplementationB.cs:16:9:16:31 | exit M2 (abnormal) | -| MultiImplementationB.cs:16:9:16:31 | exit M2 (abnormal) | MultiImplementationB.cs:16:21:16:30 | throw ... | +| MultiImplementationB.cs:16:21:16:30 | Before throw ... | MultiImplementationB.cs:16:9:16:31 | Entry | | MultiImplementationB.cs:16:21:16:30 | throw ... | MultiImplementationB.cs:16:27:16:30 | null | -| MultiImplementationB.cs:16:27:16:30 | null | MultiImplementationB.cs:16:9:16:31 | enter M2 | -| MultiImplementationB.cs:18:12:18:13 | call to constructor Object | MultiImplementationB.cs:18:12:18:13 | call to method | +| MultiImplementationB.cs:16:27:16:30 | null | MultiImplementationB.cs:16:21:16:30 | Before throw ... | +| MultiImplementationB.cs:18:12:18:13 | After call to constructor Object | MultiImplementationB.cs:18:12:18:13 | call to constructor Object | +| MultiImplementationB.cs:18:12:18:13 | After call to method | MultiImplementationB.cs:18:12:18:13 | call to method | +| MultiImplementationB.cs:18:12:18:13 | Before call to constructor Object | MultiImplementationB.cs:18:12:18:13 | After call to method | +| MultiImplementationB.cs:18:12:18:13 | call to constructor Object | MultiImplementationB.cs:18:12:18:13 | Before call to constructor Object | | MultiImplementationB.cs:18:12:18:13 | call to method | MultiImplementationB.cs:18:12:18:13 | this access | -| MultiImplementationB.cs:18:22:18:36 | {...} | MultiImplementationB.cs:18:12:18:13 | call to constructor Object | +| MultiImplementationB.cs:18:12:18:13 | this access | MultiImplementationB.cs:18:12:18:13 | Before call to method | +| MultiImplementationB.cs:18:22:18:36 | {...} | MultiImplementationB.cs:18:12:18:13 | After call to constructor Object | +| MultiImplementationB.cs:18:24:18:34 | Before throw ...; | MultiImplementationB.cs:18:22:18:36 | {...} | | MultiImplementationB.cs:18:24:18:34 | throw ...; | MultiImplementationB.cs:18:30:18:33 | null | -| MultiImplementationB.cs:18:30:18:33 | null | MultiImplementationB.cs:18:22:18:36 | {...} | +| MultiImplementationB.cs:18:30:18:33 | null | MultiImplementationB.cs:18:24:18:34 | Before throw ...; | +| MultiImplementationB.cs:19:19:19:22 | After call to constructor C2 | MultiImplementationB.cs:19:19:19:22 | call to constructor C2 | | MultiImplementationB.cs:19:19:19:22 | call to constructor C2 | MultiImplementationB.cs:19:24:19:24 | 1 | -| MultiImplementationB.cs:19:27:19:29 | {...} | MultiImplementationB.cs:19:19:19:22 | call to constructor C2 | +| MultiImplementationB.cs:19:24:19:24 | 1 | MultiImplementationB.cs:19:19:19:22 | Before call to constructor C2 | +| MultiImplementationB.cs:19:27:19:29 | {...} | MultiImplementationB.cs:19:19:19:22 | After call to constructor C2 | +| MultiImplementationB.cs:20:13:20:23 | Before throw ...; | MultiImplementationB.cs:20:11:20:25 | {...} | | MultiImplementationB.cs:20:13:20:23 | throw ...; | MultiImplementationB.cs:20:19:20:22 | null | -| MultiImplementationB.cs:20:19:20:22 | null | MultiImplementationB.cs:20:11:20:25 | {...} | +| MultiImplementationB.cs:20:19:20:22 | null | MultiImplementationB.cs:20:13:20:23 | Before throw ...; | | MultiImplementationB.cs:21:50:21:59 | throw ... | MultiImplementationB.cs:21:56:21:59 | null | -| MultiImplementationB.cs:22:16:22:16 | access to property P | MultiImplementationB.cs:22:34:22:34 | 1 | -| MultiImplementationB.cs:22:16:22:16 | this access | MultiImplementationB.cs:11:16:11:20 | ... = ... | -| MultiImplementationB.cs:22:32:22:34 | ... = ... | MultiImplementationB.cs:22:16:22:16 | access to property P | -| MultiImplementationB.cs:22:34:22:34 | 1 | MultiImplementationB.cs:22:16:22:16 | this access | -| MultiImplementationB.cs:25:7:25:8 | call to constructor Object | MultiImplementationB.cs:25:7:25:8 | call to method | +| MultiImplementationB.cs:21:56:21:59 | null | MultiImplementationB.cs:21:50:21:59 | Before throw ... | +| MultiImplementationB.cs:22:16:22:16 | After access to property P | MultiImplementationB.cs:22:16:22:16 | access to property P | +| MultiImplementationB.cs:22:16:22:16 | Before access to property P | MultiImplementationB.cs:22:32:22:34 | Before ... = ... | +| MultiImplementationB.cs:22:16:22:16 | access to property P | MultiImplementationB.cs:22:16:22:16 | this access | +| MultiImplementationB.cs:22:16:22:16 | this access | MultiImplementationB.cs:22:16:22:16 | Before access to property P | +| MultiImplementationB.cs:22:32:22:34 | ... = ... | MultiImplementationB.cs:22:34:22:34 | 1 | +| MultiImplementationB.cs:22:32:22:34 | After ... = ... | MultiImplementationB.cs:22:32:22:34 | ... = ... | +| MultiImplementationB.cs:22:32:22:34 | Before ... = ... | MultiImplementationB.cs:11:16:11:20 | After ... = ... | +| MultiImplementationB.cs:22:34:22:34 | 1 | MultiImplementationB.cs:22:16:22:16 | After access to property P | +| MultiImplementationB.cs:25:7:25:8 | After call to constructor Object | MultiImplementationB.cs:25:7:25:8 | call to constructor Object | +| MultiImplementationB.cs:25:7:25:8 | After call to method | MultiImplementationB.cs:25:7:25:8 | call to method | +| MultiImplementationB.cs:25:7:25:8 | Before call to constructor Object | MultiImplementationB.cs:25:7:25:8 | After call to method | +| MultiImplementationB.cs:25:7:25:8 | call to constructor Object | MultiImplementationB.cs:25:7:25:8 | Before call to constructor Object | | MultiImplementationB.cs:25:7:25:8 | call to method | MultiImplementationB.cs:25:7:25:8 | this access | -| MultiImplementationB.cs:25:7:25:8 | {...} | MultiImplementationB.cs:25:7:25:8 | call to constructor Object | -| MultiImplementationB.cs:30:15:30:16 | call to constructor Object | MultiImplementationB.cs:30:15:30:16 | call to method | +| MultiImplementationB.cs:25:7:25:8 | this access | MultiImplementationB.cs:25:7:25:8 | Before call to method | +| MultiImplementationB.cs:25:7:25:8 | {...} | MultiImplementationB.cs:25:7:25:8 | After call to constructor Object | +| MultiImplementationB.cs:30:15:30:16 | After call to constructor Object | MultiImplementationB.cs:30:15:30:16 | call to constructor Object | +| MultiImplementationB.cs:30:15:30:16 | After call to method | MultiImplementationB.cs:30:15:30:16 | call to method | +| MultiImplementationB.cs:30:15:30:16 | Before call to constructor Object | MultiImplementationB.cs:30:15:30:16 | After call to method | +| MultiImplementationB.cs:30:15:30:16 | call to constructor Object | MultiImplementationB.cs:30:15:30:16 | Before call to constructor Object | | MultiImplementationB.cs:30:15:30:16 | call to method | MultiImplementationB.cs:30:15:30:16 | this access | -| MultiImplementationB.cs:30:15:30:16 | {...} | MultiImplementationB.cs:30:15:30:16 | call to constructor Object | -| MultiImplementationB.cs:32:17:32:17 | 0 | MultiImplementationA.cs:36:9:36:10 | enter M1 | -| NullCoalescing.cs:1:7:1:20 | call to constructor Object | NullCoalescing.cs:1:7:1:20 | call to method | +| MultiImplementationB.cs:30:15:30:16 | this access | MultiImplementationB.cs:30:15:30:16 | Before call to method | +| MultiImplementationB.cs:30:15:30:16 | {...} | MultiImplementationB.cs:30:15:30:16 | After call to constructor Object | +| MultiImplementationB.cs:32:17:32:17 | 0 | MultiImplementationA.cs:36:9:36:10 | Entry | +| NullCoalescing.cs:1:7:1:20 | After call to constructor Object | NullCoalescing.cs:1:7:1:20 | call to constructor Object | +| NullCoalescing.cs:1:7:1:20 | After call to method | NullCoalescing.cs:1:7:1:20 | call to method | +| NullCoalescing.cs:1:7:1:20 | Before call to constructor Object | NullCoalescing.cs:1:7:1:20 | After call to method | +| NullCoalescing.cs:1:7:1:20 | Before call to method | NullCoalescing.cs:1:7:1:20 | Entry | +| NullCoalescing.cs:1:7:1:20 | Exit | NullCoalescing.cs:1:7:1:20 | Normal Exit | +| NullCoalescing.cs:1:7:1:20 | Normal Exit | NullCoalescing.cs:1:7:1:20 | {...} | +| NullCoalescing.cs:1:7:1:20 | call to constructor Object | NullCoalescing.cs:1:7:1:20 | Before call to constructor Object | | NullCoalescing.cs:1:7:1:20 | call to method | NullCoalescing.cs:1:7:1:20 | this access | -| NullCoalescing.cs:1:7:1:20 | exit NullCoalescing | NullCoalescing.cs:1:7:1:20 | exit NullCoalescing (normal) | -| NullCoalescing.cs:1:7:1:20 | exit NullCoalescing (normal) | NullCoalescing.cs:1:7:1:20 | {...} | -| NullCoalescing.cs:1:7:1:20 | this access | NullCoalescing.cs:1:7:1:20 | enter NullCoalescing | -| NullCoalescing.cs:1:7:1:20 | {...} | NullCoalescing.cs:1:7:1:20 | call to constructor Object | -| NullCoalescing.cs:3:9:3:10 | exit M1 | NullCoalescing.cs:3:9:3:10 | exit M1 (normal) | -| NullCoalescing.cs:3:9:3:10 | exit M1 (normal) | NullCoalescing.cs:3:23:3:28 | ... ?? ... | -| NullCoalescing.cs:3:23:3:23 | access to parameter i | NullCoalescing.cs:3:9:3:10 | enter M1 | -| NullCoalescing.cs:3:23:3:28 | ... ?? ... | NullCoalescing.cs:3:23:3:23 | access to parameter i | -| NullCoalescing.cs:3:23:3:28 | ... ?? ... | NullCoalescing.cs:3:28:3:28 | 0 | -| NullCoalescing.cs:5:9:5:10 | exit M2 | NullCoalescing.cs:5:9:5:10 | exit M2 (normal) | -| NullCoalescing.cs:5:9:5:10 | exit M2 (normal) | NullCoalescing.cs:5:24:5:43 | ... ? ... : ... | -| NullCoalescing.cs:5:24:5:43 | ... ? ... : ... | NullCoalescing.cs:5:39:5:39 | 0 | -| NullCoalescing.cs:5:24:5:43 | ... ? ... : ... | NullCoalescing.cs:5:43:5:43 | 1 | -| NullCoalescing.cs:5:25:5:25 | access to parameter b | NullCoalescing.cs:5:9:5:10 | enter M2 | -| NullCoalescing.cs:5:25:5:34 | [false] ... ?? ... | NullCoalescing.cs:5:30:5:34 | false | -| NullCoalescing.cs:5:39:5:39 | 0 | NullCoalescing.cs:5:25:5:34 | [true] ... ?? ... | -| NullCoalescing.cs:5:43:5:43 | 1 | NullCoalescing.cs:5:25:5:34 | [false] ... ?? ... | -| NullCoalescing.cs:7:12:7:13 | exit M3 | NullCoalescing.cs:7:12:7:13 | exit M3 (normal) | -| NullCoalescing.cs:7:12:7:13 | exit M3 (normal) | NullCoalescing.cs:7:40:7:53 | ... ?? ... | -| NullCoalescing.cs:7:40:7:41 | access to parameter s1 | NullCoalescing.cs:7:12:7:13 | enter M3 | -| NullCoalescing.cs:7:40:7:53 | ... ?? ... | NullCoalescing.cs:7:40:7:41 | access to parameter s1 | -| NullCoalescing.cs:7:40:7:53 | ... ?? ... | NullCoalescing.cs:7:46:7:53 | ... ?? ... | -| NullCoalescing.cs:7:46:7:53 | ... ?? ... | NullCoalescing.cs:7:46:7:47 | access to parameter s2 | -| NullCoalescing.cs:7:46:7:53 | ... ?? ... | NullCoalescing.cs:7:52:7:53 | "" | -| NullCoalescing.cs:9:12:9:13 | exit M4 | NullCoalescing.cs:9:12:9:13 | exit M4 (normal) | -| NullCoalescing.cs:9:12:9:13 | exit M4 (normal) | NullCoalescing.cs:9:36:9:58 | ... ?? ... | -| NullCoalescing.cs:9:36:9:58 | ... ?? ... | NullCoalescing.cs:9:37:9:45 | [non-null] ... ? ... : ... | -| NullCoalescing.cs:9:36:9:58 | ... ?? ... | NullCoalescing.cs:9:51:9:58 | ... ?? ... | -| NullCoalescing.cs:9:37:9:37 | access to parameter b | NullCoalescing.cs:9:12:9:13 | enter M4 | -| NullCoalescing.cs:9:51:9:52 | "" | NullCoalescing.cs:9:37:9:45 | [null] ... ? ... : ... | -| NullCoalescing.cs:9:51:9:58 | ... ?? ... | NullCoalescing.cs:9:51:9:52 | "" | -| NullCoalescing.cs:11:9:11:10 | exit M5 | NullCoalescing.cs:11:9:11:10 | exit M5 (normal) | -| NullCoalescing.cs:11:9:11:10 | exit M5 (normal) | NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | -| NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | NullCoalescing.cs:11:64:11:64 | 0 | -| NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | NullCoalescing.cs:11:68:11:68 | 1 | -| NullCoalescing.cs:11:44:11:45 | access to parameter b1 | NullCoalescing.cs:11:9:11:10 | enter M5 | -| NullCoalescing.cs:11:44:11:59 | [false] ... ?? ... | NullCoalescing.cs:11:51:11:58 | [false] ... && ... | -| NullCoalescing.cs:11:44:11:59 | [true] ... ?? ... | NullCoalescing.cs:11:51:11:58 | [true] ... && ... | -| NullCoalescing.cs:11:64:11:64 | 0 | NullCoalescing.cs:11:44:11:59 | [true] ... ?? ... | -| NullCoalescing.cs:11:68:11:68 | 1 | NullCoalescing.cs:11:44:11:59 | [false] ... ?? ... | -| NullCoalescing.cs:13:10:13:11 | exit M6 | NullCoalescing.cs:13:10:13:11 | exit M6 (normal) | -| NullCoalescing.cs:13:10:13:11 | exit M6 (normal) | NullCoalescing.cs:17:9:17:24 | ... = ... | -| NullCoalescing.cs:14:5:18:5 | {...} | NullCoalescing.cs:13:10:13:11 | enter M6 | +| NullCoalescing.cs:1:7:1:20 | this access | NullCoalescing.cs:1:7:1:20 | Before call to method | +| NullCoalescing.cs:1:7:1:20 | {...} | NullCoalescing.cs:1:7:1:20 | After call to constructor Object | +| NullCoalescing.cs:3:9:3:10 | Exit | NullCoalescing.cs:3:9:3:10 | Normal Exit | +| NullCoalescing.cs:3:9:3:10 | Normal Exit | NullCoalescing.cs:3:23:3:28 | After ... ?? ... | +| NullCoalescing.cs:3:17:3:17 | i | NullCoalescing.cs:3:9:3:10 | Entry | +| NullCoalescing.cs:3:23:3:23 | access to parameter i | NullCoalescing.cs:3:23:3:28 | ... ?? ... | +| NullCoalescing.cs:3:23:3:28 | ... ?? ... | NullCoalescing.cs:3:17:3:17 | i | +| NullCoalescing.cs:3:23:3:28 | After ... ?? ... | NullCoalescing.cs:3:23:3:23 | After access to parameter i [non-null] | +| NullCoalescing.cs:3:23:3:28 | After ... ?? ... | NullCoalescing.cs:3:28:3:28 | 0 | +| NullCoalescing.cs:3:28:3:28 | 0 | NullCoalescing.cs:3:23:3:23 | After access to parameter i [null] | +| NullCoalescing.cs:5:9:5:10 | Exit | NullCoalescing.cs:5:9:5:10 | Normal Exit | +| NullCoalescing.cs:5:9:5:10 | Normal Exit | NullCoalescing.cs:5:24:5:43 | After ... ? ... : ... | +| NullCoalescing.cs:5:18:5:18 | b | NullCoalescing.cs:5:9:5:10 | Entry | +| NullCoalescing.cs:5:24:5:43 | ... ? ... : ... | NullCoalescing.cs:5:18:5:18 | b | +| NullCoalescing.cs:5:24:5:43 | After ... ? ... : ... | NullCoalescing.cs:5:39:5:39 | 0 | +| NullCoalescing.cs:5:24:5:43 | After ... ? ... : ... | NullCoalescing.cs:5:43:5:43 | 1 | +| NullCoalescing.cs:5:25:5:25 | access to parameter b | NullCoalescing.cs:5:25:5:34 | ... ?? ... | +| NullCoalescing.cs:5:25:5:34 | ... ?? ... | NullCoalescing.cs:5:24:5:43 | ... ? ... : ... | +| NullCoalescing.cs:5:25:5:34 | After ... ?? ... [false] | NullCoalescing.cs:5:30:5:34 | After false [false] | +| NullCoalescing.cs:5:30:5:34 | After false [false] | NullCoalescing.cs:5:30:5:34 | false | +| NullCoalescing.cs:5:30:5:34 | false | NullCoalescing.cs:5:25:5:25 | After access to parameter b [null] | +| NullCoalescing.cs:5:39:5:39 | 0 | NullCoalescing.cs:5:25:5:34 | After ... ?? ... [true] | +| NullCoalescing.cs:5:43:5:43 | 1 | NullCoalescing.cs:5:25:5:34 | After ... ?? ... [false] | +| NullCoalescing.cs:7:12:7:13 | Exit | NullCoalescing.cs:7:12:7:13 | Normal Exit | +| NullCoalescing.cs:7:12:7:13 | Normal Exit | NullCoalescing.cs:7:40:7:53 | After ... ?? ... | +| NullCoalescing.cs:7:22:7:23 | s1 | NullCoalescing.cs:7:12:7:13 | Entry | +| NullCoalescing.cs:7:33:7:34 | s2 | NullCoalescing.cs:7:22:7:23 | s1 | +| NullCoalescing.cs:7:40:7:41 | access to parameter s1 | NullCoalescing.cs:7:40:7:53 | ... ?? ... | +| NullCoalescing.cs:7:40:7:53 | ... ?? ... | NullCoalescing.cs:7:33:7:34 | s2 | +| NullCoalescing.cs:7:40:7:53 | After ... ?? ... | NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [non-null] | +| NullCoalescing.cs:7:40:7:53 | After ... ?? ... | NullCoalescing.cs:7:46:7:53 | After ... ?? ... | +| NullCoalescing.cs:7:46:7:47 | access to parameter s2 | NullCoalescing.cs:7:46:7:53 | ... ?? ... | +| NullCoalescing.cs:7:46:7:53 | ... ?? ... | NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [null] | +| NullCoalescing.cs:7:46:7:53 | After ... ?? ... | NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [non-null] | +| NullCoalescing.cs:7:46:7:53 | After ... ?? ... | NullCoalescing.cs:7:52:7:53 | "" | +| NullCoalescing.cs:7:52:7:53 | "" | NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [null] | +| NullCoalescing.cs:9:12:9:13 | Exit | NullCoalescing.cs:9:12:9:13 | Normal Exit | +| NullCoalescing.cs:9:12:9:13 | Normal Exit | NullCoalescing.cs:9:36:9:58 | After ... ?? ... | +| NullCoalescing.cs:9:20:9:20 | b | NullCoalescing.cs:9:12:9:13 | Entry | +| NullCoalescing.cs:9:30:9:30 | s | NullCoalescing.cs:9:20:9:20 | b | +| NullCoalescing.cs:9:36:9:58 | ... ?? ... | NullCoalescing.cs:9:30:9:30 | s | +| NullCoalescing.cs:9:36:9:58 | After ... ?? ... | NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [non-null] | +| NullCoalescing.cs:9:36:9:58 | After ... ?? ... | NullCoalescing.cs:9:51:9:58 | After ... ?? ... | +| NullCoalescing.cs:9:37:9:37 | access to parameter b | NullCoalescing.cs:9:37:9:45 | ... ? ... : ... | +| NullCoalescing.cs:9:37:9:45 | ... ? ... : ... | NullCoalescing.cs:9:36:9:58 | ... ?? ... | +| NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [non-null] | NullCoalescing.cs:9:41:9:41 | After access to parameter s [non-null] | +| NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [non-null] | NullCoalescing.cs:9:45:9:45 | After access to parameter s [non-null] | +| NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [null] | NullCoalescing.cs:9:41:9:41 | After access to parameter s [null] | +| NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [null] | NullCoalescing.cs:9:45:9:45 | After access to parameter s [null] | +| NullCoalescing.cs:9:41:9:41 | access to parameter s | NullCoalescing.cs:9:37:9:37 | After access to parameter b [true] | +| NullCoalescing.cs:9:45:9:45 | access to parameter s | NullCoalescing.cs:9:37:9:37 | After access to parameter b [false] | +| NullCoalescing.cs:9:51:9:52 | "" | NullCoalescing.cs:9:51:9:58 | ... ?? ... | +| NullCoalescing.cs:9:51:9:58 | ... ?? ... | NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [null] | +| NullCoalescing.cs:9:51:9:58 | After ... ?? ... | NullCoalescing.cs:9:51:9:52 | After "" [non-null] | +| NullCoalescing.cs:9:51:9:58 | After ... ?? ... | NullCoalescing.cs:9:57:9:58 | "" | +| NullCoalescing.cs:9:57:9:58 | "" | NullCoalescing.cs:9:51:9:52 | After "" [null] | +| NullCoalescing.cs:11:9:11:10 | Exit | NullCoalescing.cs:11:9:11:10 | Normal Exit | +| NullCoalescing.cs:11:9:11:10 | Normal Exit | NullCoalescing.cs:11:43:11:68 | After ... ? ... : ... | +| NullCoalescing.cs:11:18:11:19 | b1 | NullCoalescing.cs:11:9:11:10 | Entry | +| NullCoalescing.cs:11:27:11:28 | b2 | NullCoalescing.cs:11:18:11:19 | b1 | +| NullCoalescing.cs:11:36:11:37 | b3 | NullCoalescing.cs:11:27:11:28 | b2 | +| NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | NullCoalescing.cs:11:36:11:37 | b3 | +| NullCoalescing.cs:11:43:11:68 | After ... ? ... : ... | NullCoalescing.cs:11:64:11:64 | 0 | +| NullCoalescing.cs:11:43:11:68 | After ... ? ... : ... | NullCoalescing.cs:11:68:11:68 | 1 | +| NullCoalescing.cs:11:44:11:45 | access to parameter b1 | NullCoalescing.cs:11:44:11:59 | ... ?? ... | +| NullCoalescing.cs:11:44:11:59 | ... ?? ... | NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | +| NullCoalescing.cs:11:44:11:59 | After ... ?? ... [false] | NullCoalescing.cs:11:51:11:58 | After ... && ... [false] | +| NullCoalescing.cs:11:44:11:59 | After ... ?? ... [true] | NullCoalescing.cs:11:51:11:58 | After ... && ... [true] | +| NullCoalescing.cs:11:51:11:52 | access to parameter b2 | NullCoalescing.cs:11:51:11:58 | ... && ... | +| NullCoalescing.cs:11:51:11:58 | ... && ... | NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [null] | +| NullCoalescing.cs:11:51:11:58 | After ... && ... [false] | NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [false] | +| NullCoalescing.cs:11:51:11:58 | After ... && ... [false] | NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [false] | +| NullCoalescing.cs:11:51:11:58 | After ... && ... [true] | NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [true] | +| NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [true] | +| NullCoalescing.cs:11:64:11:64 | 0 | NullCoalescing.cs:11:44:11:59 | After ... ?? ... [true] | +| NullCoalescing.cs:11:68:11:68 | 1 | NullCoalescing.cs:11:44:11:59 | After ... ?? ... [false] | +| NullCoalescing.cs:13:10:13:11 | Exit | NullCoalescing.cs:13:10:13:11 | Normal Exit | +| NullCoalescing.cs:13:10:13:11 | Normal Exit | NullCoalescing.cs:14:5:18:5 | After {...} | +| NullCoalescing.cs:13:17:13:17 | i | NullCoalescing.cs:13:10:13:11 | Entry | +| NullCoalescing.cs:14:5:18:5 | After {...} | NullCoalescing.cs:17:9:17:25 | After ...; | +| NullCoalescing.cs:14:5:18:5 | {...} | NullCoalescing.cs:13:17:13:17 | i | | NullCoalescing.cs:15:9:15:32 | ... ...; | NullCoalescing.cs:14:5:18:5 | {...} | -| NullCoalescing.cs:15:13:15:31 | Int32 j = ... | NullCoalescing.cs:15:17:15:31 | ... ?? ... | +| NullCoalescing.cs:15:9:15:32 | After ... ...; | NullCoalescing.cs:15:13:15:31 | After Int32 j = ... | +| NullCoalescing.cs:15:13:15:13 | access to local variable j | NullCoalescing.cs:15:13:15:31 | Before Int32 j = ... | +| NullCoalescing.cs:15:13:15:31 | After Int32 j = ... | NullCoalescing.cs:15:13:15:31 | Int32 j = ... | +| NullCoalescing.cs:15:13:15:31 | Before Int32 j = ... | NullCoalescing.cs:15:9:15:32 | ... ...; | +| NullCoalescing.cs:15:13:15:31 | Int32 j = ... | NullCoalescing.cs:15:17:15:31 | After ... ?? ... | | NullCoalescing.cs:15:17:15:26 | (...) ... | NullCoalescing.cs:15:23:15:26 | null | -| NullCoalescing.cs:15:17:15:31 | ... ?? ... | NullCoalescing.cs:15:31:15:31 | 0 | -| NullCoalescing.cs:15:23:15:26 | null | NullCoalescing.cs:15:9:15:32 | ... ...; | -| NullCoalescing.cs:15:31:15:31 | 0 | NullCoalescing.cs:15:17:15:26 | (...) ... | -| NullCoalescing.cs:16:9:16:26 | ... ...; | NullCoalescing.cs:15:13:15:31 | Int32 j = ... | -| NullCoalescing.cs:16:13:16:25 | String s = ... | NullCoalescing.cs:16:17:16:25 | ... ?? ... | -| NullCoalescing.cs:16:17:16:18 | "" | NullCoalescing.cs:16:9:16:26 | ... ...; | -| NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:16:17:16:18 | "" | -| NullCoalescing.cs:17:9:17:24 | ... = ... | NullCoalescing.cs:17:13:17:24 | ... ?? ... | -| NullCoalescing.cs:17:9:17:25 | ...; | NullCoalescing.cs:16:13:16:25 | String s = ... | +| NullCoalescing.cs:15:17:15:26 | Before (...) ... | NullCoalescing.cs:15:17:15:31 | ... ?? ... | +| NullCoalescing.cs:15:17:15:31 | ... ?? ... | NullCoalescing.cs:15:13:15:13 | access to local variable j | +| NullCoalescing.cs:15:17:15:31 | After ... ?? ... | NullCoalescing.cs:15:17:15:26 | After (...) ... [non-null] | +| NullCoalescing.cs:15:17:15:31 | After ... ?? ... | NullCoalescing.cs:15:31:15:31 | 0 | +| NullCoalescing.cs:15:23:15:26 | null | NullCoalescing.cs:15:17:15:26 | Before (...) ... | +| NullCoalescing.cs:15:31:15:31 | 0 | NullCoalescing.cs:15:17:15:26 | After (...) ... [null] | +| NullCoalescing.cs:16:9:16:26 | ... ...; | NullCoalescing.cs:15:9:15:32 | After ... ...; | +| NullCoalescing.cs:16:9:16:26 | After ... ...; | NullCoalescing.cs:16:13:16:25 | After String s = ... | +| NullCoalescing.cs:16:13:16:13 | access to local variable s | NullCoalescing.cs:16:13:16:25 | Before String s = ... | +| NullCoalescing.cs:16:13:16:25 | After String s = ... | NullCoalescing.cs:16:13:16:25 | String s = ... | +| NullCoalescing.cs:16:13:16:25 | Before String s = ... | NullCoalescing.cs:16:9:16:26 | ... ...; | +| NullCoalescing.cs:16:13:16:25 | String s = ... | NullCoalescing.cs:16:17:16:25 | After ... ?? ... | +| NullCoalescing.cs:16:17:16:18 | "" | NullCoalescing.cs:16:17:16:25 | ... ?? ... | +| NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:16:13:16:13 | access to local variable s | +| NullCoalescing.cs:16:17:16:25 | After ... ?? ... | NullCoalescing.cs:16:17:16:18 | After "" [non-null] | +| NullCoalescing.cs:16:17:16:25 | After ... ?? ... | NullCoalescing.cs:16:23:16:25 | "a" | +| NullCoalescing.cs:16:23:16:25 | "a" | NullCoalescing.cs:16:17:16:18 | After "" [null] | +| NullCoalescing.cs:17:9:17:9 | access to local variable j | NullCoalescing.cs:17:9:17:24 | Before ... = ... | +| NullCoalescing.cs:17:9:17:24 | ... = ... | NullCoalescing.cs:17:13:17:24 | After ... ?? ... | +| NullCoalescing.cs:17:9:17:24 | After ... = ... | NullCoalescing.cs:17:9:17:24 | ... = ... | +| NullCoalescing.cs:17:9:17:24 | Before ... = ... | NullCoalescing.cs:17:9:17:25 | ...; | +| NullCoalescing.cs:17:9:17:25 | ...; | NullCoalescing.cs:16:9:16:26 | After ... ...; | +| NullCoalescing.cs:17:9:17:25 | After ...; | NullCoalescing.cs:17:9:17:24 | After ... = ... | | NullCoalescing.cs:17:13:17:19 | (...) ... | NullCoalescing.cs:17:19:17:19 | access to parameter i | -| NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:17:13:17:19 | (...) ... | -| NullCoalescing.cs:17:19:17:19 | access to parameter i | NullCoalescing.cs:17:9:17:25 | ...; | -| PartialImplementationA.cs:1:15:1:21 | exit | PartialImplementationA.cs:1:15:1:21 | exit (normal) | -| PartialImplementationA.cs:1:15:1:21 | exit (normal) | PartialImplementationB.cs:5:32:5:34 | ... = ... | -| PartialImplementationA.cs:3:12:3:18 | call to constructor Object | PartialImplementationA.cs:3:12:3:18 | call to method | +| NullCoalescing.cs:17:13:17:19 | Before (...) ... | NullCoalescing.cs:17:13:17:24 | ... ?? ... | +| NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:17:9:17:9 | access to local variable j | +| NullCoalescing.cs:17:13:17:24 | After ... ?? ... | NullCoalescing.cs:17:13:17:19 | After (...) ... [non-null] | +| NullCoalescing.cs:17:13:17:24 | After ... ?? ... | NullCoalescing.cs:17:24:17:24 | 1 | +| NullCoalescing.cs:17:19:17:19 | access to parameter i | NullCoalescing.cs:17:13:17:19 | Before (...) ... | +| NullCoalescing.cs:17:24:17:24 | 1 | NullCoalescing.cs:17:13:17:19 | After (...) ... [null] | +| PartialImplementationA.cs:1:15:1:21 | Exit | PartialImplementationA.cs:1:15:1:21 | Normal Exit | +| PartialImplementationA.cs:1:15:1:21 | Normal Exit | PartialImplementationB.cs:5:32:5:34 | After ... = ... | +| PartialImplementationA.cs:3:12:3:18 | After call to constructor Object | PartialImplementationA.cs:3:12:3:18 | call to constructor Object | +| PartialImplementationA.cs:3:12:3:18 | After call to method | PartialImplementationA.cs:3:12:3:18 | call to method | +| PartialImplementationA.cs:3:12:3:18 | Before call to constructor Object | PartialImplementationA.cs:3:12:3:18 | After call to method | +| PartialImplementationA.cs:3:12:3:18 | Before call to method | PartialImplementationA.cs:3:24:3:24 | i | +| PartialImplementationA.cs:3:12:3:18 | Exit | PartialImplementationA.cs:3:12:3:18 | Normal Exit | +| PartialImplementationA.cs:3:12:3:18 | Normal Exit | PartialImplementationA.cs:3:27:3:29 | {...} | +| PartialImplementationA.cs:3:12:3:18 | call to constructor Object | PartialImplementationA.cs:3:12:3:18 | Before call to constructor Object | | PartialImplementationA.cs:3:12:3:18 | call to method | PartialImplementationA.cs:3:12:3:18 | this access | -| PartialImplementationA.cs:3:12:3:18 | exit Partial | PartialImplementationA.cs:3:12:3:18 | exit Partial (normal) | -| PartialImplementationA.cs:3:12:3:18 | exit Partial (normal) | PartialImplementationA.cs:3:27:3:29 | {...} | -| PartialImplementationA.cs:3:12:3:18 | this access | PartialImplementationA.cs:3:12:3:18 | enter Partial | -| PartialImplementationA.cs:3:27:3:29 | {...} | PartialImplementationA.cs:3:12:3:18 | call to constructor Object | -| PartialImplementationB.cs:3:16:3:16 | access to field F | PartialImplementationB.cs:3:20:3:20 | 0 | -| PartialImplementationB.cs:3:16:3:16 | this access | PartialImplementationA.cs:1:15:1:21 | enter | -| PartialImplementationB.cs:3:16:3:20 | ... = ... | PartialImplementationB.cs:3:16:3:16 | access to field F | -| PartialImplementationB.cs:3:20:3:20 | 0 | PartialImplementationB.cs:3:16:3:16 | this access | -| PartialImplementationB.cs:4:12:4:18 | call to constructor Object | PartialImplementationB.cs:4:12:4:18 | call to method | +| PartialImplementationA.cs:3:12:3:18 | this access | PartialImplementationA.cs:3:12:3:18 | Before call to method | +| PartialImplementationA.cs:3:24:3:24 | i | PartialImplementationA.cs:3:12:3:18 | Entry | +| PartialImplementationA.cs:3:27:3:29 | {...} | PartialImplementationA.cs:3:12:3:18 | After call to constructor Object | +| PartialImplementationB.cs:3:16:3:16 | After access to field F | PartialImplementationB.cs:3:16:3:16 | access to field F | +| PartialImplementationB.cs:3:16:3:16 | Before access to field F | PartialImplementationB.cs:3:16:3:20 | Before ... = ... | +| PartialImplementationB.cs:3:16:3:16 | access to field F | PartialImplementationB.cs:3:16:3:16 | this access | +| PartialImplementationB.cs:3:16:3:16 | this access | PartialImplementationB.cs:3:16:3:16 | Before access to field F | +| PartialImplementationB.cs:3:16:3:20 | ... = ... | PartialImplementationB.cs:3:20:3:20 | 0 | +| PartialImplementationB.cs:3:16:3:20 | After ... = ... | PartialImplementationB.cs:3:16:3:20 | ... = ... | +| PartialImplementationB.cs:3:16:3:20 | Before ... = ... | PartialImplementationA.cs:1:15:1:21 | Entry | +| PartialImplementationB.cs:3:20:3:20 | 0 | PartialImplementationB.cs:3:16:3:16 | After access to field F | +| PartialImplementationB.cs:4:12:4:18 | After call to constructor Object | PartialImplementationB.cs:4:12:4:18 | call to constructor Object | +| PartialImplementationB.cs:4:12:4:18 | After call to method | PartialImplementationB.cs:4:12:4:18 | call to method | +| PartialImplementationB.cs:4:12:4:18 | Before call to constructor Object | PartialImplementationB.cs:4:12:4:18 | After call to method | +| PartialImplementationB.cs:4:12:4:18 | Before call to method | PartialImplementationB.cs:4:12:4:18 | Entry | +| PartialImplementationB.cs:4:12:4:18 | Exit | PartialImplementationB.cs:4:12:4:18 | Normal Exit | +| PartialImplementationB.cs:4:12:4:18 | Normal Exit | PartialImplementationB.cs:4:22:4:24 | {...} | +| PartialImplementationB.cs:4:12:4:18 | call to constructor Object | PartialImplementationB.cs:4:12:4:18 | Before call to constructor Object | | PartialImplementationB.cs:4:12:4:18 | call to method | PartialImplementationB.cs:4:12:4:18 | this access | -| PartialImplementationB.cs:4:12:4:18 | exit Partial | PartialImplementationB.cs:4:12:4:18 | exit Partial (normal) | -| PartialImplementationB.cs:4:12:4:18 | exit Partial (normal) | PartialImplementationB.cs:4:22:4:24 | {...} | -| PartialImplementationB.cs:4:12:4:18 | this access | PartialImplementationB.cs:4:12:4:18 | enter Partial | -| PartialImplementationB.cs:4:22:4:24 | {...} | PartialImplementationB.cs:4:12:4:18 | call to constructor Object | -| PartialImplementationB.cs:5:16:5:16 | access to property P | PartialImplementationB.cs:5:34:5:34 | 0 | -| PartialImplementationB.cs:5:16:5:16 | this access | PartialImplementationB.cs:3:16:3:20 | ... = ... | -| PartialImplementationB.cs:5:32:5:34 | ... = ... | PartialImplementationB.cs:5:16:5:16 | access to property P | -| PartialImplementationB.cs:5:34:5:34 | 0 | PartialImplementationB.cs:5:16:5:16 | this access | -| Patterns.cs:3:7:3:14 | call to constructor Object | Patterns.cs:3:7:3:14 | call to method | +| PartialImplementationB.cs:4:12:4:18 | this access | PartialImplementationB.cs:4:12:4:18 | Before call to method | +| PartialImplementationB.cs:4:22:4:24 | {...} | PartialImplementationB.cs:4:12:4:18 | After call to constructor Object | +| PartialImplementationB.cs:5:16:5:16 | After access to property P | PartialImplementationB.cs:5:16:5:16 | access to property P | +| PartialImplementationB.cs:5:16:5:16 | Before access to property P | PartialImplementationB.cs:5:32:5:34 | Before ... = ... | +| PartialImplementationB.cs:5:16:5:16 | access to property P | PartialImplementationB.cs:5:16:5:16 | this access | +| PartialImplementationB.cs:5:16:5:16 | this access | PartialImplementationB.cs:5:16:5:16 | Before access to property P | +| PartialImplementationB.cs:5:32:5:34 | ... = ... | PartialImplementationB.cs:5:34:5:34 | 0 | +| PartialImplementationB.cs:5:32:5:34 | After ... = ... | PartialImplementationB.cs:5:32:5:34 | ... = ... | +| PartialImplementationB.cs:5:32:5:34 | Before ... = ... | PartialImplementationB.cs:3:16:3:20 | After ... = ... | +| PartialImplementationB.cs:5:34:5:34 | 0 | PartialImplementationB.cs:5:16:5:16 | After access to property P | +| Patterns.cs:3:7:3:14 | After call to constructor Object | Patterns.cs:3:7:3:14 | call to constructor Object | +| Patterns.cs:3:7:3:14 | After call to method | Patterns.cs:3:7:3:14 | call to method | +| Patterns.cs:3:7:3:14 | Before call to constructor Object | Patterns.cs:3:7:3:14 | After call to method | +| Patterns.cs:3:7:3:14 | Before call to method | Patterns.cs:3:7:3:14 | Entry | +| Patterns.cs:3:7:3:14 | Exit | Patterns.cs:3:7:3:14 | Normal Exit | +| Patterns.cs:3:7:3:14 | Normal Exit | Patterns.cs:3:7:3:14 | {...} | +| Patterns.cs:3:7:3:14 | call to constructor Object | Patterns.cs:3:7:3:14 | Before call to constructor Object | | Patterns.cs:3:7:3:14 | call to method | Patterns.cs:3:7:3:14 | this access | -| Patterns.cs:3:7:3:14 | exit Patterns | Patterns.cs:3:7:3:14 | exit Patterns (normal) | -| Patterns.cs:3:7:3:14 | exit Patterns (normal) | Patterns.cs:3:7:3:14 | {...} | -| Patterns.cs:3:7:3:14 | this access | Patterns.cs:3:7:3:14 | enter Patterns | -| Patterns.cs:3:7:3:14 | {...} | Patterns.cs:3:7:3:14 | call to constructor Object | -| Patterns.cs:5:10:5:11 | exit M1 | Patterns.cs:5:10:5:11 | exit M1 (normal) | -| Patterns.cs:5:10:5:11 | exit M1 (normal) | Patterns.cs:40:17:40:17 | access to local variable o | -| Patterns.cs:6:5:43:5 | {...} | Patterns.cs:5:10:5:11 | enter M1 | +| Patterns.cs:3:7:3:14 | this access | Patterns.cs:3:7:3:14 | Before call to method | +| Patterns.cs:3:7:3:14 | {...} | Patterns.cs:3:7:3:14 | After call to constructor Object | +| Patterns.cs:5:10:5:11 | Exit | Patterns.cs:5:10:5:11 | Normal Exit | +| Patterns.cs:5:10:5:11 | Normal Exit | Patterns.cs:6:5:43:5 | After {...} | +| Patterns.cs:6:5:43:5 | After {...} | Patterns.cs:40:9:42:9 | After switch (...) {...} | +| Patterns.cs:6:5:43:5 | {...} | Patterns.cs:5:10:5:11 | Entry | | Patterns.cs:7:9:7:24 | ... ...; | Patterns.cs:6:5:43:5 | {...} | +| Patterns.cs:7:9:7:24 | After ... ...; | Patterns.cs:7:16:7:23 | After Object o = ... | +| Patterns.cs:7:16:7:16 | access to local variable o | Patterns.cs:7:16:7:23 | Before Object o = ... | +| Patterns.cs:7:16:7:23 | After Object o = ... | Patterns.cs:7:16:7:23 | Object o = ... | +| Patterns.cs:7:16:7:23 | Before Object o = ... | Patterns.cs:7:9:7:24 | ... ...; | | Patterns.cs:7:16:7:23 | Object o = ... | Patterns.cs:7:20:7:23 | null | -| Patterns.cs:7:20:7:23 | null | Patterns.cs:7:9:7:24 | ... ...; | -| Patterns.cs:8:9:18:9 | if (...) ... | Patterns.cs:7:16:7:23 | Object o = ... | -| Patterns.cs:8:13:8:13 | access to local variable o | Patterns.cs:8:9:18:9 | if (...) ... | -| Patterns.cs:8:18:8:23 | Int32 i1 | Patterns.cs:8:13:8:13 | access to local variable o | -| Patterns.cs:9:9:11:9 | {...} | Patterns.cs:8:13:8:23 | [true] ... is ... | -| Patterns.cs:10:13:10:42 | call to method WriteLine | Patterns.cs:10:31:10:41 | $"..." | +| Patterns.cs:7:20:7:23 | null | Patterns.cs:7:16:7:16 | access to local variable o | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:9:9:11:9 | After {...} | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:12:14:18:9 | After if (...) ... | +| Patterns.cs:8:9:18:9 | if (...) ... | Patterns.cs:7:9:7:24 | After ... ...; | +| Patterns.cs:8:13:8:13 | access to local variable o | Patterns.cs:8:13:8:23 | Before ... is ... | +| Patterns.cs:8:13:8:23 | ... is ... | Patterns.cs:8:13:8:13 | access to local variable o | +| Patterns.cs:8:13:8:23 | After ... is ... [true] | Patterns.cs:8:18:8:23 | Int32 i1 | +| Patterns.cs:8:13:8:23 | Before ... is ... | Patterns.cs:8:9:18:9 | if (...) ... | +| Patterns.cs:8:18:8:23 | Int32 i1 | Patterns.cs:8:13:8:23 | [MatchTrue] ... is ... | +| Patterns.cs:9:9:11:9 | After {...} | Patterns.cs:10:13:10:43 | After ...; | +| Patterns.cs:9:9:11:9 | {...} | Patterns.cs:8:13:8:23 | After ... is ... [true] | +| Patterns.cs:10:13:10:42 | After call to method WriteLine | Patterns.cs:10:13:10:42 | call to method WriteLine | +| Patterns.cs:10:13:10:42 | Before call to method WriteLine | Patterns.cs:10:13:10:43 | ...; | +| Patterns.cs:10:13:10:42 | call to method WriteLine | Patterns.cs:10:31:10:41 | After $"..." | | Patterns.cs:10:13:10:43 | ...; | Patterns.cs:9:9:11:9 | {...} | -| Patterns.cs:10:31:10:41 | $"..." | Patterns.cs:10:37:10:40 | {...} | -| Patterns.cs:10:33:10:36 | "int " | Patterns.cs:10:13:10:43 | ...; | +| Patterns.cs:10:13:10:43 | After ...; | Patterns.cs:10:13:10:42 | After call to method WriteLine | +| Patterns.cs:10:31:10:41 | $"..." | Patterns.cs:10:37:10:40 | After {...} | +| Patterns.cs:10:31:10:41 | After $"..." | Patterns.cs:10:31:10:41 | $"..." | +| Patterns.cs:10:31:10:41 | Before $"..." | Patterns.cs:10:13:10:42 | Before call to method WriteLine | +| Patterns.cs:10:33:10:36 | "int " | Patterns.cs:10:31:10:41 | Before $"..." | +| Patterns.cs:10:37:10:40 | After {...} | Patterns.cs:10:37:10:40 | {...} | +| Patterns.cs:10:37:10:40 | Before {...} | Patterns.cs:10:33:10:36 | "int " | | Patterns.cs:10:37:10:40 | {...} | Patterns.cs:10:38:10:39 | access to local variable i1 | -| Patterns.cs:10:38:10:39 | access to local variable i1 | Patterns.cs:10:33:10:36 | "int " | -| Patterns.cs:12:14:18:9 | if (...) ... | Patterns.cs:8:13:8:23 | [false] ... is ... | -| Patterns.cs:12:18:12:18 | access to local variable o | Patterns.cs:12:14:18:9 | if (...) ... | -| Patterns.cs:12:23:12:31 | String s1 | Patterns.cs:12:18:12:18 | access to local variable o | -| Patterns.cs:13:9:15:9 | {...} | Patterns.cs:12:18:12:31 | [true] ... is ... | -| Patterns.cs:14:13:14:45 | call to method WriteLine | Patterns.cs:14:31:14:44 | $"..." | +| Patterns.cs:10:38:10:39 | access to local variable i1 | Patterns.cs:10:37:10:40 | Before {...} | +| Patterns.cs:12:14:18:9 | After if (...) ... | Patterns.cs:13:9:15:9 | After {...} | +| Patterns.cs:12:14:18:9 | After if (...) ... | Patterns.cs:16:14:18:9 | After if (...) ... | +| Patterns.cs:12:14:18:9 | if (...) ... | Patterns.cs:8:13:8:23 | After ... is ... [false] | +| Patterns.cs:12:18:12:18 | access to local variable o | Patterns.cs:12:18:12:31 | Before ... is ... | +| Patterns.cs:12:18:12:31 | ... is ... | Patterns.cs:12:18:12:18 | access to local variable o | +| Patterns.cs:12:18:12:31 | After ... is ... [true] | Patterns.cs:12:23:12:31 | String s1 | +| Patterns.cs:12:18:12:31 | Before ... is ... | Patterns.cs:12:14:18:9 | if (...) ... | +| Patterns.cs:12:23:12:31 | String s1 | Patterns.cs:12:18:12:31 | [MatchTrue] ... is ... | +| Patterns.cs:13:9:15:9 | After {...} | Patterns.cs:14:13:14:46 | After ...; | +| Patterns.cs:13:9:15:9 | {...} | Patterns.cs:12:18:12:31 | After ... is ... [true] | +| Patterns.cs:14:13:14:45 | After call to method WriteLine | Patterns.cs:14:13:14:45 | call to method WriteLine | +| Patterns.cs:14:13:14:45 | Before call to method WriteLine | Patterns.cs:14:13:14:46 | ...; | +| Patterns.cs:14:13:14:45 | call to method WriteLine | Patterns.cs:14:31:14:44 | After $"..." | | Patterns.cs:14:13:14:46 | ...; | Patterns.cs:13:9:15:9 | {...} | -| Patterns.cs:14:31:14:44 | $"..." | Patterns.cs:14:40:14:43 | {...} | -| Patterns.cs:14:33:14:39 | "string " | Patterns.cs:14:13:14:46 | ...; | +| Patterns.cs:14:13:14:46 | After ...; | Patterns.cs:14:13:14:45 | After call to method WriteLine | +| Patterns.cs:14:31:14:44 | $"..." | Patterns.cs:14:40:14:43 | After {...} | +| Patterns.cs:14:31:14:44 | After $"..." | Patterns.cs:14:31:14:44 | $"..." | +| Patterns.cs:14:31:14:44 | Before $"..." | Patterns.cs:14:13:14:45 | Before call to method WriteLine | +| Patterns.cs:14:33:14:39 | "string " | Patterns.cs:14:31:14:44 | Before $"..." | +| Patterns.cs:14:40:14:43 | After {...} | Patterns.cs:14:40:14:43 | {...} | +| Patterns.cs:14:40:14:43 | Before {...} | Patterns.cs:14:33:14:39 | "string " | | Patterns.cs:14:40:14:43 | {...} | Patterns.cs:14:41:14:42 | access to local variable s1 | -| Patterns.cs:14:41:14:42 | access to local variable s1 | Patterns.cs:14:33:14:39 | "string " | -| Patterns.cs:16:14:18:9 | if (...) ... | Patterns.cs:12:18:12:31 | [false] ... is ... | -| Patterns.cs:16:18:16:18 | access to local variable o | Patterns.cs:16:14:18:9 | if (...) ... | -| Patterns.cs:16:23:16:28 | Object v1 | Patterns.cs:16:18:16:18 | access to local variable o | -| Patterns.cs:17:9:18:9 | {...} | Patterns.cs:16:18:16:28 | [true] ... is ... | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:10:13:10:42 | call to method WriteLine | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:14:13:14:45 | call to method WriteLine | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:16:18:16:28 | [false] ... is ... | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:17:9:18:9 | {...} | +| Patterns.cs:14:41:14:42 | access to local variable s1 | Patterns.cs:14:40:14:43 | Before {...} | +| Patterns.cs:16:14:18:9 | After if (...) ... | Patterns.cs:16:18:16:28 | After ... is ... [false] | +| Patterns.cs:16:14:18:9 | After if (...) ... | Patterns.cs:17:9:18:9 | {...} | +| Patterns.cs:16:14:18:9 | if (...) ... | Patterns.cs:12:18:12:31 | After ... is ... [false] | +| Patterns.cs:16:18:16:18 | access to local variable o | Patterns.cs:16:18:16:28 | Before ... is ... | +| Patterns.cs:16:18:16:28 | ... is ... | Patterns.cs:16:18:16:18 | access to local variable o | +| Patterns.cs:16:18:16:28 | After ... is ... [true] | Patterns.cs:16:23:16:28 | Object v1 | +| Patterns.cs:16:18:16:28 | Before ... is ... | Patterns.cs:16:14:18:9 | if (...) ... | +| Patterns.cs:16:23:16:28 | Object v1 | Patterns.cs:16:18:16:28 | [MatchTrue] ... is ... | +| Patterns.cs:17:9:18:9 | {...} | Patterns.cs:16:18:16:28 | After ... is ... [true] | +| Patterns.cs:20:9:38:9 | After switch (...) {...} | Patterns.cs:23:17:23:22 | break; | +| Patterns.cs:20:9:38:9 | After switch (...) {...} | Patterns.cs:26:17:26:22 | break; | +| Patterns.cs:20:9:38:9 | After switch (...) {...} | Patterns.cs:29:17:29:22 | break; | +| Patterns.cs:20:9:38:9 | After switch (...) {...} | Patterns.cs:32:17:32:22 | break; | +| Patterns.cs:20:9:38:9 | After switch (...) {...} | Patterns.cs:34:17:34:22 | break; | +| Patterns.cs:20:9:38:9 | After switch (...) {...} | Patterns.cs:37:17:37:22 | break; | +| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:8:9:18:9 | After if (...) ... | | Patterns.cs:20:17:20:17 | access to local variable o | Patterns.cs:20:9:38:9 | switch (...) {...} | +| Patterns.cs:22:13:22:23 | After case ...: [match] | Patterns.cs:22:18:22:22 | After "xyz" [match] | +| Patterns.cs:22:13:22:23 | After case ...: [no-match] | Patterns.cs:22:18:22:22 | After "xyz" [no-match] | | Patterns.cs:22:13:22:23 | case ...: | Patterns.cs:20:17:20:17 | access to local variable o | | Patterns.cs:22:18:22:22 | "xyz" | Patterns.cs:22:13:22:23 | case ...: | +| Patterns.cs:23:17:23:22 | Before break; | Patterns.cs:22:13:22:23 | After case ...: [match] | +| Patterns.cs:23:17:23:22 | break; | Patterns.cs:23:17:23:22 | Before break; | +| Patterns.cs:24:13:24:36 | After case ...: [match] | Patterns.cs:24:18:24:23 | After Int32 i2 [match] | +| Patterns.cs:24:13:24:36 | After case ...: [no-match] | Patterns.cs:24:18:24:23 | After Int32 i2 [no-match] | +| Patterns.cs:24:13:24:36 | case ...: | Patterns.cs:22:13:22:23 | After case ...: [no-match] | | Patterns.cs:24:18:24:23 | Int32 i2 | Patterns.cs:24:13:24:36 | case ...: | +| Patterns.cs:24:30:24:31 | access to local variable i2 | Patterns.cs:24:30:24:35 | Before ... > ... | | Patterns.cs:24:30:24:35 | ... > ... | Patterns.cs:24:35:24:35 | 0 | +| Patterns.cs:24:30:24:35 | Before ... > ... | Patterns.cs:24:13:24:36 | After case ...: [match] | | Patterns.cs:24:35:24:35 | 0 | Patterns.cs:24:30:24:31 | access to local variable i2 | -| Patterns.cs:25:17:25:51 | call to method WriteLine | Patterns.cs:25:35:25:50 | $"..." | -| Patterns.cs:25:35:25:50 | $"..." | Patterns.cs:25:46:25:49 | {...} | -| Patterns.cs:25:37:25:45 | "positive " | Patterns.cs:25:17:25:52 | ...; | +| Patterns.cs:25:17:25:51 | After call to method WriteLine | Patterns.cs:25:17:25:51 | call to method WriteLine | +| Patterns.cs:25:17:25:51 | Before call to method WriteLine | Patterns.cs:25:17:25:52 | ...; | +| Patterns.cs:25:17:25:51 | call to method WriteLine | Patterns.cs:25:35:25:50 | After $"..." | +| Patterns.cs:25:17:25:52 | ...; | Patterns.cs:24:30:24:35 | After ... > ... [true] | +| Patterns.cs:25:17:25:52 | After ...; | Patterns.cs:25:17:25:51 | After call to method WriteLine | +| Patterns.cs:25:35:25:50 | $"..." | Patterns.cs:25:46:25:49 | After {...} | +| Patterns.cs:25:35:25:50 | After $"..." | Patterns.cs:25:35:25:50 | $"..." | +| Patterns.cs:25:35:25:50 | Before $"..." | Patterns.cs:25:17:25:51 | Before call to method WriteLine | +| Patterns.cs:25:37:25:45 | "positive " | Patterns.cs:25:35:25:50 | Before $"..." | +| Patterns.cs:25:46:25:49 | After {...} | Patterns.cs:25:46:25:49 | {...} | +| Patterns.cs:25:46:25:49 | Before {...} | Patterns.cs:25:37:25:45 | "positive " | | Patterns.cs:25:46:25:49 | {...} | Patterns.cs:25:47:25:48 | access to local variable i2 | -| Patterns.cs:25:47:25:48 | access to local variable i2 | Patterns.cs:25:37:25:45 | "positive " | -| Patterns.cs:26:17:26:22 | break; | Patterns.cs:25:17:25:51 | call to method WriteLine | +| Patterns.cs:25:47:25:48 | access to local variable i2 | Patterns.cs:25:46:25:49 | Before {...} | +| Patterns.cs:26:17:26:22 | Before break; | Patterns.cs:25:17:25:52 | After ...; | +| Patterns.cs:26:17:26:22 | break; | Patterns.cs:26:17:26:22 | Before break; | +| Patterns.cs:27:13:27:24 | After case ...: [match] | Patterns.cs:27:18:27:23 | After Int32 i3 [match] | +| Patterns.cs:27:13:27:24 | After case ...: [no-match] | Patterns.cs:27:18:27:23 | After Int32 i3 [no-match] | +| Patterns.cs:27:13:27:24 | case ...: | Patterns.cs:24:13:24:36 | After case ...: [no-match] | +| Patterns.cs:27:13:27:24 | case ...: | Patterns.cs:24:30:24:35 | After ... > ... [false] | | Patterns.cs:27:18:27:23 | Int32 i3 | Patterns.cs:27:13:27:24 | case ...: | -| Patterns.cs:28:17:28:46 | call to method WriteLine | Patterns.cs:28:35:28:45 | $"..." | -| Patterns.cs:28:35:28:45 | $"..." | Patterns.cs:28:41:28:44 | {...} | -| Patterns.cs:28:37:28:40 | "int " | Patterns.cs:28:17:28:47 | ...; | +| Patterns.cs:28:17:28:46 | After call to method WriteLine | Patterns.cs:28:17:28:46 | call to method WriteLine | +| Patterns.cs:28:17:28:46 | Before call to method WriteLine | Patterns.cs:28:17:28:47 | ...; | +| Patterns.cs:28:17:28:46 | call to method WriteLine | Patterns.cs:28:35:28:45 | After $"..." | +| Patterns.cs:28:17:28:47 | ...; | Patterns.cs:27:13:27:24 | After case ...: [match] | +| Patterns.cs:28:17:28:47 | After ...; | Patterns.cs:28:17:28:46 | After call to method WriteLine | +| Patterns.cs:28:35:28:45 | $"..." | Patterns.cs:28:41:28:44 | After {...} | +| Patterns.cs:28:35:28:45 | After $"..." | Patterns.cs:28:35:28:45 | $"..." | +| Patterns.cs:28:35:28:45 | Before $"..." | Patterns.cs:28:17:28:46 | Before call to method WriteLine | +| Patterns.cs:28:37:28:40 | "int " | Patterns.cs:28:35:28:45 | Before $"..." | +| Patterns.cs:28:41:28:44 | After {...} | Patterns.cs:28:41:28:44 | {...} | +| Patterns.cs:28:41:28:44 | Before {...} | Patterns.cs:28:37:28:40 | "int " | | Patterns.cs:28:41:28:44 | {...} | Patterns.cs:28:42:28:43 | access to local variable i3 | -| Patterns.cs:28:42:28:43 | access to local variable i3 | Patterns.cs:28:37:28:40 | "int " | -| Patterns.cs:29:17:29:22 | break; | Patterns.cs:28:17:28:46 | call to method WriteLine | +| Patterns.cs:28:42:28:43 | access to local variable i3 | Patterns.cs:28:41:28:44 | Before {...} | +| Patterns.cs:29:17:29:22 | Before break; | Patterns.cs:28:17:28:47 | After ...; | +| Patterns.cs:29:17:29:22 | break; | Patterns.cs:29:17:29:22 | Before break; | +| Patterns.cs:30:13:30:27 | After case ...: [match] | Patterns.cs:30:18:30:26 | After String s2 [match] | +| Patterns.cs:30:13:30:27 | After case ...: [no-match] | Patterns.cs:30:18:30:26 | After String s2 [no-match] | +| Patterns.cs:30:13:30:27 | case ...: | Patterns.cs:27:13:27:24 | After case ...: [no-match] | | Patterns.cs:30:18:30:26 | String s2 | Patterns.cs:30:13:30:27 | case ...: | -| Patterns.cs:31:17:31:49 | call to method WriteLine | Patterns.cs:31:35:31:48 | $"..." | -| Patterns.cs:31:35:31:48 | $"..." | Patterns.cs:31:44:31:47 | {...} | -| Patterns.cs:31:37:31:43 | "string " | Patterns.cs:31:17:31:50 | ...; | +| Patterns.cs:31:17:31:49 | After call to method WriteLine | Patterns.cs:31:17:31:49 | call to method WriteLine | +| Patterns.cs:31:17:31:49 | Before call to method WriteLine | Patterns.cs:31:17:31:50 | ...; | +| Patterns.cs:31:17:31:49 | call to method WriteLine | Patterns.cs:31:35:31:48 | After $"..." | +| Patterns.cs:31:17:31:50 | ...; | Patterns.cs:30:13:30:27 | After case ...: [match] | +| Patterns.cs:31:17:31:50 | After ...; | Patterns.cs:31:17:31:49 | After call to method WriteLine | +| Patterns.cs:31:35:31:48 | $"..." | Patterns.cs:31:44:31:47 | After {...} | +| Patterns.cs:31:35:31:48 | After $"..." | Patterns.cs:31:35:31:48 | $"..." | +| Patterns.cs:31:35:31:48 | Before $"..." | Patterns.cs:31:17:31:49 | Before call to method WriteLine | +| Patterns.cs:31:37:31:43 | "string " | Patterns.cs:31:35:31:48 | Before $"..." | +| Patterns.cs:31:44:31:47 | After {...} | Patterns.cs:31:44:31:47 | {...} | +| Patterns.cs:31:44:31:47 | Before {...} | Patterns.cs:31:37:31:43 | "string " | | Patterns.cs:31:44:31:47 | {...} | Patterns.cs:31:45:31:46 | access to local variable s2 | -| Patterns.cs:31:45:31:46 | access to local variable s2 | Patterns.cs:31:37:31:43 | "string " | -| Patterns.cs:32:17:32:22 | break; | Patterns.cs:31:17:31:49 | call to method WriteLine | +| Patterns.cs:31:45:31:46 | access to local variable s2 | Patterns.cs:31:44:31:47 | Before {...} | +| Patterns.cs:32:17:32:22 | Before break; | Patterns.cs:31:17:31:50 | After ...; | +| Patterns.cs:32:17:32:22 | break; | Patterns.cs:32:17:32:22 | Before break; | +| Patterns.cs:33:13:33:24 | After case ...: [match] | Patterns.cs:33:18:33:23 | After Object v2 [match] | +| Patterns.cs:33:13:33:24 | After case ...: [no-match] | Patterns.cs:33:18:33:23 | After Object v2 [no-match] | +| Patterns.cs:33:13:33:24 | case ...: | Patterns.cs:30:13:30:27 | After case ...: [no-match] | | Patterns.cs:33:18:33:23 | Object v2 | Patterns.cs:33:13:33:24 | case ...: | +| Patterns.cs:34:17:34:22 | Before break; | Patterns.cs:33:13:33:24 | After case ...: [match] | +| Patterns.cs:34:17:34:22 | break; | Patterns.cs:34:17:34:22 | Before break; | +| Patterns.cs:35:13:35:20 | After default: [match] | Patterns.cs:35:13:35:20 | default: | +| Patterns.cs:35:13:35:20 | default: | Patterns.cs:33:13:33:24 | After case ...: [no-match] | +| Patterns.cs:36:17:36:51 | After call to method WriteLine | Patterns.cs:36:17:36:51 | call to method WriteLine | +| Patterns.cs:36:17:36:51 | Before call to method WriteLine | Patterns.cs:36:17:36:52 | ...; | | Patterns.cs:36:17:36:51 | call to method WriteLine | Patterns.cs:36:35:36:50 | "Something else" | -| Patterns.cs:36:17:36:52 | ...; | Patterns.cs:35:13:35:20 | default: | -| Patterns.cs:36:35:36:50 | "Something else" | Patterns.cs:36:17:36:52 | ...; | -| Patterns.cs:37:17:37:22 | break; | Patterns.cs:36:17:36:51 | call to method WriteLine | -| Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:23:17:23:22 | break; | -| Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:26:17:26:22 | break; | -| Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:29:17:29:22 | break; | -| Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:32:17:32:22 | break; | -| Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:34:17:34:22 | break; | -| Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:37:17:37:22 | break; | +| Patterns.cs:36:17:36:52 | ...; | Patterns.cs:35:13:35:20 | After default: [match] | +| Patterns.cs:36:17:36:52 | After ...; | Patterns.cs:36:17:36:51 | After call to method WriteLine | +| Patterns.cs:36:35:36:50 | "Something else" | Patterns.cs:36:17:36:51 | Before call to method WriteLine | +| Patterns.cs:37:17:37:22 | Before break; | Patterns.cs:36:17:36:52 | After ...; | +| Patterns.cs:37:17:37:22 | break; | Patterns.cs:37:17:37:22 | Before break; | +| Patterns.cs:40:9:42:9 | After switch (...) {...} | Patterns.cs:40:17:40:17 | access to local variable o | +| Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:20:9:38:9 | After switch (...) {...} | | Patterns.cs:40:17:40:17 | access to local variable o | Patterns.cs:40:9:42:9 | switch (...) {...} | -| Patterns.cs:47:24:47:25 | exit M2 | Patterns.cs:47:24:47:25 | exit M2 (normal) | -| Patterns.cs:47:24:47:25 | exit M2 (normal) | Patterns.cs:48:9:48:20 | ... is ... | -| Patterns.cs:48:9:48:9 | access to parameter c | Patterns.cs:47:24:47:25 | enter M2 | -| Patterns.cs:48:9:48:20 | ... is ... | Patterns.cs:48:14:48:20 | not ... | +| Patterns.cs:47:24:47:25 | Exit | Patterns.cs:47:24:47:25 | Normal Exit | +| Patterns.cs:47:24:47:25 | Normal Exit | Patterns.cs:48:9:48:20 | After ... is ... | +| Patterns.cs:47:32:47:32 | c | Patterns.cs:47:24:47:25 | Entry | +| Patterns.cs:48:9:48:9 | access to parameter c | Patterns.cs:48:9:48:20 | Before ... is ... | +| Patterns.cs:48:9:48:20 | ... is ... | Patterns.cs:48:9:48:9 | access to parameter c | +| Patterns.cs:48:9:48:20 | After ... is ... | Patterns.cs:48:9:48:20 | ... is ... | +| Patterns.cs:48:9:48:20 | After ... is ... | Patterns.cs:48:14:48:20 | After not ... | +| Patterns.cs:48:9:48:20 | Before ... is ... | Patterns.cs:47:32:47:32 | c | +| Patterns.cs:48:14:48:20 | After not ... | Patterns.cs:48:14:48:20 | not ... | +| Patterns.cs:48:14:48:20 | Before not ... | Patterns.cs:48:9:48:20 | [MatchTrue] ... is ... | | Patterns.cs:48:14:48:20 | not ... | Patterns.cs:48:18:48:20 | a | -| Patterns.cs:48:18:48:20 | a | Patterns.cs:48:9:48:9 | access to parameter c | -| Patterns.cs:50:24:50:25 | exit M3 | Patterns.cs:50:24:50:25 | exit M3 (normal) | -| Patterns.cs:50:24:50:25 | exit M3 (normal) | Patterns.cs:51:9:51:39 | ... ? ... : ... | -| Patterns.cs:51:9:51:9 | access to parameter c | Patterns.cs:50:24:50:25 | enter M3 | -| Patterns.cs:51:9:51:21 | [false] ... is ... | Patterns.cs:51:14:51:21 | [no-match] not ... | -| Patterns.cs:51:9:51:21 | [true] ... is ... | Patterns.cs:51:14:51:21 | [match] not ... | -| Patterns.cs:51:9:51:39 | ... ? ... : ... | Patterns.cs:51:25:51:30 | ... is ... | -| Patterns.cs:51:9:51:39 | ... ? ... : ... | Patterns.cs:51:34:51:39 | ... is ... | -| Patterns.cs:51:18:51:21 | null | Patterns.cs:51:9:51:9 | access to parameter c | -| Patterns.cs:51:25:51:25 | access to parameter c | Patterns.cs:51:9:51:21 | [true] ... is ... | -| Patterns.cs:51:25:51:30 | ... is ... | Patterns.cs:51:30:51:30 | 1 | -| Patterns.cs:51:30:51:30 | 1 | Patterns.cs:51:25:51:25 | access to parameter c | -| Patterns.cs:51:34:51:34 | access to parameter c | Patterns.cs:51:9:51:21 | [false] ... is ... | -| Patterns.cs:51:34:51:39 | ... is ... | Patterns.cs:51:39:51:39 | 2 | -| Patterns.cs:51:39:51:39 | 2 | Patterns.cs:51:34:51:34 | access to parameter c | -| Patterns.cs:53:24:53:25 | exit M4 | Patterns.cs:53:24:53:25 | exit M4 (normal) | -| Patterns.cs:53:24:53:25 | exit M4 (normal) | Patterns.cs:54:9:54:37 | ... is ... | -| Patterns.cs:54:9:54:9 | access to parameter c | Patterns.cs:53:24:53:25 | enter M4 | -| Patterns.cs:54:9:54:37 | ... is ... | Patterns.cs:54:14:54:37 | not ... | -| Patterns.cs:54:14:54:37 | not ... | Patterns.cs:54:18:54:37 | { ... } | -| Patterns.cs:54:18:54:37 | Patterns u | Patterns.cs:54:9:54:9 | access to parameter c | -| Patterns.cs:54:18:54:37 | { ... } | Patterns.cs:54:18:54:37 | Patterns u | -| Patterns.cs:54:18:54:37 | { ... } | Patterns.cs:54:27:54:35 | [match] { ... } | -| Patterns.cs:54:18:54:37 | { ... } | Patterns.cs:54:27:54:35 | [no-match] { ... } | -| Patterns.cs:56:26:56:27 | exit M5 | Patterns.cs:56:26:56:27 | exit M5 (normal) | -| Patterns.cs:56:26:56:27 | exit M5 (normal) | Patterns.cs:58:9:62:10 | return ...; | -| Patterns.cs:57:5:63:5 | {...} | Patterns.cs:56:26:56:27 | enter M5 | -| Patterns.cs:58:9:62:10 | return ...; | Patterns.cs:58:16:62:9 | ... switch { ... } | -| Patterns.cs:58:16:58:16 | access to parameter i | Patterns.cs:57:5:63:5 | {...} | -| Patterns.cs:58:16:62:9 | ... switch { ... } | Patterns.cs:60:13:60:28 | ... => ... | -| Patterns.cs:58:16:62:9 | ... switch { ... } | Patterns.cs:61:13:61:24 | ... => ... | -| Patterns.cs:60:13:60:28 | ... => ... | Patterns.cs:60:22:60:28 | "not 1" | -| Patterns.cs:60:17:60:17 | 1 | Patterns.cs:58:16:58:16 | access to parameter i | -| Patterns.cs:60:22:60:28 | "not 1" | Patterns.cs:60:13:60:17 | [match] not ... | -| Patterns.cs:61:13:61:13 | _ | Patterns.cs:60:13:60:17 | [no-match] not ... | -| Patterns.cs:61:13:61:24 | ... => ... | Patterns.cs:61:18:61:24 | "other" | -| Patterns.cs:61:18:61:24 | "other" | Patterns.cs:61:13:61:13 | _ | -| Patterns.cs:65:26:65:27 | exit M6 | Patterns.cs:65:26:65:27 | exit M6 (normal) | -| Patterns.cs:65:26:65:27 | exit M6 (normal) | Patterns.cs:67:9:71:10 | return ...; | -| Patterns.cs:66:5:72:5 | {...} | Patterns.cs:65:26:65:27 | enter M6 | -| Patterns.cs:67:9:71:10 | return ...; | Patterns.cs:67:16:71:9 | ... switch { ... } | -| Patterns.cs:67:16:67:16 | 2 | Patterns.cs:66:5:72:5 | {...} | -| Patterns.cs:67:16:71:9 | ... switch { ... } | Patterns.cs:70:13:70:27 | ... => ... | -| Patterns.cs:69:13:69:17 | [no-match] not ... | Patterns.cs:69:17:69:17 | 2 | -| Patterns.cs:69:17:69:17 | 2 | Patterns.cs:67:16:67:16 | 2 | -| Patterns.cs:70:13:70:13 | 2 | Patterns.cs:69:13:69:17 | [no-match] not ... | -| Patterns.cs:70:13:70:27 | ... => ... | Patterns.cs:70:18:70:27 | "possible" | -| Patterns.cs:70:18:70:27 | "possible" | Patterns.cs:70:13:70:13 | 2 | -| Patterns.cs:74:26:74:27 | exit M7 | Patterns.cs:74:26:74:27 | exit M7 (normal) | -| Patterns.cs:74:26:74:27 | exit M7 (normal) | Patterns.cs:76:9:82:10 | return ...; | -| Patterns.cs:75:5:83:5 | {...} | Patterns.cs:74:26:74:27 | enter M7 | -| Patterns.cs:76:9:82:10 | return ...; | Patterns.cs:76:16:82:9 | ... switch { ... } | -| Patterns.cs:76:16:76:16 | access to parameter i | Patterns.cs:75:5:83:5 | {...} | -| Patterns.cs:76:16:82:9 | ... switch { ... } | Patterns.cs:78:13:78:24 | ... => ... | -| Patterns.cs:76:16:82:9 | ... switch { ... } | Patterns.cs:79:13:79:24 | ... => ... | -| Patterns.cs:76:16:82:9 | ... switch { ... } | Patterns.cs:80:13:80:20 | ... => ... | -| Patterns.cs:76:16:82:9 | ... switch { ... } | Patterns.cs:81:13:81:20 | ... => ... | +| Patterns.cs:48:18:48:20 | a | Patterns.cs:48:14:48:20 | Before not ... | +| Patterns.cs:50:24:50:25 | Exit | Patterns.cs:50:24:50:25 | Normal Exit | +| Patterns.cs:50:24:50:25 | Normal Exit | Patterns.cs:51:9:51:39 | After ... ? ... : ... | +| Patterns.cs:50:34:50:34 | c | Patterns.cs:50:24:50:25 | Entry | +| Patterns.cs:51:9:51:9 | access to parameter c | Patterns.cs:51:9:51:21 | Before ... is ... | +| Patterns.cs:51:9:51:21 | ... is ... | Patterns.cs:51:9:51:9 | access to parameter c | +| Patterns.cs:51:9:51:21 | After ... is ... [true] | Patterns.cs:51:14:51:21 | After not ... | +| Patterns.cs:51:9:51:21 | Before ... is ... | Patterns.cs:51:9:51:39 | ... ? ... : ... | +| Patterns.cs:51:9:51:39 | ... ? ... : ... | Patterns.cs:50:34:50:34 | c | +| Patterns.cs:51:9:51:39 | After ... ? ... : ... | Patterns.cs:51:25:51:30 | After ... is ... | +| Patterns.cs:51:9:51:39 | After ... ? ... : ... | Patterns.cs:51:34:51:39 | After ... is ... | +| Patterns.cs:51:14:51:21 | After not ... | Patterns.cs:51:14:51:21 | not ... | +| Patterns.cs:51:14:51:21 | Before not ... | Patterns.cs:51:9:51:21 | [MatchTrue] ... is ... | +| Patterns.cs:51:14:51:21 | not ... | Patterns.cs:51:18:51:21 | null | +| Patterns.cs:51:18:51:21 | null | Patterns.cs:51:14:51:21 | Before not ... | +| Patterns.cs:51:25:51:25 | access to parameter c | Patterns.cs:51:25:51:30 | Before ... is ... | +| Patterns.cs:51:25:51:30 | ... is ... | Patterns.cs:51:25:51:25 | access to parameter c | +| Patterns.cs:51:25:51:30 | After ... is ... | Patterns.cs:51:25:51:30 | ... is ... | +| Patterns.cs:51:25:51:30 | After ... is ... | Patterns.cs:51:30:51:30 | 1 | +| Patterns.cs:51:25:51:30 | Before ... is ... | Patterns.cs:51:9:51:21 | After ... is ... [true] | +| Patterns.cs:51:30:51:30 | 1 | Patterns.cs:51:25:51:30 | [MatchTrue] ... is ... | +| Patterns.cs:51:34:51:34 | access to parameter c | Patterns.cs:51:34:51:39 | Before ... is ... | +| Patterns.cs:51:34:51:39 | ... is ... | Patterns.cs:51:34:51:34 | access to parameter c | +| Patterns.cs:51:34:51:39 | After ... is ... | Patterns.cs:51:34:51:39 | ... is ... | +| Patterns.cs:51:34:51:39 | After ... is ... | Patterns.cs:51:39:51:39 | 2 | +| Patterns.cs:51:34:51:39 | Before ... is ... | Patterns.cs:51:9:51:21 | After ... is ... [false] | +| Patterns.cs:51:39:51:39 | 2 | Patterns.cs:51:34:51:39 | [MatchTrue] ... is ... | +| Patterns.cs:53:24:53:25 | Exit | Patterns.cs:53:24:53:25 | Normal Exit | +| Patterns.cs:53:24:53:25 | Normal Exit | Patterns.cs:54:9:54:37 | After ... is ... | +| Patterns.cs:53:34:53:34 | c | Patterns.cs:53:24:53:25 | Entry | +| Patterns.cs:54:9:54:9 | access to parameter c | Patterns.cs:54:9:54:37 | Before ... is ... | +| Patterns.cs:54:9:54:37 | ... is ... | Patterns.cs:54:9:54:9 | access to parameter c | +| Patterns.cs:54:9:54:37 | After ... is ... | Patterns.cs:54:9:54:37 | ... is ... | +| Patterns.cs:54:9:54:37 | After ... is ... | Patterns.cs:54:14:54:37 | After not ... | +| Patterns.cs:54:9:54:37 | Before ... is ... | Patterns.cs:53:34:53:34 | c | +| Patterns.cs:54:14:54:37 | After not ... | Patterns.cs:54:14:54:37 | not ... | +| Patterns.cs:54:14:54:37 | Before not ... | Patterns.cs:54:9:54:37 | [MatchTrue] ... is ... | +| Patterns.cs:54:14:54:37 | not ... | Patterns.cs:54:18:54:37 | After { ... } | +| Patterns.cs:54:18:54:25 | access to type Patterns | Patterns.cs:54:18:54:37 | Patterns u | +| Patterns.cs:54:18:54:37 | After { ... } | Patterns.cs:54:18:54:37 | { ... } | +| Patterns.cs:54:18:54:37 | Before { ... } | Patterns.cs:54:14:54:37 | Before not ... | +| Patterns.cs:54:18:54:37 | Patterns u | Patterns.cs:54:18:54:37 | Before { ... } | +| Patterns.cs:54:18:54:37 | { ... } | Patterns.cs:54:27:54:35 | After { ... } | +| Patterns.cs:54:27:54:35 | After { ... } | Patterns.cs:54:27:54:35 | { ... } | +| Patterns.cs:54:27:54:35 | Before { ... } | Patterns.cs:54:18:54:25 | access to type Patterns | +| Patterns.cs:54:27:54:35 | { ... } | Patterns.cs:54:33:54:33 | 1 | +| Patterns.cs:54:33:54:33 | 1 | Patterns.cs:54:27:54:35 | Before { ... } | +| Patterns.cs:56:26:56:27 | Exit | Patterns.cs:56:26:56:27 | Normal Exit | +| Patterns.cs:56:26:56:27 | Normal Exit | Patterns.cs:58:9:62:10 | return ...; | +| Patterns.cs:56:33:56:33 | i | Patterns.cs:56:26:56:27 | Entry | +| Patterns.cs:57:5:63:5 | {...} | Patterns.cs:56:33:56:33 | i | +| Patterns.cs:58:9:62:10 | Before return ...; | Patterns.cs:57:5:63:5 | {...} | +| Patterns.cs:58:9:62:10 | return ...; | Patterns.cs:58:16:62:9 | After ... switch { ... } | +| Patterns.cs:58:16:58:16 | access to parameter i | Patterns.cs:58:16:62:9 | ... switch { ... } | +| Patterns.cs:58:16:62:9 | ... switch { ... } | Patterns.cs:58:9:62:10 | Before return ...; | +| Patterns.cs:58:16:62:9 | After ... switch { ... } | Patterns.cs:60:22:60:28 | "not 1" | +| Patterns.cs:58:16:62:9 | After ... switch { ... } | Patterns.cs:61:18:61:24 | "other" | +| Patterns.cs:60:13:60:17 | Before not ... | Patterns.cs:60:13:60:28 | ... => ... | +| Patterns.cs:60:13:60:17 | not ... | Patterns.cs:60:17:60:17 | 1 | +| Patterns.cs:60:13:60:28 | ... => ... | Patterns.cs:58:16:58:16 | access to parameter i | +| Patterns.cs:60:13:60:28 | After ... => ... [match] | Patterns.cs:60:13:60:17 | After not ... [match] | +| Patterns.cs:60:13:60:28 | After ... => ... [no-match] | Patterns.cs:60:13:60:17 | After not ... [no-match] | +| Patterns.cs:60:17:60:17 | 1 | Patterns.cs:60:13:60:17 | Before not ... | +| Patterns.cs:60:22:60:28 | "not 1" | Patterns.cs:60:13:60:28 | After ... => ... [match] | +| Patterns.cs:61:13:61:13 | After _ [match] | Patterns.cs:61:13:61:13 | _ | +| Patterns.cs:61:13:61:13 | _ | Patterns.cs:61:13:61:24 | ... => ... | +| Patterns.cs:61:13:61:24 | ... => ... | Patterns.cs:60:13:60:28 | After ... => ... [no-match] | +| Patterns.cs:61:13:61:24 | After ... => ... [match] | Patterns.cs:61:13:61:13 | After _ [match] | +| Patterns.cs:61:18:61:24 | "other" | Patterns.cs:61:13:61:24 | After ... => ... [match] | +| Patterns.cs:65:26:65:27 | Exit | Patterns.cs:65:26:65:27 | Normal Exit | +| Patterns.cs:65:26:65:27 | Normal Exit | Patterns.cs:67:9:71:10 | return ...; | +| Patterns.cs:66:5:72:5 | {...} | Patterns.cs:65:26:65:27 | Entry | +| Patterns.cs:67:9:71:10 | Before return ...; | Patterns.cs:66:5:72:5 | {...} | +| Patterns.cs:67:9:71:10 | return ...; | Patterns.cs:67:16:71:9 | After ... switch { ... } | +| Patterns.cs:67:16:67:16 | 2 | Patterns.cs:67:16:71:9 | ... switch { ... } | +| Patterns.cs:67:16:71:9 | ... switch { ... } | Patterns.cs:67:9:71:10 | Before return ...; | +| Patterns.cs:67:16:71:9 | After ... switch { ... } | Patterns.cs:69:22:69:33 | "impossible" | +| Patterns.cs:67:16:71:9 | After ... switch { ... } | Patterns.cs:70:13:70:27 | After ... => ... [no-match] | +| Patterns.cs:67:16:71:9 | After ... switch { ... } | Patterns.cs:70:18:70:27 | "possible" | +| Patterns.cs:69:13:69:17 | Before not ... | Patterns.cs:69:13:69:33 | ... => ... | +| Patterns.cs:69:13:69:17 | not ... | Patterns.cs:69:17:69:17 | 2 | +| Patterns.cs:69:13:69:33 | ... => ... | Patterns.cs:67:16:67:16 | 2 | +| Patterns.cs:69:13:69:33 | After ... => ... [match] | Patterns.cs:69:13:69:17 | After not ... [match] | +| Patterns.cs:69:13:69:33 | After ... => ... [no-match] | Patterns.cs:69:13:69:17 | After not ... [no-match] | +| Patterns.cs:69:17:69:17 | 2 | Patterns.cs:69:13:69:17 | Before not ... | +| Patterns.cs:69:22:69:33 | "impossible" | Patterns.cs:69:13:69:33 | After ... => ... [match] | +| Patterns.cs:70:13:70:13 | 2 | Patterns.cs:70:13:70:27 | ... => ... | +| Patterns.cs:70:13:70:27 | ... => ... | Patterns.cs:69:13:69:33 | After ... => ... [no-match] | +| Patterns.cs:70:13:70:27 | After ... => ... [match] | Patterns.cs:70:13:70:13 | After 2 [match] | +| Patterns.cs:70:13:70:27 | After ... => ... [no-match] | Patterns.cs:70:13:70:13 | After 2 [no-match] | +| Patterns.cs:70:18:70:27 | "possible" | Patterns.cs:70:13:70:27 | After ... => ... [match] | +| Patterns.cs:74:26:74:27 | Exit | Patterns.cs:74:26:74:27 | Normal Exit | +| Patterns.cs:74:26:74:27 | Normal Exit | Patterns.cs:76:9:82:10 | return ...; | +| Patterns.cs:74:33:74:33 | i | Patterns.cs:74:26:74:27 | Entry | +| Patterns.cs:75:5:83:5 | {...} | Patterns.cs:74:33:74:33 | i | +| Patterns.cs:76:9:82:10 | Before return ...; | Patterns.cs:75:5:83:5 | {...} | +| Patterns.cs:76:9:82:10 | return ...; | Patterns.cs:76:16:82:9 | After ... switch { ... } | +| Patterns.cs:76:16:76:16 | access to parameter i | Patterns.cs:76:16:82:9 | ... switch { ... } | +| Patterns.cs:76:16:82:9 | ... switch { ... } | Patterns.cs:76:9:82:10 | Before return ...; | +| Patterns.cs:76:16:82:9 | After ... switch { ... } | Patterns.cs:78:20:78:24 | "> 1" | +| Patterns.cs:76:16:82:9 | After ... switch { ... } | Patterns.cs:79:20:79:24 | "< 0" | +| Patterns.cs:76:16:82:9 | After ... switch { ... } | Patterns.cs:80:18:80:20 | "1" | +| Patterns.cs:76:16:82:9 | After ... switch { ... } | Patterns.cs:81:18:81:20 | "0" | | Patterns.cs:78:13:78:15 | > ... | Patterns.cs:78:15:78:15 | 1 | -| Patterns.cs:78:13:78:24 | ... => ... | Patterns.cs:78:20:78:24 | "> 1" | -| Patterns.cs:78:15:78:15 | 1 | Patterns.cs:76:16:76:16 | access to parameter i | +| Patterns.cs:78:13:78:15 | Before > ... | Patterns.cs:78:13:78:24 | ... => ... | +| Patterns.cs:78:13:78:24 | ... => ... | Patterns.cs:76:16:76:16 | access to parameter i | +| Patterns.cs:78:13:78:24 | After ... => ... [match] | Patterns.cs:78:13:78:15 | After > ... [match] | +| Patterns.cs:78:13:78:24 | After ... => ... [no-match] | Patterns.cs:78:13:78:15 | After > ... [no-match] | +| Patterns.cs:78:15:78:15 | 1 | Patterns.cs:78:13:78:15 | Before > ... | +| Patterns.cs:78:20:78:24 | "> 1" | Patterns.cs:78:13:78:24 | After ... => ... [match] | | Patterns.cs:79:13:79:15 | < ... | Patterns.cs:79:15:79:15 | 0 | -| Patterns.cs:79:13:79:24 | ... => ... | Patterns.cs:79:20:79:24 | "< 0" | -| Patterns.cs:80:13:80:20 | ... => ... | Patterns.cs:80:18:80:20 | "1" | -| Patterns.cs:81:13:81:20 | ... => ... | Patterns.cs:81:18:81:20 | "0" | -| Patterns.cs:81:18:81:20 | "0" | Patterns.cs:81:13:81:13 | _ | -| Patterns.cs:85:26:85:27 | exit M8 | Patterns.cs:85:26:85:27 | exit M8 (normal) | -| Patterns.cs:85:26:85:27 | exit M8 (normal) | Patterns.cs:85:39:85:69 | ... ? ... : ... | -| Patterns.cs:85:39:85:39 | access to parameter i | Patterns.cs:85:26:85:27 | enter M8 | -| Patterns.cs:85:39:85:53 | [false] ... is ... | Patterns.cs:85:44:85:53 | [no-match] ... or ... | -| Patterns.cs:85:39:85:53 | [true] ... is ... | Patterns.cs:85:44:85:53 | [match] ... or ... | -| Patterns.cs:85:39:85:69 | ... ? ... : ... | Patterns.cs:85:57:85:63 | "not 2" | -| Patterns.cs:85:39:85:69 | ... ? ... : ... | Patterns.cs:85:67:85:69 | "2" | -| Patterns.cs:85:44:85:44 | 1 | Patterns.cs:85:39:85:39 | access to parameter i | -| Patterns.cs:85:44:85:53 | [match] ... or ... | Patterns.cs:85:49:85:53 | [match] not ... | -| Patterns.cs:85:44:85:53 | [no-match] ... or ... | Patterns.cs:85:49:85:53 | [no-match] not ... | -| Patterns.cs:85:57:85:63 | "not 2" | Patterns.cs:85:39:85:53 | [true] ... is ... | -| Patterns.cs:85:67:85:69 | "2" | Patterns.cs:85:39:85:53 | [false] ... is ... | -| Patterns.cs:87:26:87:27 | exit M9 | Patterns.cs:87:26:87:27 | exit M9 (normal) | -| Patterns.cs:87:26:87:27 | exit M9 (normal) | Patterns.cs:87:39:87:70 | ... ? ... : ... | -| Patterns.cs:87:39:87:39 | access to parameter i | Patterns.cs:87:26:87:27 | enter M9 | -| Patterns.cs:87:39:87:54 | [false] ... is ... | Patterns.cs:87:44:87:54 | [no-match] ... and ... | -| Patterns.cs:87:39:87:54 | [true] ... is ... | Patterns.cs:87:44:87:54 | [match] ... and ... | -| Patterns.cs:87:39:87:70 | ... ? ... : ... | Patterns.cs:87:58:87:60 | "1" | -| Patterns.cs:87:39:87:70 | ... ? ... : ... | Patterns.cs:87:64:87:70 | "not 1" | -| Patterns.cs:87:44:87:44 | 1 | Patterns.cs:87:39:87:39 | access to parameter i | -| Patterns.cs:87:44:87:54 | [match] ... and ... | Patterns.cs:87:50:87:54 | [match] not ... | -| Patterns.cs:87:44:87:54 | [no-match] ... and ... | Patterns.cs:87:50:87:54 | [no-match] not ... | -| Patterns.cs:87:58:87:60 | "1" | Patterns.cs:87:39:87:54 | [true] ... is ... | -| Patterns.cs:87:64:87:70 | "not 1" | Patterns.cs:87:39:87:54 | [false] ... is ... | -| Patterns.cs:93:17:93:19 | exit M10 | Patterns.cs:93:17:93:19 | exit M10 (normal) | -| Patterns.cs:93:17:93:19 | exit M10 (normal) | Patterns.cs:95:13:95:40 | [false] ... is ... | -| Patterns.cs:93:17:93:19 | exit M10 (normal) | Patterns.cs:97:13:97:38 | call to method WriteLine | -| Patterns.cs:94:5:99:5 | {...} | Patterns.cs:93:17:93:19 | enter M10 | +| Patterns.cs:79:13:79:15 | Before < ... | Patterns.cs:79:13:79:24 | ... => ... | +| Patterns.cs:79:13:79:24 | ... => ... | Patterns.cs:78:13:78:24 | After ... => ... [no-match] | +| Patterns.cs:79:13:79:24 | After ... => ... [match] | Patterns.cs:79:13:79:15 | After < ... [match] | +| Patterns.cs:79:13:79:24 | After ... => ... [no-match] | Patterns.cs:79:13:79:15 | After < ... [no-match] | +| Patterns.cs:79:15:79:15 | 0 | Patterns.cs:79:13:79:15 | Before < ... | +| Patterns.cs:79:20:79:24 | "< 0" | Patterns.cs:79:13:79:24 | After ... => ... [match] | +| Patterns.cs:80:13:80:13 | 1 | Patterns.cs:80:13:80:20 | ... => ... | +| Patterns.cs:80:13:80:20 | ... => ... | Patterns.cs:79:13:79:24 | After ... => ... [no-match] | +| Patterns.cs:80:13:80:20 | After ... => ... [match] | Patterns.cs:80:13:80:13 | After 1 [match] | +| Patterns.cs:80:13:80:20 | After ... => ... [no-match] | Patterns.cs:80:13:80:13 | After 1 [no-match] | +| Patterns.cs:80:18:80:20 | "1" | Patterns.cs:80:13:80:20 | After ... => ... [match] | +| Patterns.cs:81:13:81:13 | After _ [match] | Patterns.cs:81:13:81:13 | _ | +| Patterns.cs:81:13:81:13 | _ | Patterns.cs:81:13:81:20 | ... => ... | +| Patterns.cs:81:13:81:20 | ... => ... | Patterns.cs:80:13:80:20 | After ... => ... [no-match] | +| Patterns.cs:81:13:81:20 | After ... => ... [match] | Patterns.cs:81:13:81:13 | After _ [match] | +| Patterns.cs:81:18:81:20 | "0" | Patterns.cs:81:13:81:20 | After ... => ... [match] | +| Patterns.cs:85:26:85:27 | Exit | Patterns.cs:85:26:85:27 | Normal Exit | +| Patterns.cs:85:26:85:27 | Normal Exit | Patterns.cs:85:39:85:69 | After ... ? ... : ... | +| Patterns.cs:85:33:85:33 | i | Patterns.cs:85:26:85:27 | Entry | +| Patterns.cs:85:39:85:39 | access to parameter i | Patterns.cs:85:39:85:53 | Before ... is ... | +| Patterns.cs:85:39:85:53 | ... is ... | Patterns.cs:85:39:85:39 | access to parameter i | +| Patterns.cs:85:39:85:53 | After ... is ... [true] | Patterns.cs:85:44:85:53 | After ... or ... | +| Patterns.cs:85:39:85:53 | Before ... is ... | Patterns.cs:85:39:85:69 | ... ? ... : ... | +| Patterns.cs:85:39:85:69 | ... ? ... : ... | Patterns.cs:85:33:85:33 | i | +| Patterns.cs:85:39:85:69 | After ... ? ... : ... | Patterns.cs:85:57:85:63 | "not 2" | +| Patterns.cs:85:39:85:69 | After ... ? ... : ... | Patterns.cs:85:67:85:69 | "2" | +| Patterns.cs:85:44:85:44 | 1 | Patterns.cs:85:44:85:53 | Before ... or ... | +| Patterns.cs:85:44:85:53 | ... or ... | Patterns.cs:85:49:85:53 | After not ... | +| Patterns.cs:85:44:85:53 | After ... or ... | Patterns.cs:85:44:85:53 | ... or ... | +| Patterns.cs:85:44:85:53 | Before ... or ... | Patterns.cs:85:39:85:53 | [MatchTrue] ... is ... | +| Patterns.cs:85:49:85:53 | After not ... | Patterns.cs:85:49:85:53 | not ... | +| Patterns.cs:85:49:85:53 | Before not ... | Patterns.cs:85:44:85:44 | 1 | +| Patterns.cs:85:49:85:53 | not ... | Patterns.cs:85:53:85:53 | 2 | +| Patterns.cs:85:53:85:53 | 2 | Patterns.cs:85:49:85:53 | Before not ... | +| Patterns.cs:85:57:85:63 | "not 2" | Patterns.cs:85:39:85:53 | After ... is ... [true] | +| Patterns.cs:85:67:85:69 | "2" | Patterns.cs:85:39:85:53 | After ... is ... [false] | +| Patterns.cs:87:26:87:27 | Exit | Patterns.cs:87:26:87:27 | Normal Exit | +| Patterns.cs:87:26:87:27 | Normal Exit | Patterns.cs:87:39:87:70 | After ... ? ... : ... | +| Patterns.cs:87:33:87:33 | i | Patterns.cs:87:26:87:27 | Entry | +| Patterns.cs:87:39:87:39 | access to parameter i | Patterns.cs:87:39:87:54 | Before ... is ... | +| Patterns.cs:87:39:87:54 | ... is ... | Patterns.cs:87:39:87:39 | access to parameter i | +| Patterns.cs:87:39:87:54 | After ... is ... [true] | Patterns.cs:87:44:87:54 | After ... and ... | +| Patterns.cs:87:39:87:54 | Before ... is ... | Patterns.cs:87:39:87:70 | ... ? ... : ... | +| Patterns.cs:87:39:87:70 | ... ? ... : ... | Patterns.cs:87:33:87:33 | i | +| Patterns.cs:87:39:87:70 | After ... ? ... : ... | Patterns.cs:87:58:87:60 | "1" | +| Patterns.cs:87:39:87:70 | After ... ? ... : ... | Patterns.cs:87:64:87:70 | "not 1" | +| Patterns.cs:87:44:87:44 | 1 | Patterns.cs:87:44:87:54 | Before ... and ... | +| Patterns.cs:87:44:87:54 | ... and ... | Patterns.cs:87:50:87:54 | After not ... | +| Patterns.cs:87:44:87:54 | After ... and ... | Patterns.cs:87:44:87:54 | ... and ... | +| Patterns.cs:87:44:87:54 | Before ... and ... | Patterns.cs:87:39:87:54 | [MatchTrue] ... is ... | +| Patterns.cs:87:50:87:54 | After not ... | Patterns.cs:87:50:87:54 | not ... | +| Patterns.cs:87:50:87:54 | Before not ... | Patterns.cs:87:44:87:44 | 1 | +| Patterns.cs:87:50:87:54 | not ... | Patterns.cs:87:54:87:54 | 2 | +| Patterns.cs:87:54:87:54 | 2 | Patterns.cs:87:50:87:54 | Before not ... | +| Patterns.cs:87:58:87:60 | "1" | Patterns.cs:87:39:87:54 | After ... is ... [true] | +| Patterns.cs:87:64:87:70 | "not 1" | Patterns.cs:87:39:87:54 | After ... is ... [false] | +| Patterns.cs:93:17:93:19 | Exit | Patterns.cs:93:17:93:19 | Normal Exit | +| Patterns.cs:93:17:93:19 | Normal Exit | Patterns.cs:94:5:99:5 | After {...} | +| Patterns.cs:94:5:99:5 | After {...} | Patterns.cs:95:9:98:9 | After if (...) ... | +| Patterns.cs:94:5:99:5 | {...} | Patterns.cs:93:17:93:19 | Entry | +| Patterns.cs:95:9:98:9 | After if (...) ... | Patterns.cs:95:13:95:40 | After ... is ... [false] | +| Patterns.cs:95:9:98:9 | After if (...) ... | Patterns.cs:96:9:98:9 | After {...} | | Patterns.cs:95:9:98:9 | if (...) ... | Patterns.cs:94:5:99:5 | {...} | -| Patterns.cs:95:13:95:16 | this access | Patterns.cs:95:9:98:9 | if (...) ... | -| Patterns.cs:95:13:95:40 | [false] ... is ... | Patterns.cs:95:21:95:40 | [no-match] { ... } | -| Patterns.cs:95:13:95:40 | [true] ... is ... | Patterns.cs:95:21:95:40 | [match] { ... } | -| Patterns.cs:95:21:95:40 | [match] { ... } | Patterns.cs:95:21:95:40 | [match] { ... } | -| Patterns.cs:95:21:95:40 | [match] { ... } | Patterns.cs:95:29:95:38 | [match] ... or ... | -| Patterns.cs:95:21:95:40 | [no-match] { ... } | Patterns.cs:95:21:95:40 | [no-match] { ... } | -| Patterns.cs:95:21:95:40 | [no-match] { ... } | Patterns.cs:95:29:95:38 | [no-match] ... or ... | -| Patterns.cs:95:29:95:31 | access to constant A | Patterns.cs:95:13:95:16 | this access | -| Patterns.cs:96:9:98:9 | {...} | Patterns.cs:95:13:95:40 | [true] ... is ... | +| Patterns.cs:95:13:95:16 | this access | Patterns.cs:95:13:95:40 | Before ... is ... | +| Patterns.cs:95:13:95:40 | ... is ... | Patterns.cs:95:13:95:16 | this access | +| Patterns.cs:95:13:95:40 | After ... is ... [true] | Patterns.cs:95:21:95:40 | After { ... } | +| Patterns.cs:95:13:95:40 | Before ... is ... | Patterns.cs:95:9:98:9 | if (...) ... | +| Patterns.cs:95:21:95:40 | After { ... } | Patterns.cs:95:21:95:40 | { ... } | +| Patterns.cs:95:21:95:40 | After { ... } | Patterns.cs:95:21:95:40 | { ... } | +| Patterns.cs:95:21:95:40 | Before { ... } | Patterns.cs:95:13:95:40 | [MatchTrue] ... is ... | +| Patterns.cs:95:21:95:40 | Before { ... } | Patterns.cs:95:21:95:40 | Before { ... } | +| Patterns.cs:95:21:95:40 | { ... } | Patterns.cs:95:21:95:40 | After { ... } | +| Patterns.cs:95:21:95:40 | { ... } | Patterns.cs:95:29:95:38 | After ... or ... | +| Patterns.cs:95:29:95:31 | access to constant A | Patterns.cs:95:29:95:38 | Before ... or ... | +| Patterns.cs:95:29:95:38 | ... or ... | Patterns.cs:95:36:95:38 | access to constant B | +| Patterns.cs:95:29:95:38 | After ... or ... | Patterns.cs:95:29:95:38 | ... or ... | +| Patterns.cs:95:29:95:38 | Before ... or ... | Patterns.cs:95:21:95:40 | Before { ... } | +| Patterns.cs:95:36:95:38 | access to constant B | Patterns.cs:95:29:95:31 | access to constant A | +| Patterns.cs:96:9:98:9 | After {...} | Patterns.cs:97:13:97:39 | After ...; | +| Patterns.cs:96:9:98:9 | {...} | Patterns.cs:95:13:95:40 | After ... is ... [true] | +| Patterns.cs:97:13:97:38 | After call to method WriteLine | Patterns.cs:97:13:97:38 | call to method WriteLine | +| Patterns.cs:97:13:97:38 | Before call to method WriteLine | Patterns.cs:97:13:97:39 | ...; | | Patterns.cs:97:13:97:38 | call to method WriteLine | Patterns.cs:97:31:97:37 | "not C" | | Patterns.cs:97:13:97:39 | ...; | Patterns.cs:96:9:98:9 | {...} | -| Patterns.cs:97:31:97:37 | "not C" | Patterns.cs:97:13:97:39 | ...; | -| PostDominance.cs:3:7:3:19 | call to constructor Object | PostDominance.cs:3:7:3:19 | call to method | +| Patterns.cs:97:13:97:39 | After ...; | Patterns.cs:97:13:97:38 | After call to method WriteLine | +| Patterns.cs:97:31:97:37 | "not C" | Patterns.cs:97:13:97:38 | Before call to method WriteLine | +| PostDominance.cs:3:7:3:19 | After call to constructor Object | PostDominance.cs:3:7:3:19 | call to constructor Object | +| PostDominance.cs:3:7:3:19 | After call to method | PostDominance.cs:3:7:3:19 | call to method | +| PostDominance.cs:3:7:3:19 | Before call to constructor Object | PostDominance.cs:3:7:3:19 | After call to method | +| PostDominance.cs:3:7:3:19 | Before call to method | PostDominance.cs:3:7:3:19 | Entry | +| PostDominance.cs:3:7:3:19 | Exit | PostDominance.cs:3:7:3:19 | Normal Exit | +| PostDominance.cs:3:7:3:19 | Normal Exit | PostDominance.cs:3:7:3:19 | {...} | +| PostDominance.cs:3:7:3:19 | call to constructor Object | PostDominance.cs:3:7:3:19 | Before call to constructor Object | | PostDominance.cs:3:7:3:19 | call to method | PostDominance.cs:3:7:3:19 | this access | -| PostDominance.cs:3:7:3:19 | exit PostDominance | PostDominance.cs:3:7:3:19 | exit PostDominance (normal) | -| PostDominance.cs:3:7:3:19 | exit PostDominance (normal) | PostDominance.cs:3:7:3:19 | {...} | -| PostDominance.cs:3:7:3:19 | this access | PostDominance.cs:3:7:3:19 | enter PostDominance | -| PostDominance.cs:3:7:3:19 | {...} | PostDominance.cs:3:7:3:19 | call to constructor Object | -| PostDominance.cs:5:10:5:11 | exit M1 | PostDominance.cs:5:10:5:11 | exit M1 (normal) | -| PostDominance.cs:5:10:5:11 | exit M1 (normal) | PostDominance.cs:7:9:7:28 | call to method WriteLine | -| PostDominance.cs:6:5:8:5 | {...} | PostDominance.cs:5:10:5:11 | enter M1 | +| PostDominance.cs:3:7:3:19 | this access | PostDominance.cs:3:7:3:19 | Before call to method | +| PostDominance.cs:3:7:3:19 | {...} | PostDominance.cs:3:7:3:19 | After call to constructor Object | +| PostDominance.cs:5:10:5:11 | Exit | PostDominance.cs:5:10:5:11 | Normal Exit | +| PostDominance.cs:5:10:5:11 | Normal Exit | PostDominance.cs:6:5:8:5 | After {...} | +| PostDominance.cs:5:20:5:20 | s | PostDominance.cs:5:10:5:11 | Entry | +| PostDominance.cs:6:5:8:5 | After {...} | PostDominance.cs:7:9:7:29 | After ...; | +| PostDominance.cs:6:5:8:5 | {...} | PostDominance.cs:5:20:5:20 | s | +| PostDominance.cs:7:9:7:28 | After call to method WriteLine | PostDominance.cs:7:9:7:28 | call to method WriteLine | +| PostDominance.cs:7:9:7:28 | Before call to method WriteLine | PostDominance.cs:7:9:7:29 | ...; | | PostDominance.cs:7:9:7:28 | call to method WriteLine | PostDominance.cs:7:27:7:27 | access to parameter s | | PostDominance.cs:7:9:7:29 | ...; | PostDominance.cs:6:5:8:5 | {...} | -| PostDominance.cs:7:27:7:27 | access to parameter s | PostDominance.cs:7:9:7:29 | ...; | -| PostDominance.cs:10:10:10:11 | exit M2 | PostDominance.cs:10:10:10:11 | exit M2 (normal) | -| PostDominance.cs:10:10:10:11 | exit M2 (normal) | PostDominance.cs:13:13:13:19 | return ...; | -| PostDominance.cs:10:10:10:11 | exit M2 (normal) | PostDominance.cs:14:9:14:28 | call to method WriteLine | -| PostDominance.cs:11:5:15:5 | {...} | PostDominance.cs:10:10:10:11 | enter M2 | +| PostDominance.cs:7:9:7:29 | After ...; | PostDominance.cs:7:9:7:28 | After call to method WriteLine | +| PostDominance.cs:7:27:7:27 | access to parameter s | PostDominance.cs:7:9:7:28 | Before call to method WriteLine | +| PostDominance.cs:10:10:10:11 | Exit | PostDominance.cs:10:10:10:11 | Normal Exit | +| PostDominance.cs:10:10:10:11 | Normal Exit | PostDominance.cs:11:5:15:5 | After {...} | +| PostDominance.cs:10:10:10:11 | Normal Exit | PostDominance.cs:13:13:13:19 | return ...; | +| PostDominance.cs:10:20:10:20 | s | PostDominance.cs:10:10:10:11 | Entry | +| PostDominance.cs:11:5:15:5 | After {...} | PostDominance.cs:14:9:14:29 | After ...; | +| PostDominance.cs:11:5:15:5 | {...} | PostDominance.cs:10:20:10:20 | s | +| PostDominance.cs:12:9:13:19 | After if (...) ... | PostDominance.cs:12:13:12:21 | After ... is ... [false] | | PostDominance.cs:12:9:13:19 | if (...) ... | PostDominance.cs:11:5:15:5 | {...} | -| PostDominance.cs:12:13:12:13 | access to parameter s | PostDominance.cs:12:9:13:19 | if (...) ... | -| PostDominance.cs:12:18:12:21 | null | PostDominance.cs:12:13:12:13 | access to parameter s | -| PostDominance.cs:13:13:13:19 | return ...; | PostDominance.cs:12:13:12:21 | [true] ... is ... | +| PostDominance.cs:12:13:12:13 | access to parameter s | PostDominance.cs:12:13:12:21 | Before ... is ... | +| PostDominance.cs:12:13:12:21 | ... is ... | PostDominance.cs:12:13:12:13 | access to parameter s | +| PostDominance.cs:12:13:12:21 | After ... is ... [true] | PostDominance.cs:12:18:12:21 | null | +| PostDominance.cs:12:13:12:21 | Before ... is ... | PostDominance.cs:12:9:13:19 | if (...) ... | +| PostDominance.cs:12:18:12:21 | null | PostDominance.cs:12:13:12:21 | [MatchTrue] ... is ... | +| PostDominance.cs:13:13:13:19 | Before return ...; | PostDominance.cs:12:13:12:21 | After ... is ... [true] | +| PostDominance.cs:13:13:13:19 | return ...; | PostDominance.cs:13:13:13:19 | Before return ...; | +| PostDominance.cs:14:9:14:28 | After call to method WriteLine | PostDominance.cs:14:9:14:28 | call to method WriteLine | +| PostDominance.cs:14:9:14:28 | Before call to method WriteLine | PostDominance.cs:14:9:14:29 | ...; | | PostDominance.cs:14:9:14:28 | call to method WriteLine | PostDominance.cs:14:27:14:27 | access to parameter s | -| PostDominance.cs:14:9:14:29 | ...; | PostDominance.cs:12:13:12:21 | [false] ... is ... | -| PostDominance.cs:14:27:14:27 | access to parameter s | PostDominance.cs:14:9:14:29 | ...; | -| PostDominance.cs:17:10:17:11 | exit M3 (abnormal) | PostDominance.cs:20:13:20:55 | throw ...; | -| PostDominance.cs:17:10:17:11 | exit M3 (normal) | PostDominance.cs:21:9:21:28 | call to method WriteLine | -| PostDominance.cs:18:5:22:5 | {...} | PostDominance.cs:17:10:17:11 | enter M3 | +| PostDominance.cs:14:9:14:29 | ...; | PostDominance.cs:12:9:13:19 | After if (...) ... | +| PostDominance.cs:14:9:14:29 | After ...; | PostDominance.cs:14:9:14:28 | After call to method WriteLine | +| PostDominance.cs:14:27:14:27 | access to parameter s | PostDominance.cs:14:9:14:28 | Before call to method WriteLine | +| PostDominance.cs:17:10:17:11 | Exceptional Exit | PostDominance.cs:20:13:20:55 | throw ...; | +| PostDominance.cs:17:10:17:11 | Normal Exit | PostDominance.cs:18:5:22:5 | After {...} | +| PostDominance.cs:17:20:17:20 | s | PostDominance.cs:17:10:17:11 | Entry | +| PostDominance.cs:18:5:22:5 | After {...} | PostDominance.cs:21:9:21:29 | After ...; | +| PostDominance.cs:18:5:22:5 | {...} | PostDominance.cs:17:20:17:20 | s | +| PostDominance.cs:19:9:20:55 | After if (...) ... | PostDominance.cs:19:13:19:21 | After ... is ... [false] | | PostDominance.cs:19:9:20:55 | if (...) ... | PostDominance.cs:18:5:22:5 | {...} | -| PostDominance.cs:19:13:19:13 | access to parameter s | PostDominance.cs:19:9:20:55 | if (...) ... | -| PostDominance.cs:19:13:19:21 | [false] ... is ... | PostDominance.cs:19:18:19:21 | null | -| PostDominance.cs:19:18:19:21 | null | PostDominance.cs:19:13:19:13 | access to parameter s | -| PostDominance.cs:20:13:20:55 | throw ...; | PostDominance.cs:20:19:20:54 | object creation of type ArgumentNullException | +| PostDominance.cs:19:13:19:13 | access to parameter s | PostDominance.cs:19:13:19:21 | Before ... is ... | +| PostDominance.cs:19:13:19:21 | ... is ... | PostDominance.cs:19:13:19:13 | access to parameter s | +| PostDominance.cs:19:13:19:21 | After ... is ... [false] | PostDominance.cs:19:13:19:21 | ... is ... | +| PostDominance.cs:19:13:19:21 | After ... is ... [true] | PostDominance.cs:19:18:19:21 | null | +| PostDominance.cs:19:13:19:21 | Before ... is ... | PostDominance.cs:19:9:20:55 | if (...) ... | +| PostDominance.cs:19:18:19:21 | null | PostDominance.cs:19:13:19:21 | [MatchTrue] ... is ... | +| PostDominance.cs:20:13:20:55 | Before throw ...; | PostDominance.cs:19:13:19:21 | After ... is ... [true] | +| PostDominance.cs:20:13:20:55 | throw ...; | PostDominance.cs:20:19:20:54 | After object creation of type ArgumentNullException | +| PostDominance.cs:20:19:20:54 | After object creation of type ArgumentNullException | PostDominance.cs:20:19:20:54 | object creation of type ArgumentNullException | +| PostDominance.cs:20:19:20:54 | Before object creation of type ArgumentNullException | PostDominance.cs:20:13:20:55 | Before throw ...; | | PostDominance.cs:20:19:20:54 | object creation of type ArgumentNullException | PostDominance.cs:20:45:20:53 | nameof(...) | +| PostDominance.cs:20:45:20:53 | nameof(...) | PostDominance.cs:20:19:20:54 | Before object creation of type ArgumentNullException | +| PostDominance.cs:21:9:21:28 | After call to method WriteLine | PostDominance.cs:21:9:21:28 | call to method WriteLine | +| PostDominance.cs:21:9:21:28 | Before call to method WriteLine | PostDominance.cs:21:9:21:29 | ...; | | PostDominance.cs:21:9:21:28 | call to method WriteLine | PostDominance.cs:21:27:21:27 | access to parameter s | -| PostDominance.cs:21:9:21:29 | ...; | PostDominance.cs:19:13:19:21 | [false] ... is ... | -| PostDominance.cs:21:27:21:27 | access to parameter s | PostDominance.cs:21:9:21:29 | ...; | -| Qualifiers.cs:1:7:1:16 | call to constructor Object | Qualifiers.cs:1:7:1:16 | call to method | +| PostDominance.cs:21:9:21:29 | ...; | PostDominance.cs:19:9:20:55 | After if (...) ... | +| PostDominance.cs:21:9:21:29 | After ...; | PostDominance.cs:21:9:21:28 | After call to method WriteLine | +| PostDominance.cs:21:27:21:27 | access to parameter s | PostDominance.cs:21:9:21:28 | Before call to method WriteLine | +| Qualifiers.cs:1:7:1:16 | After call to constructor Object | Qualifiers.cs:1:7:1:16 | call to constructor Object | +| Qualifiers.cs:1:7:1:16 | After call to method | Qualifiers.cs:1:7:1:16 | call to method | +| Qualifiers.cs:1:7:1:16 | Before call to constructor Object | Qualifiers.cs:1:7:1:16 | After call to method | +| Qualifiers.cs:1:7:1:16 | Before call to method | Qualifiers.cs:1:7:1:16 | Entry | +| Qualifiers.cs:1:7:1:16 | Exit | Qualifiers.cs:1:7:1:16 | Normal Exit | +| Qualifiers.cs:1:7:1:16 | Normal Exit | Qualifiers.cs:1:7:1:16 | {...} | +| Qualifiers.cs:1:7:1:16 | call to constructor Object | Qualifiers.cs:1:7:1:16 | Before call to constructor Object | | Qualifiers.cs:1:7:1:16 | call to method | Qualifiers.cs:1:7:1:16 | this access | -| Qualifiers.cs:1:7:1:16 | exit Qualifiers | Qualifiers.cs:1:7:1:16 | exit Qualifiers (normal) | -| Qualifiers.cs:1:7:1:16 | exit Qualifiers (normal) | Qualifiers.cs:1:7:1:16 | {...} | -| Qualifiers.cs:1:7:1:16 | this access | Qualifiers.cs:1:7:1:16 | enter Qualifiers | -| Qualifiers.cs:1:7:1:16 | {...} | Qualifiers.cs:1:7:1:16 | call to constructor Object | -| Qualifiers.cs:7:16:7:21 | exit Method | Qualifiers.cs:7:16:7:21 | exit Method (normal) | -| Qualifiers.cs:7:16:7:21 | exit Method (normal) | Qualifiers.cs:7:28:7:31 | null | -| Qualifiers.cs:7:28:7:31 | null | Qualifiers.cs:7:16:7:21 | enter Method | -| Qualifiers.cs:8:23:8:34 | exit StaticMethod | Qualifiers.cs:8:23:8:34 | exit StaticMethod (normal) | -| Qualifiers.cs:8:23:8:34 | exit StaticMethod (normal) | Qualifiers.cs:8:41:8:44 | null | -| Qualifiers.cs:8:41:8:44 | null | Qualifiers.cs:8:23:8:34 | enter StaticMethod | -| Qualifiers.cs:10:10:10:10 | exit M | Qualifiers.cs:10:10:10:10 | exit M (normal) | -| Qualifiers.cs:10:10:10:10 | exit M (normal) | Qualifiers.cs:30:9:30:46 | ... = ... | -| Qualifiers.cs:11:5:31:5 | {...} | Qualifiers.cs:10:10:10:10 | enter M | +| Qualifiers.cs:1:7:1:16 | this access | Qualifiers.cs:1:7:1:16 | Before call to method | +| Qualifiers.cs:1:7:1:16 | {...} | Qualifiers.cs:1:7:1:16 | After call to constructor Object | +| Qualifiers.cs:7:16:7:21 | Exit | Qualifiers.cs:7:16:7:21 | Normal Exit | +| Qualifiers.cs:7:16:7:21 | Normal Exit | Qualifiers.cs:7:28:7:31 | null | +| Qualifiers.cs:7:28:7:31 | null | Qualifiers.cs:7:16:7:21 | Entry | +| Qualifiers.cs:8:23:8:34 | Exit | Qualifiers.cs:8:23:8:34 | Normal Exit | +| Qualifiers.cs:8:23:8:34 | Normal Exit | Qualifiers.cs:8:41:8:44 | null | +| Qualifiers.cs:8:41:8:44 | null | Qualifiers.cs:8:23:8:34 | Entry | +| Qualifiers.cs:10:10:10:10 | Exit | Qualifiers.cs:10:10:10:10 | Normal Exit | +| Qualifiers.cs:10:10:10:10 | Normal Exit | Qualifiers.cs:11:5:31:5 | After {...} | +| Qualifiers.cs:11:5:31:5 | After {...} | Qualifiers.cs:30:9:30:47 | After ...; | +| Qualifiers.cs:11:5:31:5 | {...} | Qualifiers.cs:10:10:10:10 | Entry | | Qualifiers.cs:12:9:12:22 | ... ...; | Qualifiers.cs:11:5:31:5 | {...} | -| Qualifiers.cs:12:13:12:21 | Qualifiers q = ... | Qualifiers.cs:12:17:12:21 | access to field Field | +| Qualifiers.cs:12:9:12:22 | After ... ...; | Qualifiers.cs:12:13:12:21 | After Qualifiers q = ... | +| Qualifiers.cs:12:13:12:13 | access to local variable q | Qualifiers.cs:12:13:12:21 | Before Qualifiers q = ... | +| Qualifiers.cs:12:13:12:21 | After Qualifiers q = ... | Qualifiers.cs:12:13:12:21 | Qualifiers q = ... | +| Qualifiers.cs:12:13:12:21 | Before Qualifiers q = ... | Qualifiers.cs:12:9:12:22 | ... ...; | +| Qualifiers.cs:12:13:12:21 | Qualifiers q = ... | Qualifiers.cs:12:17:12:21 | After access to field Field | +| Qualifiers.cs:12:17:12:21 | After access to field Field | Qualifiers.cs:12:17:12:21 | access to field Field | +| Qualifiers.cs:12:17:12:21 | Before access to field Field | Qualifiers.cs:12:13:12:13 | access to local variable q | | Qualifiers.cs:12:17:12:21 | access to field Field | Qualifiers.cs:12:17:12:21 | this access | -| Qualifiers.cs:12:17:12:21 | this access | Qualifiers.cs:12:9:12:22 | ... ...; | -| Qualifiers.cs:13:9:13:20 | ... = ... | Qualifiers.cs:13:13:13:20 | access to property Property | -| Qualifiers.cs:13:9:13:21 | ...; | Qualifiers.cs:12:13:12:21 | Qualifiers q = ... | +| Qualifiers.cs:12:17:12:21 | this access | Qualifiers.cs:12:17:12:21 | Before access to field Field | +| Qualifiers.cs:13:9:13:9 | access to local variable q | Qualifiers.cs:13:9:13:20 | Before ... = ... | +| Qualifiers.cs:13:9:13:20 | ... = ... | Qualifiers.cs:13:13:13:20 | After access to property Property | +| Qualifiers.cs:13:9:13:20 | After ... = ... | Qualifiers.cs:13:9:13:20 | ... = ... | +| Qualifiers.cs:13:9:13:20 | Before ... = ... | Qualifiers.cs:13:9:13:21 | ...; | +| Qualifiers.cs:13:9:13:21 | ...; | Qualifiers.cs:12:9:12:22 | After ... ...; | +| Qualifiers.cs:13:9:13:21 | After ...; | Qualifiers.cs:13:9:13:20 | After ... = ... | +| Qualifiers.cs:13:13:13:20 | After access to property Property | Qualifiers.cs:13:13:13:20 | access to property Property | +| Qualifiers.cs:13:13:13:20 | Before access to property Property | Qualifiers.cs:13:9:13:9 | access to local variable q | | Qualifiers.cs:13:13:13:20 | access to property Property | Qualifiers.cs:13:13:13:20 | this access | -| Qualifiers.cs:13:13:13:20 | this access | Qualifiers.cs:13:9:13:21 | ...; | -| Qualifiers.cs:14:9:14:20 | ... = ... | Qualifiers.cs:14:13:14:20 | call to method Method | -| Qualifiers.cs:14:9:14:21 | ...; | Qualifiers.cs:13:9:13:20 | ... = ... | +| Qualifiers.cs:13:13:13:20 | this access | Qualifiers.cs:13:13:13:20 | Before access to property Property | +| Qualifiers.cs:14:9:14:9 | access to local variable q | Qualifiers.cs:14:9:14:20 | Before ... = ... | +| Qualifiers.cs:14:9:14:20 | ... = ... | Qualifiers.cs:14:13:14:20 | After call to method Method | +| Qualifiers.cs:14:9:14:20 | After ... = ... | Qualifiers.cs:14:9:14:20 | ... = ... | +| Qualifiers.cs:14:9:14:20 | Before ... = ... | Qualifiers.cs:14:9:14:21 | ...; | +| Qualifiers.cs:14:9:14:21 | ...; | Qualifiers.cs:13:9:13:21 | After ...; | +| Qualifiers.cs:14:9:14:21 | After ...; | Qualifiers.cs:14:9:14:20 | After ... = ... | +| Qualifiers.cs:14:13:14:20 | After call to method Method | Qualifiers.cs:14:13:14:20 | call to method Method | +| Qualifiers.cs:14:13:14:20 | Before call to method Method | Qualifiers.cs:14:9:14:9 | access to local variable q | | Qualifiers.cs:14:13:14:20 | call to method Method | Qualifiers.cs:14:13:14:20 | this access | -| Qualifiers.cs:14:13:14:20 | this access | Qualifiers.cs:14:9:14:21 | ...; | -| Qualifiers.cs:16:9:16:22 | ... = ... | Qualifiers.cs:16:13:16:22 | access to field Field | -| Qualifiers.cs:16:9:16:23 | ...; | Qualifiers.cs:14:9:14:20 | ... = ... | -| Qualifiers.cs:16:13:16:16 | this access | Qualifiers.cs:16:9:16:23 | ...; | +| Qualifiers.cs:14:13:14:20 | this access | Qualifiers.cs:14:13:14:20 | Before call to method Method | +| Qualifiers.cs:16:9:16:9 | access to local variable q | Qualifiers.cs:16:9:16:22 | Before ... = ... | +| Qualifiers.cs:16:9:16:22 | ... = ... | Qualifiers.cs:16:13:16:22 | After access to field Field | +| Qualifiers.cs:16:9:16:22 | After ... = ... | Qualifiers.cs:16:9:16:22 | ... = ... | +| Qualifiers.cs:16:9:16:22 | Before ... = ... | Qualifiers.cs:16:9:16:23 | ...; | +| Qualifiers.cs:16:9:16:23 | ...; | Qualifiers.cs:14:9:14:21 | After ...; | +| Qualifiers.cs:16:9:16:23 | After ...; | Qualifiers.cs:16:9:16:22 | After ... = ... | +| Qualifiers.cs:16:13:16:16 | this access | Qualifiers.cs:16:13:16:22 | Before access to field Field | +| Qualifiers.cs:16:13:16:22 | After access to field Field | Qualifiers.cs:16:13:16:22 | access to field Field | +| Qualifiers.cs:16:13:16:22 | Before access to field Field | Qualifiers.cs:16:9:16:9 | access to local variable q | | Qualifiers.cs:16:13:16:22 | access to field Field | Qualifiers.cs:16:13:16:16 | this access | -| Qualifiers.cs:17:9:17:25 | ... = ... | Qualifiers.cs:17:13:17:25 | access to property Property | -| Qualifiers.cs:17:9:17:26 | ...; | Qualifiers.cs:16:9:16:22 | ... = ... | -| Qualifiers.cs:17:13:17:16 | this access | Qualifiers.cs:17:9:17:26 | ...; | +| Qualifiers.cs:17:9:17:9 | access to local variable q | Qualifiers.cs:17:9:17:25 | Before ... = ... | +| Qualifiers.cs:17:9:17:25 | ... = ... | Qualifiers.cs:17:13:17:25 | After access to property Property | +| Qualifiers.cs:17:9:17:25 | After ... = ... | Qualifiers.cs:17:9:17:25 | ... = ... | +| Qualifiers.cs:17:9:17:25 | Before ... = ... | Qualifiers.cs:17:9:17:26 | ...; | +| Qualifiers.cs:17:9:17:26 | ...; | Qualifiers.cs:16:9:16:23 | After ...; | +| Qualifiers.cs:17:9:17:26 | After ...; | Qualifiers.cs:17:9:17:25 | After ... = ... | +| Qualifiers.cs:17:13:17:16 | this access | Qualifiers.cs:17:13:17:25 | Before access to property Property | +| Qualifiers.cs:17:13:17:25 | After access to property Property | Qualifiers.cs:17:13:17:25 | access to property Property | +| Qualifiers.cs:17:13:17:25 | Before access to property Property | Qualifiers.cs:17:9:17:9 | access to local variable q | | Qualifiers.cs:17:13:17:25 | access to property Property | Qualifiers.cs:17:13:17:16 | this access | -| Qualifiers.cs:18:9:18:25 | ... = ... | Qualifiers.cs:18:13:18:25 | call to method Method | -| Qualifiers.cs:18:9:18:26 | ...; | Qualifiers.cs:17:9:17:25 | ... = ... | -| Qualifiers.cs:18:13:18:16 | this access | Qualifiers.cs:18:9:18:26 | ...; | +| Qualifiers.cs:18:9:18:9 | access to local variable q | Qualifiers.cs:18:9:18:25 | Before ... = ... | +| Qualifiers.cs:18:9:18:25 | ... = ... | Qualifiers.cs:18:13:18:25 | After call to method Method | +| Qualifiers.cs:18:9:18:25 | After ... = ... | Qualifiers.cs:18:9:18:25 | ... = ... | +| Qualifiers.cs:18:9:18:25 | Before ... = ... | Qualifiers.cs:18:9:18:26 | ...; | +| Qualifiers.cs:18:9:18:26 | ...; | Qualifiers.cs:17:9:17:26 | After ...; | +| Qualifiers.cs:18:9:18:26 | After ...; | Qualifiers.cs:18:9:18:25 | After ... = ... | +| Qualifiers.cs:18:13:18:16 | this access | Qualifiers.cs:18:13:18:25 | Before call to method Method | +| Qualifiers.cs:18:13:18:25 | After call to method Method | Qualifiers.cs:18:13:18:25 | call to method Method | +| Qualifiers.cs:18:13:18:25 | Before call to method Method | Qualifiers.cs:18:9:18:9 | access to local variable q | | Qualifiers.cs:18:13:18:25 | call to method Method | Qualifiers.cs:18:13:18:16 | this access | +| Qualifiers.cs:20:9:20:9 | access to local variable q | Qualifiers.cs:20:9:20:23 | Before ... = ... | | Qualifiers.cs:20:9:20:23 | ... = ... | Qualifiers.cs:20:13:20:23 | access to field StaticField | -| Qualifiers.cs:20:9:20:24 | ...; | Qualifiers.cs:18:9:18:25 | ... = ... | -| Qualifiers.cs:20:13:20:23 | access to field StaticField | Qualifiers.cs:20:9:20:24 | ...; | -| Qualifiers.cs:21:9:21:26 | ... = ... | Qualifiers.cs:21:13:21:26 | access to property StaticProperty | -| Qualifiers.cs:21:9:21:27 | ...; | Qualifiers.cs:20:9:20:23 | ... = ... | -| Qualifiers.cs:21:13:21:26 | access to property StaticProperty | Qualifiers.cs:21:9:21:27 | ...; | -| Qualifiers.cs:22:9:22:26 | ... = ... | Qualifiers.cs:22:13:22:26 | call to method StaticMethod | -| Qualifiers.cs:22:9:22:27 | ...; | Qualifiers.cs:21:9:21:26 | ... = ... | -| Qualifiers.cs:22:13:22:26 | call to method StaticMethod | Qualifiers.cs:22:9:22:27 | ...; | +| Qualifiers.cs:20:9:20:23 | After ... = ... | Qualifiers.cs:20:9:20:23 | ... = ... | +| Qualifiers.cs:20:9:20:23 | Before ... = ... | Qualifiers.cs:20:9:20:24 | ...; | +| Qualifiers.cs:20:9:20:24 | ...; | Qualifiers.cs:18:9:18:26 | After ...; | +| Qualifiers.cs:20:9:20:24 | After ...; | Qualifiers.cs:20:9:20:23 | After ... = ... | +| Qualifiers.cs:20:13:20:23 | access to field StaticField | Qualifiers.cs:20:9:20:9 | access to local variable q | +| Qualifiers.cs:21:9:21:9 | access to local variable q | Qualifiers.cs:21:9:21:26 | Before ... = ... | +| Qualifiers.cs:21:9:21:26 | ... = ... | Qualifiers.cs:21:13:21:26 | After access to property StaticProperty | +| Qualifiers.cs:21:9:21:26 | After ... = ... | Qualifiers.cs:21:9:21:26 | ... = ... | +| Qualifiers.cs:21:9:21:26 | Before ... = ... | Qualifiers.cs:21:9:21:27 | ...; | +| Qualifiers.cs:21:9:21:27 | ...; | Qualifiers.cs:20:9:20:24 | After ...; | +| Qualifiers.cs:21:9:21:27 | After ...; | Qualifiers.cs:21:9:21:26 | After ... = ... | +| Qualifiers.cs:21:13:21:26 | After access to property StaticProperty | Qualifiers.cs:21:13:21:26 | access to property StaticProperty | +| Qualifiers.cs:21:13:21:26 | Before access to property StaticProperty | Qualifiers.cs:21:9:21:9 | access to local variable q | +| Qualifiers.cs:21:13:21:26 | access to property StaticProperty | Qualifiers.cs:21:13:21:26 | Before access to property StaticProperty | +| Qualifiers.cs:22:9:22:9 | access to local variable q | Qualifiers.cs:22:9:22:26 | Before ... = ... | +| Qualifiers.cs:22:9:22:26 | ... = ... | Qualifiers.cs:22:13:22:26 | After call to method StaticMethod | +| Qualifiers.cs:22:9:22:26 | After ... = ... | Qualifiers.cs:22:9:22:26 | ... = ... | +| Qualifiers.cs:22:9:22:26 | Before ... = ... | Qualifiers.cs:22:9:22:27 | ...; | +| Qualifiers.cs:22:9:22:27 | ...; | Qualifiers.cs:21:9:21:27 | After ...; | +| Qualifiers.cs:22:9:22:27 | After ...; | Qualifiers.cs:22:9:22:26 | After ... = ... | +| Qualifiers.cs:22:13:22:26 | After call to method StaticMethod | Qualifiers.cs:22:13:22:26 | call to method StaticMethod | +| Qualifiers.cs:22:13:22:26 | Before call to method StaticMethod | Qualifiers.cs:22:9:22:9 | access to local variable q | +| Qualifiers.cs:22:13:22:26 | call to method StaticMethod | Qualifiers.cs:22:13:22:26 | Before call to method StaticMethod | +| Qualifiers.cs:24:9:24:9 | access to local variable q | Qualifiers.cs:24:9:24:34 | Before ... = ... | | Qualifiers.cs:24:9:24:34 | ... = ... | Qualifiers.cs:24:13:24:34 | access to field StaticField | -| Qualifiers.cs:24:9:24:35 | ...; | Qualifiers.cs:22:9:22:26 | ... = ... | -| Qualifiers.cs:24:13:24:34 | access to field StaticField | Qualifiers.cs:24:9:24:35 | ...; | -| Qualifiers.cs:25:9:25:37 | ... = ... | Qualifiers.cs:25:13:25:37 | access to property StaticProperty | -| Qualifiers.cs:25:9:25:38 | ...; | Qualifiers.cs:24:9:24:34 | ... = ... | -| Qualifiers.cs:25:13:25:37 | access to property StaticProperty | Qualifiers.cs:25:9:25:38 | ...; | -| Qualifiers.cs:26:9:26:37 | ... = ... | Qualifiers.cs:26:13:26:37 | call to method StaticMethod | -| Qualifiers.cs:26:9:26:38 | ...; | Qualifiers.cs:25:9:25:37 | ... = ... | -| Qualifiers.cs:26:13:26:37 | call to method StaticMethod | Qualifiers.cs:26:9:26:38 | ...; | -| Qualifiers.cs:28:9:28:40 | ... = ... | Qualifiers.cs:28:13:28:40 | access to field Field | -| Qualifiers.cs:28:9:28:41 | ...; | Qualifiers.cs:26:9:26:37 | ... = ... | -| Qualifiers.cs:28:13:28:34 | access to field StaticField | Qualifiers.cs:28:9:28:41 | ...; | +| Qualifiers.cs:24:9:24:34 | After ... = ... | Qualifiers.cs:24:9:24:34 | ... = ... | +| Qualifiers.cs:24:9:24:34 | Before ... = ... | Qualifiers.cs:24:9:24:35 | ...; | +| Qualifiers.cs:24:9:24:35 | ...; | Qualifiers.cs:22:9:22:27 | After ...; | +| Qualifiers.cs:24:9:24:35 | After ...; | Qualifiers.cs:24:9:24:34 | After ... = ... | +| Qualifiers.cs:24:13:24:34 | access to field StaticField | Qualifiers.cs:24:9:24:9 | access to local variable q | +| Qualifiers.cs:25:9:25:9 | access to local variable q | Qualifiers.cs:25:9:25:37 | Before ... = ... | +| Qualifiers.cs:25:9:25:37 | ... = ... | Qualifiers.cs:25:13:25:37 | After access to property StaticProperty | +| Qualifiers.cs:25:9:25:37 | After ... = ... | Qualifiers.cs:25:9:25:37 | ... = ... | +| Qualifiers.cs:25:9:25:37 | Before ... = ... | Qualifiers.cs:25:9:25:38 | ...; | +| Qualifiers.cs:25:9:25:38 | ...; | Qualifiers.cs:24:9:24:35 | After ...; | +| Qualifiers.cs:25:9:25:38 | After ...; | Qualifiers.cs:25:9:25:37 | After ... = ... | +| Qualifiers.cs:25:13:25:37 | After access to property StaticProperty | Qualifiers.cs:25:13:25:37 | access to property StaticProperty | +| Qualifiers.cs:25:13:25:37 | Before access to property StaticProperty | Qualifiers.cs:25:9:25:9 | access to local variable q | +| Qualifiers.cs:25:13:25:37 | access to property StaticProperty | Qualifiers.cs:25:13:25:37 | Before access to property StaticProperty | +| Qualifiers.cs:26:9:26:9 | access to local variable q | Qualifiers.cs:26:9:26:37 | Before ... = ... | +| Qualifiers.cs:26:9:26:37 | ... = ... | Qualifiers.cs:26:13:26:37 | After call to method StaticMethod | +| Qualifiers.cs:26:9:26:37 | After ... = ... | Qualifiers.cs:26:9:26:37 | ... = ... | +| Qualifiers.cs:26:9:26:37 | Before ... = ... | Qualifiers.cs:26:9:26:38 | ...; | +| Qualifiers.cs:26:9:26:38 | ...; | Qualifiers.cs:25:9:25:38 | After ...; | +| Qualifiers.cs:26:9:26:38 | After ...; | Qualifiers.cs:26:9:26:37 | After ... = ... | +| Qualifiers.cs:26:13:26:37 | After call to method StaticMethod | Qualifiers.cs:26:13:26:37 | call to method StaticMethod | +| Qualifiers.cs:26:13:26:37 | Before call to method StaticMethod | Qualifiers.cs:26:9:26:9 | access to local variable q | +| Qualifiers.cs:26:13:26:37 | call to method StaticMethod | Qualifiers.cs:26:13:26:37 | Before call to method StaticMethod | +| Qualifiers.cs:28:9:28:9 | access to local variable q | Qualifiers.cs:28:9:28:40 | Before ... = ... | +| Qualifiers.cs:28:9:28:40 | ... = ... | Qualifiers.cs:28:13:28:40 | After access to field Field | +| Qualifiers.cs:28:9:28:40 | After ... = ... | Qualifiers.cs:28:9:28:40 | ... = ... | +| Qualifiers.cs:28:9:28:40 | Before ... = ... | Qualifiers.cs:28:9:28:41 | ...; | +| Qualifiers.cs:28:9:28:41 | ...; | Qualifiers.cs:26:9:26:38 | After ...; | +| Qualifiers.cs:28:9:28:41 | After ...; | Qualifiers.cs:28:9:28:40 | After ... = ... | +| Qualifiers.cs:28:13:28:34 | access to field StaticField | Qualifiers.cs:28:13:28:40 | Before access to field Field | +| Qualifiers.cs:28:13:28:40 | After access to field Field | Qualifiers.cs:28:13:28:40 | access to field Field | +| Qualifiers.cs:28:13:28:40 | Before access to field Field | Qualifiers.cs:28:9:28:9 | access to local variable q | | Qualifiers.cs:28:13:28:40 | access to field Field | Qualifiers.cs:28:13:28:34 | access to field StaticField | -| Qualifiers.cs:29:9:29:46 | ... = ... | Qualifiers.cs:29:13:29:46 | access to property Property | -| Qualifiers.cs:29:9:29:47 | ...; | Qualifiers.cs:28:9:28:40 | ... = ... | -| Qualifiers.cs:29:13:29:37 | access to property StaticProperty | Qualifiers.cs:29:9:29:47 | ...; | -| Qualifiers.cs:29:13:29:46 | access to property Property | Qualifiers.cs:29:13:29:37 | access to property StaticProperty | -| Qualifiers.cs:30:9:30:46 | ... = ... | Qualifiers.cs:30:13:30:46 | call to method Method | -| Qualifiers.cs:30:9:30:47 | ...; | Qualifiers.cs:29:9:29:46 | ... = ... | -| Qualifiers.cs:30:13:30:37 | call to method StaticMethod | Qualifiers.cs:30:9:30:47 | ...; | -| Qualifiers.cs:30:13:30:46 | call to method Method | Qualifiers.cs:30:13:30:37 | call to method StaticMethod | -| Switch.cs:3:7:3:12 | call to constructor Object | Switch.cs:3:7:3:12 | call to method | +| Qualifiers.cs:29:9:29:9 | access to local variable q | Qualifiers.cs:29:9:29:46 | Before ... = ... | +| Qualifiers.cs:29:9:29:46 | ... = ... | Qualifiers.cs:29:13:29:46 | After access to property Property | +| Qualifiers.cs:29:9:29:46 | After ... = ... | Qualifiers.cs:29:9:29:46 | ... = ... | +| Qualifiers.cs:29:9:29:46 | Before ... = ... | Qualifiers.cs:29:9:29:47 | ...; | +| Qualifiers.cs:29:9:29:47 | ...; | Qualifiers.cs:28:9:28:41 | After ...; | +| Qualifiers.cs:29:9:29:47 | After ...; | Qualifiers.cs:29:9:29:46 | After ... = ... | +| Qualifiers.cs:29:13:29:37 | After access to property StaticProperty | Qualifiers.cs:29:13:29:37 | access to property StaticProperty | +| Qualifiers.cs:29:13:29:37 | Before access to property StaticProperty | Qualifiers.cs:29:13:29:46 | Before access to property Property | +| Qualifiers.cs:29:13:29:37 | access to property StaticProperty | Qualifiers.cs:29:13:29:37 | Before access to property StaticProperty | +| Qualifiers.cs:29:13:29:46 | After access to property Property | Qualifiers.cs:29:13:29:46 | access to property Property | +| Qualifiers.cs:29:13:29:46 | Before access to property Property | Qualifiers.cs:29:9:29:9 | access to local variable q | +| Qualifiers.cs:29:13:29:46 | access to property Property | Qualifiers.cs:29:13:29:37 | After access to property StaticProperty | +| Qualifiers.cs:30:9:30:9 | access to local variable q | Qualifiers.cs:30:9:30:46 | Before ... = ... | +| Qualifiers.cs:30:9:30:46 | ... = ... | Qualifiers.cs:30:13:30:46 | After call to method Method | +| Qualifiers.cs:30:9:30:46 | After ... = ... | Qualifiers.cs:30:9:30:46 | ... = ... | +| Qualifiers.cs:30:9:30:46 | Before ... = ... | Qualifiers.cs:30:9:30:47 | ...; | +| Qualifiers.cs:30:9:30:47 | ...; | Qualifiers.cs:29:9:29:47 | After ...; | +| Qualifiers.cs:30:9:30:47 | After ...; | Qualifiers.cs:30:9:30:46 | After ... = ... | +| Qualifiers.cs:30:13:30:37 | After call to method StaticMethod | Qualifiers.cs:30:13:30:37 | call to method StaticMethod | +| Qualifiers.cs:30:13:30:37 | Before call to method StaticMethod | Qualifiers.cs:30:13:30:46 | Before call to method Method | +| Qualifiers.cs:30:13:30:37 | call to method StaticMethod | Qualifiers.cs:30:13:30:37 | Before call to method StaticMethod | +| Qualifiers.cs:30:13:30:46 | After call to method Method | Qualifiers.cs:30:13:30:46 | call to method Method | +| Qualifiers.cs:30:13:30:46 | Before call to method Method | Qualifiers.cs:30:9:30:9 | access to local variable q | +| Qualifiers.cs:30:13:30:46 | call to method Method | Qualifiers.cs:30:13:30:37 | After call to method StaticMethod | +| Switch.cs:3:7:3:12 | After call to constructor Object | Switch.cs:3:7:3:12 | call to constructor Object | +| Switch.cs:3:7:3:12 | After call to method | Switch.cs:3:7:3:12 | call to method | +| Switch.cs:3:7:3:12 | Before call to constructor Object | Switch.cs:3:7:3:12 | After call to method | +| Switch.cs:3:7:3:12 | Before call to method | Switch.cs:3:7:3:12 | Entry | +| Switch.cs:3:7:3:12 | Exit | Switch.cs:3:7:3:12 | Normal Exit | +| Switch.cs:3:7:3:12 | Normal Exit | Switch.cs:3:7:3:12 | {...} | +| Switch.cs:3:7:3:12 | call to constructor Object | Switch.cs:3:7:3:12 | Before call to constructor Object | | Switch.cs:3:7:3:12 | call to method | Switch.cs:3:7:3:12 | this access | -| Switch.cs:3:7:3:12 | exit Switch | Switch.cs:3:7:3:12 | exit Switch (normal) | -| Switch.cs:3:7:3:12 | exit Switch (normal) | Switch.cs:3:7:3:12 | {...} | -| Switch.cs:3:7:3:12 | this access | Switch.cs:3:7:3:12 | enter Switch | -| Switch.cs:3:7:3:12 | {...} | Switch.cs:3:7:3:12 | call to constructor Object | -| Switch.cs:5:10:5:11 | exit M1 | Switch.cs:5:10:5:11 | exit M1 (normal) | -| Switch.cs:5:10:5:11 | exit M1 (normal) | Switch.cs:7:17:7:17 | access to parameter o | -| Switch.cs:6:5:8:5 | {...} | Switch.cs:5:10:5:11 | enter M1 | +| Switch.cs:3:7:3:12 | this access | Switch.cs:3:7:3:12 | Before call to method | +| Switch.cs:3:7:3:12 | {...} | Switch.cs:3:7:3:12 | After call to constructor Object | +| Switch.cs:5:10:5:11 | Exit | Switch.cs:5:10:5:11 | Normal Exit | +| Switch.cs:5:10:5:11 | Normal Exit | Switch.cs:6:5:8:5 | After {...} | +| Switch.cs:5:20:5:20 | o | Switch.cs:5:10:5:11 | Entry | +| Switch.cs:6:5:8:5 | After {...} | Switch.cs:7:9:7:22 | After switch (...) {...} | +| Switch.cs:6:5:8:5 | {...} | Switch.cs:5:20:5:20 | o | +| Switch.cs:7:9:7:22 | After switch (...) {...} | Switch.cs:7:17:7:17 | access to parameter o | | Switch.cs:7:9:7:22 | switch (...) {...} | Switch.cs:6:5:8:5 | {...} | | Switch.cs:7:17:7:17 | access to parameter o | Switch.cs:7:9:7:22 | switch (...) {...} | -| Switch.cs:10:10:10:11 | exit M2 (normal) | Switch.cs:15:17:15:23 | return ...; | -| Switch.cs:10:10:10:11 | exit M2 (normal) | Switch.cs:22:21:22:27 | return ...; | -| Switch.cs:10:10:10:11 | exit M2 (normal) | Switch.cs:26:17:26:23 | return ...; | -| Switch.cs:10:10:10:11 | exit M2 (normal) | Switch.cs:29:17:29:23 | return ...; | -| Switch.cs:11:5:33:5 | {...} | Switch.cs:10:10:10:11 | enter M2 | +| Switch.cs:10:10:10:11 | Normal Exit | Switch.cs:15:17:15:23 | return ...; | +| Switch.cs:10:10:10:11 | Normal Exit | Switch.cs:22:21:22:27 | return ...; | +| Switch.cs:10:10:10:11 | Normal Exit | Switch.cs:26:17:26:23 | return ...; | +| Switch.cs:10:10:10:11 | Normal Exit | Switch.cs:29:17:29:23 | return ...; | +| Switch.cs:10:20:10:20 | o | Switch.cs:10:10:10:11 | Entry | +| Switch.cs:11:5:33:5 | {...} | Switch.cs:10:20:10:20 | o | | Switch.cs:12:9:32:9 | switch (...) {...} | Switch.cs:11:5:33:5 | {...} | | Switch.cs:12:17:12:17 | access to parameter o | Switch.cs:12:9:32:9 | switch (...) {...} | +| Switch.cs:14:13:14:21 | After case ...: [match] | Switch.cs:14:18:14:20 | After "a" [match] | +| Switch.cs:14:13:14:21 | After case ...: [no-match] | Switch.cs:14:18:14:20 | After "a" [no-match] | | Switch.cs:14:13:14:21 | case ...: | Switch.cs:12:17:12:17 | access to parameter o | | Switch.cs:14:18:14:20 | "a" | Switch.cs:14:13:14:21 | case ...: | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:23:17:23:28 | goto case ...; | +| Switch.cs:15:17:15:23 | Before return ...; | Switch.cs:14:13:14:21 | After case ...: [match] | +| Switch.cs:15:17:15:23 | return ...; | Switch.cs:15:17:15:23 | Before return ...; | +| Switch.cs:16:13:16:19 | After case ...: [no-match] | Switch.cs:16:18:16:18 | After 0 [no-match] | +| Switch.cs:16:13:16:19 | case ...: | Switch.cs:14:13:14:21 | After case ...: [no-match] | | Switch.cs:16:18:16:18 | 0 | Switch.cs:16:13:16:19 | case ...: | -| Switch.cs:17:17:17:38 | throw ...; | Switch.cs:17:23:17:37 | object creation of type Exception | -| Switch.cs:18:13:18:22 | case ...: | Switch.cs:16:18:16:18 | 0 | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:16:18:16:18 | 0 | +| Switch.cs:17:17:17:38 | Before throw ...; | Switch.cs:16:13:16:19 | After case ...: [match] | +| Switch.cs:17:17:17:38 | throw ...; | Switch.cs:17:23:17:37 | After object creation of type Exception | +| Switch.cs:17:23:17:37 | After object creation of type Exception | Switch.cs:17:23:17:37 | object creation of type Exception | +| Switch.cs:17:23:17:37 | Before object creation of type Exception | Switch.cs:17:17:17:38 | Before throw ...; | +| Switch.cs:17:23:17:37 | object creation of type Exception | Switch.cs:17:23:17:37 | Before object creation of type Exception | +| Switch.cs:18:13:18:22 | After case ...: [match] | Switch.cs:18:18:18:21 | After null [match] | +| Switch.cs:18:13:18:22 | After case ...: [no-match] | Switch.cs:18:18:18:21 | After null [no-match] | +| Switch.cs:18:13:18:22 | case ...: | Switch.cs:16:13:16:19 | After case ...: [no-match] | | Switch.cs:18:18:18:21 | null | Switch.cs:18:13:18:22 | case ...: | +| Switch.cs:19:17:19:29 | Before goto default; | Switch.cs:18:13:18:22 | After case ...: [match] | +| Switch.cs:19:17:19:29 | goto default; | Switch.cs:19:17:19:29 | Before goto default; | +| Switch.cs:20:13:20:23 | After case ...: [match] | Switch.cs:20:18:20:22 | After Int32 i [match] | +| Switch.cs:20:13:20:23 | After case ...: [no-match] | Switch.cs:20:18:20:22 | After Int32 i [no-match] | +| Switch.cs:20:13:20:23 | case ...: | Switch.cs:18:13:18:22 | After case ...: [no-match] | | Switch.cs:20:18:20:22 | Int32 i | Switch.cs:20:13:20:23 | case ...: | -| Switch.cs:21:21:21:21 | access to parameter o | Switch.cs:21:17:22:27 | if (...) ... | +| Switch.cs:21:17:22:27 | After if (...) ... | Switch.cs:21:21:21:29 | After ... == ... [false] | +| Switch.cs:21:17:22:27 | if (...) ... | Switch.cs:20:13:20:23 | After case ...: [match] | +| Switch.cs:21:21:21:21 | access to parameter o | Switch.cs:21:21:21:29 | Before ... == ... | | Switch.cs:21:21:21:29 | ... == ... | Switch.cs:21:26:21:29 | null | +| Switch.cs:21:21:21:29 | After ... == ... [true] | Switch.cs:21:21:21:29 | ... == ... | +| Switch.cs:21:21:21:29 | Before ... == ... | Switch.cs:21:17:22:27 | if (...) ... | | Switch.cs:21:26:21:29 | null | Switch.cs:21:21:21:21 | access to parameter o | +| Switch.cs:22:21:22:27 | Before return ...; | Switch.cs:21:21:21:29 | After ... == ... [true] | +| Switch.cs:22:21:22:27 | return ...; | Switch.cs:22:21:22:27 | Before return ...; | +| Switch.cs:23:17:23:28 | Before goto case ...; | Switch.cs:21:17:22:27 | After if (...) ... | | Switch.cs:23:17:23:28 | goto case ...; | Switch.cs:23:27:23:27 | 0 | +| Switch.cs:23:27:23:27 | 0 | Switch.cs:23:17:23:28 | Before goto case ...; | +| Switch.cs:24:13:24:56 | After case ...: [match] | Switch.cs:24:18:24:25 | After String s [match] | +| Switch.cs:24:13:24:56 | After case ...: [no-match] | Switch.cs:24:18:24:25 | After String s [no-match] | +| Switch.cs:24:13:24:56 | case ...: | Switch.cs:20:13:20:23 | After case ...: [no-match] | | Switch.cs:24:18:24:25 | String s | Switch.cs:24:13:24:56 | case ...: | +| Switch.cs:24:32:24:32 | access to local variable s | Switch.cs:24:32:24:39 | Before access to property Length | +| Switch.cs:24:32:24:39 | After access to property Length | Switch.cs:24:32:24:39 | access to property Length | +| Switch.cs:24:32:24:39 | Before access to property Length | Switch.cs:24:32:24:43 | Before ... > ... | | Switch.cs:24:32:24:39 | access to property Length | Switch.cs:24:32:24:32 | access to local variable s | | Switch.cs:24:32:24:43 | ... > ... | Switch.cs:24:43:24:43 | 0 | -| Switch.cs:24:43:24:43 | 0 | Switch.cs:24:32:24:39 | access to property Length | +| Switch.cs:24:32:24:43 | Before ... > ... | Switch.cs:24:32:24:55 | ... && ... | +| Switch.cs:24:32:24:55 | ... && ... | Switch.cs:24:13:24:56 | After case ...: [match] | +| Switch.cs:24:32:24:55 | After ... && ... [false] | Switch.cs:24:32:24:43 | After ... > ... [false] | +| Switch.cs:24:32:24:55 | After ... && ... [false] | Switch.cs:24:48:24:55 | After ... != ... [false] | +| Switch.cs:24:32:24:55 | After ... && ... [true] | Switch.cs:24:48:24:55 | After ... != ... [true] | +| Switch.cs:24:43:24:43 | 0 | Switch.cs:24:32:24:39 | After access to property Length | +| Switch.cs:24:48:24:48 | access to local variable s | Switch.cs:24:48:24:55 | Before ... != ... | | Switch.cs:24:48:24:55 | ... != ... | Switch.cs:24:53:24:55 | "a" | +| Switch.cs:24:48:24:55 | Before ... != ... | Switch.cs:24:32:24:43 | After ... > ... [true] | | Switch.cs:24:53:24:55 | "a" | Switch.cs:24:48:24:48 | access to local variable s | +| Switch.cs:25:17:25:36 | After call to method WriteLine | Switch.cs:25:17:25:36 | call to method WriteLine | +| Switch.cs:25:17:25:36 | Before call to method WriteLine | Switch.cs:25:17:25:37 | ...; | | Switch.cs:25:17:25:36 | call to method WriteLine | Switch.cs:25:35:25:35 | access to local variable s | -| Switch.cs:25:17:25:37 | ...; | Switch.cs:24:32:24:55 | [true] ... && ... | -| Switch.cs:25:35:25:35 | access to local variable s | Switch.cs:25:17:25:37 | ...; | -| Switch.cs:26:17:26:23 | return ...; | Switch.cs:25:17:25:36 | call to method WriteLine | -| Switch.cs:27:13:27:39 | case ...: | Switch.cs:24:32:24:55 | [false] ... && ... | +| Switch.cs:25:17:25:37 | ...; | Switch.cs:24:32:24:55 | After ... && ... [true] | +| Switch.cs:25:17:25:37 | After ...; | Switch.cs:25:17:25:36 | After call to method WriteLine | +| Switch.cs:25:35:25:35 | access to local variable s | Switch.cs:25:17:25:36 | Before call to method WriteLine | +| Switch.cs:26:17:26:23 | Before return ...; | Switch.cs:25:17:25:37 | After ...; | +| Switch.cs:26:17:26:23 | return ...; | Switch.cs:26:17:26:23 | Before return ...; | +| Switch.cs:27:13:27:39 | After case ...: [match] | Switch.cs:27:18:27:25 | After Double d [match] | +| Switch.cs:27:13:27:39 | After case ...: [no-match] | Switch.cs:27:18:27:25 | After Double d [no-match] | +| Switch.cs:27:13:27:39 | case ...: | Switch.cs:24:13:24:56 | After case ...: [no-match] | +| Switch.cs:27:13:27:39 | case ...: | Switch.cs:24:32:24:55 | After ... && ... [false] | +| Switch.cs:27:18:27:25 | After Double d [no-match] | Switch.cs:27:18:27:25 | Double d | | Switch.cs:27:18:27:25 | Double d | Switch.cs:27:13:27:39 | case ...: | +| Switch.cs:27:32:27:38 | Before call to method Throw | Switch.cs:27:13:27:39 | After case ...: [match] | +| Switch.cs:27:32:27:38 | call to method Throw | Switch.cs:27:32:27:38 | Before call to method Throw | | Switch.cs:28:13:28:17 | Label: | Switch.cs:31:17:31:27 | goto ...; | -| Switch.cs:29:17:29:23 | return ...; | Switch.cs:28:13:28:17 | Label: | -| Switch.cs:30:13:30:20 | default: | Switch.cs:19:17:19:29 | goto default; | -| Switch.cs:30:13:30:20 | default: | Switch.cs:27:18:27:25 | Double d | -| Switch.cs:31:17:31:27 | goto ...; | Switch.cs:30:13:30:20 | default: | -| Switch.cs:35:10:35:11 | exit M3 | Switch.cs:35:10:35:11 | exit M3 (abnormal) | -| Switch.cs:35:10:35:11 | exit M3 (abnormal) | Switch.cs:37:17:37:23 | call to method Throw | -| Switch.cs:36:5:42:5 | {...} | Switch.cs:35:10:35:11 | enter M3 | +| Switch.cs:29:17:29:23 | Before return ...; | Switch.cs:28:13:28:17 | Label: | +| Switch.cs:29:17:29:23 | return ...; | Switch.cs:29:17:29:23 | Before return ...; | +| Switch.cs:30:13:30:20 | After default: [match] | Switch.cs:19:17:19:29 | goto default; | +| Switch.cs:30:13:30:20 | After default: [match] | Switch.cs:30:13:30:20 | default: | +| Switch.cs:30:13:30:20 | default: | Switch.cs:27:13:27:39 | After case ...: [no-match] | +| Switch.cs:31:17:31:27 | Before goto ...; | Switch.cs:30:13:30:20 | After default: [match] | +| Switch.cs:31:17:31:27 | goto ...; | Switch.cs:31:17:31:27 | Before goto ...; | +| Switch.cs:35:10:35:11 | Exceptional Exit | Switch.cs:37:17:37:23 | call to method Throw | +| Switch.cs:35:10:35:11 | Exit | Switch.cs:35:10:35:11 | Exceptional Exit | +| Switch.cs:36:5:42:5 | {...} | Switch.cs:35:10:35:11 | Entry | | Switch.cs:37:9:41:9 | switch (...) {...} | Switch.cs:36:5:42:5 | {...} | -| Switch.cs:37:17:37:23 | call to method Throw | Switch.cs:37:9:41:9 | switch (...) {...} | -| Switch.cs:44:10:44:11 | exit M4 | Switch.cs:44:10:44:11 | exit M4 (normal) | -| Switch.cs:44:10:44:11 | exit M4 (normal) | Switch.cs:49:17:49:22 | break; | -| Switch.cs:44:10:44:11 | exit M4 (normal) | Switch.cs:50:18:50:21 | access to type Boolean | -| Switch.cs:44:10:44:11 | exit M4 (normal) | Switch.cs:50:30:50:38 | ... != ... | -| Switch.cs:44:10:44:11 | exit M4 (normal) | Switch.cs:51:17:51:22 | break; | -| Switch.cs:45:5:53:5 | {...} | Switch.cs:44:10:44:11 | enter M4 | +| Switch.cs:37:17:37:23 | Before call to method Throw | Switch.cs:37:9:41:9 | switch (...) {...} | +| Switch.cs:37:17:37:23 | call to method Throw | Switch.cs:37:17:37:23 | Before call to method Throw | +| Switch.cs:44:10:44:11 | Exit | Switch.cs:44:10:44:11 | Normal Exit | +| Switch.cs:44:10:44:11 | Normal Exit | Switch.cs:45:5:53:5 | After {...} | +| Switch.cs:44:20:44:20 | o | Switch.cs:44:10:44:11 | Entry | +| Switch.cs:45:5:53:5 | After {...} | Switch.cs:46:9:52:9 | After switch (...) {...} | +| Switch.cs:45:5:53:5 | {...} | Switch.cs:44:20:44:20 | o | +| Switch.cs:46:9:52:9 | After switch (...) {...} | Switch.cs:49:17:49:22 | break; | +| Switch.cs:46:9:52:9 | After switch (...) {...} | Switch.cs:50:13:50:39 | After case ...: [no-match] | +| Switch.cs:46:9:52:9 | After switch (...) {...} | Switch.cs:50:30:50:38 | After ... != ... [false] | +| Switch.cs:46:9:52:9 | After switch (...) {...} | Switch.cs:51:17:51:22 | break; | | Switch.cs:46:9:52:9 | switch (...) {...} | Switch.cs:45:5:53:5 | {...} | | Switch.cs:46:17:46:17 | access to parameter o | Switch.cs:46:9:52:9 | switch (...) {...} | +| Switch.cs:48:13:48:23 | After case ...: [match] | Switch.cs:48:18:48:20 | After access to type Int32 [match] | +| Switch.cs:48:13:48:23 | After case ...: [no-match] | Switch.cs:48:18:48:20 | After access to type Int32 [no-match] | | Switch.cs:48:13:48:23 | case ...: | Switch.cs:46:17:46:17 | access to parameter o | | Switch.cs:48:18:48:20 | access to type Int32 | Switch.cs:48:13:48:23 | case ...: | +| Switch.cs:49:17:49:22 | Before break; | Switch.cs:48:13:48:23 | After case ...: [match] | +| Switch.cs:49:17:49:22 | break; | Switch.cs:49:17:49:22 | Before break; | +| Switch.cs:50:13:50:39 | After case ...: [match] | Switch.cs:50:18:50:21 | After access to type Boolean [match] | +| Switch.cs:50:13:50:39 | After case ...: [no-match] | Switch.cs:50:18:50:21 | After access to type Boolean [no-match] | +| Switch.cs:50:13:50:39 | case ...: | Switch.cs:48:13:48:23 | After case ...: [no-match] | | Switch.cs:50:18:50:21 | access to type Boolean | Switch.cs:50:13:50:39 | case ...: | +| Switch.cs:50:30:50:30 | access to parameter o | Switch.cs:50:30:50:38 | Before ... != ... | | Switch.cs:50:30:50:38 | ... != ... | Switch.cs:50:35:50:38 | null | +| Switch.cs:50:30:50:38 | Before ... != ... | Switch.cs:50:13:50:39 | After case ...: [match] | | Switch.cs:50:35:50:38 | null | Switch.cs:50:30:50:30 | access to parameter o | -| Switch.cs:55:10:55:11 | exit M5 | Switch.cs:55:10:55:11 | exit M5 (normal) | -| Switch.cs:55:10:55:11 | exit M5 (normal) | Switch.cs:62:17:62:22 | break; | -| Switch.cs:56:5:64:5 | {...} | Switch.cs:55:10:55:11 | enter M5 | +| Switch.cs:51:17:51:22 | Before break; | Switch.cs:50:30:50:38 | After ... != ... [true] | +| Switch.cs:51:17:51:22 | break; | Switch.cs:51:17:51:22 | Before break; | +| Switch.cs:55:10:55:11 | Exit | Switch.cs:55:10:55:11 | Normal Exit | +| Switch.cs:55:10:55:11 | Normal Exit | Switch.cs:56:5:64:5 | After {...} | +| Switch.cs:56:5:64:5 | After {...} | Switch.cs:57:9:63:9 | After switch (...) {...} | +| Switch.cs:56:5:64:5 | {...} | Switch.cs:55:10:55:11 | Entry | +| Switch.cs:57:9:63:9 | After switch (...) {...} | Switch.cs:60:17:60:22 | break; | +| Switch.cs:57:9:63:9 | After switch (...) {...} | Switch.cs:61:13:61:19 | After case ...: [no-match] | +| Switch.cs:57:9:63:9 | After switch (...) {...} | Switch.cs:62:17:62:22 | break; | | Switch.cs:57:9:63:9 | switch (...) {...} | Switch.cs:56:5:64:5 | {...} | -| Switch.cs:57:17:57:17 | 1 | Switch.cs:57:9:63:9 | switch (...) {...} | +| Switch.cs:57:17:57:17 | 1 | Switch.cs:57:17:57:21 | Before ... + ... | | Switch.cs:57:17:57:21 | ... + ... | Switch.cs:57:21:57:21 | 2 | +| Switch.cs:57:17:57:21 | After ... + ... | Switch.cs:57:17:57:21 | ... + ... | +| Switch.cs:57:17:57:21 | Before ... + ... | Switch.cs:57:9:63:9 | switch (...) {...} | | Switch.cs:57:21:57:21 | 2 | Switch.cs:57:17:57:17 | 1 | -| Switch.cs:59:13:59:19 | case ...: | Switch.cs:57:17:57:21 | ... + ... | +| Switch.cs:59:13:59:19 | After case ...: [match] | Switch.cs:59:18:59:18 | After 2 [match] | +| Switch.cs:59:13:59:19 | After case ...: [no-match] | Switch.cs:59:18:59:18 | After 2 [no-match] | +| Switch.cs:59:13:59:19 | case ...: | Switch.cs:57:17:57:21 | After ... + ... | | Switch.cs:59:18:59:18 | 2 | Switch.cs:59:13:59:19 | case ...: | -| Switch.cs:61:13:61:19 | case ...: | Switch.cs:59:18:59:18 | 2 | +| Switch.cs:60:17:60:22 | Before break; | Switch.cs:59:13:59:19 | After case ...: [match] | +| Switch.cs:60:17:60:22 | break; | Switch.cs:60:17:60:22 | Before break; | +| Switch.cs:61:13:61:19 | After case ...: [match] | Switch.cs:61:18:61:18 | After 3 [match] | +| Switch.cs:61:13:61:19 | After case ...: [no-match] | Switch.cs:61:18:61:18 | After 3 [no-match] | +| Switch.cs:61:13:61:19 | case ...: | Switch.cs:59:13:59:19 | After case ...: [no-match] | | Switch.cs:61:18:61:18 | 3 | Switch.cs:61:13:61:19 | case ...: | -| Switch.cs:62:17:62:22 | break; | Switch.cs:61:18:61:18 | 3 | -| Switch.cs:66:10:66:11 | exit M6 | Switch.cs:66:10:66:11 | exit M6 (normal) | -| Switch.cs:66:10:66:11 | exit M6 (normal) | Switch.cs:72:18:72:19 | "" | -| Switch.cs:66:10:66:11 | exit M6 (normal) | Switch.cs:73:17:73:22 | break; | -| Switch.cs:67:5:75:5 | {...} | Switch.cs:66:10:66:11 | enter M6 | +| Switch.cs:62:17:62:22 | Before break; | Switch.cs:61:13:61:19 | After case ...: [match] | +| Switch.cs:62:17:62:22 | break; | Switch.cs:62:17:62:22 | Before break; | +| Switch.cs:66:10:66:11 | Exit | Switch.cs:66:10:66:11 | Normal Exit | +| Switch.cs:66:10:66:11 | Normal Exit | Switch.cs:67:5:75:5 | After {...} | +| Switch.cs:66:20:66:20 | s | Switch.cs:66:10:66:11 | Entry | +| Switch.cs:67:5:75:5 | After {...} | Switch.cs:68:9:74:9 | After switch (...) {...} | +| Switch.cs:67:5:75:5 | {...} | Switch.cs:66:20:66:20 | s | +| Switch.cs:68:9:74:9 | After switch (...) {...} | Switch.cs:71:17:71:22 | break; | +| Switch.cs:68:9:74:9 | After switch (...) {...} | Switch.cs:72:13:72:20 | After case ...: [no-match] | +| Switch.cs:68:9:74:9 | After switch (...) {...} | Switch.cs:73:17:73:22 | break; | | Switch.cs:68:9:74:9 | switch (...) {...} | Switch.cs:67:5:75:5 | {...} | | Switch.cs:68:17:68:25 | (...) ... | Switch.cs:68:25:68:25 | access to parameter s | -| Switch.cs:68:25:68:25 | access to parameter s | Switch.cs:68:9:74:9 | switch (...) {...} | -| Switch.cs:70:13:70:23 | case ...: | Switch.cs:68:17:68:25 | (...) ... | +| Switch.cs:68:17:68:25 | After (...) ... | Switch.cs:68:17:68:25 | (...) ... | +| Switch.cs:68:17:68:25 | Before (...) ... | Switch.cs:68:9:74:9 | switch (...) {...} | +| Switch.cs:68:25:68:25 | access to parameter s | Switch.cs:68:17:68:25 | Before (...) ... | +| Switch.cs:70:13:70:23 | After case ...: [match] | Switch.cs:70:18:70:20 | After access to type Int32 [match] | +| Switch.cs:70:13:70:23 | After case ...: [no-match] | Switch.cs:70:18:70:20 | After access to type Int32 [no-match] | +| Switch.cs:70:13:70:23 | case ...: | Switch.cs:68:17:68:25 | After (...) ... | | Switch.cs:70:18:70:20 | access to type Int32 | Switch.cs:70:13:70:23 | case ...: | -| Switch.cs:72:13:72:20 | case ...: | Switch.cs:70:18:70:20 | access to type Int32 | +| Switch.cs:71:17:71:22 | Before break; | Switch.cs:70:13:70:23 | After case ...: [match] | +| Switch.cs:71:17:71:22 | break; | Switch.cs:71:17:71:22 | Before break; | +| Switch.cs:72:13:72:20 | After case ...: [match] | Switch.cs:72:18:72:19 | After "" [match] | +| Switch.cs:72:13:72:20 | After case ...: [no-match] | Switch.cs:72:18:72:19 | After "" [no-match] | +| Switch.cs:72:13:72:20 | case ...: | Switch.cs:70:13:70:23 | After case ...: [no-match] | | Switch.cs:72:18:72:19 | "" | Switch.cs:72:13:72:20 | case ...: | -| Switch.cs:77:10:77:11 | exit M7 | Switch.cs:77:10:77:11 | exit M7 (normal) | -| Switch.cs:77:10:77:11 | exit M7 (normal) | Switch.cs:82:17:82:28 | return ...; | -| Switch.cs:77:10:77:11 | exit M7 (normal) | Switch.cs:86:17:86:28 | return ...; | -| Switch.cs:77:10:77:11 | exit M7 (normal) | Switch.cs:88:9:88:21 | return ...; | -| Switch.cs:78:5:89:5 | {...} | Switch.cs:77:10:77:11 | enter M7 | +| Switch.cs:73:17:73:22 | Before break; | Switch.cs:72:13:72:20 | After case ...: [match] | +| Switch.cs:73:17:73:22 | break; | Switch.cs:73:17:73:22 | Before break; | +| Switch.cs:77:10:77:11 | Exit | Switch.cs:77:10:77:11 | Normal Exit | +| Switch.cs:77:10:77:11 | Normal Exit | Switch.cs:82:17:82:28 | return ...; | +| Switch.cs:77:10:77:11 | Normal Exit | Switch.cs:86:17:86:28 | return ...; | +| Switch.cs:77:10:77:11 | Normal Exit | Switch.cs:88:9:88:21 | return ...; | +| Switch.cs:77:17:77:17 | i | Switch.cs:77:10:77:11 | Entry | +| Switch.cs:77:24:77:24 | j | Switch.cs:77:17:77:17 | i | +| Switch.cs:78:5:89:5 | {...} | Switch.cs:77:24:77:24 | j | +| Switch.cs:79:9:87:9 | After switch (...) {...} | Switch.cs:83:13:83:19 | After case ...: [no-match] | +| Switch.cs:79:9:87:9 | After switch (...) {...} | Switch.cs:85:21:85:26 | break; | | Switch.cs:79:9:87:9 | switch (...) {...} | Switch.cs:78:5:89:5 | {...} | | Switch.cs:79:17:79:17 | access to parameter i | Switch.cs:79:9:87:9 | switch (...) {...} | +| Switch.cs:81:13:81:19 | After case ...: [match] | Switch.cs:81:18:81:18 | After 1 [match] | +| Switch.cs:81:13:81:19 | After case ...: [no-match] | Switch.cs:81:18:81:18 | After 1 [no-match] | | Switch.cs:81:13:81:19 | case ...: | Switch.cs:79:17:79:17 | access to parameter i | | Switch.cs:81:18:81:18 | 1 | Switch.cs:81:13:81:19 | case ...: | +| Switch.cs:82:17:82:28 | Before return ...; | Switch.cs:81:13:81:19 | After case ...: [match] | | Switch.cs:82:17:82:28 | return ...; | Switch.cs:82:24:82:27 | true | +| Switch.cs:82:24:82:27 | true | Switch.cs:82:17:82:28 | Before return ...; | +| Switch.cs:83:13:83:19 | After case ...: [match] | Switch.cs:83:18:83:18 | After 2 [match] | +| Switch.cs:83:13:83:19 | After case ...: [no-match] | Switch.cs:83:18:83:18 | After 2 [no-match] | +| Switch.cs:83:13:83:19 | case ...: | Switch.cs:81:13:81:19 | After case ...: [no-match] | | Switch.cs:83:18:83:18 | 2 | Switch.cs:83:13:83:19 | case ...: | -| Switch.cs:84:21:84:21 | access to parameter j | Switch.cs:84:17:85:26 | if (...) ... | +| Switch.cs:84:17:85:26 | After if (...) ... | Switch.cs:84:21:84:25 | After ... > ... [false] | +| Switch.cs:84:17:85:26 | if (...) ... | Switch.cs:83:13:83:19 | After case ...: [match] | +| Switch.cs:84:21:84:21 | access to parameter j | Switch.cs:84:21:84:25 | Before ... > ... | | Switch.cs:84:21:84:25 | ... > ... | Switch.cs:84:25:84:25 | 2 | +| Switch.cs:84:21:84:25 | Before ... > ... | Switch.cs:84:17:85:26 | if (...) ... | | Switch.cs:84:25:84:25 | 2 | Switch.cs:84:21:84:21 | access to parameter j | +| Switch.cs:85:21:85:26 | Before break; | Switch.cs:84:21:84:25 | After ... > ... [true] | +| Switch.cs:85:21:85:26 | break; | Switch.cs:85:21:85:26 | Before break; | +| Switch.cs:86:17:86:28 | Before return ...; | Switch.cs:84:17:85:26 | After if (...) ... | | Switch.cs:86:17:86:28 | return ...; | Switch.cs:86:24:86:27 | true | +| Switch.cs:86:24:86:27 | true | Switch.cs:86:17:86:28 | Before return ...; | +| Switch.cs:88:9:88:21 | Before return ...; | Switch.cs:79:9:87:9 | After switch (...) {...} | | Switch.cs:88:9:88:21 | return ...; | Switch.cs:88:16:88:20 | false | -| Switch.cs:88:16:88:20 | false | Switch.cs:85:21:85:26 | break; | -| Switch.cs:91:10:91:11 | exit M8 | Switch.cs:91:10:91:11 | exit M8 (normal) | -| Switch.cs:91:10:91:11 | exit M8 (normal) | Switch.cs:96:17:96:28 | return ...; | -| Switch.cs:91:10:91:11 | exit M8 (normal) | Switch.cs:98:9:98:21 | return ...; | -| Switch.cs:92:5:99:5 | {...} | Switch.cs:91:10:91:11 | enter M8 | +| Switch.cs:88:16:88:20 | false | Switch.cs:88:9:88:21 | Before return ...; | +| Switch.cs:91:10:91:11 | Exit | Switch.cs:91:10:91:11 | Normal Exit | +| Switch.cs:91:10:91:11 | Normal Exit | Switch.cs:96:17:96:28 | return ...; | +| Switch.cs:91:10:91:11 | Normal Exit | Switch.cs:98:9:98:21 | return ...; | +| Switch.cs:91:20:91:20 | o | Switch.cs:91:10:91:11 | Entry | +| Switch.cs:92:5:99:5 | {...} | Switch.cs:91:20:91:20 | o | +| Switch.cs:93:9:97:9 | After switch (...) {...} | Switch.cs:95:13:95:23 | After case ...: [no-match] | | Switch.cs:93:9:97:9 | switch (...) {...} | Switch.cs:92:5:99:5 | {...} | | Switch.cs:93:17:93:17 | access to parameter o | Switch.cs:93:9:97:9 | switch (...) {...} | +| Switch.cs:95:13:95:23 | After case ...: [match] | Switch.cs:95:18:95:20 | After access to type Int32 [match] | +| Switch.cs:95:13:95:23 | After case ...: [no-match] | Switch.cs:95:18:95:20 | After access to type Int32 [no-match] | | Switch.cs:95:13:95:23 | case ...: | Switch.cs:93:17:93:17 | access to parameter o | | Switch.cs:95:18:95:20 | access to type Int32 | Switch.cs:95:13:95:23 | case ...: | +| Switch.cs:96:17:96:28 | Before return ...; | Switch.cs:95:13:95:23 | After case ...: [match] | | Switch.cs:96:17:96:28 | return ...; | Switch.cs:96:24:96:27 | true | +| Switch.cs:96:24:96:27 | true | Switch.cs:96:17:96:28 | Before return ...; | +| Switch.cs:98:9:98:21 | Before return ...; | Switch.cs:93:9:97:9 | After switch (...) {...} | | Switch.cs:98:9:98:21 | return ...; | Switch.cs:98:16:98:20 | false | -| Switch.cs:101:9:101:10 | exit M9 | Switch.cs:101:9:101:10 | exit M9 (normal) | -| Switch.cs:101:9:101:10 | exit M9 (normal) | Switch.cs:105:21:105:29 | return ...; | -| Switch.cs:101:9:101:10 | exit M9 (normal) | Switch.cs:106:21:106:29 | return ...; | -| Switch.cs:101:9:101:10 | exit M9 (normal) | Switch.cs:108:9:108:18 | return ...; | -| Switch.cs:102:5:109:5 | {...} | Switch.cs:101:9:101:10 | enter M9 | +| Switch.cs:98:16:98:20 | false | Switch.cs:98:9:98:21 | Before return ...; | +| Switch.cs:101:9:101:10 | Exit | Switch.cs:101:9:101:10 | Normal Exit | +| Switch.cs:101:9:101:10 | Normal Exit | Switch.cs:105:21:105:29 | return ...; | +| Switch.cs:101:9:101:10 | Normal Exit | Switch.cs:106:21:106:29 | return ...; | +| Switch.cs:101:9:101:10 | Normal Exit | Switch.cs:108:9:108:18 | return ...; | +| Switch.cs:101:19:101:19 | s | Switch.cs:101:9:101:10 | Entry | +| Switch.cs:102:5:109:5 | {...} | Switch.cs:101:19:101:19 | s | +| Switch.cs:103:9:107:9 | After switch (...) {...} | Switch.cs:106:13:106:19 | After case ...: [no-match] | | Switch.cs:103:9:107:9 | switch (...) {...} | Switch.cs:102:5:109:5 | {...} | -| Switch.cs:103:17:103:17 | access to parameter s | Switch.cs:103:9:107:9 | switch (...) {...} | -| Switch.cs:105:13:105:19 | case ...: | Switch.cs:103:17:103:17 | access to parameter s | -| Switch.cs:105:13:105:19 | case ...: | Switch.cs:103:17:103:25 | access to property Length | +| Switch.cs:103:17:103:17 | access to parameter s | Switch.cs:103:17:103:25 | Before access to property Length | +| Switch.cs:103:17:103:25 | After access to property Length | Switch.cs:103:17:103:17 | After access to parameter s [null] | +| Switch.cs:103:17:103:25 | After access to property Length | Switch.cs:103:17:103:25 | access to property Length | +| Switch.cs:103:17:103:25 | Before access to property Length | Switch.cs:103:9:107:9 | switch (...) {...} | +| Switch.cs:103:17:103:25 | access to property Length | Switch.cs:103:17:103:17 | After access to parameter s [non-null] | +| Switch.cs:105:13:105:19 | After case ...: [match] | Switch.cs:105:18:105:18 | After 0 [match] | +| Switch.cs:105:13:105:19 | After case ...: [no-match] | Switch.cs:105:18:105:18 | After 0 [no-match] | +| Switch.cs:105:13:105:19 | case ...: | Switch.cs:103:17:103:25 | After access to property Length | | Switch.cs:105:18:105:18 | 0 | Switch.cs:105:13:105:19 | case ...: | +| Switch.cs:105:21:105:29 | Before return ...; | Switch.cs:105:13:105:19 | After case ...: [match] | | Switch.cs:105:21:105:29 | return ...; | Switch.cs:105:28:105:28 | 0 | +| Switch.cs:105:28:105:28 | 0 | Switch.cs:105:21:105:29 | Before return ...; | +| Switch.cs:106:13:106:19 | After case ...: [match] | Switch.cs:106:18:106:18 | After 1 [match] | +| Switch.cs:106:13:106:19 | After case ...: [no-match] | Switch.cs:106:18:106:18 | After 1 [no-match] | +| Switch.cs:106:13:106:19 | case ...: | Switch.cs:105:13:105:19 | After case ...: [no-match] | | Switch.cs:106:18:106:18 | 1 | Switch.cs:106:13:106:19 | case ...: | +| Switch.cs:106:21:106:29 | Before return ...; | Switch.cs:106:13:106:19 | After case ...: [match] | | Switch.cs:106:21:106:29 | return ...; | Switch.cs:106:28:106:28 | 1 | -| Switch.cs:108:9:108:18 | return ...; | Switch.cs:108:16:108:17 | -... | +| Switch.cs:106:28:106:28 | 1 | Switch.cs:106:21:106:29 | Before return ...; | +| Switch.cs:108:9:108:18 | Before return ...; | Switch.cs:103:9:107:9 | After switch (...) {...} | +| Switch.cs:108:9:108:18 | return ...; | Switch.cs:108:16:108:17 | After -... | | Switch.cs:108:16:108:17 | -... | Switch.cs:108:17:108:17 | 1 | -| Switch.cs:111:17:111:21 | exit Throw | Switch.cs:111:17:111:21 | exit Throw (abnormal) | -| Switch.cs:111:17:111:21 | exit Throw (abnormal) | Switch.cs:111:28:111:48 | throw ... | -| Switch.cs:111:28:111:48 | throw ... | Switch.cs:111:34:111:48 | object creation of type Exception | -| Switch.cs:111:34:111:48 | object creation of type Exception | Switch.cs:111:17:111:21 | enter Throw | -| Switch.cs:113:9:113:11 | exit M10 | Switch.cs:113:9:113:11 | exit M10 (normal) | -| Switch.cs:113:9:113:11 | exit M10 (normal) | Switch.cs:117:37:117:45 | return ...; | -| Switch.cs:113:9:113:11 | exit M10 (normal) | Switch.cs:118:36:118:44 | return ...; | -| Switch.cs:113:9:113:11 | exit M10 (normal) | Switch.cs:120:9:120:18 | return ...; | -| Switch.cs:114:5:121:5 | {...} | Switch.cs:113:9:113:11 | enter M10 | +| Switch.cs:108:16:108:17 | After -... | Switch.cs:108:16:108:17 | -... | +| Switch.cs:108:16:108:17 | Before -... | Switch.cs:108:9:108:18 | Before return ...; | +| Switch.cs:108:17:108:17 | 1 | Switch.cs:108:16:108:17 | Before -... | +| Switch.cs:111:17:111:21 | Exceptional Exit | Switch.cs:111:28:111:48 | throw ... | +| Switch.cs:111:17:111:21 | Exit | Switch.cs:111:17:111:21 | Exceptional Exit | +| Switch.cs:111:28:111:48 | Before throw ... | Switch.cs:111:17:111:21 | Entry | +| Switch.cs:111:28:111:48 | throw ... | Switch.cs:111:34:111:48 | After object creation of type Exception | +| Switch.cs:111:34:111:48 | After object creation of type Exception | Switch.cs:111:34:111:48 | object creation of type Exception | +| Switch.cs:111:34:111:48 | Before object creation of type Exception | Switch.cs:111:28:111:48 | Before throw ... | +| Switch.cs:111:34:111:48 | object creation of type Exception | Switch.cs:111:34:111:48 | Before object creation of type Exception | +| Switch.cs:113:9:113:11 | Exit | Switch.cs:113:9:113:11 | Normal Exit | +| Switch.cs:113:9:113:11 | Normal Exit | Switch.cs:117:37:117:45 | return ...; | +| Switch.cs:113:9:113:11 | Normal Exit | Switch.cs:118:36:118:44 | return ...; | +| Switch.cs:113:9:113:11 | Normal Exit | Switch.cs:120:9:120:18 | return ...; | +| Switch.cs:113:20:113:20 | s | Switch.cs:113:9:113:11 | Entry | +| Switch.cs:114:5:121:5 | {...} | Switch.cs:113:20:113:20 | s | +| Switch.cs:115:9:119:9 | After switch (...) {...} | Switch.cs:118:13:118:34 | After case ...: [no-match] | +| Switch.cs:115:9:119:9 | After switch (...) {...} | Switch.cs:118:25:118:33 | After ... == ... [false] | | Switch.cs:115:9:119:9 | switch (...) {...} | Switch.cs:114:5:121:5 | {...} | -| Switch.cs:115:17:115:17 | access to parameter s | Switch.cs:115:9:119:9 | switch (...) {...} | +| Switch.cs:115:17:115:17 | access to parameter s | Switch.cs:115:17:115:24 | Before access to property Length | +| Switch.cs:115:17:115:24 | After access to property Length | Switch.cs:115:17:115:24 | access to property Length | +| Switch.cs:115:17:115:24 | Before access to property Length | Switch.cs:115:9:119:9 | switch (...) {...} | | Switch.cs:115:17:115:24 | access to property Length | Switch.cs:115:17:115:17 | access to parameter s | -| Switch.cs:117:13:117:35 | case ...: | Switch.cs:115:17:115:24 | access to property Length | +| Switch.cs:117:13:117:35 | After case ...: [match] | Switch.cs:117:18:117:18 | After 3 [match] | +| Switch.cs:117:13:117:35 | After case ...: [no-match] | Switch.cs:117:18:117:18 | After 3 [no-match] | +| Switch.cs:117:13:117:35 | case ...: | Switch.cs:115:17:115:24 | After access to property Length | | Switch.cs:117:18:117:18 | 3 | Switch.cs:117:13:117:35 | case ...: | +| Switch.cs:117:25:117:25 | access to parameter s | Switch.cs:117:25:117:34 | Before ... == ... | | Switch.cs:117:25:117:34 | ... == ... | Switch.cs:117:30:117:34 | "foo" | +| Switch.cs:117:25:117:34 | Before ... == ... | Switch.cs:117:13:117:35 | After case ...: [match] | | Switch.cs:117:30:117:34 | "foo" | Switch.cs:117:25:117:25 | access to parameter s | +| Switch.cs:117:37:117:45 | Before return ...; | Switch.cs:117:25:117:34 | After ... == ... [true] | | Switch.cs:117:37:117:45 | return ...; | Switch.cs:117:44:117:44 | 1 | +| Switch.cs:117:44:117:44 | 1 | Switch.cs:117:37:117:45 | Before return ...; | +| Switch.cs:118:13:118:34 | After case ...: [match] | Switch.cs:118:18:118:18 | After 2 [match] | +| Switch.cs:118:13:118:34 | After case ...: [no-match] | Switch.cs:118:18:118:18 | After 2 [no-match] | +| Switch.cs:118:13:118:34 | case ...: | Switch.cs:117:13:117:35 | After case ...: [no-match] | +| Switch.cs:118:13:118:34 | case ...: | Switch.cs:117:25:117:34 | After ... == ... [false] | | Switch.cs:118:18:118:18 | 2 | Switch.cs:118:13:118:34 | case ...: | +| Switch.cs:118:25:118:25 | access to parameter s | Switch.cs:118:25:118:33 | Before ... == ... | | Switch.cs:118:25:118:33 | ... == ... | Switch.cs:118:30:118:33 | "fu" | +| Switch.cs:118:25:118:33 | Before ... == ... | Switch.cs:118:13:118:34 | After case ...: [match] | | Switch.cs:118:30:118:33 | "fu" | Switch.cs:118:25:118:25 | access to parameter s | +| Switch.cs:118:36:118:44 | Before return ...; | Switch.cs:118:25:118:33 | After ... == ... [true] | | Switch.cs:118:36:118:44 | return ...; | Switch.cs:118:43:118:43 | 2 | -| Switch.cs:120:9:120:18 | return ...; | Switch.cs:120:16:120:17 | -... | +| Switch.cs:118:43:118:43 | 2 | Switch.cs:118:36:118:44 | Before return ...; | +| Switch.cs:120:9:120:18 | Before return ...; | Switch.cs:115:9:119:9 | After switch (...) {...} | +| Switch.cs:120:9:120:18 | return ...; | Switch.cs:120:16:120:17 | After -... | | Switch.cs:120:16:120:17 | -... | Switch.cs:120:17:120:17 | 1 | -| Switch.cs:123:10:123:12 | exit M11 | Switch.cs:123:10:123:12 | exit M11 (normal) | -| Switch.cs:123:10:123:12 | exit M11 (normal) | Switch.cs:125:13:125:48 | [false] ... switch { ... } | -| Switch.cs:123:10:123:12 | exit M11 (normal) | Switch.cs:126:13:126:19 | return ...; | -| Switch.cs:124:5:127:5 | {...} | Switch.cs:123:10:123:12 | enter M11 | +| Switch.cs:120:16:120:17 | After -... | Switch.cs:120:16:120:17 | -... | +| Switch.cs:120:16:120:17 | Before -... | Switch.cs:120:9:120:18 | Before return ...; | +| Switch.cs:120:17:120:17 | 1 | Switch.cs:120:16:120:17 | Before -... | +| Switch.cs:123:10:123:12 | Exit | Switch.cs:123:10:123:12 | Normal Exit | +| Switch.cs:123:10:123:12 | Normal Exit | Switch.cs:124:5:127:5 | After {...} | +| Switch.cs:123:10:123:12 | Normal Exit | Switch.cs:126:13:126:19 | return ...; | +| Switch.cs:123:21:123:21 | o | Switch.cs:123:10:123:12 | Entry | +| Switch.cs:124:5:127:5 | After {...} | Switch.cs:125:9:126:19 | After if (...) ... | +| Switch.cs:124:5:127:5 | {...} | Switch.cs:123:21:123:21 | o | +| Switch.cs:125:9:126:19 | After if (...) ... | Switch.cs:125:13:125:48 | After ... switch { ... } [false] | | Switch.cs:125:9:126:19 | if (...) ... | Switch.cs:124:5:127:5 | {...} | -| Switch.cs:125:13:125:13 | access to parameter o | Switch.cs:125:9:126:19 | if (...) ... | -| Switch.cs:125:13:125:48 | [false] ... switch { ... } | Switch.cs:125:24:125:34 | [false] ... => ... | -| Switch.cs:125:13:125:48 | [false] ... switch { ... } | Switch.cs:125:37:125:46 | [false] ... => ... | -| Switch.cs:125:13:125:48 | [true] ... switch { ... } | Switch.cs:125:24:125:34 | [true] ... => ... | -| Switch.cs:125:24:125:29 | Boolean b | Switch.cs:125:13:125:13 | access to parameter o | -| Switch.cs:125:37:125:46 | [false] ... => ... | Switch.cs:125:42:125:46 | false | -| Switch.cs:125:42:125:46 | false | Switch.cs:125:37:125:37 | _ | -| Switch.cs:126:13:126:19 | return ...; | Switch.cs:125:13:125:48 | [true] ... switch { ... } | -| Switch.cs:129:12:129:14 | exit M12 | Switch.cs:129:12:129:14 | exit M12 (normal) | -| Switch.cs:129:12:129:14 | exit M12 (normal) | Switch.cs:131:9:131:67 | return ...; | -| Switch.cs:130:5:132:5 | {...} | Switch.cs:129:12:129:14 | enter M12 | -| Switch.cs:131:9:131:67 | return ...; | Switch.cs:131:16:131:66 | call to method ToString | -| Switch.cs:131:9:131:67 | return ...; | Switch.cs:131:17:131:53 | [null] ... switch { ... } | -| Switch.cs:131:16:131:66 | call to method ToString | Switch.cs:131:17:131:53 | [non-null] ... switch { ... } | -| Switch.cs:131:17:131:17 | access to parameter o | Switch.cs:130:5:132:5 | {...} | -| Switch.cs:131:17:131:53 | [non-null] ... switch { ... } | Switch.cs:131:28:131:40 | [non-null] ... => ... | -| Switch.cs:131:17:131:53 | [null] ... switch { ... } | Switch.cs:131:28:131:40 | [null] ... => ... | -| Switch.cs:131:17:131:53 | [null] ... switch { ... } | Switch.cs:131:43:131:51 | [null] ... => ... | -| Switch.cs:131:28:131:35 | String s | Switch.cs:131:17:131:17 | access to parameter o | -| Switch.cs:131:43:131:51 | [null] ... => ... | Switch.cs:131:48:131:51 | null | -| Switch.cs:131:48:131:51 | null | Switch.cs:131:43:131:43 | _ | -| Switch.cs:134:9:134:11 | exit M13 | Switch.cs:134:9:134:11 | exit M13 (normal) | -| Switch.cs:134:9:134:11 | exit M13 (normal) | Switch.cs:138:22:138:31 | return ...; | -| Switch.cs:134:9:134:11 | exit M13 (normal) | Switch.cs:139:21:139:29 | return ...; | -| Switch.cs:134:9:134:11 | exit M13 (normal) | Switch.cs:140:21:140:29 | return ...; | -| Switch.cs:135:5:142:5 | {...} | Switch.cs:134:9:134:11 | enter M13 | +| Switch.cs:125:13:125:13 | access to parameter o | Switch.cs:125:13:125:48 | ... switch { ... } | +| Switch.cs:125:13:125:48 | ... switch { ... } | Switch.cs:125:9:126:19 | if (...) ... | +| Switch.cs:125:24:125:29 | Boolean b | Switch.cs:125:24:125:34 | ... => ... | +| Switch.cs:125:24:125:34 | ... => ... | Switch.cs:125:13:125:13 | access to parameter o | +| Switch.cs:125:24:125:34 | After ... => ... [match] | Switch.cs:125:24:125:29 | After Boolean b [match] | +| Switch.cs:125:24:125:34 | After ... => ... [no-match] | Switch.cs:125:24:125:29 | After Boolean b [no-match] | +| Switch.cs:125:34:125:34 | access to local variable b | Switch.cs:125:24:125:34 | After ... => ... [match] | +| Switch.cs:125:37:125:37 | After _ [match] | Switch.cs:125:37:125:37 | _ | +| Switch.cs:125:37:125:37 | _ | Switch.cs:125:37:125:46 | ... => ... | +| Switch.cs:125:37:125:46 | ... => ... | Switch.cs:125:24:125:34 | After ... => ... [no-match] | +| Switch.cs:125:37:125:46 | After ... => ... [match] | Switch.cs:125:37:125:37 | After _ [match] | +| Switch.cs:125:42:125:46 | false | Switch.cs:125:37:125:46 | After ... => ... [match] | +| Switch.cs:126:13:126:19 | Before return ...; | Switch.cs:125:13:125:48 | After ... switch { ... } [true] | +| Switch.cs:126:13:126:19 | return ...; | Switch.cs:126:13:126:19 | Before return ...; | +| Switch.cs:129:12:129:14 | Exit | Switch.cs:129:12:129:14 | Normal Exit | +| Switch.cs:129:12:129:14 | Normal Exit | Switch.cs:131:9:131:67 | return ...; | +| Switch.cs:129:23:129:23 | o | Switch.cs:129:12:129:14 | Entry | +| Switch.cs:130:5:132:5 | {...} | Switch.cs:129:23:129:23 | o | +| Switch.cs:131:9:131:67 | Before return ...; | Switch.cs:130:5:132:5 | {...} | +| Switch.cs:131:9:131:67 | return ...; | Switch.cs:131:16:131:66 | After call to method ToString | +| Switch.cs:131:16:131:66 | After call to method ToString | Switch.cs:131:16:131:66 | call to method ToString | +| Switch.cs:131:16:131:66 | After call to method ToString | Switch.cs:131:17:131:53 | After ... switch { ... } [null] | +| Switch.cs:131:16:131:66 | Before call to method ToString | Switch.cs:131:9:131:67 | Before return ...; | +| Switch.cs:131:16:131:66 | call to method ToString | Switch.cs:131:17:131:53 | After ... switch { ... } [non-null] | +| Switch.cs:131:17:131:17 | access to parameter o | Switch.cs:131:17:131:53 | ... switch { ... } | +| Switch.cs:131:17:131:53 | ... switch { ... } | Switch.cs:131:16:131:66 | Before call to method ToString | +| Switch.cs:131:28:131:35 | String s | Switch.cs:131:28:131:40 | ... => ... | +| Switch.cs:131:28:131:40 | ... => ... | Switch.cs:131:17:131:17 | access to parameter o | +| Switch.cs:131:28:131:40 | After ... => ... [match] | Switch.cs:131:28:131:35 | After String s [match] | +| Switch.cs:131:28:131:40 | After ... => ... [no-match] | Switch.cs:131:28:131:35 | After String s [no-match] | +| Switch.cs:131:40:131:40 | access to local variable s | Switch.cs:131:28:131:40 | After ... => ... [match] | +| Switch.cs:131:43:131:43 | After _ [match] | Switch.cs:131:43:131:43 | _ | +| Switch.cs:131:43:131:43 | _ | Switch.cs:131:43:131:51 | ... => ... | +| Switch.cs:131:43:131:51 | ... => ... | Switch.cs:131:28:131:40 | After ... => ... [no-match] | +| Switch.cs:131:43:131:51 | After ... => ... [match] | Switch.cs:131:43:131:43 | After _ [match] | +| Switch.cs:131:48:131:51 | null | Switch.cs:131:43:131:51 | After ... => ... [match] | +| Switch.cs:134:9:134:11 | Exit | Switch.cs:134:9:134:11 | Normal Exit | +| Switch.cs:134:9:134:11 | Normal Exit | Switch.cs:138:22:138:31 | return ...; | +| Switch.cs:134:9:134:11 | Normal Exit | Switch.cs:139:21:139:29 | return ...; | +| Switch.cs:134:9:134:11 | Normal Exit | Switch.cs:140:21:140:29 | return ...; | +| Switch.cs:134:17:134:17 | i | Switch.cs:134:9:134:11 | Entry | +| Switch.cs:135:5:142:5 | {...} | Switch.cs:134:17:134:17 | i | | Switch.cs:136:9:141:9 | switch (...) {...} | Switch.cs:135:5:142:5 | {...} | | Switch.cs:136:17:136:17 | access to parameter i | Switch.cs:136:9:141:9 | switch (...) {...} | -| Switch.cs:138:22:138:31 | return ...; | Switch.cs:138:29:138:30 | -... | +| Switch.cs:138:13:138:20 | After default: [match] | Switch.cs:138:13:138:20 | default: | +| Switch.cs:138:13:138:20 | default: | Switch.cs:140:13:140:19 | After case ...: [no-match] | +| Switch.cs:138:22:138:31 | Before return ...; | Switch.cs:138:13:138:20 | After default: [match] | +| Switch.cs:138:22:138:31 | return ...; | Switch.cs:138:29:138:30 | After -... | | Switch.cs:138:29:138:30 | -... | Switch.cs:138:30:138:30 | 1 | -| Switch.cs:138:30:138:30 | 1 | Switch.cs:138:13:138:20 | default: | +| Switch.cs:138:29:138:30 | After -... | Switch.cs:138:29:138:30 | -... | +| Switch.cs:138:29:138:30 | Before -... | Switch.cs:138:22:138:31 | Before return ...; | +| Switch.cs:138:30:138:30 | 1 | Switch.cs:138:29:138:30 | Before -... | +| Switch.cs:139:13:139:19 | After case ...: [match] | Switch.cs:139:18:139:18 | After 1 [match] | +| Switch.cs:139:13:139:19 | After case ...: [no-match] | Switch.cs:139:18:139:18 | After 1 [no-match] | | Switch.cs:139:13:139:19 | case ...: | Switch.cs:136:17:136:17 | access to parameter i | | Switch.cs:139:18:139:18 | 1 | Switch.cs:139:13:139:19 | case ...: | +| Switch.cs:139:21:139:29 | Before return ...; | Switch.cs:139:13:139:19 | After case ...: [match] | | Switch.cs:139:21:139:29 | return ...; | Switch.cs:139:28:139:28 | 1 | +| Switch.cs:139:28:139:28 | 1 | Switch.cs:139:21:139:29 | Before return ...; | +| Switch.cs:140:13:140:19 | After case ...: [match] | Switch.cs:140:18:140:18 | After 2 [match] | +| Switch.cs:140:13:140:19 | After case ...: [no-match] | Switch.cs:140:18:140:18 | After 2 [no-match] | +| Switch.cs:140:13:140:19 | case ...: | Switch.cs:139:13:139:19 | After case ...: [no-match] | | Switch.cs:140:18:140:18 | 2 | Switch.cs:140:13:140:19 | case ...: | +| Switch.cs:140:21:140:29 | Before return ...; | Switch.cs:140:13:140:19 | After case ...: [match] | | Switch.cs:140:21:140:29 | return ...; | Switch.cs:140:28:140:28 | 2 | -| Switch.cs:144:9:144:11 | exit M14 | Switch.cs:144:9:144:11 | exit M14 (normal) | -| Switch.cs:144:9:144:11 | exit M14 (normal) | Switch.cs:148:21:148:29 | return ...; | -| Switch.cs:144:9:144:11 | exit M14 (normal) | Switch.cs:149:22:149:31 | return ...; | -| Switch.cs:144:9:144:11 | exit M14 (normal) | Switch.cs:150:21:150:29 | return ...; | -| Switch.cs:145:5:152:5 | {...} | Switch.cs:144:9:144:11 | enter M14 | +| Switch.cs:140:28:140:28 | 2 | Switch.cs:140:21:140:29 | Before return ...; | +| Switch.cs:144:9:144:11 | Exit | Switch.cs:144:9:144:11 | Normal Exit | +| Switch.cs:144:9:144:11 | Normal Exit | Switch.cs:148:21:148:29 | return ...; | +| Switch.cs:144:9:144:11 | Normal Exit | Switch.cs:149:22:149:31 | return ...; | +| Switch.cs:144:9:144:11 | Normal Exit | Switch.cs:150:21:150:29 | return ...; | +| Switch.cs:144:17:144:17 | i | Switch.cs:144:9:144:11 | Entry | +| Switch.cs:145:5:152:5 | {...} | Switch.cs:144:17:144:17 | i | | Switch.cs:146:9:151:9 | switch (...) {...} | Switch.cs:145:5:152:5 | {...} | | Switch.cs:146:17:146:17 | access to parameter i | Switch.cs:146:9:151:9 | switch (...) {...} | +| Switch.cs:148:13:148:19 | After case ...: [match] | Switch.cs:148:18:148:18 | After 1 [match] | +| Switch.cs:148:13:148:19 | After case ...: [no-match] | Switch.cs:148:18:148:18 | After 1 [no-match] | | Switch.cs:148:13:148:19 | case ...: | Switch.cs:146:17:146:17 | access to parameter i | | Switch.cs:148:18:148:18 | 1 | Switch.cs:148:13:148:19 | case ...: | +| Switch.cs:148:21:148:29 | Before return ...; | Switch.cs:148:13:148:19 | After case ...: [match] | | Switch.cs:148:21:148:29 | return ...; | Switch.cs:148:28:148:28 | 1 | -| Switch.cs:149:22:149:31 | return ...; | Switch.cs:149:29:149:30 | -... | +| Switch.cs:148:28:148:28 | 1 | Switch.cs:148:21:148:29 | Before return ...; | +| Switch.cs:149:13:149:20 | After default: [match] | Switch.cs:149:13:149:20 | default: | +| Switch.cs:149:13:149:20 | default: | Switch.cs:150:13:150:19 | After case ...: [no-match] | +| Switch.cs:149:22:149:31 | Before return ...; | Switch.cs:149:13:149:20 | After default: [match] | +| Switch.cs:149:22:149:31 | return ...; | Switch.cs:149:29:149:30 | After -... | | Switch.cs:149:29:149:30 | -... | Switch.cs:149:30:149:30 | 1 | -| Switch.cs:149:30:149:30 | 1 | Switch.cs:149:13:149:20 | default: | +| Switch.cs:149:29:149:30 | After -... | Switch.cs:149:29:149:30 | -... | +| Switch.cs:149:29:149:30 | Before -... | Switch.cs:149:22:149:31 | Before return ...; | +| Switch.cs:149:30:149:30 | 1 | Switch.cs:149:29:149:30 | Before -... | +| Switch.cs:150:13:150:19 | After case ...: [match] | Switch.cs:150:18:150:18 | After 2 [match] | +| Switch.cs:150:13:150:19 | After case ...: [no-match] | Switch.cs:150:18:150:18 | After 2 [no-match] | +| Switch.cs:150:13:150:19 | case ...: | Switch.cs:148:13:148:19 | After case ...: [no-match] | | Switch.cs:150:18:150:18 | 2 | Switch.cs:150:13:150:19 | case ...: | +| Switch.cs:150:21:150:29 | Before return ...; | Switch.cs:150:13:150:19 | After case ...: [match] | | Switch.cs:150:21:150:29 | return ...; | Switch.cs:150:28:150:28 | 2 | -| Switch.cs:154:10:154:12 | exit M15 (normal) | Switch.cs:158:13:158:48 | call to method WriteLine | -| Switch.cs:154:10:154:12 | exit M15 (normal) | Switch.cs:160:13:160:48 | call to method WriteLine | -| Switch.cs:155:5:161:5 | {...} | Switch.cs:154:10:154:12 | enter M15 | +| Switch.cs:150:28:150:28 | 2 | Switch.cs:150:21:150:29 | Before return ...; | +| Switch.cs:154:10:154:12 | Exit | Switch.cs:154:10:154:12 | Normal Exit | +| Switch.cs:154:10:154:12 | Normal Exit | Switch.cs:155:5:161:5 | After {...} | +| Switch.cs:154:19:154:19 | b | Switch.cs:154:10:154:12 | Entry | +| Switch.cs:155:5:161:5 | After {...} | Switch.cs:157:9:160:49 | After if (...) ... | +| Switch.cs:155:5:161:5 | {...} | Switch.cs:154:19:154:19 | b | | Switch.cs:156:9:156:55 | ... ...; | Switch.cs:155:5:161:5 | {...} | -| Switch.cs:156:13:156:54 | String s = ... | Switch.cs:156:17:156:54 | ... switch { ... } | -| Switch.cs:156:17:156:17 | access to parameter b | Switch.cs:156:9:156:55 | ... ...; | -| Switch.cs:156:17:156:54 | ... switch { ... } | Switch.cs:156:28:156:38 | ... => ... | -| Switch.cs:156:17:156:54 | ... switch { ... } | Switch.cs:156:41:156:52 | ... => ... | -| Switch.cs:156:28:156:31 | true | Switch.cs:156:17:156:17 | access to parameter b | -| Switch.cs:156:28:156:38 | ... => ... | Switch.cs:156:36:156:38 | "a" | -| Switch.cs:156:41:156:52 | ... => ... | Switch.cs:156:50:156:52 | "b" | -| Switch.cs:156:50:156:52 | "b" | Switch.cs:156:41:156:45 | false | -| Switch.cs:157:9:160:49 | if (...) ... | Switch.cs:156:13:156:54 | String s = ... | +| Switch.cs:156:9:156:55 | After ... ...; | Switch.cs:156:13:156:54 | After String s = ... | +| Switch.cs:156:13:156:13 | access to local variable s | Switch.cs:156:13:156:54 | Before String s = ... | +| Switch.cs:156:13:156:54 | After String s = ... | Switch.cs:156:13:156:54 | String s = ... | +| Switch.cs:156:13:156:54 | Before String s = ... | Switch.cs:156:9:156:55 | ... ...; | +| Switch.cs:156:13:156:54 | String s = ... | Switch.cs:156:17:156:54 | After ... switch { ... } | +| Switch.cs:156:17:156:17 | access to parameter b | Switch.cs:156:17:156:54 | ... switch { ... } | +| Switch.cs:156:17:156:54 | ... switch { ... } | Switch.cs:156:13:156:13 | access to local variable s | +| Switch.cs:156:17:156:54 | After ... switch { ... } | Switch.cs:156:36:156:38 | "a" | +| Switch.cs:156:17:156:54 | After ... switch { ... } | Switch.cs:156:41:156:52 | After ... => ... [no-match] | +| Switch.cs:156:17:156:54 | After ... switch { ... } | Switch.cs:156:50:156:52 | "b" | +| Switch.cs:156:28:156:31 | true | Switch.cs:156:28:156:38 | ... => ... | +| Switch.cs:156:28:156:38 | ... => ... | Switch.cs:156:17:156:17 | access to parameter b | +| Switch.cs:156:28:156:38 | After ... => ... [match] | Switch.cs:156:28:156:31 | After true [match] | +| Switch.cs:156:28:156:38 | After ... => ... [no-match] | Switch.cs:156:28:156:31 | After true [no-match] | +| Switch.cs:156:36:156:38 | "a" | Switch.cs:156:28:156:38 | After ... => ... [match] | +| Switch.cs:156:41:156:45 | false | Switch.cs:156:41:156:52 | ... => ... | +| Switch.cs:156:41:156:52 | ... => ... | Switch.cs:156:28:156:38 | After ... => ... [no-match] | +| Switch.cs:156:41:156:52 | After ... => ... [match] | Switch.cs:156:41:156:45 | After false [match] | +| Switch.cs:156:41:156:52 | After ... => ... [no-match] | Switch.cs:156:41:156:45 | After false [no-match] | +| Switch.cs:156:50:156:52 | "b" | Switch.cs:156:41:156:52 | After ... => ... [match] | +| Switch.cs:157:9:160:49 | After if (...) ... | Switch.cs:158:13:158:49 | After ...; | +| Switch.cs:157:9:160:49 | After if (...) ... | Switch.cs:160:13:160:49 | After ...; | +| Switch.cs:157:9:160:49 | if (...) ... | Switch.cs:156:9:156:55 | After ... ...; | | Switch.cs:157:13:157:13 | access to parameter b | Switch.cs:157:9:160:49 | if (...) ... | -| Switch.cs:158:13:158:48 | call to method WriteLine | Switch.cs:158:38:158:47 | $"..." | -| Switch.cs:158:38:158:47 | $"..." | Switch.cs:158:44:158:46 | {...} | -| Switch.cs:158:40:158:43 | "a = " | Switch.cs:158:13:158:49 | ...; | +| Switch.cs:158:13:158:48 | After call to method WriteLine | Switch.cs:158:13:158:48 | call to method WriteLine | +| Switch.cs:158:13:158:48 | Before call to method WriteLine | Switch.cs:158:13:158:49 | ...; | +| Switch.cs:158:13:158:48 | call to method WriteLine | Switch.cs:158:38:158:47 | After $"..." | +| Switch.cs:158:13:158:49 | ...; | Switch.cs:157:13:157:13 | After access to parameter b [true] | +| Switch.cs:158:13:158:49 | After ...; | Switch.cs:158:13:158:48 | After call to method WriteLine | +| Switch.cs:158:38:158:47 | $"..." | Switch.cs:158:44:158:46 | After {...} | +| Switch.cs:158:38:158:47 | After $"..." | Switch.cs:158:38:158:47 | $"..." | +| Switch.cs:158:38:158:47 | Before $"..." | Switch.cs:158:13:158:48 | Before call to method WriteLine | +| Switch.cs:158:40:158:43 | "a = " | Switch.cs:158:38:158:47 | Before $"..." | +| Switch.cs:158:44:158:46 | After {...} | Switch.cs:158:44:158:46 | {...} | +| Switch.cs:158:44:158:46 | Before {...} | Switch.cs:158:40:158:43 | "a = " | | Switch.cs:158:44:158:46 | {...} | Switch.cs:158:45:158:45 | access to local variable s | -| Switch.cs:158:45:158:45 | access to local variable s | Switch.cs:158:40:158:43 | "a = " | -| Switch.cs:160:13:160:48 | call to method WriteLine | Switch.cs:160:38:160:47 | $"..." | -| Switch.cs:160:38:160:47 | $"..." | Switch.cs:160:44:160:46 | {...} | -| Switch.cs:160:40:160:43 | "b = " | Switch.cs:160:13:160:49 | ...; | +| Switch.cs:158:45:158:45 | access to local variable s | Switch.cs:158:44:158:46 | Before {...} | +| Switch.cs:160:13:160:48 | After call to method WriteLine | Switch.cs:160:13:160:48 | call to method WriteLine | +| Switch.cs:160:13:160:48 | Before call to method WriteLine | Switch.cs:160:13:160:49 | ...; | +| Switch.cs:160:13:160:48 | call to method WriteLine | Switch.cs:160:38:160:47 | After $"..." | +| Switch.cs:160:13:160:49 | ...; | Switch.cs:157:13:157:13 | After access to parameter b [false] | +| Switch.cs:160:13:160:49 | After ...; | Switch.cs:160:13:160:48 | After call to method WriteLine | +| Switch.cs:160:38:160:47 | $"..." | Switch.cs:160:44:160:46 | After {...} | +| Switch.cs:160:38:160:47 | After $"..." | Switch.cs:160:38:160:47 | $"..." | +| Switch.cs:160:38:160:47 | Before $"..." | Switch.cs:160:13:160:48 | Before call to method WriteLine | +| Switch.cs:160:40:160:43 | "b = " | Switch.cs:160:38:160:47 | Before $"..." | +| Switch.cs:160:44:160:46 | After {...} | Switch.cs:160:44:160:46 | {...} | +| Switch.cs:160:44:160:46 | Before {...} | Switch.cs:160:40:160:43 | "b = " | | Switch.cs:160:44:160:46 | {...} | Switch.cs:160:45:160:45 | access to local variable s | -| Switch.cs:160:45:160:45 | access to local variable s | Switch.cs:160:40:160:43 | "b = " | -| Switch.cs:163:10:163:12 | exit M16 | Switch.cs:163:10:163:12 | exit M16 (normal) | -| Switch.cs:163:10:163:12 | exit M16 (normal) | Switch.cs:170:17:170:22 | break; | -| Switch.cs:163:10:163:12 | exit M16 (normal) | Switch.cs:173:17:173:22 | break; | -| Switch.cs:163:10:163:12 | exit M16 (normal) | Switch.cs:176:17:176:22 | break; | -| Switch.cs:164:5:178:5 | {...} | Switch.cs:163:10:163:12 | enter M16 | +| Switch.cs:160:45:160:45 | access to local variable s | Switch.cs:160:44:160:46 | Before {...} | +| Switch.cs:163:10:163:12 | Exit | Switch.cs:163:10:163:12 | Normal Exit | +| Switch.cs:163:10:163:12 | Normal Exit | Switch.cs:164:5:178:5 | After {...} | +| Switch.cs:163:18:163:18 | i | Switch.cs:163:10:163:12 | Entry | +| Switch.cs:164:5:178:5 | After {...} | Switch.cs:165:9:177:9 | After switch (...) {...} | +| Switch.cs:164:5:178:5 | {...} | Switch.cs:163:18:163:18 | i | +| Switch.cs:165:9:177:9 | After switch (...) {...} | Switch.cs:170:17:170:22 | break; | +| Switch.cs:165:9:177:9 | After switch (...) {...} | Switch.cs:173:17:173:22 | break; | +| Switch.cs:165:9:177:9 | After switch (...) {...} | Switch.cs:176:17:176:22 | break; | | Switch.cs:165:9:177:9 | switch (...) {...} | Switch.cs:164:5:178:5 | {...} | | Switch.cs:165:17:165:17 | access to parameter i | Switch.cs:165:9:177:9 | switch (...) {...} | +| Switch.cs:167:13:167:19 | After case ...: [match] | Switch.cs:167:18:167:18 | After 1 [match] | +| Switch.cs:167:13:167:19 | After case ...: [no-match] | Switch.cs:167:18:167:18 | After 1 [no-match] | | Switch.cs:167:13:167:19 | case ...: | Switch.cs:165:17:165:17 | access to parameter i | | Switch.cs:167:18:167:18 | 1 | Switch.cs:167:13:167:19 | case ...: | +| Switch.cs:168:13:168:19 | After case ...: [match] | Switch.cs:168:18:168:18 | After 2 [match] | +| Switch.cs:168:13:168:19 | After case ...: [no-match] | Switch.cs:168:18:168:18 | After 2 [no-match] | +| Switch.cs:168:13:168:19 | case ...: | Switch.cs:167:13:167:19 | After case ...: [no-match] | | Switch.cs:168:18:168:18 | 2 | Switch.cs:168:13:168:19 | case ...: | +| Switch.cs:169:17:169:50 | After call to method WriteLine | Switch.cs:169:17:169:50 | call to method WriteLine | +| Switch.cs:169:17:169:50 | Before call to method WriteLine | Switch.cs:169:17:169:51 | ...; | | Switch.cs:169:17:169:50 | call to method WriteLine | Switch.cs:169:42:169:49 | "1 or 2" | -| Switch.cs:169:42:169:49 | "1 or 2" | Switch.cs:169:17:169:51 | ...; | -| Switch.cs:170:17:170:22 | break; | Switch.cs:169:17:169:50 | call to method WriteLine | +| Switch.cs:169:17:169:51 | ...; | Switch.cs:167:13:167:19 | After case ...: [match] | +| Switch.cs:169:17:169:51 | ...; | Switch.cs:168:13:168:19 | After case ...: [match] | +| Switch.cs:169:17:169:51 | After ...; | Switch.cs:169:17:169:50 | After call to method WriteLine | +| Switch.cs:169:42:169:49 | "1 or 2" | Switch.cs:169:17:169:50 | Before call to method WriteLine | +| Switch.cs:170:17:170:22 | Before break; | Switch.cs:169:17:169:51 | After ...; | +| Switch.cs:170:17:170:22 | break; | Switch.cs:170:17:170:22 | Before break; | +| Switch.cs:171:13:171:19 | After case ...: [match] | Switch.cs:171:18:171:18 | After 3 [match] | +| Switch.cs:171:13:171:19 | After case ...: [no-match] | Switch.cs:171:18:171:18 | After 3 [no-match] | +| Switch.cs:171:13:171:19 | case ...: | Switch.cs:168:13:168:19 | After case ...: [no-match] | | Switch.cs:171:18:171:18 | 3 | Switch.cs:171:13:171:19 | case ...: | +| Switch.cs:172:17:172:45 | After call to method WriteLine | Switch.cs:172:17:172:45 | call to method WriteLine | +| Switch.cs:172:17:172:45 | Before call to method WriteLine | Switch.cs:172:17:172:46 | ...; | | Switch.cs:172:17:172:45 | call to method WriteLine | Switch.cs:172:42:172:44 | "3" | -| Switch.cs:172:42:172:44 | "3" | Switch.cs:172:17:172:46 | ...; | -| Switch.cs:173:17:173:22 | break; | Switch.cs:172:17:172:45 | call to method WriteLine | +| Switch.cs:172:17:172:46 | ...; | Switch.cs:171:13:171:19 | After case ...: [match] | +| Switch.cs:172:17:172:46 | After ...; | Switch.cs:172:17:172:45 | After call to method WriteLine | +| Switch.cs:172:42:172:44 | "3" | Switch.cs:172:17:172:45 | Before call to method WriteLine | +| Switch.cs:173:17:173:22 | Before break; | Switch.cs:172:17:172:46 | After ...; | +| Switch.cs:173:17:173:22 | break; | Switch.cs:173:17:173:22 | Before break; | +| Switch.cs:174:13:174:20 | After default: [match] | Switch.cs:174:13:174:20 | default: | +| Switch.cs:174:13:174:20 | default: | Switch.cs:171:13:171:19 | After case ...: [no-match] | +| Switch.cs:175:17:175:47 | After call to method WriteLine | Switch.cs:175:17:175:47 | call to method WriteLine | +| Switch.cs:175:17:175:47 | Before call to method WriteLine | Switch.cs:175:17:175:48 | ...; | | Switch.cs:175:17:175:47 | call to method WriteLine | Switch.cs:175:42:175:46 | "def" | -| Switch.cs:175:17:175:48 | ...; | Switch.cs:174:13:174:20 | default: | -| Switch.cs:175:42:175:46 | "def" | Switch.cs:175:17:175:48 | ...; | -| Switch.cs:176:17:176:22 | break; | Switch.cs:175:17:175:47 | call to method WriteLine | -| TypeAccesses.cs:1:7:1:18 | call to constructor Object | TypeAccesses.cs:1:7:1:18 | call to method | +| Switch.cs:175:17:175:48 | ...; | Switch.cs:174:13:174:20 | After default: [match] | +| Switch.cs:175:17:175:48 | After ...; | Switch.cs:175:17:175:47 | After call to method WriteLine | +| Switch.cs:175:42:175:46 | "def" | Switch.cs:175:17:175:47 | Before call to method WriteLine | +| Switch.cs:176:17:176:22 | Before break; | Switch.cs:175:17:175:48 | After ...; | +| Switch.cs:176:17:176:22 | break; | Switch.cs:176:17:176:22 | Before break; | +| TypeAccesses.cs:1:7:1:18 | After call to constructor Object | TypeAccesses.cs:1:7:1:18 | call to constructor Object | +| TypeAccesses.cs:1:7:1:18 | After call to method | TypeAccesses.cs:1:7:1:18 | call to method | +| TypeAccesses.cs:1:7:1:18 | Before call to constructor Object | TypeAccesses.cs:1:7:1:18 | After call to method | +| TypeAccesses.cs:1:7:1:18 | Before call to method | TypeAccesses.cs:1:7:1:18 | Entry | +| TypeAccesses.cs:1:7:1:18 | Exit | TypeAccesses.cs:1:7:1:18 | Normal Exit | +| TypeAccesses.cs:1:7:1:18 | Normal Exit | TypeAccesses.cs:1:7:1:18 | {...} | +| TypeAccesses.cs:1:7:1:18 | call to constructor Object | TypeAccesses.cs:1:7:1:18 | Before call to constructor Object | | TypeAccesses.cs:1:7:1:18 | call to method | TypeAccesses.cs:1:7:1:18 | this access | -| TypeAccesses.cs:1:7:1:18 | exit TypeAccesses | TypeAccesses.cs:1:7:1:18 | exit TypeAccesses (normal) | -| TypeAccesses.cs:1:7:1:18 | exit TypeAccesses (normal) | TypeAccesses.cs:1:7:1:18 | {...} | -| TypeAccesses.cs:1:7:1:18 | this access | TypeAccesses.cs:1:7:1:18 | enter TypeAccesses | -| TypeAccesses.cs:1:7:1:18 | {...} | TypeAccesses.cs:1:7:1:18 | call to constructor Object | -| TypeAccesses.cs:3:10:3:10 | exit M | TypeAccesses.cs:3:10:3:10 | exit M (normal) | -| TypeAccesses.cs:3:10:3:10 | exit M (normal) | TypeAccesses.cs:8:13:8:27 | Type t = ... | -| TypeAccesses.cs:4:5:9:5 | {...} | TypeAccesses.cs:3:10:3:10 | enter M | +| TypeAccesses.cs:1:7:1:18 | this access | TypeAccesses.cs:1:7:1:18 | Before call to method | +| TypeAccesses.cs:1:7:1:18 | {...} | TypeAccesses.cs:1:7:1:18 | After call to constructor Object | +| TypeAccesses.cs:3:10:3:10 | Exit | TypeAccesses.cs:3:10:3:10 | Normal Exit | +| TypeAccesses.cs:3:10:3:10 | Normal Exit | TypeAccesses.cs:4:5:9:5 | After {...} | +| TypeAccesses.cs:3:19:3:19 | o | TypeAccesses.cs:3:10:3:10 | Entry | +| TypeAccesses.cs:4:5:9:5 | After {...} | TypeAccesses.cs:8:9:8:28 | After ... ...; | +| TypeAccesses.cs:4:5:9:5 | {...} | TypeAccesses.cs:3:19:3:19 | o | | TypeAccesses.cs:5:9:5:26 | ... ...; | TypeAccesses.cs:4:5:9:5 | {...} | -| TypeAccesses.cs:5:13:5:25 | String s = ... | TypeAccesses.cs:5:17:5:25 | (...) ... | +| TypeAccesses.cs:5:9:5:26 | After ... ...; | TypeAccesses.cs:5:13:5:25 | After String s = ... | +| TypeAccesses.cs:5:13:5:13 | access to local variable s | TypeAccesses.cs:5:13:5:25 | Before String s = ... | +| TypeAccesses.cs:5:13:5:25 | After String s = ... | TypeAccesses.cs:5:13:5:25 | String s = ... | +| TypeAccesses.cs:5:13:5:25 | Before String s = ... | TypeAccesses.cs:5:9:5:26 | ... ...; | +| TypeAccesses.cs:5:13:5:25 | String s = ... | TypeAccesses.cs:5:17:5:25 | After (...) ... | | TypeAccesses.cs:5:17:5:25 | (...) ... | TypeAccesses.cs:5:25:5:25 | access to parameter o | -| TypeAccesses.cs:5:25:5:25 | access to parameter o | TypeAccesses.cs:5:9:5:26 | ... ...; | -| TypeAccesses.cs:6:9:6:23 | ... = ... | TypeAccesses.cs:6:13:6:23 | ... as ... | -| TypeAccesses.cs:6:9:6:24 | ...; | TypeAccesses.cs:5:13:5:25 | String s = ... | -| TypeAccesses.cs:6:13:6:13 | access to parameter o | TypeAccesses.cs:6:9:6:24 | ...; | +| TypeAccesses.cs:5:17:5:25 | After (...) ... | TypeAccesses.cs:5:17:5:25 | (...) ... | +| TypeAccesses.cs:5:17:5:25 | Before (...) ... | TypeAccesses.cs:5:13:5:13 | access to local variable s | +| TypeAccesses.cs:5:25:5:25 | access to parameter o | TypeAccesses.cs:5:17:5:25 | Before (...) ... | +| TypeAccesses.cs:6:9:6:9 | access to local variable s | TypeAccesses.cs:6:9:6:23 | Before ... = ... | +| TypeAccesses.cs:6:9:6:23 | ... = ... | TypeAccesses.cs:6:13:6:23 | After ... as ... | +| TypeAccesses.cs:6:9:6:23 | After ... = ... | TypeAccesses.cs:6:9:6:23 | ... = ... | +| TypeAccesses.cs:6:9:6:23 | Before ... = ... | TypeAccesses.cs:6:9:6:24 | ...; | +| TypeAccesses.cs:6:9:6:24 | ...; | TypeAccesses.cs:5:9:5:26 | After ... ...; | +| TypeAccesses.cs:6:9:6:24 | After ...; | TypeAccesses.cs:6:9:6:23 | After ... = ... | +| TypeAccesses.cs:6:13:6:13 | access to parameter o | TypeAccesses.cs:6:13:6:23 | Before ... as ... | | TypeAccesses.cs:6:13:6:23 | ... as ... | TypeAccesses.cs:6:13:6:13 | access to parameter o | -| TypeAccesses.cs:7:9:7:25 | if (...) ... | TypeAccesses.cs:6:9:6:23 | ... = ... | -| TypeAccesses.cs:7:13:7:13 | access to parameter o | TypeAccesses.cs:7:9:7:25 | if (...) ... | -| TypeAccesses.cs:7:18:7:22 | Int32 j | TypeAccesses.cs:7:13:7:13 | access to parameter o | -| TypeAccesses.cs:7:25:7:25 | ; | TypeAccesses.cs:7:13:7:22 | [true] ... is ... | -| TypeAccesses.cs:8:9:8:28 | ... ...; | TypeAccesses.cs:7:13:7:22 | [false] ... is ... | -| TypeAccesses.cs:8:9:8:28 | ... ...; | TypeAccesses.cs:7:25:7:25 | ; | +| TypeAccesses.cs:6:13:6:23 | After ... as ... | TypeAccesses.cs:6:13:6:23 | ... as ... | +| TypeAccesses.cs:6:13:6:23 | Before ... as ... | TypeAccesses.cs:6:9:6:9 | access to local variable s | +| TypeAccesses.cs:7:9:7:25 | After if (...) ... | TypeAccesses.cs:7:13:7:22 | After ... is ... [false] | +| TypeAccesses.cs:7:9:7:25 | After if (...) ... | TypeAccesses.cs:7:25:7:25 | ; | +| TypeAccesses.cs:7:9:7:25 | if (...) ... | TypeAccesses.cs:6:9:6:24 | After ...; | +| TypeAccesses.cs:7:13:7:13 | access to parameter o | TypeAccesses.cs:7:13:7:22 | Before ... is ... | +| TypeAccesses.cs:7:13:7:22 | ... is ... | TypeAccesses.cs:7:13:7:13 | access to parameter o | +| TypeAccesses.cs:7:13:7:22 | After ... is ... [true] | TypeAccesses.cs:7:18:7:22 | Int32 j | +| TypeAccesses.cs:7:13:7:22 | Before ... is ... | TypeAccesses.cs:7:9:7:25 | if (...) ... | +| TypeAccesses.cs:7:18:7:22 | Int32 j | TypeAccesses.cs:7:13:7:22 | [MatchTrue] ... is ... | +| TypeAccesses.cs:7:25:7:25 | ; | TypeAccesses.cs:7:13:7:22 | After ... is ... [true] | +| TypeAccesses.cs:8:9:8:28 | ... ...; | TypeAccesses.cs:7:9:7:25 | After if (...) ... | +| TypeAccesses.cs:8:9:8:28 | After ... ...; | TypeAccesses.cs:8:13:8:27 | After Type t = ... | +| TypeAccesses.cs:8:13:8:13 | access to local variable t | TypeAccesses.cs:8:13:8:27 | Before Type t = ... | +| TypeAccesses.cs:8:13:8:27 | After Type t = ... | TypeAccesses.cs:8:13:8:27 | Type t = ... | +| TypeAccesses.cs:8:13:8:27 | Before Type t = ... | TypeAccesses.cs:8:9:8:28 | ... ...; | | TypeAccesses.cs:8:13:8:27 | Type t = ... | TypeAccesses.cs:8:17:8:27 | typeof(...) | -| TypeAccesses.cs:8:17:8:27 | typeof(...) | TypeAccesses.cs:8:9:8:28 | ... ...; | -| VarDecls.cs:3:7:3:14 | call to constructor Object | VarDecls.cs:3:7:3:14 | call to method | +| TypeAccesses.cs:8:17:8:27 | typeof(...) | TypeAccesses.cs:8:13:8:13 | access to local variable t | +| VarDecls.cs:3:7:3:14 | After call to constructor Object | VarDecls.cs:3:7:3:14 | call to constructor Object | +| VarDecls.cs:3:7:3:14 | After call to method | VarDecls.cs:3:7:3:14 | call to method | +| VarDecls.cs:3:7:3:14 | Before call to constructor Object | VarDecls.cs:3:7:3:14 | After call to method | +| VarDecls.cs:3:7:3:14 | Before call to method | VarDecls.cs:3:7:3:14 | Entry | +| VarDecls.cs:3:7:3:14 | Exit | VarDecls.cs:3:7:3:14 | Normal Exit | +| VarDecls.cs:3:7:3:14 | Normal Exit | VarDecls.cs:3:7:3:14 | {...} | +| VarDecls.cs:3:7:3:14 | call to constructor Object | VarDecls.cs:3:7:3:14 | Before call to constructor Object | | VarDecls.cs:3:7:3:14 | call to method | VarDecls.cs:3:7:3:14 | this access | -| VarDecls.cs:3:7:3:14 | exit VarDecls | VarDecls.cs:3:7:3:14 | exit VarDecls (normal) | -| VarDecls.cs:3:7:3:14 | exit VarDecls (normal) | VarDecls.cs:3:7:3:14 | {...} | -| VarDecls.cs:3:7:3:14 | this access | VarDecls.cs:3:7:3:14 | enter VarDecls | -| VarDecls.cs:3:7:3:14 | {...} | VarDecls.cs:3:7:3:14 | call to constructor Object | -| VarDecls.cs:5:18:5:19 | exit M1 | VarDecls.cs:5:18:5:19 | exit M1 (normal) | -| VarDecls.cs:5:18:5:19 | exit M1 (normal) | VarDecls.cs:9:13:9:29 | return ...; | -| VarDecls.cs:6:5:11:5 | {...} | VarDecls.cs:5:18:5:19 | enter M1 | +| VarDecls.cs:3:7:3:14 | this access | VarDecls.cs:3:7:3:14 | Before call to method | +| VarDecls.cs:3:7:3:14 | {...} | VarDecls.cs:3:7:3:14 | After call to constructor Object | +| VarDecls.cs:5:18:5:19 | Exit | VarDecls.cs:5:18:5:19 | Normal Exit | +| VarDecls.cs:5:18:5:19 | Normal Exit | VarDecls.cs:9:13:9:29 | return ...; | +| VarDecls.cs:5:30:5:36 | strings | VarDecls.cs:5:18:5:19 | Entry | +| VarDecls.cs:6:5:11:5 | {...} | VarDecls.cs:5:30:5:36 | strings | | VarDecls.cs:7:9:10:9 | fixed(...) { ... } | VarDecls.cs:6:5:11:5 | {...} | -| VarDecls.cs:7:22:7:36 | Char* c1 = ... | VarDecls.cs:7:27:7:36 | (...) ... | -| VarDecls.cs:7:27:7:33 | access to parameter strings | VarDecls.cs:7:9:10:9 | fixed(...) { ... } | -| VarDecls.cs:7:27:7:36 | (...) ... | VarDecls.cs:7:27:7:36 | access to array element | +| VarDecls.cs:7:22:7:23 | access to local variable c1 | VarDecls.cs:7:22:7:36 | Before Char* c1 = ... | +| VarDecls.cs:7:22:7:36 | After Char* c1 = ... | VarDecls.cs:7:22:7:36 | Char* c1 = ... | +| VarDecls.cs:7:22:7:36 | Before Char* c1 = ... | VarDecls.cs:7:9:10:9 | fixed(...) { ... } | +| VarDecls.cs:7:22:7:36 | Char* c1 = ... | VarDecls.cs:7:27:7:36 | After (...) ... | +| VarDecls.cs:7:27:7:33 | access to parameter strings | VarDecls.cs:7:27:7:36 | Before access to array element | +| VarDecls.cs:7:27:7:36 | (...) ... | VarDecls.cs:7:27:7:36 | After access to array element | +| VarDecls.cs:7:27:7:36 | After (...) ... | VarDecls.cs:7:27:7:36 | (...) ... | +| VarDecls.cs:7:27:7:36 | After access to array element | VarDecls.cs:7:27:7:36 | access to array element | +| VarDecls.cs:7:27:7:36 | Before (...) ... | VarDecls.cs:7:22:7:23 | access to local variable c1 | +| VarDecls.cs:7:27:7:36 | Before access to array element | VarDecls.cs:7:27:7:36 | Before (...) ... | | VarDecls.cs:7:27:7:36 | access to array element | VarDecls.cs:7:35:7:35 | 0 | | VarDecls.cs:7:35:7:35 | 0 | VarDecls.cs:7:27:7:33 | access to parameter strings | -| VarDecls.cs:7:39:7:53 | Char* c2 = ... | VarDecls.cs:7:44:7:53 | (...) ... | -| VarDecls.cs:7:44:7:50 | access to parameter strings | VarDecls.cs:7:22:7:36 | Char* c1 = ... | -| VarDecls.cs:7:44:7:53 | (...) ... | VarDecls.cs:7:44:7:53 | access to array element | +| VarDecls.cs:7:39:7:40 | access to local variable c2 | VarDecls.cs:7:39:7:53 | Before Char* c2 = ... | +| VarDecls.cs:7:39:7:53 | After Char* c2 = ... | VarDecls.cs:7:39:7:53 | Char* c2 = ... | +| VarDecls.cs:7:39:7:53 | Before Char* c2 = ... | VarDecls.cs:7:22:7:36 | After Char* c1 = ... | +| VarDecls.cs:7:39:7:53 | Char* c2 = ... | VarDecls.cs:7:44:7:53 | After (...) ... | +| VarDecls.cs:7:44:7:50 | access to parameter strings | VarDecls.cs:7:44:7:53 | Before access to array element | +| VarDecls.cs:7:44:7:53 | (...) ... | VarDecls.cs:7:44:7:53 | After access to array element | +| VarDecls.cs:7:44:7:53 | After (...) ... | VarDecls.cs:7:44:7:53 | (...) ... | +| VarDecls.cs:7:44:7:53 | After access to array element | VarDecls.cs:7:44:7:53 | access to array element | +| VarDecls.cs:7:44:7:53 | Before (...) ... | VarDecls.cs:7:39:7:40 | access to local variable c2 | +| VarDecls.cs:7:44:7:53 | Before access to array element | VarDecls.cs:7:44:7:53 | Before (...) ... | | VarDecls.cs:7:44:7:53 | access to array element | VarDecls.cs:7:52:7:52 | 1 | | VarDecls.cs:7:52:7:52 | 1 | VarDecls.cs:7:44:7:50 | access to parameter strings | -| VarDecls.cs:8:9:10:9 | {...} | VarDecls.cs:7:39:7:53 | Char* c2 = ... | -| VarDecls.cs:9:13:9:29 | return ...; | VarDecls.cs:9:20:9:28 | (...) ... | +| VarDecls.cs:8:9:10:9 | {...} | VarDecls.cs:7:39:7:53 | After Char* c2 = ... | +| VarDecls.cs:9:13:9:29 | Before return ...; | VarDecls.cs:8:9:10:9 | {...} | +| VarDecls.cs:9:13:9:29 | return ...; | VarDecls.cs:9:20:9:28 | After (...) ... | | VarDecls.cs:9:20:9:28 | (...) ... | VarDecls.cs:9:27:9:28 | access to local variable c1 | -| VarDecls.cs:9:27:9:28 | access to local variable c1 | VarDecls.cs:8:9:10:9 | {...} | -| VarDecls.cs:13:12:13:13 | exit M2 | VarDecls.cs:13:12:13:13 | exit M2 (normal) | -| VarDecls.cs:13:12:13:13 | exit M2 (normal) | VarDecls.cs:16:9:16:23 | return ...; | -| VarDecls.cs:14:5:17:5 | {...} | VarDecls.cs:13:12:13:13 | enter M2 | +| VarDecls.cs:9:20:9:28 | After (...) ... | VarDecls.cs:9:20:9:28 | (...) ... | +| VarDecls.cs:9:20:9:28 | Before (...) ... | VarDecls.cs:9:13:9:29 | Before return ...; | +| VarDecls.cs:9:27:9:28 | access to local variable c1 | VarDecls.cs:9:20:9:28 | Before (...) ... | +| VarDecls.cs:13:12:13:13 | Exit | VarDecls.cs:13:12:13:13 | Normal Exit | +| VarDecls.cs:13:12:13:13 | Normal Exit | VarDecls.cs:16:9:16:23 | return ...; | +| VarDecls.cs:13:22:13:22 | s | VarDecls.cs:13:12:13:13 | Entry | +| VarDecls.cs:14:5:17:5 | {...} | VarDecls.cs:13:22:13:22 | s | | VarDecls.cs:15:9:15:30 | ... ...; | VarDecls.cs:14:5:17:5 | {...} | +| VarDecls.cs:15:9:15:30 | After ... ...; | VarDecls.cs:15:24:15:29 | After String s2 = ... | +| VarDecls.cs:15:16:15:17 | access to local variable s1 | VarDecls.cs:15:16:15:21 | Before String s1 = ... | +| VarDecls.cs:15:16:15:21 | After String s1 = ... | VarDecls.cs:15:16:15:21 | String s1 = ... | +| VarDecls.cs:15:16:15:21 | Before String s1 = ... | VarDecls.cs:15:9:15:30 | ... ...; | | VarDecls.cs:15:16:15:21 | String s1 = ... | VarDecls.cs:15:21:15:21 | access to parameter s | -| VarDecls.cs:15:21:15:21 | access to parameter s | VarDecls.cs:15:9:15:30 | ... ...; | +| VarDecls.cs:15:21:15:21 | access to parameter s | VarDecls.cs:15:16:15:17 | access to local variable s1 | +| VarDecls.cs:15:24:15:25 | access to local variable s2 | VarDecls.cs:15:24:15:29 | Before String s2 = ... | +| VarDecls.cs:15:24:15:29 | After String s2 = ... | VarDecls.cs:15:24:15:29 | String s2 = ... | +| VarDecls.cs:15:24:15:29 | Before String s2 = ... | VarDecls.cs:15:16:15:21 | After String s1 = ... | | VarDecls.cs:15:24:15:29 | String s2 = ... | VarDecls.cs:15:29:15:29 | access to parameter s | -| VarDecls.cs:15:29:15:29 | access to parameter s | VarDecls.cs:15:16:15:21 | String s1 = ... | -| VarDecls.cs:16:9:16:23 | return ...; | VarDecls.cs:16:16:16:22 | ... + ... | -| VarDecls.cs:16:16:16:17 | access to local variable s1 | VarDecls.cs:15:24:15:29 | String s2 = ... | +| VarDecls.cs:15:29:15:29 | access to parameter s | VarDecls.cs:15:24:15:25 | access to local variable s2 | +| VarDecls.cs:16:9:16:23 | Before return ...; | VarDecls.cs:15:9:15:30 | After ... ...; | +| VarDecls.cs:16:9:16:23 | return ...; | VarDecls.cs:16:16:16:22 | After ... + ... | +| VarDecls.cs:16:16:16:17 | access to local variable s1 | VarDecls.cs:16:16:16:22 | Before ... + ... | | VarDecls.cs:16:16:16:22 | ... + ... | VarDecls.cs:16:21:16:22 | access to local variable s2 | +| VarDecls.cs:16:16:16:22 | After ... + ... | VarDecls.cs:16:16:16:22 | ... + ... | +| VarDecls.cs:16:16:16:22 | Before ... + ... | VarDecls.cs:16:9:16:23 | Before return ...; | | VarDecls.cs:16:21:16:22 | access to local variable s2 | VarDecls.cs:16:16:16:17 | access to local variable s1 | -| VarDecls.cs:19:7:19:8 | exit M3 | VarDecls.cs:19:7:19:8 | exit M3 (normal) | -| VarDecls.cs:19:7:19:8 | exit M3 (normal) | VarDecls.cs:25:13:25:29 | return ...; | -| VarDecls.cs:20:5:26:5 | {...} | VarDecls.cs:19:7:19:8 | enter M3 | +| VarDecls.cs:19:7:19:8 | Exit | VarDecls.cs:19:7:19:8 | Normal Exit | +| VarDecls.cs:19:7:19:8 | Normal Exit | VarDecls.cs:25:13:25:29 | return ...; | +| VarDecls.cs:19:15:19:15 | b | VarDecls.cs:19:7:19:8 | Entry | +| VarDecls.cs:20:5:26:5 | {...} | VarDecls.cs:19:15:19:15 | b | +| VarDecls.cs:21:9:22:13 | After using (...) {...} | VarDecls.cs:22:13:22:13 | ; | | VarDecls.cs:21:9:22:13 | using (...) {...} | VarDecls.cs:20:5:26:5 | {...} | -| VarDecls.cs:21:16:21:22 | object creation of type C | VarDecls.cs:21:9:22:13 | using (...) {...} | -| VarDecls.cs:22:13:22:13 | ; | VarDecls.cs:21:16:21:22 | object creation of type C | -| VarDecls.cs:24:9:25:29 | using (...) {...} | VarDecls.cs:22:13:22:13 | ; | -| VarDecls.cs:24:18:24:28 | C x = ... | VarDecls.cs:24:22:24:28 | object creation of type C | -| VarDecls.cs:24:22:24:28 | object creation of type C | VarDecls.cs:24:9:25:29 | using (...) {...} | -| VarDecls.cs:24:31:24:41 | C y = ... | VarDecls.cs:24:35:24:41 | object creation of type C | -| VarDecls.cs:24:35:24:41 | object creation of type C | VarDecls.cs:24:18:24:28 | C x = ... | -| VarDecls.cs:25:13:25:29 | return ...; | VarDecls.cs:25:20:25:28 | ... ? ... : ... | -| VarDecls.cs:25:20:25:20 | access to parameter b | VarDecls.cs:24:31:24:41 | C y = ... | -| VarDecls.cs:25:20:25:28 | ... ? ... : ... | VarDecls.cs:25:24:25:24 | access to local variable x | -| VarDecls.cs:25:20:25:28 | ... ? ... : ... | VarDecls.cs:25:28:25:28 | access to local variable y | -| VarDecls.cs:28:11:28:11 | call to constructor Object | VarDecls.cs:28:11:28:11 | call to method | +| VarDecls.cs:21:16:21:22 | After object creation of type C | VarDecls.cs:21:16:21:22 | object creation of type C | +| VarDecls.cs:21:16:21:22 | Before object creation of type C | VarDecls.cs:21:9:22:13 | using (...) {...} | +| VarDecls.cs:21:16:21:22 | object creation of type C | VarDecls.cs:21:16:21:22 | Before object creation of type C | +| VarDecls.cs:22:13:22:13 | ; | VarDecls.cs:21:16:21:22 | After object creation of type C | +| VarDecls.cs:24:9:25:29 | using (...) {...} | VarDecls.cs:21:9:22:13 | After using (...) {...} | +| VarDecls.cs:24:18:24:18 | access to local variable x | VarDecls.cs:24:18:24:28 | Before C x = ... | +| VarDecls.cs:24:18:24:28 | After C x = ... | VarDecls.cs:24:18:24:28 | C x = ... | +| VarDecls.cs:24:18:24:28 | Before C x = ... | VarDecls.cs:24:9:25:29 | using (...) {...} | +| VarDecls.cs:24:18:24:28 | C x = ... | VarDecls.cs:24:22:24:28 | After object creation of type C | +| VarDecls.cs:24:22:24:28 | After object creation of type C | VarDecls.cs:24:22:24:28 | object creation of type C | +| VarDecls.cs:24:22:24:28 | Before object creation of type C | VarDecls.cs:24:18:24:18 | access to local variable x | +| VarDecls.cs:24:22:24:28 | object creation of type C | VarDecls.cs:24:22:24:28 | Before object creation of type C | +| VarDecls.cs:24:31:24:31 | access to local variable y | VarDecls.cs:24:31:24:41 | Before C y = ... | +| VarDecls.cs:24:31:24:41 | After C y = ... | VarDecls.cs:24:31:24:41 | C y = ... | +| VarDecls.cs:24:31:24:41 | Before C y = ... | VarDecls.cs:24:18:24:28 | After C x = ... | +| VarDecls.cs:24:31:24:41 | C y = ... | VarDecls.cs:24:35:24:41 | After object creation of type C | +| VarDecls.cs:24:35:24:41 | After object creation of type C | VarDecls.cs:24:35:24:41 | object creation of type C | +| VarDecls.cs:24:35:24:41 | Before object creation of type C | VarDecls.cs:24:31:24:31 | access to local variable y | +| VarDecls.cs:24:35:24:41 | object creation of type C | VarDecls.cs:24:35:24:41 | Before object creation of type C | +| VarDecls.cs:25:13:25:29 | Before return ...; | VarDecls.cs:24:31:24:41 | After C y = ... | +| VarDecls.cs:25:13:25:29 | return ...; | VarDecls.cs:25:20:25:28 | After ... ? ... : ... | +| VarDecls.cs:25:20:25:20 | access to parameter b | VarDecls.cs:25:20:25:28 | ... ? ... : ... | +| VarDecls.cs:25:20:25:28 | ... ? ... : ... | VarDecls.cs:25:13:25:29 | Before return ...; | +| VarDecls.cs:25:20:25:28 | After ... ? ... : ... | VarDecls.cs:25:24:25:24 | access to local variable x | +| VarDecls.cs:25:20:25:28 | After ... ? ... : ... | VarDecls.cs:25:28:25:28 | access to local variable y | +| VarDecls.cs:25:24:25:24 | access to local variable x | VarDecls.cs:25:20:25:20 | After access to parameter b [true] | +| VarDecls.cs:25:28:25:28 | access to local variable y | VarDecls.cs:25:20:25:20 | After access to parameter b [false] | +| VarDecls.cs:28:11:28:11 | After call to constructor Object | VarDecls.cs:28:11:28:11 | call to constructor Object | +| VarDecls.cs:28:11:28:11 | After call to method | VarDecls.cs:28:11:28:11 | call to method | +| VarDecls.cs:28:11:28:11 | Before call to constructor Object | VarDecls.cs:28:11:28:11 | After call to method | +| VarDecls.cs:28:11:28:11 | Before call to method | VarDecls.cs:28:11:28:11 | Entry | +| VarDecls.cs:28:11:28:11 | Exit | VarDecls.cs:28:11:28:11 | Normal Exit | +| VarDecls.cs:28:11:28:11 | Normal Exit | VarDecls.cs:28:11:28:11 | {...} | +| VarDecls.cs:28:11:28:11 | call to constructor Object | VarDecls.cs:28:11:28:11 | Before call to constructor Object | | VarDecls.cs:28:11:28:11 | call to method | VarDecls.cs:28:11:28:11 | this access | -| VarDecls.cs:28:11:28:11 | exit C | VarDecls.cs:28:11:28:11 | exit C (normal) | -| VarDecls.cs:28:11:28:11 | exit C (normal) | VarDecls.cs:28:11:28:11 | {...} | -| VarDecls.cs:28:11:28:11 | this access | VarDecls.cs:28:11:28:11 | enter C | -| VarDecls.cs:28:11:28:11 | {...} | VarDecls.cs:28:11:28:11 | call to constructor Object | -| VarDecls.cs:28:41:28:47 | exit Dispose | VarDecls.cs:28:41:28:47 | exit Dispose (normal) | -| VarDecls.cs:28:41:28:47 | exit Dispose (normal) | VarDecls.cs:28:51:28:53 | {...} | -| VarDecls.cs:28:51:28:53 | {...} | VarDecls.cs:28:41:28:47 | enter Dispose | -| cflow.cs:5:17:5:20 | exit Main | cflow.cs:5:17:5:20 | exit Main (normal) | -| cflow.cs:5:17:5:20 | exit Main (normal) | cflow.cs:24:25:24:31 | ... <= ... | -| cflow.cs:6:5:35:5 | {...} | cflow.cs:5:17:5:20 | enter Main | +| VarDecls.cs:28:11:28:11 | this access | VarDecls.cs:28:11:28:11 | Before call to method | +| VarDecls.cs:28:11:28:11 | {...} | VarDecls.cs:28:11:28:11 | After call to constructor Object | +| VarDecls.cs:28:41:28:47 | Exit | VarDecls.cs:28:41:28:47 | Normal Exit | +| VarDecls.cs:28:41:28:47 | Normal Exit | VarDecls.cs:28:51:28:53 | {...} | +| VarDecls.cs:28:51:28:53 | {...} | VarDecls.cs:28:41:28:47 | Entry | +| cflow.cs:5:17:5:20 | Exit | cflow.cs:5:17:5:20 | Normal Exit | +| cflow.cs:5:17:5:20 | Normal Exit | cflow.cs:6:5:35:5 | After {...} | +| cflow.cs:5:31:5:34 | args | cflow.cs:5:17:5:20 | Entry | +| cflow.cs:6:5:35:5 | After {...} | cflow.cs:24:9:34:9 | After for (...;...;...) ... | +| cflow.cs:6:5:35:5 | {...} | cflow.cs:5:31:5:34 | args | | cflow.cs:7:9:7:28 | ... ...; | cflow.cs:6:5:35:5 | {...} | -| cflow.cs:7:13:7:27 | Int32 a = ... | cflow.cs:7:17:7:27 | access to property Length | -| cflow.cs:7:17:7:20 | access to parameter args | cflow.cs:7:9:7:28 | ... ...; | +| cflow.cs:7:9:7:28 | After ... ...; | cflow.cs:7:13:7:27 | After Int32 a = ... | +| cflow.cs:7:13:7:13 | access to local variable a | cflow.cs:7:13:7:27 | Before Int32 a = ... | +| cflow.cs:7:13:7:27 | After Int32 a = ... | cflow.cs:7:13:7:27 | Int32 a = ... | +| cflow.cs:7:13:7:27 | Before Int32 a = ... | cflow.cs:7:9:7:28 | ... ...; | +| cflow.cs:7:13:7:27 | Int32 a = ... | cflow.cs:7:17:7:27 | After access to property Length | +| cflow.cs:7:17:7:20 | access to parameter args | cflow.cs:7:17:7:27 | Before access to property Length | +| cflow.cs:7:17:7:27 | After access to property Length | cflow.cs:7:17:7:27 | access to property Length | +| cflow.cs:7:17:7:27 | Before access to property Length | cflow.cs:7:13:7:13 | access to local variable a | | cflow.cs:7:17:7:27 | access to property Length | cflow.cs:7:17:7:20 | access to parameter args | -| cflow.cs:9:9:9:39 | ... = ... | cflow.cs:9:13:9:39 | call to method Switch | -| cflow.cs:9:9:9:40 | ...; | cflow.cs:7:13:7:27 | Int32 a = ... | -| cflow.cs:9:13:9:29 | object creation of type ControlFlow | cflow.cs:9:9:9:40 | ...; | +| cflow.cs:9:9:9:9 | access to local variable a | cflow.cs:9:9:9:39 | Before ... = ... | +| cflow.cs:9:9:9:39 | ... = ... | cflow.cs:9:13:9:39 | After call to method Switch | +| cflow.cs:9:9:9:39 | After ... = ... | cflow.cs:9:9:9:39 | ... = ... | +| cflow.cs:9:9:9:39 | Before ... = ... | cflow.cs:9:9:9:40 | ...; | +| cflow.cs:9:9:9:40 | ...; | cflow.cs:7:9:7:28 | After ... ...; | +| cflow.cs:9:9:9:40 | After ...; | cflow.cs:9:9:9:39 | After ... = ... | +| cflow.cs:9:13:9:29 | After object creation of type ControlFlow | cflow.cs:9:13:9:29 | object creation of type ControlFlow | +| cflow.cs:9:13:9:29 | Before object creation of type ControlFlow | cflow.cs:9:13:9:39 | Before call to method Switch | +| cflow.cs:9:13:9:29 | object creation of type ControlFlow | cflow.cs:9:13:9:29 | Before object creation of type ControlFlow | +| cflow.cs:9:13:9:39 | After call to method Switch | cflow.cs:9:13:9:39 | call to method Switch | +| cflow.cs:9:13:9:39 | Before call to method Switch | cflow.cs:9:9:9:9 | access to local variable a | | cflow.cs:9:13:9:39 | call to method Switch | cflow.cs:9:38:9:38 | access to local variable a | -| cflow.cs:9:38:9:38 | access to local variable a | cflow.cs:9:13:9:29 | object creation of type ControlFlow | -| cflow.cs:11:9:12:49 | if (...) ... | cflow.cs:9:9:9:39 | ... = ... | -| cflow.cs:11:13:11:13 | access to local variable a | cflow.cs:11:9:12:49 | if (...) ... | +| cflow.cs:9:38:9:38 | access to local variable a | cflow.cs:9:13:9:29 | After object creation of type ControlFlow | +| cflow.cs:11:9:12:49 | After if (...) ... | cflow.cs:11:13:11:17 | After ... > ... [false] | +| cflow.cs:11:9:12:49 | After if (...) ... | cflow.cs:12:13:12:49 | After ...; | +| cflow.cs:11:9:12:49 | if (...) ... | cflow.cs:9:9:9:40 | After ...; | +| cflow.cs:11:13:11:13 | access to local variable a | cflow.cs:11:13:11:17 | Before ... > ... | | cflow.cs:11:13:11:17 | ... > ... | cflow.cs:11:17:11:17 | 3 | +| cflow.cs:11:13:11:17 | Before ... > ... | cflow.cs:11:9:12:49 | if (...) ... | | cflow.cs:11:17:11:17 | 3 | cflow.cs:11:13:11:13 | access to local variable a | +| cflow.cs:12:13:12:48 | After call to method WriteLine | cflow.cs:12:13:12:48 | call to method WriteLine | +| cflow.cs:12:13:12:48 | Before call to method WriteLine | cflow.cs:12:13:12:49 | ...; | | cflow.cs:12:13:12:48 | call to method WriteLine | cflow.cs:12:31:12:47 | "more than a few" | -| cflow.cs:12:31:12:47 | "more than a few" | cflow.cs:12:13:12:49 | ...; | -| cflow.cs:14:9:17:9 | while (...) ... | cflow.cs:11:13:11:17 | ... > ... | -| cflow.cs:14:9:17:9 | while (...) ... | cflow.cs:12:13:12:48 | call to method WriteLine | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:14:9:17:9 | while (...) ... | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:16:13:16:40 | call to method WriteLine | +| cflow.cs:12:13:12:49 | ...; | cflow.cs:11:13:11:17 | After ... > ... [true] | +| cflow.cs:12:13:12:49 | After ...; | cflow.cs:12:13:12:48 | After call to method WriteLine | +| cflow.cs:12:31:12:47 | "more than a few" | cflow.cs:12:13:12:48 | Before call to method WriteLine | +| cflow.cs:14:9:17:9 | After while (...) ... | cflow.cs:14:16:14:20 | After ... > ... [false] | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:14:9:17:9 | while (...) ... | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:15:9:17:9 | After {...} | +| cflow.cs:14:9:17:9 | while (...) ... | cflow.cs:11:9:12:49 | After if (...) ... | +| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:14:16:14:20 | Before ... > ... | | cflow.cs:14:16:14:20 | ... > ... | cflow.cs:14:20:14:20 | 0 | +| cflow.cs:14:16:14:20 | After ... > ... [false] | cflow.cs:14:16:14:20 | ... > ... | +| cflow.cs:14:16:14:20 | Before ... > ... | cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | | cflow.cs:14:20:14:20 | 0 | cflow.cs:14:16:14:16 | access to local variable a | -| cflow.cs:16:13:16:40 | call to method WriteLine | cflow.cs:16:31:16:39 | ... * ... | +| cflow.cs:15:9:17:9 | After {...} | cflow.cs:16:13:16:41 | After ...; | +| cflow.cs:15:9:17:9 | {...} | cflow.cs:14:16:14:20 | After ... > ... [true] | +| cflow.cs:16:13:16:40 | After call to method WriteLine | cflow.cs:16:13:16:40 | call to method WriteLine | +| cflow.cs:16:13:16:40 | Before call to method WriteLine | cflow.cs:16:13:16:41 | ...; | +| cflow.cs:16:13:16:40 | call to method WriteLine | cflow.cs:16:31:16:39 | After ... * ... | | cflow.cs:16:13:16:41 | ...; | cflow.cs:15:9:17:9 | {...} | -| cflow.cs:16:31:16:31 | access to local variable a | cflow.cs:16:13:16:41 | ...; | +| cflow.cs:16:13:16:41 | After ...; | cflow.cs:16:13:16:40 | After call to method WriteLine | +| cflow.cs:16:31:16:31 | access to local variable a | cflow.cs:16:31:16:33 | Before ...-- | | cflow.cs:16:31:16:33 | ...-- | cflow.cs:16:31:16:31 | access to local variable a | +| cflow.cs:16:31:16:33 | After ...-- | cflow.cs:16:31:16:33 | ...-- | +| cflow.cs:16:31:16:33 | Before ...-- | cflow.cs:16:31:16:39 | Before ... * ... | | cflow.cs:16:31:16:39 | ... * ... | cflow.cs:16:37:16:39 | 100 | -| cflow.cs:16:37:16:39 | 100 | cflow.cs:16:31:16:33 | ...-- | -| cflow.cs:19:9:22:25 | do ... while (...); | cflow.cs:14:16:14:20 | ... > ... | +| cflow.cs:16:31:16:39 | After ... * ... | cflow.cs:16:31:16:39 | ... * ... | +| cflow.cs:16:31:16:39 | Before ... * ... | cflow.cs:16:13:16:40 | Before call to method WriteLine | +| cflow.cs:16:37:16:39 | 100 | cflow.cs:16:31:16:33 | After ...-- | +| cflow.cs:19:9:22:25 | After do ... while (...); | cflow.cs:22:18:22:23 | After ... < ... [false] | +| cflow.cs:19:9:22:25 | [LoopHeader] do ... while (...); | cflow.cs:20:9:22:9 | After {...} | +| cflow.cs:19:9:22:25 | do ... while (...); | cflow.cs:14:9:17:9 | After while (...) ... | +| cflow.cs:20:9:22:9 | After {...} | cflow.cs:21:13:21:36 | After ...; | | cflow.cs:20:9:22:9 | {...} | cflow.cs:19:9:22:25 | do ... while (...); | -| cflow.cs:21:13:21:35 | call to method WriteLine | cflow.cs:21:31:21:34 | -... | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:22:18:22:23 | After ... < ... [true] | +| cflow.cs:21:13:21:35 | After call to method WriteLine | cflow.cs:21:13:21:35 | call to method WriteLine | +| cflow.cs:21:13:21:35 | Before call to method WriteLine | cflow.cs:21:13:21:36 | ...; | +| cflow.cs:21:13:21:35 | call to method WriteLine | cflow.cs:21:31:21:34 | After -... | | cflow.cs:21:13:21:36 | ...; | cflow.cs:20:9:22:9 | {...} | -| cflow.cs:21:31:21:34 | -... | cflow.cs:21:32:21:34 | ...++ | -| cflow.cs:21:32:21:32 | access to local variable a | cflow.cs:21:13:21:36 | ...; | +| cflow.cs:21:13:21:36 | After ...; | cflow.cs:21:13:21:35 | After call to method WriteLine | +| cflow.cs:21:31:21:34 | -... | cflow.cs:21:32:21:34 | After ...++ | +| cflow.cs:21:31:21:34 | After -... | cflow.cs:21:31:21:34 | -... | +| cflow.cs:21:31:21:34 | Before -... | cflow.cs:21:13:21:35 | Before call to method WriteLine | +| cflow.cs:21:32:21:32 | access to local variable a | cflow.cs:21:32:21:34 | Before ...++ | | cflow.cs:21:32:21:34 | ...++ | cflow.cs:21:32:21:32 | access to local variable a | -| cflow.cs:22:18:22:18 | access to local variable a | cflow.cs:21:13:21:35 | call to method WriteLine | +| cflow.cs:21:32:21:34 | After ...++ | cflow.cs:21:32:21:34 | ...++ | +| cflow.cs:21:32:21:34 | Before ...++ | cflow.cs:21:31:21:34 | Before -... | +| cflow.cs:22:18:22:18 | access to local variable a | cflow.cs:22:18:22:23 | Before ... < ... | | cflow.cs:22:18:22:23 | ... < ... | cflow.cs:22:22:22:23 | 10 | +| cflow.cs:22:18:22:23 | After ... < ... [false] | cflow.cs:22:18:22:23 | ... < ... | +| cflow.cs:22:18:22:23 | Before ... < ... | cflow.cs:19:9:22:25 | [LoopHeader] do ... while (...); | | cflow.cs:22:22:22:23 | 10 | cflow.cs:22:18:22:18 | access to local variable a | -| cflow.cs:24:9:34:9 | for (...;...;...) ... | cflow.cs:22:18:22:23 | ... < ... | +| cflow.cs:24:9:34:9 | After for (...;...;...) ... | cflow.cs:24:25:24:31 | After ... <= ... [false] | +| cflow.cs:24:9:34:9 | [LoopHeader] for (...;...;...) ... | cflow.cs:25:9:34:9 | After {...} | +| cflow.cs:24:9:34:9 | for (...;...;...) ... | cflow.cs:19:9:22:25 | After do ... while (...); | +| cflow.cs:24:18:24:18 | access to local variable i | cflow.cs:24:18:24:22 | Before Int32 i = ... | +| cflow.cs:24:18:24:22 | After Int32 i = ... | cflow.cs:24:18:24:22 | Int32 i = ... | +| cflow.cs:24:18:24:22 | Before Int32 i = ... | cflow.cs:24:9:34:9 | for (...;...;...) ... | | cflow.cs:24:18:24:22 | Int32 i = ... | cflow.cs:24:22:24:22 | 1 | -| cflow.cs:24:22:24:22 | 1 | cflow.cs:24:9:34:9 | for (...;...;...) ... | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:24:18:24:22 | Int32 i = ... | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:24:34:24:36 | ...++ | +| cflow.cs:24:22:24:22 | 1 | cflow.cs:24:18:24:18 | access to local variable i | +| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:24:25:24:31 | Before ... <= ... | | cflow.cs:24:25:24:31 | ... <= ... | cflow.cs:24:30:24:31 | 20 | +| cflow.cs:24:25:24:31 | After ... <= ... [false] | cflow.cs:24:25:24:31 | ... <= ... | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:24:18:24:22 | After Int32 i = ... | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:24:34:24:36 | After ...++ | | cflow.cs:24:30:24:31 | 20 | cflow.cs:24:25:24:25 | access to local variable i | -| cflow.cs:24:34:24:34 | access to local variable i | cflow.cs:27:17:27:45 | call to method WriteLine | -| cflow.cs:24:34:24:34 | access to local variable i | cflow.cs:29:17:29:41 | call to method WriteLine | -| cflow.cs:24:34:24:34 | access to local variable i | cflow.cs:31:17:31:41 | call to method WriteLine | -| cflow.cs:24:34:24:34 | access to local variable i | cflow.cs:33:17:33:36 | call to method WriteLine | +| cflow.cs:24:34:24:34 | access to local variable i | cflow.cs:24:34:24:36 | Before ...++ | | cflow.cs:24:34:24:36 | ...++ | cflow.cs:24:34:24:34 | access to local variable i | +| cflow.cs:24:34:24:36 | After ...++ | cflow.cs:24:34:24:36 | ...++ | +| cflow.cs:24:34:24:36 | Before ...++ | cflow.cs:24:9:34:9 | [LoopHeader] for (...;...;...) ... | +| cflow.cs:25:9:34:9 | After {...} | cflow.cs:26:13:33:37 | After if (...) ... | +| cflow.cs:25:9:34:9 | {...} | cflow.cs:24:25:24:31 | After ... <= ... [true] | +| cflow.cs:26:13:33:37 | After if (...) ... | cflow.cs:27:17:27:46 | After ...; | +| cflow.cs:26:13:33:37 | After if (...) ... | cflow.cs:28:18:33:37 | After if (...) ... | | cflow.cs:26:13:33:37 | if (...) ... | cflow.cs:25:9:34:9 | {...} | -| cflow.cs:26:17:26:17 | access to local variable i | cflow.cs:26:13:33:37 | if (...) ... | +| cflow.cs:26:17:26:17 | access to local variable i | cflow.cs:26:17:26:21 | Before ... % ... | | cflow.cs:26:17:26:21 | ... % ... | cflow.cs:26:21:26:21 | 3 | +| cflow.cs:26:17:26:21 | After ... % ... | cflow.cs:26:17:26:21 | ... % ... | +| cflow.cs:26:17:26:21 | Before ... % ... | cflow.cs:26:17:26:26 | Before ... == ... | | cflow.cs:26:17:26:26 | ... == ... | cflow.cs:26:26:26:26 | 0 | +| cflow.cs:26:17:26:26 | Before ... == ... | cflow.cs:26:17:26:40 | ... && ... | +| cflow.cs:26:17:26:40 | ... && ... | cflow.cs:26:13:33:37 | if (...) ... | +| cflow.cs:26:17:26:40 | After ... && ... [false] | cflow.cs:26:17:26:26 | After ... == ... [false] | +| cflow.cs:26:17:26:40 | After ... && ... [false] | cflow.cs:26:31:26:40 | After ... == ... [false] | +| cflow.cs:26:17:26:40 | After ... && ... [true] | cflow.cs:26:31:26:40 | After ... == ... [true] | | cflow.cs:26:21:26:21 | 3 | cflow.cs:26:17:26:17 | access to local variable i | -| cflow.cs:26:26:26:26 | 0 | cflow.cs:26:17:26:21 | ... % ... | +| cflow.cs:26:26:26:26 | 0 | cflow.cs:26:17:26:21 | After ... % ... | +| cflow.cs:26:31:26:31 | access to local variable i | cflow.cs:26:31:26:35 | Before ... % ... | | cflow.cs:26:31:26:35 | ... % ... | cflow.cs:26:35:26:35 | 5 | +| cflow.cs:26:31:26:35 | After ... % ... | cflow.cs:26:31:26:35 | ... % ... | +| cflow.cs:26:31:26:35 | Before ... % ... | cflow.cs:26:31:26:40 | Before ... == ... | | cflow.cs:26:31:26:40 | ... == ... | cflow.cs:26:40:26:40 | 0 | +| cflow.cs:26:31:26:40 | Before ... == ... | cflow.cs:26:17:26:26 | After ... == ... [true] | | cflow.cs:26:35:26:35 | 5 | cflow.cs:26:31:26:31 | access to local variable i | -| cflow.cs:26:40:26:40 | 0 | cflow.cs:26:31:26:35 | ... % ... | +| cflow.cs:26:40:26:40 | 0 | cflow.cs:26:31:26:35 | After ... % ... | +| cflow.cs:27:17:27:45 | After call to method WriteLine | cflow.cs:27:17:27:45 | call to method WriteLine | +| cflow.cs:27:17:27:45 | Before call to method WriteLine | cflow.cs:27:17:27:46 | ...; | | cflow.cs:27:17:27:45 | call to method WriteLine | cflow.cs:27:35:27:44 | "FizzBuzz" | -| cflow.cs:27:17:27:46 | ...; | cflow.cs:26:17:26:40 | [true] ... && ... | -| cflow.cs:27:35:27:44 | "FizzBuzz" | cflow.cs:27:17:27:46 | ...; | -| cflow.cs:28:18:33:37 | if (...) ... | cflow.cs:26:17:26:40 | [false] ... && ... | -| cflow.cs:28:22:28:22 | access to local variable i | cflow.cs:28:18:33:37 | if (...) ... | +| cflow.cs:27:17:27:46 | ...; | cflow.cs:26:17:26:40 | After ... && ... [true] | +| cflow.cs:27:17:27:46 | After ...; | cflow.cs:27:17:27:45 | After call to method WriteLine | +| cflow.cs:27:35:27:44 | "FizzBuzz" | cflow.cs:27:17:27:45 | Before call to method WriteLine | +| cflow.cs:28:18:33:37 | After if (...) ... | cflow.cs:29:17:29:42 | After ...; | +| cflow.cs:28:18:33:37 | After if (...) ... | cflow.cs:30:18:33:37 | After if (...) ... | +| cflow.cs:28:18:33:37 | if (...) ... | cflow.cs:26:17:26:40 | After ... && ... [false] | +| cflow.cs:28:22:28:22 | access to local variable i | cflow.cs:28:22:28:26 | Before ... % ... | | cflow.cs:28:22:28:26 | ... % ... | cflow.cs:28:26:28:26 | 3 | +| cflow.cs:28:22:28:26 | After ... % ... | cflow.cs:28:22:28:26 | ... % ... | +| cflow.cs:28:22:28:26 | Before ... % ... | cflow.cs:28:22:28:31 | Before ... == ... | | cflow.cs:28:22:28:31 | ... == ... | cflow.cs:28:31:28:31 | 0 | +| cflow.cs:28:22:28:31 | Before ... == ... | cflow.cs:28:18:33:37 | if (...) ... | | cflow.cs:28:26:28:26 | 3 | cflow.cs:28:22:28:22 | access to local variable i | -| cflow.cs:28:31:28:31 | 0 | cflow.cs:28:22:28:26 | ... % ... | +| cflow.cs:28:31:28:31 | 0 | cflow.cs:28:22:28:26 | After ... % ... | +| cflow.cs:29:17:29:41 | After call to method WriteLine | cflow.cs:29:17:29:41 | call to method WriteLine | +| cflow.cs:29:17:29:41 | Before call to method WriteLine | cflow.cs:29:17:29:42 | ...; | | cflow.cs:29:17:29:41 | call to method WriteLine | cflow.cs:29:35:29:40 | "Fizz" | -| cflow.cs:29:35:29:40 | "Fizz" | cflow.cs:29:17:29:42 | ...; | -| cflow.cs:30:22:30:22 | access to local variable i | cflow.cs:30:18:33:37 | if (...) ... | +| cflow.cs:29:17:29:42 | ...; | cflow.cs:28:22:28:31 | After ... == ... [true] | +| cflow.cs:29:17:29:42 | After ...; | cflow.cs:29:17:29:41 | After call to method WriteLine | +| cflow.cs:29:35:29:40 | "Fizz" | cflow.cs:29:17:29:41 | Before call to method WriteLine | +| cflow.cs:30:18:33:37 | After if (...) ... | cflow.cs:31:17:31:42 | After ...; | +| cflow.cs:30:18:33:37 | After if (...) ... | cflow.cs:33:17:33:37 | After ...; | +| cflow.cs:30:18:33:37 | if (...) ... | cflow.cs:28:22:28:31 | After ... == ... [false] | +| cflow.cs:30:22:30:22 | access to local variable i | cflow.cs:30:22:30:26 | Before ... % ... | | cflow.cs:30:22:30:26 | ... % ... | cflow.cs:30:26:30:26 | 5 | +| cflow.cs:30:22:30:26 | After ... % ... | cflow.cs:30:22:30:26 | ... % ... | +| cflow.cs:30:22:30:26 | Before ... % ... | cflow.cs:30:22:30:31 | Before ... == ... | | cflow.cs:30:22:30:31 | ... == ... | cflow.cs:30:31:30:31 | 0 | +| cflow.cs:30:22:30:31 | Before ... == ... | cflow.cs:30:18:33:37 | if (...) ... | | cflow.cs:30:26:30:26 | 5 | cflow.cs:30:22:30:22 | access to local variable i | -| cflow.cs:30:31:30:31 | 0 | cflow.cs:30:22:30:26 | ... % ... | +| cflow.cs:30:31:30:31 | 0 | cflow.cs:30:22:30:26 | After ... % ... | +| cflow.cs:31:17:31:41 | After call to method WriteLine | cflow.cs:31:17:31:41 | call to method WriteLine | +| cflow.cs:31:17:31:41 | Before call to method WriteLine | cflow.cs:31:17:31:42 | ...; | | cflow.cs:31:17:31:41 | call to method WriteLine | cflow.cs:31:35:31:40 | "Buzz" | -| cflow.cs:31:35:31:40 | "Buzz" | cflow.cs:31:17:31:42 | ...; | +| cflow.cs:31:17:31:42 | ...; | cflow.cs:30:22:30:31 | After ... == ... [true] | +| cflow.cs:31:17:31:42 | After ...; | cflow.cs:31:17:31:41 | After call to method WriteLine | +| cflow.cs:31:35:31:40 | "Buzz" | cflow.cs:31:17:31:41 | Before call to method WriteLine | +| cflow.cs:33:17:33:36 | After call to method WriteLine | cflow.cs:33:17:33:36 | call to method WriteLine | +| cflow.cs:33:17:33:36 | Before call to method WriteLine | cflow.cs:33:17:33:37 | ...; | | cflow.cs:33:17:33:36 | call to method WriteLine | cflow.cs:33:35:33:35 | access to local variable i | -| cflow.cs:33:35:33:35 | access to local variable i | cflow.cs:33:17:33:37 | ...; | -| cflow.cs:37:17:37:22 | exit Switch (abnormal) | cflow.cs:64:21:64:55 | throw ...; | -| cflow.cs:37:17:37:22 | exit Switch (normal) | cflow.cs:67:9:67:17 | return ...; | -| cflow.cs:38:5:68:5 | {...} | cflow.cs:37:17:37:22 | enter Switch | +| cflow.cs:33:17:33:37 | ...; | cflow.cs:30:22:30:31 | After ... == ... [false] | +| cflow.cs:33:17:33:37 | After ...; | cflow.cs:33:17:33:36 | After call to method WriteLine | +| cflow.cs:33:35:33:35 | access to local variable i | cflow.cs:33:17:33:36 | Before call to method WriteLine | +| cflow.cs:37:17:37:22 | Exceptional Exit | cflow.cs:64:21:64:55 | throw ...; | +| cflow.cs:37:17:37:22 | Normal Exit | cflow.cs:67:9:67:17 | return ...; | +| cflow.cs:37:28:37:28 | a | cflow.cs:37:17:37:22 | Entry | +| cflow.cs:38:5:68:5 | {...} | cflow.cs:37:28:37:28 | a | +| cflow.cs:39:9:50:9 | After switch (...) {...} | cflow.cs:47:13:47:19 | After case ...: [no-match] | +| cflow.cs:39:9:50:9 | After switch (...) {...} | cflow.cs:49:17:49:22 | break; | | cflow.cs:39:9:50:9 | switch (...) {...} | cflow.cs:38:5:68:5 | {...} | | cflow.cs:39:17:39:17 | access to parameter a | cflow.cs:39:9:50:9 | switch (...) {...} | +| cflow.cs:41:13:41:19 | After case ...: [no-match] | cflow.cs:41:18:41:18 | After 1 [no-match] | | cflow.cs:41:13:41:19 | case ...: | cflow.cs:39:17:39:17 | access to parameter a | -| cflow.cs:41:13:41:19 | case ...: | cflow.cs:46:17:46:28 | goto case ...; | | cflow.cs:41:18:41:18 | 1 | cflow.cs:41:13:41:19 | case ...: | +| cflow.cs:41:18:41:18 | After 1 [no-match] | cflow.cs:41:18:41:18 | 1 | +| cflow.cs:42:17:42:38 | After call to method WriteLine | cflow.cs:42:17:42:38 | call to method WriteLine | +| cflow.cs:42:17:42:38 | Before call to method WriteLine | cflow.cs:42:17:42:39 | ...; | | cflow.cs:42:17:42:38 | call to method WriteLine | cflow.cs:42:35:42:37 | "1" | -| cflow.cs:42:35:42:37 | "1" | cflow.cs:42:17:42:39 | ...; | +| cflow.cs:42:17:42:39 | ...; | cflow.cs:41:13:41:19 | After case ...: [match] | +| cflow.cs:42:17:42:39 | After ...; | cflow.cs:42:17:42:38 | After call to method WriteLine | +| cflow.cs:42:35:42:37 | "1" | cflow.cs:42:17:42:38 | Before call to method WriteLine | +| cflow.cs:43:17:43:28 | Before goto case ...; | cflow.cs:42:17:42:39 | After ...; | | cflow.cs:43:17:43:28 | goto case ...; | cflow.cs:43:27:43:27 | 2 | -| cflow.cs:43:27:43:27 | 2 | cflow.cs:42:17:42:38 | call to method WriteLine | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:41:18:41:18 | 1 | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:43:17:43:28 | goto case ...; | +| cflow.cs:43:27:43:27 | 2 | cflow.cs:43:17:43:28 | Before goto case ...; | +| cflow.cs:44:13:44:19 | After case ...: [no-match] | cflow.cs:44:18:44:18 | After 2 [no-match] | +| cflow.cs:44:13:44:19 | case ...: | cflow.cs:41:13:41:19 | After case ...: [no-match] | | cflow.cs:44:18:44:18 | 2 | cflow.cs:44:13:44:19 | case ...: | +| cflow.cs:44:18:44:18 | After 2 [no-match] | cflow.cs:44:18:44:18 | 2 | +| cflow.cs:45:17:45:38 | After call to method WriteLine | cflow.cs:45:17:45:38 | call to method WriteLine | +| cflow.cs:45:17:45:38 | Before call to method WriteLine | cflow.cs:45:17:45:39 | ...; | | cflow.cs:45:17:45:38 | call to method WriteLine | cflow.cs:45:35:45:37 | "2" | -| cflow.cs:45:35:45:37 | "2" | cflow.cs:45:17:45:39 | ...; | +| cflow.cs:45:17:45:39 | ...; | cflow.cs:44:13:44:19 | After case ...: [match] | +| cflow.cs:45:17:45:39 | After ...; | cflow.cs:45:17:45:38 | After call to method WriteLine | +| cflow.cs:45:35:45:37 | "2" | cflow.cs:45:17:45:38 | Before call to method WriteLine | +| cflow.cs:46:17:46:28 | Before goto case ...; | cflow.cs:45:17:45:39 | After ...; | | cflow.cs:46:17:46:28 | goto case ...; | cflow.cs:46:27:46:27 | 1 | -| cflow.cs:46:27:46:27 | 1 | cflow.cs:45:17:45:38 | call to method WriteLine | -| cflow.cs:47:13:47:19 | case ...: | cflow.cs:44:18:44:18 | 2 | +| cflow.cs:46:27:46:27 | 1 | cflow.cs:46:17:46:28 | Before goto case ...; | +| cflow.cs:47:13:47:19 | After case ...: [match] | cflow.cs:47:18:47:18 | After 3 [match] | +| cflow.cs:47:13:47:19 | After case ...: [no-match] | cflow.cs:47:18:47:18 | After 3 [no-match] | +| cflow.cs:47:13:47:19 | case ...: | cflow.cs:44:13:44:19 | After case ...: [no-match] | | cflow.cs:47:18:47:18 | 3 | cflow.cs:47:13:47:19 | case ...: | +| cflow.cs:48:17:48:38 | After call to method WriteLine | cflow.cs:48:17:48:38 | call to method WriteLine | +| cflow.cs:48:17:48:38 | Before call to method WriteLine | cflow.cs:48:17:48:39 | ...; | | cflow.cs:48:17:48:38 | call to method WriteLine | cflow.cs:48:35:48:37 | "3" | -| cflow.cs:48:35:48:37 | "3" | cflow.cs:48:17:48:39 | ...; | -| cflow.cs:49:17:49:22 | break; | cflow.cs:48:17:48:38 | call to method WriteLine | -| cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:47:18:47:18 | 3 | -| cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:49:17:49:22 | break; | +| cflow.cs:48:17:48:39 | ...; | cflow.cs:47:13:47:19 | After case ...: [match] | +| cflow.cs:48:17:48:39 | After ...; | cflow.cs:48:17:48:38 | After call to method WriteLine | +| cflow.cs:48:35:48:37 | "3" | cflow.cs:48:17:48:38 | Before call to method WriteLine | +| cflow.cs:49:17:49:22 | Before break; | cflow.cs:48:17:48:39 | After ...; | +| cflow.cs:49:17:49:22 | break; | cflow.cs:49:17:49:22 | Before break; | +| cflow.cs:51:9:59:9 | After switch (...) {...} | cflow.cs:55:17:55:22 | break; | +| cflow.cs:51:9:59:9 | After switch (...) {...} | cflow.cs:58:17:58:22 | break; | +| cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:39:9:50:9 | After switch (...) {...} | | cflow.cs:51:17:51:17 | access to parameter a | cflow.cs:51:9:59:9 | switch (...) {...} | +| cflow.cs:53:13:53:20 | After case ...: [match] | cflow.cs:53:18:53:19 | After 42 [match] | +| cflow.cs:53:13:53:20 | After case ...: [no-match] | cflow.cs:53:18:53:19 | After 42 [no-match] | | cflow.cs:53:13:53:20 | case ...: | cflow.cs:51:17:51:17 | access to parameter a | | cflow.cs:53:18:53:19 | 42 | cflow.cs:53:13:53:20 | case ...: | +| cflow.cs:54:17:54:47 | After call to method WriteLine | cflow.cs:54:17:54:47 | call to method WriteLine | +| cflow.cs:54:17:54:47 | Before call to method WriteLine | cflow.cs:54:17:54:48 | ...; | | cflow.cs:54:17:54:47 | call to method WriteLine | cflow.cs:54:35:54:46 | "The answer" | -| cflow.cs:54:35:54:46 | "The answer" | cflow.cs:54:17:54:48 | ...; | -| cflow.cs:55:17:55:22 | break; | cflow.cs:54:17:54:47 | call to method WriteLine | +| cflow.cs:54:17:54:48 | ...; | cflow.cs:53:13:53:20 | After case ...: [match] | +| cflow.cs:54:17:54:48 | After ...; | cflow.cs:54:17:54:47 | After call to method WriteLine | +| cflow.cs:54:35:54:46 | "The answer" | cflow.cs:54:17:54:47 | Before call to method WriteLine | +| cflow.cs:55:17:55:22 | Before break; | cflow.cs:54:17:54:48 | After ...; | +| cflow.cs:55:17:55:22 | break; | cflow.cs:55:17:55:22 | Before break; | +| cflow.cs:56:13:56:20 | After default: [match] | cflow.cs:56:13:56:20 | default: | +| cflow.cs:56:13:56:20 | default: | cflow.cs:53:13:53:20 | After case ...: [no-match] | +| cflow.cs:57:17:57:51 | After call to method WriteLine | cflow.cs:57:17:57:51 | call to method WriteLine | +| cflow.cs:57:17:57:51 | Before call to method WriteLine | cflow.cs:57:17:57:52 | ...; | | cflow.cs:57:17:57:51 | call to method WriteLine | cflow.cs:57:35:57:50 | "Not the answer" | -| cflow.cs:57:17:57:52 | ...; | cflow.cs:56:13:56:20 | default: | -| cflow.cs:57:35:57:50 | "Not the answer" | cflow.cs:57:17:57:52 | ...; | -| cflow.cs:58:17:58:22 | break; | cflow.cs:57:17:57:51 | call to method WriteLine | -| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:55:17:55:22 | break; | -| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:58:17:58:22 | break; | -| cflow.cs:60:17:60:32 | call to method Parse | cflow.cs:60:27:60:31 | access to field Field | +| cflow.cs:57:17:57:52 | ...; | cflow.cs:56:13:56:20 | After default: [match] | +| cflow.cs:57:17:57:52 | After ...; | cflow.cs:57:17:57:51 | After call to method WriteLine | +| cflow.cs:57:35:57:50 | "Not the answer" | cflow.cs:57:17:57:51 | Before call to method WriteLine | +| cflow.cs:58:17:58:22 | Before break; | cflow.cs:57:17:57:52 | After ...; | +| cflow.cs:58:17:58:22 | break; | cflow.cs:58:17:58:22 | Before break; | +| cflow.cs:60:9:66:9 | After switch (...) {...} | cflow.cs:62:13:62:19 | After case ...: [no-match] | +| cflow.cs:60:9:66:9 | After switch (...) {...} | cflow.cs:65:17:65:22 | break; | +| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:51:9:59:9 | After switch (...) {...} | +| cflow.cs:60:17:60:32 | After call to method Parse | cflow.cs:60:17:60:32 | call to method Parse | +| cflow.cs:60:17:60:32 | Before call to method Parse | cflow.cs:60:9:66:9 | switch (...) {...} | +| cflow.cs:60:17:60:32 | call to method Parse | cflow.cs:60:27:60:31 | After access to field Field | +| cflow.cs:60:27:60:31 | After access to field Field | cflow.cs:60:27:60:31 | access to field Field | +| cflow.cs:60:27:60:31 | Before access to field Field | cflow.cs:60:17:60:32 | Before call to method Parse | | cflow.cs:60:27:60:31 | access to field Field | cflow.cs:60:27:60:31 | this access | -| cflow.cs:60:27:60:31 | this access | cflow.cs:60:9:66:9 | switch (...) {...} | -| cflow.cs:62:13:62:19 | case ...: | cflow.cs:60:17:60:32 | call to method Parse | +| cflow.cs:60:27:60:31 | this access | cflow.cs:60:27:60:31 | Before access to field Field | +| cflow.cs:62:13:62:19 | After case ...: [match] | cflow.cs:62:18:62:18 | After 0 [match] | +| cflow.cs:62:13:62:19 | After case ...: [no-match] | cflow.cs:62:18:62:18 | After 0 [no-match] | +| cflow.cs:62:13:62:19 | case ...: | cflow.cs:60:17:60:32 | After call to method Parse | | cflow.cs:62:18:62:18 | 0 | cflow.cs:62:13:62:19 | case ...: | -| cflow.cs:63:21:63:34 | [false] !... | cflow.cs:63:23:63:33 | ... == ... | +| cflow.cs:63:17:64:55 | After if (...) ... | cflow.cs:63:21:63:34 | After !... [false] | +| cflow.cs:63:17:64:55 | if (...) ... | cflow.cs:62:13:62:19 | After case ...: [match] | +| cflow.cs:63:21:63:34 | !... | cflow.cs:63:17:64:55 | if (...) ... | +| cflow.cs:63:21:63:34 | After !... [false] | cflow.cs:63:23:63:33 | After ... == ... [true] | +| cflow.cs:63:21:63:34 | After !... [true] | cflow.cs:63:23:63:33 | After ... == ... [false] | +| cflow.cs:63:23:63:27 | After access to field Field | cflow.cs:63:23:63:27 | access to field Field | +| cflow.cs:63:23:63:27 | Before access to field Field | cflow.cs:63:23:63:33 | Before ... == ... | | cflow.cs:63:23:63:27 | access to field Field | cflow.cs:63:23:63:27 | this access | -| cflow.cs:63:23:63:27 | this access | cflow.cs:63:17:64:55 | if (...) ... | +| cflow.cs:63:23:63:27 | this access | cflow.cs:63:23:63:27 | Before access to field Field | | cflow.cs:63:23:63:33 | ... == ... | cflow.cs:63:32:63:33 | "" | -| cflow.cs:63:32:63:33 | "" | cflow.cs:63:23:63:27 | access to field Field | -| cflow.cs:64:21:64:55 | throw ...; | cflow.cs:64:27:64:54 | object creation of type NullReferenceException | -| cflow.cs:65:17:65:22 | break; | cflow.cs:63:21:63:34 | [false] !... | +| cflow.cs:63:23:63:33 | After ... == ... [true] | cflow.cs:63:23:63:33 | ... == ... | +| cflow.cs:63:23:63:33 | Before ... == ... | cflow.cs:63:21:63:34 | !... | +| cflow.cs:63:32:63:33 | "" | cflow.cs:63:23:63:27 | After access to field Field | +| cflow.cs:64:21:64:55 | Before throw ...; | cflow.cs:63:21:63:34 | After !... [true] | +| cflow.cs:64:21:64:55 | throw ...; | cflow.cs:64:27:64:54 | After object creation of type NullReferenceException | +| cflow.cs:64:27:64:54 | After object creation of type NullReferenceException | cflow.cs:64:27:64:54 | object creation of type NullReferenceException | +| cflow.cs:64:27:64:54 | Before object creation of type NullReferenceException | cflow.cs:64:21:64:55 | Before throw ...; | +| cflow.cs:64:27:64:54 | object creation of type NullReferenceException | cflow.cs:64:27:64:54 | Before object creation of type NullReferenceException | +| cflow.cs:65:17:65:22 | Before break; | cflow.cs:63:17:64:55 | After if (...) ... | +| cflow.cs:65:17:65:22 | break; | cflow.cs:65:17:65:22 | Before break; | +| cflow.cs:67:9:67:17 | Before return ...; | cflow.cs:60:9:66:9 | After switch (...) {...} | | cflow.cs:67:9:67:17 | return ...; | cflow.cs:67:16:67:16 | access to parameter a | -| cflow.cs:67:16:67:16 | access to parameter a | cflow.cs:62:18:62:18 | 0 | -| cflow.cs:67:16:67:16 | access to parameter a | cflow.cs:65:17:65:22 | break; | -| cflow.cs:70:18:70:18 | exit M | cflow.cs:70:18:70:18 | exit M (normal) | -| cflow.cs:70:18:70:18 | exit M (normal) | cflow.cs:73:13:73:19 | return ...; | -| cflow.cs:70:18:70:18 | exit M (normal) | cflow.cs:76:13:76:32 | call to method WriteLine | -| cflow.cs:70:18:70:18 | exit M (normal) | cflow.cs:80:13:80:47 | call to method WriteLine | -| cflow.cs:71:5:82:5 | {...} | cflow.cs:70:18:70:18 | enter M | +| cflow.cs:67:16:67:16 | access to parameter a | cflow.cs:67:9:67:17 | Before return ...; | +| cflow.cs:70:18:70:18 | Exit | cflow.cs:70:18:70:18 | Normal Exit | +| cflow.cs:70:18:70:18 | Normal Exit | cflow.cs:71:5:82:5 | After {...} | +| cflow.cs:70:18:70:18 | Normal Exit | cflow.cs:73:13:73:19 | return ...; | +| cflow.cs:70:27:70:27 | s | cflow.cs:70:18:70:18 | Entry | +| cflow.cs:71:5:82:5 | After {...} | cflow.cs:74:9:81:9 | After if (...) ... | +| cflow.cs:71:5:82:5 | {...} | cflow.cs:70:27:70:27 | s | +| cflow.cs:72:9:73:19 | After if (...) ... | cflow.cs:72:13:72:21 | After ... == ... [false] | | cflow.cs:72:9:73:19 | if (...) ... | cflow.cs:71:5:82:5 | {...} | -| cflow.cs:72:13:72:13 | access to parameter s | cflow.cs:72:9:73:19 | if (...) ... | +| cflow.cs:72:13:72:13 | access to parameter s | cflow.cs:72:13:72:21 | Before ... == ... | | cflow.cs:72:13:72:21 | ... == ... | cflow.cs:72:18:72:21 | null | +| cflow.cs:72:13:72:21 | Before ... == ... | cflow.cs:72:9:73:19 | if (...) ... | | cflow.cs:72:18:72:21 | null | cflow.cs:72:13:72:13 | access to parameter s | -| cflow.cs:74:13:74:13 | access to parameter s | cflow.cs:74:9:81:9 | if (...) ... | +| cflow.cs:73:13:73:19 | Before return ...; | cflow.cs:72:13:72:21 | After ... == ... [true] | +| cflow.cs:73:13:73:19 | return ...; | cflow.cs:73:13:73:19 | Before return ...; | +| cflow.cs:74:9:81:9 | After if (...) ... | cflow.cs:75:9:77:9 | After {...} | +| cflow.cs:74:9:81:9 | After if (...) ... | cflow.cs:79:9:81:9 | After {...} | +| cflow.cs:74:9:81:9 | if (...) ... | cflow.cs:72:9:73:19 | After if (...) ... | +| cflow.cs:74:13:74:13 | access to parameter s | cflow.cs:74:13:74:20 | Before access to property Length | +| cflow.cs:74:13:74:20 | After access to property Length | cflow.cs:74:13:74:20 | access to property Length | +| cflow.cs:74:13:74:20 | Before access to property Length | cflow.cs:74:13:74:24 | Before ... > ... | | cflow.cs:74:13:74:20 | access to property Length | cflow.cs:74:13:74:13 | access to parameter s | | cflow.cs:74:13:74:24 | ... > ... | cflow.cs:74:24:74:24 | 0 | -| cflow.cs:74:24:74:24 | 0 | cflow.cs:74:13:74:20 | access to property Length | +| cflow.cs:74:13:74:24 | Before ... > ... | cflow.cs:74:9:81:9 | if (...) ... | +| cflow.cs:74:24:74:24 | 0 | cflow.cs:74:13:74:20 | After access to property Length | +| cflow.cs:75:9:77:9 | After {...} | cflow.cs:76:13:76:33 | After ...; | +| cflow.cs:75:9:77:9 | {...} | cflow.cs:74:13:74:24 | After ... > ... [true] | +| cflow.cs:76:13:76:32 | After call to method WriteLine | cflow.cs:76:13:76:32 | call to method WriteLine | +| cflow.cs:76:13:76:32 | Before call to method WriteLine | cflow.cs:76:13:76:33 | ...; | | cflow.cs:76:13:76:32 | call to method WriteLine | cflow.cs:76:31:76:31 | access to parameter s | | cflow.cs:76:13:76:33 | ...; | cflow.cs:75:9:77:9 | {...} | -| cflow.cs:76:31:76:31 | access to parameter s | cflow.cs:76:13:76:33 | ...; | +| cflow.cs:76:13:76:33 | After ...; | cflow.cs:76:13:76:32 | After call to method WriteLine | +| cflow.cs:76:31:76:31 | access to parameter s | cflow.cs:76:13:76:32 | Before call to method WriteLine | +| cflow.cs:79:9:81:9 | After {...} | cflow.cs:80:13:80:48 | After ...; | +| cflow.cs:79:9:81:9 | {...} | cflow.cs:74:13:74:24 | After ... > ... [false] | +| cflow.cs:80:13:80:47 | After call to method WriteLine | cflow.cs:80:13:80:47 | call to method WriteLine | +| cflow.cs:80:13:80:47 | Before call to method WriteLine | cflow.cs:80:13:80:48 | ...; | | cflow.cs:80:13:80:47 | call to method WriteLine | cflow.cs:80:31:80:46 | "" | | cflow.cs:80:13:80:48 | ...; | cflow.cs:79:9:81:9 | {...} | -| cflow.cs:80:31:80:46 | "" | cflow.cs:80:13:80:48 | ...; | -| cflow.cs:84:18:84:19 | exit M2 | cflow.cs:84:18:84:19 | exit M2 (normal) | -| cflow.cs:84:18:84:19 | exit M2 (normal) | cflow.cs:86:13:86:37 | [false] ... && ... | -| cflow.cs:84:18:84:19 | exit M2 (normal) | cflow.cs:87:13:87:32 | call to method WriteLine | -| cflow.cs:85:5:88:5 | {...} | cflow.cs:84:18:84:19 | enter M2 | +| cflow.cs:80:13:80:48 | After ...; | cflow.cs:80:13:80:47 | After call to method WriteLine | +| cflow.cs:80:31:80:46 | "" | cflow.cs:80:13:80:47 | Before call to method WriteLine | +| cflow.cs:84:18:84:19 | Exit | cflow.cs:84:18:84:19 | Normal Exit | +| cflow.cs:84:18:84:19 | Normal Exit | cflow.cs:85:5:88:5 | After {...} | +| cflow.cs:84:28:84:28 | s | cflow.cs:84:18:84:19 | Entry | +| cflow.cs:85:5:88:5 | After {...} | cflow.cs:86:9:87:33 | After if (...) ... | +| cflow.cs:85:5:88:5 | {...} | cflow.cs:84:28:84:28 | s | +| cflow.cs:86:9:87:33 | After if (...) ... | cflow.cs:86:13:86:37 | After ... && ... [false] | +| cflow.cs:86:9:87:33 | After if (...) ... | cflow.cs:87:13:87:33 | After ...; | | cflow.cs:86:9:87:33 | if (...) ... | cflow.cs:85:5:88:5 | {...} | -| cflow.cs:86:13:86:13 | access to parameter s | cflow.cs:86:9:87:33 | if (...) ... | +| cflow.cs:86:13:86:13 | access to parameter s | cflow.cs:86:13:86:21 | Before ... != ... | | cflow.cs:86:13:86:21 | ... != ... | cflow.cs:86:18:86:21 | null | +| cflow.cs:86:13:86:21 | Before ... != ... | cflow.cs:86:13:86:37 | ... && ... | +| cflow.cs:86:13:86:37 | ... && ... | cflow.cs:86:9:87:33 | if (...) ... | +| cflow.cs:86:13:86:37 | After ... && ... [false] | cflow.cs:86:13:86:21 | After ... != ... [false] | +| cflow.cs:86:13:86:37 | After ... && ... [false] | cflow.cs:86:26:86:37 | After ... > ... [false] | +| cflow.cs:86:13:86:37 | After ... && ... [true] | cflow.cs:86:26:86:37 | After ... > ... [true] | | cflow.cs:86:18:86:21 | null | cflow.cs:86:13:86:13 | access to parameter s | +| cflow.cs:86:26:86:26 | access to parameter s | cflow.cs:86:26:86:33 | Before access to property Length | +| cflow.cs:86:26:86:33 | After access to property Length | cflow.cs:86:26:86:33 | access to property Length | +| cflow.cs:86:26:86:33 | Before access to property Length | cflow.cs:86:26:86:37 | Before ... > ... | | cflow.cs:86:26:86:33 | access to property Length | cflow.cs:86:26:86:26 | access to parameter s | | cflow.cs:86:26:86:37 | ... > ... | cflow.cs:86:37:86:37 | 0 | -| cflow.cs:86:37:86:37 | 0 | cflow.cs:86:26:86:33 | access to property Length | +| cflow.cs:86:26:86:37 | Before ... > ... | cflow.cs:86:13:86:21 | After ... != ... [true] | +| cflow.cs:86:37:86:37 | 0 | cflow.cs:86:26:86:33 | After access to property Length | +| cflow.cs:87:13:87:32 | After call to method WriteLine | cflow.cs:87:13:87:32 | call to method WriteLine | +| cflow.cs:87:13:87:32 | Before call to method WriteLine | cflow.cs:87:13:87:33 | ...; | | cflow.cs:87:13:87:32 | call to method WriteLine | cflow.cs:87:31:87:31 | access to parameter s | -| cflow.cs:87:13:87:33 | ...; | cflow.cs:86:13:86:37 | [true] ... && ... | -| cflow.cs:87:31:87:31 | access to parameter s | cflow.cs:87:13:87:33 | ...; | -| cflow.cs:90:18:90:19 | exit M3 (abnormal) | cflow.cs:93:13:93:49 | throw ...; | -| cflow.cs:90:18:90:19 | exit M3 (normal) | cflow.cs:102:13:102:29 | ... != ... | -| cflow.cs:90:18:90:19 | exit M3 (normal) | cflow.cs:103:13:103:35 | call to method WriteLine | -| cflow.cs:91:5:104:5 | {...} | cflow.cs:90:18:90:19 | enter M3 | +| cflow.cs:87:13:87:33 | ...; | cflow.cs:86:13:86:37 | After ... && ... [true] | +| cflow.cs:87:13:87:33 | After ...; | cflow.cs:87:13:87:32 | After call to method WriteLine | +| cflow.cs:87:31:87:31 | access to parameter s | cflow.cs:87:13:87:32 | Before call to method WriteLine | +| cflow.cs:90:18:90:19 | Exceptional Exit | cflow.cs:93:13:93:49 | throw ...; | +| cflow.cs:90:18:90:19 | Normal Exit | cflow.cs:91:5:104:5 | After {...} | +| cflow.cs:90:28:90:28 | s | cflow.cs:90:18:90:19 | Entry | +| cflow.cs:91:5:104:5 | After {...} | cflow.cs:102:9:103:36 | After if (...) ... | +| cflow.cs:91:5:104:5 | {...} | cflow.cs:90:28:90:28 | s | +| cflow.cs:92:9:93:49 | After if (...) ... | cflow.cs:92:13:92:27 | After call to method Equals [false] | | cflow.cs:92:9:93:49 | if (...) ... | cflow.cs:91:5:104:5 | {...} | +| cflow.cs:92:13:92:27 | After call to method Equals [false] | cflow.cs:92:13:92:27 | call to method Equals | +| cflow.cs:92:13:92:27 | Before call to method Equals | cflow.cs:92:9:93:49 | if (...) ... | | cflow.cs:92:13:92:27 | call to method Equals | cflow.cs:92:23:92:26 | null | -| cflow.cs:92:20:92:20 | access to parameter s | cflow.cs:92:9:93:49 | if (...) ... | +| cflow.cs:92:20:92:20 | access to parameter s | cflow.cs:92:13:92:27 | Before call to method Equals | | cflow.cs:92:23:92:26 | null | cflow.cs:92:20:92:20 | access to parameter s | -| cflow.cs:93:13:93:49 | throw ...; | cflow.cs:93:19:93:48 | object creation of type ArgumentNullException | +| cflow.cs:93:13:93:49 | Before throw ...; | cflow.cs:92:13:92:27 | After call to method Equals [true] | +| cflow.cs:93:13:93:49 | throw ...; | cflow.cs:93:19:93:48 | After object creation of type ArgumentNullException | +| cflow.cs:93:19:93:48 | After object creation of type ArgumentNullException | cflow.cs:93:19:93:48 | object creation of type ArgumentNullException | +| cflow.cs:93:19:93:48 | Before object creation of type ArgumentNullException | cflow.cs:93:13:93:49 | Before throw ...; | | cflow.cs:93:19:93:48 | object creation of type ArgumentNullException | cflow.cs:93:45:93:47 | "s" | +| cflow.cs:93:45:93:47 | "s" | cflow.cs:93:19:93:48 | Before object creation of type ArgumentNullException | +| cflow.cs:94:9:94:28 | After call to method WriteLine | cflow.cs:94:9:94:28 | call to method WriteLine | +| cflow.cs:94:9:94:28 | Before call to method WriteLine | cflow.cs:94:9:94:29 | ...; | | cflow.cs:94:9:94:28 | call to method WriteLine | cflow.cs:94:27:94:27 | access to parameter s | -| cflow.cs:94:9:94:29 | ...; | cflow.cs:92:13:92:27 | call to method Equals | -| cflow.cs:94:27:94:27 | access to parameter s | cflow.cs:94:9:94:29 | ...; | -| cflow.cs:96:9:97:55 | if (...) ... | cflow.cs:94:9:94:28 | call to method WriteLine | +| cflow.cs:94:9:94:29 | ...; | cflow.cs:92:9:93:49 | After if (...) ... | +| cflow.cs:94:9:94:29 | After ...; | cflow.cs:94:9:94:28 | After call to method WriteLine | +| cflow.cs:94:27:94:27 | access to parameter s | cflow.cs:94:9:94:28 | Before call to method WriteLine | +| cflow.cs:96:9:97:55 | After if (...) ... | cflow.cs:96:13:96:25 | After ... != ... [false] | +| cflow.cs:96:9:97:55 | After if (...) ... | cflow.cs:97:13:97:55 | After ...; | +| cflow.cs:96:9:97:55 | if (...) ... | cflow.cs:94:9:94:29 | After ...; | +| cflow.cs:96:13:96:17 | After access to field Field | cflow.cs:96:13:96:17 | access to field Field | +| cflow.cs:96:13:96:17 | Before access to field Field | cflow.cs:96:13:96:25 | Before ... != ... | | cflow.cs:96:13:96:17 | access to field Field | cflow.cs:96:13:96:17 | this access | -| cflow.cs:96:13:96:17 | this access | cflow.cs:96:9:97:55 | if (...) ... | +| cflow.cs:96:13:96:17 | this access | cflow.cs:96:13:96:17 | Before access to field Field | | cflow.cs:96:13:96:25 | ... != ... | cflow.cs:96:22:96:25 | null | -| cflow.cs:96:22:96:25 | null | cflow.cs:96:13:96:17 | access to field Field | -| cflow.cs:97:13:97:54 | call to method WriteLine | cflow.cs:97:31:97:53 | access to field Field | -| cflow.cs:97:31:97:47 | object creation of type ControlFlow | cflow.cs:97:13:97:55 | ...; | -| cflow.cs:97:31:97:53 | access to field Field | cflow.cs:97:31:97:47 | object creation of type ControlFlow | -| cflow.cs:99:9:100:42 | if (...) ... | cflow.cs:96:13:96:25 | ... != ... | -| cflow.cs:99:9:100:42 | if (...) ... | cflow.cs:97:13:97:54 | call to method WriteLine | +| cflow.cs:96:13:96:25 | Before ... != ... | cflow.cs:96:9:97:55 | if (...) ... | +| cflow.cs:96:22:96:25 | null | cflow.cs:96:13:96:17 | After access to field Field | +| cflow.cs:97:13:97:54 | After call to method WriteLine | cflow.cs:97:13:97:54 | call to method WriteLine | +| cflow.cs:97:13:97:54 | Before call to method WriteLine | cflow.cs:97:13:97:55 | ...; | +| cflow.cs:97:13:97:54 | call to method WriteLine | cflow.cs:97:31:97:53 | After access to field Field | +| cflow.cs:97:13:97:55 | ...; | cflow.cs:96:13:96:25 | After ... != ... [true] | +| cflow.cs:97:13:97:55 | After ...; | cflow.cs:97:13:97:54 | After call to method WriteLine | +| cflow.cs:97:31:97:47 | After object creation of type ControlFlow | cflow.cs:97:31:97:47 | object creation of type ControlFlow | +| cflow.cs:97:31:97:47 | Before object creation of type ControlFlow | cflow.cs:97:31:97:53 | Before access to field Field | +| cflow.cs:97:31:97:47 | object creation of type ControlFlow | cflow.cs:97:31:97:47 | Before object creation of type ControlFlow | +| cflow.cs:97:31:97:53 | After access to field Field | cflow.cs:97:31:97:53 | access to field Field | +| cflow.cs:97:31:97:53 | Before access to field Field | cflow.cs:97:13:97:54 | Before call to method WriteLine | +| cflow.cs:97:31:97:53 | access to field Field | cflow.cs:97:31:97:47 | After object creation of type ControlFlow | +| cflow.cs:99:9:100:42 | After if (...) ... | cflow.cs:99:13:99:25 | After ... != ... [false] | +| cflow.cs:99:9:100:42 | After if (...) ... | cflow.cs:100:13:100:42 | After ...; | +| cflow.cs:99:9:100:42 | if (...) ... | cflow.cs:96:9:97:55 | After if (...) ... | +| cflow.cs:99:13:99:17 | After access to field Field | cflow.cs:99:13:99:17 | access to field Field | +| cflow.cs:99:13:99:17 | Before access to field Field | cflow.cs:99:13:99:25 | Before ... != ... | | cflow.cs:99:13:99:17 | access to field Field | cflow.cs:99:13:99:17 | this access | -| cflow.cs:99:13:99:17 | this access | cflow.cs:99:9:100:42 | if (...) ... | +| cflow.cs:99:13:99:17 | this access | cflow.cs:99:13:99:17 | Before access to field Field | | cflow.cs:99:13:99:25 | ... != ... | cflow.cs:99:22:99:25 | null | -| cflow.cs:99:22:99:25 | null | cflow.cs:99:13:99:17 | access to field Field | -| cflow.cs:100:13:100:41 | call to method WriteLine | cflow.cs:100:31:100:40 | access to field Field | -| cflow.cs:100:31:100:34 | this access | cflow.cs:100:13:100:42 | ...; | +| cflow.cs:99:13:99:25 | Before ... != ... | cflow.cs:99:9:100:42 | if (...) ... | +| cflow.cs:99:22:99:25 | null | cflow.cs:99:13:99:17 | After access to field Field | +| cflow.cs:100:13:100:41 | After call to method WriteLine | cflow.cs:100:13:100:41 | call to method WriteLine | +| cflow.cs:100:13:100:41 | Before call to method WriteLine | cflow.cs:100:13:100:42 | ...; | +| cflow.cs:100:13:100:41 | call to method WriteLine | cflow.cs:100:31:100:40 | After access to field Field | +| cflow.cs:100:13:100:42 | ...; | cflow.cs:99:13:99:25 | After ... != ... [true] | +| cflow.cs:100:13:100:42 | After ...; | cflow.cs:100:13:100:41 | After call to method WriteLine | +| cflow.cs:100:31:100:34 | this access | cflow.cs:100:31:100:40 | Before access to field Field | +| cflow.cs:100:31:100:40 | After access to field Field | cflow.cs:100:31:100:40 | access to field Field | +| cflow.cs:100:31:100:40 | Before access to field Field | cflow.cs:100:13:100:41 | Before call to method WriteLine | | cflow.cs:100:31:100:40 | access to field Field | cflow.cs:100:31:100:34 | this access | -| cflow.cs:102:9:103:36 | if (...) ... | cflow.cs:99:13:99:25 | ... != ... | -| cflow.cs:102:9:103:36 | if (...) ... | cflow.cs:100:13:100:41 | call to method WriteLine | -| cflow.cs:102:13:102:16 | this access | cflow.cs:102:9:103:36 | if (...) ... | +| cflow.cs:102:9:103:36 | After if (...) ... | cflow.cs:102:13:102:29 | After ... != ... [false] | +| cflow.cs:102:9:103:36 | After if (...) ... | cflow.cs:103:13:103:36 | After ...; | +| cflow.cs:102:9:103:36 | if (...) ... | cflow.cs:99:9:100:42 | After if (...) ... | +| cflow.cs:102:13:102:16 | this access | cflow.cs:102:13:102:21 | Before access to property Prop | +| cflow.cs:102:13:102:21 | After access to property Prop | cflow.cs:102:13:102:21 | access to property Prop | +| cflow.cs:102:13:102:21 | Before access to property Prop | cflow.cs:102:13:102:29 | Before ... != ... | | cflow.cs:102:13:102:21 | access to property Prop | cflow.cs:102:13:102:16 | this access | | cflow.cs:102:13:102:29 | ... != ... | cflow.cs:102:26:102:29 | null | -| cflow.cs:102:26:102:29 | null | cflow.cs:102:13:102:21 | access to property Prop | -| cflow.cs:103:13:103:35 | call to method WriteLine | cflow.cs:103:31:103:34 | access to property Prop | +| cflow.cs:102:13:102:29 | Before ... != ... | cflow.cs:102:9:103:36 | if (...) ... | +| cflow.cs:102:26:102:29 | null | cflow.cs:102:13:102:21 | After access to property Prop | +| cflow.cs:103:13:103:35 | After call to method WriteLine | cflow.cs:103:13:103:35 | call to method WriteLine | +| cflow.cs:103:13:103:35 | Before call to method WriteLine | cflow.cs:103:13:103:36 | ...; | +| cflow.cs:103:13:103:35 | call to method WriteLine | cflow.cs:103:31:103:34 | After access to property Prop | +| cflow.cs:103:13:103:36 | ...; | cflow.cs:102:13:102:29 | After ... != ... [true] | +| cflow.cs:103:13:103:36 | After ...; | cflow.cs:103:13:103:35 | After call to method WriteLine | +| cflow.cs:103:31:103:34 | After access to property Prop | cflow.cs:103:31:103:34 | access to property Prop | +| cflow.cs:103:31:103:34 | Before access to property Prop | cflow.cs:103:13:103:35 | Before call to method WriteLine | | cflow.cs:103:31:103:34 | access to property Prop | cflow.cs:103:31:103:34 | this access | -| cflow.cs:103:31:103:34 | this access | cflow.cs:103:13:103:36 | ...; | -| cflow.cs:106:18:106:19 | exit M4 | cflow.cs:106:18:106:19 | exit M4 (normal) | -| cflow.cs:106:18:106:19 | exit M4 (normal) | cflow.cs:116:9:116:28 | call to method WriteLine | -| cflow.cs:107:5:117:5 | {...} | cflow.cs:106:18:106:19 | enter M4 | +| cflow.cs:103:31:103:34 | this access | cflow.cs:103:31:103:34 | Before access to property Prop | +| cflow.cs:106:18:106:19 | Exit | cflow.cs:106:18:106:19 | Normal Exit | +| cflow.cs:106:18:106:19 | Normal Exit | cflow.cs:107:5:117:5 | After {...} | +| cflow.cs:106:28:106:28 | s | cflow.cs:106:18:106:19 | Entry | +| cflow.cs:107:5:117:5 | After {...} | cflow.cs:116:9:116:29 | After ...; | +| cflow.cs:107:5:117:5 | {...} | cflow.cs:106:28:106:28 | s | +| cflow.cs:108:9:115:9 | After if (...) ... | cflow.cs:108:13:108:21 | After ... != ... [false] | | cflow.cs:108:9:115:9 | if (...) ... | cflow.cs:107:5:117:5 | {...} | -| cflow.cs:108:13:108:13 | access to parameter s | cflow.cs:108:9:115:9 | if (...) ... | +| cflow.cs:108:13:108:13 | access to parameter s | cflow.cs:108:13:108:21 | Before ... != ... | | cflow.cs:108:13:108:21 | ... != ... | cflow.cs:108:18:108:21 | null | +| cflow.cs:108:13:108:21 | After ... != ... [false] | cflow.cs:108:13:108:21 | ... != ... | +| cflow.cs:108:13:108:21 | Before ... != ... | cflow.cs:108:9:115:9 | if (...) ... | | cflow.cs:108:18:108:21 | null | cflow.cs:108:13:108:13 | access to parameter s | +| cflow.cs:109:9:115:9 | {...} | cflow.cs:108:13:108:21 | After ... != ... [true] | | cflow.cs:110:13:113:13 | while (...) ... | cflow.cs:109:9:115:9 | {...} | +| cflow.cs:110:20:110:23 | After true [true] | cflow.cs:110:20:110:23 | true | +| cflow.cs:110:20:110:23 | true | cflow.cs:110:13:113:13 | [LoopHeader] while (...) ... | +| cflow.cs:111:13:113:13 | After {...} | cflow.cs:112:17:112:37 | After ...; | +| cflow.cs:111:13:113:13 | {...} | cflow.cs:110:20:110:23 | After true [true] | +| cflow.cs:112:17:112:36 | After call to method WriteLine | cflow.cs:112:17:112:36 | call to method WriteLine | +| cflow.cs:112:17:112:36 | Before call to method WriteLine | cflow.cs:112:17:112:37 | ...; | | cflow.cs:112:17:112:36 | call to method WriteLine | cflow.cs:112:35:112:35 | access to parameter s | | cflow.cs:112:17:112:37 | ...; | cflow.cs:111:13:113:13 | {...} | -| cflow.cs:112:35:112:35 | access to parameter s | cflow.cs:112:17:112:37 | ...; | +| cflow.cs:112:17:112:37 | After ...; | cflow.cs:112:17:112:36 | After call to method WriteLine | +| cflow.cs:112:35:112:35 | access to parameter s | cflow.cs:112:17:112:36 | Before call to method WriteLine | +| cflow.cs:116:9:116:28 | After call to method WriteLine | cflow.cs:116:9:116:28 | call to method WriteLine | +| cflow.cs:116:9:116:28 | Before call to method WriteLine | cflow.cs:116:9:116:29 | ...; | | cflow.cs:116:9:116:28 | call to method WriteLine | cflow.cs:116:27:116:27 | access to parameter s | -| cflow.cs:116:9:116:29 | ...; | cflow.cs:108:13:108:21 | ... != ... | -| cflow.cs:116:27:116:27 | access to parameter s | cflow.cs:116:9:116:29 | ...; | -| cflow.cs:119:20:119:21 | exit M5 | cflow.cs:119:20:119:21 | exit M5 (normal) | -| cflow.cs:119:20:119:21 | exit M5 (normal) | cflow.cs:123:9:123:17 | return ...; | -| cflow.cs:120:5:124:5 | {...} | cflow.cs:119:20:119:21 | enter M5 | +| cflow.cs:116:9:116:29 | ...; | cflow.cs:108:9:115:9 | After if (...) ... | +| cflow.cs:116:9:116:29 | After ...; | cflow.cs:116:9:116:28 | After call to method WriteLine | +| cflow.cs:116:27:116:27 | access to parameter s | cflow.cs:116:9:116:28 | Before call to method WriteLine | +| cflow.cs:119:20:119:21 | Exit | cflow.cs:119:20:119:21 | Normal Exit | +| cflow.cs:119:20:119:21 | Normal Exit | cflow.cs:123:9:123:17 | return ...; | +| cflow.cs:119:30:119:30 | s | cflow.cs:119:20:119:21 | Entry | +| cflow.cs:120:5:124:5 | {...} | cflow.cs:119:30:119:30 | s | | cflow.cs:121:9:121:18 | ... ...; | cflow.cs:120:5:124:5 | {...} | +| cflow.cs:121:9:121:18 | After ... ...; | cflow.cs:121:13:121:17 | After String x = ... | +| cflow.cs:121:13:121:13 | access to local variable x | cflow.cs:121:13:121:17 | Before String x = ... | +| cflow.cs:121:13:121:17 | After String x = ... | cflow.cs:121:13:121:17 | String x = ... | +| cflow.cs:121:13:121:17 | Before String x = ... | cflow.cs:121:9:121:18 | ... ...; | | cflow.cs:121:13:121:17 | String x = ... | cflow.cs:121:17:121:17 | access to parameter s | -| cflow.cs:121:17:121:17 | access to parameter s | cflow.cs:121:9:121:18 | ... ...; | -| cflow.cs:122:9:122:19 | ... = ... | cflow.cs:122:13:122:19 | ... + ... | -| cflow.cs:122:9:122:20 | ...; | cflow.cs:121:13:121:17 | String x = ... | -| cflow.cs:122:13:122:13 | access to local variable x | cflow.cs:122:9:122:20 | ...; | +| cflow.cs:121:17:121:17 | access to parameter s | cflow.cs:121:13:121:13 | access to local variable x | +| cflow.cs:122:9:122:9 | access to local variable x | cflow.cs:122:9:122:19 | Before ... = ... | +| cflow.cs:122:9:122:19 | ... = ... | cflow.cs:122:13:122:19 | After ... + ... | +| cflow.cs:122:9:122:19 | After ... = ... | cflow.cs:122:9:122:19 | ... = ... | +| cflow.cs:122:9:122:19 | Before ... = ... | cflow.cs:122:9:122:20 | ...; | +| cflow.cs:122:9:122:20 | ...; | cflow.cs:121:9:121:18 | After ... ...; | +| cflow.cs:122:9:122:20 | After ...; | cflow.cs:122:9:122:19 | After ... = ... | +| cflow.cs:122:13:122:13 | access to local variable x | cflow.cs:122:13:122:19 | Before ... + ... | | cflow.cs:122:13:122:19 | ... + ... | cflow.cs:122:17:122:19 | " " | +| cflow.cs:122:13:122:19 | After ... + ... | cflow.cs:122:13:122:19 | ... + ... | +| cflow.cs:122:13:122:19 | Before ... + ... | cflow.cs:122:9:122:9 | access to local variable x | | cflow.cs:122:17:122:19 | " " | cflow.cs:122:13:122:13 | access to local variable x | +| cflow.cs:123:9:123:17 | Before return ...; | cflow.cs:122:9:122:20 | After ...; | | cflow.cs:123:9:123:17 | return ...; | cflow.cs:123:16:123:16 | access to local variable x | -| cflow.cs:123:16:123:16 | access to local variable x | cflow.cs:122:9:122:19 | ... = ... | -| cflow.cs:127:19:127:21 | exit get_Prop | cflow.cs:127:19:127:21 | exit get_Prop (normal) | -| cflow.cs:127:19:127:21 | exit get_Prop (normal) | cflow.cs:127:25:127:58 | return ...; | -| cflow.cs:127:23:127:60 | {...} | cflow.cs:127:19:127:21 | enter get_Prop | -| cflow.cs:127:25:127:58 | return ...; | cflow.cs:127:32:127:57 | ... ? ... : ... | +| cflow.cs:123:16:123:16 | access to local variable x | cflow.cs:123:9:123:17 | Before return ...; | +| cflow.cs:127:19:127:21 | Exit | cflow.cs:127:19:127:21 | Normal Exit | +| cflow.cs:127:19:127:21 | Normal Exit | cflow.cs:127:25:127:58 | return ...; | +| cflow.cs:127:23:127:60 | {...} | cflow.cs:127:19:127:21 | Entry | +| cflow.cs:127:25:127:58 | Before return ...; | cflow.cs:127:23:127:60 | {...} | +| cflow.cs:127:25:127:58 | return ...; | cflow.cs:127:32:127:57 | After ... ? ... : ... | +| cflow.cs:127:32:127:36 | After access to field Field | cflow.cs:127:32:127:36 | access to field Field | +| cflow.cs:127:32:127:36 | Before access to field Field | cflow.cs:127:32:127:44 | Before ... == ... | | cflow.cs:127:32:127:36 | access to field Field | cflow.cs:127:32:127:36 | this access | -| cflow.cs:127:32:127:36 | this access | cflow.cs:127:23:127:60 | {...} | +| cflow.cs:127:32:127:36 | this access | cflow.cs:127:32:127:36 | Before access to field Field | | cflow.cs:127:32:127:44 | ... == ... | cflow.cs:127:41:127:44 | null | -| cflow.cs:127:32:127:57 | ... ? ... : ... | cflow.cs:127:48:127:49 | "" | -| cflow.cs:127:32:127:57 | ... ? ... : ... | cflow.cs:127:53:127:57 | access to field Field | -| cflow.cs:127:41:127:44 | null | cflow.cs:127:32:127:36 | access to field Field | +| cflow.cs:127:32:127:44 | Before ... == ... | cflow.cs:127:32:127:57 | ... ? ... : ... | +| cflow.cs:127:32:127:57 | ... ? ... : ... | cflow.cs:127:25:127:58 | Before return ...; | +| cflow.cs:127:32:127:57 | After ... ? ... : ... | cflow.cs:127:48:127:49 | "" | +| cflow.cs:127:32:127:57 | After ... ? ... : ... | cflow.cs:127:53:127:57 | After access to field Field | +| cflow.cs:127:41:127:44 | null | cflow.cs:127:32:127:36 | After access to field Field | +| cflow.cs:127:48:127:49 | "" | cflow.cs:127:32:127:44 | After ... == ... [true] | +| cflow.cs:127:53:127:57 | After access to field Field | cflow.cs:127:53:127:57 | access to field Field | +| cflow.cs:127:53:127:57 | Before access to field Field | cflow.cs:127:32:127:44 | After ... == ... [false] | | cflow.cs:127:53:127:57 | access to field Field | cflow.cs:127:53:127:57 | this access | -| cflow.cs:127:62:127:64 | exit set_Prop | cflow.cs:127:62:127:64 | exit set_Prop (normal) | -| cflow.cs:127:62:127:64 | exit set_Prop (normal) | cflow.cs:127:68:127:80 | ... = ... | -| cflow.cs:127:66:127:83 | {...} | cflow.cs:127:62:127:64 | enter set_Prop | -| cflow.cs:127:68:127:72 | access to field Field | cflow.cs:127:76:127:80 | access to parameter value | -| cflow.cs:127:68:127:72 | this access | cflow.cs:127:68:127:81 | ...; | -| cflow.cs:127:68:127:80 | ... = ... | cflow.cs:127:68:127:72 | access to field Field | +| cflow.cs:127:53:127:57 | this access | cflow.cs:127:53:127:57 | Before access to field Field | +| cflow.cs:127:62:127:64 | Exit | cflow.cs:127:62:127:64 | Normal Exit | +| cflow.cs:127:62:127:64 | Normal Exit | cflow.cs:127:66:127:83 | After {...} | +| cflow.cs:127:62:127:64 | value | cflow.cs:127:62:127:64 | Entry | +| cflow.cs:127:66:127:83 | After {...} | cflow.cs:127:68:127:81 | After ...; | +| cflow.cs:127:66:127:83 | {...} | cflow.cs:127:62:127:64 | value | +| cflow.cs:127:68:127:72 | After access to field Field | cflow.cs:127:68:127:72 | access to field Field | +| cflow.cs:127:68:127:72 | Before access to field Field | cflow.cs:127:68:127:80 | Before ... = ... | +| cflow.cs:127:68:127:72 | access to field Field | cflow.cs:127:68:127:72 | this access | +| cflow.cs:127:68:127:72 | this access | cflow.cs:127:68:127:72 | Before access to field Field | +| cflow.cs:127:68:127:80 | ... = ... | cflow.cs:127:76:127:80 | access to parameter value | +| cflow.cs:127:68:127:80 | After ... = ... | cflow.cs:127:68:127:80 | ... = ... | +| cflow.cs:127:68:127:80 | Before ... = ... | cflow.cs:127:68:127:81 | ...; | | cflow.cs:127:68:127:81 | ...; | cflow.cs:127:66:127:83 | {...} | -| cflow.cs:127:76:127:80 | access to parameter value | cflow.cs:127:68:127:72 | this access | -| cflow.cs:129:5:129:15 | call to constructor Object | cflow.cs:129:5:129:15 | call to method | +| cflow.cs:127:68:127:81 | After ...; | cflow.cs:127:68:127:80 | After ... = ... | +| cflow.cs:127:76:127:80 | access to parameter value | cflow.cs:127:68:127:72 | After access to field Field | +| cflow.cs:129:5:129:15 | After call to constructor Object | cflow.cs:129:5:129:15 | call to constructor Object | +| cflow.cs:129:5:129:15 | After call to method | cflow.cs:129:5:129:15 | call to method | +| cflow.cs:129:5:129:15 | Before call to constructor Object | cflow.cs:129:5:129:15 | After call to method | +| cflow.cs:129:5:129:15 | Before call to method | cflow.cs:129:24:129:24 | s | +| cflow.cs:129:5:129:15 | Exit | cflow.cs:129:5:129:15 | Normal Exit | +| cflow.cs:129:5:129:15 | Normal Exit | cflow.cs:130:5:132:5 | After {...} | +| cflow.cs:129:5:129:15 | call to constructor Object | cflow.cs:129:5:129:15 | Before call to constructor Object | | cflow.cs:129:5:129:15 | call to method | cflow.cs:129:5:129:15 | this access | -| cflow.cs:129:5:129:15 | exit ControlFlow | cflow.cs:129:5:129:15 | exit ControlFlow (normal) | -| cflow.cs:129:5:129:15 | exit ControlFlow (normal) | cflow.cs:131:9:131:17 | ... = ... | -| cflow.cs:129:5:129:15 | this access | cflow.cs:129:5:129:15 | enter ControlFlow | -| cflow.cs:130:5:132:5 | {...} | cflow.cs:129:5:129:15 | call to constructor Object | -| cflow.cs:131:9:131:13 | access to field Field | cflow.cs:131:17:131:17 | access to parameter s | -| cflow.cs:131:9:131:13 | this access | cflow.cs:131:9:131:18 | ...; | -| cflow.cs:131:9:131:17 | ... = ... | cflow.cs:131:9:131:13 | access to field Field | +| cflow.cs:129:5:129:15 | this access | cflow.cs:129:5:129:15 | Before call to method | +| cflow.cs:129:24:129:24 | s | cflow.cs:129:5:129:15 | Entry | +| cflow.cs:130:5:132:5 | After {...} | cflow.cs:131:9:131:18 | After ...; | +| cflow.cs:130:5:132:5 | {...} | cflow.cs:129:5:129:15 | After call to constructor Object | +| cflow.cs:131:9:131:13 | After access to field Field | cflow.cs:131:9:131:13 | access to field Field | +| cflow.cs:131:9:131:13 | Before access to field Field | cflow.cs:131:9:131:17 | Before ... = ... | +| cflow.cs:131:9:131:13 | access to field Field | cflow.cs:131:9:131:13 | this access | +| cflow.cs:131:9:131:13 | this access | cflow.cs:131:9:131:13 | Before access to field Field | +| cflow.cs:131:9:131:17 | ... = ... | cflow.cs:131:17:131:17 | access to parameter s | +| cflow.cs:131:9:131:17 | After ... = ... | cflow.cs:131:9:131:17 | ... = ... | +| cflow.cs:131:9:131:17 | Before ... = ... | cflow.cs:131:9:131:18 | ...; | | cflow.cs:131:9:131:18 | ...; | cflow.cs:130:5:132:5 | {...} | -| cflow.cs:131:17:131:17 | access to parameter s | cflow.cs:131:9:131:13 | this access | -| cflow.cs:134:5:134:15 | exit ControlFlow | cflow.cs:134:5:134:15 | exit ControlFlow (normal) | -| cflow.cs:134:5:134:15 | exit ControlFlow (normal) | cflow.cs:134:39:134:41 | {...} | -| cflow.cs:134:26:134:29 | call to constructor ControlFlow | cflow.cs:134:31:134:36 | ... + ... | +| cflow.cs:131:9:131:18 | After ...; | cflow.cs:131:9:131:17 | After ... = ... | +| cflow.cs:131:17:131:17 | access to parameter s | cflow.cs:131:9:131:13 | After access to field Field | +| cflow.cs:134:5:134:15 | Exit | cflow.cs:134:5:134:15 | Normal Exit | +| cflow.cs:134:5:134:15 | Normal Exit | cflow.cs:134:39:134:41 | {...} | +| cflow.cs:134:21:134:21 | i | cflow.cs:134:5:134:15 | Entry | +| cflow.cs:134:26:134:29 | After call to constructor ControlFlow | cflow.cs:134:26:134:29 | call to constructor ControlFlow | +| cflow.cs:134:26:134:29 | Before call to constructor ControlFlow | cflow.cs:134:21:134:21 | i | +| cflow.cs:134:26:134:29 | call to constructor ControlFlow | cflow.cs:134:31:134:36 | After ... + ... | | cflow.cs:134:31:134:31 | (...) ... | cflow.cs:134:31:134:31 | access to parameter i | -| cflow.cs:134:31:134:31 | access to parameter i | cflow.cs:134:5:134:15 | enter ControlFlow | +| cflow.cs:134:31:134:31 | After (...) ... | cflow.cs:134:31:134:31 | (...) ... | +| cflow.cs:134:31:134:31 | Before (...) ... | cflow.cs:134:31:134:36 | Before ... + ... | +| cflow.cs:134:31:134:31 | access to parameter i | cflow.cs:134:31:134:31 | Before (...) ... | | cflow.cs:134:31:134:36 | ... + ... | cflow.cs:134:35:134:36 | "" | -| cflow.cs:134:35:134:36 | "" | cflow.cs:134:31:134:31 | (...) ... | -| cflow.cs:134:39:134:41 | {...} | cflow.cs:134:26:134:29 | call to constructor ControlFlow | -| cflow.cs:136:12:136:22 | exit ControlFlow | cflow.cs:136:12:136:22 | exit ControlFlow (normal) | -| cflow.cs:136:12:136:22 | exit ControlFlow (normal) | cflow.cs:136:40:136:42 | {...} | -| cflow.cs:136:28:136:31 | call to constructor ControlFlow | cflow.cs:136:33:136:37 | ... + ... | -| cflow.cs:136:33:136:33 | 0 | cflow.cs:136:12:136:22 | enter ControlFlow | +| cflow.cs:134:31:134:36 | After ... + ... | cflow.cs:134:31:134:36 | ... + ... | +| cflow.cs:134:31:134:36 | Before ... + ... | cflow.cs:134:26:134:29 | Before call to constructor ControlFlow | +| cflow.cs:134:35:134:36 | "" | cflow.cs:134:31:134:31 | After (...) ... | +| cflow.cs:134:39:134:41 | {...} | cflow.cs:134:26:134:29 | After call to constructor ControlFlow | +| cflow.cs:136:12:136:22 | Exit | cflow.cs:136:12:136:22 | Normal Exit | +| cflow.cs:136:12:136:22 | Normal Exit | cflow.cs:136:40:136:42 | {...} | +| cflow.cs:136:28:136:31 | After call to constructor ControlFlow | cflow.cs:136:28:136:31 | call to constructor ControlFlow | +| cflow.cs:136:28:136:31 | Before call to constructor ControlFlow | cflow.cs:136:12:136:22 | Entry | +| cflow.cs:136:28:136:31 | call to constructor ControlFlow | cflow.cs:136:33:136:37 | After ... + ... | +| cflow.cs:136:33:136:33 | 0 | cflow.cs:136:33:136:37 | Before ... + ... | | cflow.cs:136:33:136:37 | ... + ... | cflow.cs:136:37:136:37 | 1 | +| cflow.cs:136:33:136:37 | After ... + ... | cflow.cs:136:33:136:37 | ... + ... | +| cflow.cs:136:33:136:37 | Before ... + ... | cflow.cs:136:28:136:31 | Before call to constructor ControlFlow | | cflow.cs:136:37:136:37 | 1 | cflow.cs:136:33:136:33 | 0 | -| cflow.cs:136:40:136:42 | {...} | cflow.cs:136:28:136:31 | call to constructor ControlFlow | -| cflow.cs:138:40:138:40 | exit + | cflow.cs:138:40:138:40 | exit + (normal) | -| cflow.cs:138:40:138:40 | exit + (normal) | cflow.cs:141:9:141:17 | return ...; | -| cflow.cs:139:5:142:5 | {...} | cflow.cs:138:40:138:40 | enter + | +| cflow.cs:136:40:136:42 | {...} | cflow.cs:136:28:136:31 | After call to constructor ControlFlow | +| cflow.cs:138:40:138:40 | Exit | cflow.cs:138:40:138:40 | Normal Exit | +| cflow.cs:138:40:138:40 | Normal Exit | cflow.cs:141:9:141:17 | return ...; | +| cflow.cs:138:54:138:54 | x | cflow.cs:138:40:138:40 | Entry | +| cflow.cs:138:69:138:69 | y | cflow.cs:138:54:138:54 | x | +| cflow.cs:139:5:142:5 | {...} | cflow.cs:138:69:138:69 | y | +| cflow.cs:140:9:140:28 | After call to method WriteLine | cflow.cs:140:9:140:28 | call to method WriteLine | +| cflow.cs:140:9:140:28 | Before call to method WriteLine | cflow.cs:140:9:140:29 | ...; | | cflow.cs:140:9:140:28 | call to method WriteLine | cflow.cs:140:27:140:27 | access to parameter x | | cflow.cs:140:9:140:29 | ...; | cflow.cs:139:5:142:5 | {...} | -| cflow.cs:140:27:140:27 | access to parameter x | cflow.cs:140:9:140:29 | ...; | +| cflow.cs:140:9:140:29 | After ...; | cflow.cs:140:9:140:28 | After call to method WriteLine | +| cflow.cs:140:27:140:27 | access to parameter x | cflow.cs:140:9:140:28 | Before call to method WriteLine | +| cflow.cs:141:9:141:17 | Before return ...; | cflow.cs:140:9:140:29 | After ...; | | cflow.cs:141:9:141:17 | return ...; | cflow.cs:141:16:141:16 | access to parameter y | -| cflow.cs:141:16:141:16 | access to parameter y | cflow.cs:140:9:140:28 | call to method WriteLine | -| cflow.cs:144:33:144:35 | exit get_Item | cflow.cs:144:33:144:35 | exit get_Item (normal) | -| cflow.cs:144:33:144:35 | exit get_Item (normal) | cflow.cs:144:39:144:52 | return ...; | -| cflow.cs:144:37:144:54 | {...} | cflow.cs:144:33:144:35 | enter get_Item | -| cflow.cs:144:39:144:52 | return ...; | cflow.cs:144:46:144:51 | ... + ... | +| cflow.cs:141:16:141:16 | access to parameter y | cflow.cs:141:9:141:17 | Before return ...; | +| cflow.cs:144:28:144:28 | i | cflow.cs:144:33:144:35 | Entry | +| cflow.cs:144:28:144:28 | i | cflow.cs:144:56:144:58 | Entry | +| cflow.cs:144:33:144:35 | Exit | cflow.cs:144:33:144:35 | Normal Exit | +| cflow.cs:144:33:144:35 | Normal Exit | cflow.cs:144:39:144:52 | return ...; | +| cflow.cs:144:37:144:54 | {...} | cflow.cs:144:28:144:28 | i | +| cflow.cs:144:39:144:52 | Before return ...; | cflow.cs:144:37:144:54 | {...} | +| cflow.cs:144:39:144:52 | return ...; | cflow.cs:144:46:144:51 | After ... + ... | | cflow.cs:144:46:144:46 | (...) ... | cflow.cs:144:46:144:46 | access to parameter i | -| cflow.cs:144:46:144:46 | access to parameter i | cflow.cs:144:37:144:54 | {...} | +| cflow.cs:144:46:144:46 | After (...) ... | cflow.cs:144:46:144:46 | (...) ... | +| cflow.cs:144:46:144:46 | Before (...) ... | cflow.cs:144:46:144:51 | Before ... + ... | +| cflow.cs:144:46:144:46 | access to parameter i | cflow.cs:144:46:144:46 | Before (...) ... | | cflow.cs:144:46:144:51 | ... + ... | cflow.cs:144:50:144:51 | "" | -| cflow.cs:144:50:144:51 | "" | cflow.cs:144:46:144:46 | (...) ... | -| cflow.cs:144:56:144:58 | exit set_Item | cflow.cs:144:56:144:58 | exit set_Item (normal) | -| cflow.cs:144:56:144:58 | exit set_Item (normal) | cflow.cs:144:60:144:62 | {...} | -| cflow.cs:144:60:144:62 | {...} | cflow.cs:144:56:144:58 | enter set_Item | -| cflow.cs:146:10:146:12 | exit For | cflow.cs:146:10:146:12 | exit For (normal) | -| cflow.cs:146:10:146:12 | exit For (normal) | cflow.cs:173:32:173:41 | ... < ... | -| cflow.cs:147:5:177:5 | {...} | cflow.cs:146:10:146:12 | enter For | +| cflow.cs:144:46:144:51 | After ... + ... | cflow.cs:144:46:144:51 | ... + ... | +| cflow.cs:144:46:144:51 | Before ... + ... | cflow.cs:144:39:144:52 | Before return ...; | +| cflow.cs:144:50:144:51 | "" | cflow.cs:144:46:144:46 | After (...) ... | +| cflow.cs:144:56:144:58 | Exit | cflow.cs:144:56:144:58 | Normal Exit | +| cflow.cs:144:56:144:58 | Normal Exit | cflow.cs:144:60:144:62 | {...} | +| cflow.cs:144:56:144:58 | value | cflow.cs:144:28:144:28 | i | +| cflow.cs:144:60:144:62 | {...} | cflow.cs:144:56:144:58 | value | +| cflow.cs:146:10:146:12 | Exit | cflow.cs:146:10:146:12 | Normal Exit | +| cflow.cs:146:10:146:12 | Normal Exit | cflow.cs:147:5:177:5 | After {...} | +| cflow.cs:147:5:177:5 | After {...} | cflow.cs:173:9:176:9 | After for (...;...;...) ... | +| cflow.cs:147:5:177:5 | {...} | cflow.cs:146:10:146:12 | Entry | | cflow.cs:148:9:148:18 | ... ...; | cflow.cs:147:5:177:5 | {...} | +| cflow.cs:148:9:148:18 | After ... ...; | cflow.cs:148:13:148:17 | After Int32 x = ... | +| cflow.cs:148:13:148:13 | access to local variable x | cflow.cs:148:13:148:17 | Before Int32 x = ... | +| cflow.cs:148:13:148:17 | After Int32 x = ... | cflow.cs:148:13:148:17 | Int32 x = ... | +| cflow.cs:148:13:148:17 | Before Int32 x = ... | cflow.cs:148:9:148:18 | ... ...; | | cflow.cs:148:13:148:17 | Int32 x = ... | cflow.cs:148:17:148:17 | 0 | -| cflow.cs:148:17:148:17 | 0 | cflow.cs:148:9:148:18 | ... ...; | -| cflow.cs:149:9:150:33 | for (...;...;...) ... | cflow.cs:148:13:148:17 | Int32 x = ... | -| cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:149:9:150:33 | for (...;...;...) ... | -| cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:149:24:149:26 | ++... | +| cflow.cs:148:17:148:17 | 0 | cflow.cs:148:13:148:13 | access to local variable x | +| cflow.cs:149:9:150:33 | After for (...;...;...) ... | cflow.cs:149:16:149:21 | After ... < ... [false] | +| cflow.cs:149:9:150:33 | [LoopHeader] for (...;...;...) ... | cflow.cs:150:13:150:33 | After ...; | +| cflow.cs:149:9:150:33 | for (...;...;...) ... | cflow.cs:148:9:148:18 | After ... ...; | +| cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:149:16:149:21 | Before ... < ... | | cflow.cs:149:16:149:21 | ... < ... | cflow.cs:149:20:149:21 | 10 | +| cflow.cs:149:16:149:21 | After ... < ... [false] | cflow.cs:149:16:149:21 | ... < ... | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:149:9:150:33 | for (...;...;...) ... | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:149:24:149:26 | After ++... | | cflow.cs:149:20:149:21 | 10 | cflow.cs:149:16:149:16 | access to local variable x | | cflow.cs:149:24:149:26 | ++... | cflow.cs:149:26:149:26 | access to local variable x | -| cflow.cs:149:26:149:26 | access to local variable x | cflow.cs:150:13:150:32 | call to method WriteLine | +| cflow.cs:149:24:149:26 | After ++... | cflow.cs:149:24:149:26 | ++... | +| cflow.cs:149:24:149:26 | Before ++... | cflow.cs:149:9:150:33 | [LoopHeader] for (...;...;...) ... | +| cflow.cs:149:26:149:26 | access to local variable x | cflow.cs:149:24:149:26 | Before ++... | +| cflow.cs:150:13:150:32 | After call to method WriteLine | cflow.cs:150:13:150:32 | call to method WriteLine | +| cflow.cs:150:13:150:32 | Before call to method WriteLine | cflow.cs:150:13:150:33 | ...; | | cflow.cs:150:13:150:32 | call to method WriteLine | cflow.cs:150:31:150:31 | access to local variable x | -| cflow.cs:150:31:150:31 | access to local variable x | cflow.cs:150:13:150:33 | ...; | -| cflow.cs:152:9:157:9 | for (...;...;...) ... | cflow.cs:149:16:149:21 | ... < ... | +| cflow.cs:150:13:150:33 | ...; | cflow.cs:149:16:149:21 | After ... < ... [true] | +| cflow.cs:150:13:150:33 | After ...; | cflow.cs:150:13:150:32 | After call to method WriteLine | +| cflow.cs:150:31:150:31 | access to local variable x | cflow.cs:150:13:150:32 | Before call to method WriteLine | +| cflow.cs:152:9:157:9 | After for (...;...;...) ... | cflow.cs:156:17:156:22 | break; | +| cflow.cs:152:9:157:9 | [LoopHeader] for (...;...;...) ... | cflow.cs:153:9:157:9 | After {...} | +| cflow.cs:152:9:157:9 | for (...;...;...) ... | cflow.cs:149:9:150:33 | After for (...;...;...) ... | +| cflow.cs:152:18:152:18 | access to local variable x | cflow.cs:152:18:152:20 | Before ...++ | | cflow.cs:152:18:152:20 | ...++ | cflow.cs:152:18:152:18 | access to local variable x | +| cflow.cs:152:18:152:20 | After ...++ | cflow.cs:152:18:152:20 | ...++ | +| cflow.cs:152:18:152:20 | Before ...++ | cflow.cs:152:9:157:9 | [LoopHeader] for (...;...;...) ... | +| cflow.cs:153:9:157:9 | After {...} | cflow.cs:155:13:156:22 | After if (...) ... | | cflow.cs:153:9:157:9 | {...} | cflow.cs:152:9:157:9 | for (...;...;...) ... | -| cflow.cs:153:9:157:9 | {...} | cflow.cs:152:18:152:20 | ...++ | +| cflow.cs:153:9:157:9 | {...} | cflow.cs:152:18:152:20 | After ...++ | +| cflow.cs:154:13:154:32 | After call to method WriteLine | cflow.cs:154:13:154:32 | call to method WriteLine | +| cflow.cs:154:13:154:32 | Before call to method WriteLine | cflow.cs:154:13:154:33 | ...; | | cflow.cs:154:13:154:32 | call to method WriteLine | cflow.cs:154:31:154:31 | access to local variable x | | cflow.cs:154:13:154:33 | ...; | cflow.cs:153:9:157:9 | {...} | -| cflow.cs:154:31:154:31 | access to local variable x | cflow.cs:154:13:154:33 | ...; | -| cflow.cs:155:13:156:22 | if (...) ... | cflow.cs:154:13:154:32 | call to method WriteLine | -| cflow.cs:155:17:155:17 | access to local variable x | cflow.cs:155:13:156:22 | if (...) ... | +| cflow.cs:154:13:154:33 | After ...; | cflow.cs:154:13:154:32 | After call to method WriteLine | +| cflow.cs:154:31:154:31 | access to local variable x | cflow.cs:154:13:154:32 | Before call to method WriteLine | +| cflow.cs:155:13:156:22 | After if (...) ... | cflow.cs:155:17:155:22 | After ... > ... [false] | +| cflow.cs:155:13:156:22 | if (...) ... | cflow.cs:154:13:154:33 | After ...; | +| cflow.cs:155:17:155:17 | access to local variable x | cflow.cs:155:17:155:22 | Before ... > ... | | cflow.cs:155:17:155:22 | ... > ... | cflow.cs:155:21:155:22 | 20 | +| cflow.cs:155:17:155:22 | After ... > ... [true] | cflow.cs:155:17:155:22 | ... > ... | +| cflow.cs:155:17:155:22 | Before ... > ... | cflow.cs:155:13:156:22 | if (...) ... | | cflow.cs:155:21:155:22 | 20 | cflow.cs:155:17:155:17 | access to local variable x | -| cflow.cs:156:17:156:22 | break; | cflow.cs:155:17:155:22 | ... > ... | -| cflow.cs:159:9:165:9 | for (...;...;...) ... | cflow.cs:156:17:156:22 | break; | +| cflow.cs:156:17:156:22 | Before break; | cflow.cs:155:17:155:22 | After ... > ... [true] | +| cflow.cs:156:17:156:22 | break; | cflow.cs:156:17:156:22 | Before break; | +| cflow.cs:159:9:165:9 | After for (...;...;...) ... | cflow.cs:164:17:164:22 | break; | +| cflow.cs:159:9:165:9 | [LoopHeader] for (...;...;...) ... | cflow.cs:160:9:165:9 | After {...} | +| cflow.cs:159:9:165:9 | for (...;...;...) ... | cflow.cs:152:9:157:9 | After for (...;...;...) ... | +| cflow.cs:160:9:165:9 | After {...} | cflow.cs:163:13:164:22 | After if (...) ... | +| cflow.cs:160:9:165:9 | {...} | cflow.cs:159:9:165:9 | [LoopHeader] for (...;...;...) ... | | cflow.cs:160:9:165:9 | {...} | cflow.cs:159:9:165:9 | for (...;...;...) ... | +| cflow.cs:161:13:161:32 | After call to method WriteLine | cflow.cs:161:13:161:32 | call to method WriteLine | +| cflow.cs:161:13:161:32 | Before call to method WriteLine | cflow.cs:161:13:161:33 | ...; | | cflow.cs:161:13:161:32 | call to method WriteLine | cflow.cs:161:31:161:31 | access to local variable x | | cflow.cs:161:13:161:33 | ...; | cflow.cs:160:9:165:9 | {...} | -| cflow.cs:161:31:161:31 | access to local variable x | cflow.cs:161:13:161:33 | ...; | -| cflow.cs:162:13:162:13 | access to local variable x | cflow.cs:162:13:162:16 | ...; | +| cflow.cs:161:13:161:33 | After ...; | cflow.cs:161:13:161:32 | After call to method WriteLine | +| cflow.cs:161:31:161:31 | access to local variable x | cflow.cs:161:13:161:32 | Before call to method WriteLine | +| cflow.cs:162:13:162:13 | access to local variable x | cflow.cs:162:13:162:15 | Before ...++ | | cflow.cs:162:13:162:15 | ...++ | cflow.cs:162:13:162:13 | access to local variable x | -| cflow.cs:162:13:162:16 | ...; | cflow.cs:161:13:161:32 | call to method WriteLine | -| cflow.cs:163:13:164:22 | if (...) ... | cflow.cs:162:13:162:15 | ...++ | -| cflow.cs:163:17:163:17 | access to local variable x | cflow.cs:163:13:164:22 | if (...) ... | +| cflow.cs:162:13:162:15 | After ...++ | cflow.cs:162:13:162:15 | ...++ | +| cflow.cs:162:13:162:15 | Before ...++ | cflow.cs:162:13:162:16 | ...; | +| cflow.cs:162:13:162:16 | ...; | cflow.cs:161:13:161:33 | After ...; | +| cflow.cs:162:13:162:16 | After ...; | cflow.cs:162:13:162:15 | After ...++ | +| cflow.cs:163:13:164:22 | After if (...) ... | cflow.cs:163:17:163:22 | After ... > ... [false] | +| cflow.cs:163:13:164:22 | if (...) ... | cflow.cs:162:13:162:16 | After ...; | +| cflow.cs:163:17:163:17 | access to local variable x | cflow.cs:163:17:163:22 | Before ... > ... | | cflow.cs:163:17:163:22 | ... > ... | cflow.cs:163:21:163:22 | 30 | +| cflow.cs:163:17:163:22 | After ... > ... [true] | cflow.cs:163:17:163:22 | ... > ... | +| cflow.cs:163:17:163:22 | Before ... > ... | cflow.cs:163:13:164:22 | if (...) ... | | cflow.cs:163:21:163:22 | 30 | cflow.cs:163:17:163:17 | access to local variable x | -| cflow.cs:164:17:164:22 | break; | cflow.cs:163:17:163:22 | ... > ... | -| cflow.cs:167:9:171:9 | for (...;...;...) ... | cflow.cs:164:17:164:22 | break; | -| cflow.cs:167:16:167:16 | access to local variable x | cflow.cs:167:9:171:9 | for (...;...;...) ... | -| cflow.cs:167:16:167:16 | access to local variable x | cflow.cs:170:13:170:15 | ...++ | +| cflow.cs:164:17:164:22 | Before break; | cflow.cs:163:17:163:22 | After ... > ... [true] | +| cflow.cs:164:17:164:22 | break; | cflow.cs:164:17:164:22 | Before break; | +| cflow.cs:167:9:171:9 | After for (...;...;...) ... | cflow.cs:167:16:167:21 | After ... < ... [false] | +| cflow.cs:167:9:171:9 | [LoopHeader] for (...;...;...) ... | cflow.cs:168:9:171:9 | After {...} | +| cflow.cs:167:9:171:9 | for (...;...;...) ... | cflow.cs:159:9:165:9 | After for (...;...;...) ... | +| cflow.cs:167:16:167:16 | access to local variable x | cflow.cs:167:16:167:21 | Before ... < ... | | cflow.cs:167:16:167:21 | ... < ... | cflow.cs:167:20:167:21 | 40 | +| cflow.cs:167:16:167:21 | After ... < ... [false] | cflow.cs:167:16:167:21 | ... < ... | +| cflow.cs:167:16:167:21 | Before ... < ... | cflow.cs:167:9:171:9 | [LoopHeader] for (...;...;...) ... | +| cflow.cs:167:16:167:21 | Before ... < ... | cflow.cs:167:9:171:9 | for (...;...;...) ... | | cflow.cs:167:20:167:21 | 40 | cflow.cs:167:16:167:16 | access to local variable x | +| cflow.cs:168:9:171:9 | After {...} | cflow.cs:170:13:170:16 | After ...; | +| cflow.cs:168:9:171:9 | {...} | cflow.cs:167:16:167:21 | After ... < ... [true] | +| cflow.cs:169:13:169:32 | After call to method WriteLine | cflow.cs:169:13:169:32 | call to method WriteLine | +| cflow.cs:169:13:169:32 | Before call to method WriteLine | cflow.cs:169:13:169:33 | ...; | | cflow.cs:169:13:169:32 | call to method WriteLine | cflow.cs:169:31:169:31 | access to local variable x | | cflow.cs:169:13:169:33 | ...; | cflow.cs:168:9:171:9 | {...} | -| cflow.cs:169:31:169:31 | access to local variable x | cflow.cs:169:13:169:33 | ...; | -| cflow.cs:170:13:170:13 | access to local variable x | cflow.cs:170:13:170:16 | ...; | +| cflow.cs:169:13:169:33 | After ...; | cflow.cs:169:13:169:32 | After call to method WriteLine | +| cflow.cs:169:31:169:31 | access to local variable x | cflow.cs:169:13:169:32 | Before call to method WriteLine | +| cflow.cs:170:13:170:13 | access to local variable x | cflow.cs:170:13:170:15 | Before ...++ | | cflow.cs:170:13:170:15 | ...++ | cflow.cs:170:13:170:13 | access to local variable x | -| cflow.cs:170:13:170:16 | ...; | cflow.cs:169:13:169:32 | call to method WriteLine | -| cflow.cs:173:9:176:9 | for (...;...;...) ... | cflow.cs:167:16:167:21 | ... < ... | +| cflow.cs:170:13:170:15 | After ...++ | cflow.cs:170:13:170:15 | ...++ | +| cflow.cs:170:13:170:15 | Before ...++ | cflow.cs:170:13:170:16 | ...; | +| cflow.cs:170:13:170:16 | ...; | cflow.cs:169:13:169:33 | After ...; | +| cflow.cs:170:13:170:16 | After ...; | cflow.cs:170:13:170:15 | After ...++ | +| cflow.cs:173:9:176:9 | After for (...;...;...) ... | cflow.cs:173:32:173:41 | After ... < ... [false] | +| cflow.cs:173:9:176:9 | [LoopHeader] for (...;...;...) ... | cflow.cs:174:9:176:9 | After {...} | +| cflow.cs:173:9:176:9 | for (...;...;...) ... | cflow.cs:167:9:171:9 | After for (...;...;...) ... | +| cflow.cs:173:18:173:18 | access to local variable i | cflow.cs:173:18:173:22 | Before Int32 i = ... | +| cflow.cs:173:18:173:22 | After Int32 i = ... | cflow.cs:173:18:173:22 | Int32 i = ... | +| cflow.cs:173:18:173:22 | Before Int32 i = ... | cflow.cs:173:9:176:9 | for (...;...;...) ... | | cflow.cs:173:18:173:22 | Int32 i = ... | cflow.cs:173:22:173:22 | 0 | -| cflow.cs:173:22:173:22 | 0 | cflow.cs:173:9:176:9 | for (...;...;...) ... | +| cflow.cs:173:22:173:22 | 0 | cflow.cs:173:18:173:18 | access to local variable i | +| cflow.cs:173:25:173:25 | access to local variable j | cflow.cs:173:25:173:29 | Before Int32 j = ... | +| cflow.cs:173:25:173:29 | After Int32 j = ... | cflow.cs:173:25:173:29 | Int32 j = ... | +| cflow.cs:173:25:173:29 | Before Int32 j = ... | cflow.cs:173:18:173:22 | After Int32 i = ... | | cflow.cs:173:25:173:29 | Int32 j = ... | cflow.cs:173:29:173:29 | 0 | -| cflow.cs:173:29:173:29 | 0 | cflow.cs:173:18:173:22 | Int32 i = ... | -| cflow.cs:173:32:173:32 | access to local variable i | cflow.cs:173:25:173:29 | Int32 j = ... | -| cflow.cs:173:32:173:32 | access to local variable i | cflow.cs:173:49:173:51 | ...++ | +| cflow.cs:173:29:173:29 | 0 | cflow.cs:173:25:173:25 | access to local variable j | +| cflow.cs:173:32:173:32 | access to local variable i | cflow.cs:173:32:173:36 | Before ... + ... | | cflow.cs:173:32:173:36 | ... + ... | cflow.cs:173:36:173:36 | access to local variable j | +| cflow.cs:173:32:173:36 | After ... + ... | cflow.cs:173:32:173:36 | ... + ... | +| cflow.cs:173:32:173:36 | Before ... + ... | cflow.cs:173:32:173:41 | Before ... < ... | | cflow.cs:173:32:173:41 | ... < ... | cflow.cs:173:40:173:41 | 10 | +| cflow.cs:173:32:173:41 | After ... < ... [false] | cflow.cs:173:32:173:41 | ... < ... | +| cflow.cs:173:32:173:41 | Before ... < ... | cflow.cs:173:25:173:29 | After Int32 j = ... | +| cflow.cs:173:32:173:41 | Before ... < ... | cflow.cs:173:49:173:51 | After ...++ | | cflow.cs:173:36:173:36 | access to local variable j | cflow.cs:173:32:173:32 | access to local variable i | -| cflow.cs:173:40:173:41 | 10 | cflow.cs:173:32:173:36 | ... + ... | -| cflow.cs:173:44:173:44 | access to local variable i | cflow.cs:175:13:175:36 | call to method WriteLine | +| cflow.cs:173:40:173:41 | 10 | cflow.cs:173:32:173:36 | After ... + ... | +| cflow.cs:173:44:173:44 | access to local variable i | cflow.cs:173:44:173:46 | Before ...++ | | cflow.cs:173:44:173:46 | ...++ | cflow.cs:173:44:173:44 | access to local variable i | -| cflow.cs:173:49:173:49 | access to local variable j | cflow.cs:173:44:173:46 | ...++ | +| cflow.cs:173:44:173:46 | After ...++ | cflow.cs:173:44:173:46 | ...++ | +| cflow.cs:173:44:173:46 | Before ...++ | cflow.cs:173:9:176:9 | [LoopHeader] for (...;...;...) ... | +| cflow.cs:173:49:173:49 | access to local variable j | cflow.cs:173:49:173:51 | Before ...++ | | cflow.cs:173:49:173:51 | ...++ | cflow.cs:173:49:173:49 | access to local variable j | -| cflow.cs:175:13:175:36 | call to method WriteLine | cflow.cs:175:31:175:35 | ... + ... | +| cflow.cs:173:49:173:51 | After ...++ | cflow.cs:173:49:173:51 | ...++ | +| cflow.cs:173:49:173:51 | Before ...++ | cflow.cs:173:44:173:46 | After ...++ | +| cflow.cs:174:9:176:9 | After {...} | cflow.cs:175:13:175:37 | After ...; | +| cflow.cs:174:9:176:9 | {...} | cflow.cs:173:32:173:41 | After ... < ... [true] | +| cflow.cs:175:13:175:36 | After call to method WriteLine | cflow.cs:175:13:175:36 | call to method WriteLine | +| cflow.cs:175:13:175:36 | Before call to method WriteLine | cflow.cs:175:13:175:37 | ...; | +| cflow.cs:175:13:175:36 | call to method WriteLine | cflow.cs:175:31:175:35 | After ... + ... | | cflow.cs:175:13:175:37 | ...; | cflow.cs:174:9:176:9 | {...} | -| cflow.cs:175:31:175:31 | access to local variable i | cflow.cs:175:13:175:37 | ...; | +| cflow.cs:175:13:175:37 | After ...; | cflow.cs:175:13:175:36 | After call to method WriteLine | +| cflow.cs:175:31:175:31 | access to local variable i | cflow.cs:175:31:175:35 | Before ... + ... | | cflow.cs:175:31:175:35 | ... + ... | cflow.cs:175:35:175:35 | access to local variable j | +| cflow.cs:175:31:175:35 | After ... + ... | cflow.cs:175:31:175:35 | ... + ... | +| cflow.cs:175:31:175:35 | Before ... + ... | cflow.cs:175:13:175:36 | Before call to method WriteLine | | cflow.cs:175:35:175:35 | access to local variable j | cflow.cs:175:31:175:31 | access to local variable i | -| cflow.cs:179:10:179:16 | exit Lambdas | cflow.cs:179:10:179:16 | exit Lambdas (normal) | -| cflow.cs:179:10:179:16 | exit Lambdas (normal) | cflow.cs:182:24:182:61 | Func z = ... | -| cflow.cs:180:5:183:5 | {...} | cflow.cs:179:10:179:16 | enter Lambdas | +| cflow.cs:179:10:179:16 | Exit | cflow.cs:179:10:179:16 | Normal Exit | +| cflow.cs:179:10:179:16 | Normal Exit | cflow.cs:180:5:183:5 | After {...} | +| cflow.cs:180:5:183:5 | After {...} | cflow.cs:182:9:182:62 | After ... ...; | +| cflow.cs:180:5:183:5 | {...} | cflow.cs:179:10:179:16 | Entry | | cflow.cs:181:9:181:38 | ... ...; | cflow.cs:180:5:183:5 | {...} | +| cflow.cs:181:9:181:38 | After ... ...; | cflow.cs:181:24:181:37 | After Func y = ... | +| cflow.cs:181:24:181:24 | access to local variable y | cflow.cs:181:24:181:37 | Before Func y = ... | +| cflow.cs:181:24:181:37 | After Func y = ... | cflow.cs:181:24:181:37 | Func y = ... | +| cflow.cs:181:24:181:37 | Before Func y = ... | cflow.cs:181:9:181:38 | ... ...; | | cflow.cs:181:24:181:37 | Func y = ... | cflow.cs:181:28:181:37 | (...) => ... | -| cflow.cs:181:28:181:37 | (...) => ... | cflow.cs:181:9:181:38 | ... ...; | -| cflow.cs:181:28:181:37 | exit (...) => ... | cflow.cs:181:28:181:37 | exit (...) => ... (normal) | -| cflow.cs:181:28:181:37 | exit (...) => ... (normal) | cflow.cs:181:33:181:37 | ... + ... | -| cflow.cs:181:33:181:33 | access to parameter x | cflow.cs:181:28:181:37 | enter (...) => ... | +| cflow.cs:181:28:181:28 | x | cflow.cs:181:28:181:37 | Entry | +| cflow.cs:181:28:181:37 | (...) => ... | cflow.cs:181:24:181:24 | access to local variable y | +| cflow.cs:181:28:181:37 | Exit | cflow.cs:181:28:181:37 | Normal Exit | +| cflow.cs:181:28:181:37 | Normal Exit | cflow.cs:181:33:181:37 | After ... + ... | +| cflow.cs:181:33:181:33 | access to parameter x | cflow.cs:181:33:181:37 | Before ... + ... | | cflow.cs:181:33:181:37 | ... + ... | cflow.cs:181:37:181:37 | 1 | +| cflow.cs:181:33:181:37 | After ... + ... | cflow.cs:181:33:181:37 | ... + ... | +| cflow.cs:181:33:181:37 | Before ... + ... | cflow.cs:181:28:181:28 | x | | cflow.cs:181:37:181:37 | 1 | cflow.cs:181:33:181:33 | access to parameter x | -| cflow.cs:182:9:182:62 | ... ...; | cflow.cs:181:24:181:37 | Func y = ... | +| cflow.cs:182:9:182:62 | ... ...; | cflow.cs:181:9:181:38 | After ... ...; | +| cflow.cs:182:9:182:62 | After ... ...; | cflow.cs:182:24:182:61 | After Func z = ... | +| cflow.cs:182:24:182:24 | access to local variable z | cflow.cs:182:24:182:61 | Before Func z = ... | +| cflow.cs:182:24:182:61 | After Func z = ... | cflow.cs:182:24:182:61 | Func z = ... | +| cflow.cs:182:24:182:61 | Before Func z = ... | cflow.cs:182:9:182:62 | ... ...; | | cflow.cs:182:24:182:61 | Func z = ... | cflow.cs:182:28:182:61 | delegate(...) { ... } | -| cflow.cs:182:28:182:61 | delegate(...) { ... } | cflow.cs:182:9:182:62 | ... ...; | -| cflow.cs:182:28:182:61 | exit delegate(...) { ... } | cflow.cs:182:28:182:61 | exit delegate(...) { ... } (normal) | -| cflow.cs:182:28:182:61 | exit delegate(...) { ... } (normal) | cflow.cs:182:47:182:59 | return ...; | -| cflow.cs:182:45:182:61 | {...} | cflow.cs:182:28:182:61 | enter delegate(...) { ... } | -| cflow.cs:182:47:182:59 | return ...; | cflow.cs:182:54:182:58 | ... + ... | -| cflow.cs:182:54:182:54 | access to parameter x | cflow.cs:182:45:182:61 | {...} | +| cflow.cs:182:28:182:61 | Exit | cflow.cs:182:28:182:61 | Normal Exit | +| cflow.cs:182:28:182:61 | Normal Exit | cflow.cs:182:47:182:59 | return ...; | +| cflow.cs:182:28:182:61 | delegate(...) { ... } | cflow.cs:182:24:182:24 | access to local variable z | +| cflow.cs:182:42:182:42 | x | cflow.cs:182:28:182:61 | Entry | +| cflow.cs:182:45:182:61 | {...} | cflow.cs:182:42:182:42 | x | +| cflow.cs:182:47:182:59 | Before return ...; | cflow.cs:182:45:182:61 | {...} | +| cflow.cs:182:47:182:59 | return ...; | cflow.cs:182:54:182:58 | After ... + ... | +| cflow.cs:182:54:182:54 | access to parameter x | cflow.cs:182:54:182:58 | Before ... + ... | | cflow.cs:182:54:182:58 | ... + ... | cflow.cs:182:58:182:58 | 1 | +| cflow.cs:182:54:182:58 | After ... + ... | cflow.cs:182:54:182:58 | ... + ... | +| cflow.cs:182:54:182:58 | Before ... + ... | cflow.cs:182:47:182:59 | Before return ...; | | cflow.cs:182:58:182:58 | 1 | cflow.cs:182:54:182:54 | access to parameter x | -| cflow.cs:185:10:185:18 | exit LogicalOr | cflow.cs:185:10:185:18 | exit LogicalOr (normal) | -| cflow.cs:185:10:185:18 | exit LogicalOr (normal) | cflow.cs:190:13:190:51 | call to method WriteLine | -| cflow.cs:186:5:191:5 | {...} | cflow.cs:185:10:185:18 | enter LogicalOr | +| cflow.cs:185:10:185:18 | Exit | cflow.cs:185:10:185:18 | Normal Exit | +| cflow.cs:185:10:185:18 | Normal Exit | cflow.cs:186:5:191:5 | After {...} | +| cflow.cs:186:5:191:5 | After {...} | cflow.cs:187:9:190:52 | After if (...) ... | +| cflow.cs:186:5:191:5 | {...} | cflow.cs:185:10:185:18 | Entry | +| cflow.cs:187:9:190:52 | After if (...) ... | cflow.cs:188:13:188:55 | After ...; | +| cflow.cs:187:9:190:52 | After if (...) ... | cflow.cs:190:13:190:52 | After ...; | | cflow.cs:187:9:190:52 | if (...) ... | cflow.cs:186:5:191:5 | {...} | -| cflow.cs:187:13:187:13 | 1 | cflow.cs:187:9:190:52 | if (...) ... | +| cflow.cs:187:13:187:13 | 1 | cflow.cs:187:13:187:18 | Before ... == ... | | cflow.cs:187:13:187:18 | ... == ... | cflow.cs:187:18:187:18 | 2 | -| cflow.cs:187:13:187:28 | ... \|\| ... | cflow.cs:187:23:187:28 | ... == ... | -| cflow.cs:187:13:187:50 | ... \|\| ... | cflow.cs:187:34:187:49 | ... && ... | +| cflow.cs:187:13:187:18 | Before ... == ... | cflow.cs:187:13:187:28 | ... \|\| ... | +| cflow.cs:187:13:187:28 | ... \|\| ... | cflow.cs:187:13:187:50 | ... \|\| ... | +| cflow.cs:187:13:187:28 | After ... \|\| ... [false] | cflow.cs:187:23:187:28 | After ... == ... [false] | +| cflow.cs:187:13:187:28 | After ... \|\| ... [true] | cflow.cs:187:13:187:18 | After ... == ... [true] | +| cflow.cs:187:13:187:28 | After ... \|\| ... [true] | cflow.cs:187:23:187:28 | After ... == ... [true] | +| cflow.cs:187:13:187:50 | ... \|\| ... | cflow.cs:187:9:190:52 | if (...) ... | +| cflow.cs:187:13:187:50 | After ... \|\| ... [false] | cflow.cs:187:34:187:49 | After ... && ... [false] | +| cflow.cs:187:13:187:50 | After ... \|\| ... [true] | cflow.cs:187:13:187:28 | After ... \|\| ... [true] | +| cflow.cs:187:13:187:50 | After ... \|\| ... [true] | cflow.cs:187:34:187:49 | After ... && ... [true] | | cflow.cs:187:18:187:18 | 2 | cflow.cs:187:13:187:13 | 1 | -| cflow.cs:187:23:187:23 | 2 | cflow.cs:187:13:187:18 | ... == ... | +| cflow.cs:187:23:187:23 | 2 | cflow.cs:187:23:187:28 | Before ... == ... | | cflow.cs:187:23:187:28 | ... == ... | cflow.cs:187:28:187:28 | 3 | +| cflow.cs:187:23:187:28 | Before ... == ... | cflow.cs:187:13:187:18 | After ... == ... [false] | | cflow.cs:187:28:187:28 | 3 | cflow.cs:187:23:187:23 | 2 | -| cflow.cs:187:34:187:34 | 1 | cflow.cs:187:13:187:28 | ... \|\| ... | +| cflow.cs:187:34:187:34 | 1 | cflow.cs:187:34:187:39 | Before ... == ... | | cflow.cs:187:34:187:39 | ... == ... | cflow.cs:187:39:187:39 | 3 | -| cflow.cs:187:34:187:49 | ... && ... | cflow.cs:187:34:187:39 | ... == ... | +| cflow.cs:187:34:187:39 | Before ... == ... | cflow.cs:187:34:187:49 | ... && ... | +| cflow.cs:187:34:187:49 | ... && ... | cflow.cs:187:13:187:28 | After ... \|\| ... [false] | +| cflow.cs:187:34:187:49 | After ... && ... [false] | cflow.cs:187:34:187:39 | After ... == ... [false] | +| cflow.cs:187:34:187:49 | After ... && ... [false] | cflow.cs:187:44:187:49 | After ... == ... [false] | +| cflow.cs:187:34:187:49 | After ... && ... [true] | cflow.cs:187:44:187:49 | After ... == ... [true] | | cflow.cs:187:39:187:39 | 3 | cflow.cs:187:34:187:34 | 1 | +| cflow.cs:187:44:187:44 | 3 | cflow.cs:187:44:187:49 | Before ... == ... | +| cflow.cs:187:44:187:49 | ... == ... | cflow.cs:187:49:187:49 | 1 | +| cflow.cs:187:44:187:49 | Before ... == ... | cflow.cs:187:34:187:39 | After ... == ... [true] | +| cflow.cs:187:49:187:49 | 1 | cflow.cs:187:44:187:44 | 3 | +| cflow.cs:188:13:188:54 | After call to method WriteLine | cflow.cs:188:13:188:54 | call to method WriteLine | +| cflow.cs:188:13:188:54 | Before call to method WriteLine | cflow.cs:188:13:188:55 | ...; | +| cflow.cs:188:13:188:54 | call to method WriteLine | cflow.cs:188:31:188:53 | "This shouldn't happen" | +| cflow.cs:188:13:188:55 | ...; | cflow.cs:187:13:187:50 | After ... \|\| ... [true] | +| cflow.cs:188:13:188:55 | After ...; | cflow.cs:188:13:188:54 | After call to method WriteLine | +| cflow.cs:188:31:188:53 | "This shouldn't happen" | cflow.cs:188:13:188:54 | Before call to method WriteLine | +| cflow.cs:190:13:190:51 | After call to method WriteLine | cflow.cs:190:13:190:51 | call to method WriteLine | +| cflow.cs:190:13:190:51 | Before call to method WriteLine | cflow.cs:190:13:190:52 | ...; | | cflow.cs:190:13:190:51 | call to method WriteLine | cflow.cs:190:31:190:50 | "This should happen" | -| cflow.cs:190:13:190:52 | ...; | cflow.cs:187:13:187:50 | ... \|\| ... | -| cflow.cs:190:31:190:50 | "This should happen" | cflow.cs:190:13:190:52 | ...; | -| cflow.cs:193:10:193:17 | exit Booleans (abnormal) | cflow.cs:203:17:203:38 | throw ...; | -| cflow.cs:193:10:193:17 | exit Booleans (normal) | cflow.cs:200:13:200:62 | [false] ... \|\| ... | -| cflow.cs:194:5:206:5 | {...} | cflow.cs:193:10:193:17 | enter Booleans | +| cflow.cs:190:13:190:52 | ...; | cflow.cs:187:13:187:50 | After ... \|\| ... [false] | +| cflow.cs:190:13:190:52 | After ...; | cflow.cs:190:13:190:51 | After call to method WriteLine | +| cflow.cs:190:31:190:50 | "This should happen" | cflow.cs:190:13:190:51 | Before call to method WriteLine | +| cflow.cs:193:10:193:17 | Exceptional Exit | cflow.cs:203:17:203:38 | throw ...; | +| cflow.cs:193:10:193:17 | Normal Exit | cflow.cs:194:5:206:5 | After {...} | +| cflow.cs:194:5:206:5 | After {...} | cflow.cs:200:9:205:9 | After if (...) ... | +| cflow.cs:194:5:206:5 | {...} | cflow.cs:193:10:193:17 | Entry | | cflow.cs:195:9:195:57 | ... ...; | cflow.cs:194:5:206:5 | {...} | -| cflow.cs:195:13:195:56 | Boolean b = ... | cflow.cs:195:17:195:56 | ... && ... | +| cflow.cs:195:9:195:57 | After ... ...; | cflow.cs:195:13:195:56 | After Boolean b = ... | +| cflow.cs:195:13:195:13 | access to local variable b | cflow.cs:195:13:195:56 | Before Boolean b = ... | +| cflow.cs:195:13:195:56 | After Boolean b = ... | cflow.cs:195:13:195:56 | Boolean b = ... | +| cflow.cs:195:13:195:56 | Before Boolean b = ... | cflow.cs:195:9:195:57 | ... ...; | +| cflow.cs:195:13:195:56 | Boolean b = ... | cflow.cs:195:17:195:56 | After ... && ... | +| cflow.cs:195:17:195:21 | After access to field Field | cflow.cs:195:17:195:21 | access to field Field | +| cflow.cs:195:17:195:21 | Before access to field Field | cflow.cs:195:17:195:28 | Before access to property Length | | cflow.cs:195:17:195:21 | access to field Field | cflow.cs:195:17:195:21 | this access | -| cflow.cs:195:17:195:21 | this access | cflow.cs:195:9:195:57 | ... ...; | -| cflow.cs:195:17:195:28 | access to property Length | cflow.cs:195:17:195:21 | access to field Field | +| cflow.cs:195:17:195:21 | this access | cflow.cs:195:17:195:21 | Before access to field Field | +| cflow.cs:195:17:195:28 | After access to property Length | cflow.cs:195:17:195:28 | access to property Length | +| cflow.cs:195:17:195:28 | Before access to property Length | cflow.cs:195:17:195:32 | Before ... > ... | +| cflow.cs:195:17:195:28 | access to property Length | cflow.cs:195:17:195:21 | After access to field Field | | cflow.cs:195:17:195:32 | ... > ... | cflow.cs:195:32:195:32 | 0 | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:195:17:195:32 | ... > ... | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:195:37:195:56 | !... | -| cflow.cs:195:32:195:32 | 0 | cflow.cs:195:17:195:28 | access to property Length | -| cflow.cs:195:37:195:56 | !... | cflow.cs:195:39:195:55 | ... == ... | +| cflow.cs:195:17:195:32 | Before ... > ... | cflow.cs:195:17:195:56 | ... && ... | +| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:195:13:195:13 | access to local variable b | +| cflow.cs:195:17:195:56 | After ... && ... | cflow.cs:195:17:195:32 | After ... > ... [false] | +| cflow.cs:195:17:195:56 | After ... && ... | cflow.cs:195:37:195:56 | After !... | +| cflow.cs:195:32:195:32 | 0 | cflow.cs:195:17:195:28 | After access to property Length | +| cflow.cs:195:37:195:56 | !... | cflow.cs:195:17:195:32 | After ... > ... [true] | +| cflow.cs:195:37:195:56 | After !... | cflow.cs:195:39:195:55 | After ... == ... | +| cflow.cs:195:39:195:43 | After access to field Field | cflow.cs:195:39:195:43 | access to field Field | +| cflow.cs:195:39:195:43 | Before access to field Field | cflow.cs:195:39:195:50 | Before access to property Length | | cflow.cs:195:39:195:43 | access to field Field | cflow.cs:195:39:195:43 | this access | -| cflow.cs:195:39:195:50 | access to property Length | cflow.cs:195:39:195:43 | access to field Field | +| cflow.cs:195:39:195:43 | this access | cflow.cs:195:39:195:43 | Before access to field Field | +| cflow.cs:195:39:195:50 | After access to property Length | cflow.cs:195:39:195:50 | access to property Length | +| cflow.cs:195:39:195:50 | Before access to property Length | cflow.cs:195:39:195:55 | Before ... == ... | +| cflow.cs:195:39:195:50 | access to property Length | cflow.cs:195:39:195:43 | After access to field Field | | cflow.cs:195:39:195:55 | ... == ... | cflow.cs:195:55:195:55 | 1 | -| cflow.cs:195:55:195:55 | 1 | cflow.cs:195:39:195:50 | access to property Length | -| cflow.cs:197:9:198:49 | if (...) ... | cflow.cs:195:13:195:56 | Boolean b = ... | -| cflow.cs:197:13:197:47 | [false] !... | cflow.cs:197:15:197:46 | [true] ... ? ... : ... | -| cflow.cs:197:13:197:47 | [true] !... | cflow.cs:197:15:197:46 | [false] ... ? ... : ... | +| cflow.cs:195:39:195:55 | After ... == ... | cflow.cs:195:39:195:55 | ... == ... | +| cflow.cs:195:39:195:55 | Before ... == ... | cflow.cs:195:37:195:56 | !... | +| cflow.cs:195:55:195:55 | 1 | cflow.cs:195:39:195:50 | After access to property Length | +| cflow.cs:197:9:198:49 | After if (...) ... | cflow.cs:197:13:197:47 | After !... [false] | +| cflow.cs:197:9:198:49 | After if (...) ... | cflow.cs:198:13:198:49 | After ...; | +| cflow.cs:197:9:198:49 | if (...) ... | cflow.cs:195:9:195:57 | After ... ...; | +| cflow.cs:197:13:197:47 | !... | cflow.cs:197:9:198:49 | if (...) ... | +| cflow.cs:197:13:197:47 | After !... [false] | cflow.cs:197:15:197:46 | After ... ? ... : ... [true] | +| cflow.cs:197:13:197:47 | After !... [true] | cflow.cs:197:15:197:46 | After ... ? ... : ... [false] | +| cflow.cs:197:15:197:19 | After access to field Field | cflow.cs:197:15:197:19 | access to field Field | +| cflow.cs:197:15:197:19 | Before access to field Field | cflow.cs:197:15:197:26 | Before access to property Length | | cflow.cs:197:15:197:19 | access to field Field | cflow.cs:197:15:197:19 | this access | -| cflow.cs:197:15:197:19 | this access | cflow.cs:197:9:198:49 | if (...) ... | -| cflow.cs:197:15:197:26 | access to property Length | cflow.cs:197:15:197:19 | access to field Field | +| cflow.cs:197:15:197:19 | this access | cflow.cs:197:15:197:19 | Before access to field Field | +| cflow.cs:197:15:197:26 | After access to property Length | cflow.cs:197:15:197:26 | access to property Length | +| cflow.cs:197:15:197:26 | Before access to property Length | cflow.cs:197:15:197:31 | Before ... == ... | +| cflow.cs:197:15:197:26 | access to property Length | cflow.cs:197:15:197:19 | After access to field Field | | cflow.cs:197:15:197:31 | ... == ... | cflow.cs:197:31:197:31 | 0 | -| cflow.cs:197:15:197:46 | [false] ... ? ... : ... | cflow.cs:197:35:197:39 | false | -| cflow.cs:197:15:197:46 | [true] ... ? ... : ... | cflow.cs:197:43:197:46 | true | -| cflow.cs:197:31:197:31 | 0 | cflow.cs:197:15:197:26 | access to property Length | -| cflow.cs:198:13:198:48 | ... = ... | cflow.cs:198:17:198:48 | ... ? ... : ... | -| cflow.cs:198:13:198:49 | ...; | cflow.cs:197:13:197:47 | [true] !... | +| cflow.cs:197:15:197:31 | Before ... == ... | cflow.cs:197:15:197:46 | ... ? ... : ... | +| cflow.cs:197:15:197:46 | ... ? ... : ... | cflow.cs:197:13:197:47 | !... | +| cflow.cs:197:15:197:46 | After ... ? ... : ... [false] | cflow.cs:197:35:197:39 | After false [false] | +| cflow.cs:197:15:197:46 | After ... ? ... : ... [true] | cflow.cs:197:43:197:46 | After true [true] | +| cflow.cs:197:31:197:31 | 0 | cflow.cs:197:15:197:26 | After access to property Length | +| cflow.cs:197:35:197:39 | After false [false] | cflow.cs:197:35:197:39 | false | +| cflow.cs:197:35:197:39 | false | cflow.cs:197:15:197:31 | After ... == ... [true] | +| cflow.cs:197:43:197:46 | After true [true] | cflow.cs:197:43:197:46 | true | +| cflow.cs:197:43:197:46 | true | cflow.cs:197:15:197:31 | After ... == ... [false] | +| cflow.cs:198:13:198:13 | access to local variable b | cflow.cs:198:13:198:48 | Before ... = ... | +| cflow.cs:198:13:198:48 | ... = ... | cflow.cs:198:17:198:48 | After ... ? ... : ... | +| cflow.cs:198:13:198:48 | After ... = ... | cflow.cs:198:13:198:48 | ... = ... | +| cflow.cs:198:13:198:48 | Before ... = ... | cflow.cs:198:13:198:49 | ...; | +| cflow.cs:198:13:198:49 | ...; | cflow.cs:197:13:197:47 | After !... [true] | +| cflow.cs:198:13:198:49 | After ...; | cflow.cs:198:13:198:48 | After ... = ... | +| cflow.cs:198:17:198:21 | After access to field Field | cflow.cs:198:17:198:21 | access to field Field | +| cflow.cs:198:17:198:21 | Before access to field Field | cflow.cs:198:17:198:28 | Before access to property Length | | cflow.cs:198:17:198:21 | access to field Field | cflow.cs:198:17:198:21 | this access | -| cflow.cs:198:17:198:21 | this access | cflow.cs:198:13:198:49 | ...; | -| cflow.cs:198:17:198:28 | access to property Length | cflow.cs:198:17:198:21 | access to field Field | +| cflow.cs:198:17:198:21 | this access | cflow.cs:198:17:198:21 | Before access to field Field | +| cflow.cs:198:17:198:28 | After access to property Length | cflow.cs:198:17:198:28 | access to property Length | +| cflow.cs:198:17:198:28 | Before access to property Length | cflow.cs:198:17:198:33 | Before ... == ... | +| cflow.cs:198:17:198:28 | access to property Length | cflow.cs:198:17:198:21 | After access to field Field | | cflow.cs:198:17:198:33 | ... == ... | cflow.cs:198:33:198:33 | 0 | -| cflow.cs:198:17:198:48 | ... ? ... : ... | cflow.cs:198:37:198:41 | false | -| cflow.cs:198:17:198:48 | ... ? ... : ... | cflow.cs:198:45:198:48 | true | -| cflow.cs:198:33:198:33 | 0 | cflow.cs:198:17:198:28 | access to property Length | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:197:13:197:47 | [false] !... | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:198:13:198:48 | ... = ... | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:200:15:200:31 | ... == ... | -| cflow.cs:200:13:200:62 | [false] ... \|\| ... | cflow.cs:200:37:200:62 | [false] !... | +| cflow.cs:198:17:198:33 | Before ... == ... | cflow.cs:198:17:198:48 | ... ? ... : ... | +| cflow.cs:198:17:198:48 | ... ? ... : ... | cflow.cs:198:13:198:13 | access to local variable b | +| cflow.cs:198:17:198:48 | After ... ? ... : ... | cflow.cs:198:37:198:41 | false | +| cflow.cs:198:17:198:48 | After ... ? ... : ... | cflow.cs:198:45:198:48 | true | +| cflow.cs:198:33:198:33 | 0 | cflow.cs:198:17:198:28 | After access to property Length | +| cflow.cs:198:37:198:41 | false | cflow.cs:198:17:198:33 | After ... == ... [true] | +| cflow.cs:198:45:198:48 | true | cflow.cs:198:17:198:33 | After ... == ... [false] | +| cflow.cs:200:9:205:9 | After if (...) ... | cflow.cs:200:13:200:62 | After ... \|\| ... [false] | +| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:197:9:198:49 | After if (...) ... | +| cflow.cs:200:13:200:32 | !... | cflow.cs:200:13:200:62 | ... \|\| ... | +| cflow.cs:200:13:200:32 | After !... [false] | cflow.cs:200:15:200:31 | After ... == ... [true] | +| cflow.cs:200:13:200:32 | After !... [true] | cflow.cs:200:15:200:31 | After ... == ... [false] | +| cflow.cs:200:13:200:62 | ... \|\| ... | cflow.cs:200:9:205:9 | if (...) ... | +| cflow.cs:200:13:200:62 | After ... \|\| ... [false] | cflow.cs:200:37:200:62 | After !... [false] | +| cflow.cs:200:15:200:19 | After access to field Field | cflow.cs:200:15:200:19 | access to field Field | +| cflow.cs:200:15:200:19 | Before access to field Field | cflow.cs:200:15:200:26 | Before access to property Length | | cflow.cs:200:15:200:19 | access to field Field | cflow.cs:200:15:200:19 | this access | -| cflow.cs:200:15:200:19 | this access | cflow.cs:200:9:205:9 | if (...) ... | -| cflow.cs:200:15:200:26 | access to property Length | cflow.cs:200:15:200:19 | access to field Field | +| cflow.cs:200:15:200:19 | this access | cflow.cs:200:15:200:19 | Before access to field Field | +| cflow.cs:200:15:200:26 | After access to property Length | cflow.cs:200:15:200:26 | access to property Length | +| cflow.cs:200:15:200:26 | Before access to property Length | cflow.cs:200:15:200:31 | Before ... == ... | +| cflow.cs:200:15:200:26 | access to property Length | cflow.cs:200:15:200:19 | After access to field Field | | cflow.cs:200:15:200:31 | ... == ... | cflow.cs:200:31:200:31 | 0 | -| cflow.cs:200:31:200:31 | 0 | cflow.cs:200:15:200:26 | access to property Length | -| cflow.cs:200:37:200:62 | [false] !... | cflow.cs:200:38:200:62 | [true] !... | -| cflow.cs:200:38:200:62 | [true] !... | cflow.cs:200:40:200:61 | [false] ... && ... | +| cflow.cs:200:15:200:31 | After ... == ... [true] | cflow.cs:200:15:200:31 | ... == ... | +| cflow.cs:200:15:200:31 | Before ... == ... | cflow.cs:200:13:200:32 | !... | +| cflow.cs:200:31:200:31 | 0 | cflow.cs:200:15:200:26 | After access to property Length | +| cflow.cs:200:37:200:62 | !... | cflow.cs:200:13:200:32 | After !... [false] | +| cflow.cs:200:37:200:62 | After !... [false] | cflow.cs:200:38:200:62 | After !... [true] | +| cflow.cs:200:37:200:62 | After !... [true] | cflow.cs:200:38:200:62 | After !... [false] | +| cflow.cs:200:38:200:62 | !... | cflow.cs:200:37:200:62 | !... | +| cflow.cs:200:38:200:62 | After !... [false] | cflow.cs:200:40:200:61 | After ... && ... [true] | +| cflow.cs:200:38:200:62 | After !... [true] | cflow.cs:200:40:200:61 | After ... && ... [false] | +| cflow.cs:200:40:200:44 | After access to field Field | cflow.cs:200:40:200:44 | access to field Field | +| cflow.cs:200:40:200:44 | Before access to field Field | cflow.cs:200:40:200:51 | Before access to property Length | | cflow.cs:200:40:200:44 | access to field Field | cflow.cs:200:40:200:44 | this access | -| cflow.cs:200:40:200:44 | this access | cflow.cs:200:13:200:32 | [false] !... | -| cflow.cs:200:40:200:51 | access to property Length | cflow.cs:200:40:200:44 | access to field Field | +| cflow.cs:200:40:200:44 | this access | cflow.cs:200:40:200:44 | Before access to field Field | +| cflow.cs:200:40:200:51 | After access to property Length | cflow.cs:200:40:200:51 | access to property Length | +| cflow.cs:200:40:200:51 | Before access to property Length | cflow.cs:200:40:200:56 | Before ... == ... | +| cflow.cs:200:40:200:51 | access to property Length | cflow.cs:200:40:200:44 | After access to field Field | | cflow.cs:200:40:200:56 | ... == ... | cflow.cs:200:56:200:56 | 1 | -| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:200:40:200:56 | ... == ... | -| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:200:61:200:61 | access to local variable b | -| cflow.cs:200:56:200:56 | 1 | cflow.cs:200:40:200:51 | access to property Length | +| cflow.cs:200:40:200:56 | Before ... == ... | cflow.cs:200:40:200:61 | ... && ... | +| cflow.cs:200:40:200:61 | ... && ... | cflow.cs:200:38:200:62 | !... | +| cflow.cs:200:40:200:61 | After ... && ... [false] | cflow.cs:200:40:200:56 | After ... == ... [false] | +| cflow.cs:200:40:200:61 | After ... && ... [false] | cflow.cs:200:61:200:61 | After access to local variable b [false] | +| cflow.cs:200:40:200:61 | After ... && ... [true] | cflow.cs:200:61:200:61 | After access to local variable b [true] | +| cflow.cs:200:56:200:56 | 1 | cflow.cs:200:40:200:51 | After access to property Length | +| cflow.cs:200:61:200:61 | After access to local variable b [false] | cflow.cs:200:61:200:61 | access to local variable b | +| cflow.cs:200:61:200:61 | access to local variable b | cflow.cs:200:40:200:56 | After ... == ... [true] | +| cflow.cs:201:9:205:9 | {...} | cflow.cs:200:13:200:62 | After ... \|\| ... [true] | | cflow.cs:202:13:204:13 | {...} | cflow.cs:201:9:205:9 | {...} | -| cflow.cs:203:17:203:38 | throw ...; | cflow.cs:203:23:203:37 | object creation of type Exception | -| cflow.cs:203:23:203:37 | object creation of type Exception | cflow.cs:202:13:204:13 | {...} | -| cflow.cs:208:10:208:11 | exit Do | cflow.cs:208:10:208:11 | exit Do (normal) | -| cflow.cs:208:10:208:11 | exit Do (normal) | cflow.cs:219:17:219:22 | break; | -| cflow.cs:208:10:208:11 | exit Do (normal) | cflow.cs:221:18:221:34 | ... < ... | -| cflow.cs:209:5:222:5 | {...} | cflow.cs:208:10:208:11 | enter Do | +| cflow.cs:203:17:203:38 | Before throw ...; | cflow.cs:202:13:204:13 | {...} | +| cflow.cs:203:17:203:38 | throw ...; | cflow.cs:203:23:203:37 | After object creation of type Exception | +| cflow.cs:203:23:203:37 | After object creation of type Exception | cflow.cs:203:23:203:37 | object creation of type Exception | +| cflow.cs:203:23:203:37 | Before object creation of type Exception | cflow.cs:203:17:203:38 | Before throw ...; | +| cflow.cs:203:23:203:37 | object creation of type Exception | cflow.cs:203:23:203:37 | Before object creation of type Exception | +| cflow.cs:208:10:208:11 | Exit | cflow.cs:208:10:208:11 | Normal Exit | +| cflow.cs:208:10:208:11 | Normal Exit | cflow.cs:209:5:222:5 | After {...} | +| cflow.cs:209:5:222:5 | After {...} | cflow.cs:210:9:221:36 | After do ... while (...); | +| cflow.cs:209:5:222:5 | {...} | cflow.cs:208:10:208:11 | Entry | +| cflow.cs:210:9:221:36 | After do ... while (...); | cflow.cs:219:17:219:22 | break; | +| cflow.cs:210:9:221:36 | After do ... while (...); | cflow.cs:221:18:221:34 | After ... < ... [false] | +| cflow.cs:210:9:221:36 | [LoopHeader] do ... while (...); | cflow.cs:211:9:221:9 | After {...} | +| cflow.cs:210:9:221:36 | [LoopHeader] do ... while (...); | cflow.cs:215:17:215:25 | continue; | | cflow.cs:210:9:221:36 | do ... while (...); | cflow.cs:209:5:222:5 | {...} | +| cflow.cs:211:9:221:9 | After {...} | cflow.cs:217:13:220:13 | After if (...) ... | | cflow.cs:211:9:221:9 | {...} | cflow.cs:210:9:221:36 | do ... while (...); | +| cflow.cs:211:9:221:9 | {...} | cflow.cs:221:18:221:34 | After ... < ... [true] | +| cflow.cs:212:13:212:17 | After access to field Field | cflow.cs:212:13:212:17 | access to field Field | +| cflow.cs:212:13:212:17 | Before access to field Field | cflow.cs:212:13:212:24 | Before ... += ... | | cflow.cs:212:13:212:17 | access to field Field | cflow.cs:212:13:212:17 | this access | -| cflow.cs:212:13:212:17 | this access | cflow.cs:212:13:212:25 | ...; | +| cflow.cs:212:13:212:17 | this access | cflow.cs:212:13:212:17 | Before access to field Field | | cflow.cs:212:13:212:24 | ... += ... | cflow.cs:212:22:212:24 | "a" | +| cflow.cs:212:13:212:24 | After ... += ... | cflow.cs:212:13:212:24 | ... += ... | +| cflow.cs:212:13:212:24 | Before ... += ... | cflow.cs:212:13:212:25 | ...; | | cflow.cs:212:13:212:25 | ...; | cflow.cs:211:9:221:9 | {...} | -| cflow.cs:212:22:212:24 | "a" | cflow.cs:212:13:212:17 | access to field Field | -| cflow.cs:213:13:216:13 | if (...) ... | cflow.cs:212:13:212:24 | ... += ... | +| cflow.cs:212:13:212:25 | After ...; | cflow.cs:212:13:212:24 | After ... += ... | +| cflow.cs:212:22:212:24 | "a" | cflow.cs:212:13:212:17 | After access to field Field | +| cflow.cs:213:13:216:13 | After if (...) ... | cflow.cs:213:17:213:32 | After ... > ... [false] | +| cflow.cs:213:13:216:13 | if (...) ... | cflow.cs:212:13:212:25 | After ...; | +| cflow.cs:213:17:213:21 | After access to field Field | cflow.cs:213:17:213:21 | access to field Field | +| cflow.cs:213:17:213:21 | Before access to field Field | cflow.cs:213:17:213:28 | Before access to property Length | | cflow.cs:213:17:213:21 | access to field Field | cflow.cs:213:17:213:21 | this access | -| cflow.cs:213:17:213:21 | this access | cflow.cs:213:13:216:13 | if (...) ... | -| cflow.cs:213:17:213:28 | access to property Length | cflow.cs:213:17:213:21 | access to field Field | +| cflow.cs:213:17:213:21 | this access | cflow.cs:213:17:213:21 | Before access to field Field | +| cflow.cs:213:17:213:28 | After access to property Length | cflow.cs:213:17:213:28 | access to property Length | +| cflow.cs:213:17:213:28 | Before access to property Length | cflow.cs:213:17:213:32 | Before ... > ... | +| cflow.cs:213:17:213:28 | access to property Length | cflow.cs:213:17:213:21 | After access to field Field | | cflow.cs:213:17:213:32 | ... > ... | cflow.cs:213:32:213:32 | 0 | -| cflow.cs:213:32:213:32 | 0 | cflow.cs:213:17:213:28 | access to property Length | -| cflow.cs:215:17:215:25 | continue; | cflow.cs:214:13:216:13 | {...} | +| cflow.cs:213:17:213:32 | Before ... > ... | cflow.cs:213:13:216:13 | if (...) ... | +| cflow.cs:213:32:213:32 | 0 | cflow.cs:213:17:213:28 | After access to property Length | +| cflow.cs:214:13:216:13 | {...} | cflow.cs:213:17:213:32 | After ... > ... [true] | +| cflow.cs:215:17:215:25 | Before continue; | cflow.cs:214:13:216:13 | {...} | +| cflow.cs:215:17:215:25 | continue; | cflow.cs:215:17:215:25 | Before continue; | +| cflow.cs:217:13:220:13 | After if (...) ... | cflow.cs:217:17:217:32 | After ... < ... [false] | +| cflow.cs:217:13:220:13 | if (...) ... | cflow.cs:213:13:216:13 | After if (...) ... | +| cflow.cs:217:17:217:21 | After access to field Field | cflow.cs:217:17:217:21 | access to field Field | +| cflow.cs:217:17:217:21 | Before access to field Field | cflow.cs:217:17:217:28 | Before access to property Length | | cflow.cs:217:17:217:21 | access to field Field | cflow.cs:217:17:217:21 | this access | -| cflow.cs:217:17:217:21 | this access | cflow.cs:217:13:220:13 | if (...) ... | -| cflow.cs:217:17:217:28 | access to property Length | cflow.cs:217:17:217:21 | access to field Field | +| cflow.cs:217:17:217:21 | this access | cflow.cs:217:17:217:21 | Before access to field Field | +| cflow.cs:217:17:217:28 | After access to property Length | cflow.cs:217:17:217:28 | access to property Length | +| cflow.cs:217:17:217:28 | Before access to property Length | cflow.cs:217:17:217:32 | Before ... < ... | +| cflow.cs:217:17:217:28 | access to property Length | cflow.cs:217:17:217:21 | After access to field Field | | cflow.cs:217:17:217:32 | ... < ... | cflow.cs:217:32:217:32 | 0 | -| cflow.cs:217:32:217:32 | 0 | cflow.cs:217:17:217:28 | access to property Length | -| cflow.cs:219:17:219:22 | break; | cflow.cs:218:13:220:13 | {...} | +| cflow.cs:217:17:217:32 | Before ... < ... | cflow.cs:217:13:220:13 | if (...) ... | +| cflow.cs:217:32:217:32 | 0 | cflow.cs:217:17:217:28 | After access to property Length | +| cflow.cs:218:13:220:13 | {...} | cflow.cs:217:17:217:32 | After ... < ... [true] | +| cflow.cs:219:17:219:22 | Before break; | cflow.cs:218:13:220:13 | {...} | +| cflow.cs:219:17:219:22 | break; | cflow.cs:219:17:219:22 | Before break; | +| cflow.cs:221:18:221:22 | After access to field Field | cflow.cs:221:18:221:22 | access to field Field | +| cflow.cs:221:18:221:22 | Before access to field Field | cflow.cs:221:18:221:29 | Before access to property Length | | cflow.cs:221:18:221:22 | access to field Field | cflow.cs:221:18:221:22 | this access | -| cflow.cs:221:18:221:22 | this access | cflow.cs:215:17:215:25 | continue; | -| cflow.cs:221:18:221:29 | access to property Length | cflow.cs:221:18:221:22 | access to field Field | +| cflow.cs:221:18:221:22 | this access | cflow.cs:221:18:221:22 | Before access to field Field | +| cflow.cs:221:18:221:29 | After access to property Length | cflow.cs:221:18:221:29 | access to property Length | +| cflow.cs:221:18:221:29 | Before access to property Length | cflow.cs:221:18:221:34 | Before ... < ... | +| cflow.cs:221:18:221:29 | access to property Length | cflow.cs:221:18:221:22 | After access to field Field | | cflow.cs:221:18:221:34 | ... < ... | cflow.cs:221:33:221:34 | 10 | -| cflow.cs:221:33:221:34 | 10 | cflow.cs:221:18:221:29 | access to property Length | -| cflow.cs:224:10:224:16 | exit Foreach | cflow.cs:224:10:224:16 | exit Foreach (normal) | -| cflow.cs:224:10:224:16 | exit Foreach (normal) | cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | -| cflow.cs:224:10:224:16 | exit Foreach (normal) | cflow.cs:235:17:235:22 | break; | -| cflow.cs:225:5:238:5 | {...} | cflow.cs:224:10:224:16 | enter Foreach | -| cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | cflow.cs:226:27:226:64 | call to method Repeat | -| cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | cflow.cs:231:17:231:25 | continue; | +| cflow.cs:221:18:221:34 | Before ... < ... | cflow.cs:210:9:221:36 | [LoopHeader] do ... while (...); | +| cflow.cs:221:33:221:34 | 10 | cflow.cs:221:18:221:29 | After access to property Length | +| cflow.cs:224:10:224:16 | Exit | cflow.cs:224:10:224:16 | Normal Exit | +| cflow.cs:224:10:224:16 | Normal Exit | cflow.cs:225:5:238:5 | After {...} | +| cflow.cs:225:5:238:5 | After {...} | cflow.cs:226:9:237:9 | After foreach (... ... in ...) ... | +| cflow.cs:225:5:238:5 | {...} | cflow.cs:224:10:224:16 | Entry | +| cflow.cs:226:9:237:9 | After foreach (... ... in ...) ... | cflow.cs:226:9:237:9 | [LoopHeader] foreach (... ... in ...) ... | +| cflow.cs:226:9:237:9 | After foreach (... ... in ...) ... | cflow.cs:226:27:226:64 | After call to method Repeat [empty] | +| cflow.cs:226:9:237:9 | After foreach (... ... in ...) ... | cflow.cs:235:17:235:22 | break; | +| cflow.cs:226:9:237:9 | [LoopHeader] foreach (... ... in ...) ... | cflow.cs:227:9:237:9 | After {...} | +| cflow.cs:226:9:237:9 | [LoopHeader] foreach (... ... in ...) ... | cflow.cs:231:17:231:25 | continue; | +| cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | cflow.cs:225:5:238:5 | {...} | +| cflow.cs:226:22:226:22 | String x | cflow.cs:226:27:226:64 | After call to method Repeat [non-empty] | +| cflow.cs:226:27:226:64 | Before call to method Repeat | cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | | cflow.cs:226:27:226:64 | call to method Repeat | cflow.cs:226:62:226:63 | 10 | -| cflow.cs:226:57:226:59 | "a" | cflow.cs:225:5:238:5 | {...} | +| cflow.cs:226:57:226:59 | "a" | cflow.cs:226:27:226:64 | Before call to method Repeat | | cflow.cs:226:62:226:63 | 10 | cflow.cs:226:57:226:59 | "a" | +| cflow.cs:227:9:237:9 | After {...} | cflow.cs:233:13:236:13 | After if (...) ... | | cflow.cs:227:9:237:9 | {...} | cflow.cs:226:22:226:22 | String x | +| cflow.cs:228:13:228:17 | After access to field Field | cflow.cs:228:13:228:17 | access to field Field | +| cflow.cs:228:13:228:17 | Before access to field Field | cflow.cs:228:13:228:22 | Before ... += ... | | cflow.cs:228:13:228:17 | access to field Field | cflow.cs:228:13:228:17 | this access | -| cflow.cs:228:13:228:17 | this access | cflow.cs:228:13:228:23 | ...; | +| cflow.cs:228:13:228:17 | this access | cflow.cs:228:13:228:17 | Before access to field Field | | cflow.cs:228:13:228:22 | ... += ... | cflow.cs:228:22:228:22 | access to local variable x | +| cflow.cs:228:13:228:22 | After ... += ... | cflow.cs:228:13:228:22 | ... += ... | +| cflow.cs:228:13:228:22 | Before ... += ... | cflow.cs:228:13:228:23 | ...; | | cflow.cs:228:13:228:23 | ...; | cflow.cs:227:9:237:9 | {...} | -| cflow.cs:228:22:228:22 | access to local variable x | cflow.cs:228:13:228:17 | access to field Field | -| cflow.cs:229:13:232:13 | if (...) ... | cflow.cs:228:13:228:22 | ... += ... | +| cflow.cs:228:13:228:23 | After ...; | cflow.cs:228:13:228:22 | After ... += ... | +| cflow.cs:228:22:228:22 | access to local variable x | cflow.cs:228:13:228:17 | After access to field Field | +| cflow.cs:229:13:232:13 | After if (...) ... | cflow.cs:229:17:229:32 | After ... > ... [false] | +| cflow.cs:229:13:232:13 | if (...) ... | cflow.cs:228:13:228:23 | After ...; | +| cflow.cs:229:17:229:21 | After access to field Field | cflow.cs:229:17:229:21 | access to field Field | +| cflow.cs:229:17:229:21 | Before access to field Field | cflow.cs:229:17:229:28 | Before access to property Length | | cflow.cs:229:17:229:21 | access to field Field | cflow.cs:229:17:229:21 | this access | -| cflow.cs:229:17:229:21 | this access | cflow.cs:229:13:232:13 | if (...) ... | -| cflow.cs:229:17:229:28 | access to property Length | cflow.cs:229:17:229:21 | access to field Field | +| cflow.cs:229:17:229:21 | this access | cflow.cs:229:17:229:21 | Before access to field Field | +| cflow.cs:229:17:229:28 | After access to property Length | cflow.cs:229:17:229:28 | access to property Length | +| cflow.cs:229:17:229:28 | Before access to property Length | cflow.cs:229:17:229:32 | Before ... > ... | +| cflow.cs:229:17:229:28 | access to property Length | cflow.cs:229:17:229:21 | After access to field Field | | cflow.cs:229:17:229:32 | ... > ... | cflow.cs:229:32:229:32 | 0 | -| cflow.cs:229:32:229:32 | 0 | cflow.cs:229:17:229:28 | access to property Length | -| cflow.cs:231:17:231:25 | continue; | cflow.cs:230:13:232:13 | {...} | +| cflow.cs:229:17:229:32 | Before ... > ... | cflow.cs:229:13:232:13 | if (...) ... | +| cflow.cs:229:32:229:32 | 0 | cflow.cs:229:17:229:28 | After access to property Length | +| cflow.cs:230:13:232:13 | {...} | cflow.cs:229:17:229:32 | After ... > ... [true] | +| cflow.cs:231:17:231:25 | Before continue; | cflow.cs:230:13:232:13 | {...} | +| cflow.cs:231:17:231:25 | continue; | cflow.cs:231:17:231:25 | Before continue; | +| cflow.cs:233:13:236:13 | After if (...) ... | cflow.cs:233:17:233:32 | After ... < ... [false] | +| cflow.cs:233:13:236:13 | if (...) ... | cflow.cs:229:13:232:13 | After if (...) ... | +| cflow.cs:233:17:233:21 | After access to field Field | cflow.cs:233:17:233:21 | access to field Field | +| cflow.cs:233:17:233:21 | Before access to field Field | cflow.cs:233:17:233:28 | Before access to property Length | | cflow.cs:233:17:233:21 | access to field Field | cflow.cs:233:17:233:21 | this access | -| cflow.cs:233:17:233:21 | this access | cflow.cs:233:13:236:13 | if (...) ... | -| cflow.cs:233:17:233:28 | access to property Length | cflow.cs:233:17:233:21 | access to field Field | +| cflow.cs:233:17:233:21 | this access | cflow.cs:233:17:233:21 | Before access to field Field | +| cflow.cs:233:17:233:28 | After access to property Length | cflow.cs:233:17:233:28 | access to property Length | +| cflow.cs:233:17:233:28 | Before access to property Length | cflow.cs:233:17:233:32 | Before ... < ... | +| cflow.cs:233:17:233:28 | access to property Length | cflow.cs:233:17:233:21 | After access to field Field | | cflow.cs:233:17:233:32 | ... < ... | cflow.cs:233:32:233:32 | 0 | -| cflow.cs:233:32:233:32 | 0 | cflow.cs:233:17:233:28 | access to property Length | -| cflow.cs:235:17:235:22 | break; | cflow.cs:234:13:236:13 | {...} | -| cflow.cs:240:10:240:13 | exit Goto | cflow.cs:240:10:240:13 | exit Goto (normal) | -| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:252:17:252:22 | break; | -| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:257:17:257:22 | break; | -| cflow.cs:241:5:259:5 | {...} | cflow.cs:240:10:240:13 | enter Goto | +| cflow.cs:233:17:233:32 | Before ... < ... | cflow.cs:233:13:236:13 | if (...) ... | +| cflow.cs:233:32:233:32 | 0 | cflow.cs:233:17:233:28 | After access to property Length | +| cflow.cs:234:13:236:13 | {...} | cflow.cs:233:17:233:32 | After ... < ... [true] | +| cflow.cs:235:17:235:22 | Before break; | cflow.cs:234:13:236:13 | {...} | +| cflow.cs:235:17:235:22 | break; | cflow.cs:235:17:235:22 | Before break; | +| cflow.cs:240:10:240:13 | Exit | cflow.cs:240:10:240:13 | Normal Exit | +| cflow.cs:240:10:240:13 | Normal Exit | cflow.cs:241:5:259:5 | After {...} | +| cflow.cs:241:5:259:5 | After {...} | cflow.cs:246:9:258:9 | After switch (...) {...} | +| cflow.cs:241:5:259:5 | {...} | cflow.cs:240:10:240:13 | Entry | | cflow.cs:242:5:242:9 | Label: | cflow.cs:241:5:259:5 | {...} | | cflow.cs:242:5:242:9 | Label: | cflow.cs:244:31:244:41 | goto ...; | | cflow.cs:242:5:242:9 | Label: | cflow.cs:254:17:254:27 | goto ...; | +| cflow.cs:242:12:242:41 | After if (...) ... | cflow.cs:242:16:242:36 | After !... [false] | +| cflow.cs:242:12:242:41 | After if (...) ... | cflow.cs:242:39:242:41 | {...} | | cflow.cs:242:12:242:41 | if (...) ... | cflow.cs:242:5:242:9 | Label: | -| cflow.cs:242:16:242:36 | [false] !... | cflow.cs:242:17:242:36 | [true] !... | -| cflow.cs:242:16:242:36 | [true] !... | cflow.cs:242:17:242:36 | [false] !... | +| cflow.cs:242:16:242:36 | !... | cflow.cs:242:12:242:41 | if (...) ... | +| cflow.cs:242:16:242:36 | After !... [false] | cflow.cs:242:17:242:36 | After !... [true] | +| cflow.cs:242:16:242:36 | After !... [true] | cflow.cs:242:17:242:36 | After !... [false] | +| cflow.cs:242:17:242:36 | !... | cflow.cs:242:16:242:36 | !... | +| cflow.cs:242:17:242:36 | After !... [false] | cflow.cs:242:19:242:35 | After ... == ... [true] | +| cflow.cs:242:17:242:36 | After !... [true] | cflow.cs:242:19:242:35 | After ... == ... [false] | +| cflow.cs:242:19:242:23 | After access to field Field | cflow.cs:242:19:242:23 | access to field Field | +| cflow.cs:242:19:242:23 | Before access to field Field | cflow.cs:242:19:242:30 | Before access to property Length | | cflow.cs:242:19:242:23 | access to field Field | cflow.cs:242:19:242:23 | this access | -| cflow.cs:242:19:242:23 | this access | cflow.cs:242:12:242:41 | if (...) ... | -| cflow.cs:242:19:242:30 | access to property Length | cflow.cs:242:19:242:23 | access to field Field | +| cflow.cs:242:19:242:23 | this access | cflow.cs:242:19:242:23 | Before access to field Field | +| cflow.cs:242:19:242:30 | After access to property Length | cflow.cs:242:19:242:30 | access to property Length | +| cflow.cs:242:19:242:30 | Before access to property Length | cflow.cs:242:19:242:35 | Before ... == ... | +| cflow.cs:242:19:242:30 | access to property Length | cflow.cs:242:19:242:23 | After access to field Field | | cflow.cs:242:19:242:35 | ... == ... | cflow.cs:242:35:242:35 | 0 | -| cflow.cs:242:35:242:35 | 0 | cflow.cs:242:19:242:30 | access to property Length | -| cflow.cs:242:39:242:41 | {...} | cflow.cs:242:16:242:36 | [true] !... | -| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:242:16:242:36 | [false] !... | -| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:242:39:242:41 | {...} | +| cflow.cs:242:19:242:35 | Before ... == ... | cflow.cs:242:17:242:36 | !... | +| cflow.cs:242:35:242:35 | 0 | cflow.cs:242:19:242:30 | After access to property Length | +| cflow.cs:242:39:242:41 | {...} | cflow.cs:242:16:242:36 | After !... [true] | +| cflow.cs:244:9:244:41 | After if (...) ... | cflow.cs:244:13:244:28 | After ... > ... [false] | +| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:242:12:242:41 | After if (...) ... | +| cflow.cs:244:13:244:17 | After access to field Field | cflow.cs:244:13:244:17 | access to field Field | +| cflow.cs:244:13:244:17 | Before access to field Field | cflow.cs:244:13:244:24 | Before access to property Length | | cflow.cs:244:13:244:17 | access to field Field | cflow.cs:244:13:244:17 | this access | -| cflow.cs:244:13:244:17 | this access | cflow.cs:244:9:244:41 | if (...) ... | -| cflow.cs:244:13:244:24 | access to property Length | cflow.cs:244:13:244:17 | access to field Field | +| cflow.cs:244:13:244:17 | this access | cflow.cs:244:13:244:17 | Before access to field Field | +| cflow.cs:244:13:244:24 | After access to property Length | cflow.cs:244:13:244:24 | access to property Length | +| cflow.cs:244:13:244:24 | Before access to property Length | cflow.cs:244:13:244:28 | Before ... > ... | +| cflow.cs:244:13:244:24 | access to property Length | cflow.cs:244:13:244:17 | After access to field Field | | cflow.cs:244:13:244:28 | ... > ... | cflow.cs:244:28:244:28 | 0 | -| cflow.cs:244:28:244:28 | 0 | cflow.cs:244:13:244:24 | access to property Length | -| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:244:13:244:28 | ... > ... | +| cflow.cs:244:13:244:28 | After ... > ... [false] | cflow.cs:244:13:244:28 | ... > ... | +| cflow.cs:244:13:244:28 | Before ... > ... | cflow.cs:244:9:244:41 | if (...) ... | +| cflow.cs:244:28:244:28 | 0 | cflow.cs:244:13:244:24 | After access to property Length | +| cflow.cs:244:31:244:41 | Before goto ...; | cflow.cs:244:13:244:28 | After ... > ... [true] | +| cflow.cs:244:31:244:41 | goto ...; | cflow.cs:244:31:244:41 | Before goto ...; | +| cflow.cs:246:9:258:9 | After switch (...) {...} | cflow.cs:252:17:252:22 | break; | +| cflow.cs:246:9:258:9 | After switch (...) {...} | cflow.cs:257:17:257:22 | break; | +| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:244:9:244:41 | After if (...) ... | +| cflow.cs:246:17:246:21 | After access to field Field | cflow.cs:246:17:246:21 | access to field Field | +| cflow.cs:246:17:246:21 | Before access to field Field | cflow.cs:246:17:246:28 | Before access to property Length | | cflow.cs:246:17:246:21 | access to field Field | cflow.cs:246:17:246:21 | this access | -| cflow.cs:246:17:246:21 | this access | cflow.cs:246:9:258:9 | switch (...) {...} | -| cflow.cs:246:17:246:28 | access to property Length | cflow.cs:246:17:246:21 | access to field Field | +| cflow.cs:246:17:246:21 | this access | cflow.cs:246:17:246:21 | Before access to field Field | +| cflow.cs:246:17:246:28 | After access to property Length | cflow.cs:246:17:246:28 | access to property Length | +| cflow.cs:246:17:246:28 | Before access to property Length | cflow.cs:246:17:246:32 | Before ... + ... | +| cflow.cs:246:17:246:28 | access to property Length | cflow.cs:246:17:246:21 | After access to field Field | | cflow.cs:246:17:246:32 | ... + ... | cflow.cs:246:32:246:32 | 3 | -| cflow.cs:246:32:246:32 | 3 | cflow.cs:246:17:246:28 | access to property Length | -| cflow.cs:248:13:248:19 | case ...: | cflow.cs:246:17:246:32 | ... + ... | +| cflow.cs:246:17:246:32 | After ... + ... | cflow.cs:246:17:246:32 | ... + ... | +| cflow.cs:246:17:246:32 | Before ... + ... | cflow.cs:246:9:258:9 | switch (...) {...} | +| cflow.cs:246:32:246:32 | 3 | cflow.cs:246:17:246:28 | After access to property Length | +| cflow.cs:248:13:248:19 | After case ...: [match] | cflow.cs:248:18:248:18 | After 0 [match] | +| cflow.cs:248:13:248:19 | After case ...: [no-match] | cflow.cs:248:18:248:18 | After 0 [no-match] | +| cflow.cs:248:13:248:19 | case ...: | cflow.cs:246:17:246:32 | After ... + ... | | cflow.cs:248:18:248:18 | 0 | cflow.cs:248:13:248:19 | case ...: | +| cflow.cs:249:17:249:29 | Before goto default; | cflow.cs:248:13:248:19 | After case ...: [match] | +| cflow.cs:249:17:249:29 | goto default; | cflow.cs:249:17:249:29 | Before goto default; | +| cflow.cs:250:13:250:19 | After case ...: [match] | cflow.cs:250:18:250:18 | After 1 [match] | +| cflow.cs:250:13:250:19 | After case ...: [no-match] | cflow.cs:250:18:250:18 | After 1 [no-match] | +| cflow.cs:250:13:250:19 | case ...: | cflow.cs:248:13:248:19 | After case ...: [no-match] | | cflow.cs:250:18:250:18 | 1 | cflow.cs:250:13:250:19 | case ...: | +| cflow.cs:251:17:251:36 | After call to method WriteLine | cflow.cs:251:17:251:36 | call to method WriteLine | +| cflow.cs:251:17:251:36 | Before call to method WriteLine | cflow.cs:251:17:251:37 | ...; | | cflow.cs:251:17:251:36 | call to method WriteLine | cflow.cs:251:35:251:35 | 1 | -| cflow.cs:251:35:251:35 | 1 | cflow.cs:251:17:251:37 | ...; | -| cflow.cs:252:17:252:22 | break; | cflow.cs:251:17:251:36 | call to method WriteLine | +| cflow.cs:251:17:251:37 | ...; | cflow.cs:250:13:250:19 | After case ...: [match] | +| cflow.cs:251:17:251:37 | After ...; | cflow.cs:251:17:251:36 | After call to method WriteLine | +| cflow.cs:251:35:251:35 | 1 | cflow.cs:251:17:251:36 | Before call to method WriteLine | +| cflow.cs:252:17:252:22 | Before break; | cflow.cs:251:17:251:37 | After ...; | +| cflow.cs:252:17:252:22 | break; | cflow.cs:252:17:252:22 | Before break; | +| cflow.cs:253:13:253:19 | After case ...: [match] | cflow.cs:253:18:253:18 | After 2 [match] | +| cflow.cs:253:13:253:19 | After case ...: [no-match] | cflow.cs:253:18:253:18 | After 2 [no-match] | +| cflow.cs:253:13:253:19 | case ...: | cflow.cs:250:13:250:19 | After case ...: [no-match] | | cflow.cs:253:18:253:18 | 2 | cflow.cs:253:13:253:19 | case ...: | -| cflow.cs:255:13:255:20 | default: | cflow.cs:249:17:249:29 | goto default; | +| cflow.cs:254:17:254:27 | Before goto ...; | cflow.cs:253:13:253:19 | After case ...: [match] | +| cflow.cs:254:17:254:27 | goto ...; | cflow.cs:254:17:254:27 | Before goto ...; | +| cflow.cs:255:13:255:20 | After default: [match] | cflow.cs:249:17:249:29 | goto default; | +| cflow.cs:255:13:255:20 | After default: [match] | cflow.cs:255:13:255:20 | default: | +| cflow.cs:255:13:255:20 | default: | cflow.cs:253:13:253:19 | After case ...: [no-match] | +| cflow.cs:256:17:256:36 | After call to method WriteLine | cflow.cs:256:17:256:36 | call to method WriteLine | +| cflow.cs:256:17:256:36 | Before call to method WriteLine | cflow.cs:256:17:256:37 | ...; | | cflow.cs:256:17:256:36 | call to method WriteLine | cflow.cs:256:35:256:35 | 0 | -| cflow.cs:256:17:256:37 | ...; | cflow.cs:255:13:255:20 | default: | -| cflow.cs:256:35:256:35 | 0 | cflow.cs:256:17:256:37 | ...; | -| cflow.cs:257:17:257:22 | break; | cflow.cs:256:17:256:36 | call to method WriteLine | -| cflow.cs:261:49:261:53 | exit Yield (normal) | cflow.cs:275:13:275:41 | call to method WriteLine | -| cflow.cs:262:5:277:5 | {...} | cflow.cs:261:49:261:53 | enter Yield | +| cflow.cs:256:17:256:37 | ...; | cflow.cs:255:13:255:20 | After default: [match] | +| cflow.cs:256:17:256:37 | After ...; | cflow.cs:256:17:256:36 | After call to method WriteLine | +| cflow.cs:256:35:256:35 | 0 | cflow.cs:256:17:256:36 | Before call to method WriteLine | +| cflow.cs:257:17:257:22 | Before break; | cflow.cs:256:17:256:37 | After ...; | +| cflow.cs:257:17:257:22 | break; | cflow.cs:257:17:257:22 | Before break; | +| cflow.cs:261:49:261:53 | Normal Exit | cflow.cs:262:5:277:5 | After {...} | +| cflow.cs:261:49:261:53 | Normal Exit | cflow.cs:274:9:276:9 | After {...} | +| cflow.cs:262:5:277:5 | After {...} | cflow.cs:268:9:276:9 | After try {...} ... | +| cflow.cs:262:5:277:5 | {...} | cflow.cs:261:49:261:53 | Entry | +| cflow.cs:263:9:263:23 | After yield return ...; | cflow.cs:263:9:263:23 | yield return ...; | +| cflow.cs:263:9:263:23 | Before yield return ...; | cflow.cs:262:5:277:5 | {...} | | cflow.cs:263:9:263:23 | yield return ...; | cflow.cs:263:22:263:22 | 0 | -| cflow.cs:263:22:263:22 | 0 | cflow.cs:262:5:277:5 | {...} | -| cflow.cs:264:9:267:9 | for (...;...;...) ... | cflow.cs:263:9:263:23 | yield return ...; | +| cflow.cs:263:22:263:22 | 0 | cflow.cs:263:9:263:23 | Before yield return ...; | +| cflow.cs:264:9:267:9 | After for (...;...;...) ... | cflow.cs:264:25:264:30 | After ... < ... [false] | +| cflow.cs:264:9:267:9 | [LoopHeader] for (...;...;...) ... | cflow.cs:265:9:267:9 | After {...} | +| cflow.cs:264:9:267:9 | for (...;...;...) ... | cflow.cs:263:9:263:23 | After yield return ...; | +| cflow.cs:264:18:264:18 | access to local variable i | cflow.cs:264:18:264:22 | Before Int32 i = ... | +| cflow.cs:264:18:264:22 | After Int32 i = ... | cflow.cs:264:18:264:22 | Int32 i = ... | +| cflow.cs:264:18:264:22 | Before Int32 i = ... | cflow.cs:264:9:267:9 | for (...;...;...) ... | | cflow.cs:264:18:264:22 | Int32 i = ... | cflow.cs:264:22:264:22 | 1 | -| cflow.cs:264:22:264:22 | 1 | cflow.cs:264:9:267:9 | for (...;...;...) ... | -| cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:264:18:264:22 | Int32 i = ... | -| cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:264:33:264:35 | ...++ | +| cflow.cs:264:22:264:22 | 1 | cflow.cs:264:18:264:18 | access to local variable i | +| cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:264:25:264:30 | Before ... < ... | | cflow.cs:264:25:264:30 | ... < ... | cflow.cs:264:29:264:30 | 10 | +| cflow.cs:264:25:264:30 | After ... < ... [false] | cflow.cs:264:25:264:30 | ... < ... | +| cflow.cs:264:25:264:30 | Before ... < ... | cflow.cs:264:18:264:22 | After Int32 i = ... | +| cflow.cs:264:25:264:30 | Before ... < ... | cflow.cs:264:33:264:35 | After ...++ | | cflow.cs:264:29:264:30 | 10 | cflow.cs:264:25:264:25 | access to local variable i | -| cflow.cs:264:33:264:33 | access to local variable i | cflow.cs:266:13:266:27 | yield return ...; | +| cflow.cs:264:33:264:33 | access to local variable i | cflow.cs:264:33:264:35 | Before ...++ | | cflow.cs:264:33:264:35 | ...++ | cflow.cs:264:33:264:33 | access to local variable i | +| cflow.cs:264:33:264:35 | After ...++ | cflow.cs:264:33:264:35 | ...++ | +| cflow.cs:264:33:264:35 | Before ...++ | cflow.cs:264:9:267:9 | [LoopHeader] for (...;...;...) ... | +| cflow.cs:265:9:267:9 | After {...} | cflow.cs:266:13:266:27 | After yield return ...; | +| cflow.cs:265:9:267:9 | {...} | cflow.cs:264:25:264:30 | After ... < ... [true] | +| cflow.cs:266:13:266:27 | After yield return ...; | cflow.cs:266:13:266:27 | yield return ...; | +| cflow.cs:266:13:266:27 | Before yield return ...; | cflow.cs:265:9:267:9 | {...} | | cflow.cs:266:13:266:27 | yield return ...; | cflow.cs:266:26:266:26 | access to local variable i | -| cflow.cs:266:26:266:26 | access to local variable i | cflow.cs:265:9:267:9 | {...} | -| cflow.cs:268:9:276:9 | try {...} ... | cflow.cs:264:25:264:30 | ... < ... | +| cflow.cs:266:26:266:26 | access to local variable i | cflow.cs:266:13:266:27 | Before yield return ...; | +| cflow.cs:268:9:276:9 | try {...} ... | cflow.cs:264:9:267:9 | After for (...;...;...) ... | | cflow.cs:269:9:272:9 | {...} | cflow.cs:268:9:276:9 | try {...} ... | -| cflow.cs:270:13:270:24 | yield break; | cflow.cs:269:9:272:9 | {...} | +| cflow.cs:270:13:270:24 | Before yield break; | cflow.cs:269:9:272:9 | {...} | +| cflow.cs:270:13:270:24 | yield break; | cflow.cs:270:13:270:24 | Before yield break; | +| cflow.cs:274:9:276:9 | After {...} | cflow.cs:275:13:275:42 | After ...; | | cflow.cs:274:9:276:9 | {...} | cflow.cs:270:13:270:24 | yield break; | +| cflow.cs:275:13:275:41 | After call to method WriteLine | cflow.cs:275:13:275:41 | call to method WriteLine | +| cflow.cs:275:13:275:41 | Before call to method WriteLine | cflow.cs:275:13:275:42 | ...; | | cflow.cs:275:13:275:41 | call to method WriteLine | cflow.cs:275:31:275:40 | "not dead" | | cflow.cs:275:13:275:42 | ...; | cflow.cs:274:9:276:9 | {...} | -| cflow.cs:275:31:275:40 | "not dead" | cflow.cs:275:13:275:42 | ...; | +| cflow.cs:275:13:275:42 | After ...; | cflow.cs:275:13:275:41 | After call to method WriteLine | +| cflow.cs:275:31:275:40 | "not dead" | cflow.cs:275:13:275:41 | Before call to method WriteLine | +| cflow.cs:282:5:282:18 | After call to method | cflow.cs:282:5:282:18 | call to method | +| cflow.cs:282:5:282:18 | Before call to method | cflow.cs:282:5:282:18 | Entry | +| cflow.cs:282:5:282:18 | Exit | cflow.cs:282:5:282:18 | Normal Exit | +| cflow.cs:282:5:282:18 | Normal Exit | cflow.cs:282:31:282:33 | {...} | | cflow.cs:282:5:282:18 | call to method | cflow.cs:282:5:282:18 | this access | -| cflow.cs:282:5:282:18 | exit ControlFlowSub | cflow.cs:282:5:282:18 | exit ControlFlowSub (normal) | -| cflow.cs:282:5:282:18 | exit ControlFlowSub (normal) | cflow.cs:282:31:282:33 | {...} | -| cflow.cs:282:5:282:18 | this access | cflow.cs:282:5:282:18 | enter ControlFlowSub | -| cflow.cs:282:24:282:27 | call to constructor ControlFlow | cflow.cs:282:5:282:18 | call to method | -| cflow.cs:282:31:282:33 | {...} | cflow.cs:282:24:282:27 | call to constructor ControlFlow | -| cflow.cs:284:5:284:18 | exit ControlFlowSub | cflow.cs:284:5:284:18 | exit ControlFlowSub (normal) | -| cflow.cs:284:5:284:18 | exit ControlFlowSub (normal) | cflow.cs:284:39:284:41 | {...} | -| cflow.cs:284:32:284:35 | call to constructor ControlFlowSub | cflow.cs:284:5:284:18 | enter ControlFlowSub | -| cflow.cs:284:39:284:41 | {...} | cflow.cs:284:32:284:35 | call to constructor ControlFlowSub | -| cflow.cs:286:5:286:18 | exit ControlFlowSub | cflow.cs:286:5:286:18 | exit ControlFlowSub (normal) | -| cflow.cs:286:5:286:18 | exit ControlFlowSub (normal) | cflow.cs:286:48:286:50 | {...} | -| cflow.cs:286:29:286:32 | call to constructor ControlFlowSub | cflow.cs:286:34:286:45 | call to method ToString | -| cflow.cs:286:34:286:34 | access to parameter i | cflow.cs:286:5:286:18 | enter ControlFlowSub | +| cflow.cs:282:5:282:18 | this access | cflow.cs:282:5:282:18 | Before call to method | +| cflow.cs:282:24:282:27 | After call to constructor ControlFlow | cflow.cs:282:24:282:27 | call to constructor ControlFlow | +| cflow.cs:282:24:282:27 | Before call to constructor ControlFlow | cflow.cs:282:5:282:18 | After call to method | +| cflow.cs:282:24:282:27 | call to constructor ControlFlow | cflow.cs:282:24:282:27 | Before call to constructor ControlFlow | +| cflow.cs:282:31:282:33 | {...} | cflow.cs:282:24:282:27 | After call to constructor ControlFlow | +| cflow.cs:284:5:284:18 | Exit | cflow.cs:284:5:284:18 | Normal Exit | +| cflow.cs:284:5:284:18 | Normal Exit | cflow.cs:284:39:284:41 | {...} | +| cflow.cs:284:27:284:27 | s | cflow.cs:284:5:284:18 | Entry | +| cflow.cs:284:32:284:35 | After call to constructor ControlFlowSub | cflow.cs:284:32:284:35 | call to constructor ControlFlowSub | +| cflow.cs:284:32:284:35 | Before call to constructor ControlFlowSub | cflow.cs:284:27:284:27 | s | +| cflow.cs:284:32:284:35 | call to constructor ControlFlowSub | cflow.cs:284:32:284:35 | Before call to constructor ControlFlowSub | +| cflow.cs:284:39:284:41 | {...} | cflow.cs:284:32:284:35 | After call to constructor ControlFlowSub | +| cflow.cs:286:5:286:18 | Exit | cflow.cs:286:5:286:18 | Normal Exit | +| cflow.cs:286:5:286:18 | Normal Exit | cflow.cs:286:48:286:50 | {...} | +| cflow.cs:286:24:286:24 | i | cflow.cs:286:5:286:18 | Entry | +| cflow.cs:286:29:286:32 | After call to constructor ControlFlowSub | cflow.cs:286:29:286:32 | call to constructor ControlFlowSub | +| cflow.cs:286:29:286:32 | Before call to constructor ControlFlowSub | cflow.cs:286:24:286:24 | i | +| cflow.cs:286:29:286:32 | call to constructor ControlFlowSub | cflow.cs:286:34:286:45 | After call to method ToString | +| cflow.cs:286:34:286:34 | access to parameter i | cflow.cs:286:34:286:45 | Before call to method ToString | +| cflow.cs:286:34:286:45 | After call to method ToString | cflow.cs:286:34:286:45 | call to method ToString | +| cflow.cs:286:34:286:45 | Before call to method ToString | cflow.cs:286:29:286:32 | Before call to constructor ControlFlowSub | | cflow.cs:286:34:286:45 | call to method ToString | cflow.cs:286:34:286:34 | access to parameter i | -| cflow.cs:286:48:286:50 | {...} | cflow.cs:286:29:286:32 | call to constructor ControlFlowSub | -| cflow.cs:289:7:289:18 | call to constructor Object | cflow.cs:289:7:289:18 | call to method | +| cflow.cs:286:48:286:50 | {...} | cflow.cs:286:29:286:32 | After call to constructor ControlFlowSub | +| cflow.cs:289:7:289:18 | After call to constructor Object | cflow.cs:289:7:289:18 | call to constructor Object | +| cflow.cs:289:7:289:18 | After call to method | cflow.cs:289:7:289:18 | call to method | +| cflow.cs:289:7:289:18 | Before call to constructor Object | cflow.cs:289:7:289:18 | After call to method | +| cflow.cs:289:7:289:18 | Before call to method | cflow.cs:289:7:289:18 | Entry | +| cflow.cs:289:7:289:18 | Exit | cflow.cs:289:7:289:18 | Normal Exit | +| cflow.cs:289:7:289:18 | Normal Exit | cflow.cs:289:7:289:18 | {...} | +| cflow.cs:289:7:289:18 | call to constructor Object | cflow.cs:289:7:289:18 | Before call to constructor Object | | cflow.cs:289:7:289:18 | call to method | cflow.cs:289:7:289:18 | this access | -| cflow.cs:289:7:289:18 | exit DelegateCall | cflow.cs:289:7:289:18 | exit DelegateCall (normal) | -| cflow.cs:289:7:289:18 | exit DelegateCall (normal) | cflow.cs:289:7:289:18 | {...} | -| cflow.cs:289:7:289:18 | this access | cflow.cs:289:7:289:18 | enter DelegateCall | -| cflow.cs:289:7:289:18 | {...} | cflow.cs:289:7:289:18 | call to constructor Object | -| cflow.cs:291:12:291:12 | exit M | cflow.cs:291:12:291:12 | exit M (normal) | -| cflow.cs:291:12:291:12 | exit M (normal) | cflow.cs:291:38:291:41 | delegate call | -| cflow.cs:291:38:291:38 | access to parameter f | cflow.cs:291:12:291:12 | enter M | +| cflow.cs:289:7:289:18 | this access | cflow.cs:289:7:289:18 | Before call to method | +| cflow.cs:289:7:289:18 | {...} | cflow.cs:289:7:289:18 | After call to constructor Object | +| cflow.cs:291:12:291:12 | Exit | cflow.cs:291:12:291:12 | Normal Exit | +| cflow.cs:291:12:291:12 | Normal Exit | cflow.cs:291:38:291:41 | After delegate call | +| cflow.cs:291:32:291:32 | f | cflow.cs:291:12:291:12 | Entry | +| cflow.cs:291:38:291:38 | access to parameter f | cflow.cs:291:38:291:41 | Before delegate call | +| cflow.cs:291:38:291:41 | After delegate call | cflow.cs:291:38:291:41 | delegate call | +| cflow.cs:291:38:291:41 | Before delegate call | cflow.cs:291:32:291:32 | f | | cflow.cs:291:38:291:41 | delegate call | cflow.cs:291:40:291:40 | 0 | | cflow.cs:291:40:291:40 | 0 | cflow.cs:291:38:291:38 | access to parameter f | -| cflow.cs:296:5:296:25 | call to constructor Object | cflow.cs:296:5:296:25 | call to method | +| cflow.cs:296:5:296:25 | After call to constructor Object | cflow.cs:296:5:296:25 | call to constructor Object | +| cflow.cs:296:5:296:25 | After call to method | cflow.cs:296:5:296:25 | call to method | +| cflow.cs:296:5:296:25 | Before call to constructor Object | cflow.cs:296:5:296:25 | After call to method | +| cflow.cs:296:5:296:25 | Before call to method | cflow.cs:296:49:296:49 | s | +| cflow.cs:296:5:296:25 | Exit | cflow.cs:296:5:296:25 | Normal Exit | +| cflow.cs:296:5:296:25 | Normal Exit | cflow.cs:296:52:296:54 | {...} | +| cflow.cs:296:5:296:25 | call to constructor Object | cflow.cs:296:5:296:25 | Before call to constructor Object | | cflow.cs:296:5:296:25 | call to method | cflow.cs:296:5:296:25 | this access | -| cflow.cs:296:5:296:25 | exit NegationInConstructor | cflow.cs:296:5:296:25 | exit NegationInConstructor (normal) | -| cflow.cs:296:5:296:25 | exit NegationInConstructor (normal) | cflow.cs:296:52:296:54 | {...} | -| cflow.cs:296:5:296:25 | this access | cflow.cs:296:5:296:25 | enter NegationInConstructor | -| cflow.cs:296:52:296:54 | {...} | cflow.cs:296:5:296:25 | call to constructor Object | -| cflow.cs:298:10:298:10 | exit M | cflow.cs:298:10:298:10 | exit M (normal) | -| cflow.cs:298:10:298:10 | exit M (normal) | cflow.cs:300:9:300:72 | object creation of type NegationInConstructor | -| cflow.cs:299:5:301:5 | {...} | cflow.cs:298:10:298:10 | enter M | +| cflow.cs:296:5:296:25 | this access | cflow.cs:296:5:296:25 | Before call to method | +| cflow.cs:296:32:296:32 | b | cflow.cs:296:5:296:25 | Entry | +| cflow.cs:296:39:296:39 | i | cflow.cs:296:32:296:32 | b | +| cflow.cs:296:49:296:49 | s | cflow.cs:296:39:296:39 | i | +| cflow.cs:296:52:296:54 | {...} | cflow.cs:296:5:296:25 | After call to constructor Object | +| cflow.cs:298:10:298:10 | Exit | cflow.cs:298:10:298:10 | Normal Exit | +| cflow.cs:298:10:298:10 | Normal Exit | cflow.cs:299:5:301:5 | After {...} | +| cflow.cs:298:16:298:16 | i | cflow.cs:298:10:298:10 | Entry | +| cflow.cs:298:26:298:26 | s | cflow.cs:298:16:298:16 | i | +| cflow.cs:298:34:298:34 | b | cflow.cs:298:26:298:26 | s | +| cflow.cs:299:5:301:5 | After {...} | cflow.cs:300:9:300:73 | After ...; | +| cflow.cs:299:5:301:5 | {...} | cflow.cs:298:34:298:34 | b | +| cflow.cs:300:9:300:72 | After object creation of type NegationInConstructor | cflow.cs:300:9:300:72 | object creation of type NegationInConstructor | +| cflow.cs:300:9:300:72 | Before object creation of type NegationInConstructor | cflow.cs:300:9:300:73 | ...; | | cflow.cs:300:9:300:72 | object creation of type NegationInConstructor | cflow.cs:300:70:300:71 | "" | | cflow.cs:300:9:300:73 | ...; | cflow.cs:299:5:301:5 | {...} | -| cflow.cs:300:38:300:38 | 0 | cflow.cs:300:9:300:73 | ...; | -| cflow.cs:300:44:300:64 | ... && ... | cflow.cs:300:44:300:51 | [false] !... | -| cflow.cs:300:44:300:64 | ... && ... | cflow.cs:300:56:300:64 | ... != ... | -| cflow.cs:300:46:300:46 | access to parameter i | cflow.cs:300:38:300:38 | 0 | +| cflow.cs:300:9:300:73 | After ...; | cflow.cs:300:9:300:72 | After object creation of type NegationInConstructor | +| cflow.cs:300:38:300:38 | 0 | cflow.cs:300:9:300:72 | Before object creation of type NegationInConstructor | +| cflow.cs:300:44:300:51 | !... | cflow.cs:300:44:300:64 | ... && ... | +| cflow.cs:300:44:300:51 | After !... [false] | cflow.cs:300:46:300:50 | After ... > ... [true] | +| cflow.cs:300:44:300:51 | After !... [true] | cflow.cs:300:46:300:50 | After ... > ... [false] | +| cflow.cs:300:44:300:64 | ... && ... | cflow.cs:300:38:300:38 | 0 | +| cflow.cs:300:44:300:64 | After ... && ... | cflow.cs:300:44:300:51 | After !... [false] | +| cflow.cs:300:44:300:64 | After ... && ... | cflow.cs:300:56:300:64 | After ... != ... | +| cflow.cs:300:46:300:46 | access to parameter i | cflow.cs:300:46:300:50 | Before ... > ... | | cflow.cs:300:46:300:50 | ... > ... | cflow.cs:300:50:300:50 | 0 | +| cflow.cs:300:46:300:50 | Before ... > ... | cflow.cs:300:44:300:51 | !... | | cflow.cs:300:50:300:50 | 0 | cflow.cs:300:46:300:46 | access to parameter i | -| cflow.cs:300:56:300:56 | access to parameter s | cflow.cs:300:44:300:51 | [true] !... | +| cflow.cs:300:56:300:56 | access to parameter s | cflow.cs:300:56:300:64 | Before ... != ... | | cflow.cs:300:56:300:64 | ... != ... | cflow.cs:300:61:300:64 | null | +| cflow.cs:300:56:300:64 | After ... != ... | cflow.cs:300:56:300:64 | ... != ... | +| cflow.cs:300:56:300:64 | Before ... != ... | cflow.cs:300:44:300:51 | After !... [true] | | cflow.cs:300:61:300:64 | null | cflow.cs:300:56:300:56 | access to parameter s | -| cflow.cs:300:70:300:71 | "" | cflow.cs:300:44:300:64 | ... && ... | -| cflow.cs:304:7:304:18 | call to constructor Object | cflow.cs:304:7:304:18 | call to method | +| cflow.cs:300:70:300:71 | "" | cflow.cs:300:44:300:64 | After ... && ... | +| cflow.cs:304:7:304:18 | After call to constructor Object | cflow.cs:304:7:304:18 | call to constructor Object | +| cflow.cs:304:7:304:18 | After call to method | cflow.cs:304:7:304:18 | call to method | +| cflow.cs:304:7:304:18 | Before call to constructor Object | cflow.cs:304:7:304:18 | After call to method | +| cflow.cs:304:7:304:18 | Before call to method | cflow.cs:304:7:304:18 | Entry | +| cflow.cs:304:7:304:18 | Exit | cflow.cs:304:7:304:18 | Normal Exit | +| cflow.cs:304:7:304:18 | Normal Exit | cflow.cs:304:7:304:18 | {...} | +| cflow.cs:304:7:304:18 | call to constructor Object | cflow.cs:304:7:304:18 | Before call to constructor Object | | cflow.cs:304:7:304:18 | call to method | cflow.cs:304:7:304:18 | this access | -| cflow.cs:304:7:304:18 | exit LambdaGetter | cflow.cs:304:7:304:18 | exit LambdaGetter (normal) | -| cflow.cs:304:7:304:18 | exit LambdaGetter (normal) | cflow.cs:304:7:304:18 | {...} | -| cflow.cs:304:7:304:18 | this access | cflow.cs:304:7:304:18 | enter LambdaGetter | -| cflow.cs:304:7:304:18 | {...} | cflow.cs:304:7:304:18 | call to constructor Object | -| cflow.cs:306:60:310:5 | (...) => ... | cflow.cs:306:60:310:5 | enter get__getter | -| cflow.cs:306:60:310:5 | exit (...) => ... | cflow.cs:306:60:310:5 | exit (...) => ... (normal) | -| cflow.cs:306:60:310:5 | exit (...) => ... (normal) | cflow.cs:309:9:309:17 | return ...; | -| cflow.cs:306:60:310:5 | exit get__getter | cflow.cs:306:60:310:5 | exit get__getter (normal) | -| cflow.cs:306:60:310:5 | exit get__getter (normal) | cflow.cs:306:60:310:5 | (...) => ... | -| cflow.cs:307:5:310:5 | {...} | cflow.cs:306:60:310:5 | enter (...) => ... | +| cflow.cs:304:7:304:18 | this access | cflow.cs:304:7:304:18 | Before call to method | +| cflow.cs:304:7:304:18 | {...} | cflow.cs:304:7:304:18 | After call to constructor Object | +| cflow.cs:306:60:310:5 | (...) => ... | cflow.cs:306:60:310:5 | Entry | +| cflow.cs:306:60:310:5 | Exit | cflow.cs:306:60:310:5 | Normal Exit | +| cflow.cs:306:60:310:5 | Exit | cflow.cs:306:60:310:5 | Normal Exit | +| cflow.cs:306:60:310:5 | Normal Exit | cflow.cs:306:60:310:5 | (...) => ... | +| cflow.cs:306:60:310:5 | Normal Exit | cflow.cs:309:9:309:17 | return ...; | +| cflow.cs:306:61:306:61 | o | cflow.cs:306:60:310:5 | Entry | +| cflow.cs:306:64:306:64 | n | cflow.cs:306:61:306:61 | o | +| cflow.cs:307:5:310:5 | {...} | cflow.cs:306:64:306:64 | n | | cflow.cs:308:9:308:21 | ... ...; | cflow.cs:307:5:310:5 | {...} | +| cflow.cs:308:9:308:21 | After ... ...; | cflow.cs:308:16:308:20 | After Object x = ... | +| cflow.cs:308:16:308:16 | access to local variable x | cflow.cs:308:16:308:20 | Before Object x = ... | +| cflow.cs:308:16:308:20 | After Object x = ... | cflow.cs:308:16:308:20 | Object x = ... | +| cflow.cs:308:16:308:20 | Before Object x = ... | cflow.cs:308:9:308:21 | ... ...; | | cflow.cs:308:16:308:20 | Object x = ... | cflow.cs:308:20:308:20 | access to parameter o | -| cflow.cs:308:20:308:20 | access to parameter o | cflow.cs:308:9:308:21 | ... ...; | +| cflow.cs:308:20:308:20 | access to parameter o | cflow.cs:308:16:308:16 | access to local variable x | +| cflow.cs:309:9:309:17 | Before return ...; | cflow.cs:308:9:308:21 | After ... ...; | | cflow.cs:309:9:309:17 | return ...; | cflow.cs:309:16:309:16 | access to local variable x | -| cflow.cs:309:16:309:16 | access to local variable x | cflow.cs:308:16:308:20 | Object x = ... | +| cflow.cs:309:16:309:16 | access to local variable x | cflow.cs:309:9:309:17 | Before return ...; | blockDominance -| AccessorCalls.cs:1:7:1:19 | enter AccessorCalls | AccessorCalls.cs:1:7:1:19 | enter AccessorCalls | -| AccessorCalls.cs:5:23:5:25 | enter get_Item | AccessorCalls.cs:5:23:5:25 | enter get_Item | -| AccessorCalls.cs:5:33:5:35 | enter set_Item | AccessorCalls.cs:5:33:5:35 | enter set_Item | -| AccessorCalls.cs:7:32:7:34 | enter add_Event | AccessorCalls.cs:7:32:7:34 | enter add_Event | -| AccessorCalls.cs:7:40:7:45 | enter remove_Event | AccessorCalls.cs:7:40:7:45 | enter remove_Event | -| AccessorCalls.cs:10:10:10:11 | enter M1 | AccessorCalls.cs:10:10:10:11 | enter M1 | -| AccessorCalls.cs:19:10:19:11 | enter M2 | AccessorCalls.cs:19:10:19:11 | enter M2 | -| AccessorCalls.cs:28:10:28:11 | enter M3 | AccessorCalls.cs:28:10:28:11 | enter M3 | -| AccessorCalls.cs:35:10:35:11 | enter M4 | AccessorCalls.cs:35:10:35:11 | enter M4 | -| AccessorCalls.cs:42:10:42:11 | enter M5 | AccessorCalls.cs:42:10:42:11 | enter M5 | -| AccessorCalls.cs:49:10:49:11 | enter M6 | AccessorCalls.cs:49:10:49:11 | enter M6 | -| AccessorCalls.cs:56:10:56:11 | enter M7 | AccessorCalls.cs:56:10:56:11 | enter M7 | -| AccessorCalls.cs:61:10:61:11 | enter M8 | AccessorCalls.cs:61:10:61:11 | enter M8 | -| AccessorCalls.cs:66:10:66:11 | enter M9 | AccessorCalls.cs:66:10:66:11 | enter M9 | -| ArrayCreation.cs:1:7:1:19 | enter ArrayCreation | ArrayCreation.cs:1:7:1:19 | enter ArrayCreation | -| ArrayCreation.cs:3:11:3:12 | enter M1 | ArrayCreation.cs:3:11:3:12 | enter M1 | -| ArrayCreation.cs:5:12:5:13 | enter M2 | ArrayCreation.cs:5:12:5:13 | enter M2 | -| ArrayCreation.cs:7:11:7:12 | enter M3 | ArrayCreation.cs:7:11:7:12 | enter M3 | -| ArrayCreation.cs:9:12:9:13 | enter M4 | ArrayCreation.cs:9:12:9:13 | enter M4 | -| Assert.cs:5:7:5:17 | enter AssertTests | Assert.cs:5:7:5:17 | enter AssertTests | -| Assert.cs:7:10:7:11 | enter M1 | Assert.cs:7:10:7:11 | enter M1 | -| Assert.cs:7:10:7:11 | enter M1 | Assert.cs:7:10:7:11 | exit M1 | -| Assert.cs:7:10:7:11 | enter M1 | Assert.cs:7:10:7:11 | exit M1 (abnormal) | -| Assert.cs:7:10:7:11 | enter M1 | Assert.cs:9:20:9:32 | ... ? ... : ... | -| Assert.cs:7:10:7:11 | enter M1 | Assert.cs:9:24:9:27 | null | -| Assert.cs:7:10:7:11 | enter M1 | Assert.cs:9:31:9:32 | "" | -| Assert.cs:7:10:7:11 | enter M1 | Assert.cs:11:9:11:36 | ...; | -| Assert.cs:7:10:7:11 | exit M1 | Assert.cs:7:10:7:11 | exit M1 | -| Assert.cs:7:10:7:11 | exit M1 (abnormal) | Assert.cs:7:10:7:11 | exit M1 (abnormal) | -| Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:7:10:7:11 | exit M1 | -| Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:7:10:7:11 | exit M1 (abnormal) | -| Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:9:20:9:32 | ... ? ... : ... | -| Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:11:9:11:36 | ...; | -| Assert.cs:9:24:9:27 | null | Assert.cs:9:24:9:27 | null | -| Assert.cs:9:31:9:32 | "" | Assert.cs:9:31:9:32 | "" | -| Assert.cs:11:9:11:36 | ...; | Assert.cs:11:9:11:36 | ...; | -| Assert.cs:14:10:14:11 | enter M2 | Assert.cs:14:10:14:11 | enter M2 | -| Assert.cs:14:10:14:11 | enter M2 | Assert.cs:14:10:14:11 | exit M2 | -| Assert.cs:14:10:14:11 | enter M2 | Assert.cs:14:10:14:11 | exit M2 (abnormal) | -| Assert.cs:14:10:14:11 | enter M2 | Assert.cs:16:20:16:32 | ... ? ... : ... | -| Assert.cs:14:10:14:11 | enter M2 | Assert.cs:16:24:16:27 | null | -| Assert.cs:14:10:14:11 | enter M2 | Assert.cs:16:31:16:32 | "" | -| Assert.cs:14:10:14:11 | enter M2 | Assert.cs:18:9:18:36 | ...; | -| Assert.cs:14:10:14:11 | exit M2 | Assert.cs:14:10:14:11 | exit M2 | -| Assert.cs:14:10:14:11 | exit M2 (abnormal) | Assert.cs:14:10:14:11 | exit M2 (abnormal) | -| Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:14:10:14:11 | exit M2 | -| Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:14:10:14:11 | exit M2 (abnormal) | -| Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:16:20:16:32 | ... ? ... : ... | -| Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:18:9:18:36 | ...; | -| Assert.cs:16:24:16:27 | null | Assert.cs:16:24:16:27 | null | -| Assert.cs:16:31:16:32 | "" | Assert.cs:16:31:16:32 | "" | -| Assert.cs:18:9:18:36 | ...; | Assert.cs:18:9:18:36 | ...; | -| Assert.cs:21:10:21:11 | enter M3 | Assert.cs:21:10:21:11 | enter M3 | -| Assert.cs:21:10:21:11 | enter M3 | Assert.cs:21:10:21:11 | exit M3 | -| Assert.cs:21:10:21:11 | enter M3 | Assert.cs:21:10:21:11 | exit M3 (abnormal) | -| Assert.cs:21:10:21:11 | enter M3 | Assert.cs:23:20:23:32 | ... ? ... : ... | -| Assert.cs:21:10:21:11 | enter M3 | Assert.cs:23:24:23:27 | null | -| Assert.cs:21:10:21:11 | enter M3 | Assert.cs:23:31:23:32 | "" | -| Assert.cs:21:10:21:11 | enter M3 | Assert.cs:25:9:25:36 | ...; | -| Assert.cs:21:10:21:11 | exit M3 | Assert.cs:21:10:21:11 | exit M3 | -| Assert.cs:21:10:21:11 | exit M3 (abnormal) | Assert.cs:21:10:21:11 | exit M3 (abnormal) | -| Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:21:10:21:11 | exit M3 | -| Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:21:10:21:11 | exit M3 (abnormal) | -| Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:23:20:23:32 | ... ? ... : ... | -| Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:25:9:25:36 | ...; | -| Assert.cs:23:24:23:27 | null | Assert.cs:23:24:23:27 | null | -| Assert.cs:23:31:23:32 | "" | Assert.cs:23:31:23:32 | "" | -| Assert.cs:25:9:25:36 | ...; | Assert.cs:25:9:25:36 | ...; | -| Assert.cs:28:10:28:11 | enter M4 | Assert.cs:28:10:28:11 | enter M4 | -| Assert.cs:28:10:28:11 | enter M4 | Assert.cs:28:10:28:11 | exit M4 | -| Assert.cs:28:10:28:11 | enter M4 | Assert.cs:28:10:28:11 | exit M4 (abnormal) | -| Assert.cs:28:10:28:11 | enter M4 | Assert.cs:30:20:30:32 | ... ? ... : ... | -| Assert.cs:28:10:28:11 | enter M4 | Assert.cs:30:24:30:27 | null | -| Assert.cs:28:10:28:11 | enter M4 | Assert.cs:30:31:30:32 | "" | -| Assert.cs:28:10:28:11 | enter M4 | Assert.cs:32:9:32:36 | ...; | -| Assert.cs:28:10:28:11 | exit M4 | Assert.cs:28:10:28:11 | exit M4 | -| Assert.cs:28:10:28:11 | exit M4 (abnormal) | Assert.cs:28:10:28:11 | exit M4 (abnormal) | -| Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:28:10:28:11 | exit M4 | -| Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:28:10:28:11 | exit M4 (abnormal) | -| Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:30:20:30:32 | ... ? ... : ... | -| Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:32:9:32:36 | ...; | -| Assert.cs:30:24:30:27 | null | Assert.cs:30:24:30:27 | null | -| Assert.cs:30:31:30:32 | "" | Assert.cs:30:31:30:32 | "" | -| Assert.cs:32:9:32:36 | ...; | Assert.cs:32:9:32:36 | ...; | -| Assert.cs:35:10:35:11 | enter M5 | Assert.cs:35:10:35:11 | enter M5 | -| Assert.cs:35:10:35:11 | enter M5 | Assert.cs:35:10:35:11 | exit M5 | -| Assert.cs:35:10:35:11 | enter M5 | Assert.cs:35:10:35:11 | exit M5 (abnormal) | -| Assert.cs:35:10:35:11 | enter M5 | Assert.cs:37:20:37:32 | ... ? ... : ... | -| Assert.cs:35:10:35:11 | enter M5 | Assert.cs:37:24:37:27 | null | -| Assert.cs:35:10:35:11 | enter M5 | Assert.cs:37:31:37:32 | "" | -| Assert.cs:35:10:35:11 | enter M5 | Assert.cs:39:9:39:36 | ...; | -| Assert.cs:35:10:35:11 | exit M5 | Assert.cs:35:10:35:11 | exit M5 | -| Assert.cs:35:10:35:11 | exit M5 (abnormal) | Assert.cs:35:10:35:11 | exit M5 (abnormal) | -| Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:35:10:35:11 | exit M5 | -| Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:35:10:35:11 | exit M5 (abnormal) | -| Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:37:20:37:32 | ... ? ... : ... | -| Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:39:9:39:36 | ...; | -| Assert.cs:37:24:37:27 | null | Assert.cs:37:24:37:27 | null | -| Assert.cs:37:31:37:32 | "" | Assert.cs:37:31:37:32 | "" | -| Assert.cs:39:9:39:36 | ...; | Assert.cs:39:9:39:36 | ...; | -| Assert.cs:42:10:42:11 | enter M6 | Assert.cs:42:10:42:11 | enter M6 | -| Assert.cs:42:10:42:11 | enter M6 | Assert.cs:42:10:42:11 | exit M6 | -| Assert.cs:42:10:42:11 | enter M6 | Assert.cs:42:10:42:11 | exit M6 (abnormal) | -| Assert.cs:42:10:42:11 | enter M6 | Assert.cs:44:20:44:32 | ... ? ... : ... | -| Assert.cs:42:10:42:11 | enter M6 | Assert.cs:44:24:44:27 | null | -| Assert.cs:42:10:42:11 | enter M6 | Assert.cs:44:31:44:32 | "" | -| Assert.cs:42:10:42:11 | enter M6 | Assert.cs:46:9:46:36 | ...; | -| Assert.cs:42:10:42:11 | exit M6 | Assert.cs:42:10:42:11 | exit M6 | -| Assert.cs:42:10:42:11 | exit M6 (abnormal) | Assert.cs:42:10:42:11 | exit M6 (abnormal) | -| Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:42:10:42:11 | exit M6 | -| Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:42:10:42:11 | exit M6 (abnormal) | -| Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:44:20:44:32 | ... ? ... : ... | -| Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:46:9:46:36 | ...; | -| Assert.cs:44:24:44:27 | null | Assert.cs:44:24:44:27 | null | -| Assert.cs:44:31:44:32 | "" | Assert.cs:44:31:44:32 | "" | -| Assert.cs:46:9:46:36 | ...; | Assert.cs:46:9:46:36 | ...; | -| Assert.cs:49:10:49:11 | enter M7 | Assert.cs:49:10:49:11 | enter M7 | -| Assert.cs:49:10:49:11 | enter M7 | Assert.cs:49:10:49:11 | exit M7 | -| Assert.cs:49:10:49:11 | enter M7 | Assert.cs:49:10:49:11 | exit M7 (abnormal) | -| Assert.cs:49:10:49:11 | enter M7 | Assert.cs:51:20:51:32 | ... ? ... : ... | -| Assert.cs:49:10:49:11 | enter M7 | Assert.cs:51:24:51:27 | null | -| Assert.cs:49:10:49:11 | enter M7 | Assert.cs:51:31:51:32 | "" | -| Assert.cs:49:10:49:11 | enter M7 | Assert.cs:53:9:53:36 | ...; | -| Assert.cs:49:10:49:11 | exit M7 | Assert.cs:49:10:49:11 | exit M7 | -| Assert.cs:49:10:49:11 | exit M7 (abnormal) | Assert.cs:49:10:49:11 | exit M7 (abnormal) | -| Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:49:10:49:11 | exit M7 | -| Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:49:10:49:11 | exit M7 (abnormal) | -| Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:51:20:51:32 | ... ? ... : ... | -| Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:53:9:53:36 | ...; | -| Assert.cs:51:24:51:27 | null | Assert.cs:51:24:51:27 | null | -| Assert.cs:51:31:51:32 | "" | Assert.cs:51:31:51:32 | "" | -| Assert.cs:53:9:53:36 | ...; | Assert.cs:53:9:53:36 | ...; | -| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:56:10:56:11 | enter M8 | -| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:56:10:56:11 | exit M8 | -| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:56:10:56:11 | exit M8 (abnormal) | -| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:58:20:58:32 | ... ? ... : ... | -| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:58:24:58:27 | null | -| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:58:31:58:32 | "" | -| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:59:23:59:36 | ... && ... | -| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:59:36:59:36 | access to parameter b | -| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:60:9:60:36 | ...; | -| Assert.cs:56:10:56:11 | exit M8 | Assert.cs:56:10:56:11 | exit M8 | -| Assert.cs:56:10:56:11 | exit M8 (abnormal) | Assert.cs:56:10:56:11 | exit M8 (abnormal) | -| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:56:10:56:11 | exit M8 | -| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:56:10:56:11 | exit M8 (abnormal) | -| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:20:58:32 | ... ? ... : ... | -| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:59:23:59:36 | ... && ... | -| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:59:36:59:36 | access to parameter b | -| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:60:9:60:36 | ...; | -| Assert.cs:58:24:58:27 | null | Assert.cs:58:24:58:27 | null | -| Assert.cs:58:31:58:32 | "" | Assert.cs:58:31:58:32 | "" | -| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:56:10:56:11 | exit M8 | -| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:56:10:56:11 | exit M8 (abnormal) | -| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:59:23:59:36 | ... && ... | -| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:60:9:60:36 | ...; | -| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:36:59:36 | access to parameter b | -| Assert.cs:60:9:60:36 | ...; | Assert.cs:60:9:60:36 | ...; | -| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:63:10:63:11 | enter M9 | -| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:63:10:63:11 | exit M9 | -| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:63:10:63:11 | exit M9 (abnormal) | -| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:65:20:65:32 | ... ? ... : ... | -| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:65:24:65:27 | null | -| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:65:31:65:32 | "" | -| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:66:24:66:37 | ... \|\| ... | -| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:66:37:66:37 | access to parameter b | -| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:67:9:67:36 | ...; | -| Assert.cs:63:10:63:11 | exit M9 | Assert.cs:63:10:63:11 | exit M9 | -| Assert.cs:63:10:63:11 | exit M9 (abnormal) | Assert.cs:63:10:63:11 | exit M9 (abnormal) | -| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:63:10:63:11 | exit M9 | -| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:63:10:63:11 | exit M9 (abnormal) | -| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:20:65:32 | ... ? ... : ... | -| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:66:24:66:37 | ... \|\| ... | -| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:66:37:66:37 | access to parameter b | -| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:67:9:67:36 | ...; | -| Assert.cs:65:24:65:27 | null | Assert.cs:65:24:65:27 | null | -| Assert.cs:65:31:65:32 | "" | Assert.cs:65:31:65:32 | "" | -| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:63:10:63:11 | exit M9 | -| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:63:10:63:11 | exit M9 (abnormal) | -| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:66:24:66:37 | ... \|\| ... | -| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:67:9:67:36 | ...; | -| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:37:66:37 | access to parameter b | -| Assert.cs:67:9:67:36 | ...; | Assert.cs:67:9:67:36 | ...; | -| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:70:10:70:12 | enter M10 | -| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:70:10:70:12 | exit M10 | -| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:70:10:70:12 | exit M10 (abnormal) | -| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:72:20:72:32 | ... ? ... : ... | -| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:72:24:72:27 | null | -| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:72:31:72:32 | "" | -| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:73:23:73:36 | ... && ... | -| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:73:36:73:36 | access to parameter b | -| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:74:9:74:36 | ...; | -| Assert.cs:70:10:70:12 | exit M10 | Assert.cs:70:10:70:12 | exit M10 | -| Assert.cs:70:10:70:12 | exit M10 (abnormal) | Assert.cs:70:10:70:12 | exit M10 (abnormal) | -| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:70:10:70:12 | exit M10 | -| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:70:10:70:12 | exit M10 (abnormal) | -| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:20:72:32 | ... ? ... : ... | -| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:73:23:73:36 | ... && ... | -| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:73:36:73:36 | access to parameter b | -| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:74:9:74:36 | ...; | -| Assert.cs:72:24:72:27 | null | Assert.cs:72:24:72:27 | null | -| Assert.cs:72:31:72:32 | "" | Assert.cs:72:31:72:32 | "" | -| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:70:10:70:12 | exit M10 | -| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:70:10:70:12 | exit M10 (abnormal) | -| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:73:23:73:36 | ... && ... | -| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:74:9:74:36 | ...; | -| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:36:73:36 | access to parameter b | -| Assert.cs:74:9:74:36 | ...; | Assert.cs:74:9:74:36 | ...; | -| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:77:10:77:12 | enter M11 | -| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:77:10:77:12 | exit M11 | -| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:77:10:77:12 | exit M11 (abnormal) | -| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:79:20:79:32 | ... ? ... : ... | -| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:79:24:79:27 | null | -| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:79:31:79:32 | "" | -| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:80:24:80:37 | ... \|\| ... | -| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:80:37:80:37 | access to parameter b | -| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:81:9:81:36 | ...; | -| Assert.cs:77:10:77:12 | exit M11 | Assert.cs:77:10:77:12 | exit M11 | -| Assert.cs:77:10:77:12 | exit M11 (abnormal) | Assert.cs:77:10:77:12 | exit M11 (abnormal) | -| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:77:10:77:12 | exit M11 | -| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:77:10:77:12 | exit M11 (abnormal) | -| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:20:79:32 | ... ? ... : ... | -| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:80:24:80:37 | ... \|\| ... | -| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:80:37:80:37 | access to parameter b | -| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:81:9:81:36 | ...; | -| Assert.cs:79:24:79:27 | null | Assert.cs:79:24:79:27 | null | -| Assert.cs:79:31:79:32 | "" | Assert.cs:79:31:79:32 | "" | -| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:77:10:77:12 | exit M11 | -| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:77:10:77:12 | exit M11 (abnormal) | -| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:80:24:80:37 | ... \|\| ... | -| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:81:9:81:36 | ...; | -| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:37:80:37 | access to parameter b | -| Assert.cs:81:9:81:36 | ...; | Assert.cs:81:9:81:36 | ...; | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:84:10:84:12 | exit M12 | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:84:10:84:12 | exit M12 (abnormal) | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:86:24:86:27 | null | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:86:31:86:32 | "" | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:88:9:88:36 | ...; | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:90:17:90:20 | null | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:90:24:90:25 | "" | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:92:9:92:36 | ...; | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:94:17:94:20 | null | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:94:24:94:25 | "" | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:96:9:96:36 | ...; | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:98:17:98:20 | null | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:98:24:98:25 | "" | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:100:9:100:36 | ...; | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:102:17:102:20 | null | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:102:24:102:25 | "" | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:104:9:104:36 | ...; | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:106:17:106:20 | null | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:106:24:106:25 | "" | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:108:9:108:36 | ...; | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:110:17:110:20 | null | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:110:24:110:25 | "" | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:112:9:112:36 | ...; | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:114:17:114:20 | null | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:114:24:114:25 | "" | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:115:23:115:36 | ... && ... | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:116:9:116:36 | ...; | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:118:17:118:20 | null | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:118:24:118:25 | "" | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:119:24:119:38 | ... \|\| ... | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:120:9:120:36 | ...; | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:122:17:122:20 | null | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:122:24:122:25 | "" | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:123:23:123:36 | ... && ... | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:124:9:124:36 | ...; | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:126:17:126:20 | null | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:126:24:126:25 | "" | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:127:24:127:38 | ... \|\| ... | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:128:9:128:36 | ...; | -| Assert.cs:84:10:84:12 | exit M12 | Assert.cs:84:10:84:12 | exit M12 | -| Assert.cs:84:10:84:12 | exit M12 (abnormal) | Assert.cs:84:10:84:12 | exit M12 (abnormal) | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:84:10:84:12 | exit M12 | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:84:10:84:12 | exit M12 (abnormal) | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:88:9:88:36 | ...; | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:92:9:92:36 | ...; | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:96:9:96:36 | ...; | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:100:9:100:36 | ...; | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:104:9:104:36 | ...; | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:108:9:108:36 | ...; | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:112:9:112:36 | ...; | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:115:23:115:36 | ... && ... | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:116:9:116:36 | ...; | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:119:24:119:38 | ... \|\| ... | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:120:9:120:36 | ...; | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:123:23:123:36 | ... && ... | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:124:9:124:36 | ...; | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:127:24:127:38 | ... \|\| ... | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:128:9:128:36 | ...; | -| Assert.cs:86:24:86:27 | null | Assert.cs:86:24:86:27 | null | -| Assert.cs:86:31:86:32 | "" | Assert.cs:86:31:86:32 | "" | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:88:9:88:36 | ...; | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:90:17:90:20 | null | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:90:24:90:25 | "" | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:92:9:92:36 | ...; | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:94:17:94:20 | null | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:94:24:94:25 | "" | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:96:9:96:36 | ...; | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:98:17:98:20 | null | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:98:24:98:25 | "" | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:100:9:100:36 | ...; | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:102:17:102:20 | null | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:102:24:102:25 | "" | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:104:9:104:36 | ...; | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:106:17:106:20 | null | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:106:24:106:25 | "" | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:108:9:108:36 | ...; | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:110:17:110:20 | null | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:110:24:110:25 | "" | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:112:9:112:36 | ...; | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:114:17:114:20 | null | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:114:24:114:25 | "" | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:115:23:115:36 | ... && ... | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:116:9:116:36 | ...; | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:118:17:118:20 | null | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:118:24:118:25 | "" | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:119:24:119:38 | ... \|\| ... | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:120:9:120:36 | ...; | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:122:17:122:20 | null | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:122:24:122:25 | "" | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:123:23:123:36 | ... && ... | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:124:9:124:36 | ...; | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:126:17:126:20 | null | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:126:24:126:25 | "" | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:127:24:127:38 | ... \|\| ... | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:128:9:128:36 | ...; | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:92:9:92:36 | ...; | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:96:9:96:36 | ...; | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:100:9:100:36 | ...; | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:104:9:104:36 | ...; | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:108:9:108:36 | ...; | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:112:9:112:36 | ...; | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | ... && ... | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:116:9:116:36 | ...; | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | ... \|\| ... | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:120:9:120:36 | ...; | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | ... && ... | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:124:9:124:36 | ...; | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | ... \|\| ... | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:128:9:128:36 | ...; | -| Assert.cs:90:17:90:20 | null | Assert.cs:90:17:90:20 | null | -| Assert.cs:90:24:90:25 | "" | Assert.cs:90:24:90:25 | "" | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:92:9:92:36 | ...; | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:94:17:94:20 | null | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:94:24:94:25 | "" | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:96:9:96:36 | ...; | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:98:17:98:20 | null | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:98:24:98:25 | "" | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:100:9:100:36 | ...; | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:102:17:102:20 | null | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:102:24:102:25 | "" | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:104:9:104:36 | ...; | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:106:17:106:20 | null | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:106:24:106:25 | "" | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:108:9:108:36 | ...; | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:110:17:110:20 | null | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:110:24:110:25 | "" | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:112:9:112:36 | ...; | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:114:17:114:20 | null | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:114:24:114:25 | "" | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:115:23:115:36 | ... && ... | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:116:9:116:36 | ...; | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:118:17:118:20 | null | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:118:24:118:25 | "" | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:119:24:119:38 | ... \|\| ... | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:120:9:120:36 | ...; | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:122:17:122:20 | null | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:122:24:122:25 | "" | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:123:23:123:36 | ... && ... | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:124:9:124:36 | ...; | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:126:17:126:20 | null | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:126:24:126:25 | "" | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:127:24:127:38 | ... \|\| ... | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:128:9:128:36 | ...; | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:96:9:96:36 | ...; | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:100:9:100:36 | ...; | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:104:9:104:36 | ...; | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:108:9:108:36 | ...; | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:112:9:112:36 | ...; | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | ... && ... | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:116:9:116:36 | ...; | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | ... \|\| ... | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:120:9:120:36 | ...; | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | ... && ... | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:124:9:124:36 | ...; | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | ... \|\| ... | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:128:9:128:36 | ...; | -| Assert.cs:94:17:94:20 | null | Assert.cs:94:17:94:20 | null | -| Assert.cs:94:24:94:25 | "" | Assert.cs:94:24:94:25 | "" | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:96:9:96:36 | ...; | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:98:17:98:20 | null | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:98:24:98:25 | "" | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:100:9:100:36 | ...; | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:102:17:102:20 | null | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:102:24:102:25 | "" | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:104:9:104:36 | ...; | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:106:17:106:20 | null | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:106:24:106:25 | "" | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:108:9:108:36 | ...; | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:110:17:110:20 | null | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:110:24:110:25 | "" | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:112:9:112:36 | ...; | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:114:17:114:20 | null | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:114:24:114:25 | "" | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:115:23:115:36 | ... && ... | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:116:9:116:36 | ...; | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:118:17:118:20 | null | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:118:24:118:25 | "" | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:119:24:119:38 | ... \|\| ... | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:120:9:120:36 | ...; | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:122:17:122:20 | null | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:122:24:122:25 | "" | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:123:23:123:36 | ... && ... | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:124:9:124:36 | ...; | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:126:17:126:20 | null | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:126:24:126:25 | "" | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:127:24:127:38 | ... \|\| ... | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:128:9:128:36 | ...; | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:100:9:100:36 | ...; | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:104:9:104:36 | ...; | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:108:9:108:36 | ...; | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:112:9:112:36 | ...; | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | ... && ... | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:116:9:116:36 | ...; | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | ... \|\| ... | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:120:9:120:36 | ...; | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | ... && ... | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:124:9:124:36 | ...; | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | ... \|\| ... | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:128:9:128:36 | ...; | -| Assert.cs:98:17:98:20 | null | Assert.cs:98:17:98:20 | null | -| Assert.cs:98:24:98:25 | "" | Assert.cs:98:24:98:25 | "" | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:100:9:100:36 | ...; | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:102:17:102:20 | null | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:102:24:102:25 | "" | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:104:9:104:36 | ...; | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:106:17:106:20 | null | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:106:24:106:25 | "" | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:108:9:108:36 | ...; | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:110:17:110:20 | null | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:110:24:110:25 | "" | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:112:9:112:36 | ...; | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:114:17:114:20 | null | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:114:24:114:25 | "" | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:115:23:115:36 | ... && ... | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:116:9:116:36 | ...; | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:118:17:118:20 | null | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:118:24:118:25 | "" | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:119:24:119:38 | ... \|\| ... | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:120:9:120:36 | ...; | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:122:17:122:20 | null | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:122:24:122:25 | "" | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:123:23:123:36 | ... && ... | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:124:9:124:36 | ...; | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:126:17:126:20 | null | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:126:24:126:25 | "" | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:127:24:127:38 | ... \|\| ... | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:128:9:128:36 | ...; | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:104:9:104:36 | ...; | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:108:9:108:36 | ...; | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:112:9:112:36 | ...; | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | ... && ... | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:116:9:116:36 | ...; | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | ... \|\| ... | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:120:9:120:36 | ...; | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | ... && ... | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:124:9:124:36 | ...; | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | ... \|\| ... | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:128:9:128:36 | ...; | -| Assert.cs:102:17:102:20 | null | Assert.cs:102:17:102:20 | null | -| Assert.cs:102:24:102:25 | "" | Assert.cs:102:24:102:25 | "" | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:104:9:104:36 | ...; | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:106:17:106:20 | null | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:106:24:106:25 | "" | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:108:9:108:36 | ...; | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:110:17:110:20 | null | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:110:24:110:25 | "" | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:112:9:112:36 | ...; | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:114:17:114:20 | null | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:114:24:114:25 | "" | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:115:23:115:36 | ... && ... | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:116:9:116:36 | ...; | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:118:17:118:20 | null | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:118:24:118:25 | "" | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:119:24:119:38 | ... \|\| ... | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:120:9:120:36 | ...; | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:122:17:122:20 | null | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:122:24:122:25 | "" | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:123:23:123:36 | ... && ... | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:124:9:124:36 | ...; | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:126:17:126:20 | null | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:126:24:126:25 | "" | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:127:24:127:38 | ... \|\| ... | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:128:9:128:36 | ...; | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:108:9:108:36 | ...; | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:112:9:112:36 | ...; | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | ... && ... | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:116:9:116:36 | ...; | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | ... \|\| ... | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:120:9:120:36 | ...; | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | ... && ... | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:124:9:124:36 | ...; | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | ... \|\| ... | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:128:9:128:36 | ...; | -| Assert.cs:106:17:106:20 | null | Assert.cs:106:17:106:20 | null | -| Assert.cs:106:24:106:25 | "" | Assert.cs:106:24:106:25 | "" | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:108:9:108:36 | ...; | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:110:17:110:20 | null | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:110:24:110:25 | "" | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:112:9:112:36 | ...; | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:114:17:114:20 | null | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:114:24:114:25 | "" | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:115:23:115:36 | ... && ... | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:116:9:116:36 | ...; | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:118:17:118:20 | null | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:118:24:118:25 | "" | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:119:24:119:38 | ... \|\| ... | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:120:9:120:36 | ...; | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:122:17:122:20 | null | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:122:24:122:25 | "" | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:123:23:123:36 | ... && ... | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:124:9:124:36 | ...; | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:126:17:126:20 | null | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:126:24:126:25 | "" | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:127:24:127:38 | ... \|\| ... | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:128:9:128:36 | ...; | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:112:9:112:36 | ...; | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | ... && ... | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:116:9:116:36 | ...; | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | ... \|\| ... | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:120:9:120:36 | ...; | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | ... && ... | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:124:9:124:36 | ...; | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | ... \|\| ... | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:128:9:128:36 | ...; | -| Assert.cs:110:17:110:20 | null | Assert.cs:110:17:110:20 | null | -| Assert.cs:110:24:110:25 | "" | Assert.cs:110:24:110:25 | "" | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:112:9:112:36 | ...; | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:114:17:114:20 | null | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:114:24:114:25 | "" | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:115:23:115:36 | ... && ... | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:116:9:116:36 | ...; | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:118:17:118:20 | null | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:118:24:118:25 | "" | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:119:24:119:38 | ... \|\| ... | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:120:9:120:36 | ...; | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:122:17:122:20 | null | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:122:24:122:25 | "" | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:123:23:123:36 | ... && ... | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:124:9:124:36 | ...; | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:126:17:126:20 | null | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:126:24:126:25 | "" | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:127:24:127:38 | ... \|\| ... | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:128:9:128:36 | ...; | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | ... && ... | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:116:9:116:36 | ...; | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | ... \|\| ... | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:120:9:120:36 | ...; | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | ... && ... | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:124:9:124:36 | ...; | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | ... \|\| ... | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:128:9:128:36 | ...; | -| Assert.cs:114:17:114:20 | null | Assert.cs:114:17:114:20 | null | -| Assert.cs:114:24:114:25 | "" | Assert.cs:114:24:114:25 | "" | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:115:23:115:36 | ... && ... | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:116:9:116:36 | ...; | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:118:17:118:20 | null | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:118:24:118:25 | "" | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:119:24:119:38 | ... \|\| ... | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:120:9:120:36 | ...; | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:122:17:122:20 | null | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:122:24:122:25 | "" | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:123:23:123:36 | ... && ... | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:124:9:124:36 | ...; | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:126:17:126:20 | null | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:126:24:126:25 | "" | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:127:24:127:38 | ... \|\| ... | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:128:9:128:36 | ...; | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:116:9:116:36 | ...; | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:118:17:118:20 | null | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:118:24:118:25 | "" | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:119:24:119:38 | ... \|\| ... | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:120:9:120:36 | ...; | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:122:17:122:20 | null | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:122:24:122:25 | "" | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:123:23:123:36 | ... && ... | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:124:9:124:36 | ...; | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:126:17:126:20 | null | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:126:24:126:25 | "" | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:127:24:127:38 | ... \|\| ... | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:128:9:128:36 | ...; | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | ... \|\| ... | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:120:9:120:36 | ...; | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | ... && ... | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:124:9:124:36 | ...; | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | ... \|\| ... | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:128:9:128:36 | ...; | -| Assert.cs:118:17:118:20 | null | Assert.cs:118:17:118:20 | null | -| Assert.cs:118:24:118:25 | "" | Assert.cs:118:24:118:25 | "" | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:119:24:119:38 | ... \|\| ... | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:120:9:120:36 | ...; | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:122:17:122:20 | null | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:122:24:122:25 | "" | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:123:23:123:36 | ... && ... | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:124:9:124:36 | ...; | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:126:17:126:20 | null | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:126:24:126:25 | "" | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:127:24:127:38 | ... \|\| ... | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:128:9:128:36 | ...; | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:120:9:120:36 | ...; | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:122:17:122:20 | null | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:122:24:122:25 | "" | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:123:23:123:36 | ... && ... | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:124:9:124:36 | ...; | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:126:17:126:20 | null | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:126:24:126:25 | "" | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:127:24:127:38 | ... \|\| ... | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:128:9:128:36 | ...; | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | ... && ... | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:124:9:124:36 | ...; | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | ... \|\| ... | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:128:9:128:36 | ...; | -| Assert.cs:122:17:122:20 | null | Assert.cs:122:17:122:20 | null | -| Assert.cs:122:24:122:25 | "" | Assert.cs:122:24:122:25 | "" | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:123:23:123:36 | ... && ... | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:124:9:124:36 | ...; | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:126:17:126:20 | null | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:126:24:126:25 | "" | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:127:24:127:38 | ... \|\| ... | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:128:9:128:36 | ...; | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:124:9:124:36 | ...; | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:126:17:126:20 | null | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:126:24:126:25 | "" | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:127:24:127:38 | ... \|\| ... | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:128:9:128:36 | ...; | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:127:24:127:38 | ... \|\| ... | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:128:9:128:36 | ...; | -| Assert.cs:126:17:126:20 | null | Assert.cs:126:17:126:20 | null | -| Assert.cs:126:24:126:25 | "" | Assert.cs:126:24:126:25 | "" | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:127:24:127:38 | ... \|\| ... | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:128:9:128:36 | ...; | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:128:9:128:36 | ...; | -| Assert.cs:131:18:131:32 | enter AssertTrueFalse | Assert.cs:131:18:131:32 | enter AssertTrueFalse | -| Assert.cs:138:10:138:12 | enter M13 | Assert.cs:138:10:138:12 | enter M13 | -| Assert.cs:138:10:138:12 | enter M13 | Assert.cs:138:10:138:12 | exit M13 | -| Assert.cs:138:10:138:12 | enter M13 | Assert.cs:138:10:138:12 | exit M13 (abnormal) | -| Assert.cs:138:10:138:12 | enter M13 | Assert.cs:141:9:141:15 | return ...; | -| Assert.cs:138:10:138:12 | exit M13 | Assert.cs:138:10:138:12 | exit M13 | -| Assert.cs:138:10:138:12 | exit M13 (abnormal) | Assert.cs:138:10:138:12 | exit M13 (abnormal) | -| Assert.cs:141:9:141:15 | return ...; | Assert.cs:141:9:141:15 | return ...; | -| Assignments.cs:1:7:1:17 | enter Assignments | Assignments.cs:1:7:1:17 | enter Assignments | -| Assignments.cs:3:10:3:10 | enter M | Assignments.cs:3:10:3:10 | enter M | -| Assignments.cs:14:18:14:35 | enter (...) => ... | Assignments.cs:14:18:14:35 | enter (...) => ... | -| Assignments.cs:17:40:17:40 | enter + | Assignments.cs:17:40:17:40 | enter + | -| Assignments.cs:27:10:27:23 | enter SetParamSingle | Assignments.cs:27:10:27:23 | enter SetParamSingle | -| Assignments.cs:32:10:32:22 | enter SetParamMulti | Assignments.cs:32:10:32:22 | enter SetParamMulti | -| Assignments.cs:38:10:38:11 | enter M2 | Assignments.cs:38:10:38:11 | enter M2 | -| BreakInTry.cs:1:7:1:16 | enter BreakInTry | BreakInTry.cs:1:7:1:16 | enter BreakInTry | -| BreakInTry.cs:3:10:3:11 | enter M1 | BreakInTry.cs:3:10:3:11 | enter M1 | -| BreakInTry.cs:3:10:3:11 | enter M1 | BreakInTry.cs:3:10:3:11 | exit M1 (normal) | -| BreakInTry.cs:3:10:3:11 | enter M1 | BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | -| BreakInTry.cs:3:10:3:11 | enter M1 | BreakInTry.cs:7:26:7:28 | String arg | -| BreakInTry.cs:3:10:3:11 | enter M1 | BreakInTry.cs:10:21:10:26 | break; | -| BreakInTry.cs:3:10:3:11 | enter M1 | BreakInTry.cs:14:9:17:9 | {...} | -| BreakInTry.cs:3:10:3:11 | enter M1 | BreakInTry.cs:16:17:16:17 | ; | -| BreakInTry.cs:3:10:3:11 | exit M1 (normal) | BreakInTry.cs:3:10:3:11 | exit M1 (normal) | -| BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | BreakInTry.cs:3:10:3:11 | exit M1 (normal) | -| BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | -| BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | BreakInTry.cs:7:26:7:28 | String arg | -| BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | BreakInTry.cs:10:21:10:26 | break; | -| BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | BreakInTry.cs:14:9:17:9 | {...} | -| BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | BreakInTry.cs:16:17:16:17 | ; | +| AccessorCalls.cs:1:7:1:19 | Entry | AccessorCalls.cs:1:7:1:19 | Entry | +| AccessorCalls.cs:5:23:5:25 | Entry | AccessorCalls.cs:5:23:5:25 | Entry | +| AccessorCalls.cs:5:33:5:35 | Entry | AccessorCalls.cs:5:33:5:35 | Entry | +| AccessorCalls.cs:7:32:7:34 | Entry | AccessorCalls.cs:7:32:7:34 | Entry | +| AccessorCalls.cs:7:40:7:45 | Entry | AccessorCalls.cs:7:40:7:45 | Entry | +| AccessorCalls.cs:10:10:10:11 | Entry | AccessorCalls.cs:10:10:10:11 | Entry | +| AccessorCalls.cs:19:10:19:11 | Entry | AccessorCalls.cs:19:10:19:11 | Entry | +| AccessorCalls.cs:28:10:28:11 | Entry | AccessorCalls.cs:28:10:28:11 | Entry | +| AccessorCalls.cs:35:10:35:11 | Entry | AccessorCalls.cs:35:10:35:11 | Entry | +| AccessorCalls.cs:42:10:42:11 | Entry | AccessorCalls.cs:42:10:42:11 | Entry | +| AccessorCalls.cs:49:10:49:11 | Entry | AccessorCalls.cs:49:10:49:11 | Entry | +| AccessorCalls.cs:56:10:56:11 | Entry | AccessorCalls.cs:56:10:56:11 | Entry | +| AccessorCalls.cs:61:10:61:11 | Entry | AccessorCalls.cs:61:10:61:11 | Entry | +| AccessorCalls.cs:66:10:66:11 | Entry | AccessorCalls.cs:66:10:66:11 | Entry | +| ArrayCreation.cs:1:7:1:19 | Entry | ArrayCreation.cs:1:7:1:19 | Entry | +| ArrayCreation.cs:3:11:3:12 | Entry | ArrayCreation.cs:3:11:3:12 | Entry | +| ArrayCreation.cs:5:12:5:13 | Entry | ArrayCreation.cs:5:12:5:13 | Entry | +| ArrayCreation.cs:7:11:7:12 | Entry | ArrayCreation.cs:7:11:7:12 | Entry | +| ArrayCreation.cs:9:12:9:13 | Entry | ArrayCreation.cs:9:12:9:13 | Entry | +| Assert.cs:5:7:5:17 | Entry | Assert.cs:5:7:5:17 | Entry | +| Assert.cs:7:10:7:11 | Entry | Assert.cs:7:10:7:11 | Entry | +| Assert.cs:7:10:7:11 | Entry | Assert.cs:7:10:7:11 | Exceptional Exit | +| Assert.cs:7:10:7:11 | Entry | Assert.cs:7:10:7:11 | Exit | +| Assert.cs:7:10:7:11 | Entry | Assert.cs:9:20:9:20 | After access to parameter b [false] | +| Assert.cs:7:10:7:11 | Entry | Assert.cs:9:20:9:20 | After access to parameter b [true] | +| Assert.cs:7:10:7:11 | Entry | Assert.cs:9:20:9:32 | After ... ? ... : ... | +| Assert.cs:7:10:7:11 | Entry | Assert.cs:10:9:10:31 | After call to method Assert | +| Assert.cs:7:10:7:11 | Exceptional Exit | Assert.cs:7:10:7:11 | Exceptional Exit | +| Assert.cs:7:10:7:11 | Exit | Assert.cs:7:10:7:11 | Exit | +| Assert.cs:9:20:9:20 | After access to parameter b [false] | Assert.cs:9:20:9:20 | After access to parameter b [false] | +| Assert.cs:9:20:9:20 | After access to parameter b [true] | Assert.cs:9:20:9:20 | After access to parameter b [true] | +| Assert.cs:9:20:9:32 | After ... ? ... : ... | Assert.cs:7:10:7:11 | Exceptional Exit | +| Assert.cs:9:20:9:32 | After ... ? ... : ... | Assert.cs:7:10:7:11 | Exit | +| Assert.cs:9:20:9:32 | After ... ? ... : ... | Assert.cs:9:20:9:32 | After ... ? ... : ... | +| Assert.cs:9:20:9:32 | After ... ? ... : ... | Assert.cs:10:9:10:31 | After call to method Assert | +| Assert.cs:10:9:10:31 | After call to method Assert | Assert.cs:10:9:10:31 | After call to method Assert | +| Assert.cs:14:10:14:11 | Entry | Assert.cs:14:10:14:11 | Entry | +| Assert.cs:14:10:14:11 | Entry | Assert.cs:14:10:14:11 | Exceptional Exit | +| Assert.cs:14:10:14:11 | Entry | Assert.cs:14:10:14:11 | Exit | +| Assert.cs:14:10:14:11 | Entry | Assert.cs:16:20:16:20 | After access to parameter b [false] | +| Assert.cs:14:10:14:11 | Entry | Assert.cs:16:20:16:20 | After access to parameter b [true] | +| Assert.cs:14:10:14:11 | Entry | Assert.cs:16:20:16:32 | After ... ? ... : ... | +| Assert.cs:14:10:14:11 | Entry | Assert.cs:17:9:17:24 | After call to method IsNull | +| Assert.cs:14:10:14:11 | Exceptional Exit | Assert.cs:14:10:14:11 | Exceptional Exit | +| Assert.cs:14:10:14:11 | Exit | Assert.cs:14:10:14:11 | Exit | +| Assert.cs:16:20:16:20 | After access to parameter b [false] | Assert.cs:16:20:16:20 | After access to parameter b [false] | +| Assert.cs:16:20:16:20 | After access to parameter b [true] | Assert.cs:16:20:16:20 | After access to parameter b [true] | +| Assert.cs:16:20:16:32 | After ... ? ... : ... | Assert.cs:14:10:14:11 | Exceptional Exit | +| Assert.cs:16:20:16:32 | After ... ? ... : ... | Assert.cs:14:10:14:11 | Exit | +| Assert.cs:16:20:16:32 | After ... ? ... : ... | Assert.cs:16:20:16:32 | After ... ? ... : ... | +| Assert.cs:16:20:16:32 | After ... ? ... : ... | Assert.cs:17:9:17:24 | After call to method IsNull | +| Assert.cs:17:9:17:24 | After call to method IsNull | Assert.cs:17:9:17:24 | After call to method IsNull | +| Assert.cs:21:10:21:11 | Entry | Assert.cs:21:10:21:11 | Entry | +| Assert.cs:21:10:21:11 | Entry | Assert.cs:21:10:21:11 | Exceptional Exit | +| Assert.cs:21:10:21:11 | Entry | Assert.cs:21:10:21:11 | Exit | +| Assert.cs:21:10:21:11 | Entry | Assert.cs:23:20:23:20 | After access to parameter b [false] | +| Assert.cs:21:10:21:11 | Entry | Assert.cs:23:20:23:20 | After access to parameter b [true] | +| Assert.cs:21:10:21:11 | Entry | Assert.cs:23:20:23:32 | After ... ? ... : ... | +| Assert.cs:21:10:21:11 | Entry | Assert.cs:24:9:24:27 | After call to method IsNotNull | +| Assert.cs:21:10:21:11 | Exceptional Exit | Assert.cs:21:10:21:11 | Exceptional Exit | +| Assert.cs:21:10:21:11 | Exit | Assert.cs:21:10:21:11 | Exit | +| Assert.cs:23:20:23:20 | After access to parameter b [false] | Assert.cs:23:20:23:20 | After access to parameter b [false] | +| Assert.cs:23:20:23:20 | After access to parameter b [true] | Assert.cs:23:20:23:20 | After access to parameter b [true] | +| Assert.cs:23:20:23:32 | After ... ? ... : ... | Assert.cs:21:10:21:11 | Exceptional Exit | +| Assert.cs:23:20:23:32 | After ... ? ... : ... | Assert.cs:21:10:21:11 | Exit | +| Assert.cs:23:20:23:32 | After ... ? ... : ... | Assert.cs:23:20:23:32 | After ... ? ... : ... | +| Assert.cs:23:20:23:32 | After ... ? ... : ... | Assert.cs:24:9:24:27 | After call to method IsNotNull | +| Assert.cs:24:9:24:27 | After call to method IsNotNull | Assert.cs:24:9:24:27 | After call to method IsNotNull | +| Assert.cs:28:10:28:11 | Entry | Assert.cs:28:10:28:11 | Entry | +| Assert.cs:28:10:28:11 | Entry | Assert.cs:28:10:28:11 | Exceptional Exit | +| Assert.cs:28:10:28:11 | Entry | Assert.cs:28:10:28:11 | Exit | +| Assert.cs:28:10:28:11 | Entry | Assert.cs:30:20:30:20 | After access to parameter b [false] | +| Assert.cs:28:10:28:11 | Entry | Assert.cs:30:20:30:20 | After access to parameter b [true] | +| Assert.cs:28:10:28:11 | Entry | Assert.cs:30:20:30:32 | After ... ? ... : ... | +| Assert.cs:28:10:28:11 | Entry | Assert.cs:31:9:31:32 | After call to method IsTrue | +| Assert.cs:28:10:28:11 | Exceptional Exit | Assert.cs:28:10:28:11 | Exceptional Exit | +| Assert.cs:28:10:28:11 | Exit | Assert.cs:28:10:28:11 | Exit | +| Assert.cs:30:20:30:20 | After access to parameter b [false] | Assert.cs:30:20:30:20 | After access to parameter b [false] | +| Assert.cs:30:20:30:20 | After access to parameter b [true] | Assert.cs:30:20:30:20 | After access to parameter b [true] | +| Assert.cs:30:20:30:32 | After ... ? ... : ... | Assert.cs:28:10:28:11 | Exceptional Exit | +| Assert.cs:30:20:30:32 | After ... ? ... : ... | Assert.cs:28:10:28:11 | Exit | +| Assert.cs:30:20:30:32 | After ... ? ... : ... | Assert.cs:30:20:30:32 | After ... ? ... : ... | +| Assert.cs:30:20:30:32 | After ... ? ... : ... | Assert.cs:31:9:31:32 | After call to method IsTrue | +| Assert.cs:31:9:31:32 | After call to method IsTrue | Assert.cs:31:9:31:32 | After call to method IsTrue | +| Assert.cs:35:10:35:11 | Entry | Assert.cs:35:10:35:11 | Entry | +| Assert.cs:35:10:35:11 | Entry | Assert.cs:35:10:35:11 | Exceptional Exit | +| Assert.cs:35:10:35:11 | Entry | Assert.cs:35:10:35:11 | Exit | +| Assert.cs:35:10:35:11 | Entry | Assert.cs:37:20:37:20 | After access to parameter b [false] | +| Assert.cs:35:10:35:11 | Entry | Assert.cs:37:20:37:20 | After access to parameter b [true] | +| Assert.cs:35:10:35:11 | Entry | Assert.cs:37:20:37:32 | After ... ? ... : ... | +| Assert.cs:35:10:35:11 | Entry | Assert.cs:38:9:38:32 | After call to method IsTrue | +| Assert.cs:35:10:35:11 | Exceptional Exit | Assert.cs:35:10:35:11 | Exceptional Exit | +| Assert.cs:35:10:35:11 | Exit | Assert.cs:35:10:35:11 | Exit | +| Assert.cs:37:20:37:20 | After access to parameter b [false] | Assert.cs:37:20:37:20 | After access to parameter b [false] | +| Assert.cs:37:20:37:20 | After access to parameter b [true] | Assert.cs:37:20:37:20 | After access to parameter b [true] | +| Assert.cs:37:20:37:32 | After ... ? ... : ... | Assert.cs:35:10:35:11 | Exceptional Exit | +| Assert.cs:37:20:37:32 | After ... ? ... : ... | Assert.cs:35:10:35:11 | Exit | +| Assert.cs:37:20:37:32 | After ... ? ... : ... | Assert.cs:37:20:37:32 | After ... ? ... : ... | +| Assert.cs:37:20:37:32 | After ... ? ... : ... | Assert.cs:38:9:38:32 | After call to method IsTrue | +| Assert.cs:38:9:38:32 | After call to method IsTrue | Assert.cs:38:9:38:32 | After call to method IsTrue | +| Assert.cs:42:10:42:11 | Entry | Assert.cs:42:10:42:11 | Entry | +| Assert.cs:42:10:42:11 | Entry | Assert.cs:42:10:42:11 | Exceptional Exit | +| Assert.cs:42:10:42:11 | Entry | Assert.cs:42:10:42:11 | Exit | +| Assert.cs:42:10:42:11 | Entry | Assert.cs:44:20:44:20 | After access to parameter b [false] | +| Assert.cs:42:10:42:11 | Entry | Assert.cs:44:20:44:20 | After access to parameter b [true] | +| Assert.cs:42:10:42:11 | Entry | Assert.cs:44:20:44:32 | After ... ? ... : ... | +| Assert.cs:42:10:42:11 | Entry | Assert.cs:45:9:45:33 | After call to method IsFalse | +| Assert.cs:42:10:42:11 | Exceptional Exit | Assert.cs:42:10:42:11 | Exceptional Exit | +| Assert.cs:42:10:42:11 | Exit | Assert.cs:42:10:42:11 | Exit | +| Assert.cs:44:20:44:20 | After access to parameter b [false] | Assert.cs:44:20:44:20 | After access to parameter b [false] | +| Assert.cs:44:20:44:20 | After access to parameter b [true] | Assert.cs:44:20:44:20 | After access to parameter b [true] | +| Assert.cs:44:20:44:32 | After ... ? ... : ... | Assert.cs:42:10:42:11 | Exceptional Exit | +| Assert.cs:44:20:44:32 | After ... ? ... : ... | Assert.cs:42:10:42:11 | Exit | +| Assert.cs:44:20:44:32 | After ... ? ... : ... | Assert.cs:44:20:44:32 | After ... ? ... : ... | +| Assert.cs:44:20:44:32 | After ... ? ... : ... | Assert.cs:45:9:45:33 | After call to method IsFalse | +| Assert.cs:45:9:45:33 | After call to method IsFalse | Assert.cs:45:9:45:33 | After call to method IsFalse | +| Assert.cs:49:10:49:11 | Entry | Assert.cs:49:10:49:11 | Entry | +| Assert.cs:49:10:49:11 | Entry | Assert.cs:49:10:49:11 | Exceptional Exit | +| Assert.cs:49:10:49:11 | Entry | Assert.cs:49:10:49:11 | Exit | +| Assert.cs:49:10:49:11 | Entry | Assert.cs:51:20:51:20 | After access to parameter b [false] | +| Assert.cs:49:10:49:11 | Entry | Assert.cs:51:20:51:20 | After access to parameter b [true] | +| Assert.cs:49:10:49:11 | Entry | Assert.cs:51:20:51:32 | After ... ? ... : ... | +| Assert.cs:49:10:49:11 | Entry | Assert.cs:52:9:52:33 | After call to method IsFalse | +| Assert.cs:49:10:49:11 | Exceptional Exit | Assert.cs:49:10:49:11 | Exceptional Exit | +| Assert.cs:49:10:49:11 | Exit | Assert.cs:49:10:49:11 | Exit | +| Assert.cs:51:20:51:20 | After access to parameter b [false] | Assert.cs:51:20:51:20 | After access to parameter b [false] | +| Assert.cs:51:20:51:20 | After access to parameter b [true] | Assert.cs:51:20:51:20 | After access to parameter b [true] | +| Assert.cs:51:20:51:32 | After ... ? ... : ... | Assert.cs:49:10:49:11 | Exceptional Exit | +| Assert.cs:51:20:51:32 | After ... ? ... : ... | Assert.cs:49:10:49:11 | Exit | +| Assert.cs:51:20:51:32 | After ... ? ... : ... | Assert.cs:51:20:51:32 | After ... ? ... : ... | +| Assert.cs:51:20:51:32 | After ... ? ... : ... | Assert.cs:52:9:52:33 | After call to method IsFalse | +| Assert.cs:52:9:52:33 | After call to method IsFalse | Assert.cs:52:9:52:33 | After call to method IsFalse | +| Assert.cs:56:10:56:11 | Entry | Assert.cs:56:10:56:11 | Entry | +| Assert.cs:56:10:56:11 | Entry | Assert.cs:56:10:56:11 | Exceptional Exit | +| Assert.cs:56:10:56:11 | Entry | Assert.cs:56:10:56:11 | Exit | +| Assert.cs:56:10:56:11 | Entry | Assert.cs:58:20:58:20 | After access to parameter b [false] | +| Assert.cs:56:10:56:11 | Entry | Assert.cs:58:20:58:20 | After access to parameter b [true] | +| Assert.cs:56:10:56:11 | Entry | Assert.cs:58:20:58:32 | After ... ? ... : ... | +| Assert.cs:56:10:56:11 | Entry | Assert.cs:59:9:59:37 | After call to method IsTrue | +| Assert.cs:56:10:56:11 | Entry | Assert.cs:59:23:59:31 | After ... != ... [false] | +| Assert.cs:56:10:56:11 | Entry | Assert.cs:59:23:59:31 | After ... != ... [true] | +| Assert.cs:56:10:56:11 | Entry | Assert.cs:59:23:59:36 | After ... && ... | +| Assert.cs:56:10:56:11 | Exceptional Exit | Assert.cs:56:10:56:11 | Exceptional Exit | +| Assert.cs:56:10:56:11 | Exit | Assert.cs:56:10:56:11 | Exit | +| Assert.cs:58:20:58:20 | After access to parameter b [false] | Assert.cs:58:20:58:20 | After access to parameter b [false] | +| Assert.cs:58:20:58:20 | After access to parameter b [true] | Assert.cs:58:20:58:20 | After access to parameter b [true] | +| Assert.cs:58:20:58:32 | After ... ? ... : ... | Assert.cs:56:10:56:11 | Exceptional Exit | +| Assert.cs:58:20:58:32 | After ... ? ... : ... | Assert.cs:56:10:56:11 | Exit | +| Assert.cs:58:20:58:32 | After ... ? ... : ... | Assert.cs:58:20:58:32 | After ... ? ... : ... | +| Assert.cs:58:20:58:32 | After ... ? ... : ... | Assert.cs:59:9:59:37 | After call to method IsTrue | +| Assert.cs:58:20:58:32 | After ... ? ... : ... | Assert.cs:59:23:59:31 | After ... != ... [false] | +| Assert.cs:58:20:58:32 | After ... ? ... : ... | Assert.cs:59:23:59:31 | After ... != ... [true] | +| Assert.cs:58:20:58:32 | After ... ? ... : ... | Assert.cs:59:23:59:36 | After ... && ... | +| Assert.cs:59:9:59:37 | After call to method IsTrue | Assert.cs:59:9:59:37 | After call to method IsTrue | +| Assert.cs:59:23:59:31 | After ... != ... [false] | Assert.cs:59:23:59:31 | After ... != ... [false] | +| Assert.cs:59:23:59:31 | After ... != ... [true] | Assert.cs:59:23:59:31 | After ... != ... [true] | +| Assert.cs:59:23:59:36 | After ... && ... | Assert.cs:56:10:56:11 | Exceptional Exit | +| Assert.cs:59:23:59:36 | After ... && ... | Assert.cs:56:10:56:11 | Exit | +| Assert.cs:59:23:59:36 | After ... && ... | Assert.cs:59:9:59:37 | After call to method IsTrue | +| Assert.cs:59:23:59:36 | After ... && ... | Assert.cs:59:23:59:36 | After ... && ... | +| Assert.cs:63:10:63:11 | Entry | Assert.cs:63:10:63:11 | Entry | +| Assert.cs:63:10:63:11 | Entry | Assert.cs:63:10:63:11 | Exceptional Exit | +| Assert.cs:63:10:63:11 | Entry | Assert.cs:63:10:63:11 | Exit | +| Assert.cs:63:10:63:11 | Entry | Assert.cs:65:20:65:20 | After access to parameter b [false] | +| Assert.cs:63:10:63:11 | Entry | Assert.cs:65:20:65:20 | After access to parameter b [true] | +| Assert.cs:63:10:63:11 | Entry | Assert.cs:65:20:65:32 | After ... ? ... : ... | +| Assert.cs:63:10:63:11 | Entry | Assert.cs:66:9:66:38 | After call to method IsFalse | +| Assert.cs:63:10:63:11 | Entry | Assert.cs:66:24:66:32 | After ... == ... [false] | +| Assert.cs:63:10:63:11 | Entry | Assert.cs:66:24:66:32 | After ... == ... [true] | +| Assert.cs:63:10:63:11 | Entry | Assert.cs:66:24:66:37 | After ... \|\| ... | +| Assert.cs:63:10:63:11 | Exceptional Exit | Assert.cs:63:10:63:11 | Exceptional Exit | +| Assert.cs:63:10:63:11 | Exit | Assert.cs:63:10:63:11 | Exit | +| Assert.cs:65:20:65:20 | After access to parameter b [false] | Assert.cs:65:20:65:20 | After access to parameter b [false] | +| Assert.cs:65:20:65:20 | After access to parameter b [true] | Assert.cs:65:20:65:20 | After access to parameter b [true] | +| Assert.cs:65:20:65:32 | After ... ? ... : ... | Assert.cs:63:10:63:11 | Exceptional Exit | +| Assert.cs:65:20:65:32 | After ... ? ... : ... | Assert.cs:63:10:63:11 | Exit | +| Assert.cs:65:20:65:32 | After ... ? ... : ... | Assert.cs:65:20:65:32 | After ... ? ... : ... | +| Assert.cs:65:20:65:32 | After ... ? ... : ... | Assert.cs:66:9:66:38 | After call to method IsFalse | +| Assert.cs:65:20:65:32 | After ... ? ... : ... | Assert.cs:66:24:66:32 | After ... == ... [false] | +| Assert.cs:65:20:65:32 | After ... ? ... : ... | Assert.cs:66:24:66:32 | After ... == ... [true] | +| Assert.cs:65:20:65:32 | After ... ? ... : ... | Assert.cs:66:24:66:37 | After ... \|\| ... | +| Assert.cs:66:9:66:38 | After call to method IsFalse | Assert.cs:66:9:66:38 | After call to method IsFalse | +| Assert.cs:66:24:66:32 | After ... == ... [false] | Assert.cs:66:24:66:32 | After ... == ... [false] | +| Assert.cs:66:24:66:32 | After ... == ... [true] | Assert.cs:66:24:66:32 | After ... == ... [true] | +| Assert.cs:66:24:66:37 | After ... \|\| ... | Assert.cs:63:10:63:11 | Exceptional Exit | +| Assert.cs:66:24:66:37 | After ... \|\| ... | Assert.cs:63:10:63:11 | Exit | +| Assert.cs:66:24:66:37 | After ... \|\| ... | Assert.cs:66:9:66:38 | After call to method IsFalse | +| Assert.cs:66:24:66:37 | After ... \|\| ... | Assert.cs:66:24:66:37 | After ... \|\| ... | +| Assert.cs:70:10:70:12 | Entry | Assert.cs:70:10:70:12 | Entry | +| Assert.cs:70:10:70:12 | Entry | Assert.cs:70:10:70:12 | Exceptional Exit | +| Assert.cs:70:10:70:12 | Entry | Assert.cs:70:10:70:12 | Exit | +| Assert.cs:70:10:70:12 | Entry | Assert.cs:72:20:72:20 | After access to parameter b [false] | +| Assert.cs:70:10:70:12 | Entry | Assert.cs:72:20:72:20 | After access to parameter b [true] | +| Assert.cs:70:10:70:12 | Entry | Assert.cs:72:20:72:32 | After ... ? ... : ... | +| Assert.cs:70:10:70:12 | Entry | Assert.cs:73:9:73:37 | After call to method IsTrue | +| Assert.cs:70:10:70:12 | Entry | Assert.cs:73:23:73:31 | After ... == ... [false] | +| Assert.cs:70:10:70:12 | Entry | Assert.cs:73:23:73:31 | After ... == ... [true] | +| Assert.cs:70:10:70:12 | Entry | Assert.cs:73:23:73:36 | After ... && ... | +| Assert.cs:70:10:70:12 | Exceptional Exit | Assert.cs:70:10:70:12 | Exceptional Exit | +| Assert.cs:70:10:70:12 | Exit | Assert.cs:70:10:70:12 | Exit | +| Assert.cs:72:20:72:20 | After access to parameter b [false] | Assert.cs:72:20:72:20 | After access to parameter b [false] | +| Assert.cs:72:20:72:20 | After access to parameter b [true] | Assert.cs:72:20:72:20 | After access to parameter b [true] | +| Assert.cs:72:20:72:32 | After ... ? ... : ... | Assert.cs:70:10:70:12 | Exceptional Exit | +| Assert.cs:72:20:72:32 | After ... ? ... : ... | Assert.cs:70:10:70:12 | Exit | +| Assert.cs:72:20:72:32 | After ... ? ... : ... | Assert.cs:72:20:72:32 | After ... ? ... : ... | +| Assert.cs:72:20:72:32 | After ... ? ... : ... | Assert.cs:73:9:73:37 | After call to method IsTrue | +| Assert.cs:72:20:72:32 | After ... ? ... : ... | Assert.cs:73:23:73:31 | After ... == ... [false] | +| Assert.cs:72:20:72:32 | After ... ? ... : ... | Assert.cs:73:23:73:31 | After ... == ... [true] | +| Assert.cs:72:20:72:32 | After ... ? ... : ... | Assert.cs:73:23:73:36 | After ... && ... | +| Assert.cs:73:9:73:37 | After call to method IsTrue | Assert.cs:73:9:73:37 | After call to method IsTrue | +| Assert.cs:73:23:73:31 | After ... == ... [false] | Assert.cs:73:23:73:31 | After ... == ... [false] | +| Assert.cs:73:23:73:31 | After ... == ... [true] | Assert.cs:73:23:73:31 | After ... == ... [true] | +| Assert.cs:73:23:73:36 | After ... && ... | Assert.cs:70:10:70:12 | Exceptional Exit | +| Assert.cs:73:23:73:36 | After ... && ... | Assert.cs:70:10:70:12 | Exit | +| Assert.cs:73:23:73:36 | After ... && ... | Assert.cs:73:9:73:37 | After call to method IsTrue | +| Assert.cs:73:23:73:36 | After ... && ... | Assert.cs:73:23:73:36 | After ... && ... | +| Assert.cs:77:10:77:12 | Entry | Assert.cs:77:10:77:12 | Entry | +| Assert.cs:77:10:77:12 | Entry | Assert.cs:77:10:77:12 | Exceptional Exit | +| Assert.cs:77:10:77:12 | Entry | Assert.cs:77:10:77:12 | Exit | +| Assert.cs:77:10:77:12 | Entry | Assert.cs:79:20:79:20 | After access to parameter b [false] | +| Assert.cs:77:10:77:12 | Entry | Assert.cs:79:20:79:20 | After access to parameter b [true] | +| Assert.cs:77:10:77:12 | Entry | Assert.cs:79:20:79:32 | After ... ? ... : ... | +| Assert.cs:77:10:77:12 | Entry | Assert.cs:80:9:80:38 | After call to method IsFalse | +| Assert.cs:77:10:77:12 | Entry | Assert.cs:80:24:80:32 | After ... != ... [false] | +| Assert.cs:77:10:77:12 | Entry | Assert.cs:80:24:80:32 | After ... != ... [true] | +| Assert.cs:77:10:77:12 | Entry | Assert.cs:80:24:80:37 | After ... \|\| ... | +| Assert.cs:77:10:77:12 | Exceptional Exit | Assert.cs:77:10:77:12 | Exceptional Exit | +| Assert.cs:77:10:77:12 | Exit | Assert.cs:77:10:77:12 | Exit | +| Assert.cs:79:20:79:20 | After access to parameter b [false] | Assert.cs:79:20:79:20 | After access to parameter b [false] | +| Assert.cs:79:20:79:20 | After access to parameter b [true] | Assert.cs:79:20:79:20 | After access to parameter b [true] | +| Assert.cs:79:20:79:32 | After ... ? ... : ... | Assert.cs:77:10:77:12 | Exceptional Exit | +| Assert.cs:79:20:79:32 | After ... ? ... : ... | Assert.cs:77:10:77:12 | Exit | +| Assert.cs:79:20:79:32 | After ... ? ... : ... | Assert.cs:79:20:79:32 | After ... ? ... : ... | +| Assert.cs:79:20:79:32 | After ... ? ... : ... | Assert.cs:80:9:80:38 | After call to method IsFalse | +| Assert.cs:79:20:79:32 | After ... ? ... : ... | Assert.cs:80:24:80:32 | After ... != ... [false] | +| Assert.cs:79:20:79:32 | After ... ? ... : ... | Assert.cs:80:24:80:32 | After ... != ... [true] | +| Assert.cs:79:20:79:32 | After ... ? ... : ... | Assert.cs:80:24:80:37 | After ... \|\| ... | +| Assert.cs:80:9:80:38 | After call to method IsFalse | Assert.cs:80:9:80:38 | After call to method IsFalse | +| Assert.cs:80:24:80:32 | After ... != ... [false] | Assert.cs:80:24:80:32 | After ... != ... [false] | +| Assert.cs:80:24:80:32 | After ... != ... [true] | Assert.cs:80:24:80:32 | After ... != ... [true] | +| Assert.cs:80:24:80:37 | After ... \|\| ... | Assert.cs:77:10:77:12 | Exceptional Exit | +| Assert.cs:80:24:80:37 | After ... \|\| ... | Assert.cs:77:10:77:12 | Exit | +| Assert.cs:80:24:80:37 | After ... \|\| ... | Assert.cs:80:9:80:38 | After call to method IsFalse | +| Assert.cs:80:24:80:37 | After ... \|\| ... | Assert.cs:80:24:80:37 | After ... \|\| ... | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:84:10:84:12 | Entry | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:84:10:84:12 | Exceptional Exit | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:84:10:84:12 | Exit | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:86:20:86:20 | After access to parameter b [false] | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:86:20:86:20 | After access to parameter b [true] | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:86:20:86:32 | After ... ? ... : ... | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:87:9:87:31 | After call to method Assert | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:90:13:90:13 | After access to parameter b [false] | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:90:13:90:13 | After access to parameter b [true] | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:90:13:90:25 | After ... ? ... : ... | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:91:9:91:24 | After call to method IsNull | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:94:13:94:13 | After access to parameter b [false] | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:94:13:94:13 | After access to parameter b [true] | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:94:13:94:25 | After ... ? ... : ... | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:95:9:95:27 | After call to method IsNotNull | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:98:13:98:13 | After access to parameter b [false] | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:98:13:98:13 | After access to parameter b [true] | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:98:13:98:25 | After ... ? ... : ... | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:99:9:99:32 | After call to method IsTrue | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:102:13:102:13 | After access to parameter b [false] | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:102:13:102:13 | After access to parameter b [true] | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:102:13:102:25 | After ... ? ... : ... | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:103:9:103:32 | After call to method IsTrue | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:106:13:106:13 | After access to parameter b [false] | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:106:13:106:13 | After access to parameter b [true] | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:106:13:106:25 | After ... ? ... : ... | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:107:9:107:33 | After call to method IsFalse | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:110:13:110:13 | After access to parameter b [false] | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:110:13:110:13 | After access to parameter b [true] | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:110:13:110:25 | After ... ? ... : ... | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:111:9:111:33 | After call to method IsFalse | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:114:13:114:13 | After access to parameter b [false] | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:114:13:114:13 | After access to parameter b [true] | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:114:13:114:25 | After ... ? ... : ... | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:115:9:115:37 | After call to method IsTrue | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:115:23:115:31 | After ... != ... [false] | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:115:23:115:31 | After ... != ... [true] | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:115:23:115:36 | After ... && ... | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:118:13:118:13 | After access to parameter b [false] | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:118:13:118:13 | After access to parameter b [true] | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:118:13:118:25 | After ... ? ... : ... | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:119:9:119:39 | After call to method IsFalse | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:119:24:119:32 | After ... == ... [false] | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:119:24:119:32 | After ... == ... [true] | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:119:24:119:38 | After ... \|\| ... | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:122:13:122:13 | After access to parameter b [false] | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:122:13:122:13 | After access to parameter b [true] | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:122:13:122:25 | After ... ? ... : ... | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:123:9:123:37 | After call to method IsTrue | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:123:23:123:31 | After ... == ... [false] | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:123:23:123:31 | After ... == ... [true] | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:123:23:123:36 | After ... && ... | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:126:13:126:13 | After access to parameter b [false] | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:126:13:126:13 | After access to parameter b [true] | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:126:13:126:25 | After ... ? ... : ... | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:127:9:127:39 | After call to method IsFalse | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:127:24:127:32 | After ... != ... [false] | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:127:24:127:32 | After ... != ... [true] | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:127:24:127:38 | After ... \|\| ... | +| Assert.cs:84:10:84:12 | Exceptional Exit | Assert.cs:84:10:84:12 | Exceptional Exit | +| Assert.cs:84:10:84:12 | Exit | Assert.cs:84:10:84:12 | Exit | +| Assert.cs:86:20:86:20 | After access to parameter b [false] | Assert.cs:86:20:86:20 | After access to parameter b [false] | +| Assert.cs:86:20:86:20 | After access to parameter b [true] | Assert.cs:86:20:86:20 | After access to parameter b [true] | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:84:10:84:12 | Exceptional Exit | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:84:10:84:12 | Exit | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:86:20:86:32 | After ... ? ... : ... | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:87:9:87:31 | After call to method Assert | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:90:13:90:13 | After access to parameter b [false] | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:90:13:90:13 | After access to parameter b [true] | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:90:13:90:25 | After ... ? ... : ... | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:91:9:91:24 | After call to method IsNull | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:94:13:94:13 | After access to parameter b [false] | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:94:13:94:13 | After access to parameter b [true] | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:94:13:94:25 | After ... ? ... : ... | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:95:9:95:27 | After call to method IsNotNull | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:98:13:98:13 | After access to parameter b [false] | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:98:13:98:13 | After access to parameter b [true] | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:98:13:98:25 | After ... ? ... : ... | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:99:9:99:32 | After call to method IsTrue | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:102:13:102:13 | After access to parameter b [false] | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:102:13:102:13 | After access to parameter b [true] | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:102:13:102:25 | After ... ? ... : ... | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:103:9:103:32 | After call to method IsTrue | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:106:13:106:13 | After access to parameter b [false] | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:106:13:106:13 | After access to parameter b [true] | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:106:13:106:25 | After ... ? ... : ... | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:107:9:107:33 | After call to method IsFalse | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:110:13:110:13 | After access to parameter b [false] | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:110:13:110:13 | After access to parameter b [true] | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:110:13:110:25 | After ... ? ... : ... | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:111:9:111:33 | After call to method IsFalse | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:114:13:114:13 | After access to parameter b [false] | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:114:13:114:13 | After access to parameter b [true] | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:114:13:114:25 | After ... ? ... : ... | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:115:9:115:37 | After call to method IsTrue | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:115:23:115:31 | After ... != ... [false] | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:115:23:115:31 | After ... != ... [true] | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:115:23:115:36 | After ... && ... | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:118:13:118:13 | After access to parameter b [false] | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:118:13:118:13 | After access to parameter b [true] | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:118:13:118:25 | After ... ? ... : ... | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:119:9:119:39 | After call to method IsFalse | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:119:24:119:32 | After ... == ... [false] | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:119:24:119:32 | After ... == ... [true] | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:119:24:119:38 | After ... \|\| ... | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:122:13:122:13 | After access to parameter b [false] | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:122:13:122:13 | After access to parameter b [true] | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:122:13:122:25 | After ... ? ... : ... | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:123:9:123:37 | After call to method IsTrue | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:123:23:123:31 | After ... == ... [false] | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:123:23:123:31 | After ... == ... [true] | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:123:23:123:36 | After ... && ... | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:126:13:126:13 | After access to parameter b [false] | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:126:13:126:13 | After access to parameter b [true] | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:126:13:126:25 | After ... ? ... : ... | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:127:9:127:39 | After call to method IsFalse | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:127:24:127:32 | After ... != ... [false] | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:127:24:127:32 | After ... != ... [true] | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:127:24:127:38 | After ... \|\| ... | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:87:9:87:31 | After call to method Assert | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:90:13:90:13 | After access to parameter b [false] | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:90:13:90:13 | After access to parameter b [true] | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:90:13:90:25 | After ... ? ... : ... | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:91:9:91:24 | After call to method IsNull | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:94:13:94:13 | After access to parameter b [false] | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:94:13:94:13 | After access to parameter b [true] | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:94:13:94:25 | After ... ? ... : ... | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:95:9:95:27 | After call to method IsNotNull | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:98:13:98:13 | After access to parameter b [false] | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:98:13:98:13 | After access to parameter b [true] | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:98:13:98:25 | After ... ? ... : ... | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:99:9:99:32 | After call to method IsTrue | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:102:13:102:13 | After access to parameter b [false] | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:102:13:102:13 | After access to parameter b [true] | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:102:13:102:25 | After ... ? ... : ... | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:103:9:103:32 | After call to method IsTrue | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:106:13:106:13 | After access to parameter b [false] | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:106:13:106:13 | After access to parameter b [true] | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:106:13:106:25 | After ... ? ... : ... | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:107:9:107:33 | After call to method IsFalse | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:110:13:110:13 | After access to parameter b [false] | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:110:13:110:13 | After access to parameter b [true] | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:110:13:110:25 | After ... ? ... : ... | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:111:9:111:33 | After call to method IsFalse | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:114:13:114:13 | After access to parameter b [false] | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:114:13:114:13 | After access to parameter b [true] | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:114:13:114:25 | After ... ? ... : ... | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:115:9:115:37 | After call to method IsTrue | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:115:23:115:31 | After ... != ... [false] | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:115:23:115:31 | After ... != ... [true] | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:115:23:115:36 | After ... && ... | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:118:13:118:13 | After access to parameter b [false] | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:118:13:118:13 | After access to parameter b [true] | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:118:13:118:25 | After ... ? ... : ... | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:119:9:119:39 | After call to method IsFalse | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:119:24:119:32 | After ... == ... [false] | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:119:24:119:32 | After ... == ... [true] | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:119:24:119:38 | After ... \|\| ... | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:122:13:122:13 | After access to parameter b [false] | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:122:13:122:13 | After access to parameter b [true] | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:122:13:122:25 | After ... ? ... : ... | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:123:9:123:37 | After call to method IsTrue | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:123:23:123:31 | After ... == ... [false] | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:123:23:123:31 | After ... == ... [true] | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:123:23:123:36 | After ... && ... | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:126:13:126:13 | After access to parameter b [false] | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:126:13:126:13 | After access to parameter b [true] | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:126:13:126:25 | After ... ? ... : ... | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:127:9:127:39 | After call to method IsFalse | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:127:24:127:32 | After ... != ... [false] | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:127:24:127:32 | After ... != ... [true] | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:127:24:127:38 | After ... \|\| ... | +| Assert.cs:90:13:90:13 | After access to parameter b [false] | Assert.cs:90:13:90:13 | After access to parameter b [false] | +| Assert.cs:90:13:90:13 | After access to parameter b [true] | Assert.cs:90:13:90:13 | After access to parameter b [true] | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:90:13:90:25 | After ... ? ... : ... | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:91:9:91:24 | After call to method IsNull | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:94:13:94:13 | After access to parameter b [false] | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:94:13:94:13 | After access to parameter b [true] | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:94:13:94:25 | After ... ? ... : ... | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:95:9:95:27 | After call to method IsNotNull | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:98:13:98:13 | After access to parameter b [false] | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:98:13:98:13 | After access to parameter b [true] | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:98:13:98:25 | After ... ? ... : ... | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:99:9:99:32 | After call to method IsTrue | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:102:13:102:13 | After access to parameter b [false] | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:102:13:102:13 | After access to parameter b [true] | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:102:13:102:25 | After ... ? ... : ... | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:103:9:103:32 | After call to method IsTrue | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:106:13:106:13 | After access to parameter b [false] | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:106:13:106:13 | After access to parameter b [true] | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:106:13:106:25 | After ... ? ... : ... | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:107:9:107:33 | After call to method IsFalse | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:110:13:110:13 | After access to parameter b [false] | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:110:13:110:13 | After access to parameter b [true] | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:110:13:110:25 | After ... ? ... : ... | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:111:9:111:33 | After call to method IsFalse | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:114:13:114:13 | After access to parameter b [false] | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:114:13:114:13 | After access to parameter b [true] | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:114:13:114:25 | After ... ? ... : ... | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:115:9:115:37 | After call to method IsTrue | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:115:23:115:31 | After ... != ... [false] | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:115:23:115:31 | After ... != ... [true] | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:115:23:115:36 | After ... && ... | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:118:13:118:13 | After access to parameter b [false] | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:118:13:118:13 | After access to parameter b [true] | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:118:13:118:25 | After ... ? ... : ... | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:119:9:119:39 | After call to method IsFalse | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:119:24:119:32 | After ... == ... [false] | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:119:24:119:32 | After ... == ... [true] | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:119:24:119:38 | After ... \|\| ... | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:122:13:122:13 | After access to parameter b [false] | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:122:13:122:13 | After access to parameter b [true] | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:122:13:122:25 | After ... ? ... : ... | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:123:9:123:37 | After call to method IsTrue | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:123:23:123:31 | After ... == ... [false] | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:123:23:123:31 | After ... == ... [true] | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:123:23:123:36 | After ... && ... | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:126:13:126:13 | After access to parameter b [false] | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:126:13:126:13 | After access to parameter b [true] | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:126:13:126:25 | After ... ? ... : ... | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:127:9:127:39 | After call to method IsFalse | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:127:24:127:32 | After ... != ... [false] | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:127:24:127:32 | After ... != ... [true] | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:127:24:127:38 | After ... \|\| ... | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:91:9:91:24 | After call to method IsNull | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:94:13:94:13 | After access to parameter b [false] | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:94:13:94:13 | After access to parameter b [true] | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:94:13:94:25 | After ... ? ... : ... | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:95:9:95:27 | After call to method IsNotNull | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:98:13:98:13 | After access to parameter b [false] | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:98:13:98:13 | After access to parameter b [true] | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:98:13:98:25 | After ... ? ... : ... | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:99:9:99:32 | After call to method IsTrue | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:102:13:102:13 | After access to parameter b [false] | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:102:13:102:13 | After access to parameter b [true] | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:102:13:102:25 | After ... ? ... : ... | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:103:9:103:32 | After call to method IsTrue | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:106:13:106:13 | After access to parameter b [false] | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:106:13:106:13 | After access to parameter b [true] | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:106:13:106:25 | After ... ? ... : ... | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:107:9:107:33 | After call to method IsFalse | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:110:13:110:13 | After access to parameter b [false] | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:110:13:110:13 | After access to parameter b [true] | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:110:13:110:25 | After ... ? ... : ... | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:111:9:111:33 | After call to method IsFalse | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:114:13:114:13 | After access to parameter b [false] | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:114:13:114:13 | After access to parameter b [true] | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:114:13:114:25 | After ... ? ... : ... | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:115:9:115:37 | After call to method IsTrue | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:115:23:115:31 | After ... != ... [false] | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:115:23:115:31 | After ... != ... [true] | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:115:23:115:36 | After ... && ... | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:118:13:118:13 | After access to parameter b [false] | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:118:13:118:13 | After access to parameter b [true] | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:118:13:118:25 | After ... ? ... : ... | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:119:9:119:39 | After call to method IsFalse | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:119:24:119:32 | After ... == ... [false] | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:119:24:119:32 | After ... == ... [true] | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:119:24:119:38 | After ... \|\| ... | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:122:13:122:13 | After access to parameter b [false] | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:122:13:122:13 | After access to parameter b [true] | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:122:13:122:25 | After ... ? ... : ... | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:123:9:123:37 | After call to method IsTrue | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:123:23:123:31 | After ... == ... [false] | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:123:23:123:31 | After ... == ... [true] | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:123:23:123:36 | After ... && ... | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:126:13:126:13 | After access to parameter b [false] | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:126:13:126:13 | After access to parameter b [true] | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:126:13:126:25 | After ... ? ... : ... | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:127:9:127:39 | After call to method IsFalse | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:127:24:127:32 | After ... != ... [false] | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:127:24:127:32 | After ... != ... [true] | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:127:24:127:38 | After ... \|\| ... | +| Assert.cs:94:13:94:13 | After access to parameter b [false] | Assert.cs:94:13:94:13 | After access to parameter b [false] | +| Assert.cs:94:13:94:13 | After access to parameter b [true] | Assert.cs:94:13:94:13 | After access to parameter b [true] | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:94:13:94:25 | After ... ? ... : ... | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:95:9:95:27 | After call to method IsNotNull | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:98:13:98:13 | After access to parameter b [false] | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:98:13:98:13 | After access to parameter b [true] | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:98:13:98:25 | After ... ? ... : ... | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:99:9:99:32 | After call to method IsTrue | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:102:13:102:13 | After access to parameter b [false] | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:102:13:102:13 | After access to parameter b [true] | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:102:13:102:25 | After ... ? ... : ... | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:103:9:103:32 | After call to method IsTrue | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:106:13:106:13 | After access to parameter b [false] | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:106:13:106:13 | After access to parameter b [true] | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:106:13:106:25 | After ... ? ... : ... | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:107:9:107:33 | After call to method IsFalse | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:110:13:110:13 | After access to parameter b [false] | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:110:13:110:13 | After access to parameter b [true] | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:110:13:110:25 | After ... ? ... : ... | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:111:9:111:33 | After call to method IsFalse | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:114:13:114:13 | After access to parameter b [false] | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:114:13:114:13 | After access to parameter b [true] | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:114:13:114:25 | After ... ? ... : ... | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:115:9:115:37 | After call to method IsTrue | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:115:23:115:31 | After ... != ... [false] | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:115:23:115:31 | After ... != ... [true] | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:115:23:115:36 | After ... && ... | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:118:13:118:13 | After access to parameter b [false] | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:118:13:118:13 | After access to parameter b [true] | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:118:13:118:25 | After ... ? ... : ... | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:119:9:119:39 | After call to method IsFalse | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:119:24:119:32 | After ... == ... [false] | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:119:24:119:32 | After ... == ... [true] | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:119:24:119:38 | After ... \|\| ... | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:122:13:122:13 | After access to parameter b [false] | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:122:13:122:13 | After access to parameter b [true] | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:122:13:122:25 | After ... ? ... : ... | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:123:9:123:37 | After call to method IsTrue | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:123:23:123:31 | After ... == ... [false] | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:123:23:123:31 | After ... == ... [true] | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:123:23:123:36 | After ... && ... | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:126:13:126:13 | After access to parameter b [false] | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:126:13:126:13 | After access to parameter b [true] | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:126:13:126:25 | After ... ? ... : ... | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:127:9:127:39 | After call to method IsFalse | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:127:24:127:32 | After ... != ... [false] | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:127:24:127:32 | After ... != ... [true] | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:127:24:127:38 | After ... \|\| ... | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:95:9:95:27 | After call to method IsNotNull | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:98:13:98:13 | After access to parameter b [false] | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:98:13:98:13 | After access to parameter b [true] | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:98:13:98:25 | After ... ? ... : ... | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:99:9:99:32 | After call to method IsTrue | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:102:13:102:13 | After access to parameter b [false] | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:102:13:102:13 | After access to parameter b [true] | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:102:13:102:25 | After ... ? ... : ... | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:103:9:103:32 | After call to method IsTrue | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:106:13:106:13 | After access to parameter b [false] | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:106:13:106:13 | After access to parameter b [true] | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:106:13:106:25 | After ... ? ... : ... | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:107:9:107:33 | After call to method IsFalse | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:110:13:110:13 | After access to parameter b [false] | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:110:13:110:13 | After access to parameter b [true] | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:110:13:110:25 | After ... ? ... : ... | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:111:9:111:33 | After call to method IsFalse | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:114:13:114:13 | After access to parameter b [false] | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:114:13:114:13 | After access to parameter b [true] | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:114:13:114:25 | After ... ? ... : ... | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:115:9:115:37 | After call to method IsTrue | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:115:23:115:31 | After ... != ... [false] | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:115:23:115:31 | After ... != ... [true] | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:115:23:115:36 | After ... && ... | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:118:13:118:13 | After access to parameter b [false] | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:118:13:118:13 | After access to parameter b [true] | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:118:13:118:25 | After ... ? ... : ... | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:119:9:119:39 | After call to method IsFalse | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:119:24:119:32 | After ... == ... [false] | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:119:24:119:32 | After ... == ... [true] | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:119:24:119:38 | After ... \|\| ... | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:122:13:122:13 | After access to parameter b [false] | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:122:13:122:13 | After access to parameter b [true] | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:122:13:122:25 | After ... ? ... : ... | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:123:9:123:37 | After call to method IsTrue | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:123:23:123:31 | After ... == ... [false] | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:123:23:123:31 | After ... == ... [true] | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:123:23:123:36 | After ... && ... | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:126:13:126:13 | After access to parameter b [false] | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:126:13:126:13 | After access to parameter b [true] | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:126:13:126:25 | After ... ? ... : ... | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:127:9:127:39 | After call to method IsFalse | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:127:24:127:32 | After ... != ... [false] | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:127:24:127:32 | After ... != ... [true] | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:127:24:127:38 | After ... \|\| ... | +| Assert.cs:98:13:98:13 | After access to parameter b [false] | Assert.cs:98:13:98:13 | After access to parameter b [false] | +| Assert.cs:98:13:98:13 | After access to parameter b [true] | Assert.cs:98:13:98:13 | After access to parameter b [true] | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:98:13:98:25 | After ... ? ... : ... | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:99:9:99:32 | After call to method IsTrue | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:102:13:102:13 | After access to parameter b [false] | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:102:13:102:13 | After access to parameter b [true] | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:102:13:102:25 | After ... ? ... : ... | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:103:9:103:32 | After call to method IsTrue | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:106:13:106:13 | After access to parameter b [false] | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:106:13:106:13 | After access to parameter b [true] | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:106:13:106:25 | After ... ? ... : ... | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:107:9:107:33 | After call to method IsFalse | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:110:13:110:13 | After access to parameter b [false] | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:110:13:110:13 | After access to parameter b [true] | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:110:13:110:25 | After ... ? ... : ... | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:111:9:111:33 | After call to method IsFalse | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:114:13:114:13 | After access to parameter b [false] | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:114:13:114:13 | After access to parameter b [true] | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:114:13:114:25 | After ... ? ... : ... | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:115:9:115:37 | After call to method IsTrue | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:115:23:115:31 | After ... != ... [false] | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:115:23:115:31 | After ... != ... [true] | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:115:23:115:36 | After ... && ... | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:118:13:118:13 | After access to parameter b [false] | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:118:13:118:13 | After access to parameter b [true] | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:118:13:118:25 | After ... ? ... : ... | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:119:9:119:39 | After call to method IsFalse | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:119:24:119:32 | After ... == ... [false] | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:119:24:119:32 | After ... == ... [true] | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:119:24:119:38 | After ... \|\| ... | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:122:13:122:13 | After access to parameter b [false] | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:122:13:122:13 | After access to parameter b [true] | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:122:13:122:25 | After ... ? ... : ... | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:123:9:123:37 | After call to method IsTrue | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:123:23:123:31 | After ... == ... [false] | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:123:23:123:31 | After ... == ... [true] | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:123:23:123:36 | After ... && ... | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:126:13:126:13 | After access to parameter b [false] | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:126:13:126:13 | After access to parameter b [true] | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:126:13:126:25 | After ... ? ... : ... | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:127:9:127:39 | After call to method IsFalse | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:127:24:127:32 | After ... != ... [false] | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:127:24:127:32 | After ... != ... [true] | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:127:24:127:38 | After ... \|\| ... | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:99:9:99:32 | After call to method IsTrue | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:102:13:102:13 | After access to parameter b [false] | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:102:13:102:13 | After access to parameter b [true] | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:102:13:102:25 | After ... ? ... : ... | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:103:9:103:32 | After call to method IsTrue | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:106:13:106:13 | After access to parameter b [false] | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:106:13:106:13 | After access to parameter b [true] | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:106:13:106:25 | After ... ? ... : ... | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:107:9:107:33 | After call to method IsFalse | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:110:13:110:13 | After access to parameter b [false] | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:110:13:110:13 | After access to parameter b [true] | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:110:13:110:25 | After ... ? ... : ... | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:111:9:111:33 | After call to method IsFalse | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:114:13:114:13 | After access to parameter b [false] | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:114:13:114:13 | After access to parameter b [true] | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:114:13:114:25 | After ... ? ... : ... | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:115:9:115:37 | After call to method IsTrue | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:115:23:115:31 | After ... != ... [false] | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:115:23:115:31 | After ... != ... [true] | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:115:23:115:36 | After ... && ... | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:118:13:118:13 | After access to parameter b [false] | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:118:13:118:13 | After access to parameter b [true] | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:118:13:118:25 | After ... ? ... : ... | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:119:9:119:39 | After call to method IsFalse | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:119:24:119:32 | After ... == ... [false] | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:119:24:119:32 | After ... == ... [true] | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:119:24:119:38 | After ... \|\| ... | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:122:13:122:13 | After access to parameter b [false] | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:122:13:122:13 | After access to parameter b [true] | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:122:13:122:25 | After ... ? ... : ... | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:123:9:123:37 | After call to method IsTrue | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:123:23:123:31 | After ... == ... [false] | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:123:23:123:31 | After ... == ... [true] | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:123:23:123:36 | After ... && ... | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:126:13:126:13 | After access to parameter b [false] | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:126:13:126:13 | After access to parameter b [true] | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:126:13:126:25 | After ... ? ... : ... | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:127:9:127:39 | After call to method IsFalse | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:127:24:127:32 | After ... != ... [false] | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:127:24:127:32 | After ... != ... [true] | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:127:24:127:38 | After ... \|\| ... | +| Assert.cs:102:13:102:13 | After access to parameter b [false] | Assert.cs:102:13:102:13 | After access to parameter b [false] | +| Assert.cs:102:13:102:13 | After access to parameter b [true] | Assert.cs:102:13:102:13 | After access to parameter b [true] | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:102:13:102:25 | After ... ? ... : ... | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:103:9:103:32 | After call to method IsTrue | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:106:13:106:13 | After access to parameter b [false] | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:106:13:106:13 | After access to parameter b [true] | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:106:13:106:25 | After ... ? ... : ... | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:107:9:107:33 | After call to method IsFalse | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:110:13:110:13 | After access to parameter b [false] | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:110:13:110:13 | After access to parameter b [true] | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:110:13:110:25 | After ... ? ... : ... | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:111:9:111:33 | After call to method IsFalse | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:114:13:114:13 | After access to parameter b [false] | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:114:13:114:13 | After access to parameter b [true] | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:114:13:114:25 | After ... ? ... : ... | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:115:9:115:37 | After call to method IsTrue | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:115:23:115:31 | After ... != ... [false] | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:115:23:115:31 | After ... != ... [true] | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:115:23:115:36 | After ... && ... | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:118:13:118:13 | After access to parameter b [false] | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:118:13:118:13 | After access to parameter b [true] | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:118:13:118:25 | After ... ? ... : ... | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:119:9:119:39 | After call to method IsFalse | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:119:24:119:32 | After ... == ... [false] | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:119:24:119:32 | After ... == ... [true] | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:119:24:119:38 | After ... \|\| ... | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:122:13:122:13 | After access to parameter b [false] | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:122:13:122:13 | After access to parameter b [true] | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:122:13:122:25 | After ... ? ... : ... | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:123:9:123:37 | After call to method IsTrue | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:123:23:123:31 | After ... == ... [false] | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:123:23:123:31 | After ... == ... [true] | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:123:23:123:36 | After ... && ... | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:126:13:126:13 | After access to parameter b [false] | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:126:13:126:13 | After access to parameter b [true] | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:126:13:126:25 | After ... ? ... : ... | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:127:9:127:39 | After call to method IsFalse | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:127:24:127:32 | After ... != ... [false] | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:127:24:127:32 | After ... != ... [true] | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:127:24:127:38 | After ... \|\| ... | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:103:9:103:32 | After call to method IsTrue | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:106:13:106:13 | After access to parameter b [false] | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:106:13:106:13 | After access to parameter b [true] | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:106:13:106:25 | After ... ? ... : ... | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:107:9:107:33 | After call to method IsFalse | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:110:13:110:13 | After access to parameter b [false] | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:110:13:110:13 | After access to parameter b [true] | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:110:13:110:25 | After ... ? ... : ... | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:111:9:111:33 | After call to method IsFalse | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:114:13:114:13 | After access to parameter b [false] | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:114:13:114:13 | After access to parameter b [true] | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:114:13:114:25 | After ... ? ... : ... | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:115:9:115:37 | After call to method IsTrue | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:115:23:115:31 | After ... != ... [false] | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:115:23:115:31 | After ... != ... [true] | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:115:23:115:36 | After ... && ... | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:118:13:118:13 | After access to parameter b [false] | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:118:13:118:13 | After access to parameter b [true] | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:118:13:118:25 | After ... ? ... : ... | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:119:9:119:39 | After call to method IsFalse | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:119:24:119:32 | After ... == ... [false] | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:119:24:119:32 | After ... == ... [true] | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:119:24:119:38 | After ... \|\| ... | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:122:13:122:13 | After access to parameter b [false] | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:122:13:122:13 | After access to parameter b [true] | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:122:13:122:25 | After ... ? ... : ... | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:123:9:123:37 | After call to method IsTrue | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:123:23:123:31 | After ... == ... [false] | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:123:23:123:31 | After ... == ... [true] | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:123:23:123:36 | After ... && ... | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:126:13:126:13 | After access to parameter b [false] | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:126:13:126:13 | After access to parameter b [true] | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:126:13:126:25 | After ... ? ... : ... | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:127:9:127:39 | After call to method IsFalse | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:127:24:127:32 | After ... != ... [false] | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:127:24:127:32 | After ... != ... [true] | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:127:24:127:38 | After ... \|\| ... | +| Assert.cs:106:13:106:13 | After access to parameter b [false] | Assert.cs:106:13:106:13 | After access to parameter b [false] | +| Assert.cs:106:13:106:13 | After access to parameter b [true] | Assert.cs:106:13:106:13 | After access to parameter b [true] | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:106:13:106:25 | After ... ? ... : ... | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:107:9:107:33 | After call to method IsFalse | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:110:13:110:13 | After access to parameter b [false] | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:110:13:110:13 | After access to parameter b [true] | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:110:13:110:25 | After ... ? ... : ... | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:111:9:111:33 | After call to method IsFalse | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:114:13:114:13 | After access to parameter b [false] | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:114:13:114:13 | After access to parameter b [true] | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:114:13:114:25 | After ... ? ... : ... | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:115:9:115:37 | After call to method IsTrue | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:115:23:115:31 | After ... != ... [false] | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:115:23:115:31 | After ... != ... [true] | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:115:23:115:36 | After ... && ... | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:118:13:118:13 | After access to parameter b [false] | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:118:13:118:13 | After access to parameter b [true] | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:118:13:118:25 | After ... ? ... : ... | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:119:9:119:39 | After call to method IsFalse | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:119:24:119:32 | After ... == ... [false] | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:119:24:119:32 | After ... == ... [true] | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:119:24:119:38 | After ... \|\| ... | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:122:13:122:13 | After access to parameter b [false] | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:122:13:122:13 | After access to parameter b [true] | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:122:13:122:25 | After ... ? ... : ... | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:123:9:123:37 | After call to method IsTrue | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:123:23:123:31 | After ... == ... [false] | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:123:23:123:31 | After ... == ... [true] | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:123:23:123:36 | After ... && ... | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:126:13:126:13 | After access to parameter b [false] | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:126:13:126:13 | After access to parameter b [true] | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:126:13:126:25 | After ... ? ... : ... | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:127:9:127:39 | After call to method IsFalse | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:127:24:127:32 | After ... != ... [false] | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:127:24:127:32 | After ... != ... [true] | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:127:24:127:38 | After ... \|\| ... | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:107:9:107:33 | After call to method IsFalse | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:110:13:110:13 | After access to parameter b [false] | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:110:13:110:13 | After access to parameter b [true] | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:110:13:110:25 | After ... ? ... : ... | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:111:9:111:33 | After call to method IsFalse | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:114:13:114:13 | After access to parameter b [false] | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:114:13:114:13 | After access to parameter b [true] | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:114:13:114:25 | After ... ? ... : ... | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:115:9:115:37 | After call to method IsTrue | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:115:23:115:31 | After ... != ... [false] | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:115:23:115:31 | After ... != ... [true] | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:115:23:115:36 | After ... && ... | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:118:13:118:13 | After access to parameter b [false] | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:118:13:118:13 | After access to parameter b [true] | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:118:13:118:25 | After ... ? ... : ... | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:119:9:119:39 | After call to method IsFalse | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:119:24:119:32 | After ... == ... [false] | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:119:24:119:32 | After ... == ... [true] | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:119:24:119:38 | After ... \|\| ... | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:122:13:122:13 | After access to parameter b [false] | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:122:13:122:13 | After access to parameter b [true] | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:122:13:122:25 | After ... ? ... : ... | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:123:9:123:37 | After call to method IsTrue | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:123:23:123:31 | After ... == ... [false] | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:123:23:123:31 | After ... == ... [true] | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:123:23:123:36 | After ... && ... | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:126:13:126:13 | After access to parameter b [false] | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:126:13:126:13 | After access to parameter b [true] | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:126:13:126:25 | After ... ? ... : ... | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:127:9:127:39 | After call to method IsFalse | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:127:24:127:32 | After ... != ... [false] | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:127:24:127:32 | After ... != ... [true] | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:127:24:127:38 | After ... \|\| ... | +| Assert.cs:110:13:110:13 | After access to parameter b [false] | Assert.cs:110:13:110:13 | After access to parameter b [false] | +| Assert.cs:110:13:110:13 | After access to parameter b [true] | Assert.cs:110:13:110:13 | After access to parameter b [true] | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:110:13:110:25 | After ... ? ... : ... | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:111:9:111:33 | After call to method IsFalse | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:114:13:114:13 | After access to parameter b [false] | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:114:13:114:13 | After access to parameter b [true] | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:114:13:114:25 | After ... ? ... : ... | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:115:9:115:37 | After call to method IsTrue | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:115:23:115:31 | After ... != ... [false] | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:115:23:115:31 | After ... != ... [true] | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:115:23:115:36 | After ... && ... | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:118:13:118:13 | After access to parameter b [false] | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:118:13:118:13 | After access to parameter b [true] | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:118:13:118:25 | After ... ? ... : ... | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:119:9:119:39 | After call to method IsFalse | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:119:24:119:32 | After ... == ... [false] | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:119:24:119:32 | After ... == ... [true] | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:119:24:119:38 | After ... \|\| ... | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:122:13:122:13 | After access to parameter b [false] | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:122:13:122:13 | After access to parameter b [true] | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:122:13:122:25 | After ... ? ... : ... | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:123:9:123:37 | After call to method IsTrue | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:123:23:123:31 | After ... == ... [false] | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:123:23:123:31 | After ... == ... [true] | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:123:23:123:36 | After ... && ... | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:126:13:126:13 | After access to parameter b [false] | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:126:13:126:13 | After access to parameter b [true] | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:126:13:126:25 | After ... ? ... : ... | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:127:9:127:39 | After call to method IsFalse | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:127:24:127:32 | After ... != ... [false] | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:127:24:127:32 | After ... != ... [true] | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:127:24:127:38 | After ... \|\| ... | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:111:9:111:33 | After call to method IsFalse | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:114:13:114:13 | After access to parameter b [false] | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:114:13:114:13 | After access to parameter b [true] | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:114:13:114:25 | After ... ? ... : ... | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:115:9:115:37 | After call to method IsTrue | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:115:23:115:31 | After ... != ... [false] | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:115:23:115:31 | After ... != ... [true] | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:115:23:115:36 | After ... && ... | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:118:13:118:13 | After access to parameter b [false] | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:118:13:118:13 | After access to parameter b [true] | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:118:13:118:25 | After ... ? ... : ... | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:119:9:119:39 | After call to method IsFalse | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:119:24:119:32 | After ... == ... [false] | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:119:24:119:32 | After ... == ... [true] | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:119:24:119:38 | After ... \|\| ... | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:122:13:122:13 | After access to parameter b [false] | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:122:13:122:13 | After access to parameter b [true] | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:122:13:122:25 | After ... ? ... : ... | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:123:9:123:37 | After call to method IsTrue | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:123:23:123:31 | After ... == ... [false] | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:123:23:123:31 | After ... == ... [true] | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:123:23:123:36 | After ... && ... | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:126:13:126:13 | After access to parameter b [false] | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:126:13:126:13 | After access to parameter b [true] | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:126:13:126:25 | After ... ? ... : ... | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:127:9:127:39 | After call to method IsFalse | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:127:24:127:32 | After ... != ... [false] | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:127:24:127:32 | After ... != ... [true] | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:127:24:127:38 | After ... \|\| ... | +| Assert.cs:114:13:114:13 | After access to parameter b [false] | Assert.cs:114:13:114:13 | After access to parameter b [false] | +| Assert.cs:114:13:114:13 | After access to parameter b [true] | Assert.cs:114:13:114:13 | After access to parameter b [true] | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:114:13:114:25 | After ... ? ... : ... | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:115:9:115:37 | After call to method IsTrue | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:115:23:115:31 | After ... != ... [false] | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:115:23:115:31 | After ... != ... [true] | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:115:23:115:36 | After ... && ... | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:118:13:118:13 | After access to parameter b [false] | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:118:13:118:13 | After access to parameter b [true] | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:118:13:118:25 | After ... ? ... : ... | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:119:9:119:39 | After call to method IsFalse | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:119:24:119:32 | After ... == ... [false] | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:119:24:119:32 | After ... == ... [true] | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:119:24:119:38 | After ... \|\| ... | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:122:13:122:13 | After access to parameter b [false] | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:122:13:122:13 | After access to parameter b [true] | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:122:13:122:25 | After ... ? ... : ... | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:123:9:123:37 | After call to method IsTrue | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:123:23:123:31 | After ... == ... [false] | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:123:23:123:31 | After ... == ... [true] | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:123:23:123:36 | After ... && ... | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:126:13:126:13 | After access to parameter b [false] | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:126:13:126:13 | After access to parameter b [true] | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:126:13:126:25 | After ... ? ... : ... | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:127:9:127:39 | After call to method IsFalse | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:127:24:127:32 | After ... != ... [false] | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:127:24:127:32 | After ... != ... [true] | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:127:24:127:38 | After ... \|\| ... | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:115:9:115:37 | After call to method IsTrue | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:118:13:118:13 | After access to parameter b [false] | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:118:13:118:13 | After access to parameter b [true] | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:118:13:118:25 | After ... ? ... : ... | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:119:9:119:39 | After call to method IsFalse | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:119:24:119:32 | After ... == ... [false] | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:119:24:119:32 | After ... == ... [true] | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:119:24:119:38 | After ... \|\| ... | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:122:13:122:13 | After access to parameter b [false] | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:122:13:122:13 | After access to parameter b [true] | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:122:13:122:25 | After ... ? ... : ... | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:123:9:123:37 | After call to method IsTrue | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:123:23:123:31 | After ... == ... [false] | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:123:23:123:31 | After ... == ... [true] | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:123:23:123:36 | After ... && ... | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:126:13:126:13 | After access to parameter b [false] | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:126:13:126:13 | After access to parameter b [true] | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:126:13:126:25 | After ... ? ... : ... | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:127:9:127:39 | After call to method IsFalse | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:127:24:127:32 | After ... != ... [false] | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:127:24:127:32 | After ... != ... [true] | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:127:24:127:38 | After ... \|\| ... | +| Assert.cs:115:23:115:31 | After ... != ... [false] | Assert.cs:115:23:115:31 | After ... != ... [false] | +| Assert.cs:115:23:115:31 | After ... != ... [true] | Assert.cs:115:23:115:31 | After ... != ... [true] | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:115:9:115:37 | After call to method IsTrue | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:115:23:115:36 | After ... && ... | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:118:13:118:13 | After access to parameter b [false] | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:118:13:118:13 | After access to parameter b [true] | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:118:13:118:25 | After ... ? ... : ... | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:119:9:119:39 | After call to method IsFalse | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:119:24:119:32 | After ... == ... [false] | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:119:24:119:32 | After ... == ... [true] | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:119:24:119:38 | After ... \|\| ... | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:122:13:122:13 | After access to parameter b [false] | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:122:13:122:13 | After access to parameter b [true] | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:122:13:122:25 | After ... ? ... : ... | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:123:9:123:37 | After call to method IsTrue | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:123:23:123:31 | After ... == ... [false] | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:123:23:123:31 | After ... == ... [true] | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:123:23:123:36 | After ... && ... | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:126:13:126:13 | After access to parameter b [false] | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:126:13:126:13 | After access to parameter b [true] | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:126:13:126:25 | After ... ? ... : ... | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:127:9:127:39 | After call to method IsFalse | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:127:24:127:32 | After ... != ... [false] | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:127:24:127:32 | After ... != ... [true] | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:127:24:127:38 | After ... \|\| ... | +| Assert.cs:118:13:118:13 | After access to parameter b [false] | Assert.cs:118:13:118:13 | After access to parameter b [false] | +| Assert.cs:118:13:118:13 | After access to parameter b [true] | Assert.cs:118:13:118:13 | After access to parameter b [true] | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:118:13:118:25 | After ... ? ... : ... | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:119:9:119:39 | After call to method IsFalse | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:119:24:119:32 | After ... == ... [false] | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:119:24:119:32 | After ... == ... [true] | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:119:24:119:38 | After ... \|\| ... | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:122:13:122:13 | After access to parameter b [false] | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:122:13:122:13 | After access to parameter b [true] | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:122:13:122:25 | After ... ? ... : ... | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:123:9:123:37 | After call to method IsTrue | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:123:23:123:31 | After ... == ... [false] | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:123:23:123:31 | After ... == ... [true] | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:123:23:123:36 | After ... && ... | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:126:13:126:13 | After access to parameter b [false] | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:126:13:126:13 | After access to parameter b [true] | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:126:13:126:25 | After ... ? ... : ... | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:127:9:127:39 | After call to method IsFalse | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:127:24:127:32 | After ... != ... [false] | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:127:24:127:32 | After ... != ... [true] | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:127:24:127:38 | After ... \|\| ... | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:119:9:119:39 | After call to method IsFalse | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:122:13:122:13 | After access to parameter b [false] | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:122:13:122:13 | After access to parameter b [true] | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:122:13:122:25 | After ... ? ... : ... | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:123:9:123:37 | After call to method IsTrue | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:123:23:123:31 | After ... == ... [false] | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:123:23:123:31 | After ... == ... [true] | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:123:23:123:36 | After ... && ... | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:126:13:126:13 | After access to parameter b [false] | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:126:13:126:13 | After access to parameter b [true] | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:126:13:126:25 | After ... ? ... : ... | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:127:9:127:39 | After call to method IsFalse | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:127:24:127:32 | After ... != ... [false] | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:127:24:127:32 | After ... != ... [true] | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:127:24:127:38 | After ... \|\| ... | +| Assert.cs:119:24:119:32 | After ... == ... [false] | Assert.cs:119:24:119:32 | After ... == ... [false] | +| Assert.cs:119:24:119:32 | After ... == ... [true] | Assert.cs:119:24:119:32 | After ... == ... [true] | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:119:9:119:39 | After call to method IsFalse | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:119:24:119:38 | After ... \|\| ... | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:122:13:122:13 | After access to parameter b [false] | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:122:13:122:13 | After access to parameter b [true] | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:122:13:122:25 | After ... ? ... : ... | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:123:9:123:37 | After call to method IsTrue | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:123:23:123:31 | After ... == ... [false] | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:123:23:123:31 | After ... == ... [true] | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:123:23:123:36 | After ... && ... | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:126:13:126:13 | After access to parameter b [false] | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:126:13:126:13 | After access to parameter b [true] | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:126:13:126:25 | After ... ? ... : ... | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:127:9:127:39 | After call to method IsFalse | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:127:24:127:32 | After ... != ... [false] | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:127:24:127:32 | After ... != ... [true] | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:127:24:127:38 | After ... \|\| ... | +| Assert.cs:122:13:122:13 | After access to parameter b [false] | Assert.cs:122:13:122:13 | After access to parameter b [false] | +| Assert.cs:122:13:122:13 | After access to parameter b [true] | Assert.cs:122:13:122:13 | After access to parameter b [true] | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:122:13:122:25 | After ... ? ... : ... | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:123:9:123:37 | After call to method IsTrue | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:123:23:123:31 | After ... == ... [false] | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:123:23:123:31 | After ... == ... [true] | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:123:23:123:36 | After ... && ... | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:126:13:126:13 | After access to parameter b [false] | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:126:13:126:13 | After access to parameter b [true] | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:126:13:126:25 | After ... ? ... : ... | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:127:9:127:39 | After call to method IsFalse | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:127:24:127:32 | After ... != ... [false] | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:127:24:127:32 | After ... != ... [true] | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:127:24:127:38 | After ... \|\| ... | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:123:9:123:37 | After call to method IsTrue | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:126:13:126:13 | After access to parameter b [false] | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:126:13:126:13 | After access to parameter b [true] | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:126:13:126:25 | After ... ? ... : ... | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:127:9:127:39 | After call to method IsFalse | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:127:24:127:32 | After ... != ... [false] | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:127:24:127:32 | After ... != ... [true] | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:127:24:127:38 | After ... \|\| ... | +| Assert.cs:123:23:123:31 | After ... == ... [false] | Assert.cs:123:23:123:31 | After ... == ... [false] | +| Assert.cs:123:23:123:31 | After ... == ... [true] | Assert.cs:123:23:123:31 | After ... == ... [true] | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:123:9:123:37 | After call to method IsTrue | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:123:23:123:36 | After ... && ... | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:126:13:126:13 | After access to parameter b [false] | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:126:13:126:13 | After access to parameter b [true] | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:126:13:126:25 | After ... ? ... : ... | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:127:9:127:39 | After call to method IsFalse | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:127:24:127:32 | After ... != ... [false] | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:127:24:127:32 | After ... != ... [true] | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:127:24:127:38 | After ... \|\| ... | +| Assert.cs:126:13:126:13 | After access to parameter b [false] | Assert.cs:126:13:126:13 | After access to parameter b [false] | +| Assert.cs:126:13:126:13 | After access to parameter b [true] | Assert.cs:126:13:126:13 | After access to parameter b [true] | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:126:13:126:25 | After ... ? ... : ... | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:127:9:127:39 | After call to method IsFalse | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:127:24:127:32 | After ... != ... [false] | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:127:24:127:32 | After ... != ... [true] | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:127:24:127:38 | After ... \|\| ... | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:127:9:127:39 | After call to method IsFalse | +| Assert.cs:127:24:127:32 | After ... != ... [false] | Assert.cs:127:24:127:32 | After ... != ... [false] | +| Assert.cs:127:24:127:32 | After ... != ... [true] | Assert.cs:127:24:127:32 | After ... != ... [true] | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:127:9:127:39 | After call to method IsFalse | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:127:24:127:38 | After ... \|\| ... | +| Assert.cs:131:18:131:32 | Entry | Assert.cs:131:18:131:32 | Entry | +| Assert.cs:138:10:138:12 | Entry | Assert.cs:138:10:138:12 | Entry | +| Assert.cs:138:10:138:12 | Entry | Assert.cs:138:10:138:12 | Exceptional Exit | +| Assert.cs:138:10:138:12 | Entry | Assert.cs:138:10:138:12 | Exit | +| Assert.cs:138:10:138:12 | Entry | Assert.cs:140:9:140:35 | After call to method AssertTrueFalse | +| Assert.cs:138:10:138:12 | Exceptional Exit | Assert.cs:138:10:138:12 | Exceptional Exit | +| Assert.cs:138:10:138:12 | Exit | Assert.cs:138:10:138:12 | Exit | +| Assert.cs:140:9:140:35 | After call to method AssertTrueFalse | Assert.cs:140:9:140:35 | After call to method AssertTrueFalse | +| Assignments.cs:1:7:1:17 | Entry | Assignments.cs:1:7:1:17 | Entry | +| Assignments.cs:3:10:3:10 | Entry | Assignments.cs:3:10:3:10 | Entry | +| Assignments.cs:14:18:14:35 | Entry | Assignments.cs:14:18:14:35 | Entry | +| Assignments.cs:17:40:17:40 | Entry | Assignments.cs:17:40:17:40 | Entry | +| Assignments.cs:27:10:27:23 | Entry | Assignments.cs:27:10:27:23 | Entry | +| Assignments.cs:32:10:32:22 | Entry | Assignments.cs:32:10:32:22 | Entry | +| Assignments.cs:38:10:38:11 | Entry | Assignments.cs:38:10:38:11 | Entry | +| BreakInTry.cs:1:7:1:16 | Entry | BreakInTry.cs:1:7:1:16 | Entry | +| BreakInTry.cs:3:10:3:11 | Entry | BreakInTry.cs:3:10:3:11 | Entry | +| BreakInTry.cs:3:10:3:11 | Entry | BreakInTry.cs:7:13:11:13 | After foreach (... ... in ...) ... | +| BreakInTry.cs:3:10:3:11 | Entry | BreakInTry.cs:7:26:7:28 | String arg | +| BreakInTry.cs:3:10:3:11 | Entry | BreakInTry.cs:7:33:7:36 | After access to parameter args [empty] | +| BreakInTry.cs:3:10:3:11 | Entry | BreakInTry.cs:7:33:7:36 | After access to parameter args [non-empty] | +| BreakInTry.cs:3:10:3:11 | Entry | BreakInTry.cs:9:21:9:31 | After ... == ... [false] | +| BreakInTry.cs:3:10:3:11 | Entry | BreakInTry.cs:9:21:9:31 | After ... == ... [true] | +| BreakInTry.cs:3:10:3:11 | Entry | BreakInTry.cs:15:13:16:17 | After if (...) ... | +| BreakInTry.cs:3:10:3:11 | Entry | BreakInTry.cs:15:17:15:28 | After ... == ... [false] | +| BreakInTry.cs:3:10:3:11 | Entry | BreakInTry.cs:15:17:15:28 | After ... == ... [true] | +| BreakInTry.cs:7:13:11:13 | After foreach (... ... in ...) ... | BreakInTry.cs:7:13:11:13 | After foreach (... ... in ...) ... | +| BreakInTry.cs:7:13:11:13 | After foreach (... ... in ...) ... | BreakInTry.cs:15:13:16:17 | After if (...) ... | +| BreakInTry.cs:7:13:11:13 | After foreach (... ... in ...) ... | BreakInTry.cs:15:17:15:28 | After ... == ... [false] | +| BreakInTry.cs:7:13:11:13 | After foreach (... ... in ...) ... | BreakInTry.cs:15:17:15:28 | After ... == ... [true] | | BreakInTry.cs:7:26:7:28 | String arg | BreakInTry.cs:7:26:7:28 | String arg | -| BreakInTry.cs:7:26:7:28 | String arg | BreakInTry.cs:10:21:10:26 | break; | -| BreakInTry.cs:10:21:10:26 | break; | BreakInTry.cs:10:21:10:26 | break; | -| BreakInTry.cs:14:9:17:9 | {...} | BreakInTry.cs:3:10:3:11 | exit M1 (normal) | -| BreakInTry.cs:14:9:17:9 | {...} | BreakInTry.cs:14:9:17:9 | {...} | -| BreakInTry.cs:14:9:17:9 | {...} | BreakInTry.cs:16:17:16:17 | ; | -| BreakInTry.cs:16:17:16:17 | ; | BreakInTry.cs:16:17:16:17 | ; | -| BreakInTry.cs:20:10:20:11 | enter M2 | BreakInTry.cs:20:10:20:11 | enter M2 | -| BreakInTry.cs:20:10:20:11 | enter M2 | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | -| BreakInTry.cs:20:10:20:11 | enter M2 | BreakInTry.cs:22:22:22:24 | String arg | -| BreakInTry.cs:20:10:20:11 | enter M2 | BreakInTry.cs:27:21:27:26 | break; | -| BreakInTry.cs:20:10:20:11 | enter M2 | BreakInTry.cs:30:13:33:13 | {...} | -| BreakInTry.cs:20:10:20:11 | enter M2 | BreakInTry.cs:32:21:32:21 | ; | -| BreakInTry.cs:20:10:20:11 | enter M2 | BreakInTry.cs:35:7:35:7 | ; | -| BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | -| BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:22:22:22:24 | String arg | -| BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:27:21:27:26 | break; | -| BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:30:13:33:13 | {...} | -| BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:32:21:32:21 | ; | -| BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:35:7:35:7 | ; | +| BreakInTry.cs:7:26:7:28 | String arg | BreakInTry.cs:9:21:9:31 | After ... == ... [false] | +| BreakInTry.cs:7:26:7:28 | String arg | BreakInTry.cs:9:21:9:31 | After ... == ... [true] | +| BreakInTry.cs:7:33:7:36 | After access to parameter args [empty] | BreakInTry.cs:7:33:7:36 | After access to parameter args [empty] | +| BreakInTry.cs:7:33:7:36 | After access to parameter args [non-empty] | BreakInTry.cs:7:26:7:28 | String arg | +| BreakInTry.cs:7:33:7:36 | After access to parameter args [non-empty] | BreakInTry.cs:7:33:7:36 | After access to parameter args [non-empty] | +| BreakInTry.cs:7:33:7:36 | After access to parameter args [non-empty] | BreakInTry.cs:9:21:9:31 | After ... == ... [false] | +| BreakInTry.cs:7:33:7:36 | After access to parameter args [non-empty] | BreakInTry.cs:9:21:9:31 | After ... == ... [true] | +| BreakInTry.cs:9:21:9:31 | After ... == ... [false] | BreakInTry.cs:9:21:9:31 | After ... == ... [false] | +| BreakInTry.cs:9:21:9:31 | After ... == ... [true] | BreakInTry.cs:9:21:9:31 | After ... == ... [true] | +| BreakInTry.cs:15:13:16:17 | After if (...) ... | BreakInTry.cs:15:13:16:17 | After if (...) ... | +| BreakInTry.cs:15:17:15:28 | After ... == ... [false] | BreakInTry.cs:15:17:15:28 | After ... == ... [false] | +| BreakInTry.cs:15:17:15:28 | After ... == ... [true] | BreakInTry.cs:15:17:15:28 | After ... == ... [true] | +| BreakInTry.cs:20:10:20:11 | Entry | BreakInTry.cs:20:10:20:11 | Entry | +| BreakInTry.cs:20:10:20:11 | Entry | BreakInTry.cs:22:9:34:9 | After foreach (... ... in ...) ... | +| BreakInTry.cs:20:10:20:11 | Entry | BreakInTry.cs:22:22:22:24 | String arg | +| BreakInTry.cs:20:10:20:11 | Entry | BreakInTry.cs:22:29:22:32 | After access to parameter args [empty] | +| BreakInTry.cs:20:10:20:11 | Entry | BreakInTry.cs:22:29:22:32 | After access to parameter args [non-empty] | +| BreakInTry.cs:20:10:20:11 | Entry | BreakInTry.cs:24:13:33:13 | After try {...} ... | +| BreakInTry.cs:20:10:20:11 | Entry | BreakInTry.cs:26:21:26:31 | After ... == ... [false] | +| BreakInTry.cs:20:10:20:11 | Entry | BreakInTry.cs:26:21:26:31 | After ... == ... [true] | +| BreakInTry.cs:20:10:20:11 | Entry | BreakInTry.cs:30:13:33:13 | {...} | +| BreakInTry.cs:20:10:20:11 | Entry | BreakInTry.cs:31:17:32:21 | After if (...) ... | +| BreakInTry.cs:20:10:20:11 | Entry | BreakInTry.cs:31:21:31:32 | After ... == ... [false] | +| BreakInTry.cs:20:10:20:11 | Entry | BreakInTry.cs:31:21:31:32 | After ... == ... [true] | +| BreakInTry.cs:22:9:34:9 | After foreach (... ... in ...) ... | BreakInTry.cs:22:9:34:9 | After foreach (... ... in ...) ... | | BreakInTry.cs:22:22:22:24 | String arg | BreakInTry.cs:22:22:22:24 | String arg | -| BreakInTry.cs:22:22:22:24 | String arg | BreakInTry.cs:27:21:27:26 | break; | +| BreakInTry.cs:22:22:22:24 | String arg | BreakInTry.cs:24:13:33:13 | After try {...} ... | +| BreakInTry.cs:22:22:22:24 | String arg | BreakInTry.cs:26:21:26:31 | After ... == ... [false] | +| BreakInTry.cs:22:22:22:24 | String arg | BreakInTry.cs:26:21:26:31 | After ... == ... [true] | | BreakInTry.cs:22:22:22:24 | String arg | BreakInTry.cs:30:13:33:13 | {...} | -| BreakInTry.cs:22:22:22:24 | String arg | BreakInTry.cs:32:21:32:21 | ; | -| BreakInTry.cs:27:21:27:26 | break; | BreakInTry.cs:27:21:27:26 | break; | +| BreakInTry.cs:22:22:22:24 | String arg | BreakInTry.cs:31:17:32:21 | After if (...) ... | +| BreakInTry.cs:22:22:22:24 | String arg | BreakInTry.cs:31:21:31:32 | After ... == ... [false] | +| BreakInTry.cs:22:22:22:24 | String arg | BreakInTry.cs:31:21:31:32 | After ... == ... [true] | +| BreakInTry.cs:22:29:22:32 | After access to parameter args [empty] | BreakInTry.cs:22:29:22:32 | After access to parameter args [empty] | +| BreakInTry.cs:22:29:22:32 | After access to parameter args [non-empty] | BreakInTry.cs:22:22:22:24 | String arg | +| BreakInTry.cs:22:29:22:32 | After access to parameter args [non-empty] | BreakInTry.cs:22:29:22:32 | After access to parameter args [non-empty] | +| BreakInTry.cs:22:29:22:32 | After access to parameter args [non-empty] | BreakInTry.cs:24:13:33:13 | After try {...} ... | +| BreakInTry.cs:22:29:22:32 | After access to parameter args [non-empty] | BreakInTry.cs:26:21:26:31 | After ... == ... [false] | +| BreakInTry.cs:22:29:22:32 | After access to parameter args [non-empty] | BreakInTry.cs:26:21:26:31 | After ... == ... [true] | +| BreakInTry.cs:22:29:22:32 | After access to parameter args [non-empty] | BreakInTry.cs:30:13:33:13 | {...} | +| BreakInTry.cs:22:29:22:32 | After access to parameter args [non-empty] | BreakInTry.cs:31:17:32:21 | After if (...) ... | +| BreakInTry.cs:22:29:22:32 | After access to parameter args [non-empty] | BreakInTry.cs:31:21:31:32 | After ... == ... [false] | +| BreakInTry.cs:22:29:22:32 | After access to parameter args [non-empty] | BreakInTry.cs:31:21:31:32 | After ... == ... [true] | +| BreakInTry.cs:24:13:33:13 | After try {...} ... | BreakInTry.cs:24:13:33:13 | After try {...} ... | +| BreakInTry.cs:26:21:26:31 | After ... == ... [false] | BreakInTry.cs:26:21:26:31 | After ... == ... [false] | +| BreakInTry.cs:26:21:26:31 | After ... == ... [true] | BreakInTry.cs:26:21:26:31 | After ... == ... [true] | +| BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:24:13:33:13 | After try {...} ... | | BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:30:13:33:13 | {...} | -| BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:32:21:32:21 | ; | -| BreakInTry.cs:32:21:32:21 | ; | BreakInTry.cs:32:21:32:21 | ; | -| BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:35:7:35:7 | ; | -| BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:38:10:38:11 | enter M3 | -| BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:38:10:38:11 | exit M3 (normal) | -| BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:43:17:43:23 | return ...; | -| BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:46:9:52:9 | {...} | -| BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | -| BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:47:26:47:28 | String arg | -| BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:50:21:50:26 | break; | -| BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:53:7:53:7 | ; | -| BreakInTry.cs:38:10:38:11 | exit M3 (normal) | BreakInTry.cs:38:10:38:11 | exit M3 (normal) | -| BreakInTry.cs:43:17:43:23 | return ...; | BreakInTry.cs:43:17:43:23 | return ...; | -| BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:38:10:38:11 | exit M3 (normal) | +| BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:31:17:32:21 | After if (...) ... | +| BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:31:21:31:32 | After ... == ... [false] | +| BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:31:21:31:32 | After ... == ... [true] | +| BreakInTry.cs:31:17:32:21 | After if (...) ... | BreakInTry.cs:24:13:33:13 | After try {...} ... | +| BreakInTry.cs:31:17:32:21 | After if (...) ... | BreakInTry.cs:31:17:32:21 | After if (...) ... | +| BreakInTry.cs:31:21:31:32 | After ... == ... [false] | BreakInTry.cs:31:21:31:32 | After ... == ... [false] | +| BreakInTry.cs:31:21:31:32 | After ... == ... [true] | BreakInTry.cs:31:21:31:32 | After ... == ... [true] | +| BreakInTry.cs:38:10:38:11 | Entry | BreakInTry.cs:38:10:38:11 | Entry | +| BreakInTry.cs:38:10:38:11 | Entry | BreakInTry.cs:38:10:38:11 | Normal Exit | +| BreakInTry.cs:38:10:38:11 | Entry | BreakInTry.cs:40:9:52:9 | After try {...} ... | +| BreakInTry.cs:38:10:38:11 | Entry | BreakInTry.cs:42:17:42:28 | After ... == ... [false] | +| BreakInTry.cs:38:10:38:11 | Entry | BreakInTry.cs:42:17:42:28 | After ... == ... [true] | +| BreakInTry.cs:38:10:38:11 | Entry | BreakInTry.cs:46:9:52:9 | {...} | +| BreakInTry.cs:38:10:38:11 | Entry | BreakInTry.cs:47:13:51:13 | After foreach (... ... in ...) ... | +| BreakInTry.cs:38:10:38:11 | Entry | BreakInTry.cs:47:26:47:28 | String arg | +| BreakInTry.cs:38:10:38:11 | Entry | BreakInTry.cs:47:33:47:36 | After access to parameter args [empty] | +| BreakInTry.cs:38:10:38:11 | Entry | BreakInTry.cs:47:33:47:36 | After access to parameter args [non-empty] | +| BreakInTry.cs:38:10:38:11 | Entry | BreakInTry.cs:49:21:49:31 | After ... == ... [false] | +| BreakInTry.cs:38:10:38:11 | Entry | BreakInTry.cs:49:21:49:31 | After ... == ... [true] | +| BreakInTry.cs:38:10:38:11 | Normal Exit | BreakInTry.cs:38:10:38:11 | Normal Exit | +| BreakInTry.cs:40:9:52:9 | After try {...} ... | BreakInTry.cs:40:9:52:9 | After try {...} ... | +| BreakInTry.cs:42:17:42:28 | After ... == ... [false] | BreakInTry.cs:42:17:42:28 | After ... == ... [false] | +| BreakInTry.cs:42:17:42:28 | After ... == ... [true] | BreakInTry.cs:42:17:42:28 | After ... == ... [true] | +| BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:38:10:38:11 | Normal Exit | +| BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:40:9:52:9 | After try {...} ... | | BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:46:9:52:9 | {...} | -| BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | +| BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:47:13:51:13 | After foreach (... ... in ...) ... | | BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:47:26:47:28 | String arg | -| BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:50:21:50:26 | break; | -| BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:53:7:53:7 | ; | -| BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:38:10:38:11 | exit M3 (normal) | -| BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | -| BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:47:26:47:28 | String arg | -| BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:50:21:50:26 | break; | -| BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:53:7:53:7 | ; | +| BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:47:33:47:36 | After access to parameter args [empty] | +| BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:47:33:47:36 | After access to parameter args [non-empty] | +| BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:49:21:49:31 | After ... == ... [false] | +| BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:49:21:49:31 | After ... == ... [true] | +| BreakInTry.cs:47:13:51:13 | After foreach (... ... in ...) ... | BreakInTry.cs:38:10:38:11 | Normal Exit | +| BreakInTry.cs:47:13:51:13 | After foreach (... ... in ...) ... | BreakInTry.cs:40:9:52:9 | After try {...} ... | +| BreakInTry.cs:47:13:51:13 | After foreach (... ... in ...) ... | BreakInTry.cs:47:13:51:13 | After foreach (... ... in ...) ... | | BreakInTry.cs:47:26:47:28 | String arg | BreakInTry.cs:47:26:47:28 | String arg | -| BreakInTry.cs:47:26:47:28 | String arg | BreakInTry.cs:50:21:50:26 | break; | -| BreakInTry.cs:50:21:50:26 | break; | BreakInTry.cs:50:21:50:26 | break; | -| BreakInTry.cs:53:7:53:7 | ; | BreakInTry.cs:53:7:53:7 | ; | -| BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:56:10:56:11 | enter M4 | -| BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:56:10:56:11 | exit M4 (normal) | -| BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:61:17:61:23 | return ...; | -| BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:64:9:70:9 | {...} | -| BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | -| BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:65:26:65:28 | String arg | -| BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:68:21:68:26 | break; | -| BreakInTry.cs:56:10:56:11 | exit M4 (normal) | BreakInTry.cs:56:10:56:11 | exit M4 (normal) | -| BreakInTry.cs:61:17:61:23 | return ...; | BreakInTry.cs:61:17:61:23 | return ...; | -| BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:56:10:56:11 | exit M4 (normal) | +| BreakInTry.cs:47:26:47:28 | String arg | BreakInTry.cs:49:21:49:31 | After ... == ... [false] | +| BreakInTry.cs:47:26:47:28 | String arg | BreakInTry.cs:49:21:49:31 | After ... == ... [true] | +| BreakInTry.cs:47:33:47:36 | After access to parameter args [empty] | BreakInTry.cs:47:33:47:36 | After access to parameter args [empty] | +| BreakInTry.cs:47:33:47:36 | After access to parameter args [non-empty] | BreakInTry.cs:47:26:47:28 | String arg | +| BreakInTry.cs:47:33:47:36 | After access to parameter args [non-empty] | BreakInTry.cs:47:33:47:36 | After access to parameter args [non-empty] | +| BreakInTry.cs:47:33:47:36 | After access to parameter args [non-empty] | BreakInTry.cs:49:21:49:31 | After ... == ... [false] | +| BreakInTry.cs:47:33:47:36 | After access to parameter args [non-empty] | BreakInTry.cs:49:21:49:31 | After ... == ... [true] | +| BreakInTry.cs:49:21:49:31 | After ... == ... [false] | BreakInTry.cs:49:21:49:31 | After ... == ... [false] | +| BreakInTry.cs:49:21:49:31 | After ... == ... [true] | BreakInTry.cs:49:21:49:31 | After ... == ... [true] | +| BreakInTry.cs:56:10:56:11 | Entry | BreakInTry.cs:56:10:56:11 | Entry | +| BreakInTry.cs:56:10:56:11 | Entry | BreakInTry.cs:56:10:56:11 | Normal Exit | +| BreakInTry.cs:56:10:56:11 | Entry | BreakInTry.cs:58:9:70:9 | After try {...} ... | +| BreakInTry.cs:56:10:56:11 | Entry | BreakInTry.cs:60:17:60:28 | After ... == ... [false] | +| BreakInTry.cs:56:10:56:11 | Entry | BreakInTry.cs:60:17:60:28 | After ... == ... [true] | +| BreakInTry.cs:56:10:56:11 | Entry | BreakInTry.cs:64:9:70:9 | {...} | +| BreakInTry.cs:56:10:56:11 | Entry | BreakInTry.cs:65:13:69:13 | After foreach (... ... in ...) ... | +| BreakInTry.cs:56:10:56:11 | Entry | BreakInTry.cs:65:26:65:28 | String arg | +| BreakInTry.cs:56:10:56:11 | Entry | BreakInTry.cs:65:33:65:36 | After access to parameter args [empty] | +| BreakInTry.cs:56:10:56:11 | Entry | BreakInTry.cs:65:33:65:36 | After access to parameter args [non-empty] | +| BreakInTry.cs:56:10:56:11 | Entry | BreakInTry.cs:67:21:67:31 | After ... == ... [false] | +| BreakInTry.cs:56:10:56:11 | Entry | BreakInTry.cs:67:21:67:31 | After ... == ... [true] | +| BreakInTry.cs:56:10:56:11 | Normal Exit | BreakInTry.cs:56:10:56:11 | Normal Exit | +| BreakInTry.cs:58:9:70:9 | After try {...} ... | BreakInTry.cs:58:9:70:9 | After try {...} ... | +| BreakInTry.cs:60:17:60:28 | After ... == ... [false] | BreakInTry.cs:60:17:60:28 | After ... == ... [false] | +| BreakInTry.cs:60:17:60:28 | After ... == ... [true] | BreakInTry.cs:60:17:60:28 | After ... == ... [true] | +| BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:56:10:56:11 | Normal Exit | +| BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:58:9:70:9 | After try {...} ... | | BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:64:9:70:9 | {...} | -| BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | +| BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:65:13:69:13 | After foreach (... ... in ...) ... | | BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:65:26:65:28 | String arg | -| BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:68:21:68:26 | break; | -| BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:56:10:56:11 | exit M4 (normal) | -| BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | -| BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:65:26:65:28 | String arg | -| BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:68:21:68:26 | break; | +| BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:65:33:65:36 | After access to parameter args [empty] | +| BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:65:33:65:36 | After access to parameter args [non-empty] | +| BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:67:21:67:31 | After ... == ... [false] | +| BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:67:21:67:31 | After ... == ... [true] | +| BreakInTry.cs:65:13:69:13 | After foreach (... ... in ...) ... | BreakInTry.cs:56:10:56:11 | Normal Exit | +| BreakInTry.cs:65:13:69:13 | After foreach (... ... in ...) ... | BreakInTry.cs:58:9:70:9 | After try {...} ... | +| BreakInTry.cs:65:13:69:13 | After foreach (... ... in ...) ... | BreakInTry.cs:65:13:69:13 | After foreach (... ... in ...) ... | | BreakInTry.cs:65:26:65:28 | String arg | BreakInTry.cs:65:26:65:28 | String arg | -| BreakInTry.cs:65:26:65:28 | String arg | BreakInTry.cs:68:21:68:26 | break; | -| BreakInTry.cs:68:21:68:26 | break; | BreakInTry.cs:68:21:68:26 | break; | -| CompileTimeOperators.cs:3:7:3:26 | enter CompileTimeOperators | CompileTimeOperators.cs:3:7:3:26 | enter CompileTimeOperators | -| CompileTimeOperators.cs:5:9:5:15 | enter Default | CompileTimeOperators.cs:5:9:5:15 | enter Default | -| CompileTimeOperators.cs:10:9:10:14 | enter Sizeof | CompileTimeOperators.cs:10:9:10:14 | enter Sizeof | -| CompileTimeOperators.cs:15:10:15:15 | enter Typeof | CompileTimeOperators.cs:15:10:15:15 | enter Typeof | -| CompileTimeOperators.cs:20:12:20:17 | enter Nameof | CompileTimeOperators.cs:20:12:20:17 | enter Nameof | -| CompileTimeOperators.cs:26:7:26:22 | enter GotoInTryFinally | CompileTimeOperators.cs:26:7:26:22 | enter GotoInTryFinally | -| CompileTimeOperators.cs:28:10:28:10 | enter M | CompileTimeOperators.cs:28:10:28:10 | enter M | -| CompileTimeOperators.cs:28:10:28:10 | enter M | CompileTimeOperators.cs:28:10:28:10 | exit M | -| CompileTimeOperators.cs:28:10:28:10 | enter M | CompileTimeOperators.cs:28:10:28:10 | exit M (abnormal) | -| CompileTimeOperators.cs:28:10:28:10 | enter M | CompileTimeOperators.cs:39:9:39:34 | ...; | -| CompileTimeOperators.cs:28:10:28:10 | enter M | CompileTimeOperators.cs:40:9:40:11 | End: | -| CompileTimeOperators.cs:28:10:28:10 | exit M | CompileTimeOperators.cs:28:10:28:10 | exit M | -| CompileTimeOperators.cs:28:10:28:10 | exit M (abnormal) | CompileTimeOperators.cs:28:10:28:10 | exit M (abnormal) | -| CompileTimeOperators.cs:39:9:39:34 | ...; | CompileTimeOperators.cs:39:9:39:34 | ...; | +| BreakInTry.cs:65:26:65:28 | String arg | BreakInTry.cs:67:21:67:31 | After ... == ... [false] | +| BreakInTry.cs:65:26:65:28 | String arg | BreakInTry.cs:67:21:67:31 | After ... == ... [true] | +| BreakInTry.cs:65:33:65:36 | After access to parameter args [empty] | BreakInTry.cs:65:33:65:36 | After access to parameter args [empty] | +| BreakInTry.cs:65:33:65:36 | After access to parameter args [non-empty] | BreakInTry.cs:65:26:65:28 | String arg | +| BreakInTry.cs:65:33:65:36 | After access to parameter args [non-empty] | BreakInTry.cs:65:33:65:36 | After access to parameter args [non-empty] | +| BreakInTry.cs:65:33:65:36 | After access to parameter args [non-empty] | BreakInTry.cs:67:21:67:31 | After ... == ... [false] | +| BreakInTry.cs:65:33:65:36 | After access to parameter args [non-empty] | BreakInTry.cs:67:21:67:31 | After ... == ... [true] | +| BreakInTry.cs:67:21:67:31 | After ... == ... [false] | BreakInTry.cs:67:21:67:31 | After ... == ... [false] | +| BreakInTry.cs:67:21:67:31 | After ... == ... [true] | BreakInTry.cs:67:21:67:31 | After ... == ... [true] | +| CompileTimeOperators.cs:3:7:3:26 | Entry | CompileTimeOperators.cs:3:7:3:26 | Entry | +| CompileTimeOperators.cs:5:9:5:15 | Entry | CompileTimeOperators.cs:5:9:5:15 | Entry | +| CompileTimeOperators.cs:10:9:10:14 | Entry | CompileTimeOperators.cs:10:9:10:14 | Entry | +| CompileTimeOperators.cs:15:10:15:15 | Entry | CompileTimeOperators.cs:15:10:15:15 | Entry | +| CompileTimeOperators.cs:20:12:20:17 | Entry | CompileTimeOperators.cs:20:12:20:17 | Entry | +| CompileTimeOperators.cs:26:7:26:22 | Entry | CompileTimeOperators.cs:26:7:26:22 | Entry | +| CompileTimeOperators.cs:28:10:28:10 | Entry | CompileTimeOperators.cs:28:10:28:10 | Entry | +| CompileTimeOperators.cs:28:10:28:10 | Entry | CompileTimeOperators.cs:28:10:28:10 | Exceptional Exit | +| CompileTimeOperators.cs:28:10:28:10 | Entry | CompileTimeOperators.cs:28:10:28:10 | Exit | +| CompileTimeOperators.cs:28:10:28:10 | Entry | CompileTimeOperators.cs:30:9:38:9 | After try {...} ... | +| CompileTimeOperators.cs:28:10:28:10 | Entry | CompileTimeOperators.cs:40:9:40:11 | End: | +| CompileTimeOperators.cs:28:10:28:10 | Exceptional Exit | CompileTimeOperators.cs:28:10:28:10 | Exceptional Exit | +| CompileTimeOperators.cs:28:10:28:10 | Exit | CompileTimeOperators.cs:28:10:28:10 | Exit | +| CompileTimeOperators.cs:30:9:38:9 | After try {...} ... | CompileTimeOperators.cs:30:9:38:9 | After try {...} ... | | CompileTimeOperators.cs:40:9:40:11 | End: | CompileTimeOperators.cs:40:9:40:11 | End: | -| ConditionalAccess.cs:1:7:1:23 | enter ConditionalAccess | ConditionalAccess.cs:1:7:1:23 | enter ConditionalAccess | -| ConditionalAccess.cs:3:12:3:13 | enter M1 | ConditionalAccess.cs:3:12:3:13 | enter M1 | -| ConditionalAccess.cs:3:12:3:13 | enter M1 | ConditionalAccess.cs:3:12:3:13 | exit M1 (normal) | -| ConditionalAccess.cs:3:12:3:13 | enter M1 | ConditionalAccess.cs:3:26:3:38 | call to method ToString | -| ConditionalAccess.cs:3:12:3:13 | enter M1 | ConditionalAccess.cs:3:26:3:49 | call to method ToLower | -| ConditionalAccess.cs:3:12:3:13 | exit M1 (normal) | ConditionalAccess.cs:3:12:3:13 | exit M1 (normal) | -| ConditionalAccess.cs:3:26:3:38 | call to method ToString | ConditionalAccess.cs:3:26:3:38 | call to method ToString | -| ConditionalAccess.cs:3:26:3:38 | call to method ToString | ConditionalAccess.cs:3:26:3:49 | call to method ToLower | -| ConditionalAccess.cs:3:26:3:49 | call to method ToLower | ConditionalAccess.cs:3:26:3:49 | call to method ToLower | -| ConditionalAccess.cs:5:10:5:11 | enter M2 | ConditionalAccess.cs:5:10:5:11 | enter M2 | -| ConditionalAccess.cs:5:10:5:11 | enter M2 | ConditionalAccess.cs:5:10:5:11 | exit M2 (normal) | -| ConditionalAccess.cs:5:10:5:11 | enter M2 | ConditionalAccess.cs:5:26:5:34 | access to property Length | -| ConditionalAccess.cs:5:10:5:11 | exit M2 (normal) | ConditionalAccess.cs:5:10:5:11 | exit M2 (normal) | -| ConditionalAccess.cs:5:26:5:34 | access to property Length | ConditionalAccess.cs:5:26:5:34 | access to property Length | -| ConditionalAccess.cs:7:10:7:11 | enter M3 | ConditionalAccess.cs:7:10:7:11 | enter M3 | -| ConditionalAccess.cs:7:10:7:11 | enter M3 | ConditionalAccess.cs:7:10:7:11 | exit M3 (normal) | -| ConditionalAccess.cs:7:10:7:11 | enter M3 | ConditionalAccess.cs:7:38:7:55 | access to property Length | -| ConditionalAccess.cs:7:10:7:11 | enter M3 | ConditionalAccess.cs:7:39:7:46 | ... ?? ... | -| ConditionalAccess.cs:7:10:7:11 | enter M3 | ConditionalAccess.cs:7:39:7:46 | [non-null] ... ?? ... | -| ConditionalAccess.cs:7:10:7:11 | enter M3 | ConditionalAccess.cs:7:39:7:46 | [null] ... ?? ... | -| ConditionalAccess.cs:7:10:7:11 | enter M3 | ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | -| ConditionalAccess.cs:7:10:7:11 | exit M3 (normal) | ConditionalAccess.cs:7:10:7:11 | exit M3 (normal) | -| ConditionalAccess.cs:7:38:7:55 | access to property Length | ConditionalAccess.cs:7:38:7:55 | access to property Length | -| ConditionalAccess.cs:7:39:7:46 | ... ?? ... | ConditionalAccess.cs:7:39:7:46 | ... ?? ... | -| ConditionalAccess.cs:7:39:7:46 | [non-null] ... ?? ... | ConditionalAccess.cs:7:39:7:46 | [non-null] ... ?? ... | -| ConditionalAccess.cs:7:39:7:46 | [null] ... ?? ... | ConditionalAccess.cs:7:39:7:46 | [null] ... ?? ... | -| ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | ConditionalAccess.cs:7:39:7:46 | [non-null] ... ?? ... | -| ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | ConditionalAccess.cs:7:39:7:46 | [null] ... ?? ... | -| ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | -| ConditionalAccess.cs:9:9:9:10 | enter M4 | ConditionalAccess.cs:9:9:9:10 | enter M4 | -| ConditionalAccess.cs:9:9:9:10 | enter M4 | ConditionalAccess.cs:9:25:9:33 | access to property Length | -| ConditionalAccess.cs:9:9:9:10 | enter M4 | ConditionalAccess.cs:9:25:9:38 | ... ?? ... | -| ConditionalAccess.cs:9:9:9:10 | enter M4 | ConditionalAccess.cs:9:38:9:38 | 0 | -| ConditionalAccess.cs:9:25:9:33 | access to property Length | ConditionalAccess.cs:9:25:9:33 | access to property Length | -| ConditionalAccess.cs:9:25:9:38 | ... ?? ... | ConditionalAccess.cs:9:25:9:38 | ... ?? ... | -| ConditionalAccess.cs:9:38:9:38 | 0 | ConditionalAccess.cs:9:38:9:38 | 0 | -| ConditionalAccess.cs:11:9:11:10 | enter M5 | ConditionalAccess.cs:11:9:11:10 | enter M5 | -| ConditionalAccess.cs:11:9:11:10 | enter M5 | ConditionalAccess.cs:11:9:11:10 | exit M5 (normal) | -| ConditionalAccess.cs:11:9:11:10 | enter M5 | ConditionalAccess.cs:13:13:13:21 | access to property Length | -| ConditionalAccess.cs:11:9:11:10 | enter M5 | ConditionalAccess.cs:13:25:13:25 | 0 | -| ConditionalAccess.cs:11:9:11:10 | enter M5 | ConditionalAccess.cs:14:20:14:20 | 0 | -| ConditionalAccess.cs:11:9:11:10 | enter M5 | ConditionalAccess.cs:16:20:16:20 | 1 | -| ConditionalAccess.cs:11:9:11:10 | exit M5 (normal) | ConditionalAccess.cs:11:9:11:10 | exit M5 (normal) | -| ConditionalAccess.cs:13:13:13:21 | access to property Length | ConditionalAccess.cs:13:13:13:21 | access to property Length | -| ConditionalAccess.cs:13:25:13:25 | 0 | ConditionalAccess.cs:11:9:11:10 | exit M5 (normal) | -| ConditionalAccess.cs:13:25:13:25 | 0 | ConditionalAccess.cs:13:25:13:25 | 0 | -| ConditionalAccess.cs:13:25:13:25 | 0 | ConditionalAccess.cs:14:20:14:20 | 0 | -| ConditionalAccess.cs:13:25:13:25 | 0 | ConditionalAccess.cs:16:20:16:20 | 1 | -| ConditionalAccess.cs:14:20:14:20 | 0 | ConditionalAccess.cs:14:20:14:20 | 0 | -| ConditionalAccess.cs:16:20:16:20 | 1 | ConditionalAccess.cs:16:20:16:20 | 1 | -| ConditionalAccess.cs:19:12:19:13 | enter M6 | ConditionalAccess.cs:19:12:19:13 | enter M6 | -| ConditionalAccess.cs:19:12:19:13 | enter M6 | ConditionalAccess.cs:19:12:19:13 | exit M6 (normal) | -| ConditionalAccess.cs:19:12:19:13 | enter M6 | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | -| ConditionalAccess.cs:19:12:19:13 | exit M6 (normal) | ConditionalAccess.cs:19:12:19:13 | exit M6 (normal) | -| ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | -| ConditionalAccess.cs:21:10:21:11 | enter M7 | ConditionalAccess.cs:21:10:21:11 | enter M7 | -| ConditionalAccess.cs:21:10:21:11 | enter M7 | ConditionalAccess.cs:23:13:23:38 | Nullable j = ... | -| ConditionalAccess.cs:21:10:21:11 | enter M7 | ConditionalAccess.cs:24:17:24:37 | call to method ToString | -| ConditionalAccess.cs:21:10:21:11 | enter M7 | ConditionalAccess.cs:25:31:25:31 | access to local variable s | -| ConditionalAccess.cs:23:13:23:38 | Nullable j = ... | ConditionalAccess.cs:23:13:23:38 | Nullable j = ... | -| ConditionalAccess.cs:23:13:23:38 | Nullable j = ... | ConditionalAccess.cs:24:17:24:37 | call to method ToString | -| ConditionalAccess.cs:23:13:23:38 | Nullable j = ... | ConditionalAccess.cs:25:31:25:31 | access to local variable s | -| ConditionalAccess.cs:24:17:24:37 | call to method ToString | ConditionalAccess.cs:24:17:24:37 | call to method ToString | -| ConditionalAccess.cs:24:17:24:37 | call to method ToString | ConditionalAccess.cs:25:31:25:31 | access to local variable s | -| ConditionalAccess.cs:25:31:25:31 | access to local variable s | ConditionalAccess.cs:25:31:25:31 | access to local variable s | -| ConditionalAccess.cs:30:10:30:12 | enter Out | ConditionalAccess.cs:30:10:30:12 | enter Out | -| ConditionalAccess.cs:32:10:32:11 | enter M8 | ConditionalAccess.cs:32:10:32:11 | enter M8 | -| ConditionalAccess.cs:32:10:32:11 | enter M8 | ConditionalAccess.cs:32:10:32:11 | exit M8 (normal) | -| ConditionalAccess.cs:32:10:32:11 | enter M8 | ConditionalAccess.cs:35:9:35:24 | call to method Out | -| ConditionalAccess.cs:32:10:32:11 | exit M8 (normal) | ConditionalAccess.cs:32:10:32:11 | exit M8 (normal) | -| ConditionalAccess.cs:35:9:35:24 | call to method Out | ConditionalAccess.cs:35:9:35:24 | call to method Out | -| ConditionalAccess.cs:42:9:42:11 | enter get_Item | ConditionalAccess.cs:42:9:42:11 | enter get_Item | -| ConditionalAccess.cs:43:9:43:11 | enter set_Item | ConditionalAccess.cs:43:9:43:11 | enter set_Item | -| ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:46:10:46:11 | enter M9 | -| ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:48:24:48:25 | 42 | -| ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:49:9:49:33 | ...; | -| ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:49:26:49:32 | "Hello" | -| ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:50:9:50:24 | ...; | -| ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:50:13:50:13 | 0 | -| ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:51:9:51:16 | access to property Prop | -| ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:51:9:51:32 | ...; | -| ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:51:30:51:31 | 84 | -| ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:52:9:52:16 | access to property Prop | -| ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:52:9:52:39 | ...; | -| ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:52:32:52:38 | "World" | -| ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:53:9:53:20 | access to field IntField | -| ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:53:9:53:26 | ...; | -| ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:53:25:53:25 | 1 | -| ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | -| ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:54:27:54:29 | "!" | -| ConditionalAccess.cs:48:24:48:25 | 42 | ConditionalAccess.cs:48:24:48:25 | 42 | -| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:49:9:49:33 | ...; | -| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:49:26:49:32 | "Hello" | -| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:50:9:50:24 | ...; | -| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:50:13:50:13 | 0 | -| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:51:9:51:16 | access to property Prop | -| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:51:9:51:32 | ...; | -| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:51:30:51:31 | 84 | -| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:52:9:52:16 | access to property Prop | -| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:52:9:52:39 | ...; | -| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:52:32:52:38 | "World" | -| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:53:9:53:20 | access to field IntField | -| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:53:9:53:26 | ...; | -| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:53:25:53:25 | 1 | -| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | -| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:54:27:54:29 | "!" | -| ConditionalAccess.cs:49:26:49:32 | "Hello" | ConditionalAccess.cs:49:26:49:32 | "Hello" | -| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:50:9:50:24 | ...; | -| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:50:13:50:13 | 0 | -| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:51:9:51:16 | access to property Prop | -| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:51:9:51:32 | ...; | -| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:51:30:51:31 | 84 | -| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:52:9:52:16 | access to property Prop | -| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:52:9:52:39 | ...; | -| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:52:32:52:38 | "World" | -| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:53:9:53:20 | access to field IntField | -| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:53:9:53:26 | ...; | -| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:53:25:53:25 | 1 | -| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | -| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:54:27:54:29 | "!" | -| ConditionalAccess.cs:50:13:50:13 | 0 | ConditionalAccess.cs:50:13:50:13 | 0 | -| ConditionalAccess.cs:51:9:51:16 | access to property Prop | ConditionalAccess.cs:51:9:51:16 | access to property Prop | -| ConditionalAccess.cs:51:9:51:16 | access to property Prop | ConditionalAccess.cs:51:30:51:31 | 84 | -| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:51:9:51:16 | access to property Prop | -| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:51:9:51:32 | ...; | -| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:51:30:51:31 | 84 | -| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:52:9:52:16 | access to property Prop | -| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:52:9:52:39 | ...; | -| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:52:32:52:38 | "World" | -| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:53:9:53:20 | access to field IntField | -| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:53:9:53:26 | ...; | -| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:53:25:53:25 | 1 | -| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | -| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:54:27:54:29 | "!" | -| ConditionalAccess.cs:51:30:51:31 | 84 | ConditionalAccess.cs:51:30:51:31 | 84 | -| ConditionalAccess.cs:52:9:52:16 | access to property Prop | ConditionalAccess.cs:52:9:52:16 | access to property Prop | -| ConditionalAccess.cs:52:9:52:16 | access to property Prop | ConditionalAccess.cs:52:32:52:38 | "World" | -| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:52:9:52:16 | access to property Prop | -| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:52:9:52:39 | ...; | -| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:52:32:52:38 | "World" | -| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:53:9:53:20 | access to field IntField | -| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:53:9:53:26 | ...; | -| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:53:25:53:25 | 1 | -| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | -| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:54:27:54:29 | "!" | -| ConditionalAccess.cs:52:32:52:38 | "World" | ConditionalAccess.cs:52:32:52:38 | "World" | -| ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:53:9:53:20 | access to field IntField | -| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:53:9:53:20 | access to field IntField | -| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:53:9:53:26 | ...; | -| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:53:25:53:25 | 1 | -| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | -| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:54:27:54:29 | "!" | -| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:53:25:53:25 | 1 | -| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | -| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:54:27:54:29 | "!" | -| ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | -| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:54:27:54:29 | "!" | -| ConditionalAccess.cs:60:26:60:38 | enter CommaJoinWith | ConditionalAccess.cs:60:26:60:38 | enter CommaJoinWith | -| Conditions.cs:1:7:1:16 | enter Conditions | Conditions.cs:1:7:1:16 | enter Conditions | -| Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:3:10:3:19 | enter IncrOrDecr | -| Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | -| Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:6:13:6:16 | ...; | -| Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:7:9:8:16 | if (...) ... | -| Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:7:13:7:16 | [false] !... | -| Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:7:13:7:16 | [true] !... | -| Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:8:13:8:16 | ...; | -| Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | -| Conditions.cs:6:13:6:16 | ...; | Conditions.cs:6:13:6:16 | ...; | -| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | -| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:7:9:8:16 | if (...) ... | -| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:7:13:7:16 | [false] !... | -| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:7:13:7:16 | [true] !... | -| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:8:13:8:16 | ...; | -| Conditions.cs:7:13:7:16 | [false] !... | Conditions.cs:7:13:7:16 | [false] !... | -| Conditions.cs:7:13:7:16 | [true] !... | Conditions.cs:7:13:7:16 | [true] !... | -| Conditions.cs:7:13:7:16 | [true] !... | Conditions.cs:8:13:8:16 | ...; | -| Conditions.cs:8:13:8:16 | ...; | Conditions.cs:8:13:8:16 | ...; | -| Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:11:9:11:10 | enter M1 | -| Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:15:13:15:16 | ...; | -| Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:16:9:18:20 | if (...) ... | -| Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:17:13:18:20 | if (...) ... | -| Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:17:17:17:18 | [false] !... | -| Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:17:17:17:18 | [true] !... | -| Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:18:17:18:20 | ...; | -| Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:19:16:19:16 | access to local variable x | -| Conditions.cs:15:13:15:16 | ...; | Conditions.cs:15:13:15:16 | ...; | -| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:16:9:18:20 | if (...) ... | -| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:17:13:18:20 | if (...) ... | -| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:17:17:17:18 | [false] !... | -| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:17:17:17:18 | [true] !... | -| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:18:17:18:20 | ...; | -| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:19:16:19:16 | access to local variable x | -| Conditions.cs:17:13:18:20 | if (...) ... | Conditions.cs:17:13:18:20 | if (...) ... | -| Conditions.cs:17:13:18:20 | if (...) ... | Conditions.cs:17:17:17:18 | [false] !... | -| Conditions.cs:17:13:18:20 | if (...) ... | Conditions.cs:17:17:17:18 | [true] !... | -| Conditions.cs:17:13:18:20 | if (...) ... | Conditions.cs:18:17:18:20 | ...; | -| Conditions.cs:17:17:17:18 | [false] !... | Conditions.cs:17:17:17:18 | [false] !... | -| Conditions.cs:17:17:17:18 | [true] !... | Conditions.cs:17:17:17:18 | [true] !... | -| Conditions.cs:17:17:17:18 | [true] !... | Conditions.cs:18:17:18:20 | ...; | -| Conditions.cs:18:17:18:20 | ...; | Conditions.cs:18:17:18:20 | ...; | -| Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:19:16:19:16 | access to local variable x | -| Conditions.cs:22:9:22:10 | enter M2 | Conditions.cs:22:9:22:10 | enter M2 | -| Conditions.cs:22:9:22:10 | enter M2 | Conditions.cs:26:13:27:20 | if (...) ... | -| Conditions.cs:22:9:22:10 | enter M2 | Conditions.cs:27:17:27:20 | ...; | -| Conditions.cs:22:9:22:10 | enter M2 | Conditions.cs:28:9:29:16 | if (...) ... | -| Conditions.cs:22:9:22:10 | enter M2 | Conditions.cs:29:13:29:16 | ...; | -| Conditions.cs:22:9:22:10 | enter M2 | Conditions.cs:30:16:30:16 | access to local variable x | -| Conditions.cs:26:13:27:20 | if (...) ... | Conditions.cs:26:13:27:20 | if (...) ... | -| Conditions.cs:26:13:27:20 | if (...) ... | Conditions.cs:27:17:27:20 | ...; | -| Conditions.cs:27:17:27:20 | ...; | Conditions.cs:27:17:27:20 | ...; | -| Conditions.cs:28:9:29:16 | if (...) ... | Conditions.cs:28:9:29:16 | if (...) ... | -| Conditions.cs:28:9:29:16 | if (...) ... | Conditions.cs:29:13:29:16 | ...; | -| Conditions.cs:28:9:29:16 | if (...) ... | Conditions.cs:30:16:30:16 | access to local variable x | -| Conditions.cs:29:13:29:16 | ...; | Conditions.cs:29:13:29:16 | ...; | -| Conditions.cs:30:16:30:16 | access to local variable x | Conditions.cs:30:16:30:16 | access to local variable x | -| Conditions.cs:33:9:33:10 | enter M3 | Conditions.cs:33:9:33:10 | enter M3 | -| Conditions.cs:33:9:33:10 | enter M3 | Conditions.cs:38:13:38:20 | ...; | -| Conditions.cs:33:9:33:10 | enter M3 | Conditions.cs:39:9:40:16 | if (...) ... | -| Conditions.cs:33:9:33:10 | enter M3 | Conditions.cs:40:13:40:16 | ...; | -| Conditions.cs:33:9:33:10 | enter M3 | Conditions.cs:41:9:42:16 | if (...) ... | -| Conditions.cs:33:9:33:10 | enter M3 | Conditions.cs:42:13:42:16 | ...; | -| Conditions.cs:33:9:33:10 | enter M3 | Conditions.cs:43:16:43:16 | access to local variable x | -| Conditions.cs:38:13:38:20 | ...; | Conditions.cs:38:13:38:20 | ...; | -| Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:39:9:40:16 | if (...) ... | -| Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:40:13:40:16 | ...; | -| Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:41:9:42:16 | if (...) ... | -| Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:42:13:42:16 | ...; | -| Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:43:16:43:16 | access to local variable x | -| Conditions.cs:40:13:40:16 | ...; | Conditions.cs:40:13:40:16 | ...; | -| Conditions.cs:41:9:42:16 | if (...) ... | Conditions.cs:41:9:42:16 | if (...) ... | -| Conditions.cs:41:9:42:16 | if (...) ... | Conditions.cs:42:13:42:16 | ...; | -| Conditions.cs:41:9:42:16 | if (...) ... | Conditions.cs:43:16:43:16 | access to local variable x | -| Conditions.cs:42:13:42:16 | ...; | Conditions.cs:42:13:42:16 | ...; | -| Conditions.cs:43:16:43:16 | access to local variable x | Conditions.cs:43:16:43:16 | access to local variable x | -| Conditions.cs:46:9:46:10 | enter M4 | Conditions.cs:46:9:46:10 | enter M4 | -| Conditions.cs:46:9:46:10 | enter M4 | Conditions.cs:49:16:49:16 | access to parameter x | -| Conditions.cs:46:9:46:10 | enter M4 | Conditions.cs:50:9:53:9 | {...} | -| Conditions.cs:46:9:46:10 | enter M4 | Conditions.cs:52:17:52:20 | ...; | -| Conditions.cs:46:9:46:10 | enter M4 | Conditions.cs:54:16:54:16 | access to local variable y | -| Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:49:16:49:16 | access to parameter x | -| Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:50:9:53:9 | {...} | -| Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:52:17:52:20 | ...; | -| Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:54:16:54:16 | access to local variable y | -| Conditions.cs:50:9:53:9 | {...} | Conditions.cs:50:9:53:9 | {...} | -| Conditions.cs:50:9:53:9 | {...} | Conditions.cs:52:17:52:20 | ...; | -| Conditions.cs:52:17:52:20 | ...; | Conditions.cs:52:17:52:20 | ...; | -| Conditions.cs:54:16:54:16 | access to local variable y | Conditions.cs:54:16:54:16 | access to local variable y | -| Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:57:9:57:10 | enter M5 | -| Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:60:16:60:16 | access to parameter x | -| Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:61:9:64:9 | {...} | -| Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:63:17:63:20 | ...; | -| Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:65:9:66:16 | if (...) ... | -| Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:66:13:66:16 | ...; | -| Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:67:16:67:16 | access to local variable y | -| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:60:16:60:16 | access to parameter x | -| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:61:9:64:9 | {...} | -| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:63:17:63:20 | ...; | -| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:65:9:66:16 | if (...) ... | -| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:66:13:66:16 | ...; | -| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:67:16:67:16 | access to local variable y | -| Conditions.cs:61:9:64:9 | {...} | Conditions.cs:61:9:64:9 | {...} | -| Conditions.cs:61:9:64:9 | {...} | Conditions.cs:63:17:63:20 | ...; | -| Conditions.cs:63:17:63:20 | ...; | Conditions.cs:63:17:63:20 | ...; | -| Conditions.cs:65:9:66:16 | if (...) ... | Conditions.cs:65:9:66:16 | if (...) ... | -| Conditions.cs:65:9:66:16 | if (...) ... | Conditions.cs:66:13:66:16 | ...; | -| Conditions.cs:65:9:66:16 | if (...) ... | Conditions.cs:67:16:67:16 | access to local variable y | -| Conditions.cs:66:13:66:16 | ...; | Conditions.cs:66:13:66:16 | ...; | -| Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:67:16:67:16 | access to local variable y | -| Conditions.cs:70:9:70:10 | enter M6 | Conditions.cs:70:9:70:10 | enter M6 | -| Conditions.cs:70:9:70:10 | enter M6 | Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | -| Conditions.cs:70:9:70:10 | enter M6 | Conditions.cs:74:22:74:22 | String _ | -| Conditions.cs:70:9:70:10 | enter M6 | Conditions.cs:77:17:77:20 | ...; | -| Conditions.cs:70:9:70:10 | enter M6 | Conditions.cs:78:13:79:26 | if (...) ... | -| Conditions.cs:70:9:70:10 | enter M6 | Conditions.cs:79:17:79:26 | ...; | -| Conditions.cs:70:9:70:10 | enter M6 | Conditions.cs:81:9:82:16 | if (...) ... | -| Conditions.cs:70:9:70:10 | enter M6 | Conditions.cs:82:13:82:16 | ...; | -| Conditions.cs:70:9:70:10 | enter M6 | Conditions.cs:83:16:83:16 | access to local variable x | -| Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | -| Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:74:22:74:22 | String _ | -| Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:77:17:77:20 | ...; | -| Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:78:13:79:26 | if (...) ... | -| Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:79:17:79:26 | ...; | -| Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:81:9:82:16 | if (...) ... | -| Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:82:13:82:16 | ...; | -| Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:83:16:83:16 | access to local variable x | +| ConditionalAccess.cs:1:7:1:23 | Entry | ConditionalAccess.cs:1:7:1:23 | Entry | +| ConditionalAccess.cs:3:12:3:13 | Entry | ConditionalAccess.cs:3:12:3:13 | Entry | +| ConditionalAccess.cs:3:12:3:13 | Entry | ConditionalAccess.cs:3:26:3:26 | After access to parameter i [non-null] | +| ConditionalAccess.cs:3:12:3:13 | Entry | ConditionalAccess.cs:3:26:3:26 | After access to parameter i [null] | +| ConditionalAccess.cs:3:12:3:13 | Entry | ConditionalAccess.cs:3:26:3:38 | After call to method ToString [non-null] | +| ConditionalAccess.cs:3:12:3:13 | Entry | ConditionalAccess.cs:3:26:3:38 | After call to method ToString [null] | +| ConditionalAccess.cs:3:12:3:13 | Entry | ConditionalAccess.cs:3:26:3:49 | After call to method ToLower | +| ConditionalAccess.cs:3:26:3:26 | After access to parameter i [non-null] | ConditionalAccess.cs:3:26:3:26 | After access to parameter i [non-null] | +| ConditionalAccess.cs:3:26:3:26 | After access to parameter i [non-null] | ConditionalAccess.cs:3:26:3:38 | After call to method ToString [non-null] | +| ConditionalAccess.cs:3:26:3:26 | After access to parameter i [null] | ConditionalAccess.cs:3:26:3:26 | After access to parameter i [null] | +| ConditionalAccess.cs:3:26:3:38 | After call to method ToString [non-null] | ConditionalAccess.cs:3:26:3:38 | After call to method ToString [non-null] | +| ConditionalAccess.cs:3:26:3:38 | After call to method ToString [null] | ConditionalAccess.cs:3:26:3:38 | After call to method ToString [null] | +| ConditionalAccess.cs:3:26:3:49 | After call to method ToLower | ConditionalAccess.cs:3:26:3:49 | After call to method ToLower | +| ConditionalAccess.cs:5:10:5:11 | Entry | ConditionalAccess.cs:5:10:5:11 | Entry | +| ConditionalAccess.cs:5:10:5:11 | Entry | ConditionalAccess.cs:5:26:5:26 | After access to parameter s [non-null] | +| ConditionalAccess.cs:5:10:5:11 | Entry | ConditionalAccess.cs:5:26:5:26 | After access to parameter s [null] | +| ConditionalAccess.cs:5:10:5:11 | Entry | ConditionalAccess.cs:5:26:5:34 | After access to property Length | +| ConditionalAccess.cs:5:26:5:26 | After access to parameter s [non-null] | ConditionalAccess.cs:5:26:5:26 | After access to parameter s [non-null] | +| ConditionalAccess.cs:5:26:5:26 | After access to parameter s [null] | ConditionalAccess.cs:5:26:5:26 | After access to parameter s [null] | +| ConditionalAccess.cs:5:26:5:34 | After access to property Length | ConditionalAccess.cs:5:26:5:34 | After access to property Length | +| ConditionalAccess.cs:7:10:7:11 | Entry | ConditionalAccess.cs:7:10:7:11 | Entry | +| ConditionalAccess.cs:7:10:7:11 | Entry | ConditionalAccess.cs:7:38:7:55 | After access to property Length | +| ConditionalAccess.cs:7:10:7:11 | Entry | ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [non-null] | +| ConditionalAccess.cs:7:10:7:11 | Entry | ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [null] | +| ConditionalAccess.cs:7:10:7:11 | Entry | ConditionalAccess.cs:7:39:7:46 | After ... ?? ... [non-null] | +| ConditionalAccess.cs:7:10:7:11 | Entry | ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [non-null] | +| ConditionalAccess.cs:7:10:7:11 | Entry | ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [null] | +| ConditionalAccess.cs:7:38:7:55 | After access to property Length | ConditionalAccess.cs:7:38:7:55 | After access to property Length | +| ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [non-null] | ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [non-null] | +| ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [null] | ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [null] | +| ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [null] | ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [non-null] | +| ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [null] | ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [null] | +| ConditionalAccess.cs:7:39:7:46 | After ... ?? ... [non-null] | ConditionalAccess.cs:7:39:7:46 | After ... ?? ... [non-null] | +| ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [non-null] | ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [non-null] | +| ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [null] | ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [null] | +| ConditionalAccess.cs:9:9:9:10 | Entry | ConditionalAccess.cs:9:9:9:10 | Entry | +| ConditionalAccess.cs:9:9:9:10 | Entry | ConditionalAccess.cs:9:25:9:25 | After access to parameter s [non-null] | +| ConditionalAccess.cs:9:9:9:10 | Entry | ConditionalAccess.cs:9:25:9:25 | After access to parameter s [null] | +| ConditionalAccess.cs:9:9:9:10 | Entry | ConditionalAccess.cs:9:25:9:33 | After access to property Length [non-null] | +| ConditionalAccess.cs:9:9:9:10 | Entry | ConditionalAccess.cs:9:25:9:33 | After access to property Length [null] | +| ConditionalAccess.cs:9:9:9:10 | Entry | ConditionalAccess.cs:9:25:9:38 | After ... ?? ... | +| ConditionalAccess.cs:9:25:9:25 | After access to parameter s [non-null] | ConditionalAccess.cs:9:25:9:25 | After access to parameter s [non-null] | +| ConditionalAccess.cs:9:25:9:25 | After access to parameter s [non-null] | ConditionalAccess.cs:9:25:9:33 | After access to property Length [non-null] | +| ConditionalAccess.cs:9:25:9:25 | After access to parameter s [null] | ConditionalAccess.cs:9:25:9:25 | After access to parameter s [null] | +| ConditionalAccess.cs:9:25:9:33 | After access to property Length [non-null] | ConditionalAccess.cs:9:25:9:33 | After access to property Length [non-null] | +| ConditionalAccess.cs:9:25:9:33 | After access to property Length [null] | ConditionalAccess.cs:9:25:9:33 | After access to property Length [null] | +| ConditionalAccess.cs:9:25:9:38 | After ... ?? ... | ConditionalAccess.cs:9:25:9:38 | After ... ?? ... | +| ConditionalAccess.cs:11:9:11:10 | Entry | ConditionalAccess.cs:11:9:11:10 | Entry | +| ConditionalAccess.cs:11:9:11:10 | Entry | ConditionalAccess.cs:11:9:11:10 | Normal Exit | +| ConditionalAccess.cs:11:9:11:10 | Entry | ConditionalAccess.cs:13:13:13:13 | After access to parameter s [non-null] | +| ConditionalAccess.cs:11:9:11:10 | Entry | ConditionalAccess.cs:13:13:13:13 | After access to parameter s [null] | +| ConditionalAccess.cs:11:9:11:10 | Entry | ConditionalAccess.cs:13:13:13:21 | After access to property Length | +| ConditionalAccess.cs:11:9:11:10 | Entry | ConditionalAccess.cs:13:13:13:25 | After ... > ... [false] | +| ConditionalAccess.cs:11:9:11:10 | Entry | ConditionalAccess.cs:13:13:13:25 | After ... > ... [true] | +| ConditionalAccess.cs:11:9:11:10 | Normal Exit | ConditionalAccess.cs:11:9:11:10 | Normal Exit | +| ConditionalAccess.cs:13:13:13:13 | After access to parameter s [non-null] | ConditionalAccess.cs:13:13:13:13 | After access to parameter s [non-null] | +| ConditionalAccess.cs:13:13:13:13 | After access to parameter s [null] | ConditionalAccess.cs:13:13:13:13 | After access to parameter s [null] | +| ConditionalAccess.cs:13:13:13:21 | After access to property Length | ConditionalAccess.cs:11:9:11:10 | Normal Exit | +| ConditionalAccess.cs:13:13:13:21 | After access to property Length | ConditionalAccess.cs:13:13:13:21 | After access to property Length | +| ConditionalAccess.cs:13:13:13:21 | After access to property Length | ConditionalAccess.cs:13:13:13:25 | After ... > ... [false] | +| ConditionalAccess.cs:13:13:13:21 | After access to property Length | ConditionalAccess.cs:13:13:13:25 | After ... > ... [true] | +| ConditionalAccess.cs:13:13:13:25 | After ... > ... [false] | ConditionalAccess.cs:13:13:13:25 | After ... > ... [false] | +| ConditionalAccess.cs:13:13:13:25 | After ... > ... [true] | ConditionalAccess.cs:13:13:13:25 | After ... > ... [true] | +| ConditionalAccess.cs:19:12:19:13 | Entry | ConditionalAccess.cs:19:12:19:13 | Entry | +| ConditionalAccess.cs:19:12:19:13 | Entry | ConditionalAccess.cs:19:40:19:41 | After access to parameter s1 [non-null] | +| ConditionalAccess.cs:19:12:19:13 | Entry | ConditionalAccess.cs:19:40:19:41 | After access to parameter s1 [null] | +| ConditionalAccess.cs:19:12:19:13 | Entry | ConditionalAccess.cs:19:40:19:60 | After call to method CommaJoinWith | +| ConditionalAccess.cs:19:40:19:41 | After access to parameter s1 [non-null] | ConditionalAccess.cs:19:40:19:41 | After access to parameter s1 [non-null] | +| ConditionalAccess.cs:19:40:19:41 | After access to parameter s1 [null] | ConditionalAccess.cs:19:40:19:41 | After access to parameter s1 [null] | +| ConditionalAccess.cs:19:40:19:60 | After call to method CommaJoinWith | ConditionalAccess.cs:19:40:19:60 | After call to method CommaJoinWith | +| ConditionalAccess.cs:21:10:21:11 | Entry | ConditionalAccess.cs:21:10:21:11 | Entry | +| ConditionalAccess.cs:21:10:21:11 | Entry | ConditionalAccess.cs:23:17:23:38 | After access to property Length | +| ConditionalAccess.cs:21:10:21:11 | Entry | ConditionalAccess.cs:23:18:23:29 | After (...) ... [non-null] | +| ConditionalAccess.cs:21:10:21:11 | Entry | ConditionalAccess.cs:23:18:23:29 | After (...) ... [null] | +| ConditionalAccess.cs:21:10:21:11 | Entry | ConditionalAccess.cs:24:17:24:37 | After call to method ToString | +| ConditionalAccess.cs:21:10:21:11 | Entry | ConditionalAccess.cs:24:18:24:24 | After (...) ... [non-null] | +| ConditionalAccess.cs:21:10:21:11 | Entry | ConditionalAccess.cs:24:18:24:24 | After (...) ... [null] | +| ConditionalAccess.cs:21:10:21:11 | Entry | ConditionalAccess.cs:25:13:25:14 | After "" [non-null] | +| ConditionalAccess.cs:21:10:21:11 | Entry | ConditionalAccess.cs:25:13:25:14 | After "" [null] | +| ConditionalAccess.cs:21:10:21:11 | Entry | ConditionalAccess.cs:25:13:25:32 | After call to method CommaJoinWith | +| ConditionalAccess.cs:23:17:23:38 | After access to property Length | ConditionalAccess.cs:23:17:23:38 | After access to property Length | +| ConditionalAccess.cs:23:17:23:38 | After access to property Length | ConditionalAccess.cs:24:17:24:37 | After call to method ToString | +| ConditionalAccess.cs:23:17:23:38 | After access to property Length | ConditionalAccess.cs:24:18:24:24 | After (...) ... [non-null] | +| ConditionalAccess.cs:23:17:23:38 | After access to property Length | ConditionalAccess.cs:24:18:24:24 | After (...) ... [null] | +| ConditionalAccess.cs:23:17:23:38 | After access to property Length | ConditionalAccess.cs:25:13:25:14 | After "" [non-null] | +| ConditionalAccess.cs:23:17:23:38 | After access to property Length | ConditionalAccess.cs:25:13:25:14 | After "" [null] | +| ConditionalAccess.cs:23:17:23:38 | After access to property Length | ConditionalAccess.cs:25:13:25:32 | After call to method CommaJoinWith | +| ConditionalAccess.cs:23:18:23:29 | After (...) ... [non-null] | ConditionalAccess.cs:23:18:23:29 | After (...) ... [non-null] | +| ConditionalAccess.cs:23:18:23:29 | After (...) ... [null] | ConditionalAccess.cs:23:18:23:29 | After (...) ... [null] | +| ConditionalAccess.cs:24:17:24:37 | After call to method ToString | ConditionalAccess.cs:24:17:24:37 | After call to method ToString | +| ConditionalAccess.cs:24:17:24:37 | After call to method ToString | ConditionalAccess.cs:25:13:25:14 | After "" [non-null] | +| ConditionalAccess.cs:24:17:24:37 | After call to method ToString | ConditionalAccess.cs:25:13:25:14 | After "" [null] | +| ConditionalAccess.cs:24:17:24:37 | After call to method ToString | ConditionalAccess.cs:25:13:25:32 | After call to method CommaJoinWith | +| ConditionalAccess.cs:24:18:24:24 | After (...) ... [non-null] | ConditionalAccess.cs:24:18:24:24 | After (...) ... [non-null] | +| ConditionalAccess.cs:24:18:24:24 | After (...) ... [null] | ConditionalAccess.cs:24:18:24:24 | After (...) ... [null] | +| ConditionalAccess.cs:25:13:25:14 | After "" [non-null] | ConditionalAccess.cs:25:13:25:14 | After "" [non-null] | +| ConditionalAccess.cs:25:13:25:14 | After "" [null] | ConditionalAccess.cs:25:13:25:14 | After "" [null] | +| ConditionalAccess.cs:25:13:25:32 | After call to method CommaJoinWith | ConditionalAccess.cs:25:13:25:32 | After call to method CommaJoinWith | +| ConditionalAccess.cs:30:10:30:12 | Entry | ConditionalAccess.cs:30:10:30:12 | Entry | +| ConditionalAccess.cs:32:10:32:11 | Entry | ConditionalAccess.cs:32:10:32:11 | Entry | +| ConditionalAccess.cs:32:10:32:11 | Entry | ConditionalAccess.cs:35:9:35:12 | After access to property Prop [non-null] | +| ConditionalAccess.cs:32:10:32:11 | Entry | ConditionalAccess.cs:35:9:35:12 | After access to property Prop [null] | +| ConditionalAccess.cs:32:10:32:11 | Entry | ConditionalAccess.cs:35:9:35:24 | After call to method Out | +| ConditionalAccess.cs:35:9:35:12 | After access to property Prop [non-null] | ConditionalAccess.cs:35:9:35:12 | After access to property Prop [non-null] | +| ConditionalAccess.cs:35:9:35:12 | After access to property Prop [null] | ConditionalAccess.cs:35:9:35:12 | After access to property Prop [null] | +| ConditionalAccess.cs:35:9:35:24 | After call to method Out | ConditionalAccess.cs:35:9:35:24 | After call to method Out | +| ConditionalAccess.cs:42:9:42:11 | Entry | ConditionalAccess.cs:42:9:42:11 | Entry | +| ConditionalAccess.cs:43:9:43:11 | Entry | ConditionalAccess.cs:43:9:43:11 | Entry | +| ConditionalAccess.cs:46:10:46:11 | Entry | ConditionalAccess.cs:46:10:46:11 | Entry | +| ConditionalAccess.cs:46:10:46:11 | Entry | ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:46:10:46:11 | Entry | ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:46:10:46:11 | Entry | ConditionalAccess.cs:48:12:48:25 | After ... = ... | +| ConditionalAccess.cs:46:10:46:11 | Entry | ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:46:10:46:11 | Entry | ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:46:10:46:11 | Entry | ConditionalAccess.cs:49:12:49:32 | After ... = ... | +| ConditionalAccess.cs:46:10:46:11 | Entry | ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:46:10:46:11 | Entry | ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:46:10:46:11 | Entry | ConditionalAccess.cs:50:12:50:23 | After ... = ... | +| ConditionalAccess.cs:46:10:46:11 | Entry | ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:46:10:46:11 | Entry | ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:46:10:46:11 | Entry | ConditionalAccess.cs:51:9:51:16 | After access to property Prop [non-null] | +| ConditionalAccess.cs:46:10:46:11 | Entry | ConditionalAccess.cs:51:9:51:16 | After access to property Prop [null] | +| ConditionalAccess.cs:46:10:46:11 | Entry | ConditionalAccess.cs:51:18:51:31 | After ... = ... | +| ConditionalAccess.cs:46:10:46:11 | Entry | ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:46:10:46:11 | Entry | ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:46:10:46:11 | Entry | ConditionalAccess.cs:52:9:52:16 | After access to property Prop [non-null] | +| ConditionalAccess.cs:46:10:46:11 | Entry | ConditionalAccess.cs:52:9:52:16 | After access to property Prop [null] | +| ConditionalAccess.cs:46:10:46:11 | Entry | ConditionalAccess.cs:52:18:52:38 | After ... = ... | +| ConditionalAccess.cs:46:10:46:11 | Entry | ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:46:10:46:11 | Entry | ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:46:10:46:11 | Entry | ConditionalAccess.cs:53:12:53:25 | After ... -= ... | +| ConditionalAccess.cs:46:10:46:11 | Entry | ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:46:10:46:11 | Entry | ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:46:10:46:11 | Entry | ConditionalAccess.cs:54:12:54:29 | After ... += ... | +| ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [null] | ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:48:12:48:25 | After ... = ... | ConditionalAccess.cs:48:12:48:25 | After ... = ... | +| ConditionalAccess.cs:48:12:48:25 | After ... = ... | ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:48:12:48:25 | After ... = ... | ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:48:12:48:25 | After ... = ... | ConditionalAccess.cs:49:12:49:32 | After ... = ... | +| ConditionalAccess.cs:48:12:48:25 | After ... = ... | ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:48:12:48:25 | After ... = ... | ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:48:12:48:25 | After ... = ... | ConditionalAccess.cs:50:12:50:23 | After ... = ... | +| ConditionalAccess.cs:48:12:48:25 | After ... = ... | ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:48:12:48:25 | After ... = ... | ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:48:12:48:25 | After ... = ... | ConditionalAccess.cs:51:9:51:16 | After access to property Prop [non-null] | +| ConditionalAccess.cs:48:12:48:25 | After ... = ... | ConditionalAccess.cs:51:9:51:16 | After access to property Prop [null] | +| ConditionalAccess.cs:48:12:48:25 | After ... = ... | ConditionalAccess.cs:51:18:51:31 | After ... = ... | +| ConditionalAccess.cs:48:12:48:25 | After ... = ... | ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:48:12:48:25 | After ... = ... | ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:48:12:48:25 | After ... = ... | ConditionalAccess.cs:52:9:52:16 | After access to property Prop [non-null] | +| ConditionalAccess.cs:48:12:48:25 | After ... = ... | ConditionalAccess.cs:52:9:52:16 | After access to property Prop [null] | +| ConditionalAccess.cs:48:12:48:25 | After ... = ... | ConditionalAccess.cs:52:18:52:38 | After ... = ... | +| ConditionalAccess.cs:48:12:48:25 | After ... = ... | ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:48:12:48:25 | After ... = ... | ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:48:12:48:25 | After ... = ... | ConditionalAccess.cs:53:12:53:25 | After ... -= ... | +| ConditionalAccess.cs:48:12:48:25 | After ... = ... | ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:48:12:48:25 | After ... = ... | ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:48:12:48:25 | After ... = ... | ConditionalAccess.cs:54:12:54:29 | After ... += ... | +| ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [null] | ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:49:12:49:32 | After ... = ... | ConditionalAccess.cs:49:12:49:32 | After ... = ... | +| ConditionalAccess.cs:49:12:49:32 | After ... = ... | ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:49:12:49:32 | After ... = ... | ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:49:12:49:32 | After ... = ... | ConditionalAccess.cs:50:12:50:23 | After ... = ... | +| ConditionalAccess.cs:49:12:49:32 | After ... = ... | ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:49:12:49:32 | After ... = ... | ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:49:12:49:32 | After ... = ... | ConditionalAccess.cs:51:9:51:16 | After access to property Prop [non-null] | +| ConditionalAccess.cs:49:12:49:32 | After ... = ... | ConditionalAccess.cs:51:9:51:16 | After access to property Prop [null] | +| ConditionalAccess.cs:49:12:49:32 | After ... = ... | ConditionalAccess.cs:51:18:51:31 | After ... = ... | +| ConditionalAccess.cs:49:12:49:32 | After ... = ... | ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:49:12:49:32 | After ... = ... | ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:49:12:49:32 | After ... = ... | ConditionalAccess.cs:52:9:52:16 | After access to property Prop [non-null] | +| ConditionalAccess.cs:49:12:49:32 | After ... = ... | ConditionalAccess.cs:52:9:52:16 | After access to property Prop [null] | +| ConditionalAccess.cs:49:12:49:32 | After ... = ... | ConditionalAccess.cs:52:18:52:38 | After ... = ... | +| ConditionalAccess.cs:49:12:49:32 | After ... = ... | ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:49:12:49:32 | After ... = ... | ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:49:12:49:32 | After ... = ... | ConditionalAccess.cs:53:12:53:25 | After ... -= ... | +| ConditionalAccess.cs:49:12:49:32 | After ... = ... | ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:49:12:49:32 | After ... = ... | ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:49:12:49:32 | After ... = ... | ConditionalAccess.cs:54:12:54:29 | After ... += ... | +| ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [null] | ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:50:12:50:23 | After ... = ... | ConditionalAccess.cs:50:12:50:23 | After ... = ... | +| ConditionalAccess.cs:50:12:50:23 | After ... = ... | ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:50:12:50:23 | After ... = ... | ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:50:12:50:23 | After ... = ... | ConditionalAccess.cs:51:9:51:16 | After access to property Prop [non-null] | +| ConditionalAccess.cs:50:12:50:23 | After ... = ... | ConditionalAccess.cs:51:9:51:16 | After access to property Prop [null] | +| ConditionalAccess.cs:50:12:50:23 | After ... = ... | ConditionalAccess.cs:51:18:51:31 | After ... = ... | +| ConditionalAccess.cs:50:12:50:23 | After ... = ... | ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:50:12:50:23 | After ... = ... | ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:50:12:50:23 | After ... = ... | ConditionalAccess.cs:52:9:52:16 | After access to property Prop [non-null] | +| ConditionalAccess.cs:50:12:50:23 | After ... = ... | ConditionalAccess.cs:52:9:52:16 | After access to property Prop [null] | +| ConditionalAccess.cs:50:12:50:23 | After ... = ... | ConditionalAccess.cs:52:18:52:38 | After ... = ... | +| ConditionalAccess.cs:50:12:50:23 | After ... = ... | ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:50:12:50:23 | After ... = ... | ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:50:12:50:23 | After ... = ... | ConditionalAccess.cs:53:12:53:25 | After ... -= ... | +| ConditionalAccess.cs:50:12:50:23 | After ... = ... | ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:50:12:50:23 | After ... = ... | ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:50:12:50:23 | After ... = ... | ConditionalAccess.cs:54:12:54:29 | After ... += ... | +| ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:51:9:51:16 | After access to property Prop [non-null] | +| ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [null] | ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:51:9:51:16 | After access to property Prop [non-null] | ConditionalAccess.cs:51:9:51:16 | After access to property Prop [non-null] | +| ConditionalAccess.cs:51:9:51:16 | After access to property Prop [null] | ConditionalAccess.cs:51:9:51:16 | After access to property Prop [null] | +| ConditionalAccess.cs:51:18:51:31 | After ... = ... | ConditionalAccess.cs:51:18:51:31 | After ... = ... | +| ConditionalAccess.cs:51:18:51:31 | After ... = ... | ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:51:18:51:31 | After ... = ... | ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:51:18:51:31 | After ... = ... | ConditionalAccess.cs:52:9:52:16 | After access to property Prop [non-null] | +| ConditionalAccess.cs:51:18:51:31 | After ... = ... | ConditionalAccess.cs:52:9:52:16 | After access to property Prop [null] | +| ConditionalAccess.cs:51:18:51:31 | After ... = ... | ConditionalAccess.cs:52:18:52:38 | After ... = ... | +| ConditionalAccess.cs:51:18:51:31 | After ... = ... | ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:51:18:51:31 | After ... = ... | ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:51:18:51:31 | After ... = ... | ConditionalAccess.cs:53:12:53:25 | After ... -= ... | +| ConditionalAccess.cs:51:18:51:31 | After ... = ... | ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:51:18:51:31 | After ... = ... | ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:51:18:51:31 | After ... = ... | ConditionalAccess.cs:54:12:54:29 | After ... += ... | +| ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:52:9:52:16 | After access to property Prop [non-null] | +| ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [null] | ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:52:9:52:16 | After access to property Prop [non-null] | ConditionalAccess.cs:52:9:52:16 | After access to property Prop [non-null] | +| ConditionalAccess.cs:52:9:52:16 | After access to property Prop [null] | ConditionalAccess.cs:52:9:52:16 | After access to property Prop [null] | +| ConditionalAccess.cs:52:18:52:38 | After ... = ... | ConditionalAccess.cs:52:18:52:38 | After ... = ... | +| ConditionalAccess.cs:52:18:52:38 | After ... = ... | ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:52:18:52:38 | After ... = ... | ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:52:18:52:38 | After ... = ... | ConditionalAccess.cs:53:12:53:25 | After ... -= ... | +| ConditionalAccess.cs:52:18:52:38 | After ... = ... | ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:52:18:52:38 | After ... = ... | ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:52:18:52:38 | After ... = ... | ConditionalAccess.cs:54:12:54:29 | After ... += ... | +| ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [null] | ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:53:12:53:25 | After ... -= ... | ConditionalAccess.cs:53:12:53:25 | After ... -= ... | +| ConditionalAccess.cs:53:12:53:25 | After ... -= ... | ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:53:12:53:25 | After ... -= ... | ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:53:12:53:25 | After ... -= ... | ConditionalAccess.cs:54:12:54:29 | After ... += ... | +| ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [null] | ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:54:12:54:29 | After ... += ... | ConditionalAccess.cs:54:12:54:29 | After ... += ... | +| ConditionalAccess.cs:60:26:60:38 | Entry | ConditionalAccess.cs:60:26:60:38 | Entry | +| Conditions.cs:1:7:1:16 | Entry | Conditions.cs:1:7:1:16 | Entry | +| Conditions.cs:3:10:3:19 | Entry | Conditions.cs:3:10:3:19 | Entry | +| Conditions.cs:3:10:3:19 | Entry | Conditions.cs:5:9:6:16 | After if (...) ... | +| Conditions.cs:3:10:3:19 | Entry | Conditions.cs:5:13:5:15 | After access to parameter inc [false] | +| Conditions.cs:3:10:3:19 | Entry | Conditions.cs:5:13:5:15 | After access to parameter inc [true] | +| Conditions.cs:3:10:3:19 | Entry | Conditions.cs:7:9:8:16 | After if (...) ... | +| Conditions.cs:3:10:3:19 | Entry | Conditions.cs:7:14:7:16 | After access to parameter inc [false] | +| Conditions.cs:3:10:3:19 | Entry | Conditions.cs:7:14:7:16 | After access to parameter inc [true] | +| Conditions.cs:5:9:6:16 | After if (...) ... | Conditions.cs:5:9:6:16 | After if (...) ... | +| Conditions.cs:5:9:6:16 | After if (...) ... | Conditions.cs:7:9:8:16 | After if (...) ... | +| Conditions.cs:5:9:6:16 | After if (...) ... | Conditions.cs:7:14:7:16 | After access to parameter inc [false] | +| Conditions.cs:5:9:6:16 | After if (...) ... | Conditions.cs:7:14:7:16 | After access to parameter inc [true] | +| Conditions.cs:5:13:5:15 | After access to parameter inc [false] | Conditions.cs:5:13:5:15 | After access to parameter inc [false] | +| Conditions.cs:5:13:5:15 | After access to parameter inc [true] | Conditions.cs:5:13:5:15 | After access to parameter inc [true] | +| Conditions.cs:7:9:8:16 | After if (...) ... | Conditions.cs:7:9:8:16 | After if (...) ... | +| Conditions.cs:7:14:7:16 | After access to parameter inc [false] | Conditions.cs:7:14:7:16 | After access to parameter inc [false] | +| Conditions.cs:7:14:7:16 | After access to parameter inc [true] | Conditions.cs:7:14:7:16 | After access to parameter inc [true] | +| Conditions.cs:11:9:11:10 | Entry | Conditions.cs:11:9:11:10 | Entry | +| Conditions.cs:11:9:11:10 | Entry | Conditions.cs:14:9:15:16 | After if (...) ... | +| Conditions.cs:11:9:11:10 | Entry | Conditions.cs:14:13:14:13 | After access to parameter b [false] | +| Conditions.cs:11:9:11:10 | Entry | Conditions.cs:14:13:14:13 | After access to parameter b [true] | +| Conditions.cs:11:9:11:10 | Entry | Conditions.cs:16:9:18:20 | After if (...) ... | +| Conditions.cs:11:9:11:10 | Entry | Conditions.cs:16:13:16:17 | After ... > ... [false] | +| Conditions.cs:11:9:11:10 | Entry | Conditions.cs:16:13:16:17 | After ... > ... [true] | +| Conditions.cs:11:9:11:10 | Entry | Conditions.cs:17:13:18:20 | After if (...) ... | +| Conditions.cs:11:9:11:10 | Entry | Conditions.cs:17:18:17:18 | After access to parameter b [false] | +| Conditions.cs:11:9:11:10 | Entry | Conditions.cs:17:18:17:18 | After access to parameter b [true] | +| Conditions.cs:14:9:15:16 | After if (...) ... | Conditions.cs:14:9:15:16 | After if (...) ... | +| Conditions.cs:14:9:15:16 | After if (...) ... | Conditions.cs:16:9:18:20 | After if (...) ... | +| Conditions.cs:14:9:15:16 | After if (...) ... | Conditions.cs:16:13:16:17 | After ... > ... [false] | +| Conditions.cs:14:9:15:16 | After if (...) ... | Conditions.cs:16:13:16:17 | After ... > ... [true] | +| Conditions.cs:14:9:15:16 | After if (...) ... | Conditions.cs:17:13:18:20 | After if (...) ... | +| Conditions.cs:14:9:15:16 | After if (...) ... | Conditions.cs:17:18:17:18 | After access to parameter b [false] | +| Conditions.cs:14:9:15:16 | After if (...) ... | Conditions.cs:17:18:17:18 | After access to parameter b [true] | +| Conditions.cs:14:13:14:13 | After access to parameter b [false] | Conditions.cs:14:13:14:13 | After access to parameter b [false] | +| Conditions.cs:14:13:14:13 | After access to parameter b [true] | Conditions.cs:14:13:14:13 | After access to parameter b [true] | +| Conditions.cs:16:9:18:20 | After if (...) ... | Conditions.cs:16:9:18:20 | After if (...) ... | +| Conditions.cs:16:13:16:17 | After ... > ... [false] | Conditions.cs:16:13:16:17 | After ... > ... [false] | +| Conditions.cs:16:13:16:17 | After ... > ... [true] | Conditions.cs:16:13:16:17 | After ... > ... [true] | +| Conditions.cs:16:13:16:17 | After ... > ... [true] | Conditions.cs:17:13:18:20 | After if (...) ... | +| Conditions.cs:16:13:16:17 | After ... > ... [true] | Conditions.cs:17:18:17:18 | After access to parameter b [false] | +| Conditions.cs:16:13:16:17 | After ... > ... [true] | Conditions.cs:17:18:17:18 | After access to parameter b [true] | +| Conditions.cs:17:13:18:20 | After if (...) ... | Conditions.cs:17:13:18:20 | After if (...) ... | +| Conditions.cs:17:18:17:18 | After access to parameter b [false] | Conditions.cs:17:18:17:18 | After access to parameter b [false] | +| Conditions.cs:17:18:17:18 | After access to parameter b [true] | Conditions.cs:17:18:17:18 | After access to parameter b [true] | +| Conditions.cs:22:9:22:10 | Entry | Conditions.cs:22:9:22:10 | Entry | +| Conditions.cs:22:9:22:10 | Entry | Conditions.cs:25:9:27:20 | After if (...) ... | +| Conditions.cs:22:9:22:10 | Entry | Conditions.cs:25:13:25:14 | After access to parameter b1 [false] | +| Conditions.cs:22:9:22:10 | Entry | Conditions.cs:25:13:25:14 | After access to parameter b1 [true] | +| Conditions.cs:22:9:22:10 | Entry | Conditions.cs:26:13:27:20 | After if (...) ... | +| Conditions.cs:22:9:22:10 | Entry | Conditions.cs:26:17:26:18 | After access to parameter b2 [false] | +| Conditions.cs:22:9:22:10 | Entry | Conditions.cs:26:17:26:18 | After access to parameter b2 [true] | +| Conditions.cs:22:9:22:10 | Entry | Conditions.cs:28:9:29:16 | After if (...) ... | +| Conditions.cs:22:9:22:10 | Entry | Conditions.cs:28:13:28:14 | After access to parameter b2 [false] | +| Conditions.cs:22:9:22:10 | Entry | Conditions.cs:28:13:28:14 | After access to parameter b2 [true] | +| Conditions.cs:25:9:27:20 | After if (...) ... | Conditions.cs:25:9:27:20 | After if (...) ... | +| Conditions.cs:25:9:27:20 | After if (...) ... | Conditions.cs:28:9:29:16 | After if (...) ... | +| Conditions.cs:25:9:27:20 | After if (...) ... | Conditions.cs:28:13:28:14 | After access to parameter b2 [false] | +| Conditions.cs:25:9:27:20 | After if (...) ... | Conditions.cs:28:13:28:14 | After access to parameter b2 [true] | +| Conditions.cs:25:13:25:14 | After access to parameter b1 [false] | Conditions.cs:25:13:25:14 | After access to parameter b1 [false] | +| Conditions.cs:25:13:25:14 | After access to parameter b1 [true] | Conditions.cs:25:13:25:14 | After access to parameter b1 [true] | +| Conditions.cs:25:13:25:14 | After access to parameter b1 [true] | Conditions.cs:26:13:27:20 | After if (...) ... | +| Conditions.cs:25:13:25:14 | After access to parameter b1 [true] | Conditions.cs:26:17:26:18 | After access to parameter b2 [false] | +| Conditions.cs:25:13:25:14 | After access to parameter b1 [true] | Conditions.cs:26:17:26:18 | After access to parameter b2 [true] | +| Conditions.cs:26:13:27:20 | After if (...) ... | Conditions.cs:26:13:27:20 | After if (...) ... | +| Conditions.cs:26:17:26:18 | After access to parameter b2 [false] | Conditions.cs:26:17:26:18 | After access to parameter b2 [false] | +| Conditions.cs:26:17:26:18 | After access to parameter b2 [true] | Conditions.cs:26:17:26:18 | After access to parameter b2 [true] | +| Conditions.cs:28:9:29:16 | After if (...) ... | Conditions.cs:28:9:29:16 | After if (...) ... | +| Conditions.cs:28:13:28:14 | After access to parameter b2 [false] | Conditions.cs:28:13:28:14 | After access to parameter b2 [false] | +| Conditions.cs:28:13:28:14 | After access to parameter b2 [true] | Conditions.cs:28:13:28:14 | After access to parameter b2 [true] | +| Conditions.cs:33:9:33:10 | Entry | Conditions.cs:33:9:33:10 | Entry | +| Conditions.cs:33:9:33:10 | Entry | Conditions.cs:37:9:38:20 | After if (...) ... | +| Conditions.cs:33:9:33:10 | Entry | Conditions.cs:37:13:37:14 | After access to parameter b1 [false] | +| Conditions.cs:33:9:33:10 | Entry | Conditions.cs:37:13:37:14 | After access to parameter b1 [true] | +| Conditions.cs:33:9:33:10 | Entry | Conditions.cs:39:9:40:16 | After if (...) ... | +| Conditions.cs:33:9:33:10 | Entry | Conditions.cs:39:13:39:14 | After access to local variable b2 [false] | +| Conditions.cs:33:9:33:10 | Entry | Conditions.cs:39:13:39:14 | After access to local variable b2 [true] | +| Conditions.cs:33:9:33:10 | Entry | Conditions.cs:41:9:42:16 | After if (...) ... | +| Conditions.cs:33:9:33:10 | Entry | Conditions.cs:41:13:41:14 | After access to local variable b2 [false] | +| Conditions.cs:33:9:33:10 | Entry | Conditions.cs:41:13:41:14 | After access to local variable b2 [true] | +| Conditions.cs:37:9:38:20 | After if (...) ... | Conditions.cs:37:9:38:20 | After if (...) ... | +| Conditions.cs:37:9:38:20 | After if (...) ... | Conditions.cs:39:9:40:16 | After if (...) ... | +| Conditions.cs:37:9:38:20 | After if (...) ... | Conditions.cs:39:13:39:14 | After access to local variable b2 [false] | +| Conditions.cs:37:9:38:20 | After if (...) ... | Conditions.cs:39:13:39:14 | After access to local variable b2 [true] | +| Conditions.cs:37:9:38:20 | After if (...) ... | Conditions.cs:41:9:42:16 | After if (...) ... | +| Conditions.cs:37:9:38:20 | After if (...) ... | Conditions.cs:41:13:41:14 | After access to local variable b2 [false] | +| Conditions.cs:37:9:38:20 | After if (...) ... | Conditions.cs:41:13:41:14 | After access to local variable b2 [true] | +| Conditions.cs:37:13:37:14 | After access to parameter b1 [false] | Conditions.cs:37:13:37:14 | After access to parameter b1 [false] | +| Conditions.cs:37:13:37:14 | After access to parameter b1 [true] | Conditions.cs:37:13:37:14 | After access to parameter b1 [true] | +| Conditions.cs:39:9:40:16 | After if (...) ... | Conditions.cs:39:9:40:16 | After if (...) ... | +| Conditions.cs:39:9:40:16 | After if (...) ... | Conditions.cs:41:9:42:16 | After if (...) ... | +| Conditions.cs:39:9:40:16 | After if (...) ... | Conditions.cs:41:13:41:14 | After access to local variable b2 [false] | +| Conditions.cs:39:9:40:16 | After if (...) ... | Conditions.cs:41:13:41:14 | After access to local variable b2 [true] | +| Conditions.cs:39:13:39:14 | After access to local variable b2 [false] | Conditions.cs:39:13:39:14 | After access to local variable b2 [false] | +| Conditions.cs:39:13:39:14 | After access to local variable b2 [true] | Conditions.cs:39:13:39:14 | After access to local variable b2 [true] | +| Conditions.cs:41:9:42:16 | After if (...) ... | Conditions.cs:41:9:42:16 | After if (...) ... | +| Conditions.cs:41:13:41:14 | After access to local variable b2 [false] | Conditions.cs:41:13:41:14 | After access to local variable b2 [false] | +| Conditions.cs:41:13:41:14 | After access to local variable b2 [true] | Conditions.cs:41:13:41:14 | After access to local variable b2 [true] | +| Conditions.cs:46:9:46:10 | Entry | Conditions.cs:46:9:46:10 | Entry | +| Conditions.cs:46:9:46:10 | Entry | Conditions.cs:49:9:53:9 | [LoopHeader] while (...) ... | +| Conditions.cs:46:9:46:10 | Entry | Conditions.cs:49:16:49:22 | After ... > ... [false] | +| Conditions.cs:46:9:46:10 | Entry | Conditions.cs:49:16:49:22 | After ... > ... [true] | +| Conditions.cs:46:9:46:10 | Entry | Conditions.cs:51:13:52:20 | After if (...) ... | +| Conditions.cs:46:9:46:10 | Entry | Conditions.cs:51:17:51:17 | After access to parameter b [false] | +| Conditions.cs:46:9:46:10 | Entry | Conditions.cs:51:17:51:17 | After access to parameter b [true] | +| Conditions.cs:49:9:53:9 | [LoopHeader] while (...) ... | Conditions.cs:49:9:53:9 | [LoopHeader] while (...) ... | +| Conditions.cs:49:9:53:9 | [LoopHeader] while (...) ... | Conditions.cs:49:16:49:22 | After ... > ... [false] | +| Conditions.cs:49:9:53:9 | [LoopHeader] while (...) ... | Conditions.cs:49:16:49:22 | After ... > ... [true] | +| Conditions.cs:49:9:53:9 | [LoopHeader] while (...) ... | Conditions.cs:51:13:52:20 | After if (...) ... | +| Conditions.cs:49:9:53:9 | [LoopHeader] while (...) ... | Conditions.cs:51:17:51:17 | After access to parameter b [false] | +| Conditions.cs:49:9:53:9 | [LoopHeader] while (...) ... | Conditions.cs:51:17:51:17 | After access to parameter b [true] | +| Conditions.cs:49:16:49:22 | After ... > ... [false] | Conditions.cs:49:16:49:22 | After ... > ... [false] | +| Conditions.cs:49:16:49:22 | After ... > ... [true] | Conditions.cs:49:16:49:22 | After ... > ... [true] | +| Conditions.cs:49:16:49:22 | After ... > ... [true] | Conditions.cs:51:13:52:20 | After if (...) ... | +| Conditions.cs:49:16:49:22 | After ... > ... [true] | Conditions.cs:51:17:51:17 | After access to parameter b [false] | +| Conditions.cs:49:16:49:22 | After ... > ... [true] | Conditions.cs:51:17:51:17 | After access to parameter b [true] | +| Conditions.cs:51:13:52:20 | After if (...) ... | Conditions.cs:51:13:52:20 | After if (...) ... | +| Conditions.cs:51:17:51:17 | After access to parameter b [false] | Conditions.cs:51:17:51:17 | After access to parameter b [false] | +| Conditions.cs:51:17:51:17 | After access to parameter b [true] | Conditions.cs:51:17:51:17 | After access to parameter b [true] | +| Conditions.cs:57:9:57:10 | Entry | Conditions.cs:57:9:57:10 | Entry | +| Conditions.cs:57:9:57:10 | Entry | Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | +| Conditions.cs:57:9:57:10 | Entry | Conditions.cs:60:16:60:22 | After ... > ... [false] | +| Conditions.cs:57:9:57:10 | Entry | Conditions.cs:60:16:60:22 | After ... > ... [true] | +| Conditions.cs:57:9:57:10 | Entry | Conditions.cs:62:13:63:20 | After if (...) ... | +| Conditions.cs:57:9:57:10 | Entry | Conditions.cs:62:17:62:17 | After access to parameter b [false] | +| Conditions.cs:57:9:57:10 | Entry | Conditions.cs:62:17:62:17 | After access to parameter b [true] | +| Conditions.cs:57:9:57:10 | Entry | Conditions.cs:65:9:66:16 | After if (...) ... | +| Conditions.cs:57:9:57:10 | Entry | Conditions.cs:65:13:65:13 | After access to parameter b [false] | +| Conditions.cs:57:9:57:10 | Entry | Conditions.cs:65:13:65:13 | After access to parameter b [true] | +| Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | +| Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | Conditions.cs:60:16:60:22 | After ... > ... [false] | +| Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | Conditions.cs:60:16:60:22 | After ... > ... [true] | +| Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | Conditions.cs:62:13:63:20 | After if (...) ... | +| Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | Conditions.cs:62:17:62:17 | After access to parameter b [false] | +| Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | Conditions.cs:62:17:62:17 | After access to parameter b [true] | +| Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | Conditions.cs:65:9:66:16 | After if (...) ... | +| Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | Conditions.cs:65:13:65:13 | After access to parameter b [false] | +| Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | Conditions.cs:65:13:65:13 | After access to parameter b [true] | +| Conditions.cs:60:16:60:22 | After ... > ... [false] | Conditions.cs:60:16:60:22 | After ... > ... [false] | +| Conditions.cs:60:16:60:22 | After ... > ... [false] | Conditions.cs:65:9:66:16 | After if (...) ... | +| Conditions.cs:60:16:60:22 | After ... > ... [false] | Conditions.cs:65:13:65:13 | After access to parameter b [false] | +| Conditions.cs:60:16:60:22 | After ... > ... [false] | Conditions.cs:65:13:65:13 | After access to parameter b [true] | +| Conditions.cs:60:16:60:22 | After ... > ... [true] | Conditions.cs:60:16:60:22 | After ... > ... [true] | +| Conditions.cs:60:16:60:22 | After ... > ... [true] | Conditions.cs:62:13:63:20 | After if (...) ... | +| Conditions.cs:60:16:60:22 | After ... > ... [true] | Conditions.cs:62:17:62:17 | After access to parameter b [false] | +| Conditions.cs:60:16:60:22 | After ... > ... [true] | Conditions.cs:62:17:62:17 | After access to parameter b [true] | +| Conditions.cs:62:13:63:20 | After if (...) ... | Conditions.cs:62:13:63:20 | After if (...) ... | +| Conditions.cs:62:17:62:17 | After access to parameter b [false] | Conditions.cs:62:17:62:17 | After access to parameter b [false] | +| Conditions.cs:62:17:62:17 | After access to parameter b [true] | Conditions.cs:62:17:62:17 | After access to parameter b [true] | +| Conditions.cs:65:9:66:16 | After if (...) ... | Conditions.cs:65:9:66:16 | After if (...) ... | +| Conditions.cs:65:13:65:13 | After access to parameter b [false] | Conditions.cs:65:13:65:13 | After access to parameter b [false] | +| Conditions.cs:65:13:65:13 | After access to parameter b [true] | Conditions.cs:65:13:65:13 | After access to parameter b [true] | +| Conditions.cs:70:9:70:10 | Entry | Conditions.cs:70:9:70:10 | Entry | +| Conditions.cs:70:9:70:10 | Entry | Conditions.cs:74:9:80:9 | After foreach (... ... in ...) ... | +| Conditions.cs:70:9:70:10 | Entry | Conditions.cs:74:22:74:22 | String _ | +| Conditions.cs:70:9:70:10 | Entry | Conditions.cs:74:27:74:28 | After access to parameter ss [empty] | +| Conditions.cs:70:9:70:10 | Entry | Conditions.cs:74:27:74:28 | After access to parameter ss [non-empty] | +| Conditions.cs:70:9:70:10 | Entry | Conditions.cs:76:13:77:20 | After if (...) ... | +| Conditions.cs:70:9:70:10 | Entry | Conditions.cs:76:17:76:17 | After access to local variable b [false] | +| Conditions.cs:70:9:70:10 | Entry | Conditions.cs:76:17:76:17 | After access to local variable b [true] | +| Conditions.cs:70:9:70:10 | Entry | Conditions.cs:78:13:79:26 | After if (...) ... | +| Conditions.cs:70:9:70:10 | Entry | Conditions.cs:78:17:78:21 | After ... > ... [false] | +| Conditions.cs:70:9:70:10 | Entry | Conditions.cs:78:17:78:21 | After ... > ... [true] | +| Conditions.cs:70:9:70:10 | Entry | Conditions.cs:81:9:82:16 | After if (...) ... | +| Conditions.cs:70:9:70:10 | Entry | Conditions.cs:81:13:81:13 | After access to local variable b [false] | +| Conditions.cs:70:9:70:10 | Entry | Conditions.cs:81:13:81:13 | After access to local variable b [true] | +| Conditions.cs:74:9:80:9 | After foreach (... ... in ...) ... | Conditions.cs:74:9:80:9 | After foreach (... ... in ...) ... | +| Conditions.cs:74:9:80:9 | After foreach (... ... in ...) ... | Conditions.cs:81:9:82:16 | After if (...) ... | +| Conditions.cs:74:9:80:9 | After foreach (... ... in ...) ... | Conditions.cs:81:13:81:13 | After access to local variable b [false] | +| Conditions.cs:74:9:80:9 | After foreach (... ... in ...) ... | Conditions.cs:81:13:81:13 | After access to local variable b [true] | | Conditions.cs:74:22:74:22 | String _ | Conditions.cs:74:22:74:22 | String _ | -| Conditions.cs:74:22:74:22 | String _ | Conditions.cs:77:17:77:20 | ...; | -| Conditions.cs:74:22:74:22 | String _ | Conditions.cs:78:13:79:26 | if (...) ... | -| Conditions.cs:74:22:74:22 | String _ | Conditions.cs:79:17:79:26 | ...; | -| Conditions.cs:77:17:77:20 | ...; | Conditions.cs:77:17:77:20 | ...; | -| Conditions.cs:78:13:79:26 | if (...) ... | Conditions.cs:78:13:79:26 | if (...) ... | -| Conditions.cs:78:13:79:26 | if (...) ... | Conditions.cs:79:17:79:26 | ...; | -| Conditions.cs:79:17:79:26 | ...; | Conditions.cs:79:17:79:26 | ...; | -| Conditions.cs:81:9:82:16 | if (...) ... | Conditions.cs:81:9:82:16 | if (...) ... | -| Conditions.cs:81:9:82:16 | if (...) ... | Conditions.cs:82:13:82:16 | ...; | -| Conditions.cs:81:9:82:16 | if (...) ... | Conditions.cs:83:16:83:16 | access to local variable x | -| Conditions.cs:82:13:82:16 | ...; | Conditions.cs:82:13:82:16 | ...; | -| Conditions.cs:83:16:83:16 | access to local variable x | Conditions.cs:83:16:83:16 | access to local variable x | -| Conditions.cs:86:9:86:10 | enter M7 | Conditions.cs:86:9:86:10 | enter M7 | -| Conditions.cs:86:9:86:10 | enter M7 | Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | -| Conditions.cs:86:9:86:10 | enter M7 | Conditions.cs:90:22:90:22 | String _ | -| Conditions.cs:86:9:86:10 | enter M7 | Conditions.cs:93:17:93:20 | ...; | -| Conditions.cs:86:9:86:10 | enter M7 | Conditions.cs:94:13:95:26 | if (...) ... | -| Conditions.cs:86:9:86:10 | enter M7 | Conditions.cs:95:17:95:26 | ...; | -| Conditions.cs:86:9:86:10 | enter M7 | Conditions.cs:96:13:97:20 | if (...) ... | -| Conditions.cs:86:9:86:10 | enter M7 | Conditions.cs:97:17:97:20 | ...; | -| Conditions.cs:86:9:86:10 | enter M7 | Conditions.cs:99:16:99:16 | access to local variable x | -| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | -| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:90:22:90:22 | String _ | -| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:93:17:93:20 | ...; | -| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:94:13:95:26 | if (...) ... | -| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:95:17:95:26 | ...; | -| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:96:13:97:20 | if (...) ... | -| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:97:17:97:20 | ...; | -| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:99:16:99:16 | access to local variable x | +| Conditions.cs:74:22:74:22 | String _ | Conditions.cs:76:13:77:20 | After if (...) ... | +| Conditions.cs:74:22:74:22 | String _ | Conditions.cs:76:17:76:17 | After access to local variable b [false] | +| Conditions.cs:74:22:74:22 | String _ | Conditions.cs:76:17:76:17 | After access to local variable b [true] | +| Conditions.cs:74:22:74:22 | String _ | Conditions.cs:78:13:79:26 | After if (...) ... | +| Conditions.cs:74:22:74:22 | String _ | Conditions.cs:78:17:78:21 | After ... > ... [false] | +| Conditions.cs:74:22:74:22 | String _ | Conditions.cs:78:17:78:21 | After ... > ... [true] | +| Conditions.cs:74:27:74:28 | After access to parameter ss [empty] | Conditions.cs:74:27:74:28 | After access to parameter ss [empty] | +| Conditions.cs:74:27:74:28 | After access to parameter ss [non-empty] | Conditions.cs:74:22:74:22 | String _ | +| Conditions.cs:74:27:74:28 | After access to parameter ss [non-empty] | Conditions.cs:74:27:74:28 | After access to parameter ss [non-empty] | +| Conditions.cs:74:27:74:28 | After access to parameter ss [non-empty] | Conditions.cs:76:13:77:20 | After if (...) ... | +| Conditions.cs:74:27:74:28 | After access to parameter ss [non-empty] | Conditions.cs:76:17:76:17 | After access to local variable b [false] | +| Conditions.cs:74:27:74:28 | After access to parameter ss [non-empty] | Conditions.cs:76:17:76:17 | After access to local variable b [true] | +| Conditions.cs:74:27:74:28 | After access to parameter ss [non-empty] | Conditions.cs:78:13:79:26 | After if (...) ... | +| Conditions.cs:74:27:74:28 | After access to parameter ss [non-empty] | Conditions.cs:78:17:78:21 | After ... > ... [false] | +| Conditions.cs:74:27:74:28 | After access to parameter ss [non-empty] | Conditions.cs:78:17:78:21 | After ... > ... [true] | +| Conditions.cs:76:13:77:20 | After if (...) ... | Conditions.cs:76:13:77:20 | After if (...) ... | +| Conditions.cs:76:13:77:20 | After if (...) ... | Conditions.cs:78:13:79:26 | After if (...) ... | +| Conditions.cs:76:13:77:20 | After if (...) ... | Conditions.cs:78:17:78:21 | After ... > ... [false] | +| Conditions.cs:76:13:77:20 | After if (...) ... | Conditions.cs:78:17:78:21 | After ... > ... [true] | +| Conditions.cs:76:17:76:17 | After access to local variable b [false] | Conditions.cs:76:17:76:17 | After access to local variable b [false] | +| Conditions.cs:76:17:76:17 | After access to local variable b [true] | Conditions.cs:76:17:76:17 | After access to local variable b [true] | +| Conditions.cs:78:13:79:26 | After if (...) ... | Conditions.cs:78:13:79:26 | After if (...) ... | +| Conditions.cs:78:17:78:21 | After ... > ... [false] | Conditions.cs:78:17:78:21 | After ... > ... [false] | +| Conditions.cs:78:17:78:21 | After ... > ... [true] | Conditions.cs:78:17:78:21 | After ... > ... [true] | +| Conditions.cs:81:9:82:16 | After if (...) ... | Conditions.cs:81:9:82:16 | After if (...) ... | +| Conditions.cs:81:13:81:13 | After access to local variable b [false] | Conditions.cs:81:13:81:13 | After access to local variable b [false] | +| Conditions.cs:81:13:81:13 | After access to local variable b [true] | Conditions.cs:81:13:81:13 | After access to local variable b [true] | +| Conditions.cs:86:9:86:10 | Entry | Conditions.cs:86:9:86:10 | Entry | +| Conditions.cs:86:9:86:10 | Entry | Conditions.cs:90:9:98:9 | After foreach (... ... in ...) ... | +| Conditions.cs:86:9:86:10 | Entry | Conditions.cs:90:22:90:22 | String _ | +| Conditions.cs:86:9:86:10 | Entry | Conditions.cs:90:27:90:28 | After access to parameter ss [empty] | +| Conditions.cs:86:9:86:10 | Entry | Conditions.cs:90:27:90:28 | After access to parameter ss [non-empty] | +| Conditions.cs:86:9:86:10 | Entry | Conditions.cs:92:13:93:20 | After if (...) ... | +| Conditions.cs:86:9:86:10 | Entry | Conditions.cs:92:17:92:17 | After access to local variable b [false] | +| Conditions.cs:86:9:86:10 | Entry | Conditions.cs:92:17:92:17 | After access to local variable b [true] | +| Conditions.cs:86:9:86:10 | Entry | Conditions.cs:94:13:95:26 | After if (...) ... | +| Conditions.cs:86:9:86:10 | Entry | Conditions.cs:94:17:94:21 | After ... > ... [false] | +| Conditions.cs:86:9:86:10 | Entry | Conditions.cs:94:17:94:21 | After ... > ... [true] | +| Conditions.cs:86:9:86:10 | Entry | Conditions.cs:96:13:97:20 | After if (...) ... | +| Conditions.cs:86:9:86:10 | Entry | Conditions.cs:96:17:96:17 | After access to local variable b [false] | +| Conditions.cs:86:9:86:10 | Entry | Conditions.cs:96:17:96:17 | After access to local variable b [true] | +| Conditions.cs:90:9:98:9 | After foreach (... ... in ...) ... | Conditions.cs:90:9:98:9 | After foreach (... ... in ...) ... | | Conditions.cs:90:22:90:22 | String _ | Conditions.cs:90:22:90:22 | String _ | -| Conditions.cs:90:22:90:22 | String _ | Conditions.cs:93:17:93:20 | ...; | -| Conditions.cs:90:22:90:22 | String _ | Conditions.cs:94:13:95:26 | if (...) ... | -| Conditions.cs:90:22:90:22 | String _ | Conditions.cs:95:17:95:26 | ...; | -| Conditions.cs:90:22:90:22 | String _ | Conditions.cs:96:13:97:20 | if (...) ... | -| Conditions.cs:90:22:90:22 | String _ | Conditions.cs:97:17:97:20 | ...; | -| Conditions.cs:93:17:93:20 | ...; | Conditions.cs:93:17:93:20 | ...; | -| Conditions.cs:94:13:95:26 | if (...) ... | Conditions.cs:94:13:95:26 | if (...) ... | -| Conditions.cs:94:13:95:26 | if (...) ... | Conditions.cs:95:17:95:26 | ...; | -| Conditions.cs:94:13:95:26 | if (...) ... | Conditions.cs:96:13:97:20 | if (...) ... | -| Conditions.cs:94:13:95:26 | if (...) ... | Conditions.cs:97:17:97:20 | ...; | -| Conditions.cs:95:17:95:26 | ...; | Conditions.cs:95:17:95:26 | ...; | -| Conditions.cs:96:13:97:20 | if (...) ... | Conditions.cs:96:13:97:20 | if (...) ... | -| Conditions.cs:96:13:97:20 | if (...) ... | Conditions.cs:97:17:97:20 | ...; | -| Conditions.cs:97:17:97:20 | ...; | Conditions.cs:97:17:97:20 | ...; | -| Conditions.cs:99:16:99:16 | access to local variable x | Conditions.cs:99:16:99:16 | access to local variable x | -| Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:102:12:102:13 | enter M8 | -| Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:106:13:106:20 | ...; | -| Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:107:9:109:24 | if (...) ... | -| Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:108:13:109:24 | if (...) ... | -| Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:108:17:108:18 | [false] !... | -| Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:108:17:108:18 | [true] !... | -| Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:109:17:109:24 | ...; | -| Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:110:16:110:16 | access to local variable x | -| Conditions.cs:106:13:106:20 | ...; | Conditions.cs:106:13:106:20 | ...; | -| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:107:9:109:24 | if (...) ... | -| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:108:13:109:24 | if (...) ... | -| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:108:17:108:18 | [false] !... | -| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:108:17:108:18 | [true] !... | -| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:109:17:109:24 | ...; | -| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:110:16:110:16 | access to local variable x | -| Conditions.cs:108:13:109:24 | if (...) ... | Conditions.cs:108:13:109:24 | if (...) ... | -| Conditions.cs:108:13:109:24 | if (...) ... | Conditions.cs:108:17:108:18 | [false] !... | -| Conditions.cs:108:13:109:24 | if (...) ... | Conditions.cs:108:17:108:18 | [true] !... | -| Conditions.cs:108:13:109:24 | if (...) ... | Conditions.cs:109:17:109:24 | ...; | -| Conditions.cs:108:17:108:18 | [false] !... | Conditions.cs:108:17:108:18 | [false] !... | -| Conditions.cs:108:17:108:18 | [true] !... | Conditions.cs:108:17:108:18 | [true] !... | -| Conditions.cs:108:17:108:18 | [true] !... | Conditions.cs:109:17:109:24 | ...; | -| Conditions.cs:109:17:109:24 | ...; | Conditions.cs:109:17:109:24 | ...; | -| Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:110:16:110:16 | access to local variable x | -| Conditions.cs:113:10:113:11 | enter M9 | Conditions.cs:113:10:113:11 | enter M9 | -| Conditions.cs:113:10:113:11 | enter M9 | Conditions.cs:113:10:113:11 | exit M9 (normal) | -| Conditions.cs:113:10:113:11 | enter M9 | Conditions.cs:116:25:116:25 | access to local variable i | -| Conditions.cs:113:10:113:11 | enter M9 | Conditions.cs:116:42:116:42 | access to local variable i | -| Conditions.cs:113:10:113:11 | enter M9 | Conditions.cs:117:9:123:9 | {...} | -| Conditions.cs:113:10:113:11 | enter M9 | Conditions.cs:119:17:119:21 | [false] !... | -| Conditions.cs:113:10:113:11 | enter M9 | Conditions.cs:119:17:119:21 | [true] !... | -| Conditions.cs:113:10:113:11 | enter M9 | Conditions.cs:120:17:120:23 | ...; | -| Conditions.cs:113:10:113:11 | enter M9 | Conditions.cs:121:13:122:25 | if (...) ... | -| Conditions.cs:113:10:113:11 | enter M9 | Conditions.cs:122:17:122:25 | ...; | -| Conditions.cs:113:10:113:11 | exit M9 (normal) | Conditions.cs:113:10:113:11 | exit M9 (normal) | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:113:10:113:11 | exit M9 (normal) | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:116:25:116:25 | access to local variable i | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:116:42:116:42 | access to local variable i | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:117:9:123:9 | {...} | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:119:17:119:21 | [false] !... | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:119:17:119:21 | [true] !... | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:120:17:120:23 | ...; | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:121:13:122:25 | if (...) ... | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:122:17:122:25 | ...; | -| Conditions.cs:116:42:116:42 | access to local variable i | Conditions.cs:116:42:116:42 | access to local variable i | -| Conditions.cs:117:9:123:9 | {...} | Conditions.cs:116:42:116:42 | access to local variable i | -| Conditions.cs:117:9:123:9 | {...} | Conditions.cs:117:9:123:9 | {...} | -| Conditions.cs:117:9:123:9 | {...} | Conditions.cs:119:17:119:21 | [false] !... | -| Conditions.cs:117:9:123:9 | {...} | Conditions.cs:119:17:119:21 | [true] !... | -| Conditions.cs:117:9:123:9 | {...} | Conditions.cs:120:17:120:23 | ...; | -| Conditions.cs:117:9:123:9 | {...} | Conditions.cs:121:13:122:25 | if (...) ... | -| Conditions.cs:117:9:123:9 | {...} | Conditions.cs:122:17:122:25 | ...; | -| Conditions.cs:119:17:119:21 | [false] !... | Conditions.cs:119:17:119:21 | [false] !... | -| Conditions.cs:119:17:119:21 | [true] !... | Conditions.cs:119:17:119:21 | [true] !... | -| Conditions.cs:119:17:119:21 | [true] !... | Conditions.cs:120:17:120:23 | ...; | -| Conditions.cs:120:17:120:23 | ...; | Conditions.cs:120:17:120:23 | ...; | -| Conditions.cs:121:13:122:25 | if (...) ... | Conditions.cs:116:42:116:42 | access to local variable i | -| Conditions.cs:121:13:122:25 | if (...) ... | Conditions.cs:121:13:122:25 | if (...) ... | -| Conditions.cs:121:13:122:25 | if (...) ... | Conditions.cs:122:17:122:25 | ...; | -| Conditions.cs:122:17:122:25 | ...; | Conditions.cs:122:17:122:25 | ...; | -| Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:129:10:129:12 | enter M10 | -| Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:131:16:131:19 | true | -| Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:132:9:140:9 | {...} | -| Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:134:13:139:13 | {...} | -| Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:136:17:138:17 | {...} | -| Conditions.cs:131:16:131:19 | true | Conditions.cs:131:16:131:19 | true | -| Conditions.cs:131:16:131:19 | true | Conditions.cs:132:9:140:9 | {...} | -| Conditions.cs:131:16:131:19 | true | Conditions.cs:134:13:139:13 | {...} | -| Conditions.cs:131:16:131:19 | true | Conditions.cs:136:17:138:17 | {...} | -| Conditions.cs:132:9:140:9 | {...} | Conditions.cs:132:9:140:9 | {...} | -| Conditions.cs:132:9:140:9 | {...} | Conditions.cs:134:13:139:13 | {...} | -| Conditions.cs:132:9:140:9 | {...} | Conditions.cs:136:17:138:17 | {...} | -| Conditions.cs:134:13:139:13 | {...} | Conditions.cs:134:13:139:13 | {...} | -| Conditions.cs:134:13:139:13 | {...} | Conditions.cs:136:17:138:17 | {...} | -| Conditions.cs:136:17:138:17 | {...} | Conditions.cs:136:17:138:17 | {...} | -| Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:143:10:143:12 | enter M11 | -| Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:143:10:143:12 | exit M11 (normal) | -| Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:145:17:145:29 | ... ? ... : ... | -| Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:145:21:145:23 | "a" | -| Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:145:27:145:29 | "b" | -| Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:147:13:147:49 | ...; | -| Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:149:13:149:49 | ...; | -| Conditions.cs:143:10:143:12 | exit M11 (normal) | Conditions.cs:143:10:143:12 | exit M11 (normal) | -| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:143:10:143:12 | exit M11 (normal) | -| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:145:17:145:29 | ... ? ... : ... | -| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:147:13:147:49 | ...; | -| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:149:13:149:49 | ...; | -| Conditions.cs:145:21:145:23 | "a" | Conditions.cs:145:21:145:23 | "a" | -| Conditions.cs:145:27:145:29 | "b" | Conditions.cs:145:27:145:29 | "b" | -| Conditions.cs:147:13:147:49 | ...; | Conditions.cs:147:13:147:49 | ...; | -| Conditions.cs:149:13:149:49 | ...; | Conditions.cs:149:13:149:49 | ...; | -| ExitMethods.cs:6:7:6:17 | enter ExitMethods | ExitMethods.cs:6:7:6:17 | enter ExitMethods | -| ExitMethods.cs:8:10:8:11 | enter M1 | ExitMethods.cs:8:10:8:11 | enter M1 | -| ExitMethods.cs:14:10:14:11 | enter M2 | ExitMethods.cs:14:10:14:11 | enter M2 | -| ExitMethods.cs:20:10:20:11 | enter M3 | ExitMethods.cs:20:10:20:11 | enter M3 | -| ExitMethods.cs:26:10:26:11 | enter M4 | ExitMethods.cs:26:10:26:11 | enter M4 | -| ExitMethods.cs:32:10:32:11 | enter M5 | ExitMethods.cs:32:10:32:11 | enter M5 | -| ExitMethods.cs:38:10:38:11 | enter M6 | ExitMethods.cs:38:10:38:11 | enter M6 | -| ExitMethods.cs:38:10:38:11 | enter M6 | ExitMethods.cs:38:10:38:11 | exit M6 (normal) | -| ExitMethods.cs:38:10:38:11 | enter M6 | ExitMethods.cs:45:9:47:9 | {...} | -| ExitMethods.cs:38:10:38:11 | enter M6 | ExitMethods.cs:48:9:51:9 | catch (...) {...} | -| ExitMethods.cs:38:10:38:11 | enter M6 | ExitMethods.cs:49:9:51:9 | {...} | -| ExitMethods.cs:38:10:38:11 | exit M6 (normal) | ExitMethods.cs:38:10:38:11 | exit M6 (normal) | -| ExitMethods.cs:45:9:47:9 | {...} | ExitMethods.cs:45:9:47:9 | {...} | -| ExitMethods.cs:48:9:51:9 | catch (...) {...} | ExitMethods.cs:48:9:51:9 | catch (...) {...} | -| ExitMethods.cs:48:9:51:9 | catch (...) {...} | ExitMethods.cs:49:9:51:9 | {...} | -| ExitMethods.cs:49:9:51:9 | {...} | ExitMethods.cs:49:9:51:9 | {...} | -| ExitMethods.cs:54:10:54:11 | enter M7 | ExitMethods.cs:54:10:54:11 | enter M7 | -| ExitMethods.cs:60:10:60:11 | enter M8 | ExitMethods.cs:60:10:60:11 | enter M8 | -| ExitMethods.cs:66:17:66:26 | enter ErrorMaybe | ExitMethods.cs:66:17:66:26 | enter ErrorMaybe | -| ExitMethods.cs:66:17:66:26 | enter ErrorMaybe | ExitMethods.cs:66:17:66:26 | exit ErrorMaybe | -| ExitMethods.cs:66:17:66:26 | enter ErrorMaybe | ExitMethods.cs:66:17:66:26 | exit ErrorMaybe (normal) | -| ExitMethods.cs:66:17:66:26 | enter ErrorMaybe | ExitMethods.cs:69:19:69:33 | object creation of type Exception | -| ExitMethods.cs:66:17:66:26 | exit ErrorMaybe | ExitMethods.cs:66:17:66:26 | exit ErrorMaybe | -| ExitMethods.cs:66:17:66:26 | exit ErrorMaybe (normal) | ExitMethods.cs:66:17:66:26 | exit ErrorMaybe (normal) | -| ExitMethods.cs:69:19:69:33 | object creation of type Exception | ExitMethods.cs:69:19:69:33 | object creation of type Exception | -| ExitMethods.cs:72:17:72:27 | enter ErrorAlways | ExitMethods.cs:72:17:72:27 | enter ErrorAlways | -| ExitMethods.cs:72:17:72:27 | enter ErrorAlways | ExitMethods.cs:72:17:72:27 | exit ErrorAlways (abnormal) | -| ExitMethods.cs:72:17:72:27 | enter ErrorAlways | ExitMethods.cs:75:19:75:33 | object creation of type Exception | -| ExitMethods.cs:72:17:72:27 | enter ErrorAlways | ExitMethods.cs:77:41:77:43 | "b" | -| ExitMethods.cs:72:17:72:27 | exit ErrorAlways (abnormal) | ExitMethods.cs:72:17:72:27 | exit ErrorAlways (abnormal) | -| ExitMethods.cs:75:19:75:33 | object creation of type Exception | ExitMethods.cs:75:19:75:33 | object creation of type Exception | -| ExitMethods.cs:77:41:77:43 | "b" | ExitMethods.cs:77:41:77:43 | "b" | -| ExitMethods.cs:80:17:80:28 | enter ErrorAlways2 | ExitMethods.cs:80:17:80:28 | enter ErrorAlways2 | -| ExitMethods.cs:85:17:85:28 | enter ErrorAlways3 | ExitMethods.cs:85:17:85:28 | enter ErrorAlways3 | -| ExitMethods.cs:87:10:87:13 | enter Exit | ExitMethods.cs:87:10:87:13 | enter Exit | -| ExitMethods.cs:92:10:92:18 | enter ExitInTry | ExitMethods.cs:92:10:92:18 | enter ExitInTry | -| ExitMethods.cs:105:10:105:24 | enter ApplicationExit | ExitMethods.cs:105:10:105:24 | enter ApplicationExit | -| ExitMethods.cs:110:13:110:21 | enter ThrowExpr | ExitMethods.cs:110:13:110:21 | enter ThrowExpr | -| ExitMethods.cs:110:13:110:21 | enter ThrowExpr | ExitMethods.cs:110:13:110:21 | exit ThrowExpr | -| ExitMethods.cs:110:13:110:21 | enter ThrowExpr | ExitMethods.cs:112:29:112:29 | 1 | -| ExitMethods.cs:110:13:110:21 | enter ThrowExpr | ExitMethods.cs:112:69:112:75 | "input" | -| ExitMethods.cs:110:13:110:21 | exit ThrowExpr | ExitMethods.cs:110:13:110:21 | exit ThrowExpr | -| ExitMethods.cs:112:29:112:29 | 1 | ExitMethods.cs:112:29:112:29 | 1 | -| ExitMethods.cs:112:69:112:75 | "input" | ExitMethods.cs:112:69:112:75 | "input" | -| ExitMethods.cs:115:16:115:34 | enter ExtensionMethodCall | ExitMethods.cs:115:16:115:34 | enter ExtensionMethodCall | -| ExitMethods.cs:115:16:115:34 | enter ExtensionMethodCall | ExitMethods.cs:117:16:117:38 | ... ? ... : ... | -| ExitMethods.cs:115:16:115:34 | enter ExtensionMethodCall | ExitMethods.cs:117:34:117:34 | 0 | -| ExitMethods.cs:115:16:115:34 | enter ExtensionMethodCall | ExitMethods.cs:117:38:117:38 | 1 | -| ExitMethods.cs:117:16:117:38 | ... ? ... : ... | ExitMethods.cs:117:16:117:38 | ... ? ... : ... | -| ExitMethods.cs:117:34:117:34 | 0 | ExitMethods.cs:117:34:117:34 | 0 | -| ExitMethods.cs:117:38:117:38 | 1 | ExitMethods.cs:117:38:117:38 | 1 | -| ExitMethods.cs:120:17:120:32 | enter FailingAssertion | ExitMethods.cs:120:17:120:32 | enter FailingAssertion | -| ExitMethods.cs:126:17:126:33 | enter FailingAssertion2 | ExitMethods.cs:126:17:126:33 | enter FailingAssertion2 | -| ExitMethods.cs:132:10:132:20 | enter AssertFalse | ExitMethods.cs:132:10:132:20 | enter AssertFalse | -| ExitMethods.cs:132:10:132:20 | enter AssertFalse | ExitMethods.cs:132:10:132:20 | exit AssertFalse | -| ExitMethods.cs:132:10:132:20 | enter AssertFalse | ExitMethods.cs:132:10:132:20 | exit AssertFalse (abnormal) | -| ExitMethods.cs:132:10:132:20 | enter AssertFalse | ExitMethods.cs:132:10:132:20 | exit AssertFalse (normal) | -| ExitMethods.cs:132:10:132:20 | exit AssertFalse | ExitMethods.cs:132:10:132:20 | exit AssertFalse | -| ExitMethods.cs:132:10:132:20 | exit AssertFalse (abnormal) | ExitMethods.cs:132:10:132:20 | exit AssertFalse (abnormal) | -| ExitMethods.cs:132:10:132:20 | exit AssertFalse (normal) | ExitMethods.cs:132:10:132:20 | exit AssertFalse (normal) | -| ExitMethods.cs:134:17:134:33 | enter FailingAssertion3 | ExitMethods.cs:134:17:134:33 | enter FailingAssertion3 | -| ExitMethods.cs:140:17:140:42 | enter ExceptionDispatchInfoThrow | ExitMethods.cs:140:17:140:42 | enter ExceptionDispatchInfoThrow | -| ExitMethods.cs:140:17:140:42 | enter ExceptionDispatchInfoThrow | ExitMethods.cs:140:17:140:42 | exit ExceptionDispatchInfoThrow (abnormal) | -| ExitMethods.cs:140:17:140:42 | enter ExceptionDispatchInfoThrow | ExitMethods.cs:143:13:143:43 | ...; | -| ExitMethods.cs:140:17:140:42 | enter ExceptionDispatchInfoThrow | ExitMethods.cs:145:13:145:53 | ...; | -| ExitMethods.cs:140:17:140:42 | exit ExceptionDispatchInfoThrow (abnormal) | ExitMethods.cs:140:17:140:42 | exit ExceptionDispatchInfoThrow (abnormal) | -| ExitMethods.cs:143:13:143:43 | ...; | ExitMethods.cs:143:13:143:43 | ...; | -| ExitMethods.cs:145:13:145:53 | ...; | ExitMethods.cs:145:13:145:53 | ...; | -| Extensions.cs:5:23:5:29 | enter ToInt32 | Extensions.cs:5:23:5:29 | enter ToInt32 | -| Extensions.cs:10:24:10:29 | enter ToBool | Extensions.cs:10:24:10:29 | enter ToBool | -| Extensions.cs:15:23:15:33 | enter CallToInt32 | Extensions.cs:15:23:15:33 | enter CallToInt32 | -| Extensions.cs:20:17:20:20 | enter Main | Extensions.cs:20:17:20:20 | enter Main | -| Finally.cs:3:14:3:20 | enter Finally | Finally.cs:3:14:3:20 | enter Finally | -| Finally.cs:7:10:7:11 | enter M1 | Finally.cs:7:10:7:11 | enter M1 | -| Finally.cs:7:10:7:11 | enter M1 | Finally.cs:7:10:7:11 | exit M1 | -| Finally.cs:7:10:7:11 | enter M1 | Finally.cs:7:10:7:11 | exit M1 (abnormal) | -| Finally.cs:7:10:7:11 | enter M1 | Finally.cs:7:10:7:11 | exit M1 (normal) | -| Finally.cs:7:10:7:11 | exit M1 | Finally.cs:7:10:7:11 | exit M1 | -| Finally.cs:7:10:7:11 | exit M1 (abnormal) | Finally.cs:7:10:7:11 | exit M1 (abnormal) | -| Finally.cs:7:10:7:11 | exit M1 (normal) | Finally.cs:7:10:7:11 | exit M1 (normal) | -| Finally.cs:19:10:19:11 | enter M2 | Finally.cs:19:10:19:11 | enter M2 | -| Finally.cs:19:10:19:11 | enter M2 | Finally.cs:19:10:19:11 | exit M2 | -| Finally.cs:19:10:19:11 | enter M2 | Finally.cs:19:10:19:11 | exit M2 (abnormal) | -| Finally.cs:19:10:19:11 | enter M2 | Finally.cs:19:10:19:11 | exit M2 (normal) | -| Finally.cs:19:10:19:11 | enter M2 | Finally.cs:24:13:24:19 | return ...; | -| Finally.cs:19:10:19:11 | enter M2 | Finally.cs:26:9:29:9 | catch (...) {...} | -| Finally.cs:19:10:19:11 | enter M2 | Finally.cs:26:38:26:39 | IOException ex | -| Finally.cs:19:10:19:11 | enter M2 | Finally.cs:27:9:29:9 | {...} | -| Finally.cs:19:10:19:11 | enter M2 | Finally.cs:30:9:40:9 | catch (...) {...} | -| Finally.cs:19:10:19:11 | enter M2 | Finally.cs:30:41:30:42 | ArgumentException ex | -| Finally.cs:19:10:19:11 | enter M2 | Finally.cs:34:27:34:32 | throw ...; | -| Finally.cs:19:10:19:11 | enter M2 | Finally.cs:41:9:43:9 | catch (...) {...} | -| Finally.cs:19:10:19:11 | enter M2 | Finally.cs:42:9:43:9 | {...} | -| Finally.cs:19:10:19:11 | enter M2 | Finally.cs:44:9:47:9 | catch {...} | -| Finally.cs:19:10:19:11 | enter M2 | Finally.cs:49:9:51:9 | {...} | -| Finally.cs:19:10:19:11 | exit M2 | Finally.cs:19:10:19:11 | exit M2 | -| Finally.cs:19:10:19:11 | exit M2 (abnormal) | Finally.cs:19:10:19:11 | exit M2 (abnormal) | -| Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:19:10:19:11 | exit M2 (normal) | -| Finally.cs:24:13:24:19 | return ...; | Finally.cs:24:13:24:19 | return ...; | +| Conditions.cs:90:22:90:22 | String _ | Conditions.cs:92:13:93:20 | After if (...) ... | +| Conditions.cs:90:22:90:22 | String _ | Conditions.cs:92:17:92:17 | After access to local variable b [false] | +| Conditions.cs:90:22:90:22 | String _ | Conditions.cs:92:17:92:17 | After access to local variable b [true] | +| Conditions.cs:90:22:90:22 | String _ | Conditions.cs:94:13:95:26 | After if (...) ... | +| Conditions.cs:90:22:90:22 | String _ | Conditions.cs:94:17:94:21 | After ... > ... [false] | +| Conditions.cs:90:22:90:22 | String _ | Conditions.cs:94:17:94:21 | After ... > ... [true] | +| Conditions.cs:90:22:90:22 | String _ | Conditions.cs:96:13:97:20 | After if (...) ... | +| Conditions.cs:90:22:90:22 | String _ | Conditions.cs:96:17:96:17 | After access to local variable b [false] | +| Conditions.cs:90:22:90:22 | String _ | Conditions.cs:96:17:96:17 | After access to local variable b [true] | +| Conditions.cs:90:27:90:28 | After access to parameter ss [empty] | Conditions.cs:90:27:90:28 | After access to parameter ss [empty] | +| Conditions.cs:90:27:90:28 | After access to parameter ss [non-empty] | Conditions.cs:90:22:90:22 | String _ | +| Conditions.cs:90:27:90:28 | After access to parameter ss [non-empty] | Conditions.cs:90:27:90:28 | After access to parameter ss [non-empty] | +| Conditions.cs:90:27:90:28 | After access to parameter ss [non-empty] | Conditions.cs:92:13:93:20 | After if (...) ... | +| Conditions.cs:90:27:90:28 | After access to parameter ss [non-empty] | Conditions.cs:92:17:92:17 | After access to local variable b [false] | +| Conditions.cs:90:27:90:28 | After access to parameter ss [non-empty] | Conditions.cs:92:17:92:17 | After access to local variable b [true] | +| Conditions.cs:90:27:90:28 | After access to parameter ss [non-empty] | Conditions.cs:94:13:95:26 | After if (...) ... | +| Conditions.cs:90:27:90:28 | After access to parameter ss [non-empty] | Conditions.cs:94:17:94:21 | After ... > ... [false] | +| Conditions.cs:90:27:90:28 | After access to parameter ss [non-empty] | Conditions.cs:94:17:94:21 | After ... > ... [true] | +| Conditions.cs:90:27:90:28 | After access to parameter ss [non-empty] | Conditions.cs:96:13:97:20 | After if (...) ... | +| Conditions.cs:90:27:90:28 | After access to parameter ss [non-empty] | Conditions.cs:96:17:96:17 | After access to local variable b [false] | +| Conditions.cs:90:27:90:28 | After access to parameter ss [non-empty] | Conditions.cs:96:17:96:17 | After access to local variable b [true] | +| Conditions.cs:92:13:93:20 | After if (...) ... | Conditions.cs:92:13:93:20 | After if (...) ... | +| Conditions.cs:92:13:93:20 | After if (...) ... | Conditions.cs:94:13:95:26 | After if (...) ... | +| Conditions.cs:92:13:93:20 | After if (...) ... | Conditions.cs:94:17:94:21 | After ... > ... [false] | +| Conditions.cs:92:13:93:20 | After if (...) ... | Conditions.cs:94:17:94:21 | After ... > ... [true] | +| Conditions.cs:92:13:93:20 | After if (...) ... | Conditions.cs:96:13:97:20 | After if (...) ... | +| Conditions.cs:92:13:93:20 | After if (...) ... | Conditions.cs:96:17:96:17 | After access to local variable b [false] | +| Conditions.cs:92:13:93:20 | After if (...) ... | Conditions.cs:96:17:96:17 | After access to local variable b [true] | +| Conditions.cs:92:17:92:17 | After access to local variable b [false] | Conditions.cs:92:17:92:17 | After access to local variable b [false] | +| Conditions.cs:92:17:92:17 | After access to local variable b [true] | Conditions.cs:92:17:92:17 | After access to local variable b [true] | +| Conditions.cs:94:13:95:26 | After if (...) ... | Conditions.cs:94:13:95:26 | After if (...) ... | +| Conditions.cs:94:13:95:26 | After if (...) ... | Conditions.cs:96:13:97:20 | After if (...) ... | +| Conditions.cs:94:13:95:26 | After if (...) ... | Conditions.cs:96:17:96:17 | After access to local variable b [false] | +| Conditions.cs:94:13:95:26 | After if (...) ... | Conditions.cs:96:17:96:17 | After access to local variable b [true] | +| Conditions.cs:94:17:94:21 | After ... > ... [false] | Conditions.cs:94:17:94:21 | After ... > ... [false] | +| Conditions.cs:94:17:94:21 | After ... > ... [true] | Conditions.cs:94:17:94:21 | After ... > ... [true] | +| Conditions.cs:96:13:97:20 | After if (...) ... | Conditions.cs:96:13:97:20 | After if (...) ... | +| Conditions.cs:96:17:96:17 | After access to local variable b [false] | Conditions.cs:96:17:96:17 | After access to local variable b [false] | +| Conditions.cs:96:17:96:17 | After access to local variable b [true] | Conditions.cs:96:17:96:17 | After access to local variable b [true] | +| Conditions.cs:102:12:102:13 | Entry | Conditions.cs:102:12:102:13 | Entry | +| Conditions.cs:102:12:102:13 | Entry | Conditions.cs:105:9:106:20 | After if (...) ... | +| Conditions.cs:102:12:102:13 | Entry | Conditions.cs:105:13:105:13 | After access to parameter b [false] | +| Conditions.cs:102:12:102:13 | Entry | Conditions.cs:105:13:105:13 | After access to parameter b [true] | +| Conditions.cs:102:12:102:13 | Entry | Conditions.cs:107:9:109:24 | After if (...) ... | +| Conditions.cs:102:12:102:13 | Entry | Conditions.cs:107:13:107:24 | After ... > ... [false] | +| Conditions.cs:102:12:102:13 | Entry | Conditions.cs:107:13:107:24 | After ... > ... [true] | +| Conditions.cs:102:12:102:13 | Entry | Conditions.cs:108:13:109:24 | After if (...) ... | +| Conditions.cs:102:12:102:13 | Entry | Conditions.cs:108:18:108:18 | After access to parameter b [false] | +| Conditions.cs:102:12:102:13 | Entry | Conditions.cs:108:18:108:18 | After access to parameter b [true] | +| Conditions.cs:105:9:106:20 | After if (...) ... | Conditions.cs:105:9:106:20 | After if (...) ... | +| Conditions.cs:105:9:106:20 | After if (...) ... | Conditions.cs:107:9:109:24 | After if (...) ... | +| Conditions.cs:105:9:106:20 | After if (...) ... | Conditions.cs:107:13:107:24 | After ... > ... [false] | +| Conditions.cs:105:9:106:20 | After if (...) ... | Conditions.cs:107:13:107:24 | After ... > ... [true] | +| Conditions.cs:105:9:106:20 | After if (...) ... | Conditions.cs:108:13:109:24 | After if (...) ... | +| Conditions.cs:105:9:106:20 | After if (...) ... | Conditions.cs:108:18:108:18 | After access to parameter b [false] | +| Conditions.cs:105:9:106:20 | After if (...) ... | Conditions.cs:108:18:108:18 | After access to parameter b [true] | +| Conditions.cs:105:13:105:13 | After access to parameter b [false] | Conditions.cs:105:13:105:13 | After access to parameter b [false] | +| Conditions.cs:105:13:105:13 | After access to parameter b [true] | Conditions.cs:105:13:105:13 | After access to parameter b [true] | +| Conditions.cs:107:9:109:24 | After if (...) ... | Conditions.cs:107:9:109:24 | After if (...) ... | +| Conditions.cs:107:13:107:24 | After ... > ... [false] | Conditions.cs:107:13:107:24 | After ... > ... [false] | +| Conditions.cs:107:13:107:24 | After ... > ... [true] | Conditions.cs:107:13:107:24 | After ... > ... [true] | +| Conditions.cs:107:13:107:24 | After ... > ... [true] | Conditions.cs:108:13:109:24 | After if (...) ... | +| Conditions.cs:107:13:107:24 | After ... > ... [true] | Conditions.cs:108:18:108:18 | After access to parameter b [false] | +| Conditions.cs:107:13:107:24 | After ... > ... [true] | Conditions.cs:108:18:108:18 | After access to parameter b [true] | +| Conditions.cs:108:13:109:24 | After if (...) ... | Conditions.cs:108:13:109:24 | After if (...) ... | +| Conditions.cs:108:18:108:18 | After access to parameter b [false] | Conditions.cs:108:18:108:18 | After access to parameter b [false] | +| Conditions.cs:108:18:108:18 | After access to parameter b [true] | Conditions.cs:108:18:108:18 | After access to parameter b [true] | +| Conditions.cs:113:10:113:11 | Entry | Conditions.cs:113:10:113:11 | Entry | +| Conditions.cs:113:10:113:11 | Entry | Conditions.cs:116:25:116:39 | After ... < ... [false] | +| Conditions.cs:113:10:113:11 | Entry | Conditions.cs:116:25:116:39 | After ... < ... [true] | +| Conditions.cs:113:10:113:11 | Entry | Conditions.cs:116:25:116:39 | Before ... < ... | +| Conditions.cs:113:10:113:11 | Entry | Conditions.cs:119:13:120:23 | After if (...) ... | +| Conditions.cs:113:10:113:11 | Entry | Conditions.cs:119:18:119:21 | After access to local variable last [false] | +| Conditions.cs:113:10:113:11 | Entry | Conditions.cs:119:18:119:21 | After access to local variable last [true] | +| Conditions.cs:113:10:113:11 | Entry | Conditions.cs:121:13:122:25 | After if (...) ... | +| Conditions.cs:113:10:113:11 | Entry | Conditions.cs:121:17:121:20 | After access to local variable last [false] | +| Conditions.cs:113:10:113:11 | Entry | Conditions.cs:121:17:121:20 | After access to local variable last [true] | +| Conditions.cs:116:25:116:39 | After ... < ... [false] | Conditions.cs:116:25:116:39 | After ... < ... [false] | +| Conditions.cs:116:25:116:39 | After ... < ... [true] | Conditions.cs:116:25:116:39 | After ... < ... [true] | +| Conditions.cs:116:25:116:39 | After ... < ... [true] | Conditions.cs:119:13:120:23 | After if (...) ... | +| Conditions.cs:116:25:116:39 | After ... < ... [true] | Conditions.cs:119:18:119:21 | After access to local variable last [false] | +| Conditions.cs:116:25:116:39 | After ... < ... [true] | Conditions.cs:119:18:119:21 | After access to local variable last [true] | +| Conditions.cs:116:25:116:39 | After ... < ... [true] | Conditions.cs:121:13:122:25 | After if (...) ... | +| Conditions.cs:116:25:116:39 | After ... < ... [true] | Conditions.cs:121:17:121:20 | After access to local variable last [false] | +| Conditions.cs:116:25:116:39 | After ... < ... [true] | Conditions.cs:121:17:121:20 | After access to local variable last [true] | +| Conditions.cs:116:25:116:39 | Before ... < ... | Conditions.cs:116:25:116:39 | After ... < ... [false] | +| Conditions.cs:116:25:116:39 | Before ... < ... | Conditions.cs:116:25:116:39 | After ... < ... [true] | +| Conditions.cs:116:25:116:39 | Before ... < ... | Conditions.cs:116:25:116:39 | Before ... < ... | +| Conditions.cs:116:25:116:39 | Before ... < ... | Conditions.cs:119:13:120:23 | After if (...) ... | +| Conditions.cs:116:25:116:39 | Before ... < ... | Conditions.cs:119:18:119:21 | After access to local variable last [false] | +| Conditions.cs:116:25:116:39 | Before ... < ... | Conditions.cs:119:18:119:21 | After access to local variable last [true] | +| Conditions.cs:116:25:116:39 | Before ... < ... | Conditions.cs:121:13:122:25 | After if (...) ... | +| Conditions.cs:116:25:116:39 | Before ... < ... | Conditions.cs:121:17:121:20 | After access to local variable last [false] | +| Conditions.cs:116:25:116:39 | Before ... < ... | Conditions.cs:121:17:121:20 | After access to local variable last [true] | +| Conditions.cs:119:13:120:23 | After if (...) ... | Conditions.cs:119:13:120:23 | After if (...) ... | +| Conditions.cs:119:13:120:23 | After if (...) ... | Conditions.cs:121:13:122:25 | After if (...) ... | +| Conditions.cs:119:13:120:23 | After if (...) ... | Conditions.cs:121:17:121:20 | After access to local variable last [false] | +| Conditions.cs:119:13:120:23 | After if (...) ... | Conditions.cs:121:17:121:20 | After access to local variable last [true] | +| Conditions.cs:119:18:119:21 | After access to local variable last [false] | Conditions.cs:119:18:119:21 | After access to local variable last [false] | +| Conditions.cs:119:18:119:21 | After access to local variable last [true] | Conditions.cs:119:18:119:21 | After access to local variable last [true] | +| Conditions.cs:121:13:122:25 | After if (...) ... | Conditions.cs:121:13:122:25 | After if (...) ... | +| Conditions.cs:121:17:121:20 | After access to local variable last [false] | Conditions.cs:121:17:121:20 | After access to local variable last [false] | +| Conditions.cs:121:17:121:20 | After access to local variable last [true] | Conditions.cs:121:17:121:20 | After access to local variable last [true] | +| Conditions.cs:129:10:129:12 | Entry | Conditions.cs:129:10:129:12 | Entry | +| Conditions.cs:129:10:129:12 | Entry | Conditions.cs:131:9:140:9 | [LoopHeader] while (...) ... | +| Conditions.cs:129:10:129:12 | Entry | Conditions.cs:133:13:139:13 | After if (...) ... | +| Conditions.cs:129:10:129:12 | Entry | Conditions.cs:133:17:133:22 | After access to field Field1 [false] | +| Conditions.cs:129:10:129:12 | Entry | Conditions.cs:133:17:133:22 | After access to field Field1 [true] | +| Conditions.cs:129:10:129:12 | Entry | Conditions.cs:135:17:138:17 | After if (...) ... | +| Conditions.cs:129:10:129:12 | Entry | Conditions.cs:135:21:135:26 | After access to field Field2 [false] | +| Conditions.cs:129:10:129:12 | Entry | Conditions.cs:135:21:135:26 | After access to field Field2 [true] | +| Conditions.cs:131:9:140:9 | [LoopHeader] while (...) ... | Conditions.cs:131:9:140:9 | [LoopHeader] while (...) ... | +| Conditions.cs:131:9:140:9 | [LoopHeader] while (...) ... | Conditions.cs:133:13:139:13 | After if (...) ... | +| Conditions.cs:131:9:140:9 | [LoopHeader] while (...) ... | Conditions.cs:133:17:133:22 | After access to field Field1 [false] | +| Conditions.cs:131:9:140:9 | [LoopHeader] while (...) ... | Conditions.cs:133:17:133:22 | After access to field Field1 [true] | +| Conditions.cs:131:9:140:9 | [LoopHeader] while (...) ... | Conditions.cs:135:17:138:17 | After if (...) ... | +| Conditions.cs:131:9:140:9 | [LoopHeader] while (...) ... | Conditions.cs:135:21:135:26 | After access to field Field2 [false] | +| Conditions.cs:131:9:140:9 | [LoopHeader] while (...) ... | Conditions.cs:135:21:135:26 | After access to field Field2 [true] | +| Conditions.cs:133:13:139:13 | After if (...) ... | Conditions.cs:133:13:139:13 | After if (...) ... | +| Conditions.cs:133:17:133:22 | After access to field Field1 [false] | Conditions.cs:133:17:133:22 | After access to field Field1 [false] | +| Conditions.cs:133:17:133:22 | After access to field Field1 [true] | Conditions.cs:133:17:133:22 | After access to field Field1 [true] | +| Conditions.cs:133:17:133:22 | After access to field Field1 [true] | Conditions.cs:135:17:138:17 | After if (...) ... | +| Conditions.cs:133:17:133:22 | After access to field Field1 [true] | Conditions.cs:135:21:135:26 | After access to field Field2 [false] | +| Conditions.cs:133:17:133:22 | After access to field Field1 [true] | Conditions.cs:135:21:135:26 | After access to field Field2 [true] | +| Conditions.cs:135:17:138:17 | After if (...) ... | Conditions.cs:135:17:138:17 | After if (...) ... | +| Conditions.cs:135:21:135:26 | After access to field Field2 [false] | Conditions.cs:135:21:135:26 | After access to field Field2 [false] | +| Conditions.cs:135:21:135:26 | After access to field Field2 [true] | Conditions.cs:135:21:135:26 | After access to field Field2 [true] | +| Conditions.cs:143:10:143:12 | Entry | Conditions.cs:143:10:143:12 | Entry | +| Conditions.cs:143:10:143:12 | Entry | Conditions.cs:145:17:145:17 | After access to parameter b [false] | +| Conditions.cs:143:10:143:12 | Entry | Conditions.cs:145:17:145:17 | After access to parameter b [true] | +| Conditions.cs:143:10:143:12 | Entry | Conditions.cs:145:17:145:29 | After ... ? ... : ... | +| Conditions.cs:143:10:143:12 | Entry | Conditions.cs:146:9:149:49 | After if (...) ... | +| Conditions.cs:143:10:143:12 | Entry | Conditions.cs:146:13:146:13 | After access to parameter b [false] | +| Conditions.cs:143:10:143:12 | Entry | Conditions.cs:146:13:146:13 | After access to parameter b [true] | +| Conditions.cs:145:17:145:17 | After access to parameter b [false] | Conditions.cs:145:17:145:17 | After access to parameter b [false] | +| Conditions.cs:145:17:145:17 | After access to parameter b [true] | Conditions.cs:145:17:145:17 | After access to parameter b [true] | +| Conditions.cs:145:17:145:29 | After ... ? ... : ... | Conditions.cs:145:17:145:29 | After ... ? ... : ... | +| Conditions.cs:145:17:145:29 | After ... ? ... : ... | Conditions.cs:146:9:149:49 | After if (...) ... | +| Conditions.cs:145:17:145:29 | After ... ? ... : ... | Conditions.cs:146:13:146:13 | After access to parameter b [false] | +| Conditions.cs:145:17:145:29 | After ... ? ... : ... | Conditions.cs:146:13:146:13 | After access to parameter b [true] | +| Conditions.cs:146:9:149:49 | After if (...) ... | Conditions.cs:146:9:149:49 | After if (...) ... | +| Conditions.cs:146:13:146:13 | After access to parameter b [false] | Conditions.cs:146:13:146:13 | After access to parameter b [false] | +| Conditions.cs:146:13:146:13 | After access to parameter b [true] | Conditions.cs:146:13:146:13 | After access to parameter b [true] | +| DefaultParam.cs:1:7:1:18 | Entry | DefaultParam.cs:1:7:1:18 | Entry | +| DefaultParam.cs:3:12:3:13 | Entry | DefaultParam.cs:3:12:3:13 | Entry | +| DefaultParam.cs:3:12:3:13 | Entry | DefaultParam.cs:3:30:3:30 | After s [match] | +| DefaultParam.cs:3:12:3:13 | Entry | DefaultParam.cs:3:30:3:30 | After s [no-match] | +| DefaultParam.cs:3:12:3:13 | Entry | DefaultParam.cs:3:42:3:42 | After i [match] | +| DefaultParam.cs:3:12:3:13 | Entry | DefaultParam.cs:3:42:3:42 | After i [no-match] | +| DefaultParam.cs:3:12:3:13 | Entry | DefaultParam.cs:3:42:3:42 | i | +| DefaultParam.cs:3:12:3:13 | Entry | DefaultParam.cs:4:5:6:5 | {...} | +| DefaultParam.cs:3:30:3:30 | After s [match] | DefaultParam.cs:3:30:3:30 | After s [match] | +| DefaultParam.cs:3:30:3:30 | After s [no-match] | DefaultParam.cs:3:30:3:30 | After s [no-match] | +| DefaultParam.cs:3:42:3:42 | After i [match] | DefaultParam.cs:3:42:3:42 | After i [match] | +| DefaultParam.cs:3:42:3:42 | After i [no-match] | DefaultParam.cs:3:42:3:42 | After i [no-match] | +| DefaultParam.cs:3:42:3:42 | i | DefaultParam.cs:3:42:3:42 | After i [match] | +| DefaultParam.cs:3:42:3:42 | i | DefaultParam.cs:3:42:3:42 | After i [no-match] | +| DefaultParam.cs:3:42:3:42 | i | DefaultParam.cs:3:42:3:42 | i | +| DefaultParam.cs:3:42:3:42 | i | DefaultParam.cs:4:5:6:5 | {...} | +| DefaultParam.cs:4:5:6:5 | {...} | DefaultParam.cs:4:5:6:5 | {...} | +| ExitMethods.cs:6:7:6:17 | Entry | ExitMethods.cs:6:7:6:17 | Entry | +| ExitMethods.cs:8:10:8:11 | Entry | ExitMethods.cs:8:10:8:11 | Entry | +| ExitMethods.cs:14:10:14:11 | Entry | ExitMethods.cs:14:10:14:11 | Entry | +| ExitMethods.cs:20:10:20:11 | Entry | ExitMethods.cs:20:10:20:11 | Entry | +| ExitMethods.cs:26:10:26:11 | Entry | ExitMethods.cs:26:10:26:11 | Entry | +| ExitMethods.cs:32:10:32:11 | Entry | ExitMethods.cs:32:10:32:11 | Entry | +| ExitMethods.cs:38:10:38:11 | Entry | ExitMethods.cs:38:10:38:11 | Entry | +| ExitMethods.cs:38:10:38:11 | Entry | ExitMethods.cs:38:10:38:11 | Exit | +| ExitMethods.cs:38:10:38:11 | Entry | ExitMethods.cs:38:10:38:11 | Normal Exit | +| ExitMethods.cs:38:10:38:11 | Entry | ExitMethods.cs:44:9:47:9 | After catch (...) {...} [match] | +| ExitMethods.cs:38:10:38:11 | Entry | ExitMethods.cs:44:9:47:9 | After catch (...) {...} [no-match] | +| ExitMethods.cs:38:10:38:11 | Entry | ExitMethods.cs:48:9:51:9 | After catch (...) {...} [match] | +| ExitMethods.cs:38:10:38:11 | Entry | ExitMethods.cs:48:9:51:9 | After catch (...) {...} [no-match] | +| ExitMethods.cs:38:10:38:11 | Exit | ExitMethods.cs:38:10:38:11 | Exit | +| ExitMethods.cs:38:10:38:11 | Normal Exit | ExitMethods.cs:38:10:38:11 | Normal Exit | +| ExitMethods.cs:44:9:47:9 | After catch (...) {...} [match] | ExitMethods.cs:44:9:47:9 | After catch (...) {...} [match] | +| ExitMethods.cs:44:9:47:9 | After catch (...) {...} [no-match] | ExitMethods.cs:44:9:47:9 | After catch (...) {...} [no-match] | +| ExitMethods.cs:44:9:47:9 | After catch (...) {...} [no-match] | ExitMethods.cs:48:9:51:9 | After catch (...) {...} [match] | +| ExitMethods.cs:44:9:47:9 | After catch (...) {...} [no-match] | ExitMethods.cs:48:9:51:9 | After catch (...) {...} [no-match] | +| ExitMethods.cs:48:9:51:9 | After catch (...) {...} [match] | ExitMethods.cs:48:9:51:9 | After catch (...) {...} [match] | +| ExitMethods.cs:48:9:51:9 | After catch (...) {...} [no-match] | ExitMethods.cs:48:9:51:9 | After catch (...) {...} [no-match] | +| ExitMethods.cs:54:10:54:11 | Entry | ExitMethods.cs:54:10:54:11 | Entry | +| ExitMethods.cs:60:10:60:11 | Entry | ExitMethods.cs:60:10:60:11 | Entry | +| ExitMethods.cs:66:17:66:26 | Entry | ExitMethods.cs:66:17:66:26 | Entry | +| ExitMethods.cs:66:17:66:26 | Entry | ExitMethods.cs:66:17:66:26 | Exit | +| ExitMethods.cs:66:17:66:26 | Entry | ExitMethods.cs:68:13:68:13 | After access to parameter b [false] | +| ExitMethods.cs:66:17:66:26 | Entry | ExitMethods.cs:68:13:68:13 | After access to parameter b [true] | +| ExitMethods.cs:66:17:66:26 | Exit | ExitMethods.cs:66:17:66:26 | Exit | +| ExitMethods.cs:68:13:68:13 | After access to parameter b [false] | ExitMethods.cs:68:13:68:13 | After access to parameter b [false] | +| ExitMethods.cs:68:13:68:13 | After access to parameter b [true] | ExitMethods.cs:68:13:68:13 | After access to parameter b [true] | +| ExitMethods.cs:72:17:72:27 | Entry | ExitMethods.cs:72:17:72:27 | Entry | +| ExitMethods.cs:72:17:72:27 | Entry | ExitMethods.cs:72:17:72:27 | Exceptional Exit | +| ExitMethods.cs:72:17:72:27 | Entry | ExitMethods.cs:74:13:74:13 | After access to parameter b [false] | +| ExitMethods.cs:72:17:72:27 | Entry | ExitMethods.cs:74:13:74:13 | After access to parameter b [true] | +| ExitMethods.cs:72:17:72:27 | Exceptional Exit | ExitMethods.cs:72:17:72:27 | Exceptional Exit | +| ExitMethods.cs:74:13:74:13 | After access to parameter b [false] | ExitMethods.cs:74:13:74:13 | After access to parameter b [false] | +| ExitMethods.cs:74:13:74:13 | After access to parameter b [true] | ExitMethods.cs:74:13:74:13 | After access to parameter b [true] | +| ExitMethods.cs:80:17:80:28 | Entry | ExitMethods.cs:80:17:80:28 | Entry | +| ExitMethods.cs:85:17:85:28 | Entry | ExitMethods.cs:85:17:85:28 | Entry | +| ExitMethods.cs:87:10:87:13 | Entry | ExitMethods.cs:87:10:87:13 | Entry | +| ExitMethods.cs:92:10:92:18 | Entry | ExitMethods.cs:92:10:92:18 | Entry | +| ExitMethods.cs:92:10:92:18 | Entry | ExitMethods.cs:92:10:92:18 | Exceptional Exit | +| ExitMethods.cs:92:10:92:18 | Entry | ExitMethods.cs:92:10:92:18 | Exit | +| ExitMethods.cs:92:10:92:18 | Entry | ExitMethods.cs:94:9:102:9 | After try {...} ... | +| ExitMethods.cs:92:10:92:18 | Exceptional Exit | ExitMethods.cs:92:10:92:18 | Exceptional Exit | +| ExitMethods.cs:92:10:92:18 | Exit | ExitMethods.cs:92:10:92:18 | Exit | +| ExitMethods.cs:94:9:102:9 | After try {...} ... | ExitMethods.cs:94:9:102:9 | After try {...} ... | +| ExitMethods.cs:105:10:105:24 | Entry | ExitMethods.cs:105:10:105:24 | Entry | +| ExitMethods.cs:110:13:110:21 | Entry | ExitMethods.cs:110:13:110:21 | Entry | +| ExitMethods.cs:110:13:110:21 | Entry | ExitMethods.cs:110:13:110:21 | Exit | +| ExitMethods.cs:110:13:110:21 | Entry | ExitMethods.cs:112:16:112:25 | After ... != ... [false] | +| ExitMethods.cs:110:13:110:21 | Entry | ExitMethods.cs:112:16:112:25 | After ... != ... [true] | +| ExitMethods.cs:110:13:110:21 | Exit | ExitMethods.cs:110:13:110:21 | Exit | +| ExitMethods.cs:112:16:112:25 | After ... != ... [false] | ExitMethods.cs:112:16:112:25 | After ... != ... [false] | +| ExitMethods.cs:112:16:112:25 | After ... != ... [true] | ExitMethods.cs:112:16:112:25 | After ... != ... [true] | +| ExitMethods.cs:115:16:115:34 | Entry | ExitMethods.cs:115:16:115:34 | Entry | +| ExitMethods.cs:115:16:115:34 | Entry | ExitMethods.cs:117:16:117:30 | After call to method Contains [false] | +| ExitMethods.cs:115:16:115:34 | Entry | ExitMethods.cs:117:16:117:30 | After call to method Contains [true] | +| ExitMethods.cs:115:16:115:34 | Entry | ExitMethods.cs:117:16:117:38 | After ... ? ... : ... | +| ExitMethods.cs:117:16:117:30 | After call to method Contains [false] | ExitMethods.cs:117:16:117:30 | After call to method Contains [false] | +| ExitMethods.cs:117:16:117:30 | After call to method Contains [true] | ExitMethods.cs:117:16:117:30 | After call to method Contains [true] | +| ExitMethods.cs:117:16:117:38 | After ... ? ... : ... | ExitMethods.cs:117:16:117:38 | After ... ? ... : ... | +| ExitMethods.cs:120:17:120:32 | Entry | ExitMethods.cs:120:17:120:32 | Entry | +| ExitMethods.cs:126:17:126:33 | Entry | ExitMethods.cs:126:17:126:33 | Entry | +| ExitMethods.cs:132:10:132:20 | Entry | ExitMethods.cs:132:10:132:20 | Entry | +| ExitMethods.cs:132:10:132:20 | Entry | ExitMethods.cs:132:10:132:20 | Exceptional Exit | +| ExitMethods.cs:132:10:132:20 | Entry | ExitMethods.cs:132:10:132:20 | Exit | +| ExitMethods.cs:132:10:132:20 | Entry | ExitMethods.cs:132:33:132:49 | After call to method IsFalse | +| ExitMethods.cs:132:10:132:20 | Exceptional Exit | ExitMethods.cs:132:10:132:20 | Exceptional Exit | +| ExitMethods.cs:132:10:132:20 | Exit | ExitMethods.cs:132:10:132:20 | Exit | +| ExitMethods.cs:132:33:132:49 | After call to method IsFalse | ExitMethods.cs:132:33:132:49 | After call to method IsFalse | +| ExitMethods.cs:134:17:134:33 | Entry | ExitMethods.cs:134:17:134:33 | Entry | +| ExitMethods.cs:140:17:140:42 | Entry | ExitMethods.cs:140:17:140:42 | Entry | +| ExitMethods.cs:140:17:140:42 | Entry | ExitMethods.cs:140:17:140:42 | Exceptional Exit | +| ExitMethods.cs:140:17:140:42 | Entry | ExitMethods.cs:142:13:142:13 | After access to parameter b [false] | +| ExitMethods.cs:140:17:140:42 | Entry | ExitMethods.cs:142:13:142:13 | After access to parameter b [true] | +| ExitMethods.cs:140:17:140:42 | Exceptional Exit | ExitMethods.cs:140:17:140:42 | Exceptional Exit | +| ExitMethods.cs:142:13:142:13 | After access to parameter b [false] | ExitMethods.cs:142:13:142:13 | After access to parameter b [false] | +| ExitMethods.cs:142:13:142:13 | After access to parameter b [true] | ExitMethods.cs:142:13:142:13 | After access to parameter b [true] | +| Extensions.cs:5:23:5:29 | Entry | Extensions.cs:5:23:5:29 | Entry | +| Extensions.cs:10:24:10:29 | Entry | Extensions.cs:10:24:10:29 | Entry | +| Extensions.cs:15:23:15:33 | Entry | Extensions.cs:15:23:15:33 | Entry | +| Extensions.cs:20:17:20:20 | Entry | Extensions.cs:20:17:20:20 | Entry | +| Finally.cs:3:14:3:20 | Entry | Finally.cs:3:14:3:20 | Entry | +| Finally.cs:7:10:7:11 | Entry | Finally.cs:7:10:7:11 | Entry | +| Finally.cs:7:10:7:11 | Entry | Finally.cs:7:10:7:11 | Exceptional Exit | +| Finally.cs:7:10:7:11 | Entry | Finally.cs:7:10:7:11 | Exit | +| Finally.cs:7:10:7:11 | Entry | Finally.cs:9:9:16:9 | After try {...} ... | +| Finally.cs:7:10:7:11 | Entry | Finally.cs:11:13:11:37 | After call to method WriteLine | +| Finally.cs:7:10:7:11 | Entry | Finally.cs:14:9:16:9 | {...} | +| Finally.cs:7:10:7:11 | Exceptional Exit | Finally.cs:7:10:7:11 | Exceptional Exit | +| Finally.cs:7:10:7:11 | Exit | Finally.cs:7:10:7:11 | Exit | +| Finally.cs:9:9:16:9 | After try {...} ... | Finally.cs:9:9:16:9 | After try {...} ... | +| Finally.cs:11:13:11:37 | After call to method WriteLine | Finally.cs:11:13:11:37 | After call to method WriteLine | +| Finally.cs:14:9:16:9 | {...} | Finally.cs:7:10:7:11 | Exceptional Exit | +| Finally.cs:14:9:16:9 | {...} | Finally.cs:7:10:7:11 | Exit | +| Finally.cs:14:9:16:9 | {...} | Finally.cs:9:9:16:9 | After try {...} ... | +| Finally.cs:14:9:16:9 | {...} | Finally.cs:14:9:16:9 | {...} | +| Finally.cs:19:10:19:11 | Entry | Finally.cs:19:10:19:11 | Entry | +| Finally.cs:19:10:19:11 | Entry | Finally.cs:19:10:19:11 | Exceptional Exit | +| Finally.cs:19:10:19:11 | Entry | Finally.cs:19:10:19:11 | Exit | +| Finally.cs:19:10:19:11 | Entry | Finally.cs:19:10:19:11 | Normal Exit | +| Finally.cs:19:10:19:11 | Entry | Finally.cs:21:9:51:9 | After try {...} ... | +| Finally.cs:19:10:19:11 | Entry | Finally.cs:23:13:23:37 | After call to method WriteLine | +| Finally.cs:19:10:19:11 | Entry | Finally.cs:26:9:29:9 | After catch (...) {...} [match] | +| Finally.cs:19:10:19:11 | Entry | Finally.cs:26:9:29:9 | After catch (...) {...} [no-match] | +| Finally.cs:19:10:19:11 | Entry | Finally.cs:26:9:29:9 | catch (...) {...} | +| Finally.cs:19:10:19:11 | Entry | Finally.cs:30:9:40:9 | After catch (...) {...} [match] | +| Finally.cs:19:10:19:11 | Entry | Finally.cs:30:9:40:9 | After catch (...) {...} [no-match] | +| Finally.cs:19:10:19:11 | Entry | Finally.cs:41:9:43:9 | After catch (...) {...} [match] | +| Finally.cs:19:10:19:11 | Entry | Finally.cs:41:9:43:9 | After catch (...) {...} [no-match] | +| Finally.cs:19:10:19:11 | Entry | Finally.cs:49:9:51:9 | {...} | +| Finally.cs:19:10:19:11 | Exceptional Exit | Finally.cs:19:10:19:11 | Exceptional Exit | +| Finally.cs:19:10:19:11 | Exit | Finally.cs:19:10:19:11 | Exit | +| Finally.cs:19:10:19:11 | Normal Exit | Finally.cs:19:10:19:11 | Normal Exit | +| Finally.cs:21:9:51:9 | After try {...} ... | Finally.cs:21:9:51:9 | After try {...} ... | +| Finally.cs:23:13:23:37 | After call to method WriteLine | Finally.cs:23:13:23:37 | After call to method WriteLine | +| Finally.cs:26:9:29:9 | After catch (...) {...} [match] | Finally.cs:26:9:29:9 | After catch (...) {...} [match] | +| Finally.cs:26:9:29:9 | After catch (...) {...} [no-match] | Finally.cs:26:9:29:9 | After catch (...) {...} [no-match] | +| Finally.cs:26:9:29:9 | After catch (...) {...} [no-match] | Finally.cs:30:9:40:9 | After catch (...) {...} [match] | +| Finally.cs:26:9:29:9 | After catch (...) {...} [no-match] | Finally.cs:30:9:40:9 | After catch (...) {...} [no-match] | +| Finally.cs:26:9:29:9 | After catch (...) {...} [no-match] | Finally.cs:41:9:43:9 | After catch (...) {...} [match] | +| Finally.cs:26:9:29:9 | After catch (...) {...} [no-match] | Finally.cs:41:9:43:9 | After catch (...) {...} [no-match] | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:26:9:29:9 | After catch (...) {...} [match] | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:26:9:29:9 | After catch (...) {...} [no-match] | | Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:26:9:29:9 | catch (...) {...} | -| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:26:38:26:39 | IOException ex | -| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:27:9:29:9 | {...} | -| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:30:9:40:9 | catch (...) {...} | -| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:30:41:30:42 | ArgumentException ex | -| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:34:27:34:32 | throw ...; | -| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:41:9:43:9 | catch (...) {...} | -| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:42:9:43:9 | {...} | -| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:44:9:47:9 | catch {...} | -| Finally.cs:26:38:26:39 | IOException ex | Finally.cs:26:38:26:39 | IOException ex | -| Finally.cs:26:38:26:39 | IOException ex | Finally.cs:27:9:29:9 | {...} | -| Finally.cs:27:9:29:9 | {...} | Finally.cs:27:9:29:9 | {...} | -| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:30:9:40:9 | catch (...) {...} | -| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:30:41:30:42 | ArgumentException ex | -| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:34:27:34:32 | throw ...; | -| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:41:9:43:9 | catch (...) {...} | -| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:42:9:43:9 | {...} | -| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:44:9:47:9 | catch {...} | -| Finally.cs:30:41:30:42 | ArgumentException ex | Finally.cs:30:41:30:42 | ArgumentException ex | -| Finally.cs:30:41:30:42 | ArgumentException ex | Finally.cs:34:27:34:32 | throw ...; | -| Finally.cs:34:27:34:32 | throw ...; | Finally.cs:34:27:34:32 | throw ...; | -| Finally.cs:41:9:43:9 | catch (...) {...} | Finally.cs:41:9:43:9 | catch (...) {...} | -| Finally.cs:41:9:43:9 | catch (...) {...} | Finally.cs:42:9:43:9 | {...} | -| Finally.cs:41:9:43:9 | catch (...) {...} | Finally.cs:44:9:47:9 | catch {...} | -| Finally.cs:42:9:43:9 | {...} | Finally.cs:42:9:43:9 | {...} | -| Finally.cs:44:9:47:9 | catch {...} | Finally.cs:44:9:47:9 | catch {...} | -| Finally.cs:49:9:51:9 | {...} | Finally.cs:19:10:19:11 | exit M2 | -| Finally.cs:49:9:51:9 | {...} | Finally.cs:19:10:19:11 | exit M2 (abnormal) | -| Finally.cs:49:9:51:9 | {...} | Finally.cs:19:10:19:11 | exit M2 (normal) | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:30:9:40:9 | After catch (...) {...} [match] | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:30:9:40:9 | After catch (...) {...} [no-match] | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:41:9:43:9 | After catch (...) {...} [match] | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:41:9:43:9 | After catch (...) {...} [no-match] | +| Finally.cs:30:9:40:9 | After catch (...) {...} [match] | Finally.cs:30:9:40:9 | After catch (...) {...} [match] | +| Finally.cs:30:9:40:9 | After catch (...) {...} [no-match] | Finally.cs:30:9:40:9 | After catch (...) {...} [no-match] | +| Finally.cs:30:9:40:9 | After catch (...) {...} [no-match] | Finally.cs:41:9:43:9 | After catch (...) {...} [match] | +| Finally.cs:30:9:40:9 | After catch (...) {...} [no-match] | Finally.cs:41:9:43:9 | After catch (...) {...} [no-match] | +| Finally.cs:41:9:43:9 | After catch (...) {...} [match] | Finally.cs:41:9:43:9 | After catch (...) {...} [match] | +| Finally.cs:41:9:43:9 | After catch (...) {...} [no-match] | Finally.cs:41:9:43:9 | After catch (...) {...} [no-match] | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:19:10:19:11 | Exceptional Exit | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:19:10:19:11 | Exit | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:19:10:19:11 | Normal Exit | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:21:9:51:9 | After try {...} ... | | Finally.cs:49:9:51:9 | {...} | Finally.cs:49:9:51:9 | {...} | -| Finally.cs:54:10:54:11 | enter M3 | Finally.cs:54:10:54:11 | enter M3 | -| Finally.cs:54:10:54:11 | enter M3 | Finally.cs:54:10:54:11 | exit M3 | -| Finally.cs:54:10:54:11 | enter M3 | Finally.cs:54:10:54:11 | exit M3 (abnormal) | -| Finally.cs:54:10:54:11 | enter M3 | Finally.cs:54:10:54:11 | exit M3 (normal) | -| Finally.cs:54:10:54:11 | enter M3 | Finally.cs:59:13:59:19 | return ...; | -| Finally.cs:54:10:54:11 | enter M3 | Finally.cs:61:9:64:9 | catch (...) {...} | -| Finally.cs:54:10:54:11 | enter M3 | Finally.cs:61:38:61:39 | IOException ex | -| Finally.cs:54:10:54:11 | enter M3 | Finally.cs:62:9:64:9 | {...} | -| Finally.cs:54:10:54:11 | enter M3 | Finally.cs:65:9:67:9 | catch (...) {...} | -| Finally.cs:54:10:54:11 | enter M3 | Finally.cs:65:26:65:26 | Exception e | -| Finally.cs:54:10:54:11 | enter M3 | Finally.cs:66:9:67:9 | {...} | -| Finally.cs:54:10:54:11 | enter M3 | Finally.cs:69:9:71:9 | {...} | -| Finally.cs:54:10:54:11 | exit M3 | Finally.cs:54:10:54:11 | exit M3 | -| Finally.cs:54:10:54:11 | exit M3 (abnormal) | Finally.cs:54:10:54:11 | exit M3 (abnormal) | -| Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:54:10:54:11 | exit M3 (normal) | -| Finally.cs:59:13:59:19 | return ...; | Finally.cs:59:13:59:19 | return ...; | +| Finally.cs:54:10:54:11 | Entry | Finally.cs:54:10:54:11 | Entry | +| Finally.cs:54:10:54:11 | Entry | Finally.cs:54:10:54:11 | Exceptional Exit | +| Finally.cs:54:10:54:11 | Entry | Finally.cs:54:10:54:11 | Exit | +| Finally.cs:54:10:54:11 | Entry | Finally.cs:54:10:54:11 | Normal Exit | +| Finally.cs:54:10:54:11 | Entry | Finally.cs:56:9:71:9 | After try {...} ... | +| Finally.cs:54:10:54:11 | Entry | Finally.cs:58:13:58:37 | After call to method WriteLine | +| Finally.cs:54:10:54:11 | Entry | Finally.cs:61:9:64:9 | After catch (...) {...} [match] | +| Finally.cs:54:10:54:11 | Entry | Finally.cs:61:9:64:9 | After catch (...) {...} [no-match] | +| Finally.cs:54:10:54:11 | Entry | Finally.cs:61:9:64:9 | catch (...) {...} | +| Finally.cs:54:10:54:11 | Entry | Finally.cs:65:9:67:9 | After catch (...) {...} [match] | +| Finally.cs:54:10:54:11 | Entry | Finally.cs:65:9:67:9 | After catch (...) {...} [no-match] | +| Finally.cs:54:10:54:11 | Entry | Finally.cs:65:35:65:51 | After ... != ... [false] | +| Finally.cs:54:10:54:11 | Entry | Finally.cs:65:35:65:51 | After ... != ... [true] | +| Finally.cs:54:10:54:11 | Entry | Finally.cs:69:9:71:9 | {...} | +| Finally.cs:54:10:54:11 | Exceptional Exit | Finally.cs:54:10:54:11 | Exceptional Exit | +| Finally.cs:54:10:54:11 | Exit | Finally.cs:54:10:54:11 | Exit | +| Finally.cs:54:10:54:11 | Normal Exit | Finally.cs:54:10:54:11 | Normal Exit | +| Finally.cs:56:9:71:9 | After try {...} ... | Finally.cs:56:9:71:9 | After try {...} ... | +| Finally.cs:58:13:58:37 | After call to method WriteLine | Finally.cs:58:13:58:37 | After call to method WriteLine | +| Finally.cs:61:9:64:9 | After catch (...) {...} [match] | Finally.cs:61:9:64:9 | After catch (...) {...} [match] | +| Finally.cs:61:9:64:9 | After catch (...) {...} [no-match] | Finally.cs:61:9:64:9 | After catch (...) {...} [no-match] | +| Finally.cs:61:9:64:9 | After catch (...) {...} [no-match] | Finally.cs:65:9:67:9 | After catch (...) {...} [match] | +| Finally.cs:61:9:64:9 | After catch (...) {...} [no-match] | Finally.cs:65:9:67:9 | After catch (...) {...} [no-match] | +| Finally.cs:61:9:64:9 | After catch (...) {...} [no-match] | Finally.cs:65:35:65:51 | After ... != ... [false] | +| Finally.cs:61:9:64:9 | After catch (...) {...} [no-match] | Finally.cs:65:35:65:51 | After ... != ... [true] | +| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:61:9:64:9 | After catch (...) {...} [match] | +| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:61:9:64:9 | After catch (...) {...} [no-match] | | Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:61:9:64:9 | catch (...) {...} | -| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:61:38:61:39 | IOException ex | -| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:62:9:64:9 | {...} | -| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:65:9:67:9 | catch (...) {...} | -| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:65:26:65:26 | Exception e | -| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:66:9:67:9 | {...} | -| Finally.cs:61:38:61:39 | IOException ex | Finally.cs:61:38:61:39 | IOException ex | -| Finally.cs:61:38:61:39 | IOException ex | Finally.cs:62:9:64:9 | {...} | -| Finally.cs:62:9:64:9 | {...} | Finally.cs:62:9:64:9 | {...} | -| Finally.cs:65:9:67:9 | catch (...) {...} | Finally.cs:65:9:67:9 | catch (...) {...} | -| Finally.cs:65:9:67:9 | catch (...) {...} | Finally.cs:65:26:65:26 | Exception e | -| Finally.cs:65:9:67:9 | catch (...) {...} | Finally.cs:66:9:67:9 | {...} | -| Finally.cs:65:26:65:26 | Exception e | Finally.cs:65:26:65:26 | Exception e | -| Finally.cs:65:26:65:26 | Exception e | Finally.cs:66:9:67:9 | {...} | -| Finally.cs:66:9:67:9 | {...} | Finally.cs:66:9:67:9 | {...} | -| Finally.cs:69:9:71:9 | {...} | Finally.cs:54:10:54:11 | exit M3 | -| Finally.cs:69:9:71:9 | {...} | Finally.cs:54:10:54:11 | exit M3 (abnormal) | -| Finally.cs:69:9:71:9 | {...} | Finally.cs:54:10:54:11 | exit M3 (normal) | +| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:65:9:67:9 | After catch (...) {...} [match] | +| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:65:9:67:9 | After catch (...) {...} [no-match] | +| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:65:35:65:51 | After ... != ... [false] | +| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:65:35:65:51 | After ... != ... [true] | +| Finally.cs:65:9:67:9 | After catch (...) {...} [match] | Finally.cs:65:9:67:9 | After catch (...) {...} [match] | +| Finally.cs:65:9:67:9 | After catch (...) {...} [match] | Finally.cs:65:35:65:51 | After ... != ... [false] | +| Finally.cs:65:9:67:9 | After catch (...) {...} [match] | Finally.cs:65:35:65:51 | After ... != ... [true] | +| Finally.cs:65:9:67:9 | After catch (...) {...} [no-match] | Finally.cs:65:9:67:9 | After catch (...) {...} [no-match] | +| Finally.cs:65:35:65:51 | After ... != ... [false] | Finally.cs:65:35:65:51 | After ... != ... [false] | +| Finally.cs:65:35:65:51 | After ... != ... [true] | Finally.cs:65:35:65:51 | After ... != ... [true] | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:54:10:54:11 | Exceptional Exit | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:54:10:54:11 | Exit | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:54:10:54:11 | Normal Exit | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:56:9:71:9 | After try {...} ... | | Finally.cs:69:9:71:9 | {...} | Finally.cs:69:9:71:9 | {...} | -| Finally.cs:74:10:74:11 | enter M4 | Finally.cs:74:10:74:11 | enter M4 | -| Finally.cs:74:10:74:11 | enter M4 | Finally.cs:74:10:74:11 | exit M4 | -| Finally.cs:74:10:74:11 | enter M4 | Finally.cs:74:10:74:11 | exit M4 (abnormal) | -| Finally.cs:74:10:74:11 | enter M4 | Finally.cs:74:10:74:11 | exit M4 (normal) | -| Finally.cs:74:10:74:11 | enter M4 | Finally.cs:77:16:77:16 | access to local variable i | -| Finally.cs:74:10:74:11 | enter M4 | Finally.cs:78:9:100:9 | {...} | -| Finally.cs:74:10:74:11 | enter M4 | Finally.cs:82:21:82:27 | return ...; | -| Finally.cs:74:10:74:11 | enter M4 | Finally.cs:83:17:84:29 | if (...) ... | -| Finally.cs:74:10:74:11 | enter M4 | Finally.cs:84:21:84:29 | continue; | -| Finally.cs:74:10:74:11 | enter M4 | Finally.cs:85:17:86:26 | if (...) ... | -| Finally.cs:74:10:74:11 | enter M4 | Finally.cs:86:21:86:26 | break; | -| Finally.cs:74:10:74:11 | enter M4 | Finally.cs:89:13:99:13 | {...} | -| Finally.cs:74:10:74:11 | enter M4 | Finally.cs:93:25:93:46 | throw ...; | -| Finally.cs:74:10:74:11 | enter M4 | Finally.cs:93:31:93:45 | object creation of type Exception | -| Finally.cs:74:10:74:11 | enter M4 | Finally.cs:96:17:98:17 | {...} | -| Finally.cs:74:10:74:11 | exit M4 | Finally.cs:74:10:74:11 | exit M4 | -| Finally.cs:74:10:74:11 | exit M4 (abnormal) | Finally.cs:74:10:74:11 | exit M4 (abnormal) | -| Finally.cs:74:10:74:11 | exit M4 (normal) | Finally.cs:74:10:74:11 | exit M4 (normal) | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:74:10:74:11 | exit M4 | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:74:10:74:11 | exit M4 (abnormal) | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:74:10:74:11 | exit M4 (normal) | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:77:16:77:16 | access to local variable i | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:78:9:100:9 | {...} | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:82:21:82:27 | return ...; | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:83:17:84:29 | if (...) ... | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:84:21:84:29 | continue; | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:85:17:86:26 | if (...) ... | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:86:21:86:26 | break; | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:89:13:99:13 | {...} | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:93:25:93:46 | throw ...; | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:93:31:93:45 | object creation of type Exception | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:96:17:98:17 | {...} | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:74:10:74:11 | exit M4 (abnormal) | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:78:9:100:9 | {...} | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:82:21:82:27 | return ...; | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:83:17:84:29 | if (...) ... | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:84:21:84:29 | continue; | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:85:17:86:26 | if (...) ... | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:86:21:86:26 | break; | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:89:13:99:13 | {...} | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:93:25:93:46 | throw ...; | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:93:31:93:45 | object creation of type Exception | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:96:17:98:17 | {...} | -| Finally.cs:82:21:82:27 | return ...; | Finally.cs:82:21:82:27 | return ...; | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:83:17:84:29 | if (...) ... | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:84:21:84:29 | continue; | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:85:17:86:26 | if (...) ... | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:86:21:86:26 | break; | -| Finally.cs:84:21:84:29 | continue; | Finally.cs:84:21:84:29 | continue; | -| Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:85:17:86:26 | if (...) ... | -| Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:86:21:86:26 | break; | -| Finally.cs:86:21:86:26 | break; | Finally.cs:86:21:86:26 | break; | -| Finally.cs:89:13:99:13 | {...} | Finally.cs:74:10:74:11 | exit M4 (abnormal) | +| Finally.cs:74:10:74:11 | Entry | Finally.cs:74:10:74:11 | Entry | +| Finally.cs:74:10:74:11 | Entry | Finally.cs:74:10:74:11 | Exceptional Exit | +| Finally.cs:74:10:74:11 | Entry | Finally.cs:74:10:74:11 | Exit | +| Finally.cs:74:10:74:11 | Entry | Finally.cs:74:10:74:11 | Normal Exit | +| Finally.cs:74:10:74:11 | Entry | Finally.cs:77:9:100:9 | After while (...) ... | +| Finally.cs:74:10:74:11 | Entry | Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | +| Finally.cs:74:10:74:11 | Entry | Finally.cs:77:16:77:20 | After ... > ... [false] | +| Finally.cs:74:10:74:11 | Entry | Finally.cs:77:16:77:20 | After ... > ... [true] | +| Finally.cs:74:10:74:11 | Entry | Finally.cs:79:13:99:13 | After try {...} ... | +| Finally.cs:74:10:74:11 | Entry | Finally.cs:81:21:81:26 | After ... == ... [false] | +| Finally.cs:74:10:74:11 | Entry | Finally.cs:81:21:81:26 | After ... == ... [true] | +| Finally.cs:74:10:74:11 | Entry | Finally.cs:83:21:83:26 | After ... == ... [false] | +| Finally.cs:74:10:74:11 | Entry | Finally.cs:83:21:83:26 | After ... == ... [true] | +| Finally.cs:74:10:74:11 | Entry | Finally.cs:85:21:85:26 | After ... == ... [false] | +| Finally.cs:74:10:74:11 | Entry | Finally.cs:85:21:85:26 | After ... == ... [true] | +| Finally.cs:74:10:74:11 | Entry | Finally.cs:89:13:99:13 | {...} | +| Finally.cs:74:10:74:11 | Entry | Finally.cs:90:17:98:17 | After try {...} ... | +| Finally.cs:74:10:74:11 | Entry | Finally.cs:92:25:92:30 | After ... == ... [false] | +| Finally.cs:74:10:74:11 | Entry | Finally.cs:92:25:92:30 | After ... == ... [true] | +| Finally.cs:74:10:74:11 | Entry | Finally.cs:93:31:93:45 | After object creation of type Exception | +| Finally.cs:74:10:74:11 | Entry | Finally.cs:96:17:98:17 | {...} | +| Finally.cs:74:10:74:11 | Exceptional Exit | Finally.cs:74:10:74:11 | Exceptional Exit | +| Finally.cs:74:10:74:11 | Exit | Finally.cs:74:10:74:11 | Exit | +| Finally.cs:74:10:74:11 | Normal Exit | Finally.cs:74:10:74:11 | Normal Exit | +| Finally.cs:77:9:100:9 | After while (...) ... | Finally.cs:77:9:100:9 | After while (...) ... | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:74:10:74:11 | Exceptional Exit | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:74:10:74:11 | Exit | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:74:10:74:11 | Normal Exit | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:77:9:100:9 | After while (...) ... | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:77:16:77:20 | After ... > ... [false] | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:77:16:77:20 | After ... > ... [true] | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:79:13:99:13 | After try {...} ... | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:81:21:81:26 | After ... == ... [false] | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:81:21:81:26 | After ... == ... [true] | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:83:21:83:26 | After ... == ... [false] | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:83:21:83:26 | After ... == ... [true] | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:85:21:85:26 | After ... == ... [false] | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:85:21:85:26 | After ... == ... [true] | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:89:13:99:13 | {...} | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:90:17:98:17 | After try {...} ... | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:92:25:92:30 | After ... == ... [false] | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:92:25:92:30 | After ... == ... [true] | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:93:31:93:45 | After object creation of type Exception | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:96:17:98:17 | {...} | +| Finally.cs:77:16:77:20 | After ... > ... [false] | Finally.cs:77:16:77:20 | After ... > ... [false] | +| Finally.cs:77:16:77:20 | After ... > ... [true] | Finally.cs:74:10:74:11 | Exceptional Exit | +| Finally.cs:77:16:77:20 | After ... > ... [true] | Finally.cs:77:16:77:20 | After ... > ... [true] | +| Finally.cs:77:16:77:20 | After ... > ... [true] | Finally.cs:79:13:99:13 | After try {...} ... | +| Finally.cs:77:16:77:20 | After ... > ... [true] | Finally.cs:81:21:81:26 | After ... == ... [false] | +| Finally.cs:77:16:77:20 | After ... > ... [true] | Finally.cs:81:21:81:26 | After ... == ... [true] | +| Finally.cs:77:16:77:20 | After ... > ... [true] | Finally.cs:83:21:83:26 | After ... == ... [false] | +| Finally.cs:77:16:77:20 | After ... > ... [true] | Finally.cs:83:21:83:26 | After ... == ... [true] | +| Finally.cs:77:16:77:20 | After ... > ... [true] | Finally.cs:85:21:85:26 | After ... == ... [false] | +| Finally.cs:77:16:77:20 | After ... > ... [true] | Finally.cs:85:21:85:26 | After ... == ... [true] | +| Finally.cs:77:16:77:20 | After ... > ... [true] | Finally.cs:89:13:99:13 | {...} | +| Finally.cs:77:16:77:20 | After ... > ... [true] | Finally.cs:90:17:98:17 | After try {...} ... | +| Finally.cs:77:16:77:20 | After ... > ... [true] | Finally.cs:92:25:92:30 | After ... == ... [false] | +| Finally.cs:77:16:77:20 | After ... > ... [true] | Finally.cs:92:25:92:30 | After ... == ... [true] | +| Finally.cs:77:16:77:20 | After ... > ... [true] | Finally.cs:93:31:93:45 | After object creation of type Exception | +| Finally.cs:77:16:77:20 | After ... > ... [true] | Finally.cs:96:17:98:17 | {...} | +| Finally.cs:79:13:99:13 | After try {...} ... | Finally.cs:79:13:99:13 | After try {...} ... | +| Finally.cs:81:21:81:26 | After ... == ... [false] | Finally.cs:81:21:81:26 | After ... == ... [false] | +| Finally.cs:81:21:81:26 | After ... == ... [false] | Finally.cs:83:21:83:26 | After ... == ... [false] | +| Finally.cs:81:21:81:26 | After ... == ... [false] | Finally.cs:83:21:83:26 | After ... == ... [true] | +| Finally.cs:81:21:81:26 | After ... == ... [false] | Finally.cs:85:21:85:26 | After ... == ... [false] | +| Finally.cs:81:21:81:26 | After ... == ... [false] | Finally.cs:85:21:85:26 | After ... == ... [true] | +| Finally.cs:81:21:81:26 | After ... == ... [true] | Finally.cs:81:21:81:26 | After ... == ... [true] | +| Finally.cs:83:21:83:26 | After ... == ... [false] | Finally.cs:83:21:83:26 | After ... == ... [false] | +| Finally.cs:83:21:83:26 | After ... == ... [false] | Finally.cs:85:21:85:26 | After ... == ... [false] | +| Finally.cs:83:21:83:26 | After ... == ... [false] | Finally.cs:85:21:85:26 | After ... == ... [true] | +| Finally.cs:83:21:83:26 | After ... == ... [true] | Finally.cs:83:21:83:26 | After ... == ... [true] | +| Finally.cs:85:21:85:26 | After ... == ... [false] | Finally.cs:85:21:85:26 | After ... == ... [false] | +| Finally.cs:85:21:85:26 | After ... == ... [true] | Finally.cs:85:21:85:26 | After ... == ... [true] | +| Finally.cs:89:13:99:13 | {...} | Finally.cs:74:10:74:11 | Exceptional Exit | +| Finally.cs:89:13:99:13 | {...} | Finally.cs:79:13:99:13 | After try {...} ... | | Finally.cs:89:13:99:13 | {...} | Finally.cs:89:13:99:13 | {...} | -| Finally.cs:89:13:99:13 | {...} | Finally.cs:93:25:93:46 | throw ...; | -| Finally.cs:89:13:99:13 | {...} | Finally.cs:93:31:93:45 | object creation of type Exception | +| Finally.cs:89:13:99:13 | {...} | Finally.cs:90:17:98:17 | After try {...} ... | +| Finally.cs:89:13:99:13 | {...} | Finally.cs:92:25:92:30 | After ... == ... [false] | +| Finally.cs:89:13:99:13 | {...} | Finally.cs:92:25:92:30 | After ... == ... [true] | +| Finally.cs:89:13:99:13 | {...} | Finally.cs:93:31:93:45 | After object creation of type Exception | | Finally.cs:89:13:99:13 | {...} | Finally.cs:96:17:98:17 | {...} | -| Finally.cs:93:25:93:46 | throw ...; | Finally.cs:93:25:93:46 | throw ...; | -| Finally.cs:93:31:93:45 | object creation of type Exception | Finally.cs:93:25:93:46 | throw ...; | -| Finally.cs:93:31:93:45 | object creation of type Exception | Finally.cs:93:31:93:45 | object creation of type Exception | -| Finally.cs:96:17:98:17 | {...} | Finally.cs:74:10:74:11 | exit M4 (abnormal) | +| Finally.cs:90:17:98:17 | After try {...} ... | Finally.cs:79:13:99:13 | After try {...} ... | +| Finally.cs:90:17:98:17 | After try {...} ... | Finally.cs:90:17:98:17 | After try {...} ... | +| Finally.cs:92:25:92:30 | After ... == ... [false] | Finally.cs:92:25:92:30 | After ... == ... [false] | +| Finally.cs:92:25:92:30 | After ... == ... [true] | Finally.cs:92:25:92:30 | After ... == ... [true] | +| Finally.cs:92:25:92:30 | After ... == ... [true] | Finally.cs:93:31:93:45 | After object creation of type Exception | +| Finally.cs:93:31:93:45 | After object creation of type Exception | Finally.cs:93:31:93:45 | After object creation of type Exception | +| Finally.cs:96:17:98:17 | {...} | Finally.cs:74:10:74:11 | Exceptional Exit | +| Finally.cs:96:17:98:17 | {...} | Finally.cs:79:13:99:13 | After try {...} ... | +| Finally.cs:96:17:98:17 | {...} | Finally.cs:90:17:98:17 | After try {...} ... | | Finally.cs:96:17:98:17 | {...} | Finally.cs:96:17:98:17 | {...} | -| Finally.cs:103:10:103:11 | enter M5 | Finally.cs:103:10:103:11 | enter M5 | -| Finally.cs:103:10:103:11 | enter M5 | Finally.cs:103:10:103:11 | exit M5 | -| Finally.cs:103:10:103:11 | enter M5 | Finally.cs:103:10:103:11 | exit M5 (abnormal) | -| Finally.cs:103:10:103:11 | enter M5 | Finally.cs:103:10:103:11 | exit M5 (normal) | -| Finally.cs:103:10:103:11 | enter M5 | Finally.cs:107:17:107:28 | access to property Length | -| Finally.cs:103:10:103:11 | enter M5 | Finally.cs:107:33:107:33 | 0 | -| Finally.cs:103:10:103:11 | enter M5 | Finally.cs:108:17:108:23 | return ...; | -| Finally.cs:103:10:103:11 | enter M5 | Finally.cs:109:13:110:49 | if (...) ... | -| Finally.cs:103:10:103:11 | enter M5 | Finally.cs:109:17:109:28 | access to property Length | -| Finally.cs:103:10:103:11 | enter M5 | Finally.cs:109:33:109:33 | 1 | -| Finally.cs:103:10:103:11 | enter M5 | Finally.cs:110:17:110:49 | throw ...; | -| Finally.cs:103:10:103:11 | enter M5 | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | -| Finally.cs:103:10:103:11 | enter M5 | Finally.cs:113:9:118:9 | {...} | -| Finally.cs:103:10:103:11 | enter M5 | Finally.cs:114:17:114:36 | [false] !... | -| Finally.cs:103:10:103:11 | enter M5 | Finally.cs:114:17:114:36 | [true] !... | -| Finally.cs:103:10:103:11 | enter M5 | Finally.cs:115:17:115:41 | ...; | -| Finally.cs:103:10:103:11 | enter M5 | Finally.cs:116:13:117:37 | if (...) ... | -| Finally.cs:103:10:103:11 | enter M5 | Finally.cs:117:17:117:37 | ...; | -| Finally.cs:103:10:103:11 | exit M5 | Finally.cs:103:10:103:11 | exit M5 | -| Finally.cs:103:10:103:11 | exit M5 (abnormal) | Finally.cs:103:10:103:11 | exit M5 (abnormal) | -| Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:103:10:103:11 | exit M5 (normal) | -| Finally.cs:107:17:107:28 | access to property Length | Finally.cs:107:17:107:28 | access to property Length | -| Finally.cs:107:17:107:28 | access to property Length | Finally.cs:107:33:107:33 | 0 | -| Finally.cs:107:17:107:28 | access to property Length | Finally.cs:108:17:108:23 | return ...; | -| Finally.cs:107:17:107:28 | access to property Length | Finally.cs:109:13:110:49 | if (...) ... | -| Finally.cs:107:17:107:28 | access to property Length | Finally.cs:109:17:109:28 | access to property Length | -| Finally.cs:107:17:107:28 | access to property Length | Finally.cs:109:33:109:33 | 1 | -| Finally.cs:107:17:107:28 | access to property Length | Finally.cs:110:17:110:49 | throw ...; | -| Finally.cs:107:17:107:28 | access to property Length | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:107:33:107:33 | 0 | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:108:17:108:23 | return ...; | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:109:13:110:49 | if (...) ... | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:109:17:109:28 | access to property Length | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:109:33:109:33 | 1 | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:110:17:110:49 | throw ...; | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | -| Finally.cs:108:17:108:23 | return ...; | Finally.cs:108:17:108:23 | return ...; | -| Finally.cs:109:13:110:49 | if (...) ... | Finally.cs:109:13:110:49 | if (...) ... | -| Finally.cs:109:13:110:49 | if (...) ... | Finally.cs:109:17:109:28 | access to property Length | -| Finally.cs:109:13:110:49 | if (...) ... | Finally.cs:109:33:109:33 | 1 | -| Finally.cs:109:13:110:49 | if (...) ... | Finally.cs:110:17:110:49 | throw ...; | -| Finally.cs:109:13:110:49 | if (...) ... | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | -| Finally.cs:109:17:109:28 | access to property Length | Finally.cs:109:17:109:28 | access to property Length | -| Finally.cs:109:17:109:28 | access to property Length | Finally.cs:109:33:109:33 | 1 | -| Finally.cs:109:17:109:28 | access to property Length | Finally.cs:110:17:110:49 | throw ...; | -| Finally.cs:109:17:109:28 | access to property Length | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | -| Finally.cs:109:33:109:33 | 1 | Finally.cs:109:33:109:33 | 1 | -| Finally.cs:109:33:109:33 | 1 | Finally.cs:110:17:110:49 | throw ...; | -| Finally.cs:109:33:109:33 | 1 | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | -| Finally.cs:110:17:110:49 | throw ...; | Finally.cs:110:17:110:49 | throw ...; | -| Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | Finally.cs:110:17:110:49 | throw ...; | -| Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | -| Finally.cs:113:9:118:9 | {...} | Finally.cs:103:10:103:11 | exit M5 | -| Finally.cs:113:9:118:9 | {...} | Finally.cs:103:10:103:11 | exit M5 (abnormal) | -| Finally.cs:113:9:118:9 | {...} | Finally.cs:103:10:103:11 | exit M5 (normal) | +| Finally.cs:103:10:103:11 | Entry | Finally.cs:103:10:103:11 | Entry | +| Finally.cs:103:10:103:11 | Entry | Finally.cs:103:10:103:11 | Exceptional Exit | +| Finally.cs:103:10:103:11 | Entry | Finally.cs:103:10:103:11 | Exit | +| Finally.cs:103:10:103:11 | Entry | Finally.cs:103:10:103:11 | Normal Exit | +| Finally.cs:103:10:103:11 | Entry | Finally.cs:105:9:118:9 | After try {...} ... | +| Finally.cs:103:10:103:11 | Entry | Finally.cs:107:17:107:21 | After access to field Field | +| Finally.cs:103:10:103:11 | Entry | Finally.cs:107:17:107:28 | After access to property Length | +| Finally.cs:103:10:103:11 | Entry | Finally.cs:107:17:107:33 | After ... == ... [false] | +| Finally.cs:103:10:103:11 | Entry | Finally.cs:107:17:107:33 | After ... == ... [true] | +| Finally.cs:103:10:103:11 | Entry | Finally.cs:109:17:109:21 | After access to field Field | +| Finally.cs:103:10:103:11 | Entry | Finally.cs:109:17:109:28 | After access to property Length | +| Finally.cs:103:10:103:11 | Entry | Finally.cs:109:17:109:33 | After ... == ... [false] | +| Finally.cs:103:10:103:11 | Entry | Finally.cs:109:17:109:33 | After ... == ... [true] | +| Finally.cs:103:10:103:11 | Entry | Finally.cs:110:23:110:48 | After object creation of type OutOfMemoryException | +| Finally.cs:103:10:103:11 | Entry | Finally.cs:113:9:118:9 | {...} | +| Finally.cs:103:10:103:11 | Entry | Finally.cs:114:13:115:41 | After if (...) ... | +| Finally.cs:103:10:103:11 | Entry | Finally.cs:114:19:114:35 | After ... == ... [false] | +| Finally.cs:103:10:103:11 | Entry | Finally.cs:114:19:114:35 | After ... == ... [true] | +| Finally.cs:103:10:103:11 | Entry | Finally.cs:116:13:117:37 | After if (...) ... | +| Finally.cs:103:10:103:11 | Entry | Finally.cs:116:17:116:32 | After ... > ... [false] | +| Finally.cs:103:10:103:11 | Entry | Finally.cs:116:17:116:32 | After ... > ... [true] | +| Finally.cs:103:10:103:11 | Exceptional Exit | Finally.cs:103:10:103:11 | Exceptional Exit | +| Finally.cs:103:10:103:11 | Exit | Finally.cs:103:10:103:11 | Exit | +| Finally.cs:103:10:103:11 | Normal Exit | Finally.cs:103:10:103:11 | Normal Exit | +| Finally.cs:105:9:118:9 | After try {...} ... | Finally.cs:105:9:118:9 | After try {...} ... | +| Finally.cs:107:17:107:21 | After access to field Field | Finally.cs:107:17:107:21 | After access to field Field | +| Finally.cs:107:17:107:21 | After access to field Field | Finally.cs:107:17:107:28 | After access to property Length | +| Finally.cs:107:17:107:21 | After access to field Field | Finally.cs:107:17:107:33 | After ... == ... [false] | +| Finally.cs:107:17:107:21 | After access to field Field | Finally.cs:107:17:107:33 | After ... == ... [true] | +| Finally.cs:107:17:107:21 | After access to field Field | Finally.cs:109:17:109:21 | After access to field Field | +| Finally.cs:107:17:107:21 | After access to field Field | Finally.cs:109:17:109:28 | After access to property Length | +| Finally.cs:107:17:107:21 | After access to field Field | Finally.cs:109:17:109:33 | After ... == ... [false] | +| Finally.cs:107:17:107:21 | After access to field Field | Finally.cs:109:17:109:33 | After ... == ... [true] | +| Finally.cs:107:17:107:21 | After access to field Field | Finally.cs:110:23:110:48 | After object creation of type OutOfMemoryException | +| Finally.cs:107:17:107:28 | After access to property Length | Finally.cs:107:17:107:28 | After access to property Length | +| Finally.cs:107:17:107:28 | After access to property Length | Finally.cs:107:17:107:33 | After ... == ... [false] | +| Finally.cs:107:17:107:28 | After access to property Length | Finally.cs:107:17:107:33 | After ... == ... [true] | +| Finally.cs:107:17:107:28 | After access to property Length | Finally.cs:109:17:109:21 | After access to field Field | +| Finally.cs:107:17:107:28 | After access to property Length | Finally.cs:109:17:109:28 | After access to property Length | +| Finally.cs:107:17:107:28 | After access to property Length | Finally.cs:109:17:109:33 | After ... == ... [false] | +| Finally.cs:107:17:107:28 | After access to property Length | Finally.cs:109:17:109:33 | After ... == ... [true] | +| Finally.cs:107:17:107:28 | After access to property Length | Finally.cs:110:23:110:48 | After object creation of type OutOfMemoryException | +| Finally.cs:107:17:107:33 | After ... == ... [false] | Finally.cs:107:17:107:33 | After ... == ... [false] | +| Finally.cs:107:17:107:33 | After ... == ... [false] | Finally.cs:109:17:109:21 | After access to field Field | +| Finally.cs:107:17:107:33 | After ... == ... [false] | Finally.cs:109:17:109:28 | After access to property Length | +| Finally.cs:107:17:107:33 | After ... == ... [false] | Finally.cs:109:17:109:33 | After ... == ... [false] | +| Finally.cs:107:17:107:33 | After ... == ... [false] | Finally.cs:109:17:109:33 | After ... == ... [true] | +| Finally.cs:107:17:107:33 | After ... == ... [false] | Finally.cs:110:23:110:48 | After object creation of type OutOfMemoryException | +| Finally.cs:107:17:107:33 | After ... == ... [true] | Finally.cs:107:17:107:33 | After ... == ... [true] | +| Finally.cs:109:17:109:21 | After access to field Field | Finally.cs:109:17:109:21 | After access to field Field | +| Finally.cs:109:17:109:21 | After access to field Field | Finally.cs:109:17:109:28 | After access to property Length | +| Finally.cs:109:17:109:21 | After access to field Field | Finally.cs:109:17:109:33 | After ... == ... [false] | +| Finally.cs:109:17:109:21 | After access to field Field | Finally.cs:109:17:109:33 | After ... == ... [true] | +| Finally.cs:109:17:109:21 | After access to field Field | Finally.cs:110:23:110:48 | After object creation of type OutOfMemoryException | +| Finally.cs:109:17:109:28 | After access to property Length | Finally.cs:109:17:109:28 | After access to property Length | +| Finally.cs:109:17:109:28 | After access to property Length | Finally.cs:109:17:109:33 | After ... == ... [false] | +| Finally.cs:109:17:109:28 | After access to property Length | Finally.cs:109:17:109:33 | After ... == ... [true] | +| Finally.cs:109:17:109:28 | After access to property Length | Finally.cs:110:23:110:48 | After object creation of type OutOfMemoryException | +| Finally.cs:109:17:109:33 | After ... == ... [false] | Finally.cs:109:17:109:33 | After ... == ... [false] | +| Finally.cs:109:17:109:33 | After ... == ... [true] | Finally.cs:109:17:109:33 | After ... == ... [true] | +| Finally.cs:109:17:109:33 | After ... == ... [true] | Finally.cs:110:23:110:48 | After object creation of type OutOfMemoryException | +| Finally.cs:110:23:110:48 | After object creation of type OutOfMemoryException | Finally.cs:110:23:110:48 | After object creation of type OutOfMemoryException | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:103:10:103:11 | Exceptional Exit | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:103:10:103:11 | Exit | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:103:10:103:11 | Normal Exit | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:105:9:118:9 | After try {...} ... | | Finally.cs:113:9:118:9 | {...} | Finally.cs:113:9:118:9 | {...} | -| Finally.cs:113:9:118:9 | {...} | Finally.cs:114:17:114:36 | [false] !... | -| Finally.cs:113:9:118:9 | {...} | Finally.cs:114:17:114:36 | [true] !... | -| Finally.cs:113:9:118:9 | {...} | Finally.cs:115:17:115:41 | ...; | -| Finally.cs:113:9:118:9 | {...} | Finally.cs:116:13:117:37 | if (...) ... | -| Finally.cs:113:9:118:9 | {...} | Finally.cs:117:17:117:37 | ...; | -| Finally.cs:114:17:114:36 | [false] !... | Finally.cs:114:17:114:36 | [false] !... | -| Finally.cs:114:17:114:36 | [true] !... | Finally.cs:114:17:114:36 | [true] !... | -| Finally.cs:114:17:114:36 | [true] !... | Finally.cs:115:17:115:41 | ...; | -| Finally.cs:115:17:115:41 | ...; | Finally.cs:115:17:115:41 | ...; | -| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:103:10:103:11 | exit M5 | -| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:103:10:103:11 | exit M5 (abnormal) | -| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:103:10:103:11 | exit M5 (normal) | -| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:116:13:117:37 | if (...) ... | -| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:117:17:117:37 | ...; | -| Finally.cs:117:17:117:37 | ...; | Finally.cs:117:17:117:37 | ...; | -| Finally.cs:121:10:121:11 | enter M6 | Finally.cs:121:10:121:11 | enter M6 | -| Finally.cs:133:10:133:11 | enter M7 | Finally.cs:133:10:133:11 | enter M7 | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:147:10:147:11 | enter M8 | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:147:10:147:11 | exit M8 | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:147:10:147:11 | exit M8 (abnormal) | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:147:10:147:11 | exit M8 (normal) | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:152:17:152:50 | throw ...; | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:155:9:169:9 | {...} | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:158:36:158:36 | 1 | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:159:21:159:45 | throw ...; | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:159:41:159:43 | "1" | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:161:13:164:13 | catch (...) {...} | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:161:30:161:30 | Exception e | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:162:13:164:13 | {...} | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:165:13:168:13 | catch {...} | -| Finally.cs:147:10:147:11 | exit M8 | Finally.cs:147:10:147:11 | exit M8 | -| Finally.cs:147:10:147:11 | exit M8 (abnormal) | Finally.cs:147:10:147:11 | exit M8 (abnormal) | -| Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:147:10:147:11 | exit M8 (normal) | -| Finally.cs:152:17:152:50 | throw ...; | Finally.cs:152:17:152:50 | throw ...; | -| Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | Finally.cs:152:17:152:50 | throw ...; | -| Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | -| Finally.cs:155:9:169:9 | {...} | Finally.cs:147:10:147:11 | exit M8 | -| Finally.cs:155:9:169:9 | {...} | Finally.cs:147:10:147:11 | exit M8 (abnormal) | -| Finally.cs:155:9:169:9 | {...} | Finally.cs:147:10:147:11 | exit M8 (normal) | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:114:13:115:41 | After if (...) ... | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:114:19:114:35 | After ... == ... [false] | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:114:19:114:35 | After ... == ... [true] | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:116:13:117:37 | After if (...) ... | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:116:17:116:32 | After ... > ... [false] | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:116:17:116:32 | After ... > ... [true] | +| Finally.cs:114:13:115:41 | After if (...) ... | Finally.cs:103:10:103:11 | Exceptional Exit | +| Finally.cs:114:13:115:41 | After if (...) ... | Finally.cs:103:10:103:11 | Exit | +| Finally.cs:114:13:115:41 | After if (...) ... | Finally.cs:103:10:103:11 | Normal Exit | +| Finally.cs:114:13:115:41 | After if (...) ... | Finally.cs:105:9:118:9 | After try {...} ... | +| Finally.cs:114:13:115:41 | After if (...) ... | Finally.cs:114:13:115:41 | After if (...) ... | +| Finally.cs:114:13:115:41 | After if (...) ... | Finally.cs:116:13:117:37 | After if (...) ... | +| Finally.cs:114:13:115:41 | After if (...) ... | Finally.cs:116:17:116:32 | After ... > ... [false] | +| Finally.cs:114:13:115:41 | After if (...) ... | Finally.cs:116:17:116:32 | After ... > ... [true] | +| Finally.cs:114:19:114:35 | After ... == ... [false] | Finally.cs:114:19:114:35 | After ... == ... [false] | +| Finally.cs:114:19:114:35 | After ... == ... [true] | Finally.cs:114:19:114:35 | After ... == ... [true] | +| Finally.cs:116:13:117:37 | After if (...) ... | Finally.cs:103:10:103:11 | Exceptional Exit | +| Finally.cs:116:13:117:37 | After if (...) ... | Finally.cs:103:10:103:11 | Exit | +| Finally.cs:116:13:117:37 | After if (...) ... | Finally.cs:103:10:103:11 | Normal Exit | +| Finally.cs:116:13:117:37 | After if (...) ... | Finally.cs:105:9:118:9 | After try {...} ... | +| Finally.cs:116:13:117:37 | After if (...) ... | Finally.cs:116:13:117:37 | After if (...) ... | +| Finally.cs:116:17:116:32 | After ... > ... [false] | Finally.cs:116:17:116:32 | After ... > ... [false] | +| Finally.cs:116:17:116:32 | After ... > ... [true] | Finally.cs:116:17:116:32 | After ... > ... [true] | +| Finally.cs:121:10:121:11 | Entry | Finally.cs:121:10:121:11 | Entry | +| Finally.cs:133:10:133:11 | Entry | Finally.cs:133:10:133:11 | Entry | +| Finally.cs:133:10:133:11 | Entry | Finally.cs:137:13:137:36 | After call to method WriteLine | +| Finally.cs:133:10:133:11 | Entry | Finally.cs:140:9:143:9 | {...} | +| Finally.cs:137:13:137:36 | After call to method WriteLine | Finally.cs:137:13:137:36 | After call to method WriteLine | +| Finally.cs:140:9:143:9 | {...} | Finally.cs:140:9:143:9 | {...} | +| Finally.cs:147:10:147:11 | Entry | Finally.cs:147:10:147:11 | Entry | +| Finally.cs:147:10:147:11 | Entry | Finally.cs:147:10:147:11 | Exceptional Exit | +| Finally.cs:147:10:147:11 | Entry | Finally.cs:147:10:147:11 | Exit | +| Finally.cs:147:10:147:11 | Entry | Finally.cs:149:9:169:9 | After try {...} ... | +| Finally.cs:147:10:147:11 | Entry | Finally.cs:151:17:151:28 | After ... == ... [false] | +| Finally.cs:147:10:147:11 | Entry | Finally.cs:151:17:151:28 | After ... == ... [true] | +| Finally.cs:147:10:147:11 | Entry | Finally.cs:152:23:152:49 | After object creation of type ArgumentNullException | +| Finally.cs:147:10:147:11 | Entry | Finally.cs:155:9:169:9 | {...} | +| Finally.cs:147:10:147:11 | Entry | Finally.cs:156:13:168:13 | After try {...} ... | +| Finally.cs:147:10:147:11 | Entry | Finally.cs:158:21:158:31 | After access to property Length | +| Finally.cs:147:10:147:11 | Entry | Finally.cs:158:21:158:36 | After ... == ... [false] | +| Finally.cs:147:10:147:11 | Entry | Finally.cs:158:21:158:36 | After ... == ... [true] | +| Finally.cs:147:10:147:11 | Entry | Finally.cs:159:27:159:44 | After object creation of type Exception | +| Finally.cs:147:10:147:11 | Entry | Finally.cs:161:13:164:13 | After catch (...) {...} [match] | +| Finally.cs:147:10:147:11 | Entry | Finally.cs:161:13:164:13 | After catch (...) {...} [no-match] | +| Finally.cs:147:10:147:11 | Entry | Finally.cs:161:13:164:13 | catch (...) {...} | +| Finally.cs:147:10:147:11 | Entry | Finally.cs:161:39:161:54 | After ... == ... [false] | +| Finally.cs:147:10:147:11 | Entry | Finally.cs:161:39:161:54 | After ... == ... [true] | +| Finally.cs:147:10:147:11 | Exceptional Exit | Finally.cs:147:10:147:11 | Exceptional Exit | +| Finally.cs:147:10:147:11 | Exit | Finally.cs:147:10:147:11 | Exit | +| Finally.cs:149:9:169:9 | After try {...} ... | Finally.cs:149:9:169:9 | After try {...} ... | +| Finally.cs:151:17:151:28 | After ... == ... [false] | Finally.cs:151:17:151:28 | After ... == ... [false] | +| Finally.cs:151:17:151:28 | After ... == ... [true] | Finally.cs:151:17:151:28 | After ... == ... [true] | +| Finally.cs:151:17:151:28 | After ... == ... [true] | Finally.cs:152:23:152:49 | After object creation of type ArgumentNullException | +| Finally.cs:152:23:152:49 | After object creation of type ArgumentNullException | Finally.cs:152:23:152:49 | After object creation of type ArgumentNullException | +| Finally.cs:155:9:169:9 | {...} | Finally.cs:147:10:147:11 | Exceptional Exit | +| Finally.cs:155:9:169:9 | {...} | Finally.cs:147:10:147:11 | Exit | +| Finally.cs:155:9:169:9 | {...} | Finally.cs:149:9:169:9 | After try {...} ... | | Finally.cs:155:9:169:9 | {...} | Finally.cs:155:9:169:9 | {...} | -| Finally.cs:155:9:169:9 | {...} | Finally.cs:158:36:158:36 | 1 | -| Finally.cs:155:9:169:9 | {...} | Finally.cs:159:21:159:45 | throw ...; | -| Finally.cs:155:9:169:9 | {...} | Finally.cs:159:41:159:43 | "1" | +| Finally.cs:155:9:169:9 | {...} | Finally.cs:156:13:168:13 | After try {...} ... | +| Finally.cs:155:9:169:9 | {...} | Finally.cs:158:21:158:31 | After access to property Length | +| Finally.cs:155:9:169:9 | {...} | Finally.cs:158:21:158:36 | After ... == ... [false] | +| Finally.cs:155:9:169:9 | {...} | Finally.cs:158:21:158:36 | After ... == ... [true] | +| Finally.cs:155:9:169:9 | {...} | Finally.cs:159:27:159:44 | After object creation of type Exception | +| Finally.cs:155:9:169:9 | {...} | Finally.cs:161:13:164:13 | After catch (...) {...} [match] | +| Finally.cs:155:9:169:9 | {...} | Finally.cs:161:13:164:13 | After catch (...) {...} [no-match] | | Finally.cs:155:9:169:9 | {...} | Finally.cs:161:13:164:13 | catch (...) {...} | -| Finally.cs:155:9:169:9 | {...} | Finally.cs:161:30:161:30 | Exception e | -| Finally.cs:155:9:169:9 | {...} | Finally.cs:162:13:164:13 | {...} | -| Finally.cs:155:9:169:9 | {...} | Finally.cs:165:13:168:13 | catch {...} | -| Finally.cs:158:36:158:36 | 1 | Finally.cs:158:36:158:36 | 1 | -| Finally.cs:158:36:158:36 | 1 | Finally.cs:159:21:159:45 | throw ...; | -| Finally.cs:158:36:158:36 | 1 | Finally.cs:159:41:159:43 | "1" | -| Finally.cs:159:21:159:45 | throw ...; | Finally.cs:159:21:159:45 | throw ...; | -| Finally.cs:159:41:159:43 | "1" | Finally.cs:159:21:159:45 | throw ...; | -| Finally.cs:159:41:159:43 | "1" | Finally.cs:159:41:159:43 | "1" | +| Finally.cs:155:9:169:9 | {...} | Finally.cs:161:39:161:54 | After ... == ... [false] | +| Finally.cs:155:9:169:9 | {...} | Finally.cs:161:39:161:54 | After ... == ... [true] | +| Finally.cs:156:13:168:13 | After try {...} ... | Finally.cs:147:10:147:11 | Exceptional Exit | +| Finally.cs:156:13:168:13 | After try {...} ... | Finally.cs:147:10:147:11 | Exit | +| Finally.cs:156:13:168:13 | After try {...} ... | Finally.cs:149:9:169:9 | After try {...} ... | +| Finally.cs:156:13:168:13 | After try {...} ... | Finally.cs:156:13:168:13 | After try {...} ... | +| Finally.cs:158:21:158:31 | After access to property Length | Finally.cs:158:21:158:31 | After access to property Length | +| Finally.cs:158:21:158:31 | After access to property Length | Finally.cs:158:21:158:36 | After ... == ... [false] | +| Finally.cs:158:21:158:31 | After access to property Length | Finally.cs:158:21:158:36 | After ... == ... [true] | +| Finally.cs:158:21:158:31 | After access to property Length | Finally.cs:159:27:159:44 | After object creation of type Exception | +| Finally.cs:158:21:158:36 | After ... == ... [false] | Finally.cs:158:21:158:36 | After ... == ... [false] | +| Finally.cs:158:21:158:36 | After ... == ... [true] | Finally.cs:158:21:158:36 | After ... == ... [true] | +| Finally.cs:158:21:158:36 | After ... == ... [true] | Finally.cs:159:27:159:44 | After object creation of type Exception | +| Finally.cs:159:27:159:44 | After object creation of type Exception | Finally.cs:159:27:159:44 | After object creation of type Exception | +| Finally.cs:161:13:164:13 | After catch (...) {...} [match] | Finally.cs:161:13:164:13 | After catch (...) {...} [match] | +| Finally.cs:161:13:164:13 | After catch (...) {...} [match] | Finally.cs:161:39:161:54 | After ... == ... [false] | +| Finally.cs:161:13:164:13 | After catch (...) {...} [match] | Finally.cs:161:39:161:54 | After ... == ... [true] | +| Finally.cs:161:13:164:13 | After catch (...) {...} [no-match] | Finally.cs:161:13:164:13 | After catch (...) {...} [no-match] | +| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:161:13:164:13 | After catch (...) {...} [match] | +| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:161:13:164:13 | After catch (...) {...} [no-match] | | Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:161:13:164:13 | catch (...) {...} | -| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:161:30:161:30 | Exception e | -| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:162:13:164:13 | {...} | -| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:165:13:168:13 | catch {...} | -| Finally.cs:161:30:161:30 | Exception e | Finally.cs:161:30:161:30 | Exception e | -| Finally.cs:161:30:161:30 | Exception e | Finally.cs:162:13:164:13 | {...} | -| Finally.cs:162:13:164:13 | {...} | Finally.cs:162:13:164:13 | {...} | -| Finally.cs:165:13:168:13 | catch {...} | Finally.cs:165:13:168:13 | catch {...} | -| Finally.cs:172:11:172:20 | enter ExceptionA | Finally.cs:172:11:172:20 | enter ExceptionA | -| Finally.cs:173:11:173:20 | enter ExceptionB | Finally.cs:173:11:173:20 | enter ExceptionB | -| Finally.cs:174:11:174:20 | enter ExceptionC | Finally.cs:174:11:174:20 | enter ExceptionC | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:176:10:176:11 | enter M9 | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:176:10:176:11 | exit M9 | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:176:10:176:11 | exit M9 (abnormal) | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:176:10:176:11 | exit M9 (normal) | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:180:21:180:43 | throw ...; | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:180:27:180:42 | object creation of type ExceptionA | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:183:9:192:9 | {...} | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:186:25:186:47 | throw ...; | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:186:31:186:46 | object creation of type ExceptionB | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:188:13:191:13 | catch (...) {...} | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:188:38:188:39 | access to parameter b2 | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:189:13:191:13 | {...} | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:190:31:190:46 | object creation of type ExceptionC | -| Finally.cs:176:10:176:11 | exit M9 | Finally.cs:176:10:176:11 | exit M9 | -| Finally.cs:176:10:176:11 | exit M9 (abnormal) | Finally.cs:176:10:176:11 | exit M9 (abnormal) | -| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:176:10:176:11 | exit M9 (normal) | -| Finally.cs:180:21:180:43 | throw ...; | Finally.cs:180:21:180:43 | throw ...; | -| Finally.cs:180:27:180:42 | object creation of type ExceptionA | Finally.cs:180:21:180:43 | throw ...; | -| Finally.cs:180:27:180:42 | object creation of type ExceptionA | Finally.cs:180:27:180:42 | object creation of type ExceptionA | -| Finally.cs:183:9:192:9 | {...} | Finally.cs:176:10:176:11 | exit M9 | -| Finally.cs:183:9:192:9 | {...} | Finally.cs:176:10:176:11 | exit M9 (abnormal) | -| Finally.cs:183:9:192:9 | {...} | Finally.cs:176:10:176:11 | exit M9 (normal) | +| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:161:39:161:54 | After ... == ... [false] | +| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:161:39:161:54 | After ... == ... [true] | +| Finally.cs:161:39:161:54 | After ... == ... [false] | Finally.cs:161:39:161:54 | After ... == ... [false] | +| Finally.cs:161:39:161:54 | After ... == ... [true] | Finally.cs:161:39:161:54 | After ... == ... [true] | +| Finally.cs:172:11:172:20 | Entry | Finally.cs:172:11:172:20 | Entry | +| Finally.cs:173:11:173:20 | Entry | Finally.cs:173:11:173:20 | Entry | +| Finally.cs:174:11:174:20 | Entry | Finally.cs:174:11:174:20 | Entry | +| Finally.cs:176:10:176:11 | Entry | Finally.cs:176:10:176:11 | Entry | +| Finally.cs:176:10:176:11 | Entry | Finally.cs:176:10:176:11 | Exceptional Exit | +| Finally.cs:176:10:176:11 | Entry | Finally.cs:176:10:176:11 | Exit | +| Finally.cs:176:10:176:11 | Entry | Finally.cs:178:9:192:9 | After try {...} ... | +| Finally.cs:176:10:176:11 | Entry | Finally.cs:180:17:180:18 | After access to parameter b1 [false] | +| Finally.cs:176:10:176:11 | Entry | Finally.cs:180:17:180:18 | After access to parameter b1 [true] | +| Finally.cs:176:10:176:11 | Entry | Finally.cs:180:27:180:42 | After object creation of type ExceptionA | +| Finally.cs:176:10:176:11 | Entry | Finally.cs:183:9:192:9 | {...} | +| Finally.cs:176:10:176:11 | Entry | Finally.cs:184:13:191:13 | After try {...} ... | +| Finally.cs:176:10:176:11 | Entry | Finally.cs:186:21:186:22 | After access to parameter b2 [false] | +| Finally.cs:176:10:176:11 | Entry | Finally.cs:186:21:186:22 | After access to parameter b2 [true] | +| Finally.cs:176:10:176:11 | Entry | Finally.cs:186:31:186:46 | After object creation of type ExceptionB | +| Finally.cs:176:10:176:11 | Entry | Finally.cs:188:13:191:13 | After catch (...) {...} [match] | +| Finally.cs:176:10:176:11 | Entry | Finally.cs:188:13:191:13 | After catch (...) {...} [no-match] | +| Finally.cs:176:10:176:11 | Entry | Finally.cs:188:13:191:13 | catch (...) {...} | +| Finally.cs:176:10:176:11 | Entry | Finally.cs:188:38:188:39 | After access to parameter b2 [false] | +| Finally.cs:176:10:176:11 | Entry | Finally.cs:188:38:188:39 | After access to parameter b2 [true] | +| Finally.cs:176:10:176:11 | Entry | Finally.cs:190:21:190:22 | After access to parameter b1 [false] | +| Finally.cs:176:10:176:11 | Entry | Finally.cs:190:21:190:22 | After access to parameter b1 [true] | +| Finally.cs:176:10:176:11 | Exceptional Exit | Finally.cs:176:10:176:11 | Exceptional Exit | +| Finally.cs:176:10:176:11 | Exit | Finally.cs:176:10:176:11 | Exit | +| Finally.cs:178:9:192:9 | After try {...} ... | Finally.cs:178:9:192:9 | After try {...} ... | +| Finally.cs:180:17:180:18 | After access to parameter b1 [false] | Finally.cs:180:17:180:18 | After access to parameter b1 [false] | +| Finally.cs:180:17:180:18 | After access to parameter b1 [true] | Finally.cs:180:17:180:18 | After access to parameter b1 [true] | +| Finally.cs:180:17:180:18 | After access to parameter b1 [true] | Finally.cs:180:27:180:42 | After object creation of type ExceptionA | +| Finally.cs:180:27:180:42 | After object creation of type ExceptionA | Finally.cs:180:27:180:42 | After object creation of type ExceptionA | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:176:10:176:11 | Exceptional Exit | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:176:10:176:11 | Exit | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:178:9:192:9 | After try {...} ... | | Finally.cs:183:9:192:9 | {...} | Finally.cs:183:9:192:9 | {...} | -| Finally.cs:183:9:192:9 | {...} | Finally.cs:186:25:186:47 | throw ...; | -| Finally.cs:183:9:192:9 | {...} | Finally.cs:186:31:186:46 | object creation of type ExceptionB | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:184:13:191:13 | After try {...} ... | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:186:21:186:22 | After access to parameter b2 [false] | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:186:21:186:22 | After access to parameter b2 [true] | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:186:31:186:46 | After object creation of type ExceptionB | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:188:13:191:13 | After catch (...) {...} [match] | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:188:13:191:13 | After catch (...) {...} [no-match] | | Finally.cs:183:9:192:9 | {...} | Finally.cs:188:13:191:13 | catch (...) {...} | -| Finally.cs:183:9:192:9 | {...} | Finally.cs:188:38:188:39 | access to parameter b2 | -| Finally.cs:183:9:192:9 | {...} | Finally.cs:189:13:191:13 | {...} | -| Finally.cs:183:9:192:9 | {...} | Finally.cs:190:31:190:46 | object creation of type ExceptionC | -| Finally.cs:186:25:186:47 | throw ...; | Finally.cs:186:25:186:47 | throw ...; | -| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:186:25:186:47 | throw ...; | -| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:186:31:186:46 | object creation of type ExceptionB | -| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:188:13:191:13 | catch (...) {...} | -| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:188:38:188:39 | access to parameter b2 | -| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:189:13:191:13 | {...} | -| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:190:31:190:46 | object creation of type ExceptionC | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:188:38:188:39 | After access to parameter b2 [false] | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:188:38:188:39 | After access to parameter b2 [true] | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:190:21:190:22 | After access to parameter b1 [false] | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:190:21:190:22 | After access to parameter b1 [true] | +| Finally.cs:184:13:191:13 | After try {...} ... | Finally.cs:178:9:192:9 | After try {...} ... | +| Finally.cs:184:13:191:13 | After try {...} ... | Finally.cs:184:13:191:13 | After try {...} ... | +| Finally.cs:186:21:186:22 | After access to parameter b2 [false] | Finally.cs:186:21:186:22 | After access to parameter b2 [false] | +| Finally.cs:186:21:186:22 | After access to parameter b2 [true] | Finally.cs:186:21:186:22 | After access to parameter b2 [true] | +| Finally.cs:186:21:186:22 | After access to parameter b2 [true] | Finally.cs:186:31:186:46 | After object creation of type ExceptionB | +| Finally.cs:186:21:186:22 | After access to parameter b2 [true] | Finally.cs:188:13:191:13 | After catch (...) {...} [match] | +| Finally.cs:186:21:186:22 | After access to parameter b2 [true] | Finally.cs:188:13:191:13 | After catch (...) {...} [no-match] | +| Finally.cs:186:21:186:22 | After access to parameter b2 [true] | Finally.cs:188:13:191:13 | catch (...) {...} | +| Finally.cs:186:21:186:22 | After access to parameter b2 [true] | Finally.cs:188:38:188:39 | After access to parameter b2 [false] | +| Finally.cs:186:21:186:22 | After access to parameter b2 [true] | Finally.cs:188:38:188:39 | After access to parameter b2 [true] | +| Finally.cs:186:21:186:22 | After access to parameter b2 [true] | Finally.cs:190:21:190:22 | After access to parameter b1 [false] | +| Finally.cs:186:21:186:22 | After access to parameter b2 [true] | Finally.cs:190:21:190:22 | After access to parameter b1 [true] | +| Finally.cs:186:31:186:46 | After object creation of type ExceptionB | Finally.cs:186:31:186:46 | After object creation of type ExceptionB | +| Finally.cs:188:13:191:13 | After catch (...) {...} [match] | Finally.cs:188:13:191:13 | After catch (...) {...} [match] | +| Finally.cs:188:13:191:13 | After catch (...) {...} [match] | Finally.cs:188:38:188:39 | After access to parameter b2 [false] | +| Finally.cs:188:13:191:13 | After catch (...) {...} [match] | Finally.cs:188:38:188:39 | After access to parameter b2 [true] | +| Finally.cs:188:13:191:13 | After catch (...) {...} [match] | Finally.cs:190:21:190:22 | After access to parameter b1 [false] | +| Finally.cs:188:13:191:13 | After catch (...) {...} [match] | Finally.cs:190:21:190:22 | After access to parameter b1 [true] | +| Finally.cs:188:13:191:13 | After catch (...) {...} [no-match] | Finally.cs:188:13:191:13 | After catch (...) {...} [no-match] | +| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:188:13:191:13 | After catch (...) {...} [match] | +| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:188:13:191:13 | After catch (...) {...} [no-match] | | Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:188:13:191:13 | catch (...) {...} | -| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:188:38:188:39 | access to parameter b2 | -| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:189:13:191:13 | {...} | -| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:190:31:190:46 | object creation of type ExceptionC | -| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:188:38:188:39 | access to parameter b2 | -| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:189:13:191:13 | {...} | -| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:190:31:190:46 | object creation of type ExceptionC | -| Finally.cs:189:13:191:13 | {...} | Finally.cs:189:13:191:13 | {...} | -| Finally.cs:189:13:191:13 | {...} | Finally.cs:190:31:190:46 | object creation of type ExceptionC | -| Finally.cs:190:31:190:46 | object creation of type ExceptionC | Finally.cs:190:31:190:46 | object creation of type ExceptionC | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:195:10:195:12 | enter M10 | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:195:10:195:12 | exit M10 | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:195:10:195:12 | exit M10 (abnormal) | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:199:21:199:43 | throw ...; | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:199:27:199:42 | object creation of type ExceptionA | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:202:9:212:9 | {...} | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:205:25:205:47 | throw ...; | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:205:31:205:46 | object creation of type ExceptionB | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:208:13:210:13 | {...} | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:209:31:209:46 | object creation of type ExceptionC | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:211:13:211:29 | ...; | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:213:9:213:25 | ...; | -| Finally.cs:195:10:195:12 | exit M10 | Finally.cs:195:10:195:12 | exit M10 | -| Finally.cs:195:10:195:12 | exit M10 (abnormal) | Finally.cs:195:10:195:12 | exit M10 (abnormal) | -| Finally.cs:199:21:199:43 | throw ...; | Finally.cs:199:21:199:43 | throw ...; | -| Finally.cs:199:27:199:42 | object creation of type ExceptionA | Finally.cs:199:21:199:43 | throw ...; | -| Finally.cs:199:27:199:42 | object creation of type ExceptionA | Finally.cs:199:27:199:42 | object creation of type ExceptionA | -| Finally.cs:202:9:212:9 | {...} | Finally.cs:195:10:195:12 | exit M10 | -| Finally.cs:202:9:212:9 | {...} | Finally.cs:195:10:195:12 | exit M10 (abnormal) | +| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:188:38:188:39 | After access to parameter b2 [false] | +| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:188:38:188:39 | After access to parameter b2 [true] | +| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:190:21:190:22 | After access to parameter b1 [false] | +| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:190:21:190:22 | After access to parameter b1 [true] | +| Finally.cs:188:38:188:39 | After access to parameter b2 [false] | Finally.cs:188:38:188:39 | After access to parameter b2 [false] | +| Finally.cs:188:38:188:39 | After access to parameter b2 [true] | Finally.cs:188:38:188:39 | After access to parameter b2 [true] | +| Finally.cs:188:38:188:39 | After access to parameter b2 [true] | Finally.cs:190:21:190:22 | After access to parameter b1 [false] | +| Finally.cs:188:38:188:39 | After access to parameter b2 [true] | Finally.cs:190:21:190:22 | After access to parameter b1 [true] | +| Finally.cs:190:21:190:22 | After access to parameter b1 [false] | Finally.cs:190:21:190:22 | After access to parameter b1 [false] | +| Finally.cs:190:21:190:22 | After access to parameter b1 [true] | Finally.cs:190:21:190:22 | After access to parameter b1 [true] | +| Finally.cs:195:10:195:12 | Entry | Finally.cs:195:10:195:12 | Entry | +| Finally.cs:195:10:195:12 | Entry | Finally.cs:195:10:195:12 | Exceptional Exit | +| Finally.cs:195:10:195:12 | Entry | Finally.cs:195:10:195:12 | Exit | +| Finally.cs:195:10:195:12 | Entry | Finally.cs:197:9:212:9 | After try {...} ... | +| Finally.cs:195:10:195:12 | Entry | Finally.cs:199:17:199:18 | After access to parameter b1 [false] | +| Finally.cs:195:10:195:12 | Entry | Finally.cs:199:17:199:18 | After access to parameter b1 [true] | +| Finally.cs:195:10:195:12 | Entry | Finally.cs:199:27:199:42 | After object creation of type ExceptionA | +| Finally.cs:195:10:195:12 | Entry | Finally.cs:202:9:212:9 | {...} | +| Finally.cs:195:10:195:12 | Entry | Finally.cs:203:13:210:13 | After try {...} ... | +| Finally.cs:195:10:195:12 | Entry | Finally.cs:205:21:205:22 | After access to parameter b2 [false] | +| Finally.cs:195:10:195:12 | Entry | Finally.cs:205:21:205:22 | After access to parameter b2 [true] | +| Finally.cs:195:10:195:12 | Entry | Finally.cs:205:31:205:46 | After object creation of type ExceptionB | +| Finally.cs:195:10:195:12 | Entry | Finally.cs:208:13:210:13 | {...} | +| Finally.cs:195:10:195:12 | Entry | Finally.cs:209:21:209:22 | After access to parameter b3 [false] | +| Finally.cs:195:10:195:12 | Entry | Finally.cs:209:21:209:22 | After access to parameter b3 [true] | +| Finally.cs:195:10:195:12 | Exceptional Exit | Finally.cs:195:10:195:12 | Exceptional Exit | +| Finally.cs:195:10:195:12 | Exit | Finally.cs:195:10:195:12 | Exit | +| Finally.cs:197:9:212:9 | After try {...} ... | Finally.cs:197:9:212:9 | After try {...} ... | +| Finally.cs:199:17:199:18 | After access to parameter b1 [false] | Finally.cs:199:17:199:18 | After access to parameter b1 [false] | +| Finally.cs:199:17:199:18 | After access to parameter b1 [true] | Finally.cs:199:17:199:18 | After access to parameter b1 [true] | +| Finally.cs:199:17:199:18 | After access to parameter b1 [true] | Finally.cs:199:27:199:42 | After object creation of type ExceptionA | +| Finally.cs:199:27:199:42 | After object creation of type ExceptionA | Finally.cs:199:27:199:42 | After object creation of type ExceptionA | +| Finally.cs:202:9:212:9 | {...} | Finally.cs:195:10:195:12 | Exceptional Exit | +| Finally.cs:202:9:212:9 | {...} | Finally.cs:195:10:195:12 | Exit | +| Finally.cs:202:9:212:9 | {...} | Finally.cs:197:9:212:9 | After try {...} ... | | Finally.cs:202:9:212:9 | {...} | Finally.cs:202:9:212:9 | {...} | -| Finally.cs:202:9:212:9 | {...} | Finally.cs:205:25:205:47 | throw ...; | -| Finally.cs:202:9:212:9 | {...} | Finally.cs:205:31:205:46 | object creation of type ExceptionB | +| Finally.cs:202:9:212:9 | {...} | Finally.cs:203:13:210:13 | After try {...} ... | +| Finally.cs:202:9:212:9 | {...} | Finally.cs:205:21:205:22 | After access to parameter b2 [false] | +| Finally.cs:202:9:212:9 | {...} | Finally.cs:205:21:205:22 | After access to parameter b2 [true] | +| Finally.cs:202:9:212:9 | {...} | Finally.cs:205:31:205:46 | After object creation of type ExceptionB | | Finally.cs:202:9:212:9 | {...} | Finally.cs:208:13:210:13 | {...} | -| Finally.cs:202:9:212:9 | {...} | Finally.cs:209:31:209:46 | object creation of type ExceptionC | -| Finally.cs:202:9:212:9 | {...} | Finally.cs:211:13:211:29 | ...; | -| Finally.cs:202:9:212:9 | {...} | Finally.cs:213:9:213:25 | ...; | -| Finally.cs:205:25:205:47 | throw ...; | Finally.cs:205:25:205:47 | throw ...; | -| Finally.cs:205:31:205:46 | object creation of type ExceptionB | Finally.cs:205:25:205:47 | throw ...; | -| Finally.cs:205:31:205:46 | object creation of type ExceptionB | Finally.cs:205:31:205:46 | object creation of type ExceptionB | -| Finally.cs:208:13:210:13 | {...} | Finally.cs:195:10:195:12 | exit M10 | -| Finally.cs:208:13:210:13 | {...} | Finally.cs:195:10:195:12 | exit M10 (abnormal) | +| Finally.cs:202:9:212:9 | {...} | Finally.cs:209:21:209:22 | After access to parameter b3 [false] | +| Finally.cs:202:9:212:9 | {...} | Finally.cs:209:21:209:22 | After access to parameter b3 [true] | +| Finally.cs:203:13:210:13 | After try {...} ... | Finally.cs:197:9:212:9 | After try {...} ... | +| Finally.cs:203:13:210:13 | After try {...} ... | Finally.cs:203:13:210:13 | After try {...} ... | +| Finally.cs:205:21:205:22 | After access to parameter b2 [false] | Finally.cs:205:21:205:22 | After access to parameter b2 [false] | +| Finally.cs:205:21:205:22 | After access to parameter b2 [true] | Finally.cs:205:21:205:22 | After access to parameter b2 [true] | +| Finally.cs:205:21:205:22 | After access to parameter b2 [true] | Finally.cs:205:31:205:46 | After object creation of type ExceptionB | +| Finally.cs:205:31:205:46 | After object creation of type ExceptionB | Finally.cs:205:31:205:46 | After object creation of type ExceptionB | +| Finally.cs:208:13:210:13 | {...} | Finally.cs:195:10:195:12 | Exceptional Exit | +| Finally.cs:208:13:210:13 | {...} | Finally.cs:195:10:195:12 | Exit | +| Finally.cs:208:13:210:13 | {...} | Finally.cs:197:9:212:9 | After try {...} ... | +| Finally.cs:208:13:210:13 | {...} | Finally.cs:203:13:210:13 | After try {...} ... | | Finally.cs:208:13:210:13 | {...} | Finally.cs:208:13:210:13 | {...} | -| Finally.cs:208:13:210:13 | {...} | Finally.cs:209:31:209:46 | object creation of type ExceptionC | -| Finally.cs:208:13:210:13 | {...} | Finally.cs:211:13:211:29 | ...; | -| Finally.cs:208:13:210:13 | {...} | Finally.cs:213:9:213:25 | ...; | -| Finally.cs:209:31:209:46 | object creation of type ExceptionC | Finally.cs:209:31:209:46 | object creation of type ExceptionC | -| Finally.cs:211:13:211:29 | ...; | Finally.cs:211:13:211:29 | ...; | -| Finally.cs:211:13:211:29 | ...; | Finally.cs:213:9:213:25 | ...; | -| Finally.cs:213:9:213:25 | ...; | Finally.cs:213:9:213:25 | ...; | -| Finally.cs:216:10:216:12 | enter M11 | Finally.cs:216:10:216:12 | enter M11 | -| Finally.cs:216:10:216:12 | enter M11 | Finally.cs:222:9:225:9 | catch {...} | -| Finally.cs:216:10:216:12 | enter M11 | Finally.cs:227:9:229:9 | {...} | +| Finally.cs:208:13:210:13 | {...} | Finally.cs:209:21:209:22 | After access to parameter b3 [false] | +| Finally.cs:208:13:210:13 | {...} | Finally.cs:209:21:209:22 | After access to parameter b3 [true] | +| Finally.cs:209:21:209:22 | After access to parameter b3 [false] | Finally.cs:197:9:212:9 | After try {...} ... | +| Finally.cs:209:21:209:22 | After access to parameter b3 [false] | Finally.cs:203:13:210:13 | After try {...} ... | +| Finally.cs:209:21:209:22 | After access to parameter b3 [false] | Finally.cs:209:21:209:22 | After access to parameter b3 [false] | +| Finally.cs:209:21:209:22 | After access to parameter b3 [true] | Finally.cs:209:21:209:22 | After access to parameter b3 [true] | +| Finally.cs:216:10:216:12 | Entry | Finally.cs:216:10:216:12 | Entry | +| Finally.cs:216:10:216:12 | Entry | Finally.cs:220:13:220:36 | After call to method WriteLine | +| Finally.cs:216:10:216:12 | Entry | Finally.cs:222:9:225:9 | catch {...} | +| Finally.cs:216:10:216:12 | Entry | Finally.cs:227:9:229:9 | {...} | +| Finally.cs:220:13:220:36 | After call to method WriteLine | Finally.cs:220:13:220:36 | After call to method WriteLine | | Finally.cs:222:9:225:9 | catch {...} | Finally.cs:222:9:225:9 | catch {...} | | Finally.cs:227:9:229:9 | {...} | Finally.cs:227:9:229:9 | {...} | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:233:10:233:12 | enter M12 | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:233:10:233:12 | exit M12 | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:233:10:233:12 | exit M12 (abnormal) | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:240:21:240:43 | throw ...; | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:240:27:240:42 | object creation of type ExceptionA | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:243:13:253:13 | {...} | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:247:25:247:47 | throw ...; | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:247:31:247:46 | object creation of type ExceptionA | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:250:17:252:17 | {...} | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:254:13:254:45 | ...; | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:257:9:259:9 | {...} | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:260:9:260:34 | ...; | -| Finally.cs:233:10:233:12 | exit M12 | Finally.cs:233:10:233:12 | exit M12 | -| Finally.cs:233:10:233:12 | exit M12 (abnormal) | Finally.cs:233:10:233:12 | exit M12 (abnormal) | -| Finally.cs:240:21:240:43 | throw ...; | Finally.cs:240:21:240:43 | throw ...; | -| Finally.cs:240:27:240:42 | object creation of type ExceptionA | Finally.cs:240:21:240:43 | throw ...; | -| Finally.cs:240:27:240:42 | object creation of type ExceptionA | Finally.cs:240:27:240:42 | object creation of type ExceptionA | -| Finally.cs:243:13:253:13 | {...} | Finally.cs:233:10:233:12 | exit M12 | -| Finally.cs:243:13:253:13 | {...} | Finally.cs:233:10:233:12 | exit M12 (abnormal) | +| Finally.cs:233:10:233:12 | Entry | Finally.cs:233:10:233:12 | Entry | +| Finally.cs:233:10:233:12 | Entry | Finally.cs:233:10:233:12 | Exceptional Exit | +| Finally.cs:233:10:233:12 | Entry | Finally.cs:233:10:233:12 | Exit | +| Finally.cs:233:10:233:12 | Entry | Finally.cs:235:9:259:9 | After try {...} ... | +| Finally.cs:233:10:233:12 | Entry | Finally.cs:237:13:253:13 | After try {...} ... | +| Finally.cs:233:10:233:12 | Entry | Finally.cs:239:21:239:22 | After access to parameter b1 [false] | +| Finally.cs:233:10:233:12 | Entry | Finally.cs:239:21:239:22 | After access to parameter b1 [true] | +| Finally.cs:233:10:233:12 | Entry | Finally.cs:240:27:240:42 | After object creation of type ExceptionA | +| Finally.cs:233:10:233:12 | Entry | Finally.cs:243:13:253:13 | {...} | +| Finally.cs:233:10:233:12 | Entry | Finally.cs:244:17:252:17 | After try {...} ... | +| Finally.cs:233:10:233:12 | Entry | Finally.cs:246:25:246:26 | After access to parameter b2 [false] | +| Finally.cs:233:10:233:12 | Entry | Finally.cs:246:25:246:26 | After access to parameter b2 [true] | +| Finally.cs:233:10:233:12 | Entry | Finally.cs:247:31:247:46 | After object creation of type ExceptionA | +| Finally.cs:233:10:233:12 | Entry | Finally.cs:250:17:252:17 | {...} | +| Finally.cs:233:10:233:12 | Entry | Finally.cs:254:13:254:44 | After call to method WriteLine | +| Finally.cs:233:10:233:12 | Entry | Finally.cs:257:9:259:9 | {...} | +| Finally.cs:233:10:233:12 | Exceptional Exit | Finally.cs:233:10:233:12 | Exceptional Exit | +| Finally.cs:233:10:233:12 | Exit | Finally.cs:233:10:233:12 | Exit | +| Finally.cs:235:9:259:9 | After try {...} ... | Finally.cs:235:9:259:9 | After try {...} ... | +| Finally.cs:237:13:253:13 | After try {...} ... | Finally.cs:237:13:253:13 | After try {...} ... | +| Finally.cs:237:13:253:13 | After try {...} ... | Finally.cs:254:13:254:44 | After call to method WriteLine | +| Finally.cs:239:21:239:22 | After access to parameter b1 [false] | Finally.cs:239:21:239:22 | After access to parameter b1 [false] | +| Finally.cs:239:21:239:22 | After access to parameter b1 [true] | Finally.cs:239:21:239:22 | After access to parameter b1 [true] | +| Finally.cs:239:21:239:22 | After access to parameter b1 [true] | Finally.cs:240:27:240:42 | After object creation of type ExceptionA | +| Finally.cs:240:27:240:42 | After object creation of type ExceptionA | Finally.cs:240:27:240:42 | After object creation of type ExceptionA | +| Finally.cs:243:13:253:13 | {...} | Finally.cs:233:10:233:12 | Exceptional Exit | +| Finally.cs:243:13:253:13 | {...} | Finally.cs:233:10:233:12 | Exit | +| Finally.cs:243:13:253:13 | {...} | Finally.cs:235:9:259:9 | After try {...} ... | +| Finally.cs:243:13:253:13 | {...} | Finally.cs:237:13:253:13 | After try {...} ... | | Finally.cs:243:13:253:13 | {...} | Finally.cs:243:13:253:13 | {...} | -| Finally.cs:243:13:253:13 | {...} | Finally.cs:247:25:247:47 | throw ...; | -| Finally.cs:243:13:253:13 | {...} | Finally.cs:247:31:247:46 | object creation of type ExceptionA | +| Finally.cs:243:13:253:13 | {...} | Finally.cs:244:17:252:17 | After try {...} ... | +| Finally.cs:243:13:253:13 | {...} | Finally.cs:246:25:246:26 | After access to parameter b2 [false] | +| Finally.cs:243:13:253:13 | {...} | Finally.cs:246:25:246:26 | After access to parameter b2 [true] | +| Finally.cs:243:13:253:13 | {...} | Finally.cs:247:31:247:46 | After object creation of type ExceptionA | | Finally.cs:243:13:253:13 | {...} | Finally.cs:250:17:252:17 | {...} | -| Finally.cs:243:13:253:13 | {...} | Finally.cs:254:13:254:45 | ...; | +| Finally.cs:243:13:253:13 | {...} | Finally.cs:254:13:254:44 | After call to method WriteLine | | Finally.cs:243:13:253:13 | {...} | Finally.cs:257:9:259:9 | {...} | -| Finally.cs:243:13:253:13 | {...} | Finally.cs:260:9:260:34 | ...; | -| Finally.cs:247:25:247:47 | throw ...; | Finally.cs:247:25:247:47 | throw ...; | -| Finally.cs:247:31:247:46 | object creation of type ExceptionA | Finally.cs:247:25:247:47 | throw ...; | -| Finally.cs:247:31:247:46 | object creation of type ExceptionA | Finally.cs:247:31:247:46 | object creation of type ExceptionA | -| Finally.cs:250:17:252:17 | {...} | Finally.cs:233:10:233:12 | exit M12 | -| Finally.cs:250:17:252:17 | {...} | Finally.cs:233:10:233:12 | exit M12 (abnormal) | +| Finally.cs:244:17:252:17 | After try {...} ... | Finally.cs:237:13:253:13 | After try {...} ... | +| Finally.cs:244:17:252:17 | After try {...} ... | Finally.cs:244:17:252:17 | After try {...} ... | +| Finally.cs:244:17:252:17 | After try {...} ... | Finally.cs:254:13:254:44 | After call to method WriteLine | +| Finally.cs:246:25:246:26 | After access to parameter b2 [false] | Finally.cs:246:25:246:26 | After access to parameter b2 [false] | +| Finally.cs:246:25:246:26 | After access to parameter b2 [true] | Finally.cs:246:25:246:26 | After access to parameter b2 [true] | +| Finally.cs:246:25:246:26 | After access to parameter b2 [true] | Finally.cs:247:31:247:46 | After object creation of type ExceptionA | +| Finally.cs:247:31:247:46 | After object creation of type ExceptionA | Finally.cs:247:31:247:46 | After object creation of type ExceptionA | +| Finally.cs:250:17:252:17 | {...} | Finally.cs:233:10:233:12 | Exceptional Exit | +| Finally.cs:250:17:252:17 | {...} | Finally.cs:233:10:233:12 | Exit | +| Finally.cs:250:17:252:17 | {...} | Finally.cs:235:9:259:9 | After try {...} ... | +| Finally.cs:250:17:252:17 | {...} | Finally.cs:237:13:253:13 | After try {...} ... | +| Finally.cs:250:17:252:17 | {...} | Finally.cs:244:17:252:17 | After try {...} ... | | Finally.cs:250:17:252:17 | {...} | Finally.cs:250:17:252:17 | {...} | -| Finally.cs:250:17:252:17 | {...} | Finally.cs:254:13:254:45 | ...; | +| Finally.cs:250:17:252:17 | {...} | Finally.cs:254:13:254:44 | After call to method WriteLine | | Finally.cs:250:17:252:17 | {...} | Finally.cs:257:9:259:9 | {...} | -| Finally.cs:250:17:252:17 | {...} | Finally.cs:260:9:260:34 | ...; | -| Finally.cs:254:13:254:45 | ...; | Finally.cs:254:13:254:45 | ...; | -| Finally.cs:257:9:259:9 | {...} | Finally.cs:233:10:233:12 | exit M12 | -| Finally.cs:257:9:259:9 | {...} | Finally.cs:233:10:233:12 | exit M12 (abnormal) | +| Finally.cs:254:13:254:44 | After call to method WriteLine | Finally.cs:254:13:254:44 | After call to method WriteLine | +| Finally.cs:257:9:259:9 | {...} | Finally.cs:233:10:233:12 | Exceptional Exit | +| Finally.cs:257:9:259:9 | {...} | Finally.cs:233:10:233:12 | Exit | +| Finally.cs:257:9:259:9 | {...} | Finally.cs:235:9:259:9 | After try {...} ... | | Finally.cs:257:9:259:9 | {...} | Finally.cs:257:9:259:9 | {...} | -| Finally.cs:257:9:259:9 | {...} | Finally.cs:260:9:260:34 | ...; | -| Finally.cs:260:9:260:34 | ...; | Finally.cs:260:9:260:34 | ...; | -| Finally.cs:263:10:263:12 | enter M13 | Finally.cs:263:10:263:12 | enter M13 | -| Finally.cs:263:10:263:12 | enter M13 | Finally.cs:263:10:263:12 | exit M13 | -| Finally.cs:263:10:263:12 | enter M13 | Finally.cs:263:10:263:12 | exit M13 (abnormal) | -| Finally.cs:263:10:263:12 | enter M13 | Finally.cs:263:10:263:12 | exit M13 (normal) | -| Finally.cs:263:10:263:12 | exit M13 | Finally.cs:263:10:263:12 | exit M13 | -| Finally.cs:263:10:263:12 | exit M13 (abnormal) | Finally.cs:263:10:263:12 | exit M13 (abnormal) | -| Finally.cs:263:10:263:12 | exit M13 (normal) | Finally.cs:263:10:263:12 | exit M13 (normal) | -| Foreach.cs:4:7:4:13 | enter Foreach | Foreach.cs:4:7:4:13 | enter Foreach | -| Foreach.cs:6:10:6:11 | enter M1 | Foreach.cs:6:10:6:11 | enter M1 | -| Foreach.cs:6:10:6:11 | enter M1 | Foreach.cs:6:10:6:11 | exit M1 (normal) | -| Foreach.cs:6:10:6:11 | enter M1 | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | -| Foreach.cs:6:10:6:11 | enter M1 | Foreach.cs:8:22:8:24 | String arg | -| Foreach.cs:6:10:6:11 | exit M1 (normal) | Foreach.cs:6:10:6:11 | exit M1 (normal) | -| Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:6:10:6:11 | exit M1 (normal) | -| Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | -| Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:22:8:24 | String arg | +| Finally.cs:263:10:263:12 | Entry | Finally.cs:263:10:263:12 | Entry | +| Finally.cs:263:10:263:12 | Entry | Finally.cs:263:10:263:12 | Exceptional Exit | +| Finally.cs:263:10:263:12 | Entry | Finally.cs:263:10:263:12 | Exit | +| Finally.cs:263:10:263:12 | Entry | Finally.cs:265:9:273:9 | After try {...} ... | +| Finally.cs:263:10:263:12 | Entry | Finally.cs:267:13:267:34 | After call to method WriteLine | +| Finally.cs:263:10:263:12 | Entry | Finally.cs:270:9:273:9 | {...} | +| Finally.cs:263:10:263:12 | Exceptional Exit | Finally.cs:263:10:263:12 | Exceptional Exit | +| Finally.cs:263:10:263:12 | Exit | Finally.cs:263:10:263:12 | Exit | +| Finally.cs:265:9:273:9 | After try {...} ... | Finally.cs:265:9:273:9 | After try {...} ... | +| Finally.cs:267:13:267:34 | After call to method WriteLine | Finally.cs:267:13:267:34 | After call to method WriteLine | +| Finally.cs:270:9:273:9 | {...} | Finally.cs:263:10:263:12 | Exceptional Exit | +| Finally.cs:270:9:273:9 | {...} | Finally.cs:263:10:263:12 | Exit | +| Finally.cs:270:9:273:9 | {...} | Finally.cs:265:9:273:9 | After try {...} ... | +| Finally.cs:270:9:273:9 | {...} | Finally.cs:270:9:273:9 | {...} | +| Foreach.cs:4:7:4:13 | Entry | Foreach.cs:4:7:4:13 | Entry | +| Foreach.cs:6:10:6:11 | Entry | Foreach.cs:6:10:6:11 | Entry | +| Foreach.cs:6:10:6:11 | Entry | Foreach.cs:8:9:9:13 | After foreach (... ... in ...) ... | +| Foreach.cs:6:10:6:11 | Entry | Foreach.cs:8:22:8:24 | String arg | +| Foreach.cs:6:10:6:11 | Entry | Foreach.cs:8:29:8:32 | After access to parameter args [empty] | +| Foreach.cs:6:10:6:11 | Entry | Foreach.cs:8:29:8:32 | After access to parameter args [non-empty] | +| Foreach.cs:8:9:9:13 | After foreach (... ... in ...) ... | Foreach.cs:8:9:9:13 | After foreach (... ... in ...) ... | | Foreach.cs:8:22:8:24 | String arg | Foreach.cs:8:22:8:24 | String arg | -| Foreach.cs:12:10:12:11 | enter M2 | Foreach.cs:12:10:12:11 | enter M2 | -| Foreach.cs:12:10:12:11 | enter M2 | Foreach.cs:12:10:12:11 | exit M2 (normal) | -| Foreach.cs:12:10:12:11 | enter M2 | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | -| Foreach.cs:12:10:12:11 | enter M2 | Foreach.cs:14:22:14:22 | String _ | -| Foreach.cs:12:10:12:11 | exit M2 (normal) | Foreach.cs:12:10:12:11 | exit M2 (normal) | -| Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:12:10:12:11 | exit M2 (normal) | -| Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | -| Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:14:22:14:22 | String _ | +| Foreach.cs:8:29:8:32 | After access to parameter args [empty] | Foreach.cs:8:29:8:32 | After access to parameter args [empty] | +| Foreach.cs:8:29:8:32 | After access to parameter args [non-empty] | Foreach.cs:8:22:8:24 | String arg | +| Foreach.cs:8:29:8:32 | After access to parameter args [non-empty] | Foreach.cs:8:29:8:32 | After access to parameter args [non-empty] | +| Foreach.cs:12:10:12:11 | Entry | Foreach.cs:12:10:12:11 | Entry | +| Foreach.cs:12:10:12:11 | Entry | Foreach.cs:14:9:15:13 | After foreach (... ... in ...) ... | +| Foreach.cs:12:10:12:11 | Entry | Foreach.cs:14:22:14:22 | String _ | +| Foreach.cs:12:10:12:11 | Entry | Foreach.cs:14:27:14:30 | After access to parameter args [empty] | +| Foreach.cs:12:10:12:11 | Entry | Foreach.cs:14:27:14:30 | After access to parameter args [non-empty] | +| Foreach.cs:14:9:15:13 | After foreach (... ... in ...) ... | Foreach.cs:14:9:15:13 | After foreach (... ... in ...) ... | | Foreach.cs:14:22:14:22 | String _ | Foreach.cs:14:22:14:22 | String _ | -| Foreach.cs:18:10:18:11 | enter M3 | Foreach.cs:18:10:18:11 | enter M3 | -| Foreach.cs:18:10:18:11 | enter M3 | Foreach.cs:18:10:18:11 | exit M3 (normal) | -| Foreach.cs:18:10:18:11 | enter M3 | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | -| Foreach.cs:18:10:18:11 | enter M3 | Foreach.cs:20:22:20:22 | String x | -| Foreach.cs:18:10:18:11 | enter M3 | Foreach.cs:20:27:20:38 | call to method ToArray | -| Foreach.cs:18:10:18:11 | enter M3 | Foreach.cs:20:27:20:68 | ... ?? ... | -| Foreach.cs:18:10:18:11 | enter M3 | Foreach.cs:20:43:20:68 | call to method Empty | -| Foreach.cs:18:10:18:11 | exit M3 (normal) | Foreach.cs:18:10:18:11 | exit M3 (normal) | -| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:18:10:18:11 | exit M3 (normal) | -| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | -| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:22:20:22 | String x | +| Foreach.cs:14:27:14:30 | After access to parameter args [empty] | Foreach.cs:14:27:14:30 | After access to parameter args [empty] | +| Foreach.cs:14:27:14:30 | After access to parameter args [non-empty] | Foreach.cs:14:22:14:22 | String _ | +| Foreach.cs:14:27:14:30 | After access to parameter args [non-empty] | Foreach.cs:14:27:14:30 | After access to parameter args [non-empty] | +| Foreach.cs:18:10:18:11 | Entry | Foreach.cs:18:10:18:11 | Entry | +| Foreach.cs:18:10:18:11 | Entry | Foreach.cs:20:9:21:11 | After foreach (... ... in ...) ... | +| Foreach.cs:18:10:18:11 | Entry | Foreach.cs:20:22:20:22 | String x | +| Foreach.cs:18:10:18:11 | Entry | Foreach.cs:20:27:20:27 | After access to parameter e [non-null] | +| Foreach.cs:18:10:18:11 | Entry | Foreach.cs:20:27:20:27 | After access to parameter e [null] | +| Foreach.cs:18:10:18:11 | Entry | Foreach.cs:20:27:20:38 | After call to method ToArray [non-null] | +| Foreach.cs:18:10:18:11 | Entry | Foreach.cs:20:27:20:38 | After call to method ToArray [null] | +| Foreach.cs:18:10:18:11 | Entry | Foreach.cs:20:27:20:68 | After ... ?? ... [empty] | +| Foreach.cs:18:10:18:11 | Entry | Foreach.cs:20:27:20:68 | After ... ?? ... [non-empty] | +| Foreach.cs:18:10:18:11 | Entry | Foreach.cs:20:43:20:68 | After call to method Empty [empty] | +| Foreach.cs:18:10:18:11 | Entry | Foreach.cs:20:43:20:68 | After call to method Empty [non-empty] | +| Foreach.cs:20:9:21:11 | After foreach (... ... in ...) ... | Foreach.cs:20:9:21:11 | After foreach (... ... in ...) ... | | Foreach.cs:20:22:20:22 | String x | Foreach.cs:20:22:20:22 | String x | -| Foreach.cs:20:27:20:38 | call to method ToArray | Foreach.cs:20:27:20:38 | call to method ToArray | -| Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:18:10:18:11 | exit M3 (normal) | -| Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | -| Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:20:22:20:22 | String x | -| Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:20:27:20:68 | ... ?? ... | -| Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:20:43:20:68 | call to method Empty | -| Foreach.cs:24:10:24:11 | enter M4 | Foreach.cs:24:10:24:11 | enter M4 | -| Foreach.cs:24:10:24:11 | enter M4 | Foreach.cs:24:10:24:11 | exit M4 (normal) | -| Foreach.cs:24:10:24:11 | enter M4 | Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | -| Foreach.cs:24:10:24:11 | enter M4 | Foreach.cs:26:23:26:23 | String x | -| Foreach.cs:24:10:24:11 | exit M4 (normal) | Foreach.cs:24:10:24:11 | exit M4 (normal) | -| Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | Foreach.cs:24:10:24:11 | exit M4 (normal) | -| Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | -| Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | Foreach.cs:26:23:26:23 | String x | -| Foreach.cs:26:23:26:23 | String x | Foreach.cs:26:23:26:23 | String x | -| Foreach.cs:30:10:30:11 | enter M5 | Foreach.cs:30:10:30:11 | enter M5 | -| Foreach.cs:30:10:30:11 | enter M5 | Foreach.cs:30:10:30:11 | exit M5 (normal) | -| Foreach.cs:30:10:30:11 | enter M5 | Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | -| Foreach.cs:30:10:30:11 | enter M5 | Foreach.cs:32:23:32:23 | String x | -| Foreach.cs:30:10:30:11 | exit M5 (normal) | Foreach.cs:30:10:30:11 | exit M5 (normal) | -| Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | Foreach.cs:30:10:30:11 | exit M5 (normal) | -| Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | -| Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | Foreach.cs:32:23:32:23 | String x | -| Foreach.cs:32:23:32:23 | String x | Foreach.cs:32:23:32:23 | String x | -| Foreach.cs:36:10:36:11 | enter M6 | Foreach.cs:36:10:36:11 | enter M6 | -| Foreach.cs:36:10:36:11 | enter M6 | Foreach.cs:36:10:36:11 | exit M6 (normal) | -| Foreach.cs:36:10:36:11 | enter M6 | Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | -| Foreach.cs:36:10:36:11 | enter M6 | Foreach.cs:38:26:38:26 | String x | -| Foreach.cs:36:10:36:11 | exit M6 (normal) | Foreach.cs:36:10:36:11 | exit M6 (normal) | -| Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | Foreach.cs:36:10:36:11 | exit M6 (normal) | -| Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | -| Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | Foreach.cs:38:26:38:26 | String x | -| Foreach.cs:38:26:38:26 | String x | Foreach.cs:38:26:38:26 | String x | -| Initializers.cs:3:7:3:18 | enter | Initializers.cs:3:7:3:18 | enter | -| Initializers.cs:3:7:3:18 | enter Initializers | Initializers.cs:3:7:3:18 | enter Initializers | -| Initializers.cs:8:5:8:16 | enter Initializers | Initializers.cs:8:5:8:16 | enter Initializers | -| Initializers.cs:10:5:10:16 | enter Initializers | Initializers.cs:10:5:10:16 | enter Initializers | -| Initializers.cs:12:10:12:10 | enter M | Initializers.cs:12:10:12:10 | enter M | -| Initializers.cs:18:16:18:16 | enter H | Initializers.cs:18:16:18:16 | enter H | -| Initializers.cs:20:11:20:23 | enter | Initializers.cs:20:11:20:23 | enter | -| Initializers.cs:20:11:20:23 | enter NoConstructor | Initializers.cs:20:11:20:23 | enter NoConstructor | -| Initializers.cs:26:11:26:13 | enter | Initializers.cs:26:11:26:13 | enter | -| Initializers.cs:31:9:31:11 | enter Sub | Initializers.cs:31:9:31:11 | enter Sub | -| Initializers.cs:33:9:33:11 | enter Sub | Initializers.cs:33:9:33:11 | enter Sub | -| Initializers.cs:35:9:35:11 | enter Sub | Initializers.cs:35:9:35:11 | enter Sub | -| Initializers.cs:39:7:39:23 | enter IndexInitializers | Initializers.cs:39:7:39:23 | enter IndexInitializers | -| Initializers.cs:41:11:41:18 | enter Compound | Initializers.cs:41:11:41:18 | enter Compound | -| Initializers.cs:51:10:51:13 | enter Test | Initializers.cs:51:10:51:13 | enter Test | -| LoopUnrolling.cs:5:7:5:19 | enter LoopUnrolling | LoopUnrolling.cs:5:7:5:19 | enter LoopUnrolling | -| LoopUnrolling.cs:7:10:7:11 | enter M1 | LoopUnrolling.cs:7:10:7:11 | enter M1 | -| LoopUnrolling.cs:7:10:7:11 | enter M1 | LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | -| LoopUnrolling.cs:7:10:7:11 | enter M1 | LoopUnrolling.cs:10:13:10:19 | return ...; | -| LoopUnrolling.cs:7:10:7:11 | enter M1 | LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:7:10:7:11 | enter M1 | LoopUnrolling.cs:11:22:11:24 | String arg | -| LoopUnrolling.cs:7:10:7:11 | enter M1 | LoopUnrolling.cs:11:29:11:32 | access to parameter args | -| LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | -| LoopUnrolling.cs:10:13:10:19 | return ...; | LoopUnrolling.cs:10:13:10:19 | return ...; | -| LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:11:22:11:24 | String arg | +| Foreach.cs:20:27:20:27 | After access to parameter e [non-null] | Foreach.cs:20:27:20:27 | After access to parameter e [non-null] | +| Foreach.cs:20:27:20:27 | After access to parameter e [non-null] | Foreach.cs:20:27:20:38 | After call to method ToArray [non-null] | +| Foreach.cs:20:27:20:27 | After access to parameter e [null] | Foreach.cs:20:27:20:27 | After access to parameter e [null] | +| Foreach.cs:20:27:20:38 | After call to method ToArray [non-null] | Foreach.cs:20:27:20:38 | After call to method ToArray [non-null] | +| Foreach.cs:20:27:20:38 | After call to method ToArray [null] | Foreach.cs:20:27:20:38 | After call to method ToArray [null] | +| Foreach.cs:20:27:20:38 | After call to method ToArray [null] | Foreach.cs:20:43:20:68 | After call to method Empty [empty] | +| Foreach.cs:20:27:20:38 | After call to method ToArray [null] | Foreach.cs:20:43:20:68 | After call to method Empty [non-empty] | +| Foreach.cs:20:27:20:68 | After ... ?? ... [empty] | Foreach.cs:20:27:20:68 | After ... ?? ... [empty] | +| Foreach.cs:20:27:20:68 | After ... ?? ... [non-empty] | Foreach.cs:20:22:20:22 | String x | +| Foreach.cs:20:27:20:68 | After ... ?? ... [non-empty] | Foreach.cs:20:27:20:68 | After ... ?? ... [non-empty] | +| Foreach.cs:20:43:20:68 | After call to method Empty [empty] | Foreach.cs:20:43:20:68 | After call to method Empty [empty] | +| Foreach.cs:20:43:20:68 | After call to method Empty [non-empty] | Foreach.cs:20:43:20:68 | After call to method Empty [non-empty] | +| Foreach.cs:24:10:24:11 | Entry | Foreach.cs:24:10:24:11 | Entry | +| Foreach.cs:24:10:24:11 | Entry | Foreach.cs:26:9:27:11 | After foreach (... ... in ...) ... | +| Foreach.cs:24:10:24:11 | Entry | Foreach.cs:26:18:26:31 | Before (..., ...) | +| Foreach.cs:24:10:24:11 | Entry | Foreach.cs:26:36:26:39 | After access to parameter args [empty] | +| Foreach.cs:24:10:24:11 | Entry | Foreach.cs:26:36:26:39 | After access to parameter args [non-empty] | +| Foreach.cs:26:9:27:11 | After foreach (... ... in ...) ... | Foreach.cs:26:9:27:11 | After foreach (... ... in ...) ... | +| Foreach.cs:26:18:26:31 | Before (..., ...) | Foreach.cs:26:18:26:31 | Before (..., ...) | +| Foreach.cs:26:36:26:39 | After access to parameter args [empty] | Foreach.cs:26:36:26:39 | After access to parameter args [empty] | +| Foreach.cs:26:36:26:39 | After access to parameter args [non-empty] | Foreach.cs:26:18:26:31 | Before (..., ...) | +| Foreach.cs:26:36:26:39 | After access to parameter args [non-empty] | Foreach.cs:26:36:26:39 | After access to parameter args [non-empty] | +| Foreach.cs:30:10:30:11 | Entry | Foreach.cs:30:10:30:11 | Entry | +| Foreach.cs:30:10:30:11 | Entry | Foreach.cs:32:9:33:11 | After foreach (... ... in ...) ... | +| Foreach.cs:30:10:30:11 | Entry | Foreach.cs:32:18:32:27 | Before (..., ...) | +| Foreach.cs:30:10:30:11 | Entry | Foreach.cs:32:32:32:35 | After access to parameter args [empty] | +| Foreach.cs:30:10:30:11 | Entry | Foreach.cs:32:32:32:35 | After access to parameter args [non-empty] | +| Foreach.cs:32:9:33:11 | After foreach (... ... in ...) ... | Foreach.cs:32:9:33:11 | After foreach (... ... in ...) ... | +| Foreach.cs:32:18:32:27 | Before (..., ...) | Foreach.cs:32:18:32:27 | Before (..., ...) | +| Foreach.cs:32:32:32:35 | After access to parameter args [empty] | Foreach.cs:32:32:32:35 | After access to parameter args [empty] | +| Foreach.cs:32:32:32:35 | After access to parameter args [non-empty] | Foreach.cs:32:18:32:27 | Before (..., ...) | +| Foreach.cs:32:32:32:35 | After access to parameter args [non-empty] | Foreach.cs:32:32:32:35 | After access to parameter args [non-empty] | +| Foreach.cs:36:10:36:11 | Entry | Foreach.cs:36:10:36:11 | Entry | +| Foreach.cs:36:10:36:11 | Entry | Foreach.cs:38:9:39:11 | After foreach (... ... in ...) ... | +| Foreach.cs:36:10:36:11 | Entry | Foreach.cs:38:18:38:34 | Before (..., ...) | +| Foreach.cs:36:10:36:11 | Entry | Foreach.cs:38:39:38:42 | After access to parameter args [empty] | +| Foreach.cs:36:10:36:11 | Entry | Foreach.cs:38:39:38:42 | After access to parameter args [non-empty] | +| Foreach.cs:38:9:39:11 | After foreach (... ... in ...) ... | Foreach.cs:38:9:39:11 | After foreach (... ... in ...) ... | +| Foreach.cs:38:18:38:34 | Before (..., ...) | Foreach.cs:38:18:38:34 | Before (..., ...) | +| Foreach.cs:38:39:38:42 | After access to parameter args [empty] | Foreach.cs:38:39:38:42 | After access to parameter args [empty] | +| Foreach.cs:38:39:38:42 | After access to parameter args [non-empty] | Foreach.cs:38:18:38:34 | Before (..., ...) | +| Foreach.cs:38:39:38:42 | After access to parameter args [non-empty] | Foreach.cs:38:39:38:42 | After access to parameter args [non-empty] | +| Initializers.cs:3:7:3:18 | Entry | Initializers.cs:3:7:3:18 | Entry | +| Initializers.cs:3:7:3:18 | Entry | Initializers.cs:3:7:3:18 | Entry | +| Initializers.cs:8:5:8:16 | Entry | Initializers.cs:8:5:8:16 | Entry | +| Initializers.cs:10:5:10:16 | Entry | Initializers.cs:10:5:10:16 | Entry | +| Initializers.cs:12:10:12:10 | Entry | Initializers.cs:12:10:12:10 | Entry | +| Initializers.cs:20:11:20:23 | Entry | Initializers.cs:20:11:20:23 | Entry | +| Initializers.cs:20:11:20:23 | Entry | Initializers.cs:20:11:20:23 | Entry | +| Initializers.cs:26:11:26:13 | Entry | Initializers.cs:26:11:26:13 | Entry | +| Initializers.cs:31:9:31:11 | Entry | Initializers.cs:31:9:31:11 | Entry | +| Initializers.cs:33:9:33:11 | Entry | Initializers.cs:33:9:33:11 | Entry | +| Initializers.cs:35:9:35:11 | Entry | Initializers.cs:35:9:35:11 | Entry | +| Initializers.cs:39:7:39:23 | Entry | Initializers.cs:39:7:39:23 | Entry | +| Initializers.cs:41:11:41:18 | Entry | Initializers.cs:41:11:41:18 | Entry | +| Initializers.cs:51:10:51:13 | Entry | Initializers.cs:51:10:51:13 | Entry | +| LoopUnrolling.cs:5:7:5:19 | Entry | LoopUnrolling.cs:5:7:5:19 | Entry | +| LoopUnrolling.cs:7:10:7:11 | Entry | LoopUnrolling.cs:7:10:7:11 | Entry | +| LoopUnrolling.cs:7:10:7:11 | Entry | LoopUnrolling.cs:7:10:7:11 | Normal Exit | +| LoopUnrolling.cs:7:10:7:11 | Entry | LoopUnrolling.cs:9:13:9:28 | After ... == ... [false] | +| LoopUnrolling.cs:7:10:7:11 | Entry | LoopUnrolling.cs:9:13:9:28 | After ... == ... [true] | +| LoopUnrolling.cs:7:10:7:11 | Entry | LoopUnrolling.cs:11:9:12:35 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:7:10:7:11 | Entry | LoopUnrolling.cs:11:22:11:24 | String arg | +| LoopUnrolling.cs:7:10:7:11 | Entry | LoopUnrolling.cs:11:29:11:32 | After access to parameter args [empty] | +| LoopUnrolling.cs:7:10:7:11 | Entry | LoopUnrolling.cs:11:29:11:32 | After access to parameter args [non-empty] | +| LoopUnrolling.cs:7:10:7:11 | Normal Exit | LoopUnrolling.cs:7:10:7:11 | Normal Exit | +| LoopUnrolling.cs:9:13:9:28 | After ... == ... [false] | LoopUnrolling.cs:9:13:9:28 | After ... == ... [false] | +| LoopUnrolling.cs:9:13:9:28 | After ... == ... [false] | LoopUnrolling.cs:11:9:12:35 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:9:13:9:28 | After ... == ... [false] | LoopUnrolling.cs:11:22:11:24 | String arg | +| LoopUnrolling.cs:9:13:9:28 | After ... == ... [false] | LoopUnrolling.cs:11:29:11:32 | After access to parameter args [empty] | +| LoopUnrolling.cs:9:13:9:28 | After ... == ... [false] | LoopUnrolling.cs:11:29:11:32 | After access to parameter args [non-empty] | +| LoopUnrolling.cs:9:13:9:28 | After ... == ... [true] | LoopUnrolling.cs:9:13:9:28 | After ... == ... [true] | +| LoopUnrolling.cs:11:9:12:35 | After foreach (... ... in ...) ... | LoopUnrolling.cs:11:9:12:35 | After foreach (... ... in ...) ... | | LoopUnrolling.cs:11:22:11:24 | String arg | LoopUnrolling.cs:11:22:11:24 | String arg | -| LoopUnrolling.cs:11:29:11:32 | access to parameter args | LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:11:29:11:32 | access to parameter args | LoopUnrolling.cs:11:22:11:24 | String arg | -| LoopUnrolling.cs:11:29:11:32 | access to parameter args | LoopUnrolling.cs:11:29:11:32 | access to parameter args | -| LoopUnrolling.cs:15:10:15:11 | enter M2 | LoopUnrolling.cs:15:10:15:11 | enter M2 | -| LoopUnrolling.cs:15:10:15:11 | enter M2 | LoopUnrolling.cs:15:10:15:11 | exit M2 (normal) | -| LoopUnrolling.cs:15:10:15:11 | enter M2 | LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:15:10:15:11 | enter M2 | LoopUnrolling.cs:18:22:18:22 | String x | -| LoopUnrolling.cs:15:10:15:11 | exit M2 (normal) | LoopUnrolling.cs:15:10:15:11 | exit M2 (normal) | -| LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:15:10:15:11 | exit M2 (normal) | -| LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:18:22:18:22 | String x | +| LoopUnrolling.cs:11:29:11:32 | After access to parameter args [empty] | LoopUnrolling.cs:11:29:11:32 | After access to parameter args [empty] | +| LoopUnrolling.cs:11:29:11:32 | After access to parameter args [non-empty] | LoopUnrolling.cs:11:22:11:24 | String arg | +| LoopUnrolling.cs:11:29:11:32 | After access to parameter args [non-empty] | LoopUnrolling.cs:11:29:11:32 | After access to parameter args [non-empty] | +| LoopUnrolling.cs:15:10:15:11 | Entry | LoopUnrolling.cs:15:10:15:11 | Entry | +| LoopUnrolling.cs:15:10:15:11 | Entry | LoopUnrolling.cs:18:9:19:33 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:15:10:15:11 | Entry | LoopUnrolling.cs:18:22:18:22 | String x | +| LoopUnrolling.cs:15:10:15:11 | Entry | LoopUnrolling.cs:18:27:18:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:15:10:15:11 | Entry | LoopUnrolling.cs:18:27:18:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:18:9:19:33 | After foreach (... ... in ...) ... | LoopUnrolling.cs:18:9:19:33 | After foreach (... ... in ...) ... | | LoopUnrolling.cs:18:22:18:22 | String x | LoopUnrolling.cs:18:22:18:22 | String x | -| LoopUnrolling.cs:22:10:22:11 | enter M3 | LoopUnrolling.cs:22:10:22:11 | enter M3 | -| LoopUnrolling.cs:22:10:22:11 | enter M3 | LoopUnrolling.cs:22:10:22:11 | exit M3 (normal) | -| LoopUnrolling.cs:22:10:22:11 | enter M3 | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:22:10:22:11 | enter M3 | LoopUnrolling.cs:24:22:24:24 | Char arg | -| LoopUnrolling.cs:22:10:22:11 | enter M3 | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:22:10:22:11 | enter M3 | LoopUnrolling.cs:25:26:25:29 | Char arg0 | -| LoopUnrolling.cs:22:10:22:11 | exit M3 (normal) | LoopUnrolling.cs:22:10:22:11 | exit M3 (normal) | -| LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:22:10:22:11 | exit M3 (normal) | -| LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:24:22:24:24 | Char arg | -| LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:25:26:25:29 | Char arg0 | +| LoopUnrolling.cs:18:27:18:28 | After access to local variable xs [empty] | LoopUnrolling.cs:18:27:18:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:18:27:18:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:18:22:18:22 | String x | +| LoopUnrolling.cs:18:27:18:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:18:27:18:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:22:10:22:11 | Entry | LoopUnrolling.cs:22:10:22:11 | Entry | +| LoopUnrolling.cs:22:10:22:11 | Entry | LoopUnrolling.cs:24:9:26:40 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:22:10:22:11 | Entry | LoopUnrolling.cs:24:22:24:24 | Char arg | +| LoopUnrolling.cs:22:10:22:11 | Entry | LoopUnrolling.cs:24:29:24:32 | After access to parameter args [empty] | +| LoopUnrolling.cs:22:10:22:11 | Entry | LoopUnrolling.cs:24:29:24:32 | After access to parameter args [non-empty] | +| LoopUnrolling.cs:22:10:22:11 | Entry | LoopUnrolling.cs:25:13:26:40 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:22:10:22:11 | Entry | LoopUnrolling.cs:25:26:25:29 | Char arg0 | +| LoopUnrolling.cs:22:10:22:11 | Entry | LoopUnrolling.cs:25:34:25:37 | After access to parameter args [empty] | +| LoopUnrolling.cs:22:10:22:11 | Entry | LoopUnrolling.cs:25:34:25:37 | After access to parameter args [non-empty] | +| LoopUnrolling.cs:24:9:26:40 | After foreach (... ... in ...) ... | LoopUnrolling.cs:24:9:26:40 | After foreach (... ... in ...) ... | | LoopUnrolling.cs:24:22:24:24 | Char arg | LoopUnrolling.cs:24:22:24:24 | Char arg | -| LoopUnrolling.cs:24:22:24:24 | Char arg | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:24:22:24:24 | Char arg | LoopUnrolling.cs:25:13:26:40 | After foreach (... ... in ...) ... | | LoopUnrolling.cs:24:22:24:24 | Char arg | LoopUnrolling.cs:25:26:25:29 | Char arg0 | -| LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:25:26:25:29 | Char arg0 | +| LoopUnrolling.cs:24:22:24:24 | Char arg | LoopUnrolling.cs:25:34:25:37 | After access to parameter args [empty] | +| LoopUnrolling.cs:24:22:24:24 | Char arg | LoopUnrolling.cs:25:34:25:37 | After access to parameter args [non-empty] | +| LoopUnrolling.cs:24:29:24:32 | After access to parameter args [empty] | LoopUnrolling.cs:24:29:24:32 | After access to parameter args [empty] | +| LoopUnrolling.cs:24:29:24:32 | After access to parameter args [non-empty] | LoopUnrolling.cs:24:22:24:24 | Char arg | +| LoopUnrolling.cs:24:29:24:32 | After access to parameter args [non-empty] | LoopUnrolling.cs:24:29:24:32 | After access to parameter args [non-empty] | +| LoopUnrolling.cs:24:29:24:32 | After access to parameter args [non-empty] | LoopUnrolling.cs:25:13:26:40 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:24:29:24:32 | After access to parameter args [non-empty] | LoopUnrolling.cs:25:26:25:29 | Char arg0 | +| LoopUnrolling.cs:24:29:24:32 | After access to parameter args [non-empty] | LoopUnrolling.cs:25:34:25:37 | After access to parameter args [empty] | +| LoopUnrolling.cs:24:29:24:32 | After access to parameter args [non-empty] | LoopUnrolling.cs:25:34:25:37 | After access to parameter args [non-empty] | +| LoopUnrolling.cs:25:13:26:40 | After foreach (... ... in ...) ... | LoopUnrolling.cs:25:13:26:40 | After foreach (... ... in ...) ... | | LoopUnrolling.cs:25:26:25:29 | Char arg0 | LoopUnrolling.cs:25:26:25:29 | Char arg0 | -| LoopUnrolling.cs:29:10:29:11 | enter M4 | LoopUnrolling.cs:29:10:29:11 | enter M4 | -| LoopUnrolling.cs:29:10:29:11 | enter M4 | LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | -| LoopUnrolling.cs:29:10:29:11 | enter M4 | LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:29:10:29:11 | enter M4 | LoopUnrolling.cs:32:22:32:22 | String x | -| LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | -| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | -| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:32:22:32:22 | String x | +| LoopUnrolling.cs:25:34:25:37 | After access to parameter args [empty] | LoopUnrolling.cs:25:34:25:37 | After access to parameter args [empty] | +| LoopUnrolling.cs:25:34:25:37 | After access to parameter args [non-empty] | LoopUnrolling.cs:25:26:25:29 | Char arg0 | +| LoopUnrolling.cs:25:34:25:37 | After access to parameter args [non-empty] | LoopUnrolling.cs:25:34:25:37 | After access to parameter args [non-empty] | +| LoopUnrolling.cs:29:10:29:11 | Entry | LoopUnrolling.cs:29:10:29:11 | Entry | +| LoopUnrolling.cs:29:10:29:11 | Entry | LoopUnrolling.cs:32:9:33:33 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:29:10:29:11 | Entry | LoopUnrolling.cs:32:22:32:22 | String x | +| LoopUnrolling.cs:29:10:29:11 | Entry | LoopUnrolling.cs:32:27:32:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:29:10:29:11 | Entry | LoopUnrolling.cs:32:27:32:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:32:9:33:33 | After foreach (... ... in ...) ... | LoopUnrolling.cs:32:9:33:33 | After foreach (... ... in ...) ... | | LoopUnrolling.cs:32:22:32:22 | String x | LoopUnrolling.cs:32:22:32:22 | String x | -| LoopUnrolling.cs:36:10:36:11 | enter M5 | LoopUnrolling.cs:36:10:36:11 | enter M5 | -| LoopUnrolling.cs:36:10:36:11 | enter M5 | LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | -| LoopUnrolling.cs:36:10:36:11 | enter M5 | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:36:10:36:11 | enter M5 | LoopUnrolling.cs:40:22:40:22 | String x | -| LoopUnrolling.cs:36:10:36:11 | enter M5 | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:36:10:36:11 | enter M5 | LoopUnrolling.cs:41:26:41:26 | String y | -| LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | -| LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | -| LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:40:22:40:22 | String x | -| LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:41:26:41:26 | String y | +| LoopUnrolling.cs:32:27:32:28 | After access to local variable xs [empty] | LoopUnrolling.cs:32:27:32:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:32:27:32:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:32:22:32:22 | String x | +| LoopUnrolling.cs:32:27:32:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:32:27:32:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:36:10:36:11 | Entry | LoopUnrolling.cs:36:10:36:11 | Entry | +| LoopUnrolling.cs:36:10:36:11 | Entry | LoopUnrolling.cs:40:9:42:41 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:36:10:36:11 | Entry | LoopUnrolling.cs:40:22:40:22 | String x | +| LoopUnrolling.cs:36:10:36:11 | Entry | LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:36:10:36:11 | Entry | LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:36:10:36:11 | Entry | LoopUnrolling.cs:41:13:42:41 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:36:10:36:11 | Entry | LoopUnrolling.cs:41:26:41:26 | String y | +| LoopUnrolling.cs:36:10:36:11 | Entry | LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [empty] | +| LoopUnrolling.cs:36:10:36:11 | Entry | LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [non-empty] | +| LoopUnrolling.cs:40:9:42:41 | After foreach (... ... in ...) ... | LoopUnrolling.cs:40:9:42:41 | After foreach (... ... in ...) ... | | LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:40:22:40:22 | String x | -| LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | +| LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:41:13:42:41 | After foreach (... ... in ...) ... | | LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:41:26:41:26 | String y | -| LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:41:26:41:26 | String y | +| LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [empty] | +| LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [non-empty] | +| LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [empty] | LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:40:22:40:22 | String x | +| LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:41:13:42:41 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:41:26:41:26 | String y | +| LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [empty] | +| LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [non-empty] | +| LoopUnrolling.cs:41:13:42:41 | After foreach (... ... in ...) ... | LoopUnrolling.cs:41:13:42:41 | After foreach (... ... in ...) ... | | LoopUnrolling.cs:41:26:41:26 | String y | LoopUnrolling.cs:41:26:41:26 | String y | -| LoopUnrolling.cs:45:10:45:11 | enter M6 | LoopUnrolling.cs:45:10:45:11 | enter M6 | -| LoopUnrolling.cs:45:10:45:11 | enter M6 | LoopUnrolling.cs:45:10:45:11 | exit M6 (normal) | -| LoopUnrolling.cs:45:10:45:11 | enter M6 | LoopUnrolling.cs:48:22:48:22 | String x | -| LoopUnrolling.cs:45:10:45:11 | enter M6 | LoopUnrolling.cs:50:9:50:13 | Label: | -| LoopUnrolling.cs:45:10:45:11 | exit M6 (normal) | LoopUnrolling.cs:45:10:45:11 | exit M6 (normal) | -| LoopUnrolling.cs:48:22:48:22 | String x | LoopUnrolling.cs:48:22:48:22 | String x | -| LoopUnrolling.cs:48:22:48:22 | String x | LoopUnrolling.cs:50:9:50:13 | Label: | +| LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [empty] | LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [empty] | +| LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [non-empty] | LoopUnrolling.cs:41:26:41:26 | String y | +| LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [non-empty] | LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [non-empty] | +| LoopUnrolling.cs:45:10:45:11 | Entry | LoopUnrolling.cs:45:10:45:11 | Entry | +| LoopUnrolling.cs:45:10:45:11 | Entry | LoopUnrolling.cs:48:27:48:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:45:10:45:11 | Entry | LoopUnrolling.cs:48:27:48:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:45:10:45:11 | Entry | LoopUnrolling.cs:50:9:50:13 | Label: | +| LoopUnrolling.cs:48:27:48:28 | After access to local variable xs [empty] | LoopUnrolling.cs:48:27:48:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:48:27:48:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:48:27:48:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:48:27:48:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:50:9:50:13 | Label: | | LoopUnrolling.cs:50:9:50:13 | Label: | LoopUnrolling.cs:50:9:50:13 | Label: | -| LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:55:10:55:11 | enter M7 | -| LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | -| LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:58:22:58:22 | String x | -| LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:61:17:61:37 | ...; | -| LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:62:13:63:37 | if (...) ... | -| LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:63:17:63:37 | ...; | -| LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | -| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | -| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:58:22:58:22 | String x | -| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:61:17:61:37 | ...; | -| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:62:13:63:37 | if (...) ... | -| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:63:17:63:37 | ...; | +| LoopUnrolling.cs:55:10:55:11 | Entry | LoopUnrolling.cs:55:10:55:11 | Entry | +| LoopUnrolling.cs:55:10:55:11 | Entry | LoopUnrolling.cs:58:9:64:9 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:55:10:55:11 | Entry | LoopUnrolling.cs:58:22:58:22 | String x | +| LoopUnrolling.cs:55:10:55:11 | Entry | LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:55:10:55:11 | Entry | LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:55:10:55:11 | Entry | LoopUnrolling.cs:60:13:61:37 | After if (...) ... | +| LoopUnrolling.cs:55:10:55:11 | Entry | LoopUnrolling.cs:60:17:60:17 | After access to parameter b [false] | +| LoopUnrolling.cs:55:10:55:11 | Entry | LoopUnrolling.cs:60:17:60:17 | After access to parameter b [true] | +| LoopUnrolling.cs:55:10:55:11 | Entry | LoopUnrolling.cs:62:13:63:37 | After if (...) ... | +| LoopUnrolling.cs:55:10:55:11 | Entry | LoopUnrolling.cs:62:17:62:17 | After access to parameter b [false] | +| LoopUnrolling.cs:55:10:55:11 | Entry | LoopUnrolling.cs:62:17:62:17 | After access to parameter b [true] | +| LoopUnrolling.cs:58:9:64:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:58:9:64:9 | After foreach (... ... in ...) ... | | LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:58:22:58:22 | String x | -| LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:61:17:61:37 | ...; | -| LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:62:13:63:37 | if (...) ... | -| LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:63:17:63:37 | ...; | -| LoopUnrolling.cs:61:17:61:37 | ...; | LoopUnrolling.cs:61:17:61:37 | ...; | -| LoopUnrolling.cs:62:13:63:37 | if (...) ... | LoopUnrolling.cs:62:13:63:37 | if (...) ... | -| LoopUnrolling.cs:62:13:63:37 | if (...) ... | LoopUnrolling.cs:63:17:63:37 | ...; | -| LoopUnrolling.cs:63:17:63:37 | ...; | LoopUnrolling.cs:63:17:63:37 | ...; | -| LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:67:10:67:11 | enter M8 | -| LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | -| LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:69:13:69:23 | [false] !... | -| LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:69:13:69:23 | [true] !... | -| LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:70:13:70:19 | return ...; | -| LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:71:9:71:21 | ...; | -| LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:72:22:72:24 | String arg | -| LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | -| LoopUnrolling.cs:69:13:69:23 | [false] !... | LoopUnrolling.cs:69:13:69:23 | [false] !... | -| LoopUnrolling.cs:69:13:69:23 | [false] !... | LoopUnrolling.cs:71:9:71:21 | ...; | -| LoopUnrolling.cs:69:13:69:23 | [false] !... | LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:69:13:69:23 | [false] !... | LoopUnrolling.cs:72:22:72:24 | String arg | -| LoopUnrolling.cs:69:13:69:23 | [true] !... | LoopUnrolling.cs:69:13:69:23 | [true] !... | -| LoopUnrolling.cs:69:13:69:23 | [true] !... | LoopUnrolling.cs:70:13:70:19 | return ...; | -| LoopUnrolling.cs:70:13:70:19 | return ...; | LoopUnrolling.cs:70:13:70:19 | return ...; | -| LoopUnrolling.cs:71:9:71:21 | ...; | LoopUnrolling.cs:71:9:71:21 | ...; | -| LoopUnrolling.cs:71:9:71:21 | ...; | LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:71:9:71:21 | ...; | LoopUnrolling.cs:72:22:72:24 | String arg | -| LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:72:22:72:24 | String arg | +| LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:60:13:61:37 | After if (...) ... | +| LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:60:17:60:17 | After access to parameter b [false] | +| LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:60:17:60:17 | After access to parameter b [true] | +| LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:62:13:63:37 | After if (...) ... | +| LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:62:17:62:17 | After access to parameter b [false] | +| LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:62:17:62:17 | After access to parameter b [true] | +| LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [empty] | LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:58:22:58:22 | String x | +| LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:60:13:61:37 | After if (...) ... | +| LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:60:17:60:17 | After access to parameter b [false] | +| LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:60:17:60:17 | After access to parameter b [true] | +| LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:62:13:63:37 | After if (...) ... | +| LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:62:17:62:17 | After access to parameter b [false] | +| LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:62:17:62:17 | After access to parameter b [true] | +| LoopUnrolling.cs:60:13:61:37 | After if (...) ... | LoopUnrolling.cs:60:13:61:37 | After if (...) ... | +| LoopUnrolling.cs:60:13:61:37 | After if (...) ... | LoopUnrolling.cs:62:13:63:37 | After if (...) ... | +| LoopUnrolling.cs:60:13:61:37 | After if (...) ... | LoopUnrolling.cs:62:17:62:17 | After access to parameter b [false] | +| LoopUnrolling.cs:60:13:61:37 | After if (...) ... | LoopUnrolling.cs:62:17:62:17 | After access to parameter b [true] | +| LoopUnrolling.cs:60:17:60:17 | After access to parameter b [false] | LoopUnrolling.cs:60:17:60:17 | After access to parameter b [false] | +| LoopUnrolling.cs:60:17:60:17 | After access to parameter b [true] | LoopUnrolling.cs:60:17:60:17 | After access to parameter b [true] | +| LoopUnrolling.cs:62:13:63:37 | After if (...) ... | LoopUnrolling.cs:62:13:63:37 | After if (...) ... | +| LoopUnrolling.cs:62:17:62:17 | After access to parameter b [false] | LoopUnrolling.cs:62:17:62:17 | After access to parameter b [false] | +| LoopUnrolling.cs:62:17:62:17 | After access to parameter b [true] | LoopUnrolling.cs:62:17:62:17 | After access to parameter b [true] | +| LoopUnrolling.cs:67:10:67:11 | Entry | LoopUnrolling.cs:67:10:67:11 | Entry | +| LoopUnrolling.cs:67:10:67:11 | Entry | LoopUnrolling.cs:67:10:67:11 | Normal Exit | +| LoopUnrolling.cs:67:10:67:11 | Entry | LoopUnrolling.cs:69:14:69:23 | After call to method Any [false] | +| LoopUnrolling.cs:67:10:67:11 | Entry | LoopUnrolling.cs:69:14:69:23 | After call to method Any [true] | +| LoopUnrolling.cs:67:10:67:11 | Entry | LoopUnrolling.cs:72:9:73:35 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:67:10:67:11 | Entry | LoopUnrolling.cs:72:22:72:24 | String arg | +| LoopUnrolling.cs:67:10:67:11 | Entry | LoopUnrolling.cs:72:29:72:32 | After access to parameter args [empty] | +| LoopUnrolling.cs:67:10:67:11 | Entry | LoopUnrolling.cs:72:29:72:32 | After access to parameter args [non-empty] | +| LoopUnrolling.cs:67:10:67:11 | Normal Exit | LoopUnrolling.cs:67:10:67:11 | Normal Exit | +| LoopUnrolling.cs:69:14:69:23 | After call to method Any [false] | LoopUnrolling.cs:69:14:69:23 | After call to method Any [false] | +| LoopUnrolling.cs:69:14:69:23 | After call to method Any [true] | LoopUnrolling.cs:69:14:69:23 | After call to method Any [true] | +| LoopUnrolling.cs:69:14:69:23 | After call to method Any [true] | LoopUnrolling.cs:72:9:73:35 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:69:14:69:23 | After call to method Any [true] | LoopUnrolling.cs:72:22:72:24 | String arg | +| LoopUnrolling.cs:69:14:69:23 | After call to method Any [true] | LoopUnrolling.cs:72:29:72:32 | After access to parameter args [empty] | +| LoopUnrolling.cs:69:14:69:23 | After call to method Any [true] | LoopUnrolling.cs:72:29:72:32 | After access to parameter args [non-empty] | +| LoopUnrolling.cs:72:9:73:35 | After foreach (... ... in ...) ... | LoopUnrolling.cs:72:9:73:35 | After foreach (... ... in ...) ... | | LoopUnrolling.cs:72:22:72:24 | String arg | LoopUnrolling.cs:72:22:72:24 | String arg | -| LoopUnrolling.cs:76:10:76:11 | enter M9 | LoopUnrolling.cs:76:10:76:11 | enter M9 | -| LoopUnrolling.cs:76:10:76:11 | enter M9 | LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | -| LoopUnrolling.cs:76:10:76:11 | enter M9 | LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:76:10:76:11 | enter M9 | LoopUnrolling.cs:79:22:79:22 | String x | -| LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | -| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | -| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:79:22:79:22 | String x | +| LoopUnrolling.cs:72:29:72:32 | After access to parameter args [empty] | LoopUnrolling.cs:72:29:72:32 | After access to parameter args [empty] | +| LoopUnrolling.cs:72:29:72:32 | After access to parameter args [non-empty] | LoopUnrolling.cs:72:22:72:24 | String arg | +| LoopUnrolling.cs:72:29:72:32 | After access to parameter args [non-empty] | LoopUnrolling.cs:72:29:72:32 | After access to parameter args [non-empty] | +| LoopUnrolling.cs:76:10:76:11 | Entry | LoopUnrolling.cs:76:10:76:11 | Entry | +| LoopUnrolling.cs:76:10:76:11 | Entry | LoopUnrolling.cs:79:9:82:9 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:76:10:76:11 | Entry | LoopUnrolling.cs:79:22:79:22 | String x | +| LoopUnrolling.cs:76:10:76:11 | Entry | LoopUnrolling.cs:79:27:79:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:76:10:76:11 | Entry | LoopUnrolling.cs:79:27:79:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:79:9:82:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:79:9:82:9 | After foreach (... ... in ...) ... | | LoopUnrolling.cs:79:22:79:22 | String x | LoopUnrolling.cs:79:22:79:22 | String x | -| LoopUnrolling.cs:85:10:85:12 | enter M10 | LoopUnrolling.cs:85:10:85:12 | enter M10 | -| LoopUnrolling.cs:85:10:85:12 | enter M10 | LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | -| LoopUnrolling.cs:85:10:85:12 | enter M10 | LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:85:10:85:12 | enter M10 | LoopUnrolling.cs:88:22:88:22 | String x | -| LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | -| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | -| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:88:22:88:22 | String x | +| LoopUnrolling.cs:79:27:79:28 | After access to local variable xs [empty] | LoopUnrolling.cs:79:27:79:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:79:27:79:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:79:22:79:22 | String x | +| LoopUnrolling.cs:79:27:79:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:79:27:79:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:85:10:85:12 | Entry | LoopUnrolling.cs:85:10:85:12 | Entry | +| LoopUnrolling.cs:85:10:85:12 | Entry | LoopUnrolling.cs:88:9:91:9 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:85:10:85:12 | Entry | LoopUnrolling.cs:88:22:88:22 | String x | +| LoopUnrolling.cs:85:10:85:12 | Entry | LoopUnrolling.cs:88:27:88:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:85:10:85:12 | Entry | LoopUnrolling.cs:88:27:88:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:88:9:91:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:88:9:91:9 | After foreach (... ... in ...) ... | | LoopUnrolling.cs:88:22:88:22 | String x | LoopUnrolling.cs:88:22:88:22 | String x | -| LoopUnrolling.cs:94:10:94:12 | enter M11 | LoopUnrolling.cs:94:10:94:12 | enter M11 | -| LoopUnrolling.cs:94:10:94:12 | enter M11 | LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | -| LoopUnrolling.cs:94:10:94:12 | enter M11 | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:94:10:94:12 | enter M11 | LoopUnrolling.cs:97:22:97:22 | String x | -| LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | -| LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | -| LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:97:22:97:22 | String x | +| LoopUnrolling.cs:88:27:88:28 | After access to local variable xs [empty] | LoopUnrolling.cs:88:27:88:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:88:27:88:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:88:22:88:22 | String x | +| LoopUnrolling.cs:88:27:88:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:88:27:88:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:94:10:94:12 | Entry | LoopUnrolling.cs:94:10:94:12 | Entry | +| LoopUnrolling.cs:94:10:94:12 | Entry | LoopUnrolling.cs:97:9:100:9 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:94:10:94:12 | Entry | LoopUnrolling.cs:97:22:97:22 | String x | +| LoopUnrolling.cs:94:10:94:12 | Entry | LoopUnrolling.cs:97:27:97:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:94:10:94:12 | Entry | LoopUnrolling.cs:97:27:97:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:97:9:100:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:97:9:100:9 | After foreach (... ... in ...) ... | | LoopUnrolling.cs:97:22:97:22 | String x | LoopUnrolling.cs:97:22:97:22 | String x | -| MultiImplementationA.cs:4:7:4:8 | enter C1 | MultiImplementationA.cs:4:7:4:8 | enter C1 | -| MultiImplementationA.cs:4:7:4:8 | enter C1 | MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | -| MultiImplementationA.cs:4:7:4:8 | enter C1 | MultiImplementationA.cs:4:7:4:8 | this access | -| MultiImplementationA.cs:4:7:4:8 | enter C1 | MultiImplementationB.cs:1:7:1:8 | this access | -| MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | -| MultiImplementationA.cs:4:7:4:8 | this access | MultiImplementationA.cs:4:7:4:8 | this access | -| MultiImplementationA.cs:6:22:6:31 | enter get_P1 | MultiImplementationA.cs:6:22:6:31 | enter get_P1 | -| MultiImplementationA.cs:6:22:6:31 | enter get_P1 | MultiImplementationA.cs:6:22:6:31 | exit get_P1 | -| MultiImplementationA.cs:6:22:6:31 | enter get_P1 | MultiImplementationA.cs:6:28:6:31 | null | -| MultiImplementationA.cs:6:22:6:31 | enter get_P1 | MultiImplementationB.cs:3:22:3:22 | 0 | -| MultiImplementationA.cs:6:22:6:31 | exit get_P1 | MultiImplementationA.cs:6:22:6:31 | exit get_P1 | -| MultiImplementationA.cs:6:28:6:31 | null | MultiImplementationA.cs:6:28:6:31 | null | -| MultiImplementationA.cs:7:21:7:23 | enter get_P2 | MultiImplementationA.cs:7:21:7:23 | enter get_P2 | -| MultiImplementationA.cs:7:21:7:23 | enter get_P2 | MultiImplementationA.cs:7:21:7:23 | exit get_P2 | -| MultiImplementationA.cs:7:21:7:23 | enter get_P2 | MultiImplementationA.cs:7:25:7:39 | {...} | -| MultiImplementationA.cs:7:21:7:23 | enter get_P2 | MultiImplementationB.cs:4:25:4:37 | {...} | -| MultiImplementationA.cs:7:21:7:23 | exit get_P2 | MultiImplementationA.cs:7:21:7:23 | exit get_P2 | +| LoopUnrolling.cs:97:27:97:28 | After access to local variable xs [empty] | LoopUnrolling.cs:97:27:97:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:97:27:97:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:97:22:97:22 | String x | +| LoopUnrolling.cs:97:27:97:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:97:27:97:28 | After access to local variable xs [non-empty] | +| MultiImplementationA.cs:4:7:4:8 | Before call to method | MultiImplementationA.cs:4:7:4:8 | Before call to method | +| MultiImplementationA.cs:4:7:4:8 | Entry | MultiImplementationA.cs:4:7:4:8 | Before call to method | +| MultiImplementationA.cs:4:7:4:8 | Entry | MultiImplementationA.cs:4:7:4:8 | Entry | +| MultiImplementationA.cs:4:7:4:8 | Entry | MultiImplementationA.cs:4:7:4:8 | Normal Exit | +| MultiImplementationA.cs:4:7:4:8 | Entry | MultiImplementationB.cs:1:7:1:8 | Before call to method | +| MultiImplementationA.cs:4:7:4:8 | Normal Exit | MultiImplementationA.cs:4:7:4:8 | Normal Exit | +| MultiImplementationA.cs:6:22:6:31 | Before throw ... | MultiImplementationA.cs:6:22:6:31 | Before throw ... | +| MultiImplementationA.cs:6:22:6:31 | Entry | MultiImplementationA.cs:6:22:6:31 | Before throw ... | +| MultiImplementationA.cs:6:22:6:31 | Entry | MultiImplementationA.cs:6:22:6:31 | Entry | +| MultiImplementationA.cs:6:22:6:31 | Entry | MultiImplementationA.cs:6:22:6:31 | Exit | +| MultiImplementationA.cs:6:22:6:31 | Entry | MultiImplementationB.cs:3:22:3:22 | 0 | +| MultiImplementationA.cs:6:22:6:31 | Exit | MultiImplementationA.cs:6:22:6:31 | Exit | +| MultiImplementationA.cs:7:21:7:23 | Entry | MultiImplementationA.cs:7:21:7:23 | Entry | +| MultiImplementationA.cs:7:21:7:23 | Entry | MultiImplementationA.cs:7:21:7:23 | Exit | +| MultiImplementationA.cs:7:21:7:23 | Entry | MultiImplementationA.cs:7:25:7:39 | {...} | +| MultiImplementationA.cs:7:21:7:23 | Entry | MultiImplementationB.cs:4:25:4:37 | {...} | +| MultiImplementationA.cs:7:21:7:23 | Exit | MultiImplementationA.cs:7:21:7:23 | Exit | | MultiImplementationA.cs:7:25:7:39 | {...} | MultiImplementationA.cs:7:25:7:39 | {...} | -| MultiImplementationA.cs:7:41:7:43 | enter set_P2 | MultiImplementationA.cs:7:41:7:43 | enter set_P2 | -| MultiImplementationA.cs:7:41:7:43 | enter set_P2 | MultiImplementationA.cs:7:41:7:43 | exit set_P2 | -| MultiImplementationA.cs:7:41:7:43 | enter set_P2 | MultiImplementationA.cs:7:45:7:59 | {...} | -| MultiImplementationA.cs:7:41:7:43 | enter set_P2 | MultiImplementationB.cs:4:43:4:45 | {...} | -| MultiImplementationA.cs:7:41:7:43 | exit set_P2 | MultiImplementationA.cs:7:41:7:43 | exit set_P2 | +| MultiImplementationA.cs:7:41:7:43 | Entry | MultiImplementationA.cs:7:41:7:43 | Entry | +| MultiImplementationA.cs:7:41:7:43 | Entry | MultiImplementationA.cs:7:41:7:43 | Exit | +| MultiImplementationA.cs:7:41:7:43 | Entry | MultiImplementationA.cs:7:45:7:59 | {...} | +| MultiImplementationA.cs:7:41:7:43 | Entry | MultiImplementationB.cs:4:43:4:45 | {...} | +| MultiImplementationA.cs:7:41:7:43 | Exit | MultiImplementationA.cs:7:41:7:43 | Exit | | MultiImplementationA.cs:7:45:7:59 | {...} | MultiImplementationA.cs:7:45:7:59 | {...} | -| MultiImplementationA.cs:8:16:8:16 | enter M | MultiImplementationA.cs:8:16:8:16 | enter M | -| MultiImplementationA.cs:8:16:8:16 | enter M | MultiImplementationA.cs:8:16:8:16 | exit M | -| MultiImplementationA.cs:8:16:8:16 | enter M | MultiImplementationA.cs:8:29:8:32 | null | -| MultiImplementationA.cs:8:16:8:16 | enter M | MultiImplementationB.cs:5:23:5:23 | 2 | -| MultiImplementationA.cs:8:16:8:16 | exit M | MultiImplementationA.cs:8:16:8:16 | exit M | -| MultiImplementationA.cs:8:29:8:32 | null | MultiImplementationA.cs:8:29:8:32 | null | -| MultiImplementationA.cs:11:7:11:8 | enter | MultiImplementationA.cs:11:7:11:8 | enter | -| MultiImplementationA.cs:11:7:11:8 | enter | MultiImplementationA.cs:11:7:11:8 | exit (normal) | -| MultiImplementationA.cs:11:7:11:8 | enter | MultiImplementationA.cs:13:16:13:16 | this access | -| MultiImplementationA.cs:11:7:11:8 | enter | MultiImplementationB.cs:11:16:11:16 | this access | -| MultiImplementationA.cs:11:7:11:8 | exit (normal) | MultiImplementationA.cs:11:7:11:8 | exit (normal) | -| MultiImplementationA.cs:13:16:13:16 | this access | MultiImplementationA.cs:13:16:13:16 | this access | +| MultiImplementationA.cs:8:16:8:16 | Entry | MultiImplementationA.cs:8:16:8:16 | Entry | +| MultiImplementationA.cs:8:16:8:16 | Entry | MultiImplementationA.cs:8:16:8:16 | Exit | +| MultiImplementationA.cs:8:16:8:16 | Entry | MultiImplementationA.cs:8:23:8:32 | Before throw ... | +| MultiImplementationA.cs:8:16:8:16 | Entry | MultiImplementationB.cs:5:23:5:23 | 2 | +| MultiImplementationA.cs:8:16:8:16 | Exit | MultiImplementationA.cs:8:16:8:16 | Exit | +| MultiImplementationA.cs:8:23:8:32 | Before throw ... | MultiImplementationA.cs:8:23:8:32 | Before throw ... | +| MultiImplementationA.cs:11:7:11:8 | Entry | MultiImplementationA.cs:11:7:11:8 | Entry | +| MultiImplementationA.cs:11:7:11:8 | Entry | MultiImplementationA.cs:11:7:11:8 | Normal Exit | +| MultiImplementationA.cs:11:7:11:8 | Entry | MultiImplementationA.cs:13:16:13:20 | Before ... = ... | +| MultiImplementationA.cs:11:7:11:8 | Entry | MultiImplementationB.cs:11:16:11:20 | Before ... = ... | +| MultiImplementationA.cs:11:7:11:8 | Normal Exit | MultiImplementationA.cs:11:7:11:8 | Normal Exit | +| MultiImplementationA.cs:13:16:13:20 | Before ... = ... | MultiImplementationA.cs:13:16:13:20 | Before ... = ... | +| MultiImplementationA.cs:14:31:14:31 | Entry | MultiImplementationA.cs:14:31:14:31 | Entry | +| MultiImplementationA.cs:14:31:14:31 | Entry | MultiImplementationA.cs:14:31:14:31 | Exit | +| MultiImplementationA.cs:14:31:14:31 | Entry | MultiImplementationA.cs:14:31:14:31 | access to parameter i | +| MultiImplementationA.cs:14:31:14:31 | Entry | MultiImplementationB.cs:12:31:12:40 | Before throw ... | +| MultiImplementationA.cs:14:31:14:31 | Exit | MultiImplementationA.cs:14:31:14:31 | Exit | | MultiImplementationA.cs:14:31:14:31 | access to parameter i | MultiImplementationA.cs:14:31:14:31 | access to parameter i | -| MultiImplementationA.cs:14:31:14:31 | enter get_Item | MultiImplementationA.cs:14:31:14:31 | access to parameter i | -| MultiImplementationA.cs:14:31:14:31 | enter get_Item | MultiImplementationA.cs:14:31:14:31 | enter get_Item | -| MultiImplementationA.cs:14:31:14:31 | enter get_Item | MultiImplementationA.cs:14:31:14:31 | exit get_Item | -| MultiImplementationA.cs:14:31:14:31 | enter get_Item | MultiImplementationB.cs:12:37:12:40 | null | -| MultiImplementationA.cs:14:31:14:31 | exit get_Item | MultiImplementationA.cs:14:31:14:31 | exit get_Item | -| MultiImplementationA.cs:15:36:15:38 | enter get_Item | MultiImplementationA.cs:15:36:15:38 | enter get_Item | -| MultiImplementationA.cs:15:36:15:38 | enter get_Item | MultiImplementationA.cs:15:36:15:38 | exit get_Item | -| MultiImplementationA.cs:15:36:15:38 | enter get_Item | MultiImplementationA.cs:15:40:15:52 | {...} | -| MultiImplementationA.cs:15:36:15:38 | enter get_Item | MultiImplementationB.cs:13:40:13:54 | {...} | -| MultiImplementationA.cs:15:36:15:38 | exit get_Item | MultiImplementationA.cs:15:36:15:38 | exit get_Item | +| MultiImplementationA.cs:15:36:15:38 | Entry | MultiImplementationA.cs:15:36:15:38 | Entry | +| MultiImplementationA.cs:15:36:15:38 | Entry | MultiImplementationA.cs:15:36:15:38 | Exit | +| MultiImplementationA.cs:15:36:15:38 | Entry | MultiImplementationA.cs:15:40:15:52 | {...} | +| MultiImplementationA.cs:15:36:15:38 | Entry | MultiImplementationB.cs:13:40:13:54 | {...} | +| MultiImplementationA.cs:15:36:15:38 | Exit | MultiImplementationA.cs:15:36:15:38 | Exit | | MultiImplementationA.cs:15:40:15:52 | {...} | MultiImplementationA.cs:15:40:15:52 | {...} | -| MultiImplementationA.cs:15:54:15:56 | enter set_Item | MultiImplementationA.cs:15:54:15:56 | enter set_Item | -| MultiImplementationA.cs:15:54:15:56 | enter set_Item | MultiImplementationA.cs:15:54:15:56 | exit set_Item (normal) | -| MultiImplementationA.cs:15:54:15:56 | enter set_Item | MultiImplementationA.cs:15:58:15:60 | {...} | -| MultiImplementationA.cs:15:54:15:56 | enter set_Item | MultiImplementationB.cs:13:60:13:62 | {...} | -| MultiImplementationA.cs:15:54:15:56 | exit set_Item (normal) | MultiImplementationA.cs:15:54:15:56 | exit set_Item (normal) | +| MultiImplementationA.cs:15:54:15:56 | Entry | MultiImplementationA.cs:15:54:15:56 | Entry | +| MultiImplementationA.cs:15:54:15:56 | Entry | MultiImplementationA.cs:15:54:15:56 | Normal Exit | +| MultiImplementationA.cs:15:54:15:56 | Entry | MultiImplementationA.cs:15:58:15:60 | {...} | +| MultiImplementationA.cs:15:54:15:56 | Entry | MultiImplementationB.cs:13:60:13:62 | {...} | +| MultiImplementationA.cs:15:54:15:56 | Normal Exit | MultiImplementationA.cs:15:54:15:56 | Normal Exit | | MultiImplementationA.cs:15:58:15:60 | {...} | MultiImplementationA.cs:15:58:15:60 | {...} | -| MultiImplementationA.cs:16:17:16:18 | enter M1 | MultiImplementationA.cs:16:17:16:18 | enter M1 | -| MultiImplementationA.cs:16:17:16:18 | enter M1 | MultiImplementationA.cs:16:17:16:18 | exit M1 (normal) | -| MultiImplementationA.cs:16:17:16:18 | enter M1 | MultiImplementationA.cs:17:5:19:5 | {...} | -| MultiImplementationA.cs:16:17:16:18 | enter M1 | MultiImplementationB.cs:15:5:17:5 | {...} | -| MultiImplementationA.cs:16:17:16:18 | exit M1 (normal) | MultiImplementationA.cs:16:17:16:18 | exit M1 (normal) | +| MultiImplementationA.cs:16:17:16:18 | Entry | MultiImplementationA.cs:16:17:16:18 | Entry | +| MultiImplementationA.cs:16:17:16:18 | Entry | MultiImplementationA.cs:16:17:16:18 | Normal Exit | +| MultiImplementationA.cs:16:17:16:18 | Entry | MultiImplementationA.cs:17:5:19:5 | {...} | +| MultiImplementationA.cs:16:17:16:18 | Entry | MultiImplementationB.cs:15:5:17:5 | {...} | +| MultiImplementationA.cs:16:17:16:18 | Normal Exit | MultiImplementationA.cs:16:17:16:18 | Normal Exit | | MultiImplementationA.cs:17:5:19:5 | {...} | MultiImplementationA.cs:17:5:19:5 | {...} | -| MultiImplementationA.cs:18:9:18:22 | enter M2 | MultiImplementationA.cs:18:9:18:22 | enter M2 | -| MultiImplementationA.cs:20:12:20:13 | enter C2 | MultiImplementationA.cs:20:12:20:13 | enter C2 | -| MultiImplementationA.cs:20:12:20:13 | enter C2 | MultiImplementationA.cs:20:12:20:13 | exit C2 | -| MultiImplementationA.cs:20:12:20:13 | enter C2 | MultiImplementationA.cs:20:12:20:13 | this access | -| MultiImplementationA.cs:20:12:20:13 | enter C2 | MultiImplementationB.cs:18:12:18:13 | this access | -| MultiImplementationA.cs:20:12:20:13 | exit C2 | MultiImplementationA.cs:20:12:20:13 | exit C2 | -| MultiImplementationA.cs:20:12:20:13 | this access | MultiImplementationA.cs:20:12:20:13 | this access | -| MultiImplementationA.cs:21:12:21:13 | enter C2 | MultiImplementationA.cs:21:12:21:13 | enter C2 | -| MultiImplementationA.cs:21:12:21:13 | enter C2 | MultiImplementationA.cs:21:12:21:13 | exit C2 (normal) | -| MultiImplementationA.cs:21:12:21:13 | enter C2 | MultiImplementationA.cs:21:24:21:24 | 0 | -| MultiImplementationA.cs:21:12:21:13 | enter C2 | MultiImplementationB.cs:19:24:19:24 | 1 | -| MultiImplementationA.cs:21:12:21:13 | exit C2 (normal) | MultiImplementationA.cs:21:12:21:13 | exit C2 (normal) | -| MultiImplementationA.cs:21:24:21:24 | 0 | MultiImplementationA.cs:21:24:21:24 | 0 | -| MultiImplementationA.cs:22:6:22:7 | enter ~C2 | MultiImplementationA.cs:22:6:22:7 | enter ~C2 | -| MultiImplementationA.cs:22:6:22:7 | enter ~C2 | MultiImplementationA.cs:22:6:22:7 | exit ~C2 | -| MultiImplementationA.cs:22:6:22:7 | enter ~C2 | MultiImplementationA.cs:22:11:22:13 | {...} | -| MultiImplementationA.cs:22:6:22:7 | enter ~C2 | MultiImplementationB.cs:20:11:20:25 | {...} | -| MultiImplementationA.cs:22:6:22:7 | exit ~C2 | MultiImplementationA.cs:22:6:22:7 | exit ~C2 | +| MultiImplementationA.cs:18:9:18:22 | Entry | MultiImplementationA.cs:18:9:18:22 | Entry | +| MultiImplementationA.cs:20:12:20:13 | Before call to method | MultiImplementationA.cs:20:12:20:13 | Before call to method | +| MultiImplementationA.cs:20:12:20:13 | Entry | MultiImplementationA.cs:20:12:20:13 | Before call to method | +| MultiImplementationA.cs:20:12:20:13 | Entry | MultiImplementationA.cs:20:12:20:13 | Entry | +| MultiImplementationA.cs:20:12:20:13 | Entry | MultiImplementationA.cs:20:12:20:13 | Exit | +| MultiImplementationA.cs:20:12:20:13 | Entry | MultiImplementationB.cs:18:12:18:13 | Before call to method | +| MultiImplementationA.cs:20:12:20:13 | Exit | MultiImplementationA.cs:20:12:20:13 | Exit | +| MultiImplementationA.cs:21:12:21:13 | Entry | MultiImplementationA.cs:21:12:21:13 | Entry | +| MultiImplementationA.cs:21:12:21:13 | Entry | MultiImplementationA.cs:21:12:21:13 | Normal Exit | +| MultiImplementationA.cs:21:12:21:13 | Entry | MultiImplementationA.cs:21:19:21:22 | Before call to constructor C2 | +| MultiImplementationA.cs:21:12:21:13 | Entry | MultiImplementationB.cs:19:19:19:22 | Before call to constructor C2 | +| MultiImplementationA.cs:21:12:21:13 | Normal Exit | MultiImplementationA.cs:21:12:21:13 | Normal Exit | +| MultiImplementationA.cs:21:19:21:22 | Before call to constructor C2 | MultiImplementationA.cs:21:19:21:22 | Before call to constructor C2 | +| MultiImplementationA.cs:22:6:22:7 | Entry | MultiImplementationA.cs:22:6:22:7 | Entry | +| MultiImplementationA.cs:22:6:22:7 | Entry | MultiImplementationA.cs:22:6:22:7 | Exit | +| MultiImplementationA.cs:22:6:22:7 | Entry | MultiImplementationA.cs:22:11:22:13 | {...} | +| MultiImplementationA.cs:22:6:22:7 | Entry | MultiImplementationB.cs:20:11:20:25 | {...} | +| MultiImplementationA.cs:22:6:22:7 | Exit | MultiImplementationA.cs:22:6:22:7 | Exit | | MultiImplementationA.cs:22:11:22:13 | {...} | MultiImplementationA.cs:22:11:22:13 | {...} | -| MultiImplementationA.cs:23:28:23:35 | enter implicit conversion | MultiImplementationA.cs:23:28:23:35 | enter implicit conversion | -| MultiImplementationA.cs:23:28:23:35 | enter implicit conversion | MultiImplementationA.cs:23:28:23:35 | exit implicit conversion | -| MultiImplementationA.cs:23:28:23:35 | enter implicit conversion | MultiImplementationA.cs:23:50:23:53 | null | -| MultiImplementationA.cs:23:28:23:35 | enter implicit conversion | MultiImplementationB.cs:21:56:21:59 | null | -| MultiImplementationA.cs:23:28:23:35 | exit implicit conversion | MultiImplementationA.cs:23:28:23:35 | exit implicit conversion | +| MultiImplementationA.cs:23:28:23:35 | Entry | MultiImplementationA.cs:23:28:23:35 | Entry | +| MultiImplementationA.cs:23:28:23:35 | Entry | MultiImplementationA.cs:23:28:23:35 | Exit | +| MultiImplementationA.cs:23:28:23:35 | Entry | MultiImplementationA.cs:23:50:23:53 | null | +| MultiImplementationA.cs:23:28:23:35 | Entry | MultiImplementationB.cs:21:50:21:59 | Before throw ... | +| MultiImplementationA.cs:23:28:23:35 | Exit | MultiImplementationA.cs:23:28:23:35 | Exit | | MultiImplementationA.cs:23:50:23:53 | null | MultiImplementationA.cs:23:50:23:53 | null | -| MultiImplementationA.cs:28:7:28:8 | enter C3 | MultiImplementationA.cs:28:7:28:8 | enter C3 | -| MultiImplementationA.cs:28:7:28:8 | enter C3 | MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | -| MultiImplementationA.cs:28:7:28:8 | enter C3 | MultiImplementationA.cs:28:7:28:8 | this access | -| MultiImplementationA.cs:28:7:28:8 | enter C3 | MultiImplementationB.cs:25:7:25:8 | this access | -| MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | -| MultiImplementationA.cs:28:7:28:8 | this access | MultiImplementationA.cs:28:7:28:8 | this access | -| MultiImplementationA.cs:30:21:30:23 | enter get_P3 | MultiImplementationA.cs:30:21:30:23 | enter get_P3 | -| MultiImplementationA.cs:34:15:34:16 | enter C4 | MultiImplementationA.cs:34:15:34:16 | enter C4 | -| MultiImplementationA.cs:34:15:34:16 | enter C4 | MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | -| MultiImplementationA.cs:34:15:34:16 | enter C4 | MultiImplementationA.cs:34:15:34:16 | this access | -| MultiImplementationA.cs:34:15:34:16 | enter C4 | MultiImplementationB.cs:30:15:30:16 | this access | -| MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | -| MultiImplementationA.cs:34:15:34:16 | this access | MultiImplementationA.cs:34:15:34:16 | this access | -| MultiImplementationA.cs:36:9:36:10 | enter M1 | MultiImplementationA.cs:36:9:36:10 | enter M1 | -| MultiImplementationA.cs:36:9:36:10 | enter M1 | MultiImplementationA.cs:36:9:36:10 | exit M1 | -| MultiImplementationA.cs:36:9:36:10 | enter M1 | MultiImplementationA.cs:36:14:36:28 | {...} | -| MultiImplementationA.cs:36:9:36:10 | enter M1 | MultiImplementationB.cs:32:17:32:17 | 0 | -| MultiImplementationA.cs:36:9:36:10 | exit M1 | MultiImplementationA.cs:36:9:36:10 | exit M1 | +| MultiImplementationA.cs:28:7:28:8 | Before call to method | MultiImplementationA.cs:28:7:28:8 | Before call to method | +| MultiImplementationA.cs:28:7:28:8 | Entry | MultiImplementationA.cs:28:7:28:8 | Before call to method | +| MultiImplementationA.cs:28:7:28:8 | Entry | MultiImplementationA.cs:28:7:28:8 | Entry | +| MultiImplementationA.cs:28:7:28:8 | Entry | MultiImplementationA.cs:28:7:28:8 | Normal Exit | +| MultiImplementationA.cs:28:7:28:8 | Entry | MultiImplementationB.cs:25:7:25:8 | Before call to method | +| MultiImplementationA.cs:28:7:28:8 | Normal Exit | MultiImplementationA.cs:28:7:28:8 | Normal Exit | +| MultiImplementationA.cs:30:21:30:23 | Entry | MultiImplementationA.cs:30:21:30:23 | Entry | +| MultiImplementationA.cs:34:15:34:16 | Before call to method | MultiImplementationA.cs:34:15:34:16 | Before call to method | +| MultiImplementationA.cs:34:15:34:16 | Entry | MultiImplementationA.cs:34:15:34:16 | Before call to method | +| MultiImplementationA.cs:34:15:34:16 | Entry | MultiImplementationA.cs:34:15:34:16 | Entry | +| MultiImplementationA.cs:34:15:34:16 | Entry | MultiImplementationA.cs:34:15:34:16 | Normal Exit | +| MultiImplementationA.cs:34:15:34:16 | Entry | MultiImplementationB.cs:30:15:30:16 | Before call to method | +| MultiImplementationA.cs:34:15:34:16 | Normal Exit | MultiImplementationA.cs:34:15:34:16 | Normal Exit | +| MultiImplementationA.cs:36:9:36:10 | Entry | MultiImplementationA.cs:36:9:36:10 | Entry | +| MultiImplementationA.cs:36:9:36:10 | Entry | MultiImplementationA.cs:36:9:36:10 | Exit | +| MultiImplementationA.cs:36:9:36:10 | Entry | MultiImplementationA.cs:36:14:36:28 | {...} | +| MultiImplementationA.cs:36:9:36:10 | Entry | MultiImplementationB.cs:32:17:32:17 | 0 | +| MultiImplementationA.cs:36:9:36:10 | Exit | MultiImplementationA.cs:36:9:36:10 | Exit | | MultiImplementationA.cs:36:14:36:28 | {...} | MultiImplementationA.cs:36:14:36:28 | {...} | -| MultiImplementationA.cs:37:9:37:10 | enter M2 | MultiImplementationA.cs:37:9:37:10 | enter M2 | -| MultiImplementationB.cs:1:7:1:8 | this access | MultiImplementationB.cs:1:7:1:8 | this access | +| MultiImplementationA.cs:37:9:37:10 | Entry | MultiImplementationA.cs:37:9:37:10 | Entry | +| MultiImplementationB.cs:1:7:1:8 | Before call to method | MultiImplementationB.cs:1:7:1:8 | Before call to method | | MultiImplementationB.cs:3:22:3:22 | 0 | MultiImplementationB.cs:3:22:3:22 | 0 | | MultiImplementationB.cs:4:25:4:37 | {...} | MultiImplementationB.cs:4:25:4:37 | {...} | | MultiImplementationB.cs:4:43:4:45 | {...} | MultiImplementationB.cs:4:43:4:45 | {...} | | MultiImplementationB.cs:5:23:5:23 | 2 | MultiImplementationB.cs:5:23:5:23 | 2 | -| MultiImplementationB.cs:11:16:11:16 | this access | MultiImplementationB.cs:11:16:11:16 | this access | -| MultiImplementationB.cs:12:37:12:40 | null | MultiImplementationB.cs:12:37:12:40 | null | +| MultiImplementationB.cs:11:16:11:20 | Before ... = ... | MultiImplementationB.cs:11:16:11:20 | Before ... = ... | +| MultiImplementationB.cs:12:31:12:40 | Before throw ... | MultiImplementationB.cs:12:31:12:40 | Before throw ... | | MultiImplementationB.cs:13:40:13:54 | {...} | MultiImplementationB.cs:13:40:13:54 | {...} | | MultiImplementationB.cs:13:60:13:62 | {...} | MultiImplementationB.cs:13:60:13:62 | {...} | | MultiImplementationB.cs:15:5:17:5 | {...} | MultiImplementationB.cs:15:5:17:5 | {...} | -| MultiImplementationB.cs:16:9:16:31 | enter M2 | MultiImplementationB.cs:16:9:16:31 | enter M2 | -| MultiImplementationB.cs:18:12:18:13 | this access | MultiImplementationB.cs:18:12:18:13 | this access | -| MultiImplementationB.cs:19:24:19:24 | 1 | MultiImplementationB.cs:19:24:19:24 | 1 | +| MultiImplementationB.cs:16:9:16:31 | Entry | MultiImplementationB.cs:16:9:16:31 | Entry | +| MultiImplementationB.cs:18:12:18:13 | Before call to method | MultiImplementationB.cs:18:12:18:13 | Before call to method | +| MultiImplementationB.cs:19:19:19:22 | Before call to constructor C2 | MultiImplementationB.cs:19:19:19:22 | Before call to constructor C2 | | MultiImplementationB.cs:20:11:20:25 | {...} | MultiImplementationB.cs:20:11:20:25 | {...} | -| MultiImplementationB.cs:21:56:21:59 | null | MultiImplementationB.cs:21:56:21:59 | null | -| MultiImplementationB.cs:25:7:25:8 | this access | MultiImplementationB.cs:25:7:25:8 | this access | -| MultiImplementationB.cs:30:15:30:16 | this access | MultiImplementationB.cs:30:15:30:16 | this access | +| MultiImplementationB.cs:21:50:21:59 | Before throw ... | MultiImplementationB.cs:21:50:21:59 | Before throw ... | +| MultiImplementationB.cs:25:7:25:8 | Before call to method | MultiImplementationB.cs:25:7:25:8 | Before call to method | +| MultiImplementationB.cs:30:15:30:16 | Before call to method | MultiImplementationB.cs:30:15:30:16 | Before call to method | | MultiImplementationB.cs:32:17:32:17 | 0 | MultiImplementationB.cs:32:17:32:17 | 0 | -| NullCoalescing.cs:1:7:1:20 | enter NullCoalescing | NullCoalescing.cs:1:7:1:20 | enter NullCoalescing | -| NullCoalescing.cs:3:9:3:10 | enter M1 | NullCoalescing.cs:3:9:3:10 | enter M1 | -| NullCoalescing.cs:3:9:3:10 | enter M1 | NullCoalescing.cs:3:23:3:28 | ... ?? ... | -| NullCoalescing.cs:3:9:3:10 | enter M1 | NullCoalescing.cs:3:28:3:28 | 0 | -| NullCoalescing.cs:3:23:3:28 | ... ?? ... | NullCoalescing.cs:3:23:3:28 | ... ?? ... | -| NullCoalescing.cs:3:28:3:28 | 0 | NullCoalescing.cs:3:28:3:28 | 0 | -| NullCoalescing.cs:5:9:5:10 | enter M2 | NullCoalescing.cs:5:9:5:10 | enter M2 | -| NullCoalescing.cs:5:9:5:10 | enter M2 | NullCoalescing.cs:5:24:5:43 | ... ? ... : ... | -| NullCoalescing.cs:5:9:5:10 | enter M2 | NullCoalescing.cs:5:25:5:34 | [false] ... ?? ... | -| NullCoalescing.cs:5:9:5:10 | enter M2 | NullCoalescing.cs:5:25:5:34 | [true] ... ?? ... | -| NullCoalescing.cs:5:9:5:10 | enter M2 | NullCoalescing.cs:5:30:5:34 | false | -| NullCoalescing.cs:5:9:5:10 | enter M2 | NullCoalescing.cs:5:39:5:39 | 0 | -| NullCoalescing.cs:5:9:5:10 | enter M2 | NullCoalescing.cs:5:43:5:43 | 1 | -| NullCoalescing.cs:5:24:5:43 | ... ? ... : ... | NullCoalescing.cs:5:24:5:43 | ... ? ... : ... | -| NullCoalescing.cs:5:25:5:34 | [false] ... ?? ... | NullCoalescing.cs:5:25:5:34 | [false] ... ?? ... | -| NullCoalescing.cs:5:25:5:34 | [false] ... ?? ... | NullCoalescing.cs:5:43:5:43 | 1 | -| NullCoalescing.cs:5:25:5:34 | [true] ... ?? ... | NullCoalescing.cs:5:25:5:34 | [true] ... ?? ... | -| NullCoalescing.cs:5:25:5:34 | [true] ... ?? ... | NullCoalescing.cs:5:39:5:39 | 0 | -| NullCoalescing.cs:5:30:5:34 | false | NullCoalescing.cs:5:30:5:34 | false | -| NullCoalescing.cs:5:39:5:39 | 0 | NullCoalescing.cs:5:39:5:39 | 0 | -| NullCoalescing.cs:5:43:5:43 | 1 | NullCoalescing.cs:5:43:5:43 | 1 | -| NullCoalescing.cs:7:12:7:13 | enter M3 | NullCoalescing.cs:7:12:7:13 | enter M3 | -| NullCoalescing.cs:7:12:7:13 | enter M3 | NullCoalescing.cs:7:40:7:53 | ... ?? ... | -| NullCoalescing.cs:7:12:7:13 | enter M3 | NullCoalescing.cs:7:46:7:47 | access to parameter s2 | -| NullCoalescing.cs:7:12:7:13 | enter M3 | NullCoalescing.cs:7:46:7:53 | ... ?? ... | -| NullCoalescing.cs:7:12:7:13 | enter M3 | NullCoalescing.cs:7:52:7:53 | "" | -| NullCoalescing.cs:7:40:7:53 | ... ?? ... | NullCoalescing.cs:7:40:7:53 | ... ?? ... | -| NullCoalescing.cs:7:46:7:47 | access to parameter s2 | NullCoalescing.cs:7:46:7:47 | access to parameter s2 | -| NullCoalescing.cs:7:46:7:47 | access to parameter s2 | NullCoalescing.cs:7:46:7:53 | ... ?? ... | -| NullCoalescing.cs:7:46:7:47 | access to parameter s2 | NullCoalescing.cs:7:52:7:53 | "" | -| NullCoalescing.cs:7:46:7:53 | ... ?? ... | NullCoalescing.cs:7:46:7:53 | ... ?? ... | -| NullCoalescing.cs:7:52:7:53 | "" | NullCoalescing.cs:7:52:7:53 | "" | -| NullCoalescing.cs:9:12:9:13 | enter M4 | NullCoalescing.cs:9:12:9:13 | enter M4 | -| NullCoalescing.cs:9:12:9:13 | enter M4 | NullCoalescing.cs:9:36:9:58 | ... ?? ... | -| NullCoalescing.cs:9:12:9:13 | enter M4 | NullCoalescing.cs:9:37:9:45 | [non-null] ... ? ... : ... | -| NullCoalescing.cs:9:12:9:13 | enter M4 | NullCoalescing.cs:9:37:9:45 | [null] ... ? ... : ... | -| NullCoalescing.cs:9:12:9:13 | enter M4 | NullCoalescing.cs:9:41:9:41 | access to parameter s | -| NullCoalescing.cs:9:12:9:13 | enter M4 | NullCoalescing.cs:9:45:9:45 | access to parameter s | -| NullCoalescing.cs:9:12:9:13 | enter M4 | NullCoalescing.cs:9:51:9:52 | "" | -| NullCoalescing.cs:9:12:9:13 | enter M4 | NullCoalescing.cs:9:51:9:58 | ... ?? ... | -| NullCoalescing.cs:9:36:9:58 | ... ?? ... | NullCoalescing.cs:9:36:9:58 | ... ?? ... | -| NullCoalescing.cs:9:37:9:45 | [non-null] ... ? ... : ... | NullCoalescing.cs:9:37:9:45 | [non-null] ... ? ... : ... | -| NullCoalescing.cs:9:37:9:45 | [null] ... ? ... : ... | NullCoalescing.cs:9:37:9:45 | [null] ... ? ... : ... | -| NullCoalescing.cs:9:37:9:45 | [null] ... ? ... : ... | NullCoalescing.cs:9:51:9:52 | "" | -| NullCoalescing.cs:9:37:9:45 | [null] ... ? ... : ... | NullCoalescing.cs:9:51:9:58 | ... ?? ... | -| NullCoalescing.cs:9:41:9:41 | access to parameter s | NullCoalescing.cs:9:41:9:41 | access to parameter s | -| NullCoalescing.cs:9:45:9:45 | access to parameter s | NullCoalescing.cs:9:45:9:45 | access to parameter s | -| NullCoalescing.cs:9:51:9:52 | "" | NullCoalescing.cs:9:51:9:52 | "" | -| NullCoalescing.cs:9:51:9:52 | "" | NullCoalescing.cs:9:51:9:58 | ... ?? ... | -| NullCoalescing.cs:9:51:9:58 | ... ?? ... | NullCoalescing.cs:9:51:9:58 | ... ?? ... | -| NullCoalescing.cs:11:9:11:10 | enter M5 | NullCoalescing.cs:11:9:11:10 | enter M5 | -| NullCoalescing.cs:11:9:11:10 | enter M5 | NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | -| NullCoalescing.cs:11:9:11:10 | enter M5 | NullCoalescing.cs:11:44:11:59 | [false] ... ?? ... | -| NullCoalescing.cs:11:9:11:10 | enter M5 | NullCoalescing.cs:11:44:11:59 | [true] ... ?? ... | -| NullCoalescing.cs:11:9:11:10 | enter M5 | NullCoalescing.cs:11:51:11:52 | access to parameter b2 | -| NullCoalescing.cs:11:9:11:10 | enter M5 | NullCoalescing.cs:11:51:11:58 | [false] ... && ... | -| NullCoalescing.cs:11:9:11:10 | enter M5 | NullCoalescing.cs:11:51:11:58 | [true] ... && ... | -| NullCoalescing.cs:11:9:11:10 | enter M5 | NullCoalescing.cs:11:57:11:58 | access to parameter b3 | -| NullCoalescing.cs:11:9:11:10 | enter M5 | NullCoalescing.cs:11:64:11:64 | 0 | -| NullCoalescing.cs:11:9:11:10 | enter M5 | NullCoalescing.cs:11:68:11:68 | 1 | -| NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | -| NullCoalescing.cs:11:44:11:59 | [false] ... ?? ... | NullCoalescing.cs:11:44:11:59 | [false] ... ?? ... | -| NullCoalescing.cs:11:44:11:59 | [false] ... ?? ... | NullCoalescing.cs:11:68:11:68 | 1 | -| NullCoalescing.cs:11:44:11:59 | [true] ... ?? ... | NullCoalescing.cs:11:44:11:59 | [true] ... ?? ... | -| NullCoalescing.cs:11:44:11:59 | [true] ... ?? ... | NullCoalescing.cs:11:64:11:64 | 0 | -| NullCoalescing.cs:11:51:11:52 | access to parameter b2 | NullCoalescing.cs:11:51:11:52 | access to parameter b2 | -| NullCoalescing.cs:11:51:11:52 | access to parameter b2 | NullCoalescing.cs:11:51:11:58 | [false] ... && ... | -| NullCoalescing.cs:11:51:11:52 | access to parameter b2 | NullCoalescing.cs:11:51:11:58 | [true] ... && ... | -| NullCoalescing.cs:11:51:11:52 | access to parameter b2 | NullCoalescing.cs:11:57:11:58 | access to parameter b3 | -| NullCoalescing.cs:11:51:11:58 | [false] ... && ... | NullCoalescing.cs:11:51:11:58 | [false] ... && ... | -| NullCoalescing.cs:11:51:11:58 | [true] ... && ... | NullCoalescing.cs:11:51:11:58 | [true] ... && ... | -| NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:51:11:58 | [true] ... && ... | -| NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:57:11:58 | access to parameter b3 | -| NullCoalescing.cs:11:64:11:64 | 0 | NullCoalescing.cs:11:64:11:64 | 0 | -| NullCoalescing.cs:11:68:11:68 | 1 | NullCoalescing.cs:11:68:11:68 | 1 | -| NullCoalescing.cs:13:10:13:11 | enter M6 | NullCoalescing.cs:13:10:13:11 | enter M6 | -| NullCoalescing.cs:13:10:13:11 | enter M6 | NullCoalescing.cs:15:31:15:31 | 0 | -| NullCoalescing.cs:13:10:13:11 | enter M6 | NullCoalescing.cs:16:17:16:25 | ... ?? ... | -| NullCoalescing.cs:13:10:13:11 | enter M6 | NullCoalescing.cs:17:13:17:24 | ... ?? ... | -| NullCoalescing.cs:15:31:15:31 | 0 | NullCoalescing.cs:15:31:15:31 | 0 | -| NullCoalescing.cs:15:31:15:31 | 0 | NullCoalescing.cs:16:17:16:25 | ... ?? ... | -| NullCoalescing.cs:15:31:15:31 | 0 | NullCoalescing.cs:17:13:17:24 | ... ?? ... | -| NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:16:17:16:25 | ... ?? ... | -| NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:17:13:17:24 | ... ?? ... | -| NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:17:13:17:24 | ... ?? ... | -| PartialImplementationA.cs:1:15:1:21 | enter | PartialImplementationA.cs:1:15:1:21 | enter | -| PartialImplementationA.cs:3:12:3:18 | enter Partial | PartialImplementationA.cs:3:12:3:18 | enter Partial | -| PartialImplementationB.cs:4:12:4:18 | enter Partial | PartialImplementationB.cs:4:12:4:18 | enter Partial | -| Patterns.cs:3:7:3:14 | enter Patterns | Patterns.cs:3:7:3:14 | enter Patterns | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:5:10:5:11 | enter M1 | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:8:13:8:23 | [false] ... is ... | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:8:13:8:23 | [true] ... is ... | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:9:9:11:9 | {...} | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:12:14:18:9 | if (...) ... | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:12:18:12:31 | [false] ... is ... | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:12:18:12:31 | [true] ... is ... | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:13:9:15:9 | {...} | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:16:14:18:9 | if (...) ... | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:16:18:16:28 | [false] ... is ... | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:16:18:16:28 | [true] ... is ... | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:17:9:18:9 | {...} | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:20:9:38:9 | switch (...) {...} | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:23:17:23:22 | break; | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:24:13:24:36 | case ...: | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:24:30:24:31 | access to local variable i2 | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:25:17:25:52 | ...; | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:27:13:27:24 | case ...: | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:28:17:28:47 | ...; | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:30:13:30:27 | case ...: | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:31:17:31:50 | ...; | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:33:13:33:24 | case ...: | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:34:17:34:22 | break; | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:35:13:35:20 | default: | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:40:9:42:9 | switch (...) {...} | -| Patterns.cs:8:13:8:23 | [false] ... is ... | Patterns.cs:8:13:8:23 | [false] ... is ... | -| Patterns.cs:8:13:8:23 | [false] ... is ... | Patterns.cs:12:14:18:9 | if (...) ... | -| Patterns.cs:8:13:8:23 | [false] ... is ... | Patterns.cs:12:18:12:31 | [false] ... is ... | -| Patterns.cs:8:13:8:23 | [false] ... is ... | Patterns.cs:12:18:12:31 | [true] ... is ... | -| Patterns.cs:8:13:8:23 | [false] ... is ... | Patterns.cs:13:9:15:9 | {...} | -| Patterns.cs:8:13:8:23 | [false] ... is ... | Patterns.cs:16:14:18:9 | if (...) ... | -| Patterns.cs:8:13:8:23 | [false] ... is ... | Patterns.cs:16:18:16:28 | [false] ... is ... | -| Patterns.cs:8:13:8:23 | [false] ... is ... | Patterns.cs:16:18:16:28 | [true] ... is ... | -| Patterns.cs:8:13:8:23 | [false] ... is ... | Patterns.cs:17:9:18:9 | {...} | -| Patterns.cs:8:13:8:23 | [true] ... is ... | Patterns.cs:8:13:8:23 | [true] ... is ... | -| Patterns.cs:8:13:8:23 | [true] ... is ... | Patterns.cs:9:9:11:9 | {...} | -| Patterns.cs:9:9:11:9 | {...} | Patterns.cs:9:9:11:9 | {...} | -| Patterns.cs:12:14:18:9 | if (...) ... | Patterns.cs:12:14:18:9 | if (...) ... | -| Patterns.cs:12:14:18:9 | if (...) ... | Patterns.cs:12:18:12:31 | [false] ... is ... | -| Patterns.cs:12:14:18:9 | if (...) ... | Patterns.cs:12:18:12:31 | [true] ... is ... | -| Patterns.cs:12:14:18:9 | if (...) ... | Patterns.cs:13:9:15:9 | {...} | -| Patterns.cs:12:14:18:9 | if (...) ... | Patterns.cs:16:14:18:9 | if (...) ... | -| Patterns.cs:12:14:18:9 | if (...) ... | Patterns.cs:16:18:16:28 | [false] ... is ... | -| Patterns.cs:12:14:18:9 | if (...) ... | Patterns.cs:16:18:16:28 | [true] ... is ... | -| Patterns.cs:12:14:18:9 | if (...) ... | Patterns.cs:17:9:18:9 | {...} | -| Patterns.cs:12:18:12:31 | [false] ... is ... | Patterns.cs:12:18:12:31 | [false] ... is ... | -| Patterns.cs:12:18:12:31 | [false] ... is ... | Patterns.cs:16:14:18:9 | if (...) ... | -| Patterns.cs:12:18:12:31 | [false] ... is ... | Patterns.cs:16:18:16:28 | [false] ... is ... | -| Patterns.cs:12:18:12:31 | [false] ... is ... | Patterns.cs:16:18:16:28 | [true] ... is ... | -| Patterns.cs:12:18:12:31 | [false] ... is ... | Patterns.cs:17:9:18:9 | {...} | -| Patterns.cs:12:18:12:31 | [true] ... is ... | Patterns.cs:12:18:12:31 | [true] ... is ... | -| Patterns.cs:12:18:12:31 | [true] ... is ... | Patterns.cs:13:9:15:9 | {...} | -| Patterns.cs:13:9:15:9 | {...} | Patterns.cs:13:9:15:9 | {...} | -| Patterns.cs:16:14:18:9 | if (...) ... | Patterns.cs:16:14:18:9 | if (...) ... | -| Patterns.cs:16:14:18:9 | if (...) ... | Patterns.cs:16:18:16:28 | [false] ... is ... | -| Patterns.cs:16:14:18:9 | if (...) ... | Patterns.cs:16:18:16:28 | [true] ... is ... | -| Patterns.cs:16:14:18:9 | if (...) ... | Patterns.cs:17:9:18:9 | {...} | -| Patterns.cs:16:18:16:28 | [false] ... is ... | Patterns.cs:16:18:16:28 | [false] ... is ... | -| Patterns.cs:16:18:16:28 | [true] ... is ... | Patterns.cs:16:18:16:28 | [true] ... is ... | -| Patterns.cs:16:18:16:28 | [true] ... is ... | Patterns.cs:17:9:18:9 | {...} | -| Patterns.cs:17:9:18:9 | {...} | Patterns.cs:17:9:18:9 | {...} | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:20:9:38:9 | switch (...) {...} | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:23:17:23:22 | break; | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:24:13:24:36 | case ...: | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:24:30:24:31 | access to local variable i2 | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:25:17:25:52 | ...; | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:27:13:27:24 | case ...: | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:28:17:28:47 | ...; | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:30:13:30:27 | case ...: | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:31:17:31:50 | ...; | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:33:13:33:24 | case ...: | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:34:17:34:22 | break; | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:35:13:35:20 | default: | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:40:9:42:9 | switch (...) {...} | -| Patterns.cs:23:17:23:22 | break; | Patterns.cs:23:17:23:22 | break; | -| Patterns.cs:24:13:24:36 | case ...: | Patterns.cs:24:13:24:36 | case ...: | -| Patterns.cs:24:13:24:36 | case ...: | Patterns.cs:24:30:24:31 | access to local variable i2 | -| Patterns.cs:24:13:24:36 | case ...: | Patterns.cs:25:17:25:52 | ...; | -| Patterns.cs:24:13:24:36 | case ...: | Patterns.cs:27:13:27:24 | case ...: | -| Patterns.cs:24:13:24:36 | case ...: | Patterns.cs:28:17:28:47 | ...; | -| Patterns.cs:24:13:24:36 | case ...: | Patterns.cs:30:13:30:27 | case ...: | -| Patterns.cs:24:13:24:36 | case ...: | Patterns.cs:31:17:31:50 | ...; | -| Patterns.cs:24:13:24:36 | case ...: | Patterns.cs:33:13:33:24 | case ...: | -| Patterns.cs:24:13:24:36 | case ...: | Patterns.cs:34:17:34:22 | break; | -| Patterns.cs:24:13:24:36 | case ...: | Patterns.cs:35:13:35:20 | default: | -| Patterns.cs:24:30:24:31 | access to local variable i2 | Patterns.cs:24:30:24:31 | access to local variable i2 | -| Patterns.cs:24:30:24:31 | access to local variable i2 | Patterns.cs:25:17:25:52 | ...; | -| Patterns.cs:25:17:25:52 | ...; | Patterns.cs:25:17:25:52 | ...; | +| NullCoalescing.cs:1:7:1:20 | Entry | NullCoalescing.cs:1:7:1:20 | Entry | +| NullCoalescing.cs:3:9:3:10 | Entry | NullCoalescing.cs:3:9:3:10 | Entry | +| NullCoalescing.cs:3:9:3:10 | Entry | NullCoalescing.cs:3:23:3:23 | After access to parameter i [non-null] | +| NullCoalescing.cs:3:9:3:10 | Entry | NullCoalescing.cs:3:23:3:23 | After access to parameter i [null] | +| NullCoalescing.cs:3:9:3:10 | Entry | NullCoalescing.cs:3:23:3:28 | After ... ?? ... | +| NullCoalescing.cs:3:23:3:23 | After access to parameter i [non-null] | NullCoalescing.cs:3:23:3:23 | After access to parameter i [non-null] | +| NullCoalescing.cs:3:23:3:23 | After access to parameter i [null] | NullCoalescing.cs:3:23:3:23 | After access to parameter i [null] | +| NullCoalescing.cs:3:23:3:28 | After ... ?? ... | NullCoalescing.cs:3:23:3:28 | After ... ?? ... | +| NullCoalescing.cs:5:9:5:10 | Entry | NullCoalescing.cs:5:9:5:10 | Entry | +| NullCoalescing.cs:5:9:5:10 | Entry | NullCoalescing.cs:5:24:5:43 | After ... ? ... : ... | +| NullCoalescing.cs:5:9:5:10 | Entry | NullCoalescing.cs:5:25:5:25 | After access to parameter b [non-null] | +| NullCoalescing.cs:5:9:5:10 | Entry | NullCoalescing.cs:5:25:5:25 | After access to parameter b [null] | +| NullCoalescing.cs:5:9:5:10 | Entry | NullCoalescing.cs:5:25:5:34 | After ... ?? ... [false] | +| NullCoalescing.cs:5:9:5:10 | Entry | NullCoalescing.cs:5:25:5:34 | After ... ?? ... [true] | +| NullCoalescing.cs:5:24:5:43 | After ... ? ... : ... | NullCoalescing.cs:5:24:5:43 | After ... ? ... : ... | +| NullCoalescing.cs:5:25:5:25 | After access to parameter b [non-null] | NullCoalescing.cs:5:25:5:25 | After access to parameter b [non-null] | +| NullCoalescing.cs:5:25:5:25 | After access to parameter b [non-null] | NullCoalescing.cs:5:25:5:34 | After ... ?? ... [true] | +| NullCoalescing.cs:5:25:5:25 | After access to parameter b [null] | NullCoalescing.cs:5:25:5:25 | After access to parameter b [null] | +| NullCoalescing.cs:5:25:5:34 | After ... ?? ... [false] | NullCoalescing.cs:5:25:5:34 | After ... ?? ... [false] | +| NullCoalescing.cs:5:25:5:34 | After ... ?? ... [true] | NullCoalescing.cs:5:25:5:34 | After ... ?? ... [true] | +| NullCoalescing.cs:7:12:7:13 | Entry | NullCoalescing.cs:7:12:7:13 | Entry | +| NullCoalescing.cs:7:12:7:13 | Entry | NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [non-null] | +| NullCoalescing.cs:7:12:7:13 | Entry | NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [null] | +| NullCoalescing.cs:7:12:7:13 | Entry | NullCoalescing.cs:7:40:7:53 | After ... ?? ... | +| NullCoalescing.cs:7:12:7:13 | Entry | NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [non-null] | +| NullCoalescing.cs:7:12:7:13 | Entry | NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [null] | +| NullCoalescing.cs:7:12:7:13 | Entry | NullCoalescing.cs:7:46:7:53 | After ... ?? ... | +| NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [non-null] | NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [non-null] | +| NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [null] | NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [null] | +| NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [null] | NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [non-null] | +| NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [null] | NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [null] | +| NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [null] | NullCoalescing.cs:7:46:7:53 | After ... ?? ... | +| NullCoalescing.cs:7:40:7:53 | After ... ?? ... | NullCoalescing.cs:7:40:7:53 | After ... ?? ... | +| NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [non-null] | NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [non-null] | +| NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [null] | NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [null] | +| NullCoalescing.cs:7:46:7:53 | After ... ?? ... | NullCoalescing.cs:7:46:7:53 | After ... ?? ... | +| NullCoalescing.cs:9:12:9:13 | Entry | NullCoalescing.cs:9:12:9:13 | Entry | +| NullCoalescing.cs:9:12:9:13 | Entry | NullCoalescing.cs:9:36:9:58 | After ... ?? ... | +| NullCoalescing.cs:9:12:9:13 | Entry | NullCoalescing.cs:9:37:9:37 | After access to parameter b [false] | +| NullCoalescing.cs:9:12:9:13 | Entry | NullCoalescing.cs:9:37:9:37 | After access to parameter b [true] | +| NullCoalescing.cs:9:12:9:13 | Entry | NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [non-null] | +| NullCoalescing.cs:9:12:9:13 | Entry | NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [null] | +| NullCoalescing.cs:9:12:9:13 | Entry | NullCoalescing.cs:9:41:9:41 | After access to parameter s [non-null] | +| NullCoalescing.cs:9:12:9:13 | Entry | NullCoalescing.cs:9:41:9:41 | After access to parameter s [null] | +| NullCoalescing.cs:9:12:9:13 | Entry | NullCoalescing.cs:9:45:9:45 | After access to parameter s [non-null] | +| NullCoalescing.cs:9:12:9:13 | Entry | NullCoalescing.cs:9:45:9:45 | After access to parameter s [null] | +| NullCoalescing.cs:9:12:9:13 | Entry | NullCoalescing.cs:9:51:9:52 | After "" [non-null] | +| NullCoalescing.cs:9:12:9:13 | Entry | NullCoalescing.cs:9:51:9:52 | After "" [null] | +| NullCoalescing.cs:9:12:9:13 | Entry | NullCoalescing.cs:9:51:9:58 | After ... ?? ... | +| NullCoalescing.cs:9:36:9:58 | After ... ?? ... | NullCoalescing.cs:9:36:9:58 | After ... ?? ... | +| NullCoalescing.cs:9:37:9:37 | After access to parameter b [false] | NullCoalescing.cs:9:37:9:37 | After access to parameter b [false] | +| NullCoalescing.cs:9:37:9:37 | After access to parameter b [false] | NullCoalescing.cs:9:45:9:45 | After access to parameter s [non-null] | +| NullCoalescing.cs:9:37:9:37 | After access to parameter b [false] | NullCoalescing.cs:9:45:9:45 | After access to parameter s [null] | +| NullCoalescing.cs:9:37:9:37 | After access to parameter b [true] | NullCoalescing.cs:9:37:9:37 | After access to parameter b [true] | +| NullCoalescing.cs:9:37:9:37 | After access to parameter b [true] | NullCoalescing.cs:9:41:9:41 | After access to parameter s [non-null] | +| NullCoalescing.cs:9:37:9:37 | After access to parameter b [true] | NullCoalescing.cs:9:41:9:41 | After access to parameter s [null] | +| NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [non-null] | NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [non-null] | +| NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [null] | NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [null] | +| NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [null] | NullCoalescing.cs:9:51:9:52 | After "" [non-null] | +| NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [null] | NullCoalescing.cs:9:51:9:52 | After "" [null] | +| NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [null] | NullCoalescing.cs:9:51:9:58 | After ... ?? ... | +| NullCoalescing.cs:9:41:9:41 | After access to parameter s [non-null] | NullCoalescing.cs:9:41:9:41 | After access to parameter s [non-null] | +| NullCoalescing.cs:9:41:9:41 | After access to parameter s [null] | NullCoalescing.cs:9:41:9:41 | After access to parameter s [null] | +| NullCoalescing.cs:9:45:9:45 | After access to parameter s [non-null] | NullCoalescing.cs:9:45:9:45 | After access to parameter s [non-null] | +| NullCoalescing.cs:9:45:9:45 | After access to parameter s [null] | NullCoalescing.cs:9:45:9:45 | After access to parameter s [null] | +| NullCoalescing.cs:9:51:9:52 | After "" [non-null] | NullCoalescing.cs:9:51:9:52 | After "" [non-null] | +| NullCoalescing.cs:9:51:9:52 | After "" [null] | NullCoalescing.cs:9:51:9:52 | After "" [null] | +| NullCoalescing.cs:9:51:9:58 | After ... ?? ... | NullCoalescing.cs:9:51:9:58 | After ... ?? ... | +| NullCoalescing.cs:11:9:11:10 | Entry | NullCoalescing.cs:11:9:11:10 | Entry | +| NullCoalescing.cs:11:9:11:10 | Entry | NullCoalescing.cs:11:43:11:68 | After ... ? ... : ... | +| NullCoalescing.cs:11:9:11:10 | Entry | NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [non-null] | +| NullCoalescing.cs:11:9:11:10 | Entry | NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [null] | +| NullCoalescing.cs:11:9:11:10 | Entry | NullCoalescing.cs:11:44:11:59 | After ... ?? ... [false] | +| NullCoalescing.cs:11:9:11:10 | Entry | NullCoalescing.cs:11:44:11:59 | After ... ?? ... [true] | +| NullCoalescing.cs:11:9:11:10 | Entry | NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [false] | +| NullCoalescing.cs:11:9:11:10 | Entry | NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [true] | +| NullCoalescing.cs:11:9:11:10 | Entry | NullCoalescing.cs:11:51:11:58 | After ... && ... [false] | +| NullCoalescing.cs:11:9:11:10 | Entry | NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [false] | +| NullCoalescing.cs:11:9:11:10 | Entry | NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [true] | +| NullCoalescing.cs:11:43:11:68 | After ... ? ... : ... | NullCoalescing.cs:11:43:11:68 | After ... ? ... : ... | +| NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [non-null] | NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [non-null] | +| NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [null] | NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [null] | +| NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [null] | NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [false] | +| NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [null] | NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [true] | +| NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [null] | NullCoalescing.cs:11:51:11:58 | After ... && ... [false] | +| NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [null] | NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [false] | +| NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [null] | NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [true] | +| NullCoalescing.cs:11:44:11:59 | After ... ?? ... [false] | NullCoalescing.cs:11:44:11:59 | After ... ?? ... [false] | +| NullCoalescing.cs:11:44:11:59 | After ... ?? ... [true] | NullCoalescing.cs:11:44:11:59 | After ... ?? ... [true] | +| NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [false] | NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [false] | +| NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [true] | NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [true] | +| NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [true] | NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [false] | +| NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [true] | NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [true] | +| NullCoalescing.cs:11:51:11:58 | After ... && ... [false] | NullCoalescing.cs:11:51:11:58 | After ... && ... [false] | +| NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [false] | NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [false] | +| NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [true] | NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [true] | +| NullCoalescing.cs:13:10:13:11 | Entry | NullCoalescing.cs:13:10:13:11 | Entry | +| NullCoalescing.cs:13:10:13:11 | Entry | NullCoalescing.cs:15:17:15:26 | After (...) ... [non-null] | +| NullCoalescing.cs:13:10:13:11 | Entry | NullCoalescing.cs:15:17:15:26 | After (...) ... [null] | +| NullCoalescing.cs:13:10:13:11 | Entry | NullCoalescing.cs:15:17:15:31 | After ... ?? ... | +| NullCoalescing.cs:13:10:13:11 | Entry | NullCoalescing.cs:16:17:16:18 | After "" [non-null] | +| NullCoalescing.cs:13:10:13:11 | Entry | NullCoalescing.cs:16:17:16:18 | After "" [null] | +| NullCoalescing.cs:13:10:13:11 | Entry | NullCoalescing.cs:16:17:16:25 | After ... ?? ... | +| NullCoalescing.cs:13:10:13:11 | Entry | NullCoalescing.cs:17:13:17:19 | After (...) ... [non-null] | +| NullCoalescing.cs:13:10:13:11 | Entry | NullCoalescing.cs:17:13:17:19 | After (...) ... [null] | +| NullCoalescing.cs:13:10:13:11 | Entry | NullCoalescing.cs:17:13:17:24 | After ... ?? ... | +| NullCoalescing.cs:15:17:15:26 | After (...) ... [non-null] | NullCoalescing.cs:15:17:15:26 | After (...) ... [non-null] | +| NullCoalescing.cs:15:17:15:26 | After (...) ... [null] | NullCoalescing.cs:15:17:15:26 | After (...) ... [null] | +| NullCoalescing.cs:15:17:15:31 | After ... ?? ... | NullCoalescing.cs:15:17:15:31 | After ... ?? ... | +| NullCoalescing.cs:15:17:15:31 | After ... ?? ... | NullCoalescing.cs:16:17:16:18 | After "" [non-null] | +| NullCoalescing.cs:15:17:15:31 | After ... ?? ... | NullCoalescing.cs:16:17:16:18 | After "" [null] | +| NullCoalescing.cs:15:17:15:31 | After ... ?? ... | NullCoalescing.cs:16:17:16:25 | After ... ?? ... | +| NullCoalescing.cs:15:17:15:31 | After ... ?? ... | NullCoalescing.cs:17:13:17:19 | After (...) ... [non-null] | +| NullCoalescing.cs:15:17:15:31 | After ... ?? ... | NullCoalescing.cs:17:13:17:19 | After (...) ... [null] | +| NullCoalescing.cs:15:17:15:31 | After ... ?? ... | NullCoalescing.cs:17:13:17:24 | After ... ?? ... | +| NullCoalescing.cs:16:17:16:18 | After "" [non-null] | NullCoalescing.cs:16:17:16:18 | After "" [non-null] | +| NullCoalescing.cs:16:17:16:18 | After "" [null] | NullCoalescing.cs:16:17:16:18 | After "" [null] | +| NullCoalescing.cs:16:17:16:25 | After ... ?? ... | NullCoalescing.cs:16:17:16:25 | After ... ?? ... | +| NullCoalescing.cs:16:17:16:25 | After ... ?? ... | NullCoalescing.cs:17:13:17:19 | After (...) ... [non-null] | +| NullCoalescing.cs:16:17:16:25 | After ... ?? ... | NullCoalescing.cs:17:13:17:19 | After (...) ... [null] | +| NullCoalescing.cs:16:17:16:25 | After ... ?? ... | NullCoalescing.cs:17:13:17:24 | After ... ?? ... | +| NullCoalescing.cs:17:13:17:19 | After (...) ... [non-null] | NullCoalescing.cs:17:13:17:19 | After (...) ... [non-null] | +| NullCoalescing.cs:17:13:17:19 | After (...) ... [null] | NullCoalescing.cs:17:13:17:19 | After (...) ... [null] | +| NullCoalescing.cs:17:13:17:24 | After ... ?? ... | NullCoalescing.cs:17:13:17:24 | After ... ?? ... | +| PartialImplementationA.cs:1:15:1:21 | Entry | PartialImplementationA.cs:1:15:1:21 | Entry | +| PartialImplementationA.cs:3:12:3:18 | Entry | PartialImplementationA.cs:3:12:3:18 | Entry | +| PartialImplementationB.cs:4:12:4:18 | Entry | PartialImplementationB.cs:4:12:4:18 | Entry | +| Patterns.cs:3:7:3:14 | Entry | Patterns.cs:3:7:3:14 | Entry | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:5:10:5:11 | Entry | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:8:9:18:9 | After if (...) ... | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:8:13:8:23 | After ... is ... [false] | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:8:13:8:23 | [MatchTrue] ... is ... | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:12:14:18:9 | After if (...) ... | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:12:18:12:31 | After ... is ... [false] | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:12:18:12:31 | [MatchTrue] ... is ... | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:16:14:18:9 | After if (...) ... | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:16:18:16:28 | After ... is ... [false] | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:16:18:16:28 | [MatchTrue] ... is ... | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:20:9:38:9 | After switch (...) {...} | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:22:18:22:22 | After "xyz" [match] | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:22:18:22:22 | After "xyz" [no-match] | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:24:18:24:23 | After Int32 i2 [match] | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:24:18:24:23 | After Int32 i2 [no-match] | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:24:30:24:35 | After ... > ... [false] | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:24:30:24:35 | After ... > ... [true] | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:27:13:27:24 | case ...: | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:27:18:27:23 | After Int32 i3 [match] | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:27:18:27:23 | After Int32 i3 [no-match] | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:30:18:30:26 | After String s2 [match] | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:30:18:30:26 | After String s2 [no-match] | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:33:18:33:23 | After Object v2 [match] | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:33:18:33:23 | After Object v2 [no-match] | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:8:9:18:9 | After if (...) ... | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:20:9:38:9 | After switch (...) {...} | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:22:18:22:22 | After "xyz" [match] | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:22:18:22:22 | After "xyz" [no-match] | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:24:18:24:23 | After Int32 i2 [match] | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:24:18:24:23 | After Int32 i2 [no-match] | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:24:30:24:35 | After ... > ... [false] | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:24:30:24:35 | After ... > ... [true] | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:27:13:27:24 | case ...: | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:27:18:27:23 | After Int32 i3 [match] | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:27:18:27:23 | After Int32 i3 [no-match] | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:30:18:30:26 | After String s2 [match] | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:30:18:30:26 | After String s2 [no-match] | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:33:18:33:23 | After Object v2 [match] | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:33:18:33:23 | After Object v2 [no-match] | +| Patterns.cs:8:13:8:23 | After ... is ... [false] | Patterns.cs:8:13:8:23 | After ... is ... [false] | +| Patterns.cs:8:13:8:23 | After ... is ... [false] | Patterns.cs:12:14:18:9 | After if (...) ... | +| Patterns.cs:8:13:8:23 | After ... is ... [false] | Patterns.cs:12:18:12:31 | After ... is ... [false] | +| Patterns.cs:8:13:8:23 | After ... is ... [false] | Patterns.cs:12:18:12:31 | [MatchTrue] ... is ... | +| Patterns.cs:8:13:8:23 | After ... is ... [false] | Patterns.cs:16:14:18:9 | After if (...) ... | +| Patterns.cs:8:13:8:23 | After ... is ... [false] | Patterns.cs:16:18:16:28 | After ... is ... [false] | +| Patterns.cs:8:13:8:23 | After ... is ... [false] | Patterns.cs:16:18:16:28 | [MatchTrue] ... is ... | +| Patterns.cs:8:13:8:23 | [MatchTrue] ... is ... | Patterns.cs:8:13:8:23 | [MatchTrue] ... is ... | +| Patterns.cs:12:14:18:9 | After if (...) ... | Patterns.cs:12:14:18:9 | After if (...) ... | +| Patterns.cs:12:18:12:31 | After ... is ... [false] | Patterns.cs:12:18:12:31 | After ... is ... [false] | +| Patterns.cs:12:18:12:31 | After ... is ... [false] | Patterns.cs:16:14:18:9 | After if (...) ... | +| Patterns.cs:12:18:12:31 | After ... is ... [false] | Patterns.cs:16:18:16:28 | After ... is ... [false] | +| Patterns.cs:12:18:12:31 | After ... is ... [false] | Patterns.cs:16:18:16:28 | [MatchTrue] ... is ... | +| Patterns.cs:12:18:12:31 | [MatchTrue] ... is ... | Patterns.cs:12:18:12:31 | [MatchTrue] ... is ... | +| Patterns.cs:16:14:18:9 | After if (...) ... | Patterns.cs:16:14:18:9 | After if (...) ... | +| Patterns.cs:16:18:16:28 | After ... is ... [false] | Patterns.cs:16:18:16:28 | After ... is ... [false] | +| Patterns.cs:16:18:16:28 | [MatchTrue] ... is ... | Patterns.cs:16:18:16:28 | [MatchTrue] ... is ... | +| Patterns.cs:20:9:38:9 | After switch (...) {...} | Patterns.cs:20:9:38:9 | After switch (...) {...} | +| Patterns.cs:22:18:22:22 | After "xyz" [match] | Patterns.cs:22:18:22:22 | After "xyz" [match] | +| Patterns.cs:22:18:22:22 | After "xyz" [no-match] | Patterns.cs:22:18:22:22 | After "xyz" [no-match] | +| Patterns.cs:22:18:22:22 | After "xyz" [no-match] | Patterns.cs:24:18:24:23 | After Int32 i2 [match] | +| Patterns.cs:22:18:22:22 | After "xyz" [no-match] | Patterns.cs:24:18:24:23 | After Int32 i2 [no-match] | +| Patterns.cs:22:18:22:22 | After "xyz" [no-match] | Patterns.cs:24:30:24:35 | After ... > ... [false] | +| Patterns.cs:22:18:22:22 | After "xyz" [no-match] | Patterns.cs:24:30:24:35 | After ... > ... [true] | +| Patterns.cs:22:18:22:22 | After "xyz" [no-match] | Patterns.cs:27:13:27:24 | case ...: | +| Patterns.cs:22:18:22:22 | After "xyz" [no-match] | Patterns.cs:27:18:27:23 | After Int32 i3 [match] | +| Patterns.cs:22:18:22:22 | After "xyz" [no-match] | Patterns.cs:27:18:27:23 | After Int32 i3 [no-match] | +| Patterns.cs:22:18:22:22 | After "xyz" [no-match] | Patterns.cs:30:18:30:26 | After String s2 [match] | +| Patterns.cs:22:18:22:22 | After "xyz" [no-match] | Patterns.cs:30:18:30:26 | After String s2 [no-match] | +| Patterns.cs:22:18:22:22 | After "xyz" [no-match] | Patterns.cs:33:18:33:23 | After Object v2 [match] | +| Patterns.cs:22:18:22:22 | After "xyz" [no-match] | Patterns.cs:33:18:33:23 | After Object v2 [no-match] | +| Patterns.cs:24:18:24:23 | After Int32 i2 [match] | Patterns.cs:24:18:24:23 | After Int32 i2 [match] | +| Patterns.cs:24:18:24:23 | After Int32 i2 [match] | Patterns.cs:24:30:24:35 | After ... > ... [false] | +| Patterns.cs:24:18:24:23 | After Int32 i2 [match] | Patterns.cs:24:30:24:35 | After ... > ... [true] | +| Patterns.cs:24:18:24:23 | After Int32 i2 [no-match] | Patterns.cs:24:18:24:23 | After Int32 i2 [no-match] | +| Patterns.cs:24:30:24:35 | After ... > ... [false] | Patterns.cs:24:30:24:35 | After ... > ... [false] | +| Patterns.cs:24:30:24:35 | After ... > ... [true] | Patterns.cs:24:30:24:35 | After ... > ... [true] | | Patterns.cs:27:13:27:24 | case ...: | Patterns.cs:27:13:27:24 | case ...: | -| Patterns.cs:27:13:27:24 | case ...: | Patterns.cs:28:17:28:47 | ...; | -| Patterns.cs:27:13:27:24 | case ...: | Patterns.cs:30:13:30:27 | case ...: | -| Patterns.cs:27:13:27:24 | case ...: | Patterns.cs:31:17:31:50 | ...; | -| Patterns.cs:27:13:27:24 | case ...: | Patterns.cs:33:13:33:24 | case ...: | -| Patterns.cs:27:13:27:24 | case ...: | Patterns.cs:34:17:34:22 | break; | -| Patterns.cs:27:13:27:24 | case ...: | Patterns.cs:35:13:35:20 | default: | -| Patterns.cs:28:17:28:47 | ...; | Patterns.cs:28:17:28:47 | ...; | -| Patterns.cs:30:13:30:27 | case ...: | Patterns.cs:30:13:30:27 | case ...: | -| Patterns.cs:30:13:30:27 | case ...: | Patterns.cs:31:17:31:50 | ...; | -| Patterns.cs:30:13:30:27 | case ...: | Patterns.cs:33:13:33:24 | case ...: | -| Patterns.cs:30:13:30:27 | case ...: | Patterns.cs:34:17:34:22 | break; | -| Patterns.cs:30:13:30:27 | case ...: | Patterns.cs:35:13:35:20 | default: | -| Patterns.cs:31:17:31:50 | ...; | Patterns.cs:31:17:31:50 | ...; | -| Patterns.cs:33:13:33:24 | case ...: | Patterns.cs:33:13:33:24 | case ...: | -| Patterns.cs:33:13:33:24 | case ...: | Patterns.cs:34:17:34:22 | break; | -| Patterns.cs:33:13:33:24 | case ...: | Patterns.cs:35:13:35:20 | default: | -| Patterns.cs:34:17:34:22 | break; | Patterns.cs:34:17:34:22 | break; | -| Patterns.cs:35:13:35:20 | default: | Patterns.cs:35:13:35:20 | default: | -| Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:40:9:42:9 | switch (...) {...} | -| Patterns.cs:47:24:47:25 | enter M2 | Patterns.cs:47:24:47:25 | enter M2 | -| Patterns.cs:50:24:50:25 | enter M3 | Patterns.cs:50:24:50:25 | enter M3 | -| Patterns.cs:50:24:50:25 | enter M3 | Patterns.cs:51:9:51:21 | [false] ... is ... | -| Patterns.cs:50:24:50:25 | enter M3 | Patterns.cs:51:9:51:21 | [true] ... is ... | -| Patterns.cs:50:24:50:25 | enter M3 | Patterns.cs:51:9:51:39 | ... ? ... : ... | -| Patterns.cs:50:24:50:25 | enter M3 | Patterns.cs:51:14:51:21 | [match] not ... | -| Patterns.cs:50:24:50:25 | enter M3 | Patterns.cs:51:14:51:21 | [no-match] not ... | -| Patterns.cs:50:24:50:25 | enter M3 | Patterns.cs:51:25:51:25 | access to parameter c | -| Patterns.cs:50:24:50:25 | enter M3 | Patterns.cs:51:34:51:34 | access to parameter c | -| Patterns.cs:51:9:51:21 | [false] ... is ... | Patterns.cs:51:9:51:21 | [false] ... is ... | -| Patterns.cs:51:9:51:21 | [false] ... is ... | Patterns.cs:51:34:51:34 | access to parameter c | -| Patterns.cs:51:9:51:21 | [true] ... is ... | Patterns.cs:51:9:51:21 | [true] ... is ... | -| Patterns.cs:51:9:51:21 | [true] ... is ... | Patterns.cs:51:25:51:25 | access to parameter c | -| Patterns.cs:51:9:51:39 | ... ? ... : ... | Patterns.cs:51:9:51:39 | ... ? ... : ... | -| Patterns.cs:51:14:51:21 | [match] not ... | Patterns.cs:51:9:51:21 | [true] ... is ... | -| Patterns.cs:51:14:51:21 | [match] not ... | Patterns.cs:51:14:51:21 | [match] not ... | -| Patterns.cs:51:14:51:21 | [match] not ... | Patterns.cs:51:25:51:25 | access to parameter c | -| Patterns.cs:51:14:51:21 | [no-match] not ... | Patterns.cs:51:9:51:21 | [false] ... is ... | -| Patterns.cs:51:14:51:21 | [no-match] not ... | Patterns.cs:51:14:51:21 | [no-match] not ... | -| Patterns.cs:51:14:51:21 | [no-match] not ... | Patterns.cs:51:34:51:34 | access to parameter c | -| Patterns.cs:51:25:51:25 | access to parameter c | Patterns.cs:51:25:51:25 | access to parameter c | -| Patterns.cs:51:34:51:34 | access to parameter c | Patterns.cs:51:34:51:34 | access to parameter c | -| Patterns.cs:53:24:53:25 | enter M4 | Patterns.cs:53:24:53:25 | enter M4 | -| Patterns.cs:53:24:53:25 | enter M4 | Patterns.cs:54:18:54:37 | { ... } | -| Patterns.cs:53:24:53:25 | enter M4 | Patterns.cs:54:27:54:35 | [match] { ... } | -| Patterns.cs:53:24:53:25 | enter M4 | Patterns.cs:54:27:54:35 | [no-match] { ... } | -| Patterns.cs:53:24:53:25 | enter M4 | Patterns.cs:54:33:54:33 | 1 | -| Patterns.cs:54:18:54:37 | { ... } | Patterns.cs:54:18:54:37 | { ... } | -| Patterns.cs:54:27:54:35 | [match] { ... } | Patterns.cs:54:27:54:35 | [match] { ... } | -| Patterns.cs:54:27:54:35 | [no-match] { ... } | Patterns.cs:54:27:54:35 | [no-match] { ... } | -| Patterns.cs:54:33:54:33 | 1 | Patterns.cs:54:27:54:35 | [match] { ... } | -| Patterns.cs:54:33:54:33 | 1 | Patterns.cs:54:27:54:35 | [no-match] { ... } | -| Patterns.cs:54:33:54:33 | 1 | Patterns.cs:54:33:54:33 | 1 | -| Patterns.cs:56:26:56:27 | enter M5 | Patterns.cs:56:26:56:27 | enter M5 | -| Patterns.cs:56:26:56:27 | enter M5 | Patterns.cs:58:16:62:9 | ... switch { ... } | -| Patterns.cs:56:26:56:27 | enter M5 | Patterns.cs:60:13:60:17 | [match] not ... | -| Patterns.cs:56:26:56:27 | enter M5 | Patterns.cs:60:13:60:17 | [no-match] not ... | -| Patterns.cs:56:26:56:27 | enter M5 | Patterns.cs:60:22:60:28 | "not 1" | -| Patterns.cs:56:26:56:27 | enter M5 | Patterns.cs:61:13:61:13 | _ | -| Patterns.cs:56:26:56:27 | enter M5 | Patterns.cs:61:18:61:24 | "other" | -| Patterns.cs:58:16:62:9 | ... switch { ... } | Patterns.cs:58:16:62:9 | ... switch { ... } | -| Patterns.cs:60:13:60:17 | [match] not ... | Patterns.cs:60:13:60:17 | [match] not ... | -| Patterns.cs:60:13:60:17 | [match] not ... | Patterns.cs:60:22:60:28 | "not 1" | -| Patterns.cs:60:13:60:17 | [no-match] not ... | Patterns.cs:60:13:60:17 | [no-match] not ... | -| Patterns.cs:60:13:60:17 | [no-match] not ... | Patterns.cs:61:13:61:13 | _ | -| Patterns.cs:60:13:60:17 | [no-match] not ... | Patterns.cs:61:18:61:24 | "other" | -| Patterns.cs:60:22:60:28 | "not 1" | Patterns.cs:60:22:60:28 | "not 1" | -| Patterns.cs:61:13:61:13 | _ | Patterns.cs:61:13:61:13 | _ | -| Patterns.cs:61:13:61:13 | _ | Patterns.cs:61:18:61:24 | "other" | -| Patterns.cs:61:18:61:24 | "other" | Patterns.cs:61:18:61:24 | "other" | -| Patterns.cs:65:26:65:27 | enter M6 | Patterns.cs:65:26:65:27 | enter M6 | -| Patterns.cs:65:26:65:27 | enter M6 | Patterns.cs:69:13:69:17 | [no-match] not ... | -| Patterns.cs:65:26:65:27 | enter M6 | Patterns.cs:70:13:70:13 | 2 | -| Patterns.cs:65:26:65:27 | enter M6 | Patterns.cs:70:18:70:27 | "possible" | -| Patterns.cs:69:13:69:17 | [no-match] not ... | Patterns.cs:69:13:69:17 | [no-match] not ... | -| Patterns.cs:69:13:69:17 | [no-match] not ... | Patterns.cs:70:13:70:13 | 2 | -| Patterns.cs:69:13:69:17 | [no-match] not ... | Patterns.cs:70:18:70:27 | "possible" | -| Patterns.cs:70:13:70:13 | 2 | Patterns.cs:70:13:70:13 | 2 | -| Patterns.cs:70:13:70:13 | 2 | Patterns.cs:70:18:70:27 | "possible" | -| Patterns.cs:70:18:70:27 | "possible" | Patterns.cs:70:18:70:27 | "possible" | -| Patterns.cs:74:26:74:27 | enter M7 | Patterns.cs:74:26:74:27 | enter M7 | -| Patterns.cs:74:26:74:27 | enter M7 | Patterns.cs:76:16:82:9 | ... switch { ... } | -| Patterns.cs:74:26:74:27 | enter M7 | Patterns.cs:78:20:78:24 | "> 1" | -| Patterns.cs:74:26:74:27 | enter M7 | Patterns.cs:79:15:79:15 | 0 | -| Patterns.cs:74:26:74:27 | enter M7 | Patterns.cs:79:20:79:24 | "< 0" | -| Patterns.cs:74:26:74:27 | enter M7 | Patterns.cs:80:13:80:13 | 1 | -| Patterns.cs:74:26:74:27 | enter M7 | Patterns.cs:80:18:80:20 | "1" | -| Patterns.cs:74:26:74:27 | enter M7 | Patterns.cs:81:13:81:13 | _ | -| Patterns.cs:74:26:74:27 | enter M7 | Patterns.cs:81:18:81:20 | "0" | -| Patterns.cs:76:16:82:9 | ... switch { ... } | Patterns.cs:76:16:82:9 | ... switch { ... } | -| Patterns.cs:78:20:78:24 | "> 1" | Patterns.cs:78:20:78:24 | "> 1" | -| Patterns.cs:79:15:79:15 | 0 | Patterns.cs:79:15:79:15 | 0 | -| Patterns.cs:79:15:79:15 | 0 | Patterns.cs:79:20:79:24 | "< 0" | -| Patterns.cs:79:15:79:15 | 0 | Patterns.cs:80:13:80:13 | 1 | -| Patterns.cs:79:15:79:15 | 0 | Patterns.cs:80:18:80:20 | "1" | -| Patterns.cs:79:15:79:15 | 0 | Patterns.cs:81:13:81:13 | _ | -| Patterns.cs:79:15:79:15 | 0 | Patterns.cs:81:18:81:20 | "0" | -| Patterns.cs:79:20:79:24 | "< 0" | Patterns.cs:79:20:79:24 | "< 0" | -| Patterns.cs:80:13:80:13 | 1 | Patterns.cs:80:13:80:13 | 1 | -| Patterns.cs:80:13:80:13 | 1 | Patterns.cs:80:18:80:20 | "1" | -| Patterns.cs:80:13:80:13 | 1 | Patterns.cs:81:13:81:13 | _ | -| Patterns.cs:80:13:80:13 | 1 | Patterns.cs:81:18:81:20 | "0" | -| Patterns.cs:80:18:80:20 | "1" | Patterns.cs:80:18:80:20 | "1" | -| Patterns.cs:81:13:81:13 | _ | Patterns.cs:81:13:81:13 | _ | -| Patterns.cs:81:13:81:13 | _ | Patterns.cs:81:18:81:20 | "0" | -| Patterns.cs:81:18:81:20 | "0" | Patterns.cs:81:18:81:20 | "0" | -| Patterns.cs:85:26:85:27 | enter M8 | Patterns.cs:85:26:85:27 | enter M8 | -| Patterns.cs:85:26:85:27 | enter M8 | Patterns.cs:85:39:85:53 | [false] ... is ... | -| Patterns.cs:85:26:85:27 | enter M8 | Patterns.cs:85:39:85:53 | [true] ... is ... | -| Patterns.cs:85:26:85:27 | enter M8 | Patterns.cs:85:39:85:69 | ... ? ... : ... | -| Patterns.cs:85:26:85:27 | enter M8 | Patterns.cs:85:44:85:53 | [match] ... or ... | -| Patterns.cs:85:26:85:27 | enter M8 | Patterns.cs:85:44:85:53 | [no-match] ... or ... | -| Patterns.cs:85:26:85:27 | enter M8 | Patterns.cs:85:49:85:53 | [match] not ... | -| Patterns.cs:85:26:85:27 | enter M8 | Patterns.cs:85:49:85:53 | [no-match] not ... | -| Patterns.cs:85:26:85:27 | enter M8 | Patterns.cs:85:53:85:53 | 2 | -| Patterns.cs:85:26:85:27 | enter M8 | Patterns.cs:85:57:85:63 | "not 2" | -| Patterns.cs:85:26:85:27 | enter M8 | Patterns.cs:85:67:85:69 | "2" | -| Patterns.cs:85:39:85:53 | [false] ... is ... | Patterns.cs:85:39:85:53 | [false] ... is ... | -| Patterns.cs:85:39:85:53 | [false] ... is ... | Patterns.cs:85:67:85:69 | "2" | -| Patterns.cs:85:39:85:53 | [true] ... is ... | Patterns.cs:85:39:85:53 | [true] ... is ... | -| Patterns.cs:85:39:85:53 | [true] ... is ... | Patterns.cs:85:57:85:63 | "not 2" | -| Patterns.cs:85:39:85:69 | ... ? ... : ... | Patterns.cs:85:39:85:69 | ... ? ... : ... | -| Patterns.cs:85:44:85:53 | [match] ... or ... | Patterns.cs:85:39:85:53 | [true] ... is ... | -| Patterns.cs:85:44:85:53 | [match] ... or ... | Patterns.cs:85:44:85:53 | [match] ... or ... | -| Patterns.cs:85:44:85:53 | [match] ... or ... | Patterns.cs:85:57:85:63 | "not 2" | -| Patterns.cs:85:44:85:53 | [no-match] ... or ... | Patterns.cs:85:39:85:53 | [false] ... is ... | -| Patterns.cs:85:44:85:53 | [no-match] ... or ... | Patterns.cs:85:44:85:53 | [no-match] ... or ... | -| Patterns.cs:85:44:85:53 | [no-match] ... or ... | Patterns.cs:85:67:85:69 | "2" | -| Patterns.cs:85:49:85:53 | [match] not ... | Patterns.cs:85:49:85:53 | [match] not ... | -| Patterns.cs:85:49:85:53 | [no-match] not ... | Patterns.cs:85:39:85:53 | [false] ... is ... | -| Patterns.cs:85:49:85:53 | [no-match] not ... | Patterns.cs:85:44:85:53 | [no-match] ... or ... | -| Patterns.cs:85:49:85:53 | [no-match] not ... | Patterns.cs:85:49:85:53 | [no-match] not ... | -| Patterns.cs:85:49:85:53 | [no-match] not ... | Patterns.cs:85:67:85:69 | "2" | -| Patterns.cs:85:53:85:53 | 2 | Patterns.cs:85:39:85:53 | [false] ... is ... | -| Patterns.cs:85:53:85:53 | 2 | Patterns.cs:85:44:85:53 | [no-match] ... or ... | -| Patterns.cs:85:53:85:53 | 2 | Patterns.cs:85:49:85:53 | [match] not ... | -| Patterns.cs:85:53:85:53 | 2 | Patterns.cs:85:49:85:53 | [no-match] not ... | -| Patterns.cs:85:53:85:53 | 2 | Patterns.cs:85:53:85:53 | 2 | -| Patterns.cs:85:53:85:53 | 2 | Patterns.cs:85:67:85:69 | "2" | -| Patterns.cs:85:57:85:63 | "not 2" | Patterns.cs:85:57:85:63 | "not 2" | -| Patterns.cs:85:67:85:69 | "2" | Patterns.cs:85:67:85:69 | "2" | -| Patterns.cs:87:26:87:27 | enter M9 | Patterns.cs:87:26:87:27 | enter M9 | -| Patterns.cs:87:26:87:27 | enter M9 | Patterns.cs:87:39:87:54 | [false] ... is ... | -| Patterns.cs:87:26:87:27 | enter M9 | Patterns.cs:87:39:87:54 | [true] ... is ... | -| Patterns.cs:87:26:87:27 | enter M9 | Patterns.cs:87:39:87:70 | ... ? ... : ... | -| Patterns.cs:87:26:87:27 | enter M9 | Patterns.cs:87:44:87:54 | [match] ... and ... | -| Patterns.cs:87:26:87:27 | enter M9 | Patterns.cs:87:44:87:54 | [no-match] ... and ... | -| Patterns.cs:87:26:87:27 | enter M9 | Patterns.cs:87:50:87:54 | [match] not ... | -| Patterns.cs:87:26:87:27 | enter M9 | Patterns.cs:87:50:87:54 | [no-match] not ... | -| Patterns.cs:87:26:87:27 | enter M9 | Patterns.cs:87:54:87:54 | 2 | -| Patterns.cs:87:26:87:27 | enter M9 | Patterns.cs:87:58:87:60 | "1" | -| Patterns.cs:87:26:87:27 | enter M9 | Patterns.cs:87:64:87:70 | "not 1" | -| Patterns.cs:87:39:87:54 | [false] ... is ... | Patterns.cs:87:39:87:54 | [false] ... is ... | -| Patterns.cs:87:39:87:54 | [false] ... is ... | Patterns.cs:87:64:87:70 | "not 1" | -| Patterns.cs:87:39:87:54 | [true] ... is ... | Patterns.cs:87:39:87:54 | [true] ... is ... | -| Patterns.cs:87:39:87:54 | [true] ... is ... | Patterns.cs:87:58:87:60 | "1" | -| Patterns.cs:87:39:87:70 | ... ? ... : ... | Patterns.cs:87:39:87:70 | ... ? ... : ... | -| Patterns.cs:87:44:87:54 | [match] ... and ... | Patterns.cs:87:39:87:54 | [true] ... is ... | -| Patterns.cs:87:44:87:54 | [match] ... and ... | Patterns.cs:87:44:87:54 | [match] ... and ... | -| Patterns.cs:87:44:87:54 | [match] ... and ... | Patterns.cs:87:58:87:60 | "1" | -| Patterns.cs:87:44:87:54 | [no-match] ... and ... | Patterns.cs:87:39:87:54 | [false] ... is ... | -| Patterns.cs:87:44:87:54 | [no-match] ... and ... | Patterns.cs:87:44:87:54 | [no-match] ... and ... | -| Patterns.cs:87:44:87:54 | [no-match] ... and ... | Patterns.cs:87:64:87:70 | "not 1" | -| Patterns.cs:87:50:87:54 | [match] not ... | Patterns.cs:87:39:87:54 | [true] ... is ... | -| Patterns.cs:87:50:87:54 | [match] not ... | Patterns.cs:87:44:87:54 | [match] ... and ... | -| Patterns.cs:87:50:87:54 | [match] not ... | Patterns.cs:87:50:87:54 | [match] not ... | -| Patterns.cs:87:50:87:54 | [match] not ... | Patterns.cs:87:58:87:60 | "1" | -| Patterns.cs:87:50:87:54 | [no-match] not ... | Patterns.cs:87:50:87:54 | [no-match] not ... | -| Patterns.cs:87:54:87:54 | 2 | Patterns.cs:87:39:87:54 | [true] ... is ... | -| Patterns.cs:87:54:87:54 | 2 | Patterns.cs:87:44:87:54 | [match] ... and ... | -| Patterns.cs:87:54:87:54 | 2 | Patterns.cs:87:50:87:54 | [match] not ... | -| Patterns.cs:87:54:87:54 | 2 | Patterns.cs:87:50:87:54 | [no-match] not ... | -| Patterns.cs:87:54:87:54 | 2 | Patterns.cs:87:54:87:54 | 2 | -| Patterns.cs:87:54:87:54 | 2 | Patterns.cs:87:58:87:60 | "1" | -| Patterns.cs:87:58:87:60 | "1" | Patterns.cs:87:58:87:60 | "1" | -| Patterns.cs:87:64:87:70 | "not 1" | Patterns.cs:87:64:87:70 | "not 1" | -| Patterns.cs:93:17:93:19 | enter M10 | Patterns.cs:93:17:93:19 | enter M10 | -| Patterns.cs:93:17:93:19 | enter M10 | Patterns.cs:93:17:93:19 | exit M10 (normal) | -| Patterns.cs:93:17:93:19 | enter M10 | Patterns.cs:95:13:95:40 | [false] ... is ... | -| Patterns.cs:93:17:93:19 | enter M10 | Patterns.cs:95:13:95:40 | [true] ... is ... | -| Patterns.cs:93:17:93:19 | enter M10 | Patterns.cs:95:21:95:40 | [match] { ... } | -| Patterns.cs:93:17:93:19 | enter M10 | Patterns.cs:95:21:95:40 | [match] { ... } | -| Patterns.cs:93:17:93:19 | enter M10 | Patterns.cs:95:21:95:40 | [no-match] { ... } | -| Patterns.cs:93:17:93:19 | enter M10 | Patterns.cs:95:21:95:40 | [no-match] { ... } | -| Patterns.cs:93:17:93:19 | enter M10 | Patterns.cs:95:29:95:38 | [match] ... or ... | -| Patterns.cs:93:17:93:19 | enter M10 | Patterns.cs:95:29:95:38 | [no-match] ... or ... | -| Patterns.cs:93:17:93:19 | enter M10 | Patterns.cs:95:36:95:38 | access to constant B | -| Patterns.cs:93:17:93:19 | enter M10 | Patterns.cs:96:9:98:9 | {...} | -| Patterns.cs:93:17:93:19 | exit M10 (normal) | Patterns.cs:93:17:93:19 | exit M10 (normal) | -| Patterns.cs:95:13:95:40 | [false] ... is ... | Patterns.cs:95:13:95:40 | [false] ... is ... | -| Patterns.cs:95:13:95:40 | [true] ... is ... | Patterns.cs:95:13:95:40 | [true] ... is ... | -| Patterns.cs:95:13:95:40 | [true] ... is ... | Patterns.cs:96:9:98:9 | {...} | -| Patterns.cs:95:21:95:40 | [match] { ... } | Patterns.cs:95:13:95:40 | [true] ... is ... | -| Patterns.cs:95:21:95:40 | [match] { ... } | Patterns.cs:95:13:95:40 | [true] ... is ... | -| Patterns.cs:95:21:95:40 | [match] { ... } | Patterns.cs:95:21:95:40 | [match] { ... } | -| Patterns.cs:95:21:95:40 | [match] { ... } | Patterns.cs:95:21:95:40 | [match] { ... } | -| Patterns.cs:95:21:95:40 | [match] { ... } | Patterns.cs:95:21:95:40 | [match] { ... } | -| Patterns.cs:95:21:95:40 | [match] { ... } | Patterns.cs:96:9:98:9 | {...} | -| Patterns.cs:95:21:95:40 | [match] { ... } | Patterns.cs:96:9:98:9 | {...} | -| Patterns.cs:95:21:95:40 | [no-match] { ... } | Patterns.cs:95:13:95:40 | [false] ... is ... | -| Patterns.cs:95:21:95:40 | [no-match] { ... } | Patterns.cs:95:13:95:40 | [false] ... is ... | -| Patterns.cs:95:21:95:40 | [no-match] { ... } | Patterns.cs:95:21:95:40 | [no-match] { ... } | -| Patterns.cs:95:21:95:40 | [no-match] { ... } | Patterns.cs:95:21:95:40 | [no-match] { ... } | -| Patterns.cs:95:21:95:40 | [no-match] { ... } | Patterns.cs:95:21:95:40 | [no-match] { ... } | -| Patterns.cs:95:29:95:38 | [match] ... or ... | Patterns.cs:95:13:95:40 | [true] ... is ... | -| Patterns.cs:95:29:95:38 | [match] ... or ... | Patterns.cs:95:21:95:40 | [match] { ... } | -| Patterns.cs:95:29:95:38 | [match] ... or ... | Patterns.cs:95:21:95:40 | [match] { ... } | -| Patterns.cs:95:29:95:38 | [match] ... or ... | Patterns.cs:95:29:95:38 | [match] ... or ... | -| Patterns.cs:95:29:95:38 | [match] ... or ... | Patterns.cs:96:9:98:9 | {...} | -| Patterns.cs:95:29:95:38 | [no-match] ... or ... | Patterns.cs:95:13:95:40 | [false] ... is ... | -| Patterns.cs:95:29:95:38 | [no-match] ... or ... | Patterns.cs:95:21:95:40 | [no-match] { ... } | -| Patterns.cs:95:29:95:38 | [no-match] ... or ... | Patterns.cs:95:21:95:40 | [no-match] { ... } | -| Patterns.cs:95:29:95:38 | [no-match] ... or ... | Patterns.cs:95:29:95:38 | [no-match] ... or ... | -| Patterns.cs:95:36:95:38 | access to constant B | Patterns.cs:95:13:95:40 | [false] ... is ... | -| Patterns.cs:95:36:95:38 | access to constant B | Patterns.cs:95:21:95:40 | [no-match] { ... } | -| Patterns.cs:95:36:95:38 | access to constant B | Patterns.cs:95:21:95:40 | [no-match] { ... } | -| Patterns.cs:95:36:95:38 | access to constant B | Patterns.cs:95:29:95:38 | [no-match] ... or ... | -| Patterns.cs:95:36:95:38 | access to constant B | Patterns.cs:95:36:95:38 | access to constant B | -| Patterns.cs:96:9:98:9 | {...} | Patterns.cs:96:9:98:9 | {...} | -| PostDominance.cs:3:7:3:19 | enter PostDominance | PostDominance.cs:3:7:3:19 | enter PostDominance | -| PostDominance.cs:5:10:5:11 | enter M1 | PostDominance.cs:5:10:5:11 | enter M1 | -| PostDominance.cs:10:10:10:11 | enter M2 | PostDominance.cs:10:10:10:11 | enter M2 | -| PostDominance.cs:10:10:10:11 | enter M2 | PostDominance.cs:10:10:10:11 | exit M2 (normal) | -| PostDominance.cs:10:10:10:11 | enter M2 | PostDominance.cs:12:13:12:21 | [false] ... is ... | -| PostDominance.cs:10:10:10:11 | enter M2 | PostDominance.cs:12:13:12:21 | [true] ... is ... | -| PostDominance.cs:10:10:10:11 | enter M2 | PostDominance.cs:13:13:13:19 | return ...; | -| PostDominance.cs:10:10:10:11 | enter M2 | PostDominance.cs:14:9:14:29 | ...; | -| PostDominance.cs:10:10:10:11 | exit M2 (normal) | PostDominance.cs:10:10:10:11 | exit M2 (normal) | -| PostDominance.cs:12:13:12:21 | [false] ... is ... | PostDominance.cs:12:13:12:21 | [false] ... is ... | -| PostDominance.cs:12:13:12:21 | [false] ... is ... | PostDominance.cs:14:9:14:29 | ...; | -| PostDominance.cs:12:13:12:21 | [true] ... is ... | PostDominance.cs:12:13:12:21 | [true] ... is ... | -| PostDominance.cs:12:13:12:21 | [true] ... is ... | PostDominance.cs:13:13:13:19 | return ...; | -| PostDominance.cs:13:13:13:19 | return ...; | PostDominance.cs:13:13:13:19 | return ...; | -| PostDominance.cs:14:9:14:29 | ...; | PostDominance.cs:14:9:14:29 | ...; | -| PostDominance.cs:17:10:17:11 | enter M3 | PostDominance.cs:17:10:17:11 | enter M3 | -| PostDominance.cs:17:10:17:11 | enter M3 | PostDominance.cs:17:10:17:11 | exit M3 | -| PostDominance.cs:17:10:17:11 | enter M3 | PostDominance.cs:19:13:19:21 | [false] ... is ... | -| PostDominance.cs:17:10:17:11 | enter M3 | PostDominance.cs:19:13:19:21 | [true] ... is ... | -| PostDominance.cs:17:10:17:11 | enter M3 | PostDominance.cs:20:45:20:53 | nameof(...) | -| PostDominance.cs:17:10:17:11 | enter M3 | PostDominance.cs:21:9:21:29 | ...; | -| PostDominance.cs:17:10:17:11 | exit M3 | PostDominance.cs:17:10:17:11 | exit M3 | -| PostDominance.cs:19:13:19:21 | [false] ... is ... | PostDominance.cs:19:13:19:21 | [false] ... is ... | -| PostDominance.cs:19:13:19:21 | [false] ... is ... | PostDominance.cs:21:9:21:29 | ...; | -| PostDominance.cs:19:13:19:21 | [true] ... is ... | PostDominance.cs:19:13:19:21 | [true] ... is ... | -| PostDominance.cs:19:13:19:21 | [true] ... is ... | PostDominance.cs:20:45:20:53 | nameof(...) | -| PostDominance.cs:20:45:20:53 | nameof(...) | PostDominance.cs:20:45:20:53 | nameof(...) | -| PostDominance.cs:21:9:21:29 | ...; | PostDominance.cs:21:9:21:29 | ...; | -| Qualifiers.cs:1:7:1:16 | enter Qualifiers | Qualifiers.cs:1:7:1:16 | enter Qualifiers | -| Qualifiers.cs:7:16:7:21 | enter Method | Qualifiers.cs:7:16:7:21 | enter Method | -| Qualifiers.cs:8:23:8:34 | enter StaticMethod | Qualifiers.cs:8:23:8:34 | enter StaticMethod | -| Qualifiers.cs:10:10:10:10 | enter M | Qualifiers.cs:10:10:10:10 | enter M | -| Switch.cs:3:7:3:12 | enter Switch | Switch.cs:3:7:3:12 | enter Switch | -| Switch.cs:5:10:5:11 | enter M1 | Switch.cs:5:10:5:11 | enter M1 | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:10:10:10:11 | enter M2 | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:10:10:10:11 | exit M2 | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:10:10:10:11 | exit M2 (abnormal) | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:10:10:10:11 | exit M2 (normal) | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:15:17:15:23 | return ...; | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:16:13:16:19 | case ...: | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:17:23:17:37 | object creation of type Exception | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:18:13:18:22 | case ...: | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:19:17:19:29 | goto default; | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:20:13:20:23 | case ...: | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:21:17:22:27 | if (...) ... | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:22:21:22:27 | return ...; | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:23:27:23:27 | 0 | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:24:13:24:56 | case ...: | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:24:32:24:32 | access to local variable s | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:24:32:24:55 | [false] ... && ... | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:24:32:24:55 | [true] ... && ... | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:24:48:24:48 | access to local variable s | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:25:17:25:37 | ...; | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:27:13:27:39 | case ...: | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:27:32:27:38 | call to method Throw | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:30:13:30:20 | default: | -| Switch.cs:10:10:10:11 | exit M2 | Switch.cs:10:10:10:11 | exit M2 | -| Switch.cs:10:10:10:11 | exit M2 (abnormal) | Switch.cs:10:10:10:11 | exit M2 (abnormal) | -| Switch.cs:10:10:10:11 | exit M2 (normal) | Switch.cs:10:10:10:11 | exit M2 (normal) | -| Switch.cs:15:17:15:23 | return ...; | Switch.cs:15:17:15:23 | return ...; | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:10:10:10:11 | exit M2 (abnormal) | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:16:13:16:19 | case ...: | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:17:23:17:37 | object creation of type Exception | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:18:13:18:22 | case ...: | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:19:17:19:29 | goto default; | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:20:13:20:23 | case ...: | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:21:17:22:27 | if (...) ... | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:22:21:22:27 | return ...; | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:23:27:23:27 | 0 | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:24:13:24:56 | case ...: | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:24:32:24:32 | access to local variable s | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:24:32:24:55 | [false] ... && ... | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:24:32:24:55 | [true] ... && ... | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:24:48:24:48 | access to local variable s | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:25:17:25:37 | ...; | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:27:13:27:39 | case ...: | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:27:32:27:38 | call to method Throw | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:30:13:30:20 | default: | -| Switch.cs:17:23:17:37 | object creation of type Exception | Switch.cs:17:23:17:37 | object creation of type Exception | -| Switch.cs:18:13:18:22 | case ...: | Switch.cs:18:13:18:22 | case ...: | -| Switch.cs:18:13:18:22 | case ...: | Switch.cs:19:17:19:29 | goto default; | -| Switch.cs:18:13:18:22 | case ...: | Switch.cs:20:13:20:23 | case ...: | -| Switch.cs:18:13:18:22 | case ...: | Switch.cs:21:17:22:27 | if (...) ... | -| Switch.cs:18:13:18:22 | case ...: | Switch.cs:22:21:22:27 | return ...; | -| Switch.cs:18:13:18:22 | case ...: | Switch.cs:23:27:23:27 | 0 | -| Switch.cs:18:13:18:22 | case ...: | Switch.cs:24:13:24:56 | case ...: | -| Switch.cs:18:13:18:22 | case ...: | Switch.cs:24:32:24:32 | access to local variable s | -| Switch.cs:18:13:18:22 | case ...: | Switch.cs:24:32:24:55 | [false] ... && ... | -| Switch.cs:18:13:18:22 | case ...: | Switch.cs:24:32:24:55 | [true] ... && ... | -| Switch.cs:18:13:18:22 | case ...: | Switch.cs:24:48:24:48 | access to local variable s | -| Switch.cs:18:13:18:22 | case ...: | Switch.cs:25:17:25:37 | ...; | -| Switch.cs:18:13:18:22 | case ...: | Switch.cs:27:13:27:39 | case ...: | -| Switch.cs:18:13:18:22 | case ...: | Switch.cs:27:32:27:38 | call to method Throw | -| Switch.cs:18:13:18:22 | case ...: | Switch.cs:30:13:30:20 | default: | -| Switch.cs:19:17:19:29 | goto default; | Switch.cs:19:17:19:29 | goto default; | -| Switch.cs:20:13:20:23 | case ...: | Switch.cs:20:13:20:23 | case ...: | -| Switch.cs:20:13:20:23 | case ...: | Switch.cs:21:17:22:27 | if (...) ... | -| Switch.cs:20:13:20:23 | case ...: | Switch.cs:22:21:22:27 | return ...; | -| Switch.cs:20:13:20:23 | case ...: | Switch.cs:23:27:23:27 | 0 | -| Switch.cs:20:13:20:23 | case ...: | Switch.cs:24:13:24:56 | case ...: | -| Switch.cs:20:13:20:23 | case ...: | Switch.cs:24:32:24:32 | access to local variable s | -| Switch.cs:20:13:20:23 | case ...: | Switch.cs:24:32:24:55 | [false] ... && ... | -| Switch.cs:20:13:20:23 | case ...: | Switch.cs:24:32:24:55 | [true] ... && ... | -| Switch.cs:20:13:20:23 | case ...: | Switch.cs:24:48:24:48 | access to local variable s | -| Switch.cs:20:13:20:23 | case ...: | Switch.cs:25:17:25:37 | ...; | -| Switch.cs:20:13:20:23 | case ...: | Switch.cs:27:13:27:39 | case ...: | -| Switch.cs:20:13:20:23 | case ...: | Switch.cs:27:32:27:38 | call to method Throw | -| Switch.cs:21:17:22:27 | if (...) ... | Switch.cs:21:17:22:27 | if (...) ... | -| Switch.cs:21:17:22:27 | if (...) ... | Switch.cs:22:21:22:27 | return ...; | -| Switch.cs:21:17:22:27 | if (...) ... | Switch.cs:23:27:23:27 | 0 | -| Switch.cs:22:21:22:27 | return ...; | Switch.cs:22:21:22:27 | return ...; | -| Switch.cs:23:27:23:27 | 0 | Switch.cs:23:27:23:27 | 0 | -| Switch.cs:24:13:24:56 | case ...: | Switch.cs:24:13:24:56 | case ...: | -| Switch.cs:24:13:24:56 | case ...: | Switch.cs:24:32:24:32 | access to local variable s | -| Switch.cs:24:13:24:56 | case ...: | Switch.cs:24:32:24:55 | [false] ... && ... | -| Switch.cs:24:13:24:56 | case ...: | Switch.cs:24:32:24:55 | [true] ... && ... | -| Switch.cs:24:13:24:56 | case ...: | Switch.cs:24:48:24:48 | access to local variable s | -| Switch.cs:24:13:24:56 | case ...: | Switch.cs:25:17:25:37 | ...; | -| Switch.cs:24:13:24:56 | case ...: | Switch.cs:27:13:27:39 | case ...: | -| Switch.cs:24:13:24:56 | case ...: | Switch.cs:27:32:27:38 | call to method Throw | -| Switch.cs:24:32:24:32 | access to local variable s | Switch.cs:24:32:24:32 | access to local variable s | -| Switch.cs:24:32:24:32 | access to local variable s | Switch.cs:24:32:24:55 | [false] ... && ... | -| Switch.cs:24:32:24:32 | access to local variable s | Switch.cs:24:32:24:55 | [true] ... && ... | -| Switch.cs:24:32:24:32 | access to local variable s | Switch.cs:24:48:24:48 | access to local variable s | -| Switch.cs:24:32:24:32 | access to local variable s | Switch.cs:25:17:25:37 | ...; | -| Switch.cs:24:32:24:55 | [false] ... && ... | Switch.cs:24:32:24:55 | [false] ... && ... | -| Switch.cs:24:32:24:55 | [true] ... && ... | Switch.cs:24:32:24:55 | [true] ... && ... | -| Switch.cs:24:32:24:55 | [true] ... && ... | Switch.cs:25:17:25:37 | ...; | -| Switch.cs:24:48:24:48 | access to local variable s | Switch.cs:24:32:24:55 | [true] ... && ... | -| Switch.cs:24:48:24:48 | access to local variable s | Switch.cs:24:48:24:48 | access to local variable s | -| Switch.cs:24:48:24:48 | access to local variable s | Switch.cs:25:17:25:37 | ...; | -| Switch.cs:25:17:25:37 | ...; | Switch.cs:25:17:25:37 | ...; | +| Patterns.cs:27:13:27:24 | case ...: | Patterns.cs:27:18:27:23 | After Int32 i3 [match] | +| Patterns.cs:27:13:27:24 | case ...: | Patterns.cs:27:18:27:23 | After Int32 i3 [no-match] | +| Patterns.cs:27:13:27:24 | case ...: | Patterns.cs:30:18:30:26 | After String s2 [match] | +| Patterns.cs:27:13:27:24 | case ...: | Patterns.cs:30:18:30:26 | After String s2 [no-match] | +| Patterns.cs:27:13:27:24 | case ...: | Patterns.cs:33:18:33:23 | After Object v2 [match] | +| Patterns.cs:27:13:27:24 | case ...: | Patterns.cs:33:18:33:23 | After Object v2 [no-match] | +| Patterns.cs:27:18:27:23 | After Int32 i3 [match] | Patterns.cs:27:18:27:23 | After Int32 i3 [match] | +| Patterns.cs:27:18:27:23 | After Int32 i3 [no-match] | Patterns.cs:27:18:27:23 | After Int32 i3 [no-match] | +| Patterns.cs:27:18:27:23 | After Int32 i3 [no-match] | Patterns.cs:30:18:30:26 | After String s2 [match] | +| Patterns.cs:27:18:27:23 | After Int32 i3 [no-match] | Patterns.cs:30:18:30:26 | After String s2 [no-match] | +| Patterns.cs:27:18:27:23 | After Int32 i3 [no-match] | Patterns.cs:33:18:33:23 | After Object v2 [match] | +| Patterns.cs:27:18:27:23 | After Int32 i3 [no-match] | Patterns.cs:33:18:33:23 | After Object v2 [no-match] | +| Patterns.cs:30:18:30:26 | After String s2 [match] | Patterns.cs:30:18:30:26 | After String s2 [match] | +| Patterns.cs:30:18:30:26 | After String s2 [no-match] | Patterns.cs:30:18:30:26 | After String s2 [no-match] | +| Patterns.cs:30:18:30:26 | After String s2 [no-match] | Patterns.cs:33:18:33:23 | After Object v2 [match] | +| Patterns.cs:30:18:30:26 | After String s2 [no-match] | Patterns.cs:33:18:33:23 | After Object v2 [no-match] | +| Patterns.cs:33:18:33:23 | After Object v2 [match] | Patterns.cs:33:18:33:23 | After Object v2 [match] | +| Patterns.cs:33:18:33:23 | After Object v2 [no-match] | Patterns.cs:33:18:33:23 | After Object v2 [no-match] | +| Patterns.cs:47:24:47:25 | Entry | Patterns.cs:47:24:47:25 | Entry | +| Patterns.cs:47:24:47:25 | Entry | Patterns.cs:48:9:48:20 | After ... is ... | +| Patterns.cs:47:24:47:25 | Entry | Patterns.cs:48:9:48:20 | [MatchTrue] ... is ... | +| Patterns.cs:48:9:48:20 | After ... is ... | Patterns.cs:48:9:48:20 | After ... is ... | +| Patterns.cs:48:9:48:20 | [MatchTrue] ... is ... | Patterns.cs:48:9:48:20 | [MatchTrue] ... is ... | +| Patterns.cs:50:24:50:25 | Entry | Patterns.cs:50:24:50:25 | Entry | +| Patterns.cs:50:24:50:25 | Entry | Patterns.cs:51:9:51:21 | After ... is ... [false] | +| Patterns.cs:50:24:50:25 | Entry | Patterns.cs:51:9:51:21 | [MatchTrue] ... is ... | +| Patterns.cs:50:24:50:25 | Entry | Patterns.cs:51:9:51:39 | After ... ? ... : ... | +| Patterns.cs:50:24:50:25 | Entry | Patterns.cs:51:25:51:30 | After ... is ... | +| Patterns.cs:50:24:50:25 | Entry | Patterns.cs:51:25:51:30 | [MatchTrue] ... is ... | +| Patterns.cs:50:24:50:25 | Entry | Patterns.cs:51:34:51:39 | After ... is ... | +| Patterns.cs:50:24:50:25 | Entry | Patterns.cs:51:34:51:39 | [MatchTrue] ... is ... | +| Patterns.cs:51:9:51:21 | After ... is ... [false] | Patterns.cs:51:9:51:21 | After ... is ... [false] | +| Patterns.cs:51:9:51:21 | After ... is ... [false] | Patterns.cs:51:34:51:39 | After ... is ... | +| Patterns.cs:51:9:51:21 | After ... is ... [false] | Patterns.cs:51:34:51:39 | [MatchTrue] ... is ... | +| Patterns.cs:51:9:51:21 | [MatchTrue] ... is ... | Patterns.cs:51:9:51:21 | [MatchTrue] ... is ... | +| Patterns.cs:51:9:51:21 | [MatchTrue] ... is ... | Patterns.cs:51:25:51:30 | After ... is ... | +| Patterns.cs:51:9:51:21 | [MatchTrue] ... is ... | Patterns.cs:51:25:51:30 | [MatchTrue] ... is ... | +| Patterns.cs:51:9:51:39 | After ... ? ... : ... | Patterns.cs:51:9:51:39 | After ... ? ... : ... | +| Patterns.cs:51:25:51:30 | After ... is ... | Patterns.cs:51:25:51:30 | After ... is ... | +| Patterns.cs:51:25:51:30 | [MatchTrue] ... is ... | Patterns.cs:51:25:51:30 | [MatchTrue] ... is ... | +| Patterns.cs:51:34:51:39 | After ... is ... | Patterns.cs:51:34:51:39 | After ... is ... | +| Patterns.cs:51:34:51:39 | [MatchTrue] ... is ... | Patterns.cs:51:34:51:39 | [MatchTrue] ... is ... | +| Patterns.cs:53:24:53:25 | Entry | Patterns.cs:53:24:53:25 | Entry | +| Patterns.cs:53:24:53:25 | Entry | Patterns.cs:54:9:54:37 | After ... is ... | +| Patterns.cs:53:24:53:25 | Entry | Patterns.cs:54:9:54:37 | [MatchTrue] ... is ... | +| Patterns.cs:54:9:54:37 | After ... is ... | Patterns.cs:54:9:54:37 | After ... is ... | +| Patterns.cs:54:9:54:37 | [MatchTrue] ... is ... | Patterns.cs:54:9:54:37 | [MatchTrue] ... is ... | +| Patterns.cs:56:26:56:27 | Entry | Patterns.cs:56:26:56:27 | Entry | +| Patterns.cs:56:26:56:27 | Entry | Patterns.cs:58:16:62:9 | After ... switch { ... } | +| Patterns.cs:56:26:56:27 | Entry | Patterns.cs:60:13:60:17 | After not ... [match] | +| Patterns.cs:56:26:56:27 | Entry | Patterns.cs:60:13:60:17 | After not ... [no-match] | +| Patterns.cs:58:16:62:9 | After ... switch { ... } | Patterns.cs:58:16:62:9 | After ... switch { ... } | +| Patterns.cs:60:13:60:17 | After not ... [match] | Patterns.cs:60:13:60:17 | After not ... [match] | +| Patterns.cs:60:13:60:17 | After not ... [no-match] | Patterns.cs:60:13:60:17 | After not ... [no-match] | +| Patterns.cs:65:26:65:27 | Entry | Patterns.cs:65:26:65:27 | Entry | +| Patterns.cs:65:26:65:27 | Entry | Patterns.cs:67:16:71:9 | After ... switch { ... } | +| Patterns.cs:65:26:65:27 | Entry | Patterns.cs:69:13:69:17 | After not ... [match] | +| Patterns.cs:65:26:65:27 | Entry | Patterns.cs:69:13:69:17 | After not ... [no-match] | +| Patterns.cs:65:26:65:27 | Entry | Patterns.cs:70:13:70:13 | After 2 [match] | +| Patterns.cs:65:26:65:27 | Entry | Patterns.cs:70:13:70:13 | After 2 [no-match] | +| Patterns.cs:67:16:71:9 | After ... switch { ... } | Patterns.cs:67:16:71:9 | After ... switch { ... } | +| Patterns.cs:69:13:69:17 | After not ... [match] | Patterns.cs:69:13:69:17 | After not ... [match] | +| Patterns.cs:69:13:69:17 | After not ... [no-match] | Patterns.cs:69:13:69:17 | After not ... [no-match] | +| Patterns.cs:69:13:69:17 | After not ... [no-match] | Patterns.cs:70:13:70:13 | After 2 [match] | +| Patterns.cs:69:13:69:17 | After not ... [no-match] | Patterns.cs:70:13:70:13 | After 2 [no-match] | +| Patterns.cs:70:13:70:13 | After 2 [match] | Patterns.cs:70:13:70:13 | After 2 [match] | +| Patterns.cs:70:13:70:13 | After 2 [no-match] | Patterns.cs:70:13:70:13 | After 2 [no-match] | +| Patterns.cs:74:26:74:27 | Entry | Patterns.cs:74:26:74:27 | Entry | +| Patterns.cs:74:26:74:27 | Entry | Patterns.cs:76:16:82:9 | After ... switch { ... } | +| Patterns.cs:74:26:74:27 | Entry | Patterns.cs:78:13:78:15 | After > ... [match] | +| Patterns.cs:74:26:74:27 | Entry | Patterns.cs:78:13:78:15 | After > ... [no-match] | +| Patterns.cs:74:26:74:27 | Entry | Patterns.cs:79:13:79:15 | After < ... [match] | +| Patterns.cs:74:26:74:27 | Entry | Patterns.cs:79:13:79:15 | After < ... [no-match] | +| Patterns.cs:74:26:74:27 | Entry | Patterns.cs:80:13:80:13 | After 1 [match] | +| Patterns.cs:74:26:74:27 | Entry | Patterns.cs:80:13:80:13 | After 1 [no-match] | +| Patterns.cs:76:16:82:9 | After ... switch { ... } | Patterns.cs:76:16:82:9 | After ... switch { ... } | +| Patterns.cs:78:13:78:15 | After > ... [match] | Patterns.cs:78:13:78:15 | After > ... [match] | +| Patterns.cs:78:13:78:15 | After > ... [no-match] | Patterns.cs:78:13:78:15 | After > ... [no-match] | +| Patterns.cs:78:13:78:15 | After > ... [no-match] | Patterns.cs:79:13:79:15 | After < ... [match] | +| Patterns.cs:78:13:78:15 | After > ... [no-match] | Patterns.cs:79:13:79:15 | After < ... [no-match] | +| Patterns.cs:78:13:78:15 | After > ... [no-match] | Patterns.cs:80:13:80:13 | After 1 [match] | +| Patterns.cs:78:13:78:15 | After > ... [no-match] | Patterns.cs:80:13:80:13 | After 1 [no-match] | +| Patterns.cs:79:13:79:15 | After < ... [match] | Patterns.cs:79:13:79:15 | After < ... [match] | +| Patterns.cs:79:13:79:15 | After < ... [no-match] | Patterns.cs:79:13:79:15 | After < ... [no-match] | +| Patterns.cs:79:13:79:15 | After < ... [no-match] | Patterns.cs:80:13:80:13 | After 1 [match] | +| Patterns.cs:79:13:79:15 | After < ... [no-match] | Patterns.cs:80:13:80:13 | After 1 [no-match] | +| Patterns.cs:80:13:80:13 | After 1 [match] | Patterns.cs:80:13:80:13 | After 1 [match] | +| Patterns.cs:80:13:80:13 | After 1 [no-match] | Patterns.cs:80:13:80:13 | After 1 [no-match] | +| Patterns.cs:85:26:85:27 | Entry | Patterns.cs:85:26:85:27 | Entry | +| Patterns.cs:85:26:85:27 | Entry | Patterns.cs:85:39:85:53 | After ... is ... [false] | +| Patterns.cs:85:26:85:27 | Entry | Patterns.cs:85:39:85:53 | [MatchTrue] ... is ... | +| Patterns.cs:85:26:85:27 | Entry | Patterns.cs:85:39:85:69 | After ... ? ... : ... | +| Patterns.cs:85:39:85:53 | After ... is ... [false] | Patterns.cs:85:39:85:53 | After ... is ... [false] | +| Patterns.cs:85:39:85:53 | [MatchTrue] ... is ... | Patterns.cs:85:39:85:53 | [MatchTrue] ... is ... | +| Patterns.cs:85:39:85:69 | After ... ? ... : ... | Patterns.cs:85:39:85:69 | After ... ? ... : ... | +| Patterns.cs:87:26:87:27 | Entry | Patterns.cs:87:26:87:27 | Entry | +| Patterns.cs:87:26:87:27 | Entry | Patterns.cs:87:39:87:54 | After ... is ... [false] | +| Patterns.cs:87:26:87:27 | Entry | Patterns.cs:87:39:87:54 | [MatchTrue] ... is ... | +| Patterns.cs:87:26:87:27 | Entry | Patterns.cs:87:39:87:70 | After ... ? ... : ... | +| Patterns.cs:87:39:87:54 | After ... is ... [false] | Patterns.cs:87:39:87:54 | After ... is ... [false] | +| Patterns.cs:87:39:87:54 | [MatchTrue] ... is ... | Patterns.cs:87:39:87:54 | [MatchTrue] ... is ... | +| Patterns.cs:87:39:87:70 | After ... ? ... : ... | Patterns.cs:87:39:87:70 | After ... ? ... : ... | +| Patterns.cs:93:17:93:19 | Entry | Patterns.cs:93:17:93:19 | Entry | +| Patterns.cs:93:17:93:19 | Entry | Patterns.cs:95:9:98:9 | After if (...) ... | +| Patterns.cs:93:17:93:19 | Entry | Patterns.cs:95:13:95:40 | After ... is ... [false] | +| Patterns.cs:93:17:93:19 | Entry | Patterns.cs:95:13:95:40 | [MatchTrue] ... is ... | +| Patterns.cs:95:9:98:9 | After if (...) ... | Patterns.cs:95:9:98:9 | After if (...) ... | +| Patterns.cs:95:13:95:40 | After ... is ... [false] | Patterns.cs:95:13:95:40 | After ... is ... [false] | +| Patterns.cs:95:13:95:40 | [MatchTrue] ... is ... | Patterns.cs:95:13:95:40 | [MatchTrue] ... is ... | +| PostDominance.cs:3:7:3:19 | Entry | PostDominance.cs:3:7:3:19 | Entry | +| PostDominance.cs:5:10:5:11 | Entry | PostDominance.cs:5:10:5:11 | Entry | +| PostDominance.cs:10:10:10:11 | Entry | PostDominance.cs:10:10:10:11 | Entry | +| PostDominance.cs:10:10:10:11 | Entry | PostDominance.cs:10:10:10:11 | Normal Exit | +| PostDominance.cs:10:10:10:11 | Entry | PostDominance.cs:12:13:12:21 | After ... is ... [false] | +| PostDominance.cs:10:10:10:11 | Entry | PostDominance.cs:12:13:12:21 | [MatchTrue] ... is ... | +| PostDominance.cs:10:10:10:11 | Normal Exit | PostDominance.cs:10:10:10:11 | Normal Exit | +| PostDominance.cs:12:13:12:21 | After ... is ... [false] | PostDominance.cs:12:13:12:21 | After ... is ... [false] | +| PostDominance.cs:12:13:12:21 | [MatchTrue] ... is ... | PostDominance.cs:12:13:12:21 | [MatchTrue] ... is ... | +| PostDominance.cs:17:10:17:11 | Entry | PostDominance.cs:17:10:17:11 | Entry | +| PostDominance.cs:17:10:17:11 | Entry | PostDominance.cs:17:10:17:11 | Exit | +| PostDominance.cs:17:10:17:11 | Entry | PostDominance.cs:19:13:19:21 | After ... is ... [false] | +| PostDominance.cs:17:10:17:11 | Entry | PostDominance.cs:19:13:19:21 | [MatchTrue] ... is ... | +| PostDominance.cs:17:10:17:11 | Exit | PostDominance.cs:17:10:17:11 | Exit | +| PostDominance.cs:19:13:19:21 | After ... is ... [false] | PostDominance.cs:19:13:19:21 | After ... is ... [false] | +| PostDominance.cs:19:13:19:21 | [MatchTrue] ... is ... | PostDominance.cs:19:13:19:21 | [MatchTrue] ... is ... | +| Qualifiers.cs:1:7:1:16 | Entry | Qualifiers.cs:1:7:1:16 | Entry | +| Qualifiers.cs:7:16:7:21 | Entry | Qualifiers.cs:7:16:7:21 | Entry | +| Qualifiers.cs:8:23:8:34 | Entry | Qualifiers.cs:8:23:8:34 | Entry | +| Qualifiers.cs:10:10:10:10 | Entry | Qualifiers.cs:10:10:10:10 | Entry | +| Switch.cs:3:7:3:12 | Entry | Switch.cs:3:7:3:12 | Entry | +| Switch.cs:5:10:5:11 | Entry | Switch.cs:5:10:5:11 | Entry | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:10:10:10:11 | Entry | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:10:10:10:11 | Exceptional Exit | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:10:10:10:11 | Exit | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:10:10:10:11 | Normal Exit | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:14:18:14:20 | After "a" [match] | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:14:18:14:20 | After "a" [no-match] | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:16:13:16:19 | After case ...: [match] | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:16:18:16:18 | After 0 [match] | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:16:18:16:18 | After 0 [no-match] | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:18:18:18:21 | After null [match] | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:18:18:18:21 | After null [no-match] | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:20:18:20:22 | After Int32 i [match] | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:20:18:20:22 | After Int32 i [no-match] | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:21:21:21:29 | After ... == ... [false] | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:21:21:21:29 | After ... == ... [true] | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:24:18:24:25 | After String s [match] | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:24:18:24:25 | After String s [no-match] | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:24:32:24:43 | After ... > ... [false] | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:24:32:24:43 | After ... > ... [true] | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:24:32:24:55 | After ... && ... [false] | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:24:48:24:55 | After ... != ... [false] | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:24:48:24:55 | After ... != ... [true] | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:27:13:27:39 | case ...: | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:27:18:27:25 | After Double d [match] | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:27:18:27:25 | After Double d [no-match] | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:30:13:30:20 | After default: [match] | +| Switch.cs:10:10:10:11 | Exceptional Exit | Switch.cs:10:10:10:11 | Exceptional Exit | +| Switch.cs:10:10:10:11 | Exit | Switch.cs:10:10:10:11 | Exit | +| Switch.cs:10:10:10:11 | Normal Exit | Switch.cs:10:10:10:11 | Normal Exit | +| Switch.cs:14:18:14:20 | After "a" [match] | Switch.cs:14:18:14:20 | After "a" [match] | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:10:10:10:11 | Exceptional Exit | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:14:18:14:20 | After "a" [no-match] | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:16:13:16:19 | After case ...: [match] | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:16:18:16:18 | After 0 [match] | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:16:18:16:18 | After 0 [no-match] | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:18:18:18:21 | After null [match] | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:18:18:18:21 | After null [no-match] | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:20:18:20:22 | After Int32 i [match] | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:20:18:20:22 | After Int32 i [no-match] | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:21:21:21:29 | After ... == ... [false] | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:21:21:21:29 | After ... == ... [true] | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:24:18:24:25 | After String s [match] | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:24:18:24:25 | After String s [no-match] | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:24:32:24:43 | After ... > ... [false] | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:24:32:24:43 | After ... > ... [true] | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:24:32:24:55 | After ... && ... [false] | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:24:48:24:55 | After ... != ... [false] | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:24:48:24:55 | After ... != ... [true] | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:27:13:27:39 | case ...: | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:27:18:27:25 | After Double d [match] | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:27:18:27:25 | After Double d [no-match] | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:30:13:30:20 | After default: [match] | +| Switch.cs:16:13:16:19 | After case ...: [match] | Switch.cs:16:13:16:19 | After case ...: [match] | +| Switch.cs:16:18:16:18 | After 0 [match] | Switch.cs:16:18:16:18 | After 0 [match] | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:16:18:16:18 | After 0 [no-match] | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:18:18:18:21 | After null [match] | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:18:18:18:21 | After null [no-match] | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:20:18:20:22 | After Int32 i [match] | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:20:18:20:22 | After Int32 i [no-match] | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:21:21:21:29 | After ... == ... [false] | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:21:21:21:29 | After ... == ... [true] | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:24:18:24:25 | After String s [match] | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:24:18:24:25 | After String s [no-match] | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:24:32:24:43 | After ... > ... [false] | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:24:32:24:43 | After ... > ... [true] | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:24:32:24:55 | After ... && ... [false] | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:24:48:24:55 | After ... != ... [false] | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:24:48:24:55 | After ... != ... [true] | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:27:13:27:39 | case ...: | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:27:18:27:25 | After Double d [match] | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:27:18:27:25 | After Double d [no-match] | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:30:13:30:20 | After default: [match] | +| Switch.cs:18:18:18:21 | After null [match] | Switch.cs:18:18:18:21 | After null [match] | +| Switch.cs:18:18:18:21 | After null [no-match] | Switch.cs:18:18:18:21 | After null [no-match] | +| Switch.cs:18:18:18:21 | After null [no-match] | Switch.cs:20:18:20:22 | After Int32 i [match] | +| Switch.cs:18:18:18:21 | After null [no-match] | Switch.cs:20:18:20:22 | After Int32 i [no-match] | +| Switch.cs:18:18:18:21 | After null [no-match] | Switch.cs:21:21:21:29 | After ... == ... [false] | +| Switch.cs:18:18:18:21 | After null [no-match] | Switch.cs:21:21:21:29 | After ... == ... [true] | +| Switch.cs:18:18:18:21 | After null [no-match] | Switch.cs:24:18:24:25 | After String s [match] | +| Switch.cs:18:18:18:21 | After null [no-match] | Switch.cs:24:18:24:25 | After String s [no-match] | +| Switch.cs:18:18:18:21 | After null [no-match] | Switch.cs:24:32:24:43 | After ... > ... [false] | +| Switch.cs:18:18:18:21 | After null [no-match] | Switch.cs:24:32:24:43 | After ... > ... [true] | +| Switch.cs:18:18:18:21 | After null [no-match] | Switch.cs:24:32:24:55 | After ... && ... [false] | +| Switch.cs:18:18:18:21 | After null [no-match] | Switch.cs:24:48:24:55 | After ... != ... [false] | +| Switch.cs:18:18:18:21 | After null [no-match] | Switch.cs:24:48:24:55 | After ... != ... [true] | +| Switch.cs:18:18:18:21 | After null [no-match] | Switch.cs:27:13:27:39 | case ...: | +| Switch.cs:18:18:18:21 | After null [no-match] | Switch.cs:27:18:27:25 | After Double d [match] | +| Switch.cs:18:18:18:21 | After null [no-match] | Switch.cs:27:18:27:25 | After Double d [no-match] | +| Switch.cs:20:18:20:22 | After Int32 i [match] | Switch.cs:20:18:20:22 | After Int32 i [match] | +| Switch.cs:20:18:20:22 | After Int32 i [match] | Switch.cs:21:21:21:29 | After ... == ... [false] | +| Switch.cs:20:18:20:22 | After Int32 i [match] | Switch.cs:21:21:21:29 | After ... == ... [true] | +| Switch.cs:20:18:20:22 | After Int32 i [no-match] | Switch.cs:20:18:20:22 | After Int32 i [no-match] | +| Switch.cs:20:18:20:22 | After Int32 i [no-match] | Switch.cs:24:18:24:25 | After String s [match] | +| Switch.cs:20:18:20:22 | After Int32 i [no-match] | Switch.cs:24:18:24:25 | After String s [no-match] | +| Switch.cs:20:18:20:22 | After Int32 i [no-match] | Switch.cs:24:32:24:43 | After ... > ... [false] | +| Switch.cs:20:18:20:22 | After Int32 i [no-match] | Switch.cs:24:32:24:43 | After ... > ... [true] | +| Switch.cs:20:18:20:22 | After Int32 i [no-match] | Switch.cs:24:32:24:55 | After ... && ... [false] | +| Switch.cs:20:18:20:22 | After Int32 i [no-match] | Switch.cs:24:48:24:55 | After ... != ... [false] | +| Switch.cs:20:18:20:22 | After Int32 i [no-match] | Switch.cs:24:48:24:55 | After ... != ... [true] | +| Switch.cs:20:18:20:22 | After Int32 i [no-match] | Switch.cs:27:13:27:39 | case ...: | +| Switch.cs:20:18:20:22 | After Int32 i [no-match] | Switch.cs:27:18:27:25 | After Double d [match] | +| Switch.cs:20:18:20:22 | After Int32 i [no-match] | Switch.cs:27:18:27:25 | After Double d [no-match] | +| Switch.cs:21:21:21:29 | After ... == ... [false] | Switch.cs:21:21:21:29 | After ... == ... [false] | +| Switch.cs:21:21:21:29 | After ... == ... [true] | Switch.cs:21:21:21:29 | After ... == ... [true] | +| Switch.cs:24:18:24:25 | After String s [match] | Switch.cs:24:18:24:25 | After String s [match] | +| Switch.cs:24:18:24:25 | After String s [match] | Switch.cs:24:32:24:43 | After ... > ... [false] | +| Switch.cs:24:18:24:25 | After String s [match] | Switch.cs:24:32:24:43 | After ... > ... [true] | +| Switch.cs:24:18:24:25 | After String s [match] | Switch.cs:24:32:24:55 | After ... && ... [false] | +| Switch.cs:24:18:24:25 | After String s [match] | Switch.cs:24:48:24:55 | After ... != ... [false] | +| Switch.cs:24:18:24:25 | After String s [match] | Switch.cs:24:48:24:55 | After ... != ... [true] | +| Switch.cs:24:18:24:25 | After String s [no-match] | Switch.cs:24:18:24:25 | After String s [no-match] | +| Switch.cs:24:32:24:43 | After ... > ... [false] | Switch.cs:24:32:24:43 | After ... > ... [false] | +| Switch.cs:24:32:24:43 | After ... > ... [true] | Switch.cs:24:32:24:43 | After ... > ... [true] | +| Switch.cs:24:32:24:43 | After ... > ... [true] | Switch.cs:24:48:24:55 | After ... != ... [false] | +| Switch.cs:24:32:24:43 | After ... > ... [true] | Switch.cs:24:48:24:55 | After ... != ... [true] | +| Switch.cs:24:32:24:55 | After ... && ... [false] | Switch.cs:24:32:24:55 | After ... && ... [false] | +| Switch.cs:24:48:24:55 | After ... != ... [false] | Switch.cs:24:48:24:55 | After ... != ... [false] | +| Switch.cs:24:48:24:55 | After ... != ... [true] | Switch.cs:24:48:24:55 | After ... != ... [true] | | Switch.cs:27:13:27:39 | case ...: | Switch.cs:27:13:27:39 | case ...: | -| Switch.cs:27:13:27:39 | case ...: | Switch.cs:27:32:27:38 | call to method Throw | -| Switch.cs:27:32:27:38 | call to method Throw | Switch.cs:27:32:27:38 | call to method Throw | -| Switch.cs:30:13:30:20 | default: | Switch.cs:30:13:30:20 | default: | -| Switch.cs:35:10:35:11 | enter M3 | Switch.cs:35:10:35:11 | enter M3 | -| Switch.cs:44:10:44:11 | enter M4 | Switch.cs:44:10:44:11 | enter M4 | -| Switch.cs:44:10:44:11 | enter M4 | Switch.cs:44:10:44:11 | exit M4 (normal) | -| Switch.cs:44:10:44:11 | enter M4 | Switch.cs:49:17:49:22 | break; | -| Switch.cs:44:10:44:11 | enter M4 | Switch.cs:50:13:50:39 | case ...: | -| Switch.cs:44:10:44:11 | enter M4 | Switch.cs:50:30:50:30 | access to parameter o | -| Switch.cs:44:10:44:11 | enter M4 | Switch.cs:51:17:51:22 | break; | -| Switch.cs:44:10:44:11 | exit M4 (normal) | Switch.cs:44:10:44:11 | exit M4 (normal) | -| Switch.cs:49:17:49:22 | break; | Switch.cs:49:17:49:22 | break; | -| Switch.cs:50:13:50:39 | case ...: | Switch.cs:50:13:50:39 | case ...: | -| Switch.cs:50:13:50:39 | case ...: | Switch.cs:50:30:50:30 | access to parameter o | -| Switch.cs:50:13:50:39 | case ...: | Switch.cs:51:17:51:22 | break; | -| Switch.cs:50:30:50:30 | access to parameter o | Switch.cs:50:30:50:30 | access to parameter o | -| Switch.cs:50:30:50:30 | access to parameter o | Switch.cs:51:17:51:22 | break; | -| Switch.cs:51:17:51:22 | break; | Switch.cs:51:17:51:22 | break; | -| Switch.cs:55:10:55:11 | enter M5 | Switch.cs:55:10:55:11 | enter M5 | -| Switch.cs:55:10:55:11 | enter M5 | Switch.cs:61:13:61:19 | case ...: | -| Switch.cs:55:10:55:11 | enter M5 | Switch.cs:62:17:62:22 | break; | -| Switch.cs:61:13:61:19 | case ...: | Switch.cs:61:13:61:19 | case ...: | -| Switch.cs:61:13:61:19 | case ...: | Switch.cs:62:17:62:22 | break; | -| Switch.cs:62:17:62:22 | break; | Switch.cs:62:17:62:22 | break; | -| Switch.cs:66:10:66:11 | enter M6 | Switch.cs:66:10:66:11 | enter M6 | -| Switch.cs:66:10:66:11 | enter M6 | Switch.cs:66:10:66:11 | exit M6 (normal) | -| Switch.cs:66:10:66:11 | enter M6 | Switch.cs:72:13:72:20 | case ...: | -| Switch.cs:66:10:66:11 | enter M6 | Switch.cs:73:17:73:22 | break; | -| Switch.cs:66:10:66:11 | exit M6 (normal) | Switch.cs:66:10:66:11 | exit M6 (normal) | -| Switch.cs:72:13:72:20 | case ...: | Switch.cs:66:10:66:11 | exit M6 (normal) | -| Switch.cs:72:13:72:20 | case ...: | Switch.cs:72:13:72:20 | case ...: | -| Switch.cs:72:13:72:20 | case ...: | Switch.cs:73:17:73:22 | break; | -| Switch.cs:73:17:73:22 | break; | Switch.cs:73:17:73:22 | break; | -| Switch.cs:77:10:77:11 | enter M7 | Switch.cs:77:10:77:11 | enter M7 | -| Switch.cs:77:10:77:11 | enter M7 | Switch.cs:77:10:77:11 | exit M7 (normal) | -| Switch.cs:77:10:77:11 | enter M7 | Switch.cs:82:24:82:27 | true | -| Switch.cs:77:10:77:11 | enter M7 | Switch.cs:83:13:83:19 | case ...: | -| Switch.cs:77:10:77:11 | enter M7 | Switch.cs:84:17:85:26 | if (...) ... | -| Switch.cs:77:10:77:11 | enter M7 | Switch.cs:85:21:85:26 | break; | -| Switch.cs:77:10:77:11 | enter M7 | Switch.cs:86:24:86:27 | true | -| Switch.cs:77:10:77:11 | enter M7 | Switch.cs:88:16:88:20 | false | -| Switch.cs:77:10:77:11 | exit M7 (normal) | Switch.cs:77:10:77:11 | exit M7 (normal) | -| Switch.cs:82:24:82:27 | true | Switch.cs:82:24:82:27 | true | -| Switch.cs:83:13:83:19 | case ...: | Switch.cs:83:13:83:19 | case ...: | -| Switch.cs:83:13:83:19 | case ...: | Switch.cs:84:17:85:26 | if (...) ... | -| Switch.cs:83:13:83:19 | case ...: | Switch.cs:85:21:85:26 | break; | -| Switch.cs:83:13:83:19 | case ...: | Switch.cs:86:24:86:27 | true | -| Switch.cs:83:13:83:19 | case ...: | Switch.cs:88:16:88:20 | false | -| Switch.cs:84:17:85:26 | if (...) ... | Switch.cs:84:17:85:26 | if (...) ... | -| Switch.cs:84:17:85:26 | if (...) ... | Switch.cs:85:21:85:26 | break; | -| Switch.cs:84:17:85:26 | if (...) ... | Switch.cs:86:24:86:27 | true | -| Switch.cs:85:21:85:26 | break; | Switch.cs:85:21:85:26 | break; | -| Switch.cs:86:24:86:27 | true | Switch.cs:86:24:86:27 | true | -| Switch.cs:88:16:88:20 | false | Switch.cs:88:16:88:20 | false | -| Switch.cs:91:10:91:11 | enter M8 | Switch.cs:91:10:91:11 | enter M8 | -| Switch.cs:91:10:91:11 | enter M8 | Switch.cs:91:10:91:11 | exit M8 (normal) | -| Switch.cs:91:10:91:11 | enter M8 | Switch.cs:96:24:96:27 | true | -| Switch.cs:91:10:91:11 | enter M8 | Switch.cs:98:16:98:20 | false | -| Switch.cs:91:10:91:11 | exit M8 (normal) | Switch.cs:91:10:91:11 | exit M8 (normal) | -| Switch.cs:96:24:96:27 | true | Switch.cs:96:24:96:27 | true | -| Switch.cs:98:16:98:20 | false | Switch.cs:98:16:98:20 | false | -| Switch.cs:101:9:101:10 | enter M9 | Switch.cs:101:9:101:10 | enter M9 | -| Switch.cs:101:9:101:10 | enter M9 | Switch.cs:101:9:101:10 | exit M9 (normal) | -| Switch.cs:101:9:101:10 | enter M9 | Switch.cs:103:17:103:25 | access to property Length | -| Switch.cs:101:9:101:10 | enter M9 | Switch.cs:105:13:105:19 | case ...: | -| Switch.cs:101:9:101:10 | enter M9 | Switch.cs:105:28:105:28 | 0 | -| Switch.cs:101:9:101:10 | enter M9 | Switch.cs:106:13:106:19 | case ...: | -| Switch.cs:101:9:101:10 | enter M9 | Switch.cs:106:28:106:28 | 1 | -| Switch.cs:101:9:101:10 | enter M9 | Switch.cs:108:17:108:17 | 1 | -| Switch.cs:101:9:101:10 | exit M9 (normal) | Switch.cs:101:9:101:10 | exit M9 (normal) | -| Switch.cs:103:17:103:25 | access to property Length | Switch.cs:103:17:103:25 | access to property Length | -| Switch.cs:105:13:105:19 | case ...: | Switch.cs:101:9:101:10 | exit M9 (normal) | -| Switch.cs:105:13:105:19 | case ...: | Switch.cs:105:13:105:19 | case ...: | -| Switch.cs:105:13:105:19 | case ...: | Switch.cs:105:28:105:28 | 0 | -| Switch.cs:105:13:105:19 | case ...: | Switch.cs:106:13:106:19 | case ...: | -| Switch.cs:105:13:105:19 | case ...: | Switch.cs:106:28:106:28 | 1 | -| Switch.cs:105:13:105:19 | case ...: | Switch.cs:108:17:108:17 | 1 | -| Switch.cs:105:28:105:28 | 0 | Switch.cs:105:28:105:28 | 0 | -| Switch.cs:106:13:106:19 | case ...: | Switch.cs:106:13:106:19 | case ...: | -| Switch.cs:106:13:106:19 | case ...: | Switch.cs:106:28:106:28 | 1 | -| Switch.cs:106:13:106:19 | case ...: | Switch.cs:108:17:108:17 | 1 | -| Switch.cs:106:28:106:28 | 1 | Switch.cs:106:28:106:28 | 1 | -| Switch.cs:108:17:108:17 | 1 | Switch.cs:108:17:108:17 | 1 | -| Switch.cs:111:17:111:21 | enter Throw | Switch.cs:111:17:111:21 | enter Throw | -| Switch.cs:113:9:113:11 | enter M10 | Switch.cs:113:9:113:11 | enter M10 | -| Switch.cs:113:9:113:11 | enter M10 | Switch.cs:113:9:113:11 | exit M10 (normal) | -| Switch.cs:113:9:113:11 | enter M10 | Switch.cs:117:25:117:25 | access to parameter s | -| Switch.cs:113:9:113:11 | enter M10 | Switch.cs:117:44:117:44 | 1 | -| Switch.cs:113:9:113:11 | enter M10 | Switch.cs:118:13:118:34 | case ...: | -| Switch.cs:113:9:113:11 | enter M10 | Switch.cs:118:25:118:25 | access to parameter s | -| Switch.cs:113:9:113:11 | enter M10 | Switch.cs:118:43:118:43 | 2 | -| Switch.cs:113:9:113:11 | enter M10 | Switch.cs:120:17:120:17 | 1 | -| Switch.cs:113:9:113:11 | exit M10 (normal) | Switch.cs:113:9:113:11 | exit M10 (normal) | -| Switch.cs:117:25:117:25 | access to parameter s | Switch.cs:117:25:117:25 | access to parameter s | -| Switch.cs:117:25:117:25 | access to parameter s | Switch.cs:117:44:117:44 | 1 | -| Switch.cs:117:44:117:44 | 1 | Switch.cs:117:44:117:44 | 1 | +| Switch.cs:27:13:27:39 | case ...: | Switch.cs:27:18:27:25 | After Double d [match] | +| Switch.cs:27:13:27:39 | case ...: | Switch.cs:27:18:27:25 | After Double d [no-match] | +| Switch.cs:27:18:27:25 | After Double d [match] | Switch.cs:27:18:27:25 | After Double d [match] | +| Switch.cs:27:18:27:25 | After Double d [no-match] | Switch.cs:27:18:27:25 | After Double d [no-match] | +| Switch.cs:30:13:30:20 | After default: [match] | Switch.cs:30:13:30:20 | After default: [match] | +| Switch.cs:35:10:35:11 | Entry | Switch.cs:35:10:35:11 | Entry | +| Switch.cs:44:10:44:11 | Entry | Switch.cs:44:10:44:11 | Entry | +| Switch.cs:44:10:44:11 | Entry | Switch.cs:46:9:52:9 | After switch (...) {...} | +| Switch.cs:44:10:44:11 | Entry | Switch.cs:48:18:48:20 | After access to type Int32 [match] | +| Switch.cs:44:10:44:11 | Entry | Switch.cs:48:18:48:20 | After access to type Int32 [no-match] | +| Switch.cs:44:10:44:11 | Entry | Switch.cs:50:18:50:21 | After access to type Boolean [match] | +| Switch.cs:44:10:44:11 | Entry | Switch.cs:50:18:50:21 | After access to type Boolean [no-match] | +| Switch.cs:44:10:44:11 | Entry | Switch.cs:50:30:50:38 | After ... != ... [false] | +| Switch.cs:44:10:44:11 | Entry | Switch.cs:50:30:50:38 | After ... != ... [true] | +| Switch.cs:46:9:52:9 | After switch (...) {...} | Switch.cs:46:9:52:9 | After switch (...) {...} | +| Switch.cs:48:18:48:20 | After access to type Int32 [match] | Switch.cs:48:18:48:20 | After access to type Int32 [match] | +| Switch.cs:48:18:48:20 | After access to type Int32 [no-match] | Switch.cs:48:18:48:20 | After access to type Int32 [no-match] | +| Switch.cs:48:18:48:20 | After access to type Int32 [no-match] | Switch.cs:50:18:50:21 | After access to type Boolean [match] | +| Switch.cs:48:18:48:20 | After access to type Int32 [no-match] | Switch.cs:50:18:50:21 | After access to type Boolean [no-match] | +| Switch.cs:48:18:48:20 | After access to type Int32 [no-match] | Switch.cs:50:30:50:38 | After ... != ... [false] | +| Switch.cs:48:18:48:20 | After access to type Int32 [no-match] | Switch.cs:50:30:50:38 | After ... != ... [true] | +| Switch.cs:50:18:50:21 | After access to type Boolean [match] | Switch.cs:50:18:50:21 | After access to type Boolean [match] | +| Switch.cs:50:18:50:21 | After access to type Boolean [match] | Switch.cs:50:30:50:38 | After ... != ... [false] | +| Switch.cs:50:18:50:21 | After access to type Boolean [match] | Switch.cs:50:30:50:38 | After ... != ... [true] | +| Switch.cs:50:18:50:21 | After access to type Boolean [no-match] | Switch.cs:50:18:50:21 | After access to type Boolean [no-match] | +| Switch.cs:50:30:50:38 | After ... != ... [false] | Switch.cs:50:30:50:38 | After ... != ... [false] | +| Switch.cs:50:30:50:38 | After ... != ... [true] | Switch.cs:50:30:50:38 | After ... != ... [true] | +| Switch.cs:55:10:55:11 | Entry | Switch.cs:55:10:55:11 | Entry | +| Switch.cs:55:10:55:11 | Entry | Switch.cs:57:9:63:9 | After switch (...) {...} | +| Switch.cs:55:10:55:11 | Entry | Switch.cs:59:18:59:18 | After 2 [match] | +| Switch.cs:55:10:55:11 | Entry | Switch.cs:59:18:59:18 | After 2 [no-match] | +| Switch.cs:55:10:55:11 | Entry | Switch.cs:61:18:61:18 | After 3 [match] | +| Switch.cs:55:10:55:11 | Entry | Switch.cs:61:18:61:18 | After 3 [no-match] | +| Switch.cs:57:9:63:9 | After switch (...) {...} | Switch.cs:57:9:63:9 | After switch (...) {...} | +| Switch.cs:59:18:59:18 | After 2 [match] | Switch.cs:59:18:59:18 | After 2 [match] | +| Switch.cs:59:18:59:18 | After 2 [no-match] | Switch.cs:59:18:59:18 | After 2 [no-match] | +| Switch.cs:59:18:59:18 | After 2 [no-match] | Switch.cs:61:18:61:18 | After 3 [match] | +| Switch.cs:59:18:59:18 | After 2 [no-match] | Switch.cs:61:18:61:18 | After 3 [no-match] | +| Switch.cs:61:18:61:18 | After 3 [match] | Switch.cs:61:18:61:18 | After 3 [match] | +| Switch.cs:61:18:61:18 | After 3 [no-match] | Switch.cs:61:18:61:18 | After 3 [no-match] | +| Switch.cs:66:10:66:11 | Entry | Switch.cs:66:10:66:11 | Entry | +| Switch.cs:66:10:66:11 | Entry | Switch.cs:68:9:74:9 | After switch (...) {...} | +| Switch.cs:66:10:66:11 | Entry | Switch.cs:70:18:70:20 | After access to type Int32 [match] | +| Switch.cs:66:10:66:11 | Entry | Switch.cs:70:18:70:20 | After access to type Int32 [no-match] | +| Switch.cs:66:10:66:11 | Entry | Switch.cs:72:18:72:19 | After "" [match] | +| Switch.cs:66:10:66:11 | Entry | Switch.cs:72:18:72:19 | After "" [no-match] | +| Switch.cs:68:9:74:9 | After switch (...) {...} | Switch.cs:68:9:74:9 | After switch (...) {...} | +| Switch.cs:70:18:70:20 | After access to type Int32 [match] | Switch.cs:70:18:70:20 | After access to type Int32 [match] | +| Switch.cs:70:18:70:20 | After access to type Int32 [no-match] | Switch.cs:70:18:70:20 | After access to type Int32 [no-match] | +| Switch.cs:70:18:70:20 | After access to type Int32 [no-match] | Switch.cs:72:18:72:19 | After "" [match] | +| Switch.cs:70:18:70:20 | After access to type Int32 [no-match] | Switch.cs:72:18:72:19 | After "" [no-match] | +| Switch.cs:72:18:72:19 | After "" [match] | Switch.cs:72:18:72:19 | After "" [match] | +| Switch.cs:72:18:72:19 | After "" [no-match] | Switch.cs:72:18:72:19 | After "" [no-match] | +| Switch.cs:77:10:77:11 | Entry | Switch.cs:77:10:77:11 | Entry | +| Switch.cs:77:10:77:11 | Entry | Switch.cs:77:10:77:11 | Normal Exit | +| Switch.cs:77:10:77:11 | Entry | Switch.cs:79:9:87:9 | After switch (...) {...} | +| Switch.cs:77:10:77:11 | Entry | Switch.cs:81:18:81:18 | After 1 [match] | +| Switch.cs:77:10:77:11 | Entry | Switch.cs:81:18:81:18 | After 1 [no-match] | +| Switch.cs:77:10:77:11 | Entry | Switch.cs:83:18:83:18 | After 2 [match] | +| Switch.cs:77:10:77:11 | Entry | Switch.cs:83:18:83:18 | After 2 [no-match] | +| Switch.cs:77:10:77:11 | Entry | Switch.cs:84:21:84:25 | After ... > ... [false] | +| Switch.cs:77:10:77:11 | Entry | Switch.cs:84:21:84:25 | After ... > ... [true] | +| Switch.cs:77:10:77:11 | Normal Exit | Switch.cs:77:10:77:11 | Normal Exit | +| Switch.cs:79:9:87:9 | After switch (...) {...} | Switch.cs:79:9:87:9 | After switch (...) {...} | +| Switch.cs:81:18:81:18 | After 1 [match] | Switch.cs:81:18:81:18 | After 1 [match] | +| Switch.cs:81:18:81:18 | After 1 [no-match] | Switch.cs:79:9:87:9 | After switch (...) {...} | +| Switch.cs:81:18:81:18 | After 1 [no-match] | Switch.cs:81:18:81:18 | After 1 [no-match] | +| Switch.cs:81:18:81:18 | After 1 [no-match] | Switch.cs:83:18:83:18 | After 2 [match] | +| Switch.cs:81:18:81:18 | After 1 [no-match] | Switch.cs:83:18:83:18 | After 2 [no-match] | +| Switch.cs:81:18:81:18 | After 1 [no-match] | Switch.cs:84:21:84:25 | After ... > ... [false] | +| Switch.cs:81:18:81:18 | After 1 [no-match] | Switch.cs:84:21:84:25 | After ... > ... [true] | +| Switch.cs:83:18:83:18 | After 2 [match] | Switch.cs:83:18:83:18 | After 2 [match] | +| Switch.cs:83:18:83:18 | After 2 [match] | Switch.cs:84:21:84:25 | After ... > ... [false] | +| Switch.cs:83:18:83:18 | After 2 [match] | Switch.cs:84:21:84:25 | After ... > ... [true] | +| Switch.cs:83:18:83:18 | After 2 [no-match] | Switch.cs:83:18:83:18 | After 2 [no-match] | +| Switch.cs:84:21:84:25 | After ... > ... [false] | Switch.cs:84:21:84:25 | After ... > ... [false] | +| Switch.cs:84:21:84:25 | After ... > ... [true] | Switch.cs:84:21:84:25 | After ... > ... [true] | +| Switch.cs:91:10:91:11 | Entry | Switch.cs:91:10:91:11 | Entry | +| Switch.cs:91:10:91:11 | Entry | Switch.cs:91:10:91:11 | Normal Exit | +| Switch.cs:91:10:91:11 | Entry | Switch.cs:95:18:95:20 | After access to type Int32 [match] | +| Switch.cs:91:10:91:11 | Entry | Switch.cs:95:18:95:20 | After access to type Int32 [no-match] | +| Switch.cs:91:10:91:11 | Normal Exit | Switch.cs:91:10:91:11 | Normal Exit | +| Switch.cs:95:18:95:20 | After access to type Int32 [match] | Switch.cs:95:18:95:20 | After access to type Int32 [match] | +| Switch.cs:95:18:95:20 | After access to type Int32 [no-match] | Switch.cs:95:18:95:20 | After access to type Int32 [no-match] | +| Switch.cs:101:9:101:10 | Entry | Switch.cs:101:9:101:10 | Entry | +| Switch.cs:101:9:101:10 | Entry | Switch.cs:101:9:101:10 | Normal Exit | +| Switch.cs:101:9:101:10 | Entry | Switch.cs:103:17:103:17 | After access to parameter s [non-null] | +| Switch.cs:101:9:101:10 | Entry | Switch.cs:103:17:103:17 | After access to parameter s [null] | +| Switch.cs:101:9:101:10 | Entry | Switch.cs:103:17:103:25 | After access to property Length | +| Switch.cs:101:9:101:10 | Entry | Switch.cs:105:18:105:18 | After 0 [match] | +| Switch.cs:101:9:101:10 | Entry | Switch.cs:105:18:105:18 | After 0 [no-match] | +| Switch.cs:101:9:101:10 | Entry | Switch.cs:106:18:106:18 | After 1 [match] | +| Switch.cs:101:9:101:10 | Entry | Switch.cs:106:18:106:18 | After 1 [no-match] | +| Switch.cs:101:9:101:10 | Normal Exit | Switch.cs:101:9:101:10 | Normal Exit | +| Switch.cs:103:17:103:17 | After access to parameter s [non-null] | Switch.cs:103:17:103:17 | After access to parameter s [non-null] | +| Switch.cs:103:17:103:17 | After access to parameter s [null] | Switch.cs:103:17:103:17 | After access to parameter s [null] | +| Switch.cs:103:17:103:25 | After access to property Length | Switch.cs:101:9:101:10 | Normal Exit | +| Switch.cs:103:17:103:25 | After access to property Length | Switch.cs:103:17:103:25 | After access to property Length | +| Switch.cs:103:17:103:25 | After access to property Length | Switch.cs:105:18:105:18 | After 0 [match] | +| Switch.cs:103:17:103:25 | After access to property Length | Switch.cs:105:18:105:18 | After 0 [no-match] | +| Switch.cs:103:17:103:25 | After access to property Length | Switch.cs:106:18:106:18 | After 1 [match] | +| Switch.cs:103:17:103:25 | After access to property Length | Switch.cs:106:18:106:18 | After 1 [no-match] | +| Switch.cs:105:18:105:18 | After 0 [match] | Switch.cs:105:18:105:18 | After 0 [match] | +| Switch.cs:105:18:105:18 | After 0 [no-match] | Switch.cs:105:18:105:18 | After 0 [no-match] | +| Switch.cs:105:18:105:18 | After 0 [no-match] | Switch.cs:106:18:106:18 | After 1 [match] | +| Switch.cs:105:18:105:18 | After 0 [no-match] | Switch.cs:106:18:106:18 | After 1 [no-match] | +| Switch.cs:106:18:106:18 | After 1 [match] | Switch.cs:106:18:106:18 | After 1 [match] | +| Switch.cs:106:18:106:18 | After 1 [no-match] | Switch.cs:106:18:106:18 | After 1 [no-match] | +| Switch.cs:111:17:111:21 | Entry | Switch.cs:111:17:111:21 | Entry | +| Switch.cs:113:9:113:11 | Entry | Switch.cs:113:9:113:11 | Entry | +| Switch.cs:113:9:113:11 | Entry | Switch.cs:113:9:113:11 | Normal Exit | +| Switch.cs:113:9:113:11 | Entry | Switch.cs:115:9:119:9 | After switch (...) {...} | +| Switch.cs:113:9:113:11 | Entry | Switch.cs:117:18:117:18 | After 3 [match] | +| Switch.cs:113:9:113:11 | Entry | Switch.cs:117:18:117:18 | After 3 [no-match] | +| Switch.cs:113:9:113:11 | Entry | Switch.cs:117:25:117:34 | After ... == ... [false] | +| Switch.cs:113:9:113:11 | Entry | Switch.cs:117:25:117:34 | After ... == ... [true] | +| Switch.cs:113:9:113:11 | Entry | Switch.cs:118:13:118:34 | case ...: | +| Switch.cs:113:9:113:11 | Entry | Switch.cs:118:18:118:18 | After 2 [match] | +| Switch.cs:113:9:113:11 | Entry | Switch.cs:118:18:118:18 | After 2 [no-match] | +| Switch.cs:113:9:113:11 | Entry | Switch.cs:118:25:118:33 | After ... == ... [false] | +| Switch.cs:113:9:113:11 | Entry | Switch.cs:118:25:118:33 | After ... == ... [true] | +| Switch.cs:113:9:113:11 | Normal Exit | Switch.cs:113:9:113:11 | Normal Exit | +| Switch.cs:115:9:119:9 | After switch (...) {...} | Switch.cs:115:9:119:9 | After switch (...) {...} | +| Switch.cs:117:18:117:18 | After 3 [match] | Switch.cs:117:18:117:18 | After 3 [match] | +| Switch.cs:117:18:117:18 | After 3 [match] | Switch.cs:117:25:117:34 | After ... == ... [false] | +| Switch.cs:117:18:117:18 | After 3 [match] | Switch.cs:117:25:117:34 | After ... == ... [true] | +| Switch.cs:117:18:117:18 | After 3 [no-match] | Switch.cs:117:18:117:18 | After 3 [no-match] | +| Switch.cs:117:25:117:34 | After ... == ... [false] | Switch.cs:117:25:117:34 | After ... == ... [false] | +| Switch.cs:117:25:117:34 | After ... == ... [true] | Switch.cs:117:25:117:34 | After ... == ... [true] | +| Switch.cs:118:13:118:34 | case ...: | Switch.cs:115:9:119:9 | After switch (...) {...} | | Switch.cs:118:13:118:34 | case ...: | Switch.cs:118:13:118:34 | case ...: | -| Switch.cs:118:13:118:34 | case ...: | Switch.cs:118:25:118:25 | access to parameter s | -| Switch.cs:118:13:118:34 | case ...: | Switch.cs:118:43:118:43 | 2 | -| Switch.cs:118:13:118:34 | case ...: | Switch.cs:120:17:120:17 | 1 | -| Switch.cs:118:25:118:25 | access to parameter s | Switch.cs:118:25:118:25 | access to parameter s | -| Switch.cs:118:25:118:25 | access to parameter s | Switch.cs:118:43:118:43 | 2 | -| Switch.cs:118:43:118:43 | 2 | Switch.cs:118:43:118:43 | 2 | -| Switch.cs:120:17:120:17 | 1 | Switch.cs:120:17:120:17 | 1 | -| Switch.cs:123:10:123:12 | enter M11 | Switch.cs:123:10:123:12 | enter M11 | -| Switch.cs:123:10:123:12 | enter M11 | Switch.cs:123:10:123:12 | exit M11 (normal) | -| Switch.cs:123:10:123:12 | enter M11 | Switch.cs:125:13:125:48 | [false] ... switch { ... } | -| Switch.cs:123:10:123:12 | enter M11 | Switch.cs:125:13:125:48 | [true] ... switch { ... } | -| Switch.cs:123:10:123:12 | enter M11 | Switch.cs:125:24:125:34 | [false] ... => ... | -| Switch.cs:123:10:123:12 | enter M11 | Switch.cs:125:24:125:34 | [true] ... => ... | -| Switch.cs:123:10:123:12 | enter M11 | Switch.cs:125:34:125:34 | access to local variable b | -| Switch.cs:123:10:123:12 | enter M11 | Switch.cs:125:37:125:37 | _ | -| Switch.cs:123:10:123:12 | enter M11 | Switch.cs:125:37:125:46 | [false] ... => ... | -| Switch.cs:123:10:123:12 | enter M11 | Switch.cs:125:42:125:46 | false | -| Switch.cs:123:10:123:12 | enter M11 | Switch.cs:126:13:126:19 | return ...; | -| Switch.cs:123:10:123:12 | exit M11 (normal) | Switch.cs:123:10:123:12 | exit M11 (normal) | -| Switch.cs:125:13:125:48 | [false] ... switch { ... } | Switch.cs:125:13:125:48 | [false] ... switch { ... } | -| Switch.cs:125:13:125:48 | [true] ... switch { ... } | Switch.cs:125:13:125:48 | [true] ... switch { ... } | -| Switch.cs:125:13:125:48 | [true] ... switch { ... } | Switch.cs:126:13:126:19 | return ...; | -| Switch.cs:125:24:125:34 | [false] ... => ... | Switch.cs:125:24:125:34 | [false] ... => ... | -| Switch.cs:125:24:125:34 | [true] ... => ... | Switch.cs:125:13:125:48 | [true] ... switch { ... } | -| Switch.cs:125:24:125:34 | [true] ... => ... | Switch.cs:125:24:125:34 | [true] ... => ... | -| Switch.cs:125:24:125:34 | [true] ... => ... | Switch.cs:126:13:126:19 | return ...; | -| Switch.cs:125:34:125:34 | access to local variable b | Switch.cs:125:13:125:48 | [true] ... switch { ... } | -| Switch.cs:125:34:125:34 | access to local variable b | Switch.cs:125:24:125:34 | [false] ... => ... | -| Switch.cs:125:34:125:34 | access to local variable b | Switch.cs:125:24:125:34 | [true] ... => ... | -| Switch.cs:125:34:125:34 | access to local variable b | Switch.cs:125:34:125:34 | access to local variable b | -| Switch.cs:125:34:125:34 | access to local variable b | Switch.cs:126:13:126:19 | return ...; | -| Switch.cs:125:37:125:37 | _ | Switch.cs:125:37:125:37 | _ | -| Switch.cs:125:37:125:37 | _ | Switch.cs:125:37:125:46 | [false] ... => ... | -| Switch.cs:125:37:125:37 | _ | Switch.cs:125:42:125:46 | false | -| Switch.cs:125:37:125:46 | [false] ... => ... | Switch.cs:125:37:125:46 | [false] ... => ... | -| Switch.cs:125:42:125:46 | false | Switch.cs:125:37:125:46 | [false] ... => ... | -| Switch.cs:125:42:125:46 | false | Switch.cs:125:42:125:46 | false | -| Switch.cs:126:13:126:19 | return ...; | Switch.cs:126:13:126:19 | return ...; | -| Switch.cs:129:12:129:14 | enter M12 | Switch.cs:129:12:129:14 | enter M12 | -| Switch.cs:129:12:129:14 | enter M12 | Switch.cs:131:9:131:67 | return ...; | -| Switch.cs:129:12:129:14 | enter M12 | Switch.cs:131:16:131:66 | call to method ToString | -| Switch.cs:129:12:129:14 | enter M12 | Switch.cs:131:17:131:53 | [non-null] ... switch { ... } | -| Switch.cs:129:12:129:14 | enter M12 | Switch.cs:131:17:131:53 | [null] ... switch { ... } | -| Switch.cs:129:12:129:14 | enter M12 | Switch.cs:131:28:131:40 | [non-null] ... => ... | -| Switch.cs:129:12:129:14 | enter M12 | Switch.cs:131:28:131:40 | [null] ... => ... | -| Switch.cs:129:12:129:14 | enter M12 | Switch.cs:131:40:131:40 | access to local variable s | -| Switch.cs:129:12:129:14 | enter M12 | Switch.cs:131:43:131:43 | _ | -| Switch.cs:129:12:129:14 | enter M12 | Switch.cs:131:43:131:51 | [null] ... => ... | -| Switch.cs:129:12:129:14 | enter M12 | Switch.cs:131:48:131:51 | null | -| Switch.cs:131:9:131:67 | return ...; | Switch.cs:131:9:131:67 | return ...; | -| Switch.cs:131:16:131:66 | call to method ToString | Switch.cs:131:16:131:66 | call to method ToString | -| Switch.cs:131:17:131:53 | [non-null] ... switch { ... } | Switch.cs:131:16:131:66 | call to method ToString | -| Switch.cs:131:17:131:53 | [non-null] ... switch { ... } | Switch.cs:131:17:131:53 | [non-null] ... switch { ... } | -| Switch.cs:131:17:131:53 | [null] ... switch { ... } | Switch.cs:131:17:131:53 | [null] ... switch { ... } | -| Switch.cs:131:28:131:40 | [non-null] ... => ... | Switch.cs:131:16:131:66 | call to method ToString | -| Switch.cs:131:28:131:40 | [non-null] ... => ... | Switch.cs:131:17:131:53 | [non-null] ... switch { ... } | -| Switch.cs:131:28:131:40 | [non-null] ... => ... | Switch.cs:131:28:131:40 | [non-null] ... => ... | -| Switch.cs:131:28:131:40 | [null] ... => ... | Switch.cs:131:28:131:40 | [null] ... => ... | -| Switch.cs:131:40:131:40 | access to local variable s | Switch.cs:131:16:131:66 | call to method ToString | -| Switch.cs:131:40:131:40 | access to local variable s | Switch.cs:131:17:131:53 | [non-null] ... switch { ... } | -| Switch.cs:131:40:131:40 | access to local variable s | Switch.cs:131:28:131:40 | [non-null] ... => ... | -| Switch.cs:131:40:131:40 | access to local variable s | Switch.cs:131:28:131:40 | [null] ... => ... | -| Switch.cs:131:40:131:40 | access to local variable s | Switch.cs:131:40:131:40 | access to local variable s | -| Switch.cs:131:43:131:43 | _ | Switch.cs:131:43:131:43 | _ | -| Switch.cs:131:43:131:43 | _ | Switch.cs:131:43:131:51 | [null] ... => ... | -| Switch.cs:131:43:131:43 | _ | Switch.cs:131:48:131:51 | null | -| Switch.cs:131:43:131:51 | [null] ... => ... | Switch.cs:131:43:131:51 | [null] ... => ... | -| Switch.cs:131:48:131:51 | null | Switch.cs:131:43:131:51 | [null] ... => ... | -| Switch.cs:131:48:131:51 | null | Switch.cs:131:48:131:51 | null | -| Switch.cs:134:9:134:11 | enter M13 | Switch.cs:134:9:134:11 | enter M13 | -| Switch.cs:134:9:134:11 | enter M13 | Switch.cs:134:9:134:11 | exit M13 (normal) | -| Switch.cs:134:9:134:11 | enter M13 | Switch.cs:138:13:138:20 | default: | -| Switch.cs:134:9:134:11 | enter M13 | Switch.cs:139:28:139:28 | 1 | -| Switch.cs:134:9:134:11 | enter M13 | Switch.cs:140:13:140:19 | case ...: | -| Switch.cs:134:9:134:11 | enter M13 | Switch.cs:140:28:140:28 | 2 | -| Switch.cs:134:9:134:11 | exit M13 (normal) | Switch.cs:134:9:134:11 | exit M13 (normal) | -| Switch.cs:138:13:138:20 | default: | Switch.cs:138:13:138:20 | default: | -| Switch.cs:139:28:139:28 | 1 | Switch.cs:139:28:139:28 | 1 | -| Switch.cs:140:13:140:19 | case ...: | Switch.cs:138:13:138:20 | default: | -| Switch.cs:140:13:140:19 | case ...: | Switch.cs:140:13:140:19 | case ...: | -| Switch.cs:140:13:140:19 | case ...: | Switch.cs:140:28:140:28 | 2 | -| Switch.cs:140:28:140:28 | 2 | Switch.cs:140:28:140:28 | 2 | -| Switch.cs:144:9:144:11 | enter M14 | Switch.cs:144:9:144:11 | enter M14 | -| Switch.cs:144:9:144:11 | enter M14 | Switch.cs:144:9:144:11 | exit M14 (normal) | -| Switch.cs:144:9:144:11 | enter M14 | Switch.cs:148:28:148:28 | 1 | -| Switch.cs:144:9:144:11 | enter M14 | Switch.cs:149:13:149:20 | default: | -| Switch.cs:144:9:144:11 | enter M14 | Switch.cs:150:13:150:19 | case ...: | -| Switch.cs:144:9:144:11 | enter M14 | Switch.cs:150:28:150:28 | 2 | -| Switch.cs:144:9:144:11 | exit M14 (normal) | Switch.cs:144:9:144:11 | exit M14 (normal) | -| Switch.cs:148:28:148:28 | 1 | Switch.cs:148:28:148:28 | 1 | -| Switch.cs:149:13:149:20 | default: | Switch.cs:149:13:149:20 | default: | -| Switch.cs:150:13:150:19 | case ...: | Switch.cs:149:13:149:20 | default: | -| Switch.cs:150:13:150:19 | case ...: | Switch.cs:150:13:150:19 | case ...: | -| Switch.cs:150:13:150:19 | case ...: | Switch.cs:150:28:150:28 | 2 | -| Switch.cs:150:28:150:28 | 2 | Switch.cs:150:28:150:28 | 2 | -| Switch.cs:154:10:154:12 | enter M15 | Switch.cs:154:10:154:12 | enter M15 | -| Switch.cs:154:10:154:12 | enter M15 | Switch.cs:154:10:154:12 | exit M15 | -| Switch.cs:154:10:154:12 | enter M15 | Switch.cs:154:10:154:12 | exit M15 (abnormal) | -| Switch.cs:154:10:154:12 | enter M15 | Switch.cs:154:10:154:12 | exit M15 (normal) | -| Switch.cs:154:10:154:12 | enter M15 | Switch.cs:156:17:156:54 | ... switch { ... } | -| Switch.cs:154:10:154:12 | enter M15 | Switch.cs:156:36:156:38 | "a" | -| Switch.cs:154:10:154:12 | enter M15 | Switch.cs:156:41:156:45 | false | -| Switch.cs:154:10:154:12 | enter M15 | Switch.cs:156:50:156:52 | "b" | -| Switch.cs:154:10:154:12 | enter M15 | Switch.cs:158:13:158:49 | ...; | -| Switch.cs:154:10:154:12 | enter M15 | Switch.cs:160:13:160:49 | ...; | -| Switch.cs:154:10:154:12 | exit M15 | Switch.cs:154:10:154:12 | exit M15 | -| Switch.cs:154:10:154:12 | exit M15 (abnormal) | Switch.cs:154:10:154:12 | exit M15 (abnormal) | -| Switch.cs:154:10:154:12 | exit M15 (normal) | Switch.cs:154:10:154:12 | exit M15 (normal) | -| Switch.cs:156:17:156:54 | ... switch { ... } | Switch.cs:154:10:154:12 | exit M15 (normal) | -| Switch.cs:156:17:156:54 | ... switch { ... } | Switch.cs:156:17:156:54 | ... switch { ... } | -| Switch.cs:156:17:156:54 | ... switch { ... } | Switch.cs:158:13:158:49 | ...; | -| Switch.cs:156:17:156:54 | ... switch { ... } | Switch.cs:160:13:160:49 | ...; | -| Switch.cs:156:36:156:38 | "a" | Switch.cs:156:36:156:38 | "a" | -| Switch.cs:156:41:156:45 | false | Switch.cs:154:10:154:12 | exit M15 (abnormal) | -| Switch.cs:156:41:156:45 | false | Switch.cs:156:41:156:45 | false | -| Switch.cs:156:41:156:45 | false | Switch.cs:156:50:156:52 | "b" | -| Switch.cs:156:50:156:52 | "b" | Switch.cs:156:50:156:52 | "b" | -| Switch.cs:158:13:158:49 | ...; | Switch.cs:158:13:158:49 | ...; | -| Switch.cs:160:13:160:49 | ...; | Switch.cs:160:13:160:49 | ...; | -| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:163:10:163:12 | enter M16 | -| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:163:10:163:12 | exit M16 (normal) | -| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:168:13:168:19 | case ...: | -| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:169:17:169:51 | ...; | -| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:171:13:171:19 | case ...: | -| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:172:17:172:46 | ...; | -| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:174:13:174:20 | default: | -| Switch.cs:163:10:163:12 | exit M16 (normal) | Switch.cs:163:10:163:12 | exit M16 (normal) | -| Switch.cs:168:13:168:19 | case ...: | Switch.cs:168:13:168:19 | case ...: | -| Switch.cs:168:13:168:19 | case ...: | Switch.cs:171:13:171:19 | case ...: | -| Switch.cs:168:13:168:19 | case ...: | Switch.cs:172:17:172:46 | ...; | -| Switch.cs:168:13:168:19 | case ...: | Switch.cs:174:13:174:20 | default: | +| Switch.cs:118:13:118:34 | case ...: | Switch.cs:118:18:118:18 | After 2 [match] | +| Switch.cs:118:13:118:34 | case ...: | Switch.cs:118:18:118:18 | After 2 [no-match] | +| Switch.cs:118:13:118:34 | case ...: | Switch.cs:118:25:118:33 | After ... == ... [false] | +| Switch.cs:118:13:118:34 | case ...: | Switch.cs:118:25:118:33 | After ... == ... [true] | +| Switch.cs:118:18:118:18 | After 2 [match] | Switch.cs:118:18:118:18 | After 2 [match] | +| Switch.cs:118:18:118:18 | After 2 [match] | Switch.cs:118:25:118:33 | After ... == ... [false] | +| Switch.cs:118:18:118:18 | After 2 [match] | Switch.cs:118:25:118:33 | After ... == ... [true] | +| Switch.cs:118:18:118:18 | After 2 [no-match] | Switch.cs:118:18:118:18 | After 2 [no-match] | +| Switch.cs:118:25:118:33 | After ... == ... [false] | Switch.cs:118:25:118:33 | After ... == ... [false] | +| Switch.cs:118:25:118:33 | After ... == ... [true] | Switch.cs:118:25:118:33 | After ... == ... [true] | +| Switch.cs:123:10:123:12 | Entry | Switch.cs:123:10:123:12 | Entry | +| Switch.cs:123:10:123:12 | Entry | Switch.cs:123:10:123:12 | Normal Exit | +| Switch.cs:123:10:123:12 | Entry | Switch.cs:125:13:125:48 | After ... switch { ... } [false] | +| Switch.cs:123:10:123:12 | Entry | Switch.cs:125:13:125:48 | After ... switch { ... } [true] | +| Switch.cs:123:10:123:12 | Entry | Switch.cs:125:24:125:29 | After Boolean b [match] | +| Switch.cs:123:10:123:12 | Entry | Switch.cs:125:24:125:29 | After Boolean b [no-match] | +| Switch.cs:123:10:123:12 | Normal Exit | Switch.cs:123:10:123:12 | Normal Exit | +| Switch.cs:125:13:125:48 | After ... switch { ... } [false] | Switch.cs:125:13:125:48 | After ... switch { ... } [false] | +| Switch.cs:125:13:125:48 | After ... switch { ... } [true] | Switch.cs:125:13:125:48 | After ... switch { ... } [true] | +| Switch.cs:125:24:125:29 | After Boolean b [match] | Switch.cs:125:24:125:29 | After Boolean b [match] | +| Switch.cs:125:24:125:29 | After Boolean b [no-match] | Switch.cs:125:24:125:29 | After Boolean b [no-match] | +| Switch.cs:129:12:129:14 | Entry | Switch.cs:129:12:129:14 | Entry | +| Switch.cs:129:12:129:14 | Entry | Switch.cs:131:16:131:66 | After call to method ToString | +| Switch.cs:129:12:129:14 | Entry | Switch.cs:131:17:131:53 | After ... switch { ... } [non-null] | +| Switch.cs:129:12:129:14 | Entry | Switch.cs:131:17:131:53 | After ... switch { ... } [null] | +| Switch.cs:129:12:129:14 | Entry | Switch.cs:131:28:131:35 | After String s [match] | +| Switch.cs:129:12:129:14 | Entry | Switch.cs:131:28:131:35 | After String s [no-match] | +| Switch.cs:131:16:131:66 | After call to method ToString | Switch.cs:131:16:131:66 | After call to method ToString | +| Switch.cs:131:17:131:53 | After ... switch { ... } [non-null] | Switch.cs:131:17:131:53 | After ... switch { ... } [non-null] | +| Switch.cs:131:17:131:53 | After ... switch { ... } [null] | Switch.cs:131:17:131:53 | After ... switch { ... } [null] | +| Switch.cs:131:28:131:35 | After String s [match] | Switch.cs:131:28:131:35 | After String s [match] | +| Switch.cs:131:28:131:35 | After String s [no-match] | Switch.cs:131:28:131:35 | After String s [no-match] | +| Switch.cs:134:9:134:11 | Entry | Switch.cs:134:9:134:11 | Entry | +| Switch.cs:134:9:134:11 | Entry | Switch.cs:134:9:134:11 | Normal Exit | +| Switch.cs:134:9:134:11 | Entry | Switch.cs:139:18:139:18 | After 1 [match] | +| Switch.cs:134:9:134:11 | Entry | Switch.cs:139:18:139:18 | After 1 [no-match] | +| Switch.cs:134:9:134:11 | Entry | Switch.cs:140:18:140:18 | After 2 [match] | +| Switch.cs:134:9:134:11 | Entry | Switch.cs:140:18:140:18 | After 2 [no-match] | +| Switch.cs:134:9:134:11 | Normal Exit | Switch.cs:134:9:134:11 | Normal Exit | +| Switch.cs:139:18:139:18 | After 1 [match] | Switch.cs:139:18:139:18 | After 1 [match] | +| Switch.cs:139:18:139:18 | After 1 [no-match] | Switch.cs:139:18:139:18 | After 1 [no-match] | +| Switch.cs:139:18:139:18 | After 1 [no-match] | Switch.cs:140:18:140:18 | After 2 [match] | +| Switch.cs:139:18:139:18 | After 1 [no-match] | Switch.cs:140:18:140:18 | After 2 [no-match] | +| Switch.cs:140:18:140:18 | After 2 [match] | Switch.cs:140:18:140:18 | After 2 [match] | +| Switch.cs:140:18:140:18 | After 2 [no-match] | Switch.cs:140:18:140:18 | After 2 [no-match] | +| Switch.cs:144:9:144:11 | Entry | Switch.cs:144:9:144:11 | Entry | +| Switch.cs:144:9:144:11 | Entry | Switch.cs:144:9:144:11 | Normal Exit | +| Switch.cs:144:9:144:11 | Entry | Switch.cs:148:18:148:18 | After 1 [match] | +| Switch.cs:144:9:144:11 | Entry | Switch.cs:148:18:148:18 | After 1 [no-match] | +| Switch.cs:144:9:144:11 | Entry | Switch.cs:150:18:150:18 | After 2 [match] | +| Switch.cs:144:9:144:11 | Entry | Switch.cs:150:18:150:18 | After 2 [no-match] | +| Switch.cs:144:9:144:11 | Normal Exit | Switch.cs:144:9:144:11 | Normal Exit | +| Switch.cs:148:18:148:18 | After 1 [match] | Switch.cs:148:18:148:18 | After 1 [match] | +| Switch.cs:148:18:148:18 | After 1 [no-match] | Switch.cs:148:18:148:18 | After 1 [no-match] | +| Switch.cs:148:18:148:18 | After 1 [no-match] | Switch.cs:150:18:150:18 | After 2 [match] | +| Switch.cs:148:18:148:18 | After 1 [no-match] | Switch.cs:150:18:150:18 | After 2 [no-match] | +| Switch.cs:150:18:150:18 | After 2 [match] | Switch.cs:150:18:150:18 | After 2 [match] | +| Switch.cs:150:18:150:18 | After 2 [no-match] | Switch.cs:150:18:150:18 | After 2 [no-match] | +| Switch.cs:154:10:154:12 | Entry | Switch.cs:154:10:154:12 | Entry | +| Switch.cs:154:10:154:12 | Entry | Switch.cs:156:17:156:54 | After ... switch { ... } | +| Switch.cs:154:10:154:12 | Entry | Switch.cs:156:28:156:31 | After true [match] | +| Switch.cs:154:10:154:12 | Entry | Switch.cs:156:28:156:31 | After true [no-match] | +| Switch.cs:154:10:154:12 | Entry | Switch.cs:156:41:156:45 | After false [match] | +| Switch.cs:154:10:154:12 | Entry | Switch.cs:156:41:156:45 | After false [no-match] | +| Switch.cs:154:10:154:12 | Entry | Switch.cs:157:9:160:49 | After if (...) ... | +| Switch.cs:154:10:154:12 | Entry | Switch.cs:157:13:157:13 | After access to parameter b [false] | +| Switch.cs:154:10:154:12 | Entry | Switch.cs:157:13:157:13 | After access to parameter b [true] | +| Switch.cs:156:17:156:54 | After ... switch { ... } | Switch.cs:156:17:156:54 | After ... switch { ... } | +| Switch.cs:156:17:156:54 | After ... switch { ... } | Switch.cs:157:9:160:49 | After if (...) ... | +| Switch.cs:156:17:156:54 | After ... switch { ... } | Switch.cs:157:13:157:13 | After access to parameter b [false] | +| Switch.cs:156:17:156:54 | After ... switch { ... } | Switch.cs:157:13:157:13 | After access to parameter b [true] | +| Switch.cs:156:28:156:31 | After true [match] | Switch.cs:156:28:156:31 | After true [match] | +| Switch.cs:156:28:156:31 | After true [no-match] | Switch.cs:156:28:156:31 | After true [no-match] | +| Switch.cs:156:28:156:31 | After true [no-match] | Switch.cs:156:41:156:45 | After false [match] | +| Switch.cs:156:28:156:31 | After true [no-match] | Switch.cs:156:41:156:45 | After false [no-match] | +| Switch.cs:156:41:156:45 | After false [match] | Switch.cs:156:41:156:45 | After false [match] | +| Switch.cs:156:41:156:45 | After false [no-match] | Switch.cs:156:41:156:45 | After false [no-match] | +| Switch.cs:157:9:160:49 | After if (...) ... | Switch.cs:157:9:160:49 | After if (...) ... | +| Switch.cs:157:13:157:13 | After access to parameter b [false] | Switch.cs:157:13:157:13 | After access to parameter b [false] | +| Switch.cs:157:13:157:13 | After access to parameter b [true] | Switch.cs:157:13:157:13 | After access to parameter b [true] | +| Switch.cs:163:10:163:12 | Entry | Switch.cs:163:10:163:12 | Entry | +| Switch.cs:163:10:163:12 | Entry | Switch.cs:165:9:177:9 | After switch (...) {...} | +| Switch.cs:163:10:163:12 | Entry | Switch.cs:167:18:167:18 | After 1 [match] | +| Switch.cs:163:10:163:12 | Entry | Switch.cs:167:18:167:18 | After 1 [no-match] | +| Switch.cs:163:10:163:12 | Entry | Switch.cs:168:18:168:18 | After 2 [match] | +| Switch.cs:163:10:163:12 | Entry | Switch.cs:168:18:168:18 | After 2 [no-match] | +| Switch.cs:163:10:163:12 | Entry | Switch.cs:169:17:169:51 | ...; | +| Switch.cs:163:10:163:12 | Entry | Switch.cs:171:18:171:18 | After 3 [match] | +| Switch.cs:163:10:163:12 | Entry | Switch.cs:171:18:171:18 | After 3 [no-match] | +| Switch.cs:165:9:177:9 | After switch (...) {...} | Switch.cs:165:9:177:9 | After switch (...) {...} | +| Switch.cs:167:18:167:18 | After 1 [match] | Switch.cs:167:18:167:18 | After 1 [match] | +| Switch.cs:167:18:167:18 | After 1 [no-match] | Switch.cs:167:18:167:18 | After 1 [no-match] | +| Switch.cs:167:18:167:18 | After 1 [no-match] | Switch.cs:168:18:168:18 | After 2 [match] | +| Switch.cs:167:18:167:18 | After 1 [no-match] | Switch.cs:168:18:168:18 | After 2 [no-match] | +| Switch.cs:167:18:167:18 | After 1 [no-match] | Switch.cs:171:18:171:18 | After 3 [match] | +| Switch.cs:167:18:167:18 | After 1 [no-match] | Switch.cs:171:18:171:18 | After 3 [no-match] | +| Switch.cs:168:18:168:18 | After 2 [match] | Switch.cs:168:18:168:18 | After 2 [match] | +| Switch.cs:168:18:168:18 | After 2 [no-match] | Switch.cs:168:18:168:18 | After 2 [no-match] | +| Switch.cs:168:18:168:18 | After 2 [no-match] | Switch.cs:171:18:171:18 | After 3 [match] | +| Switch.cs:168:18:168:18 | After 2 [no-match] | Switch.cs:171:18:171:18 | After 3 [no-match] | | Switch.cs:169:17:169:51 | ...; | Switch.cs:169:17:169:51 | ...; | -| Switch.cs:171:13:171:19 | case ...: | Switch.cs:171:13:171:19 | case ...: | -| Switch.cs:171:13:171:19 | case ...: | Switch.cs:172:17:172:46 | ...; | -| Switch.cs:171:13:171:19 | case ...: | Switch.cs:174:13:174:20 | default: | -| Switch.cs:172:17:172:46 | ...; | Switch.cs:172:17:172:46 | ...; | -| Switch.cs:174:13:174:20 | default: | Switch.cs:174:13:174:20 | default: | -| TypeAccesses.cs:1:7:1:18 | enter TypeAccesses | TypeAccesses.cs:1:7:1:18 | enter TypeAccesses | -| TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:3:10:3:10 | enter M | -| TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:7:13:7:22 | [false] ... is ... | -| TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:7:13:7:22 | [true] ... is ... | -| TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:7:25:7:25 | ; | -| TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:8:9:8:28 | ... ...; | -| TypeAccesses.cs:7:13:7:22 | [false] ... is ... | TypeAccesses.cs:7:13:7:22 | [false] ... is ... | -| TypeAccesses.cs:7:13:7:22 | [true] ... is ... | TypeAccesses.cs:7:13:7:22 | [true] ... is ... | -| TypeAccesses.cs:7:13:7:22 | [true] ... is ... | TypeAccesses.cs:7:25:7:25 | ; | -| TypeAccesses.cs:7:25:7:25 | ; | TypeAccesses.cs:7:25:7:25 | ; | -| TypeAccesses.cs:8:9:8:28 | ... ...; | TypeAccesses.cs:8:9:8:28 | ... ...; | -| VarDecls.cs:3:7:3:14 | enter VarDecls | VarDecls.cs:3:7:3:14 | enter VarDecls | -| VarDecls.cs:5:18:5:19 | enter M1 | VarDecls.cs:5:18:5:19 | enter M1 | -| VarDecls.cs:13:12:13:13 | enter M2 | VarDecls.cs:13:12:13:13 | enter M2 | -| VarDecls.cs:19:7:19:8 | enter M3 | VarDecls.cs:19:7:19:8 | enter M3 | -| VarDecls.cs:19:7:19:8 | enter M3 | VarDecls.cs:25:20:25:28 | ... ? ... : ... | -| VarDecls.cs:19:7:19:8 | enter M3 | VarDecls.cs:25:24:25:24 | access to local variable x | -| VarDecls.cs:19:7:19:8 | enter M3 | VarDecls.cs:25:28:25:28 | access to local variable y | -| VarDecls.cs:25:20:25:28 | ... ? ... : ... | VarDecls.cs:25:20:25:28 | ... ? ... : ... | -| VarDecls.cs:25:24:25:24 | access to local variable x | VarDecls.cs:25:24:25:24 | access to local variable x | -| VarDecls.cs:25:28:25:28 | access to local variable y | VarDecls.cs:25:28:25:28 | access to local variable y | -| VarDecls.cs:28:11:28:11 | enter C | VarDecls.cs:28:11:28:11 | enter C | -| VarDecls.cs:28:41:28:47 | enter Dispose | VarDecls.cs:28:41:28:47 | enter Dispose | -| cflow.cs:5:17:5:20 | enter Main | cflow.cs:5:17:5:20 | enter Main | -| cflow.cs:5:17:5:20 | enter Main | cflow.cs:5:17:5:20 | exit Main (normal) | -| cflow.cs:5:17:5:20 | enter Main | cflow.cs:12:13:12:49 | ...; | -| cflow.cs:5:17:5:20 | enter Main | cflow.cs:14:9:17:9 | while (...) ... | -| cflow.cs:5:17:5:20 | enter Main | cflow.cs:14:16:14:16 | access to local variable a | -| cflow.cs:5:17:5:20 | enter Main | cflow.cs:15:9:17:9 | {...} | -| cflow.cs:5:17:5:20 | enter Main | cflow.cs:19:9:22:25 | do ... while (...); | -| cflow.cs:5:17:5:20 | enter Main | cflow.cs:20:9:22:9 | {...} | -| cflow.cs:5:17:5:20 | enter Main | cflow.cs:24:9:34:9 | for (...;...;...) ... | -| cflow.cs:5:17:5:20 | enter Main | cflow.cs:24:25:24:25 | access to local variable i | -| cflow.cs:5:17:5:20 | enter Main | cflow.cs:24:34:24:34 | access to local variable i | -| cflow.cs:5:17:5:20 | enter Main | cflow.cs:25:9:34:9 | {...} | -| cflow.cs:5:17:5:20 | enter Main | cflow.cs:26:17:26:40 | [false] ... && ... | -| cflow.cs:5:17:5:20 | enter Main | cflow.cs:26:17:26:40 | [true] ... && ... | -| cflow.cs:5:17:5:20 | enter Main | cflow.cs:26:31:26:31 | access to local variable i | -| cflow.cs:5:17:5:20 | enter Main | cflow.cs:27:17:27:46 | ...; | -| cflow.cs:5:17:5:20 | enter Main | cflow.cs:28:18:33:37 | if (...) ... | -| cflow.cs:5:17:5:20 | enter Main | cflow.cs:29:17:29:42 | ...; | -| cflow.cs:5:17:5:20 | enter Main | cflow.cs:30:18:33:37 | if (...) ... | -| cflow.cs:5:17:5:20 | enter Main | cflow.cs:31:17:31:42 | ...; | -| cflow.cs:5:17:5:20 | enter Main | cflow.cs:33:17:33:37 | ...; | -| cflow.cs:5:17:5:20 | exit Main (normal) | cflow.cs:5:17:5:20 | exit Main (normal) | -| cflow.cs:12:13:12:49 | ...; | cflow.cs:12:13:12:49 | ...; | -| cflow.cs:14:9:17:9 | while (...) ... | cflow.cs:5:17:5:20 | exit Main (normal) | -| cflow.cs:14:9:17:9 | while (...) ... | cflow.cs:14:9:17:9 | while (...) ... | -| cflow.cs:14:9:17:9 | while (...) ... | cflow.cs:14:16:14:16 | access to local variable a | -| cflow.cs:14:9:17:9 | while (...) ... | cflow.cs:15:9:17:9 | {...} | -| cflow.cs:14:9:17:9 | while (...) ... | cflow.cs:19:9:22:25 | do ... while (...); | -| cflow.cs:14:9:17:9 | while (...) ... | cflow.cs:20:9:22:9 | {...} | -| cflow.cs:14:9:17:9 | while (...) ... | cflow.cs:24:9:34:9 | for (...;...;...) ... | -| cflow.cs:14:9:17:9 | while (...) ... | cflow.cs:24:25:24:25 | access to local variable i | -| cflow.cs:14:9:17:9 | while (...) ... | cflow.cs:24:34:24:34 | access to local variable i | -| cflow.cs:14:9:17:9 | while (...) ... | cflow.cs:25:9:34:9 | {...} | -| cflow.cs:14:9:17:9 | while (...) ... | cflow.cs:26:17:26:40 | [false] ... && ... | -| cflow.cs:14:9:17:9 | while (...) ... | cflow.cs:26:17:26:40 | [true] ... && ... | -| cflow.cs:14:9:17:9 | while (...) ... | cflow.cs:26:31:26:31 | access to local variable i | -| cflow.cs:14:9:17:9 | while (...) ... | cflow.cs:27:17:27:46 | ...; | -| cflow.cs:14:9:17:9 | while (...) ... | cflow.cs:28:18:33:37 | if (...) ... | -| cflow.cs:14:9:17:9 | while (...) ... | cflow.cs:29:17:29:42 | ...; | -| cflow.cs:14:9:17:9 | while (...) ... | cflow.cs:30:18:33:37 | if (...) ... | -| cflow.cs:14:9:17:9 | while (...) ... | cflow.cs:31:17:31:42 | ...; | -| cflow.cs:14:9:17:9 | while (...) ... | cflow.cs:33:17:33:37 | ...; | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:5:17:5:20 | exit Main (normal) | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:14:16:14:16 | access to local variable a | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:15:9:17:9 | {...} | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:19:9:22:25 | do ... while (...); | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:20:9:22:9 | {...} | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:24:9:34:9 | for (...;...;...) ... | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:24:25:24:25 | access to local variable i | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:24:34:24:34 | access to local variable i | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:25:9:34:9 | {...} | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:26:17:26:40 | [false] ... && ... | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:26:17:26:40 | [true] ... && ... | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:26:31:26:31 | access to local variable i | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:27:17:27:46 | ...; | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:28:18:33:37 | if (...) ... | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:29:17:29:42 | ...; | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:30:18:33:37 | if (...) ... | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:31:17:31:42 | ...; | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:33:17:33:37 | ...; | -| cflow.cs:15:9:17:9 | {...} | cflow.cs:15:9:17:9 | {...} | -| cflow.cs:19:9:22:25 | do ... while (...); | cflow.cs:5:17:5:20 | exit Main (normal) | -| cflow.cs:19:9:22:25 | do ... while (...); | cflow.cs:19:9:22:25 | do ... while (...); | -| cflow.cs:19:9:22:25 | do ... while (...); | cflow.cs:20:9:22:9 | {...} | -| cflow.cs:19:9:22:25 | do ... while (...); | cflow.cs:24:9:34:9 | for (...;...;...) ... | -| cflow.cs:19:9:22:25 | do ... while (...); | cflow.cs:24:25:24:25 | access to local variable i | -| cflow.cs:19:9:22:25 | do ... while (...); | cflow.cs:24:34:24:34 | access to local variable i | -| cflow.cs:19:9:22:25 | do ... while (...); | cflow.cs:25:9:34:9 | {...} | -| cflow.cs:19:9:22:25 | do ... while (...); | cflow.cs:26:17:26:40 | [false] ... && ... | -| cflow.cs:19:9:22:25 | do ... while (...); | cflow.cs:26:17:26:40 | [true] ... && ... | -| cflow.cs:19:9:22:25 | do ... while (...); | cflow.cs:26:31:26:31 | access to local variable i | -| cflow.cs:19:9:22:25 | do ... while (...); | cflow.cs:27:17:27:46 | ...; | -| cflow.cs:19:9:22:25 | do ... while (...); | cflow.cs:28:18:33:37 | if (...) ... | -| cflow.cs:19:9:22:25 | do ... while (...); | cflow.cs:29:17:29:42 | ...; | -| cflow.cs:19:9:22:25 | do ... while (...); | cflow.cs:30:18:33:37 | if (...) ... | -| cflow.cs:19:9:22:25 | do ... while (...); | cflow.cs:31:17:31:42 | ...; | -| cflow.cs:19:9:22:25 | do ... while (...); | cflow.cs:33:17:33:37 | ...; | -| cflow.cs:20:9:22:9 | {...} | cflow.cs:5:17:5:20 | exit Main (normal) | +| Switch.cs:171:18:171:18 | After 3 [match] | Switch.cs:171:18:171:18 | After 3 [match] | +| Switch.cs:171:18:171:18 | After 3 [no-match] | Switch.cs:171:18:171:18 | After 3 [no-match] | +| TypeAccesses.cs:1:7:1:18 | Entry | TypeAccesses.cs:1:7:1:18 | Entry | +| TypeAccesses.cs:3:10:3:10 | Entry | TypeAccesses.cs:3:10:3:10 | Entry | +| TypeAccesses.cs:3:10:3:10 | Entry | TypeAccesses.cs:7:9:7:25 | After if (...) ... | +| TypeAccesses.cs:3:10:3:10 | Entry | TypeAccesses.cs:7:13:7:22 | After ... is ... [false] | +| TypeAccesses.cs:3:10:3:10 | Entry | TypeAccesses.cs:7:13:7:22 | [MatchTrue] ... is ... | +| TypeAccesses.cs:7:9:7:25 | After if (...) ... | TypeAccesses.cs:7:9:7:25 | After if (...) ... | +| TypeAccesses.cs:7:13:7:22 | After ... is ... [false] | TypeAccesses.cs:7:13:7:22 | After ... is ... [false] | +| TypeAccesses.cs:7:13:7:22 | [MatchTrue] ... is ... | TypeAccesses.cs:7:13:7:22 | [MatchTrue] ... is ... | +| VarDecls.cs:3:7:3:14 | Entry | VarDecls.cs:3:7:3:14 | Entry | +| VarDecls.cs:5:18:5:19 | Entry | VarDecls.cs:5:18:5:19 | Entry | +| VarDecls.cs:13:12:13:13 | Entry | VarDecls.cs:13:12:13:13 | Entry | +| VarDecls.cs:19:7:19:8 | Entry | VarDecls.cs:19:7:19:8 | Entry | +| VarDecls.cs:19:7:19:8 | Entry | VarDecls.cs:25:20:25:20 | After access to parameter b [false] | +| VarDecls.cs:19:7:19:8 | Entry | VarDecls.cs:25:20:25:20 | After access to parameter b [true] | +| VarDecls.cs:19:7:19:8 | Entry | VarDecls.cs:25:20:25:28 | After ... ? ... : ... | +| VarDecls.cs:25:20:25:20 | After access to parameter b [false] | VarDecls.cs:25:20:25:20 | After access to parameter b [false] | +| VarDecls.cs:25:20:25:20 | After access to parameter b [true] | VarDecls.cs:25:20:25:20 | After access to parameter b [true] | +| VarDecls.cs:25:20:25:28 | After ... ? ... : ... | VarDecls.cs:25:20:25:28 | After ... ? ... : ... | +| VarDecls.cs:28:11:28:11 | Entry | VarDecls.cs:28:11:28:11 | Entry | +| VarDecls.cs:28:41:28:47 | Entry | VarDecls.cs:28:41:28:47 | Entry | +| cflow.cs:5:17:5:20 | Entry | cflow.cs:5:17:5:20 | Entry | +| cflow.cs:5:17:5:20 | Entry | cflow.cs:11:9:12:49 | After if (...) ... | +| cflow.cs:5:17:5:20 | Entry | cflow.cs:11:13:11:17 | After ... > ... [false] | +| cflow.cs:5:17:5:20 | Entry | cflow.cs:11:13:11:17 | After ... > ... [true] | +| cflow.cs:5:17:5:20 | Entry | cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | +| cflow.cs:5:17:5:20 | Entry | cflow.cs:14:16:14:20 | After ... > ... [false] | +| cflow.cs:5:17:5:20 | Entry | cflow.cs:14:16:14:20 | After ... > ... [true] | +| cflow.cs:5:17:5:20 | Entry | cflow.cs:20:9:22:9 | {...} | +| cflow.cs:5:17:5:20 | Entry | cflow.cs:22:18:22:23 | After ... < ... [false] | +| cflow.cs:5:17:5:20 | Entry | cflow.cs:22:18:22:23 | After ... < ... [true] | +| cflow.cs:5:17:5:20 | Entry | cflow.cs:24:25:24:31 | After ... <= ... [false] | +| cflow.cs:5:17:5:20 | Entry | cflow.cs:24:25:24:31 | After ... <= ... [true] | +| cflow.cs:5:17:5:20 | Entry | cflow.cs:24:25:24:31 | Before ... <= ... | +| cflow.cs:5:17:5:20 | Entry | cflow.cs:26:13:33:37 | After if (...) ... | +| cflow.cs:5:17:5:20 | Entry | cflow.cs:26:17:26:26 | After ... == ... [false] | +| cflow.cs:5:17:5:20 | Entry | cflow.cs:26:17:26:26 | After ... == ... [true] | +| cflow.cs:5:17:5:20 | Entry | cflow.cs:26:17:26:40 | After ... && ... [false] | +| cflow.cs:5:17:5:20 | Entry | cflow.cs:26:31:26:40 | After ... == ... [false] | +| cflow.cs:5:17:5:20 | Entry | cflow.cs:26:31:26:40 | After ... == ... [true] | +| cflow.cs:5:17:5:20 | Entry | cflow.cs:28:18:33:37 | After if (...) ... | +| cflow.cs:5:17:5:20 | Entry | cflow.cs:28:22:28:31 | After ... == ... [false] | +| cflow.cs:5:17:5:20 | Entry | cflow.cs:28:22:28:31 | After ... == ... [true] | +| cflow.cs:5:17:5:20 | Entry | cflow.cs:30:18:33:37 | After if (...) ... | +| cflow.cs:5:17:5:20 | Entry | cflow.cs:30:22:30:31 | After ... == ... [false] | +| cflow.cs:5:17:5:20 | Entry | cflow.cs:30:22:30:31 | After ... == ... [true] | +| cflow.cs:11:9:12:49 | After if (...) ... | cflow.cs:11:9:12:49 | After if (...) ... | +| cflow.cs:11:9:12:49 | After if (...) ... | cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | +| cflow.cs:11:9:12:49 | After if (...) ... | cflow.cs:14:16:14:20 | After ... > ... [false] | +| cflow.cs:11:9:12:49 | After if (...) ... | cflow.cs:14:16:14:20 | After ... > ... [true] | +| cflow.cs:11:9:12:49 | After if (...) ... | cflow.cs:20:9:22:9 | {...} | +| cflow.cs:11:9:12:49 | After if (...) ... | cflow.cs:22:18:22:23 | After ... < ... [false] | +| cflow.cs:11:9:12:49 | After if (...) ... | cflow.cs:22:18:22:23 | After ... < ... [true] | +| cflow.cs:11:9:12:49 | After if (...) ... | cflow.cs:24:25:24:31 | After ... <= ... [false] | +| cflow.cs:11:9:12:49 | After if (...) ... | cflow.cs:24:25:24:31 | After ... <= ... [true] | +| cflow.cs:11:9:12:49 | After if (...) ... | cflow.cs:24:25:24:31 | Before ... <= ... | +| cflow.cs:11:9:12:49 | After if (...) ... | cflow.cs:26:13:33:37 | After if (...) ... | +| cflow.cs:11:9:12:49 | After if (...) ... | cflow.cs:26:17:26:26 | After ... == ... [false] | +| cflow.cs:11:9:12:49 | After if (...) ... | cflow.cs:26:17:26:26 | After ... == ... [true] | +| cflow.cs:11:9:12:49 | After if (...) ... | cflow.cs:26:17:26:40 | After ... && ... [false] | +| cflow.cs:11:9:12:49 | After if (...) ... | cflow.cs:26:31:26:40 | After ... == ... [false] | +| cflow.cs:11:9:12:49 | After if (...) ... | cflow.cs:26:31:26:40 | After ... == ... [true] | +| cflow.cs:11:9:12:49 | After if (...) ... | cflow.cs:28:18:33:37 | After if (...) ... | +| cflow.cs:11:9:12:49 | After if (...) ... | cflow.cs:28:22:28:31 | After ... == ... [false] | +| cflow.cs:11:9:12:49 | After if (...) ... | cflow.cs:28:22:28:31 | After ... == ... [true] | +| cflow.cs:11:9:12:49 | After if (...) ... | cflow.cs:30:18:33:37 | After if (...) ... | +| cflow.cs:11:9:12:49 | After if (...) ... | cflow.cs:30:22:30:31 | After ... == ... [false] | +| cflow.cs:11:9:12:49 | After if (...) ... | cflow.cs:30:22:30:31 | After ... == ... [true] | +| cflow.cs:11:13:11:17 | After ... > ... [false] | cflow.cs:11:13:11:17 | After ... > ... [false] | +| cflow.cs:11:13:11:17 | After ... > ... [true] | cflow.cs:11:13:11:17 | After ... > ... [true] | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:14:16:14:20 | After ... > ... [false] | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:14:16:14:20 | After ... > ... [true] | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:20:9:22:9 | {...} | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:22:18:22:23 | After ... < ... [false] | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:22:18:22:23 | After ... < ... [true] | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:24:25:24:31 | After ... <= ... [false] | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:24:25:24:31 | After ... <= ... [true] | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:24:25:24:31 | Before ... <= ... | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:26:13:33:37 | After if (...) ... | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:26:17:26:26 | After ... == ... [false] | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:26:17:26:26 | After ... == ... [true] | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:26:17:26:40 | After ... && ... [false] | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:26:31:26:40 | After ... == ... [false] | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:26:31:26:40 | After ... == ... [true] | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:28:18:33:37 | After if (...) ... | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:28:22:28:31 | After ... == ... [false] | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:28:22:28:31 | After ... == ... [true] | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:30:18:33:37 | After if (...) ... | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:30:22:30:31 | After ... == ... [false] | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:30:22:30:31 | After ... == ... [true] | +| cflow.cs:14:16:14:20 | After ... > ... [false] | cflow.cs:14:16:14:20 | After ... > ... [false] | +| cflow.cs:14:16:14:20 | After ... > ... [false] | cflow.cs:20:9:22:9 | {...} | +| cflow.cs:14:16:14:20 | After ... > ... [false] | cflow.cs:22:18:22:23 | After ... < ... [false] | +| cflow.cs:14:16:14:20 | After ... > ... [false] | cflow.cs:22:18:22:23 | After ... < ... [true] | +| cflow.cs:14:16:14:20 | After ... > ... [false] | cflow.cs:24:25:24:31 | After ... <= ... [false] | +| cflow.cs:14:16:14:20 | After ... > ... [false] | cflow.cs:24:25:24:31 | After ... <= ... [true] | +| cflow.cs:14:16:14:20 | After ... > ... [false] | cflow.cs:24:25:24:31 | Before ... <= ... | +| cflow.cs:14:16:14:20 | After ... > ... [false] | cflow.cs:26:13:33:37 | After if (...) ... | +| cflow.cs:14:16:14:20 | After ... > ... [false] | cflow.cs:26:17:26:26 | After ... == ... [false] | +| cflow.cs:14:16:14:20 | After ... > ... [false] | cflow.cs:26:17:26:26 | After ... == ... [true] | +| cflow.cs:14:16:14:20 | After ... > ... [false] | cflow.cs:26:17:26:40 | After ... && ... [false] | +| cflow.cs:14:16:14:20 | After ... > ... [false] | cflow.cs:26:31:26:40 | After ... == ... [false] | +| cflow.cs:14:16:14:20 | After ... > ... [false] | cflow.cs:26:31:26:40 | After ... == ... [true] | +| cflow.cs:14:16:14:20 | After ... > ... [false] | cflow.cs:28:18:33:37 | After if (...) ... | +| cflow.cs:14:16:14:20 | After ... > ... [false] | cflow.cs:28:22:28:31 | After ... == ... [false] | +| cflow.cs:14:16:14:20 | After ... > ... [false] | cflow.cs:28:22:28:31 | After ... == ... [true] | +| cflow.cs:14:16:14:20 | After ... > ... [false] | cflow.cs:30:18:33:37 | After if (...) ... | +| cflow.cs:14:16:14:20 | After ... > ... [false] | cflow.cs:30:22:30:31 | After ... == ... [false] | +| cflow.cs:14:16:14:20 | After ... > ... [false] | cflow.cs:30:22:30:31 | After ... == ... [true] | +| cflow.cs:14:16:14:20 | After ... > ... [true] | cflow.cs:14:16:14:20 | After ... > ... [true] | | cflow.cs:20:9:22:9 | {...} | cflow.cs:20:9:22:9 | {...} | -| cflow.cs:20:9:22:9 | {...} | cflow.cs:24:9:34:9 | for (...;...;...) ... | -| cflow.cs:20:9:22:9 | {...} | cflow.cs:24:25:24:25 | access to local variable i | -| cflow.cs:20:9:22:9 | {...} | cflow.cs:24:34:24:34 | access to local variable i | -| cflow.cs:20:9:22:9 | {...} | cflow.cs:25:9:34:9 | {...} | -| cflow.cs:20:9:22:9 | {...} | cflow.cs:26:17:26:40 | [false] ... && ... | -| cflow.cs:20:9:22:9 | {...} | cflow.cs:26:17:26:40 | [true] ... && ... | -| cflow.cs:20:9:22:9 | {...} | cflow.cs:26:31:26:31 | access to local variable i | -| cflow.cs:20:9:22:9 | {...} | cflow.cs:27:17:27:46 | ...; | -| cflow.cs:20:9:22:9 | {...} | cflow.cs:28:18:33:37 | if (...) ... | -| cflow.cs:20:9:22:9 | {...} | cflow.cs:29:17:29:42 | ...; | -| cflow.cs:20:9:22:9 | {...} | cflow.cs:30:18:33:37 | if (...) ... | -| cflow.cs:20:9:22:9 | {...} | cflow.cs:31:17:31:42 | ...; | -| cflow.cs:20:9:22:9 | {...} | cflow.cs:33:17:33:37 | ...; | -| cflow.cs:24:9:34:9 | for (...;...;...) ... | cflow.cs:5:17:5:20 | exit Main (normal) | -| cflow.cs:24:9:34:9 | for (...;...;...) ... | cflow.cs:24:9:34:9 | for (...;...;...) ... | -| cflow.cs:24:9:34:9 | for (...;...;...) ... | cflow.cs:24:25:24:25 | access to local variable i | -| cflow.cs:24:9:34:9 | for (...;...;...) ... | cflow.cs:24:34:24:34 | access to local variable i | -| cflow.cs:24:9:34:9 | for (...;...;...) ... | cflow.cs:25:9:34:9 | {...} | -| cflow.cs:24:9:34:9 | for (...;...;...) ... | cflow.cs:26:17:26:40 | [false] ... && ... | -| cflow.cs:24:9:34:9 | for (...;...;...) ... | cflow.cs:26:17:26:40 | [true] ... && ... | -| cflow.cs:24:9:34:9 | for (...;...;...) ... | cflow.cs:26:31:26:31 | access to local variable i | -| cflow.cs:24:9:34:9 | for (...;...;...) ... | cflow.cs:27:17:27:46 | ...; | -| cflow.cs:24:9:34:9 | for (...;...;...) ... | cflow.cs:28:18:33:37 | if (...) ... | -| cflow.cs:24:9:34:9 | for (...;...;...) ... | cflow.cs:29:17:29:42 | ...; | -| cflow.cs:24:9:34:9 | for (...;...;...) ... | cflow.cs:30:18:33:37 | if (...) ... | -| cflow.cs:24:9:34:9 | for (...;...;...) ... | cflow.cs:31:17:31:42 | ...; | -| cflow.cs:24:9:34:9 | for (...;...;...) ... | cflow.cs:33:17:33:37 | ...; | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:5:17:5:20 | exit Main (normal) | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:24:25:24:25 | access to local variable i | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:24:34:24:34 | access to local variable i | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:25:9:34:9 | {...} | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:26:17:26:40 | [false] ... && ... | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:26:17:26:40 | [true] ... && ... | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:26:31:26:31 | access to local variable i | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:27:17:27:46 | ...; | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:28:18:33:37 | if (...) ... | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:29:17:29:42 | ...; | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:30:18:33:37 | if (...) ... | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:31:17:31:42 | ...; | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:33:17:33:37 | ...; | -| cflow.cs:24:34:24:34 | access to local variable i | cflow.cs:24:34:24:34 | access to local variable i | -| cflow.cs:25:9:34:9 | {...} | cflow.cs:24:34:24:34 | access to local variable i | -| cflow.cs:25:9:34:9 | {...} | cflow.cs:25:9:34:9 | {...} | -| cflow.cs:25:9:34:9 | {...} | cflow.cs:26:17:26:40 | [false] ... && ... | -| cflow.cs:25:9:34:9 | {...} | cflow.cs:26:17:26:40 | [true] ... && ... | -| cflow.cs:25:9:34:9 | {...} | cflow.cs:26:31:26:31 | access to local variable i | -| cflow.cs:25:9:34:9 | {...} | cflow.cs:27:17:27:46 | ...; | -| cflow.cs:25:9:34:9 | {...} | cflow.cs:28:18:33:37 | if (...) ... | -| cflow.cs:25:9:34:9 | {...} | cflow.cs:29:17:29:42 | ...; | -| cflow.cs:25:9:34:9 | {...} | cflow.cs:30:18:33:37 | if (...) ... | -| cflow.cs:25:9:34:9 | {...} | cflow.cs:31:17:31:42 | ...; | -| cflow.cs:25:9:34:9 | {...} | cflow.cs:33:17:33:37 | ...; | -| cflow.cs:26:17:26:40 | [false] ... && ... | cflow.cs:26:17:26:40 | [false] ... && ... | -| cflow.cs:26:17:26:40 | [false] ... && ... | cflow.cs:28:18:33:37 | if (...) ... | -| cflow.cs:26:17:26:40 | [false] ... && ... | cflow.cs:29:17:29:42 | ...; | -| cflow.cs:26:17:26:40 | [false] ... && ... | cflow.cs:30:18:33:37 | if (...) ... | -| cflow.cs:26:17:26:40 | [false] ... && ... | cflow.cs:31:17:31:42 | ...; | -| cflow.cs:26:17:26:40 | [false] ... && ... | cflow.cs:33:17:33:37 | ...; | -| cflow.cs:26:17:26:40 | [true] ... && ... | cflow.cs:26:17:26:40 | [true] ... && ... | -| cflow.cs:26:17:26:40 | [true] ... && ... | cflow.cs:27:17:27:46 | ...; | -| cflow.cs:26:31:26:31 | access to local variable i | cflow.cs:26:17:26:40 | [true] ... && ... | -| cflow.cs:26:31:26:31 | access to local variable i | cflow.cs:26:31:26:31 | access to local variable i | -| cflow.cs:26:31:26:31 | access to local variable i | cflow.cs:27:17:27:46 | ...; | -| cflow.cs:27:17:27:46 | ...; | cflow.cs:27:17:27:46 | ...; | -| cflow.cs:28:18:33:37 | if (...) ... | cflow.cs:28:18:33:37 | if (...) ... | -| cflow.cs:28:18:33:37 | if (...) ... | cflow.cs:29:17:29:42 | ...; | -| cflow.cs:28:18:33:37 | if (...) ... | cflow.cs:30:18:33:37 | if (...) ... | -| cflow.cs:28:18:33:37 | if (...) ... | cflow.cs:31:17:31:42 | ...; | -| cflow.cs:28:18:33:37 | if (...) ... | cflow.cs:33:17:33:37 | ...; | -| cflow.cs:29:17:29:42 | ...; | cflow.cs:29:17:29:42 | ...; | -| cflow.cs:30:18:33:37 | if (...) ... | cflow.cs:30:18:33:37 | if (...) ... | -| cflow.cs:30:18:33:37 | if (...) ... | cflow.cs:31:17:31:42 | ...; | -| cflow.cs:30:18:33:37 | if (...) ... | cflow.cs:33:17:33:37 | ...; | -| cflow.cs:31:17:31:42 | ...; | cflow.cs:31:17:31:42 | ...; | -| cflow.cs:33:17:33:37 | ...; | cflow.cs:33:17:33:37 | ...; | -| cflow.cs:37:17:37:22 | enter Switch | cflow.cs:37:17:37:22 | enter Switch | -| cflow.cs:37:17:37:22 | enter Switch | cflow.cs:37:17:37:22 | exit Switch | -| cflow.cs:37:17:37:22 | enter Switch | cflow.cs:41:13:41:19 | case ...: | -| cflow.cs:37:17:37:22 | enter Switch | cflow.cs:42:17:42:39 | ...; | -| cflow.cs:37:17:37:22 | enter Switch | cflow.cs:44:13:44:19 | case ...: | -| cflow.cs:37:17:37:22 | enter Switch | cflow.cs:45:17:45:39 | ...; | -| cflow.cs:37:17:37:22 | enter Switch | cflow.cs:47:13:47:19 | case ...: | -| cflow.cs:37:17:37:22 | enter Switch | cflow.cs:48:17:48:39 | ...; | -| cflow.cs:37:17:37:22 | enter Switch | cflow.cs:51:9:59:9 | switch (...) {...} | -| cflow.cs:37:17:37:22 | enter Switch | cflow.cs:54:17:54:48 | ...; | -| cflow.cs:37:17:37:22 | enter Switch | cflow.cs:56:13:56:20 | default: | -| cflow.cs:37:17:37:22 | enter Switch | cflow.cs:60:9:66:9 | switch (...) {...} | -| cflow.cs:37:17:37:22 | enter Switch | cflow.cs:63:17:64:55 | if (...) ... | -| cflow.cs:37:17:37:22 | enter Switch | cflow.cs:63:21:63:34 | [false] !... | -| cflow.cs:37:17:37:22 | enter Switch | cflow.cs:63:21:63:34 | [true] !... | -| cflow.cs:37:17:37:22 | enter Switch | cflow.cs:64:27:64:54 | object creation of type NullReferenceException | -| cflow.cs:37:17:37:22 | enter Switch | cflow.cs:65:17:65:22 | break; | -| cflow.cs:37:17:37:22 | enter Switch | cflow.cs:67:16:67:16 | access to parameter a | -| cflow.cs:37:17:37:22 | exit Switch | cflow.cs:37:17:37:22 | exit Switch | -| cflow.cs:41:13:41:19 | case ...: | cflow.cs:37:17:37:22 | exit Switch | -| cflow.cs:41:13:41:19 | case ...: | cflow.cs:41:13:41:19 | case ...: | -| cflow.cs:41:13:41:19 | case ...: | cflow.cs:42:17:42:39 | ...; | -| cflow.cs:41:13:41:19 | case ...: | cflow.cs:44:13:44:19 | case ...: | -| cflow.cs:41:13:41:19 | case ...: | cflow.cs:45:17:45:39 | ...; | -| cflow.cs:41:13:41:19 | case ...: | cflow.cs:47:13:47:19 | case ...: | -| cflow.cs:41:13:41:19 | case ...: | cflow.cs:48:17:48:39 | ...; | -| cflow.cs:41:13:41:19 | case ...: | cflow.cs:51:9:59:9 | switch (...) {...} | -| cflow.cs:41:13:41:19 | case ...: | cflow.cs:54:17:54:48 | ...; | -| cflow.cs:41:13:41:19 | case ...: | cflow.cs:56:13:56:20 | default: | -| cflow.cs:41:13:41:19 | case ...: | cflow.cs:60:9:66:9 | switch (...) {...} | -| cflow.cs:41:13:41:19 | case ...: | cflow.cs:63:17:64:55 | if (...) ... | -| cflow.cs:41:13:41:19 | case ...: | cflow.cs:63:21:63:34 | [false] !... | -| cflow.cs:41:13:41:19 | case ...: | cflow.cs:63:21:63:34 | [true] !... | -| cflow.cs:41:13:41:19 | case ...: | cflow.cs:64:27:64:54 | object creation of type NullReferenceException | -| cflow.cs:41:13:41:19 | case ...: | cflow.cs:65:17:65:22 | break; | -| cflow.cs:41:13:41:19 | case ...: | cflow.cs:67:16:67:16 | access to parameter a | -| cflow.cs:42:17:42:39 | ...; | cflow.cs:42:17:42:39 | ...; | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:37:17:37:22 | exit Switch | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:44:13:44:19 | case ...: | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:45:17:45:39 | ...; | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:47:13:47:19 | case ...: | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:48:17:48:39 | ...; | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:51:9:59:9 | switch (...) {...} | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:54:17:54:48 | ...; | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:56:13:56:20 | default: | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:60:9:66:9 | switch (...) {...} | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:63:17:64:55 | if (...) ... | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:63:21:63:34 | [false] !... | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:63:21:63:34 | [true] !... | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:64:27:64:54 | object creation of type NullReferenceException | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:65:17:65:22 | break; | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:67:16:67:16 | access to parameter a | -| cflow.cs:45:17:45:39 | ...; | cflow.cs:45:17:45:39 | ...; | -| cflow.cs:47:13:47:19 | case ...: | cflow.cs:37:17:37:22 | exit Switch | -| cflow.cs:47:13:47:19 | case ...: | cflow.cs:47:13:47:19 | case ...: | -| cflow.cs:47:13:47:19 | case ...: | cflow.cs:48:17:48:39 | ...; | -| cflow.cs:47:13:47:19 | case ...: | cflow.cs:51:9:59:9 | switch (...) {...} | -| cflow.cs:47:13:47:19 | case ...: | cflow.cs:54:17:54:48 | ...; | -| cflow.cs:47:13:47:19 | case ...: | cflow.cs:56:13:56:20 | default: | -| cflow.cs:47:13:47:19 | case ...: | cflow.cs:60:9:66:9 | switch (...) {...} | -| cflow.cs:47:13:47:19 | case ...: | cflow.cs:63:17:64:55 | if (...) ... | -| cflow.cs:47:13:47:19 | case ...: | cflow.cs:63:21:63:34 | [false] !... | -| cflow.cs:47:13:47:19 | case ...: | cflow.cs:63:21:63:34 | [true] !... | -| cflow.cs:47:13:47:19 | case ...: | cflow.cs:64:27:64:54 | object creation of type NullReferenceException | -| cflow.cs:47:13:47:19 | case ...: | cflow.cs:65:17:65:22 | break; | -| cflow.cs:47:13:47:19 | case ...: | cflow.cs:67:16:67:16 | access to parameter a | -| cflow.cs:48:17:48:39 | ...; | cflow.cs:48:17:48:39 | ...; | -| cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:37:17:37:22 | exit Switch | -| cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:51:9:59:9 | switch (...) {...} | -| cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:54:17:54:48 | ...; | -| cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:56:13:56:20 | default: | -| cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:60:9:66:9 | switch (...) {...} | -| cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:63:17:64:55 | if (...) ... | -| cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:63:21:63:34 | [false] !... | -| cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:63:21:63:34 | [true] !... | -| cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:64:27:64:54 | object creation of type NullReferenceException | -| cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:65:17:65:22 | break; | -| cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:67:16:67:16 | access to parameter a | -| cflow.cs:54:17:54:48 | ...; | cflow.cs:54:17:54:48 | ...; | -| cflow.cs:56:13:56:20 | default: | cflow.cs:56:13:56:20 | default: | -| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:37:17:37:22 | exit Switch | -| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:60:9:66:9 | switch (...) {...} | -| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:63:17:64:55 | if (...) ... | -| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:63:21:63:34 | [false] !... | -| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:63:21:63:34 | [true] !... | -| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:64:27:64:54 | object creation of type NullReferenceException | -| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:65:17:65:22 | break; | -| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:67:16:67:16 | access to parameter a | -| cflow.cs:63:17:64:55 | if (...) ... | cflow.cs:63:17:64:55 | if (...) ... | -| cflow.cs:63:17:64:55 | if (...) ... | cflow.cs:63:21:63:34 | [false] !... | -| cflow.cs:63:17:64:55 | if (...) ... | cflow.cs:63:21:63:34 | [true] !... | -| cflow.cs:63:17:64:55 | if (...) ... | cflow.cs:64:27:64:54 | object creation of type NullReferenceException | -| cflow.cs:63:17:64:55 | if (...) ... | cflow.cs:65:17:65:22 | break; | -| cflow.cs:63:21:63:34 | [false] !... | cflow.cs:63:21:63:34 | [false] !... | -| cflow.cs:63:21:63:34 | [false] !... | cflow.cs:65:17:65:22 | break; | -| cflow.cs:63:21:63:34 | [true] !... | cflow.cs:63:21:63:34 | [true] !... | -| cflow.cs:63:21:63:34 | [true] !... | cflow.cs:64:27:64:54 | object creation of type NullReferenceException | -| cflow.cs:64:27:64:54 | object creation of type NullReferenceException | cflow.cs:64:27:64:54 | object creation of type NullReferenceException | -| cflow.cs:65:17:65:22 | break; | cflow.cs:65:17:65:22 | break; | -| cflow.cs:67:16:67:16 | access to parameter a | cflow.cs:67:16:67:16 | access to parameter a | -| cflow.cs:70:18:70:18 | enter M | cflow.cs:70:18:70:18 | enter M | -| cflow.cs:70:18:70:18 | enter M | cflow.cs:70:18:70:18 | exit M (normal) | -| cflow.cs:70:18:70:18 | enter M | cflow.cs:73:13:73:19 | return ...; | -| cflow.cs:70:18:70:18 | enter M | cflow.cs:74:9:81:9 | if (...) ... | -| cflow.cs:70:18:70:18 | enter M | cflow.cs:75:9:77:9 | {...} | -| cflow.cs:70:18:70:18 | enter M | cflow.cs:79:9:81:9 | {...} | -| cflow.cs:70:18:70:18 | exit M (normal) | cflow.cs:70:18:70:18 | exit M (normal) | -| cflow.cs:73:13:73:19 | return ...; | cflow.cs:73:13:73:19 | return ...; | -| cflow.cs:74:9:81:9 | if (...) ... | cflow.cs:74:9:81:9 | if (...) ... | -| cflow.cs:74:9:81:9 | if (...) ... | cflow.cs:75:9:77:9 | {...} | -| cflow.cs:74:9:81:9 | if (...) ... | cflow.cs:79:9:81:9 | {...} | -| cflow.cs:75:9:77:9 | {...} | cflow.cs:75:9:77:9 | {...} | -| cflow.cs:79:9:81:9 | {...} | cflow.cs:79:9:81:9 | {...} | -| cflow.cs:84:18:84:19 | enter M2 | cflow.cs:84:18:84:19 | enter M2 | -| cflow.cs:84:18:84:19 | enter M2 | cflow.cs:84:18:84:19 | exit M2 (normal) | -| cflow.cs:84:18:84:19 | enter M2 | cflow.cs:86:13:86:37 | [false] ... && ... | -| cflow.cs:84:18:84:19 | enter M2 | cflow.cs:86:13:86:37 | [true] ... && ... | -| cflow.cs:84:18:84:19 | enter M2 | cflow.cs:86:26:86:26 | access to parameter s | -| cflow.cs:84:18:84:19 | enter M2 | cflow.cs:87:13:87:33 | ...; | -| cflow.cs:84:18:84:19 | exit M2 (normal) | cflow.cs:84:18:84:19 | exit M2 (normal) | -| cflow.cs:86:13:86:37 | [false] ... && ... | cflow.cs:86:13:86:37 | [false] ... && ... | -| cflow.cs:86:13:86:37 | [true] ... && ... | cflow.cs:86:13:86:37 | [true] ... && ... | -| cflow.cs:86:13:86:37 | [true] ... && ... | cflow.cs:87:13:87:33 | ...; | -| cflow.cs:86:26:86:26 | access to parameter s | cflow.cs:86:13:86:37 | [true] ... && ... | -| cflow.cs:86:26:86:26 | access to parameter s | cflow.cs:86:26:86:26 | access to parameter s | -| cflow.cs:86:26:86:26 | access to parameter s | cflow.cs:87:13:87:33 | ...; | -| cflow.cs:87:13:87:33 | ...; | cflow.cs:87:13:87:33 | ...; | -| cflow.cs:90:18:90:19 | enter M3 | cflow.cs:90:18:90:19 | enter M3 | -| cflow.cs:90:18:90:19 | enter M3 | cflow.cs:90:18:90:19 | exit M3 | -| cflow.cs:90:18:90:19 | enter M3 | cflow.cs:90:18:90:19 | exit M3 (normal) | -| cflow.cs:90:18:90:19 | enter M3 | cflow.cs:93:45:93:47 | "s" | -| cflow.cs:90:18:90:19 | enter M3 | cflow.cs:94:9:94:29 | ...; | -| cflow.cs:90:18:90:19 | enter M3 | cflow.cs:97:13:97:55 | ...; | -| cflow.cs:90:18:90:19 | enter M3 | cflow.cs:99:9:100:42 | if (...) ... | -| cflow.cs:90:18:90:19 | enter M3 | cflow.cs:100:13:100:42 | ...; | -| cflow.cs:90:18:90:19 | enter M3 | cflow.cs:102:9:103:36 | if (...) ... | -| cflow.cs:90:18:90:19 | enter M3 | cflow.cs:103:13:103:36 | ...; | -| cflow.cs:90:18:90:19 | exit M3 | cflow.cs:90:18:90:19 | exit M3 | -| cflow.cs:90:18:90:19 | exit M3 (normal) | cflow.cs:90:18:90:19 | exit M3 (normal) | -| cflow.cs:93:45:93:47 | "s" | cflow.cs:93:45:93:47 | "s" | -| cflow.cs:94:9:94:29 | ...; | cflow.cs:90:18:90:19 | exit M3 (normal) | -| cflow.cs:94:9:94:29 | ...; | cflow.cs:94:9:94:29 | ...; | -| cflow.cs:94:9:94:29 | ...; | cflow.cs:97:13:97:55 | ...; | -| cflow.cs:94:9:94:29 | ...; | cflow.cs:99:9:100:42 | if (...) ... | -| cflow.cs:94:9:94:29 | ...; | cflow.cs:100:13:100:42 | ...; | -| cflow.cs:94:9:94:29 | ...; | cflow.cs:102:9:103:36 | if (...) ... | -| cflow.cs:94:9:94:29 | ...; | cflow.cs:103:13:103:36 | ...; | -| cflow.cs:97:13:97:55 | ...; | cflow.cs:97:13:97:55 | ...; | -| cflow.cs:99:9:100:42 | if (...) ... | cflow.cs:90:18:90:19 | exit M3 (normal) | -| cflow.cs:99:9:100:42 | if (...) ... | cflow.cs:99:9:100:42 | if (...) ... | -| cflow.cs:99:9:100:42 | if (...) ... | cflow.cs:100:13:100:42 | ...; | -| cflow.cs:99:9:100:42 | if (...) ... | cflow.cs:102:9:103:36 | if (...) ... | -| cflow.cs:99:9:100:42 | if (...) ... | cflow.cs:103:13:103:36 | ...; | -| cflow.cs:100:13:100:42 | ...; | cflow.cs:100:13:100:42 | ...; | -| cflow.cs:102:9:103:36 | if (...) ... | cflow.cs:90:18:90:19 | exit M3 (normal) | -| cflow.cs:102:9:103:36 | if (...) ... | cflow.cs:102:9:103:36 | if (...) ... | -| cflow.cs:102:9:103:36 | if (...) ... | cflow.cs:103:13:103:36 | ...; | -| cflow.cs:103:13:103:36 | ...; | cflow.cs:103:13:103:36 | ...; | -| cflow.cs:106:18:106:19 | enter M4 | cflow.cs:106:18:106:19 | enter M4 | -| cflow.cs:106:18:106:19 | enter M4 | cflow.cs:109:9:115:9 | {...} | -| cflow.cs:106:18:106:19 | enter M4 | cflow.cs:110:20:110:23 | true | -| cflow.cs:106:18:106:19 | enter M4 | cflow.cs:111:13:113:13 | {...} | -| cflow.cs:106:18:106:19 | enter M4 | cflow.cs:116:9:116:29 | ...; | -| cflow.cs:109:9:115:9 | {...} | cflow.cs:109:9:115:9 | {...} | -| cflow.cs:109:9:115:9 | {...} | cflow.cs:110:20:110:23 | true | -| cflow.cs:109:9:115:9 | {...} | cflow.cs:111:13:113:13 | {...} | -| cflow.cs:110:20:110:23 | true | cflow.cs:110:20:110:23 | true | -| cflow.cs:110:20:110:23 | true | cflow.cs:111:13:113:13 | {...} | -| cflow.cs:111:13:113:13 | {...} | cflow.cs:111:13:113:13 | {...} | -| cflow.cs:116:9:116:29 | ...; | cflow.cs:116:9:116:29 | ...; | -| cflow.cs:119:20:119:21 | enter M5 | cflow.cs:119:20:119:21 | enter M5 | -| cflow.cs:127:19:127:21 | enter get_Prop | cflow.cs:127:19:127:21 | enter get_Prop | -| cflow.cs:127:19:127:21 | enter get_Prop | cflow.cs:127:32:127:57 | ... ? ... : ... | -| cflow.cs:127:19:127:21 | enter get_Prop | cflow.cs:127:48:127:49 | "" | -| cflow.cs:127:19:127:21 | enter get_Prop | cflow.cs:127:53:127:57 | this access | -| cflow.cs:127:32:127:57 | ... ? ... : ... | cflow.cs:127:32:127:57 | ... ? ... : ... | -| cflow.cs:127:48:127:49 | "" | cflow.cs:127:48:127:49 | "" | -| cflow.cs:127:53:127:57 | this access | cflow.cs:127:53:127:57 | this access | -| cflow.cs:127:62:127:64 | enter set_Prop | cflow.cs:127:62:127:64 | enter set_Prop | -| cflow.cs:129:5:129:15 | enter ControlFlow | cflow.cs:129:5:129:15 | enter ControlFlow | -| cflow.cs:134:5:134:15 | enter ControlFlow | cflow.cs:134:5:134:15 | enter ControlFlow | -| cflow.cs:136:12:136:22 | enter ControlFlow | cflow.cs:136:12:136:22 | enter ControlFlow | -| cflow.cs:138:40:138:40 | enter + | cflow.cs:138:40:138:40 | enter + | -| cflow.cs:144:33:144:35 | enter get_Item | cflow.cs:144:33:144:35 | enter get_Item | -| cflow.cs:144:56:144:58 | enter set_Item | cflow.cs:144:56:144:58 | enter set_Item | -| cflow.cs:146:10:146:12 | enter For | cflow.cs:146:10:146:12 | enter For | -| cflow.cs:146:10:146:12 | enter For | cflow.cs:146:10:146:12 | exit For (normal) | -| cflow.cs:146:10:146:12 | enter For | cflow.cs:149:16:149:16 | access to local variable x | -| cflow.cs:146:10:146:12 | enter For | cflow.cs:150:13:150:33 | ...; | -| cflow.cs:146:10:146:12 | enter For | cflow.cs:152:9:157:9 | for (...;...;...) ... | -| cflow.cs:146:10:146:12 | enter For | cflow.cs:152:18:152:18 | access to local variable x | -| cflow.cs:146:10:146:12 | enter For | cflow.cs:153:9:157:9 | {...} | -| cflow.cs:146:10:146:12 | enter For | cflow.cs:156:17:156:22 | break; | -| cflow.cs:146:10:146:12 | enter For | cflow.cs:160:9:165:9 | {...} | -| cflow.cs:146:10:146:12 | enter For | cflow.cs:164:17:164:22 | break; | -| cflow.cs:146:10:146:12 | enter For | cflow.cs:167:16:167:16 | access to local variable x | -| cflow.cs:146:10:146:12 | enter For | cflow.cs:168:9:171:9 | {...} | -| cflow.cs:146:10:146:12 | enter For | cflow.cs:173:9:176:9 | for (...;...;...) ... | -| cflow.cs:146:10:146:12 | enter For | cflow.cs:173:32:173:32 | access to local variable i | -| cflow.cs:146:10:146:12 | enter For | cflow.cs:174:9:176:9 | {...} | -| cflow.cs:146:10:146:12 | exit For (normal) | cflow.cs:146:10:146:12 | exit For (normal) | -| cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:146:10:146:12 | exit For (normal) | -| cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:149:16:149:16 | access to local variable x | -| cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:150:13:150:33 | ...; | -| cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:152:9:157:9 | for (...;...;...) ... | -| cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:152:18:152:18 | access to local variable x | -| cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:153:9:157:9 | {...} | -| cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:156:17:156:22 | break; | -| cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:160:9:165:9 | {...} | -| cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:164:17:164:22 | break; | -| cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:167:16:167:16 | access to local variable x | -| cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:168:9:171:9 | {...} | -| cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:173:9:176:9 | for (...;...;...) ... | -| cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:173:32:173:32 | access to local variable i | -| cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:174:9:176:9 | {...} | -| cflow.cs:150:13:150:33 | ...; | cflow.cs:150:13:150:33 | ...; | -| cflow.cs:152:9:157:9 | for (...;...;...) ... | cflow.cs:146:10:146:12 | exit For (normal) | -| cflow.cs:152:9:157:9 | for (...;...;...) ... | cflow.cs:152:9:157:9 | for (...;...;...) ... | -| cflow.cs:152:9:157:9 | for (...;...;...) ... | cflow.cs:152:18:152:18 | access to local variable x | -| cflow.cs:152:9:157:9 | for (...;...;...) ... | cflow.cs:153:9:157:9 | {...} | -| cflow.cs:152:9:157:9 | for (...;...;...) ... | cflow.cs:156:17:156:22 | break; | -| cflow.cs:152:9:157:9 | for (...;...;...) ... | cflow.cs:160:9:165:9 | {...} | -| cflow.cs:152:9:157:9 | for (...;...;...) ... | cflow.cs:164:17:164:22 | break; | -| cflow.cs:152:9:157:9 | for (...;...;...) ... | cflow.cs:167:16:167:16 | access to local variable x | -| cflow.cs:152:9:157:9 | for (...;...;...) ... | cflow.cs:168:9:171:9 | {...} | -| cflow.cs:152:9:157:9 | for (...;...;...) ... | cflow.cs:173:9:176:9 | for (...;...;...) ... | -| cflow.cs:152:9:157:9 | for (...;...;...) ... | cflow.cs:173:32:173:32 | access to local variable i | -| cflow.cs:152:9:157:9 | for (...;...;...) ... | cflow.cs:174:9:176:9 | {...} | -| cflow.cs:152:18:152:18 | access to local variable x | cflow.cs:152:18:152:18 | access to local variable x | -| cflow.cs:153:9:157:9 | {...} | cflow.cs:146:10:146:12 | exit For (normal) | -| cflow.cs:153:9:157:9 | {...} | cflow.cs:152:18:152:18 | access to local variable x | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:22:18:22:23 | After ... < ... [false] | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:22:18:22:23 | After ... < ... [true] | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:24:25:24:31 | After ... <= ... [false] | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:24:25:24:31 | After ... <= ... [true] | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:24:25:24:31 | Before ... <= ... | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:26:13:33:37 | After if (...) ... | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:26:17:26:26 | After ... == ... [false] | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:26:17:26:26 | After ... == ... [true] | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:26:17:26:40 | After ... && ... [false] | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:26:31:26:40 | After ... == ... [false] | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:26:31:26:40 | After ... == ... [true] | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:28:18:33:37 | After if (...) ... | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:28:22:28:31 | After ... == ... [false] | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:28:22:28:31 | After ... == ... [true] | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:30:18:33:37 | After if (...) ... | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:30:22:30:31 | After ... == ... [false] | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:30:22:30:31 | After ... == ... [true] | +| cflow.cs:22:18:22:23 | After ... < ... [false] | cflow.cs:22:18:22:23 | After ... < ... [false] | +| cflow.cs:22:18:22:23 | After ... < ... [false] | cflow.cs:24:25:24:31 | After ... <= ... [false] | +| cflow.cs:22:18:22:23 | After ... < ... [false] | cflow.cs:24:25:24:31 | After ... <= ... [true] | +| cflow.cs:22:18:22:23 | After ... < ... [false] | cflow.cs:24:25:24:31 | Before ... <= ... | +| cflow.cs:22:18:22:23 | After ... < ... [false] | cflow.cs:26:13:33:37 | After if (...) ... | +| cflow.cs:22:18:22:23 | After ... < ... [false] | cflow.cs:26:17:26:26 | After ... == ... [false] | +| cflow.cs:22:18:22:23 | After ... < ... [false] | cflow.cs:26:17:26:26 | After ... == ... [true] | +| cflow.cs:22:18:22:23 | After ... < ... [false] | cflow.cs:26:17:26:40 | After ... && ... [false] | +| cflow.cs:22:18:22:23 | After ... < ... [false] | cflow.cs:26:31:26:40 | After ... == ... [false] | +| cflow.cs:22:18:22:23 | After ... < ... [false] | cflow.cs:26:31:26:40 | After ... == ... [true] | +| cflow.cs:22:18:22:23 | After ... < ... [false] | cflow.cs:28:18:33:37 | After if (...) ... | +| cflow.cs:22:18:22:23 | After ... < ... [false] | cflow.cs:28:22:28:31 | After ... == ... [false] | +| cflow.cs:22:18:22:23 | After ... < ... [false] | cflow.cs:28:22:28:31 | After ... == ... [true] | +| cflow.cs:22:18:22:23 | After ... < ... [false] | cflow.cs:30:18:33:37 | After if (...) ... | +| cflow.cs:22:18:22:23 | After ... < ... [false] | cflow.cs:30:22:30:31 | After ... == ... [false] | +| cflow.cs:22:18:22:23 | After ... < ... [false] | cflow.cs:30:22:30:31 | After ... == ... [true] | +| cflow.cs:22:18:22:23 | After ... < ... [true] | cflow.cs:22:18:22:23 | After ... < ... [true] | +| cflow.cs:24:25:24:31 | After ... <= ... [false] | cflow.cs:24:25:24:31 | After ... <= ... [false] | +| cflow.cs:24:25:24:31 | After ... <= ... [true] | cflow.cs:24:25:24:31 | After ... <= ... [true] | +| cflow.cs:24:25:24:31 | After ... <= ... [true] | cflow.cs:26:13:33:37 | After if (...) ... | +| cflow.cs:24:25:24:31 | After ... <= ... [true] | cflow.cs:26:17:26:26 | After ... == ... [false] | +| cflow.cs:24:25:24:31 | After ... <= ... [true] | cflow.cs:26:17:26:26 | After ... == ... [true] | +| cflow.cs:24:25:24:31 | After ... <= ... [true] | cflow.cs:26:17:26:40 | After ... && ... [false] | +| cflow.cs:24:25:24:31 | After ... <= ... [true] | cflow.cs:26:31:26:40 | After ... == ... [false] | +| cflow.cs:24:25:24:31 | After ... <= ... [true] | cflow.cs:26:31:26:40 | After ... == ... [true] | +| cflow.cs:24:25:24:31 | After ... <= ... [true] | cflow.cs:28:18:33:37 | After if (...) ... | +| cflow.cs:24:25:24:31 | After ... <= ... [true] | cflow.cs:28:22:28:31 | After ... == ... [false] | +| cflow.cs:24:25:24:31 | After ... <= ... [true] | cflow.cs:28:22:28:31 | After ... == ... [true] | +| cflow.cs:24:25:24:31 | After ... <= ... [true] | cflow.cs:30:18:33:37 | After if (...) ... | +| cflow.cs:24:25:24:31 | After ... <= ... [true] | cflow.cs:30:22:30:31 | After ... == ... [false] | +| cflow.cs:24:25:24:31 | After ... <= ... [true] | cflow.cs:30:22:30:31 | After ... == ... [true] | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:24:25:24:31 | After ... <= ... [false] | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:24:25:24:31 | After ... <= ... [true] | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:24:25:24:31 | Before ... <= ... | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:26:13:33:37 | After if (...) ... | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:26:17:26:26 | After ... == ... [false] | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:26:17:26:26 | After ... == ... [true] | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:26:17:26:40 | After ... && ... [false] | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:26:31:26:40 | After ... == ... [false] | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:26:31:26:40 | After ... == ... [true] | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:28:18:33:37 | After if (...) ... | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:28:22:28:31 | After ... == ... [false] | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:28:22:28:31 | After ... == ... [true] | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:30:18:33:37 | After if (...) ... | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:30:22:30:31 | After ... == ... [false] | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:30:22:30:31 | After ... == ... [true] | +| cflow.cs:26:13:33:37 | After if (...) ... | cflow.cs:26:13:33:37 | After if (...) ... | +| cflow.cs:26:17:26:26 | After ... == ... [false] | cflow.cs:26:17:26:26 | After ... == ... [false] | +| cflow.cs:26:17:26:26 | After ... == ... [true] | cflow.cs:26:17:26:26 | After ... == ... [true] | +| cflow.cs:26:17:26:26 | After ... == ... [true] | cflow.cs:26:31:26:40 | After ... == ... [false] | +| cflow.cs:26:17:26:26 | After ... == ... [true] | cflow.cs:26:31:26:40 | After ... == ... [true] | +| cflow.cs:26:17:26:40 | After ... && ... [false] | cflow.cs:26:17:26:40 | After ... && ... [false] | +| cflow.cs:26:17:26:40 | After ... && ... [false] | cflow.cs:28:18:33:37 | After if (...) ... | +| cflow.cs:26:17:26:40 | After ... && ... [false] | cflow.cs:28:22:28:31 | After ... == ... [false] | +| cflow.cs:26:17:26:40 | After ... && ... [false] | cflow.cs:28:22:28:31 | After ... == ... [true] | +| cflow.cs:26:17:26:40 | After ... && ... [false] | cflow.cs:30:18:33:37 | After if (...) ... | +| cflow.cs:26:17:26:40 | After ... && ... [false] | cflow.cs:30:22:30:31 | After ... == ... [false] | +| cflow.cs:26:17:26:40 | After ... && ... [false] | cflow.cs:30:22:30:31 | After ... == ... [true] | +| cflow.cs:26:31:26:40 | After ... == ... [false] | cflow.cs:26:31:26:40 | After ... == ... [false] | +| cflow.cs:26:31:26:40 | After ... == ... [true] | cflow.cs:26:31:26:40 | After ... == ... [true] | +| cflow.cs:28:18:33:37 | After if (...) ... | cflow.cs:28:18:33:37 | After if (...) ... | +| cflow.cs:28:22:28:31 | After ... == ... [false] | cflow.cs:28:22:28:31 | After ... == ... [false] | +| cflow.cs:28:22:28:31 | After ... == ... [false] | cflow.cs:30:18:33:37 | After if (...) ... | +| cflow.cs:28:22:28:31 | After ... == ... [false] | cflow.cs:30:22:30:31 | After ... == ... [false] | +| cflow.cs:28:22:28:31 | After ... == ... [false] | cflow.cs:30:22:30:31 | After ... == ... [true] | +| cflow.cs:28:22:28:31 | After ... == ... [true] | cflow.cs:28:22:28:31 | After ... == ... [true] | +| cflow.cs:30:18:33:37 | After if (...) ... | cflow.cs:30:18:33:37 | After if (...) ... | +| cflow.cs:30:22:30:31 | After ... == ... [false] | cflow.cs:30:22:30:31 | After ... == ... [false] | +| cflow.cs:30:22:30:31 | After ... == ... [true] | cflow.cs:30:22:30:31 | After ... == ... [true] | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:37:17:37:22 | Entry | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:37:17:37:22 | Exit | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:39:9:50:9 | After switch (...) {...} | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:41:13:41:19 | After case ...: [match] | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:41:18:41:18 | After 1 [match] | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:41:18:41:18 | After 1 [no-match] | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:44:13:44:19 | After case ...: [match] | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:44:18:44:18 | After 2 [match] | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:44:18:44:18 | After 2 [no-match] | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:47:18:47:18 | After 3 [match] | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:47:18:47:18 | After 3 [no-match] | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:51:9:59:9 | After switch (...) {...} | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:53:18:53:19 | After 42 [match] | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:53:18:53:19 | After 42 [no-match] | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:60:9:66:9 | After switch (...) {...} | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:62:18:62:18 | After 0 [match] | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:62:18:62:18 | After 0 [no-match] | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:63:23:63:33 | After ... == ... [false] | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:63:23:63:33 | After ... == ... [true] | +| cflow.cs:37:17:37:22 | Exit | cflow.cs:37:17:37:22 | Exit | +| cflow.cs:39:9:50:9 | After switch (...) {...} | cflow.cs:37:17:37:22 | Exit | +| cflow.cs:39:9:50:9 | After switch (...) {...} | cflow.cs:39:9:50:9 | After switch (...) {...} | +| cflow.cs:39:9:50:9 | After switch (...) {...} | cflow.cs:51:9:59:9 | After switch (...) {...} | +| cflow.cs:39:9:50:9 | After switch (...) {...} | cflow.cs:53:18:53:19 | After 42 [match] | +| cflow.cs:39:9:50:9 | After switch (...) {...} | cflow.cs:53:18:53:19 | After 42 [no-match] | +| cflow.cs:39:9:50:9 | After switch (...) {...} | cflow.cs:60:9:66:9 | After switch (...) {...} | +| cflow.cs:39:9:50:9 | After switch (...) {...} | cflow.cs:62:18:62:18 | After 0 [match] | +| cflow.cs:39:9:50:9 | After switch (...) {...} | cflow.cs:62:18:62:18 | After 0 [no-match] | +| cflow.cs:39:9:50:9 | After switch (...) {...} | cflow.cs:63:23:63:33 | After ... == ... [false] | +| cflow.cs:39:9:50:9 | After switch (...) {...} | cflow.cs:63:23:63:33 | After ... == ... [true] | +| cflow.cs:41:13:41:19 | After case ...: [match] | cflow.cs:41:13:41:19 | After case ...: [match] | +| cflow.cs:41:18:41:18 | After 1 [match] | cflow.cs:41:18:41:18 | After 1 [match] | +| cflow.cs:41:18:41:18 | After 1 [no-match] | cflow.cs:37:17:37:22 | Exit | +| cflow.cs:41:18:41:18 | After 1 [no-match] | cflow.cs:39:9:50:9 | After switch (...) {...} | +| cflow.cs:41:18:41:18 | After 1 [no-match] | cflow.cs:41:18:41:18 | After 1 [no-match] | +| cflow.cs:41:18:41:18 | After 1 [no-match] | cflow.cs:44:18:44:18 | After 2 [match] | +| cflow.cs:41:18:41:18 | After 1 [no-match] | cflow.cs:44:18:44:18 | After 2 [no-match] | +| cflow.cs:41:18:41:18 | After 1 [no-match] | cflow.cs:47:18:47:18 | After 3 [match] | +| cflow.cs:41:18:41:18 | After 1 [no-match] | cflow.cs:47:18:47:18 | After 3 [no-match] | +| cflow.cs:41:18:41:18 | After 1 [no-match] | cflow.cs:51:9:59:9 | After switch (...) {...} | +| cflow.cs:41:18:41:18 | After 1 [no-match] | cflow.cs:53:18:53:19 | After 42 [match] | +| cflow.cs:41:18:41:18 | After 1 [no-match] | cflow.cs:53:18:53:19 | After 42 [no-match] | +| cflow.cs:41:18:41:18 | After 1 [no-match] | cflow.cs:60:9:66:9 | After switch (...) {...} | +| cflow.cs:41:18:41:18 | After 1 [no-match] | cflow.cs:62:18:62:18 | After 0 [match] | +| cflow.cs:41:18:41:18 | After 1 [no-match] | cflow.cs:62:18:62:18 | After 0 [no-match] | +| cflow.cs:41:18:41:18 | After 1 [no-match] | cflow.cs:63:23:63:33 | After ... == ... [false] | +| cflow.cs:41:18:41:18 | After 1 [no-match] | cflow.cs:63:23:63:33 | After ... == ... [true] | +| cflow.cs:44:13:44:19 | After case ...: [match] | cflow.cs:44:13:44:19 | After case ...: [match] | +| cflow.cs:44:18:44:18 | After 2 [match] | cflow.cs:44:18:44:18 | After 2 [match] | +| cflow.cs:44:18:44:18 | After 2 [no-match] | cflow.cs:37:17:37:22 | Exit | +| cflow.cs:44:18:44:18 | After 2 [no-match] | cflow.cs:39:9:50:9 | After switch (...) {...} | +| cflow.cs:44:18:44:18 | After 2 [no-match] | cflow.cs:44:18:44:18 | After 2 [no-match] | +| cflow.cs:44:18:44:18 | After 2 [no-match] | cflow.cs:47:18:47:18 | After 3 [match] | +| cflow.cs:44:18:44:18 | After 2 [no-match] | cflow.cs:47:18:47:18 | After 3 [no-match] | +| cflow.cs:44:18:44:18 | After 2 [no-match] | cflow.cs:51:9:59:9 | After switch (...) {...} | +| cflow.cs:44:18:44:18 | After 2 [no-match] | cflow.cs:53:18:53:19 | After 42 [match] | +| cflow.cs:44:18:44:18 | After 2 [no-match] | cflow.cs:53:18:53:19 | After 42 [no-match] | +| cflow.cs:44:18:44:18 | After 2 [no-match] | cflow.cs:60:9:66:9 | After switch (...) {...} | +| cflow.cs:44:18:44:18 | After 2 [no-match] | cflow.cs:62:18:62:18 | After 0 [match] | +| cflow.cs:44:18:44:18 | After 2 [no-match] | cflow.cs:62:18:62:18 | After 0 [no-match] | +| cflow.cs:44:18:44:18 | After 2 [no-match] | cflow.cs:63:23:63:33 | After ... == ... [false] | +| cflow.cs:44:18:44:18 | After 2 [no-match] | cflow.cs:63:23:63:33 | After ... == ... [true] | +| cflow.cs:47:18:47:18 | After 3 [match] | cflow.cs:47:18:47:18 | After 3 [match] | +| cflow.cs:47:18:47:18 | After 3 [no-match] | cflow.cs:47:18:47:18 | After 3 [no-match] | +| cflow.cs:51:9:59:9 | After switch (...) {...} | cflow.cs:37:17:37:22 | Exit | +| cflow.cs:51:9:59:9 | After switch (...) {...} | cflow.cs:51:9:59:9 | After switch (...) {...} | +| cflow.cs:51:9:59:9 | After switch (...) {...} | cflow.cs:60:9:66:9 | After switch (...) {...} | +| cflow.cs:51:9:59:9 | After switch (...) {...} | cflow.cs:62:18:62:18 | After 0 [match] | +| cflow.cs:51:9:59:9 | After switch (...) {...} | cflow.cs:62:18:62:18 | After 0 [no-match] | +| cflow.cs:51:9:59:9 | After switch (...) {...} | cflow.cs:63:23:63:33 | After ... == ... [false] | +| cflow.cs:51:9:59:9 | After switch (...) {...} | cflow.cs:63:23:63:33 | After ... == ... [true] | +| cflow.cs:53:18:53:19 | After 42 [match] | cflow.cs:53:18:53:19 | After 42 [match] | +| cflow.cs:53:18:53:19 | After 42 [no-match] | cflow.cs:53:18:53:19 | After 42 [no-match] | +| cflow.cs:60:9:66:9 | After switch (...) {...} | cflow.cs:60:9:66:9 | After switch (...) {...} | +| cflow.cs:62:18:62:18 | After 0 [match] | cflow.cs:62:18:62:18 | After 0 [match] | +| cflow.cs:62:18:62:18 | After 0 [match] | cflow.cs:63:23:63:33 | After ... == ... [false] | +| cflow.cs:62:18:62:18 | After 0 [match] | cflow.cs:63:23:63:33 | After ... == ... [true] | +| cflow.cs:62:18:62:18 | After 0 [no-match] | cflow.cs:62:18:62:18 | After 0 [no-match] | +| cflow.cs:63:23:63:33 | After ... == ... [false] | cflow.cs:63:23:63:33 | After ... == ... [false] | +| cflow.cs:63:23:63:33 | After ... == ... [true] | cflow.cs:63:23:63:33 | After ... == ... [true] | +| cflow.cs:70:18:70:18 | Entry | cflow.cs:70:18:70:18 | Entry | +| cflow.cs:70:18:70:18 | Entry | cflow.cs:70:18:70:18 | Normal Exit | +| cflow.cs:70:18:70:18 | Entry | cflow.cs:72:13:72:21 | After ... == ... [false] | +| cflow.cs:70:18:70:18 | Entry | cflow.cs:72:13:72:21 | After ... == ... [true] | +| cflow.cs:70:18:70:18 | Entry | cflow.cs:74:9:81:9 | After if (...) ... | +| cflow.cs:70:18:70:18 | Entry | cflow.cs:74:13:74:24 | After ... > ... [false] | +| cflow.cs:70:18:70:18 | Entry | cflow.cs:74:13:74:24 | After ... > ... [true] | +| cflow.cs:70:18:70:18 | Normal Exit | cflow.cs:70:18:70:18 | Normal Exit | +| cflow.cs:72:13:72:21 | After ... == ... [false] | cflow.cs:72:13:72:21 | After ... == ... [false] | +| cflow.cs:72:13:72:21 | After ... == ... [false] | cflow.cs:74:9:81:9 | After if (...) ... | +| cflow.cs:72:13:72:21 | After ... == ... [false] | cflow.cs:74:13:74:24 | After ... > ... [false] | +| cflow.cs:72:13:72:21 | After ... == ... [false] | cflow.cs:74:13:74:24 | After ... > ... [true] | +| cflow.cs:72:13:72:21 | After ... == ... [true] | cflow.cs:72:13:72:21 | After ... == ... [true] | +| cflow.cs:74:9:81:9 | After if (...) ... | cflow.cs:74:9:81:9 | After if (...) ... | +| cflow.cs:74:13:74:24 | After ... > ... [false] | cflow.cs:74:13:74:24 | After ... > ... [false] | +| cflow.cs:74:13:74:24 | After ... > ... [true] | cflow.cs:74:13:74:24 | After ... > ... [true] | +| cflow.cs:84:18:84:19 | Entry | cflow.cs:84:18:84:19 | Entry | +| cflow.cs:84:18:84:19 | Entry | cflow.cs:86:9:87:33 | After if (...) ... | +| cflow.cs:84:18:84:19 | Entry | cflow.cs:86:13:86:21 | After ... != ... [false] | +| cflow.cs:84:18:84:19 | Entry | cflow.cs:86:13:86:21 | After ... != ... [true] | +| cflow.cs:84:18:84:19 | Entry | cflow.cs:86:13:86:37 | After ... && ... [false] | +| cflow.cs:84:18:84:19 | Entry | cflow.cs:86:26:86:37 | After ... > ... [false] | +| cflow.cs:84:18:84:19 | Entry | cflow.cs:86:26:86:37 | After ... > ... [true] | +| cflow.cs:86:9:87:33 | After if (...) ... | cflow.cs:86:9:87:33 | After if (...) ... | +| cflow.cs:86:13:86:21 | After ... != ... [false] | cflow.cs:86:13:86:21 | After ... != ... [false] | +| cflow.cs:86:13:86:21 | After ... != ... [true] | cflow.cs:86:13:86:21 | After ... != ... [true] | +| cflow.cs:86:13:86:21 | After ... != ... [true] | cflow.cs:86:26:86:37 | After ... > ... [false] | +| cflow.cs:86:13:86:21 | After ... != ... [true] | cflow.cs:86:26:86:37 | After ... > ... [true] | +| cflow.cs:86:13:86:37 | After ... && ... [false] | cflow.cs:86:13:86:37 | After ... && ... [false] | +| cflow.cs:86:26:86:37 | After ... > ... [false] | cflow.cs:86:26:86:37 | After ... > ... [false] | +| cflow.cs:86:26:86:37 | After ... > ... [true] | cflow.cs:86:26:86:37 | After ... > ... [true] | +| cflow.cs:90:18:90:19 | Entry | cflow.cs:90:18:90:19 | Entry | +| cflow.cs:90:18:90:19 | Entry | cflow.cs:90:18:90:19 | Exit | +| cflow.cs:90:18:90:19 | Entry | cflow.cs:92:13:92:27 | After call to method Equals [false] | +| cflow.cs:90:18:90:19 | Entry | cflow.cs:92:13:92:27 | After call to method Equals [true] | +| cflow.cs:90:18:90:19 | Entry | cflow.cs:96:9:97:55 | After if (...) ... | +| cflow.cs:90:18:90:19 | Entry | cflow.cs:96:13:96:25 | After ... != ... [false] | +| cflow.cs:90:18:90:19 | Entry | cflow.cs:96:13:96:25 | After ... != ... [true] | +| cflow.cs:90:18:90:19 | Entry | cflow.cs:99:9:100:42 | After if (...) ... | +| cflow.cs:90:18:90:19 | Entry | cflow.cs:99:13:99:25 | After ... != ... [false] | +| cflow.cs:90:18:90:19 | Entry | cflow.cs:99:13:99:25 | After ... != ... [true] | +| cflow.cs:90:18:90:19 | Entry | cflow.cs:102:9:103:36 | After if (...) ... | +| cflow.cs:90:18:90:19 | Entry | cflow.cs:102:13:102:29 | After ... != ... [false] | +| cflow.cs:90:18:90:19 | Entry | cflow.cs:102:13:102:29 | After ... != ... [true] | +| cflow.cs:90:18:90:19 | Exit | cflow.cs:90:18:90:19 | Exit | +| cflow.cs:92:13:92:27 | After call to method Equals [false] | cflow.cs:92:13:92:27 | After call to method Equals [false] | +| cflow.cs:92:13:92:27 | After call to method Equals [false] | cflow.cs:96:9:97:55 | After if (...) ... | +| cflow.cs:92:13:92:27 | After call to method Equals [false] | cflow.cs:96:13:96:25 | After ... != ... [false] | +| cflow.cs:92:13:92:27 | After call to method Equals [false] | cflow.cs:96:13:96:25 | After ... != ... [true] | +| cflow.cs:92:13:92:27 | After call to method Equals [false] | cflow.cs:99:9:100:42 | After if (...) ... | +| cflow.cs:92:13:92:27 | After call to method Equals [false] | cflow.cs:99:13:99:25 | After ... != ... [false] | +| cflow.cs:92:13:92:27 | After call to method Equals [false] | cflow.cs:99:13:99:25 | After ... != ... [true] | +| cflow.cs:92:13:92:27 | After call to method Equals [false] | cflow.cs:102:9:103:36 | After if (...) ... | +| cflow.cs:92:13:92:27 | After call to method Equals [false] | cflow.cs:102:13:102:29 | After ... != ... [false] | +| cflow.cs:92:13:92:27 | After call to method Equals [false] | cflow.cs:102:13:102:29 | After ... != ... [true] | +| cflow.cs:92:13:92:27 | After call to method Equals [true] | cflow.cs:92:13:92:27 | After call to method Equals [true] | +| cflow.cs:96:9:97:55 | After if (...) ... | cflow.cs:96:9:97:55 | After if (...) ... | +| cflow.cs:96:9:97:55 | After if (...) ... | cflow.cs:99:9:100:42 | After if (...) ... | +| cflow.cs:96:9:97:55 | After if (...) ... | cflow.cs:99:13:99:25 | After ... != ... [false] | +| cflow.cs:96:9:97:55 | After if (...) ... | cflow.cs:99:13:99:25 | After ... != ... [true] | +| cflow.cs:96:9:97:55 | After if (...) ... | cflow.cs:102:9:103:36 | After if (...) ... | +| cflow.cs:96:9:97:55 | After if (...) ... | cflow.cs:102:13:102:29 | After ... != ... [false] | +| cflow.cs:96:9:97:55 | After if (...) ... | cflow.cs:102:13:102:29 | After ... != ... [true] | +| cflow.cs:96:13:96:25 | After ... != ... [false] | cflow.cs:96:13:96:25 | After ... != ... [false] | +| cflow.cs:96:13:96:25 | After ... != ... [true] | cflow.cs:96:13:96:25 | After ... != ... [true] | +| cflow.cs:99:9:100:42 | After if (...) ... | cflow.cs:99:9:100:42 | After if (...) ... | +| cflow.cs:99:9:100:42 | After if (...) ... | cflow.cs:102:9:103:36 | After if (...) ... | +| cflow.cs:99:9:100:42 | After if (...) ... | cflow.cs:102:13:102:29 | After ... != ... [false] | +| cflow.cs:99:9:100:42 | After if (...) ... | cflow.cs:102:13:102:29 | After ... != ... [true] | +| cflow.cs:99:13:99:25 | After ... != ... [false] | cflow.cs:99:13:99:25 | After ... != ... [false] | +| cflow.cs:99:13:99:25 | After ... != ... [true] | cflow.cs:99:13:99:25 | After ... != ... [true] | +| cflow.cs:102:9:103:36 | After if (...) ... | cflow.cs:102:9:103:36 | After if (...) ... | +| cflow.cs:102:13:102:29 | After ... != ... [false] | cflow.cs:102:13:102:29 | After ... != ... [false] | +| cflow.cs:102:13:102:29 | After ... != ... [true] | cflow.cs:102:13:102:29 | After ... != ... [true] | +| cflow.cs:106:18:106:19 | Entry | cflow.cs:106:18:106:19 | Entry | +| cflow.cs:106:18:106:19 | Entry | cflow.cs:108:13:108:21 | After ... != ... [false] | +| cflow.cs:106:18:106:19 | Entry | cflow.cs:108:13:108:21 | After ... != ... [true] | +| cflow.cs:106:18:106:19 | Entry | cflow.cs:110:13:113:13 | [LoopHeader] while (...) ... | +| cflow.cs:108:13:108:21 | After ... != ... [false] | cflow.cs:108:13:108:21 | After ... != ... [false] | +| cflow.cs:108:13:108:21 | After ... != ... [true] | cflow.cs:108:13:108:21 | After ... != ... [true] | +| cflow.cs:108:13:108:21 | After ... != ... [true] | cflow.cs:110:13:113:13 | [LoopHeader] while (...) ... | +| cflow.cs:110:13:113:13 | [LoopHeader] while (...) ... | cflow.cs:110:13:113:13 | [LoopHeader] while (...) ... | +| cflow.cs:119:20:119:21 | Entry | cflow.cs:119:20:119:21 | Entry | +| cflow.cs:127:19:127:21 | Entry | cflow.cs:127:19:127:21 | Entry | +| cflow.cs:127:19:127:21 | Entry | cflow.cs:127:32:127:44 | After ... == ... [false] | +| cflow.cs:127:19:127:21 | Entry | cflow.cs:127:32:127:44 | After ... == ... [true] | +| cflow.cs:127:19:127:21 | Entry | cflow.cs:127:32:127:57 | After ... ? ... : ... | +| cflow.cs:127:32:127:44 | After ... == ... [false] | cflow.cs:127:32:127:44 | After ... == ... [false] | +| cflow.cs:127:32:127:44 | After ... == ... [true] | cflow.cs:127:32:127:44 | After ... == ... [true] | +| cflow.cs:127:32:127:57 | After ... ? ... : ... | cflow.cs:127:32:127:57 | After ... ? ... : ... | +| cflow.cs:127:62:127:64 | Entry | cflow.cs:127:62:127:64 | Entry | +| cflow.cs:129:5:129:15 | Entry | cflow.cs:129:5:129:15 | Entry | +| cflow.cs:134:5:134:15 | Entry | cflow.cs:134:5:134:15 | Entry | +| cflow.cs:136:12:136:22 | Entry | cflow.cs:136:12:136:22 | Entry | +| cflow.cs:138:40:138:40 | Entry | cflow.cs:138:40:138:40 | Entry | +| cflow.cs:144:33:144:35 | Entry | cflow.cs:144:33:144:35 | Entry | +| cflow.cs:144:56:144:58 | Entry | cflow.cs:144:56:144:58 | Entry | +| cflow.cs:146:10:146:12 | Entry | cflow.cs:146:10:146:12 | Entry | +| cflow.cs:146:10:146:12 | Entry | cflow.cs:149:16:149:21 | After ... < ... [false] | +| cflow.cs:146:10:146:12 | Entry | cflow.cs:149:16:149:21 | After ... < ... [true] | +| cflow.cs:146:10:146:12 | Entry | cflow.cs:149:16:149:21 | Before ... < ... | +| cflow.cs:146:10:146:12 | Entry | cflow.cs:153:9:157:9 | {...} | +| cflow.cs:146:10:146:12 | Entry | cflow.cs:155:17:155:22 | After ... > ... [false] | +| cflow.cs:146:10:146:12 | Entry | cflow.cs:155:17:155:22 | After ... > ... [true] | +| cflow.cs:146:10:146:12 | Entry | cflow.cs:160:9:165:9 | {...} | +| cflow.cs:146:10:146:12 | Entry | cflow.cs:163:17:163:22 | After ... > ... [false] | +| cflow.cs:146:10:146:12 | Entry | cflow.cs:163:17:163:22 | After ... > ... [true] | +| cflow.cs:146:10:146:12 | Entry | cflow.cs:167:16:167:21 | After ... < ... [false] | +| cflow.cs:146:10:146:12 | Entry | cflow.cs:167:16:167:21 | After ... < ... [true] | +| cflow.cs:146:10:146:12 | Entry | cflow.cs:167:16:167:21 | Before ... < ... | +| cflow.cs:146:10:146:12 | Entry | cflow.cs:173:32:173:41 | After ... < ... [false] | +| cflow.cs:146:10:146:12 | Entry | cflow.cs:173:32:173:41 | After ... < ... [true] | +| cflow.cs:146:10:146:12 | Entry | cflow.cs:173:32:173:41 | Before ... < ... | +| cflow.cs:149:16:149:21 | After ... < ... [false] | cflow.cs:149:16:149:21 | After ... < ... [false] | +| cflow.cs:149:16:149:21 | After ... < ... [false] | cflow.cs:153:9:157:9 | {...} | +| cflow.cs:149:16:149:21 | After ... < ... [false] | cflow.cs:155:17:155:22 | After ... > ... [false] | +| cflow.cs:149:16:149:21 | After ... < ... [false] | cflow.cs:155:17:155:22 | After ... > ... [true] | +| cflow.cs:149:16:149:21 | After ... < ... [false] | cflow.cs:160:9:165:9 | {...} | +| cflow.cs:149:16:149:21 | After ... < ... [false] | cflow.cs:163:17:163:22 | After ... > ... [false] | +| cflow.cs:149:16:149:21 | After ... < ... [false] | cflow.cs:163:17:163:22 | After ... > ... [true] | +| cflow.cs:149:16:149:21 | After ... < ... [false] | cflow.cs:167:16:167:21 | After ... < ... [false] | +| cflow.cs:149:16:149:21 | After ... < ... [false] | cflow.cs:167:16:167:21 | After ... < ... [true] | +| cflow.cs:149:16:149:21 | After ... < ... [false] | cflow.cs:167:16:167:21 | Before ... < ... | +| cflow.cs:149:16:149:21 | After ... < ... [false] | cflow.cs:173:32:173:41 | After ... < ... [false] | +| cflow.cs:149:16:149:21 | After ... < ... [false] | cflow.cs:173:32:173:41 | After ... < ... [true] | +| cflow.cs:149:16:149:21 | After ... < ... [false] | cflow.cs:173:32:173:41 | Before ... < ... | +| cflow.cs:149:16:149:21 | After ... < ... [true] | cflow.cs:149:16:149:21 | After ... < ... [true] | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:149:16:149:21 | After ... < ... [false] | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:149:16:149:21 | After ... < ... [true] | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:149:16:149:21 | Before ... < ... | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:153:9:157:9 | {...} | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:155:17:155:22 | After ... > ... [false] | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:155:17:155:22 | After ... > ... [true] | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:160:9:165:9 | {...} | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:163:17:163:22 | After ... > ... [false] | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:163:17:163:22 | After ... > ... [true] | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:167:16:167:21 | After ... < ... [false] | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:167:16:167:21 | After ... < ... [true] | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:167:16:167:21 | Before ... < ... | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:173:32:173:41 | After ... < ... [false] | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:173:32:173:41 | After ... < ... [true] | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:173:32:173:41 | Before ... < ... | | cflow.cs:153:9:157:9 | {...} | cflow.cs:153:9:157:9 | {...} | -| cflow.cs:153:9:157:9 | {...} | cflow.cs:156:17:156:22 | break; | +| cflow.cs:153:9:157:9 | {...} | cflow.cs:155:17:155:22 | After ... > ... [false] | +| cflow.cs:153:9:157:9 | {...} | cflow.cs:155:17:155:22 | After ... > ... [true] | | cflow.cs:153:9:157:9 | {...} | cflow.cs:160:9:165:9 | {...} | -| cflow.cs:153:9:157:9 | {...} | cflow.cs:164:17:164:22 | break; | -| cflow.cs:153:9:157:9 | {...} | cflow.cs:167:16:167:16 | access to local variable x | -| cflow.cs:153:9:157:9 | {...} | cflow.cs:168:9:171:9 | {...} | -| cflow.cs:153:9:157:9 | {...} | cflow.cs:173:9:176:9 | for (...;...;...) ... | -| cflow.cs:153:9:157:9 | {...} | cflow.cs:173:32:173:32 | access to local variable i | -| cflow.cs:153:9:157:9 | {...} | cflow.cs:174:9:176:9 | {...} | -| cflow.cs:156:17:156:22 | break; | cflow.cs:146:10:146:12 | exit For (normal) | -| cflow.cs:156:17:156:22 | break; | cflow.cs:156:17:156:22 | break; | -| cflow.cs:156:17:156:22 | break; | cflow.cs:160:9:165:9 | {...} | -| cflow.cs:156:17:156:22 | break; | cflow.cs:164:17:164:22 | break; | -| cflow.cs:156:17:156:22 | break; | cflow.cs:167:16:167:16 | access to local variable x | -| cflow.cs:156:17:156:22 | break; | cflow.cs:168:9:171:9 | {...} | -| cflow.cs:156:17:156:22 | break; | cflow.cs:173:9:176:9 | for (...;...;...) ... | -| cflow.cs:156:17:156:22 | break; | cflow.cs:173:32:173:32 | access to local variable i | -| cflow.cs:156:17:156:22 | break; | cflow.cs:174:9:176:9 | {...} | -| cflow.cs:160:9:165:9 | {...} | cflow.cs:146:10:146:12 | exit For (normal) | +| cflow.cs:153:9:157:9 | {...} | cflow.cs:163:17:163:22 | After ... > ... [false] | +| cflow.cs:153:9:157:9 | {...} | cflow.cs:163:17:163:22 | After ... > ... [true] | +| cflow.cs:153:9:157:9 | {...} | cflow.cs:167:16:167:21 | After ... < ... [false] | +| cflow.cs:153:9:157:9 | {...} | cflow.cs:167:16:167:21 | After ... < ... [true] | +| cflow.cs:153:9:157:9 | {...} | cflow.cs:167:16:167:21 | Before ... < ... | +| cflow.cs:153:9:157:9 | {...} | cflow.cs:173:32:173:41 | After ... < ... [false] | +| cflow.cs:153:9:157:9 | {...} | cflow.cs:173:32:173:41 | After ... < ... [true] | +| cflow.cs:153:9:157:9 | {...} | cflow.cs:173:32:173:41 | Before ... < ... | +| cflow.cs:155:17:155:22 | After ... > ... [false] | cflow.cs:155:17:155:22 | After ... > ... [false] | +| cflow.cs:155:17:155:22 | After ... > ... [true] | cflow.cs:155:17:155:22 | After ... > ... [true] | +| cflow.cs:155:17:155:22 | After ... > ... [true] | cflow.cs:160:9:165:9 | {...} | +| cflow.cs:155:17:155:22 | After ... > ... [true] | cflow.cs:163:17:163:22 | After ... > ... [false] | +| cflow.cs:155:17:155:22 | After ... > ... [true] | cflow.cs:163:17:163:22 | After ... > ... [true] | +| cflow.cs:155:17:155:22 | After ... > ... [true] | cflow.cs:167:16:167:21 | After ... < ... [false] | +| cflow.cs:155:17:155:22 | After ... > ... [true] | cflow.cs:167:16:167:21 | After ... < ... [true] | +| cflow.cs:155:17:155:22 | After ... > ... [true] | cflow.cs:167:16:167:21 | Before ... < ... | +| cflow.cs:155:17:155:22 | After ... > ... [true] | cflow.cs:173:32:173:41 | After ... < ... [false] | +| cflow.cs:155:17:155:22 | After ... > ... [true] | cflow.cs:173:32:173:41 | After ... < ... [true] | +| cflow.cs:155:17:155:22 | After ... > ... [true] | cflow.cs:173:32:173:41 | Before ... < ... | | cflow.cs:160:9:165:9 | {...} | cflow.cs:160:9:165:9 | {...} | -| cflow.cs:160:9:165:9 | {...} | cflow.cs:164:17:164:22 | break; | -| cflow.cs:160:9:165:9 | {...} | cflow.cs:167:16:167:16 | access to local variable x | -| cflow.cs:160:9:165:9 | {...} | cflow.cs:168:9:171:9 | {...} | -| cflow.cs:160:9:165:9 | {...} | cflow.cs:173:9:176:9 | for (...;...;...) ... | -| cflow.cs:160:9:165:9 | {...} | cflow.cs:173:32:173:32 | access to local variable i | -| cflow.cs:160:9:165:9 | {...} | cflow.cs:174:9:176:9 | {...} | -| cflow.cs:164:17:164:22 | break; | cflow.cs:146:10:146:12 | exit For (normal) | -| cflow.cs:164:17:164:22 | break; | cflow.cs:164:17:164:22 | break; | -| cflow.cs:164:17:164:22 | break; | cflow.cs:167:16:167:16 | access to local variable x | -| cflow.cs:164:17:164:22 | break; | cflow.cs:168:9:171:9 | {...} | -| cflow.cs:164:17:164:22 | break; | cflow.cs:173:9:176:9 | for (...;...;...) ... | -| cflow.cs:164:17:164:22 | break; | cflow.cs:173:32:173:32 | access to local variable i | -| cflow.cs:164:17:164:22 | break; | cflow.cs:174:9:176:9 | {...} | -| cflow.cs:167:16:167:16 | access to local variable x | cflow.cs:146:10:146:12 | exit For (normal) | -| cflow.cs:167:16:167:16 | access to local variable x | cflow.cs:167:16:167:16 | access to local variable x | -| cflow.cs:167:16:167:16 | access to local variable x | cflow.cs:168:9:171:9 | {...} | -| cflow.cs:167:16:167:16 | access to local variable x | cflow.cs:173:9:176:9 | for (...;...;...) ... | -| cflow.cs:167:16:167:16 | access to local variable x | cflow.cs:173:32:173:32 | access to local variable i | -| cflow.cs:167:16:167:16 | access to local variable x | cflow.cs:174:9:176:9 | {...} | -| cflow.cs:168:9:171:9 | {...} | cflow.cs:168:9:171:9 | {...} | -| cflow.cs:173:9:176:9 | for (...;...;...) ... | cflow.cs:146:10:146:12 | exit For (normal) | -| cflow.cs:173:9:176:9 | for (...;...;...) ... | cflow.cs:173:9:176:9 | for (...;...;...) ... | -| cflow.cs:173:9:176:9 | for (...;...;...) ... | cflow.cs:173:32:173:32 | access to local variable i | -| cflow.cs:173:9:176:9 | for (...;...;...) ... | cflow.cs:174:9:176:9 | {...} | -| cflow.cs:173:32:173:32 | access to local variable i | cflow.cs:146:10:146:12 | exit For (normal) | -| cflow.cs:173:32:173:32 | access to local variable i | cflow.cs:173:32:173:32 | access to local variable i | -| cflow.cs:173:32:173:32 | access to local variable i | cflow.cs:174:9:176:9 | {...} | -| cflow.cs:174:9:176:9 | {...} | cflow.cs:174:9:176:9 | {...} | -| cflow.cs:179:10:179:16 | enter Lambdas | cflow.cs:179:10:179:16 | enter Lambdas | -| cflow.cs:181:28:181:37 | enter (...) => ... | cflow.cs:181:28:181:37 | enter (...) => ... | -| cflow.cs:182:28:182:61 | enter delegate(...) { ... } | cflow.cs:182:28:182:61 | enter delegate(...) { ... } | -| cflow.cs:185:10:185:18 | enter LogicalOr | cflow.cs:185:10:185:18 | enter LogicalOr | -| cflow.cs:185:10:185:18 | enter LogicalOr | cflow.cs:187:13:187:28 | ... \|\| ... | -| cflow.cs:185:10:185:18 | enter LogicalOr | cflow.cs:187:13:187:50 | ... \|\| ... | -| cflow.cs:185:10:185:18 | enter LogicalOr | cflow.cs:187:23:187:23 | 2 | -| cflow.cs:185:10:185:18 | enter LogicalOr | cflow.cs:187:34:187:34 | 1 | -| cflow.cs:185:10:185:18 | enter LogicalOr | cflow.cs:187:34:187:49 | ... && ... | -| cflow.cs:185:10:185:18 | enter LogicalOr | cflow.cs:190:13:190:52 | ...; | -| cflow.cs:187:13:187:28 | ... \|\| ... | cflow.cs:187:13:187:28 | ... \|\| ... | -| cflow.cs:187:13:187:28 | ... \|\| ... | cflow.cs:187:13:187:50 | ... \|\| ... | -| cflow.cs:187:13:187:28 | ... \|\| ... | cflow.cs:187:34:187:34 | 1 | -| cflow.cs:187:13:187:28 | ... \|\| ... | cflow.cs:187:34:187:49 | ... && ... | -| cflow.cs:187:13:187:28 | ... \|\| ... | cflow.cs:190:13:190:52 | ...; | -| cflow.cs:187:13:187:50 | ... \|\| ... | cflow.cs:187:13:187:50 | ... \|\| ... | -| cflow.cs:187:13:187:50 | ... \|\| ... | cflow.cs:190:13:190:52 | ...; | -| cflow.cs:187:23:187:23 | 2 | cflow.cs:187:13:187:28 | ... \|\| ... | -| cflow.cs:187:23:187:23 | 2 | cflow.cs:187:13:187:50 | ... \|\| ... | -| cflow.cs:187:23:187:23 | 2 | cflow.cs:187:23:187:23 | 2 | -| cflow.cs:187:23:187:23 | 2 | cflow.cs:187:34:187:34 | 1 | -| cflow.cs:187:23:187:23 | 2 | cflow.cs:187:34:187:49 | ... && ... | -| cflow.cs:187:23:187:23 | 2 | cflow.cs:190:13:190:52 | ...; | -| cflow.cs:187:34:187:34 | 1 | cflow.cs:187:13:187:50 | ... \|\| ... | -| cflow.cs:187:34:187:34 | 1 | cflow.cs:187:34:187:34 | 1 | -| cflow.cs:187:34:187:34 | 1 | cflow.cs:187:34:187:49 | ... && ... | -| cflow.cs:187:34:187:34 | 1 | cflow.cs:190:13:190:52 | ...; | -| cflow.cs:187:34:187:49 | ... && ... | cflow.cs:187:13:187:50 | ... \|\| ... | -| cflow.cs:187:34:187:49 | ... && ... | cflow.cs:187:34:187:49 | ... && ... | -| cflow.cs:187:34:187:49 | ... && ... | cflow.cs:190:13:190:52 | ...; | -| cflow.cs:190:13:190:52 | ...; | cflow.cs:190:13:190:52 | ...; | -| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:193:10:193:17 | enter Booleans | -| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:193:10:193:17 | exit Booleans | -| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:193:10:193:17 | exit Booleans (normal) | -| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:195:17:195:56 | ... && ... | -| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:195:39:195:43 | this access | -| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:197:13:197:47 | [false] !... | -| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:197:13:197:47 | [true] !... | -| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:197:15:197:46 | [false] ... ? ... : ... | -| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:197:15:197:46 | [true] ... ? ... : ... | -| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:197:35:197:39 | false | -| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:197:43:197:46 | true | -| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:198:13:198:49 | ...; | -| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:198:17:198:48 | ... ? ... : ... | -| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:198:37:198:41 | false | -| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:198:45:198:48 | true | -| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:200:9:205:9 | if (...) ... | -| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:200:13:200:32 | [false] !... | -| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:200:13:200:32 | [true] !... | -| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:200:13:200:62 | [false] ... \|\| ... | -| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:200:13:200:62 | [true] ... \|\| ... | -| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:200:37:200:62 | [false] !... | -| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:200:37:200:62 | [true] !... | -| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:200:38:200:62 | [false] !... | -| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:200:38:200:62 | [true] !... | -| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:200:40:200:44 | this access | -| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:200:40:200:61 | [false] ... && ... | -| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:200:40:200:61 | [true] ... && ... | -| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:200:61:200:61 | access to local variable b | -| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:201:9:205:9 | {...} | -| cflow.cs:193:10:193:17 | exit Booleans | cflow.cs:193:10:193:17 | exit Booleans | -| cflow.cs:193:10:193:17 | exit Booleans (normal) | cflow.cs:193:10:193:17 | exit Booleans (normal) | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:193:10:193:17 | exit Booleans | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:193:10:193:17 | exit Booleans (normal) | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:195:17:195:56 | ... && ... | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:197:13:197:47 | [false] !... | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:197:13:197:47 | [true] !... | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:197:15:197:46 | [false] ... ? ... : ... | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:197:15:197:46 | [true] ... ? ... : ... | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:197:35:197:39 | false | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:197:43:197:46 | true | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:198:13:198:49 | ...; | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:198:17:198:48 | ... ? ... : ... | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:198:37:198:41 | false | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:198:45:198:48 | true | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:200:9:205:9 | if (...) ... | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:200:13:200:32 | [false] !... | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:200:13:200:32 | [true] !... | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:200:13:200:62 | [false] ... \|\| ... | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:200:13:200:62 | [true] ... \|\| ... | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:200:37:200:62 | [false] !... | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:200:37:200:62 | [true] !... | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:200:38:200:62 | [false] !... | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:200:38:200:62 | [true] !... | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:200:40:200:44 | this access | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:200:40:200:61 | [false] ... && ... | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:200:40:200:61 | [true] ... && ... | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:200:61:200:61 | access to local variable b | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:201:9:205:9 | {...} | -| cflow.cs:195:39:195:43 | this access | cflow.cs:195:39:195:43 | this access | -| cflow.cs:197:13:197:47 | [false] !... | cflow.cs:197:13:197:47 | [false] !... | -| cflow.cs:197:13:197:47 | [true] !... | cflow.cs:197:13:197:47 | [true] !... | -| cflow.cs:197:13:197:47 | [true] !... | cflow.cs:198:13:198:49 | ...; | -| cflow.cs:197:13:197:47 | [true] !... | cflow.cs:198:17:198:48 | ... ? ... : ... | -| cflow.cs:197:13:197:47 | [true] !... | cflow.cs:198:37:198:41 | false | -| cflow.cs:197:13:197:47 | [true] !... | cflow.cs:198:45:198:48 | true | -| cflow.cs:197:15:197:46 | [false] ... ? ... : ... | cflow.cs:197:13:197:47 | [true] !... | -| cflow.cs:197:15:197:46 | [false] ... ? ... : ... | cflow.cs:197:15:197:46 | [false] ... ? ... : ... | -| cflow.cs:197:15:197:46 | [false] ... ? ... : ... | cflow.cs:198:13:198:49 | ...; | -| cflow.cs:197:15:197:46 | [false] ... ? ... : ... | cflow.cs:198:17:198:48 | ... ? ... : ... | -| cflow.cs:197:15:197:46 | [false] ... ? ... : ... | cflow.cs:198:37:198:41 | false | -| cflow.cs:197:15:197:46 | [false] ... ? ... : ... | cflow.cs:198:45:198:48 | true | -| cflow.cs:197:15:197:46 | [true] ... ? ... : ... | cflow.cs:197:13:197:47 | [false] !... | -| cflow.cs:197:15:197:46 | [true] ... ? ... : ... | cflow.cs:197:15:197:46 | [true] ... ? ... : ... | -| cflow.cs:197:35:197:39 | false | cflow.cs:197:13:197:47 | [true] !... | -| cflow.cs:197:35:197:39 | false | cflow.cs:197:15:197:46 | [false] ... ? ... : ... | -| cflow.cs:197:35:197:39 | false | cflow.cs:197:35:197:39 | false | -| cflow.cs:197:35:197:39 | false | cflow.cs:198:13:198:49 | ...; | -| cflow.cs:197:35:197:39 | false | cflow.cs:198:17:198:48 | ... ? ... : ... | -| cflow.cs:197:35:197:39 | false | cflow.cs:198:37:198:41 | false | -| cflow.cs:197:35:197:39 | false | cflow.cs:198:45:198:48 | true | -| cflow.cs:197:43:197:46 | true | cflow.cs:197:13:197:47 | [false] !... | -| cflow.cs:197:43:197:46 | true | cflow.cs:197:15:197:46 | [true] ... ? ... : ... | -| cflow.cs:197:43:197:46 | true | cflow.cs:197:43:197:46 | true | -| cflow.cs:198:13:198:49 | ...; | cflow.cs:198:13:198:49 | ...; | -| cflow.cs:198:13:198:49 | ...; | cflow.cs:198:17:198:48 | ... ? ... : ... | -| cflow.cs:198:13:198:49 | ...; | cflow.cs:198:37:198:41 | false | -| cflow.cs:198:13:198:49 | ...; | cflow.cs:198:45:198:48 | true | -| cflow.cs:198:17:198:48 | ... ? ... : ... | cflow.cs:198:17:198:48 | ... ? ... : ... | -| cflow.cs:198:37:198:41 | false | cflow.cs:198:37:198:41 | false | -| cflow.cs:198:45:198:48 | true | cflow.cs:198:45:198:48 | true | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:193:10:193:17 | exit Booleans | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:193:10:193:17 | exit Booleans (normal) | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:200:9:205:9 | if (...) ... | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:200:13:200:32 | [false] !... | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:200:13:200:32 | [true] !... | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:200:13:200:62 | [false] ... \|\| ... | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:200:13:200:62 | [true] ... \|\| ... | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:200:37:200:62 | [false] !... | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:200:37:200:62 | [true] !... | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:200:38:200:62 | [false] !... | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:200:38:200:62 | [true] !... | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:200:40:200:44 | this access | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:200:40:200:61 | [false] ... && ... | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:200:40:200:61 | [true] ... && ... | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:200:61:200:61 | access to local variable b | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:201:9:205:9 | {...} | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:193:10:193:17 | exit Booleans (normal) | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:200:13:200:32 | [false] !... | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:200:13:200:62 | [false] ... \|\| ... | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:200:37:200:62 | [false] !... | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:200:37:200:62 | [true] !... | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:200:38:200:62 | [false] !... | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:200:38:200:62 | [true] !... | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:200:40:200:44 | this access | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:200:40:200:61 | [false] ... && ... | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:200:40:200:61 | [true] ... && ... | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:200:61:200:61 | access to local variable b | -| cflow.cs:200:13:200:32 | [true] !... | cflow.cs:200:13:200:32 | [true] !... | -| cflow.cs:200:13:200:62 | [false] ... \|\| ... | cflow.cs:193:10:193:17 | exit Booleans (normal) | -| cflow.cs:200:13:200:62 | [false] ... \|\| ... | cflow.cs:200:13:200:62 | [false] ... \|\| ... | -| cflow.cs:200:13:200:62 | [true] ... \|\| ... | cflow.cs:200:13:200:62 | [true] ... \|\| ... | -| cflow.cs:200:13:200:62 | [true] ... \|\| ... | cflow.cs:201:9:205:9 | {...} | -| cflow.cs:200:37:200:62 | [false] !... | cflow.cs:193:10:193:17 | exit Booleans (normal) | -| cflow.cs:200:37:200:62 | [false] !... | cflow.cs:200:13:200:62 | [false] ... \|\| ... | -| cflow.cs:200:37:200:62 | [false] !... | cflow.cs:200:37:200:62 | [false] !... | -| cflow.cs:200:37:200:62 | [true] !... | cflow.cs:200:37:200:62 | [true] !... | -| cflow.cs:200:38:200:62 | [false] !... | cflow.cs:200:37:200:62 | [true] !... | -| cflow.cs:200:38:200:62 | [false] !... | cflow.cs:200:38:200:62 | [false] !... | -| cflow.cs:200:38:200:62 | [true] !... | cflow.cs:193:10:193:17 | exit Booleans (normal) | -| cflow.cs:200:38:200:62 | [true] !... | cflow.cs:200:13:200:62 | [false] ... \|\| ... | -| cflow.cs:200:38:200:62 | [true] !... | cflow.cs:200:37:200:62 | [false] !... | -| cflow.cs:200:38:200:62 | [true] !... | cflow.cs:200:38:200:62 | [true] !... | -| cflow.cs:200:40:200:44 | this access | cflow.cs:193:10:193:17 | exit Booleans (normal) | -| cflow.cs:200:40:200:44 | this access | cflow.cs:200:13:200:62 | [false] ... \|\| ... | -| cflow.cs:200:40:200:44 | this access | cflow.cs:200:37:200:62 | [false] !... | -| cflow.cs:200:40:200:44 | this access | cflow.cs:200:37:200:62 | [true] !... | -| cflow.cs:200:40:200:44 | this access | cflow.cs:200:38:200:62 | [false] !... | -| cflow.cs:200:40:200:44 | this access | cflow.cs:200:38:200:62 | [true] !... | -| cflow.cs:200:40:200:44 | this access | cflow.cs:200:40:200:44 | this access | -| cflow.cs:200:40:200:44 | this access | cflow.cs:200:40:200:61 | [false] ... && ... | -| cflow.cs:200:40:200:44 | this access | cflow.cs:200:40:200:61 | [true] ... && ... | -| cflow.cs:200:40:200:44 | this access | cflow.cs:200:61:200:61 | access to local variable b | -| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:193:10:193:17 | exit Booleans (normal) | -| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:200:13:200:62 | [false] ... \|\| ... | -| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:200:37:200:62 | [false] !... | -| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:200:38:200:62 | [true] !... | -| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:200:40:200:61 | [false] ... && ... | -| cflow.cs:200:40:200:61 | [true] ... && ... | cflow.cs:200:37:200:62 | [true] !... | -| cflow.cs:200:40:200:61 | [true] ... && ... | cflow.cs:200:38:200:62 | [false] !... | -| cflow.cs:200:40:200:61 | [true] ... && ... | cflow.cs:200:40:200:61 | [true] ... && ... | -| cflow.cs:200:61:200:61 | access to local variable b | cflow.cs:200:37:200:62 | [true] !... | -| cflow.cs:200:61:200:61 | access to local variable b | cflow.cs:200:38:200:62 | [false] !... | -| cflow.cs:200:61:200:61 | access to local variable b | cflow.cs:200:40:200:61 | [true] ... && ... | -| cflow.cs:200:61:200:61 | access to local variable b | cflow.cs:200:61:200:61 | access to local variable b | -| cflow.cs:201:9:205:9 | {...} | cflow.cs:201:9:205:9 | {...} | -| cflow.cs:208:10:208:11 | enter Do | cflow.cs:208:10:208:11 | enter Do | -| cflow.cs:208:10:208:11 | enter Do | cflow.cs:208:10:208:11 | exit Do (normal) | -| cflow.cs:208:10:208:11 | enter Do | cflow.cs:211:9:221:9 | {...} | -| cflow.cs:208:10:208:11 | enter Do | cflow.cs:214:13:216:13 | {...} | -| cflow.cs:208:10:208:11 | enter Do | cflow.cs:217:13:220:13 | if (...) ... | -| cflow.cs:208:10:208:11 | enter Do | cflow.cs:218:13:220:13 | {...} | -| cflow.cs:208:10:208:11 | enter Do | cflow.cs:221:18:221:22 | this access | -| cflow.cs:208:10:208:11 | exit Do (normal) | cflow.cs:208:10:208:11 | exit Do (normal) | -| cflow.cs:211:9:221:9 | {...} | cflow.cs:208:10:208:11 | exit Do (normal) | +| cflow.cs:160:9:165:9 | {...} | cflow.cs:163:17:163:22 | After ... > ... [false] | +| cflow.cs:160:9:165:9 | {...} | cflow.cs:163:17:163:22 | After ... > ... [true] | +| cflow.cs:160:9:165:9 | {...} | cflow.cs:167:16:167:21 | After ... < ... [false] | +| cflow.cs:160:9:165:9 | {...} | cflow.cs:167:16:167:21 | After ... < ... [true] | +| cflow.cs:160:9:165:9 | {...} | cflow.cs:167:16:167:21 | Before ... < ... | +| cflow.cs:160:9:165:9 | {...} | cflow.cs:173:32:173:41 | After ... < ... [false] | +| cflow.cs:160:9:165:9 | {...} | cflow.cs:173:32:173:41 | After ... < ... [true] | +| cflow.cs:160:9:165:9 | {...} | cflow.cs:173:32:173:41 | Before ... < ... | +| cflow.cs:163:17:163:22 | After ... > ... [false] | cflow.cs:163:17:163:22 | After ... > ... [false] | +| cflow.cs:163:17:163:22 | After ... > ... [true] | cflow.cs:163:17:163:22 | After ... > ... [true] | +| cflow.cs:163:17:163:22 | After ... > ... [true] | cflow.cs:167:16:167:21 | After ... < ... [false] | +| cflow.cs:163:17:163:22 | After ... > ... [true] | cflow.cs:167:16:167:21 | After ... < ... [true] | +| cflow.cs:163:17:163:22 | After ... > ... [true] | cflow.cs:167:16:167:21 | Before ... < ... | +| cflow.cs:163:17:163:22 | After ... > ... [true] | cflow.cs:173:32:173:41 | After ... < ... [false] | +| cflow.cs:163:17:163:22 | After ... > ... [true] | cflow.cs:173:32:173:41 | After ... < ... [true] | +| cflow.cs:163:17:163:22 | After ... > ... [true] | cflow.cs:173:32:173:41 | Before ... < ... | +| cflow.cs:167:16:167:21 | After ... < ... [false] | cflow.cs:167:16:167:21 | After ... < ... [false] | +| cflow.cs:167:16:167:21 | After ... < ... [false] | cflow.cs:173:32:173:41 | After ... < ... [false] | +| cflow.cs:167:16:167:21 | After ... < ... [false] | cflow.cs:173:32:173:41 | After ... < ... [true] | +| cflow.cs:167:16:167:21 | After ... < ... [false] | cflow.cs:173:32:173:41 | Before ... < ... | +| cflow.cs:167:16:167:21 | After ... < ... [true] | cflow.cs:167:16:167:21 | After ... < ... [true] | +| cflow.cs:167:16:167:21 | Before ... < ... | cflow.cs:167:16:167:21 | After ... < ... [false] | +| cflow.cs:167:16:167:21 | Before ... < ... | cflow.cs:167:16:167:21 | After ... < ... [true] | +| cflow.cs:167:16:167:21 | Before ... < ... | cflow.cs:167:16:167:21 | Before ... < ... | +| cflow.cs:167:16:167:21 | Before ... < ... | cflow.cs:173:32:173:41 | After ... < ... [false] | +| cflow.cs:167:16:167:21 | Before ... < ... | cflow.cs:173:32:173:41 | After ... < ... [true] | +| cflow.cs:167:16:167:21 | Before ... < ... | cflow.cs:173:32:173:41 | Before ... < ... | +| cflow.cs:173:32:173:41 | After ... < ... [false] | cflow.cs:173:32:173:41 | After ... < ... [false] | +| cflow.cs:173:32:173:41 | After ... < ... [true] | cflow.cs:173:32:173:41 | After ... < ... [true] | +| cflow.cs:173:32:173:41 | Before ... < ... | cflow.cs:173:32:173:41 | After ... < ... [false] | +| cflow.cs:173:32:173:41 | Before ... < ... | cflow.cs:173:32:173:41 | After ... < ... [true] | +| cflow.cs:173:32:173:41 | Before ... < ... | cflow.cs:173:32:173:41 | Before ... < ... | +| cflow.cs:179:10:179:16 | Entry | cflow.cs:179:10:179:16 | Entry | +| cflow.cs:181:28:181:37 | Entry | cflow.cs:181:28:181:37 | Entry | +| cflow.cs:182:28:182:61 | Entry | cflow.cs:182:28:182:61 | Entry | +| cflow.cs:185:10:185:18 | Entry | cflow.cs:185:10:185:18 | Entry | +| cflow.cs:185:10:185:18 | Entry | cflow.cs:187:9:190:52 | After if (...) ... | +| cflow.cs:185:10:185:18 | Entry | cflow.cs:187:13:187:18 | After ... == ... [false] | +| cflow.cs:185:10:185:18 | Entry | cflow.cs:187:13:187:18 | After ... == ... [true] | +| cflow.cs:185:10:185:18 | Entry | cflow.cs:187:13:187:28 | After ... \|\| ... [true] | +| cflow.cs:185:10:185:18 | Entry | cflow.cs:187:13:187:50 | After ... \|\| ... [true] | +| cflow.cs:185:10:185:18 | Entry | cflow.cs:187:23:187:28 | After ... == ... [false] | +| cflow.cs:185:10:185:18 | Entry | cflow.cs:187:23:187:28 | After ... == ... [true] | +| cflow.cs:185:10:185:18 | Entry | cflow.cs:187:34:187:39 | After ... == ... [false] | +| cflow.cs:185:10:185:18 | Entry | cflow.cs:187:34:187:39 | After ... == ... [true] | +| cflow.cs:185:10:185:18 | Entry | cflow.cs:187:34:187:49 | After ... && ... [false] | +| cflow.cs:185:10:185:18 | Entry | cflow.cs:187:44:187:49 | After ... == ... [false] | +| cflow.cs:185:10:185:18 | Entry | cflow.cs:187:44:187:49 | After ... == ... [true] | +| cflow.cs:187:9:190:52 | After if (...) ... | cflow.cs:187:9:190:52 | After if (...) ... | +| cflow.cs:187:13:187:18 | After ... == ... [false] | cflow.cs:187:13:187:18 | After ... == ... [false] | +| cflow.cs:187:13:187:18 | After ... == ... [false] | cflow.cs:187:23:187:28 | After ... == ... [false] | +| cflow.cs:187:13:187:18 | After ... == ... [false] | cflow.cs:187:23:187:28 | After ... == ... [true] | +| cflow.cs:187:13:187:18 | After ... == ... [false] | cflow.cs:187:34:187:39 | After ... == ... [false] | +| cflow.cs:187:13:187:18 | After ... == ... [false] | cflow.cs:187:34:187:39 | After ... == ... [true] | +| cflow.cs:187:13:187:18 | After ... == ... [false] | cflow.cs:187:34:187:49 | After ... && ... [false] | +| cflow.cs:187:13:187:18 | After ... == ... [false] | cflow.cs:187:44:187:49 | After ... == ... [false] | +| cflow.cs:187:13:187:18 | After ... == ... [false] | cflow.cs:187:44:187:49 | After ... == ... [true] | +| cflow.cs:187:13:187:18 | After ... == ... [true] | cflow.cs:187:13:187:18 | After ... == ... [true] | +| cflow.cs:187:13:187:28 | After ... \|\| ... [true] | cflow.cs:187:13:187:28 | After ... \|\| ... [true] | +| cflow.cs:187:13:187:50 | After ... \|\| ... [true] | cflow.cs:187:13:187:50 | After ... \|\| ... [true] | +| cflow.cs:187:23:187:28 | After ... == ... [false] | cflow.cs:187:23:187:28 | After ... == ... [false] | +| cflow.cs:187:23:187:28 | After ... == ... [false] | cflow.cs:187:34:187:39 | After ... == ... [false] | +| cflow.cs:187:23:187:28 | After ... == ... [false] | cflow.cs:187:34:187:39 | After ... == ... [true] | +| cflow.cs:187:23:187:28 | After ... == ... [false] | cflow.cs:187:34:187:49 | After ... && ... [false] | +| cflow.cs:187:23:187:28 | After ... == ... [false] | cflow.cs:187:44:187:49 | After ... == ... [false] | +| cflow.cs:187:23:187:28 | After ... == ... [false] | cflow.cs:187:44:187:49 | After ... == ... [true] | +| cflow.cs:187:23:187:28 | After ... == ... [true] | cflow.cs:187:23:187:28 | After ... == ... [true] | +| cflow.cs:187:34:187:39 | After ... == ... [false] | cflow.cs:187:34:187:39 | After ... == ... [false] | +| cflow.cs:187:34:187:39 | After ... == ... [true] | cflow.cs:187:34:187:39 | After ... == ... [true] | +| cflow.cs:187:34:187:39 | After ... == ... [true] | cflow.cs:187:44:187:49 | After ... == ... [false] | +| cflow.cs:187:34:187:39 | After ... == ... [true] | cflow.cs:187:44:187:49 | After ... == ... [true] | +| cflow.cs:187:34:187:49 | After ... && ... [false] | cflow.cs:187:34:187:49 | After ... && ... [false] | +| cflow.cs:187:44:187:49 | After ... == ... [false] | cflow.cs:187:44:187:49 | After ... == ... [false] | +| cflow.cs:187:44:187:49 | After ... == ... [true] | cflow.cs:187:44:187:49 | After ... == ... [true] | +| cflow.cs:193:10:193:17 | Entry | cflow.cs:193:10:193:17 | Entry | +| cflow.cs:193:10:193:17 | Entry | cflow.cs:193:10:193:17 | Exit | +| cflow.cs:193:10:193:17 | Entry | cflow.cs:195:17:195:32 | After ... > ... [false] | +| cflow.cs:193:10:193:17 | Entry | cflow.cs:195:17:195:32 | After ... > ... [true] | +| cflow.cs:193:10:193:17 | Entry | cflow.cs:195:17:195:56 | After ... && ... | +| cflow.cs:193:10:193:17 | Entry | cflow.cs:197:9:198:49 | After if (...) ... | +| cflow.cs:193:10:193:17 | Entry | cflow.cs:197:15:197:31 | After ... == ... [false] | +| cflow.cs:193:10:193:17 | Entry | cflow.cs:197:15:197:31 | After ... == ... [true] | +| cflow.cs:193:10:193:17 | Entry | cflow.cs:198:17:198:33 | After ... == ... [false] | +| cflow.cs:193:10:193:17 | Entry | cflow.cs:198:17:198:33 | After ... == ... [true] | +| cflow.cs:193:10:193:17 | Entry | cflow.cs:198:17:198:48 | After ... ? ... : ... | +| cflow.cs:193:10:193:17 | Entry | cflow.cs:200:13:200:62 | After ... \|\| ... [true] | +| cflow.cs:193:10:193:17 | Entry | cflow.cs:200:15:200:31 | After ... == ... [false] | +| cflow.cs:193:10:193:17 | Entry | cflow.cs:200:15:200:31 | After ... == ... [true] | +| cflow.cs:193:10:193:17 | Entry | cflow.cs:200:40:200:56 | After ... == ... [false] | +| cflow.cs:193:10:193:17 | Entry | cflow.cs:200:40:200:56 | After ... == ... [true] | +| cflow.cs:193:10:193:17 | Entry | cflow.cs:200:40:200:61 | After ... && ... [false] | +| cflow.cs:193:10:193:17 | Entry | cflow.cs:200:61:200:61 | After access to local variable b [false] | +| cflow.cs:193:10:193:17 | Entry | cflow.cs:200:61:200:61 | After access to local variable b [true] | +| cflow.cs:193:10:193:17 | Exit | cflow.cs:193:10:193:17 | Exit | +| cflow.cs:195:17:195:32 | After ... > ... [false] | cflow.cs:195:17:195:32 | After ... > ... [false] | +| cflow.cs:195:17:195:32 | After ... > ... [true] | cflow.cs:195:17:195:32 | After ... > ... [true] | +| cflow.cs:195:17:195:56 | After ... && ... | cflow.cs:193:10:193:17 | Exit | +| cflow.cs:195:17:195:56 | After ... && ... | cflow.cs:195:17:195:56 | After ... && ... | +| cflow.cs:195:17:195:56 | After ... && ... | cflow.cs:197:9:198:49 | After if (...) ... | +| cflow.cs:195:17:195:56 | After ... && ... | cflow.cs:197:15:197:31 | After ... == ... [false] | +| cflow.cs:195:17:195:56 | After ... && ... | cflow.cs:197:15:197:31 | After ... == ... [true] | +| cflow.cs:195:17:195:56 | After ... && ... | cflow.cs:198:17:198:33 | After ... == ... [false] | +| cflow.cs:195:17:195:56 | After ... && ... | cflow.cs:198:17:198:33 | After ... == ... [true] | +| cflow.cs:195:17:195:56 | After ... && ... | cflow.cs:198:17:198:48 | After ... ? ... : ... | +| cflow.cs:195:17:195:56 | After ... && ... | cflow.cs:200:13:200:62 | After ... \|\| ... [true] | +| cflow.cs:195:17:195:56 | After ... && ... | cflow.cs:200:15:200:31 | After ... == ... [false] | +| cflow.cs:195:17:195:56 | After ... && ... | cflow.cs:200:15:200:31 | After ... == ... [true] | +| cflow.cs:195:17:195:56 | After ... && ... | cflow.cs:200:40:200:56 | After ... == ... [false] | +| cflow.cs:195:17:195:56 | After ... && ... | cflow.cs:200:40:200:56 | After ... == ... [true] | +| cflow.cs:195:17:195:56 | After ... && ... | cflow.cs:200:40:200:61 | After ... && ... [false] | +| cflow.cs:195:17:195:56 | After ... && ... | cflow.cs:200:61:200:61 | After access to local variable b [false] | +| cflow.cs:195:17:195:56 | After ... && ... | cflow.cs:200:61:200:61 | After access to local variable b [true] | +| cflow.cs:197:9:198:49 | After if (...) ... | cflow.cs:193:10:193:17 | Exit | +| cflow.cs:197:9:198:49 | After if (...) ... | cflow.cs:197:9:198:49 | After if (...) ... | +| cflow.cs:197:9:198:49 | After if (...) ... | cflow.cs:200:13:200:62 | After ... \|\| ... [true] | +| cflow.cs:197:9:198:49 | After if (...) ... | cflow.cs:200:15:200:31 | After ... == ... [false] | +| cflow.cs:197:9:198:49 | After if (...) ... | cflow.cs:200:15:200:31 | After ... == ... [true] | +| cflow.cs:197:9:198:49 | After if (...) ... | cflow.cs:200:40:200:56 | After ... == ... [false] | +| cflow.cs:197:9:198:49 | After if (...) ... | cflow.cs:200:40:200:56 | After ... == ... [true] | +| cflow.cs:197:9:198:49 | After if (...) ... | cflow.cs:200:40:200:61 | After ... && ... [false] | +| cflow.cs:197:9:198:49 | After if (...) ... | cflow.cs:200:61:200:61 | After access to local variable b [false] | +| cflow.cs:197:9:198:49 | After if (...) ... | cflow.cs:200:61:200:61 | After access to local variable b [true] | +| cflow.cs:197:15:197:31 | After ... == ... [false] | cflow.cs:197:15:197:31 | After ... == ... [false] | +| cflow.cs:197:15:197:31 | After ... == ... [true] | cflow.cs:197:15:197:31 | After ... == ... [true] | +| cflow.cs:197:15:197:31 | After ... == ... [true] | cflow.cs:198:17:198:33 | After ... == ... [false] | +| cflow.cs:197:15:197:31 | After ... == ... [true] | cflow.cs:198:17:198:33 | After ... == ... [true] | +| cflow.cs:197:15:197:31 | After ... == ... [true] | cflow.cs:198:17:198:48 | After ... ? ... : ... | +| cflow.cs:198:17:198:33 | After ... == ... [false] | cflow.cs:198:17:198:33 | After ... == ... [false] | +| cflow.cs:198:17:198:33 | After ... == ... [true] | cflow.cs:198:17:198:33 | After ... == ... [true] | +| cflow.cs:198:17:198:48 | After ... ? ... : ... | cflow.cs:198:17:198:48 | After ... ? ... : ... | +| cflow.cs:200:13:200:62 | After ... \|\| ... [true] | cflow.cs:200:13:200:62 | After ... \|\| ... [true] | +| cflow.cs:200:15:200:31 | After ... == ... [false] | cflow.cs:200:15:200:31 | After ... == ... [false] | +| cflow.cs:200:15:200:31 | After ... == ... [true] | cflow.cs:200:15:200:31 | After ... == ... [true] | +| cflow.cs:200:15:200:31 | After ... == ... [true] | cflow.cs:200:40:200:56 | After ... == ... [false] | +| cflow.cs:200:15:200:31 | After ... == ... [true] | cflow.cs:200:40:200:56 | After ... == ... [true] | +| cflow.cs:200:15:200:31 | After ... == ... [true] | cflow.cs:200:40:200:61 | After ... && ... [false] | +| cflow.cs:200:15:200:31 | After ... == ... [true] | cflow.cs:200:61:200:61 | After access to local variable b [false] | +| cflow.cs:200:15:200:31 | After ... == ... [true] | cflow.cs:200:61:200:61 | After access to local variable b [true] | +| cflow.cs:200:40:200:56 | After ... == ... [false] | cflow.cs:200:40:200:56 | After ... == ... [false] | +| cflow.cs:200:40:200:56 | After ... == ... [true] | cflow.cs:200:40:200:56 | After ... == ... [true] | +| cflow.cs:200:40:200:56 | After ... == ... [true] | cflow.cs:200:61:200:61 | After access to local variable b [false] | +| cflow.cs:200:40:200:56 | After ... == ... [true] | cflow.cs:200:61:200:61 | After access to local variable b [true] | +| cflow.cs:200:40:200:61 | After ... && ... [false] | cflow.cs:200:40:200:61 | After ... && ... [false] | +| cflow.cs:200:61:200:61 | After access to local variable b [false] | cflow.cs:200:61:200:61 | After access to local variable b [false] | +| cflow.cs:200:61:200:61 | After access to local variable b [true] | cflow.cs:200:61:200:61 | After access to local variable b [true] | +| cflow.cs:208:10:208:11 | Entry | cflow.cs:208:10:208:11 | Entry | +| cflow.cs:208:10:208:11 | Entry | cflow.cs:210:9:221:36 | After do ... while (...); | +| cflow.cs:208:10:208:11 | Entry | cflow.cs:210:9:221:36 | [LoopHeader] do ... while (...); | +| cflow.cs:208:10:208:11 | Entry | cflow.cs:211:9:221:9 | {...} | +| cflow.cs:208:10:208:11 | Entry | cflow.cs:213:17:213:32 | After ... > ... [false] | +| cflow.cs:208:10:208:11 | Entry | cflow.cs:213:17:213:32 | After ... > ... [true] | +| cflow.cs:208:10:208:11 | Entry | cflow.cs:217:17:217:32 | After ... < ... [false] | +| cflow.cs:208:10:208:11 | Entry | cflow.cs:217:17:217:32 | After ... < ... [true] | +| cflow.cs:208:10:208:11 | Entry | cflow.cs:221:18:221:34 | After ... < ... [false] | +| cflow.cs:208:10:208:11 | Entry | cflow.cs:221:18:221:34 | After ... < ... [true] | +| cflow.cs:210:9:221:36 | After do ... while (...); | cflow.cs:210:9:221:36 | After do ... while (...); | +| cflow.cs:210:9:221:36 | [LoopHeader] do ... while (...); | cflow.cs:210:9:221:36 | [LoopHeader] do ... while (...); | +| cflow.cs:210:9:221:36 | [LoopHeader] do ... while (...); | cflow.cs:221:18:221:34 | After ... < ... [false] | +| cflow.cs:210:9:221:36 | [LoopHeader] do ... while (...); | cflow.cs:221:18:221:34 | After ... < ... [true] | +| cflow.cs:211:9:221:9 | {...} | cflow.cs:210:9:221:36 | After do ... while (...); | +| cflow.cs:211:9:221:9 | {...} | cflow.cs:210:9:221:36 | [LoopHeader] do ... while (...); | | cflow.cs:211:9:221:9 | {...} | cflow.cs:211:9:221:9 | {...} | -| cflow.cs:211:9:221:9 | {...} | cflow.cs:214:13:216:13 | {...} | -| cflow.cs:211:9:221:9 | {...} | cflow.cs:217:13:220:13 | if (...) ... | -| cflow.cs:211:9:221:9 | {...} | cflow.cs:218:13:220:13 | {...} | -| cflow.cs:211:9:221:9 | {...} | cflow.cs:221:18:221:22 | this access | -| cflow.cs:214:13:216:13 | {...} | cflow.cs:214:13:216:13 | {...} | -| cflow.cs:217:13:220:13 | if (...) ... | cflow.cs:217:13:220:13 | if (...) ... | -| cflow.cs:217:13:220:13 | if (...) ... | cflow.cs:218:13:220:13 | {...} | -| cflow.cs:218:13:220:13 | {...} | cflow.cs:218:13:220:13 | {...} | -| cflow.cs:221:18:221:22 | this access | cflow.cs:221:18:221:22 | this access | -| cflow.cs:224:10:224:16 | enter Foreach | cflow.cs:224:10:224:16 | enter Foreach | -| cflow.cs:224:10:224:16 | enter Foreach | cflow.cs:224:10:224:16 | exit Foreach (normal) | -| cflow.cs:224:10:224:16 | enter Foreach | cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | -| cflow.cs:224:10:224:16 | enter Foreach | cflow.cs:226:22:226:22 | String x | -| cflow.cs:224:10:224:16 | enter Foreach | cflow.cs:230:13:232:13 | {...} | -| cflow.cs:224:10:224:16 | enter Foreach | cflow.cs:233:13:236:13 | if (...) ... | -| cflow.cs:224:10:224:16 | enter Foreach | cflow.cs:234:13:236:13 | {...} | -| cflow.cs:224:10:224:16 | exit Foreach (normal) | cflow.cs:224:10:224:16 | exit Foreach (normal) | -| cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | cflow.cs:224:10:224:16 | exit Foreach (normal) | -| cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | -| cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | cflow.cs:226:22:226:22 | String x | -| cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | cflow.cs:230:13:232:13 | {...} | -| cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | cflow.cs:233:13:236:13 | if (...) ... | -| cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | cflow.cs:234:13:236:13 | {...} | +| cflow.cs:211:9:221:9 | {...} | cflow.cs:213:17:213:32 | After ... > ... [false] | +| cflow.cs:211:9:221:9 | {...} | cflow.cs:213:17:213:32 | After ... > ... [true] | +| cflow.cs:211:9:221:9 | {...} | cflow.cs:217:17:217:32 | After ... < ... [false] | +| cflow.cs:211:9:221:9 | {...} | cflow.cs:217:17:217:32 | After ... < ... [true] | +| cflow.cs:211:9:221:9 | {...} | cflow.cs:221:18:221:34 | After ... < ... [false] | +| cflow.cs:211:9:221:9 | {...} | cflow.cs:221:18:221:34 | After ... < ... [true] | +| cflow.cs:213:17:213:32 | After ... > ... [false] | cflow.cs:213:17:213:32 | After ... > ... [false] | +| cflow.cs:213:17:213:32 | After ... > ... [false] | cflow.cs:217:17:217:32 | After ... < ... [false] | +| cflow.cs:213:17:213:32 | After ... > ... [false] | cflow.cs:217:17:217:32 | After ... < ... [true] | +| cflow.cs:213:17:213:32 | After ... > ... [true] | cflow.cs:213:17:213:32 | After ... > ... [true] | +| cflow.cs:217:17:217:32 | After ... < ... [false] | cflow.cs:217:17:217:32 | After ... < ... [false] | +| cflow.cs:217:17:217:32 | After ... < ... [true] | cflow.cs:217:17:217:32 | After ... < ... [true] | +| cflow.cs:221:18:221:34 | After ... < ... [false] | cflow.cs:221:18:221:34 | After ... < ... [false] | +| cflow.cs:221:18:221:34 | After ... < ... [true] | cflow.cs:221:18:221:34 | After ... < ... [true] | +| cflow.cs:224:10:224:16 | Entry | cflow.cs:224:10:224:16 | Entry | +| cflow.cs:224:10:224:16 | Entry | cflow.cs:226:9:237:9 | After foreach (... ... in ...) ... | +| cflow.cs:224:10:224:16 | Entry | cflow.cs:226:9:237:9 | [LoopHeader] foreach (... ... in ...) ... | +| cflow.cs:224:10:224:16 | Entry | cflow.cs:226:22:226:22 | String x | +| cflow.cs:224:10:224:16 | Entry | cflow.cs:226:27:226:64 | After call to method Repeat [empty] | +| cflow.cs:224:10:224:16 | Entry | cflow.cs:226:27:226:64 | After call to method Repeat [non-empty] | +| cflow.cs:224:10:224:16 | Entry | cflow.cs:229:17:229:32 | After ... > ... [false] | +| cflow.cs:224:10:224:16 | Entry | cflow.cs:229:17:229:32 | After ... > ... [true] | +| cflow.cs:224:10:224:16 | Entry | cflow.cs:233:17:233:32 | After ... < ... [false] | +| cflow.cs:224:10:224:16 | Entry | cflow.cs:233:17:233:32 | After ... < ... [true] | +| cflow.cs:226:9:237:9 | After foreach (... ... in ...) ... | cflow.cs:226:9:237:9 | After foreach (... ... in ...) ... | +| cflow.cs:226:9:237:9 | [LoopHeader] foreach (... ... in ...) ... | cflow.cs:226:9:237:9 | [LoopHeader] foreach (... ... in ...) ... | +| cflow.cs:226:22:226:22 | String x | cflow.cs:226:9:237:9 | [LoopHeader] foreach (... ... in ...) ... | | cflow.cs:226:22:226:22 | String x | cflow.cs:226:22:226:22 | String x | -| cflow.cs:226:22:226:22 | String x | cflow.cs:230:13:232:13 | {...} | -| cflow.cs:226:22:226:22 | String x | cflow.cs:233:13:236:13 | if (...) ... | -| cflow.cs:226:22:226:22 | String x | cflow.cs:234:13:236:13 | {...} | -| cflow.cs:230:13:232:13 | {...} | cflow.cs:230:13:232:13 | {...} | -| cflow.cs:233:13:236:13 | if (...) ... | cflow.cs:233:13:236:13 | if (...) ... | -| cflow.cs:233:13:236:13 | if (...) ... | cflow.cs:234:13:236:13 | {...} | -| cflow.cs:234:13:236:13 | {...} | cflow.cs:234:13:236:13 | {...} | -| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:240:10:240:13 | enter Goto | -| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:240:10:240:13 | exit Goto (normal) | -| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:242:5:242:9 | Label: | -| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:242:16:242:36 | [false] !... | -| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:242:16:242:36 | [true] !... | -| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:242:17:242:36 | [false] !... | -| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:242:17:242:36 | [true] !... | -| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:242:39:242:41 | {...} | -| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:244:9:244:41 | if (...) ... | -| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:244:31:244:41 | goto ...; | -| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:246:9:258:9 | switch (...) {...} | -| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:249:17:249:29 | goto default; | -| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:250:13:250:19 | case ...: | -| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:251:17:251:37 | ...; | -| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:253:13:253:19 | case ...: | -| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:254:17:254:27 | goto ...; | -| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:255:13:255:20 | default: | -| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:240:10:240:13 | exit Goto (normal) | -| cflow.cs:242:5:242:9 | Label: | cflow.cs:240:10:240:13 | exit Goto (normal) | +| cflow.cs:226:22:226:22 | String x | cflow.cs:229:17:229:32 | After ... > ... [false] | +| cflow.cs:226:22:226:22 | String x | cflow.cs:229:17:229:32 | After ... > ... [true] | +| cflow.cs:226:22:226:22 | String x | cflow.cs:233:17:233:32 | After ... < ... [false] | +| cflow.cs:226:22:226:22 | String x | cflow.cs:233:17:233:32 | After ... < ... [true] | +| cflow.cs:226:27:226:64 | After call to method Repeat [empty] | cflow.cs:226:27:226:64 | After call to method Repeat [empty] | +| cflow.cs:226:27:226:64 | After call to method Repeat [non-empty] | cflow.cs:226:9:237:9 | [LoopHeader] foreach (... ... in ...) ... | +| cflow.cs:226:27:226:64 | After call to method Repeat [non-empty] | cflow.cs:226:22:226:22 | String x | +| cflow.cs:226:27:226:64 | After call to method Repeat [non-empty] | cflow.cs:226:27:226:64 | After call to method Repeat [non-empty] | +| cflow.cs:226:27:226:64 | After call to method Repeat [non-empty] | cflow.cs:229:17:229:32 | After ... > ... [false] | +| cflow.cs:226:27:226:64 | After call to method Repeat [non-empty] | cflow.cs:229:17:229:32 | After ... > ... [true] | +| cflow.cs:226:27:226:64 | After call to method Repeat [non-empty] | cflow.cs:233:17:233:32 | After ... < ... [false] | +| cflow.cs:226:27:226:64 | After call to method Repeat [non-empty] | cflow.cs:233:17:233:32 | After ... < ... [true] | +| cflow.cs:229:17:229:32 | After ... > ... [false] | cflow.cs:229:17:229:32 | After ... > ... [false] | +| cflow.cs:229:17:229:32 | After ... > ... [false] | cflow.cs:233:17:233:32 | After ... < ... [false] | +| cflow.cs:229:17:229:32 | After ... > ... [false] | cflow.cs:233:17:233:32 | After ... < ... [true] | +| cflow.cs:229:17:229:32 | After ... > ... [true] | cflow.cs:229:17:229:32 | After ... > ... [true] | +| cflow.cs:233:17:233:32 | After ... < ... [false] | cflow.cs:233:17:233:32 | After ... < ... [false] | +| cflow.cs:233:17:233:32 | After ... < ... [true] | cflow.cs:233:17:233:32 | After ... < ... [true] | +| cflow.cs:240:10:240:13 | Entry | cflow.cs:240:10:240:13 | Entry | +| cflow.cs:240:10:240:13 | Entry | cflow.cs:242:5:242:9 | Label: | +| cflow.cs:240:10:240:13 | Entry | cflow.cs:242:12:242:41 | After if (...) ... | +| cflow.cs:240:10:240:13 | Entry | cflow.cs:242:19:242:35 | After ... == ... [false] | +| cflow.cs:240:10:240:13 | Entry | cflow.cs:242:19:242:35 | After ... == ... [true] | +| cflow.cs:240:10:240:13 | Entry | cflow.cs:244:13:244:28 | After ... > ... [false] | +| cflow.cs:240:10:240:13 | Entry | cflow.cs:244:13:244:28 | After ... > ... [true] | +| cflow.cs:240:10:240:13 | Entry | cflow.cs:246:9:258:9 | After switch (...) {...} | +| cflow.cs:240:10:240:13 | Entry | cflow.cs:248:18:248:18 | After 0 [match] | +| cflow.cs:240:10:240:13 | Entry | cflow.cs:248:18:248:18 | After 0 [no-match] | +| cflow.cs:240:10:240:13 | Entry | cflow.cs:250:18:250:18 | After 1 [match] | +| cflow.cs:240:10:240:13 | Entry | cflow.cs:250:18:250:18 | After 1 [no-match] | +| cflow.cs:240:10:240:13 | Entry | cflow.cs:253:18:253:18 | After 2 [match] | +| cflow.cs:240:10:240:13 | Entry | cflow.cs:253:18:253:18 | After 2 [no-match] | +| cflow.cs:240:10:240:13 | Entry | cflow.cs:255:13:255:20 | After default: [match] | | cflow.cs:242:5:242:9 | Label: | cflow.cs:242:5:242:9 | Label: | -| cflow.cs:242:5:242:9 | Label: | cflow.cs:242:16:242:36 | [false] !... | -| cflow.cs:242:5:242:9 | Label: | cflow.cs:242:16:242:36 | [true] !... | -| cflow.cs:242:5:242:9 | Label: | cflow.cs:242:17:242:36 | [false] !... | -| cflow.cs:242:5:242:9 | Label: | cflow.cs:242:17:242:36 | [true] !... | -| cflow.cs:242:5:242:9 | Label: | cflow.cs:242:39:242:41 | {...} | -| cflow.cs:242:5:242:9 | Label: | cflow.cs:244:9:244:41 | if (...) ... | -| cflow.cs:242:5:242:9 | Label: | cflow.cs:244:31:244:41 | goto ...; | -| cflow.cs:242:5:242:9 | Label: | cflow.cs:246:9:258:9 | switch (...) {...} | -| cflow.cs:242:5:242:9 | Label: | cflow.cs:249:17:249:29 | goto default; | -| cflow.cs:242:5:242:9 | Label: | cflow.cs:250:13:250:19 | case ...: | -| cflow.cs:242:5:242:9 | Label: | cflow.cs:251:17:251:37 | ...; | -| cflow.cs:242:5:242:9 | Label: | cflow.cs:253:13:253:19 | case ...: | -| cflow.cs:242:5:242:9 | Label: | cflow.cs:254:17:254:27 | goto ...; | -| cflow.cs:242:5:242:9 | Label: | cflow.cs:255:13:255:20 | default: | -| cflow.cs:242:16:242:36 | [false] !... | cflow.cs:242:16:242:36 | [false] !... | -| cflow.cs:242:16:242:36 | [true] !... | cflow.cs:242:16:242:36 | [true] !... | -| cflow.cs:242:16:242:36 | [true] !... | cflow.cs:242:39:242:41 | {...} | -| cflow.cs:242:17:242:36 | [false] !... | cflow.cs:242:16:242:36 | [true] !... | -| cflow.cs:242:17:242:36 | [false] !... | cflow.cs:242:17:242:36 | [false] !... | -| cflow.cs:242:17:242:36 | [false] !... | cflow.cs:242:39:242:41 | {...} | -| cflow.cs:242:17:242:36 | [true] !... | cflow.cs:242:16:242:36 | [false] !... | -| cflow.cs:242:17:242:36 | [true] !... | cflow.cs:242:17:242:36 | [true] !... | -| cflow.cs:242:39:242:41 | {...} | cflow.cs:242:39:242:41 | {...} | -| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:240:10:240:13 | exit Goto (normal) | -| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:244:9:244:41 | if (...) ... | -| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:244:31:244:41 | goto ...; | -| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:246:9:258:9 | switch (...) {...} | -| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:249:17:249:29 | goto default; | -| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:250:13:250:19 | case ...: | -| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:251:17:251:37 | ...; | -| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:253:13:253:19 | case ...: | -| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:254:17:254:27 | goto ...; | -| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:255:13:255:20 | default: | -| cflow.cs:244:31:244:41 | goto ...; | cflow.cs:244:31:244:41 | goto ...; | -| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:240:10:240:13 | exit Goto (normal) | -| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:246:9:258:9 | switch (...) {...} | -| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:249:17:249:29 | goto default; | -| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:250:13:250:19 | case ...: | -| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:251:17:251:37 | ...; | -| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:253:13:253:19 | case ...: | -| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:254:17:254:27 | goto ...; | -| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:255:13:255:20 | default: | -| cflow.cs:249:17:249:29 | goto default; | cflow.cs:249:17:249:29 | goto default; | -| cflow.cs:250:13:250:19 | case ...: | cflow.cs:250:13:250:19 | case ...: | -| cflow.cs:250:13:250:19 | case ...: | cflow.cs:251:17:251:37 | ...; | -| cflow.cs:250:13:250:19 | case ...: | cflow.cs:253:13:253:19 | case ...: | -| cflow.cs:250:13:250:19 | case ...: | cflow.cs:254:17:254:27 | goto ...; | -| cflow.cs:251:17:251:37 | ...; | cflow.cs:251:17:251:37 | ...; | -| cflow.cs:253:13:253:19 | case ...: | cflow.cs:253:13:253:19 | case ...: | -| cflow.cs:253:13:253:19 | case ...: | cflow.cs:254:17:254:27 | goto ...; | -| cflow.cs:254:17:254:27 | goto ...; | cflow.cs:254:17:254:27 | goto ...; | -| cflow.cs:255:13:255:20 | default: | cflow.cs:255:13:255:20 | default: | -| cflow.cs:261:49:261:53 | enter Yield | cflow.cs:261:49:261:53 | enter Yield | -| cflow.cs:261:49:261:53 | enter Yield | cflow.cs:261:49:261:53 | exit Yield | -| cflow.cs:261:49:261:53 | enter Yield | cflow.cs:261:49:261:53 | exit Yield (abnormal) | -| cflow.cs:261:49:261:53 | enter Yield | cflow.cs:261:49:261:53 | exit Yield (normal) | -| cflow.cs:261:49:261:53 | enter Yield | cflow.cs:264:25:264:25 | access to local variable i | -| cflow.cs:261:49:261:53 | enter Yield | cflow.cs:265:9:267:9 | {...} | -| cflow.cs:261:49:261:53 | enter Yield | cflow.cs:268:9:276:9 | try {...} ... | -| cflow.cs:261:49:261:53 | exit Yield | cflow.cs:261:49:261:53 | exit Yield | -| cflow.cs:261:49:261:53 | exit Yield (abnormal) | cflow.cs:261:49:261:53 | exit Yield (abnormal) | -| cflow.cs:261:49:261:53 | exit Yield (normal) | cflow.cs:261:49:261:53 | exit Yield (normal) | -| cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:261:49:261:53 | exit Yield | -| cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:261:49:261:53 | exit Yield (abnormal) | -| cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:261:49:261:53 | exit Yield (normal) | -| cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:264:25:264:25 | access to local variable i | -| cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:265:9:267:9 | {...} | -| cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:268:9:276:9 | try {...} ... | -| cflow.cs:265:9:267:9 | {...} | cflow.cs:265:9:267:9 | {...} | -| cflow.cs:268:9:276:9 | try {...} ... | cflow.cs:261:49:261:53 | exit Yield | -| cflow.cs:268:9:276:9 | try {...} ... | cflow.cs:261:49:261:53 | exit Yield (abnormal) | -| cflow.cs:268:9:276:9 | try {...} ... | cflow.cs:261:49:261:53 | exit Yield (normal) | -| cflow.cs:268:9:276:9 | try {...} ... | cflow.cs:268:9:276:9 | try {...} ... | -| cflow.cs:282:5:282:18 | enter ControlFlowSub | cflow.cs:282:5:282:18 | enter ControlFlowSub | -| cflow.cs:284:5:284:18 | enter ControlFlowSub | cflow.cs:284:5:284:18 | enter ControlFlowSub | -| cflow.cs:286:5:286:18 | enter ControlFlowSub | cflow.cs:286:5:286:18 | enter ControlFlowSub | -| cflow.cs:289:7:289:18 | enter DelegateCall | cflow.cs:289:7:289:18 | enter DelegateCall | -| cflow.cs:291:12:291:12 | enter M | cflow.cs:291:12:291:12 | enter M | -| cflow.cs:296:5:296:25 | enter NegationInConstructor | cflow.cs:296:5:296:25 | enter NegationInConstructor | -| cflow.cs:298:10:298:10 | enter M | cflow.cs:298:10:298:10 | enter M | -| cflow.cs:298:10:298:10 | enter M | cflow.cs:300:44:300:51 | [false] !... | -| cflow.cs:298:10:298:10 | enter M | cflow.cs:300:44:300:51 | [true] !... | -| cflow.cs:298:10:298:10 | enter M | cflow.cs:300:44:300:64 | ... && ... | -| cflow.cs:298:10:298:10 | enter M | cflow.cs:300:56:300:56 | access to parameter s | -| cflow.cs:300:44:300:51 | [false] !... | cflow.cs:300:44:300:51 | [false] !... | -| cflow.cs:300:44:300:51 | [true] !... | cflow.cs:300:44:300:51 | [true] !... | -| cflow.cs:300:44:300:51 | [true] !... | cflow.cs:300:56:300:56 | access to parameter s | -| cflow.cs:300:44:300:64 | ... && ... | cflow.cs:300:44:300:64 | ... && ... | -| cflow.cs:300:56:300:56 | access to parameter s | cflow.cs:300:56:300:56 | access to parameter s | -| cflow.cs:304:7:304:18 | enter LambdaGetter | cflow.cs:304:7:304:18 | enter LambdaGetter | -| cflow.cs:306:60:310:5 | enter (...) => ... | cflow.cs:306:60:310:5 | enter (...) => ... | -| cflow.cs:306:60:310:5 | enter get__getter | cflow.cs:306:60:310:5 | enter get__getter | +| cflow.cs:242:5:242:9 | Label: | cflow.cs:242:12:242:41 | After if (...) ... | +| cflow.cs:242:5:242:9 | Label: | cflow.cs:242:19:242:35 | After ... == ... [false] | +| cflow.cs:242:5:242:9 | Label: | cflow.cs:242:19:242:35 | After ... == ... [true] | +| cflow.cs:242:5:242:9 | Label: | cflow.cs:244:13:244:28 | After ... > ... [false] | +| cflow.cs:242:5:242:9 | Label: | cflow.cs:244:13:244:28 | After ... > ... [true] | +| cflow.cs:242:5:242:9 | Label: | cflow.cs:246:9:258:9 | After switch (...) {...} | +| cflow.cs:242:5:242:9 | Label: | cflow.cs:248:18:248:18 | After 0 [match] | +| cflow.cs:242:5:242:9 | Label: | cflow.cs:248:18:248:18 | After 0 [no-match] | +| cflow.cs:242:5:242:9 | Label: | cflow.cs:250:18:250:18 | After 1 [match] | +| cflow.cs:242:5:242:9 | Label: | cflow.cs:250:18:250:18 | After 1 [no-match] | +| cflow.cs:242:5:242:9 | Label: | cflow.cs:253:18:253:18 | After 2 [match] | +| cflow.cs:242:5:242:9 | Label: | cflow.cs:253:18:253:18 | After 2 [no-match] | +| cflow.cs:242:5:242:9 | Label: | cflow.cs:255:13:255:20 | After default: [match] | +| cflow.cs:242:12:242:41 | After if (...) ... | cflow.cs:242:12:242:41 | After if (...) ... | +| cflow.cs:242:12:242:41 | After if (...) ... | cflow.cs:244:13:244:28 | After ... > ... [false] | +| cflow.cs:242:12:242:41 | After if (...) ... | cflow.cs:244:13:244:28 | After ... > ... [true] | +| cflow.cs:242:12:242:41 | After if (...) ... | cflow.cs:246:9:258:9 | After switch (...) {...} | +| cflow.cs:242:12:242:41 | After if (...) ... | cflow.cs:248:18:248:18 | After 0 [match] | +| cflow.cs:242:12:242:41 | After if (...) ... | cflow.cs:248:18:248:18 | After 0 [no-match] | +| cflow.cs:242:12:242:41 | After if (...) ... | cflow.cs:250:18:250:18 | After 1 [match] | +| cflow.cs:242:12:242:41 | After if (...) ... | cflow.cs:250:18:250:18 | After 1 [no-match] | +| cflow.cs:242:12:242:41 | After if (...) ... | cflow.cs:253:18:253:18 | After 2 [match] | +| cflow.cs:242:12:242:41 | After if (...) ... | cflow.cs:253:18:253:18 | After 2 [no-match] | +| cflow.cs:242:12:242:41 | After if (...) ... | cflow.cs:255:13:255:20 | After default: [match] | +| cflow.cs:242:19:242:35 | After ... == ... [false] | cflow.cs:242:19:242:35 | After ... == ... [false] | +| cflow.cs:242:19:242:35 | After ... == ... [true] | cflow.cs:242:19:242:35 | After ... == ... [true] | +| cflow.cs:244:13:244:28 | After ... > ... [false] | cflow.cs:244:13:244:28 | After ... > ... [false] | +| cflow.cs:244:13:244:28 | After ... > ... [false] | cflow.cs:246:9:258:9 | After switch (...) {...} | +| cflow.cs:244:13:244:28 | After ... > ... [false] | cflow.cs:248:18:248:18 | After 0 [match] | +| cflow.cs:244:13:244:28 | After ... > ... [false] | cflow.cs:248:18:248:18 | After 0 [no-match] | +| cflow.cs:244:13:244:28 | After ... > ... [false] | cflow.cs:250:18:250:18 | After 1 [match] | +| cflow.cs:244:13:244:28 | After ... > ... [false] | cflow.cs:250:18:250:18 | After 1 [no-match] | +| cflow.cs:244:13:244:28 | After ... > ... [false] | cflow.cs:253:18:253:18 | After 2 [match] | +| cflow.cs:244:13:244:28 | After ... > ... [false] | cflow.cs:253:18:253:18 | After 2 [no-match] | +| cflow.cs:244:13:244:28 | After ... > ... [false] | cflow.cs:255:13:255:20 | After default: [match] | +| cflow.cs:244:13:244:28 | After ... > ... [true] | cflow.cs:244:13:244:28 | After ... > ... [true] | +| cflow.cs:246:9:258:9 | After switch (...) {...} | cflow.cs:246:9:258:9 | After switch (...) {...} | +| cflow.cs:248:18:248:18 | After 0 [match] | cflow.cs:248:18:248:18 | After 0 [match] | +| cflow.cs:248:18:248:18 | After 0 [no-match] | cflow.cs:248:18:248:18 | After 0 [no-match] | +| cflow.cs:248:18:248:18 | After 0 [no-match] | cflow.cs:250:18:250:18 | After 1 [match] | +| cflow.cs:248:18:248:18 | After 0 [no-match] | cflow.cs:250:18:250:18 | After 1 [no-match] | +| cflow.cs:248:18:248:18 | After 0 [no-match] | cflow.cs:253:18:253:18 | After 2 [match] | +| cflow.cs:248:18:248:18 | After 0 [no-match] | cflow.cs:253:18:253:18 | After 2 [no-match] | +| cflow.cs:250:18:250:18 | After 1 [match] | cflow.cs:250:18:250:18 | After 1 [match] | +| cflow.cs:250:18:250:18 | After 1 [no-match] | cflow.cs:250:18:250:18 | After 1 [no-match] | +| cflow.cs:250:18:250:18 | After 1 [no-match] | cflow.cs:253:18:253:18 | After 2 [match] | +| cflow.cs:250:18:250:18 | After 1 [no-match] | cflow.cs:253:18:253:18 | After 2 [no-match] | +| cflow.cs:253:18:253:18 | After 2 [match] | cflow.cs:253:18:253:18 | After 2 [match] | +| cflow.cs:253:18:253:18 | After 2 [no-match] | cflow.cs:253:18:253:18 | After 2 [no-match] | +| cflow.cs:255:13:255:20 | After default: [match] | cflow.cs:255:13:255:20 | After default: [match] | +| cflow.cs:261:49:261:53 | Entry | cflow.cs:261:49:261:53 | Entry | +| cflow.cs:261:49:261:53 | Entry | cflow.cs:261:49:261:53 | Exceptional Exit | +| cflow.cs:261:49:261:53 | Entry | cflow.cs:261:49:261:53 | Exit | +| cflow.cs:261:49:261:53 | Entry | cflow.cs:261:49:261:53 | Normal Exit | +| cflow.cs:261:49:261:53 | Entry | cflow.cs:264:25:264:30 | After ... < ... [false] | +| cflow.cs:261:49:261:53 | Entry | cflow.cs:264:25:264:30 | After ... < ... [true] | +| cflow.cs:261:49:261:53 | Entry | cflow.cs:264:25:264:30 | Before ... < ... | +| cflow.cs:261:49:261:53 | Entry | cflow.cs:268:9:276:9 | After try {...} ... | +| cflow.cs:261:49:261:53 | Exceptional Exit | cflow.cs:261:49:261:53 | Exceptional Exit | +| cflow.cs:261:49:261:53 | Exit | cflow.cs:261:49:261:53 | Exit | +| cflow.cs:261:49:261:53 | Normal Exit | cflow.cs:261:49:261:53 | Normal Exit | +| cflow.cs:264:25:264:30 | After ... < ... [false] | cflow.cs:261:49:261:53 | Exceptional Exit | +| cflow.cs:264:25:264:30 | After ... < ... [false] | cflow.cs:261:49:261:53 | Exit | +| cflow.cs:264:25:264:30 | After ... < ... [false] | cflow.cs:261:49:261:53 | Normal Exit | +| cflow.cs:264:25:264:30 | After ... < ... [false] | cflow.cs:264:25:264:30 | After ... < ... [false] | +| cflow.cs:264:25:264:30 | After ... < ... [false] | cflow.cs:268:9:276:9 | After try {...} ... | +| cflow.cs:264:25:264:30 | After ... < ... [true] | cflow.cs:264:25:264:30 | After ... < ... [true] | +| cflow.cs:264:25:264:30 | Before ... < ... | cflow.cs:261:49:261:53 | Exceptional Exit | +| cflow.cs:264:25:264:30 | Before ... < ... | cflow.cs:261:49:261:53 | Exit | +| cflow.cs:264:25:264:30 | Before ... < ... | cflow.cs:261:49:261:53 | Normal Exit | +| cflow.cs:264:25:264:30 | Before ... < ... | cflow.cs:264:25:264:30 | After ... < ... [false] | +| cflow.cs:264:25:264:30 | Before ... < ... | cflow.cs:264:25:264:30 | After ... < ... [true] | +| cflow.cs:264:25:264:30 | Before ... < ... | cflow.cs:264:25:264:30 | Before ... < ... | +| cflow.cs:264:25:264:30 | Before ... < ... | cflow.cs:268:9:276:9 | After try {...} ... | +| cflow.cs:268:9:276:9 | After try {...} ... | cflow.cs:268:9:276:9 | After try {...} ... | +| cflow.cs:282:5:282:18 | Entry | cflow.cs:282:5:282:18 | Entry | +| cflow.cs:284:5:284:18 | Entry | cflow.cs:284:5:284:18 | Entry | +| cflow.cs:286:5:286:18 | Entry | cflow.cs:286:5:286:18 | Entry | +| cflow.cs:289:7:289:18 | Entry | cflow.cs:289:7:289:18 | Entry | +| cflow.cs:291:12:291:12 | Entry | cflow.cs:291:12:291:12 | Entry | +| cflow.cs:296:5:296:25 | Entry | cflow.cs:296:5:296:25 | Entry | +| cflow.cs:298:10:298:10 | Entry | cflow.cs:298:10:298:10 | Entry | +| cflow.cs:298:10:298:10 | Entry | cflow.cs:300:44:300:64 | After ... && ... | +| cflow.cs:298:10:298:10 | Entry | cflow.cs:300:46:300:50 | After ... > ... [false] | +| cflow.cs:298:10:298:10 | Entry | cflow.cs:300:46:300:50 | After ... > ... [true] | +| cflow.cs:300:44:300:64 | After ... && ... | cflow.cs:300:44:300:64 | After ... && ... | +| cflow.cs:300:46:300:50 | After ... > ... [false] | cflow.cs:300:46:300:50 | After ... > ... [false] | +| cflow.cs:300:46:300:50 | After ... > ... [true] | cflow.cs:300:46:300:50 | After ... > ... [true] | +| cflow.cs:304:7:304:18 | Entry | cflow.cs:304:7:304:18 | Entry | +| cflow.cs:306:60:310:5 | Entry | cflow.cs:306:60:310:5 | Entry | +| cflow.cs:306:60:310:5 | Entry | cflow.cs:306:60:310:5 | Entry | postBlockDominance -| AccessorCalls.cs:1:7:1:19 | enter AccessorCalls | AccessorCalls.cs:1:7:1:19 | enter AccessorCalls | -| AccessorCalls.cs:5:23:5:25 | enter get_Item | AccessorCalls.cs:5:23:5:25 | enter get_Item | -| AccessorCalls.cs:5:33:5:35 | enter set_Item | AccessorCalls.cs:5:33:5:35 | enter set_Item | -| AccessorCalls.cs:7:32:7:34 | enter add_Event | AccessorCalls.cs:7:32:7:34 | enter add_Event | -| AccessorCalls.cs:7:40:7:45 | enter remove_Event | AccessorCalls.cs:7:40:7:45 | enter remove_Event | -| AccessorCalls.cs:10:10:10:11 | enter M1 | AccessorCalls.cs:10:10:10:11 | enter M1 | -| AccessorCalls.cs:19:10:19:11 | enter M2 | AccessorCalls.cs:19:10:19:11 | enter M2 | -| AccessorCalls.cs:28:10:28:11 | enter M3 | AccessorCalls.cs:28:10:28:11 | enter M3 | -| AccessorCalls.cs:35:10:35:11 | enter M4 | AccessorCalls.cs:35:10:35:11 | enter M4 | -| AccessorCalls.cs:42:10:42:11 | enter M5 | AccessorCalls.cs:42:10:42:11 | enter M5 | -| AccessorCalls.cs:49:10:49:11 | enter M6 | AccessorCalls.cs:49:10:49:11 | enter M6 | -| AccessorCalls.cs:56:10:56:11 | enter M7 | AccessorCalls.cs:56:10:56:11 | enter M7 | -| AccessorCalls.cs:61:10:61:11 | enter M8 | AccessorCalls.cs:61:10:61:11 | enter M8 | -| AccessorCalls.cs:66:10:66:11 | enter M9 | AccessorCalls.cs:66:10:66:11 | enter M9 | -| ArrayCreation.cs:1:7:1:19 | enter ArrayCreation | ArrayCreation.cs:1:7:1:19 | enter ArrayCreation | -| ArrayCreation.cs:3:11:3:12 | enter M1 | ArrayCreation.cs:3:11:3:12 | enter M1 | -| ArrayCreation.cs:5:12:5:13 | enter M2 | ArrayCreation.cs:5:12:5:13 | enter M2 | -| ArrayCreation.cs:7:11:7:12 | enter M3 | ArrayCreation.cs:7:11:7:12 | enter M3 | -| ArrayCreation.cs:9:12:9:13 | enter M4 | ArrayCreation.cs:9:12:9:13 | enter M4 | -| Assert.cs:5:7:5:17 | enter AssertTests | Assert.cs:5:7:5:17 | enter AssertTests | -| Assert.cs:7:10:7:11 | enter M1 | Assert.cs:7:10:7:11 | enter M1 | -| Assert.cs:7:10:7:11 | exit M1 | Assert.cs:7:10:7:11 | exit M1 | -| Assert.cs:7:10:7:11 | exit M1 (abnormal) | Assert.cs:7:10:7:11 | exit M1 (abnormal) | -| Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:7:10:7:11 | enter M1 | -| Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:9:20:9:32 | ... ? ... : ... | -| Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:9:24:9:27 | null | -| Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:9:31:9:32 | "" | -| Assert.cs:9:24:9:27 | null | Assert.cs:9:24:9:27 | null | -| Assert.cs:9:31:9:32 | "" | Assert.cs:9:31:9:32 | "" | -| Assert.cs:11:9:11:36 | ...; | Assert.cs:7:10:7:11 | enter M1 | -| Assert.cs:11:9:11:36 | ...; | Assert.cs:9:20:9:32 | ... ? ... : ... | -| Assert.cs:11:9:11:36 | ...; | Assert.cs:9:24:9:27 | null | -| Assert.cs:11:9:11:36 | ...; | Assert.cs:9:31:9:32 | "" | -| Assert.cs:11:9:11:36 | ...; | Assert.cs:11:9:11:36 | ...; | -| Assert.cs:14:10:14:11 | enter M2 | Assert.cs:14:10:14:11 | enter M2 | -| Assert.cs:14:10:14:11 | exit M2 | Assert.cs:14:10:14:11 | exit M2 | -| Assert.cs:14:10:14:11 | exit M2 (abnormal) | Assert.cs:14:10:14:11 | exit M2 (abnormal) | -| Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:14:10:14:11 | enter M2 | -| Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:16:20:16:32 | ... ? ... : ... | -| Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:16:24:16:27 | null | -| Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:16:31:16:32 | "" | -| Assert.cs:16:24:16:27 | null | Assert.cs:16:24:16:27 | null | -| Assert.cs:16:31:16:32 | "" | Assert.cs:16:31:16:32 | "" | -| Assert.cs:18:9:18:36 | ...; | Assert.cs:14:10:14:11 | enter M2 | -| Assert.cs:18:9:18:36 | ...; | Assert.cs:16:20:16:32 | ... ? ... : ... | -| Assert.cs:18:9:18:36 | ...; | Assert.cs:16:24:16:27 | null | -| Assert.cs:18:9:18:36 | ...; | Assert.cs:16:31:16:32 | "" | -| Assert.cs:18:9:18:36 | ...; | Assert.cs:18:9:18:36 | ...; | -| Assert.cs:21:10:21:11 | enter M3 | Assert.cs:21:10:21:11 | enter M3 | -| Assert.cs:21:10:21:11 | exit M3 | Assert.cs:21:10:21:11 | exit M3 | -| Assert.cs:21:10:21:11 | exit M3 (abnormal) | Assert.cs:21:10:21:11 | exit M3 (abnormal) | -| Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:21:10:21:11 | enter M3 | -| Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:23:20:23:32 | ... ? ... : ... | -| Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:23:24:23:27 | null | -| Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:23:31:23:32 | "" | -| Assert.cs:23:24:23:27 | null | Assert.cs:23:24:23:27 | null | -| Assert.cs:23:31:23:32 | "" | Assert.cs:23:31:23:32 | "" | -| Assert.cs:25:9:25:36 | ...; | Assert.cs:21:10:21:11 | enter M3 | -| Assert.cs:25:9:25:36 | ...; | Assert.cs:23:20:23:32 | ... ? ... : ... | -| Assert.cs:25:9:25:36 | ...; | Assert.cs:23:24:23:27 | null | -| Assert.cs:25:9:25:36 | ...; | Assert.cs:23:31:23:32 | "" | -| Assert.cs:25:9:25:36 | ...; | Assert.cs:25:9:25:36 | ...; | -| Assert.cs:28:10:28:11 | enter M4 | Assert.cs:28:10:28:11 | enter M4 | -| Assert.cs:28:10:28:11 | exit M4 | Assert.cs:28:10:28:11 | exit M4 | -| Assert.cs:28:10:28:11 | exit M4 (abnormal) | Assert.cs:28:10:28:11 | exit M4 (abnormal) | -| Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:28:10:28:11 | enter M4 | -| Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:30:20:30:32 | ... ? ... : ... | -| Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:30:24:30:27 | null | -| Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:30:31:30:32 | "" | -| Assert.cs:30:24:30:27 | null | Assert.cs:30:24:30:27 | null | -| Assert.cs:30:31:30:32 | "" | Assert.cs:30:31:30:32 | "" | -| Assert.cs:32:9:32:36 | ...; | Assert.cs:28:10:28:11 | enter M4 | -| Assert.cs:32:9:32:36 | ...; | Assert.cs:30:20:30:32 | ... ? ... : ... | -| Assert.cs:32:9:32:36 | ...; | Assert.cs:30:24:30:27 | null | -| Assert.cs:32:9:32:36 | ...; | Assert.cs:30:31:30:32 | "" | -| Assert.cs:32:9:32:36 | ...; | Assert.cs:32:9:32:36 | ...; | -| Assert.cs:35:10:35:11 | enter M5 | Assert.cs:35:10:35:11 | enter M5 | -| Assert.cs:35:10:35:11 | exit M5 | Assert.cs:35:10:35:11 | exit M5 | -| Assert.cs:35:10:35:11 | exit M5 (abnormal) | Assert.cs:35:10:35:11 | exit M5 (abnormal) | -| Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:35:10:35:11 | enter M5 | -| Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:37:20:37:32 | ... ? ... : ... | -| Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:37:24:37:27 | null | -| Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:37:31:37:32 | "" | -| Assert.cs:37:24:37:27 | null | Assert.cs:37:24:37:27 | null | -| Assert.cs:37:31:37:32 | "" | Assert.cs:37:31:37:32 | "" | -| Assert.cs:39:9:39:36 | ...; | Assert.cs:35:10:35:11 | enter M5 | -| Assert.cs:39:9:39:36 | ...; | Assert.cs:37:20:37:32 | ... ? ... : ... | -| Assert.cs:39:9:39:36 | ...; | Assert.cs:37:24:37:27 | null | -| Assert.cs:39:9:39:36 | ...; | Assert.cs:37:31:37:32 | "" | -| Assert.cs:39:9:39:36 | ...; | Assert.cs:39:9:39:36 | ...; | -| Assert.cs:42:10:42:11 | enter M6 | Assert.cs:42:10:42:11 | enter M6 | -| Assert.cs:42:10:42:11 | exit M6 | Assert.cs:42:10:42:11 | exit M6 | -| Assert.cs:42:10:42:11 | exit M6 (abnormal) | Assert.cs:42:10:42:11 | exit M6 (abnormal) | -| Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:42:10:42:11 | enter M6 | -| Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:44:20:44:32 | ... ? ... : ... | -| Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:44:24:44:27 | null | -| Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:44:31:44:32 | "" | -| Assert.cs:44:24:44:27 | null | Assert.cs:44:24:44:27 | null | -| Assert.cs:44:31:44:32 | "" | Assert.cs:44:31:44:32 | "" | -| Assert.cs:46:9:46:36 | ...; | Assert.cs:42:10:42:11 | enter M6 | -| Assert.cs:46:9:46:36 | ...; | Assert.cs:44:20:44:32 | ... ? ... : ... | -| Assert.cs:46:9:46:36 | ...; | Assert.cs:44:24:44:27 | null | -| Assert.cs:46:9:46:36 | ...; | Assert.cs:44:31:44:32 | "" | -| Assert.cs:46:9:46:36 | ...; | Assert.cs:46:9:46:36 | ...; | -| Assert.cs:49:10:49:11 | enter M7 | Assert.cs:49:10:49:11 | enter M7 | -| Assert.cs:49:10:49:11 | exit M7 | Assert.cs:49:10:49:11 | exit M7 | -| Assert.cs:49:10:49:11 | exit M7 (abnormal) | Assert.cs:49:10:49:11 | exit M7 (abnormal) | -| Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:49:10:49:11 | enter M7 | -| Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:51:20:51:32 | ... ? ... : ... | -| Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:51:24:51:27 | null | -| Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:51:31:51:32 | "" | -| Assert.cs:51:24:51:27 | null | Assert.cs:51:24:51:27 | null | -| Assert.cs:51:31:51:32 | "" | Assert.cs:51:31:51:32 | "" | -| Assert.cs:53:9:53:36 | ...; | Assert.cs:49:10:49:11 | enter M7 | -| Assert.cs:53:9:53:36 | ...; | Assert.cs:51:20:51:32 | ... ? ... : ... | -| Assert.cs:53:9:53:36 | ...; | Assert.cs:51:24:51:27 | null | -| Assert.cs:53:9:53:36 | ...; | Assert.cs:51:31:51:32 | "" | -| Assert.cs:53:9:53:36 | ...; | Assert.cs:53:9:53:36 | ...; | -| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:56:10:56:11 | enter M8 | -| Assert.cs:56:10:56:11 | exit M8 | Assert.cs:56:10:56:11 | exit M8 | -| Assert.cs:56:10:56:11 | exit M8 (abnormal) | Assert.cs:56:10:56:11 | exit M8 (abnormal) | -| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:56:10:56:11 | enter M8 | -| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:20:58:32 | ... ? ... : ... | -| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:24:58:27 | null | -| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:31:58:32 | "" | -| Assert.cs:58:24:58:27 | null | Assert.cs:58:24:58:27 | null | -| Assert.cs:58:31:58:32 | "" | Assert.cs:58:31:58:32 | "" | -| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:56:10:56:11 | enter M8 | -| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:58:20:58:32 | ... ? ... : ... | -| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:58:24:58:27 | null | -| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:58:31:58:32 | "" | -| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:59:23:59:36 | ... && ... | -| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:59:36:59:36 | access to parameter b | -| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:36:59:36 | access to parameter b | -| Assert.cs:60:9:60:36 | ...; | Assert.cs:56:10:56:11 | enter M8 | -| Assert.cs:60:9:60:36 | ...; | Assert.cs:58:20:58:32 | ... ? ... : ... | -| Assert.cs:60:9:60:36 | ...; | Assert.cs:58:24:58:27 | null | -| Assert.cs:60:9:60:36 | ...; | Assert.cs:58:31:58:32 | "" | -| Assert.cs:60:9:60:36 | ...; | Assert.cs:59:23:59:36 | ... && ... | -| Assert.cs:60:9:60:36 | ...; | Assert.cs:59:36:59:36 | access to parameter b | -| Assert.cs:60:9:60:36 | ...; | Assert.cs:60:9:60:36 | ...; | -| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:63:10:63:11 | enter M9 | -| Assert.cs:63:10:63:11 | exit M9 | Assert.cs:63:10:63:11 | exit M9 | -| Assert.cs:63:10:63:11 | exit M9 (abnormal) | Assert.cs:63:10:63:11 | exit M9 (abnormal) | -| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:63:10:63:11 | enter M9 | -| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:20:65:32 | ... ? ... : ... | -| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:24:65:27 | null | -| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:31:65:32 | "" | -| Assert.cs:65:24:65:27 | null | Assert.cs:65:24:65:27 | null | -| Assert.cs:65:31:65:32 | "" | Assert.cs:65:31:65:32 | "" | -| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:63:10:63:11 | enter M9 | -| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:65:20:65:32 | ... ? ... : ... | -| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:65:24:65:27 | null | -| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:65:31:65:32 | "" | -| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:66:24:66:37 | ... \|\| ... | -| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:66:37:66:37 | access to parameter b | -| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:37:66:37 | access to parameter b | -| Assert.cs:67:9:67:36 | ...; | Assert.cs:63:10:63:11 | enter M9 | -| Assert.cs:67:9:67:36 | ...; | Assert.cs:65:20:65:32 | ... ? ... : ... | -| Assert.cs:67:9:67:36 | ...; | Assert.cs:65:24:65:27 | null | -| Assert.cs:67:9:67:36 | ...; | Assert.cs:65:31:65:32 | "" | -| Assert.cs:67:9:67:36 | ...; | Assert.cs:66:24:66:37 | ... \|\| ... | -| Assert.cs:67:9:67:36 | ...; | Assert.cs:66:37:66:37 | access to parameter b | -| Assert.cs:67:9:67:36 | ...; | Assert.cs:67:9:67:36 | ...; | -| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:70:10:70:12 | enter M10 | -| Assert.cs:70:10:70:12 | exit M10 | Assert.cs:70:10:70:12 | exit M10 | -| Assert.cs:70:10:70:12 | exit M10 (abnormal) | Assert.cs:70:10:70:12 | exit M10 (abnormal) | -| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:70:10:70:12 | enter M10 | -| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:20:72:32 | ... ? ... : ... | -| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:24:72:27 | null | -| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:31:72:32 | "" | -| Assert.cs:72:24:72:27 | null | Assert.cs:72:24:72:27 | null | -| Assert.cs:72:31:72:32 | "" | Assert.cs:72:31:72:32 | "" | -| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:70:10:70:12 | enter M10 | -| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:72:20:72:32 | ... ? ... : ... | -| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:72:24:72:27 | null | -| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:72:31:72:32 | "" | -| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:73:23:73:36 | ... && ... | -| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:73:36:73:36 | access to parameter b | -| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:36:73:36 | access to parameter b | -| Assert.cs:74:9:74:36 | ...; | Assert.cs:70:10:70:12 | enter M10 | -| Assert.cs:74:9:74:36 | ...; | Assert.cs:72:20:72:32 | ... ? ... : ... | -| Assert.cs:74:9:74:36 | ...; | Assert.cs:72:24:72:27 | null | -| Assert.cs:74:9:74:36 | ...; | Assert.cs:72:31:72:32 | "" | -| Assert.cs:74:9:74:36 | ...; | Assert.cs:73:23:73:36 | ... && ... | -| Assert.cs:74:9:74:36 | ...; | Assert.cs:73:36:73:36 | access to parameter b | -| Assert.cs:74:9:74:36 | ...; | Assert.cs:74:9:74:36 | ...; | -| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:77:10:77:12 | enter M11 | -| Assert.cs:77:10:77:12 | exit M11 | Assert.cs:77:10:77:12 | exit M11 | -| Assert.cs:77:10:77:12 | exit M11 (abnormal) | Assert.cs:77:10:77:12 | exit M11 (abnormal) | -| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:77:10:77:12 | enter M11 | -| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:20:79:32 | ... ? ... : ... | -| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:24:79:27 | null | -| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:31:79:32 | "" | -| Assert.cs:79:24:79:27 | null | Assert.cs:79:24:79:27 | null | -| Assert.cs:79:31:79:32 | "" | Assert.cs:79:31:79:32 | "" | -| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:77:10:77:12 | enter M11 | -| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:79:20:79:32 | ... ? ... : ... | -| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:79:24:79:27 | null | -| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:79:31:79:32 | "" | -| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:80:24:80:37 | ... \|\| ... | -| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:80:37:80:37 | access to parameter b | -| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:37:80:37 | access to parameter b | -| Assert.cs:81:9:81:36 | ...; | Assert.cs:77:10:77:12 | enter M11 | -| Assert.cs:81:9:81:36 | ...; | Assert.cs:79:20:79:32 | ... ? ... : ... | -| Assert.cs:81:9:81:36 | ...; | Assert.cs:79:24:79:27 | null | -| Assert.cs:81:9:81:36 | ...; | Assert.cs:79:31:79:32 | "" | -| Assert.cs:81:9:81:36 | ...; | Assert.cs:80:24:80:37 | ... \|\| ... | -| Assert.cs:81:9:81:36 | ...; | Assert.cs:80:37:80:37 | access to parameter b | -| Assert.cs:81:9:81:36 | ...; | Assert.cs:81:9:81:36 | ...; | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:84:10:84:12 | exit M12 | Assert.cs:84:10:84:12 | exit M12 | -| Assert.cs:84:10:84:12 | exit M12 (abnormal) | Assert.cs:84:10:84:12 | exit M12 (abnormal) | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:86:24:86:27 | null | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:86:31:86:32 | "" | -| Assert.cs:86:24:86:27 | null | Assert.cs:86:24:86:27 | null | -| Assert.cs:86:31:86:32 | "" | Assert.cs:86:31:86:32 | "" | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:86:24:86:27 | null | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:86:31:86:32 | "" | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:88:9:88:36 | ...; | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:86:24:86:27 | null | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:86:31:86:32 | "" | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:88:9:88:36 | ...; | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | -| Assert.cs:90:17:90:20 | null | Assert.cs:90:17:90:20 | null | -| Assert.cs:90:24:90:25 | "" | Assert.cs:90:24:90:25 | "" | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:86:24:86:27 | null | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:86:31:86:32 | "" | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:88:9:88:36 | ...; | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:90:17:90:20 | null | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:90:24:90:25 | "" | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:92:9:92:36 | ...; | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:86:24:86:27 | null | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:86:31:86:32 | "" | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:88:9:88:36 | ...; | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:92:9:92:36 | ...; | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | -| Assert.cs:94:17:94:20 | null | Assert.cs:94:17:94:20 | null | -| Assert.cs:94:24:94:25 | "" | Assert.cs:94:24:94:25 | "" | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:86:24:86:27 | null | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:86:31:86:32 | "" | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:88:9:88:36 | ...; | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:90:17:90:20 | null | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:90:24:90:25 | "" | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:92:9:92:36 | ...; | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:94:17:94:20 | null | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:94:24:94:25 | "" | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:96:9:96:36 | ...; | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:86:24:86:27 | null | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:86:31:86:32 | "" | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:88:9:88:36 | ...; | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:92:9:92:36 | ...; | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:96:9:96:36 | ...; | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | -| Assert.cs:98:17:98:20 | null | Assert.cs:98:17:98:20 | null | -| Assert.cs:98:24:98:25 | "" | Assert.cs:98:24:98:25 | "" | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:86:24:86:27 | null | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:86:31:86:32 | "" | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:88:9:88:36 | ...; | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:90:17:90:20 | null | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:90:24:90:25 | "" | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:92:9:92:36 | ...; | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:94:17:94:20 | null | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:94:24:94:25 | "" | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:96:9:96:36 | ...; | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:98:17:98:20 | null | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:98:24:98:25 | "" | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:100:9:100:36 | ...; | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:86:24:86:27 | null | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:86:31:86:32 | "" | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:88:9:88:36 | ...; | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:92:9:92:36 | ...; | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:96:9:96:36 | ...; | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:100:9:100:36 | ...; | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | -| Assert.cs:102:17:102:20 | null | Assert.cs:102:17:102:20 | null | -| Assert.cs:102:24:102:25 | "" | Assert.cs:102:24:102:25 | "" | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:86:24:86:27 | null | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:86:31:86:32 | "" | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:88:9:88:36 | ...; | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:90:17:90:20 | null | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:90:24:90:25 | "" | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:92:9:92:36 | ...; | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:94:17:94:20 | null | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:94:24:94:25 | "" | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:96:9:96:36 | ...; | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:98:17:98:20 | null | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:98:24:98:25 | "" | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:100:9:100:36 | ...; | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:102:17:102:20 | null | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:102:24:102:25 | "" | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:104:9:104:36 | ...; | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:86:24:86:27 | null | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:86:31:86:32 | "" | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:88:9:88:36 | ...; | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:92:9:92:36 | ...; | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:96:9:96:36 | ...; | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:100:9:100:36 | ...; | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:104:9:104:36 | ...; | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | -| Assert.cs:106:17:106:20 | null | Assert.cs:106:17:106:20 | null | -| Assert.cs:106:24:106:25 | "" | Assert.cs:106:24:106:25 | "" | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:86:24:86:27 | null | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:86:31:86:32 | "" | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:88:9:88:36 | ...; | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:90:17:90:20 | null | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:90:24:90:25 | "" | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:92:9:92:36 | ...; | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:94:17:94:20 | null | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:94:24:94:25 | "" | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:96:9:96:36 | ...; | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:98:17:98:20 | null | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:98:24:98:25 | "" | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:100:9:100:36 | ...; | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:102:17:102:20 | null | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:102:24:102:25 | "" | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:104:9:104:36 | ...; | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:106:17:106:20 | null | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:106:24:106:25 | "" | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:108:9:108:36 | ...; | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:86:24:86:27 | null | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:86:31:86:32 | "" | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:88:9:88:36 | ...; | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:92:9:92:36 | ...; | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:96:9:96:36 | ...; | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:100:9:100:36 | ...; | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:104:9:104:36 | ...; | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:108:9:108:36 | ...; | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | -| Assert.cs:110:17:110:20 | null | Assert.cs:110:17:110:20 | null | -| Assert.cs:110:24:110:25 | "" | Assert.cs:110:24:110:25 | "" | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:86:24:86:27 | null | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:86:31:86:32 | "" | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:88:9:88:36 | ...; | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:90:17:90:20 | null | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:90:24:90:25 | "" | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:92:9:92:36 | ...; | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:94:17:94:20 | null | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:94:24:94:25 | "" | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:96:9:96:36 | ...; | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:98:17:98:20 | null | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:98:24:98:25 | "" | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:100:9:100:36 | ...; | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:102:17:102:20 | null | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:102:24:102:25 | "" | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:104:9:104:36 | ...; | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:106:17:106:20 | null | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:106:24:106:25 | "" | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:108:9:108:36 | ...; | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:110:17:110:20 | null | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:110:24:110:25 | "" | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:112:9:112:36 | ...; | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:86:24:86:27 | null | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:86:31:86:32 | "" | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:88:9:88:36 | ...; | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:92:9:92:36 | ...; | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:96:9:96:36 | ...; | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:100:9:100:36 | ...; | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:104:9:104:36 | ...; | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:108:9:108:36 | ...; | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:112:9:112:36 | ...; | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | -| Assert.cs:114:17:114:20 | null | Assert.cs:114:17:114:20 | null | -| Assert.cs:114:24:114:25 | "" | Assert.cs:114:24:114:25 | "" | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:86:24:86:27 | null | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:86:31:86:32 | "" | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:88:9:88:36 | ...; | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:90:17:90:20 | null | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:90:24:90:25 | "" | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:92:9:92:36 | ...; | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:94:17:94:20 | null | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:94:24:94:25 | "" | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:96:9:96:36 | ...; | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:98:17:98:20 | null | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:98:24:98:25 | "" | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:100:9:100:36 | ...; | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:102:17:102:20 | null | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:102:24:102:25 | "" | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:104:9:104:36 | ...; | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:106:17:106:20 | null | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:106:24:106:25 | "" | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:108:9:108:36 | ...; | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:110:17:110:20 | null | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:110:24:110:25 | "" | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:112:9:112:36 | ...; | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:114:17:114:20 | null | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:114:24:114:25 | "" | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:115:23:115:36 | ... && ... | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:86:24:86:27 | null | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:86:31:86:32 | "" | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:88:9:88:36 | ...; | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:90:17:90:20 | null | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:90:24:90:25 | "" | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:92:9:92:36 | ...; | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:94:17:94:20 | null | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:94:24:94:25 | "" | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:96:9:96:36 | ...; | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:98:17:98:20 | null | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:98:24:98:25 | "" | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:100:9:100:36 | ...; | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:102:17:102:20 | null | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:102:24:102:25 | "" | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:104:9:104:36 | ...; | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:106:17:106:20 | null | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:106:24:106:25 | "" | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:108:9:108:36 | ...; | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:110:17:110:20 | null | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:110:24:110:25 | "" | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:112:9:112:36 | ...; | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:114:17:114:20 | null | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:114:24:114:25 | "" | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:115:23:115:36 | ... && ... | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:116:9:116:36 | ...; | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:86:24:86:27 | null | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:86:31:86:32 | "" | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:88:9:88:36 | ...; | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:92:9:92:36 | ...; | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:96:9:96:36 | ...; | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:100:9:100:36 | ...; | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:104:9:104:36 | ...; | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:108:9:108:36 | ...; | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:112:9:112:36 | ...; | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | ... && ... | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:116:9:116:36 | ...; | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | -| Assert.cs:118:17:118:20 | null | Assert.cs:118:17:118:20 | null | -| Assert.cs:118:24:118:25 | "" | Assert.cs:118:24:118:25 | "" | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:86:24:86:27 | null | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:86:31:86:32 | "" | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:88:9:88:36 | ...; | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:90:17:90:20 | null | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:90:24:90:25 | "" | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:92:9:92:36 | ...; | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:94:17:94:20 | null | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:94:24:94:25 | "" | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:96:9:96:36 | ...; | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:98:17:98:20 | null | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:98:24:98:25 | "" | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:100:9:100:36 | ...; | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:102:17:102:20 | null | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:102:24:102:25 | "" | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:104:9:104:36 | ...; | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:106:17:106:20 | null | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:106:24:106:25 | "" | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:108:9:108:36 | ...; | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:110:17:110:20 | null | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:110:24:110:25 | "" | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:112:9:112:36 | ...; | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:114:17:114:20 | null | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:114:24:114:25 | "" | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:115:23:115:36 | ... && ... | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:116:9:116:36 | ...; | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:118:17:118:20 | null | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:118:24:118:25 | "" | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:119:24:119:38 | ... \|\| ... | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:86:24:86:27 | null | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:86:31:86:32 | "" | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:88:9:88:36 | ...; | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:90:17:90:20 | null | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:90:24:90:25 | "" | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:92:9:92:36 | ...; | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:94:17:94:20 | null | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:94:24:94:25 | "" | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:96:9:96:36 | ...; | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:98:17:98:20 | null | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:98:24:98:25 | "" | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:100:9:100:36 | ...; | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:102:17:102:20 | null | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:102:24:102:25 | "" | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:104:9:104:36 | ...; | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:106:17:106:20 | null | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:106:24:106:25 | "" | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:108:9:108:36 | ...; | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:110:17:110:20 | null | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:110:24:110:25 | "" | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:112:9:112:36 | ...; | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:114:17:114:20 | null | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:114:24:114:25 | "" | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:115:23:115:36 | ... && ... | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:116:9:116:36 | ...; | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:118:17:118:20 | null | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:118:24:118:25 | "" | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:119:24:119:38 | ... \|\| ... | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:120:9:120:36 | ...; | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:86:24:86:27 | null | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:86:31:86:32 | "" | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:88:9:88:36 | ...; | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:92:9:92:36 | ...; | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:96:9:96:36 | ...; | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:100:9:100:36 | ...; | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:104:9:104:36 | ...; | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:108:9:108:36 | ...; | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:112:9:112:36 | ...; | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | ... && ... | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:116:9:116:36 | ...; | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | ... \|\| ... | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:120:9:120:36 | ...; | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | -| Assert.cs:122:17:122:20 | null | Assert.cs:122:17:122:20 | null | -| Assert.cs:122:24:122:25 | "" | Assert.cs:122:24:122:25 | "" | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:86:24:86:27 | null | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:86:31:86:32 | "" | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:88:9:88:36 | ...; | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:90:17:90:20 | null | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:90:24:90:25 | "" | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:92:9:92:36 | ...; | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:94:17:94:20 | null | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:94:24:94:25 | "" | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:96:9:96:36 | ...; | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:98:17:98:20 | null | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:98:24:98:25 | "" | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:100:9:100:36 | ...; | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:102:17:102:20 | null | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:102:24:102:25 | "" | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:104:9:104:36 | ...; | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:106:17:106:20 | null | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:106:24:106:25 | "" | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:108:9:108:36 | ...; | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:110:17:110:20 | null | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:110:24:110:25 | "" | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:112:9:112:36 | ...; | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:114:17:114:20 | null | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:114:24:114:25 | "" | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:115:23:115:36 | ... && ... | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:116:9:116:36 | ...; | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:118:17:118:20 | null | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:118:24:118:25 | "" | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:119:24:119:38 | ... \|\| ... | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:120:9:120:36 | ...; | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:122:17:122:20 | null | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:122:24:122:25 | "" | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:123:23:123:36 | ... && ... | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:86:24:86:27 | null | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:86:31:86:32 | "" | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:88:9:88:36 | ...; | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:90:17:90:20 | null | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:90:24:90:25 | "" | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:92:9:92:36 | ...; | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:94:17:94:20 | null | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:94:24:94:25 | "" | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:96:9:96:36 | ...; | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:98:17:98:20 | null | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:98:24:98:25 | "" | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:100:9:100:36 | ...; | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:102:17:102:20 | null | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:102:24:102:25 | "" | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:104:9:104:36 | ...; | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:106:17:106:20 | null | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:106:24:106:25 | "" | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:108:9:108:36 | ...; | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:110:17:110:20 | null | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:110:24:110:25 | "" | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:112:9:112:36 | ...; | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:114:17:114:20 | null | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:114:24:114:25 | "" | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:115:23:115:36 | ... && ... | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:116:9:116:36 | ...; | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:118:17:118:20 | null | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:118:24:118:25 | "" | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:119:24:119:38 | ... \|\| ... | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:120:9:120:36 | ...; | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:122:17:122:20 | null | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:122:24:122:25 | "" | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:123:23:123:36 | ... && ... | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:124:9:124:36 | ...; | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:86:24:86:27 | null | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:86:31:86:32 | "" | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:88:9:88:36 | ...; | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:90:17:90:20 | null | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:90:24:90:25 | "" | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:92:9:92:36 | ...; | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:94:17:94:20 | null | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:94:24:94:25 | "" | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:96:9:96:36 | ...; | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:98:17:98:20 | null | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:98:24:98:25 | "" | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:100:9:100:36 | ...; | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:102:17:102:20 | null | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:102:24:102:25 | "" | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:104:9:104:36 | ...; | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:106:17:106:20 | null | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:106:24:106:25 | "" | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:108:9:108:36 | ...; | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:110:17:110:20 | null | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:110:24:110:25 | "" | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:112:9:112:36 | ...; | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:114:17:114:20 | null | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:114:24:114:25 | "" | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:115:23:115:36 | ... && ... | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:116:9:116:36 | ...; | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:118:17:118:20 | null | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:118:24:118:25 | "" | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:119:24:119:38 | ... \|\| ... | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:120:9:120:36 | ...; | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:122:17:122:20 | null | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:122:24:122:25 | "" | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:123:23:123:36 | ... && ... | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:124:9:124:36 | ...; | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:126:17:126:20 | null | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:126:24:126:25 | "" | -| Assert.cs:126:17:126:20 | null | Assert.cs:126:17:126:20 | null | -| Assert.cs:126:24:126:25 | "" | Assert.cs:126:24:126:25 | "" | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:86:24:86:27 | null | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:86:31:86:32 | "" | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:88:9:88:36 | ...; | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:90:17:90:20 | null | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:90:24:90:25 | "" | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:92:9:92:36 | ...; | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:94:17:94:20 | null | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:94:24:94:25 | "" | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:96:9:96:36 | ...; | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:98:17:98:20 | null | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:98:24:98:25 | "" | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:100:9:100:36 | ...; | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:102:17:102:20 | null | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:102:24:102:25 | "" | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:104:9:104:36 | ...; | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:106:17:106:20 | null | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:106:24:106:25 | "" | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:108:9:108:36 | ...; | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:110:17:110:20 | null | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:110:24:110:25 | "" | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:112:9:112:36 | ...; | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:114:17:114:20 | null | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:114:24:114:25 | "" | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:115:23:115:36 | ... && ... | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:116:9:116:36 | ...; | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:118:17:118:20 | null | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:118:24:118:25 | "" | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:119:24:119:38 | ... \|\| ... | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:120:9:120:36 | ...; | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:122:17:122:20 | null | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:122:24:122:25 | "" | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:123:23:123:36 | ... && ... | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:124:9:124:36 | ...; | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:126:17:126:20 | null | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:126:24:126:25 | "" | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:127:24:127:38 | ... \|\| ... | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:84:10:84:12 | enter M12 | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:86:20:86:32 | ... ? ... : ... | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:86:24:86:27 | null | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:86:31:86:32 | "" | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:88:9:88:36 | ...; | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:90:13:90:25 | ... ? ... : ... | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:90:17:90:20 | null | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:90:24:90:25 | "" | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:92:9:92:36 | ...; | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:94:13:94:25 | ... ? ... : ... | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:94:17:94:20 | null | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:94:24:94:25 | "" | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:96:9:96:36 | ...; | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:98:13:98:25 | ... ? ... : ... | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:98:17:98:20 | null | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:98:24:98:25 | "" | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:100:9:100:36 | ...; | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:102:13:102:25 | ... ? ... : ... | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:102:17:102:20 | null | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:102:24:102:25 | "" | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:104:9:104:36 | ...; | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:106:13:106:25 | ... ? ... : ... | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:106:17:106:20 | null | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:106:24:106:25 | "" | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:108:9:108:36 | ...; | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:110:13:110:25 | ... ? ... : ... | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:110:17:110:20 | null | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:110:24:110:25 | "" | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:112:9:112:36 | ...; | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:114:13:114:25 | ... ? ... : ... | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:114:17:114:20 | null | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:114:24:114:25 | "" | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:115:23:115:36 | ... && ... | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:115:36:115:36 | access to parameter b | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:116:9:116:36 | ...; | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:118:13:118:25 | ... ? ... : ... | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:118:17:118:20 | null | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:118:24:118:25 | "" | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:119:24:119:38 | ... \|\| ... | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:119:38:119:38 | access to parameter b | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:120:9:120:36 | ...; | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:122:13:122:25 | ... ? ... : ... | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:122:17:122:20 | null | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:122:24:122:25 | "" | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:123:23:123:36 | ... && ... | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:123:36:123:36 | access to parameter b | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:124:9:124:36 | ...; | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:126:13:126:25 | ... ? ... : ... | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:126:17:126:20 | null | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:126:24:126:25 | "" | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:127:24:127:38 | ... \|\| ... | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:127:38:127:38 | access to parameter b | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:128:9:128:36 | ...; | -| Assert.cs:131:18:131:32 | enter AssertTrueFalse | Assert.cs:131:18:131:32 | enter AssertTrueFalse | -| Assert.cs:138:10:138:12 | enter M13 | Assert.cs:138:10:138:12 | enter M13 | -| Assert.cs:138:10:138:12 | exit M13 | Assert.cs:138:10:138:12 | exit M13 | -| Assert.cs:138:10:138:12 | exit M13 (abnormal) | Assert.cs:138:10:138:12 | exit M13 (abnormal) | -| Assert.cs:141:9:141:15 | return ...; | Assert.cs:138:10:138:12 | enter M13 | -| Assert.cs:141:9:141:15 | return ...; | Assert.cs:141:9:141:15 | return ...; | -| Assignments.cs:1:7:1:17 | enter Assignments | Assignments.cs:1:7:1:17 | enter Assignments | -| Assignments.cs:3:10:3:10 | enter M | Assignments.cs:3:10:3:10 | enter M | -| Assignments.cs:14:18:14:35 | enter (...) => ... | Assignments.cs:14:18:14:35 | enter (...) => ... | -| Assignments.cs:17:40:17:40 | enter + | Assignments.cs:17:40:17:40 | enter + | -| Assignments.cs:27:10:27:23 | enter SetParamSingle | Assignments.cs:27:10:27:23 | enter SetParamSingle | -| Assignments.cs:32:10:32:22 | enter SetParamMulti | Assignments.cs:32:10:32:22 | enter SetParamMulti | -| Assignments.cs:38:10:38:11 | enter M2 | Assignments.cs:38:10:38:11 | enter M2 | -| BreakInTry.cs:1:7:1:16 | enter BreakInTry | BreakInTry.cs:1:7:1:16 | enter BreakInTry | -| BreakInTry.cs:3:10:3:11 | enter M1 | BreakInTry.cs:3:10:3:11 | enter M1 | -| BreakInTry.cs:3:10:3:11 | exit M1 (normal) | BreakInTry.cs:3:10:3:11 | enter M1 | -| BreakInTry.cs:3:10:3:11 | exit M1 (normal) | BreakInTry.cs:3:10:3:11 | exit M1 (normal) | -| BreakInTry.cs:3:10:3:11 | exit M1 (normal) | BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | -| BreakInTry.cs:3:10:3:11 | exit M1 (normal) | BreakInTry.cs:7:26:7:28 | String arg | -| BreakInTry.cs:3:10:3:11 | exit M1 (normal) | BreakInTry.cs:10:21:10:26 | break; | -| BreakInTry.cs:3:10:3:11 | exit M1 (normal) | BreakInTry.cs:14:9:17:9 | {...} | -| BreakInTry.cs:3:10:3:11 | exit M1 (normal) | BreakInTry.cs:16:17:16:17 | ; | -| BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | BreakInTry.cs:3:10:3:11 | enter M1 | -| BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | +| AccessorCalls.cs:1:7:1:19 | Entry | AccessorCalls.cs:1:7:1:19 | Entry | +| AccessorCalls.cs:5:23:5:25 | Entry | AccessorCalls.cs:5:23:5:25 | Entry | +| AccessorCalls.cs:5:33:5:35 | Entry | AccessorCalls.cs:5:33:5:35 | Entry | +| AccessorCalls.cs:7:32:7:34 | Entry | AccessorCalls.cs:7:32:7:34 | Entry | +| AccessorCalls.cs:7:40:7:45 | Entry | AccessorCalls.cs:7:40:7:45 | Entry | +| AccessorCalls.cs:10:10:10:11 | Entry | AccessorCalls.cs:10:10:10:11 | Entry | +| AccessorCalls.cs:19:10:19:11 | Entry | AccessorCalls.cs:19:10:19:11 | Entry | +| AccessorCalls.cs:28:10:28:11 | Entry | AccessorCalls.cs:28:10:28:11 | Entry | +| AccessorCalls.cs:35:10:35:11 | Entry | AccessorCalls.cs:35:10:35:11 | Entry | +| AccessorCalls.cs:42:10:42:11 | Entry | AccessorCalls.cs:42:10:42:11 | Entry | +| AccessorCalls.cs:49:10:49:11 | Entry | AccessorCalls.cs:49:10:49:11 | Entry | +| AccessorCalls.cs:56:10:56:11 | Entry | AccessorCalls.cs:56:10:56:11 | Entry | +| AccessorCalls.cs:61:10:61:11 | Entry | AccessorCalls.cs:61:10:61:11 | Entry | +| AccessorCalls.cs:66:10:66:11 | Entry | AccessorCalls.cs:66:10:66:11 | Entry | +| ArrayCreation.cs:1:7:1:19 | Entry | ArrayCreation.cs:1:7:1:19 | Entry | +| ArrayCreation.cs:3:11:3:12 | Entry | ArrayCreation.cs:3:11:3:12 | Entry | +| ArrayCreation.cs:5:12:5:13 | Entry | ArrayCreation.cs:5:12:5:13 | Entry | +| ArrayCreation.cs:7:11:7:12 | Entry | ArrayCreation.cs:7:11:7:12 | Entry | +| ArrayCreation.cs:9:12:9:13 | Entry | ArrayCreation.cs:9:12:9:13 | Entry | +| Assert.cs:5:7:5:17 | Entry | Assert.cs:5:7:5:17 | Entry | +| Assert.cs:7:10:7:11 | Entry | Assert.cs:7:10:7:11 | Entry | +| Assert.cs:7:10:7:11 | Exceptional Exit | Assert.cs:7:10:7:11 | Exceptional Exit | +| Assert.cs:7:10:7:11 | Exit | Assert.cs:7:10:7:11 | Exit | +| Assert.cs:9:20:9:20 | After access to parameter b [false] | Assert.cs:9:20:9:20 | After access to parameter b [false] | +| Assert.cs:9:20:9:20 | After access to parameter b [true] | Assert.cs:9:20:9:20 | After access to parameter b [true] | +| Assert.cs:9:20:9:32 | After ... ? ... : ... | Assert.cs:7:10:7:11 | Entry | +| Assert.cs:9:20:9:32 | After ... ? ... : ... | Assert.cs:9:20:9:20 | After access to parameter b [false] | +| Assert.cs:9:20:9:32 | After ... ? ... : ... | Assert.cs:9:20:9:20 | After access to parameter b [true] | +| Assert.cs:9:20:9:32 | After ... ? ... : ... | Assert.cs:9:20:9:32 | After ... ? ... : ... | +| Assert.cs:10:9:10:31 | After call to method Assert | Assert.cs:7:10:7:11 | Entry | +| Assert.cs:10:9:10:31 | After call to method Assert | Assert.cs:9:20:9:20 | After access to parameter b [false] | +| Assert.cs:10:9:10:31 | After call to method Assert | Assert.cs:9:20:9:20 | After access to parameter b [true] | +| Assert.cs:10:9:10:31 | After call to method Assert | Assert.cs:9:20:9:32 | After ... ? ... : ... | +| Assert.cs:10:9:10:31 | After call to method Assert | Assert.cs:10:9:10:31 | After call to method Assert | +| Assert.cs:14:10:14:11 | Entry | Assert.cs:14:10:14:11 | Entry | +| Assert.cs:14:10:14:11 | Exceptional Exit | Assert.cs:14:10:14:11 | Exceptional Exit | +| Assert.cs:14:10:14:11 | Exit | Assert.cs:14:10:14:11 | Exit | +| Assert.cs:16:20:16:20 | After access to parameter b [false] | Assert.cs:16:20:16:20 | After access to parameter b [false] | +| Assert.cs:16:20:16:20 | After access to parameter b [true] | Assert.cs:16:20:16:20 | After access to parameter b [true] | +| Assert.cs:16:20:16:32 | After ... ? ... : ... | Assert.cs:14:10:14:11 | Entry | +| Assert.cs:16:20:16:32 | After ... ? ... : ... | Assert.cs:16:20:16:20 | After access to parameter b [false] | +| Assert.cs:16:20:16:32 | After ... ? ... : ... | Assert.cs:16:20:16:20 | After access to parameter b [true] | +| Assert.cs:16:20:16:32 | After ... ? ... : ... | Assert.cs:16:20:16:32 | After ... ? ... : ... | +| Assert.cs:17:9:17:24 | After call to method IsNull | Assert.cs:14:10:14:11 | Entry | +| Assert.cs:17:9:17:24 | After call to method IsNull | Assert.cs:16:20:16:20 | After access to parameter b [false] | +| Assert.cs:17:9:17:24 | After call to method IsNull | Assert.cs:16:20:16:20 | After access to parameter b [true] | +| Assert.cs:17:9:17:24 | After call to method IsNull | Assert.cs:16:20:16:32 | After ... ? ... : ... | +| Assert.cs:17:9:17:24 | After call to method IsNull | Assert.cs:17:9:17:24 | After call to method IsNull | +| Assert.cs:21:10:21:11 | Entry | Assert.cs:21:10:21:11 | Entry | +| Assert.cs:21:10:21:11 | Exceptional Exit | Assert.cs:21:10:21:11 | Exceptional Exit | +| Assert.cs:21:10:21:11 | Exit | Assert.cs:21:10:21:11 | Exit | +| Assert.cs:23:20:23:20 | After access to parameter b [false] | Assert.cs:23:20:23:20 | After access to parameter b [false] | +| Assert.cs:23:20:23:20 | After access to parameter b [true] | Assert.cs:23:20:23:20 | After access to parameter b [true] | +| Assert.cs:23:20:23:32 | After ... ? ... : ... | Assert.cs:21:10:21:11 | Entry | +| Assert.cs:23:20:23:32 | After ... ? ... : ... | Assert.cs:23:20:23:20 | After access to parameter b [false] | +| Assert.cs:23:20:23:32 | After ... ? ... : ... | Assert.cs:23:20:23:20 | After access to parameter b [true] | +| Assert.cs:23:20:23:32 | After ... ? ... : ... | Assert.cs:23:20:23:32 | After ... ? ... : ... | +| Assert.cs:24:9:24:27 | After call to method IsNotNull | Assert.cs:21:10:21:11 | Entry | +| Assert.cs:24:9:24:27 | After call to method IsNotNull | Assert.cs:23:20:23:20 | After access to parameter b [false] | +| Assert.cs:24:9:24:27 | After call to method IsNotNull | Assert.cs:23:20:23:20 | After access to parameter b [true] | +| Assert.cs:24:9:24:27 | After call to method IsNotNull | Assert.cs:23:20:23:32 | After ... ? ... : ... | +| Assert.cs:24:9:24:27 | After call to method IsNotNull | Assert.cs:24:9:24:27 | After call to method IsNotNull | +| Assert.cs:28:10:28:11 | Entry | Assert.cs:28:10:28:11 | Entry | +| Assert.cs:28:10:28:11 | Exceptional Exit | Assert.cs:28:10:28:11 | Exceptional Exit | +| Assert.cs:28:10:28:11 | Exit | Assert.cs:28:10:28:11 | Exit | +| Assert.cs:30:20:30:20 | After access to parameter b [false] | Assert.cs:30:20:30:20 | After access to parameter b [false] | +| Assert.cs:30:20:30:20 | After access to parameter b [true] | Assert.cs:30:20:30:20 | After access to parameter b [true] | +| Assert.cs:30:20:30:32 | After ... ? ... : ... | Assert.cs:28:10:28:11 | Entry | +| Assert.cs:30:20:30:32 | After ... ? ... : ... | Assert.cs:30:20:30:20 | After access to parameter b [false] | +| Assert.cs:30:20:30:32 | After ... ? ... : ... | Assert.cs:30:20:30:20 | After access to parameter b [true] | +| Assert.cs:30:20:30:32 | After ... ? ... : ... | Assert.cs:30:20:30:32 | After ... ? ... : ... | +| Assert.cs:31:9:31:32 | After call to method IsTrue | Assert.cs:28:10:28:11 | Entry | +| Assert.cs:31:9:31:32 | After call to method IsTrue | Assert.cs:30:20:30:20 | After access to parameter b [false] | +| Assert.cs:31:9:31:32 | After call to method IsTrue | Assert.cs:30:20:30:20 | After access to parameter b [true] | +| Assert.cs:31:9:31:32 | After call to method IsTrue | Assert.cs:30:20:30:32 | After ... ? ... : ... | +| Assert.cs:31:9:31:32 | After call to method IsTrue | Assert.cs:31:9:31:32 | After call to method IsTrue | +| Assert.cs:35:10:35:11 | Entry | Assert.cs:35:10:35:11 | Entry | +| Assert.cs:35:10:35:11 | Exceptional Exit | Assert.cs:35:10:35:11 | Exceptional Exit | +| Assert.cs:35:10:35:11 | Exit | Assert.cs:35:10:35:11 | Exit | +| Assert.cs:37:20:37:20 | After access to parameter b [false] | Assert.cs:37:20:37:20 | After access to parameter b [false] | +| Assert.cs:37:20:37:20 | After access to parameter b [true] | Assert.cs:37:20:37:20 | After access to parameter b [true] | +| Assert.cs:37:20:37:32 | After ... ? ... : ... | Assert.cs:35:10:35:11 | Entry | +| Assert.cs:37:20:37:32 | After ... ? ... : ... | Assert.cs:37:20:37:20 | After access to parameter b [false] | +| Assert.cs:37:20:37:32 | After ... ? ... : ... | Assert.cs:37:20:37:20 | After access to parameter b [true] | +| Assert.cs:37:20:37:32 | After ... ? ... : ... | Assert.cs:37:20:37:32 | After ... ? ... : ... | +| Assert.cs:38:9:38:32 | After call to method IsTrue | Assert.cs:35:10:35:11 | Entry | +| Assert.cs:38:9:38:32 | After call to method IsTrue | Assert.cs:37:20:37:20 | After access to parameter b [false] | +| Assert.cs:38:9:38:32 | After call to method IsTrue | Assert.cs:37:20:37:20 | After access to parameter b [true] | +| Assert.cs:38:9:38:32 | After call to method IsTrue | Assert.cs:37:20:37:32 | After ... ? ... : ... | +| Assert.cs:38:9:38:32 | After call to method IsTrue | Assert.cs:38:9:38:32 | After call to method IsTrue | +| Assert.cs:42:10:42:11 | Entry | Assert.cs:42:10:42:11 | Entry | +| Assert.cs:42:10:42:11 | Exceptional Exit | Assert.cs:42:10:42:11 | Exceptional Exit | +| Assert.cs:42:10:42:11 | Exit | Assert.cs:42:10:42:11 | Exit | +| Assert.cs:44:20:44:20 | After access to parameter b [false] | Assert.cs:44:20:44:20 | After access to parameter b [false] | +| Assert.cs:44:20:44:20 | After access to parameter b [true] | Assert.cs:44:20:44:20 | After access to parameter b [true] | +| Assert.cs:44:20:44:32 | After ... ? ... : ... | Assert.cs:42:10:42:11 | Entry | +| Assert.cs:44:20:44:32 | After ... ? ... : ... | Assert.cs:44:20:44:20 | After access to parameter b [false] | +| Assert.cs:44:20:44:32 | After ... ? ... : ... | Assert.cs:44:20:44:20 | After access to parameter b [true] | +| Assert.cs:44:20:44:32 | After ... ? ... : ... | Assert.cs:44:20:44:32 | After ... ? ... : ... | +| Assert.cs:45:9:45:33 | After call to method IsFalse | Assert.cs:42:10:42:11 | Entry | +| Assert.cs:45:9:45:33 | After call to method IsFalse | Assert.cs:44:20:44:20 | After access to parameter b [false] | +| Assert.cs:45:9:45:33 | After call to method IsFalse | Assert.cs:44:20:44:20 | After access to parameter b [true] | +| Assert.cs:45:9:45:33 | After call to method IsFalse | Assert.cs:44:20:44:32 | After ... ? ... : ... | +| Assert.cs:45:9:45:33 | After call to method IsFalse | Assert.cs:45:9:45:33 | After call to method IsFalse | +| Assert.cs:49:10:49:11 | Entry | Assert.cs:49:10:49:11 | Entry | +| Assert.cs:49:10:49:11 | Exceptional Exit | Assert.cs:49:10:49:11 | Exceptional Exit | +| Assert.cs:49:10:49:11 | Exit | Assert.cs:49:10:49:11 | Exit | +| Assert.cs:51:20:51:20 | After access to parameter b [false] | Assert.cs:51:20:51:20 | After access to parameter b [false] | +| Assert.cs:51:20:51:20 | After access to parameter b [true] | Assert.cs:51:20:51:20 | After access to parameter b [true] | +| Assert.cs:51:20:51:32 | After ... ? ... : ... | Assert.cs:49:10:49:11 | Entry | +| Assert.cs:51:20:51:32 | After ... ? ... : ... | Assert.cs:51:20:51:20 | After access to parameter b [false] | +| Assert.cs:51:20:51:32 | After ... ? ... : ... | Assert.cs:51:20:51:20 | After access to parameter b [true] | +| Assert.cs:51:20:51:32 | After ... ? ... : ... | Assert.cs:51:20:51:32 | After ... ? ... : ... | +| Assert.cs:52:9:52:33 | After call to method IsFalse | Assert.cs:49:10:49:11 | Entry | +| Assert.cs:52:9:52:33 | After call to method IsFalse | Assert.cs:51:20:51:20 | After access to parameter b [false] | +| Assert.cs:52:9:52:33 | After call to method IsFalse | Assert.cs:51:20:51:20 | After access to parameter b [true] | +| Assert.cs:52:9:52:33 | After call to method IsFalse | Assert.cs:51:20:51:32 | After ... ? ... : ... | +| Assert.cs:52:9:52:33 | After call to method IsFalse | Assert.cs:52:9:52:33 | After call to method IsFalse | +| Assert.cs:56:10:56:11 | Entry | Assert.cs:56:10:56:11 | Entry | +| Assert.cs:56:10:56:11 | Exceptional Exit | Assert.cs:56:10:56:11 | Exceptional Exit | +| Assert.cs:56:10:56:11 | Exit | Assert.cs:56:10:56:11 | Exit | +| Assert.cs:58:20:58:20 | After access to parameter b [false] | Assert.cs:58:20:58:20 | After access to parameter b [false] | +| Assert.cs:58:20:58:20 | After access to parameter b [true] | Assert.cs:58:20:58:20 | After access to parameter b [true] | +| Assert.cs:58:20:58:32 | After ... ? ... : ... | Assert.cs:56:10:56:11 | Entry | +| Assert.cs:58:20:58:32 | After ... ? ... : ... | Assert.cs:58:20:58:20 | After access to parameter b [false] | +| Assert.cs:58:20:58:32 | After ... ? ... : ... | Assert.cs:58:20:58:20 | After access to parameter b [true] | +| Assert.cs:58:20:58:32 | After ... ? ... : ... | Assert.cs:58:20:58:32 | After ... ? ... : ... | +| Assert.cs:59:9:59:37 | After call to method IsTrue | Assert.cs:56:10:56:11 | Entry | +| Assert.cs:59:9:59:37 | After call to method IsTrue | Assert.cs:58:20:58:20 | After access to parameter b [false] | +| Assert.cs:59:9:59:37 | After call to method IsTrue | Assert.cs:58:20:58:20 | After access to parameter b [true] | +| Assert.cs:59:9:59:37 | After call to method IsTrue | Assert.cs:58:20:58:32 | After ... ? ... : ... | +| Assert.cs:59:9:59:37 | After call to method IsTrue | Assert.cs:59:9:59:37 | After call to method IsTrue | +| Assert.cs:59:9:59:37 | After call to method IsTrue | Assert.cs:59:23:59:31 | After ... != ... [false] | +| Assert.cs:59:9:59:37 | After call to method IsTrue | Assert.cs:59:23:59:31 | After ... != ... [true] | +| Assert.cs:59:9:59:37 | After call to method IsTrue | Assert.cs:59:23:59:36 | After ... && ... | +| Assert.cs:59:23:59:31 | After ... != ... [false] | Assert.cs:59:23:59:31 | After ... != ... [false] | +| Assert.cs:59:23:59:31 | After ... != ... [true] | Assert.cs:59:23:59:31 | After ... != ... [true] | +| Assert.cs:59:23:59:36 | After ... && ... | Assert.cs:56:10:56:11 | Entry | +| Assert.cs:59:23:59:36 | After ... && ... | Assert.cs:58:20:58:20 | After access to parameter b [false] | +| Assert.cs:59:23:59:36 | After ... && ... | Assert.cs:58:20:58:20 | After access to parameter b [true] | +| Assert.cs:59:23:59:36 | After ... && ... | Assert.cs:58:20:58:32 | After ... ? ... : ... | +| Assert.cs:59:23:59:36 | After ... && ... | Assert.cs:59:23:59:31 | After ... != ... [false] | +| Assert.cs:59:23:59:36 | After ... && ... | Assert.cs:59:23:59:31 | After ... != ... [true] | +| Assert.cs:59:23:59:36 | After ... && ... | Assert.cs:59:23:59:36 | After ... && ... | +| Assert.cs:63:10:63:11 | Entry | Assert.cs:63:10:63:11 | Entry | +| Assert.cs:63:10:63:11 | Exceptional Exit | Assert.cs:63:10:63:11 | Exceptional Exit | +| Assert.cs:63:10:63:11 | Exit | Assert.cs:63:10:63:11 | Exit | +| Assert.cs:65:20:65:20 | After access to parameter b [false] | Assert.cs:65:20:65:20 | After access to parameter b [false] | +| Assert.cs:65:20:65:20 | After access to parameter b [true] | Assert.cs:65:20:65:20 | After access to parameter b [true] | +| Assert.cs:65:20:65:32 | After ... ? ... : ... | Assert.cs:63:10:63:11 | Entry | +| Assert.cs:65:20:65:32 | After ... ? ... : ... | Assert.cs:65:20:65:20 | After access to parameter b [false] | +| Assert.cs:65:20:65:32 | After ... ? ... : ... | Assert.cs:65:20:65:20 | After access to parameter b [true] | +| Assert.cs:65:20:65:32 | After ... ? ... : ... | Assert.cs:65:20:65:32 | After ... ? ... : ... | +| Assert.cs:66:9:66:38 | After call to method IsFalse | Assert.cs:63:10:63:11 | Entry | +| Assert.cs:66:9:66:38 | After call to method IsFalse | Assert.cs:65:20:65:20 | After access to parameter b [false] | +| Assert.cs:66:9:66:38 | After call to method IsFalse | Assert.cs:65:20:65:20 | After access to parameter b [true] | +| Assert.cs:66:9:66:38 | After call to method IsFalse | Assert.cs:65:20:65:32 | After ... ? ... : ... | +| Assert.cs:66:9:66:38 | After call to method IsFalse | Assert.cs:66:9:66:38 | After call to method IsFalse | +| Assert.cs:66:9:66:38 | After call to method IsFalse | Assert.cs:66:24:66:32 | After ... == ... [false] | +| Assert.cs:66:9:66:38 | After call to method IsFalse | Assert.cs:66:24:66:32 | After ... == ... [true] | +| Assert.cs:66:9:66:38 | After call to method IsFalse | Assert.cs:66:24:66:37 | After ... \|\| ... | +| Assert.cs:66:24:66:32 | After ... == ... [false] | Assert.cs:66:24:66:32 | After ... == ... [false] | +| Assert.cs:66:24:66:32 | After ... == ... [true] | Assert.cs:66:24:66:32 | After ... == ... [true] | +| Assert.cs:66:24:66:37 | After ... \|\| ... | Assert.cs:63:10:63:11 | Entry | +| Assert.cs:66:24:66:37 | After ... \|\| ... | Assert.cs:65:20:65:20 | After access to parameter b [false] | +| Assert.cs:66:24:66:37 | After ... \|\| ... | Assert.cs:65:20:65:20 | After access to parameter b [true] | +| Assert.cs:66:24:66:37 | After ... \|\| ... | Assert.cs:65:20:65:32 | After ... ? ... : ... | +| Assert.cs:66:24:66:37 | After ... \|\| ... | Assert.cs:66:24:66:32 | After ... == ... [false] | +| Assert.cs:66:24:66:37 | After ... \|\| ... | Assert.cs:66:24:66:32 | After ... == ... [true] | +| Assert.cs:66:24:66:37 | After ... \|\| ... | Assert.cs:66:24:66:37 | After ... \|\| ... | +| Assert.cs:70:10:70:12 | Entry | Assert.cs:70:10:70:12 | Entry | +| Assert.cs:70:10:70:12 | Exceptional Exit | Assert.cs:70:10:70:12 | Exceptional Exit | +| Assert.cs:70:10:70:12 | Exit | Assert.cs:70:10:70:12 | Exit | +| Assert.cs:72:20:72:20 | After access to parameter b [false] | Assert.cs:72:20:72:20 | After access to parameter b [false] | +| Assert.cs:72:20:72:20 | After access to parameter b [true] | Assert.cs:72:20:72:20 | After access to parameter b [true] | +| Assert.cs:72:20:72:32 | After ... ? ... : ... | Assert.cs:70:10:70:12 | Entry | +| Assert.cs:72:20:72:32 | After ... ? ... : ... | Assert.cs:72:20:72:20 | After access to parameter b [false] | +| Assert.cs:72:20:72:32 | After ... ? ... : ... | Assert.cs:72:20:72:20 | After access to parameter b [true] | +| Assert.cs:72:20:72:32 | After ... ? ... : ... | Assert.cs:72:20:72:32 | After ... ? ... : ... | +| Assert.cs:73:9:73:37 | After call to method IsTrue | Assert.cs:70:10:70:12 | Entry | +| Assert.cs:73:9:73:37 | After call to method IsTrue | Assert.cs:72:20:72:20 | After access to parameter b [false] | +| Assert.cs:73:9:73:37 | After call to method IsTrue | Assert.cs:72:20:72:20 | After access to parameter b [true] | +| Assert.cs:73:9:73:37 | After call to method IsTrue | Assert.cs:72:20:72:32 | After ... ? ... : ... | +| Assert.cs:73:9:73:37 | After call to method IsTrue | Assert.cs:73:9:73:37 | After call to method IsTrue | +| Assert.cs:73:9:73:37 | After call to method IsTrue | Assert.cs:73:23:73:31 | After ... == ... [false] | +| Assert.cs:73:9:73:37 | After call to method IsTrue | Assert.cs:73:23:73:31 | After ... == ... [true] | +| Assert.cs:73:9:73:37 | After call to method IsTrue | Assert.cs:73:23:73:36 | After ... && ... | +| Assert.cs:73:23:73:31 | After ... == ... [false] | Assert.cs:73:23:73:31 | After ... == ... [false] | +| Assert.cs:73:23:73:31 | After ... == ... [true] | Assert.cs:73:23:73:31 | After ... == ... [true] | +| Assert.cs:73:23:73:36 | After ... && ... | Assert.cs:70:10:70:12 | Entry | +| Assert.cs:73:23:73:36 | After ... && ... | Assert.cs:72:20:72:20 | After access to parameter b [false] | +| Assert.cs:73:23:73:36 | After ... && ... | Assert.cs:72:20:72:20 | After access to parameter b [true] | +| Assert.cs:73:23:73:36 | After ... && ... | Assert.cs:72:20:72:32 | After ... ? ... : ... | +| Assert.cs:73:23:73:36 | After ... && ... | Assert.cs:73:23:73:31 | After ... == ... [false] | +| Assert.cs:73:23:73:36 | After ... && ... | Assert.cs:73:23:73:31 | After ... == ... [true] | +| Assert.cs:73:23:73:36 | After ... && ... | Assert.cs:73:23:73:36 | After ... && ... | +| Assert.cs:77:10:77:12 | Entry | Assert.cs:77:10:77:12 | Entry | +| Assert.cs:77:10:77:12 | Exceptional Exit | Assert.cs:77:10:77:12 | Exceptional Exit | +| Assert.cs:77:10:77:12 | Exit | Assert.cs:77:10:77:12 | Exit | +| Assert.cs:79:20:79:20 | After access to parameter b [false] | Assert.cs:79:20:79:20 | After access to parameter b [false] | +| Assert.cs:79:20:79:20 | After access to parameter b [true] | Assert.cs:79:20:79:20 | After access to parameter b [true] | +| Assert.cs:79:20:79:32 | After ... ? ... : ... | Assert.cs:77:10:77:12 | Entry | +| Assert.cs:79:20:79:32 | After ... ? ... : ... | Assert.cs:79:20:79:20 | After access to parameter b [false] | +| Assert.cs:79:20:79:32 | After ... ? ... : ... | Assert.cs:79:20:79:20 | After access to parameter b [true] | +| Assert.cs:79:20:79:32 | After ... ? ... : ... | Assert.cs:79:20:79:32 | After ... ? ... : ... | +| Assert.cs:80:9:80:38 | After call to method IsFalse | Assert.cs:77:10:77:12 | Entry | +| Assert.cs:80:9:80:38 | After call to method IsFalse | Assert.cs:79:20:79:20 | After access to parameter b [false] | +| Assert.cs:80:9:80:38 | After call to method IsFalse | Assert.cs:79:20:79:20 | After access to parameter b [true] | +| Assert.cs:80:9:80:38 | After call to method IsFalse | Assert.cs:79:20:79:32 | After ... ? ... : ... | +| Assert.cs:80:9:80:38 | After call to method IsFalse | Assert.cs:80:9:80:38 | After call to method IsFalse | +| Assert.cs:80:9:80:38 | After call to method IsFalse | Assert.cs:80:24:80:32 | After ... != ... [false] | +| Assert.cs:80:9:80:38 | After call to method IsFalse | Assert.cs:80:24:80:32 | After ... != ... [true] | +| Assert.cs:80:9:80:38 | After call to method IsFalse | Assert.cs:80:24:80:37 | After ... \|\| ... | +| Assert.cs:80:24:80:32 | After ... != ... [false] | Assert.cs:80:24:80:32 | After ... != ... [false] | +| Assert.cs:80:24:80:32 | After ... != ... [true] | Assert.cs:80:24:80:32 | After ... != ... [true] | +| Assert.cs:80:24:80:37 | After ... \|\| ... | Assert.cs:77:10:77:12 | Entry | +| Assert.cs:80:24:80:37 | After ... \|\| ... | Assert.cs:79:20:79:20 | After access to parameter b [false] | +| Assert.cs:80:24:80:37 | After ... \|\| ... | Assert.cs:79:20:79:20 | After access to parameter b [true] | +| Assert.cs:80:24:80:37 | After ... \|\| ... | Assert.cs:79:20:79:32 | After ... ? ... : ... | +| Assert.cs:80:24:80:37 | After ... \|\| ... | Assert.cs:80:24:80:32 | After ... != ... [false] | +| Assert.cs:80:24:80:37 | After ... \|\| ... | Assert.cs:80:24:80:32 | After ... != ... [true] | +| Assert.cs:80:24:80:37 | After ... \|\| ... | Assert.cs:80:24:80:37 | After ... \|\| ... | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:84:10:84:12 | Entry | +| Assert.cs:84:10:84:12 | Exceptional Exit | Assert.cs:84:10:84:12 | Exceptional Exit | +| Assert.cs:84:10:84:12 | Exit | Assert.cs:84:10:84:12 | Exit | +| Assert.cs:86:20:86:20 | After access to parameter b [false] | Assert.cs:86:20:86:20 | After access to parameter b [false] | +| Assert.cs:86:20:86:20 | After access to parameter b [true] | Assert.cs:86:20:86:20 | After access to parameter b [true] | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:84:10:84:12 | Entry | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:86:20:86:20 | After access to parameter b [false] | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:86:20:86:20 | After access to parameter b [true] | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:86:20:86:32 | After ... ? ... : ... | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:84:10:84:12 | Entry | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:86:20:86:20 | After access to parameter b [false] | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:86:20:86:20 | After access to parameter b [true] | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:86:20:86:32 | After ... ? ... : ... | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:87:9:87:31 | After call to method Assert | +| Assert.cs:90:13:90:13 | After access to parameter b [false] | Assert.cs:90:13:90:13 | After access to parameter b [false] | +| Assert.cs:90:13:90:13 | After access to parameter b [true] | Assert.cs:90:13:90:13 | After access to parameter b [true] | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:84:10:84:12 | Entry | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:86:20:86:20 | After access to parameter b [false] | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:86:20:86:20 | After access to parameter b [true] | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:86:20:86:32 | After ... ? ... : ... | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:87:9:87:31 | After call to method Assert | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:90:13:90:13 | After access to parameter b [false] | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:90:13:90:13 | After access to parameter b [true] | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:90:13:90:25 | After ... ? ... : ... | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:84:10:84:12 | Entry | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:86:20:86:20 | After access to parameter b [false] | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:86:20:86:20 | After access to parameter b [true] | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:86:20:86:32 | After ... ? ... : ... | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:87:9:87:31 | After call to method Assert | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:90:13:90:13 | After access to parameter b [false] | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:90:13:90:13 | After access to parameter b [true] | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:90:13:90:25 | After ... ? ... : ... | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:91:9:91:24 | After call to method IsNull | +| Assert.cs:94:13:94:13 | After access to parameter b [false] | Assert.cs:94:13:94:13 | After access to parameter b [false] | +| Assert.cs:94:13:94:13 | After access to parameter b [true] | Assert.cs:94:13:94:13 | After access to parameter b [true] | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:84:10:84:12 | Entry | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:86:20:86:20 | After access to parameter b [false] | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:86:20:86:20 | After access to parameter b [true] | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:86:20:86:32 | After ... ? ... : ... | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:87:9:87:31 | After call to method Assert | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:90:13:90:13 | After access to parameter b [false] | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:90:13:90:13 | After access to parameter b [true] | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:90:13:90:25 | After ... ? ... : ... | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:91:9:91:24 | After call to method IsNull | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:94:13:94:13 | After access to parameter b [false] | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:94:13:94:13 | After access to parameter b [true] | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:94:13:94:25 | After ... ? ... : ... | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:84:10:84:12 | Entry | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:86:20:86:20 | After access to parameter b [false] | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:86:20:86:20 | After access to parameter b [true] | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:86:20:86:32 | After ... ? ... : ... | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:87:9:87:31 | After call to method Assert | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:90:13:90:13 | After access to parameter b [false] | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:90:13:90:13 | After access to parameter b [true] | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:90:13:90:25 | After ... ? ... : ... | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:91:9:91:24 | After call to method IsNull | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:94:13:94:13 | After access to parameter b [false] | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:94:13:94:13 | After access to parameter b [true] | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:94:13:94:25 | After ... ? ... : ... | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:95:9:95:27 | After call to method IsNotNull | +| Assert.cs:98:13:98:13 | After access to parameter b [false] | Assert.cs:98:13:98:13 | After access to parameter b [false] | +| Assert.cs:98:13:98:13 | After access to parameter b [true] | Assert.cs:98:13:98:13 | After access to parameter b [true] | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:84:10:84:12 | Entry | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:86:20:86:20 | After access to parameter b [false] | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:86:20:86:20 | After access to parameter b [true] | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:86:20:86:32 | After ... ? ... : ... | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:87:9:87:31 | After call to method Assert | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:90:13:90:13 | After access to parameter b [false] | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:90:13:90:13 | After access to parameter b [true] | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:90:13:90:25 | After ... ? ... : ... | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:91:9:91:24 | After call to method IsNull | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:94:13:94:13 | After access to parameter b [false] | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:94:13:94:13 | After access to parameter b [true] | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:94:13:94:25 | After ... ? ... : ... | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:95:9:95:27 | After call to method IsNotNull | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:98:13:98:13 | After access to parameter b [false] | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:98:13:98:13 | After access to parameter b [true] | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:98:13:98:25 | After ... ? ... : ... | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:84:10:84:12 | Entry | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:86:20:86:20 | After access to parameter b [false] | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:86:20:86:20 | After access to parameter b [true] | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:86:20:86:32 | After ... ? ... : ... | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:87:9:87:31 | After call to method Assert | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:90:13:90:13 | After access to parameter b [false] | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:90:13:90:13 | After access to parameter b [true] | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:90:13:90:25 | After ... ? ... : ... | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:91:9:91:24 | After call to method IsNull | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:94:13:94:13 | After access to parameter b [false] | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:94:13:94:13 | After access to parameter b [true] | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:94:13:94:25 | After ... ? ... : ... | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:95:9:95:27 | After call to method IsNotNull | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:98:13:98:13 | After access to parameter b [false] | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:98:13:98:13 | After access to parameter b [true] | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:98:13:98:25 | After ... ? ... : ... | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:99:9:99:32 | After call to method IsTrue | +| Assert.cs:102:13:102:13 | After access to parameter b [false] | Assert.cs:102:13:102:13 | After access to parameter b [false] | +| Assert.cs:102:13:102:13 | After access to parameter b [true] | Assert.cs:102:13:102:13 | After access to parameter b [true] | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:84:10:84:12 | Entry | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:86:20:86:20 | After access to parameter b [false] | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:86:20:86:20 | After access to parameter b [true] | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:86:20:86:32 | After ... ? ... : ... | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:87:9:87:31 | After call to method Assert | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:90:13:90:13 | After access to parameter b [false] | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:90:13:90:13 | After access to parameter b [true] | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:90:13:90:25 | After ... ? ... : ... | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:91:9:91:24 | After call to method IsNull | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:94:13:94:13 | After access to parameter b [false] | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:94:13:94:13 | After access to parameter b [true] | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:94:13:94:25 | After ... ? ... : ... | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:95:9:95:27 | After call to method IsNotNull | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:98:13:98:13 | After access to parameter b [false] | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:98:13:98:13 | After access to parameter b [true] | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:98:13:98:25 | After ... ? ... : ... | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:99:9:99:32 | After call to method IsTrue | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:102:13:102:13 | After access to parameter b [false] | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:102:13:102:13 | After access to parameter b [true] | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:102:13:102:25 | After ... ? ... : ... | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:84:10:84:12 | Entry | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:86:20:86:20 | After access to parameter b [false] | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:86:20:86:20 | After access to parameter b [true] | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:86:20:86:32 | After ... ? ... : ... | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:87:9:87:31 | After call to method Assert | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:90:13:90:13 | After access to parameter b [false] | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:90:13:90:13 | After access to parameter b [true] | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:90:13:90:25 | After ... ? ... : ... | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:91:9:91:24 | After call to method IsNull | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:94:13:94:13 | After access to parameter b [false] | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:94:13:94:13 | After access to parameter b [true] | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:94:13:94:25 | After ... ? ... : ... | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:95:9:95:27 | After call to method IsNotNull | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:98:13:98:13 | After access to parameter b [false] | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:98:13:98:13 | After access to parameter b [true] | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:98:13:98:25 | After ... ? ... : ... | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:99:9:99:32 | After call to method IsTrue | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:102:13:102:13 | After access to parameter b [false] | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:102:13:102:13 | After access to parameter b [true] | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:102:13:102:25 | After ... ? ... : ... | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:103:9:103:32 | After call to method IsTrue | +| Assert.cs:106:13:106:13 | After access to parameter b [false] | Assert.cs:106:13:106:13 | After access to parameter b [false] | +| Assert.cs:106:13:106:13 | After access to parameter b [true] | Assert.cs:106:13:106:13 | After access to parameter b [true] | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:84:10:84:12 | Entry | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:86:20:86:20 | After access to parameter b [false] | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:86:20:86:20 | After access to parameter b [true] | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:86:20:86:32 | After ... ? ... : ... | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:87:9:87:31 | After call to method Assert | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:90:13:90:13 | After access to parameter b [false] | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:90:13:90:13 | After access to parameter b [true] | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:90:13:90:25 | After ... ? ... : ... | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:91:9:91:24 | After call to method IsNull | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:94:13:94:13 | After access to parameter b [false] | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:94:13:94:13 | After access to parameter b [true] | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:94:13:94:25 | After ... ? ... : ... | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:95:9:95:27 | After call to method IsNotNull | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:98:13:98:13 | After access to parameter b [false] | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:98:13:98:13 | After access to parameter b [true] | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:98:13:98:25 | After ... ? ... : ... | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:99:9:99:32 | After call to method IsTrue | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:102:13:102:13 | After access to parameter b [false] | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:102:13:102:13 | After access to parameter b [true] | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:102:13:102:25 | After ... ? ... : ... | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:103:9:103:32 | After call to method IsTrue | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:106:13:106:13 | After access to parameter b [false] | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:106:13:106:13 | After access to parameter b [true] | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:106:13:106:25 | After ... ? ... : ... | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:84:10:84:12 | Entry | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:86:20:86:20 | After access to parameter b [false] | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:86:20:86:20 | After access to parameter b [true] | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:86:20:86:32 | After ... ? ... : ... | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:87:9:87:31 | After call to method Assert | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:90:13:90:13 | After access to parameter b [false] | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:90:13:90:13 | After access to parameter b [true] | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:90:13:90:25 | After ... ? ... : ... | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:91:9:91:24 | After call to method IsNull | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:94:13:94:13 | After access to parameter b [false] | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:94:13:94:13 | After access to parameter b [true] | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:94:13:94:25 | After ... ? ... : ... | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:95:9:95:27 | After call to method IsNotNull | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:98:13:98:13 | After access to parameter b [false] | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:98:13:98:13 | After access to parameter b [true] | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:98:13:98:25 | After ... ? ... : ... | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:99:9:99:32 | After call to method IsTrue | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:102:13:102:13 | After access to parameter b [false] | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:102:13:102:13 | After access to parameter b [true] | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:102:13:102:25 | After ... ? ... : ... | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:103:9:103:32 | After call to method IsTrue | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:106:13:106:13 | After access to parameter b [false] | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:106:13:106:13 | After access to parameter b [true] | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:106:13:106:25 | After ... ? ... : ... | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:107:9:107:33 | After call to method IsFalse | +| Assert.cs:110:13:110:13 | After access to parameter b [false] | Assert.cs:110:13:110:13 | After access to parameter b [false] | +| Assert.cs:110:13:110:13 | After access to parameter b [true] | Assert.cs:110:13:110:13 | After access to parameter b [true] | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:84:10:84:12 | Entry | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:86:20:86:20 | After access to parameter b [false] | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:86:20:86:20 | After access to parameter b [true] | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:86:20:86:32 | After ... ? ... : ... | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:87:9:87:31 | After call to method Assert | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:90:13:90:13 | After access to parameter b [false] | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:90:13:90:13 | After access to parameter b [true] | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:90:13:90:25 | After ... ? ... : ... | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:91:9:91:24 | After call to method IsNull | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:94:13:94:13 | After access to parameter b [false] | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:94:13:94:13 | After access to parameter b [true] | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:94:13:94:25 | After ... ? ... : ... | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:95:9:95:27 | After call to method IsNotNull | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:98:13:98:13 | After access to parameter b [false] | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:98:13:98:13 | After access to parameter b [true] | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:98:13:98:25 | After ... ? ... : ... | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:99:9:99:32 | After call to method IsTrue | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:102:13:102:13 | After access to parameter b [false] | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:102:13:102:13 | After access to parameter b [true] | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:102:13:102:25 | After ... ? ... : ... | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:103:9:103:32 | After call to method IsTrue | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:106:13:106:13 | After access to parameter b [false] | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:106:13:106:13 | After access to parameter b [true] | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:106:13:106:25 | After ... ? ... : ... | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:107:9:107:33 | After call to method IsFalse | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:110:13:110:13 | After access to parameter b [false] | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:110:13:110:13 | After access to parameter b [true] | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:110:13:110:25 | After ... ? ... : ... | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:84:10:84:12 | Entry | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:86:20:86:20 | After access to parameter b [false] | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:86:20:86:20 | After access to parameter b [true] | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:86:20:86:32 | After ... ? ... : ... | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:87:9:87:31 | After call to method Assert | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:90:13:90:13 | After access to parameter b [false] | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:90:13:90:13 | After access to parameter b [true] | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:90:13:90:25 | After ... ? ... : ... | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:91:9:91:24 | After call to method IsNull | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:94:13:94:13 | After access to parameter b [false] | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:94:13:94:13 | After access to parameter b [true] | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:94:13:94:25 | After ... ? ... : ... | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:95:9:95:27 | After call to method IsNotNull | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:98:13:98:13 | After access to parameter b [false] | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:98:13:98:13 | After access to parameter b [true] | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:98:13:98:25 | After ... ? ... : ... | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:99:9:99:32 | After call to method IsTrue | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:102:13:102:13 | After access to parameter b [false] | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:102:13:102:13 | After access to parameter b [true] | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:102:13:102:25 | After ... ? ... : ... | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:103:9:103:32 | After call to method IsTrue | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:106:13:106:13 | After access to parameter b [false] | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:106:13:106:13 | After access to parameter b [true] | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:106:13:106:25 | After ... ? ... : ... | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:107:9:107:33 | After call to method IsFalse | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:110:13:110:13 | After access to parameter b [false] | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:110:13:110:13 | After access to parameter b [true] | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:110:13:110:25 | After ... ? ... : ... | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:111:9:111:33 | After call to method IsFalse | +| Assert.cs:114:13:114:13 | After access to parameter b [false] | Assert.cs:114:13:114:13 | After access to parameter b [false] | +| Assert.cs:114:13:114:13 | After access to parameter b [true] | Assert.cs:114:13:114:13 | After access to parameter b [true] | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:84:10:84:12 | Entry | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:86:20:86:20 | After access to parameter b [false] | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:86:20:86:20 | After access to parameter b [true] | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:86:20:86:32 | After ... ? ... : ... | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:87:9:87:31 | After call to method Assert | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:90:13:90:13 | After access to parameter b [false] | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:90:13:90:13 | After access to parameter b [true] | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:90:13:90:25 | After ... ? ... : ... | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:91:9:91:24 | After call to method IsNull | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:94:13:94:13 | After access to parameter b [false] | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:94:13:94:13 | After access to parameter b [true] | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:94:13:94:25 | After ... ? ... : ... | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:95:9:95:27 | After call to method IsNotNull | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:98:13:98:13 | After access to parameter b [false] | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:98:13:98:13 | After access to parameter b [true] | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:98:13:98:25 | After ... ? ... : ... | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:99:9:99:32 | After call to method IsTrue | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:102:13:102:13 | After access to parameter b [false] | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:102:13:102:13 | After access to parameter b [true] | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:102:13:102:25 | After ... ? ... : ... | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:103:9:103:32 | After call to method IsTrue | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:106:13:106:13 | After access to parameter b [false] | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:106:13:106:13 | After access to parameter b [true] | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:106:13:106:25 | After ... ? ... : ... | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:107:9:107:33 | After call to method IsFalse | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:110:13:110:13 | After access to parameter b [false] | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:110:13:110:13 | After access to parameter b [true] | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:110:13:110:25 | After ... ? ... : ... | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:111:9:111:33 | After call to method IsFalse | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:114:13:114:13 | After access to parameter b [false] | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:114:13:114:13 | After access to parameter b [true] | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:114:13:114:25 | After ... ? ... : ... | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:84:10:84:12 | Entry | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:86:20:86:20 | After access to parameter b [false] | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:86:20:86:20 | After access to parameter b [true] | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:86:20:86:32 | After ... ? ... : ... | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:87:9:87:31 | After call to method Assert | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:90:13:90:13 | After access to parameter b [false] | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:90:13:90:13 | After access to parameter b [true] | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:90:13:90:25 | After ... ? ... : ... | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:91:9:91:24 | After call to method IsNull | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:94:13:94:13 | After access to parameter b [false] | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:94:13:94:13 | After access to parameter b [true] | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:94:13:94:25 | After ... ? ... : ... | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:95:9:95:27 | After call to method IsNotNull | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:98:13:98:13 | After access to parameter b [false] | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:98:13:98:13 | After access to parameter b [true] | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:98:13:98:25 | After ... ? ... : ... | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:99:9:99:32 | After call to method IsTrue | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:102:13:102:13 | After access to parameter b [false] | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:102:13:102:13 | After access to parameter b [true] | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:102:13:102:25 | After ... ? ... : ... | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:103:9:103:32 | After call to method IsTrue | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:106:13:106:13 | After access to parameter b [false] | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:106:13:106:13 | After access to parameter b [true] | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:106:13:106:25 | After ... ? ... : ... | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:107:9:107:33 | After call to method IsFalse | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:110:13:110:13 | After access to parameter b [false] | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:110:13:110:13 | After access to parameter b [true] | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:110:13:110:25 | After ... ? ... : ... | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:111:9:111:33 | After call to method IsFalse | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:114:13:114:13 | After access to parameter b [false] | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:114:13:114:13 | After access to parameter b [true] | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:114:13:114:25 | After ... ? ... : ... | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:115:9:115:37 | After call to method IsTrue | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:115:23:115:31 | After ... != ... [false] | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:115:23:115:31 | After ... != ... [true] | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:115:23:115:36 | After ... && ... | +| Assert.cs:115:23:115:31 | After ... != ... [false] | Assert.cs:115:23:115:31 | After ... != ... [false] | +| Assert.cs:115:23:115:31 | After ... != ... [true] | Assert.cs:115:23:115:31 | After ... != ... [true] | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:84:10:84:12 | Entry | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:86:20:86:20 | After access to parameter b [false] | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:86:20:86:20 | After access to parameter b [true] | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:86:20:86:32 | After ... ? ... : ... | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:87:9:87:31 | After call to method Assert | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:90:13:90:13 | After access to parameter b [false] | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:90:13:90:13 | After access to parameter b [true] | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:90:13:90:25 | After ... ? ... : ... | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:91:9:91:24 | After call to method IsNull | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:94:13:94:13 | After access to parameter b [false] | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:94:13:94:13 | After access to parameter b [true] | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:94:13:94:25 | After ... ? ... : ... | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:95:9:95:27 | After call to method IsNotNull | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:98:13:98:13 | After access to parameter b [false] | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:98:13:98:13 | After access to parameter b [true] | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:98:13:98:25 | After ... ? ... : ... | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:99:9:99:32 | After call to method IsTrue | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:102:13:102:13 | After access to parameter b [false] | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:102:13:102:13 | After access to parameter b [true] | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:102:13:102:25 | After ... ? ... : ... | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:103:9:103:32 | After call to method IsTrue | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:106:13:106:13 | After access to parameter b [false] | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:106:13:106:13 | After access to parameter b [true] | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:106:13:106:25 | After ... ? ... : ... | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:107:9:107:33 | After call to method IsFalse | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:110:13:110:13 | After access to parameter b [false] | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:110:13:110:13 | After access to parameter b [true] | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:110:13:110:25 | After ... ? ... : ... | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:111:9:111:33 | After call to method IsFalse | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:114:13:114:13 | After access to parameter b [false] | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:114:13:114:13 | After access to parameter b [true] | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:114:13:114:25 | After ... ? ... : ... | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:115:23:115:31 | After ... != ... [false] | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:115:23:115:31 | After ... != ... [true] | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:115:23:115:36 | After ... && ... | +| Assert.cs:118:13:118:13 | After access to parameter b [false] | Assert.cs:118:13:118:13 | After access to parameter b [false] | +| Assert.cs:118:13:118:13 | After access to parameter b [true] | Assert.cs:118:13:118:13 | After access to parameter b [true] | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:84:10:84:12 | Entry | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:86:20:86:20 | After access to parameter b [false] | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:86:20:86:20 | After access to parameter b [true] | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:86:20:86:32 | After ... ? ... : ... | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:87:9:87:31 | After call to method Assert | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:90:13:90:13 | After access to parameter b [false] | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:90:13:90:13 | After access to parameter b [true] | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:90:13:90:25 | After ... ? ... : ... | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:91:9:91:24 | After call to method IsNull | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:94:13:94:13 | After access to parameter b [false] | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:94:13:94:13 | After access to parameter b [true] | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:94:13:94:25 | After ... ? ... : ... | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:95:9:95:27 | After call to method IsNotNull | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:98:13:98:13 | After access to parameter b [false] | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:98:13:98:13 | After access to parameter b [true] | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:98:13:98:25 | After ... ? ... : ... | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:99:9:99:32 | After call to method IsTrue | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:102:13:102:13 | After access to parameter b [false] | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:102:13:102:13 | After access to parameter b [true] | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:102:13:102:25 | After ... ? ... : ... | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:103:9:103:32 | After call to method IsTrue | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:106:13:106:13 | After access to parameter b [false] | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:106:13:106:13 | After access to parameter b [true] | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:106:13:106:25 | After ... ? ... : ... | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:107:9:107:33 | After call to method IsFalse | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:110:13:110:13 | After access to parameter b [false] | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:110:13:110:13 | After access to parameter b [true] | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:110:13:110:25 | After ... ? ... : ... | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:111:9:111:33 | After call to method IsFalse | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:114:13:114:13 | After access to parameter b [false] | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:114:13:114:13 | After access to parameter b [true] | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:114:13:114:25 | After ... ? ... : ... | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:115:9:115:37 | After call to method IsTrue | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:115:23:115:31 | After ... != ... [false] | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:115:23:115:31 | After ... != ... [true] | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:115:23:115:36 | After ... && ... | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:118:13:118:13 | After access to parameter b [false] | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:118:13:118:13 | After access to parameter b [true] | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:118:13:118:25 | After ... ? ... : ... | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:84:10:84:12 | Entry | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:86:20:86:20 | After access to parameter b [false] | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:86:20:86:20 | After access to parameter b [true] | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:86:20:86:32 | After ... ? ... : ... | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:87:9:87:31 | After call to method Assert | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:90:13:90:13 | After access to parameter b [false] | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:90:13:90:13 | After access to parameter b [true] | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:90:13:90:25 | After ... ? ... : ... | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:91:9:91:24 | After call to method IsNull | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:94:13:94:13 | After access to parameter b [false] | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:94:13:94:13 | After access to parameter b [true] | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:94:13:94:25 | After ... ? ... : ... | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:95:9:95:27 | After call to method IsNotNull | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:98:13:98:13 | After access to parameter b [false] | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:98:13:98:13 | After access to parameter b [true] | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:98:13:98:25 | After ... ? ... : ... | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:99:9:99:32 | After call to method IsTrue | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:102:13:102:13 | After access to parameter b [false] | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:102:13:102:13 | After access to parameter b [true] | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:102:13:102:25 | After ... ? ... : ... | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:103:9:103:32 | After call to method IsTrue | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:106:13:106:13 | After access to parameter b [false] | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:106:13:106:13 | After access to parameter b [true] | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:106:13:106:25 | After ... ? ... : ... | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:107:9:107:33 | After call to method IsFalse | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:110:13:110:13 | After access to parameter b [false] | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:110:13:110:13 | After access to parameter b [true] | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:110:13:110:25 | After ... ? ... : ... | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:111:9:111:33 | After call to method IsFalse | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:114:13:114:13 | After access to parameter b [false] | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:114:13:114:13 | After access to parameter b [true] | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:114:13:114:25 | After ... ? ... : ... | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:115:9:115:37 | After call to method IsTrue | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:115:23:115:31 | After ... != ... [false] | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:115:23:115:31 | After ... != ... [true] | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:115:23:115:36 | After ... && ... | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:118:13:118:13 | After access to parameter b [false] | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:118:13:118:13 | After access to parameter b [true] | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:118:13:118:25 | After ... ? ... : ... | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:119:9:119:39 | After call to method IsFalse | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:119:24:119:32 | After ... == ... [false] | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:119:24:119:32 | After ... == ... [true] | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:119:24:119:38 | After ... \|\| ... | +| Assert.cs:119:24:119:32 | After ... == ... [false] | Assert.cs:119:24:119:32 | After ... == ... [false] | +| Assert.cs:119:24:119:32 | After ... == ... [true] | Assert.cs:119:24:119:32 | After ... == ... [true] | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:84:10:84:12 | Entry | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:86:20:86:20 | After access to parameter b [false] | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:86:20:86:20 | After access to parameter b [true] | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:86:20:86:32 | After ... ? ... : ... | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:87:9:87:31 | After call to method Assert | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:90:13:90:13 | After access to parameter b [false] | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:90:13:90:13 | After access to parameter b [true] | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:90:13:90:25 | After ... ? ... : ... | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:91:9:91:24 | After call to method IsNull | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:94:13:94:13 | After access to parameter b [false] | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:94:13:94:13 | After access to parameter b [true] | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:94:13:94:25 | After ... ? ... : ... | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:95:9:95:27 | After call to method IsNotNull | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:98:13:98:13 | After access to parameter b [false] | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:98:13:98:13 | After access to parameter b [true] | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:98:13:98:25 | After ... ? ... : ... | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:99:9:99:32 | After call to method IsTrue | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:102:13:102:13 | After access to parameter b [false] | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:102:13:102:13 | After access to parameter b [true] | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:102:13:102:25 | After ... ? ... : ... | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:103:9:103:32 | After call to method IsTrue | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:106:13:106:13 | After access to parameter b [false] | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:106:13:106:13 | After access to parameter b [true] | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:106:13:106:25 | After ... ? ... : ... | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:107:9:107:33 | After call to method IsFalse | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:110:13:110:13 | After access to parameter b [false] | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:110:13:110:13 | After access to parameter b [true] | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:110:13:110:25 | After ... ? ... : ... | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:111:9:111:33 | After call to method IsFalse | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:114:13:114:13 | After access to parameter b [false] | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:114:13:114:13 | After access to parameter b [true] | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:114:13:114:25 | After ... ? ... : ... | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:115:9:115:37 | After call to method IsTrue | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:115:23:115:31 | After ... != ... [false] | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:115:23:115:31 | After ... != ... [true] | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:115:23:115:36 | After ... && ... | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:118:13:118:13 | After access to parameter b [false] | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:118:13:118:13 | After access to parameter b [true] | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:118:13:118:25 | After ... ? ... : ... | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:119:24:119:32 | After ... == ... [false] | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:119:24:119:32 | After ... == ... [true] | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:119:24:119:38 | After ... \|\| ... | +| Assert.cs:122:13:122:13 | After access to parameter b [false] | Assert.cs:122:13:122:13 | After access to parameter b [false] | +| Assert.cs:122:13:122:13 | After access to parameter b [true] | Assert.cs:122:13:122:13 | After access to parameter b [true] | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:84:10:84:12 | Entry | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:86:20:86:20 | After access to parameter b [false] | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:86:20:86:20 | After access to parameter b [true] | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:86:20:86:32 | After ... ? ... : ... | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:87:9:87:31 | After call to method Assert | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:90:13:90:13 | After access to parameter b [false] | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:90:13:90:13 | After access to parameter b [true] | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:90:13:90:25 | After ... ? ... : ... | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:91:9:91:24 | After call to method IsNull | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:94:13:94:13 | After access to parameter b [false] | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:94:13:94:13 | After access to parameter b [true] | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:94:13:94:25 | After ... ? ... : ... | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:95:9:95:27 | After call to method IsNotNull | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:98:13:98:13 | After access to parameter b [false] | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:98:13:98:13 | After access to parameter b [true] | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:98:13:98:25 | After ... ? ... : ... | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:99:9:99:32 | After call to method IsTrue | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:102:13:102:13 | After access to parameter b [false] | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:102:13:102:13 | After access to parameter b [true] | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:102:13:102:25 | After ... ? ... : ... | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:103:9:103:32 | After call to method IsTrue | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:106:13:106:13 | After access to parameter b [false] | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:106:13:106:13 | After access to parameter b [true] | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:106:13:106:25 | After ... ? ... : ... | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:107:9:107:33 | After call to method IsFalse | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:110:13:110:13 | After access to parameter b [false] | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:110:13:110:13 | After access to parameter b [true] | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:110:13:110:25 | After ... ? ... : ... | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:111:9:111:33 | After call to method IsFalse | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:114:13:114:13 | After access to parameter b [false] | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:114:13:114:13 | After access to parameter b [true] | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:114:13:114:25 | After ... ? ... : ... | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:115:9:115:37 | After call to method IsTrue | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:115:23:115:31 | After ... != ... [false] | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:115:23:115:31 | After ... != ... [true] | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:115:23:115:36 | After ... && ... | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:118:13:118:13 | After access to parameter b [false] | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:118:13:118:13 | After access to parameter b [true] | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:118:13:118:25 | After ... ? ... : ... | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:119:9:119:39 | After call to method IsFalse | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:119:24:119:32 | After ... == ... [false] | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:119:24:119:32 | After ... == ... [true] | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:119:24:119:38 | After ... \|\| ... | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:122:13:122:13 | After access to parameter b [false] | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:122:13:122:13 | After access to parameter b [true] | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:122:13:122:25 | After ... ? ... : ... | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:84:10:84:12 | Entry | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:86:20:86:20 | After access to parameter b [false] | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:86:20:86:20 | After access to parameter b [true] | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:86:20:86:32 | After ... ? ... : ... | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:87:9:87:31 | After call to method Assert | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:90:13:90:13 | After access to parameter b [false] | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:90:13:90:13 | After access to parameter b [true] | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:90:13:90:25 | After ... ? ... : ... | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:91:9:91:24 | After call to method IsNull | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:94:13:94:13 | After access to parameter b [false] | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:94:13:94:13 | After access to parameter b [true] | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:94:13:94:25 | After ... ? ... : ... | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:95:9:95:27 | After call to method IsNotNull | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:98:13:98:13 | After access to parameter b [false] | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:98:13:98:13 | After access to parameter b [true] | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:98:13:98:25 | After ... ? ... : ... | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:99:9:99:32 | After call to method IsTrue | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:102:13:102:13 | After access to parameter b [false] | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:102:13:102:13 | After access to parameter b [true] | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:102:13:102:25 | After ... ? ... : ... | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:103:9:103:32 | After call to method IsTrue | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:106:13:106:13 | After access to parameter b [false] | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:106:13:106:13 | After access to parameter b [true] | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:106:13:106:25 | After ... ? ... : ... | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:107:9:107:33 | After call to method IsFalse | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:110:13:110:13 | After access to parameter b [false] | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:110:13:110:13 | After access to parameter b [true] | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:110:13:110:25 | After ... ? ... : ... | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:111:9:111:33 | After call to method IsFalse | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:114:13:114:13 | After access to parameter b [false] | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:114:13:114:13 | After access to parameter b [true] | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:114:13:114:25 | After ... ? ... : ... | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:115:9:115:37 | After call to method IsTrue | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:115:23:115:31 | After ... != ... [false] | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:115:23:115:31 | After ... != ... [true] | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:115:23:115:36 | After ... && ... | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:118:13:118:13 | After access to parameter b [false] | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:118:13:118:13 | After access to parameter b [true] | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:118:13:118:25 | After ... ? ... : ... | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:119:9:119:39 | After call to method IsFalse | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:119:24:119:32 | After ... == ... [false] | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:119:24:119:32 | After ... == ... [true] | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:119:24:119:38 | After ... \|\| ... | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:122:13:122:13 | After access to parameter b [false] | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:122:13:122:13 | After access to parameter b [true] | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:122:13:122:25 | After ... ? ... : ... | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:123:9:123:37 | After call to method IsTrue | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:123:23:123:31 | After ... == ... [false] | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:123:23:123:31 | After ... == ... [true] | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:123:23:123:36 | After ... && ... | +| Assert.cs:123:23:123:31 | After ... == ... [false] | Assert.cs:123:23:123:31 | After ... == ... [false] | +| Assert.cs:123:23:123:31 | After ... == ... [true] | Assert.cs:123:23:123:31 | After ... == ... [true] | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:84:10:84:12 | Entry | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:86:20:86:20 | After access to parameter b [false] | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:86:20:86:20 | After access to parameter b [true] | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:86:20:86:32 | After ... ? ... : ... | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:87:9:87:31 | After call to method Assert | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:90:13:90:13 | After access to parameter b [false] | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:90:13:90:13 | After access to parameter b [true] | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:90:13:90:25 | After ... ? ... : ... | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:91:9:91:24 | After call to method IsNull | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:94:13:94:13 | After access to parameter b [false] | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:94:13:94:13 | After access to parameter b [true] | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:94:13:94:25 | After ... ? ... : ... | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:95:9:95:27 | After call to method IsNotNull | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:98:13:98:13 | After access to parameter b [false] | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:98:13:98:13 | After access to parameter b [true] | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:98:13:98:25 | After ... ? ... : ... | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:99:9:99:32 | After call to method IsTrue | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:102:13:102:13 | After access to parameter b [false] | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:102:13:102:13 | After access to parameter b [true] | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:102:13:102:25 | After ... ? ... : ... | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:103:9:103:32 | After call to method IsTrue | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:106:13:106:13 | After access to parameter b [false] | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:106:13:106:13 | After access to parameter b [true] | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:106:13:106:25 | After ... ? ... : ... | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:107:9:107:33 | After call to method IsFalse | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:110:13:110:13 | After access to parameter b [false] | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:110:13:110:13 | After access to parameter b [true] | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:110:13:110:25 | After ... ? ... : ... | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:111:9:111:33 | After call to method IsFalse | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:114:13:114:13 | After access to parameter b [false] | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:114:13:114:13 | After access to parameter b [true] | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:114:13:114:25 | After ... ? ... : ... | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:115:9:115:37 | After call to method IsTrue | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:115:23:115:31 | After ... != ... [false] | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:115:23:115:31 | After ... != ... [true] | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:115:23:115:36 | After ... && ... | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:118:13:118:13 | After access to parameter b [false] | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:118:13:118:13 | After access to parameter b [true] | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:118:13:118:25 | After ... ? ... : ... | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:119:9:119:39 | After call to method IsFalse | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:119:24:119:32 | After ... == ... [false] | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:119:24:119:32 | After ... == ... [true] | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:119:24:119:38 | After ... \|\| ... | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:122:13:122:13 | After access to parameter b [false] | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:122:13:122:13 | After access to parameter b [true] | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:122:13:122:25 | After ... ? ... : ... | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:123:23:123:31 | After ... == ... [false] | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:123:23:123:31 | After ... == ... [true] | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:123:23:123:36 | After ... && ... | +| Assert.cs:126:13:126:13 | After access to parameter b [false] | Assert.cs:126:13:126:13 | After access to parameter b [false] | +| Assert.cs:126:13:126:13 | After access to parameter b [true] | Assert.cs:126:13:126:13 | After access to parameter b [true] | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:84:10:84:12 | Entry | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:86:20:86:20 | After access to parameter b [false] | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:86:20:86:20 | After access to parameter b [true] | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:86:20:86:32 | After ... ? ... : ... | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:87:9:87:31 | After call to method Assert | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:90:13:90:13 | After access to parameter b [false] | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:90:13:90:13 | After access to parameter b [true] | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:90:13:90:25 | After ... ? ... : ... | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:91:9:91:24 | After call to method IsNull | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:94:13:94:13 | After access to parameter b [false] | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:94:13:94:13 | After access to parameter b [true] | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:94:13:94:25 | After ... ? ... : ... | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:95:9:95:27 | After call to method IsNotNull | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:98:13:98:13 | After access to parameter b [false] | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:98:13:98:13 | After access to parameter b [true] | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:98:13:98:25 | After ... ? ... : ... | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:99:9:99:32 | After call to method IsTrue | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:102:13:102:13 | After access to parameter b [false] | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:102:13:102:13 | After access to parameter b [true] | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:102:13:102:25 | After ... ? ... : ... | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:103:9:103:32 | After call to method IsTrue | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:106:13:106:13 | After access to parameter b [false] | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:106:13:106:13 | After access to parameter b [true] | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:106:13:106:25 | After ... ? ... : ... | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:107:9:107:33 | After call to method IsFalse | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:110:13:110:13 | After access to parameter b [false] | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:110:13:110:13 | After access to parameter b [true] | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:110:13:110:25 | After ... ? ... : ... | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:111:9:111:33 | After call to method IsFalse | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:114:13:114:13 | After access to parameter b [false] | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:114:13:114:13 | After access to parameter b [true] | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:114:13:114:25 | After ... ? ... : ... | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:115:9:115:37 | After call to method IsTrue | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:115:23:115:31 | After ... != ... [false] | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:115:23:115:31 | After ... != ... [true] | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:115:23:115:36 | After ... && ... | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:118:13:118:13 | After access to parameter b [false] | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:118:13:118:13 | After access to parameter b [true] | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:118:13:118:25 | After ... ? ... : ... | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:119:9:119:39 | After call to method IsFalse | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:119:24:119:32 | After ... == ... [false] | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:119:24:119:32 | After ... == ... [true] | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:119:24:119:38 | After ... \|\| ... | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:122:13:122:13 | After access to parameter b [false] | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:122:13:122:13 | After access to parameter b [true] | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:122:13:122:25 | After ... ? ... : ... | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:123:9:123:37 | After call to method IsTrue | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:123:23:123:31 | After ... == ... [false] | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:123:23:123:31 | After ... == ... [true] | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:123:23:123:36 | After ... && ... | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:126:13:126:13 | After access to parameter b [false] | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:126:13:126:13 | After access to parameter b [true] | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:126:13:126:25 | After ... ? ... : ... | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:84:10:84:12 | Entry | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:86:20:86:20 | After access to parameter b [false] | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:86:20:86:20 | After access to parameter b [true] | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:86:20:86:32 | After ... ? ... : ... | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:87:9:87:31 | After call to method Assert | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:90:13:90:13 | After access to parameter b [false] | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:90:13:90:13 | After access to parameter b [true] | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:90:13:90:25 | After ... ? ... : ... | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:91:9:91:24 | After call to method IsNull | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:94:13:94:13 | After access to parameter b [false] | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:94:13:94:13 | After access to parameter b [true] | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:94:13:94:25 | After ... ? ... : ... | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:95:9:95:27 | After call to method IsNotNull | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:98:13:98:13 | After access to parameter b [false] | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:98:13:98:13 | After access to parameter b [true] | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:98:13:98:25 | After ... ? ... : ... | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:99:9:99:32 | After call to method IsTrue | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:102:13:102:13 | After access to parameter b [false] | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:102:13:102:13 | After access to parameter b [true] | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:102:13:102:25 | After ... ? ... : ... | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:103:9:103:32 | After call to method IsTrue | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:106:13:106:13 | After access to parameter b [false] | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:106:13:106:13 | After access to parameter b [true] | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:106:13:106:25 | After ... ? ... : ... | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:107:9:107:33 | After call to method IsFalse | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:110:13:110:13 | After access to parameter b [false] | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:110:13:110:13 | After access to parameter b [true] | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:110:13:110:25 | After ... ? ... : ... | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:111:9:111:33 | After call to method IsFalse | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:114:13:114:13 | After access to parameter b [false] | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:114:13:114:13 | After access to parameter b [true] | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:114:13:114:25 | After ... ? ... : ... | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:115:9:115:37 | After call to method IsTrue | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:115:23:115:31 | After ... != ... [false] | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:115:23:115:31 | After ... != ... [true] | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:115:23:115:36 | After ... && ... | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:118:13:118:13 | After access to parameter b [false] | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:118:13:118:13 | After access to parameter b [true] | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:118:13:118:25 | After ... ? ... : ... | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:119:9:119:39 | After call to method IsFalse | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:119:24:119:32 | After ... == ... [false] | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:119:24:119:32 | After ... == ... [true] | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:119:24:119:38 | After ... \|\| ... | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:122:13:122:13 | After access to parameter b [false] | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:122:13:122:13 | After access to parameter b [true] | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:122:13:122:25 | After ... ? ... : ... | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:123:9:123:37 | After call to method IsTrue | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:123:23:123:31 | After ... == ... [false] | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:123:23:123:31 | After ... == ... [true] | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:123:23:123:36 | After ... && ... | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:126:13:126:13 | After access to parameter b [false] | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:126:13:126:13 | After access to parameter b [true] | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:126:13:126:25 | After ... ? ... : ... | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:127:9:127:39 | After call to method IsFalse | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:127:24:127:32 | After ... != ... [false] | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:127:24:127:32 | After ... != ... [true] | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:127:24:127:38 | After ... \|\| ... | +| Assert.cs:127:24:127:32 | After ... != ... [false] | Assert.cs:127:24:127:32 | After ... != ... [false] | +| Assert.cs:127:24:127:32 | After ... != ... [true] | Assert.cs:127:24:127:32 | After ... != ... [true] | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:84:10:84:12 | Entry | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:86:20:86:20 | After access to parameter b [false] | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:86:20:86:20 | After access to parameter b [true] | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:86:20:86:32 | After ... ? ... : ... | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:87:9:87:31 | After call to method Assert | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:90:13:90:13 | After access to parameter b [false] | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:90:13:90:13 | After access to parameter b [true] | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:90:13:90:25 | After ... ? ... : ... | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:91:9:91:24 | After call to method IsNull | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:94:13:94:13 | After access to parameter b [false] | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:94:13:94:13 | After access to parameter b [true] | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:94:13:94:25 | After ... ? ... : ... | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:95:9:95:27 | After call to method IsNotNull | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:98:13:98:13 | After access to parameter b [false] | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:98:13:98:13 | After access to parameter b [true] | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:98:13:98:25 | After ... ? ... : ... | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:99:9:99:32 | After call to method IsTrue | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:102:13:102:13 | After access to parameter b [false] | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:102:13:102:13 | After access to parameter b [true] | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:102:13:102:25 | After ... ? ... : ... | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:103:9:103:32 | After call to method IsTrue | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:106:13:106:13 | After access to parameter b [false] | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:106:13:106:13 | After access to parameter b [true] | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:106:13:106:25 | After ... ? ... : ... | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:107:9:107:33 | After call to method IsFalse | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:110:13:110:13 | After access to parameter b [false] | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:110:13:110:13 | After access to parameter b [true] | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:110:13:110:25 | After ... ? ... : ... | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:111:9:111:33 | After call to method IsFalse | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:114:13:114:13 | After access to parameter b [false] | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:114:13:114:13 | After access to parameter b [true] | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:114:13:114:25 | After ... ? ... : ... | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:115:9:115:37 | After call to method IsTrue | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:115:23:115:31 | After ... != ... [false] | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:115:23:115:31 | After ... != ... [true] | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:115:23:115:36 | After ... && ... | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:118:13:118:13 | After access to parameter b [false] | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:118:13:118:13 | After access to parameter b [true] | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:118:13:118:25 | After ... ? ... : ... | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:119:9:119:39 | After call to method IsFalse | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:119:24:119:32 | After ... == ... [false] | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:119:24:119:32 | After ... == ... [true] | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:119:24:119:38 | After ... \|\| ... | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:122:13:122:13 | After access to parameter b [false] | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:122:13:122:13 | After access to parameter b [true] | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:122:13:122:25 | After ... ? ... : ... | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:123:9:123:37 | After call to method IsTrue | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:123:23:123:31 | After ... == ... [false] | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:123:23:123:31 | After ... == ... [true] | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:123:23:123:36 | After ... && ... | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:126:13:126:13 | After access to parameter b [false] | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:126:13:126:13 | After access to parameter b [true] | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:126:13:126:25 | After ... ? ... : ... | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:127:24:127:32 | After ... != ... [false] | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:127:24:127:32 | After ... != ... [true] | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:127:24:127:38 | After ... \|\| ... | +| Assert.cs:131:18:131:32 | Entry | Assert.cs:131:18:131:32 | Entry | +| Assert.cs:138:10:138:12 | Entry | Assert.cs:138:10:138:12 | Entry | +| Assert.cs:138:10:138:12 | Exceptional Exit | Assert.cs:138:10:138:12 | Exceptional Exit | +| Assert.cs:138:10:138:12 | Exit | Assert.cs:138:10:138:12 | Exit | +| Assert.cs:140:9:140:35 | After call to method AssertTrueFalse | Assert.cs:138:10:138:12 | Entry | +| Assert.cs:140:9:140:35 | After call to method AssertTrueFalse | Assert.cs:140:9:140:35 | After call to method AssertTrueFalse | +| Assignments.cs:1:7:1:17 | Entry | Assignments.cs:1:7:1:17 | Entry | +| Assignments.cs:3:10:3:10 | Entry | Assignments.cs:3:10:3:10 | Entry | +| Assignments.cs:14:18:14:35 | Entry | Assignments.cs:14:18:14:35 | Entry | +| Assignments.cs:17:40:17:40 | Entry | Assignments.cs:17:40:17:40 | Entry | +| Assignments.cs:27:10:27:23 | Entry | Assignments.cs:27:10:27:23 | Entry | +| Assignments.cs:32:10:32:22 | Entry | Assignments.cs:32:10:32:22 | Entry | +| Assignments.cs:38:10:38:11 | Entry | Assignments.cs:38:10:38:11 | Entry | +| BreakInTry.cs:1:7:1:16 | Entry | BreakInTry.cs:1:7:1:16 | Entry | +| BreakInTry.cs:3:10:3:11 | Entry | BreakInTry.cs:3:10:3:11 | Entry | +| BreakInTry.cs:7:13:11:13 | After foreach (... ... in ...) ... | BreakInTry.cs:3:10:3:11 | Entry | +| BreakInTry.cs:7:13:11:13 | After foreach (... ... in ...) ... | BreakInTry.cs:7:13:11:13 | After foreach (... ... in ...) ... | +| BreakInTry.cs:7:13:11:13 | After foreach (... ... in ...) ... | BreakInTry.cs:7:26:7:28 | String arg | +| BreakInTry.cs:7:13:11:13 | After foreach (... ... in ...) ... | BreakInTry.cs:7:33:7:36 | After access to parameter args [empty] | +| BreakInTry.cs:7:13:11:13 | After foreach (... ... in ...) ... | BreakInTry.cs:7:33:7:36 | After access to parameter args [non-empty] | +| BreakInTry.cs:7:13:11:13 | After foreach (... ... in ...) ... | BreakInTry.cs:9:21:9:31 | After ... == ... [false] | +| BreakInTry.cs:7:13:11:13 | After foreach (... ... in ...) ... | BreakInTry.cs:9:21:9:31 | After ... == ... [true] | | BreakInTry.cs:7:26:7:28 | String arg | BreakInTry.cs:7:26:7:28 | String arg | -| BreakInTry.cs:10:21:10:26 | break; | BreakInTry.cs:10:21:10:26 | break; | -| BreakInTry.cs:14:9:17:9 | {...} | BreakInTry.cs:3:10:3:11 | enter M1 | -| BreakInTry.cs:14:9:17:9 | {...} | BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | -| BreakInTry.cs:14:9:17:9 | {...} | BreakInTry.cs:7:26:7:28 | String arg | -| BreakInTry.cs:14:9:17:9 | {...} | BreakInTry.cs:10:21:10:26 | break; | -| BreakInTry.cs:14:9:17:9 | {...} | BreakInTry.cs:14:9:17:9 | {...} | -| BreakInTry.cs:16:17:16:17 | ; | BreakInTry.cs:16:17:16:17 | ; | -| BreakInTry.cs:20:10:20:11 | enter M2 | BreakInTry.cs:20:10:20:11 | enter M2 | -| BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:20:10:20:11 | enter M2 | -| BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | +| BreakInTry.cs:7:26:7:28 | String arg | BreakInTry.cs:7:33:7:36 | After access to parameter args [non-empty] | +| BreakInTry.cs:7:33:7:36 | After access to parameter args [empty] | BreakInTry.cs:7:33:7:36 | After access to parameter args [empty] | +| BreakInTry.cs:7:33:7:36 | After access to parameter args [non-empty] | BreakInTry.cs:7:33:7:36 | After access to parameter args [non-empty] | +| BreakInTry.cs:9:21:9:31 | After ... == ... [false] | BreakInTry.cs:9:21:9:31 | After ... == ... [false] | +| BreakInTry.cs:9:21:9:31 | After ... == ... [true] | BreakInTry.cs:9:21:9:31 | After ... == ... [true] | +| BreakInTry.cs:15:13:16:17 | After if (...) ... | BreakInTry.cs:3:10:3:11 | Entry | +| BreakInTry.cs:15:13:16:17 | After if (...) ... | BreakInTry.cs:7:13:11:13 | After foreach (... ... in ...) ... | +| BreakInTry.cs:15:13:16:17 | After if (...) ... | BreakInTry.cs:7:26:7:28 | String arg | +| BreakInTry.cs:15:13:16:17 | After if (...) ... | BreakInTry.cs:7:33:7:36 | After access to parameter args [empty] | +| BreakInTry.cs:15:13:16:17 | After if (...) ... | BreakInTry.cs:7:33:7:36 | After access to parameter args [non-empty] | +| BreakInTry.cs:15:13:16:17 | After if (...) ... | BreakInTry.cs:9:21:9:31 | After ... == ... [false] | +| BreakInTry.cs:15:13:16:17 | After if (...) ... | BreakInTry.cs:9:21:9:31 | After ... == ... [true] | +| BreakInTry.cs:15:13:16:17 | After if (...) ... | BreakInTry.cs:15:13:16:17 | After if (...) ... | +| BreakInTry.cs:15:13:16:17 | After if (...) ... | BreakInTry.cs:15:17:15:28 | After ... == ... [false] | +| BreakInTry.cs:15:13:16:17 | After if (...) ... | BreakInTry.cs:15:17:15:28 | After ... == ... [true] | +| BreakInTry.cs:15:17:15:28 | After ... == ... [false] | BreakInTry.cs:15:17:15:28 | After ... == ... [false] | +| BreakInTry.cs:15:17:15:28 | After ... == ... [true] | BreakInTry.cs:15:17:15:28 | After ... == ... [true] | +| BreakInTry.cs:20:10:20:11 | Entry | BreakInTry.cs:20:10:20:11 | Entry | +| BreakInTry.cs:22:9:34:9 | After foreach (... ... in ...) ... | BreakInTry.cs:20:10:20:11 | Entry | +| BreakInTry.cs:22:9:34:9 | After foreach (... ... in ...) ... | BreakInTry.cs:22:9:34:9 | After foreach (... ... in ...) ... | +| BreakInTry.cs:22:9:34:9 | After foreach (... ... in ...) ... | BreakInTry.cs:22:22:22:24 | String arg | +| BreakInTry.cs:22:9:34:9 | After foreach (... ... in ...) ... | BreakInTry.cs:22:29:22:32 | After access to parameter args [empty] | +| BreakInTry.cs:22:9:34:9 | After foreach (... ... in ...) ... | BreakInTry.cs:22:29:22:32 | After access to parameter args [non-empty] | +| BreakInTry.cs:22:9:34:9 | After foreach (... ... in ...) ... | BreakInTry.cs:24:13:33:13 | After try {...} ... | +| BreakInTry.cs:22:9:34:9 | After foreach (... ... in ...) ... | BreakInTry.cs:26:21:26:31 | After ... == ... [false] | +| BreakInTry.cs:22:9:34:9 | After foreach (... ... in ...) ... | BreakInTry.cs:26:21:26:31 | After ... == ... [true] | +| BreakInTry.cs:22:9:34:9 | After foreach (... ... in ...) ... | BreakInTry.cs:30:13:33:13 | {...} | +| BreakInTry.cs:22:9:34:9 | After foreach (... ... in ...) ... | BreakInTry.cs:31:17:32:21 | After if (...) ... | +| BreakInTry.cs:22:9:34:9 | After foreach (... ... in ...) ... | BreakInTry.cs:31:21:31:32 | After ... == ... [false] | +| BreakInTry.cs:22:9:34:9 | After foreach (... ... in ...) ... | BreakInTry.cs:31:21:31:32 | After ... == ... [true] | | BreakInTry.cs:22:22:22:24 | String arg | BreakInTry.cs:22:22:22:24 | String arg | -| BreakInTry.cs:27:21:27:26 | break; | BreakInTry.cs:27:21:27:26 | break; | +| BreakInTry.cs:22:22:22:24 | String arg | BreakInTry.cs:22:29:22:32 | After access to parameter args [non-empty] | +| BreakInTry.cs:22:29:22:32 | After access to parameter args [empty] | BreakInTry.cs:22:29:22:32 | After access to parameter args [empty] | +| BreakInTry.cs:22:29:22:32 | After access to parameter args [non-empty] | BreakInTry.cs:22:29:22:32 | After access to parameter args [non-empty] | +| BreakInTry.cs:24:13:33:13 | After try {...} ... | BreakInTry.cs:24:13:33:13 | After try {...} ... | +| BreakInTry.cs:26:21:26:31 | After ... == ... [false] | BreakInTry.cs:26:21:26:31 | After ... == ... [false] | +| BreakInTry.cs:26:21:26:31 | After ... == ... [true] | BreakInTry.cs:26:21:26:31 | After ... == ... [true] | | BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:22:22:22:24 | String arg | -| BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:27:21:27:26 | break; | +| BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:22:29:22:32 | After access to parameter args [non-empty] | +| BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:26:21:26:31 | After ... == ... [false] | +| BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:26:21:26:31 | After ... == ... [true] | | BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:30:13:33:13 | {...} | -| BreakInTry.cs:32:21:32:21 | ; | BreakInTry.cs:32:21:32:21 | ; | -| BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:20:10:20:11 | enter M2 | -| BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | -| BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:22:22:22:24 | String arg | -| BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:27:21:27:26 | break; | -| BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:30:13:33:13 | {...} | -| BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:32:21:32:21 | ; | -| BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:35:7:35:7 | ; | -| BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:38:10:38:11 | enter M3 | -| BreakInTry.cs:38:10:38:11 | exit M3 (normal) | BreakInTry.cs:38:10:38:11 | enter M3 | -| BreakInTry.cs:38:10:38:11 | exit M3 (normal) | BreakInTry.cs:38:10:38:11 | exit M3 (normal) | -| BreakInTry.cs:38:10:38:11 | exit M3 (normal) | BreakInTry.cs:43:17:43:23 | return ...; | -| BreakInTry.cs:38:10:38:11 | exit M3 (normal) | BreakInTry.cs:46:9:52:9 | {...} | -| BreakInTry.cs:38:10:38:11 | exit M3 (normal) | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | -| BreakInTry.cs:38:10:38:11 | exit M3 (normal) | BreakInTry.cs:47:26:47:28 | String arg | -| BreakInTry.cs:38:10:38:11 | exit M3 (normal) | BreakInTry.cs:50:21:50:26 | break; | -| BreakInTry.cs:38:10:38:11 | exit M3 (normal) | BreakInTry.cs:53:7:53:7 | ; | -| BreakInTry.cs:43:17:43:23 | return ...; | BreakInTry.cs:43:17:43:23 | return ...; | -| BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:38:10:38:11 | enter M3 | -| BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:43:17:43:23 | return ...; | +| BreakInTry.cs:31:17:32:21 | After if (...) ... | BreakInTry.cs:22:22:22:24 | String arg | +| BreakInTry.cs:31:17:32:21 | After if (...) ... | BreakInTry.cs:22:29:22:32 | After access to parameter args [non-empty] | +| BreakInTry.cs:31:17:32:21 | After if (...) ... | BreakInTry.cs:26:21:26:31 | After ... == ... [false] | +| BreakInTry.cs:31:17:32:21 | After if (...) ... | BreakInTry.cs:26:21:26:31 | After ... == ... [true] | +| BreakInTry.cs:31:17:32:21 | After if (...) ... | BreakInTry.cs:30:13:33:13 | {...} | +| BreakInTry.cs:31:17:32:21 | After if (...) ... | BreakInTry.cs:31:17:32:21 | After if (...) ... | +| BreakInTry.cs:31:17:32:21 | After if (...) ... | BreakInTry.cs:31:21:31:32 | After ... == ... [false] | +| BreakInTry.cs:31:17:32:21 | After if (...) ... | BreakInTry.cs:31:21:31:32 | After ... == ... [true] | +| BreakInTry.cs:31:21:31:32 | After ... == ... [false] | BreakInTry.cs:31:21:31:32 | After ... == ... [false] | +| BreakInTry.cs:31:21:31:32 | After ... == ... [true] | BreakInTry.cs:31:21:31:32 | After ... == ... [true] | +| BreakInTry.cs:38:10:38:11 | Entry | BreakInTry.cs:38:10:38:11 | Entry | +| BreakInTry.cs:38:10:38:11 | Normal Exit | BreakInTry.cs:38:10:38:11 | Entry | +| BreakInTry.cs:38:10:38:11 | Normal Exit | BreakInTry.cs:38:10:38:11 | Normal Exit | +| BreakInTry.cs:38:10:38:11 | Normal Exit | BreakInTry.cs:40:9:52:9 | After try {...} ... | +| BreakInTry.cs:38:10:38:11 | Normal Exit | BreakInTry.cs:42:17:42:28 | After ... == ... [false] | +| BreakInTry.cs:38:10:38:11 | Normal Exit | BreakInTry.cs:42:17:42:28 | After ... == ... [true] | +| BreakInTry.cs:38:10:38:11 | Normal Exit | BreakInTry.cs:46:9:52:9 | {...} | +| BreakInTry.cs:38:10:38:11 | Normal Exit | BreakInTry.cs:47:13:51:13 | After foreach (... ... in ...) ... | +| BreakInTry.cs:38:10:38:11 | Normal Exit | BreakInTry.cs:47:26:47:28 | String arg | +| BreakInTry.cs:38:10:38:11 | Normal Exit | BreakInTry.cs:47:33:47:36 | After access to parameter args [empty] | +| BreakInTry.cs:38:10:38:11 | Normal Exit | BreakInTry.cs:47:33:47:36 | After access to parameter args [non-empty] | +| BreakInTry.cs:38:10:38:11 | Normal Exit | BreakInTry.cs:49:21:49:31 | After ... == ... [false] | +| BreakInTry.cs:38:10:38:11 | Normal Exit | BreakInTry.cs:49:21:49:31 | After ... == ... [true] | +| BreakInTry.cs:40:9:52:9 | After try {...} ... | BreakInTry.cs:40:9:52:9 | After try {...} ... | +| BreakInTry.cs:42:17:42:28 | After ... == ... [false] | BreakInTry.cs:42:17:42:28 | After ... == ... [false] | +| BreakInTry.cs:42:17:42:28 | After ... == ... [true] | BreakInTry.cs:42:17:42:28 | After ... == ... [true] | +| BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:38:10:38:11 | Entry | +| BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:42:17:42:28 | After ... == ... [false] | +| BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:42:17:42:28 | After ... == ... [true] | | BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:46:9:52:9 | {...} | -| BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:38:10:38:11 | enter M3 | -| BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:43:17:43:23 | return ...; | -| BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:46:9:52:9 | {...} | -| BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | +| BreakInTry.cs:47:13:51:13 | After foreach (... ... in ...) ... | BreakInTry.cs:38:10:38:11 | Entry | +| BreakInTry.cs:47:13:51:13 | After foreach (... ... in ...) ... | BreakInTry.cs:42:17:42:28 | After ... == ... [false] | +| BreakInTry.cs:47:13:51:13 | After foreach (... ... in ...) ... | BreakInTry.cs:42:17:42:28 | After ... == ... [true] | +| BreakInTry.cs:47:13:51:13 | After foreach (... ... in ...) ... | BreakInTry.cs:46:9:52:9 | {...} | +| BreakInTry.cs:47:13:51:13 | After foreach (... ... in ...) ... | BreakInTry.cs:47:13:51:13 | After foreach (... ... in ...) ... | +| BreakInTry.cs:47:13:51:13 | After foreach (... ... in ...) ... | BreakInTry.cs:47:26:47:28 | String arg | +| BreakInTry.cs:47:13:51:13 | After foreach (... ... in ...) ... | BreakInTry.cs:47:33:47:36 | After access to parameter args [empty] | +| BreakInTry.cs:47:13:51:13 | After foreach (... ... in ...) ... | BreakInTry.cs:47:33:47:36 | After access to parameter args [non-empty] | +| BreakInTry.cs:47:13:51:13 | After foreach (... ... in ...) ... | BreakInTry.cs:49:21:49:31 | After ... == ... [false] | +| BreakInTry.cs:47:13:51:13 | After foreach (... ... in ...) ... | BreakInTry.cs:49:21:49:31 | After ... == ... [true] | | BreakInTry.cs:47:26:47:28 | String arg | BreakInTry.cs:47:26:47:28 | String arg | -| BreakInTry.cs:50:21:50:26 | break; | BreakInTry.cs:50:21:50:26 | break; | -| BreakInTry.cs:53:7:53:7 | ; | BreakInTry.cs:53:7:53:7 | ; | -| BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:56:10:56:11 | enter M4 | -| BreakInTry.cs:56:10:56:11 | exit M4 (normal) | BreakInTry.cs:56:10:56:11 | enter M4 | -| BreakInTry.cs:56:10:56:11 | exit M4 (normal) | BreakInTry.cs:56:10:56:11 | exit M4 (normal) | -| BreakInTry.cs:56:10:56:11 | exit M4 (normal) | BreakInTry.cs:61:17:61:23 | return ...; | -| BreakInTry.cs:56:10:56:11 | exit M4 (normal) | BreakInTry.cs:64:9:70:9 | {...} | -| BreakInTry.cs:56:10:56:11 | exit M4 (normal) | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | -| BreakInTry.cs:56:10:56:11 | exit M4 (normal) | BreakInTry.cs:65:26:65:28 | String arg | -| BreakInTry.cs:56:10:56:11 | exit M4 (normal) | BreakInTry.cs:68:21:68:26 | break; | -| BreakInTry.cs:61:17:61:23 | return ...; | BreakInTry.cs:61:17:61:23 | return ...; | -| BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:56:10:56:11 | enter M4 | -| BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:61:17:61:23 | return ...; | +| BreakInTry.cs:47:26:47:28 | String arg | BreakInTry.cs:47:33:47:36 | After access to parameter args [non-empty] | +| BreakInTry.cs:47:33:47:36 | After access to parameter args [empty] | BreakInTry.cs:47:33:47:36 | After access to parameter args [empty] | +| BreakInTry.cs:47:33:47:36 | After access to parameter args [non-empty] | BreakInTry.cs:47:33:47:36 | After access to parameter args [non-empty] | +| BreakInTry.cs:49:21:49:31 | After ... == ... [false] | BreakInTry.cs:49:21:49:31 | After ... == ... [false] | +| BreakInTry.cs:49:21:49:31 | After ... == ... [true] | BreakInTry.cs:49:21:49:31 | After ... == ... [true] | +| BreakInTry.cs:56:10:56:11 | Entry | BreakInTry.cs:56:10:56:11 | Entry | +| BreakInTry.cs:56:10:56:11 | Normal Exit | BreakInTry.cs:56:10:56:11 | Entry | +| BreakInTry.cs:56:10:56:11 | Normal Exit | BreakInTry.cs:56:10:56:11 | Normal Exit | +| BreakInTry.cs:56:10:56:11 | Normal Exit | BreakInTry.cs:58:9:70:9 | After try {...} ... | +| BreakInTry.cs:56:10:56:11 | Normal Exit | BreakInTry.cs:60:17:60:28 | After ... == ... [false] | +| BreakInTry.cs:56:10:56:11 | Normal Exit | BreakInTry.cs:60:17:60:28 | After ... == ... [true] | +| BreakInTry.cs:56:10:56:11 | Normal Exit | BreakInTry.cs:64:9:70:9 | {...} | +| BreakInTry.cs:56:10:56:11 | Normal Exit | BreakInTry.cs:65:13:69:13 | After foreach (... ... in ...) ... | +| BreakInTry.cs:56:10:56:11 | Normal Exit | BreakInTry.cs:65:26:65:28 | String arg | +| BreakInTry.cs:56:10:56:11 | Normal Exit | BreakInTry.cs:65:33:65:36 | After access to parameter args [empty] | +| BreakInTry.cs:56:10:56:11 | Normal Exit | BreakInTry.cs:65:33:65:36 | After access to parameter args [non-empty] | +| BreakInTry.cs:56:10:56:11 | Normal Exit | BreakInTry.cs:67:21:67:31 | After ... == ... [false] | +| BreakInTry.cs:56:10:56:11 | Normal Exit | BreakInTry.cs:67:21:67:31 | After ... == ... [true] | +| BreakInTry.cs:58:9:70:9 | After try {...} ... | BreakInTry.cs:58:9:70:9 | After try {...} ... | +| BreakInTry.cs:60:17:60:28 | After ... == ... [false] | BreakInTry.cs:60:17:60:28 | After ... == ... [false] | +| BreakInTry.cs:60:17:60:28 | After ... == ... [true] | BreakInTry.cs:60:17:60:28 | After ... == ... [true] | +| BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:56:10:56:11 | Entry | +| BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:60:17:60:28 | After ... == ... [false] | +| BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:60:17:60:28 | After ... == ... [true] | | BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:64:9:70:9 | {...} | -| BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:56:10:56:11 | enter M4 | -| BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:61:17:61:23 | return ...; | -| BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:64:9:70:9 | {...} | -| BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | +| BreakInTry.cs:65:13:69:13 | After foreach (... ... in ...) ... | BreakInTry.cs:56:10:56:11 | Entry | +| BreakInTry.cs:65:13:69:13 | After foreach (... ... in ...) ... | BreakInTry.cs:60:17:60:28 | After ... == ... [false] | +| BreakInTry.cs:65:13:69:13 | After foreach (... ... in ...) ... | BreakInTry.cs:60:17:60:28 | After ... == ... [true] | +| BreakInTry.cs:65:13:69:13 | After foreach (... ... in ...) ... | BreakInTry.cs:64:9:70:9 | {...} | +| BreakInTry.cs:65:13:69:13 | After foreach (... ... in ...) ... | BreakInTry.cs:65:13:69:13 | After foreach (... ... in ...) ... | +| BreakInTry.cs:65:13:69:13 | After foreach (... ... in ...) ... | BreakInTry.cs:65:26:65:28 | String arg | +| BreakInTry.cs:65:13:69:13 | After foreach (... ... in ...) ... | BreakInTry.cs:65:33:65:36 | After access to parameter args [empty] | +| BreakInTry.cs:65:13:69:13 | After foreach (... ... in ...) ... | BreakInTry.cs:65:33:65:36 | After access to parameter args [non-empty] | +| BreakInTry.cs:65:13:69:13 | After foreach (... ... in ...) ... | BreakInTry.cs:67:21:67:31 | After ... == ... [false] | +| BreakInTry.cs:65:13:69:13 | After foreach (... ... in ...) ... | BreakInTry.cs:67:21:67:31 | After ... == ... [true] | | BreakInTry.cs:65:26:65:28 | String arg | BreakInTry.cs:65:26:65:28 | String arg | -| BreakInTry.cs:68:21:68:26 | break; | BreakInTry.cs:68:21:68:26 | break; | -| CompileTimeOperators.cs:3:7:3:26 | enter CompileTimeOperators | CompileTimeOperators.cs:3:7:3:26 | enter CompileTimeOperators | -| CompileTimeOperators.cs:5:9:5:15 | enter Default | CompileTimeOperators.cs:5:9:5:15 | enter Default | -| CompileTimeOperators.cs:10:9:10:14 | enter Sizeof | CompileTimeOperators.cs:10:9:10:14 | enter Sizeof | -| CompileTimeOperators.cs:15:10:15:15 | enter Typeof | CompileTimeOperators.cs:15:10:15:15 | enter Typeof | -| CompileTimeOperators.cs:20:12:20:17 | enter Nameof | CompileTimeOperators.cs:20:12:20:17 | enter Nameof | -| CompileTimeOperators.cs:26:7:26:22 | enter GotoInTryFinally | CompileTimeOperators.cs:26:7:26:22 | enter GotoInTryFinally | -| CompileTimeOperators.cs:28:10:28:10 | enter M | CompileTimeOperators.cs:28:10:28:10 | enter M | -| CompileTimeOperators.cs:28:10:28:10 | exit M | CompileTimeOperators.cs:28:10:28:10 | exit M | -| CompileTimeOperators.cs:28:10:28:10 | exit M (abnormal) | CompileTimeOperators.cs:28:10:28:10 | exit M (abnormal) | -| CompileTimeOperators.cs:39:9:39:34 | ...; | CompileTimeOperators.cs:39:9:39:34 | ...; | -| CompileTimeOperators.cs:40:9:40:11 | End: | CompileTimeOperators.cs:28:10:28:10 | enter M | -| CompileTimeOperators.cs:40:9:40:11 | End: | CompileTimeOperators.cs:39:9:39:34 | ...; | +| BreakInTry.cs:65:26:65:28 | String arg | BreakInTry.cs:65:33:65:36 | After access to parameter args [non-empty] | +| BreakInTry.cs:65:33:65:36 | After access to parameter args [empty] | BreakInTry.cs:65:33:65:36 | After access to parameter args [empty] | +| BreakInTry.cs:65:33:65:36 | After access to parameter args [non-empty] | BreakInTry.cs:65:33:65:36 | After access to parameter args [non-empty] | +| BreakInTry.cs:67:21:67:31 | After ... == ... [false] | BreakInTry.cs:67:21:67:31 | After ... == ... [false] | +| BreakInTry.cs:67:21:67:31 | After ... == ... [true] | BreakInTry.cs:67:21:67:31 | After ... == ... [true] | +| CompileTimeOperators.cs:3:7:3:26 | Entry | CompileTimeOperators.cs:3:7:3:26 | Entry | +| CompileTimeOperators.cs:5:9:5:15 | Entry | CompileTimeOperators.cs:5:9:5:15 | Entry | +| CompileTimeOperators.cs:10:9:10:14 | Entry | CompileTimeOperators.cs:10:9:10:14 | Entry | +| CompileTimeOperators.cs:15:10:15:15 | Entry | CompileTimeOperators.cs:15:10:15:15 | Entry | +| CompileTimeOperators.cs:20:12:20:17 | Entry | CompileTimeOperators.cs:20:12:20:17 | Entry | +| CompileTimeOperators.cs:26:7:26:22 | Entry | CompileTimeOperators.cs:26:7:26:22 | Entry | +| CompileTimeOperators.cs:28:10:28:10 | Entry | CompileTimeOperators.cs:28:10:28:10 | Entry | +| CompileTimeOperators.cs:28:10:28:10 | Exceptional Exit | CompileTimeOperators.cs:28:10:28:10 | Exceptional Exit | +| CompileTimeOperators.cs:28:10:28:10 | Exit | CompileTimeOperators.cs:28:10:28:10 | Exit | +| CompileTimeOperators.cs:30:9:38:9 | After try {...} ... | CompileTimeOperators.cs:30:9:38:9 | After try {...} ... | +| CompileTimeOperators.cs:40:9:40:11 | End: | CompileTimeOperators.cs:28:10:28:10 | Entry | +| CompileTimeOperators.cs:40:9:40:11 | End: | CompileTimeOperators.cs:30:9:38:9 | After try {...} ... | | CompileTimeOperators.cs:40:9:40:11 | End: | CompileTimeOperators.cs:40:9:40:11 | End: | -| ConditionalAccess.cs:1:7:1:23 | enter ConditionalAccess | ConditionalAccess.cs:1:7:1:23 | enter ConditionalAccess | -| ConditionalAccess.cs:3:12:3:13 | enter M1 | ConditionalAccess.cs:3:12:3:13 | enter M1 | -| ConditionalAccess.cs:3:12:3:13 | exit M1 (normal) | ConditionalAccess.cs:3:12:3:13 | enter M1 | -| ConditionalAccess.cs:3:12:3:13 | exit M1 (normal) | ConditionalAccess.cs:3:12:3:13 | exit M1 (normal) | -| ConditionalAccess.cs:3:12:3:13 | exit M1 (normal) | ConditionalAccess.cs:3:26:3:38 | call to method ToString | -| ConditionalAccess.cs:3:12:3:13 | exit M1 (normal) | ConditionalAccess.cs:3:26:3:49 | call to method ToLower | -| ConditionalAccess.cs:3:26:3:38 | call to method ToString | ConditionalAccess.cs:3:26:3:38 | call to method ToString | -| ConditionalAccess.cs:3:26:3:49 | call to method ToLower | ConditionalAccess.cs:3:26:3:49 | call to method ToLower | -| ConditionalAccess.cs:5:10:5:11 | enter M2 | ConditionalAccess.cs:5:10:5:11 | enter M2 | -| ConditionalAccess.cs:5:10:5:11 | exit M2 (normal) | ConditionalAccess.cs:5:10:5:11 | enter M2 | -| ConditionalAccess.cs:5:10:5:11 | exit M2 (normal) | ConditionalAccess.cs:5:10:5:11 | exit M2 (normal) | -| ConditionalAccess.cs:5:10:5:11 | exit M2 (normal) | ConditionalAccess.cs:5:26:5:34 | access to property Length | -| ConditionalAccess.cs:5:26:5:34 | access to property Length | ConditionalAccess.cs:5:26:5:34 | access to property Length | -| ConditionalAccess.cs:7:10:7:11 | enter M3 | ConditionalAccess.cs:7:10:7:11 | enter M3 | -| ConditionalAccess.cs:7:10:7:11 | exit M3 (normal) | ConditionalAccess.cs:7:10:7:11 | enter M3 | -| ConditionalAccess.cs:7:10:7:11 | exit M3 (normal) | ConditionalAccess.cs:7:10:7:11 | exit M3 (normal) | -| ConditionalAccess.cs:7:10:7:11 | exit M3 (normal) | ConditionalAccess.cs:7:38:7:55 | access to property Length | -| ConditionalAccess.cs:7:10:7:11 | exit M3 (normal) | ConditionalAccess.cs:7:39:7:46 | ... ?? ... | -| ConditionalAccess.cs:7:10:7:11 | exit M3 (normal) | ConditionalAccess.cs:7:39:7:46 | [non-null] ... ?? ... | -| ConditionalAccess.cs:7:10:7:11 | exit M3 (normal) | ConditionalAccess.cs:7:39:7:46 | [null] ... ?? ... | -| ConditionalAccess.cs:7:10:7:11 | exit M3 (normal) | ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | -| ConditionalAccess.cs:7:38:7:55 | access to property Length | ConditionalAccess.cs:7:38:7:55 | access to property Length | -| ConditionalAccess.cs:7:38:7:55 | access to property Length | ConditionalAccess.cs:7:39:7:46 | [non-null] ... ?? ... | -| ConditionalAccess.cs:7:39:7:46 | ... ?? ... | ConditionalAccess.cs:7:39:7:46 | ... ?? ... | -| ConditionalAccess.cs:7:39:7:46 | [non-null] ... ?? ... | ConditionalAccess.cs:7:39:7:46 | [non-null] ... ?? ... | -| ConditionalAccess.cs:7:39:7:46 | [null] ... ?? ... | ConditionalAccess.cs:7:39:7:46 | [null] ... ?? ... | -| ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | -| ConditionalAccess.cs:9:9:9:10 | enter M4 | ConditionalAccess.cs:9:9:9:10 | enter M4 | -| ConditionalAccess.cs:9:25:9:33 | access to property Length | ConditionalAccess.cs:9:25:9:33 | access to property Length | -| ConditionalAccess.cs:9:25:9:38 | ... ?? ... | ConditionalAccess.cs:9:9:9:10 | enter M4 | -| ConditionalAccess.cs:9:25:9:38 | ... ?? ... | ConditionalAccess.cs:9:25:9:33 | access to property Length | -| ConditionalAccess.cs:9:25:9:38 | ... ?? ... | ConditionalAccess.cs:9:25:9:38 | ... ?? ... | -| ConditionalAccess.cs:9:25:9:38 | ... ?? ... | ConditionalAccess.cs:9:38:9:38 | 0 | -| ConditionalAccess.cs:9:38:9:38 | 0 | ConditionalAccess.cs:9:38:9:38 | 0 | -| ConditionalAccess.cs:11:9:11:10 | enter M5 | ConditionalAccess.cs:11:9:11:10 | enter M5 | -| ConditionalAccess.cs:11:9:11:10 | exit M5 (normal) | ConditionalAccess.cs:11:9:11:10 | enter M5 | -| ConditionalAccess.cs:11:9:11:10 | exit M5 (normal) | ConditionalAccess.cs:11:9:11:10 | exit M5 (normal) | -| ConditionalAccess.cs:11:9:11:10 | exit M5 (normal) | ConditionalAccess.cs:13:13:13:21 | access to property Length | -| ConditionalAccess.cs:11:9:11:10 | exit M5 (normal) | ConditionalAccess.cs:13:25:13:25 | 0 | -| ConditionalAccess.cs:11:9:11:10 | exit M5 (normal) | ConditionalAccess.cs:14:20:14:20 | 0 | -| ConditionalAccess.cs:11:9:11:10 | exit M5 (normal) | ConditionalAccess.cs:16:20:16:20 | 1 | -| ConditionalAccess.cs:13:13:13:21 | access to property Length | ConditionalAccess.cs:13:13:13:21 | access to property Length | -| ConditionalAccess.cs:13:25:13:25 | 0 | ConditionalAccess.cs:11:9:11:10 | enter M5 | -| ConditionalAccess.cs:13:25:13:25 | 0 | ConditionalAccess.cs:13:13:13:21 | access to property Length | -| ConditionalAccess.cs:13:25:13:25 | 0 | ConditionalAccess.cs:13:25:13:25 | 0 | -| ConditionalAccess.cs:14:20:14:20 | 0 | ConditionalAccess.cs:14:20:14:20 | 0 | -| ConditionalAccess.cs:16:20:16:20 | 1 | ConditionalAccess.cs:16:20:16:20 | 1 | -| ConditionalAccess.cs:19:12:19:13 | enter M6 | ConditionalAccess.cs:19:12:19:13 | enter M6 | -| ConditionalAccess.cs:19:12:19:13 | exit M6 (normal) | ConditionalAccess.cs:19:12:19:13 | enter M6 | -| ConditionalAccess.cs:19:12:19:13 | exit M6 (normal) | ConditionalAccess.cs:19:12:19:13 | exit M6 (normal) | -| ConditionalAccess.cs:19:12:19:13 | exit M6 (normal) | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | -| ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | -| ConditionalAccess.cs:21:10:21:11 | enter M7 | ConditionalAccess.cs:21:10:21:11 | enter M7 | -| ConditionalAccess.cs:23:13:23:38 | Nullable j = ... | ConditionalAccess.cs:21:10:21:11 | enter M7 | -| ConditionalAccess.cs:23:13:23:38 | Nullable j = ... | ConditionalAccess.cs:23:13:23:38 | Nullable j = ... | -| ConditionalAccess.cs:24:17:24:37 | call to method ToString | ConditionalAccess.cs:21:10:21:11 | enter M7 | -| ConditionalAccess.cs:24:17:24:37 | call to method ToString | ConditionalAccess.cs:23:13:23:38 | Nullable j = ... | -| ConditionalAccess.cs:24:17:24:37 | call to method ToString | ConditionalAccess.cs:24:17:24:37 | call to method ToString | -| ConditionalAccess.cs:25:31:25:31 | access to local variable s | ConditionalAccess.cs:21:10:21:11 | enter M7 | -| ConditionalAccess.cs:25:31:25:31 | access to local variable s | ConditionalAccess.cs:23:13:23:38 | Nullable j = ... | -| ConditionalAccess.cs:25:31:25:31 | access to local variable s | ConditionalAccess.cs:24:17:24:37 | call to method ToString | -| ConditionalAccess.cs:25:31:25:31 | access to local variable s | ConditionalAccess.cs:25:31:25:31 | access to local variable s | -| ConditionalAccess.cs:30:10:30:12 | enter Out | ConditionalAccess.cs:30:10:30:12 | enter Out | -| ConditionalAccess.cs:32:10:32:11 | enter M8 | ConditionalAccess.cs:32:10:32:11 | enter M8 | -| ConditionalAccess.cs:32:10:32:11 | exit M8 (normal) | ConditionalAccess.cs:32:10:32:11 | enter M8 | -| ConditionalAccess.cs:32:10:32:11 | exit M8 (normal) | ConditionalAccess.cs:32:10:32:11 | exit M8 (normal) | -| ConditionalAccess.cs:32:10:32:11 | exit M8 (normal) | ConditionalAccess.cs:35:9:35:24 | call to method Out | -| ConditionalAccess.cs:35:9:35:24 | call to method Out | ConditionalAccess.cs:35:9:35:24 | call to method Out | -| ConditionalAccess.cs:42:9:42:11 | enter get_Item | ConditionalAccess.cs:42:9:42:11 | enter get_Item | -| ConditionalAccess.cs:43:9:43:11 | enter set_Item | ConditionalAccess.cs:43:9:43:11 | enter set_Item | -| ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:46:10:46:11 | enter M9 | -| ConditionalAccess.cs:48:24:48:25 | 42 | ConditionalAccess.cs:48:24:48:25 | 42 | -| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:46:10:46:11 | enter M9 | -| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:48:24:48:25 | 42 | -| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:49:9:49:33 | ...; | -| ConditionalAccess.cs:49:26:49:32 | "Hello" | ConditionalAccess.cs:49:26:49:32 | "Hello" | -| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:46:10:46:11 | enter M9 | -| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:48:24:48:25 | 42 | -| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:49:9:49:33 | ...; | -| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:49:26:49:32 | "Hello" | -| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:50:9:50:24 | ...; | -| ConditionalAccess.cs:50:13:50:13 | 0 | ConditionalAccess.cs:50:13:50:13 | 0 | -| ConditionalAccess.cs:51:9:51:16 | access to property Prop | ConditionalAccess.cs:51:9:51:16 | access to property Prop | -| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:46:10:46:11 | enter M9 | -| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:48:24:48:25 | 42 | -| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:49:9:49:33 | ...; | -| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:49:26:49:32 | "Hello" | -| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:50:9:50:24 | ...; | -| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:50:13:50:13 | 0 | -| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:51:9:51:32 | ...; | -| ConditionalAccess.cs:51:30:51:31 | 84 | ConditionalAccess.cs:51:30:51:31 | 84 | -| ConditionalAccess.cs:52:9:52:16 | access to property Prop | ConditionalAccess.cs:52:9:52:16 | access to property Prop | -| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:46:10:46:11 | enter M9 | -| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:48:24:48:25 | 42 | -| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:49:9:49:33 | ...; | -| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:49:26:49:32 | "Hello" | -| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:50:9:50:24 | ...; | -| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:50:13:50:13 | 0 | -| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:51:9:51:16 | access to property Prop | -| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:51:9:51:32 | ...; | -| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:51:30:51:31 | 84 | -| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:52:9:52:39 | ...; | -| ConditionalAccess.cs:52:32:52:38 | "World" | ConditionalAccess.cs:52:32:52:38 | "World" | -| ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:53:9:53:20 | access to field IntField | -| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:46:10:46:11 | enter M9 | -| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:48:24:48:25 | 42 | -| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:49:9:49:33 | ...; | -| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:49:26:49:32 | "Hello" | -| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:50:9:50:24 | ...; | -| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:50:13:50:13 | 0 | -| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:51:9:51:16 | access to property Prop | -| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:51:9:51:32 | ...; | -| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:51:30:51:31 | 84 | -| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:52:9:52:16 | access to property Prop | -| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:52:9:52:39 | ...; | -| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:52:32:52:38 | "World" | -| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:53:9:53:26 | ...; | -| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:46:10:46:11 | enter M9 | -| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:48:24:48:25 | 42 | -| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:49:9:49:33 | ...; | -| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:49:26:49:32 | "Hello" | -| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:50:9:50:24 | ...; | -| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:50:13:50:13 | 0 | -| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:51:9:51:16 | access to property Prop | -| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:51:9:51:32 | ...; | -| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:51:30:51:31 | 84 | -| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:52:9:52:16 | access to property Prop | -| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:52:9:52:39 | ...; | -| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:52:32:52:38 | "World" | -| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:53:9:53:20 | access to field IntField | -| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:53:9:53:26 | ...; | -| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:53:25:53:25 | 1 | -| ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | -| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:46:10:46:11 | enter M9 | -| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:48:24:48:25 | 42 | -| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:49:9:49:33 | ...; | -| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:49:26:49:32 | "Hello" | -| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:50:9:50:24 | ...; | -| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:50:13:50:13 | 0 | -| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:51:9:51:16 | access to property Prop | -| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:51:9:51:32 | ...; | -| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:51:30:51:31 | 84 | -| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:52:9:52:16 | access to property Prop | -| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:52:9:52:39 | ...; | -| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:52:32:52:38 | "World" | -| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:53:9:53:20 | access to field IntField | -| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:53:9:53:26 | ...; | -| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:53:25:53:25 | 1 | -| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | -| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:54:27:54:29 | "!" | -| ConditionalAccess.cs:60:26:60:38 | enter CommaJoinWith | ConditionalAccess.cs:60:26:60:38 | enter CommaJoinWith | -| Conditions.cs:1:7:1:16 | enter Conditions | Conditions.cs:1:7:1:16 | enter Conditions | -| Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:3:10:3:19 | enter IncrOrDecr | -| Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | Conditions.cs:3:10:3:19 | enter IncrOrDecr | -| Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | -| Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | Conditions.cs:6:13:6:16 | ...; | -| Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | Conditions.cs:7:9:8:16 | if (...) ... | -| Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | Conditions.cs:7:13:7:16 | [false] !... | -| Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | Conditions.cs:7:13:7:16 | [true] !... | -| Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | Conditions.cs:8:13:8:16 | ...; | -| Conditions.cs:6:13:6:16 | ...; | Conditions.cs:6:13:6:16 | ...; | -| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:3:10:3:19 | enter IncrOrDecr | -| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:6:13:6:16 | ...; | -| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:7:9:8:16 | if (...) ... | -| Conditions.cs:7:13:7:16 | [false] !... | Conditions.cs:7:13:7:16 | [false] !... | -| Conditions.cs:7:13:7:16 | [true] !... | Conditions.cs:7:13:7:16 | [true] !... | -| Conditions.cs:8:13:8:16 | ...; | Conditions.cs:7:13:7:16 | [true] !... | -| Conditions.cs:8:13:8:16 | ...; | Conditions.cs:8:13:8:16 | ...; | -| Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:11:9:11:10 | enter M1 | -| Conditions.cs:15:13:15:16 | ...; | Conditions.cs:15:13:15:16 | ...; | -| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:11:9:11:10 | enter M1 | -| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:15:13:15:16 | ...; | -| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:16:9:18:20 | if (...) ... | -| Conditions.cs:17:13:18:20 | if (...) ... | Conditions.cs:17:13:18:20 | if (...) ... | -| Conditions.cs:17:17:17:18 | [false] !... | Conditions.cs:17:17:17:18 | [false] !... | -| Conditions.cs:17:17:17:18 | [true] !... | Conditions.cs:17:17:17:18 | [true] !... | -| Conditions.cs:18:17:18:20 | ...; | Conditions.cs:17:17:17:18 | [true] !... | -| Conditions.cs:18:17:18:20 | ...; | Conditions.cs:18:17:18:20 | ...; | -| Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:11:9:11:10 | enter M1 | -| Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:15:13:15:16 | ...; | -| Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:16:9:18:20 | if (...) ... | -| Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:17:13:18:20 | if (...) ... | -| Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:17:17:17:18 | [false] !... | -| Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:17:17:17:18 | [true] !... | -| Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:18:17:18:20 | ...; | -| Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:19:16:19:16 | access to local variable x | -| Conditions.cs:22:9:22:10 | enter M2 | Conditions.cs:22:9:22:10 | enter M2 | -| Conditions.cs:26:13:27:20 | if (...) ... | Conditions.cs:26:13:27:20 | if (...) ... | -| Conditions.cs:27:17:27:20 | ...; | Conditions.cs:27:17:27:20 | ...; | -| Conditions.cs:28:9:29:16 | if (...) ... | Conditions.cs:22:9:22:10 | enter M2 | -| Conditions.cs:28:9:29:16 | if (...) ... | Conditions.cs:26:13:27:20 | if (...) ... | -| Conditions.cs:28:9:29:16 | if (...) ... | Conditions.cs:27:17:27:20 | ...; | -| Conditions.cs:28:9:29:16 | if (...) ... | Conditions.cs:28:9:29:16 | if (...) ... | -| Conditions.cs:29:13:29:16 | ...; | Conditions.cs:29:13:29:16 | ...; | -| Conditions.cs:30:16:30:16 | access to local variable x | Conditions.cs:22:9:22:10 | enter M2 | -| Conditions.cs:30:16:30:16 | access to local variable x | Conditions.cs:26:13:27:20 | if (...) ... | -| Conditions.cs:30:16:30:16 | access to local variable x | Conditions.cs:27:17:27:20 | ...; | -| Conditions.cs:30:16:30:16 | access to local variable x | Conditions.cs:28:9:29:16 | if (...) ... | -| Conditions.cs:30:16:30:16 | access to local variable x | Conditions.cs:29:13:29:16 | ...; | -| Conditions.cs:30:16:30:16 | access to local variable x | Conditions.cs:30:16:30:16 | access to local variable x | -| Conditions.cs:33:9:33:10 | enter M3 | Conditions.cs:33:9:33:10 | enter M3 | -| Conditions.cs:38:13:38:20 | ...; | Conditions.cs:38:13:38:20 | ...; | -| Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:33:9:33:10 | enter M3 | -| Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:38:13:38:20 | ...; | -| Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:39:9:40:16 | if (...) ... | -| Conditions.cs:40:13:40:16 | ...; | Conditions.cs:40:13:40:16 | ...; | -| Conditions.cs:41:9:42:16 | if (...) ... | Conditions.cs:33:9:33:10 | enter M3 | -| Conditions.cs:41:9:42:16 | if (...) ... | Conditions.cs:38:13:38:20 | ...; | -| Conditions.cs:41:9:42:16 | if (...) ... | Conditions.cs:39:9:40:16 | if (...) ... | -| Conditions.cs:41:9:42:16 | if (...) ... | Conditions.cs:40:13:40:16 | ...; | -| Conditions.cs:41:9:42:16 | if (...) ... | Conditions.cs:41:9:42:16 | if (...) ... | -| Conditions.cs:42:13:42:16 | ...; | Conditions.cs:42:13:42:16 | ...; | -| Conditions.cs:43:16:43:16 | access to local variable x | Conditions.cs:33:9:33:10 | enter M3 | -| Conditions.cs:43:16:43:16 | access to local variable x | Conditions.cs:38:13:38:20 | ...; | -| Conditions.cs:43:16:43:16 | access to local variable x | Conditions.cs:39:9:40:16 | if (...) ... | -| Conditions.cs:43:16:43:16 | access to local variable x | Conditions.cs:40:13:40:16 | ...; | -| Conditions.cs:43:16:43:16 | access to local variable x | Conditions.cs:41:9:42:16 | if (...) ... | -| Conditions.cs:43:16:43:16 | access to local variable x | Conditions.cs:42:13:42:16 | ...; | -| Conditions.cs:43:16:43:16 | access to local variable x | Conditions.cs:43:16:43:16 | access to local variable x | -| Conditions.cs:46:9:46:10 | enter M4 | Conditions.cs:46:9:46:10 | enter M4 | -| Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:46:9:46:10 | enter M4 | -| Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:49:16:49:16 | access to parameter x | -| Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:50:9:53:9 | {...} | -| Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:52:17:52:20 | ...; | -| Conditions.cs:50:9:53:9 | {...} | Conditions.cs:50:9:53:9 | {...} | -| Conditions.cs:52:17:52:20 | ...; | Conditions.cs:52:17:52:20 | ...; | -| Conditions.cs:54:16:54:16 | access to local variable y | Conditions.cs:46:9:46:10 | enter M4 | -| Conditions.cs:54:16:54:16 | access to local variable y | Conditions.cs:49:16:49:16 | access to parameter x | -| Conditions.cs:54:16:54:16 | access to local variable y | Conditions.cs:50:9:53:9 | {...} | -| Conditions.cs:54:16:54:16 | access to local variable y | Conditions.cs:52:17:52:20 | ...; | -| Conditions.cs:54:16:54:16 | access to local variable y | Conditions.cs:54:16:54:16 | access to local variable y | -| Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:57:9:57:10 | enter M5 | -| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:57:9:57:10 | enter M5 | -| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:60:16:60:16 | access to parameter x | -| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:61:9:64:9 | {...} | -| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:63:17:63:20 | ...; | -| Conditions.cs:61:9:64:9 | {...} | Conditions.cs:61:9:64:9 | {...} | -| Conditions.cs:63:17:63:20 | ...; | Conditions.cs:63:17:63:20 | ...; | -| Conditions.cs:65:9:66:16 | if (...) ... | Conditions.cs:57:9:57:10 | enter M5 | -| Conditions.cs:65:9:66:16 | if (...) ... | Conditions.cs:60:16:60:16 | access to parameter x | -| Conditions.cs:65:9:66:16 | if (...) ... | Conditions.cs:61:9:64:9 | {...} | -| Conditions.cs:65:9:66:16 | if (...) ... | Conditions.cs:63:17:63:20 | ...; | -| Conditions.cs:65:9:66:16 | if (...) ... | Conditions.cs:65:9:66:16 | if (...) ... | -| Conditions.cs:66:13:66:16 | ...; | Conditions.cs:66:13:66:16 | ...; | -| Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:57:9:57:10 | enter M5 | -| Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:60:16:60:16 | access to parameter x | -| Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:61:9:64:9 | {...} | -| Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:63:17:63:20 | ...; | -| Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:65:9:66:16 | if (...) ... | -| Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:66:13:66:16 | ...; | -| Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:67:16:67:16 | access to local variable y | -| Conditions.cs:70:9:70:10 | enter M6 | Conditions.cs:70:9:70:10 | enter M6 | -| Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:70:9:70:10 | enter M6 | -| Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | -| Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:74:22:74:22 | String _ | -| Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:77:17:77:20 | ...; | -| Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:78:13:79:26 | if (...) ... | -| Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:79:17:79:26 | ...; | +| ConditionalAccess.cs:1:7:1:23 | Entry | ConditionalAccess.cs:1:7:1:23 | Entry | +| ConditionalAccess.cs:3:12:3:13 | Entry | ConditionalAccess.cs:3:12:3:13 | Entry | +| ConditionalAccess.cs:3:26:3:26 | After access to parameter i [non-null] | ConditionalAccess.cs:3:26:3:26 | After access to parameter i [non-null] | +| ConditionalAccess.cs:3:26:3:26 | After access to parameter i [null] | ConditionalAccess.cs:3:26:3:26 | After access to parameter i [null] | +| ConditionalAccess.cs:3:26:3:38 | After call to method ToString [non-null] | ConditionalAccess.cs:3:26:3:38 | After call to method ToString [non-null] | +| ConditionalAccess.cs:3:26:3:38 | After call to method ToString [null] | ConditionalAccess.cs:3:26:3:26 | After access to parameter i [null] | +| ConditionalAccess.cs:3:26:3:38 | After call to method ToString [null] | ConditionalAccess.cs:3:26:3:38 | After call to method ToString [null] | +| ConditionalAccess.cs:3:26:3:49 | After call to method ToLower | ConditionalAccess.cs:3:12:3:13 | Entry | +| ConditionalAccess.cs:3:26:3:49 | After call to method ToLower | ConditionalAccess.cs:3:26:3:26 | After access to parameter i [non-null] | +| ConditionalAccess.cs:3:26:3:49 | After call to method ToLower | ConditionalAccess.cs:3:26:3:26 | After access to parameter i [null] | +| ConditionalAccess.cs:3:26:3:49 | After call to method ToLower | ConditionalAccess.cs:3:26:3:38 | After call to method ToString [non-null] | +| ConditionalAccess.cs:3:26:3:49 | After call to method ToLower | ConditionalAccess.cs:3:26:3:38 | After call to method ToString [null] | +| ConditionalAccess.cs:3:26:3:49 | After call to method ToLower | ConditionalAccess.cs:3:26:3:49 | After call to method ToLower | +| ConditionalAccess.cs:5:10:5:11 | Entry | ConditionalAccess.cs:5:10:5:11 | Entry | +| ConditionalAccess.cs:5:26:5:26 | After access to parameter s [non-null] | ConditionalAccess.cs:5:26:5:26 | After access to parameter s [non-null] | +| ConditionalAccess.cs:5:26:5:26 | After access to parameter s [null] | ConditionalAccess.cs:5:26:5:26 | After access to parameter s [null] | +| ConditionalAccess.cs:5:26:5:34 | After access to property Length | ConditionalAccess.cs:5:10:5:11 | Entry | +| ConditionalAccess.cs:5:26:5:34 | After access to property Length | ConditionalAccess.cs:5:26:5:26 | After access to parameter s [non-null] | +| ConditionalAccess.cs:5:26:5:34 | After access to property Length | ConditionalAccess.cs:5:26:5:26 | After access to parameter s [null] | +| ConditionalAccess.cs:5:26:5:34 | After access to property Length | ConditionalAccess.cs:5:26:5:34 | After access to property Length | +| ConditionalAccess.cs:7:10:7:11 | Entry | ConditionalAccess.cs:7:10:7:11 | Entry | +| ConditionalAccess.cs:7:38:7:55 | After access to property Length | ConditionalAccess.cs:7:10:7:11 | Entry | +| ConditionalAccess.cs:7:38:7:55 | After access to property Length | ConditionalAccess.cs:7:38:7:55 | After access to property Length | +| ConditionalAccess.cs:7:38:7:55 | After access to property Length | ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [non-null] | +| ConditionalAccess.cs:7:38:7:55 | After access to property Length | ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [null] | +| ConditionalAccess.cs:7:38:7:55 | After access to property Length | ConditionalAccess.cs:7:39:7:46 | After ... ?? ... [non-null] | +| ConditionalAccess.cs:7:38:7:55 | After access to property Length | ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [non-null] | +| ConditionalAccess.cs:7:38:7:55 | After access to property Length | ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [null] | +| ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [non-null] | ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [non-null] | +| ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [null] | ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [null] | +| ConditionalAccess.cs:7:39:7:46 | After ... ?? ... [non-null] | ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [non-null] | +| ConditionalAccess.cs:7:39:7:46 | After ... ?? ... [non-null] | ConditionalAccess.cs:7:39:7:46 | After ... ?? ... [non-null] | +| ConditionalAccess.cs:7:39:7:46 | After ... ?? ... [non-null] | ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [non-null] | +| ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [non-null] | ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [non-null] | +| ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [null] | ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [null] | +| ConditionalAccess.cs:9:9:9:10 | Entry | ConditionalAccess.cs:9:9:9:10 | Entry | +| ConditionalAccess.cs:9:25:9:25 | After access to parameter s [non-null] | ConditionalAccess.cs:9:25:9:25 | After access to parameter s [non-null] | +| ConditionalAccess.cs:9:25:9:25 | After access to parameter s [null] | ConditionalAccess.cs:9:25:9:25 | After access to parameter s [null] | +| ConditionalAccess.cs:9:25:9:33 | After access to property Length [non-null] | ConditionalAccess.cs:9:25:9:33 | After access to property Length [non-null] | +| ConditionalAccess.cs:9:25:9:33 | After access to property Length [null] | ConditionalAccess.cs:9:25:9:25 | After access to parameter s [null] | +| ConditionalAccess.cs:9:25:9:33 | After access to property Length [null] | ConditionalAccess.cs:9:25:9:33 | After access to property Length [null] | +| ConditionalAccess.cs:9:25:9:38 | After ... ?? ... | ConditionalAccess.cs:9:9:9:10 | Entry | +| ConditionalAccess.cs:9:25:9:38 | After ... ?? ... | ConditionalAccess.cs:9:25:9:25 | After access to parameter s [non-null] | +| ConditionalAccess.cs:9:25:9:38 | After ... ?? ... | ConditionalAccess.cs:9:25:9:25 | After access to parameter s [null] | +| ConditionalAccess.cs:9:25:9:38 | After ... ?? ... | ConditionalAccess.cs:9:25:9:33 | After access to property Length [non-null] | +| ConditionalAccess.cs:9:25:9:38 | After ... ?? ... | ConditionalAccess.cs:9:25:9:33 | After access to property Length [null] | +| ConditionalAccess.cs:9:25:9:38 | After ... ?? ... | ConditionalAccess.cs:9:25:9:38 | After ... ?? ... | +| ConditionalAccess.cs:11:9:11:10 | Entry | ConditionalAccess.cs:11:9:11:10 | Entry | +| ConditionalAccess.cs:11:9:11:10 | Normal Exit | ConditionalAccess.cs:11:9:11:10 | Entry | +| ConditionalAccess.cs:11:9:11:10 | Normal Exit | ConditionalAccess.cs:11:9:11:10 | Normal Exit | +| ConditionalAccess.cs:11:9:11:10 | Normal Exit | ConditionalAccess.cs:13:13:13:13 | After access to parameter s [non-null] | +| ConditionalAccess.cs:11:9:11:10 | Normal Exit | ConditionalAccess.cs:13:13:13:13 | After access to parameter s [null] | +| ConditionalAccess.cs:11:9:11:10 | Normal Exit | ConditionalAccess.cs:13:13:13:21 | After access to property Length | +| ConditionalAccess.cs:11:9:11:10 | Normal Exit | ConditionalAccess.cs:13:13:13:25 | After ... > ... [false] | +| ConditionalAccess.cs:11:9:11:10 | Normal Exit | ConditionalAccess.cs:13:13:13:25 | After ... > ... [true] | +| ConditionalAccess.cs:13:13:13:13 | After access to parameter s [non-null] | ConditionalAccess.cs:13:13:13:13 | After access to parameter s [non-null] | +| ConditionalAccess.cs:13:13:13:13 | After access to parameter s [null] | ConditionalAccess.cs:13:13:13:13 | After access to parameter s [null] | +| ConditionalAccess.cs:13:13:13:21 | After access to property Length | ConditionalAccess.cs:11:9:11:10 | Entry | +| ConditionalAccess.cs:13:13:13:21 | After access to property Length | ConditionalAccess.cs:13:13:13:13 | After access to parameter s [non-null] | +| ConditionalAccess.cs:13:13:13:21 | After access to property Length | ConditionalAccess.cs:13:13:13:13 | After access to parameter s [null] | +| ConditionalAccess.cs:13:13:13:21 | After access to property Length | ConditionalAccess.cs:13:13:13:21 | After access to property Length | +| ConditionalAccess.cs:13:13:13:25 | After ... > ... [false] | ConditionalAccess.cs:13:13:13:25 | After ... > ... [false] | +| ConditionalAccess.cs:13:13:13:25 | After ... > ... [true] | ConditionalAccess.cs:13:13:13:25 | After ... > ... [true] | +| ConditionalAccess.cs:19:12:19:13 | Entry | ConditionalAccess.cs:19:12:19:13 | Entry | +| ConditionalAccess.cs:19:40:19:41 | After access to parameter s1 [non-null] | ConditionalAccess.cs:19:40:19:41 | After access to parameter s1 [non-null] | +| ConditionalAccess.cs:19:40:19:41 | After access to parameter s1 [null] | ConditionalAccess.cs:19:40:19:41 | After access to parameter s1 [null] | +| ConditionalAccess.cs:19:40:19:60 | After call to method CommaJoinWith | ConditionalAccess.cs:19:12:19:13 | Entry | +| ConditionalAccess.cs:19:40:19:60 | After call to method CommaJoinWith | ConditionalAccess.cs:19:40:19:41 | After access to parameter s1 [non-null] | +| ConditionalAccess.cs:19:40:19:60 | After call to method CommaJoinWith | ConditionalAccess.cs:19:40:19:41 | After access to parameter s1 [null] | +| ConditionalAccess.cs:19:40:19:60 | After call to method CommaJoinWith | ConditionalAccess.cs:19:40:19:60 | After call to method CommaJoinWith | +| ConditionalAccess.cs:21:10:21:11 | Entry | ConditionalAccess.cs:21:10:21:11 | Entry | +| ConditionalAccess.cs:23:17:23:38 | After access to property Length | ConditionalAccess.cs:21:10:21:11 | Entry | +| ConditionalAccess.cs:23:17:23:38 | After access to property Length | ConditionalAccess.cs:23:17:23:38 | After access to property Length | +| ConditionalAccess.cs:23:17:23:38 | After access to property Length | ConditionalAccess.cs:23:18:23:29 | After (...) ... [non-null] | +| ConditionalAccess.cs:23:17:23:38 | After access to property Length | ConditionalAccess.cs:23:18:23:29 | After (...) ... [null] | +| ConditionalAccess.cs:23:18:23:29 | After (...) ... [non-null] | ConditionalAccess.cs:23:18:23:29 | After (...) ... [non-null] | +| ConditionalAccess.cs:23:18:23:29 | After (...) ... [null] | ConditionalAccess.cs:23:18:23:29 | After (...) ... [null] | +| ConditionalAccess.cs:24:17:24:37 | After call to method ToString | ConditionalAccess.cs:21:10:21:11 | Entry | +| ConditionalAccess.cs:24:17:24:37 | After call to method ToString | ConditionalAccess.cs:23:17:23:38 | After access to property Length | +| ConditionalAccess.cs:24:17:24:37 | After call to method ToString | ConditionalAccess.cs:23:18:23:29 | After (...) ... [non-null] | +| ConditionalAccess.cs:24:17:24:37 | After call to method ToString | ConditionalAccess.cs:23:18:23:29 | After (...) ... [null] | +| ConditionalAccess.cs:24:17:24:37 | After call to method ToString | ConditionalAccess.cs:24:17:24:37 | After call to method ToString | +| ConditionalAccess.cs:24:17:24:37 | After call to method ToString | ConditionalAccess.cs:24:18:24:24 | After (...) ... [non-null] | +| ConditionalAccess.cs:24:17:24:37 | After call to method ToString | ConditionalAccess.cs:24:18:24:24 | After (...) ... [null] | +| ConditionalAccess.cs:24:18:24:24 | After (...) ... [non-null] | ConditionalAccess.cs:24:18:24:24 | After (...) ... [non-null] | +| ConditionalAccess.cs:24:18:24:24 | After (...) ... [null] | ConditionalAccess.cs:24:18:24:24 | After (...) ... [null] | +| ConditionalAccess.cs:25:13:25:14 | After "" [non-null] | ConditionalAccess.cs:25:13:25:14 | After "" [non-null] | +| ConditionalAccess.cs:25:13:25:14 | After "" [null] | ConditionalAccess.cs:25:13:25:14 | After "" [null] | +| ConditionalAccess.cs:25:13:25:32 | After call to method CommaJoinWith | ConditionalAccess.cs:21:10:21:11 | Entry | +| ConditionalAccess.cs:25:13:25:32 | After call to method CommaJoinWith | ConditionalAccess.cs:23:17:23:38 | After access to property Length | +| ConditionalAccess.cs:25:13:25:32 | After call to method CommaJoinWith | ConditionalAccess.cs:23:18:23:29 | After (...) ... [non-null] | +| ConditionalAccess.cs:25:13:25:32 | After call to method CommaJoinWith | ConditionalAccess.cs:23:18:23:29 | After (...) ... [null] | +| ConditionalAccess.cs:25:13:25:32 | After call to method CommaJoinWith | ConditionalAccess.cs:24:17:24:37 | After call to method ToString | +| ConditionalAccess.cs:25:13:25:32 | After call to method CommaJoinWith | ConditionalAccess.cs:24:18:24:24 | After (...) ... [non-null] | +| ConditionalAccess.cs:25:13:25:32 | After call to method CommaJoinWith | ConditionalAccess.cs:24:18:24:24 | After (...) ... [null] | +| ConditionalAccess.cs:25:13:25:32 | After call to method CommaJoinWith | ConditionalAccess.cs:25:13:25:14 | After "" [non-null] | +| ConditionalAccess.cs:25:13:25:32 | After call to method CommaJoinWith | ConditionalAccess.cs:25:13:25:14 | After "" [null] | +| ConditionalAccess.cs:25:13:25:32 | After call to method CommaJoinWith | ConditionalAccess.cs:25:13:25:32 | After call to method CommaJoinWith | +| ConditionalAccess.cs:30:10:30:12 | Entry | ConditionalAccess.cs:30:10:30:12 | Entry | +| ConditionalAccess.cs:32:10:32:11 | Entry | ConditionalAccess.cs:32:10:32:11 | Entry | +| ConditionalAccess.cs:35:9:35:12 | After access to property Prop [non-null] | ConditionalAccess.cs:35:9:35:12 | After access to property Prop [non-null] | +| ConditionalAccess.cs:35:9:35:12 | After access to property Prop [null] | ConditionalAccess.cs:35:9:35:12 | After access to property Prop [null] | +| ConditionalAccess.cs:35:9:35:24 | After call to method Out | ConditionalAccess.cs:32:10:32:11 | Entry | +| ConditionalAccess.cs:35:9:35:24 | After call to method Out | ConditionalAccess.cs:35:9:35:12 | After access to property Prop [non-null] | +| ConditionalAccess.cs:35:9:35:24 | After call to method Out | ConditionalAccess.cs:35:9:35:12 | After access to property Prop [null] | +| ConditionalAccess.cs:35:9:35:24 | After call to method Out | ConditionalAccess.cs:35:9:35:24 | After call to method Out | +| ConditionalAccess.cs:42:9:42:11 | Entry | ConditionalAccess.cs:42:9:42:11 | Entry | +| ConditionalAccess.cs:43:9:43:11 | Entry | ConditionalAccess.cs:43:9:43:11 | Entry | +| ConditionalAccess.cs:46:10:46:11 | Entry | ConditionalAccess.cs:46:10:46:11 | Entry | +| ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [null] | ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:48:12:48:25 | After ... = ... | ConditionalAccess.cs:46:10:46:11 | Entry | +| ConditionalAccess.cs:48:12:48:25 | After ... = ... | ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:48:12:48:25 | After ... = ... | ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:48:12:48:25 | After ... = ... | ConditionalAccess.cs:48:12:48:25 | After ... = ... | +| ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [null] | ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:49:12:49:32 | After ... = ... | ConditionalAccess.cs:46:10:46:11 | Entry | +| ConditionalAccess.cs:49:12:49:32 | After ... = ... | ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:49:12:49:32 | After ... = ... | ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:49:12:49:32 | After ... = ... | ConditionalAccess.cs:48:12:48:25 | After ... = ... | +| ConditionalAccess.cs:49:12:49:32 | After ... = ... | ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:49:12:49:32 | After ... = ... | ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:49:12:49:32 | After ... = ... | ConditionalAccess.cs:49:12:49:32 | After ... = ... | +| ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [null] | ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:50:12:50:23 | After ... = ... | ConditionalAccess.cs:46:10:46:11 | Entry | +| ConditionalAccess.cs:50:12:50:23 | After ... = ... | ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:50:12:50:23 | After ... = ... | ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:50:12:50:23 | After ... = ... | ConditionalAccess.cs:48:12:48:25 | After ... = ... | +| ConditionalAccess.cs:50:12:50:23 | After ... = ... | ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:50:12:50:23 | After ... = ... | ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:50:12:50:23 | After ... = ... | ConditionalAccess.cs:49:12:49:32 | After ... = ... | +| ConditionalAccess.cs:50:12:50:23 | After ... = ... | ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:50:12:50:23 | After ... = ... | ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:50:12:50:23 | After ... = ... | ConditionalAccess.cs:50:12:50:23 | After ... = ... | +| ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [null] | ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:51:9:51:16 | After access to property Prop [non-null] | ConditionalAccess.cs:51:9:51:16 | After access to property Prop [non-null] | +| ConditionalAccess.cs:51:9:51:16 | After access to property Prop [null] | ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:51:9:51:16 | After access to property Prop [null] | ConditionalAccess.cs:51:9:51:16 | After access to property Prop [null] | +| ConditionalAccess.cs:51:18:51:31 | After ... = ... | ConditionalAccess.cs:46:10:46:11 | Entry | +| ConditionalAccess.cs:51:18:51:31 | After ... = ... | ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:51:18:51:31 | After ... = ... | ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:51:18:51:31 | After ... = ... | ConditionalAccess.cs:48:12:48:25 | After ... = ... | +| ConditionalAccess.cs:51:18:51:31 | After ... = ... | ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:51:18:51:31 | After ... = ... | ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:51:18:51:31 | After ... = ... | ConditionalAccess.cs:49:12:49:32 | After ... = ... | +| ConditionalAccess.cs:51:18:51:31 | After ... = ... | ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:51:18:51:31 | After ... = ... | ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:51:18:51:31 | After ... = ... | ConditionalAccess.cs:50:12:50:23 | After ... = ... | +| ConditionalAccess.cs:51:18:51:31 | After ... = ... | ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:51:18:51:31 | After ... = ... | ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:51:18:51:31 | After ... = ... | ConditionalAccess.cs:51:9:51:16 | After access to property Prop [non-null] | +| ConditionalAccess.cs:51:18:51:31 | After ... = ... | ConditionalAccess.cs:51:9:51:16 | After access to property Prop [null] | +| ConditionalAccess.cs:51:18:51:31 | After ... = ... | ConditionalAccess.cs:51:18:51:31 | After ... = ... | +| ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [null] | ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:52:9:52:16 | After access to property Prop [non-null] | ConditionalAccess.cs:52:9:52:16 | After access to property Prop [non-null] | +| ConditionalAccess.cs:52:9:52:16 | After access to property Prop [null] | ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:52:9:52:16 | After access to property Prop [null] | ConditionalAccess.cs:52:9:52:16 | After access to property Prop [null] | +| ConditionalAccess.cs:52:18:52:38 | After ... = ... | ConditionalAccess.cs:46:10:46:11 | Entry | +| ConditionalAccess.cs:52:18:52:38 | After ... = ... | ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:52:18:52:38 | After ... = ... | ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:52:18:52:38 | After ... = ... | ConditionalAccess.cs:48:12:48:25 | After ... = ... | +| ConditionalAccess.cs:52:18:52:38 | After ... = ... | ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:52:18:52:38 | After ... = ... | ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:52:18:52:38 | After ... = ... | ConditionalAccess.cs:49:12:49:32 | After ... = ... | +| ConditionalAccess.cs:52:18:52:38 | After ... = ... | ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:52:18:52:38 | After ... = ... | ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:52:18:52:38 | After ... = ... | ConditionalAccess.cs:50:12:50:23 | After ... = ... | +| ConditionalAccess.cs:52:18:52:38 | After ... = ... | ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:52:18:52:38 | After ... = ... | ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:52:18:52:38 | After ... = ... | ConditionalAccess.cs:51:9:51:16 | After access to property Prop [non-null] | +| ConditionalAccess.cs:52:18:52:38 | After ... = ... | ConditionalAccess.cs:51:9:51:16 | After access to property Prop [null] | +| ConditionalAccess.cs:52:18:52:38 | After ... = ... | ConditionalAccess.cs:51:18:51:31 | After ... = ... | +| ConditionalAccess.cs:52:18:52:38 | After ... = ... | ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:52:18:52:38 | After ... = ... | ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:52:18:52:38 | After ... = ... | ConditionalAccess.cs:52:9:52:16 | After access to property Prop [non-null] | +| ConditionalAccess.cs:52:18:52:38 | After ... = ... | ConditionalAccess.cs:52:9:52:16 | After access to property Prop [null] | +| ConditionalAccess.cs:52:18:52:38 | After ... = ... | ConditionalAccess.cs:52:18:52:38 | After ... = ... | +| ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [null] | ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:53:12:53:25 | After ... -= ... | ConditionalAccess.cs:46:10:46:11 | Entry | +| ConditionalAccess.cs:53:12:53:25 | After ... -= ... | ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:53:12:53:25 | After ... -= ... | ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:53:12:53:25 | After ... -= ... | ConditionalAccess.cs:48:12:48:25 | After ... = ... | +| ConditionalAccess.cs:53:12:53:25 | After ... -= ... | ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:53:12:53:25 | After ... -= ... | ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:53:12:53:25 | After ... -= ... | ConditionalAccess.cs:49:12:49:32 | After ... = ... | +| ConditionalAccess.cs:53:12:53:25 | After ... -= ... | ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:53:12:53:25 | After ... -= ... | ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:53:12:53:25 | After ... -= ... | ConditionalAccess.cs:50:12:50:23 | After ... = ... | +| ConditionalAccess.cs:53:12:53:25 | After ... -= ... | ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:53:12:53:25 | After ... -= ... | ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:53:12:53:25 | After ... -= ... | ConditionalAccess.cs:51:9:51:16 | After access to property Prop [non-null] | +| ConditionalAccess.cs:53:12:53:25 | After ... -= ... | ConditionalAccess.cs:51:9:51:16 | After access to property Prop [null] | +| ConditionalAccess.cs:53:12:53:25 | After ... -= ... | ConditionalAccess.cs:51:18:51:31 | After ... = ... | +| ConditionalAccess.cs:53:12:53:25 | After ... -= ... | ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:53:12:53:25 | After ... -= ... | ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:53:12:53:25 | After ... -= ... | ConditionalAccess.cs:52:9:52:16 | After access to property Prop [non-null] | +| ConditionalAccess.cs:53:12:53:25 | After ... -= ... | ConditionalAccess.cs:52:9:52:16 | After access to property Prop [null] | +| ConditionalAccess.cs:53:12:53:25 | After ... -= ... | ConditionalAccess.cs:52:18:52:38 | After ... = ... | +| ConditionalAccess.cs:53:12:53:25 | After ... -= ... | ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:53:12:53:25 | After ... -= ... | ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:53:12:53:25 | After ... -= ... | ConditionalAccess.cs:53:12:53:25 | After ... -= ... | +| ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [null] | ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:54:12:54:29 | After ... += ... | ConditionalAccess.cs:46:10:46:11 | Entry | +| ConditionalAccess.cs:54:12:54:29 | After ... += ... | ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:54:12:54:29 | After ... += ... | ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:54:12:54:29 | After ... += ... | ConditionalAccess.cs:48:12:48:25 | After ... = ... | +| ConditionalAccess.cs:54:12:54:29 | After ... += ... | ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:54:12:54:29 | After ... += ... | ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:54:12:54:29 | After ... += ... | ConditionalAccess.cs:49:12:49:32 | After ... = ... | +| ConditionalAccess.cs:54:12:54:29 | After ... += ... | ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:54:12:54:29 | After ... += ... | ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:54:12:54:29 | After ... += ... | ConditionalAccess.cs:50:12:50:23 | After ... = ... | +| ConditionalAccess.cs:54:12:54:29 | After ... += ... | ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:54:12:54:29 | After ... += ... | ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:54:12:54:29 | After ... += ... | ConditionalAccess.cs:51:9:51:16 | After access to property Prop [non-null] | +| ConditionalAccess.cs:54:12:54:29 | After ... += ... | ConditionalAccess.cs:51:9:51:16 | After access to property Prop [null] | +| ConditionalAccess.cs:54:12:54:29 | After ... += ... | ConditionalAccess.cs:51:18:51:31 | After ... = ... | +| ConditionalAccess.cs:54:12:54:29 | After ... += ... | ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:54:12:54:29 | After ... += ... | ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:54:12:54:29 | After ... += ... | ConditionalAccess.cs:52:9:52:16 | After access to property Prop [non-null] | +| ConditionalAccess.cs:54:12:54:29 | After ... += ... | ConditionalAccess.cs:52:9:52:16 | After access to property Prop [null] | +| ConditionalAccess.cs:54:12:54:29 | After ... += ... | ConditionalAccess.cs:52:18:52:38 | After ... = ... | +| ConditionalAccess.cs:54:12:54:29 | After ... += ... | ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:54:12:54:29 | After ... += ... | ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:54:12:54:29 | After ... += ... | ConditionalAccess.cs:53:12:53:25 | After ... -= ... | +| ConditionalAccess.cs:54:12:54:29 | After ... += ... | ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [non-null] | +| ConditionalAccess.cs:54:12:54:29 | After ... += ... | ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [null] | +| ConditionalAccess.cs:54:12:54:29 | After ... += ... | ConditionalAccess.cs:54:12:54:29 | After ... += ... | +| ConditionalAccess.cs:60:26:60:38 | Entry | ConditionalAccess.cs:60:26:60:38 | Entry | +| Conditions.cs:1:7:1:16 | Entry | Conditions.cs:1:7:1:16 | Entry | +| Conditions.cs:3:10:3:19 | Entry | Conditions.cs:3:10:3:19 | Entry | +| Conditions.cs:5:9:6:16 | After if (...) ... | Conditions.cs:3:10:3:19 | Entry | +| Conditions.cs:5:9:6:16 | After if (...) ... | Conditions.cs:5:9:6:16 | After if (...) ... | +| Conditions.cs:5:9:6:16 | After if (...) ... | Conditions.cs:5:13:5:15 | After access to parameter inc [false] | +| Conditions.cs:5:9:6:16 | After if (...) ... | Conditions.cs:5:13:5:15 | After access to parameter inc [true] | +| Conditions.cs:5:13:5:15 | After access to parameter inc [false] | Conditions.cs:5:13:5:15 | After access to parameter inc [false] | +| Conditions.cs:5:13:5:15 | After access to parameter inc [true] | Conditions.cs:5:13:5:15 | After access to parameter inc [true] | +| Conditions.cs:7:9:8:16 | After if (...) ... | Conditions.cs:3:10:3:19 | Entry | +| Conditions.cs:7:9:8:16 | After if (...) ... | Conditions.cs:5:9:6:16 | After if (...) ... | +| Conditions.cs:7:9:8:16 | After if (...) ... | Conditions.cs:5:13:5:15 | After access to parameter inc [false] | +| Conditions.cs:7:9:8:16 | After if (...) ... | Conditions.cs:5:13:5:15 | After access to parameter inc [true] | +| Conditions.cs:7:9:8:16 | After if (...) ... | Conditions.cs:7:9:8:16 | After if (...) ... | +| Conditions.cs:7:9:8:16 | After if (...) ... | Conditions.cs:7:14:7:16 | After access to parameter inc [false] | +| Conditions.cs:7:9:8:16 | After if (...) ... | Conditions.cs:7:14:7:16 | After access to parameter inc [true] | +| Conditions.cs:7:14:7:16 | After access to parameter inc [false] | Conditions.cs:7:14:7:16 | After access to parameter inc [false] | +| Conditions.cs:7:14:7:16 | After access to parameter inc [true] | Conditions.cs:7:14:7:16 | After access to parameter inc [true] | +| Conditions.cs:11:9:11:10 | Entry | Conditions.cs:11:9:11:10 | Entry | +| Conditions.cs:14:9:15:16 | After if (...) ... | Conditions.cs:11:9:11:10 | Entry | +| Conditions.cs:14:9:15:16 | After if (...) ... | Conditions.cs:14:9:15:16 | After if (...) ... | +| Conditions.cs:14:9:15:16 | After if (...) ... | Conditions.cs:14:13:14:13 | After access to parameter b [false] | +| Conditions.cs:14:9:15:16 | After if (...) ... | Conditions.cs:14:13:14:13 | After access to parameter b [true] | +| Conditions.cs:14:13:14:13 | After access to parameter b [false] | Conditions.cs:14:13:14:13 | After access to parameter b [false] | +| Conditions.cs:14:13:14:13 | After access to parameter b [true] | Conditions.cs:14:13:14:13 | After access to parameter b [true] | +| Conditions.cs:16:9:18:20 | After if (...) ... | Conditions.cs:11:9:11:10 | Entry | +| Conditions.cs:16:9:18:20 | After if (...) ... | Conditions.cs:14:9:15:16 | After if (...) ... | +| Conditions.cs:16:9:18:20 | After if (...) ... | Conditions.cs:14:13:14:13 | After access to parameter b [false] | +| Conditions.cs:16:9:18:20 | After if (...) ... | Conditions.cs:14:13:14:13 | After access to parameter b [true] | +| Conditions.cs:16:9:18:20 | After if (...) ... | Conditions.cs:16:9:18:20 | After if (...) ... | +| Conditions.cs:16:9:18:20 | After if (...) ... | Conditions.cs:16:13:16:17 | After ... > ... [false] | +| Conditions.cs:16:9:18:20 | After if (...) ... | Conditions.cs:16:13:16:17 | After ... > ... [true] | +| Conditions.cs:16:9:18:20 | After if (...) ... | Conditions.cs:17:13:18:20 | After if (...) ... | +| Conditions.cs:16:9:18:20 | After if (...) ... | Conditions.cs:17:18:17:18 | After access to parameter b [false] | +| Conditions.cs:16:9:18:20 | After if (...) ... | Conditions.cs:17:18:17:18 | After access to parameter b [true] | +| Conditions.cs:16:13:16:17 | After ... > ... [false] | Conditions.cs:16:13:16:17 | After ... > ... [false] | +| Conditions.cs:16:13:16:17 | After ... > ... [true] | Conditions.cs:16:13:16:17 | After ... > ... [true] | +| Conditions.cs:17:13:18:20 | After if (...) ... | Conditions.cs:16:13:16:17 | After ... > ... [true] | +| Conditions.cs:17:13:18:20 | After if (...) ... | Conditions.cs:17:13:18:20 | After if (...) ... | +| Conditions.cs:17:13:18:20 | After if (...) ... | Conditions.cs:17:18:17:18 | After access to parameter b [false] | +| Conditions.cs:17:13:18:20 | After if (...) ... | Conditions.cs:17:18:17:18 | After access to parameter b [true] | +| Conditions.cs:17:18:17:18 | After access to parameter b [false] | Conditions.cs:17:18:17:18 | After access to parameter b [false] | +| Conditions.cs:17:18:17:18 | After access to parameter b [true] | Conditions.cs:17:18:17:18 | After access to parameter b [true] | +| Conditions.cs:22:9:22:10 | Entry | Conditions.cs:22:9:22:10 | Entry | +| Conditions.cs:25:9:27:20 | After if (...) ... | Conditions.cs:22:9:22:10 | Entry | +| Conditions.cs:25:9:27:20 | After if (...) ... | Conditions.cs:25:9:27:20 | After if (...) ... | +| Conditions.cs:25:9:27:20 | After if (...) ... | Conditions.cs:25:13:25:14 | After access to parameter b1 [false] | +| Conditions.cs:25:9:27:20 | After if (...) ... | Conditions.cs:25:13:25:14 | After access to parameter b1 [true] | +| Conditions.cs:25:9:27:20 | After if (...) ... | Conditions.cs:26:13:27:20 | After if (...) ... | +| Conditions.cs:25:9:27:20 | After if (...) ... | Conditions.cs:26:17:26:18 | After access to parameter b2 [false] | +| Conditions.cs:25:9:27:20 | After if (...) ... | Conditions.cs:26:17:26:18 | After access to parameter b2 [true] | +| Conditions.cs:25:13:25:14 | After access to parameter b1 [false] | Conditions.cs:25:13:25:14 | After access to parameter b1 [false] | +| Conditions.cs:25:13:25:14 | After access to parameter b1 [true] | Conditions.cs:25:13:25:14 | After access to parameter b1 [true] | +| Conditions.cs:26:13:27:20 | After if (...) ... | Conditions.cs:25:13:25:14 | After access to parameter b1 [true] | +| Conditions.cs:26:13:27:20 | After if (...) ... | Conditions.cs:26:13:27:20 | After if (...) ... | +| Conditions.cs:26:13:27:20 | After if (...) ... | Conditions.cs:26:17:26:18 | After access to parameter b2 [false] | +| Conditions.cs:26:13:27:20 | After if (...) ... | Conditions.cs:26:17:26:18 | After access to parameter b2 [true] | +| Conditions.cs:26:17:26:18 | After access to parameter b2 [false] | Conditions.cs:26:17:26:18 | After access to parameter b2 [false] | +| Conditions.cs:26:17:26:18 | After access to parameter b2 [true] | Conditions.cs:26:17:26:18 | After access to parameter b2 [true] | +| Conditions.cs:28:9:29:16 | After if (...) ... | Conditions.cs:22:9:22:10 | Entry | +| Conditions.cs:28:9:29:16 | After if (...) ... | Conditions.cs:25:9:27:20 | After if (...) ... | +| Conditions.cs:28:9:29:16 | After if (...) ... | Conditions.cs:25:13:25:14 | After access to parameter b1 [false] | +| Conditions.cs:28:9:29:16 | After if (...) ... | Conditions.cs:25:13:25:14 | After access to parameter b1 [true] | +| Conditions.cs:28:9:29:16 | After if (...) ... | Conditions.cs:26:13:27:20 | After if (...) ... | +| Conditions.cs:28:9:29:16 | After if (...) ... | Conditions.cs:26:17:26:18 | After access to parameter b2 [false] | +| Conditions.cs:28:9:29:16 | After if (...) ... | Conditions.cs:26:17:26:18 | After access to parameter b2 [true] | +| Conditions.cs:28:9:29:16 | After if (...) ... | Conditions.cs:28:9:29:16 | After if (...) ... | +| Conditions.cs:28:9:29:16 | After if (...) ... | Conditions.cs:28:13:28:14 | After access to parameter b2 [false] | +| Conditions.cs:28:9:29:16 | After if (...) ... | Conditions.cs:28:13:28:14 | After access to parameter b2 [true] | +| Conditions.cs:28:13:28:14 | After access to parameter b2 [false] | Conditions.cs:28:13:28:14 | After access to parameter b2 [false] | +| Conditions.cs:28:13:28:14 | After access to parameter b2 [true] | Conditions.cs:28:13:28:14 | After access to parameter b2 [true] | +| Conditions.cs:33:9:33:10 | Entry | Conditions.cs:33:9:33:10 | Entry | +| Conditions.cs:37:9:38:20 | After if (...) ... | Conditions.cs:33:9:33:10 | Entry | +| Conditions.cs:37:9:38:20 | After if (...) ... | Conditions.cs:37:9:38:20 | After if (...) ... | +| Conditions.cs:37:9:38:20 | After if (...) ... | Conditions.cs:37:13:37:14 | After access to parameter b1 [false] | +| Conditions.cs:37:9:38:20 | After if (...) ... | Conditions.cs:37:13:37:14 | After access to parameter b1 [true] | +| Conditions.cs:37:13:37:14 | After access to parameter b1 [false] | Conditions.cs:37:13:37:14 | After access to parameter b1 [false] | +| Conditions.cs:37:13:37:14 | After access to parameter b1 [true] | Conditions.cs:37:13:37:14 | After access to parameter b1 [true] | +| Conditions.cs:39:9:40:16 | After if (...) ... | Conditions.cs:33:9:33:10 | Entry | +| Conditions.cs:39:9:40:16 | After if (...) ... | Conditions.cs:37:9:38:20 | After if (...) ... | +| Conditions.cs:39:9:40:16 | After if (...) ... | Conditions.cs:37:13:37:14 | After access to parameter b1 [false] | +| Conditions.cs:39:9:40:16 | After if (...) ... | Conditions.cs:37:13:37:14 | After access to parameter b1 [true] | +| Conditions.cs:39:9:40:16 | After if (...) ... | Conditions.cs:39:9:40:16 | After if (...) ... | +| Conditions.cs:39:9:40:16 | After if (...) ... | Conditions.cs:39:13:39:14 | After access to local variable b2 [false] | +| Conditions.cs:39:9:40:16 | After if (...) ... | Conditions.cs:39:13:39:14 | After access to local variable b2 [true] | +| Conditions.cs:39:13:39:14 | After access to local variable b2 [false] | Conditions.cs:39:13:39:14 | After access to local variable b2 [false] | +| Conditions.cs:39:13:39:14 | After access to local variable b2 [true] | Conditions.cs:39:13:39:14 | After access to local variable b2 [true] | +| Conditions.cs:41:9:42:16 | After if (...) ... | Conditions.cs:33:9:33:10 | Entry | +| Conditions.cs:41:9:42:16 | After if (...) ... | Conditions.cs:37:9:38:20 | After if (...) ... | +| Conditions.cs:41:9:42:16 | After if (...) ... | Conditions.cs:37:13:37:14 | After access to parameter b1 [false] | +| Conditions.cs:41:9:42:16 | After if (...) ... | Conditions.cs:37:13:37:14 | After access to parameter b1 [true] | +| Conditions.cs:41:9:42:16 | After if (...) ... | Conditions.cs:39:9:40:16 | After if (...) ... | +| Conditions.cs:41:9:42:16 | After if (...) ... | Conditions.cs:39:13:39:14 | After access to local variable b2 [false] | +| Conditions.cs:41:9:42:16 | After if (...) ... | Conditions.cs:39:13:39:14 | After access to local variable b2 [true] | +| Conditions.cs:41:9:42:16 | After if (...) ... | Conditions.cs:41:9:42:16 | After if (...) ... | +| Conditions.cs:41:9:42:16 | After if (...) ... | Conditions.cs:41:13:41:14 | After access to local variable b2 [false] | +| Conditions.cs:41:9:42:16 | After if (...) ... | Conditions.cs:41:13:41:14 | After access to local variable b2 [true] | +| Conditions.cs:41:13:41:14 | After access to local variable b2 [false] | Conditions.cs:41:13:41:14 | After access to local variable b2 [false] | +| Conditions.cs:41:13:41:14 | After access to local variable b2 [true] | Conditions.cs:41:13:41:14 | After access to local variable b2 [true] | +| Conditions.cs:46:9:46:10 | Entry | Conditions.cs:46:9:46:10 | Entry | +| Conditions.cs:49:9:53:9 | [LoopHeader] while (...) ... | Conditions.cs:46:9:46:10 | Entry | +| Conditions.cs:49:9:53:9 | [LoopHeader] while (...) ... | Conditions.cs:49:9:53:9 | [LoopHeader] while (...) ... | +| Conditions.cs:49:9:53:9 | [LoopHeader] while (...) ... | Conditions.cs:49:16:49:22 | After ... > ... [true] | +| Conditions.cs:49:9:53:9 | [LoopHeader] while (...) ... | Conditions.cs:51:13:52:20 | After if (...) ... | +| Conditions.cs:49:9:53:9 | [LoopHeader] while (...) ... | Conditions.cs:51:17:51:17 | After access to parameter b [false] | +| Conditions.cs:49:9:53:9 | [LoopHeader] while (...) ... | Conditions.cs:51:17:51:17 | After access to parameter b [true] | +| Conditions.cs:49:16:49:22 | After ... > ... [false] | Conditions.cs:46:9:46:10 | Entry | +| Conditions.cs:49:16:49:22 | After ... > ... [false] | Conditions.cs:49:9:53:9 | [LoopHeader] while (...) ... | +| Conditions.cs:49:16:49:22 | After ... > ... [false] | Conditions.cs:49:16:49:22 | After ... > ... [false] | +| Conditions.cs:49:16:49:22 | After ... > ... [false] | Conditions.cs:49:16:49:22 | After ... > ... [true] | +| Conditions.cs:49:16:49:22 | After ... > ... [false] | Conditions.cs:51:13:52:20 | After if (...) ... | +| Conditions.cs:49:16:49:22 | After ... > ... [false] | Conditions.cs:51:17:51:17 | After access to parameter b [false] | +| Conditions.cs:49:16:49:22 | After ... > ... [false] | Conditions.cs:51:17:51:17 | After access to parameter b [true] | +| Conditions.cs:49:16:49:22 | After ... > ... [true] | Conditions.cs:49:16:49:22 | After ... > ... [true] | +| Conditions.cs:51:13:52:20 | After if (...) ... | Conditions.cs:49:16:49:22 | After ... > ... [true] | +| Conditions.cs:51:13:52:20 | After if (...) ... | Conditions.cs:51:13:52:20 | After if (...) ... | +| Conditions.cs:51:13:52:20 | After if (...) ... | Conditions.cs:51:17:51:17 | After access to parameter b [false] | +| Conditions.cs:51:13:52:20 | After if (...) ... | Conditions.cs:51:17:51:17 | After access to parameter b [true] | +| Conditions.cs:51:17:51:17 | After access to parameter b [false] | Conditions.cs:51:17:51:17 | After access to parameter b [false] | +| Conditions.cs:51:17:51:17 | After access to parameter b [true] | Conditions.cs:51:17:51:17 | After access to parameter b [true] | +| Conditions.cs:57:9:57:10 | Entry | Conditions.cs:57:9:57:10 | Entry | +| Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | Conditions.cs:57:9:57:10 | Entry | +| Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | +| Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | Conditions.cs:60:16:60:22 | After ... > ... [true] | +| Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | Conditions.cs:62:13:63:20 | After if (...) ... | +| Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | Conditions.cs:62:17:62:17 | After access to parameter b [false] | +| Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | Conditions.cs:62:17:62:17 | After access to parameter b [true] | +| Conditions.cs:60:16:60:22 | After ... > ... [false] | Conditions.cs:57:9:57:10 | Entry | +| Conditions.cs:60:16:60:22 | After ... > ... [false] | Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | +| Conditions.cs:60:16:60:22 | After ... > ... [false] | Conditions.cs:60:16:60:22 | After ... > ... [false] | +| Conditions.cs:60:16:60:22 | After ... > ... [false] | Conditions.cs:60:16:60:22 | After ... > ... [true] | +| Conditions.cs:60:16:60:22 | After ... > ... [false] | Conditions.cs:62:13:63:20 | After if (...) ... | +| Conditions.cs:60:16:60:22 | After ... > ... [false] | Conditions.cs:62:17:62:17 | After access to parameter b [false] | +| Conditions.cs:60:16:60:22 | After ... > ... [false] | Conditions.cs:62:17:62:17 | After access to parameter b [true] | +| Conditions.cs:60:16:60:22 | After ... > ... [true] | Conditions.cs:60:16:60:22 | After ... > ... [true] | +| Conditions.cs:62:13:63:20 | After if (...) ... | Conditions.cs:60:16:60:22 | After ... > ... [true] | +| Conditions.cs:62:13:63:20 | After if (...) ... | Conditions.cs:62:13:63:20 | After if (...) ... | +| Conditions.cs:62:13:63:20 | After if (...) ... | Conditions.cs:62:17:62:17 | After access to parameter b [false] | +| Conditions.cs:62:13:63:20 | After if (...) ... | Conditions.cs:62:17:62:17 | After access to parameter b [true] | +| Conditions.cs:62:17:62:17 | After access to parameter b [false] | Conditions.cs:62:17:62:17 | After access to parameter b [false] | +| Conditions.cs:62:17:62:17 | After access to parameter b [true] | Conditions.cs:62:17:62:17 | After access to parameter b [true] | +| Conditions.cs:65:9:66:16 | After if (...) ... | Conditions.cs:57:9:57:10 | Entry | +| Conditions.cs:65:9:66:16 | After if (...) ... | Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | +| Conditions.cs:65:9:66:16 | After if (...) ... | Conditions.cs:60:16:60:22 | After ... > ... [false] | +| Conditions.cs:65:9:66:16 | After if (...) ... | Conditions.cs:60:16:60:22 | After ... > ... [true] | +| Conditions.cs:65:9:66:16 | After if (...) ... | Conditions.cs:62:13:63:20 | After if (...) ... | +| Conditions.cs:65:9:66:16 | After if (...) ... | Conditions.cs:62:17:62:17 | After access to parameter b [false] | +| Conditions.cs:65:9:66:16 | After if (...) ... | Conditions.cs:62:17:62:17 | After access to parameter b [true] | +| Conditions.cs:65:9:66:16 | After if (...) ... | Conditions.cs:65:9:66:16 | After if (...) ... | +| Conditions.cs:65:9:66:16 | After if (...) ... | Conditions.cs:65:13:65:13 | After access to parameter b [false] | +| Conditions.cs:65:9:66:16 | After if (...) ... | Conditions.cs:65:13:65:13 | After access to parameter b [true] | +| Conditions.cs:65:13:65:13 | After access to parameter b [false] | Conditions.cs:65:13:65:13 | After access to parameter b [false] | +| Conditions.cs:65:13:65:13 | After access to parameter b [true] | Conditions.cs:65:13:65:13 | After access to parameter b [true] | +| Conditions.cs:70:9:70:10 | Entry | Conditions.cs:70:9:70:10 | Entry | +| Conditions.cs:74:9:80:9 | After foreach (... ... in ...) ... | Conditions.cs:70:9:70:10 | Entry | +| Conditions.cs:74:9:80:9 | After foreach (... ... in ...) ... | Conditions.cs:74:9:80:9 | After foreach (... ... in ...) ... | +| Conditions.cs:74:9:80:9 | After foreach (... ... in ...) ... | Conditions.cs:74:22:74:22 | String _ | +| Conditions.cs:74:9:80:9 | After foreach (... ... in ...) ... | Conditions.cs:74:27:74:28 | After access to parameter ss [empty] | +| Conditions.cs:74:9:80:9 | After foreach (... ... in ...) ... | Conditions.cs:74:27:74:28 | After access to parameter ss [non-empty] | +| Conditions.cs:74:9:80:9 | After foreach (... ... in ...) ... | Conditions.cs:76:13:77:20 | After if (...) ... | +| Conditions.cs:74:9:80:9 | After foreach (... ... in ...) ... | Conditions.cs:76:17:76:17 | After access to local variable b [false] | +| Conditions.cs:74:9:80:9 | After foreach (... ... in ...) ... | Conditions.cs:76:17:76:17 | After access to local variable b [true] | +| Conditions.cs:74:9:80:9 | After foreach (... ... in ...) ... | Conditions.cs:78:13:79:26 | After if (...) ... | +| Conditions.cs:74:9:80:9 | After foreach (... ... in ...) ... | Conditions.cs:78:17:78:21 | After ... > ... [false] | +| Conditions.cs:74:9:80:9 | After foreach (... ... in ...) ... | Conditions.cs:78:17:78:21 | After ... > ... [true] | | Conditions.cs:74:22:74:22 | String _ | Conditions.cs:74:22:74:22 | String _ | -| Conditions.cs:77:17:77:20 | ...; | Conditions.cs:77:17:77:20 | ...; | -| Conditions.cs:78:13:79:26 | if (...) ... | Conditions.cs:74:22:74:22 | String _ | -| Conditions.cs:78:13:79:26 | if (...) ... | Conditions.cs:77:17:77:20 | ...; | -| Conditions.cs:78:13:79:26 | if (...) ... | Conditions.cs:78:13:79:26 | if (...) ... | -| Conditions.cs:79:17:79:26 | ...; | Conditions.cs:79:17:79:26 | ...; | -| Conditions.cs:81:9:82:16 | if (...) ... | Conditions.cs:70:9:70:10 | enter M6 | -| Conditions.cs:81:9:82:16 | if (...) ... | Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | -| Conditions.cs:81:9:82:16 | if (...) ... | Conditions.cs:74:22:74:22 | String _ | -| Conditions.cs:81:9:82:16 | if (...) ... | Conditions.cs:77:17:77:20 | ...; | -| Conditions.cs:81:9:82:16 | if (...) ... | Conditions.cs:78:13:79:26 | if (...) ... | -| Conditions.cs:81:9:82:16 | if (...) ... | Conditions.cs:79:17:79:26 | ...; | -| Conditions.cs:81:9:82:16 | if (...) ... | Conditions.cs:81:9:82:16 | if (...) ... | -| Conditions.cs:82:13:82:16 | ...; | Conditions.cs:82:13:82:16 | ...; | -| Conditions.cs:83:16:83:16 | access to local variable x | Conditions.cs:70:9:70:10 | enter M6 | -| Conditions.cs:83:16:83:16 | access to local variable x | Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | -| Conditions.cs:83:16:83:16 | access to local variable x | Conditions.cs:74:22:74:22 | String _ | -| Conditions.cs:83:16:83:16 | access to local variable x | Conditions.cs:77:17:77:20 | ...; | -| Conditions.cs:83:16:83:16 | access to local variable x | Conditions.cs:78:13:79:26 | if (...) ... | -| Conditions.cs:83:16:83:16 | access to local variable x | Conditions.cs:79:17:79:26 | ...; | -| Conditions.cs:83:16:83:16 | access to local variable x | Conditions.cs:81:9:82:16 | if (...) ... | -| Conditions.cs:83:16:83:16 | access to local variable x | Conditions.cs:82:13:82:16 | ...; | -| Conditions.cs:83:16:83:16 | access to local variable x | Conditions.cs:83:16:83:16 | access to local variable x | -| Conditions.cs:86:9:86:10 | enter M7 | Conditions.cs:86:9:86:10 | enter M7 | -| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:86:9:86:10 | enter M7 | -| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | -| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:90:22:90:22 | String _ | -| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:93:17:93:20 | ...; | -| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:94:13:95:26 | if (...) ... | -| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:95:17:95:26 | ...; | -| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:96:13:97:20 | if (...) ... | -| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:97:17:97:20 | ...; | +| Conditions.cs:74:22:74:22 | String _ | Conditions.cs:74:27:74:28 | After access to parameter ss [non-empty] | +| Conditions.cs:74:27:74:28 | After access to parameter ss [empty] | Conditions.cs:74:27:74:28 | After access to parameter ss [empty] | +| Conditions.cs:74:27:74:28 | After access to parameter ss [non-empty] | Conditions.cs:74:27:74:28 | After access to parameter ss [non-empty] | +| Conditions.cs:76:13:77:20 | After if (...) ... | Conditions.cs:74:22:74:22 | String _ | +| Conditions.cs:76:13:77:20 | After if (...) ... | Conditions.cs:74:27:74:28 | After access to parameter ss [non-empty] | +| Conditions.cs:76:13:77:20 | After if (...) ... | Conditions.cs:76:13:77:20 | After if (...) ... | +| Conditions.cs:76:13:77:20 | After if (...) ... | Conditions.cs:76:17:76:17 | After access to local variable b [false] | +| Conditions.cs:76:13:77:20 | After if (...) ... | Conditions.cs:76:17:76:17 | After access to local variable b [true] | +| Conditions.cs:76:17:76:17 | After access to local variable b [false] | Conditions.cs:76:17:76:17 | After access to local variable b [false] | +| Conditions.cs:76:17:76:17 | After access to local variable b [true] | Conditions.cs:76:17:76:17 | After access to local variable b [true] | +| Conditions.cs:78:13:79:26 | After if (...) ... | Conditions.cs:74:22:74:22 | String _ | +| Conditions.cs:78:13:79:26 | After if (...) ... | Conditions.cs:74:27:74:28 | After access to parameter ss [non-empty] | +| Conditions.cs:78:13:79:26 | After if (...) ... | Conditions.cs:76:13:77:20 | After if (...) ... | +| Conditions.cs:78:13:79:26 | After if (...) ... | Conditions.cs:76:17:76:17 | After access to local variable b [false] | +| Conditions.cs:78:13:79:26 | After if (...) ... | Conditions.cs:76:17:76:17 | After access to local variable b [true] | +| Conditions.cs:78:13:79:26 | After if (...) ... | Conditions.cs:78:13:79:26 | After if (...) ... | +| Conditions.cs:78:13:79:26 | After if (...) ... | Conditions.cs:78:17:78:21 | After ... > ... [false] | +| Conditions.cs:78:13:79:26 | After if (...) ... | Conditions.cs:78:17:78:21 | After ... > ... [true] | +| Conditions.cs:78:17:78:21 | After ... > ... [false] | Conditions.cs:78:17:78:21 | After ... > ... [false] | +| Conditions.cs:78:17:78:21 | After ... > ... [true] | Conditions.cs:78:17:78:21 | After ... > ... [true] | +| Conditions.cs:81:9:82:16 | After if (...) ... | Conditions.cs:70:9:70:10 | Entry | +| Conditions.cs:81:9:82:16 | After if (...) ... | Conditions.cs:74:9:80:9 | After foreach (... ... in ...) ... | +| Conditions.cs:81:9:82:16 | After if (...) ... | Conditions.cs:74:22:74:22 | String _ | +| Conditions.cs:81:9:82:16 | After if (...) ... | Conditions.cs:74:27:74:28 | After access to parameter ss [empty] | +| Conditions.cs:81:9:82:16 | After if (...) ... | Conditions.cs:74:27:74:28 | After access to parameter ss [non-empty] | +| Conditions.cs:81:9:82:16 | After if (...) ... | Conditions.cs:76:13:77:20 | After if (...) ... | +| Conditions.cs:81:9:82:16 | After if (...) ... | Conditions.cs:76:17:76:17 | After access to local variable b [false] | +| Conditions.cs:81:9:82:16 | After if (...) ... | Conditions.cs:76:17:76:17 | After access to local variable b [true] | +| Conditions.cs:81:9:82:16 | After if (...) ... | Conditions.cs:78:13:79:26 | After if (...) ... | +| Conditions.cs:81:9:82:16 | After if (...) ... | Conditions.cs:78:17:78:21 | After ... > ... [false] | +| Conditions.cs:81:9:82:16 | After if (...) ... | Conditions.cs:78:17:78:21 | After ... > ... [true] | +| Conditions.cs:81:9:82:16 | After if (...) ... | Conditions.cs:81:9:82:16 | After if (...) ... | +| Conditions.cs:81:9:82:16 | After if (...) ... | Conditions.cs:81:13:81:13 | After access to local variable b [false] | +| Conditions.cs:81:9:82:16 | After if (...) ... | Conditions.cs:81:13:81:13 | After access to local variable b [true] | +| Conditions.cs:81:13:81:13 | After access to local variable b [false] | Conditions.cs:81:13:81:13 | After access to local variable b [false] | +| Conditions.cs:81:13:81:13 | After access to local variable b [true] | Conditions.cs:81:13:81:13 | After access to local variable b [true] | +| Conditions.cs:86:9:86:10 | Entry | Conditions.cs:86:9:86:10 | Entry | +| Conditions.cs:90:9:98:9 | After foreach (... ... in ...) ... | Conditions.cs:86:9:86:10 | Entry | +| Conditions.cs:90:9:98:9 | After foreach (... ... in ...) ... | Conditions.cs:90:9:98:9 | After foreach (... ... in ...) ... | +| Conditions.cs:90:9:98:9 | After foreach (... ... in ...) ... | Conditions.cs:90:22:90:22 | String _ | +| Conditions.cs:90:9:98:9 | After foreach (... ... in ...) ... | Conditions.cs:90:27:90:28 | After access to parameter ss [empty] | +| Conditions.cs:90:9:98:9 | After foreach (... ... in ...) ... | Conditions.cs:90:27:90:28 | After access to parameter ss [non-empty] | +| Conditions.cs:90:9:98:9 | After foreach (... ... in ...) ... | Conditions.cs:92:13:93:20 | After if (...) ... | +| Conditions.cs:90:9:98:9 | After foreach (... ... in ...) ... | Conditions.cs:92:17:92:17 | After access to local variable b [false] | +| Conditions.cs:90:9:98:9 | After foreach (... ... in ...) ... | Conditions.cs:92:17:92:17 | After access to local variable b [true] | +| Conditions.cs:90:9:98:9 | After foreach (... ... in ...) ... | Conditions.cs:94:13:95:26 | After if (...) ... | +| Conditions.cs:90:9:98:9 | After foreach (... ... in ...) ... | Conditions.cs:94:17:94:21 | After ... > ... [false] | +| Conditions.cs:90:9:98:9 | After foreach (... ... in ...) ... | Conditions.cs:94:17:94:21 | After ... > ... [true] | +| Conditions.cs:90:9:98:9 | After foreach (... ... in ...) ... | Conditions.cs:96:13:97:20 | After if (...) ... | +| Conditions.cs:90:9:98:9 | After foreach (... ... in ...) ... | Conditions.cs:96:17:96:17 | After access to local variable b [false] | +| Conditions.cs:90:9:98:9 | After foreach (... ... in ...) ... | Conditions.cs:96:17:96:17 | After access to local variable b [true] | | Conditions.cs:90:22:90:22 | String _ | Conditions.cs:90:22:90:22 | String _ | -| Conditions.cs:93:17:93:20 | ...; | Conditions.cs:93:17:93:20 | ...; | -| Conditions.cs:94:13:95:26 | if (...) ... | Conditions.cs:90:22:90:22 | String _ | -| Conditions.cs:94:13:95:26 | if (...) ... | Conditions.cs:93:17:93:20 | ...; | -| Conditions.cs:94:13:95:26 | if (...) ... | Conditions.cs:94:13:95:26 | if (...) ... | -| Conditions.cs:95:17:95:26 | ...; | Conditions.cs:95:17:95:26 | ...; | -| Conditions.cs:96:13:97:20 | if (...) ... | Conditions.cs:90:22:90:22 | String _ | -| Conditions.cs:96:13:97:20 | if (...) ... | Conditions.cs:93:17:93:20 | ...; | -| Conditions.cs:96:13:97:20 | if (...) ... | Conditions.cs:94:13:95:26 | if (...) ... | -| Conditions.cs:96:13:97:20 | if (...) ... | Conditions.cs:95:17:95:26 | ...; | -| Conditions.cs:96:13:97:20 | if (...) ... | Conditions.cs:96:13:97:20 | if (...) ... | -| Conditions.cs:97:17:97:20 | ...; | Conditions.cs:97:17:97:20 | ...; | -| Conditions.cs:99:16:99:16 | access to local variable x | Conditions.cs:86:9:86:10 | enter M7 | -| Conditions.cs:99:16:99:16 | access to local variable x | Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | -| Conditions.cs:99:16:99:16 | access to local variable x | Conditions.cs:90:22:90:22 | String _ | -| Conditions.cs:99:16:99:16 | access to local variable x | Conditions.cs:93:17:93:20 | ...; | -| Conditions.cs:99:16:99:16 | access to local variable x | Conditions.cs:94:13:95:26 | if (...) ... | -| Conditions.cs:99:16:99:16 | access to local variable x | Conditions.cs:95:17:95:26 | ...; | -| Conditions.cs:99:16:99:16 | access to local variable x | Conditions.cs:96:13:97:20 | if (...) ... | -| Conditions.cs:99:16:99:16 | access to local variable x | Conditions.cs:97:17:97:20 | ...; | -| Conditions.cs:99:16:99:16 | access to local variable x | Conditions.cs:99:16:99:16 | access to local variable x | -| Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:102:12:102:13 | enter M8 | -| Conditions.cs:106:13:106:20 | ...; | Conditions.cs:106:13:106:20 | ...; | -| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:102:12:102:13 | enter M8 | -| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:106:13:106:20 | ...; | -| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:107:9:109:24 | if (...) ... | -| Conditions.cs:108:13:109:24 | if (...) ... | Conditions.cs:108:13:109:24 | if (...) ... | -| Conditions.cs:108:17:108:18 | [false] !... | Conditions.cs:108:17:108:18 | [false] !... | -| Conditions.cs:108:17:108:18 | [true] !... | Conditions.cs:108:17:108:18 | [true] !... | -| Conditions.cs:109:17:109:24 | ...; | Conditions.cs:108:17:108:18 | [true] !... | -| Conditions.cs:109:17:109:24 | ...; | Conditions.cs:109:17:109:24 | ...; | -| Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:102:12:102:13 | enter M8 | -| Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:106:13:106:20 | ...; | -| Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:107:9:109:24 | if (...) ... | -| Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:108:13:109:24 | if (...) ... | -| Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:108:17:108:18 | [false] !... | -| Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:108:17:108:18 | [true] !... | -| Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:109:17:109:24 | ...; | -| Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:110:16:110:16 | access to local variable x | -| Conditions.cs:113:10:113:11 | enter M9 | Conditions.cs:113:10:113:11 | enter M9 | -| Conditions.cs:113:10:113:11 | exit M9 (normal) | Conditions.cs:113:10:113:11 | enter M9 | -| Conditions.cs:113:10:113:11 | exit M9 (normal) | Conditions.cs:113:10:113:11 | exit M9 (normal) | -| Conditions.cs:113:10:113:11 | exit M9 (normal) | Conditions.cs:116:25:116:25 | access to local variable i | -| Conditions.cs:113:10:113:11 | exit M9 (normal) | Conditions.cs:116:42:116:42 | access to local variable i | -| Conditions.cs:113:10:113:11 | exit M9 (normal) | Conditions.cs:117:9:123:9 | {...} | -| Conditions.cs:113:10:113:11 | exit M9 (normal) | Conditions.cs:119:17:119:21 | [false] !... | -| Conditions.cs:113:10:113:11 | exit M9 (normal) | Conditions.cs:119:17:119:21 | [true] !... | -| Conditions.cs:113:10:113:11 | exit M9 (normal) | Conditions.cs:120:17:120:23 | ...; | -| Conditions.cs:113:10:113:11 | exit M9 (normal) | Conditions.cs:121:13:122:25 | if (...) ... | -| Conditions.cs:113:10:113:11 | exit M9 (normal) | Conditions.cs:122:17:122:25 | ...; | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:113:10:113:11 | enter M9 | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:116:25:116:25 | access to local variable i | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:116:42:116:42 | access to local variable i | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:117:9:123:9 | {...} | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:119:17:119:21 | [false] !... | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:119:17:119:21 | [true] !... | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:120:17:120:23 | ...; | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:121:13:122:25 | if (...) ... | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:122:17:122:25 | ...; | -| Conditions.cs:116:42:116:42 | access to local variable i | Conditions.cs:116:42:116:42 | access to local variable i | -| Conditions.cs:116:42:116:42 | access to local variable i | Conditions.cs:117:9:123:9 | {...} | -| Conditions.cs:116:42:116:42 | access to local variable i | Conditions.cs:119:17:119:21 | [false] !... | -| Conditions.cs:116:42:116:42 | access to local variable i | Conditions.cs:119:17:119:21 | [true] !... | -| Conditions.cs:116:42:116:42 | access to local variable i | Conditions.cs:120:17:120:23 | ...; | -| Conditions.cs:116:42:116:42 | access to local variable i | Conditions.cs:121:13:122:25 | if (...) ... | -| Conditions.cs:116:42:116:42 | access to local variable i | Conditions.cs:122:17:122:25 | ...; | -| Conditions.cs:117:9:123:9 | {...} | Conditions.cs:117:9:123:9 | {...} | -| Conditions.cs:119:17:119:21 | [false] !... | Conditions.cs:119:17:119:21 | [false] !... | -| Conditions.cs:119:17:119:21 | [true] !... | Conditions.cs:119:17:119:21 | [true] !... | -| Conditions.cs:120:17:120:23 | ...; | Conditions.cs:119:17:119:21 | [true] !... | -| Conditions.cs:120:17:120:23 | ...; | Conditions.cs:120:17:120:23 | ...; | -| Conditions.cs:121:13:122:25 | if (...) ... | Conditions.cs:117:9:123:9 | {...} | -| Conditions.cs:121:13:122:25 | if (...) ... | Conditions.cs:119:17:119:21 | [false] !... | -| Conditions.cs:121:13:122:25 | if (...) ... | Conditions.cs:119:17:119:21 | [true] !... | -| Conditions.cs:121:13:122:25 | if (...) ... | Conditions.cs:120:17:120:23 | ...; | -| Conditions.cs:121:13:122:25 | if (...) ... | Conditions.cs:121:13:122:25 | if (...) ... | -| Conditions.cs:122:17:122:25 | ...; | Conditions.cs:122:17:122:25 | ...; | -| Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:129:10:129:12 | enter M10 | -| Conditions.cs:131:16:131:19 | true | Conditions.cs:131:16:131:19 | true | -| Conditions.cs:132:9:140:9 | {...} | Conditions.cs:132:9:140:9 | {...} | -| Conditions.cs:134:13:139:13 | {...} | Conditions.cs:134:13:139:13 | {...} | -| Conditions.cs:136:17:138:17 | {...} | Conditions.cs:136:17:138:17 | {...} | -| Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:143:10:143:12 | enter M11 | -| Conditions.cs:143:10:143:12 | exit M11 (normal) | Conditions.cs:143:10:143:12 | enter M11 | -| Conditions.cs:143:10:143:12 | exit M11 (normal) | Conditions.cs:143:10:143:12 | exit M11 (normal) | -| Conditions.cs:143:10:143:12 | exit M11 (normal) | Conditions.cs:145:17:145:29 | ... ? ... : ... | -| Conditions.cs:143:10:143:12 | exit M11 (normal) | Conditions.cs:145:21:145:23 | "a" | -| Conditions.cs:143:10:143:12 | exit M11 (normal) | Conditions.cs:145:27:145:29 | "b" | -| Conditions.cs:143:10:143:12 | exit M11 (normal) | Conditions.cs:147:13:147:49 | ...; | -| Conditions.cs:143:10:143:12 | exit M11 (normal) | Conditions.cs:149:13:149:49 | ...; | -| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:143:10:143:12 | enter M11 | -| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:145:17:145:29 | ... ? ... : ... | -| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:145:21:145:23 | "a" | -| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:145:27:145:29 | "b" | -| Conditions.cs:145:21:145:23 | "a" | Conditions.cs:145:21:145:23 | "a" | -| Conditions.cs:145:27:145:29 | "b" | Conditions.cs:145:27:145:29 | "b" | -| Conditions.cs:147:13:147:49 | ...; | Conditions.cs:147:13:147:49 | ...; | -| Conditions.cs:149:13:149:49 | ...; | Conditions.cs:149:13:149:49 | ...; | -| ExitMethods.cs:6:7:6:17 | enter ExitMethods | ExitMethods.cs:6:7:6:17 | enter ExitMethods | -| ExitMethods.cs:8:10:8:11 | enter M1 | ExitMethods.cs:8:10:8:11 | enter M1 | -| ExitMethods.cs:14:10:14:11 | enter M2 | ExitMethods.cs:14:10:14:11 | enter M2 | -| ExitMethods.cs:20:10:20:11 | enter M3 | ExitMethods.cs:20:10:20:11 | enter M3 | -| ExitMethods.cs:26:10:26:11 | enter M4 | ExitMethods.cs:26:10:26:11 | enter M4 | -| ExitMethods.cs:32:10:32:11 | enter M5 | ExitMethods.cs:32:10:32:11 | enter M5 | -| ExitMethods.cs:38:10:38:11 | enter M6 | ExitMethods.cs:38:10:38:11 | enter M6 | -| ExitMethods.cs:38:10:38:11 | exit M6 (normal) | ExitMethods.cs:38:10:38:11 | enter M6 | -| ExitMethods.cs:38:10:38:11 | exit M6 (normal) | ExitMethods.cs:38:10:38:11 | exit M6 (normal) | -| ExitMethods.cs:38:10:38:11 | exit M6 (normal) | ExitMethods.cs:45:9:47:9 | {...} | -| ExitMethods.cs:38:10:38:11 | exit M6 (normal) | ExitMethods.cs:48:9:51:9 | catch (...) {...} | -| ExitMethods.cs:38:10:38:11 | exit M6 (normal) | ExitMethods.cs:49:9:51:9 | {...} | -| ExitMethods.cs:45:9:47:9 | {...} | ExitMethods.cs:45:9:47:9 | {...} | -| ExitMethods.cs:48:9:51:9 | catch (...) {...} | ExitMethods.cs:48:9:51:9 | catch (...) {...} | -| ExitMethods.cs:49:9:51:9 | {...} | ExitMethods.cs:48:9:51:9 | catch (...) {...} | -| ExitMethods.cs:49:9:51:9 | {...} | ExitMethods.cs:49:9:51:9 | {...} | -| ExitMethods.cs:54:10:54:11 | enter M7 | ExitMethods.cs:54:10:54:11 | enter M7 | -| ExitMethods.cs:60:10:60:11 | enter M8 | ExitMethods.cs:60:10:60:11 | enter M8 | -| ExitMethods.cs:66:17:66:26 | enter ErrorMaybe | ExitMethods.cs:66:17:66:26 | enter ErrorMaybe | -| ExitMethods.cs:66:17:66:26 | exit ErrorMaybe | ExitMethods.cs:66:17:66:26 | exit ErrorMaybe | -| ExitMethods.cs:66:17:66:26 | exit ErrorMaybe (normal) | ExitMethods.cs:66:17:66:26 | enter ErrorMaybe | -| ExitMethods.cs:66:17:66:26 | exit ErrorMaybe (normal) | ExitMethods.cs:66:17:66:26 | exit ErrorMaybe (normal) | -| ExitMethods.cs:69:19:69:33 | object creation of type Exception | ExitMethods.cs:69:19:69:33 | object creation of type Exception | -| ExitMethods.cs:72:17:72:27 | enter ErrorAlways | ExitMethods.cs:72:17:72:27 | enter ErrorAlways | -| ExitMethods.cs:72:17:72:27 | exit ErrorAlways (abnormal) | ExitMethods.cs:72:17:72:27 | exit ErrorAlways (abnormal) | -| ExitMethods.cs:75:19:75:33 | object creation of type Exception | ExitMethods.cs:75:19:75:33 | object creation of type Exception | -| ExitMethods.cs:77:41:77:43 | "b" | ExitMethods.cs:77:41:77:43 | "b" | -| ExitMethods.cs:80:17:80:28 | enter ErrorAlways2 | ExitMethods.cs:80:17:80:28 | enter ErrorAlways2 | -| ExitMethods.cs:85:17:85:28 | enter ErrorAlways3 | ExitMethods.cs:85:17:85:28 | enter ErrorAlways3 | -| ExitMethods.cs:87:10:87:13 | enter Exit | ExitMethods.cs:87:10:87:13 | enter Exit | -| ExitMethods.cs:92:10:92:18 | enter ExitInTry | ExitMethods.cs:92:10:92:18 | enter ExitInTry | -| ExitMethods.cs:105:10:105:24 | enter ApplicationExit | ExitMethods.cs:105:10:105:24 | enter ApplicationExit | -| ExitMethods.cs:110:13:110:21 | enter ThrowExpr | ExitMethods.cs:110:13:110:21 | enter ThrowExpr | -| ExitMethods.cs:110:13:110:21 | exit ThrowExpr | ExitMethods.cs:110:13:110:21 | exit ThrowExpr | -| ExitMethods.cs:112:29:112:29 | 1 | ExitMethods.cs:110:13:110:21 | enter ThrowExpr | -| ExitMethods.cs:112:29:112:29 | 1 | ExitMethods.cs:112:29:112:29 | 1 | -| ExitMethods.cs:112:69:112:75 | "input" | ExitMethods.cs:112:69:112:75 | "input" | -| ExitMethods.cs:115:16:115:34 | enter ExtensionMethodCall | ExitMethods.cs:115:16:115:34 | enter ExtensionMethodCall | -| ExitMethods.cs:117:16:117:38 | ... ? ... : ... | ExitMethods.cs:115:16:115:34 | enter ExtensionMethodCall | -| ExitMethods.cs:117:16:117:38 | ... ? ... : ... | ExitMethods.cs:117:16:117:38 | ... ? ... : ... | -| ExitMethods.cs:117:16:117:38 | ... ? ... : ... | ExitMethods.cs:117:34:117:34 | 0 | -| ExitMethods.cs:117:16:117:38 | ... ? ... : ... | ExitMethods.cs:117:38:117:38 | 1 | -| ExitMethods.cs:117:34:117:34 | 0 | ExitMethods.cs:117:34:117:34 | 0 | -| ExitMethods.cs:117:38:117:38 | 1 | ExitMethods.cs:117:38:117:38 | 1 | -| ExitMethods.cs:120:17:120:32 | enter FailingAssertion | ExitMethods.cs:120:17:120:32 | enter FailingAssertion | -| ExitMethods.cs:126:17:126:33 | enter FailingAssertion2 | ExitMethods.cs:126:17:126:33 | enter FailingAssertion2 | -| ExitMethods.cs:132:10:132:20 | enter AssertFalse | ExitMethods.cs:132:10:132:20 | enter AssertFalse | -| ExitMethods.cs:132:10:132:20 | exit AssertFalse | ExitMethods.cs:132:10:132:20 | exit AssertFalse | -| ExitMethods.cs:132:10:132:20 | exit AssertFalse (abnormal) | ExitMethods.cs:132:10:132:20 | exit AssertFalse (abnormal) | -| ExitMethods.cs:132:10:132:20 | exit AssertFalse (normal) | ExitMethods.cs:132:10:132:20 | enter AssertFalse | -| ExitMethods.cs:132:10:132:20 | exit AssertFalse (normal) | ExitMethods.cs:132:10:132:20 | exit AssertFalse (normal) | -| ExitMethods.cs:134:17:134:33 | enter FailingAssertion3 | ExitMethods.cs:134:17:134:33 | enter FailingAssertion3 | -| ExitMethods.cs:140:17:140:42 | enter ExceptionDispatchInfoThrow | ExitMethods.cs:140:17:140:42 | enter ExceptionDispatchInfoThrow | -| ExitMethods.cs:140:17:140:42 | exit ExceptionDispatchInfoThrow (abnormal) | ExitMethods.cs:140:17:140:42 | exit ExceptionDispatchInfoThrow (abnormal) | -| ExitMethods.cs:143:13:143:43 | ...; | ExitMethods.cs:143:13:143:43 | ...; | -| ExitMethods.cs:145:13:145:53 | ...; | ExitMethods.cs:145:13:145:53 | ...; | -| Extensions.cs:5:23:5:29 | enter ToInt32 | Extensions.cs:5:23:5:29 | enter ToInt32 | -| Extensions.cs:10:24:10:29 | enter ToBool | Extensions.cs:10:24:10:29 | enter ToBool | -| Extensions.cs:15:23:15:33 | enter CallToInt32 | Extensions.cs:15:23:15:33 | enter CallToInt32 | -| Extensions.cs:20:17:20:20 | enter Main | Extensions.cs:20:17:20:20 | enter Main | -| Finally.cs:3:14:3:20 | enter Finally | Finally.cs:3:14:3:20 | enter Finally | -| Finally.cs:7:10:7:11 | enter M1 | Finally.cs:7:10:7:11 | enter M1 | -| Finally.cs:7:10:7:11 | exit M1 | Finally.cs:7:10:7:11 | exit M1 | -| Finally.cs:7:10:7:11 | exit M1 (abnormal) | Finally.cs:7:10:7:11 | exit M1 (abnormal) | -| Finally.cs:7:10:7:11 | exit M1 (normal) | Finally.cs:7:10:7:11 | enter M1 | -| Finally.cs:7:10:7:11 | exit M1 (normal) | Finally.cs:7:10:7:11 | exit M1 (normal) | -| Finally.cs:19:10:19:11 | enter M2 | Finally.cs:19:10:19:11 | enter M2 | -| Finally.cs:19:10:19:11 | exit M2 | Finally.cs:19:10:19:11 | exit M2 | -| Finally.cs:19:10:19:11 | exit M2 (abnormal) | Finally.cs:19:10:19:11 | exit M2 (abnormal) | -| Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:19:10:19:11 | enter M2 | -| Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:19:10:19:11 | exit M2 (normal) | -| Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:24:13:24:19 | return ...; | -| Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:26:9:29:9 | catch (...) {...} | -| Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:26:38:26:39 | IOException ex | -| Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:27:9:29:9 | {...} | -| Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:30:9:40:9 | catch (...) {...} | -| Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:30:41:30:42 | ArgumentException ex | -| Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:34:27:34:32 | throw ...; | -| Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:41:9:43:9 | catch (...) {...} | -| Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:42:9:43:9 | {...} | -| Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:44:9:47:9 | catch {...} | -| Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:49:9:51:9 | {...} | -| Finally.cs:24:13:24:19 | return ...; | Finally.cs:24:13:24:19 | return ...; | +| Conditions.cs:90:22:90:22 | String _ | Conditions.cs:90:27:90:28 | After access to parameter ss [non-empty] | +| Conditions.cs:90:27:90:28 | After access to parameter ss [empty] | Conditions.cs:90:27:90:28 | After access to parameter ss [empty] | +| Conditions.cs:90:27:90:28 | After access to parameter ss [non-empty] | Conditions.cs:90:27:90:28 | After access to parameter ss [non-empty] | +| Conditions.cs:92:13:93:20 | After if (...) ... | Conditions.cs:90:22:90:22 | String _ | +| Conditions.cs:92:13:93:20 | After if (...) ... | Conditions.cs:90:27:90:28 | After access to parameter ss [non-empty] | +| Conditions.cs:92:13:93:20 | After if (...) ... | Conditions.cs:92:13:93:20 | After if (...) ... | +| Conditions.cs:92:13:93:20 | After if (...) ... | Conditions.cs:92:17:92:17 | After access to local variable b [false] | +| Conditions.cs:92:13:93:20 | After if (...) ... | Conditions.cs:92:17:92:17 | After access to local variable b [true] | +| Conditions.cs:92:17:92:17 | After access to local variable b [false] | Conditions.cs:92:17:92:17 | After access to local variable b [false] | +| Conditions.cs:92:17:92:17 | After access to local variable b [true] | Conditions.cs:92:17:92:17 | After access to local variable b [true] | +| Conditions.cs:94:13:95:26 | After if (...) ... | Conditions.cs:90:22:90:22 | String _ | +| Conditions.cs:94:13:95:26 | After if (...) ... | Conditions.cs:90:27:90:28 | After access to parameter ss [non-empty] | +| Conditions.cs:94:13:95:26 | After if (...) ... | Conditions.cs:92:13:93:20 | After if (...) ... | +| Conditions.cs:94:13:95:26 | After if (...) ... | Conditions.cs:92:17:92:17 | After access to local variable b [false] | +| Conditions.cs:94:13:95:26 | After if (...) ... | Conditions.cs:92:17:92:17 | After access to local variable b [true] | +| Conditions.cs:94:13:95:26 | After if (...) ... | Conditions.cs:94:13:95:26 | After if (...) ... | +| Conditions.cs:94:13:95:26 | After if (...) ... | Conditions.cs:94:17:94:21 | After ... > ... [false] | +| Conditions.cs:94:13:95:26 | After if (...) ... | Conditions.cs:94:17:94:21 | After ... > ... [true] | +| Conditions.cs:94:17:94:21 | After ... > ... [false] | Conditions.cs:94:17:94:21 | After ... > ... [false] | +| Conditions.cs:94:17:94:21 | After ... > ... [true] | Conditions.cs:94:17:94:21 | After ... > ... [true] | +| Conditions.cs:96:13:97:20 | After if (...) ... | Conditions.cs:90:22:90:22 | String _ | +| Conditions.cs:96:13:97:20 | After if (...) ... | Conditions.cs:90:27:90:28 | After access to parameter ss [non-empty] | +| Conditions.cs:96:13:97:20 | After if (...) ... | Conditions.cs:92:13:93:20 | After if (...) ... | +| Conditions.cs:96:13:97:20 | After if (...) ... | Conditions.cs:92:17:92:17 | After access to local variable b [false] | +| Conditions.cs:96:13:97:20 | After if (...) ... | Conditions.cs:92:17:92:17 | After access to local variable b [true] | +| Conditions.cs:96:13:97:20 | After if (...) ... | Conditions.cs:94:13:95:26 | After if (...) ... | +| Conditions.cs:96:13:97:20 | After if (...) ... | Conditions.cs:94:17:94:21 | After ... > ... [false] | +| Conditions.cs:96:13:97:20 | After if (...) ... | Conditions.cs:94:17:94:21 | After ... > ... [true] | +| Conditions.cs:96:13:97:20 | After if (...) ... | Conditions.cs:96:13:97:20 | After if (...) ... | +| Conditions.cs:96:13:97:20 | After if (...) ... | Conditions.cs:96:17:96:17 | After access to local variable b [false] | +| Conditions.cs:96:13:97:20 | After if (...) ... | Conditions.cs:96:17:96:17 | After access to local variable b [true] | +| Conditions.cs:96:17:96:17 | After access to local variable b [false] | Conditions.cs:96:17:96:17 | After access to local variable b [false] | +| Conditions.cs:96:17:96:17 | After access to local variable b [true] | Conditions.cs:96:17:96:17 | After access to local variable b [true] | +| Conditions.cs:102:12:102:13 | Entry | Conditions.cs:102:12:102:13 | Entry | +| Conditions.cs:105:9:106:20 | After if (...) ... | Conditions.cs:102:12:102:13 | Entry | +| Conditions.cs:105:9:106:20 | After if (...) ... | Conditions.cs:105:9:106:20 | After if (...) ... | +| Conditions.cs:105:9:106:20 | After if (...) ... | Conditions.cs:105:13:105:13 | After access to parameter b [false] | +| Conditions.cs:105:9:106:20 | After if (...) ... | Conditions.cs:105:13:105:13 | After access to parameter b [true] | +| Conditions.cs:105:13:105:13 | After access to parameter b [false] | Conditions.cs:105:13:105:13 | After access to parameter b [false] | +| Conditions.cs:105:13:105:13 | After access to parameter b [true] | Conditions.cs:105:13:105:13 | After access to parameter b [true] | +| Conditions.cs:107:9:109:24 | After if (...) ... | Conditions.cs:102:12:102:13 | Entry | +| Conditions.cs:107:9:109:24 | After if (...) ... | Conditions.cs:105:9:106:20 | After if (...) ... | +| Conditions.cs:107:9:109:24 | After if (...) ... | Conditions.cs:105:13:105:13 | After access to parameter b [false] | +| Conditions.cs:107:9:109:24 | After if (...) ... | Conditions.cs:105:13:105:13 | After access to parameter b [true] | +| Conditions.cs:107:9:109:24 | After if (...) ... | Conditions.cs:107:9:109:24 | After if (...) ... | +| Conditions.cs:107:9:109:24 | After if (...) ... | Conditions.cs:107:13:107:24 | After ... > ... [false] | +| Conditions.cs:107:9:109:24 | After if (...) ... | Conditions.cs:107:13:107:24 | After ... > ... [true] | +| Conditions.cs:107:9:109:24 | After if (...) ... | Conditions.cs:108:13:109:24 | After if (...) ... | +| Conditions.cs:107:9:109:24 | After if (...) ... | Conditions.cs:108:18:108:18 | After access to parameter b [false] | +| Conditions.cs:107:9:109:24 | After if (...) ... | Conditions.cs:108:18:108:18 | After access to parameter b [true] | +| Conditions.cs:107:13:107:24 | After ... > ... [false] | Conditions.cs:107:13:107:24 | After ... > ... [false] | +| Conditions.cs:107:13:107:24 | After ... > ... [true] | Conditions.cs:107:13:107:24 | After ... > ... [true] | +| Conditions.cs:108:13:109:24 | After if (...) ... | Conditions.cs:107:13:107:24 | After ... > ... [true] | +| Conditions.cs:108:13:109:24 | After if (...) ... | Conditions.cs:108:13:109:24 | After if (...) ... | +| Conditions.cs:108:13:109:24 | After if (...) ... | Conditions.cs:108:18:108:18 | After access to parameter b [false] | +| Conditions.cs:108:13:109:24 | After if (...) ... | Conditions.cs:108:18:108:18 | After access to parameter b [true] | +| Conditions.cs:108:18:108:18 | After access to parameter b [false] | Conditions.cs:108:18:108:18 | After access to parameter b [false] | +| Conditions.cs:108:18:108:18 | After access to parameter b [true] | Conditions.cs:108:18:108:18 | After access to parameter b [true] | +| Conditions.cs:113:10:113:11 | Entry | Conditions.cs:113:10:113:11 | Entry | +| Conditions.cs:116:25:116:39 | After ... < ... [false] | Conditions.cs:113:10:113:11 | Entry | +| Conditions.cs:116:25:116:39 | After ... < ... [false] | Conditions.cs:116:25:116:39 | After ... < ... [false] | +| Conditions.cs:116:25:116:39 | After ... < ... [false] | Conditions.cs:116:25:116:39 | After ... < ... [true] | +| Conditions.cs:116:25:116:39 | After ... < ... [false] | Conditions.cs:116:25:116:39 | Before ... < ... | +| Conditions.cs:116:25:116:39 | After ... < ... [false] | Conditions.cs:119:13:120:23 | After if (...) ... | +| Conditions.cs:116:25:116:39 | After ... < ... [false] | Conditions.cs:119:18:119:21 | After access to local variable last [false] | +| Conditions.cs:116:25:116:39 | After ... < ... [false] | Conditions.cs:119:18:119:21 | After access to local variable last [true] | +| Conditions.cs:116:25:116:39 | After ... < ... [false] | Conditions.cs:121:13:122:25 | After if (...) ... | +| Conditions.cs:116:25:116:39 | After ... < ... [false] | Conditions.cs:121:17:121:20 | After access to local variable last [false] | +| Conditions.cs:116:25:116:39 | After ... < ... [false] | Conditions.cs:121:17:121:20 | After access to local variable last [true] | +| Conditions.cs:116:25:116:39 | After ... < ... [true] | Conditions.cs:116:25:116:39 | After ... < ... [true] | +| Conditions.cs:116:25:116:39 | Before ... < ... | Conditions.cs:113:10:113:11 | Entry | +| Conditions.cs:116:25:116:39 | Before ... < ... | Conditions.cs:116:25:116:39 | After ... < ... [true] | +| Conditions.cs:116:25:116:39 | Before ... < ... | Conditions.cs:116:25:116:39 | Before ... < ... | +| Conditions.cs:116:25:116:39 | Before ... < ... | Conditions.cs:119:13:120:23 | After if (...) ... | +| Conditions.cs:116:25:116:39 | Before ... < ... | Conditions.cs:119:18:119:21 | After access to local variable last [false] | +| Conditions.cs:116:25:116:39 | Before ... < ... | Conditions.cs:119:18:119:21 | After access to local variable last [true] | +| Conditions.cs:116:25:116:39 | Before ... < ... | Conditions.cs:121:13:122:25 | After if (...) ... | +| Conditions.cs:116:25:116:39 | Before ... < ... | Conditions.cs:121:17:121:20 | After access to local variable last [false] | +| Conditions.cs:116:25:116:39 | Before ... < ... | Conditions.cs:121:17:121:20 | After access to local variable last [true] | +| Conditions.cs:119:13:120:23 | After if (...) ... | Conditions.cs:116:25:116:39 | After ... < ... [true] | +| Conditions.cs:119:13:120:23 | After if (...) ... | Conditions.cs:119:13:120:23 | After if (...) ... | +| Conditions.cs:119:13:120:23 | After if (...) ... | Conditions.cs:119:18:119:21 | After access to local variable last [false] | +| Conditions.cs:119:13:120:23 | After if (...) ... | Conditions.cs:119:18:119:21 | After access to local variable last [true] | +| Conditions.cs:119:18:119:21 | After access to local variable last [false] | Conditions.cs:119:18:119:21 | After access to local variable last [false] | +| Conditions.cs:119:18:119:21 | After access to local variable last [true] | Conditions.cs:119:18:119:21 | After access to local variable last [true] | +| Conditions.cs:121:13:122:25 | After if (...) ... | Conditions.cs:116:25:116:39 | After ... < ... [true] | +| Conditions.cs:121:13:122:25 | After if (...) ... | Conditions.cs:119:13:120:23 | After if (...) ... | +| Conditions.cs:121:13:122:25 | After if (...) ... | Conditions.cs:119:18:119:21 | After access to local variable last [false] | +| Conditions.cs:121:13:122:25 | After if (...) ... | Conditions.cs:119:18:119:21 | After access to local variable last [true] | +| Conditions.cs:121:13:122:25 | After if (...) ... | Conditions.cs:121:13:122:25 | After if (...) ... | +| Conditions.cs:121:13:122:25 | After if (...) ... | Conditions.cs:121:17:121:20 | After access to local variable last [false] | +| Conditions.cs:121:13:122:25 | After if (...) ... | Conditions.cs:121:17:121:20 | After access to local variable last [true] | +| Conditions.cs:121:17:121:20 | After access to local variable last [false] | Conditions.cs:121:17:121:20 | After access to local variable last [false] | +| Conditions.cs:121:17:121:20 | After access to local variable last [true] | Conditions.cs:121:17:121:20 | After access to local variable last [true] | +| Conditions.cs:129:10:129:12 | Entry | Conditions.cs:129:10:129:12 | Entry | +| Conditions.cs:131:9:140:9 | [LoopHeader] while (...) ... | Conditions.cs:131:9:140:9 | [LoopHeader] while (...) ... | +| Conditions.cs:133:13:139:13 | After if (...) ... | Conditions.cs:133:13:139:13 | After if (...) ... | +| Conditions.cs:133:17:133:22 | After access to field Field1 [false] | Conditions.cs:133:17:133:22 | After access to field Field1 [false] | +| Conditions.cs:133:17:133:22 | After access to field Field1 [true] | Conditions.cs:133:17:133:22 | After access to field Field1 [true] | +| Conditions.cs:135:17:138:17 | After if (...) ... | Conditions.cs:135:17:138:17 | After if (...) ... | +| Conditions.cs:135:21:135:26 | After access to field Field2 [false] | Conditions.cs:135:21:135:26 | After access to field Field2 [false] | +| Conditions.cs:135:21:135:26 | After access to field Field2 [true] | Conditions.cs:135:21:135:26 | After access to field Field2 [true] | +| Conditions.cs:143:10:143:12 | Entry | Conditions.cs:143:10:143:12 | Entry | +| Conditions.cs:145:17:145:17 | After access to parameter b [false] | Conditions.cs:145:17:145:17 | After access to parameter b [false] | +| Conditions.cs:145:17:145:17 | After access to parameter b [true] | Conditions.cs:145:17:145:17 | After access to parameter b [true] | +| Conditions.cs:145:17:145:29 | After ... ? ... : ... | Conditions.cs:143:10:143:12 | Entry | +| Conditions.cs:145:17:145:29 | After ... ? ... : ... | Conditions.cs:145:17:145:17 | After access to parameter b [false] | +| Conditions.cs:145:17:145:29 | After ... ? ... : ... | Conditions.cs:145:17:145:17 | After access to parameter b [true] | +| Conditions.cs:145:17:145:29 | After ... ? ... : ... | Conditions.cs:145:17:145:29 | After ... ? ... : ... | +| Conditions.cs:146:9:149:49 | After if (...) ... | Conditions.cs:143:10:143:12 | Entry | +| Conditions.cs:146:9:149:49 | After if (...) ... | Conditions.cs:145:17:145:17 | After access to parameter b [false] | +| Conditions.cs:146:9:149:49 | After if (...) ... | Conditions.cs:145:17:145:17 | After access to parameter b [true] | +| Conditions.cs:146:9:149:49 | After if (...) ... | Conditions.cs:145:17:145:29 | After ... ? ... : ... | +| Conditions.cs:146:9:149:49 | After if (...) ... | Conditions.cs:146:9:149:49 | After if (...) ... | +| Conditions.cs:146:9:149:49 | After if (...) ... | Conditions.cs:146:13:146:13 | After access to parameter b [false] | +| Conditions.cs:146:9:149:49 | After if (...) ... | Conditions.cs:146:13:146:13 | After access to parameter b [true] | +| Conditions.cs:146:13:146:13 | After access to parameter b [false] | Conditions.cs:146:13:146:13 | After access to parameter b [false] | +| Conditions.cs:146:13:146:13 | After access to parameter b [true] | Conditions.cs:146:13:146:13 | After access to parameter b [true] | +| DefaultParam.cs:1:7:1:18 | Entry | DefaultParam.cs:1:7:1:18 | Entry | +| DefaultParam.cs:3:12:3:13 | Entry | DefaultParam.cs:3:12:3:13 | Entry | +| DefaultParam.cs:3:30:3:30 | After s [match] | DefaultParam.cs:3:30:3:30 | After s [match] | +| DefaultParam.cs:3:30:3:30 | After s [no-match] | DefaultParam.cs:3:30:3:30 | After s [no-match] | +| DefaultParam.cs:3:42:3:42 | After i [match] | DefaultParam.cs:3:42:3:42 | After i [match] | +| DefaultParam.cs:3:42:3:42 | After i [no-match] | DefaultParam.cs:3:42:3:42 | After i [no-match] | +| DefaultParam.cs:3:42:3:42 | i | DefaultParam.cs:3:12:3:13 | Entry | +| DefaultParam.cs:3:42:3:42 | i | DefaultParam.cs:3:30:3:30 | After s [match] | +| DefaultParam.cs:3:42:3:42 | i | DefaultParam.cs:3:30:3:30 | After s [no-match] | +| DefaultParam.cs:3:42:3:42 | i | DefaultParam.cs:3:42:3:42 | i | +| DefaultParam.cs:4:5:6:5 | {...} | DefaultParam.cs:3:12:3:13 | Entry | +| DefaultParam.cs:4:5:6:5 | {...} | DefaultParam.cs:3:30:3:30 | After s [match] | +| DefaultParam.cs:4:5:6:5 | {...} | DefaultParam.cs:3:30:3:30 | After s [no-match] | +| DefaultParam.cs:4:5:6:5 | {...} | DefaultParam.cs:3:42:3:42 | After i [match] | +| DefaultParam.cs:4:5:6:5 | {...} | DefaultParam.cs:3:42:3:42 | After i [no-match] | +| DefaultParam.cs:4:5:6:5 | {...} | DefaultParam.cs:3:42:3:42 | i | +| DefaultParam.cs:4:5:6:5 | {...} | DefaultParam.cs:4:5:6:5 | {...} | +| ExitMethods.cs:6:7:6:17 | Entry | ExitMethods.cs:6:7:6:17 | Entry | +| ExitMethods.cs:8:10:8:11 | Entry | ExitMethods.cs:8:10:8:11 | Entry | +| ExitMethods.cs:14:10:14:11 | Entry | ExitMethods.cs:14:10:14:11 | Entry | +| ExitMethods.cs:20:10:20:11 | Entry | ExitMethods.cs:20:10:20:11 | Entry | +| ExitMethods.cs:26:10:26:11 | Entry | ExitMethods.cs:26:10:26:11 | Entry | +| ExitMethods.cs:32:10:32:11 | Entry | ExitMethods.cs:32:10:32:11 | Entry | +| ExitMethods.cs:38:10:38:11 | Entry | ExitMethods.cs:38:10:38:11 | Entry | +| ExitMethods.cs:38:10:38:11 | Exit | ExitMethods.cs:38:10:38:11 | Exit | +| ExitMethods.cs:38:10:38:11 | Normal Exit | ExitMethods.cs:38:10:38:11 | Entry | +| ExitMethods.cs:38:10:38:11 | Normal Exit | ExitMethods.cs:38:10:38:11 | Normal Exit | +| ExitMethods.cs:38:10:38:11 | Normal Exit | ExitMethods.cs:44:9:47:9 | After catch (...) {...} [match] | +| ExitMethods.cs:38:10:38:11 | Normal Exit | ExitMethods.cs:44:9:47:9 | After catch (...) {...} [no-match] | +| ExitMethods.cs:38:10:38:11 | Normal Exit | ExitMethods.cs:48:9:51:9 | After catch (...) {...} [match] | +| ExitMethods.cs:44:9:47:9 | After catch (...) {...} [match] | ExitMethods.cs:44:9:47:9 | After catch (...) {...} [match] | +| ExitMethods.cs:44:9:47:9 | After catch (...) {...} [no-match] | ExitMethods.cs:44:9:47:9 | After catch (...) {...} [no-match] | +| ExitMethods.cs:48:9:51:9 | After catch (...) {...} [match] | ExitMethods.cs:44:9:47:9 | After catch (...) {...} [no-match] | +| ExitMethods.cs:48:9:51:9 | After catch (...) {...} [match] | ExitMethods.cs:48:9:51:9 | After catch (...) {...} [match] | +| ExitMethods.cs:48:9:51:9 | After catch (...) {...} [no-match] | ExitMethods.cs:48:9:51:9 | After catch (...) {...} [no-match] | +| ExitMethods.cs:54:10:54:11 | Entry | ExitMethods.cs:54:10:54:11 | Entry | +| ExitMethods.cs:60:10:60:11 | Entry | ExitMethods.cs:60:10:60:11 | Entry | +| ExitMethods.cs:66:17:66:26 | Entry | ExitMethods.cs:66:17:66:26 | Entry | +| ExitMethods.cs:66:17:66:26 | Exit | ExitMethods.cs:66:17:66:26 | Exit | +| ExitMethods.cs:68:13:68:13 | After access to parameter b [false] | ExitMethods.cs:66:17:66:26 | Entry | +| ExitMethods.cs:68:13:68:13 | After access to parameter b [false] | ExitMethods.cs:68:13:68:13 | After access to parameter b [false] | +| ExitMethods.cs:68:13:68:13 | After access to parameter b [true] | ExitMethods.cs:68:13:68:13 | After access to parameter b [true] | +| ExitMethods.cs:72:17:72:27 | Entry | ExitMethods.cs:72:17:72:27 | Entry | +| ExitMethods.cs:72:17:72:27 | Exceptional Exit | ExitMethods.cs:72:17:72:27 | Exceptional Exit | +| ExitMethods.cs:74:13:74:13 | After access to parameter b [false] | ExitMethods.cs:74:13:74:13 | After access to parameter b [false] | +| ExitMethods.cs:74:13:74:13 | After access to parameter b [true] | ExitMethods.cs:74:13:74:13 | After access to parameter b [true] | +| ExitMethods.cs:80:17:80:28 | Entry | ExitMethods.cs:80:17:80:28 | Entry | +| ExitMethods.cs:85:17:85:28 | Entry | ExitMethods.cs:85:17:85:28 | Entry | +| ExitMethods.cs:87:10:87:13 | Entry | ExitMethods.cs:87:10:87:13 | Entry | +| ExitMethods.cs:92:10:92:18 | Entry | ExitMethods.cs:92:10:92:18 | Entry | +| ExitMethods.cs:92:10:92:18 | Exceptional Exit | ExitMethods.cs:92:10:92:18 | Exceptional Exit | +| ExitMethods.cs:92:10:92:18 | Exit | ExitMethods.cs:92:10:92:18 | Exit | +| ExitMethods.cs:94:9:102:9 | After try {...} ... | ExitMethods.cs:92:10:92:18 | Entry | +| ExitMethods.cs:94:9:102:9 | After try {...} ... | ExitMethods.cs:94:9:102:9 | After try {...} ... | +| ExitMethods.cs:105:10:105:24 | Entry | ExitMethods.cs:105:10:105:24 | Entry | +| ExitMethods.cs:110:13:110:21 | Entry | ExitMethods.cs:110:13:110:21 | Entry | +| ExitMethods.cs:110:13:110:21 | Exit | ExitMethods.cs:110:13:110:21 | Exit | +| ExitMethods.cs:112:16:112:25 | After ... != ... [false] | ExitMethods.cs:112:16:112:25 | After ... != ... [false] | +| ExitMethods.cs:112:16:112:25 | After ... != ... [true] | ExitMethods.cs:110:13:110:21 | Entry | +| ExitMethods.cs:112:16:112:25 | After ... != ... [true] | ExitMethods.cs:112:16:112:25 | After ... != ... [true] | +| ExitMethods.cs:115:16:115:34 | Entry | ExitMethods.cs:115:16:115:34 | Entry | +| ExitMethods.cs:117:16:117:30 | After call to method Contains [false] | ExitMethods.cs:117:16:117:30 | After call to method Contains [false] | +| ExitMethods.cs:117:16:117:30 | After call to method Contains [true] | ExitMethods.cs:117:16:117:30 | After call to method Contains [true] | +| ExitMethods.cs:117:16:117:38 | After ... ? ... : ... | ExitMethods.cs:115:16:115:34 | Entry | +| ExitMethods.cs:117:16:117:38 | After ... ? ... : ... | ExitMethods.cs:117:16:117:30 | After call to method Contains [false] | +| ExitMethods.cs:117:16:117:38 | After ... ? ... : ... | ExitMethods.cs:117:16:117:30 | After call to method Contains [true] | +| ExitMethods.cs:117:16:117:38 | After ... ? ... : ... | ExitMethods.cs:117:16:117:38 | After ... ? ... : ... | +| ExitMethods.cs:120:17:120:32 | Entry | ExitMethods.cs:120:17:120:32 | Entry | +| ExitMethods.cs:126:17:126:33 | Entry | ExitMethods.cs:126:17:126:33 | Entry | +| ExitMethods.cs:132:10:132:20 | Entry | ExitMethods.cs:132:10:132:20 | Entry | +| ExitMethods.cs:132:10:132:20 | Exceptional Exit | ExitMethods.cs:132:10:132:20 | Exceptional Exit | +| ExitMethods.cs:132:10:132:20 | Exit | ExitMethods.cs:132:10:132:20 | Exit | +| ExitMethods.cs:132:33:132:49 | After call to method IsFalse | ExitMethods.cs:132:10:132:20 | Entry | +| ExitMethods.cs:132:33:132:49 | After call to method IsFalse | ExitMethods.cs:132:33:132:49 | After call to method IsFalse | +| ExitMethods.cs:134:17:134:33 | Entry | ExitMethods.cs:134:17:134:33 | Entry | +| ExitMethods.cs:140:17:140:42 | Entry | ExitMethods.cs:140:17:140:42 | Entry | +| ExitMethods.cs:140:17:140:42 | Exceptional Exit | ExitMethods.cs:140:17:140:42 | Exceptional Exit | +| ExitMethods.cs:142:13:142:13 | After access to parameter b [false] | ExitMethods.cs:142:13:142:13 | After access to parameter b [false] | +| ExitMethods.cs:142:13:142:13 | After access to parameter b [true] | ExitMethods.cs:142:13:142:13 | After access to parameter b [true] | +| Extensions.cs:5:23:5:29 | Entry | Extensions.cs:5:23:5:29 | Entry | +| Extensions.cs:10:24:10:29 | Entry | Extensions.cs:10:24:10:29 | Entry | +| Extensions.cs:15:23:15:33 | Entry | Extensions.cs:15:23:15:33 | Entry | +| Extensions.cs:20:17:20:20 | Entry | Extensions.cs:20:17:20:20 | Entry | +| Finally.cs:3:14:3:20 | Entry | Finally.cs:3:14:3:20 | Entry | +| Finally.cs:7:10:7:11 | Entry | Finally.cs:7:10:7:11 | Entry | +| Finally.cs:7:10:7:11 | Exceptional Exit | Finally.cs:7:10:7:11 | Exceptional Exit | +| Finally.cs:7:10:7:11 | Exit | Finally.cs:7:10:7:11 | Exit | +| Finally.cs:9:9:16:9 | After try {...} ... | Finally.cs:7:10:7:11 | Entry | +| Finally.cs:9:9:16:9 | After try {...} ... | Finally.cs:9:9:16:9 | After try {...} ... | +| Finally.cs:9:9:16:9 | After try {...} ... | Finally.cs:11:13:11:37 | After call to method WriteLine | +| Finally.cs:9:9:16:9 | After try {...} ... | Finally.cs:14:9:16:9 | {...} | +| Finally.cs:11:13:11:37 | After call to method WriteLine | Finally.cs:11:13:11:37 | After call to method WriteLine | +| Finally.cs:14:9:16:9 | {...} | Finally.cs:7:10:7:11 | Entry | +| Finally.cs:14:9:16:9 | {...} | Finally.cs:11:13:11:37 | After call to method WriteLine | +| Finally.cs:14:9:16:9 | {...} | Finally.cs:14:9:16:9 | {...} | +| Finally.cs:19:10:19:11 | Entry | Finally.cs:19:10:19:11 | Entry | +| Finally.cs:19:10:19:11 | Exceptional Exit | Finally.cs:19:10:19:11 | Exceptional Exit | +| Finally.cs:19:10:19:11 | Exit | Finally.cs:19:10:19:11 | Exit | +| Finally.cs:19:10:19:11 | Normal Exit | Finally.cs:19:10:19:11 | Entry | +| Finally.cs:19:10:19:11 | Normal Exit | Finally.cs:19:10:19:11 | Normal Exit | +| Finally.cs:19:10:19:11 | Normal Exit | Finally.cs:21:9:51:9 | After try {...} ... | +| Finally.cs:19:10:19:11 | Normal Exit | Finally.cs:23:13:23:37 | After call to method WriteLine | +| Finally.cs:19:10:19:11 | Normal Exit | Finally.cs:26:9:29:9 | After catch (...) {...} [match] | +| Finally.cs:19:10:19:11 | Normal Exit | Finally.cs:26:9:29:9 | After catch (...) {...} [no-match] | +| Finally.cs:19:10:19:11 | Normal Exit | Finally.cs:26:9:29:9 | catch (...) {...} | +| Finally.cs:19:10:19:11 | Normal Exit | Finally.cs:30:9:40:9 | After catch (...) {...} [match] | +| Finally.cs:19:10:19:11 | Normal Exit | Finally.cs:30:9:40:9 | After catch (...) {...} [no-match] | +| Finally.cs:19:10:19:11 | Normal Exit | Finally.cs:41:9:43:9 | After catch (...) {...} [match] | +| Finally.cs:19:10:19:11 | Normal Exit | Finally.cs:41:9:43:9 | After catch (...) {...} [no-match] | +| Finally.cs:19:10:19:11 | Normal Exit | Finally.cs:49:9:51:9 | {...} | +| Finally.cs:21:9:51:9 | After try {...} ... | Finally.cs:21:9:51:9 | After try {...} ... | +| Finally.cs:23:13:23:37 | After call to method WriteLine | Finally.cs:23:13:23:37 | After call to method WriteLine | +| Finally.cs:26:9:29:9 | After catch (...) {...} [match] | Finally.cs:26:9:29:9 | After catch (...) {...} [match] | +| Finally.cs:26:9:29:9 | After catch (...) {...} [no-match] | Finally.cs:26:9:29:9 | After catch (...) {...} [no-match] | | Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:26:9:29:9 | catch (...) {...} | -| Finally.cs:26:38:26:39 | IOException ex | Finally.cs:26:38:26:39 | IOException ex | -| Finally.cs:27:9:29:9 | {...} | Finally.cs:26:38:26:39 | IOException ex | -| Finally.cs:27:9:29:9 | {...} | Finally.cs:27:9:29:9 | {...} | -| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:30:9:40:9 | catch (...) {...} | -| Finally.cs:30:41:30:42 | ArgumentException ex | Finally.cs:30:41:30:42 | ArgumentException ex | -| Finally.cs:34:27:34:32 | throw ...; | Finally.cs:30:41:30:42 | ArgumentException ex | -| Finally.cs:34:27:34:32 | throw ...; | Finally.cs:34:27:34:32 | throw ...; | -| Finally.cs:41:9:43:9 | catch (...) {...} | Finally.cs:41:9:43:9 | catch (...) {...} | -| Finally.cs:42:9:43:9 | {...} | Finally.cs:42:9:43:9 | {...} | -| Finally.cs:44:9:47:9 | catch {...} | Finally.cs:44:9:47:9 | catch {...} | -| Finally.cs:49:9:51:9 | {...} | Finally.cs:19:10:19:11 | enter M2 | -| Finally.cs:49:9:51:9 | {...} | Finally.cs:24:13:24:19 | return ...; | +| Finally.cs:30:9:40:9 | After catch (...) {...} [match] | Finally.cs:30:9:40:9 | After catch (...) {...} [match] | +| Finally.cs:30:9:40:9 | After catch (...) {...} [no-match] | Finally.cs:30:9:40:9 | After catch (...) {...} [no-match] | +| Finally.cs:41:9:43:9 | After catch (...) {...} [match] | Finally.cs:41:9:43:9 | After catch (...) {...} [match] | +| Finally.cs:41:9:43:9 | After catch (...) {...} [no-match] | Finally.cs:41:9:43:9 | After catch (...) {...} [no-match] | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:19:10:19:11 | Entry | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:23:13:23:37 | After call to method WriteLine | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:26:9:29:9 | After catch (...) {...} [match] | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:26:9:29:9 | After catch (...) {...} [no-match] | | Finally.cs:49:9:51:9 | {...} | Finally.cs:26:9:29:9 | catch (...) {...} | -| Finally.cs:49:9:51:9 | {...} | Finally.cs:26:38:26:39 | IOException ex | -| Finally.cs:49:9:51:9 | {...} | Finally.cs:27:9:29:9 | {...} | -| Finally.cs:49:9:51:9 | {...} | Finally.cs:30:9:40:9 | catch (...) {...} | -| Finally.cs:49:9:51:9 | {...} | Finally.cs:30:41:30:42 | ArgumentException ex | -| Finally.cs:49:9:51:9 | {...} | Finally.cs:34:27:34:32 | throw ...; | -| Finally.cs:49:9:51:9 | {...} | Finally.cs:41:9:43:9 | catch (...) {...} | -| Finally.cs:49:9:51:9 | {...} | Finally.cs:42:9:43:9 | {...} | -| Finally.cs:49:9:51:9 | {...} | Finally.cs:44:9:47:9 | catch {...} | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:30:9:40:9 | After catch (...) {...} [match] | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:30:9:40:9 | After catch (...) {...} [no-match] | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:41:9:43:9 | After catch (...) {...} [match] | +| Finally.cs:49:9:51:9 | {...} | Finally.cs:41:9:43:9 | After catch (...) {...} [no-match] | | Finally.cs:49:9:51:9 | {...} | Finally.cs:49:9:51:9 | {...} | -| Finally.cs:54:10:54:11 | enter M3 | Finally.cs:54:10:54:11 | enter M3 | -| Finally.cs:54:10:54:11 | exit M3 | Finally.cs:54:10:54:11 | exit M3 | -| Finally.cs:54:10:54:11 | exit M3 (abnormal) | Finally.cs:54:10:54:11 | exit M3 (abnormal) | -| Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:54:10:54:11 | enter M3 | -| Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:54:10:54:11 | exit M3 (normal) | -| Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:59:13:59:19 | return ...; | -| Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:61:9:64:9 | catch (...) {...} | -| Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:61:38:61:39 | IOException ex | -| Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:62:9:64:9 | {...} | -| Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:65:9:67:9 | catch (...) {...} | -| Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:65:26:65:26 | Exception e | -| Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:66:9:67:9 | {...} | -| Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:69:9:71:9 | {...} | -| Finally.cs:59:13:59:19 | return ...; | Finally.cs:59:13:59:19 | return ...; | +| Finally.cs:54:10:54:11 | Entry | Finally.cs:54:10:54:11 | Entry | +| Finally.cs:54:10:54:11 | Exceptional Exit | Finally.cs:54:10:54:11 | Exceptional Exit | +| Finally.cs:54:10:54:11 | Exit | Finally.cs:54:10:54:11 | Exit | +| Finally.cs:54:10:54:11 | Normal Exit | Finally.cs:54:10:54:11 | Entry | +| Finally.cs:54:10:54:11 | Normal Exit | Finally.cs:54:10:54:11 | Normal Exit | +| Finally.cs:54:10:54:11 | Normal Exit | Finally.cs:56:9:71:9 | After try {...} ... | +| Finally.cs:54:10:54:11 | Normal Exit | Finally.cs:58:13:58:37 | After call to method WriteLine | +| Finally.cs:54:10:54:11 | Normal Exit | Finally.cs:61:9:64:9 | After catch (...) {...} [match] | +| Finally.cs:54:10:54:11 | Normal Exit | Finally.cs:61:9:64:9 | After catch (...) {...} [no-match] | +| Finally.cs:54:10:54:11 | Normal Exit | Finally.cs:61:9:64:9 | catch (...) {...} | +| Finally.cs:54:10:54:11 | Normal Exit | Finally.cs:65:9:67:9 | After catch (...) {...} [match] | +| Finally.cs:54:10:54:11 | Normal Exit | Finally.cs:65:9:67:9 | After catch (...) {...} [no-match] | +| Finally.cs:54:10:54:11 | Normal Exit | Finally.cs:65:35:65:51 | After ... != ... [false] | +| Finally.cs:54:10:54:11 | Normal Exit | Finally.cs:65:35:65:51 | After ... != ... [true] | +| Finally.cs:54:10:54:11 | Normal Exit | Finally.cs:69:9:71:9 | {...} | +| Finally.cs:56:9:71:9 | After try {...} ... | Finally.cs:56:9:71:9 | After try {...} ... | +| Finally.cs:58:13:58:37 | After call to method WriteLine | Finally.cs:58:13:58:37 | After call to method WriteLine | +| Finally.cs:61:9:64:9 | After catch (...) {...} [match] | Finally.cs:61:9:64:9 | After catch (...) {...} [match] | +| Finally.cs:61:9:64:9 | After catch (...) {...} [no-match] | Finally.cs:61:9:64:9 | After catch (...) {...} [no-match] | | Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:61:9:64:9 | catch (...) {...} | -| Finally.cs:61:38:61:39 | IOException ex | Finally.cs:61:38:61:39 | IOException ex | -| Finally.cs:62:9:64:9 | {...} | Finally.cs:61:38:61:39 | IOException ex | -| Finally.cs:62:9:64:9 | {...} | Finally.cs:62:9:64:9 | {...} | -| Finally.cs:65:9:67:9 | catch (...) {...} | Finally.cs:65:9:67:9 | catch (...) {...} | -| Finally.cs:65:26:65:26 | Exception e | Finally.cs:65:26:65:26 | Exception e | -| Finally.cs:66:9:67:9 | {...} | Finally.cs:66:9:67:9 | {...} | -| Finally.cs:69:9:71:9 | {...} | Finally.cs:54:10:54:11 | enter M3 | -| Finally.cs:69:9:71:9 | {...} | Finally.cs:59:13:59:19 | return ...; | +| Finally.cs:65:9:67:9 | After catch (...) {...} [match] | Finally.cs:65:9:67:9 | After catch (...) {...} [match] | +| Finally.cs:65:9:67:9 | After catch (...) {...} [no-match] | Finally.cs:65:9:67:9 | After catch (...) {...} [no-match] | +| Finally.cs:65:9:67:9 | After catch (...) {...} [no-match] | Finally.cs:65:35:65:51 | After ... != ... [false] | +| Finally.cs:65:35:65:51 | After ... != ... [false] | Finally.cs:65:35:65:51 | After ... != ... [false] | +| Finally.cs:65:35:65:51 | After ... != ... [true] | Finally.cs:65:35:65:51 | After ... != ... [true] | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:54:10:54:11 | Entry | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:58:13:58:37 | After call to method WriteLine | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:61:9:64:9 | After catch (...) {...} [match] | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:61:9:64:9 | After catch (...) {...} [no-match] | | Finally.cs:69:9:71:9 | {...} | Finally.cs:61:9:64:9 | catch (...) {...} | -| Finally.cs:69:9:71:9 | {...} | Finally.cs:61:38:61:39 | IOException ex | -| Finally.cs:69:9:71:9 | {...} | Finally.cs:62:9:64:9 | {...} | -| Finally.cs:69:9:71:9 | {...} | Finally.cs:65:9:67:9 | catch (...) {...} | -| Finally.cs:69:9:71:9 | {...} | Finally.cs:65:26:65:26 | Exception e | -| Finally.cs:69:9:71:9 | {...} | Finally.cs:66:9:67:9 | {...} | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:65:9:67:9 | After catch (...) {...} [match] | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:65:9:67:9 | After catch (...) {...} [no-match] | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:65:35:65:51 | After ... != ... [false] | +| Finally.cs:69:9:71:9 | {...} | Finally.cs:65:35:65:51 | After ... != ... [true] | | Finally.cs:69:9:71:9 | {...} | Finally.cs:69:9:71:9 | {...} | -| Finally.cs:74:10:74:11 | enter M4 | Finally.cs:74:10:74:11 | enter M4 | -| Finally.cs:74:10:74:11 | exit M4 | Finally.cs:74:10:74:11 | exit M4 | -| Finally.cs:74:10:74:11 | exit M4 (abnormal) | Finally.cs:74:10:74:11 | exit M4 (abnormal) | -| Finally.cs:74:10:74:11 | exit M4 (normal) | Finally.cs:74:10:74:11 | enter M4 | -| Finally.cs:74:10:74:11 | exit M4 (normal) | Finally.cs:74:10:74:11 | exit M4 (normal) | -| Finally.cs:74:10:74:11 | exit M4 (normal) | Finally.cs:77:16:77:16 | access to local variable i | -| Finally.cs:74:10:74:11 | exit M4 (normal) | Finally.cs:78:9:100:9 | {...} | -| Finally.cs:74:10:74:11 | exit M4 (normal) | Finally.cs:82:21:82:27 | return ...; | -| Finally.cs:74:10:74:11 | exit M4 (normal) | Finally.cs:83:17:84:29 | if (...) ... | -| Finally.cs:74:10:74:11 | exit M4 (normal) | Finally.cs:84:21:84:29 | continue; | -| Finally.cs:74:10:74:11 | exit M4 (normal) | Finally.cs:85:17:86:26 | if (...) ... | -| Finally.cs:74:10:74:11 | exit M4 (normal) | Finally.cs:86:21:86:26 | break; | -| Finally.cs:74:10:74:11 | exit M4 (normal) | Finally.cs:89:13:99:13 | {...} | -| Finally.cs:74:10:74:11 | exit M4 (normal) | Finally.cs:93:25:93:46 | throw ...; | -| Finally.cs:74:10:74:11 | exit M4 (normal) | Finally.cs:93:31:93:45 | object creation of type Exception | -| Finally.cs:74:10:74:11 | exit M4 (normal) | Finally.cs:96:17:98:17 | {...} | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:74:10:74:11 | enter M4 | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:77:16:77:16 | access to local variable i | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:78:9:100:9 | {...} | -| Finally.cs:82:21:82:27 | return ...; | Finally.cs:82:21:82:27 | return ...; | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:83:17:84:29 | if (...) ... | -| Finally.cs:84:21:84:29 | continue; | Finally.cs:84:21:84:29 | continue; | -| Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:85:17:86:26 | if (...) ... | -| Finally.cs:86:21:86:26 | break; | Finally.cs:86:21:86:26 | break; | -| Finally.cs:89:13:99:13 | {...} | Finally.cs:78:9:100:9 | {...} | -| Finally.cs:89:13:99:13 | {...} | Finally.cs:82:21:82:27 | return ...; | -| Finally.cs:89:13:99:13 | {...} | Finally.cs:83:17:84:29 | if (...) ... | -| Finally.cs:89:13:99:13 | {...} | Finally.cs:84:21:84:29 | continue; | -| Finally.cs:89:13:99:13 | {...} | Finally.cs:85:17:86:26 | if (...) ... | -| Finally.cs:89:13:99:13 | {...} | Finally.cs:86:21:86:26 | break; | +| Finally.cs:74:10:74:11 | Entry | Finally.cs:74:10:74:11 | Entry | +| Finally.cs:74:10:74:11 | Exceptional Exit | Finally.cs:74:10:74:11 | Exceptional Exit | +| Finally.cs:74:10:74:11 | Exit | Finally.cs:74:10:74:11 | Exit | +| Finally.cs:74:10:74:11 | Normal Exit | Finally.cs:74:10:74:11 | Entry | +| Finally.cs:74:10:74:11 | Normal Exit | Finally.cs:74:10:74:11 | Normal Exit | +| Finally.cs:74:10:74:11 | Normal Exit | Finally.cs:77:9:100:9 | After while (...) ... | +| Finally.cs:74:10:74:11 | Normal Exit | Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | +| Finally.cs:74:10:74:11 | Normal Exit | Finally.cs:77:16:77:20 | After ... > ... [false] | +| Finally.cs:74:10:74:11 | Normal Exit | Finally.cs:77:16:77:20 | After ... > ... [true] | +| Finally.cs:74:10:74:11 | Normal Exit | Finally.cs:79:13:99:13 | After try {...} ... | +| Finally.cs:74:10:74:11 | Normal Exit | Finally.cs:81:21:81:26 | After ... == ... [false] | +| Finally.cs:74:10:74:11 | Normal Exit | Finally.cs:81:21:81:26 | After ... == ... [true] | +| Finally.cs:74:10:74:11 | Normal Exit | Finally.cs:83:21:83:26 | After ... == ... [false] | +| Finally.cs:74:10:74:11 | Normal Exit | Finally.cs:83:21:83:26 | After ... == ... [true] | +| Finally.cs:74:10:74:11 | Normal Exit | Finally.cs:85:21:85:26 | After ... == ... [false] | +| Finally.cs:74:10:74:11 | Normal Exit | Finally.cs:85:21:85:26 | After ... == ... [true] | +| Finally.cs:74:10:74:11 | Normal Exit | Finally.cs:89:13:99:13 | {...} | +| Finally.cs:74:10:74:11 | Normal Exit | Finally.cs:90:17:98:17 | After try {...} ... | +| Finally.cs:74:10:74:11 | Normal Exit | Finally.cs:92:25:92:30 | After ... == ... [false] | +| Finally.cs:74:10:74:11 | Normal Exit | Finally.cs:92:25:92:30 | After ... == ... [true] | +| Finally.cs:74:10:74:11 | Normal Exit | Finally.cs:93:31:93:45 | After object creation of type Exception | +| Finally.cs:74:10:74:11 | Normal Exit | Finally.cs:96:17:98:17 | {...} | +| Finally.cs:77:9:100:9 | After while (...) ... | Finally.cs:77:9:100:9 | After while (...) ... | +| Finally.cs:77:9:100:9 | After while (...) ... | Finally.cs:77:16:77:20 | After ... > ... [false] | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:74:10:74:11 | Entry | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:79:13:99:13 | After try {...} ... | +| Finally.cs:77:16:77:20 | After ... > ... [false] | Finally.cs:77:16:77:20 | After ... > ... [false] | +| Finally.cs:77:16:77:20 | After ... > ... [true] | Finally.cs:77:16:77:20 | After ... > ... [true] | +| Finally.cs:79:13:99:13 | After try {...} ... | Finally.cs:79:13:99:13 | After try {...} ... | +| Finally.cs:81:21:81:26 | After ... == ... [false] | Finally.cs:81:21:81:26 | After ... == ... [false] | +| Finally.cs:81:21:81:26 | After ... == ... [true] | Finally.cs:81:21:81:26 | After ... == ... [true] | +| Finally.cs:83:21:83:26 | After ... == ... [false] | Finally.cs:83:21:83:26 | After ... == ... [false] | +| Finally.cs:83:21:83:26 | After ... == ... [true] | Finally.cs:83:21:83:26 | After ... == ... [true] | +| Finally.cs:85:21:85:26 | After ... == ... [false] | Finally.cs:85:21:85:26 | After ... == ... [false] | +| Finally.cs:85:21:85:26 | After ... == ... [true] | Finally.cs:85:21:85:26 | After ... == ... [true] | +| Finally.cs:89:13:99:13 | {...} | Finally.cs:77:16:77:20 | After ... > ... [true] | +| Finally.cs:89:13:99:13 | {...} | Finally.cs:81:21:81:26 | After ... == ... [false] | +| Finally.cs:89:13:99:13 | {...} | Finally.cs:81:21:81:26 | After ... == ... [true] | +| Finally.cs:89:13:99:13 | {...} | Finally.cs:83:21:83:26 | After ... == ... [false] | +| Finally.cs:89:13:99:13 | {...} | Finally.cs:83:21:83:26 | After ... == ... [true] | +| Finally.cs:89:13:99:13 | {...} | Finally.cs:85:21:85:26 | After ... == ... [false] | +| Finally.cs:89:13:99:13 | {...} | Finally.cs:85:21:85:26 | After ... == ... [true] | | Finally.cs:89:13:99:13 | {...} | Finally.cs:89:13:99:13 | {...} | -| Finally.cs:93:25:93:46 | throw ...; | Finally.cs:93:25:93:46 | throw ...; | -| Finally.cs:93:31:93:45 | object creation of type Exception | Finally.cs:93:31:93:45 | object creation of type Exception | -| Finally.cs:96:17:98:17 | {...} | Finally.cs:78:9:100:9 | {...} | -| Finally.cs:96:17:98:17 | {...} | Finally.cs:82:21:82:27 | return ...; | -| Finally.cs:96:17:98:17 | {...} | Finally.cs:83:17:84:29 | if (...) ... | -| Finally.cs:96:17:98:17 | {...} | Finally.cs:84:21:84:29 | continue; | -| Finally.cs:96:17:98:17 | {...} | Finally.cs:85:17:86:26 | if (...) ... | -| Finally.cs:96:17:98:17 | {...} | Finally.cs:86:21:86:26 | break; | +| Finally.cs:90:17:98:17 | After try {...} ... | Finally.cs:77:16:77:20 | After ... > ... [true] | +| Finally.cs:90:17:98:17 | After try {...} ... | Finally.cs:81:21:81:26 | After ... == ... [false] | +| Finally.cs:90:17:98:17 | After try {...} ... | Finally.cs:81:21:81:26 | After ... == ... [true] | +| Finally.cs:90:17:98:17 | After try {...} ... | Finally.cs:83:21:83:26 | After ... == ... [false] | +| Finally.cs:90:17:98:17 | After try {...} ... | Finally.cs:83:21:83:26 | After ... == ... [true] | +| Finally.cs:90:17:98:17 | After try {...} ... | Finally.cs:85:21:85:26 | After ... == ... [false] | +| Finally.cs:90:17:98:17 | After try {...} ... | Finally.cs:85:21:85:26 | After ... == ... [true] | +| Finally.cs:90:17:98:17 | After try {...} ... | Finally.cs:89:13:99:13 | {...} | +| Finally.cs:90:17:98:17 | After try {...} ... | Finally.cs:90:17:98:17 | After try {...} ... | +| Finally.cs:90:17:98:17 | After try {...} ... | Finally.cs:92:25:92:30 | After ... == ... [false] | +| Finally.cs:90:17:98:17 | After try {...} ... | Finally.cs:92:25:92:30 | After ... == ... [true] | +| Finally.cs:90:17:98:17 | After try {...} ... | Finally.cs:93:31:93:45 | After object creation of type Exception | +| Finally.cs:90:17:98:17 | After try {...} ... | Finally.cs:96:17:98:17 | {...} | +| Finally.cs:92:25:92:30 | After ... == ... [false] | Finally.cs:92:25:92:30 | After ... == ... [false] | +| Finally.cs:92:25:92:30 | After ... == ... [true] | Finally.cs:92:25:92:30 | After ... == ... [true] | +| Finally.cs:93:31:93:45 | After object creation of type Exception | Finally.cs:93:31:93:45 | After object creation of type Exception | +| Finally.cs:96:17:98:17 | {...} | Finally.cs:77:16:77:20 | After ... > ... [true] | +| Finally.cs:96:17:98:17 | {...} | Finally.cs:81:21:81:26 | After ... == ... [false] | +| Finally.cs:96:17:98:17 | {...} | Finally.cs:81:21:81:26 | After ... == ... [true] | +| Finally.cs:96:17:98:17 | {...} | Finally.cs:83:21:83:26 | After ... == ... [false] | +| Finally.cs:96:17:98:17 | {...} | Finally.cs:83:21:83:26 | After ... == ... [true] | +| Finally.cs:96:17:98:17 | {...} | Finally.cs:85:21:85:26 | After ... == ... [false] | +| Finally.cs:96:17:98:17 | {...} | Finally.cs:85:21:85:26 | After ... == ... [true] | | Finally.cs:96:17:98:17 | {...} | Finally.cs:89:13:99:13 | {...} | -| Finally.cs:96:17:98:17 | {...} | Finally.cs:93:25:93:46 | throw ...; | -| Finally.cs:96:17:98:17 | {...} | Finally.cs:93:31:93:45 | object creation of type Exception | +| Finally.cs:96:17:98:17 | {...} | Finally.cs:92:25:92:30 | After ... == ... [false] | +| Finally.cs:96:17:98:17 | {...} | Finally.cs:92:25:92:30 | After ... == ... [true] | +| Finally.cs:96:17:98:17 | {...} | Finally.cs:93:31:93:45 | After object creation of type Exception | | Finally.cs:96:17:98:17 | {...} | Finally.cs:96:17:98:17 | {...} | -| Finally.cs:103:10:103:11 | enter M5 | Finally.cs:103:10:103:11 | enter M5 | -| Finally.cs:103:10:103:11 | exit M5 | Finally.cs:103:10:103:11 | exit M5 | -| Finally.cs:103:10:103:11 | exit M5 (abnormal) | Finally.cs:103:10:103:11 | exit M5 (abnormal) | -| Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:103:10:103:11 | enter M5 | -| Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:103:10:103:11 | exit M5 (normal) | -| Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:107:17:107:28 | access to property Length | -| Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:107:33:107:33 | 0 | -| Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:108:17:108:23 | return ...; | -| Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:109:13:110:49 | if (...) ... | -| Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:109:17:109:28 | access to property Length | -| Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:109:33:109:33 | 1 | -| Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:110:17:110:49 | throw ...; | -| Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | -| Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:113:9:118:9 | {...} | -| Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:114:17:114:36 | [false] !... | -| Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:114:17:114:36 | [true] !... | -| Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:115:17:115:41 | ...; | -| Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:116:13:117:37 | if (...) ... | -| Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:117:17:117:37 | ...; | -| Finally.cs:107:17:107:28 | access to property Length | Finally.cs:107:17:107:28 | access to property Length | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:107:33:107:33 | 0 | -| Finally.cs:108:17:108:23 | return ...; | Finally.cs:108:17:108:23 | return ...; | -| Finally.cs:109:13:110:49 | if (...) ... | Finally.cs:109:13:110:49 | if (...) ... | -| Finally.cs:109:17:109:28 | access to property Length | Finally.cs:109:17:109:28 | access to property Length | -| Finally.cs:109:33:109:33 | 1 | Finally.cs:109:33:109:33 | 1 | -| Finally.cs:110:17:110:49 | throw ...; | Finally.cs:110:17:110:49 | throw ...; | -| Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | -| Finally.cs:113:9:118:9 | {...} | Finally.cs:103:10:103:11 | enter M5 | -| Finally.cs:113:9:118:9 | {...} | Finally.cs:107:17:107:28 | access to property Length | -| Finally.cs:113:9:118:9 | {...} | Finally.cs:107:33:107:33 | 0 | -| Finally.cs:113:9:118:9 | {...} | Finally.cs:108:17:108:23 | return ...; | -| Finally.cs:113:9:118:9 | {...} | Finally.cs:109:13:110:49 | if (...) ... | -| Finally.cs:113:9:118:9 | {...} | Finally.cs:109:17:109:28 | access to property Length | -| Finally.cs:113:9:118:9 | {...} | Finally.cs:109:33:109:33 | 1 | -| Finally.cs:113:9:118:9 | {...} | Finally.cs:110:17:110:49 | throw ...; | -| Finally.cs:113:9:118:9 | {...} | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | +| Finally.cs:103:10:103:11 | Entry | Finally.cs:103:10:103:11 | Entry | +| Finally.cs:103:10:103:11 | Exceptional Exit | Finally.cs:103:10:103:11 | Exceptional Exit | +| Finally.cs:103:10:103:11 | Exit | Finally.cs:103:10:103:11 | Exit | +| Finally.cs:103:10:103:11 | Normal Exit | Finally.cs:103:10:103:11 | Entry | +| Finally.cs:103:10:103:11 | Normal Exit | Finally.cs:103:10:103:11 | Normal Exit | +| Finally.cs:103:10:103:11 | Normal Exit | Finally.cs:105:9:118:9 | After try {...} ... | +| Finally.cs:103:10:103:11 | Normal Exit | Finally.cs:107:17:107:21 | After access to field Field | +| Finally.cs:103:10:103:11 | Normal Exit | Finally.cs:107:17:107:28 | After access to property Length | +| Finally.cs:103:10:103:11 | Normal Exit | Finally.cs:107:17:107:33 | After ... == ... [false] | +| Finally.cs:103:10:103:11 | Normal Exit | Finally.cs:107:17:107:33 | After ... == ... [true] | +| Finally.cs:103:10:103:11 | Normal Exit | Finally.cs:109:17:109:21 | After access to field Field | +| Finally.cs:103:10:103:11 | Normal Exit | Finally.cs:109:17:109:28 | After access to property Length | +| Finally.cs:103:10:103:11 | Normal Exit | Finally.cs:109:17:109:33 | After ... == ... [false] | +| Finally.cs:103:10:103:11 | Normal Exit | Finally.cs:109:17:109:33 | After ... == ... [true] | +| Finally.cs:103:10:103:11 | Normal Exit | Finally.cs:110:23:110:48 | After object creation of type OutOfMemoryException | +| Finally.cs:103:10:103:11 | Normal Exit | Finally.cs:113:9:118:9 | {...} | +| Finally.cs:103:10:103:11 | Normal Exit | Finally.cs:114:13:115:41 | After if (...) ... | +| Finally.cs:103:10:103:11 | Normal Exit | Finally.cs:114:19:114:35 | After ... == ... [false] | +| Finally.cs:103:10:103:11 | Normal Exit | Finally.cs:114:19:114:35 | After ... == ... [true] | +| Finally.cs:103:10:103:11 | Normal Exit | Finally.cs:116:13:117:37 | After if (...) ... | +| Finally.cs:103:10:103:11 | Normal Exit | Finally.cs:116:17:116:32 | After ... > ... [false] | +| Finally.cs:103:10:103:11 | Normal Exit | Finally.cs:116:17:116:32 | After ... > ... [true] | +| Finally.cs:105:9:118:9 | After try {...} ... | Finally.cs:105:9:118:9 | After try {...} ... | +| Finally.cs:107:17:107:21 | After access to field Field | Finally.cs:107:17:107:21 | After access to field Field | +| Finally.cs:107:17:107:28 | After access to property Length | Finally.cs:107:17:107:28 | After access to property Length | +| Finally.cs:107:17:107:33 | After ... == ... [false] | Finally.cs:107:17:107:33 | After ... == ... [false] | +| Finally.cs:107:17:107:33 | After ... == ... [true] | Finally.cs:107:17:107:33 | After ... == ... [true] | +| Finally.cs:109:17:109:21 | After access to field Field | Finally.cs:109:17:109:21 | After access to field Field | +| Finally.cs:109:17:109:28 | After access to property Length | Finally.cs:109:17:109:28 | After access to property Length | +| Finally.cs:109:17:109:33 | After ... == ... [false] | Finally.cs:109:17:109:33 | After ... == ... [false] | +| Finally.cs:109:17:109:33 | After ... == ... [true] | Finally.cs:109:17:109:33 | After ... == ... [true] | +| Finally.cs:110:23:110:48 | After object creation of type OutOfMemoryException | Finally.cs:110:23:110:48 | After object creation of type OutOfMemoryException | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:103:10:103:11 | Entry | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:107:17:107:21 | After access to field Field | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:107:17:107:28 | After access to property Length | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:107:17:107:33 | After ... == ... [false] | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:107:17:107:33 | After ... == ... [true] | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:109:17:109:21 | After access to field Field | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:109:17:109:28 | After access to property Length | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:109:17:109:33 | After ... == ... [false] | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:109:17:109:33 | After ... == ... [true] | +| Finally.cs:113:9:118:9 | {...} | Finally.cs:110:23:110:48 | After object creation of type OutOfMemoryException | | Finally.cs:113:9:118:9 | {...} | Finally.cs:113:9:118:9 | {...} | -| Finally.cs:114:17:114:36 | [false] !... | Finally.cs:114:17:114:36 | [false] !... | -| Finally.cs:114:17:114:36 | [true] !... | Finally.cs:114:17:114:36 | [true] !... | -| Finally.cs:115:17:115:41 | ...; | Finally.cs:114:17:114:36 | [true] !... | -| Finally.cs:115:17:115:41 | ...; | Finally.cs:115:17:115:41 | ...; | -| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:103:10:103:11 | enter M5 | -| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:107:17:107:28 | access to property Length | -| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:107:33:107:33 | 0 | -| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:108:17:108:23 | return ...; | -| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:109:13:110:49 | if (...) ... | -| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:109:17:109:28 | access to property Length | -| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:109:33:109:33 | 1 | -| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:110:17:110:49 | throw ...; | -| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | -| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:113:9:118:9 | {...} | -| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:114:17:114:36 | [false] !... | -| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:114:17:114:36 | [true] !... | -| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:115:17:115:41 | ...; | -| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:116:13:117:37 | if (...) ... | -| Finally.cs:117:17:117:37 | ...; | Finally.cs:117:17:117:37 | ...; | -| Finally.cs:121:10:121:11 | enter M6 | Finally.cs:121:10:121:11 | enter M6 | -| Finally.cs:133:10:133:11 | enter M7 | Finally.cs:133:10:133:11 | enter M7 | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:147:10:147:11 | enter M8 | -| Finally.cs:147:10:147:11 | exit M8 | Finally.cs:147:10:147:11 | exit M8 | -| Finally.cs:147:10:147:11 | exit M8 (abnormal) | Finally.cs:147:10:147:11 | exit M8 (abnormal) | -| Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:147:10:147:11 | enter M8 | -| Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:147:10:147:11 | exit M8 (normal) | -| Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:152:17:152:50 | throw ...; | -| Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | -| Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:155:9:169:9 | {...} | -| Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:158:36:158:36 | 1 | -| Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:159:21:159:45 | throw ...; | -| Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:159:41:159:43 | "1" | -| Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:161:13:164:13 | catch (...) {...} | -| Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:161:30:161:30 | Exception e | -| Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:162:13:164:13 | {...} | -| Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:165:13:168:13 | catch {...} | -| Finally.cs:152:17:152:50 | throw ...; | Finally.cs:152:17:152:50 | throw ...; | -| Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | -| Finally.cs:155:9:169:9 | {...} | Finally.cs:147:10:147:11 | enter M8 | -| Finally.cs:155:9:169:9 | {...} | Finally.cs:152:17:152:50 | throw ...; | -| Finally.cs:155:9:169:9 | {...} | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | +| Finally.cs:114:13:115:41 | After if (...) ... | Finally.cs:103:10:103:11 | Entry | +| Finally.cs:114:13:115:41 | After if (...) ... | Finally.cs:107:17:107:21 | After access to field Field | +| Finally.cs:114:13:115:41 | After if (...) ... | Finally.cs:107:17:107:28 | After access to property Length | +| Finally.cs:114:13:115:41 | After if (...) ... | Finally.cs:107:17:107:33 | After ... == ... [false] | +| Finally.cs:114:13:115:41 | After if (...) ... | Finally.cs:107:17:107:33 | After ... == ... [true] | +| Finally.cs:114:13:115:41 | After if (...) ... | Finally.cs:109:17:109:21 | After access to field Field | +| Finally.cs:114:13:115:41 | After if (...) ... | Finally.cs:109:17:109:28 | After access to property Length | +| Finally.cs:114:13:115:41 | After if (...) ... | Finally.cs:109:17:109:33 | After ... == ... [false] | +| Finally.cs:114:13:115:41 | After if (...) ... | Finally.cs:109:17:109:33 | After ... == ... [true] | +| Finally.cs:114:13:115:41 | After if (...) ... | Finally.cs:110:23:110:48 | After object creation of type OutOfMemoryException | +| Finally.cs:114:13:115:41 | After if (...) ... | Finally.cs:113:9:118:9 | {...} | +| Finally.cs:114:13:115:41 | After if (...) ... | Finally.cs:114:13:115:41 | After if (...) ... | +| Finally.cs:114:13:115:41 | After if (...) ... | Finally.cs:114:19:114:35 | After ... == ... [false] | +| Finally.cs:114:13:115:41 | After if (...) ... | Finally.cs:114:19:114:35 | After ... == ... [true] | +| Finally.cs:114:19:114:35 | After ... == ... [false] | Finally.cs:114:19:114:35 | After ... == ... [false] | +| Finally.cs:114:19:114:35 | After ... == ... [true] | Finally.cs:114:19:114:35 | After ... == ... [true] | +| Finally.cs:116:13:117:37 | After if (...) ... | Finally.cs:103:10:103:11 | Entry | +| Finally.cs:116:13:117:37 | After if (...) ... | Finally.cs:107:17:107:21 | After access to field Field | +| Finally.cs:116:13:117:37 | After if (...) ... | Finally.cs:107:17:107:28 | After access to property Length | +| Finally.cs:116:13:117:37 | After if (...) ... | Finally.cs:107:17:107:33 | After ... == ... [false] | +| Finally.cs:116:13:117:37 | After if (...) ... | Finally.cs:107:17:107:33 | After ... == ... [true] | +| Finally.cs:116:13:117:37 | After if (...) ... | Finally.cs:109:17:109:21 | After access to field Field | +| Finally.cs:116:13:117:37 | After if (...) ... | Finally.cs:109:17:109:28 | After access to property Length | +| Finally.cs:116:13:117:37 | After if (...) ... | Finally.cs:109:17:109:33 | After ... == ... [false] | +| Finally.cs:116:13:117:37 | After if (...) ... | Finally.cs:109:17:109:33 | After ... == ... [true] | +| Finally.cs:116:13:117:37 | After if (...) ... | Finally.cs:110:23:110:48 | After object creation of type OutOfMemoryException | +| Finally.cs:116:13:117:37 | After if (...) ... | Finally.cs:113:9:118:9 | {...} | +| Finally.cs:116:13:117:37 | After if (...) ... | Finally.cs:114:13:115:41 | After if (...) ... | +| Finally.cs:116:13:117:37 | After if (...) ... | Finally.cs:114:19:114:35 | After ... == ... [false] | +| Finally.cs:116:13:117:37 | After if (...) ... | Finally.cs:114:19:114:35 | After ... == ... [true] | +| Finally.cs:116:13:117:37 | After if (...) ... | Finally.cs:116:13:117:37 | After if (...) ... | +| Finally.cs:116:13:117:37 | After if (...) ... | Finally.cs:116:17:116:32 | After ... > ... [false] | +| Finally.cs:116:13:117:37 | After if (...) ... | Finally.cs:116:17:116:32 | After ... > ... [true] | +| Finally.cs:116:17:116:32 | After ... > ... [false] | Finally.cs:116:17:116:32 | After ... > ... [false] | +| Finally.cs:116:17:116:32 | After ... > ... [true] | Finally.cs:116:17:116:32 | After ... > ... [true] | +| Finally.cs:121:10:121:11 | Entry | Finally.cs:121:10:121:11 | Entry | +| Finally.cs:133:10:133:11 | Entry | Finally.cs:133:10:133:11 | Entry | +| Finally.cs:137:13:137:36 | After call to method WriteLine | Finally.cs:137:13:137:36 | After call to method WriteLine | +| Finally.cs:140:9:143:9 | {...} | Finally.cs:140:9:143:9 | {...} | +| Finally.cs:147:10:147:11 | Entry | Finally.cs:147:10:147:11 | Entry | +| Finally.cs:147:10:147:11 | Exceptional Exit | Finally.cs:147:10:147:11 | Exceptional Exit | +| Finally.cs:147:10:147:11 | Exit | Finally.cs:147:10:147:11 | Exit | +| Finally.cs:149:9:169:9 | After try {...} ... | Finally.cs:147:10:147:11 | Entry | +| Finally.cs:149:9:169:9 | After try {...} ... | Finally.cs:149:9:169:9 | After try {...} ... | +| Finally.cs:149:9:169:9 | After try {...} ... | Finally.cs:151:17:151:28 | After ... == ... [false] | +| Finally.cs:149:9:169:9 | After try {...} ... | Finally.cs:151:17:151:28 | After ... == ... [true] | +| Finally.cs:149:9:169:9 | After try {...} ... | Finally.cs:152:23:152:49 | After object creation of type ArgumentNullException | +| Finally.cs:149:9:169:9 | After try {...} ... | Finally.cs:155:9:169:9 | {...} | +| Finally.cs:149:9:169:9 | After try {...} ... | Finally.cs:156:13:168:13 | After try {...} ... | +| Finally.cs:149:9:169:9 | After try {...} ... | Finally.cs:158:21:158:31 | After access to property Length | +| Finally.cs:149:9:169:9 | After try {...} ... | Finally.cs:158:21:158:36 | After ... == ... [false] | +| Finally.cs:149:9:169:9 | After try {...} ... | Finally.cs:158:21:158:36 | After ... == ... [true] | +| Finally.cs:149:9:169:9 | After try {...} ... | Finally.cs:159:27:159:44 | After object creation of type Exception | +| Finally.cs:149:9:169:9 | After try {...} ... | Finally.cs:161:13:164:13 | After catch (...) {...} [match] | +| Finally.cs:149:9:169:9 | After try {...} ... | Finally.cs:161:13:164:13 | After catch (...) {...} [no-match] | +| Finally.cs:149:9:169:9 | After try {...} ... | Finally.cs:161:13:164:13 | catch (...) {...} | +| Finally.cs:149:9:169:9 | After try {...} ... | Finally.cs:161:39:161:54 | After ... == ... [false] | +| Finally.cs:149:9:169:9 | After try {...} ... | Finally.cs:161:39:161:54 | After ... == ... [true] | +| Finally.cs:151:17:151:28 | After ... == ... [false] | Finally.cs:151:17:151:28 | After ... == ... [false] | +| Finally.cs:151:17:151:28 | After ... == ... [true] | Finally.cs:151:17:151:28 | After ... == ... [true] | +| Finally.cs:152:23:152:49 | After object creation of type ArgumentNullException | Finally.cs:152:23:152:49 | After object creation of type ArgumentNullException | +| Finally.cs:155:9:169:9 | {...} | Finally.cs:147:10:147:11 | Entry | +| Finally.cs:155:9:169:9 | {...} | Finally.cs:151:17:151:28 | After ... == ... [false] | +| Finally.cs:155:9:169:9 | {...} | Finally.cs:151:17:151:28 | After ... == ... [true] | +| Finally.cs:155:9:169:9 | {...} | Finally.cs:152:23:152:49 | After object creation of type ArgumentNullException | | Finally.cs:155:9:169:9 | {...} | Finally.cs:155:9:169:9 | {...} | -| Finally.cs:158:36:158:36 | 1 | Finally.cs:158:36:158:36 | 1 | -| Finally.cs:159:21:159:45 | throw ...; | Finally.cs:159:21:159:45 | throw ...; | -| Finally.cs:159:41:159:43 | "1" | Finally.cs:159:41:159:43 | "1" | -| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:159:21:159:45 | throw ...; | -| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:159:41:159:43 | "1" | +| Finally.cs:156:13:168:13 | After try {...} ... | Finally.cs:147:10:147:11 | Entry | +| Finally.cs:156:13:168:13 | After try {...} ... | Finally.cs:151:17:151:28 | After ... == ... [false] | +| Finally.cs:156:13:168:13 | After try {...} ... | Finally.cs:151:17:151:28 | After ... == ... [true] | +| Finally.cs:156:13:168:13 | After try {...} ... | Finally.cs:152:23:152:49 | After object creation of type ArgumentNullException | +| Finally.cs:156:13:168:13 | After try {...} ... | Finally.cs:155:9:169:9 | {...} | +| Finally.cs:156:13:168:13 | After try {...} ... | Finally.cs:156:13:168:13 | After try {...} ... | +| Finally.cs:156:13:168:13 | After try {...} ... | Finally.cs:158:21:158:31 | After access to property Length | +| Finally.cs:156:13:168:13 | After try {...} ... | Finally.cs:158:21:158:36 | After ... == ... [false] | +| Finally.cs:156:13:168:13 | After try {...} ... | Finally.cs:158:21:158:36 | After ... == ... [true] | +| Finally.cs:156:13:168:13 | After try {...} ... | Finally.cs:159:27:159:44 | After object creation of type Exception | +| Finally.cs:156:13:168:13 | After try {...} ... | Finally.cs:161:13:164:13 | After catch (...) {...} [match] | +| Finally.cs:156:13:168:13 | After try {...} ... | Finally.cs:161:13:164:13 | After catch (...) {...} [no-match] | +| Finally.cs:156:13:168:13 | After try {...} ... | Finally.cs:161:13:164:13 | catch (...) {...} | +| Finally.cs:156:13:168:13 | After try {...} ... | Finally.cs:161:39:161:54 | After ... == ... [false] | +| Finally.cs:156:13:168:13 | After try {...} ... | Finally.cs:161:39:161:54 | After ... == ... [true] | +| Finally.cs:158:21:158:31 | After access to property Length | Finally.cs:158:21:158:31 | After access to property Length | +| Finally.cs:158:21:158:36 | After ... == ... [false] | Finally.cs:158:21:158:36 | After ... == ... [false] | +| Finally.cs:158:21:158:36 | After ... == ... [true] | Finally.cs:158:21:158:36 | After ... == ... [true] | +| Finally.cs:159:27:159:44 | After object creation of type Exception | Finally.cs:159:27:159:44 | After object creation of type Exception | +| Finally.cs:161:13:164:13 | After catch (...) {...} [match] | Finally.cs:161:13:164:13 | After catch (...) {...} [match] | +| Finally.cs:161:13:164:13 | After catch (...) {...} [no-match] | Finally.cs:161:13:164:13 | After catch (...) {...} [no-match] | +| Finally.cs:161:13:164:13 | After catch (...) {...} [no-match] | Finally.cs:161:39:161:54 | After ... == ... [false] | +| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:158:21:158:36 | After ... == ... [true] | +| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:159:27:159:44 | After object creation of type Exception | | Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:161:13:164:13 | catch (...) {...} | -| Finally.cs:161:30:161:30 | Exception e | Finally.cs:161:30:161:30 | Exception e | -| Finally.cs:162:13:164:13 | {...} | Finally.cs:162:13:164:13 | {...} | -| Finally.cs:165:13:168:13 | catch {...} | Finally.cs:165:13:168:13 | catch {...} | -| Finally.cs:172:11:172:20 | enter ExceptionA | Finally.cs:172:11:172:20 | enter ExceptionA | -| Finally.cs:173:11:173:20 | enter ExceptionB | Finally.cs:173:11:173:20 | enter ExceptionB | -| Finally.cs:174:11:174:20 | enter ExceptionC | Finally.cs:174:11:174:20 | enter ExceptionC | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:176:10:176:11 | enter M9 | -| Finally.cs:176:10:176:11 | exit M9 | Finally.cs:176:10:176:11 | exit M9 | -| Finally.cs:176:10:176:11 | exit M9 (abnormal) | Finally.cs:176:10:176:11 | exit M9 (abnormal) | -| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:176:10:176:11 | enter M9 | -| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:176:10:176:11 | exit M9 (normal) | -| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:180:21:180:43 | throw ...; | -| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:180:27:180:42 | object creation of type ExceptionA | -| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:183:9:192:9 | {...} | -| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:186:25:186:47 | throw ...; | -| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:186:31:186:46 | object creation of type ExceptionB | -| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:188:13:191:13 | catch (...) {...} | -| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:188:38:188:39 | access to parameter b2 | -| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:189:13:191:13 | {...} | -| Finally.cs:180:21:180:43 | throw ...; | Finally.cs:180:21:180:43 | throw ...; | -| Finally.cs:180:27:180:42 | object creation of type ExceptionA | Finally.cs:180:27:180:42 | object creation of type ExceptionA | -| Finally.cs:183:9:192:9 | {...} | Finally.cs:176:10:176:11 | enter M9 | -| Finally.cs:183:9:192:9 | {...} | Finally.cs:180:21:180:43 | throw ...; | -| Finally.cs:183:9:192:9 | {...} | Finally.cs:180:27:180:42 | object creation of type ExceptionA | +| Finally.cs:161:39:161:54 | After ... == ... [false] | Finally.cs:161:39:161:54 | After ... == ... [false] | +| Finally.cs:161:39:161:54 | After ... == ... [true] | Finally.cs:161:39:161:54 | After ... == ... [true] | +| Finally.cs:172:11:172:20 | Entry | Finally.cs:172:11:172:20 | Entry | +| Finally.cs:173:11:173:20 | Entry | Finally.cs:173:11:173:20 | Entry | +| Finally.cs:174:11:174:20 | Entry | Finally.cs:174:11:174:20 | Entry | +| Finally.cs:176:10:176:11 | Entry | Finally.cs:176:10:176:11 | Entry | +| Finally.cs:176:10:176:11 | Exceptional Exit | Finally.cs:176:10:176:11 | Exceptional Exit | +| Finally.cs:176:10:176:11 | Exit | Finally.cs:176:10:176:11 | Exit | +| Finally.cs:178:9:192:9 | After try {...} ... | Finally.cs:176:10:176:11 | Entry | +| Finally.cs:178:9:192:9 | After try {...} ... | Finally.cs:178:9:192:9 | After try {...} ... | +| Finally.cs:178:9:192:9 | After try {...} ... | Finally.cs:180:17:180:18 | After access to parameter b1 [false] | +| Finally.cs:178:9:192:9 | After try {...} ... | Finally.cs:180:17:180:18 | After access to parameter b1 [true] | +| Finally.cs:178:9:192:9 | After try {...} ... | Finally.cs:180:27:180:42 | After object creation of type ExceptionA | +| Finally.cs:178:9:192:9 | After try {...} ... | Finally.cs:183:9:192:9 | {...} | +| Finally.cs:178:9:192:9 | After try {...} ... | Finally.cs:184:13:191:13 | After try {...} ... | +| Finally.cs:178:9:192:9 | After try {...} ... | Finally.cs:186:21:186:22 | After access to parameter b2 [false] | +| Finally.cs:178:9:192:9 | After try {...} ... | Finally.cs:186:21:186:22 | After access to parameter b2 [true] | +| Finally.cs:178:9:192:9 | After try {...} ... | Finally.cs:186:31:186:46 | After object creation of type ExceptionB | +| Finally.cs:178:9:192:9 | After try {...} ... | Finally.cs:188:13:191:13 | After catch (...) {...} [match] | +| Finally.cs:178:9:192:9 | After try {...} ... | Finally.cs:188:13:191:13 | catch (...) {...} | +| Finally.cs:178:9:192:9 | After try {...} ... | Finally.cs:188:38:188:39 | After access to parameter b2 [true] | +| Finally.cs:178:9:192:9 | After try {...} ... | Finally.cs:190:21:190:22 | After access to parameter b1 [false] | +| Finally.cs:180:17:180:18 | After access to parameter b1 [false] | Finally.cs:180:17:180:18 | After access to parameter b1 [false] | +| Finally.cs:180:17:180:18 | After access to parameter b1 [true] | Finally.cs:180:17:180:18 | After access to parameter b1 [true] | +| Finally.cs:180:27:180:42 | After object creation of type ExceptionA | Finally.cs:180:27:180:42 | After object creation of type ExceptionA | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:176:10:176:11 | Entry | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:180:17:180:18 | After access to parameter b1 [false] | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:180:17:180:18 | After access to parameter b1 [true] | +| Finally.cs:183:9:192:9 | {...} | Finally.cs:180:27:180:42 | After object creation of type ExceptionA | | Finally.cs:183:9:192:9 | {...} | Finally.cs:183:9:192:9 | {...} | -| Finally.cs:186:25:186:47 | throw ...; | Finally.cs:186:25:186:47 | throw ...; | -| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:186:31:186:46 | object creation of type ExceptionB | -| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:186:25:186:47 | throw ...; | -| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:186:31:186:46 | object creation of type ExceptionB | +| Finally.cs:184:13:191:13 | After try {...} ... | Finally.cs:176:10:176:11 | Entry | +| Finally.cs:184:13:191:13 | After try {...} ... | Finally.cs:180:17:180:18 | After access to parameter b1 [false] | +| Finally.cs:184:13:191:13 | After try {...} ... | Finally.cs:180:17:180:18 | After access to parameter b1 [true] | +| Finally.cs:184:13:191:13 | After try {...} ... | Finally.cs:180:27:180:42 | After object creation of type ExceptionA | +| Finally.cs:184:13:191:13 | After try {...} ... | Finally.cs:183:9:192:9 | {...} | +| Finally.cs:184:13:191:13 | After try {...} ... | Finally.cs:184:13:191:13 | After try {...} ... | +| Finally.cs:184:13:191:13 | After try {...} ... | Finally.cs:186:21:186:22 | After access to parameter b2 [false] | +| Finally.cs:184:13:191:13 | After try {...} ... | Finally.cs:186:21:186:22 | After access to parameter b2 [true] | +| Finally.cs:184:13:191:13 | After try {...} ... | Finally.cs:186:31:186:46 | After object creation of type ExceptionB | +| Finally.cs:184:13:191:13 | After try {...} ... | Finally.cs:188:13:191:13 | After catch (...) {...} [match] | +| Finally.cs:184:13:191:13 | After try {...} ... | Finally.cs:188:13:191:13 | catch (...) {...} | +| Finally.cs:184:13:191:13 | After try {...} ... | Finally.cs:188:38:188:39 | After access to parameter b2 [true] | +| Finally.cs:184:13:191:13 | After try {...} ... | Finally.cs:190:21:190:22 | After access to parameter b1 [false] | +| Finally.cs:186:21:186:22 | After access to parameter b2 [false] | Finally.cs:186:21:186:22 | After access to parameter b2 [false] | +| Finally.cs:186:21:186:22 | After access to parameter b2 [true] | Finally.cs:186:21:186:22 | After access to parameter b2 [true] | +| Finally.cs:186:31:186:46 | After object creation of type ExceptionB | Finally.cs:186:31:186:46 | After object creation of type ExceptionB | +| Finally.cs:188:13:191:13 | After catch (...) {...} [match] | Finally.cs:186:21:186:22 | After access to parameter b2 [true] | +| Finally.cs:188:13:191:13 | After catch (...) {...} [match] | Finally.cs:186:31:186:46 | After object creation of type ExceptionB | +| Finally.cs:188:13:191:13 | After catch (...) {...} [match] | Finally.cs:188:13:191:13 | After catch (...) {...} [match] | +| Finally.cs:188:13:191:13 | After catch (...) {...} [match] | Finally.cs:188:13:191:13 | catch (...) {...} | +| Finally.cs:188:13:191:13 | After catch (...) {...} [no-match] | Finally.cs:188:13:191:13 | After catch (...) {...} [no-match] | +| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:186:21:186:22 | After access to parameter b2 [true] | +| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:186:31:186:46 | After object creation of type ExceptionB | | Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:188:13:191:13 | catch (...) {...} | -| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:186:25:186:47 | throw ...; | -| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:186:31:186:46 | object creation of type ExceptionB | -| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:188:13:191:13 | catch (...) {...} | -| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:188:38:188:39 | access to parameter b2 | -| Finally.cs:189:13:191:13 | {...} | Finally.cs:186:25:186:47 | throw ...; | -| Finally.cs:189:13:191:13 | {...} | Finally.cs:186:31:186:46 | object creation of type ExceptionB | -| Finally.cs:189:13:191:13 | {...} | Finally.cs:188:13:191:13 | catch (...) {...} | -| Finally.cs:189:13:191:13 | {...} | Finally.cs:188:38:188:39 | access to parameter b2 | -| Finally.cs:189:13:191:13 | {...} | Finally.cs:189:13:191:13 | {...} | -| Finally.cs:190:31:190:46 | object creation of type ExceptionC | Finally.cs:190:31:190:46 | object creation of type ExceptionC | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:195:10:195:12 | enter M10 | -| Finally.cs:195:10:195:12 | exit M10 | Finally.cs:195:10:195:12 | exit M10 | -| Finally.cs:195:10:195:12 | exit M10 (abnormal) | Finally.cs:195:10:195:12 | exit M10 (abnormal) | -| Finally.cs:199:21:199:43 | throw ...; | Finally.cs:199:21:199:43 | throw ...; | -| Finally.cs:199:27:199:42 | object creation of type ExceptionA | Finally.cs:199:27:199:42 | object creation of type ExceptionA | -| Finally.cs:202:9:212:9 | {...} | Finally.cs:195:10:195:12 | enter M10 | -| Finally.cs:202:9:212:9 | {...} | Finally.cs:199:21:199:43 | throw ...; | -| Finally.cs:202:9:212:9 | {...} | Finally.cs:199:27:199:42 | object creation of type ExceptionA | +| Finally.cs:188:38:188:39 | After access to parameter b2 [false] | Finally.cs:188:38:188:39 | After access to parameter b2 [false] | +| Finally.cs:188:38:188:39 | After access to parameter b2 [true] | Finally.cs:186:21:186:22 | After access to parameter b2 [true] | +| Finally.cs:188:38:188:39 | After access to parameter b2 [true] | Finally.cs:186:31:186:46 | After object creation of type ExceptionB | +| Finally.cs:188:38:188:39 | After access to parameter b2 [true] | Finally.cs:188:13:191:13 | After catch (...) {...} [match] | +| Finally.cs:188:38:188:39 | After access to parameter b2 [true] | Finally.cs:188:13:191:13 | catch (...) {...} | +| Finally.cs:188:38:188:39 | After access to parameter b2 [true] | Finally.cs:188:38:188:39 | After access to parameter b2 [true] | +| Finally.cs:190:21:190:22 | After access to parameter b1 [false] | Finally.cs:186:21:186:22 | After access to parameter b2 [true] | +| Finally.cs:190:21:190:22 | After access to parameter b1 [false] | Finally.cs:186:31:186:46 | After object creation of type ExceptionB | +| Finally.cs:190:21:190:22 | After access to parameter b1 [false] | Finally.cs:188:13:191:13 | After catch (...) {...} [match] | +| Finally.cs:190:21:190:22 | After access to parameter b1 [false] | Finally.cs:188:13:191:13 | catch (...) {...} | +| Finally.cs:190:21:190:22 | After access to parameter b1 [false] | Finally.cs:188:38:188:39 | After access to parameter b2 [true] | +| Finally.cs:190:21:190:22 | After access to parameter b1 [false] | Finally.cs:190:21:190:22 | After access to parameter b1 [false] | +| Finally.cs:190:21:190:22 | After access to parameter b1 [true] | Finally.cs:190:21:190:22 | After access to parameter b1 [true] | +| Finally.cs:195:10:195:12 | Entry | Finally.cs:195:10:195:12 | Entry | +| Finally.cs:195:10:195:12 | Exceptional Exit | Finally.cs:195:10:195:12 | Exceptional Exit | +| Finally.cs:195:10:195:12 | Exit | Finally.cs:195:10:195:12 | Exit | +| Finally.cs:197:9:212:9 | After try {...} ... | Finally.cs:195:10:195:12 | Entry | +| Finally.cs:197:9:212:9 | After try {...} ... | Finally.cs:197:9:212:9 | After try {...} ... | +| Finally.cs:197:9:212:9 | After try {...} ... | Finally.cs:199:17:199:18 | After access to parameter b1 [false] | +| Finally.cs:197:9:212:9 | After try {...} ... | Finally.cs:199:17:199:18 | After access to parameter b1 [true] | +| Finally.cs:197:9:212:9 | After try {...} ... | Finally.cs:199:27:199:42 | After object creation of type ExceptionA | +| Finally.cs:197:9:212:9 | After try {...} ... | Finally.cs:202:9:212:9 | {...} | +| Finally.cs:197:9:212:9 | After try {...} ... | Finally.cs:203:13:210:13 | After try {...} ... | +| Finally.cs:197:9:212:9 | After try {...} ... | Finally.cs:205:21:205:22 | After access to parameter b2 [false] | +| Finally.cs:197:9:212:9 | After try {...} ... | Finally.cs:205:21:205:22 | After access to parameter b2 [true] | +| Finally.cs:197:9:212:9 | After try {...} ... | Finally.cs:205:31:205:46 | After object creation of type ExceptionB | +| Finally.cs:197:9:212:9 | After try {...} ... | Finally.cs:208:13:210:13 | {...} | +| Finally.cs:197:9:212:9 | After try {...} ... | Finally.cs:209:21:209:22 | After access to parameter b3 [false] | +| Finally.cs:199:17:199:18 | After access to parameter b1 [false] | Finally.cs:199:17:199:18 | After access to parameter b1 [false] | +| Finally.cs:199:17:199:18 | After access to parameter b1 [true] | Finally.cs:199:17:199:18 | After access to parameter b1 [true] | +| Finally.cs:199:27:199:42 | After object creation of type ExceptionA | Finally.cs:199:27:199:42 | After object creation of type ExceptionA | +| Finally.cs:202:9:212:9 | {...} | Finally.cs:195:10:195:12 | Entry | +| Finally.cs:202:9:212:9 | {...} | Finally.cs:199:17:199:18 | After access to parameter b1 [false] | +| Finally.cs:202:9:212:9 | {...} | Finally.cs:199:17:199:18 | After access to parameter b1 [true] | +| Finally.cs:202:9:212:9 | {...} | Finally.cs:199:27:199:42 | After object creation of type ExceptionA | | Finally.cs:202:9:212:9 | {...} | Finally.cs:202:9:212:9 | {...} | -| Finally.cs:205:25:205:47 | throw ...; | Finally.cs:205:25:205:47 | throw ...; | -| Finally.cs:205:31:205:46 | object creation of type ExceptionB | Finally.cs:205:31:205:46 | object creation of type ExceptionB | -| Finally.cs:208:13:210:13 | {...} | Finally.cs:195:10:195:12 | enter M10 | -| Finally.cs:208:13:210:13 | {...} | Finally.cs:199:21:199:43 | throw ...; | -| Finally.cs:208:13:210:13 | {...} | Finally.cs:199:27:199:42 | object creation of type ExceptionA | +| Finally.cs:203:13:210:13 | After try {...} ... | Finally.cs:195:10:195:12 | Entry | +| Finally.cs:203:13:210:13 | After try {...} ... | Finally.cs:199:17:199:18 | After access to parameter b1 [false] | +| Finally.cs:203:13:210:13 | After try {...} ... | Finally.cs:199:17:199:18 | After access to parameter b1 [true] | +| Finally.cs:203:13:210:13 | After try {...} ... | Finally.cs:199:27:199:42 | After object creation of type ExceptionA | +| Finally.cs:203:13:210:13 | After try {...} ... | Finally.cs:202:9:212:9 | {...} | +| Finally.cs:203:13:210:13 | After try {...} ... | Finally.cs:203:13:210:13 | After try {...} ... | +| Finally.cs:203:13:210:13 | After try {...} ... | Finally.cs:205:21:205:22 | After access to parameter b2 [false] | +| Finally.cs:203:13:210:13 | After try {...} ... | Finally.cs:205:21:205:22 | After access to parameter b2 [true] | +| Finally.cs:203:13:210:13 | After try {...} ... | Finally.cs:205:31:205:46 | After object creation of type ExceptionB | +| Finally.cs:203:13:210:13 | After try {...} ... | Finally.cs:208:13:210:13 | {...} | +| Finally.cs:203:13:210:13 | After try {...} ... | Finally.cs:209:21:209:22 | After access to parameter b3 [false] | +| Finally.cs:205:21:205:22 | After access to parameter b2 [false] | Finally.cs:205:21:205:22 | After access to parameter b2 [false] | +| Finally.cs:205:21:205:22 | After access to parameter b2 [true] | Finally.cs:205:21:205:22 | After access to parameter b2 [true] | +| Finally.cs:205:31:205:46 | After object creation of type ExceptionB | Finally.cs:205:31:205:46 | After object creation of type ExceptionB | +| Finally.cs:208:13:210:13 | {...} | Finally.cs:195:10:195:12 | Entry | +| Finally.cs:208:13:210:13 | {...} | Finally.cs:199:17:199:18 | After access to parameter b1 [false] | +| Finally.cs:208:13:210:13 | {...} | Finally.cs:199:17:199:18 | After access to parameter b1 [true] | +| Finally.cs:208:13:210:13 | {...} | Finally.cs:199:27:199:42 | After object creation of type ExceptionA | | Finally.cs:208:13:210:13 | {...} | Finally.cs:202:9:212:9 | {...} | -| Finally.cs:208:13:210:13 | {...} | Finally.cs:205:25:205:47 | throw ...; | -| Finally.cs:208:13:210:13 | {...} | Finally.cs:205:31:205:46 | object creation of type ExceptionB | +| Finally.cs:208:13:210:13 | {...} | Finally.cs:205:21:205:22 | After access to parameter b2 [false] | +| Finally.cs:208:13:210:13 | {...} | Finally.cs:205:21:205:22 | After access to parameter b2 [true] | +| Finally.cs:208:13:210:13 | {...} | Finally.cs:205:31:205:46 | After object creation of type ExceptionB | | Finally.cs:208:13:210:13 | {...} | Finally.cs:208:13:210:13 | {...} | -| Finally.cs:209:31:209:46 | object creation of type ExceptionC | Finally.cs:209:31:209:46 | object creation of type ExceptionC | -| Finally.cs:211:13:211:29 | ...; | Finally.cs:195:10:195:12 | enter M10 | -| Finally.cs:211:13:211:29 | ...; | Finally.cs:199:21:199:43 | throw ...; | -| Finally.cs:211:13:211:29 | ...; | Finally.cs:199:27:199:42 | object creation of type ExceptionA | -| Finally.cs:211:13:211:29 | ...; | Finally.cs:202:9:212:9 | {...} | -| Finally.cs:211:13:211:29 | ...; | Finally.cs:205:25:205:47 | throw ...; | -| Finally.cs:211:13:211:29 | ...; | Finally.cs:205:31:205:46 | object creation of type ExceptionB | -| Finally.cs:211:13:211:29 | ...; | Finally.cs:208:13:210:13 | {...} | -| Finally.cs:211:13:211:29 | ...; | Finally.cs:211:13:211:29 | ...; | -| Finally.cs:213:9:213:25 | ...; | Finally.cs:195:10:195:12 | enter M10 | -| Finally.cs:213:9:213:25 | ...; | Finally.cs:199:21:199:43 | throw ...; | -| Finally.cs:213:9:213:25 | ...; | Finally.cs:199:27:199:42 | object creation of type ExceptionA | -| Finally.cs:213:9:213:25 | ...; | Finally.cs:202:9:212:9 | {...} | -| Finally.cs:213:9:213:25 | ...; | Finally.cs:205:25:205:47 | throw ...; | -| Finally.cs:213:9:213:25 | ...; | Finally.cs:205:31:205:46 | object creation of type ExceptionB | -| Finally.cs:213:9:213:25 | ...; | Finally.cs:208:13:210:13 | {...} | -| Finally.cs:213:9:213:25 | ...; | Finally.cs:211:13:211:29 | ...; | -| Finally.cs:213:9:213:25 | ...; | Finally.cs:213:9:213:25 | ...; | -| Finally.cs:216:10:216:12 | enter M11 | Finally.cs:216:10:216:12 | enter M11 | +| Finally.cs:209:21:209:22 | After access to parameter b3 [false] | Finally.cs:195:10:195:12 | Entry | +| Finally.cs:209:21:209:22 | After access to parameter b3 [false] | Finally.cs:199:17:199:18 | After access to parameter b1 [false] | +| Finally.cs:209:21:209:22 | After access to parameter b3 [false] | Finally.cs:199:17:199:18 | After access to parameter b1 [true] | +| Finally.cs:209:21:209:22 | After access to parameter b3 [false] | Finally.cs:199:27:199:42 | After object creation of type ExceptionA | +| Finally.cs:209:21:209:22 | After access to parameter b3 [false] | Finally.cs:202:9:212:9 | {...} | +| Finally.cs:209:21:209:22 | After access to parameter b3 [false] | Finally.cs:205:21:205:22 | After access to parameter b2 [false] | +| Finally.cs:209:21:209:22 | After access to parameter b3 [false] | Finally.cs:205:21:205:22 | After access to parameter b2 [true] | +| Finally.cs:209:21:209:22 | After access to parameter b3 [false] | Finally.cs:205:31:205:46 | After object creation of type ExceptionB | +| Finally.cs:209:21:209:22 | After access to parameter b3 [false] | Finally.cs:208:13:210:13 | {...} | +| Finally.cs:209:21:209:22 | After access to parameter b3 [false] | Finally.cs:209:21:209:22 | After access to parameter b3 [false] | +| Finally.cs:209:21:209:22 | After access to parameter b3 [true] | Finally.cs:209:21:209:22 | After access to parameter b3 [true] | +| Finally.cs:216:10:216:12 | Entry | Finally.cs:216:10:216:12 | Entry | +| Finally.cs:220:13:220:36 | After call to method WriteLine | Finally.cs:220:13:220:36 | After call to method WriteLine | | Finally.cs:222:9:225:9 | catch {...} | Finally.cs:222:9:225:9 | catch {...} | -| Finally.cs:227:9:229:9 | {...} | Finally.cs:216:10:216:12 | enter M11 | +| Finally.cs:227:9:229:9 | {...} | Finally.cs:216:10:216:12 | Entry | +| Finally.cs:227:9:229:9 | {...} | Finally.cs:220:13:220:36 | After call to method WriteLine | | Finally.cs:227:9:229:9 | {...} | Finally.cs:222:9:225:9 | catch {...} | | Finally.cs:227:9:229:9 | {...} | Finally.cs:227:9:229:9 | {...} | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:233:10:233:12 | enter M12 | -| Finally.cs:233:10:233:12 | exit M12 | Finally.cs:233:10:233:12 | exit M12 | -| Finally.cs:233:10:233:12 | exit M12 (abnormal) | Finally.cs:233:10:233:12 | exit M12 (abnormal) | -| Finally.cs:240:21:240:43 | throw ...; | Finally.cs:240:21:240:43 | throw ...; | -| Finally.cs:240:27:240:42 | object creation of type ExceptionA | Finally.cs:240:27:240:42 | object creation of type ExceptionA | -| Finally.cs:243:13:253:13 | {...} | Finally.cs:233:10:233:12 | enter M12 | -| Finally.cs:243:13:253:13 | {...} | Finally.cs:240:21:240:43 | throw ...; | -| Finally.cs:243:13:253:13 | {...} | Finally.cs:240:27:240:42 | object creation of type ExceptionA | +| Finally.cs:233:10:233:12 | Entry | Finally.cs:233:10:233:12 | Entry | +| Finally.cs:233:10:233:12 | Exceptional Exit | Finally.cs:233:10:233:12 | Exceptional Exit | +| Finally.cs:233:10:233:12 | Exit | Finally.cs:233:10:233:12 | Exit | +| Finally.cs:235:9:259:9 | After try {...} ... | Finally.cs:233:10:233:12 | Entry | +| Finally.cs:235:9:259:9 | After try {...} ... | Finally.cs:235:9:259:9 | After try {...} ... | +| Finally.cs:235:9:259:9 | After try {...} ... | Finally.cs:237:13:253:13 | After try {...} ... | +| Finally.cs:235:9:259:9 | After try {...} ... | Finally.cs:239:21:239:22 | After access to parameter b1 [false] | +| Finally.cs:235:9:259:9 | After try {...} ... | Finally.cs:239:21:239:22 | After access to parameter b1 [true] | +| Finally.cs:235:9:259:9 | After try {...} ... | Finally.cs:240:27:240:42 | After object creation of type ExceptionA | +| Finally.cs:235:9:259:9 | After try {...} ... | Finally.cs:243:13:253:13 | {...} | +| Finally.cs:235:9:259:9 | After try {...} ... | Finally.cs:244:17:252:17 | After try {...} ... | +| Finally.cs:235:9:259:9 | After try {...} ... | Finally.cs:246:25:246:26 | After access to parameter b2 [false] | +| Finally.cs:235:9:259:9 | After try {...} ... | Finally.cs:246:25:246:26 | After access to parameter b2 [true] | +| Finally.cs:235:9:259:9 | After try {...} ... | Finally.cs:247:31:247:46 | After object creation of type ExceptionA | +| Finally.cs:235:9:259:9 | After try {...} ... | Finally.cs:250:17:252:17 | {...} | +| Finally.cs:235:9:259:9 | After try {...} ... | Finally.cs:254:13:254:44 | After call to method WriteLine | +| Finally.cs:235:9:259:9 | After try {...} ... | Finally.cs:257:9:259:9 | {...} | +| Finally.cs:237:13:253:13 | After try {...} ... | Finally.cs:237:13:253:13 | After try {...} ... | +| Finally.cs:239:21:239:22 | After access to parameter b1 [false] | Finally.cs:239:21:239:22 | After access to parameter b1 [false] | +| Finally.cs:239:21:239:22 | After access to parameter b1 [true] | Finally.cs:239:21:239:22 | After access to parameter b1 [true] | +| Finally.cs:240:27:240:42 | After object creation of type ExceptionA | Finally.cs:240:27:240:42 | After object creation of type ExceptionA | +| Finally.cs:243:13:253:13 | {...} | Finally.cs:233:10:233:12 | Entry | +| Finally.cs:243:13:253:13 | {...} | Finally.cs:239:21:239:22 | After access to parameter b1 [false] | +| Finally.cs:243:13:253:13 | {...} | Finally.cs:239:21:239:22 | After access to parameter b1 [true] | +| Finally.cs:243:13:253:13 | {...} | Finally.cs:240:27:240:42 | After object creation of type ExceptionA | | Finally.cs:243:13:253:13 | {...} | Finally.cs:243:13:253:13 | {...} | -| Finally.cs:247:25:247:47 | throw ...; | Finally.cs:247:25:247:47 | throw ...; | -| Finally.cs:247:31:247:46 | object creation of type ExceptionA | Finally.cs:247:31:247:46 | object creation of type ExceptionA | -| Finally.cs:250:17:252:17 | {...} | Finally.cs:233:10:233:12 | enter M12 | -| Finally.cs:250:17:252:17 | {...} | Finally.cs:240:21:240:43 | throw ...; | -| Finally.cs:250:17:252:17 | {...} | Finally.cs:240:27:240:42 | object creation of type ExceptionA | +| Finally.cs:244:17:252:17 | After try {...} ... | Finally.cs:244:17:252:17 | After try {...} ... | +| Finally.cs:246:25:246:26 | After access to parameter b2 [false] | Finally.cs:246:25:246:26 | After access to parameter b2 [false] | +| Finally.cs:246:25:246:26 | After access to parameter b2 [true] | Finally.cs:246:25:246:26 | After access to parameter b2 [true] | +| Finally.cs:247:31:247:46 | After object creation of type ExceptionA | Finally.cs:247:31:247:46 | After object creation of type ExceptionA | +| Finally.cs:250:17:252:17 | {...} | Finally.cs:233:10:233:12 | Entry | +| Finally.cs:250:17:252:17 | {...} | Finally.cs:239:21:239:22 | After access to parameter b1 [false] | +| Finally.cs:250:17:252:17 | {...} | Finally.cs:239:21:239:22 | After access to parameter b1 [true] | +| Finally.cs:250:17:252:17 | {...} | Finally.cs:240:27:240:42 | After object creation of type ExceptionA | | Finally.cs:250:17:252:17 | {...} | Finally.cs:243:13:253:13 | {...} | -| Finally.cs:250:17:252:17 | {...} | Finally.cs:247:25:247:47 | throw ...; | -| Finally.cs:250:17:252:17 | {...} | Finally.cs:247:31:247:46 | object creation of type ExceptionA | +| Finally.cs:250:17:252:17 | {...} | Finally.cs:246:25:246:26 | After access to parameter b2 [false] | +| Finally.cs:250:17:252:17 | {...} | Finally.cs:246:25:246:26 | After access to parameter b2 [true] | +| Finally.cs:250:17:252:17 | {...} | Finally.cs:247:31:247:46 | After object creation of type ExceptionA | | Finally.cs:250:17:252:17 | {...} | Finally.cs:250:17:252:17 | {...} | -| Finally.cs:254:13:254:45 | ...; | Finally.cs:254:13:254:45 | ...; | -| Finally.cs:257:9:259:9 | {...} | Finally.cs:233:10:233:12 | enter M12 | -| Finally.cs:257:9:259:9 | {...} | Finally.cs:240:21:240:43 | throw ...; | -| Finally.cs:257:9:259:9 | {...} | Finally.cs:240:27:240:42 | object creation of type ExceptionA | +| Finally.cs:254:13:254:44 | After call to method WriteLine | Finally.cs:254:13:254:44 | After call to method WriteLine | +| Finally.cs:257:9:259:9 | {...} | Finally.cs:233:10:233:12 | Entry | +| Finally.cs:257:9:259:9 | {...} | Finally.cs:237:13:253:13 | After try {...} ... | +| Finally.cs:257:9:259:9 | {...} | Finally.cs:239:21:239:22 | After access to parameter b1 [false] | +| Finally.cs:257:9:259:9 | {...} | Finally.cs:239:21:239:22 | After access to parameter b1 [true] | +| Finally.cs:257:9:259:9 | {...} | Finally.cs:240:27:240:42 | After object creation of type ExceptionA | | Finally.cs:257:9:259:9 | {...} | Finally.cs:243:13:253:13 | {...} | -| Finally.cs:257:9:259:9 | {...} | Finally.cs:247:25:247:47 | throw ...; | -| Finally.cs:257:9:259:9 | {...} | Finally.cs:247:31:247:46 | object creation of type ExceptionA | +| Finally.cs:257:9:259:9 | {...} | Finally.cs:244:17:252:17 | After try {...} ... | +| Finally.cs:257:9:259:9 | {...} | Finally.cs:246:25:246:26 | After access to parameter b2 [false] | +| Finally.cs:257:9:259:9 | {...} | Finally.cs:246:25:246:26 | After access to parameter b2 [true] | +| Finally.cs:257:9:259:9 | {...} | Finally.cs:247:31:247:46 | After object creation of type ExceptionA | | Finally.cs:257:9:259:9 | {...} | Finally.cs:250:17:252:17 | {...} | -| Finally.cs:257:9:259:9 | {...} | Finally.cs:254:13:254:45 | ...; | +| Finally.cs:257:9:259:9 | {...} | Finally.cs:254:13:254:44 | After call to method WriteLine | | Finally.cs:257:9:259:9 | {...} | Finally.cs:257:9:259:9 | {...} | -| Finally.cs:260:9:260:34 | ...; | Finally.cs:233:10:233:12 | enter M12 | -| Finally.cs:260:9:260:34 | ...; | Finally.cs:240:21:240:43 | throw ...; | -| Finally.cs:260:9:260:34 | ...; | Finally.cs:240:27:240:42 | object creation of type ExceptionA | -| Finally.cs:260:9:260:34 | ...; | Finally.cs:243:13:253:13 | {...} | -| Finally.cs:260:9:260:34 | ...; | Finally.cs:247:25:247:47 | throw ...; | -| Finally.cs:260:9:260:34 | ...; | Finally.cs:247:31:247:46 | object creation of type ExceptionA | -| Finally.cs:260:9:260:34 | ...; | Finally.cs:250:17:252:17 | {...} | -| Finally.cs:260:9:260:34 | ...; | Finally.cs:254:13:254:45 | ...; | -| Finally.cs:260:9:260:34 | ...; | Finally.cs:257:9:259:9 | {...} | -| Finally.cs:260:9:260:34 | ...; | Finally.cs:260:9:260:34 | ...; | -| Finally.cs:263:10:263:12 | enter M13 | Finally.cs:263:10:263:12 | enter M13 | -| Finally.cs:263:10:263:12 | exit M13 | Finally.cs:263:10:263:12 | exit M13 | -| Finally.cs:263:10:263:12 | exit M13 (abnormal) | Finally.cs:263:10:263:12 | exit M13 (abnormal) | -| Finally.cs:263:10:263:12 | exit M13 (normal) | Finally.cs:263:10:263:12 | enter M13 | -| Finally.cs:263:10:263:12 | exit M13 (normal) | Finally.cs:263:10:263:12 | exit M13 (normal) | -| Foreach.cs:4:7:4:13 | enter Foreach | Foreach.cs:4:7:4:13 | enter Foreach | -| Foreach.cs:6:10:6:11 | enter M1 | Foreach.cs:6:10:6:11 | enter M1 | -| Foreach.cs:6:10:6:11 | exit M1 (normal) | Foreach.cs:6:10:6:11 | enter M1 | -| Foreach.cs:6:10:6:11 | exit M1 (normal) | Foreach.cs:6:10:6:11 | exit M1 (normal) | -| Foreach.cs:6:10:6:11 | exit M1 (normal) | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | -| Foreach.cs:6:10:6:11 | exit M1 (normal) | Foreach.cs:8:22:8:24 | String arg | -| Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:6:10:6:11 | enter M1 | -| Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | -| Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:22:8:24 | String arg | +| Finally.cs:263:10:263:12 | Entry | Finally.cs:263:10:263:12 | Entry | +| Finally.cs:263:10:263:12 | Exceptional Exit | Finally.cs:263:10:263:12 | Exceptional Exit | +| Finally.cs:263:10:263:12 | Exit | Finally.cs:263:10:263:12 | Exit | +| Finally.cs:265:9:273:9 | After try {...} ... | Finally.cs:263:10:263:12 | Entry | +| Finally.cs:265:9:273:9 | After try {...} ... | Finally.cs:265:9:273:9 | After try {...} ... | +| Finally.cs:265:9:273:9 | After try {...} ... | Finally.cs:267:13:267:34 | After call to method WriteLine | +| Finally.cs:265:9:273:9 | After try {...} ... | Finally.cs:270:9:273:9 | {...} | +| Finally.cs:267:13:267:34 | After call to method WriteLine | Finally.cs:267:13:267:34 | After call to method WriteLine | +| Finally.cs:270:9:273:9 | {...} | Finally.cs:263:10:263:12 | Entry | +| Finally.cs:270:9:273:9 | {...} | Finally.cs:267:13:267:34 | After call to method WriteLine | +| Finally.cs:270:9:273:9 | {...} | Finally.cs:270:9:273:9 | {...} | +| Foreach.cs:4:7:4:13 | Entry | Foreach.cs:4:7:4:13 | Entry | +| Foreach.cs:6:10:6:11 | Entry | Foreach.cs:6:10:6:11 | Entry | +| Foreach.cs:8:9:9:13 | After foreach (... ... in ...) ... | Foreach.cs:6:10:6:11 | Entry | +| Foreach.cs:8:9:9:13 | After foreach (... ... in ...) ... | Foreach.cs:8:9:9:13 | After foreach (... ... in ...) ... | +| Foreach.cs:8:9:9:13 | After foreach (... ... in ...) ... | Foreach.cs:8:22:8:24 | String arg | +| Foreach.cs:8:9:9:13 | After foreach (... ... in ...) ... | Foreach.cs:8:29:8:32 | After access to parameter args [empty] | +| Foreach.cs:8:9:9:13 | After foreach (... ... in ...) ... | Foreach.cs:8:29:8:32 | After access to parameter args [non-empty] | | Foreach.cs:8:22:8:24 | String arg | Foreach.cs:8:22:8:24 | String arg | -| Foreach.cs:12:10:12:11 | enter M2 | Foreach.cs:12:10:12:11 | enter M2 | -| Foreach.cs:12:10:12:11 | exit M2 (normal) | Foreach.cs:12:10:12:11 | enter M2 | -| Foreach.cs:12:10:12:11 | exit M2 (normal) | Foreach.cs:12:10:12:11 | exit M2 (normal) | -| Foreach.cs:12:10:12:11 | exit M2 (normal) | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | -| Foreach.cs:12:10:12:11 | exit M2 (normal) | Foreach.cs:14:22:14:22 | String _ | -| Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:12:10:12:11 | enter M2 | -| Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | -| Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:14:22:14:22 | String _ | +| Foreach.cs:8:22:8:24 | String arg | Foreach.cs:8:29:8:32 | After access to parameter args [non-empty] | +| Foreach.cs:8:29:8:32 | After access to parameter args [empty] | Foreach.cs:8:29:8:32 | After access to parameter args [empty] | +| Foreach.cs:8:29:8:32 | After access to parameter args [non-empty] | Foreach.cs:8:29:8:32 | After access to parameter args [non-empty] | +| Foreach.cs:12:10:12:11 | Entry | Foreach.cs:12:10:12:11 | Entry | +| Foreach.cs:14:9:15:13 | After foreach (... ... in ...) ... | Foreach.cs:12:10:12:11 | Entry | +| Foreach.cs:14:9:15:13 | After foreach (... ... in ...) ... | Foreach.cs:14:9:15:13 | After foreach (... ... in ...) ... | +| Foreach.cs:14:9:15:13 | After foreach (... ... in ...) ... | Foreach.cs:14:22:14:22 | String _ | +| Foreach.cs:14:9:15:13 | After foreach (... ... in ...) ... | Foreach.cs:14:27:14:30 | After access to parameter args [empty] | +| Foreach.cs:14:9:15:13 | After foreach (... ... in ...) ... | Foreach.cs:14:27:14:30 | After access to parameter args [non-empty] | | Foreach.cs:14:22:14:22 | String _ | Foreach.cs:14:22:14:22 | String _ | -| Foreach.cs:18:10:18:11 | enter M3 | Foreach.cs:18:10:18:11 | enter M3 | -| Foreach.cs:18:10:18:11 | exit M3 (normal) | Foreach.cs:18:10:18:11 | enter M3 | -| Foreach.cs:18:10:18:11 | exit M3 (normal) | Foreach.cs:18:10:18:11 | exit M3 (normal) | -| Foreach.cs:18:10:18:11 | exit M3 (normal) | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | -| Foreach.cs:18:10:18:11 | exit M3 (normal) | Foreach.cs:20:22:20:22 | String x | -| Foreach.cs:18:10:18:11 | exit M3 (normal) | Foreach.cs:20:27:20:38 | call to method ToArray | -| Foreach.cs:18:10:18:11 | exit M3 (normal) | Foreach.cs:20:27:20:68 | ... ?? ... | -| Foreach.cs:18:10:18:11 | exit M3 (normal) | Foreach.cs:20:43:20:68 | call to method Empty | -| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:18:10:18:11 | enter M3 | -| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | -| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:22:20:22 | String x | -| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:27:20:38 | call to method ToArray | -| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:27:20:68 | ... ?? ... | -| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:43:20:68 | call to method Empty | +| Foreach.cs:14:22:14:22 | String _ | Foreach.cs:14:27:14:30 | After access to parameter args [non-empty] | +| Foreach.cs:14:27:14:30 | After access to parameter args [empty] | Foreach.cs:14:27:14:30 | After access to parameter args [empty] | +| Foreach.cs:14:27:14:30 | After access to parameter args [non-empty] | Foreach.cs:14:27:14:30 | After access to parameter args [non-empty] | +| Foreach.cs:18:10:18:11 | Entry | Foreach.cs:18:10:18:11 | Entry | +| Foreach.cs:20:9:21:11 | After foreach (... ... in ...) ... | Foreach.cs:18:10:18:11 | Entry | +| Foreach.cs:20:9:21:11 | After foreach (... ... in ...) ... | Foreach.cs:20:9:21:11 | After foreach (... ... in ...) ... | +| Foreach.cs:20:9:21:11 | After foreach (... ... in ...) ... | Foreach.cs:20:22:20:22 | String x | +| Foreach.cs:20:9:21:11 | After foreach (... ... in ...) ... | Foreach.cs:20:27:20:27 | After access to parameter e [non-null] | +| Foreach.cs:20:9:21:11 | After foreach (... ... in ...) ... | Foreach.cs:20:27:20:27 | After access to parameter e [null] | +| Foreach.cs:20:9:21:11 | After foreach (... ... in ...) ... | Foreach.cs:20:27:20:38 | After call to method ToArray [non-null] | +| Foreach.cs:20:9:21:11 | After foreach (... ... in ...) ... | Foreach.cs:20:27:20:38 | After call to method ToArray [null] | +| Foreach.cs:20:9:21:11 | After foreach (... ... in ...) ... | Foreach.cs:20:27:20:68 | After ... ?? ... [empty] | +| Foreach.cs:20:9:21:11 | After foreach (... ... in ...) ... | Foreach.cs:20:27:20:68 | After ... ?? ... [non-empty] | +| Foreach.cs:20:9:21:11 | After foreach (... ... in ...) ... | Foreach.cs:20:43:20:68 | After call to method Empty [empty] | +| Foreach.cs:20:9:21:11 | After foreach (... ... in ...) ... | Foreach.cs:20:43:20:68 | After call to method Empty [non-empty] | | Foreach.cs:20:22:20:22 | String x | Foreach.cs:20:22:20:22 | String x | -| Foreach.cs:20:27:20:38 | call to method ToArray | Foreach.cs:20:27:20:38 | call to method ToArray | -| Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:18:10:18:11 | enter M3 | -| Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:20:27:20:38 | call to method ToArray | -| Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:20:27:20:68 | ... ?? ... | -| Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:20:43:20:68 | call to method Empty | -| Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:20:43:20:68 | call to method Empty | -| Foreach.cs:24:10:24:11 | enter M4 | Foreach.cs:24:10:24:11 | enter M4 | -| Foreach.cs:24:10:24:11 | exit M4 (normal) | Foreach.cs:24:10:24:11 | enter M4 | -| Foreach.cs:24:10:24:11 | exit M4 (normal) | Foreach.cs:24:10:24:11 | exit M4 (normal) | -| Foreach.cs:24:10:24:11 | exit M4 (normal) | Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | -| Foreach.cs:24:10:24:11 | exit M4 (normal) | Foreach.cs:26:23:26:23 | String x | -| Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | Foreach.cs:24:10:24:11 | enter M4 | -| Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | -| Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | Foreach.cs:26:23:26:23 | String x | -| Foreach.cs:26:23:26:23 | String x | Foreach.cs:26:23:26:23 | String x | -| Foreach.cs:30:10:30:11 | enter M5 | Foreach.cs:30:10:30:11 | enter M5 | -| Foreach.cs:30:10:30:11 | exit M5 (normal) | Foreach.cs:30:10:30:11 | enter M5 | -| Foreach.cs:30:10:30:11 | exit M5 (normal) | Foreach.cs:30:10:30:11 | exit M5 (normal) | -| Foreach.cs:30:10:30:11 | exit M5 (normal) | Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | -| Foreach.cs:30:10:30:11 | exit M5 (normal) | Foreach.cs:32:23:32:23 | String x | -| Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | Foreach.cs:30:10:30:11 | enter M5 | -| Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | -| Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | Foreach.cs:32:23:32:23 | String x | -| Foreach.cs:32:23:32:23 | String x | Foreach.cs:32:23:32:23 | String x | -| Foreach.cs:36:10:36:11 | enter M6 | Foreach.cs:36:10:36:11 | enter M6 | -| Foreach.cs:36:10:36:11 | exit M6 (normal) | Foreach.cs:36:10:36:11 | enter M6 | -| Foreach.cs:36:10:36:11 | exit M6 (normal) | Foreach.cs:36:10:36:11 | exit M6 (normal) | -| Foreach.cs:36:10:36:11 | exit M6 (normal) | Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | -| Foreach.cs:36:10:36:11 | exit M6 (normal) | Foreach.cs:38:26:38:26 | String x | -| Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | Foreach.cs:36:10:36:11 | enter M6 | -| Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | -| Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | Foreach.cs:38:26:38:26 | String x | -| Foreach.cs:38:26:38:26 | String x | Foreach.cs:38:26:38:26 | String x | -| Initializers.cs:3:7:3:18 | enter | Initializers.cs:3:7:3:18 | enter | -| Initializers.cs:3:7:3:18 | enter Initializers | Initializers.cs:3:7:3:18 | enter Initializers | -| Initializers.cs:8:5:8:16 | enter Initializers | Initializers.cs:8:5:8:16 | enter Initializers | -| Initializers.cs:10:5:10:16 | enter Initializers | Initializers.cs:10:5:10:16 | enter Initializers | -| Initializers.cs:12:10:12:10 | enter M | Initializers.cs:12:10:12:10 | enter M | -| Initializers.cs:18:16:18:16 | enter H | Initializers.cs:18:16:18:16 | enter H | -| Initializers.cs:20:11:20:23 | enter | Initializers.cs:20:11:20:23 | enter | -| Initializers.cs:20:11:20:23 | enter NoConstructor | Initializers.cs:20:11:20:23 | enter NoConstructor | -| Initializers.cs:26:11:26:13 | enter | Initializers.cs:26:11:26:13 | enter | -| Initializers.cs:31:9:31:11 | enter Sub | Initializers.cs:31:9:31:11 | enter Sub | -| Initializers.cs:33:9:33:11 | enter Sub | Initializers.cs:33:9:33:11 | enter Sub | -| Initializers.cs:35:9:35:11 | enter Sub | Initializers.cs:35:9:35:11 | enter Sub | -| Initializers.cs:39:7:39:23 | enter IndexInitializers | Initializers.cs:39:7:39:23 | enter IndexInitializers | -| Initializers.cs:41:11:41:18 | enter Compound | Initializers.cs:41:11:41:18 | enter Compound | -| Initializers.cs:51:10:51:13 | enter Test | Initializers.cs:51:10:51:13 | enter Test | -| LoopUnrolling.cs:5:7:5:19 | enter LoopUnrolling | LoopUnrolling.cs:5:7:5:19 | enter LoopUnrolling | -| LoopUnrolling.cs:7:10:7:11 | enter M1 | LoopUnrolling.cs:7:10:7:11 | enter M1 | -| LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | LoopUnrolling.cs:7:10:7:11 | enter M1 | -| LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | -| LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | LoopUnrolling.cs:10:13:10:19 | return ...; | -| LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | LoopUnrolling.cs:11:22:11:24 | String arg | -| LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | LoopUnrolling.cs:11:29:11:32 | access to parameter args | -| LoopUnrolling.cs:10:13:10:19 | return ...; | LoopUnrolling.cs:10:13:10:19 | return ...; | -| LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:11:22:11:24 | String arg | -| LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:11:29:11:32 | access to parameter args | +| Foreach.cs:20:22:20:22 | String x | Foreach.cs:20:27:20:68 | After ... ?? ... [non-empty] | +| Foreach.cs:20:22:20:22 | String x | Foreach.cs:20:43:20:68 | After call to method Empty [non-empty] | +| Foreach.cs:20:27:20:27 | After access to parameter e [non-null] | Foreach.cs:20:27:20:27 | After access to parameter e [non-null] | +| Foreach.cs:20:27:20:27 | After access to parameter e [null] | Foreach.cs:20:27:20:27 | After access to parameter e [null] | +| Foreach.cs:20:27:20:38 | After call to method ToArray [non-null] | Foreach.cs:20:27:20:38 | After call to method ToArray [non-null] | +| Foreach.cs:20:27:20:38 | After call to method ToArray [null] | Foreach.cs:20:27:20:27 | After access to parameter e [null] | +| Foreach.cs:20:27:20:38 | After call to method ToArray [null] | Foreach.cs:20:27:20:38 | After call to method ToArray [null] | +| Foreach.cs:20:27:20:68 | After ... ?? ... [empty] | Foreach.cs:20:27:20:68 | After ... ?? ... [empty] | +| Foreach.cs:20:27:20:68 | After ... ?? ... [empty] | Foreach.cs:20:43:20:68 | After call to method Empty [empty] | +| Foreach.cs:20:27:20:68 | After ... ?? ... [non-empty] | Foreach.cs:20:27:20:68 | After ... ?? ... [non-empty] | +| Foreach.cs:20:27:20:68 | After ... ?? ... [non-empty] | Foreach.cs:20:43:20:68 | After call to method Empty [non-empty] | +| Foreach.cs:20:43:20:68 | After call to method Empty [empty] | Foreach.cs:20:43:20:68 | After call to method Empty [empty] | +| Foreach.cs:20:43:20:68 | After call to method Empty [non-empty] | Foreach.cs:20:43:20:68 | After call to method Empty [non-empty] | +| Foreach.cs:24:10:24:11 | Entry | Foreach.cs:24:10:24:11 | Entry | +| Foreach.cs:26:9:27:11 | After foreach (... ... in ...) ... | Foreach.cs:24:10:24:11 | Entry | +| Foreach.cs:26:9:27:11 | After foreach (... ... in ...) ... | Foreach.cs:26:9:27:11 | After foreach (... ... in ...) ... | +| Foreach.cs:26:9:27:11 | After foreach (... ... in ...) ... | Foreach.cs:26:18:26:31 | Before (..., ...) | +| Foreach.cs:26:9:27:11 | After foreach (... ... in ...) ... | Foreach.cs:26:36:26:39 | After access to parameter args [empty] | +| Foreach.cs:26:9:27:11 | After foreach (... ... in ...) ... | Foreach.cs:26:36:26:39 | After access to parameter args [non-empty] | +| Foreach.cs:26:18:26:31 | Before (..., ...) | Foreach.cs:26:18:26:31 | Before (..., ...) | +| Foreach.cs:26:18:26:31 | Before (..., ...) | Foreach.cs:26:36:26:39 | After access to parameter args [non-empty] | +| Foreach.cs:26:36:26:39 | After access to parameter args [empty] | Foreach.cs:26:36:26:39 | After access to parameter args [empty] | +| Foreach.cs:26:36:26:39 | After access to parameter args [non-empty] | Foreach.cs:26:36:26:39 | After access to parameter args [non-empty] | +| Foreach.cs:30:10:30:11 | Entry | Foreach.cs:30:10:30:11 | Entry | +| Foreach.cs:32:9:33:11 | After foreach (... ... in ...) ... | Foreach.cs:30:10:30:11 | Entry | +| Foreach.cs:32:9:33:11 | After foreach (... ... in ...) ... | Foreach.cs:32:9:33:11 | After foreach (... ... in ...) ... | +| Foreach.cs:32:9:33:11 | After foreach (... ... in ...) ... | Foreach.cs:32:18:32:27 | Before (..., ...) | +| Foreach.cs:32:9:33:11 | After foreach (... ... in ...) ... | Foreach.cs:32:32:32:35 | After access to parameter args [empty] | +| Foreach.cs:32:9:33:11 | After foreach (... ... in ...) ... | Foreach.cs:32:32:32:35 | After access to parameter args [non-empty] | +| Foreach.cs:32:18:32:27 | Before (..., ...) | Foreach.cs:32:18:32:27 | Before (..., ...) | +| Foreach.cs:32:18:32:27 | Before (..., ...) | Foreach.cs:32:32:32:35 | After access to parameter args [non-empty] | +| Foreach.cs:32:32:32:35 | After access to parameter args [empty] | Foreach.cs:32:32:32:35 | After access to parameter args [empty] | +| Foreach.cs:32:32:32:35 | After access to parameter args [non-empty] | Foreach.cs:32:32:32:35 | After access to parameter args [non-empty] | +| Foreach.cs:36:10:36:11 | Entry | Foreach.cs:36:10:36:11 | Entry | +| Foreach.cs:38:9:39:11 | After foreach (... ... in ...) ... | Foreach.cs:36:10:36:11 | Entry | +| Foreach.cs:38:9:39:11 | After foreach (... ... in ...) ... | Foreach.cs:38:9:39:11 | After foreach (... ... in ...) ... | +| Foreach.cs:38:9:39:11 | After foreach (... ... in ...) ... | Foreach.cs:38:18:38:34 | Before (..., ...) | +| Foreach.cs:38:9:39:11 | After foreach (... ... in ...) ... | Foreach.cs:38:39:38:42 | After access to parameter args [empty] | +| Foreach.cs:38:9:39:11 | After foreach (... ... in ...) ... | Foreach.cs:38:39:38:42 | After access to parameter args [non-empty] | +| Foreach.cs:38:18:38:34 | Before (..., ...) | Foreach.cs:38:18:38:34 | Before (..., ...) | +| Foreach.cs:38:18:38:34 | Before (..., ...) | Foreach.cs:38:39:38:42 | After access to parameter args [non-empty] | +| Foreach.cs:38:39:38:42 | After access to parameter args [empty] | Foreach.cs:38:39:38:42 | After access to parameter args [empty] | +| Foreach.cs:38:39:38:42 | After access to parameter args [non-empty] | Foreach.cs:38:39:38:42 | After access to parameter args [non-empty] | +| Initializers.cs:3:7:3:18 | Entry | Initializers.cs:3:7:3:18 | Entry | +| Initializers.cs:3:7:3:18 | Entry | Initializers.cs:3:7:3:18 | Entry | +| Initializers.cs:8:5:8:16 | Entry | Initializers.cs:8:5:8:16 | Entry | +| Initializers.cs:10:5:10:16 | Entry | Initializers.cs:10:5:10:16 | Entry | +| Initializers.cs:12:10:12:10 | Entry | Initializers.cs:12:10:12:10 | Entry | +| Initializers.cs:20:11:20:23 | Entry | Initializers.cs:20:11:20:23 | Entry | +| Initializers.cs:20:11:20:23 | Entry | Initializers.cs:20:11:20:23 | Entry | +| Initializers.cs:26:11:26:13 | Entry | Initializers.cs:26:11:26:13 | Entry | +| Initializers.cs:31:9:31:11 | Entry | Initializers.cs:31:9:31:11 | Entry | +| Initializers.cs:33:9:33:11 | Entry | Initializers.cs:33:9:33:11 | Entry | +| Initializers.cs:35:9:35:11 | Entry | Initializers.cs:35:9:35:11 | Entry | +| Initializers.cs:39:7:39:23 | Entry | Initializers.cs:39:7:39:23 | Entry | +| Initializers.cs:41:11:41:18 | Entry | Initializers.cs:41:11:41:18 | Entry | +| Initializers.cs:51:10:51:13 | Entry | Initializers.cs:51:10:51:13 | Entry | +| LoopUnrolling.cs:5:7:5:19 | Entry | LoopUnrolling.cs:5:7:5:19 | Entry | +| LoopUnrolling.cs:7:10:7:11 | Entry | LoopUnrolling.cs:7:10:7:11 | Entry | +| LoopUnrolling.cs:7:10:7:11 | Normal Exit | LoopUnrolling.cs:7:10:7:11 | Entry | +| LoopUnrolling.cs:7:10:7:11 | Normal Exit | LoopUnrolling.cs:7:10:7:11 | Normal Exit | +| LoopUnrolling.cs:7:10:7:11 | Normal Exit | LoopUnrolling.cs:9:13:9:28 | After ... == ... [false] | +| LoopUnrolling.cs:7:10:7:11 | Normal Exit | LoopUnrolling.cs:9:13:9:28 | After ... == ... [true] | +| LoopUnrolling.cs:7:10:7:11 | Normal Exit | LoopUnrolling.cs:11:9:12:35 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:7:10:7:11 | Normal Exit | LoopUnrolling.cs:11:22:11:24 | String arg | +| LoopUnrolling.cs:7:10:7:11 | Normal Exit | LoopUnrolling.cs:11:29:11:32 | After access to parameter args [empty] | +| LoopUnrolling.cs:7:10:7:11 | Normal Exit | LoopUnrolling.cs:11:29:11:32 | After access to parameter args [non-empty] | +| LoopUnrolling.cs:9:13:9:28 | After ... == ... [false] | LoopUnrolling.cs:9:13:9:28 | After ... == ... [false] | +| LoopUnrolling.cs:9:13:9:28 | After ... == ... [true] | LoopUnrolling.cs:9:13:9:28 | After ... == ... [true] | +| LoopUnrolling.cs:11:9:12:35 | After foreach (... ... in ...) ... | LoopUnrolling.cs:9:13:9:28 | After ... == ... [false] | +| LoopUnrolling.cs:11:9:12:35 | After foreach (... ... in ...) ... | LoopUnrolling.cs:11:9:12:35 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:11:9:12:35 | After foreach (... ... in ...) ... | LoopUnrolling.cs:11:22:11:24 | String arg | +| LoopUnrolling.cs:11:9:12:35 | After foreach (... ... in ...) ... | LoopUnrolling.cs:11:29:11:32 | After access to parameter args [empty] | +| LoopUnrolling.cs:11:9:12:35 | After foreach (... ... in ...) ... | LoopUnrolling.cs:11:29:11:32 | After access to parameter args [non-empty] | | LoopUnrolling.cs:11:22:11:24 | String arg | LoopUnrolling.cs:11:22:11:24 | String arg | -| LoopUnrolling.cs:11:29:11:32 | access to parameter args | LoopUnrolling.cs:11:29:11:32 | access to parameter args | -| LoopUnrolling.cs:15:10:15:11 | enter M2 | LoopUnrolling.cs:15:10:15:11 | enter M2 | -| LoopUnrolling.cs:15:10:15:11 | exit M2 (normal) | LoopUnrolling.cs:15:10:15:11 | enter M2 | -| LoopUnrolling.cs:15:10:15:11 | exit M2 (normal) | LoopUnrolling.cs:15:10:15:11 | exit M2 (normal) | -| LoopUnrolling.cs:15:10:15:11 | exit M2 (normal) | LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:15:10:15:11 | exit M2 (normal) | LoopUnrolling.cs:18:22:18:22 | String x | -| LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:15:10:15:11 | enter M2 | -| LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:18:22:18:22 | String x | +| LoopUnrolling.cs:11:22:11:24 | String arg | LoopUnrolling.cs:11:29:11:32 | After access to parameter args [non-empty] | +| LoopUnrolling.cs:11:29:11:32 | After access to parameter args [empty] | LoopUnrolling.cs:11:29:11:32 | After access to parameter args [empty] | +| LoopUnrolling.cs:11:29:11:32 | After access to parameter args [non-empty] | LoopUnrolling.cs:11:29:11:32 | After access to parameter args [non-empty] | +| LoopUnrolling.cs:15:10:15:11 | Entry | LoopUnrolling.cs:15:10:15:11 | Entry | +| LoopUnrolling.cs:18:9:19:33 | After foreach (... ... in ...) ... | LoopUnrolling.cs:15:10:15:11 | Entry | +| LoopUnrolling.cs:18:9:19:33 | After foreach (... ... in ...) ... | LoopUnrolling.cs:18:9:19:33 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:18:9:19:33 | After foreach (... ... in ...) ... | LoopUnrolling.cs:18:22:18:22 | String x | +| LoopUnrolling.cs:18:9:19:33 | After foreach (... ... in ...) ... | LoopUnrolling.cs:18:27:18:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:18:9:19:33 | After foreach (... ... in ...) ... | LoopUnrolling.cs:18:27:18:28 | After access to local variable xs [non-empty] | | LoopUnrolling.cs:18:22:18:22 | String x | LoopUnrolling.cs:18:22:18:22 | String x | -| LoopUnrolling.cs:22:10:22:11 | enter M3 | LoopUnrolling.cs:22:10:22:11 | enter M3 | -| LoopUnrolling.cs:22:10:22:11 | exit M3 (normal) | LoopUnrolling.cs:22:10:22:11 | enter M3 | -| LoopUnrolling.cs:22:10:22:11 | exit M3 (normal) | LoopUnrolling.cs:22:10:22:11 | exit M3 (normal) | -| LoopUnrolling.cs:22:10:22:11 | exit M3 (normal) | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:22:10:22:11 | exit M3 (normal) | LoopUnrolling.cs:24:22:24:24 | Char arg | -| LoopUnrolling.cs:22:10:22:11 | exit M3 (normal) | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:22:10:22:11 | exit M3 (normal) | LoopUnrolling.cs:25:26:25:29 | Char arg0 | -| LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:22:10:22:11 | enter M3 | -| LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:24:22:24:24 | Char arg | -| LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:25:26:25:29 | Char arg0 | +| LoopUnrolling.cs:18:22:18:22 | String x | LoopUnrolling.cs:18:27:18:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:18:27:18:28 | After access to local variable xs [empty] | LoopUnrolling.cs:18:27:18:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:18:27:18:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:18:27:18:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:22:10:22:11 | Entry | LoopUnrolling.cs:22:10:22:11 | Entry | +| LoopUnrolling.cs:24:9:26:40 | After foreach (... ... in ...) ... | LoopUnrolling.cs:22:10:22:11 | Entry | +| LoopUnrolling.cs:24:9:26:40 | After foreach (... ... in ...) ... | LoopUnrolling.cs:24:9:26:40 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:24:9:26:40 | After foreach (... ... in ...) ... | LoopUnrolling.cs:24:22:24:24 | Char arg | +| LoopUnrolling.cs:24:9:26:40 | After foreach (... ... in ...) ... | LoopUnrolling.cs:24:29:24:32 | After access to parameter args [empty] | +| LoopUnrolling.cs:24:9:26:40 | After foreach (... ... in ...) ... | LoopUnrolling.cs:24:29:24:32 | After access to parameter args [non-empty] | +| LoopUnrolling.cs:24:9:26:40 | After foreach (... ... in ...) ... | LoopUnrolling.cs:25:13:26:40 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:24:9:26:40 | After foreach (... ... in ...) ... | LoopUnrolling.cs:25:26:25:29 | Char arg0 | +| LoopUnrolling.cs:24:9:26:40 | After foreach (... ... in ...) ... | LoopUnrolling.cs:25:34:25:37 | After access to parameter args [empty] | +| LoopUnrolling.cs:24:9:26:40 | After foreach (... ... in ...) ... | LoopUnrolling.cs:25:34:25:37 | After access to parameter args [non-empty] | | LoopUnrolling.cs:24:22:24:24 | Char arg | LoopUnrolling.cs:24:22:24:24 | Char arg | -| LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:24:22:24:24 | Char arg | -| LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:25:26:25:29 | Char arg0 | +| LoopUnrolling.cs:24:22:24:24 | Char arg | LoopUnrolling.cs:24:29:24:32 | After access to parameter args [non-empty] | +| LoopUnrolling.cs:24:29:24:32 | After access to parameter args [empty] | LoopUnrolling.cs:24:29:24:32 | After access to parameter args [empty] | +| LoopUnrolling.cs:24:29:24:32 | After access to parameter args [non-empty] | LoopUnrolling.cs:24:29:24:32 | After access to parameter args [non-empty] | +| LoopUnrolling.cs:25:13:26:40 | After foreach (... ... in ...) ... | LoopUnrolling.cs:24:22:24:24 | Char arg | +| LoopUnrolling.cs:25:13:26:40 | After foreach (... ... in ...) ... | LoopUnrolling.cs:24:29:24:32 | After access to parameter args [non-empty] | +| LoopUnrolling.cs:25:13:26:40 | After foreach (... ... in ...) ... | LoopUnrolling.cs:25:13:26:40 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:25:13:26:40 | After foreach (... ... in ...) ... | LoopUnrolling.cs:25:26:25:29 | Char arg0 | +| LoopUnrolling.cs:25:13:26:40 | After foreach (... ... in ...) ... | LoopUnrolling.cs:25:34:25:37 | After access to parameter args [empty] | +| LoopUnrolling.cs:25:13:26:40 | After foreach (... ... in ...) ... | LoopUnrolling.cs:25:34:25:37 | After access to parameter args [non-empty] | | LoopUnrolling.cs:25:26:25:29 | Char arg0 | LoopUnrolling.cs:25:26:25:29 | Char arg0 | -| LoopUnrolling.cs:29:10:29:11 | enter M4 | LoopUnrolling.cs:29:10:29:11 | enter M4 | -| LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | LoopUnrolling.cs:29:10:29:11 | enter M4 | -| LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | -| LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | LoopUnrolling.cs:32:22:32:22 | String x | -| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:29:10:29:11 | enter M4 | -| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:32:22:32:22 | String x | +| LoopUnrolling.cs:25:26:25:29 | Char arg0 | LoopUnrolling.cs:25:34:25:37 | After access to parameter args [non-empty] | +| LoopUnrolling.cs:25:34:25:37 | After access to parameter args [empty] | LoopUnrolling.cs:25:34:25:37 | After access to parameter args [empty] | +| LoopUnrolling.cs:25:34:25:37 | After access to parameter args [non-empty] | LoopUnrolling.cs:25:34:25:37 | After access to parameter args [non-empty] | +| LoopUnrolling.cs:29:10:29:11 | Entry | LoopUnrolling.cs:29:10:29:11 | Entry | +| LoopUnrolling.cs:32:9:33:33 | After foreach (... ... in ...) ... | LoopUnrolling.cs:29:10:29:11 | Entry | +| LoopUnrolling.cs:32:9:33:33 | After foreach (... ... in ...) ... | LoopUnrolling.cs:32:9:33:33 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:32:9:33:33 | After foreach (... ... in ...) ... | LoopUnrolling.cs:32:22:32:22 | String x | +| LoopUnrolling.cs:32:9:33:33 | After foreach (... ... in ...) ... | LoopUnrolling.cs:32:27:32:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:32:9:33:33 | After foreach (... ... in ...) ... | LoopUnrolling.cs:32:27:32:28 | After access to local variable xs [non-empty] | | LoopUnrolling.cs:32:22:32:22 | String x | LoopUnrolling.cs:32:22:32:22 | String x | -| LoopUnrolling.cs:36:10:36:11 | enter M5 | LoopUnrolling.cs:36:10:36:11 | enter M5 | -| LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | LoopUnrolling.cs:36:10:36:11 | enter M5 | -| LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | -| LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | LoopUnrolling.cs:40:22:40:22 | String x | -| LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | LoopUnrolling.cs:41:26:41:26 | String y | -| LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:36:10:36:11 | enter M5 | -| LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:40:22:40:22 | String x | -| LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:41:26:41:26 | String y | +| LoopUnrolling.cs:32:22:32:22 | String x | LoopUnrolling.cs:32:27:32:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:32:27:32:28 | After access to local variable xs [empty] | LoopUnrolling.cs:32:27:32:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:32:27:32:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:32:27:32:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:36:10:36:11 | Entry | LoopUnrolling.cs:36:10:36:11 | Entry | +| LoopUnrolling.cs:40:9:42:41 | After foreach (... ... in ...) ... | LoopUnrolling.cs:36:10:36:11 | Entry | +| LoopUnrolling.cs:40:9:42:41 | After foreach (... ... in ...) ... | LoopUnrolling.cs:40:9:42:41 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:40:9:42:41 | After foreach (... ... in ...) ... | LoopUnrolling.cs:40:22:40:22 | String x | +| LoopUnrolling.cs:40:9:42:41 | After foreach (... ... in ...) ... | LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:40:9:42:41 | After foreach (... ... in ...) ... | LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:40:9:42:41 | After foreach (... ... in ...) ... | LoopUnrolling.cs:41:13:42:41 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:40:9:42:41 | After foreach (... ... in ...) ... | LoopUnrolling.cs:41:26:41:26 | String y | +| LoopUnrolling.cs:40:9:42:41 | After foreach (... ... in ...) ... | LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [empty] | +| LoopUnrolling.cs:40:9:42:41 | After foreach (... ... in ...) ... | LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [non-empty] | | LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:40:22:40:22 | String x | -| LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:40:22:40:22 | String x | -| LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:41:26:41:26 | String y | +| LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [empty] | LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:41:13:42:41 | After foreach (... ... in ...) ... | LoopUnrolling.cs:40:22:40:22 | String x | +| LoopUnrolling.cs:41:13:42:41 | After foreach (... ... in ...) ... | LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:41:13:42:41 | After foreach (... ... in ...) ... | LoopUnrolling.cs:41:13:42:41 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:41:13:42:41 | After foreach (... ... in ...) ... | LoopUnrolling.cs:41:26:41:26 | String y | +| LoopUnrolling.cs:41:13:42:41 | After foreach (... ... in ...) ... | LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [empty] | +| LoopUnrolling.cs:41:13:42:41 | After foreach (... ... in ...) ... | LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [non-empty] | | LoopUnrolling.cs:41:26:41:26 | String y | LoopUnrolling.cs:41:26:41:26 | String y | -| LoopUnrolling.cs:45:10:45:11 | enter M6 | LoopUnrolling.cs:45:10:45:11 | enter M6 | -| LoopUnrolling.cs:45:10:45:11 | exit M6 (normal) | LoopUnrolling.cs:45:10:45:11 | enter M6 | -| LoopUnrolling.cs:45:10:45:11 | exit M6 (normal) | LoopUnrolling.cs:45:10:45:11 | exit M6 (normal) | -| LoopUnrolling.cs:48:22:48:22 | String x | LoopUnrolling.cs:48:22:48:22 | String x | +| LoopUnrolling.cs:41:26:41:26 | String y | LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [non-empty] | +| LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [empty] | LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [empty] | +| LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [non-empty] | LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [non-empty] | +| LoopUnrolling.cs:45:10:45:11 | Entry | LoopUnrolling.cs:45:10:45:11 | Entry | +| LoopUnrolling.cs:48:27:48:28 | After access to local variable xs [empty] | LoopUnrolling.cs:45:10:45:11 | Entry | +| LoopUnrolling.cs:48:27:48:28 | After access to local variable xs [empty] | LoopUnrolling.cs:48:27:48:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:48:27:48:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:48:27:48:28 | After access to local variable xs [non-empty] | | LoopUnrolling.cs:50:9:50:13 | Label: | LoopUnrolling.cs:50:9:50:13 | Label: | -| LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:55:10:55:11 | enter M7 | -| LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | LoopUnrolling.cs:55:10:55:11 | enter M7 | -| LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | -| LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | LoopUnrolling.cs:58:22:58:22 | String x | -| LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | LoopUnrolling.cs:61:17:61:37 | ...; | -| LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | LoopUnrolling.cs:62:13:63:37 | if (...) ... | -| LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | LoopUnrolling.cs:63:17:63:37 | ...; | -| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:55:10:55:11 | enter M7 | -| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:58:22:58:22 | String x | -| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:61:17:61:37 | ...; | -| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:62:13:63:37 | if (...) ... | -| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:63:17:63:37 | ...; | +| LoopUnrolling.cs:55:10:55:11 | Entry | LoopUnrolling.cs:55:10:55:11 | Entry | +| LoopUnrolling.cs:58:9:64:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:55:10:55:11 | Entry | +| LoopUnrolling.cs:58:9:64:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:58:9:64:9 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:58:9:64:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:58:22:58:22 | String x | +| LoopUnrolling.cs:58:9:64:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:58:9:64:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:58:9:64:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:60:13:61:37 | After if (...) ... | +| LoopUnrolling.cs:58:9:64:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:60:17:60:17 | After access to parameter b [false] | +| LoopUnrolling.cs:58:9:64:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:60:17:60:17 | After access to parameter b [true] | +| LoopUnrolling.cs:58:9:64:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:62:13:63:37 | After if (...) ... | +| LoopUnrolling.cs:58:9:64:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:62:17:62:17 | After access to parameter b [false] | +| LoopUnrolling.cs:58:9:64:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:62:17:62:17 | After access to parameter b [true] | | LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:58:22:58:22 | String x | -| LoopUnrolling.cs:61:17:61:37 | ...; | LoopUnrolling.cs:61:17:61:37 | ...; | -| LoopUnrolling.cs:62:13:63:37 | if (...) ... | LoopUnrolling.cs:58:22:58:22 | String x | -| LoopUnrolling.cs:62:13:63:37 | if (...) ... | LoopUnrolling.cs:61:17:61:37 | ...; | -| LoopUnrolling.cs:62:13:63:37 | if (...) ... | LoopUnrolling.cs:62:13:63:37 | if (...) ... | -| LoopUnrolling.cs:63:17:63:37 | ...; | LoopUnrolling.cs:63:17:63:37 | ...; | -| LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:67:10:67:11 | enter M8 | -| LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | LoopUnrolling.cs:67:10:67:11 | enter M8 | -| LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | -| LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | LoopUnrolling.cs:69:13:69:23 | [false] !... | -| LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | LoopUnrolling.cs:69:13:69:23 | [true] !... | -| LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | LoopUnrolling.cs:70:13:70:19 | return ...; | -| LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | LoopUnrolling.cs:71:9:71:21 | ...; | -| LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | LoopUnrolling.cs:72:22:72:24 | String arg | -| LoopUnrolling.cs:69:13:69:23 | [false] !... | LoopUnrolling.cs:69:13:69:23 | [false] !... | -| LoopUnrolling.cs:69:13:69:23 | [true] !... | LoopUnrolling.cs:69:13:69:23 | [true] !... | -| LoopUnrolling.cs:70:13:70:19 | return ...; | LoopUnrolling.cs:69:13:69:23 | [true] !... | -| LoopUnrolling.cs:70:13:70:19 | return ...; | LoopUnrolling.cs:70:13:70:19 | return ...; | -| LoopUnrolling.cs:71:9:71:21 | ...; | LoopUnrolling.cs:69:13:69:23 | [false] !... | -| LoopUnrolling.cs:71:9:71:21 | ...; | LoopUnrolling.cs:71:9:71:21 | ...; | -| LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:69:13:69:23 | [false] !... | -| LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:71:9:71:21 | ...; | -| LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:72:22:72:24 | String arg | +| LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [empty] | LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:60:13:61:37 | After if (...) ... | LoopUnrolling.cs:58:22:58:22 | String x | +| LoopUnrolling.cs:60:13:61:37 | After if (...) ... | LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:60:13:61:37 | After if (...) ... | LoopUnrolling.cs:60:13:61:37 | After if (...) ... | +| LoopUnrolling.cs:60:13:61:37 | After if (...) ... | LoopUnrolling.cs:60:17:60:17 | After access to parameter b [false] | +| LoopUnrolling.cs:60:13:61:37 | After if (...) ... | LoopUnrolling.cs:60:17:60:17 | After access to parameter b [true] | +| LoopUnrolling.cs:60:17:60:17 | After access to parameter b [false] | LoopUnrolling.cs:60:17:60:17 | After access to parameter b [false] | +| LoopUnrolling.cs:60:17:60:17 | After access to parameter b [true] | LoopUnrolling.cs:60:17:60:17 | After access to parameter b [true] | +| LoopUnrolling.cs:62:13:63:37 | After if (...) ... | LoopUnrolling.cs:58:22:58:22 | String x | +| LoopUnrolling.cs:62:13:63:37 | After if (...) ... | LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:62:13:63:37 | After if (...) ... | LoopUnrolling.cs:60:13:61:37 | After if (...) ... | +| LoopUnrolling.cs:62:13:63:37 | After if (...) ... | LoopUnrolling.cs:60:17:60:17 | After access to parameter b [false] | +| LoopUnrolling.cs:62:13:63:37 | After if (...) ... | LoopUnrolling.cs:60:17:60:17 | After access to parameter b [true] | +| LoopUnrolling.cs:62:13:63:37 | After if (...) ... | LoopUnrolling.cs:62:13:63:37 | After if (...) ... | +| LoopUnrolling.cs:62:13:63:37 | After if (...) ... | LoopUnrolling.cs:62:17:62:17 | After access to parameter b [false] | +| LoopUnrolling.cs:62:13:63:37 | After if (...) ... | LoopUnrolling.cs:62:17:62:17 | After access to parameter b [true] | +| LoopUnrolling.cs:62:17:62:17 | After access to parameter b [false] | LoopUnrolling.cs:62:17:62:17 | After access to parameter b [false] | +| LoopUnrolling.cs:62:17:62:17 | After access to parameter b [true] | LoopUnrolling.cs:62:17:62:17 | After access to parameter b [true] | +| LoopUnrolling.cs:67:10:67:11 | Entry | LoopUnrolling.cs:67:10:67:11 | Entry | +| LoopUnrolling.cs:67:10:67:11 | Normal Exit | LoopUnrolling.cs:67:10:67:11 | Entry | +| LoopUnrolling.cs:67:10:67:11 | Normal Exit | LoopUnrolling.cs:67:10:67:11 | Normal Exit | +| LoopUnrolling.cs:67:10:67:11 | Normal Exit | LoopUnrolling.cs:69:14:69:23 | After call to method Any [false] | +| LoopUnrolling.cs:67:10:67:11 | Normal Exit | LoopUnrolling.cs:69:14:69:23 | After call to method Any [true] | +| LoopUnrolling.cs:67:10:67:11 | Normal Exit | LoopUnrolling.cs:72:9:73:35 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:67:10:67:11 | Normal Exit | LoopUnrolling.cs:72:22:72:24 | String arg | +| LoopUnrolling.cs:67:10:67:11 | Normal Exit | LoopUnrolling.cs:72:29:72:32 | After access to parameter args [empty] | +| LoopUnrolling.cs:67:10:67:11 | Normal Exit | LoopUnrolling.cs:72:29:72:32 | After access to parameter args [non-empty] | +| LoopUnrolling.cs:69:14:69:23 | After call to method Any [false] | LoopUnrolling.cs:69:14:69:23 | After call to method Any [false] | +| LoopUnrolling.cs:69:14:69:23 | After call to method Any [true] | LoopUnrolling.cs:69:14:69:23 | After call to method Any [true] | +| LoopUnrolling.cs:72:9:73:35 | After foreach (... ... in ...) ... | LoopUnrolling.cs:69:14:69:23 | After call to method Any [true] | +| LoopUnrolling.cs:72:9:73:35 | After foreach (... ... in ...) ... | LoopUnrolling.cs:72:9:73:35 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:72:9:73:35 | After foreach (... ... in ...) ... | LoopUnrolling.cs:72:22:72:24 | String arg | +| LoopUnrolling.cs:72:9:73:35 | After foreach (... ... in ...) ... | LoopUnrolling.cs:72:29:72:32 | After access to parameter args [empty] | +| LoopUnrolling.cs:72:9:73:35 | After foreach (... ... in ...) ... | LoopUnrolling.cs:72:29:72:32 | After access to parameter args [non-empty] | | LoopUnrolling.cs:72:22:72:24 | String arg | LoopUnrolling.cs:72:22:72:24 | String arg | -| LoopUnrolling.cs:76:10:76:11 | enter M9 | LoopUnrolling.cs:76:10:76:11 | enter M9 | -| LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | LoopUnrolling.cs:76:10:76:11 | enter M9 | -| LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | -| LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | LoopUnrolling.cs:79:22:79:22 | String x | -| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:76:10:76:11 | enter M9 | -| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:79:22:79:22 | String x | +| LoopUnrolling.cs:72:22:72:24 | String arg | LoopUnrolling.cs:72:29:72:32 | After access to parameter args [non-empty] | +| LoopUnrolling.cs:72:29:72:32 | After access to parameter args [empty] | LoopUnrolling.cs:72:29:72:32 | After access to parameter args [empty] | +| LoopUnrolling.cs:72:29:72:32 | After access to parameter args [non-empty] | LoopUnrolling.cs:72:29:72:32 | After access to parameter args [non-empty] | +| LoopUnrolling.cs:76:10:76:11 | Entry | LoopUnrolling.cs:76:10:76:11 | Entry | +| LoopUnrolling.cs:79:9:82:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:76:10:76:11 | Entry | +| LoopUnrolling.cs:79:9:82:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:79:9:82:9 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:79:9:82:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:79:22:79:22 | String x | +| LoopUnrolling.cs:79:9:82:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:79:27:79:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:79:9:82:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:79:27:79:28 | After access to local variable xs [non-empty] | | LoopUnrolling.cs:79:22:79:22 | String x | LoopUnrolling.cs:79:22:79:22 | String x | -| LoopUnrolling.cs:85:10:85:12 | enter M10 | LoopUnrolling.cs:85:10:85:12 | enter M10 | -| LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | LoopUnrolling.cs:85:10:85:12 | enter M10 | -| LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | -| LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | LoopUnrolling.cs:88:22:88:22 | String x | -| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:85:10:85:12 | enter M10 | -| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:88:22:88:22 | String x | +| LoopUnrolling.cs:79:22:79:22 | String x | LoopUnrolling.cs:79:27:79:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:79:27:79:28 | After access to local variable xs [empty] | LoopUnrolling.cs:79:27:79:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:79:27:79:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:79:27:79:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:85:10:85:12 | Entry | LoopUnrolling.cs:85:10:85:12 | Entry | +| LoopUnrolling.cs:88:9:91:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:85:10:85:12 | Entry | +| LoopUnrolling.cs:88:9:91:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:88:9:91:9 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:88:9:91:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:88:22:88:22 | String x | +| LoopUnrolling.cs:88:9:91:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:88:27:88:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:88:9:91:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:88:27:88:28 | After access to local variable xs [non-empty] | | LoopUnrolling.cs:88:22:88:22 | String x | LoopUnrolling.cs:88:22:88:22 | String x | -| LoopUnrolling.cs:94:10:94:12 | enter M11 | LoopUnrolling.cs:94:10:94:12 | enter M11 | -| LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | LoopUnrolling.cs:94:10:94:12 | enter M11 | -| LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | -| LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | LoopUnrolling.cs:97:22:97:22 | String x | -| LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:94:10:94:12 | enter M11 | -| LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | -| LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:97:22:97:22 | String x | +| LoopUnrolling.cs:88:22:88:22 | String x | LoopUnrolling.cs:88:27:88:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:88:27:88:28 | After access to local variable xs [empty] | LoopUnrolling.cs:88:27:88:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:88:27:88:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:88:27:88:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:94:10:94:12 | Entry | LoopUnrolling.cs:94:10:94:12 | Entry | +| LoopUnrolling.cs:97:9:100:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:94:10:94:12 | Entry | +| LoopUnrolling.cs:97:9:100:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:97:9:100:9 | After foreach (... ... in ...) ... | +| LoopUnrolling.cs:97:9:100:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:97:22:97:22 | String x | +| LoopUnrolling.cs:97:9:100:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:97:27:97:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:97:9:100:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:97:27:97:28 | After access to local variable xs [non-empty] | | LoopUnrolling.cs:97:22:97:22 | String x | LoopUnrolling.cs:97:22:97:22 | String x | -| MultiImplementationA.cs:4:7:4:8 | enter C1 | MultiImplementationA.cs:4:7:4:8 | enter C1 | -| MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | MultiImplementationA.cs:4:7:4:8 | enter C1 | -| MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | -| MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | MultiImplementationA.cs:4:7:4:8 | this access | -| MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | MultiImplementationB.cs:1:7:1:8 | this access | -| MultiImplementationA.cs:4:7:4:8 | this access | MultiImplementationA.cs:4:7:4:8 | this access | -| MultiImplementationA.cs:6:22:6:31 | enter get_P1 | MultiImplementationA.cs:6:22:6:31 | enter get_P1 | -| MultiImplementationA.cs:6:22:6:31 | exit get_P1 | MultiImplementationA.cs:6:22:6:31 | exit get_P1 | -| MultiImplementationA.cs:6:28:6:31 | null | MultiImplementationA.cs:6:28:6:31 | null | -| MultiImplementationA.cs:7:21:7:23 | enter get_P2 | MultiImplementationA.cs:7:21:7:23 | enter get_P2 | -| MultiImplementationA.cs:7:21:7:23 | exit get_P2 | MultiImplementationA.cs:7:21:7:23 | exit get_P2 | +| LoopUnrolling.cs:97:22:97:22 | String x | LoopUnrolling.cs:97:27:97:28 | After access to local variable xs [non-empty] | +| LoopUnrolling.cs:97:27:97:28 | After access to local variable xs [empty] | LoopUnrolling.cs:97:27:97:28 | After access to local variable xs [empty] | +| LoopUnrolling.cs:97:27:97:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:97:27:97:28 | After access to local variable xs [non-empty] | +| MultiImplementationA.cs:4:7:4:8 | Before call to method | MultiImplementationA.cs:4:7:4:8 | Before call to method | +| MultiImplementationA.cs:4:7:4:8 | Entry | MultiImplementationA.cs:4:7:4:8 | Entry | +| MultiImplementationA.cs:4:7:4:8 | Normal Exit | MultiImplementationA.cs:4:7:4:8 | Before call to method | +| MultiImplementationA.cs:4:7:4:8 | Normal Exit | MultiImplementationA.cs:4:7:4:8 | Entry | +| MultiImplementationA.cs:4:7:4:8 | Normal Exit | MultiImplementationA.cs:4:7:4:8 | Normal Exit | +| MultiImplementationA.cs:4:7:4:8 | Normal Exit | MultiImplementationB.cs:1:7:1:8 | Before call to method | +| MultiImplementationA.cs:6:22:6:31 | Before throw ... | MultiImplementationA.cs:6:22:6:31 | Before throw ... | +| MultiImplementationA.cs:6:22:6:31 | Entry | MultiImplementationA.cs:6:22:6:31 | Entry | +| MultiImplementationA.cs:6:22:6:31 | Exit | MultiImplementationA.cs:6:22:6:31 | Exit | +| MultiImplementationA.cs:7:21:7:23 | Entry | MultiImplementationA.cs:7:21:7:23 | Entry | +| MultiImplementationA.cs:7:21:7:23 | Exit | MultiImplementationA.cs:7:21:7:23 | Exit | | MultiImplementationA.cs:7:25:7:39 | {...} | MultiImplementationA.cs:7:25:7:39 | {...} | -| MultiImplementationA.cs:7:41:7:43 | enter set_P2 | MultiImplementationA.cs:7:41:7:43 | enter set_P2 | -| MultiImplementationA.cs:7:41:7:43 | exit set_P2 | MultiImplementationA.cs:7:41:7:43 | exit set_P2 | +| MultiImplementationA.cs:7:41:7:43 | Entry | MultiImplementationA.cs:7:41:7:43 | Entry | +| MultiImplementationA.cs:7:41:7:43 | Exit | MultiImplementationA.cs:7:41:7:43 | Exit | | MultiImplementationA.cs:7:45:7:59 | {...} | MultiImplementationA.cs:7:45:7:59 | {...} | -| MultiImplementationA.cs:8:16:8:16 | enter M | MultiImplementationA.cs:8:16:8:16 | enter M | -| MultiImplementationA.cs:8:16:8:16 | exit M | MultiImplementationA.cs:8:16:8:16 | exit M | -| MultiImplementationA.cs:8:29:8:32 | null | MultiImplementationA.cs:8:29:8:32 | null | -| MultiImplementationA.cs:11:7:11:8 | enter | MultiImplementationA.cs:11:7:11:8 | enter | -| MultiImplementationA.cs:11:7:11:8 | exit (normal) | MultiImplementationA.cs:11:7:11:8 | enter | -| MultiImplementationA.cs:11:7:11:8 | exit (normal) | MultiImplementationA.cs:11:7:11:8 | exit (normal) | -| MultiImplementationA.cs:11:7:11:8 | exit (normal) | MultiImplementationA.cs:13:16:13:16 | this access | -| MultiImplementationA.cs:11:7:11:8 | exit (normal) | MultiImplementationB.cs:11:16:11:16 | this access | -| MultiImplementationA.cs:13:16:13:16 | this access | MultiImplementationA.cs:13:16:13:16 | this access | +| MultiImplementationA.cs:8:16:8:16 | Entry | MultiImplementationA.cs:8:16:8:16 | Entry | +| MultiImplementationA.cs:8:16:8:16 | Exit | MultiImplementationA.cs:8:16:8:16 | Exit | +| MultiImplementationA.cs:8:23:8:32 | Before throw ... | MultiImplementationA.cs:8:23:8:32 | Before throw ... | +| MultiImplementationA.cs:11:7:11:8 | Entry | MultiImplementationA.cs:11:7:11:8 | Entry | +| MultiImplementationA.cs:11:7:11:8 | Normal Exit | MultiImplementationA.cs:11:7:11:8 | Entry | +| MultiImplementationA.cs:11:7:11:8 | Normal Exit | MultiImplementationA.cs:11:7:11:8 | Normal Exit | +| MultiImplementationA.cs:11:7:11:8 | Normal Exit | MultiImplementationA.cs:13:16:13:20 | Before ... = ... | +| MultiImplementationA.cs:11:7:11:8 | Normal Exit | MultiImplementationB.cs:11:16:11:20 | Before ... = ... | +| MultiImplementationA.cs:13:16:13:20 | Before ... = ... | MultiImplementationA.cs:13:16:13:20 | Before ... = ... | +| MultiImplementationA.cs:14:31:14:31 | Entry | MultiImplementationA.cs:14:31:14:31 | Entry | +| MultiImplementationA.cs:14:31:14:31 | Exit | MultiImplementationA.cs:14:31:14:31 | Exit | +| MultiImplementationA.cs:14:31:14:31 | access to parameter i | MultiImplementationA.cs:14:31:14:31 | Entry | | MultiImplementationA.cs:14:31:14:31 | access to parameter i | MultiImplementationA.cs:14:31:14:31 | access to parameter i | -| MultiImplementationA.cs:14:31:14:31 | access to parameter i | MultiImplementationA.cs:14:31:14:31 | enter get_Item | -| MultiImplementationA.cs:14:31:14:31 | enter get_Item | MultiImplementationA.cs:14:31:14:31 | enter get_Item | -| MultiImplementationA.cs:14:31:14:31 | exit get_Item | MultiImplementationA.cs:14:31:14:31 | exit get_Item | -| MultiImplementationA.cs:15:36:15:38 | enter get_Item | MultiImplementationA.cs:15:36:15:38 | enter get_Item | -| MultiImplementationA.cs:15:36:15:38 | exit get_Item | MultiImplementationA.cs:15:36:15:38 | exit get_Item | -| MultiImplementationA.cs:15:40:15:52 | {...} | MultiImplementationA.cs:15:36:15:38 | enter get_Item | +| MultiImplementationA.cs:15:36:15:38 | Entry | MultiImplementationA.cs:15:36:15:38 | Entry | +| MultiImplementationA.cs:15:36:15:38 | Exit | MultiImplementationA.cs:15:36:15:38 | Exit | +| MultiImplementationA.cs:15:40:15:52 | {...} | MultiImplementationA.cs:15:36:15:38 | Entry | | MultiImplementationA.cs:15:40:15:52 | {...} | MultiImplementationA.cs:15:40:15:52 | {...} | -| MultiImplementationA.cs:15:54:15:56 | enter set_Item | MultiImplementationA.cs:15:54:15:56 | enter set_Item | -| MultiImplementationA.cs:15:54:15:56 | exit set_Item (normal) | MultiImplementationA.cs:15:54:15:56 | enter set_Item | -| MultiImplementationA.cs:15:54:15:56 | exit set_Item (normal) | MultiImplementationA.cs:15:54:15:56 | exit set_Item (normal) | -| MultiImplementationA.cs:15:54:15:56 | exit set_Item (normal) | MultiImplementationA.cs:15:58:15:60 | {...} | -| MultiImplementationA.cs:15:54:15:56 | exit set_Item (normal) | MultiImplementationB.cs:13:60:13:62 | {...} | +| MultiImplementationA.cs:15:54:15:56 | Entry | MultiImplementationA.cs:15:54:15:56 | Entry | +| MultiImplementationA.cs:15:54:15:56 | Normal Exit | MultiImplementationA.cs:15:54:15:56 | Entry | +| MultiImplementationA.cs:15:54:15:56 | Normal Exit | MultiImplementationA.cs:15:54:15:56 | Normal Exit | +| MultiImplementationA.cs:15:54:15:56 | Normal Exit | MultiImplementationA.cs:15:58:15:60 | {...} | +| MultiImplementationA.cs:15:54:15:56 | Normal Exit | MultiImplementationB.cs:13:60:13:62 | {...} | | MultiImplementationA.cs:15:58:15:60 | {...} | MultiImplementationA.cs:15:58:15:60 | {...} | -| MultiImplementationA.cs:16:17:16:18 | enter M1 | MultiImplementationA.cs:16:17:16:18 | enter M1 | -| MultiImplementationA.cs:16:17:16:18 | exit M1 (normal) | MultiImplementationA.cs:16:17:16:18 | enter M1 | -| MultiImplementationA.cs:16:17:16:18 | exit M1 (normal) | MultiImplementationA.cs:16:17:16:18 | exit M1 (normal) | -| MultiImplementationA.cs:16:17:16:18 | exit M1 (normal) | MultiImplementationA.cs:17:5:19:5 | {...} | -| MultiImplementationA.cs:16:17:16:18 | exit M1 (normal) | MultiImplementationB.cs:15:5:17:5 | {...} | +| MultiImplementationA.cs:16:17:16:18 | Entry | MultiImplementationA.cs:16:17:16:18 | Entry | +| MultiImplementationA.cs:16:17:16:18 | Normal Exit | MultiImplementationA.cs:16:17:16:18 | Entry | +| MultiImplementationA.cs:16:17:16:18 | Normal Exit | MultiImplementationA.cs:16:17:16:18 | Normal Exit | +| MultiImplementationA.cs:16:17:16:18 | Normal Exit | MultiImplementationA.cs:17:5:19:5 | {...} | +| MultiImplementationA.cs:16:17:16:18 | Normal Exit | MultiImplementationB.cs:15:5:17:5 | {...} | | MultiImplementationA.cs:17:5:19:5 | {...} | MultiImplementationA.cs:17:5:19:5 | {...} | -| MultiImplementationA.cs:18:9:18:22 | enter M2 | MultiImplementationA.cs:18:9:18:22 | enter M2 | -| MultiImplementationA.cs:20:12:20:13 | enter C2 | MultiImplementationA.cs:20:12:20:13 | enter C2 | -| MultiImplementationA.cs:20:12:20:13 | exit C2 | MultiImplementationA.cs:20:12:20:13 | exit C2 | -| MultiImplementationA.cs:20:12:20:13 | this access | MultiImplementationA.cs:20:12:20:13 | enter C2 | -| MultiImplementationA.cs:20:12:20:13 | this access | MultiImplementationA.cs:20:12:20:13 | this access | -| MultiImplementationA.cs:21:12:21:13 | enter C2 | MultiImplementationA.cs:21:12:21:13 | enter C2 | -| MultiImplementationA.cs:21:12:21:13 | exit C2 (normal) | MultiImplementationA.cs:21:12:21:13 | enter C2 | -| MultiImplementationA.cs:21:12:21:13 | exit C2 (normal) | MultiImplementationA.cs:21:12:21:13 | exit C2 (normal) | -| MultiImplementationA.cs:21:12:21:13 | exit C2 (normal) | MultiImplementationA.cs:21:24:21:24 | 0 | -| MultiImplementationA.cs:21:12:21:13 | exit C2 (normal) | MultiImplementationB.cs:19:24:19:24 | 1 | -| MultiImplementationA.cs:21:24:21:24 | 0 | MultiImplementationA.cs:21:24:21:24 | 0 | -| MultiImplementationA.cs:22:6:22:7 | enter ~C2 | MultiImplementationA.cs:22:6:22:7 | enter ~C2 | -| MultiImplementationA.cs:22:6:22:7 | exit ~C2 | MultiImplementationA.cs:22:6:22:7 | exit ~C2 | -| MultiImplementationA.cs:22:11:22:13 | {...} | MultiImplementationA.cs:22:6:22:7 | enter ~C2 | +| MultiImplementationA.cs:18:9:18:22 | Entry | MultiImplementationA.cs:18:9:18:22 | Entry | +| MultiImplementationA.cs:20:12:20:13 | Before call to method | MultiImplementationA.cs:20:12:20:13 | Before call to method | +| MultiImplementationA.cs:20:12:20:13 | Before call to method | MultiImplementationA.cs:20:12:20:13 | Entry | +| MultiImplementationA.cs:20:12:20:13 | Entry | MultiImplementationA.cs:20:12:20:13 | Entry | +| MultiImplementationA.cs:20:12:20:13 | Exit | MultiImplementationA.cs:20:12:20:13 | Exit | +| MultiImplementationA.cs:21:12:21:13 | Entry | MultiImplementationA.cs:21:12:21:13 | Entry | +| MultiImplementationA.cs:21:12:21:13 | Normal Exit | MultiImplementationA.cs:21:12:21:13 | Entry | +| MultiImplementationA.cs:21:12:21:13 | Normal Exit | MultiImplementationA.cs:21:12:21:13 | Normal Exit | +| MultiImplementationA.cs:21:12:21:13 | Normal Exit | MultiImplementationA.cs:21:19:21:22 | Before call to constructor C2 | +| MultiImplementationA.cs:21:12:21:13 | Normal Exit | MultiImplementationB.cs:19:19:19:22 | Before call to constructor C2 | +| MultiImplementationA.cs:21:19:21:22 | Before call to constructor C2 | MultiImplementationA.cs:21:19:21:22 | Before call to constructor C2 | +| MultiImplementationA.cs:22:6:22:7 | Entry | MultiImplementationA.cs:22:6:22:7 | Entry | +| MultiImplementationA.cs:22:6:22:7 | Exit | MultiImplementationA.cs:22:6:22:7 | Exit | +| MultiImplementationA.cs:22:11:22:13 | {...} | MultiImplementationA.cs:22:6:22:7 | Entry | | MultiImplementationA.cs:22:11:22:13 | {...} | MultiImplementationA.cs:22:11:22:13 | {...} | -| MultiImplementationA.cs:23:28:23:35 | enter implicit conversion | MultiImplementationA.cs:23:28:23:35 | enter implicit conversion | -| MultiImplementationA.cs:23:28:23:35 | exit implicit conversion | MultiImplementationA.cs:23:28:23:35 | exit implicit conversion | -| MultiImplementationA.cs:23:50:23:53 | null | MultiImplementationA.cs:23:28:23:35 | enter implicit conversion | +| MultiImplementationA.cs:23:28:23:35 | Entry | MultiImplementationA.cs:23:28:23:35 | Entry | +| MultiImplementationA.cs:23:28:23:35 | Exit | MultiImplementationA.cs:23:28:23:35 | Exit | +| MultiImplementationA.cs:23:50:23:53 | null | MultiImplementationA.cs:23:28:23:35 | Entry | | MultiImplementationA.cs:23:50:23:53 | null | MultiImplementationA.cs:23:50:23:53 | null | -| MultiImplementationA.cs:28:7:28:8 | enter C3 | MultiImplementationA.cs:28:7:28:8 | enter C3 | -| MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | MultiImplementationA.cs:28:7:28:8 | enter C3 | -| MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | -| MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | MultiImplementationA.cs:28:7:28:8 | this access | -| MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | MultiImplementationB.cs:25:7:25:8 | this access | -| MultiImplementationA.cs:28:7:28:8 | this access | MultiImplementationA.cs:28:7:28:8 | this access | -| MultiImplementationA.cs:30:21:30:23 | enter get_P3 | MultiImplementationA.cs:30:21:30:23 | enter get_P3 | -| MultiImplementationA.cs:34:15:34:16 | enter C4 | MultiImplementationA.cs:34:15:34:16 | enter C4 | -| MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | MultiImplementationA.cs:34:15:34:16 | enter C4 | -| MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | -| MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | MultiImplementationA.cs:34:15:34:16 | this access | -| MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | MultiImplementationB.cs:30:15:30:16 | this access | -| MultiImplementationA.cs:34:15:34:16 | this access | MultiImplementationA.cs:34:15:34:16 | this access | -| MultiImplementationA.cs:36:9:36:10 | enter M1 | MultiImplementationA.cs:36:9:36:10 | enter M1 | -| MultiImplementationA.cs:36:9:36:10 | exit M1 | MultiImplementationA.cs:36:9:36:10 | exit M1 | +| MultiImplementationA.cs:28:7:28:8 | Before call to method | MultiImplementationA.cs:28:7:28:8 | Before call to method | +| MultiImplementationA.cs:28:7:28:8 | Entry | MultiImplementationA.cs:28:7:28:8 | Entry | +| MultiImplementationA.cs:28:7:28:8 | Normal Exit | MultiImplementationA.cs:28:7:28:8 | Before call to method | +| MultiImplementationA.cs:28:7:28:8 | Normal Exit | MultiImplementationA.cs:28:7:28:8 | Entry | +| MultiImplementationA.cs:28:7:28:8 | Normal Exit | MultiImplementationA.cs:28:7:28:8 | Normal Exit | +| MultiImplementationA.cs:28:7:28:8 | Normal Exit | MultiImplementationB.cs:25:7:25:8 | Before call to method | +| MultiImplementationA.cs:30:21:30:23 | Entry | MultiImplementationA.cs:30:21:30:23 | Entry | +| MultiImplementationA.cs:34:15:34:16 | Before call to method | MultiImplementationA.cs:34:15:34:16 | Before call to method | +| MultiImplementationA.cs:34:15:34:16 | Entry | MultiImplementationA.cs:34:15:34:16 | Entry | +| MultiImplementationA.cs:34:15:34:16 | Normal Exit | MultiImplementationA.cs:34:15:34:16 | Before call to method | +| MultiImplementationA.cs:34:15:34:16 | Normal Exit | MultiImplementationA.cs:34:15:34:16 | Entry | +| MultiImplementationA.cs:34:15:34:16 | Normal Exit | MultiImplementationA.cs:34:15:34:16 | Normal Exit | +| MultiImplementationA.cs:34:15:34:16 | Normal Exit | MultiImplementationB.cs:30:15:30:16 | Before call to method | +| MultiImplementationA.cs:36:9:36:10 | Entry | MultiImplementationA.cs:36:9:36:10 | Entry | +| MultiImplementationA.cs:36:9:36:10 | Exit | MultiImplementationA.cs:36:9:36:10 | Exit | | MultiImplementationA.cs:36:14:36:28 | {...} | MultiImplementationA.cs:36:14:36:28 | {...} | -| MultiImplementationA.cs:37:9:37:10 | enter M2 | MultiImplementationA.cs:37:9:37:10 | enter M2 | -| MultiImplementationB.cs:1:7:1:8 | this access | MultiImplementationB.cs:1:7:1:8 | this access | -| MultiImplementationB.cs:3:22:3:22 | 0 | MultiImplementationA.cs:6:22:6:31 | enter get_P1 | +| MultiImplementationA.cs:37:9:37:10 | Entry | MultiImplementationA.cs:37:9:37:10 | Entry | +| MultiImplementationB.cs:1:7:1:8 | Before call to method | MultiImplementationB.cs:1:7:1:8 | Before call to method | +| MultiImplementationB.cs:3:22:3:22 | 0 | MultiImplementationA.cs:6:22:6:31 | Entry | | MultiImplementationB.cs:3:22:3:22 | 0 | MultiImplementationB.cs:3:22:3:22 | 0 | -| MultiImplementationB.cs:4:25:4:37 | {...} | MultiImplementationA.cs:7:21:7:23 | enter get_P2 | +| MultiImplementationB.cs:4:25:4:37 | {...} | MultiImplementationA.cs:7:21:7:23 | Entry | | MultiImplementationB.cs:4:25:4:37 | {...} | MultiImplementationB.cs:4:25:4:37 | {...} | -| MultiImplementationB.cs:4:43:4:45 | {...} | MultiImplementationA.cs:7:41:7:43 | enter set_P2 | +| MultiImplementationB.cs:4:43:4:45 | {...} | MultiImplementationA.cs:7:41:7:43 | Entry | | MultiImplementationB.cs:4:43:4:45 | {...} | MultiImplementationB.cs:4:43:4:45 | {...} | -| MultiImplementationB.cs:5:23:5:23 | 2 | MultiImplementationA.cs:8:16:8:16 | enter M | +| MultiImplementationB.cs:5:23:5:23 | 2 | MultiImplementationA.cs:8:16:8:16 | Entry | | MultiImplementationB.cs:5:23:5:23 | 2 | MultiImplementationB.cs:5:23:5:23 | 2 | -| MultiImplementationB.cs:11:16:11:16 | this access | MultiImplementationB.cs:11:16:11:16 | this access | -| MultiImplementationB.cs:12:37:12:40 | null | MultiImplementationB.cs:12:37:12:40 | null | +| MultiImplementationB.cs:11:16:11:20 | Before ... = ... | MultiImplementationB.cs:11:16:11:20 | Before ... = ... | +| MultiImplementationB.cs:12:31:12:40 | Before throw ... | MultiImplementationB.cs:12:31:12:40 | Before throw ... | | MultiImplementationB.cs:13:40:13:54 | {...} | MultiImplementationB.cs:13:40:13:54 | {...} | | MultiImplementationB.cs:13:60:13:62 | {...} | MultiImplementationB.cs:13:60:13:62 | {...} | | MultiImplementationB.cs:15:5:17:5 | {...} | MultiImplementationB.cs:15:5:17:5 | {...} | -| MultiImplementationB.cs:16:9:16:31 | enter M2 | MultiImplementationB.cs:16:9:16:31 | enter M2 | -| MultiImplementationB.cs:18:12:18:13 | this access | MultiImplementationB.cs:18:12:18:13 | this access | -| MultiImplementationB.cs:19:24:19:24 | 1 | MultiImplementationB.cs:19:24:19:24 | 1 | +| MultiImplementationB.cs:16:9:16:31 | Entry | MultiImplementationB.cs:16:9:16:31 | Entry | +| MultiImplementationB.cs:18:12:18:13 | Before call to method | MultiImplementationB.cs:18:12:18:13 | Before call to method | +| MultiImplementationB.cs:19:19:19:22 | Before call to constructor C2 | MultiImplementationB.cs:19:19:19:22 | Before call to constructor C2 | | MultiImplementationB.cs:20:11:20:25 | {...} | MultiImplementationB.cs:20:11:20:25 | {...} | -| MultiImplementationB.cs:21:56:21:59 | null | MultiImplementationB.cs:21:56:21:59 | null | -| MultiImplementationB.cs:25:7:25:8 | this access | MultiImplementationB.cs:25:7:25:8 | this access | -| MultiImplementationB.cs:30:15:30:16 | this access | MultiImplementationB.cs:30:15:30:16 | this access | -| MultiImplementationB.cs:32:17:32:17 | 0 | MultiImplementationA.cs:36:9:36:10 | enter M1 | +| MultiImplementationB.cs:21:50:21:59 | Before throw ... | MultiImplementationB.cs:21:50:21:59 | Before throw ... | +| MultiImplementationB.cs:25:7:25:8 | Before call to method | MultiImplementationB.cs:25:7:25:8 | Before call to method | +| MultiImplementationB.cs:30:15:30:16 | Before call to method | MultiImplementationB.cs:30:15:30:16 | Before call to method | +| MultiImplementationB.cs:32:17:32:17 | 0 | MultiImplementationA.cs:36:9:36:10 | Entry | | MultiImplementationB.cs:32:17:32:17 | 0 | MultiImplementationB.cs:32:17:32:17 | 0 | -| NullCoalescing.cs:1:7:1:20 | enter NullCoalescing | NullCoalescing.cs:1:7:1:20 | enter NullCoalescing | -| NullCoalescing.cs:3:9:3:10 | enter M1 | NullCoalescing.cs:3:9:3:10 | enter M1 | -| NullCoalescing.cs:3:23:3:28 | ... ?? ... | NullCoalescing.cs:3:9:3:10 | enter M1 | -| NullCoalescing.cs:3:23:3:28 | ... ?? ... | NullCoalescing.cs:3:23:3:28 | ... ?? ... | -| NullCoalescing.cs:3:23:3:28 | ... ?? ... | NullCoalescing.cs:3:28:3:28 | 0 | -| NullCoalescing.cs:3:28:3:28 | 0 | NullCoalescing.cs:3:28:3:28 | 0 | -| NullCoalescing.cs:5:9:5:10 | enter M2 | NullCoalescing.cs:5:9:5:10 | enter M2 | -| NullCoalescing.cs:5:24:5:43 | ... ? ... : ... | NullCoalescing.cs:5:9:5:10 | enter M2 | -| NullCoalescing.cs:5:24:5:43 | ... ? ... : ... | NullCoalescing.cs:5:24:5:43 | ... ? ... : ... | -| NullCoalescing.cs:5:24:5:43 | ... ? ... : ... | NullCoalescing.cs:5:25:5:34 | [false] ... ?? ... | -| NullCoalescing.cs:5:24:5:43 | ... ? ... : ... | NullCoalescing.cs:5:25:5:34 | [true] ... ?? ... | -| NullCoalescing.cs:5:24:5:43 | ... ? ... : ... | NullCoalescing.cs:5:30:5:34 | false | -| NullCoalescing.cs:5:24:5:43 | ... ? ... : ... | NullCoalescing.cs:5:39:5:39 | 0 | -| NullCoalescing.cs:5:24:5:43 | ... ? ... : ... | NullCoalescing.cs:5:43:5:43 | 1 | -| NullCoalescing.cs:5:25:5:34 | [false] ... ?? ... | NullCoalescing.cs:5:25:5:34 | [false] ... ?? ... | -| NullCoalescing.cs:5:25:5:34 | [false] ... ?? ... | NullCoalescing.cs:5:30:5:34 | false | -| NullCoalescing.cs:5:25:5:34 | [true] ... ?? ... | NullCoalescing.cs:5:25:5:34 | [true] ... ?? ... | -| NullCoalescing.cs:5:30:5:34 | false | NullCoalescing.cs:5:30:5:34 | false | -| NullCoalescing.cs:5:39:5:39 | 0 | NullCoalescing.cs:5:25:5:34 | [true] ... ?? ... | -| NullCoalescing.cs:5:39:5:39 | 0 | NullCoalescing.cs:5:39:5:39 | 0 | -| NullCoalescing.cs:5:43:5:43 | 1 | NullCoalescing.cs:5:25:5:34 | [false] ... ?? ... | -| NullCoalescing.cs:5:43:5:43 | 1 | NullCoalescing.cs:5:30:5:34 | false | -| NullCoalescing.cs:5:43:5:43 | 1 | NullCoalescing.cs:5:43:5:43 | 1 | -| NullCoalescing.cs:7:12:7:13 | enter M3 | NullCoalescing.cs:7:12:7:13 | enter M3 | -| NullCoalescing.cs:7:40:7:53 | ... ?? ... | NullCoalescing.cs:7:12:7:13 | enter M3 | -| NullCoalescing.cs:7:40:7:53 | ... ?? ... | NullCoalescing.cs:7:40:7:53 | ... ?? ... | -| NullCoalescing.cs:7:40:7:53 | ... ?? ... | NullCoalescing.cs:7:46:7:47 | access to parameter s2 | -| NullCoalescing.cs:7:40:7:53 | ... ?? ... | NullCoalescing.cs:7:46:7:53 | ... ?? ... | -| NullCoalescing.cs:7:40:7:53 | ... ?? ... | NullCoalescing.cs:7:52:7:53 | "" | -| NullCoalescing.cs:7:46:7:47 | access to parameter s2 | NullCoalescing.cs:7:46:7:47 | access to parameter s2 | -| NullCoalescing.cs:7:46:7:53 | ... ?? ... | NullCoalescing.cs:7:46:7:47 | access to parameter s2 | -| NullCoalescing.cs:7:46:7:53 | ... ?? ... | NullCoalescing.cs:7:46:7:53 | ... ?? ... | -| NullCoalescing.cs:7:46:7:53 | ... ?? ... | NullCoalescing.cs:7:52:7:53 | "" | -| NullCoalescing.cs:7:52:7:53 | "" | NullCoalescing.cs:7:52:7:53 | "" | -| NullCoalescing.cs:9:12:9:13 | enter M4 | NullCoalescing.cs:9:12:9:13 | enter M4 | -| NullCoalescing.cs:9:36:9:58 | ... ?? ... | NullCoalescing.cs:9:12:9:13 | enter M4 | -| NullCoalescing.cs:9:36:9:58 | ... ?? ... | NullCoalescing.cs:9:36:9:58 | ... ?? ... | -| NullCoalescing.cs:9:36:9:58 | ... ?? ... | NullCoalescing.cs:9:37:9:45 | [non-null] ... ? ... : ... | -| NullCoalescing.cs:9:36:9:58 | ... ?? ... | NullCoalescing.cs:9:37:9:45 | [null] ... ? ... : ... | -| NullCoalescing.cs:9:36:9:58 | ... ?? ... | NullCoalescing.cs:9:41:9:41 | access to parameter s | -| NullCoalescing.cs:9:36:9:58 | ... ?? ... | NullCoalescing.cs:9:45:9:45 | access to parameter s | -| NullCoalescing.cs:9:36:9:58 | ... ?? ... | NullCoalescing.cs:9:51:9:52 | "" | -| NullCoalescing.cs:9:36:9:58 | ... ?? ... | NullCoalescing.cs:9:51:9:58 | ... ?? ... | -| NullCoalescing.cs:9:37:9:45 | [non-null] ... ? ... : ... | NullCoalescing.cs:9:37:9:45 | [non-null] ... ? ... : ... | -| NullCoalescing.cs:9:37:9:45 | [null] ... ? ... : ... | NullCoalescing.cs:9:37:9:45 | [null] ... ? ... : ... | -| NullCoalescing.cs:9:41:9:41 | access to parameter s | NullCoalescing.cs:9:41:9:41 | access to parameter s | -| NullCoalescing.cs:9:45:9:45 | access to parameter s | NullCoalescing.cs:9:45:9:45 | access to parameter s | -| NullCoalescing.cs:9:51:9:52 | "" | NullCoalescing.cs:9:37:9:45 | [null] ... ? ... : ... | -| NullCoalescing.cs:9:51:9:52 | "" | NullCoalescing.cs:9:51:9:52 | "" | -| NullCoalescing.cs:9:51:9:58 | ... ?? ... | NullCoalescing.cs:9:37:9:45 | [null] ... ? ... : ... | -| NullCoalescing.cs:9:51:9:58 | ... ?? ... | NullCoalescing.cs:9:51:9:52 | "" | -| NullCoalescing.cs:9:51:9:58 | ... ?? ... | NullCoalescing.cs:9:51:9:58 | ... ?? ... | -| NullCoalescing.cs:11:9:11:10 | enter M5 | NullCoalescing.cs:11:9:11:10 | enter M5 | -| NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | NullCoalescing.cs:11:9:11:10 | enter M5 | -| NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | -| NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | NullCoalescing.cs:11:44:11:59 | [false] ... ?? ... | -| NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | NullCoalescing.cs:11:44:11:59 | [true] ... ?? ... | -| NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | NullCoalescing.cs:11:51:11:52 | access to parameter b2 | -| NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | NullCoalescing.cs:11:51:11:58 | [false] ... && ... | -| NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | NullCoalescing.cs:11:51:11:58 | [true] ... && ... | -| NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | NullCoalescing.cs:11:57:11:58 | access to parameter b3 | -| NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | NullCoalescing.cs:11:64:11:64 | 0 | -| NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | NullCoalescing.cs:11:68:11:68 | 1 | -| NullCoalescing.cs:11:44:11:59 | [false] ... ?? ... | NullCoalescing.cs:11:44:11:59 | [false] ... ?? ... | -| NullCoalescing.cs:11:44:11:59 | [false] ... ?? ... | NullCoalescing.cs:11:51:11:58 | [false] ... && ... | -| NullCoalescing.cs:11:44:11:59 | [true] ... ?? ... | NullCoalescing.cs:11:44:11:59 | [true] ... ?? ... | -| NullCoalescing.cs:11:44:11:59 | [true] ... ?? ... | NullCoalescing.cs:11:51:11:58 | [true] ... && ... | -| NullCoalescing.cs:11:51:11:52 | access to parameter b2 | NullCoalescing.cs:11:51:11:52 | access to parameter b2 | -| NullCoalescing.cs:11:51:11:58 | [false] ... && ... | NullCoalescing.cs:11:51:11:58 | [false] ... && ... | -| NullCoalescing.cs:11:51:11:58 | [true] ... && ... | NullCoalescing.cs:11:51:11:58 | [true] ... && ... | -| NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:57:11:58 | access to parameter b3 | -| NullCoalescing.cs:11:64:11:64 | 0 | NullCoalescing.cs:11:44:11:59 | [true] ... ?? ... | -| NullCoalescing.cs:11:64:11:64 | 0 | NullCoalescing.cs:11:51:11:58 | [true] ... && ... | -| NullCoalescing.cs:11:64:11:64 | 0 | NullCoalescing.cs:11:64:11:64 | 0 | -| NullCoalescing.cs:11:68:11:68 | 1 | NullCoalescing.cs:11:44:11:59 | [false] ... ?? ... | -| NullCoalescing.cs:11:68:11:68 | 1 | NullCoalescing.cs:11:51:11:58 | [false] ... && ... | -| NullCoalescing.cs:11:68:11:68 | 1 | NullCoalescing.cs:11:68:11:68 | 1 | -| NullCoalescing.cs:13:10:13:11 | enter M6 | NullCoalescing.cs:13:10:13:11 | enter M6 | -| NullCoalescing.cs:15:31:15:31 | 0 | NullCoalescing.cs:13:10:13:11 | enter M6 | -| NullCoalescing.cs:15:31:15:31 | 0 | NullCoalescing.cs:15:31:15:31 | 0 | -| NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:13:10:13:11 | enter M6 | -| NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:15:31:15:31 | 0 | -| NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:16:17:16:25 | ... ?? ... | -| NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:13:10:13:11 | enter M6 | -| NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:15:31:15:31 | 0 | -| NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:16:17:16:25 | ... ?? ... | -| NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:17:13:17:24 | ... ?? ... | -| PartialImplementationA.cs:1:15:1:21 | enter | PartialImplementationA.cs:1:15:1:21 | enter | -| PartialImplementationA.cs:3:12:3:18 | enter Partial | PartialImplementationA.cs:3:12:3:18 | enter Partial | -| PartialImplementationB.cs:4:12:4:18 | enter Partial | PartialImplementationB.cs:4:12:4:18 | enter Partial | -| Patterns.cs:3:7:3:14 | enter Patterns | Patterns.cs:3:7:3:14 | enter Patterns | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:5:10:5:11 | enter M1 | -| Patterns.cs:8:13:8:23 | [false] ... is ... | Patterns.cs:8:13:8:23 | [false] ... is ... | -| Patterns.cs:8:13:8:23 | [true] ... is ... | Patterns.cs:8:13:8:23 | [true] ... is ... | -| Patterns.cs:9:9:11:9 | {...} | Patterns.cs:8:13:8:23 | [true] ... is ... | -| Patterns.cs:9:9:11:9 | {...} | Patterns.cs:9:9:11:9 | {...} | -| Patterns.cs:12:14:18:9 | if (...) ... | Patterns.cs:8:13:8:23 | [false] ... is ... | -| Patterns.cs:12:14:18:9 | if (...) ... | Patterns.cs:12:14:18:9 | if (...) ... | -| Patterns.cs:12:18:12:31 | [false] ... is ... | Patterns.cs:12:18:12:31 | [false] ... is ... | -| Patterns.cs:12:18:12:31 | [true] ... is ... | Patterns.cs:12:18:12:31 | [true] ... is ... | -| Patterns.cs:13:9:15:9 | {...} | Patterns.cs:12:18:12:31 | [true] ... is ... | -| Patterns.cs:13:9:15:9 | {...} | Patterns.cs:13:9:15:9 | {...} | -| Patterns.cs:16:14:18:9 | if (...) ... | Patterns.cs:12:18:12:31 | [false] ... is ... | -| Patterns.cs:16:14:18:9 | if (...) ... | Patterns.cs:16:14:18:9 | if (...) ... | -| Patterns.cs:16:18:16:28 | [false] ... is ... | Patterns.cs:16:18:16:28 | [false] ... is ... | -| Patterns.cs:16:18:16:28 | [true] ... is ... | Patterns.cs:16:18:16:28 | [true] ... is ... | -| Patterns.cs:17:9:18:9 | {...} | Patterns.cs:16:18:16:28 | [true] ... is ... | -| Patterns.cs:17:9:18:9 | {...} | Patterns.cs:17:9:18:9 | {...} | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:5:10:5:11 | enter M1 | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:8:13:8:23 | [false] ... is ... | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:8:13:8:23 | [true] ... is ... | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:9:9:11:9 | {...} | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:12:14:18:9 | if (...) ... | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:12:18:12:31 | [false] ... is ... | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:12:18:12:31 | [true] ... is ... | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:13:9:15:9 | {...} | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:16:14:18:9 | if (...) ... | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:16:18:16:28 | [false] ... is ... | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:16:18:16:28 | [true] ... is ... | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:17:9:18:9 | {...} | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:20:9:38:9 | switch (...) {...} | -| Patterns.cs:23:17:23:22 | break; | Patterns.cs:23:17:23:22 | break; | -| Patterns.cs:24:13:24:36 | case ...: | Patterns.cs:24:13:24:36 | case ...: | -| Patterns.cs:24:30:24:31 | access to local variable i2 | Patterns.cs:24:30:24:31 | access to local variable i2 | -| Patterns.cs:25:17:25:52 | ...; | Patterns.cs:25:17:25:52 | ...; | +| NullCoalescing.cs:1:7:1:20 | Entry | NullCoalescing.cs:1:7:1:20 | Entry | +| NullCoalescing.cs:3:9:3:10 | Entry | NullCoalescing.cs:3:9:3:10 | Entry | +| NullCoalescing.cs:3:23:3:23 | After access to parameter i [non-null] | NullCoalescing.cs:3:23:3:23 | After access to parameter i [non-null] | +| NullCoalescing.cs:3:23:3:23 | After access to parameter i [null] | NullCoalescing.cs:3:23:3:23 | After access to parameter i [null] | +| NullCoalescing.cs:3:23:3:28 | After ... ?? ... | NullCoalescing.cs:3:9:3:10 | Entry | +| NullCoalescing.cs:3:23:3:28 | After ... ?? ... | NullCoalescing.cs:3:23:3:23 | After access to parameter i [non-null] | +| NullCoalescing.cs:3:23:3:28 | After ... ?? ... | NullCoalescing.cs:3:23:3:23 | After access to parameter i [null] | +| NullCoalescing.cs:3:23:3:28 | After ... ?? ... | NullCoalescing.cs:3:23:3:28 | After ... ?? ... | +| NullCoalescing.cs:5:9:5:10 | Entry | NullCoalescing.cs:5:9:5:10 | Entry | +| NullCoalescing.cs:5:24:5:43 | After ... ? ... : ... | NullCoalescing.cs:5:9:5:10 | Entry | +| NullCoalescing.cs:5:24:5:43 | After ... ? ... : ... | NullCoalescing.cs:5:24:5:43 | After ... ? ... : ... | +| NullCoalescing.cs:5:24:5:43 | After ... ? ... : ... | NullCoalescing.cs:5:25:5:25 | After access to parameter b [non-null] | +| NullCoalescing.cs:5:24:5:43 | After ... ? ... : ... | NullCoalescing.cs:5:25:5:25 | After access to parameter b [null] | +| NullCoalescing.cs:5:24:5:43 | After ... ? ... : ... | NullCoalescing.cs:5:25:5:34 | After ... ?? ... [false] | +| NullCoalescing.cs:5:24:5:43 | After ... ? ... : ... | NullCoalescing.cs:5:25:5:34 | After ... ?? ... [true] | +| NullCoalescing.cs:5:25:5:25 | After access to parameter b [non-null] | NullCoalescing.cs:5:25:5:25 | After access to parameter b [non-null] | +| NullCoalescing.cs:5:25:5:25 | After access to parameter b [null] | NullCoalescing.cs:5:25:5:25 | After access to parameter b [null] | +| NullCoalescing.cs:5:25:5:34 | After ... ?? ... [false] | NullCoalescing.cs:5:25:5:25 | After access to parameter b [null] | +| NullCoalescing.cs:5:25:5:34 | After ... ?? ... [false] | NullCoalescing.cs:5:25:5:34 | After ... ?? ... [false] | +| NullCoalescing.cs:5:25:5:34 | After ... ?? ... [true] | NullCoalescing.cs:5:25:5:34 | After ... ?? ... [true] | +| NullCoalescing.cs:7:12:7:13 | Entry | NullCoalescing.cs:7:12:7:13 | Entry | +| NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [non-null] | NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [non-null] | +| NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [null] | NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [null] | +| NullCoalescing.cs:7:40:7:53 | After ... ?? ... | NullCoalescing.cs:7:12:7:13 | Entry | +| NullCoalescing.cs:7:40:7:53 | After ... ?? ... | NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [non-null] | +| NullCoalescing.cs:7:40:7:53 | After ... ?? ... | NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [null] | +| NullCoalescing.cs:7:40:7:53 | After ... ?? ... | NullCoalescing.cs:7:40:7:53 | After ... ?? ... | +| NullCoalescing.cs:7:40:7:53 | After ... ?? ... | NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [non-null] | +| NullCoalescing.cs:7:40:7:53 | After ... ?? ... | NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [null] | +| NullCoalescing.cs:7:40:7:53 | After ... ?? ... | NullCoalescing.cs:7:46:7:53 | After ... ?? ... | +| NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [non-null] | NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [non-null] | +| NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [null] | NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [null] | +| NullCoalescing.cs:7:46:7:53 | After ... ?? ... | NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [null] | +| NullCoalescing.cs:7:46:7:53 | After ... ?? ... | NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [non-null] | +| NullCoalescing.cs:7:46:7:53 | After ... ?? ... | NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [null] | +| NullCoalescing.cs:7:46:7:53 | After ... ?? ... | NullCoalescing.cs:7:46:7:53 | After ... ?? ... | +| NullCoalescing.cs:9:12:9:13 | Entry | NullCoalescing.cs:9:12:9:13 | Entry | +| NullCoalescing.cs:9:36:9:58 | After ... ?? ... | NullCoalescing.cs:9:12:9:13 | Entry | +| NullCoalescing.cs:9:36:9:58 | After ... ?? ... | NullCoalescing.cs:9:36:9:58 | After ... ?? ... | +| NullCoalescing.cs:9:36:9:58 | After ... ?? ... | NullCoalescing.cs:9:37:9:37 | After access to parameter b [false] | +| NullCoalescing.cs:9:36:9:58 | After ... ?? ... | NullCoalescing.cs:9:37:9:37 | After access to parameter b [true] | +| NullCoalescing.cs:9:36:9:58 | After ... ?? ... | NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [non-null] | +| NullCoalescing.cs:9:36:9:58 | After ... ?? ... | NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [null] | +| NullCoalescing.cs:9:36:9:58 | After ... ?? ... | NullCoalescing.cs:9:41:9:41 | After access to parameter s [non-null] | +| NullCoalescing.cs:9:36:9:58 | After ... ?? ... | NullCoalescing.cs:9:41:9:41 | After access to parameter s [null] | +| NullCoalescing.cs:9:36:9:58 | After ... ?? ... | NullCoalescing.cs:9:45:9:45 | After access to parameter s [non-null] | +| NullCoalescing.cs:9:36:9:58 | After ... ?? ... | NullCoalescing.cs:9:45:9:45 | After access to parameter s [null] | +| NullCoalescing.cs:9:36:9:58 | After ... ?? ... | NullCoalescing.cs:9:51:9:52 | After "" [non-null] | +| NullCoalescing.cs:9:36:9:58 | After ... ?? ... | NullCoalescing.cs:9:51:9:52 | After "" [null] | +| NullCoalescing.cs:9:36:9:58 | After ... ?? ... | NullCoalescing.cs:9:51:9:58 | After ... ?? ... | +| NullCoalescing.cs:9:37:9:37 | After access to parameter b [false] | NullCoalescing.cs:9:37:9:37 | After access to parameter b [false] | +| NullCoalescing.cs:9:37:9:37 | After access to parameter b [true] | NullCoalescing.cs:9:37:9:37 | After access to parameter b [true] | +| NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [non-null] | NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [non-null] | +| NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [non-null] | NullCoalescing.cs:9:41:9:41 | After access to parameter s [non-null] | +| NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [non-null] | NullCoalescing.cs:9:45:9:45 | After access to parameter s [non-null] | +| NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [null] | NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [null] | +| NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [null] | NullCoalescing.cs:9:41:9:41 | After access to parameter s [null] | +| NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [null] | NullCoalescing.cs:9:45:9:45 | After access to parameter s [null] | +| NullCoalescing.cs:9:41:9:41 | After access to parameter s [non-null] | NullCoalescing.cs:9:41:9:41 | After access to parameter s [non-null] | +| NullCoalescing.cs:9:41:9:41 | After access to parameter s [null] | NullCoalescing.cs:9:41:9:41 | After access to parameter s [null] | +| NullCoalescing.cs:9:45:9:45 | After access to parameter s [non-null] | NullCoalescing.cs:9:45:9:45 | After access to parameter s [non-null] | +| NullCoalescing.cs:9:45:9:45 | After access to parameter s [null] | NullCoalescing.cs:9:45:9:45 | After access to parameter s [null] | +| NullCoalescing.cs:9:51:9:52 | After "" [non-null] | NullCoalescing.cs:9:51:9:52 | After "" [non-null] | +| NullCoalescing.cs:9:51:9:52 | After "" [null] | NullCoalescing.cs:9:51:9:52 | After "" [null] | +| NullCoalescing.cs:9:51:9:58 | After ... ?? ... | NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [null] | +| NullCoalescing.cs:9:51:9:58 | After ... ?? ... | NullCoalescing.cs:9:41:9:41 | After access to parameter s [null] | +| NullCoalescing.cs:9:51:9:58 | After ... ?? ... | NullCoalescing.cs:9:45:9:45 | After access to parameter s [null] | +| NullCoalescing.cs:9:51:9:58 | After ... ?? ... | NullCoalescing.cs:9:51:9:52 | After "" [non-null] | +| NullCoalescing.cs:9:51:9:58 | After ... ?? ... | NullCoalescing.cs:9:51:9:52 | After "" [null] | +| NullCoalescing.cs:9:51:9:58 | After ... ?? ... | NullCoalescing.cs:9:51:9:58 | After ... ?? ... | +| NullCoalescing.cs:11:9:11:10 | Entry | NullCoalescing.cs:11:9:11:10 | Entry | +| NullCoalescing.cs:11:43:11:68 | After ... ? ... : ... | NullCoalescing.cs:11:9:11:10 | Entry | +| NullCoalescing.cs:11:43:11:68 | After ... ? ... : ... | NullCoalescing.cs:11:43:11:68 | After ... ? ... : ... | +| NullCoalescing.cs:11:43:11:68 | After ... ? ... : ... | NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [non-null] | +| NullCoalescing.cs:11:43:11:68 | After ... ? ... : ... | NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [null] | +| NullCoalescing.cs:11:43:11:68 | After ... ? ... : ... | NullCoalescing.cs:11:44:11:59 | After ... ?? ... [false] | +| NullCoalescing.cs:11:43:11:68 | After ... ? ... : ... | NullCoalescing.cs:11:44:11:59 | After ... ?? ... [true] | +| NullCoalescing.cs:11:43:11:68 | After ... ? ... : ... | NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [false] | +| NullCoalescing.cs:11:43:11:68 | After ... ? ... : ... | NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [true] | +| NullCoalescing.cs:11:43:11:68 | After ... ? ... : ... | NullCoalescing.cs:11:51:11:58 | After ... && ... [false] | +| NullCoalescing.cs:11:43:11:68 | After ... ? ... : ... | NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [false] | +| NullCoalescing.cs:11:43:11:68 | After ... ? ... : ... | NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [true] | +| NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [non-null] | NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [non-null] | +| NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [null] | NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [null] | +| NullCoalescing.cs:11:44:11:59 | After ... ?? ... [false] | NullCoalescing.cs:11:44:11:59 | After ... ?? ... [false] | +| NullCoalescing.cs:11:44:11:59 | After ... ?? ... [false] | NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [false] | +| NullCoalescing.cs:11:44:11:59 | After ... ?? ... [false] | NullCoalescing.cs:11:51:11:58 | After ... && ... [false] | +| NullCoalescing.cs:11:44:11:59 | After ... ?? ... [false] | NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [false] | +| NullCoalescing.cs:11:44:11:59 | After ... ?? ... [true] | NullCoalescing.cs:11:44:11:59 | After ... ?? ... [true] | +| NullCoalescing.cs:11:44:11:59 | After ... ?? ... [true] | NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [true] | +| NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [false] | NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [false] | +| NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [true] | NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [true] | +| NullCoalescing.cs:11:51:11:58 | After ... && ... [false] | NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [false] | +| NullCoalescing.cs:11:51:11:58 | After ... && ... [false] | NullCoalescing.cs:11:51:11:58 | After ... && ... [false] | +| NullCoalescing.cs:11:51:11:58 | After ... && ... [false] | NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [false] | +| NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [false] | NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [false] | +| NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [true] | NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [true] | +| NullCoalescing.cs:13:10:13:11 | Entry | NullCoalescing.cs:13:10:13:11 | Entry | +| NullCoalescing.cs:15:17:15:26 | After (...) ... [non-null] | NullCoalescing.cs:15:17:15:26 | After (...) ... [non-null] | +| NullCoalescing.cs:15:17:15:26 | After (...) ... [null] | NullCoalescing.cs:15:17:15:26 | After (...) ... [null] | +| NullCoalescing.cs:15:17:15:31 | After ... ?? ... | NullCoalescing.cs:13:10:13:11 | Entry | +| NullCoalescing.cs:15:17:15:31 | After ... ?? ... | NullCoalescing.cs:15:17:15:26 | After (...) ... [non-null] | +| NullCoalescing.cs:15:17:15:31 | After ... ?? ... | NullCoalescing.cs:15:17:15:26 | After (...) ... [null] | +| NullCoalescing.cs:15:17:15:31 | After ... ?? ... | NullCoalescing.cs:15:17:15:31 | After ... ?? ... | +| NullCoalescing.cs:16:17:16:18 | After "" [non-null] | NullCoalescing.cs:16:17:16:18 | After "" [non-null] | +| NullCoalescing.cs:16:17:16:18 | After "" [null] | NullCoalescing.cs:16:17:16:18 | After "" [null] | +| NullCoalescing.cs:16:17:16:25 | After ... ?? ... | NullCoalescing.cs:13:10:13:11 | Entry | +| NullCoalescing.cs:16:17:16:25 | After ... ?? ... | NullCoalescing.cs:15:17:15:26 | After (...) ... [non-null] | +| NullCoalescing.cs:16:17:16:25 | After ... ?? ... | NullCoalescing.cs:15:17:15:26 | After (...) ... [null] | +| NullCoalescing.cs:16:17:16:25 | After ... ?? ... | NullCoalescing.cs:15:17:15:31 | After ... ?? ... | +| NullCoalescing.cs:16:17:16:25 | After ... ?? ... | NullCoalescing.cs:16:17:16:18 | After "" [non-null] | +| NullCoalescing.cs:16:17:16:25 | After ... ?? ... | NullCoalescing.cs:16:17:16:18 | After "" [null] | +| NullCoalescing.cs:16:17:16:25 | After ... ?? ... | NullCoalescing.cs:16:17:16:25 | After ... ?? ... | +| NullCoalescing.cs:17:13:17:19 | After (...) ... [non-null] | NullCoalescing.cs:17:13:17:19 | After (...) ... [non-null] | +| NullCoalescing.cs:17:13:17:19 | After (...) ... [null] | NullCoalescing.cs:17:13:17:19 | After (...) ... [null] | +| NullCoalescing.cs:17:13:17:24 | After ... ?? ... | NullCoalescing.cs:13:10:13:11 | Entry | +| NullCoalescing.cs:17:13:17:24 | After ... ?? ... | NullCoalescing.cs:15:17:15:26 | After (...) ... [non-null] | +| NullCoalescing.cs:17:13:17:24 | After ... ?? ... | NullCoalescing.cs:15:17:15:26 | After (...) ... [null] | +| NullCoalescing.cs:17:13:17:24 | After ... ?? ... | NullCoalescing.cs:15:17:15:31 | After ... ?? ... | +| NullCoalescing.cs:17:13:17:24 | After ... ?? ... | NullCoalescing.cs:16:17:16:18 | After "" [non-null] | +| NullCoalescing.cs:17:13:17:24 | After ... ?? ... | NullCoalescing.cs:16:17:16:18 | After "" [null] | +| NullCoalescing.cs:17:13:17:24 | After ... ?? ... | NullCoalescing.cs:16:17:16:25 | After ... ?? ... | +| NullCoalescing.cs:17:13:17:24 | After ... ?? ... | NullCoalescing.cs:17:13:17:19 | After (...) ... [non-null] | +| NullCoalescing.cs:17:13:17:24 | After ... ?? ... | NullCoalescing.cs:17:13:17:19 | After (...) ... [null] | +| NullCoalescing.cs:17:13:17:24 | After ... ?? ... | NullCoalescing.cs:17:13:17:24 | After ... ?? ... | +| PartialImplementationA.cs:1:15:1:21 | Entry | PartialImplementationA.cs:1:15:1:21 | Entry | +| PartialImplementationA.cs:3:12:3:18 | Entry | PartialImplementationA.cs:3:12:3:18 | Entry | +| PartialImplementationB.cs:4:12:4:18 | Entry | PartialImplementationB.cs:4:12:4:18 | Entry | +| Patterns.cs:3:7:3:14 | Entry | Patterns.cs:3:7:3:14 | Entry | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:5:10:5:11 | Entry | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:5:10:5:11 | Entry | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:8:9:18:9 | After if (...) ... | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:8:13:8:23 | After ... is ... [false] | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:8:13:8:23 | [MatchTrue] ... is ... | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:12:14:18:9 | After if (...) ... | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:12:18:12:31 | After ... is ... [false] | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:12:18:12:31 | [MatchTrue] ... is ... | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:16:14:18:9 | After if (...) ... | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:16:18:16:28 | After ... is ... [false] | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:16:18:16:28 | [MatchTrue] ... is ... | +| Patterns.cs:8:13:8:23 | After ... is ... [false] | Patterns.cs:8:13:8:23 | After ... is ... [false] | +| Patterns.cs:8:13:8:23 | [MatchTrue] ... is ... | Patterns.cs:8:13:8:23 | [MatchTrue] ... is ... | +| Patterns.cs:12:14:18:9 | After if (...) ... | Patterns.cs:8:13:8:23 | After ... is ... [false] | +| Patterns.cs:12:14:18:9 | After if (...) ... | Patterns.cs:12:14:18:9 | After if (...) ... | +| Patterns.cs:12:14:18:9 | After if (...) ... | Patterns.cs:12:18:12:31 | After ... is ... [false] | +| Patterns.cs:12:14:18:9 | After if (...) ... | Patterns.cs:12:18:12:31 | [MatchTrue] ... is ... | +| Patterns.cs:12:14:18:9 | After if (...) ... | Patterns.cs:16:14:18:9 | After if (...) ... | +| Patterns.cs:12:14:18:9 | After if (...) ... | Patterns.cs:16:18:16:28 | After ... is ... [false] | +| Patterns.cs:12:14:18:9 | After if (...) ... | Patterns.cs:16:18:16:28 | [MatchTrue] ... is ... | +| Patterns.cs:12:18:12:31 | After ... is ... [false] | Patterns.cs:12:18:12:31 | After ... is ... [false] | +| Patterns.cs:12:18:12:31 | [MatchTrue] ... is ... | Patterns.cs:12:18:12:31 | [MatchTrue] ... is ... | +| Patterns.cs:16:14:18:9 | After if (...) ... | Patterns.cs:12:18:12:31 | After ... is ... [false] | +| Patterns.cs:16:14:18:9 | After if (...) ... | Patterns.cs:16:14:18:9 | After if (...) ... | +| Patterns.cs:16:14:18:9 | After if (...) ... | Patterns.cs:16:18:16:28 | After ... is ... [false] | +| Patterns.cs:16:14:18:9 | After if (...) ... | Patterns.cs:16:18:16:28 | [MatchTrue] ... is ... | +| Patterns.cs:16:18:16:28 | After ... is ... [false] | Patterns.cs:16:18:16:28 | After ... is ... [false] | +| Patterns.cs:16:18:16:28 | [MatchTrue] ... is ... | Patterns.cs:16:18:16:28 | [MatchTrue] ... is ... | +| Patterns.cs:20:9:38:9 | After switch (...) {...} | Patterns.cs:5:10:5:11 | Entry | +| Patterns.cs:20:9:38:9 | After switch (...) {...} | Patterns.cs:8:9:18:9 | After if (...) ... | +| Patterns.cs:20:9:38:9 | After switch (...) {...} | Patterns.cs:8:13:8:23 | After ... is ... [false] | +| Patterns.cs:20:9:38:9 | After switch (...) {...} | Patterns.cs:8:13:8:23 | [MatchTrue] ... is ... | +| Patterns.cs:20:9:38:9 | After switch (...) {...} | Patterns.cs:12:14:18:9 | After if (...) ... | +| Patterns.cs:20:9:38:9 | After switch (...) {...} | Patterns.cs:12:18:12:31 | After ... is ... [false] | +| Patterns.cs:20:9:38:9 | After switch (...) {...} | Patterns.cs:12:18:12:31 | [MatchTrue] ... is ... | +| Patterns.cs:20:9:38:9 | After switch (...) {...} | Patterns.cs:16:14:18:9 | After if (...) ... | +| Patterns.cs:20:9:38:9 | After switch (...) {...} | Patterns.cs:16:18:16:28 | After ... is ... [false] | +| Patterns.cs:20:9:38:9 | After switch (...) {...} | Patterns.cs:16:18:16:28 | [MatchTrue] ... is ... | +| Patterns.cs:20:9:38:9 | After switch (...) {...} | Patterns.cs:20:9:38:9 | After switch (...) {...} | +| Patterns.cs:20:9:38:9 | After switch (...) {...} | Patterns.cs:22:18:22:22 | After "xyz" [match] | +| Patterns.cs:20:9:38:9 | After switch (...) {...} | Patterns.cs:22:18:22:22 | After "xyz" [no-match] | +| Patterns.cs:20:9:38:9 | After switch (...) {...} | Patterns.cs:24:18:24:23 | After Int32 i2 [match] | +| Patterns.cs:20:9:38:9 | After switch (...) {...} | Patterns.cs:24:18:24:23 | After Int32 i2 [no-match] | +| Patterns.cs:20:9:38:9 | After switch (...) {...} | Patterns.cs:24:30:24:35 | After ... > ... [false] | +| Patterns.cs:20:9:38:9 | After switch (...) {...} | Patterns.cs:24:30:24:35 | After ... > ... [true] | +| Patterns.cs:20:9:38:9 | After switch (...) {...} | Patterns.cs:27:13:27:24 | case ...: | +| Patterns.cs:20:9:38:9 | After switch (...) {...} | Patterns.cs:27:18:27:23 | After Int32 i3 [match] | +| Patterns.cs:20:9:38:9 | After switch (...) {...} | Patterns.cs:27:18:27:23 | After Int32 i3 [no-match] | +| Patterns.cs:20:9:38:9 | After switch (...) {...} | Patterns.cs:30:18:30:26 | After String s2 [match] | +| Patterns.cs:20:9:38:9 | After switch (...) {...} | Patterns.cs:30:18:30:26 | After String s2 [no-match] | +| Patterns.cs:20:9:38:9 | After switch (...) {...} | Patterns.cs:33:18:33:23 | After Object v2 [match] | +| Patterns.cs:20:9:38:9 | After switch (...) {...} | Patterns.cs:33:18:33:23 | After Object v2 [no-match] | +| Patterns.cs:22:18:22:22 | After "xyz" [match] | Patterns.cs:22:18:22:22 | After "xyz" [match] | +| Patterns.cs:22:18:22:22 | After "xyz" [no-match] | Patterns.cs:22:18:22:22 | After "xyz" [no-match] | +| Patterns.cs:24:18:24:23 | After Int32 i2 [match] | Patterns.cs:24:18:24:23 | After Int32 i2 [match] | +| Patterns.cs:24:18:24:23 | After Int32 i2 [no-match] | Patterns.cs:24:18:24:23 | After Int32 i2 [no-match] | +| Patterns.cs:24:30:24:35 | After ... > ... [false] | Patterns.cs:24:30:24:35 | After ... > ... [false] | +| Patterns.cs:24:30:24:35 | After ... > ... [true] | Patterns.cs:24:30:24:35 | After ... > ... [true] | +| Patterns.cs:27:13:27:24 | case ...: | Patterns.cs:24:18:24:23 | After Int32 i2 [no-match] | +| Patterns.cs:27:13:27:24 | case ...: | Patterns.cs:24:30:24:35 | After ... > ... [false] | | Patterns.cs:27:13:27:24 | case ...: | Patterns.cs:27:13:27:24 | case ...: | -| Patterns.cs:28:17:28:47 | ...; | Patterns.cs:28:17:28:47 | ...; | -| Patterns.cs:30:13:30:27 | case ...: | Patterns.cs:30:13:30:27 | case ...: | -| Patterns.cs:31:17:31:50 | ...; | Patterns.cs:31:17:31:50 | ...; | -| Patterns.cs:33:13:33:24 | case ...: | Patterns.cs:33:13:33:24 | case ...: | -| Patterns.cs:34:17:34:22 | break; | Patterns.cs:34:17:34:22 | break; | -| Patterns.cs:35:13:35:20 | default: | Patterns.cs:35:13:35:20 | default: | -| Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:5:10:5:11 | enter M1 | -| Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:8:13:8:23 | [false] ... is ... | -| Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:8:13:8:23 | [true] ... is ... | -| Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:9:9:11:9 | {...} | -| Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:12:14:18:9 | if (...) ... | -| Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:12:18:12:31 | [false] ... is ... | -| Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:12:18:12:31 | [true] ... is ... | -| Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:13:9:15:9 | {...} | -| Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:16:14:18:9 | if (...) ... | -| Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:16:18:16:28 | [false] ... is ... | -| Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:16:18:16:28 | [true] ... is ... | -| Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:17:9:18:9 | {...} | -| Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:20:9:38:9 | switch (...) {...} | -| Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:23:17:23:22 | break; | -| Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:24:13:24:36 | case ...: | -| Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:24:30:24:31 | access to local variable i2 | -| Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:25:17:25:52 | ...; | -| Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:27:13:27:24 | case ...: | -| Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:28:17:28:47 | ...; | -| Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:30:13:30:27 | case ...: | -| Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:31:17:31:50 | ...; | -| Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:33:13:33:24 | case ...: | -| Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:34:17:34:22 | break; | -| Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:35:13:35:20 | default: | -| Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:40:9:42:9 | switch (...) {...} | -| Patterns.cs:47:24:47:25 | enter M2 | Patterns.cs:47:24:47:25 | enter M2 | -| Patterns.cs:50:24:50:25 | enter M3 | Patterns.cs:50:24:50:25 | enter M3 | -| Patterns.cs:51:9:51:21 | [false] ... is ... | Patterns.cs:51:9:51:21 | [false] ... is ... | -| Patterns.cs:51:9:51:21 | [false] ... is ... | Patterns.cs:51:14:51:21 | [no-match] not ... | -| Patterns.cs:51:9:51:21 | [true] ... is ... | Patterns.cs:51:9:51:21 | [true] ... is ... | -| Patterns.cs:51:9:51:21 | [true] ... is ... | Patterns.cs:51:14:51:21 | [match] not ... | -| Patterns.cs:51:9:51:39 | ... ? ... : ... | Patterns.cs:50:24:50:25 | enter M3 | -| Patterns.cs:51:9:51:39 | ... ? ... : ... | Patterns.cs:51:9:51:21 | [false] ... is ... | -| Patterns.cs:51:9:51:39 | ... ? ... : ... | Patterns.cs:51:9:51:21 | [true] ... is ... | -| Patterns.cs:51:9:51:39 | ... ? ... : ... | Patterns.cs:51:9:51:39 | ... ? ... : ... | -| Patterns.cs:51:9:51:39 | ... ? ... : ... | Patterns.cs:51:14:51:21 | [match] not ... | -| Patterns.cs:51:9:51:39 | ... ? ... : ... | Patterns.cs:51:14:51:21 | [no-match] not ... | -| Patterns.cs:51:9:51:39 | ... ? ... : ... | Patterns.cs:51:25:51:25 | access to parameter c | -| Patterns.cs:51:9:51:39 | ... ? ... : ... | Patterns.cs:51:34:51:34 | access to parameter c | -| Patterns.cs:51:14:51:21 | [match] not ... | Patterns.cs:51:14:51:21 | [match] not ... | -| Patterns.cs:51:14:51:21 | [no-match] not ... | Patterns.cs:51:14:51:21 | [no-match] not ... | -| Patterns.cs:51:25:51:25 | access to parameter c | Patterns.cs:51:9:51:21 | [true] ... is ... | -| Patterns.cs:51:25:51:25 | access to parameter c | Patterns.cs:51:14:51:21 | [match] not ... | -| Patterns.cs:51:25:51:25 | access to parameter c | Patterns.cs:51:25:51:25 | access to parameter c | -| Patterns.cs:51:34:51:34 | access to parameter c | Patterns.cs:51:9:51:21 | [false] ... is ... | -| Patterns.cs:51:34:51:34 | access to parameter c | Patterns.cs:51:14:51:21 | [no-match] not ... | -| Patterns.cs:51:34:51:34 | access to parameter c | Patterns.cs:51:34:51:34 | access to parameter c | -| Patterns.cs:53:24:53:25 | enter M4 | Patterns.cs:53:24:53:25 | enter M4 | -| Patterns.cs:54:18:54:37 | { ... } | Patterns.cs:53:24:53:25 | enter M4 | -| Patterns.cs:54:18:54:37 | { ... } | Patterns.cs:54:18:54:37 | { ... } | -| Patterns.cs:54:18:54:37 | { ... } | Patterns.cs:54:27:54:35 | [match] { ... } | -| Patterns.cs:54:18:54:37 | { ... } | Patterns.cs:54:27:54:35 | [no-match] { ... } | -| Patterns.cs:54:18:54:37 | { ... } | Patterns.cs:54:33:54:33 | 1 | -| Patterns.cs:54:27:54:35 | [match] { ... } | Patterns.cs:54:27:54:35 | [match] { ... } | -| Patterns.cs:54:27:54:35 | [no-match] { ... } | Patterns.cs:54:27:54:35 | [no-match] { ... } | -| Patterns.cs:54:33:54:33 | 1 | Patterns.cs:54:33:54:33 | 1 | -| Patterns.cs:56:26:56:27 | enter M5 | Patterns.cs:56:26:56:27 | enter M5 | -| Patterns.cs:58:16:62:9 | ... switch { ... } | Patterns.cs:56:26:56:27 | enter M5 | -| Patterns.cs:58:16:62:9 | ... switch { ... } | Patterns.cs:58:16:62:9 | ... switch { ... } | -| Patterns.cs:58:16:62:9 | ... switch { ... } | Patterns.cs:60:13:60:17 | [match] not ... | -| Patterns.cs:58:16:62:9 | ... switch { ... } | Patterns.cs:60:13:60:17 | [no-match] not ... | -| Patterns.cs:58:16:62:9 | ... switch { ... } | Patterns.cs:60:22:60:28 | "not 1" | -| Patterns.cs:58:16:62:9 | ... switch { ... } | Patterns.cs:61:13:61:13 | _ | -| Patterns.cs:58:16:62:9 | ... switch { ... } | Patterns.cs:61:18:61:24 | "other" | -| Patterns.cs:60:13:60:17 | [match] not ... | Patterns.cs:60:13:60:17 | [match] not ... | -| Patterns.cs:60:13:60:17 | [no-match] not ... | Patterns.cs:60:13:60:17 | [no-match] not ... | -| Patterns.cs:60:22:60:28 | "not 1" | Patterns.cs:60:13:60:17 | [match] not ... | -| Patterns.cs:60:22:60:28 | "not 1" | Patterns.cs:60:22:60:28 | "not 1" | -| Patterns.cs:61:13:61:13 | _ | Patterns.cs:60:13:60:17 | [no-match] not ... | -| Patterns.cs:61:13:61:13 | _ | Patterns.cs:61:13:61:13 | _ | -| Patterns.cs:61:18:61:24 | "other" | Patterns.cs:60:13:60:17 | [no-match] not ... | -| Patterns.cs:61:18:61:24 | "other" | Patterns.cs:61:13:61:13 | _ | -| Patterns.cs:61:18:61:24 | "other" | Patterns.cs:61:18:61:24 | "other" | -| Patterns.cs:65:26:65:27 | enter M6 | Patterns.cs:65:26:65:27 | enter M6 | -| Patterns.cs:69:13:69:17 | [no-match] not ... | Patterns.cs:65:26:65:27 | enter M6 | -| Patterns.cs:69:13:69:17 | [no-match] not ... | Patterns.cs:69:13:69:17 | [no-match] not ... | -| Patterns.cs:70:13:70:13 | 2 | Patterns.cs:65:26:65:27 | enter M6 | -| Patterns.cs:70:13:70:13 | 2 | Patterns.cs:69:13:69:17 | [no-match] not ... | -| Patterns.cs:70:13:70:13 | 2 | Patterns.cs:70:13:70:13 | 2 | -| Patterns.cs:70:18:70:27 | "possible" | Patterns.cs:65:26:65:27 | enter M6 | -| Patterns.cs:70:18:70:27 | "possible" | Patterns.cs:69:13:69:17 | [no-match] not ... | -| Patterns.cs:70:18:70:27 | "possible" | Patterns.cs:70:13:70:13 | 2 | -| Patterns.cs:70:18:70:27 | "possible" | Patterns.cs:70:18:70:27 | "possible" | -| Patterns.cs:74:26:74:27 | enter M7 | Patterns.cs:74:26:74:27 | enter M7 | -| Patterns.cs:76:16:82:9 | ... switch { ... } | Patterns.cs:74:26:74:27 | enter M7 | -| Patterns.cs:76:16:82:9 | ... switch { ... } | Patterns.cs:76:16:82:9 | ... switch { ... } | -| Patterns.cs:76:16:82:9 | ... switch { ... } | Patterns.cs:78:20:78:24 | "> 1" | -| Patterns.cs:76:16:82:9 | ... switch { ... } | Patterns.cs:79:15:79:15 | 0 | -| Patterns.cs:76:16:82:9 | ... switch { ... } | Patterns.cs:79:20:79:24 | "< 0" | -| Patterns.cs:76:16:82:9 | ... switch { ... } | Patterns.cs:80:13:80:13 | 1 | -| Patterns.cs:76:16:82:9 | ... switch { ... } | Patterns.cs:80:18:80:20 | "1" | -| Patterns.cs:76:16:82:9 | ... switch { ... } | Patterns.cs:81:13:81:13 | _ | -| Patterns.cs:76:16:82:9 | ... switch { ... } | Patterns.cs:81:18:81:20 | "0" | -| Patterns.cs:78:20:78:24 | "> 1" | Patterns.cs:78:20:78:24 | "> 1" | -| Patterns.cs:79:15:79:15 | 0 | Patterns.cs:79:15:79:15 | 0 | -| Patterns.cs:79:20:79:24 | "< 0" | Patterns.cs:79:20:79:24 | "< 0" | -| Patterns.cs:80:13:80:13 | 1 | Patterns.cs:80:13:80:13 | 1 | -| Patterns.cs:80:18:80:20 | "1" | Patterns.cs:80:18:80:20 | "1" | -| Patterns.cs:81:13:81:13 | _ | Patterns.cs:81:13:81:13 | _ | -| Patterns.cs:81:18:81:20 | "0" | Patterns.cs:81:13:81:13 | _ | -| Patterns.cs:81:18:81:20 | "0" | Patterns.cs:81:18:81:20 | "0" | -| Patterns.cs:85:26:85:27 | enter M8 | Patterns.cs:85:26:85:27 | enter M8 | -| Patterns.cs:85:39:85:53 | [false] ... is ... | Patterns.cs:85:39:85:53 | [false] ... is ... | -| Patterns.cs:85:39:85:53 | [false] ... is ... | Patterns.cs:85:44:85:53 | [no-match] ... or ... | -| Patterns.cs:85:39:85:53 | [false] ... is ... | Patterns.cs:85:49:85:53 | [no-match] not ... | -| Patterns.cs:85:39:85:53 | [true] ... is ... | Patterns.cs:85:39:85:53 | [true] ... is ... | -| Patterns.cs:85:39:85:53 | [true] ... is ... | Patterns.cs:85:44:85:53 | [match] ... or ... | -| Patterns.cs:85:39:85:53 | [true] ... is ... | Patterns.cs:85:49:85:53 | [match] not ... | -| Patterns.cs:85:39:85:69 | ... ? ... : ... | Patterns.cs:85:26:85:27 | enter M8 | -| Patterns.cs:85:39:85:69 | ... ? ... : ... | Patterns.cs:85:39:85:53 | [false] ... is ... | -| Patterns.cs:85:39:85:69 | ... ? ... : ... | Patterns.cs:85:39:85:53 | [true] ... is ... | -| Patterns.cs:85:39:85:69 | ... ? ... : ... | Patterns.cs:85:39:85:69 | ... ? ... : ... | -| Patterns.cs:85:39:85:69 | ... ? ... : ... | Patterns.cs:85:44:85:53 | [match] ... or ... | -| Patterns.cs:85:39:85:69 | ... ? ... : ... | Patterns.cs:85:44:85:53 | [no-match] ... or ... | -| Patterns.cs:85:39:85:69 | ... ? ... : ... | Patterns.cs:85:49:85:53 | [match] not ... | -| Patterns.cs:85:39:85:69 | ... ? ... : ... | Patterns.cs:85:49:85:53 | [no-match] not ... | -| Patterns.cs:85:39:85:69 | ... ? ... : ... | Patterns.cs:85:53:85:53 | 2 | -| Patterns.cs:85:39:85:69 | ... ? ... : ... | Patterns.cs:85:57:85:63 | "not 2" | -| Patterns.cs:85:39:85:69 | ... ? ... : ... | Patterns.cs:85:67:85:69 | "2" | -| Patterns.cs:85:44:85:53 | [match] ... or ... | Patterns.cs:85:44:85:53 | [match] ... or ... | -| Patterns.cs:85:44:85:53 | [match] ... or ... | Patterns.cs:85:49:85:53 | [match] not ... | -| Patterns.cs:85:44:85:53 | [no-match] ... or ... | Patterns.cs:85:44:85:53 | [no-match] ... or ... | -| Patterns.cs:85:44:85:53 | [no-match] ... or ... | Patterns.cs:85:49:85:53 | [no-match] not ... | -| Patterns.cs:85:49:85:53 | [match] not ... | Patterns.cs:85:49:85:53 | [match] not ... | -| Patterns.cs:85:49:85:53 | [no-match] not ... | Patterns.cs:85:49:85:53 | [no-match] not ... | -| Patterns.cs:85:53:85:53 | 2 | Patterns.cs:85:53:85:53 | 2 | -| Patterns.cs:85:57:85:63 | "not 2" | Patterns.cs:85:39:85:53 | [true] ... is ... | -| Patterns.cs:85:57:85:63 | "not 2" | Patterns.cs:85:44:85:53 | [match] ... or ... | -| Patterns.cs:85:57:85:63 | "not 2" | Patterns.cs:85:49:85:53 | [match] not ... | -| Patterns.cs:85:57:85:63 | "not 2" | Patterns.cs:85:57:85:63 | "not 2" | -| Patterns.cs:85:67:85:69 | "2" | Patterns.cs:85:39:85:53 | [false] ... is ... | -| Patterns.cs:85:67:85:69 | "2" | Patterns.cs:85:44:85:53 | [no-match] ... or ... | -| Patterns.cs:85:67:85:69 | "2" | Patterns.cs:85:49:85:53 | [no-match] not ... | -| Patterns.cs:85:67:85:69 | "2" | Patterns.cs:85:67:85:69 | "2" | -| Patterns.cs:87:26:87:27 | enter M9 | Patterns.cs:87:26:87:27 | enter M9 | -| Patterns.cs:87:39:87:54 | [false] ... is ... | Patterns.cs:87:39:87:54 | [false] ... is ... | -| Patterns.cs:87:39:87:54 | [false] ... is ... | Patterns.cs:87:44:87:54 | [no-match] ... and ... | -| Patterns.cs:87:39:87:54 | [false] ... is ... | Patterns.cs:87:50:87:54 | [no-match] not ... | -| Patterns.cs:87:39:87:54 | [true] ... is ... | Patterns.cs:87:39:87:54 | [true] ... is ... | -| Patterns.cs:87:39:87:54 | [true] ... is ... | Patterns.cs:87:44:87:54 | [match] ... and ... | -| Patterns.cs:87:39:87:54 | [true] ... is ... | Patterns.cs:87:50:87:54 | [match] not ... | -| Patterns.cs:87:39:87:70 | ... ? ... : ... | Patterns.cs:87:26:87:27 | enter M9 | -| Patterns.cs:87:39:87:70 | ... ? ... : ... | Patterns.cs:87:39:87:54 | [false] ... is ... | -| Patterns.cs:87:39:87:70 | ... ? ... : ... | Patterns.cs:87:39:87:54 | [true] ... is ... | -| Patterns.cs:87:39:87:70 | ... ? ... : ... | Patterns.cs:87:39:87:70 | ... ? ... : ... | -| Patterns.cs:87:39:87:70 | ... ? ... : ... | Patterns.cs:87:44:87:54 | [match] ... and ... | -| Patterns.cs:87:39:87:70 | ... ? ... : ... | Patterns.cs:87:44:87:54 | [no-match] ... and ... | -| Patterns.cs:87:39:87:70 | ... ? ... : ... | Patterns.cs:87:50:87:54 | [match] not ... | -| Patterns.cs:87:39:87:70 | ... ? ... : ... | Patterns.cs:87:50:87:54 | [no-match] not ... | -| Patterns.cs:87:39:87:70 | ... ? ... : ... | Patterns.cs:87:54:87:54 | 2 | -| Patterns.cs:87:39:87:70 | ... ? ... : ... | Patterns.cs:87:58:87:60 | "1" | -| Patterns.cs:87:39:87:70 | ... ? ... : ... | Patterns.cs:87:64:87:70 | "not 1" | -| Patterns.cs:87:44:87:54 | [match] ... and ... | Patterns.cs:87:44:87:54 | [match] ... and ... | -| Patterns.cs:87:44:87:54 | [match] ... and ... | Patterns.cs:87:50:87:54 | [match] not ... | -| Patterns.cs:87:44:87:54 | [no-match] ... and ... | Patterns.cs:87:44:87:54 | [no-match] ... and ... | -| Patterns.cs:87:44:87:54 | [no-match] ... and ... | Patterns.cs:87:50:87:54 | [no-match] not ... | -| Patterns.cs:87:50:87:54 | [match] not ... | Patterns.cs:87:50:87:54 | [match] not ... | -| Patterns.cs:87:50:87:54 | [no-match] not ... | Patterns.cs:87:50:87:54 | [no-match] not ... | -| Patterns.cs:87:54:87:54 | 2 | Patterns.cs:87:54:87:54 | 2 | -| Patterns.cs:87:58:87:60 | "1" | Patterns.cs:87:39:87:54 | [true] ... is ... | -| Patterns.cs:87:58:87:60 | "1" | Patterns.cs:87:44:87:54 | [match] ... and ... | -| Patterns.cs:87:58:87:60 | "1" | Patterns.cs:87:50:87:54 | [match] not ... | -| Patterns.cs:87:58:87:60 | "1" | Patterns.cs:87:58:87:60 | "1" | -| Patterns.cs:87:64:87:70 | "not 1" | Patterns.cs:87:39:87:54 | [false] ... is ... | -| Patterns.cs:87:64:87:70 | "not 1" | Patterns.cs:87:44:87:54 | [no-match] ... and ... | -| Patterns.cs:87:64:87:70 | "not 1" | Patterns.cs:87:50:87:54 | [no-match] not ... | -| Patterns.cs:87:64:87:70 | "not 1" | Patterns.cs:87:64:87:70 | "not 1" | -| Patterns.cs:93:17:93:19 | enter M10 | Patterns.cs:93:17:93:19 | enter M10 | -| Patterns.cs:93:17:93:19 | exit M10 (normal) | Patterns.cs:93:17:93:19 | enter M10 | -| Patterns.cs:93:17:93:19 | exit M10 (normal) | Patterns.cs:93:17:93:19 | exit M10 (normal) | -| Patterns.cs:93:17:93:19 | exit M10 (normal) | Patterns.cs:95:13:95:40 | [false] ... is ... | -| Patterns.cs:93:17:93:19 | exit M10 (normal) | Patterns.cs:95:13:95:40 | [true] ... is ... | -| Patterns.cs:93:17:93:19 | exit M10 (normal) | Patterns.cs:95:21:95:40 | [match] { ... } | -| Patterns.cs:93:17:93:19 | exit M10 (normal) | Patterns.cs:95:21:95:40 | [match] { ... } | -| Patterns.cs:93:17:93:19 | exit M10 (normal) | Patterns.cs:95:21:95:40 | [no-match] { ... } | -| Patterns.cs:93:17:93:19 | exit M10 (normal) | Patterns.cs:95:21:95:40 | [no-match] { ... } | -| Patterns.cs:93:17:93:19 | exit M10 (normal) | Patterns.cs:95:29:95:38 | [match] ... or ... | -| Patterns.cs:93:17:93:19 | exit M10 (normal) | Patterns.cs:95:29:95:38 | [no-match] ... or ... | -| Patterns.cs:93:17:93:19 | exit M10 (normal) | Patterns.cs:95:36:95:38 | access to constant B | -| Patterns.cs:93:17:93:19 | exit M10 (normal) | Patterns.cs:96:9:98:9 | {...} | -| Patterns.cs:95:13:95:40 | [false] ... is ... | Patterns.cs:95:13:95:40 | [false] ... is ... | -| Patterns.cs:95:13:95:40 | [false] ... is ... | Patterns.cs:95:21:95:40 | [no-match] { ... } | -| Patterns.cs:95:13:95:40 | [false] ... is ... | Patterns.cs:95:21:95:40 | [no-match] { ... } | -| Patterns.cs:95:13:95:40 | [false] ... is ... | Patterns.cs:95:29:95:38 | [no-match] ... or ... | -| Patterns.cs:95:13:95:40 | [true] ... is ... | Patterns.cs:95:13:95:40 | [true] ... is ... | -| Patterns.cs:95:13:95:40 | [true] ... is ... | Patterns.cs:95:21:95:40 | [match] { ... } | -| Patterns.cs:95:13:95:40 | [true] ... is ... | Patterns.cs:95:21:95:40 | [match] { ... } | -| Patterns.cs:95:13:95:40 | [true] ... is ... | Patterns.cs:95:29:95:38 | [match] ... or ... | -| Patterns.cs:95:21:95:40 | [match] { ... } | Patterns.cs:95:21:95:40 | [match] { ... } | -| Patterns.cs:95:21:95:40 | [match] { ... } | Patterns.cs:95:21:95:40 | [match] { ... } | -| Patterns.cs:95:21:95:40 | [match] { ... } | Patterns.cs:95:21:95:40 | [match] { ... } | -| Patterns.cs:95:21:95:40 | [match] { ... } | Patterns.cs:95:29:95:38 | [match] ... or ... | -| Patterns.cs:95:21:95:40 | [match] { ... } | Patterns.cs:95:29:95:38 | [match] ... or ... | -| Patterns.cs:95:21:95:40 | [no-match] { ... } | Patterns.cs:95:21:95:40 | [no-match] { ... } | -| Patterns.cs:95:21:95:40 | [no-match] { ... } | Patterns.cs:95:21:95:40 | [no-match] { ... } | -| Patterns.cs:95:21:95:40 | [no-match] { ... } | Patterns.cs:95:21:95:40 | [no-match] { ... } | -| Patterns.cs:95:21:95:40 | [no-match] { ... } | Patterns.cs:95:29:95:38 | [no-match] ... or ... | -| Patterns.cs:95:21:95:40 | [no-match] { ... } | Patterns.cs:95:29:95:38 | [no-match] ... or ... | -| Patterns.cs:95:29:95:38 | [match] ... or ... | Patterns.cs:95:29:95:38 | [match] ... or ... | -| Patterns.cs:95:29:95:38 | [no-match] ... or ... | Patterns.cs:95:29:95:38 | [no-match] ... or ... | -| Patterns.cs:95:36:95:38 | access to constant B | Patterns.cs:95:36:95:38 | access to constant B | -| Patterns.cs:96:9:98:9 | {...} | Patterns.cs:95:13:95:40 | [true] ... is ... | -| Patterns.cs:96:9:98:9 | {...} | Patterns.cs:95:21:95:40 | [match] { ... } | -| Patterns.cs:96:9:98:9 | {...} | Patterns.cs:95:21:95:40 | [match] { ... } | -| Patterns.cs:96:9:98:9 | {...} | Patterns.cs:95:29:95:38 | [match] ... or ... | -| Patterns.cs:96:9:98:9 | {...} | Patterns.cs:96:9:98:9 | {...} | -| PostDominance.cs:3:7:3:19 | enter PostDominance | PostDominance.cs:3:7:3:19 | enter PostDominance | -| PostDominance.cs:5:10:5:11 | enter M1 | PostDominance.cs:5:10:5:11 | enter M1 | -| PostDominance.cs:10:10:10:11 | enter M2 | PostDominance.cs:10:10:10:11 | enter M2 | -| PostDominance.cs:10:10:10:11 | exit M2 (normal) | PostDominance.cs:10:10:10:11 | enter M2 | -| PostDominance.cs:10:10:10:11 | exit M2 (normal) | PostDominance.cs:10:10:10:11 | exit M2 (normal) | -| PostDominance.cs:10:10:10:11 | exit M2 (normal) | PostDominance.cs:12:13:12:21 | [false] ... is ... | -| PostDominance.cs:10:10:10:11 | exit M2 (normal) | PostDominance.cs:12:13:12:21 | [true] ... is ... | -| PostDominance.cs:10:10:10:11 | exit M2 (normal) | PostDominance.cs:13:13:13:19 | return ...; | -| PostDominance.cs:10:10:10:11 | exit M2 (normal) | PostDominance.cs:14:9:14:29 | ...; | -| PostDominance.cs:12:13:12:21 | [false] ... is ... | PostDominance.cs:12:13:12:21 | [false] ... is ... | -| PostDominance.cs:12:13:12:21 | [true] ... is ... | PostDominance.cs:12:13:12:21 | [true] ... is ... | -| PostDominance.cs:13:13:13:19 | return ...; | PostDominance.cs:12:13:12:21 | [true] ... is ... | -| PostDominance.cs:13:13:13:19 | return ...; | PostDominance.cs:13:13:13:19 | return ...; | -| PostDominance.cs:14:9:14:29 | ...; | PostDominance.cs:12:13:12:21 | [false] ... is ... | -| PostDominance.cs:14:9:14:29 | ...; | PostDominance.cs:14:9:14:29 | ...; | -| PostDominance.cs:17:10:17:11 | enter M3 | PostDominance.cs:17:10:17:11 | enter M3 | -| PostDominance.cs:17:10:17:11 | exit M3 | PostDominance.cs:17:10:17:11 | exit M3 | -| PostDominance.cs:19:13:19:21 | [false] ... is ... | PostDominance.cs:17:10:17:11 | enter M3 | -| PostDominance.cs:19:13:19:21 | [false] ... is ... | PostDominance.cs:19:13:19:21 | [false] ... is ... | -| PostDominance.cs:19:13:19:21 | [true] ... is ... | PostDominance.cs:19:13:19:21 | [true] ... is ... | -| PostDominance.cs:20:45:20:53 | nameof(...) | PostDominance.cs:20:45:20:53 | nameof(...) | -| PostDominance.cs:21:9:21:29 | ...; | PostDominance.cs:17:10:17:11 | enter M3 | -| PostDominance.cs:21:9:21:29 | ...; | PostDominance.cs:19:13:19:21 | [false] ... is ... | -| PostDominance.cs:21:9:21:29 | ...; | PostDominance.cs:21:9:21:29 | ...; | -| Qualifiers.cs:1:7:1:16 | enter Qualifiers | Qualifiers.cs:1:7:1:16 | enter Qualifiers | -| Qualifiers.cs:7:16:7:21 | enter Method | Qualifiers.cs:7:16:7:21 | enter Method | -| Qualifiers.cs:8:23:8:34 | enter StaticMethod | Qualifiers.cs:8:23:8:34 | enter StaticMethod | -| Qualifiers.cs:10:10:10:10 | enter M | Qualifiers.cs:10:10:10:10 | enter M | -| Switch.cs:3:7:3:12 | enter Switch | Switch.cs:3:7:3:12 | enter Switch | -| Switch.cs:5:10:5:11 | enter M1 | Switch.cs:5:10:5:11 | enter M1 | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:10:10:10:11 | enter M2 | -| Switch.cs:10:10:10:11 | exit M2 | Switch.cs:10:10:10:11 | exit M2 | -| Switch.cs:10:10:10:11 | exit M2 (abnormal) | Switch.cs:10:10:10:11 | exit M2 (abnormal) | -| Switch.cs:10:10:10:11 | exit M2 (normal) | Switch.cs:10:10:10:11 | enter M2 | -| Switch.cs:10:10:10:11 | exit M2 (normal) | Switch.cs:10:10:10:11 | exit M2 (normal) | -| Switch.cs:10:10:10:11 | exit M2 (normal) | Switch.cs:15:17:15:23 | return ...; | -| Switch.cs:10:10:10:11 | exit M2 (normal) | Switch.cs:16:13:16:19 | case ...: | -| Switch.cs:10:10:10:11 | exit M2 (normal) | Switch.cs:18:13:18:22 | case ...: | -| Switch.cs:10:10:10:11 | exit M2 (normal) | Switch.cs:19:17:19:29 | goto default; | -| Switch.cs:10:10:10:11 | exit M2 (normal) | Switch.cs:20:13:20:23 | case ...: | -| Switch.cs:10:10:10:11 | exit M2 (normal) | Switch.cs:21:17:22:27 | if (...) ... | -| Switch.cs:10:10:10:11 | exit M2 (normal) | Switch.cs:22:21:22:27 | return ...; | -| Switch.cs:10:10:10:11 | exit M2 (normal) | Switch.cs:23:27:23:27 | 0 | -| Switch.cs:10:10:10:11 | exit M2 (normal) | Switch.cs:24:13:24:56 | case ...: | -| Switch.cs:10:10:10:11 | exit M2 (normal) | Switch.cs:24:32:24:32 | access to local variable s | -| Switch.cs:10:10:10:11 | exit M2 (normal) | Switch.cs:24:32:24:55 | [false] ... && ... | -| Switch.cs:10:10:10:11 | exit M2 (normal) | Switch.cs:24:32:24:55 | [true] ... && ... | -| Switch.cs:10:10:10:11 | exit M2 (normal) | Switch.cs:24:48:24:48 | access to local variable s | -| Switch.cs:10:10:10:11 | exit M2 (normal) | Switch.cs:25:17:25:37 | ...; | -| Switch.cs:10:10:10:11 | exit M2 (normal) | Switch.cs:27:13:27:39 | case ...: | -| Switch.cs:10:10:10:11 | exit M2 (normal) | Switch.cs:30:13:30:20 | default: | -| Switch.cs:15:17:15:23 | return ...; | Switch.cs:15:17:15:23 | return ...; | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:16:13:16:19 | case ...: | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:23:27:23:27 | 0 | -| Switch.cs:17:23:17:37 | object creation of type Exception | Switch.cs:17:23:17:37 | object creation of type Exception | -| Switch.cs:18:13:18:22 | case ...: | Switch.cs:16:13:16:19 | case ...: | -| Switch.cs:18:13:18:22 | case ...: | Switch.cs:18:13:18:22 | case ...: | -| Switch.cs:18:13:18:22 | case ...: | Switch.cs:23:27:23:27 | 0 | -| Switch.cs:19:17:19:29 | goto default; | Switch.cs:19:17:19:29 | goto default; | -| Switch.cs:20:13:20:23 | case ...: | Switch.cs:20:13:20:23 | case ...: | -| Switch.cs:21:17:22:27 | if (...) ... | Switch.cs:21:17:22:27 | if (...) ... | -| Switch.cs:22:21:22:27 | return ...; | Switch.cs:22:21:22:27 | return ...; | -| Switch.cs:23:27:23:27 | 0 | Switch.cs:23:27:23:27 | 0 | -| Switch.cs:24:13:24:56 | case ...: | Switch.cs:24:13:24:56 | case ...: | -| Switch.cs:24:32:24:32 | access to local variable s | Switch.cs:24:32:24:32 | access to local variable s | -| Switch.cs:24:32:24:55 | [false] ... && ... | Switch.cs:24:32:24:55 | [false] ... && ... | -| Switch.cs:24:32:24:55 | [true] ... && ... | Switch.cs:24:32:24:55 | [true] ... && ... | -| Switch.cs:24:48:24:48 | access to local variable s | Switch.cs:24:48:24:48 | access to local variable s | -| Switch.cs:25:17:25:37 | ...; | Switch.cs:24:32:24:55 | [true] ... && ... | -| Switch.cs:25:17:25:37 | ...; | Switch.cs:25:17:25:37 | ...; | -| Switch.cs:27:13:27:39 | case ...: | Switch.cs:24:32:24:55 | [false] ... && ... | +| Patterns.cs:27:18:27:23 | After Int32 i3 [match] | Patterns.cs:27:18:27:23 | After Int32 i3 [match] | +| Patterns.cs:27:18:27:23 | After Int32 i3 [no-match] | Patterns.cs:27:18:27:23 | After Int32 i3 [no-match] | +| Patterns.cs:30:18:30:26 | After String s2 [match] | Patterns.cs:30:18:30:26 | After String s2 [match] | +| Patterns.cs:30:18:30:26 | After String s2 [no-match] | Patterns.cs:30:18:30:26 | After String s2 [no-match] | +| Patterns.cs:33:18:33:23 | After Object v2 [match] | Patterns.cs:33:18:33:23 | After Object v2 [match] | +| Patterns.cs:33:18:33:23 | After Object v2 [no-match] | Patterns.cs:33:18:33:23 | After Object v2 [no-match] | +| Patterns.cs:47:24:47:25 | Entry | Patterns.cs:47:24:47:25 | Entry | +| Patterns.cs:48:9:48:20 | After ... is ... | Patterns.cs:47:24:47:25 | Entry | +| Patterns.cs:48:9:48:20 | After ... is ... | Patterns.cs:48:9:48:20 | After ... is ... | +| Patterns.cs:48:9:48:20 | After ... is ... | Patterns.cs:48:9:48:20 | [MatchTrue] ... is ... | +| Patterns.cs:48:9:48:20 | [MatchTrue] ... is ... | Patterns.cs:48:9:48:20 | [MatchTrue] ... is ... | +| Patterns.cs:50:24:50:25 | Entry | Patterns.cs:50:24:50:25 | Entry | +| Patterns.cs:51:9:51:21 | After ... is ... [false] | Patterns.cs:51:9:51:21 | After ... is ... [false] | +| Patterns.cs:51:9:51:21 | [MatchTrue] ... is ... | Patterns.cs:51:9:51:21 | [MatchTrue] ... is ... | +| Patterns.cs:51:9:51:39 | After ... ? ... : ... | Patterns.cs:50:24:50:25 | Entry | +| Patterns.cs:51:9:51:39 | After ... ? ... : ... | Patterns.cs:51:9:51:21 | After ... is ... [false] | +| Patterns.cs:51:9:51:39 | After ... ? ... : ... | Patterns.cs:51:9:51:21 | [MatchTrue] ... is ... | +| Patterns.cs:51:9:51:39 | After ... ? ... : ... | Patterns.cs:51:9:51:39 | After ... ? ... : ... | +| Patterns.cs:51:9:51:39 | After ... ? ... : ... | Patterns.cs:51:25:51:30 | After ... is ... | +| Patterns.cs:51:9:51:39 | After ... ? ... : ... | Patterns.cs:51:25:51:30 | [MatchTrue] ... is ... | +| Patterns.cs:51:9:51:39 | After ... ? ... : ... | Patterns.cs:51:34:51:39 | After ... is ... | +| Patterns.cs:51:9:51:39 | After ... ? ... : ... | Patterns.cs:51:34:51:39 | [MatchTrue] ... is ... | +| Patterns.cs:51:25:51:30 | After ... is ... | Patterns.cs:51:9:51:21 | [MatchTrue] ... is ... | +| Patterns.cs:51:25:51:30 | After ... is ... | Patterns.cs:51:25:51:30 | After ... is ... | +| Patterns.cs:51:25:51:30 | After ... is ... | Patterns.cs:51:25:51:30 | [MatchTrue] ... is ... | +| Patterns.cs:51:25:51:30 | [MatchTrue] ... is ... | Patterns.cs:51:25:51:30 | [MatchTrue] ... is ... | +| Patterns.cs:51:34:51:39 | After ... is ... | Patterns.cs:51:9:51:21 | After ... is ... [false] | +| Patterns.cs:51:34:51:39 | After ... is ... | Patterns.cs:51:34:51:39 | After ... is ... | +| Patterns.cs:51:34:51:39 | After ... is ... | Patterns.cs:51:34:51:39 | [MatchTrue] ... is ... | +| Patterns.cs:51:34:51:39 | [MatchTrue] ... is ... | Patterns.cs:51:34:51:39 | [MatchTrue] ... is ... | +| Patterns.cs:53:24:53:25 | Entry | Patterns.cs:53:24:53:25 | Entry | +| Patterns.cs:54:9:54:37 | After ... is ... | Patterns.cs:53:24:53:25 | Entry | +| Patterns.cs:54:9:54:37 | After ... is ... | Patterns.cs:54:9:54:37 | After ... is ... | +| Patterns.cs:54:9:54:37 | After ... is ... | Patterns.cs:54:9:54:37 | [MatchTrue] ... is ... | +| Patterns.cs:54:9:54:37 | [MatchTrue] ... is ... | Patterns.cs:54:9:54:37 | [MatchTrue] ... is ... | +| Patterns.cs:56:26:56:27 | Entry | Patterns.cs:56:26:56:27 | Entry | +| Patterns.cs:58:16:62:9 | After ... switch { ... } | Patterns.cs:56:26:56:27 | Entry | +| Patterns.cs:58:16:62:9 | After ... switch { ... } | Patterns.cs:58:16:62:9 | After ... switch { ... } | +| Patterns.cs:58:16:62:9 | After ... switch { ... } | Patterns.cs:60:13:60:17 | After not ... [match] | +| Patterns.cs:58:16:62:9 | After ... switch { ... } | Patterns.cs:60:13:60:17 | After not ... [no-match] | +| Patterns.cs:60:13:60:17 | After not ... [match] | Patterns.cs:60:13:60:17 | After not ... [match] | +| Patterns.cs:60:13:60:17 | After not ... [no-match] | Patterns.cs:60:13:60:17 | After not ... [no-match] | +| Patterns.cs:65:26:65:27 | Entry | Patterns.cs:65:26:65:27 | Entry | +| Patterns.cs:67:16:71:9 | After ... switch { ... } | Patterns.cs:65:26:65:27 | Entry | +| Patterns.cs:67:16:71:9 | After ... switch { ... } | Patterns.cs:67:16:71:9 | After ... switch { ... } | +| Patterns.cs:67:16:71:9 | After ... switch { ... } | Patterns.cs:69:13:69:17 | After not ... [match] | +| Patterns.cs:67:16:71:9 | After ... switch { ... } | Patterns.cs:69:13:69:17 | After not ... [no-match] | +| Patterns.cs:67:16:71:9 | After ... switch { ... } | Patterns.cs:70:13:70:13 | After 2 [match] | +| Patterns.cs:67:16:71:9 | After ... switch { ... } | Patterns.cs:70:13:70:13 | After 2 [no-match] | +| Patterns.cs:69:13:69:17 | After not ... [match] | Patterns.cs:69:13:69:17 | After not ... [match] | +| Patterns.cs:69:13:69:17 | After not ... [no-match] | Patterns.cs:69:13:69:17 | After not ... [no-match] | +| Patterns.cs:70:13:70:13 | After 2 [match] | Patterns.cs:70:13:70:13 | After 2 [match] | +| Patterns.cs:70:13:70:13 | After 2 [no-match] | Patterns.cs:70:13:70:13 | After 2 [no-match] | +| Patterns.cs:74:26:74:27 | Entry | Patterns.cs:74:26:74:27 | Entry | +| Patterns.cs:76:16:82:9 | After ... switch { ... } | Patterns.cs:74:26:74:27 | Entry | +| Patterns.cs:76:16:82:9 | After ... switch { ... } | Patterns.cs:76:16:82:9 | After ... switch { ... } | +| Patterns.cs:76:16:82:9 | After ... switch { ... } | Patterns.cs:78:13:78:15 | After > ... [match] | +| Patterns.cs:76:16:82:9 | After ... switch { ... } | Patterns.cs:78:13:78:15 | After > ... [no-match] | +| Patterns.cs:76:16:82:9 | After ... switch { ... } | Patterns.cs:79:13:79:15 | After < ... [match] | +| Patterns.cs:76:16:82:9 | After ... switch { ... } | Patterns.cs:79:13:79:15 | After < ... [no-match] | +| Patterns.cs:76:16:82:9 | After ... switch { ... } | Patterns.cs:80:13:80:13 | After 1 [match] | +| Patterns.cs:76:16:82:9 | After ... switch { ... } | Patterns.cs:80:13:80:13 | After 1 [no-match] | +| Patterns.cs:78:13:78:15 | After > ... [match] | Patterns.cs:78:13:78:15 | After > ... [match] | +| Patterns.cs:78:13:78:15 | After > ... [no-match] | Patterns.cs:78:13:78:15 | After > ... [no-match] | +| Patterns.cs:79:13:79:15 | After < ... [match] | Patterns.cs:79:13:79:15 | After < ... [match] | +| Patterns.cs:79:13:79:15 | After < ... [no-match] | Patterns.cs:79:13:79:15 | After < ... [no-match] | +| Patterns.cs:80:13:80:13 | After 1 [match] | Patterns.cs:80:13:80:13 | After 1 [match] | +| Patterns.cs:80:13:80:13 | After 1 [no-match] | Patterns.cs:80:13:80:13 | After 1 [no-match] | +| Patterns.cs:85:26:85:27 | Entry | Patterns.cs:85:26:85:27 | Entry | +| Patterns.cs:85:39:85:53 | After ... is ... [false] | Patterns.cs:85:39:85:53 | After ... is ... [false] | +| Patterns.cs:85:39:85:53 | [MatchTrue] ... is ... | Patterns.cs:85:39:85:53 | [MatchTrue] ... is ... | +| Patterns.cs:85:39:85:69 | After ... ? ... : ... | Patterns.cs:85:26:85:27 | Entry | +| Patterns.cs:85:39:85:69 | After ... ? ... : ... | Patterns.cs:85:39:85:53 | After ... is ... [false] | +| Patterns.cs:85:39:85:69 | After ... ? ... : ... | Patterns.cs:85:39:85:53 | [MatchTrue] ... is ... | +| Patterns.cs:85:39:85:69 | After ... ? ... : ... | Patterns.cs:85:39:85:69 | After ... ? ... : ... | +| Patterns.cs:87:26:87:27 | Entry | Patterns.cs:87:26:87:27 | Entry | +| Patterns.cs:87:39:87:54 | After ... is ... [false] | Patterns.cs:87:39:87:54 | After ... is ... [false] | +| Patterns.cs:87:39:87:54 | [MatchTrue] ... is ... | Patterns.cs:87:39:87:54 | [MatchTrue] ... is ... | +| Patterns.cs:87:39:87:70 | After ... ? ... : ... | Patterns.cs:87:26:87:27 | Entry | +| Patterns.cs:87:39:87:70 | After ... ? ... : ... | Patterns.cs:87:39:87:54 | After ... is ... [false] | +| Patterns.cs:87:39:87:70 | After ... ? ... : ... | Patterns.cs:87:39:87:54 | [MatchTrue] ... is ... | +| Patterns.cs:87:39:87:70 | After ... ? ... : ... | Patterns.cs:87:39:87:70 | After ... ? ... : ... | +| Patterns.cs:93:17:93:19 | Entry | Patterns.cs:93:17:93:19 | Entry | +| Patterns.cs:95:9:98:9 | After if (...) ... | Patterns.cs:93:17:93:19 | Entry | +| Patterns.cs:95:9:98:9 | After if (...) ... | Patterns.cs:95:9:98:9 | After if (...) ... | +| Patterns.cs:95:9:98:9 | After if (...) ... | Patterns.cs:95:13:95:40 | After ... is ... [false] | +| Patterns.cs:95:9:98:9 | After if (...) ... | Patterns.cs:95:13:95:40 | [MatchTrue] ... is ... | +| Patterns.cs:95:13:95:40 | After ... is ... [false] | Patterns.cs:95:13:95:40 | After ... is ... [false] | +| Patterns.cs:95:13:95:40 | [MatchTrue] ... is ... | Patterns.cs:95:13:95:40 | [MatchTrue] ... is ... | +| PostDominance.cs:3:7:3:19 | Entry | PostDominance.cs:3:7:3:19 | Entry | +| PostDominance.cs:5:10:5:11 | Entry | PostDominance.cs:5:10:5:11 | Entry | +| PostDominance.cs:10:10:10:11 | Entry | PostDominance.cs:10:10:10:11 | Entry | +| PostDominance.cs:10:10:10:11 | Normal Exit | PostDominance.cs:10:10:10:11 | Entry | +| PostDominance.cs:10:10:10:11 | Normal Exit | PostDominance.cs:10:10:10:11 | Normal Exit | +| PostDominance.cs:10:10:10:11 | Normal Exit | PostDominance.cs:12:13:12:21 | After ... is ... [false] | +| PostDominance.cs:10:10:10:11 | Normal Exit | PostDominance.cs:12:13:12:21 | [MatchTrue] ... is ... | +| PostDominance.cs:12:13:12:21 | After ... is ... [false] | PostDominance.cs:12:13:12:21 | After ... is ... [false] | +| PostDominance.cs:12:13:12:21 | [MatchTrue] ... is ... | PostDominance.cs:12:13:12:21 | [MatchTrue] ... is ... | +| PostDominance.cs:17:10:17:11 | Entry | PostDominance.cs:17:10:17:11 | Entry | +| PostDominance.cs:17:10:17:11 | Exit | PostDominance.cs:17:10:17:11 | Exit | +| PostDominance.cs:19:13:19:21 | After ... is ... [false] | PostDominance.cs:17:10:17:11 | Entry | +| PostDominance.cs:19:13:19:21 | After ... is ... [false] | PostDominance.cs:19:13:19:21 | After ... is ... [false] | +| PostDominance.cs:19:13:19:21 | [MatchTrue] ... is ... | PostDominance.cs:19:13:19:21 | [MatchTrue] ... is ... | +| Qualifiers.cs:1:7:1:16 | Entry | Qualifiers.cs:1:7:1:16 | Entry | +| Qualifiers.cs:7:16:7:21 | Entry | Qualifiers.cs:7:16:7:21 | Entry | +| Qualifiers.cs:8:23:8:34 | Entry | Qualifiers.cs:8:23:8:34 | Entry | +| Qualifiers.cs:10:10:10:10 | Entry | Qualifiers.cs:10:10:10:10 | Entry | +| Switch.cs:3:7:3:12 | Entry | Switch.cs:3:7:3:12 | Entry | +| Switch.cs:5:10:5:11 | Entry | Switch.cs:5:10:5:11 | Entry | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:10:10:10:11 | Entry | +| Switch.cs:10:10:10:11 | Exceptional Exit | Switch.cs:10:10:10:11 | Exceptional Exit | +| Switch.cs:10:10:10:11 | Exit | Switch.cs:10:10:10:11 | Exit | +| Switch.cs:10:10:10:11 | Normal Exit | Switch.cs:10:10:10:11 | Entry | +| Switch.cs:10:10:10:11 | Normal Exit | Switch.cs:10:10:10:11 | Normal Exit | +| Switch.cs:10:10:10:11 | Normal Exit | Switch.cs:14:18:14:20 | After "a" [match] | +| Switch.cs:10:10:10:11 | Normal Exit | Switch.cs:14:18:14:20 | After "a" [no-match] | +| Switch.cs:10:10:10:11 | Normal Exit | Switch.cs:16:18:16:18 | After 0 [no-match] | +| Switch.cs:10:10:10:11 | Normal Exit | Switch.cs:18:18:18:21 | After null [match] | +| Switch.cs:10:10:10:11 | Normal Exit | Switch.cs:18:18:18:21 | After null [no-match] | +| Switch.cs:10:10:10:11 | Normal Exit | Switch.cs:20:18:20:22 | After Int32 i [match] | +| Switch.cs:10:10:10:11 | Normal Exit | Switch.cs:20:18:20:22 | After Int32 i [no-match] | +| Switch.cs:10:10:10:11 | Normal Exit | Switch.cs:21:21:21:29 | After ... == ... [true] | +| Switch.cs:10:10:10:11 | Normal Exit | Switch.cs:24:18:24:25 | After String s [match] | +| Switch.cs:10:10:10:11 | Normal Exit | Switch.cs:24:18:24:25 | After String s [no-match] | +| Switch.cs:10:10:10:11 | Normal Exit | Switch.cs:24:32:24:43 | After ... > ... [false] | +| Switch.cs:10:10:10:11 | Normal Exit | Switch.cs:24:32:24:43 | After ... > ... [true] | +| Switch.cs:10:10:10:11 | Normal Exit | Switch.cs:24:32:24:55 | After ... && ... [false] | +| Switch.cs:10:10:10:11 | Normal Exit | Switch.cs:24:48:24:55 | After ... != ... [false] | +| Switch.cs:10:10:10:11 | Normal Exit | Switch.cs:24:48:24:55 | After ... != ... [true] | +| Switch.cs:10:10:10:11 | Normal Exit | Switch.cs:27:13:27:39 | case ...: | +| Switch.cs:10:10:10:11 | Normal Exit | Switch.cs:27:18:27:25 | After Double d [no-match] | +| Switch.cs:10:10:10:11 | Normal Exit | Switch.cs:30:13:30:20 | After default: [match] | +| Switch.cs:14:18:14:20 | After "a" [match] | Switch.cs:14:18:14:20 | After "a" [match] | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:14:18:14:20 | After "a" [no-match] | +| Switch.cs:16:13:16:19 | After case ...: [match] | Switch.cs:16:13:16:19 | After case ...: [match] | +| Switch.cs:16:18:16:18 | After 0 [match] | Switch.cs:16:18:16:18 | After 0 [match] | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:14:18:14:20 | After "a" [no-match] | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:16:18:16:18 | After 0 [no-match] | +| Switch.cs:18:18:18:21 | After null [match] | Switch.cs:18:18:18:21 | After null [match] | +| Switch.cs:18:18:18:21 | After null [no-match] | Switch.cs:18:18:18:21 | After null [no-match] | +| Switch.cs:20:18:20:22 | After Int32 i [match] | Switch.cs:20:18:20:22 | After Int32 i [match] | +| Switch.cs:20:18:20:22 | After Int32 i [no-match] | Switch.cs:20:18:20:22 | After Int32 i [no-match] | +| Switch.cs:21:21:21:29 | After ... == ... [false] | Switch.cs:21:21:21:29 | After ... == ... [false] | +| Switch.cs:21:21:21:29 | After ... == ... [true] | Switch.cs:20:18:20:22 | After Int32 i [match] | +| Switch.cs:21:21:21:29 | After ... == ... [true] | Switch.cs:21:21:21:29 | After ... == ... [true] | +| Switch.cs:24:18:24:25 | After String s [match] | Switch.cs:24:18:24:25 | After String s [match] | +| Switch.cs:24:18:24:25 | After String s [no-match] | Switch.cs:24:18:24:25 | After String s [no-match] | +| Switch.cs:24:32:24:43 | After ... > ... [false] | Switch.cs:24:32:24:43 | After ... > ... [false] | +| Switch.cs:24:32:24:43 | After ... > ... [true] | Switch.cs:24:32:24:43 | After ... > ... [true] | +| Switch.cs:24:32:24:55 | After ... && ... [false] | Switch.cs:24:32:24:43 | After ... > ... [false] | +| Switch.cs:24:32:24:55 | After ... && ... [false] | Switch.cs:24:32:24:55 | After ... && ... [false] | +| Switch.cs:24:32:24:55 | After ... && ... [false] | Switch.cs:24:48:24:55 | After ... != ... [false] | +| Switch.cs:24:48:24:55 | After ... != ... [false] | Switch.cs:24:48:24:55 | After ... != ... [false] | +| Switch.cs:24:48:24:55 | After ... != ... [true] | Switch.cs:24:48:24:55 | After ... != ... [true] | +| Switch.cs:27:13:27:39 | case ...: | Switch.cs:24:18:24:25 | After String s [no-match] | +| Switch.cs:27:13:27:39 | case ...: | Switch.cs:24:32:24:43 | After ... > ... [false] | +| Switch.cs:27:13:27:39 | case ...: | Switch.cs:24:32:24:55 | After ... && ... [false] | +| Switch.cs:27:13:27:39 | case ...: | Switch.cs:24:48:24:55 | After ... != ... [false] | | Switch.cs:27:13:27:39 | case ...: | Switch.cs:27:13:27:39 | case ...: | -| Switch.cs:27:32:27:38 | call to method Throw | Switch.cs:27:32:27:38 | call to method Throw | -| Switch.cs:30:13:30:20 | default: | Switch.cs:19:17:19:29 | goto default; | -| Switch.cs:30:13:30:20 | default: | Switch.cs:24:32:24:55 | [false] ... && ... | -| Switch.cs:30:13:30:20 | default: | Switch.cs:27:13:27:39 | case ...: | -| Switch.cs:30:13:30:20 | default: | Switch.cs:30:13:30:20 | default: | -| Switch.cs:35:10:35:11 | enter M3 | Switch.cs:35:10:35:11 | enter M3 | -| Switch.cs:44:10:44:11 | enter M4 | Switch.cs:44:10:44:11 | enter M4 | -| Switch.cs:44:10:44:11 | exit M4 (normal) | Switch.cs:44:10:44:11 | enter M4 | -| Switch.cs:44:10:44:11 | exit M4 (normal) | Switch.cs:44:10:44:11 | exit M4 (normal) | -| Switch.cs:44:10:44:11 | exit M4 (normal) | Switch.cs:49:17:49:22 | break; | -| Switch.cs:44:10:44:11 | exit M4 (normal) | Switch.cs:50:13:50:39 | case ...: | -| Switch.cs:44:10:44:11 | exit M4 (normal) | Switch.cs:50:30:50:30 | access to parameter o | -| Switch.cs:44:10:44:11 | exit M4 (normal) | Switch.cs:51:17:51:22 | break; | -| Switch.cs:49:17:49:22 | break; | Switch.cs:49:17:49:22 | break; | -| Switch.cs:50:13:50:39 | case ...: | Switch.cs:50:13:50:39 | case ...: | -| Switch.cs:50:30:50:30 | access to parameter o | Switch.cs:50:30:50:30 | access to parameter o | -| Switch.cs:51:17:51:22 | break; | Switch.cs:51:17:51:22 | break; | -| Switch.cs:55:10:55:11 | enter M5 | Switch.cs:55:10:55:11 | enter M5 | -| Switch.cs:61:13:61:19 | case ...: | Switch.cs:55:10:55:11 | enter M5 | -| Switch.cs:61:13:61:19 | case ...: | Switch.cs:61:13:61:19 | case ...: | -| Switch.cs:62:17:62:22 | break; | Switch.cs:55:10:55:11 | enter M5 | -| Switch.cs:62:17:62:22 | break; | Switch.cs:61:13:61:19 | case ...: | -| Switch.cs:62:17:62:22 | break; | Switch.cs:62:17:62:22 | break; | -| Switch.cs:66:10:66:11 | enter M6 | Switch.cs:66:10:66:11 | enter M6 | -| Switch.cs:66:10:66:11 | exit M6 (normal) | Switch.cs:66:10:66:11 | enter M6 | -| Switch.cs:66:10:66:11 | exit M6 (normal) | Switch.cs:66:10:66:11 | exit M6 (normal) | -| Switch.cs:66:10:66:11 | exit M6 (normal) | Switch.cs:72:13:72:20 | case ...: | -| Switch.cs:66:10:66:11 | exit M6 (normal) | Switch.cs:73:17:73:22 | break; | -| Switch.cs:72:13:72:20 | case ...: | Switch.cs:66:10:66:11 | enter M6 | -| Switch.cs:72:13:72:20 | case ...: | Switch.cs:72:13:72:20 | case ...: | -| Switch.cs:73:17:73:22 | break; | Switch.cs:73:17:73:22 | break; | -| Switch.cs:77:10:77:11 | enter M7 | Switch.cs:77:10:77:11 | enter M7 | -| Switch.cs:77:10:77:11 | exit M7 (normal) | Switch.cs:77:10:77:11 | enter M7 | -| Switch.cs:77:10:77:11 | exit M7 (normal) | Switch.cs:77:10:77:11 | exit M7 (normal) | -| Switch.cs:77:10:77:11 | exit M7 (normal) | Switch.cs:82:24:82:27 | true | -| Switch.cs:77:10:77:11 | exit M7 (normal) | Switch.cs:83:13:83:19 | case ...: | -| Switch.cs:77:10:77:11 | exit M7 (normal) | Switch.cs:84:17:85:26 | if (...) ... | -| Switch.cs:77:10:77:11 | exit M7 (normal) | Switch.cs:85:21:85:26 | break; | -| Switch.cs:77:10:77:11 | exit M7 (normal) | Switch.cs:86:24:86:27 | true | -| Switch.cs:77:10:77:11 | exit M7 (normal) | Switch.cs:88:16:88:20 | false | -| Switch.cs:82:24:82:27 | true | Switch.cs:82:24:82:27 | true | -| Switch.cs:83:13:83:19 | case ...: | Switch.cs:83:13:83:19 | case ...: | -| Switch.cs:84:17:85:26 | if (...) ... | Switch.cs:84:17:85:26 | if (...) ... | -| Switch.cs:85:21:85:26 | break; | Switch.cs:85:21:85:26 | break; | -| Switch.cs:86:24:86:27 | true | Switch.cs:86:24:86:27 | true | -| Switch.cs:88:16:88:20 | false | Switch.cs:85:21:85:26 | break; | -| Switch.cs:88:16:88:20 | false | Switch.cs:88:16:88:20 | false | -| Switch.cs:91:10:91:11 | enter M8 | Switch.cs:91:10:91:11 | enter M8 | -| Switch.cs:91:10:91:11 | exit M8 (normal) | Switch.cs:91:10:91:11 | enter M8 | -| Switch.cs:91:10:91:11 | exit M8 (normal) | Switch.cs:91:10:91:11 | exit M8 (normal) | -| Switch.cs:91:10:91:11 | exit M8 (normal) | Switch.cs:96:24:96:27 | true | -| Switch.cs:91:10:91:11 | exit M8 (normal) | Switch.cs:98:16:98:20 | false | -| Switch.cs:96:24:96:27 | true | Switch.cs:96:24:96:27 | true | -| Switch.cs:98:16:98:20 | false | Switch.cs:98:16:98:20 | false | -| Switch.cs:101:9:101:10 | enter M9 | Switch.cs:101:9:101:10 | enter M9 | -| Switch.cs:101:9:101:10 | exit M9 (normal) | Switch.cs:101:9:101:10 | enter M9 | -| Switch.cs:101:9:101:10 | exit M9 (normal) | Switch.cs:101:9:101:10 | exit M9 (normal) | -| Switch.cs:101:9:101:10 | exit M9 (normal) | Switch.cs:103:17:103:25 | access to property Length | -| Switch.cs:101:9:101:10 | exit M9 (normal) | Switch.cs:105:13:105:19 | case ...: | -| Switch.cs:101:9:101:10 | exit M9 (normal) | Switch.cs:105:28:105:28 | 0 | -| Switch.cs:101:9:101:10 | exit M9 (normal) | Switch.cs:106:13:106:19 | case ...: | -| Switch.cs:101:9:101:10 | exit M9 (normal) | Switch.cs:106:28:106:28 | 1 | -| Switch.cs:101:9:101:10 | exit M9 (normal) | Switch.cs:108:17:108:17 | 1 | -| Switch.cs:103:17:103:25 | access to property Length | Switch.cs:103:17:103:25 | access to property Length | -| Switch.cs:105:13:105:19 | case ...: | Switch.cs:101:9:101:10 | enter M9 | -| Switch.cs:105:13:105:19 | case ...: | Switch.cs:103:17:103:25 | access to property Length | -| Switch.cs:105:13:105:19 | case ...: | Switch.cs:105:13:105:19 | case ...: | -| Switch.cs:105:28:105:28 | 0 | Switch.cs:105:28:105:28 | 0 | -| Switch.cs:106:13:106:19 | case ...: | Switch.cs:106:13:106:19 | case ...: | -| Switch.cs:106:28:106:28 | 1 | Switch.cs:106:28:106:28 | 1 | -| Switch.cs:108:17:108:17 | 1 | Switch.cs:108:17:108:17 | 1 | -| Switch.cs:111:17:111:21 | enter Throw | Switch.cs:111:17:111:21 | enter Throw | -| Switch.cs:113:9:113:11 | enter M10 | Switch.cs:113:9:113:11 | enter M10 | -| Switch.cs:113:9:113:11 | exit M10 (normal) | Switch.cs:113:9:113:11 | enter M10 | -| Switch.cs:113:9:113:11 | exit M10 (normal) | Switch.cs:113:9:113:11 | exit M10 (normal) | -| Switch.cs:113:9:113:11 | exit M10 (normal) | Switch.cs:117:25:117:25 | access to parameter s | -| Switch.cs:113:9:113:11 | exit M10 (normal) | Switch.cs:117:44:117:44 | 1 | -| Switch.cs:113:9:113:11 | exit M10 (normal) | Switch.cs:118:13:118:34 | case ...: | -| Switch.cs:113:9:113:11 | exit M10 (normal) | Switch.cs:118:25:118:25 | access to parameter s | -| Switch.cs:113:9:113:11 | exit M10 (normal) | Switch.cs:118:43:118:43 | 2 | -| Switch.cs:113:9:113:11 | exit M10 (normal) | Switch.cs:120:17:120:17 | 1 | -| Switch.cs:117:25:117:25 | access to parameter s | Switch.cs:117:25:117:25 | access to parameter s | -| Switch.cs:117:44:117:44 | 1 | Switch.cs:117:44:117:44 | 1 | +| Switch.cs:27:18:27:25 | After Double d [match] | Switch.cs:27:18:27:25 | After Double d [match] | +| Switch.cs:27:18:27:25 | After Double d [no-match] | Switch.cs:24:18:24:25 | After String s [no-match] | +| Switch.cs:27:18:27:25 | After Double d [no-match] | Switch.cs:24:32:24:43 | After ... > ... [false] | +| Switch.cs:27:18:27:25 | After Double d [no-match] | Switch.cs:24:32:24:55 | After ... && ... [false] | +| Switch.cs:27:18:27:25 | After Double d [no-match] | Switch.cs:24:48:24:55 | After ... != ... [false] | +| Switch.cs:27:18:27:25 | After Double d [no-match] | Switch.cs:27:13:27:39 | case ...: | +| Switch.cs:27:18:27:25 | After Double d [no-match] | Switch.cs:27:18:27:25 | After Double d [no-match] | +| Switch.cs:30:13:30:20 | After default: [match] | Switch.cs:18:18:18:21 | After null [match] | +| Switch.cs:30:13:30:20 | After default: [match] | Switch.cs:24:18:24:25 | After String s [no-match] | +| Switch.cs:30:13:30:20 | After default: [match] | Switch.cs:24:32:24:43 | After ... > ... [false] | +| Switch.cs:30:13:30:20 | After default: [match] | Switch.cs:24:32:24:55 | After ... && ... [false] | +| Switch.cs:30:13:30:20 | After default: [match] | Switch.cs:24:48:24:55 | After ... != ... [false] | +| Switch.cs:30:13:30:20 | After default: [match] | Switch.cs:27:13:27:39 | case ...: | +| Switch.cs:30:13:30:20 | After default: [match] | Switch.cs:27:18:27:25 | After Double d [no-match] | +| Switch.cs:30:13:30:20 | After default: [match] | Switch.cs:30:13:30:20 | After default: [match] | +| Switch.cs:35:10:35:11 | Entry | Switch.cs:35:10:35:11 | Entry | +| Switch.cs:44:10:44:11 | Entry | Switch.cs:44:10:44:11 | Entry | +| Switch.cs:46:9:52:9 | After switch (...) {...} | Switch.cs:44:10:44:11 | Entry | +| Switch.cs:46:9:52:9 | After switch (...) {...} | Switch.cs:46:9:52:9 | After switch (...) {...} | +| Switch.cs:46:9:52:9 | After switch (...) {...} | Switch.cs:48:18:48:20 | After access to type Int32 [match] | +| Switch.cs:46:9:52:9 | After switch (...) {...} | Switch.cs:48:18:48:20 | After access to type Int32 [no-match] | +| Switch.cs:46:9:52:9 | After switch (...) {...} | Switch.cs:50:18:50:21 | After access to type Boolean [match] | +| Switch.cs:46:9:52:9 | After switch (...) {...} | Switch.cs:50:18:50:21 | After access to type Boolean [no-match] | +| Switch.cs:46:9:52:9 | After switch (...) {...} | Switch.cs:50:30:50:38 | After ... != ... [false] | +| Switch.cs:46:9:52:9 | After switch (...) {...} | Switch.cs:50:30:50:38 | After ... != ... [true] | +| Switch.cs:48:18:48:20 | After access to type Int32 [match] | Switch.cs:48:18:48:20 | After access to type Int32 [match] | +| Switch.cs:48:18:48:20 | After access to type Int32 [no-match] | Switch.cs:48:18:48:20 | After access to type Int32 [no-match] | +| Switch.cs:50:18:50:21 | After access to type Boolean [match] | Switch.cs:50:18:50:21 | After access to type Boolean [match] | +| Switch.cs:50:18:50:21 | After access to type Boolean [no-match] | Switch.cs:50:18:50:21 | After access to type Boolean [no-match] | +| Switch.cs:50:30:50:38 | After ... != ... [false] | Switch.cs:50:30:50:38 | After ... != ... [false] | +| Switch.cs:50:30:50:38 | After ... != ... [true] | Switch.cs:50:30:50:38 | After ... != ... [true] | +| Switch.cs:55:10:55:11 | Entry | Switch.cs:55:10:55:11 | Entry | +| Switch.cs:57:9:63:9 | After switch (...) {...} | Switch.cs:55:10:55:11 | Entry | +| Switch.cs:57:9:63:9 | After switch (...) {...} | Switch.cs:57:9:63:9 | After switch (...) {...} | +| Switch.cs:57:9:63:9 | After switch (...) {...} | Switch.cs:59:18:59:18 | After 2 [match] | +| Switch.cs:57:9:63:9 | After switch (...) {...} | Switch.cs:59:18:59:18 | After 2 [no-match] | +| Switch.cs:57:9:63:9 | After switch (...) {...} | Switch.cs:61:18:61:18 | After 3 [match] | +| Switch.cs:57:9:63:9 | After switch (...) {...} | Switch.cs:61:18:61:18 | After 3 [no-match] | +| Switch.cs:59:18:59:18 | After 2 [match] | Switch.cs:59:18:59:18 | After 2 [match] | +| Switch.cs:59:18:59:18 | After 2 [no-match] | Switch.cs:59:18:59:18 | After 2 [no-match] | +| Switch.cs:61:18:61:18 | After 3 [match] | Switch.cs:61:18:61:18 | After 3 [match] | +| Switch.cs:61:18:61:18 | After 3 [no-match] | Switch.cs:61:18:61:18 | After 3 [no-match] | +| Switch.cs:66:10:66:11 | Entry | Switch.cs:66:10:66:11 | Entry | +| Switch.cs:68:9:74:9 | After switch (...) {...} | Switch.cs:66:10:66:11 | Entry | +| Switch.cs:68:9:74:9 | After switch (...) {...} | Switch.cs:68:9:74:9 | After switch (...) {...} | +| Switch.cs:68:9:74:9 | After switch (...) {...} | Switch.cs:70:18:70:20 | After access to type Int32 [match] | +| Switch.cs:68:9:74:9 | After switch (...) {...} | Switch.cs:70:18:70:20 | After access to type Int32 [no-match] | +| Switch.cs:68:9:74:9 | After switch (...) {...} | Switch.cs:72:18:72:19 | After "" [match] | +| Switch.cs:68:9:74:9 | After switch (...) {...} | Switch.cs:72:18:72:19 | After "" [no-match] | +| Switch.cs:70:18:70:20 | After access to type Int32 [match] | Switch.cs:70:18:70:20 | After access to type Int32 [match] | +| Switch.cs:70:18:70:20 | After access to type Int32 [no-match] | Switch.cs:70:18:70:20 | After access to type Int32 [no-match] | +| Switch.cs:72:18:72:19 | After "" [match] | Switch.cs:72:18:72:19 | After "" [match] | +| Switch.cs:72:18:72:19 | After "" [no-match] | Switch.cs:72:18:72:19 | After "" [no-match] | +| Switch.cs:77:10:77:11 | Entry | Switch.cs:77:10:77:11 | Entry | +| Switch.cs:77:10:77:11 | Normal Exit | Switch.cs:77:10:77:11 | Entry | +| Switch.cs:77:10:77:11 | Normal Exit | Switch.cs:77:10:77:11 | Normal Exit | +| Switch.cs:77:10:77:11 | Normal Exit | Switch.cs:79:9:87:9 | After switch (...) {...} | +| Switch.cs:77:10:77:11 | Normal Exit | Switch.cs:81:18:81:18 | After 1 [match] | +| Switch.cs:77:10:77:11 | Normal Exit | Switch.cs:81:18:81:18 | After 1 [no-match] | +| Switch.cs:77:10:77:11 | Normal Exit | Switch.cs:83:18:83:18 | After 2 [match] | +| Switch.cs:77:10:77:11 | Normal Exit | Switch.cs:83:18:83:18 | After 2 [no-match] | +| Switch.cs:77:10:77:11 | Normal Exit | Switch.cs:84:21:84:25 | After ... > ... [false] | +| Switch.cs:77:10:77:11 | Normal Exit | Switch.cs:84:21:84:25 | After ... > ... [true] | +| Switch.cs:79:9:87:9 | After switch (...) {...} | Switch.cs:79:9:87:9 | After switch (...) {...} | +| Switch.cs:79:9:87:9 | After switch (...) {...} | Switch.cs:83:18:83:18 | After 2 [no-match] | +| Switch.cs:79:9:87:9 | After switch (...) {...} | Switch.cs:84:21:84:25 | After ... > ... [true] | +| Switch.cs:81:18:81:18 | After 1 [match] | Switch.cs:81:18:81:18 | After 1 [match] | +| Switch.cs:81:18:81:18 | After 1 [no-match] | Switch.cs:81:18:81:18 | After 1 [no-match] | +| Switch.cs:83:18:83:18 | After 2 [match] | Switch.cs:83:18:83:18 | After 2 [match] | +| Switch.cs:83:18:83:18 | After 2 [no-match] | Switch.cs:83:18:83:18 | After 2 [no-match] | +| Switch.cs:84:21:84:25 | After ... > ... [false] | Switch.cs:84:21:84:25 | After ... > ... [false] | +| Switch.cs:84:21:84:25 | After ... > ... [true] | Switch.cs:84:21:84:25 | After ... > ... [true] | +| Switch.cs:91:10:91:11 | Entry | Switch.cs:91:10:91:11 | Entry | +| Switch.cs:91:10:91:11 | Normal Exit | Switch.cs:91:10:91:11 | Entry | +| Switch.cs:91:10:91:11 | Normal Exit | Switch.cs:91:10:91:11 | Normal Exit | +| Switch.cs:91:10:91:11 | Normal Exit | Switch.cs:95:18:95:20 | After access to type Int32 [match] | +| Switch.cs:91:10:91:11 | Normal Exit | Switch.cs:95:18:95:20 | After access to type Int32 [no-match] | +| Switch.cs:95:18:95:20 | After access to type Int32 [match] | Switch.cs:95:18:95:20 | After access to type Int32 [match] | +| Switch.cs:95:18:95:20 | After access to type Int32 [no-match] | Switch.cs:95:18:95:20 | After access to type Int32 [no-match] | +| Switch.cs:101:9:101:10 | Entry | Switch.cs:101:9:101:10 | Entry | +| Switch.cs:101:9:101:10 | Normal Exit | Switch.cs:101:9:101:10 | Entry | +| Switch.cs:101:9:101:10 | Normal Exit | Switch.cs:101:9:101:10 | Normal Exit | +| Switch.cs:101:9:101:10 | Normal Exit | Switch.cs:103:17:103:17 | After access to parameter s [non-null] | +| Switch.cs:101:9:101:10 | Normal Exit | Switch.cs:103:17:103:17 | After access to parameter s [null] | +| Switch.cs:101:9:101:10 | Normal Exit | Switch.cs:103:17:103:25 | After access to property Length | +| Switch.cs:101:9:101:10 | Normal Exit | Switch.cs:105:18:105:18 | After 0 [match] | +| Switch.cs:101:9:101:10 | Normal Exit | Switch.cs:105:18:105:18 | After 0 [no-match] | +| Switch.cs:101:9:101:10 | Normal Exit | Switch.cs:106:18:106:18 | After 1 [match] | +| Switch.cs:101:9:101:10 | Normal Exit | Switch.cs:106:18:106:18 | After 1 [no-match] | +| Switch.cs:103:17:103:17 | After access to parameter s [non-null] | Switch.cs:103:17:103:17 | After access to parameter s [non-null] | +| Switch.cs:103:17:103:17 | After access to parameter s [null] | Switch.cs:103:17:103:17 | After access to parameter s [null] | +| Switch.cs:103:17:103:25 | After access to property Length | Switch.cs:101:9:101:10 | Entry | +| Switch.cs:103:17:103:25 | After access to property Length | Switch.cs:103:17:103:17 | After access to parameter s [non-null] | +| Switch.cs:103:17:103:25 | After access to property Length | Switch.cs:103:17:103:17 | After access to parameter s [null] | +| Switch.cs:103:17:103:25 | After access to property Length | Switch.cs:103:17:103:25 | After access to property Length | +| Switch.cs:105:18:105:18 | After 0 [match] | Switch.cs:105:18:105:18 | After 0 [match] | +| Switch.cs:105:18:105:18 | After 0 [no-match] | Switch.cs:105:18:105:18 | After 0 [no-match] | +| Switch.cs:106:18:106:18 | After 1 [match] | Switch.cs:106:18:106:18 | After 1 [match] | +| Switch.cs:106:18:106:18 | After 1 [no-match] | Switch.cs:106:18:106:18 | After 1 [no-match] | +| Switch.cs:111:17:111:21 | Entry | Switch.cs:111:17:111:21 | Entry | +| Switch.cs:113:9:113:11 | Entry | Switch.cs:113:9:113:11 | Entry | +| Switch.cs:113:9:113:11 | Normal Exit | Switch.cs:113:9:113:11 | Entry | +| Switch.cs:113:9:113:11 | Normal Exit | Switch.cs:113:9:113:11 | Normal Exit | +| Switch.cs:113:9:113:11 | Normal Exit | Switch.cs:115:9:119:9 | After switch (...) {...} | +| Switch.cs:113:9:113:11 | Normal Exit | Switch.cs:117:18:117:18 | After 3 [match] | +| Switch.cs:113:9:113:11 | Normal Exit | Switch.cs:117:18:117:18 | After 3 [no-match] | +| Switch.cs:113:9:113:11 | Normal Exit | Switch.cs:117:25:117:34 | After ... == ... [false] | +| Switch.cs:113:9:113:11 | Normal Exit | Switch.cs:117:25:117:34 | After ... == ... [true] | +| Switch.cs:113:9:113:11 | Normal Exit | Switch.cs:118:13:118:34 | case ...: | +| Switch.cs:113:9:113:11 | Normal Exit | Switch.cs:118:18:118:18 | After 2 [match] | +| Switch.cs:113:9:113:11 | Normal Exit | Switch.cs:118:18:118:18 | After 2 [no-match] | +| Switch.cs:113:9:113:11 | Normal Exit | Switch.cs:118:25:118:33 | After ... == ... [false] | +| Switch.cs:113:9:113:11 | Normal Exit | Switch.cs:118:25:118:33 | After ... == ... [true] | +| Switch.cs:115:9:119:9 | After switch (...) {...} | Switch.cs:115:9:119:9 | After switch (...) {...} | +| Switch.cs:115:9:119:9 | After switch (...) {...} | Switch.cs:118:18:118:18 | After 2 [no-match] | +| Switch.cs:115:9:119:9 | After switch (...) {...} | Switch.cs:118:25:118:33 | After ... == ... [false] | +| Switch.cs:117:18:117:18 | After 3 [match] | Switch.cs:117:18:117:18 | After 3 [match] | +| Switch.cs:117:18:117:18 | After 3 [no-match] | Switch.cs:117:18:117:18 | After 3 [no-match] | +| Switch.cs:117:25:117:34 | After ... == ... [false] | Switch.cs:117:25:117:34 | After ... == ... [false] | +| Switch.cs:117:25:117:34 | After ... == ... [true] | Switch.cs:117:25:117:34 | After ... == ... [true] | +| Switch.cs:118:13:118:34 | case ...: | Switch.cs:117:18:117:18 | After 3 [no-match] | +| Switch.cs:118:13:118:34 | case ...: | Switch.cs:117:25:117:34 | After ... == ... [false] | | Switch.cs:118:13:118:34 | case ...: | Switch.cs:118:13:118:34 | case ...: | -| Switch.cs:118:25:118:25 | access to parameter s | Switch.cs:118:25:118:25 | access to parameter s | -| Switch.cs:118:43:118:43 | 2 | Switch.cs:118:43:118:43 | 2 | -| Switch.cs:120:17:120:17 | 1 | Switch.cs:120:17:120:17 | 1 | -| Switch.cs:123:10:123:12 | enter M11 | Switch.cs:123:10:123:12 | enter M11 | -| Switch.cs:123:10:123:12 | exit M11 (normal) | Switch.cs:123:10:123:12 | enter M11 | -| Switch.cs:123:10:123:12 | exit M11 (normal) | Switch.cs:123:10:123:12 | exit M11 (normal) | -| Switch.cs:123:10:123:12 | exit M11 (normal) | Switch.cs:125:13:125:48 | [false] ... switch { ... } | -| Switch.cs:123:10:123:12 | exit M11 (normal) | Switch.cs:125:13:125:48 | [true] ... switch { ... } | -| Switch.cs:123:10:123:12 | exit M11 (normal) | Switch.cs:125:24:125:34 | [false] ... => ... | -| Switch.cs:123:10:123:12 | exit M11 (normal) | Switch.cs:125:24:125:34 | [true] ... => ... | -| Switch.cs:123:10:123:12 | exit M11 (normal) | Switch.cs:125:34:125:34 | access to local variable b | -| Switch.cs:123:10:123:12 | exit M11 (normal) | Switch.cs:125:37:125:37 | _ | -| Switch.cs:123:10:123:12 | exit M11 (normal) | Switch.cs:125:37:125:46 | [false] ... => ... | -| Switch.cs:123:10:123:12 | exit M11 (normal) | Switch.cs:125:42:125:46 | false | -| Switch.cs:123:10:123:12 | exit M11 (normal) | Switch.cs:126:13:126:19 | return ...; | -| Switch.cs:125:13:125:48 | [false] ... switch { ... } | Switch.cs:125:13:125:48 | [false] ... switch { ... } | -| Switch.cs:125:13:125:48 | [false] ... switch { ... } | Switch.cs:125:24:125:34 | [false] ... => ... | -| Switch.cs:125:13:125:48 | [false] ... switch { ... } | Switch.cs:125:37:125:37 | _ | -| Switch.cs:125:13:125:48 | [false] ... switch { ... } | Switch.cs:125:37:125:46 | [false] ... => ... | -| Switch.cs:125:13:125:48 | [false] ... switch { ... } | Switch.cs:125:42:125:46 | false | -| Switch.cs:125:13:125:48 | [true] ... switch { ... } | Switch.cs:125:13:125:48 | [true] ... switch { ... } | -| Switch.cs:125:13:125:48 | [true] ... switch { ... } | Switch.cs:125:24:125:34 | [true] ... => ... | -| Switch.cs:125:24:125:34 | [false] ... => ... | Switch.cs:125:24:125:34 | [false] ... => ... | -| Switch.cs:125:24:125:34 | [true] ... => ... | Switch.cs:125:24:125:34 | [true] ... => ... | -| Switch.cs:125:34:125:34 | access to local variable b | Switch.cs:125:34:125:34 | access to local variable b | -| Switch.cs:125:37:125:37 | _ | Switch.cs:125:37:125:37 | _ | -| Switch.cs:125:37:125:46 | [false] ... => ... | Switch.cs:125:37:125:37 | _ | -| Switch.cs:125:37:125:46 | [false] ... => ... | Switch.cs:125:37:125:46 | [false] ... => ... | -| Switch.cs:125:37:125:46 | [false] ... => ... | Switch.cs:125:42:125:46 | false | -| Switch.cs:125:42:125:46 | false | Switch.cs:125:37:125:37 | _ | -| Switch.cs:125:42:125:46 | false | Switch.cs:125:42:125:46 | false | -| Switch.cs:126:13:126:19 | return ...; | Switch.cs:125:13:125:48 | [true] ... switch { ... } | -| Switch.cs:126:13:126:19 | return ...; | Switch.cs:125:24:125:34 | [true] ... => ... | -| Switch.cs:126:13:126:19 | return ...; | Switch.cs:126:13:126:19 | return ...; | -| Switch.cs:129:12:129:14 | enter M12 | Switch.cs:129:12:129:14 | enter M12 | -| Switch.cs:131:9:131:67 | return ...; | Switch.cs:129:12:129:14 | enter M12 | -| Switch.cs:131:9:131:67 | return ...; | Switch.cs:131:9:131:67 | return ...; | -| Switch.cs:131:9:131:67 | return ...; | Switch.cs:131:16:131:66 | call to method ToString | -| Switch.cs:131:9:131:67 | return ...; | Switch.cs:131:17:131:53 | [non-null] ... switch { ... } | -| Switch.cs:131:9:131:67 | return ...; | Switch.cs:131:17:131:53 | [null] ... switch { ... } | -| Switch.cs:131:9:131:67 | return ...; | Switch.cs:131:28:131:40 | [non-null] ... => ... | -| Switch.cs:131:9:131:67 | return ...; | Switch.cs:131:28:131:40 | [null] ... => ... | -| Switch.cs:131:9:131:67 | return ...; | Switch.cs:131:40:131:40 | access to local variable s | -| Switch.cs:131:9:131:67 | return ...; | Switch.cs:131:43:131:43 | _ | -| Switch.cs:131:9:131:67 | return ...; | Switch.cs:131:43:131:51 | [null] ... => ... | -| Switch.cs:131:9:131:67 | return ...; | Switch.cs:131:48:131:51 | null | -| Switch.cs:131:16:131:66 | call to method ToString | Switch.cs:131:16:131:66 | call to method ToString | -| Switch.cs:131:16:131:66 | call to method ToString | Switch.cs:131:17:131:53 | [non-null] ... switch { ... } | -| Switch.cs:131:16:131:66 | call to method ToString | Switch.cs:131:28:131:40 | [non-null] ... => ... | -| Switch.cs:131:17:131:53 | [non-null] ... switch { ... } | Switch.cs:131:17:131:53 | [non-null] ... switch { ... } | -| Switch.cs:131:17:131:53 | [non-null] ... switch { ... } | Switch.cs:131:28:131:40 | [non-null] ... => ... | -| Switch.cs:131:17:131:53 | [null] ... switch { ... } | Switch.cs:131:17:131:53 | [null] ... switch { ... } | -| Switch.cs:131:17:131:53 | [null] ... switch { ... } | Switch.cs:131:28:131:40 | [null] ... => ... | -| Switch.cs:131:17:131:53 | [null] ... switch { ... } | Switch.cs:131:43:131:43 | _ | -| Switch.cs:131:17:131:53 | [null] ... switch { ... } | Switch.cs:131:43:131:51 | [null] ... => ... | -| Switch.cs:131:17:131:53 | [null] ... switch { ... } | Switch.cs:131:48:131:51 | null | -| Switch.cs:131:28:131:40 | [non-null] ... => ... | Switch.cs:131:28:131:40 | [non-null] ... => ... | -| Switch.cs:131:28:131:40 | [null] ... => ... | Switch.cs:131:28:131:40 | [null] ... => ... | -| Switch.cs:131:40:131:40 | access to local variable s | Switch.cs:131:40:131:40 | access to local variable s | -| Switch.cs:131:43:131:43 | _ | Switch.cs:131:43:131:43 | _ | -| Switch.cs:131:43:131:51 | [null] ... => ... | Switch.cs:131:43:131:43 | _ | -| Switch.cs:131:43:131:51 | [null] ... => ... | Switch.cs:131:43:131:51 | [null] ... => ... | -| Switch.cs:131:43:131:51 | [null] ... => ... | Switch.cs:131:48:131:51 | null | -| Switch.cs:131:48:131:51 | null | Switch.cs:131:43:131:43 | _ | -| Switch.cs:131:48:131:51 | null | Switch.cs:131:48:131:51 | null | -| Switch.cs:134:9:134:11 | enter M13 | Switch.cs:134:9:134:11 | enter M13 | -| Switch.cs:134:9:134:11 | exit M13 (normal) | Switch.cs:134:9:134:11 | enter M13 | -| Switch.cs:134:9:134:11 | exit M13 (normal) | Switch.cs:134:9:134:11 | exit M13 (normal) | -| Switch.cs:134:9:134:11 | exit M13 (normal) | Switch.cs:138:13:138:20 | default: | -| Switch.cs:134:9:134:11 | exit M13 (normal) | Switch.cs:139:28:139:28 | 1 | -| Switch.cs:134:9:134:11 | exit M13 (normal) | Switch.cs:140:13:140:19 | case ...: | -| Switch.cs:134:9:134:11 | exit M13 (normal) | Switch.cs:140:28:140:28 | 2 | -| Switch.cs:138:13:138:20 | default: | Switch.cs:138:13:138:20 | default: | -| Switch.cs:139:28:139:28 | 1 | Switch.cs:139:28:139:28 | 1 | -| Switch.cs:140:13:140:19 | case ...: | Switch.cs:140:13:140:19 | case ...: | -| Switch.cs:140:28:140:28 | 2 | Switch.cs:140:28:140:28 | 2 | -| Switch.cs:144:9:144:11 | enter M14 | Switch.cs:144:9:144:11 | enter M14 | -| Switch.cs:144:9:144:11 | exit M14 (normal) | Switch.cs:144:9:144:11 | enter M14 | -| Switch.cs:144:9:144:11 | exit M14 (normal) | Switch.cs:144:9:144:11 | exit M14 (normal) | -| Switch.cs:144:9:144:11 | exit M14 (normal) | Switch.cs:148:28:148:28 | 1 | -| Switch.cs:144:9:144:11 | exit M14 (normal) | Switch.cs:149:13:149:20 | default: | -| Switch.cs:144:9:144:11 | exit M14 (normal) | Switch.cs:150:13:150:19 | case ...: | -| Switch.cs:144:9:144:11 | exit M14 (normal) | Switch.cs:150:28:150:28 | 2 | -| Switch.cs:148:28:148:28 | 1 | Switch.cs:148:28:148:28 | 1 | -| Switch.cs:149:13:149:20 | default: | Switch.cs:149:13:149:20 | default: | -| Switch.cs:150:13:150:19 | case ...: | Switch.cs:150:13:150:19 | case ...: | -| Switch.cs:150:28:150:28 | 2 | Switch.cs:150:28:150:28 | 2 | -| Switch.cs:154:10:154:12 | enter M15 | Switch.cs:154:10:154:12 | enter M15 | -| Switch.cs:154:10:154:12 | exit M15 | Switch.cs:154:10:154:12 | exit M15 | -| Switch.cs:154:10:154:12 | exit M15 (abnormal) | Switch.cs:154:10:154:12 | exit M15 (abnormal) | -| Switch.cs:154:10:154:12 | exit M15 (normal) | Switch.cs:154:10:154:12 | enter M15 | -| Switch.cs:154:10:154:12 | exit M15 (normal) | Switch.cs:154:10:154:12 | exit M15 (normal) | -| Switch.cs:154:10:154:12 | exit M15 (normal) | Switch.cs:156:17:156:54 | ... switch { ... } | -| Switch.cs:154:10:154:12 | exit M15 (normal) | Switch.cs:156:36:156:38 | "a" | -| Switch.cs:154:10:154:12 | exit M15 (normal) | Switch.cs:156:41:156:45 | false | -| Switch.cs:154:10:154:12 | exit M15 (normal) | Switch.cs:156:50:156:52 | "b" | -| Switch.cs:154:10:154:12 | exit M15 (normal) | Switch.cs:158:13:158:49 | ...; | -| Switch.cs:154:10:154:12 | exit M15 (normal) | Switch.cs:160:13:160:49 | ...; | -| Switch.cs:156:17:156:54 | ... switch { ... } | Switch.cs:154:10:154:12 | enter M15 | -| Switch.cs:156:17:156:54 | ... switch { ... } | Switch.cs:156:17:156:54 | ... switch { ... } | -| Switch.cs:156:17:156:54 | ... switch { ... } | Switch.cs:156:36:156:38 | "a" | -| Switch.cs:156:17:156:54 | ... switch { ... } | Switch.cs:156:41:156:45 | false | -| Switch.cs:156:17:156:54 | ... switch { ... } | Switch.cs:156:50:156:52 | "b" | -| Switch.cs:156:36:156:38 | "a" | Switch.cs:156:36:156:38 | "a" | -| Switch.cs:156:41:156:45 | false | Switch.cs:156:41:156:45 | false | -| Switch.cs:156:50:156:52 | "b" | Switch.cs:156:41:156:45 | false | -| Switch.cs:156:50:156:52 | "b" | Switch.cs:156:50:156:52 | "b" | -| Switch.cs:158:13:158:49 | ...; | Switch.cs:158:13:158:49 | ...; | -| Switch.cs:160:13:160:49 | ...; | Switch.cs:160:13:160:49 | ...; | -| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:163:10:163:12 | enter M16 | -| Switch.cs:163:10:163:12 | exit M16 (normal) | Switch.cs:163:10:163:12 | enter M16 | -| Switch.cs:163:10:163:12 | exit M16 (normal) | Switch.cs:163:10:163:12 | exit M16 (normal) | -| Switch.cs:163:10:163:12 | exit M16 (normal) | Switch.cs:168:13:168:19 | case ...: | -| Switch.cs:163:10:163:12 | exit M16 (normal) | Switch.cs:169:17:169:51 | ...; | -| Switch.cs:163:10:163:12 | exit M16 (normal) | Switch.cs:171:13:171:19 | case ...: | -| Switch.cs:163:10:163:12 | exit M16 (normal) | Switch.cs:172:17:172:46 | ...; | -| Switch.cs:163:10:163:12 | exit M16 (normal) | Switch.cs:174:13:174:20 | default: | -| Switch.cs:168:13:168:19 | case ...: | Switch.cs:168:13:168:19 | case ...: | +| Switch.cs:118:18:118:18 | After 2 [match] | Switch.cs:118:18:118:18 | After 2 [match] | +| Switch.cs:118:18:118:18 | After 2 [no-match] | Switch.cs:118:18:118:18 | After 2 [no-match] | +| Switch.cs:118:25:118:33 | After ... == ... [false] | Switch.cs:118:25:118:33 | After ... == ... [false] | +| Switch.cs:118:25:118:33 | After ... == ... [true] | Switch.cs:118:25:118:33 | After ... == ... [true] | +| Switch.cs:123:10:123:12 | Entry | Switch.cs:123:10:123:12 | Entry | +| Switch.cs:123:10:123:12 | Normal Exit | Switch.cs:123:10:123:12 | Entry | +| Switch.cs:123:10:123:12 | Normal Exit | Switch.cs:123:10:123:12 | Normal Exit | +| Switch.cs:123:10:123:12 | Normal Exit | Switch.cs:125:13:125:48 | After ... switch { ... } [false] | +| Switch.cs:123:10:123:12 | Normal Exit | Switch.cs:125:13:125:48 | After ... switch { ... } [true] | +| Switch.cs:123:10:123:12 | Normal Exit | Switch.cs:125:24:125:29 | After Boolean b [match] | +| Switch.cs:123:10:123:12 | Normal Exit | Switch.cs:125:24:125:29 | After Boolean b [no-match] | +| Switch.cs:125:13:125:48 | After ... switch { ... } [false] | Switch.cs:125:13:125:48 | After ... switch { ... } [false] | +| Switch.cs:125:13:125:48 | After ... switch { ... } [true] | Switch.cs:125:13:125:48 | After ... switch { ... } [true] | +| Switch.cs:125:24:125:29 | After Boolean b [match] | Switch.cs:125:24:125:29 | After Boolean b [match] | +| Switch.cs:125:24:125:29 | After Boolean b [no-match] | Switch.cs:125:24:125:29 | After Boolean b [no-match] | +| Switch.cs:129:12:129:14 | Entry | Switch.cs:129:12:129:14 | Entry | +| Switch.cs:131:16:131:66 | After call to method ToString | Switch.cs:129:12:129:14 | Entry | +| Switch.cs:131:16:131:66 | After call to method ToString | Switch.cs:131:16:131:66 | After call to method ToString | +| Switch.cs:131:16:131:66 | After call to method ToString | Switch.cs:131:17:131:53 | After ... switch { ... } [non-null] | +| Switch.cs:131:16:131:66 | After call to method ToString | Switch.cs:131:17:131:53 | After ... switch { ... } [null] | +| Switch.cs:131:16:131:66 | After call to method ToString | Switch.cs:131:28:131:35 | After String s [match] | +| Switch.cs:131:16:131:66 | After call to method ToString | Switch.cs:131:28:131:35 | After String s [no-match] | +| Switch.cs:131:17:131:53 | After ... switch { ... } [non-null] | Switch.cs:131:17:131:53 | After ... switch { ... } [non-null] | +| Switch.cs:131:17:131:53 | After ... switch { ... } [null] | Switch.cs:131:17:131:53 | After ... switch { ... } [null] | +| Switch.cs:131:28:131:35 | After String s [match] | Switch.cs:131:28:131:35 | After String s [match] | +| Switch.cs:131:28:131:35 | After String s [no-match] | Switch.cs:131:28:131:35 | After String s [no-match] | +| Switch.cs:134:9:134:11 | Entry | Switch.cs:134:9:134:11 | Entry | +| Switch.cs:134:9:134:11 | Normal Exit | Switch.cs:134:9:134:11 | Entry | +| Switch.cs:134:9:134:11 | Normal Exit | Switch.cs:134:9:134:11 | Normal Exit | +| Switch.cs:134:9:134:11 | Normal Exit | Switch.cs:139:18:139:18 | After 1 [match] | +| Switch.cs:134:9:134:11 | Normal Exit | Switch.cs:139:18:139:18 | After 1 [no-match] | +| Switch.cs:134:9:134:11 | Normal Exit | Switch.cs:140:18:140:18 | After 2 [match] | +| Switch.cs:134:9:134:11 | Normal Exit | Switch.cs:140:18:140:18 | After 2 [no-match] | +| Switch.cs:139:18:139:18 | After 1 [match] | Switch.cs:139:18:139:18 | After 1 [match] | +| Switch.cs:139:18:139:18 | After 1 [no-match] | Switch.cs:139:18:139:18 | After 1 [no-match] | +| Switch.cs:140:18:140:18 | After 2 [match] | Switch.cs:140:18:140:18 | After 2 [match] | +| Switch.cs:140:18:140:18 | After 2 [no-match] | Switch.cs:140:18:140:18 | After 2 [no-match] | +| Switch.cs:144:9:144:11 | Entry | Switch.cs:144:9:144:11 | Entry | +| Switch.cs:144:9:144:11 | Normal Exit | Switch.cs:144:9:144:11 | Entry | +| Switch.cs:144:9:144:11 | Normal Exit | Switch.cs:144:9:144:11 | Normal Exit | +| Switch.cs:144:9:144:11 | Normal Exit | Switch.cs:148:18:148:18 | After 1 [match] | +| Switch.cs:144:9:144:11 | Normal Exit | Switch.cs:148:18:148:18 | After 1 [no-match] | +| Switch.cs:144:9:144:11 | Normal Exit | Switch.cs:150:18:150:18 | After 2 [match] | +| Switch.cs:144:9:144:11 | Normal Exit | Switch.cs:150:18:150:18 | After 2 [no-match] | +| Switch.cs:148:18:148:18 | After 1 [match] | Switch.cs:148:18:148:18 | After 1 [match] | +| Switch.cs:148:18:148:18 | After 1 [no-match] | Switch.cs:148:18:148:18 | After 1 [no-match] | +| Switch.cs:150:18:150:18 | After 2 [match] | Switch.cs:150:18:150:18 | After 2 [match] | +| Switch.cs:150:18:150:18 | After 2 [no-match] | Switch.cs:150:18:150:18 | After 2 [no-match] | +| Switch.cs:154:10:154:12 | Entry | Switch.cs:154:10:154:12 | Entry | +| Switch.cs:156:17:156:54 | After ... switch { ... } | Switch.cs:154:10:154:12 | Entry | +| Switch.cs:156:17:156:54 | After ... switch { ... } | Switch.cs:156:17:156:54 | After ... switch { ... } | +| Switch.cs:156:17:156:54 | After ... switch { ... } | Switch.cs:156:28:156:31 | After true [match] | +| Switch.cs:156:17:156:54 | After ... switch { ... } | Switch.cs:156:28:156:31 | After true [no-match] | +| Switch.cs:156:17:156:54 | After ... switch { ... } | Switch.cs:156:41:156:45 | After false [match] | +| Switch.cs:156:17:156:54 | After ... switch { ... } | Switch.cs:156:41:156:45 | After false [no-match] | +| Switch.cs:156:28:156:31 | After true [match] | Switch.cs:156:28:156:31 | After true [match] | +| Switch.cs:156:28:156:31 | After true [no-match] | Switch.cs:156:28:156:31 | After true [no-match] | +| Switch.cs:156:41:156:45 | After false [match] | Switch.cs:156:41:156:45 | After false [match] | +| Switch.cs:156:41:156:45 | After false [no-match] | Switch.cs:156:41:156:45 | After false [no-match] | +| Switch.cs:157:9:160:49 | After if (...) ... | Switch.cs:154:10:154:12 | Entry | +| Switch.cs:157:9:160:49 | After if (...) ... | Switch.cs:156:17:156:54 | After ... switch { ... } | +| Switch.cs:157:9:160:49 | After if (...) ... | Switch.cs:156:28:156:31 | After true [match] | +| Switch.cs:157:9:160:49 | After if (...) ... | Switch.cs:156:28:156:31 | After true [no-match] | +| Switch.cs:157:9:160:49 | After if (...) ... | Switch.cs:156:41:156:45 | After false [match] | +| Switch.cs:157:9:160:49 | After if (...) ... | Switch.cs:156:41:156:45 | After false [no-match] | +| Switch.cs:157:9:160:49 | After if (...) ... | Switch.cs:157:9:160:49 | After if (...) ... | +| Switch.cs:157:9:160:49 | After if (...) ... | Switch.cs:157:13:157:13 | After access to parameter b [false] | +| Switch.cs:157:9:160:49 | After if (...) ... | Switch.cs:157:13:157:13 | After access to parameter b [true] | +| Switch.cs:157:13:157:13 | After access to parameter b [false] | Switch.cs:157:13:157:13 | After access to parameter b [false] | +| Switch.cs:157:13:157:13 | After access to parameter b [true] | Switch.cs:157:13:157:13 | After access to parameter b [true] | +| Switch.cs:163:10:163:12 | Entry | Switch.cs:163:10:163:12 | Entry | +| Switch.cs:165:9:177:9 | After switch (...) {...} | Switch.cs:163:10:163:12 | Entry | +| Switch.cs:165:9:177:9 | After switch (...) {...} | Switch.cs:165:9:177:9 | After switch (...) {...} | +| Switch.cs:165:9:177:9 | After switch (...) {...} | Switch.cs:167:18:167:18 | After 1 [match] | +| Switch.cs:165:9:177:9 | After switch (...) {...} | Switch.cs:167:18:167:18 | After 1 [no-match] | +| Switch.cs:165:9:177:9 | After switch (...) {...} | Switch.cs:168:18:168:18 | After 2 [match] | +| Switch.cs:165:9:177:9 | After switch (...) {...} | Switch.cs:168:18:168:18 | After 2 [no-match] | +| Switch.cs:165:9:177:9 | After switch (...) {...} | Switch.cs:169:17:169:51 | ...; | +| Switch.cs:165:9:177:9 | After switch (...) {...} | Switch.cs:171:18:171:18 | After 3 [match] | +| Switch.cs:165:9:177:9 | After switch (...) {...} | Switch.cs:171:18:171:18 | After 3 [no-match] | +| Switch.cs:167:18:167:18 | After 1 [match] | Switch.cs:167:18:167:18 | After 1 [match] | +| Switch.cs:167:18:167:18 | After 1 [no-match] | Switch.cs:167:18:167:18 | After 1 [no-match] | +| Switch.cs:168:18:168:18 | After 2 [match] | Switch.cs:168:18:168:18 | After 2 [match] | +| Switch.cs:168:18:168:18 | After 2 [no-match] | Switch.cs:168:18:168:18 | After 2 [no-match] | +| Switch.cs:169:17:169:51 | ...; | Switch.cs:167:18:167:18 | After 1 [match] | +| Switch.cs:169:17:169:51 | ...; | Switch.cs:168:18:168:18 | After 2 [match] | | Switch.cs:169:17:169:51 | ...; | Switch.cs:169:17:169:51 | ...; | -| Switch.cs:171:13:171:19 | case ...: | Switch.cs:171:13:171:19 | case ...: | -| Switch.cs:172:17:172:46 | ...; | Switch.cs:172:17:172:46 | ...; | -| Switch.cs:174:13:174:20 | default: | Switch.cs:174:13:174:20 | default: | -| TypeAccesses.cs:1:7:1:18 | enter TypeAccesses | TypeAccesses.cs:1:7:1:18 | enter TypeAccesses | -| TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:3:10:3:10 | enter M | -| TypeAccesses.cs:7:13:7:22 | [false] ... is ... | TypeAccesses.cs:7:13:7:22 | [false] ... is ... | -| TypeAccesses.cs:7:13:7:22 | [true] ... is ... | TypeAccesses.cs:7:13:7:22 | [true] ... is ... | -| TypeAccesses.cs:7:25:7:25 | ; | TypeAccesses.cs:7:13:7:22 | [true] ... is ... | -| TypeAccesses.cs:7:25:7:25 | ; | TypeAccesses.cs:7:25:7:25 | ; | -| TypeAccesses.cs:8:9:8:28 | ... ...; | TypeAccesses.cs:3:10:3:10 | enter M | -| TypeAccesses.cs:8:9:8:28 | ... ...; | TypeAccesses.cs:7:13:7:22 | [false] ... is ... | -| TypeAccesses.cs:8:9:8:28 | ... ...; | TypeAccesses.cs:7:13:7:22 | [true] ... is ... | -| TypeAccesses.cs:8:9:8:28 | ... ...; | TypeAccesses.cs:7:25:7:25 | ; | -| TypeAccesses.cs:8:9:8:28 | ... ...; | TypeAccesses.cs:8:9:8:28 | ... ...; | -| VarDecls.cs:3:7:3:14 | enter VarDecls | VarDecls.cs:3:7:3:14 | enter VarDecls | -| VarDecls.cs:5:18:5:19 | enter M1 | VarDecls.cs:5:18:5:19 | enter M1 | -| VarDecls.cs:13:12:13:13 | enter M2 | VarDecls.cs:13:12:13:13 | enter M2 | -| VarDecls.cs:19:7:19:8 | enter M3 | VarDecls.cs:19:7:19:8 | enter M3 | -| VarDecls.cs:25:20:25:28 | ... ? ... : ... | VarDecls.cs:19:7:19:8 | enter M3 | -| VarDecls.cs:25:20:25:28 | ... ? ... : ... | VarDecls.cs:25:20:25:28 | ... ? ... : ... | -| VarDecls.cs:25:20:25:28 | ... ? ... : ... | VarDecls.cs:25:24:25:24 | access to local variable x | -| VarDecls.cs:25:20:25:28 | ... ? ... : ... | VarDecls.cs:25:28:25:28 | access to local variable y | -| VarDecls.cs:25:24:25:24 | access to local variable x | VarDecls.cs:25:24:25:24 | access to local variable x | -| VarDecls.cs:25:28:25:28 | access to local variable y | VarDecls.cs:25:28:25:28 | access to local variable y | -| VarDecls.cs:28:11:28:11 | enter C | VarDecls.cs:28:11:28:11 | enter C | -| VarDecls.cs:28:41:28:47 | enter Dispose | VarDecls.cs:28:41:28:47 | enter Dispose | -| cflow.cs:5:17:5:20 | enter Main | cflow.cs:5:17:5:20 | enter Main | -| cflow.cs:5:17:5:20 | exit Main (normal) | cflow.cs:5:17:5:20 | enter Main | -| cflow.cs:5:17:5:20 | exit Main (normal) | cflow.cs:5:17:5:20 | exit Main (normal) | -| cflow.cs:5:17:5:20 | exit Main (normal) | cflow.cs:12:13:12:49 | ...; | -| cflow.cs:5:17:5:20 | exit Main (normal) | cflow.cs:14:9:17:9 | while (...) ... | -| cflow.cs:5:17:5:20 | exit Main (normal) | cflow.cs:14:16:14:16 | access to local variable a | -| cflow.cs:5:17:5:20 | exit Main (normal) | cflow.cs:15:9:17:9 | {...} | -| cflow.cs:5:17:5:20 | exit Main (normal) | cflow.cs:19:9:22:25 | do ... while (...); | -| cflow.cs:5:17:5:20 | exit Main (normal) | cflow.cs:20:9:22:9 | {...} | -| cflow.cs:5:17:5:20 | exit Main (normal) | cflow.cs:24:9:34:9 | for (...;...;...) ... | -| cflow.cs:5:17:5:20 | exit Main (normal) | cflow.cs:24:25:24:25 | access to local variable i | -| cflow.cs:5:17:5:20 | exit Main (normal) | cflow.cs:24:34:24:34 | access to local variable i | -| cflow.cs:5:17:5:20 | exit Main (normal) | cflow.cs:25:9:34:9 | {...} | -| cflow.cs:5:17:5:20 | exit Main (normal) | cflow.cs:26:17:26:40 | [false] ... && ... | -| cflow.cs:5:17:5:20 | exit Main (normal) | cflow.cs:26:17:26:40 | [true] ... && ... | -| cflow.cs:5:17:5:20 | exit Main (normal) | cflow.cs:26:31:26:31 | access to local variable i | -| cflow.cs:5:17:5:20 | exit Main (normal) | cflow.cs:27:17:27:46 | ...; | -| cflow.cs:5:17:5:20 | exit Main (normal) | cflow.cs:28:18:33:37 | if (...) ... | -| cflow.cs:5:17:5:20 | exit Main (normal) | cflow.cs:29:17:29:42 | ...; | -| cflow.cs:5:17:5:20 | exit Main (normal) | cflow.cs:30:18:33:37 | if (...) ... | -| cflow.cs:5:17:5:20 | exit Main (normal) | cflow.cs:31:17:31:42 | ...; | -| cflow.cs:5:17:5:20 | exit Main (normal) | cflow.cs:33:17:33:37 | ...; | -| cflow.cs:12:13:12:49 | ...; | cflow.cs:12:13:12:49 | ...; | -| cflow.cs:14:9:17:9 | while (...) ... | cflow.cs:5:17:5:20 | enter Main | -| cflow.cs:14:9:17:9 | while (...) ... | cflow.cs:12:13:12:49 | ...; | -| cflow.cs:14:9:17:9 | while (...) ... | cflow.cs:14:9:17:9 | while (...) ... | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:5:17:5:20 | enter Main | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:12:13:12:49 | ...; | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:14:9:17:9 | while (...) ... | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:14:16:14:16 | access to local variable a | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:15:9:17:9 | {...} | -| cflow.cs:15:9:17:9 | {...} | cflow.cs:15:9:17:9 | {...} | -| cflow.cs:19:9:22:25 | do ... while (...); | cflow.cs:5:17:5:20 | enter Main | -| cflow.cs:19:9:22:25 | do ... while (...); | cflow.cs:12:13:12:49 | ...; | -| cflow.cs:19:9:22:25 | do ... while (...); | cflow.cs:14:9:17:9 | while (...) ... | -| cflow.cs:19:9:22:25 | do ... while (...); | cflow.cs:14:16:14:16 | access to local variable a | -| cflow.cs:19:9:22:25 | do ... while (...); | cflow.cs:15:9:17:9 | {...} | -| cflow.cs:19:9:22:25 | do ... while (...); | cflow.cs:19:9:22:25 | do ... while (...); | -| cflow.cs:20:9:22:9 | {...} | cflow.cs:5:17:5:20 | enter Main | -| cflow.cs:20:9:22:9 | {...} | cflow.cs:12:13:12:49 | ...; | -| cflow.cs:20:9:22:9 | {...} | cflow.cs:14:9:17:9 | while (...) ... | -| cflow.cs:20:9:22:9 | {...} | cflow.cs:14:16:14:16 | access to local variable a | -| cflow.cs:20:9:22:9 | {...} | cflow.cs:15:9:17:9 | {...} | -| cflow.cs:20:9:22:9 | {...} | cflow.cs:19:9:22:25 | do ... while (...); | +| Switch.cs:171:18:171:18 | After 3 [match] | Switch.cs:171:18:171:18 | After 3 [match] | +| Switch.cs:171:18:171:18 | After 3 [no-match] | Switch.cs:171:18:171:18 | After 3 [no-match] | +| TypeAccesses.cs:1:7:1:18 | Entry | TypeAccesses.cs:1:7:1:18 | Entry | +| TypeAccesses.cs:3:10:3:10 | Entry | TypeAccesses.cs:3:10:3:10 | Entry | +| TypeAccesses.cs:7:9:7:25 | After if (...) ... | TypeAccesses.cs:3:10:3:10 | Entry | +| TypeAccesses.cs:7:9:7:25 | After if (...) ... | TypeAccesses.cs:7:9:7:25 | After if (...) ... | +| TypeAccesses.cs:7:9:7:25 | After if (...) ... | TypeAccesses.cs:7:13:7:22 | After ... is ... [false] | +| TypeAccesses.cs:7:9:7:25 | After if (...) ... | TypeAccesses.cs:7:13:7:22 | [MatchTrue] ... is ... | +| TypeAccesses.cs:7:13:7:22 | After ... is ... [false] | TypeAccesses.cs:7:13:7:22 | After ... is ... [false] | +| TypeAccesses.cs:7:13:7:22 | [MatchTrue] ... is ... | TypeAccesses.cs:7:13:7:22 | [MatchTrue] ... is ... | +| VarDecls.cs:3:7:3:14 | Entry | VarDecls.cs:3:7:3:14 | Entry | +| VarDecls.cs:5:18:5:19 | Entry | VarDecls.cs:5:18:5:19 | Entry | +| VarDecls.cs:13:12:13:13 | Entry | VarDecls.cs:13:12:13:13 | Entry | +| VarDecls.cs:19:7:19:8 | Entry | VarDecls.cs:19:7:19:8 | Entry | +| VarDecls.cs:25:20:25:20 | After access to parameter b [false] | VarDecls.cs:25:20:25:20 | After access to parameter b [false] | +| VarDecls.cs:25:20:25:20 | After access to parameter b [true] | VarDecls.cs:25:20:25:20 | After access to parameter b [true] | +| VarDecls.cs:25:20:25:28 | After ... ? ... : ... | VarDecls.cs:19:7:19:8 | Entry | +| VarDecls.cs:25:20:25:28 | After ... ? ... : ... | VarDecls.cs:25:20:25:20 | After access to parameter b [false] | +| VarDecls.cs:25:20:25:28 | After ... ? ... : ... | VarDecls.cs:25:20:25:20 | After access to parameter b [true] | +| VarDecls.cs:25:20:25:28 | After ... ? ... : ... | VarDecls.cs:25:20:25:28 | After ... ? ... : ... | +| VarDecls.cs:28:11:28:11 | Entry | VarDecls.cs:28:11:28:11 | Entry | +| VarDecls.cs:28:41:28:47 | Entry | VarDecls.cs:28:41:28:47 | Entry | +| cflow.cs:5:17:5:20 | Entry | cflow.cs:5:17:5:20 | Entry | +| cflow.cs:11:9:12:49 | After if (...) ... | cflow.cs:5:17:5:20 | Entry | +| cflow.cs:11:9:12:49 | After if (...) ... | cflow.cs:11:9:12:49 | After if (...) ... | +| cflow.cs:11:9:12:49 | After if (...) ... | cflow.cs:11:13:11:17 | After ... > ... [false] | +| cflow.cs:11:9:12:49 | After if (...) ... | cflow.cs:11:13:11:17 | After ... > ... [true] | +| cflow.cs:11:13:11:17 | After ... > ... [false] | cflow.cs:11:13:11:17 | After ... > ... [false] | +| cflow.cs:11:13:11:17 | After ... > ... [true] | cflow.cs:11:13:11:17 | After ... > ... [true] | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:5:17:5:20 | Entry | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:11:9:12:49 | After if (...) ... | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:11:13:11:17 | After ... > ... [false] | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:11:13:11:17 | After ... > ... [true] | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:14:16:14:20 | After ... > ... [true] | +| cflow.cs:14:16:14:20 | After ... > ... [false] | cflow.cs:5:17:5:20 | Entry | +| cflow.cs:14:16:14:20 | After ... > ... [false] | cflow.cs:11:9:12:49 | After if (...) ... | +| cflow.cs:14:16:14:20 | After ... > ... [false] | cflow.cs:11:13:11:17 | After ... > ... [false] | +| cflow.cs:14:16:14:20 | After ... > ... [false] | cflow.cs:11:13:11:17 | After ... > ... [true] | +| cflow.cs:14:16:14:20 | After ... > ... [false] | cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | +| cflow.cs:14:16:14:20 | After ... > ... [false] | cflow.cs:14:16:14:20 | After ... > ... [false] | +| cflow.cs:14:16:14:20 | After ... > ... [false] | cflow.cs:14:16:14:20 | After ... > ... [true] | +| cflow.cs:14:16:14:20 | After ... > ... [true] | cflow.cs:14:16:14:20 | After ... > ... [true] | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:5:17:5:20 | Entry | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:11:9:12:49 | After if (...) ... | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:11:13:11:17 | After ... > ... [false] | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:11:13:11:17 | After ... > ... [true] | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:14:16:14:20 | After ... > ... [false] | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:14:16:14:20 | After ... > ... [true] | | cflow.cs:20:9:22:9 | {...} | cflow.cs:20:9:22:9 | {...} | -| cflow.cs:24:9:34:9 | for (...;...;...) ... | cflow.cs:5:17:5:20 | enter Main | -| cflow.cs:24:9:34:9 | for (...;...;...) ... | cflow.cs:12:13:12:49 | ...; | -| cflow.cs:24:9:34:9 | for (...;...;...) ... | cflow.cs:14:9:17:9 | while (...) ... | -| cflow.cs:24:9:34:9 | for (...;...;...) ... | cflow.cs:14:16:14:16 | access to local variable a | -| cflow.cs:24:9:34:9 | for (...;...;...) ... | cflow.cs:15:9:17:9 | {...} | -| cflow.cs:24:9:34:9 | for (...;...;...) ... | cflow.cs:19:9:22:25 | do ... while (...); | -| cflow.cs:24:9:34:9 | for (...;...;...) ... | cflow.cs:20:9:22:9 | {...} | -| cflow.cs:24:9:34:9 | for (...;...;...) ... | cflow.cs:24:9:34:9 | for (...;...;...) ... | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:5:17:5:20 | enter Main | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:12:13:12:49 | ...; | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:14:9:17:9 | while (...) ... | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:14:16:14:16 | access to local variable a | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:15:9:17:9 | {...} | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:19:9:22:25 | do ... while (...); | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:20:9:22:9 | {...} | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:24:9:34:9 | for (...;...;...) ... | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:24:25:24:25 | access to local variable i | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:24:34:24:34 | access to local variable i | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:25:9:34:9 | {...} | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:26:17:26:40 | [false] ... && ... | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:26:17:26:40 | [true] ... && ... | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:26:31:26:31 | access to local variable i | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:27:17:27:46 | ...; | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:28:18:33:37 | if (...) ... | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:29:17:29:42 | ...; | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:30:18:33:37 | if (...) ... | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:31:17:31:42 | ...; | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:33:17:33:37 | ...; | -| cflow.cs:24:34:24:34 | access to local variable i | cflow.cs:24:34:24:34 | access to local variable i | -| cflow.cs:24:34:24:34 | access to local variable i | cflow.cs:25:9:34:9 | {...} | -| cflow.cs:24:34:24:34 | access to local variable i | cflow.cs:26:17:26:40 | [false] ... && ... | -| cflow.cs:24:34:24:34 | access to local variable i | cflow.cs:26:17:26:40 | [true] ... && ... | -| cflow.cs:24:34:24:34 | access to local variable i | cflow.cs:26:31:26:31 | access to local variable i | -| cflow.cs:24:34:24:34 | access to local variable i | cflow.cs:27:17:27:46 | ...; | -| cflow.cs:24:34:24:34 | access to local variable i | cflow.cs:28:18:33:37 | if (...) ... | -| cflow.cs:24:34:24:34 | access to local variable i | cflow.cs:29:17:29:42 | ...; | -| cflow.cs:24:34:24:34 | access to local variable i | cflow.cs:30:18:33:37 | if (...) ... | -| cflow.cs:24:34:24:34 | access to local variable i | cflow.cs:31:17:31:42 | ...; | -| cflow.cs:24:34:24:34 | access to local variable i | cflow.cs:33:17:33:37 | ...; | -| cflow.cs:25:9:34:9 | {...} | cflow.cs:25:9:34:9 | {...} | -| cflow.cs:26:17:26:40 | [false] ... && ... | cflow.cs:26:17:26:40 | [false] ... && ... | -| cflow.cs:26:17:26:40 | [true] ... && ... | cflow.cs:26:17:26:40 | [true] ... && ... | -| cflow.cs:26:31:26:31 | access to local variable i | cflow.cs:26:31:26:31 | access to local variable i | -| cflow.cs:27:17:27:46 | ...; | cflow.cs:26:17:26:40 | [true] ... && ... | -| cflow.cs:27:17:27:46 | ...; | cflow.cs:27:17:27:46 | ...; | -| cflow.cs:28:18:33:37 | if (...) ... | cflow.cs:26:17:26:40 | [false] ... && ... | -| cflow.cs:28:18:33:37 | if (...) ... | cflow.cs:28:18:33:37 | if (...) ... | -| cflow.cs:29:17:29:42 | ...; | cflow.cs:29:17:29:42 | ...; | -| cflow.cs:30:18:33:37 | if (...) ... | cflow.cs:30:18:33:37 | if (...) ... | -| cflow.cs:31:17:31:42 | ...; | cflow.cs:31:17:31:42 | ...; | -| cflow.cs:33:17:33:37 | ...; | cflow.cs:33:17:33:37 | ...; | -| cflow.cs:37:17:37:22 | enter Switch | cflow.cs:37:17:37:22 | enter Switch | -| cflow.cs:37:17:37:22 | exit Switch | cflow.cs:37:17:37:22 | exit Switch | -| cflow.cs:41:13:41:19 | case ...: | cflow.cs:37:17:37:22 | enter Switch | -| cflow.cs:41:13:41:19 | case ...: | cflow.cs:41:13:41:19 | case ...: | -| cflow.cs:41:13:41:19 | case ...: | cflow.cs:45:17:45:39 | ...; | -| cflow.cs:42:17:42:39 | ...; | cflow.cs:42:17:42:39 | ...; | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:37:17:37:22 | enter Switch | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:41:13:41:19 | case ...: | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:42:17:42:39 | ...; | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:44:13:44:19 | case ...: | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:45:17:45:39 | ...; | -| cflow.cs:45:17:45:39 | ...; | cflow.cs:45:17:45:39 | ...; | -| cflow.cs:47:13:47:19 | case ...: | cflow.cs:37:17:37:22 | enter Switch | -| cflow.cs:47:13:47:19 | case ...: | cflow.cs:41:13:41:19 | case ...: | -| cflow.cs:47:13:47:19 | case ...: | cflow.cs:42:17:42:39 | ...; | -| cflow.cs:47:13:47:19 | case ...: | cflow.cs:44:13:44:19 | case ...: | -| cflow.cs:47:13:47:19 | case ...: | cflow.cs:45:17:45:39 | ...; | -| cflow.cs:47:13:47:19 | case ...: | cflow.cs:47:13:47:19 | case ...: | -| cflow.cs:48:17:48:39 | ...; | cflow.cs:48:17:48:39 | ...; | -| cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:37:17:37:22 | enter Switch | -| cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:41:13:41:19 | case ...: | -| cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:42:17:42:39 | ...; | -| cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:44:13:44:19 | case ...: | -| cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:45:17:45:39 | ...; | -| cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:47:13:47:19 | case ...: | -| cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:48:17:48:39 | ...; | -| cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:51:9:59:9 | switch (...) {...} | -| cflow.cs:54:17:54:48 | ...; | cflow.cs:54:17:54:48 | ...; | -| cflow.cs:56:13:56:20 | default: | cflow.cs:56:13:56:20 | default: | -| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:37:17:37:22 | enter Switch | -| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:41:13:41:19 | case ...: | -| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:42:17:42:39 | ...; | -| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:44:13:44:19 | case ...: | -| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:45:17:45:39 | ...; | -| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:47:13:47:19 | case ...: | -| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:48:17:48:39 | ...; | -| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:51:9:59:9 | switch (...) {...} | -| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:54:17:54:48 | ...; | -| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:56:13:56:20 | default: | -| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:60:9:66:9 | switch (...) {...} | -| cflow.cs:63:17:64:55 | if (...) ... | cflow.cs:63:17:64:55 | if (...) ... | -| cflow.cs:63:21:63:34 | [false] !... | cflow.cs:63:17:64:55 | if (...) ... | -| cflow.cs:63:21:63:34 | [false] !... | cflow.cs:63:21:63:34 | [false] !... | -| cflow.cs:63:21:63:34 | [true] !... | cflow.cs:63:21:63:34 | [true] !... | -| cflow.cs:64:27:64:54 | object creation of type NullReferenceException | cflow.cs:64:27:64:54 | object creation of type NullReferenceException | -| cflow.cs:65:17:65:22 | break; | cflow.cs:63:17:64:55 | if (...) ... | -| cflow.cs:65:17:65:22 | break; | cflow.cs:63:21:63:34 | [false] !... | -| cflow.cs:65:17:65:22 | break; | cflow.cs:65:17:65:22 | break; | -| cflow.cs:67:16:67:16 | access to parameter a | cflow.cs:37:17:37:22 | enter Switch | -| cflow.cs:67:16:67:16 | access to parameter a | cflow.cs:41:13:41:19 | case ...: | -| cflow.cs:67:16:67:16 | access to parameter a | cflow.cs:42:17:42:39 | ...; | -| cflow.cs:67:16:67:16 | access to parameter a | cflow.cs:44:13:44:19 | case ...: | -| cflow.cs:67:16:67:16 | access to parameter a | cflow.cs:45:17:45:39 | ...; | -| cflow.cs:67:16:67:16 | access to parameter a | cflow.cs:47:13:47:19 | case ...: | -| cflow.cs:67:16:67:16 | access to parameter a | cflow.cs:48:17:48:39 | ...; | -| cflow.cs:67:16:67:16 | access to parameter a | cflow.cs:51:9:59:9 | switch (...) {...} | -| cflow.cs:67:16:67:16 | access to parameter a | cflow.cs:54:17:54:48 | ...; | -| cflow.cs:67:16:67:16 | access to parameter a | cflow.cs:56:13:56:20 | default: | -| cflow.cs:67:16:67:16 | access to parameter a | cflow.cs:60:9:66:9 | switch (...) {...} | -| cflow.cs:67:16:67:16 | access to parameter a | cflow.cs:63:17:64:55 | if (...) ... | -| cflow.cs:67:16:67:16 | access to parameter a | cflow.cs:63:21:63:34 | [false] !... | -| cflow.cs:67:16:67:16 | access to parameter a | cflow.cs:65:17:65:22 | break; | -| cflow.cs:67:16:67:16 | access to parameter a | cflow.cs:67:16:67:16 | access to parameter a | -| cflow.cs:70:18:70:18 | enter M | cflow.cs:70:18:70:18 | enter M | -| cflow.cs:70:18:70:18 | exit M (normal) | cflow.cs:70:18:70:18 | enter M | -| cflow.cs:70:18:70:18 | exit M (normal) | cflow.cs:70:18:70:18 | exit M (normal) | -| cflow.cs:70:18:70:18 | exit M (normal) | cflow.cs:73:13:73:19 | return ...; | -| cflow.cs:70:18:70:18 | exit M (normal) | cflow.cs:74:9:81:9 | if (...) ... | -| cflow.cs:70:18:70:18 | exit M (normal) | cflow.cs:75:9:77:9 | {...} | -| cflow.cs:70:18:70:18 | exit M (normal) | cflow.cs:79:9:81:9 | {...} | -| cflow.cs:73:13:73:19 | return ...; | cflow.cs:73:13:73:19 | return ...; | -| cflow.cs:74:9:81:9 | if (...) ... | cflow.cs:74:9:81:9 | if (...) ... | -| cflow.cs:75:9:77:9 | {...} | cflow.cs:75:9:77:9 | {...} | -| cflow.cs:79:9:81:9 | {...} | cflow.cs:79:9:81:9 | {...} | -| cflow.cs:84:18:84:19 | enter M2 | cflow.cs:84:18:84:19 | enter M2 | -| cflow.cs:84:18:84:19 | exit M2 (normal) | cflow.cs:84:18:84:19 | enter M2 | -| cflow.cs:84:18:84:19 | exit M2 (normal) | cflow.cs:84:18:84:19 | exit M2 (normal) | -| cflow.cs:84:18:84:19 | exit M2 (normal) | cflow.cs:86:13:86:37 | [false] ... && ... | -| cflow.cs:84:18:84:19 | exit M2 (normal) | cflow.cs:86:13:86:37 | [true] ... && ... | -| cflow.cs:84:18:84:19 | exit M2 (normal) | cflow.cs:86:26:86:26 | access to parameter s | -| cflow.cs:84:18:84:19 | exit M2 (normal) | cflow.cs:87:13:87:33 | ...; | -| cflow.cs:86:13:86:37 | [false] ... && ... | cflow.cs:86:13:86:37 | [false] ... && ... | -| cflow.cs:86:13:86:37 | [true] ... && ... | cflow.cs:86:13:86:37 | [true] ... && ... | -| cflow.cs:86:26:86:26 | access to parameter s | cflow.cs:86:26:86:26 | access to parameter s | -| cflow.cs:87:13:87:33 | ...; | cflow.cs:86:13:86:37 | [true] ... && ... | -| cflow.cs:87:13:87:33 | ...; | cflow.cs:87:13:87:33 | ...; | -| cflow.cs:90:18:90:19 | enter M3 | cflow.cs:90:18:90:19 | enter M3 | -| cflow.cs:90:18:90:19 | exit M3 | cflow.cs:90:18:90:19 | exit M3 | -| cflow.cs:90:18:90:19 | exit M3 (normal) | cflow.cs:90:18:90:19 | enter M3 | -| cflow.cs:90:18:90:19 | exit M3 (normal) | cflow.cs:90:18:90:19 | exit M3 (normal) | -| cflow.cs:90:18:90:19 | exit M3 (normal) | cflow.cs:94:9:94:29 | ...; | -| cflow.cs:90:18:90:19 | exit M3 (normal) | cflow.cs:97:13:97:55 | ...; | -| cflow.cs:90:18:90:19 | exit M3 (normal) | cflow.cs:99:9:100:42 | if (...) ... | -| cflow.cs:90:18:90:19 | exit M3 (normal) | cflow.cs:100:13:100:42 | ...; | -| cflow.cs:90:18:90:19 | exit M3 (normal) | cflow.cs:102:9:103:36 | if (...) ... | -| cflow.cs:90:18:90:19 | exit M3 (normal) | cflow.cs:103:13:103:36 | ...; | -| cflow.cs:93:45:93:47 | "s" | cflow.cs:93:45:93:47 | "s" | -| cflow.cs:94:9:94:29 | ...; | cflow.cs:90:18:90:19 | enter M3 | -| cflow.cs:94:9:94:29 | ...; | cflow.cs:94:9:94:29 | ...; | -| cflow.cs:97:13:97:55 | ...; | cflow.cs:97:13:97:55 | ...; | -| cflow.cs:99:9:100:42 | if (...) ... | cflow.cs:90:18:90:19 | enter M3 | -| cflow.cs:99:9:100:42 | if (...) ... | cflow.cs:94:9:94:29 | ...; | -| cflow.cs:99:9:100:42 | if (...) ... | cflow.cs:97:13:97:55 | ...; | -| cflow.cs:99:9:100:42 | if (...) ... | cflow.cs:99:9:100:42 | if (...) ... | -| cflow.cs:100:13:100:42 | ...; | cflow.cs:100:13:100:42 | ...; | -| cflow.cs:102:9:103:36 | if (...) ... | cflow.cs:90:18:90:19 | enter M3 | -| cflow.cs:102:9:103:36 | if (...) ... | cflow.cs:94:9:94:29 | ...; | -| cflow.cs:102:9:103:36 | if (...) ... | cflow.cs:97:13:97:55 | ...; | -| cflow.cs:102:9:103:36 | if (...) ... | cflow.cs:99:9:100:42 | if (...) ... | -| cflow.cs:102:9:103:36 | if (...) ... | cflow.cs:100:13:100:42 | ...; | -| cflow.cs:102:9:103:36 | if (...) ... | cflow.cs:102:9:103:36 | if (...) ... | -| cflow.cs:103:13:103:36 | ...; | cflow.cs:103:13:103:36 | ...; | -| cflow.cs:106:18:106:19 | enter M4 | cflow.cs:106:18:106:19 | enter M4 | -| cflow.cs:109:9:115:9 | {...} | cflow.cs:109:9:115:9 | {...} | -| cflow.cs:110:20:110:23 | true | cflow.cs:110:20:110:23 | true | -| cflow.cs:111:13:113:13 | {...} | cflow.cs:111:13:113:13 | {...} | -| cflow.cs:116:9:116:29 | ...; | cflow.cs:106:18:106:19 | enter M4 | -| cflow.cs:116:9:116:29 | ...; | cflow.cs:116:9:116:29 | ...; | -| cflow.cs:119:20:119:21 | enter M5 | cflow.cs:119:20:119:21 | enter M5 | -| cflow.cs:127:19:127:21 | enter get_Prop | cflow.cs:127:19:127:21 | enter get_Prop | -| cflow.cs:127:32:127:57 | ... ? ... : ... | cflow.cs:127:19:127:21 | enter get_Prop | -| cflow.cs:127:32:127:57 | ... ? ... : ... | cflow.cs:127:32:127:57 | ... ? ... : ... | -| cflow.cs:127:32:127:57 | ... ? ... : ... | cflow.cs:127:48:127:49 | "" | -| cflow.cs:127:32:127:57 | ... ? ... : ... | cflow.cs:127:53:127:57 | this access | -| cflow.cs:127:48:127:49 | "" | cflow.cs:127:48:127:49 | "" | -| cflow.cs:127:53:127:57 | this access | cflow.cs:127:53:127:57 | this access | -| cflow.cs:127:62:127:64 | enter set_Prop | cflow.cs:127:62:127:64 | enter set_Prop | -| cflow.cs:129:5:129:15 | enter ControlFlow | cflow.cs:129:5:129:15 | enter ControlFlow | -| cflow.cs:134:5:134:15 | enter ControlFlow | cflow.cs:134:5:134:15 | enter ControlFlow | -| cflow.cs:136:12:136:22 | enter ControlFlow | cflow.cs:136:12:136:22 | enter ControlFlow | -| cflow.cs:138:40:138:40 | enter + | cflow.cs:138:40:138:40 | enter + | -| cflow.cs:144:33:144:35 | enter get_Item | cflow.cs:144:33:144:35 | enter get_Item | -| cflow.cs:144:56:144:58 | enter set_Item | cflow.cs:144:56:144:58 | enter set_Item | -| cflow.cs:146:10:146:12 | enter For | cflow.cs:146:10:146:12 | enter For | -| cflow.cs:146:10:146:12 | exit For (normal) | cflow.cs:146:10:146:12 | enter For | -| cflow.cs:146:10:146:12 | exit For (normal) | cflow.cs:146:10:146:12 | exit For (normal) | -| cflow.cs:146:10:146:12 | exit For (normal) | cflow.cs:149:16:149:16 | access to local variable x | -| cflow.cs:146:10:146:12 | exit For (normal) | cflow.cs:150:13:150:33 | ...; | -| cflow.cs:146:10:146:12 | exit For (normal) | cflow.cs:152:9:157:9 | for (...;...;...) ... | -| cflow.cs:146:10:146:12 | exit For (normal) | cflow.cs:152:18:152:18 | access to local variable x | -| cflow.cs:146:10:146:12 | exit For (normal) | cflow.cs:153:9:157:9 | {...} | -| cflow.cs:146:10:146:12 | exit For (normal) | cflow.cs:156:17:156:22 | break; | -| cflow.cs:146:10:146:12 | exit For (normal) | cflow.cs:160:9:165:9 | {...} | -| cflow.cs:146:10:146:12 | exit For (normal) | cflow.cs:164:17:164:22 | break; | -| cflow.cs:146:10:146:12 | exit For (normal) | cflow.cs:167:16:167:16 | access to local variable x | -| cflow.cs:146:10:146:12 | exit For (normal) | cflow.cs:168:9:171:9 | {...} | -| cflow.cs:146:10:146:12 | exit For (normal) | cflow.cs:173:9:176:9 | for (...;...;...) ... | -| cflow.cs:146:10:146:12 | exit For (normal) | cflow.cs:173:32:173:32 | access to local variable i | -| cflow.cs:146:10:146:12 | exit For (normal) | cflow.cs:174:9:176:9 | {...} | -| cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:146:10:146:12 | enter For | -| cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:149:16:149:16 | access to local variable x | -| cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:150:13:150:33 | ...; | -| cflow.cs:150:13:150:33 | ...; | cflow.cs:150:13:150:33 | ...; | -| cflow.cs:152:9:157:9 | for (...;...;...) ... | cflow.cs:146:10:146:12 | enter For | -| cflow.cs:152:9:157:9 | for (...;...;...) ... | cflow.cs:149:16:149:16 | access to local variable x | -| cflow.cs:152:9:157:9 | for (...;...;...) ... | cflow.cs:150:13:150:33 | ...; | -| cflow.cs:152:9:157:9 | for (...;...;...) ... | cflow.cs:152:9:157:9 | for (...;...;...) ... | -| cflow.cs:152:18:152:18 | access to local variable x | cflow.cs:152:18:152:18 | access to local variable x | -| cflow.cs:153:9:157:9 | {...} | cflow.cs:146:10:146:12 | enter For | -| cflow.cs:153:9:157:9 | {...} | cflow.cs:149:16:149:16 | access to local variable x | -| cflow.cs:153:9:157:9 | {...} | cflow.cs:150:13:150:33 | ...; | -| cflow.cs:153:9:157:9 | {...} | cflow.cs:152:9:157:9 | for (...;...;...) ... | -| cflow.cs:153:9:157:9 | {...} | cflow.cs:152:18:152:18 | access to local variable x | +| cflow.cs:20:9:22:9 | {...} | cflow.cs:22:18:22:23 | After ... < ... [true] | +| cflow.cs:22:18:22:23 | After ... < ... [false] | cflow.cs:5:17:5:20 | Entry | +| cflow.cs:22:18:22:23 | After ... < ... [false] | cflow.cs:11:9:12:49 | After if (...) ... | +| cflow.cs:22:18:22:23 | After ... < ... [false] | cflow.cs:11:13:11:17 | After ... > ... [false] | +| cflow.cs:22:18:22:23 | After ... < ... [false] | cflow.cs:11:13:11:17 | After ... > ... [true] | +| cflow.cs:22:18:22:23 | After ... < ... [false] | cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | +| cflow.cs:22:18:22:23 | After ... < ... [false] | cflow.cs:14:16:14:20 | After ... > ... [false] | +| cflow.cs:22:18:22:23 | After ... < ... [false] | cflow.cs:14:16:14:20 | After ... > ... [true] | +| cflow.cs:22:18:22:23 | After ... < ... [false] | cflow.cs:20:9:22:9 | {...} | +| cflow.cs:22:18:22:23 | After ... < ... [false] | cflow.cs:22:18:22:23 | After ... < ... [false] | +| cflow.cs:22:18:22:23 | After ... < ... [false] | cflow.cs:22:18:22:23 | After ... < ... [true] | +| cflow.cs:22:18:22:23 | After ... < ... [true] | cflow.cs:22:18:22:23 | After ... < ... [true] | +| cflow.cs:24:25:24:31 | After ... <= ... [false] | cflow.cs:5:17:5:20 | Entry | +| cflow.cs:24:25:24:31 | After ... <= ... [false] | cflow.cs:11:9:12:49 | After if (...) ... | +| cflow.cs:24:25:24:31 | After ... <= ... [false] | cflow.cs:11:13:11:17 | After ... > ... [false] | +| cflow.cs:24:25:24:31 | After ... <= ... [false] | cflow.cs:11:13:11:17 | After ... > ... [true] | +| cflow.cs:24:25:24:31 | After ... <= ... [false] | cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | +| cflow.cs:24:25:24:31 | After ... <= ... [false] | cflow.cs:14:16:14:20 | After ... > ... [false] | +| cflow.cs:24:25:24:31 | After ... <= ... [false] | cflow.cs:14:16:14:20 | After ... > ... [true] | +| cflow.cs:24:25:24:31 | After ... <= ... [false] | cflow.cs:20:9:22:9 | {...} | +| cflow.cs:24:25:24:31 | After ... <= ... [false] | cflow.cs:22:18:22:23 | After ... < ... [false] | +| cflow.cs:24:25:24:31 | After ... <= ... [false] | cflow.cs:22:18:22:23 | After ... < ... [true] | +| cflow.cs:24:25:24:31 | After ... <= ... [false] | cflow.cs:24:25:24:31 | After ... <= ... [false] | +| cflow.cs:24:25:24:31 | After ... <= ... [false] | cflow.cs:24:25:24:31 | After ... <= ... [true] | +| cflow.cs:24:25:24:31 | After ... <= ... [false] | cflow.cs:24:25:24:31 | Before ... <= ... | +| cflow.cs:24:25:24:31 | After ... <= ... [false] | cflow.cs:26:13:33:37 | After if (...) ... | +| cflow.cs:24:25:24:31 | After ... <= ... [false] | cflow.cs:26:17:26:26 | After ... == ... [false] | +| cflow.cs:24:25:24:31 | After ... <= ... [false] | cflow.cs:26:17:26:26 | After ... == ... [true] | +| cflow.cs:24:25:24:31 | After ... <= ... [false] | cflow.cs:26:17:26:40 | After ... && ... [false] | +| cflow.cs:24:25:24:31 | After ... <= ... [false] | cflow.cs:26:31:26:40 | After ... == ... [false] | +| cflow.cs:24:25:24:31 | After ... <= ... [false] | cflow.cs:26:31:26:40 | After ... == ... [true] | +| cflow.cs:24:25:24:31 | After ... <= ... [false] | cflow.cs:28:18:33:37 | After if (...) ... | +| cflow.cs:24:25:24:31 | After ... <= ... [false] | cflow.cs:28:22:28:31 | After ... == ... [false] | +| cflow.cs:24:25:24:31 | After ... <= ... [false] | cflow.cs:28:22:28:31 | After ... == ... [true] | +| cflow.cs:24:25:24:31 | After ... <= ... [false] | cflow.cs:30:18:33:37 | After if (...) ... | +| cflow.cs:24:25:24:31 | After ... <= ... [false] | cflow.cs:30:22:30:31 | After ... == ... [false] | +| cflow.cs:24:25:24:31 | After ... <= ... [false] | cflow.cs:30:22:30:31 | After ... == ... [true] | +| cflow.cs:24:25:24:31 | After ... <= ... [true] | cflow.cs:24:25:24:31 | After ... <= ... [true] | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:5:17:5:20 | Entry | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:11:9:12:49 | After if (...) ... | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:11:13:11:17 | After ... > ... [false] | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:11:13:11:17 | After ... > ... [true] | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:14:16:14:20 | After ... > ... [false] | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:14:16:14:20 | After ... > ... [true] | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:20:9:22:9 | {...} | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:22:18:22:23 | After ... < ... [false] | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:22:18:22:23 | After ... < ... [true] | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:24:25:24:31 | After ... <= ... [true] | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:24:25:24:31 | Before ... <= ... | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:26:13:33:37 | After if (...) ... | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:26:17:26:26 | After ... == ... [false] | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:26:17:26:26 | After ... == ... [true] | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:26:17:26:40 | After ... && ... [false] | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:26:31:26:40 | After ... == ... [false] | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:26:31:26:40 | After ... == ... [true] | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:28:18:33:37 | After if (...) ... | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:28:22:28:31 | After ... == ... [false] | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:28:22:28:31 | After ... == ... [true] | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:30:18:33:37 | After if (...) ... | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:30:22:30:31 | After ... == ... [false] | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:30:22:30:31 | After ... == ... [true] | +| cflow.cs:26:13:33:37 | After if (...) ... | cflow.cs:24:25:24:31 | After ... <= ... [true] | +| cflow.cs:26:13:33:37 | After if (...) ... | cflow.cs:26:13:33:37 | After if (...) ... | +| cflow.cs:26:13:33:37 | After if (...) ... | cflow.cs:26:17:26:26 | After ... == ... [false] | +| cflow.cs:26:13:33:37 | After if (...) ... | cflow.cs:26:17:26:26 | After ... == ... [true] | +| cflow.cs:26:13:33:37 | After if (...) ... | cflow.cs:26:17:26:40 | After ... && ... [false] | +| cflow.cs:26:13:33:37 | After if (...) ... | cflow.cs:26:31:26:40 | After ... == ... [false] | +| cflow.cs:26:13:33:37 | After if (...) ... | cflow.cs:26:31:26:40 | After ... == ... [true] | +| cflow.cs:26:13:33:37 | After if (...) ... | cflow.cs:28:18:33:37 | After if (...) ... | +| cflow.cs:26:13:33:37 | After if (...) ... | cflow.cs:28:22:28:31 | After ... == ... [false] | +| cflow.cs:26:13:33:37 | After if (...) ... | cflow.cs:28:22:28:31 | After ... == ... [true] | +| cflow.cs:26:13:33:37 | After if (...) ... | cflow.cs:30:18:33:37 | After if (...) ... | +| cflow.cs:26:13:33:37 | After if (...) ... | cflow.cs:30:22:30:31 | After ... == ... [false] | +| cflow.cs:26:13:33:37 | After if (...) ... | cflow.cs:30:22:30:31 | After ... == ... [true] | +| cflow.cs:26:17:26:26 | After ... == ... [false] | cflow.cs:26:17:26:26 | After ... == ... [false] | +| cflow.cs:26:17:26:26 | After ... == ... [true] | cflow.cs:26:17:26:26 | After ... == ... [true] | +| cflow.cs:26:17:26:40 | After ... && ... [false] | cflow.cs:26:17:26:26 | After ... == ... [false] | +| cflow.cs:26:17:26:40 | After ... && ... [false] | cflow.cs:26:17:26:40 | After ... && ... [false] | +| cflow.cs:26:17:26:40 | After ... && ... [false] | cflow.cs:26:31:26:40 | After ... == ... [false] | +| cflow.cs:26:31:26:40 | After ... == ... [false] | cflow.cs:26:31:26:40 | After ... == ... [false] | +| cflow.cs:26:31:26:40 | After ... == ... [true] | cflow.cs:26:31:26:40 | After ... == ... [true] | +| cflow.cs:28:18:33:37 | After if (...) ... | cflow.cs:26:17:26:26 | After ... == ... [false] | +| cflow.cs:28:18:33:37 | After if (...) ... | cflow.cs:26:17:26:40 | After ... && ... [false] | +| cflow.cs:28:18:33:37 | After if (...) ... | cflow.cs:26:31:26:40 | After ... == ... [false] | +| cflow.cs:28:18:33:37 | After if (...) ... | cflow.cs:28:18:33:37 | After if (...) ... | +| cflow.cs:28:18:33:37 | After if (...) ... | cflow.cs:28:22:28:31 | After ... == ... [false] | +| cflow.cs:28:18:33:37 | After if (...) ... | cflow.cs:28:22:28:31 | After ... == ... [true] | +| cflow.cs:28:18:33:37 | After if (...) ... | cflow.cs:30:18:33:37 | After if (...) ... | +| cflow.cs:28:18:33:37 | After if (...) ... | cflow.cs:30:22:30:31 | After ... == ... [false] | +| cflow.cs:28:18:33:37 | After if (...) ... | cflow.cs:30:22:30:31 | After ... == ... [true] | +| cflow.cs:28:22:28:31 | After ... == ... [false] | cflow.cs:28:22:28:31 | After ... == ... [false] | +| cflow.cs:28:22:28:31 | After ... == ... [true] | cflow.cs:28:22:28:31 | After ... == ... [true] | +| cflow.cs:30:18:33:37 | After if (...) ... | cflow.cs:28:22:28:31 | After ... == ... [false] | +| cflow.cs:30:18:33:37 | After if (...) ... | cflow.cs:30:18:33:37 | After if (...) ... | +| cflow.cs:30:18:33:37 | After if (...) ... | cflow.cs:30:22:30:31 | After ... == ... [false] | +| cflow.cs:30:18:33:37 | After if (...) ... | cflow.cs:30:22:30:31 | After ... == ... [true] | +| cflow.cs:30:22:30:31 | After ... == ... [false] | cflow.cs:30:22:30:31 | After ... == ... [false] | +| cflow.cs:30:22:30:31 | After ... == ... [true] | cflow.cs:30:22:30:31 | After ... == ... [true] | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:37:17:37:22 | Entry | +| cflow.cs:37:17:37:22 | Exit | cflow.cs:37:17:37:22 | Exit | +| cflow.cs:39:9:50:9 | After switch (...) {...} | cflow.cs:37:17:37:22 | Entry | +| cflow.cs:39:9:50:9 | After switch (...) {...} | cflow.cs:39:9:50:9 | After switch (...) {...} | +| cflow.cs:39:9:50:9 | After switch (...) {...} | cflow.cs:41:18:41:18 | After 1 [no-match] | +| cflow.cs:39:9:50:9 | After switch (...) {...} | cflow.cs:44:18:44:18 | After 2 [no-match] | +| cflow.cs:39:9:50:9 | After switch (...) {...} | cflow.cs:47:18:47:18 | After 3 [match] | +| cflow.cs:39:9:50:9 | After switch (...) {...} | cflow.cs:47:18:47:18 | After 3 [no-match] | +| cflow.cs:41:13:41:19 | After case ...: [match] | cflow.cs:41:13:41:19 | After case ...: [match] | +| cflow.cs:41:18:41:18 | After 1 [match] | cflow.cs:41:18:41:18 | After 1 [match] | +| cflow.cs:41:18:41:18 | After 1 [no-match] | cflow.cs:37:17:37:22 | Entry | +| cflow.cs:41:18:41:18 | After 1 [no-match] | cflow.cs:41:18:41:18 | After 1 [no-match] | +| cflow.cs:44:13:44:19 | After case ...: [match] | cflow.cs:44:13:44:19 | After case ...: [match] | +| cflow.cs:44:18:44:18 | After 2 [match] | cflow.cs:44:18:44:18 | After 2 [match] | +| cflow.cs:44:18:44:18 | After 2 [no-match] | cflow.cs:37:17:37:22 | Entry | +| cflow.cs:44:18:44:18 | After 2 [no-match] | cflow.cs:41:18:41:18 | After 1 [no-match] | +| cflow.cs:44:18:44:18 | After 2 [no-match] | cflow.cs:44:18:44:18 | After 2 [no-match] | +| cflow.cs:47:18:47:18 | After 3 [match] | cflow.cs:47:18:47:18 | After 3 [match] | +| cflow.cs:47:18:47:18 | After 3 [no-match] | cflow.cs:47:18:47:18 | After 3 [no-match] | +| cflow.cs:51:9:59:9 | After switch (...) {...} | cflow.cs:37:17:37:22 | Entry | +| cflow.cs:51:9:59:9 | After switch (...) {...} | cflow.cs:39:9:50:9 | After switch (...) {...} | +| cflow.cs:51:9:59:9 | After switch (...) {...} | cflow.cs:41:18:41:18 | After 1 [no-match] | +| cflow.cs:51:9:59:9 | After switch (...) {...} | cflow.cs:44:18:44:18 | After 2 [no-match] | +| cflow.cs:51:9:59:9 | After switch (...) {...} | cflow.cs:47:18:47:18 | After 3 [match] | +| cflow.cs:51:9:59:9 | After switch (...) {...} | cflow.cs:47:18:47:18 | After 3 [no-match] | +| cflow.cs:51:9:59:9 | After switch (...) {...} | cflow.cs:51:9:59:9 | After switch (...) {...} | +| cflow.cs:51:9:59:9 | After switch (...) {...} | cflow.cs:53:18:53:19 | After 42 [match] | +| cflow.cs:51:9:59:9 | After switch (...) {...} | cflow.cs:53:18:53:19 | After 42 [no-match] | +| cflow.cs:53:18:53:19 | After 42 [match] | cflow.cs:53:18:53:19 | After 42 [match] | +| cflow.cs:53:18:53:19 | After 42 [no-match] | cflow.cs:53:18:53:19 | After 42 [no-match] | +| cflow.cs:60:9:66:9 | After switch (...) {...} | cflow.cs:37:17:37:22 | Entry | +| cflow.cs:60:9:66:9 | After switch (...) {...} | cflow.cs:39:9:50:9 | After switch (...) {...} | +| cflow.cs:60:9:66:9 | After switch (...) {...} | cflow.cs:41:18:41:18 | After 1 [no-match] | +| cflow.cs:60:9:66:9 | After switch (...) {...} | cflow.cs:44:18:44:18 | After 2 [no-match] | +| cflow.cs:60:9:66:9 | After switch (...) {...} | cflow.cs:47:18:47:18 | After 3 [match] | +| cflow.cs:60:9:66:9 | After switch (...) {...} | cflow.cs:47:18:47:18 | After 3 [no-match] | +| cflow.cs:60:9:66:9 | After switch (...) {...} | cflow.cs:51:9:59:9 | After switch (...) {...} | +| cflow.cs:60:9:66:9 | After switch (...) {...} | cflow.cs:53:18:53:19 | After 42 [match] | +| cflow.cs:60:9:66:9 | After switch (...) {...} | cflow.cs:53:18:53:19 | After 42 [no-match] | +| cflow.cs:60:9:66:9 | After switch (...) {...} | cflow.cs:60:9:66:9 | After switch (...) {...} | +| cflow.cs:60:9:66:9 | After switch (...) {...} | cflow.cs:62:18:62:18 | After 0 [match] | +| cflow.cs:60:9:66:9 | After switch (...) {...} | cflow.cs:62:18:62:18 | After 0 [no-match] | +| cflow.cs:60:9:66:9 | After switch (...) {...} | cflow.cs:63:23:63:33 | After ... == ... [true] | +| cflow.cs:62:18:62:18 | After 0 [match] | cflow.cs:62:18:62:18 | After 0 [match] | +| cflow.cs:62:18:62:18 | After 0 [no-match] | cflow.cs:62:18:62:18 | After 0 [no-match] | +| cflow.cs:63:23:63:33 | After ... == ... [false] | cflow.cs:63:23:63:33 | After ... == ... [false] | +| cflow.cs:63:23:63:33 | After ... == ... [true] | cflow.cs:62:18:62:18 | After 0 [match] | +| cflow.cs:63:23:63:33 | After ... == ... [true] | cflow.cs:63:23:63:33 | After ... == ... [true] | +| cflow.cs:70:18:70:18 | Entry | cflow.cs:70:18:70:18 | Entry | +| cflow.cs:70:18:70:18 | Normal Exit | cflow.cs:70:18:70:18 | Entry | +| cflow.cs:70:18:70:18 | Normal Exit | cflow.cs:70:18:70:18 | Normal Exit | +| cflow.cs:70:18:70:18 | Normal Exit | cflow.cs:72:13:72:21 | After ... == ... [false] | +| cflow.cs:70:18:70:18 | Normal Exit | cflow.cs:72:13:72:21 | After ... == ... [true] | +| cflow.cs:70:18:70:18 | Normal Exit | cflow.cs:74:9:81:9 | After if (...) ... | +| cflow.cs:70:18:70:18 | Normal Exit | cflow.cs:74:13:74:24 | After ... > ... [false] | +| cflow.cs:70:18:70:18 | Normal Exit | cflow.cs:74:13:74:24 | After ... > ... [true] | +| cflow.cs:72:13:72:21 | After ... == ... [false] | cflow.cs:72:13:72:21 | After ... == ... [false] | +| cflow.cs:72:13:72:21 | After ... == ... [true] | cflow.cs:72:13:72:21 | After ... == ... [true] | +| cflow.cs:74:9:81:9 | After if (...) ... | cflow.cs:72:13:72:21 | After ... == ... [false] | +| cflow.cs:74:9:81:9 | After if (...) ... | cflow.cs:74:9:81:9 | After if (...) ... | +| cflow.cs:74:9:81:9 | After if (...) ... | cflow.cs:74:13:74:24 | After ... > ... [false] | +| cflow.cs:74:9:81:9 | After if (...) ... | cflow.cs:74:13:74:24 | After ... > ... [true] | +| cflow.cs:74:13:74:24 | After ... > ... [false] | cflow.cs:74:13:74:24 | After ... > ... [false] | +| cflow.cs:74:13:74:24 | After ... > ... [true] | cflow.cs:74:13:74:24 | After ... > ... [true] | +| cflow.cs:84:18:84:19 | Entry | cflow.cs:84:18:84:19 | Entry | +| cflow.cs:86:9:87:33 | After if (...) ... | cflow.cs:84:18:84:19 | Entry | +| cflow.cs:86:9:87:33 | After if (...) ... | cflow.cs:86:9:87:33 | After if (...) ... | +| cflow.cs:86:9:87:33 | After if (...) ... | cflow.cs:86:13:86:21 | After ... != ... [false] | +| cflow.cs:86:9:87:33 | After if (...) ... | cflow.cs:86:13:86:21 | After ... != ... [true] | +| cflow.cs:86:9:87:33 | After if (...) ... | cflow.cs:86:13:86:37 | After ... && ... [false] | +| cflow.cs:86:9:87:33 | After if (...) ... | cflow.cs:86:26:86:37 | After ... > ... [false] | +| cflow.cs:86:9:87:33 | After if (...) ... | cflow.cs:86:26:86:37 | After ... > ... [true] | +| cflow.cs:86:13:86:21 | After ... != ... [false] | cflow.cs:86:13:86:21 | After ... != ... [false] | +| cflow.cs:86:13:86:21 | After ... != ... [true] | cflow.cs:86:13:86:21 | After ... != ... [true] | +| cflow.cs:86:13:86:37 | After ... && ... [false] | cflow.cs:86:13:86:21 | After ... != ... [false] | +| cflow.cs:86:13:86:37 | After ... && ... [false] | cflow.cs:86:13:86:37 | After ... && ... [false] | +| cflow.cs:86:13:86:37 | After ... && ... [false] | cflow.cs:86:26:86:37 | After ... > ... [false] | +| cflow.cs:86:26:86:37 | After ... > ... [false] | cflow.cs:86:26:86:37 | After ... > ... [false] | +| cflow.cs:86:26:86:37 | After ... > ... [true] | cflow.cs:86:26:86:37 | After ... > ... [true] | +| cflow.cs:90:18:90:19 | Entry | cflow.cs:90:18:90:19 | Entry | +| cflow.cs:90:18:90:19 | Exit | cflow.cs:90:18:90:19 | Exit | +| cflow.cs:92:13:92:27 | After call to method Equals [false] | cflow.cs:90:18:90:19 | Entry | +| cflow.cs:92:13:92:27 | After call to method Equals [false] | cflow.cs:92:13:92:27 | After call to method Equals [false] | +| cflow.cs:92:13:92:27 | After call to method Equals [true] | cflow.cs:92:13:92:27 | After call to method Equals [true] | +| cflow.cs:96:9:97:55 | After if (...) ... | cflow.cs:90:18:90:19 | Entry | +| cflow.cs:96:9:97:55 | After if (...) ... | cflow.cs:92:13:92:27 | After call to method Equals [false] | +| cflow.cs:96:9:97:55 | After if (...) ... | cflow.cs:96:9:97:55 | After if (...) ... | +| cflow.cs:96:9:97:55 | After if (...) ... | cflow.cs:96:13:96:25 | After ... != ... [false] | +| cflow.cs:96:9:97:55 | After if (...) ... | cflow.cs:96:13:96:25 | After ... != ... [true] | +| cflow.cs:96:13:96:25 | After ... != ... [false] | cflow.cs:96:13:96:25 | After ... != ... [false] | +| cflow.cs:96:13:96:25 | After ... != ... [true] | cflow.cs:96:13:96:25 | After ... != ... [true] | +| cflow.cs:99:9:100:42 | After if (...) ... | cflow.cs:90:18:90:19 | Entry | +| cflow.cs:99:9:100:42 | After if (...) ... | cflow.cs:92:13:92:27 | After call to method Equals [false] | +| cflow.cs:99:9:100:42 | After if (...) ... | cflow.cs:96:9:97:55 | After if (...) ... | +| cflow.cs:99:9:100:42 | After if (...) ... | cflow.cs:96:13:96:25 | After ... != ... [false] | +| cflow.cs:99:9:100:42 | After if (...) ... | cflow.cs:96:13:96:25 | After ... != ... [true] | +| cflow.cs:99:9:100:42 | After if (...) ... | cflow.cs:99:9:100:42 | After if (...) ... | +| cflow.cs:99:9:100:42 | After if (...) ... | cflow.cs:99:13:99:25 | After ... != ... [false] | +| cflow.cs:99:9:100:42 | After if (...) ... | cflow.cs:99:13:99:25 | After ... != ... [true] | +| cflow.cs:99:13:99:25 | After ... != ... [false] | cflow.cs:99:13:99:25 | After ... != ... [false] | +| cflow.cs:99:13:99:25 | After ... != ... [true] | cflow.cs:99:13:99:25 | After ... != ... [true] | +| cflow.cs:102:9:103:36 | After if (...) ... | cflow.cs:90:18:90:19 | Entry | +| cflow.cs:102:9:103:36 | After if (...) ... | cflow.cs:92:13:92:27 | After call to method Equals [false] | +| cflow.cs:102:9:103:36 | After if (...) ... | cflow.cs:96:9:97:55 | After if (...) ... | +| cflow.cs:102:9:103:36 | After if (...) ... | cflow.cs:96:13:96:25 | After ... != ... [false] | +| cflow.cs:102:9:103:36 | After if (...) ... | cflow.cs:96:13:96:25 | After ... != ... [true] | +| cflow.cs:102:9:103:36 | After if (...) ... | cflow.cs:99:9:100:42 | After if (...) ... | +| cflow.cs:102:9:103:36 | After if (...) ... | cflow.cs:99:13:99:25 | After ... != ... [false] | +| cflow.cs:102:9:103:36 | After if (...) ... | cflow.cs:99:13:99:25 | After ... != ... [true] | +| cflow.cs:102:9:103:36 | After if (...) ... | cflow.cs:102:9:103:36 | After if (...) ... | +| cflow.cs:102:9:103:36 | After if (...) ... | cflow.cs:102:13:102:29 | After ... != ... [false] | +| cflow.cs:102:9:103:36 | After if (...) ... | cflow.cs:102:13:102:29 | After ... != ... [true] | +| cflow.cs:102:13:102:29 | After ... != ... [false] | cflow.cs:102:13:102:29 | After ... != ... [false] | +| cflow.cs:102:13:102:29 | After ... != ... [true] | cflow.cs:102:13:102:29 | After ... != ... [true] | +| cflow.cs:106:18:106:19 | Entry | cflow.cs:106:18:106:19 | Entry | +| cflow.cs:108:13:108:21 | After ... != ... [false] | cflow.cs:106:18:106:19 | Entry | +| cflow.cs:108:13:108:21 | After ... != ... [false] | cflow.cs:108:13:108:21 | After ... != ... [false] | +| cflow.cs:108:13:108:21 | After ... != ... [true] | cflow.cs:108:13:108:21 | After ... != ... [true] | +| cflow.cs:110:13:113:13 | [LoopHeader] while (...) ... | cflow.cs:110:13:113:13 | [LoopHeader] while (...) ... | +| cflow.cs:119:20:119:21 | Entry | cflow.cs:119:20:119:21 | Entry | +| cflow.cs:127:19:127:21 | Entry | cflow.cs:127:19:127:21 | Entry | +| cflow.cs:127:32:127:44 | After ... == ... [false] | cflow.cs:127:32:127:44 | After ... == ... [false] | +| cflow.cs:127:32:127:44 | After ... == ... [true] | cflow.cs:127:32:127:44 | After ... == ... [true] | +| cflow.cs:127:32:127:57 | After ... ? ... : ... | cflow.cs:127:19:127:21 | Entry | +| cflow.cs:127:32:127:57 | After ... ? ... : ... | cflow.cs:127:32:127:44 | After ... == ... [false] | +| cflow.cs:127:32:127:57 | After ... ? ... : ... | cflow.cs:127:32:127:44 | After ... == ... [true] | +| cflow.cs:127:32:127:57 | After ... ? ... : ... | cflow.cs:127:32:127:57 | After ... ? ... : ... | +| cflow.cs:127:62:127:64 | Entry | cflow.cs:127:62:127:64 | Entry | +| cflow.cs:129:5:129:15 | Entry | cflow.cs:129:5:129:15 | Entry | +| cflow.cs:134:5:134:15 | Entry | cflow.cs:134:5:134:15 | Entry | +| cflow.cs:136:12:136:22 | Entry | cflow.cs:136:12:136:22 | Entry | +| cflow.cs:138:40:138:40 | Entry | cflow.cs:138:40:138:40 | Entry | +| cflow.cs:144:33:144:35 | Entry | cflow.cs:144:33:144:35 | Entry | +| cflow.cs:144:56:144:58 | Entry | cflow.cs:144:56:144:58 | Entry | +| cflow.cs:146:10:146:12 | Entry | cflow.cs:146:10:146:12 | Entry | +| cflow.cs:149:16:149:21 | After ... < ... [false] | cflow.cs:146:10:146:12 | Entry | +| cflow.cs:149:16:149:21 | After ... < ... [false] | cflow.cs:149:16:149:21 | After ... < ... [false] | +| cflow.cs:149:16:149:21 | After ... < ... [false] | cflow.cs:149:16:149:21 | After ... < ... [true] | +| cflow.cs:149:16:149:21 | After ... < ... [false] | cflow.cs:149:16:149:21 | Before ... < ... | +| cflow.cs:149:16:149:21 | After ... < ... [true] | cflow.cs:149:16:149:21 | After ... < ... [true] | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:146:10:146:12 | Entry | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:149:16:149:21 | After ... < ... [true] | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:149:16:149:21 | Before ... < ... | +| cflow.cs:153:9:157:9 | {...} | cflow.cs:146:10:146:12 | Entry | +| cflow.cs:153:9:157:9 | {...} | cflow.cs:149:16:149:21 | After ... < ... [false] | +| cflow.cs:153:9:157:9 | {...} | cflow.cs:149:16:149:21 | After ... < ... [true] | +| cflow.cs:153:9:157:9 | {...} | cflow.cs:149:16:149:21 | Before ... < ... | | cflow.cs:153:9:157:9 | {...} | cflow.cs:153:9:157:9 | {...} | -| cflow.cs:156:17:156:22 | break; | cflow.cs:146:10:146:12 | enter For | -| cflow.cs:156:17:156:22 | break; | cflow.cs:149:16:149:16 | access to local variable x | -| cflow.cs:156:17:156:22 | break; | cflow.cs:150:13:150:33 | ...; | -| cflow.cs:156:17:156:22 | break; | cflow.cs:152:9:157:9 | for (...;...;...) ... | -| cflow.cs:156:17:156:22 | break; | cflow.cs:152:18:152:18 | access to local variable x | -| cflow.cs:156:17:156:22 | break; | cflow.cs:153:9:157:9 | {...} | -| cflow.cs:156:17:156:22 | break; | cflow.cs:156:17:156:22 | break; | -| cflow.cs:160:9:165:9 | {...} | cflow.cs:146:10:146:12 | enter For | -| cflow.cs:160:9:165:9 | {...} | cflow.cs:149:16:149:16 | access to local variable x | -| cflow.cs:160:9:165:9 | {...} | cflow.cs:150:13:150:33 | ...; | -| cflow.cs:160:9:165:9 | {...} | cflow.cs:152:9:157:9 | for (...;...;...) ... | -| cflow.cs:160:9:165:9 | {...} | cflow.cs:152:18:152:18 | access to local variable x | +| cflow.cs:153:9:157:9 | {...} | cflow.cs:155:17:155:22 | After ... > ... [false] | +| cflow.cs:155:17:155:22 | After ... > ... [false] | cflow.cs:155:17:155:22 | After ... > ... [false] | +| cflow.cs:155:17:155:22 | After ... > ... [true] | cflow.cs:146:10:146:12 | Entry | +| cflow.cs:155:17:155:22 | After ... > ... [true] | cflow.cs:149:16:149:21 | After ... < ... [false] | +| cflow.cs:155:17:155:22 | After ... > ... [true] | cflow.cs:149:16:149:21 | After ... < ... [true] | +| cflow.cs:155:17:155:22 | After ... > ... [true] | cflow.cs:149:16:149:21 | Before ... < ... | +| cflow.cs:155:17:155:22 | After ... > ... [true] | cflow.cs:153:9:157:9 | {...} | +| cflow.cs:155:17:155:22 | After ... > ... [true] | cflow.cs:155:17:155:22 | After ... > ... [false] | +| cflow.cs:155:17:155:22 | After ... > ... [true] | cflow.cs:155:17:155:22 | After ... > ... [true] | +| cflow.cs:160:9:165:9 | {...} | cflow.cs:146:10:146:12 | Entry | +| cflow.cs:160:9:165:9 | {...} | cflow.cs:149:16:149:21 | After ... < ... [false] | +| cflow.cs:160:9:165:9 | {...} | cflow.cs:149:16:149:21 | After ... < ... [true] | +| cflow.cs:160:9:165:9 | {...} | cflow.cs:149:16:149:21 | Before ... < ... | | cflow.cs:160:9:165:9 | {...} | cflow.cs:153:9:157:9 | {...} | -| cflow.cs:160:9:165:9 | {...} | cflow.cs:156:17:156:22 | break; | +| cflow.cs:160:9:165:9 | {...} | cflow.cs:155:17:155:22 | After ... > ... [false] | +| cflow.cs:160:9:165:9 | {...} | cflow.cs:155:17:155:22 | After ... > ... [true] | | cflow.cs:160:9:165:9 | {...} | cflow.cs:160:9:165:9 | {...} | -| cflow.cs:164:17:164:22 | break; | cflow.cs:146:10:146:12 | enter For | -| cflow.cs:164:17:164:22 | break; | cflow.cs:149:16:149:16 | access to local variable x | -| cflow.cs:164:17:164:22 | break; | cflow.cs:150:13:150:33 | ...; | -| cflow.cs:164:17:164:22 | break; | cflow.cs:152:9:157:9 | for (...;...;...) ... | -| cflow.cs:164:17:164:22 | break; | cflow.cs:152:18:152:18 | access to local variable x | -| cflow.cs:164:17:164:22 | break; | cflow.cs:153:9:157:9 | {...} | -| cflow.cs:164:17:164:22 | break; | cflow.cs:156:17:156:22 | break; | -| cflow.cs:164:17:164:22 | break; | cflow.cs:160:9:165:9 | {...} | -| cflow.cs:164:17:164:22 | break; | cflow.cs:164:17:164:22 | break; | -| cflow.cs:167:16:167:16 | access to local variable x | cflow.cs:146:10:146:12 | enter For | -| cflow.cs:167:16:167:16 | access to local variable x | cflow.cs:149:16:149:16 | access to local variable x | -| cflow.cs:167:16:167:16 | access to local variable x | cflow.cs:150:13:150:33 | ...; | -| cflow.cs:167:16:167:16 | access to local variable x | cflow.cs:152:9:157:9 | for (...;...;...) ... | -| cflow.cs:167:16:167:16 | access to local variable x | cflow.cs:152:18:152:18 | access to local variable x | -| cflow.cs:167:16:167:16 | access to local variable x | cflow.cs:153:9:157:9 | {...} | -| cflow.cs:167:16:167:16 | access to local variable x | cflow.cs:156:17:156:22 | break; | -| cflow.cs:167:16:167:16 | access to local variable x | cflow.cs:160:9:165:9 | {...} | -| cflow.cs:167:16:167:16 | access to local variable x | cflow.cs:164:17:164:22 | break; | -| cflow.cs:167:16:167:16 | access to local variable x | cflow.cs:167:16:167:16 | access to local variable x | -| cflow.cs:167:16:167:16 | access to local variable x | cflow.cs:168:9:171:9 | {...} | -| cflow.cs:168:9:171:9 | {...} | cflow.cs:168:9:171:9 | {...} | -| cflow.cs:173:9:176:9 | for (...;...;...) ... | cflow.cs:146:10:146:12 | enter For | -| cflow.cs:173:9:176:9 | for (...;...;...) ... | cflow.cs:149:16:149:16 | access to local variable x | -| cflow.cs:173:9:176:9 | for (...;...;...) ... | cflow.cs:150:13:150:33 | ...; | -| cflow.cs:173:9:176:9 | for (...;...;...) ... | cflow.cs:152:9:157:9 | for (...;...;...) ... | -| cflow.cs:173:9:176:9 | for (...;...;...) ... | cflow.cs:152:18:152:18 | access to local variable x | -| cflow.cs:173:9:176:9 | for (...;...;...) ... | cflow.cs:153:9:157:9 | {...} | -| cflow.cs:173:9:176:9 | for (...;...;...) ... | cflow.cs:156:17:156:22 | break; | -| cflow.cs:173:9:176:9 | for (...;...;...) ... | cflow.cs:160:9:165:9 | {...} | -| cflow.cs:173:9:176:9 | for (...;...;...) ... | cflow.cs:164:17:164:22 | break; | -| cflow.cs:173:9:176:9 | for (...;...;...) ... | cflow.cs:167:16:167:16 | access to local variable x | -| cflow.cs:173:9:176:9 | for (...;...;...) ... | cflow.cs:168:9:171:9 | {...} | -| cflow.cs:173:9:176:9 | for (...;...;...) ... | cflow.cs:173:9:176:9 | for (...;...;...) ... | -| cflow.cs:173:32:173:32 | access to local variable i | cflow.cs:146:10:146:12 | enter For | -| cflow.cs:173:32:173:32 | access to local variable i | cflow.cs:149:16:149:16 | access to local variable x | -| cflow.cs:173:32:173:32 | access to local variable i | cflow.cs:150:13:150:33 | ...; | -| cflow.cs:173:32:173:32 | access to local variable i | cflow.cs:152:9:157:9 | for (...;...;...) ... | -| cflow.cs:173:32:173:32 | access to local variable i | cflow.cs:152:18:152:18 | access to local variable x | -| cflow.cs:173:32:173:32 | access to local variable i | cflow.cs:153:9:157:9 | {...} | -| cflow.cs:173:32:173:32 | access to local variable i | cflow.cs:156:17:156:22 | break; | -| cflow.cs:173:32:173:32 | access to local variable i | cflow.cs:160:9:165:9 | {...} | -| cflow.cs:173:32:173:32 | access to local variable i | cflow.cs:164:17:164:22 | break; | -| cflow.cs:173:32:173:32 | access to local variable i | cflow.cs:167:16:167:16 | access to local variable x | -| cflow.cs:173:32:173:32 | access to local variable i | cflow.cs:168:9:171:9 | {...} | -| cflow.cs:173:32:173:32 | access to local variable i | cflow.cs:173:9:176:9 | for (...;...;...) ... | -| cflow.cs:173:32:173:32 | access to local variable i | cflow.cs:173:32:173:32 | access to local variable i | -| cflow.cs:173:32:173:32 | access to local variable i | cflow.cs:174:9:176:9 | {...} | -| cflow.cs:174:9:176:9 | {...} | cflow.cs:174:9:176:9 | {...} | -| cflow.cs:179:10:179:16 | enter Lambdas | cflow.cs:179:10:179:16 | enter Lambdas | -| cflow.cs:181:28:181:37 | enter (...) => ... | cflow.cs:181:28:181:37 | enter (...) => ... | -| cflow.cs:182:28:182:61 | enter delegate(...) { ... } | cflow.cs:182:28:182:61 | enter delegate(...) { ... } | -| cflow.cs:185:10:185:18 | enter LogicalOr | cflow.cs:185:10:185:18 | enter LogicalOr | -| cflow.cs:187:13:187:28 | ... \|\| ... | cflow.cs:185:10:185:18 | enter LogicalOr | -| cflow.cs:187:13:187:28 | ... \|\| ... | cflow.cs:187:13:187:28 | ... \|\| ... | -| cflow.cs:187:13:187:28 | ... \|\| ... | cflow.cs:187:23:187:23 | 2 | -| cflow.cs:187:13:187:50 | ... \|\| ... | cflow.cs:185:10:185:18 | enter LogicalOr | -| cflow.cs:187:13:187:50 | ... \|\| ... | cflow.cs:187:13:187:28 | ... \|\| ... | -| cflow.cs:187:13:187:50 | ... \|\| ... | cflow.cs:187:13:187:50 | ... \|\| ... | -| cflow.cs:187:13:187:50 | ... \|\| ... | cflow.cs:187:23:187:23 | 2 | -| cflow.cs:187:13:187:50 | ... \|\| ... | cflow.cs:187:34:187:34 | 1 | -| cflow.cs:187:13:187:50 | ... \|\| ... | cflow.cs:187:34:187:49 | ... && ... | -| cflow.cs:187:23:187:23 | 2 | cflow.cs:185:10:185:18 | enter LogicalOr | -| cflow.cs:187:23:187:23 | 2 | cflow.cs:187:23:187:23 | 2 | -| cflow.cs:187:34:187:34 | 1 | cflow.cs:185:10:185:18 | enter LogicalOr | -| cflow.cs:187:34:187:34 | 1 | cflow.cs:187:13:187:28 | ... \|\| ... | -| cflow.cs:187:34:187:34 | 1 | cflow.cs:187:23:187:23 | 2 | -| cflow.cs:187:34:187:34 | 1 | cflow.cs:187:34:187:34 | 1 | -| cflow.cs:187:34:187:49 | ... && ... | cflow.cs:185:10:185:18 | enter LogicalOr | -| cflow.cs:187:34:187:49 | ... && ... | cflow.cs:187:13:187:28 | ... \|\| ... | -| cflow.cs:187:34:187:49 | ... && ... | cflow.cs:187:23:187:23 | 2 | -| cflow.cs:187:34:187:49 | ... && ... | cflow.cs:187:34:187:34 | 1 | -| cflow.cs:187:34:187:49 | ... && ... | cflow.cs:187:34:187:49 | ... && ... | -| cflow.cs:190:13:190:52 | ...; | cflow.cs:185:10:185:18 | enter LogicalOr | -| cflow.cs:190:13:190:52 | ...; | cflow.cs:187:13:187:28 | ... \|\| ... | -| cflow.cs:190:13:190:52 | ...; | cflow.cs:187:13:187:50 | ... \|\| ... | -| cflow.cs:190:13:190:52 | ...; | cflow.cs:187:23:187:23 | 2 | -| cflow.cs:190:13:190:52 | ...; | cflow.cs:187:34:187:34 | 1 | -| cflow.cs:190:13:190:52 | ...; | cflow.cs:187:34:187:49 | ... && ... | -| cflow.cs:190:13:190:52 | ...; | cflow.cs:190:13:190:52 | ...; | -| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:193:10:193:17 | enter Booleans | -| cflow.cs:193:10:193:17 | exit Booleans | cflow.cs:193:10:193:17 | exit Booleans | -| cflow.cs:193:10:193:17 | exit Booleans (normal) | cflow.cs:193:10:193:17 | enter Booleans | -| cflow.cs:193:10:193:17 | exit Booleans (normal) | cflow.cs:193:10:193:17 | exit Booleans (normal) | -| cflow.cs:193:10:193:17 | exit Booleans (normal) | cflow.cs:195:17:195:56 | ... && ... | -| cflow.cs:193:10:193:17 | exit Booleans (normal) | cflow.cs:195:39:195:43 | this access | -| cflow.cs:193:10:193:17 | exit Booleans (normal) | cflow.cs:197:13:197:47 | [false] !... | -| cflow.cs:193:10:193:17 | exit Booleans (normal) | cflow.cs:197:13:197:47 | [true] !... | -| cflow.cs:193:10:193:17 | exit Booleans (normal) | cflow.cs:197:15:197:46 | [false] ... ? ... : ... | -| cflow.cs:193:10:193:17 | exit Booleans (normal) | cflow.cs:197:15:197:46 | [true] ... ? ... : ... | -| cflow.cs:193:10:193:17 | exit Booleans (normal) | cflow.cs:197:35:197:39 | false | -| cflow.cs:193:10:193:17 | exit Booleans (normal) | cflow.cs:197:43:197:46 | true | -| cflow.cs:193:10:193:17 | exit Booleans (normal) | cflow.cs:198:13:198:49 | ...; | -| cflow.cs:193:10:193:17 | exit Booleans (normal) | cflow.cs:198:17:198:48 | ... ? ... : ... | -| cflow.cs:193:10:193:17 | exit Booleans (normal) | cflow.cs:198:37:198:41 | false | -| cflow.cs:193:10:193:17 | exit Booleans (normal) | cflow.cs:198:45:198:48 | true | -| cflow.cs:193:10:193:17 | exit Booleans (normal) | cflow.cs:200:9:205:9 | if (...) ... | -| cflow.cs:193:10:193:17 | exit Booleans (normal) | cflow.cs:200:13:200:32 | [false] !... | -| cflow.cs:193:10:193:17 | exit Booleans (normal) | cflow.cs:200:13:200:62 | [false] ... \|\| ... | -| cflow.cs:193:10:193:17 | exit Booleans (normal) | cflow.cs:200:37:200:62 | [false] !... | -| cflow.cs:193:10:193:17 | exit Booleans (normal) | cflow.cs:200:38:200:62 | [true] !... | -| cflow.cs:193:10:193:17 | exit Booleans (normal) | cflow.cs:200:40:200:44 | this access | -| cflow.cs:193:10:193:17 | exit Booleans (normal) | cflow.cs:200:40:200:61 | [false] ... && ... | -| cflow.cs:193:10:193:17 | exit Booleans (normal) | cflow.cs:200:61:200:61 | access to local variable b | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:193:10:193:17 | enter Booleans | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:195:17:195:56 | ... && ... | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:195:39:195:43 | this access | -| cflow.cs:195:39:195:43 | this access | cflow.cs:195:39:195:43 | this access | -| cflow.cs:197:13:197:47 | [false] !... | cflow.cs:197:13:197:47 | [false] !... | -| cflow.cs:197:13:197:47 | [false] !... | cflow.cs:197:15:197:46 | [true] ... ? ... : ... | -| cflow.cs:197:13:197:47 | [false] !... | cflow.cs:197:43:197:46 | true | -| cflow.cs:197:13:197:47 | [true] !... | cflow.cs:197:13:197:47 | [true] !... | -| cflow.cs:197:13:197:47 | [true] !... | cflow.cs:197:15:197:46 | [false] ... ? ... : ... | -| cflow.cs:197:13:197:47 | [true] !... | cflow.cs:197:35:197:39 | false | -| cflow.cs:197:15:197:46 | [false] ... ? ... : ... | cflow.cs:197:15:197:46 | [false] ... ? ... : ... | -| cflow.cs:197:15:197:46 | [false] ... ? ... : ... | cflow.cs:197:35:197:39 | false | -| cflow.cs:197:15:197:46 | [true] ... ? ... : ... | cflow.cs:197:15:197:46 | [true] ... ? ... : ... | -| cflow.cs:197:15:197:46 | [true] ... ? ... : ... | cflow.cs:197:43:197:46 | true | -| cflow.cs:197:35:197:39 | false | cflow.cs:197:35:197:39 | false | -| cflow.cs:197:43:197:46 | true | cflow.cs:197:43:197:46 | true | -| cflow.cs:198:13:198:49 | ...; | cflow.cs:197:13:197:47 | [true] !... | -| cflow.cs:198:13:198:49 | ...; | cflow.cs:197:15:197:46 | [false] ... ? ... : ... | -| cflow.cs:198:13:198:49 | ...; | cflow.cs:197:35:197:39 | false | -| cflow.cs:198:13:198:49 | ...; | cflow.cs:198:13:198:49 | ...; | -| cflow.cs:198:17:198:48 | ... ? ... : ... | cflow.cs:197:13:197:47 | [true] !... | -| cflow.cs:198:17:198:48 | ... ? ... : ... | cflow.cs:197:15:197:46 | [false] ... ? ... : ... | -| cflow.cs:198:17:198:48 | ... ? ... : ... | cflow.cs:197:35:197:39 | false | -| cflow.cs:198:17:198:48 | ... ? ... : ... | cflow.cs:198:13:198:49 | ...; | -| cflow.cs:198:17:198:48 | ... ? ... : ... | cflow.cs:198:17:198:48 | ... ? ... : ... | -| cflow.cs:198:17:198:48 | ... ? ... : ... | cflow.cs:198:37:198:41 | false | -| cflow.cs:198:17:198:48 | ... ? ... : ... | cflow.cs:198:45:198:48 | true | -| cflow.cs:198:37:198:41 | false | cflow.cs:198:37:198:41 | false | -| cflow.cs:198:45:198:48 | true | cflow.cs:198:45:198:48 | true | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:193:10:193:17 | enter Booleans | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:195:17:195:56 | ... && ... | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:195:39:195:43 | this access | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:197:13:197:47 | [false] !... | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:197:13:197:47 | [true] !... | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:197:15:197:46 | [false] ... ? ... : ... | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:197:15:197:46 | [true] ... ? ... : ... | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:197:35:197:39 | false | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:197:43:197:46 | true | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:198:13:198:49 | ...; | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:198:17:198:48 | ... ? ... : ... | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:198:37:198:41 | false | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:198:45:198:48 | true | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:200:9:205:9 | if (...) ... | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:193:10:193:17 | enter Booleans | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:195:17:195:56 | ... && ... | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:195:39:195:43 | this access | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:197:13:197:47 | [false] !... | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:197:13:197:47 | [true] !... | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:197:15:197:46 | [false] ... ? ... : ... | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:197:15:197:46 | [true] ... ? ... : ... | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:197:35:197:39 | false | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:197:43:197:46 | true | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:198:13:198:49 | ...; | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:198:17:198:48 | ... ? ... : ... | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:198:37:198:41 | false | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:198:45:198:48 | true | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:200:9:205:9 | if (...) ... | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:200:13:200:32 | [false] !... | -| cflow.cs:200:13:200:32 | [true] !... | cflow.cs:200:13:200:32 | [true] !... | -| cflow.cs:200:13:200:62 | [false] ... \|\| ... | cflow.cs:193:10:193:17 | enter Booleans | -| cflow.cs:200:13:200:62 | [false] ... \|\| ... | cflow.cs:195:17:195:56 | ... && ... | -| cflow.cs:200:13:200:62 | [false] ... \|\| ... | cflow.cs:195:39:195:43 | this access | -| cflow.cs:200:13:200:62 | [false] ... \|\| ... | cflow.cs:197:13:197:47 | [false] !... | -| cflow.cs:200:13:200:62 | [false] ... \|\| ... | cflow.cs:197:13:197:47 | [true] !... | -| cflow.cs:200:13:200:62 | [false] ... \|\| ... | cflow.cs:197:15:197:46 | [false] ... ? ... : ... | -| cflow.cs:200:13:200:62 | [false] ... \|\| ... | cflow.cs:197:15:197:46 | [true] ... ? ... : ... | -| cflow.cs:200:13:200:62 | [false] ... \|\| ... | cflow.cs:197:35:197:39 | false | -| cflow.cs:200:13:200:62 | [false] ... \|\| ... | cflow.cs:197:43:197:46 | true | -| cflow.cs:200:13:200:62 | [false] ... \|\| ... | cflow.cs:198:13:198:49 | ...; | -| cflow.cs:200:13:200:62 | [false] ... \|\| ... | cflow.cs:198:17:198:48 | ... ? ... : ... | -| cflow.cs:200:13:200:62 | [false] ... \|\| ... | cflow.cs:198:37:198:41 | false | -| cflow.cs:200:13:200:62 | [false] ... \|\| ... | cflow.cs:198:45:198:48 | true | -| cflow.cs:200:13:200:62 | [false] ... \|\| ... | cflow.cs:200:9:205:9 | if (...) ... | -| cflow.cs:200:13:200:62 | [false] ... \|\| ... | cflow.cs:200:13:200:32 | [false] !... | -| cflow.cs:200:13:200:62 | [false] ... \|\| ... | cflow.cs:200:13:200:62 | [false] ... \|\| ... | -| cflow.cs:200:13:200:62 | [false] ... \|\| ... | cflow.cs:200:37:200:62 | [false] !... | -| cflow.cs:200:13:200:62 | [false] ... \|\| ... | cflow.cs:200:38:200:62 | [true] !... | -| cflow.cs:200:13:200:62 | [false] ... \|\| ... | cflow.cs:200:40:200:44 | this access | -| cflow.cs:200:13:200:62 | [false] ... \|\| ... | cflow.cs:200:40:200:61 | [false] ... && ... | -| cflow.cs:200:13:200:62 | [false] ... \|\| ... | cflow.cs:200:61:200:61 | access to local variable b | -| cflow.cs:200:13:200:62 | [true] ... \|\| ... | cflow.cs:200:13:200:62 | [true] ... \|\| ... | -| cflow.cs:200:37:200:62 | [false] !... | cflow.cs:193:10:193:17 | enter Booleans | -| cflow.cs:200:37:200:62 | [false] !... | cflow.cs:195:17:195:56 | ... && ... | -| cflow.cs:200:37:200:62 | [false] !... | cflow.cs:195:39:195:43 | this access | -| cflow.cs:200:37:200:62 | [false] !... | cflow.cs:197:13:197:47 | [false] !... | -| cflow.cs:200:37:200:62 | [false] !... | cflow.cs:197:13:197:47 | [true] !... | -| cflow.cs:200:37:200:62 | [false] !... | cflow.cs:197:15:197:46 | [false] ... ? ... : ... | -| cflow.cs:200:37:200:62 | [false] !... | cflow.cs:197:15:197:46 | [true] ... ? ... : ... | -| cflow.cs:200:37:200:62 | [false] !... | cflow.cs:197:35:197:39 | false | -| cflow.cs:200:37:200:62 | [false] !... | cflow.cs:197:43:197:46 | true | -| cflow.cs:200:37:200:62 | [false] !... | cflow.cs:198:13:198:49 | ...; | -| cflow.cs:200:37:200:62 | [false] !... | cflow.cs:198:17:198:48 | ... ? ... : ... | -| cflow.cs:200:37:200:62 | [false] !... | cflow.cs:198:37:198:41 | false | -| cflow.cs:200:37:200:62 | [false] !... | cflow.cs:198:45:198:48 | true | -| cflow.cs:200:37:200:62 | [false] !... | cflow.cs:200:9:205:9 | if (...) ... | -| cflow.cs:200:37:200:62 | [false] !... | cflow.cs:200:13:200:32 | [false] !... | -| cflow.cs:200:37:200:62 | [false] !... | cflow.cs:200:37:200:62 | [false] !... | -| cflow.cs:200:37:200:62 | [false] !... | cflow.cs:200:38:200:62 | [true] !... | -| cflow.cs:200:37:200:62 | [false] !... | cflow.cs:200:40:200:44 | this access | -| cflow.cs:200:37:200:62 | [false] !... | cflow.cs:200:40:200:61 | [false] ... && ... | -| cflow.cs:200:37:200:62 | [false] !... | cflow.cs:200:61:200:61 | access to local variable b | -| cflow.cs:200:37:200:62 | [true] !... | cflow.cs:200:37:200:62 | [true] !... | -| cflow.cs:200:38:200:62 | [false] !... | cflow.cs:200:38:200:62 | [false] !... | -| cflow.cs:200:38:200:62 | [true] !... | cflow.cs:193:10:193:17 | enter Booleans | -| cflow.cs:200:38:200:62 | [true] !... | cflow.cs:195:17:195:56 | ... && ... | -| cflow.cs:200:38:200:62 | [true] !... | cflow.cs:195:39:195:43 | this access | -| cflow.cs:200:38:200:62 | [true] !... | cflow.cs:197:13:197:47 | [false] !... | -| cflow.cs:200:38:200:62 | [true] !... | cflow.cs:197:13:197:47 | [true] !... | -| cflow.cs:200:38:200:62 | [true] !... | cflow.cs:197:15:197:46 | [false] ... ? ... : ... | -| cflow.cs:200:38:200:62 | [true] !... | cflow.cs:197:15:197:46 | [true] ... ? ... : ... | -| cflow.cs:200:38:200:62 | [true] !... | cflow.cs:197:35:197:39 | false | -| cflow.cs:200:38:200:62 | [true] !... | cflow.cs:197:43:197:46 | true | -| cflow.cs:200:38:200:62 | [true] !... | cflow.cs:198:13:198:49 | ...; | -| cflow.cs:200:38:200:62 | [true] !... | cflow.cs:198:17:198:48 | ... ? ... : ... | -| cflow.cs:200:38:200:62 | [true] !... | cflow.cs:198:37:198:41 | false | -| cflow.cs:200:38:200:62 | [true] !... | cflow.cs:198:45:198:48 | true | -| cflow.cs:200:38:200:62 | [true] !... | cflow.cs:200:9:205:9 | if (...) ... | -| cflow.cs:200:38:200:62 | [true] !... | cflow.cs:200:13:200:32 | [false] !... | -| cflow.cs:200:38:200:62 | [true] !... | cflow.cs:200:38:200:62 | [true] !... | -| cflow.cs:200:38:200:62 | [true] !... | cflow.cs:200:40:200:44 | this access | -| cflow.cs:200:38:200:62 | [true] !... | cflow.cs:200:40:200:61 | [false] ... && ... | -| cflow.cs:200:38:200:62 | [true] !... | cflow.cs:200:61:200:61 | access to local variable b | -| cflow.cs:200:40:200:44 | this access | cflow.cs:193:10:193:17 | enter Booleans | -| cflow.cs:200:40:200:44 | this access | cflow.cs:195:17:195:56 | ... && ... | -| cflow.cs:200:40:200:44 | this access | cflow.cs:195:39:195:43 | this access | -| cflow.cs:200:40:200:44 | this access | cflow.cs:197:13:197:47 | [false] !... | -| cflow.cs:200:40:200:44 | this access | cflow.cs:197:13:197:47 | [true] !... | -| cflow.cs:200:40:200:44 | this access | cflow.cs:197:15:197:46 | [false] ... ? ... : ... | -| cflow.cs:200:40:200:44 | this access | cflow.cs:197:15:197:46 | [true] ... ? ... : ... | -| cflow.cs:200:40:200:44 | this access | cflow.cs:197:35:197:39 | false | -| cflow.cs:200:40:200:44 | this access | cflow.cs:197:43:197:46 | true | -| cflow.cs:200:40:200:44 | this access | cflow.cs:198:13:198:49 | ...; | -| cflow.cs:200:40:200:44 | this access | cflow.cs:198:17:198:48 | ... ? ... : ... | -| cflow.cs:200:40:200:44 | this access | cflow.cs:198:37:198:41 | false | -| cflow.cs:200:40:200:44 | this access | cflow.cs:198:45:198:48 | true | -| cflow.cs:200:40:200:44 | this access | cflow.cs:200:9:205:9 | if (...) ... | -| cflow.cs:200:40:200:44 | this access | cflow.cs:200:13:200:32 | [false] !... | -| cflow.cs:200:40:200:44 | this access | cflow.cs:200:40:200:44 | this access | -| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:193:10:193:17 | enter Booleans | -| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:195:17:195:56 | ... && ... | -| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:195:39:195:43 | this access | -| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:197:13:197:47 | [false] !... | -| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:197:13:197:47 | [true] !... | -| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:197:15:197:46 | [false] ... ? ... : ... | -| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:197:15:197:46 | [true] ... ? ... : ... | -| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:197:35:197:39 | false | -| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:197:43:197:46 | true | -| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:198:13:198:49 | ...; | -| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:198:17:198:48 | ... ? ... : ... | -| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:198:37:198:41 | false | -| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:198:45:198:48 | true | -| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:200:9:205:9 | if (...) ... | -| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:200:13:200:32 | [false] !... | -| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:200:40:200:44 | this access | -| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:200:40:200:61 | [false] ... && ... | -| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:200:61:200:61 | access to local variable b | -| cflow.cs:200:40:200:61 | [true] ... && ... | cflow.cs:200:40:200:61 | [true] ... && ... | -| cflow.cs:200:61:200:61 | access to local variable b | cflow.cs:200:61:200:61 | access to local variable b | -| cflow.cs:201:9:205:9 | {...} | cflow.cs:201:9:205:9 | {...} | -| cflow.cs:208:10:208:11 | enter Do | cflow.cs:208:10:208:11 | enter Do | -| cflow.cs:208:10:208:11 | exit Do (normal) | cflow.cs:208:10:208:11 | enter Do | -| cflow.cs:208:10:208:11 | exit Do (normal) | cflow.cs:208:10:208:11 | exit Do (normal) | -| cflow.cs:208:10:208:11 | exit Do (normal) | cflow.cs:211:9:221:9 | {...} | -| cflow.cs:208:10:208:11 | exit Do (normal) | cflow.cs:214:13:216:13 | {...} | -| cflow.cs:208:10:208:11 | exit Do (normal) | cflow.cs:217:13:220:13 | if (...) ... | -| cflow.cs:208:10:208:11 | exit Do (normal) | cflow.cs:218:13:220:13 | {...} | -| cflow.cs:208:10:208:11 | exit Do (normal) | cflow.cs:221:18:221:22 | this access | -| cflow.cs:211:9:221:9 | {...} | cflow.cs:208:10:208:11 | enter Do | +| cflow.cs:160:9:165:9 | {...} | cflow.cs:163:17:163:22 | After ... > ... [false] | +| cflow.cs:163:17:163:22 | After ... > ... [false] | cflow.cs:163:17:163:22 | After ... > ... [false] | +| cflow.cs:163:17:163:22 | After ... > ... [true] | cflow.cs:146:10:146:12 | Entry | +| cflow.cs:163:17:163:22 | After ... > ... [true] | cflow.cs:149:16:149:21 | After ... < ... [false] | +| cflow.cs:163:17:163:22 | After ... > ... [true] | cflow.cs:149:16:149:21 | After ... < ... [true] | +| cflow.cs:163:17:163:22 | After ... > ... [true] | cflow.cs:149:16:149:21 | Before ... < ... | +| cflow.cs:163:17:163:22 | After ... > ... [true] | cflow.cs:153:9:157:9 | {...} | +| cflow.cs:163:17:163:22 | After ... > ... [true] | cflow.cs:155:17:155:22 | After ... > ... [false] | +| cflow.cs:163:17:163:22 | After ... > ... [true] | cflow.cs:155:17:155:22 | After ... > ... [true] | +| cflow.cs:163:17:163:22 | After ... > ... [true] | cflow.cs:160:9:165:9 | {...} | +| cflow.cs:163:17:163:22 | After ... > ... [true] | cflow.cs:163:17:163:22 | After ... > ... [false] | +| cflow.cs:163:17:163:22 | After ... > ... [true] | cflow.cs:163:17:163:22 | After ... > ... [true] | +| cflow.cs:167:16:167:21 | After ... < ... [false] | cflow.cs:146:10:146:12 | Entry | +| cflow.cs:167:16:167:21 | After ... < ... [false] | cflow.cs:149:16:149:21 | After ... < ... [false] | +| cflow.cs:167:16:167:21 | After ... < ... [false] | cflow.cs:149:16:149:21 | After ... < ... [true] | +| cflow.cs:167:16:167:21 | After ... < ... [false] | cflow.cs:149:16:149:21 | Before ... < ... | +| cflow.cs:167:16:167:21 | After ... < ... [false] | cflow.cs:153:9:157:9 | {...} | +| cflow.cs:167:16:167:21 | After ... < ... [false] | cflow.cs:155:17:155:22 | After ... > ... [false] | +| cflow.cs:167:16:167:21 | After ... < ... [false] | cflow.cs:155:17:155:22 | After ... > ... [true] | +| cflow.cs:167:16:167:21 | After ... < ... [false] | cflow.cs:160:9:165:9 | {...} | +| cflow.cs:167:16:167:21 | After ... < ... [false] | cflow.cs:163:17:163:22 | After ... > ... [false] | +| cflow.cs:167:16:167:21 | After ... < ... [false] | cflow.cs:163:17:163:22 | After ... > ... [true] | +| cflow.cs:167:16:167:21 | After ... < ... [false] | cflow.cs:167:16:167:21 | After ... < ... [false] | +| cflow.cs:167:16:167:21 | After ... < ... [false] | cflow.cs:167:16:167:21 | After ... < ... [true] | +| cflow.cs:167:16:167:21 | After ... < ... [false] | cflow.cs:167:16:167:21 | Before ... < ... | +| cflow.cs:167:16:167:21 | After ... < ... [true] | cflow.cs:167:16:167:21 | After ... < ... [true] | +| cflow.cs:167:16:167:21 | Before ... < ... | cflow.cs:146:10:146:12 | Entry | +| cflow.cs:167:16:167:21 | Before ... < ... | cflow.cs:149:16:149:21 | After ... < ... [false] | +| cflow.cs:167:16:167:21 | Before ... < ... | cflow.cs:149:16:149:21 | After ... < ... [true] | +| cflow.cs:167:16:167:21 | Before ... < ... | cflow.cs:149:16:149:21 | Before ... < ... | +| cflow.cs:167:16:167:21 | Before ... < ... | cflow.cs:153:9:157:9 | {...} | +| cflow.cs:167:16:167:21 | Before ... < ... | cflow.cs:155:17:155:22 | After ... > ... [false] | +| cflow.cs:167:16:167:21 | Before ... < ... | cflow.cs:155:17:155:22 | After ... > ... [true] | +| cflow.cs:167:16:167:21 | Before ... < ... | cflow.cs:160:9:165:9 | {...} | +| cflow.cs:167:16:167:21 | Before ... < ... | cflow.cs:163:17:163:22 | After ... > ... [false] | +| cflow.cs:167:16:167:21 | Before ... < ... | cflow.cs:163:17:163:22 | After ... > ... [true] | +| cflow.cs:167:16:167:21 | Before ... < ... | cflow.cs:167:16:167:21 | After ... < ... [true] | +| cflow.cs:167:16:167:21 | Before ... < ... | cflow.cs:167:16:167:21 | Before ... < ... | +| cflow.cs:173:32:173:41 | After ... < ... [false] | cflow.cs:146:10:146:12 | Entry | +| cflow.cs:173:32:173:41 | After ... < ... [false] | cflow.cs:149:16:149:21 | After ... < ... [false] | +| cflow.cs:173:32:173:41 | After ... < ... [false] | cflow.cs:149:16:149:21 | After ... < ... [true] | +| cflow.cs:173:32:173:41 | After ... < ... [false] | cflow.cs:149:16:149:21 | Before ... < ... | +| cflow.cs:173:32:173:41 | After ... < ... [false] | cflow.cs:153:9:157:9 | {...} | +| cflow.cs:173:32:173:41 | After ... < ... [false] | cflow.cs:155:17:155:22 | After ... > ... [false] | +| cflow.cs:173:32:173:41 | After ... < ... [false] | cflow.cs:155:17:155:22 | After ... > ... [true] | +| cflow.cs:173:32:173:41 | After ... < ... [false] | cflow.cs:160:9:165:9 | {...} | +| cflow.cs:173:32:173:41 | After ... < ... [false] | cflow.cs:163:17:163:22 | After ... > ... [false] | +| cflow.cs:173:32:173:41 | After ... < ... [false] | cflow.cs:163:17:163:22 | After ... > ... [true] | +| cflow.cs:173:32:173:41 | After ... < ... [false] | cflow.cs:167:16:167:21 | After ... < ... [false] | +| cflow.cs:173:32:173:41 | After ... < ... [false] | cflow.cs:167:16:167:21 | After ... < ... [true] | +| cflow.cs:173:32:173:41 | After ... < ... [false] | cflow.cs:167:16:167:21 | Before ... < ... | +| cflow.cs:173:32:173:41 | After ... < ... [false] | cflow.cs:173:32:173:41 | After ... < ... [false] | +| cflow.cs:173:32:173:41 | After ... < ... [false] | cflow.cs:173:32:173:41 | After ... < ... [true] | +| cflow.cs:173:32:173:41 | After ... < ... [false] | cflow.cs:173:32:173:41 | Before ... < ... | +| cflow.cs:173:32:173:41 | After ... < ... [true] | cflow.cs:173:32:173:41 | After ... < ... [true] | +| cflow.cs:173:32:173:41 | Before ... < ... | cflow.cs:146:10:146:12 | Entry | +| cflow.cs:173:32:173:41 | Before ... < ... | cflow.cs:149:16:149:21 | After ... < ... [false] | +| cflow.cs:173:32:173:41 | Before ... < ... | cflow.cs:149:16:149:21 | After ... < ... [true] | +| cflow.cs:173:32:173:41 | Before ... < ... | cflow.cs:149:16:149:21 | Before ... < ... | +| cflow.cs:173:32:173:41 | Before ... < ... | cflow.cs:153:9:157:9 | {...} | +| cflow.cs:173:32:173:41 | Before ... < ... | cflow.cs:155:17:155:22 | After ... > ... [false] | +| cflow.cs:173:32:173:41 | Before ... < ... | cflow.cs:155:17:155:22 | After ... > ... [true] | +| cflow.cs:173:32:173:41 | Before ... < ... | cflow.cs:160:9:165:9 | {...} | +| cflow.cs:173:32:173:41 | Before ... < ... | cflow.cs:163:17:163:22 | After ... > ... [false] | +| cflow.cs:173:32:173:41 | Before ... < ... | cflow.cs:163:17:163:22 | After ... > ... [true] | +| cflow.cs:173:32:173:41 | Before ... < ... | cflow.cs:167:16:167:21 | After ... < ... [false] | +| cflow.cs:173:32:173:41 | Before ... < ... | cflow.cs:167:16:167:21 | After ... < ... [true] | +| cflow.cs:173:32:173:41 | Before ... < ... | cflow.cs:167:16:167:21 | Before ... < ... | +| cflow.cs:173:32:173:41 | Before ... < ... | cflow.cs:173:32:173:41 | After ... < ... [true] | +| cflow.cs:173:32:173:41 | Before ... < ... | cflow.cs:173:32:173:41 | Before ... < ... | +| cflow.cs:179:10:179:16 | Entry | cflow.cs:179:10:179:16 | Entry | +| cflow.cs:181:28:181:37 | Entry | cflow.cs:181:28:181:37 | Entry | +| cflow.cs:182:28:182:61 | Entry | cflow.cs:182:28:182:61 | Entry | +| cflow.cs:185:10:185:18 | Entry | cflow.cs:185:10:185:18 | Entry | +| cflow.cs:187:9:190:52 | After if (...) ... | cflow.cs:185:10:185:18 | Entry | +| cflow.cs:187:9:190:52 | After if (...) ... | cflow.cs:187:9:190:52 | After if (...) ... | +| cflow.cs:187:9:190:52 | After if (...) ... | cflow.cs:187:13:187:18 | After ... == ... [false] | +| cflow.cs:187:9:190:52 | After if (...) ... | cflow.cs:187:13:187:18 | After ... == ... [true] | +| cflow.cs:187:9:190:52 | After if (...) ... | cflow.cs:187:13:187:28 | After ... \|\| ... [true] | +| cflow.cs:187:9:190:52 | After if (...) ... | cflow.cs:187:13:187:50 | After ... \|\| ... [true] | +| cflow.cs:187:9:190:52 | After if (...) ... | cflow.cs:187:23:187:28 | After ... == ... [false] | +| cflow.cs:187:9:190:52 | After if (...) ... | cflow.cs:187:23:187:28 | After ... == ... [true] | +| cflow.cs:187:9:190:52 | After if (...) ... | cflow.cs:187:34:187:39 | After ... == ... [false] | +| cflow.cs:187:9:190:52 | After if (...) ... | cflow.cs:187:34:187:39 | After ... == ... [true] | +| cflow.cs:187:9:190:52 | After if (...) ... | cflow.cs:187:34:187:49 | After ... && ... [false] | +| cflow.cs:187:9:190:52 | After if (...) ... | cflow.cs:187:44:187:49 | After ... == ... [false] | +| cflow.cs:187:9:190:52 | After if (...) ... | cflow.cs:187:44:187:49 | After ... == ... [true] | +| cflow.cs:187:13:187:18 | After ... == ... [false] | cflow.cs:187:13:187:18 | After ... == ... [false] | +| cflow.cs:187:13:187:18 | After ... == ... [true] | cflow.cs:187:13:187:18 | After ... == ... [true] | +| cflow.cs:187:13:187:28 | After ... \|\| ... [true] | cflow.cs:187:13:187:18 | After ... == ... [true] | +| cflow.cs:187:13:187:28 | After ... \|\| ... [true] | cflow.cs:187:13:187:28 | After ... \|\| ... [true] | +| cflow.cs:187:13:187:28 | After ... \|\| ... [true] | cflow.cs:187:23:187:28 | After ... == ... [true] | +| cflow.cs:187:13:187:50 | After ... \|\| ... [true] | cflow.cs:187:13:187:18 | After ... == ... [true] | +| cflow.cs:187:13:187:50 | After ... \|\| ... [true] | cflow.cs:187:13:187:28 | After ... \|\| ... [true] | +| cflow.cs:187:13:187:50 | After ... \|\| ... [true] | cflow.cs:187:13:187:50 | After ... \|\| ... [true] | +| cflow.cs:187:13:187:50 | After ... \|\| ... [true] | cflow.cs:187:23:187:28 | After ... == ... [true] | +| cflow.cs:187:13:187:50 | After ... \|\| ... [true] | cflow.cs:187:44:187:49 | After ... == ... [true] | +| cflow.cs:187:23:187:28 | After ... == ... [false] | cflow.cs:187:23:187:28 | After ... == ... [false] | +| cflow.cs:187:23:187:28 | After ... == ... [true] | cflow.cs:187:23:187:28 | After ... == ... [true] | +| cflow.cs:187:34:187:39 | After ... == ... [false] | cflow.cs:187:34:187:39 | After ... == ... [false] | +| cflow.cs:187:34:187:39 | After ... == ... [true] | cflow.cs:187:34:187:39 | After ... == ... [true] | +| cflow.cs:187:34:187:49 | After ... && ... [false] | cflow.cs:187:34:187:39 | After ... == ... [false] | +| cflow.cs:187:34:187:49 | After ... && ... [false] | cflow.cs:187:34:187:49 | After ... && ... [false] | +| cflow.cs:187:34:187:49 | After ... && ... [false] | cflow.cs:187:44:187:49 | After ... == ... [false] | +| cflow.cs:187:44:187:49 | After ... == ... [false] | cflow.cs:187:44:187:49 | After ... == ... [false] | +| cflow.cs:187:44:187:49 | After ... == ... [true] | cflow.cs:187:44:187:49 | After ... == ... [true] | +| cflow.cs:193:10:193:17 | Entry | cflow.cs:193:10:193:17 | Entry | +| cflow.cs:193:10:193:17 | Exit | cflow.cs:193:10:193:17 | Exit | +| cflow.cs:195:17:195:32 | After ... > ... [false] | cflow.cs:195:17:195:32 | After ... > ... [false] | +| cflow.cs:195:17:195:32 | After ... > ... [true] | cflow.cs:195:17:195:32 | After ... > ... [true] | +| cflow.cs:195:17:195:56 | After ... && ... | cflow.cs:193:10:193:17 | Entry | +| cflow.cs:195:17:195:56 | After ... && ... | cflow.cs:195:17:195:32 | After ... > ... [false] | +| cflow.cs:195:17:195:56 | After ... && ... | cflow.cs:195:17:195:32 | After ... > ... [true] | +| cflow.cs:195:17:195:56 | After ... && ... | cflow.cs:195:17:195:56 | After ... && ... | +| cflow.cs:197:9:198:49 | After if (...) ... | cflow.cs:193:10:193:17 | Entry | +| cflow.cs:197:9:198:49 | After if (...) ... | cflow.cs:195:17:195:32 | After ... > ... [false] | +| cflow.cs:197:9:198:49 | After if (...) ... | cflow.cs:195:17:195:32 | After ... > ... [true] | +| cflow.cs:197:9:198:49 | After if (...) ... | cflow.cs:195:17:195:56 | After ... && ... | +| cflow.cs:197:9:198:49 | After if (...) ... | cflow.cs:197:9:198:49 | After if (...) ... | +| cflow.cs:197:9:198:49 | After if (...) ... | cflow.cs:197:15:197:31 | After ... == ... [false] | +| cflow.cs:197:9:198:49 | After if (...) ... | cflow.cs:197:15:197:31 | After ... == ... [true] | +| cflow.cs:197:9:198:49 | After if (...) ... | cflow.cs:198:17:198:33 | After ... == ... [false] | +| cflow.cs:197:9:198:49 | After if (...) ... | cflow.cs:198:17:198:33 | After ... == ... [true] | +| cflow.cs:197:9:198:49 | After if (...) ... | cflow.cs:198:17:198:48 | After ... ? ... : ... | +| cflow.cs:197:15:197:31 | After ... == ... [false] | cflow.cs:197:15:197:31 | After ... == ... [false] | +| cflow.cs:197:15:197:31 | After ... == ... [true] | cflow.cs:197:15:197:31 | After ... == ... [true] | +| cflow.cs:198:17:198:33 | After ... == ... [false] | cflow.cs:198:17:198:33 | After ... == ... [false] | +| cflow.cs:198:17:198:33 | After ... == ... [true] | cflow.cs:198:17:198:33 | After ... == ... [true] | +| cflow.cs:198:17:198:48 | After ... ? ... : ... | cflow.cs:197:15:197:31 | After ... == ... [true] | +| cflow.cs:198:17:198:48 | After ... ? ... : ... | cflow.cs:198:17:198:33 | After ... == ... [false] | +| cflow.cs:198:17:198:48 | After ... ? ... : ... | cflow.cs:198:17:198:33 | After ... == ... [true] | +| cflow.cs:198:17:198:48 | After ... ? ... : ... | cflow.cs:198:17:198:48 | After ... ? ... : ... | +| cflow.cs:200:13:200:62 | After ... \|\| ... [true] | cflow.cs:200:13:200:62 | After ... \|\| ... [true] | +| cflow.cs:200:15:200:31 | After ... == ... [false] | cflow.cs:200:15:200:31 | After ... == ... [false] | +| cflow.cs:200:15:200:31 | After ... == ... [true] | cflow.cs:193:10:193:17 | Entry | +| cflow.cs:200:15:200:31 | After ... == ... [true] | cflow.cs:195:17:195:32 | After ... > ... [false] | +| cflow.cs:200:15:200:31 | After ... == ... [true] | cflow.cs:195:17:195:32 | After ... > ... [true] | +| cflow.cs:200:15:200:31 | After ... == ... [true] | cflow.cs:195:17:195:56 | After ... && ... | +| cflow.cs:200:15:200:31 | After ... == ... [true] | cflow.cs:197:9:198:49 | After if (...) ... | +| cflow.cs:200:15:200:31 | After ... == ... [true] | cflow.cs:197:15:197:31 | After ... == ... [false] | +| cflow.cs:200:15:200:31 | After ... == ... [true] | cflow.cs:197:15:197:31 | After ... == ... [true] | +| cflow.cs:200:15:200:31 | After ... == ... [true] | cflow.cs:198:17:198:33 | After ... == ... [false] | +| cflow.cs:200:15:200:31 | After ... == ... [true] | cflow.cs:198:17:198:33 | After ... == ... [true] | +| cflow.cs:200:15:200:31 | After ... == ... [true] | cflow.cs:198:17:198:48 | After ... ? ... : ... | +| cflow.cs:200:15:200:31 | After ... == ... [true] | cflow.cs:200:15:200:31 | After ... == ... [true] | +| cflow.cs:200:40:200:56 | After ... == ... [false] | cflow.cs:200:40:200:56 | After ... == ... [false] | +| cflow.cs:200:40:200:56 | After ... == ... [true] | cflow.cs:200:40:200:56 | After ... == ... [true] | +| cflow.cs:200:40:200:61 | After ... && ... [false] | cflow.cs:193:10:193:17 | Entry | +| cflow.cs:200:40:200:61 | After ... && ... [false] | cflow.cs:195:17:195:32 | After ... > ... [false] | +| cflow.cs:200:40:200:61 | After ... && ... [false] | cflow.cs:195:17:195:32 | After ... > ... [true] | +| cflow.cs:200:40:200:61 | After ... && ... [false] | cflow.cs:195:17:195:56 | After ... && ... | +| cflow.cs:200:40:200:61 | After ... && ... [false] | cflow.cs:197:9:198:49 | After if (...) ... | +| cflow.cs:200:40:200:61 | After ... && ... [false] | cflow.cs:197:15:197:31 | After ... == ... [false] | +| cflow.cs:200:40:200:61 | After ... && ... [false] | cflow.cs:197:15:197:31 | After ... == ... [true] | +| cflow.cs:200:40:200:61 | After ... && ... [false] | cflow.cs:198:17:198:33 | After ... == ... [false] | +| cflow.cs:200:40:200:61 | After ... && ... [false] | cflow.cs:198:17:198:33 | After ... == ... [true] | +| cflow.cs:200:40:200:61 | After ... && ... [false] | cflow.cs:198:17:198:48 | After ... ? ... : ... | +| cflow.cs:200:40:200:61 | After ... && ... [false] | cflow.cs:200:15:200:31 | After ... == ... [true] | +| cflow.cs:200:40:200:61 | After ... && ... [false] | cflow.cs:200:40:200:56 | After ... == ... [false] | +| cflow.cs:200:40:200:61 | After ... && ... [false] | cflow.cs:200:40:200:56 | After ... == ... [true] | +| cflow.cs:200:40:200:61 | After ... && ... [false] | cflow.cs:200:40:200:61 | After ... && ... [false] | +| cflow.cs:200:40:200:61 | After ... && ... [false] | cflow.cs:200:61:200:61 | After access to local variable b [false] | +| cflow.cs:200:61:200:61 | After access to local variable b [false] | cflow.cs:200:40:200:56 | After ... == ... [true] | +| cflow.cs:200:61:200:61 | After access to local variable b [false] | cflow.cs:200:61:200:61 | After access to local variable b [false] | +| cflow.cs:200:61:200:61 | After access to local variable b [true] | cflow.cs:200:61:200:61 | After access to local variable b [true] | +| cflow.cs:208:10:208:11 | Entry | cflow.cs:208:10:208:11 | Entry | +| cflow.cs:210:9:221:36 | After do ... while (...); | cflow.cs:208:10:208:11 | Entry | +| cflow.cs:210:9:221:36 | After do ... while (...); | cflow.cs:210:9:221:36 | After do ... while (...); | +| cflow.cs:210:9:221:36 | After do ... while (...); | cflow.cs:210:9:221:36 | [LoopHeader] do ... while (...); | +| cflow.cs:210:9:221:36 | After do ... while (...); | cflow.cs:211:9:221:9 | {...} | +| cflow.cs:210:9:221:36 | After do ... while (...); | cflow.cs:213:17:213:32 | After ... > ... [false] | +| cflow.cs:210:9:221:36 | After do ... while (...); | cflow.cs:213:17:213:32 | After ... > ... [true] | +| cflow.cs:210:9:221:36 | After do ... while (...); | cflow.cs:217:17:217:32 | After ... < ... [false] | +| cflow.cs:210:9:221:36 | After do ... while (...); | cflow.cs:217:17:217:32 | After ... < ... [true] | +| cflow.cs:210:9:221:36 | After do ... while (...); | cflow.cs:221:18:221:34 | After ... < ... [false] | +| cflow.cs:210:9:221:36 | After do ... while (...); | cflow.cs:221:18:221:34 | After ... < ... [true] | +| cflow.cs:210:9:221:36 | [LoopHeader] do ... while (...); | cflow.cs:210:9:221:36 | [LoopHeader] do ... while (...); | +| cflow.cs:210:9:221:36 | [LoopHeader] do ... while (...); | cflow.cs:213:17:213:32 | After ... > ... [true] | +| cflow.cs:210:9:221:36 | [LoopHeader] do ... while (...); | cflow.cs:217:17:217:32 | After ... < ... [false] | +| cflow.cs:211:9:221:9 | {...} | cflow.cs:208:10:208:11 | Entry | | cflow.cs:211:9:221:9 | {...} | cflow.cs:211:9:221:9 | {...} | -| cflow.cs:214:13:216:13 | {...} | cflow.cs:214:13:216:13 | {...} | -| cflow.cs:217:13:220:13 | if (...) ... | cflow.cs:217:13:220:13 | if (...) ... | -| cflow.cs:218:13:220:13 | {...} | cflow.cs:218:13:220:13 | {...} | -| cflow.cs:221:18:221:22 | this access | cflow.cs:214:13:216:13 | {...} | -| cflow.cs:221:18:221:22 | this access | cflow.cs:221:18:221:22 | this access | -| cflow.cs:224:10:224:16 | enter Foreach | cflow.cs:224:10:224:16 | enter Foreach | -| cflow.cs:224:10:224:16 | exit Foreach (normal) | cflow.cs:224:10:224:16 | enter Foreach | -| cflow.cs:224:10:224:16 | exit Foreach (normal) | cflow.cs:224:10:224:16 | exit Foreach (normal) | -| cflow.cs:224:10:224:16 | exit Foreach (normal) | cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | -| cflow.cs:224:10:224:16 | exit Foreach (normal) | cflow.cs:226:22:226:22 | String x | -| cflow.cs:224:10:224:16 | exit Foreach (normal) | cflow.cs:230:13:232:13 | {...} | -| cflow.cs:224:10:224:16 | exit Foreach (normal) | cflow.cs:233:13:236:13 | if (...) ... | -| cflow.cs:224:10:224:16 | exit Foreach (normal) | cflow.cs:234:13:236:13 | {...} | -| cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | cflow.cs:224:10:224:16 | enter Foreach | -| cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | -| cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | cflow.cs:230:13:232:13 | {...} | +| cflow.cs:211:9:221:9 | {...} | cflow.cs:221:18:221:34 | After ... < ... [true] | +| cflow.cs:213:17:213:32 | After ... > ... [false] | cflow.cs:213:17:213:32 | After ... > ... [false] | +| cflow.cs:213:17:213:32 | After ... > ... [true] | cflow.cs:213:17:213:32 | After ... > ... [true] | +| cflow.cs:217:17:217:32 | After ... < ... [false] | cflow.cs:217:17:217:32 | After ... < ... [false] | +| cflow.cs:217:17:217:32 | After ... < ... [true] | cflow.cs:217:17:217:32 | After ... < ... [true] | +| cflow.cs:221:18:221:34 | After ... < ... [false] | cflow.cs:221:18:221:34 | After ... < ... [false] | +| cflow.cs:221:18:221:34 | After ... < ... [true] | cflow.cs:221:18:221:34 | After ... < ... [true] | +| cflow.cs:224:10:224:16 | Entry | cflow.cs:224:10:224:16 | Entry | +| cflow.cs:226:9:237:9 | After foreach (... ... in ...) ... | cflow.cs:224:10:224:16 | Entry | +| cflow.cs:226:9:237:9 | After foreach (... ... in ...) ... | cflow.cs:226:9:237:9 | After foreach (... ... in ...) ... | +| cflow.cs:226:9:237:9 | After foreach (... ... in ...) ... | cflow.cs:226:9:237:9 | [LoopHeader] foreach (... ... in ...) ... | +| cflow.cs:226:9:237:9 | After foreach (... ... in ...) ... | cflow.cs:226:22:226:22 | String x | +| cflow.cs:226:9:237:9 | After foreach (... ... in ...) ... | cflow.cs:226:27:226:64 | After call to method Repeat [empty] | +| cflow.cs:226:9:237:9 | After foreach (... ... in ...) ... | cflow.cs:226:27:226:64 | After call to method Repeat [non-empty] | +| cflow.cs:226:9:237:9 | After foreach (... ... in ...) ... | cflow.cs:229:17:229:32 | After ... > ... [false] | +| cflow.cs:226:9:237:9 | After foreach (... ... in ...) ... | cflow.cs:229:17:229:32 | After ... > ... [true] | +| cflow.cs:226:9:237:9 | After foreach (... ... in ...) ... | cflow.cs:233:17:233:32 | After ... < ... [false] | +| cflow.cs:226:9:237:9 | After foreach (... ... in ...) ... | cflow.cs:233:17:233:32 | After ... < ... [true] | +| cflow.cs:226:9:237:9 | [LoopHeader] foreach (... ... in ...) ... | cflow.cs:226:9:237:9 | [LoopHeader] foreach (... ... in ...) ... | +| cflow.cs:226:9:237:9 | [LoopHeader] foreach (... ... in ...) ... | cflow.cs:229:17:229:32 | After ... > ... [true] | +| cflow.cs:226:9:237:9 | [LoopHeader] foreach (... ... in ...) ... | cflow.cs:233:17:233:32 | After ... < ... [false] | | cflow.cs:226:22:226:22 | String x | cflow.cs:226:22:226:22 | String x | -| cflow.cs:230:13:232:13 | {...} | cflow.cs:230:13:232:13 | {...} | -| cflow.cs:233:13:236:13 | if (...) ... | cflow.cs:233:13:236:13 | if (...) ... | -| cflow.cs:234:13:236:13 | {...} | cflow.cs:234:13:236:13 | {...} | -| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:240:10:240:13 | enter Goto | -| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:240:10:240:13 | enter Goto | -| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:240:10:240:13 | exit Goto (normal) | -| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:242:5:242:9 | Label: | -| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:242:16:242:36 | [false] !... | -| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:242:16:242:36 | [true] !... | -| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:242:17:242:36 | [false] !... | -| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:242:17:242:36 | [true] !... | -| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:242:39:242:41 | {...} | -| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:244:9:244:41 | if (...) ... | -| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:244:31:244:41 | goto ...; | -| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:246:9:258:9 | switch (...) {...} | -| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:249:17:249:29 | goto default; | -| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:250:13:250:19 | case ...: | -| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:251:17:251:37 | ...; | -| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:253:13:253:19 | case ...: | -| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:254:17:254:27 | goto ...; | -| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:255:13:255:20 | default: | -| cflow.cs:242:5:242:9 | Label: | cflow.cs:240:10:240:13 | enter Goto | +| cflow.cs:226:22:226:22 | String x | cflow.cs:226:27:226:64 | After call to method Repeat [non-empty] | +| cflow.cs:226:27:226:64 | After call to method Repeat [empty] | cflow.cs:226:27:226:64 | After call to method Repeat [empty] | +| cflow.cs:226:27:226:64 | After call to method Repeat [non-empty] | cflow.cs:226:27:226:64 | After call to method Repeat [non-empty] | +| cflow.cs:229:17:229:32 | After ... > ... [false] | cflow.cs:229:17:229:32 | After ... > ... [false] | +| cflow.cs:229:17:229:32 | After ... > ... [true] | cflow.cs:229:17:229:32 | After ... > ... [true] | +| cflow.cs:233:17:233:32 | After ... < ... [false] | cflow.cs:233:17:233:32 | After ... < ... [false] | +| cflow.cs:233:17:233:32 | After ... < ... [true] | cflow.cs:233:17:233:32 | After ... < ... [true] | +| cflow.cs:240:10:240:13 | Entry | cflow.cs:240:10:240:13 | Entry | +| cflow.cs:242:5:242:9 | Label: | cflow.cs:240:10:240:13 | Entry | | cflow.cs:242:5:242:9 | Label: | cflow.cs:242:5:242:9 | Label: | -| cflow.cs:242:5:242:9 | Label: | cflow.cs:244:31:244:41 | goto ...; | -| cflow.cs:242:5:242:9 | Label: | cflow.cs:254:17:254:27 | goto ...; | -| cflow.cs:242:16:242:36 | [false] !... | cflow.cs:242:16:242:36 | [false] !... | -| cflow.cs:242:16:242:36 | [false] !... | cflow.cs:242:17:242:36 | [true] !... | -| cflow.cs:242:16:242:36 | [true] !... | cflow.cs:242:16:242:36 | [true] !... | -| cflow.cs:242:16:242:36 | [true] !... | cflow.cs:242:17:242:36 | [false] !... | -| cflow.cs:242:17:242:36 | [false] !... | cflow.cs:242:17:242:36 | [false] !... | -| cflow.cs:242:17:242:36 | [true] !... | cflow.cs:242:17:242:36 | [true] !... | -| cflow.cs:242:39:242:41 | {...} | cflow.cs:242:16:242:36 | [true] !... | -| cflow.cs:242:39:242:41 | {...} | cflow.cs:242:17:242:36 | [false] !... | -| cflow.cs:242:39:242:41 | {...} | cflow.cs:242:39:242:41 | {...} | -| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:240:10:240:13 | enter Goto | -| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:242:5:242:9 | Label: | -| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:242:16:242:36 | [false] !... | -| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:242:16:242:36 | [true] !... | -| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:242:17:242:36 | [false] !... | -| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:242:17:242:36 | [true] !... | -| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:242:39:242:41 | {...} | -| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:244:9:244:41 | if (...) ... | -| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:244:31:244:41 | goto ...; | -| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:254:17:254:27 | goto ...; | -| cflow.cs:244:31:244:41 | goto ...; | cflow.cs:244:31:244:41 | goto ...; | -| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:240:10:240:13 | enter Goto | -| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:242:5:242:9 | Label: | -| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:242:16:242:36 | [false] !... | -| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:242:16:242:36 | [true] !... | -| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:242:17:242:36 | [false] !... | -| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:242:17:242:36 | [true] !... | -| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:242:39:242:41 | {...} | -| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:244:9:244:41 | if (...) ... | -| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:244:31:244:41 | goto ...; | -| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:246:9:258:9 | switch (...) {...} | -| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:254:17:254:27 | goto ...; | -| cflow.cs:249:17:249:29 | goto default; | cflow.cs:249:17:249:29 | goto default; | -| cflow.cs:250:13:250:19 | case ...: | cflow.cs:250:13:250:19 | case ...: | -| cflow.cs:251:17:251:37 | ...; | cflow.cs:251:17:251:37 | ...; | -| cflow.cs:253:13:253:19 | case ...: | cflow.cs:253:13:253:19 | case ...: | -| cflow.cs:254:17:254:27 | goto ...; | cflow.cs:254:17:254:27 | goto ...; | -| cflow.cs:255:13:255:20 | default: | cflow.cs:249:17:249:29 | goto default; | -| cflow.cs:255:13:255:20 | default: | cflow.cs:255:13:255:20 | default: | -| cflow.cs:261:49:261:53 | enter Yield | cflow.cs:261:49:261:53 | enter Yield | -| cflow.cs:261:49:261:53 | exit Yield | cflow.cs:261:49:261:53 | exit Yield | -| cflow.cs:261:49:261:53 | exit Yield (abnormal) | cflow.cs:261:49:261:53 | exit Yield (abnormal) | -| cflow.cs:261:49:261:53 | exit Yield (normal) | cflow.cs:261:49:261:53 | enter Yield | -| cflow.cs:261:49:261:53 | exit Yield (normal) | cflow.cs:261:49:261:53 | exit Yield (normal) | -| cflow.cs:261:49:261:53 | exit Yield (normal) | cflow.cs:264:25:264:25 | access to local variable i | -| cflow.cs:261:49:261:53 | exit Yield (normal) | cflow.cs:265:9:267:9 | {...} | -| cflow.cs:261:49:261:53 | exit Yield (normal) | cflow.cs:268:9:276:9 | try {...} ... | -| cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:261:49:261:53 | enter Yield | -| cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:264:25:264:25 | access to local variable i | -| cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:265:9:267:9 | {...} | -| cflow.cs:265:9:267:9 | {...} | cflow.cs:265:9:267:9 | {...} | -| cflow.cs:268:9:276:9 | try {...} ... | cflow.cs:261:49:261:53 | enter Yield | -| cflow.cs:268:9:276:9 | try {...} ... | cflow.cs:264:25:264:25 | access to local variable i | -| cflow.cs:268:9:276:9 | try {...} ... | cflow.cs:265:9:267:9 | {...} | -| cflow.cs:268:9:276:9 | try {...} ... | cflow.cs:268:9:276:9 | try {...} ... | -| cflow.cs:282:5:282:18 | enter ControlFlowSub | cflow.cs:282:5:282:18 | enter ControlFlowSub | -| cflow.cs:284:5:284:18 | enter ControlFlowSub | cflow.cs:284:5:284:18 | enter ControlFlowSub | -| cflow.cs:286:5:286:18 | enter ControlFlowSub | cflow.cs:286:5:286:18 | enter ControlFlowSub | -| cflow.cs:289:7:289:18 | enter DelegateCall | cflow.cs:289:7:289:18 | enter DelegateCall | -| cflow.cs:291:12:291:12 | enter M | cflow.cs:291:12:291:12 | enter M | -| cflow.cs:296:5:296:25 | enter NegationInConstructor | cflow.cs:296:5:296:25 | enter NegationInConstructor | -| cflow.cs:298:10:298:10 | enter M | cflow.cs:298:10:298:10 | enter M | -| cflow.cs:300:44:300:51 | [false] !... | cflow.cs:300:44:300:51 | [false] !... | -| cflow.cs:300:44:300:51 | [true] !... | cflow.cs:300:44:300:51 | [true] !... | -| cflow.cs:300:44:300:64 | ... && ... | cflow.cs:298:10:298:10 | enter M | -| cflow.cs:300:44:300:64 | ... && ... | cflow.cs:300:44:300:51 | [false] !... | -| cflow.cs:300:44:300:64 | ... && ... | cflow.cs:300:44:300:51 | [true] !... | -| cflow.cs:300:44:300:64 | ... && ... | cflow.cs:300:44:300:64 | ... && ... | -| cflow.cs:300:44:300:64 | ... && ... | cflow.cs:300:56:300:56 | access to parameter s | -| cflow.cs:300:56:300:56 | access to parameter s | cflow.cs:300:44:300:51 | [true] !... | -| cflow.cs:300:56:300:56 | access to parameter s | cflow.cs:300:56:300:56 | access to parameter s | -| cflow.cs:304:7:304:18 | enter LambdaGetter | cflow.cs:304:7:304:18 | enter LambdaGetter | -| cflow.cs:306:60:310:5 | enter (...) => ... | cflow.cs:306:60:310:5 | enter (...) => ... | -| cflow.cs:306:60:310:5 | enter get__getter | cflow.cs:306:60:310:5 | enter get__getter | +| cflow.cs:242:5:242:9 | Label: | cflow.cs:244:13:244:28 | After ... > ... [true] | +| cflow.cs:242:5:242:9 | Label: | cflow.cs:253:18:253:18 | After 2 [match] | +| cflow.cs:242:12:242:41 | After if (...) ... | cflow.cs:240:10:240:13 | Entry | +| cflow.cs:242:12:242:41 | After if (...) ... | cflow.cs:242:5:242:9 | Label: | +| cflow.cs:242:12:242:41 | After if (...) ... | cflow.cs:242:12:242:41 | After if (...) ... | +| cflow.cs:242:12:242:41 | After if (...) ... | cflow.cs:242:19:242:35 | After ... == ... [false] | +| cflow.cs:242:12:242:41 | After if (...) ... | cflow.cs:242:19:242:35 | After ... == ... [true] | +| cflow.cs:242:12:242:41 | After if (...) ... | cflow.cs:244:13:244:28 | After ... > ... [true] | +| cflow.cs:242:12:242:41 | After if (...) ... | cflow.cs:253:18:253:18 | After 2 [match] | +| cflow.cs:242:19:242:35 | After ... == ... [false] | cflow.cs:242:19:242:35 | After ... == ... [false] | +| cflow.cs:242:19:242:35 | After ... == ... [true] | cflow.cs:242:19:242:35 | After ... == ... [true] | +| cflow.cs:244:13:244:28 | After ... > ... [false] | cflow.cs:240:10:240:13 | Entry | +| cflow.cs:244:13:244:28 | After ... > ... [false] | cflow.cs:242:5:242:9 | Label: | +| cflow.cs:244:13:244:28 | After ... > ... [false] | cflow.cs:242:12:242:41 | After if (...) ... | +| cflow.cs:244:13:244:28 | After ... > ... [false] | cflow.cs:242:19:242:35 | After ... == ... [false] | +| cflow.cs:244:13:244:28 | After ... > ... [false] | cflow.cs:242:19:242:35 | After ... == ... [true] | +| cflow.cs:244:13:244:28 | After ... > ... [false] | cflow.cs:244:13:244:28 | After ... > ... [false] | +| cflow.cs:244:13:244:28 | After ... > ... [false] | cflow.cs:244:13:244:28 | After ... > ... [true] | +| cflow.cs:244:13:244:28 | After ... > ... [false] | cflow.cs:253:18:253:18 | After 2 [match] | +| cflow.cs:244:13:244:28 | After ... > ... [true] | cflow.cs:244:13:244:28 | After ... > ... [true] | +| cflow.cs:246:9:258:9 | After switch (...) {...} | cflow.cs:240:10:240:13 | Entry | +| cflow.cs:246:9:258:9 | After switch (...) {...} | cflow.cs:242:5:242:9 | Label: | +| cflow.cs:246:9:258:9 | After switch (...) {...} | cflow.cs:242:12:242:41 | After if (...) ... | +| cflow.cs:246:9:258:9 | After switch (...) {...} | cflow.cs:242:19:242:35 | After ... == ... [false] | +| cflow.cs:246:9:258:9 | After switch (...) {...} | cflow.cs:242:19:242:35 | After ... == ... [true] | +| cflow.cs:246:9:258:9 | After switch (...) {...} | cflow.cs:244:13:244:28 | After ... > ... [false] | +| cflow.cs:246:9:258:9 | After switch (...) {...} | cflow.cs:244:13:244:28 | After ... > ... [true] | +| cflow.cs:246:9:258:9 | After switch (...) {...} | cflow.cs:246:9:258:9 | After switch (...) {...} | +| cflow.cs:246:9:258:9 | After switch (...) {...} | cflow.cs:248:18:248:18 | After 0 [match] | +| cflow.cs:246:9:258:9 | After switch (...) {...} | cflow.cs:248:18:248:18 | After 0 [no-match] | +| cflow.cs:246:9:258:9 | After switch (...) {...} | cflow.cs:250:18:250:18 | After 1 [match] | +| cflow.cs:246:9:258:9 | After switch (...) {...} | cflow.cs:250:18:250:18 | After 1 [no-match] | +| cflow.cs:246:9:258:9 | After switch (...) {...} | cflow.cs:253:18:253:18 | After 2 [match] | +| cflow.cs:246:9:258:9 | After switch (...) {...} | cflow.cs:253:18:253:18 | After 2 [no-match] | +| cflow.cs:246:9:258:9 | After switch (...) {...} | cflow.cs:255:13:255:20 | After default: [match] | +| cflow.cs:248:18:248:18 | After 0 [match] | cflow.cs:248:18:248:18 | After 0 [match] | +| cflow.cs:248:18:248:18 | After 0 [no-match] | cflow.cs:248:18:248:18 | After 0 [no-match] | +| cflow.cs:250:18:250:18 | After 1 [match] | cflow.cs:250:18:250:18 | After 1 [match] | +| cflow.cs:250:18:250:18 | After 1 [no-match] | cflow.cs:250:18:250:18 | After 1 [no-match] | +| cflow.cs:253:18:253:18 | After 2 [match] | cflow.cs:253:18:253:18 | After 2 [match] | +| cflow.cs:253:18:253:18 | After 2 [no-match] | cflow.cs:253:18:253:18 | After 2 [no-match] | +| cflow.cs:255:13:255:20 | After default: [match] | cflow.cs:248:18:248:18 | After 0 [match] | +| cflow.cs:255:13:255:20 | After default: [match] | cflow.cs:253:18:253:18 | After 2 [no-match] | +| cflow.cs:255:13:255:20 | After default: [match] | cflow.cs:255:13:255:20 | After default: [match] | +| cflow.cs:261:49:261:53 | Entry | cflow.cs:261:49:261:53 | Entry | +| cflow.cs:261:49:261:53 | Exceptional Exit | cflow.cs:261:49:261:53 | Exceptional Exit | +| cflow.cs:261:49:261:53 | Exit | cflow.cs:261:49:261:53 | Exit | +| cflow.cs:261:49:261:53 | Normal Exit | cflow.cs:261:49:261:53 | Entry | +| cflow.cs:261:49:261:53 | Normal Exit | cflow.cs:261:49:261:53 | Normal Exit | +| cflow.cs:261:49:261:53 | Normal Exit | cflow.cs:264:25:264:30 | After ... < ... [false] | +| cflow.cs:261:49:261:53 | Normal Exit | cflow.cs:264:25:264:30 | After ... < ... [true] | +| cflow.cs:261:49:261:53 | Normal Exit | cflow.cs:264:25:264:30 | Before ... < ... | +| cflow.cs:261:49:261:53 | Normal Exit | cflow.cs:268:9:276:9 | After try {...} ... | +| cflow.cs:264:25:264:30 | After ... < ... [false] | cflow.cs:261:49:261:53 | Entry | +| cflow.cs:264:25:264:30 | After ... < ... [false] | cflow.cs:264:25:264:30 | After ... < ... [false] | +| cflow.cs:264:25:264:30 | After ... < ... [false] | cflow.cs:264:25:264:30 | After ... < ... [true] | +| cflow.cs:264:25:264:30 | After ... < ... [false] | cflow.cs:264:25:264:30 | Before ... < ... | +| cflow.cs:264:25:264:30 | After ... < ... [true] | cflow.cs:264:25:264:30 | After ... < ... [true] | +| cflow.cs:264:25:264:30 | Before ... < ... | cflow.cs:261:49:261:53 | Entry | +| cflow.cs:264:25:264:30 | Before ... < ... | cflow.cs:264:25:264:30 | After ... < ... [true] | +| cflow.cs:264:25:264:30 | Before ... < ... | cflow.cs:264:25:264:30 | Before ... < ... | +| cflow.cs:268:9:276:9 | After try {...} ... | cflow.cs:268:9:276:9 | After try {...} ... | +| cflow.cs:282:5:282:18 | Entry | cflow.cs:282:5:282:18 | Entry | +| cflow.cs:284:5:284:18 | Entry | cflow.cs:284:5:284:18 | Entry | +| cflow.cs:286:5:286:18 | Entry | cflow.cs:286:5:286:18 | Entry | +| cflow.cs:289:7:289:18 | Entry | cflow.cs:289:7:289:18 | Entry | +| cflow.cs:291:12:291:12 | Entry | cflow.cs:291:12:291:12 | Entry | +| cflow.cs:296:5:296:25 | Entry | cflow.cs:296:5:296:25 | Entry | +| cflow.cs:298:10:298:10 | Entry | cflow.cs:298:10:298:10 | Entry | +| cflow.cs:300:44:300:64 | After ... && ... | cflow.cs:298:10:298:10 | Entry | +| cflow.cs:300:44:300:64 | After ... && ... | cflow.cs:300:44:300:64 | After ... && ... | +| cflow.cs:300:44:300:64 | After ... && ... | cflow.cs:300:46:300:50 | After ... > ... [false] | +| cflow.cs:300:44:300:64 | After ... && ... | cflow.cs:300:46:300:50 | After ... > ... [true] | +| cflow.cs:300:46:300:50 | After ... > ... [false] | cflow.cs:300:46:300:50 | After ... > ... [false] | +| cflow.cs:300:46:300:50 | After ... > ... [true] | cflow.cs:300:46:300:50 | After ... > ... [true] | +| cflow.cs:304:7:304:18 | Entry | cflow.cs:304:7:304:18 | Entry | +| cflow.cs:306:60:310:5 | Entry | cflow.cs:306:60:310:5 | Entry | +| cflow.cs:306:60:310:5 | Entry | cflow.cs:306:60:310:5 | Entry | diff --git a/csharp/ql/test/library-tests/controlflow/graph/EnclosingCallable.expected b/csharp/ql/test/library-tests/controlflow/graph/EnclosingCallable.expected index 99f8c25b49e2..2a3a0a7020f9 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/EnclosingCallable.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/EnclosingCallable.expected @@ -1,5545 +1,9709 @@ nodeEnclosing +| AccessorCalls.cs:1:7:1:19 | After call to constructor Object | AccessorCalls.cs:1:7:1:19 | AccessorCalls | +| AccessorCalls.cs:1:7:1:19 | After call to method | AccessorCalls.cs:1:7:1:19 | AccessorCalls | +| AccessorCalls.cs:1:7:1:19 | Before call to constructor Object | AccessorCalls.cs:1:7:1:19 | AccessorCalls | +| AccessorCalls.cs:1:7:1:19 | Before call to method | AccessorCalls.cs:1:7:1:19 | AccessorCalls | +| AccessorCalls.cs:1:7:1:19 | Entry | AccessorCalls.cs:1:7:1:19 | AccessorCalls | +| AccessorCalls.cs:1:7:1:19 | Exit | AccessorCalls.cs:1:7:1:19 | AccessorCalls | +| AccessorCalls.cs:1:7:1:19 | Normal Exit | AccessorCalls.cs:1:7:1:19 | AccessorCalls | | AccessorCalls.cs:1:7:1:19 | call to constructor Object | AccessorCalls.cs:1:7:1:19 | AccessorCalls | | AccessorCalls.cs:1:7:1:19 | call to method | AccessorCalls.cs:1:7:1:19 | AccessorCalls | -| AccessorCalls.cs:1:7:1:19 | enter AccessorCalls | AccessorCalls.cs:1:7:1:19 | AccessorCalls | -| AccessorCalls.cs:1:7:1:19 | exit AccessorCalls | AccessorCalls.cs:1:7:1:19 | AccessorCalls | -| AccessorCalls.cs:1:7:1:19 | exit AccessorCalls (normal) | AccessorCalls.cs:1:7:1:19 | AccessorCalls | | AccessorCalls.cs:1:7:1:19 | this access | AccessorCalls.cs:1:7:1:19 | AccessorCalls | | AccessorCalls.cs:1:7:1:19 | {...} | AccessorCalls.cs:1:7:1:19 | AccessorCalls | -| AccessorCalls.cs:5:23:5:25 | enter get_Item | AccessorCalls.cs:5:23:5:25 | get_Item | -| AccessorCalls.cs:5:23:5:25 | exit get_Item | AccessorCalls.cs:5:23:5:25 | get_Item | -| AccessorCalls.cs:5:23:5:25 | exit get_Item (normal) | AccessorCalls.cs:5:23:5:25 | get_Item | +| AccessorCalls.cs:5:18:5:18 | i | AccessorCalls.cs:5:23:5:25 | get_Item | +| AccessorCalls.cs:5:18:5:18 | i | AccessorCalls.cs:5:33:5:35 | set_Item | +| AccessorCalls.cs:5:23:5:25 | Entry | AccessorCalls.cs:5:23:5:25 | get_Item | +| AccessorCalls.cs:5:23:5:25 | Exit | AccessorCalls.cs:5:23:5:25 | get_Item | +| AccessorCalls.cs:5:23:5:25 | Normal Exit | AccessorCalls.cs:5:23:5:25 | get_Item | | AccessorCalls.cs:5:30:5:30 | access to parameter i | AccessorCalls.cs:5:23:5:25 | get_Item | -| AccessorCalls.cs:5:33:5:35 | enter set_Item | AccessorCalls.cs:5:33:5:35 | set_Item | -| AccessorCalls.cs:5:33:5:35 | exit set_Item | AccessorCalls.cs:5:33:5:35 | set_Item | -| AccessorCalls.cs:5:33:5:35 | exit set_Item (normal) | AccessorCalls.cs:5:33:5:35 | set_Item | +| AccessorCalls.cs:5:33:5:35 | Entry | AccessorCalls.cs:5:33:5:35 | set_Item | +| AccessorCalls.cs:5:33:5:35 | Exit | AccessorCalls.cs:5:33:5:35 | set_Item | +| AccessorCalls.cs:5:33:5:35 | Normal Exit | AccessorCalls.cs:5:33:5:35 | set_Item | +| AccessorCalls.cs:5:33:5:35 | value | AccessorCalls.cs:5:33:5:35 | set_Item | | AccessorCalls.cs:5:37:5:39 | {...} | AccessorCalls.cs:5:33:5:35 | set_Item | -| AccessorCalls.cs:7:32:7:34 | enter add_Event | AccessorCalls.cs:7:32:7:34 | add_Event | -| AccessorCalls.cs:7:32:7:34 | exit add_Event | AccessorCalls.cs:7:32:7:34 | add_Event | -| AccessorCalls.cs:7:32:7:34 | exit add_Event (normal) | AccessorCalls.cs:7:32:7:34 | add_Event | +| AccessorCalls.cs:7:32:7:34 | Entry | AccessorCalls.cs:7:32:7:34 | add_Event | +| AccessorCalls.cs:7:32:7:34 | Exit | AccessorCalls.cs:7:32:7:34 | add_Event | +| AccessorCalls.cs:7:32:7:34 | Normal Exit | AccessorCalls.cs:7:32:7:34 | add_Event | +| AccessorCalls.cs:7:32:7:34 | value | AccessorCalls.cs:7:32:7:34 | add_Event | | AccessorCalls.cs:7:36:7:38 | {...} | AccessorCalls.cs:7:32:7:34 | add_Event | -| AccessorCalls.cs:7:40:7:45 | enter remove_Event | AccessorCalls.cs:7:40:7:45 | remove_Event | -| AccessorCalls.cs:7:40:7:45 | exit remove_Event | AccessorCalls.cs:7:40:7:45 | remove_Event | -| AccessorCalls.cs:7:40:7:45 | exit remove_Event (normal) | AccessorCalls.cs:7:40:7:45 | remove_Event | +| AccessorCalls.cs:7:40:7:45 | Entry | AccessorCalls.cs:7:40:7:45 | remove_Event | +| AccessorCalls.cs:7:40:7:45 | Exit | AccessorCalls.cs:7:40:7:45 | remove_Event | +| AccessorCalls.cs:7:40:7:45 | Normal Exit | AccessorCalls.cs:7:40:7:45 | remove_Event | +| AccessorCalls.cs:7:40:7:45 | value | AccessorCalls.cs:7:40:7:45 | remove_Event | | AccessorCalls.cs:7:47:7:49 | {...} | AccessorCalls.cs:7:40:7:45 | remove_Event | -| AccessorCalls.cs:10:10:10:11 | enter M1 | AccessorCalls.cs:10:10:10:11 | M1 | -| AccessorCalls.cs:10:10:10:11 | exit M1 | AccessorCalls.cs:10:10:10:11 | M1 | -| AccessorCalls.cs:10:10:10:11 | exit M1 (normal) | AccessorCalls.cs:10:10:10:11 | M1 | +| AccessorCalls.cs:10:10:10:11 | Entry | AccessorCalls.cs:10:10:10:11 | M1 | +| AccessorCalls.cs:10:10:10:11 | Exit | AccessorCalls.cs:10:10:10:11 | M1 | +| AccessorCalls.cs:10:10:10:11 | Normal Exit | AccessorCalls.cs:10:10:10:11 | M1 | +| AccessorCalls.cs:10:26:10:26 | e | AccessorCalls.cs:10:10:10:11 | M1 | +| AccessorCalls.cs:11:5:17:5 | After {...} | AccessorCalls.cs:10:10:10:11 | M1 | | AccessorCalls.cs:11:5:17:5 | {...} | AccessorCalls.cs:10:10:10:11 | M1 | | AccessorCalls.cs:12:9:12:12 | this access | AccessorCalls.cs:10:10:10:11 | M1 | +| AccessorCalls.cs:12:9:12:18 | After access to field Field | AccessorCalls.cs:10:10:10:11 | M1 | +| AccessorCalls.cs:12:9:12:18 | Before access to field Field | AccessorCalls.cs:10:10:10:11 | M1 | | AccessorCalls.cs:12:9:12:18 | access to field Field | AccessorCalls.cs:10:10:10:11 | M1 | | AccessorCalls.cs:12:9:12:31 | ... = ... | AccessorCalls.cs:10:10:10:11 | M1 | +| AccessorCalls.cs:12:9:12:31 | After ... = ... | AccessorCalls.cs:10:10:10:11 | M1 | +| AccessorCalls.cs:12:9:12:31 | Before ... = ... | AccessorCalls.cs:10:10:10:11 | M1 | | AccessorCalls.cs:12:9:12:32 | ...; | AccessorCalls.cs:10:10:10:11 | M1 | +| AccessorCalls.cs:12:9:12:32 | After ...; | AccessorCalls.cs:10:10:10:11 | M1 | | AccessorCalls.cs:12:22:12:25 | this access | AccessorCalls.cs:10:10:10:11 | M1 | +| AccessorCalls.cs:12:22:12:31 | After access to field Field | AccessorCalls.cs:10:10:10:11 | M1 | +| AccessorCalls.cs:12:22:12:31 | Before access to field Field | AccessorCalls.cs:10:10:10:11 | M1 | | AccessorCalls.cs:12:22:12:31 | access to field Field | AccessorCalls.cs:10:10:10:11 | M1 | | AccessorCalls.cs:13:9:13:12 | this access | AccessorCalls.cs:10:10:10:11 | M1 | +| AccessorCalls.cs:13:9:13:17 | After access to property Prop | AccessorCalls.cs:10:10:10:11 | M1 | +| AccessorCalls.cs:13:9:13:17 | Before access to property Prop | AccessorCalls.cs:10:10:10:11 | M1 | | AccessorCalls.cs:13:9:13:17 | access to property Prop | AccessorCalls.cs:10:10:10:11 | M1 | | AccessorCalls.cs:13:9:13:29 | ... = ... | AccessorCalls.cs:10:10:10:11 | M1 | +| AccessorCalls.cs:13:9:13:29 | After ... = ... | AccessorCalls.cs:10:10:10:11 | M1 | +| AccessorCalls.cs:13:9:13:29 | Before ... = ... | AccessorCalls.cs:10:10:10:11 | M1 | | AccessorCalls.cs:13:9:13:30 | ...; | AccessorCalls.cs:10:10:10:11 | M1 | +| AccessorCalls.cs:13:9:13:30 | After ...; | AccessorCalls.cs:10:10:10:11 | M1 | | AccessorCalls.cs:13:21:13:24 | this access | AccessorCalls.cs:10:10:10:11 | M1 | +| AccessorCalls.cs:13:21:13:29 | After access to property Prop | AccessorCalls.cs:10:10:10:11 | M1 | +| AccessorCalls.cs:13:21:13:29 | Before access to property Prop | AccessorCalls.cs:10:10:10:11 | M1 | | AccessorCalls.cs:13:21:13:29 | access to property Prop | AccessorCalls.cs:10:10:10:11 | M1 | | AccessorCalls.cs:14:9:14:12 | this access | AccessorCalls.cs:10:10:10:11 | M1 | +| AccessorCalls.cs:14:9:14:15 | After access to indexer | AccessorCalls.cs:10:10:10:11 | M1 | +| AccessorCalls.cs:14:9:14:15 | Before access to indexer | AccessorCalls.cs:10:10:10:11 | M1 | | AccessorCalls.cs:14:9:14:15 | access to indexer | AccessorCalls.cs:10:10:10:11 | M1 | | AccessorCalls.cs:14:9:14:25 | ... = ... | AccessorCalls.cs:10:10:10:11 | M1 | +| AccessorCalls.cs:14:9:14:25 | After ... = ... | AccessorCalls.cs:10:10:10:11 | M1 | +| AccessorCalls.cs:14:9:14:25 | Before ... = ... | AccessorCalls.cs:10:10:10:11 | M1 | | AccessorCalls.cs:14:9:14:26 | ...; | AccessorCalls.cs:10:10:10:11 | M1 | +| AccessorCalls.cs:14:9:14:26 | After ...; | AccessorCalls.cs:10:10:10:11 | M1 | | AccessorCalls.cs:14:14:14:14 | 0 | AccessorCalls.cs:10:10:10:11 | M1 | | AccessorCalls.cs:14:19:14:22 | this access | AccessorCalls.cs:10:10:10:11 | M1 | +| AccessorCalls.cs:14:19:14:25 | After access to indexer | AccessorCalls.cs:10:10:10:11 | M1 | +| AccessorCalls.cs:14:19:14:25 | Before access to indexer | AccessorCalls.cs:10:10:10:11 | M1 | | AccessorCalls.cs:14:19:14:25 | access to indexer | AccessorCalls.cs:10:10:10:11 | M1 | | AccessorCalls.cs:14:24:14:24 | 1 | AccessorCalls.cs:10:10:10:11 | M1 | | AccessorCalls.cs:15:9:15:12 | this access | AccessorCalls.cs:10:10:10:11 | M1 | +| AccessorCalls.cs:15:9:15:18 | After access to event Event | AccessorCalls.cs:10:10:10:11 | M1 | +| AccessorCalls.cs:15:9:15:18 | Before access to event Event | AccessorCalls.cs:10:10:10:11 | M1 | | AccessorCalls.cs:15:9:15:18 | access to event Event | AccessorCalls.cs:10:10:10:11 | M1 | | AccessorCalls.cs:15:9:15:23 | ... += ... | AccessorCalls.cs:10:10:10:11 | M1 | +| AccessorCalls.cs:15:9:15:23 | After ... += ... | AccessorCalls.cs:10:10:10:11 | M1 | +| AccessorCalls.cs:15:9:15:23 | Before ... += ... | AccessorCalls.cs:10:10:10:11 | M1 | | AccessorCalls.cs:15:9:15:24 | ...; | AccessorCalls.cs:10:10:10:11 | M1 | +| AccessorCalls.cs:15:9:15:24 | After ...; | AccessorCalls.cs:10:10:10:11 | M1 | | AccessorCalls.cs:15:23:15:23 | access to parameter e | AccessorCalls.cs:10:10:10:11 | M1 | | AccessorCalls.cs:16:9:16:12 | this access | AccessorCalls.cs:10:10:10:11 | M1 | +| AccessorCalls.cs:16:9:16:18 | After access to event Event | AccessorCalls.cs:10:10:10:11 | M1 | +| AccessorCalls.cs:16:9:16:18 | Before access to event Event | AccessorCalls.cs:10:10:10:11 | M1 | | AccessorCalls.cs:16:9:16:18 | access to event Event | AccessorCalls.cs:10:10:10:11 | M1 | | AccessorCalls.cs:16:9:16:23 | ... -= ... | AccessorCalls.cs:10:10:10:11 | M1 | +| AccessorCalls.cs:16:9:16:23 | After ... -= ... | AccessorCalls.cs:10:10:10:11 | M1 | +| AccessorCalls.cs:16:9:16:23 | Before ... -= ... | AccessorCalls.cs:10:10:10:11 | M1 | | AccessorCalls.cs:16:9:16:24 | ...; | AccessorCalls.cs:10:10:10:11 | M1 | +| AccessorCalls.cs:16:9:16:24 | After ...; | AccessorCalls.cs:10:10:10:11 | M1 | | AccessorCalls.cs:16:23:16:23 | access to parameter e | AccessorCalls.cs:10:10:10:11 | M1 | -| AccessorCalls.cs:19:10:19:11 | enter M2 | AccessorCalls.cs:19:10:19:11 | M2 | -| AccessorCalls.cs:19:10:19:11 | exit M2 | AccessorCalls.cs:19:10:19:11 | M2 | -| AccessorCalls.cs:19:10:19:11 | exit M2 (normal) | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:19:10:19:11 | Entry | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:19:10:19:11 | Exit | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:19:10:19:11 | Normal Exit | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:19:26:19:26 | e | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:20:5:26:5 | After {...} | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:20:5:26:5 | {...} | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:21:9:21:12 | this access | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:21:9:21:14 | After access to field x | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:21:9:21:14 | Before access to field x | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:21:9:21:14 | access to field x | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:21:9:21:20 | After access to field Field | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:21:9:21:20 | Before access to field Field | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:21:9:21:20 | access to field Field | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:21:9:21:35 | ... = ... | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:21:9:21:35 | After ... = ... | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:21:9:21:35 | Before ... = ... | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:21:9:21:36 | ...; | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:21:9:21:36 | After ...; | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:21:24:21:27 | this access | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:21:24:21:29 | After access to field x | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:21:24:21:29 | Before access to field x | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:21:24:21:29 | access to field x | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:21:24:21:35 | After access to field Field | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:21:24:21:35 | Before access to field Field | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:21:24:21:35 | access to field Field | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:22:9:22:12 | this access | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:22:9:22:14 | After access to field x | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:22:9:22:14 | Before access to field x | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:22:9:22:14 | access to field x | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:22:9:22:19 | After access to property Prop | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:22:9:22:19 | Before access to property Prop | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:22:9:22:19 | access to property Prop | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:22:9:22:33 | ... = ... | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:22:9:22:33 | After ... = ... | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:22:9:22:33 | Before ... = ... | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:22:9:22:34 | ...; | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:22:9:22:34 | After ...; | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:22:23:22:26 | this access | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:22:23:22:28 | After access to field x | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:22:23:22:28 | Before access to field x | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:22:23:22:28 | access to field x | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:22:23:22:33 | After access to property Prop | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:22:23:22:33 | Before access to property Prop | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:22:23:22:33 | access to property Prop | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:23:9:23:12 | this access | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:23:9:23:14 | After access to field x | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:23:9:23:14 | Before access to field x | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:23:9:23:14 | access to field x | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:23:9:23:17 | After access to indexer | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:23:9:23:17 | Before access to indexer | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:23:9:23:17 | access to indexer | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:23:9:23:29 | ... = ... | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:23:9:23:29 | After ... = ... | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:23:9:23:29 | Before ... = ... | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:23:9:23:30 | ...; | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:23:9:23:30 | After ...; | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:23:16:23:16 | 0 | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:23:21:23:24 | this access | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:23:21:23:26 | After access to field x | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:23:21:23:26 | Before access to field x | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:23:21:23:26 | access to field x | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:23:21:23:29 | After access to indexer | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:23:21:23:29 | Before access to indexer | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:23:21:23:29 | access to indexer | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:23:28:23:28 | 1 | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:24:9:24:12 | this access | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:24:9:24:14 | After access to field x | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:24:9:24:14 | Before access to field x | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:24:9:24:14 | access to field x | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:24:9:24:20 | After access to event Event | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:24:9:24:20 | Before access to event Event | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:24:9:24:20 | access to event Event | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:24:9:24:25 | ... += ... | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:24:9:24:25 | After ... += ... | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:24:9:24:25 | Before ... += ... | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:24:9:24:26 | ...; | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:24:9:24:26 | After ...; | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:24:25:24:25 | access to parameter e | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:25:9:25:12 | this access | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:25:9:25:14 | After access to field x | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:25:9:25:14 | Before access to field x | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:25:9:25:14 | access to field x | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:25:9:25:20 | After access to event Event | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:25:9:25:20 | Before access to event Event | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:25:9:25:20 | access to event Event | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:25:9:25:25 | ... -= ... | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:25:9:25:25 | After ... -= ... | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:25:9:25:25 | Before ... -= ... | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:25:9:25:26 | ...; | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:25:9:25:26 | After ...; | AccessorCalls.cs:19:10:19:11 | M2 | | AccessorCalls.cs:25:25:25:25 | access to parameter e | AccessorCalls.cs:19:10:19:11 | M2 | -| AccessorCalls.cs:28:10:28:11 | enter M3 | AccessorCalls.cs:28:10:28:11 | M3 | -| AccessorCalls.cs:28:10:28:11 | exit M3 | AccessorCalls.cs:28:10:28:11 | M3 | -| AccessorCalls.cs:28:10:28:11 | exit M3 (normal) | AccessorCalls.cs:28:10:28:11 | M3 | +| AccessorCalls.cs:28:10:28:11 | Entry | AccessorCalls.cs:28:10:28:11 | M3 | +| AccessorCalls.cs:28:10:28:11 | Exit | AccessorCalls.cs:28:10:28:11 | M3 | +| AccessorCalls.cs:28:10:28:11 | Normal Exit | AccessorCalls.cs:28:10:28:11 | M3 | +| AccessorCalls.cs:29:5:33:5 | After {...} | AccessorCalls.cs:28:10:28:11 | M3 | | AccessorCalls.cs:29:5:33:5 | {...} | AccessorCalls.cs:28:10:28:11 | M3 | | AccessorCalls.cs:30:9:30:12 | this access | AccessorCalls.cs:28:10:28:11 | M3 | +| AccessorCalls.cs:30:9:30:18 | After access to field Field | AccessorCalls.cs:28:10:28:11 | M3 | +| AccessorCalls.cs:30:9:30:18 | Before access to field Field | AccessorCalls.cs:28:10:28:11 | M3 | | AccessorCalls.cs:30:9:30:18 | access to field Field | AccessorCalls.cs:28:10:28:11 | M3 | | AccessorCalls.cs:30:9:30:20 | ...++ | AccessorCalls.cs:28:10:28:11 | M3 | +| AccessorCalls.cs:30:9:30:20 | After ...++ | AccessorCalls.cs:28:10:28:11 | M3 | +| AccessorCalls.cs:30:9:30:20 | Before ...++ | AccessorCalls.cs:28:10:28:11 | M3 | | AccessorCalls.cs:30:9:30:21 | ...; | AccessorCalls.cs:28:10:28:11 | M3 | +| AccessorCalls.cs:30:9:30:21 | After ...; | AccessorCalls.cs:28:10:28:11 | M3 | | AccessorCalls.cs:31:9:31:12 | this access | AccessorCalls.cs:28:10:28:11 | M3 | +| AccessorCalls.cs:31:9:31:17 | After access to property Prop | AccessorCalls.cs:28:10:28:11 | M3 | +| AccessorCalls.cs:31:9:31:17 | Before access to property Prop | AccessorCalls.cs:28:10:28:11 | M3 | | AccessorCalls.cs:31:9:31:17 | access to property Prop | AccessorCalls.cs:28:10:28:11 | M3 | | AccessorCalls.cs:31:9:31:19 | ...++ | AccessorCalls.cs:28:10:28:11 | M3 | +| AccessorCalls.cs:31:9:31:19 | After ...++ | AccessorCalls.cs:28:10:28:11 | M3 | +| AccessorCalls.cs:31:9:31:19 | Before ...++ | AccessorCalls.cs:28:10:28:11 | M3 | | AccessorCalls.cs:31:9:31:20 | ...; | AccessorCalls.cs:28:10:28:11 | M3 | +| AccessorCalls.cs:31:9:31:20 | After ...; | AccessorCalls.cs:28:10:28:11 | M3 | | AccessorCalls.cs:32:9:32:12 | this access | AccessorCalls.cs:28:10:28:11 | M3 | +| AccessorCalls.cs:32:9:32:15 | After access to indexer | AccessorCalls.cs:28:10:28:11 | M3 | +| AccessorCalls.cs:32:9:32:15 | Before access to indexer | AccessorCalls.cs:28:10:28:11 | M3 | | AccessorCalls.cs:32:9:32:15 | access to indexer | AccessorCalls.cs:28:10:28:11 | M3 | | AccessorCalls.cs:32:9:32:17 | ...++ | AccessorCalls.cs:28:10:28:11 | M3 | +| AccessorCalls.cs:32:9:32:17 | After ...++ | AccessorCalls.cs:28:10:28:11 | M3 | +| AccessorCalls.cs:32:9:32:17 | Before ...++ | AccessorCalls.cs:28:10:28:11 | M3 | | AccessorCalls.cs:32:9:32:18 | ...; | AccessorCalls.cs:28:10:28:11 | M3 | +| AccessorCalls.cs:32:9:32:18 | After ...; | AccessorCalls.cs:28:10:28:11 | M3 | | AccessorCalls.cs:32:14:32:14 | 0 | AccessorCalls.cs:28:10:28:11 | M3 | -| AccessorCalls.cs:35:10:35:11 | enter M4 | AccessorCalls.cs:35:10:35:11 | M4 | -| AccessorCalls.cs:35:10:35:11 | exit M4 | AccessorCalls.cs:35:10:35:11 | M4 | -| AccessorCalls.cs:35:10:35:11 | exit M4 (normal) | AccessorCalls.cs:35:10:35:11 | M4 | +| AccessorCalls.cs:35:10:35:11 | Entry | AccessorCalls.cs:35:10:35:11 | M4 | +| AccessorCalls.cs:35:10:35:11 | Exit | AccessorCalls.cs:35:10:35:11 | M4 | +| AccessorCalls.cs:35:10:35:11 | Normal Exit | AccessorCalls.cs:35:10:35:11 | M4 | +| AccessorCalls.cs:36:5:40:5 | After {...} | AccessorCalls.cs:35:10:35:11 | M4 | | AccessorCalls.cs:36:5:40:5 | {...} | AccessorCalls.cs:35:10:35:11 | M4 | | AccessorCalls.cs:37:9:37:12 | this access | AccessorCalls.cs:35:10:35:11 | M4 | +| AccessorCalls.cs:37:9:37:14 | After access to field x | AccessorCalls.cs:35:10:35:11 | M4 | +| AccessorCalls.cs:37:9:37:14 | Before access to field x | AccessorCalls.cs:35:10:35:11 | M4 | | AccessorCalls.cs:37:9:37:14 | access to field x | AccessorCalls.cs:35:10:35:11 | M4 | +| AccessorCalls.cs:37:9:37:20 | After access to field Field | AccessorCalls.cs:35:10:35:11 | M4 | +| AccessorCalls.cs:37:9:37:20 | Before access to field Field | AccessorCalls.cs:35:10:35:11 | M4 | | AccessorCalls.cs:37:9:37:20 | access to field Field | AccessorCalls.cs:35:10:35:11 | M4 | | AccessorCalls.cs:37:9:37:22 | ...++ | AccessorCalls.cs:35:10:35:11 | M4 | +| AccessorCalls.cs:37:9:37:22 | After ...++ | AccessorCalls.cs:35:10:35:11 | M4 | +| AccessorCalls.cs:37:9:37:22 | Before ...++ | AccessorCalls.cs:35:10:35:11 | M4 | | AccessorCalls.cs:37:9:37:23 | ...; | AccessorCalls.cs:35:10:35:11 | M4 | +| AccessorCalls.cs:37:9:37:23 | After ...; | AccessorCalls.cs:35:10:35:11 | M4 | | AccessorCalls.cs:38:9:38:12 | this access | AccessorCalls.cs:35:10:35:11 | M4 | +| AccessorCalls.cs:38:9:38:14 | After access to field x | AccessorCalls.cs:35:10:35:11 | M4 | +| AccessorCalls.cs:38:9:38:14 | Before access to field x | AccessorCalls.cs:35:10:35:11 | M4 | | AccessorCalls.cs:38:9:38:14 | access to field x | AccessorCalls.cs:35:10:35:11 | M4 | +| AccessorCalls.cs:38:9:38:19 | After access to property Prop | AccessorCalls.cs:35:10:35:11 | M4 | +| AccessorCalls.cs:38:9:38:19 | Before access to property Prop | AccessorCalls.cs:35:10:35:11 | M4 | | AccessorCalls.cs:38:9:38:19 | access to property Prop | AccessorCalls.cs:35:10:35:11 | M4 | | AccessorCalls.cs:38:9:38:21 | ...++ | AccessorCalls.cs:35:10:35:11 | M4 | +| AccessorCalls.cs:38:9:38:21 | After ...++ | AccessorCalls.cs:35:10:35:11 | M4 | +| AccessorCalls.cs:38:9:38:21 | Before ...++ | AccessorCalls.cs:35:10:35:11 | M4 | | AccessorCalls.cs:38:9:38:22 | ...; | AccessorCalls.cs:35:10:35:11 | M4 | +| AccessorCalls.cs:38:9:38:22 | After ...; | AccessorCalls.cs:35:10:35:11 | M4 | | AccessorCalls.cs:39:9:39:12 | this access | AccessorCalls.cs:35:10:35:11 | M4 | +| AccessorCalls.cs:39:9:39:14 | After access to field x | AccessorCalls.cs:35:10:35:11 | M4 | +| AccessorCalls.cs:39:9:39:14 | Before access to field x | AccessorCalls.cs:35:10:35:11 | M4 | | AccessorCalls.cs:39:9:39:14 | access to field x | AccessorCalls.cs:35:10:35:11 | M4 | +| AccessorCalls.cs:39:9:39:17 | After access to indexer | AccessorCalls.cs:35:10:35:11 | M4 | +| AccessorCalls.cs:39:9:39:17 | Before access to indexer | AccessorCalls.cs:35:10:35:11 | M4 | | AccessorCalls.cs:39:9:39:17 | access to indexer | AccessorCalls.cs:35:10:35:11 | M4 | | AccessorCalls.cs:39:9:39:19 | ...++ | AccessorCalls.cs:35:10:35:11 | M4 | +| AccessorCalls.cs:39:9:39:19 | After ...++ | AccessorCalls.cs:35:10:35:11 | M4 | +| AccessorCalls.cs:39:9:39:19 | Before ...++ | AccessorCalls.cs:35:10:35:11 | M4 | | AccessorCalls.cs:39:9:39:20 | ...; | AccessorCalls.cs:35:10:35:11 | M4 | +| AccessorCalls.cs:39:9:39:20 | After ...; | AccessorCalls.cs:35:10:35:11 | M4 | | AccessorCalls.cs:39:16:39:16 | 0 | AccessorCalls.cs:35:10:35:11 | M4 | -| AccessorCalls.cs:42:10:42:11 | enter M5 | AccessorCalls.cs:42:10:42:11 | M5 | -| AccessorCalls.cs:42:10:42:11 | exit M5 | AccessorCalls.cs:42:10:42:11 | M5 | -| AccessorCalls.cs:42:10:42:11 | exit M5 (normal) | AccessorCalls.cs:42:10:42:11 | M5 | +| AccessorCalls.cs:42:10:42:11 | Entry | AccessorCalls.cs:42:10:42:11 | M5 | +| AccessorCalls.cs:42:10:42:11 | Exit | AccessorCalls.cs:42:10:42:11 | M5 | +| AccessorCalls.cs:42:10:42:11 | Normal Exit | AccessorCalls.cs:42:10:42:11 | M5 | +| AccessorCalls.cs:43:5:47:5 | After {...} | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:43:5:47:5 | {...} | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:44:9:44:12 | this access | AccessorCalls.cs:42:10:42:11 | M5 | +| AccessorCalls.cs:44:9:44:18 | After access to field Field | AccessorCalls.cs:42:10:42:11 | M5 | +| AccessorCalls.cs:44:9:44:18 | Before access to field Field | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:44:9:44:18 | access to field Field | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:44:9:44:32 | ... += ... | AccessorCalls.cs:42:10:42:11 | M5 | +| AccessorCalls.cs:44:9:44:32 | After ... += ... | AccessorCalls.cs:42:10:42:11 | M5 | +| AccessorCalls.cs:44:9:44:32 | Before ... += ... | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:44:9:44:33 | ...; | AccessorCalls.cs:42:10:42:11 | M5 | +| AccessorCalls.cs:44:9:44:33 | After ...; | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:44:23:44:26 | this access | AccessorCalls.cs:42:10:42:11 | M5 | +| AccessorCalls.cs:44:23:44:32 | After access to field Field | AccessorCalls.cs:42:10:42:11 | M5 | +| AccessorCalls.cs:44:23:44:32 | Before access to field Field | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:44:23:44:32 | access to field Field | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:45:9:45:12 | this access | AccessorCalls.cs:42:10:42:11 | M5 | +| AccessorCalls.cs:45:9:45:17 | After access to property Prop | AccessorCalls.cs:42:10:42:11 | M5 | +| AccessorCalls.cs:45:9:45:17 | Before access to property Prop | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:45:9:45:17 | access to property Prop | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:45:9:45:30 | ... += ... | AccessorCalls.cs:42:10:42:11 | M5 | +| AccessorCalls.cs:45:9:45:30 | After ... += ... | AccessorCalls.cs:42:10:42:11 | M5 | +| AccessorCalls.cs:45:9:45:30 | Before ... += ... | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:45:9:45:31 | ...; | AccessorCalls.cs:42:10:42:11 | M5 | +| AccessorCalls.cs:45:9:45:31 | After ...; | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:45:22:45:25 | this access | AccessorCalls.cs:42:10:42:11 | M5 | +| AccessorCalls.cs:45:22:45:30 | After access to property Prop | AccessorCalls.cs:42:10:42:11 | M5 | +| AccessorCalls.cs:45:22:45:30 | Before access to property Prop | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:45:22:45:30 | access to property Prop | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:46:9:46:12 | this access | AccessorCalls.cs:42:10:42:11 | M5 | +| AccessorCalls.cs:46:9:46:15 | After access to indexer | AccessorCalls.cs:42:10:42:11 | M5 | +| AccessorCalls.cs:46:9:46:15 | Before access to indexer | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:46:9:46:15 | access to indexer | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:46:9:46:26 | ... += ... | AccessorCalls.cs:42:10:42:11 | M5 | +| AccessorCalls.cs:46:9:46:26 | After ... += ... | AccessorCalls.cs:42:10:42:11 | M5 | +| AccessorCalls.cs:46:9:46:26 | Before ... += ... | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:46:9:46:27 | ...; | AccessorCalls.cs:42:10:42:11 | M5 | +| AccessorCalls.cs:46:9:46:27 | After ...; | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:46:14:46:14 | 0 | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:46:20:46:23 | this access | AccessorCalls.cs:42:10:42:11 | M5 | +| AccessorCalls.cs:46:20:46:26 | After access to indexer | AccessorCalls.cs:42:10:42:11 | M5 | +| AccessorCalls.cs:46:20:46:26 | Before access to indexer | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:46:20:46:26 | access to indexer | AccessorCalls.cs:42:10:42:11 | M5 | | AccessorCalls.cs:46:25:46:25 | 0 | AccessorCalls.cs:42:10:42:11 | M5 | -| AccessorCalls.cs:49:10:49:11 | enter M6 | AccessorCalls.cs:49:10:49:11 | M6 | -| AccessorCalls.cs:49:10:49:11 | exit M6 | AccessorCalls.cs:49:10:49:11 | M6 | -| AccessorCalls.cs:49:10:49:11 | exit M6 (normal) | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:49:10:49:11 | Entry | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:49:10:49:11 | Exit | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:49:10:49:11 | Normal Exit | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:50:5:54:5 | After {...} | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:50:5:54:5 | {...} | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:51:9:51:12 | this access | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:51:9:51:14 | After access to field x | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:51:9:51:14 | Before access to field x | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:51:9:51:14 | access to field x | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:51:9:51:20 | After access to field Field | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:51:9:51:20 | Before access to field Field | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:51:9:51:20 | access to field Field | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:51:9:51:36 | ... += ... | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:51:9:51:36 | After ... += ... | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:51:9:51:36 | Before ... += ... | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:51:9:51:37 | ...; | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:51:9:51:37 | After ...; | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:51:25:51:28 | this access | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:51:25:51:30 | After access to field x | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:51:25:51:30 | Before access to field x | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:51:25:51:30 | access to field x | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:51:25:51:36 | After access to field Field | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:51:25:51:36 | Before access to field Field | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:51:25:51:36 | access to field Field | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:52:9:52:12 | this access | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:52:9:52:14 | After access to field x | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:52:9:52:14 | Before access to field x | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:52:9:52:14 | access to field x | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:52:9:52:19 | After access to property Prop | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:52:9:52:19 | Before access to property Prop | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:52:9:52:19 | access to property Prop | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:52:9:52:34 | ... += ... | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:52:9:52:34 | After ... += ... | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:52:9:52:34 | Before ... += ... | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:52:9:52:35 | ...; | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:52:9:52:35 | After ...; | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:52:24:52:27 | this access | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:52:24:52:29 | After access to field x | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:52:24:52:29 | Before access to field x | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:52:24:52:29 | access to field x | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:52:24:52:34 | After access to property Prop | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:52:24:52:34 | Before access to property Prop | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:52:24:52:34 | access to property Prop | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:53:9:53:12 | this access | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:53:9:53:14 | After access to field x | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:53:9:53:14 | Before access to field x | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:53:9:53:14 | access to field x | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:53:9:53:17 | After access to indexer | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:53:9:53:17 | Before access to indexer | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:53:9:53:17 | access to indexer | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:53:9:53:30 | ... += ... | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:53:9:53:30 | After ... += ... | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:53:9:53:30 | Before ... += ... | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:53:9:53:31 | ...; | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:53:9:53:31 | After ...; | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:53:16:53:16 | 0 | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:53:22:53:25 | this access | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:53:22:53:27 | After access to field x | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:53:22:53:27 | Before access to field x | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:53:22:53:27 | access to field x | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:53:22:53:30 | After access to indexer | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:53:22:53:30 | Before access to indexer | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:53:22:53:30 | access to indexer | AccessorCalls.cs:49:10:49:11 | M6 | | AccessorCalls.cs:53:29:53:29 | 0 | AccessorCalls.cs:49:10:49:11 | M6 | -| AccessorCalls.cs:56:10:56:11 | enter M7 | AccessorCalls.cs:56:10:56:11 | M7 | -| AccessorCalls.cs:56:10:56:11 | exit M7 | AccessorCalls.cs:56:10:56:11 | M7 | -| AccessorCalls.cs:56:10:56:11 | exit M7 (normal) | AccessorCalls.cs:56:10:56:11 | M7 | +| AccessorCalls.cs:56:10:56:11 | Entry | AccessorCalls.cs:56:10:56:11 | M7 | +| AccessorCalls.cs:56:10:56:11 | Exit | AccessorCalls.cs:56:10:56:11 | M7 | +| AccessorCalls.cs:56:10:56:11 | Normal Exit | AccessorCalls.cs:56:10:56:11 | M7 | +| AccessorCalls.cs:56:17:56:17 | i | AccessorCalls.cs:56:10:56:11 | M7 | +| AccessorCalls.cs:57:5:59:5 | After {...} | AccessorCalls.cs:56:10:56:11 | M7 | | AccessorCalls.cs:57:5:59:5 | {...} | AccessorCalls.cs:56:10:56:11 | M7 | | AccessorCalls.cs:58:9:58:45 | (..., ...) | AccessorCalls.cs:56:10:56:11 | M7 | +| AccessorCalls.cs:58:9:58:45 | After (..., ...) | AccessorCalls.cs:56:10:56:11 | M7 | +| AccessorCalls.cs:58:9:58:45 | Before (..., ...) | AccessorCalls.cs:56:10:56:11 | M7 | | AccessorCalls.cs:58:9:58:85 | ... = ... | AccessorCalls.cs:56:10:56:11 | M7 | +| AccessorCalls.cs:58:9:58:85 | After ... = ... | AccessorCalls.cs:56:10:56:11 | M7 | +| AccessorCalls.cs:58:9:58:85 | Before ... = ... | AccessorCalls.cs:56:10:56:11 | M7 | | AccessorCalls.cs:58:9:58:86 | ...; | AccessorCalls.cs:56:10:56:11 | M7 | +| AccessorCalls.cs:58:9:58:86 | After ...; | AccessorCalls.cs:56:10:56:11 | M7 | | AccessorCalls.cs:58:10:58:13 | this access | AccessorCalls.cs:56:10:56:11 | M7 | +| AccessorCalls.cs:58:10:58:19 | After access to field Field | AccessorCalls.cs:56:10:56:11 | M7 | +| AccessorCalls.cs:58:10:58:19 | Before access to field Field | AccessorCalls.cs:56:10:56:11 | M7 | | AccessorCalls.cs:58:10:58:19 | access to field Field | AccessorCalls.cs:56:10:56:11 | M7 | | AccessorCalls.cs:58:22:58:25 | this access | AccessorCalls.cs:56:10:56:11 | M7 | +| AccessorCalls.cs:58:22:58:30 | After access to property Prop | AccessorCalls.cs:56:10:56:11 | M7 | +| AccessorCalls.cs:58:22:58:30 | Before access to property Prop | AccessorCalls.cs:56:10:56:11 | M7 | | AccessorCalls.cs:58:22:58:30 | access to property Prop | AccessorCalls.cs:56:10:56:11 | M7 | | AccessorCalls.cs:58:33:58:44 | (..., ...) | AccessorCalls.cs:56:10:56:11 | M7 | +| AccessorCalls.cs:58:33:58:44 | After (..., ...) | AccessorCalls.cs:56:10:56:11 | M7 | +| AccessorCalls.cs:58:33:58:44 | Before (..., ...) | AccessorCalls.cs:56:10:56:11 | M7 | +| AccessorCalls.cs:58:34:58:34 | access to parameter i | AccessorCalls.cs:56:10:56:11 | M7 | | AccessorCalls.cs:58:37:58:40 | this access | AccessorCalls.cs:56:10:56:11 | M7 | +| AccessorCalls.cs:58:37:58:43 | After access to indexer | AccessorCalls.cs:56:10:56:11 | M7 | +| AccessorCalls.cs:58:37:58:43 | Before access to indexer | AccessorCalls.cs:56:10:56:11 | M7 | | AccessorCalls.cs:58:37:58:43 | access to indexer | AccessorCalls.cs:56:10:56:11 | M7 | | AccessorCalls.cs:58:42:58:42 | 0 | AccessorCalls.cs:56:10:56:11 | M7 | | AccessorCalls.cs:58:49:58:85 | (..., ...) | AccessorCalls.cs:56:10:56:11 | M7 | +| AccessorCalls.cs:58:49:58:85 | After (..., ...) | AccessorCalls.cs:56:10:56:11 | M7 | +| AccessorCalls.cs:58:49:58:85 | Before (..., ...) | AccessorCalls.cs:56:10:56:11 | M7 | | AccessorCalls.cs:58:50:58:53 | this access | AccessorCalls.cs:56:10:56:11 | M7 | +| AccessorCalls.cs:58:50:58:59 | After access to field Field | AccessorCalls.cs:56:10:56:11 | M7 | +| AccessorCalls.cs:58:50:58:59 | Before access to field Field | AccessorCalls.cs:56:10:56:11 | M7 | | AccessorCalls.cs:58:50:58:59 | access to field Field | AccessorCalls.cs:56:10:56:11 | M7 | | AccessorCalls.cs:58:62:58:65 | this access | AccessorCalls.cs:56:10:56:11 | M7 | +| AccessorCalls.cs:58:62:58:70 | After access to property Prop | AccessorCalls.cs:56:10:56:11 | M7 | +| AccessorCalls.cs:58:62:58:70 | Before access to property Prop | AccessorCalls.cs:56:10:56:11 | M7 | | AccessorCalls.cs:58:62:58:70 | access to property Prop | AccessorCalls.cs:56:10:56:11 | M7 | | AccessorCalls.cs:58:73:58:84 | (..., ...) | AccessorCalls.cs:56:10:56:11 | M7 | +| AccessorCalls.cs:58:73:58:84 | After (..., ...) | AccessorCalls.cs:56:10:56:11 | M7 | +| AccessorCalls.cs:58:73:58:84 | Before (..., ...) | AccessorCalls.cs:56:10:56:11 | M7 | | AccessorCalls.cs:58:74:58:74 | 0 | AccessorCalls.cs:56:10:56:11 | M7 | | AccessorCalls.cs:58:77:58:80 | this access | AccessorCalls.cs:56:10:56:11 | M7 | +| AccessorCalls.cs:58:77:58:83 | After access to indexer | AccessorCalls.cs:56:10:56:11 | M7 | +| AccessorCalls.cs:58:77:58:83 | Before access to indexer | AccessorCalls.cs:56:10:56:11 | M7 | | AccessorCalls.cs:58:77:58:83 | access to indexer | AccessorCalls.cs:56:10:56:11 | M7 | | AccessorCalls.cs:58:82:58:82 | 1 | AccessorCalls.cs:56:10:56:11 | M7 | -| AccessorCalls.cs:61:10:61:11 | enter M8 | AccessorCalls.cs:61:10:61:11 | M8 | -| AccessorCalls.cs:61:10:61:11 | exit M8 | AccessorCalls.cs:61:10:61:11 | M8 | -| AccessorCalls.cs:61:10:61:11 | exit M8 (normal) | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:61:10:61:11 | Entry | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:61:10:61:11 | Exit | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:61:10:61:11 | Normal Exit | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:61:17:61:17 | i | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:62:5:64:5 | After {...} | AccessorCalls.cs:61:10:61:11 | M8 | | AccessorCalls.cs:62:5:64:5 | {...} | AccessorCalls.cs:61:10:61:11 | M8 | | AccessorCalls.cs:63:9:63:51 | (..., ...) | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:63:9:63:51 | After (..., ...) | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:63:9:63:51 | Before (..., ...) | AccessorCalls.cs:61:10:61:11 | M8 | | AccessorCalls.cs:63:9:63:97 | ... = ... | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:63:9:63:97 | After ... = ... | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:63:9:63:97 | Before ... = ... | AccessorCalls.cs:61:10:61:11 | M8 | | AccessorCalls.cs:63:9:63:98 | ...; | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:63:9:63:98 | After ...; | AccessorCalls.cs:61:10:61:11 | M8 | | AccessorCalls.cs:63:10:63:13 | this access | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:63:10:63:15 | After access to field x | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:63:10:63:15 | Before access to field x | AccessorCalls.cs:61:10:61:11 | M8 | | AccessorCalls.cs:63:10:63:15 | access to field x | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:63:10:63:21 | After access to field Field | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:63:10:63:21 | Before access to field Field | AccessorCalls.cs:61:10:61:11 | M8 | | AccessorCalls.cs:63:10:63:21 | access to field Field | AccessorCalls.cs:61:10:61:11 | M8 | | AccessorCalls.cs:63:24:63:27 | this access | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:63:24:63:29 | After access to field x | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:63:24:63:29 | Before access to field x | AccessorCalls.cs:61:10:61:11 | M8 | | AccessorCalls.cs:63:24:63:29 | access to field x | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:63:24:63:34 | After access to property Prop | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:63:24:63:34 | Before access to property Prop | AccessorCalls.cs:61:10:61:11 | M8 | | AccessorCalls.cs:63:24:63:34 | access to property Prop | AccessorCalls.cs:61:10:61:11 | M8 | | AccessorCalls.cs:63:37:63:50 | (..., ...) | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:63:37:63:50 | After (..., ...) | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:63:37:63:50 | Before (..., ...) | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:63:38:63:38 | access to parameter i | AccessorCalls.cs:61:10:61:11 | M8 | | AccessorCalls.cs:63:41:63:44 | this access | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:63:41:63:46 | After access to field x | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:63:41:63:46 | Before access to field x | AccessorCalls.cs:61:10:61:11 | M8 | | AccessorCalls.cs:63:41:63:46 | access to field x | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:63:41:63:49 | After access to indexer | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:63:41:63:49 | Before access to indexer | AccessorCalls.cs:61:10:61:11 | M8 | | AccessorCalls.cs:63:41:63:49 | access to indexer | AccessorCalls.cs:61:10:61:11 | M8 | | AccessorCalls.cs:63:48:63:48 | 0 | AccessorCalls.cs:61:10:61:11 | M8 | | AccessorCalls.cs:63:55:63:97 | (..., ...) | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:63:55:63:97 | After (..., ...) | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:63:55:63:97 | Before (..., ...) | AccessorCalls.cs:61:10:61:11 | M8 | | AccessorCalls.cs:63:56:63:59 | this access | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:63:56:63:61 | After access to field x | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:63:56:63:61 | Before access to field x | AccessorCalls.cs:61:10:61:11 | M8 | | AccessorCalls.cs:63:56:63:61 | access to field x | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:63:56:63:67 | After access to field Field | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:63:56:63:67 | Before access to field Field | AccessorCalls.cs:61:10:61:11 | M8 | | AccessorCalls.cs:63:56:63:67 | access to field Field | AccessorCalls.cs:61:10:61:11 | M8 | | AccessorCalls.cs:63:70:63:73 | this access | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:63:70:63:75 | After access to field x | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:63:70:63:75 | Before access to field x | AccessorCalls.cs:61:10:61:11 | M8 | | AccessorCalls.cs:63:70:63:75 | access to field x | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:63:70:63:80 | After access to property Prop | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:63:70:63:80 | Before access to property Prop | AccessorCalls.cs:61:10:61:11 | M8 | | AccessorCalls.cs:63:70:63:80 | access to property Prop | AccessorCalls.cs:61:10:61:11 | M8 | | AccessorCalls.cs:63:83:63:96 | (..., ...) | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:63:83:63:96 | After (..., ...) | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:63:83:63:96 | Before (..., ...) | AccessorCalls.cs:61:10:61:11 | M8 | | AccessorCalls.cs:63:84:63:84 | 0 | AccessorCalls.cs:61:10:61:11 | M8 | | AccessorCalls.cs:63:87:63:90 | this access | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:63:87:63:92 | After access to field x | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:63:87:63:92 | Before access to field x | AccessorCalls.cs:61:10:61:11 | M8 | | AccessorCalls.cs:63:87:63:92 | access to field x | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:63:87:63:95 | After access to indexer | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:63:87:63:95 | Before access to indexer | AccessorCalls.cs:61:10:61:11 | M8 | | AccessorCalls.cs:63:87:63:95 | access to indexer | AccessorCalls.cs:61:10:61:11 | M8 | | AccessorCalls.cs:63:94:63:94 | 1 | AccessorCalls.cs:61:10:61:11 | M8 | -| AccessorCalls.cs:66:10:66:11 | enter M9 | AccessorCalls.cs:66:10:66:11 | M9 | -| AccessorCalls.cs:66:10:66:11 | exit M9 | AccessorCalls.cs:66:10:66:11 | M9 | -| AccessorCalls.cs:66:10:66:11 | exit M9 (normal) | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:66:10:66:11 | Entry | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:66:10:66:11 | Exit | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:66:10:66:11 | Normal Exit | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:66:20:66:20 | o | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:66:27:66:27 | i | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:66:43:66:43 | e | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:67:5:74:5 | After {...} | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:67:5:74:5 | {...} | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:68:9:68:22 | ... ...; | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:68:9:68:22 | After ... ...; | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:68:17:68:17 | access to local variable d | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:68:17:68:21 | After dynamic d = ... | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:68:17:68:21 | Before dynamic d = ... | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:68:17:68:21 | dynamic d = ... | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:68:21:68:21 | access to parameter o | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:69:9:69:9 | access to local variable d | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:69:9:69:20 | After dynamic access to member MaybeProp1 | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:69:9:69:20 | Before dynamic access to member MaybeProp1 | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:69:9:69:20 | dynamic access to member MaybeProp1 | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:69:9:69:35 | ... = ... | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:69:9:69:35 | After ... = ... | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:69:9:69:35 | Before ... = ... | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:69:9:69:36 | ...; | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:69:9:69:36 | After ...; | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:69:24:69:24 | access to local variable d | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:69:24:69:35 | After dynamic access to member MaybeProp2 | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:69:24:69:35 | Before dynamic access to member MaybeProp2 | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:69:24:69:35 | dynamic access to member MaybeProp2 | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:70:9:70:9 | access to local variable d | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:70:9:70:19 | After dynamic access to member MaybeProp | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:70:9:70:19 | Before dynamic access to member MaybeProp | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:70:9:70:19 | dynamic access to member MaybeProp | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:70:9:70:21 | After dynamic call to operator ++ | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:70:9:70:21 | Before dynamic call to operator ++ | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:70:9:70:21 | dynamic call to operator ++ | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:70:9:70:22 | ...; | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:70:9:70:22 | After ...; | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:71:9:71:9 | access to local variable d | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:71:9:71:20 | After dynamic access to member MaybeEvent | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:71:9:71:20 | Before dynamic access to member MaybeEvent | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:71:9:71:20 | dynamic access to member MaybeEvent | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:71:9:71:25 | ... += ... | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:71:9:71:25 | After ... += ... | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:71:9:71:25 | Before ... += ... | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:71:9:71:26 | ...; | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:71:9:71:26 | After ...; | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:71:25:71:25 | access to parameter e | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:72:9:72:9 | access to local variable d | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:72:9:72:12 | After dynamic access to element | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:72:9:72:12 | Before dynamic access to element | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:72:9:72:12 | dynamic access to element | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:72:9:72:20 | ... += ... | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:72:9:72:20 | After ... += ... | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:72:9:72:20 | Before ... += ... | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:72:9:72:21 | ...; | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:72:9:72:21 | After ...; | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:72:11:72:11 | 0 | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:72:17:72:17 | access to local variable d | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:72:17:72:20 | After dynamic access to element | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:72:17:72:20 | Before dynamic access to element | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:72:17:72:20 | dynamic access to element | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:72:19:72:19 | 1 | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:73:9:73:44 | (..., ...) | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:73:9:73:44 | After (..., ...) | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:73:9:73:44 | Before (..., ...) | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:73:9:73:83 | ... = ... | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:73:9:73:83 | After ... = ... | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:73:9:73:83 | Before ... = ... | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:73:9:73:84 | ...; | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:73:9:73:84 | After ...; | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:73:10:73:10 | access to local variable d | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:73:10:73:21 | After dynamic access to member MaybeProp1 | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:73:10:73:21 | Before dynamic access to member MaybeProp1 | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:73:10:73:21 | dynamic access to member MaybeProp1 | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:73:24:73:27 | this access | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:73:24:73:32 | After access to property Prop | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:73:24:73:32 | Before access to property Prop | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:73:24:73:32 | access to property Prop | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:73:35:73:43 | (..., ...) | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:73:35:73:43 | After (..., ...) | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:73:35:73:43 | Before (..., ...) | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:73:36:73:36 | access to parameter i | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:73:39:73:39 | access to local variable d | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:73:39:73:42 | After dynamic access to element | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:73:39:73:42 | Before dynamic access to element | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:73:39:73:42 | dynamic access to element | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:73:41:73:41 | 0 | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:73:48:73:83 | (..., ...) | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:73:48:73:83 | After (..., ...) | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:73:48:73:83 | Before (..., ...) | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:73:49:73:49 | access to local variable d | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:73:49:73:60 | After dynamic access to member MaybeProp1 | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:73:49:73:60 | Before dynamic access to member MaybeProp1 | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:73:49:73:60 | dynamic access to member MaybeProp1 | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:73:63:73:66 | this access | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:73:63:73:71 | After access to property Prop | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:73:63:73:71 | Before access to property Prop | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:73:63:73:71 | access to property Prop | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:73:74:73:82 | (..., ...) | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:73:74:73:82 | After (..., ...) | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:73:74:73:82 | Before (..., ...) | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:73:75:73:75 | 0 | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:73:78:73:78 | access to local variable d | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:73:78:73:81 | After dynamic access to element | AccessorCalls.cs:66:10:66:11 | M9 | +| AccessorCalls.cs:73:78:73:81 | Before dynamic access to element | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:73:78:73:81 | dynamic access to element | AccessorCalls.cs:66:10:66:11 | M9 | | AccessorCalls.cs:73:80:73:80 | 1 | AccessorCalls.cs:66:10:66:11 | M9 | +| ArrayCreation.cs:1:7:1:19 | After call to constructor Object | ArrayCreation.cs:1:7:1:19 | ArrayCreation | +| ArrayCreation.cs:1:7:1:19 | After call to method | ArrayCreation.cs:1:7:1:19 | ArrayCreation | +| ArrayCreation.cs:1:7:1:19 | Before call to constructor Object | ArrayCreation.cs:1:7:1:19 | ArrayCreation | +| ArrayCreation.cs:1:7:1:19 | Before call to method | ArrayCreation.cs:1:7:1:19 | ArrayCreation | +| ArrayCreation.cs:1:7:1:19 | Entry | ArrayCreation.cs:1:7:1:19 | ArrayCreation | +| ArrayCreation.cs:1:7:1:19 | Exit | ArrayCreation.cs:1:7:1:19 | ArrayCreation | +| ArrayCreation.cs:1:7:1:19 | Normal Exit | ArrayCreation.cs:1:7:1:19 | ArrayCreation | | ArrayCreation.cs:1:7:1:19 | call to constructor Object | ArrayCreation.cs:1:7:1:19 | ArrayCreation | | ArrayCreation.cs:1:7:1:19 | call to method | ArrayCreation.cs:1:7:1:19 | ArrayCreation | -| ArrayCreation.cs:1:7:1:19 | enter ArrayCreation | ArrayCreation.cs:1:7:1:19 | ArrayCreation | -| ArrayCreation.cs:1:7:1:19 | exit ArrayCreation | ArrayCreation.cs:1:7:1:19 | ArrayCreation | -| ArrayCreation.cs:1:7:1:19 | exit ArrayCreation (normal) | ArrayCreation.cs:1:7:1:19 | ArrayCreation | | ArrayCreation.cs:1:7:1:19 | this access | ArrayCreation.cs:1:7:1:19 | ArrayCreation | | ArrayCreation.cs:1:7:1:19 | {...} | ArrayCreation.cs:1:7:1:19 | ArrayCreation | -| ArrayCreation.cs:3:11:3:12 | enter M1 | ArrayCreation.cs:3:11:3:12 | M1 | -| ArrayCreation.cs:3:11:3:12 | exit M1 | ArrayCreation.cs:3:11:3:12 | M1 | -| ArrayCreation.cs:3:11:3:12 | exit M1 (normal) | ArrayCreation.cs:3:11:3:12 | M1 | +| ArrayCreation.cs:3:11:3:12 | Entry | ArrayCreation.cs:3:11:3:12 | M1 | +| ArrayCreation.cs:3:11:3:12 | Exit | ArrayCreation.cs:3:11:3:12 | M1 | +| ArrayCreation.cs:3:11:3:12 | Normal Exit | ArrayCreation.cs:3:11:3:12 | M1 | +| ArrayCreation.cs:3:19:3:28 | After array creation of type Int32[] | ArrayCreation.cs:3:11:3:12 | M1 | +| ArrayCreation.cs:3:19:3:28 | Before array creation of type Int32[] | ArrayCreation.cs:3:11:3:12 | M1 | | ArrayCreation.cs:3:19:3:28 | array creation of type Int32[] | ArrayCreation.cs:3:11:3:12 | M1 | | ArrayCreation.cs:3:27:3:27 | 0 | ArrayCreation.cs:3:11:3:12 | M1 | -| ArrayCreation.cs:5:12:5:13 | enter M2 | ArrayCreation.cs:5:12:5:13 | M2 | -| ArrayCreation.cs:5:12:5:13 | exit M2 | ArrayCreation.cs:5:12:5:13 | M2 | -| ArrayCreation.cs:5:12:5:13 | exit M2 (normal) | ArrayCreation.cs:5:12:5:13 | M2 | +| ArrayCreation.cs:5:12:5:13 | Entry | ArrayCreation.cs:5:12:5:13 | M2 | +| ArrayCreation.cs:5:12:5:13 | Exit | ArrayCreation.cs:5:12:5:13 | M2 | +| ArrayCreation.cs:5:12:5:13 | Normal Exit | ArrayCreation.cs:5:12:5:13 | M2 | +| ArrayCreation.cs:5:20:5:32 | After array creation of type Int32[,] | ArrayCreation.cs:5:12:5:13 | M2 | +| ArrayCreation.cs:5:20:5:32 | Before array creation of type Int32[,] | ArrayCreation.cs:5:12:5:13 | M2 | | ArrayCreation.cs:5:20:5:32 | array creation of type Int32[,] | ArrayCreation.cs:5:12:5:13 | M2 | | ArrayCreation.cs:5:28:5:28 | 0 | ArrayCreation.cs:5:12:5:13 | M2 | | ArrayCreation.cs:5:31:5:31 | 1 | ArrayCreation.cs:5:12:5:13 | M2 | -| ArrayCreation.cs:7:11:7:12 | enter M3 | ArrayCreation.cs:7:11:7:12 | M3 | -| ArrayCreation.cs:7:11:7:12 | exit M3 | ArrayCreation.cs:7:11:7:12 | M3 | -| ArrayCreation.cs:7:11:7:12 | exit M3 (normal) | ArrayCreation.cs:7:11:7:12 | M3 | +| ArrayCreation.cs:7:11:7:12 | Entry | ArrayCreation.cs:7:11:7:12 | M3 | +| ArrayCreation.cs:7:11:7:12 | Exit | ArrayCreation.cs:7:11:7:12 | M3 | +| ArrayCreation.cs:7:11:7:12 | Normal Exit | ArrayCreation.cs:7:11:7:12 | M3 | | ArrayCreation.cs:7:19:7:36 | 2 | ArrayCreation.cs:7:11:7:12 | M3 | +| ArrayCreation.cs:7:19:7:36 | After array creation of type Int32[] | ArrayCreation.cs:7:11:7:12 | M3 | +| ArrayCreation.cs:7:19:7:36 | Before array creation of type Int32[] | ArrayCreation.cs:7:11:7:12 | M3 | | ArrayCreation.cs:7:19:7:36 | array creation of type Int32[] | ArrayCreation.cs:7:11:7:12 | M3 | +| ArrayCreation.cs:7:29:7:36 | After { ..., ... } | ArrayCreation.cs:7:11:7:12 | M3 | +| ArrayCreation.cs:7:29:7:36 | Before { ..., ... } | ArrayCreation.cs:7:11:7:12 | M3 | | ArrayCreation.cs:7:29:7:36 | { ..., ... } | ArrayCreation.cs:7:11:7:12 | M3 | | ArrayCreation.cs:7:31:7:31 | 0 | ArrayCreation.cs:7:11:7:12 | M3 | | ArrayCreation.cs:7:34:7:34 | 1 | ArrayCreation.cs:7:11:7:12 | M3 | -| ArrayCreation.cs:9:12:9:13 | enter M4 | ArrayCreation.cs:9:12:9:13 | M4 | -| ArrayCreation.cs:9:12:9:13 | exit M4 | ArrayCreation.cs:9:12:9:13 | M4 | -| ArrayCreation.cs:9:12:9:13 | exit M4 (normal) | ArrayCreation.cs:9:12:9:13 | M4 | +| ArrayCreation.cs:9:12:9:13 | Entry | ArrayCreation.cs:9:12:9:13 | M4 | +| ArrayCreation.cs:9:12:9:13 | Exit | ArrayCreation.cs:9:12:9:13 | M4 | +| ArrayCreation.cs:9:12:9:13 | Normal Exit | ArrayCreation.cs:9:12:9:13 | M4 | | ArrayCreation.cs:9:20:9:52 | 2 | ArrayCreation.cs:9:12:9:13 | M4 | | ArrayCreation.cs:9:20:9:52 | 2 | ArrayCreation.cs:9:12:9:13 | M4 | +| ArrayCreation.cs:9:20:9:52 | After array creation of type Int32[,] | ArrayCreation.cs:9:12:9:13 | M4 | +| ArrayCreation.cs:9:20:9:52 | Before array creation of type Int32[,] | ArrayCreation.cs:9:12:9:13 | M4 | | ArrayCreation.cs:9:20:9:52 | array creation of type Int32[,] | ArrayCreation.cs:9:12:9:13 | M4 | +| ArrayCreation.cs:9:31:9:52 | After { ..., ... } | ArrayCreation.cs:9:12:9:13 | M4 | +| ArrayCreation.cs:9:31:9:52 | Before { ..., ... } | ArrayCreation.cs:9:12:9:13 | M4 | | ArrayCreation.cs:9:31:9:52 | { ..., ... } | ArrayCreation.cs:9:12:9:13 | M4 | +| ArrayCreation.cs:9:33:9:40 | After { ..., ... } | ArrayCreation.cs:9:12:9:13 | M4 | +| ArrayCreation.cs:9:33:9:40 | Before { ..., ... } | ArrayCreation.cs:9:12:9:13 | M4 | | ArrayCreation.cs:9:33:9:40 | { ..., ... } | ArrayCreation.cs:9:12:9:13 | M4 | | ArrayCreation.cs:9:35:9:35 | 0 | ArrayCreation.cs:9:12:9:13 | M4 | | ArrayCreation.cs:9:38:9:38 | 1 | ArrayCreation.cs:9:12:9:13 | M4 | +| ArrayCreation.cs:9:43:9:50 | After { ..., ... } | ArrayCreation.cs:9:12:9:13 | M4 | +| ArrayCreation.cs:9:43:9:50 | Before { ..., ... } | ArrayCreation.cs:9:12:9:13 | M4 | | ArrayCreation.cs:9:43:9:50 | { ..., ... } | ArrayCreation.cs:9:12:9:13 | M4 | | ArrayCreation.cs:9:45:9:45 | 2 | ArrayCreation.cs:9:12:9:13 | M4 | | ArrayCreation.cs:9:48:9:48 | 3 | ArrayCreation.cs:9:12:9:13 | M4 | +| Assert.cs:5:7:5:17 | After call to constructor Object | Assert.cs:5:7:5:17 | AssertTests | +| Assert.cs:5:7:5:17 | After call to method | Assert.cs:5:7:5:17 | AssertTests | +| Assert.cs:5:7:5:17 | Before call to constructor Object | Assert.cs:5:7:5:17 | AssertTests | +| Assert.cs:5:7:5:17 | Before call to method | Assert.cs:5:7:5:17 | AssertTests | +| Assert.cs:5:7:5:17 | Entry | Assert.cs:5:7:5:17 | AssertTests | +| Assert.cs:5:7:5:17 | Exit | Assert.cs:5:7:5:17 | AssertTests | +| Assert.cs:5:7:5:17 | Normal Exit | Assert.cs:5:7:5:17 | AssertTests | | Assert.cs:5:7:5:17 | call to constructor Object | Assert.cs:5:7:5:17 | AssertTests | | Assert.cs:5:7:5:17 | call to method | Assert.cs:5:7:5:17 | AssertTests | -| Assert.cs:5:7:5:17 | enter AssertTests | Assert.cs:5:7:5:17 | AssertTests | -| Assert.cs:5:7:5:17 | exit AssertTests | Assert.cs:5:7:5:17 | AssertTests | -| Assert.cs:5:7:5:17 | exit AssertTests (normal) | Assert.cs:5:7:5:17 | AssertTests | | Assert.cs:5:7:5:17 | this access | Assert.cs:5:7:5:17 | AssertTests | | Assert.cs:5:7:5:17 | {...} | Assert.cs:5:7:5:17 | AssertTests | -| Assert.cs:7:10:7:11 | enter M1 | Assert.cs:7:10:7:11 | M1 | -| Assert.cs:7:10:7:11 | exit M1 | Assert.cs:7:10:7:11 | M1 | -| Assert.cs:7:10:7:11 | exit M1 (abnormal) | Assert.cs:7:10:7:11 | M1 | -| Assert.cs:7:10:7:11 | exit M1 (normal) | Assert.cs:7:10:7:11 | M1 | +| Assert.cs:7:10:7:11 | Entry | Assert.cs:7:10:7:11 | M1 | +| Assert.cs:7:10:7:11 | Exceptional Exit | Assert.cs:7:10:7:11 | M1 | +| Assert.cs:7:10:7:11 | Exit | Assert.cs:7:10:7:11 | M1 | +| Assert.cs:7:10:7:11 | Normal Exit | Assert.cs:7:10:7:11 | M1 | +| Assert.cs:7:18:7:18 | b | Assert.cs:7:10:7:11 | M1 | +| Assert.cs:8:5:12:5 | After {...} | Assert.cs:7:10:7:11 | M1 | | Assert.cs:8:5:12:5 | {...} | Assert.cs:7:10:7:11 | M1 | | Assert.cs:9:9:9:33 | ... ...; | Assert.cs:7:10:7:11 | M1 | +| Assert.cs:9:9:9:33 | After ... ...; | Assert.cs:7:10:7:11 | M1 | +| Assert.cs:9:16:9:16 | access to local variable s | Assert.cs:7:10:7:11 | M1 | +| Assert.cs:9:16:9:32 | After String s = ... | Assert.cs:7:10:7:11 | M1 | +| Assert.cs:9:16:9:32 | Before String s = ... | Assert.cs:7:10:7:11 | M1 | | Assert.cs:9:16:9:32 | String s = ... | Assert.cs:7:10:7:11 | M1 | +| Assert.cs:9:20:9:20 | After access to parameter b [false] | Assert.cs:7:10:7:11 | M1 | +| Assert.cs:9:20:9:20 | After access to parameter b [true] | Assert.cs:7:10:7:11 | M1 | | Assert.cs:9:20:9:20 | access to parameter b | Assert.cs:7:10:7:11 | M1 | | Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:7:10:7:11 | M1 | +| Assert.cs:9:20:9:32 | After ... ? ... : ... | Assert.cs:7:10:7:11 | M1 | | Assert.cs:9:24:9:27 | null | Assert.cs:7:10:7:11 | M1 | | Assert.cs:9:31:9:32 | "" | Assert.cs:7:10:7:11 | M1 | +| Assert.cs:10:9:10:31 | After call to method Assert | Assert.cs:7:10:7:11 | M1 | +| Assert.cs:10:9:10:31 | Before call to method Assert | Assert.cs:7:10:7:11 | M1 | | Assert.cs:10:9:10:31 | call to method Assert | Assert.cs:7:10:7:11 | M1 | | Assert.cs:10:9:10:32 | ...; | Assert.cs:7:10:7:11 | M1 | +| Assert.cs:10:9:10:32 | After ...; | Assert.cs:7:10:7:11 | M1 | | Assert.cs:10:22:10:22 | access to local variable s | Assert.cs:7:10:7:11 | M1 | | Assert.cs:10:22:10:30 | ... != ... | Assert.cs:7:10:7:11 | M1 | +| Assert.cs:10:22:10:30 | After ... != ... | Assert.cs:7:10:7:11 | M1 | +| Assert.cs:10:22:10:30 | Before ... != ... | Assert.cs:7:10:7:11 | M1 | | Assert.cs:10:27:10:30 | null | Assert.cs:7:10:7:11 | M1 | +| Assert.cs:11:9:11:35 | After call to method WriteLine | Assert.cs:7:10:7:11 | M1 | +| Assert.cs:11:9:11:35 | Before call to method WriteLine | Assert.cs:7:10:7:11 | M1 | | Assert.cs:11:9:11:35 | call to method WriteLine | Assert.cs:7:10:7:11 | M1 | | Assert.cs:11:9:11:36 | ...; | Assert.cs:7:10:7:11 | M1 | +| Assert.cs:11:9:11:36 | After ...; | Assert.cs:7:10:7:11 | M1 | | Assert.cs:11:27:11:27 | access to local variable s | Assert.cs:7:10:7:11 | M1 | +| Assert.cs:11:27:11:34 | After access to property Length | Assert.cs:7:10:7:11 | M1 | +| Assert.cs:11:27:11:34 | Before access to property Length | Assert.cs:7:10:7:11 | M1 | | Assert.cs:11:27:11:34 | access to property Length | Assert.cs:7:10:7:11 | M1 | -| Assert.cs:14:10:14:11 | enter M2 | Assert.cs:14:10:14:11 | M2 | -| Assert.cs:14:10:14:11 | exit M2 | Assert.cs:14:10:14:11 | M2 | -| Assert.cs:14:10:14:11 | exit M2 (abnormal) | Assert.cs:14:10:14:11 | M2 | -| Assert.cs:14:10:14:11 | exit M2 (normal) | Assert.cs:14:10:14:11 | M2 | +| Assert.cs:14:10:14:11 | Entry | Assert.cs:14:10:14:11 | M2 | +| Assert.cs:14:10:14:11 | Exceptional Exit | Assert.cs:14:10:14:11 | M2 | +| Assert.cs:14:10:14:11 | Exit | Assert.cs:14:10:14:11 | M2 | +| Assert.cs:14:10:14:11 | Normal Exit | Assert.cs:14:10:14:11 | M2 | +| Assert.cs:14:18:14:18 | b | Assert.cs:14:10:14:11 | M2 | +| Assert.cs:15:5:19:5 | After {...} | Assert.cs:14:10:14:11 | M2 | | Assert.cs:15:5:19:5 | {...} | Assert.cs:14:10:14:11 | M2 | | Assert.cs:16:9:16:33 | ... ...; | Assert.cs:14:10:14:11 | M2 | +| Assert.cs:16:9:16:33 | After ... ...; | Assert.cs:14:10:14:11 | M2 | +| Assert.cs:16:16:16:16 | access to local variable s | Assert.cs:14:10:14:11 | M2 | +| Assert.cs:16:16:16:32 | After String s = ... | Assert.cs:14:10:14:11 | M2 | +| Assert.cs:16:16:16:32 | Before String s = ... | Assert.cs:14:10:14:11 | M2 | | Assert.cs:16:16:16:32 | String s = ... | Assert.cs:14:10:14:11 | M2 | +| Assert.cs:16:20:16:20 | After access to parameter b [false] | Assert.cs:14:10:14:11 | M2 | +| Assert.cs:16:20:16:20 | After access to parameter b [true] | Assert.cs:14:10:14:11 | M2 | | Assert.cs:16:20:16:20 | access to parameter b | Assert.cs:14:10:14:11 | M2 | | Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:14:10:14:11 | M2 | +| Assert.cs:16:20:16:32 | After ... ? ... : ... | Assert.cs:14:10:14:11 | M2 | | Assert.cs:16:24:16:27 | null | Assert.cs:14:10:14:11 | M2 | | Assert.cs:16:31:16:32 | "" | Assert.cs:14:10:14:11 | M2 | +| Assert.cs:17:9:17:24 | After call to method IsNull | Assert.cs:14:10:14:11 | M2 | +| Assert.cs:17:9:17:24 | Before call to method IsNull | Assert.cs:14:10:14:11 | M2 | | Assert.cs:17:9:17:24 | call to method IsNull | Assert.cs:14:10:14:11 | M2 | | Assert.cs:17:9:17:25 | ...; | Assert.cs:14:10:14:11 | M2 | +| Assert.cs:17:9:17:25 | After ...; | Assert.cs:14:10:14:11 | M2 | | Assert.cs:17:23:17:23 | access to local variable s | Assert.cs:14:10:14:11 | M2 | +| Assert.cs:18:9:18:35 | After call to method WriteLine | Assert.cs:14:10:14:11 | M2 | +| Assert.cs:18:9:18:35 | Before call to method WriteLine | Assert.cs:14:10:14:11 | M2 | | Assert.cs:18:9:18:35 | call to method WriteLine | Assert.cs:14:10:14:11 | M2 | | Assert.cs:18:9:18:36 | ...; | Assert.cs:14:10:14:11 | M2 | +| Assert.cs:18:9:18:36 | After ...; | Assert.cs:14:10:14:11 | M2 | | Assert.cs:18:27:18:27 | access to local variable s | Assert.cs:14:10:14:11 | M2 | +| Assert.cs:18:27:18:34 | After access to property Length | Assert.cs:14:10:14:11 | M2 | +| Assert.cs:18:27:18:34 | Before access to property Length | Assert.cs:14:10:14:11 | M2 | | Assert.cs:18:27:18:34 | access to property Length | Assert.cs:14:10:14:11 | M2 | -| Assert.cs:21:10:21:11 | enter M3 | Assert.cs:21:10:21:11 | M3 | -| Assert.cs:21:10:21:11 | exit M3 | Assert.cs:21:10:21:11 | M3 | -| Assert.cs:21:10:21:11 | exit M3 (abnormal) | Assert.cs:21:10:21:11 | M3 | -| Assert.cs:21:10:21:11 | exit M3 (normal) | Assert.cs:21:10:21:11 | M3 | +| Assert.cs:21:10:21:11 | Entry | Assert.cs:21:10:21:11 | M3 | +| Assert.cs:21:10:21:11 | Exceptional Exit | Assert.cs:21:10:21:11 | M3 | +| Assert.cs:21:10:21:11 | Exit | Assert.cs:21:10:21:11 | M3 | +| Assert.cs:21:10:21:11 | Normal Exit | Assert.cs:21:10:21:11 | M3 | +| Assert.cs:21:18:21:18 | b | Assert.cs:21:10:21:11 | M3 | +| Assert.cs:22:5:26:5 | After {...} | Assert.cs:21:10:21:11 | M3 | | Assert.cs:22:5:26:5 | {...} | Assert.cs:21:10:21:11 | M3 | | Assert.cs:23:9:23:33 | ... ...; | Assert.cs:21:10:21:11 | M3 | +| Assert.cs:23:9:23:33 | After ... ...; | Assert.cs:21:10:21:11 | M3 | +| Assert.cs:23:16:23:16 | access to local variable s | Assert.cs:21:10:21:11 | M3 | +| Assert.cs:23:16:23:32 | After String s = ... | Assert.cs:21:10:21:11 | M3 | +| Assert.cs:23:16:23:32 | Before String s = ... | Assert.cs:21:10:21:11 | M3 | | Assert.cs:23:16:23:32 | String s = ... | Assert.cs:21:10:21:11 | M3 | +| Assert.cs:23:20:23:20 | After access to parameter b [false] | Assert.cs:21:10:21:11 | M3 | +| Assert.cs:23:20:23:20 | After access to parameter b [true] | Assert.cs:21:10:21:11 | M3 | | Assert.cs:23:20:23:20 | access to parameter b | Assert.cs:21:10:21:11 | M3 | | Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:21:10:21:11 | M3 | +| Assert.cs:23:20:23:32 | After ... ? ... : ... | Assert.cs:21:10:21:11 | M3 | | Assert.cs:23:24:23:27 | null | Assert.cs:21:10:21:11 | M3 | | Assert.cs:23:31:23:32 | "" | Assert.cs:21:10:21:11 | M3 | +| Assert.cs:24:9:24:27 | After call to method IsNotNull | Assert.cs:21:10:21:11 | M3 | +| Assert.cs:24:9:24:27 | Before call to method IsNotNull | Assert.cs:21:10:21:11 | M3 | | Assert.cs:24:9:24:27 | call to method IsNotNull | Assert.cs:21:10:21:11 | M3 | | Assert.cs:24:9:24:28 | ...; | Assert.cs:21:10:21:11 | M3 | +| Assert.cs:24:9:24:28 | After ...; | Assert.cs:21:10:21:11 | M3 | | Assert.cs:24:26:24:26 | access to local variable s | Assert.cs:21:10:21:11 | M3 | +| Assert.cs:25:9:25:35 | After call to method WriteLine | Assert.cs:21:10:21:11 | M3 | +| Assert.cs:25:9:25:35 | Before call to method WriteLine | Assert.cs:21:10:21:11 | M3 | | Assert.cs:25:9:25:35 | call to method WriteLine | Assert.cs:21:10:21:11 | M3 | | Assert.cs:25:9:25:36 | ...; | Assert.cs:21:10:21:11 | M3 | +| Assert.cs:25:9:25:36 | After ...; | Assert.cs:21:10:21:11 | M3 | | Assert.cs:25:27:25:27 | access to local variable s | Assert.cs:21:10:21:11 | M3 | +| Assert.cs:25:27:25:34 | After access to property Length | Assert.cs:21:10:21:11 | M3 | +| Assert.cs:25:27:25:34 | Before access to property Length | Assert.cs:21:10:21:11 | M3 | | Assert.cs:25:27:25:34 | access to property Length | Assert.cs:21:10:21:11 | M3 | -| Assert.cs:28:10:28:11 | enter M4 | Assert.cs:28:10:28:11 | M4 | -| Assert.cs:28:10:28:11 | exit M4 | Assert.cs:28:10:28:11 | M4 | -| Assert.cs:28:10:28:11 | exit M4 (abnormal) | Assert.cs:28:10:28:11 | M4 | -| Assert.cs:28:10:28:11 | exit M4 (normal) | Assert.cs:28:10:28:11 | M4 | +| Assert.cs:28:10:28:11 | Entry | Assert.cs:28:10:28:11 | M4 | +| Assert.cs:28:10:28:11 | Exceptional Exit | Assert.cs:28:10:28:11 | M4 | +| Assert.cs:28:10:28:11 | Exit | Assert.cs:28:10:28:11 | M4 | +| Assert.cs:28:10:28:11 | Normal Exit | Assert.cs:28:10:28:11 | M4 | +| Assert.cs:28:18:28:18 | b | Assert.cs:28:10:28:11 | M4 | +| Assert.cs:29:5:33:5 | After {...} | Assert.cs:28:10:28:11 | M4 | | Assert.cs:29:5:33:5 | {...} | Assert.cs:28:10:28:11 | M4 | | Assert.cs:30:9:30:33 | ... ...; | Assert.cs:28:10:28:11 | M4 | +| Assert.cs:30:9:30:33 | After ... ...; | Assert.cs:28:10:28:11 | M4 | +| Assert.cs:30:16:30:16 | access to local variable s | Assert.cs:28:10:28:11 | M4 | +| Assert.cs:30:16:30:32 | After String s = ... | Assert.cs:28:10:28:11 | M4 | +| Assert.cs:30:16:30:32 | Before String s = ... | Assert.cs:28:10:28:11 | M4 | | Assert.cs:30:16:30:32 | String s = ... | Assert.cs:28:10:28:11 | M4 | +| Assert.cs:30:20:30:20 | After access to parameter b [false] | Assert.cs:28:10:28:11 | M4 | +| Assert.cs:30:20:30:20 | After access to parameter b [true] | Assert.cs:28:10:28:11 | M4 | | Assert.cs:30:20:30:20 | access to parameter b | Assert.cs:28:10:28:11 | M4 | | Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:28:10:28:11 | M4 | +| Assert.cs:30:20:30:32 | After ... ? ... : ... | Assert.cs:28:10:28:11 | M4 | | Assert.cs:30:24:30:27 | null | Assert.cs:28:10:28:11 | M4 | | Assert.cs:30:31:30:32 | "" | Assert.cs:28:10:28:11 | M4 | +| Assert.cs:31:9:31:32 | After call to method IsTrue | Assert.cs:28:10:28:11 | M4 | +| Assert.cs:31:9:31:32 | Before call to method IsTrue | Assert.cs:28:10:28:11 | M4 | | Assert.cs:31:9:31:32 | call to method IsTrue | Assert.cs:28:10:28:11 | M4 | | Assert.cs:31:9:31:33 | ...; | Assert.cs:28:10:28:11 | M4 | +| Assert.cs:31:9:31:33 | After ...; | Assert.cs:28:10:28:11 | M4 | | Assert.cs:31:23:31:23 | access to local variable s | Assert.cs:28:10:28:11 | M4 | | Assert.cs:31:23:31:31 | ... == ... | Assert.cs:28:10:28:11 | M4 | +| Assert.cs:31:23:31:31 | After ... == ... | Assert.cs:28:10:28:11 | M4 | +| Assert.cs:31:23:31:31 | Before ... == ... | Assert.cs:28:10:28:11 | M4 | | Assert.cs:31:28:31:31 | null | Assert.cs:28:10:28:11 | M4 | +| Assert.cs:32:9:32:35 | After call to method WriteLine | Assert.cs:28:10:28:11 | M4 | +| Assert.cs:32:9:32:35 | Before call to method WriteLine | Assert.cs:28:10:28:11 | M4 | | Assert.cs:32:9:32:35 | call to method WriteLine | Assert.cs:28:10:28:11 | M4 | | Assert.cs:32:9:32:36 | ...; | Assert.cs:28:10:28:11 | M4 | +| Assert.cs:32:9:32:36 | After ...; | Assert.cs:28:10:28:11 | M4 | | Assert.cs:32:27:32:27 | access to local variable s | Assert.cs:28:10:28:11 | M4 | +| Assert.cs:32:27:32:34 | After access to property Length | Assert.cs:28:10:28:11 | M4 | +| Assert.cs:32:27:32:34 | Before access to property Length | Assert.cs:28:10:28:11 | M4 | | Assert.cs:32:27:32:34 | access to property Length | Assert.cs:28:10:28:11 | M4 | -| Assert.cs:35:10:35:11 | enter M5 | Assert.cs:35:10:35:11 | M5 | -| Assert.cs:35:10:35:11 | exit M5 | Assert.cs:35:10:35:11 | M5 | -| Assert.cs:35:10:35:11 | exit M5 (abnormal) | Assert.cs:35:10:35:11 | M5 | -| Assert.cs:35:10:35:11 | exit M5 (normal) | Assert.cs:35:10:35:11 | M5 | +| Assert.cs:35:10:35:11 | Entry | Assert.cs:35:10:35:11 | M5 | +| Assert.cs:35:10:35:11 | Exceptional Exit | Assert.cs:35:10:35:11 | M5 | +| Assert.cs:35:10:35:11 | Exit | Assert.cs:35:10:35:11 | M5 | +| Assert.cs:35:10:35:11 | Normal Exit | Assert.cs:35:10:35:11 | M5 | +| Assert.cs:35:18:35:18 | b | Assert.cs:35:10:35:11 | M5 | +| Assert.cs:36:5:40:5 | After {...} | Assert.cs:35:10:35:11 | M5 | | Assert.cs:36:5:40:5 | {...} | Assert.cs:35:10:35:11 | M5 | | Assert.cs:37:9:37:33 | ... ...; | Assert.cs:35:10:35:11 | M5 | +| Assert.cs:37:9:37:33 | After ... ...; | Assert.cs:35:10:35:11 | M5 | +| Assert.cs:37:16:37:16 | access to local variable s | Assert.cs:35:10:35:11 | M5 | +| Assert.cs:37:16:37:32 | After String s = ... | Assert.cs:35:10:35:11 | M5 | +| Assert.cs:37:16:37:32 | Before String s = ... | Assert.cs:35:10:35:11 | M5 | | Assert.cs:37:16:37:32 | String s = ... | Assert.cs:35:10:35:11 | M5 | +| Assert.cs:37:20:37:20 | After access to parameter b [false] | Assert.cs:35:10:35:11 | M5 | +| Assert.cs:37:20:37:20 | After access to parameter b [true] | Assert.cs:35:10:35:11 | M5 | | Assert.cs:37:20:37:20 | access to parameter b | Assert.cs:35:10:35:11 | M5 | | Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:35:10:35:11 | M5 | +| Assert.cs:37:20:37:32 | After ... ? ... : ... | Assert.cs:35:10:35:11 | M5 | | Assert.cs:37:24:37:27 | null | Assert.cs:35:10:35:11 | M5 | | Assert.cs:37:31:37:32 | "" | Assert.cs:35:10:35:11 | M5 | +| Assert.cs:38:9:38:32 | After call to method IsTrue | Assert.cs:35:10:35:11 | M5 | +| Assert.cs:38:9:38:32 | Before call to method IsTrue | Assert.cs:35:10:35:11 | M5 | | Assert.cs:38:9:38:32 | call to method IsTrue | Assert.cs:35:10:35:11 | M5 | | Assert.cs:38:9:38:33 | ...; | Assert.cs:35:10:35:11 | M5 | +| Assert.cs:38:9:38:33 | After ...; | Assert.cs:35:10:35:11 | M5 | | Assert.cs:38:23:38:23 | access to local variable s | Assert.cs:35:10:35:11 | M5 | | Assert.cs:38:23:38:31 | ... != ... | Assert.cs:35:10:35:11 | M5 | +| Assert.cs:38:23:38:31 | After ... != ... | Assert.cs:35:10:35:11 | M5 | +| Assert.cs:38:23:38:31 | Before ... != ... | Assert.cs:35:10:35:11 | M5 | | Assert.cs:38:28:38:31 | null | Assert.cs:35:10:35:11 | M5 | +| Assert.cs:39:9:39:35 | After call to method WriteLine | Assert.cs:35:10:35:11 | M5 | +| Assert.cs:39:9:39:35 | Before call to method WriteLine | Assert.cs:35:10:35:11 | M5 | | Assert.cs:39:9:39:35 | call to method WriteLine | Assert.cs:35:10:35:11 | M5 | | Assert.cs:39:9:39:36 | ...; | Assert.cs:35:10:35:11 | M5 | +| Assert.cs:39:9:39:36 | After ...; | Assert.cs:35:10:35:11 | M5 | | Assert.cs:39:27:39:27 | access to local variable s | Assert.cs:35:10:35:11 | M5 | +| Assert.cs:39:27:39:34 | After access to property Length | Assert.cs:35:10:35:11 | M5 | +| Assert.cs:39:27:39:34 | Before access to property Length | Assert.cs:35:10:35:11 | M5 | | Assert.cs:39:27:39:34 | access to property Length | Assert.cs:35:10:35:11 | M5 | -| Assert.cs:42:10:42:11 | enter M6 | Assert.cs:42:10:42:11 | M6 | -| Assert.cs:42:10:42:11 | exit M6 | Assert.cs:42:10:42:11 | M6 | -| Assert.cs:42:10:42:11 | exit M6 (abnormal) | Assert.cs:42:10:42:11 | M6 | -| Assert.cs:42:10:42:11 | exit M6 (normal) | Assert.cs:42:10:42:11 | M6 | +| Assert.cs:42:10:42:11 | Entry | Assert.cs:42:10:42:11 | M6 | +| Assert.cs:42:10:42:11 | Exceptional Exit | Assert.cs:42:10:42:11 | M6 | +| Assert.cs:42:10:42:11 | Exit | Assert.cs:42:10:42:11 | M6 | +| Assert.cs:42:10:42:11 | Normal Exit | Assert.cs:42:10:42:11 | M6 | +| Assert.cs:42:18:42:18 | b | Assert.cs:42:10:42:11 | M6 | +| Assert.cs:43:5:47:5 | After {...} | Assert.cs:42:10:42:11 | M6 | | Assert.cs:43:5:47:5 | {...} | Assert.cs:42:10:42:11 | M6 | | Assert.cs:44:9:44:33 | ... ...; | Assert.cs:42:10:42:11 | M6 | +| Assert.cs:44:9:44:33 | After ... ...; | Assert.cs:42:10:42:11 | M6 | +| Assert.cs:44:16:44:16 | access to local variable s | Assert.cs:42:10:42:11 | M6 | +| Assert.cs:44:16:44:32 | After String s = ... | Assert.cs:42:10:42:11 | M6 | +| Assert.cs:44:16:44:32 | Before String s = ... | Assert.cs:42:10:42:11 | M6 | | Assert.cs:44:16:44:32 | String s = ... | Assert.cs:42:10:42:11 | M6 | +| Assert.cs:44:20:44:20 | After access to parameter b [false] | Assert.cs:42:10:42:11 | M6 | +| Assert.cs:44:20:44:20 | After access to parameter b [true] | Assert.cs:42:10:42:11 | M6 | | Assert.cs:44:20:44:20 | access to parameter b | Assert.cs:42:10:42:11 | M6 | | Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:42:10:42:11 | M6 | +| Assert.cs:44:20:44:32 | After ... ? ... : ... | Assert.cs:42:10:42:11 | M6 | | Assert.cs:44:24:44:27 | null | Assert.cs:42:10:42:11 | M6 | | Assert.cs:44:31:44:32 | "" | Assert.cs:42:10:42:11 | M6 | +| Assert.cs:45:9:45:33 | After call to method IsFalse | Assert.cs:42:10:42:11 | M6 | +| Assert.cs:45:9:45:33 | Before call to method IsFalse | Assert.cs:42:10:42:11 | M6 | | Assert.cs:45:9:45:33 | call to method IsFalse | Assert.cs:42:10:42:11 | M6 | | Assert.cs:45:9:45:34 | ...; | Assert.cs:42:10:42:11 | M6 | +| Assert.cs:45:9:45:34 | After ...; | Assert.cs:42:10:42:11 | M6 | | Assert.cs:45:24:45:24 | access to local variable s | Assert.cs:42:10:42:11 | M6 | | Assert.cs:45:24:45:32 | ... != ... | Assert.cs:42:10:42:11 | M6 | +| Assert.cs:45:24:45:32 | After ... != ... | Assert.cs:42:10:42:11 | M6 | +| Assert.cs:45:24:45:32 | Before ... != ... | Assert.cs:42:10:42:11 | M6 | | Assert.cs:45:29:45:32 | null | Assert.cs:42:10:42:11 | M6 | +| Assert.cs:46:9:46:35 | After call to method WriteLine | Assert.cs:42:10:42:11 | M6 | +| Assert.cs:46:9:46:35 | Before call to method WriteLine | Assert.cs:42:10:42:11 | M6 | | Assert.cs:46:9:46:35 | call to method WriteLine | Assert.cs:42:10:42:11 | M6 | | Assert.cs:46:9:46:36 | ...; | Assert.cs:42:10:42:11 | M6 | +| Assert.cs:46:9:46:36 | After ...; | Assert.cs:42:10:42:11 | M6 | | Assert.cs:46:27:46:27 | access to local variable s | Assert.cs:42:10:42:11 | M6 | +| Assert.cs:46:27:46:34 | After access to property Length | Assert.cs:42:10:42:11 | M6 | +| Assert.cs:46:27:46:34 | Before access to property Length | Assert.cs:42:10:42:11 | M6 | | Assert.cs:46:27:46:34 | access to property Length | Assert.cs:42:10:42:11 | M6 | -| Assert.cs:49:10:49:11 | enter M7 | Assert.cs:49:10:49:11 | M7 | -| Assert.cs:49:10:49:11 | exit M7 | Assert.cs:49:10:49:11 | M7 | -| Assert.cs:49:10:49:11 | exit M7 (abnormal) | Assert.cs:49:10:49:11 | M7 | -| Assert.cs:49:10:49:11 | exit M7 (normal) | Assert.cs:49:10:49:11 | M7 | +| Assert.cs:49:10:49:11 | Entry | Assert.cs:49:10:49:11 | M7 | +| Assert.cs:49:10:49:11 | Exceptional Exit | Assert.cs:49:10:49:11 | M7 | +| Assert.cs:49:10:49:11 | Exit | Assert.cs:49:10:49:11 | M7 | +| Assert.cs:49:10:49:11 | Normal Exit | Assert.cs:49:10:49:11 | M7 | +| Assert.cs:49:18:49:18 | b | Assert.cs:49:10:49:11 | M7 | +| Assert.cs:50:5:54:5 | After {...} | Assert.cs:49:10:49:11 | M7 | | Assert.cs:50:5:54:5 | {...} | Assert.cs:49:10:49:11 | M7 | | Assert.cs:51:9:51:33 | ... ...; | Assert.cs:49:10:49:11 | M7 | +| Assert.cs:51:9:51:33 | After ... ...; | Assert.cs:49:10:49:11 | M7 | +| Assert.cs:51:16:51:16 | access to local variable s | Assert.cs:49:10:49:11 | M7 | +| Assert.cs:51:16:51:32 | After String s = ... | Assert.cs:49:10:49:11 | M7 | +| Assert.cs:51:16:51:32 | Before String s = ... | Assert.cs:49:10:49:11 | M7 | | Assert.cs:51:16:51:32 | String s = ... | Assert.cs:49:10:49:11 | M7 | +| Assert.cs:51:20:51:20 | After access to parameter b [false] | Assert.cs:49:10:49:11 | M7 | +| Assert.cs:51:20:51:20 | After access to parameter b [true] | Assert.cs:49:10:49:11 | M7 | | Assert.cs:51:20:51:20 | access to parameter b | Assert.cs:49:10:49:11 | M7 | | Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:49:10:49:11 | M7 | +| Assert.cs:51:20:51:32 | After ... ? ... : ... | Assert.cs:49:10:49:11 | M7 | | Assert.cs:51:24:51:27 | null | Assert.cs:49:10:49:11 | M7 | | Assert.cs:51:31:51:32 | "" | Assert.cs:49:10:49:11 | M7 | +| Assert.cs:52:9:52:33 | After call to method IsFalse | Assert.cs:49:10:49:11 | M7 | +| Assert.cs:52:9:52:33 | Before call to method IsFalse | Assert.cs:49:10:49:11 | M7 | | Assert.cs:52:9:52:33 | call to method IsFalse | Assert.cs:49:10:49:11 | M7 | | Assert.cs:52:9:52:34 | ...; | Assert.cs:49:10:49:11 | M7 | +| Assert.cs:52:9:52:34 | After ...; | Assert.cs:49:10:49:11 | M7 | | Assert.cs:52:24:52:24 | access to local variable s | Assert.cs:49:10:49:11 | M7 | | Assert.cs:52:24:52:32 | ... == ... | Assert.cs:49:10:49:11 | M7 | +| Assert.cs:52:24:52:32 | After ... == ... | Assert.cs:49:10:49:11 | M7 | +| Assert.cs:52:24:52:32 | Before ... == ... | Assert.cs:49:10:49:11 | M7 | | Assert.cs:52:29:52:32 | null | Assert.cs:49:10:49:11 | M7 | +| Assert.cs:53:9:53:35 | After call to method WriteLine | Assert.cs:49:10:49:11 | M7 | +| Assert.cs:53:9:53:35 | Before call to method WriteLine | Assert.cs:49:10:49:11 | M7 | | Assert.cs:53:9:53:35 | call to method WriteLine | Assert.cs:49:10:49:11 | M7 | | Assert.cs:53:9:53:36 | ...; | Assert.cs:49:10:49:11 | M7 | +| Assert.cs:53:9:53:36 | After ...; | Assert.cs:49:10:49:11 | M7 | | Assert.cs:53:27:53:27 | access to local variable s | Assert.cs:49:10:49:11 | M7 | +| Assert.cs:53:27:53:34 | After access to property Length | Assert.cs:49:10:49:11 | M7 | +| Assert.cs:53:27:53:34 | Before access to property Length | Assert.cs:49:10:49:11 | M7 | | Assert.cs:53:27:53:34 | access to property Length | Assert.cs:49:10:49:11 | M7 | -| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:56:10:56:11 | exit M8 | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:56:10:56:11 | exit M8 (abnormal) | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:56:10:56:11 | exit M8 (normal) | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:56:10:56:11 | Entry | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:56:10:56:11 | Exceptional Exit | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:56:10:56:11 | Exit | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:56:10:56:11 | Normal Exit | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:56:18:56:18 | b | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:57:5:61:5 | After {...} | Assert.cs:56:10:56:11 | M8 | | Assert.cs:57:5:61:5 | {...} | Assert.cs:56:10:56:11 | M8 | | Assert.cs:58:9:58:33 | ... ...; | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:58:9:58:33 | After ... ...; | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:58:16:58:16 | access to local variable s | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:58:16:58:32 | After String s = ... | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:58:16:58:32 | Before String s = ... | Assert.cs:56:10:56:11 | M8 | | Assert.cs:58:16:58:32 | String s = ... | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:58:20:58:20 | After access to parameter b [false] | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:58:20:58:20 | After access to parameter b [true] | Assert.cs:56:10:56:11 | M8 | | Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:56:10:56:11 | M8 | | Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:58:20:58:32 | After ... ? ... : ... | Assert.cs:56:10:56:11 | M8 | | Assert.cs:58:24:58:27 | null | Assert.cs:56:10:56:11 | M8 | | Assert.cs:58:31:58:32 | "" | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:59:9:59:37 | After call to method IsTrue | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:59:9:59:37 | Before call to method IsTrue | Assert.cs:56:10:56:11 | M8 | | Assert.cs:59:9:59:37 | call to method IsTrue | Assert.cs:56:10:56:11 | M8 | | Assert.cs:59:9:59:38 | ...; | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:59:9:59:38 | After ...; | Assert.cs:56:10:56:11 | M8 | | Assert.cs:59:23:59:23 | access to local variable s | Assert.cs:56:10:56:11 | M8 | | Assert.cs:59:23:59:31 | ... != ... | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:59:23:59:31 | After ... != ... [false] | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:59:23:59:31 | After ... != ... [true] | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:59:23:59:31 | Before ... != ... | Assert.cs:56:10:56:11 | M8 | | Assert.cs:59:23:59:36 | ... && ... | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:59:23:59:36 | After ... && ... | Assert.cs:56:10:56:11 | M8 | | Assert.cs:59:28:59:31 | null | Assert.cs:56:10:56:11 | M8 | | Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:60:9:60:35 | After call to method WriteLine | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:60:9:60:35 | Before call to method WriteLine | Assert.cs:56:10:56:11 | M8 | | Assert.cs:60:9:60:35 | call to method WriteLine | Assert.cs:56:10:56:11 | M8 | | Assert.cs:60:9:60:36 | ...; | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:60:9:60:36 | After ...; | Assert.cs:56:10:56:11 | M8 | | Assert.cs:60:27:60:27 | access to local variable s | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:60:27:60:34 | After access to property Length | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:60:27:60:34 | Before access to property Length | Assert.cs:56:10:56:11 | M8 | | Assert.cs:60:27:60:34 | access to property Length | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:63:10:63:11 | exit M9 | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:63:10:63:11 | exit M9 (abnormal) | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:63:10:63:11 | exit M9 (normal) | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:63:10:63:11 | Entry | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:63:10:63:11 | Exceptional Exit | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:63:10:63:11 | Exit | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:63:10:63:11 | Normal Exit | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:63:18:63:18 | b | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:64:5:68:5 | After {...} | Assert.cs:63:10:63:11 | M9 | | Assert.cs:64:5:68:5 | {...} | Assert.cs:63:10:63:11 | M9 | | Assert.cs:65:9:65:33 | ... ...; | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:65:9:65:33 | After ... ...; | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:65:16:65:16 | access to local variable s | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:65:16:65:32 | After String s = ... | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:65:16:65:32 | Before String s = ... | Assert.cs:63:10:63:11 | M9 | | Assert.cs:65:16:65:32 | String s = ... | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:65:20:65:20 | After access to parameter b [false] | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:65:20:65:20 | After access to parameter b [true] | Assert.cs:63:10:63:11 | M9 | | Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:63:10:63:11 | M9 | | Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:65:20:65:32 | After ... ? ... : ... | Assert.cs:63:10:63:11 | M9 | | Assert.cs:65:24:65:27 | null | Assert.cs:63:10:63:11 | M9 | | Assert.cs:65:31:65:32 | "" | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:66:9:66:38 | After call to method IsFalse | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:66:9:66:38 | Before call to method IsFalse | Assert.cs:63:10:63:11 | M9 | | Assert.cs:66:9:66:38 | call to method IsFalse | Assert.cs:63:10:63:11 | M9 | | Assert.cs:66:9:66:39 | ...; | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:66:9:66:39 | After ...; | Assert.cs:63:10:63:11 | M9 | | Assert.cs:66:24:66:24 | access to local variable s | Assert.cs:63:10:63:11 | M9 | | Assert.cs:66:24:66:32 | ... == ... | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:66:24:66:32 | After ... == ... [false] | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:66:24:66:32 | After ... == ... [true] | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:66:24:66:32 | Before ... == ... | Assert.cs:63:10:63:11 | M9 | | Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:66:24:66:37 | After ... \|\| ... | Assert.cs:63:10:63:11 | M9 | | Assert.cs:66:29:66:32 | null | Assert.cs:63:10:63:11 | M9 | | Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:67:9:67:35 | After call to method WriteLine | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:67:9:67:35 | Before call to method WriteLine | Assert.cs:63:10:63:11 | M9 | | Assert.cs:67:9:67:35 | call to method WriteLine | Assert.cs:63:10:63:11 | M9 | | Assert.cs:67:9:67:36 | ...; | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:67:9:67:36 | After ...; | Assert.cs:63:10:63:11 | M9 | | Assert.cs:67:27:67:27 | access to local variable s | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:67:27:67:34 | After access to property Length | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:67:27:67:34 | Before access to property Length | Assert.cs:63:10:63:11 | M9 | | Assert.cs:67:27:67:34 | access to property Length | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:70:10:70:12 | exit M10 | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:70:10:70:12 | exit M10 (abnormal) | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:70:10:70:12 | exit M10 (normal) | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:70:10:70:12 | Entry | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:70:10:70:12 | Exceptional Exit | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:70:10:70:12 | Exit | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:70:10:70:12 | Normal Exit | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:70:19:70:19 | b | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:71:5:75:5 | After {...} | Assert.cs:70:10:70:12 | M10 | | Assert.cs:71:5:75:5 | {...} | Assert.cs:70:10:70:12 | M10 | | Assert.cs:72:9:72:33 | ... ...; | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:72:9:72:33 | After ... ...; | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:72:16:72:16 | access to local variable s | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:72:16:72:32 | After String s = ... | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:72:16:72:32 | Before String s = ... | Assert.cs:70:10:70:12 | M10 | | Assert.cs:72:16:72:32 | String s = ... | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:72:20:72:20 | After access to parameter b [false] | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:72:20:72:20 | After access to parameter b [true] | Assert.cs:70:10:70:12 | M10 | | Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:70:10:70:12 | M10 | | Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:72:20:72:32 | After ... ? ... : ... | Assert.cs:70:10:70:12 | M10 | | Assert.cs:72:24:72:27 | null | Assert.cs:70:10:70:12 | M10 | | Assert.cs:72:31:72:32 | "" | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:73:9:73:37 | After call to method IsTrue | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:73:9:73:37 | Before call to method IsTrue | Assert.cs:70:10:70:12 | M10 | | Assert.cs:73:9:73:37 | call to method IsTrue | Assert.cs:70:10:70:12 | M10 | | Assert.cs:73:9:73:38 | ...; | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:73:9:73:38 | After ...; | Assert.cs:70:10:70:12 | M10 | | Assert.cs:73:23:73:23 | access to local variable s | Assert.cs:70:10:70:12 | M10 | | Assert.cs:73:23:73:31 | ... == ... | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:73:23:73:31 | After ... == ... [false] | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:73:23:73:31 | After ... == ... [true] | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:73:23:73:31 | Before ... == ... | Assert.cs:70:10:70:12 | M10 | | Assert.cs:73:23:73:36 | ... && ... | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:73:23:73:36 | After ... && ... | Assert.cs:70:10:70:12 | M10 | | Assert.cs:73:28:73:31 | null | Assert.cs:70:10:70:12 | M10 | | Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:74:9:74:35 | After call to method WriteLine | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:74:9:74:35 | Before call to method WriteLine | Assert.cs:70:10:70:12 | M10 | | Assert.cs:74:9:74:35 | call to method WriteLine | Assert.cs:70:10:70:12 | M10 | | Assert.cs:74:9:74:36 | ...; | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:74:9:74:36 | After ...; | Assert.cs:70:10:70:12 | M10 | | Assert.cs:74:27:74:27 | access to local variable s | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:74:27:74:34 | After access to property Length | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:74:27:74:34 | Before access to property Length | Assert.cs:70:10:70:12 | M10 | | Assert.cs:74:27:74:34 | access to property Length | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:77:10:77:12 | exit M11 | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:77:10:77:12 | exit M11 (abnormal) | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:77:10:77:12 | exit M11 (normal) | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:77:10:77:12 | Entry | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:77:10:77:12 | Exceptional Exit | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:77:10:77:12 | Exit | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:77:10:77:12 | Normal Exit | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:77:19:77:19 | b | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:78:5:82:5 | After {...} | Assert.cs:77:10:77:12 | M11 | | Assert.cs:78:5:82:5 | {...} | Assert.cs:77:10:77:12 | M11 | | Assert.cs:79:9:79:33 | ... ...; | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:79:9:79:33 | After ... ...; | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:79:16:79:16 | access to local variable s | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:79:16:79:32 | After String s = ... | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:79:16:79:32 | Before String s = ... | Assert.cs:77:10:77:12 | M11 | | Assert.cs:79:16:79:32 | String s = ... | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:79:20:79:20 | After access to parameter b [false] | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:79:20:79:20 | After access to parameter b [true] | Assert.cs:77:10:77:12 | M11 | | Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:77:10:77:12 | M11 | | Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:79:20:79:32 | After ... ? ... : ... | Assert.cs:77:10:77:12 | M11 | | Assert.cs:79:24:79:27 | null | Assert.cs:77:10:77:12 | M11 | | Assert.cs:79:31:79:32 | "" | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:80:9:80:38 | After call to method IsFalse | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:80:9:80:38 | Before call to method IsFalse | Assert.cs:77:10:77:12 | M11 | | Assert.cs:80:9:80:38 | call to method IsFalse | Assert.cs:77:10:77:12 | M11 | | Assert.cs:80:9:80:39 | ...; | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:80:9:80:39 | After ...; | Assert.cs:77:10:77:12 | M11 | | Assert.cs:80:24:80:24 | access to local variable s | Assert.cs:77:10:77:12 | M11 | | Assert.cs:80:24:80:32 | ... != ... | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:80:24:80:32 | After ... != ... [false] | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:80:24:80:32 | After ... != ... [true] | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:80:24:80:32 | Before ... != ... | Assert.cs:77:10:77:12 | M11 | | Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:80:24:80:37 | After ... \|\| ... | Assert.cs:77:10:77:12 | M11 | | Assert.cs:80:29:80:32 | null | Assert.cs:77:10:77:12 | M11 | | Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:81:9:81:35 | After call to method WriteLine | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:81:9:81:35 | Before call to method WriteLine | Assert.cs:77:10:77:12 | M11 | | Assert.cs:81:9:81:35 | call to method WriteLine | Assert.cs:77:10:77:12 | M11 | | Assert.cs:81:9:81:36 | ...; | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:81:9:81:36 | After ...; | Assert.cs:77:10:77:12 | M11 | | Assert.cs:81:27:81:27 | access to local variable s | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:81:27:81:34 | After access to property Length | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:81:27:81:34 | Before access to property Length | Assert.cs:77:10:77:12 | M11 | | Assert.cs:81:27:81:34 | access to property Length | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:84:10:84:12 | exit M12 | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:84:10:84:12 | exit M12 (abnormal) | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:84:10:84:12 | exit M12 (normal) | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:84:10:84:12 | Exceptional Exit | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:84:10:84:12 | Exit | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:84:10:84:12 | Normal Exit | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:84:19:84:19 | b | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:85:5:129:5 | After {...} | Assert.cs:84:10:84:12 | M12 | | Assert.cs:85:5:129:5 | {...} | Assert.cs:84:10:84:12 | M12 | | Assert.cs:86:9:86:33 | ... ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:86:9:86:33 | After ... ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:86:16:86:16 | access to local variable s | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:86:16:86:32 | After String s = ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:86:16:86:32 | Before String s = ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:86:16:86:32 | String s = ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:86:20:86:20 | After access to parameter b [false] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:86:20:86:20 | After access to parameter b [true] | Assert.cs:84:10:84:12 | M12 | | Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:84:10:84:12 | M12 | | Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:86:24:86:27 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:86:31:86:32 | "" | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:87:9:87:31 | Before call to method Assert | Assert.cs:84:10:84:12 | M12 | | Assert.cs:87:9:87:31 | call to method Assert | Assert.cs:84:10:84:12 | M12 | | Assert.cs:87:9:87:32 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:87:9:87:32 | After ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:87:22:87:22 | access to local variable s | Assert.cs:84:10:84:12 | M12 | | Assert.cs:87:22:87:30 | ... != ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:87:22:87:30 | After ... != ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:87:22:87:30 | Before ... != ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:87:27:87:30 | null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:88:9:88:35 | After call to method WriteLine | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:88:9:88:35 | Before call to method WriteLine | Assert.cs:84:10:84:12 | M12 | | Assert.cs:88:9:88:35 | call to method WriteLine | Assert.cs:84:10:84:12 | M12 | | Assert.cs:88:9:88:36 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:88:9:88:36 | After ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:88:27:88:27 | access to local variable s | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:88:27:88:34 | After access to property Length | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:88:27:88:34 | Before access to property Length | Assert.cs:84:10:84:12 | M12 | | Assert.cs:88:27:88:34 | access to property Length | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:90:9:90:9 | access to local variable s | Assert.cs:84:10:84:12 | M12 | | Assert.cs:90:9:90:25 | ... = ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:90:9:90:25 | After ... = ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:90:9:90:25 | Before ... = ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:90:9:90:26 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:90:9:90:26 | After ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:90:13:90:13 | After access to parameter b [false] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:90:13:90:13 | After access to parameter b [true] | Assert.cs:84:10:84:12 | M12 | | Assert.cs:90:13:90:13 | access to parameter b | Assert.cs:84:10:84:12 | M12 | | Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:90:17:90:20 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:90:24:90:25 | "" | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:91:9:91:24 | Before call to method IsNull | Assert.cs:84:10:84:12 | M12 | | Assert.cs:91:9:91:24 | call to method IsNull | Assert.cs:84:10:84:12 | M12 | | Assert.cs:91:9:91:25 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:91:9:91:25 | After ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:91:23:91:23 | access to local variable s | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:92:9:92:35 | After call to method WriteLine | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:92:9:92:35 | Before call to method WriteLine | Assert.cs:84:10:84:12 | M12 | | Assert.cs:92:9:92:35 | call to method WriteLine | Assert.cs:84:10:84:12 | M12 | | Assert.cs:92:9:92:36 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:92:9:92:36 | After ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:92:27:92:27 | access to local variable s | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:92:27:92:34 | After access to property Length | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:92:27:92:34 | Before access to property Length | Assert.cs:84:10:84:12 | M12 | | Assert.cs:92:27:92:34 | access to property Length | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:94:9:94:9 | access to local variable s | Assert.cs:84:10:84:12 | M12 | | Assert.cs:94:9:94:25 | ... = ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:94:9:94:25 | After ... = ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:94:9:94:25 | Before ... = ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:94:9:94:26 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:94:9:94:26 | After ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:94:13:94:13 | After access to parameter b [false] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:94:13:94:13 | After access to parameter b [true] | Assert.cs:84:10:84:12 | M12 | | Assert.cs:94:13:94:13 | access to parameter b | Assert.cs:84:10:84:12 | M12 | | Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:94:17:94:20 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:94:24:94:25 | "" | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:95:9:95:27 | Before call to method IsNotNull | Assert.cs:84:10:84:12 | M12 | | Assert.cs:95:9:95:27 | call to method IsNotNull | Assert.cs:84:10:84:12 | M12 | | Assert.cs:95:9:95:28 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:95:9:95:28 | After ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:95:26:95:26 | access to local variable s | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:96:9:96:35 | After call to method WriteLine | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:96:9:96:35 | Before call to method WriteLine | Assert.cs:84:10:84:12 | M12 | | Assert.cs:96:9:96:35 | call to method WriteLine | Assert.cs:84:10:84:12 | M12 | | Assert.cs:96:9:96:36 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:96:9:96:36 | After ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:96:27:96:27 | access to local variable s | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:96:27:96:34 | After access to property Length | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:96:27:96:34 | Before access to property Length | Assert.cs:84:10:84:12 | M12 | | Assert.cs:96:27:96:34 | access to property Length | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:98:9:98:9 | access to local variable s | Assert.cs:84:10:84:12 | M12 | | Assert.cs:98:9:98:25 | ... = ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:98:9:98:25 | After ... = ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:98:9:98:25 | Before ... = ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:98:9:98:26 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:98:9:98:26 | After ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:98:13:98:13 | After access to parameter b [false] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:98:13:98:13 | After access to parameter b [true] | Assert.cs:84:10:84:12 | M12 | | Assert.cs:98:13:98:13 | access to parameter b | Assert.cs:84:10:84:12 | M12 | | Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:98:17:98:20 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:98:24:98:25 | "" | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:99:9:99:32 | Before call to method IsTrue | Assert.cs:84:10:84:12 | M12 | | Assert.cs:99:9:99:32 | call to method IsTrue | Assert.cs:84:10:84:12 | M12 | | Assert.cs:99:9:99:33 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:99:9:99:33 | After ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:99:23:99:23 | access to local variable s | Assert.cs:84:10:84:12 | M12 | | Assert.cs:99:23:99:31 | ... == ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:99:23:99:31 | After ... == ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:99:23:99:31 | Before ... == ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:99:28:99:31 | null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:100:9:100:35 | After call to method WriteLine | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:100:9:100:35 | Before call to method WriteLine | Assert.cs:84:10:84:12 | M12 | | Assert.cs:100:9:100:35 | call to method WriteLine | Assert.cs:84:10:84:12 | M12 | | Assert.cs:100:9:100:36 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:100:9:100:36 | After ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:100:27:100:27 | access to local variable s | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:100:27:100:34 | After access to property Length | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:100:27:100:34 | Before access to property Length | Assert.cs:84:10:84:12 | M12 | | Assert.cs:100:27:100:34 | access to property Length | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:102:9:102:9 | access to local variable s | Assert.cs:84:10:84:12 | M12 | | Assert.cs:102:9:102:25 | ... = ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:102:9:102:25 | After ... = ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:102:9:102:25 | Before ... = ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:102:9:102:26 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:102:9:102:26 | After ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:102:13:102:13 | After access to parameter b [false] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:102:13:102:13 | After access to parameter b [true] | Assert.cs:84:10:84:12 | M12 | | Assert.cs:102:13:102:13 | access to parameter b | Assert.cs:84:10:84:12 | M12 | | Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:102:17:102:20 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:102:24:102:25 | "" | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:103:9:103:32 | Before call to method IsTrue | Assert.cs:84:10:84:12 | M12 | | Assert.cs:103:9:103:32 | call to method IsTrue | Assert.cs:84:10:84:12 | M12 | | Assert.cs:103:9:103:33 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:103:9:103:33 | After ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:103:23:103:23 | access to local variable s | Assert.cs:84:10:84:12 | M12 | | Assert.cs:103:23:103:31 | ... != ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:103:23:103:31 | After ... != ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:103:23:103:31 | Before ... != ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:103:28:103:31 | null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:104:9:104:35 | After call to method WriteLine | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:104:9:104:35 | Before call to method WriteLine | Assert.cs:84:10:84:12 | M12 | | Assert.cs:104:9:104:35 | call to method WriteLine | Assert.cs:84:10:84:12 | M12 | | Assert.cs:104:9:104:36 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:104:9:104:36 | After ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:104:27:104:27 | access to local variable s | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:104:27:104:34 | After access to property Length | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:104:27:104:34 | Before access to property Length | Assert.cs:84:10:84:12 | M12 | | Assert.cs:104:27:104:34 | access to property Length | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:106:9:106:9 | access to local variable s | Assert.cs:84:10:84:12 | M12 | | Assert.cs:106:9:106:25 | ... = ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:106:9:106:25 | After ... = ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:106:9:106:25 | Before ... = ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:106:9:106:26 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:106:9:106:26 | After ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:106:13:106:13 | After access to parameter b [false] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:106:13:106:13 | After access to parameter b [true] | Assert.cs:84:10:84:12 | M12 | | Assert.cs:106:13:106:13 | access to parameter b | Assert.cs:84:10:84:12 | M12 | | Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:106:17:106:20 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:106:24:106:25 | "" | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:107:9:107:33 | Before call to method IsFalse | Assert.cs:84:10:84:12 | M12 | | Assert.cs:107:9:107:33 | call to method IsFalse | Assert.cs:84:10:84:12 | M12 | | Assert.cs:107:9:107:34 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:107:9:107:34 | After ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:107:24:107:24 | access to local variable s | Assert.cs:84:10:84:12 | M12 | | Assert.cs:107:24:107:32 | ... != ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:107:24:107:32 | After ... != ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:107:24:107:32 | Before ... != ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:107:29:107:32 | null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:108:9:108:35 | After call to method WriteLine | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:108:9:108:35 | Before call to method WriteLine | Assert.cs:84:10:84:12 | M12 | | Assert.cs:108:9:108:35 | call to method WriteLine | Assert.cs:84:10:84:12 | M12 | | Assert.cs:108:9:108:36 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:108:9:108:36 | After ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:108:27:108:27 | access to local variable s | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:108:27:108:34 | After access to property Length | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:108:27:108:34 | Before access to property Length | Assert.cs:84:10:84:12 | M12 | | Assert.cs:108:27:108:34 | access to property Length | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:110:9:110:9 | access to local variable s | Assert.cs:84:10:84:12 | M12 | | Assert.cs:110:9:110:25 | ... = ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:110:9:110:25 | After ... = ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:110:9:110:25 | Before ... = ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:110:9:110:26 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:110:9:110:26 | After ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:110:13:110:13 | After access to parameter b [false] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:110:13:110:13 | After access to parameter b [true] | Assert.cs:84:10:84:12 | M12 | | Assert.cs:110:13:110:13 | access to parameter b | Assert.cs:84:10:84:12 | M12 | | Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:110:17:110:20 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:110:24:110:25 | "" | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:111:9:111:33 | Before call to method IsFalse | Assert.cs:84:10:84:12 | M12 | | Assert.cs:111:9:111:33 | call to method IsFalse | Assert.cs:84:10:84:12 | M12 | | Assert.cs:111:9:111:34 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:111:9:111:34 | After ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:111:24:111:24 | access to local variable s | Assert.cs:84:10:84:12 | M12 | | Assert.cs:111:24:111:32 | ... == ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:111:24:111:32 | After ... == ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:111:24:111:32 | Before ... == ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:111:29:111:32 | null | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:112:9:112:35 | After call to method WriteLine | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:112:9:112:35 | Before call to method WriteLine | Assert.cs:84:10:84:12 | M12 | | Assert.cs:112:9:112:35 | call to method WriteLine | Assert.cs:84:10:84:12 | M12 | | Assert.cs:112:9:112:36 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:112:9:112:36 | After ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:112:27:112:27 | access to local variable s | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:112:27:112:34 | After access to property Length | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:112:27:112:34 | Before access to property Length | Assert.cs:84:10:84:12 | M12 | | Assert.cs:112:27:112:34 | access to property Length | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:114:9:114:9 | access to local variable s | Assert.cs:84:10:84:12 | M12 | | Assert.cs:114:9:114:25 | ... = ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:114:9:114:25 | After ... = ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:114:9:114:25 | Before ... = ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:114:9:114:26 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:114:9:114:26 | After ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:114:13:114:13 | After access to parameter b [false] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:114:13:114:13 | After access to parameter b [true] | Assert.cs:84:10:84:12 | M12 | | Assert.cs:114:13:114:13 | access to parameter b | Assert.cs:84:10:84:12 | M12 | | Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:114:17:114:20 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:114:24:114:25 | "" | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:115:9:115:37 | Before call to method IsTrue | Assert.cs:84:10:84:12 | M12 | | Assert.cs:115:9:115:37 | call to method IsTrue | Assert.cs:84:10:84:12 | M12 | | Assert.cs:115:9:115:38 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:115:9:115:38 | After ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:115:23:115:23 | access to local variable s | Assert.cs:84:10:84:12 | M12 | | Assert.cs:115:23:115:31 | ... != ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:115:23:115:31 | After ... != ... [false] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:115:23:115:31 | After ... != ... [true] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:115:23:115:31 | Before ... != ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:115:23:115:36 | ... && ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:115:28:115:31 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:116:9:116:35 | After call to method WriteLine | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:116:9:116:35 | Before call to method WriteLine | Assert.cs:84:10:84:12 | M12 | | Assert.cs:116:9:116:35 | call to method WriteLine | Assert.cs:84:10:84:12 | M12 | | Assert.cs:116:9:116:36 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:116:9:116:36 | After ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:116:27:116:27 | access to local variable s | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:116:27:116:34 | After access to property Length | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:116:27:116:34 | Before access to property Length | Assert.cs:84:10:84:12 | M12 | | Assert.cs:116:27:116:34 | access to property Length | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:118:9:118:9 | access to local variable s | Assert.cs:84:10:84:12 | M12 | | Assert.cs:118:9:118:25 | ... = ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:118:9:118:25 | After ... = ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:118:9:118:25 | Before ... = ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:118:9:118:26 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:118:9:118:26 | After ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:118:13:118:13 | After access to parameter b [false] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:118:13:118:13 | After access to parameter b [true] | Assert.cs:84:10:84:12 | M12 | | Assert.cs:118:13:118:13 | access to parameter b | Assert.cs:84:10:84:12 | M12 | | Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:118:17:118:20 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:118:24:118:25 | "" | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:119:9:119:39 | Before call to method IsFalse | Assert.cs:84:10:84:12 | M12 | | Assert.cs:119:9:119:39 | call to method IsFalse | Assert.cs:84:10:84:12 | M12 | | Assert.cs:119:9:119:40 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:119:9:119:40 | After ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:119:24:119:24 | access to local variable s | Assert.cs:84:10:84:12 | M12 | | Assert.cs:119:24:119:32 | ... == ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:119:24:119:32 | After ... == ... [false] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:119:24:119:32 | After ... == ... [true] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:119:24:119:32 | Before ... == ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:119:29:119:32 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:119:37:119:38 | !... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:119:37:119:38 | After !... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:120:9:120:35 | After call to method WriteLine | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:120:9:120:35 | Before call to method WriteLine | Assert.cs:84:10:84:12 | M12 | | Assert.cs:120:9:120:35 | call to method WriteLine | Assert.cs:84:10:84:12 | M12 | | Assert.cs:120:9:120:36 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:120:9:120:36 | After ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:120:27:120:27 | access to local variable s | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:120:27:120:34 | After access to property Length | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:120:27:120:34 | Before access to property Length | Assert.cs:84:10:84:12 | M12 | | Assert.cs:120:27:120:34 | access to property Length | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:122:9:122:9 | access to local variable s | Assert.cs:84:10:84:12 | M12 | | Assert.cs:122:9:122:25 | ... = ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:122:9:122:25 | After ... = ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:122:9:122:25 | Before ... = ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:122:9:122:26 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:122:9:122:26 | After ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:122:13:122:13 | After access to parameter b [false] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:122:13:122:13 | After access to parameter b [true] | Assert.cs:84:10:84:12 | M12 | | Assert.cs:122:13:122:13 | access to parameter b | Assert.cs:84:10:84:12 | M12 | | Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:122:17:122:20 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:122:24:122:25 | "" | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:123:9:123:37 | Before call to method IsTrue | Assert.cs:84:10:84:12 | M12 | | Assert.cs:123:9:123:37 | call to method IsTrue | Assert.cs:84:10:84:12 | M12 | | Assert.cs:123:9:123:38 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:123:9:123:38 | After ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:123:23:123:23 | access to local variable s | Assert.cs:84:10:84:12 | M12 | | Assert.cs:123:23:123:31 | ... == ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:123:23:123:31 | After ... == ... [false] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:123:23:123:31 | After ... == ... [true] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:123:23:123:31 | Before ... == ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:123:23:123:36 | ... && ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:123:28:123:31 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:124:9:124:35 | After call to method WriteLine | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:124:9:124:35 | Before call to method WriteLine | Assert.cs:84:10:84:12 | M12 | | Assert.cs:124:9:124:35 | call to method WriteLine | Assert.cs:84:10:84:12 | M12 | | Assert.cs:124:9:124:36 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:124:9:124:36 | After ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:124:27:124:27 | access to local variable s | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:124:27:124:34 | After access to property Length | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:124:27:124:34 | Before access to property Length | Assert.cs:84:10:84:12 | M12 | | Assert.cs:124:27:124:34 | access to property Length | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:126:9:126:9 | access to local variable s | Assert.cs:84:10:84:12 | M12 | | Assert.cs:126:9:126:25 | ... = ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:126:9:126:25 | After ... = ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:126:9:126:25 | Before ... = ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:126:9:126:26 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:126:9:126:26 | After ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:126:13:126:13 | After access to parameter b [false] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:126:13:126:13 | After access to parameter b [true] | Assert.cs:84:10:84:12 | M12 | | Assert.cs:126:13:126:13 | access to parameter b | Assert.cs:84:10:84:12 | M12 | | Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:126:17:126:20 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:126:24:126:25 | "" | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:127:9:127:39 | Before call to method IsFalse | Assert.cs:84:10:84:12 | M12 | | Assert.cs:127:9:127:39 | call to method IsFalse | Assert.cs:84:10:84:12 | M12 | | Assert.cs:127:9:127:40 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:127:9:127:40 | After ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:127:24:127:24 | access to local variable s | Assert.cs:84:10:84:12 | M12 | | Assert.cs:127:24:127:32 | ... != ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:127:24:127:32 | After ... != ... [false] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:127:24:127:32 | After ... != ... [true] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:127:24:127:32 | Before ... != ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:127:29:127:32 | null | Assert.cs:84:10:84:12 | M12 | | Assert.cs:127:37:127:38 | !... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:127:37:127:38 | After !... | Assert.cs:84:10:84:12 | M12 | | Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:128:9:128:35 | After call to method WriteLine | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:128:9:128:35 | Before call to method WriteLine | Assert.cs:84:10:84:12 | M12 | | Assert.cs:128:9:128:35 | call to method WriteLine | Assert.cs:84:10:84:12 | M12 | | Assert.cs:128:9:128:36 | ...; | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:128:9:128:36 | After ...; | Assert.cs:84:10:84:12 | M12 | | Assert.cs:128:27:128:27 | access to local variable s | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:128:27:128:34 | After access to property Length | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:128:27:128:34 | Before access to property Length | Assert.cs:84:10:84:12 | M12 | | Assert.cs:128:27:128:34 | access to property Length | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:131:18:131:32 | enter AssertTrueFalse | Assert.cs:131:18:131:32 | AssertTrueFalse | -| Assert.cs:131:18:131:32 | exit AssertTrueFalse | Assert.cs:131:18:131:32 | AssertTrueFalse | -| Assert.cs:131:18:131:32 | exit AssertTrueFalse (normal) | Assert.cs:131:18:131:32 | AssertTrueFalse | +| Assert.cs:131:18:131:32 | Entry | Assert.cs:131:18:131:32 | AssertTrueFalse | +| Assert.cs:131:18:131:32 | Exit | Assert.cs:131:18:131:32 | AssertTrueFalse | +| Assert.cs:131:18:131:32 | Normal Exit | Assert.cs:131:18:131:32 | AssertTrueFalse | +| Assert.cs:132:74:132:83 | condition1 | Assert.cs:131:18:131:32 | AssertTrueFalse | +| Assert.cs:133:73:133:82 | condition2 | Assert.cs:131:18:131:32 | AssertTrueFalse | +| Assert.cs:134:17:134:28 | nonCondition | Assert.cs:131:18:131:32 | AssertTrueFalse | | Assert.cs:135:5:136:5 | {...} | Assert.cs:131:18:131:32 | AssertTrueFalse | -| Assert.cs:138:10:138:12 | enter M13 | Assert.cs:138:10:138:12 | M13 | -| Assert.cs:138:10:138:12 | exit M13 | Assert.cs:138:10:138:12 | M13 | -| Assert.cs:138:10:138:12 | exit M13 (abnormal) | Assert.cs:138:10:138:12 | M13 | -| Assert.cs:138:10:138:12 | exit M13 (normal) | Assert.cs:138:10:138:12 | M13 | +| Assert.cs:138:10:138:12 | Entry | Assert.cs:138:10:138:12 | M13 | +| Assert.cs:138:10:138:12 | Exceptional Exit | Assert.cs:138:10:138:12 | M13 | +| Assert.cs:138:10:138:12 | Exit | Assert.cs:138:10:138:12 | M13 | +| Assert.cs:138:10:138:12 | Normal Exit | Assert.cs:138:10:138:12 | M13 | +| Assert.cs:138:19:138:20 | b1 | Assert.cs:138:10:138:12 | M13 | +| Assert.cs:138:28:138:29 | b2 | Assert.cs:138:10:138:12 | M13 | +| Assert.cs:138:37:138:38 | b3 | Assert.cs:138:10:138:12 | M13 | | Assert.cs:139:5:142:5 | {...} | Assert.cs:138:10:138:12 | M13 | +| Assert.cs:140:9:140:35 | After call to method AssertTrueFalse | Assert.cs:138:10:138:12 | M13 | +| Assert.cs:140:9:140:35 | Before call to method AssertTrueFalse | Assert.cs:138:10:138:12 | M13 | | Assert.cs:140:9:140:35 | call to method AssertTrueFalse | Assert.cs:138:10:138:12 | M13 | | Assert.cs:140:9:140:35 | this access | Assert.cs:138:10:138:12 | M13 | | Assert.cs:140:9:140:36 | ...; | Assert.cs:138:10:138:12 | M13 | +| Assert.cs:140:9:140:36 | After ...; | Assert.cs:138:10:138:12 | M13 | | Assert.cs:140:25:140:26 | access to parameter b1 | Assert.cs:138:10:138:12 | M13 | | Assert.cs:140:29:140:30 | access to parameter b2 | Assert.cs:138:10:138:12 | M13 | | Assert.cs:140:33:140:34 | access to parameter b3 | Assert.cs:138:10:138:12 | M13 | +| Assert.cs:141:9:141:15 | Before return ...; | Assert.cs:138:10:138:12 | M13 | | Assert.cs:141:9:141:15 | return ...; | Assert.cs:138:10:138:12 | M13 | +| Assignments.cs:1:7:1:17 | After call to constructor Object | Assignments.cs:1:7:1:17 | Assignments | +| Assignments.cs:1:7:1:17 | After call to method | Assignments.cs:1:7:1:17 | Assignments | +| Assignments.cs:1:7:1:17 | Before call to constructor Object | Assignments.cs:1:7:1:17 | Assignments | +| Assignments.cs:1:7:1:17 | Before call to method | Assignments.cs:1:7:1:17 | Assignments | +| Assignments.cs:1:7:1:17 | Entry | Assignments.cs:1:7:1:17 | Assignments | +| Assignments.cs:1:7:1:17 | Exit | Assignments.cs:1:7:1:17 | Assignments | +| Assignments.cs:1:7:1:17 | Normal Exit | Assignments.cs:1:7:1:17 | Assignments | | Assignments.cs:1:7:1:17 | call to constructor Object | Assignments.cs:1:7:1:17 | Assignments | | Assignments.cs:1:7:1:17 | call to method | Assignments.cs:1:7:1:17 | Assignments | -| Assignments.cs:1:7:1:17 | enter Assignments | Assignments.cs:1:7:1:17 | Assignments | -| Assignments.cs:1:7:1:17 | exit Assignments | Assignments.cs:1:7:1:17 | Assignments | -| Assignments.cs:1:7:1:17 | exit Assignments (normal) | Assignments.cs:1:7:1:17 | Assignments | | Assignments.cs:1:7:1:17 | this access | Assignments.cs:1:7:1:17 | Assignments | | Assignments.cs:1:7:1:17 | {...} | Assignments.cs:1:7:1:17 | Assignments | -| Assignments.cs:3:10:3:10 | enter M | Assignments.cs:3:10:3:10 | M | -| Assignments.cs:3:10:3:10 | exit M | Assignments.cs:3:10:3:10 | M | -| Assignments.cs:3:10:3:10 | exit M (normal) | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:3:10:3:10 | Entry | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:3:10:3:10 | Exit | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:3:10:3:10 | Normal Exit | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:4:5:15:5 | After {...} | Assignments.cs:3:10:3:10 | M | | Assignments.cs:4:5:15:5 | {...} | Assignments.cs:3:10:3:10 | M | | Assignments.cs:5:9:5:18 | ... ...; | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:5:9:5:18 | After ... ...; | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:5:13:5:13 | access to local variable x | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:5:13:5:17 | After Int32 x = ... | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:5:13:5:17 | Before Int32 x = ... | Assignments.cs:3:10:3:10 | M | | Assignments.cs:5:13:5:17 | Int32 x = ... | Assignments.cs:3:10:3:10 | M | | Assignments.cs:5:17:5:17 | 0 | Assignments.cs:3:10:3:10 | M | | Assignments.cs:6:9:6:9 | access to local variable x | Assignments.cs:3:10:3:10 | M | | Assignments.cs:6:9:6:14 | ... += ... | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:6:9:6:14 | After ... += ... | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:6:9:6:14 | Before ... += ... | Assignments.cs:3:10:3:10 | M | | Assignments.cs:6:9:6:15 | ...; | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:6:9:6:15 | After ...; | Assignments.cs:3:10:3:10 | M | | Assignments.cs:6:14:6:14 | 1 | Assignments.cs:3:10:3:10 | M | | Assignments.cs:8:9:8:22 | ... ...; | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:8:9:8:22 | After ... ...; | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:8:17:8:17 | access to local variable d | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:8:17:8:21 | After dynamic d = ... | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:8:17:8:21 | Before dynamic d = ... | Assignments.cs:3:10:3:10 | M | | Assignments.cs:8:17:8:21 | dynamic d = ... | Assignments.cs:3:10:3:10 | M | | Assignments.cs:8:21:8:21 | 0 | Assignments.cs:3:10:3:10 | M | | Assignments.cs:8:21:8:21 | (...) ... | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:8:21:8:21 | After (...) ... | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:8:21:8:21 | Before (...) ... | Assignments.cs:3:10:3:10 | M | | Assignments.cs:9:9:9:9 | access to local variable d | Assignments.cs:3:10:3:10 | M | | Assignments.cs:9:9:9:14 | ... -= ... | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:9:9:9:14 | After ... -= ... | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:9:9:9:14 | Before ... -= ... | Assignments.cs:3:10:3:10 | M | | Assignments.cs:9:9:9:15 | ...; | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:9:9:9:15 | After ...; | Assignments.cs:3:10:3:10 | M | | Assignments.cs:9:14:9:14 | 2 | Assignments.cs:3:10:3:10 | M | | Assignments.cs:11:9:11:34 | ... ...; | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:11:9:11:34 | After ... ...; | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:11:13:11:13 | access to local variable a | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:11:13:11:33 | After Assignments a = ... | Assignments.cs:3:10:3:10 | M | | Assignments.cs:11:13:11:33 | Assignments a = ... | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:11:13:11:33 | Before Assignments a = ... | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:11:17:11:33 | After object creation of type Assignments | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:11:17:11:33 | Before object creation of type Assignments | Assignments.cs:3:10:3:10 | M | | Assignments.cs:11:17:11:33 | object creation of type Assignments | Assignments.cs:3:10:3:10 | M | | Assignments.cs:12:9:12:9 | access to local variable a | Assignments.cs:3:10:3:10 | M | | Assignments.cs:12:9:12:17 | ... += ... | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:12:9:12:17 | After ... += ... | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:12:9:12:17 | Before ... += ... | Assignments.cs:3:10:3:10 | M | | Assignments.cs:12:9:12:18 | ...; | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:12:9:12:18 | After ...; | Assignments.cs:3:10:3:10 | M | | Assignments.cs:12:14:12:17 | this access | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:14:9:14:13 | After access to event Event | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:14:9:14:13 | Before access to event Event | Assignments.cs:3:10:3:10 | M | | Assignments.cs:14:9:14:13 | access to event Event | Assignments.cs:3:10:3:10 | M | | Assignments.cs:14:9:14:13 | this access | Assignments.cs:3:10:3:10 | M | | Assignments.cs:14:9:14:35 | ... += ... | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:14:9:14:35 | After ... += ... | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:14:9:14:35 | Before ... += ... | Assignments.cs:3:10:3:10 | M | | Assignments.cs:14:9:14:36 | ...; | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:14:9:14:36 | After ...; | Assignments.cs:3:10:3:10 | M | | Assignments.cs:14:18:14:35 | (...) => ... | Assignments.cs:3:10:3:10 | M | -| Assignments.cs:14:18:14:35 | enter (...) => ... | Assignments.cs:14:18:14:35 | (...) => ... | -| Assignments.cs:14:18:14:35 | exit (...) => ... | Assignments.cs:14:18:14:35 | (...) => ... | -| Assignments.cs:14:18:14:35 | exit (...) => ... (normal) | Assignments.cs:14:18:14:35 | (...) => ... | +| Assignments.cs:14:18:14:35 | Entry | Assignments.cs:14:18:14:35 | (...) => ... | +| Assignments.cs:14:18:14:35 | Exit | Assignments.cs:14:18:14:35 | (...) => ... | +| Assignments.cs:14:18:14:35 | Normal Exit | Assignments.cs:14:18:14:35 | (...) => ... | +| Assignments.cs:14:19:14:24 | sender | Assignments.cs:14:18:14:35 | (...) => ... | +| Assignments.cs:14:27:14:27 | e | Assignments.cs:14:18:14:35 | (...) => ... | | Assignments.cs:14:33:14:35 | {...} | Assignments.cs:14:18:14:35 | (...) => ... | -| Assignments.cs:17:40:17:40 | enter + | Assignments.cs:17:40:17:40 | + | -| Assignments.cs:17:40:17:40 | exit + | Assignments.cs:17:40:17:40 | + | -| Assignments.cs:17:40:17:40 | exit + (normal) | Assignments.cs:17:40:17:40 | + | +| Assignments.cs:17:40:17:40 | Entry | Assignments.cs:17:40:17:40 | + | +| Assignments.cs:17:40:17:40 | Exit | Assignments.cs:17:40:17:40 | + | +| Assignments.cs:17:40:17:40 | Normal Exit | Assignments.cs:17:40:17:40 | + | +| Assignments.cs:17:54:17:54 | x | Assignments.cs:17:40:17:40 | + | +| Assignments.cs:17:69:17:69 | y | Assignments.cs:17:40:17:40 | + | | Assignments.cs:18:5:20:5 | {...} | Assignments.cs:17:40:17:40 | + | +| Assignments.cs:19:9:19:17 | Before return ...; | Assignments.cs:17:40:17:40 | + | | Assignments.cs:19:9:19:17 | return ...; | Assignments.cs:17:40:17:40 | + | | Assignments.cs:19:16:19:16 | access to parameter x | Assignments.cs:17:40:17:40 | + | -| Assignments.cs:27:10:27:23 | enter SetParamSingle | Assignments.cs:27:10:27:23 | SetParamSingle | -| Assignments.cs:27:10:27:23 | exit SetParamSingle | Assignments.cs:27:10:27:23 | SetParamSingle | -| Assignments.cs:27:10:27:23 | exit SetParamSingle (normal) | Assignments.cs:27:10:27:23 | SetParamSingle | +| Assignments.cs:27:10:27:23 | Entry | Assignments.cs:27:10:27:23 | SetParamSingle | +| Assignments.cs:27:10:27:23 | Exit | Assignments.cs:27:10:27:23 | SetParamSingle | +| Assignments.cs:27:10:27:23 | Normal Exit | Assignments.cs:27:10:27:23 | SetParamSingle | +| Assignments.cs:27:33:27:33 | x | Assignments.cs:27:10:27:23 | SetParamSingle | +| Assignments.cs:28:5:30:5 | After {...} | Assignments.cs:27:10:27:23 | SetParamSingle | | Assignments.cs:28:5:30:5 | {...} | Assignments.cs:27:10:27:23 | SetParamSingle | +| Assignments.cs:29:9:29:9 | access to parameter x | Assignments.cs:27:10:27:23 | SetParamSingle | | Assignments.cs:29:9:29:14 | ... = ... | Assignments.cs:27:10:27:23 | SetParamSingle | +| Assignments.cs:29:9:29:14 | After ... = ... | Assignments.cs:27:10:27:23 | SetParamSingle | +| Assignments.cs:29:9:29:14 | Before ... = ... | Assignments.cs:27:10:27:23 | SetParamSingle | | Assignments.cs:29:9:29:15 | ...; | Assignments.cs:27:10:27:23 | SetParamSingle | +| Assignments.cs:29:9:29:15 | After ...; | Assignments.cs:27:10:27:23 | SetParamSingle | | Assignments.cs:29:13:29:14 | 42 | Assignments.cs:27:10:27:23 | SetParamSingle | -| Assignments.cs:32:10:32:22 | enter SetParamMulti | Assignments.cs:32:10:32:22 | SetParamMulti | -| Assignments.cs:32:10:32:22 | exit SetParamMulti | Assignments.cs:32:10:32:22 | SetParamMulti | -| Assignments.cs:32:10:32:22 | exit SetParamMulti (normal) | Assignments.cs:32:10:32:22 | SetParamMulti | +| Assignments.cs:32:10:32:22 | Entry | Assignments.cs:32:10:32:22 | SetParamMulti | +| Assignments.cs:32:10:32:22 | Exit | Assignments.cs:32:10:32:22 | SetParamMulti | +| Assignments.cs:32:10:32:22 | Normal Exit | Assignments.cs:32:10:32:22 | SetParamMulti | +| Assignments.cs:32:32:32:32 | x | Assignments.cs:32:10:32:22 | SetParamMulti | +| Assignments.cs:32:42:32:42 | o | Assignments.cs:32:10:32:22 | SetParamMulti | +| Assignments.cs:32:56:32:56 | y | Assignments.cs:32:10:32:22 | SetParamMulti | +| Assignments.cs:33:5:36:5 | After {...} | Assignments.cs:32:10:32:22 | SetParamMulti | | Assignments.cs:33:5:36:5 | {...} | Assignments.cs:32:10:32:22 | SetParamMulti | +| Assignments.cs:34:9:34:9 | access to parameter x | Assignments.cs:32:10:32:22 | SetParamMulti | | Assignments.cs:34:9:34:14 | ... = ... | Assignments.cs:32:10:32:22 | SetParamMulti | +| Assignments.cs:34:9:34:14 | After ... = ... | Assignments.cs:32:10:32:22 | SetParamMulti | +| Assignments.cs:34:9:34:14 | Before ... = ... | Assignments.cs:32:10:32:22 | SetParamMulti | | Assignments.cs:34:9:34:15 | ...; | Assignments.cs:32:10:32:22 | SetParamMulti | +| Assignments.cs:34:9:34:15 | After ...; | Assignments.cs:32:10:32:22 | SetParamMulti | | Assignments.cs:34:13:34:14 | 42 | Assignments.cs:32:10:32:22 | SetParamMulti | +| Assignments.cs:35:9:35:9 | access to parameter y | Assignments.cs:32:10:32:22 | SetParamMulti | | Assignments.cs:35:9:35:19 | ... = ... | Assignments.cs:32:10:32:22 | SetParamMulti | +| Assignments.cs:35:9:35:19 | After ... = ... | Assignments.cs:32:10:32:22 | SetParamMulti | +| Assignments.cs:35:9:35:19 | Before ... = ... | Assignments.cs:32:10:32:22 | SetParamMulti | | Assignments.cs:35:9:35:20 | ...; | Assignments.cs:32:10:32:22 | SetParamMulti | +| Assignments.cs:35:9:35:20 | After ...; | Assignments.cs:32:10:32:22 | SetParamMulti | | Assignments.cs:35:13:35:19 | "Hello" | Assignments.cs:32:10:32:22 | SetParamMulti | -| Assignments.cs:38:10:38:11 | enter M2 | Assignments.cs:38:10:38:11 | M2 | -| Assignments.cs:38:10:38:11 | exit M2 | Assignments.cs:38:10:38:11 | M2 | -| Assignments.cs:38:10:38:11 | exit M2 (normal) | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:38:10:38:11 | Entry | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:38:10:38:11 | Exit | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:38:10:38:11 | Normal Exit | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:39:5:45:5 | After {...} | Assignments.cs:38:10:38:11 | M2 | | Assignments.cs:39:5:45:5 | {...} | Assignments.cs:38:10:38:11 | M2 | | Assignments.cs:40:9:40:15 | ... ...; | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:40:9:40:15 | After ... ...; | Assignments.cs:38:10:38:11 | M2 | | Assignments.cs:40:13:40:14 | Int32 x1 | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:41:9:41:30 | After call to method SetParamSingle | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:41:9:41:30 | Before call to method SetParamSingle | Assignments.cs:38:10:38:11 | M2 | | Assignments.cs:41:9:41:30 | call to method SetParamSingle | Assignments.cs:38:10:38:11 | M2 | | Assignments.cs:41:9:41:30 | this access | Assignments.cs:38:10:38:11 | M2 | | Assignments.cs:41:9:41:31 | ...; | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:41:9:41:31 | After ...; | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:41:28:41:29 | access to local variable x1 | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:42:9:42:36 | After call to method SetParamSingle | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:42:9:42:36 | Before call to method SetParamSingle | Assignments.cs:38:10:38:11 | M2 | | Assignments.cs:42:9:42:36 | call to method SetParamSingle | Assignments.cs:38:10:38:11 | M2 | | Assignments.cs:42:9:42:36 | this access | Assignments.cs:38:10:38:11 | M2 | | Assignments.cs:42:9:42:37 | ...; | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:42:9:42:37 | After ...; | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:42:28:42:35 | After access to field IntField | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:42:28:42:35 | Before access to field IntField | Assignments.cs:38:10:38:11 | M2 | | Assignments.cs:42:28:42:35 | access to field IntField | Assignments.cs:38:10:38:11 | M2 | | Assignments.cs:42:28:42:35 | this access | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:43:9:43:55 | After call to method SetParamMulti | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:43:9:43:55 | Before call to method SetParamMulti | Assignments.cs:38:10:38:11 | M2 | | Assignments.cs:43:9:43:55 | call to method SetParamMulti | Assignments.cs:38:10:38:11 | M2 | | Assignments.cs:43:9:43:55 | this access | Assignments.cs:38:10:38:11 | M2 | | Assignments.cs:43:9:43:56 | ...; | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:43:9:43:56 | After ...; | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:43:31:43:31 | Int32 y | Assignments.cs:38:10:38:11 | M2 | | Assignments.cs:43:34:43:37 | null | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:43:44:43:54 | After access to field StringField | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:43:44:43:54 | Before access to field StringField | Assignments.cs:38:10:38:11 | M2 | | Assignments.cs:43:44:43:54 | access to field StringField | Assignments.cs:38:10:38:11 | M2 | | Assignments.cs:43:44:43:54 | this access | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:44:9:44:58 | After call to method SetParamMulti | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:44:9:44:58 | Before call to method SetParamMulti | Assignments.cs:38:10:38:11 | M2 | | Assignments.cs:44:9:44:58 | call to method SetParamMulti | Assignments.cs:38:10:38:11 | M2 | | Assignments.cs:44:9:44:58 | this access | Assignments.cs:38:10:38:11 | M2 | | Assignments.cs:44:9:44:59 | ...; | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:44:9:44:59 | After ...; | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:44:27:44:34 | After access to field IntField | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:44:27:44:34 | Before access to field IntField | Assignments.cs:38:10:38:11 | M2 | | Assignments.cs:44:27:44:34 | access to field IntField | Assignments.cs:38:10:38:11 | M2 | | Assignments.cs:44:27:44:34 | this access | Assignments.cs:38:10:38:11 | M2 | | Assignments.cs:44:37:44:40 | null | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:44:47:44:57 | After access to field StringField | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:44:47:44:57 | Before access to field StringField | Assignments.cs:38:10:38:11 | M2 | | Assignments.cs:44:47:44:57 | access to field StringField | Assignments.cs:38:10:38:11 | M2 | | Assignments.cs:44:47:44:57 | this access | Assignments.cs:38:10:38:11 | M2 | +| BreakInTry.cs:1:7:1:16 | After call to constructor Object | BreakInTry.cs:1:7:1:16 | BreakInTry | +| BreakInTry.cs:1:7:1:16 | After call to method | BreakInTry.cs:1:7:1:16 | BreakInTry | +| BreakInTry.cs:1:7:1:16 | Before call to constructor Object | BreakInTry.cs:1:7:1:16 | BreakInTry | +| BreakInTry.cs:1:7:1:16 | Before call to method | BreakInTry.cs:1:7:1:16 | BreakInTry | +| BreakInTry.cs:1:7:1:16 | Entry | BreakInTry.cs:1:7:1:16 | BreakInTry | +| BreakInTry.cs:1:7:1:16 | Exit | BreakInTry.cs:1:7:1:16 | BreakInTry | +| BreakInTry.cs:1:7:1:16 | Normal Exit | BreakInTry.cs:1:7:1:16 | BreakInTry | | BreakInTry.cs:1:7:1:16 | call to constructor Object | BreakInTry.cs:1:7:1:16 | BreakInTry | | BreakInTry.cs:1:7:1:16 | call to method | BreakInTry.cs:1:7:1:16 | BreakInTry | -| BreakInTry.cs:1:7:1:16 | enter BreakInTry | BreakInTry.cs:1:7:1:16 | BreakInTry | -| BreakInTry.cs:1:7:1:16 | exit BreakInTry | BreakInTry.cs:1:7:1:16 | BreakInTry | -| BreakInTry.cs:1:7:1:16 | exit BreakInTry (normal) | BreakInTry.cs:1:7:1:16 | BreakInTry | | BreakInTry.cs:1:7:1:16 | this access | BreakInTry.cs:1:7:1:16 | BreakInTry | | BreakInTry.cs:1:7:1:16 | {...} | BreakInTry.cs:1:7:1:16 | BreakInTry | -| BreakInTry.cs:3:10:3:11 | enter M1 | BreakInTry.cs:3:10:3:11 | M1 | -| BreakInTry.cs:3:10:3:11 | exit M1 | BreakInTry.cs:3:10:3:11 | M1 | -| BreakInTry.cs:3:10:3:11 | exit M1 (normal) | BreakInTry.cs:3:10:3:11 | M1 | +| BreakInTry.cs:3:10:3:11 | Entry | BreakInTry.cs:3:10:3:11 | M1 | +| BreakInTry.cs:3:10:3:11 | Exit | BreakInTry.cs:3:10:3:11 | M1 | +| BreakInTry.cs:3:10:3:11 | Normal Exit | BreakInTry.cs:3:10:3:11 | M1 | +| BreakInTry.cs:3:22:3:25 | args | BreakInTry.cs:3:10:3:11 | M1 | +| BreakInTry.cs:4:5:18:5 | After {...} | BreakInTry.cs:3:10:3:11 | M1 | | BreakInTry.cs:4:5:18:5 | {...} | BreakInTry.cs:3:10:3:11 | M1 | +| BreakInTry.cs:5:9:17:9 | After try {...} ... | BreakInTry.cs:3:10:3:11 | M1 | | BreakInTry.cs:5:9:17:9 | try {...} ... | BreakInTry.cs:3:10:3:11 | M1 | +| BreakInTry.cs:6:9:12:9 | After {...} | BreakInTry.cs:3:10:3:11 | M1 | | BreakInTry.cs:6:9:12:9 | {...} | BreakInTry.cs:3:10:3:11 | M1 | +| BreakInTry.cs:7:13:11:13 | After foreach (... ... in ...) ... | BreakInTry.cs:3:10:3:11 | M1 | +| BreakInTry.cs:7:13:11:13 | [LoopHeader] foreach (... ... in ...) ... | BreakInTry.cs:3:10:3:11 | M1 | | BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | BreakInTry.cs:3:10:3:11 | M1 | | BreakInTry.cs:7:26:7:28 | String arg | BreakInTry.cs:3:10:3:11 | M1 | +| BreakInTry.cs:7:33:7:36 | After access to parameter args [empty] | BreakInTry.cs:3:10:3:11 | M1 | +| BreakInTry.cs:7:33:7:36 | After access to parameter args [non-empty] | BreakInTry.cs:3:10:3:11 | M1 | | BreakInTry.cs:7:33:7:36 | access to parameter args | BreakInTry.cs:3:10:3:11 | M1 | +| BreakInTry.cs:8:13:11:13 | After {...} | BreakInTry.cs:3:10:3:11 | M1 | | BreakInTry.cs:8:13:11:13 | {...} | BreakInTry.cs:3:10:3:11 | M1 | +| BreakInTry.cs:9:17:10:26 | After if (...) ... | BreakInTry.cs:3:10:3:11 | M1 | | BreakInTry.cs:9:17:10:26 | if (...) ... | BreakInTry.cs:3:10:3:11 | M1 | | BreakInTry.cs:9:21:9:23 | access to local variable arg | BreakInTry.cs:3:10:3:11 | M1 | | BreakInTry.cs:9:21:9:31 | ... == ... | BreakInTry.cs:3:10:3:11 | M1 | +| BreakInTry.cs:9:21:9:31 | After ... == ... [false] | BreakInTry.cs:3:10:3:11 | M1 | +| BreakInTry.cs:9:21:9:31 | After ... == ... [true] | BreakInTry.cs:3:10:3:11 | M1 | +| BreakInTry.cs:9:21:9:31 | Before ... == ... | BreakInTry.cs:3:10:3:11 | M1 | | BreakInTry.cs:9:28:9:31 | null | BreakInTry.cs:3:10:3:11 | M1 | +| BreakInTry.cs:10:21:10:26 | Before break; | BreakInTry.cs:3:10:3:11 | M1 | | BreakInTry.cs:10:21:10:26 | break; | BreakInTry.cs:3:10:3:11 | M1 | +| BreakInTry.cs:14:9:17:9 | After {...} | BreakInTry.cs:3:10:3:11 | M1 | | BreakInTry.cs:14:9:17:9 | {...} | BreakInTry.cs:3:10:3:11 | M1 | +| BreakInTry.cs:15:13:16:17 | After if (...) ... | BreakInTry.cs:3:10:3:11 | M1 | | BreakInTry.cs:15:13:16:17 | if (...) ... | BreakInTry.cs:3:10:3:11 | M1 | | BreakInTry.cs:15:17:15:20 | access to parameter args | BreakInTry.cs:3:10:3:11 | M1 | | BreakInTry.cs:15:17:15:28 | ... == ... | BreakInTry.cs:3:10:3:11 | M1 | +| BreakInTry.cs:15:17:15:28 | After ... == ... [false] | BreakInTry.cs:3:10:3:11 | M1 | +| BreakInTry.cs:15:17:15:28 | After ... == ... [true] | BreakInTry.cs:3:10:3:11 | M1 | +| BreakInTry.cs:15:17:15:28 | Before ... == ... | BreakInTry.cs:3:10:3:11 | M1 | | BreakInTry.cs:15:25:15:28 | null | BreakInTry.cs:3:10:3:11 | M1 | | BreakInTry.cs:16:17:16:17 | ; | BreakInTry.cs:3:10:3:11 | M1 | -| BreakInTry.cs:20:10:20:11 | enter M2 | BreakInTry.cs:20:10:20:11 | M2 | -| BreakInTry.cs:20:10:20:11 | exit M2 | BreakInTry.cs:20:10:20:11 | M2 | -| BreakInTry.cs:20:10:20:11 | exit M2 (normal) | BreakInTry.cs:20:10:20:11 | M2 | +| BreakInTry.cs:20:10:20:11 | Entry | BreakInTry.cs:20:10:20:11 | M2 | +| BreakInTry.cs:20:10:20:11 | Exit | BreakInTry.cs:20:10:20:11 | M2 | +| BreakInTry.cs:20:10:20:11 | Normal Exit | BreakInTry.cs:20:10:20:11 | M2 | +| BreakInTry.cs:20:22:20:25 | args | BreakInTry.cs:20:10:20:11 | M2 | +| BreakInTry.cs:21:5:36:5 | After {...} | BreakInTry.cs:20:10:20:11 | M2 | | BreakInTry.cs:21:5:36:5 | {...} | BreakInTry.cs:20:10:20:11 | M2 | +| BreakInTry.cs:22:9:34:9 | After foreach (... ... in ...) ... | BreakInTry.cs:20:10:20:11 | M2 | +| BreakInTry.cs:22:9:34:9 | [LoopHeader] foreach (... ... in ...) ... | BreakInTry.cs:20:10:20:11 | M2 | | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:20:10:20:11 | M2 | | BreakInTry.cs:22:22:22:24 | String arg | BreakInTry.cs:20:10:20:11 | M2 | +| BreakInTry.cs:22:29:22:32 | After access to parameter args [empty] | BreakInTry.cs:20:10:20:11 | M2 | +| BreakInTry.cs:22:29:22:32 | After access to parameter args [non-empty] | BreakInTry.cs:20:10:20:11 | M2 | | BreakInTry.cs:22:29:22:32 | access to parameter args | BreakInTry.cs:20:10:20:11 | M2 | +| BreakInTry.cs:23:9:34:9 | After {...} | BreakInTry.cs:20:10:20:11 | M2 | | BreakInTry.cs:23:9:34:9 | {...} | BreakInTry.cs:20:10:20:11 | M2 | +| BreakInTry.cs:24:13:33:13 | After try {...} ... | BreakInTry.cs:20:10:20:11 | M2 | | BreakInTry.cs:24:13:33:13 | try {...} ... | BreakInTry.cs:20:10:20:11 | M2 | +| BreakInTry.cs:25:13:28:13 | After {...} | BreakInTry.cs:20:10:20:11 | M2 | | BreakInTry.cs:25:13:28:13 | {...} | BreakInTry.cs:20:10:20:11 | M2 | +| BreakInTry.cs:26:17:27:26 | After if (...) ... | BreakInTry.cs:20:10:20:11 | M2 | | BreakInTry.cs:26:17:27:26 | if (...) ... | BreakInTry.cs:20:10:20:11 | M2 | | BreakInTry.cs:26:21:26:23 | access to local variable arg | BreakInTry.cs:20:10:20:11 | M2 | | BreakInTry.cs:26:21:26:31 | ... == ... | BreakInTry.cs:20:10:20:11 | M2 | +| BreakInTry.cs:26:21:26:31 | After ... == ... [false] | BreakInTry.cs:20:10:20:11 | M2 | +| BreakInTry.cs:26:21:26:31 | After ... == ... [true] | BreakInTry.cs:20:10:20:11 | M2 | +| BreakInTry.cs:26:21:26:31 | Before ... == ... | BreakInTry.cs:20:10:20:11 | M2 | | BreakInTry.cs:26:28:26:31 | null | BreakInTry.cs:20:10:20:11 | M2 | +| BreakInTry.cs:27:21:27:26 | Before break; | BreakInTry.cs:20:10:20:11 | M2 | | BreakInTry.cs:27:21:27:26 | break; | BreakInTry.cs:20:10:20:11 | M2 | +| BreakInTry.cs:30:13:33:13 | After {...} | BreakInTry.cs:20:10:20:11 | M2 | | BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:20:10:20:11 | M2 | +| BreakInTry.cs:31:17:32:21 | After if (...) ... | BreakInTry.cs:20:10:20:11 | M2 | | BreakInTry.cs:31:17:32:21 | if (...) ... | BreakInTry.cs:20:10:20:11 | M2 | | BreakInTry.cs:31:21:31:24 | access to parameter args | BreakInTry.cs:20:10:20:11 | M2 | | BreakInTry.cs:31:21:31:32 | ... == ... | BreakInTry.cs:20:10:20:11 | M2 | +| BreakInTry.cs:31:21:31:32 | After ... == ... [false] | BreakInTry.cs:20:10:20:11 | M2 | +| BreakInTry.cs:31:21:31:32 | After ... == ... [true] | BreakInTry.cs:20:10:20:11 | M2 | +| BreakInTry.cs:31:21:31:32 | Before ... == ... | BreakInTry.cs:20:10:20:11 | M2 | | BreakInTry.cs:31:29:31:32 | null | BreakInTry.cs:20:10:20:11 | M2 | | BreakInTry.cs:32:21:32:21 | ; | BreakInTry.cs:20:10:20:11 | M2 | | BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:20:10:20:11 | M2 | -| BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:38:10:38:11 | M3 | -| BreakInTry.cs:38:10:38:11 | exit M3 | BreakInTry.cs:38:10:38:11 | M3 | -| BreakInTry.cs:38:10:38:11 | exit M3 (normal) | BreakInTry.cs:38:10:38:11 | M3 | +| BreakInTry.cs:38:10:38:11 | Entry | BreakInTry.cs:38:10:38:11 | M3 | +| BreakInTry.cs:38:10:38:11 | Exit | BreakInTry.cs:38:10:38:11 | M3 | +| BreakInTry.cs:38:10:38:11 | Normal Exit | BreakInTry.cs:38:10:38:11 | M3 | +| BreakInTry.cs:38:22:38:25 | args | BreakInTry.cs:38:10:38:11 | M3 | +| BreakInTry.cs:39:5:54:5 | After {...} | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:39:5:54:5 | {...} | BreakInTry.cs:38:10:38:11 | M3 | +| BreakInTry.cs:40:9:52:9 | After try {...} ... | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:40:9:52:9 | try {...} ... | BreakInTry.cs:38:10:38:11 | M3 | +| BreakInTry.cs:41:9:44:9 | After {...} | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:41:9:44:9 | {...} | BreakInTry.cs:38:10:38:11 | M3 | +| BreakInTry.cs:42:13:43:23 | After if (...) ... | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:42:13:43:23 | if (...) ... | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:42:17:42:20 | access to parameter args | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:42:17:42:28 | ... == ... | BreakInTry.cs:38:10:38:11 | M3 | +| BreakInTry.cs:42:17:42:28 | After ... == ... [false] | BreakInTry.cs:38:10:38:11 | M3 | +| BreakInTry.cs:42:17:42:28 | After ... == ... [true] | BreakInTry.cs:38:10:38:11 | M3 | +| BreakInTry.cs:42:17:42:28 | Before ... == ... | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:42:25:42:28 | null | BreakInTry.cs:38:10:38:11 | M3 | +| BreakInTry.cs:43:17:43:23 | Before return ...; | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:43:17:43:23 | return ...; | BreakInTry.cs:38:10:38:11 | M3 | +| BreakInTry.cs:46:9:52:9 | After {...} | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:38:10:38:11 | M3 | +| BreakInTry.cs:47:13:51:13 | After foreach (... ... in ...) ... | BreakInTry.cs:38:10:38:11 | M3 | +| BreakInTry.cs:47:13:51:13 | [LoopHeader] foreach (... ... in ...) ... | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:47:26:47:28 | String arg | BreakInTry.cs:38:10:38:11 | M3 | +| BreakInTry.cs:47:33:47:36 | After access to parameter args [empty] | BreakInTry.cs:38:10:38:11 | M3 | +| BreakInTry.cs:47:33:47:36 | After access to parameter args [non-empty] | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:47:33:47:36 | access to parameter args | BreakInTry.cs:38:10:38:11 | M3 | +| BreakInTry.cs:48:13:51:13 | After {...} | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:48:13:51:13 | {...} | BreakInTry.cs:38:10:38:11 | M3 | +| BreakInTry.cs:49:17:50:26 | After if (...) ... | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:49:17:50:26 | if (...) ... | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:49:21:49:23 | access to local variable arg | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:49:21:49:31 | ... == ... | BreakInTry.cs:38:10:38:11 | M3 | +| BreakInTry.cs:49:21:49:31 | After ... == ... [false] | BreakInTry.cs:38:10:38:11 | M3 | +| BreakInTry.cs:49:21:49:31 | After ... == ... [true] | BreakInTry.cs:38:10:38:11 | M3 | +| BreakInTry.cs:49:21:49:31 | Before ... == ... | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:49:28:49:31 | null | BreakInTry.cs:38:10:38:11 | M3 | +| BreakInTry.cs:50:21:50:26 | Before break; | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:50:21:50:26 | break; | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:53:7:53:7 | ; | BreakInTry.cs:38:10:38:11 | M3 | -| BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:56:10:56:11 | M4 | -| BreakInTry.cs:56:10:56:11 | exit M4 | BreakInTry.cs:56:10:56:11 | M4 | -| BreakInTry.cs:56:10:56:11 | exit M4 (normal) | BreakInTry.cs:56:10:56:11 | M4 | +| BreakInTry.cs:56:10:56:11 | Entry | BreakInTry.cs:56:10:56:11 | M4 | +| BreakInTry.cs:56:10:56:11 | Exit | BreakInTry.cs:56:10:56:11 | M4 | +| BreakInTry.cs:56:10:56:11 | Normal Exit | BreakInTry.cs:56:10:56:11 | M4 | +| BreakInTry.cs:56:22:56:25 | args | BreakInTry.cs:56:10:56:11 | M4 | +| BreakInTry.cs:57:5:71:5 | After {...} | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:57:5:71:5 | {...} | BreakInTry.cs:56:10:56:11 | M4 | +| BreakInTry.cs:58:9:70:9 | After try {...} ... | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:58:9:70:9 | try {...} ... | BreakInTry.cs:56:10:56:11 | M4 | +| BreakInTry.cs:59:9:62:9 | After {...} | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:59:9:62:9 | {...} | BreakInTry.cs:56:10:56:11 | M4 | +| BreakInTry.cs:60:13:61:23 | After if (...) ... | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:60:13:61:23 | if (...) ... | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:60:17:60:20 | access to parameter args | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:60:17:60:28 | ... == ... | BreakInTry.cs:56:10:56:11 | M4 | +| BreakInTry.cs:60:17:60:28 | After ... == ... [false] | BreakInTry.cs:56:10:56:11 | M4 | +| BreakInTry.cs:60:17:60:28 | After ... == ... [true] | BreakInTry.cs:56:10:56:11 | M4 | +| BreakInTry.cs:60:17:60:28 | Before ... == ... | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:60:25:60:28 | null | BreakInTry.cs:56:10:56:11 | M4 | +| BreakInTry.cs:61:17:61:23 | Before return ...; | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:61:17:61:23 | return ...; | BreakInTry.cs:56:10:56:11 | M4 | +| BreakInTry.cs:64:9:70:9 | After {...} | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:56:10:56:11 | M4 | +| BreakInTry.cs:65:13:69:13 | After foreach (... ... in ...) ... | BreakInTry.cs:56:10:56:11 | M4 | +| BreakInTry.cs:65:13:69:13 | [LoopHeader] foreach (... ... in ...) ... | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:65:26:65:28 | String arg | BreakInTry.cs:56:10:56:11 | M4 | +| BreakInTry.cs:65:33:65:36 | After access to parameter args [empty] | BreakInTry.cs:56:10:56:11 | M4 | +| BreakInTry.cs:65:33:65:36 | After access to parameter args [non-empty] | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:65:33:65:36 | access to parameter args | BreakInTry.cs:56:10:56:11 | M4 | +| BreakInTry.cs:66:13:69:13 | After {...} | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:66:13:69:13 | {...} | BreakInTry.cs:56:10:56:11 | M4 | +| BreakInTry.cs:67:17:68:26 | After if (...) ... | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:67:17:68:26 | if (...) ... | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:67:21:67:23 | access to local variable arg | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:67:21:67:31 | ... == ... | BreakInTry.cs:56:10:56:11 | M4 | +| BreakInTry.cs:67:21:67:31 | After ... == ... [false] | BreakInTry.cs:56:10:56:11 | M4 | +| BreakInTry.cs:67:21:67:31 | After ... == ... [true] | BreakInTry.cs:56:10:56:11 | M4 | +| BreakInTry.cs:67:21:67:31 | Before ... == ... | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:67:28:67:31 | null | BreakInTry.cs:56:10:56:11 | M4 | +| BreakInTry.cs:68:21:68:26 | Before break; | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:68:21:68:26 | break; | BreakInTry.cs:56:10:56:11 | M4 | +| CompileTimeOperators.cs:3:7:3:26 | After call to constructor Object | CompileTimeOperators.cs:3:7:3:26 | CompileTimeOperators | +| CompileTimeOperators.cs:3:7:3:26 | After call to method | CompileTimeOperators.cs:3:7:3:26 | CompileTimeOperators | +| CompileTimeOperators.cs:3:7:3:26 | Before call to constructor Object | CompileTimeOperators.cs:3:7:3:26 | CompileTimeOperators | +| CompileTimeOperators.cs:3:7:3:26 | Before call to method | CompileTimeOperators.cs:3:7:3:26 | CompileTimeOperators | +| CompileTimeOperators.cs:3:7:3:26 | Entry | CompileTimeOperators.cs:3:7:3:26 | CompileTimeOperators | +| CompileTimeOperators.cs:3:7:3:26 | Exit | CompileTimeOperators.cs:3:7:3:26 | CompileTimeOperators | +| CompileTimeOperators.cs:3:7:3:26 | Normal Exit | CompileTimeOperators.cs:3:7:3:26 | CompileTimeOperators | | CompileTimeOperators.cs:3:7:3:26 | call to constructor Object | CompileTimeOperators.cs:3:7:3:26 | CompileTimeOperators | | CompileTimeOperators.cs:3:7:3:26 | call to method | CompileTimeOperators.cs:3:7:3:26 | CompileTimeOperators | -| CompileTimeOperators.cs:3:7:3:26 | enter CompileTimeOperators | CompileTimeOperators.cs:3:7:3:26 | CompileTimeOperators | -| CompileTimeOperators.cs:3:7:3:26 | exit CompileTimeOperators | CompileTimeOperators.cs:3:7:3:26 | CompileTimeOperators | -| CompileTimeOperators.cs:3:7:3:26 | exit CompileTimeOperators (normal) | CompileTimeOperators.cs:3:7:3:26 | CompileTimeOperators | | CompileTimeOperators.cs:3:7:3:26 | this access | CompileTimeOperators.cs:3:7:3:26 | CompileTimeOperators | | CompileTimeOperators.cs:3:7:3:26 | {...} | CompileTimeOperators.cs:3:7:3:26 | CompileTimeOperators | -| CompileTimeOperators.cs:5:9:5:15 | enter Default | CompileTimeOperators.cs:5:9:5:15 | Default | -| CompileTimeOperators.cs:5:9:5:15 | exit Default | CompileTimeOperators.cs:5:9:5:15 | Default | -| CompileTimeOperators.cs:5:9:5:15 | exit Default (normal) | CompileTimeOperators.cs:5:9:5:15 | Default | +| CompileTimeOperators.cs:5:9:5:15 | Entry | CompileTimeOperators.cs:5:9:5:15 | Default | +| CompileTimeOperators.cs:5:9:5:15 | Exit | CompileTimeOperators.cs:5:9:5:15 | Default | +| CompileTimeOperators.cs:5:9:5:15 | Normal Exit | CompileTimeOperators.cs:5:9:5:15 | Default | | CompileTimeOperators.cs:6:5:8:5 | {...} | CompileTimeOperators.cs:5:9:5:15 | Default | +| CompileTimeOperators.cs:7:9:7:28 | Before return ...; | CompileTimeOperators.cs:5:9:5:15 | Default | | CompileTimeOperators.cs:7:9:7:28 | return ...; | CompileTimeOperators.cs:5:9:5:15 | Default | | CompileTimeOperators.cs:7:16:7:27 | default(...) | CompileTimeOperators.cs:5:9:5:15 | Default | -| CompileTimeOperators.cs:10:9:10:14 | enter Sizeof | CompileTimeOperators.cs:10:9:10:14 | Sizeof | -| CompileTimeOperators.cs:10:9:10:14 | exit Sizeof | CompileTimeOperators.cs:10:9:10:14 | Sizeof | -| CompileTimeOperators.cs:10:9:10:14 | exit Sizeof (normal) | CompileTimeOperators.cs:10:9:10:14 | Sizeof | +| CompileTimeOperators.cs:10:9:10:14 | Entry | CompileTimeOperators.cs:10:9:10:14 | Sizeof | +| CompileTimeOperators.cs:10:9:10:14 | Exit | CompileTimeOperators.cs:10:9:10:14 | Sizeof | +| CompileTimeOperators.cs:10:9:10:14 | Normal Exit | CompileTimeOperators.cs:10:9:10:14 | Sizeof | | CompileTimeOperators.cs:11:5:13:5 | {...} | CompileTimeOperators.cs:10:9:10:14 | Sizeof | +| CompileTimeOperators.cs:12:9:12:27 | Before return ...; | CompileTimeOperators.cs:10:9:10:14 | Sizeof | | CompileTimeOperators.cs:12:9:12:27 | return ...; | CompileTimeOperators.cs:10:9:10:14 | Sizeof | | CompileTimeOperators.cs:12:16:12:26 | sizeof(..) | CompileTimeOperators.cs:10:9:10:14 | Sizeof | -| CompileTimeOperators.cs:15:10:15:15 | enter Typeof | CompileTimeOperators.cs:15:10:15:15 | Typeof | -| CompileTimeOperators.cs:15:10:15:15 | exit Typeof | CompileTimeOperators.cs:15:10:15:15 | Typeof | -| CompileTimeOperators.cs:15:10:15:15 | exit Typeof (normal) | CompileTimeOperators.cs:15:10:15:15 | Typeof | +| CompileTimeOperators.cs:15:10:15:15 | Entry | CompileTimeOperators.cs:15:10:15:15 | Typeof | +| CompileTimeOperators.cs:15:10:15:15 | Exit | CompileTimeOperators.cs:15:10:15:15 | Typeof | +| CompileTimeOperators.cs:15:10:15:15 | Normal Exit | CompileTimeOperators.cs:15:10:15:15 | Typeof | | CompileTimeOperators.cs:16:5:18:5 | {...} | CompileTimeOperators.cs:15:10:15:15 | Typeof | +| CompileTimeOperators.cs:17:9:17:27 | Before return ...; | CompileTimeOperators.cs:15:10:15:15 | Typeof | | CompileTimeOperators.cs:17:9:17:27 | return ...; | CompileTimeOperators.cs:15:10:15:15 | Typeof | | CompileTimeOperators.cs:17:16:17:26 | typeof(...) | CompileTimeOperators.cs:15:10:15:15 | Typeof | -| CompileTimeOperators.cs:20:12:20:17 | enter Nameof | CompileTimeOperators.cs:20:12:20:17 | Nameof | -| CompileTimeOperators.cs:20:12:20:17 | exit Nameof | CompileTimeOperators.cs:20:12:20:17 | Nameof | -| CompileTimeOperators.cs:20:12:20:17 | exit Nameof (normal) | CompileTimeOperators.cs:20:12:20:17 | Nameof | +| CompileTimeOperators.cs:20:12:20:17 | Entry | CompileTimeOperators.cs:20:12:20:17 | Nameof | +| CompileTimeOperators.cs:20:12:20:17 | Exit | CompileTimeOperators.cs:20:12:20:17 | Nameof | +| CompileTimeOperators.cs:20:12:20:17 | Normal Exit | CompileTimeOperators.cs:20:12:20:17 | Nameof | +| CompileTimeOperators.cs:20:23:20:23 | i | CompileTimeOperators.cs:20:12:20:17 | Nameof | | CompileTimeOperators.cs:21:5:23:5 | {...} | CompileTimeOperators.cs:20:12:20:17 | Nameof | +| CompileTimeOperators.cs:22:9:22:25 | Before return ...; | CompileTimeOperators.cs:20:12:20:17 | Nameof | | CompileTimeOperators.cs:22:9:22:25 | return ...; | CompileTimeOperators.cs:20:12:20:17 | Nameof | | CompileTimeOperators.cs:22:16:22:24 | nameof(...) | CompileTimeOperators.cs:20:12:20:17 | Nameof | +| CompileTimeOperators.cs:26:7:26:22 | After call to constructor Object | CompileTimeOperators.cs:26:7:26:22 | GotoInTryFinally | +| CompileTimeOperators.cs:26:7:26:22 | After call to method | CompileTimeOperators.cs:26:7:26:22 | GotoInTryFinally | +| CompileTimeOperators.cs:26:7:26:22 | Before call to constructor Object | CompileTimeOperators.cs:26:7:26:22 | GotoInTryFinally | +| CompileTimeOperators.cs:26:7:26:22 | Before call to method | CompileTimeOperators.cs:26:7:26:22 | GotoInTryFinally | +| CompileTimeOperators.cs:26:7:26:22 | Entry | CompileTimeOperators.cs:26:7:26:22 | GotoInTryFinally | +| CompileTimeOperators.cs:26:7:26:22 | Exit | CompileTimeOperators.cs:26:7:26:22 | GotoInTryFinally | +| CompileTimeOperators.cs:26:7:26:22 | Normal Exit | CompileTimeOperators.cs:26:7:26:22 | GotoInTryFinally | | CompileTimeOperators.cs:26:7:26:22 | call to constructor Object | CompileTimeOperators.cs:26:7:26:22 | GotoInTryFinally | | CompileTimeOperators.cs:26:7:26:22 | call to method | CompileTimeOperators.cs:26:7:26:22 | GotoInTryFinally | -| CompileTimeOperators.cs:26:7:26:22 | enter GotoInTryFinally | CompileTimeOperators.cs:26:7:26:22 | GotoInTryFinally | -| CompileTimeOperators.cs:26:7:26:22 | exit GotoInTryFinally | CompileTimeOperators.cs:26:7:26:22 | GotoInTryFinally | -| CompileTimeOperators.cs:26:7:26:22 | exit GotoInTryFinally (normal) | CompileTimeOperators.cs:26:7:26:22 | GotoInTryFinally | | CompileTimeOperators.cs:26:7:26:22 | this access | CompileTimeOperators.cs:26:7:26:22 | GotoInTryFinally | | CompileTimeOperators.cs:26:7:26:22 | {...} | CompileTimeOperators.cs:26:7:26:22 | GotoInTryFinally | -| CompileTimeOperators.cs:28:10:28:10 | enter M | CompileTimeOperators.cs:28:10:28:10 | M | -| CompileTimeOperators.cs:28:10:28:10 | exit M | CompileTimeOperators.cs:28:10:28:10 | M | -| CompileTimeOperators.cs:28:10:28:10 | exit M (abnormal) | CompileTimeOperators.cs:28:10:28:10 | M | -| CompileTimeOperators.cs:28:10:28:10 | exit M (normal) | CompileTimeOperators.cs:28:10:28:10 | M | +| CompileTimeOperators.cs:28:10:28:10 | Entry | CompileTimeOperators.cs:28:10:28:10 | M | +| CompileTimeOperators.cs:28:10:28:10 | Exceptional Exit | CompileTimeOperators.cs:28:10:28:10 | M | +| CompileTimeOperators.cs:28:10:28:10 | Exit | CompileTimeOperators.cs:28:10:28:10 | M | +| CompileTimeOperators.cs:28:10:28:10 | Normal Exit | CompileTimeOperators.cs:28:10:28:10 | M | +| CompileTimeOperators.cs:29:5:41:5 | After {...} | CompileTimeOperators.cs:28:10:28:10 | M | | CompileTimeOperators.cs:29:5:41:5 | {...} | CompileTimeOperators.cs:28:10:28:10 | M | +| CompileTimeOperators.cs:30:9:38:9 | After try {...} ... | CompileTimeOperators.cs:28:10:28:10 | M | | CompileTimeOperators.cs:30:9:38:9 | try {...} ... | CompileTimeOperators.cs:28:10:28:10 | M | | CompileTimeOperators.cs:31:9:34:9 | {...} | CompileTimeOperators.cs:28:10:28:10 | M | +| CompileTimeOperators.cs:32:13:32:21 | Before goto ...; | CompileTimeOperators.cs:28:10:28:10 | M | | CompileTimeOperators.cs:32:13:32:21 | goto ...; | CompileTimeOperators.cs:28:10:28:10 | M | +| CompileTimeOperators.cs:36:9:38:9 | After {...} | CompileTimeOperators.cs:28:10:28:10 | M | | CompileTimeOperators.cs:36:9:38:9 | {...} | CompileTimeOperators.cs:28:10:28:10 | M | +| CompileTimeOperators.cs:37:13:37:40 | After call to method WriteLine | CompileTimeOperators.cs:28:10:28:10 | M | +| CompileTimeOperators.cs:37:13:37:40 | Before call to method WriteLine | CompileTimeOperators.cs:28:10:28:10 | M | | CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | CompileTimeOperators.cs:28:10:28:10 | M | | CompileTimeOperators.cs:37:13:37:41 | ...; | CompileTimeOperators.cs:28:10:28:10 | M | +| CompileTimeOperators.cs:37:13:37:41 | After ...; | CompileTimeOperators.cs:28:10:28:10 | M | | CompileTimeOperators.cs:37:31:37:39 | "Finally" | CompileTimeOperators.cs:28:10:28:10 | M | +| CompileTimeOperators.cs:39:9:39:33 | After call to method WriteLine | CompileTimeOperators.cs:28:10:28:10 | M | +| CompileTimeOperators.cs:39:9:39:33 | Before call to method WriteLine | CompileTimeOperators.cs:28:10:28:10 | M | | CompileTimeOperators.cs:39:9:39:33 | call to method WriteLine | CompileTimeOperators.cs:28:10:28:10 | M | | CompileTimeOperators.cs:39:9:39:34 | ...; | CompileTimeOperators.cs:28:10:28:10 | M | +| CompileTimeOperators.cs:39:9:39:34 | After ...; | CompileTimeOperators.cs:28:10:28:10 | M | | CompileTimeOperators.cs:39:27:39:32 | "Dead" | CompileTimeOperators.cs:28:10:28:10 | M | | CompileTimeOperators.cs:40:9:40:11 | End: | CompileTimeOperators.cs:28:10:28:10 | M | +| CompileTimeOperators.cs:40:14:40:37 | After call to method WriteLine | CompileTimeOperators.cs:28:10:28:10 | M | +| CompileTimeOperators.cs:40:14:40:37 | Before call to method WriteLine | CompileTimeOperators.cs:28:10:28:10 | M | | CompileTimeOperators.cs:40:14:40:37 | call to method WriteLine | CompileTimeOperators.cs:28:10:28:10 | M | | CompileTimeOperators.cs:40:14:40:38 | ...; | CompileTimeOperators.cs:28:10:28:10 | M | +| CompileTimeOperators.cs:40:14:40:38 | After ...; | CompileTimeOperators.cs:28:10:28:10 | M | | CompileTimeOperators.cs:40:32:40:36 | "End" | CompileTimeOperators.cs:28:10:28:10 | M | +| ConditionalAccess.cs:1:7:1:23 | After call to constructor Object | ConditionalAccess.cs:1:7:1:23 | ConditionalAccess | +| ConditionalAccess.cs:1:7:1:23 | After call to method | ConditionalAccess.cs:1:7:1:23 | ConditionalAccess | +| ConditionalAccess.cs:1:7:1:23 | Before call to constructor Object | ConditionalAccess.cs:1:7:1:23 | ConditionalAccess | +| ConditionalAccess.cs:1:7:1:23 | Before call to method | ConditionalAccess.cs:1:7:1:23 | ConditionalAccess | +| ConditionalAccess.cs:1:7:1:23 | Entry | ConditionalAccess.cs:1:7:1:23 | ConditionalAccess | +| ConditionalAccess.cs:1:7:1:23 | Exit | ConditionalAccess.cs:1:7:1:23 | ConditionalAccess | +| ConditionalAccess.cs:1:7:1:23 | Normal Exit | ConditionalAccess.cs:1:7:1:23 | ConditionalAccess | | ConditionalAccess.cs:1:7:1:23 | call to constructor Object | ConditionalAccess.cs:1:7:1:23 | ConditionalAccess | | ConditionalAccess.cs:1:7:1:23 | call to method | ConditionalAccess.cs:1:7:1:23 | ConditionalAccess | -| ConditionalAccess.cs:1:7:1:23 | enter ConditionalAccess | ConditionalAccess.cs:1:7:1:23 | ConditionalAccess | -| ConditionalAccess.cs:1:7:1:23 | exit ConditionalAccess | ConditionalAccess.cs:1:7:1:23 | ConditionalAccess | -| ConditionalAccess.cs:1:7:1:23 | exit ConditionalAccess (normal) | ConditionalAccess.cs:1:7:1:23 | ConditionalAccess | | ConditionalAccess.cs:1:7:1:23 | this access | ConditionalAccess.cs:1:7:1:23 | ConditionalAccess | | ConditionalAccess.cs:1:7:1:23 | {...} | ConditionalAccess.cs:1:7:1:23 | ConditionalAccess | -| ConditionalAccess.cs:3:12:3:13 | enter M1 | ConditionalAccess.cs:3:12:3:13 | M1 | -| ConditionalAccess.cs:3:12:3:13 | exit M1 | ConditionalAccess.cs:3:12:3:13 | M1 | -| ConditionalAccess.cs:3:12:3:13 | exit M1 (normal) | ConditionalAccess.cs:3:12:3:13 | M1 | +| ConditionalAccess.cs:3:12:3:13 | Entry | ConditionalAccess.cs:3:12:3:13 | M1 | +| ConditionalAccess.cs:3:12:3:13 | Exit | ConditionalAccess.cs:3:12:3:13 | M1 | +| ConditionalAccess.cs:3:12:3:13 | Normal Exit | ConditionalAccess.cs:3:12:3:13 | M1 | +| ConditionalAccess.cs:3:20:3:20 | i | ConditionalAccess.cs:3:12:3:13 | M1 | +| ConditionalAccess.cs:3:26:3:26 | After access to parameter i [non-null] | ConditionalAccess.cs:3:12:3:13 | M1 | +| ConditionalAccess.cs:3:26:3:26 | After access to parameter i [null] | ConditionalAccess.cs:3:12:3:13 | M1 | | ConditionalAccess.cs:3:26:3:26 | access to parameter i | ConditionalAccess.cs:3:12:3:13 | M1 | +| ConditionalAccess.cs:3:26:3:38 | After call to method ToString [non-null] | ConditionalAccess.cs:3:12:3:13 | M1 | +| ConditionalAccess.cs:3:26:3:38 | After call to method ToString [null] | ConditionalAccess.cs:3:12:3:13 | M1 | +| ConditionalAccess.cs:3:26:3:38 | Before call to method ToString | ConditionalAccess.cs:3:12:3:13 | M1 | | ConditionalAccess.cs:3:26:3:38 | call to method ToString | ConditionalAccess.cs:3:12:3:13 | M1 | +| ConditionalAccess.cs:3:26:3:49 | After call to method ToLower | ConditionalAccess.cs:3:12:3:13 | M1 | +| ConditionalAccess.cs:3:26:3:49 | Before call to method ToLower | ConditionalAccess.cs:3:12:3:13 | M1 | | ConditionalAccess.cs:3:26:3:49 | call to method ToLower | ConditionalAccess.cs:3:12:3:13 | M1 | -| ConditionalAccess.cs:5:10:5:11 | enter M2 | ConditionalAccess.cs:5:10:5:11 | M2 | -| ConditionalAccess.cs:5:10:5:11 | exit M2 | ConditionalAccess.cs:5:10:5:11 | M2 | -| ConditionalAccess.cs:5:10:5:11 | exit M2 (normal) | ConditionalAccess.cs:5:10:5:11 | M2 | +| ConditionalAccess.cs:5:10:5:11 | Entry | ConditionalAccess.cs:5:10:5:11 | M2 | +| ConditionalAccess.cs:5:10:5:11 | Exit | ConditionalAccess.cs:5:10:5:11 | M2 | +| ConditionalAccess.cs:5:10:5:11 | Normal Exit | ConditionalAccess.cs:5:10:5:11 | M2 | +| ConditionalAccess.cs:5:20:5:20 | s | ConditionalAccess.cs:5:10:5:11 | M2 | +| ConditionalAccess.cs:5:26:5:26 | After access to parameter s [non-null] | ConditionalAccess.cs:5:10:5:11 | M2 | +| ConditionalAccess.cs:5:26:5:26 | After access to parameter s [null] | ConditionalAccess.cs:5:10:5:11 | M2 | | ConditionalAccess.cs:5:26:5:26 | access to parameter s | ConditionalAccess.cs:5:10:5:11 | M2 | +| ConditionalAccess.cs:5:26:5:34 | After access to property Length | ConditionalAccess.cs:5:10:5:11 | M2 | +| ConditionalAccess.cs:5:26:5:34 | Before access to property Length | ConditionalAccess.cs:5:10:5:11 | M2 | | ConditionalAccess.cs:5:26:5:34 | access to property Length | ConditionalAccess.cs:5:10:5:11 | M2 | -| ConditionalAccess.cs:7:10:7:11 | enter M3 | ConditionalAccess.cs:7:10:7:11 | M3 | -| ConditionalAccess.cs:7:10:7:11 | exit M3 | ConditionalAccess.cs:7:10:7:11 | M3 | -| ConditionalAccess.cs:7:10:7:11 | exit M3 (normal) | ConditionalAccess.cs:7:10:7:11 | M3 | +| ConditionalAccess.cs:7:10:7:11 | Entry | ConditionalAccess.cs:7:10:7:11 | M3 | +| ConditionalAccess.cs:7:10:7:11 | Exit | ConditionalAccess.cs:7:10:7:11 | M3 | +| ConditionalAccess.cs:7:10:7:11 | Normal Exit | ConditionalAccess.cs:7:10:7:11 | M3 | +| ConditionalAccess.cs:7:20:7:21 | s1 | ConditionalAccess.cs:7:10:7:11 | M3 | +| ConditionalAccess.cs:7:31:7:32 | s2 | ConditionalAccess.cs:7:10:7:11 | M3 | +| ConditionalAccess.cs:7:38:7:55 | After access to property Length | ConditionalAccess.cs:7:10:7:11 | M3 | +| ConditionalAccess.cs:7:38:7:55 | Before access to property Length | ConditionalAccess.cs:7:10:7:11 | M3 | | ConditionalAccess.cs:7:38:7:55 | access to property Length | ConditionalAccess.cs:7:10:7:11 | M3 | +| ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [non-null] | ConditionalAccess.cs:7:10:7:11 | M3 | +| ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [null] | ConditionalAccess.cs:7:10:7:11 | M3 | | ConditionalAccess.cs:7:39:7:40 | access to parameter s1 | ConditionalAccess.cs:7:10:7:11 | M3 | | ConditionalAccess.cs:7:39:7:46 | ... ?? ... | ConditionalAccess.cs:7:10:7:11 | M3 | -| ConditionalAccess.cs:7:39:7:46 | [non-null] ... ?? ... | ConditionalAccess.cs:7:10:7:11 | M3 | -| ConditionalAccess.cs:7:39:7:46 | [null] ... ?? ... | ConditionalAccess.cs:7:10:7:11 | M3 | +| ConditionalAccess.cs:7:39:7:46 | After ... ?? ... [non-null] | ConditionalAccess.cs:7:10:7:11 | M3 | +| ConditionalAccess.cs:7:39:7:46 | After ... ?? ... [null] | ConditionalAccess.cs:7:10:7:11 | M3 | +| ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [non-null] | ConditionalAccess.cs:7:10:7:11 | M3 | +| ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [null] | ConditionalAccess.cs:7:10:7:11 | M3 | | ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | ConditionalAccess.cs:7:10:7:11 | M3 | -| ConditionalAccess.cs:9:9:9:10 | enter M4 | ConditionalAccess.cs:9:9:9:10 | M4 | -| ConditionalAccess.cs:9:9:9:10 | exit M4 | ConditionalAccess.cs:9:9:9:10 | M4 | -| ConditionalAccess.cs:9:9:9:10 | exit M4 (normal) | ConditionalAccess.cs:9:9:9:10 | M4 | +| ConditionalAccess.cs:9:9:9:10 | Entry | ConditionalAccess.cs:9:9:9:10 | M4 | +| ConditionalAccess.cs:9:9:9:10 | Exit | ConditionalAccess.cs:9:9:9:10 | M4 | +| ConditionalAccess.cs:9:9:9:10 | Normal Exit | ConditionalAccess.cs:9:9:9:10 | M4 | +| ConditionalAccess.cs:9:19:9:19 | s | ConditionalAccess.cs:9:9:9:10 | M4 | +| ConditionalAccess.cs:9:25:9:25 | After access to parameter s [non-null] | ConditionalAccess.cs:9:9:9:10 | M4 | +| ConditionalAccess.cs:9:25:9:25 | After access to parameter s [null] | ConditionalAccess.cs:9:9:9:10 | M4 | | ConditionalAccess.cs:9:25:9:25 | access to parameter s | ConditionalAccess.cs:9:9:9:10 | M4 | +| ConditionalAccess.cs:9:25:9:33 | After access to property Length [non-null] | ConditionalAccess.cs:9:9:9:10 | M4 | +| ConditionalAccess.cs:9:25:9:33 | After access to property Length [null] | ConditionalAccess.cs:9:9:9:10 | M4 | +| ConditionalAccess.cs:9:25:9:33 | Before access to property Length | ConditionalAccess.cs:9:9:9:10 | M4 | | ConditionalAccess.cs:9:25:9:33 | access to property Length | ConditionalAccess.cs:9:9:9:10 | M4 | | ConditionalAccess.cs:9:25:9:38 | ... ?? ... | ConditionalAccess.cs:9:9:9:10 | M4 | +| ConditionalAccess.cs:9:25:9:38 | After ... ?? ... | ConditionalAccess.cs:9:9:9:10 | M4 | | ConditionalAccess.cs:9:38:9:38 | 0 | ConditionalAccess.cs:9:9:9:10 | M4 | -| ConditionalAccess.cs:11:9:11:10 | enter M5 | ConditionalAccess.cs:11:9:11:10 | M5 | -| ConditionalAccess.cs:11:9:11:10 | exit M5 | ConditionalAccess.cs:11:9:11:10 | M5 | -| ConditionalAccess.cs:11:9:11:10 | exit M5 (normal) | ConditionalAccess.cs:11:9:11:10 | M5 | +| ConditionalAccess.cs:11:9:11:10 | Entry | ConditionalAccess.cs:11:9:11:10 | M5 | +| ConditionalAccess.cs:11:9:11:10 | Exit | ConditionalAccess.cs:11:9:11:10 | M5 | +| ConditionalAccess.cs:11:9:11:10 | Normal Exit | ConditionalAccess.cs:11:9:11:10 | M5 | +| ConditionalAccess.cs:11:19:11:19 | s | ConditionalAccess.cs:11:9:11:10 | M5 | | ConditionalAccess.cs:12:5:17:5 | {...} | ConditionalAccess.cs:11:9:11:10 | M5 | | ConditionalAccess.cs:13:9:16:21 | if (...) ... | ConditionalAccess.cs:11:9:11:10 | M5 | +| ConditionalAccess.cs:13:13:13:13 | After access to parameter s [non-null] | ConditionalAccess.cs:11:9:11:10 | M5 | +| ConditionalAccess.cs:13:13:13:13 | After access to parameter s [null] | ConditionalAccess.cs:11:9:11:10 | M5 | | ConditionalAccess.cs:13:13:13:13 | access to parameter s | ConditionalAccess.cs:11:9:11:10 | M5 | +| ConditionalAccess.cs:13:13:13:21 | After access to property Length | ConditionalAccess.cs:11:9:11:10 | M5 | +| ConditionalAccess.cs:13:13:13:21 | Before access to property Length | ConditionalAccess.cs:11:9:11:10 | M5 | | ConditionalAccess.cs:13:13:13:21 | access to property Length | ConditionalAccess.cs:11:9:11:10 | M5 | | ConditionalAccess.cs:13:13:13:25 | ... > ... | ConditionalAccess.cs:11:9:11:10 | M5 | +| ConditionalAccess.cs:13:13:13:25 | After ... > ... [false] | ConditionalAccess.cs:11:9:11:10 | M5 | +| ConditionalAccess.cs:13:13:13:25 | After ... > ... [true] | ConditionalAccess.cs:11:9:11:10 | M5 | +| ConditionalAccess.cs:13:13:13:25 | Before ... > ... | ConditionalAccess.cs:11:9:11:10 | M5 | | ConditionalAccess.cs:13:25:13:25 | 0 | ConditionalAccess.cs:11:9:11:10 | M5 | | ConditionalAccess.cs:13:25:13:25 | (...) ... | ConditionalAccess.cs:11:9:11:10 | M5 | +| ConditionalAccess.cs:13:25:13:25 | After (...) ... | ConditionalAccess.cs:11:9:11:10 | M5 | +| ConditionalAccess.cs:13:25:13:25 | Before (...) ... | ConditionalAccess.cs:11:9:11:10 | M5 | +| ConditionalAccess.cs:14:13:14:21 | Before return ...; | ConditionalAccess.cs:11:9:11:10 | M5 | | ConditionalAccess.cs:14:13:14:21 | return ...; | ConditionalAccess.cs:11:9:11:10 | M5 | | ConditionalAccess.cs:14:20:14:20 | 0 | ConditionalAccess.cs:11:9:11:10 | M5 | +| ConditionalAccess.cs:16:13:16:21 | Before return ...; | ConditionalAccess.cs:11:9:11:10 | M5 | | ConditionalAccess.cs:16:13:16:21 | return ...; | ConditionalAccess.cs:11:9:11:10 | M5 | | ConditionalAccess.cs:16:20:16:20 | 1 | ConditionalAccess.cs:11:9:11:10 | M5 | -| ConditionalAccess.cs:19:12:19:13 | enter M6 | ConditionalAccess.cs:19:12:19:13 | M6 | -| ConditionalAccess.cs:19:12:19:13 | exit M6 | ConditionalAccess.cs:19:12:19:13 | M6 | -| ConditionalAccess.cs:19:12:19:13 | exit M6 (normal) | ConditionalAccess.cs:19:12:19:13 | M6 | +| ConditionalAccess.cs:19:12:19:13 | Entry | ConditionalAccess.cs:19:12:19:13 | M6 | +| ConditionalAccess.cs:19:12:19:13 | Exit | ConditionalAccess.cs:19:12:19:13 | M6 | +| ConditionalAccess.cs:19:12:19:13 | Normal Exit | ConditionalAccess.cs:19:12:19:13 | M6 | +| ConditionalAccess.cs:19:22:19:23 | s1 | ConditionalAccess.cs:19:12:19:13 | M6 | +| ConditionalAccess.cs:19:33:19:34 | s2 | ConditionalAccess.cs:19:12:19:13 | M6 | +| ConditionalAccess.cs:19:40:19:41 | After access to parameter s1 [non-null] | ConditionalAccess.cs:19:12:19:13 | M6 | +| ConditionalAccess.cs:19:40:19:41 | After access to parameter s1 [null] | ConditionalAccess.cs:19:12:19:13 | M6 | | ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | ConditionalAccess.cs:19:12:19:13 | M6 | +| ConditionalAccess.cs:19:40:19:60 | After call to method CommaJoinWith | ConditionalAccess.cs:19:12:19:13 | M6 | +| ConditionalAccess.cs:19:40:19:60 | Before call to method CommaJoinWith | ConditionalAccess.cs:19:12:19:13 | M6 | | ConditionalAccess.cs:19:40:19:60 | call to method CommaJoinWith | ConditionalAccess.cs:19:12:19:13 | M6 | | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | ConditionalAccess.cs:19:12:19:13 | M6 | -| ConditionalAccess.cs:21:10:21:11 | enter M7 | ConditionalAccess.cs:21:10:21:11 | M7 | -| ConditionalAccess.cs:21:10:21:11 | exit M7 | ConditionalAccess.cs:21:10:21:11 | M7 | -| ConditionalAccess.cs:21:10:21:11 | exit M7 (normal) | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:21:10:21:11 | Entry | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:21:10:21:11 | Exit | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:21:10:21:11 | Normal Exit | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:21:17:21:17 | i | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:22:5:26:5 | After {...} | ConditionalAccess.cs:21:10:21:11 | M7 | | ConditionalAccess.cs:22:5:26:5 | {...} | ConditionalAccess.cs:21:10:21:11 | M7 | | ConditionalAccess.cs:23:9:23:39 | ... ...; | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:23:9:23:39 | After ... ...; | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:23:13:23:13 | access to local variable j | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:23:13:23:38 | After Nullable j = ... | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:23:13:23:38 | Before Nullable j = ... | ConditionalAccess.cs:21:10:21:11 | M7 | | ConditionalAccess.cs:23:13:23:38 | Nullable j = ... | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:23:17:23:38 | After access to property Length | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:23:17:23:38 | Before access to property Length | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:23:17:23:38 | access to property Length | ConditionalAccess.cs:21:10:21:11 | M7 | | ConditionalAccess.cs:23:18:23:29 | (...) ... | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:23:18:23:29 | After (...) ... [non-null] | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:23:18:23:29 | After (...) ... [null] | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:23:18:23:29 | Before (...) ... | ConditionalAccess.cs:21:10:21:11 | M7 | | ConditionalAccess.cs:23:26:23:29 | null | ConditionalAccess.cs:21:10:21:11 | M7 | | ConditionalAccess.cs:24:9:24:38 | ... ...; | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:24:9:24:38 | After ... ...; | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:24:13:24:13 | access to local variable s | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:24:13:24:37 | After String s = ... | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:24:13:24:37 | Before String s = ... | ConditionalAccess.cs:21:10:21:11 | M7 | | ConditionalAccess.cs:24:13:24:37 | String s = ... | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:24:17:24:37 | After call to method ToString | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:24:17:24:37 | Before call to method ToString | ConditionalAccess.cs:21:10:21:11 | M7 | | ConditionalAccess.cs:24:17:24:37 | call to method ToString | ConditionalAccess.cs:21:10:21:11 | M7 | | ConditionalAccess.cs:24:18:24:24 | (...) ... | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:24:18:24:24 | After (...) ... [non-null] | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:24:18:24:24 | After (...) ... [null] | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:24:18:24:24 | Before (...) ... | ConditionalAccess.cs:21:10:21:11 | M7 | | ConditionalAccess.cs:24:24:24:24 | access to parameter i | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:25:9:25:9 | access to local variable s | ConditionalAccess.cs:21:10:21:11 | M7 | | ConditionalAccess.cs:25:9:25:32 | ... = ... | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:25:9:25:32 | After ... = ... | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:25:9:25:32 | Before ... = ... | ConditionalAccess.cs:21:10:21:11 | M7 | | ConditionalAccess.cs:25:9:25:33 | ...; | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:25:9:25:33 | After ...; | ConditionalAccess.cs:21:10:21:11 | M7 | | ConditionalAccess.cs:25:13:25:14 | "" | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:25:13:25:14 | After "" [non-null] | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:25:13:25:14 | After "" [null] | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:25:13:25:32 | After call to method CommaJoinWith | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:25:13:25:32 | Before call to method CommaJoinWith | ConditionalAccess.cs:21:10:21:11 | M7 | | ConditionalAccess.cs:25:13:25:32 | call to method CommaJoinWith | ConditionalAccess.cs:21:10:21:11 | M7 | | ConditionalAccess.cs:25:31:25:31 | access to local variable s | ConditionalAccess.cs:21:10:21:11 | M7 | -| ConditionalAccess.cs:30:10:30:12 | enter Out | ConditionalAccess.cs:30:10:30:12 | Out | -| ConditionalAccess.cs:30:10:30:12 | exit Out | ConditionalAccess.cs:30:10:30:12 | Out | -| ConditionalAccess.cs:30:10:30:12 | exit Out (normal) | ConditionalAccess.cs:30:10:30:12 | Out | +| ConditionalAccess.cs:30:10:30:12 | Entry | ConditionalAccess.cs:30:10:30:12 | Out | +| ConditionalAccess.cs:30:10:30:12 | Exit | ConditionalAccess.cs:30:10:30:12 | Out | +| ConditionalAccess.cs:30:10:30:12 | Normal Exit | ConditionalAccess.cs:30:10:30:12 | Out | +| ConditionalAccess.cs:30:22:30:22 | i | ConditionalAccess.cs:30:10:30:12 | Out | +| ConditionalAccess.cs:30:28:30:28 | access to parameter i | ConditionalAccess.cs:30:10:30:12 | Out | | ConditionalAccess.cs:30:28:30:32 | ... = ... | ConditionalAccess.cs:30:10:30:12 | Out | +| ConditionalAccess.cs:30:28:30:32 | After ... = ... | ConditionalAccess.cs:30:10:30:12 | Out | +| ConditionalAccess.cs:30:28:30:32 | Before ... = ... | ConditionalAccess.cs:30:10:30:12 | Out | | ConditionalAccess.cs:30:32:30:32 | 0 | ConditionalAccess.cs:30:10:30:12 | Out | -| ConditionalAccess.cs:32:10:32:11 | enter M8 | ConditionalAccess.cs:32:10:32:11 | M8 | -| ConditionalAccess.cs:32:10:32:11 | exit M8 | ConditionalAccess.cs:32:10:32:11 | M8 | -| ConditionalAccess.cs:32:10:32:11 | exit M8 (normal) | ConditionalAccess.cs:32:10:32:11 | M8 | +| ConditionalAccess.cs:32:10:32:11 | Entry | ConditionalAccess.cs:32:10:32:11 | M8 | +| ConditionalAccess.cs:32:10:32:11 | Exit | ConditionalAccess.cs:32:10:32:11 | M8 | +| ConditionalAccess.cs:32:10:32:11 | Normal Exit | ConditionalAccess.cs:32:10:32:11 | M8 | +| ConditionalAccess.cs:32:18:32:18 | b | ConditionalAccess.cs:32:10:32:11 | M8 | +| ConditionalAccess.cs:32:29:32:29 | i | ConditionalAccess.cs:32:10:32:11 | M8 | +| ConditionalAccess.cs:33:5:36:5 | After {...} | ConditionalAccess.cs:32:10:32:11 | M8 | | ConditionalAccess.cs:33:5:36:5 | {...} | ConditionalAccess.cs:32:10:32:11 | M8 | +| ConditionalAccess.cs:34:9:34:9 | access to parameter i | ConditionalAccess.cs:32:10:32:11 | M8 | | ConditionalAccess.cs:34:9:34:13 | ... = ... | ConditionalAccess.cs:32:10:32:11 | M8 | +| ConditionalAccess.cs:34:9:34:13 | After ... = ... | ConditionalAccess.cs:32:10:32:11 | M8 | +| ConditionalAccess.cs:34:9:34:13 | Before ... = ... | ConditionalAccess.cs:32:10:32:11 | M8 | | ConditionalAccess.cs:34:9:34:14 | ...; | ConditionalAccess.cs:32:10:32:11 | M8 | +| ConditionalAccess.cs:34:9:34:14 | After ...; | ConditionalAccess.cs:32:10:32:11 | M8 | | ConditionalAccess.cs:34:13:34:13 | 0 | ConditionalAccess.cs:32:10:32:11 | M8 | +| ConditionalAccess.cs:35:9:35:12 | After access to property Prop [non-null] | ConditionalAccess.cs:32:10:32:11 | M8 | +| ConditionalAccess.cs:35:9:35:12 | After access to property Prop [null] | ConditionalAccess.cs:32:10:32:11 | M8 | +| ConditionalAccess.cs:35:9:35:12 | Before access to property Prop | ConditionalAccess.cs:32:10:32:11 | M8 | | ConditionalAccess.cs:35:9:35:12 | access to property Prop | ConditionalAccess.cs:32:10:32:11 | M8 | | ConditionalAccess.cs:35:9:35:12 | this access | ConditionalAccess.cs:32:10:32:11 | M8 | +| ConditionalAccess.cs:35:9:35:24 | After call to method Out | ConditionalAccess.cs:32:10:32:11 | M8 | +| ConditionalAccess.cs:35:9:35:24 | Before call to method Out | ConditionalAccess.cs:32:10:32:11 | M8 | | ConditionalAccess.cs:35:9:35:24 | call to method Out | ConditionalAccess.cs:32:10:32:11 | M8 | | ConditionalAccess.cs:35:9:35:25 | ...; | ConditionalAccess.cs:32:10:32:11 | M8 | -| ConditionalAccess.cs:42:9:42:11 | enter get_Item | ConditionalAccess.cs:42:9:42:11 | get_Item | -| ConditionalAccess.cs:42:9:42:11 | exit get_Item | ConditionalAccess.cs:42:9:42:11 | get_Item | -| ConditionalAccess.cs:42:9:42:11 | exit get_Item (normal) | ConditionalAccess.cs:42:9:42:11 | get_Item | +| ConditionalAccess.cs:35:9:35:25 | After ...; | ConditionalAccess.cs:32:10:32:11 | M8 | +| ConditionalAccess.cs:35:23:35:23 | access to parameter i | ConditionalAccess.cs:32:10:32:11 | M8 | +| ConditionalAccess.cs:40:21:40:25 | index | ConditionalAccess.cs:42:9:42:11 | get_Item | +| ConditionalAccess.cs:40:21:40:25 | index | ConditionalAccess.cs:43:9:43:11 | set_Item | +| ConditionalAccess.cs:42:9:42:11 | Entry | ConditionalAccess.cs:42:9:42:11 | get_Item | +| ConditionalAccess.cs:42:9:42:11 | Exit | ConditionalAccess.cs:42:9:42:11 | get_Item | +| ConditionalAccess.cs:42:9:42:11 | Normal Exit | ConditionalAccess.cs:42:9:42:11 | get_Item | | ConditionalAccess.cs:42:13:42:28 | {...} | ConditionalAccess.cs:42:9:42:11 | get_Item | +| ConditionalAccess.cs:42:15:42:26 | Before return ...; | ConditionalAccess.cs:42:9:42:11 | get_Item | | ConditionalAccess.cs:42:15:42:26 | return ...; | ConditionalAccess.cs:42:9:42:11 | get_Item | | ConditionalAccess.cs:42:22:42:25 | null | ConditionalAccess.cs:42:9:42:11 | get_Item | -| ConditionalAccess.cs:43:9:43:11 | enter set_Item | ConditionalAccess.cs:43:9:43:11 | set_Item | -| ConditionalAccess.cs:43:9:43:11 | exit set_Item | ConditionalAccess.cs:43:9:43:11 | set_Item | -| ConditionalAccess.cs:43:9:43:11 | exit set_Item (normal) | ConditionalAccess.cs:43:9:43:11 | set_Item | +| ConditionalAccess.cs:43:9:43:11 | Entry | ConditionalAccess.cs:43:9:43:11 | set_Item | +| ConditionalAccess.cs:43:9:43:11 | Exit | ConditionalAccess.cs:43:9:43:11 | set_Item | +| ConditionalAccess.cs:43:9:43:11 | Normal Exit | ConditionalAccess.cs:43:9:43:11 | set_Item | +| ConditionalAccess.cs:43:9:43:11 | value | ConditionalAccess.cs:43:9:43:11 | set_Item | | ConditionalAccess.cs:43:13:43:15 | {...} | ConditionalAccess.cs:43:9:43:11 | set_Item | -| ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:46:10:46:11 | M9 | -| ConditionalAccess.cs:46:10:46:11 | exit M9 | ConditionalAccess.cs:46:10:46:11 | M9 | -| ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:46:10:46:11 | Entry | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:46:10:46:11 | Exit | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:46:10:46:11 | Normal Exit | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:46:31:46:32 | ca | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:47:5:55:5 | After {...} | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:47:5:55:5 | {...} | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [null] | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:48:9:48:10 | access to parameter ca | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:48:9:48:20 | After access to field IntField | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:48:9:48:20 | Before access to field IntField | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:48:9:48:20 | access to field IntField | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:48:9:48:26 | ...; | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:48:9:48:26 | After ...; | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:48:12:48:25 | ... = ... | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:48:12:48:25 | After ... = ... | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:48:12:48:25 | Before ... = ... | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:48:24:48:25 | 42 | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [null] | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:49:9:49:10 | access to parameter ca | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:49:9:49:22 | After access to property StringProp | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:49:9:49:22 | Before access to property StringProp | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:49:9:49:22 | access to property StringProp | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:49:9:49:33 | After ...; | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:49:12:49:32 | ... = ... | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:49:12:49:32 | After ... = ... | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:49:12:49:32 | Before ... = ... | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:49:26:49:32 | "Hello" | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [null] | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:50:9:50:10 | access to parameter ca | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:50:9:50:14 | After access to indexer | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:50:9:50:14 | Before access to indexer | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:50:9:50:14 | access to indexer | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:50:9:50:24 | After ...; | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:50:12:50:23 | ... = ... | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:50:12:50:23 | After ... = ... | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:50:12:50:23 | Before ... = ... | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:50:13:50:13 | 0 | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:50:18:50:23 | "Set0" | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [null] | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:51:9:51:10 | access to parameter ca | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:51:9:51:16 | After access to property Prop [non-null] | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:51:9:51:16 | After access to property Prop [null] | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:51:9:51:16 | Before access to property Prop | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:51:9:51:16 | access to property Prop | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:51:9:51:26 | After access to field IntField | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:51:9:51:26 | Before access to field IntField | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:51:9:51:26 | access to field IntField | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:51:9:51:32 | After ...; | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:51:18:51:31 | ... = ... | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:51:18:51:31 | After ... = ... | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:51:18:51:31 | Before ... = ... | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:51:30:51:31 | 84 | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [null] | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:52:9:52:10 | access to parameter ca | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:52:9:52:16 | After access to property Prop [non-null] | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:52:9:52:16 | After access to property Prop [null] | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:52:9:52:16 | Before access to property Prop | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:52:9:52:16 | access to property Prop | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:52:9:52:28 | After access to property StringProp | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:52:9:52:28 | Before access to property StringProp | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:52:9:52:28 | access to property StringProp | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:52:9:52:39 | After ...; | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:52:18:52:38 | ... = ... | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:52:18:52:38 | After ... = ... | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:52:18:52:38 | Before ... = ... | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:52:32:52:38 | "World" | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [null] | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:53:9:53:20 | After access to field IntField | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:53:9:53:20 | Before access to field IntField | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:53:9:53:26 | After ...; | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:53:12:53:25 | ... -= ... | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:53:12:53:25 | After ... -= ... | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:53:12:53:25 | Before ... -= ... | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [null] | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:54:9:54:22 | After access to property StringProp | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:54:9:54:22 | Before access to property StringProp | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:54:9:54:30 | After ...; | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:54:12:54:29 | ... += ... | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:54:12:54:29 | After ... += ... | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:54:12:54:29 | Before ... += ... | ConditionalAccess.cs:46:10:46:11 | M9 | | ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:46:10:46:11 | M9 | -| ConditionalAccess.cs:60:26:60:38 | enter CommaJoinWith | ConditionalAccess.cs:60:26:60:38 | CommaJoinWith | -| ConditionalAccess.cs:60:26:60:38 | exit CommaJoinWith | ConditionalAccess.cs:60:26:60:38 | CommaJoinWith | -| ConditionalAccess.cs:60:26:60:38 | exit CommaJoinWith (normal) | ConditionalAccess.cs:60:26:60:38 | CommaJoinWith | +| ConditionalAccess.cs:60:26:60:38 | Entry | ConditionalAccess.cs:60:26:60:38 | CommaJoinWith | +| ConditionalAccess.cs:60:26:60:38 | Exit | ConditionalAccess.cs:60:26:60:38 | CommaJoinWith | +| ConditionalAccess.cs:60:26:60:38 | Normal Exit | ConditionalAccess.cs:60:26:60:38 | CommaJoinWith | +| ConditionalAccess.cs:60:52:60:53 | s1 | ConditionalAccess.cs:60:26:60:38 | CommaJoinWith | +| ConditionalAccess.cs:60:63:60:64 | s2 | ConditionalAccess.cs:60:26:60:38 | CommaJoinWith | | ConditionalAccess.cs:60:70:60:71 | access to parameter s1 | ConditionalAccess.cs:60:26:60:38 | CommaJoinWith | | ConditionalAccess.cs:60:70:60:78 | ... + ... | ConditionalAccess.cs:60:26:60:38 | CommaJoinWith | +| ConditionalAccess.cs:60:70:60:78 | After ... + ... | ConditionalAccess.cs:60:26:60:38 | CommaJoinWith | +| ConditionalAccess.cs:60:70:60:78 | Before ... + ... | ConditionalAccess.cs:60:26:60:38 | CommaJoinWith | | ConditionalAccess.cs:60:70:60:83 | ... + ... | ConditionalAccess.cs:60:26:60:38 | CommaJoinWith | +| ConditionalAccess.cs:60:70:60:83 | After ... + ... | ConditionalAccess.cs:60:26:60:38 | CommaJoinWith | +| ConditionalAccess.cs:60:70:60:83 | Before ... + ... | ConditionalAccess.cs:60:26:60:38 | CommaJoinWith | | ConditionalAccess.cs:60:75:60:78 | ", " | ConditionalAccess.cs:60:26:60:38 | CommaJoinWith | | ConditionalAccess.cs:60:82:60:83 | access to parameter s2 | ConditionalAccess.cs:60:26:60:38 | CommaJoinWith | +| Conditions.cs:1:7:1:16 | After call to constructor Object | Conditions.cs:1:7:1:16 | Conditions | +| Conditions.cs:1:7:1:16 | After call to method | Conditions.cs:1:7:1:16 | Conditions | +| Conditions.cs:1:7:1:16 | Before call to constructor Object | Conditions.cs:1:7:1:16 | Conditions | +| Conditions.cs:1:7:1:16 | Before call to method | Conditions.cs:1:7:1:16 | Conditions | +| Conditions.cs:1:7:1:16 | Entry | Conditions.cs:1:7:1:16 | Conditions | +| Conditions.cs:1:7:1:16 | Exit | Conditions.cs:1:7:1:16 | Conditions | +| Conditions.cs:1:7:1:16 | Normal Exit | Conditions.cs:1:7:1:16 | Conditions | | Conditions.cs:1:7:1:16 | call to constructor Object | Conditions.cs:1:7:1:16 | Conditions | | Conditions.cs:1:7:1:16 | call to method | Conditions.cs:1:7:1:16 | Conditions | -| Conditions.cs:1:7:1:16 | enter Conditions | Conditions.cs:1:7:1:16 | Conditions | -| Conditions.cs:1:7:1:16 | exit Conditions | Conditions.cs:1:7:1:16 | Conditions | -| Conditions.cs:1:7:1:16 | exit Conditions (normal) | Conditions.cs:1:7:1:16 | Conditions | | Conditions.cs:1:7:1:16 | this access | Conditions.cs:1:7:1:16 | Conditions | | Conditions.cs:1:7:1:16 | {...} | Conditions.cs:1:7:1:16 | Conditions | -| Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:3:10:3:19 | IncrOrDecr | -| Conditions.cs:3:10:3:19 | exit IncrOrDecr | Conditions.cs:3:10:3:19 | IncrOrDecr | -| Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | Conditions.cs:3:10:3:19 | IncrOrDecr | +| Conditions.cs:3:10:3:19 | Entry | Conditions.cs:3:10:3:19 | IncrOrDecr | +| Conditions.cs:3:10:3:19 | Exit | Conditions.cs:3:10:3:19 | IncrOrDecr | +| Conditions.cs:3:10:3:19 | Normal Exit | Conditions.cs:3:10:3:19 | IncrOrDecr | +| Conditions.cs:3:26:3:28 | inc | Conditions.cs:3:10:3:19 | IncrOrDecr | +| Conditions.cs:3:39:3:39 | x | Conditions.cs:3:10:3:19 | IncrOrDecr | +| Conditions.cs:4:5:9:5 | After {...} | Conditions.cs:3:10:3:19 | IncrOrDecr | | Conditions.cs:4:5:9:5 | {...} | Conditions.cs:3:10:3:19 | IncrOrDecr | +| Conditions.cs:5:9:6:16 | After if (...) ... | Conditions.cs:3:10:3:19 | IncrOrDecr | | Conditions.cs:5:9:6:16 | if (...) ... | Conditions.cs:3:10:3:19 | IncrOrDecr | +| Conditions.cs:5:13:5:15 | After access to parameter inc [false] | Conditions.cs:3:10:3:19 | IncrOrDecr | +| Conditions.cs:5:13:5:15 | After access to parameter inc [true] | Conditions.cs:3:10:3:19 | IncrOrDecr | | Conditions.cs:5:13:5:15 | access to parameter inc | Conditions.cs:3:10:3:19 | IncrOrDecr | | Conditions.cs:6:13:6:13 | access to parameter x | Conditions.cs:3:10:3:19 | IncrOrDecr | | Conditions.cs:6:13:6:15 | ...++ | Conditions.cs:3:10:3:19 | IncrOrDecr | +| Conditions.cs:6:13:6:15 | After ...++ | Conditions.cs:3:10:3:19 | IncrOrDecr | +| Conditions.cs:6:13:6:15 | Before ...++ | Conditions.cs:3:10:3:19 | IncrOrDecr | | Conditions.cs:6:13:6:16 | ...; | Conditions.cs:3:10:3:19 | IncrOrDecr | +| Conditions.cs:6:13:6:16 | After ...; | Conditions.cs:3:10:3:19 | IncrOrDecr | +| Conditions.cs:7:9:8:16 | After if (...) ... | Conditions.cs:3:10:3:19 | IncrOrDecr | | Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:3:10:3:19 | IncrOrDecr | -| Conditions.cs:7:13:7:16 | [false] !... | Conditions.cs:3:10:3:19 | IncrOrDecr | -| Conditions.cs:7:13:7:16 | [true] !... | Conditions.cs:3:10:3:19 | IncrOrDecr | +| Conditions.cs:7:13:7:16 | !... | Conditions.cs:3:10:3:19 | IncrOrDecr | +| Conditions.cs:7:13:7:16 | After !... [false] | Conditions.cs:3:10:3:19 | IncrOrDecr | +| Conditions.cs:7:13:7:16 | After !... [true] | Conditions.cs:3:10:3:19 | IncrOrDecr | +| Conditions.cs:7:14:7:16 | After access to parameter inc [false] | Conditions.cs:3:10:3:19 | IncrOrDecr | +| Conditions.cs:7:14:7:16 | After access to parameter inc [true] | Conditions.cs:3:10:3:19 | IncrOrDecr | | Conditions.cs:7:14:7:16 | access to parameter inc | Conditions.cs:3:10:3:19 | IncrOrDecr | | Conditions.cs:8:13:8:13 | access to parameter x | Conditions.cs:3:10:3:19 | IncrOrDecr | | Conditions.cs:8:13:8:15 | ...-- | Conditions.cs:3:10:3:19 | IncrOrDecr | +| Conditions.cs:8:13:8:15 | After ...-- | Conditions.cs:3:10:3:19 | IncrOrDecr | +| Conditions.cs:8:13:8:15 | Before ...-- | Conditions.cs:3:10:3:19 | IncrOrDecr | | Conditions.cs:8:13:8:16 | ...; | Conditions.cs:3:10:3:19 | IncrOrDecr | -| Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:11:9:11:10 | M1 | -| Conditions.cs:11:9:11:10 | exit M1 | Conditions.cs:11:9:11:10 | M1 | -| Conditions.cs:11:9:11:10 | exit M1 (normal) | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:8:13:8:16 | After ...; | Conditions.cs:3:10:3:19 | IncrOrDecr | +| Conditions.cs:11:9:11:10 | Entry | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:11:9:11:10 | Exit | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:11:9:11:10 | Normal Exit | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:11:17:11:17 | b | Conditions.cs:11:9:11:10 | M1 | | Conditions.cs:12:5:20:5 | {...} | Conditions.cs:11:9:11:10 | M1 | | Conditions.cs:13:9:13:18 | ... ...; | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:13:9:13:18 | After ... ...; | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:13:13:13:13 | access to local variable x | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:13:13:13:17 | After Int32 x = ... | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:13:13:13:17 | Before Int32 x = ... | Conditions.cs:11:9:11:10 | M1 | | Conditions.cs:13:13:13:17 | Int32 x = ... | Conditions.cs:11:9:11:10 | M1 | | Conditions.cs:13:17:13:17 | 0 | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:14:9:15:16 | After if (...) ... | Conditions.cs:11:9:11:10 | M1 | | Conditions.cs:14:9:15:16 | if (...) ... | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:14:13:14:13 | After access to parameter b [false] | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:14:13:14:13 | After access to parameter b [true] | Conditions.cs:11:9:11:10 | M1 | | Conditions.cs:14:13:14:13 | access to parameter b | Conditions.cs:11:9:11:10 | M1 | | Conditions.cs:15:13:15:13 | access to local variable x | Conditions.cs:11:9:11:10 | M1 | | Conditions.cs:15:13:15:15 | ...++ | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:15:13:15:15 | After ...++ | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:15:13:15:15 | Before ...++ | Conditions.cs:11:9:11:10 | M1 | | Conditions.cs:15:13:15:16 | ...; | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:15:13:15:16 | After ...; | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:16:9:18:20 | After if (...) ... | Conditions.cs:11:9:11:10 | M1 | | Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:11:9:11:10 | M1 | | Conditions.cs:16:13:16:13 | access to local variable x | Conditions.cs:11:9:11:10 | M1 | | Conditions.cs:16:13:16:17 | ... > ... | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:16:13:16:17 | After ... > ... [false] | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:16:13:16:17 | After ... > ... [true] | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:16:13:16:17 | Before ... > ... | Conditions.cs:11:9:11:10 | M1 | | Conditions.cs:16:17:16:17 | 0 | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:17:13:18:20 | After if (...) ... | Conditions.cs:11:9:11:10 | M1 | | Conditions.cs:17:13:18:20 | if (...) ... | Conditions.cs:11:9:11:10 | M1 | -| Conditions.cs:17:17:17:18 | [false] !... | Conditions.cs:11:9:11:10 | M1 | -| Conditions.cs:17:17:17:18 | [true] !... | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:17:17:17:18 | !... | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:17:17:17:18 | After !... [false] | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:17:17:17:18 | After !... [true] | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:17:18:17:18 | After access to parameter b [false] | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:17:18:17:18 | After access to parameter b [true] | Conditions.cs:11:9:11:10 | M1 | | Conditions.cs:17:18:17:18 | access to parameter b | Conditions.cs:11:9:11:10 | M1 | | Conditions.cs:18:17:18:17 | access to local variable x | Conditions.cs:11:9:11:10 | M1 | | Conditions.cs:18:17:18:19 | ...-- | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:18:17:18:19 | After ...-- | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:18:17:18:19 | Before ...-- | Conditions.cs:11:9:11:10 | M1 | | Conditions.cs:18:17:18:20 | ...; | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:18:17:18:20 | After ...; | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:19:9:19:17 | Before return ...; | Conditions.cs:11:9:11:10 | M1 | | Conditions.cs:19:9:19:17 | return ...; | Conditions.cs:11:9:11:10 | M1 | | Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:11:9:11:10 | M1 | -| Conditions.cs:22:9:22:10 | enter M2 | Conditions.cs:22:9:22:10 | M2 | -| Conditions.cs:22:9:22:10 | exit M2 | Conditions.cs:22:9:22:10 | M2 | -| Conditions.cs:22:9:22:10 | exit M2 (normal) | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:22:9:22:10 | Entry | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:22:9:22:10 | Exit | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:22:9:22:10 | Normal Exit | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:22:17:22:18 | b1 | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:22:26:22:27 | b2 | Conditions.cs:22:9:22:10 | M2 | | Conditions.cs:23:5:31:5 | {...} | Conditions.cs:22:9:22:10 | M2 | | Conditions.cs:24:9:24:18 | ... ...; | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:24:9:24:18 | After ... ...; | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:24:13:24:13 | access to local variable x | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:24:13:24:17 | After Int32 x = ... | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:24:13:24:17 | Before Int32 x = ... | Conditions.cs:22:9:22:10 | M2 | | Conditions.cs:24:13:24:17 | Int32 x = ... | Conditions.cs:22:9:22:10 | M2 | | Conditions.cs:24:17:24:17 | 0 | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:25:9:27:20 | After if (...) ... | Conditions.cs:22:9:22:10 | M2 | | Conditions.cs:25:9:27:20 | if (...) ... | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:25:13:25:14 | After access to parameter b1 [false] | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:25:13:25:14 | After access to parameter b1 [true] | Conditions.cs:22:9:22:10 | M2 | | Conditions.cs:25:13:25:14 | access to parameter b1 | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:26:13:27:20 | After if (...) ... | Conditions.cs:22:9:22:10 | M2 | | Conditions.cs:26:13:27:20 | if (...) ... | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:26:17:26:18 | After access to parameter b2 [false] | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:26:17:26:18 | After access to parameter b2 [true] | Conditions.cs:22:9:22:10 | M2 | | Conditions.cs:26:17:26:18 | access to parameter b2 | Conditions.cs:22:9:22:10 | M2 | | Conditions.cs:27:17:27:17 | access to local variable x | Conditions.cs:22:9:22:10 | M2 | | Conditions.cs:27:17:27:19 | ...++ | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:27:17:27:19 | After ...++ | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:27:17:27:19 | Before ...++ | Conditions.cs:22:9:22:10 | M2 | | Conditions.cs:27:17:27:20 | ...; | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:27:17:27:20 | After ...; | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:28:9:29:16 | After if (...) ... | Conditions.cs:22:9:22:10 | M2 | | Conditions.cs:28:9:29:16 | if (...) ... | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:28:13:28:14 | After access to parameter b2 [false] | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:28:13:28:14 | After access to parameter b2 [true] | Conditions.cs:22:9:22:10 | M2 | | Conditions.cs:28:13:28:14 | access to parameter b2 | Conditions.cs:22:9:22:10 | M2 | | Conditions.cs:29:13:29:13 | access to local variable x | Conditions.cs:22:9:22:10 | M2 | | Conditions.cs:29:13:29:15 | ...++ | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:29:13:29:15 | After ...++ | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:29:13:29:15 | Before ...++ | Conditions.cs:22:9:22:10 | M2 | | Conditions.cs:29:13:29:16 | ...; | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:29:13:29:16 | After ...; | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:30:9:30:17 | Before return ...; | Conditions.cs:22:9:22:10 | M2 | | Conditions.cs:30:9:30:17 | return ...; | Conditions.cs:22:9:22:10 | M2 | | Conditions.cs:30:16:30:16 | access to local variable x | Conditions.cs:22:9:22:10 | M2 | -| Conditions.cs:33:9:33:10 | enter M3 | Conditions.cs:33:9:33:10 | M3 | -| Conditions.cs:33:9:33:10 | exit M3 | Conditions.cs:33:9:33:10 | M3 | -| Conditions.cs:33:9:33:10 | exit M3 (normal) | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:33:9:33:10 | Entry | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:33:9:33:10 | Exit | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:33:9:33:10 | Normal Exit | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:33:17:33:18 | b1 | Conditions.cs:33:9:33:10 | M3 | | Conditions.cs:34:5:44:5 | {...} | Conditions.cs:33:9:33:10 | M3 | | Conditions.cs:35:9:35:18 | ... ...; | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:35:9:35:18 | After ... ...; | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:35:13:35:13 | access to local variable x | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:35:13:35:17 | After Int32 x = ... | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:35:13:35:17 | Before Int32 x = ... | Conditions.cs:33:9:33:10 | M3 | | Conditions.cs:35:13:35:17 | Int32 x = ... | Conditions.cs:33:9:33:10 | M3 | | Conditions.cs:35:17:35:17 | 0 | Conditions.cs:33:9:33:10 | M3 | | Conditions.cs:36:9:36:23 | ... ...; | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:36:9:36:23 | After ... ...; | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:36:13:36:14 | access to local variable b2 | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:36:13:36:22 | After Boolean b2 = ... | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:36:13:36:22 | Before Boolean b2 = ... | Conditions.cs:33:9:33:10 | M3 | | Conditions.cs:36:13:36:22 | Boolean b2 = ... | Conditions.cs:33:9:33:10 | M3 | | Conditions.cs:36:18:36:22 | false | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:37:9:38:20 | After if (...) ... | Conditions.cs:33:9:33:10 | M3 | | Conditions.cs:37:9:38:20 | if (...) ... | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:37:13:37:14 | After access to parameter b1 [false] | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:37:13:37:14 | After access to parameter b1 [true] | Conditions.cs:33:9:33:10 | M3 | | Conditions.cs:37:13:37:14 | access to parameter b1 | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:38:13:38:14 | access to local variable b2 | Conditions.cs:33:9:33:10 | M3 | | Conditions.cs:38:13:38:19 | ... = ... | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:38:13:38:19 | After ... = ... | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:38:13:38:19 | Before ... = ... | Conditions.cs:33:9:33:10 | M3 | | Conditions.cs:38:13:38:20 | ...; | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:38:13:38:20 | After ...; | Conditions.cs:33:9:33:10 | M3 | | Conditions.cs:38:18:38:19 | access to parameter b1 | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:39:9:40:16 | After if (...) ... | Conditions.cs:33:9:33:10 | M3 | | Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:39:13:39:14 | After access to local variable b2 [false] | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:39:13:39:14 | After access to local variable b2 [true] | Conditions.cs:33:9:33:10 | M3 | | Conditions.cs:39:13:39:14 | access to local variable b2 | Conditions.cs:33:9:33:10 | M3 | | Conditions.cs:40:13:40:13 | access to local variable x | Conditions.cs:33:9:33:10 | M3 | | Conditions.cs:40:13:40:15 | ...++ | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:40:13:40:15 | After ...++ | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:40:13:40:15 | Before ...++ | Conditions.cs:33:9:33:10 | M3 | | Conditions.cs:40:13:40:16 | ...; | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:40:13:40:16 | After ...; | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:41:9:42:16 | After if (...) ... | Conditions.cs:33:9:33:10 | M3 | | Conditions.cs:41:9:42:16 | if (...) ... | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:41:13:41:14 | After access to local variable b2 [false] | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:41:13:41:14 | After access to local variable b2 [true] | Conditions.cs:33:9:33:10 | M3 | | Conditions.cs:41:13:41:14 | access to local variable b2 | Conditions.cs:33:9:33:10 | M3 | | Conditions.cs:42:13:42:13 | access to local variable x | Conditions.cs:33:9:33:10 | M3 | | Conditions.cs:42:13:42:15 | ...++ | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:42:13:42:15 | After ...++ | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:42:13:42:15 | Before ...++ | Conditions.cs:33:9:33:10 | M3 | | Conditions.cs:42:13:42:16 | ...; | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:42:13:42:16 | After ...; | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:43:9:43:17 | Before return ...; | Conditions.cs:33:9:33:10 | M3 | | Conditions.cs:43:9:43:17 | return ...; | Conditions.cs:33:9:33:10 | M3 | | Conditions.cs:43:16:43:16 | access to local variable x | Conditions.cs:33:9:33:10 | M3 | -| Conditions.cs:46:9:46:10 | enter M4 | Conditions.cs:46:9:46:10 | M4 | -| Conditions.cs:46:9:46:10 | exit M4 | Conditions.cs:46:9:46:10 | M4 | -| Conditions.cs:46:9:46:10 | exit M4 (normal) | Conditions.cs:46:9:46:10 | M4 | +| Conditions.cs:46:9:46:10 | Entry | Conditions.cs:46:9:46:10 | M4 | +| Conditions.cs:46:9:46:10 | Exit | Conditions.cs:46:9:46:10 | M4 | +| Conditions.cs:46:9:46:10 | Normal Exit | Conditions.cs:46:9:46:10 | M4 | +| Conditions.cs:46:17:46:17 | b | Conditions.cs:46:9:46:10 | M4 | +| Conditions.cs:46:24:46:24 | x | Conditions.cs:46:9:46:10 | M4 | | Conditions.cs:47:5:55:5 | {...} | Conditions.cs:46:9:46:10 | M4 | | Conditions.cs:48:9:48:18 | ... ...; | Conditions.cs:46:9:46:10 | M4 | +| Conditions.cs:48:9:48:18 | After ... ...; | Conditions.cs:46:9:46:10 | M4 | +| Conditions.cs:48:13:48:13 | access to local variable y | Conditions.cs:46:9:46:10 | M4 | +| Conditions.cs:48:13:48:17 | After Int32 y = ... | Conditions.cs:46:9:46:10 | M4 | +| Conditions.cs:48:13:48:17 | Before Int32 y = ... | Conditions.cs:46:9:46:10 | M4 | | Conditions.cs:48:13:48:17 | Int32 y = ... | Conditions.cs:46:9:46:10 | M4 | | Conditions.cs:48:17:48:17 | 0 | Conditions.cs:46:9:46:10 | M4 | +| Conditions.cs:49:9:53:9 | After while (...) ... | Conditions.cs:46:9:46:10 | M4 | +| Conditions.cs:49:9:53:9 | [LoopHeader] while (...) ... | Conditions.cs:46:9:46:10 | M4 | | Conditions.cs:49:9:53:9 | while (...) ... | Conditions.cs:46:9:46:10 | M4 | | Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:46:9:46:10 | M4 | | Conditions.cs:49:16:49:18 | ...-- | Conditions.cs:46:9:46:10 | M4 | +| Conditions.cs:49:16:49:18 | After ...-- | Conditions.cs:46:9:46:10 | M4 | +| Conditions.cs:49:16:49:18 | Before ...-- | Conditions.cs:46:9:46:10 | M4 | | Conditions.cs:49:16:49:22 | ... > ... | Conditions.cs:46:9:46:10 | M4 | +| Conditions.cs:49:16:49:22 | After ... > ... [false] | Conditions.cs:46:9:46:10 | M4 | +| Conditions.cs:49:16:49:22 | After ... > ... [true] | Conditions.cs:46:9:46:10 | M4 | +| Conditions.cs:49:16:49:22 | Before ... > ... | Conditions.cs:46:9:46:10 | M4 | | Conditions.cs:49:22:49:22 | 0 | Conditions.cs:46:9:46:10 | M4 | +| Conditions.cs:50:9:53:9 | After {...} | Conditions.cs:46:9:46:10 | M4 | | Conditions.cs:50:9:53:9 | {...} | Conditions.cs:46:9:46:10 | M4 | +| Conditions.cs:51:13:52:20 | After if (...) ... | Conditions.cs:46:9:46:10 | M4 | | Conditions.cs:51:13:52:20 | if (...) ... | Conditions.cs:46:9:46:10 | M4 | +| Conditions.cs:51:17:51:17 | After access to parameter b [false] | Conditions.cs:46:9:46:10 | M4 | +| Conditions.cs:51:17:51:17 | After access to parameter b [true] | Conditions.cs:46:9:46:10 | M4 | | Conditions.cs:51:17:51:17 | access to parameter b | Conditions.cs:46:9:46:10 | M4 | | Conditions.cs:52:17:52:17 | access to local variable y | Conditions.cs:46:9:46:10 | M4 | | Conditions.cs:52:17:52:19 | ...++ | Conditions.cs:46:9:46:10 | M4 | +| Conditions.cs:52:17:52:19 | After ...++ | Conditions.cs:46:9:46:10 | M4 | +| Conditions.cs:52:17:52:19 | Before ...++ | Conditions.cs:46:9:46:10 | M4 | | Conditions.cs:52:17:52:20 | ...; | Conditions.cs:46:9:46:10 | M4 | +| Conditions.cs:52:17:52:20 | After ...; | Conditions.cs:46:9:46:10 | M4 | +| Conditions.cs:54:9:54:17 | Before return ...; | Conditions.cs:46:9:46:10 | M4 | | Conditions.cs:54:9:54:17 | return ...; | Conditions.cs:46:9:46:10 | M4 | | Conditions.cs:54:16:54:16 | access to local variable y | Conditions.cs:46:9:46:10 | M4 | -| Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:57:9:57:10 | M5 | -| Conditions.cs:57:9:57:10 | exit M5 | Conditions.cs:57:9:57:10 | M5 | -| Conditions.cs:57:9:57:10 | exit M5 (normal) | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:57:9:57:10 | Entry | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:57:9:57:10 | Exit | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:57:9:57:10 | Normal Exit | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:57:17:57:17 | b | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:57:24:57:24 | x | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:58:5:68:5 | {...} | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:59:9:59:18 | ... ...; | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:59:9:59:18 | After ... ...; | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:59:13:59:13 | access to local variable y | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:59:13:59:17 | After Int32 y = ... | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:59:13:59:17 | Before Int32 y = ... | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:59:13:59:17 | Int32 y = ... | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:59:17:59:17 | 0 | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:60:9:64:9 | After while (...) ... | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:60:9:64:9 | while (...) ... | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:60:16:60:18 | ...-- | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:60:16:60:18 | After ...-- | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:60:16:60:18 | Before ...-- | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:60:16:60:22 | ... > ... | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:60:16:60:22 | After ... > ... [false] | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:60:16:60:22 | After ... > ... [true] | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:60:16:60:22 | Before ... > ... | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:60:22:60:22 | 0 | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:61:9:64:9 | After {...} | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:61:9:64:9 | {...} | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:62:13:63:20 | After if (...) ... | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:62:13:63:20 | if (...) ... | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:62:17:62:17 | After access to parameter b [false] | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:62:17:62:17 | After access to parameter b [true] | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:62:17:62:17 | access to parameter b | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:63:17:63:17 | access to local variable y | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:63:17:63:19 | ...++ | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:63:17:63:19 | After ...++ | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:63:17:63:19 | Before ...++ | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:63:17:63:20 | ...; | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:63:17:63:20 | After ...; | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:65:9:66:16 | After if (...) ... | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:65:9:66:16 | if (...) ... | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:65:13:65:13 | After access to parameter b [false] | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:65:13:65:13 | After access to parameter b [true] | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:65:13:65:13 | access to parameter b | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:66:13:66:13 | access to local variable y | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:66:13:66:15 | ...++ | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:66:13:66:15 | After ...++ | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:66:13:66:15 | Before ...++ | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:66:13:66:16 | ...; | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:66:13:66:16 | After ...; | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:67:9:67:17 | Before return ...; | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:67:9:67:17 | return ...; | Conditions.cs:57:9:57:10 | M5 | | Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:57:9:57:10 | M5 | -| Conditions.cs:70:9:70:10 | enter M6 | Conditions.cs:70:9:70:10 | M6 | -| Conditions.cs:70:9:70:10 | exit M6 | Conditions.cs:70:9:70:10 | M6 | -| Conditions.cs:70:9:70:10 | exit M6 (normal) | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:70:9:70:10 | Entry | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:70:9:70:10 | Exit | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:70:9:70:10 | Normal Exit | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:70:21:70:22 | ss | Conditions.cs:70:9:70:10 | M6 | | Conditions.cs:71:5:84:5 | {...} | Conditions.cs:70:9:70:10 | M6 | | Conditions.cs:72:9:72:30 | ... ...; | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:72:9:72:30 | After ... ...; | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:72:13:72:13 | access to local variable b | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:72:13:72:29 | After Boolean b = ... | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:72:13:72:29 | Before Boolean b = ... | Conditions.cs:70:9:70:10 | M6 | | Conditions.cs:72:13:72:29 | Boolean b = ... | Conditions.cs:70:9:70:10 | M6 | | Conditions.cs:72:17:72:18 | access to parameter ss | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:72:17:72:25 | After access to property Length | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:72:17:72:25 | Before access to property Length | Conditions.cs:70:9:70:10 | M6 | | Conditions.cs:72:17:72:25 | access to property Length | Conditions.cs:70:9:70:10 | M6 | | Conditions.cs:72:17:72:29 | ... > ... | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:72:17:72:29 | After ... > ... | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:72:17:72:29 | Before ... > ... | Conditions.cs:70:9:70:10 | M6 | | Conditions.cs:72:29:72:29 | 0 | Conditions.cs:70:9:70:10 | M6 | | Conditions.cs:73:9:73:18 | ... ...; | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:73:9:73:18 | After ... ...; | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:73:13:73:13 | access to local variable x | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:73:13:73:17 | After Int32 x = ... | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:73:13:73:17 | Before Int32 x = ... | Conditions.cs:70:9:70:10 | M6 | | Conditions.cs:73:13:73:17 | Int32 x = ... | Conditions.cs:70:9:70:10 | M6 | | Conditions.cs:73:17:73:17 | 0 | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:74:9:80:9 | After foreach (... ... in ...) ... | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:74:9:80:9 | [LoopHeader] foreach (... ... in ...) ... | Conditions.cs:70:9:70:10 | M6 | | Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:70:9:70:10 | M6 | | Conditions.cs:74:22:74:22 | String _ | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:74:27:74:28 | After access to parameter ss [empty] | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:74:27:74:28 | After access to parameter ss [non-empty] | Conditions.cs:70:9:70:10 | M6 | | Conditions.cs:74:27:74:28 | access to parameter ss | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:75:9:80:9 | After {...} | Conditions.cs:70:9:70:10 | M6 | | Conditions.cs:75:9:80:9 | {...} | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:76:13:77:20 | After if (...) ... | Conditions.cs:70:9:70:10 | M6 | | Conditions.cs:76:13:77:20 | if (...) ... | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:76:17:76:17 | After access to local variable b [false] | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:76:17:76:17 | After access to local variable b [true] | Conditions.cs:70:9:70:10 | M6 | | Conditions.cs:76:17:76:17 | access to local variable b | Conditions.cs:70:9:70:10 | M6 | | Conditions.cs:77:17:77:17 | access to local variable x | Conditions.cs:70:9:70:10 | M6 | | Conditions.cs:77:17:77:19 | ...++ | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:77:17:77:19 | After ...++ | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:77:17:77:19 | Before ...++ | Conditions.cs:70:9:70:10 | M6 | | Conditions.cs:77:17:77:20 | ...; | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:77:17:77:20 | After ...; | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:78:13:79:26 | After if (...) ... | Conditions.cs:70:9:70:10 | M6 | | Conditions.cs:78:13:79:26 | if (...) ... | Conditions.cs:70:9:70:10 | M6 | | Conditions.cs:78:17:78:17 | access to local variable x | Conditions.cs:70:9:70:10 | M6 | | Conditions.cs:78:17:78:21 | ... > ... | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:78:17:78:21 | After ... > ... [false] | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:78:17:78:21 | After ... > ... [true] | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:78:17:78:21 | Before ... > ... | Conditions.cs:70:9:70:10 | M6 | | Conditions.cs:78:21:78:21 | 0 | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:79:17:79:17 | access to local variable b | Conditions.cs:70:9:70:10 | M6 | | Conditions.cs:79:17:79:25 | ... = ... | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:79:17:79:25 | After ... = ... | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:79:17:79:25 | Before ... = ... | Conditions.cs:70:9:70:10 | M6 | | Conditions.cs:79:17:79:26 | ...; | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:79:17:79:26 | After ...; | Conditions.cs:70:9:70:10 | M6 | | Conditions.cs:79:21:79:25 | false | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:81:9:82:16 | After if (...) ... | Conditions.cs:70:9:70:10 | M6 | | Conditions.cs:81:9:82:16 | if (...) ... | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:81:13:81:13 | After access to local variable b [false] | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:81:13:81:13 | After access to local variable b [true] | Conditions.cs:70:9:70:10 | M6 | | Conditions.cs:81:13:81:13 | access to local variable b | Conditions.cs:70:9:70:10 | M6 | | Conditions.cs:82:13:82:13 | access to local variable x | Conditions.cs:70:9:70:10 | M6 | | Conditions.cs:82:13:82:15 | ...++ | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:82:13:82:15 | After ...++ | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:82:13:82:15 | Before ...++ | Conditions.cs:70:9:70:10 | M6 | | Conditions.cs:82:13:82:16 | ...; | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:82:13:82:16 | After ...; | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:83:9:83:17 | Before return ...; | Conditions.cs:70:9:70:10 | M6 | | Conditions.cs:83:9:83:17 | return ...; | Conditions.cs:70:9:70:10 | M6 | | Conditions.cs:83:16:83:16 | access to local variable x | Conditions.cs:70:9:70:10 | M6 | -| Conditions.cs:86:9:86:10 | enter M7 | Conditions.cs:86:9:86:10 | M7 | -| Conditions.cs:86:9:86:10 | exit M7 | Conditions.cs:86:9:86:10 | M7 | -| Conditions.cs:86:9:86:10 | exit M7 (normal) | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:86:9:86:10 | Entry | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:86:9:86:10 | Exit | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:86:9:86:10 | Normal Exit | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:86:21:86:22 | ss | Conditions.cs:86:9:86:10 | M7 | | Conditions.cs:87:5:100:5 | {...} | Conditions.cs:86:9:86:10 | M7 | | Conditions.cs:88:9:88:30 | ... ...; | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:88:9:88:30 | After ... ...; | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:88:13:88:13 | access to local variable b | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:88:13:88:29 | After Boolean b = ... | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:88:13:88:29 | Before Boolean b = ... | Conditions.cs:86:9:86:10 | M7 | | Conditions.cs:88:13:88:29 | Boolean b = ... | Conditions.cs:86:9:86:10 | M7 | | Conditions.cs:88:17:88:18 | access to parameter ss | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:88:17:88:25 | After access to property Length | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:88:17:88:25 | Before access to property Length | Conditions.cs:86:9:86:10 | M7 | | Conditions.cs:88:17:88:25 | access to property Length | Conditions.cs:86:9:86:10 | M7 | | Conditions.cs:88:17:88:29 | ... > ... | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:88:17:88:29 | After ... > ... | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:88:17:88:29 | Before ... > ... | Conditions.cs:86:9:86:10 | M7 | | Conditions.cs:88:29:88:29 | 0 | Conditions.cs:86:9:86:10 | M7 | | Conditions.cs:89:9:89:18 | ... ...; | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:89:9:89:18 | After ... ...; | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:89:13:89:13 | access to local variable x | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:89:13:89:17 | After Int32 x = ... | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:89:13:89:17 | Before Int32 x = ... | Conditions.cs:86:9:86:10 | M7 | | Conditions.cs:89:13:89:17 | Int32 x = ... | Conditions.cs:86:9:86:10 | M7 | | Conditions.cs:89:17:89:17 | 0 | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:90:9:98:9 | After foreach (... ... in ...) ... | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:90:9:98:9 | [LoopHeader] foreach (... ... in ...) ... | Conditions.cs:86:9:86:10 | M7 | | Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:86:9:86:10 | M7 | | Conditions.cs:90:22:90:22 | String _ | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:90:27:90:28 | After access to parameter ss [empty] | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:90:27:90:28 | After access to parameter ss [non-empty] | Conditions.cs:86:9:86:10 | M7 | | Conditions.cs:90:27:90:28 | access to parameter ss | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:91:9:98:9 | After {...} | Conditions.cs:86:9:86:10 | M7 | | Conditions.cs:91:9:98:9 | {...} | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:92:13:93:20 | After if (...) ... | Conditions.cs:86:9:86:10 | M7 | | Conditions.cs:92:13:93:20 | if (...) ... | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:92:17:92:17 | After access to local variable b [false] | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:92:17:92:17 | After access to local variable b [true] | Conditions.cs:86:9:86:10 | M7 | | Conditions.cs:92:17:92:17 | access to local variable b | Conditions.cs:86:9:86:10 | M7 | | Conditions.cs:93:17:93:17 | access to local variable x | Conditions.cs:86:9:86:10 | M7 | | Conditions.cs:93:17:93:19 | ...++ | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:93:17:93:19 | After ...++ | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:93:17:93:19 | Before ...++ | Conditions.cs:86:9:86:10 | M7 | | Conditions.cs:93:17:93:20 | ...; | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:93:17:93:20 | After ...; | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:94:13:95:26 | After if (...) ... | Conditions.cs:86:9:86:10 | M7 | | Conditions.cs:94:13:95:26 | if (...) ... | Conditions.cs:86:9:86:10 | M7 | | Conditions.cs:94:17:94:17 | access to local variable x | Conditions.cs:86:9:86:10 | M7 | | Conditions.cs:94:17:94:21 | ... > ... | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:94:17:94:21 | After ... > ... [false] | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:94:17:94:21 | After ... > ... [true] | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:94:17:94:21 | Before ... > ... | Conditions.cs:86:9:86:10 | M7 | | Conditions.cs:94:21:94:21 | 0 | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:95:17:95:17 | access to local variable b | Conditions.cs:86:9:86:10 | M7 | | Conditions.cs:95:17:95:25 | ... = ... | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:95:17:95:25 | After ... = ... | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:95:17:95:25 | Before ... = ... | Conditions.cs:86:9:86:10 | M7 | | Conditions.cs:95:17:95:26 | ...; | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:95:17:95:26 | After ...; | Conditions.cs:86:9:86:10 | M7 | | Conditions.cs:95:21:95:25 | false | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:96:13:97:20 | After if (...) ... | Conditions.cs:86:9:86:10 | M7 | | Conditions.cs:96:13:97:20 | if (...) ... | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:96:17:96:17 | After access to local variable b [false] | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:96:17:96:17 | After access to local variable b [true] | Conditions.cs:86:9:86:10 | M7 | | Conditions.cs:96:17:96:17 | access to local variable b | Conditions.cs:86:9:86:10 | M7 | | Conditions.cs:97:17:97:17 | access to local variable x | Conditions.cs:86:9:86:10 | M7 | | Conditions.cs:97:17:97:19 | ...++ | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:97:17:97:19 | After ...++ | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:97:17:97:19 | Before ...++ | Conditions.cs:86:9:86:10 | M7 | | Conditions.cs:97:17:97:20 | ...; | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:97:17:97:20 | After ...; | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:99:9:99:17 | Before return ...; | Conditions.cs:86:9:86:10 | M7 | | Conditions.cs:99:9:99:17 | return ...; | Conditions.cs:86:9:86:10 | M7 | | Conditions.cs:99:16:99:16 | access to local variable x | Conditions.cs:86:9:86:10 | M7 | -| Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:102:12:102:13 | exit M8 | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:102:12:102:13 | exit M8 (normal) | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:102:12:102:13 | Entry | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:102:12:102:13 | Exit | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:102:12:102:13 | Normal Exit | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:102:20:102:20 | b | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:103:5:111:5 | {...} | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:104:9:104:29 | ... ...; | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:104:9:104:29 | After ... ...; | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:104:13:104:13 | access to local variable x | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:104:13:104:28 | After String x = ... | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:104:13:104:28 | Before String x = ... | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:104:13:104:28 | String x = ... | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:104:17:104:17 | access to parameter b | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:104:17:104:28 | After call to method ToString | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:104:17:104:28 | Before call to method ToString | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:104:17:104:28 | call to method ToString | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:105:9:106:20 | After if (...) ... | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:105:9:106:20 | if (...) ... | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:105:13:105:13 | After access to parameter b [false] | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:105:13:105:13 | After access to parameter b [true] | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:106:13:106:13 | access to local variable x | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:106:13:106:19 | ... += ... | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:106:13:106:19 | After ... += ... | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:106:13:106:19 | Before ... += ... | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:106:13:106:20 | ...; | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:106:13:106:20 | After ...; | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:106:18:106:19 | "" | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:107:9:109:24 | After if (...) ... | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:107:13:107:13 | access to local variable x | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:107:13:107:20 | After access to property Length | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:107:13:107:20 | Before access to property Length | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:107:13:107:20 | access to property Length | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:107:13:107:24 | ... > ... | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:107:13:107:24 | After ... > ... [false] | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:107:13:107:24 | After ... > ... [true] | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:107:13:107:24 | Before ... > ... | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:107:24:107:24 | 0 | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:108:13:109:24 | After if (...) ... | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:108:13:109:24 | if (...) ... | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:108:17:108:18 | [false] !... | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:108:17:108:18 | [true] !... | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:108:17:108:18 | !... | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:108:17:108:18 | After !... [false] | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:108:17:108:18 | After !... [true] | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:108:18:108:18 | After access to parameter b [false] | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:108:18:108:18 | After access to parameter b [true] | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:108:18:108:18 | access to parameter b | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:109:17:109:17 | access to local variable x | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:109:17:109:23 | ... += ... | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:109:17:109:23 | After ... += ... | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:109:17:109:23 | Before ... += ... | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:109:17:109:24 | ...; | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:109:17:109:24 | After ...; | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:109:22:109:23 | "" | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:110:9:110:17 | Before return ...; | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:110:9:110:17 | return ...; | Conditions.cs:102:12:102:13 | M8 | | Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:113:10:113:11 | enter M9 | Conditions.cs:113:10:113:11 | M9 | -| Conditions.cs:113:10:113:11 | exit M9 | Conditions.cs:113:10:113:11 | M9 | -| Conditions.cs:113:10:113:11 | exit M9 (normal) | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:113:10:113:11 | Entry | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:113:10:113:11 | Exit | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:113:10:113:11 | Normal Exit | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:113:22:113:25 | args | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:114:5:124:5 | After {...} | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:114:5:124:5 | {...} | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:115:9:115:24 | ... ...; | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:115:9:115:24 | After ... ...; | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:115:16:115:16 | access to local variable s | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:115:16:115:23 | After String s = ... | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:115:16:115:23 | Before String s = ... | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:115:16:115:23 | String s = ... | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:115:20:115:23 | null | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:116:9:123:9 | After for (...;...;...) ... | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:116:9:123:9 | [LoopHeader] for (...;...;...) ... | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:116:9:123:9 | for (...;...;...) ... | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:116:18:116:18 | access to local variable i | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:116:18:116:22 | After Int32 i = ... | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:116:18:116:22 | Before Int32 i = ... | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:116:18:116:22 | Int32 i = ... | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:116:22:116:22 | 0 | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:116:25:116:39 | ... < ... | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:116:25:116:39 | After ... < ... [false] | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:116:25:116:39 | After ... < ... [true] | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:116:25:116:39 | Before ... < ... | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:116:29:116:32 | access to parameter args | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:116:29:116:39 | After access to property Length | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:116:29:116:39 | Before access to property Length | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:116:29:116:39 | access to property Length | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:116:42:116:42 | access to local variable i | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:116:42:116:44 | ...++ | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:116:42:116:44 | After ...++ | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:116:42:116:44 | Before ...++ | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:117:9:123:9 | After {...} | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:117:9:123:9 | {...} | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:118:13:118:44 | ... ...; | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:118:13:118:44 | After ... ...; | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:118:17:118:20 | access to local variable last | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:118:17:118:43 | After Boolean last = ... | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:118:17:118:43 | Before Boolean last = ... | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:118:17:118:43 | Boolean last = ... | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:118:24:118:24 | access to local variable i | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:118:24:118:43 | ... == ... | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:118:24:118:43 | After ... == ... | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:118:24:118:43 | Before ... == ... | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:118:29:118:32 | access to parameter args | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:118:29:118:39 | After access to property Length | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:118:29:118:39 | Before access to property Length | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:118:29:118:39 | access to property Length | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:118:29:118:43 | ... - ... | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:118:29:118:43 | After ... - ... | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:118:29:118:43 | Before ... - ... | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:118:43:118:43 | 1 | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:119:13:120:23 | After if (...) ... | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:119:13:120:23 | if (...) ... | Conditions.cs:113:10:113:11 | M9 | -| Conditions.cs:119:17:119:21 | [false] !... | Conditions.cs:113:10:113:11 | M9 | -| Conditions.cs:119:17:119:21 | [true] !... | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:119:17:119:21 | !... | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:119:17:119:21 | After !... [false] | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:119:17:119:21 | After !... [true] | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:119:18:119:21 | After access to local variable last [false] | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:119:18:119:21 | After access to local variable last [true] | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:119:18:119:21 | access to local variable last | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:120:17:120:17 | access to local variable s | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:120:17:120:22 | ... = ... | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:120:17:120:22 | After ... = ... | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:120:17:120:22 | Before ... = ... | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:120:17:120:23 | ...; | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:120:17:120:23 | After ...; | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:120:21:120:22 | "" | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:121:13:122:25 | After if (...) ... | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:121:13:122:25 | if (...) ... | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:121:17:121:20 | After access to local variable last [false] | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:121:17:121:20 | After access to local variable last [true] | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:121:17:121:20 | access to local variable last | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:122:17:122:17 | access to local variable s | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:122:17:122:24 | ... = ... | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:122:17:122:24 | After ... = ... | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:122:17:122:24 | Before ... = ... | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:122:17:122:25 | ...; | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:122:17:122:25 | After ...; | Conditions.cs:113:10:113:11 | M9 | | Conditions.cs:122:21:122:24 | null | Conditions.cs:113:10:113:11 | M9 | -| Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:129:10:129:12 | Entry | Conditions.cs:129:10:129:12 | M10 | | Conditions.cs:130:5:141:5 | {...} | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:131:9:140:9 | [LoopHeader] while (...) ... | Conditions.cs:129:10:129:12 | M10 | | Conditions.cs:131:9:140:9 | while (...) ... | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:131:16:131:19 | After true [true] | Conditions.cs:129:10:129:12 | M10 | | Conditions.cs:131:16:131:19 | true | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:132:9:140:9 | After {...} | Conditions.cs:129:10:129:12 | M10 | | Conditions.cs:132:9:140:9 | {...} | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:133:13:139:13 | After if (...) ... | Conditions.cs:129:10:129:12 | M10 | | Conditions.cs:133:13:139:13 | if (...) ... | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:133:17:133:22 | After access to field Field1 [false] | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:133:17:133:22 | After access to field Field1 [true] | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:133:17:133:22 | Before access to field Field1 | Conditions.cs:129:10:129:12 | M10 | | Conditions.cs:133:17:133:22 | access to field Field1 | Conditions.cs:129:10:129:12 | M10 | | Conditions.cs:133:17:133:22 | this access | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:134:13:139:13 | After {...} | Conditions.cs:129:10:129:12 | M10 | | Conditions.cs:134:13:139:13 | {...} | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:135:17:138:17 | After if (...) ... | Conditions.cs:129:10:129:12 | M10 | | Conditions.cs:135:17:138:17 | if (...) ... | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:135:21:135:26 | After access to field Field2 [false] | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:135:21:135:26 | After access to field Field2 [true] | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:135:21:135:26 | Before access to field Field2 | Conditions.cs:129:10:129:12 | M10 | | Conditions.cs:135:21:135:26 | access to field Field2 | Conditions.cs:129:10:129:12 | M10 | | Conditions.cs:135:21:135:26 | this access | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:136:17:138:17 | After {...} | Conditions.cs:129:10:129:12 | M10 | | Conditions.cs:136:17:138:17 | {...} | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:137:21:137:26 | After access to field Field1 | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:137:21:137:26 | Before access to field Field1 | Conditions.cs:129:10:129:12 | M10 | | Conditions.cs:137:21:137:26 | access to field Field1 | Conditions.cs:129:10:129:12 | M10 | | Conditions.cs:137:21:137:26 | this access | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:137:21:137:37 | After call to method ToString | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:137:21:137:37 | Before call to method ToString | Conditions.cs:129:10:129:12 | M10 | | Conditions.cs:137:21:137:37 | call to method ToString | Conditions.cs:129:10:129:12 | M10 | | Conditions.cs:137:21:137:38 | ...; | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:143:10:143:12 | M11 | -| Conditions.cs:143:10:143:12 | exit M11 | Conditions.cs:143:10:143:12 | M11 | -| Conditions.cs:143:10:143:12 | exit M11 (normal) | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:137:21:137:38 | After ...; | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:143:10:143:12 | Entry | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:143:10:143:12 | Exit | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:143:10:143:12 | Normal Exit | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:143:19:143:19 | b | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:144:5:150:5 | After {...} | Conditions.cs:143:10:143:12 | M11 | | Conditions.cs:144:5:150:5 | {...} | Conditions.cs:143:10:143:12 | M11 | | Conditions.cs:145:9:145:30 | ... ...; | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:145:9:145:30 | After ... ...; | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:145:13:145:13 | access to local variable s | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:145:13:145:29 | After String s = ... | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:145:13:145:29 | Before String s = ... | Conditions.cs:143:10:143:12 | M11 | | Conditions.cs:145:13:145:29 | String s = ... | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:145:17:145:17 | After access to parameter b [false] | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:145:17:145:17 | After access to parameter b [true] | Conditions.cs:143:10:143:12 | M11 | | Conditions.cs:145:17:145:17 | access to parameter b | Conditions.cs:143:10:143:12 | M11 | | Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:145:17:145:29 | After ... ? ... : ... | Conditions.cs:143:10:143:12 | M11 | | Conditions.cs:145:21:145:23 | "a" | Conditions.cs:143:10:143:12 | M11 | | Conditions.cs:145:27:145:29 | "b" | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:146:9:149:49 | After if (...) ... | Conditions.cs:143:10:143:12 | M11 | | Conditions.cs:146:9:149:49 | if (...) ... | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:146:13:146:13 | After access to parameter b [false] | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:146:13:146:13 | After access to parameter b [true] | Conditions.cs:143:10:143:12 | M11 | | Conditions.cs:146:13:146:13 | access to parameter b | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:147:13:147:48 | After call to method WriteLine | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:147:13:147:48 | Before call to method WriteLine | Conditions.cs:143:10:143:12 | M11 | | Conditions.cs:147:13:147:48 | call to method WriteLine | Conditions.cs:143:10:143:12 | M11 | | Conditions.cs:147:13:147:49 | ...; | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:147:13:147:49 | After ...; | Conditions.cs:143:10:143:12 | M11 | | Conditions.cs:147:38:147:47 | $"..." | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:147:38:147:47 | After $"..." | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:147:38:147:47 | Before $"..." | Conditions.cs:143:10:143:12 | M11 | | Conditions.cs:147:40:147:43 | "a = " | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:147:44:147:46 | After {...} | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:147:44:147:46 | Before {...} | Conditions.cs:143:10:143:12 | M11 | | Conditions.cs:147:44:147:46 | {...} | Conditions.cs:143:10:143:12 | M11 | | Conditions.cs:147:45:147:45 | access to local variable s | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:149:13:149:48 | After call to method WriteLine | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:149:13:149:48 | Before call to method WriteLine | Conditions.cs:143:10:143:12 | M11 | | Conditions.cs:149:13:149:48 | call to method WriteLine | Conditions.cs:143:10:143:12 | M11 | | Conditions.cs:149:13:149:49 | ...; | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:149:13:149:49 | After ...; | Conditions.cs:143:10:143:12 | M11 | | Conditions.cs:149:38:149:47 | $"..." | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:149:38:149:47 | After $"..." | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:149:38:149:47 | Before $"..." | Conditions.cs:143:10:143:12 | M11 | | Conditions.cs:149:40:149:43 | "b = " | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:149:44:149:46 | After {...} | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:149:44:149:46 | Before {...} | Conditions.cs:143:10:143:12 | M11 | | Conditions.cs:149:44:149:46 | {...} | Conditions.cs:143:10:143:12 | M11 | | Conditions.cs:149:45:149:45 | access to local variable s | Conditions.cs:143:10:143:12 | M11 | +| DefaultParam.cs:1:7:1:18 | After call to constructor Object | DefaultParam.cs:1:7:1:18 | DefaultParam | +| DefaultParam.cs:1:7:1:18 | After call to method | DefaultParam.cs:1:7:1:18 | DefaultParam | +| DefaultParam.cs:1:7:1:18 | Before call to constructor Object | DefaultParam.cs:1:7:1:18 | DefaultParam | +| DefaultParam.cs:1:7:1:18 | Before call to method | DefaultParam.cs:1:7:1:18 | DefaultParam | +| DefaultParam.cs:1:7:1:18 | Entry | DefaultParam.cs:1:7:1:18 | DefaultParam | +| DefaultParam.cs:1:7:1:18 | Exit | DefaultParam.cs:1:7:1:18 | DefaultParam | +| DefaultParam.cs:1:7:1:18 | Normal Exit | DefaultParam.cs:1:7:1:18 | DefaultParam | +| DefaultParam.cs:1:7:1:18 | call to constructor Object | DefaultParam.cs:1:7:1:18 | DefaultParam | +| DefaultParam.cs:1:7:1:18 | call to method | DefaultParam.cs:1:7:1:18 | DefaultParam | +| DefaultParam.cs:1:7:1:18 | this access | DefaultParam.cs:1:7:1:18 | DefaultParam | +| DefaultParam.cs:1:7:1:18 | {...} | DefaultParam.cs:1:7:1:18 | DefaultParam | +| DefaultParam.cs:3:12:3:13 | Entry | DefaultParam.cs:3:12:3:13 | M1 | +| DefaultParam.cs:3:12:3:13 | Exit | DefaultParam.cs:3:12:3:13 | M1 | +| DefaultParam.cs:3:12:3:13 | Normal Exit | DefaultParam.cs:3:12:3:13 | M1 | +| DefaultParam.cs:3:20:3:20 | b | DefaultParam.cs:3:12:3:13 | M1 | +| DefaultParam.cs:3:30:3:30 | After s [match] | DefaultParam.cs:3:12:3:13 | M1 | +| DefaultParam.cs:3:30:3:30 | After s [no-match] | DefaultParam.cs:3:12:3:13 | M1 | +| DefaultParam.cs:3:30:3:30 | s | DefaultParam.cs:3:12:3:13 | M1 | +| DefaultParam.cs:3:34:3:35 | "" | DefaultParam.cs:3:12:3:13 | M1 | +| DefaultParam.cs:3:42:3:42 | After i [match] | DefaultParam.cs:3:12:3:13 | M1 | +| DefaultParam.cs:3:42:3:42 | After i [no-match] | DefaultParam.cs:3:12:3:13 | M1 | +| DefaultParam.cs:3:42:3:42 | i | DefaultParam.cs:3:12:3:13 | M1 | +| DefaultParam.cs:3:46:3:46 | 0 | DefaultParam.cs:3:12:3:13 | M1 | +| DefaultParam.cs:4:5:6:5 | {...} | DefaultParam.cs:3:12:3:13 | M1 | +| DefaultParam.cs:5:9:5:25 | Before return ...; | DefaultParam.cs:3:12:3:13 | M1 | +| DefaultParam.cs:5:9:5:25 | return ...; | DefaultParam.cs:3:12:3:13 | M1 | +| DefaultParam.cs:5:16:5:16 | (...) ... | DefaultParam.cs:3:12:3:13 | M1 | +| DefaultParam.cs:5:16:5:16 | After (...) ... | DefaultParam.cs:3:12:3:13 | M1 | +| DefaultParam.cs:5:16:5:16 | Before (...) ... | DefaultParam.cs:3:12:3:13 | M1 | +| DefaultParam.cs:5:16:5:16 | access to parameter b | DefaultParam.cs:3:12:3:13 | M1 | +| DefaultParam.cs:5:16:5:20 | ... + ... | DefaultParam.cs:3:12:3:13 | M1 | +| DefaultParam.cs:5:16:5:20 | After ... + ... | DefaultParam.cs:3:12:3:13 | M1 | +| DefaultParam.cs:5:16:5:20 | Before ... + ... | DefaultParam.cs:3:12:3:13 | M1 | +| DefaultParam.cs:5:16:5:24 | ... + ... | DefaultParam.cs:3:12:3:13 | M1 | +| DefaultParam.cs:5:16:5:24 | After ... + ... | DefaultParam.cs:3:12:3:13 | M1 | +| DefaultParam.cs:5:16:5:24 | Before ... + ... | DefaultParam.cs:3:12:3:13 | M1 | +| DefaultParam.cs:5:20:5:20 | access to parameter s | DefaultParam.cs:3:12:3:13 | M1 | +| DefaultParam.cs:5:24:5:24 | (...) ... | DefaultParam.cs:3:12:3:13 | M1 | +| DefaultParam.cs:5:24:5:24 | After (...) ... | DefaultParam.cs:3:12:3:13 | M1 | +| DefaultParam.cs:5:24:5:24 | Before (...) ... | DefaultParam.cs:3:12:3:13 | M1 | +| DefaultParam.cs:5:24:5:24 | access to parameter i | DefaultParam.cs:3:12:3:13 | M1 | +| ExitMethods.cs:6:7:6:17 | After call to constructor Object | ExitMethods.cs:6:7:6:17 | ExitMethods | +| ExitMethods.cs:6:7:6:17 | After call to method | ExitMethods.cs:6:7:6:17 | ExitMethods | +| ExitMethods.cs:6:7:6:17 | Before call to constructor Object | ExitMethods.cs:6:7:6:17 | ExitMethods | +| ExitMethods.cs:6:7:6:17 | Before call to method | ExitMethods.cs:6:7:6:17 | ExitMethods | +| ExitMethods.cs:6:7:6:17 | Entry | ExitMethods.cs:6:7:6:17 | ExitMethods | +| ExitMethods.cs:6:7:6:17 | Exit | ExitMethods.cs:6:7:6:17 | ExitMethods | +| ExitMethods.cs:6:7:6:17 | Normal Exit | ExitMethods.cs:6:7:6:17 | ExitMethods | | ExitMethods.cs:6:7:6:17 | call to constructor Object | ExitMethods.cs:6:7:6:17 | ExitMethods | | ExitMethods.cs:6:7:6:17 | call to method | ExitMethods.cs:6:7:6:17 | ExitMethods | -| ExitMethods.cs:6:7:6:17 | enter ExitMethods | ExitMethods.cs:6:7:6:17 | ExitMethods | -| ExitMethods.cs:6:7:6:17 | exit ExitMethods | ExitMethods.cs:6:7:6:17 | ExitMethods | -| ExitMethods.cs:6:7:6:17 | exit ExitMethods (normal) | ExitMethods.cs:6:7:6:17 | ExitMethods | | ExitMethods.cs:6:7:6:17 | this access | ExitMethods.cs:6:7:6:17 | ExitMethods | | ExitMethods.cs:6:7:6:17 | {...} | ExitMethods.cs:6:7:6:17 | ExitMethods | -| ExitMethods.cs:8:10:8:11 | enter M1 | ExitMethods.cs:8:10:8:11 | M1 | -| ExitMethods.cs:8:10:8:11 | exit M1 | ExitMethods.cs:8:10:8:11 | M1 | -| ExitMethods.cs:8:10:8:11 | exit M1 (normal) | ExitMethods.cs:8:10:8:11 | M1 | +| ExitMethods.cs:8:10:8:11 | Entry | ExitMethods.cs:8:10:8:11 | M1 | +| ExitMethods.cs:8:10:8:11 | Exit | ExitMethods.cs:8:10:8:11 | M1 | +| ExitMethods.cs:8:10:8:11 | Normal Exit | ExitMethods.cs:8:10:8:11 | M1 | | ExitMethods.cs:9:5:12:5 | {...} | ExitMethods.cs:8:10:8:11 | M1 | +| ExitMethods.cs:10:9:10:24 | After call to method ErrorMaybe | ExitMethods.cs:8:10:8:11 | M1 | +| ExitMethods.cs:10:9:10:24 | Before call to method ErrorMaybe | ExitMethods.cs:8:10:8:11 | M1 | | ExitMethods.cs:10:9:10:24 | call to method ErrorMaybe | ExitMethods.cs:8:10:8:11 | M1 | | ExitMethods.cs:10:9:10:25 | ...; | ExitMethods.cs:8:10:8:11 | M1 | +| ExitMethods.cs:10:9:10:25 | After ...; | ExitMethods.cs:8:10:8:11 | M1 | | ExitMethods.cs:10:20:10:23 | true | ExitMethods.cs:8:10:8:11 | M1 | +| ExitMethods.cs:11:9:11:15 | Before return ...; | ExitMethods.cs:8:10:8:11 | M1 | | ExitMethods.cs:11:9:11:15 | return ...; | ExitMethods.cs:8:10:8:11 | M1 | -| ExitMethods.cs:14:10:14:11 | enter M2 | ExitMethods.cs:14:10:14:11 | M2 | -| ExitMethods.cs:14:10:14:11 | exit M2 | ExitMethods.cs:14:10:14:11 | M2 | -| ExitMethods.cs:14:10:14:11 | exit M2 (normal) | ExitMethods.cs:14:10:14:11 | M2 | +| ExitMethods.cs:14:10:14:11 | Entry | ExitMethods.cs:14:10:14:11 | M2 | +| ExitMethods.cs:14:10:14:11 | Exit | ExitMethods.cs:14:10:14:11 | M2 | +| ExitMethods.cs:14:10:14:11 | Normal Exit | ExitMethods.cs:14:10:14:11 | M2 | | ExitMethods.cs:15:5:18:5 | {...} | ExitMethods.cs:14:10:14:11 | M2 | +| ExitMethods.cs:16:9:16:25 | After call to method ErrorMaybe | ExitMethods.cs:14:10:14:11 | M2 | +| ExitMethods.cs:16:9:16:25 | Before call to method ErrorMaybe | ExitMethods.cs:14:10:14:11 | M2 | | ExitMethods.cs:16:9:16:25 | call to method ErrorMaybe | ExitMethods.cs:14:10:14:11 | M2 | | ExitMethods.cs:16:9:16:26 | ...; | ExitMethods.cs:14:10:14:11 | M2 | +| ExitMethods.cs:16:9:16:26 | After ...; | ExitMethods.cs:14:10:14:11 | M2 | | ExitMethods.cs:16:20:16:24 | false | ExitMethods.cs:14:10:14:11 | M2 | +| ExitMethods.cs:17:9:17:15 | Before return ...; | ExitMethods.cs:14:10:14:11 | M2 | | ExitMethods.cs:17:9:17:15 | return ...; | ExitMethods.cs:14:10:14:11 | M2 | -| ExitMethods.cs:20:10:20:11 | enter M3 | ExitMethods.cs:20:10:20:11 | M3 | -| ExitMethods.cs:20:10:20:11 | exit M3 | ExitMethods.cs:20:10:20:11 | M3 | -| ExitMethods.cs:20:10:20:11 | exit M3 (abnormal) | ExitMethods.cs:20:10:20:11 | M3 | +| ExitMethods.cs:20:10:20:11 | Entry | ExitMethods.cs:20:10:20:11 | M3 | +| ExitMethods.cs:20:10:20:11 | Exceptional Exit | ExitMethods.cs:20:10:20:11 | M3 | +| ExitMethods.cs:20:10:20:11 | Exit | ExitMethods.cs:20:10:20:11 | M3 | | ExitMethods.cs:21:5:24:5 | {...} | ExitMethods.cs:20:10:20:11 | M3 | +| ExitMethods.cs:22:9:22:25 | Before call to method ErrorAlways | ExitMethods.cs:20:10:20:11 | M3 | | ExitMethods.cs:22:9:22:25 | call to method ErrorAlways | ExitMethods.cs:20:10:20:11 | M3 | | ExitMethods.cs:22:9:22:26 | ...; | ExitMethods.cs:20:10:20:11 | M3 | | ExitMethods.cs:22:21:22:24 | true | ExitMethods.cs:20:10:20:11 | M3 | -| ExitMethods.cs:26:10:26:11 | enter M4 | ExitMethods.cs:26:10:26:11 | M4 | -| ExitMethods.cs:26:10:26:11 | exit M4 | ExitMethods.cs:26:10:26:11 | M4 | -| ExitMethods.cs:26:10:26:11 | exit M4 (abnormal) | ExitMethods.cs:26:10:26:11 | M4 | +| ExitMethods.cs:26:10:26:11 | Entry | ExitMethods.cs:26:10:26:11 | M4 | +| ExitMethods.cs:26:10:26:11 | Exceptional Exit | ExitMethods.cs:26:10:26:11 | M4 | +| ExitMethods.cs:26:10:26:11 | Exit | ExitMethods.cs:26:10:26:11 | M4 | | ExitMethods.cs:27:5:30:5 | {...} | ExitMethods.cs:26:10:26:11 | M4 | +| ExitMethods.cs:28:9:28:14 | Before call to method Exit | ExitMethods.cs:26:10:26:11 | M4 | | ExitMethods.cs:28:9:28:14 | call to method Exit | ExitMethods.cs:26:10:26:11 | M4 | | ExitMethods.cs:28:9:28:14 | this access | ExitMethods.cs:26:10:26:11 | M4 | | ExitMethods.cs:28:9:28:15 | ...; | ExitMethods.cs:26:10:26:11 | M4 | -| ExitMethods.cs:32:10:32:11 | enter M5 | ExitMethods.cs:32:10:32:11 | M5 | -| ExitMethods.cs:32:10:32:11 | exit M5 | ExitMethods.cs:32:10:32:11 | M5 | -| ExitMethods.cs:32:10:32:11 | exit M5 (abnormal) | ExitMethods.cs:32:10:32:11 | M5 | +| ExitMethods.cs:32:10:32:11 | Entry | ExitMethods.cs:32:10:32:11 | M5 | +| ExitMethods.cs:32:10:32:11 | Exceptional Exit | ExitMethods.cs:32:10:32:11 | M5 | +| ExitMethods.cs:32:10:32:11 | Exit | ExitMethods.cs:32:10:32:11 | M5 | | ExitMethods.cs:33:5:36:5 | {...} | ExitMethods.cs:32:10:32:11 | M5 | +| ExitMethods.cs:34:9:34:25 | Before call to method ApplicationExit | ExitMethods.cs:32:10:32:11 | M5 | | ExitMethods.cs:34:9:34:25 | call to method ApplicationExit | ExitMethods.cs:32:10:32:11 | M5 | | ExitMethods.cs:34:9:34:25 | this access | ExitMethods.cs:32:10:32:11 | M5 | | ExitMethods.cs:34:9:34:26 | ...; | ExitMethods.cs:32:10:32:11 | M5 | -| ExitMethods.cs:38:10:38:11 | enter M6 | ExitMethods.cs:38:10:38:11 | M6 | -| ExitMethods.cs:38:10:38:11 | exit M6 | ExitMethods.cs:38:10:38:11 | M6 | -| ExitMethods.cs:38:10:38:11 | exit M6 (normal) | ExitMethods.cs:38:10:38:11 | M6 | +| ExitMethods.cs:38:10:38:11 | Entry | ExitMethods.cs:38:10:38:11 | M6 | +| ExitMethods.cs:38:10:38:11 | Exceptional Exit | ExitMethods.cs:38:10:38:11 | M6 | +| ExitMethods.cs:38:10:38:11 | Exit | ExitMethods.cs:38:10:38:11 | M6 | +| ExitMethods.cs:38:10:38:11 | Normal Exit | ExitMethods.cs:38:10:38:11 | M6 | | ExitMethods.cs:39:5:52:5 | {...} | ExitMethods.cs:38:10:38:11 | M6 | | ExitMethods.cs:40:9:51:9 | try {...} ... | ExitMethods.cs:38:10:38:11 | M6 | | ExitMethods.cs:41:9:43:9 | {...} | ExitMethods.cs:38:10:38:11 | M6 | +| ExitMethods.cs:42:13:42:30 | Before call to method ErrorAlways | ExitMethods.cs:38:10:38:11 | M6 | | ExitMethods.cs:42:13:42:30 | call to method ErrorAlways | ExitMethods.cs:38:10:38:11 | M6 | | ExitMethods.cs:42:13:42:31 | ...; | ExitMethods.cs:38:10:38:11 | M6 | | ExitMethods.cs:42:25:42:29 | false | ExitMethods.cs:38:10:38:11 | M6 | +| ExitMethods.cs:44:9:47:9 | After catch (...) {...} [match] | ExitMethods.cs:38:10:38:11 | M6 | +| ExitMethods.cs:44:9:47:9 | After catch (...) {...} [no-match] | ExitMethods.cs:38:10:38:11 | M6 | | ExitMethods.cs:44:9:47:9 | catch (...) {...} | ExitMethods.cs:38:10:38:11 | M6 | | ExitMethods.cs:45:9:47:9 | {...} | ExitMethods.cs:38:10:38:11 | M6 | +| ExitMethods.cs:46:13:46:19 | Before return ...; | ExitMethods.cs:38:10:38:11 | M6 | | ExitMethods.cs:46:13:46:19 | return ...; | ExitMethods.cs:38:10:38:11 | M6 | +| ExitMethods.cs:48:9:51:9 | After catch (...) {...} [match] | ExitMethods.cs:38:10:38:11 | M6 | +| ExitMethods.cs:48:9:51:9 | After catch (...) {...} [no-match] | ExitMethods.cs:38:10:38:11 | M6 | | ExitMethods.cs:48:9:51:9 | catch (...) {...} | ExitMethods.cs:38:10:38:11 | M6 | | ExitMethods.cs:49:9:51:9 | {...} | ExitMethods.cs:38:10:38:11 | M6 | +| ExitMethods.cs:50:13:50:19 | Before return ...; | ExitMethods.cs:38:10:38:11 | M6 | | ExitMethods.cs:50:13:50:19 | return ...; | ExitMethods.cs:38:10:38:11 | M6 | -| ExitMethods.cs:54:10:54:11 | enter M7 | ExitMethods.cs:54:10:54:11 | M7 | -| ExitMethods.cs:54:10:54:11 | exit M7 | ExitMethods.cs:54:10:54:11 | M7 | -| ExitMethods.cs:54:10:54:11 | exit M7 (abnormal) | ExitMethods.cs:54:10:54:11 | M7 | +| ExitMethods.cs:54:10:54:11 | Entry | ExitMethods.cs:54:10:54:11 | M7 | +| ExitMethods.cs:54:10:54:11 | Exceptional Exit | ExitMethods.cs:54:10:54:11 | M7 | +| ExitMethods.cs:54:10:54:11 | Exit | ExitMethods.cs:54:10:54:11 | M7 | | ExitMethods.cs:55:5:58:5 | {...} | ExitMethods.cs:54:10:54:11 | M7 | +| ExitMethods.cs:56:9:56:22 | Before call to method ErrorAlways2 | ExitMethods.cs:54:10:54:11 | M7 | | ExitMethods.cs:56:9:56:22 | call to method ErrorAlways2 | ExitMethods.cs:54:10:54:11 | M7 | | ExitMethods.cs:56:9:56:23 | ...; | ExitMethods.cs:54:10:54:11 | M7 | -| ExitMethods.cs:60:10:60:11 | enter M8 | ExitMethods.cs:60:10:60:11 | M8 | -| ExitMethods.cs:60:10:60:11 | exit M8 | ExitMethods.cs:60:10:60:11 | M8 | -| ExitMethods.cs:60:10:60:11 | exit M8 (abnormal) | ExitMethods.cs:60:10:60:11 | M8 | +| ExitMethods.cs:60:10:60:11 | Entry | ExitMethods.cs:60:10:60:11 | M8 | +| ExitMethods.cs:60:10:60:11 | Exceptional Exit | ExitMethods.cs:60:10:60:11 | M8 | +| ExitMethods.cs:60:10:60:11 | Exit | ExitMethods.cs:60:10:60:11 | M8 | | ExitMethods.cs:61:5:64:5 | {...} | ExitMethods.cs:60:10:60:11 | M8 | +| ExitMethods.cs:62:9:62:22 | Before call to method ErrorAlways3 | ExitMethods.cs:60:10:60:11 | M8 | | ExitMethods.cs:62:9:62:22 | call to method ErrorAlways3 | ExitMethods.cs:60:10:60:11 | M8 | | ExitMethods.cs:62:9:62:23 | ...; | ExitMethods.cs:60:10:60:11 | M8 | -| ExitMethods.cs:66:17:66:26 | enter ErrorMaybe | ExitMethods.cs:66:17:66:26 | ErrorMaybe | -| ExitMethods.cs:66:17:66:26 | exit ErrorMaybe | ExitMethods.cs:66:17:66:26 | ErrorMaybe | -| ExitMethods.cs:66:17:66:26 | exit ErrorMaybe (abnormal) | ExitMethods.cs:66:17:66:26 | ErrorMaybe | -| ExitMethods.cs:66:17:66:26 | exit ErrorMaybe (normal) | ExitMethods.cs:66:17:66:26 | ErrorMaybe | +| ExitMethods.cs:66:17:66:26 | Entry | ExitMethods.cs:66:17:66:26 | ErrorMaybe | +| ExitMethods.cs:66:17:66:26 | Exceptional Exit | ExitMethods.cs:66:17:66:26 | ErrorMaybe | +| ExitMethods.cs:66:17:66:26 | Exit | ExitMethods.cs:66:17:66:26 | ErrorMaybe | +| ExitMethods.cs:66:17:66:26 | Normal Exit | ExitMethods.cs:66:17:66:26 | ErrorMaybe | +| ExitMethods.cs:66:33:66:33 | b | ExitMethods.cs:66:17:66:26 | ErrorMaybe | +| ExitMethods.cs:67:5:70:5 | After {...} | ExitMethods.cs:66:17:66:26 | ErrorMaybe | | ExitMethods.cs:67:5:70:5 | {...} | ExitMethods.cs:66:17:66:26 | ErrorMaybe | +| ExitMethods.cs:68:9:69:34 | After if (...) ... | ExitMethods.cs:66:17:66:26 | ErrorMaybe | | ExitMethods.cs:68:9:69:34 | if (...) ... | ExitMethods.cs:66:17:66:26 | ErrorMaybe | +| ExitMethods.cs:68:13:68:13 | After access to parameter b [false] | ExitMethods.cs:66:17:66:26 | ErrorMaybe | +| ExitMethods.cs:68:13:68:13 | After access to parameter b [true] | ExitMethods.cs:66:17:66:26 | ErrorMaybe | | ExitMethods.cs:68:13:68:13 | access to parameter b | ExitMethods.cs:66:17:66:26 | ErrorMaybe | +| ExitMethods.cs:69:13:69:34 | Before throw ...; | ExitMethods.cs:66:17:66:26 | ErrorMaybe | | ExitMethods.cs:69:13:69:34 | throw ...; | ExitMethods.cs:66:17:66:26 | ErrorMaybe | +| ExitMethods.cs:69:19:69:33 | After object creation of type Exception | ExitMethods.cs:66:17:66:26 | ErrorMaybe | +| ExitMethods.cs:69:19:69:33 | Before object creation of type Exception | ExitMethods.cs:66:17:66:26 | ErrorMaybe | | ExitMethods.cs:69:19:69:33 | object creation of type Exception | ExitMethods.cs:66:17:66:26 | ErrorMaybe | -| ExitMethods.cs:72:17:72:27 | enter ErrorAlways | ExitMethods.cs:72:17:72:27 | ErrorAlways | -| ExitMethods.cs:72:17:72:27 | exit ErrorAlways | ExitMethods.cs:72:17:72:27 | ErrorAlways | -| ExitMethods.cs:72:17:72:27 | exit ErrorAlways (abnormal) | ExitMethods.cs:72:17:72:27 | ErrorAlways | +| ExitMethods.cs:72:17:72:27 | Entry | ExitMethods.cs:72:17:72:27 | ErrorAlways | +| ExitMethods.cs:72:17:72:27 | Exceptional Exit | ExitMethods.cs:72:17:72:27 | ErrorAlways | +| ExitMethods.cs:72:17:72:27 | Exit | ExitMethods.cs:72:17:72:27 | ErrorAlways | +| ExitMethods.cs:72:34:72:34 | b | ExitMethods.cs:72:17:72:27 | ErrorAlways | | ExitMethods.cs:73:5:78:5 | {...} | ExitMethods.cs:72:17:72:27 | ErrorAlways | | ExitMethods.cs:74:9:77:45 | if (...) ... | ExitMethods.cs:72:17:72:27 | ErrorAlways | +| ExitMethods.cs:74:13:74:13 | After access to parameter b [false] | ExitMethods.cs:72:17:72:27 | ErrorAlways | +| ExitMethods.cs:74:13:74:13 | After access to parameter b [true] | ExitMethods.cs:72:17:72:27 | ErrorAlways | | ExitMethods.cs:74:13:74:13 | access to parameter b | ExitMethods.cs:72:17:72:27 | ErrorAlways | +| ExitMethods.cs:75:13:75:34 | Before throw ...; | ExitMethods.cs:72:17:72:27 | ErrorAlways | | ExitMethods.cs:75:13:75:34 | throw ...; | ExitMethods.cs:72:17:72:27 | ErrorAlways | +| ExitMethods.cs:75:19:75:33 | After object creation of type Exception | ExitMethods.cs:72:17:72:27 | ErrorAlways | +| ExitMethods.cs:75:19:75:33 | Before object creation of type Exception | ExitMethods.cs:72:17:72:27 | ErrorAlways | | ExitMethods.cs:75:19:75:33 | object creation of type Exception | ExitMethods.cs:72:17:72:27 | ErrorAlways | +| ExitMethods.cs:77:13:77:45 | Before throw ...; | ExitMethods.cs:72:17:72:27 | ErrorAlways | | ExitMethods.cs:77:13:77:45 | throw ...; | ExitMethods.cs:72:17:72:27 | ErrorAlways | +| ExitMethods.cs:77:19:77:44 | After object creation of type ArgumentException | ExitMethods.cs:72:17:72:27 | ErrorAlways | +| ExitMethods.cs:77:19:77:44 | Before object creation of type ArgumentException | ExitMethods.cs:72:17:72:27 | ErrorAlways | | ExitMethods.cs:77:19:77:44 | object creation of type ArgumentException | ExitMethods.cs:72:17:72:27 | ErrorAlways | | ExitMethods.cs:77:41:77:43 | "b" | ExitMethods.cs:72:17:72:27 | ErrorAlways | -| ExitMethods.cs:80:17:80:28 | enter ErrorAlways2 | ExitMethods.cs:80:17:80:28 | ErrorAlways2 | -| ExitMethods.cs:80:17:80:28 | exit ErrorAlways2 | ExitMethods.cs:80:17:80:28 | ErrorAlways2 | -| ExitMethods.cs:80:17:80:28 | exit ErrorAlways2 (abnormal) | ExitMethods.cs:80:17:80:28 | ErrorAlways2 | +| ExitMethods.cs:80:17:80:28 | Entry | ExitMethods.cs:80:17:80:28 | ErrorAlways2 | +| ExitMethods.cs:80:17:80:28 | Exceptional Exit | ExitMethods.cs:80:17:80:28 | ErrorAlways2 | +| ExitMethods.cs:80:17:80:28 | Exit | ExitMethods.cs:80:17:80:28 | ErrorAlways2 | | ExitMethods.cs:81:5:83:5 | {...} | ExitMethods.cs:80:17:80:28 | ErrorAlways2 | +| ExitMethods.cs:82:9:82:30 | Before throw ...; | ExitMethods.cs:80:17:80:28 | ErrorAlways2 | | ExitMethods.cs:82:9:82:30 | throw ...; | ExitMethods.cs:80:17:80:28 | ErrorAlways2 | +| ExitMethods.cs:82:15:82:29 | After object creation of type Exception | ExitMethods.cs:80:17:80:28 | ErrorAlways2 | +| ExitMethods.cs:82:15:82:29 | Before object creation of type Exception | ExitMethods.cs:80:17:80:28 | ErrorAlways2 | | ExitMethods.cs:82:15:82:29 | object creation of type Exception | ExitMethods.cs:80:17:80:28 | ErrorAlways2 | -| ExitMethods.cs:85:17:85:28 | enter ErrorAlways3 | ExitMethods.cs:85:17:85:28 | ErrorAlways3 | -| ExitMethods.cs:85:17:85:28 | exit ErrorAlways3 | ExitMethods.cs:85:17:85:28 | ErrorAlways3 | -| ExitMethods.cs:85:17:85:28 | exit ErrorAlways3 (abnormal) | ExitMethods.cs:85:17:85:28 | ErrorAlways3 | +| ExitMethods.cs:85:17:85:28 | Entry | ExitMethods.cs:85:17:85:28 | ErrorAlways3 | +| ExitMethods.cs:85:17:85:28 | Exceptional Exit | ExitMethods.cs:85:17:85:28 | ErrorAlways3 | +| ExitMethods.cs:85:17:85:28 | Exit | ExitMethods.cs:85:17:85:28 | ErrorAlways3 | +| ExitMethods.cs:85:35:85:55 | Before throw ... | ExitMethods.cs:85:17:85:28 | ErrorAlways3 | | ExitMethods.cs:85:35:85:55 | throw ... | ExitMethods.cs:85:17:85:28 | ErrorAlways3 | +| ExitMethods.cs:85:41:85:55 | After object creation of type Exception | ExitMethods.cs:85:17:85:28 | ErrorAlways3 | +| ExitMethods.cs:85:41:85:55 | Before object creation of type Exception | ExitMethods.cs:85:17:85:28 | ErrorAlways3 | | ExitMethods.cs:85:41:85:55 | object creation of type Exception | ExitMethods.cs:85:17:85:28 | ErrorAlways3 | -| ExitMethods.cs:87:10:87:13 | enter Exit | ExitMethods.cs:87:10:87:13 | Exit | -| ExitMethods.cs:87:10:87:13 | exit Exit | ExitMethods.cs:87:10:87:13 | Exit | -| ExitMethods.cs:87:10:87:13 | exit Exit (abnormal) | ExitMethods.cs:87:10:87:13 | Exit | +| ExitMethods.cs:87:10:87:13 | Entry | ExitMethods.cs:87:10:87:13 | Exit | +| ExitMethods.cs:87:10:87:13 | Exceptional Exit | ExitMethods.cs:87:10:87:13 | Exit | +| ExitMethods.cs:87:10:87:13 | Exit | ExitMethods.cs:87:10:87:13 | Exit | | ExitMethods.cs:88:5:90:5 | {...} | ExitMethods.cs:87:10:87:13 | Exit | +| ExitMethods.cs:89:9:89:27 | Before call to method Exit | ExitMethods.cs:87:10:87:13 | Exit | | ExitMethods.cs:89:9:89:27 | call to method Exit | ExitMethods.cs:87:10:87:13 | Exit | | ExitMethods.cs:89:9:89:28 | ...; | ExitMethods.cs:87:10:87:13 | Exit | | ExitMethods.cs:89:26:89:26 | 0 | ExitMethods.cs:87:10:87:13 | Exit | -| ExitMethods.cs:92:10:92:18 | enter ExitInTry | ExitMethods.cs:92:10:92:18 | ExitInTry | -| ExitMethods.cs:92:10:92:18 | exit ExitInTry | ExitMethods.cs:92:10:92:18 | ExitInTry | -| ExitMethods.cs:92:10:92:18 | exit ExitInTry (abnormal) | ExitMethods.cs:92:10:92:18 | ExitInTry | +| ExitMethods.cs:92:10:92:18 | Entry | ExitMethods.cs:92:10:92:18 | ExitInTry | +| ExitMethods.cs:92:10:92:18 | Exceptional Exit | ExitMethods.cs:92:10:92:18 | ExitInTry | +| ExitMethods.cs:92:10:92:18 | Exit | ExitMethods.cs:92:10:92:18 | ExitInTry | +| ExitMethods.cs:92:10:92:18 | Normal Exit | ExitMethods.cs:92:10:92:18 | ExitInTry | +| ExitMethods.cs:93:5:103:5 | After {...} | ExitMethods.cs:92:10:92:18 | ExitInTry | | ExitMethods.cs:93:5:103:5 | {...} | ExitMethods.cs:92:10:92:18 | ExitInTry | +| ExitMethods.cs:94:9:102:9 | After try {...} ... | ExitMethods.cs:92:10:92:18 | ExitInTry | | ExitMethods.cs:94:9:102:9 | try {...} ... | ExitMethods.cs:92:10:92:18 | ExitInTry | | ExitMethods.cs:95:9:97:9 | {...} | ExitMethods.cs:92:10:92:18 | ExitInTry | +| ExitMethods.cs:96:13:96:18 | Before call to method Exit | ExitMethods.cs:92:10:92:18 | ExitInTry | | ExitMethods.cs:96:13:96:18 | call to method Exit | ExitMethods.cs:92:10:92:18 | ExitInTry | | ExitMethods.cs:96:13:96:18 | this access | ExitMethods.cs:92:10:92:18 | ExitInTry | | ExitMethods.cs:96:13:96:19 | ...; | ExitMethods.cs:92:10:92:18 | ExitInTry | -| ExitMethods.cs:105:10:105:24 | enter ApplicationExit | ExitMethods.cs:105:10:105:24 | ApplicationExit | -| ExitMethods.cs:105:10:105:24 | exit ApplicationExit | ExitMethods.cs:105:10:105:24 | ApplicationExit | -| ExitMethods.cs:105:10:105:24 | exit ApplicationExit (abnormal) | ExitMethods.cs:105:10:105:24 | ApplicationExit | +| ExitMethods.cs:99:9:102:9 | After {...} | ExitMethods.cs:92:10:92:18 | ExitInTry | +| ExitMethods.cs:99:9:102:9 | {...} | ExitMethods.cs:92:10:92:18 | ExitInTry | +| ExitMethods.cs:101:13:101:40 | After call to method WriteLine | ExitMethods.cs:92:10:92:18 | ExitInTry | +| ExitMethods.cs:101:13:101:40 | Before call to method WriteLine | ExitMethods.cs:92:10:92:18 | ExitInTry | +| ExitMethods.cs:101:13:101:40 | call to method WriteLine | ExitMethods.cs:92:10:92:18 | ExitInTry | +| ExitMethods.cs:101:13:101:41 | ...; | ExitMethods.cs:92:10:92:18 | ExitInTry | +| ExitMethods.cs:101:13:101:41 | After ...; | ExitMethods.cs:92:10:92:18 | ExitInTry | +| ExitMethods.cs:101:38:101:39 | "" | ExitMethods.cs:92:10:92:18 | ExitInTry | +| ExitMethods.cs:105:10:105:24 | Entry | ExitMethods.cs:105:10:105:24 | ApplicationExit | +| ExitMethods.cs:105:10:105:24 | Exceptional Exit | ExitMethods.cs:105:10:105:24 | ApplicationExit | +| ExitMethods.cs:105:10:105:24 | Exit | ExitMethods.cs:105:10:105:24 | ApplicationExit | | ExitMethods.cs:106:5:108:5 | {...} | ExitMethods.cs:105:10:105:24 | ApplicationExit | +| ExitMethods.cs:107:9:107:47 | Before call to method Exit | ExitMethods.cs:105:10:105:24 | ApplicationExit | | ExitMethods.cs:107:9:107:47 | call to method Exit | ExitMethods.cs:105:10:105:24 | ApplicationExit | | ExitMethods.cs:107:9:107:48 | ...; | ExitMethods.cs:105:10:105:24 | ApplicationExit | -| ExitMethods.cs:110:13:110:21 | enter ThrowExpr | ExitMethods.cs:110:13:110:21 | ThrowExpr | -| ExitMethods.cs:110:13:110:21 | exit ThrowExpr | ExitMethods.cs:110:13:110:21 | ThrowExpr | -| ExitMethods.cs:110:13:110:21 | exit ThrowExpr (abnormal) | ExitMethods.cs:110:13:110:21 | ThrowExpr | -| ExitMethods.cs:110:13:110:21 | exit ThrowExpr (normal) | ExitMethods.cs:110:13:110:21 | ThrowExpr | +| ExitMethods.cs:110:13:110:21 | Entry | ExitMethods.cs:110:13:110:21 | ThrowExpr | +| ExitMethods.cs:110:13:110:21 | Exceptional Exit | ExitMethods.cs:110:13:110:21 | ThrowExpr | +| ExitMethods.cs:110:13:110:21 | Exit | ExitMethods.cs:110:13:110:21 | ThrowExpr | +| ExitMethods.cs:110:13:110:21 | Normal Exit | ExitMethods.cs:110:13:110:21 | ThrowExpr | +| ExitMethods.cs:110:31:110:35 | input | ExitMethods.cs:110:13:110:21 | ThrowExpr | | ExitMethods.cs:111:5:113:5 | {...} | ExitMethods.cs:110:13:110:21 | ThrowExpr | +| ExitMethods.cs:112:9:112:77 | Before return ...; | ExitMethods.cs:110:13:110:21 | ThrowExpr | | ExitMethods.cs:112:9:112:77 | return ...; | ExitMethods.cs:110:13:110:21 | ThrowExpr | | ExitMethods.cs:112:16:112:20 | access to parameter input | ExitMethods.cs:110:13:110:21 | ThrowExpr | | ExitMethods.cs:112:16:112:25 | ... != ... | ExitMethods.cs:110:13:110:21 | ThrowExpr | +| ExitMethods.cs:112:16:112:25 | After ... != ... [false] | ExitMethods.cs:110:13:110:21 | ThrowExpr | +| ExitMethods.cs:112:16:112:25 | After ... != ... [true] | ExitMethods.cs:110:13:110:21 | ThrowExpr | +| ExitMethods.cs:112:16:112:25 | Before ... != ... | ExitMethods.cs:110:13:110:21 | ThrowExpr | | ExitMethods.cs:112:16:112:76 | ... ? ... : ... | ExitMethods.cs:110:13:110:21 | ThrowExpr | +| ExitMethods.cs:112:16:112:76 | After ... ? ... : ... | ExitMethods.cs:110:13:110:21 | ThrowExpr | | ExitMethods.cs:112:25:112:25 | 0 | ExitMethods.cs:110:13:110:21 | ThrowExpr | | ExitMethods.cs:112:25:112:25 | (...) ... | ExitMethods.cs:110:13:110:21 | ThrowExpr | +| ExitMethods.cs:112:25:112:25 | After (...) ... | ExitMethods.cs:110:13:110:21 | ThrowExpr | +| ExitMethods.cs:112:25:112:25 | Before (...) ... | ExitMethods.cs:110:13:110:21 | ThrowExpr | | ExitMethods.cs:112:29:112:29 | 1 | ExitMethods.cs:110:13:110:21 | ThrowExpr | | ExitMethods.cs:112:29:112:29 | (...) ... | ExitMethods.cs:110:13:110:21 | ThrowExpr | +| ExitMethods.cs:112:29:112:29 | After (...) ... | ExitMethods.cs:110:13:110:21 | ThrowExpr | +| ExitMethods.cs:112:29:112:29 | Before (...) ... | ExitMethods.cs:110:13:110:21 | ThrowExpr | | ExitMethods.cs:112:29:112:37 | ... / ... | ExitMethods.cs:110:13:110:21 | ThrowExpr | +| ExitMethods.cs:112:29:112:37 | After ... / ... | ExitMethods.cs:110:13:110:21 | ThrowExpr | +| ExitMethods.cs:112:29:112:37 | Before ... / ... | ExitMethods.cs:110:13:110:21 | ThrowExpr | | ExitMethods.cs:112:33:112:37 | access to parameter input | ExitMethods.cs:110:13:110:21 | ThrowExpr | +| ExitMethods.cs:112:41:112:76 | Before throw ... | ExitMethods.cs:110:13:110:21 | ThrowExpr | | ExitMethods.cs:112:41:112:76 | throw ... | ExitMethods.cs:110:13:110:21 | ThrowExpr | +| ExitMethods.cs:112:47:112:76 | After object creation of type ArgumentException | ExitMethods.cs:110:13:110:21 | ThrowExpr | +| ExitMethods.cs:112:47:112:76 | Before object creation of type ArgumentException | ExitMethods.cs:110:13:110:21 | ThrowExpr | | ExitMethods.cs:112:47:112:76 | object creation of type ArgumentException | ExitMethods.cs:110:13:110:21 | ThrowExpr | | ExitMethods.cs:112:69:112:75 | "input" | ExitMethods.cs:110:13:110:21 | ThrowExpr | -| ExitMethods.cs:115:16:115:34 | enter ExtensionMethodCall | ExitMethods.cs:115:16:115:34 | ExtensionMethodCall | -| ExitMethods.cs:115:16:115:34 | exit ExtensionMethodCall | ExitMethods.cs:115:16:115:34 | ExtensionMethodCall | -| ExitMethods.cs:115:16:115:34 | exit ExtensionMethodCall (normal) | ExitMethods.cs:115:16:115:34 | ExtensionMethodCall | +| ExitMethods.cs:115:16:115:34 | Entry | ExitMethods.cs:115:16:115:34 | ExtensionMethodCall | +| ExitMethods.cs:115:16:115:34 | Exit | ExitMethods.cs:115:16:115:34 | ExtensionMethodCall | +| ExitMethods.cs:115:16:115:34 | Normal Exit | ExitMethods.cs:115:16:115:34 | ExtensionMethodCall | +| ExitMethods.cs:115:43:115:43 | s | ExitMethods.cs:115:16:115:34 | ExtensionMethodCall | | ExitMethods.cs:116:5:118:5 | {...} | ExitMethods.cs:115:16:115:34 | ExtensionMethodCall | +| ExitMethods.cs:117:9:117:39 | Before return ...; | ExitMethods.cs:115:16:115:34 | ExtensionMethodCall | | ExitMethods.cs:117:9:117:39 | return ...; | ExitMethods.cs:115:16:115:34 | ExtensionMethodCall | | ExitMethods.cs:117:16:117:16 | access to parameter s | ExitMethods.cs:115:16:115:34 | ExtensionMethodCall | +| ExitMethods.cs:117:16:117:30 | After call to method Contains [false] | ExitMethods.cs:115:16:115:34 | ExtensionMethodCall | +| ExitMethods.cs:117:16:117:30 | After call to method Contains [true] | ExitMethods.cs:115:16:115:34 | ExtensionMethodCall | +| ExitMethods.cs:117:16:117:30 | Before call to method Contains | ExitMethods.cs:115:16:115:34 | ExtensionMethodCall | | ExitMethods.cs:117:16:117:30 | call to method Contains | ExitMethods.cs:115:16:115:34 | ExtensionMethodCall | | ExitMethods.cs:117:16:117:38 | ... ? ... : ... | ExitMethods.cs:115:16:115:34 | ExtensionMethodCall | +| ExitMethods.cs:117:16:117:38 | After ... ? ... : ... | ExitMethods.cs:115:16:115:34 | ExtensionMethodCall | | ExitMethods.cs:117:27:117:29 | - | ExitMethods.cs:115:16:115:34 | ExtensionMethodCall | | ExitMethods.cs:117:34:117:34 | 0 | ExitMethods.cs:115:16:115:34 | ExtensionMethodCall | | ExitMethods.cs:117:38:117:38 | 1 | ExitMethods.cs:115:16:115:34 | ExtensionMethodCall | -| ExitMethods.cs:120:17:120:32 | enter FailingAssertion | ExitMethods.cs:120:17:120:32 | FailingAssertion | -| ExitMethods.cs:120:17:120:32 | exit FailingAssertion | ExitMethods.cs:120:17:120:32 | FailingAssertion | -| ExitMethods.cs:120:17:120:32 | exit FailingAssertion (abnormal) | ExitMethods.cs:120:17:120:32 | FailingAssertion | +| ExitMethods.cs:120:17:120:32 | Entry | ExitMethods.cs:120:17:120:32 | FailingAssertion | +| ExitMethods.cs:120:17:120:32 | Exceptional Exit | ExitMethods.cs:120:17:120:32 | FailingAssertion | +| ExitMethods.cs:120:17:120:32 | Exit | ExitMethods.cs:120:17:120:32 | FailingAssertion | | ExitMethods.cs:121:5:124:5 | {...} | ExitMethods.cs:120:17:120:32 | FailingAssertion | +| ExitMethods.cs:122:9:122:28 | Before call to method IsTrue | ExitMethods.cs:120:17:120:32 | FailingAssertion | | ExitMethods.cs:122:9:122:28 | call to method IsTrue | ExitMethods.cs:120:17:120:32 | FailingAssertion | | ExitMethods.cs:122:9:122:29 | ...; | ExitMethods.cs:120:17:120:32 | FailingAssertion | | ExitMethods.cs:122:23:122:27 | false | ExitMethods.cs:120:17:120:32 | FailingAssertion | -| ExitMethods.cs:126:17:126:33 | enter FailingAssertion2 | ExitMethods.cs:126:17:126:33 | FailingAssertion2 | -| ExitMethods.cs:126:17:126:33 | exit FailingAssertion2 | ExitMethods.cs:126:17:126:33 | FailingAssertion2 | -| ExitMethods.cs:126:17:126:33 | exit FailingAssertion2 (abnormal) | ExitMethods.cs:126:17:126:33 | FailingAssertion2 | +| ExitMethods.cs:126:17:126:33 | Entry | ExitMethods.cs:126:17:126:33 | FailingAssertion2 | +| ExitMethods.cs:126:17:126:33 | Exceptional Exit | ExitMethods.cs:126:17:126:33 | FailingAssertion2 | +| ExitMethods.cs:126:17:126:33 | Exit | ExitMethods.cs:126:17:126:33 | FailingAssertion2 | | ExitMethods.cs:127:5:130:5 | {...} | ExitMethods.cs:126:17:126:33 | FailingAssertion2 | +| ExitMethods.cs:128:9:128:26 | Before call to method FailingAssertion | ExitMethods.cs:126:17:126:33 | FailingAssertion2 | | ExitMethods.cs:128:9:128:26 | call to method FailingAssertion | ExitMethods.cs:126:17:126:33 | FailingAssertion2 | | ExitMethods.cs:128:9:128:26 | this access | ExitMethods.cs:126:17:126:33 | FailingAssertion2 | | ExitMethods.cs:128:9:128:27 | ...; | ExitMethods.cs:126:17:126:33 | FailingAssertion2 | -| ExitMethods.cs:132:10:132:20 | enter AssertFalse | ExitMethods.cs:132:10:132:20 | AssertFalse | -| ExitMethods.cs:132:10:132:20 | exit AssertFalse | ExitMethods.cs:132:10:132:20 | AssertFalse | -| ExitMethods.cs:132:10:132:20 | exit AssertFalse (abnormal) | ExitMethods.cs:132:10:132:20 | AssertFalse | -| ExitMethods.cs:132:10:132:20 | exit AssertFalse (normal) | ExitMethods.cs:132:10:132:20 | AssertFalse | +| ExitMethods.cs:132:10:132:20 | Entry | ExitMethods.cs:132:10:132:20 | AssertFalse | +| ExitMethods.cs:132:10:132:20 | Exceptional Exit | ExitMethods.cs:132:10:132:20 | AssertFalse | +| ExitMethods.cs:132:10:132:20 | Exit | ExitMethods.cs:132:10:132:20 | AssertFalse | +| ExitMethods.cs:132:10:132:20 | Normal Exit | ExitMethods.cs:132:10:132:20 | AssertFalse | +| ExitMethods.cs:132:27:132:27 | b | ExitMethods.cs:132:10:132:20 | AssertFalse | +| ExitMethods.cs:132:33:132:49 | After call to method IsFalse | ExitMethods.cs:132:10:132:20 | AssertFalse | +| ExitMethods.cs:132:33:132:49 | Before call to method IsFalse | ExitMethods.cs:132:10:132:20 | AssertFalse | | ExitMethods.cs:132:33:132:49 | call to method IsFalse | ExitMethods.cs:132:10:132:20 | AssertFalse | | ExitMethods.cs:132:48:132:48 | access to parameter b | ExitMethods.cs:132:10:132:20 | AssertFalse | -| ExitMethods.cs:134:17:134:33 | enter FailingAssertion3 | ExitMethods.cs:134:17:134:33 | FailingAssertion3 | -| ExitMethods.cs:134:17:134:33 | exit FailingAssertion3 | ExitMethods.cs:134:17:134:33 | FailingAssertion3 | -| ExitMethods.cs:134:17:134:33 | exit FailingAssertion3 (abnormal) | ExitMethods.cs:134:17:134:33 | FailingAssertion3 | +| ExitMethods.cs:134:17:134:33 | Entry | ExitMethods.cs:134:17:134:33 | FailingAssertion3 | +| ExitMethods.cs:134:17:134:33 | Exceptional Exit | ExitMethods.cs:134:17:134:33 | FailingAssertion3 | +| ExitMethods.cs:134:17:134:33 | Exit | ExitMethods.cs:134:17:134:33 | FailingAssertion3 | | ExitMethods.cs:135:5:138:5 | {...} | ExitMethods.cs:134:17:134:33 | FailingAssertion3 | +| ExitMethods.cs:136:9:136:25 | Before call to method AssertFalse | ExitMethods.cs:134:17:134:33 | FailingAssertion3 | | ExitMethods.cs:136:9:136:25 | call to method AssertFalse | ExitMethods.cs:134:17:134:33 | FailingAssertion3 | | ExitMethods.cs:136:9:136:25 | this access | ExitMethods.cs:134:17:134:33 | FailingAssertion3 | | ExitMethods.cs:136:9:136:26 | ...; | ExitMethods.cs:134:17:134:33 | FailingAssertion3 | | ExitMethods.cs:136:21:136:24 | true | ExitMethods.cs:134:17:134:33 | FailingAssertion3 | -| ExitMethods.cs:140:17:140:42 | enter ExceptionDispatchInfoThrow | ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | -| ExitMethods.cs:140:17:140:42 | exit ExceptionDispatchInfoThrow | ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | -| ExitMethods.cs:140:17:140:42 | exit ExceptionDispatchInfoThrow (abnormal) | ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | +| ExitMethods.cs:140:17:140:42 | Entry | ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | +| ExitMethods.cs:140:17:140:42 | Exceptional Exit | ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | +| ExitMethods.cs:140:17:140:42 | Exit | ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | +| ExitMethods.cs:140:49:140:49 | b | ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | +| ExitMethods.cs:140:70:140:70 | e | ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | | ExitMethods.cs:141:5:147:5 | {...} | ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | | ExitMethods.cs:142:9:145:53 | if (...) ... | ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | +| ExitMethods.cs:142:13:142:13 | After access to parameter b [false] | ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | +| ExitMethods.cs:142:13:142:13 | After access to parameter b [true] | ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | | ExitMethods.cs:142:13:142:13 | access to parameter b | ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | +| ExitMethods.cs:143:13:143:42 | Before call to method Throw | ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | | ExitMethods.cs:143:13:143:42 | call to method Throw | ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | | ExitMethods.cs:143:13:143:43 | ...; | ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | | ExitMethods.cs:143:41:143:41 | access to parameter e | ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | +| ExitMethods.cs:145:13:145:44 | After call to method Capture | ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | +| ExitMethods.cs:145:13:145:44 | Before call to method Capture | ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | | ExitMethods.cs:145:13:145:44 | call to method Capture | ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | +| ExitMethods.cs:145:13:145:52 | Before call to method Throw | ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | | ExitMethods.cs:145:13:145:52 | call to method Throw | ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | | ExitMethods.cs:145:13:145:53 | ...; | ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | | ExitMethods.cs:145:43:145:43 | access to parameter e | ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | -| Extensions.cs:5:23:5:29 | enter ToInt32 | Extensions.cs:5:23:5:29 | ToInt32 | -| Extensions.cs:5:23:5:29 | exit ToInt32 | Extensions.cs:5:23:5:29 | ToInt32 | -| Extensions.cs:5:23:5:29 | exit ToInt32 (normal) | Extensions.cs:5:23:5:29 | ToInt32 | +| Extensions.cs:5:23:5:29 | Entry | Extensions.cs:5:23:5:29 | ToInt32 | +| Extensions.cs:5:23:5:29 | Exit | Extensions.cs:5:23:5:29 | ToInt32 | +| Extensions.cs:5:23:5:29 | Normal Exit | Extensions.cs:5:23:5:29 | ToInt32 | +| Extensions.cs:5:43:5:43 | s | Extensions.cs:5:23:5:29 | ToInt32 | | Extensions.cs:6:5:8:5 | {...} | Extensions.cs:5:23:5:29 | ToInt32 | +| Extensions.cs:7:9:7:30 | Before return ...; | Extensions.cs:5:23:5:29 | ToInt32 | | Extensions.cs:7:9:7:30 | return ...; | Extensions.cs:5:23:5:29 | ToInt32 | +| Extensions.cs:7:16:7:29 | After call to method Parse | Extensions.cs:5:23:5:29 | ToInt32 | +| Extensions.cs:7:16:7:29 | Before call to method Parse | Extensions.cs:5:23:5:29 | ToInt32 | | Extensions.cs:7:16:7:29 | call to method Parse | Extensions.cs:5:23:5:29 | ToInt32 | | Extensions.cs:7:28:7:28 | access to parameter s | Extensions.cs:5:23:5:29 | ToInt32 | -| Extensions.cs:10:24:10:29 | enter ToBool | Extensions.cs:10:24:10:29 | ToBool | -| Extensions.cs:10:24:10:29 | exit ToBool | Extensions.cs:10:24:10:29 | ToBool | -| Extensions.cs:10:24:10:29 | exit ToBool (normal) | Extensions.cs:10:24:10:29 | ToBool | +| Extensions.cs:10:24:10:29 | Entry | Extensions.cs:10:24:10:29 | ToBool | +| Extensions.cs:10:24:10:29 | Exit | Extensions.cs:10:24:10:29 | ToBool | +| Extensions.cs:10:24:10:29 | Normal Exit | Extensions.cs:10:24:10:29 | ToBool | +| Extensions.cs:10:43:10:43 | s | Extensions.cs:10:24:10:29 | ToBool | +| Extensions.cs:10:65:10:65 | f | Extensions.cs:10:24:10:29 | ToBool | | Extensions.cs:11:5:13:5 | {...} | Extensions.cs:10:24:10:29 | ToBool | +| Extensions.cs:12:9:12:20 | Before return ...; | Extensions.cs:10:24:10:29 | ToBool | | Extensions.cs:12:9:12:20 | return ...; | Extensions.cs:10:24:10:29 | ToBool | | Extensions.cs:12:16:12:16 | access to parameter f | Extensions.cs:10:24:10:29 | ToBool | +| Extensions.cs:12:16:12:19 | After delegate call | Extensions.cs:10:24:10:29 | ToBool | +| Extensions.cs:12:16:12:19 | Before delegate call | Extensions.cs:10:24:10:29 | ToBool | | Extensions.cs:12:16:12:19 | delegate call | Extensions.cs:10:24:10:29 | ToBool | | Extensions.cs:12:18:12:18 | access to parameter s | Extensions.cs:10:24:10:29 | ToBool | -| Extensions.cs:15:23:15:33 | enter CallToInt32 | Extensions.cs:15:23:15:33 | CallToInt32 | -| Extensions.cs:15:23:15:33 | exit CallToInt32 | Extensions.cs:15:23:15:33 | CallToInt32 | -| Extensions.cs:15:23:15:33 | exit CallToInt32 (normal) | Extensions.cs:15:23:15:33 | CallToInt32 | +| Extensions.cs:15:23:15:33 | Entry | Extensions.cs:15:23:15:33 | CallToInt32 | +| Extensions.cs:15:23:15:33 | Exit | Extensions.cs:15:23:15:33 | CallToInt32 | +| Extensions.cs:15:23:15:33 | Normal Exit | Extensions.cs:15:23:15:33 | CallToInt32 | +| Extensions.cs:15:40:15:51 | After call to method ToInt32 | Extensions.cs:15:23:15:33 | CallToInt32 | +| Extensions.cs:15:40:15:51 | Before call to method ToInt32 | Extensions.cs:15:23:15:33 | CallToInt32 | | Extensions.cs:15:40:15:51 | call to method ToInt32 | Extensions.cs:15:23:15:33 | CallToInt32 | | Extensions.cs:15:48:15:50 | "0" | Extensions.cs:15:23:15:33 | CallToInt32 | -| Extensions.cs:20:17:20:20 | enter Main | Extensions.cs:20:17:20:20 | Main | -| Extensions.cs:20:17:20:20 | exit Main | Extensions.cs:20:17:20:20 | Main | -| Extensions.cs:20:17:20:20 | exit Main (normal) | Extensions.cs:20:17:20:20 | Main | +| Extensions.cs:20:17:20:20 | Entry | Extensions.cs:20:17:20:20 | Main | +| Extensions.cs:20:17:20:20 | Exit | Extensions.cs:20:17:20:20 | Main | +| Extensions.cs:20:17:20:20 | Normal Exit | Extensions.cs:20:17:20:20 | Main | +| Extensions.cs:20:29:20:29 | s | Extensions.cs:20:17:20:20 | Main | +| Extensions.cs:21:5:26:5 | After {...} | Extensions.cs:20:17:20:20 | Main | | Extensions.cs:21:5:26:5 | {...} | Extensions.cs:20:17:20:20 | Main | | Extensions.cs:22:9:22:9 | access to parameter s | Extensions.cs:20:17:20:20 | Main | +| Extensions.cs:22:9:22:19 | After call to method ToInt32 | Extensions.cs:20:17:20:20 | Main | +| Extensions.cs:22:9:22:19 | Before call to method ToInt32 | Extensions.cs:20:17:20:20 | Main | | Extensions.cs:22:9:22:19 | call to method ToInt32 | Extensions.cs:20:17:20:20 | Main | | Extensions.cs:22:9:22:20 | ...; | Extensions.cs:20:17:20:20 | Main | +| Extensions.cs:22:9:22:20 | After ...; | Extensions.cs:20:17:20:20 | Main | +| Extensions.cs:23:9:23:30 | After call to method ToInt32 | Extensions.cs:20:17:20:20 | Main | +| Extensions.cs:23:9:23:30 | Before call to method ToInt32 | Extensions.cs:20:17:20:20 | Main | | Extensions.cs:23:9:23:30 | call to method ToInt32 | Extensions.cs:20:17:20:20 | Main | | Extensions.cs:23:9:23:31 | ...; | Extensions.cs:20:17:20:20 | Main | +| Extensions.cs:23:9:23:31 | After ...; | Extensions.cs:20:17:20:20 | Main | | Extensions.cs:23:28:23:29 | "" | Extensions.cs:20:17:20:20 | Main | +| Extensions.cs:24:9:24:45 | After call to method ToBool | Extensions.cs:20:17:20:20 | Main | +| Extensions.cs:24:9:24:45 | Before call to method ToBool | Extensions.cs:20:17:20:20 | Main | | Extensions.cs:24:9:24:45 | call to method ToBool | Extensions.cs:20:17:20:20 | Main | | Extensions.cs:24:9:24:46 | ...; | Extensions.cs:20:17:20:20 | Main | +| Extensions.cs:24:9:24:46 | After ...; | Extensions.cs:20:17:20:20 | Main | | Extensions.cs:24:27:24:32 | "true" | Extensions.cs:20:17:20:20 | Main | +| Extensions.cs:24:35:24:44 | After delegate creation of type Func | Extensions.cs:20:17:20:20 | Main | +| Extensions.cs:24:35:24:44 | Before delegate creation of type Func | Extensions.cs:20:17:20:20 | Main | | Extensions.cs:24:35:24:44 | access to method Parse | Extensions.cs:20:17:20:20 | Main | | Extensions.cs:24:35:24:44 | delegate creation of type Func | Extensions.cs:20:17:20:20 | Main | | Extensions.cs:25:9:25:14 | "true" | Extensions.cs:20:17:20:20 | Main | +| Extensions.cs:25:9:25:33 | After call to method ToBool | Extensions.cs:20:17:20:20 | Main | +| Extensions.cs:25:9:25:33 | Before call to method ToBool | Extensions.cs:20:17:20:20 | Main | | Extensions.cs:25:9:25:33 | call to method ToBool | Extensions.cs:20:17:20:20 | Main | | Extensions.cs:25:9:25:34 | ...; | Extensions.cs:20:17:20:20 | Main | +| Extensions.cs:25:9:25:34 | After ...; | Extensions.cs:20:17:20:20 | Main | +| Extensions.cs:25:23:25:32 | After delegate creation of type Func | Extensions.cs:20:17:20:20 | Main | +| Extensions.cs:25:23:25:32 | Before delegate creation of type Func | Extensions.cs:20:17:20:20 | Main | | Extensions.cs:25:23:25:32 | access to method Parse | Extensions.cs:20:17:20:20 | Main | | Extensions.cs:25:23:25:32 | delegate creation of type Func | Extensions.cs:20:17:20:20 | Main | +| Finally.cs:3:14:3:20 | After call to constructor Object | Finally.cs:3:14:3:20 | Finally | +| Finally.cs:3:14:3:20 | After call to method | Finally.cs:3:14:3:20 | Finally | +| Finally.cs:3:14:3:20 | Before call to constructor Object | Finally.cs:3:14:3:20 | Finally | +| Finally.cs:3:14:3:20 | Before call to method | Finally.cs:3:14:3:20 | Finally | +| Finally.cs:3:14:3:20 | Entry | Finally.cs:3:14:3:20 | Finally | +| Finally.cs:3:14:3:20 | Exit | Finally.cs:3:14:3:20 | Finally | +| Finally.cs:3:14:3:20 | Normal Exit | Finally.cs:3:14:3:20 | Finally | | Finally.cs:3:14:3:20 | call to constructor Object | Finally.cs:3:14:3:20 | Finally | | Finally.cs:3:14:3:20 | call to method | Finally.cs:3:14:3:20 | Finally | -| Finally.cs:3:14:3:20 | enter Finally | Finally.cs:3:14:3:20 | Finally | -| Finally.cs:3:14:3:20 | exit Finally | Finally.cs:3:14:3:20 | Finally | -| Finally.cs:3:14:3:20 | exit Finally (normal) | Finally.cs:3:14:3:20 | Finally | | Finally.cs:3:14:3:20 | this access | Finally.cs:3:14:3:20 | Finally | | Finally.cs:3:14:3:20 | {...} | Finally.cs:3:14:3:20 | Finally | -| Finally.cs:7:10:7:11 | enter M1 | Finally.cs:7:10:7:11 | M1 | -| Finally.cs:7:10:7:11 | exit M1 | Finally.cs:7:10:7:11 | M1 | -| Finally.cs:7:10:7:11 | exit M1 (abnormal) | Finally.cs:7:10:7:11 | M1 | -| Finally.cs:7:10:7:11 | exit M1 (normal) | Finally.cs:7:10:7:11 | M1 | +| Finally.cs:7:10:7:11 | Entry | Finally.cs:7:10:7:11 | M1 | +| Finally.cs:7:10:7:11 | Exceptional Exit | Finally.cs:7:10:7:11 | M1 | +| Finally.cs:7:10:7:11 | Exit | Finally.cs:7:10:7:11 | M1 | +| Finally.cs:7:10:7:11 | Normal Exit | Finally.cs:7:10:7:11 | M1 | +| Finally.cs:8:5:17:5 | After {...} | Finally.cs:7:10:7:11 | M1 | | Finally.cs:8:5:17:5 | {...} | Finally.cs:7:10:7:11 | M1 | +| Finally.cs:9:9:16:9 | After try {...} ... | Finally.cs:7:10:7:11 | M1 | | Finally.cs:9:9:16:9 | try {...} ... | Finally.cs:7:10:7:11 | M1 | +| Finally.cs:10:9:12:9 | After {...} | Finally.cs:7:10:7:11 | M1 | | Finally.cs:10:9:12:9 | {...} | Finally.cs:7:10:7:11 | M1 | +| Finally.cs:11:13:11:37 | After call to method WriteLine | Finally.cs:7:10:7:11 | M1 | +| Finally.cs:11:13:11:37 | Before call to method WriteLine | Finally.cs:7:10:7:11 | M1 | | Finally.cs:11:13:11:37 | call to method WriteLine | Finally.cs:7:10:7:11 | M1 | | Finally.cs:11:13:11:38 | ...; | Finally.cs:7:10:7:11 | M1 | +| Finally.cs:11:13:11:38 | After ...; | Finally.cs:7:10:7:11 | M1 | | Finally.cs:11:31:11:36 | "Try1" | Finally.cs:7:10:7:11 | M1 | +| Finally.cs:14:9:16:9 | After {...} | Finally.cs:7:10:7:11 | M1 | | Finally.cs:14:9:16:9 | {...} | Finally.cs:7:10:7:11 | M1 | +| Finally.cs:15:13:15:40 | After call to method WriteLine | Finally.cs:7:10:7:11 | M1 | +| Finally.cs:15:13:15:40 | Before call to method WriteLine | Finally.cs:7:10:7:11 | M1 | | Finally.cs:15:13:15:40 | call to method WriteLine | Finally.cs:7:10:7:11 | M1 | | Finally.cs:15:13:15:41 | ...; | Finally.cs:7:10:7:11 | M1 | +| Finally.cs:15:13:15:41 | After ...; | Finally.cs:7:10:7:11 | M1 | | Finally.cs:15:31:15:39 | "Finally" | Finally.cs:7:10:7:11 | M1 | -| Finally.cs:19:10:19:11 | enter M2 | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:19:10:19:11 | exit M2 | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:19:10:19:11 | exit M2 (abnormal) | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:19:10:19:11 | Entry | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:19:10:19:11 | Exceptional Exit | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:19:10:19:11 | Exit | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:19:10:19:11 | Normal Exit | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:20:5:52:5 | After {...} | Finally.cs:19:10:19:11 | M2 | | Finally.cs:20:5:52:5 | {...} | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:21:9:51:9 | After try {...} ... | Finally.cs:19:10:19:11 | M2 | | Finally.cs:21:9:51:9 | try {...} ... | Finally.cs:19:10:19:11 | M2 | | Finally.cs:22:9:25:9 | {...} | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:23:13:23:37 | After call to method WriteLine | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:23:13:23:37 | Before call to method WriteLine | Finally.cs:19:10:19:11 | M2 | | Finally.cs:23:13:23:37 | call to method WriteLine | Finally.cs:19:10:19:11 | M2 | | Finally.cs:23:13:23:38 | ...; | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:23:13:23:38 | After ...; | Finally.cs:19:10:19:11 | M2 | | Finally.cs:23:31:23:36 | "Try2" | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:24:13:24:19 | Before return ...; | Finally.cs:19:10:19:11 | M2 | | Finally.cs:24:13:24:19 | return ...; | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:26:9:29:9 | After catch (...) {...} [match] | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:26:9:29:9 | After catch (...) {...} [no-match] | Finally.cs:19:10:19:11 | M2 | | Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:19:10:19:11 | M2 | | Finally.cs:26:38:26:39 | IOException ex | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:26:48:26:51 | After true [true] | Finally.cs:19:10:19:11 | M2 | | Finally.cs:26:48:26:51 | true | Finally.cs:19:10:19:11 | M2 | | Finally.cs:27:9:29:9 | {...} | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:28:13:28:18 | Before throw ...; | Finally.cs:19:10:19:11 | M2 | | Finally.cs:28:13:28:18 | throw ...; | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:30:9:40:9 | After catch (...) {...} [match] | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:30:9:40:9 | After catch (...) {...} [no-match] | Finally.cs:19:10:19:11 | M2 | | Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:19:10:19:11 | M2 | | Finally.cs:30:41:30:42 | ArgumentException ex | Finally.cs:19:10:19:11 | M2 | | Finally.cs:31:9:40:9 | {...} | Finally.cs:19:10:19:11 | M2 | | Finally.cs:32:13:39:13 | try {...} ... | Finally.cs:19:10:19:11 | M2 | | Finally.cs:33:13:35:13 | {...} | Finally.cs:19:10:19:11 | M2 | | Finally.cs:34:17:34:32 | if (...) ... | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:34:21:34:24 | After true [true] | Finally.cs:19:10:19:11 | M2 | | Finally.cs:34:21:34:24 | true | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:34:27:34:32 | Before throw ...; | Finally.cs:19:10:19:11 | M2 | | Finally.cs:34:27:34:32 | throw ...; | Finally.cs:19:10:19:11 | M2 | | Finally.cs:37:13:39:13 | {...} | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:38:17:38:44 | Before throw ...; | Finally.cs:19:10:19:11 | M2 | | Finally.cs:38:17:38:44 | throw ...; | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:38:23:38:43 | After object creation of type Exception | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:38:23:38:43 | Before object creation of type Exception | Finally.cs:19:10:19:11 | M2 | | Finally.cs:38:23:38:43 | object creation of type Exception | Finally.cs:19:10:19:11 | M2 | | Finally.cs:38:37:38:42 | "Boo!" | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:41:9:43:9 | After catch (...) {...} [match] | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:41:9:43:9 | After catch (...) {...} [no-match] | Finally.cs:19:10:19:11 | M2 | | Finally.cs:41:9:43:9 | catch (...) {...} | Finally.cs:19:10:19:11 | M2 | | Finally.cs:42:9:43:9 | {...} | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:44:9:47:9 | After catch {...} [match] | Finally.cs:19:10:19:11 | M2 | | Finally.cs:44:9:47:9 | catch {...} | Finally.cs:19:10:19:11 | M2 | | Finally.cs:45:9:47:9 | {...} | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:46:13:46:19 | Before return ...; | Finally.cs:19:10:19:11 | M2 | | Finally.cs:46:13:46:19 | return ...; | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:49:9:51:9 | After {...} | Finally.cs:19:10:19:11 | M2 | | Finally.cs:49:9:51:9 | {...} | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:50:13:50:40 | After call to method WriteLine | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:50:13:50:40 | Before call to method WriteLine | Finally.cs:19:10:19:11 | M2 | | Finally.cs:50:13:50:40 | call to method WriteLine | Finally.cs:19:10:19:11 | M2 | | Finally.cs:50:13:50:41 | ...; | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:50:13:50:41 | After ...; | Finally.cs:19:10:19:11 | M2 | | Finally.cs:50:31:50:39 | "Finally" | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:54:10:54:11 | enter M3 | Finally.cs:54:10:54:11 | M3 | -| Finally.cs:54:10:54:11 | exit M3 | Finally.cs:54:10:54:11 | M3 | -| Finally.cs:54:10:54:11 | exit M3 (abnormal) | Finally.cs:54:10:54:11 | M3 | -| Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:54:10:54:11 | Entry | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:54:10:54:11 | Exceptional Exit | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:54:10:54:11 | Exit | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:54:10:54:11 | Normal Exit | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:55:5:72:5 | After {...} | Finally.cs:54:10:54:11 | M3 | | Finally.cs:55:5:72:5 | {...} | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:56:9:71:9 | After try {...} ... | Finally.cs:54:10:54:11 | M3 | | Finally.cs:56:9:71:9 | try {...} ... | Finally.cs:54:10:54:11 | M3 | | Finally.cs:57:9:60:9 | {...} | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:58:13:58:37 | After call to method WriteLine | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:58:13:58:37 | Before call to method WriteLine | Finally.cs:54:10:54:11 | M3 | | Finally.cs:58:13:58:37 | call to method WriteLine | Finally.cs:54:10:54:11 | M3 | | Finally.cs:58:13:58:38 | ...; | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:58:13:58:38 | After ...; | Finally.cs:54:10:54:11 | M3 | | Finally.cs:58:31:58:36 | "Try3" | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:59:13:59:19 | Before return ...; | Finally.cs:54:10:54:11 | M3 | | Finally.cs:59:13:59:19 | return ...; | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:61:9:64:9 | After catch (...) {...} [match] | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:61:9:64:9 | After catch (...) {...} [no-match] | Finally.cs:54:10:54:11 | M3 | | Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:54:10:54:11 | M3 | | Finally.cs:61:38:61:39 | IOException ex | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:61:48:61:51 | After true [true] | Finally.cs:54:10:54:11 | M3 | | Finally.cs:61:48:61:51 | true | Finally.cs:54:10:54:11 | M3 | | Finally.cs:62:9:64:9 | {...} | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:63:13:63:18 | Before throw ...; | Finally.cs:54:10:54:11 | M3 | | Finally.cs:63:13:63:18 | throw ...; | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:65:9:67:9 | After catch (...) {...} [match] | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:65:9:67:9 | After catch (...) {...} [no-match] | Finally.cs:54:10:54:11 | M3 | | Finally.cs:65:9:67:9 | catch (...) {...} | Finally.cs:54:10:54:11 | M3 | | Finally.cs:65:26:65:26 | Exception e | Finally.cs:54:10:54:11 | M3 | | Finally.cs:65:35:65:35 | access to local variable e | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:65:35:65:43 | After access to property Message | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:65:35:65:43 | Before access to property Message | Finally.cs:54:10:54:11 | M3 | | Finally.cs:65:35:65:43 | access to property Message | Finally.cs:54:10:54:11 | M3 | | Finally.cs:65:35:65:51 | ... != ... | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:65:35:65:51 | After ... != ... [false] | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:65:35:65:51 | After ... != ... [true] | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:65:35:65:51 | Before ... != ... | Finally.cs:54:10:54:11 | M3 | | Finally.cs:65:48:65:51 | null | Finally.cs:54:10:54:11 | M3 | | Finally.cs:66:9:67:9 | {...} | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:69:9:71:9 | After {...} | Finally.cs:54:10:54:11 | M3 | | Finally.cs:69:9:71:9 | {...} | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:70:13:70:40 | After call to method WriteLine | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:70:13:70:40 | Before call to method WriteLine | Finally.cs:54:10:54:11 | M3 | | Finally.cs:70:13:70:40 | call to method WriteLine | Finally.cs:54:10:54:11 | M3 | | Finally.cs:70:13:70:41 | ...; | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:70:13:70:41 | After ...; | Finally.cs:54:10:54:11 | M3 | | Finally.cs:70:31:70:39 | "Finally" | Finally.cs:54:10:54:11 | M3 | -| Finally.cs:74:10:74:11 | enter M4 | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:74:10:74:11 | exit M4 | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:74:10:74:11 | exit M4 (abnormal) | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:74:10:74:11 | exit M4 (normal) | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:74:10:74:11 | Entry | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:74:10:74:11 | Exceptional Exit | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:74:10:74:11 | Exit | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:74:10:74:11 | Normal Exit | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:75:5:101:5 | After {...} | Finally.cs:74:10:74:11 | M4 | | Finally.cs:75:5:101:5 | {...} | Finally.cs:74:10:74:11 | M4 | | Finally.cs:76:9:76:19 | ... ...; | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:76:9:76:19 | After ... ...; | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:76:13:76:13 | access to local variable i | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:76:13:76:18 | After Int32 i = ... | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:76:13:76:18 | Before Int32 i = ... | Finally.cs:74:10:74:11 | M4 | | Finally.cs:76:13:76:18 | Int32 i = ... | Finally.cs:74:10:74:11 | M4 | | Finally.cs:76:17:76:18 | 10 | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:77:9:100:9 | After while (...) ... | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:74:10:74:11 | M4 | | Finally.cs:77:9:100:9 | while (...) ... | Finally.cs:74:10:74:11 | M4 | | Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:74:10:74:11 | M4 | | Finally.cs:77:16:77:20 | ... > ... | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:77:16:77:20 | After ... > ... [false] | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:77:16:77:20 | After ... > ... [true] | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:77:16:77:20 | Before ... > ... | Finally.cs:74:10:74:11 | M4 | | Finally.cs:77:20:77:20 | 0 | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:78:9:100:9 | After {...} | Finally.cs:74:10:74:11 | M4 | | Finally.cs:78:9:100:9 | {...} | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:79:13:99:13 | After try {...} ... | Finally.cs:74:10:74:11 | M4 | | Finally.cs:79:13:99:13 | try {...} ... | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:80:13:87:13 | After {...} | Finally.cs:74:10:74:11 | M4 | | Finally.cs:80:13:87:13 | {...} | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:81:17:82:27 | After if (...) ... | Finally.cs:74:10:74:11 | M4 | | Finally.cs:81:17:82:27 | if (...) ... | Finally.cs:74:10:74:11 | M4 | | Finally.cs:81:21:81:21 | access to local variable i | Finally.cs:74:10:74:11 | M4 | | Finally.cs:81:21:81:26 | ... == ... | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:81:21:81:26 | After ... == ... [false] | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:81:21:81:26 | After ... == ... [true] | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:81:21:81:26 | Before ... == ... | Finally.cs:74:10:74:11 | M4 | | Finally.cs:81:26:81:26 | 0 | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:82:21:82:27 | Before return ...; | Finally.cs:74:10:74:11 | M4 | | Finally.cs:82:21:82:27 | return ...; | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:83:17:84:29 | After if (...) ... | Finally.cs:74:10:74:11 | M4 | | Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:74:10:74:11 | M4 | | Finally.cs:83:21:83:21 | access to local variable i | Finally.cs:74:10:74:11 | M4 | | Finally.cs:83:21:83:26 | ... == ... | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:83:21:83:26 | After ... == ... [false] | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:83:21:83:26 | After ... == ... [true] | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:83:21:83:26 | Before ... == ... | Finally.cs:74:10:74:11 | M4 | | Finally.cs:83:26:83:26 | 1 | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:84:21:84:29 | Before continue; | Finally.cs:74:10:74:11 | M4 | | Finally.cs:84:21:84:29 | continue; | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:85:17:86:26 | After if (...) ... | Finally.cs:74:10:74:11 | M4 | | Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:74:10:74:11 | M4 | | Finally.cs:85:21:85:21 | access to local variable i | Finally.cs:74:10:74:11 | M4 | | Finally.cs:85:21:85:26 | ... == ... | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:85:21:85:26 | After ... == ... [false] | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:85:21:85:26 | After ... == ... [true] | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:85:21:85:26 | Before ... == ... | Finally.cs:74:10:74:11 | M4 | | Finally.cs:85:26:85:26 | 2 | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:86:21:86:26 | Before break; | Finally.cs:74:10:74:11 | M4 | | Finally.cs:86:21:86:26 | break; | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:89:13:99:13 | After {...} | Finally.cs:74:10:74:11 | M4 | | Finally.cs:89:13:99:13 | {...} | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:90:17:98:17 | After try {...} ... | Finally.cs:74:10:74:11 | M4 | | Finally.cs:90:17:98:17 | try {...} ... | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:91:17:94:17 | After {...} | Finally.cs:74:10:74:11 | M4 | | Finally.cs:91:17:94:17 | {...} | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:92:21:93:46 | After if (...) ... | Finally.cs:74:10:74:11 | M4 | | Finally.cs:92:21:93:46 | if (...) ... | Finally.cs:74:10:74:11 | M4 | | Finally.cs:92:25:92:25 | access to local variable i | Finally.cs:74:10:74:11 | M4 | | Finally.cs:92:25:92:30 | ... == ... | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:92:25:92:30 | After ... == ... [false] | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:92:25:92:30 | After ... == ... [true] | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:92:25:92:30 | Before ... == ... | Finally.cs:74:10:74:11 | M4 | | Finally.cs:92:30:92:30 | 3 | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:93:25:93:46 | Before throw ...; | Finally.cs:74:10:74:11 | M4 | | Finally.cs:93:25:93:46 | throw ...; | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:93:31:93:45 | After object creation of type Exception | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:93:31:93:45 | Before object creation of type Exception | Finally.cs:74:10:74:11 | M4 | | Finally.cs:93:31:93:45 | object creation of type Exception | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:96:17:98:17 | After {...} | Finally.cs:74:10:74:11 | M4 | | Finally.cs:96:17:98:17 | {...} | Finally.cs:74:10:74:11 | M4 | | Finally.cs:97:21:97:21 | access to local variable i | Finally.cs:74:10:74:11 | M4 | | Finally.cs:97:21:97:23 | ...-- | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:97:21:97:23 | After ...-- | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:97:21:97:23 | Before ...-- | Finally.cs:74:10:74:11 | M4 | | Finally.cs:97:21:97:24 | ...; | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:103:10:103:11 | enter M5 | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:103:10:103:11 | exit M5 | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:103:10:103:11 | exit M5 (abnormal) | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:97:21:97:24 | After ...; | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:103:10:103:11 | Entry | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:103:10:103:11 | Exceptional Exit | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:103:10:103:11 | Exit | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:103:10:103:11 | Normal Exit | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:104:5:119:5 | After {...} | Finally.cs:103:10:103:11 | M5 | | Finally.cs:104:5:119:5 | {...} | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:105:9:118:9 | After try {...} ... | Finally.cs:103:10:103:11 | M5 | | Finally.cs:105:9:118:9 | try {...} ... | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:106:9:111:9 | After {...} | Finally.cs:103:10:103:11 | M5 | | Finally.cs:106:9:111:9 | {...} | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:107:13:108:23 | After if (...) ... | Finally.cs:103:10:103:11 | M5 | | Finally.cs:107:13:108:23 | if (...) ... | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:107:17:107:21 | After access to field Field | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:107:17:107:21 | Before access to field Field | Finally.cs:103:10:103:11 | M5 | | Finally.cs:107:17:107:21 | access to field Field | Finally.cs:103:10:103:11 | M5 | | Finally.cs:107:17:107:21 | this access | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:107:17:107:28 | After access to property Length | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:107:17:107:28 | Before access to property Length | Finally.cs:103:10:103:11 | M5 | | Finally.cs:107:17:107:28 | access to property Length | Finally.cs:103:10:103:11 | M5 | | Finally.cs:107:17:107:33 | ... == ... | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:107:17:107:33 | After ... == ... [false] | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:107:17:107:33 | After ... == ... [true] | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:107:17:107:33 | Before ... == ... | Finally.cs:103:10:103:11 | M5 | | Finally.cs:107:33:107:33 | 0 | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:108:17:108:23 | Before return ...; | Finally.cs:103:10:103:11 | M5 | | Finally.cs:108:17:108:23 | return ...; | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:109:13:110:49 | After if (...) ... | Finally.cs:103:10:103:11 | M5 | | Finally.cs:109:13:110:49 | if (...) ... | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:109:17:109:21 | After access to field Field | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:109:17:109:21 | Before access to field Field | Finally.cs:103:10:103:11 | M5 | | Finally.cs:109:17:109:21 | access to field Field | Finally.cs:103:10:103:11 | M5 | | Finally.cs:109:17:109:21 | this access | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:109:17:109:28 | After access to property Length | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:109:17:109:28 | Before access to property Length | Finally.cs:103:10:103:11 | M5 | | Finally.cs:109:17:109:28 | access to property Length | Finally.cs:103:10:103:11 | M5 | | Finally.cs:109:17:109:33 | ... == ... | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:109:17:109:33 | After ... == ... [false] | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:109:17:109:33 | After ... == ... [true] | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:109:17:109:33 | Before ... == ... | Finally.cs:103:10:103:11 | M5 | | Finally.cs:109:33:109:33 | 1 | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:110:17:110:49 | Before throw ...; | Finally.cs:103:10:103:11 | M5 | | Finally.cs:110:17:110:49 | throw ...; | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:110:23:110:48 | After object creation of type OutOfMemoryException | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:110:23:110:48 | Before object creation of type OutOfMemoryException | Finally.cs:103:10:103:11 | M5 | | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:113:9:118:9 | After {...} | Finally.cs:103:10:103:11 | M5 | | Finally.cs:113:9:118:9 | {...} | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:114:13:115:41 | After if (...) ... | Finally.cs:103:10:103:11 | M5 | | Finally.cs:114:13:115:41 | if (...) ... | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:114:17:114:36 | [false] !... | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:114:17:114:36 | [true] !... | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:114:17:114:36 | !... | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:114:17:114:36 | After !... [false] | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:114:17:114:36 | After !... [true] | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:114:19:114:23 | After access to field Field | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:114:19:114:23 | Before access to field Field | Finally.cs:103:10:103:11 | M5 | | Finally.cs:114:19:114:23 | access to field Field | Finally.cs:103:10:103:11 | M5 | | Finally.cs:114:19:114:23 | this access | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:114:19:114:30 | After access to property Length | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:114:19:114:30 | Before access to property Length | Finally.cs:103:10:103:11 | M5 | | Finally.cs:114:19:114:30 | access to property Length | Finally.cs:103:10:103:11 | M5 | | Finally.cs:114:19:114:35 | ... == ... | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:114:19:114:35 | After ... == ... [false] | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:114:19:114:35 | After ... == ... [true] | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:114:19:114:35 | Before ... == ... | Finally.cs:103:10:103:11 | M5 | | Finally.cs:114:35:114:35 | 0 | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:115:17:115:40 | After call to method WriteLine | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:115:17:115:40 | Before call to method WriteLine | Finally.cs:103:10:103:11 | M5 | | Finally.cs:115:17:115:40 | call to method WriteLine | Finally.cs:103:10:103:11 | M5 | | Finally.cs:115:17:115:41 | ...; | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:115:17:115:41 | After ...; | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:115:35:115:39 | After access to field Field | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:115:35:115:39 | Before access to field Field | Finally.cs:103:10:103:11 | M5 | | Finally.cs:115:35:115:39 | access to field Field | Finally.cs:103:10:103:11 | M5 | | Finally.cs:115:35:115:39 | this access | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:116:13:117:37 | After if (...) ... | Finally.cs:103:10:103:11 | M5 | | Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:116:17:116:21 | After access to field Field | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:116:17:116:21 | Before access to field Field | Finally.cs:103:10:103:11 | M5 | | Finally.cs:116:17:116:21 | access to field Field | Finally.cs:103:10:103:11 | M5 | | Finally.cs:116:17:116:21 | this access | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:116:17:116:28 | After access to property Length | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:116:17:116:28 | Before access to property Length | Finally.cs:103:10:103:11 | M5 | | Finally.cs:116:17:116:28 | access to property Length | Finally.cs:103:10:103:11 | M5 | | Finally.cs:116:17:116:32 | ... > ... | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:116:17:116:32 | After ... > ... [false] | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:116:17:116:32 | After ... > ... [true] | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:116:17:116:32 | Before ... > ... | Finally.cs:103:10:103:11 | M5 | | Finally.cs:116:32:116:32 | 0 | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:117:17:117:36 | After call to method WriteLine | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:117:17:117:36 | Before call to method WriteLine | Finally.cs:103:10:103:11 | M5 | | Finally.cs:117:17:117:36 | call to method WriteLine | Finally.cs:103:10:103:11 | M5 | | Finally.cs:117:17:117:37 | ...; | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:117:17:117:37 | After ...; | Finally.cs:103:10:103:11 | M5 | | Finally.cs:117:35:117:35 | 1 | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:121:10:121:11 | enter M6 | Finally.cs:121:10:121:11 | M6 | -| Finally.cs:121:10:121:11 | exit M6 | Finally.cs:121:10:121:11 | M6 | -| Finally.cs:121:10:121:11 | exit M6 (normal) | Finally.cs:121:10:121:11 | M6 | +| Finally.cs:121:10:121:11 | Entry | Finally.cs:121:10:121:11 | M6 | +| Finally.cs:121:10:121:11 | Exit | Finally.cs:121:10:121:11 | M6 | +| Finally.cs:121:10:121:11 | Normal Exit | Finally.cs:121:10:121:11 | M6 | +| Finally.cs:122:5:131:5 | After {...} | Finally.cs:121:10:121:11 | M6 | | Finally.cs:122:5:131:5 | {...} | Finally.cs:121:10:121:11 | M6 | +| Finally.cs:123:9:130:9 | After try {...} ... | Finally.cs:121:10:121:11 | M6 | | Finally.cs:123:9:130:9 | try {...} ... | Finally.cs:121:10:121:11 | M6 | +| Finally.cs:124:9:126:9 | After {...} | Finally.cs:121:10:121:11 | M6 | | Finally.cs:124:9:126:9 | {...} | Finally.cs:121:10:121:11 | M6 | | Finally.cs:125:13:125:41 | ... ...; | Finally.cs:121:10:121:11 | M6 | +| Finally.cs:125:13:125:41 | After ... ...; | Finally.cs:121:10:121:11 | M6 | +| Finally.cs:125:17:125:20 | access to local variable temp | Finally.cs:121:10:121:11 | M6 | +| Finally.cs:125:17:125:40 | After Double temp = ... | Finally.cs:121:10:121:11 | M6 | +| Finally.cs:125:17:125:40 | Before Double temp = ... | Finally.cs:121:10:121:11 | M6 | | Finally.cs:125:17:125:40 | Double temp = ... | Finally.cs:121:10:121:11 | M6 | | Finally.cs:125:24:125:24 | 0 | Finally.cs:121:10:121:11 | M6 | | Finally.cs:125:24:125:24 | (...) ... | Finally.cs:121:10:121:11 | M6 | +| Finally.cs:125:24:125:24 | After (...) ... | Finally.cs:121:10:121:11 | M6 | +| Finally.cs:125:24:125:24 | Before (...) ... | Finally.cs:121:10:121:11 | M6 | | Finally.cs:125:24:125:40 | ... / ... | Finally.cs:121:10:121:11 | M6 | +| Finally.cs:125:24:125:40 | After ... / ... | Finally.cs:121:10:121:11 | M6 | +| Finally.cs:125:24:125:40 | Before ... / ... | Finally.cs:121:10:121:11 | M6 | | Finally.cs:125:28:125:40 | access to constant E | Finally.cs:121:10:121:11 | M6 | -| Finally.cs:133:10:133:11 | enter M7 | Finally.cs:133:10:133:11 | M7 | -| Finally.cs:133:10:133:11 | exit M7 | Finally.cs:133:10:133:11 | M7 | -| Finally.cs:133:10:133:11 | exit M7 (abnormal) | Finally.cs:133:10:133:11 | M7 | +| Finally.cs:133:10:133:11 | Entry | Finally.cs:133:10:133:11 | M7 | +| Finally.cs:133:10:133:11 | Exceptional Exit | Finally.cs:133:10:133:11 | M7 | +| Finally.cs:133:10:133:11 | Exit | Finally.cs:133:10:133:11 | M7 | | Finally.cs:134:5:145:5 | {...} | Finally.cs:133:10:133:11 | M7 | | Finally.cs:135:9:143:9 | try {...} ... | Finally.cs:133:10:133:11 | M7 | +| Finally.cs:136:9:138:9 | After {...} | Finally.cs:133:10:133:11 | M7 | | Finally.cs:136:9:138:9 | {...} | Finally.cs:133:10:133:11 | M7 | +| Finally.cs:137:13:137:36 | After call to method WriteLine | Finally.cs:133:10:133:11 | M7 | +| Finally.cs:137:13:137:36 | Before call to method WriteLine | Finally.cs:133:10:133:11 | M7 | | Finally.cs:137:13:137:36 | call to method WriteLine | Finally.cs:133:10:133:11 | M7 | | Finally.cs:137:13:137:37 | ...; | Finally.cs:133:10:133:11 | M7 | +| Finally.cs:137:13:137:37 | After ...; | Finally.cs:133:10:133:11 | M7 | | Finally.cs:137:31:137:35 | "Try" | Finally.cs:133:10:133:11 | M7 | | Finally.cs:140:9:143:9 | {...} | Finally.cs:133:10:133:11 | M7 | +| Finally.cs:141:13:141:44 | Before throw ...; | Finally.cs:133:10:133:11 | M7 | | Finally.cs:141:13:141:44 | throw ...; | Finally.cs:133:10:133:11 | M7 | +| Finally.cs:141:19:141:43 | After object creation of type ArgumentException | Finally.cs:133:10:133:11 | M7 | +| Finally.cs:141:19:141:43 | Before object creation of type ArgumentException | Finally.cs:133:10:133:11 | M7 | | Finally.cs:141:19:141:43 | object creation of type ArgumentException | Finally.cs:133:10:133:11 | M7 | | Finally.cs:141:41:141:42 | "" | Finally.cs:133:10:133:11 | M7 | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:147:10:147:11 | exit M8 | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:147:10:147:11 | exit M8 (abnormal) | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:147:10:147:11 | Entry | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:147:10:147:11 | Exceptional Exit | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:147:10:147:11 | Exit | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:147:10:147:11 | Normal Exit | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:147:22:147:25 | args | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:148:5:170:5 | After {...} | Finally.cs:147:10:147:11 | M8 | | Finally.cs:148:5:170:5 | {...} | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:149:9:169:9 | After try {...} ... | Finally.cs:147:10:147:11 | M8 | | Finally.cs:149:9:169:9 | try {...} ... | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:150:9:153:9 | After {...} | Finally.cs:147:10:147:11 | M8 | | Finally.cs:150:9:153:9 | {...} | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:151:13:152:50 | After if (...) ... | Finally.cs:147:10:147:11 | M8 | | Finally.cs:151:13:152:50 | if (...) ... | Finally.cs:147:10:147:11 | M8 | | Finally.cs:151:17:151:20 | access to parameter args | Finally.cs:147:10:147:11 | M8 | | Finally.cs:151:17:151:28 | ... == ... | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:151:17:151:28 | After ... == ... [false] | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:151:17:151:28 | After ... == ... [true] | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:151:17:151:28 | Before ... == ... | Finally.cs:147:10:147:11 | M8 | | Finally.cs:151:25:151:28 | null | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:152:17:152:50 | Before throw ...; | Finally.cs:147:10:147:11 | M8 | | Finally.cs:152:17:152:50 | throw ...; | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:152:23:152:49 | After object creation of type ArgumentNullException | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:152:23:152:49 | Before object creation of type ArgumentNullException | Finally.cs:147:10:147:11 | M8 | | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:155:9:169:9 | After {...} | Finally.cs:147:10:147:11 | M8 | | Finally.cs:155:9:169:9 | {...} | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:156:13:168:13 | After try {...} ... | Finally.cs:147:10:147:11 | M8 | | Finally.cs:156:13:168:13 | try {...} ... | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:157:13:160:13 | After {...} | Finally.cs:147:10:147:11 | M8 | | Finally.cs:157:13:160:13 | {...} | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:158:17:159:45 | After if (...) ... | Finally.cs:147:10:147:11 | M8 | | Finally.cs:158:17:159:45 | if (...) ... | Finally.cs:147:10:147:11 | M8 | | Finally.cs:158:21:158:24 | access to parameter args | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:158:21:158:31 | After access to property Length | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:158:21:158:31 | Before access to property Length | Finally.cs:147:10:147:11 | M8 | | Finally.cs:158:21:158:31 | access to property Length | Finally.cs:147:10:147:11 | M8 | | Finally.cs:158:21:158:36 | ... == ... | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:158:21:158:36 | After ... == ... [false] | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:158:21:158:36 | After ... == ... [true] | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:158:21:158:36 | Before ... == ... | Finally.cs:147:10:147:11 | M8 | | Finally.cs:158:36:158:36 | 1 | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:159:21:159:45 | Before throw ...; | Finally.cs:147:10:147:11 | M8 | | Finally.cs:159:21:159:45 | throw ...; | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:159:27:159:44 | After object creation of type Exception | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:159:27:159:44 | Before object creation of type Exception | Finally.cs:147:10:147:11 | M8 | | Finally.cs:159:27:159:44 | object creation of type Exception | Finally.cs:147:10:147:11 | M8 | | Finally.cs:159:41:159:43 | "1" | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:161:13:164:13 | After catch (...) {...} [match] | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:161:13:164:13 | After catch (...) {...} [no-match] | Finally.cs:147:10:147:11 | M8 | | Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:147:10:147:11 | M8 | | Finally.cs:161:30:161:30 | Exception e | Finally.cs:147:10:147:11 | M8 | | Finally.cs:161:39:161:39 | access to local variable e | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:161:39:161:47 | After access to property Message | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:161:39:161:47 | Before access to property Message | Finally.cs:147:10:147:11 | M8 | | Finally.cs:161:39:161:47 | access to property Message | Finally.cs:147:10:147:11 | M8 | | Finally.cs:161:39:161:54 | ... == ... | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:161:39:161:54 | After ... == ... [false] | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:161:39:161:54 | After ... == ... [true] | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:161:39:161:54 | Before ... == ... | Finally.cs:147:10:147:11 | M8 | | Finally.cs:161:52:161:54 | "1" | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:162:13:164:13 | After {...} | Finally.cs:147:10:147:11 | M8 | | Finally.cs:162:13:164:13 | {...} | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:163:17:163:42 | After call to method WriteLine | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:163:17:163:42 | Before call to method WriteLine | Finally.cs:147:10:147:11 | M8 | | Finally.cs:163:17:163:42 | call to method WriteLine | Finally.cs:147:10:147:11 | M8 | | Finally.cs:163:17:163:43 | ...; | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:163:17:163:43 | After ...; | Finally.cs:147:10:147:11 | M8 | | Finally.cs:163:35:163:38 | access to parameter args | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:163:35:163:41 | After access to array element | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:163:35:163:41 | Before access to array element | Finally.cs:147:10:147:11 | M8 | | Finally.cs:163:35:163:41 | access to array element | Finally.cs:147:10:147:11 | M8 | | Finally.cs:163:40:163:40 | 0 | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:165:13:168:13 | After catch {...} [match] | Finally.cs:147:10:147:11 | M8 | | Finally.cs:165:13:168:13 | catch {...} | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:166:13:168:13 | After {...} | Finally.cs:147:10:147:11 | M8 | | Finally.cs:166:13:168:13 | {...} | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:167:17:167:37 | After call to method WriteLine | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:167:17:167:37 | Before call to method WriteLine | Finally.cs:147:10:147:11 | M8 | | Finally.cs:167:17:167:37 | call to method WriteLine | Finally.cs:147:10:147:11 | M8 | | Finally.cs:167:17:167:38 | ...; | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:167:17:167:38 | After ...; | Finally.cs:147:10:147:11 | M8 | | Finally.cs:167:35:167:36 | "" | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:172:11:172:20 | After call to constructor Exception | Finally.cs:172:11:172:20 | ExceptionA | +| Finally.cs:172:11:172:20 | After call to method | Finally.cs:172:11:172:20 | ExceptionA | +| Finally.cs:172:11:172:20 | Before call to constructor Exception | Finally.cs:172:11:172:20 | ExceptionA | +| Finally.cs:172:11:172:20 | Before call to method | Finally.cs:172:11:172:20 | ExceptionA | +| Finally.cs:172:11:172:20 | Entry | Finally.cs:172:11:172:20 | ExceptionA | +| Finally.cs:172:11:172:20 | Exit | Finally.cs:172:11:172:20 | ExceptionA | +| Finally.cs:172:11:172:20 | Normal Exit | Finally.cs:172:11:172:20 | ExceptionA | | Finally.cs:172:11:172:20 | call to constructor Exception | Finally.cs:172:11:172:20 | ExceptionA | | Finally.cs:172:11:172:20 | call to method | Finally.cs:172:11:172:20 | ExceptionA | -| Finally.cs:172:11:172:20 | enter ExceptionA | Finally.cs:172:11:172:20 | ExceptionA | -| Finally.cs:172:11:172:20 | exit ExceptionA | Finally.cs:172:11:172:20 | ExceptionA | -| Finally.cs:172:11:172:20 | exit ExceptionA (normal) | Finally.cs:172:11:172:20 | ExceptionA | | Finally.cs:172:11:172:20 | this access | Finally.cs:172:11:172:20 | ExceptionA | | Finally.cs:172:11:172:20 | {...} | Finally.cs:172:11:172:20 | ExceptionA | +| Finally.cs:173:11:173:20 | After call to constructor Exception | Finally.cs:173:11:173:20 | ExceptionB | +| Finally.cs:173:11:173:20 | After call to method | Finally.cs:173:11:173:20 | ExceptionB | +| Finally.cs:173:11:173:20 | Before call to constructor Exception | Finally.cs:173:11:173:20 | ExceptionB | +| Finally.cs:173:11:173:20 | Before call to method | Finally.cs:173:11:173:20 | ExceptionB | +| Finally.cs:173:11:173:20 | Entry | Finally.cs:173:11:173:20 | ExceptionB | +| Finally.cs:173:11:173:20 | Exit | Finally.cs:173:11:173:20 | ExceptionB | +| Finally.cs:173:11:173:20 | Normal Exit | Finally.cs:173:11:173:20 | ExceptionB | | Finally.cs:173:11:173:20 | call to constructor Exception | Finally.cs:173:11:173:20 | ExceptionB | | Finally.cs:173:11:173:20 | call to method | Finally.cs:173:11:173:20 | ExceptionB | -| Finally.cs:173:11:173:20 | enter ExceptionB | Finally.cs:173:11:173:20 | ExceptionB | -| Finally.cs:173:11:173:20 | exit ExceptionB | Finally.cs:173:11:173:20 | ExceptionB | -| Finally.cs:173:11:173:20 | exit ExceptionB (normal) | Finally.cs:173:11:173:20 | ExceptionB | | Finally.cs:173:11:173:20 | this access | Finally.cs:173:11:173:20 | ExceptionB | | Finally.cs:173:11:173:20 | {...} | Finally.cs:173:11:173:20 | ExceptionB | +| Finally.cs:174:11:174:20 | After call to constructor Exception | Finally.cs:174:11:174:20 | ExceptionC | +| Finally.cs:174:11:174:20 | After call to method | Finally.cs:174:11:174:20 | ExceptionC | +| Finally.cs:174:11:174:20 | Before call to constructor Exception | Finally.cs:174:11:174:20 | ExceptionC | +| Finally.cs:174:11:174:20 | Before call to method | Finally.cs:174:11:174:20 | ExceptionC | +| Finally.cs:174:11:174:20 | Entry | Finally.cs:174:11:174:20 | ExceptionC | +| Finally.cs:174:11:174:20 | Exit | Finally.cs:174:11:174:20 | ExceptionC | +| Finally.cs:174:11:174:20 | Normal Exit | Finally.cs:174:11:174:20 | ExceptionC | | Finally.cs:174:11:174:20 | call to constructor Exception | Finally.cs:174:11:174:20 | ExceptionC | | Finally.cs:174:11:174:20 | call to method | Finally.cs:174:11:174:20 | ExceptionC | -| Finally.cs:174:11:174:20 | enter ExceptionC | Finally.cs:174:11:174:20 | ExceptionC | -| Finally.cs:174:11:174:20 | exit ExceptionC | Finally.cs:174:11:174:20 | ExceptionC | -| Finally.cs:174:11:174:20 | exit ExceptionC (normal) | Finally.cs:174:11:174:20 | ExceptionC | | Finally.cs:174:11:174:20 | this access | Finally.cs:174:11:174:20 | ExceptionC | | Finally.cs:174:11:174:20 | {...} | Finally.cs:174:11:174:20 | ExceptionC | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:176:10:176:11 | exit M9 | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:176:10:176:11 | exit M9 (abnormal) | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:176:10:176:11 | Entry | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:176:10:176:11 | Exceptional Exit | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:176:10:176:11 | Exit | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:176:10:176:11 | Normal Exit | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:176:18:176:19 | b1 | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:176:27:176:28 | b2 | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:177:5:193:5 | After {...} | Finally.cs:176:10:176:11 | M9 | | Finally.cs:177:5:193:5 | {...} | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:178:9:192:9 | After try {...} ... | Finally.cs:176:10:176:11 | M9 | | Finally.cs:178:9:192:9 | try {...} ... | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:179:9:181:9 | After {...} | Finally.cs:176:10:176:11 | M9 | | Finally.cs:179:9:181:9 | {...} | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:180:13:180:43 | After if (...) ... | Finally.cs:176:10:176:11 | M9 | | Finally.cs:180:13:180:43 | if (...) ... | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:180:17:180:18 | After access to parameter b1 [false] | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:180:17:180:18 | After access to parameter b1 [true] | Finally.cs:176:10:176:11 | M9 | | Finally.cs:180:17:180:18 | access to parameter b1 | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:180:21:180:43 | Before throw ...; | Finally.cs:176:10:176:11 | M9 | | Finally.cs:180:21:180:43 | throw ...; | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:180:27:180:42 | After object creation of type ExceptionA | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:180:27:180:42 | Before object creation of type ExceptionA | Finally.cs:176:10:176:11 | M9 | | Finally.cs:180:27:180:42 | object creation of type ExceptionA | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:183:9:192:9 | After {...} | Finally.cs:176:10:176:11 | M9 | | Finally.cs:183:9:192:9 | {...} | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:184:13:191:13 | After try {...} ... | Finally.cs:176:10:176:11 | M9 | | Finally.cs:184:13:191:13 | try {...} ... | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:185:13:187:13 | After {...} | Finally.cs:176:10:176:11 | M9 | | Finally.cs:185:13:187:13 | {...} | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:186:17:186:47 | After if (...) ... | Finally.cs:176:10:176:11 | M9 | | Finally.cs:186:17:186:47 | if (...) ... | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:186:21:186:22 | After access to parameter b2 [false] | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:186:21:186:22 | After access to parameter b2 [true] | Finally.cs:176:10:176:11 | M9 | | Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:186:25:186:47 | Before throw ...; | Finally.cs:176:10:176:11 | M9 | | Finally.cs:186:25:186:47 | throw ...; | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:186:31:186:46 | After object creation of type ExceptionB | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:186:31:186:46 | Before object creation of type ExceptionB | Finally.cs:176:10:176:11 | M9 | | Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:188:13:191:13 | After catch (...) {...} [match] | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:188:13:191:13 | After catch (...) {...} [no-match] | Finally.cs:176:10:176:11 | M9 | | Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:188:38:188:39 | After access to parameter b2 [false] | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:188:38:188:39 | After access to parameter b2 [true] | Finally.cs:176:10:176:11 | M9 | | Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:189:13:191:13 | After {...} | Finally.cs:176:10:176:11 | M9 | | Finally.cs:189:13:191:13 | {...} | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:190:17:190:47 | After if (...) ... | Finally.cs:176:10:176:11 | M9 | | Finally.cs:190:17:190:47 | if (...) ... | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:190:21:190:22 | After access to parameter b1 [false] | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:190:21:190:22 | After access to parameter b1 [true] | Finally.cs:176:10:176:11 | M9 | | Finally.cs:190:21:190:22 | access to parameter b1 | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:190:25:190:47 | Before throw ...; | Finally.cs:176:10:176:11 | M9 | | Finally.cs:190:25:190:47 | throw ...; | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:190:31:190:46 | After object creation of type ExceptionC | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:190:31:190:46 | Before object creation of type ExceptionC | Finally.cs:176:10:176:11 | M9 | | Finally.cs:190:31:190:46 | object creation of type ExceptionC | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:195:10:195:12 | exit M10 | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:195:10:195:12 | exit M10 (abnormal) | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:195:10:195:12 | exit M10 (normal) | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:195:10:195:12 | Entry | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:195:10:195:12 | Exceptional Exit | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:195:10:195:12 | Exit | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:195:10:195:12 | Normal Exit | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:195:19:195:20 | b1 | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:195:28:195:29 | b2 | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:195:37:195:38 | b3 | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:196:5:214:5 | After {...} | Finally.cs:195:10:195:12 | M10 | | Finally.cs:196:5:214:5 | {...} | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:197:9:212:9 | After try {...} ... | Finally.cs:195:10:195:12 | M10 | | Finally.cs:197:9:212:9 | try {...} ... | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:198:9:200:9 | After {...} | Finally.cs:195:10:195:12 | M10 | | Finally.cs:198:9:200:9 | {...} | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:199:13:199:43 | After if (...) ... | Finally.cs:195:10:195:12 | M10 | | Finally.cs:199:13:199:43 | if (...) ... | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:199:17:199:18 | After access to parameter b1 [false] | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:199:17:199:18 | After access to parameter b1 [true] | Finally.cs:195:10:195:12 | M10 | | Finally.cs:199:17:199:18 | access to parameter b1 | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:199:21:199:43 | Before throw ...; | Finally.cs:195:10:195:12 | M10 | | Finally.cs:199:21:199:43 | throw ...; | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:199:27:199:42 | After object creation of type ExceptionA | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:199:27:199:42 | Before object creation of type ExceptionA | Finally.cs:195:10:195:12 | M10 | | Finally.cs:199:27:199:42 | object creation of type ExceptionA | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:202:9:212:9 | After {...} | Finally.cs:195:10:195:12 | M10 | | Finally.cs:202:9:212:9 | {...} | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:203:13:210:13 | After try {...} ... | Finally.cs:195:10:195:12 | M10 | | Finally.cs:203:13:210:13 | try {...} ... | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:204:13:206:13 | After {...} | Finally.cs:195:10:195:12 | M10 | | Finally.cs:204:13:206:13 | {...} | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:205:17:205:47 | After if (...) ... | Finally.cs:195:10:195:12 | M10 | | Finally.cs:205:17:205:47 | if (...) ... | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:205:21:205:22 | After access to parameter b2 [false] | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:205:21:205:22 | After access to parameter b2 [true] | Finally.cs:195:10:195:12 | M10 | | Finally.cs:205:21:205:22 | access to parameter b2 | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:205:25:205:47 | Before throw ...; | Finally.cs:195:10:195:12 | M10 | | Finally.cs:205:25:205:47 | throw ...; | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:205:31:205:46 | After object creation of type ExceptionB | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:205:31:205:46 | Before object creation of type ExceptionB | Finally.cs:195:10:195:12 | M10 | | Finally.cs:205:31:205:46 | object creation of type ExceptionB | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:208:13:210:13 | After {...} | Finally.cs:195:10:195:12 | M10 | | Finally.cs:208:13:210:13 | {...} | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:209:17:209:47 | After if (...) ... | Finally.cs:195:10:195:12 | M10 | | Finally.cs:209:17:209:47 | if (...) ... | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:209:21:209:22 | After access to parameter b3 [false] | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:209:21:209:22 | After access to parameter b3 [true] | Finally.cs:195:10:195:12 | M10 | | Finally.cs:209:21:209:22 | access to parameter b3 | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:209:25:209:47 | Before throw ...; | Finally.cs:195:10:195:12 | M10 | | Finally.cs:209:25:209:47 | throw ...; | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:209:31:209:46 | After object creation of type ExceptionC | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:209:31:209:46 | Before object creation of type ExceptionC | Finally.cs:195:10:195:12 | M10 | | Finally.cs:209:31:209:46 | object creation of type ExceptionC | Finally.cs:195:10:195:12 | M10 | | Finally.cs:211:13:211:16 | this access | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:211:13:211:22 | After access to field Field | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:211:13:211:22 | Before access to field Field | Finally.cs:195:10:195:12 | M10 | | Finally.cs:211:13:211:22 | access to field Field | Finally.cs:195:10:195:12 | M10 | | Finally.cs:211:13:211:28 | ... = ... | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:211:13:211:28 | After ... = ... | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:211:13:211:28 | Before ... = ... | Finally.cs:195:10:195:12 | M10 | | Finally.cs:211:13:211:29 | ...; | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:211:13:211:29 | After ...; | Finally.cs:195:10:195:12 | M10 | | Finally.cs:211:26:211:28 | "0" | Finally.cs:195:10:195:12 | M10 | | Finally.cs:213:9:213:12 | this access | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:213:9:213:18 | After access to field Field | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:213:9:213:18 | Before access to field Field | Finally.cs:195:10:195:12 | M10 | | Finally.cs:213:9:213:18 | access to field Field | Finally.cs:195:10:195:12 | M10 | | Finally.cs:213:9:213:24 | ... = ... | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:213:9:213:24 | After ... = ... | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:213:9:213:24 | Before ... = ... | Finally.cs:195:10:195:12 | M10 | | Finally.cs:213:9:213:25 | ...; | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:213:9:213:25 | After ...; | Finally.cs:195:10:195:12 | M10 | | Finally.cs:213:22:213:24 | "1" | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:216:10:216:12 | enter M11 | Finally.cs:216:10:216:12 | M11 | -| Finally.cs:216:10:216:12 | exit M11 | Finally.cs:216:10:216:12 | M11 | -| Finally.cs:216:10:216:12 | exit M11 (normal) | Finally.cs:216:10:216:12 | M11 | +| Finally.cs:216:10:216:12 | Entry | Finally.cs:216:10:216:12 | M11 | +| Finally.cs:216:10:216:12 | Exit | Finally.cs:216:10:216:12 | M11 | +| Finally.cs:216:10:216:12 | Normal Exit | Finally.cs:216:10:216:12 | M11 | +| Finally.cs:217:5:231:5 | After {...} | Finally.cs:216:10:216:12 | M11 | | Finally.cs:217:5:231:5 | {...} | Finally.cs:216:10:216:12 | M11 | +| Finally.cs:218:9:229:9 | After try {...} ... | Finally.cs:216:10:216:12 | M11 | | Finally.cs:218:9:229:9 | try {...} ... | Finally.cs:216:10:216:12 | M11 | +| Finally.cs:219:9:221:9 | After {...} | Finally.cs:216:10:216:12 | M11 | | Finally.cs:219:9:221:9 | {...} | Finally.cs:216:10:216:12 | M11 | +| Finally.cs:220:13:220:36 | After call to method WriteLine | Finally.cs:216:10:216:12 | M11 | +| Finally.cs:220:13:220:36 | Before call to method WriteLine | Finally.cs:216:10:216:12 | M11 | | Finally.cs:220:13:220:36 | call to method WriteLine | Finally.cs:216:10:216:12 | M11 | | Finally.cs:220:13:220:37 | ...; | Finally.cs:216:10:216:12 | M11 | +| Finally.cs:220:13:220:37 | After ...; | Finally.cs:216:10:216:12 | M11 | | Finally.cs:220:31:220:35 | "Try" | Finally.cs:216:10:216:12 | M11 | +| Finally.cs:222:9:225:9 | After catch {...} [match] | Finally.cs:216:10:216:12 | M11 | | Finally.cs:222:9:225:9 | catch {...} | Finally.cs:216:10:216:12 | M11 | +| Finally.cs:223:9:225:9 | After {...} | Finally.cs:216:10:216:12 | M11 | | Finally.cs:223:9:225:9 | {...} | Finally.cs:216:10:216:12 | M11 | +| Finally.cs:224:13:224:38 | After call to method WriteLine | Finally.cs:216:10:216:12 | M11 | +| Finally.cs:224:13:224:38 | Before call to method WriteLine | Finally.cs:216:10:216:12 | M11 | | Finally.cs:224:13:224:38 | call to method WriteLine | Finally.cs:216:10:216:12 | M11 | | Finally.cs:224:13:224:39 | ...; | Finally.cs:216:10:216:12 | M11 | +| Finally.cs:224:13:224:39 | After ...; | Finally.cs:216:10:216:12 | M11 | | Finally.cs:224:31:224:37 | "Catch" | Finally.cs:216:10:216:12 | M11 | +| Finally.cs:227:9:229:9 | After {...} | Finally.cs:216:10:216:12 | M11 | | Finally.cs:227:9:229:9 | {...} | Finally.cs:216:10:216:12 | M11 | +| Finally.cs:228:13:228:40 | After call to method WriteLine | Finally.cs:216:10:216:12 | M11 | +| Finally.cs:228:13:228:40 | Before call to method WriteLine | Finally.cs:216:10:216:12 | M11 | | Finally.cs:228:13:228:40 | call to method WriteLine | Finally.cs:216:10:216:12 | M11 | | Finally.cs:228:13:228:41 | ...; | Finally.cs:216:10:216:12 | M11 | +| Finally.cs:228:13:228:41 | After ...; | Finally.cs:216:10:216:12 | M11 | | Finally.cs:228:31:228:39 | "Finally" | Finally.cs:216:10:216:12 | M11 | +| Finally.cs:230:9:230:33 | After call to method WriteLine | Finally.cs:216:10:216:12 | M11 | +| Finally.cs:230:9:230:33 | Before call to method WriteLine | Finally.cs:216:10:216:12 | M11 | | Finally.cs:230:9:230:33 | call to method WriteLine | Finally.cs:216:10:216:12 | M11 | | Finally.cs:230:9:230:34 | ...; | Finally.cs:216:10:216:12 | M11 | +| Finally.cs:230:9:230:34 | After ...; | Finally.cs:216:10:216:12 | M11 | | Finally.cs:230:27:230:32 | "Done" | Finally.cs:216:10:216:12 | M11 | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:233:10:233:12 | exit M12 | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:233:10:233:12 | exit M12 (abnormal) | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:233:10:233:12 | exit M12 (normal) | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:233:10:233:12 | Entry | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:233:10:233:12 | Exceptional Exit | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:233:10:233:12 | Exit | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:233:10:233:12 | Normal Exit | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:233:19:233:20 | b1 | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:233:28:233:29 | b2 | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:234:5:261:5 | After {...} | Finally.cs:233:10:233:12 | M12 | | Finally.cs:234:5:261:5 | {...} | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:235:9:259:9 | After try {...} ... | Finally.cs:233:10:233:12 | M12 | | Finally.cs:235:9:259:9 | try {...} ... | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:236:9:255:9 | After {...} | Finally.cs:233:10:233:12 | M12 | | Finally.cs:236:9:255:9 | {...} | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:237:13:253:13 | After try {...} ... | Finally.cs:233:10:233:12 | M12 | | Finally.cs:237:13:253:13 | try {...} ... | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:238:13:241:13 | After {...} | Finally.cs:233:10:233:12 | M12 | | Finally.cs:238:13:241:13 | {...} | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:239:17:240:43 | After if (...) ... | Finally.cs:233:10:233:12 | M12 | | Finally.cs:239:17:240:43 | if (...) ... | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:239:21:239:22 | After access to parameter b1 [false] | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:239:21:239:22 | After access to parameter b1 [true] | Finally.cs:233:10:233:12 | M12 | | Finally.cs:239:21:239:22 | access to parameter b1 | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:240:21:240:43 | Before throw ...; | Finally.cs:233:10:233:12 | M12 | | Finally.cs:240:21:240:43 | throw ...; | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:240:27:240:42 | After object creation of type ExceptionA | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:240:27:240:42 | Before object creation of type ExceptionA | Finally.cs:233:10:233:12 | M12 | | Finally.cs:240:27:240:42 | object creation of type ExceptionA | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:243:13:253:13 | After {...} | Finally.cs:233:10:233:12 | M12 | | Finally.cs:243:13:253:13 | {...} | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:244:17:252:17 | After try {...} ... | Finally.cs:233:10:233:12 | M12 | | Finally.cs:244:17:252:17 | try {...} ... | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:245:17:248:17 | After {...} | Finally.cs:233:10:233:12 | M12 | | Finally.cs:245:17:248:17 | {...} | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:246:21:247:47 | After if (...) ... | Finally.cs:233:10:233:12 | M12 | | Finally.cs:246:21:247:47 | if (...) ... | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:246:25:246:26 | After access to parameter b2 [false] | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:246:25:246:26 | After access to parameter b2 [true] | Finally.cs:233:10:233:12 | M12 | | Finally.cs:246:25:246:26 | access to parameter b2 | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:247:25:247:47 | Before throw ...; | Finally.cs:233:10:233:12 | M12 | | Finally.cs:247:25:247:47 | throw ...; | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:247:31:247:46 | After object creation of type ExceptionA | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:247:31:247:46 | Before object creation of type ExceptionA | Finally.cs:233:10:233:12 | M12 | | Finally.cs:247:31:247:46 | object creation of type ExceptionA | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:250:17:252:17 | After {...} | Finally.cs:233:10:233:12 | M12 | | Finally.cs:250:17:252:17 | {...} | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:251:21:251:54 | After call to method WriteLine | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:251:21:251:54 | Before call to method WriteLine | Finally.cs:233:10:233:12 | M12 | | Finally.cs:251:21:251:54 | call to method WriteLine | Finally.cs:233:10:233:12 | M12 | | Finally.cs:251:21:251:55 | ...; | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:251:21:251:55 | After ...; | Finally.cs:233:10:233:12 | M12 | | Finally.cs:251:39:251:53 | "Inner finally" | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:254:13:254:44 | After call to method WriteLine | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:254:13:254:44 | Before call to method WriteLine | Finally.cs:233:10:233:12 | M12 | | Finally.cs:254:13:254:44 | call to method WriteLine | Finally.cs:233:10:233:12 | M12 | | Finally.cs:254:13:254:45 | ...; | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:254:13:254:45 | After ...; | Finally.cs:233:10:233:12 | M12 | | Finally.cs:254:31:254:43 | "Mid finally" | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:257:9:259:9 | After {...} | Finally.cs:233:10:233:12 | M12 | | Finally.cs:257:9:259:9 | {...} | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:258:13:258:46 | After call to method WriteLine | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:258:13:258:46 | Before call to method WriteLine | Finally.cs:233:10:233:12 | M12 | | Finally.cs:258:13:258:46 | call to method WriteLine | Finally.cs:233:10:233:12 | M12 | | Finally.cs:258:13:258:47 | ...; | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:258:13:258:47 | After ...; | Finally.cs:233:10:233:12 | M12 | | Finally.cs:258:31:258:45 | "Outer finally" | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:260:9:260:33 | After call to method WriteLine | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:260:9:260:33 | Before call to method WriteLine | Finally.cs:233:10:233:12 | M12 | | Finally.cs:260:9:260:33 | call to method WriteLine | Finally.cs:233:10:233:12 | M12 | | Finally.cs:260:9:260:34 | ...; | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:260:9:260:34 | After ...; | Finally.cs:233:10:233:12 | M12 | | Finally.cs:260:27:260:32 | "Done" | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:263:10:263:12 | enter M13 | Finally.cs:263:10:263:12 | M13 | -| Finally.cs:263:10:263:12 | exit M13 | Finally.cs:263:10:263:12 | M13 | -| Finally.cs:263:10:263:12 | exit M13 (abnormal) | Finally.cs:263:10:263:12 | M13 | -| Finally.cs:263:10:263:12 | exit M13 (normal) | Finally.cs:263:10:263:12 | M13 | +| Finally.cs:263:10:263:12 | Entry | Finally.cs:263:10:263:12 | M13 | +| Finally.cs:263:10:263:12 | Exceptional Exit | Finally.cs:263:10:263:12 | M13 | +| Finally.cs:263:10:263:12 | Exit | Finally.cs:263:10:263:12 | M13 | +| Finally.cs:263:10:263:12 | Normal Exit | Finally.cs:263:10:263:12 | M13 | +| Finally.cs:263:18:263:18 | i | Finally.cs:263:10:263:12 | M13 | +| Finally.cs:264:5:274:5 | After {...} | Finally.cs:263:10:263:12 | M13 | | Finally.cs:264:5:274:5 | {...} | Finally.cs:263:10:263:12 | M13 | +| Finally.cs:265:9:273:9 | After try {...} ... | Finally.cs:263:10:263:12 | M13 | | Finally.cs:265:9:273:9 | try {...} ... | Finally.cs:263:10:263:12 | M13 | +| Finally.cs:266:9:268:9 | After {...} | Finally.cs:263:10:263:12 | M13 | | Finally.cs:266:9:268:9 | {...} | Finally.cs:263:10:263:12 | M13 | +| Finally.cs:267:13:267:34 | After call to method WriteLine | Finally.cs:263:10:263:12 | M13 | +| Finally.cs:267:13:267:34 | Before call to method WriteLine | Finally.cs:263:10:263:12 | M13 | | Finally.cs:267:13:267:34 | call to method WriteLine | Finally.cs:263:10:263:12 | M13 | | Finally.cs:267:13:267:35 | ...; | Finally.cs:263:10:263:12 | M13 | +| Finally.cs:267:13:267:35 | After ...; | Finally.cs:263:10:263:12 | M13 | | Finally.cs:267:31:267:33 | "1" | Finally.cs:263:10:263:12 | M13 | +| Finally.cs:270:9:273:9 | After {...} | Finally.cs:263:10:263:12 | M13 | | Finally.cs:270:9:273:9 | {...} | Finally.cs:263:10:263:12 | M13 | +| Finally.cs:271:13:271:34 | After call to method WriteLine | Finally.cs:263:10:263:12 | M13 | +| Finally.cs:271:13:271:34 | Before call to method WriteLine | Finally.cs:263:10:263:12 | M13 | | Finally.cs:271:13:271:34 | call to method WriteLine | Finally.cs:263:10:263:12 | M13 | | Finally.cs:271:13:271:35 | ...; | Finally.cs:263:10:263:12 | M13 | +| Finally.cs:271:13:271:35 | After ...; | Finally.cs:263:10:263:12 | M13 | | Finally.cs:271:31:271:33 | "3" | Finally.cs:263:10:263:12 | M13 | | Finally.cs:272:13:272:13 | access to parameter i | Finally.cs:263:10:263:12 | M13 | | Finally.cs:272:13:272:18 | ... += ... | Finally.cs:263:10:263:12 | M13 | +| Finally.cs:272:13:272:18 | After ... += ... | Finally.cs:263:10:263:12 | M13 | +| Finally.cs:272:13:272:18 | Before ... += ... | Finally.cs:263:10:263:12 | M13 | | Finally.cs:272:13:272:19 | ...; | Finally.cs:263:10:263:12 | M13 | +| Finally.cs:272:13:272:19 | After ...; | Finally.cs:263:10:263:12 | M13 | | Finally.cs:272:18:272:18 | 3 | Finally.cs:263:10:263:12 | M13 | +| Foreach.cs:4:7:4:13 | After call to constructor Object | Foreach.cs:4:7:4:13 | Foreach | +| Foreach.cs:4:7:4:13 | After call to method | Foreach.cs:4:7:4:13 | Foreach | +| Foreach.cs:4:7:4:13 | Before call to constructor Object | Foreach.cs:4:7:4:13 | Foreach | +| Foreach.cs:4:7:4:13 | Before call to method | Foreach.cs:4:7:4:13 | Foreach | +| Foreach.cs:4:7:4:13 | Entry | Foreach.cs:4:7:4:13 | Foreach | +| Foreach.cs:4:7:4:13 | Exit | Foreach.cs:4:7:4:13 | Foreach | +| Foreach.cs:4:7:4:13 | Normal Exit | Foreach.cs:4:7:4:13 | Foreach | | Foreach.cs:4:7:4:13 | call to constructor Object | Foreach.cs:4:7:4:13 | Foreach | | Foreach.cs:4:7:4:13 | call to method | Foreach.cs:4:7:4:13 | Foreach | -| Foreach.cs:4:7:4:13 | enter Foreach | Foreach.cs:4:7:4:13 | Foreach | -| Foreach.cs:4:7:4:13 | exit Foreach | Foreach.cs:4:7:4:13 | Foreach | -| Foreach.cs:4:7:4:13 | exit Foreach (normal) | Foreach.cs:4:7:4:13 | Foreach | | Foreach.cs:4:7:4:13 | this access | Foreach.cs:4:7:4:13 | Foreach | | Foreach.cs:4:7:4:13 | {...} | Foreach.cs:4:7:4:13 | Foreach | -| Foreach.cs:6:10:6:11 | enter M1 | Foreach.cs:6:10:6:11 | M1 | -| Foreach.cs:6:10:6:11 | exit M1 | Foreach.cs:6:10:6:11 | M1 | -| Foreach.cs:6:10:6:11 | exit M1 (normal) | Foreach.cs:6:10:6:11 | M1 | +| Foreach.cs:6:10:6:11 | Entry | Foreach.cs:6:10:6:11 | M1 | +| Foreach.cs:6:10:6:11 | Exit | Foreach.cs:6:10:6:11 | M1 | +| Foreach.cs:6:10:6:11 | Normal Exit | Foreach.cs:6:10:6:11 | M1 | +| Foreach.cs:6:22:6:25 | args | Foreach.cs:6:10:6:11 | M1 | +| Foreach.cs:7:5:10:5 | After {...} | Foreach.cs:6:10:6:11 | M1 | | Foreach.cs:7:5:10:5 | {...} | Foreach.cs:6:10:6:11 | M1 | +| Foreach.cs:8:9:9:13 | After foreach (... ... in ...) ... | Foreach.cs:6:10:6:11 | M1 | +| Foreach.cs:8:9:9:13 | [LoopHeader] foreach (... ... in ...) ... | Foreach.cs:6:10:6:11 | M1 | | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:6:10:6:11 | M1 | | Foreach.cs:8:22:8:24 | String arg | Foreach.cs:6:10:6:11 | M1 | +| Foreach.cs:8:29:8:32 | After access to parameter args [empty] | Foreach.cs:6:10:6:11 | M1 | +| Foreach.cs:8:29:8:32 | After access to parameter args [non-empty] | Foreach.cs:6:10:6:11 | M1 | | Foreach.cs:8:29:8:32 | access to parameter args | Foreach.cs:6:10:6:11 | M1 | | Foreach.cs:9:13:9:13 | ; | Foreach.cs:6:10:6:11 | M1 | -| Foreach.cs:12:10:12:11 | enter M2 | Foreach.cs:12:10:12:11 | M2 | -| Foreach.cs:12:10:12:11 | exit M2 | Foreach.cs:12:10:12:11 | M2 | -| Foreach.cs:12:10:12:11 | exit M2 (normal) | Foreach.cs:12:10:12:11 | M2 | +| Foreach.cs:12:10:12:11 | Entry | Foreach.cs:12:10:12:11 | M2 | +| Foreach.cs:12:10:12:11 | Exit | Foreach.cs:12:10:12:11 | M2 | +| Foreach.cs:12:10:12:11 | Normal Exit | Foreach.cs:12:10:12:11 | M2 | +| Foreach.cs:12:22:12:25 | args | Foreach.cs:12:10:12:11 | M2 | +| Foreach.cs:13:5:16:5 | After {...} | Foreach.cs:12:10:12:11 | M2 | | Foreach.cs:13:5:16:5 | {...} | Foreach.cs:12:10:12:11 | M2 | +| Foreach.cs:14:9:15:13 | After foreach (... ... in ...) ... | Foreach.cs:12:10:12:11 | M2 | +| Foreach.cs:14:9:15:13 | [LoopHeader] foreach (... ... in ...) ... | Foreach.cs:12:10:12:11 | M2 | | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:12:10:12:11 | M2 | | Foreach.cs:14:22:14:22 | String _ | Foreach.cs:12:10:12:11 | M2 | +| Foreach.cs:14:27:14:30 | After access to parameter args [empty] | Foreach.cs:12:10:12:11 | M2 | +| Foreach.cs:14:27:14:30 | After access to parameter args [non-empty] | Foreach.cs:12:10:12:11 | M2 | | Foreach.cs:14:27:14:30 | access to parameter args | Foreach.cs:12:10:12:11 | M2 | | Foreach.cs:15:13:15:13 | ; | Foreach.cs:12:10:12:11 | M2 | -| Foreach.cs:18:10:18:11 | enter M3 | Foreach.cs:18:10:18:11 | M3 | -| Foreach.cs:18:10:18:11 | exit M3 | Foreach.cs:18:10:18:11 | M3 | -| Foreach.cs:18:10:18:11 | exit M3 (normal) | Foreach.cs:18:10:18:11 | M3 | +| Foreach.cs:18:10:18:11 | Entry | Foreach.cs:18:10:18:11 | M3 | +| Foreach.cs:18:10:18:11 | Exit | Foreach.cs:18:10:18:11 | M3 | +| Foreach.cs:18:10:18:11 | Normal Exit | Foreach.cs:18:10:18:11 | M3 | +| Foreach.cs:18:33:18:33 | e | Foreach.cs:18:10:18:11 | M3 | +| Foreach.cs:19:5:22:5 | After {...} | Foreach.cs:18:10:18:11 | M3 | | Foreach.cs:19:5:22:5 | {...} | Foreach.cs:18:10:18:11 | M3 | +| Foreach.cs:20:9:21:11 | After foreach (... ... in ...) ... | Foreach.cs:18:10:18:11 | M3 | +| Foreach.cs:20:9:21:11 | [LoopHeader] foreach (... ... in ...) ... | Foreach.cs:18:10:18:11 | M3 | | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:18:10:18:11 | M3 | | Foreach.cs:20:22:20:22 | String x | Foreach.cs:18:10:18:11 | M3 | +| Foreach.cs:20:27:20:27 | After access to parameter e [non-null] | Foreach.cs:18:10:18:11 | M3 | +| Foreach.cs:20:27:20:27 | After access to parameter e [null] | Foreach.cs:18:10:18:11 | M3 | | Foreach.cs:20:27:20:27 | access to parameter e | Foreach.cs:18:10:18:11 | M3 | +| Foreach.cs:20:27:20:38 | After call to method ToArray [non-null] | Foreach.cs:18:10:18:11 | M3 | +| Foreach.cs:20:27:20:38 | After call to method ToArray [null] | Foreach.cs:18:10:18:11 | M3 | +| Foreach.cs:20:27:20:38 | Before call to method ToArray | Foreach.cs:18:10:18:11 | M3 | | Foreach.cs:20:27:20:38 | call to method ToArray | Foreach.cs:18:10:18:11 | M3 | | Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:18:10:18:11 | M3 | +| Foreach.cs:20:27:20:68 | After ... ?? ... [empty] | Foreach.cs:18:10:18:11 | M3 | +| Foreach.cs:20:27:20:68 | After ... ?? ... [non-empty] | Foreach.cs:18:10:18:11 | M3 | +| Foreach.cs:20:43:20:68 | After call to method Empty [empty] | Foreach.cs:18:10:18:11 | M3 | +| Foreach.cs:20:43:20:68 | After call to method Empty [non-empty] | Foreach.cs:18:10:18:11 | M3 | +| Foreach.cs:20:43:20:68 | Before call to method Empty | Foreach.cs:18:10:18:11 | M3 | | Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:18:10:18:11 | M3 | | Foreach.cs:21:11:21:11 | ; | Foreach.cs:18:10:18:11 | M3 | -| Foreach.cs:24:10:24:11 | enter M4 | Foreach.cs:24:10:24:11 | M4 | -| Foreach.cs:24:10:24:11 | exit M4 | Foreach.cs:24:10:24:11 | M4 | -| Foreach.cs:24:10:24:11 | exit M4 (normal) | Foreach.cs:24:10:24:11 | M4 | +| Foreach.cs:24:10:24:11 | Entry | Foreach.cs:24:10:24:11 | M4 | +| Foreach.cs:24:10:24:11 | Exit | Foreach.cs:24:10:24:11 | M4 | +| Foreach.cs:24:10:24:11 | Normal Exit | Foreach.cs:24:10:24:11 | M4 | +| Foreach.cs:24:40:24:43 | args | Foreach.cs:24:10:24:11 | M4 | +| Foreach.cs:25:5:28:5 | After {...} | Foreach.cs:24:10:24:11 | M4 | | Foreach.cs:25:5:28:5 | {...} | Foreach.cs:24:10:24:11 | M4 | +| Foreach.cs:26:9:27:11 | After foreach (... ... in ...) ... | Foreach.cs:24:10:24:11 | M4 | +| Foreach.cs:26:9:27:11 | [LoopHeader] foreach (... ... in ...) ... | Foreach.cs:24:10:24:11 | M4 | | Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | Foreach.cs:24:10:24:11 | M4 | | Foreach.cs:26:18:26:31 | (..., ...) | Foreach.cs:24:10:24:11 | M4 | +| Foreach.cs:26:18:26:31 | After (..., ...) | Foreach.cs:24:10:24:11 | M4 | +| Foreach.cs:26:18:26:31 | Before (..., ...) | Foreach.cs:24:10:24:11 | M4 | | Foreach.cs:26:23:26:23 | String x | Foreach.cs:24:10:24:11 | M4 | | Foreach.cs:26:30:26:30 | Int32 y | Foreach.cs:24:10:24:11 | M4 | +| Foreach.cs:26:36:26:39 | After access to parameter args [empty] | Foreach.cs:24:10:24:11 | M4 | +| Foreach.cs:26:36:26:39 | After access to parameter args [non-empty] | Foreach.cs:24:10:24:11 | M4 | | Foreach.cs:26:36:26:39 | access to parameter args | Foreach.cs:24:10:24:11 | M4 | | Foreach.cs:27:11:27:11 | ; | Foreach.cs:24:10:24:11 | M4 | -| Foreach.cs:30:10:30:11 | enter M5 | Foreach.cs:30:10:30:11 | M5 | -| Foreach.cs:30:10:30:11 | exit M5 | Foreach.cs:30:10:30:11 | M5 | -| Foreach.cs:30:10:30:11 | exit M5 (normal) | Foreach.cs:30:10:30:11 | M5 | +| Foreach.cs:30:10:30:11 | Entry | Foreach.cs:30:10:30:11 | M5 | +| Foreach.cs:30:10:30:11 | Exit | Foreach.cs:30:10:30:11 | M5 | +| Foreach.cs:30:10:30:11 | Normal Exit | Foreach.cs:30:10:30:11 | M5 | +| Foreach.cs:30:40:30:43 | args | Foreach.cs:30:10:30:11 | M5 | +| Foreach.cs:31:5:34:5 | After {...} | Foreach.cs:30:10:30:11 | M5 | | Foreach.cs:31:5:34:5 | {...} | Foreach.cs:30:10:30:11 | M5 | +| Foreach.cs:32:9:33:11 | After foreach (... ... in ...) ... | Foreach.cs:30:10:30:11 | M5 | +| Foreach.cs:32:9:33:11 | [LoopHeader] foreach (... ... in ...) ... | Foreach.cs:30:10:30:11 | M5 | | Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | Foreach.cs:30:10:30:11 | M5 | | Foreach.cs:32:18:32:27 | (..., ...) | Foreach.cs:30:10:30:11 | M5 | +| Foreach.cs:32:18:32:27 | After (..., ...) | Foreach.cs:30:10:30:11 | M5 | +| Foreach.cs:32:18:32:27 | Before (..., ...) | Foreach.cs:30:10:30:11 | M5 | | Foreach.cs:32:23:32:23 | String x | Foreach.cs:30:10:30:11 | M5 | | Foreach.cs:32:26:32:26 | Int32 y | Foreach.cs:30:10:30:11 | M5 | +| Foreach.cs:32:32:32:35 | After access to parameter args [empty] | Foreach.cs:30:10:30:11 | M5 | +| Foreach.cs:32:32:32:35 | After access to parameter args [non-empty] | Foreach.cs:30:10:30:11 | M5 | | Foreach.cs:32:32:32:35 | access to parameter args | Foreach.cs:30:10:30:11 | M5 | | Foreach.cs:33:11:33:11 | ; | Foreach.cs:30:10:30:11 | M5 | -| Foreach.cs:36:10:36:11 | enter M6 | Foreach.cs:36:10:36:11 | M6 | -| Foreach.cs:36:10:36:11 | exit M6 | Foreach.cs:36:10:36:11 | M6 | -| Foreach.cs:36:10:36:11 | exit M6 (normal) | Foreach.cs:36:10:36:11 | M6 | +| Foreach.cs:36:10:36:11 | Entry | Foreach.cs:36:10:36:11 | M6 | +| Foreach.cs:36:10:36:11 | Exit | Foreach.cs:36:10:36:11 | M6 | +| Foreach.cs:36:10:36:11 | Normal Exit | Foreach.cs:36:10:36:11 | M6 | +| Foreach.cs:36:40:36:43 | args | Foreach.cs:36:10:36:11 | M6 | +| Foreach.cs:37:5:40:5 | After {...} | Foreach.cs:36:10:36:11 | M6 | | Foreach.cs:37:5:40:5 | {...} | Foreach.cs:36:10:36:11 | M6 | +| Foreach.cs:38:9:39:11 | After foreach (... ... in ...) ... | Foreach.cs:36:10:36:11 | M6 | +| Foreach.cs:38:9:39:11 | [LoopHeader] foreach (... ... in ...) ... | Foreach.cs:36:10:36:11 | M6 | | Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | Foreach.cs:36:10:36:11 | M6 | | Foreach.cs:38:18:38:34 | (..., ...) | Foreach.cs:36:10:36:11 | M6 | +| Foreach.cs:38:18:38:34 | After (..., ...) | Foreach.cs:36:10:36:11 | M6 | +| Foreach.cs:38:18:38:34 | Before (..., ...) | Foreach.cs:36:10:36:11 | M6 | | Foreach.cs:38:26:38:26 | String x | Foreach.cs:36:10:36:11 | M6 | | Foreach.cs:38:33:38:33 | Int32 y | Foreach.cs:36:10:36:11 | M6 | +| Foreach.cs:38:39:38:42 | After access to parameter args [empty] | Foreach.cs:36:10:36:11 | M6 | +| Foreach.cs:38:39:38:42 | After access to parameter args [non-empty] | Foreach.cs:36:10:36:11 | M6 | | Foreach.cs:38:39:38:42 | access to parameter args | Foreach.cs:36:10:36:11 | M6 | | Foreach.cs:39:11:39:11 | ; | Foreach.cs:36:10:36:11 | M6 | -| Initializers.cs:3:7:3:18 | enter | Initializers.cs:3:7:3:18 | | -| Initializers.cs:3:7:3:18 | enter Initializers | Initializers.cs:3:7:3:18 | Initializers | -| Initializers.cs:3:7:3:18 | exit | Initializers.cs:3:7:3:18 | | -| Initializers.cs:3:7:3:18 | exit (normal) | Initializers.cs:3:7:3:18 | | -| Initializers.cs:3:7:3:18 | exit Initializers | Initializers.cs:3:7:3:18 | Initializers | -| Initializers.cs:3:7:3:18 | exit Initializers (normal) | Initializers.cs:3:7:3:18 | Initializers | +| Initializers.cs:3:7:3:18 | Entry | Initializers.cs:3:7:3:18 | | +| Initializers.cs:3:7:3:18 | Entry | Initializers.cs:3:7:3:18 | Initializers | +| Initializers.cs:3:7:3:18 | Exit | Initializers.cs:3:7:3:18 | | +| Initializers.cs:3:7:3:18 | Exit | Initializers.cs:3:7:3:18 | Initializers | +| Initializers.cs:3:7:3:18 | Normal Exit | Initializers.cs:3:7:3:18 | | +| Initializers.cs:3:7:3:18 | Normal Exit | Initializers.cs:3:7:3:18 | Initializers | | Initializers.cs:3:7:3:18 | {...} | Initializers.cs:3:7:3:18 | Initializers | +| Initializers.cs:5:9:5:9 | After access to field F | Initializers.cs:3:7:3:18 | | +| Initializers.cs:5:9:5:9 | Before access to field F | Initializers.cs:3:7:3:18 | | | Initializers.cs:5:9:5:9 | access to field F | Initializers.cs:3:7:3:18 | | | Initializers.cs:5:9:5:9 | this access | Initializers.cs:3:7:3:18 | | | Initializers.cs:5:9:5:17 | ... = ... | Initializers.cs:3:7:3:18 | | +| Initializers.cs:5:9:5:17 | After ... = ... | Initializers.cs:3:7:3:18 | | +| Initializers.cs:5:9:5:17 | Before ... = ... | Initializers.cs:3:7:3:18 | | | Initializers.cs:5:13:5:13 | access to field H | Initializers.cs:3:7:3:18 | | | Initializers.cs:5:13:5:17 | ... + ... | Initializers.cs:3:7:3:18 | | +| Initializers.cs:5:13:5:17 | After ... + ... | Initializers.cs:3:7:3:18 | | +| Initializers.cs:5:13:5:17 | Before ... + ... | Initializers.cs:3:7:3:18 | | | Initializers.cs:5:17:5:17 | 1 | Initializers.cs:3:7:3:18 | | +| Initializers.cs:6:9:6:9 | After access to property G | Initializers.cs:3:7:3:18 | | +| Initializers.cs:6:9:6:9 | Before access to property G | Initializers.cs:3:7:3:18 | | | Initializers.cs:6:9:6:9 | access to property G | Initializers.cs:3:7:3:18 | | | Initializers.cs:6:9:6:9 | this access | Initializers.cs:3:7:3:18 | | | Initializers.cs:6:25:6:31 | ... = ... | Initializers.cs:3:7:3:18 | | +| Initializers.cs:6:25:6:31 | After ... = ... | Initializers.cs:3:7:3:18 | | +| Initializers.cs:6:25:6:31 | Before ... = ... | Initializers.cs:3:7:3:18 | | | Initializers.cs:6:27:6:27 | access to field H | Initializers.cs:3:7:3:18 | | | Initializers.cs:6:27:6:31 | ... + ... | Initializers.cs:3:7:3:18 | | +| Initializers.cs:6:27:6:31 | After ... + ... | Initializers.cs:3:7:3:18 | | +| Initializers.cs:6:27:6:31 | Before ... + ... | Initializers.cs:3:7:3:18 | | | Initializers.cs:6:31:6:31 | 2 | Initializers.cs:3:7:3:18 | | +| Initializers.cs:8:5:8:16 | After call to constructor Object | Initializers.cs:8:5:8:16 | Initializers | +| Initializers.cs:8:5:8:16 | After call to method | Initializers.cs:8:5:8:16 | Initializers | +| Initializers.cs:8:5:8:16 | Before call to constructor Object | Initializers.cs:8:5:8:16 | Initializers | +| Initializers.cs:8:5:8:16 | Before call to method | Initializers.cs:8:5:8:16 | Initializers | +| Initializers.cs:8:5:8:16 | Entry | Initializers.cs:8:5:8:16 | Initializers | +| Initializers.cs:8:5:8:16 | Exit | Initializers.cs:8:5:8:16 | Initializers | +| Initializers.cs:8:5:8:16 | Normal Exit | Initializers.cs:8:5:8:16 | Initializers | | Initializers.cs:8:5:8:16 | call to constructor Object | Initializers.cs:8:5:8:16 | Initializers | | Initializers.cs:8:5:8:16 | call to method | Initializers.cs:8:5:8:16 | Initializers | -| Initializers.cs:8:5:8:16 | enter Initializers | Initializers.cs:8:5:8:16 | Initializers | -| Initializers.cs:8:5:8:16 | exit Initializers | Initializers.cs:8:5:8:16 | Initializers | -| Initializers.cs:8:5:8:16 | exit Initializers (normal) | Initializers.cs:8:5:8:16 | Initializers | | Initializers.cs:8:5:8:16 | this access | Initializers.cs:8:5:8:16 | Initializers | | Initializers.cs:8:20:8:22 | {...} | Initializers.cs:8:5:8:16 | Initializers | +| Initializers.cs:10:5:10:16 | After call to constructor Object | Initializers.cs:10:5:10:16 | Initializers | +| Initializers.cs:10:5:10:16 | After call to method | Initializers.cs:10:5:10:16 | Initializers | +| Initializers.cs:10:5:10:16 | Before call to constructor Object | Initializers.cs:10:5:10:16 | Initializers | +| Initializers.cs:10:5:10:16 | Before call to method | Initializers.cs:10:5:10:16 | Initializers | +| Initializers.cs:10:5:10:16 | Entry | Initializers.cs:10:5:10:16 | Initializers | +| Initializers.cs:10:5:10:16 | Exit | Initializers.cs:10:5:10:16 | Initializers | +| Initializers.cs:10:5:10:16 | Normal Exit | Initializers.cs:10:5:10:16 | Initializers | | Initializers.cs:10:5:10:16 | call to constructor Object | Initializers.cs:10:5:10:16 | Initializers | | Initializers.cs:10:5:10:16 | call to method | Initializers.cs:10:5:10:16 | Initializers | -| Initializers.cs:10:5:10:16 | enter Initializers | Initializers.cs:10:5:10:16 | Initializers | -| Initializers.cs:10:5:10:16 | exit Initializers | Initializers.cs:10:5:10:16 | Initializers | -| Initializers.cs:10:5:10:16 | exit Initializers (normal) | Initializers.cs:10:5:10:16 | Initializers | | Initializers.cs:10:5:10:16 | this access | Initializers.cs:10:5:10:16 | Initializers | +| Initializers.cs:10:25:10:25 | s | Initializers.cs:10:5:10:16 | Initializers | | Initializers.cs:10:28:10:30 | {...} | Initializers.cs:10:5:10:16 | Initializers | -| Initializers.cs:12:10:12:10 | enter M | Initializers.cs:12:10:12:10 | M | -| Initializers.cs:12:10:12:10 | exit M | Initializers.cs:12:10:12:10 | M | -| Initializers.cs:12:10:12:10 | exit M (normal) | Initializers.cs:12:10:12:10 | M | +| Initializers.cs:12:10:12:10 | Entry | Initializers.cs:12:10:12:10 | M | +| Initializers.cs:12:10:12:10 | Exit | Initializers.cs:12:10:12:10 | M | +| Initializers.cs:12:10:12:10 | Normal Exit | Initializers.cs:12:10:12:10 | M | +| Initializers.cs:13:5:16:5 | After {...} | Initializers.cs:12:10:12:10 | M | | Initializers.cs:13:5:16:5 | {...} | Initializers.cs:12:10:12:10 | M | | Initializers.cs:14:9:14:54 | ... ...; | Initializers.cs:12:10:12:10 | M | +| Initializers.cs:14:9:14:54 | After ... ...; | Initializers.cs:12:10:12:10 | M | +| Initializers.cs:14:13:14:13 | access to local variable i | Initializers.cs:12:10:12:10 | M | +| Initializers.cs:14:13:14:53 | After Initializers i = ... | Initializers.cs:12:10:12:10 | M | +| Initializers.cs:14:13:14:53 | Before Initializers i = ... | Initializers.cs:12:10:12:10 | M | | Initializers.cs:14:13:14:53 | Initializers i = ... | Initializers.cs:12:10:12:10 | M | +| Initializers.cs:14:17:14:53 | After object creation of type Initializers | Initializers.cs:12:10:12:10 | M | +| Initializers.cs:14:17:14:53 | Before object creation of type Initializers | Initializers.cs:12:10:12:10 | M | | Initializers.cs:14:17:14:53 | object creation of type Initializers | Initializers.cs:12:10:12:10 | M | | Initializers.cs:14:34:14:35 | "" | Initializers.cs:12:10:12:10 | M | +| Initializers.cs:14:38:14:53 | After { ..., ... } | Initializers.cs:12:10:12:10 | M | +| Initializers.cs:14:38:14:53 | Before { ..., ... } | Initializers.cs:12:10:12:10 | M | | Initializers.cs:14:38:14:53 | { ..., ... } | Initializers.cs:12:10:12:10 | M | | Initializers.cs:14:40:14:40 | access to field F | Initializers.cs:12:10:12:10 | M | | Initializers.cs:14:40:14:44 | ... = ... | Initializers.cs:12:10:12:10 | M | +| Initializers.cs:14:40:14:44 | After ... = ... | Initializers.cs:12:10:12:10 | M | +| Initializers.cs:14:40:14:44 | Before ... = ... | Initializers.cs:12:10:12:10 | M | | Initializers.cs:14:44:14:44 | 0 | Initializers.cs:12:10:12:10 | M | +| Initializers.cs:14:47:14:47 | After access to property G | Initializers.cs:12:10:12:10 | M | +| Initializers.cs:14:47:14:47 | Before access to property G | Initializers.cs:12:10:12:10 | M | | Initializers.cs:14:47:14:47 | access to property G | Initializers.cs:12:10:12:10 | M | | Initializers.cs:14:47:14:51 | ... = ... | Initializers.cs:12:10:12:10 | M | +| Initializers.cs:14:47:14:51 | After ... = ... | Initializers.cs:12:10:12:10 | M | +| Initializers.cs:14:47:14:51 | Before ... = ... | Initializers.cs:12:10:12:10 | M | | Initializers.cs:14:51:14:51 | 1 | Initializers.cs:12:10:12:10 | M | | Initializers.cs:15:9:15:64 | ... ...; | Initializers.cs:12:10:12:10 | M | +| Initializers.cs:15:9:15:64 | After ... ...; | Initializers.cs:12:10:12:10 | M | +| Initializers.cs:15:13:15:14 | access to local variable iz | Initializers.cs:12:10:12:10 | M | +| Initializers.cs:15:13:15:63 | After Initializers[] iz = ... | Initializers.cs:12:10:12:10 | M | +| Initializers.cs:15:13:15:63 | Before Initializers[] iz = ... | Initializers.cs:12:10:12:10 | M | | Initializers.cs:15:13:15:63 | Initializers[] iz = ... | Initializers.cs:12:10:12:10 | M | | Initializers.cs:15:18:15:63 | 2 | Initializers.cs:12:10:12:10 | M | +| Initializers.cs:15:18:15:63 | After array creation of type Initializers[] | Initializers.cs:12:10:12:10 | M | +| Initializers.cs:15:18:15:63 | Before array creation of type Initializers[] | Initializers.cs:12:10:12:10 | M | | Initializers.cs:15:18:15:63 | array creation of type Initializers[] | Initializers.cs:12:10:12:10 | M | +| Initializers.cs:15:37:15:63 | After { ..., ... } | Initializers.cs:12:10:12:10 | M | +| Initializers.cs:15:37:15:63 | Before { ..., ... } | Initializers.cs:12:10:12:10 | M | | Initializers.cs:15:37:15:63 | { ..., ... } | Initializers.cs:12:10:12:10 | M | | Initializers.cs:15:39:15:39 | access to local variable i | Initializers.cs:12:10:12:10 | M | +| Initializers.cs:15:42:15:61 | After object creation of type Initializers | Initializers.cs:12:10:12:10 | M | +| Initializers.cs:15:42:15:61 | Before object creation of type Initializers | Initializers.cs:12:10:12:10 | M | | Initializers.cs:15:42:15:61 | object creation of type Initializers | Initializers.cs:12:10:12:10 | M | | Initializers.cs:15:59:15:60 | "" | Initializers.cs:12:10:12:10 | M | +| Initializers.cs:18:16:18:16 | access to field H | Initializers.cs:3:7:3:18 | Initializers | +| Initializers.cs:18:16:18:20 | ... = ... | Initializers.cs:3:7:3:18 | Initializers | +| Initializers.cs:18:16:18:20 | After ... = ... | Initializers.cs:3:7:3:18 | Initializers | +| Initializers.cs:18:16:18:20 | Before ... = ... | Initializers.cs:3:7:3:18 | Initializers | +| Initializers.cs:18:20:18:20 | 1 | Initializers.cs:3:7:3:18 | Initializers | +| Initializers.cs:20:11:20:23 | After call to constructor Object | Initializers.cs:20:11:20:23 | NoConstructor | +| Initializers.cs:20:11:20:23 | After call to method | Initializers.cs:20:11:20:23 | NoConstructor | +| Initializers.cs:20:11:20:23 | Before call to constructor Object | Initializers.cs:20:11:20:23 | NoConstructor | +| Initializers.cs:20:11:20:23 | Before call to method | Initializers.cs:20:11:20:23 | NoConstructor | +| Initializers.cs:20:11:20:23 | Entry | Initializers.cs:20:11:20:23 | | +| Initializers.cs:20:11:20:23 | Entry | Initializers.cs:20:11:20:23 | NoConstructor | +| Initializers.cs:20:11:20:23 | Exit | Initializers.cs:20:11:20:23 | | +| Initializers.cs:20:11:20:23 | Exit | Initializers.cs:20:11:20:23 | NoConstructor | +| Initializers.cs:20:11:20:23 | Normal Exit | Initializers.cs:20:11:20:23 | | +| Initializers.cs:20:11:20:23 | Normal Exit | Initializers.cs:20:11:20:23 | NoConstructor | | Initializers.cs:20:11:20:23 | call to constructor Object | Initializers.cs:20:11:20:23 | NoConstructor | | Initializers.cs:20:11:20:23 | call to method | Initializers.cs:20:11:20:23 | NoConstructor | -| Initializers.cs:20:11:20:23 | enter | Initializers.cs:20:11:20:23 | | -| Initializers.cs:20:11:20:23 | enter NoConstructor | Initializers.cs:20:11:20:23 | NoConstructor | -| Initializers.cs:20:11:20:23 | exit | Initializers.cs:20:11:20:23 | | -| Initializers.cs:20:11:20:23 | exit (normal) | Initializers.cs:20:11:20:23 | | -| Initializers.cs:20:11:20:23 | exit NoConstructor | Initializers.cs:20:11:20:23 | NoConstructor | -| Initializers.cs:20:11:20:23 | exit NoConstructor (normal) | Initializers.cs:20:11:20:23 | NoConstructor | | Initializers.cs:20:11:20:23 | this access | Initializers.cs:20:11:20:23 | NoConstructor | | Initializers.cs:20:11:20:23 | {...} | Initializers.cs:20:11:20:23 | NoConstructor | +| Initializers.cs:22:23:22:23 | After access to field F | Initializers.cs:20:11:20:23 | | +| Initializers.cs:22:23:22:23 | Before access to field F | Initializers.cs:20:11:20:23 | | | Initializers.cs:22:23:22:23 | access to field F | Initializers.cs:20:11:20:23 | | | Initializers.cs:22:23:22:23 | this access | Initializers.cs:20:11:20:23 | | | Initializers.cs:22:23:22:27 | ... = ... | Initializers.cs:20:11:20:23 | | +| Initializers.cs:22:23:22:27 | After ... = ... | Initializers.cs:20:11:20:23 | | +| Initializers.cs:22:23:22:27 | Before ... = ... | Initializers.cs:20:11:20:23 | | | Initializers.cs:22:27:22:27 | 0 | Initializers.cs:20:11:20:23 | | +| Initializers.cs:23:23:23:23 | After access to field G | Initializers.cs:20:11:20:23 | | +| Initializers.cs:23:23:23:23 | Before access to field G | Initializers.cs:20:11:20:23 | | | Initializers.cs:23:23:23:23 | access to field G | Initializers.cs:20:11:20:23 | | | Initializers.cs:23:23:23:23 | this access | Initializers.cs:20:11:20:23 | | | Initializers.cs:23:23:23:27 | ... = ... | Initializers.cs:20:11:20:23 | | +| Initializers.cs:23:23:23:27 | After ... = ... | Initializers.cs:20:11:20:23 | | +| Initializers.cs:23:23:23:27 | Before ... = ... | Initializers.cs:20:11:20:23 | | | Initializers.cs:23:27:23:27 | 1 | Initializers.cs:20:11:20:23 | | -| Initializers.cs:26:11:26:13 | enter | Initializers.cs:26:11:26:13 | | -| Initializers.cs:26:11:26:13 | exit | Initializers.cs:26:11:26:13 | | -| Initializers.cs:26:11:26:13 | exit (normal) | Initializers.cs:26:11:26:13 | | +| Initializers.cs:26:11:26:13 | Entry | Initializers.cs:26:11:26:13 | | +| Initializers.cs:26:11:26:13 | Exit | Initializers.cs:26:11:26:13 | | +| Initializers.cs:26:11:26:13 | Normal Exit | Initializers.cs:26:11:26:13 | | +| Initializers.cs:28:13:28:13 | After access to field H | Initializers.cs:26:11:26:13 | | +| Initializers.cs:28:13:28:13 | Before access to field H | Initializers.cs:26:11:26:13 | | | Initializers.cs:28:13:28:13 | access to field H | Initializers.cs:26:11:26:13 | | | Initializers.cs:28:13:28:13 | this access | Initializers.cs:26:11:26:13 | | | Initializers.cs:28:13:28:17 | ... = ... | Initializers.cs:26:11:26:13 | | +| Initializers.cs:28:13:28:17 | After ... = ... | Initializers.cs:26:11:26:13 | | +| Initializers.cs:28:13:28:17 | Before ... = ... | Initializers.cs:26:11:26:13 | | | Initializers.cs:28:17:28:17 | 2 | Initializers.cs:26:11:26:13 | | +| Initializers.cs:31:9:31:11 | After call to method | Initializers.cs:31:9:31:11 | Sub | +| Initializers.cs:31:9:31:11 | Before call to method | Initializers.cs:31:9:31:11 | Sub | +| Initializers.cs:31:9:31:11 | Entry | Initializers.cs:31:9:31:11 | Sub | +| Initializers.cs:31:9:31:11 | Exit | Initializers.cs:31:9:31:11 | Sub | +| Initializers.cs:31:9:31:11 | Normal Exit | Initializers.cs:31:9:31:11 | Sub | | Initializers.cs:31:9:31:11 | call to method | Initializers.cs:31:9:31:11 | Sub | -| Initializers.cs:31:9:31:11 | enter Sub | Initializers.cs:31:9:31:11 | Sub | -| Initializers.cs:31:9:31:11 | exit Sub | Initializers.cs:31:9:31:11 | Sub | -| Initializers.cs:31:9:31:11 | exit Sub (normal) | Initializers.cs:31:9:31:11 | Sub | | Initializers.cs:31:9:31:11 | this access | Initializers.cs:31:9:31:11 | Sub | +| Initializers.cs:31:17:31:20 | After call to constructor NoConstructor | Initializers.cs:31:9:31:11 | Sub | +| Initializers.cs:31:17:31:20 | Before call to constructor NoConstructor | Initializers.cs:31:9:31:11 | Sub | | Initializers.cs:31:17:31:20 | call to constructor NoConstructor | Initializers.cs:31:9:31:11 | Sub | +| Initializers.cs:31:24:31:33 | After {...} | Initializers.cs:31:9:31:11 | Sub | | Initializers.cs:31:24:31:33 | {...} | Initializers.cs:31:9:31:11 | Sub | +| Initializers.cs:31:26:31:26 | After access to field I | Initializers.cs:31:9:31:11 | Sub | +| Initializers.cs:31:26:31:26 | Before access to field I | Initializers.cs:31:9:31:11 | Sub | | Initializers.cs:31:26:31:26 | access to field I | Initializers.cs:31:9:31:11 | Sub | | Initializers.cs:31:26:31:26 | this access | Initializers.cs:31:9:31:11 | Sub | | Initializers.cs:31:26:31:30 | ... = ... | Initializers.cs:31:9:31:11 | Sub | +| Initializers.cs:31:26:31:30 | After ... = ... | Initializers.cs:31:9:31:11 | Sub | +| Initializers.cs:31:26:31:30 | Before ... = ... | Initializers.cs:31:9:31:11 | Sub | | Initializers.cs:31:26:31:31 | ...; | Initializers.cs:31:9:31:11 | Sub | +| Initializers.cs:31:26:31:31 | After ...; | Initializers.cs:31:9:31:11 | Sub | | Initializers.cs:31:30:31:30 | 3 | Initializers.cs:31:9:31:11 | Sub | -| Initializers.cs:33:9:33:11 | enter Sub | Initializers.cs:33:9:33:11 | Sub | -| Initializers.cs:33:9:33:11 | exit Sub | Initializers.cs:33:9:33:11 | Sub | -| Initializers.cs:33:9:33:11 | exit Sub (normal) | Initializers.cs:33:9:33:11 | Sub | +| Initializers.cs:33:9:33:11 | Entry | Initializers.cs:33:9:33:11 | Sub | +| Initializers.cs:33:9:33:11 | Exit | Initializers.cs:33:9:33:11 | Sub | +| Initializers.cs:33:9:33:11 | Normal Exit | Initializers.cs:33:9:33:11 | Sub | +| Initializers.cs:33:17:33:17 | i | Initializers.cs:33:9:33:11 | Sub | +| Initializers.cs:33:22:33:25 | After call to constructor Sub | Initializers.cs:33:9:33:11 | Sub | +| Initializers.cs:33:22:33:25 | Before call to constructor Sub | Initializers.cs:33:9:33:11 | Sub | | Initializers.cs:33:22:33:25 | call to constructor Sub | Initializers.cs:33:9:33:11 | Sub | +| Initializers.cs:33:29:33:38 | After {...} | Initializers.cs:33:9:33:11 | Sub | | Initializers.cs:33:29:33:38 | {...} | Initializers.cs:33:9:33:11 | Sub | +| Initializers.cs:33:31:33:31 | After access to field I | Initializers.cs:33:9:33:11 | Sub | +| Initializers.cs:33:31:33:31 | Before access to field I | Initializers.cs:33:9:33:11 | Sub | | Initializers.cs:33:31:33:31 | access to field I | Initializers.cs:33:9:33:11 | Sub | | Initializers.cs:33:31:33:31 | this access | Initializers.cs:33:9:33:11 | Sub | | Initializers.cs:33:31:33:35 | ... = ... | Initializers.cs:33:9:33:11 | Sub | +| Initializers.cs:33:31:33:35 | After ... = ... | Initializers.cs:33:9:33:11 | Sub | +| Initializers.cs:33:31:33:35 | Before ... = ... | Initializers.cs:33:9:33:11 | Sub | | Initializers.cs:33:31:33:36 | ...; | Initializers.cs:33:9:33:11 | Sub | +| Initializers.cs:33:31:33:36 | After ...; | Initializers.cs:33:9:33:11 | Sub | | Initializers.cs:33:35:33:35 | access to parameter i | Initializers.cs:33:9:33:11 | Sub | +| Initializers.cs:35:9:35:11 | After call to constructor NoConstructor | Initializers.cs:35:9:35:11 | Sub | +| Initializers.cs:35:9:35:11 | After call to method | Initializers.cs:35:9:35:11 | Sub | +| Initializers.cs:35:9:35:11 | Before call to constructor NoConstructor | Initializers.cs:35:9:35:11 | Sub | +| Initializers.cs:35:9:35:11 | Before call to method | Initializers.cs:35:9:35:11 | Sub | +| Initializers.cs:35:9:35:11 | Entry | Initializers.cs:35:9:35:11 | Sub | +| Initializers.cs:35:9:35:11 | Exit | Initializers.cs:35:9:35:11 | Sub | +| Initializers.cs:35:9:35:11 | Normal Exit | Initializers.cs:35:9:35:11 | Sub | | Initializers.cs:35:9:35:11 | call to constructor NoConstructor | Initializers.cs:35:9:35:11 | Sub | | Initializers.cs:35:9:35:11 | call to method | Initializers.cs:35:9:35:11 | Sub | -| Initializers.cs:35:9:35:11 | enter Sub | Initializers.cs:35:9:35:11 | Sub | -| Initializers.cs:35:9:35:11 | exit Sub | Initializers.cs:35:9:35:11 | Sub | -| Initializers.cs:35:9:35:11 | exit Sub (normal) | Initializers.cs:35:9:35:11 | Sub | | Initializers.cs:35:9:35:11 | this access | Initializers.cs:35:9:35:11 | Sub | +| Initializers.cs:35:17:35:17 | i | Initializers.cs:35:9:35:11 | Sub | +| Initializers.cs:35:24:35:24 | j | Initializers.cs:35:9:35:11 | Sub | +| Initializers.cs:35:27:35:40 | After {...} | Initializers.cs:35:9:35:11 | Sub | | Initializers.cs:35:27:35:40 | {...} | Initializers.cs:35:9:35:11 | Sub | +| Initializers.cs:35:29:35:29 | After access to field I | Initializers.cs:35:9:35:11 | Sub | +| Initializers.cs:35:29:35:29 | Before access to field I | Initializers.cs:35:9:35:11 | Sub | | Initializers.cs:35:29:35:29 | access to field I | Initializers.cs:35:9:35:11 | Sub | | Initializers.cs:35:29:35:29 | this access | Initializers.cs:35:9:35:11 | Sub | | Initializers.cs:35:29:35:37 | ... = ... | Initializers.cs:35:9:35:11 | Sub | +| Initializers.cs:35:29:35:37 | After ... = ... | Initializers.cs:35:9:35:11 | Sub | +| Initializers.cs:35:29:35:37 | Before ... = ... | Initializers.cs:35:9:35:11 | Sub | | Initializers.cs:35:29:35:38 | ...; | Initializers.cs:35:9:35:11 | Sub | +| Initializers.cs:35:29:35:38 | After ...; | Initializers.cs:35:9:35:11 | Sub | | Initializers.cs:35:33:35:33 | access to parameter i | Initializers.cs:35:9:35:11 | Sub | | Initializers.cs:35:33:35:37 | ... + ... | Initializers.cs:35:9:35:11 | Sub | +| Initializers.cs:35:33:35:37 | After ... + ... | Initializers.cs:35:9:35:11 | Sub | +| Initializers.cs:35:33:35:37 | Before ... + ... | Initializers.cs:35:9:35:11 | Sub | | Initializers.cs:35:37:35:37 | access to parameter j | Initializers.cs:35:9:35:11 | Sub | +| Initializers.cs:39:7:39:23 | After call to constructor Object | Initializers.cs:39:7:39:23 | IndexInitializers | +| Initializers.cs:39:7:39:23 | After call to method | Initializers.cs:39:7:39:23 | IndexInitializers | +| Initializers.cs:39:7:39:23 | Before call to constructor Object | Initializers.cs:39:7:39:23 | IndexInitializers | +| Initializers.cs:39:7:39:23 | Before call to method | Initializers.cs:39:7:39:23 | IndexInitializers | +| Initializers.cs:39:7:39:23 | Entry | Initializers.cs:39:7:39:23 | IndexInitializers | +| Initializers.cs:39:7:39:23 | Exit | Initializers.cs:39:7:39:23 | IndexInitializers | +| Initializers.cs:39:7:39:23 | Normal Exit | Initializers.cs:39:7:39:23 | IndexInitializers | | Initializers.cs:39:7:39:23 | call to constructor Object | Initializers.cs:39:7:39:23 | IndexInitializers | | Initializers.cs:39:7:39:23 | call to method | Initializers.cs:39:7:39:23 | IndexInitializers | -| Initializers.cs:39:7:39:23 | enter IndexInitializers | Initializers.cs:39:7:39:23 | IndexInitializers | -| Initializers.cs:39:7:39:23 | exit IndexInitializers | Initializers.cs:39:7:39:23 | IndexInitializers | -| Initializers.cs:39:7:39:23 | exit IndexInitializers (normal) | Initializers.cs:39:7:39:23 | IndexInitializers | | Initializers.cs:39:7:39:23 | this access | Initializers.cs:39:7:39:23 | IndexInitializers | | Initializers.cs:39:7:39:23 | {...} | Initializers.cs:39:7:39:23 | IndexInitializers | +| Initializers.cs:41:11:41:18 | After call to constructor Object | Initializers.cs:41:11:41:18 | Compound | +| Initializers.cs:41:11:41:18 | After call to method | Initializers.cs:41:11:41:18 | Compound | +| Initializers.cs:41:11:41:18 | Before call to constructor Object | Initializers.cs:41:11:41:18 | Compound | +| Initializers.cs:41:11:41:18 | Before call to method | Initializers.cs:41:11:41:18 | Compound | +| Initializers.cs:41:11:41:18 | Entry | Initializers.cs:41:11:41:18 | Compound | +| Initializers.cs:41:11:41:18 | Exit | Initializers.cs:41:11:41:18 | Compound | +| Initializers.cs:41:11:41:18 | Normal Exit | Initializers.cs:41:11:41:18 | Compound | | Initializers.cs:41:11:41:18 | call to constructor Object | Initializers.cs:41:11:41:18 | Compound | | Initializers.cs:41:11:41:18 | call to method | Initializers.cs:41:11:41:18 | Compound | -| Initializers.cs:41:11:41:18 | enter Compound | Initializers.cs:41:11:41:18 | Compound | -| Initializers.cs:41:11:41:18 | exit Compound | Initializers.cs:41:11:41:18 | Compound | -| Initializers.cs:41:11:41:18 | exit Compound (normal) | Initializers.cs:41:11:41:18 | Compound | | Initializers.cs:41:11:41:18 | this access | Initializers.cs:41:11:41:18 | Compound | | Initializers.cs:41:11:41:18 | {...} | Initializers.cs:41:11:41:18 | Compound | -| Initializers.cs:51:10:51:13 | enter Test | Initializers.cs:51:10:51:13 | Test | -| Initializers.cs:51:10:51:13 | exit Test | Initializers.cs:51:10:51:13 | Test | -| Initializers.cs:51:10:51:13 | exit Test (normal) | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:51:10:51:13 | Entry | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:51:10:51:13 | Exit | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:51:10:51:13 | Normal Exit | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:51:19:51:19 | i | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:52:5:66:5 | After {...} | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:52:5:66:5 | {...} | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:54:9:54:96 | ... ...; | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:54:9:54:96 | After ... ...; | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:54:13:54:16 | access to local variable dict | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:54:13:54:95 | After Dictionary dict = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:54:13:54:95 | Before Dictionary dict = ... | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:54:13:54:95 | Dictionary dict = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:54:20:54:95 | After object creation of type Dictionary | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:54:20:54:95 | Before object creation of type Dictionary | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:54:20:54:95 | object creation of type Dictionary | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:54:50:54:95 | After { ..., ... } | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:54:50:54:95 | Before { ..., ... } | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:54:50:54:95 | { ..., ... } | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:54:52:54:54 | After access to indexer | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:54:52:54:54 | Before access to indexer | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:54:52:54:54 | access to indexer | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:54:52:54:63 | ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:54:52:54:63 | After ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:54:52:54:63 | Before ... = ... | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:54:53:54:53 | 0 | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:54:58:54:63 | "Zero" | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:54:66:54:68 | After access to indexer | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:54:66:54:68 | Before access to indexer | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:54:66:54:68 | access to indexer | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:54:66:54:76 | ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:54:66:54:76 | After ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:54:66:54:76 | Before ... = ... | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:54:67:54:67 | 1 | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:54:72:54:76 | "One" | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:54:79:54:85 | After access to indexer | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:54:79:54:85 | Before access to indexer | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:54:79:54:85 | access to indexer | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:54:79:54:93 | ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:54:79:54:93 | After ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:54:79:54:93 | Before ... = ... | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:54:80:54:80 | access to parameter i | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:54:80:54:84 | ... + ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:54:80:54:84 | After ... + ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:54:80:54:84 | Before ... + ... | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:54:84:54:84 | 2 | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:54:89:54:93 | "Two" | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:57:9:65:10 | ... ...; | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:57:9:65:10 | After ... ...; | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:57:13:57:20 | access to local variable compound | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:57:13:65:9 | After Compound compound = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:57:13:65:9 | Before Compound compound = ... | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:57:13:65:9 | Compound compound = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:57:24:65:9 | After object creation of type Compound | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:57:24:65:9 | Before object creation of type Compound | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:57:24:65:9 | object creation of type Compound | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:58:9:65:9 | After { ..., ... } | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:58:9:65:9 | Before { ..., ... } | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:58:9:65:9 | { ..., ... } | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:59:13:59:27 | access to field DictionaryField | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:59:13:59:76 | ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:59:13:59:76 | After ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:59:13:59:76 | Before ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:59:31:59:76 | After { ..., ... } | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:59:31:59:76 | Before { ..., ... } | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:59:31:59:76 | { ..., ... } | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:59:33:59:35 | After access to indexer | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:59:33:59:35 | Before access to indexer | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:59:33:59:35 | access to indexer | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:59:33:59:44 | ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:59:33:59:44 | After ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:59:33:59:44 | Before ... = ... | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:59:34:59:34 | 0 | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:59:39:59:44 | "Zero" | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:59:47:59:49 | After access to indexer | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:59:47:59:49 | Before access to indexer | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:59:47:59:49 | access to indexer | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:59:47:59:57 | ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:59:47:59:57 | After ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:59:47:59:57 | Before ... = ... | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:59:48:59:48 | 1 | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:59:53:59:57 | "One" | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:59:60:59:66 | After access to indexer | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:59:60:59:66 | Before access to indexer | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:59:60:59:66 | access to indexer | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:59:60:59:74 | ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:59:60:59:74 | After ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:59:60:59:74 | Before ... = ... | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:59:61:59:61 | access to parameter i | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:59:61:59:65 | ... + ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:59:61:59:65 | After ... + ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:59:61:59:65 | Before ... + ... | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:59:65:59:65 | 2 | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:59:70:59:74 | "Two" | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:60:13:60:30 | After access to property DictionaryProperty | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:60:13:60:30 | Before access to property DictionaryProperty | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:60:13:60:30 | access to property DictionaryProperty | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:60:13:60:80 | ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:60:13:60:80 | After ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:60:13:60:80 | Before ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:60:34:60:80 | After { ..., ... } | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:60:34:60:80 | Before { ..., ... } | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:60:34:60:80 | { ..., ... } | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:60:36:60:38 | After access to indexer | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:60:36:60:38 | Before access to indexer | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:60:36:60:38 | access to indexer | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:60:36:60:48 | ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:60:36:60:48 | After ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:60:36:60:48 | Before ... = ... | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:60:37:60:37 | 3 | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:60:42:60:48 | "Three" | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:60:51:60:53 | After access to indexer | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:60:51:60:53 | Before access to indexer | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:60:51:60:53 | access to indexer | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:60:51:60:61 | ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:60:51:60:61 | After ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:60:51:60:61 | Before ... = ... | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:60:52:60:52 | 2 | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:60:57:60:61 | "Two" | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:60:64:60:70 | After access to indexer | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:60:64:60:70 | Before access to indexer | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:60:64:60:70 | access to indexer | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:60:64:60:78 | ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:60:64:60:78 | After ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:60:64:60:78 | Before ... = ... | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:60:65:60:65 | access to parameter i | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:60:65:60:69 | ... + ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:60:65:60:69 | After ... + ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:60:65:60:69 | Before ... + ... | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:60:69:60:69 | 1 | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:60:74:60:78 | "One" | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:61:13:61:22 | access to field ArrayField | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:61:13:61:58 | ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:61:13:61:58 | After ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:61:13:61:58 | Before ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:61:26:61:58 | After { ..., ... } | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:61:26:61:58 | Before { ..., ... } | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:61:26:61:58 | { ..., ... } | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:61:28:61:30 | After access to array element | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:61:28:61:30 | Before access to array element | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:61:28:61:30 | access to array element | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:61:28:61:39 | ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:61:28:61:39 | After ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:61:28:61:39 | Before ... = ... | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:61:29:61:29 | 0 | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:61:34:61:39 | "Zero" | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:61:42:61:48 | After access to array element | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:61:42:61:48 | Before access to array element | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:61:42:61:48 | access to array element | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:61:42:61:56 | ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:61:42:61:56 | After ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:61:42:61:56 | Before ... = ... | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:61:43:61:43 | access to parameter i | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:61:43:61:47 | ... + ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:61:43:61:47 | After ... + ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:61:43:61:47 | Before ... + ... | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:61:47:61:47 | 1 | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:61:52:61:56 | "One" | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:62:13:62:23 | access to field ArrayField2 | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:62:13:62:60 | ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:62:13:62:60 | After ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:62:13:62:60 | Before ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:62:27:62:60 | After { ..., ... } | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:62:27:62:60 | Before { ..., ... } | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:62:27:62:60 | { ..., ... } | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:62:29:62:34 | After access to array element | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:62:29:62:34 | Before access to array element | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:62:29:62:34 | access to array element | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:62:29:62:40 | ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:62:29:62:40 | After ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:62:29:62:40 | Before ... = ... | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:62:30:62:30 | 0 | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:62:33:62:33 | 1 | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:62:38:62:40 | "i" | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:62:43:62:52 | After access to array element | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:62:43:62:52 | Before access to array element | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:62:43:62:52 | access to array element | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:62:43:62:58 | ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:62:43:62:58 | After ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:62:43:62:58 | Before ... = ... | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:62:44:62:44 | 1 | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:62:47:62:47 | access to parameter i | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:62:47:62:51 | ... + ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:62:47:62:51 | After ... + ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:62:47:62:51 | Before ... + ... | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:62:51:62:51 | 0 | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:62:56:62:58 | "1" | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:63:13:63:25 | After access to property ArrayProperty | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:63:13:63:25 | Before access to property ArrayProperty | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:63:13:63:25 | access to property ArrayProperty | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:63:13:63:60 | ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:63:13:63:60 | After ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:63:13:63:60 | Before ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:63:29:63:60 | After { ..., ... } | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:63:29:63:60 | Before { ..., ... } | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:63:29:63:60 | { ..., ... } | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:63:31:63:33 | After access to array element | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:63:31:63:33 | Before access to array element | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:63:31:63:33 | access to array element | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:63:31:63:41 | ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:63:31:63:41 | After ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:63:31:63:41 | Before ... = ... | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:63:32:63:32 | 1 | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:63:37:63:41 | "One" | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:63:44:63:50 | After access to array element | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:63:44:63:50 | Before access to array element | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:63:44:63:50 | access to array element | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:63:44:63:58 | ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:63:44:63:58 | After ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:63:44:63:58 | Before ... = ... | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:63:45:63:45 | access to parameter i | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:63:45:63:49 | ... + ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:63:45:63:49 | After ... + ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:63:45:63:49 | Before ... + ... | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:63:49:63:49 | 2 | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:63:54:63:58 | "Two" | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:64:13:64:26 | After access to property ArrayProperty2 | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:64:13:64:26 | Before access to property ArrayProperty2 | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:64:13:64:26 | access to property ArrayProperty2 | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:64:13:64:63 | ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:64:13:64:63 | After ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:64:13:64:63 | Before ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:64:30:64:63 | After { ..., ... } | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:64:30:64:63 | Before { ..., ... } | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:64:30:64:63 | { ..., ... } | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:64:32:64:37 | After access to array element | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:64:32:64:37 | Before access to array element | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:64:32:64:37 | access to array element | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:64:32:64:43 | ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:64:32:64:43 | After ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:64:32:64:43 | Before ... = ... | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:64:33:64:33 | 0 | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:64:36:64:36 | 1 | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:64:41:64:43 | "i" | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:64:46:64:55 | After access to array element | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:64:46:64:55 | Before access to array element | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:64:46:64:55 | access to array element | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:64:46:64:61 | ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:64:46:64:61 | After ... = ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:64:46:64:61 | Before ... = ... | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:64:47:64:47 | 1 | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:64:50:64:50 | access to parameter i | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:64:50:64:54 | ... + ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:64:50:64:54 | After ... + ... | Initializers.cs:51:10:51:13 | Test | +| Initializers.cs:64:50:64:54 | Before ... + ... | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:64:54:64:54 | 0 | Initializers.cs:51:10:51:13 | Test | | Initializers.cs:64:59:64:61 | "1" | Initializers.cs:51:10:51:13 | Test | +| LoopUnrolling.cs:5:7:5:19 | After call to constructor Object | LoopUnrolling.cs:5:7:5:19 | LoopUnrolling | +| LoopUnrolling.cs:5:7:5:19 | After call to method | LoopUnrolling.cs:5:7:5:19 | LoopUnrolling | +| LoopUnrolling.cs:5:7:5:19 | Before call to constructor Object | LoopUnrolling.cs:5:7:5:19 | LoopUnrolling | +| LoopUnrolling.cs:5:7:5:19 | Before call to method | LoopUnrolling.cs:5:7:5:19 | LoopUnrolling | +| LoopUnrolling.cs:5:7:5:19 | Entry | LoopUnrolling.cs:5:7:5:19 | LoopUnrolling | +| LoopUnrolling.cs:5:7:5:19 | Exit | LoopUnrolling.cs:5:7:5:19 | LoopUnrolling | +| LoopUnrolling.cs:5:7:5:19 | Normal Exit | LoopUnrolling.cs:5:7:5:19 | LoopUnrolling | | LoopUnrolling.cs:5:7:5:19 | call to constructor Object | LoopUnrolling.cs:5:7:5:19 | LoopUnrolling | | LoopUnrolling.cs:5:7:5:19 | call to method | LoopUnrolling.cs:5:7:5:19 | LoopUnrolling | -| LoopUnrolling.cs:5:7:5:19 | enter LoopUnrolling | LoopUnrolling.cs:5:7:5:19 | LoopUnrolling | -| LoopUnrolling.cs:5:7:5:19 | exit LoopUnrolling | LoopUnrolling.cs:5:7:5:19 | LoopUnrolling | -| LoopUnrolling.cs:5:7:5:19 | exit LoopUnrolling (normal) | LoopUnrolling.cs:5:7:5:19 | LoopUnrolling | | LoopUnrolling.cs:5:7:5:19 | this access | LoopUnrolling.cs:5:7:5:19 | LoopUnrolling | | LoopUnrolling.cs:5:7:5:19 | {...} | LoopUnrolling.cs:5:7:5:19 | LoopUnrolling | -| LoopUnrolling.cs:7:10:7:11 | enter M1 | LoopUnrolling.cs:7:10:7:11 | M1 | -| LoopUnrolling.cs:7:10:7:11 | exit M1 | LoopUnrolling.cs:7:10:7:11 | M1 | -| LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | LoopUnrolling.cs:7:10:7:11 | M1 | +| LoopUnrolling.cs:7:10:7:11 | Entry | LoopUnrolling.cs:7:10:7:11 | M1 | +| LoopUnrolling.cs:7:10:7:11 | Exit | LoopUnrolling.cs:7:10:7:11 | M1 | +| LoopUnrolling.cs:7:10:7:11 | Normal Exit | LoopUnrolling.cs:7:10:7:11 | M1 | +| LoopUnrolling.cs:7:22:7:25 | args | LoopUnrolling.cs:7:10:7:11 | M1 | +| LoopUnrolling.cs:8:5:13:5 | After {...} | LoopUnrolling.cs:7:10:7:11 | M1 | | LoopUnrolling.cs:8:5:13:5 | {...} | LoopUnrolling.cs:7:10:7:11 | M1 | +| LoopUnrolling.cs:9:9:10:19 | After if (...) ... | LoopUnrolling.cs:7:10:7:11 | M1 | | LoopUnrolling.cs:9:9:10:19 | if (...) ... | LoopUnrolling.cs:7:10:7:11 | M1 | | LoopUnrolling.cs:9:13:9:16 | access to parameter args | LoopUnrolling.cs:7:10:7:11 | M1 | +| LoopUnrolling.cs:9:13:9:23 | After access to property Length | LoopUnrolling.cs:7:10:7:11 | M1 | +| LoopUnrolling.cs:9:13:9:23 | Before access to property Length | LoopUnrolling.cs:7:10:7:11 | M1 | | LoopUnrolling.cs:9:13:9:23 | access to property Length | LoopUnrolling.cs:7:10:7:11 | M1 | | LoopUnrolling.cs:9:13:9:28 | ... == ... | LoopUnrolling.cs:7:10:7:11 | M1 | +| LoopUnrolling.cs:9:13:9:28 | After ... == ... [false] | LoopUnrolling.cs:7:10:7:11 | M1 | +| LoopUnrolling.cs:9:13:9:28 | After ... == ... [true] | LoopUnrolling.cs:7:10:7:11 | M1 | +| LoopUnrolling.cs:9:13:9:28 | Before ... == ... | LoopUnrolling.cs:7:10:7:11 | M1 | | LoopUnrolling.cs:9:28:9:28 | 0 | LoopUnrolling.cs:7:10:7:11 | M1 | +| LoopUnrolling.cs:10:13:10:19 | Before return ...; | LoopUnrolling.cs:7:10:7:11 | M1 | | LoopUnrolling.cs:10:13:10:19 | return ...; | LoopUnrolling.cs:7:10:7:11 | M1 | +| LoopUnrolling.cs:11:9:12:35 | After foreach (... ... in ...) ... | LoopUnrolling.cs:7:10:7:11 | M1 | +| LoopUnrolling.cs:11:9:12:35 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:7:10:7:11 | M1 | | LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:7:10:7:11 | M1 | | LoopUnrolling.cs:11:22:11:24 | String arg | LoopUnrolling.cs:7:10:7:11 | M1 | +| LoopUnrolling.cs:11:29:11:32 | After access to parameter args [empty] | LoopUnrolling.cs:7:10:7:11 | M1 | +| LoopUnrolling.cs:11:29:11:32 | After access to parameter args [non-empty] | LoopUnrolling.cs:7:10:7:11 | M1 | | LoopUnrolling.cs:11:29:11:32 | access to parameter args | LoopUnrolling.cs:7:10:7:11 | M1 | +| LoopUnrolling.cs:12:13:12:34 | After call to method WriteLine | LoopUnrolling.cs:7:10:7:11 | M1 | +| LoopUnrolling.cs:12:13:12:34 | Before call to method WriteLine | LoopUnrolling.cs:7:10:7:11 | M1 | | LoopUnrolling.cs:12:13:12:34 | call to method WriteLine | LoopUnrolling.cs:7:10:7:11 | M1 | | LoopUnrolling.cs:12:13:12:35 | ...; | LoopUnrolling.cs:7:10:7:11 | M1 | +| LoopUnrolling.cs:12:13:12:35 | After ...; | LoopUnrolling.cs:7:10:7:11 | M1 | | LoopUnrolling.cs:12:31:12:33 | access to local variable arg | LoopUnrolling.cs:7:10:7:11 | M1 | -| LoopUnrolling.cs:15:10:15:11 | enter M2 | LoopUnrolling.cs:15:10:15:11 | M2 | -| LoopUnrolling.cs:15:10:15:11 | exit M2 | LoopUnrolling.cs:15:10:15:11 | M2 | -| LoopUnrolling.cs:15:10:15:11 | exit M2 (normal) | LoopUnrolling.cs:15:10:15:11 | M2 | +| LoopUnrolling.cs:15:10:15:11 | Entry | LoopUnrolling.cs:15:10:15:11 | M2 | +| LoopUnrolling.cs:15:10:15:11 | Exit | LoopUnrolling.cs:15:10:15:11 | M2 | +| LoopUnrolling.cs:15:10:15:11 | Normal Exit | LoopUnrolling.cs:15:10:15:11 | M2 | +| LoopUnrolling.cs:16:5:20:5 | After {...} | LoopUnrolling.cs:15:10:15:11 | M2 | | LoopUnrolling.cs:16:5:20:5 | {...} | LoopUnrolling.cs:15:10:15:11 | M2 | | LoopUnrolling.cs:17:9:17:48 | ... ...; | LoopUnrolling.cs:15:10:15:11 | M2 | +| LoopUnrolling.cs:17:9:17:48 | After ... ...; | LoopUnrolling.cs:15:10:15:11 | M2 | +| LoopUnrolling.cs:17:13:17:14 | access to local variable xs | LoopUnrolling.cs:15:10:15:11 | M2 | +| LoopUnrolling.cs:17:13:17:47 | After String[] xs = ... | LoopUnrolling.cs:15:10:15:11 | M2 | +| LoopUnrolling.cs:17:13:17:47 | Before String[] xs = ... | LoopUnrolling.cs:15:10:15:11 | M2 | | LoopUnrolling.cs:17:13:17:47 | String[] xs = ... | LoopUnrolling.cs:15:10:15:11 | M2 | | LoopUnrolling.cs:17:18:17:47 | 3 | LoopUnrolling.cs:15:10:15:11 | M2 | +| LoopUnrolling.cs:17:18:17:47 | After array creation of type String[] | LoopUnrolling.cs:15:10:15:11 | M2 | +| LoopUnrolling.cs:17:18:17:47 | Before array creation of type String[] | LoopUnrolling.cs:15:10:15:11 | M2 | | LoopUnrolling.cs:17:18:17:47 | array creation of type String[] | LoopUnrolling.cs:15:10:15:11 | M2 | +| LoopUnrolling.cs:17:31:17:47 | After { ..., ... } | LoopUnrolling.cs:15:10:15:11 | M2 | +| LoopUnrolling.cs:17:31:17:47 | Before { ..., ... } | LoopUnrolling.cs:15:10:15:11 | M2 | | LoopUnrolling.cs:17:31:17:47 | { ..., ... } | LoopUnrolling.cs:15:10:15:11 | M2 | | LoopUnrolling.cs:17:33:17:35 | "a" | LoopUnrolling.cs:15:10:15:11 | M2 | | LoopUnrolling.cs:17:38:17:40 | "b" | LoopUnrolling.cs:15:10:15:11 | M2 | | LoopUnrolling.cs:17:43:17:45 | "c" | LoopUnrolling.cs:15:10:15:11 | M2 | +| LoopUnrolling.cs:18:9:19:33 | After foreach (... ... in ...) ... | LoopUnrolling.cs:15:10:15:11 | M2 | +| LoopUnrolling.cs:18:9:19:33 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:15:10:15:11 | M2 | | LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:15:10:15:11 | M2 | | LoopUnrolling.cs:18:22:18:22 | String x | LoopUnrolling.cs:15:10:15:11 | M2 | +| LoopUnrolling.cs:18:27:18:28 | After access to local variable xs [empty] | LoopUnrolling.cs:15:10:15:11 | M2 | +| LoopUnrolling.cs:18:27:18:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:15:10:15:11 | M2 | | LoopUnrolling.cs:18:27:18:28 | access to local variable xs | LoopUnrolling.cs:15:10:15:11 | M2 | +| LoopUnrolling.cs:19:13:19:32 | After call to method WriteLine | LoopUnrolling.cs:15:10:15:11 | M2 | +| LoopUnrolling.cs:19:13:19:32 | Before call to method WriteLine | LoopUnrolling.cs:15:10:15:11 | M2 | | LoopUnrolling.cs:19:13:19:32 | call to method WriteLine | LoopUnrolling.cs:15:10:15:11 | M2 | | LoopUnrolling.cs:19:13:19:33 | ...; | LoopUnrolling.cs:15:10:15:11 | M2 | +| LoopUnrolling.cs:19:13:19:33 | After ...; | LoopUnrolling.cs:15:10:15:11 | M2 | | LoopUnrolling.cs:19:31:19:31 | access to local variable x | LoopUnrolling.cs:15:10:15:11 | M2 | -| LoopUnrolling.cs:22:10:22:11 | enter M3 | LoopUnrolling.cs:22:10:22:11 | M3 | -| LoopUnrolling.cs:22:10:22:11 | exit M3 | LoopUnrolling.cs:22:10:22:11 | M3 | -| LoopUnrolling.cs:22:10:22:11 | exit M3 (normal) | LoopUnrolling.cs:22:10:22:11 | M3 | +| LoopUnrolling.cs:22:10:22:11 | Entry | LoopUnrolling.cs:22:10:22:11 | M3 | +| LoopUnrolling.cs:22:10:22:11 | Exit | LoopUnrolling.cs:22:10:22:11 | M3 | +| LoopUnrolling.cs:22:10:22:11 | Normal Exit | LoopUnrolling.cs:22:10:22:11 | M3 | +| LoopUnrolling.cs:22:20:22:23 | args | LoopUnrolling.cs:22:10:22:11 | M3 | +| LoopUnrolling.cs:23:5:27:5 | After {...} | LoopUnrolling.cs:22:10:22:11 | M3 | | LoopUnrolling.cs:23:5:27:5 | {...} | LoopUnrolling.cs:22:10:22:11 | M3 | +| LoopUnrolling.cs:24:9:26:40 | After foreach (... ... in ...) ... | LoopUnrolling.cs:22:10:22:11 | M3 | +| LoopUnrolling.cs:24:9:26:40 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:22:10:22:11 | M3 | | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:22:10:22:11 | M3 | | LoopUnrolling.cs:24:22:24:24 | Char arg | LoopUnrolling.cs:22:10:22:11 | M3 | +| LoopUnrolling.cs:24:29:24:32 | After access to parameter args [empty] | LoopUnrolling.cs:22:10:22:11 | M3 | +| LoopUnrolling.cs:24:29:24:32 | After access to parameter args [non-empty] | LoopUnrolling.cs:22:10:22:11 | M3 | | LoopUnrolling.cs:24:29:24:32 | access to parameter args | LoopUnrolling.cs:22:10:22:11 | M3 | +| LoopUnrolling.cs:25:13:26:40 | After foreach (... ... in ...) ... | LoopUnrolling.cs:22:10:22:11 | M3 | +| LoopUnrolling.cs:25:13:26:40 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:22:10:22:11 | M3 | | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:22:10:22:11 | M3 | | LoopUnrolling.cs:25:26:25:29 | Char arg0 | LoopUnrolling.cs:22:10:22:11 | M3 | +| LoopUnrolling.cs:25:34:25:37 | After access to parameter args [empty] | LoopUnrolling.cs:22:10:22:11 | M3 | +| LoopUnrolling.cs:25:34:25:37 | After access to parameter args [non-empty] | LoopUnrolling.cs:22:10:22:11 | M3 | | LoopUnrolling.cs:25:34:25:37 | access to parameter args | LoopUnrolling.cs:22:10:22:11 | M3 | +| LoopUnrolling.cs:26:17:26:39 | After call to method WriteLine | LoopUnrolling.cs:22:10:22:11 | M3 | +| LoopUnrolling.cs:26:17:26:39 | Before call to method WriteLine | LoopUnrolling.cs:22:10:22:11 | M3 | | LoopUnrolling.cs:26:17:26:39 | call to method WriteLine | LoopUnrolling.cs:22:10:22:11 | M3 | | LoopUnrolling.cs:26:17:26:40 | ...; | LoopUnrolling.cs:22:10:22:11 | M3 | +| LoopUnrolling.cs:26:17:26:40 | After ...; | LoopUnrolling.cs:22:10:22:11 | M3 | | LoopUnrolling.cs:26:35:26:38 | access to local variable arg0 | LoopUnrolling.cs:22:10:22:11 | M3 | -| LoopUnrolling.cs:29:10:29:11 | enter M4 | LoopUnrolling.cs:29:10:29:11 | M4 | -| LoopUnrolling.cs:29:10:29:11 | exit M4 | LoopUnrolling.cs:29:10:29:11 | M4 | -| LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | LoopUnrolling.cs:29:10:29:11 | M4 | +| LoopUnrolling.cs:29:10:29:11 | Entry | LoopUnrolling.cs:29:10:29:11 | M4 | +| LoopUnrolling.cs:29:10:29:11 | Exit | LoopUnrolling.cs:29:10:29:11 | M4 | +| LoopUnrolling.cs:29:10:29:11 | Normal Exit | LoopUnrolling.cs:29:10:29:11 | M4 | +| LoopUnrolling.cs:30:5:34:5 | After {...} | LoopUnrolling.cs:29:10:29:11 | M4 | | LoopUnrolling.cs:30:5:34:5 | {...} | LoopUnrolling.cs:29:10:29:11 | M4 | | LoopUnrolling.cs:31:9:31:31 | ... ...; | LoopUnrolling.cs:29:10:29:11 | M4 | +| LoopUnrolling.cs:31:9:31:31 | After ... ...; | LoopUnrolling.cs:29:10:29:11 | M4 | +| LoopUnrolling.cs:31:13:31:14 | access to local variable xs | LoopUnrolling.cs:29:10:29:11 | M4 | +| LoopUnrolling.cs:31:13:31:30 | After String[] xs = ... | LoopUnrolling.cs:29:10:29:11 | M4 | +| LoopUnrolling.cs:31:13:31:30 | Before String[] xs = ... | LoopUnrolling.cs:29:10:29:11 | M4 | | LoopUnrolling.cs:31:13:31:30 | String[] xs = ... | LoopUnrolling.cs:29:10:29:11 | M4 | +| LoopUnrolling.cs:31:18:31:30 | After array creation of type String[] | LoopUnrolling.cs:29:10:29:11 | M4 | +| LoopUnrolling.cs:31:18:31:30 | Before array creation of type String[] | LoopUnrolling.cs:29:10:29:11 | M4 | | LoopUnrolling.cs:31:18:31:30 | array creation of type String[] | LoopUnrolling.cs:29:10:29:11 | M4 | | LoopUnrolling.cs:31:29:31:29 | 0 | LoopUnrolling.cs:29:10:29:11 | M4 | +| LoopUnrolling.cs:32:9:33:33 | After foreach (... ... in ...) ... | LoopUnrolling.cs:29:10:29:11 | M4 | +| LoopUnrolling.cs:32:9:33:33 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:29:10:29:11 | M4 | | LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:29:10:29:11 | M4 | | LoopUnrolling.cs:32:22:32:22 | String x | LoopUnrolling.cs:29:10:29:11 | M4 | +| LoopUnrolling.cs:32:27:32:28 | After access to local variable xs [empty] | LoopUnrolling.cs:29:10:29:11 | M4 | +| LoopUnrolling.cs:32:27:32:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:29:10:29:11 | M4 | | LoopUnrolling.cs:32:27:32:28 | access to local variable xs | LoopUnrolling.cs:29:10:29:11 | M4 | +| LoopUnrolling.cs:33:13:33:32 | After call to method WriteLine | LoopUnrolling.cs:29:10:29:11 | M4 | +| LoopUnrolling.cs:33:13:33:32 | Before call to method WriteLine | LoopUnrolling.cs:29:10:29:11 | M4 | | LoopUnrolling.cs:33:13:33:32 | call to method WriteLine | LoopUnrolling.cs:29:10:29:11 | M4 | | LoopUnrolling.cs:33:13:33:33 | ...; | LoopUnrolling.cs:29:10:29:11 | M4 | +| LoopUnrolling.cs:33:13:33:33 | After ...; | LoopUnrolling.cs:29:10:29:11 | M4 | | LoopUnrolling.cs:33:31:33:31 | access to local variable x | LoopUnrolling.cs:29:10:29:11 | M4 | -| LoopUnrolling.cs:36:10:36:11 | enter M5 | LoopUnrolling.cs:36:10:36:11 | M5 | -| LoopUnrolling.cs:36:10:36:11 | exit M5 | LoopUnrolling.cs:36:10:36:11 | M5 | -| LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:36:10:36:11 | Entry | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:36:10:36:11 | Exit | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:36:10:36:11 | Normal Exit | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:37:5:43:5 | After {...} | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:37:5:43:5 | {...} | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:38:9:38:48 | ... ...; | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:38:9:38:48 | After ... ...; | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:38:13:38:14 | access to local variable xs | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:38:13:38:47 | After String[] xs = ... | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:38:13:38:47 | Before String[] xs = ... | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:38:13:38:47 | String[] xs = ... | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:38:18:38:47 | 3 | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:38:18:38:47 | After array creation of type String[] | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:38:18:38:47 | Before array creation of type String[] | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:38:18:38:47 | array creation of type String[] | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:38:31:38:47 | After { ..., ... } | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:38:31:38:47 | Before { ..., ... } | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:38:31:38:47 | { ..., ... } | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:38:33:38:35 | "a" | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:38:38:38:40 | "b" | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:38:43:38:45 | "c" | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:39:9:39:48 | ... ...; | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:39:9:39:48 | After ... ...; | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:39:13:39:14 | access to local variable ys | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:39:13:39:47 | After String[] ys = ... | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:39:13:39:47 | Before String[] ys = ... | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:39:13:39:47 | String[] ys = ... | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:39:18:39:47 | 3 | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:39:18:39:47 | After array creation of type String[] | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:39:18:39:47 | Before array creation of type String[] | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:39:18:39:47 | array creation of type String[] | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:39:31:39:47 | After { ..., ... } | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:39:31:39:47 | Before { ..., ... } | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:39:31:39:47 | { ..., ... } | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:39:33:39:35 | "0" | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:39:38:39:40 | "1" | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:39:43:39:45 | "2" | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:40:9:42:41 | After foreach (... ... in ...) ... | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:40:9:42:41 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [empty] | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:40:27:40:28 | access to local variable xs | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:41:13:42:41 | After foreach (... ... in ...) ... | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:41:13:42:41 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:41:26:41:26 | String y | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [empty] | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [non-empty] | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:41:31:41:32 | access to local variable ys | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:42:17:42:40 | After call to method WriteLine | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:42:17:42:40 | Before call to method WriteLine | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:42:17:42:40 | call to method WriteLine | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:42:17:42:41 | ...; | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:42:17:42:41 | After ...; | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:42:35:42:35 | access to local variable x | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:42:35:42:39 | ... + ... | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:42:35:42:39 | After ... + ... | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:42:35:42:39 | Before ... + ... | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:42:39:42:39 | access to local variable y | LoopUnrolling.cs:36:10:36:11 | M5 | -| LoopUnrolling.cs:45:10:45:11 | enter M6 | LoopUnrolling.cs:45:10:45:11 | M6 | -| LoopUnrolling.cs:45:10:45:11 | exit M6 | LoopUnrolling.cs:45:10:45:11 | M6 | -| LoopUnrolling.cs:45:10:45:11 | exit M6 (normal) | LoopUnrolling.cs:45:10:45:11 | M6 | +| LoopUnrolling.cs:45:10:45:11 | Entry | LoopUnrolling.cs:45:10:45:11 | M6 | +| LoopUnrolling.cs:45:10:45:11 | Exit | LoopUnrolling.cs:45:10:45:11 | M6 | +| LoopUnrolling.cs:45:10:45:11 | Normal Exit | LoopUnrolling.cs:45:10:45:11 | M6 | +| LoopUnrolling.cs:46:5:53:5 | After {...} | LoopUnrolling.cs:45:10:45:11 | M6 | | LoopUnrolling.cs:46:5:53:5 | {...} | LoopUnrolling.cs:45:10:45:11 | M6 | | LoopUnrolling.cs:47:9:47:48 | ... ...; | LoopUnrolling.cs:45:10:45:11 | M6 | +| LoopUnrolling.cs:47:9:47:48 | After ... ...; | LoopUnrolling.cs:45:10:45:11 | M6 | +| LoopUnrolling.cs:47:13:47:14 | access to local variable xs | LoopUnrolling.cs:45:10:45:11 | M6 | +| LoopUnrolling.cs:47:13:47:47 | After String[] xs = ... | LoopUnrolling.cs:45:10:45:11 | M6 | +| LoopUnrolling.cs:47:13:47:47 | Before String[] xs = ... | LoopUnrolling.cs:45:10:45:11 | M6 | | LoopUnrolling.cs:47:13:47:47 | String[] xs = ... | LoopUnrolling.cs:45:10:45:11 | M6 | | LoopUnrolling.cs:47:18:47:47 | 3 | LoopUnrolling.cs:45:10:45:11 | M6 | +| LoopUnrolling.cs:47:18:47:47 | After array creation of type String[] | LoopUnrolling.cs:45:10:45:11 | M6 | +| LoopUnrolling.cs:47:18:47:47 | Before array creation of type String[] | LoopUnrolling.cs:45:10:45:11 | M6 | | LoopUnrolling.cs:47:18:47:47 | array creation of type String[] | LoopUnrolling.cs:45:10:45:11 | M6 | +| LoopUnrolling.cs:47:31:47:47 | After { ..., ... } | LoopUnrolling.cs:45:10:45:11 | M6 | +| LoopUnrolling.cs:47:31:47:47 | Before { ..., ... } | LoopUnrolling.cs:45:10:45:11 | M6 | | LoopUnrolling.cs:47:31:47:47 | { ..., ... } | LoopUnrolling.cs:45:10:45:11 | M6 | | LoopUnrolling.cs:47:33:47:35 | "a" | LoopUnrolling.cs:45:10:45:11 | M6 | | LoopUnrolling.cs:47:38:47:40 | "b" | LoopUnrolling.cs:45:10:45:11 | M6 | | LoopUnrolling.cs:47:43:47:45 | "c" | LoopUnrolling.cs:45:10:45:11 | M6 | +| LoopUnrolling.cs:48:9:52:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:45:10:45:11 | M6 | | LoopUnrolling.cs:48:9:52:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:45:10:45:11 | M6 | | LoopUnrolling.cs:48:22:48:22 | String x | LoopUnrolling.cs:45:10:45:11 | M6 | +| LoopUnrolling.cs:48:27:48:28 | After access to local variable xs [empty] | LoopUnrolling.cs:45:10:45:11 | M6 | +| LoopUnrolling.cs:48:27:48:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:45:10:45:11 | M6 | | LoopUnrolling.cs:48:27:48:28 | access to local variable xs | LoopUnrolling.cs:45:10:45:11 | M6 | | LoopUnrolling.cs:49:9:52:9 | {...} | LoopUnrolling.cs:45:10:45:11 | M6 | | LoopUnrolling.cs:50:9:50:13 | Label: | LoopUnrolling.cs:45:10:45:11 | M6 | +| LoopUnrolling.cs:50:16:50:35 | After call to method WriteLine | LoopUnrolling.cs:45:10:45:11 | M6 | +| LoopUnrolling.cs:50:16:50:35 | Before call to method WriteLine | LoopUnrolling.cs:45:10:45:11 | M6 | | LoopUnrolling.cs:50:16:50:35 | call to method WriteLine | LoopUnrolling.cs:45:10:45:11 | M6 | | LoopUnrolling.cs:50:16:50:36 | ...; | LoopUnrolling.cs:45:10:45:11 | M6 | +| LoopUnrolling.cs:50:16:50:36 | After ...; | LoopUnrolling.cs:45:10:45:11 | M6 | | LoopUnrolling.cs:50:34:50:34 | access to local variable x | LoopUnrolling.cs:45:10:45:11 | M6 | +| LoopUnrolling.cs:51:13:51:23 | Before goto ...; | LoopUnrolling.cs:45:10:45:11 | M6 | | LoopUnrolling.cs:51:13:51:23 | goto ...; | LoopUnrolling.cs:45:10:45:11 | M6 | -| LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:55:10:55:11 | M7 | -| LoopUnrolling.cs:55:10:55:11 | exit M7 | LoopUnrolling.cs:55:10:55:11 | M7 | -| LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:55:10:55:11 | Entry | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:55:10:55:11 | Exit | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:55:10:55:11 | Normal Exit | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:55:18:55:18 | b | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:56:5:65:5 | After {...} | LoopUnrolling.cs:55:10:55:11 | M7 | | LoopUnrolling.cs:56:5:65:5 | {...} | LoopUnrolling.cs:55:10:55:11 | M7 | | LoopUnrolling.cs:57:9:57:48 | ... ...; | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:57:9:57:48 | After ... ...; | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:57:13:57:14 | access to local variable xs | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:57:13:57:47 | After String[] xs = ... | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:57:13:57:47 | Before String[] xs = ... | LoopUnrolling.cs:55:10:55:11 | M7 | | LoopUnrolling.cs:57:13:57:47 | String[] xs = ... | LoopUnrolling.cs:55:10:55:11 | M7 | | LoopUnrolling.cs:57:18:57:47 | 3 | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:57:18:57:47 | After array creation of type String[] | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:57:18:57:47 | Before array creation of type String[] | LoopUnrolling.cs:55:10:55:11 | M7 | | LoopUnrolling.cs:57:18:57:47 | array creation of type String[] | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:57:31:57:47 | After { ..., ... } | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:57:31:57:47 | Before { ..., ... } | LoopUnrolling.cs:55:10:55:11 | M7 | | LoopUnrolling.cs:57:31:57:47 | { ..., ... } | LoopUnrolling.cs:55:10:55:11 | M7 | | LoopUnrolling.cs:57:33:57:35 | "a" | LoopUnrolling.cs:55:10:55:11 | M7 | | LoopUnrolling.cs:57:38:57:40 | "b" | LoopUnrolling.cs:55:10:55:11 | M7 | | LoopUnrolling.cs:57:43:57:45 | "c" | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:58:9:64:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:58:9:64:9 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:55:10:55:11 | M7 | | LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:55:10:55:11 | M7 | | LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [empty] | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:55:10:55:11 | M7 | | LoopUnrolling.cs:58:27:58:28 | access to local variable xs | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:59:9:64:9 | After {...} | LoopUnrolling.cs:55:10:55:11 | M7 | | LoopUnrolling.cs:59:9:64:9 | {...} | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:60:13:61:37 | After if (...) ... | LoopUnrolling.cs:55:10:55:11 | M7 | | LoopUnrolling.cs:60:13:61:37 | if (...) ... | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:60:17:60:17 | After access to parameter b [false] | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:60:17:60:17 | After access to parameter b [true] | LoopUnrolling.cs:55:10:55:11 | M7 | | LoopUnrolling.cs:60:17:60:17 | access to parameter b | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:61:17:61:36 | After call to method WriteLine | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:61:17:61:36 | Before call to method WriteLine | LoopUnrolling.cs:55:10:55:11 | M7 | | LoopUnrolling.cs:61:17:61:36 | call to method WriteLine | LoopUnrolling.cs:55:10:55:11 | M7 | | LoopUnrolling.cs:61:17:61:37 | ...; | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:61:17:61:37 | After ...; | LoopUnrolling.cs:55:10:55:11 | M7 | | LoopUnrolling.cs:61:35:61:35 | access to local variable x | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:62:13:63:37 | After if (...) ... | LoopUnrolling.cs:55:10:55:11 | M7 | | LoopUnrolling.cs:62:13:63:37 | if (...) ... | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:62:17:62:17 | After access to parameter b [false] | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:62:17:62:17 | After access to parameter b [true] | LoopUnrolling.cs:55:10:55:11 | M7 | | LoopUnrolling.cs:62:17:62:17 | access to parameter b | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:63:17:63:36 | After call to method WriteLine | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:63:17:63:36 | Before call to method WriteLine | LoopUnrolling.cs:55:10:55:11 | M7 | | LoopUnrolling.cs:63:17:63:36 | call to method WriteLine | LoopUnrolling.cs:55:10:55:11 | M7 | | LoopUnrolling.cs:63:17:63:37 | ...; | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:63:17:63:37 | After ...; | LoopUnrolling.cs:55:10:55:11 | M7 | | LoopUnrolling.cs:63:35:63:35 | access to local variable x | LoopUnrolling.cs:55:10:55:11 | M7 | -| LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:67:10:67:11 | M8 | -| LoopUnrolling.cs:67:10:67:11 | exit M8 | LoopUnrolling.cs:67:10:67:11 | M8 | -| LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | LoopUnrolling.cs:67:10:67:11 | M8 | +| LoopUnrolling.cs:67:10:67:11 | Entry | LoopUnrolling.cs:67:10:67:11 | M8 | +| LoopUnrolling.cs:67:10:67:11 | Exit | LoopUnrolling.cs:67:10:67:11 | M8 | +| LoopUnrolling.cs:67:10:67:11 | Normal Exit | LoopUnrolling.cs:67:10:67:11 | M8 | +| LoopUnrolling.cs:67:26:67:29 | args | LoopUnrolling.cs:67:10:67:11 | M8 | +| LoopUnrolling.cs:68:5:74:5 | After {...} | LoopUnrolling.cs:67:10:67:11 | M8 | | LoopUnrolling.cs:68:5:74:5 | {...} | LoopUnrolling.cs:67:10:67:11 | M8 | +| LoopUnrolling.cs:69:9:70:19 | After if (...) ... | LoopUnrolling.cs:67:10:67:11 | M8 | | LoopUnrolling.cs:69:9:70:19 | if (...) ... | LoopUnrolling.cs:67:10:67:11 | M8 | -| LoopUnrolling.cs:69:13:69:23 | [false] !... | LoopUnrolling.cs:67:10:67:11 | M8 | -| LoopUnrolling.cs:69:13:69:23 | [true] !... | LoopUnrolling.cs:67:10:67:11 | M8 | +| LoopUnrolling.cs:69:13:69:23 | !... | LoopUnrolling.cs:67:10:67:11 | M8 | +| LoopUnrolling.cs:69:13:69:23 | After !... [false] | LoopUnrolling.cs:67:10:67:11 | M8 | +| LoopUnrolling.cs:69:13:69:23 | After !... [true] | LoopUnrolling.cs:67:10:67:11 | M8 | | LoopUnrolling.cs:69:14:69:17 | access to parameter args | LoopUnrolling.cs:67:10:67:11 | M8 | +| LoopUnrolling.cs:69:14:69:23 | After call to method Any [false] | LoopUnrolling.cs:67:10:67:11 | M8 | +| LoopUnrolling.cs:69:14:69:23 | After call to method Any [true] | LoopUnrolling.cs:67:10:67:11 | M8 | +| LoopUnrolling.cs:69:14:69:23 | Before call to method Any | LoopUnrolling.cs:67:10:67:11 | M8 | | LoopUnrolling.cs:69:14:69:23 | call to method Any | LoopUnrolling.cs:67:10:67:11 | M8 | +| LoopUnrolling.cs:70:13:70:19 | Before return ...; | LoopUnrolling.cs:67:10:67:11 | M8 | | LoopUnrolling.cs:70:13:70:19 | return ...; | LoopUnrolling.cs:67:10:67:11 | M8 | | LoopUnrolling.cs:71:9:71:12 | access to parameter args | LoopUnrolling.cs:67:10:67:11 | M8 | +| LoopUnrolling.cs:71:9:71:20 | After call to method Clear | LoopUnrolling.cs:67:10:67:11 | M8 | +| LoopUnrolling.cs:71:9:71:20 | Before call to method Clear | LoopUnrolling.cs:67:10:67:11 | M8 | | LoopUnrolling.cs:71:9:71:20 | call to method Clear | LoopUnrolling.cs:67:10:67:11 | M8 | | LoopUnrolling.cs:71:9:71:21 | ...; | LoopUnrolling.cs:67:10:67:11 | M8 | +| LoopUnrolling.cs:71:9:71:21 | After ...; | LoopUnrolling.cs:67:10:67:11 | M8 | +| LoopUnrolling.cs:72:9:73:35 | After foreach (... ... in ...) ... | LoopUnrolling.cs:67:10:67:11 | M8 | +| LoopUnrolling.cs:72:9:73:35 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:67:10:67:11 | M8 | | LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:67:10:67:11 | M8 | | LoopUnrolling.cs:72:22:72:24 | String arg | LoopUnrolling.cs:67:10:67:11 | M8 | +| LoopUnrolling.cs:72:29:72:32 | After access to parameter args [empty] | LoopUnrolling.cs:67:10:67:11 | M8 | +| LoopUnrolling.cs:72:29:72:32 | After access to parameter args [non-empty] | LoopUnrolling.cs:67:10:67:11 | M8 | | LoopUnrolling.cs:72:29:72:32 | access to parameter args | LoopUnrolling.cs:67:10:67:11 | M8 | +| LoopUnrolling.cs:73:13:73:34 | After call to method WriteLine | LoopUnrolling.cs:67:10:67:11 | M8 | +| LoopUnrolling.cs:73:13:73:34 | Before call to method WriteLine | LoopUnrolling.cs:67:10:67:11 | M8 | | LoopUnrolling.cs:73:13:73:34 | call to method WriteLine | LoopUnrolling.cs:67:10:67:11 | M8 | | LoopUnrolling.cs:73:13:73:35 | ...; | LoopUnrolling.cs:67:10:67:11 | M8 | +| LoopUnrolling.cs:73:13:73:35 | After ...; | LoopUnrolling.cs:67:10:67:11 | M8 | | LoopUnrolling.cs:73:31:73:33 | access to local variable arg | LoopUnrolling.cs:67:10:67:11 | M8 | -| LoopUnrolling.cs:76:10:76:11 | enter M9 | LoopUnrolling.cs:76:10:76:11 | M9 | -| LoopUnrolling.cs:76:10:76:11 | exit M9 | LoopUnrolling.cs:76:10:76:11 | M9 | -| LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | LoopUnrolling.cs:76:10:76:11 | M9 | +| LoopUnrolling.cs:76:10:76:11 | Entry | LoopUnrolling.cs:76:10:76:11 | M9 | +| LoopUnrolling.cs:76:10:76:11 | Exit | LoopUnrolling.cs:76:10:76:11 | M9 | +| LoopUnrolling.cs:76:10:76:11 | Normal Exit | LoopUnrolling.cs:76:10:76:11 | M9 | +| LoopUnrolling.cs:77:5:83:5 | After {...} | LoopUnrolling.cs:76:10:76:11 | M9 | | LoopUnrolling.cs:77:5:83:5 | {...} | LoopUnrolling.cs:76:10:76:11 | M9 | | LoopUnrolling.cs:78:9:78:34 | ... ...; | LoopUnrolling.cs:76:10:76:11 | M9 | +| LoopUnrolling.cs:78:9:78:34 | After ... ...; | LoopUnrolling.cs:76:10:76:11 | M9 | +| LoopUnrolling.cs:78:13:78:14 | access to local variable xs | LoopUnrolling.cs:76:10:76:11 | M9 | +| LoopUnrolling.cs:78:13:78:33 | After String[,] xs = ... | LoopUnrolling.cs:76:10:76:11 | M9 | +| LoopUnrolling.cs:78:13:78:33 | Before String[,] xs = ... | LoopUnrolling.cs:76:10:76:11 | M9 | | LoopUnrolling.cs:78:13:78:33 | String[,] xs = ... | LoopUnrolling.cs:76:10:76:11 | M9 | +| LoopUnrolling.cs:78:18:78:33 | After array creation of type String[,] | LoopUnrolling.cs:76:10:76:11 | M9 | +| LoopUnrolling.cs:78:18:78:33 | Before array creation of type String[,] | LoopUnrolling.cs:76:10:76:11 | M9 | | LoopUnrolling.cs:78:18:78:33 | array creation of type String[,] | LoopUnrolling.cs:76:10:76:11 | M9 | | LoopUnrolling.cs:78:29:78:29 | 2 | LoopUnrolling.cs:76:10:76:11 | M9 | | LoopUnrolling.cs:78:32:78:32 | 0 | LoopUnrolling.cs:76:10:76:11 | M9 | +| LoopUnrolling.cs:79:9:82:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:76:10:76:11 | M9 | +| LoopUnrolling.cs:79:9:82:9 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:76:10:76:11 | M9 | | LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:76:10:76:11 | M9 | | LoopUnrolling.cs:79:22:79:22 | String x | LoopUnrolling.cs:76:10:76:11 | M9 | +| LoopUnrolling.cs:79:27:79:28 | After access to local variable xs [empty] | LoopUnrolling.cs:76:10:76:11 | M9 | +| LoopUnrolling.cs:79:27:79:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:76:10:76:11 | M9 | | LoopUnrolling.cs:79:27:79:28 | access to local variable xs | LoopUnrolling.cs:76:10:76:11 | M9 | +| LoopUnrolling.cs:80:9:82:9 | After {...} | LoopUnrolling.cs:76:10:76:11 | M9 | | LoopUnrolling.cs:80:9:82:9 | {...} | LoopUnrolling.cs:76:10:76:11 | M9 | +| LoopUnrolling.cs:81:13:81:32 | After call to method WriteLine | LoopUnrolling.cs:76:10:76:11 | M9 | +| LoopUnrolling.cs:81:13:81:32 | Before call to method WriteLine | LoopUnrolling.cs:76:10:76:11 | M9 | | LoopUnrolling.cs:81:13:81:32 | call to method WriteLine | LoopUnrolling.cs:76:10:76:11 | M9 | | LoopUnrolling.cs:81:13:81:33 | ...; | LoopUnrolling.cs:76:10:76:11 | M9 | +| LoopUnrolling.cs:81:13:81:33 | After ...; | LoopUnrolling.cs:76:10:76:11 | M9 | | LoopUnrolling.cs:81:31:81:31 | access to local variable x | LoopUnrolling.cs:76:10:76:11 | M9 | -| LoopUnrolling.cs:85:10:85:12 | enter M10 | LoopUnrolling.cs:85:10:85:12 | M10 | -| LoopUnrolling.cs:85:10:85:12 | exit M10 | LoopUnrolling.cs:85:10:85:12 | M10 | -| LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | LoopUnrolling.cs:85:10:85:12 | M10 | +| LoopUnrolling.cs:85:10:85:12 | Entry | LoopUnrolling.cs:85:10:85:12 | M10 | +| LoopUnrolling.cs:85:10:85:12 | Exit | LoopUnrolling.cs:85:10:85:12 | M10 | +| LoopUnrolling.cs:85:10:85:12 | Normal Exit | LoopUnrolling.cs:85:10:85:12 | M10 | +| LoopUnrolling.cs:86:5:92:5 | After {...} | LoopUnrolling.cs:85:10:85:12 | M10 | | LoopUnrolling.cs:86:5:92:5 | {...} | LoopUnrolling.cs:85:10:85:12 | M10 | | LoopUnrolling.cs:87:9:87:34 | ... ...; | LoopUnrolling.cs:85:10:85:12 | M10 | +| LoopUnrolling.cs:87:9:87:34 | After ... ...; | LoopUnrolling.cs:85:10:85:12 | M10 | +| LoopUnrolling.cs:87:13:87:14 | access to local variable xs | LoopUnrolling.cs:85:10:85:12 | M10 | +| LoopUnrolling.cs:87:13:87:33 | After String[,] xs = ... | LoopUnrolling.cs:85:10:85:12 | M10 | +| LoopUnrolling.cs:87:13:87:33 | Before String[,] xs = ... | LoopUnrolling.cs:85:10:85:12 | M10 | | LoopUnrolling.cs:87:13:87:33 | String[,] xs = ... | LoopUnrolling.cs:85:10:85:12 | M10 | +| LoopUnrolling.cs:87:18:87:33 | After array creation of type String[,] | LoopUnrolling.cs:85:10:85:12 | M10 | +| LoopUnrolling.cs:87:18:87:33 | Before array creation of type String[,] | LoopUnrolling.cs:85:10:85:12 | M10 | | LoopUnrolling.cs:87:18:87:33 | array creation of type String[,] | LoopUnrolling.cs:85:10:85:12 | M10 | | LoopUnrolling.cs:87:29:87:29 | 0 | LoopUnrolling.cs:85:10:85:12 | M10 | | LoopUnrolling.cs:87:32:87:32 | 2 | LoopUnrolling.cs:85:10:85:12 | M10 | +| LoopUnrolling.cs:88:9:91:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:85:10:85:12 | M10 | +| LoopUnrolling.cs:88:9:91:9 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:85:10:85:12 | M10 | | LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:85:10:85:12 | M10 | | LoopUnrolling.cs:88:22:88:22 | String x | LoopUnrolling.cs:85:10:85:12 | M10 | +| LoopUnrolling.cs:88:27:88:28 | After access to local variable xs [empty] | LoopUnrolling.cs:85:10:85:12 | M10 | +| LoopUnrolling.cs:88:27:88:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:85:10:85:12 | M10 | | LoopUnrolling.cs:88:27:88:28 | access to local variable xs | LoopUnrolling.cs:85:10:85:12 | M10 | +| LoopUnrolling.cs:89:9:91:9 | After {...} | LoopUnrolling.cs:85:10:85:12 | M10 | | LoopUnrolling.cs:89:9:91:9 | {...} | LoopUnrolling.cs:85:10:85:12 | M10 | +| LoopUnrolling.cs:90:13:90:32 | After call to method WriteLine | LoopUnrolling.cs:85:10:85:12 | M10 | +| LoopUnrolling.cs:90:13:90:32 | Before call to method WriteLine | LoopUnrolling.cs:85:10:85:12 | M10 | | LoopUnrolling.cs:90:13:90:32 | call to method WriteLine | LoopUnrolling.cs:85:10:85:12 | M10 | | LoopUnrolling.cs:90:13:90:33 | ...; | LoopUnrolling.cs:85:10:85:12 | M10 | +| LoopUnrolling.cs:90:13:90:33 | After ...; | LoopUnrolling.cs:85:10:85:12 | M10 | | LoopUnrolling.cs:90:31:90:31 | access to local variable x | LoopUnrolling.cs:85:10:85:12 | M10 | -| LoopUnrolling.cs:94:10:94:12 | enter M11 | LoopUnrolling.cs:94:10:94:12 | M11 | -| LoopUnrolling.cs:94:10:94:12 | exit M11 | LoopUnrolling.cs:94:10:94:12 | M11 | -| LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | LoopUnrolling.cs:94:10:94:12 | M11 | +| LoopUnrolling.cs:94:10:94:12 | Entry | LoopUnrolling.cs:94:10:94:12 | M11 | +| LoopUnrolling.cs:94:10:94:12 | Exit | LoopUnrolling.cs:94:10:94:12 | M11 | +| LoopUnrolling.cs:94:10:94:12 | Normal Exit | LoopUnrolling.cs:94:10:94:12 | M11 | +| LoopUnrolling.cs:95:5:101:5 | After {...} | LoopUnrolling.cs:94:10:94:12 | M11 | | LoopUnrolling.cs:95:5:101:5 | {...} | LoopUnrolling.cs:94:10:94:12 | M11 | | LoopUnrolling.cs:96:9:96:34 | ... ...; | LoopUnrolling.cs:94:10:94:12 | M11 | +| LoopUnrolling.cs:96:9:96:34 | After ... ...; | LoopUnrolling.cs:94:10:94:12 | M11 | +| LoopUnrolling.cs:96:13:96:14 | access to local variable xs | LoopUnrolling.cs:94:10:94:12 | M11 | +| LoopUnrolling.cs:96:13:96:33 | After String[,] xs = ... | LoopUnrolling.cs:94:10:94:12 | M11 | +| LoopUnrolling.cs:96:13:96:33 | Before String[,] xs = ... | LoopUnrolling.cs:94:10:94:12 | M11 | | LoopUnrolling.cs:96:13:96:33 | String[,] xs = ... | LoopUnrolling.cs:94:10:94:12 | M11 | +| LoopUnrolling.cs:96:18:96:33 | After array creation of type String[,] | LoopUnrolling.cs:94:10:94:12 | M11 | +| LoopUnrolling.cs:96:18:96:33 | Before array creation of type String[,] | LoopUnrolling.cs:94:10:94:12 | M11 | | LoopUnrolling.cs:96:18:96:33 | array creation of type String[,] | LoopUnrolling.cs:94:10:94:12 | M11 | | LoopUnrolling.cs:96:29:96:29 | 2 | LoopUnrolling.cs:94:10:94:12 | M11 | | LoopUnrolling.cs:96:32:96:32 | 2 | LoopUnrolling.cs:94:10:94:12 | M11 | +| LoopUnrolling.cs:97:9:100:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:94:10:94:12 | M11 | +| LoopUnrolling.cs:97:9:100:9 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:94:10:94:12 | M11 | | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:94:10:94:12 | M11 | | LoopUnrolling.cs:97:22:97:22 | String x | LoopUnrolling.cs:94:10:94:12 | M11 | +| LoopUnrolling.cs:97:27:97:28 | After access to local variable xs [empty] | LoopUnrolling.cs:94:10:94:12 | M11 | +| LoopUnrolling.cs:97:27:97:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:94:10:94:12 | M11 | | LoopUnrolling.cs:97:27:97:28 | access to local variable xs | LoopUnrolling.cs:94:10:94:12 | M11 | +| LoopUnrolling.cs:98:9:100:9 | After {...} | LoopUnrolling.cs:94:10:94:12 | M11 | | LoopUnrolling.cs:98:9:100:9 | {...} | LoopUnrolling.cs:94:10:94:12 | M11 | +| LoopUnrolling.cs:99:13:99:32 | After call to method WriteLine | LoopUnrolling.cs:94:10:94:12 | M11 | +| LoopUnrolling.cs:99:13:99:32 | Before call to method WriteLine | LoopUnrolling.cs:94:10:94:12 | M11 | | LoopUnrolling.cs:99:13:99:32 | call to method WriteLine | LoopUnrolling.cs:94:10:94:12 | M11 | | LoopUnrolling.cs:99:13:99:33 | ...; | LoopUnrolling.cs:94:10:94:12 | M11 | +| LoopUnrolling.cs:99:13:99:33 | After ...; | LoopUnrolling.cs:94:10:94:12 | M11 | | LoopUnrolling.cs:99:31:99:31 | access to local variable x | LoopUnrolling.cs:94:10:94:12 | M11 | +| MultiImplementationA.cs:4:7:4:8 | After call to constructor Object | MultiImplementationA.cs:4:7:4:8 | C1 | +| MultiImplementationA.cs:4:7:4:8 | After call to method | MultiImplementationA.cs:4:7:4:8 | C1 | +| MultiImplementationA.cs:4:7:4:8 | Before call to constructor Object | MultiImplementationA.cs:4:7:4:8 | C1 | +| MultiImplementationA.cs:4:7:4:8 | Before call to method | MultiImplementationA.cs:4:7:4:8 | C1 | +| MultiImplementationA.cs:4:7:4:8 | Entry | MultiImplementationA.cs:4:7:4:8 | C1 | +| MultiImplementationA.cs:4:7:4:8 | Exit | MultiImplementationA.cs:4:7:4:8 | C1 | +| MultiImplementationA.cs:4:7:4:8 | Normal Exit | MultiImplementationA.cs:4:7:4:8 | C1 | | MultiImplementationA.cs:4:7:4:8 | call to constructor Object | MultiImplementationA.cs:4:7:4:8 | C1 | | MultiImplementationA.cs:4:7:4:8 | call to method | MultiImplementationA.cs:4:7:4:8 | C1 | -| MultiImplementationA.cs:4:7:4:8 | enter C1 | MultiImplementationA.cs:4:7:4:8 | C1 | -| MultiImplementationA.cs:4:7:4:8 | exit C1 | MultiImplementationA.cs:4:7:4:8 | C1 | -| MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | MultiImplementationA.cs:4:7:4:8 | C1 | | MultiImplementationA.cs:4:7:4:8 | this access | MultiImplementationA.cs:4:7:4:8 | C1 | | MultiImplementationA.cs:4:7:4:8 | {...} | MultiImplementationA.cs:4:7:4:8 | C1 | -| MultiImplementationA.cs:6:22:6:31 | enter get_P1 | MultiImplementationA.cs:6:22:6:31 | get_P1 | -| MultiImplementationA.cs:6:22:6:31 | exit get_P1 | MultiImplementationA.cs:6:22:6:31 | get_P1 | -| MultiImplementationA.cs:6:22:6:31 | exit get_P1 (abnormal) | MultiImplementationA.cs:6:22:6:31 | get_P1 | -| MultiImplementationA.cs:6:22:6:31 | exit get_P1 (normal) | MultiImplementationA.cs:6:22:6:31 | get_P1 | +| MultiImplementationA.cs:6:22:6:31 | Before throw ... | MultiImplementationA.cs:6:22:6:31 | get_P1 | +| MultiImplementationA.cs:6:22:6:31 | Entry | MultiImplementationA.cs:6:22:6:31 | get_P1 | +| MultiImplementationA.cs:6:22:6:31 | Exceptional Exit | MultiImplementationA.cs:6:22:6:31 | get_P1 | +| MultiImplementationA.cs:6:22:6:31 | Exit | MultiImplementationA.cs:6:22:6:31 | get_P1 | +| MultiImplementationA.cs:6:22:6:31 | Normal Exit | MultiImplementationA.cs:6:22:6:31 | get_P1 | | MultiImplementationA.cs:6:22:6:31 | throw ... | MultiImplementationA.cs:6:22:6:31 | get_P1 | | MultiImplementationA.cs:6:28:6:31 | null | MultiImplementationA.cs:6:22:6:31 | get_P1 | -| MultiImplementationA.cs:7:21:7:23 | enter get_P2 | MultiImplementationA.cs:7:21:7:23 | get_P2 | -| MultiImplementationA.cs:7:21:7:23 | exit get_P2 | MultiImplementationA.cs:7:21:7:23 | get_P2 | -| MultiImplementationA.cs:7:21:7:23 | exit get_P2 (abnormal) | MultiImplementationA.cs:7:21:7:23 | get_P2 | -| MultiImplementationA.cs:7:21:7:23 | exit get_P2 (normal) | MultiImplementationA.cs:7:21:7:23 | get_P2 | +| MultiImplementationA.cs:7:21:7:23 | Entry | MultiImplementationA.cs:7:21:7:23 | get_P2 | +| MultiImplementationA.cs:7:21:7:23 | Exceptional Exit | MultiImplementationA.cs:7:21:7:23 | get_P2 | +| MultiImplementationA.cs:7:21:7:23 | Exit | MultiImplementationA.cs:7:21:7:23 | get_P2 | +| MultiImplementationA.cs:7:21:7:23 | Normal Exit | MultiImplementationA.cs:7:21:7:23 | get_P2 | | MultiImplementationA.cs:7:25:7:39 | {...} | MultiImplementationA.cs:7:21:7:23 | get_P2 | +| MultiImplementationA.cs:7:27:7:37 | Before throw ...; | MultiImplementationA.cs:7:21:7:23 | get_P2 | | MultiImplementationA.cs:7:27:7:37 | throw ...; | MultiImplementationA.cs:7:21:7:23 | get_P2 | | MultiImplementationA.cs:7:33:7:36 | null | MultiImplementationA.cs:7:21:7:23 | get_P2 | -| MultiImplementationA.cs:7:41:7:43 | enter set_P2 | MultiImplementationA.cs:7:41:7:43 | set_P2 | -| MultiImplementationA.cs:7:41:7:43 | exit set_P2 | MultiImplementationA.cs:7:41:7:43 | set_P2 | -| MultiImplementationA.cs:7:41:7:43 | exit set_P2 (abnormal) | MultiImplementationA.cs:7:41:7:43 | set_P2 | -| MultiImplementationA.cs:7:41:7:43 | exit set_P2 (normal) | MultiImplementationA.cs:7:41:7:43 | set_P2 | +| MultiImplementationA.cs:7:41:7:43 | Entry | MultiImplementationA.cs:7:41:7:43 | set_P2 | +| MultiImplementationA.cs:7:41:7:43 | Exceptional Exit | MultiImplementationA.cs:7:41:7:43 | set_P2 | +| MultiImplementationA.cs:7:41:7:43 | Exit | MultiImplementationA.cs:7:41:7:43 | set_P2 | +| MultiImplementationA.cs:7:41:7:43 | Normal Exit | MultiImplementationA.cs:7:41:7:43 | set_P2 | +| MultiImplementationA.cs:7:41:7:43 | value | MultiImplementationA.cs:7:41:7:43 | set_P2 | | MultiImplementationA.cs:7:45:7:59 | {...} | MultiImplementationA.cs:7:41:7:43 | set_P2 | +| MultiImplementationA.cs:7:47:7:57 | Before throw ...; | MultiImplementationA.cs:7:41:7:43 | set_P2 | | MultiImplementationA.cs:7:47:7:57 | throw ...; | MultiImplementationA.cs:7:41:7:43 | set_P2 | | MultiImplementationA.cs:7:53:7:56 | null | MultiImplementationA.cs:7:41:7:43 | set_P2 | -| MultiImplementationA.cs:8:16:8:16 | enter M | MultiImplementationA.cs:8:16:8:16 | M | -| MultiImplementationA.cs:8:16:8:16 | exit M | MultiImplementationA.cs:8:16:8:16 | M | -| MultiImplementationA.cs:8:16:8:16 | exit M (abnormal) | MultiImplementationA.cs:8:16:8:16 | M | -| MultiImplementationA.cs:8:16:8:16 | exit M (normal) | MultiImplementationA.cs:8:16:8:16 | M | +| MultiImplementationA.cs:8:16:8:16 | Entry | MultiImplementationA.cs:8:16:8:16 | M | +| MultiImplementationA.cs:8:16:8:16 | Exceptional Exit | MultiImplementationA.cs:8:16:8:16 | M | +| MultiImplementationA.cs:8:16:8:16 | Exit | MultiImplementationA.cs:8:16:8:16 | M | +| MultiImplementationA.cs:8:16:8:16 | Normal Exit | MultiImplementationA.cs:8:16:8:16 | M | +| MultiImplementationA.cs:8:23:8:32 | Before throw ... | MultiImplementationA.cs:8:16:8:16 | M | | MultiImplementationA.cs:8:23:8:32 | throw ... | MultiImplementationA.cs:8:16:8:16 | M | | MultiImplementationA.cs:8:29:8:32 | null | MultiImplementationA.cs:8:16:8:16 | M | -| MultiImplementationA.cs:11:7:11:8 | enter | MultiImplementationA.cs:11:7:11:8 | | -| MultiImplementationA.cs:11:7:11:8 | exit | MultiImplementationA.cs:11:7:11:8 | | -| MultiImplementationA.cs:11:7:11:8 | exit (normal) | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationA.cs:11:7:11:8 | Entry | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationA.cs:11:7:11:8 | Exit | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationA.cs:11:7:11:8 | Normal Exit | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationA.cs:13:16:13:16 | After access to field F | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationA.cs:13:16:13:16 | Before access to field F | MultiImplementationA.cs:11:7:11:8 | | | MultiImplementationA.cs:13:16:13:16 | access to field F | MultiImplementationA.cs:11:7:11:8 | | | MultiImplementationA.cs:13:16:13:16 | this access | MultiImplementationA.cs:11:7:11:8 | | | MultiImplementationA.cs:13:16:13:20 | ... = ... | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationA.cs:13:16:13:20 | After ... = ... | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationA.cs:13:16:13:20 | Before ... = ... | MultiImplementationA.cs:11:7:11:8 | | | MultiImplementationA.cs:13:20:13:20 | 0 | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationA.cs:14:25:14:25 | i | MultiImplementationA.cs:14:31:14:31 | get_Item | +| MultiImplementationA.cs:14:31:14:31 | Entry | MultiImplementationA.cs:14:31:14:31 | get_Item | +| MultiImplementationA.cs:14:31:14:31 | Exceptional Exit | MultiImplementationA.cs:14:31:14:31 | get_Item | +| MultiImplementationA.cs:14:31:14:31 | Exit | MultiImplementationA.cs:14:31:14:31 | get_Item | +| MultiImplementationA.cs:14:31:14:31 | Normal Exit | MultiImplementationA.cs:14:31:14:31 | get_Item | | MultiImplementationA.cs:14:31:14:31 | access to parameter i | MultiImplementationA.cs:14:31:14:31 | get_Item | -| MultiImplementationA.cs:14:31:14:31 | enter get_Item | MultiImplementationA.cs:14:31:14:31 | get_Item | -| MultiImplementationA.cs:14:31:14:31 | exit get_Item | MultiImplementationA.cs:14:31:14:31 | get_Item | -| MultiImplementationA.cs:14:31:14:31 | exit get_Item (abnormal) | MultiImplementationA.cs:14:31:14:31 | get_Item | -| MultiImplementationA.cs:14:31:14:31 | exit get_Item (normal) | MultiImplementationA.cs:14:31:14:31 | get_Item | -| MultiImplementationA.cs:15:36:15:38 | enter get_Item | MultiImplementationA.cs:15:36:15:38 | get_Item | -| MultiImplementationA.cs:15:36:15:38 | exit get_Item | MultiImplementationA.cs:15:36:15:38 | get_Item | -| MultiImplementationA.cs:15:36:15:38 | exit get_Item (abnormal) | MultiImplementationA.cs:15:36:15:38 | get_Item | -| MultiImplementationA.cs:15:36:15:38 | exit get_Item (normal) | MultiImplementationA.cs:15:36:15:38 | get_Item | +| MultiImplementationA.cs:15:31:15:31 | s | MultiImplementationA.cs:15:36:15:38 | get_Item | +| MultiImplementationA.cs:15:31:15:31 | s | MultiImplementationA.cs:15:54:15:56 | set_Item | +| MultiImplementationA.cs:15:36:15:38 | Entry | MultiImplementationA.cs:15:36:15:38 | get_Item | +| MultiImplementationA.cs:15:36:15:38 | Exceptional Exit | MultiImplementationA.cs:15:36:15:38 | get_Item | +| MultiImplementationA.cs:15:36:15:38 | Exit | MultiImplementationA.cs:15:36:15:38 | get_Item | +| MultiImplementationA.cs:15:36:15:38 | Normal Exit | MultiImplementationA.cs:15:36:15:38 | get_Item | | MultiImplementationA.cs:15:40:15:52 | {...} | MultiImplementationA.cs:15:36:15:38 | get_Item | +| MultiImplementationA.cs:15:42:15:50 | Before return ...; | MultiImplementationA.cs:15:36:15:38 | get_Item | | MultiImplementationA.cs:15:42:15:50 | return ...; | MultiImplementationA.cs:15:36:15:38 | get_Item | | MultiImplementationA.cs:15:49:15:49 | access to parameter s | MultiImplementationA.cs:15:36:15:38 | get_Item | -| MultiImplementationA.cs:15:54:15:56 | enter set_Item | MultiImplementationA.cs:15:54:15:56 | set_Item | -| MultiImplementationA.cs:15:54:15:56 | exit set_Item | MultiImplementationA.cs:15:54:15:56 | set_Item | -| MultiImplementationA.cs:15:54:15:56 | exit set_Item (normal) | MultiImplementationA.cs:15:54:15:56 | set_Item | +| MultiImplementationA.cs:15:54:15:56 | Entry | MultiImplementationA.cs:15:54:15:56 | set_Item | +| MultiImplementationA.cs:15:54:15:56 | Exit | MultiImplementationA.cs:15:54:15:56 | set_Item | +| MultiImplementationA.cs:15:54:15:56 | Normal Exit | MultiImplementationA.cs:15:54:15:56 | set_Item | +| MultiImplementationA.cs:15:54:15:56 | value | MultiImplementationA.cs:15:54:15:56 | set_Item | | MultiImplementationA.cs:15:58:15:60 | {...} | MultiImplementationA.cs:15:54:15:56 | set_Item | -| MultiImplementationA.cs:16:17:16:18 | enter M1 | MultiImplementationA.cs:16:17:16:18 | M1 | -| MultiImplementationA.cs:16:17:16:18 | exit M1 | MultiImplementationA.cs:16:17:16:18 | M1 | -| MultiImplementationA.cs:16:17:16:18 | exit M1 (normal) | MultiImplementationA.cs:16:17:16:18 | M1 | +| MultiImplementationA.cs:16:17:16:18 | Entry | MultiImplementationA.cs:16:17:16:18 | M1 | +| MultiImplementationA.cs:16:17:16:18 | Exit | MultiImplementationA.cs:16:17:16:18 | M1 | +| MultiImplementationA.cs:16:17:16:18 | Normal Exit | MultiImplementationA.cs:16:17:16:18 | M1 | +| MultiImplementationA.cs:16:24:16:24 | i | MultiImplementationA.cs:16:17:16:18 | M1 | +| MultiImplementationA.cs:17:5:19:5 | After {...} | MultiImplementationA.cs:16:17:16:18 | M1 | | MultiImplementationA.cs:17:5:19:5 | {...} | MultiImplementationA.cs:16:17:16:18 | M1 | +| MultiImplementationA.cs:18:9:18:22 | Entry | MultiImplementationA.cs:18:9:18:22 | M2 | +| MultiImplementationA.cs:18:9:18:22 | Exit | MultiImplementationA.cs:18:9:18:22 | M2 | | MultiImplementationA.cs:18:9:18:22 | M2(...) | MultiImplementationA.cs:16:17:16:18 | M1 | -| MultiImplementationA.cs:18:9:18:22 | enter M2 | MultiImplementationA.cs:18:9:18:22 | M2 | -| MultiImplementationA.cs:18:9:18:22 | exit M2 | MultiImplementationA.cs:18:9:18:22 | M2 | -| MultiImplementationA.cs:18:9:18:22 | exit M2 (normal) | MultiImplementationA.cs:18:9:18:22 | M2 | +| MultiImplementationA.cs:18:9:18:22 | Normal Exit | MultiImplementationA.cs:18:9:18:22 | M2 | | MultiImplementationA.cs:18:21:18:21 | 0 | MultiImplementationA.cs:18:9:18:22 | M2 | +| MultiImplementationA.cs:20:12:20:13 | After call to constructor Object | MultiImplementationA.cs:20:12:20:13 | C2 | +| MultiImplementationA.cs:20:12:20:13 | After call to method | MultiImplementationA.cs:20:12:20:13 | C2 | +| MultiImplementationA.cs:20:12:20:13 | Before call to constructor Object | MultiImplementationA.cs:20:12:20:13 | C2 | +| MultiImplementationA.cs:20:12:20:13 | Before call to method | MultiImplementationA.cs:20:12:20:13 | C2 | +| MultiImplementationA.cs:20:12:20:13 | Entry | MultiImplementationA.cs:20:12:20:13 | C2 | +| MultiImplementationA.cs:20:12:20:13 | Exceptional Exit | MultiImplementationA.cs:20:12:20:13 | C2 | +| MultiImplementationA.cs:20:12:20:13 | Exit | MultiImplementationA.cs:20:12:20:13 | C2 | +| MultiImplementationA.cs:20:12:20:13 | Normal Exit | MultiImplementationA.cs:20:12:20:13 | C2 | | MultiImplementationA.cs:20:12:20:13 | call to constructor Object | MultiImplementationA.cs:20:12:20:13 | C2 | | MultiImplementationA.cs:20:12:20:13 | call to method | MultiImplementationA.cs:20:12:20:13 | C2 | -| MultiImplementationA.cs:20:12:20:13 | enter C2 | MultiImplementationA.cs:20:12:20:13 | C2 | -| MultiImplementationA.cs:20:12:20:13 | exit C2 | MultiImplementationA.cs:20:12:20:13 | C2 | -| MultiImplementationA.cs:20:12:20:13 | exit C2 (abnormal) | MultiImplementationA.cs:20:12:20:13 | C2 | -| MultiImplementationA.cs:20:12:20:13 | exit C2 (normal) | MultiImplementationA.cs:20:12:20:13 | C2 | | MultiImplementationA.cs:20:12:20:13 | this access | MultiImplementationA.cs:20:12:20:13 | C2 | +| MultiImplementationA.cs:20:19:20:19 | i | MultiImplementationA.cs:20:12:20:13 | C2 | +| MultiImplementationA.cs:20:22:20:31 | After {...} | MultiImplementationA.cs:20:12:20:13 | C2 | | MultiImplementationA.cs:20:22:20:31 | {...} | MultiImplementationA.cs:20:12:20:13 | C2 | +| MultiImplementationA.cs:20:24:20:24 | After access to field F | MultiImplementationA.cs:20:12:20:13 | C2 | +| MultiImplementationA.cs:20:24:20:24 | Before access to field F | MultiImplementationA.cs:20:12:20:13 | C2 | | MultiImplementationA.cs:20:24:20:24 | access to field F | MultiImplementationA.cs:20:12:20:13 | C2 | | MultiImplementationA.cs:20:24:20:24 | this access | MultiImplementationA.cs:20:12:20:13 | C2 | | MultiImplementationA.cs:20:24:20:28 | ... = ... | MultiImplementationA.cs:20:12:20:13 | C2 | +| MultiImplementationA.cs:20:24:20:28 | After ... = ... | MultiImplementationA.cs:20:12:20:13 | C2 | +| MultiImplementationA.cs:20:24:20:28 | Before ... = ... | MultiImplementationA.cs:20:12:20:13 | C2 | | MultiImplementationA.cs:20:24:20:29 | ...; | MultiImplementationA.cs:20:12:20:13 | C2 | +| MultiImplementationA.cs:20:24:20:29 | After ...; | MultiImplementationA.cs:20:12:20:13 | C2 | | MultiImplementationA.cs:20:28:20:28 | access to parameter i | MultiImplementationA.cs:20:12:20:13 | C2 | -| MultiImplementationA.cs:21:12:21:13 | enter C2 | MultiImplementationA.cs:21:12:21:13 | C2 | -| MultiImplementationA.cs:21:12:21:13 | exit C2 | MultiImplementationA.cs:21:12:21:13 | C2 | -| MultiImplementationA.cs:21:12:21:13 | exit C2 (normal) | MultiImplementationA.cs:21:12:21:13 | C2 | +| MultiImplementationA.cs:21:12:21:13 | Entry | MultiImplementationA.cs:21:12:21:13 | C2 | +| MultiImplementationA.cs:21:12:21:13 | Exit | MultiImplementationA.cs:21:12:21:13 | C2 | +| MultiImplementationA.cs:21:12:21:13 | Normal Exit | MultiImplementationA.cs:21:12:21:13 | C2 | +| MultiImplementationA.cs:21:19:21:22 | After call to constructor C2 | MultiImplementationA.cs:21:12:21:13 | C2 | +| MultiImplementationA.cs:21:19:21:22 | Before call to constructor C2 | MultiImplementationA.cs:21:12:21:13 | C2 | | MultiImplementationA.cs:21:19:21:22 | call to constructor C2 | MultiImplementationA.cs:21:12:21:13 | C2 | | MultiImplementationA.cs:21:24:21:24 | 0 | MultiImplementationA.cs:21:12:21:13 | C2 | | MultiImplementationA.cs:21:27:21:29 | {...} | MultiImplementationA.cs:21:12:21:13 | C2 | -| MultiImplementationA.cs:22:6:22:7 | enter ~C2 | MultiImplementationA.cs:22:6:22:7 | ~C2 | -| MultiImplementationA.cs:22:6:22:7 | exit ~C2 | MultiImplementationA.cs:22:6:22:7 | ~C2 | -| MultiImplementationA.cs:22:6:22:7 | exit ~C2 (abnormal) | MultiImplementationA.cs:22:6:22:7 | ~C2 | -| MultiImplementationA.cs:22:6:22:7 | exit ~C2 (normal) | MultiImplementationA.cs:22:6:22:7 | ~C2 | +| MultiImplementationA.cs:22:6:22:7 | Entry | MultiImplementationA.cs:22:6:22:7 | ~C2 | +| MultiImplementationA.cs:22:6:22:7 | Exceptional Exit | MultiImplementationA.cs:22:6:22:7 | ~C2 | +| MultiImplementationA.cs:22:6:22:7 | Exit | MultiImplementationA.cs:22:6:22:7 | ~C2 | +| MultiImplementationA.cs:22:6:22:7 | Normal Exit | MultiImplementationA.cs:22:6:22:7 | ~C2 | | MultiImplementationA.cs:22:11:22:13 | {...} | MultiImplementationA.cs:22:6:22:7 | ~C2 | -| MultiImplementationA.cs:23:28:23:35 | enter implicit conversion | MultiImplementationA.cs:23:28:23:35 | implicit conversion | -| MultiImplementationA.cs:23:28:23:35 | exit implicit conversion | MultiImplementationA.cs:23:28:23:35 | implicit conversion | -| MultiImplementationA.cs:23:28:23:35 | exit implicit conversion (abnormal) | MultiImplementationA.cs:23:28:23:35 | implicit conversion | -| MultiImplementationA.cs:23:28:23:35 | exit implicit conversion (normal) | MultiImplementationA.cs:23:28:23:35 | implicit conversion | +| MultiImplementationA.cs:23:28:23:35 | Entry | MultiImplementationA.cs:23:28:23:35 | implicit conversion | +| MultiImplementationA.cs:23:28:23:35 | Exceptional Exit | MultiImplementationA.cs:23:28:23:35 | implicit conversion | +| MultiImplementationA.cs:23:28:23:35 | Exit | MultiImplementationA.cs:23:28:23:35 | implicit conversion | +| MultiImplementationA.cs:23:28:23:35 | Normal Exit | MultiImplementationA.cs:23:28:23:35 | implicit conversion | +| MultiImplementationA.cs:23:44:23:44 | i | MultiImplementationA.cs:23:28:23:35 | implicit conversion | | MultiImplementationA.cs:23:50:23:53 | null | MultiImplementationA.cs:23:28:23:35 | implicit conversion | +| MultiImplementationA.cs:24:16:24:16 | After access to property P | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationA.cs:24:16:24:16 | Before access to property P | MultiImplementationA.cs:11:7:11:8 | | | MultiImplementationA.cs:24:16:24:16 | access to property P | MultiImplementationA.cs:11:7:11:8 | | | MultiImplementationA.cs:24:16:24:16 | this access | MultiImplementationA.cs:11:7:11:8 | | | MultiImplementationA.cs:24:32:24:34 | ... = ... | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationA.cs:24:32:24:34 | After ... = ... | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationA.cs:24:32:24:34 | Before ... = ... | MultiImplementationA.cs:11:7:11:8 | | | MultiImplementationA.cs:24:34:24:34 | 0 | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationA.cs:28:7:28:8 | After call to constructor Object | MultiImplementationA.cs:28:7:28:8 | C3 | +| MultiImplementationA.cs:28:7:28:8 | After call to method | MultiImplementationA.cs:28:7:28:8 | C3 | +| MultiImplementationA.cs:28:7:28:8 | Before call to constructor Object | MultiImplementationA.cs:28:7:28:8 | C3 | +| MultiImplementationA.cs:28:7:28:8 | Before call to method | MultiImplementationA.cs:28:7:28:8 | C3 | +| MultiImplementationA.cs:28:7:28:8 | Entry | MultiImplementationA.cs:28:7:28:8 | C3 | +| MultiImplementationA.cs:28:7:28:8 | Exit | MultiImplementationA.cs:28:7:28:8 | C3 | +| MultiImplementationA.cs:28:7:28:8 | Normal Exit | MultiImplementationA.cs:28:7:28:8 | C3 | | MultiImplementationA.cs:28:7:28:8 | call to constructor Object | MultiImplementationA.cs:28:7:28:8 | C3 | | MultiImplementationA.cs:28:7:28:8 | call to method | MultiImplementationA.cs:28:7:28:8 | C3 | -| MultiImplementationA.cs:28:7:28:8 | enter C3 | MultiImplementationA.cs:28:7:28:8 | C3 | -| MultiImplementationA.cs:28:7:28:8 | exit C3 | MultiImplementationA.cs:28:7:28:8 | C3 | -| MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | MultiImplementationA.cs:28:7:28:8 | C3 | | MultiImplementationA.cs:28:7:28:8 | this access | MultiImplementationA.cs:28:7:28:8 | C3 | | MultiImplementationA.cs:28:7:28:8 | {...} | MultiImplementationA.cs:28:7:28:8 | C3 | -| MultiImplementationA.cs:30:21:30:23 | enter get_P3 | MultiImplementationA.cs:30:21:30:23 | get_P3 | -| MultiImplementationA.cs:30:21:30:23 | exit get_P3 | MultiImplementationA.cs:30:21:30:23 | get_P3 | -| MultiImplementationA.cs:30:21:30:23 | exit get_P3 (abnormal) | MultiImplementationA.cs:30:21:30:23 | get_P3 | +| MultiImplementationA.cs:30:21:30:23 | Entry | MultiImplementationA.cs:30:21:30:23 | get_P3 | +| MultiImplementationA.cs:30:21:30:23 | Exceptional Exit | MultiImplementationA.cs:30:21:30:23 | get_P3 | +| MultiImplementationA.cs:30:21:30:23 | Exit | MultiImplementationA.cs:30:21:30:23 | get_P3 | +| MultiImplementationA.cs:30:28:30:37 | Before throw ... | MultiImplementationA.cs:30:21:30:23 | get_P3 | | MultiImplementationA.cs:30:28:30:37 | throw ... | MultiImplementationA.cs:30:21:30:23 | get_P3 | | MultiImplementationA.cs:30:34:30:37 | null | MultiImplementationA.cs:30:21:30:23 | get_P3 | +| MultiImplementationA.cs:34:15:34:16 | After call to constructor Object | MultiImplementationA.cs:34:15:34:16 | C4 | +| MultiImplementationA.cs:34:15:34:16 | After call to method | MultiImplementationA.cs:34:15:34:16 | C4 | +| MultiImplementationA.cs:34:15:34:16 | Before call to constructor Object | MultiImplementationA.cs:34:15:34:16 | C4 | +| MultiImplementationA.cs:34:15:34:16 | Before call to method | MultiImplementationA.cs:34:15:34:16 | C4 | +| MultiImplementationA.cs:34:15:34:16 | Entry | MultiImplementationA.cs:34:15:34:16 | C4 | +| MultiImplementationA.cs:34:15:34:16 | Exit | MultiImplementationA.cs:34:15:34:16 | C4 | +| MultiImplementationA.cs:34:15:34:16 | Normal Exit | MultiImplementationA.cs:34:15:34:16 | C4 | | MultiImplementationA.cs:34:15:34:16 | call to constructor Object | MultiImplementationA.cs:34:15:34:16 | C4 | | MultiImplementationA.cs:34:15:34:16 | call to method | MultiImplementationA.cs:34:15:34:16 | C4 | -| MultiImplementationA.cs:34:15:34:16 | enter C4 | MultiImplementationA.cs:34:15:34:16 | C4 | -| MultiImplementationA.cs:34:15:34:16 | exit C4 | MultiImplementationA.cs:34:15:34:16 | C4 | -| MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | MultiImplementationA.cs:34:15:34:16 | C4 | | MultiImplementationA.cs:34:15:34:16 | this access | MultiImplementationA.cs:34:15:34:16 | C4 | | MultiImplementationA.cs:34:15:34:16 | {...} | MultiImplementationA.cs:34:15:34:16 | C4 | -| MultiImplementationA.cs:36:9:36:10 | enter M1 | MultiImplementationA.cs:36:9:36:10 | M1 | -| MultiImplementationA.cs:36:9:36:10 | exit M1 | MultiImplementationA.cs:36:9:36:10 | M1 | -| MultiImplementationA.cs:36:9:36:10 | exit M1 (abnormal) | MultiImplementationA.cs:36:9:36:10 | M1 | -| MultiImplementationA.cs:36:9:36:10 | exit M1 (normal) | MultiImplementationA.cs:36:9:36:10 | M1 | +| MultiImplementationA.cs:36:9:36:10 | Entry | MultiImplementationA.cs:36:9:36:10 | M1 | +| MultiImplementationA.cs:36:9:36:10 | Exceptional Exit | MultiImplementationA.cs:36:9:36:10 | M1 | +| MultiImplementationA.cs:36:9:36:10 | Exit | MultiImplementationA.cs:36:9:36:10 | M1 | +| MultiImplementationA.cs:36:9:36:10 | Normal Exit | MultiImplementationA.cs:36:9:36:10 | M1 | | MultiImplementationA.cs:36:14:36:28 | {...} | MultiImplementationA.cs:36:9:36:10 | M1 | +| MultiImplementationA.cs:36:16:36:26 | Before throw ...; | MultiImplementationA.cs:36:9:36:10 | M1 | | MultiImplementationA.cs:36:16:36:26 | throw ...; | MultiImplementationA.cs:36:9:36:10 | M1 | | MultiImplementationA.cs:36:22:36:25 | null | MultiImplementationA.cs:36:9:36:10 | M1 | -| MultiImplementationA.cs:37:9:37:10 | enter M2 | MultiImplementationA.cs:37:9:37:10 | M2 | -| MultiImplementationA.cs:37:9:37:10 | exit M2 | MultiImplementationA.cs:37:9:37:10 | M2 | -| MultiImplementationA.cs:37:9:37:10 | exit M2 (abnormal) | MultiImplementationA.cs:37:9:37:10 | M2 | +| MultiImplementationA.cs:37:9:37:10 | Entry | MultiImplementationA.cs:37:9:37:10 | M2 | +| MultiImplementationA.cs:37:9:37:10 | Exceptional Exit | MultiImplementationA.cs:37:9:37:10 | M2 | +| MultiImplementationA.cs:37:9:37:10 | Exit | MultiImplementationA.cs:37:9:37:10 | M2 | | MultiImplementationA.cs:37:14:37:28 | {...} | MultiImplementationA.cs:37:9:37:10 | M2 | +| MultiImplementationA.cs:37:16:37:26 | Before throw ...; | MultiImplementationA.cs:37:9:37:10 | M2 | | MultiImplementationA.cs:37:16:37:26 | throw ...; | MultiImplementationA.cs:37:9:37:10 | M2 | | MultiImplementationA.cs:37:22:37:25 | null | MultiImplementationA.cs:37:9:37:10 | M2 | +| MultiImplementationB.cs:1:7:1:8 | After call to constructor Object | MultiImplementationA.cs:4:7:4:8 | C1 | +| MultiImplementationB.cs:1:7:1:8 | After call to method | MultiImplementationA.cs:4:7:4:8 | C1 | +| MultiImplementationB.cs:1:7:1:8 | Before call to constructor Object | MultiImplementationA.cs:4:7:4:8 | C1 | +| MultiImplementationB.cs:1:7:1:8 | Before call to method | MultiImplementationA.cs:4:7:4:8 | C1 | | MultiImplementationB.cs:1:7:1:8 | call to constructor Object | MultiImplementationA.cs:4:7:4:8 | C1 | | MultiImplementationB.cs:1:7:1:8 | call to method | MultiImplementationA.cs:4:7:4:8 | C1 | | MultiImplementationB.cs:1:7:1:8 | this access | MultiImplementationA.cs:4:7:4:8 | C1 | | MultiImplementationB.cs:1:7:1:8 | {...} | MultiImplementationA.cs:4:7:4:8 | C1 | | MultiImplementationB.cs:3:22:3:22 | 0 | MultiImplementationA.cs:6:22:6:31 | get_P1 | | MultiImplementationB.cs:4:25:4:37 | {...} | MultiImplementationA.cs:7:21:7:23 | get_P2 | +| MultiImplementationB.cs:4:27:4:35 | Before return ...; | MultiImplementationA.cs:7:21:7:23 | get_P2 | | MultiImplementationB.cs:4:27:4:35 | return ...; | MultiImplementationA.cs:7:21:7:23 | get_P2 | | MultiImplementationB.cs:4:34:4:34 | 1 | MultiImplementationA.cs:7:21:7:23 | get_P2 | | MultiImplementationB.cs:4:43:4:45 | {...} | MultiImplementationA.cs:7:41:7:43 | set_P2 | | MultiImplementationB.cs:5:23:5:23 | 2 | MultiImplementationA.cs:8:16:8:16 | M | +| MultiImplementationB.cs:11:16:11:16 | After access to field F | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationB.cs:11:16:11:16 | Before access to field F | MultiImplementationA.cs:11:7:11:8 | | | MultiImplementationB.cs:11:16:11:16 | access to field F | MultiImplementationA.cs:11:7:11:8 | | | MultiImplementationB.cs:11:16:11:16 | this access | MultiImplementationA.cs:11:7:11:8 | | | MultiImplementationB.cs:11:16:11:20 | ... = ... | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationB.cs:11:16:11:20 | After ... = ... | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationB.cs:11:16:11:20 | Before ... = ... | MultiImplementationA.cs:11:7:11:8 | | | MultiImplementationB.cs:11:20:11:20 | 1 | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationB.cs:12:31:12:40 | Before throw ... | MultiImplementationA.cs:14:31:14:31 | get_Item | | MultiImplementationB.cs:12:31:12:40 | throw ... | MultiImplementationA.cs:14:31:14:31 | get_Item | | MultiImplementationB.cs:12:37:12:40 | null | MultiImplementationA.cs:14:31:14:31 | get_Item | | MultiImplementationB.cs:13:40:13:54 | {...} | MultiImplementationA.cs:15:36:15:38 | get_Item | +| MultiImplementationB.cs:13:42:13:52 | Before throw ...; | MultiImplementationA.cs:15:36:15:38 | get_Item | | MultiImplementationB.cs:13:42:13:52 | throw ...; | MultiImplementationA.cs:15:36:15:38 | get_Item | | MultiImplementationB.cs:13:48:13:51 | null | MultiImplementationA.cs:15:36:15:38 | get_Item | | MultiImplementationB.cs:13:60:13:62 | {...} | MultiImplementationA.cs:15:54:15:56 | set_Item | +| MultiImplementationB.cs:15:5:17:5 | After {...} | MultiImplementationA.cs:16:17:16:18 | M1 | | MultiImplementationB.cs:15:5:17:5 | {...} | MultiImplementationA.cs:16:17:16:18 | M1 | +| MultiImplementationB.cs:16:9:16:31 | Entry | MultiImplementationB.cs:16:9:16:31 | M2 | +| MultiImplementationB.cs:16:9:16:31 | Exceptional Exit | MultiImplementationB.cs:16:9:16:31 | M2 | +| MultiImplementationB.cs:16:9:16:31 | Exit | MultiImplementationB.cs:16:9:16:31 | M2 | | MultiImplementationB.cs:16:9:16:31 | M2(...) | MultiImplementationA.cs:16:17:16:18 | M1 | -| MultiImplementationB.cs:16:9:16:31 | enter M2 | MultiImplementationB.cs:16:9:16:31 | M2 | -| MultiImplementationB.cs:16:9:16:31 | exit M2 | MultiImplementationB.cs:16:9:16:31 | M2 | -| MultiImplementationB.cs:16:9:16:31 | exit M2 (abnormal) | MultiImplementationB.cs:16:9:16:31 | M2 | +| MultiImplementationB.cs:16:21:16:30 | Before throw ... | MultiImplementationB.cs:16:9:16:31 | M2 | | MultiImplementationB.cs:16:21:16:30 | throw ... | MultiImplementationB.cs:16:9:16:31 | M2 | | MultiImplementationB.cs:16:27:16:30 | null | MultiImplementationB.cs:16:9:16:31 | M2 | +| MultiImplementationB.cs:18:12:18:13 | After call to constructor Object | MultiImplementationA.cs:20:12:20:13 | C2 | +| MultiImplementationB.cs:18:12:18:13 | After call to method | MultiImplementationA.cs:20:12:20:13 | C2 | +| MultiImplementationB.cs:18:12:18:13 | Before call to constructor Object | MultiImplementationA.cs:20:12:20:13 | C2 | +| MultiImplementationB.cs:18:12:18:13 | Before call to method | MultiImplementationA.cs:20:12:20:13 | C2 | | MultiImplementationB.cs:18:12:18:13 | call to constructor Object | MultiImplementationA.cs:20:12:20:13 | C2 | | MultiImplementationB.cs:18:12:18:13 | call to method | MultiImplementationA.cs:20:12:20:13 | C2 | | MultiImplementationB.cs:18:12:18:13 | this access | MultiImplementationA.cs:20:12:20:13 | C2 | | MultiImplementationB.cs:18:22:18:36 | {...} | MultiImplementationA.cs:20:12:20:13 | C2 | +| MultiImplementationB.cs:18:24:18:34 | Before throw ...; | MultiImplementationA.cs:20:12:20:13 | C2 | | MultiImplementationB.cs:18:24:18:34 | throw ...; | MultiImplementationA.cs:20:12:20:13 | C2 | | MultiImplementationB.cs:18:30:18:33 | null | MultiImplementationA.cs:20:12:20:13 | C2 | +| MultiImplementationB.cs:19:19:19:22 | After call to constructor C2 | MultiImplementationA.cs:21:12:21:13 | C2 | +| MultiImplementationB.cs:19:19:19:22 | Before call to constructor C2 | MultiImplementationA.cs:21:12:21:13 | C2 | | MultiImplementationB.cs:19:19:19:22 | call to constructor C2 | MultiImplementationA.cs:21:12:21:13 | C2 | | MultiImplementationB.cs:19:24:19:24 | 1 | MultiImplementationA.cs:21:12:21:13 | C2 | | MultiImplementationB.cs:19:27:19:29 | {...} | MultiImplementationA.cs:21:12:21:13 | C2 | | MultiImplementationB.cs:20:11:20:25 | {...} | MultiImplementationA.cs:22:6:22:7 | ~C2 | +| MultiImplementationB.cs:20:13:20:23 | Before throw ...; | MultiImplementationA.cs:22:6:22:7 | ~C2 | | MultiImplementationB.cs:20:13:20:23 | throw ...; | MultiImplementationA.cs:22:6:22:7 | ~C2 | | MultiImplementationB.cs:20:19:20:22 | null | MultiImplementationA.cs:22:6:22:7 | ~C2 | +| MultiImplementationB.cs:21:50:21:59 | Before throw ... | MultiImplementationA.cs:23:28:23:35 | implicit conversion | | MultiImplementationB.cs:21:50:21:59 | throw ... | MultiImplementationA.cs:23:28:23:35 | implicit conversion | | MultiImplementationB.cs:21:56:21:59 | null | MultiImplementationA.cs:23:28:23:35 | implicit conversion | +| MultiImplementationB.cs:22:16:22:16 | After access to property P | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationB.cs:22:16:22:16 | Before access to property P | MultiImplementationA.cs:11:7:11:8 | | | MultiImplementationB.cs:22:16:22:16 | access to property P | MultiImplementationA.cs:11:7:11:8 | | | MultiImplementationB.cs:22:16:22:16 | this access | MultiImplementationA.cs:11:7:11:8 | | | MultiImplementationB.cs:22:32:22:34 | ... = ... | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationB.cs:22:32:22:34 | After ... = ... | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationB.cs:22:32:22:34 | Before ... = ... | MultiImplementationA.cs:11:7:11:8 | | | MultiImplementationB.cs:22:34:22:34 | 1 | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationB.cs:25:7:25:8 | After call to constructor Object | MultiImplementationA.cs:28:7:28:8 | C3 | +| MultiImplementationB.cs:25:7:25:8 | After call to method | MultiImplementationA.cs:28:7:28:8 | C3 | +| MultiImplementationB.cs:25:7:25:8 | Before call to constructor Object | MultiImplementationA.cs:28:7:28:8 | C3 | +| MultiImplementationB.cs:25:7:25:8 | Before call to method | MultiImplementationA.cs:28:7:28:8 | C3 | | MultiImplementationB.cs:25:7:25:8 | call to constructor Object | MultiImplementationA.cs:28:7:28:8 | C3 | | MultiImplementationB.cs:25:7:25:8 | call to method | MultiImplementationA.cs:28:7:28:8 | C3 | | MultiImplementationB.cs:25:7:25:8 | this access | MultiImplementationA.cs:28:7:28:8 | C3 | | MultiImplementationB.cs:25:7:25:8 | {...} | MultiImplementationA.cs:28:7:28:8 | C3 | +| MultiImplementationB.cs:30:15:30:16 | After call to constructor Object | MultiImplementationA.cs:34:15:34:16 | C4 | +| MultiImplementationB.cs:30:15:30:16 | After call to method | MultiImplementationA.cs:34:15:34:16 | C4 | +| MultiImplementationB.cs:30:15:30:16 | Before call to constructor Object | MultiImplementationA.cs:34:15:34:16 | C4 | +| MultiImplementationB.cs:30:15:30:16 | Before call to method | MultiImplementationA.cs:34:15:34:16 | C4 | | MultiImplementationB.cs:30:15:30:16 | call to constructor Object | MultiImplementationA.cs:34:15:34:16 | C4 | | MultiImplementationB.cs:30:15:30:16 | call to method | MultiImplementationA.cs:34:15:34:16 | C4 | | MultiImplementationB.cs:30:15:30:16 | this access | MultiImplementationA.cs:34:15:34:16 | C4 | | MultiImplementationB.cs:30:15:30:16 | {...} | MultiImplementationA.cs:34:15:34:16 | C4 | | MultiImplementationB.cs:32:17:32:17 | 0 | MultiImplementationA.cs:36:9:36:10 | M1 | +| NullCoalescing.cs:1:7:1:20 | After call to constructor Object | NullCoalescing.cs:1:7:1:20 | NullCoalescing | +| NullCoalescing.cs:1:7:1:20 | After call to method | NullCoalescing.cs:1:7:1:20 | NullCoalescing | +| NullCoalescing.cs:1:7:1:20 | Before call to constructor Object | NullCoalescing.cs:1:7:1:20 | NullCoalescing | +| NullCoalescing.cs:1:7:1:20 | Before call to method | NullCoalescing.cs:1:7:1:20 | NullCoalescing | +| NullCoalescing.cs:1:7:1:20 | Entry | NullCoalescing.cs:1:7:1:20 | NullCoalescing | +| NullCoalescing.cs:1:7:1:20 | Exit | NullCoalescing.cs:1:7:1:20 | NullCoalescing | +| NullCoalescing.cs:1:7:1:20 | Normal Exit | NullCoalescing.cs:1:7:1:20 | NullCoalescing | | NullCoalescing.cs:1:7:1:20 | call to constructor Object | NullCoalescing.cs:1:7:1:20 | NullCoalescing | | NullCoalescing.cs:1:7:1:20 | call to method | NullCoalescing.cs:1:7:1:20 | NullCoalescing | -| NullCoalescing.cs:1:7:1:20 | enter NullCoalescing | NullCoalescing.cs:1:7:1:20 | NullCoalescing | -| NullCoalescing.cs:1:7:1:20 | exit NullCoalescing | NullCoalescing.cs:1:7:1:20 | NullCoalescing | -| NullCoalescing.cs:1:7:1:20 | exit NullCoalescing (normal) | NullCoalescing.cs:1:7:1:20 | NullCoalescing | | NullCoalescing.cs:1:7:1:20 | this access | NullCoalescing.cs:1:7:1:20 | NullCoalescing | | NullCoalescing.cs:1:7:1:20 | {...} | NullCoalescing.cs:1:7:1:20 | NullCoalescing | -| NullCoalescing.cs:3:9:3:10 | enter M1 | NullCoalescing.cs:3:9:3:10 | M1 | -| NullCoalescing.cs:3:9:3:10 | exit M1 | NullCoalescing.cs:3:9:3:10 | M1 | -| NullCoalescing.cs:3:9:3:10 | exit M1 (normal) | NullCoalescing.cs:3:9:3:10 | M1 | +| NullCoalescing.cs:3:9:3:10 | Entry | NullCoalescing.cs:3:9:3:10 | M1 | +| NullCoalescing.cs:3:9:3:10 | Exit | NullCoalescing.cs:3:9:3:10 | M1 | +| NullCoalescing.cs:3:9:3:10 | Normal Exit | NullCoalescing.cs:3:9:3:10 | M1 | +| NullCoalescing.cs:3:17:3:17 | i | NullCoalescing.cs:3:9:3:10 | M1 | +| NullCoalescing.cs:3:23:3:23 | After access to parameter i [non-null] | NullCoalescing.cs:3:9:3:10 | M1 | +| NullCoalescing.cs:3:23:3:23 | After access to parameter i [null] | NullCoalescing.cs:3:9:3:10 | M1 | | NullCoalescing.cs:3:23:3:23 | access to parameter i | NullCoalescing.cs:3:9:3:10 | M1 | | NullCoalescing.cs:3:23:3:28 | ... ?? ... | NullCoalescing.cs:3:9:3:10 | M1 | +| NullCoalescing.cs:3:23:3:28 | After ... ?? ... | NullCoalescing.cs:3:9:3:10 | M1 | | NullCoalescing.cs:3:28:3:28 | 0 | NullCoalescing.cs:3:9:3:10 | M1 | -| NullCoalescing.cs:5:9:5:10 | enter M2 | NullCoalescing.cs:5:9:5:10 | M2 | -| NullCoalescing.cs:5:9:5:10 | exit M2 | NullCoalescing.cs:5:9:5:10 | M2 | -| NullCoalescing.cs:5:9:5:10 | exit M2 (normal) | NullCoalescing.cs:5:9:5:10 | M2 | +| NullCoalescing.cs:5:9:5:10 | Entry | NullCoalescing.cs:5:9:5:10 | M2 | +| NullCoalescing.cs:5:9:5:10 | Exit | NullCoalescing.cs:5:9:5:10 | M2 | +| NullCoalescing.cs:5:9:5:10 | Normal Exit | NullCoalescing.cs:5:9:5:10 | M2 | +| NullCoalescing.cs:5:18:5:18 | b | NullCoalescing.cs:5:9:5:10 | M2 | | NullCoalescing.cs:5:24:5:43 | ... ? ... : ... | NullCoalescing.cs:5:9:5:10 | M2 | +| NullCoalescing.cs:5:24:5:43 | After ... ? ... : ... | NullCoalescing.cs:5:9:5:10 | M2 | +| NullCoalescing.cs:5:25:5:25 | After access to parameter b [non-null] | NullCoalescing.cs:5:9:5:10 | M2 | +| NullCoalescing.cs:5:25:5:25 | After access to parameter b [null] | NullCoalescing.cs:5:9:5:10 | M2 | | NullCoalescing.cs:5:25:5:25 | access to parameter b | NullCoalescing.cs:5:9:5:10 | M2 | -| NullCoalescing.cs:5:25:5:34 | [false] ... ?? ... | NullCoalescing.cs:5:9:5:10 | M2 | -| NullCoalescing.cs:5:25:5:34 | [true] ... ?? ... | NullCoalescing.cs:5:9:5:10 | M2 | +| NullCoalescing.cs:5:25:5:34 | ... ?? ... | NullCoalescing.cs:5:9:5:10 | M2 | +| NullCoalescing.cs:5:25:5:34 | After ... ?? ... [false] | NullCoalescing.cs:5:9:5:10 | M2 | +| NullCoalescing.cs:5:25:5:34 | After ... ?? ... [true] | NullCoalescing.cs:5:9:5:10 | M2 | +| NullCoalescing.cs:5:30:5:34 | After false [false] | NullCoalescing.cs:5:9:5:10 | M2 | | NullCoalescing.cs:5:30:5:34 | false | NullCoalescing.cs:5:9:5:10 | M2 | | NullCoalescing.cs:5:39:5:39 | 0 | NullCoalescing.cs:5:9:5:10 | M2 | | NullCoalescing.cs:5:43:5:43 | 1 | NullCoalescing.cs:5:9:5:10 | M2 | -| NullCoalescing.cs:7:12:7:13 | enter M3 | NullCoalescing.cs:7:12:7:13 | M3 | -| NullCoalescing.cs:7:12:7:13 | exit M3 | NullCoalescing.cs:7:12:7:13 | M3 | -| NullCoalescing.cs:7:12:7:13 | exit M3 (normal) | NullCoalescing.cs:7:12:7:13 | M3 | +| NullCoalescing.cs:7:12:7:13 | Entry | NullCoalescing.cs:7:12:7:13 | M3 | +| NullCoalescing.cs:7:12:7:13 | Exit | NullCoalescing.cs:7:12:7:13 | M3 | +| NullCoalescing.cs:7:12:7:13 | Normal Exit | NullCoalescing.cs:7:12:7:13 | M3 | +| NullCoalescing.cs:7:22:7:23 | s1 | NullCoalescing.cs:7:12:7:13 | M3 | +| NullCoalescing.cs:7:33:7:34 | s2 | NullCoalescing.cs:7:12:7:13 | M3 | +| NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [non-null] | NullCoalescing.cs:7:12:7:13 | M3 | +| NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [null] | NullCoalescing.cs:7:12:7:13 | M3 | | NullCoalescing.cs:7:40:7:41 | access to parameter s1 | NullCoalescing.cs:7:12:7:13 | M3 | | NullCoalescing.cs:7:40:7:53 | ... ?? ... | NullCoalescing.cs:7:12:7:13 | M3 | +| NullCoalescing.cs:7:40:7:53 | After ... ?? ... | NullCoalescing.cs:7:12:7:13 | M3 | +| NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [non-null] | NullCoalescing.cs:7:12:7:13 | M3 | +| NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [null] | NullCoalescing.cs:7:12:7:13 | M3 | | NullCoalescing.cs:7:46:7:47 | access to parameter s2 | NullCoalescing.cs:7:12:7:13 | M3 | | NullCoalescing.cs:7:46:7:53 | ... ?? ... | NullCoalescing.cs:7:12:7:13 | M3 | +| NullCoalescing.cs:7:46:7:53 | After ... ?? ... | NullCoalescing.cs:7:12:7:13 | M3 | | NullCoalescing.cs:7:52:7:53 | "" | NullCoalescing.cs:7:12:7:13 | M3 | -| NullCoalescing.cs:9:12:9:13 | enter M4 | NullCoalescing.cs:9:12:9:13 | M4 | -| NullCoalescing.cs:9:12:9:13 | exit M4 | NullCoalescing.cs:9:12:9:13 | M4 | -| NullCoalescing.cs:9:12:9:13 | exit M4 (normal) | NullCoalescing.cs:9:12:9:13 | M4 | +| NullCoalescing.cs:9:12:9:13 | Entry | NullCoalescing.cs:9:12:9:13 | M4 | +| NullCoalescing.cs:9:12:9:13 | Exit | NullCoalescing.cs:9:12:9:13 | M4 | +| NullCoalescing.cs:9:12:9:13 | Normal Exit | NullCoalescing.cs:9:12:9:13 | M4 | +| NullCoalescing.cs:9:20:9:20 | b | NullCoalescing.cs:9:12:9:13 | M4 | +| NullCoalescing.cs:9:30:9:30 | s | NullCoalescing.cs:9:12:9:13 | M4 | | NullCoalescing.cs:9:36:9:58 | ... ?? ... | NullCoalescing.cs:9:12:9:13 | M4 | +| NullCoalescing.cs:9:36:9:58 | After ... ?? ... | NullCoalescing.cs:9:12:9:13 | M4 | +| NullCoalescing.cs:9:37:9:37 | After access to parameter b [false] | NullCoalescing.cs:9:12:9:13 | M4 | +| NullCoalescing.cs:9:37:9:37 | After access to parameter b [true] | NullCoalescing.cs:9:12:9:13 | M4 | | NullCoalescing.cs:9:37:9:37 | access to parameter b | NullCoalescing.cs:9:12:9:13 | M4 | -| NullCoalescing.cs:9:37:9:45 | [non-null] ... ? ... : ... | NullCoalescing.cs:9:12:9:13 | M4 | -| NullCoalescing.cs:9:37:9:45 | [null] ... ? ... : ... | NullCoalescing.cs:9:12:9:13 | M4 | +| NullCoalescing.cs:9:37:9:45 | ... ? ... : ... | NullCoalescing.cs:9:12:9:13 | M4 | +| NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [non-null] | NullCoalescing.cs:9:12:9:13 | M4 | +| NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [null] | NullCoalescing.cs:9:12:9:13 | M4 | +| NullCoalescing.cs:9:41:9:41 | After access to parameter s [non-null] | NullCoalescing.cs:9:12:9:13 | M4 | +| NullCoalescing.cs:9:41:9:41 | After access to parameter s [null] | NullCoalescing.cs:9:12:9:13 | M4 | | NullCoalescing.cs:9:41:9:41 | access to parameter s | NullCoalescing.cs:9:12:9:13 | M4 | +| NullCoalescing.cs:9:45:9:45 | After access to parameter s [non-null] | NullCoalescing.cs:9:12:9:13 | M4 | +| NullCoalescing.cs:9:45:9:45 | After access to parameter s [null] | NullCoalescing.cs:9:12:9:13 | M4 | | NullCoalescing.cs:9:45:9:45 | access to parameter s | NullCoalescing.cs:9:12:9:13 | M4 | | NullCoalescing.cs:9:51:9:52 | "" | NullCoalescing.cs:9:12:9:13 | M4 | +| NullCoalescing.cs:9:51:9:52 | After "" [non-null] | NullCoalescing.cs:9:12:9:13 | M4 | +| NullCoalescing.cs:9:51:9:52 | After "" [null] | NullCoalescing.cs:9:12:9:13 | M4 | | NullCoalescing.cs:9:51:9:58 | ... ?? ... | NullCoalescing.cs:9:12:9:13 | M4 | -| NullCoalescing.cs:11:9:11:10 | enter M5 | NullCoalescing.cs:11:9:11:10 | M5 | -| NullCoalescing.cs:11:9:11:10 | exit M5 | NullCoalescing.cs:11:9:11:10 | M5 | -| NullCoalescing.cs:11:9:11:10 | exit M5 (normal) | NullCoalescing.cs:11:9:11:10 | M5 | +| NullCoalescing.cs:9:51:9:58 | After ... ?? ... | NullCoalescing.cs:9:12:9:13 | M4 | +| NullCoalescing.cs:9:57:9:58 | "" | NullCoalescing.cs:9:12:9:13 | M4 | +| NullCoalescing.cs:11:9:11:10 | Entry | NullCoalescing.cs:11:9:11:10 | M5 | +| NullCoalescing.cs:11:9:11:10 | Exit | NullCoalescing.cs:11:9:11:10 | M5 | +| NullCoalescing.cs:11:9:11:10 | Normal Exit | NullCoalescing.cs:11:9:11:10 | M5 | +| NullCoalescing.cs:11:18:11:19 | b1 | NullCoalescing.cs:11:9:11:10 | M5 | +| NullCoalescing.cs:11:27:11:28 | b2 | NullCoalescing.cs:11:9:11:10 | M5 | +| NullCoalescing.cs:11:36:11:37 | b3 | NullCoalescing.cs:11:9:11:10 | M5 | | NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | NullCoalescing.cs:11:9:11:10 | M5 | +| NullCoalescing.cs:11:43:11:68 | After ... ? ... : ... | NullCoalescing.cs:11:9:11:10 | M5 | +| NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [non-null] | NullCoalescing.cs:11:9:11:10 | M5 | +| NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [null] | NullCoalescing.cs:11:9:11:10 | M5 | | NullCoalescing.cs:11:44:11:45 | access to parameter b1 | NullCoalescing.cs:11:9:11:10 | M5 | -| NullCoalescing.cs:11:44:11:59 | [false] ... ?? ... | NullCoalescing.cs:11:9:11:10 | M5 | -| NullCoalescing.cs:11:44:11:59 | [true] ... ?? ... | NullCoalescing.cs:11:9:11:10 | M5 | +| NullCoalescing.cs:11:44:11:59 | ... ?? ... | NullCoalescing.cs:11:9:11:10 | M5 | +| NullCoalescing.cs:11:44:11:59 | After ... ?? ... [false] | NullCoalescing.cs:11:9:11:10 | M5 | +| NullCoalescing.cs:11:44:11:59 | After ... ?? ... [true] | NullCoalescing.cs:11:9:11:10 | M5 | +| NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [false] | NullCoalescing.cs:11:9:11:10 | M5 | +| NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [true] | NullCoalescing.cs:11:9:11:10 | M5 | | NullCoalescing.cs:11:51:11:52 | access to parameter b2 | NullCoalescing.cs:11:9:11:10 | M5 | -| NullCoalescing.cs:11:51:11:58 | [false] ... && ... | NullCoalescing.cs:11:9:11:10 | M5 | -| NullCoalescing.cs:11:51:11:58 | [true] ... && ... | NullCoalescing.cs:11:9:11:10 | M5 | +| NullCoalescing.cs:11:51:11:58 | ... && ... | NullCoalescing.cs:11:9:11:10 | M5 | +| NullCoalescing.cs:11:51:11:58 | After ... && ... [false] | NullCoalescing.cs:11:9:11:10 | M5 | +| NullCoalescing.cs:11:51:11:58 | After ... && ... [true] | NullCoalescing.cs:11:9:11:10 | M5 | +| NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [false] | NullCoalescing.cs:11:9:11:10 | M5 | +| NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [true] | NullCoalescing.cs:11:9:11:10 | M5 | | NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:9:11:10 | M5 | | NullCoalescing.cs:11:64:11:64 | 0 | NullCoalescing.cs:11:9:11:10 | M5 | | NullCoalescing.cs:11:68:11:68 | 1 | NullCoalescing.cs:11:9:11:10 | M5 | -| NullCoalescing.cs:13:10:13:11 | enter M6 | NullCoalescing.cs:13:10:13:11 | M6 | -| NullCoalescing.cs:13:10:13:11 | exit M6 | NullCoalescing.cs:13:10:13:11 | M6 | -| NullCoalescing.cs:13:10:13:11 | exit M6 (normal) | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:13:10:13:11 | Entry | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:13:10:13:11 | Exit | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:13:10:13:11 | Normal Exit | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:13:17:13:17 | i | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:14:5:18:5 | After {...} | NullCoalescing.cs:13:10:13:11 | M6 | | NullCoalescing.cs:14:5:18:5 | {...} | NullCoalescing.cs:13:10:13:11 | M6 | | NullCoalescing.cs:15:9:15:32 | ... ...; | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:15:9:15:32 | After ... ...; | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:15:13:15:13 | access to local variable j | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:15:13:15:31 | After Int32 j = ... | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:15:13:15:31 | Before Int32 j = ... | NullCoalescing.cs:13:10:13:11 | M6 | | NullCoalescing.cs:15:13:15:31 | Int32 j = ... | NullCoalescing.cs:13:10:13:11 | M6 | | NullCoalescing.cs:15:17:15:26 | (...) ... | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:15:17:15:26 | After (...) ... [non-null] | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:15:17:15:26 | After (...) ... [null] | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:15:17:15:26 | Before (...) ... | NullCoalescing.cs:13:10:13:11 | M6 | | NullCoalescing.cs:15:17:15:31 | ... ?? ... | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:15:17:15:31 | After ... ?? ... | NullCoalescing.cs:13:10:13:11 | M6 | | NullCoalescing.cs:15:23:15:26 | null | NullCoalescing.cs:13:10:13:11 | M6 | | NullCoalescing.cs:15:31:15:31 | 0 | NullCoalescing.cs:13:10:13:11 | M6 | | NullCoalescing.cs:16:9:16:26 | ... ...; | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:16:9:16:26 | After ... ...; | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:16:13:16:13 | access to local variable s | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:16:13:16:25 | After String s = ... | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:16:13:16:25 | Before String s = ... | NullCoalescing.cs:13:10:13:11 | M6 | | NullCoalescing.cs:16:13:16:25 | String s = ... | NullCoalescing.cs:13:10:13:11 | M6 | | NullCoalescing.cs:16:17:16:18 | "" | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:16:17:16:18 | After "" [non-null] | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:16:17:16:18 | After "" [null] | NullCoalescing.cs:13:10:13:11 | M6 | | NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:16:17:16:25 | After ... ?? ... | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:16:23:16:25 | "a" | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:17:9:17:9 | access to local variable j | NullCoalescing.cs:13:10:13:11 | M6 | | NullCoalescing.cs:17:9:17:24 | ... = ... | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:17:9:17:24 | After ... = ... | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:17:9:17:24 | Before ... = ... | NullCoalescing.cs:13:10:13:11 | M6 | | NullCoalescing.cs:17:9:17:25 | ...; | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:17:9:17:25 | After ...; | NullCoalescing.cs:13:10:13:11 | M6 | | NullCoalescing.cs:17:13:17:19 | (...) ... | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:17:13:17:19 | After (...) ... [non-null] | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:17:13:17:19 | After (...) ... [null] | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:17:13:17:19 | Before (...) ... | NullCoalescing.cs:13:10:13:11 | M6 | | NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:17:13:17:24 | After ... ?? ... | NullCoalescing.cs:13:10:13:11 | M6 | | NullCoalescing.cs:17:19:17:19 | access to parameter i | NullCoalescing.cs:13:10:13:11 | M6 | -| PartialImplementationA.cs:1:15:1:21 | enter | PartialImplementationA.cs:1:15:1:21 | | -| PartialImplementationA.cs:1:15:1:21 | exit | PartialImplementationA.cs:1:15:1:21 | | -| PartialImplementationA.cs:1:15:1:21 | exit (normal) | PartialImplementationA.cs:1:15:1:21 | | +| NullCoalescing.cs:17:24:17:24 | 1 | NullCoalescing.cs:13:10:13:11 | M6 | +| PartialImplementationA.cs:1:15:1:21 | Entry | PartialImplementationA.cs:1:15:1:21 | | +| PartialImplementationA.cs:1:15:1:21 | Exit | PartialImplementationA.cs:1:15:1:21 | | +| PartialImplementationA.cs:1:15:1:21 | Normal Exit | PartialImplementationA.cs:1:15:1:21 | | +| PartialImplementationA.cs:3:12:3:18 | After call to constructor Object | PartialImplementationA.cs:3:12:3:18 | Partial | +| PartialImplementationA.cs:3:12:3:18 | After call to method | PartialImplementationA.cs:3:12:3:18 | Partial | +| PartialImplementationA.cs:3:12:3:18 | Before call to constructor Object | PartialImplementationA.cs:3:12:3:18 | Partial | +| PartialImplementationA.cs:3:12:3:18 | Before call to method | PartialImplementationA.cs:3:12:3:18 | Partial | +| PartialImplementationA.cs:3:12:3:18 | Entry | PartialImplementationA.cs:3:12:3:18 | Partial | +| PartialImplementationA.cs:3:12:3:18 | Exit | PartialImplementationA.cs:3:12:3:18 | Partial | +| PartialImplementationA.cs:3:12:3:18 | Normal Exit | PartialImplementationA.cs:3:12:3:18 | Partial | | PartialImplementationA.cs:3:12:3:18 | call to constructor Object | PartialImplementationA.cs:3:12:3:18 | Partial | | PartialImplementationA.cs:3:12:3:18 | call to method | PartialImplementationA.cs:3:12:3:18 | Partial | -| PartialImplementationA.cs:3:12:3:18 | enter Partial | PartialImplementationA.cs:3:12:3:18 | Partial | -| PartialImplementationA.cs:3:12:3:18 | exit Partial | PartialImplementationA.cs:3:12:3:18 | Partial | -| PartialImplementationA.cs:3:12:3:18 | exit Partial (normal) | PartialImplementationA.cs:3:12:3:18 | Partial | | PartialImplementationA.cs:3:12:3:18 | this access | PartialImplementationA.cs:3:12:3:18 | Partial | +| PartialImplementationA.cs:3:24:3:24 | i | PartialImplementationA.cs:3:12:3:18 | Partial | | PartialImplementationA.cs:3:27:3:29 | {...} | PartialImplementationA.cs:3:12:3:18 | Partial | +| PartialImplementationB.cs:3:16:3:16 | After access to field F | PartialImplementationA.cs:1:15:1:21 | | +| PartialImplementationB.cs:3:16:3:16 | Before access to field F | PartialImplementationA.cs:1:15:1:21 | | | PartialImplementationB.cs:3:16:3:16 | access to field F | PartialImplementationA.cs:1:15:1:21 | | | PartialImplementationB.cs:3:16:3:16 | this access | PartialImplementationA.cs:1:15:1:21 | | | PartialImplementationB.cs:3:16:3:20 | ... = ... | PartialImplementationA.cs:1:15:1:21 | | +| PartialImplementationB.cs:3:16:3:20 | After ... = ... | PartialImplementationA.cs:1:15:1:21 | | +| PartialImplementationB.cs:3:16:3:20 | Before ... = ... | PartialImplementationA.cs:1:15:1:21 | | | PartialImplementationB.cs:3:20:3:20 | 0 | PartialImplementationA.cs:1:15:1:21 | | +| PartialImplementationB.cs:4:12:4:18 | After call to constructor Object | PartialImplementationB.cs:4:12:4:18 | Partial | +| PartialImplementationB.cs:4:12:4:18 | After call to method | PartialImplementationB.cs:4:12:4:18 | Partial | +| PartialImplementationB.cs:4:12:4:18 | Before call to constructor Object | PartialImplementationB.cs:4:12:4:18 | Partial | +| PartialImplementationB.cs:4:12:4:18 | Before call to method | PartialImplementationB.cs:4:12:4:18 | Partial | +| PartialImplementationB.cs:4:12:4:18 | Entry | PartialImplementationB.cs:4:12:4:18 | Partial | +| PartialImplementationB.cs:4:12:4:18 | Exit | PartialImplementationB.cs:4:12:4:18 | Partial | +| PartialImplementationB.cs:4:12:4:18 | Normal Exit | PartialImplementationB.cs:4:12:4:18 | Partial | | PartialImplementationB.cs:4:12:4:18 | call to constructor Object | PartialImplementationB.cs:4:12:4:18 | Partial | | PartialImplementationB.cs:4:12:4:18 | call to method | PartialImplementationB.cs:4:12:4:18 | Partial | -| PartialImplementationB.cs:4:12:4:18 | enter Partial | PartialImplementationB.cs:4:12:4:18 | Partial | -| PartialImplementationB.cs:4:12:4:18 | exit Partial | PartialImplementationB.cs:4:12:4:18 | Partial | -| PartialImplementationB.cs:4:12:4:18 | exit Partial (normal) | PartialImplementationB.cs:4:12:4:18 | Partial | | PartialImplementationB.cs:4:12:4:18 | this access | PartialImplementationB.cs:4:12:4:18 | Partial | | PartialImplementationB.cs:4:22:4:24 | {...} | PartialImplementationB.cs:4:12:4:18 | Partial | +| PartialImplementationB.cs:5:16:5:16 | After access to property P | PartialImplementationA.cs:1:15:1:21 | | +| PartialImplementationB.cs:5:16:5:16 | Before access to property P | PartialImplementationA.cs:1:15:1:21 | | | PartialImplementationB.cs:5:16:5:16 | access to property P | PartialImplementationA.cs:1:15:1:21 | | | PartialImplementationB.cs:5:16:5:16 | this access | PartialImplementationA.cs:1:15:1:21 | | | PartialImplementationB.cs:5:32:5:34 | ... = ... | PartialImplementationA.cs:1:15:1:21 | | +| PartialImplementationB.cs:5:32:5:34 | After ... = ... | PartialImplementationA.cs:1:15:1:21 | | +| PartialImplementationB.cs:5:32:5:34 | Before ... = ... | PartialImplementationA.cs:1:15:1:21 | | | PartialImplementationB.cs:5:34:5:34 | 0 | PartialImplementationA.cs:1:15:1:21 | | +| Patterns.cs:3:7:3:14 | After call to constructor Object | Patterns.cs:3:7:3:14 | Patterns | +| Patterns.cs:3:7:3:14 | After call to method | Patterns.cs:3:7:3:14 | Patterns | +| Patterns.cs:3:7:3:14 | Before call to constructor Object | Patterns.cs:3:7:3:14 | Patterns | +| Patterns.cs:3:7:3:14 | Before call to method | Patterns.cs:3:7:3:14 | Patterns | +| Patterns.cs:3:7:3:14 | Entry | Patterns.cs:3:7:3:14 | Patterns | +| Patterns.cs:3:7:3:14 | Exit | Patterns.cs:3:7:3:14 | Patterns | +| Patterns.cs:3:7:3:14 | Normal Exit | Patterns.cs:3:7:3:14 | Patterns | | Patterns.cs:3:7:3:14 | call to constructor Object | Patterns.cs:3:7:3:14 | Patterns | | Patterns.cs:3:7:3:14 | call to method | Patterns.cs:3:7:3:14 | Patterns | -| Patterns.cs:3:7:3:14 | enter Patterns | Patterns.cs:3:7:3:14 | Patterns | -| Patterns.cs:3:7:3:14 | exit Patterns | Patterns.cs:3:7:3:14 | Patterns | -| Patterns.cs:3:7:3:14 | exit Patterns (normal) | Patterns.cs:3:7:3:14 | Patterns | | Patterns.cs:3:7:3:14 | this access | Patterns.cs:3:7:3:14 | Patterns | | Patterns.cs:3:7:3:14 | {...} | Patterns.cs:3:7:3:14 | Patterns | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:5:10:5:11 | M1 | -| Patterns.cs:5:10:5:11 | exit M1 | Patterns.cs:5:10:5:11 | M1 | -| Patterns.cs:5:10:5:11 | exit M1 (normal) | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:5:10:5:11 | Exit | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:5:10:5:11 | Normal Exit | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:6:5:43:5 | After {...} | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:6:5:43:5 | {...} | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:7:9:7:24 | ... ...; | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:7:9:7:24 | After ... ...; | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:7:16:7:16 | access to local variable o | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:7:16:7:23 | After Object o = ... | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:7:16:7:23 | Before Object o = ... | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:7:16:7:23 | Object o = ... | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:7:20:7:23 | null | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:8:9:18:9 | if (...) ... | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:8:13:8:13 | access to local variable o | Patterns.cs:5:10:5:11 | M1 | -| Patterns.cs:8:13:8:23 | [false] ... is ... | Patterns.cs:5:10:5:11 | M1 | -| Patterns.cs:8:13:8:23 | [true] ... is ... | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:8:13:8:23 | ... is ... | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:8:13:8:23 | After ... is ... [false] | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:8:13:8:23 | After ... is ... [true] | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:8:13:8:23 | Before ... is ... | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:8:13:8:23 | [MatchTrue] ... is ... | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:8:18:8:23 | Int32 i1 | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:9:9:11:9 | After {...} | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:9:9:11:9 | {...} | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:10:13:10:42 | After call to method WriteLine | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:10:13:10:42 | Before call to method WriteLine | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:10:13:10:42 | call to method WriteLine | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:10:13:10:43 | ...; | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:10:13:10:43 | After ...; | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:10:31:10:41 | $"..." | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:10:31:10:41 | After $"..." | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:10:31:10:41 | Before $"..." | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:10:33:10:36 | "int " | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:10:37:10:40 | After {...} | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:10:37:10:40 | Before {...} | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:10:37:10:40 | {...} | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:10:38:10:39 | access to local variable i1 | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:12:14:18:9 | After if (...) ... | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:12:14:18:9 | if (...) ... | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:12:18:12:18 | access to local variable o | Patterns.cs:5:10:5:11 | M1 | -| Patterns.cs:12:18:12:31 | [false] ... is ... | Patterns.cs:5:10:5:11 | M1 | -| Patterns.cs:12:18:12:31 | [true] ... is ... | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:12:18:12:31 | ... is ... | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:12:18:12:31 | After ... is ... [false] | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:12:18:12:31 | After ... is ... [true] | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:12:18:12:31 | Before ... is ... | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:12:18:12:31 | [MatchTrue] ... is ... | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:12:23:12:31 | String s1 | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:13:9:15:9 | After {...} | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:13:9:15:9 | {...} | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:14:13:14:45 | After call to method WriteLine | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:14:13:14:45 | Before call to method WriteLine | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:14:13:14:45 | call to method WriteLine | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:14:13:14:46 | ...; | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:14:13:14:46 | After ...; | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:14:31:14:44 | $"..." | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:14:31:14:44 | After $"..." | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:14:31:14:44 | Before $"..." | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:14:33:14:39 | "string " | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:14:40:14:43 | After {...} | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:14:40:14:43 | Before {...} | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:14:40:14:43 | {...} | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:14:41:14:42 | access to local variable s1 | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:16:14:18:9 | After if (...) ... | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:16:14:18:9 | if (...) ... | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:16:18:16:18 | access to local variable o | Patterns.cs:5:10:5:11 | M1 | -| Patterns.cs:16:18:16:28 | [false] ... is ... | Patterns.cs:5:10:5:11 | M1 | -| Patterns.cs:16:18:16:28 | [true] ... is ... | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:16:18:16:28 | ... is ... | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:16:18:16:28 | After ... is ... [false] | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:16:18:16:28 | After ... is ... [true] | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:16:18:16:28 | Before ... is ... | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:16:18:16:28 | [MatchTrue] ... is ... | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:16:23:16:28 | Object v1 | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:17:9:18:9 | {...} | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:20:9:38:9 | After switch (...) {...} | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:20:17:20:17 | access to local variable o | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:22:13:22:23 | After case ...: [match] | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:22:13:22:23 | After case ...: [no-match] | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:22:13:22:23 | case ...: | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:22:18:22:22 | "xyz" | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:22:18:22:22 | After "xyz" [match] | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:22:18:22:22 | After "xyz" [no-match] | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:23:17:23:22 | Before break; | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:23:17:23:22 | break; | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:24:13:24:36 | After case ...: [match] | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:24:13:24:36 | After case ...: [no-match] | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:24:13:24:36 | case ...: | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:24:18:24:23 | After Int32 i2 [match] | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:24:18:24:23 | After Int32 i2 [no-match] | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:24:18:24:23 | Int32 i2 | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:24:30:24:31 | access to local variable i2 | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:24:30:24:35 | ... > ... | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:24:30:24:35 | After ... > ... [false] | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:24:30:24:35 | After ... > ... [true] | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:24:30:24:35 | Before ... > ... | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:24:35:24:35 | 0 | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:25:17:25:51 | After call to method WriteLine | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:25:17:25:51 | Before call to method WriteLine | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:25:17:25:51 | call to method WriteLine | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:25:17:25:52 | ...; | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:25:17:25:52 | After ...; | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:25:35:25:50 | $"..." | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:25:35:25:50 | After $"..." | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:25:35:25:50 | Before $"..." | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:25:37:25:45 | "positive " | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:25:46:25:49 | After {...} | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:25:46:25:49 | Before {...} | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:25:46:25:49 | {...} | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:25:47:25:48 | access to local variable i2 | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:26:17:26:22 | Before break; | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:26:17:26:22 | break; | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:27:13:27:24 | After case ...: [match] | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:27:13:27:24 | After case ...: [no-match] | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:27:13:27:24 | case ...: | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:27:18:27:23 | After Int32 i3 [match] | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:27:18:27:23 | After Int32 i3 [no-match] | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:27:18:27:23 | Int32 i3 | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:28:17:28:46 | After call to method WriteLine | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:28:17:28:46 | Before call to method WriteLine | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:28:17:28:46 | call to method WriteLine | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:28:17:28:47 | ...; | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:28:17:28:47 | After ...; | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:28:35:28:45 | $"..." | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:28:35:28:45 | After $"..." | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:28:35:28:45 | Before $"..." | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:28:37:28:40 | "int " | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:28:41:28:44 | After {...} | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:28:41:28:44 | Before {...} | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:28:41:28:44 | {...} | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:28:42:28:43 | access to local variable i3 | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:29:17:29:22 | Before break; | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:29:17:29:22 | break; | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:30:13:30:27 | After case ...: [match] | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:30:13:30:27 | After case ...: [no-match] | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:30:13:30:27 | case ...: | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:30:18:30:26 | After String s2 [match] | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:30:18:30:26 | After String s2 [no-match] | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:30:18:30:26 | String s2 | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:31:17:31:49 | After call to method WriteLine | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:31:17:31:49 | Before call to method WriteLine | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:31:17:31:49 | call to method WriteLine | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:31:17:31:50 | ...; | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:31:17:31:50 | After ...; | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:31:35:31:48 | $"..." | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:31:35:31:48 | After $"..." | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:31:35:31:48 | Before $"..." | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:31:37:31:43 | "string " | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:31:44:31:47 | After {...} | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:31:44:31:47 | Before {...} | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:31:44:31:47 | {...} | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:31:45:31:46 | access to local variable s2 | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:32:17:32:22 | Before break; | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:32:17:32:22 | break; | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:33:13:33:24 | After case ...: [match] | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:33:13:33:24 | After case ...: [no-match] | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:33:13:33:24 | case ...: | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:33:18:33:23 | After Object v2 [match] | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:33:18:33:23 | After Object v2 [no-match] | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:33:18:33:23 | Object v2 | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:34:17:34:22 | Before break; | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:34:17:34:22 | break; | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:35:13:35:20 | After default: [match] | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:35:13:35:20 | default: | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:36:17:36:51 | After call to method WriteLine | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:36:17:36:51 | Before call to method WriteLine | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:36:17:36:51 | call to method WriteLine | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:36:17:36:52 | ...; | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:36:17:36:52 | After ...; | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:36:35:36:50 | "Something else" | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:37:17:37:22 | Before break; | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:37:17:37:22 | break; | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:40:9:42:9 | After switch (...) {...} | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:40:17:40:17 | access to local variable o | Patterns.cs:5:10:5:11 | M1 | -| Patterns.cs:47:24:47:25 | enter M2 | Patterns.cs:47:24:47:25 | M2 | -| Patterns.cs:47:24:47:25 | exit M2 | Patterns.cs:47:24:47:25 | M2 | -| Patterns.cs:47:24:47:25 | exit M2 (normal) | Patterns.cs:47:24:47:25 | M2 | +| Patterns.cs:47:24:47:25 | Entry | Patterns.cs:47:24:47:25 | M2 | +| Patterns.cs:47:24:47:25 | Exit | Patterns.cs:47:24:47:25 | M2 | +| Patterns.cs:47:24:47:25 | Normal Exit | Patterns.cs:47:24:47:25 | M2 | +| Patterns.cs:47:32:47:32 | c | Patterns.cs:47:24:47:25 | M2 | | Patterns.cs:48:9:48:9 | access to parameter c | Patterns.cs:47:24:47:25 | M2 | | Patterns.cs:48:9:48:20 | ... is ... | Patterns.cs:47:24:47:25 | M2 | +| Patterns.cs:48:9:48:20 | After ... is ... | Patterns.cs:47:24:47:25 | M2 | +| Patterns.cs:48:9:48:20 | Before ... is ... | Patterns.cs:47:24:47:25 | M2 | +| Patterns.cs:48:9:48:20 | [MatchTrue] ... is ... | Patterns.cs:47:24:47:25 | M2 | +| Patterns.cs:48:14:48:20 | After not ... | Patterns.cs:47:24:47:25 | M2 | +| Patterns.cs:48:14:48:20 | Before not ... | Patterns.cs:47:24:47:25 | M2 | | Patterns.cs:48:14:48:20 | not ... | Patterns.cs:47:24:47:25 | M2 | | Patterns.cs:48:18:48:20 | a | Patterns.cs:47:24:47:25 | M2 | -| Patterns.cs:50:24:50:25 | enter M3 | Patterns.cs:50:24:50:25 | M3 | -| Patterns.cs:50:24:50:25 | exit M3 | Patterns.cs:50:24:50:25 | M3 | -| Patterns.cs:50:24:50:25 | exit M3 (normal) | Patterns.cs:50:24:50:25 | M3 | +| Patterns.cs:50:24:50:25 | Entry | Patterns.cs:50:24:50:25 | M3 | +| Patterns.cs:50:24:50:25 | Exit | Patterns.cs:50:24:50:25 | M3 | +| Patterns.cs:50:24:50:25 | Normal Exit | Patterns.cs:50:24:50:25 | M3 | +| Patterns.cs:50:34:50:34 | c | Patterns.cs:50:24:50:25 | M3 | | Patterns.cs:51:9:51:9 | access to parameter c | Patterns.cs:50:24:50:25 | M3 | -| Patterns.cs:51:9:51:21 | [false] ... is ... | Patterns.cs:50:24:50:25 | M3 | -| Patterns.cs:51:9:51:21 | [true] ... is ... | Patterns.cs:50:24:50:25 | M3 | +| Patterns.cs:51:9:51:21 | ... is ... | Patterns.cs:50:24:50:25 | M3 | +| Patterns.cs:51:9:51:21 | After ... is ... [false] | Patterns.cs:50:24:50:25 | M3 | +| Patterns.cs:51:9:51:21 | After ... is ... [true] | Patterns.cs:50:24:50:25 | M3 | +| Patterns.cs:51:9:51:21 | Before ... is ... | Patterns.cs:50:24:50:25 | M3 | +| Patterns.cs:51:9:51:21 | [MatchTrue] ... is ... | Patterns.cs:50:24:50:25 | M3 | | Patterns.cs:51:9:51:39 | ... ? ... : ... | Patterns.cs:50:24:50:25 | M3 | -| Patterns.cs:51:14:51:21 | [match] not ... | Patterns.cs:50:24:50:25 | M3 | -| Patterns.cs:51:14:51:21 | [no-match] not ... | Patterns.cs:50:24:50:25 | M3 | +| Patterns.cs:51:9:51:39 | After ... ? ... : ... | Patterns.cs:50:24:50:25 | M3 | +| Patterns.cs:51:14:51:21 | After not ... | Patterns.cs:50:24:50:25 | M3 | +| Patterns.cs:51:14:51:21 | Before not ... | Patterns.cs:50:24:50:25 | M3 | +| Patterns.cs:51:14:51:21 | not ... | Patterns.cs:50:24:50:25 | M3 | | Patterns.cs:51:18:51:21 | null | Patterns.cs:50:24:50:25 | M3 | | Patterns.cs:51:25:51:25 | access to parameter c | Patterns.cs:50:24:50:25 | M3 | | Patterns.cs:51:25:51:30 | ... is ... | Patterns.cs:50:24:50:25 | M3 | +| Patterns.cs:51:25:51:30 | After ... is ... | Patterns.cs:50:24:50:25 | M3 | +| Patterns.cs:51:25:51:30 | Before ... is ... | Patterns.cs:50:24:50:25 | M3 | +| Patterns.cs:51:25:51:30 | [MatchTrue] ... is ... | Patterns.cs:50:24:50:25 | M3 | | Patterns.cs:51:30:51:30 | 1 | Patterns.cs:50:24:50:25 | M3 | | Patterns.cs:51:34:51:34 | access to parameter c | Patterns.cs:50:24:50:25 | M3 | | Patterns.cs:51:34:51:39 | ... is ... | Patterns.cs:50:24:50:25 | M3 | +| Patterns.cs:51:34:51:39 | After ... is ... | Patterns.cs:50:24:50:25 | M3 | +| Patterns.cs:51:34:51:39 | Before ... is ... | Patterns.cs:50:24:50:25 | M3 | +| Patterns.cs:51:34:51:39 | [MatchTrue] ... is ... | Patterns.cs:50:24:50:25 | M3 | | Patterns.cs:51:39:51:39 | 2 | Patterns.cs:50:24:50:25 | M3 | -| Patterns.cs:53:24:53:25 | enter M4 | Patterns.cs:53:24:53:25 | M4 | -| Patterns.cs:53:24:53:25 | exit M4 | Patterns.cs:53:24:53:25 | M4 | -| Patterns.cs:53:24:53:25 | exit M4 (normal) | Patterns.cs:53:24:53:25 | M4 | +| Patterns.cs:53:24:53:25 | Entry | Patterns.cs:53:24:53:25 | M4 | +| Patterns.cs:53:24:53:25 | Exit | Patterns.cs:53:24:53:25 | M4 | +| Patterns.cs:53:24:53:25 | Normal Exit | Patterns.cs:53:24:53:25 | M4 | +| Patterns.cs:53:34:53:34 | c | Patterns.cs:53:24:53:25 | M4 | | Patterns.cs:54:9:54:9 | access to parameter c | Patterns.cs:53:24:53:25 | M4 | | Patterns.cs:54:9:54:37 | ... is ... | Patterns.cs:53:24:53:25 | M4 | +| Patterns.cs:54:9:54:37 | After ... is ... | Patterns.cs:53:24:53:25 | M4 | +| Patterns.cs:54:9:54:37 | Before ... is ... | Patterns.cs:53:24:53:25 | M4 | +| Patterns.cs:54:9:54:37 | [MatchTrue] ... is ... | Patterns.cs:53:24:53:25 | M4 | +| Patterns.cs:54:14:54:37 | After not ... | Patterns.cs:53:24:53:25 | M4 | +| Patterns.cs:54:14:54:37 | Before not ... | Patterns.cs:53:24:53:25 | M4 | | Patterns.cs:54:14:54:37 | not ... | Patterns.cs:53:24:53:25 | M4 | +| Patterns.cs:54:18:54:25 | access to type Patterns | Patterns.cs:53:24:53:25 | M4 | +| Patterns.cs:54:18:54:37 | After { ... } | Patterns.cs:53:24:53:25 | M4 | +| Patterns.cs:54:18:54:37 | Before { ... } | Patterns.cs:53:24:53:25 | M4 | | Patterns.cs:54:18:54:37 | Patterns u | Patterns.cs:53:24:53:25 | M4 | | Patterns.cs:54:18:54:37 | { ... } | Patterns.cs:53:24:53:25 | M4 | -| Patterns.cs:54:27:54:35 | [match] { ... } | Patterns.cs:53:24:53:25 | M4 | -| Patterns.cs:54:27:54:35 | [no-match] { ... } | Patterns.cs:53:24:53:25 | M4 | +| Patterns.cs:54:27:54:35 | After { ... } | Patterns.cs:53:24:53:25 | M4 | +| Patterns.cs:54:27:54:35 | Before { ... } | Patterns.cs:53:24:53:25 | M4 | +| Patterns.cs:54:27:54:35 | { ... } | Patterns.cs:53:24:53:25 | M4 | | Patterns.cs:54:33:54:33 | 1 | Patterns.cs:53:24:53:25 | M4 | -| Patterns.cs:56:26:56:27 | enter M5 | Patterns.cs:56:26:56:27 | M5 | -| Patterns.cs:56:26:56:27 | exit M5 | Patterns.cs:56:26:56:27 | M5 | -| Patterns.cs:56:26:56:27 | exit M5 (normal) | Patterns.cs:56:26:56:27 | M5 | +| Patterns.cs:56:26:56:27 | Entry | Patterns.cs:56:26:56:27 | M5 | +| Patterns.cs:56:26:56:27 | Exit | Patterns.cs:56:26:56:27 | M5 | +| Patterns.cs:56:26:56:27 | Normal Exit | Patterns.cs:56:26:56:27 | M5 | +| Patterns.cs:56:33:56:33 | i | Patterns.cs:56:26:56:27 | M5 | | Patterns.cs:57:5:63:5 | {...} | Patterns.cs:56:26:56:27 | M5 | +| Patterns.cs:58:9:62:10 | Before return ...; | Patterns.cs:56:26:56:27 | M5 | | Patterns.cs:58:9:62:10 | return ...; | Patterns.cs:56:26:56:27 | M5 | | Patterns.cs:58:16:58:16 | access to parameter i | Patterns.cs:56:26:56:27 | M5 | | Patterns.cs:58:16:62:9 | ... switch { ... } | Patterns.cs:56:26:56:27 | M5 | -| Patterns.cs:60:13:60:17 | [match] not ... | Patterns.cs:56:26:56:27 | M5 | -| Patterns.cs:60:13:60:17 | [no-match] not ... | Patterns.cs:56:26:56:27 | M5 | +| Patterns.cs:58:16:62:9 | After ... switch { ... } | Patterns.cs:56:26:56:27 | M5 | +| Patterns.cs:60:13:60:17 | After not ... [match] | Patterns.cs:56:26:56:27 | M5 | +| Patterns.cs:60:13:60:17 | After not ... [no-match] | Patterns.cs:56:26:56:27 | M5 | +| Patterns.cs:60:13:60:17 | Before not ... | Patterns.cs:56:26:56:27 | M5 | +| Patterns.cs:60:13:60:17 | not ... | Patterns.cs:56:26:56:27 | M5 | | Patterns.cs:60:13:60:28 | ... => ... | Patterns.cs:56:26:56:27 | M5 | +| Patterns.cs:60:13:60:28 | After ... => ... [match] | Patterns.cs:56:26:56:27 | M5 | +| Patterns.cs:60:13:60:28 | After ... => ... [no-match] | Patterns.cs:56:26:56:27 | M5 | | Patterns.cs:60:17:60:17 | 1 | Patterns.cs:56:26:56:27 | M5 | | Patterns.cs:60:22:60:28 | "not 1" | Patterns.cs:56:26:56:27 | M5 | +| Patterns.cs:61:13:61:13 | After _ [match] | Patterns.cs:56:26:56:27 | M5 | | Patterns.cs:61:13:61:13 | _ | Patterns.cs:56:26:56:27 | M5 | | Patterns.cs:61:13:61:24 | ... => ... | Patterns.cs:56:26:56:27 | M5 | +| Patterns.cs:61:13:61:24 | After ... => ... [match] | Patterns.cs:56:26:56:27 | M5 | | Patterns.cs:61:18:61:24 | "other" | Patterns.cs:56:26:56:27 | M5 | -| Patterns.cs:65:26:65:27 | enter M6 | Patterns.cs:65:26:65:27 | M6 | -| Patterns.cs:65:26:65:27 | exit M6 | Patterns.cs:65:26:65:27 | M6 | -| Patterns.cs:65:26:65:27 | exit M6 (normal) | Patterns.cs:65:26:65:27 | M6 | +| Patterns.cs:65:26:65:27 | Entry | Patterns.cs:65:26:65:27 | M6 | +| Patterns.cs:65:26:65:27 | Exit | Patterns.cs:65:26:65:27 | M6 | +| Patterns.cs:65:26:65:27 | Normal Exit | Patterns.cs:65:26:65:27 | M6 | | Patterns.cs:66:5:72:5 | {...} | Patterns.cs:65:26:65:27 | M6 | +| Patterns.cs:67:9:71:10 | Before return ...; | Patterns.cs:65:26:65:27 | M6 | | Patterns.cs:67:9:71:10 | return ...; | Patterns.cs:65:26:65:27 | M6 | | Patterns.cs:67:16:67:16 | 2 | Patterns.cs:65:26:65:27 | M6 | | Patterns.cs:67:16:71:9 | ... switch { ... } | Patterns.cs:65:26:65:27 | M6 | -| Patterns.cs:69:13:69:17 | [no-match] not ... | Patterns.cs:65:26:65:27 | M6 | +| Patterns.cs:67:16:71:9 | After ... switch { ... } | Patterns.cs:65:26:65:27 | M6 | +| Patterns.cs:69:13:69:17 | After not ... [match] | Patterns.cs:65:26:65:27 | M6 | +| Patterns.cs:69:13:69:17 | After not ... [no-match] | Patterns.cs:65:26:65:27 | M6 | +| Patterns.cs:69:13:69:17 | Before not ... | Patterns.cs:65:26:65:27 | M6 | +| Patterns.cs:69:13:69:17 | not ... | Patterns.cs:65:26:65:27 | M6 | +| Patterns.cs:69:13:69:33 | ... => ... | Patterns.cs:65:26:65:27 | M6 | +| Patterns.cs:69:13:69:33 | After ... => ... [match] | Patterns.cs:65:26:65:27 | M6 | +| Patterns.cs:69:13:69:33 | After ... => ... [no-match] | Patterns.cs:65:26:65:27 | M6 | | Patterns.cs:69:17:69:17 | 2 | Patterns.cs:65:26:65:27 | M6 | +| Patterns.cs:69:22:69:33 | "impossible" | Patterns.cs:65:26:65:27 | M6 | | Patterns.cs:70:13:70:13 | 2 | Patterns.cs:65:26:65:27 | M6 | +| Patterns.cs:70:13:70:13 | After 2 [match] | Patterns.cs:65:26:65:27 | M6 | +| Patterns.cs:70:13:70:13 | After 2 [no-match] | Patterns.cs:65:26:65:27 | M6 | | Patterns.cs:70:13:70:27 | ... => ... | Patterns.cs:65:26:65:27 | M6 | +| Patterns.cs:70:13:70:27 | After ... => ... [match] | Patterns.cs:65:26:65:27 | M6 | +| Patterns.cs:70:13:70:27 | After ... => ... [no-match] | Patterns.cs:65:26:65:27 | M6 | | Patterns.cs:70:18:70:27 | "possible" | Patterns.cs:65:26:65:27 | M6 | -| Patterns.cs:74:26:74:27 | enter M7 | Patterns.cs:74:26:74:27 | M7 | -| Patterns.cs:74:26:74:27 | exit M7 | Patterns.cs:74:26:74:27 | M7 | -| Patterns.cs:74:26:74:27 | exit M7 (normal) | Patterns.cs:74:26:74:27 | M7 | +| Patterns.cs:74:26:74:27 | Entry | Patterns.cs:74:26:74:27 | M7 | +| Patterns.cs:74:26:74:27 | Exit | Patterns.cs:74:26:74:27 | M7 | +| Patterns.cs:74:26:74:27 | Normal Exit | Patterns.cs:74:26:74:27 | M7 | +| Patterns.cs:74:33:74:33 | i | Patterns.cs:74:26:74:27 | M7 | | Patterns.cs:75:5:83:5 | {...} | Patterns.cs:74:26:74:27 | M7 | +| Patterns.cs:76:9:82:10 | Before return ...; | Patterns.cs:74:26:74:27 | M7 | | Patterns.cs:76:9:82:10 | return ...; | Patterns.cs:74:26:74:27 | M7 | | Patterns.cs:76:16:76:16 | access to parameter i | Patterns.cs:74:26:74:27 | M7 | | Patterns.cs:76:16:82:9 | ... switch { ... } | Patterns.cs:74:26:74:27 | M7 | +| Patterns.cs:76:16:82:9 | After ... switch { ... } | Patterns.cs:74:26:74:27 | M7 | | Patterns.cs:78:13:78:15 | > ... | Patterns.cs:74:26:74:27 | M7 | +| Patterns.cs:78:13:78:15 | After > ... [match] | Patterns.cs:74:26:74:27 | M7 | +| Patterns.cs:78:13:78:15 | After > ... [no-match] | Patterns.cs:74:26:74:27 | M7 | +| Patterns.cs:78:13:78:15 | Before > ... | Patterns.cs:74:26:74:27 | M7 | | Patterns.cs:78:13:78:24 | ... => ... | Patterns.cs:74:26:74:27 | M7 | +| Patterns.cs:78:13:78:24 | After ... => ... [match] | Patterns.cs:74:26:74:27 | M7 | +| Patterns.cs:78:13:78:24 | After ... => ... [no-match] | Patterns.cs:74:26:74:27 | M7 | | Patterns.cs:78:15:78:15 | 1 | Patterns.cs:74:26:74:27 | M7 | | Patterns.cs:78:20:78:24 | "> 1" | Patterns.cs:74:26:74:27 | M7 | | Patterns.cs:79:13:79:15 | < ... | Patterns.cs:74:26:74:27 | M7 | +| Patterns.cs:79:13:79:15 | After < ... [match] | Patterns.cs:74:26:74:27 | M7 | +| Patterns.cs:79:13:79:15 | After < ... [no-match] | Patterns.cs:74:26:74:27 | M7 | +| Patterns.cs:79:13:79:15 | Before < ... | Patterns.cs:74:26:74:27 | M7 | | Patterns.cs:79:13:79:24 | ... => ... | Patterns.cs:74:26:74:27 | M7 | +| Patterns.cs:79:13:79:24 | After ... => ... [match] | Patterns.cs:74:26:74:27 | M7 | +| Patterns.cs:79:13:79:24 | After ... => ... [no-match] | Patterns.cs:74:26:74:27 | M7 | | Patterns.cs:79:15:79:15 | 0 | Patterns.cs:74:26:74:27 | M7 | | Patterns.cs:79:20:79:24 | "< 0" | Patterns.cs:74:26:74:27 | M7 | | Patterns.cs:80:13:80:13 | 1 | Patterns.cs:74:26:74:27 | M7 | +| Patterns.cs:80:13:80:13 | After 1 [match] | Patterns.cs:74:26:74:27 | M7 | +| Patterns.cs:80:13:80:13 | After 1 [no-match] | Patterns.cs:74:26:74:27 | M7 | | Patterns.cs:80:13:80:20 | ... => ... | Patterns.cs:74:26:74:27 | M7 | +| Patterns.cs:80:13:80:20 | After ... => ... [match] | Patterns.cs:74:26:74:27 | M7 | +| Patterns.cs:80:13:80:20 | After ... => ... [no-match] | Patterns.cs:74:26:74:27 | M7 | | Patterns.cs:80:18:80:20 | "1" | Patterns.cs:74:26:74:27 | M7 | +| Patterns.cs:81:13:81:13 | After _ [match] | Patterns.cs:74:26:74:27 | M7 | | Patterns.cs:81:13:81:13 | _ | Patterns.cs:74:26:74:27 | M7 | | Patterns.cs:81:13:81:20 | ... => ... | Patterns.cs:74:26:74:27 | M7 | +| Patterns.cs:81:13:81:20 | After ... => ... [match] | Patterns.cs:74:26:74:27 | M7 | | Patterns.cs:81:18:81:20 | "0" | Patterns.cs:74:26:74:27 | M7 | -| Patterns.cs:85:26:85:27 | enter M8 | Patterns.cs:85:26:85:27 | M8 | -| Patterns.cs:85:26:85:27 | exit M8 | Patterns.cs:85:26:85:27 | M8 | -| Patterns.cs:85:26:85:27 | exit M8 (normal) | Patterns.cs:85:26:85:27 | M8 | +| Patterns.cs:85:26:85:27 | Entry | Patterns.cs:85:26:85:27 | M8 | +| Patterns.cs:85:26:85:27 | Exit | Patterns.cs:85:26:85:27 | M8 | +| Patterns.cs:85:26:85:27 | Normal Exit | Patterns.cs:85:26:85:27 | M8 | +| Patterns.cs:85:33:85:33 | i | Patterns.cs:85:26:85:27 | M8 | | Patterns.cs:85:39:85:39 | access to parameter i | Patterns.cs:85:26:85:27 | M8 | -| Patterns.cs:85:39:85:53 | [false] ... is ... | Patterns.cs:85:26:85:27 | M8 | -| Patterns.cs:85:39:85:53 | [true] ... is ... | Patterns.cs:85:26:85:27 | M8 | +| Patterns.cs:85:39:85:53 | ... is ... | Patterns.cs:85:26:85:27 | M8 | +| Patterns.cs:85:39:85:53 | After ... is ... [false] | Patterns.cs:85:26:85:27 | M8 | +| Patterns.cs:85:39:85:53 | After ... is ... [true] | Patterns.cs:85:26:85:27 | M8 | +| Patterns.cs:85:39:85:53 | Before ... is ... | Patterns.cs:85:26:85:27 | M8 | +| Patterns.cs:85:39:85:53 | [MatchTrue] ... is ... | Patterns.cs:85:26:85:27 | M8 | | Patterns.cs:85:39:85:69 | ... ? ... : ... | Patterns.cs:85:26:85:27 | M8 | +| Patterns.cs:85:39:85:69 | After ... ? ... : ... | Patterns.cs:85:26:85:27 | M8 | | Patterns.cs:85:44:85:44 | 1 | Patterns.cs:85:26:85:27 | M8 | -| Patterns.cs:85:44:85:53 | [match] ... or ... | Patterns.cs:85:26:85:27 | M8 | -| Patterns.cs:85:44:85:53 | [no-match] ... or ... | Patterns.cs:85:26:85:27 | M8 | -| Patterns.cs:85:49:85:53 | [match] not ... | Patterns.cs:85:26:85:27 | M8 | -| Patterns.cs:85:49:85:53 | [no-match] not ... | Patterns.cs:85:26:85:27 | M8 | +| Patterns.cs:85:44:85:53 | ... or ... | Patterns.cs:85:26:85:27 | M8 | +| Patterns.cs:85:44:85:53 | After ... or ... | Patterns.cs:85:26:85:27 | M8 | +| Patterns.cs:85:44:85:53 | Before ... or ... | Patterns.cs:85:26:85:27 | M8 | +| Patterns.cs:85:49:85:53 | After not ... | Patterns.cs:85:26:85:27 | M8 | +| Patterns.cs:85:49:85:53 | Before not ... | Patterns.cs:85:26:85:27 | M8 | +| Patterns.cs:85:49:85:53 | not ... | Patterns.cs:85:26:85:27 | M8 | | Patterns.cs:85:53:85:53 | 2 | Patterns.cs:85:26:85:27 | M8 | | Patterns.cs:85:57:85:63 | "not 2" | Patterns.cs:85:26:85:27 | M8 | | Patterns.cs:85:67:85:69 | "2" | Patterns.cs:85:26:85:27 | M8 | -| Patterns.cs:87:26:87:27 | enter M9 | Patterns.cs:87:26:87:27 | M9 | -| Patterns.cs:87:26:87:27 | exit M9 | Patterns.cs:87:26:87:27 | M9 | -| Patterns.cs:87:26:87:27 | exit M9 (normal) | Patterns.cs:87:26:87:27 | M9 | +| Patterns.cs:87:26:87:27 | Entry | Patterns.cs:87:26:87:27 | M9 | +| Patterns.cs:87:26:87:27 | Exit | Patterns.cs:87:26:87:27 | M9 | +| Patterns.cs:87:26:87:27 | Normal Exit | Patterns.cs:87:26:87:27 | M9 | +| Patterns.cs:87:33:87:33 | i | Patterns.cs:87:26:87:27 | M9 | | Patterns.cs:87:39:87:39 | access to parameter i | Patterns.cs:87:26:87:27 | M9 | -| Patterns.cs:87:39:87:54 | [false] ... is ... | Patterns.cs:87:26:87:27 | M9 | -| Patterns.cs:87:39:87:54 | [true] ... is ... | Patterns.cs:87:26:87:27 | M9 | +| Patterns.cs:87:39:87:54 | ... is ... | Patterns.cs:87:26:87:27 | M9 | +| Patterns.cs:87:39:87:54 | After ... is ... [false] | Patterns.cs:87:26:87:27 | M9 | +| Patterns.cs:87:39:87:54 | After ... is ... [true] | Patterns.cs:87:26:87:27 | M9 | +| Patterns.cs:87:39:87:54 | Before ... is ... | Patterns.cs:87:26:87:27 | M9 | +| Patterns.cs:87:39:87:54 | [MatchTrue] ... is ... | Patterns.cs:87:26:87:27 | M9 | | Patterns.cs:87:39:87:70 | ... ? ... : ... | Patterns.cs:87:26:87:27 | M9 | +| Patterns.cs:87:39:87:70 | After ... ? ... : ... | Patterns.cs:87:26:87:27 | M9 | | Patterns.cs:87:44:87:44 | 1 | Patterns.cs:87:26:87:27 | M9 | -| Patterns.cs:87:44:87:54 | [match] ... and ... | Patterns.cs:87:26:87:27 | M9 | -| Patterns.cs:87:44:87:54 | [no-match] ... and ... | Patterns.cs:87:26:87:27 | M9 | -| Patterns.cs:87:50:87:54 | [match] not ... | Patterns.cs:87:26:87:27 | M9 | -| Patterns.cs:87:50:87:54 | [no-match] not ... | Patterns.cs:87:26:87:27 | M9 | +| Patterns.cs:87:44:87:54 | ... and ... | Patterns.cs:87:26:87:27 | M9 | +| Patterns.cs:87:44:87:54 | After ... and ... | Patterns.cs:87:26:87:27 | M9 | +| Patterns.cs:87:44:87:54 | Before ... and ... | Patterns.cs:87:26:87:27 | M9 | +| Patterns.cs:87:50:87:54 | After not ... | Patterns.cs:87:26:87:27 | M9 | +| Patterns.cs:87:50:87:54 | Before not ... | Patterns.cs:87:26:87:27 | M9 | +| Patterns.cs:87:50:87:54 | not ... | Patterns.cs:87:26:87:27 | M9 | | Patterns.cs:87:54:87:54 | 2 | Patterns.cs:87:26:87:27 | M9 | | Patterns.cs:87:58:87:60 | "1" | Patterns.cs:87:26:87:27 | M9 | | Patterns.cs:87:64:87:70 | "not 1" | Patterns.cs:87:26:87:27 | M9 | -| Patterns.cs:93:17:93:19 | enter M10 | Patterns.cs:93:17:93:19 | M10 | -| Patterns.cs:93:17:93:19 | exit M10 | Patterns.cs:93:17:93:19 | M10 | -| Patterns.cs:93:17:93:19 | exit M10 (normal) | Patterns.cs:93:17:93:19 | M10 | +| Patterns.cs:93:17:93:19 | Entry | Patterns.cs:93:17:93:19 | M10 | +| Patterns.cs:93:17:93:19 | Exit | Patterns.cs:93:17:93:19 | M10 | +| Patterns.cs:93:17:93:19 | Normal Exit | Patterns.cs:93:17:93:19 | M10 | +| Patterns.cs:94:5:99:5 | After {...} | Patterns.cs:93:17:93:19 | M10 | | Patterns.cs:94:5:99:5 | {...} | Patterns.cs:93:17:93:19 | M10 | +| Patterns.cs:95:9:98:9 | After if (...) ... | Patterns.cs:93:17:93:19 | M10 | | Patterns.cs:95:9:98:9 | if (...) ... | Patterns.cs:93:17:93:19 | M10 | | Patterns.cs:95:13:95:16 | this access | Patterns.cs:93:17:93:19 | M10 | -| Patterns.cs:95:13:95:40 | [false] ... is ... | Patterns.cs:93:17:93:19 | M10 | -| Patterns.cs:95:13:95:40 | [true] ... is ... | Patterns.cs:93:17:93:19 | M10 | -| Patterns.cs:95:21:95:40 | [match] { ... } | Patterns.cs:93:17:93:19 | M10 | -| Patterns.cs:95:21:95:40 | [match] { ... } | Patterns.cs:93:17:93:19 | M10 | -| Patterns.cs:95:21:95:40 | [no-match] { ... } | Patterns.cs:93:17:93:19 | M10 | -| Patterns.cs:95:21:95:40 | [no-match] { ... } | Patterns.cs:93:17:93:19 | M10 | +| Patterns.cs:95:13:95:40 | ... is ... | Patterns.cs:93:17:93:19 | M10 | +| Patterns.cs:95:13:95:40 | After ... is ... [false] | Patterns.cs:93:17:93:19 | M10 | +| Patterns.cs:95:13:95:40 | After ... is ... [true] | Patterns.cs:93:17:93:19 | M10 | +| Patterns.cs:95:13:95:40 | Before ... is ... | Patterns.cs:93:17:93:19 | M10 | +| Patterns.cs:95:13:95:40 | [MatchTrue] ... is ... | Patterns.cs:93:17:93:19 | M10 | +| Patterns.cs:95:21:95:40 | After { ... } | Patterns.cs:93:17:93:19 | M10 | +| Patterns.cs:95:21:95:40 | After { ... } | Patterns.cs:93:17:93:19 | M10 | +| Patterns.cs:95:21:95:40 | Before { ... } | Patterns.cs:93:17:93:19 | M10 | +| Patterns.cs:95:21:95:40 | Before { ... } | Patterns.cs:93:17:93:19 | M10 | +| Patterns.cs:95:21:95:40 | { ... } | Patterns.cs:93:17:93:19 | M10 | +| Patterns.cs:95:21:95:40 | { ... } | Patterns.cs:93:17:93:19 | M10 | | Patterns.cs:95:29:95:31 | access to constant A | Patterns.cs:93:17:93:19 | M10 | -| Patterns.cs:95:29:95:38 | [match] ... or ... | Patterns.cs:93:17:93:19 | M10 | -| Patterns.cs:95:29:95:38 | [no-match] ... or ... | Patterns.cs:93:17:93:19 | M10 | +| Patterns.cs:95:29:95:38 | ... or ... | Patterns.cs:93:17:93:19 | M10 | +| Patterns.cs:95:29:95:38 | After ... or ... | Patterns.cs:93:17:93:19 | M10 | +| Patterns.cs:95:29:95:38 | Before ... or ... | Patterns.cs:93:17:93:19 | M10 | | Patterns.cs:95:36:95:38 | access to constant B | Patterns.cs:93:17:93:19 | M10 | +| Patterns.cs:96:9:98:9 | After {...} | Patterns.cs:93:17:93:19 | M10 | | Patterns.cs:96:9:98:9 | {...} | Patterns.cs:93:17:93:19 | M10 | +| Patterns.cs:97:13:97:38 | After call to method WriteLine | Patterns.cs:93:17:93:19 | M10 | +| Patterns.cs:97:13:97:38 | Before call to method WriteLine | Patterns.cs:93:17:93:19 | M10 | | Patterns.cs:97:13:97:38 | call to method WriteLine | Patterns.cs:93:17:93:19 | M10 | | Patterns.cs:97:13:97:39 | ...; | Patterns.cs:93:17:93:19 | M10 | +| Patterns.cs:97:13:97:39 | After ...; | Patterns.cs:93:17:93:19 | M10 | | Patterns.cs:97:31:97:37 | "not C" | Patterns.cs:93:17:93:19 | M10 | +| PostDominance.cs:3:7:3:19 | After call to constructor Object | PostDominance.cs:3:7:3:19 | PostDominance | +| PostDominance.cs:3:7:3:19 | After call to method | PostDominance.cs:3:7:3:19 | PostDominance | +| PostDominance.cs:3:7:3:19 | Before call to constructor Object | PostDominance.cs:3:7:3:19 | PostDominance | +| PostDominance.cs:3:7:3:19 | Before call to method | PostDominance.cs:3:7:3:19 | PostDominance | +| PostDominance.cs:3:7:3:19 | Entry | PostDominance.cs:3:7:3:19 | PostDominance | +| PostDominance.cs:3:7:3:19 | Exit | PostDominance.cs:3:7:3:19 | PostDominance | +| PostDominance.cs:3:7:3:19 | Normal Exit | PostDominance.cs:3:7:3:19 | PostDominance | | PostDominance.cs:3:7:3:19 | call to constructor Object | PostDominance.cs:3:7:3:19 | PostDominance | | PostDominance.cs:3:7:3:19 | call to method | PostDominance.cs:3:7:3:19 | PostDominance | -| PostDominance.cs:3:7:3:19 | enter PostDominance | PostDominance.cs:3:7:3:19 | PostDominance | -| PostDominance.cs:3:7:3:19 | exit PostDominance | PostDominance.cs:3:7:3:19 | PostDominance | -| PostDominance.cs:3:7:3:19 | exit PostDominance (normal) | PostDominance.cs:3:7:3:19 | PostDominance | | PostDominance.cs:3:7:3:19 | this access | PostDominance.cs:3:7:3:19 | PostDominance | | PostDominance.cs:3:7:3:19 | {...} | PostDominance.cs:3:7:3:19 | PostDominance | -| PostDominance.cs:5:10:5:11 | enter M1 | PostDominance.cs:5:10:5:11 | M1 | -| PostDominance.cs:5:10:5:11 | exit M1 | PostDominance.cs:5:10:5:11 | M1 | -| PostDominance.cs:5:10:5:11 | exit M1 (normal) | PostDominance.cs:5:10:5:11 | M1 | +| PostDominance.cs:5:10:5:11 | Entry | PostDominance.cs:5:10:5:11 | M1 | +| PostDominance.cs:5:10:5:11 | Exit | PostDominance.cs:5:10:5:11 | M1 | +| PostDominance.cs:5:10:5:11 | Normal Exit | PostDominance.cs:5:10:5:11 | M1 | +| PostDominance.cs:5:20:5:20 | s | PostDominance.cs:5:10:5:11 | M1 | +| PostDominance.cs:6:5:8:5 | After {...} | PostDominance.cs:5:10:5:11 | M1 | | PostDominance.cs:6:5:8:5 | {...} | PostDominance.cs:5:10:5:11 | M1 | +| PostDominance.cs:7:9:7:28 | After call to method WriteLine | PostDominance.cs:5:10:5:11 | M1 | +| PostDominance.cs:7:9:7:28 | Before call to method WriteLine | PostDominance.cs:5:10:5:11 | M1 | | PostDominance.cs:7:9:7:28 | call to method WriteLine | PostDominance.cs:5:10:5:11 | M1 | | PostDominance.cs:7:9:7:29 | ...; | PostDominance.cs:5:10:5:11 | M1 | +| PostDominance.cs:7:9:7:29 | After ...; | PostDominance.cs:5:10:5:11 | M1 | | PostDominance.cs:7:27:7:27 | access to parameter s | PostDominance.cs:5:10:5:11 | M1 | -| PostDominance.cs:10:10:10:11 | enter M2 | PostDominance.cs:10:10:10:11 | M2 | -| PostDominance.cs:10:10:10:11 | exit M2 | PostDominance.cs:10:10:10:11 | M2 | -| PostDominance.cs:10:10:10:11 | exit M2 (normal) | PostDominance.cs:10:10:10:11 | M2 | +| PostDominance.cs:10:10:10:11 | Entry | PostDominance.cs:10:10:10:11 | M2 | +| PostDominance.cs:10:10:10:11 | Exit | PostDominance.cs:10:10:10:11 | M2 | +| PostDominance.cs:10:10:10:11 | Normal Exit | PostDominance.cs:10:10:10:11 | M2 | +| PostDominance.cs:10:20:10:20 | s | PostDominance.cs:10:10:10:11 | M2 | +| PostDominance.cs:11:5:15:5 | After {...} | PostDominance.cs:10:10:10:11 | M2 | | PostDominance.cs:11:5:15:5 | {...} | PostDominance.cs:10:10:10:11 | M2 | +| PostDominance.cs:12:9:13:19 | After if (...) ... | PostDominance.cs:10:10:10:11 | M2 | | PostDominance.cs:12:9:13:19 | if (...) ... | PostDominance.cs:10:10:10:11 | M2 | | PostDominance.cs:12:13:12:13 | access to parameter s | PostDominance.cs:10:10:10:11 | M2 | -| PostDominance.cs:12:13:12:21 | [false] ... is ... | PostDominance.cs:10:10:10:11 | M2 | -| PostDominance.cs:12:13:12:21 | [true] ... is ... | PostDominance.cs:10:10:10:11 | M2 | +| PostDominance.cs:12:13:12:21 | ... is ... | PostDominance.cs:10:10:10:11 | M2 | +| PostDominance.cs:12:13:12:21 | After ... is ... [false] | PostDominance.cs:10:10:10:11 | M2 | +| PostDominance.cs:12:13:12:21 | After ... is ... [true] | PostDominance.cs:10:10:10:11 | M2 | +| PostDominance.cs:12:13:12:21 | Before ... is ... | PostDominance.cs:10:10:10:11 | M2 | +| PostDominance.cs:12:13:12:21 | [MatchTrue] ... is ... | PostDominance.cs:10:10:10:11 | M2 | | PostDominance.cs:12:18:12:21 | null | PostDominance.cs:10:10:10:11 | M2 | +| PostDominance.cs:13:13:13:19 | Before return ...; | PostDominance.cs:10:10:10:11 | M2 | | PostDominance.cs:13:13:13:19 | return ...; | PostDominance.cs:10:10:10:11 | M2 | +| PostDominance.cs:14:9:14:28 | After call to method WriteLine | PostDominance.cs:10:10:10:11 | M2 | +| PostDominance.cs:14:9:14:28 | Before call to method WriteLine | PostDominance.cs:10:10:10:11 | M2 | | PostDominance.cs:14:9:14:28 | call to method WriteLine | PostDominance.cs:10:10:10:11 | M2 | | PostDominance.cs:14:9:14:29 | ...; | PostDominance.cs:10:10:10:11 | M2 | +| PostDominance.cs:14:9:14:29 | After ...; | PostDominance.cs:10:10:10:11 | M2 | | PostDominance.cs:14:27:14:27 | access to parameter s | PostDominance.cs:10:10:10:11 | M2 | -| PostDominance.cs:17:10:17:11 | enter M3 | PostDominance.cs:17:10:17:11 | M3 | -| PostDominance.cs:17:10:17:11 | exit M3 | PostDominance.cs:17:10:17:11 | M3 | -| PostDominance.cs:17:10:17:11 | exit M3 (abnormal) | PostDominance.cs:17:10:17:11 | M3 | -| PostDominance.cs:17:10:17:11 | exit M3 (normal) | PostDominance.cs:17:10:17:11 | M3 | +| PostDominance.cs:17:10:17:11 | Entry | PostDominance.cs:17:10:17:11 | M3 | +| PostDominance.cs:17:10:17:11 | Exceptional Exit | PostDominance.cs:17:10:17:11 | M3 | +| PostDominance.cs:17:10:17:11 | Exit | PostDominance.cs:17:10:17:11 | M3 | +| PostDominance.cs:17:10:17:11 | Normal Exit | PostDominance.cs:17:10:17:11 | M3 | +| PostDominance.cs:17:20:17:20 | s | PostDominance.cs:17:10:17:11 | M3 | +| PostDominance.cs:18:5:22:5 | After {...} | PostDominance.cs:17:10:17:11 | M3 | | PostDominance.cs:18:5:22:5 | {...} | PostDominance.cs:17:10:17:11 | M3 | +| PostDominance.cs:19:9:20:55 | After if (...) ... | PostDominance.cs:17:10:17:11 | M3 | | PostDominance.cs:19:9:20:55 | if (...) ... | PostDominance.cs:17:10:17:11 | M3 | | PostDominance.cs:19:13:19:13 | access to parameter s | PostDominance.cs:17:10:17:11 | M3 | -| PostDominance.cs:19:13:19:21 | [false] ... is ... | PostDominance.cs:17:10:17:11 | M3 | -| PostDominance.cs:19:13:19:21 | [true] ... is ... | PostDominance.cs:17:10:17:11 | M3 | +| PostDominance.cs:19:13:19:21 | ... is ... | PostDominance.cs:17:10:17:11 | M3 | +| PostDominance.cs:19:13:19:21 | After ... is ... [false] | PostDominance.cs:17:10:17:11 | M3 | +| PostDominance.cs:19:13:19:21 | After ... is ... [true] | PostDominance.cs:17:10:17:11 | M3 | +| PostDominance.cs:19:13:19:21 | Before ... is ... | PostDominance.cs:17:10:17:11 | M3 | +| PostDominance.cs:19:13:19:21 | [MatchTrue] ... is ... | PostDominance.cs:17:10:17:11 | M3 | | PostDominance.cs:19:18:19:21 | null | PostDominance.cs:17:10:17:11 | M3 | +| PostDominance.cs:20:13:20:55 | Before throw ...; | PostDominance.cs:17:10:17:11 | M3 | | PostDominance.cs:20:13:20:55 | throw ...; | PostDominance.cs:17:10:17:11 | M3 | +| PostDominance.cs:20:19:20:54 | After object creation of type ArgumentNullException | PostDominance.cs:17:10:17:11 | M3 | +| PostDominance.cs:20:19:20:54 | Before object creation of type ArgumentNullException | PostDominance.cs:17:10:17:11 | M3 | | PostDominance.cs:20:19:20:54 | object creation of type ArgumentNullException | PostDominance.cs:17:10:17:11 | M3 | | PostDominance.cs:20:45:20:53 | nameof(...) | PostDominance.cs:17:10:17:11 | M3 | +| PostDominance.cs:21:9:21:28 | After call to method WriteLine | PostDominance.cs:17:10:17:11 | M3 | +| PostDominance.cs:21:9:21:28 | Before call to method WriteLine | PostDominance.cs:17:10:17:11 | M3 | | PostDominance.cs:21:9:21:28 | call to method WriteLine | PostDominance.cs:17:10:17:11 | M3 | | PostDominance.cs:21:9:21:29 | ...; | PostDominance.cs:17:10:17:11 | M3 | +| PostDominance.cs:21:9:21:29 | After ...; | PostDominance.cs:17:10:17:11 | M3 | | PostDominance.cs:21:27:21:27 | access to parameter s | PostDominance.cs:17:10:17:11 | M3 | +| Qualifiers.cs:1:7:1:16 | After call to constructor Object | Qualifiers.cs:1:7:1:16 | Qualifiers | +| Qualifiers.cs:1:7:1:16 | After call to method | Qualifiers.cs:1:7:1:16 | Qualifiers | +| Qualifiers.cs:1:7:1:16 | Before call to constructor Object | Qualifiers.cs:1:7:1:16 | Qualifiers | +| Qualifiers.cs:1:7:1:16 | Before call to method | Qualifiers.cs:1:7:1:16 | Qualifiers | +| Qualifiers.cs:1:7:1:16 | Entry | Qualifiers.cs:1:7:1:16 | Qualifiers | +| Qualifiers.cs:1:7:1:16 | Exit | Qualifiers.cs:1:7:1:16 | Qualifiers | +| Qualifiers.cs:1:7:1:16 | Normal Exit | Qualifiers.cs:1:7:1:16 | Qualifiers | | Qualifiers.cs:1:7:1:16 | call to constructor Object | Qualifiers.cs:1:7:1:16 | Qualifiers | | Qualifiers.cs:1:7:1:16 | call to method | Qualifiers.cs:1:7:1:16 | Qualifiers | -| Qualifiers.cs:1:7:1:16 | enter Qualifiers | Qualifiers.cs:1:7:1:16 | Qualifiers | -| Qualifiers.cs:1:7:1:16 | exit Qualifiers | Qualifiers.cs:1:7:1:16 | Qualifiers | -| Qualifiers.cs:1:7:1:16 | exit Qualifiers (normal) | Qualifiers.cs:1:7:1:16 | Qualifiers | | Qualifiers.cs:1:7:1:16 | this access | Qualifiers.cs:1:7:1:16 | Qualifiers | | Qualifiers.cs:1:7:1:16 | {...} | Qualifiers.cs:1:7:1:16 | Qualifiers | -| Qualifiers.cs:7:16:7:21 | enter Method | Qualifiers.cs:7:16:7:21 | Method | -| Qualifiers.cs:7:16:7:21 | exit Method | Qualifiers.cs:7:16:7:21 | Method | -| Qualifiers.cs:7:16:7:21 | exit Method (normal) | Qualifiers.cs:7:16:7:21 | Method | +| Qualifiers.cs:7:16:7:21 | Entry | Qualifiers.cs:7:16:7:21 | Method | +| Qualifiers.cs:7:16:7:21 | Exit | Qualifiers.cs:7:16:7:21 | Method | +| Qualifiers.cs:7:16:7:21 | Normal Exit | Qualifiers.cs:7:16:7:21 | Method | | Qualifiers.cs:7:28:7:31 | null | Qualifiers.cs:7:16:7:21 | Method | -| Qualifiers.cs:8:23:8:34 | enter StaticMethod | Qualifiers.cs:8:23:8:34 | StaticMethod | -| Qualifiers.cs:8:23:8:34 | exit StaticMethod | Qualifiers.cs:8:23:8:34 | StaticMethod | -| Qualifiers.cs:8:23:8:34 | exit StaticMethod (normal) | Qualifiers.cs:8:23:8:34 | StaticMethod | +| Qualifiers.cs:8:23:8:34 | Entry | Qualifiers.cs:8:23:8:34 | StaticMethod | +| Qualifiers.cs:8:23:8:34 | Exit | Qualifiers.cs:8:23:8:34 | StaticMethod | +| Qualifiers.cs:8:23:8:34 | Normal Exit | Qualifiers.cs:8:23:8:34 | StaticMethod | | Qualifiers.cs:8:41:8:44 | null | Qualifiers.cs:8:23:8:34 | StaticMethod | -| Qualifiers.cs:10:10:10:10 | enter M | Qualifiers.cs:10:10:10:10 | M | -| Qualifiers.cs:10:10:10:10 | exit M | Qualifiers.cs:10:10:10:10 | M | -| Qualifiers.cs:10:10:10:10 | exit M (normal) | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:10:10:10:10 | Entry | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:10:10:10:10 | Exit | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:10:10:10:10 | Normal Exit | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:11:5:31:5 | After {...} | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:11:5:31:5 | {...} | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:12:9:12:22 | ... ...; | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:12:9:12:22 | After ... ...; | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:12:13:12:13 | access to local variable q | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:12:13:12:21 | After Qualifiers q = ... | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:12:13:12:21 | Before Qualifiers q = ... | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:12:13:12:21 | Qualifiers q = ... | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:12:17:12:21 | After access to field Field | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:12:17:12:21 | Before access to field Field | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:12:17:12:21 | access to field Field | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:12:17:12:21 | this access | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:13:9:13:9 | access to local variable q | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:13:9:13:20 | ... = ... | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:13:9:13:20 | After ... = ... | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:13:9:13:20 | Before ... = ... | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:13:9:13:21 | ...; | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:13:9:13:21 | After ...; | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:13:13:13:20 | After access to property Property | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:13:13:13:20 | Before access to property Property | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:13:13:13:20 | access to property Property | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:13:13:13:20 | this access | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:14:9:14:9 | access to local variable q | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:14:9:14:20 | ... = ... | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:14:9:14:20 | After ... = ... | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:14:9:14:20 | Before ... = ... | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:14:9:14:21 | ...; | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:14:9:14:21 | After ...; | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:14:13:14:20 | After call to method Method | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:14:13:14:20 | Before call to method Method | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:14:13:14:20 | call to method Method | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:14:13:14:20 | this access | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:16:9:16:9 | access to local variable q | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:16:9:16:22 | ... = ... | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:16:9:16:22 | After ... = ... | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:16:9:16:22 | Before ... = ... | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:16:9:16:23 | ...; | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:16:9:16:23 | After ...; | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:16:13:16:16 | this access | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:16:13:16:22 | After access to field Field | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:16:13:16:22 | Before access to field Field | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:16:13:16:22 | access to field Field | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:17:9:17:9 | access to local variable q | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:17:9:17:25 | ... = ... | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:17:9:17:25 | After ... = ... | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:17:9:17:25 | Before ... = ... | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:17:9:17:26 | ...; | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:17:9:17:26 | After ...; | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:17:13:17:16 | this access | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:17:13:17:25 | After access to property Property | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:17:13:17:25 | Before access to property Property | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:17:13:17:25 | access to property Property | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:18:9:18:9 | access to local variable q | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:18:9:18:25 | ... = ... | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:18:9:18:25 | After ... = ... | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:18:9:18:25 | Before ... = ... | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:18:9:18:26 | ...; | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:18:9:18:26 | After ...; | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:18:13:18:16 | this access | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:18:13:18:25 | After call to method Method | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:18:13:18:25 | Before call to method Method | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:18:13:18:25 | call to method Method | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:20:9:20:9 | access to local variable q | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:20:9:20:23 | ... = ... | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:20:9:20:23 | After ... = ... | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:20:9:20:23 | Before ... = ... | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:20:9:20:24 | ...; | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:20:9:20:24 | After ...; | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:20:13:20:23 | access to field StaticField | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:21:9:21:9 | access to local variable q | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:21:9:21:26 | ... = ... | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:21:9:21:26 | After ... = ... | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:21:9:21:26 | Before ... = ... | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:21:9:21:27 | ...; | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:21:9:21:27 | After ...; | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:21:13:21:26 | After access to property StaticProperty | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:21:13:21:26 | Before access to property StaticProperty | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:21:13:21:26 | access to property StaticProperty | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:22:9:22:9 | access to local variable q | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:22:9:22:26 | ... = ... | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:22:9:22:26 | After ... = ... | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:22:9:22:26 | Before ... = ... | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:22:9:22:27 | ...; | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:22:9:22:27 | After ...; | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:22:13:22:26 | After call to method StaticMethod | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:22:13:22:26 | Before call to method StaticMethod | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:22:13:22:26 | call to method StaticMethod | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:24:9:24:9 | access to local variable q | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:24:9:24:34 | ... = ... | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:24:9:24:34 | After ... = ... | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:24:9:24:34 | Before ... = ... | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:24:9:24:35 | ...; | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:24:9:24:35 | After ...; | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:24:13:24:34 | access to field StaticField | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:25:9:25:9 | access to local variable q | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:25:9:25:37 | ... = ... | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:25:9:25:37 | After ... = ... | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:25:9:25:37 | Before ... = ... | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:25:9:25:38 | ...; | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:25:9:25:38 | After ...; | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:25:13:25:37 | After access to property StaticProperty | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:25:13:25:37 | Before access to property StaticProperty | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:25:13:25:37 | access to property StaticProperty | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:26:9:26:9 | access to local variable q | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:26:9:26:37 | ... = ... | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:26:9:26:37 | After ... = ... | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:26:9:26:37 | Before ... = ... | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:26:9:26:38 | ...; | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:26:9:26:38 | After ...; | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:26:13:26:37 | After call to method StaticMethod | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:26:13:26:37 | Before call to method StaticMethod | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:26:13:26:37 | call to method StaticMethod | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:28:9:28:9 | access to local variable q | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:28:9:28:40 | ... = ... | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:28:9:28:40 | After ... = ... | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:28:9:28:40 | Before ... = ... | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:28:9:28:41 | ...; | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:28:9:28:41 | After ...; | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:28:13:28:34 | access to field StaticField | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:28:13:28:40 | After access to field Field | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:28:13:28:40 | Before access to field Field | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:28:13:28:40 | access to field Field | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:29:9:29:9 | access to local variable q | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:29:9:29:46 | ... = ... | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:29:9:29:46 | After ... = ... | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:29:9:29:46 | Before ... = ... | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:29:9:29:47 | ...; | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:29:9:29:47 | After ...; | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:29:13:29:37 | After access to property StaticProperty | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:29:13:29:37 | Before access to property StaticProperty | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:29:13:29:37 | access to property StaticProperty | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:29:13:29:46 | After access to property Property | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:29:13:29:46 | Before access to property Property | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:29:13:29:46 | access to property Property | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:30:9:30:9 | access to local variable q | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:30:9:30:46 | ... = ... | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:30:9:30:46 | After ... = ... | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:30:9:30:46 | Before ... = ... | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:30:9:30:47 | ...; | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:30:9:30:47 | After ...; | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:30:13:30:37 | After call to method StaticMethod | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:30:13:30:37 | Before call to method StaticMethod | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:30:13:30:37 | call to method StaticMethod | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:30:13:30:46 | After call to method Method | Qualifiers.cs:10:10:10:10 | M | +| Qualifiers.cs:30:13:30:46 | Before call to method Method | Qualifiers.cs:10:10:10:10 | M | | Qualifiers.cs:30:13:30:46 | call to method Method | Qualifiers.cs:10:10:10:10 | M | +| Switch.cs:3:7:3:12 | After call to constructor Object | Switch.cs:3:7:3:12 | Switch | +| Switch.cs:3:7:3:12 | After call to method | Switch.cs:3:7:3:12 | Switch | +| Switch.cs:3:7:3:12 | Before call to constructor Object | Switch.cs:3:7:3:12 | Switch | +| Switch.cs:3:7:3:12 | Before call to method | Switch.cs:3:7:3:12 | Switch | +| Switch.cs:3:7:3:12 | Entry | Switch.cs:3:7:3:12 | Switch | +| Switch.cs:3:7:3:12 | Exit | Switch.cs:3:7:3:12 | Switch | +| Switch.cs:3:7:3:12 | Normal Exit | Switch.cs:3:7:3:12 | Switch | | Switch.cs:3:7:3:12 | call to constructor Object | Switch.cs:3:7:3:12 | Switch | | Switch.cs:3:7:3:12 | call to method | Switch.cs:3:7:3:12 | Switch | -| Switch.cs:3:7:3:12 | enter Switch | Switch.cs:3:7:3:12 | Switch | -| Switch.cs:3:7:3:12 | exit Switch | Switch.cs:3:7:3:12 | Switch | -| Switch.cs:3:7:3:12 | exit Switch (normal) | Switch.cs:3:7:3:12 | Switch | | Switch.cs:3:7:3:12 | this access | Switch.cs:3:7:3:12 | Switch | | Switch.cs:3:7:3:12 | {...} | Switch.cs:3:7:3:12 | Switch | -| Switch.cs:5:10:5:11 | enter M1 | Switch.cs:5:10:5:11 | M1 | -| Switch.cs:5:10:5:11 | exit M1 | Switch.cs:5:10:5:11 | M1 | -| Switch.cs:5:10:5:11 | exit M1 (normal) | Switch.cs:5:10:5:11 | M1 | +| Switch.cs:5:10:5:11 | Entry | Switch.cs:5:10:5:11 | M1 | +| Switch.cs:5:10:5:11 | Exit | Switch.cs:5:10:5:11 | M1 | +| Switch.cs:5:10:5:11 | Normal Exit | Switch.cs:5:10:5:11 | M1 | +| Switch.cs:5:20:5:20 | o | Switch.cs:5:10:5:11 | M1 | +| Switch.cs:6:5:8:5 | After {...} | Switch.cs:5:10:5:11 | M1 | | Switch.cs:6:5:8:5 | {...} | Switch.cs:5:10:5:11 | M1 | +| Switch.cs:7:9:7:22 | After switch (...) {...} | Switch.cs:5:10:5:11 | M1 | | Switch.cs:7:9:7:22 | switch (...) {...} | Switch.cs:5:10:5:11 | M1 | | Switch.cs:7:17:7:17 | access to parameter o | Switch.cs:5:10:5:11 | M1 | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:10:10:10:11 | M2 | -| Switch.cs:10:10:10:11 | exit M2 | Switch.cs:10:10:10:11 | M2 | -| Switch.cs:10:10:10:11 | exit M2 (abnormal) | Switch.cs:10:10:10:11 | M2 | -| Switch.cs:10:10:10:11 | exit M2 (normal) | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:10:10:10:11 | Exceptional Exit | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:10:10:10:11 | Exit | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:10:10:10:11 | Normal Exit | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:10:20:10:20 | o | Switch.cs:10:10:10:11 | M2 | | Switch.cs:11:5:33:5 | {...} | Switch.cs:10:10:10:11 | M2 | | Switch.cs:12:9:32:9 | switch (...) {...} | Switch.cs:10:10:10:11 | M2 | | Switch.cs:12:17:12:17 | access to parameter o | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:14:13:14:21 | After case ...: [match] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:14:13:14:21 | After case ...: [no-match] | Switch.cs:10:10:10:11 | M2 | | Switch.cs:14:13:14:21 | case ...: | Switch.cs:10:10:10:11 | M2 | | Switch.cs:14:18:14:20 | "a" | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:14:18:14:20 | After "a" [match] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:15:17:15:23 | Before return ...; | Switch.cs:10:10:10:11 | M2 | | Switch.cs:15:17:15:23 | return ...; | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:16:13:16:19 | After case ...: [match] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:16:13:16:19 | After case ...: [no-match] | Switch.cs:10:10:10:11 | M2 | | Switch.cs:16:13:16:19 | case ...: | Switch.cs:10:10:10:11 | M2 | | Switch.cs:16:18:16:18 | 0 | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:16:18:16:18 | After 0 [match] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:17:17:17:38 | Before throw ...; | Switch.cs:10:10:10:11 | M2 | | Switch.cs:17:17:17:38 | throw ...; | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:17:23:17:37 | After object creation of type Exception | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:17:23:17:37 | Before object creation of type Exception | Switch.cs:10:10:10:11 | M2 | | Switch.cs:17:23:17:37 | object creation of type Exception | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:18:13:18:22 | After case ...: [match] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:18:13:18:22 | After case ...: [no-match] | Switch.cs:10:10:10:11 | M2 | | Switch.cs:18:13:18:22 | case ...: | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:18:18:18:21 | After null [match] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:18:18:18:21 | After null [no-match] | Switch.cs:10:10:10:11 | M2 | | Switch.cs:18:18:18:21 | null | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:19:17:19:29 | Before goto default; | Switch.cs:10:10:10:11 | M2 | | Switch.cs:19:17:19:29 | goto default; | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:20:13:20:23 | After case ...: [match] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:20:13:20:23 | After case ...: [no-match] | Switch.cs:10:10:10:11 | M2 | | Switch.cs:20:13:20:23 | case ...: | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:20:18:20:22 | After Int32 i [match] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:20:18:20:22 | After Int32 i [no-match] | Switch.cs:10:10:10:11 | M2 | | Switch.cs:20:18:20:22 | Int32 i | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:21:17:22:27 | After if (...) ... | Switch.cs:10:10:10:11 | M2 | | Switch.cs:21:17:22:27 | if (...) ... | Switch.cs:10:10:10:11 | M2 | | Switch.cs:21:21:21:21 | access to parameter o | Switch.cs:10:10:10:11 | M2 | | Switch.cs:21:21:21:29 | ... == ... | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:21:21:21:29 | After ... == ... [false] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:21:21:21:29 | After ... == ... [true] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:21:21:21:29 | Before ... == ... | Switch.cs:10:10:10:11 | M2 | | Switch.cs:21:26:21:29 | null | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:22:21:22:27 | Before return ...; | Switch.cs:10:10:10:11 | M2 | | Switch.cs:22:21:22:27 | return ...; | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:23:17:23:28 | Before goto case ...; | Switch.cs:10:10:10:11 | M2 | | Switch.cs:23:17:23:28 | goto case ...; | Switch.cs:10:10:10:11 | M2 | | Switch.cs:23:27:23:27 | 0 | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:24:13:24:56 | After case ...: [match] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:24:13:24:56 | After case ...: [no-match] | Switch.cs:10:10:10:11 | M2 | | Switch.cs:24:13:24:56 | case ...: | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:24:18:24:25 | After String s [match] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:24:18:24:25 | After String s [no-match] | Switch.cs:10:10:10:11 | M2 | | Switch.cs:24:18:24:25 | String s | Switch.cs:10:10:10:11 | M2 | | Switch.cs:24:32:24:32 | access to local variable s | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:24:32:24:39 | After access to property Length | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:24:32:24:39 | Before access to property Length | Switch.cs:10:10:10:11 | M2 | | Switch.cs:24:32:24:39 | access to property Length | Switch.cs:10:10:10:11 | M2 | | Switch.cs:24:32:24:43 | ... > ... | Switch.cs:10:10:10:11 | M2 | -| Switch.cs:24:32:24:55 | [false] ... && ... | Switch.cs:10:10:10:11 | M2 | -| Switch.cs:24:32:24:55 | [true] ... && ... | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:24:32:24:43 | After ... > ... [false] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:24:32:24:43 | After ... > ... [true] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:24:32:24:43 | Before ... > ... | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:24:32:24:55 | ... && ... | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:24:32:24:55 | After ... && ... [false] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:24:32:24:55 | After ... && ... [true] | Switch.cs:10:10:10:11 | M2 | | Switch.cs:24:43:24:43 | 0 | Switch.cs:10:10:10:11 | M2 | | Switch.cs:24:48:24:48 | access to local variable s | Switch.cs:10:10:10:11 | M2 | | Switch.cs:24:48:24:55 | ... != ... | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:24:48:24:55 | After ... != ... [false] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:24:48:24:55 | After ... != ... [true] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:24:48:24:55 | Before ... != ... | Switch.cs:10:10:10:11 | M2 | | Switch.cs:24:53:24:55 | "a" | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:25:17:25:36 | After call to method WriteLine | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:25:17:25:36 | Before call to method WriteLine | Switch.cs:10:10:10:11 | M2 | | Switch.cs:25:17:25:36 | call to method WriteLine | Switch.cs:10:10:10:11 | M2 | | Switch.cs:25:17:25:37 | ...; | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:25:17:25:37 | After ...; | Switch.cs:10:10:10:11 | M2 | | Switch.cs:25:35:25:35 | access to local variable s | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:26:17:26:23 | Before return ...; | Switch.cs:10:10:10:11 | M2 | | Switch.cs:26:17:26:23 | return ...; | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:27:13:27:39 | After case ...: [match] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:27:13:27:39 | After case ...: [no-match] | Switch.cs:10:10:10:11 | M2 | | Switch.cs:27:13:27:39 | case ...: | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:27:18:27:25 | After Double d [match] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:27:18:27:25 | After Double d [no-match] | Switch.cs:10:10:10:11 | M2 | | Switch.cs:27:18:27:25 | Double d | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:27:32:27:38 | Before call to method Throw | Switch.cs:10:10:10:11 | M2 | | Switch.cs:27:32:27:38 | call to method Throw | Switch.cs:10:10:10:11 | M2 | | Switch.cs:28:13:28:17 | Label: | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:29:17:29:23 | Before return ...; | Switch.cs:10:10:10:11 | M2 | | Switch.cs:29:17:29:23 | return ...; | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:30:13:30:20 | After default: [match] | Switch.cs:10:10:10:11 | M2 | | Switch.cs:30:13:30:20 | default: | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:31:17:31:27 | Before goto ...; | Switch.cs:10:10:10:11 | M2 | | Switch.cs:31:17:31:27 | goto ...; | Switch.cs:10:10:10:11 | M2 | -| Switch.cs:35:10:35:11 | enter M3 | Switch.cs:35:10:35:11 | M3 | -| Switch.cs:35:10:35:11 | exit M3 | Switch.cs:35:10:35:11 | M3 | -| Switch.cs:35:10:35:11 | exit M3 (abnormal) | Switch.cs:35:10:35:11 | M3 | +| Switch.cs:35:10:35:11 | Entry | Switch.cs:35:10:35:11 | M3 | +| Switch.cs:35:10:35:11 | Exceptional Exit | Switch.cs:35:10:35:11 | M3 | +| Switch.cs:35:10:35:11 | Exit | Switch.cs:35:10:35:11 | M3 | | Switch.cs:36:5:42:5 | {...} | Switch.cs:35:10:35:11 | M3 | | Switch.cs:37:9:41:9 | switch (...) {...} | Switch.cs:35:10:35:11 | M3 | +| Switch.cs:37:17:37:23 | Before call to method Throw | Switch.cs:35:10:35:11 | M3 | | Switch.cs:37:17:37:23 | call to method Throw | Switch.cs:35:10:35:11 | M3 | -| Switch.cs:44:10:44:11 | enter M4 | Switch.cs:44:10:44:11 | M4 | -| Switch.cs:44:10:44:11 | exit M4 | Switch.cs:44:10:44:11 | M4 | -| Switch.cs:44:10:44:11 | exit M4 (normal) | Switch.cs:44:10:44:11 | M4 | +| Switch.cs:44:10:44:11 | Entry | Switch.cs:44:10:44:11 | M4 | +| Switch.cs:44:10:44:11 | Exit | Switch.cs:44:10:44:11 | M4 | +| Switch.cs:44:10:44:11 | Normal Exit | Switch.cs:44:10:44:11 | M4 | +| Switch.cs:44:20:44:20 | o | Switch.cs:44:10:44:11 | M4 | +| Switch.cs:45:5:53:5 | After {...} | Switch.cs:44:10:44:11 | M4 | | Switch.cs:45:5:53:5 | {...} | Switch.cs:44:10:44:11 | M4 | +| Switch.cs:46:9:52:9 | After switch (...) {...} | Switch.cs:44:10:44:11 | M4 | | Switch.cs:46:9:52:9 | switch (...) {...} | Switch.cs:44:10:44:11 | M4 | | Switch.cs:46:17:46:17 | access to parameter o | Switch.cs:44:10:44:11 | M4 | +| Switch.cs:48:13:48:23 | After case ...: [match] | Switch.cs:44:10:44:11 | M4 | +| Switch.cs:48:13:48:23 | After case ...: [no-match] | Switch.cs:44:10:44:11 | M4 | | Switch.cs:48:13:48:23 | case ...: | Switch.cs:44:10:44:11 | M4 | +| Switch.cs:48:18:48:20 | After access to type Int32 [match] | Switch.cs:44:10:44:11 | M4 | +| Switch.cs:48:18:48:20 | After access to type Int32 [no-match] | Switch.cs:44:10:44:11 | M4 | | Switch.cs:48:18:48:20 | access to type Int32 | Switch.cs:44:10:44:11 | M4 | +| Switch.cs:49:17:49:22 | Before break; | Switch.cs:44:10:44:11 | M4 | | Switch.cs:49:17:49:22 | break; | Switch.cs:44:10:44:11 | M4 | +| Switch.cs:50:13:50:39 | After case ...: [match] | Switch.cs:44:10:44:11 | M4 | +| Switch.cs:50:13:50:39 | After case ...: [no-match] | Switch.cs:44:10:44:11 | M4 | | Switch.cs:50:13:50:39 | case ...: | Switch.cs:44:10:44:11 | M4 | +| Switch.cs:50:18:50:21 | After access to type Boolean [match] | Switch.cs:44:10:44:11 | M4 | +| Switch.cs:50:18:50:21 | After access to type Boolean [no-match] | Switch.cs:44:10:44:11 | M4 | | Switch.cs:50:18:50:21 | access to type Boolean | Switch.cs:44:10:44:11 | M4 | | Switch.cs:50:30:50:30 | access to parameter o | Switch.cs:44:10:44:11 | M4 | | Switch.cs:50:30:50:38 | ... != ... | Switch.cs:44:10:44:11 | M4 | +| Switch.cs:50:30:50:38 | After ... != ... [false] | Switch.cs:44:10:44:11 | M4 | +| Switch.cs:50:30:50:38 | After ... != ... [true] | Switch.cs:44:10:44:11 | M4 | +| Switch.cs:50:30:50:38 | Before ... != ... | Switch.cs:44:10:44:11 | M4 | | Switch.cs:50:35:50:38 | null | Switch.cs:44:10:44:11 | M4 | +| Switch.cs:51:17:51:22 | Before break; | Switch.cs:44:10:44:11 | M4 | | Switch.cs:51:17:51:22 | break; | Switch.cs:44:10:44:11 | M4 | -| Switch.cs:55:10:55:11 | enter M5 | Switch.cs:55:10:55:11 | M5 | -| Switch.cs:55:10:55:11 | exit M5 | Switch.cs:55:10:55:11 | M5 | -| Switch.cs:55:10:55:11 | exit M5 (normal) | Switch.cs:55:10:55:11 | M5 | +| Switch.cs:55:10:55:11 | Entry | Switch.cs:55:10:55:11 | M5 | +| Switch.cs:55:10:55:11 | Exit | Switch.cs:55:10:55:11 | M5 | +| Switch.cs:55:10:55:11 | Normal Exit | Switch.cs:55:10:55:11 | M5 | +| Switch.cs:56:5:64:5 | After {...} | Switch.cs:55:10:55:11 | M5 | | Switch.cs:56:5:64:5 | {...} | Switch.cs:55:10:55:11 | M5 | +| Switch.cs:57:9:63:9 | After switch (...) {...} | Switch.cs:55:10:55:11 | M5 | | Switch.cs:57:9:63:9 | switch (...) {...} | Switch.cs:55:10:55:11 | M5 | | Switch.cs:57:17:57:17 | 1 | Switch.cs:55:10:55:11 | M5 | | Switch.cs:57:17:57:21 | ... + ... | Switch.cs:55:10:55:11 | M5 | +| Switch.cs:57:17:57:21 | After ... + ... | Switch.cs:55:10:55:11 | M5 | +| Switch.cs:57:17:57:21 | Before ... + ... | Switch.cs:55:10:55:11 | M5 | | Switch.cs:57:21:57:21 | 2 | Switch.cs:55:10:55:11 | M5 | +| Switch.cs:59:13:59:19 | After case ...: [match] | Switch.cs:55:10:55:11 | M5 | +| Switch.cs:59:13:59:19 | After case ...: [no-match] | Switch.cs:55:10:55:11 | M5 | | Switch.cs:59:13:59:19 | case ...: | Switch.cs:55:10:55:11 | M5 | | Switch.cs:59:18:59:18 | 2 | Switch.cs:55:10:55:11 | M5 | +| Switch.cs:59:18:59:18 | After 2 [match] | Switch.cs:55:10:55:11 | M5 | +| Switch.cs:59:18:59:18 | After 2 [no-match] | Switch.cs:55:10:55:11 | M5 | +| Switch.cs:60:17:60:22 | Before break; | Switch.cs:55:10:55:11 | M5 | +| Switch.cs:60:17:60:22 | break; | Switch.cs:55:10:55:11 | M5 | +| Switch.cs:61:13:61:19 | After case ...: [match] | Switch.cs:55:10:55:11 | M5 | +| Switch.cs:61:13:61:19 | After case ...: [no-match] | Switch.cs:55:10:55:11 | M5 | | Switch.cs:61:13:61:19 | case ...: | Switch.cs:55:10:55:11 | M5 | | Switch.cs:61:18:61:18 | 3 | Switch.cs:55:10:55:11 | M5 | +| Switch.cs:61:18:61:18 | After 3 [match] | Switch.cs:55:10:55:11 | M5 | +| Switch.cs:61:18:61:18 | After 3 [no-match] | Switch.cs:55:10:55:11 | M5 | +| Switch.cs:62:17:62:22 | Before break; | Switch.cs:55:10:55:11 | M5 | | Switch.cs:62:17:62:22 | break; | Switch.cs:55:10:55:11 | M5 | -| Switch.cs:66:10:66:11 | enter M6 | Switch.cs:66:10:66:11 | M6 | -| Switch.cs:66:10:66:11 | exit M6 | Switch.cs:66:10:66:11 | M6 | -| Switch.cs:66:10:66:11 | exit M6 (normal) | Switch.cs:66:10:66:11 | M6 | +| Switch.cs:66:10:66:11 | Entry | Switch.cs:66:10:66:11 | M6 | +| Switch.cs:66:10:66:11 | Exit | Switch.cs:66:10:66:11 | M6 | +| Switch.cs:66:10:66:11 | Normal Exit | Switch.cs:66:10:66:11 | M6 | +| Switch.cs:66:20:66:20 | s | Switch.cs:66:10:66:11 | M6 | +| Switch.cs:67:5:75:5 | After {...} | Switch.cs:66:10:66:11 | M6 | | Switch.cs:67:5:75:5 | {...} | Switch.cs:66:10:66:11 | M6 | +| Switch.cs:68:9:74:9 | After switch (...) {...} | Switch.cs:66:10:66:11 | M6 | | Switch.cs:68:9:74:9 | switch (...) {...} | Switch.cs:66:10:66:11 | M6 | | Switch.cs:68:17:68:25 | (...) ... | Switch.cs:66:10:66:11 | M6 | +| Switch.cs:68:17:68:25 | After (...) ... | Switch.cs:66:10:66:11 | M6 | +| Switch.cs:68:17:68:25 | Before (...) ... | Switch.cs:66:10:66:11 | M6 | | Switch.cs:68:25:68:25 | access to parameter s | Switch.cs:66:10:66:11 | M6 | +| Switch.cs:70:13:70:23 | After case ...: [match] | Switch.cs:66:10:66:11 | M6 | +| Switch.cs:70:13:70:23 | After case ...: [no-match] | Switch.cs:66:10:66:11 | M6 | | Switch.cs:70:13:70:23 | case ...: | Switch.cs:66:10:66:11 | M6 | +| Switch.cs:70:18:70:20 | After access to type Int32 [match] | Switch.cs:66:10:66:11 | M6 | +| Switch.cs:70:18:70:20 | After access to type Int32 [no-match] | Switch.cs:66:10:66:11 | M6 | | Switch.cs:70:18:70:20 | access to type Int32 | Switch.cs:66:10:66:11 | M6 | +| Switch.cs:71:17:71:22 | Before break; | Switch.cs:66:10:66:11 | M6 | +| Switch.cs:71:17:71:22 | break; | Switch.cs:66:10:66:11 | M6 | +| Switch.cs:72:13:72:20 | After case ...: [match] | Switch.cs:66:10:66:11 | M6 | +| Switch.cs:72:13:72:20 | After case ...: [no-match] | Switch.cs:66:10:66:11 | M6 | | Switch.cs:72:13:72:20 | case ...: | Switch.cs:66:10:66:11 | M6 | | Switch.cs:72:18:72:19 | "" | Switch.cs:66:10:66:11 | M6 | +| Switch.cs:72:18:72:19 | After "" [match] | Switch.cs:66:10:66:11 | M6 | +| Switch.cs:72:18:72:19 | After "" [no-match] | Switch.cs:66:10:66:11 | M6 | +| Switch.cs:73:17:73:22 | Before break; | Switch.cs:66:10:66:11 | M6 | | Switch.cs:73:17:73:22 | break; | Switch.cs:66:10:66:11 | M6 | -| Switch.cs:77:10:77:11 | enter M7 | Switch.cs:77:10:77:11 | M7 | -| Switch.cs:77:10:77:11 | exit M7 | Switch.cs:77:10:77:11 | M7 | -| Switch.cs:77:10:77:11 | exit M7 (normal) | Switch.cs:77:10:77:11 | M7 | +| Switch.cs:77:10:77:11 | Entry | Switch.cs:77:10:77:11 | M7 | +| Switch.cs:77:10:77:11 | Exit | Switch.cs:77:10:77:11 | M7 | +| Switch.cs:77:10:77:11 | Normal Exit | Switch.cs:77:10:77:11 | M7 | +| Switch.cs:77:17:77:17 | i | Switch.cs:77:10:77:11 | M7 | +| Switch.cs:77:24:77:24 | j | Switch.cs:77:10:77:11 | M7 | | Switch.cs:78:5:89:5 | {...} | Switch.cs:77:10:77:11 | M7 | +| Switch.cs:79:9:87:9 | After switch (...) {...} | Switch.cs:77:10:77:11 | M7 | | Switch.cs:79:9:87:9 | switch (...) {...} | Switch.cs:77:10:77:11 | M7 | | Switch.cs:79:17:79:17 | access to parameter i | Switch.cs:77:10:77:11 | M7 | +| Switch.cs:81:13:81:19 | After case ...: [match] | Switch.cs:77:10:77:11 | M7 | +| Switch.cs:81:13:81:19 | After case ...: [no-match] | Switch.cs:77:10:77:11 | M7 | | Switch.cs:81:13:81:19 | case ...: | Switch.cs:77:10:77:11 | M7 | | Switch.cs:81:18:81:18 | 1 | Switch.cs:77:10:77:11 | M7 | +| Switch.cs:81:18:81:18 | After 1 [match] | Switch.cs:77:10:77:11 | M7 | +| Switch.cs:81:18:81:18 | After 1 [no-match] | Switch.cs:77:10:77:11 | M7 | +| Switch.cs:82:17:82:28 | Before return ...; | Switch.cs:77:10:77:11 | M7 | | Switch.cs:82:17:82:28 | return ...; | Switch.cs:77:10:77:11 | M7 | | Switch.cs:82:24:82:27 | true | Switch.cs:77:10:77:11 | M7 | +| Switch.cs:83:13:83:19 | After case ...: [match] | Switch.cs:77:10:77:11 | M7 | +| Switch.cs:83:13:83:19 | After case ...: [no-match] | Switch.cs:77:10:77:11 | M7 | | Switch.cs:83:13:83:19 | case ...: | Switch.cs:77:10:77:11 | M7 | | Switch.cs:83:18:83:18 | 2 | Switch.cs:77:10:77:11 | M7 | +| Switch.cs:83:18:83:18 | After 2 [match] | Switch.cs:77:10:77:11 | M7 | +| Switch.cs:83:18:83:18 | After 2 [no-match] | Switch.cs:77:10:77:11 | M7 | +| Switch.cs:84:17:85:26 | After if (...) ... | Switch.cs:77:10:77:11 | M7 | | Switch.cs:84:17:85:26 | if (...) ... | Switch.cs:77:10:77:11 | M7 | | Switch.cs:84:21:84:21 | access to parameter j | Switch.cs:77:10:77:11 | M7 | | Switch.cs:84:21:84:25 | ... > ... | Switch.cs:77:10:77:11 | M7 | +| Switch.cs:84:21:84:25 | After ... > ... [false] | Switch.cs:77:10:77:11 | M7 | +| Switch.cs:84:21:84:25 | After ... > ... [true] | Switch.cs:77:10:77:11 | M7 | +| Switch.cs:84:21:84:25 | Before ... > ... | Switch.cs:77:10:77:11 | M7 | | Switch.cs:84:25:84:25 | 2 | Switch.cs:77:10:77:11 | M7 | +| Switch.cs:85:21:85:26 | Before break; | Switch.cs:77:10:77:11 | M7 | | Switch.cs:85:21:85:26 | break; | Switch.cs:77:10:77:11 | M7 | +| Switch.cs:86:17:86:28 | Before return ...; | Switch.cs:77:10:77:11 | M7 | | Switch.cs:86:17:86:28 | return ...; | Switch.cs:77:10:77:11 | M7 | | Switch.cs:86:24:86:27 | true | Switch.cs:77:10:77:11 | M7 | +| Switch.cs:88:9:88:21 | Before return ...; | Switch.cs:77:10:77:11 | M7 | | Switch.cs:88:9:88:21 | return ...; | Switch.cs:77:10:77:11 | M7 | | Switch.cs:88:16:88:20 | false | Switch.cs:77:10:77:11 | M7 | -| Switch.cs:91:10:91:11 | enter M8 | Switch.cs:91:10:91:11 | M8 | -| Switch.cs:91:10:91:11 | exit M8 | Switch.cs:91:10:91:11 | M8 | -| Switch.cs:91:10:91:11 | exit M8 (normal) | Switch.cs:91:10:91:11 | M8 | +| Switch.cs:91:10:91:11 | Entry | Switch.cs:91:10:91:11 | M8 | +| Switch.cs:91:10:91:11 | Exit | Switch.cs:91:10:91:11 | M8 | +| Switch.cs:91:10:91:11 | Normal Exit | Switch.cs:91:10:91:11 | M8 | +| Switch.cs:91:20:91:20 | o | Switch.cs:91:10:91:11 | M8 | | Switch.cs:92:5:99:5 | {...} | Switch.cs:91:10:91:11 | M8 | +| Switch.cs:93:9:97:9 | After switch (...) {...} | Switch.cs:91:10:91:11 | M8 | | Switch.cs:93:9:97:9 | switch (...) {...} | Switch.cs:91:10:91:11 | M8 | | Switch.cs:93:17:93:17 | access to parameter o | Switch.cs:91:10:91:11 | M8 | +| Switch.cs:95:13:95:23 | After case ...: [match] | Switch.cs:91:10:91:11 | M8 | +| Switch.cs:95:13:95:23 | After case ...: [no-match] | Switch.cs:91:10:91:11 | M8 | | Switch.cs:95:13:95:23 | case ...: | Switch.cs:91:10:91:11 | M8 | +| Switch.cs:95:18:95:20 | After access to type Int32 [match] | Switch.cs:91:10:91:11 | M8 | +| Switch.cs:95:18:95:20 | After access to type Int32 [no-match] | Switch.cs:91:10:91:11 | M8 | | Switch.cs:95:18:95:20 | access to type Int32 | Switch.cs:91:10:91:11 | M8 | +| Switch.cs:96:17:96:28 | Before return ...; | Switch.cs:91:10:91:11 | M8 | | Switch.cs:96:17:96:28 | return ...; | Switch.cs:91:10:91:11 | M8 | | Switch.cs:96:24:96:27 | true | Switch.cs:91:10:91:11 | M8 | +| Switch.cs:98:9:98:21 | Before return ...; | Switch.cs:91:10:91:11 | M8 | | Switch.cs:98:9:98:21 | return ...; | Switch.cs:91:10:91:11 | M8 | | Switch.cs:98:16:98:20 | false | Switch.cs:91:10:91:11 | M8 | -| Switch.cs:101:9:101:10 | enter M9 | Switch.cs:101:9:101:10 | M9 | -| Switch.cs:101:9:101:10 | exit M9 | Switch.cs:101:9:101:10 | M9 | -| Switch.cs:101:9:101:10 | exit M9 (normal) | Switch.cs:101:9:101:10 | M9 | +| Switch.cs:101:9:101:10 | Entry | Switch.cs:101:9:101:10 | M9 | +| Switch.cs:101:9:101:10 | Exit | Switch.cs:101:9:101:10 | M9 | +| Switch.cs:101:9:101:10 | Normal Exit | Switch.cs:101:9:101:10 | M9 | +| Switch.cs:101:19:101:19 | s | Switch.cs:101:9:101:10 | M9 | | Switch.cs:102:5:109:5 | {...} | Switch.cs:101:9:101:10 | M9 | +| Switch.cs:103:9:107:9 | After switch (...) {...} | Switch.cs:101:9:101:10 | M9 | | Switch.cs:103:9:107:9 | switch (...) {...} | Switch.cs:101:9:101:10 | M9 | +| Switch.cs:103:17:103:17 | After access to parameter s [non-null] | Switch.cs:101:9:101:10 | M9 | +| Switch.cs:103:17:103:17 | After access to parameter s [null] | Switch.cs:101:9:101:10 | M9 | | Switch.cs:103:17:103:17 | access to parameter s | Switch.cs:101:9:101:10 | M9 | +| Switch.cs:103:17:103:25 | After access to property Length | Switch.cs:101:9:101:10 | M9 | +| Switch.cs:103:17:103:25 | Before access to property Length | Switch.cs:101:9:101:10 | M9 | | Switch.cs:103:17:103:25 | access to property Length | Switch.cs:101:9:101:10 | M9 | +| Switch.cs:105:13:105:19 | After case ...: [match] | Switch.cs:101:9:101:10 | M9 | +| Switch.cs:105:13:105:19 | After case ...: [no-match] | Switch.cs:101:9:101:10 | M9 | | Switch.cs:105:13:105:19 | case ...: | Switch.cs:101:9:101:10 | M9 | | Switch.cs:105:18:105:18 | 0 | Switch.cs:101:9:101:10 | M9 | +| Switch.cs:105:18:105:18 | After 0 [match] | Switch.cs:101:9:101:10 | M9 | +| Switch.cs:105:18:105:18 | After 0 [no-match] | Switch.cs:101:9:101:10 | M9 | +| Switch.cs:105:21:105:29 | Before return ...; | Switch.cs:101:9:101:10 | M9 | | Switch.cs:105:21:105:29 | return ...; | Switch.cs:101:9:101:10 | M9 | | Switch.cs:105:28:105:28 | 0 | Switch.cs:101:9:101:10 | M9 | +| Switch.cs:106:13:106:19 | After case ...: [match] | Switch.cs:101:9:101:10 | M9 | +| Switch.cs:106:13:106:19 | After case ...: [no-match] | Switch.cs:101:9:101:10 | M9 | | Switch.cs:106:13:106:19 | case ...: | Switch.cs:101:9:101:10 | M9 | | Switch.cs:106:18:106:18 | 1 | Switch.cs:101:9:101:10 | M9 | +| Switch.cs:106:18:106:18 | After 1 [match] | Switch.cs:101:9:101:10 | M9 | +| Switch.cs:106:18:106:18 | After 1 [no-match] | Switch.cs:101:9:101:10 | M9 | +| Switch.cs:106:21:106:29 | Before return ...; | Switch.cs:101:9:101:10 | M9 | | Switch.cs:106:21:106:29 | return ...; | Switch.cs:101:9:101:10 | M9 | | Switch.cs:106:28:106:28 | 1 | Switch.cs:101:9:101:10 | M9 | +| Switch.cs:108:9:108:18 | Before return ...; | Switch.cs:101:9:101:10 | M9 | | Switch.cs:108:9:108:18 | return ...; | Switch.cs:101:9:101:10 | M9 | | Switch.cs:108:16:108:17 | -... | Switch.cs:101:9:101:10 | M9 | +| Switch.cs:108:16:108:17 | After -... | Switch.cs:101:9:101:10 | M9 | +| Switch.cs:108:16:108:17 | Before -... | Switch.cs:101:9:101:10 | M9 | | Switch.cs:108:17:108:17 | 1 | Switch.cs:101:9:101:10 | M9 | -| Switch.cs:111:17:111:21 | enter Throw | Switch.cs:111:17:111:21 | Throw | -| Switch.cs:111:17:111:21 | exit Throw | Switch.cs:111:17:111:21 | Throw | -| Switch.cs:111:17:111:21 | exit Throw (abnormal) | Switch.cs:111:17:111:21 | Throw | +| Switch.cs:111:17:111:21 | Entry | Switch.cs:111:17:111:21 | Throw | +| Switch.cs:111:17:111:21 | Exceptional Exit | Switch.cs:111:17:111:21 | Throw | +| Switch.cs:111:17:111:21 | Exit | Switch.cs:111:17:111:21 | Throw | +| Switch.cs:111:28:111:48 | Before throw ... | Switch.cs:111:17:111:21 | Throw | | Switch.cs:111:28:111:48 | throw ... | Switch.cs:111:17:111:21 | Throw | +| Switch.cs:111:34:111:48 | After object creation of type Exception | Switch.cs:111:17:111:21 | Throw | +| Switch.cs:111:34:111:48 | Before object creation of type Exception | Switch.cs:111:17:111:21 | Throw | | Switch.cs:111:34:111:48 | object creation of type Exception | Switch.cs:111:17:111:21 | Throw | -| Switch.cs:113:9:113:11 | enter M10 | Switch.cs:113:9:113:11 | M10 | -| Switch.cs:113:9:113:11 | exit M10 | Switch.cs:113:9:113:11 | M10 | -| Switch.cs:113:9:113:11 | exit M10 (normal) | Switch.cs:113:9:113:11 | M10 | +| Switch.cs:113:9:113:11 | Entry | Switch.cs:113:9:113:11 | M10 | +| Switch.cs:113:9:113:11 | Exit | Switch.cs:113:9:113:11 | M10 | +| Switch.cs:113:9:113:11 | Normal Exit | Switch.cs:113:9:113:11 | M10 | +| Switch.cs:113:20:113:20 | s | Switch.cs:113:9:113:11 | M10 | | Switch.cs:114:5:121:5 | {...} | Switch.cs:113:9:113:11 | M10 | +| Switch.cs:115:9:119:9 | After switch (...) {...} | Switch.cs:113:9:113:11 | M10 | | Switch.cs:115:9:119:9 | switch (...) {...} | Switch.cs:113:9:113:11 | M10 | | Switch.cs:115:17:115:17 | access to parameter s | Switch.cs:113:9:113:11 | M10 | +| Switch.cs:115:17:115:24 | After access to property Length | Switch.cs:113:9:113:11 | M10 | +| Switch.cs:115:17:115:24 | Before access to property Length | Switch.cs:113:9:113:11 | M10 | | Switch.cs:115:17:115:24 | access to property Length | Switch.cs:113:9:113:11 | M10 | +| Switch.cs:117:13:117:35 | After case ...: [match] | Switch.cs:113:9:113:11 | M10 | +| Switch.cs:117:13:117:35 | After case ...: [no-match] | Switch.cs:113:9:113:11 | M10 | | Switch.cs:117:13:117:35 | case ...: | Switch.cs:113:9:113:11 | M10 | | Switch.cs:117:18:117:18 | 3 | Switch.cs:113:9:113:11 | M10 | +| Switch.cs:117:18:117:18 | After 3 [match] | Switch.cs:113:9:113:11 | M10 | +| Switch.cs:117:18:117:18 | After 3 [no-match] | Switch.cs:113:9:113:11 | M10 | | Switch.cs:117:25:117:25 | access to parameter s | Switch.cs:113:9:113:11 | M10 | | Switch.cs:117:25:117:34 | ... == ... | Switch.cs:113:9:113:11 | M10 | +| Switch.cs:117:25:117:34 | After ... == ... [false] | Switch.cs:113:9:113:11 | M10 | +| Switch.cs:117:25:117:34 | After ... == ... [true] | Switch.cs:113:9:113:11 | M10 | +| Switch.cs:117:25:117:34 | Before ... == ... | Switch.cs:113:9:113:11 | M10 | | Switch.cs:117:30:117:34 | "foo" | Switch.cs:113:9:113:11 | M10 | +| Switch.cs:117:37:117:45 | Before return ...; | Switch.cs:113:9:113:11 | M10 | | Switch.cs:117:37:117:45 | return ...; | Switch.cs:113:9:113:11 | M10 | | Switch.cs:117:44:117:44 | 1 | Switch.cs:113:9:113:11 | M10 | +| Switch.cs:118:13:118:34 | After case ...: [match] | Switch.cs:113:9:113:11 | M10 | +| Switch.cs:118:13:118:34 | After case ...: [no-match] | Switch.cs:113:9:113:11 | M10 | | Switch.cs:118:13:118:34 | case ...: | Switch.cs:113:9:113:11 | M10 | | Switch.cs:118:18:118:18 | 2 | Switch.cs:113:9:113:11 | M10 | +| Switch.cs:118:18:118:18 | After 2 [match] | Switch.cs:113:9:113:11 | M10 | +| Switch.cs:118:18:118:18 | After 2 [no-match] | Switch.cs:113:9:113:11 | M10 | | Switch.cs:118:25:118:25 | access to parameter s | Switch.cs:113:9:113:11 | M10 | | Switch.cs:118:25:118:33 | ... == ... | Switch.cs:113:9:113:11 | M10 | +| Switch.cs:118:25:118:33 | After ... == ... [false] | Switch.cs:113:9:113:11 | M10 | +| Switch.cs:118:25:118:33 | After ... == ... [true] | Switch.cs:113:9:113:11 | M10 | +| Switch.cs:118:25:118:33 | Before ... == ... | Switch.cs:113:9:113:11 | M10 | | Switch.cs:118:30:118:33 | "fu" | Switch.cs:113:9:113:11 | M10 | +| Switch.cs:118:36:118:44 | Before return ...; | Switch.cs:113:9:113:11 | M10 | | Switch.cs:118:36:118:44 | return ...; | Switch.cs:113:9:113:11 | M10 | | Switch.cs:118:43:118:43 | 2 | Switch.cs:113:9:113:11 | M10 | +| Switch.cs:120:9:120:18 | Before return ...; | Switch.cs:113:9:113:11 | M10 | | Switch.cs:120:9:120:18 | return ...; | Switch.cs:113:9:113:11 | M10 | | Switch.cs:120:16:120:17 | -... | Switch.cs:113:9:113:11 | M10 | +| Switch.cs:120:16:120:17 | After -... | Switch.cs:113:9:113:11 | M10 | +| Switch.cs:120:16:120:17 | Before -... | Switch.cs:113:9:113:11 | M10 | | Switch.cs:120:17:120:17 | 1 | Switch.cs:113:9:113:11 | M10 | -| Switch.cs:123:10:123:12 | enter M11 | Switch.cs:123:10:123:12 | M11 | -| Switch.cs:123:10:123:12 | exit M11 | Switch.cs:123:10:123:12 | M11 | -| Switch.cs:123:10:123:12 | exit M11 (normal) | Switch.cs:123:10:123:12 | M11 | +| Switch.cs:123:10:123:12 | Entry | Switch.cs:123:10:123:12 | M11 | +| Switch.cs:123:10:123:12 | Exit | Switch.cs:123:10:123:12 | M11 | +| Switch.cs:123:10:123:12 | Normal Exit | Switch.cs:123:10:123:12 | M11 | +| Switch.cs:123:21:123:21 | o | Switch.cs:123:10:123:12 | M11 | +| Switch.cs:124:5:127:5 | After {...} | Switch.cs:123:10:123:12 | M11 | | Switch.cs:124:5:127:5 | {...} | Switch.cs:123:10:123:12 | M11 | +| Switch.cs:125:9:126:19 | After if (...) ... | Switch.cs:123:10:123:12 | M11 | | Switch.cs:125:9:126:19 | if (...) ... | Switch.cs:123:10:123:12 | M11 | | Switch.cs:125:13:125:13 | access to parameter o | Switch.cs:123:10:123:12 | M11 | -| Switch.cs:125:13:125:48 | [false] ... switch { ... } | Switch.cs:123:10:123:12 | M11 | -| Switch.cs:125:13:125:48 | [true] ... switch { ... } | Switch.cs:123:10:123:12 | M11 | +| Switch.cs:125:13:125:48 | ... switch { ... } | Switch.cs:123:10:123:12 | M11 | +| Switch.cs:125:13:125:48 | After ... switch { ... } [false] | Switch.cs:123:10:123:12 | M11 | +| Switch.cs:125:13:125:48 | After ... switch { ... } [true] | Switch.cs:123:10:123:12 | M11 | +| Switch.cs:125:24:125:29 | After Boolean b [match] | Switch.cs:123:10:123:12 | M11 | +| Switch.cs:125:24:125:29 | After Boolean b [no-match] | Switch.cs:123:10:123:12 | M11 | | Switch.cs:125:24:125:29 | Boolean b | Switch.cs:123:10:123:12 | M11 | -| Switch.cs:125:24:125:34 | [false] ... => ... | Switch.cs:123:10:123:12 | M11 | -| Switch.cs:125:24:125:34 | [true] ... => ... | Switch.cs:123:10:123:12 | M11 | +| Switch.cs:125:24:125:34 | ... => ... | Switch.cs:123:10:123:12 | M11 | +| Switch.cs:125:24:125:34 | After ... => ... [match] | Switch.cs:123:10:123:12 | M11 | +| Switch.cs:125:24:125:34 | After ... => ... [no-match] | Switch.cs:123:10:123:12 | M11 | | Switch.cs:125:34:125:34 | access to local variable b | Switch.cs:123:10:123:12 | M11 | +| Switch.cs:125:37:125:37 | After _ [match] | Switch.cs:123:10:123:12 | M11 | | Switch.cs:125:37:125:37 | _ | Switch.cs:123:10:123:12 | M11 | -| Switch.cs:125:37:125:46 | [false] ... => ... | Switch.cs:123:10:123:12 | M11 | +| Switch.cs:125:37:125:46 | ... => ... | Switch.cs:123:10:123:12 | M11 | +| Switch.cs:125:37:125:46 | After ... => ... [match] | Switch.cs:123:10:123:12 | M11 | | Switch.cs:125:42:125:46 | false | Switch.cs:123:10:123:12 | M11 | +| Switch.cs:126:13:126:19 | Before return ...; | Switch.cs:123:10:123:12 | M11 | | Switch.cs:126:13:126:19 | return ...; | Switch.cs:123:10:123:12 | M11 | -| Switch.cs:129:12:129:14 | enter M12 | Switch.cs:129:12:129:14 | M12 | -| Switch.cs:129:12:129:14 | exit M12 | Switch.cs:129:12:129:14 | M12 | -| Switch.cs:129:12:129:14 | exit M12 (normal) | Switch.cs:129:12:129:14 | M12 | +| Switch.cs:129:12:129:14 | Entry | Switch.cs:129:12:129:14 | M12 | +| Switch.cs:129:12:129:14 | Exit | Switch.cs:129:12:129:14 | M12 | +| Switch.cs:129:12:129:14 | Normal Exit | Switch.cs:129:12:129:14 | M12 | +| Switch.cs:129:23:129:23 | o | Switch.cs:129:12:129:14 | M12 | | Switch.cs:130:5:132:5 | {...} | Switch.cs:129:12:129:14 | M12 | +| Switch.cs:131:9:131:67 | Before return ...; | Switch.cs:129:12:129:14 | M12 | | Switch.cs:131:9:131:67 | return ...; | Switch.cs:129:12:129:14 | M12 | +| Switch.cs:131:16:131:66 | After call to method ToString | Switch.cs:129:12:129:14 | M12 | +| Switch.cs:131:16:131:66 | Before call to method ToString | Switch.cs:129:12:129:14 | M12 | | Switch.cs:131:16:131:66 | call to method ToString | Switch.cs:129:12:129:14 | M12 | | Switch.cs:131:17:131:17 | access to parameter o | Switch.cs:129:12:129:14 | M12 | -| Switch.cs:131:17:131:53 | [non-null] ... switch { ... } | Switch.cs:129:12:129:14 | M12 | -| Switch.cs:131:17:131:53 | [null] ... switch { ... } | Switch.cs:129:12:129:14 | M12 | +| Switch.cs:131:17:131:53 | ... switch { ... } | Switch.cs:129:12:129:14 | M12 | +| Switch.cs:131:17:131:53 | After ... switch { ... } [non-null] | Switch.cs:129:12:129:14 | M12 | +| Switch.cs:131:17:131:53 | After ... switch { ... } [null] | Switch.cs:129:12:129:14 | M12 | +| Switch.cs:131:28:131:35 | After String s [match] | Switch.cs:129:12:129:14 | M12 | +| Switch.cs:131:28:131:35 | After String s [no-match] | Switch.cs:129:12:129:14 | M12 | | Switch.cs:131:28:131:35 | String s | Switch.cs:129:12:129:14 | M12 | -| Switch.cs:131:28:131:40 | [non-null] ... => ... | Switch.cs:129:12:129:14 | M12 | -| Switch.cs:131:28:131:40 | [null] ... => ... | Switch.cs:129:12:129:14 | M12 | +| Switch.cs:131:28:131:40 | ... => ... | Switch.cs:129:12:129:14 | M12 | +| Switch.cs:131:28:131:40 | After ... => ... [match] | Switch.cs:129:12:129:14 | M12 | +| Switch.cs:131:28:131:40 | After ... => ... [no-match] | Switch.cs:129:12:129:14 | M12 | | Switch.cs:131:40:131:40 | access to local variable s | Switch.cs:129:12:129:14 | M12 | +| Switch.cs:131:43:131:43 | After _ [match] | Switch.cs:129:12:129:14 | M12 | | Switch.cs:131:43:131:43 | _ | Switch.cs:129:12:129:14 | M12 | -| Switch.cs:131:43:131:51 | [null] ... => ... | Switch.cs:129:12:129:14 | M12 | +| Switch.cs:131:43:131:51 | ... => ... | Switch.cs:129:12:129:14 | M12 | +| Switch.cs:131:43:131:51 | After ... => ... [match] | Switch.cs:129:12:129:14 | M12 | | Switch.cs:131:48:131:51 | null | Switch.cs:129:12:129:14 | M12 | -| Switch.cs:134:9:134:11 | enter M13 | Switch.cs:134:9:134:11 | M13 | -| Switch.cs:134:9:134:11 | exit M13 | Switch.cs:134:9:134:11 | M13 | -| Switch.cs:134:9:134:11 | exit M13 (normal) | Switch.cs:134:9:134:11 | M13 | +| Switch.cs:134:9:134:11 | Entry | Switch.cs:134:9:134:11 | M13 | +| Switch.cs:134:9:134:11 | Exit | Switch.cs:134:9:134:11 | M13 | +| Switch.cs:134:9:134:11 | Normal Exit | Switch.cs:134:9:134:11 | M13 | +| Switch.cs:134:17:134:17 | i | Switch.cs:134:9:134:11 | M13 | | Switch.cs:135:5:142:5 | {...} | Switch.cs:134:9:134:11 | M13 | | Switch.cs:136:9:141:9 | switch (...) {...} | Switch.cs:134:9:134:11 | M13 | | Switch.cs:136:17:136:17 | access to parameter i | Switch.cs:134:9:134:11 | M13 | +| Switch.cs:138:13:138:20 | After default: [match] | Switch.cs:134:9:134:11 | M13 | | Switch.cs:138:13:138:20 | default: | Switch.cs:134:9:134:11 | M13 | +| Switch.cs:138:22:138:31 | Before return ...; | Switch.cs:134:9:134:11 | M13 | | Switch.cs:138:22:138:31 | return ...; | Switch.cs:134:9:134:11 | M13 | | Switch.cs:138:29:138:30 | -... | Switch.cs:134:9:134:11 | M13 | +| Switch.cs:138:29:138:30 | After -... | Switch.cs:134:9:134:11 | M13 | +| Switch.cs:138:29:138:30 | Before -... | Switch.cs:134:9:134:11 | M13 | | Switch.cs:138:30:138:30 | 1 | Switch.cs:134:9:134:11 | M13 | +| Switch.cs:139:13:139:19 | After case ...: [match] | Switch.cs:134:9:134:11 | M13 | +| Switch.cs:139:13:139:19 | After case ...: [no-match] | Switch.cs:134:9:134:11 | M13 | | Switch.cs:139:13:139:19 | case ...: | Switch.cs:134:9:134:11 | M13 | | Switch.cs:139:18:139:18 | 1 | Switch.cs:134:9:134:11 | M13 | +| Switch.cs:139:18:139:18 | After 1 [match] | Switch.cs:134:9:134:11 | M13 | +| Switch.cs:139:18:139:18 | After 1 [no-match] | Switch.cs:134:9:134:11 | M13 | +| Switch.cs:139:21:139:29 | Before return ...; | Switch.cs:134:9:134:11 | M13 | | Switch.cs:139:21:139:29 | return ...; | Switch.cs:134:9:134:11 | M13 | | Switch.cs:139:28:139:28 | 1 | Switch.cs:134:9:134:11 | M13 | +| Switch.cs:140:13:140:19 | After case ...: [match] | Switch.cs:134:9:134:11 | M13 | +| Switch.cs:140:13:140:19 | After case ...: [no-match] | Switch.cs:134:9:134:11 | M13 | | Switch.cs:140:13:140:19 | case ...: | Switch.cs:134:9:134:11 | M13 | | Switch.cs:140:18:140:18 | 2 | Switch.cs:134:9:134:11 | M13 | +| Switch.cs:140:18:140:18 | After 2 [match] | Switch.cs:134:9:134:11 | M13 | +| Switch.cs:140:18:140:18 | After 2 [no-match] | Switch.cs:134:9:134:11 | M13 | +| Switch.cs:140:21:140:29 | Before return ...; | Switch.cs:134:9:134:11 | M13 | | Switch.cs:140:21:140:29 | return ...; | Switch.cs:134:9:134:11 | M13 | | Switch.cs:140:28:140:28 | 2 | Switch.cs:134:9:134:11 | M13 | -| Switch.cs:144:9:144:11 | enter M14 | Switch.cs:144:9:144:11 | M14 | -| Switch.cs:144:9:144:11 | exit M14 | Switch.cs:144:9:144:11 | M14 | -| Switch.cs:144:9:144:11 | exit M14 (normal) | Switch.cs:144:9:144:11 | M14 | +| Switch.cs:144:9:144:11 | Entry | Switch.cs:144:9:144:11 | M14 | +| Switch.cs:144:9:144:11 | Exit | Switch.cs:144:9:144:11 | M14 | +| Switch.cs:144:9:144:11 | Normal Exit | Switch.cs:144:9:144:11 | M14 | +| Switch.cs:144:17:144:17 | i | Switch.cs:144:9:144:11 | M14 | | Switch.cs:145:5:152:5 | {...} | Switch.cs:144:9:144:11 | M14 | | Switch.cs:146:9:151:9 | switch (...) {...} | Switch.cs:144:9:144:11 | M14 | | Switch.cs:146:17:146:17 | access to parameter i | Switch.cs:144:9:144:11 | M14 | +| Switch.cs:148:13:148:19 | After case ...: [match] | Switch.cs:144:9:144:11 | M14 | +| Switch.cs:148:13:148:19 | After case ...: [no-match] | Switch.cs:144:9:144:11 | M14 | | Switch.cs:148:13:148:19 | case ...: | Switch.cs:144:9:144:11 | M14 | | Switch.cs:148:18:148:18 | 1 | Switch.cs:144:9:144:11 | M14 | +| Switch.cs:148:18:148:18 | After 1 [match] | Switch.cs:144:9:144:11 | M14 | +| Switch.cs:148:18:148:18 | After 1 [no-match] | Switch.cs:144:9:144:11 | M14 | +| Switch.cs:148:21:148:29 | Before return ...; | Switch.cs:144:9:144:11 | M14 | | Switch.cs:148:21:148:29 | return ...; | Switch.cs:144:9:144:11 | M14 | | Switch.cs:148:28:148:28 | 1 | Switch.cs:144:9:144:11 | M14 | +| Switch.cs:149:13:149:20 | After default: [match] | Switch.cs:144:9:144:11 | M14 | | Switch.cs:149:13:149:20 | default: | Switch.cs:144:9:144:11 | M14 | +| Switch.cs:149:22:149:31 | Before return ...; | Switch.cs:144:9:144:11 | M14 | | Switch.cs:149:22:149:31 | return ...; | Switch.cs:144:9:144:11 | M14 | | Switch.cs:149:29:149:30 | -... | Switch.cs:144:9:144:11 | M14 | +| Switch.cs:149:29:149:30 | After -... | Switch.cs:144:9:144:11 | M14 | +| Switch.cs:149:29:149:30 | Before -... | Switch.cs:144:9:144:11 | M14 | | Switch.cs:149:30:149:30 | 1 | Switch.cs:144:9:144:11 | M14 | +| Switch.cs:150:13:150:19 | After case ...: [match] | Switch.cs:144:9:144:11 | M14 | +| Switch.cs:150:13:150:19 | After case ...: [no-match] | Switch.cs:144:9:144:11 | M14 | | Switch.cs:150:13:150:19 | case ...: | Switch.cs:144:9:144:11 | M14 | | Switch.cs:150:18:150:18 | 2 | Switch.cs:144:9:144:11 | M14 | +| Switch.cs:150:18:150:18 | After 2 [match] | Switch.cs:144:9:144:11 | M14 | +| Switch.cs:150:18:150:18 | After 2 [no-match] | Switch.cs:144:9:144:11 | M14 | +| Switch.cs:150:21:150:29 | Before return ...; | Switch.cs:144:9:144:11 | M14 | | Switch.cs:150:21:150:29 | return ...; | Switch.cs:144:9:144:11 | M14 | | Switch.cs:150:28:150:28 | 2 | Switch.cs:144:9:144:11 | M14 | -| Switch.cs:154:10:154:12 | enter M15 | Switch.cs:154:10:154:12 | M15 | -| Switch.cs:154:10:154:12 | exit M15 | Switch.cs:154:10:154:12 | M15 | -| Switch.cs:154:10:154:12 | exit M15 (abnormal) | Switch.cs:154:10:154:12 | M15 | -| Switch.cs:154:10:154:12 | exit M15 (normal) | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:154:10:154:12 | Entry | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:154:10:154:12 | Exit | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:154:10:154:12 | Normal Exit | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:154:19:154:19 | b | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:155:5:161:5 | After {...} | Switch.cs:154:10:154:12 | M15 | | Switch.cs:155:5:161:5 | {...} | Switch.cs:154:10:154:12 | M15 | | Switch.cs:156:9:156:55 | ... ...; | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:156:9:156:55 | After ... ...; | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:156:13:156:13 | access to local variable s | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:156:13:156:54 | After String s = ... | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:156:13:156:54 | Before String s = ... | Switch.cs:154:10:154:12 | M15 | | Switch.cs:156:13:156:54 | String s = ... | Switch.cs:154:10:154:12 | M15 | | Switch.cs:156:17:156:17 | access to parameter b | Switch.cs:154:10:154:12 | M15 | | Switch.cs:156:17:156:54 | ... switch { ... } | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:156:17:156:54 | After ... switch { ... } | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:156:28:156:31 | After true [match] | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:156:28:156:31 | After true [no-match] | Switch.cs:154:10:154:12 | M15 | | Switch.cs:156:28:156:31 | true | Switch.cs:154:10:154:12 | M15 | | Switch.cs:156:28:156:38 | ... => ... | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:156:28:156:38 | After ... => ... [match] | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:156:28:156:38 | After ... => ... [no-match] | Switch.cs:154:10:154:12 | M15 | | Switch.cs:156:36:156:38 | "a" | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:156:41:156:45 | After false [match] | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:156:41:156:45 | After false [no-match] | Switch.cs:154:10:154:12 | M15 | | Switch.cs:156:41:156:45 | false | Switch.cs:154:10:154:12 | M15 | | Switch.cs:156:41:156:52 | ... => ... | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:156:41:156:52 | After ... => ... [match] | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:156:41:156:52 | After ... => ... [no-match] | Switch.cs:154:10:154:12 | M15 | | Switch.cs:156:50:156:52 | "b" | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:157:9:160:49 | After if (...) ... | Switch.cs:154:10:154:12 | M15 | | Switch.cs:157:9:160:49 | if (...) ... | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:157:13:157:13 | After access to parameter b [false] | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:157:13:157:13 | After access to parameter b [true] | Switch.cs:154:10:154:12 | M15 | | Switch.cs:157:13:157:13 | access to parameter b | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:158:13:158:48 | After call to method WriteLine | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:158:13:158:48 | Before call to method WriteLine | Switch.cs:154:10:154:12 | M15 | | Switch.cs:158:13:158:48 | call to method WriteLine | Switch.cs:154:10:154:12 | M15 | | Switch.cs:158:13:158:49 | ...; | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:158:13:158:49 | After ...; | Switch.cs:154:10:154:12 | M15 | | Switch.cs:158:38:158:47 | $"..." | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:158:38:158:47 | After $"..." | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:158:38:158:47 | Before $"..." | Switch.cs:154:10:154:12 | M15 | | Switch.cs:158:40:158:43 | "a = " | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:158:44:158:46 | After {...} | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:158:44:158:46 | Before {...} | Switch.cs:154:10:154:12 | M15 | | Switch.cs:158:44:158:46 | {...} | Switch.cs:154:10:154:12 | M15 | | Switch.cs:158:45:158:45 | access to local variable s | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:160:13:160:48 | After call to method WriteLine | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:160:13:160:48 | Before call to method WriteLine | Switch.cs:154:10:154:12 | M15 | | Switch.cs:160:13:160:48 | call to method WriteLine | Switch.cs:154:10:154:12 | M15 | | Switch.cs:160:13:160:49 | ...; | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:160:13:160:49 | After ...; | Switch.cs:154:10:154:12 | M15 | | Switch.cs:160:38:160:47 | $"..." | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:160:38:160:47 | After $"..." | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:160:38:160:47 | Before $"..." | Switch.cs:154:10:154:12 | M15 | | Switch.cs:160:40:160:43 | "b = " | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:160:44:160:46 | After {...} | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:160:44:160:46 | Before {...} | Switch.cs:154:10:154:12 | M15 | | Switch.cs:160:44:160:46 | {...} | Switch.cs:154:10:154:12 | M15 | | Switch.cs:160:45:160:45 | access to local variable s | Switch.cs:154:10:154:12 | M15 | -| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:163:10:163:12 | M16 | -| Switch.cs:163:10:163:12 | exit M16 | Switch.cs:163:10:163:12 | M16 | -| Switch.cs:163:10:163:12 | exit M16 (normal) | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:163:10:163:12 | Entry | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:163:10:163:12 | Exit | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:163:10:163:12 | Normal Exit | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:163:18:163:18 | i | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:164:5:178:5 | After {...} | Switch.cs:163:10:163:12 | M16 | | Switch.cs:164:5:178:5 | {...} | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:165:9:177:9 | After switch (...) {...} | Switch.cs:163:10:163:12 | M16 | | Switch.cs:165:9:177:9 | switch (...) {...} | Switch.cs:163:10:163:12 | M16 | | Switch.cs:165:17:165:17 | access to parameter i | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:167:13:167:19 | After case ...: [match] | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:167:13:167:19 | After case ...: [no-match] | Switch.cs:163:10:163:12 | M16 | | Switch.cs:167:13:167:19 | case ...: | Switch.cs:163:10:163:12 | M16 | | Switch.cs:167:18:167:18 | 1 | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:167:18:167:18 | After 1 [match] | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:167:18:167:18 | After 1 [no-match] | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:168:13:168:19 | After case ...: [match] | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:168:13:168:19 | After case ...: [no-match] | Switch.cs:163:10:163:12 | M16 | | Switch.cs:168:13:168:19 | case ...: | Switch.cs:163:10:163:12 | M16 | | Switch.cs:168:18:168:18 | 2 | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:168:18:168:18 | After 2 [match] | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:168:18:168:18 | After 2 [no-match] | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:169:17:169:50 | After call to method WriteLine | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:169:17:169:50 | Before call to method WriteLine | Switch.cs:163:10:163:12 | M16 | | Switch.cs:169:17:169:50 | call to method WriteLine | Switch.cs:163:10:163:12 | M16 | | Switch.cs:169:17:169:51 | ...; | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:169:17:169:51 | After ...; | Switch.cs:163:10:163:12 | M16 | | Switch.cs:169:42:169:49 | "1 or 2" | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:170:17:170:22 | Before break; | Switch.cs:163:10:163:12 | M16 | | Switch.cs:170:17:170:22 | break; | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:171:13:171:19 | After case ...: [match] | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:171:13:171:19 | After case ...: [no-match] | Switch.cs:163:10:163:12 | M16 | | Switch.cs:171:13:171:19 | case ...: | Switch.cs:163:10:163:12 | M16 | | Switch.cs:171:18:171:18 | 3 | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:171:18:171:18 | After 3 [match] | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:171:18:171:18 | After 3 [no-match] | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:172:17:172:45 | After call to method WriteLine | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:172:17:172:45 | Before call to method WriteLine | Switch.cs:163:10:163:12 | M16 | | Switch.cs:172:17:172:45 | call to method WriteLine | Switch.cs:163:10:163:12 | M16 | | Switch.cs:172:17:172:46 | ...; | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:172:17:172:46 | After ...; | Switch.cs:163:10:163:12 | M16 | | Switch.cs:172:42:172:44 | "3" | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:173:17:173:22 | Before break; | Switch.cs:163:10:163:12 | M16 | | Switch.cs:173:17:173:22 | break; | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:174:13:174:20 | After default: [match] | Switch.cs:163:10:163:12 | M16 | | Switch.cs:174:13:174:20 | default: | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:175:17:175:47 | After call to method WriteLine | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:175:17:175:47 | Before call to method WriteLine | Switch.cs:163:10:163:12 | M16 | | Switch.cs:175:17:175:47 | call to method WriteLine | Switch.cs:163:10:163:12 | M16 | | Switch.cs:175:17:175:48 | ...; | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:175:17:175:48 | After ...; | Switch.cs:163:10:163:12 | M16 | | Switch.cs:175:42:175:46 | "def" | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:176:17:176:22 | Before break; | Switch.cs:163:10:163:12 | M16 | | Switch.cs:176:17:176:22 | break; | Switch.cs:163:10:163:12 | M16 | +| TypeAccesses.cs:1:7:1:18 | After call to constructor Object | TypeAccesses.cs:1:7:1:18 | TypeAccesses | +| TypeAccesses.cs:1:7:1:18 | After call to method | TypeAccesses.cs:1:7:1:18 | TypeAccesses | +| TypeAccesses.cs:1:7:1:18 | Before call to constructor Object | TypeAccesses.cs:1:7:1:18 | TypeAccesses | +| TypeAccesses.cs:1:7:1:18 | Before call to method | TypeAccesses.cs:1:7:1:18 | TypeAccesses | +| TypeAccesses.cs:1:7:1:18 | Entry | TypeAccesses.cs:1:7:1:18 | TypeAccesses | +| TypeAccesses.cs:1:7:1:18 | Exit | TypeAccesses.cs:1:7:1:18 | TypeAccesses | +| TypeAccesses.cs:1:7:1:18 | Normal Exit | TypeAccesses.cs:1:7:1:18 | TypeAccesses | | TypeAccesses.cs:1:7:1:18 | call to constructor Object | TypeAccesses.cs:1:7:1:18 | TypeAccesses | | TypeAccesses.cs:1:7:1:18 | call to method | TypeAccesses.cs:1:7:1:18 | TypeAccesses | -| TypeAccesses.cs:1:7:1:18 | enter TypeAccesses | TypeAccesses.cs:1:7:1:18 | TypeAccesses | -| TypeAccesses.cs:1:7:1:18 | exit TypeAccesses | TypeAccesses.cs:1:7:1:18 | TypeAccesses | -| TypeAccesses.cs:1:7:1:18 | exit TypeAccesses (normal) | TypeAccesses.cs:1:7:1:18 | TypeAccesses | | TypeAccesses.cs:1:7:1:18 | this access | TypeAccesses.cs:1:7:1:18 | TypeAccesses | | TypeAccesses.cs:1:7:1:18 | {...} | TypeAccesses.cs:1:7:1:18 | TypeAccesses | -| TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:3:10:3:10 | M | -| TypeAccesses.cs:3:10:3:10 | exit M | TypeAccesses.cs:3:10:3:10 | M | -| TypeAccesses.cs:3:10:3:10 | exit M (normal) | TypeAccesses.cs:3:10:3:10 | M | +| TypeAccesses.cs:3:10:3:10 | Entry | TypeAccesses.cs:3:10:3:10 | M | +| TypeAccesses.cs:3:10:3:10 | Exit | TypeAccesses.cs:3:10:3:10 | M | +| TypeAccesses.cs:3:10:3:10 | Normal Exit | TypeAccesses.cs:3:10:3:10 | M | +| TypeAccesses.cs:3:19:3:19 | o | TypeAccesses.cs:3:10:3:10 | M | +| TypeAccesses.cs:4:5:9:5 | After {...} | TypeAccesses.cs:3:10:3:10 | M | | TypeAccesses.cs:4:5:9:5 | {...} | TypeAccesses.cs:3:10:3:10 | M | | TypeAccesses.cs:5:9:5:26 | ... ...; | TypeAccesses.cs:3:10:3:10 | M | +| TypeAccesses.cs:5:9:5:26 | After ... ...; | TypeAccesses.cs:3:10:3:10 | M | +| TypeAccesses.cs:5:13:5:13 | access to local variable s | TypeAccesses.cs:3:10:3:10 | M | +| TypeAccesses.cs:5:13:5:25 | After String s = ... | TypeAccesses.cs:3:10:3:10 | M | +| TypeAccesses.cs:5:13:5:25 | Before String s = ... | TypeAccesses.cs:3:10:3:10 | M | | TypeAccesses.cs:5:13:5:25 | String s = ... | TypeAccesses.cs:3:10:3:10 | M | | TypeAccesses.cs:5:17:5:25 | (...) ... | TypeAccesses.cs:3:10:3:10 | M | +| TypeAccesses.cs:5:17:5:25 | After (...) ... | TypeAccesses.cs:3:10:3:10 | M | +| TypeAccesses.cs:5:17:5:25 | Before (...) ... | TypeAccesses.cs:3:10:3:10 | M | | TypeAccesses.cs:5:25:5:25 | access to parameter o | TypeAccesses.cs:3:10:3:10 | M | +| TypeAccesses.cs:6:9:6:9 | access to local variable s | TypeAccesses.cs:3:10:3:10 | M | | TypeAccesses.cs:6:9:6:23 | ... = ... | TypeAccesses.cs:3:10:3:10 | M | +| TypeAccesses.cs:6:9:6:23 | After ... = ... | TypeAccesses.cs:3:10:3:10 | M | +| TypeAccesses.cs:6:9:6:23 | Before ... = ... | TypeAccesses.cs:3:10:3:10 | M | | TypeAccesses.cs:6:9:6:24 | ...; | TypeAccesses.cs:3:10:3:10 | M | +| TypeAccesses.cs:6:9:6:24 | After ...; | TypeAccesses.cs:3:10:3:10 | M | | TypeAccesses.cs:6:13:6:13 | access to parameter o | TypeAccesses.cs:3:10:3:10 | M | | TypeAccesses.cs:6:13:6:23 | ... as ... | TypeAccesses.cs:3:10:3:10 | M | +| TypeAccesses.cs:6:13:6:23 | After ... as ... | TypeAccesses.cs:3:10:3:10 | M | +| TypeAccesses.cs:6:13:6:23 | Before ... as ... | TypeAccesses.cs:3:10:3:10 | M | +| TypeAccesses.cs:7:9:7:25 | After if (...) ... | TypeAccesses.cs:3:10:3:10 | M | | TypeAccesses.cs:7:9:7:25 | if (...) ... | TypeAccesses.cs:3:10:3:10 | M | | TypeAccesses.cs:7:13:7:13 | access to parameter o | TypeAccesses.cs:3:10:3:10 | M | -| TypeAccesses.cs:7:13:7:22 | [false] ... is ... | TypeAccesses.cs:3:10:3:10 | M | -| TypeAccesses.cs:7:13:7:22 | [true] ... is ... | TypeAccesses.cs:3:10:3:10 | M | +| TypeAccesses.cs:7:13:7:22 | ... is ... | TypeAccesses.cs:3:10:3:10 | M | +| TypeAccesses.cs:7:13:7:22 | After ... is ... [false] | TypeAccesses.cs:3:10:3:10 | M | +| TypeAccesses.cs:7:13:7:22 | After ... is ... [true] | TypeAccesses.cs:3:10:3:10 | M | +| TypeAccesses.cs:7:13:7:22 | Before ... is ... | TypeAccesses.cs:3:10:3:10 | M | +| TypeAccesses.cs:7:13:7:22 | [MatchTrue] ... is ... | TypeAccesses.cs:3:10:3:10 | M | | TypeAccesses.cs:7:18:7:22 | Int32 j | TypeAccesses.cs:3:10:3:10 | M | | TypeAccesses.cs:7:25:7:25 | ; | TypeAccesses.cs:3:10:3:10 | M | | TypeAccesses.cs:8:9:8:28 | ... ...; | TypeAccesses.cs:3:10:3:10 | M | +| TypeAccesses.cs:8:9:8:28 | After ... ...; | TypeAccesses.cs:3:10:3:10 | M | +| TypeAccesses.cs:8:13:8:13 | access to local variable t | TypeAccesses.cs:3:10:3:10 | M | +| TypeAccesses.cs:8:13:8:27 | After Type t = ... | TypeAccesses.cs:3:10:3:10 | M | +| TypeAccesses.cs:8:13:8:27 | Before Type t = ... | TypeAccesses.cs:3:10:3:10 | M | | TypeAccesses.cs:8:13:8:27 | Type t = ... | TypeAccesses.cs:3:10:3:10 | M | | TypeAccesses.cs:8:17:8:27 | typeof(...) | TypeAccesses.cs:3:10:3:10 | M | +| VarDecls.cs:3:7:3:14 | After call to constructor Object | VarDecls.cs:3:7:3:14 | VarDecls | +| VarDecls.cs:3:7:3:14 | After call to method | VarDecls.cs:3:7:3:14 | VarDecls | +| VarDecls.cs:3:7:3:14 | Before call to constructor Object | VarDecls.cs:3:7:3:14 | VarDecls | +| VarDecls.cs:3:7:3:14 | Before call to method | VarDecls.cs:3:7:3:14 | VarDecls | +| VarDecls.cs:3:7:3:14 | Entry | VarDecls.cs:3:7:3:14 | VarDecls | +| VarDecls.cs:3:7:3:14 | Exit | VarDecls.cs:3:7:3:14 | VarDecls | +| VarDecls.cs:3:7:3:14 | Normal Exit | VarDecls.cs:3:7:3:14 | VarDecls | | VarDecls.cs:3:7:3:14 | call to constructor Object | VarDecls.cs:3:7:3:14 | VarDecls | | VarDecls.cs:3:7:3:14 | call to method | VarDecls.cs:3:7:3:14 | VarDecls | -| VarDecls.cs:3:7:3:14 | enter VarDecls | VarDecls.cs:3:7:3:14 | VarDecls | -| VarDecls.cs:3:7:3:14 | exit VarDecls | VarDecls.cs:3:7:3:14 | VarDecls | -| VarDecls.cs:3:7:3:14 | exit VarDecls (normal) | VarDecls.cs:3:7:3:14 | VarDecls | | VarDecls.cs:3:7:3:14 | this access | VarDecls.cs:3:7:3:14 | VarDecls | | VarDecls.cs:3:7:3:14 | {...} | VarDecls.cs:3:7:3:14 | VarDecls | -| VarDecls.cs:5:18:5:19 | enter M1 | VarDecls.cs:5:18:5:19 | M1 | -| VarDecls.cs:5:18:5:19 | exit M1 | VarDecls.cs:5:18:5:19 | M1 | -| VarDecls.cs:5:18:5:19 | exit M1 (normal) | VarDecls.cs:5:18:5:19 | M1 | +| VarDecls.cs:5:18:5:19 | Entry | VarDecls.cs:5:18:5:19 | M1 | +| VarDecls.cs:5:18:5:19 | Exit | VarDecls.cs:5:18:5:19 | M1 | +| VarDecls.cs:5:18:5:19 | Normal Exit | VarDecls.cs:5:18:5:19 | M1 | +| VarDecls.cs:5:30:5:36 | strings | VarDecls.cs:5:18:5:19 | M1 | | VarDecls.cs:6:5:11:5 | {...} | VarDecls.cs:5:18:5:19 | M1 | | VarDecls.cs:7:9:10:9 | fixed(...) { ... } | VarDecls.cs:5:18:5:19 | M1 | +| VarDecls.cs:7:22:7:23 | access to local variable c1 | VarDecls.cs:5:18:5:19 | M1 | +| VarDecls.cs:7:22:7:36 | After Char* c1 = ... | VarDecls.cs:5:18:5:19 | M1 | +| VarDecls.cs:7:22:7:36 | Before Char* c1 = ... | VarDecls.cs:5:18:5:19 | M1 | | VarDecls.cs:7:22:7:36 | Char* c1 = ... | VarDecls.cs:5:18:5:19 | M1 | | VarDecls.cs:7:27:7:33 | access to parameter strings | VarDecls.cs:5:18:5:19 | M1 | | VarDecls.cs:7:27:7:36 | (...) ... | VarDecls.cs:5:18:5:19 | M1 | +| VarDecls.cs:7:27:7:36 | After (...) ... | VarDecls.cs:5:18:5:19 | M1 | +| VarDecls.cs:7:27:7:36 | After access to array element | VarDecls.cs:5:18:5:19 | M1 | +| VarDecls.cs:7:27:7:36 | Before (...) ... | VarDecls.cs:5:18:5:19 | M1 | +| VarDecls.cs:7:27:7:36 | Before access to array element | VarDecls.cs:5:18:5:19 | M1 | | VarDecls.cs:7:27:7:36 | access to array element | VarDecls.cs:5:18:5:19 | M1 | | VarDecls.cs:7:35:7:35 | 0 | VarDecls.cs:5:18:5:19 | M1 | +| VarDecls.cs:7:39:7:40 | access to local variable c2 | VarDecls.cs:5:18:5:19 | M1 | +| VarDecls.cs:7:39:7:53 | After Char* c2 = ... | VarDecls.cs:5:18:5:19 | M1 | +| VarDecls.cs:7:39:7:53 | Before Char* c2 = ... | VarDecls.cs:5:18:5:19 | M1 | | VarDecls.cs:7:39:7:53 | Char* c2 = ... | VarDecls.cs:5:18:5:19 | M1 | | VarDecls.cs:7:44:7:50 | access to parameter strings | VarDecls.cs:5:18:5:19 | M1 | | VarDecls.cs:7:44:7:53 | (...) ... | VarDecls.cs:5:18:5:19 | M1 | +| VarDecls.cs:7:44:7:53 | After (...) ... | VarDecls.cs:5:18:5:19 | M1 | +| VarDecls.cs:7:44:7:53 | After access to array element | VarDecls.cs:5:18:5:19 | M1 | +| VarDecls.cs:7:44:7:53 | Before (...) ... | VarDecls.cs:5:18:5:19 | M1 | +| VarDecls.cs:7:44:7:53 | Before access to array element | VarDecls.cs:5:18:5:19 | M1 | | VarDecls.cs:7:44:7:53 | access to array element | VarDecls.cs:5:18:5:19 | M1 | | VarDecls.cs:7:52:7:52 | 1 | VarDecls.cs:5:18:5:19 | M1 | | VarDecls.cs:8:9:10:9 | {...} | VarDecls.cs:5:18:5:19 | M1 | +| VarDecls.cs:9:13:9:29 | Before return ...; | VarDecls.cs:5:18:5:19 | M1 | | VarDecls.cs:9:13:9:29 | return ...; | VarDecls.cs:5:18:5:19 | M1 | | VarDecls.cs:9:20:9:28 | (...) ... | VarDecls.cs:5:18:5:19 | M1 | +| VarDecls.cs:9:20:9:28 | After (...) ... | VarDecls.cs:5:18:5:19 | M1 | +| VarDecls.cs:9:20:9:28 | Before (...) ... | VarDecls.cs:5:18:5:19 | M1 | | VarDecls.cs:9:27:9:28 | access to local variable c1 | VarDecls.cs:5:18:5:19 | M1 | -| VarDecls.cs:13:12:13:13 | enter M2 | VarDecls.cs:13:12:13:13 | M2 | -| VarDecls.cs:13:12:13:13 | exit M2 | VarDecls.cs:13:12:13:13 | M2 | -| VarDecls.cs:13:12:13:13 | exit M2 (normal) | VarDecls.cs:13:12:13:13 | M2 | +| VarDecls.cs:13:12:13:13 | Entry | VarDecls.cs:13:12:13:13 | M2 | +| VarDecls.cs:13:12:13:13 | Exit | VarDecls.cs:13:12:13:13 | M2 | +| VarDecls.cs:13:12:13:13 | Normal Exit | VarDecls.cs:13:12:13:13 | M2 | +| VarDecls.cs:13:22:13:22 | s | VarDecls.cs:13:12:13:13 | M2 | | VarDecls.cs:14:5:17:5 | {...} | VarDecls.cs:13:12:13:13 | M2 | | VarDecls.cs:15:9:15:30 | ... ...; | VarDecls.cs:13:12:13:13 | M2 | +| VarDecls.cs:15:9:15:30 | After ... ...; | VarDecls.cs:13:12:13:13 | M2 | +| VarDecls.cs:15:16:15:17 | access to local variable s1 | VarDecls.cs:13:12:13:13 | M2 | +| VarDecls.cs:15:16:15:21 | After String s1 = ... | VarDecls.cs:13:12:13:13 | M2 | +| VarDecls.cs:15:16:15:21 | Before String s1 = ... | VarDecls.cs:13:12:13:13 | M2 | | VarDecls.cs:15:16:15:21 | String s1 = ... | VarDecls.cs:13:12:13:13 | M2 | | VarDecls.cs:15:21:15:21 | access to parameter s | VarDecls.cs:13:12:13:13 | M2 | +| VarDecls.cs:15:24:15:25 | access to local variable s2 | VarDecls.cs:13:12:13:13 | M2 | +| VarDecls.cs:15:24:15:29 | After String s2 = ... | VarDecls.cs:13:12:13:13 | M2 | +| VarDecls.cs:15:24:15:29 | Before String s2 = ... | VarDecls.cs:13:12:13:13 | M2 | | VarDecls.cs:15:24:15:29 | String s2 = ... | VarDecls.cs:13:12:13:13 | M2 | | VarDecls.cs:15:29:15:29 | access to parameter s | VarDecls.cs:13:12:13:13 | M2 | +| VarDecls.cs:16:9:16:23 | Before return ...; | VarDecls.cs:13:12:13:13 | M2 | | VarDecls.cs:16:9:16:23 | return ...; | VarDecls.cs:13:12:13:13 | M2 | | VarDecls.cs:16:16:16:17 | access to local variable s1 | VarDecls.cs:13:12:13:13 | M2 | | VarDecls.cs:16:16:16:22 | ... + ... | VarDecls.cs:13:12:13:13 | M2 | +| VarDecls.cs:16:16:16:22 | After ... + ... | VarDecls.cs:13:12:13:13 | M2 | +| VarDecls.cs:16:16:16:22 | Before ... + ... | VarDecls.cs:13:12:13:13 | M2 | | VarDecls.cs:16:21:16:22 | access to local variable s2 | VarDecls.cs:13:12:13:13 | M2 | -| VarDecls.cs:19:7:19:8 | enter M3 | VarDecls.cs:19:7:19:8 | M3 | -| VarDecls.cs:19:7:19:8 | exit M3 | VarDecls.cs:19:7:19:8 | M3 | -| VarDecls.cs:19:7:19:8 | exit M3 (normal) | VarDecls.cs:19:7:19:8 | M3 | +| VarDecls.cs:19:7:19:8 | Entry | VarDecls.cs:19:7:19:8 | M3 | +| VarDecls.cs:19:7:19:8 | Exit | VarDecls.cs:19:7:19:8 | M3 | +| VarDecls.cs:19:7:19:8 | Normal Exit | VarDecls.cs:19:7:19:8 | M3 | +| VarDecls.cs:19:15:19:15 | b | VarDecls.cs:19:7:19:8 | M3 | | VarDecls.cs:20:5:26:5 | {...} | VarDecls.cs:19:7:19:8 | M3 | +| VarDecls.cs:21:9:22:13 | After using (...) {...} | VarDecls.cs:19:7:19:8 | M3 | | VarDecls.cs:21:9:22:13 | using (...) {...} | VarDecls.cs:19:7:19:8 | M3 | +| VarDecls.cs:21:16:21:22 | After object creation of type C | VarDecls.cs:19:7:19:8 | M3 | +| VarDecls.cs:21:16:21:22 | Before object creation of type C | VarDecls.cs:19:7:19:8 | M3 | | VarDecls.cs:21:16:21:22 | object creation of type C | VarDecls.cs:19:7:19:8 | M3 | | VarDecls.cs:22:13:22:13 | ; | VarDecls.cs:19:7:19:8 | M3 | | VarDecls.cs:24:9:25:29 | using (...) {...} | VarDecls.cs:19:7:19:8 | M3 | +| VarDecls.cs:24:18:24:18 | access to local variable x | VarDecls.cs:19:7:19:8 | M3 | +| VarDecls.cs:24:18:24:28 | After C x = ... | VarDecls.cs:19:7:19:8 | M3 | +| VarDecls.cs:24:18:24:28 | Before C x = ... | VarDecls.cs:19:7:19:8 | M3 | | VarDecls.cs:24:18:24:28 | C x = ... | VarDecls.cs:19:7:19:8 | M3 | +| VarDecls.cs:24:22:24:28 | After object creation of type C | VarDecls.cs:19:7:19:8 | M3 | +| VarDecls.cs:24:22:24:28 | Before object creation of type C | VarDecls.cs:19:7:19:8 | M3 | | VarDecls.cs:24:22:24:28 | object creation of type C | VarDecls.cs:19:7:19:8 | M3 | +| VarDecls.cs:24:31:24:31 | access to local variable y | VarDecls.cs:19:7:19:8 | M3 | +| VarDecls.cs:24:31:24:41 | After C y = ... | VarDecls.cs:19:7:19:8 | M3 | +| VarDecls.cs:24:31:24:41 | Before C y = ... | VarDecls.cs:19:7:19:8 | M3 | | VarDecls.cs:24:31:24:41 | C y = ... | VarDecls.cs:19:7:19:8 | M3 | +| VarDecls.cs:24:35:24:41 | After object creation of type C | VarDecls.cs:19:7:19:8 | M3 | +| VarDecls.cs:24:35:24:41 | Before object creation of type C | VarDecls.cs:19:7:19:8 | M3 | | VarDecls.cs:24:35:24:41 | object creation of type C | VarDecls.cs:19:7:19:8 | M3 | +| VarDecls.cs:25:13:25:29 | Before return ...; | VarDecls.cs:19:7:19:8 | M3 | | VarDecls.cs:25:13:25:29 | return ...; | VarDecls.cs:19:7:19:8 | M3 | +| VarDecls.cs:25:20:25:20 | After access to parameter b [false] | VarDecls.cs:19:7:19:8 | M3 | +| VarDecls.cs:25:20:25:20 | After access to parameter b [true] | VarDecls.cs:19:7:19:8 | M3 | | VarDecls.cs:25:20:25:20 | access to parameter b | VarDecls.cs:19:7:19:8 | M3 | | VarDecls.cs:25:20:25:28 | ... ? ... : ... | VarDecls.cs:19:7:19:8 | M3 | +| VarDecls.cs:25:20:25:28 | After ... ? ... : ... | VarDecls.cs:19:7:19:8 | M3 | | VarDecls.cs:25:24:25:24 | access to local variable x | VarDecls.cs:19:7:19:8 | M3 | | VarDecls.cs:25:28:25:28 | access to local variable y | VarDecls.cs:19:7:19:8 | M3 | +| VarDecls.cs:28:11:28:11 | After call to constructor Object | VarDecls.cs:28:11:28:11 | C | +| VarDecls.cs:28:11:28:11 | After call to method | VarDecls.cs:28:11:28:11 | C | +| VarDecls.cs:28:11:28:11 | Before call to constructor Object | VarDecls.cs:28:11:28:11 | C | +| VarDecls.cs:28:11:28:11 | Before call to method | VarDecls.cs:28:11:28:11 | C | +| VarDecls.cs:28:11:28:11 | Entry | VarDecls.cs:28:11:28:11 | C | +| VarDecls.cs:28:11:28:11 | Exit | VarDecls.cs:28:11:28:11 | C | +| VarDecls.cs:28:11:28:11 | Normal Exit | VarDecls.cs:28:11:28:11 | C | | VarDecls.cs:28:11:28:11 | call to constructor Object | VarDecls.cs:28:11:28:11 | C | | VarDecls.cs:28:11:28:11 | call to method | VarDecls.cs:28:11:28:11 | C | -| VarDecls.cs:28:11:28:11 | enter C | VarDecls.cs:28:11:28:11 | C | -| VarDecls.cs:28:11:28:11 | exit C | VarDecls.cs:28:11:28:11 | C | -| VarDecls.cs:28:11:28:11 | exit C (normal) | VarDecls.cs:28:11:28:11 | C | | VarDecls.cs:28:11:28:11 | this access | VarDecls.cs:28:11:28:11 | C | | VarDecls.cs:28:11:28:11 | {...} | VarDecls.cs:28:11:28:11 | C | -| VarDecls.cs:28:41:28:47 | enter Dispose | VarDecls.cs:28:41:28:47 | Dispose | -| VarDecls.cs:28:41:28:47 | exit Dispose | VarDecls.cs:28:41:28:47 | Dispose | -| VarDecls.cs:28:41:28:47 | exit Dispose (normal) | VarDecls.cs:28:41:28:47 | Dispose | +| VarDecls.cs:28:41:28:47 | Entry | VarDecls.cs:28:41:28:47 | Dispose | +| VarDecls.cs:28:41:28:47 | Exit | VarDecls.cs:28:41:28:47 | Dispose | +| VarDecls.cs:28:41:28:47 | Normal Exit | VarDecls.cs:28:41:28:47 | Dispose | | VarDecls.cs:28:51:28:53 | {...} | VarDecls.cs:28:41:28:47 | Dispose | -| cflow.cs:5:17:5:20 | enter Main | cflow.cs:5:17:5:20 | Main | -| cflow.cs:5:17:5:20 | exit Main | cflow.cs:5:17:5:20 | Main | -| cflow.cs:5:17:5:20 | exit Main (normal) | cflow.cs:5:17:5:20 | Main | +| cflow.cs:5:17:5:20 | Entry | cflow.cs:5:17:5:20 | Main | +| cflow.cs:5:17:5:20 | Exit | cflow.cs:5:17:5:20 | Main | +| cflow.cs:5:17:5:20 | Normal Exit | cflow.cs:5:17:5:20 | Main | +| cflow.cs:5:31:5:34 | args | cflow.cs:5:17:5:20 | Main | +| cflow.cs:6:5:35:5 | After {...} | cflow.cs:5:17:5:20 | Main | | cflow.cs:6:5:35:5 | {...} | cflow.cs:5:17:5:20 | Main | | cflow.cs:7:9:7:28 | ... ...; | cflow.cs:5:17:5:20 | Main | +| cflow.cs:7:9:7:28 | After ... ...; | cflow.cs:5:17:5:20 | Main | +| cflow.cs:7:13:7:13 | access to local variable a | cflow.cs:5:17:5:20 | Main | +| cflow.cs:7:13:7:27 | After Int32 a = ... | cflow.cs:5:17:5:20 | Main | +| cflow.cs:7:13:7:27 | Before Int32 a = ... | cflow.cs:5:17:5:20 | Main | | cflow.cs:7:13:7:27 | Int32 a = ... | cflow.cs:5:17:5:20 | Main | | cflow.cs:7:17:7:20 | access to parameter args | cflow.cs:5:17:5:20 | Main | +| cflow.cs:7:17:7:27 | After access to property Length | cflow.cs:5:17:5:20 | Main | +| cflow.cs:7:17:7:27 | Before access to property Length | cflow.cs:5:17:5:20 | Main | | cflow.cs:7:17:7:27 | access to property Length | cflow.cs:5:17:5:20 | Main | +| cflow.cs:9:9:9:9 | access to local variable a | cflow.cs:5:17:5:20 | Main | | cflow.cs:9:9:9:39 | ... = ... | cflow.cs:5:17:5:20 | Main | +| cflow.cs:9:9:9:39 | After ... = ... | cflow.cs:5:17:5:20 | Main | +| cflow.cs:9:9:9:39 | Before ... = ... | cflow.cs:5:17:5:20 | Main | | cflow.cs:9:9:9:40 | ...; | cflow.cs:5:17:5:20 | Main | +| cflow.cs:9:9:9:40 | After ...; | cflow.cs:5:17:5:20 | Main | +| cflow.cs:9:13:9:29 | After object creation of type ControlFlow | cflow.cs:5:17:5:20 | Main | +| cflow.cs:9:13:9:29 | Before object creation of type ControlFlow | cflow.cs:5:17:5:20 | Main | | cflow.cs:9:13:9:29 | object creation of type ControlFlow | cflow.cs:5:17:5:20 | Main | +| cflow.cs:9:13:9:39 | After call to method Switch | cflow.cs:5:17:5:20 | Main | +| cflow.cs:9:13:9:39 | Before call to method Switch | cflow.cs:5:17:5:20 | Main | | cflow.cs:9:13:9:39 | call to method Switch | cflow.cs:5:17:5:20 | Main | | cflow.cs:9:38:9:38 | access to local variable a | cflow.cs:5:17:5:20 | Main | +| cflow.cs:11:9:12:49 | After if (...) ... | cflow.cs:5:17:5:20 | Main | | cflow.cs:11:9:12:49 | if (...) ... | cflow.cs:5:17:5:20 | Main | | cflow.cs:11:13:11:13 | access to local variable a | cflow.cs:5:17:5:20 | Main | | cflow.cs:11:13:11:17 | ... > ... | cflow.cs:5:17:5:20 | Main | +| cflow.cs:11:13:11:17 | After ... > ... [false] | cflow.cs:5:17:5:20 | Main | +| cflow.cs:11:13:11:17 | After ... > ... [true] | cflow.cs:5:17:5:20 | Main | +| cflow.cs:11:13:11:17 | Before ... > ... | cflow.cs:5:17:5:20 | Main | | cflow.cs:11:17:11:17 | 3 | cflow.cs:5:17:5:20 | Main | +| cflow.cs:12:13:12:48 | After call to method WriteLine | cflow.cs:5:17:5:20 | Main | +| cflow.cs:12:13:12:48 | Before call to method WriteLine | cflow.cs:5:17:5:20 | Main | | cflow.cs:12:13:12:48 | call to method WriteLine | cflow.cs:5:17:5:20 | Main | | cflow.cs:12:13:12:49 | ...; | cflow.cs:5:17:5:20 | Main | +| cflow.cs:12:13:12:49 | After ...; | cflow.cs:5:17:5:20 | Main | | cflow.cs:12:31:12:47 | "more than a few" | cflow.cs:5:17:5:20 | Main | +| cflow.cs:14:9:17:9 | After while (...) ... | cflow.cs:5:17:5:20 | Main | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:5:17:5:20 | Main | | cflow.cs:14:9:17:9 | while (...) ... | cflow.cs:5:17:5:20 | Main | | cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:5:17:5:20 | Main | | cflow.cs:14:16:14:20 | ... > ... | cflow.cs:5:17:5:20 | Main | +| cflow.cs:14:16:14:20 | After ... > ... [false] | cflow.cs:5:17:5:20 | Main | +| cflow.cs:14:16:14:20 | After ... > ... [true] | cflow.cs:5:17:5:20 | Main | +| cflow.cs:14:16:14:20 | Before ... > ... | cflow.cs:5:17:5:20 | Main | | cflow.cs:14:20:14:20 | 0 | cflow.cs:5:17:5:20 | Main | +| cflow.cs:15:9:17:9 | After {...} | cflow.cs:5:17:5:20 | Main | | cflow.cs:15:9:17:9 | {...} | cflow.cs:5:17:5:20 | Main | +| cflow.cs:16:13:16:40 | After call to method WriteLine | cflow.cs:5:17:5:20 | Main | +| cflow.cs:16:13:16:40 | Before call to method WriteLine | cflow.cs:5:17:5:20 | Main | | cflow.cs:16:13:16:40 | call to method WriteLine | cflow.cs:5:17:5:20 | Main | | cflow.cs:16:13:16:41 | ...; | cflow.cs:5:17:5:20 | Main | +| cflow.cs:16:13:16:41 | After ...; | cflow.cs:5:17:5:20 | Main | | cflow.cs:16:31:16:31 | access to local variable a | cflow.cs:5:17:5:20 | Main | | cflow.cs:16:31:16:33 | ...-- | cflow.cs:5:17:5:20 | Main | +| cflow.cs:16:31:16:33 | After ...-- | cflow.cs:5:17:5:20 | Main | +| cflow.cs:16:31:16:33 | Before ...-- | cflow.cs:5:17:5:20 | Main | | cflow.cs:16:31:16:39 | ... * ... | cflow.cs:5:17:5:20 | Main | +| cflow.cs:16:31:16:39 | After ... * ... | cflow.cs:5:17:5:20 | Main | +| cflow.cs:16:31:16:39 | Before ... * ... | cflow.cs:5:17:5:20 | Main | | cflow.cs:16:37:16:39 | 100 | cflow.cs:5:17:5:20 | Main | +| cflow.cs:19:9:22:25 | After do ... while (...); | cflow.cs:5:17:5:20 | Main | +| cflow.cs:19:9:22:25 | [LoopHeader] do ... while (...); | cflow.cs:5:17:5:20 | Main | | cflow.cs:19:9:22:25 | do ... while (...); | cflow.cs:5:17:5:20 | Main | +| cflow.cs:20:9:22:9 | After {...} | cflow.cs:5:17:5:20 | Main | | cflow.cs:20:9:22:9 | {...} | cflow.cs:5:17:5:20 | Main | +| cflow.cs:21:13:21:35 | After call to method WriteLine | cflow.cs:5:17:5:20 | Main | +| cflow.cs:21:13:21:35 | Before call to method WriteLine | cflow.cs:5:17:5:20 | Main | | cflow.cs:21:13:21:35 | call to method WriteLine | cflow.cs:5:17:5:20 | Main | | cflow.cs:21:13:21:36 | ...; | cflow.cs:5:17:5:20 | Main | +| cflow.cs:21:13:21:36 | After ...; | cflow.cs:5:17:5:20 | Main | | cflow.cs:21:31:21:34 | -... | cflow.cs:5:17:5:20 | Main | +| cflow.cs:21:31:21:34 | After -... | cflow.cs:5:17:5:20 | Main | +| cflow.cs:21:31:21:34 | Before -... | cflow.cs:5:17:5:20 | Main | | cflow.cs:21:32:21:32 | access to local variable a | cflow.cs:5:17:5:20 | Main | | cflow.cs:21:32:21:34 | ...++ | cflow.cs:5:17:5:20 | Main | +| cflow.cs:21:32:21:34 | After ...++ | cflow.cs:5:17:5:20 | Main | +| cflow.cs:21:32:21:34 | Before ...++ | cflow.cs:5:17:5:20 | Main | | cflow.cs:22:18:22:18 | access to local variable a | cflow.cs:5:17:5:20 | Main | | cflow.cs:22:18:22:23 | ... < ... | cflow.cs:5:17:5:20 | Main | +| cflow.cs:22:18:22:23 | After ... < ... [false] | cflow.cs:5:17:5:20 | Main | +| cflow.cs:22:18:22:23 | After ... < ... [true] | cflow.cs:5:17:5:20 | Main | +| cflow.cs:22:18:22:23 | Before ... < ... | cflow.cs:5:17:5:20 | Main | | cflow.cs:22:22:22:23 | 10 | cflow.cs:5:17:5:20 | Main | +| cflow.cs:24:9:34:9 | After for (...;...;...) ... | cflow.cs:5:17:5:20 | Main | +| cflow.cs:24:9:34:9 | [LoopHeader] for (...;...;...) ... | cflow.cs:5:17:5:20 | Main | | cflow.cs:24:9:34:9 | for (...;...;...) ... | cflow.cs:5:17:5:20 | Main | +| cflow.cs:24:18:24:18 | access to local variable i | cflow.cs:5:17:5:20 | Main | +| cflow.cs:24:18:24:22 | After Int32 i = ... | cflow.cs:5:17:5:20 | Main | +| cflow.cs:24:18:24:22 | Before Int32 i = ... | cflow.cs:5:17:5:20 | Main | | cflow.cs:24:18:24:22 | Int32 i = ... | cflow.cs:5:17:5:20 | Main | | cflow.cs:24:22:24:22 | 1 | cflow.cs:5:17:5:20 | Main | | cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:5:17:5:20 | Main | | cflow.cs:24:25:24:31 | ... <= ... | cflow.cs:5:17:5:20 | Main | +| cflow.cs:24:25:24:31 | After ... <= ... [false] | cflow.cs:5:17:5:20 | Main | +| cflow.cs:24:25:24:31 | After ... <= ... [true] | cflow.cs:5:17:5:20 | Main | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:5:17:5:20 | Main | | cflow.cs:24:30:24:31 | 20 | cflow.cs:5:17:5:20 | Main | | cflow.cs:24:34:24:34 | access to local variable i | cflow.cs:5:17:5:20 | Main | | cflow.cs:24:34:24:36 | ...++ | cflow.cs:5:17:5:20 | Main | +| cflow.cs:24:34:24:36 | After ...++ | cflow.cs:5:17:5:20 | Main | +| cflow.cs:24:34:24:36 | Before ...++ | cflow.cs:5:17:5:20 | Main | +| cflow.cs:25:9:34:9 | After {...} | cflow.cs:5:17:5:20 | Main | | cflow.cs:25:9:34:9 | {...} | cflow.cs:5:17:5:20 | Main | +| cflow.cs:26:13:33:37 | After if (...) ... | cflow.cs:5:17:5:20 | Main | | cflow.cs:26:13:33:37 | if (...) ... | cflow.cs:5:17:5:20 | Main | | cflow.cs:26:17:26:17 | access to local variable i | cflow.cs:5:17:5:20 | Main | | cflow.cs:26:17:26:21 | ... % ... | cflow.cs:5:17:5:20 | Main | +| cflow.cs:26:17:26:21 | After ... % ... | cflow.cs:5:17:5:20 | Main | +| cflow.cs:26:17:26:21 | Before ... % ... | cflow.cs:5:17:5:20 | Main | | cflow.cs:26:17:26:26 | ... == ... | cflow.cs:5:17:5:20 | Main | -| cflow.cs:26:17:26:40 | [false] ... && ... | cflow.cs:5:17:5:20 | Main | -| cflow.cs:26:17:26:40 | [true] ... && ... | cflow.cs:5:17:5:20 | Main | +| cflow.cs:26:17:26:26 | After ... == ... [false] | cflow.cs:5:17:5:20 | Main | +| cflow.cs:26:17:26:26 | After ... == ... [true] | cflow.cs:5:17:5:20 | Main | +| cflow.cs:26:17:26:26 | Before ... == ... | cflow.cs:5:17:5:20 | Main | +| cflow.cs:26:17:26:40 | ... && ... | cflow.cs:5:17:5:20 | Main | +| cflow.cs:26:17:26:40 | After ... && ... [false] | cflow.cs:5:17:5:20 | Main | +| cflow.cs:26:17:26:40 | After ... && ... [true] | cflow.cs:5:17:5:20 | Main | | cflow.cs:26:21:26:21 | 3 | cflow.cs:5:17:5:20 | Main | | cflow.cs:26:26:26:26 | 0 | cflow.cs:5:17:5:20 | Main | | cflow.cs:26:31:26:31 | access to local variable i | cflow.cs:5:17:5:20 | Main | | cflow.cs:26:31:26:35 | ... % ... | cflow.cs:5:17:5:20 | Main | +| cflow.cs:26:31:26:35 | After ... % ... | cflow.cs:5:17:5:20 | Main | +| cflow.cs:26:31:26:35 | Before ... % ... | cflow.cs:5:17:5:20 | Main | | cflow.cs:26:31:26:40 | ... == ... | cflow.cs:5:17:5:20 | Main | +| cflow.cs:26:31:26:40 | After ... == ... [false] | cflow.cs:5:17:5:20 | Main | +| cflow.cs:26:31:26:40 | After ... == ... [true] | cflow.cs:5:17:5:20 | Main | +| cflow.cs:26:31:26:40 | Before ... == ... | cflow.cs:5:17:5:20 | Main | | cflow.cs:26:35:26:35 | 5 | cflow.cs:5:17:5:20 | Main | | cflow.cs:26:40:26:40 | 0 | cflow.cs:5:17:5:20 | Main | +| cflow.cs:27:17:27:45 | After call to method WriteLine | cflow.cs:5:17:5:20 | Main | +| cflow.cs:27:17:27:45 | Before call to method WriteLine | cflow.cs:5:17:5:20 | Main | | cflow.cs:27:17:27:45 | call to method WriteLine | cflow.cs:5:17:5:20 | Main | | cflow.cs:27:17:27:46 | ...; | cflow.cs:5:17:5:20 | Main | +| cflow.cs:27:17:27:46 | After ...; | cflow.cs:5:17:5:20 | Main | | cflow.cs:27:35:27:44 | "FizzBuzz" | cflow.cs:5:17:5:20 | Main | +| cflow.cs:28:18:33:37 | After if (...) ... | cflow.cs:5:17:5:20 | Main | | cflow.cs:28:18:33:37 | if (...) ... | cflow.cs:5:17:5:20 | Main | | cflow.cs:28:22:28:22 | access to local variable i | cflow.cs:5:17:5:20 | Main | | cflow.cs:28:22:28:26 | ... % ... | cflow.cs:5:17:5:20 | Main | +| cflow.cs:28:22:28:26 | After ... % ... | cflow.cs:5:17:5:20 | Main | +| cflow.cs:28:22:28:26 | Before ... % ... | cflow.cs:5:17:5:20 | Main | | cflow.cs:28:22:28:31 | ... == ... | cflow.cs:5:17:5:20 | Main | +| cflow.cs:28:22:28:31 | After ... == ... [false] | cflow.cs:5:17:5:20 | Main | +| cflow.cs:28:22:28:31 | After ... == ... [true] | cflow.cs:5:17:5:20 | Main | +| cflow.cs:28:22:28:31 | Before ... == ... | cflow.cs:5:17:5:20 | Main | | cflow.cs:28:26:28:26 | 3 | cflow.cs:5:17:5:20 | Main | | cflow.cs:28:31:28:31 | 0 | cflow.cs:5:17:5:20 | Main | +| cflow.cs:29:17:29:41 | After call to method WriteLine | cflow.cs:5:17:5:20 | Main | +| cflow.cs:29:17:29:41 | Before call to method WriteLine | cflow.cs:5:17:5:20 | Main | | cflow.cs:29:17:29:41 | call to method WriteLine | cflow.cs:5:17:5:20 | Main | | cflow.cs:29:17:29:42 | ...; | cflow.cs:5:17:5:20 | Main | +| cflow.cs:29:17:29:42 | After ...; | cflow.cs:5:17:5:20 | Main | | cflow.cs:29:35:29:40 | "Fizz" | cflow.cs:5:17:5:20 | Main | +| cflow.cs:30:18:33:37 | After if (...) ... | cflow.cs:5:17:5:20 | Main | | cflow.cs:30:18:33:37 | if (...) ... | cflow.cs:5:17:5:20 | Main | | cflow.cs:30:22:30:22 | access to local variable i | cflow.cs:5:17:5:20 | Main | | cflow.cs:30:22:30:26 | ... % ... | cflow.cs:5:17:5:20 | Main | +| cflow.cs:30:22:30:26 | After ... % ... | cflow.cs:5:17:5:20 | Main | +| cflow.cs:30:22:30:26 | Before ... % ... | cflow.cs:5:17:5:20 | Main | | cflow.cs:30:22:30:31 | ... == ... | cflow.cs:5:17:5:20 | Main | +| cflow.cs:30:22:30:31 | After ... == ... [false] | cflow.cs:5:17:5:20 | Main | +| cflow.cs:30:22:30:31 | After ... == ... [true] | cflow.cs:5:17:5:20 | Main | +| cflow.cs:30:22:30:31 | Before ... == ... | cflow.cs:5:17:5:20 | Main | | cflow.cs:30:26:30:26 | 5 | cflow.cs:5:17:5:20 | Main | | cflow.cs:30:31:30:31 | 0 | cflow.cs:5:17:5:20 | Main | +| cflow.cs:31:17:31:41 | After call to method WriteLine | cflow.cs:5:17:5:20 | Main | +| cflow.cs:31:17:31:41 | Before call to method WriteLine | cflow.cs:5:17:5:20 | Main | | cflow.cs:31:17:31:41 | call to method WriteLine | cflow.cs:5:17:5:20 | Main | | cflow.cs:31:17:31:42 | ...; | cflow.cs:5:17:5:20 | Main | +| cflow.cs:31:17:31:42 | After ...; | cflow.cs:5:17:5:20 | Main | | cflow.cs:31:35:31:40 | "Buzz" | cflow.cs:5:17:5:20 | Main | +| cflow.cs:33:17:33:36 | After call to method WriteLine | cflow.cs:5:17:5:20 | Main | +| cflow.cs:33:17:33:36 | Before call to method WriteLine | cflow.cs:5:17:5:20 | Main | | cflow.cs:33:17:33:36 | call to method WriteLine | cflow.cs:5:17:5:20 | Main | | cflow.cs:33:17:33:37 | ...; | cflow.cs:5:17:5:20 | Main | +| cflow.cs:33:17:33:37 | After ...; | cflow.cs:5:17:5:20 | Main | | cflow.cs:33:35:33:35 | access to local variable i | cflow.cs:5:17:5:20 | Main | -| cflow.cs:37:17:37:22 | enter Switch | cflow.cs:37:17:37:22 | Switch | -| cflow.cs:37:17:37:22 | exit Switch | cflow.cs:37:17:37:22 | Switch | -| cflow.cs:37:17:37:22 | exit Switch (abnormal) | cflow.cs:37:17:37:22 | Switch | -| cflow.cs:37:17:37:22 | exit Switch (normal) | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:37:17:37:22 | Exceptional Exit | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:37:17:37:22 | Exit | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:37:17:37:22 | Normal Exit | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:37:28:37:28 | a | cflow.cs:37:17:37:22 | Switch | | cflow.cs:38:5:68:5 | {...} | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:39:9:50:9 | After switch (...) {...} | cflow.cs:37:17:37:22 | Switch | | cflow.cs:39:9:50:9 | switch (...) {...} | cflow.cs:37:17:37:22 | Switch | | cflow.cs:39:17:39:17 | access to parameter a | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:41:13:41:19 | After case ...: [match] | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:41:13:41:19 | After case ...: [no-match] | cflow.cs:37:17:37:22 | Switch | | cflow.cs:41:13:41:19 | case ...: | cflow.cs:37:17:37:22 | Switch | | cflow.cs:41:18:41:18 | 1 | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:41:18:41:18 | After 1 [match] | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:41:18:41:18 | After 1 [no-match] | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:42:17:42:38 | After call to method WriteLine | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:42:17:42:38 | Before call to method WriteLine | cflow.cs:37:17:37:22 | Switch | | cflow.cs:42:17:42:38 | call to method WriteLine | cflow.cs:37:17:37:22 | Switch | | cflow.cs:42:17:42:39 | ...; | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:42:17:42:39 | After ...; | cflow.cs:37:17:37:22 | Switch | | cflow.cs:42:35:42:37 | "1" | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:43:17:43:28 | Before goto case ...; | cflow.cs:37:17:37:22 | Switch | | cflow.cs:43:17:43:28 | goto case ...; | cflow.cs:37:17:37:22 | Switch | | cflow.cs:43:27:43:27 | 2 | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:44:13:44:19 | After case ...: [match] | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:44:13:44:19 | After case ...: [no-match] | cflow.cs:37:17:37:22 | Switch | | cflow.cs:44:13:44:19 | case ...: | cflow.cs:37:17:37:22 | Switch | | cflow.cs:44:18:44:18 | 2 | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:44:18:44:18 | After 2 [match] | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:44:18:44:18 | After 2 [no-match] | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:45:17:45:38 | After call to method WriteLine | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:45:17:45:38 | Before call to method WriteLine | cflow.cs:37:17:37:22 | Switch | | cflow.cs:45:17:45:38 | call to method WriteLine | cflow.cs:37:17:37:22 | Switch | | cflow.cs:45:17:45:39 | ...; | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:45:17:45:39 | After ...; | cflow.cs:37:17:37:22 | Switch | | cflow.cs:45:35:45:37 | "2" | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:46:17:46:28 | Before goto case ...; | cflow.cs:37:17:37:22 | Switch | | cflow.cs:46:17:46:28 | goto case ...; | cflow.cs:37:17:37:22 | Switch | | cflow.cs:46:27:46:27 | 1 | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:47:13:47:19 | After case ...: [match] | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:47:13:47:19 | After case ...: [no-match] | cflow.cs:37:17:37:22 | Switch | | cflow.cs:47:13:47:19 | case ...: | cflow.cs:37:17:37:22 | Switch | | cflow.cs:47:18:47:18 | 3 | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:47:18:47:18 | After 3 [match] | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:47:18:47:18 | After 3 [no-match] | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:48:17:48:38 | After call to method WriteLine | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:48:17:48:38 | Before call to method WriteLine | cflow.cs:37:17:37:22 | Switch | | cflow.cs:48:17:48:38 | call to method WriteLine | cflow.cs:37:17:37:22 | Switch | | cflow.cs:48:17:48:39 | ...; | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:48:17:48:39 | After ...; | cflow.cs:37:17:37:22 | Switch | | cflow.cs:48:35:48:37 | "3" | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:49:17:49:22 | Before break; | cflow.cs:37:17:37:22 | Switch | | cflow.cs:49:17:49:22 | break; | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:51:9:59:9 | After switch (...) {...} | cflow.cs:37:17:37:22 | Switch | | cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:37:17:37:22 | Switch | | cflow.cs:51:17:51:17 | access to parameter a | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:53:13:53:20 | After case ...: [match] | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:53:13:53:20 | After case ...: [no-match] | cflow.cs:37:17:37:22 | Switch | | cflow.cs:53:13:53:20 | case ...: | cflow.cs:37:17:37:22 | Switch | | cflow.cs:53:18:53:19 | 42 | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:53:18:53:19 | After 42 [match] | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:53:18:53:19 | After 42 [no-match] | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:54:17:54:47 | After call to method WriteLine | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:54:17:54:47 | Before call to method WriteLine | cflow.cs:37:17:37:22 | Switch | | cflow.cs:54:17:54:47 | call to method WriteLine | cflow.cs:37:17:37:22 | Switch | | cflow.cs:54:17:54:48 | ...; | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:54:17:54:48 | After ...; | cflow.cs:37:17:37:22 | Switch | | cflow.cs:54:35:54:46 | "The answer" | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:55:17:55:22 | Before break; | cflow.cs:37:17:37:22 | Switch | | cflow.cs:55:17:55:22 | break; | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:56:13:56:20 | After default: [match] | cflow.cs:37:17:37:22 | Switch | | cflow.cs:56:13:56:20 | default: | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:57:17:57:51 | After call to method WriteLine | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:57:17:57:51 | Before call to method WriteLine | cflow.cs:37:17:37:22 | Switch | | cflow.cs:57:17:57:51 | call to method WriteLine | cflow.cs:37:17:37:22 | Switch | | cflow.cs:57:17:57:52 | ...; | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:57:17:57:52 | After ...; | cflow.cs:37:17:37:22 | Switch | | cflow.cs:57:35:57:50 | "Not the answer" | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:58:17:58:22 | Before break; | cflow.cs:37:17:37:22 | Switch | | cflow.cs:58:17:58:22 | break; | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:60:9:66:9 | After switch (...) {...} | cflow.cs:37:17:37:22 | Switch | | cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:60:17:60:32 | After call to method Parse | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:60:17:60:32 | Before call to method Parse | cflow.cs:37:17:37:22 | Switch | | cflow.cs:60:17:60:32 | call to method Parse | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:60:27:60:31 | After access to field Field | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:60:27:60:31 | Before access to field Field | cflow.cs:37:17:37:22 | Switch | | cflow.cs:60:27:60:31 | access to field Field | cflow.cs:37:17:37:22 | Switch | | cflow.cs:60:27:60:31 | this access | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:62:13:62:19 | After case ...: [match] | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:62:13:62:19 | After case ...: [no-match] | cflow.cs:37:17:37:22 | Switch | | cflow.cs:62:13:62:19 | case ...: | cflow.cs:37:17:37:22 | Switch | | cflow.cs:62:18:62:18 | 0 | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:62:18:62:18 | After 0 [match] | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:62:18:62:18 | After 0 [no-match] | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:63:17:64:55 | After if (...) ... | cflow.cs:37:17:37:22 | Switch | | cflow.cs:63:17:64:55 | if (...) ... | cflow.cs:37:17:37:22 | Switch | -| cflow.cs:63:21:63:34 | [false] !... | cflow.cs:37:17:37:22 | Switch | -| cflow.cs:63:21:63:34 | [true] !... | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:63:21:63:34 | !... | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:63:21:63:34 | After !... [false] | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:63:21:63:34 | After !... [true] | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:63:23:63:27 | After access to field Field | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:63:23:63:27 | Before access to field Field | cflow.cs:37:17:37:22 | Switch | | cflow.cs:63:23:63:27 | access to field Field | cflow.cs:37:17:37:22 | Switch | | cflow.cs:63:23:63:27 | this access | cflow.cs:37:17:37:22 | Switch | | cflow.cs:63:23:63:33 | ... == ... | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:63:23:63:33 | After ... == ... [false] | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:63:23:63:33 | After ... == ... [true] | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:63:23:63:33 | Before ... == ... | cflow.cs:37:17:37:22 | Switch | | cflow.cs:63:32:63:33 | "" | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:64:21:64:55 | Before throw ...; | cflow.cs:37:17:37:22 | Switch | | cflow.cs:64:21:64:55 | throw ...; | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:64:27:64:54 | After object creation of type NullReferenceException | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:64:27:64:54 | Before object creation of type NullReferenceException | cflow.cs:37:17:37:22 | Switch | | cflow.cs:64:27:64:54 | object creation of type NullReferenceException | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:65:17:65:22 | Before break; | cflow.cs:37:17:37:22 | Switch | | cflow.cs:65:17:65:22 | break; | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:67:9:67:17 | Before return ...; | cflow.cs:37:17:37:22 | Switch | | cflow.cs:67:9:67:17 | return ...; | cflow.cs:37:17:37:22 | Switch | | cflow.cs:67:16:67:16 | access to parameter a | cflow.cs:37:17:37:22 | Switch | -| cflow.cs:70:18:70:18 | enter M | cflow.cs:70:18:70:18 | M | -| cflow.cs:70:18:70:18 | exit M | cflow.cs:70:18:70:18 | M | -| cflow.cs:70:18:70:18 | exit M (normal) | cflow.cs:70:18:70:18 | M | +| cflow.cs:70:18:70:18 | Entry | cflow.cs:70:18:70:18 | M | +| cflow.cs:70:18:70:18 | Exit | cflow.cs:70:18:70:18 | M | +| cflow.cs:70:18:70:18 | Normal Exit | cflow.cs:70:18:70:18 | M | +| cflow.cs:70:27:70:27 | s | cflow.cs:70:18:70:18 | M | +| cflow.cs:71:5:82:5 | After {...} | cflow.cs:70:18:70:18 | M | | cflow.cs:71:5:82:5 | {...} | cflow.cs:70:18:70:18 | M | +| cflow.cs:72:9:73:19 | After if (...) ... | cflow.cs:70:18:70:18 | M | | cflow.cs:72:9:73:19 | if (...) ... | cflow.cs:70:18:70:18 | M | | cflow.cs:72:13:72:13 | access to parameter s | cflow.cs:70:18:70:18 | M | | cflow.cs:72:13:72:21 | ... == ... | cflow.cs:70:18:70:18 | M | +| cflow.cs:72:13:72:21 | After ... == ... [false] | cflow.cs:70:18:70:18 | M | +| cflow.cs:72:13:72:21 | After ... == ... [true] | cflow.cs:70:18:70:18 | M | +| cflow.cs:72:13:72:21 | Before ... == ... | cflow.cs:70:18:70:18 | M | | cflow.cs:72:18:72:21 | null | cflow.cs:70:18:70:18 | M | +| cflow.cs:73:13:73:19 | Before return ...; | cflow.cs:70:18:70:18 | M | | cflow.cs:73:13:73:19 | return ...; | cflow.cs:70:18:70:18 | M | +| cflow.cs:74:9:81:9 | After if (...) ... | cflow.cs:70:18:70:18 | M | | cflow.cs:74:9:81:9 | if (...) ... | cflow.cs:70:18:70:18 | M | | cflow.cs:74:13:74:13 | access to parameter s | cflow.cs:70:18:70:18 | M | +| cflow.cs:74:13:74:20 | After access to property Length | cflow.cs:70:18:70:18 | M | +| cflow.cs:74:13:74:20 | Before access to property Length | cflow.cs:70:18:70:18 | M | | cflow.cs:74:13:74:20 | access to property Length | cflow.cs:70:18:70:18 | M | | cflow.cs:74:13:74:24 | ... > ... | cflow.cs:70:18:70:18 | M | +| cflow.cs:74:13:74:24 | After ... > ... [false] | cflow.cs:70:18:70:18 | M | +| cflow.cs:74:13:74:24 | After ... > ... [true] | cflow.cs:70:18:70:18 | M | +| cflow.cs:74:13:74:24 | Before ... > ... | cflow.cs:70:18:70:18 | M | | cflow.cs:74:24:74:24 | 0 | cflow.cs:70:18:70:18 | M | +| cflow.cs:75:9:77:9 | After {...} | cflow.cs:70:18:70:18 | M | | cflow.cs:75:9:77:9 | {...} | cflow.cs:70:18:70:18 | M | +| cflow.cs:76:13:76:32 | After call to method WriteLine | cflow.cs:70:18:70:18 | M | +| cflow.cs:76:13:76:32 | Before call to method WriteLine | cflow.cs:70:18:70:18 | M | | cflow.cs:76:13:76:32 | call to method WriteLine | cflow.cs:70:18:70:18 | M | | cflow.cs:76:13:76:33 | ...; | cflow.cs:70:18:70:18 | M | +| cflow.cs:76:13:76:33 | After ...; | cflow.cs:70:18:70:18 | M | | cflow.cs:76:31:76:31 | access to parameter s | cflow.cs:70:18:70:18 | M | +| cflow.cs:79:9:81:9 | After {...} | cflow.cs:70:18:70:18 | M | | cflow.cs:79:9:81:9 | {...} | cflow.cs:70:18:70:18 | M | +| cflow.cs:80:13:80:47 | After call to method WriteLine | cflow.cs:70:18:70:18 | M | +| cflow.cs:80:13:80:47 | Before call to method WriteLine | cflow.cs:70:18:70:18 | M | | cflow.cs:80:13:80:47 | call to method WriteLine | cflow.cs:70:18:70:18 | M | | cflow.cs:80:13:80:48 | ...; | cflow.cs:70:18:70:18 | M | +| cflow.cs:80:13:80:48 | After ...; | cflow.cs:70:18:70:18 | M | | cflow.cs:80:31:80:46 | "" | cflow.cs:70:18:70:18 | M | -| cflow.cs:84:18:84:19 | enter M2 | cflow.cs:84:18:84:19 | M2 | -| cflow.cs:84:18:84:19 | exit M2 | cflow.cs:84:18:84:19 | M2 | -| cflow.cs:84:18:84:19 | exit M2 (normal) | cflow.cs:84:18:84:19 | M2 | +| cflow.cs:84:18:84:19 | Entry | cflow.cs:84:18:84:19 | M2 | +| cflow.cs:84:18:84:19 | Exit | cflow.cs:84:18:84:19 | M2 | +| cflow.cs:84:18:84:19 | Normal Exit | cflow.cs:84:18:84:19 | M2 | +| cflow.cs:84:28:84:28 | s | cflow.cs:84:18:84:19 | M2 | +| cflow.cs:85:5:88:5 | After {...} | cflow.cs:84:18:84:19 | M2 | | cflow.cs:85:5:88:5 | {...} | cflow.cs:84:18:84:19 | M2 | +| cflow.cs:86:9:87:33 | After if (...) ... | cflow.cs:84:18:84:19 | M2 | | cflow.cs:86:9:87:33 | if (...) ... | cflow.cs:84:18:84:19 | M2 | | cflow.cs:86:13:86:13 | access to parameter s | cflow.cs:84:18:84:19 | M2 | | cflow.cs:86:13:86:21 | ... != ... | cflow.cs:84:18:84:19 | M2 | -| cflow.cs:86:13:86:37 | [false] ... && ... | cflow.cs:84:18:84:19 | M2 | -| cflow.cs:86:13:86:37 | [true] ... && ... | cflow.cs:84:18:84:19 | M2 | +| cflow.cs:86:13:86:21 | After ... != ... [false] | cflow.cs:84:18:84:19 | M2 | +| cflow.cs:86:13:86:21 | After ... != ... [true] | cflow.cs:84:18:84:19 | M2 | +| cflow.cs:86:13:86:21 | Before ... != ... | cflow.cs:84:18:84:19 | M2 | +| cflow.cs:86:13:86:37 | ... && ... | cflow.cs:84:18:84:19 | M2 | +| cflow.cs:86:13:86:37 | After ... && ... [false] | cflow.cs:84:18:84:19 | M2 | +| cflow.cs:86:13:86:37 | After ... && ... [true] | cflow.cs:84:18:84:19 | M2 | | cflow.cs:86:18:86:21 | null | cflow.cs:84:18:84:19 | M2 | | cflow.cs:86:26:86:26 | access to parameter s | cflow.cs:84:18:84:19 | M2 | +| cflow.cs:86:26:86:33 | After access to property Length | cflow.cs:84:18:84:19 | M2 | +| cflow.cs:86:26:86:33 | Before access to property Length | cflow.cs:84:18:84:19 | M2 | | cflow.cs:86:26:86:33 | access to property Length | cflow.cs:84:18:84:19 | M2 | | cflow.cs:86:26:86:37 | ... > ... | cflow.cs:84:18:84:19 | M2 | +| cflow.cs:86:26:86:37 | After ... > ... [false] | cflow.cs:84:18:84:19 | M2 | +| cflow.cs:86:26:86:37 | After ... > ... [true] | cflow.cs:84:18:84:19 | M2 | +| cflow.cs:86:26:86:37 | Before ... > ... | cflow.cs:84:18:84:19 | M2 | | cflow.cs:86:37:86:37 | 0 | cflow.cs:84:18:84:19 | M2 | +| cflow.cs:87:13:87:32 | After call to method WriteLine | cflow.cs:84:18:84:19 | M2 | +| cflow.cs:87:13:87:32 | Before call to method WriteLine | cflow.cs:84:18:84:19 | M2 | | cflow.cs:87:13:87:32 | call to method WriteLine | cflow.cs:84:18:84:19 | M2 | | cflow.cs:87:13:87:33 | ...; | cflow.cs:84:18:84:19 | M2 | +| cflow.cs:87:13:87:33 | After ...; | cflow.cs:84:18:84:19 | M2 | | cflow.cs:87:31:87:31 | access to parameter s | cflow.cs:84:18:84:19 | M2 | -| cflow.cs:90:18:90:19 | enter M3 | cflow.cs:90:18:90:19 | M3 | -| cflow.cs:90:18:90:19 | exit M3 | cflow.cs:90:18:90:19 | M3 | -| cflow.cs:90:18:90:19 | exit M3 (abnormal) | cflow.cs:90:18:90:19 | M3 | -| cflow.cs:90:18:90:19 | exit M3 (normal) | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:90:18:90:19 | Entry | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:90:18:90:19 | Exceptional Exit | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:90:18:90:19 | Exit | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:90:18:90:19 | Normal Exit | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:90:28:90:28 | s | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:91:5:104:5 | After {...} | cflow.cs:90:18:90:19 | M3 | | cflow.cs:91:5:104:5 | {...} | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:92:9:93:49 | After if (...) ... | cflow.cs:90:18:90:19 | M3 | | cflow.cs:92:9:93:49 | if (...) ... | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:92:13:92:27 | After call to method Equals [false] | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:92:13:92:27 | After call to method Equals [true] | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:92:13:92:27 | Before call to method Equals | cflow.cs:90:18:90:19 | M3 | | cflow.cs:92:13:92:27 | call to method Equals | cflow.cs:90:18:90:19 | M3 | | cflow.cs:92:20:92:20 | access to parameter s | cflow.cs:90:18:90:19 | M3 | | cflow.cs:92:23:92:26 | null | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:93:13:93:49 | Before throw ...; | cflow.cs:90:18:90:19 | M3 | | cflow.cs:93:13:93:49 | throw ...; | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:93:19:93:48 | After object creation of type ArgumentNullException | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:93:19:93:48 | Before object creation of type ArgumentNullException | cflow.cs:90:18:90:19 | M3 | | cflow.cs:93:19:93:48 | object creation of type ArgumentNullException | cflow.cs:90:18:90:19 | M3 | | cflow.cs:93:45:93:47 | "s" | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:94:9:94:28 | After call to method WriteLine | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:94:9:94:28 | Before call to method WriteLine | cflow.cs:90:18:90:19 | M3 | | cflow.cs:94:9:94:28 | call to method WriteLine | cflow.cs:90:18:90:19 | M3 | | cflow.cs:94:9:94:29 | ...; | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:94:9:94:29 | After ...; | cflow.cs:90:18:90:19 | M3 | | cflow.cs:94:27:94:27 | access to parameter s | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:96:9:97:55 | After if (...) ... | cflow.cs:90:18:90:19 | M3 | | cflow.cs:96:9:97:55 | if (...) ... | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:96:13:96:17 | After access to field Field | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:96:13:96:17 | Before access to field Field | cflow.cs:90:18:90:19 | M3 | | cflow.cs:96:13:96:17 | access to field Field | cflow.cs:90:18:90:19 | M3 | | cflow.cs:96:13:96:17 | this access | cflow.cs:90:18:90:19 | M3 | | cflow.cs:96:13:96:25 | ... != ... | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:96:13:96:25 | After ... != ... [false] | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:96:13:96:25 | After ... != ... [true] | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:96:13:96:25 | Before ... != ... | cflow.cs:90:18:90:19 | M3 | | cflow.cs:96:22:96:25 | null | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:97:13:97:54 | After call to method WriteLine | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:97:13:97:54 | Before call to method WriteLine | cflow.cs:90:18:90:19 | M3 | | cflow.cs:97:13:97:54 | call to method WriteLine | cflow.cs:90:18:90:19 | M3 | | cflow.cs:97:13:97:55 | ...; | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:97:13:97:55 | After ...; | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:97:31:97:47 | After object creation of type ControlFlow | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:97:31:97:47 | Before object creation of type ControlFlow | cflow.cs:90:18:90:19 | M3 | | cflow.cs:97:31:97:47 | object creation of type ControlFlow | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:97:31:97:53 | After access to field Field | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:97:31:97:53 | Before access to field Field | cflow.cs:90:18:90:19 | M3 | | cflow.cs:97:31:97:53 | access to field Field | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:99:9:100:42 | After if (...) ... | cflow.cs:90:18:90:19 | M3 | | cflow.cs:99:9:100:42 | if (...) ... | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:99:13:99:17 | After access to field Field | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:99:13:99:17 | Before access to field Field | cflow.cs:90:18:90:19 | M3 | | cflow.cs:99:13:99:17 | access to field Field | cflow.cs:90:18:90:19 | M3 | | cflow.cs:99:13:99:17 | this access | cflow.cs:90:18:90:19 | M3 | | cflow.cs:99:13:99:25 | ... != ... | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:99:13:99:25 | After ... != ... [false] | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:99:13:99:25 | After ... != ... [true] | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:99:13:99:25 | Before ... != ... | cflow.cs:90:18:90:19 | M3 | | cflow.cs:99:22:99:25 | null | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:100:13:100:41 | After call to method WriteLine | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:100:13:100:41 | Before call to method WriteLine | cflow.cs:90:18:90:19 | M3 | | cflow.cs:100:13:100:41 | call to method WriteLine | cflow.cs:90:18:90:19 | M3 | | cflow.cs:100:13:100:42 | ...; | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:100:13:100:42 | After ...; | cflow.cs:90:18:90:19 | M3 | | cflow.cs:100:31:100:34 | this access | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:100:31:100:40 | After access to field Field | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:100:31:100:40 | Before access to field Field | cflow.cs:90:18:90:19 | M3 | | cflow.cs:100:31:100:40 | access to field Field | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:102:9:103:36 | After if (...) ... | cflow.cs:90:18:90:19 | M3 | | cflow.cs:102:9:103:36 | if (...) ... | cflow.cs:90:18:90:19 | M3 | | cflow.cs:102:13:102:16 | this access | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:102:13:102:21 | After access to property Prop | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:102:13:102:21 | Before access to property Prop | cflow.cs:90:18:90:19 | M3 | | cflow.cs:102:13:102:21 | access to property Prop | cflow.cs:90:18:90:19 | M3 | | cflow.cs:102:13:102:29 | ... != ... | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:102:13:102:29 | After ... != ... [false] | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:102:13:102:29 | After ... != ... [true] | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:102:13:102:29 | Before ... != ... | cflow.cs:90:18:90:19 | M3 | | cflow.cs:102:26:102:29 | null | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:103:13:103:35 | After call to method WriteLine | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:103:13:103:35 | Before call to method WriteLine | cflow.cs:90:18:90:19 | M3 | | cflow.cs:103:13:103:35 | call to method WriteLine | cflow.cs:90:18:90:19 | M3 | | cflow.cs:103:13:103:36 | ...; | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:103:13:103:36 | After ...; | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:103:31:103:34 | After access to property Prop | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:103:31:103:34 | Before access to property Prop | cflow.cs:90:18:90:19 | M3 | | cflow.cs:103:31:103:34 | access to property Prop | cflow.cs:90:18:90:19 | M3 | | cflow.cs:103:31:103:34 | this access | cflow.cs:90:18:90:19 | M3 | -| cflow.cs:106:18:106:19 | enter M4 | cflow.cs:106:18:106:19 | M4 | -| cflow.cs:106:18:106:19 | exit M4 | cflow.cs:106:18:106:19 | M4 | -| cflow.cs:106:18:106:19 | exit M4 (normal) | cflow.cs:106:18:106:19 | M4 | +| cflow.cs:106:18:106:19 | Entry | cflow.cs:106:18:106:19 | M4 | +| cflow.cs:106:18:106:19 | Exit | cflow.cs:106:18:106:19 | M4 | +| cflow.cs:106:18:106:19 | Normal Exit | cflow.cs:106:18:106:19 | M4 | +| cflow.cs:106:28:106:28 | s | cflow.cs:106:18:106:19 | M4 | +| cflow.cs:107:5:117:5 | After {...} | cflow.cs:106:18:106:19 | M4 | | cflow.cs:107:5:117:5 | {...} | cflow.cs:106:18:106:19 | M4 | +| cflow.cs:108:9:115:9 | After if (...) ... | cflow.cs:106:18:106:19 | M4 | | cflow.cs:108:9:115:9 | if (...) ... | cflow.cs:106:18:106:19 | M4 | | cflow.cs:108:13:108:13 | access to parameter s | cflow.cs:106:18:106:19 | M4 | | cflow.cs:108:13:108:21 | ... != ... | cflow.cs:106:18:106:19 | M4 | +| cflow.cs:108:13:108:21 | After ... != ... [false] | cflow.cs:106:18:106:19 | M4 | +| cflow.cs:108:13:108:21 | After ... != ... [true] | cflow.cs:106:18:106:19 | M4 | +| cflow.cs:108:13:108:21 | Before ... != ... | cflow.cs:106:18:106:19 | M4 | | cflow.cs:108:18:108:21 | null | cflow.cs:106:18:106:19 | M4 | | cflow.cs:109:9:115:9 | {...} | cflow.cs:106:18:106:19 | M4 | +| cflow.cs:110:13:113:13 | [LoopHeader] while (...) ... | cflow.cs:106:18:106:19 | M4 | | cflow.cs:110:13:113:13 | while (...) ... | cflow.cs:106:18:106:19 | M4 | +| cflow.cs:110:20:110:23 | After true [true] | cflow.cs:106:18:106:19 | M4 | | cflow.cs:110:20:110:23 | true | cflow.cs:106:18:106:19 | M4 | +| cflow.cs:111:13:113:13 | After {...} | cflow.cs:106:18:106:19 | M4 | | cflow.cs:111:13:113:13 | {...} | cflow.cs:106:18:106:19 | M4 | +| cflow.cs:112:17:112:36 | After call to method WriteLine | cflow.cs:106:18:106:19 | M4 | +| cflow.cs:112:17:112:36 | Before call to method WriteLine | cflow.cs:106:18:106:19 | M4 | | cflow.cs:112:17:112:36 | call to method WriteLine | cflow.cs:106:18:106:19 | M4 | | cflow.cs:112:17:112:37 | ...; | cflow.cs:106:18:106:19 | M4 | +| cflow.cs:112:17:112:37 | After ...; | cflow.cs:106:18:106:19 | M4 | | cflow.cs:112:35:112:35 | access to parameter s | cflow.cs:106:18:106:19 | M4 | +| cflow.cs:116:9:116:28 | After call to method WriteLine | cflow.cs:106:18:106:19 | M4 | +| cflow.cs:116:9:116:28 | Before call to method WriteLine | cflow.cs:106:18:106:19 | M4 | | cflow.cs:116:9:116:28 | call to method WriteLine | cflow.cs:106:18:106:19 | M4 | | cflow.cs:116:9:116:29 | ...; | cflow.cs:106:18:106:19 | M4 | +| cflow.cs:116:9:116:29 | After ...; | cflow.cs:106:18:106:19 | M4 | | cflow.cs:116:27:116:27 | access to parameter s | cflow.cs:106:18:106:19 | M4 | -| cflow.cs:119:20:119:21 | enter M5 | cflow.cs:119:20:119:21 | M5 | -| cflow.cs:119:20:119:21 | exit M5 | cflow.cs:119:20:119:21 | M5 | -| cflow.cs:119:20:119:21 | exit M5 (normal) | cflow.cs:119:20:119:21 | M5 | +| cflow.cs:119:20:119:21 | Entry | cflow.cs:119:20:119:21 | M5 | +| cflow.cs:119:20:119:21 | Exit | cflow.cs:119:20:119:21 | M5 | +| cflow.cs:119:20:119:21 | Normal Exit | cflow.cs:119:20:119:21 | M5 | +| cflow.cs:119:30:119:30 | s | cflow.cs:119:20:119:21 | M5 | | cflow.cs:120:5:124:5 | {...} | cflow.cs:119:20:119:21 | M5 | | cflow.cs:121:9:121:18 | ... ...; | cflow.cs:119:20:119:21 | M5 | +| cflow.cs:121:9:121:18 | After ... ...; | cflow.cs:119:20:119:21 | M5 | +| cflow.cs:121:13:121:13 | access to local variable x | cflow.cs:119:20:119:21 | M5 | +| cflow.cs:121:13:121:17 | After String x = ... | cflow.cs:119:20:119:21 | M5 | +| cflow.cs:121:13:121:17 | Before String x = ... | cflow.cs:119:20:119:21 | M5 | | cflow.cs:121:13:121:17 | String x = ... | cflow.cs:119:20:119:21 | M5 | | cflow.cs:121:17:121:17 | access to parameter s | cflow.cs:119:20:119:21 | M5 | +| cflow.cs:122:9:122:9 | access to local variable x | cflow.cs:119:20:119:21 | M5 | | cflow.cs:122:9:122:19 | ... = ... | cflow.cs:119:20:119:21 | M5 | +| cflow.cs:122:9:122:19 | After ... = ... | cflow.cs:119:20:119:21 | M5 | +| cflow.cs:122:9:122:19 | Before ... = ... | cflow.cs:119:20:119:21 | M5 | | cflow.cs:122:9:122:20 | ...; | cflow.cs:119:20:119:21 | M5 | +| cflow.cs:122:9:122:20 | After ...; | cflow.cs:119:20:119:21 | M5 | | cflow.cs:122:13:122:13 | access to local variable x | cflow.cs:119:20:119:21 | M5 | | cflow.cs:122:13:122:19 | ... + ... | cflow.cs:119:20:119:21 | M5 | +| cflow.cs:122:13:122:19 | After ... + ... | cflow.cs:119:20:119:21 | M5 | +| cflow.cs:122:13:122:19 | Before ... + ... | cflow.cs:119:20:119:21 | M5 | | cflow.cs:122:17:122:19 | " " | cflow.cs:119:20:119:21 | M5 | +| cflow.cs:123:9:123:17 | Before return ...; | cflow.cs:119:20:119:21 | M5 | | cflow.cs:123:9:123:17 | return ...; | cflow.cs:119:20:119:21 | M5 | | cflow.cs:123:16:123:16 | access to local variable x | cflow.cs:119:20:119:21 | M5 | -| cflow.cs:127:19:127:21 | enter get_Prop | cflow.cs:127:19:127:21 | get_Prop | -| cflow.cs:127:19:127:21 | exit get_Prop | cflow.cs:127:19:127:21 | get_Prop | -| cflow.cs:127:19:127:21 | exit get_Prop (normal) | cflow.cs:127:19:127:21 | get_Prop | +| cflow.cs:127:19:127:21 | Entry | cflow.cs:127:19:127:21 | get_Prop | +| cflow.cs:127:19:127:21 | Exit | cflow.cs:127:19:127:21 | get_Prop | +| cflow.cs:127:19:127:21 | Normal Exit | cflow.cs:127:19:127:21 | get_Prop | | cflow.cs:127:23:127:60 | {...} | cflow.cs:127:19:127:21 | get_Prop | +| cflow.cs:127:25:127:58 | Before return ...; | cflow.cs:127:19:127:21 | get_Prop | | cflow.cs:127:25:127:58 | return ...; | cflow.cs:127:19:127:21 | get_Prop | +| cflow.cs:127:32:127:36 | After access to field Field | cflow.cs:127:19:127:21 | get_Prop | +| cflow.cs:127:32:127:36 | Before access to field Field | cflow.cs:127:19:127:21 | get_Prop | | cflow.cs:127:32:127:36 | access to field Field | cflow.cs:127:19:127:21 | get_Prop | | cflow.cs:127:32:127:36 | this access | cflow.cs:127:19:127:21 | get_Prop | | cflow.cs:127:32:127:44 | ... == ... | cflow.cs:127:19:127:21 | get_Prop | +| cflow.cs:127:32:127:44 | After ... == ... [false] | cflow.cs:127:19:127:21 | get_Prop | +| cflow.cs:127:32:127:44 | After ... == ... [true] | cflow.cs:127:19:127:21 | get_Prop | +| cflow.cs:127:32:127:44 | Before ... == ... | cflow.cs:127:19:127:21 | get_Prop | | cflow.cs:127:32:127:57 | ... ? ... : ... | cflow.cs:127:19:127:21 | get_Prop | +| cflow.cs:127:32:127:57 | After ... ? ... : ... | cflow.cs:127:19:127:21 | get_Prop | | cflow.cs:127:41:127:44 | null | cflow.cs:127:19:127:21 | get_Prop | | cflow.cs:127:48:127:49 | "" | cflow.cs:127:19:127:21 | get_Prop | +| cflow.cs:127:53:127:57 | After access to field Field | cflow.cs:127:19:127:21 | get_Prop | +| cflow.cs:127:53:127:57 | Before access to field Field | cflow.cs:127:19:127:21 | get_Prop | | cflow.cs:127:53:127:57 | access to field Field | cflow.cs:127:19:127:21 | get_Prop | | cflow.cs:127:53:127:57 | this access | cflow.cs:127:19:127:21 | get_Prop | -| cflow.cs:127:62:127:64 | enter set_Prop | cflow.cs:127:62:127:64 | set_Prop | -| cflow.cs:127:62:127:64 | exit set_Prop | cflow.cs:127:62:127:64 | set_Prop | -| cflow.cs:127:62:127:64 | exit set_Prop (normal) | cflow.cs:127:62:127:64 | set_Prop | +| cflow.cs:127:62:127:64 | Entry | cflow.cs:127:62:127:64 | set_Prop | +| cflow.cs:127:62:127:64 | Exit | cflow.cs:127:62:127:64 | set_Prop | +| cflow.cs:127:62:127:64 | Normal Exit | cflow.cs:127:62:127:64 | set_Prop | +| cflow.cs:127:62:127:64 | value | cflow.cs:127:62:127:64 | set_Prop | +| cflow.cs:127:66:127:83 | After {...} | cflow.cs:127:62:127:64 | set_Prop | | cflow.cs:127:66:127:83 | {...} | cflow.cs:127:62:127:64 | set_Prop | +| cflow.cs:127:68:127:72 | After access to field Field | cflow.cs:127:62:127:64 | set_Prop | +| cflow.cs:127:68:127:72 | Before access to field Field | cflow.cs:127:62:127:64 | set_Prop | | cflow.cs:127:68:127:72 | access to field Field | cflow.cs:127:62:127:64 | set_Prop | | cflow.cs:127:68:127:72 | this access | cflow.cs:127:62:127:64 | set_Prop | | cflow.cs:127:68:127:80 | ... = ... | cflow.cs:127:62:127:64 | set_Prop | +| cflow.cs:127:68:127:80 | After ... = ... | cflow.cs:127:62:127:64 | set_Prop | +| cflow.cs:127:68:127:80 | Before ... = ... | cflow.cs:127:62:127:64 | set_Prop | | cflow.cs:127:68:127:81 | ...; | cflow.cs:127:62:127:64 | set_Prop | +| cflow.cs:127:68:127:81 | After ...; | cflow.cs:127:62:127:64 | set_Prop | | cflow.cs:127:76:127:80 | access to parameter value | cflow.cs:127:62:127:64 | set_Prop | +| cflow.cs:129:5:129:15 | After call to constructor Object | cflow.cs:129:5:129:15 | ControlFlow | +| cflow.cs:129:5:129:15 | After call to method | cflow.cs:129:5:129:15 | ControlFlow | +| cflow.cs:129:5:129:15 | Before call to constructor Object | cflow.cs:129:5:129:15 | ControlFlow | +| cflow.cs:129:5:129:15 | Before call to method | cflow.cs:129:5:129:15 | ControlFlow | +| cflow.cs:129:5:129:15 | Entry | cflow.cs:129:5:129:15 | ControlFlow | +| cflow.cs:129:5:129:15 | Exit | cflow.cs:129:5:129:15 | ControlFlow | +| cflow.cs:129:5:129:15 | Normal Exit | cflow.cs:129:5:129:15 | ControlFlow | | cflow.cs:129:5:129:15 | call to constructor Object | cflow.cs:129:5:129:15 | ControlFlow | | cflow.cs:129:5:129:15 | call to method | cflow.cs:129:5:129:15 | ControlFlow | -| cflow.cs:129:5:129:15 | enter ControlFlow | cflow.cs:129:5:129:15 | ControlFlow | -| cflow.cs:129:5:129:15 | exit ControlFlow | cflow.cs:129:5:129:15 | ControlFlow | -| cflow.cs:129:5:129:15 | exit ControlFlow (normal) | cflow.cs:129:5:129:15 | ControlFlow | | cflow.cs:129:5:129:15 | this access | cflow.cs:129:5:129:15 | ControlFlow | +| cflow.cs:129:24:129:24 | s | cflow.cs:129:5:129:15 | ControlFlow | +| cflow.cs:130:5:132:5 | After {...} | cflow.cs:129:5:129:15 | ControlFlow | | cflow.cs:130:5:132:5 | {...} | cflow.cs:129:5:129:15 | ControlFlow | +| cflow.cs:131:9:131:13 | After access to field Field | cflow.cs:129:5:129:15 | ControlFlow | +| cflow.cs:131:9:131:13 | Before access to field Field | cflow.cs:129:5:129:15 | ControlFlow | | cflow.cs:131:9:131:13 | access to field Field | cflow.cs:129:5:129:15 | ControlFlow | | cflow.cs:131:9:131:13 | this access | cflow.cs:129:5:129:15 | ControlFlow | | cflow.cs:131:9:131:17 | ... = ... | cflow.cs:129:5:129:15 | ControlFlow | +| cflow.cs:131:9:131:17 | After ... = ... | cflow.cs:129:5:129:15 | ControlFlow | +| cflow.cs:131:9:131:17 | Before ... = ... | cflow.cs:129:5:129:15 | ControlFlow | | cflow.cs:131:9:131:18 | ...; | cflow.cs:129:5:129:15 | ControlFlow | +| cflow.cs:131:9:131:18 | After ...; | cflow.cs:129:5:129:15 | ControlFlow | | cflow.cs:131:17:131:17 | access to parameter s | cflow.cs:129:5:129:15 | ControlFlow | -| cflow.cs:134:5:134:15 | enter ControlFlow | cflow.cs:134:5:134:15 | ControlFlow | -| cflow.cs:134:5:134:15 | exit ControlFlow | cflow.cs:134:5:134:15 | ControlFlow | -| cflow.cs:134:5:134:15 | exit ControlFlow (normal) | cflow.cs:134:5:134:15 | ControlFlow | +| cflow.cs:134:5:134:15 | Entry | cflow.cs:134:5:134:15 | ControlFlow | +| cflow.cs:134:5:134:15 | Exit | cflow.cs:134:5:134:15 | ControlFlow | +| cflow.cs:134:5:134:15 | Normal Exit | cflow.cs:134:5:134:15 | ControlFlow | +| cflow.cs:134:21:134:21 | i | cflow.cs:134:5:134:15 | ControlFlow | +| cflow.cs:134:26:134:29 | After call to constructor ControlFlow | cflow.cs:134:5:134:15 | ControlFlow | +| cflow.cs:134:26:134:29 | Before call to constructor ControlFlow | cflow.cs:134:5:134:15 | ControlFlow | | cflow.cs:134:26:134:29 | call to constructor ControlFlow | cflow.cs:134:5:134:15 | ControlFlow | | cflow.cs:134:31:134:31 | (...) ... | cflow.cs:134:5:134:15 | ControlFlow | +| cflow.cs:134:31:134:31 | After (...) ... | cflow.cs:134:5:134:15 | ControlFlow | +| cflow.cs:134:31:134:31 | Before (...) ... | cflow.cs:134:5:134:15 | ControlFlow | | cflow.cs:134:31:134:31 | access to parameter i | cflow.cs:134:5:134:15 | ControlFlow | | cflow.cs:134:31:134:36 | ... + ... | cflow.cs:134:5:134:15 | ControlFlow | +| cflow.cs:134:31:134:36 | After ... + ... | cflow.cs:134:5:134:15 | ControlFlow | +| cflow.cs:134:31:134:36 | Before ... + ... | cflow.cs:134:5:134:15 | ControlFlow | | cflow.cs:134:35:134:36 | "" | cflow.cs:134:5:134:15 | ControlFlow | | cflow.cs:134:39:134:41 | {...} | cflow.cs:134:5:134:15 | ControlFlow | -| cflow.cs:136:12:136:22 | enter ControlFlow | cflow.cs:136:12:136:22 | ControlFlow | -| cflow.cs:136:12:136:22 | exit ControlFlow | cflow.cs:136:12:136:22 | ControlFlow | -| cflow.cs:136:12:136:22 | exit ControlFlow (normal) | cflow.cs:136:12:136:22 | ControlFlow | +| cflow.cs:136:12:136:22 | Entry | cflow.cs:136:12:136:22 | ControlFlow | +| cflow.cs:136:12:136:22 | Exit | cflow.cs:136:12:136:22 | ControlFlow | +| cflow.cs:136:12:136:22 | Normal Exit | cflow.cs:136:12:136:22 | ControlFlow | +| cflow.cs:136:28:136:31 | After call to constructor ControlFlow | cflow.cs:136:12:136:22 | ControlFlow | +| cflow.cs:136:28:136:31 | Before call to constructor ControlFlow | cflow.cs:136:12:136:22 | ControlFlow | | cflow.cs:136:28:136:31 | call to constructor ControlFlow | cflow.cs:136:12:136:22 | ControlFlow | | cflow.cs:136:33:136:33 | 0 | cflow.cs:136:12:136:22 | ControlFlow | | cflow.cs:136:33:136:37 | ... + ... | cflow.cs:136:12:136:22 | ControlFlow | +| cflow.cs:136:33:136:37 | After ... + ... | cflow.cs:136:12:136:22 | ControlFlow | +| cflow.cs:136:33:136:37 | Before ... + ... | cflow.cs:136:12:136:22 | ControlFlow | | cflow.cs:136:37:136:37 | 1 | cflow.cs:136:12:136:22 | ControlFlow | | cflow.cs:136:40:136:42 | {...} | cflow.cs:136:12:136:22 | ControlFlow | -| cflow.cs:138:40:138:40 | enter + | cflow.cs:138:40:138:40 | + | -| cflow.cs:138:40:138:40 | exit + | cflow.cs:138:40:138:40 | + | -| cflow.cs:138:40:138:40 | exit + (normal) | cflow.cs:138:40:138:40 | + | +| cflow.cs:138:40:138:40 | Entry | cflow.cs:138:40:138:40 | + | +| cflow.cs:138:40:138:40 | Exit | cflow.cs:138:40:138:40 | + | +| cflow.cs:138:40:138:40 | Normal Exit | cflow.cs:138:40:138:40 | + | +| cflow.cs:138:54:138:54 | x | cflow.cs:138:40:138:40 | + | +| cflow.cs:138:69:138:69 | y | cflow.cs:138:40:138:40 | + | | cflow.cs:139:5:142:5 | {...} | cflow.cs:138:40:138:40 | + | +| cflow.cs:140:9:140:28 | After call to method WriteLine | cflow.cs:138:40:138:40 | + | +| cflow.cs:140:9:140:28 | Before call to method WriteLine | cflow.cs:138:40:138:40 | + | | cflow.cs:140:9:140:28 | call to method WriteLine | cflow.cs:138:40:138:40 | + | | cflow.cs:140:9:140:29 | ...; | cflow.cs:138:40:138:40 | + | +| cflow.cs:140:9:140:29 | After ...; | cflow.cs:138:40:138:40 | + | | cflow.cs:140:27:140:27 | access to parameter x | cflow.cs:138:40:138:40 | + | +| cflow.cs:141:9:141:17 | Before return ...; | cflow.cs:138:40:138:40 | + | | cflow.cs:141:9:141:17 | return ...; | cflow.cs:138:40:138:40 | + | | cflow.cs:141:16:141:16 | access to parameter y | cflow.cs:138:40:138:40 | + | -| cflow.cs:144:33:144:35 | enter get_Item | cflow.cs:144:33:144:35 | get_Item | -| cflow.cs:144:33:144:35 | exit get_Item | cflow.cs:144:33:144:35 | get_Item | -| cflow.cs:144:33:144:35 | exit get_Item (normal) | cflow.cs:144:33:144:35 | get_Item | +| cflow.cs:144:28:144:28 | i | cflow.cs:144:33:144:35 | get_Item | +| cflow.cs:144:28:144:28 | i | cflow.cs:144:56:144:58 | set_Item | +| cflow.cs:144:33:144:35 | Entry | cflow.cs:144:33:144:35 | get_Item | +| cflow.cs:144:33:144:35 | Exit | cflow.cs:144:33:144:35 | get_Item | +| cflow.cs:144:33:144:35 | Normal Exit | cflow.cs:144:33:144:35 | get_Item | | cflow.cs:144:37:144:54 | {...} | cflow.cs:144:33:144:35 | get_Item | +| cflow.cs:144:39:144:52 | Before return ...; | cflow.cs:144:33:144:35 | get_Item | | cflow.cs:144:39:144:52 | return ...; | cflow.cs:144:33:144:35 | get_Item | | cflow.cs:144:46:144:46 | (...) ... | cflow.cs:144:33:144:35 | get_Item | +| cflow.cs:144:46:144:46 | After (...) ... | cflow.cs:144:33:144:35 | get_Item | +| cflow.cs:144:46:144:46 | Before (...) ... | cflow.cs:144:33:144:35 | get_Item | | cflow.cs:144:46:144:46 | access to parameter i | cflow.cs:144:33:144:35 | get_Item | | cflow.cs:144:46:144:51 | ... + ... | cflow.cs:144:33:144:35 | get_Item | +| cflow.cs:144:46:144:51 | After ... + ... | cflow.cs:144:33:144:35 | get_Item | +| cflow.cs:144:46:144:51 | Before ... + ... | cflow.cs:144:33:144:35 | get_Item | | cflow.cs:144:50:144:51 | "" | cflow.cs:144:33:144:35 | get_Item | -| cflow.cs:144:56:144:58 | enter set_Item | cflow.cs:144:56:144:58 | set_Item | -| cflow.cs:144:56:144:58 | exit set_Item | cflow.cs:144:56:144:58 | set_Item | -| cflow.cs:144:56:144:58 | exit set_Item (normal) | cflow.cs:144:56:144:58 | set_Item | +| cflow.cs:144:56:144:58 | Entry | cflow.cs:144:56:144:58 | set_Item | +| cflow.cs:144:56:144:58 | Exit | cflow.cs:144:56:144:58 | set_Item | +| cflow.cs:144:56:144:58 | Normal Exit | cflow.cs:144:56:144:58 | set_Item | +| cflow.cs:144:56:144:58 | value | cflow.cs:144:56:144:58 | set_Item | | cflow.cs:144:60:144:62 | {...} | cflow.cs:144:56:144:58 | set_Item | -| cflow.cs:146:10:146:12 | enter For | cflow.cs:146:10:146:12 | For | -| cflow.cs:146:10:146:12 | exit For | cflow.cs:146:10:146:12 | For | -| cflow.cs:146:10:146:12 | exit For (normal) | cflow.cs:146:10:146:12 | For | +| cflow.cs:146:10:146:12 | Entry | cflow.cs:146:10:146:12 | For | +| cflow.cs:146:10:146:12 | Exit | cflow.cs:146:10:146:12 | For | +| cflow.cs:146:10:146:12 | Normal Exit | cflow.cs:146:10:146:12 | For | +| cflow.cs:147:5:177:5 | After {...} | cflow.cs:146:10:146:12 | For | | cflow.cs:147:5:177:5 | {...} | cflow.cs:146:10:146:12 | For | | cflow.cs:148:9:148:18 | ... ...; | cflow.cs:146:10:146:12 | For | +| cflow.cs:148:9:148:18 | After ... ...; | cflow.cs:146:10:146:12 | For | +| cflow.cs:148:13:148:13 | access to local variable x | cflow.cs:146:10:146:12 | For | +| cflow.cs:148:13:148:17 | After Int32 x = ... | cflow.cs:146:10:146:12 | For | +| cflow.cs:148:13:148:17 | Before Int32 x = ... | cflow.cs:146:10:146:12 | For | | cflow.cs:148:13:148:17 | Int32 x = ... | cflow.cs:146:10:146:12 | For | | cflow.cs:148:17:148:17 | 0 | cflow.cs:146:10:146:12 | For | +| cflow.cs:149:9:150:33 | After for (...;...;...) ... | cflow.cs:146:10:146:12 | For | +| cflow.cs:149:9:150:33 | [LoopHeader] for (...;...;...) ... | cflow.cs:146:10:146:12 | For | | cflow.cs:149:9:150:33 | for (...;...;...) ... | cflow.cs:146:10:146:12 | For | | cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:146:10:146:12 | For | | cflow.cs:149:16:149:21 | ... < ... | cflow.cs:146:10:146:12 | For | +| cflow.cs:149:16:149:21 | After ... < ... [false] | cflow.cs:146:10:146:12 | For | +| cflow.cs:149:16:149:21 | After ... < ... [true] | cflow.cs:146:10:146:12 | For | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:146:10:146:12 | For | | cflow.cs:149:20:149:21 | 10 | cflow.cs:146:10:146:12 | For | | cflow.cs:149:24:149:26 | ++... | cflow.cs:146:10:146:12 | For | +| cflow.cs:149:24:149:26 | After ++... | cflow.cs:146:10:146:12 | For | +| cflow.cs:149:24:149:26 | Before ++... | cflow.cs:146:10:146:12 | For | | cflow.cs:149:26:149:26 | access to local variable x | cflow.cs:146:10:146:12 | For | +| cflow.cs:150:13:150:32 | After call to method WriteLine | cflow.cs:146:10:146:12 | For | +| cflow.cs:150:13:150:32 | Before call to method WriteLine | cflow.cs:146:10:146:12 | For | | cflow.cs:150:13:150:32 | call to method WriteLine | cflow.cs:146:10:146:12 | For | | cflow.cs:150:13:150:33 | ...; | cflow.cs:146:10:146:12 | For | +| cflow.cs:150:13:150:33 | After ...; | cflow.cs:146:10:146:12 | For | | cflow.cs:150:31:150:31 | access to local variable x | cflow.cs:146:10:146:12 | For | +| cflow.cs:152:9:157:9 | After for (...;...;...) ... | cflow.cs:146:10:146:12 | For | +| cflow.cs:152:9:157:9 | [LoopHeader] for (...;...;...) ... | cflow.cs:146:10:146:12 | For | | cflow.cs:152:9:157:9 | for (...;...;...) ... | cflow.cs:146:10:146:12 | For | | cflow.cs:152:18:152:18 | access to local variable x | cflow.cs:146:10:146:12 | For | | cflow.cs:152:18:152:20 | ...++ | cflow.cs:146:10:146:12 | For | +| cflow.cs:152:18:152:20 | After ...++ | cflow.cs:146:10:146:12 | For | +| cflow.cs:152:18:152:20 | Before ...++ | cflow.cs:146:10:146:12 | For | +| cflow.cs:153:9:157:9 | After {...} | cflow.cs:146:10:146:12 | For | | cflow.cs:153:9:157:9 | {...} | cflow.cs:146:10:146:12 | For | +| cflow.cs:154:13:154:32 | After call to method WriteLine | cflow.cs:146:10:146:12 | For | +| cflow.cs:154:13:154:32 | Before call to method WriteLine | cflow.cs:146:10:146:12 | For | | cflow.cs:154:13:154:32 | call to method WriteLine | cflow.cs:146:10:146:12 | For | | cflow.cs:154:13:154:33 | ...; | cflow.cs:146:10:146:12 | For | +| cflow.cs:154:13:154:33 | After ...; | cflow.cs:146:10:146:12 | For | | cflow.cs:154:31:154:31 | access to local variable x | cflow.cs:146:10:146:12 | For | +| cflow.cs:155:13:156:22 | After if (...) ... | cflow.cs:146:10:146:12 | For | | cflow.cs:155:13:156:22 | if (...) ... | cflow.cs:146:10:146:12 | For | | cflow.cs:155:17:155:17 | access to local variable x | cflow.cs:146:10:146:12 | For | | cflow.cs:155:17:155:22 | ... > ... | cflow.cs:146:10:146:12 | For | +| cflow.cs:155:17:155:22 | After ... > ... [false] | cflow.cs:146:10:146:12 | For | +| cflow.cs:155:17:155:22 | After ... > ... [true] | cflow.cs:146:10:146:12 | For | +| cflow.cs:155:17:155:22 | Before ... > ... | cflow.cs:146:10:146:12 | For | | cflow.cs:155:21:155:22 | 20 | cflow.cs:146:10:146:12 | For | +| cflow.cs:156:17:156:22 | Before break; | cflow.cs:146:10:146:12 | For | | cflow.cs:156:17:156:22 | break; | cflow.cs:146:10:146:12 | For | +| cflow.cs:159:9:165:9 | After for (...;...;...) ... | cflow.cs:146:10:146:12 | For | +| cflow.cs:159:9:165:9 | [LoopHeader] for (...;...;...) ... | cflow.cs:146:10:146:12 | For | | cflow.cs:159:9:165:9 | for (...;...;...) ... | cflow.cs:146:10:146:12 | For | +| cflow.cs:160:9:165:9 | After {...} | cflow.cs:146:10:146:12 | For | | cflow.cs:160:9:165:9 | {...} | cflow.cs:146:10:146:12 | For | +| cflow.cs:161:13:161:32 | After call to method WriteLine | cflow.cs:146:10:146:12 | For | +| cflow.cs:161:13:161:32 | Before call to method WriteLine | cflow.cs:146:10:146:12 | For | | cflow.cs:161:13:161:32 | call to method WriteLine | cflow.cs:146:10:146:12 | For | | cflow.cs:161:13:161:33 | ...; | cflow.cs:146:10:146:12 | For | +| cflow.cs:161:13:161:33 | After ...; | cflow.cs:146:10:146:12 | For | | cflow.cs:161:31:161:31 | access to local variable x | cflow.cs:146:10:146:12 | For | | cflow.cs:162:13:162:13 | access to local variable x | cflow.cs:146:10:146:12 | For | | cflow.cs:162:13:162:15 | ...++ | cflow.cs:146:10:146:12 | For | +| cflow.cs:162:13:162:15 | After ...++ | cflow.cs:146:10:146:12 | For | +| cflow.cs:162:13:162:15 | Before ...++ | cflow.cs:146:10:146:12 | For | | cflow.cs:162:13:162:16 | ...; | cflow.cs:146:10:146:12 | For | +| cflow.cs:162:13:162:16 | After ...; | cflow.cs:146:10:146:12 | For | +| cflow.cs:163:13:164:22 | After if (...) ... | cflow.cs:146:10:146:12 | For | | cflow.cs:163:13:164:22 | if (...) ... | cflow.cs:146:10:146:12 | For | | cflow.cs:163:17:163:17 | access to local variable x | cflow.cs:146:10:146:12 | For | | cflow.cs:163:17:163:22 | ... > ... | cflow.cs:146:10:146:12 | For | +| cflow.cs:163:17:163:22 | After ... > ... [false] | cflow.cs:146:10:146:12 | For | +| cflow.cs:163:17:163:22 | After ... > ... [true] | cflow.cs:146:10:146:12 | For | +| cflow.cs:163:17:163:22 | Before ... > ... | cflow.cs:146:10:146:12 | For | | cflow.cs:163:21:163:22 | 30 | cflow.cs:146:10:146:12 | For | +| cflow.cs:164:17:164:22 | Before break; | cflow.cs:146:10:146:12 | For | | cflow.cs:164:17:164:22 | break; | cflow.cs:146:10:146:12 | For | +| cflow.cs:167:9:171:9 | After for (...;...;...) ... | cflow.cs:146:10:146:12 | For | +| cflow.cs:167:9:171:9 | [LoopHeader] for (...;...;...) ... | cflow.cs:146:10:146:12 | For | | cflow.cs:167:9:171:9 | for (...;...;...) ... | cflow.cs:146:10:146:12 | For | | cflow.cs:167:16:167:16 | access to local variable x | cflow.cs:146:10:146:12 | For | | cflow.cs:167:16:167:21 | ... < ... | cflow.cs:146:10:146:12 | For | +| cflow.cs:167:16:167:21 | After ... < ... [false] | cflow.cs:146:10:146:12 | For | +| cflow.cs:167:16:167:21 | After ... < ... [true] | cflow.cs:146:10:146:12 | For | +| cflow.cs:167:16:167:21 | Before ... < ... | cflow.cs:146:10:146:12 | For | | cflow.cs:167:20:167:21 | 40 | cflow.cs:146:10:146:12 | For | +| cflow.cs:168:9:171:9 | After {...} | cflow.cs:146:10:146:12 | For | | cflow.cs:168:9:171:9 | {...} | cflow.cs:146:10:146:12 | For | +| cflow.cs:169:13:169:32 | After call to method WriteLine | cflow.cs:146:10:146:12 | For | +| cflow.cs:169:13:169:32 | Before call to method WriteLine | cflow.cs:146:10:146:12 | For | | cflow.cs:169:13:169:32 | call to method WriteLine | cflow.cs:146:10:146:12 | For | | cflow.cs:169:13:169:33 | ...; | cflow.cs:146:10:146:12 | For | +| cflow.cs:169:13:169:33 | After ...; | cflow.cs:146:10:146:12 | For | | cflow.cs:169:31:169:31 | access to local variable x | cflow.cs:146:10:146:12 | For | | cflow.cs:170:13:170:13 | access to local variable x | cflow.cs:146:10:146:12 | For | | cflow.cs:170:13:170:15 | ...++ | cflow.cs:146:10:146:12 | For | +| cflow.cs:170:13:170:15 | After ...++ | cflow.cs:146:10:146:12 | For | +| cflow.cs:170:13:170:15 | Before ...++ | cflow.cs:146:10:146:12 | For | | cflow.cs:170:13:170:16 | ...; | cflow.cs:146:10:146:12 | For | +| cflow.cs:170:13:170:16 | After ...; | cflow.cs:146:10:146:12 | For | +| cflow.cs:173:9:176:9 | After for (...;...;...) ... | cflow.cs:146:10:146:12 | For | +| cflow.cs:173:9:176:9 | [LoopHeader] for (...;...;...) ... | cflow.cs:146:10:146:12 | For | | cflow.cs:173:9:176:9 | for (...;...;...) ... | cflow.cs:146:10:146:12 | For | +| cflow.cs:173:18:173:18 | access to local variable i | cflow.cs:146:10:146:12 | For | +| cflow.cs:173:18:173:22 | After Int32 i = ... | cflow.cs:146:10:146:12 | For | +| cflow.cs:173:18:173:22 | Before Int32 i = ... | cflow.cs:146:10:146:12 | For | | cflow.cs:173:18:173:22 | Int32 i = ... | cflow.cs:146:10:146:12 | For | | cflow.cs:173:22:173:22 | 0 | cflow.cs:146:10:146:12 | For | +| cflow.cs:173:25:173:25 | access to local variable j | cflow.cs:146:10:146:12 | For | +| cflow.cs:173:25:173:29 | After Int32 j = ... | cflow.cs:146:10:146:12 | For | +| cflow.cs:173:25:173:29 | Before Int32 j = ... | cflow.cs:146:10:146:12 | For | | cflow.cs:173:25:173:29 | Int32 j = ... | cflow.cs:146:10:146:12 | For | | cflow.cs:173:29:173:29 | 0 | cflow.cs:146:10:146:12 | For | | cflow.cs:173:32:173:32 | access to local variable i | cflow.cs:146:10:146:12 | For | | cflow.cs:173:32:173:36 | ... + ... | cflow.cs:146:10:146:12 | For | +| cflow.cs:173:32:173:36 | After ... + ... | cflow.cs:146:10:146:12 | For | +| cflow.cs:173:32:173:36 | Before ... + ... | cflow.cs:146:10:146:12 | For | | cflow.cs:173:32:173:41 | ... < ... | cflow.cs:146:10:146:12 | For | +| cflow.cs:173:32:173:41 | After ... < ... [false] | cflow.cs:146:10:146:12 | For | +| cflow.cs:173:32:173:41 | After ... < ... [true] | cflow.cs:146:10:146:12 | For | +| cflow.cs:173:32:173:41 | Before ... < ... | cflow.cs:146:10:146:12 | For | | cflow.cs:173:36:173:36 | access to local variable j | cflow.cs:146:10:146:12 | For | | cflow.cs:173:40:173:41 | 10 | cflow.cs:146:10:146:12 | For | | cflow.cs:173:44:173:44 | access to local variable i | cflow.cs:146:10:146:12 | For | | cflow.cs:173:44:173:46 | ...++ | cflow.cs:146:10:146:12 | For | +| cflow.cs:173:44:173:46 | After ...++ | cflow.cs:146:10:146:12 | For | +| cflow.cs:173:44:173:46 | Before ...++ | cflow.cs:146:10:146:12 | For | | cflow.cs:173:49:173:49 | access to local variable j | cflow.cs:146:10:146:12 | For | | cflow.cs:173:49:173:51 | ...++ | cflow.cs:146:10:146:12 | For | +| cflow.cs:173:49:173:51 | After ...++ | cflow.cs:146:10:146:12 | For | +| cflow.cs:173:49:173:51 | Before ...++ | cflow.cs:146:10:146:12 | For | +| cflow.cs:174:9:176:9 | After {...} | cflow.cs:146:10:146:12 | For | | cflow.cs:174:9:176:9 | {...} | cflow.cs:146:10:146:12 | For | +| cflow.cs:175:13:175:36 | After call to method WriteLine | cflow.cs:146:10:146:12 | For | +| cflow.cs:175:13:175:36 | Before call to method WriteLine | cflow.cs:146:10:146:12 | For | | cflow.cs:175:13:175:36 | call to method WriteLine | cflow.cs:146:10:146:12 | For | | cflow.cs:175:13:175:37 | ...; | cflow.cs:146:10:146:12 | For | +| cflow.cs:175:13:175:37 | After ...; | cflow.cs:146:10:146:12 | For | | cflow.cs:175:31:175:31 | access to local variable i | cflow.cs:146:10:146:12 | For | | cflow.cs:175:31:175:35 | ... + ... | cflow.cs:146:10:146:12 | For | +| cflow.cs:175:31:175:35 | After ... + ... | cflow.cs:146:10:146:12 | For | +| cflow.cs:175:31:175:35 | Before ... + ... | cflow.cs:146:10:146:12 | For | | cflow.cs:175:35:175:35 | access to local variable j | cflow.cs:146:10:146:12 | For | -| cflow.cs:179:10:179:16 | enter Lambdas | cflow.cs:179:10:179:16 | Lambdas | -| cflow.cs:179:10:179:16 | exit Lambdas | cflow.cs:179:10:179:16 | Lambdas | -| cflow.cs:179:10:179:16 | exit Lambdas (normal) | cflow.cs:179:10:179:16 | Lambdas | +| cflow.cs:179:10:179:16 | Entry | cflow.cs:179:10:179:16 | Lambdas | +| cflow.cs:179:10:179:16 | Exit | cflow.cs:179:10:179:16 | Lambdas | +| cflow.cs:179:10:179:16 | Normal Exit | cflow.cs:179:10:179:16 | Lambdas | +| cflow.cs:180:5:183:5 | After {...} | cflow.cs:179:10:179:16 | Lambdas | | cflow.cs:180:5:183:5 | {...} | cflow.cs:179:10:179:16 | Lambdas | | cflow.cs:181:9:181:38 | ... ...; | cflow.cs:179:10:179:16 | Lambdas | +| cflow.cs:181:9:181:38 | After ... ...; | cflow.cs:179:10:179:16 | Lambdas | +| cflow.cs:181:24:181:24 | access to local variable y | cflow.cs:179:10:179:16 | Lambdas | +| cflow.cs:181:24:181:37 | After Func y = ... | cflow.cs:179:10:179:16 | Lambdas | +| cflow.cs:181:24:181:37 | Before Func y = ... | cflow.cs:179:10:179:16 | Lambdas | | cflow.cs:181:24:181:37 | Func y = ... | cflow.cs:179:10:179:16 | Lambdas | +| cflow.cs:181:28:181:28 | x | cflow.cs:181:28:181:37 | (...) => ... | | cflow.cs:181:28:181:37 | (...) => ... | cflow.cs:179:10:179:16 | Lambdas | -| cflow.cs:181:28:181:37 | enter (...) => ... | cflow.cs:181:28:181:37 | (...) => ... | -| cflow.cs:181:28:181:37 | exit (...) => ... | cflow.cs:181:28:181:37 | (...) => ... | -| cflow.cs:181:28:181:37 | exit (...) => ... (normal) | cflow.cs:181:28:181:37 | (...) => ... | +| cflow.cs:181:28:181:37 | Entry | cflow.cs:181:28:181:37 | (...) => ... | +| cflow.cs:181:28:181:37 | Exit | cflow.cs:181:28:181:37 | (...) => ... | +| cflow.cs:181:28:181:37 | Normal Exit | cflow.cs:181:28:181:37 | (...) => ... | | cflow.cs:181:33:181:33 | access to parameter x | cflow.cs:181:28:181:37 | (...) => ... | | cflow.cs:181:33:181:37 | ... + ... | cflow.cs:181:28:181:37 | (...) => ... | +| cflow.cs:181:33:181:37 | After ... + ... | cflow.cs:181:28:181:37 | (...) => ... | +| cflow.cs:181:33:181:37 | Before ... + ... | cflow.cs:181:28:181:37 | (...) => ... | | cflow.cs:181:37:181:37 | 1 | cflow.cs:181:28:181:37 | (...) => ... | | cflow.cs:182:9:182:62 | ... ...; | cflow.cs:179:10:179:16 | Lambdas | +| cflow.cs:182:9:182:62 | After ... ...; | cflow.cs:179:10:179:16 | Lambdas | +| cflow.cs:182:24:182:24 | access to local variable z | cflow.cs:179:10:179:16 | Lambdas | +| cflow.cs:182:24:182:61 | After Func z = ... | cflow.cs:179:10:179:16 | Lambdas | +| cflow.cs:182:24:182:61 | Before Func z = ... | cflow.cs:179:10:179:16 | Lambdas | | cflow.cs:182:24:182:61 | Func z = ... | cflow.cs:179:10:179:16 | Lambdas | +| cflow.cs:182:28:182:61 | Entry | cflow.cs:182:28:182:61 | delegate(...) { ... } | +| cflow.cs:182:28:182:61 | Exit | cflow.cs:182:28:182:61 | delegate(...) { ... } | +| cflow.cs:182:28:182:61 | Normal Exit | cflow.cs:182:28:182:61 | delegate(...) { ... } | | cflow.cs:182:28:182:61 | delegate(...) { ... } | cflow.cs:179:10:179:16 | Lambdas | -| cflow.cs:182:28:182:61 | enter delegate(...) { ... } | cflow.cs:182:28:182:61 | delegate(...) { ... } | -| cflow.cs:182:28:182:61 | exit delegate(...) { ... } | cflow.cs:182:28:182:61 | delegate(...) { ... } | -| cflow.cs:182:28:182:61 | exit delegate(...) { ... } (normal) | cflow.cs:182:28:182:61 | delegate(...) { ... } | +| cflow.cs:182:42:182:42 | x | cflow.cs:182:28:182:61 | delegate(...) { ... } | | cflow.cs:182:45:182:61 | {...} | cflow.cs:182:28:182:61 | delegate(...) { ... } | +| cflow.cs:182:47:182:59 | Before return ...; | cflow.cs:182:28:182:61 | delegate(...) { ... } | | cflow.cs:182:47:182:59 | return ...; | cflow.cs:182:28:182:61 | delegate(...) { ... } | | cflow.cs:182:54:182:54 | access to parameter x | cflow.cs:182:28:182:61 | delegate(...) { ... } | | cflow.cs:182:54:182:58 | ... + ... | cflow.cs:182:28:182:61 | delegate(...) { ... } | +| cflow.cs:182:54:182:58 | After ... + ... | cflow.cs:182:28:182:61 | delegate(...) { ... } | +| cflow.cs:182:54:182:58 | Before ... + ... | cflow.cs:182:28:182:61 | delegate(...) { ... } | | cflow.cs:182:58:182:58 | 1 | cflow.cs:182:28:182:61 | delegate(...) { ... } | -| cflow.cs:185:10:185:18 | enter LogicalOr | cflow.cs:185:10:185:18 | LogicalOr | -| cflow.cs:185:10:185:18 | exit LogicalOr | cflow.cs:185:10:185:18 | LogicalOr | -| cflow.cs:185:10:185:18 | exit LogicalOr (normal) | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:185:10:185:18 | Entry | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:185:10:185:18 | Exit | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:185:10:185:18 | Normal Exit | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:186:5:191:5 | After {...} | cflow.cs:185:10:185:18 | LogicalOr | | cflow.cs:186:5:191:5 | {...} | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:187:9:190:52 | After if (...) ... | cflow.cs:185:10:185:18 | LogicalOr | | cflow.cs:187:9:190:52 | if (...) ... | cflow.cs:185:10:185:18 | LogicalOr | | cflow.cs:187:13:187:13 | 1 | cflow.cs:185:10:185:18 | LogicalOr | | cflow.cs:187:13:187:18 | ... == ... | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:187:13:187:18 | After ... == ... [false] | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:187:13:187:18 | After ... == ... [true] | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:187:13:187:18 | Before ... == ... | cflow.cs:185:10:185:18 | LogicalOr | | cflow.cs:187:13:187:28 | ... \|\| ... | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:187:13:187:28 | After ... \|\| ... [false] | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:187:13:187:28 | After ... \|\| ... [true] | cflow.cs:185:10:185:18 | LogicalOr | | cflow.cs:187:13:187:50 | ... \|\| ... | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:187:13:187:50 | After ... \|\| ... [false] | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:187:13:187:50 | After ... \|\| ... [true] | cflow.cs:185:10:185:18 | LogicalOr | | cflow.cs:187:18:187:18 | 2 | cflow.cs:185:10:185:18 | LogicalOr | | cflow.cs:187:23:187:23 | 2 | cflow.cs:185:10:185:18 | LogicalOr | | cflow.cs:187:23:187:28 | ... == ... | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:187:23:187:28 | After ... == ... [false] | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:187:23:187:28 | After ... == ... [true] | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:187:23:187:28 | Before ... == ... | cflow.cs:185:10:185:18 | LogicalOr | | cflow.cs:187:28:187:28 | 3 | cflow.cs:185:10:185:18 | LogicalOr | | cflow.cs:187:34:187:34 | 1 | cflow.cs:185:10:185:18 | LogicalOr | | cflow.cs:187:34:187:39 | ... == ... | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:187:34:187:39 | After ... == ... [false] | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:187:34:187:39 | After ... == ... [true] | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:187:34:187:39 | Before ... == ... | cflow.cs:185:10:185:18 | LogicalOr | | cflow.cs:187:34:187:49 | ... && ... | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:187:34:187:49 | After ... && ... [false] | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:187:34:187:49 | After ... && ... [true] | cflow.cs:185:10:185:18 | LogicalOr | | cflow.cs:187:39:187:39 | 3 | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:187:44:187:44 | 3 | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:187:44:187:49 | ... == ... | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:187:44:187:49 | After ... == ... [false] | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:187:44:187:49 | After ... == ... [true] | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:187:44:187:49 | Before ... == ... | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:187:49:187:49 | 1 | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:188:13:188:54 | After call to method WriteLine | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:188:13:188:54 | Before call to method WriteLine | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:188:13:188:54 | call to method WriteLine | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:188:13:188:55 | ...; | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:188:13:188:55 | After ...; | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:188:31:188:53 | "This shouldn't happen" | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:190:13:190:51 | After call to method WriteLine | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:190:13:190:51 | Before call to method WriteLine | cflow.cs:185:10:185:18 | LogicalOr | | cflow.cs:190:13:190:51 | call to method WriteLine | cflow.cs:185:10:185:18 | LogicalOr | | cflow.cs:190:13:190:52 | ...; | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:190:13:190:52 | After ...; | cflow.cs:185:10:185:18 | LogicalOr | | cflow.cs:190:31:190:50 | "This should happen" | cflow.cs:185:10:185:18 | LogicalOr | -| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:193:10:193:17 | exit Booleans | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:193:10:193:17 | exit Booleans (abnormal) | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:193:10:193:17 | exit Booleans (normal) | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:193:10:193:17 | Entry | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:193:10:193:17 | Exceptional Exit | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:193:10:193:17 | Exit | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:193:10:193:17 | Normal Exit | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:194:5:206:5 | After {...} | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:194:5:206:5 | {...} | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:195:9:195:57 | ... ...; | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:195:9:195:57 | After ... ...; | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:195:13:195:13 | access to local variable b | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:195:13:195:56 | After Boolean b = ... | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:195:13:195:56 | Before Boolean b = ... | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:195:13:195:56 | Boolean b = ... | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:195:17:195:21 | After access to field Field | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:195:17:195:21 | Before access to field Field | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:195:17:195:21 | access to field Field | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:195:17:195:21 | this access | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:195:17:195:28 | After access to property Length | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:195:17:195:28 | Before access to property Length | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:195:17:195:28 | access to property Length | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:195:17:195:32 | ... > ... | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:195:17:195:32 | After ... > ... [false] | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:195:17:195:32 | After ... > ... [true] | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:195:17:195:32 | Before ... > ... | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:195:17:195:56 | ... && ... | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:195:17:195:56 | After ... && ... | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:195:32:195:32 | 0 | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:195:37:195:56 | !... | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:195:37:195:56 | After !... | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:195:39:195:43 | After access to field Field | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:195:39:195:43 | Before access to field Field | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:195:39:195:43 | access to field Field | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:195:39:195:43 | this access | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:195:39:195:50 | After access to property Length | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:195:39:195:50 | Before access to property Length | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:195:39:195:50 | access to property Length | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:195:39:195:55 | ... == ... | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:195:39:195:55 | After ... == ... | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:195:39:195:55 | Before ... == ... | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:195:55:195:55 | 1 | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:197:9:198:49 | After if (...) ... | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:197:9:198:49 | if (...) ... | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:197:13:197:47 | [false] !... | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:197:13:197:47 | [true] !... | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:197:13:197:47 | !... | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:197:13:197:47 | After !... [false] | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:197:13:197:47 | After !... [true] | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:197:15:197:19 | After access to field Field | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:197:15:197:19 | Before access to field Field | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:197:15:197:19 | access to field Field | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:197:15:197:19 | this access | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:197:15:197:26 | After access to property Length | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:197:15:197:26 | Before access to property Length | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:197:15:197:26 | access to property Length | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:197:15:197:31 | ... == ... | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:197:15:197:46 | [false] ... ? ... : ... | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:197:15:197:46 | [true] ... ? ... : ... | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:197:15:197:31 | After ... == ... [false] | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:197:15:197:31 | After ... == ... [true] | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:197:15:197:31 | Before ... == ... | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:197:15:197:46 | ... ? ... : ... | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:197:15:197:46 | After ... ? ... : ... [false] | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:197:15:197:46 | After ... ? ... : ... [true] | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:197:31:197:31 | 0 | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:197:35:197:39 | After false [false] | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:197:35:197:39 | false | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:197:43:197:46 | After true [true] | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:197:43:197:46 | true | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:198:13:198:13 | access to local variable b | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:198:13:198:48 | ... = ... | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:198:13:198:48 | After ... = ... | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:198:13:198:48 | Before ... = ... | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:198:13:198:49 | ...; | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:198:13:198:49 | After ...; | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:198:17:198:21 | After access to field Field | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:198:17:198:21 | Before access to field Field | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:198:17:198:21 | access to field Field | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:198:17:198:21 | this access | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:198:17:198:28 | After access to property Length | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:198:17:198:28 | Before access to property Length | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:198:17:198:28 | access to property Length | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:198:17:198:33 | ... == ... | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:198:17:198:33 | After ... == ... [false] | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:198:17:198:33 | After ... == ... [true] | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:198:17:198:33 | Before ... == ... | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:198:17:198:48 | ... ? ... : ... | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:198:17:198:48 | After ... ? ... : ... | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:198:33:198:33 | 0 | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:198:37:198:41 | false | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:198:45:198:48 | true | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:9:205:9 | After if (...) ... | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:200:13:200:32 | [true] !... | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:200:13:200:62 | [false] ... \|\| ... | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:200:13:200:62 | [true] ... \|\| ... | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:13:200:32 | !... | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:13:200:32 | After !... [false] | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:13:200:32 | After !... [true] | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:13:200:62 | ... \|\| ... | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:13:200:62 | After ... \|\| ... [false] | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:13:200:62 | After ... \|\| ... [true] | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:15:200:19 | After access to field Field | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:15:200:19 | Before access to field Field | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:200:15:200:19 | access to field Field | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:200:15:200:19 | this access | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:15:200:26 | After access to property Length | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:15:200:26 | Before access to property Length | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:200:15:200:26 | access to property Length | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:200:15:200:31 | ... == ... | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:15:200:31 | After ... == ... [false] | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:15:200:31 | After ... == ... [true] | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:15:200:31 | Before ... == ... | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:200:31:200:31 | 0 | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:200:37:200:62 | [false] !... | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:200:37:200:62 | [true] !... | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:200:38:200:62 | [false] !... | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:200:38:200:62 | [true] !... | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:37:200:62 | !... | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:37:200:62 | After !... [false] | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:37:200:62 | After !... [true] | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:38:200:62 | !... | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:38:200:62 | After !... [false] | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:38:200:62 | After !... [true] | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:40:200:44 | After access to field Field | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:40:200:44 | Before access to field Field | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:200:40:200:44 | access to field Field | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:200:40:200:44 | this access | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:40:200:51 | After access to property Length | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:40:200:51 | Before access to property Length | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:200:40:200:51 | access to property Length | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:200:40:200:56 | ... == ... | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:200:40:200:61 | [true] ... && ... | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:40:200:56 | After ... == ... [false] | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:40:200:56 | After ... == ... [true] | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:40:200:56 | Before ... == ... | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:40:200:61 | ... && ... | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:40:200:61 | After ... && ... [false] | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:40:200:61 | After ... && ... [true] | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:200:56:200:56 | 1 | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:61:200:61 | After access to local variable b [false] | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:61:200:61 | After access to local variable b [true] | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:200:61:200:61 | access to local variable b | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:201:9:205:9 | {...} | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:202:13:204:13 | {...} | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:203:17:203:38 | Before throw ...; | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:203:17:203:38 | throw ...; | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:203:23:203:37 | After object creation of type Exception | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:203:23:203:37 | Before object creation of type Exception | cflow.cs:193:10:193:17 | Booleans | | cflow.cs:203:23:203:37 | object creation of type Exception | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:208:10:208:11 | enter Do | cflow.cs:208:10:208:11 | Do | -| cflow.cs:208:10:208:11 | exit Do | cflow.cs:208:10:208:11 | Do | -| cflow.cs:208:10:208:11 | exit Do (normal) | cflow.cs:208:10:208:11 | Do | +| cflow.cs:208:10:208:11 | Entry | cflow.cs:208:10:208:11 | Do | +| cflow.cs:208:10:208:11 | Exit | cflow.cs:208:10:208:11 | Do | +| cflow.cs:208:10:208:11 | Normal Exit | cflow.cs:208:10:208:11 | Do | +| cflow.cs:209:5:222:5 | After {...} | cflow.cs:208:10:208:11 | Do | | cflow.cs:209:5:222:5 | {...} | cflow.cs:208:10:208:11 | Do | +| cflow.cs:210:9:221:36 | After do ... while (...); | cflow.cs:208:10:208:11 | Do | +| cflow.cs:210:9:221:36 | [LoopHeader] do ... while (...); | cflow.cs:208:10:208:11 | Do | | cflow.cs:210:9:221:36 | do ... while (...); | cflow.cs:208:10:208:11 | Do | +| cflow.cs:211:9:221:9 | After {...} | cflow.cs:208:10:208:11 | Do | | cflow.cs:211:9:221:9 | {...} | cflow.cs:208:10:208:11 | Do | +| cflow.cs:212:13:212:17 | After access to field Field | cflow.cs:208:10:208:11 | Do | +| cflow.cs:212:13:212:17 | Before access to field Field | cflow.cs:208:10:208:11 | Do | | cflow.cs:212:13:212:17 | access to field Field | cflow.cs:208:10:208:11 | Do | | cflow.cs:212:13:212:17 | this access | cflow.cs:208:10:208:11 | Do | | cflow.cs:212:13:212:24 | ... += ... | cflow.cs:208:10:208:11 | Do | +| cflow.cs:212:13:212:24 | After ... += ... | cflow.cs:208:10:208:11 | Do | +| cflow.cs:212:13:212:24 | Before ... += ... | cflow.cs:208:10:208:11 | Do | | cflow.cs:212:13:212:25 | ...; | cflow.cs:208:10:208:11 | Do | +| cflow.cs:212:13:212:25 | After ...; | cflow.cs:208:10:208:11 | Do | | cflow.cs:212:22:212:24 | "a" | cflow.cs:208:10:208:11 | Do | +| cflow.cs:213:13:216:13 | After if (...) ... | cflow.cs:208:10:208:11 | Do | | cflow.cs:213:13:216:13 | if (...) ... | cflow.cs:208:10:208:11 | Do | +| cflow.cs:213:17:213:21 | After access to field Field | cflow.cs:208:10:208:11 | Do | +| cflow.cs:213:17:213:21 | Before access to field Field | cflow.cs:208:10:208:11 | Do | | cflow.cs:213:17:213:21 | access to field Field | cflow.cs:208:10:208:11 | Do | | cflow.cs:213:17:213:21 | this access | cflow.cs:208:10:208:11 | Do | +| cflow.cs:213:17:213:28 | After access to property Length | cflow.cs:208:10:208:11 | Do | +| cflow.cs:213:17:213:28 | Before access to property Length | cflow.cs:208:10:208:11 | Do | | cflow.cs:213:17:213:28 | access to property Length | cflow.cs:208:10:208:11 | Do | | cflow.cs:213:17:213:32 | ... > ... | cflow.cs:208:10:208:11 | Do | +| cflow.cs:213:17:213:32 | After ... > ... [false] | cflow.cs:208:10:208:11 | Do | +| cflow.cs:213:17:213:32 | After ... > ... [true] | cflow.cs:208:10:208:11 | Do | +| cflow.cs:213:17:213:32 | Before ... > ... | cflow.cs:208:10:208:11 | Do | | cflow.cs:213:32:213:32 | 0 | cflow.cs:208:10:208:11 | Do | | cflow.cs:214:13:216:13 | {...} | cflow.cs:208:10:208:11 | Do | +| cflow.cs:215:17:215:25 | Before continue; | cflow.cs:208:10:208:11 | Do | | cflow.cs:215:17:215:25 | continue; | cflow.cs:208:10:208:11 | Do | +| cflow.cs:217:13:220:13 | After if (...) ... | cflow.cs:208:10:208:11 | Do | | cflow.cs:217:13:220:13 | if (...) ... | cflow.cs:208:10:208:11 | Do | +| cflow.cs:217:17:217:21 | After access to field Field | cflow.cs:208:10:208:11 | Do | +| cflow.cs:217:17:217:21 | Before access to field Field | cflow.cs:208:10:208:11 | Do | | cflow.cs:217:17:217:21 | access to field Field | cflow.cs:208:10:208:11 | Do | | cflow.cs:217:17:217:21 | this access | cflow.cs:208:10:208:11 | Do | +| cflow.cs:217:17:217:28 | After access to property Length | cflow.cs:208:10:208:11 | Do | +| cflow.cs:217:17:217:28 | Before access to property Length | cflow.cs:208:10:208:11 | Do | | cflow.cs:217:17:217:28 | access to property Length | cflow.cs:208:10:208:11 | Do | | cflow.cs:217:17:217:32 | ... < ... | cflow.cs:208:10:208:11 | Do | +| cflow.cs:217:17:217:32 | After ... < ... [false] | cflow.cs:208:10:208:11 | Do | +| cflow.cs:217:17:217:32 | After ... < ... [true] | cflow.cs:208:10:208:11 | Do | +| cflow.cs:217:17:217:32 | Before ... < ... | cflow.cs:208:10:208:11 | Do | | cflow.cs:217:32:217:32 | 0 | cflow.cs:208:10:208:11 | Do | | cflow.cs:218:13:220:13 | {...} | cflow.cs:208:10:208:11 | Do | +| cflow.cs:219:17:219:22 | Before break; | cflow.cs:208:10:208:11 | Do | | cflow.cs:219:17:219:22 | break; | cflow.cs:208:10:208:11 | Do | +| cflow.cs:221:18:221:22 | After access to field Field | cflow.cs:208:10:208:11 | Do | +| cflow.cs:221:18:221:22 | Before access to field Field | cflow.cs:208:10:208:11 | Do | | cflow.cs:221:18:221:22 | access to field Field | cflow.cs:208:10:208:11 | Do | | cflow.cs:221:18:221:22 | this access | cflow.cs:208:10:208:11 | Do | +| cflow.cs:221:18:221:29 | After access to property Length | cflow.cs:208:10:208:11 | Do | +| cflow.cs:221:18:221:29 | Before access to property Length | cflow.cs:208:10:208:11 | Do | | cflow.cs:221:18:221:29 | access to property Length | cflow.cs:208:10:208:11 | Do | | cflow.cs:221:18:221:34 | ... < ... | cflow.cs:208:10:208:11 | Do | +| cflow.cs:221:18:221:34 | After ... < ... [false] | cflow.cs:208:10:208:11 | Do | +| cflow.cs:221:18:221:34 | After ... < ... [true] | cflow.cs:208:10:208:11 | Do | +| cflow.cs:221:18:221:34 | Before ... < ... | cflow.cs:208:10:208:11 | Do | | cflow.cs:221:33:221:34 | 10 | cflow.cs:208:10:208:11 | Do | -| cflow.cs:224:10:224:16 | enter Foreach | cflow.cs:224:10:224:16 | Foreach | -| cflow.cs:224:10:224:16 | exit Foreach | cflow.cs:224:10:224:16 | Foreach | -| cflow.cs:224:10:224:16 | exit Foreach (normal) | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:224:10:224:16 | Entry | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:224:10:224:16 | Exit | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:224:10:224:16 | Normal Exit | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:225:5:238:5 | After {...} | cflow.cs:224:10:224:16 | Foreach | | cflow.cs:225:5:238:5 | {...} | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:226:9:237:9 | After foreach (... ... in ...) ... | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:226:9:237:9 | [LoopHeader] foreach (... ... in ...) ... | cflow.cs:224:10:224:16 | Foreach | | cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | cflow.cs:224:10:224:16 | Foreach | | cflow.cs:226:22:226:22 | String x | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:226:27:226:64 | After call to method Repeat [empty] | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:226:27:226:64 | After call to method Repeat [non-empty] | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:226:27:226:64 | Before call to method Repeat | cflow.cs:224:10:224:16 | Foreach | | cflow.cs:226:27:226:64 | call to method Repeat | cflow.cs:224:10:224:16 | Foreach | | cflow.cs:226:57:226:59 | "a" | cflow.cs:224:10:224:16 | Foreach | | cflow.cs:226:62:226:63 | 10 | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:227:9:237:9 | After {...} | cflow.cs:224:10:224:16 | Foreach | | cflow.cs:227:9:237:9 | {...} | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:228:13:228:17 | After access to field Field | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:228:13:228:17 | Before access to field Field | cflow.cs:224:10:224:16 | Foreach | | cflow.cs:228:13:228:17 | access to field Field | cflow.cs:224:10:224:16 | Foreach | | cflow.cs:228:13:228:17 | this access | cflow.cs:224:10:224:16 | Foreach | | cflow.cs:228:13:228:22 | ... += ... | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:228:13:228:22 | After ... += ... | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:228:13:228:22 | Before ... += ... | cflow.cs:224:10:224:16 | Foreach | | cflow.cs:228:13:228:23 | ...; | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:228:13:228:23 | After ...; | cflow.cs:224:10:224:16 | Foreach | | cflow.cs:228:22:228:22 | access to local variable x | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:229:13:232:13 | After if (...) ... | cflow.cs:224:10:224:16 | Foreach | | cflow.cs:229:13:232:13 | if (...) ... | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:229:17:229:21 | After access to field Field | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:229:17:229:21 | Before access to field Field | cflow.cs:224:10:224:16 | Foreach | | cflow.cs:229:17:229:21 | access to field Field | cflow.cs:224:10:224:16 | Foreach | | cflow.cs:229:17:229:21 | this access | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:229:17:229:28 | After access to property Length | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:229:17:229:28 | Before access to property Length | cflow.cs:224:10:224:16 | Foreach | | cflow.cs:229:17:229:28 | access to property Length | cflow.cs:224:10:224:16 | Foreach | | cflow.cs:229:17:229:32 | ... > ... | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:229:17:229:32 | After ... > ... [false] | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:229:17:229:32 | After ... > ... [true] | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:229:17:229:32 | Before ... > ... | cflow.cs:224:10:224:16 | Foreach | | cflow.cs:229:32:229:32 | 0 | cflow.cs:224:10:224:16 | Foreach | | cflow.cs:230:13:232:13 | {...} | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:231:17:231:25 | Before continue; | cflow.cs:224:10:224:16 | Foreach | | cflow.cs:231:17:231:25 | continue; | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:233:13:236:13 | After if (...) ... | cflow.cs:224:10:224:16 | Foreach | | cflow.cs:233:13:236:13 | if (...) ... | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:233:17:233:21 | After access to field Field | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:233:17:233:21 | Before access to field Field | cflow.cs:224:10:224:16 | Foreach | | cflow.cs:233:17:233:21 | access to field Field | cflow.cs:224:10:224:16 | Foreach | | cflow.cs:233:17:233:21 | this access | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:233:17:233:28 | After access to property Length | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:233:17:233:28 | Before access to property Length | cflow.cs:224:10:224:16 | Foreach | | cflow.cs:233:17:233:28 | access to property Length | cflow.cs:224:10:224:16 | Foreach | | cflow.cs:233:17:233:32 | ... < ... | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:233:17:233:32 | After ... < ... [false] | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:233:17:233:32 | After ... < ... [true] | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:233:17:233:32 | Before ... < ... | cflow.cs:224:10:224:16 | Foreach | | cflow.cs:233:32:233:32 | 0 | cflow.cs:224:10:224:16 | Foreach | | cflow.cs:234:13:236:13 | {...} | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:235:17:235:22 | Before break; | cflow.cs:224:10:224:16 | Foreach | | cflow.cs:235:17:235:22 | break; | cflow.cs:224:10:224:16 | Foreach | -| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:240:10:240:13 | Goto | -| cflow.cs:240:10:240:13 | exit Goto | cflow.cs:240:10:240:13 | Goto | -| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:240:10:240:13 | Entry | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:240:10:240:13 | Exit | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:240:10:240:13 | Normal Exit | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:241:5:259:5 | After {...} | cflow.cs:240:10:240:13 | Goto | | cflow.cs:241:5:259:5 | {...} | cflow.cs:240:10:240:13 | Goto | | cflow.cs:242:5:242:9 | Label: | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:242:12:242:41 | After if (...) ... | cflow.cs:240:10:240:13 | Goto | | cflow.cs:242:12:242:41 | if (...) ... | cflow.cs:240:10:240:13 | Goto | -| cflow.cs:242:16:242:36 | [false] !... | cflow.cs:240:10:240:13 | Goto | -| cflow.cs:242:16:242:36 | [true] !... | cflow.cs:240:10:240:13 | Goto | -| cflow.cs:242:17:242:36 | [false] !... | cflow.cs:240:10:240:13 | Goto | -| cflow.cs:242:17:242:36 | [true] !... | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:242:16:242:36 | !... | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:242:16:242:36 | After !... [false] | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:242:16:242:36 | After !... [true] | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:242:17:242:36 | !... | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:242:17:242:36 | After !... [false] | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:242:17:242:36 | After !... [true] | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:242:19:242:23 | After access to field Field | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:242:19:242:23 | Before access to field Field | cflow.cs:240:10:240:13 | Goto | | cflow.cs:242:19:242:23 | access to field Field | cflow.cs:240:10:240:13 | Goto | | cflow.cs:242:19:242:23 | this access | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:242:19:242:30 | After access to property Length | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:242:19:242:30 | Before access to property Length | cflow.cs:240:10:240:13 | Goto | | cflow.cs:242:19:242:30 | access to property Length | cflow.cs:240:10:240:13 | Goto | | cflow.cs:242:19:242:35 | ... == ... | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:242:19:242:35 | After ... == ... [false] | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:242:19:242:35 | After ... == ... [true] | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:242:19:242:35 | Before ... == ... | cflow.cs:240:10:240:13 | Goto | | cflow.cs:242:35:242:35 | 0 | cflow.cs:240:10:240:13 | Goto | | cflow.cs:242:39:242:41 | {...} | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:244:9:244:41 | After if (...) ... | cflow.cs:240:10:240:13 | Goto | | cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:244:13:244:17 | After access to field Field | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:244:13:244:17 | Before access to field Field | cflow.cs:240:10:240:13 | Goto | | cflow.cs:244:13:244:17 | access to field Field | cflow.cs:240:10:240:13 | Goto | | cflow.cs:244:13:244:17 | this access | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:244:13:244:24 | After access to property Length | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:244:13:244:24 | Before access to property Length | cflow.cs:240:10:240:13 | Goto | | cflow.cs:244:13:244:24 | access to property Length | cflow.cs:240:10:240:13 | Goto | | cflow.cs:244:13:244:28 | ... > ... | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:244:13:244:28 | After ... > ... [false] | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:244:13:244:28 | After ... > ... [true] | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:244:13:244:28 | Before ... > ... | cflow.cs:240:10:240:13 | Goto | | cflow.cs:244:28:244:28 | 0 | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:244:31:244:41 | Before goto ...; | cflow.cs:240:10:240:13 | Goto | | cflow.cs:244:31:244:41 | goto ...; | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:246:9:258:9 | After switch (...) {...} | cflow.cs:240:10:240:13 | Goto | | cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:246:17:246:21 | After access to field Field | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:246:17:246:21 | Before access to field Field | cflow.cs:240:10:240:13 | Goto | | cflow.cs:246:17:246:21 | access to field Field | cflow.cs:240:10:240:13 | Goto | | cflow.cs:246:17:246:21 | this access | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:246:17:246:28 | After access to property Length | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:246:17:246:28 | Before access to property Length | cflow.cs:240:10:240:13 | Goto | | cflow.cs:246:17:246:28 | access to property Length | cflow.cs:240:10:240:13 | Goto | | cflow.cs:246:17:246:32 | ... + ... | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:246:17:246:32 | After ... + ... | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:246:17:246:32 | Before ... + ... | cflow.cs:240:10:240:13 | Goto | | cflow.cs:246:32:246:32 | 3 | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:248:13:248:19 | After case ...: [match] | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:248:13:248:19 | After case ...: [no-match] | cflow.cs:240:10:240:13 | Goto | | cflow.cs:248:13:248:19 | case ...: | cflow.cs:240:10:240:13 | Goto | | cflow.cs:248:18:248:18 | 0 | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:248:18:248:18 | After 0 [match] | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:248:18:248:18 | After 0 [no-match] | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:249:17:249:29 | Before goto default; | cflow.cs:240:10:240:13 | Goto | | cflow.cs:249:17:249:29 | goto default; | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:250:13:250:19 | After case ...: [match] | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:250:13:250:19 | After case ...: [no-match] | cflow.cs:240:10:240:13 | Goto | | cflow.cs:250:13:250:19 | case ...: | cflow.cs:240:10:240:13 | Goto | | cflow.cs:250:18:250:18 | 1 | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:250:18:250:18 | After 1 [match] | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:250:18:250:18 | After 1 [no-match] | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:251:17:251:36 | After call to method WriteLine | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:251:17:251:36 | Before call to method WriteLine | cflow.cs:240:10:240:13 | Goto | | cflow.cs:251:17:251:36 | call to method WriteLine | cflow.cs:240:10:240:13 | Goto | | cflow.cs:251:17:251:37 | ...; | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:251:17:251:37 | After ...; | cflow.cs:240:10:240:13 | Goto | | cflow.cs:251:35:251:35 | 1 | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:252:17:252:22 | Before break; | cflow.cs:240:10:240:13 | Goto | | cflow.cs:252:17:252:22 | break; | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:253:13:253:19 | After case ...: [match] | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:253:13:253:19 | After case ...: [no-match] | cflow.cs:240:10:240:13 | Goto | | cflow.cs:253:13:253:19 | case ...: | cflow.cs:240:10:240:13 | Goto | | cflow.cs:253:18:253:18 | 2 | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:253:18:253:18 | After 2 [match] | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:253:18:253:18 | After 2 [no-match] | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:254:17:254:27 | Before goto ...; | cflow.cs:240:10:240:13 | Goto | | cflow.cs:254:17:254:27 | goto ...; | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:255:13:255:20 | After default: [match] | cflow.cs:240:10:240:13 | Goto | | cflow.cs:255:13:255:20 | default: | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:256:17:256:36 | After call to method WriteLine | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:256:17:256:36 | Before call to method WriteLine | cflow.cs:240:10:240:13 | Goto | | cflow.cs:256:17:256:36 | call to method WriteLine | cflow.cs:240:10:240:13 | Goto | | cflow.cs:256:17:256:37 | ...; | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:256:17:256:37 | After ...; | cflow.cs:240:10:240:13 | Goto | | cflow.cs:256:35:256:35 | 0 | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:257:17:257:22 | Before break; | cflow.cs:240:10:240:13 | Goto | | cflow.cs:257:17:257:22 | break; | cflow.cs:240:10:240:13 | Goto | -| cflow.cs:261:49:261:53 | enter Yield | cflow.cs:261:49:261:53 | Yield | -| cflow.cs:261:49:261:53 | exit Yield | cflow.cs:261:49:261:53 | Yield | -| cflow.cs:261:49:261:53 | exit Yield (abnormal) | cflow.cs:261:49:261:53 | Yield | -| cflow.cs:261:49:261:53 | exit Yield (normal) | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:261:49:261:53 | Entry | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:261:49:261:53 | Exceptional Exit | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:261:49:261:53 | Exit | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:261:49:261:53 | Normal Exit | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:262:5:277:5 | After {...} | cflow.cs:261:49:261:53 | Yield | | cflow.cs:262:5:277:5 | {...} | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:263:9:263:23 | After yield return ...; | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:263:9:263:23 | Before yield return ...; | cflow.cs:261:49:261:53 | Yield | | cflow.cs:263:9:263:23 | yield return ...; | cflow.cs:261:49:261:53 | Yield | | cflow.cs:263:22:263:22 | 0 | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:264:9:267:9 | After for (...;...;...) ... | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:264:9:267:9 | [LoopHeader] for (...;...;...) ... | cflow.cs:261:49:261:53 | Yield | | cflow.cs:264:9:267:9 | for (...;...;...) ... | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:264:18:264:18 | access to local variable i | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:264:18:264:22 | After Int32 i = ... | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:264:18:264:22 | Before Int32 i = ... | cflow.cs:261:49:261:53 | Yield | | cflow.cs:264:18:264:22 | Int32 i = ... | cflow.cs:261:49:261:53 | Yield | | cflow.cs:264:22:264:22 | 1 | cflow.cs:261:49:261:53 | Yield | | cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:261:49:261:53 | Yield | | cflow.cs:264:25:264:30 | ... < ... | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:264:25:264:30 | After ... < ... [false] | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:264:25:264:30 | After ... < ... [true] | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:264:25:264:30 | Before ... < ... | cflow.cs:261:49:261:53 | Yield | | cflow.cs:264:29:264:30 | 10 | cflow.cs:261:49:261:53 | Yield | | cflow.cs:264:33:264:33 | access to local variable i | cflow.cs:261:49:261:53 | Yield | | cflow.cs:264:33:264:35 | ...++ | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:264:33:264:35 | After ...++ | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:264:33:264:35 | Before ...++ | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:265:9:267:9 | After {...} | cflow.cs:261:49:261:53 | Yield | | cflow.cs:265:9:267:9 | {...} | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:266:13:266:27 | After yield return ...; | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:266:13:266:27 | Before yield return ...; | cflow.cs:261:49:261:53 | Yield | | cflow.cs:266:13:266:27 | yield return ...; | cflow.cs:261:49:261:53 | Yield | | cflow.cs:266:26:266:26 | access to local variable i | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:268:9:276:9 | After try {...} ... | cflow.cs:261:49:261:53 | Yield | | cflow.cs:268:9:276:9 | try {...} ... | cflow.cs:261:49:261:53 | Yield | | cflow.cs:269:9:272:9 | {...} | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:270:13:270:24 | Before yield break; | cflow.cs:261:49:261:53 | Yield | | cflow.cs:270:13:270:24 | yield break; | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:274:9:276:9 | After {...} | cflow.cs:261:49:261:53 | Yield | | cflow.cs:274:9:276:9 | {...} | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:275:13:275:41 | After call to method WriteLine | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:275:13:275:41 | Before call to method WriteLine | cflow.cs:261:49:261:53 | Yield | | cflow.cs:275:13:275:41 | call to method WriteLine | cflow.cs:261:49:261:53 | Yield | | cflow.cs:275:13:275:42 | ...; | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:275:13:275:42 | After ...; | cflow.cs:261:49:261:53 | Yield | | cflow.cs:275:31:275:40 | "not dead" | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:282:5:282:18 | After call to method | cflow.cs:282:5:282:18 | ControlFlowSub | +| cflow.cs:282:5:282:18 | Before call to method | cflow.cs:282:5:282:18 | ControlFlowSub | +| cflow.cs:282:5:282:18 | Entry | cflow.cs:282:5:282:18 | ControlFlowSub | +| cflow.cs:282:5:282:18 | Exit | cflow.cs:282:5:282:18 | ControlFlowSub | +| cflow.cs:282:5:282:18 | Normal Exit | cflow.cs:282:5:282:18 | ControlFlowSub | | cflow.cs:282:5:282:18 | call to method | cflow.cs:282:5:282:18 | ControlFlowSub | -| cflow.cs:282:5:282:18 | enter ControlFlowSub | cflow.cs:282:5:282:18 | ControlFlowSub | -| cflow.cs:282:5:282:18 | exit ControlFlowSub | cflow.cs:282:5:282:18 | ControlFlowSub | -| cflow.cs:282:5:282:18 | exit ControlFlowSub (normal) | cflow.cs:282:5:282:18 | ControlFlowSub | | cflow.cs:282:5:282:18 | this access | cflow.cs:282:5:282:18 | ControlFlowSub | +| cflow.cs:282:24:282:27 | After call to constructor ControlFlow | cflow.cs:282:5:282:18 | ControlFlowSub | +| cflow.cs:282:24:282:27 | Before call to constructor ControlFlow | cflow.cs:282:5:282:18 | ControlFlowSub | | cflow.cs:282:24:282:27 | call to constructor ControlFlow | cflow.cs:282:5:282:18 | ControlFlowSub | | cflow.cs:282:31:282:33 | {...} | cflow.cs:282:5:282:18 | ControlFlowSub | -| cflow.cs:284:5:284:18 | enter ControlFlowSub | cflow.cs:284:5:284:18 | ControlFlowSub | -| cflow.cs:284:5:284:18 | exit ControlFlowSub | cflow.cs:284:5:284:18 | ControlFlowSub | -| cflow.cs:284:5:284:18 | exit ControlFlowSub (normal) | cflow.cs:284:5:284:18 | ControlFlowSub | +| cflow.cs:284:5:284:18 | Entry | cflow.cs:284:5:284:18 | ControlFlowSub | +| cflow.cs:284:5:284:18 | Exit | cflow.cs:284:5:284:18 | ControlFlowSub | +| cflow.cs:284:5:284:18 | Normal Exit | cflow.cs:284:5:284:18 | ControlFlowSub | +| cflow.cs:284:27:284:27 | s | cflow.cs:284:5:284:18 | ControlFlowSub | +| cflow.cs:284:32:284:35 | After call to constructor ControlFlowSub | cflow.cs:284:5:284:18 | ControlFlowSub | +| cflow.cs:284:32:284:35 | Before call to constructor ControlFlowSub | cflow.cs:284:5:284:18 | ControlFlowSub | | cflow.cs:284:32:284:35 | call to constructor ControlFlowSub | cflow.cs:284:5:284:18 | ControlFlowSub | | cflow.cs:284:39:284:41 | {...} | cflow.cs:284:5:284:18 | ControlFlowSub | -| cflow.cs:286:5:286:18 | enter ControlFlowSub | cflow.cs:286:5:286:18 | ControlFlowSub | -| cflow.cs:286:5:286:18 | exit ControlFlowSub | cflow.cs:286:5:286:18 | ControlFlowSub | -| cflow.cs:286:5:286:18 | exit ControlFlowSub (normal) | cflow.cs:286:5:286:18 | ControlFlowSub | +| cflow.cs:286:5:286:18 | Entry | cflow.cs:286:5:286:18 | ControlFlowSub | +| cflow.cs:286:5:286:18 | Exit | cflow.cs:286:5:286:18 | ControlFlowSub | +| cflow.cs:286:5:286:18 | Normal Exit | cflow.cs:286:5:286:18 | ControlFlowSub | +| cflow.cs:286:24:286:24 | i | cflow.cs:286:5:286:18 | ControlFlowSub | +| cflow.cs:286:29:286:32 | After call to constructor ControlFlowSub | cflow.cs:286:5:286:18 | ControlFlowSub | +| cflow.cs:286:29:286:32 | Before call to constructor ControlFlowSub | cflow.cs:286:5:286:18 | ControlFlowSub | | cflow.cs:286:29:286:32 | call to constructor ControlFlowSub | cflow.cs:286:5:286:18 | ControlFlowSub | | cflow.cs:286:34:286:34 | access to parameter i | cflow.cs:286:5:286:18 | ControlFlowSub | +| cflow.cs:286:34:286:45 | After call to method ToString | cflow.cs:286:5:286:18 | ControlFlowSub | +| cflow.cs:286:34:286:45 | Before call to method ToString | cflow.cs:286:5:286:18 | ControlFlowSub | | cflow.cs:286:34:286:45 | call to method ToString | cflow.cs:286:5:286:18 | ControlFlowSub | | cflow.cs:286:48:286:50 | {...} | cflow.cs:286:5:286:18 | ControlFlowSub | +| cflow.cs:289:7:289:18 | After call to constructor Object | cflow.cs:289:7:289:18 | DelegateCall | +| cflow.cs:289:7:289:18 | After call to method | cflow.cs:289:7:289:18 | DelegateCall | +| cflow.cs:289:7:289:18 | Before call to constructor Object | cflow.cs:289:7:289:18 | DelegateCall | +| cflow.cs:289:7:289:18 | Before call to method | cflow.cs:289:7:289:18 | DelegateCall | +| cflow.cs:289:7:289:18 | Entry | cflow.cs:289:7:289:18 | DelegateCall | +| cflow.cs:289:7:289:18 | Exit | cflow.cs:289:7:289:18 | DelegateCall | +| cflow.cs:289:7:289:18 | Normal Exit | cflow.cs:289:7:289:18 | DelegateCall | | cflow.cs:289:7:289:18 | call to constructor Object | cflow.cs:289:7:289:18 | DelegateCall | | cflow.cs:289:7:289:18 | call to method | cflow.cs:289:7:289:18 | DelegateCall | -| cflow.cs:289:7:289:18 | enter DelegateCall | cflow.cs:289:7:289:18 | DelegateCall | -| cflow.cs:289:7:289:18 | exit DelegateCall | cflow.cs:289:7:289:18 | DelegateCall | -| cflow.cs:289:7:289:18 | exit DelegateCall (normal) | cflow.cs:289:7:289:18 | DelegateCall | | cflow.cs:289:7:289:18 | this access | cflow.cs:289:7:289:18 | DelegateCall | | cflow.cs:289:7:289:18 | {...} | cflow.cs:289:7:289:18 | DelegateCall | -| cflow.cs:291:12:291:12 | enter M | cflow.cs:291:12:291:12 | M | -| cflow.cs:291:12:291:12 | exit M | cflow.cs:291:12:291:12 | M | -| cflow.cs:291:12:291:12 | exit M (normal) | cflow.cs:291:12:291:12 | M | +| cflow.cs:291:12:291:12 | Entry | cflow.cs:291:12:291:12 | M | +| cflow.cs:291:12:291:12 | Exit | cflow.cs:291:12:291:12 | M | +| cflow.cs:291:12:291:12 | Normal Exit | cflow.cs:291:12:291:12 | M | +| cflow.cs:291:32:291:32 | f | cflow.cs:291:12:291:12 | M | | cflow.cs:291:38:291:38 | access to parameter f | cflow.cs:291:12:291:12 | M | +| cflow.cs:291:38:291:41 | After delegate call | cflow.cs:291:12:291:12 | M | +| cflow.cs:291:38:291:41 | Before delegate call | cflow.cs:291:12:291:12 | M | | cflow.cs:291:38:291:41 | delegate call | cflow.cs:291:12:291:12 | M | | cflow.cs:291:40:291:40 | 0 | cflow.cs:291:12:291:12 | M | +| cflow.cs:296:5:296:25 | After call to constructor Object | cflow.cs:296:5:296:25 | NegationInConstructor | +| cflow.cs:296:5:296:25 | After call to method | cflow.cs:296:5:296:25 | NegationInConstructor | +| cflow.cs:296:5:296:25 | Before call to constructor Object | cflow.cs:296:5:296:25 | NegationInConstructor | +| cflow.cs:296:5:296:25 | Before call to method | cflow.cs:296:5:296:25 | NegationInConstructor | +| cflow.cs:296:5:296:25 | Entry | cflow.cs:296:5:296:25 | NegationInConstructor | +| cflow.cs:296:5:296:25 | Exit | cflow.cs:296:5:296:25 | NegationInConstructor | +| cflow.cs:296:5:296:25 | Normal Exit | cflow.cs:296:5:296:25 | NegationInConstructor | | cflow.cs:296:5:296:25 | call to constructor Object | cflow.cs:296:5:296:25 | NegationInConstructor | | cflow.cs:296:5:296:25 | call to method | cflow.cs:296:5:296:25 | NegationInConstructor | -| cflow.cs:296:5:296:25 | enter NegationInConstructor | cflow.cs:296:5:296:25 | NegationInConstructor | -| cflow.cs:296:5:296:25 | exit NegationInConstructor | cflow.cs:296:5:296:25 | NegationInConstructor | -| cflow.cs:296:5:296:25 | exit NegationInConstructor (normal) | cflow.cs:296:5:296:25 | NegationInConstructor | | cflow.cs:296:5:296:25 | this access | cflow.cs:296:5:296:25 | NegationInConstructor | +| cflow.cs:296:32:296:32 | b | cflow.cs:296:5:296:25 | NegationInConstructor | +| cflow.cs:296:39:296:39 | i | cflow.cs:296:5:296:25 | NegationInConstructor | +| cflow.cs:296:49:296:49 | s | cflow.cs:296:5:296:25 | NegationInConstructor | | cflow.cs:296:52:296:54 | {...} | cflow.cs:296:5:296:25 | NegationInConstructor | -| cflow.cs:298:10:298:10 | enter M | cflow.cs:298:10:298:10 | M | -| cflow.cs:298:10:298:10 | exit M | cflow.cs:298:10:298:10 | M | -| cflow.cs:298:10:298:10 | exit M (normal) | cflow.cs:298:10:298:10 | M | +| cflow.cs:298:10:298:10 | Entry | cflow.cs:298:10:298:10 | M | +| cflow.cs:298:10:298:10 | Exit | cflow.cs:298:10:298:10 | M | +| cflow.cs:298:10:298:10 | Normal Exit | cflow.cs:298:10:298:10 | M | +| cflow.cs:298:16:298:16 | i | cflow.cs:298:10:298:10 | M | +| cflow.cs:298:26:298:26 | s | cflow.cs:298:10:298:10 | M | +| cflow.cs:298:34:298:34 | b | cflow.cs:298:10:298:10 | M | +| cflow.cs:299:5:301:5 | After {...} | cflow.cs:298:10:298:10 | M | | cflow.cs:299:5:301:5 | {...} | cflow.cs:298:10:298:10 | M | +| cflow.cs:300:9:300:72 | After object creation of type NegationInConstructor | cflow.cs:298:10:298:10 | M | +| cflow.cs:300:9:300:72 | Before object creation of type NegationInConstructor | cflow.cs:298:10:298:10 | M | | cflow.cs:300:9:300:72 | object creation of type NegationInConstructor | cflow.cs:298:10:298:10 | M | | cflow.cs:300:9:300:73 | ...; | cflow.cs:298:10:298:10 | M | +| cflow.cs:300:9:300:73 | After ...; | cflow.cs:298:10:298:10 | M | | cflow.cs:300:38:300:38 | 0 | cflow.cs:298:10:298:10 | M | -| cflow.cs:300:44:300:51 | [false] !... | cflow.cs:298:10:298:10 | M | -| cflow.cs:300:44:300:51 | [true] !... | cflow.cs:298:10:298:10 | M | +| cflow.cs:300:44:300:51 | !... | cflow.cs:298:10:298:10 | M | +| cflow.cs:300:44:300:51 | After !... [false] | cflow.cs:298:10:298:10 | M | +| cflow.cs:300:44:300:51 | After !... [true] | cflow.cs:298:10:298:10 | M | | cflow.cs:300:44:300:64 | ... && ... | cflow.cs:298:10:298:10 | M | +| cflow.cs:300:44:300:64 | After ... && ... | cflow.cs:298:10:298:10 | M | | cflow.cs:300:46:300:46 | access to parameter i | cflow.cs:298:10:298:10 | M | | cflow.cs:300:46:300:50 | ... > ... | cflow.cs:298:10:298:10 | M | +| cflow.cs:300:46:300:50 | After ... > ... [false] | cflow.cs:298:10:298:10 | M | +| cflow.cs:300:46:300:50 | After ... > ... [true] | cflow.cs:298:10:298:10 | M | +| cflow.cs:300:46:300:50 | Before ... > ... | cflow.cs:298:10:298:10 | M | | cflow.cs:300:50:300:50 | 0 | cflow.cs:298:10:298:10 | M | | cflow.cs:300:56:300:56 | access to parameter s | cflow.cs:298:10:298:10 | M | | cflow.cs:300:56:300:64 | ... != ... | cflow.cs:298:10:298:10 | M | +| cflow.cs:300:56:300:64 | After ... != ... | cflow.cs:298:10:298:10 | M | +| cflow.cs:300:56:300:64 | Before ... != ... | cflow.cs:298:10:298:10 | M | | cflow.cs:300:61:300:64 | null | cflow.cs:298:10:298:10 | M | | cflow.cs:300:70:300:71 | "" | cflow.cs:298:10:298:10 | M | +| cflow.cs:304:7:304:18 | After call to constructor Object | cflow.cs:304:7:304:18 | LambdaGetter | +| cflow.cs:304:7:304:18 | After call to method | cflow.cs:304:7:304:18 | LambdaGetter | +| cflow.cs:304:7:304:18 | Before call to constructor Object | cflow.cs:304:7:304:18 | LambdaGetter | +| cflow.cs:304:7:304:18 | Before call to method | cflow.cs:304:7:304:18 | LambdaGetter | +| cflow.cs:304:7:304:18 | Entry | cflow.cs:304:7:304:18 | LambdaGetter | +| cflow.cs:304:7:304:18 | Exit | cflow.cs:304:7:304:18 | LambdaGetter | +| cflow.cs:304:7:304:18 | Normal Exit | cflow.cs:304:7:304:18 | LambdaGetter | | cflow.cs:304:7:304:18 | call to constructor Object | cflow.cs:304:7:304:18 | LambdaGetter | | cflow.cs:304:7:304:18 | call to method | cflow.cs:304:7:304:18 | LambdaGetter | -| cflow.cs:304:7:304:18 | enter LambdaGetter | cflow.cs:304:7:304:18 | LambdaGetter | -| cflow.cs:304:7:304:18 | exit LambdaGetter | cflow.cs:304:7:304:18 | LambdaGetter | -| cflow.cs:304:7:304:18 | exit LambdaGetter (normal) | cflow.cs:304:7:304:18 | LambdaGetter | | cflow.cs:304:7:304:18 | this access | cflow.cs:304:7:304:18 | LambdaGetter | | cflow.cs:304:7:304:18 | {...} | cflow.cs:304:7:304:18 | LambdaGetter | | cflow.cs:306:60:310:5 | (...) => ... | cflow.cs:306:60:310:5 | get__getter | -| cflow.cs:306:60:310:5 | enter (...) => ... | cflow.cs:306:60:310:5 | (...) => ... | -| cflow.cs:306:60:310:5 | enter get__getter | cflow.cs:306:60:310:5 | get__getter | -| cflow.cs:306:60:310:5 | exit (...) => ... | cflow.cs:306:60:310:5 | (...) => ... | -| cflow.cs:306:60:310:5 | exit (...) => ... (normal) | cflow.cs:306:60:310:5 | (...) => ... | -| cflow.cs:306:60:310:5 | exit get__getter | cflow.cs:306:60:310:5 | get__getter | -| cflow.cs:306:60:310:5 | exit get__getter (normal) | cflow.cs:306:60:310:5 | get__getter | +| cflow.cs:306:60:310:5 | Entry | cflow.cs:306:60:310:5 | (...) => ... | +| cflow.cs:306:60:310:5 | Entry | cflow.cs:306:60:310:5 | get__getter | +| cflow.cs:306:60:310:5 | Exit | cflow.cs:306:60:310:5 | (...) => ... | +| cflow.cs:306:60:310:5 | Exit | cflow.cs:306:60:310:5 | get__getter | +| cflow.cs:306:60:310:5 | Normal Exit | cflow.cs:306:60:310:5 | (...) => ... | +| cflow.cs:306:60:310:5 | Normal Exit | cflow.cs:306:60:310:5 | get__getter | +| cflow.cs:306:61:306:61 | o | cflow.cs:306:60:310:5 | (...) => ... | +| cflow.cs:306:64:306:64 | n | cflow.cs:306:60:310:5 | (...) => ... | | cflow.cs:307:5:310:5 | {...} | cflow.cs:306:60:310:5 | (...) => ... | | cflow.cs:308:9:308:21 | ... ...; | cflow.cs:306:60:310:5 | (...) => ... | +| cflow.cs:308:9:308:21 | After ... ...; | cflow.cs:306:60:310:5 | (...) => ... | +| cflow.cs:308:16:308:16 | access to local variable x | cflow.cs:306:60:310:5 | (...) => ... | +| cflow.cs:308:16:308:20 | After Object x = ... | cflow.cs:306:60:310:5 | (...) => ... | +| cflow.cs:308:16:308:20 | Before Object x = ... | cflow.cs:306:60:310:5 | (...) => ... | | cflow.cs:308:16:308:20 | Object x = ... | cflow.cs:306:60:310:5 | (...) => ... | | cflow.cs:308:20:308:20 | access to parameter o | cflow.cs:306:60:310:5 | (...) => ... | +| cflow.cs:309:9:309:17 | Before return ...; | cflow.cs:306:60:310:5 | (...) => ... | | cflow.cs:309:9:309:17 | return ...; | cflow.cs:306:60:310:5 | (...) => ... | | cflow.cs:309:16:309:16 | access to local variable x | cflow.cs:306:60:310:5 | (...) => ... | blockEnclosing -| AccessorCalls.cs:1:7:1:19 | enter AccessorCalls | AccessorCalls.cs:1:7:1:19 | AccessorCalls | -| AccessorCalls.cs:5:23:5:25 | enter get_Item | AccessorCalls.cs:5:23:5:25 | get_Item | -| AccessorCalls.cs:5:33:5:35 | enter set_Item | AccessorCalls.cs:5:33:5:35 | set_Item | -| AccessorCalls.cs:7:32:7:34 | enter add_Event | AccessorCalls.cs:7:32:7:34 | add_Event | -| AccessorCalls.cs:7:40:7:45 | enter remove_Event | AccessorCalls.cs:7:40:7:45 | remove_Event | -| AccessorCalls.cs:10:10:10:11 | enter M1 | AccessorCalls.cs:10:10:10:11 | M1 | -| AccessorCalls.cs:19:10:19:11 | enter M2 | AccessorCalls.cs:19:10:19:11 | M2 | -| AccessorCalls.cs:28:10:28:11 | enter M3 | AccessorCalls.cs:28:10:28:11 | M3 | -| AccessorCalls.cs:35:10:35:11 | enter M4 | AccessorCalls.cs:35:10:35:11 | M4 | -| AccessorCalls.cs:42:10:42:11 | enter M5 | AccessorCalls.cs:42:10:42:11 | M5 | -| AccessorCalls.cs:49:10:49:11 | enter M6 | AccessorCalls.cs:49:10:49:11 | M6 | -| AccessorCalls.cs:56:10:56:11 | enter M7 | AccessorCalls.cs:56:10:56:11 | M7 | -| AccessorCalls.cs:61:10:61:11 | enter M8 | AccessorCalls.cs:61:10:61:11 | M8 | -| AccessorCalls.cs:66:10:66:11 | enter M9 | AccessorCalls.cs:66:10:66:11 | M9 | -| ArrayCreation.cs:1:7:1:19 | enter ArrayCreation | ArrayCreation.cs:1:7:1:19 | ArrayCreation | -| ArrayCreation.cs:3:11:3:12 | enter M1 | ArrayCreation.cs:3:11:3:12 | M1 | -| ArrayCreation.cs:5:12:5:13 | enter M2 | ArrayCreation.cs:5:12:5:13 | M2 | -| ArrayCreation.cs:7:11:7:12 | enter M3 | ArrayCreation.cs:7:11:7:12 | M3 | -| ArrayCreation.cs:9:12:9:13 | enter M4 | ArrayCreation.cs:9:12:9:13 | M4 | -| Assert.cs:5:7:5:17 | enter AssertTests | Assert.cs:5:7:5:17 | AssertTests | -| Assert.cs:7:10:7:11 | enter M1 | Assert.cs:7:10:7:11 | M1 | -| Assert.cs:7:10:7:11 | exit M1 | Assert.cs:7:10:7:11 | M1 | -| Assert.cs:7:10:7:11 | exit M1 (abnormal) | Assert.cs:7:10:7:11 | M1 | -| Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:7:10:7:11 | M1 | -| Assert.cs:9:24:9:27 | null | Assert.cs:7:10:7:11 | M1 | -| Assert.cs:9:31:9:32 | "" | Assert.cs:7:10:7:11 | M1 | -| Assert.cs:11:9:11:36 | ...; | Assert.cs:7:10:7:11 | M1 | -| Assert.cs:14:10:14:11 | enter M2 | Assert.cs:14:10:14:11 | M2 | -| Assert.cs:14:10:14:11 | exit M2 | Assert.cs:14:10:14:11 | M2 | -| Assert.cs:14:10:14:11 | exit M2 (abnormal) | Assert.cs:14:10:14:11 | M2 | -| Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:14:10:14:11 | M2 | -| Assert.cs:16:24:16:27 | null | Assert.cs:14:10:14:11 | M2 | -| Assert.cs:16:31:16:32 | "" | Assert.cs:14:10:14:11 | M2 | -| Assert.cs:18:9:18:36 | ...; | Assert.cs:14:10:14:11 | M2 | -| Assert.cs:21:10:21:11 | enter M3 | Assert.cs:21:10:21:11 | M3 | -| Assert.cs:21:10:21:11 | exit M3 | Assert.cs:21:10:21:11 | M3 | -| Assert.cs:21:10:21:11 | exit M3 (abnormal) | Assert.cs:21:10:21:11 | M3 | -| Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:21:10:21:11 | M3 | -| Assert.cs:23:24:23:27 | null | Assert.cs:21:10:21:11 | M3 | -| Assert.cs:23:31:23:32 | "" | Assert.cs:21:10:21:11 | M3 | -| Assert.cs:25:9:25:36 | ...; | Assert.cs:21:10:21:11 | M3 | -| Assert.cs:28:10:28:11 | enter M4 | Assert.cs:28:10:28:11 | M4 | -| Assert.cs:28:10:28:11 | exit M4 | Assert.cs:28:10:28:11 | M4 | -| Assert.cs:28:10:28:11 | exit M4 (abnormal) | Assert.cs:28:10:28:11 | M4 | -| Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:28:10:28:11 | M4 | -| Assert.cs:30:24:30:27 | null | Assert.cs:28:10:28:11 | M4 | -| Assert.cs:30:31:30:32 | "" | Assert.cs:28:10:28:11 | M4 | -| Assert.cs:32:9:32:36 | ...; | Assert.cs:28:10:28:11 | M4 | -| Assert.cs:35:10:35:11 | enter M5 | Assert.cs:35:10:35:11 | M5 | -| Assert.cs:35:10:35:11 | exit M5 | Assert.cs:35:10:35:11 | M5 | -| Assert.cs:35:10:35:11 | exit M5 (abnormal) | Assert.cs:35:10:35:11 | M5 | -| Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:35:10:35:11 | M5 | -| Assert.cs:37:24:37:27 | null | Assert.cs:35:10:35:11 | M5 | -| Assert.cs:37:31:37:32 | "" | Assert.cs:35:10:35:11 | M5 | -| Assert.cs:39:9:39:36 | ...; | Assert.cs:35:10:35:11 | M5 | -| Assert.cs:42:10:42:11 | enter M6 | Assert.cs:42:10:42:11 | M6 | -| Assert.cs:42:10:42:11 | exit M6 | Assert.cs:42:10:42:11 | M6 | -| Assert.cs:42:10:42:11 | exit M6 (abnormal) | Assert.cs:42:10:42:11 | M6 | -| Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:42:10:42:11 | M6 | -| Assert.cs:44:24:44:27 | null | Assert.cs:42:10:42:11 | M6 | -| Assert.cs:44:31:44:32 | "" | Assert.cs:42:10:42:11 | M6 | -| Assert.cs:46:9:46:36 | ...; | Assert.cs:42:10:42:11 | M6 | -| Assert.cs:49:10:49:11 | enter M7 | Assert.cs:49:10:49:11 | M7 | -| Assert.cs:49:10:49:11 | exit M7 | Assert.cs:49:10:49:11 | M7 | -| Assert.cs:49:10:49:11 | exit M7 (abnormal) | Assert.cs:49:10:49:11 | M7 | -| Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:49:10:49:11 | M7 | -| Assert.cs:51:24:51:27 | null | Assert.cs:49:10:49:11 | M7 | -| Assert.cs:51:31:51:32 | "" | Assert.cs:49:10:49:11 | M7 | -| Assert.cs:53:9:53:36 | ...; | Assert.cs:49:10:49:11 | M7 | -| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:56:10:56:11 | exit M8 | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:56:10:56:11 | exit M8 (abnormal) | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:58:24:58:27 | null | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:58:31:58:32 | "" | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:60:9:60:36 | ...; | Assert.cs:56:10:56:11 | M8 | -| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:63:10:63:11 | exit M9 | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:63:10:63:11 | exit M9 (abnormal) | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:65:24:65:27 | null | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:65:31:65:32 | "" | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:67:9:67:36 | ...; | Assert.cs:63:10:63:11 | M9 | -| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:70:10:70:12 | exit M10 | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:70:10:70:12 | exit M10 (abnormal) | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:72:24:72:27 | null | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:72:31:72:32 | "" | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:74:9:74:36 | ...; | Assert.cs:70:10:70:12 | M10 | -| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:77:10:77:12 | exit M11 | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:77:10:77:12 | exit M11 (abnormal) | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:79:24:79:27 | null | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:79:31:79:32 | "" | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:81:9:81:36 | ...; | Assert.cs:77:10:77:12 | M11 | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:84:10:84:12 | exit M12 | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:84:10:84:12 | exit M12 (abnormal) | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:86:24:86:27 | null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:86:31:86:32 | "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:90:17:90:20 | null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:90:24:90:25 | "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:94:17:94:20 | null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:94:24:94:25 | "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:98:17:98:20 | null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:98:24:98:25 | "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:102:17:102:20 | null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:102:24:102:25 | "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:106:17:106:20 | null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:106:24:106:25 | "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:110:17:110:20 | null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:110:24:110:25 | "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:114:17:114:20 | null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:114:24:114:25 | "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:118:17:118:20 | null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:118:24:118:25 | "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:122:17:122:20 | null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:122:24:122:25 | "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:126:17:126:20 | null | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:126:24:126:25 | "" | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:84:10:84:12 | M12 | -| Assert.cs:131:18:131:32 | enter AssertTrueFalse | Assert.cs:131:18:131:32 | AssertTrueFalse | -| Assert.cs:138:10:138:12 | enter M13 | Assert.cs:138:10:138:12 | M13 | -| Assert.cs:138:10:138:12 | exit M13 | Assert.cs:138:10:138:12 | M13 | -| Assert.cs:138:10:138:12 | exit M13 (abnormal) | Assert.cs:138:10:138:12 | M13 | -| Assert.cs:141:9:141:15 | return ...; | Assert.cs:138:10:138:12 | M13 | -| Assignments.cs:1:7:1:17 | enter Assignments | Assignments.cs:1:7:1:17 | Assignments | -| Assignments.cs:3:10:3:10 | enter M | Assignments.cs:3:10:3:10 | M | -| Assignments.cs:14:18:14:35 | enter (...) => ... | Assignments.cs:14:18:14:35 | (...) => ... | -| Assignments.cs:17:40:17:40 | enter + | Assignments.cs:17:40:17:40 | + | -| Assignments.cs:27:10:27:23 | enter SetParamSingle | Assignments.cs:27:10:27:23 | SetParamSingle | -| Assignments.cs:32:10:32:22 | enter SetParamMulti | Assignments.cs:32:10:32:22 | SetParamMulti | -| Assignments.cs:38:10:38:11 | enter M2 | Assignments.cs:38:10:38:11 | M2 | -| BreakInTry.cs:1:7:1:16 | enter BreakInTry | BreakInTry.cs:1:7:1:16 | BreakInTry | -| BreakInTry.cs:3:10:3:11 | enter M1 | BreakInTry.cs:3:10:3:11 | M1 | -| BreakInTry.cs:3:10:3:11 | exit M1 (normal) | BreakInTry.cs:3:10:3:11 | M1 | -| BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | BreakInTry.cs:3:10:3:11 | M1 | +| AccessorCalls.cs:1:7:1:19 | Entry | AccessorCalls.cs:1:7:1:19 | AccessorCalls | +| AccessorCalls.cs:5:23:5:25 | Entry | AccessorCalls.cs:5:23:5:25 | get_Item | +| AccessorCalls.cs:5:33:5:35 | Entry | AccessorCalls.cs:5:33:5:35 | set_Item | +| AccessorCalls.cs:7:32:7:34 | Entry | AccessorCalls.cs:7:32:7:34 | add_Event | +| AccessorCalls.cs:7:40:7:45 | Entry | AccessorCalls.cs:7:40:7:45 | remove_Event | +| AccessorCalls.cs:10:10:10:11 | Entry | AccessorCalls.cs:10:10:10:11 | M1 | +| AccessorCalls.cs:19:10:19:11 | Entry | AccessorCalls.cs:19:10:19:11 | M2 | +| AccessorCalls.cs:28:10:28:11 | Entry | AccessorCalls.cs:28:10:28:11 | M3 | +| AccessorCalls.cs:35:10:35:11 | Entry | AccessorCalls.cs:35:10:35:11 | M4 | +| AccessorCalls.cs:42:10:42:11 | Entry | AccessorCalls.cs:42:10:42:11 | M5 | +| AccessorCalls.cs:49:10:49:11 | Entry | AccessorCalls.cs:49:10:49:11 | M6 | +| AccessorCalls.cs:56:10:56:11 | Entry | AccessorCalls.cs:56:10:56:11 | M7 | +| AccessorCalls.cs:61:10:61:11 | Entry | AccessorCalls.cs:61:10:61:11 | M8 | +| AccessorCalls.cs:66:10:66:11 | Entry | AccessorCalls.cs:66:10:66:11 | M9 | +| ArrayCreation.cs:1:7:1:19 | Entry | ArrayCreation.cs:1:7:1:19 | ArrayCreation | +| ArrayCreation.cs:3:11:3:12 | Entry | ArrayCreation.cs:3:11:3:12 | M1 | +| ArrayCreation.cs:5:12:5:13 | Entry | ArrayCreation.cs:5:12:5:13 | M2 | +| ArrayCreation.cs:7:11:7:12 | Entry | ArrayCreation.cs:7:11:7:12 | M3 | +| ArrayCreation.cs:9:12:9:13 | Entry | ArrayCreation.cs:9:12:9:13 | M4 | +| Assert.cs:5:7:5:17 | Entry | Assert.cs:5:7:5:17 | AssertTests | +| Assert.cs:7:10:7:11 | Entry | Assert.cs:7:10:7:11 | M1 | +| Assert.cs:7:10:7:11 | Exceptional Exit | Assert.cs:7:10:7:11 | M1 | +| Assert.cs:7:10:7:11 | Exit | Assert.cs:7:10:7:11 | M1 | +| Assert.cs:9:20:9:20 | After access to parameter b [false] | Assert.cs:7:10:7:11 | M1 | +| Assert.cs:9:20:9:20 | After access to parameter b [true] | Assert.cs:7:10:7:11 | M1 | +| Assert.cs:9:20:9:32 | After ... ? ... : ... | Assert.cs:7:10:7:11 | M1 | +| Assert.cs:10:9:10:31 | After call to method Assert | Assert.cs:7:10:7:11 | M1 | +| Assert.cs:14:10:14:11 | Entry | Assert.cs:14:10:14:11 | M2 | +| Assert.cs:14:10:14:11 | Exceptional Exit | Assert.cs:14:10:14:11 | M2 | +| Assert.cs:14:10:14:11 | Exit | Assert.cs:14:10:14:11 | M2 | +| Assert.cs:16:20:16:20 | After access to parameter b [false] | Assert.cs:14:10:14:11 | M2 | +| Assert.cs:16:20:16:20 | After access to parameter b [true] | Assert.cs:14:10:14:11 | M2 | +| Assert.cs:16:20:16:32 | After ... ? ... : ... | Assert.cs:14:10:14:11 | M2 | +| Assert.cs:17:9:17:24 | After call to method IsNull | Assert.cs:14:10:14:11 | M2 | +| Assert.cs:21:10:21:11 | Entry | Assert.cs:21:10:21:11 | M3 | +| Assert.cs:21:10:21:11 | Exceptional Exit | Assert.cs:21:10:21:11 | M3 | +| Assert.cs:21:10:21:11 | Exit | Assert.cs:21:10:21:11 | M3 | +| Assert.cs:23:20:23:20 | After access to parameter b [false] | Assert.cs:21:10:21:11 | M3 | +| Assert.cs:23:20:23:20 | After access to parameter b [true] | Assert.cs:21:10:21:11 | M3 | +| Assert.cs:23:20:23:32 | After ... ? ... : ... | Assert.cs:21:10:21:11 | M3 | +| Assert.cs:24:9:24:27 | After call to method IsNotNull | Assert.cs:21:10:21:11 | M3 | +| Assert.cs:28:10:28:11 | Entry | Assert.cs:28:10:28:11 | M4 | +| Assert.cs:28:10:28:11 | Exceptional Exit | Assert.cs:28:10:28:11 | M4 | +| Assert.cs:28:10:28:11 | Exit | Assert.cs:28:10:28:11 | M4 | +| Assert.cs:30:20:30:20 | After access to parameter b [false] | Assert.cs:28:10:28:11 | M4 | +| Assert.cs:30:20:30:20 | After access to parameter b [true] | Assert.cs:28:10:28:11 | M4 | +| Assert.cs:30:20:30:32 | After ... ? ... : ... | Assert.cs:28:10:28:11 | M4 | +| Assert.cs:31:9:31:32 | After call to method IsTrue | Assert.cs:28:10:28:11 | M4 | +| Assert.cs:35:10:35:11 | Entry | Assert.cs:35:10:35:11 | M5 | +| Assert.cs:35:10:35:11 | Exceptional Exit | Assert.cs:35:10:35:11 | M5 | +| Assert.cs:35:10:35:11 | Exit | Assert.cs:35:10:35:11 | M5 | +| Assert.cs:37:20:37:20 | After access to parameter b [false] | Assert.cs:35:10:35:11 | M5 | +| Assert.cs:37:20:37:20 | After access to parameter b [true] | Assert.cs:35:10:35:11 | M5 | +| Assert.cs:37:20:37:32 | After ... ? ... : ... | Assert.cs:35:10:35:11 | M5 | +| Assert.cs:38:9:38:32 | After call to method IsTrue | Assert.cs:35:10:35:11 | M5 | +| Assert.cs:42:10:42:11 | Entry | Assert.cs:42:10:42:11 | M6 | +| Assert.cs:42:10:42:11 | Exceptional Exit | Assert.cs:42:10:42:11 | M6 | +| Assert.cs:42:10:42:11 | Exit | Assert.cs:42:10:42:11 | M6 | +| Assert.cs:44:20:44:20 | After access to parameter b [false] | Assert.cs:42:10:42:11 | M6 | +| Assert.cs:44:20:44:20 | After access to parameter b [true] | Assert.cs:42:10:42:11 | M6 | +| Assert.cs:44:20:44:32 | After ... ? ... : ... | Assert.cs:42:10:42:11 | M6 | +| Assert.cs:45:9:45:33 | After call to method IsFalse | Assert.cs:42:10:42:11 | M6 | +| Assert.cs:49:10:49:11 | Entry | Assert.cs:49:10:49:11 | M7 | +| Assert.cs:49:10:49:11 | Exceptional Exit | Assert.cs:49:10:49:11 | M7 | +| Assert.cs:49:10:49:11 | Exit | Assert.cs:49:10:49:11 | M7 | +| Assert.cs:51:20:51:20 | After access to parameter b [false] | Assert.cs:49:10:49:11 | M7 | +| Assert.cs:51:20:51:20 | After access to parameter b [true] | Assert.cs:49:10:49:11 | M7 | +| Assert.cs:51:20:51:32 | After ... ? ... : ... | Assert.cs:49:10:49:11 | M7 | +| Assert.cs:52:9:52:33 | After call to method IsFalse | Assert.cs:49:10:49:11 | M7 | +| Assert.cs:56:10:56:11 | Entry | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:56:10:56:11 | Exceptional Exit | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:56:10:56:11 | Exit | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:58:20:58:20 | After access to parameter b [false] | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:58:20:58:20 | After access to parameter b [true] | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:58:20:58:32 | After ... ? ... : ... | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:59:9:59:37 | After call to method IsTrue | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:59:23:59:31 | After ... != ... [false] | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:59:23:59:31 | After ... != ... [true] | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:59:23:59:36 | After ... && ... | Assert.cs:56:10:56:11 | M8 | +| Assert.cs:63:10:63:11 | Entry | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:63:10:63:11 | Exceptional Exit | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:63:10:63:11 | Exit | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:65:20:65:20 | After access to parameter b [false] | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:65:20:65:20 | After access to parameter b [true] | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:65:20:65:32 | After ... ? ... : ... | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:66:9:66:38 | After call to method IsFalse | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:66:24:66:32 | After ... == ... [false] | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:66:24:66:32 | After ... == ... [true] | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:66:24:66:37 | After ... \|\| ... | Assert.cs:63:10:63:11 | M9 | +| Assert.cs:70:10:70:12 | Entry | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:70:10:70:12 | Exceptional Exit | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:70:10:70:12 | Exit | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:72:20:72:20 | After access to parameter b [false] | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:72:20:72:20 | After access to parameter b [true] | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:72:20:72:32 | After ... ? ... : ... | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:73:9:73:37 | After call to method IsTrue | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:73:23:73:31 | After ... == ... [false] | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:73:23:73:31 | After ... == ... [true] | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:73:23:73:36 | After ... && ... | Assert.cs:70:10:70:12 | M10 | +| Assert.cs:77:10:77:12 | Entry | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:77:10:77:12 | Exceptional Exit | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:77:10:77:12 | Exit | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:79:20:79:20 | After access to parameter b [false] | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:79:20:79:20 | After access to parameter b [true] | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:79:20:79:32 | After ... ? ... : ... | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:80:9:80:38 | After call to method IsFalse | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:80:24:80:32 | After ... != ... [false] | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:80:24:80:32 | After ... != ... [true] | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:80:24:80:37 | After ... \|\| ... | Assert.cs:77:10:77:12 | M11 | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:84:10:84:12 | Exceptional Exit | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:84:10:84:12 | Exit | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:86:20:86:20 | After access to parameter b [false] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:86:20:86:20 | After access to parameter b [true] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:90:13:90:13 | After access to parameter b [false] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:90:13:90:13 | After access to parameter b [true] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:94:13:94:13 | After access to parameter b [false] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:94:13:94:13 | After access to parameter b [true] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:98:13:98:13 | After access to parameter b [false] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:98:13:98:13 | After access to parameter b [true] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:102:13:102:13 | After access to parameter b [false] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:102:13:102:13 | After access to parameter b [true] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:106:13:106:13 | After access to parameter b [false] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:106:13:106:13 | After access to parameter b [true] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:110:13:110:13 | After access to parameter b [false] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:110:13:110:13 | After access to parameter b [true] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:114:13:114:13 | After access to parameter b [false] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:114:13:114:13 | After access to parameter b [true] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:115:23:115:31 | After ... != ... [false] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:115:23:115:31 | After ... != ... [true] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:118:13:118:13 | After access to parameter b [false] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:118:13:118:13 | After access to parameter b [true] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:119:24:119:32 | After ... == ... [false] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:119:24:119:32 | After ... == ... [true] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:122:13:122:13 | After access to parameter b [false] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:122:13:122:13 | After access to parameter b [true] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:123:23:123:31 | After ... == ... [false] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:123:23:123:31 | After ... == ... [true] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:126:13:126:13 | After access to parameter b [false] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:126:13:126:13 | After access to parameter b [true] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:127:24:127:32 | After ... != ... [false] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:127:24:127:32 | After ... != ... [true] | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:84:10:84:12 | M12 | +| Assert.cs:131:18:131:32 | Entry | Assert.cs:131:18:131:32 | AssertTrueFalse | +| Assert.cs:138:10:138:12 | Entry | Assert.cs:138:10:138:12 | M13 | +| Assert.cs:138:10:138:12 | Exceptional Exit | Assert.cs:138:10:138:12 | M13 | +| Assert.cs:138:10:138:12 | Exit | Assert.cs:138:10:138:12 | M13 | +| Assert.cs:140:9:140:35 | After call to method AssertTrueFalse | Assert.cs:138:10:138:12 | M13 | +| Assignments.cs:1:7:1:17 | Entry | Assignments.cs:1:7:1:17 | Assignments | +| Assignments.cs:3:10:3:10 | Entry | Assignments.cs:3:10:3:10 | M | +| Assignments.cs:14:18:14:35 | Entry | Assignments.cs:14:18:14:35 | (...) => ... | +| Assignments.cs:17:40:17:40 | Entry | Assignments.cs:17:40:17:40 | + | +| Assignments.cs:27:10:27:23 | Entry | Assignments.cs:27:10:27:23 | SetParamSingle | +| Assignments.cs:32:10:32:22 | Entry | Assignments.cs:32:10:32:22 | SetParamMulti | +| Assignments.cs:38:10:38:11 | Entry | Assignments.cs:38:10:38:11 | M2 | +| BreakInTry.cs:1:7:1:16 | Entry | BreakInTry.cs:1:7:1:16 | BreakInTry | +| BreakInTry.cs:3:10:3:11 | Entry | BreakInTry.cs:3:10:3:11 | M1 | +| BreakInTry.cs:7:13:11:13 | After foreach (... ... in ...) ... | BreakInTry.cs:3:10:3:11 | M1 | | BreakInTry.cs:7:26:7:28 | String arg | BreakInTry.cs:3:10:3:11 | M1 | -| BreakInTry.cs:10:21:10:26 | break; | BreakInTry.cs:3:10:3:11 | M1 | -| BreakInTry.cs:14:9:17:9 | {...} | BreakInTry.cs:3:10:3:11 | M1 | -| BreakInTry.cs:16:17:16:17 | ; | BreakInTry.cs:3:10:3:11 | M1 | -| BreakInTry.cs:20:10:20:11 | enter M2 | BreakInTry.cs:20:10:20:11 | M2 | -| BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:20:10:20:11 | M2 | +| BreakInTry.cs:7:33:7:36 | After access to parameter args [empty] | BreakInTry.cs:3:10:3:11 | M1 | +| BreakInTry.cs:7:33:7:36 | After access to parameter args [non-empty] | BreakInTry.cs:3:10:3:11 | M1 | +| BreakInTry.cs:9:21:9:31 | After ... == ... [false] | BreakInTry.cs:3:10:3:11 | M1 | +| BreakInTry.cs:9:21:9:31 | After ... == ... [true] | BreakInTry.cs:3:10:3:11 | M1 | +| BreakInTry.cs:15:13:16:17 | After if (...) ... | BreakInTry.cs:3:10:3:11 | M1 | +| BreakInTry.cs:15:17:15:28 | After ... == ... [false] | BreakInTry.cs:3:10:3:11 | M1 | +| BreakInTry.cs:15:17:15:28 | After ... == ... [true] | BreakInTry.cs:3:10:3:11 | M1 | +| BreakInTry.cs:20:10:20:11 | Entry | BreakInTry.cs:20:10:20:11 | M2 | +| BreakInTry.cs:22:9:34:9 | After foreach (... ... in ...) ... | BreakInTry.cs:20:10:20:11 | M2 | | BreakInTry.cs:22:22:22:24 | String arg | BreakInTry.cs:20:10:20:11 | M2 | -| BreakInTry.cs:27:21:27:26 | break; | BreakInTry.cs:20:10:20:11 | M2 | +| BreakInTry.cs:22:29:22:32 | After access to parameter args [empty] | BreakInTry.cs:20:10:20:11 | M2 | +| BreakInTry.cs:22:29:22:32 | After access to parameter args [non-empty] | BreakInTry.cs:20:10:20:11 | M2 | +| BreakInTry.cs:24:13:33:13 | After try {...} ... | BreakInTry.cs:20:10:20:11 | M2 | +| BreakInTry.cs:26:21:26:31 | After ... == ... [false] | BreakInTry.cs:20:10:20:11 | M2 | +| BreakInTry.cs:26:21:26:31 | After ... == ... [true] | BreakInTry.cs:20:10:20:11 | M2 | | BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:20:10:20:11 | M2 | -| BreakInTry.cs:32:21:32:21 | ; | BreakInTry.cs:20:10:20:11 | M2 | -| BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:20:10:20:11 | M2 | -| BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:38:10:38:11 | M3 | -| BreakInTry.cs:38:10:38:11 | exit M3 (normal) | BreakInTry.cs:38:10:38:11 | M3 | -| BreakInTry.cs:43:17:43:23 | return ...; | BreakInTry.cs:38:10:38:11 | M3 | +| BreakInTry.cs:31:17:32:21 | After if (...) ... | BreakInTry.cs:20:10:20:11 | M2 | +| BreakInTry.cs:31:21:31:32 | After ... == ... [false] | BreakInTry.cs:20:10:20:11 | M2 | +| BreakInTry.cs:31:21:31:32 | After ... == ... [true] | BreakInTry.cs:20:10:20:11 | M2 | +| BreakInTry.cs:38:10:38:11 | Entry | BreakInTry.cs:38:10:38:11 | M3 | +| BreakInTry.cs:38:10:38:11 | Normal Exit | BreakInTry.cs:38:10:38:11 | M3 | +| BreakInTry.cs:40:9:52:9 | After try {...} ... | BreakInTry.cs:38:10:38:11 | M3 | +| BreakInTry.cs:42:17:42:28 | After ... == ... [false] | BreakInTry.cs:38:10:38:11 | M3 | +| BreakInTry.cs:42:17:42:28 | After ... == ... [true] | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:38:10:38:11 | M3 | -| BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:38:10:38:11 | M3 | +| BreakInTry.cs:47:13:51:13 | After foreach (... ... in ...) ... | BreakInTry.cs:38:10:38:11 | M3 | | BreakInTry.cs:47:26:47:28 | String arg | BreakInTry.cs:38:10:38:11 | M3 | -| BreakInTry.cs:50:21:50:26 | break; | BreakInTry.cs:38:10:38:11 | M3 | -| BreakInTry.cs:53:7:53:7 | ; | BreakInTry.cs:38:10:38:11 | M3 | -| BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:56:10:56:11 | M4 | -| BreakInTry.cs:56:10:56:11 | exit M4 (normal) | BreakInTry.cs:56:10:56:11 | M4 | -| BreakInTry.cs:61:17:61:23 | return ...; | BreakInTry.cs:56:10:56:11 | M4 | +| BreakInTry.cs:47:33:47:36 | After access to parameter args [empty] | BreakInTry.cs:38:10:38:11 | M3 | +| BreakInTry.cs:47:33:47:36 | After access to parameter args [non-empty] | BreakInTry.cs:38:10:38:11 | M3 | +| BreakInTry.cs:49:21:49:31 | After ... == ... [false] | BreakInTry.cs:38:10:38:11 | M3 | +| BreakInTry.cs:49:21:49:31 | After ... == ... [true] | BreakInTry.cs:38:10:38:11 | M3 | +| BreakInTry.cs:56:10:56:11 | Entry | BreakInTry.cs:56:10:56:11 | M4 | +| BreakInTry.cs:56:10:56:11 | Normal Exit | BreakInTry.cs:56:10:56:11 | M4 | +| BreakInTry.cs:58:9:70:9 | After try {...} ... | BreakInTry.cs:56:10:56:11 | M4 | +| BreakInTry.cs:60:17:60:28 | After ... == ... [false] | BreakInTry.cs:56:10:56:11 | M4 | +| BreakInTry.cs:60:17:60:28 | After ... == ... [true] | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:56:10:56:11 | M4 | -| BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:56:10:56:11 | M4 | +| BreakInTry.cs:65:13:69:13 | After foreach (... ... in ...) ... | BreakInTry.cs:56:10:56:11 | M4 | | BreakInTry.cs:65:26:65:28 | String arg | BreakInTry.cs:56:10:56:11 | M4 | -| BreakInTry.cs:68:21:68:26 | break; | BreakInTry.cs:56:10:56:11 | M4 | -| CompileTimeOperators.cs:3:7:3:26 | enter CompileTimeOperators | CompileTimeOperators.cs:3:7:3:26 | CompileTimeOperators | -| CompileTimeOperators.cs:5:9:5:15 | enter Default | CompileTimeOperators.cs:5:9:5:15 | Default | -| CompileTimeOperators.cs:10:9:10:14 | enter Sizeof | CompileTimeOperators.cs:10:9:10:14 | Sizeof | -| CompileTimeOperators.cs:15:10:15:15 | enter Typeof | CompileTimeOperators.cs:15:10:15:15 | Typeof | -| CompileTimeOperators.cs:20:12:20:17 | enter Nameof | CompileTimeOperators.cs:20:12:20:17 | Nameof | -| CompileTimeOperators.cs:26:7:26:22 | enter GotoInTryFinally | CompileTimeOperators.cs:26:7:26:22 | GotoInTryFinally | -| CompileTimeOperators.cs:28:10:28:10 | enter M | CompileTimeOperators.cs:28:10:28:10 | M | -| CompileTimeOperators.cs:28:10:28:10 | exit M | CompileTimeOperators.cs:28:10:28:10 | M | -| CompileTimeOperators.cs:28:10:28:10 | exit M (abnormal) | CompileTimeOperators.cs:28:10:28:10 | M | -| CompileTimeOperators.cs:39:9:39:34 | ...; | CompileTimeOperators.cs:28:10:28:10 | M | +| BreakInTry.cs:65:33:65:36 | After access to parameter args [empty] | BreakInTry.cs:56:10:56:11 | M4 | +| BreakInTry.cs:65:33:65:36 | After access to parameter args [non-empty] | BreakInTry.cs:56:10:56:11 | M4 | +| BreakInTry.cs:67:21:67:31 | After ... == ... [false] | BreakInTry.cs:56:10:56:11 | M4 | +| BreakInTry.cs:67:21:67:31 | After ... == ... [true] | BreakInTry.cs:56:10:56:11 | M4 | +| CompileTimeOperators.cs:3:7:3:26 | Entry | CompileTimeOperators.cs:3:7:3:26 | CompileTimeOperators | +| CompileTimeOperators.cs:5:9:5:15 | Entry | CompileTimeOperators.cs:5:9:5:15 | Default | +| CompileTimeOperators.cs:10:9:10:14 | Entry | CompileTimeOperators.cs:10:9:10:14 | Sizeof | +| CompileTimeOperators.cs:15:10:15:15 | Entry | CompileTimeOperators.cs:15:10:15:15 | Typeof | +| CompileTimeOperators.cs:20:12:20:17 | Entry | CompileTimeOperators.cs:20:12:20:17 | Nameof | +| CompileTimeOperators.cs:26:7:26:22 | Entry | CompileTimeOperators.cs:26:7:26:22 | GotoInTryFinally | +| CompileTimeOperators.cs:28:10:28:10 | Entry | CompileTimeOperators.cs:28:10:28:10 | M | +| CompileTimeOperators.cs:28:10:28:10 | Exceptional Exit | CompileTimeOperators.cs:28:10:28:10 | M | +| CompileTimeOperators.cs:28:10:28:10 | Exit | CompileTimeOperators.cs:28:10:28:10 | M | +| CompileTimeOperators.cs:30:9:38:9 | After try {...} ... | CompileTimeOperators.cs:28:10:28:10 | M | | CompileTimeOperators.cs:40:9:40:11 | End: | CompileTimeOperators.cs:28:10:28:10 | M | -| ConditionalAccess.cs:1:7:1:23 | enter ConditionalAccess | ConditionalAccess.cs:1:7:1:23 | ConditionalAccess | -| ConditionalAccess.cs:3:12:3:13 | enter M1 | ConditionalAccess.cs:3:12:3:13 | M1 | -| ConditionalAccess.cs:3:12:3:13 | exit M1 (normal) | ConditionalAccess.cs:3:12:3:13 | M1 | -| ConditionalAccess.cs:3:26:3:38 | call to method ToString | ConditionalAccess.cs:3:12:3:13 | M1 | -| ConditionalAccess.cs:3:26:3:49 | call to method ToLower | ConditionalAccess.cs:3:12:3:13 | M1 | -| ConditionalAccess.cs:5:10:5:11 | enter M2 | ConditionalAccess.cs:5:10:5:11 | M2 | -| ConditionalAccess.cs:5:10:5:11 | exit M2 (normal) | ConditionalAccess.cs:5:10:5:11 | M2 | -| ConditionalAccess.cs:5:26:5:34 | access to property Length | ConditionalAccess.cs:5:10:5:11 | M2 | -| ConditionalAccess.cs:7:10:7:11 | enter M3 | ConditionalAccess.cs:7:10:7:11 | M3 | -| ConditionalAccess.cs:7:10:7:11 | exit M3 (normal) | ConditionalAccess.cs:7:10:7:11 | M3 | -| ConditionalAccess.cs:7:38:7:55 | access to property Length | ConditionalAccess.cs:7:10:7:11 | M3 | -| ConditionalAccess.cs:7:39:7:46 | ... ?? ... | ConditionalAccess.cs:7:10:7:11 | M3 | -| ConditionalAccess.cs:7:39:7:46 | [non-null] ... ?? ... | ConditionalAccess.cs:7:10:7:11 | M3 | -| ConditionalAccess.cs:7:39:7:46 | [null] ... ?? ... | ConditionalAccess.cs:7:10:7:11 | M3 | -| ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | ConditionalAccess.cs:7:10:7:11 | M3 | -| ConditionalAccess.cs:9:9:9:10 | enter M4 | ConditionalAccess.cs:9:9:9:10 | M4 | -| ConditionalAccess.cs:9:25:9:33 | access to property Length | ConditionalAccess.cs:9:9:9:10 | M4 | -| ConditionalAccess.cs:9:25:9:38 | ... ?? ... | ConditionalAccess.cs:9:9:9:10 | M4 | -| ConditionalAccess.cs:9:38:9:38 | 0 | ConditionalAccess.cs:9:9:9:10 | M4 | -| ConditionalAccess.cs:11:9:11:10 | enter M5 | ConditionalAccess.cs:11:9:11:10 | M5 | -| ConditionalAccess.cs:11:9:11:10 | exit M5 (normal) | ConditionalAccess.cs:11:9:11:10 | M5 | -| ConditionalAccess.cs:13:13:13:21 | access to property Length | ConditionalAccess.cs:11:9:11:10 | M5 | -| ConditionalAccess.cs:13:25:13:25 | 0 | ConditionalAccess.cs:11:9:11:10 | M5 | -| ConditionalAccess.cs:14:20:14:20 | 0 | ConditionalAccess.cs:11:9:11:10 | M5 | -| ConditionalAccess.cs:16:20:16:20 | 1 | ConditionalAccess.cs:11:9:11:10 | M5 | -| ConditionalAccess.cs:19:12:19:13 | enter M6 | ConditionalAccess.cs:19:12:19:13 | M6 | -| ConditionalAccess.cs:19:12:19:13 | exit M6 (normal) | ConditionalAccess.cs:19:12:19:13 | M6 | -| ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | ConditionalAccess.cs:19:12:19:13 | M6 | -| ConditionalAccess.cs:21:10:21:11 | enter M7 | ConditionalAccess.cs:21:10:21:11 | M7 | -| ConditionalAccess.cs:23:13:23:38 | Nullable j = ... | ConditionalAccess.cs:21:10:21:11 | M7 | -| ConditionalAccess.cs:24:17:24:37 | call to method ToString | ConditionalAccess.cs:21:10:21:11 | M7 | -| ConditionalAccess.cs:25:31:25:31 | access to local variable s | ConditionalAccess.cs:21:10:21:11 | M7 | -| ConditionalAccess.cs:30:10:30:12 | enter Out | ConditionalAccess.cs:30:10:30:12 | Out | -| ConditionalAccess.cs:32:10:32:11 | enter M8 | ConditionalAccess.cs:32:10:32:11 | M8 | -| ConditionalAccess.cs:32:10:32:11 | exit M8 (normal) | ConditionalAccess.cs:32:10:32:11 | M8 | -| ConditionalAccess.cs:35:9:35:24 | call to method Out | ConditionalAccess.cs:32:10:32:11 | M8 | -| ConditionalAccess.cs:42:9:42:11 | enter get_Item | ConditionalAccess.cs:42:9:42:11 | get_Item | -| ConditionalAccess.cs:43:9:43:11 | enter set_Item | ConditionalAccess.cs:43:9:43:11 | set_Item | -| ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:46:10:46:11 | M9 | -| ConditionalAccess.cs:48:24:48:25 | 42 | ConditionalAccess.cs:46:10:46:11 | M9 | -| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:46:10:46:11 | M9 | -| ConditionalAccess.cs:49:26:49:32 | "Hello" | ConditionalAccess.cs:46:10:46:11 | M9 | -| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:46:10:46:11 | M9 | -| ConditionalAccess.cs:50:13:50:13 | 0 | ConditionalAccess.cs:46:10:46:11 | M9 | -| ConditionalAccess.cs:51:9:51:16 | access to property Prop | ConditionalAccess.cs:46:10:46:11 | M9 | -| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:46:10:46:11 | M9 | -| ConditionalAccess.cs:51:30:51:31 | 84 | ConditionalAccess.cs:46:10:46:11 | M9 | -| ConditionalAccess.cs:52:9:52:16 | access to property Prop | ConditionalAccess.cs:46:10:46:11 | M9 | -| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:46:10:46:11 | M9 | -| ConditionalAccess.cs:52:32:52:38 | "World" | ConditionalAccess.cs:46:10:46:11 | M9 | -| ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:46:10:46:11 | M9 | -| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:46:10:46:11 | M9 | -| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:46:10:46:11 | M9 | -| ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:46:10:46:11 | M9 | -| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:46:10:46:11 | M9 | -| ConditionalAccess.cs:60:26:60:38 | enter CommaJoinWith | ConditionalAccess.cs:60:26:60:38 | CommaJoinWith | -| Conditions.cs:1:7:1:16 | enter Conditions | Conditions.cs:1:7:1:16 | Conditions | -| Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:3:10:3:19 | IncrOrDecr | -| Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | Conditions.cs:3:10:3:19 | IncrOrDecr | -| Conditions.cs:6:13:6:16 | ...; | Conditions.cs:3:10:3:19 | IncrOrDecr | -| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:3:10:3:19 | IncrOrDecr | -| Conditions.cs:7:13:7:16 | [false] !... | Conditions.cs:3:10:3:19 | IncrOrDecr | -| Conditions.cs:7:13:7:16 | [true] !... | Conditions.cs:3:10:3:19 | IncrOrDecr | -| Conditions.cs:8:13:8:16 | ...; | Conditions.cs:3:10:3:19 | IncrOrDecr | -| Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:11:9:11:10 | M1 | -| Conditions.cs:15:13:15:16 | ...; | Conditions.cs:11:9:11:10 | M1 | -| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:11:9:11:10 | M1 | -| Conditions.cs:17:13:18:20 | if (...) ... | Conditions.cs:11:9:11:10 | M1 | -| Conditions.cs:17:17:17:18 | [false] !... | Conditions.cs:11:9:11:10 | M1 | -| Conditions.cs:17:17:17:18 | [true] !... | Conditions.cs:11:9:11:10 | M1 | -| Conditions.cs:18:17:18:20 | ...; | Conditions.cs:11:9:11:10 | M1 | -| Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:11:9:11:10 | M1 | -| Conditions.cs:22:9:22:10 | enter M2 | Conditions.cs:22:9:22:10 | M2 | -| Conditions.cs:26:13:27:20 | if (...) ... | Conditions.cs:22:9:22:10 | M2 | -| Conditions.cs:27:17:27:20 | ...; | Conditions.cs:22:9:22:10 | M2 | -| Conditions.cs:28:9:29:16 | if (...) ... | Conditions.cs:22:9:22:10 | M2 | -| Conditions.cs:29:13:29:16 | ...; | Conditions.cs:22:9:22:10 | M2 | -| Conditions.cs:30:16:30:16 | access to local variable x | Conditions.cs:22:9:22:10 | M2 | -| Conditions.cs:33:9:33:10 | enter M3 | Conditions.cs:33:9:33:10 | M3 | -| Conditions.cs:38:13:38:20 | ...; | Conditions.cs:33:9:33:10 | M3 | -| Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:33:9:33:10 | M3 | -| Conditions.cs:40:13:40:16 | ...; | Conditions.cs:33:9:33:10 | M3 | -| Conditions.cs:41:9:42:16 | if (...) ... | Conditions.cs:33:9:33:10 | M3 | -| Conditions.cs:42:13:42:16 | ...; | Conditions.cs:33:9:33:10 | M3 | -| Conditions.cs:43:16:43:16 | access to local variable x | Conditions.cs:33:9:33:10 | M3 | -| Conditions.cs:46:9:46:10 | enter M4 | Conditions.cs:46:9:46:10 | M4 | -| Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:46:9:46:10 | M4 | -| Conditions.cs:50:9:53:9 | {...} | Conditions.cs:46:9:46:10 | M4 | -| Conditions.cs:52:17:52:20 | ...; | Conditions.cs:46:9:46:10 | M4 | -| Conditions.cs:54:16:54:16 | access to local variable y | Conditions.cs:46:9:46:10 | M4 | -| Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:57:9:57:10 | M5 | -| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:57:9:57:10 | M5 | -| Conditions.cs:61:9:64:9 | {...} | Conditions.cs:57:9:57:10 | M5 | -| Conditions.cs:63:17:63:20 | ...; | Conditions.cs:57:9:57:10 | M5 | -| Conditions.cs:65:9:66:16 | if (...) ... | Conditions.cs:57:9:57:10 | M5 | -| Conditions.cs:66:13:66:16 | ...; | Conditions.cs:57:9:57:10 | M5 | -| Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:57:9:57:10 | M5 | -| Conditions.cs:70:9:70:10 | enter M6 | Conditions.cs:70:9:70:10 | M6 | -| Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:70:9:70:10 | M6 | +| ConditionalAccess.cs:1:7:1:23 | Entry | ConditionalAccess.cs:1:7:1:23 | ConditionalAccess | +| ConditionalAccess.cs:3:12:3:13 | Entry | ConditionalAccess.cs:3:12:3:13 | M1 | +| ConditionalAccess.cs:3:26:3:26 | After access to parameter i [non-null] | ConditionalAccess.cs:3:12:3:13 | M1 | +| ConditionalAccess.cs:3:26:3:26 | After access to parameter i [null] | ConditionalAccess.cs:3:12:3:13 | M1 | +| ConditionalAccess.cs:3:26:3:38 | After call to method ToString [non-null] | ConditionalAccess.cs:3:12:3:13 | M1 | +| ConditionalAccess.cs:3:26:3:38 | After call to method ToString [null] | ConditionalAccess.cs:3:12:3:13 | M1 | +| ConditionalAccess.cs:3:26:3:49 | After call to method ToLower | ConditionalAccess.cs:3:12:3:13 | M1 | +| ConditionalAccess.cs:5:10:5:11 | Entry | ConditionalAccess.cs:5:10:5:11 | M2 | +| ConditionalAccess.cs:5:26:5:26 | After access to parameter s [non-null] | ConditionalAccess.cs:5:10:5:11 | M2 | +| ConditionalAccess.cs:5:26:5:26 | After access to parameter s [null] | ConditionalAccess.cs:5:10:5:11 | M2 | +| ConditionalAccess.cs:5:26:5:34 | After access to property Length | ConditionalAccess.cs:5:10:5:11 | M2 | +| ConditionalAccess.cs:7:10:7:11 | Entry | ConditionalAccess.cs:7:10:7:11 | M3 | +| ConditionalAccess.cs:7:38:7:55 | After access to property Length | ConditionalAccess.cs:7:10:7:11 | M3 | +| ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [non-null] | ConditionalAccess.cs:7:10:7:11 | M3 | +| ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [null] | ConditionalAccess.cs:7:10:7:11 | M3 | +| ConditionalAccess.cs:7:39:7:46 | After ... ?? ... [non-null] | ConditionalAccess.cs:7:10:7:11 | M3 | +| ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [non-null] | ConditionalAccess.cs:7:10:7:11 | M3 | +| ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [null] | ConditionalAccess.cs:7:10:7:11 | M3 | +| ConditionalAccess.cs:9:9:9:10 | Entry | ConditionalAccess.cs:9:9:9:10 | M4 | +| ConditionalAccess.cs:9:25:9:25 | After access to parameter s [non-null] | ConditionalAccess.cs:9:9:9:10 | M4 | +| ConditionalAccess.cs:9:25:9:25 | After access to parameter s [null] | ConditionalAccess.cs:9:9:9:10 | M4 | +| ConditionalAccess.cs:9:25:9:33 | After access to property Length [non-null] | ConditionalAccess.cs:9:9:9:10 | M4 | +| ConditionalAccess.cs:9:25:9:33 | After access to property Length [null] | ConditionalAccess.cs:9:9:9:10 | M4 | +| ConditionalAccess.cs:9:25:9:38 | After ... ?? ... | ConditionalAccess.cs:9:9:9:10 | M4 | +| ConditionalAccess.cs:11:9:11:10 | Entry | ConditionalAccess.cs:11:9:11:10 | M5 | +| ConditionalAccess.cs:11:9:11:10 | Normal Exit | ConditionalAccess.cs:11:9:11:10 | M5 | +| ConditionalAccess.cs:13:13:13:13 | After access to parameter s [non-null] | ConditionalAccess.cs:11:9:11:10 | M5 | +| ConditionalAccess.cs:13:13:13:13 | After access to parameter s [null] | ConditionalAccess.cs:11:9:11:10 | M5 | +| ConditionalAccess.cs:13:13:13:21 | After access to property Length | ConditionalAccess.cs:11:9:11:10 | M5 | +| ConditionalAccess.cs:13:13:13:25 | After ... > ... [false] | ConditionalAccess.cs:11:9:11:10 | M5 | +| ConditionalAccess.cs:13:13:13:25 | After ... > ... [true] | ConditionalAccess.cs:11:9:11:10 | M5 | +| ConditionalAccess.cs:19:12:19:13 | Entry | ConditionalAccess.cs:19:12:19:13 | M6 | +| ConditionalAccess.cs:19:40:19:41 | After access to parameter s1 [non-null] | ConditionalAccess.cs:19:12:19:13 | M6 | +| ConditionalAccess.cs:19:40:19:41 | After access to parameter s1 [null] | ConditionalAccess.cs:19:12:19:13 | M6 | +| ConditionalAccess.cs:19:40:19:60 | After call to method CommaJoinWith | ConditionalAccess.cs:19:12:19:13 | M6 | +| ConditionalAccess.cs:21:10:21:11 | Entry | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:23:17:23:38 | After access to property Length | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:23:18:23:29 | After (...) ... [non-null] | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:23:18:23:29 | After (...) ... [null] | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:24:17:24:37 | After call to method ToString | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:24:18:24:24 | After (...) ... [non-null] | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:24:18:24:24 | After (...) ... [null] | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:25:13:25:14 | After "" [non-null] | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:25:13:25:14 | After "" [null] | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:25:13:25:32 | After call to method CommaJoinWith | ConditionalAccess.cs:21:10:21:11 | M7 | +| ConditionalAccess.cs:30:10:30:12 | Entry | ConditionalAccess.cs:30:10:30:12 | Out | +| ConditionalAccess.cs:32:10:32:11 | Entry | ConditionalAccess.cs:32:10:32:11 | M8 | +| ConditionalAccess.cs:35:9:35:12 | After access to property Prop [non-null] | ConditionalAccess.cs:32:10:32:11 | M8 | +| ConditionalAccess.cs:35:9:35:12 | After access to property Prop [null] | ConditionalAccess.cs:32:10:32:11 | M8 | +| ConditionalAccess.cs:35:9:35:24 | After call to method Out | ConditionalAccess.cs:32:10:32:11 | M8 | +| ConditionalAccess.cs:42:9:42:11 | Entry | ConditionalAccess.cs:42:9:42:11 | get_Item | +| ConditionalAccess.cs:43:9:43:11 | Entry | ConditionalAccess.cs:43:9:43:11 | set_Item | +| ConditionalAccess.cs:46:10:46:11 | Entry | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [null] | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:48:12:48:25 | After ... = ... | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [null] | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:49:12:49:32 | After ... = ... | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [null] | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:50:12:50:23 | After ... = ... | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [null] | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:51:9:51:16 | After access to property Prop [non-null] | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:51:9:51:16 | After access to property Prop [null] | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:51:18:51:31 | After ... = ... | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [null] | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:52:9:52:16 | After access to property Prop [non-null] | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:52:9:52:16 | After access to property Prop [null] | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:52:18:52:38 | After ... = ... | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [null] | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:53:12:53:25 | After ... -= ... | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [null] | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:54:12:54:29 | After ... += ... | ConditionalAccess.cs:46:10:46:11 | M9 | +| ConditionalAccess.cs:60:26:60:38 | Entry | ConditionalAccess.cs:60:26:60:38 | CommaJoinWith | +| Conditions.cs:1:7:1:16 | Entry | Conditions.cs:1:7:1:16 | Conditions | +| Conditions.cs:3:10:3:19 | Entry | Conditions.cs:3:10:3:19 | IncrOrDecr | +| Conditions.cs:5:9:6:16 | After if (...) ... | Conditions.cs:3:10:3:19 | IncrOrDecr | +| Conditions.cs:5:13:5:15 | After access to parameter inc [false] | Conditions.cs:3:10:3:19 | IncrOrDecr | +| Conditions.cs:5:13:5:15 | After access to parameter inc [true] | Conditions.cs:3:10:3:19 | IncrOrDecr | +| Conditions.cs:7:9:8:16 | After if (...) ... | Conditions.cs:3:10:3:19 | IncrOrDecr | +| Conditions.cs:7:14:7:16 | After access to parameter inc [false] | Conditions.cs:3:10:3:19 | IncrOrDecr | +| Conditions.cs:7:14:7:16 | After access to parameter inc [true] | Conditions.cs:3:10:3:19 | IncrOrDecr | +| Conditions.cs:11:9:11:10 | Entry | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:14:9:15:16 | After if (...) ... | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:14:13:14:13 | After access to parameter b [false] | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:14:13:14:13 | After access to parameter b [true] | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:16:9:18:20 | After if (...) ... | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:16:13:16:17 | After ... > ... [false] | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:16:13:16:17 | After ... > ... [true] | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:17:13:18:20 | After if (...) ... | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:17:18:17:18 | After access to parameter b [false] | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:17:18:17:18 | After access to parameter b [true] | Conditions.cs:11:9:11:10 | M1 | +| Conditions.cs:22:9:22:10 | Entry | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:25:9:27:20 | After if (...) ... | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:25:13:25:14 | After access to parameter b1 [false] | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:25:13:25:14 | After access to parameter b1 [true] | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:26:13:27:20 | After if (...) ... | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:26:17:26:18 | After access to parameter b2 [false] | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:26:17:26:18 | After access to parameter b2 [true] | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:28:9:29:16 | After if (...) ... | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:28:13:28:14 | After access to parameter b2 [false] | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:28:13:28:14 | After access to parameter b2 [true] | Conditions.cs:22:9:22:10 | M2 | +| Conditions.cs:33:9:33:10 | Entry | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:37:9:38:20 | After if (...) ... | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:37:13:37:14 | After access to parameter b1 [false] | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:37:13:37:14 | After access to parameter b1 [true] | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:39:9:40:16 | After if (...) ... | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:39:13:39:14 | After access to local variable b2 [false] | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:39:13:39:14 | After access to local variable b2 [true] | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:41:9:42:16 | After if (...) ... | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:41:13:41:14 | After access to local variable b2 [false] | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:41:13:41:14 | After access to local variable b2 [true] | Conditions.cs:33:9:33:10 | M3 | +| Conditions.cs:46:9:46:10 | Entry | Conditions.cs:46:9:46:10 | M4 | +| Conditions.cs:49:9:53:9 | [LoopHeader] while (...) ... | Conditions.cs:46:9:46:10 | M4 | +| Conditions.cs:49:16:49:22 | After ... > ... [false] | Conditions.cs:46:9:46:10 | M4 | +| Conditions.cs:49:16:49:22 | After ... > ... [true] | Conditions.cs:46:9:46:10 | M4 | +| Conditions.cs:51:13:52:20 | After if (...) ... | Conditions.cs:46:9:46:10 | M4 | +| Conditions.cs:51:17:51:17 | After access to parameter b [false] | Conditions.cs:46:9:46:10 | M4 | +| Conditions.cs:51:17:51:17 | After access to parameter b [true] | Conditions.cs:46:9:46:10 | M4 | +| Conditions.cs:57:9:57:10 | Entry | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:60:16:60:22 | After ... > ... [false] | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:60:16:60:22 | After ... > ... [true] | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:62:13:63:20 | After if (...) ... | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:62:17:62:17 | After access to parameter b [false] | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:62:17:62:17 | After access to parameter b [true] | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:65:9:66:16 | After if (...) ... | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:65:13:65:13 | After access to parameter b [false] | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:65:13:65:13 | After access to parameter b [true] | Conditions.cs:57:9:57:10 | M5 | +| Conditions.cs:70:9:70:10 | Entry | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:74:9:80:9 | After foreach (... ... in ...) ... | Conditions.cs:70:9:70:10 | M6 | | Conditions.cs:74:22:74:22 | String _ | Conditions.cs:70:9:70:10 | M6 | -| Conditions.cs:77:17:77:20 | ...; | Conditions.cs:70:9:70:10 | M6 | -| Conditions.cs:78:13:79:26 | if (...) ... | Conditions.cs:70:9:70:10 | M6 | -| Conditions.cs:79:17:79:26 | ...; | Conditions.cs:70:9:70:10 | M6 | -| Conditions.cs:81:9:82:16 | if (...) ... | Conditions.cs:70:9:70:10 | M6 | -| Conditions.cs:82:13:82:16 | ...; | Conditions.cs:70:9:70:10 | M6 | -| Conditions.cs:83:16:83:16 | access to local variable x | Conditions.cs:70:9:70:10 | M6 | -| Conditions.cs:86:9:86:10 | enter M7 | Conditions.cs:86:9:86:10 | M7 | -| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:74:27:74:28 | After access to parameter ss [empty] | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:74:27:74:28 | After access to parameter ss [non-empty] | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:76:13:77:20 | After if (...) ... | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:76:17:76:17 | After access to local variable b [false] | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:76:17:76:17 | After access to local variable b [true] | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:78:13:79:26 | After if (...) ... | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:78:17:78:21 | After ... > ... [false] | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:78:17:78:21 | After ... > ... [true] | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:81:9:82:16 | After if (...) ... | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:81:13:81:13 | After access to local variable b [false] | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:81:13:81:13 | After access to local variable b [true] | Conditions.cs:70:9:70:10 | M6 | +| Conditions.cs:86:9:86:10 | Entry | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:90:9:98:9 | After foreach (... ... in ...) ... | Conditions.cs:86:9:86:10 | M7 | | Conditions.cs:90:22:90:22 | String _ | Conditions.cs:86:9:86:10 | M7 | -| Conditions.cs:93:17:93:20 | ...; | Conditions.cs:86:9:86:10 | M7 | -| Conditions.cs:94:13:95:26 | if (...) ... | Conditions.cs:86:9:86:10 | M7 | -| Conditions.cs:95:17:95:26 | ...; | Conditions.cs:86:9:86:10 | M7 | -| Conditions.cs:96:13:97:20 | if (...) ... | Conditions.cs:86:9:86:10 | M7 | -| Conditions.cs:97:17:97:20 | ...; | Conditions.cs:86:9:86:10 | M7 | -| Conditions.cs:99:16:99:16 | access to local variable x | Conditions.cs:86:9:86:10 | M7 | -| Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:106:13:106:20 | ...; | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:108:13:109:24 | if (...) ... | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:108:17:108:18 | [false] !... | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:108:17:108:18 | [true] !... | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:109:17:109:24 | ...; | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:102:12:102:13 | M8 | -| Conditions.cs:113:10:113:11 | enter M9 | Conditions.cs:113:10:113:11 | M9 | -| Conditions.cs:113:10:113:11 | exit M9 (normal) | Conditions.cs:113:10:113:11 | M9 | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:113:10:113:11 | M9 | -| Conditions.cs:116:42:116:42 | access to local variable i | Conditions.cs:113:10:113:11 | M9 | -| Conditions.cs:117:9:123:9 | {...} | Conditions.cs:113:10:113:11 | M9 | -| Conditions.cs:119:17:119:21 | [false] !... | Conditions.cs:113:10:113:11 | M9 | -| Conditions.cs:119:17:119:21 | [true] !... | Conditions.cs:113:10:113:11 | M9 | -| Conditions.cs:120:17:120:23 | ...; | Conditions.cs:113:10:113:11 | M9 | -| Conditions.cs:121:13:122:25 | if (...) ... | Conditions.cs:113:10:113:11 | M9 | -| Conditions.cs:122:17:122:25 | ...; | Conditions.cs:113:10:113:11 | M9 | -| Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:131:16:131:19 | true | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:132:9:140:9 | {...} | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:134:13:139:13 | {...} | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:136:17:138:17 | {...} | Conditions.cs:129:10:129:12 | M10 | -| Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:143:10:143:12 | M11 | -| Conditions.cs:143:10:143:12 | exit M11 (normal) | Conditions.cs:143:10:143:12 | M11 | -| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:143:10:143:12 | M11 | -| Conditions.cs:145:21:145:23 | "a" | Conditions.cs:143:10:143:12 | M11 | -| Conditions.cs:145:27:145:29 | "b" | Conditions.cs:143:10:143:12 | M11 | -| Conditions.cs:147:13:147:49 | ...; | Conditions.cs:143:10:143:12 | M11 | -| Conditions.cs:149:13:149:49 | ...; | Conditions.cs:143:10:143:12 | M11 | -| ExitMethods.cs:6:7:6:17 | enter ExitMethods | ExitMethods.cs:6:7:6:17 | ExitMethods | -| ExitMethods.cs:8:10:8:11 | enter M1 | ExitMethods.cs:8:10:8:11 | M1 | -| ExitMethods.cs:14:10:14:11 | enter M2 | ExitMethods.cs:14:10:14:11 | M2 | -| ExitMethods.cs:20:10:20:11 | enter M3 | ExitMethods.cs:20:10:20:11 | M3 | -| ExitMethods.cs:26:10:26:11 | enter M4 | ExitMethods.cs:26:10:26:11 | M4 | -| ExitMethods.cs:32:10:32:11 | enter M5 | ExitMethods.cs:32:10:32:11 | M5 | -| ExitMethods.cs:38:10:38:11 | enter M6 | ExitMethods.cs:38:10:38:11 | M6 | -| ExitMethods.cs:38:10:38:11 | exit M6 (normal) | ExitMethods.cs:38:10:38:11 | M6 | -| ExitMethods.cs:45:9:47:9 | {...} | ExitMethods.cs:38:10:38:11 | M6 | -| ExitMethods.cs:48:9:51:9 | catch (...) {...} | ExitMethods.cs:38:10:38:11 | M6 | -| ExitMethods.cs:49:9:51:9 | {...} | ExitMethods.cs:38:10:38:11 | M6 | -| ExitMethods.cs:54:10:54:11 | enter M7 | ExitMethods.cs:54:10:54:11 | M7 | -| ExitMethods.cs:60:10:60:11 | enter M8 | ExitMethods.cs:60:10:60:11 | M8 | -| ExitMethods.cs:66:17:66:26 | enter ErrorMaybe | ExitMethods.cs:66:17:66:26 | ErrorMaybe | -| ExitMethods.cs:66:17:66:26 | exit ErrorMaybe | ExitMethods.cs:66:17:66:26 | ErrorMaybe | -| ExitMethods.cs:66:17:66:26 | exit ErrorMaybe (normal) | ExitMethods.cs:66:17:66:26 | ErrorMaybe | -| ExitMethods.cs:69:19:69:33 | object creation of type Exception | ExitMethods.cs:66:17:66:26 | ErrorMaybe | -| ExitMethods.cs:72:17:72:27 | enter ErrorAlways | ExitMethods.cs:72:17:72:27 | ErrorAlways | -| ExitMethods.cs:72:17:72:27 | exit ErrorAlways (abnormal) | ExitMethods.cs:72:17:72:27 | ErrorAlways | -| ExitMethods.cs:75:19:75:33 | object creation of type Exception | ExitMethods.cs:72:17:72:27 | ErrorAlways | -| ExitMethods.cs:77:41:77:43 | "b" | ExitMethods.cs:72:17:72:27 | ErrorAlways | -| ExitMethods.cs:80:17:80:28 | enter ErrorAlways2 | ExitMethods.cs:80:17:80:28 | ErrorAlways2 | -| ExitMethods.cs:85:17:85:28 | enter ErrorAlways3 | ExitMethods.cs:85:17:85:28 | ErrorAlways3 | -| ExitMethods.cs:87:10:87:13 | enter Exit | ExitMethods.cs:87:10:87:13 | Exit | -| ExitMethods.cs:92:10:92:18 | enter ExitInTry | ExitMethods.cs:92:10:92:18 | ExitInTry | -| ExitMethods.cs:105:10:105:24 | enter ApplicationExit | ExitMethods.cs:105:10:105:24 | ApplicationExit | -| ExitMethods.cs:110:13:110:21 | enter ThrowExpr | ExitMethods.cs:110:13:110:21 | ThrowExpr | -| ExitMethods.cs:110:13:110:21 | exit ThrowExpr | ExitMethods.cs:110:13:110:21 | ThrowExpr | -| ExitMethods.cs:112:29:112:29 | 1 | ExitMethods.cs:110:13:110:21 | ThrowExpr | -| ExitMethods.cs:112:69:112:75 | "input" | ExitMethods.cs:110:13:110:21 | ThrowExpr | -| ExitMethods.cs:115:16:115:34 | enter ExtensionMethodCall | ExitMethods.cs:115:16:115:34 | ExtensionMethodCall | -| ExitMethods.cs:117:16:117:38 | ... ? ... : ... | ExitMethods.cs:115:16:115:34 | ExtensionMethodCall | -| ExitMethods.cs:117:34:117:34 | 0 | ExitMethods.cs:115:16:115:34 | ExtensionMethodCall | -| ExitMethods.cs:117:38:117:38 | 1 | ExitMethods.cs:115:16:115:34 | ExtensionMethodCall | -| ExitMethods.cs:120:17:120:32 | enter FailingAssertion | ExitMethods.cs:120:17:120:32 | FailingAssertion | -| ExitMethods.cs:126:17:126:33 | enter FailingAssertion2 | ExitMethods.cs:126:17:126:33 | FailingAssertion2 | -| ExitMethods.cs:132:10:132:20 | enter AssertFalse | ExitMethods.cs:132:10:132:20 | AssertFalse | -| ExitMethods.cs:132:10:132:20 | exit AssertFalse | ExitMethods.cs:132:10:132:20 | AssertFalse | -| ExitMethods.cs:132:10:132:20 | exit AssertFalse (abnormal) | ExitMethods.cs:132:10:132:20 | AssertFalse | -| ExitMethods.cs:132:10:132:20 | exit AssertFalse (normal) | ExitMethods.cs:132:10:132:20 | AssertFalse | -| ExitMethods.cs:134:17:134:33 | enter FailingAssertion3 | ExitMethods.cs:134:17:134:33 | FailingAssertion3 | -| ExitMethods.cs:140:17:140:42 | enter ExceptionDispatchInfoThrow | ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | -| ExitMethods.cs:140:17:140:42 | exit ExceptionDispatchInfoThrow (abnormal) | ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | -| ExitMethods.cs:143:13:143:43 | ...; | ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | -| ExitMethods.cs:145:13:145:53 | ...; | ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | -| Extensions.cs:5:23:5:29 | enter ToInt32 | Extensions.cs:5:23:5:29 | ToInt32 | -| Extensions.cs:10:24:10:29 | enter ToBool | Extensions.cs:10:24:10:29 | ToBool | -| Extensions.cs:15:23:15:33 | enter CallToInt32 | Extensions.cs:15:23:15:33 | CallToInt32 | -| Extensions.cs:20:17:20:20 | enter Main | Extensions.cs:20:17:20:20 | Main | -| Finally.cs:3:14:3:20 | enter Finally | Finally.cs:3:14:3:20 | Finally | -| Finally.cs:7:10:7:11 | enter M1 | Finally.cs:7:10:7:11 | M1 | -| Finally.cs:7:10:7:11 | exit M1 | Finally.cs:7:10:7:11 | M1 | -| Finally.cs:7:10:7:11 | exit M1 (abnormal) | Finally.cs:7:10:7:11 | M1 | -| Finally.cs:7:10:7:11 | exit M1 (normal) | Finally.cs:7:10:7:11 | M1 | -| Finally.cs:19:10:19:11 | enter M2 | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:19:10:19:11 | exit M2 | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:19:10:19:11 | exit M2 (abnormal) | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:24:13:24:19 | return ...; | Finally.cs:19:10:19:11 | M2 | +| Conditions.cs:90:27:90:28 | After access to parameter ss [empty] | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:90:27:90:28 | After access to parameter ss [non-empty] | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:92:13:93:20 | After if (...) ... | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:92:17:92:17 | After access to local variable b [false] | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:92:17:92:17 | After access to local variable b [true] | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:94:13:95:26 | After if (...) ... | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:94:17:94:21 | After ... > ... [false] | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:94:17:94:21 | After ... > ... [true] | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:96:13:97:20 | After if (...) ... | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:96:17:96:17 | After access to local variable b [false] | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:96:17:96:17 | After access to local variable b [true] | Conditions.cs:86:9:86:10 | M7 | +| Conditions.cs:102:12:102:13 | Entry | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:105:9:106:20 | After if (...) ... | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:105:13:105:13 | After access to parameter b [false] | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:105:13:105:13 | After access to parameter b [true] | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:107:9:109:24 | After if (...) ... | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:107:13:107:24 | After ... > ... [false] | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:107:13:107:24 | After ... > ... [true] | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:108:13:109:24 | After if (...) ... | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:108:18:108:18 | After access to parameter b [false] | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:108:18:108:18 | After access to parameter b [true] | Conditions.cs:102:12:102:13 | M8 | +| Conditions.cs:113:10:113:11 | Entry | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:116:25:116:39 | After ... < ... [false] | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:116:25:116:39 | After ... < ... [true] | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:116:25:116:39 | Before ... < ... | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:119:13:120:23 | After if (...) ... | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:119:18:119:21 | After access to local variable last [false] | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:119:18:119:21 | After access to local variable last [true] | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:121:13:122:25 | After if (...) ... | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:121:17:121:20 | After access to local variable last [false] | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:121:17:121:20 | After access to local variable last [true] | Conditions.cs:113:10:113:11 | M9 | +| Conditions.cs:129:10:129:12 | Entry | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:131:9:140:9 | [LoopHeader] while (...) ... | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:133:13:139:13 | After if (...) ... | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:133:17:133:22 | After access to field Field1 [false] | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:133:17:133:22 | After access to field Field1 [true] | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:135:17:138:17 | After if (...) ... | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:135:21:135:26 | After access to field Field2 [false] | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:135:21:135:26 | After access to field Field2 [true] | Conditions.cs:129:10:129:12 | M10 | +| Conditions.cs:143:10:143:12 | Entry | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:145:17:145:17 | After access to parameter b [false] | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:145:17:145:17 | After access to parameter b [true] | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:145:17:145:29 | After ... ? ... : ... | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:146:9:149:49 | After if (...) ... | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:146:13:146:13 | After access to parameter b [false] | Conditions.cs:143:10:143:12 | M11 | +| Conditions.cs:146:13:146:13 | After access to parameter b [true] | Conditions.cs:143:10:143:12 | M11 | +| DefaultParam.cs:1:7:1:18 | Entry | DefaultParam.cs:1:7:1:18 | DefaultParam | +| DefaultParam.cs:3:12:3:13 | Entry | DefaultParam.cs:3:12:3:13 | M1 | +| DefaultParam.cs:3:30:3:30 | After s [match] | DefaultParam.cs:3:12:3:13 | M1 | +| DefaultParam.cs:3:30:3:30 | After s [no-match] | DefaultParam.cs:3:12:3:13 | M1 | +| DefaultParam.cs:3:42:3:42 | After i [match] | DefaultParam.cs:3:12:3:13 | M1 | +| DefaultParam.cs:3:42:3:42 | After i [no-match] | DefaultParam.cs:3:12:3:13 | M1 | +| DefaultParam.cs:3:42:3:42 | i | DefaultParam.cs:3:12:3:13 | M1 | +| DefaultParam.cs:4:5:6:5 | {...} | DefaultParam.cs:3:12:3:13 | M1 | +| ExitMethods.cs:6:7:6:17 | Entry | ExitMethods.cs:6:7:6:17 | ExitMethods | +| ExitMethods.cs:8:10:8:11 | Entry | ExitMethods.cs:8:10:8:11 | M1 | +| ExitMethods.cs:14:10:14:11 | Entry | ExitMethods.cs:14:10:14:11 | M2 | +| ExitMethods.cs:20:10:20:11 | Entry | ExitMethods.cs:20:10:20:11 | M3 | +| ExitMethods.cs:26:10:26:11 | Entry | ExitMethods.cs:26:10:26:11 | M4 | +| ExitMethods.cs:32:10:32:11 | Entry | ExitMethods.cs:32:10:32:11 | M5 | +| ExitMethods.cs:38:10:38:11 | Entry | ExitMethods.cs:38:10:38:11 | M6 | +| ExitMethods.cs:38:10:38:11 | Exit | ExitMethods.cs:38:10:38:11 | M6 | +| ExitMethods.cs:38:10:38:11 | Normal Exit | ExitMethods.cs:38:10:38:11 | M6 | +| ExitMethods.cs:44:9:47:9 | After catch (...) {...} [match] | ExitMethods.cs:38:10:38:11 | M6 | +| ExitMethods.cs:44:9:47:9 | After catch (...) {...} [no-match] | ExitMethods.cs:38:10:38:11 | M6 | +| ExitMethods.cs:48:9:51:9 | After catch (...) {...} [match] | ExitMethods.cs:38:10:38:11 | M6 | +| ExitMethods.cs:48:9:51:9 | After catch (...) {...} [no-match] | ExitMethods.cs:38:10:38:11 | M6 | +| ExitMethods.cs:54:10:54:11 | Entry | ExitMethods.cs:54:10:54:11 | M7 | +| ExitMethods.cs:60:10:60:11 | Entry | ExitMethods.cs:60:10:60:11 | M8 | +| ExitMethods.cs:66:17:66:26 | Entry | ExitMethods.cs:66:17:66:26 | ErrorMaybe | +| ExitMethods.cs:66:17:66:26 | Exit | ExitMethods.cs:66:17:66:26 | ErrorMaybe | +| ExitMethods.cs:68:13:68:13 | After access to parameter b [false] | ExitMethods.cs:66:17:66:26 | ErrorMaybe | +| ExitMethods.cs:68:13:68:13 | After access to parameter b [true] | ExitMethods.cs:66:17:66:26 | ErrorMaybe | +| ExitMethods.cs:72:17:72:27 | Entry | ExitMethods.cs:72:17:72:27 | ErrorAlways | +| ExitMethods.cs:72:17:72:27 | Exceptional Exit | ExitMethods.cs:72:17:72:27 | ErrorAlways | +| ExitMethods.cs:74:13:74:13 | After access to parameter b [false] | ExitMethods.cs:72:17:72:27 | ErrorAlways | +| ExitMethods.cs:74:13:74:13 | After access to parameter b [true] | ExitMethods.cs:72:17:72:27 | ErrorAlways | +| ExitMethods.cs:80:17:80:28 | Entry | ExitMethods.cs:80:17:80:28 | ErrorAlways2 | +| ExitMethods.cs:85:17:85:28 | Entry | ExitMethods.cs:85:17:85:28 | ErrorAlways3 | +| ExitMethods.cs:87:10:87:13 | Entry | ExitMethods.cs:87:10:87:13 | Exit | +| ExitMethods.cs:92:10:92:18 | Entry | ExitMethods.cs:92:10:92:18 | ExitInTry | +| ExitMethods.cs:92:10:92:18 | Exceptional Exit | ExitMethods.cs:92:10:92:18 | ExitInTry | +| ExitMethods.cs:92:10:92:18 | Exit | ExitMethods.cs:92:10:92:18 | ExitInTry | +| ExitMethods.cs:94:9:102:9 | After try {...} ... | ExitMethods.cs:92:10:92:18 | ExitInTry | +| ExitMethods.cs:105:10:105:24 | Entry | ExitMethods.cs:105:10:105:24 | ApplicationExit | +| ExitMethods.cs:110:13:110:21 | Entry | ExitMethods.cs:110:13:110:21 | ThrowExpr | +| ExitMethods.cs:110:13:110:21 | Exit | ExitMethods.cs:110:13:110:21 | ThrowExpr | +| ExitMethods.cs:112:16:112:25 | After ... != ... [false] | ExitMethods.cs:110:13:110:21 | ThrowExpr | +| ExitMethods.cs:112:16:112:25 | After ... != ... [true] | ExitMethods.cs:110:13:110:21 | ThrowExpr | +| ExitMethods.cs:115:16:115:34 | Entry | ExitMethods.cs:115:16:115:34 | ExtensionMethodCall | +| ExitMethods.cs:117:16:117:30 | After call to method Contains [false] | ExitMethods.cs:115:16:115:34 | ExtensionMethodCall | +| ExitMethods.cs:117:16:117:30 | After call to method Contains [true] | ExitMethods.cs:115:16:115:34 | ExtensionMethodCall | +| ExitMethods.cs:117:16:117:38 | After ... ? ... : ... | ExitMethods.cs:115:16:115:34 | ExtensionMethodCall | +| ExitMethods.cs:120:17:120:32 | Entry | ExitMethods.cs:120:17:120:32 | FailingAssertion | +| ExitMethods.cs:126:17:126:33 | Entry | ExitMethods.cs:126:17:126:33 | FailingAssertion2 | +| ExitMethods.cs:132:10:132:20 | Entry | ExitMethods.cs:132:10:132:20 | AssertFalse | +| ExitMethods.cs:132:10:132:20 | Exceptional Exit | ExitMethods.cs:132:10:132:20 | AssertFalse | +| ExitMethods.cs:132:10:132:20 | Exit | ExitMethods.cs:132:10:132:20 | AssertFalse | +| ExitMethods.cs:132:33:132:49 | After call to method IsFalse | ExitMethods.cs:132:10:132:20 | AssertFalse | +| ExitMethods.cs:134:17:134:33 | Entry | ExitMethods.cs:134:17:134:33 | FailingAssertion3 | +| ExitMethods.cs:140:17:140:42 | Entry | ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | +| ExitMethods.cs:140:17:140:42 | Exceptional Exit | ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | +| ExitMethods.cs:142:13:142:13 | After access to parameter b [false] | ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | +| ExitMethods.cs:142:13:142:13 | After access to parameter b [true] | ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | +| Extensions.cs:5:23:5:29 | Entry | Extensions.cs:5:23:5:29 | ToInt32 | +| Extensions.cs:10:24:10:29 | Entry | Extensions.cs:10:24:10:29 | ToBool | +| Extensions.cs:15:23:15:33 | Entry | Extensions.cs:15:23:15:33 | CallToInt32 | +| Extensions.cs:20:17:20:20 | Entry | Extensions.cs:20:17:20:20 | Main | +| Finally.cs:3:14:3:20 | Entry | Finally.cs:3:14:3:20 | Finally | +| Finally.cs:7:10:7:11 | Entry | Finally.cs:7:10:7:11 | M1 | +| Finally.cs:7:10:7:11 | Exceptional Exit | Finally.cs:7:10:7:11 | M1 | +| Finally.cs:7:10:7:11 | Exit | Finally.cs:7:10:7:11 | M1 | +| Finally.cs:9:9:16:9 | After try {...} ... | Finally.cs:7:10:7:11 | M1 | +| Finally.cs:11:13:11:37 | After call to method WriteLine | Finally.cs:7:10:7:11 | M1 | +| Finally.cs:14:9:16:9 | {...} | Finally.cs:7:10:7:11 | M1 | +| Finally.cs:19:10:19:11 | Entry | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:19:10:19:11 | Exceptional Exit | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:19:10:19:11 | Exit | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:19:10:19:11 | Normal Exit | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:21:9:51:9 | After try {...} ... | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:23:13:23:37 | After call to method WriteLine | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:26:9:29:9 | After catch (...) {...} [match] | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:26:9:29:9 | After catch (...) {...} [no-match] | Finally.cs:19:10:19:11 | M2 | | Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:26:38:26:39 | IOException ex | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:27:9:29:9 | {...} | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:30:41:30:42 | ArgumentException ex | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:34:27:34:32 | throw ...; | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:41:9:43:9 | catch (...) {...} | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:42:9:43:9 | {...} | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:44:9:47:9 | catch {...} | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:30:9:40:9 | After catch (...) {...} [match] | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:30:9:40:9 | After catch (...) {...} [no-match] | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:41:9:43:9 | After catch (...) {...} [match] | Finally.cs:19:10:19:11 | M2 | +| Finally.cs:41:9:43:9 | After catch (...) {...} [no-match] | Finally.cs:19:10:19:11 | M2 | | Finally.cs:49:9:51:9 | {...} | Finally.cs:19:10:19:11 | M2 | -| Finally.cs:54:10:54:11 | enter M3 | Finally.cs:54:10:54:11 | M3 | -| Finally.cs:54:10:54:11 | exit M3 | Finally.cs:54:10:54:11 | M3 | -| Finally.cs:54:10:54:11 | exit M3 (abnormal) | Finally.cs:54:10:54:11 | M3 | -| Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:54:10:54:11 | M3 | -| Finally.cs:59:13:59:19 | return ...; | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:54:10:54:11 | Entry | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:54:10:54:11 | Exceptional Exit | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:54:10:54:11 | Exit | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:54:10:54:11 | Normal Exit | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:56:9:71:9 | After try {...} ... | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:58:13:58:37 | After call to method WriteLine | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:61:9:64:9 | After catch (...) {...} [match] | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:61:9:64:9 | After catch (...) {...} [no-match] | Finally.cs:54:10:54:11 | M3 | | Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:54:10:54:11 | M3 | -| Finally.cs:61:38:61:39 | IOException ex | Finally.cs:54:10:54:11 | M3 | -| Finally.cs:62:9:64:9 | {...} | Finally.cs:54:10:54:11 | M3 | -| Finally.cs:65:9:67:9 | catch (...) {...} | Finally.cs:54:10:54:11 | M3 | -| Finally.cs:65:26:65:26 | Exception e | Finally.cs:54:10:54:11 | M3 | -| Finally.cs:66:9:67:9 | {...} | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:65:9:67:9 | After catch (...) {...} [match] | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:65:9:67:9 | After catch (...) {...} [no-match] | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:65:35:65:51 | After ... != ... [false] | Finally.cs:54:10:54:11 | M3 | +| Finally.cs:65:35:65:51 | After ... != ... [true] | Finally.cs:54:10:54:11 | M3 | | Finally.cs:69:9:71:9 | {...} | Finally.cs:54:10:54:11 | M3 | -| Finally.cs:74:10:74:11 | enter M4 | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:74:10:74:11 | exit M4 | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:74:10:74:11 | exit M4 (abnormal) | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:74:10:74:11 | exit M4 (normal) | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:82:21:82:27 | return ...; | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:84:21:84:29 | continue; | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:86:21:86:26 | break; | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:74:10:74:11 | Entry | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:74:10:74:11 | Exceptional Exit | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:74:10:74:11 | Exit | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:74:10:74:11 | Normal Exit | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:77:9:100:9 | After while (...) ... | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:77:16:77:20 | After ... > ... [false] | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:77:16:77:20 | After ... > ... [true] | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:79:13:99:13 | After try {...} ... | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:81:21:81:26 | After ... == ... [false] | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:81:21:81:26 | After ... == ... [true] | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:83:21:83:26 | After ... == ... [false] | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:83:21:83:26 | After ... == ... [true] | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:85:21:85:26 | After ... == ... [false] | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:85:21:85:26 | After ... == ... [true] | Finally.cs:74:10:74:11 | M4 | | Finally.cs:89:13:99:13 | {...} | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:93:25:93:46 | throw ...; | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:93:31:93:45 | object creation of type Exception | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:90:17:98:17 | After try {...} ... | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:92:25:92:30 | After ... == ... [false] | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:92:25:92:30 | After ... == ... [true] | Finally.cs:74:10:74:11 | M4 | +| Finally.cs:93:31:93:45 | After object creation of type Exception | Finally.cs:74:10:74:11 | M4 | | Finally.cs:96:17:98:17 | {...} | Finally.cs:74:10:74:11 | M4 | -| Finally.cs:103:10:103:11 | enter M5 | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:103:10:103:11 | exit M5 | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:103:10:103:11 | exit M5 (abnormal) | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:107:17:107:28 | access to property Length | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:108:17:108:23 | return ...; | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:109:13:110:49 | if (...) ... | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:109:17:109:28 | access to property Length | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:109:33:109:33 | 1 | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:110:17:110:49 | throw ...; | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:103:10:103:11 | Entry | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:103:10:103:11 | Exceptional Exit | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:103:10:103:11 | Exit | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:103:10:103:11 | Normal Exit | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:105:9:118:9 | After try {...} ... | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:107:17:107:21 | After access to field Field | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:107:17:107:28 | After access to property Length | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:107:17:107:33 | After ... == ... [false] | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:107:17:107:33 | After ... == ... [true] | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:109:17:109:21 | After access to field Field | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:109:17:109:28 | After access to property Length | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:109:17:109:33 | After ... == ... [false] | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:109:17:109:33 | After ... == ... [true] | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:110:23:110:48 | After object creation of type OutOfMemoryException | Finally.cs:103:10:103:11 | M5 | | Finally.cs:113:9:118:9 | {...} | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:114:17:114:36 | [false] !... | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:114:17:114:36 | [true] !... | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:115:17:115:41 | ...; | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:117:17:117:37 | ...; | Finally.cs:103:10:103:11 | M5 | -| Finally.cs:121:10:121:11 | enter M6 | Finally.cs:121:10:121:11 | M6 | -| Finally.cs:133:10:133:11 | enter M7 | Finally.cs:133:10:133:11 | M7 | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:147:10:147:11 | exit M8 | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:147:10:147:11 | exit M8 (abnormal) | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:152:17:152:50 | throw ...; | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:114:13:115:41 | After if (...) ... | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:114:19:114:35 | After ... == ... [false] | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:114:19:114:35 | After ... == ... [true] | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:116:13:117:37 | After if (...) ... | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:116:17:116:32 | After ... > ... [false] | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:116:17:116:32 | After ... > ... [true] | Finally.cs:103:10:103:11 | M5 | +| Finally.cs:121:10:121:11 | Entry | Finally.cs:121:10:121:11 | M6 | +| Finally.cs:133:10:133:11 | Entry | Finally.cs:133:10:133:11 | M7 | +| Finally.cs:137:13:137:36 | After call to method WriteLine | Finally.cs:133:10:133:11 | M7 | +| Finally.cs:140:9:143:9 | {...} | Finally.cs:133:10:133:11 | M7 | +| Finally.cs:147:10:147:11 | Entry | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:147:10:147:11 | Exceptional Exit | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:147:10:147:11 | Exit | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:149:9:169:9 | After try {...} ... | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:151:17:151:28 | After ... == ... [false] | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:151:17:151:28 | After ... == ... [true] | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:152:23:152:49 | After object creation of type ArgumentNullException | Finally.cs:147:10:147:11 | M8 | | Finally.cs:155:9:169:9 | {...} | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:158:36:158:36 | 1 | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:159:21:159:45 | throw ...; | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:159:41:159:43 | "1" | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:156:13:168:13 | After try {...} ... | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:158:21:158:31 | After access to property Length | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:158:21:158:36 | After ... == ... [false] | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:158:21:158:36 | After ... == ... [true] | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:159:27:159:44 | After object creation of type Exception | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:161:13:164:13 | After catch (...) {...} [match] | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:161:13:164:13 | After catch (...) {...} [no-match] | Finally.cs:147:10:147:11 | M8 | | Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:161:30:161:30 | Exception e | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:162:13:164:13 | {...} | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:165:13:168:13 | catch {...} | Finally.cs:147:10:147:11 | M8 | -| Finally.cs:172:11:172:20 | enter ExceptionA | Finally.cs:172:11:172:20 | ExceptionA | -| Finally.cs:173:11:173:20 | enter ExceptionB | Finally.cs:173:11:173:20 | ExceptionB | -| Finally.cs:174:11:174:20 | enter ExceptionC | Finally.cs:174:11:174:20 | ExceptionC | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:176:10:176:11 | exit M9 | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:176:10:176:11 | exit M9 (abnormal) | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:180:21:180:43 | throw ...; | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:180:27:180:42 | object creation of type ExceptionA | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:161:39:161:54 | After ... == ... [false] | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:161:39:161:54 | After ... == ... [true] | Finally.cs:147:10:147:11 | M8 | +| Finally.cs:172:11:172:20 | Entry | Finally.cs:172:11:172:20 | ExceptionA | +| Finally.cs:173:11:173:20 | Entry | Finally.cs:173:11:173:20 | ExceptionB | +| Finally.cs:174:11:174:20 | Entry | Finally.cs:174:11:174:20 | ExceptionC | +| Finally.cs:176:10:176:11 | Entry | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:176:10:176:11 | Exceptional Exit | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:176:10:176:11 | Exit | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:178:9:192:9 | After try {...} ... | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:180:17:180:18 | After access to parameter b1 [false] | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:180:17:180:18 | After access to parameter b1 [true] | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:180:27:180:42 | After object creation of type ExceptionA | Finally.cs:176:10:176:11 | M9 | | Finally.cs:183:9:192:9 | {...} | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:186:25:186:47 | throw ...; | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:184:13:191:13 | After try {...} ... | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:186:21:186:22 | After access to parameter b2 [false] | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:186:21:186:22 | After access to parameter b2 [true] | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:186:31:186:46 | After object creation of type ExceptionB | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:188:13:191:13 | After catch (...) {...} [match] | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:188:13:191:13 | After catch (...) {...} [no-match] | Finally.cs:176:10:176:11 | M9 | | Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:189:13:191:13 | {...} | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:190:31:190:46 | object creation of type ExceptionC | Finally.cs:176:10:176:11 | M9 | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:195:10:195:12 | exit M10 | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:195:10:195:12 | exit M10 (abnormal) | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:199:21:199:43 | throw ...; | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:199:27:199:42 | object creation of type ExceptionA | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:188:38:188:39 | After access to parameter b2 [false] | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:188:38:188:39 | After access to parameter b2 [true] | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:190:21:190:22 | After access to parameter b1 [false] | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:190:21:190:22 | After access to parameter b1 [true] | Finally.cs:176:10:176:11 | M9 | +| Finally.cs:195:10:195:12 | Entry | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:195:10:195:12 | Exceptional Exit | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:195:10:195:12 | Exit | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:197:9:212:9 | After try {...} ... | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:199:17:199:18 | After access to parameter b1 [false] | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:199:17:199:18 | After access to parameter b1 [true] | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:199:27:199:42 | After object creation of type ExceptionA | Finally.cs:195:10:195:12 | M10 | | Finally.cs:202:9:212:9 | {...} | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:205:25:205:47 | throw ...; | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:205:31:205:46 | object creation of type ExceptionB | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:203:13:210:13 | After try {...} ... | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:205:21:205:22 | After access to parameter b2 [false] | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:205:21:205:22 | After access to parameter b2 [true] | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:205:31:205:46 | After object creation of type ExceptionB | Finally.cs:195:10:195:12 | M10 | | Finally.cs:208:13:210:13 | {...} | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:209:31:209:46 | object creation of type ExceptionC | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:211:13:211:29 | ...; | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:213:9:213:25 | ...; | Finally.cs:195:10:195:12 | M10 | -| Finally.cs:216:10:216:12 | enter M11 | Finally.cs:216:10:216:12 | M11 | +| Finally.cs:209:21:209:22 | After access to parameter b3 [false] | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:209:21:209:22 | After access to parameter b3 [true] | Finally.cs:195:10:195:12 | M10 | +| Finally.cs:216:10:216:12 | Entry | Finally.cs:216:10:216:12 | M11 | +| Finally.cs:220:13:220:36 | After call to method WriteLine | Finally.cs:216:10:216:12 | M11 | | Finally.cs:222:9:225:9 | catch {...} | Finally.cs:216:10:216:12 | M11 | | Finally.cs:227:9:229:9 | {...} | Finally.cs:216:10:216:12 | M11 | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:233:10:233:12 | exit M12 | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:233:10:233:12 | exit M12 (abnormal) | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:240:21:240:43 | throw ...; | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:240:27:240:42 | object creation of type ExceptionA | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:233:10:233:12 | Entry | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:233:10:233:12 | Exceptional Exit | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:233:10:233:12 | Exit | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:235:9:259:9 | After try {...} ... | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:237:13:253:13 | After try {...} ... | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:239:21:239:22 | After access to parameter b1 [false] | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:239:21:239:22 | After access to parameter b1 [true] | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:240:27:240:42 | After object creation of type ExceptionA | Finally.cs:233:10:233:12 | M12 | | Finally.cs:243:13:253:13 | {...} | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:247:25:247:47 | throw ...; | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:247:31:247:46 | object creation of type ExceptionA | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:244:17:252:17 | After try {...} ... | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:246:25:246:26 | After access to parameter b2 [false] | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:246:25:246:26 | After access to parameter b2 [true] | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:247:31:247:46 | After object creation of type ExceptionA | Finally.cs:233:10:233:12 | M12 | | Finally.cs:250:17:252:17 | {...} | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:254:13:254:45 | ...; | Finally.cs:233:10:233:12 | M12 | +| Finally.cs:254:13:254:44 | After call to method WriteLine | Finally.cs:233:10:233:12 | M12 | | Finally.cs:257:9:259:9 | {...} | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:260:9:260:34 | ...; | Finally.cs:233:10:233:12 | M12 | -| Finally.cs:263:10:263:12 | enter M13 | Finally.cs:263:10:263:12 | M13 | -| Finally.cs:263:10:263:12 | exit M13 | Finally.cs:263:10:263:12 | M13 | -| Finally.cs:263:10:263:12 | exit M13 (abnormal) | Finally.cs:263:10:263:12 | M13 | -| Finally.cs:263:10:263:12 | exit M13 (normal) | Finally.cs:263:10:263:12 | M13 | -| Foreach.cs:4:7:4:13 | enter Foreach | Foreach.cs:4:7:4:13 | Foreach | -| Foreach.cs:6:10:6:11 | enter M1 | Foreach.cs:6:10:6:11 | M1 | -| Foreach.cs:6:10:6:11 | exit M1 (normal) | Foreach.cs:6:10:6:11 | M1 | -| Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:6:10:6:11 | M1 | +| Finally.cs:263:10:263:12 | Entry | Finally.cs:263:10:263:12 | M13 | +| Finally.cs:263:10:263:12 | Exceptional Exit | Finally.cs:263:10:263:12 | M13 | +| Finally.cs:263:10:263:12 | Exit | Finally.cs:263:10:263:12 | M13 | +| Finally.cs:265:9:273:9 | After try {...} ... | Finally.cs:263:10:263:12 | M13 | +| Finally.cs:267:13:267:34 | After call to method WriteLine | Finally.cs:263:10:263:12 | M13 | +| Finally.cs:270:9:273:9 | {...} | Finally.cs:263:10:263:12 | M13 | +| Foreach.cs:4:7:4:13 | Entry | Foreach.cs:4:7:4:13 | Foreach | +| Foreach.cs:6:10:6:11 | Entry | Foreach.cs:6:10:6:11 | M1 | +| Foreach.cs:8:9:9:13 | After foreach (... ... in ...) ... | Foreach.cs:6:10:6:11 | M1 | | Foreach.cs:8:22:8:24 | String arg | Foreach.cs:6:10:6:11 | M1 | -| Foreach.cs:12:10:12:11 | enter M2 | Foreach.cs:12:10:12:11 | M2 | -| Foreach.cs:12:10:12:11 | exit M2 (normal) | Foreach.cs:12:10:12:11 | M2 | -| Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:12:10:12:11 | M2 | +| Foreach.cs:8:29:8:32 | After access to parameter args [empty] | Foreach.cs:6:10:6:11 | M1 | +| Foreach.cs:8:29:8:32 | After access to parameter args [non-empty] | Foreach.cs:6:10:6:11 | M1 | +| Foreach.cs:12:10:12:11 | Entry | Foreach.cs:12:10:12:11 | M2 | +| Foreach.cs:14:9:15:13 | After foreach (... ... in ...) ... | Foreach.cs:12:10:12:11 | M2 | | Foreach.cs:14:22:14:22 | String _ | Foreach.cs:12:10:12:11 | M2 | -| Foreach.cs:18:10:18:11 | enter M3 | Foreach.cs:18:10:18:11 | M3 | -| Foreach.cs:18:10:18:11 | exit M3 (normal) | Foreach.cs:18:10:18:11 | M3 | -| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:18:10:18:11 | M3 | +| Foreach.cs:14:27:14:30 | After access to parameter args [empty] | Foreach.cs:12:10:12:11 | M2 | +| Foreach.cs:14:27:14:30 | After access to parameter args [non-empty] | Foreach.cs:12:10:12:11 | M2 | +| Foreach.cs:18:10:18:11 | Entry | Foreach.cs:18:10:18:11 | M3 | +| Foreach.cs:20:9:21:11 | After foreach (... ... in ...) ... | Foreach.cs:18:10:18:11 | M3 | | Foreach.cs:20:22:20:22 | String x | Foreach.cs:18:10:18:11 | M3 | -| Foreach.cs:20:27:20:38 | call to method ToArray | Foreach.cs:18:10:18:11 | M3 | -| Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:18:10:18:11 | M3 | -| Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:18:10:18:11 | M3 | -| Foreach.cs:24:10:24:11 | enter M4 | Foreach.cs:24:10:24:11 | M4 | -| Foreach.cs:24:10:24:11 | exit M4 (normal) | Foreach.cs:24:10:24:11 | M4 | -| Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | Foreach.cs:24:10:24:11 | M4 | -| Foreach.cs:26:23:26:23 | String x | Foreach.cs:24:10:24:11 | M4 | -| Foreach.cs:30:10:30:11 | enter M5 | Foreach.cs:30:10:30:11 | M5 | -| Foreach.cs:30:10:30:11 | exit M5 (normal) | Foreach.cs:30:10:30:11 | M5 | -| Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | Foreach.cs:30:10:30:11 | M5 | -| Foreach.cs:32:23:32:23 | String x | Foreach.cs:30:10:30:11 | M5 | -| Foreach.cs:36:10:36:11 | enter M6 | Foreach.cs:36:10:36:11 | M6 | -| Foreach.cs:36:10:36:11 | exit M6 (normal) | Foreach.cs:36:10:36:11 | M6 | -| Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | Foreach.cs:36:10:36:11 | M6 | -| Foreach.cs:38:26:38:26 | String x | Foreach.cs:36:10:36:11 | M6 | -| Initializers.cs:3:7:3:18 | enter | Initializers.cs:3:7:3:18 | | -| Initializers.cs:3:7:3:18 | enter Initializers | Initializers.cs:3:7:3:18 | Initializers | -| Initializers.cs:8:5:8:16 | enter Initializers | Initializers.cs:8:5:8:16 | Initializers | -| Initializers.cs:10:5:10:16 | enter Initializers | Initializers.cs:10:5:10:16 | Initializers | -| Initializers.cs:12:10:12:10 | enter M | Initializers.cs:12:10:12:10 | M | -| Initializers.cs:20:11:20:23 | enter | Initializers.cs:20:11:20:23 | | -| Initializers.cs:20:11:20:23 | enter NoConstructor | Initializers.cs:20:11:20:23 | NoConstructor | -| Initializers.cs:26:11:26:13 | enter | Initializers.cs:26:11:26:13 | | -| Initializers.cs:31:9:31:11 | enter Sub | Initializers.cs:31:9:31:11 | Sub | -| Initializers.cs:33:9:33:11 | enter Sub | Initializers.cs:33:9:33:11 | Sub | -| Initializers.cs:35:9:35:11 | enter Sub | Initializers.cs:35:9:35:11 | Sub | -| Initializers.cs:39:7:39:23 | enter IndexInitializers | Initializers.cs:39:7:39:23 | IndexInitializers | -| Initializers.cs:41:11:41:18 | enter Compound | Initializers.cs:41:11:41:18 | Compound | -| Initializers.cs:51:10:51:13 | enter Test | Initializers.cs:51:10:51:13 | Test | -| LoopUnrolling.cs:5:7:5:19 | enter LoopUnrolling | LoopUnrolling.cs:5:7:5:19 | LoopUnrolling | -| LoopUnrolling.cs:7:10:7:11 | enter M1 | LoopUnrolling.cs:7:10:7:11 | M1 | -| LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | LoopUnrolling.cs:7:10:7:11 | M1 | -| LoopUnrolling.cs:10:13:10:19 | return ...; | LoopUnrolling.cs:7:10:7:11 | M1 | -| LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:7:10:7:11 | M1 | +| Foreach.cs:20:27:20:27 | After access to parameter e [non-null] | Foreach.cs:18:10:18:11 | M3 | +| Foreach.cs:20:27:20:27 | After access to parameter e [null] | Foreach.cs:18:10:18:11 | M3 | +| Foreach.cs:20:27:20:38 | After call to method ToArray [non-null] | Foreach.cs:18:10:18:11 | M3 | +| Foreach.cs:20:27:20:38 | After call to method ToArray [null] | Foreach.cs:18:10:18:11 | M3 | +| Foreach.cs:20:27:20:68 | After ... ?? ... [empty] | Foreach.cs:18:10:18:11 | M3 | +| Foreach.cs:20:27:20:68 | After ... ?? ... [non-empty] | Foreach.cs:18:10:18:11 | M3 | +| Foreach.cs:20:43:20:68 | After call to method Empty [empty] | Foreach.cs:18:10:18:11 | M3 | +| Foreach.cs:20:43:20:68 | After call to method Empty [non-empty] | Foreach.cs:18:10:18:11 | M3 | +| Foreach.cs:24:10:24:11 | Entry | Foreach.cs:24:10:24:11 | M4 | +| Foreach.cs:26:9:27:11 | After foreach (... ... in ...) ... | Foreach.cs:24:10:24:11 | M4 | +| Foreach.cs:26:18:26:31 | Before (..., ...) | Foreach.cs:24:10:24:11 | M4 | +| Foreach.cs:26:36:26:39 | After access to parameter args [empty] | Foreach.cs:24:10:24:11 | M4 | +| Foreach.cs:26:36:26:39 | After access to parameter args [non-empty] | Foreach.cs:24:10:24:11 | M4 | +| Foreach.cs:30:10:30:11 | Entry | Foreach.cs:30:10:30:11 | M5 | +| Foreach.cs:32:9:33:11 | After foreach (... ... in ...) ... | Foreach.cs:30:10:30:11 | M5 | +| Foreach.cs:32:18:32:27 | Before (..., ...) | Foreach.cs:30:10:30:11 | M5 | +| Foreach.cs:32:32:32:35 | After access to parameter args [empty] | Foreach.cs:30:10:30:11 | M5 | +| Foreach.cs:32:32:32:35 | After access to parameter args [non-empty] | Foreach.cs:30:10:30:11 | M5 | +| Foreach.cs:36:10:36:11 | Entry | Foreach.cs:36:10:36:11 | M6 | +| Foreach.cs:38:9:39:11 | After foreach (... ... in ...) ... | Foreach.cs:36:10:36:11 | M6 | +| Foreach.cs:38:18:38:34 | Before (..., ...) | Foreach.cs:36:10:36:11 | M6 | +| Foreach.cs:38:39:38:42 | After access to parameter args [empty] | Foreach.cs:36:10:36:11 | M6 | +| Foreach.cs:38:39:38:42 | After access to parameter args [non-empty] | Foreach.cs:36:10:36:11 | M6 | +| Initializers.cs:3:7:3:18 | Entry | Initializers.cs:3:7:3:18 | | +| Initializers.cs:3:7:3:18 | Entry | Initializers.cs:3:7:3:18 | Initializers | +| Initializers.cs:8:5:8:16 | Entry | Initializers.cs:8:5:8:16 | Initializers | +| Initializers.cs:10:5:10:16 | Entry | Initializers.cs:10:5:10:16 | Initializers | +| Initializers.cs:12:10:12:10 | Entry | Initializers.cs:12:10:12:10 | M | +| Initializers.cs:20:11:20:23 | Entry | Initializers.cs:20:11:20:23 | | +| Initializers.cs:20:11:20:23 | Entry | Initializers.cs:20:11:20:23 | NoConstructor | +| Initializers.cs:26:11:26:13 | Entry | Initializers.cs:26:11:26:13 | | +| Initializers.cs:31:9:31:11 | Entry | Initializers.cs:31:9:31:11 | Sub | +| Initializers.cs:33:9:33:11 | Entry | Initializers.cs:33:9:33:11 | Sub | +| Initializers.cs:35:9:35:11 | Entry | Initializers.cs:35:9:35:11 | Sub | +| Initializers.cs:39:7:39:23 | Entry | Initializers.cs:39:7:39:23 | IndexInitializers | +| Initializers.cs:41:11:41:18 | Entry | Initializers.cs:41:11:41:18 | Compound | +| Initializers.cs:51:10:51:13 | Entry | Initializers.cs:51:10:51:13 | Test | +| LoopUnrolling.cs:5:7:5:19 | Entry | LoopUnrolling.cs:5:7:5:19 | LoopUnrolling | +| LoopUnrolling.cs:7:10:7:11 | Entry | LoopUnrolling.cs:7:10:7:11 | M1 | +| LoopUnrolling.cs:7:10:7:11 | Normal Exit | LoopUnrolling.cs:7:10:7:11 | M1 | +| LoopUnrolling.cs:9:13:9:28 | After ... == ... [false] | LoopUnrolling.cs:7:10:7:11 | M1 | +| LoopUnrolling.cs:9:13:9:28 | After ... == ... [true] | LoopUnrolling.cs:7:10:7:11 | M1 | +| LoopUnrolling.cs:11:9:12:35 | After foreach (... ... in ...) ... | LoopUnrolling.cs:7:10:7:11 | M1 | | LoopUnrolling.cs:11:22:11:24 | String arg | LoopUnrolling.cs:7:10:7:11 | M1 | -| LoopUnrolling.cs:11:29:11:32 | access to parameter args | LoopUnrolling.cs:7:10:7:11 | M1 | -| LoopUnrolling.cs:15:10:15:11 | enter M2 | LoopUnrolling.cs:15:10:15:11 | M2 | -| LoopUnrolling.cs:15:10:15:11 | exit M2 (normal) | LoopUnrolling.cs:15:10:15:11 | M2 | -| LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:15:10:15:11 | M2 | +| LoopUnrolling.cs:11:29:11:32 | After access to parameter args [empty] | LoopUnrolling.cs:7:10:7:11 | M1 | +| LoopUnrolling.cs:11:29:11:32 | After access to parameter args [non-empty] | LoopUnrolling.cs:7:10:7:11 | M1 | +| LoopUnrolling.cs:15:10:15:11 | Entry | LoopUnrolling.cs:15:10:15:11 | M2 | +| LoopUnrolling.cs:18:9:19:33 | After foreach (... ... in ...) ... | LoopUnrolling.cs:15:10:15:11 | M2 | | LoopUnrolling.cs:18:22:18:22 | String x | LoopUnrolling.cs:15:10:15:11 | M2 | -| LoopUnrolling.cs:22:10:22:11 | enter M3 | LoopUnrolling.cs:22:10:22:11 | M3 | -| LoopUnrolling.cs:22:10:22:11 | exit M3 (normal) | LoopUnrolling.cs:22:10:22:11 | M3 | -| LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:22:10:22:11 | M3 | +| LoopUnrolling.cs:18:27:18:28 | After access to local variable xs [empty] | LoopUnrolling.cs:15:10:15:11 | M2 | +| LoopUnrolling.cs:18:27:18:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:15:10:15:11 | M2 | +| LoopUnrolling.cs:22:10:22:11 | Entry | LoopUnrolling.cs:22:10:22:11 | M3 | +| LoopUnrolling.cs:24:9:26:40 | After foreach (... ... in ...) ... | LoopUnrolling.cs:22:10:22:11 | M3 | | LoopUnrolling.cs:24:22:24:24 | Char arg | LoopUnrolling.cs:22:10:22:11 | M3 | -| LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:22:10:22:11 | M3 | +| LoopUnrolling.cs:24:29:24:32 | After access to parameter args [empty] | LoopUnrolling.cs:22:10:22:11 | M3 | +| LoopUnrolling.cs:24:29:24:32 | After access to parameter args [non-empty] | LoopUnrolling.cs:22:10:22:11 | M3 | +| LoopUnrolling.cs:25:13:26:40 | After foreach (... ... in ...) ... | LoopUnrolling.cs:22:10:22:11 | M3 | | LoopUnrolling.cs:25:26:25:29 | Char arg0 | LoopUnrolling.cs:22:10:22:11 | M3 | -| LoopUnrolling.cs:29:10:29:11 | enter M4 | LoopUnrolling.cs:29:10:29:11 | M4 | -| LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | LoopUnrolling.cs:29:10:29:11 | M4 | -| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:29:10:29:11 | M4 | +| LoopUnrolling.cs:25:34:25:37 | After access to parameter args [empty] | LoopUnrolling.cs:22:10:22:11 | M3 | +| LoopUnrolling.cs:25:34:25:37 | After access to parameter args [non-empty] | LoopUnrolling.cs:22:10:22:11 | M3 | +| LoopUnrolling.cs:29:10:29:11 | Entry | LoopUnrolling.cs:29:10:29:11 | M4 | +| LoopUnrolling.cs:32:9:33:33 | After foreach (... ... in ...) ... | LoopUnrolling.cs:29:10:29:11 | M4 | | LoopUnrolling.cs:32:22:32:22 | String x | LoopUnrolling.cs:29:10:29:11 | M4 | -| LoopUnrolling.cs:36:10:36:11 | enter M5 | LoopUnrolling.cs:36:10:36:11 | M5 | -| LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | LoopUnrolling.cs:36:10:36:11 | M5 | -| LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:32:27:32:28 | After access to local variable xs [empty] | LoopUnrolling.cs:29:10:29:11 | M4 | +| LoopUnrolling.cs:32:27:32:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:29:10:29:11 | M4 | +| LoopUnrolling.cs:36:10:36:11 | Entry | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:40:9:42:41 | After foreach (... ... in ...) ... | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:36:10:36:11 | M5 | -| LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [empty] | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:41:13:42:41 | After foreach (... ... in ...) ... | LoopUnrolling.cs:36:10:36:11 | M5 | | LoopUnrolling.cs:41:26:41:26 | String y | LoopUnrolling.cs:36:10:36:11 | M5 | -| LoopUnrolling.cs:45:10:45:11 | enter M6 | LoopUnrolling.cs:45:10:45:11 | M6 | -| LoopUnrolling.cs:45:10:45:11 | exit M6 (normal) | LoopUnrolling.cs:45:10:45:11 | M6 | -| LoopUnrolling.cs:48:22:48:22 | String x | LoopUnrolling.cs:45:10:45:11 | M6 | +| LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [empty] | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [non-empty] | LoopUnrolling.cs:36:10:36:11 | M5 | +| LoopUnrolling.cs:45:10:45:11 | Entry | LoopUnrolling.cs:45:10:45:11 | M6 | +| LoopUnrolling.cs:48:27:48:28 | After access to local variable xs [empty] | LoopUnrolling.cs:45:10:45:11 | M6 | +| LoopUnrolling.cs:48:27:48:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:45:10:45:11 | M6 | | LoopUnrolling.cs:50:9:50:13 | Label: | LoopUnrolling.cs:45:10:45:11 | M6 | -| LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:55:10:55:11 | M7 | -| LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | LoopUnrolling.cs:55:10:55:11 | M7 | -| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:55:10:55:11 | Entry | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:58:9:64:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:55:10:55:11 | M7 | | LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:55:10:55:11 | M7 | -| LoopUnrolling.cs:61:17:61:37 | ...; | LoopUnrolling.cs:55:10:55:11 | M7 | -| LoopUnrolling.cs:62:13:63:37 | if (...) ... | LoopUnrolling.cs:55:10:55:11 | M7 | -| LoopUnrolling.cs:63:17:63:37 | ...; | LoopUnrolling.cs:55:10:55:11 | M7 | -| LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:67:10:67:11 | M8 | -| LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | LoopUnrolling.cs:67:10:67:11 | M8 | -| LoopUnrolling.cs:69:13:69:23 | [false] !... | LoopUnrolling.cs:67:10:67:11 | M8 | -| LoopUnrolling.cs:69:13:69:23 | [true] !... | LoopUnrolling.cs:67:10:67:11 | M8 | -| LoopUnrolling.cs:70:13:70:19 | return ...; | LoopUnrolling.cs:67:10:67:11 | M8 | -| LoopUnrolling.cs:71:9:71:21 | ...; | LoopUnrolling.cs:67:10:67:11 | M8 | -| LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:67:10:67:11 | M8 | +| LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [empty] | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:60:13:61:37 | After if (...) ... | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:60:17:60:17 | After access to parameter b [false] | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:60:17:60:17 | After access to parameter b [true] | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:62:13:63:37 | After if (...) ... | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:62:17:62:17 | After access to parameter b [false] | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:62:17:62:17 | After access to parameter b [true] | LoopUnrolling.cs:55:10:55:11 | M7 | +| LoopUnrolling.cs:67:10:67:11 | Entry | LoopUnrolling.cs:67:10:67:11 | M8 | +| LoopUnrolling.cs:67:10:67:11 | Normal Exit | LoopUnrolling.cs:67:10:67:11 | M8 | +| LoopUnrolling.cs:69:14:69:23 | After call to method Any [false] | LoopUnrolling.cs:67:10:67:11 | M8 | +| LoopUnrolling.cs:69:14:69:23 | After call to method Any [true] | LoopUnrolling.cs:67:10:67:11 | M8 | +| LoopUnrolling.cs:72:9:73:35 | After foreach (... ... in ...) ... | LoopUnrolling.cs:67:10:67:11 | M8 | | LoopUnrolling.cs:72:22:72:24 | String arg | LoopUnrolling.cs:67:10:67:11 | M8 | -| LoopUnrolling.cs:76:10:76:11 | enter M9 | LoopUnrolling.cs:76:10:76:11 | M9 | -| LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | LoopUnrolling.cs:76:10:76:11 | M9 | -| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:76:10:76:11 | M9 | +| LoopUnrolling.cs:72:29:72:32 | After access to parameter args [empty] | LoopUnrolling.cs:67:10:67:11 | M8 | +| LoopUnrolling.cs:72:29:72:32 | After access to parameter args [non-empty] | LoopUnrolling.cs:67:10:67:11 | M8 | +| LoopUnrolling.cs:76:10:76:11 | Entry | LoopUnrolling.cs:76:10:76:11 | M9 | +| LoopUnrolling.cs:79:9:82:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:76:10:76:11 | M9 | | LoopUnrolling.cs:79:22:79:22 | String x | LoopUnrolling.cs:76:10:76:11 | M9 | -| LoopUnrolling.cs:85:10:85:12 | enter M10 | LoopUnrolling.cs:85:10:85:12 | M10 | -| LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | LoopUnrolling.cs:85:10:85:12 | M10 | -| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:85:10:85:12 | M10 | +| LoopUnrolling.cs:79:27:79:28 | After access to local variable xs [empty] | LoopUnrolling.cs:76:10:76:11 | M9 | +| LoopUnrolling.cs:79:27:79:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:76:10:76:11 | M9 | +| LoopUnrolling.cs:85:10:85:12 | Entry | LoopUnrolling.cs:85:10:85:12 | M10 | +| LoopUnrolling.cs:88:9:91:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:85:10:85:12 | M10 | | LoopUnrolling.cs:88:22:88:22 | String x | LoopUnrolling.cs:85:10:85:12 | M10 | -| LoopUnrolling.cs:94:10:94:12 | enter M11 | LoopUnrolling.cs:94:10:94:12 | M11 | -| LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | LoopUnrolling.cs:94:10:94:12 | M11 | -| LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:94:10:94:12 | M11 | +| LoopUnrolling.cs:88:27:88:28 | After access to local variable xs [empty] | LoopUnrolling.cs:85:10:85:12 | M10 | +| LoopUnrolling.cs:88:27:88:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:85:10:85:12 | M10 | +| LoopUnrolling.cs:94:10:94:12 | Entry | LoopUnrolling.cs:94:10:94:12 | M11 | +| LoopUnrolling.cs:97:9:100:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:94:10:94:12 | M11 | | LoopUnrolling.cs:97:22:97:22 | String x | LoopUnrolling.cs:94:10:94:12 | M11 | -| MultiImplementationA.cs:4:7:4:8 | enter C1 | MultiImplementationA.cs:4:7:4:8 | C1 | -| MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | MultiImplementationA.cs:4:7:4:8 | C1 | -| MultiImplementationA.cs:4:7:4:8 | this access | MultiImplementationA.cs:4:7:4:8 | C1 | -| MultiImplementationA.cs:6:22:6:31 | enter get_P1 | MultiImplementationA.cs:6:22:6:31 | get_P1 | -| MultiImplementationA.cs:6:22:6:31 | exit get_P1 | MultiImplementationA.cs:6:22:6:31 | get_P1 | -| MultiImplementationA.cs:6:28:6:31 | null | MultiImplementationA.cs:6:22:6:31 | get_P1 | -| MultiImplementationA.cs:7:21:7:23 | enter get_P2 | MultiImplementationA.cs:7:21:7:23 | get_P2 | -| MultiImplementationA.cs:7:21:7:23 | exit get_P2 | MultiImplementationA.cs:7:21:7:23 | get_P2 | +| LoopUnrolling.cs:97:27:97:28 | After access to local variable xs [empty] | LoopUnrolling.cs:94:10:94:12 | M11 | +| LoopUnrolling.cs:97:27:97:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:94:10:94:12 | M11 | +| MultiImplementationA.cs:4:7:4:8 | Before call to method | MultiImplementationA.cs:4:7:4:8 | C1 | +| MultiImplementationA.cs:4:7:4:8 | Entry | MultiImplementationA.cs:4:7:4:8 | C1 | +| MultiImplementationA.cs:4:7:4:8 | Normal Exit | MultiImplementationA.cs:4:7:4:8 | C1 | +| MultiImplementationA.cs:6:22:6:31 | Before throw ... | MultiImplementationA.cs:6:22:6:31 | get_P1 | +| MultiImplementationA.cs:6:22:6:31 | Entry | MultiImplementationA.cs:6:22:6:31 | get_P1 | +| MultiImplementationA.cs:6:22:6:31 | Exit | MultiImplementationA.cs:6:22:6:31 | get_P1 | +| MultiImplementationA.cs:7:21:7:23 | Entry | MultiImplementationA.cs:7:21:7:23 | get_P2 | +| MultiImplementationA.cs:7:21:7:23 | Exit | MultiImplementationA.cs:7:21:7:23 | get_P2 | | MultiImplementationA.cs:7:25:7:39 | {...} | MultiImplementationA.cs:7:21:7:23 | get_P2 | -| MultiImplementationA.cs:7:41:7:43 | enter set_P2 | MultiImplementationA.cs:7:41:7:43 | set_P2 | -| MultiImplementationA.cs:7:41:7:43 | exit set_P2 | MultiImplementationA.cs:7:41:7:43 | set_P2 | +| MultiImplementationA.cs:7:41:7:43 | Entry | MultiImplementationA.cs:7:41:7:43 | set_P2 | +| MultiImplementationA.cs:7:41:7:43 | Exit | MultiImplementationA.cs:7:41:7:43 | set_P2 | | MultiImplementationA.cs:7:45:7:59 | {...} | MultiImplementationA.cs:7:41:7:43 | set_P2 | -| MultiImplementationA.cs:8:16:8:16 | enter M | MultiImplementationA.cs:8:16:8:16 | M | -| MultiImplementationA.cs:8:16:8:16 | exit M | MultiImplementationA.cs:8:16:8:16 | M | -| MultiImplementationA.cs:8:29:8:32 | null | MultiImplementationA.cs:8:16:8:16 | M | -| MultiImplementationA.cs:11:7:11:8 | enter | MultiImplementationA.cs:11:7:11:8 | | -| MultiImplementationA.cs:11:7:11:8 | exit (normal) | MultiImplementationA.cs:11:7:11:8 | | -| MultiImplementationA.cs:13:16:13:16 | this access | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationA.cs:8:16:8:16 | Entry | MultiImplementationA.cs:8:16:8:16 | M | +| MultiImplementationA.cs:8:16:8:16 | Exit | MultiImplementationA.cs:8:16:8:16 | M | +| MultiImplementationA.cs:8:23:8:32 | Before throw ... | MultiImplementationA.cs:8:16:8:16 | M | +| MultiImplementationA.cs:11:7:11:8 | Entry | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationA.cs:11:7:11:8 | Normal Exit | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationA.cs:13:16:13:20 | Before ... = ... | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationA.cs:14:31:14:31 | Entry | MultiImplementationA.cs:14:31:14:31 | get_Item | +| MultiImplementationA.cs:14:31:14:31 | Exit | MultiImplementationA.cs:14:31:14:31 | get_Item | | MultiImplementationA.cs:14:31:14:31 | access to parameter i | MultiImplementationA.cs:14:31:14:31 | get_Item | -| MultiImplementationA.cs:14:31:14:31 | enter get_Item | MultiImplementationA.cs:14:31:14:31 | get_Item | -| MultiImplementationA.cs:14:31:14:31 | exit get_Item | MultiImplementationA.cs:14:31:14:31 | get_Item | -| MultiImplementationA.cs:15:36:15:38 | enter get_Item | MultiImplementationA.cs:15:36:15:38 | get_Item | -| MultiImplementationA.cs:15:36:15:38 | exit get_Item | MultiImplementationA.cs:15:36:15:38 | get_Item | +| MultiImplementationA.cs:15:36:15:38 | Entry | MultiImplementationA.cs:15:36:15:38 | get_Item | +| MultiImplementationA.cs:15:36:15:38 | Exit | MultiImplementationA.cs:15:36:15:38 | get_Item | | MultiImplementationA.cs:15:40:15:52 | {...} | MultiImplementationA.cs:15:36:15:38 | get_Item | -| MultiImplementationA.cs:15:54:15:56 | enter set_Item | MultiImplementationA.cs:15:54:15:56 | set_Item | -| MultiImplementationA.cs:15:54:15:56 | exit set_Item (normal) | MultiImplementationA.cs:15:54:15:56 | set_Item | +| MultiImplementationA.cs:15:54:15:56 | Entry | MultiImplementationA.cs:15:54:15:56 | set_Item | +| MultiImplementationA.cs:15:54:15:56 | Normal Exit | MultiImplementationA.cs:15:54:15:56 | set_Item | | MultiImplementationA.cs:15:58:15:60 | {...} | MultiImplementationA.cs:15:54:15:56 | set_Item | -| MultiImplementationA.cs:16:17:16:18 | enter M1 | MultiImplementationA.cs:16:17:16:18 | M1 | -| MultiImplementationA.cs:16:17:16:18 | exit M1 (normal) | MultiImplementationA.cs:16:17:16:18 | M1 | +| MultiImplementationA.cs:16:17:16:18 | Entry | MultiImplementationA.cs:16:17:16:18 | M1 | +| MultiImplementationA.cs:16:17:16:18 | Normal Exit | MultiImplementationA.cs:16:17:16:18 | M1 | | MultiImplementationA.cs:17:5:19:5 | {...} | MultiImplementationA.cs:16:17:16:18 | M1 | -| MultiImplementationA.cs:18:9:18:22 | enter M2 | MultiImplementationA.cs:18:9:18:22 | M2 | -| MultiImplementationA.cs:20:12:20:13 | enter C2 | MultiImplementationA.cs:20:12:20:13 | C2 | -| MultiImplementationA.cs:20:12:20:13 | exit C2 | MultiImplementationA.cs:20:12:20:13 | C2 | -| MultiImplementationA.cs:20:12:20:13 | this access | MultiImplementationA.cs:20:12:20:13 | C2 | -| MultiImplementationA.cs:21:12:21:13 | enter C2 | MultiImplementationA.cs:21:12:21:13 | C2 | -| MultiImplementationA.cs:21:12:21:13 | exit C2 (normal) | MultiImplementationA.cs:21:12:21:13 | C2 | -| MultiImplementationA.cs:21:24:21:24 | 0 | MultiImplementationA.cs:21:12:21:13 | C2 | -| MultiImplementationA.cs:22:6:22:7 | enter ~C2 | MultiImplementationA.cs:22:6:22:7 | ~C2 | -| MultiImplementationA.cs:22:6:22:7 | exit ~C2 | MultiImplementationA.cs:22:6:22:7 | ~C2 | +| MultiImplementationA.cs:18:9:18:22 | Entry | MultiImplementationA.cs:18:9:18:22 | M2 | +| MultiImplementationA.cs:20:12:20:13 | Before call to method | MultiImplementationA.cs:20:12:20:13 | C2 | +| MultiImplementationA.cs:20:12:20:13 | Entry | MultiImplementationA.cs:20:12:20:13 | C2 | +| MultiImplementationA.cs:20:12:20:13 | Exit | MultiImplementationA.cs:20:12:20:13 | C2 | +| MultiImplementationA.cs:21:12:21:13 | Entry | MultiImplementationA.cs:21:12:21:13 | C2 | +| MultiImplementationA.cs:21:12:21:13 | Normal Exit | MultiImplementationA.cs:21:12:21:13 | C2 | +| MultiImplementationA.cs:21:19:21:22 | Before call to constructor C2 | MultiImplementationA.cs:21:12:21:13 | C2 | +| MultiImplementationA.cs:22:6:22:7 | Entry | MultiImplementationA.cs:22:6:22:7 | ~C2 | +| MultiImplementationA.cs:22:6:22:7 | Exit | MultiImplementationA.cs:22:6:22:7 | ~C2 | | MultiImplementationA.cs:22:11:22:13 | {...} | MultiImplementationA.cs:22:6:22:7 | ~C2 | -| MultiImplementationA.cs:23:28:23:35 | enter implicit conversion | MultiImplementationA.cs:23:28:23:35 | implicit conversion | -| MultiImplementationA.cs:23:28:23:35 | exit implicit conversion | MultiImplementationA.cs:23:28:23:35 | implicit conversion | +| MultiImplementationA.cs:23:28:23:35 | Entry | MultiImplementationA.cs:23:28:23:35 | implicit conversion | +| MultiImplementationA.cs:23:28:23:35 | Exit | MultiImplementationA.cs:23:28:23:35 | implicit conversion | | MultiImplementationA.cs:23:50:23:53 | null | MultiImplementationA.cs:23:28:23:35 | implicit conversion | -| MultiImplementationA.cs:28:7:28:8 | enter C3 | MultiImplementationA.cs:28:7:28:8 | C3 | -| MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | MultiImplementationA.cs:28:7:28:8 | C3 | -| MultiImplementationA.cs:28:7:28:8 | this access | MultiImplementationA.cs:28:7:28:8 | C3 | -| MultiImplementationA.cs:30:21:30:23 | enter get_P3 | MultiImplementationA.cs:30:21:30:23 | get_P3 | -| MultiImplementationA.cs:34:15:34:16 | enter C4 | MultiImplementationA.cs:34:15:34:16 | C4 | -| MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | MultiImplementationA.cs:34:15:34:16 | C4 | -| MultiImplementationA.cs:34:15:34:16 | this access | MultiImplementationA.cs:34:15:34:16 | C4 | -| MultiImplementationA.cs:36:9:36:10 | enter M1 | MultiImplementationA.cs:36:9:36:10 | M1 | -| MultiImplementationA.cs:36:9:36:10 | exit M1 | MultiImplementationA.cs:36:9:36:10 | M1 | +| MultiImplementationA.cs:28:7:28:8 | Before call to method | MultiImplementationA.cs:28:7:28:8 | C3 | +| MultiImplementationA.cs:28:7:28:8 | Entry | MultiImplementationA.cs:28:7:28:8 | C3 | +| MultiImplementationA.cs:28:7:28:8 | Normal Exit | MultiImplementationA.cs:28:7:28:8 | C3 | +| MultiImplementationA.cs:30:21:30:23 | Entry | MultiImplementationA.cs:30:21:30:23 | get_P3 | +| MultiImplementationA.cs:34:15:34:16 | Before call to method | MultiImplementationA.cs:34:15:34:16 | C4 | +| MultiImplementationA.cs:34:15:34:16 | Entry | MultiImplementationA.cs:34:15:34:16 | C4 | +| MultiImplementationA.cs:34:15:34:16 | Normal Exit | MultiImplementationA.cs:34:15:34:16 | C4 | +| MultiImplementationA.cs:36:9:36:10 | Entry | MultiImplementationA.cs:36:9:36:10 | M1 | +| MultiImplementationA.cs:36:9:36:10 | Exit | MultiImplementationA.cs:36:9:36:10 | M1 | | MultiImplementationA.cs:36:14:36:28 | {...} | MultiImplementationA.cs:36:9:36:10 | M1 | -| MultiImplementationA.cs:37:9:37:10 | enter M2 | MultiImplementationA.cs:37:9:37:10 | M2 | -| MultiImplementationB.cs:1:7:1:8 | this access | MultiImplementationA.cs:4:7:4:8 | C1 | +| MultiImplementationA.cs:37:9:37:10 | Entry | MultiImplementationA.cs:37:9:37:10 | M2 | +| MultiImplementationB.cs:1:7:1:8 | Before call to method | MultiImplementationA.cs:4:7:4:8 | C1 | | MultiImplementationB.cs:3:22:3:22 | 0 | MultiImplementationA.cs:6:22:6:31 | get_P1 | | MultiImplementationB.cs:4:25:4:37 | {...} | MultiImplementationA.cs:7:21:7:23 | get_P2 | | MultiImplementationB.cs:4:43:4:45 | {...} | MultiImplementationA.cs:7:41:7:43 | set_P2 | | MultiImplementationB.cs:5:23:5:23 | 2 | MultiImplementationA.cs:8:16:8:16 | M | -| MultiImplementationB.cs:11:16:11:16 | this access | MultiImplementationA.cs:11:7:11:8 | | -| MultiImplementationB.cs:12:37:12:40 | null | MultiImplementationA.cs:14:31:14:31 | get_Item | +| MultiImplementationB.cs:11:16:11:20 | Before ... = ... | MultiImplementationA.cs:11:7:11:8 | | +| MultiImplementationB.cs:12:31:12:40 | Before throw ... | MultiImplementationA.cs:14:31:14:31 | get_Item | | MultiImplementationB.cs:13:40:13:54 | {...} | MultiImplementationA.cs:15:36:15:38 | get_Item | | MultiImplementationB.cs:13:60:13:62 | {...} | MultiImplementationA.cs:15:54:15:56 | set_Item | | MultiImplementationB.cs:15:5:17:5 | {...} | MultiImplementationA.cs:16:17:16:18 | M1 | -| MultiImplementationB.cs:16:9:16:31 | enter M2 | MultiImplementationB.cs:16:9:16:31 | M2 | -| MultiImplementationB.cs:18:12:18:13 | this access | MultiImplementationA.cs:20:12:20:13 | C2 | -| MultiImplementationB.cs:19:24:19:24 | 1 | MultiImplementationA.cs:21:12:21:13 | C2 | +| MultiImplementationB.cs:16:9:16:31 | Entry | MultiImplementationB.cs:16:9:16:31 | M2 | +| MultiImplementationB.cs:18:12:18:13 | Before call to method | MultiImplementationA.cs:20:12:20:13 | C2 | +| MultiImplementationB.cs:19:19:19:22 | Before call to constructor C2 | MultiImplementationA.cs:21:12:21:13 | C2 | | MultiImplementationB.cs:20:11:20:25 | {...} | MultiImplementationA.cs:22:6:22:7 | ~C2 | -| MultiImplementationB.cs:21:56:21:59 | null | MultiImplementationA.cs:23:28:23:35 | implicit conversion | -| MultiImplementationB.cs:25:7:25:8 | this access | MultiImplementationA.cs:28:7:28:8 | C3 | -| MultiImplementationB.cs:30:15:30:16 | this access | MultiImplementationA.cs:34:15:34:16 | C4 | +| MultiImplementationB.cs:21:50:21:59 | Before throw ... | MultiImplementationA.cs:23:28:23:35 | implicit conversion | +| MultiImplementationB.cs:25:7:25:8 | Before call to method | MultiImplementationA.cs:28:7:28:8 | C3 | +| MultiImplementationB.cs:30:15:30:16 | Before call to method | MultiImplementationA.cs:34:15:34:16 | C4 | | MultiImplementationB.cs:32:17:32:17 | 0 | MultiImplementationA.cs:36:9:36:10 | M1 | -| NullCoalescing.cs:1:7:1:20 | enter NullCoalescing | NullCoalescing.cs:1:7:1:20 | NullCoalescing | -| NullCoalescing.cs:3:9:3:10 | enter M1 | NullCoalescing.cs:3:9:3:10 | M1 | -| NullCoalescing.cs:3:23:3:28 | ... ?? ... | NullCoalescing.cs:3:9:3:10 | M1 | -| NullCoalescing.cs:3:28:3:28 | 0 | NullCoalescing.cs:3:9:3:10 | M1 | -| NullCoalescing.cs:5:9:5:10 | enter M2 | NullCoalescing.cs:5:9:5:10 | M2 | -| NullCoalescing.cs:5:24:5:43 | ... ? ... : ... | NullCoalescing.cs:5:9:5:10 | M2 | -| NullCoalescing.cs:5:25:5:34 | [false] ... ?? ... | NullCoalescing.cs:5:9:5:10 | M2 | -| NullCoalescing.cs:5:25:5:34 | [true] ... ?? ... | NullCoalescing.cs:5:9:5:10 | M2 | -| NullCoalescing.cs:5:30:5:34 | false | NullCoalescing.cs:5:9:5:10 | M2 | -| NullCoalescing.cs:5:39:5:39 | 0 | NullCoalescing.cs:5:9:5:10 | M2 | -| NullCoalescing.cs:5:43:5:43 | 1 | NullCoalescing.cs:5:9:5:10 | M2 | -| NullCoalescing.cs:7:12:7:13 | enter M3 | NullCoalescing.cs:7:12:7:13 | M3 | -| NullCoalescing.cs:7:40:7:53 | ... ?? ... | NullCoalescing.cs:7:12:7:13 | M3 | -| NullCoalescing.cs:7:46:7:47 | access to parameter s2 | NullCoalescing.cs:7:12:7:13 | M3 | -| NullCoalescing.cs:7:46:7:53 | ... ?? ... | NullCoalescing.cs:7:12:7:13 | M3 | -| NullCoalescing.cs:7:52:7:53 | "" | NullCoalescing.cs:7:12:7:13 | M3 | -| NullCoalescing.cs:9:12:9:13 | enter M4 | NullCoalescing.cs:9:12:9:13 | M4 | -| NullCoalescing.cs:9:36:9:58 | ... ?? ... | NullCoalescing.cs:9:12:9:13 | M4 | -| NullCoalescing.cs:9:37:9:45 | [non-null] ... ? ... : ... | NullCoalescing.cs:9:12:9:13 | M4 | -| NullCoalescing.cs:9:37:9:45 | [null] ... ? ... : ... | NullCoalescing.cs:9:12:9:13 | M4 | -| NullCoalescing.cs:9:41:9:41 | access to parameter s | NullCoalescing.cs:9:12:9:13 | M4 | -| NullCoalescing.cs:9:45:9:45 | access to parameter s | NullCoalescing.cs:9:12:9:13 | M4 | -| NullCoalescing.cs:9:51:9:52 | "" | NullCoalescing.cs:9:12:9:13 | M4 | -| NullCoalescing.cs:9:51:9:58 | ... ?? ... | NullCoalescing.cs:9:12:9:13 | M4 | -| NullCoalescing.cs:11:9:11:10 | enter M5 | NullCoalescing.cs:11:9:11:10 | M5 | -| NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | NullCoalescing.cs:11:9:11:10 | M5 | -| NullCoalescing.cs:11:44:11:59 | [false] ... ?? ... | NullCoalescing.cs:11:9:11:10 | M5 | -| NullCoalescing.cs:11:44:11:59 | [true] ... ?? ... | NullCoalescing.cs:11:9:11:10 | M5 | -| NullCoalescing.cs:11:51:11:52 | access to parameter b2 | NullCoalescing.cs:11:9:11:10 | M5 | -| NullCoalescing.cs:11:51:11:58 | [false] ... && ... | NullCoalescing.cs:11:9:11:10 | M5 | -| NullCoalescing.cs:11:51:11:58 | [true] ... && ... | NullCoalescing.cs:11:9:11:10 | M5 | -| NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:9:11:10 | M5 | -| NullCoalescing.cs:11:64:11:64 | 0 | NullCoalescing.cs:11:9:11:10 | M5 | -| NullCoalescing.cs:11:68:11:68 | 1 | NullCoalescing.cs:11:9:11:10 | M5 | -| NullCoalescing.cs:13:10:13:11 | enter M6 | NullCoalescing.cs:13:10:13:11 | M6 | -| NullCoalescing.cs:15:31:15:31 | 0 | NullCoalescing.cs:13:10:13:11 | M6 | -| NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:13:10:13:11 | M6 | -| NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:13:10:13:11 | M6 | -| PartialImplementationA.cs:1:15:1:21 | enter | PartialImplementationA.cs:1:15:1:21 | | -| PartialImplementationA.cs:3:12:3:18 | enter Partial | PartialImplementationA.cs:3:12:3:18 | Partial | -| PartialImplementationB.cs:4:12:4:18 | enter Partial | PartialImplementationB.cs:4:12:4:18 | Partial | -| Patterns.cs:3:7:3:14 | enter Patterns | Patterns.cs:3:7:3:14 | Patterns | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:5:10:5:11 | M1 | -| Patterns.cs:8:13:8:23 | [false] ... is ... | Patterns.cs:5:10:5:11 | M1 | -| Patterns.cs:8:13:8:23 | [true] ... is ... | Patterns.cs:5:10:5:11 | M1 | -| Patterns.cs:9:9:11:9 | {...} | Patterns.cs:5:10:5:11 | M1 | -| Patterns.cs:12:14:18:9 | if (...) ... | Patterns.cs:5:10:5:11 | M1 | -| Patterns.cs:12:18:12:31 | [false] ... is ... | Patterns.cs:5:10:5:11 | M1 | -| Patterns.cs:12:18:12:31 | [true] ... is ... | Patterns.cs:5:10:5:11 | M1 | -| Patterns.cs:13:9:15:9 | {...} | Patterns.cs:5:10:5:11 | M1 | -| Patterns.cs:16:14:18:9 | if (...) ... | Patterns.cs:5:10:5:11 | M1 | -| Patterns.cs:16:18:16:28 | [false] ... is ... | Patterns.cs:5:10:5:11 | M1 | -| Patterns.cs:16:18:16:28 | [true] ... is ... | Patterns.cs:5:10:5:11 | M1 | -| Patterns.cs:17:9:18:9 | {...} | Patterns.cs:5:10:5:11 | M1 | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:5:10:5:11 | M1 | -| Patterns.cs:23:17:23:22 | break; | Patterns.cs:5:10:5:11 | M1 | -| Patterns.cs:24:13:24:36 | case ...: | Patterns.cs:5:10:5:11 | M1 | -| Patterns.cs:24:30:24:31 | access to local variable i2 | Patterns.cs:5:10:5:11 | M1 | -| Patterns.cs:25:17:25:52 | ...; | Patterns.cs:5:10:5:11 | M1 | +| NullCoalescing.cs:1:7:1:20 | Entry | NullCoalescing.cs:1:7:1:20 | NullCoalescing | +| NullCoalescing.cs:3:9:3:10 | Entry | NullCoalescing.cs:3:9:3:10 | M1 | +| NullCoalescing.cs:3:23:3:23 | After access to parameter i [non-null] | NullCoalescing.cs:3:9:3:10 | M1 | +| NullCoalescing.cs:3:23:3:23 | After access to parameter i [null] | NullCoalescing.cs:3:9:3:10 | M1 | +| NullCoalescing.cs:3:23:3:28 | After ... ?? ... | NullCoalescing.cs:3:9:3:10 | M1 | +| NullCoalescing.cs:5:9:5:10 | Entry | NullCoalescing.cs:5:9:5:10 | M2 | +| NullCoalescing.cs:5:24:5:43 | After ... ? ... : ... | NullCoalescing.cs:5:9:5:10 | M2 | +| NullCoalescing.cs:5:25:5:25 | After access to parameter b [non-null] | NullCoalescing.cs:5:9:5:10 | M2 | +| NullCoalescing.cs:5:25:5:25 | After access to parameter b [null] | NullCoalescing.cs:5:9:5:10 | M2 | +| NullCoalescing.cs:5:25:5:34 | After ... ?? ... [false] | NullCoalescing.cs:5:9:5:10 | M2 | +| NullCoalescing.cs:5:25:5:34 | After ... ?? ... [true] | NullCoalescing.cs:5:9:5:10 | M2 | +| NullCoalescing.cs:7:12:7:13 | Entry | NullCoalescing.cs:7:12:7:13 | M3 | +| NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [non-null] | NullCoalescing.cs:7:12:7:13 | M3 | +| NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [null] | NullCoalescing.cs:7:12:7:13 | M3 | +| NullCoalescing.cs:7:40:7:53 | After ... ?? ... | NullCoalescing.cs:7:12:7:13 | M3 | +| NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [non-null] | NullCoalescing.cs:7:12:7:13 | M3 | +| NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [null] | NullCoalescing.cs:7:12:7:13 | M3 | +| NullCoalescing.cs:7:46:7:53 | After ... ?? ... | NullCoalescing.cs:7:12:7:13 | M3 | +| NullCoalescing.cs:9:12:9:13 | Entry | NullCoalescing.cs:9:12:9:13 | M4 | +| NullCoalescing.cs:9:36:9:58 | After ... ?? ... | NullCoalescing.cs:9:12:9:13 | M4 | +| NullCoalescing.cs:9:37:9:37 | After access to parameter b [false] | NullCoalescing.cs:9:12:9:13 | M4 | +| NullCoalescing.cs:9:37:9:37 | After access to parameter b [true] | NullCoalescing.cs:9:12:9:13 | M4 | +| NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [non-null] | NullCoalescing.cs:9:12:9:13 | M4 | +| NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [null] | NullCoalescing.cs:9:12:9:13 | M4 | +| NullCoalescing.cs:9:41:9:41 | After access to parameter s [non-null] | NullCoalescing.cs:9:12:9:13 | M4 | +| NullCoalescing.cs:9:41:9:41 | After access to parameter s [null] | NullCoalescing.cs:9:12:9:13 | M4 | +| NullCoalescing.cs:9:45:9:45 | After access to parameter s [non-null] | NullCoalescing.cs:9:12:9:13 | M4 | +| NullCoalescing.cs:9:45:9:45 | After access to parameter s [null] | NullCoalescing.cs:9:12:9:13 | M4 | +| NullCoalescing.cs:9:51:9:52 | After "" [non-null] | NullCoalescing.cs:9:12:9:13 | M4 | +| NullCoalescing.cs:9:51:9:52 | After "" [null] | NullCoalescing.cs:9:12:9:13 | M4 | +| NullCoalescing.cs:9:51:9:58 | After ... ?? ... | NullCoalescing.cs:9:12:9:13 | M4 | +| NullCoalescing.cs:11:9:11:10 | Entry | NullCoalescing.cs:11:9:11:10 | M5 | +| NullCoalescing.cs:11:43:11:68 | After ... ? ... : ... | NullCoalescing.cs:11:9:11:10 | M5 | +| NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [non-null] | NullCoalescing.cs:11:9:11:10 | M5 | +| NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [null] | NullCoalescing.cs:11:9:11:10 | M5 | +| NullCoalescing.cs:11:44:11:59 | After ... ?? ... [false] | NullCoalescing.cs:11:9:11:10 | M5 | +| NullCoalescing.cs:11:44:11:59 | After ... ?? ... [true] | NullCoalescing.cs:11:9:11:10 | M5 | +| NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [false] | NullCoalescing.cs:11:9:11:10 | M5 | +| NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [true] | NullCoalescing.cs:11:9:11:10 | M5 | +| NullCoalescing.cs:11:51:11:58 | After ... && ... [false] | NullCoalescing.cs:11:9:11:10 | M5 | +| NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [false] | NullCoalescing.cs:11:9:11:10 | M5 | +| NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [true] | NullCoalescing.cs:11:9:11:10 | M5 | +| NullCoalescing.cs:13:10:13:11 | Entry | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:15:17:15:26 | After (...) ... [non-null] | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:15:17:15:26 | After (...) ... [null] | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:15:17:15:31 | After ... ?? ... | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:16:17:16:18 | After "" [non-null] | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:16:17:16:18 | After "" [null] | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:16:17:16:25 | After ... ?? ... | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:17:13:17:19 | After (...) ... [non-null] | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:17:13:17:19 | After (...) ... [null] | NullCoalescing.cs:13:10:13:11 | M6 | +| NullCoalescing.cs:17:13:17:24 | After ... ?? ... | NullCoalescing.cs:13:10:13:11 | M6 | +| PartialImplementationA.cs:1:15:1:21 | Entry | PartialImplementationA.cs:1:15:1:21 | | +| PartialImplementationA.cs:3:12:3:18 | Entry | PartialImplementationA.cs:3:12:3:18 | Partial | +| PartialImplementationB.cs:4:12:4:18 | Entry | PartialImplementationB.cs:4:12:4:18 | Partial | +| Patterns.cs:3:7:3:14 | Entry | Patterns.cs:3:7:3:14 | Patterns | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:8:13:8:23 | After ... is ... [false] | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:8:13:8:23 | [MatchTrue] ... is ... | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:12:14:18:9 | After if (...) ... | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:12:18:12:31 | After ... is ... [false] | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:12:18:12:31 | [MatchTrue] ... is ... | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:16:14:18:9 | After if (...) ... | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:16:18:16:28 | After ... is ... [false] | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:16:18:16:28 | [MatchTrue] ... is ... | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:20:9:38:9 | After switch (...) {...} | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:22:18:22:22 | After "xyz" [match] | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:22:18:22:22 | After "xyz" [no-match] | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:24:18:24:23 | After Int32 i2 [match] | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:24:18:24:23 | After Int32 i2 [no-match] | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:24:30:24:35 | After ... > ... [false] | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:24:30:24:35 | After ... > ... [true] | Patterns.cs:5:10:5:11 | M1 | | Patterns.cs:27:13:27:24 | case ...: | Patterns.cs:5:10:5:11 | M1 | -| Patterns.cs:28:17:28:47 | ...; | Patterns.cs:5:10:5:11 | M1 | -| Patterns.cs:30:13:30:27 | case ...: | Patterns.cs:5:10:5:11 | M1 | -| Patterns.cs:31:17:31:50 | ...; | Patterns.cs:5:10:5:11 | M1 | -| Patterns.cs:33:13:33:24 | case ...: | Patterns.cs:5:10:5:11 | M1 | -| Patterns.cs:34:17:34:22 | break; | Patterns.cs:5:10:5:11 | M1 | -| Patterns.cs:35:13:35:20 | default: | Patterns.cs:5:10:5:11 | M1 | -| Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:5:10:5:11 | M1 | -| Patterns.cs:47:24:47:25 | enter M2 | Patterns.cs:47:24:47:25 | M2 | -| Patterns.cs:50:24:50:25 | enter M3 | Patterns.cs:50:24:50:25 | M3 | -| Patterns.cs:51:9:51:21 | [false] ... is ... | Patterns.cs:50:24:50:25 | M3 | -| Patterns.cs:51:9:51:21 | [true] ... is ... | Patterns.cs:50:24:50:25 | M3 | -| Patterns.cs:51:9:51:39 | ... ? ... : ... | Patterns.cs:50:24:50:25 | M3 | -| Patterns.cs:51:14:51:21 | [match] not ... | Patterns.cs:50:24:50:25 | M3 | -| Patterns.cs:51:14:51:21 | [no-match] not ... | Patterns.cs:50:24:50:25 | M3 | -| Patterns.cs:51:25:51:25 | access to parameter c | Patterns.cs:50:24:50:25 | M3 | -| Patterns.cs:51:34:51:34 | access to parameter c | Patterns.cs:50:24:50:25 | M3 | -| Patterns.cs:53:24:53:25 | enter M4 | Patterns.cs:53:24:53:25 | M4 | -| Patterns.cs:54:18:54:37 | { ... } | Patterns.cs:53:24:53:25 | M4 | -| Patterns.cs:54:27:54:35 | [match] { ... } | Patterns.cs:53:24:53:25 | M4 | -| Patterns.cs:54:27:54:35 | [no-match] { ... } | Patterns.cs:53:24:53:25 | M4 | -| Patterns.cs:54:33:54:33 | 1 | Patterns.cs:53:24:53:25 | M4 | -| Patterns.cs:56:26:56:27 | enter M5 | Patterns.cs:56:26:56:27 | M5 | -| Patterns.cs:58:16:62:9 | ... switch { ... } | Patterns.cs:56:26:56:27 | M5 | -| Patterns.cs:60:13:60:17 | [match] not ... | Patterns.cs:56:26:56:27 | M5 | -| Patterns.cs:60:13:60:17 | [no-match] not ... | Patterns.cs:56:26:56:27 | M5 | -| Patterns.cs:60:22:60:28 | "not 1" | Patterns.cs:56:26:56:27 | M5 | -| Patterns.cs:61:13:61:13 | _ | Patterns.cs:56:26:56:27 | M5 | -| Patterns.cs:61:18:61:24 | "other" | Patterns.cs:56:26:56:27 | M5 | -| Patterns.cs:65:26:65:27 | enter M6 | Patterns.cs:65:26:65:27 | M6 | -| Patterns.cs:69:13:69:17 | [no-match] not ... | Patterns.cs:65:26:65:27 | M6 | -| Patterns.cs:70:13:70:13 | 2 | Patterns.cs:65:26:65:27 | M6 | -| Patterns.cs:70:18:70:27 | "possible" | Patterns.cs:65:26:65:27 | M6 | -| Patterns.cs:74:26:74:27 | enter M7 | Patterns.cs:74:26:74:27 | M7 | -| Patterns.cs:76:16:82:9 | ... switch { ... } | Patterns.cs:74:26:74:27 | M7 | -| Patterns.cs:78:20:78:24 | "> 1" | Patterns.cs:74:26:74:27 | M7 | -| Patterns.cs:79:15:79:15 | 0 | Patterns.cs:74:26:74:27 | M7 | -| Patterns.cs:79:20:79:24 | "< 0" | Patterns.cs:74:26:74:27 | M7 | -| Patterns.cs:80:13:80:13 | 1 | Patterns.cs:74:26:74:27 | M7 | -| Patterns.cs:80:18:80:20 | "1" | Patterns.cs:74:26:74:27 | M7 | -| Patterns.cs:81:13:81:13 | _ | Patterns.cs:74:26:74:27 | M7 | -| Patterns.cs:81:18:81:20 | "0" | Patterns.cs:74:26:74:27 | M7 | -| Patterns.cs:85:26:85:27 | enter M8 | Patterns.cs:85:26:85:27 | M8 | -| Patterns.cs:85:39:85:53 | [false] ... is ... | Patterns.cs:85:26:85:27 | M8 | -| Patterns.cs:85:39:85:53 | [true] ... is ... | Patterns.cs:85:26:85:27 | M8 | -| Patterns.cs:85:39:85:69 | ... ? ... : ... | Patterns.cs:85:26:85:27 | M8 | -| Patterns.cs:85:44:85:53 | [match] ... or ... | Patterns.cs:85:26:85:27 | M8 | -| Patterns.cs:85:44:85:53 | [no-match] ... or ... | Patterns.cs:85:26:85:27 | M8 | -| Patterns.cs:85:49:85:53 | [match] not ... | Patterns.cs:85:26:85:27 | M8 | -| Patterns.cs:85:49:85:53 | [no-match] not ... | Patterns.cs:85:26:85:27 | M8 | -| Patterns.cs:85:53:85:53 | 2 | Patterns.cs:85:26:85:27 | M8 | -| Patterns.cs:85:57:85:63 | "not 2" | Patterns.cs:85:26:85:27 | M8 | -| Patterns.cs:85:67:85:69 | "2" | Patterns.cs:85:26:85:27 | M8 | -| Patterns.cs:87:26:87:27 | enter M9 | Patterns.cs:87:26:87:27 | M9 | -| Patterns.cs:87:39:87:54 | [false] ... is ... | Patterns.cs:87:26:87:27 | M9 | -| Patterns.cs:87:39:87:54 | [true] ... is ... | Patterns.cs:87:26:87:27 | M9 | -| Patterns.cs:87:39:87:70 | ... ? ... : ... | Patterns.cs:87:26:87:27 | M9 | -| Patterns.cs:87:44:87:54 | [match] ... and ... | Patterns.cs:87:26:87:27 | M9 | -| Patterns.cs:87:44:87:54 | [no-match] ... and ... | Patterns.cs:87:26:87:27 | M9 | -| Patterns.cs:87:50:87:54 | [match] not ... | Patterns.cs:87:26:87:27 | M9 | -| Patterns.cs:87:50:87:54 | [no-match] not ... | Patterns.cs:87:26:87:27 | M9 | -| Patterns.cs:87:54:87:54 | 2 | Patterns.cs:87:26:87:27 | M9 | -| Patterns.cs:87:58:87:60 | "1" | Patterns.cs:87:26:87:27 | M9 | -| Patterns.cs:87:64:87:70 | "not 1" | Patterns.cs:87:26:87:27 | M9 | -| Patterns.cs:93:17:93:19 | enter M10 | Patterns.cs:93:17:93:19 | M10 | -| Patterns.cs:93:17:93:19 | exit M10 (normal) | Patterns.cs:93:17:93:19 | M10 | -| Patterns.cs:95:13:95:40 | [false] ... is ... | Patterns.cs:93:17:93:19 | M10 | -| Patterns.cs:95:13:95:40 | [true] ... is ... | Patterns.cs:93:17:93:19 | M10 | -| Patterns.cs:95:21:95:40 | [match] { ... } | Patterns.cs:93:17:93:19 | M10 | -| Patterns.cs:95:21:95:40 | [match] { ... } | Patterns.cs:93:17:93:19 | M10 | -| Patterns.cs:95:21:95:40 | [no-match] { ... } | Patterns.cs:93:17:93:19 | M10 | -| Patterns.cs:95:21:95:40 | [no-match] { ... } | Patterns.cs:93:17:93:19 | M10 | -| Patterns.cs:95:29:95:38 | [match] ... or ... | Patterns.cs:93:17:93:19 | M10 | -| Patterns.cs:95:29:95:38 | [no-match] ... or ... | Patterns.cs:93:17:93:19 | M10 | -| Patterns.cs:95:36:95:38 | access to constant B | Patterns.cs:93:17:93:19 | M10 | -| Patterns.cs:96:9:98:9 | {...} | Patterns.cs:93:17:93:19 | M10 | -| PostDominance.cs:3:7:3:19 | enter PostDominance | PostDominance.cs:3:7:3:19 | PostDominance | -| PostDominance.cs:5:10:5:11 | enter M1 | PostDominance.cs:5:10:5:11 | M1 | -| PostDominance.cs:10:10:10:11 | enter M2 | PostDominance.cs:10:10:10:11 | M2 | -| PostDominance.cs:10:10:10:11 | exit M2 (normal) | PostDominance.cs:10:10:10:11 | M2 | -| PostDominance.cs:12:13:12:21 | [false] ... is ... | PostDominance.cs:10:10:10:11 | M2 | -| PostDominance.cs:12:13:12:21 | [true] ... is ... | PostDominance.cs:10:10:10:11 | M2 | -| PostDominance.cs:13:13:13:19 | return ...; | PostDominance.cs:10:10:10:11 | M2 | -| PostDominance.cs:14:9:14:29 | ...; | PostDominance.cs:10:10:10:11 | M2 | -| PostDominance.cs:17:10:17:11 | enter M3 | PostDominance.cs:17:10:17:11 | M3 | -| PostDominance.cs:17:10:17:11 | exit M3 | PostDominance.cs:17:10:17:11 | M3 | -| PostDominance.cs:19:13:19:21 | [false] ... is ... | PostDominance.cs:17:10:17:11 | M3 | -| PostDominance.cs:19:13:19:21 | [true] ... is ... | PostDominance.cs:17:10:17:11 | M3 | -| PostDominance.cs:20:45:20:53 | nameof(...) | PostDominance.cs:17:10:17:11 | M3 | -| PostDominance.cs:21:9:21:29 | ...; | PostDominance.cs:17:10:17:11 | M3 | -| Qualifiers.cs:1:7:1:16 | enter Qualifiers | Qualifiers.cs:1:7:1:16 | Qualifiers | -| Qualifiers.cs:7:16:7:21 | enter Method | Qualifiers.cs:7:16:7:21 | Method | -| Qualifiers.cs:8:23:8:34 | enter StaticMethod | Qualifiers.cs:8:23:8:34 | StaticMethod | -| Qualifiers.cs:10:10:10:10 | enter M | Qualifiers.cs:10:10:10:10 | M | -| Switch.cs:3:7:3:12 | enter Switch | Switch.cs:3:7:3:12 | Switch | -| Switch.cs:5:10:5:11 | enter M1 | Switch.cs:5:10:5:11 | M1 | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:10:10:10:11 | M2 | -| Switch.cs:10:10:10:11 | exit M2 | Switch.cs:10:10:10:11 | M2 | -| Switch.cs:10:10:10:11 | exit M2 (abnormal) | Switch.cs:10:10:10:11 | M2 | -| Switch.cs:10:10:10:11 | exit M2 (normal) | Switch.cs:10:10:10:11 | M2 | -| Switch.cs:15:17:15:23 | return ...; | Switch.cs:10:10:10:11 | M2 | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:10:10:10:11 | M2 | -| Switch.cs:17:23:17:37 | object creation of type Exception | Switch.cs:10:10:10:11 | M2 | -| Switch.cs:18:13:18:22 | case ...: | Switch.cs:10:10:10:11 | M2 | -| Switch.cs:19:17:19:29 | goto default; | Switch.cs:10:10:10:11 | M2 | -| Switch.cs:20:13:20:23 | case ...: | Switch.cs:10:10:10:11 | M2 | -| Switch.cs:21:17:22:27 | if (...) ... | Switch.cs:10:10:10:11 | M2 | -| Switch.cs:22:21:22:27 | return ...; | Switch.cs:10:10:10:11 | M2 | -| Switch.cs:23:27:23:27 | 0 | Switch.cs:10:10:10:11 | M2 | -| Switch.cs:24:13:24:56 | case ...: | Switch.cs:10:10:10:11 | M2 | -| Switch.cs:24:32:24:32 | access to local variable s | Switch.cs:10:10:10:11 | M2 | -| Switch.cs:24:32:24:55 | [false] ... && ... | Switch.cs:10:10:10:11 | M2 | -| Switch.cs:24:32:24:55 | [true] ... && ... | Switch.cs:10:10:10:11 | M2 | -| Switch.cs:24:48:24:48 | access to local variable s | Switch.cs:10:10:10:11 | M2 | -| Switch.cs:25:17:25:37 | ...; | Switch.cs:10:10:10:11 | M2 | +| Patterns.cs:27:18:27:23 | After Int32 i3 [match] | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:27:18:27:23 | After Int32 i3 [no-match] | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:30:18:30:26 | After String s2 [match] | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:30:18:30:26 | After String s2 [no-match] | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:33:18:33:23 | After Object v2 [match] | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:33:18:33:23 | After Object v2 [no-match] | Patterns.cs:5:10:5:11 | M1 | +| Patterns.cs:47:24:47:25 | Entry | Patterns.cs:47:24:47:25 | M2 | +| Patterns.cs:48:9:48:20 | After ... is ... | Patterns.cs:47:24:47:25 | M2 | +| Patterns.cs:48:9:48:20 | [MatchTrue] ... is ... | Patterns.cs:47:24:47:25 | M2 | +| Patterns.cs:50:24:50:25 | Entry | Patterns.cs:50:24:50:25 | M3 | +| Patterns.cs:51:9:51:21 | After ... is ... [false] | Patterns.cs:50:24:50:25 | M3 | +| Patterns.cs:51:9:51:21 | [MatchTrue] ... is ... | Patterns.cs:50:24:50:25 | M3 | +| Patterns.cs:51:9:51:39 | After ... ? ... : ... | Patterns.cs:50:24:50:25 | M3 | +| Patterns.cs:51:25:51:30 | After ... is ... | Patterns.cs:50:24:50:25 | M3 | +| Patterns.cs:51:25:51:30 | [MatchTrue] ... is ... | Patterns.cs:50:24:50:25 | M3 | +| Patterns.cs:51:34:51:39 | After ... is ... | Patterns.cs:50:24:50:25 | M3 | +| Patterns.cs:51:34:51:39 | [MatchTrue] ... is ... | Patterns.cs:50:24:50:25 | M3 | +| Patterns.cs:53:24:53:25 | Entry | Patterns.cs:53:24:53:25 | M4 | +| Patterns.cs:54:9:54:37 | After ... is ... | Patterns.cs:53:24:53:25 | M4 | +| Patterns.cs:54:9:54:37 | [MatchTrue] ... is ... | Patterns.cs:53:24:53:25 | M4 | +| Patterns.cs:56:26:56:27 | Entry | Patterns.cs:56:26:56:27 | M5 | +| Patterns.cs:58:16:62:9 | After ... switch { ... } | Patterns.cs:56:26:56:27 | M5 | +| Patterns.cs:60:13:60:17 | After not ... [match] | Patterns.cs:56:26:56:27 | M5 | +| Patterns.cs:60:13:60:17 | After not ... [no-match] | Patterns.cs:56:26:56:27 | M5 | +| Patterns.cs:65:26:65:27 | Entry | Patterns.cs:65:26:65:27 | M6 | +| Patterns.cs:67:16:71:9 | After ... switch { ... } | Patterns.cs:65:26:65:27 | M6 | +| Patterns.cs:69:13:69:17 | After not ... [match] | Patterns.cs:65:26:65:27 | M6 | +| Patterns.cs:69:13:69:17 | After not ... [no-match] | Patterns.cs:65:26:65:27 | M6 | +| Patterns.cs:70:13:70:13 | After 2 [match] | Patterns.cs:65:26:65:27 | M6 | +| Patterns.cs:70:13:70:13 | After 2 [no-match] | Patterns.cs:65:26:65:27 | M6 | +| Patterns.cs:74:26:74:27 | Entry | Patterns.cs:74:26:74:27 | M7 | +| Patterns.cs:76:16:82:9 | After ... switch { ... } | Patterns.cs:74:26:74:27 | M7 | +| Patterns.cs:78:13:78:15 | After > ... [match] | Patterns.cs:74:26:74:27 | M7 | +| Patterns.cs:78:13:78:15 | After > ... [no-match] | Patterns.cs:74:26:74:27 | M7 | +| Patterns.cs:79:13:79:15 | After < ... [match] | Patterns.cs:74:26:74:27 | M7 | +| Patterns.cs:79:13:79:15 | After < ... [no-match] | Patterns.cs:74:26:74:27 | M7 | +| Patterns.cs:80:13:80:13 | After 1 [match] | Patterns.cs:74:26:74:27 | M7 | +| Patterns.cs:80:13:80:13 | After 1 [no-match] | Patterns.cs:74:26:74:27 | M7 | +| Patterns.cs:85:26:85:27 | Entry | Patterns.cs:85:26:85:27 | M8 | +| Patterns.cs:85:39:85:53 | After ... is ... [false] | Patterns.cs:85:26:85:27 | M8 | +| Patterns.cs:85:39:85:53 | [MatchTrue] ... is ... | Patterns.cs:85:26:85:27 | M8 | +| Patterns.cs:85:39:85:69 | After ... ? ... : ... | Patterns.cs:85:26:85:27 | M8 | +| Patterns.cs:87:26:87:27 | Entry | Patterns.cs:87:26:87:27 | M9 | +| Patterns.cs:87:39:87:54 | After ... is ... [false] | Patterns.cs:87:26:87:27 | M9 | +| Patterns.cs:87:39:87:54 | [MatchTrue] ... is ... | Patterns.cs:87:26:87:27 | M9 | +| Patterns.cs:87:39:87:70 | After ... ? ... : ... | Patterns.cs:87:26:87:27 | M9 | +| Patterns.cs:93:17:93:19 | Entry | Patterns.cs:93:17:93:19 | M10 | +| Patterns.cs:95:9:98:9 | After if (...) ... | Patterns.cs:93:17:93:19 | M10 | +| Patterns.cs:95:13:95:40 | After ... is ... [false] | Patterns.cs:93:17:93:19 | M10 | +| Patterns.cs:95:13:95:40 | [MatchTrue] ... is ... | Patterns.cs:93:17:93:19 | M10 | +| PostDominance.cs:3:7:3:19 | Entry | PostDominance.cs:3:7:3:19 | PostDominance | +| PostDominance.cs:5:10:5:11 | Entry | PostDominance.cs:5:10:5:11 | M1 | +| PostDominance.cs:10:10:10:11 | Entry | PostDominance.cs:10:10:10:11 | M2 | +| PostDominance.cs:10:10:10:11 | Normal Exit | PostDominance.cs:10:10:10:11 | M2 | +| PostDominance.cs:12:13:12:21 | After ... is ... [false] | PostDominance.cs:10:10:10:11 | M2 | +| PostDominance.cs:12:13:12:21 | [MatchTrue] ... is ... | PostDominance.cs:10:10:10:11 | M2 | +| PostDominance.cs:17:10:17:11 | Entry | PostDominance.cs:17:10:17:11 | M3 | +| PostDominance.cs:17:10:17:11 | Exit | PostDominance.cs:17:10:17:11 | M3 | +| PostDominance.cs:19:13:19:21 | After ... is ... [false] | PostDominance.cs:17:10:17:11 | M3 | +| PostDominance.cs:19:13:19:21 | [MatchTrue] ... is ... | PostDominance.cs:17:10:17:11 | M3 | +| Qualifiers.cs:1:7:1:16 | Entry | Qualifiers.cs:1:7:1:16 | Qualifiers | +| Qualifiers.cs:7:16:7:21 | Entry | Qualifiers.cs:7:16:7:21 | Method | +| Qualifiers.cs:8:23:8:34 | Entry | Qualifiers.cs:8:23:8:34 | StaticMethod | +| Qualifiers.cs:10:10:10:10 | Entry | Qualifiers.cs:10:10:10:10 | M | +| Switch.cs:3:7:3:12 | Entry | Switch.cs:3:7:3:12 | Switch | +| Switch.cs:5:10:5:11 | Entry | Switch.cs:5:10:5:11 | M1 | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:10:10:10:11 | Exceptional Exit | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:10:10:10:11 | Exit | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:10:10:10:11 | Normal Exit | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:14:18:14:20 | After "a" [match] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:16:13:16:19 | After case ...: [match] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:16:18:16:18 | After 0 [match] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:18:18:18:21 | After null [match] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:18:18:18:21 | After null [no-match] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:20:18:20:22 | After Int32 i [match] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:20:18:20:22 | After Int32 i [no-match] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:21:21:21:29 | After ... == ... [false] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:21:21:21:29 | After ... == ... [true] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:24:18:24:25 | After String s [match] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:24:18:24:25 | After String s [no-match] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:24:32:24:43 | After ... > ... [false] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:24:32:24:43 | After ... > ... [true] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:24:32:24:55 | After ... && ... [false] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:24:48:24:55 | After ... != ... [false] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:24:48:24:55 | After ... != ... [true] | Switch.cs:10:10:10:11 | M2 | | Switch.cs:27:13:27:39 | case ...: | Switch.cs:10:10:10:11 | M2 | -| Switch.cs:27:32:27:38 | call to method Throw | Switch.cs:10:10:10:11 | M2 | -| Switch.cs:30:13:30:20 | default: | Switch.cs:10:10:10:11 | M2 | -| Switch.cs:35:10:35:11 | enter M3 | Switch.cs:35:10:35:11 | M3 | -| Switch.cs:44:10:44:11 | enter M4 | Switch.cs:44:10:44:11 | M4 | -| Switch.cs:44:10:44:11 | exit M4 (normal) | Switch.cs:44:10:44:11 | M4 | -| Switch.cs:49:17:49:22 | break; | Switch.cs:44:10:44:11 | M4 | -| Switch.cs:50:13:50:39 | case ...: | Switch.cs:44:10:44:11 | M4 | -| Switch.cs:50:30:50:30 | access to parameter o | Switch.cs:44:10:44:11 | M4 | -| Switch.cs:51:17:51:22 | break; | Switch.cs:44:10:44:11 | M4 | -| Switch.cs:55:10:55:11 | enter M5 | Switch.cs:55:10:55:11 | M5 | -| Switch.cs:61:13:61:19 | case ...: | Switch.cs:55:10:55:11 | M5 | -| Switch.cs:62:17:62:22 | break; | Switch.cs:55:10:55:11 | M5 | -| Switch.cs:66:10:66:11 | enter M6 | Switch.cs:66:10:66:11 | M6 | -| Switch.cs:66:10:66:11 | exit M6 (normal) | Switch.cs:66:10:66:11 | M6 | -| Switch.cs:72:13:72:20 | case ...: | Switch.cs:66:10:66:11 | M6 | -| Switch.cs:73:17:73:22 | break; | Switch.cs:66:10:66:11 | M6 | -| Switch.cs:77:10:77:11 | enter M7 | Switch.cs:77:10:77:11 | M7 | -| Switch.cs:77:10:77:11 | exit M7 (normal) | Switch.cs:77:10:77:11 | M7 | -| Switch.cs:82:24:82:27 | true | Switch.cs:77:10:77:11 | M7 | -| Switch.cs:83:13:83:19 | case ...: | Switch.cs:77:10:77:11 | M7 | -| Switch.cs:84:17:85:26 | if (...) ... | Switch.cs:77:10:77:11 | M7 | -| Switch.cs:85:21:85:26 | break; | Switch.cs:77:10:77:11 | M7 | -| Switch.cs:86:24:86:27 | true | Switch.cs:77:10:77:11 | M7 | -| Switch.cs:88:16:88:20 | false | Switch.cs:77:10:77:11 | M7 | -| Switch.cs:91:10:91:11 | enter M8 | Switch.cs:91:10:91:11 | M8 | -| Switch.cs:91:10:91:11 | exit M8 (normal) | Switch.cs:91:10:91:11 | M8 | -| Switch.cs:96:24:96:27 | true | Switch.cs:91:10:91:11 | M8 | -| Switch.cs:98:16:98:20 | false | Switch.cs:91:10:91:11 | M8 | -| Switch.cs:101:9:101:10 | enter M9 | Switch.cs:101:9:101:10 | M9 | -| Switch.cs:101:9:101:10 | exit M9 (normal) | Switch.cs:101:9:101:10 | M9 | -| Switch.cs:103:17:103:25 | access to property Length | Switch.cs:101:9:101:10 | M9 | -| Switch.cs:105:13:105:19 | case ...: | Switch.cs:101:9:101:10 | M9 | -| Switch.cs:105:28:105:28 | 0 | Switch.cs:101:9:101:10 | M9 | -| Switch.cs:106:13:106:19 | case ...: | Switch.cs:101:9:101:10 | M9 | -| Switch.cs:106:28:106:28 | 1 | Switch.cs:101:9:101:10 | M9 | -| Switch.cs:108:17:108:17 | 1 | Switch.cs:101:9:101:10 | M9 | -| Switch.cs:111:17:111:21 | enter Throw | Switch.cs:111:17:111:21 | Throw | -| Switch.cs:113:9:113:11 | enter M10 | Switch.cs:113:9:113:11 | M10 | -| Switch.cs:113:9:113:11 | exit M10 (normal) | Switch.cs:113:9:113:11 | M10 | -| Switch.cs:117:25:117:25 | access to parameter s | Switch.cs:113:9:113:11 | M10 | -| Switch.cs:117:44:117:44 | 1 | Switch.cs:113:9:113:11 | M10 | +| Switch.cs:27:18:27:25 | After Double d [match] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:27:18:27:25 | After Double d [no-match] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:30:13:30:20 | After default: [match] | Switch.cs:10:10:10:11 | M2 | +| Switch.cs:35:10:35:11 | Entry | Switch.cs:35:10:35:11 | M3 | +| Switch.cs:44:10:44:11 | Entry | Switch.cs:44:10:44:11 | M4 | +| Switch.cs:46:9:52:9 | After switch (...) {...} | Switch.cs:44:10:44:11 | M4 | +| Switch.cs:48:18:48:20 | After access to type Int32 [match] | Switch.cs:44:10:44:11 | M4 | +| Switch.cs:48:18:48:20 | After access to type Int32 [no-match] | Switch.cs:44:10:44:11 | M4 | +| Switch.cs:50:18:50:21 | After access to type Boolean [match] | Switch.cs:44:10:44:11 | M4 | +| Switch.cs:50:18:50:21 | After access to type Boolean [no-match] | Switch.cs:44:10:44:11 | M4 | +| Switch.cs:50:30:50:38 | After ... != ... [false] | Switch.cs:44:10:44:11 | M4 | +| Switch.cs:50:30:50:38 | After ... != ... [true] | Switch.cs:44:10:44:11 | M4 | +| Switch.cs:55:10:55:11 | Entry | Switch.cs:55:10:55:11 | M5 | +| Switch.cs:57:9:63:9 | After switch (...) {...} | Switch.cs:55:10:55:11 | M5 | +| Switch.cs:59:18:59:18 | After 2 [match] | Switch.cs:55:10:55:11 | M5 | +| Switch.cs:59:18:59:18 | After 2 [no-match] | Switch.cs:55:10:55:11 | M5 | +| Switch.cs:61:18:61:18 | After 3 [match] | Switch.cs:55:10:55:11 | M5 | +| Switch.cs:61:18:61:18 | After 3 [no-match] | Switch.cs:55:10:55:11 | M5 | +| Switch.cs:66:10:66:11 | Entry | Switch.cs:66:10:66:11 | M6 | +| Switch.cs:68:9:74:9 | After switch (...) {...} | Switch.cs:66:10:66:11 | M6 | +| Switch.cs:70:18:70:20 | After access to type Int32 [match] | Switch.cs:66:10:66:11 | M6 | +| Switch.cs:70:18:70:20 | After access to type Int32 [no-match] | Switch.cs:66:10:66:11 | M6 | +| Switch.cs:72:18:72:19 | After "" [match] | Switch.cs:66:10:66:11 | M6 | +| Switch.cs:72:18:72:19 | After "" [no-match] | Switch.cs:66:10:66:11 | M6 | +| Switch.cs:77:10:77:11 | Entry | Switch.cs:77:10:77:11 | M7 | +| Switch.cs:77:10:77:11 | Normal Exit | Switch.cs:77:10:77:11 | M7 | +| Switch.cs:79:9:87:9 | After switch (...) {...} | Switch.cs:77:10:77:11 | M7 | +| Switch.cs:81:18:81:18 | After 1 [match] | Switch.cs:77:10:77:11 | M7 | +| Switch.cs:81:18:81:18 | After 1 [no-match] | Switch.cs:77:10:77:11 | M7 | +| Switch.cs:83:18:83:18 | After 2 [match] | Switch.cs:77:10:77:11 | M7 | +| Switch.cs:83:18:83:18 | After 2 [no-match] | Switch.cs:77:10:77:11 | M7 | +| Switch.cs:84:21:84:25 | After ... > ... [false] | Switch.cs:77:10:77:11 | M7 | +| Switch.cs:84:21:84:25 | After ... > ... [true] | Switch.cs:77:10:77:11 | M7 | +| Switch.cs:91:10:91:11 | Entry | Switch.cs:91:10:91:11 | M8 | +| Switch.cs:91:10:91:11 | Normal Exit | Switch.cs:91:10:91:11 | M8 | +| Switch.cs:95:18:95:20 | After access to type Int32 [match] | Switch.cs:91:10:91:11 | M8 | +| Switch.cs:95:18:95:20 | After access to type Int32 [no-match] | Switch.cs:91:10:91:11 | M8 | +| Switch.cs:101:9:101:10 | Entry | Switch.cs:101:9:101:10 | M9 | +| Switch.cs:101:9:101:10 | Normal Exit | Switch.cs:101:9:101:10 | M9 | +| Switch.cs:103:17:103:17 | After access to parameter s [non-null] | Switch.cs:101:9:101:10 | M9 | +| Switch.cs:103:17:103:17 | After access to parameter s [null] | Switch.cs:101:9:101:10 | M9 | +| Switch.cs:103:17:103:25 | After access to property Length | Switch.cs:101:9:101:10 | M9 | +| Switch.cs:105:18:105:18 | After 0 [match] | Switch.cs:101:9:101:10 | M9 | +| Switch.cs:105:18:105:18 | After 0 [no-match] | Switch.cs:101:9:101:10 | M9 | +| Switch.cs:106:18:106:18 | After 1 [match] | Switch.cs:101:9:101:10 | M9 | +| Switch.cs:106:18:106:18 | After 1 [no-match] | Switch.cs:101:9:101:10 | M9 | +| Switch.cs:111:17:111:21 | Entry | Switch.cs:111:17:111:21 | Throw | +| Switch.cs:113:9:113:11 | Entry | Switch.cs:113:9:113:11 | M10 | +| Switch.cs:113:9:113:11 | Normal Exit | Switch.cs:113:9:113:11 | M10 | +| Switch.cs:115:9:119:9 | After switch (...) {...} | Switch.cs:113:9:113:11 | M10 | +| Switch.cs:117:18:117:18 | After 3 [match] | Switch.cs:113:9:113:11 | M10 | +| Switch.cs:117:18:117:18 | After 3 [no-match] | Switch.cs:113:9:113:11 | M10 | +| Switch.cs:117:25:117:34 | After ... == ... [false] | Switch.cs:113:9:113:11 | M10 | +| Switch.cs:117:25:117:34 | After ... == ... [true] | Switch.cs:113:9:113:11 | M10 | | Switch.cs:118:13:118:34 | case ...: | Switch.cs:113:9:113:11 | M10 | -| Switch.cs:118:25:118:25 | access to parameter s | Switch.cs:113:9:113:11 | M10 | -| Switch.cs:118:43:118:43 | 2 | Switch.cs:113:9:113:11 | M10 | -| Switch.cs:120:17:120:17 | 1 | Switch.cs:113:9:113:11 | M10 | -| Switch.cs:123:10:123:12 | enter M11 | Switch.cs:123:10:123:12 | M11 | -| Switch.cs:123:10:123:12 | exit M11 (normal) | Switch.cs:123:10:123:12 | M11 | -| Switch.cs:125:13:125:48 | [false] ... switch { ... } | Switch.cs:123:10:123:12 | M11 | -| Switch.cs:125:13:125:48 | [true] ... switch { ... } | Switch.cs:123:10:123:12 | M11 | -| Switch.cs:125:24:125:34 | [false] ... => ... | Switch.cs:123:10:123:12 | M11 | -| Switch.cs:125:24:125:34 | [true] ... => ... | Switch.cs:123:10:123:12 | M11 | -| Switch.cs:125:34:125:34 | access to local variable b | Switch.cs:123:10:123:12 | M11 | -| Switch.cs:125:37:125:37 | _ | Switch.cs:123:10:123:12 | M11 | -| Switch.cs:125:37:125:46 | [false] ... => ... | Switch.cs:123:10:123:12 | M11 | -| Switch.cs:125:42:125:46 | false | Switch.cs:123:10:123:12 | M11 | -| Switch.cs:126:13:126:19 | return ...; | Switch.cs:123:10:123:12 | M11 | -| Switch.cs:129:12:129:14 | enter M12 | Switch.cs:129:12:129:14 | M12 | -| Switch.cs:131:9:131:67 | return ...; | Switch.cs:129:12:129:14 | M12 | -| Switch.cs:131:16:131:66 | call to method ToString | Switch.cs:129:12:129:14 | M12 | -| Switch.cs:131:17:131:53 | [non-null] ... switch { ... } | Switch.cs:129:12:129:14 | M12 | -| Switch.cs:131:17:131:53 | [null] ... switch { ... } | Switch.cs:129:12:129:14 | M12 | -| Switch.cs:131:28:131:40 | [non-null] ... => ... | Switch.cs:129:12:129:14 | M12 | -| Switch.cs:131:28:131:40 | [null] ... => ... | Switch.cs:129:12:129:14 | M12 | -| Switch.cs:131:40:131:40 | access to local variable s | Switch.cs:129:12:129:14 | M12 | -| Switch.cs:131:43:131:43 | _ | Switch.cs:129:12:129:14 | M12 | -| Switch.cs:131:43:131:51 | [null] ... => ... | Switch.cs:129:12:129:14 | M12 | -| Switch.cs:131:48:131:51 | null | Switch.cs:129:12:129:14 | M12 | -| Switch.cs:134:9:134:11 | enter M13 | Switch.cs:134:9:134:11 | M13 | -| Switch.cs:134:9:134:11 | exit M13 (normal) | Switch.cs:134:9:134:11 | M13 | -| Switch.cs:138:13:138:20 | default: | Switch.cs:134:9:134:11 | M13 | -| Switch.cs:139:28:139:28 | 1 | Switch.cs:134:9:134:11 | M13 | -| Switch.cs:140:13:140:19 | case ...: | Switch.cs:134:9:134:11 | M13 | -| Switch.cs:140:28:140:28 | 2 | Switch.cs:134:9:134:11 | M13 | -| Switch.cs:144:9:144:11 | enter M14 | Switch.cs:144:9:144:11 | M14 | -| Switch.cs:144:9:144:11 | exit M14 (normal) | Switch.cs:144:9:144:11 | M14 | -| Switch.cs:148:28:148:28 | 1 | Switch.cs:144:9:144:11 | M14 | -| Switch.cs:149:13:149:20 | default: | Switch.cs:144:9:144:11 | M14 | -| Switch.cs:150:13:150:19 | case ...: | Switch.cs:144:9:144:11 | M14 | -| Switch.cs:150:28:150:28 | 2 | Switch.cs:144:9:144:11 | M14 | -| Switch.cs:154:10:154:12 | enter M15 | Switch.cs:154:10:154:12 | M15 | -| Switch.cs:154:10:154:12 | exit M15 | Switch.cs:154:10:154:12 | M15 | -| Switch.cs:154:10:154:12 | exit M15 (abnormal) | Switch.cs:154:10:154:12 | M15 | -| Switch.cs:154:10:154:12 | exit M15 (normal) | Switch.cs:154:10:154:12 | M15 | -| Switch.cs:156:17:156:54 | ... switch { ... } | Switch.cs:154:10:154:12 | M15 | -| Switch.cs:156:36:156:38 | "a" | Switch.cs:154:10:154:12 | M15 | -| Switch.cs:156:41:156:45 | false | Switch.cs:154:10:154:12 | M15 | -| Switch.cs:156:50:156:52 | "b" | Switch.cs:154:10:154:12 | M15 | -| Switch.cs:158:13:158:49 | ...; | Switch.cs:154:10:154:12 | M15 | -| Switch.cs:160:13:160:49 | ...; | Switch.cs:154:10:154:12 | M15 | -| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:163:10:163:12 | M16 | -| Switch.cs:163:10:163:12 | exit M16 (normal) | Switch.cs:163:10:163:12 | M16 | -| Switch.cs:168:13:168:19 | case ...: | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:118:18:118:18 | After 2 [match] | Switch.cs:113:9:113:11 | M10 | +| Switch.cs:118:18:118:18 | After 2 [no-match] | Switch.cs:113:9:113:11 | M10 | +| Switch.cs:118:25:118:33 | After ... == ... [false] | Switch.cs:113:9:113:11 | M10 | +| Switch.cs:118:25:118:33 | After ... == ... [true] | Switch.cs:113:9:113:11 | M10 | +| Switch.cs:123:10:123:12 | Entry | Switch.cs:123:10:123:12 | M11 | +| Switch.cs:123:10:123:12 | Normal Exit | Switch.cs:123:10:123:12 | M11 | +| Switch.cs:125:13:125:48 | After ... switch { ... } [false] | Switch.cs:123:10:123:12 | M11 | +| Switch.cs:125:13:125:48 | After ... switch { ... } [true] | Switch.cs:123:10:123:12 | M11 | +| Switch.cs:125:24:125:29 | After Boolean b [match] | Switch.cs:123:10:123:12 | M11 | +| Switch.cs:125:24:125:29 | After Boolean b [no-match] | Switch.cs:123:10:123:12 | M11 | +| Switch.cs:129:12:129:14 | Entry | Switch.cs:129:12:129:14 | M12 | +| Switch.cs:131:16:131:66 | After call to method ToString | Switch.cs:129:12:129:14 | M12 | +| Switch.cs:131:17:131:53 | After ... switch { ... } [non-null] | Switch.cs:129:12:129:14 | M12 | +| Switch.cs:131:17:131:53 | After ... switch { ... } [null] | Switch.cs:129:12:129:14 | M12 | +| Switch.cs:131:28:131:35 | After String s [match] | Switch.cs:129:12:129:14 | M12 | +| Switch.cs:131:28:131:35 | After String s [no-match] | Switch.cs:129:12:129:14 | M12 | +| Switch.cs:134:9:134:11 | Entry | Switch.cs:134:9:134:11 | M13 | +| Switch.cs:134:9:134:11 | Normal Exit | Switch.cs:134:9:134:11 | M13 | +| Switch.cs:139:18:139:18 | After 1 [match] | Switch.cs:134:9:134:11 | M13 | +| Switch.cs:139:18:139:18 | After 1 [no-match] | Switch.cs:134:9:134:11 | M13 | +| Switch.cs:140:18:140:18 | After 2 [match] | Switch.cs:134:9:134:11 | M13 | +| Switch.cs:140:18:140:18 | After 2 [no-match] | Switch.cs:134:9:134:11 | M13 | +| Switch.cs:144:9:144:11 | Entry | Switch.cs:144:9:144:11 | M14 | +| Switch.cs:144:9:144:11 | Normal Exit | Switch.cs:144:9:144:11 | M14 | +| Switch.cs:148:18:148:18 | After 1 [match] | Switch.cs:144:9:144:11 | M14 | +| Switch.cs:148:18:148:18 | After 1 [no-match] | Switch.cs:144:9:144:11 | M14 | +| Switch.cs:150:18:150:18 | After 2 [match] | Switch.cs:144:9:144:11 | M14 | +| Switch.cs:150:18:150:18 | After 2 [no-match] | Switch.cs:144:9:144:11 | M14 | +| Switch.cs:154:10:154:12 | Entry | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:156:17:156:54 | After ... switch { ... } | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:156:28:156:31 | After true [match] | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:156:28:156:31 | After true [no-match] | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:156:41:156:45 | After false [match] | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:156:41:156:45 | After false [no-match] | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:157:9:160:49 | After if (...) ... | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:157:13:157:13 | After access to parameter b [false] | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:157:13:157:13 | After access to parameter b [true] | Switch.cs:154:10:154:12 | M15 | +| Switch.cs:163:10:163:12 | Entry | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:165:9:177:9 | After switch (...) {...} | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:167:18:167:18 | After 1 [match] | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:167:18:167:18 | After 1 [no-match] | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:168:18:168:18 | After 2 [match] | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:168:18:168:18 | After 2 [no-match] | Switch.cs:163:10:163:12 | M16 | | Switch.cs:169:17:169:51 | ...; | Switch.cs:163:10:163:12 | M16 | -| Switch.cs:171:13:171:19 | case ...: | Switch.cs:163:10:163:12 | M16 | -| Switch.cs:172:17:172:46 | ...; | Switch.cs:163:10:163:12 | M16 | -| Switch.cs:174:13:174:20 | default: | Switch.cs:163:10:163:12 | M16 | -| TypeAccesses.cs:1:7:1:18 | enter TypeAccesses | TypeAccesses.cs:1:7:1:18 | TypeAccesses | -| TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:3:10:3:10 | M | -| TypeAccesses.cs:7:13:7:22 | [false] ... is ... | TypeAccesses.cs:3:10:3:10 | M | -| TypeAccesses.cs:7:13:7:22 | [true] ... is ... | TypeAccesses.cs:3:10:3:10 | M | -| TypeAccesses.cs:7:25:7:25 | ; | TypeAccesses.cs:3:10:3:10 | M | -| TypeAccesses.cs:8:9:8:28 | ... ...; | TypeAccesses.cs:3:10:3:10 | M | -| VarDecls.cs:3:7:3:14 | enter VarDecls | VarDecls.cs:3:7:3:14 | VarDecls | -| VarDecls.cs:5:18:5:19 | enter M1 | VarDecls.cs:5:18:5:19 | M1 | -| VarDecls.cs:13:12:13:13 | enter M2 | VarDecls.cs:13:12:13:13 | M2 | -| VarDecls.cs:19:7:19:8 | enter M3 | VarDecls.cs:19:7:19:8 | M3 | -| VarDecls.cs:25:20:25:28 | ... ? ... : ... | VarDecls.cs:19:7:19:8 | M3 | -| VarDecls.cs:25:24:25:24 | access to local variable x | VarDecls.cs:19:7:19:8 | M3 | -| VarDecls.cs:25:28:25:28 | access to local variable y | VarDecls.cs:19:7:19:8 | M3 | -| VarDecls.cs:28:11:28:11 | enter C | VarDecls.cs:28:11:28:11 | C | -| VarDecls.cs:28:41:28:47 | enter Dispose | VarDecls.cs:28:41:28:47 | Dispose | -| cflow.cs:5:17:5:20 | enter Main | cflow.cs:5:17:5:20 | Main | -| cflow.cs:5:17:5:20 | exit Main (normal) | cflow.cs:5:17:5:20 | Main | -| cflow.cs:12:13:12:49 | ...; | cflow.cs:5:17:5:20 | Main | -| cflow.cs:14:9:17:9 | while (...) ... | cflow.cs:5:17:5:20 | Main | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:5:17:5:20 | Main | -| cflow.cs:15:9:17:9 | {...} | cflow.cs:5:17:5:20 | Main | -| cflow.cs:19:9:22:25 | do ... while (...); | cflow.cs:5:17:5:20 | Main | +| Switch.cs:171:18:171:18 | After 3 [match] | Switch.cs:163:10:163:12 | M16 | +| Switch.cs:171:18:171:18 | After 3 [no-match] | Switch.cs:163:10:163:12 | M16 | +| TypeAccesses.cs:1:7:1:18 | Entry | TypeAccesses.cs:1:7:1:18 | TypeAccesses | +| TypeAccesses.cs:3:10:3:10 | Entry | TypeAccesses.cs:3:10:3:10 | M | +| TypeAccesses.cs:7:9:7:25 | After if (...) ... | TypeAccesses.cs:3:10:3:10 | M | +| TypeAccesses.cs:7:13:7:22 | After ... is ... [false] | TypeAccesses.cs:3:10:3:10 | M | +| TypeAccesses.cs:7:13:7:22 | [MatchTrue] ... is ... | TypeAccesses.cs:3:10:3:10 | M | +| VarDecls.cs:3:7:3:14 | Entry | VarDecls.cs:3:7:3:14 | VarDecls | +| VarDecls.cs:5:18:5:19 | Entry | VarDecls.cs:5:18:5:19 | M1 | +| VarDecls.cs:13:12:13:13 | Entry | VarDecls.cs:13:12:13:13 | M2 | +| VarDecls.cs:19:7:19:8 | Entry | VarDecls.cs:19:7:19:8 | M3 | +| VarDecls.cs:25:20:25:20 | After access to parameter b [false] | VarDecls.cs:19:7:19:8 | M3 | +| VarDecls.cs:25:20:25:20 | After access to parameter b [true] | VarDecls.cs:19:7:19:8 | M3 | +| VarDecls.cs:25:20:25:28 | After ... ? ... : ... | VarDecls.cs:19:7:19:8 | M3 | +| VarDecls.cs:28:11:28:11 | Entry | VarDecls.cs:28:11:28:11 | C | +| VarDecls.cs:28:41:28:47 | Entry | VarDecls.cs:28:41:28:47 | Dispose | +| cflow.cs:5:17:5:20 | Entry | cflow.cs:5:17:5:20 | Main | +| cflow.cs:11:9:12:49 | After if (...) ... | cflow.cs:5:17:5:20 | Main | +| cflow.cs:11:13:11:17 | After ... > ... [false] | cflow.cs:5:17:5:20 | Main | +| cflow.cs:11:13:11:17 | After ... > ... [true] | cflow.cs:5:17:5:20 | Main | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:5:17:5:20 | Main | +| cflow.cs:14:16:14:20 | After ... > ... [false] | cflow.cs:5:17:5:20 | Main | +| cflow.cs:14:16:14:20 | After ... > ... [true] | cflow.cs:5:17:5:20 | Main | | cflow.cs:20:9:22:9 | {...} | cflow.cs:5:17:5:20 | Main | -| cflow.cs:24:9:34:9 | for (...;...;...) ... | cflow.cs:5:17:5:20 | Main | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:5:17:5:20 | Main | -| cflow.cs:24:34:24:34 | access to local variable i | cflow.cs:5:17:5:20 | Main | -| cflow.cs:25:9:34:9 | {...} | cflow.cs:5:17:5:20 | Main | -| cflow.cs:26:17:26:40 | [false] ... && ... | cflow.cs:5:17:5:20 | Main | -| cflow.cs:26:17:26:40 | [true] ... && ... | cflow.cs:5:17:5:20 | Main | -| cflow.cs:26:31:26:31 | access to local variable i | cflow.cs:5:17:5:20 | Main | -| cflow.cs:27:17:27:46 | ...; | cflow.cs:5:17:5:20 | Main | -| cflow.cs:28:18:33:37 | if (...) ... | cflow.cs:5:17:5:20 | Main | -| cflow.cs:29:17:29:42 | ...; | cflow.cs:5:17:5:20 | Main | -| cflow.cs:30:18:33:37 | if (...) ... | cflow.cs:5:17:5:20 | Main | -| cflow.cs:31:17:31:42 | ...; | cflow.cs:5:17:5:20 | Main | -| cflow.cs:33:17:33:37 | ...; | cflow.cs:5:17:5:20 | Main | -| cflow.cs:37:17:37:22 | enter Switch | cflow.cs:37:17:37:22 | Switch | -| cflow.cs:37:17:37:22 | exit Switch | cflow.cs:37:17:37:22 | Switch | -| cflow.cs:41:13:41:19 | case ...: | cflow.cs:37:17:37:22 | Switch | -| cflow.cs:42:17:42:39 | ...; | cflow.cs:37:17:37:22 | Switch | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:37:17:37:22 | Switch | -| cflow.cs:45:17:45:39 | ...; | cflow.cs:37:17:37:22 | Switch | -| cflow.cs:47:13:47:19 | case ...: | cflow.cs:37:17:37:22 | Switch | -| cflow.cs:48:17:48:39 | ...; | cflow.cs:37:17:37:22 | Switch | -| cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:37:17:37:22 | Switch | -| cflow.cs:54:17:54:48 | ...; | cflow.cs:37:17:37:22 | Switch | -| cflow.cs:56:13:56:20 | default: | cflow.cs:37:17:37:22 | Switch | -| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:37:17:37:22 | Switch | -| cflow.cs:63:17:64:55 | if (...) ... | cflow.cs:37:17:37:22 | Switch | -| cflow.cs:63:21:63:34 | [false] !... | cflow.cs:37:17:37:22 | Switch | -| cflow.cs:63:21:63:34 | [true] !... | cflow.cs:37:17:37:22 | Switch | -| cflow.cs:64:27:64:54 | object creation of type NullReferenceException | cflow.cs:37:17:37:22 | Switch | -| cflow.cs:65:17:65:22 | break; | cflow.cs:37:17:37:22 | Switch | -| cflow.cs:67:16:67:16 | access to parameter a | cflow.cs:37:17:37:22 | Switch | -| cflow.cs:70:18:70:18 | enter M | cflow.cs:70:18:70:18 | M | -| cflow.cs:70:18:70:18 | exit M (normal) | cflow.cs:70:18:70:18 | M | -| cflow.cs:73:13:73:19 | return ...; | cflow.cs:70:18:70:18 | M | -| cflow.cs:74:9:81:9 | if (...) ... | cflow.cs:70:18:70:18 | M | -| cflow.cs:75:9:77:9 | {...} | cflow.cs:70:18:70:18 | M | -| cflow.cs:79:9:81:9 | {...} | cflow.cs:70:18:70:18 | M | -| cflow.cs:84:18:84:19 | enter M2 | cflow.cs:84:18:84:19 | M2 | -| cflow.cs:84:18:84:19 | exit M2 (normal) | cflow.cs:84:18:84:19 | M2 | -| cflow.cs:86:13:86:37 | [false] ... && ... | cflow.cs:84:18:84:19 | M2 | -| cflow.cs:86:13:86:37 | [true] ... && ... | cflow.cs:84:18:84:19 | M2 | -| cflow.cs:86:26:86:26 | access to parameter s | cflow.cs:84:18:84:19 | M2 | -| cflow.cs:87:13:87:33 | ...; | cflow.cs:84:18:84:19 | M2 | -| cflow.cs:90:18:90:19 | enter M3 | cflow.cs:90:18:90:19 | M3 | -| cflow.cs:90:18:90:19 | exit M3 | cflow.cs:90:18:90:19 | M3 | -| cflow.cs:90:18:90:19 | exit M3 (normal) | cflow.cs:90:18:90:19 | M3 | -| cflow.cs:93:45:93:47 | "s" | cflow.cs:90:18:90:19 | M3 | -| cflow.cs:94:9:94:29 | ...; | cflow.cs:90:18:90:19 | M3 | -| cflow.cs:97:13:97:55 | ...; | cflow.cs:90:18:90:19 | M3 | -| cflow.cs:99:9:100:42 | if (...) ... | cflow.cs:90:18:90:19 | M3 | -| cflow.cs:100:13:100:42 | ...; | cflow.cs:90:18:90:19 | M3 | -| cflow.cs:102:9:103:36 | if (...) ... | cflow.cs:90:18:90:19 | M3 | -| cflow.cs:103:13:103:36 | ...; | cflow.cs:90:18:90:19 | M3 | -| cflow.cs:106:18:106:19 | enter M4 | cflow.cs:106:18:106:19 | M4 | -| cflow.cs:109:9:115:9 | {...} | cflow.cs:106:18:106:19 | M4 | -| cflow.cs:110:20:110:23 | true | cflow.cs:106:18:106:19 | M4 | -| cflow.cs:111:13:113:13 | {...} | cflow.cs:106:18:106:19 | M4 | -| cflow.cs:116:9:116:29 | ...; | cflow.cs:106:18:106:19 | M4 | -| cflow.cs:119:20:119:21 | enter M5 | cflow.cs:119:20:119:21 | M5 | -| cflow.cs:127:19:127:21 | enter get_Prop | cflow.cs:127:19:127:21 | get_Prop | -| cflow.cs:127:32:127:57 | ... ? ... : ... | cflow.cs:127:19:127:21 | get_Prop | -| cflow.cs:127:48:127:49 | "" | cflow.cs:127:19:127:21 | get_Prop | -| cflow.cs:127:53:127:57 | this access | cflow.cs:127:19:127:21 | get_Prop | -| cflow.cs:127:62:127:64 | enter set_Prop | cflow.cs:127:62:127:64 | set_Prop | -| cflow.cs:129:5:129:15 | enter ControlFlow | cflow.cs:129:5:129:15 | ControlFlow | -| cflow.cs:134:5:134:15 | enter ControlFlow | cflow.cs:134:5:134:15 | ControlFlow | -| cflow.cs:136:12:136:22 | enter ControlFlow | cflow.cs:136:12:136:22 | ControlFlow | -| cflow.cs:138:40:138:40 | enter + | cflow.cs:138:40:138:40 | + | -| cflow.cs:144:33:144:35 | enter get_Item | cflow.cs:144:33:144:35 | get_Item | -| cflow.cs:144:56:144:58 | enter set_Item | cflow.cs:144:56:144:58 | set_Item | -| cflow.cs:146:10:146:12 | enter For | cflow.cs:146:10:146:12 | For | -| cflow.cs:146:10:146:12 | exit For (normal) | cflow.cs:146:10:146:12 | For | -| cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:146:10:146:12 | For | -| cflow.cs:150:13:150:33 | ...; | cflow.cs:146:10:146:12 | For | -| cflow.cs:152:9:157:9 | for (...;...;...) ... | cflow.cs:146:10:146:12 | For | -| cflow.cs:152:18:152:18 | access to local variable x | cflow.cs:146:10:146:12 | For | +| cflow.cs:22:18:22:23 | After ... < ... [false] | cflow.cs:5:17:5:20 | Main | +| cflow.cs:22:18:22:23 | After ... < ... [true] | cflow.cs:5:17:5:20 | Main | +| cflow.cs:24:25:24:31 | After ... <= ... [false] | cflow.cs:5:17:5:20 | Main | +| cflow.cs:24:25:24:31 | After ... <= ... [true] | cflow.cs:5:17:5:20 | Main | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:5:17:5:20 | Main | +| cflow.cs:26:13:33:37 | After if (...) ... | cflow.cs:5:17:5:20 | Main | +| cflow.cs:26:17:26:26 | After ... == ... [false] | cflow.cs:5:17:5:20 | Main | +| cflow.cs:26:17:26:26 | After ... == ... [true] | cflow.cs:5:17:5:20 | Main | +| cflow.cs:26:17:26:40 | After ... && ... [false] | cflow.cs:5:17:5:20 | Main | +| cflow.cs:26:31:26:40 | After ... == ... [false] | cflow.cs:5:17:5:20 | Main | +| cflow.cs:26:31:26:40 | After ... == ... [true] | cflow.cs:5:17:5:20 | Main | +| cflow.cs:28:18:33:37 | After if (...) ... | cflow.cs:5:17:5:20 | Main | +| cflow.cs:28:22:28:31 | After ... == ... [false] | cflow.cs:5:17:5:20 | Main | +| cflow.cs:28:22:28:31 | After ... == ... [true] | cflow.cs:5:17:5:20 | Main | +| cflow.cs:30:18:33:37 | After if (...) ... | cflow.cs:5:17:5:20 | Main | +| cflow.cs:30:22:30:31 | After ... == ... [false] | cflow.cs:5:17:5:20 | Main | +| cflow.cs:30:22:30:31 | After ... == ... [true] | cflow.cs:5:17:5:20 | Main | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:37:17:37:22 | Exit | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:39:9:50:9 | After switch (...) {...} | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:41:13:41:19 | After case ...: [match] | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:41:18:41:18 | After 1 [match] | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:41:18:41:18 | After 1 [no-match] | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:44:13:44:19 | After case ...: [match] | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:44:18:44:18 | After 2 [match] | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:44:18:44:18 | After 2 [no-match] | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:47:18:47:18 | After 3 [match] | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:47:18:47:18 | After 3 [no-match] | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:51:9:59:9 | After switch (...) {...} | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:53:18:53:19 | After 42 [match] | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:53:18:53:19 | After 42 [no-match] | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:60:9:66:9 | After switch (...) {...} | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:62:18:62:18 | After 0 [match] | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:62:18:62:18 | After 0 [no-match] | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:63:23:63:33 | After ... == ... [false] | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:63:23:63:33 | After ... == ... [true] | cflow.cs:37:17:37:22 | Switch | +| cflow.cs:70:18:70:18 | Entry | cflow.cs:70:18:70:18 | M | +| cflow.cs:70:18:70:18 | Normal Exit | cflow.cs:70:18:70:18 | M | +| cflow.cs:72:13:72:21 | After ... == ... [false] | cflow.cs:70:18:70:18 | M | +| cflow.cs:72:13:72:21 | After ... == ... [true] | cflow.cs:70:18:70:18 | M | +| cflow.cs:74:9:81:9 | After if (...) ... | cflow.cs:70:18:70:18 | M | +| cflow.cs:74:13:74:24 | After ... > ... [false] | cflow.cs:70:18:70:18 | M | +| cflow.cs:74:13:74:24 | After ... > ... [true] | cflow.cs:70:18:70:18 | M | +| cflow.cs:84:18:84:19 | Entry | cflow.cs:84:18:84:19 | M2 | +| cflow.cs:86:9:87:33 | After if (...) ... | cflow.cs:84:18:84:19 | M2 | +| cflow.cs:86:13:86:21 | After ... != ... [false] | cflow.cs:84:18:84:19 | M2 | +| cflow.cs:86:13:86:21 | After ... != ... [true] | cflow.cs:84:18:84:19 | M2 | +| cflow.cs:86:13:86:37 | After ... && ... [false] | cflow.cs:84:18:84:19 | M2 | +| cflow.cs:86:26:86:37 | After ... > ... [false] | cflow.cs:84:18:84:19 | M2 | +| cflow.cs:86:26:86:37 | After ... > ... [true] | cflow.cs:84:18:84:19 | M2 | +| cflow.cs:90:18:90:19 | Entry | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:90:18:90:19 | Exit | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:92:13:92:27 | After call to method Equals [false] | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:92:13:92:27 | After call to method Equals [true] | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:96:9:97:55 | After if (...) ... | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:96:13:96:25 | After ... != ... [false] | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:96:13:96:25 | After ... != ... [true] | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:99:9:100:42 | After if (...) ... | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:99:13:99:25 | After ... != ... [false] | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:99:13:99:25 | After ... != ... [true] | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:102:9:103:36 | After if (...) ... | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:102:13:102:29 | After ... != ... [false] | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:102:13:102:29 | After ... != ... [true] | cflow.cs:90:18:90:19 | M3 | +| cflow.cs:106:18:106:19 | Entry | cflow.cs:106:18:106:19 | M4 | +| cflow.cs:108:13:108:21 | After ... != ... [false] | cflow.cs:106:18:106:19 | M4 | +| cflow.cs:108:13:108:21 | After ... != ... [true] | cflow.cs:106:18:106:19 | M4 | +| cflow.cs:110:13:113:13 | [LoopHeader] while (...) ... | cflow.cs:106:18:106:19 | M4 | +| cflow.cs:119:20:119:21 | Entry | cflow.cs:119:20:119:21 | M5 | +| cflow.cs:127:19:127:21 | Entry | cflow.cs:127:19:127:21 | get_Prop | +| cflow.cs:127:32:127:44 | After ... == ... [false] | cflow.cs:127:19:127:21 | get_Prop | +| cflow.cs:127:32:127:44 | After ... == ... [true] | cflow.cs:127:19:127:21 | get_Prop | +| cflow.cs:127:32:127:57 | After ... ? ... : ... | cflow.cs:127:19:127:21 | get_Prop | +| cflow.cs:127:62:127:64 | Entry | cflow.cs:127:62:127:64 | set_Prop | +| cflow.cs:129:5:129:15 | Entry | cflow.cs:129:5:129:15 | ControlFlow | +| cflow.cs:134:5:134:15 | Entry | cflow.cs:134:5:134:15 | ControlFlow | +| cflow.cs:136:12:136:22 | Entry | cflow.cs:136:12:136:22 | ControlFlow | +| cflow.cs:138:40:138:40 | Entry | cflow.cs:138:40:138:40 | + | +| cflow.cs:144:33:144:35 | Entry | cflow.cs:144:33:144:35 | get_Item | +| cflow.cs:144:56:144:58 | Entry | cflow.cs:144:56:144:58 | set_Item | +| cflow.cs:146:10:146:12 | Entry | cflow.cs:146:10:146:12 | For | +| cflow.cs:149:16:149:21 | After ... < ... [false] | cflow.cs:146:10:146:12 | For | +| cflow.cs:149:16:149:21 | After ... < ... [true] | cflow.cs:146:10:146:12 | For | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:146:10:146:12 | For | | cflow.cs:153:9:157:9 | {...} | cflow.cs:146:10:146:12 | For | -| cflow.cs:156:17:156:22 | break; | cflow.cs:146:10:146:12 | For | +| cflow.cs:155:17:155:22 | After ... > ... [false] | cflow.cs:146:10:146:12 | For | +| cflow.cs:155:17:155:22 | After ... > ... [true] | cflow.cs:146:10:146:12 | For | | cflow.cs:160:9:165:9 | {...} | cflow.cs:146:10:146:12 | For | -| cflow.cs:164:17:164:22 | break; | cflow.cs:146:10:146:12 | For | -| cflow.cs:167:16:167:16 | access to local variable x | cflow.cs:146:10:146:12 | For | -| cflow.cs:168:9:171:9 | {...} | cflow.cs:146:10:146:12 | For | -| cflow.cs:173:9:176:9 | for (...;...;...) ... | cflow.cs:146:10:146:12 | For | -| cflow.cs:173:32:173:32 | access to local variable i | cflow.cs:146:10:146:12 | For | -| cflow.cs:174:9:176:9 | {...} | cflow.cs:146:10:146:12 | For | -| cflow.cs:179:10:179:16 | enter Lambdas | cflow.cs:179:10:179:16 | Lambdas | -| cflow.cs:181:28:181:37 | enter (...) => ... | cflow.cs:181:28:181:37 | (...) => ... | -| cflow.cs:182:28:182:61 | enter delegate(...) { ... } | cflow.cs:182:28:182:61 | delegate(...) { ... } | -| cflow.cs:185:10:185:18 | enter LogicalOr | cflow.cs:185:10:185:18 | LogicalOr | -| cflow.cs:187:13:187:28 | ... \|\| ... | cflow.cs:185:10:185:18 | LogicalOr | -| cflow.cs:187:13:187:50 | ... \|\| ... | cflow.cs:185:10:185:18 | LogicalOr | -| cflow.cs:187:23:187:23 | 2 | cflow.cs:185:10:185:18 | LogicalOr | -| cflow.cs:187:34:187:34 | 1 | cflow.cs:185:10:185:18 | LogicalOr | -| cflow.cs:187:34:187:49 | ... && ... | cflow.cs:185:10:185:18 | LogicalOr | -| cflow.cs:190:13:190:52 | ...; | cflow.cs:185:10:185:18 | LogicalOr | -| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:193:10:193:17 | exit Booleans | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:193:10:193:17 | exit Booleans (normal) | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:195:39:195:43 | this access | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:197:13:197:47 | [false] !... | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:197:13:197:47 | [true] !... | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:197:15:197:46 | [false] ... ? ... : ... | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:197:15:197:46 | [true] ... ? ... : ... | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:197:35:197:39 | false | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:197:43:197:46 | true | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:198:13:198:49 | ...; | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:198:17:198:48 | ... ? ... : ... | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:198:37:198:41 | false | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:198:45:198:48 | true | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:200:13:200:32 | [true] !... | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:200:13:200:62 | [false] ... \|\| ... | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:200:13:200:62 | [true] ... \|\| ... | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:200:37:200:62 | [false] !... | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:200:37:200:62 | [true] !... | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:200:38:200:62 | [false] !... | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:200:38:200:62 | [true] !... | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:200:40:200:44 | this access | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:200:40:200:61 | [true] ... && ... | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:200:61:200:61 | access to local variable b | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:201:9:205:9 | {...} | cflow.cs:193:10:193:17 | Booleans | -| cflow.cs:208:10:208:11 | enter Do | cflow.cs:208:10:208:11 | Do | -| cflow.cs:208:10:208:11 | exit Do (normal) | cflow.cs:208:10:208:11 | Do | +| cflow.cs:163:17:163:22 | After ... > ... [false] | cflow.cs:146:10:146:12 | For | +| cflow.cs:163:17:163:22 | After ... > ... [true] | cflow.cs:146:10:146:12 | For | +| cflow.cs:167:16:167:21 | After ... < ... [false] | cflow.cs:146:10:146:12 | For | +| cflow.cs:167:16:167:21 | After ... < ... [true] | cflow.cs:146:10:146:12 | For | +| cflow.cs:167:16:167:21 | Before ... < ... | cflow.cs:146:10:146:12 | For | +| cflow.cs:173:32:173:41 | After ... < ... [false] | cflow.cs:146:10:146:12 | For | +| cflow.cs:173:32:173:41 | After ... < ... [true] | cflow.cs:146:10:146:12 | For | +| cflow.cs:173:32:173:41 | Before ... < ... | cflow.cs:146:10:146:12 | For | +| cflow.cs:179:10:179:16 | Entry | cflow.cs:179:10:179:16 | Lambdas | +| cflow.cs:181:28:181:37 | Entry | cflow.cs:181:28:181:37 | (...) => ... | +| cflow.cs:182:28:182:61 | Entry | cflow.cs:182:28:182:61 | delegate(...) { ... } | +| cflow.cs:185:10:185:18 | Entry | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:187:9:190:52 | After if (...) ... | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:187:13:187:18 | After ... == ... [false] | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:187:13:187:18 | After ... == ... [true] | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:187:13:187:28 | After ... \|\| ... [true] | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:187:13:187:50 | After ... \|\| ... [true] | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:187:23:187:28 | After ... == ... [false] | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:187:23:187:28 | After ... == ... [true] | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:187:34:187:39 | After ... == ... [false] | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:187:34:187:39 | After ... == ... [true] | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:187:34:187:49 | After ... && ... [false] | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:187:44:187:49 | After ... == ... [false] | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:187:44:187:49 | After ... == ... [true] | cflow.cs:185:10:185:18 | LogicalOr | +| cflow.cs:193:10:193:17 | Entry | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:193:10:193:17 | Exit | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:195:17:195:32 | After ... > ... [false] | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:195:17:195:32 | After ... > ... [true] | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:195:17:195:56 | After ... && ... | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:197:9:198:49 | After if (...) ... | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:197:15:197:31 | After ... == ... [false] | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:197:15:197:31 | After ... == ... [true] | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:198:17:198:33 | After ... == ... [false] | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:198:17:198:33 | After ... == ... [true] | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:198:17:198:48 | After ... ? ... : ... | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:13:200:62 | After ... \|\| ... [true] | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:15:200:31 | After ... == ... [false] | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:15:200:31 | After ... == ... [true] | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:40:200:56 | After ... == ... [false] | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:40:200:56 | After ... == ... [true] | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:40:200:61 | After ... && ... [false] | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:61:200:61 | After access to local variable b [false] | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:200:61:200:61 | After access to local variable b [true] | cflow.cs:193:10:193:17 | Booleans | +| cflow.cs:208:10:208:11 | Entry | cflow.cs:208:10:208:11 | Do | +| cflow.cs:210:9:221:36 | After do ... while (...); | cflow.cs:208:10:208:11 | Do | +| cflow.cs:210:9:221:36 | [LoopHeader] do ... while (...); | cflow.cs:208:10:208:11 | Do | | cflow.cs:211:9:221:9 | {...} | cflow.cs:208:10:208:11 | Do | -| cflow.cs:214:13:216:13 | {...} | cflow.cs:208:10:208:11 | Do | -| cflow.cs:217:13:220:13 | if (...) ... | cflow.cs:208:10:208:11 | Do | -| cflow.cs:218:13:220:13 | {...} | cflow.cs:208:10:208:11 | Do | -| cflow.cs:221:18:221:22 | this access | cflow.cs:208:10:208:11 | Do | -| cflow.cs:224:10:224:16 | enter Foreach | cflow.cs:224:10:224:16 | Foreach | -| cflow.cs:224:10:224:16 | exit Foreach (normal) | cflow.cs:224:10:224:16 | Foreach | -| cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:213:17:213:32 | After ... > ... [false] | cflow.cs:208:10:208:11 | Do | +| cflow.cs:213:17:213:32 | After ... > ... [true] | cflow.cs:208:10:208:11 | Do | +| cflow.cs:217:17:217:32 | After ... < ... [false] | cflow.cs:208:10:208:11 | Do | +| cflow.cs:217:17:217:32 | After ... < ... [true] | cflow.cs:208:10:208:11 | Do | +| cflow.cs:221:18:221:34 | After ... < ... [false] | cflow.cs:208:10:208:11 | Do | +| cflow.cs:221:18:221:34 | After ... < ... [true] | cflow.cs:208:10:208:11 | Do | +| cflow.cs:224:10:224:16 | Entry | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:226:9:237:9 | After foreach (... ... in ...) ... | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:226:9:237:9 | [LoopHeader] foreach (... ... in ...) ... | cflow.cs:224:10:224:16 | Foreach | | cflow.cs:226:22:226:22 | String x | cflow.cs:224:10:224:16 | Foreach | -| cflow.cs:230:13:232:13 | {...} | cflow.cs:224:10:224:16 | Foreach | -| cflow.cs:233:13:236:13 | if (...) ... | cflow.cs:224:10:224:16 | Foreach | -| cflow.cs:234:13:236:13 | {...} | cflow.cs:224:10:224:16 | Foreach | -| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:240:10:240:13 | Goto | -| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:226:27:226:64 | After call to method Repeat [empty] | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:226:27:226:64 | After call to method Repeat [non-empty] | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:229:17:229:32 | After ... > ... [false] | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:229:17:229:32 | After ... > ... [true] | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:233:17:233:32 | After ... < ... [false] | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:233:17:233:32 | After ... < ... [true] | cflow.cs:224:10:224:16 | Foreach | +| cflow.cs:240:10:240:13 | Entry | cflow.cs:240:10:240:13 | Goto | | cflow.cs:242:5:242:9 | Label: | cflow.cs:240:10:240:13 | Goto | -| cflow.cs:242:16:242:36 | [false] !... | cflow.cs:240:10:240:13 | Goto | -| cflow.cs:242:16:242:36 | [true] !... | cflow.cs:240:10:240:13 | Goto | -| cflow.cs:242:17:242:36 | [false] !... | cflow.cs:240:10:240:13 | Goto | -| cflow.cs:242:17:242:36 | [true] !... | cflow.cs:240:10:240:13 | Goto | -| cflow.cs:242:39:242:41 | {...} | cflow.cs:240:10:240:13 | Goto | -| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:240:10:240:13 | Goto | -| cflow.cs:244:31:244:41 | goto ...; | cflow.cs:240:10:240:13 | Goto | -| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:240:10:240:13 | Goto | -| cflow.cs:249:17:249:29 | goto default; | cflow.cs:240:10:240:13 | Goto | -| cflow.cs:250:13:250:19 | case ...: | cflow.cs:240:10:240:13 | Goto | -| cflow.cs:251:17:251:37 | ...; | cflow.cs:240:10:240:13 | Goto | -| cflow.cs:253:13:253:19 | case ...: | cflow.cs:240:10:240:13 | Goto | -| cflow.cs:254:17:254:27 | goto ...; | cflow.cs:240:10:240:13 | Goto | -| cflow.cs:255:13:255:20 | default: | cflow.cs:240:10:240:13 | Goto | -| cflow.cs:261:49:261:53 | enter Yield | cflow.cs:261:49:261:53 | Yield | -| cflow.cs:261:49:261:53 | exit Yield | cflow.cs:261:49:261:53 | Yield | -| cflow.cs:261:49:261:53 | exit Yield (abnormal) | cflow.cs:261:49:261:53 | Yield | -| cflow.cs:261:49:261:53 | exit Yield (normal) | cflow.cs:261:49:261:53 | Yield | -| cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:261:49:261:53 | Yield | -| cflow.cs:265:9:267:9 | {...} | cflow.cs:261:49:261:53 | Yield | -| cflow.cs:268:9:276:9 | try {...} ... | cflow.cs:261:49:261:53 | Yield | -| cflow.cs:282:5:282:18 | enter ControlFlowSub | cflow.cs:282:5:282:18 | ControlFlowSub | -| cflow.cs:284:5:284:18 | enter ControlFlowSub | cflow.cs:284:5:284:18 | ControlFlowSub | -| cflow.cs:286:5:286:18 | enter ControlFlowSub | cflow.cs:286:5:286:18 | ControlFlowSub | -| cflow.cs:289:7:289:18 | enter DelegateCall | cflow.cs:289:7:289:18 | DelegateCall | -| cflow.cs:291:12:291:12 | enter M | cflow.cs:291:12:291:12 | M | -| cflow.cs:296:5:296:25 | enter NegationInConstructor | cflow.cs:296:5:296:25 | NegationInConstructor | -| cflow.cs:298:10:298:10 | enter M | cflow.cs:298:10:298:10 | M | -| cflow.cs:300:44:300:51 | [false] !... | cflow.cs:298:10:298:10 | M | -| cflow.cs:300:44:300:51 | [true] !... | cflow.cs:298:10:298:10 | M | -| cflow.cs:300:44:300:64 | ... && ... | cflow.cs:298:10:298:10 | M | -| cflow.cs:300:56:300:56 | access to parameter s | cflow.cs:298:10:298:10 | M | -| cflow.cs:304:7:304:18 | enter LambdaGetter | cflow.cs:304:7:304:18 | LambdaGetter | -| cflow.cs:306:60:310:5 | enter (...) => ... | cflow.cs:306:60:310:5 | (...) => ... | -| cflow.cs:306:60:310:5 | enter get__getter | cflow.cs:306:60:310:5 | get__getter | +| cflow.cs:242:12:242:41 | After if (...) ... | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:242:19:242:35 | After ... == ... [false] | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:242:19:242:35 | After ... == ... [true] | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:244:13:244:28 | After ... > ... [false] | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:244:13:244:28 | After ... > ... [true] | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:246:9:258:9 | After switch (...) {...} | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:248:18:248:18 | After 0 [match] | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:248:18:248:18 | After 0 [no-match] | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:250:18:250:18 | After 1 [match] | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:250:18:250:18 | After 1 [no-match] | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:253:18:253:18 | After 2 [match] | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:253:18:253:18 | After 2 [no-match] | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:255:13:255:20 | After default: [match] | cflow.cs:240:10:240:13 | Goto | +| cflow.cs:261:49:261:53 | Entry | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:261:49:261:53 | Exceptional Exit | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:261:49:261:53 | Exit | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:261:49:261:53 | Normal Exit | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:264:25:264:30 | After ... < ... [false] | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:264:25:264:30 | After ... < ... [true] | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:264:25:264:30 | Before ... < ... | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:268:9:276:9 | After try {...} ... | cflow.cs:261:49:261:53 | Yield | +| cflow.cs:282:5:282:18 | Entry | cflow.cs:282:5:282:18 | ControlFlowSub | +| cflow.cs:284:5:284:18 | Entry | cflow.cs:284:5:284:18 | ControlFlowSub | +| cflow.cs:286:5:286:18 | Entry | cflow.cs:286:5:286:18 | ControlFlowSub | +| cflow.cs:289:7:289:18 | Entry | cflow.cs:289:7:289:18 | DelegateCall | +| cflow.cs:291:12:291:12 | Entry | cflow.cs:291:12:291:12 | M | +| cflow.cs:296:5:296:25 | Entry | cflow.cs:296:5:296:25 | NegationInConstructor | +| cflow.cs:298:10:298:10 | Entry | cflow.cs:298:10:298:10 | M | +| cflow.cs:300:44:300:64 | After ... && ... | cflow.cs:298:10:298:10 | M | +| cflow.cs:300:46:300:50 | After ... > ... [false] | cflow.cs:298:10:298:10 | M | +| cflow.cs:300:46:300:50 | After ... > ... [true] | cflow.cs:298:10:298:10 | M | +| cflow.cs:304:7:304:18 | Entry | cflow.cs:304:7:304:18 | LambdaGetter | +| cflow.cs:306:60:310:5 | Entry | cflow.cs:306:60:310:5 | (...) => ... | +| cflow.cs:306:60:310:5 | Entry | cflow.cs:306:60:310:5 | get__getter | diff --git a/csharp/ql/test/library-tests/controlflow/graph/EnclosingCallable.ql b/csharp/ql/test/library-tests/controlflow/graph/EnclosingCallable.ql index 7309151bb7ed..54d0c07d5538 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/EnclosingCallable.ql +++ b/csharp/ql/test/library-tests/controlflow/graph/EnclosingCallable.ql @@ -3,4 +3,4 @@ import Common query predicate nodeEnclosing(SourceControlFlowNode n, Callable c) { c = n.getEnclosingCallable() } -query predicate blockEnclosing(SourceBasicBlock bb, Callable c) { c = bb.getCallable() } +query predicate blockEnclosing(SourceBasicBlock bb, Callable c) { c = bb.getEnclosingCallable() } diff --git a/csharp/ql/test/library-tests/controlflow/graph/EntryElement.expected b/csharp/ql/test/library-tests/controlflow/graph/EntryElement.expected index 248562dbc833..a6c15e141d0a 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/EntryElement.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/EntryElement.expected @@ -2,10 +2,16 @@ | AccessorCalls.cs:1:7:1:19 | call to method | AccessorCalls.cs:1:7:1:19 | this access | | AccessorCalls.cs:1:7:1:19 | this access | AccessorCalls.cs:1:7:1:19 | this access | | AccessorCalls.cs:1:7:1:19 | {...} | AccessorCalls.cs:1:7:1:19 | {...} | +| AccessorCalls.cs:5:18:5:18 | i | AccessorCalls.cs:5:18:5:18 | i | +| AccessorCalls.cs:5:18:5:18 | i | AccessorCalls.cs:5:18:5:18 | i | | AccessorCalls.cs:5:30:5:30 | access to parameter i | AccessorCalls.cs:5:30:5:30 | access to parameter i | +| AccessorCalls.cs:5:33:5:35 | value | AccessorCalls.cs:5:33:5:35 | value | | AccessorCalls.cs:5:37:5:39 | {...} | AccessorCalls.cs:5:37:5:39 | {...} | +| AccessorCalls.cs:7:32:7:34 | value | AccessorCalls.cs:7:32:7:34 | value | | AccessorCalls.cs:7:36:7:38 | {...} | AccessorCalls.cs:7:36:7:38 | {...} | +| AccessorCalls.cs:7:40:7:45 | value | AccessorCalls.cs:7:40:7:45 | value | | AccessorCalls.cs:7:47:7:49 | {...} | AccessorCalls.cs:7:47:7:49 | {...} | +| AccessorCalls.cs:10:26:10:26 | e | AccessorCalls.cs:10:26:10:26 | e | | AccessorCalls.cs:11:5:17:5 | {...} | AccessorCalls.cs:11:5:17:5 | {...} | | AccessorCalls.cs:12:9:12:12 | this access | AccessorCalls.cs:12:9:12:12 | this access | | AccessorCalls.cs:12:9:12:18 | access to field Field | AccessorCalls.cs:12:9:12:12 | this access | @@ -37,6 +43,7 @@ | AccessorCalls.cs:16:9:16:23 | ... -= ... | AccessorCalls.cs:16:9:16:12 | this access | | AccessorCalls.cs:16:9:16:24 | ...; | AccessorCalls.cs:16:9:16:24 | ...; | | AccessorCalls.cs:16:23:16:23 | access to parameter e | AccessorCalls.cs:16:23:16:23 | access to parameter e | +| AccessorCalls.cs:19:26:19:26 | e | AccessorCalls.cs:19:26:19:26 | e | | AccessorCalls.cs:20:5:26:5 | {...} | AccessorCalls.cs:20:5:26:5 | {...} | | AccessorCalls.cs:21:9:21:12 | this access | AccessorCalls.cs:21:9:21:12 | this access | | AccessorCalls.cs:21:9:21:14 | access to field x | AccessorCalls.cs:21:9:21:12 | this access | @@ -155,6 +162,7 @@ | AccessorCalls.cs:53:22:53:27 | access to field x | AccessorCalls.cs:53:22:53:25 | this access | | AccessorCalls.cs:53:22:53:30 | access to indexer | AccessorCalls.cs:53:22:53:25 | this access | | AccessorCalls.cs:53:29:53:29 | 0 | AccessorCalls.cs:53:29:53:29 | 0 | +| AccessorCalls.cs:56:17:56:17 | i | AccessorCalls.cs:56:17:56:17 | i | | AccessorCalls.cs:57:5:59:5 | {...} | AccessorCalls.cs:57:5:59:5 | {...} | | AccessorCalls.cs:58:9:58:45 | (..., ...) | AccessorCalls.cs:58:10:58:13 | this access | | AccessorCalls.cs:58:9:58:85 | ... = ... | AccessorCalls.cs:58:10:58:13 | this access | @@ -163,7 +171,8 @@ | AccessorCalls.cs:58:10:58:19 | access to field Field | AccessorCalls.cs:58:10:58:13 | this access | | AccessorCalls.cs:58:22:58:25 | this access | AccessorCalls.cs:58:22:58:25 | this access | | AccessorCalls.cs:58:22:58:30 | access to property Prop | AccessorCalls.cs:58:22:58:25 | this access | -| AccessorCalls.cs:58:33:58:44 | (..., ...) | AccessorCalls.cs:58:37:58:40 | this access | +| AccessorCalls.cs:58:33:58:44 | (..., ...) | AccessorCalls.cs:58:34:58:34 | access to parameter i | +| AccessorCalls.cs:58:34:58:34 | access to parameter i | AccessorCalls.cs:58:34:58:34 | access to parameter i | | AccessorCalls.cs:58:37:58:40 | this access | AccessorCalls.cs:58:37:58:40 | this access | | AccessorCalls.cs:58:37:58:43 | access to indexer | AccessorCalls.cs:58:37:58:40 | this access | | AccessorCalls.cs:58:42:58:42 | 0 | AccessorCalls.cs:58:42:58:42 | 0 | @@ -177,6 +186,7 @@ | AccessorCalls.cs:58:77:58:80 | this access | AccessorCalls.cs:58:77:58:80 | this access | | AccessorCalls.cs:58:77:58:83 | access to indexer | AccessorCalls.cs:58:77:58:80 | this access | | AccessorCalls.cs:58:82:58:82 | 1 | AccessorCalls.cs:58:82:58:82 | 1 | +| AccessorCalls.cs:61:17:61:17 | i | AccessorCalls.cs:61:17:61:17 | i | | AccessorCalls.cs:62:5:64:5 | {...} | AccessorCalls.cs:62:5:64:5 | {...} | | AccessorCalls.cs:63:9:63:51 | (..., ...) | AccessorCalls.cs:63:10:63:13 | this access | | AccessorCalls.cs:63:9:63:97 | ... = ... | AccessorCalls.cs:63:10:63:13 | this access | @@ -187,7 +197,8 @@ | AccessorCalls.cs:63:24:63:27 | this access | AccessorCalls.cs:63:24:63:27 | this access | | AccessorCalls.cs:63:24:63:29 | access to field x | AccessorCalls.cs:63:24:63:27 | this access | | AccessorCalls.cs:63:24:63:34 | access to property Prop | AccessorCalls.cs:63:24:63:27 | this access | -| AccessorCalls.cs:63:37:63:50 | (..., ...) | AccessorCalls.cs:63:41:63:44 | this access | +| AccessorCalls.cs:63:37:63:50 | (..., ...) | AccessorCalls.cs:63:38:63:38 | access to parameter i | +| AccessorCalls.cs:63:38:63:38 | access to parameter i | AccessorCalls.cs:63:38:63:38 | access to parameter i | | AccessorCalls.cs:63:41:63:44 | this access | AccessorCalls.cs:63:41:63:44 | this access | | AccessorCalls.cs:63:41:63:46 | access to field x | AccessorCalls.cs:63:41:63:44 | this access | | AccessorCalls.cs:63:41:63:49 | access to indexer | AccessorCalls.cs:63:41:63:44 | this access | @@ -205,9 +216,13 @@ | AccessorCalls.cs:63:87:63:92 | access to field x | AccessorCalls.cs:63:87:63:90 | this access | | AccessorCalls.cs:63:87:63:95 | access to indexer | AccessorCalls.cs:63:87:63:90 | this access | | AccessorCalls.cs:63:94:63:94 | 1 | AccessorCalls.cs:63:94:63:94 | 1 | +| AccessorCalls.cs:66:20:66:20 | o | AccessorCalls.cs:66:20:66:20 | o | +| AccessorCalls.cs:66:27:66:27 | i | AccessorCalls.cs:66:27:66:27 | i | +| AccessorCalls.cs:66:43:66:43 | e | AccessorCalls.cs:66:43:66:43 | e | | AccessorCalls.cs:67:5:74:5 | {...} | AccessorCalls.cs:67:5:74:5 | {...} | | AccessorCalls.cs:68:9:68:22 | ... ...; | AccessorCalls.cs:68:9:68:22 | ... ...; | -| AccessorCalls.cs:68:17:68:21 | dynamic d = ... | AccessorCalls.cs:68:21:68:21 | access to parameter o | +| AccessorCalls.cs:68:17:68:17 | access to local variable d | AccessorCalls.cs:68:17:68:17 | access to local variable d | +| AccessorCalls.cs:68:17:68:21 | dynamic d = ... | AccessorCalls.cs:68:17:68:17 | access to local variable d | | AccessorCalls.cs:68:21:68:21 | access to parameter o | AccessorCalls.cs:68:21:68:21 | access to parameter o | | AccessorCalls.cs:69:9:69:9 | access to local variable d | AccessorCalls.cs:69:9:69:9 | access to local variable d | | AccessorCalls.cs:69:9:69:20 | dynamic access to member MaybeProp1 | AccessorCalls.cs:69:9:69:9 | access to local variable d | @@ -239,7 +254,8 @@ | AccessorCalls.cs:73:10:73:21 | dynamic access to member MaybeProp1 | AccessorCalls.cs:73:10:73:10 | access to local variable d | | AccessorCalls.cs:73:24:73:27 | this access | AccessorCalls.cs:73:24:73:27 | this access | | AccessorCalls.cs:73:24:73:32 | access to property Prop | AccessorCalls.cs:73:24:73:27 | this access | -| AccessorCalls.cs:73:35:73:43 | (..., ...) | AccessorCalls.cs:73:39:73:39 | access to local variable d | +| AccessorCalls.cs:73:35:73:43 | (..., ...) | AccessorCalls.cs:73:36:73:36 | access to parameter i | +| AccessorCalls.cs:73:36:73:36 | access to parameter i | AccessorCalls.cs:73:36:73:36 | access to parameter i | | AccessorCalls.cs:73:39:73:39 | access to local variable d | AccessorCalls.cs:73:39:73:39 | access to local variable d | | AccessorCalls.cs:73:39:73:42 | dynamic access to element | AccessorCalls.cs:73:39:73:39 | access to local variable d | | AccessorCalls.cs:73:41:73:41 | 0 | AccessorCalls.cs:73:41:73:41 | 0 | @@ -263,13 +279,13 @@ | ArrayCreation.cs:5:28:5:28 | 0 | ArrayCreation.cs:5:28:5:28 | 0 | | ArrayCreation.cs:5:31:5:31 | 1 | ArrayCreation.cs:5:31:5:31 | 1 | | ArrayCreation.cs:7:19:7:36 | 2 | ArrayCreation.cs:7:19:7:36 | 2 | -| ArrayCreation.cs:7:19:7:36 | array creation of type Int32[] | ArrayCreation.cs:7:19:7:36 | 2 | +| ArrayCreation.cs:7:19:7:36 | array creation of type Int32[] | ArrayCreation.cs:7:31:7:31 | 0 | | ArrayCreation.cs:7:29:7:36 | { ..., ... } | ArrayCreation.cs:7:31:7:31 | 0 | | ArrayCreation.cs:7:31:7:31 | 0 | ArrayCreation.cs:7:31:7:31 | 0 | | ArrayCreation.cs:7:34:7:34 | 1 | ArrayCreation.cs:7:34:7:34 | 1 | | ArrayCreation.cs:9:20:9:52 | 2 | ArrayCreation.cs:9:20:9:52 | 2 | | ArrayCreation.cs:9:20:9:52 | 2 | ArrayCreation.cs:9:20:9:52 | 2 | -| ArrayCreation.cs:9:20:9:52 | array creation of type Int32[,] | ArrayCreation.cs:9:20:9:52 | 2 | +| ArrayCreation.cs:9:20:9:52 | array creation of type Int32[,] | ArrayCreation.cs:9:35:9:35 | 0 | | ArrayCreation.cs:9:31:9:52 | { ..., ... } | ArrayCreation.cs:9:35:9:35 | 0 | | ArrayCreation.cs:9:33:9:40 | { ..., ... } | ArrayCreation.cs:9:35:9:35 | 0 | | ArrayCreation.cs:9:35:9:35 | 0 | ArrayCreation.cs:9:35:9:35 | 0 | @@ -281,11 +297,13 @@ | Assert.cs:5:7:5:17 | call to method | Assert.cs:5:7:5:17 | this access | | Assert.cs:5:7:5:17 | this access | Assert.cs:5:7:5:17 | this access | | Assert.cs:5:7:5:17 | {...} | Assert.cs:5:7:5:17 | {...} | +| Assert.cs:7:18:7:18 | b | Assert.cs:7:18:7:18 | b | | Assert.cs:8:5:12:5 | {...} | Assert.cs:8:5:12:5 | {...} | | Assert.cs:9:9:9:33 | ... ...; | Assert.cs:9:9:9:33 | ... ...; | -| Assert.cs:9:16:9:32 | String s = ... | Assert.cs:9:20:9:20 | access to parameter b | +| Assert.cs:9:16:9:16 | access to local variable s | Assert.cs:9:16:9:16 | access to local variable s | +| Assert.cs:9:16:9:32 | String s = ... | Assert.cs:9:16:9:16 | access to local variable s | | Assert.cs:9:20:9:20 | access to parameter b | Assert.cs:9:20:9:20 | access to parameter b | -| Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:9:20:9:20 | access to parameter b | +| Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:9:20:9:32 | ... ? ... : ... | | Assert.cs:9:24:9:27 | null | Assert.cs:9:24:9:27 | null | | Assert.cs:9:31:9:32 | "" | Assert.cs:9:31:9:32 | "" | | Assert.cs:10:9:10:31 | call to method Assert | Assert.cs:10:22:10:22 | access to local variable s | @@ -297,11 +315,13 @@ | Assert.cs:11:9:11:36 | ...; | Assert.cs:11:9:11:36 | ...; | | Assert.cs:11:27:11:27 | access to local variable s | Assert.cs:11:27:11:27 | access to local variable s | | Assert.cs:11:27:11:34 | access to property Length | Assert.cs:11:27:11:27 | access to local variable s | +| Assert.cs:14:18:14:18 | b | Assert.cs:14:18:14:18 | b | | Assert.cs:15:5:19:5 | {...} | Assert.cs:15:5:19:5 | {...} | | Assert.cs:16:9:16:33 | ... ...; | Assert.cs:16:9:16:33 | ... ...; | -| Assert.cs:16:16:16:32 | String s = ... | Assert.cs:16:20:16:20 | access to parameter b | +| Assert.cs:16:16:16:16 | access to local variable s | Assert.cs:16:16:16:16 | access to local variable s | +| Assert.cs:16:16:16:32 | String s = ... | Assert.cs:16:16:16:16 | access to local variable s | | Assert.cs:16:20:16:20 | access to parameter b | Assert.cs:16:20:16:20 | access to parameter b | -| Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:16:20:16:20 | access to parameter b | +| Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:16:20:16:32 | ... ? ... : ... | | Assert.cs:16:24:16:27 | null | Assert.cs:16:24:16:27 | null | | Assert.cs:16:31:16:32 | "" | Assert.cs:16:31:16:32 | "" | | Assert.cs:17:9:17:24 | call to method IsNull | Assert.cs:17:23:17:23 | access to local variable s | @@ -311,11 +331,13 @@ | Assert.cs:18:9:18:36 | ...; | Assert.cs:18:9:18:36 | ...; | | Assert.cs:18:27:18:27 | access to local variable s | Assert.cs:18:27:18:27 | access to local variable s | | Assert.cs:18:27:18:34 | access to property Length | Assert.cs:18:27:18:27 | access to local variable s | +| Assert.cs:21:18:21:18 | b | Assert.cs:21:18:21:18 | b | | Assert.cs:22:5:26:5 | {...} | Assert.cs:22:5:26:5 | {...} | | Assert.cs:23:9:23:33 | ... ...; | Assert.cs:23:9:23:33 | ... ...; | -| Assert.cs:23:16:23:32 | String s = ... | Assert.cs:23:20:23:20 | access to parameter b | +| Assert.cs:23:16:23:16 | access to local variable s | Assert.cs:23:16:23:16 | access to local variable s | +| Assert.cs:23:16:23:32 | String s = ... | Assert.cs:23:16:23:16 | access to local variable s | | Assert.cs:23:20:23:20 | access to parameter b | Assert.cs:23:20:23:20 | access to parameter b | -| Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:23:20:23:20 | access to parameter b | +| Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:23:20:23:32 | ... ? ... : ... | | Assert.cs:23:24:23:27 | null | Assert.cs:23:24:23:27 | null | | Assert.cs:23:31:23:32 | "" | Assert.cs:23:31:23:32 | "" | | Assert.cs:24:9:24:27 | call to method IsNotNull | Assert.cs:24:26:24:26 | access to local variable s | @@ -325,11 +347,13 @@ | Assert.cs:25:9:25:36 | ...; | Assert.cs:25:9:25:36 | ...; | | Assert.cs:25:27:25:27 | access to local variable s | Assert.cs:25:27:25:27 | access to local variable s | | Assert.cs:25:27:25:34 | access to property Length | Assert.cs:25:27:25:27 | access to local variable s | +| Assert.cs:28:18:28:18 | b | Assert.cs:28:18:28:18 | b | | Assert.cs:29:5:33:5 | {...} | Assert.cs:29:5:33:5 | {...} | | Assert.cs:30:9:30:33 | ... ...; | Assert.cs:30:9:30:33 | ... ...; | -| Assert.cs:30:16:30:32 | String s = ... | Assert.cs:30:20:30:20 | access to parameter b | +| Assert.cs:30:16:30:16 | access to local variable s | Assert.cs:30:16:30:16 | access to local variable s | +| Assert.cs:30:16:30:32 | String s = ... | Assert.cs:30:16:30:16 | access to local variable s | | Assert.cs:30:20:30:20 | access to parameter b | Assert.cs:30:20:30:20 | access to parameter b | -| Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:30:20:30:20 | access to parameter b | +| Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:30:20:30:32 | ... ? ... : ... | | Assert.cs:30:24:30:27 | null | Assert.cs:30:24:30:27 | null | | Assert.cs:30:31:30:32 | "" | Assert.cs:30:31:30:32 | "" | | Assert.cs:31:9:31:32 | call to method IsTrue | Assert.cs:31:23:31:23 | access to local variable s | @@ -341,11 +365,13 @@ | Assert.cs:32:9:32:36 | ...; | Assert.cs:32:9:32:36 | ...; | | Assert.cs:32:27:32:27 | access to local variable s | Assert.cs:32:27:32:27 | access to local variable s | | Assert.cs:32:27:32:34 | access to property Length | Assert.cs:32:27:32:27 | access to local variable s | +| Assert.cs:35:18:35:18 | b | Assert.cs:35:18:35:18 | b | | Assert.cs:36:5:40:5 | {...} | Assert.cs:36:5:40:5 | {...} | | Assert.cs:37:9:37:33 | ... ...; | Assert.cs:37:9:37:33 | ... ...; | -| Assert.cs:37:16:37:32 | String s = ... | Assert.cs:37:20:37:20 | access to parameter b | +| Assert.cs:37:16:37:16 | access to local variable s | Assert.cs:37:16:37:16 | access to local variable s | +| Assert.cs:37:16:37:32 | String s = ... | Assert.cs:37:16:37:16 | access to local variable s | | Assert.cs:37:20:37:20 | access to parameter b | Assert.cs:37:20:37:20 | access to parameter b | -| Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:37:20:37:20 | access to parameter b | +| Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:37:20:37:32 | ... ? ... : ... | | Assert.cs:37:24:37:27 | null | Assert.cs:37:24:37:27 | null | | Assert.cs:37:31:37:32 | "" | Assert.cs:37:31:37:32 | "" | | Assert.cs:38:9:38:32 | call to method IsTrue | Assert.cs:38:23:38:23 | access to local variable s | @@ -357,11 +383,13 @@ | Assert.cs:39:9:39:36 | ...; | Assert.cs:39:9:39:36 | ...; | | Assert.cs:39:27:39:27 | access to local variable s | Assert.cs:39:27:39:27 | access to local variable s | | Assert.cs:39:27:39:34 | access to property Length | Assert.cs:39:27:39:27 | access to local variable s | +| Assert.cs:42:18:42:18 | b | Assert.cs:42:18:42:18 | b | | Assert.cs:43:5:47:5 | {...} | Assert.cs:43:5:47:5 | {...} | | Assert.cs:44:9:44:33 | ... ...; | Assert.cs:44:9:44:33 | ... ...; | -| Assert.cs:44:16:44:32 | String s = ... | Assert.cs:44:20:44:20 | access to parameter b | +| Assert.cs:44:16:44:16 | access to local variable s | Assert.cs:44:16:44:16 | access to local variable s | +| Assert.cs:44:16:44:32 | String s = ... | Assert.cs:44:16:44:16 | access to local variable s | | Assert.cs:44:20:44:20 | access to parameter b | Assert.cs:44:20:44:20 | access to parameter b | -| Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:44:20:44:20 | access to parameter b | +| Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:44:20:44:32 | ... ? ... : ... | | Assert.cs:44:24:44:27 | null | Assert.cs:44:24:44:27 | null | | Assert.cs:44:31:44:32 | "" | Assert.cs:44:31:44:32 | "" | | Assert.cs:45:9:45:33 | call to method IsFalse | Assert.cs:45:24:45:24 | access to local variable s | @@ -373,11 +401,13 @@ | Assert.cs:46:9:46:36 | ...; | Assert.cs:46:9:46:36 | ...; | | Assert.cs:46:27:46:27 | access to local variable s | Assert.cs:46:27:46:27 | access to local variable s | | Assert.cs:46:27:46:34 | access to property Length | Assert.cs:46:27:46:27 | access to local variable s | +| Assert.cs:49:18:49:18 | b | Assert.cs:49:18:49:18 | b | | Assert.cs:50:5:54:5 | {...} | Assert.cs:50:5:54:5 | {...} | | Assert.cs:51:9:51:33 | ... ...; | Assert.cs:51:9:51:33 | ... ...; | -| Assert.cs:51:16:51:32 | String s = ... | Assert.cs:51:20:51:20 | access to parameter b | +| Assert.cs:51:16:51:16 | access to local variable s | Assert.cs:51:16:51:16 | access to local variable s | +| Assert.cs:51:16:51:32 | String s = ... | Assert.cs:51:16:51:16 | access to local variable s | | Assert.cs:51:20:51:20 | access to parameter b | Assert.cs:51:20:51:20 | access to parameter b | -| Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:51:20:51:20 | access to parameter b | +| Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:51:20:51:32 | ... ? ... : ... | | Assert.cs:51:24:51:27 | null | Assert.cs:51:24:51:27 | null | | Assert.cs:51:31:51:32 | "" | Assert.cs:51:31:51:32 | "" | | Assert.cs:52:9:52:33 | call to method IsFalse | Assert.cs:52:24:52:24 | access to local variable s | @@ -389,83 +419,93 @@ | Assert.cs:53:9:53:36 | ...; | Assert.cs:53:9:53:36 | ...; | | Assert.cs:53:27:53:27 | access to local variable s | Assert.cs:53:27:53:27 | access to local variable s | | Assert.cs:53:27:53:34 | access to property Length | Assert.cs:53:27:53:27 | access to local variable s | +| Assert.cs:56:18:56:18 | b | Assert.cs:56:18:56:18 | b | | Assert.cs:57:5:61:5 | {...} | Assert.cs:57:5:61:5 | {...} | | Assert.cs:58:9:58:33 | ... ...; | Assert.cs:58:9:58:33 | ... ...; | -| Assert.cs:58:16:58:32 | String s = ... | Assert.cs:58:20:58:20 | access to parameter b | +| Assert.cs:58:16:58:16 | access to local variable s | Assert.cs:58:16:58:16 | access to local variable s | +| Assert.cs:58:16:58:32 | String s = ... | Assert.cs:58:16:58:16 | access to local variable s | | Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:20:58:20 | access to parameter b | -| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:20:58:20 | access to parameter b | +| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:20:58:32 | ... ? ... : ... | | Assert.cs:58:24:58:27 | null | Assert.cs:58:24:58:27 | null | | Assert.cs:58:31:58:32 | "" | Assert.cs:58:31:58:32 | "" | -| Assert.cs:59:9:59:37 | call to method IsTrue | Assert.cs:59:23:59:23 | access to local variable s | +| Assert.cs:59:9:59:37 | call to method IsTrue | Assert.cs:59:23:59:36 | ... && ... | | Assert.cs:59:9:59:38 | ...; | Assert.cs:59:9:59:38 | ...; | | Assert.cs:59:23:59:23 | access to local variable s | Assert.cs:59:23:59:23 | access to local variable s | | Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:23:59:23 | access to local variable s | -| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:59:23:59:23 | access to local variable s | +| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:59:23:59:36 | ... && ... | | Assert.cs:59:28:59:31 | null | Assert.cs:59:28:59:31 | null | | Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:36:59:36 | access to parameter b | | Assert.cs:60:9:60:35 | call to method WriteLine | Assert.cs:60:27:60:27 | access to local variable s | | Assert.cs:60:9:60:36 | ...; | Assert.cs:60:9:60:36 | ...; | | Assert.cs:60:27:60:27 | access to local variable s | Assert.cs:60:27:60:27 | access to local variable s | | Assert.cs:60:27:60:34 | access to property Length | Assert.cs:60:27:60:27 | access to local variable s | +| Assert.cs:63:18:63:18 | b | Assert.cs:63:18:63:18 | b | | Assert.cs:64:5:68:5 | {...} | Assert.cs:64:5:68:5 | {...} | | Assert.cs:65:9:65:33 | ... ...; | Assert.cs:65:9:65:33 | ... ...; | -| Assert.cs:65:16:65:32 | String s = ... | Assert.cs:65:20:65:20 | access to parameter b | +| Assert.cs:65:16:65:16 | access to local variable s | Assert.cs:65:16:65:16 | access to local variable s | +| Assert.cs:65:16:65:32 | String s = ... | Assert.cs:65:16:65:16 | access to local variable s | | Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:20:65:20 | access to parameter b | -| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:20:65:20 | access to parameter b | +| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:20:65:32 | ... ? ... : ... | | Assert.cs:65:24:65:27 | null | Assert.cs:65:24:65:27 | null | | Assert.cs:65:31:65:32 | "" | Assert.cs:65:31:65:32 | "" | -| Assert.cs:66:9:66:38 | call to method IsFalse | Assert.cs:66:24:66:24 | access to local variable s | +| Assert.cs:66:9:66:38 | call to method IsFalse | Assert.cs:66:24:66:37 | ... \|\| ... | | Assert.cs:66:9:66:39 | ...; | Assert.cs:66:9:66:39 | ...; | | Assert.cs:66:24:66:24 | access to local variable s | Assert.cs:66:24:66:24 | access to local variable s | | Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:24:66:24 | access to local variable s | -| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:66:24:66:24 | access to local variable s | +| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:66:24:66:37 | ... \|\| ... | | Assert.cs:66:29:66:32 | null | Assert.cs:66:29:66:32 | null | | Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:37:66:37 | access to parameter b | | Assert.cs:67:9:67:35 | call to method WriteLine | Assert.cs:67:27:67:27 | access to local variable s | | Assert.cs:67:9:67:36 | ...; | Assert.cs:67:9:67:36 | ...; | | Assert.cs:67:27:67:27 | access to local variable s | Assert.cs:67:27:67:27 | access to local variable s | | Assert.cs:67:27:67:34 | access to property Length | Assert.cs:67:27:67:27 | access to local variable s | +| Assert.cs:70:19:70:19 | b | Assert.cs:70:19:70:19 | b | | Assert.cs:71:5:75:5 | {...} | Assert.cs:71:5:75:5 | {...} | | Assert.cs:72:9:72:33 | ... ...; | Assert.cs:72:9:72:33 | ... ...; | -| Assert.cs:72:16:72:32 | String s = ... | Assert.cs:72:20:72:20 | access to parameter b | +| Assert.cs:72:16:72:16 | access to local variable s | Assert.cs:72:16:72:16 | access to local variable s | +| Assert.cs:72:16:72:32 | String s = ... | Assert.cs:72:16:72:16 | access to local variable s | | Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:20:72:20 | access to parameter b | -| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:20:72:20 | access to parameter b | +| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:20:72:32 | ... ? ... : ... | | Assert.cs:72:24:72:27 | null | Assert.cs:72:24:72:27 | null | | Assert.cs:72:31:72:32 | "" | Assert.cs:72:31:72:32 | "" | -| Assert.cs:73:9:73:37 | call to method IsTrue | Assert.cs:73:23:73:23 | access to local variable s | +| Assert.cs:73:9:73:37 | call to method IsTrue | Assert.cs:73:23:73:36 | ... && ... | | Assert.cs:73:9:73:38 | ...; | Assert.cs:73:9:73:38 | ...; | | Assert.cs:73:23:73:23 | access to local variable s | Assert.cs:73:23:73:23 | access to local variable s | | Assert.cs:73:23:73:31 | ... == ... | Assert.cs:73:23:73:23 | access to local variable s | -| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:73:23:73:23 | access to local variable s | +| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:73:23:73:36 | ... && ... | | Assert.cs:73:28:73:31 | null | Assert.cs:73:28:73:31 | null | | Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:36:73:36 | access to parameter b | | Assert.cs:74:9:74:35 | call to method WriteLine | Assert.cs:74:27:74:27 | access to local variable s | | Assert.cs:74:9:74:36 | ...; | Assert.cs:74:9:74:36 | ...; | | Assert.cs:74:27:74:27 | access to local variable s | Assert.cs:74:27:74:27 | access to local variable s | | Assert.cs:74:27:74:34 | access to property Length | Assert.cs:74:27:74:27 | access to local variable s | +| Assert.cs:77:19:77:19 | b | Assert.cs:77:19:77:19 | b | | Assert.cs:78:5:82:5 | {...} | Assert.cs:78:5:82:5 | {...} | | Assert.cs:79:9:79:33 | ... ...; | Assert.cs:79:9:79:33 | ... ...; | -| Assert.cs:79:16:79:32 | String s = ... | Assert.cs:79:20:79:20 | access to parameter b | +| Assert.cs:79:16:79:16 | access to local variable s | Assert.cs:79:16:79:16 | access to local variable s | +| Assert.cs:79:16:79:32 | String s = ... | Assert.cs:79:16:79:16 | access to local variable s | | Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:20:79:20 | access to parameter b | -| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:20:79:20 | access to parameter b | +| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:20:79:32 | ... ? ... : ... | | Assert.cs:79:24:79:27 | null | Assert.cs:79:24:79:27 | null | | Assert.cs:79:31:79:32 | "" | Assert.cs:79:31:79:32 | "" | -| Assert.cs:80:9:80:38 | call to method IsFalse | Assert.cs:80:24:80:24 | access to local variable s | +| Assert.cs:80:9:80:38 | call to method IsFalse | Assert.cs:80:24:80:37 | ... \|\| ... | | Assert.cs:80:9:80:39 | ...; | Assert.cs:80:9:80:39 | ...; | | Assert.cs:80:24:80:24 | access to local variable s | Assert.cs:80:24:80:24 | access to local variable s | | Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:24:80:24 | access to local variable s | -| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:80:24:80:24 | access to local variable s | +| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:80:24:80:37 | ... \|\| ... | | Assert.cs:80:29:80:32 | null | Assert.cs:80:29:80:32 | null | | Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:37:80:37 | access to parameter b | | Assert.cs:81:9:81:35 | call to method WriteLine | Assert.cs:81:27:81:27 | access to local variable s | | Assert.cs:81:9:81:36 | ...; | Assert.cs:81:9:81:36 | ...; | | Assert.cs:81:27:81:27 | access to local variable s | Assert.cs:81:27:81:27 | access to local variable s | | Assert.cs:81:27:81:34 | access to property Length | Assert.cs:81:27:81:27 | access to local variable s | +| Assert.cs:84:19:84:19 | b | Assert.cs:84:19:84:19 | b | | Assert.cs:85:5:129:5 | {...} | Assert.cs:85:5:129:5 | {...} | | Assert.cs:86:9:86:33 | ... ...; | Assert.cs:86:9:86:33 | ... ...; | -| Assert.cs:86:16:86:32 | String s = ... | Assert.cs:86:20:86:20 | access to parameter b | +| Assert.cs:86:16:86:16 | access to local variable s | Assert.cs:86:16:86:16 | access to local variable s | +| Assert.cs:86:16:86:32 | String s = ... | Assert.cs:86:16:86:16 | access to local variable s | | Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:86:20:86:20 | access to parameter b | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:86:20:86:20 | access to parameter b | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... | | Assert.cs:86:24:86:27 | null | Assert.cs:86:24:86:27 | null | | Assert.cs:86:31:86:32 | "" | Assert.cs:86:31:86:32 | "" | | Assert.cs:87:9:87:31 | call to method Assert | Assert.cs:87:22:87:22 | access to local variable s | @@ -477,10 +517,11 @@ | Assert.cs:88:9:88:36 | ...; | Assert.cs:88:9:88:36 | ...; | | Assert.cs:88:27:88:27 | access to local variable s | Assert.cs:88:27:88:27 | access to local variable s | | Assert.cs:88:27:88:34 | access to property Length | Assert.cs:88:27:88:27 | access to local variable s | -| Assert.cs:90:9:90:25 | ... = ... | Assert.cs:90:13:90:13 | access to parameter b | +| Assert.cs:90:9:90:9 | access to local variable s | Assert.cs:90:9:90:9 | access to local variable s | +| Assert.cs:90:9:90:25 | ... = ... | Assert.cs:90:9:90:9 | access to local variable s | | Assert.cs:90:9:90:26 | ...; | Assert.cs:90:9:90:26 | ...; | | Assert.cs:90:13:90:13 | access to parameter b | Assert.cs:90:13:90:13 | access to parameter b | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:90:13:90:13 | access to parameter b | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | | Assert.cs:90:17:90:20 | null | Assert.cs:90:17:90:20 | null | | Assert.cs:90:24:90:25 | "" | Assert.cs:90:24:90:25 | "" | | Assert.cs:91:9:91:24 | call to method IsNull | Assert.cs:91:23:91:23 | access to local variable s | @@ -490,10 +531,11 @@ | Assert.cs:92:9:92:36 | ...; | Assert.cs:92:9:92:36 | ...; | | Assert.cs:92:27:92:27 | access to local variable s | Assert.cs:92:27:92:27 | access to local variable s | | Assert.cs:92:27:92:34 | access to property Length | Assert.cs:92:27:92:27 | access to local variable s | -| Assert.cs:94:9:94:25 | ... = ... | Assert.cs:94:13:94:13 | access to parameter b | +| Assert.cs:94:9:94:9 | access to local variable s | Assert.cs:94:9:94:9 | access to local variable s | +| Assert.cs:94:9:94:25 | ... = ... | Assert.cs:94:9:94:9 | access to local variable s | | Assert.cs:94:9:94:26 | ...; | Assert.cs:94:9:94:26 | ...; | | Assert.cs:94:13:94:13 | access to parameter b | Assert.cs:94:13:94:13 | access to parameter b | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:94:13:94:13 | access to parameter b | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | | Assert.cs:94:17:94:20 | null | Assert.cs:94:17:94:20 | null | | Assert.cs:94:24:94:25 | "" | Assert.cs:94:24:94:25 | "" | | Assert.cs:95:9:95:27 | call to method IsNotNull | Assert.cs:95:26:95:26 | access to local variable s | @@ -503,10 +545,11 @@ | Assert.cs:96:9:96:36 | ...; | Assert.cs:96:9:96:36 | ...; | | Assert.cs:96:27:96:27 | access to local variable s | Assert.cs:96:27:96:27 | access to local variable s | | Assert.cs:96:27:96:34 | access to property Length | Assert.cs:96:27:96:27 | access to local variable s | -| Assert.cs:98:9:98:25 | ... = ... | Assert.cs:98:13:98:13 | access to parameter b | +| Assert.cs:98:9:98:9 | access to local variable s | Assert.cs:98:9:98:9 | access to local variable s | +| Assert.cs:98:9:98:25 | ... = ... | Assert.cs:98:9:98:9 | access to local variable s | | Assert.cs:98:9:98:26 | ...; | Assert.cs:98:9:98:26 | ...; | | Assert.cs:98:13:98:13 | access to parameter b | Assert.cs:98:13:98:13 | access to parameter b | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:98:13:98:13 | access to parameter b | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | | Assert.cs:98:17:98:20 | null | Assert.cs:98:17:98:20 | null | | Assert.cs:98:24:98:25 | "" | Assert.cs:98:24:98:25 | "" | | Assert.cs:99:9:99:32 | call to method IsTrue | Assert.cs:99:23:99:23 | access to local variable s | @@ -518,10 +561,11 @@ | Assert.cs:100:9:100:36 | ...; | Assert.cs:100:9:100:36 | ...; | | Assert.cs:100:27:100:27 | access to local variable s | Assert.cs:100:27:100:27 | access to local variable s | | Assert.cs:100:27:100:34 | access to property Length | Assert.cs:100:27:100:27 | access to local variable s | -| Assert.cs:102:9:102:25 | ... = ... | Assert.cs:102:13:102:13 | access to parameter b | +| Assert.cs:102:9:102:9 | access to local variable s | Assert.cs:102:9:102:9 | access to local variable s | +| Assert.cs:102:9:102:25 | ... = ... | Assert.cs:102:9:102:9 | access to local variable s | | Assert.cs:102:9:102:26 | ...; | Assert.cs:102:9:102:26 | ...; | | Assert.cs:102:13:102:13 | access to parameter b | Assert.cs:102:13:102:13 | access to parameter b | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:102:13:102:13 | access to parameter b | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | | Assert.cs:102:17:102:20 | null | Assert.cs:102:17:102:20 | null | | Assert.cs:102:24:102:25 | "" | Assert.cs:102:24:102:25 | "" | | Assert.cs:103:9:103:32 | call to method IsTrue | Assert.cs:103:23:103:23 | access to local variable s | @@ -533,10 +577,11 @@ | Assert.cs:104:9:104:36 | ...; | Assert.cs:104:9:104:36 | ...; | | Assert.cs:104:27:104:27 | access to local variable s | Assert.cs:104:27:104:27 | access to local variable s | | Assert.cs:104:27:104:34 | access to property Length | Assert.cs:104:27:104:27 | access to local variable s | -| Assert.cs:106:9:106:25 | ... = ... | Assert.cs:106:13:106:13 | access to parameter b | +| Assert.cs:106:9:106:9 | access to local variable s | Assert.cs:106:9:106:9 | access to local variable s | +| Assert.cs:106:9:106:25 | ... = ... | Assert.cs:106:9:106:9 | access to local variable s | | Assert.cs:106:9:106:26 | ...; | Assert.cs:106:9:106:26 | ...; | | Assert.cs:106:13:106:13 | access to parameter b | Assert.cs:106:13:106:13 | access to parameter b | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:106:13:106:13 | access to parameter b | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | | Assert.cs:106:17:106:20 | null | Assert.cs:106:17:106:20 | null | | Assert.cs:106:24:106:25 | "" | Assert.cs:106:24:106:25 | "" | | Assert.cs:107:9:107:33 | call to method IsFalse | Assert.cs:107:24:107:24 | access to local variable s | @@ -548,10 +593,11 @@ | Assert.cs:108:9:108:36 | ...; | Assert.cs:108:9:108:36 | ...; | | Assert.cs:108:27:108:27 | access to local variable s | Assert.cs:108:27:108:27 | access to local variable s | | Assert.cs:108:27:108:34 | access to property Length | Assert.cs:108:27:108:27 | access to local variable s | -| Assert.cs:110:9:110:25 | ... = ... | Assert.cs:110:13:110:13 | access to parameter b | +| Assert.cs:110:9:110:9 | access to local variable s | Assert.cs:110:9:110:9 | access to local variable s | +| Assert.cs:110:9:110:25 | ... = ... | Assert.cs:110:9:110:9 | access to local variable s | | Assert.cs:110:9:110:26 | ...; | Assert.cs:110:9:110:26 | ...; | | Assert.cs:110:13:110:13 | access to parameter b | Assert.cs:110:13:110:13 | access to parameter b | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:110:13:110:13 | access to parameter b | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | | Assert.cs:110:17:110:20 | null | Assert.cs:110:17:110:20 | null | | Assert.cs:110:24:110:25 | "" | Assert.cs:110:24:110:25 | "" | | Assert.cs:111:9:111:33 | call to method IsFalse | Assert.cs:111:24:111:24 | access to local variable s | @@ -563,77 +609,87 @@ | Assert.cs:112:9:112:36 | ...; | Assert.cs:112:9:112:36 | ...; | | Assert.cs:112:27:112:27 | access to local variable s | Assert.cs:112:27:112:27 | access to local variable s | | Assert.cs:112:27:112:34 | access to property Length | Assert.cs:112:27:112:27 | access to local variable s | -| Assert.cs:114:9:114:25 | ... = ... | Assert.cs:114:13:114:13 | access to parameter b | +| Assert.cs:114:9:114:9 | access to local variable s | Assert.cs:114:9:114:9 | access to local variable s | +| Assert.cs:114:9:114:25 | ... = ... | Assert.cs:114:9:114:9 | access to local variable s | | Assert.cs:114:9:114:26 | ...; | Assert.cs:114:9:114:26 | ...; | | Assert.cs:114:13:114:13 | access to parameter b | Assert.cs:114:13:114:13 | access to parameter b | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:114:13:114:13 | access to parameter b | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | | Assert.cs:114:17:114:20 | null | Assert.cs:114:17:114:20 | null | | Assert.cs:114:24:114:25 | "" | Assert.cs:114:24:114:25 | "" | -| Assert.cs:115:9:115:37 | call to method IsTrue | Assert.cs:115:23:115:23 | access to local variable s | +| Assert.cs:115:9:115:37 | call to method IsTrue | Assert.cs:115:23:115:36 | ... && ... | | Assert.cs:115:9:115:38 | ...; | Assert.cs:115:9:115:38 | ...; | | Assert.cs:115:23:115:23 | access to local variable s | Assert.cs:115:23:115:23 | access to local variable s | | Assert.cs:115:23:115:31 | ... != ... | Assert.cs:115:23:115:23 | access to local variable s | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:115:23:115:23 | access to local variable s | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:115:23:115:36 | ... && ... | | Assert.cs:115:28:115:31 | null | Assert.cs:115:28:115:31 | null | | Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:36:115:36 | access to parameter b | | Assert.cs:116:9:116:35 | call to method WriteLine | Assert.cs:116:27:116:27 | access to local variable s | | Assert.cs:116:9:116:36 | ...; | Assert.cs:116:9:116:36 | ...; | | Assert.cs:116:27:116:27 | access to local variable s | Assert.cs:116:27:116:27 | access to local variable s | | Assert.cs:116:27:116:34 | access to property Length | Assert.cs:116:27:116:27 | access to local variable s | -| Assert.cs:118:9:118:25 | ... = ... | Assert.cs:118:13:118:13 | access to parameter b | +| Assert.cs:118:9:118:9 | access to local variable s | Assert.cs:118:9:118:9 | access to local variable s | +| Assert.cs:118:9:118:25 | ... = ... | Assert.cs:118:9:118:9 | access to local variable s | | Assert.cs:118:9:118:26 | ...; | Assert.cs:118:9:118:26 | ...; | | Assert.cs:118:13:118:13 | access to parameter b | Assert.cs:118:13:118:13 | access to parameter b | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:118:13:118:13 | access to parameter b | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | | Assert.cs:118:17:118:20 | null | Assert.cs:118:17:118:20 | null | | Assert.cs:118:24:118:25 | "" | Assert.cs:118:24:118:25 | "" | -| Assert.cs:119:9:119:39 | call to method IsFalse | Assert.cs:119:24:119:24 | access to local variable s | +| Assert.cs:119:9:119:39 | call to method IsFalse | Assert.cs:119:24:119:38 | ... \|\| ... | | Assert.cs:119:9:119:40 | ...; | Assert.cs:119:9:119:40 | ...; | | Assert.cs:119:24:119:24 | access to local variable s | Assert.cs:119:24:119:24 | access to local variable s | | Assert.cs:119:24:119:32 | ... == ... | Assert.cs:119:24:119:24 | access to local variable s | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:119:24:119:24 | access to local variable s | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:119:24:119:38 | ... \|\| ... | | Assert.cs:119:29:119:32 | null | Assert.cs:119:29:119:32 | null | -| Assert.cs:119:37:119:38 | !... | Assert.cs:119:38:119:38 | access to parameter b | +| Assert.cs:119:37:119:38 | !... | Assert.cs:119:37:119:38 | !... | | Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:38:119:38 | access to parameter b | | Assert.cs:120:9:120:35 | call to method WriteLine | Assert.cs:120:27:120:27 | access to local variable s | | Assert.cs:120:9:120:36 | ...; | Assert.cs:120:9:120:36 | ...; | | Assert.cs:120:27:120:27 | access to local variable s | Assert.cs:120:27:120:27 | access to local variable s | | Assert.cs:120:27:120:34 | access to property Length | Assert.cs:120:27:120:27 | access to local variable s | -| Assert.cs:122:9:122:25 | ... = ... | Assert.cs:122:13:122:13 | access to parameter b | +| Assert.cs:122:9:122:9 | access to local variable s | Assert.cs:122:9:122:9 | access to local variable s | +| Assert.cs:122:9:122:25 | ... = ... | Assert.cs:122:9:122:9 | access to local variable s | | Assert.cs:122:9:122:26 | ...; | Assert.cs:122:9:122:26 | ...; | | Assert.cs:122:13:122:13 | access to parameter b | Assert.cs:122:13:122:13 | access to parameter b | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:122:13:122:13 | access to parameter b | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | | Assert.cs:122:17:122:20 | null | Assert.cs:122:17:122:20 | null | | Assert.cs:122:24:122:25 | "" | Assert.cs:122:24:122:25 | "" | -| Assert.cs:123:9:123:37 | call to method IsTrue | Assert.cs:123:23:123:23 | access to local variable s | +| Assert.cs:123:9:123:37 | call to method IsTrue | Assert.cs:123:23:123:36 | ... && ... | | Assert.cs:123:9:123:38 | ...; | Assert.cs:123:9:123:38 | ...; | | Assert.cs:123:23:123:23 | access to local variable s | Assert.cs:123:23:123:23 | access to local variable s | | Assert.cs:123:23:123:31 | ... == ... | Assert.cs:123:23:123:23 | access to local variable s | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:123:23:123:23 | access to local variable s | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:123:23:123:36 | ... && ... | | Assert.cs:123:28:123:31 | null | Assert.cs:123:28:123:31 | null | | Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:36:123:36 | access to parameter b | | Assert.cs:124:9:124:35 | call to method WriteLine | Assert.cs:124:27:124:27 | access to local variable s | | Assert.cs:124:9:124:36 | ...; | Assert.cs:124:9:124:36 | ...; | | Assert.cs:124:27:124:27 | access to local variable s | Assert.cs:124:27:124:27 | access to local variable s | | Assert.cs:124:27:124:34 | access to property Length | Assert.cs:124:27:124:27 | access to local variable s | -| Assert.cs:126:9:126:25 | ... = ... | Assert.cs:126:13:126:13 | access to parameter b | +| Assert.cs:126:9:126:9 | access to local variable s | Assert.cs:126:9:126:9 | access to local variable s | +| Assert.cs:126:9:126:25 | ... = ... | Assert.cs:126:9:126:9 | access to local variable s | | Assert.cs:126:9:126:26 | ...; | Assert.cs:126:9:126:26 | ...; | | Assert.cs:126:13:126:13 | access to parameter b | Assert.cs:126:13:126:13 | access to parameter b | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:126:13:126:13 | access to parameter b | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | | Assert.cs:126:17:126:20 | null | Assert.cs:126:17:126:20 | null | | Assert.cs:126:24:126:25 | "" | Assert.cs:126:24:126:25 | "" | -| Assert.cs:127:9:127:39 | call to method IsFalse | Assert.cs:127:24:127:24 | access to local variable s | +| Assert.cs:127:9:127:39 | call to method IsFalse | Assert.cs:127:24:127:38 | ... \|\| ... | | Assert.cs:127:9:127:40 | ...; | Assert.cs:127:9:127:40 | ...; | | Assert.cs:127:24:127:24 | access to local variable s | Assert.cs:127:24:127:24 | access to local variable s | | Assert.cs:127:24:127:32 | ... != ... | Assert.cs:127:24:127:24 | access to local variable s | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:127:24:127:24 | access to local variable s | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:127:24:127:38 | ... \|\| ... | | Assert.cs:127:29:127:32 | null | Assert.cs:127:29:127:32 | null | -| Assert.cs:127:37:127:38 | !... | Assert.cs:127:38:127:38 | access to parameter b | +| Assert.cs:127:37:127:38 | !... | Assert.cs:127:37:127:38 | !... | | Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:38:127:38 | access to parameter b | | Assert.cs:128:9:128:35 | call to method WriteLine | Assert.cs:128:27:128:27 | access to local variable s | | Assert.cs:128:9:128:36 | ...; | Assert.cs:128:9:128:36 | ...; | | Assert.cs:128:27:128:27 | access to local variable s | Assert.cs:128:27:128:27 | access to local variable s | | Assert.cs:128:27:128:34 | access to property Length | Assert.cs:128:27:128:27 | access to local variable s | +| Assert.cs:132:74:132:83 | condition1 | Assert.cs:132:74:132:83 | condition1 | +| Assert.cs:133:73:133:82 | condition2 | Assert.cs:133:73:133:82 | condition2 | +| Assert.cs:134:17:134:28 | nonCondition | Assert.cs:134:17:134:28 | nonCondition | | Assert.cs:135:5:136:5 | {...} | Assert.cs:135:5:136:5 | {...} | +| Assert.cs:138:19:138:20 | b1 | Assert.cs:138:19:138:20 | b1 | +| Assert.cs:138:28:138:29 | b2 | Assert.cs:138:28:138:29 | b2 | +| Assert.cs:138:37:138:38 | b3 | Assert.cs:138:37:138:38 | b3 | | Assert.cs:139:5:142:5 | {...} | Assert.cs:139:5:142:5 | {...} | | Assert.cs:140:9:140:35 | call to method AssertTrueFalse | Assert.cs:140:9:140:35 | this access | | Assert.cs:140:9:140:35 | this access | Assert.cs:140:9:140:35 | this access | @@ -648,14 +704,16 @@ | Assignments.cs:1:7:1:17 | {...} | Assignments.cs:1:7:1:17 | {...} | | Assignments.cs:4:5:15:5 | {...} | Assignments.cs:4:5:15:5 | {...} | | Assignments.cs:5:9:5:18 | ... ...; | Assignments.cs:5:9:5:18 | ... ...; | -| Assignments.cs:5:13:5:17 | Int32 x = ... | Assignments.cs:5:17:5:17 | 0 | +| Assignments.cs:5:13:5:13 | access to local variable x | Assignments.cs:5:13:5:13 | access to local variable x | +| Assignments.cs:5:13:5:17 | Int32 x = ... | Assignments.cs:5:13:5:13 | access to local variable x | | Assignments.cs:5:17:5:17 | 0 | Assignments.cs:5:17:5:17 | 0 | | Assignments.cs:6:9:6:9 | access to local variable x | Assignments.cs:6:9:6:9 | access to local variable x | | Assignments.cs:6:9:6:14 | ... += ... | Assignments.cs:6:9:6:9 | access to local variable x | | Assignments.cs:6:9:6:15 | ...; | Assignments.cs:6:9:6:15 | ...; | | Assignments.cs:6:14:6:14 | 1 | Assignments.cs:6:14:6:14 | 1 | | Assignments.cs:8:9:8:22 | ... ...; | Assignments.cs:8:9:8:22 | ... ...; | -| Assignments.cs:8:17:8:21 | dynamic d = ... | Assignments.cs:8:21:8:21 | 0 | +| Assignments.cs:8:17:8:17 | access to local variable d | Assignments.cs:8:17:8:17 | access to local variable d | +| Assignments.cs:8:17:8:21 | dynamic d = ... | Assignments.cs:8:17:8:17 | access to local variable d | | Assignments.cs:8:21:8:21 | 0 | Assignments.cs:8:21:8:21 | 0 | | Assignments.cs:8:21:8:21 | (...) ... | Assignments.cs:8:21:8:21 | 0 | | Assignments.cs:9:9:9:9 | access to local variable d | Assignments.cs:9:9:9:9 | access to local variable d | @@ -663,7 +721,8 @@ | Assignments.cs:9:9:9:15 | ...; | Assignments.cs:9:9:9:15 | ...; | | Assignments.cs:9:14:9:14 | 2 | Assignments.cs:9:14:9:14 | 2 | | Assignments.cs:11:9:11:34 | ... ...; | Assignments.cs:11:9:11:34 | ... ...; | -| Assignments.cs:11:13:11:33 | Assignments a = ... | Assignments.cs:11:17:11:33 | object creation of type Assignments | +| Assignments.cs:11:13:11:13 | access to local variable a | Assignments.cs:11:13:11:13 | access to local variable a | +| Assignments.cs:11:13:11:33 | Assignments a = ... | Assignments.cs:11:13:11:13 | access to local variable a | | Assignments.cs:11:17:11:33 | object creation of type Assignments | Assignments.cs:11:17:11:33 | object creation of type Assignments | | Assignments.cs:12:9:12:9 | access to local variable a | Assignments.cs:12:9:12:9 | access to local variable a | | Assignments.cs:12:9:12:17 | ... += ... | Assignments.cs:12:9:12:9 | access to local variable a | @@ -674,19 +733,30 @@ | Assignments.cs:14:9:14:35 | ... += ... | Assignments.cs:14:9:14:13 | this access | | Assignments.cs:14:9:14:36 | ...; | Assignments.cs:14:9:14:36 | ...; | | Assignments.cs:14:18:14:35 | (...) => ... | Assignments.cs:14:18:14:35 | (...) => ... | +| Assignments.cs:14:19:14:24 | sender | Assignments.cs:14:19:14:24 | sender | +| Assignments.cs:14:27:14:27 | e | Assignments.cs:14:27:14:27 | e | | Assignments.cs:14:33:14:35 | {...} | Assignments.cs:14:33:14:35 | {...} | +| Assignments.cs:17:54:17:54 | x | Assignments.cs:17:54:17:54 | x | +| Assignments.cs:17:69:17:69 | y | Assignments.cs:17:69:17:69 | y | | Assignments.cs:18:5:20:5 | {...} | Assignments.cs:18:5:20:5 | {...} | | Assignments.cs:19:9:19:17 | return ...; | Assignments.cs:19:16:19:16 | access to parameter x | | Assignments.cs:19:16:19:16 | access to parameter x | Assignments.cs:19:16:19:16 | access to parameter x | +| Assignments.cs:27:33:27:33 | x | Assignments.cs:27:33:27:33 | x | | Assignments.cs:28:5:30:5 | {...} | Assignments.cs:28:5:30:5 | {...} | -| Assignments.cs:29:9:29:14 | ... = ... | Assignments.cs:29:13:29:14 | 42 | +| Assignments.cs:29:9:29:9 | access to parameter x | Assignments.cs:29:9:29:9 | access to parameter x | +| Assignments.cs:29:9:29:14 | ... = ... | Assignments.cs:29:9:29:9 | access to parameter x | | Assignments.cs:29:9:29:15 | ...; | Assignments.cs:29:9:29:15 | ...; | | Assignments.cs:29:13:29:14 | 42 | Assignments.cs:29:13:29:14 | 42 | +| Assignments.cs:32:32:32:32 | x | Assignments.cs:32:32:32:32 | x | +| Assignments.cs:32:42:32:42 | o | Assignments.cs:32:42:32:42 | o | +| Assignments.cs:32:56:32:56 | y | Assignments.cs:32:56:32:56 | y | | Assignments.cs:33:5:36:5 | {...} | Assignments.cs:33:5:36:5 | {...} | -| Assignments.cs:34:9:34:14 | ... = ... | Assignments.cs:34:13:34:14 | 42 | +| Assignments.cs:34:9:34:9 | access to parameter x | Assignments.cs:34:9:34:9 | access to parameter x | +| Assignments.cs:34:9:34:14 | ... = ... | Assignments.cs:34:9:34:9 | access to parameter x | | Assignments.cs:34:9:34:15 | ...; | Assignments.cs:34:9:34:15 | ...; | | Assignments.cs:34:13:34:14 | 42 | Assignments.cs:34:13:34:14 | 42 | -| Assignments.cs:35:9:35:19 | ... = ... | Assignments.cs:35:13:35:19 | "Hello" | +| Assignments.cs:35:9:35:9 | access to parameter y | Assignments.cs:35:9:35:9 | access to parameter y | +| Assignments.cs:35:9:35:19 | ... = ... | Assignments.cs:35:9:35:9 | access to parameter y | | Assignments.cs:35:9:35:20 | ...; | Assignments.cs:35:9:35:20 | ...; | | Assignments.cs:35:13:35:19 | "Hello" | Assignments.cs:35:13:35:19 | "Hello" | | Assignments.cs:39:5:45:5 | {...} | Assignments.cs:39:5:45:5 | {...} | @@ -695,6 +765,7 @@ | Assignments.cs:41:9:41:30 | call to method SetParamSingle | Assignments.cs:41:9:41:30 | this access | | Assignments.cs:41:9:41:30 | this access | Assignments.cs:41:9:41:30 | this access | | Assignments.cs:41:9:41:31 | ...; | Assignments.cs:41:9:41:31 | ...; | +| Assignments.cs:41:28:41:29 | access to local variable x1 | Assignments.cs:41:28:41:29 | access to local variable x1 | | Assignments.cs:42:9:42:36 | call to method SetParamSingle | Assignments.cs:42:9:42:36 | this access | | Assignments.cs:42:9:42:36 | this access | Assignments.cs:42:9:42:36 | this access | | Assignments.cs:42:9:42:37 | ...; | Assignments.cs:42:9:42:37 | ...; | @@ -703,6 +774,7 @@ | Assignments.cs:43:9:43:55 | call to method SetParamMulti | Assignments.cs:43:9:43:55 | this access | | Assignments.cs:43:9:43:55 | this access | Assignments.cs:43:9:43:55 | this access | | Assignments.cs:43:9:43:56 | ...; | Assignments.cs:43:9:43:56 | ...; | +| Assignments.cs:43:31:43:31 | Int32 y | Assignments.cs:43:31:43:31 | Int32 y | | Assignments.cs:43:34:43:37 | null | Assignments.cs:43:34:43:37 | null | | Assignments.cs:43:44:43:54 | access to field StringField | Assignments.cs:43:44:43:54 | this access | | Assignments.cs:43:44:43:54 | this access | Assignments.cs:43:44:43:54 | this access | @@ -718,10 +790,11 @@ | BreakInTry.cs:1:7:1:16 | call to method | BreakInTry.cs:1:7:1:16 | this access | | BreakInTry.cs:1:7:1:16 | this access | BreakInTry.cs:1:7:1:16 | this access | | BreakInTry.cs:1:7:1:16 | {...} | BreakInTry.cs:1:7:1:16 | {...} | +| BreakInTry.cs:3:22:3:25 | args | BreakInTry.cs:3:22:3:25 | args | | BreakInTry.cs:4:5:18:5 | {...} | BreakInTry.cs:4:5:18:5 | {...} | | BreakInTry.cs:5:9:17:9 | try {...} ... | BreakInTry.cs:5:9:17:9 | try {...} ... | | BreakInTry.cs:6:9:12:9 | {...} | BreakInTry.cs:6:9:12:9 | {...} | -| BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | BreakInTry.cs:7:33:7:36 | access to parameter args | +| BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | | BreakInTry.cs:7:26:7:28 | String arg | BreakInTry.cs:7:26:7:28 | String arg | | BreakInTry.cs:7:33:7:36 | access to parameter args | BreakInTry.cs:7:33:7:36 | access to parameter args | | BreakInTry.cs:8:13:11:13 | {...} | BreakInTry.cs:8:13:11:13 | {...} | @@ -736,8 +809,9 @@ | BreakInTry.cs:15:17:15:28 | ... == ... | BreakInTry.cs:15:17:15:20 | access to parameter args | | BreakInTry.cs:15:25:15:28 | null | BreakInTry.cs:15:25:15:28 | null | | BreakInTry.cs:16:17:16:17 | ; | BreakInTry.cs:16:17:16:17 | ; | +| BreakInTry.cs:20:22:20:25 | args | BreakInTry.cs:20:22:20:25 | args | | BreakInTry.cs:21:5:36:5 | {...} | BreakInTry.cs:21:5:36:5 | {...} | -| BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:22:29:22:32 | access to parameter args | +| BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | | BreakInTry.cs:22:22:22:24 | String arg | BreakInTry.cs:22:22:22:24 | String arg | | BreakInTry.cs:22:29:22:32 | access to parameter args | BreakInTry.cs:22:29:22:32 | access to parameter args | | BreakInTry.cs:23:9:34:9 | {...} | BreakInTry.cs:23:9:34:9 | {...} | @@ -755,6 +829,7 @@ | BreakInTry.cs:31:29:31:32 | null | BreakInTry.cs:31:29:31:32 | null | | BreakInTry.cs:32:21:32:21 | ; | BreakInTry.cs:32:21:32:21 | ; | | BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:35:7:35:7 | ; | +| BreakInTry.cs:38:22:38:25 | args | BreakInTry.cs:38:22:38:25 | args | | BreakInTry.cs:39:5:54:5 | {...} | BreakInTry.cs:39:5:54:5 | {...} | | BreakInTry.cs:40:9:52:9 | try {...} ... | BreakInTry.cs:40:9:52:9 | try {...} ... | | BreakInTry.cs:41:9:44:9 | {...} | BreakInTry.cs:41:9:44:9 | {...} | @@ -764,7 +839,7 @@ | BreakInTry.cs:42:25:42:28 | null | BreakInTry.cs:42:25:42:28 | null | | BreakInTry.cs:43:17:43:23 | return ...; | BreakInTry.cs:43:17:43:23 | return ...; | | BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:46:9:52:9 | {...} | -| BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:47:33:47:36 | access to parameter args | +| BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | | BreakInTry.cs:47:26:47:28 | String arg | BreakInTry.cs:47:26:47:28 | String arg | | BreakInTry.cs:47:33:47:36 | access to parameter args | BreakInTry.cs:47:33:47:36 | access to parameter args | | BreakInTry.cs:48:13:51:13 | {...} | BreakInTry.cs:48:13:51:13 | {...} | @@ -774,6 +849,7 @@ | BreakInTry.cs:49:28:49:31 | null | BreakInTry.cs:49:28:49:31 | null | | BreakInTry.cs:50:21:50:26 | break; | BreakInTry.cs:50:21:50:26 | break; | | BreakInTry.cs:53:7:53:7 | ; | BreakInTry.cs:53:7:53:7 | ; | +| BreakInTry.cs:56:22:56:25 | args | BreakInTry.cs:56:22:56:25 | args | | BreakInTry.cs:57:5:71:5 | {...} | BreakInTry.cs:57:5:71:5 | {...} | | BreakInTry.cs:58:9:70:9 | try {...} ... | BreakInTry.cs:58:9:70:9 | try {...} ... | | BreakInTry.cs:59:9:62:9 | {...} | BreakInTry.cs:59:9:62:9 | {...} | @@ -783,7 +859,7 @@ | BreakInTry.cs:60:25:60:28 | null | BreakInTry.cs:60:25:60:28 | null | | BreakInTry.cs:61:17:61:23 | return ...; | BreakInTry.cs:61:17:61:23 | return ...; | | BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:64:9:70:9 | {...} | -| BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:65:33:65:36 | access to parameter args | +| BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | | BreakInTry.cs:65:26:65:28 | String arg | BreakInTry.cs:65:26:65:28 | String arg | | BreakInTry.cs:65:33:65:36 | access to parameter args | BreakInTry.cs:65:33:65:36 | access to parameter args | | BreakInTry.cs:66:13:69:13 | {...} | BreakInTry.cs:66:13:69:13 | {...} | @@ -805,10 +881,10 @@ | CompileTimeOperators.cs:16:5:18:5 | {...} | CompileTimeOperators.cs:16:5:18:5 | {...} | | CompileTimeOperators.cs:17:9:17:27 | return ...; | CompileTimeOperators.cs:17:16:17:26 | typeof(...) | | CompileTimeOperators.cs:17:16:17:26 | typeof(...) | CompileTimeOperators.cs:17:16:17:26 | typeof(...) | +| CompileTimeOperators.cs:20:23:20:23 | i | CompileTimeOperators.cs:20:23:20:23 | i | | CompileTimeOperators.cs:21:5:23:5 | {...} | CompileTimeOperators.cs:21:5:23:5 | {...} | | CompileTimeOperators.cs:22:9:22:25 | return ...; | CompileTimeOperators.cs:22:16:22:24 | nameof(...) | | CompileTimeOperators.cs:22:16:22:24 | nameof(...) | CompileTimeOperators.cs:22:16:22:24 | nameof(...) | -| CompileTimeOperators.cs:22:23:22:23 | access to parameter i | CompileTimeOperators.cs:22:23:22:23 | access to parameter i | | CompileTimeOperators.cs:26:7:26:22 | call to constructor Object | CompileTimeOperators.cs:26:7:26:22 | call to constructor Object | | CompileTimeOperators.cs:26:7:26:22 | call to method | CompileTimeOperators.cs:26:7:26:22 | this access | | CompileTimeOperators.cs:26:7:26:22 | this access | CompileTimeOperators.cs:26:7:26:22 | this access | @@ -817,9 +893,6 @@ | CompileTimeOperators.cs:30:9:38:9 | try {...} ... | CompileTimeOperators.cs:30:9:38:9 | try {...} ... | | CompileTimeOperators.cs:31:9:34:9 | {...} | CompileTimeOperators.cs:31:9:34:9 | {...} | | CompileTimeOperators.cs:32:13:32:21 | goto ...; | CompileTimeOperators.cs:32:13:32:21 | goto ...; | -| CompileTimeOperators.cs:33:13:33:37 | call to method WriteLine | CompileTimeOperators.cs:33:31:33:36 | "Dead" | -| CompileTimeOperators.cs:33:13:33:38 | ...; | CompileTimeOperators.cs:33:13:33:38 | ...; | -| CompileTimeOperators.cs:33:31:33:36 | "Dead" | CompileTimeOperators.cs:33:31:33:36 | "Dead" | | CompileTimeOperators.cs:36:9:38:9 | {...} | CompileTimeOperators.cs:36:9:38:9 | {...} | | CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | CompileTimeOperators.cs:37:31:37:39 | "Finally" | | CompileTimeOperators.cs:37:13:37:41 | ...; | CompileTimeOperators.cs:37:13:37:41 | ...; | @@ -835,19 +908,25 @@ | ConditionalAccess.cs:1:7:1:23 | call to method | ConditionalAccess.cs:1:7:1:23 | this access | | ConditionalAccess.cs:1:7:1:23 | this access | ConditionalAccess.cs:1:7:1:23 | this access | | ConditionalAccess.cs:1:7:1:23 | {...} | ConditionalAccess.cs:1:7:1:23 | {...} | +| ConditionalAccess.cs:3:20:3:20 | i | ConditionalAccess.cs:3:20:3:20 | i | | ConditionalAccess.cs:3:26:3:26 | access to parameter i | ConditionalAccess.cs:3:26:3:26 | access to parameter i | | ConditionalAccess.cs:3:26:3:38 | call to method ToString | ConditionalAccess.cs:3:26:3:26 | access to parameter i | | ConditionalAccess.cs:3:26:3:49 | call to method ToLower | ConditionalAccess.cs:3:26:3:26 | access to parameter i | +| ConditionalAccess.cs:5:20:5:20 | s | ConditionalAccess.cs:5:20:5:20 | s | | ConditionalAccess.cs:5:26:5:26 | access to parameter s | ConditionalAccess.cs:5:26:5:26 | access to parameter s | | ConditionalAccess.cs:5:26:5:34 | access to property Length | ConditionalAccess.cs:5:26:5:26 | access to parameter s | -| ConditionalAccess.cs:7:38:7:55 | access to property Length | ConditionalAccess.cs:7:39:7:40 | access to parameter s1 | +| ConditionalAccess.cs:7:20:7:21 | s1 | ConditionalAccess.cs:7:20:7:21 | s1 | +| ConditionalAccess.cs:7:31:7:32 | s2 | ConditionalAccess.cs:7:31:7:32 | s2 | +| ConditionalAccess.cs:7:38:7:55 | access to property Length | ConditionalAccess.cs:7:39:7:46 | ... ?? ... | | ConditionalAccess.cs:7:39:7:40 | access to parameter s1 | ConditionalAccess.cs:7:39:7:40 | access to parameter s1 | -| ConditionalAccess.cs:7:39:7:46 | ... ?? ... | ConditionalAccess.cs:7:39:7:40 | access to parameter s1 | +| ConditionalAccess.cs:7:39:7:46 | ... ?? ... | ConditionalAccess.cs:7:39:7:46 | ... ?? ... | | ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | +| ConditionalAccess.cs:9:19:9:19 | s | ConditionalAccess.cs:9:19:9:19 | s | | ConditionalAccess.cs:9:25:9:25 | access to parameter s | ConditionalAccess.cs:9:25:9:25 | access to parameter s | | ConditionalAccess.cs:9:25:9:33 | access to property Length | ConditionalAccess.cs:9:25:9:25 | access to parameter s | -| ConditionalAccess.cs:9:25:9:38 | ... ?? ... | ConditionalAccess.cs:9:25:9:25 | access to parameter s | +| ConditionalAccess.cs:9:25:9:38 | ... ?? ... | ConditionalAccess.cs:9:25:9:38 | ... ?? ... | | ConditionalAccess.cs:9:38:9:38 | 0 | ConditionalAccess.cs:9:38:9:38 | 0 | +| ConditionalAccess.cs:11:19:11:19 | s | ConditionalAccess.cs:11:19:11:19 | s | | ConditionalAccess.cs:12:5:17:5 | {...} | ConditionalAccess.cs:12:5:17:5 | {...} | | ConditionalAccess.cs:13:9:16:21 | if (...) ... | ConditionalAccess.cs:13:9:16:21 | if (...) ... | | ConditionalAccess.cs:13:13:13:13 | access to parameter s | ConditionalAccess.cs:13:13:13:13 | access to parameter s | @@ -859,39 +938,55 @@ | ConditionalAccess.cs:14:20:14:20 | 0 | ConditionalAccess.cs:14:20:14:20 | 0 | | ConditionalAccess.cs:16:13:16:21 | return ...; | ConditionalAccess.cs:16:20:16:20 | 1 | | ConditionalAccess.cs:16:20:16:20 | 1 | ConditionalAccess.cs:16:20:16:20 | 1 | +| ConditionalAccess.cs:19:22:19:23 | s1 | ConditionalAccess.cs:19:22:19:23 | s1 | +| ConditionalAccess.cs:19:33:19:34 | s2 | ConditionalAccess.cs:19:33:19:34 | s2 | | ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | | ConditionalAccess.cs:19:40:19:60 | call to method CommaJoinWith | ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | +| ConditionalAccess.cs:21:17:21:17 | i | ConditionalAccess.cs:21:17:21:17 | i | | ConditionalAccess.cs:22:5:26:5 | {...} | ConditionalAccess.cs:22:5:26:5 | {...} | | ConditionalAccess.cs:23:9:23:39 | ... ...; | ConditionalAccess.cs:23:9:23:39 | ... ...; | -| ConditionalAccess.cs:23:13:23:38 | Nullable j = ... | ConditionalAccess.cs:23:26:23:29 | null | +| ConditionalAccess.cs:23:13:23:13 | access to local variable j | ConditionalAccess.cs:23:13:23:13 | access to local variable j | +| ConditionalAccess.cs:23:13:23:38 | Nullable j = ... | ConditionalAccess.cs:23:13:23:13 | access to local variable j | | ConditionalAccess.cs:23:17:23:38 | access to property Length | ConditionalAccess.cs:23:26:23:29 | null | | ConditionalAccess.cs:23:18:23:29 | (...) ... | ConditionalAccess.cs:23:26:23:29 | null | | ConditionalAccess.cs:23:26:23:29 | null | ConditionalAccess.cs:23:26:23:29 | null | | ConditionalAccess.cs:24:9:24:38 | ... ...; | ConditionalAccess.cs:24:9:24:38 | ... ...; | -| ConditionalAccess.cs:24:13:24:37 | String s = ... | ConditionalAccess.cs:24:24:24:24 | access to parameter i | +| ConditionalAccess.cs:24:13:24:13 | access to local variable s | ConditionalAccess.cs:24:13:24:13 | access to local variable s | +| ConditionalAccess.cs:24:13:24:37 | String s = ... | ConditionalAccess.cs:24:13:24:13 | access to local variable s | | ConditionalAccess.cs:24:17:24:37 | call to method ToString | ConditionalAccess.cs:24:24:24:24 | access to parameter i | | ConditionalAccess.cs:24:18:24:24 | (...) ... | ConditionalAccess.cs:24:24:24:24 | access to parameter i | | ConditionalAccess.cs:24:24:24:24 | access to parameter i | ConditionalAccess.cs:24:24:24:24 | access to parameter i | -| ConditionalAccess.cs:25:9:25:32 | ... = ... | ConditionalAccess.cs:25:13:25:14 | "" | +| ConditionalAccess.cs:25:9:25:9 | access to local variable s | ConditionalAccess.cs:25:9:25:9 | access to local variable s | +| ConditionalAccess.cs:25:9:25:32 | ... = ... | ConditionalAccess.cs:25:9:25:9 | access to local variable s | | ConditionalAccess.cs:25:9:25:33 | ...; | ConditionalAccess.cs:25:9:25:33 | ...; | | ConditionalAccess.cs:25:13:25:14 | "" | ConditionalAccess.cs:25:13:25:14 | "" | | ConditionalAccess.cs:25:13:25:32 | call to method CommaJoinWith | ConditionalAccess.cs:25:13:25:14 | "" | | ConditionalAccess.cs:25:31:25:31 | access to local variable s | ConditionalAccess.cs:25:31:25:31 | access to local variable s | -| ConditionalAccess.cs:30:28:30:32 | ... = ... | ConditionalAccess.cs:30:32:30:32 | 0 | +| ConditionalAccess.cs:30:22:30:22 | i | ConditionalAccess.cs:30:22:30:22 | i | +| ConditionalAccess.cs:30:28:30:28 | access to parameter i | ConditionalAccess.cs:30:28:30:28 | access to parameter i | +| ConditionalAccess.cs:30:28:30:32 | ... = ... | ConditionalAccess.cs:30:28:30:28 | access to parameter i | | ConditionalAccess.cs:30:32:30:32 | 0 | ConditionalAccess.cs:30:32:30:32 | 0 | +| ConditionalAccess.cs:32:18:32:18 | b | ConditionalAccess.cs:32:18:32:18 | b | +| ConditionalAccess.cs:32:29:32:29 | i | ConditionalAccess.cs:32:29:32:29 | i | | ConditionalAccess.cs:33:5:36:5 | {...} | ConditionalAccess.cs:33:5:36:5 | {...} | -| ConditionalAccess.cs:34:9:34:13 | ... = ... | ConditionalAccess.cs:34:13:34:13 | 0 | +| ConditionalAccess.cs:34:9:34:9 | access to parameter i | ConditionalAccess.cs:34:9:34:9 | access to parameter i | +| ConditionalAccess.cs:34:9:34:13 | ... = ... | ConditionalAccess.cs:34:9:34:9 | access to parameter i | | ConditionalAccess.cs:34:9:34:14 | ...; | ConditionalAccess.cs:34:9:34:14 | ...; | | ConditionalAccess.cs:34:13:34:13 | 0 | ConditionalAccess.cs:34:13:34:13 | 0 | | ConditionalAccess.cs:35:9:35:12 | access to property Prop | ConditionalAccess.cs:35:9:35:12 | this access | | ConditionalAccess.cs:35:9:35:12 | this access | ConditionalAccess.cs:35:9:35:12 | this access | | ConditionalAccess.cs:35:9:35:24 | call to method Out | ConditionalAccess.cs:35:9:35:12 | this access | | ConditionalAccess.cs:35:9:35:25 | ...; | ConditionalAccess.cs:35:9:35:25 | ...; | +| ConditionalAccess.cs:35:23:35:23 | access to parameter i | ConditionalAccess.cs:35:23:35:23 | access to parameter i | +| ConditionalAccess.cs:40:21:40:25 | index | ConditionalAccess.cs:40:21:40:25 | index | +| ConditionalAccess.cs:40:21:40:25 | index | ConditionalAccess.cs:40:21:40:25 | index | | ConditionalAccess.cs:42:13:42:28 | {...} | ConditionalAccess.cs:42:13:42:28 | {...} | | ConditionalAccess.cs:42:15:42:26 | return ...; | ConditionalAccess.cs:42:22:42:25 | null | | ConditionalAccess.cs:42:22:42:25 | null | ConditionalAccess.cs:42:22:42:25 | null | +| ConditionalAccess.cs:43:9:43:11 | value | ConditionalAccess.cs:43:9:43:11 | value | | ConditionalAccess.cs:43:13:43:15 | {...} | ConditionalAccess.cs:43:13:43:15 | {...} | +| ConditionalAccess.cs:46:31:46:32 | ca | ConditionalAccess.cs:46:31:46:32 | ca | | ConditionalAccess.cs:47:5:55:5 | {...} | ConditionalAccess.cs:47:5:55:5 | {...} | | ConditionalAccess.cs:48:9:48:10 | access to parameter ca | ConditionalAccess.cs:48:9:48:10 | access to parameter ca | | ConditionalAccess.cs:48:9:48:20 | access to field IntField | ConditionalAccess.cs:48:9:48:10 | access to parameter ca | @@ -931,6 +1026,8 @@ | ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:54:9:54:30 | ...; | | ConditionalAccess.cs:54:12:54:29 | ... += ... | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | | ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:54:27:54:29 | "!" | +| ConditionalAccess.cs:60:52:60:53 | s1 | ConditionalAccess.cs:60:52:60:53 | s1 | +| ConditionalAccess.cs:60:63:60:64 | s2 | ConditionalAccess.cs:60:63:60:64 | s2 | | ConditionalAccess.cs:60:70:60:71 | access to parameter s1 | ConditionalAccess.cs:60:70:60:71 | access to parameter s1 | | ConditionalAccess.cs:60:70:60:78 | ... + ... | ConditionalAccess.cs:60:70:60:71 | access to parameter s1 | | ConditionalAccess.cs:60:70:60:83 | ... + ... | ConditionalAccess.cs:60:70:60:71 | access to parameter s1 | @@ -940,6 +1037,8 @@ | Conditions.cs:1:7:1:16 | call to method | Conditions.cs:1:7:1:16 | this access | | Conditions.cs:1:7:1:16 | this access | Conditions.cs:1:7:1:16 | this access | | Conditions.cs:1:7:1:16 | {...} | Conditions.cs:1:7:1:16 | {...} | +| Conditions.cs:3:26:3:28 | inc | Conditions.cs:3:26:3:28 | inc | +| Conditions.cs:3:39:3:39 | x | Conditions.cs:3:39:3:39 | x | | Conditions.cs:4:5:9:5 | {...} | Conditions.cs:4:5:9:5 | {...} | | Conditions.cs:5:9:6:16 | if (...) ... | Conditions.cs:5:9:6:16 | if (...) ... | | Conditions.cs:5:13:5:15 | access to parameter inc | Conditions.cs:5:13:5:15 | access to parameter inc | @@ -947,14 +1046,16 @@ | Conditions.cs:6:13:6:15 | ...++ | Conditions.cs:6:13:6:13 | access to parameter x | | Conditions.cs:6:13:6:16 | ...; | Conditions.cs:6:13:6:16 | ...; | | Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:7:9:8:16 | if (...) ... | -| Conditions.cs:7:13:7:16 | !... | Conditions.cs:7:14:7:16 | access to parameter inc | +| Conditions.cs:7:13:7:16 | !... | Conditions.cs:7:13:7:16 | !... | | Conditions.cs:7:14:7:16 | access to parameter inc | Conditions.cs:7:14:7:16 | access to parameter inc | | Conditions.cs:8:13:8:13 | access to parameter x | Conditions.cs:8:13:8:13 | access to parameter x | | Conditions.cs:8:13:8:15 | ...-- | Conditions.cs:8:13:8:13 | access to parameter x | | Conditions.cs:8:13:8:16 | ...; | Conditions.cs:8:13:8:16 | ...; | +| Conditions.cs:11:17:11:17 | b | Conditions.cs:11:17:11:17 | b | | Conditions.cs:12:5:20:5 | {...} | Conditions.cs:12:5:20:5 | {...} | | Conditions.cs:13:9:13:18 | ... ...; | Conditions.cs:13:9:13:18 | ... ...; | -| Conditions.cs:13:13:13:17 | Int32 x = ... | Conditions.cs:13:17:13:17 | 0 | +| Conditions.cs:13:13:13:13 | access to local variable x | Conditions.cs:13:13:13:13 | access to local variable x | +| Conditions.cs:13:13:13:17 | Int32 x = ... | Conditions.cs:13:13:13:13 | access to local variable x | | Conditions.cs:13:17:13:17 | 0 | Conditions.cs:13:17:13:17 | 0 | | Conditions.cs:14:9:15:16 | if (...) ... | Conditions.cs:14:9:15:16 | if (...) ... | | Conditions.cs:14:13:14:13 | access to parameter b | Conditions.cs:14:13:14:13 | access to parameter b | @@ -966,16 +1067,19 @@ | Conditions.cs:16:13:16:17 | ... > ... | Conditions.cs:16:13:16:13 | access to local variable x | | Conditions.cs:16:17:16:17 | 0 | Conditions.cs:16:17:16:17 | 0 | | Conditions.cs:17:13:18:20 | if (...) ... | Conditions.cs:17:13:18:20 | if (...) ... | -| Conditions.cs:17:17:17:18 | !... | Conditions.cs:17:18:17:18 | access to parameter b | +| Conditions.cs:17:17:17:18 | !... | Conditions.cs:17:17:17:18 | !... | | Conditions.cs:17:18:17:18 | access to parameter b | Conditions.cs:17:18:17:18 | access to parameter b | | Conditions.cs:18:17:18:17 | access to local variable x | Conditions.cs:18:17:18:17 | access to local variable x | | Conditions.cs:18:17:18:19 | ...-- | Conditions.cs:18:17:18:17 | access to local variable x | | Conditions.cs:18:17:18:20 | ...; | Conditions.cs:18:17:18:20 | ...; | | Conditions.cs:19:9:19:17 | return ...; | Conditions.cs:19:16:19:16 | access to local variable x | | Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:19:16:19:16 | access to local variable x | +| Conditions.cs:22:17:22:18 | b1 | Conditions.cs:22:17:22:18 | b1 | +| Conditions.cs:22:26:22:27 | b2 | Conditions.cs:22:26:22:27 | b2 | | Conditions.cs:23:5:31:5 | {...} | Conditions.cs:23:5:31:5 | {...} | | Conditions.cs:24:9:24:18 | ... ...; | Conditions.cs:24:9:24:18 | ... ...; | -| Conditions.cs:24:13:24:17 | Int32 x = ... | Conditions.cs:24:17:24:17 | 0 | +| Conditions.cs:24:13:24:13 | access to local variable x | Conditions.cs:24:13:24:13 | access to local variable x | +| Conditions.cs:24:13:24:17 | Int32 x = ... | Conditions.cs:24:13:24:13 | access to local variable x | | Conditions.cs:24:17:24:17 | 0 | Conditions.cs:24:17:24:17 | 0 | | Conditions.cs:25:9:27:20 | if (...) ... | Conditions.cs:25:9:27:20 | if (...) ... | | Conditions.cs:25:13:25:14 | access to parameter b1 | Conditions.cs:25:13:25:14 | access to parameter b1 | @@ -991,16 +1095,20 @@ | Conditions.cs:29:13:29:16 | ...; | Conditions.cs:29:13:29:16 | ...; | | Conditions.cs:30:9:30:17 | return ...; | Conditions.cs:30:16:30:16 | access to local variable x | | Conditions.cs:30:16:30:16 | access to local variable x | Conditions.cs:30:16:30:16 | access to local variable x | +| Conditions.cs:33:17:33:18 | b1 | Conditions.cs:33:17:33:18 | b1 | | Conditions.cs:34:5:44:5 | {...} | Conditions.cs:34:5:44:5 | {...} | | Conditions.cs:35:9:35:18 | ... ...; | Conditions.cs:35:9:35:18 | ... ...; | -| Conditions.cs:35:13:35:17 | Int32 x = ... | Conditions.cs:35:17:35:17 | 0 | +| Conditions.cs:35:13:35:13 | access to local variable x | Conditions.cs:35:13:35:13 | access to local variable x | +| Conditions.cs:35:13:35:17 | Int32 x = ... | Conditions.cs:35:13:35:13 | access to local variable x | | Conditions.cs:35:17:35:17 | 0 | Conditions.cs:35:17:35:17 | 0 | | Conditions.cs:36:9:36:23 | ... ...; | Conditions.cs:36:9:36:23 | ... ...; | -| Conditions.cs:36:13:36:22 | Boolean b2 = ... | Conditions.cs:36:18:36:22 | false | +| Conditions.cs:36:13:36:14 | access to local variable b2 | Conditions.cs:36:13:36:14 | access to local variable b2 | +| Conditions.cs:36:13:36:22 | Boolean b2 = ... | Conditions.cs:36:13:36:14 | access to local variable b2 | | Conditions.cs:36:18:36:22 | false | Conditions.cs:36:18:36:22 | false | | Conditions.cs:37:9:38:20 | if (...) ... | Conditions.cs:37:9:38:20 | if (...) ... | | Conditions.cs:37:13:37:14 | access to parameter b1 | Conditions.cs:37:13:37:14 | access to parameter b1 | -| Conditions.cs:38:13:38:19 | ... = ... | Conditions.cs:38:18:38:19 | access to parameter b1 | +| Conditions.cs:38:13:38:14 | access to local variable b2 | Conditions.cs:38:13:38:14 | access to local variable b2 | +| Conditions.cs:38:13:38:19 | ... = ... | Conditions.cs:38:13:38:14 | access to local variable b2 | | Conditions.cs:38:13:38:20 | ...; | Conditions.cs:38:13:38:20 | ...; | | Conditions.cs:38:18:38:19 | access to parameter b1 | Conditions.cs:38:18:38:19 | access to parameter b1 | | Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:39:9:40:16 | if (...) ... | @@ -1015,9 +1123,12 @@ | Conditions.cs:42:13:42:16 | ...; | Conditions.cs:42:13:42:16 | ...; | | Conditions.cs:43:9:43:17 | return ...; | Conditions.cs:43:16:43:16 | access to local variable x | | Conditions.cs:43:16:43:16 | access to local variable x | Conditions.cs:43:16:43:16 | access to local variable x | +| Conditions.cs:46:17:46:17 | b | Conditions.cs:46:17:46:17 | b | +| Conditions.cs:46:24:46:24 | x | Conditions.cs:46:24:46:24 | x | | Conditions.cs:47:5:55:5 | {...} | Conditions.cs:47:5:55:5 | {...} | | Conditions.cs:48:9:48:18 | ... ...; | Conditions.cs:48:9:48:18 | ... ...; | -| Conditions.cs:48:13:48:17 | Int32 y = ... | Conditions.cs:48:17:48:17 | 0 | +| Conditions.cs:48:13:48:13 | access to local variable y | Conditions.cs:48:13:48:13 | access to local variable y | +| Conditions.cs:48:13:48:17 | Int32 y = ... | Conditions.cs:48:13:48:13 | access to local variable y | | Conditions.cs:48:17:48:17 | 0 | Conditions.cs:48:17:48:17 | 0 | | Conditions.cs:49:9:53:9 | while (...) ... | Conditions.cs:49:9:53:9 | while (...) ... | | Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:49:16:49:16 | access to parameter x | @@ -1032,9 +1143,12 @@ | Conditions.cs:52:17:52:20 | ...; | Conditions.cs:52:17:52:20 | ...; | | Conditions.cs:54:9:54:17 | return ...; | Conditions.cs:54:16:54:16 | access to local variable y | | Conditions.cs:54:16:54:16 | access to local variable y | Conditions.cs:54:16:54:16 | access to local variable y | +| Conditions.cs:57:17:57:17 | b | Conditions.cs:57:17:57:17 | b | +| Conditions.cs:57:24:57:24 | x | Conditions.cs:57:24:57:24 | x | | Conditions.cs:58:5:68:5 | {...} | Conditions.cs:58:5:68:5 | {...} | | Conditions.cs:59:9:59:18 | ... ...; | Conditions.cs:59:9:59:18 | ... ...; | -| Conditions.cs:59:13:59:17 | Int32 y = ... | Conditions.cs:59:17:59:17 | 0 | +| Conditions.cs:59:13:59:13 | access to local variable y | Conditions.cs:59:13:59:13 | access to local variable y | +| Conditions.cs:59:13:59:17 | Int32 y = ... | Conditions.cs:59:13:59:13 | access to local variable y | | Conditions.cs:59:17:59:17 | 0 | Conditions.cs:59:17:59:17 | 0 | | Conditions.cs:60:9:64:9 | while (...) ... | Conditions.cs:60:9:64:9 | while (...) ... | | Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:60:16:60:16 | access to parameter x | @@ -1054,17 +1168,20 @@ | Conditions.cs:66:13:66:16 | ...; | Conditions.cs:66:13:66:16 | ...; | | Conditions.cs:67:9:67:17 | return ...; | Conditions.cs:67:16:67:16 | access to local variable y | | Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:67:16:67:16 | access to local variable y | +| Conditions.cs:70:21:70:22 | ss | Conditions.cs:70:21:70:22 | ss | | Conditions.cs:71:5:84:5 | {...} | Conditions.cs:71:5:84:5 | {...} | | Conditions.cs:72:9:72:30 | ... ...; | Conditions.cs:72:9:72:30 | ... ...; | -| Conditions.cs:72:13:72:29 | Boolean b = ... | Conditions.cs:72:17:72:18 | access to parameter ss | +| Conditions.cs:72:13:72:13 | access to local variable b | Conditions.cs:72:13:72:13 | access to local variable b | +| Conditions.cs:72:13:72:29 | Boolean b = ... | Conditions.cs:72:13:72:13 | access to local variable b | | Conditions.cs:72:17:72:18 | access to parameter ss | Conditions.cs:72:17:72:18 | access to parameter ss | | Conditions.cs:72:17:72:25 | access to property Length | Conditions.cs:72:17:72:18 | access to parameter ss | | Conditions.cs:72:17:72:29 | ... > ... | Conditions.cs:72:17:72:18 | access to parameter ss | | Conditions.cs:72:29:72:29 | 0 | Conditions.cs:72:29:72:29 | 0 | | Conditions.cs:73:9:73:18 | ... ...; | Conditions.cs:73:9:73:18 | ... ...; | -| Conditions.cs:73:13:73:17 | Int32 x = ... | Conditions.cs:73:17:73:17 | 0 | +| Conditions.cs:73:13:73:13 | access to local variable x | Conditions.cs:73:13:73:13 | access to local variable x | +| Conditions.cs:73:13:73:17 | Int32 x = ... | Conditions.cs:73:13:73:13 | access to local variable x | | Conditions.cs:73:17:73:17 | 0 | Conditions.cs:73:17:73:17 | 0 | -| Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:74:27:74:28 | access to parameter ss | +| Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | | Conditions.cs:74:22:74:22 | String _ | Conditions.cs:74:22:74:22 | String _ | | Conditions.cs:74:27:74:28 | access to parameter ss | Conditions.cs:74:27:74:28 | access to parameter ss | | Conditions.cs:75:9:80:9 | {...} | Conditions.cs:75:9:80:9 | {...} | @@ -1077,7 +1194,8 @@ | Conditions.cs:78:17:78:17 | access to local variable x | Conditions.cs:78:17:78:17 | access to local variable x | | Conditions.cs:78:17:78:21 | ... > ... | Conditions.cs:78:17:78:17 | access to local variable x | | Conditions.cs:78:21:78:21 | 0 | Conditions.cs:78:21:78:21 | 0 | -| Conditions.cs:79:17:79:25 | ... = ... | Conditions.cs:79:21:79:25 | false | +| Conditions.cs:79:17:79:17 | access to local variable b | Conditions.cs:79:17:79:17 | access to local variable b | +| Conditions.cs:79:17:79:25 | ... = ... | Conditions.cs:79:17:79:17 | access to local variable b | | Conditions.cs:79:17:79:26 | ...; | Conditions.cs:79:17:79:26 | ...; | | Conditions.cs:79:21:79:25 | false | Conditions.cs:79:21:79:25 | false | | Conditions.cs:81:9:82:16 | if (...) ... | Conditions.cs:81:9:82:16 | if (...) ... | @@ -1087,17 +1205,20 @@ | Conditions.cs:82:13:82:16 | ...; | Conditions.cs:82:13:82:16 | ...; | | Conditions.cs:83:9:83:17 | return ...; | Conditions.cs:83:16:83:16 | access to local variable x | | Conditions.cs:83:16:83:16 | access to local variable x | Conditions.cs:83:16:83:16 | access to local variable x | +| Conditions.cs:86:21:86:22 | ss | Conditions.cs:86:21:86:22 | ss | | Conditions.cs:87:5:100:5 | {...} | Conditions.cs:87:5:100:5 | {...} | | Conditions.cs:88:9:88:30 | ... ...; | Conditions.cs:88:9:88:30 | ... ...; | -| Conditions.cs:88:13:88:29 | Boolean b = ... | Conditions.cs:88:17:88:18 | access to parameter ss | +| Conditions.cs:88:13:88:13 | access to local variable b | Conditions.cs:88:13:88:13 | access to local variable b | +| Conditions.cs:88:13:88:29 | Boolean b = ... | Conditions.cs:88:13:88:13 | access to local variable b | | Conditions.cs:88:17:88:18 | access to parameter ss | Conditions.cs:88:17:88:18 | access to parameter ss | | Conditions.cs:88:17:88:25 | access to property Length | Conditions.cs:88:17:88:18 | access to parameter ss | | Conditions.cs:88:17:88:29 | ... > ... | Conditions.cs:88:17:88:18 | access to parameter ss | | Conditions.cs:88:29:88:29 | 0 | Conditions.cs:88:29:88:29 | 0 | | Conditions.cs:89:9:89:18 | ... ...; | Conditions.cs:89:9:89:18 | ... ...; | -| Conditions.cs:89:13:89:17 | Int32 x = ... | Conditions.cs:89:17:89:17 | 0 | +| Conditions.cs:89:13:89:13 | access to local variable x | Conditions.cs:89:13:89:13 | access to local variable x | +| Conditions.cs:89:13:89:17 | Int32 x = ... | Conditions.cs:89:13:89:13 | access to local variable x | | Conditions.cs:89:17:89:17 | 0 | Conditions.cs:89:17:89:17 | 0 | -| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:90:27:90:28 | access to parameter ss | +| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | | Conditions.cs:90:22:90:22 | String _ | Conditions.cs:90:22:90:22 | String _ | | Conditions.cs:90:27:90:28 | access to parameter ss | Conditions.cs:90:27:90:28 | access to parameter ss | | Conditions.cs:91:9:98:9 | {...} | Conditions.cs:91:9:98:9 | {...} | @@ -1110,7 +1231,8 @@ | Conditions.cs:94:17:94:17 | access to local variable x | Conditions.cs:94:17:94:17 | access to local variable x | | Conditions.cs:94:17:94:21 | ... > ... | Conditions.cs:94:17:94:17 | access to local variable x | | Conditions.cs:94:21:94:21 | 0 | Conditions.cs:94:21:94:21 | 0 | -| Conditions.cs:95:17:95:25 | ... = ... | Conditions.cs:95:21:95:25 | false | +| Conditions.cs:95:17:95:17 | access to local variable b | Conditions.cs:95:17:95:17 | access to local variable b | +| Conditions.cs:95:17:95:25 | ... = ... | Conditions.cs:95:17:95:17 | access to local variable b | | Conditions.cs:95:17:95:26 | ...; | Conditions.cs:95:17:95:26 | ...; | | Conditions.cs:95:21:95:25 | false | Conditions.cs:95:21:95:25 | false | | Conditions.cs:96:13:97:20 | if (...) ... | Conditions.cs:96:13:97:20 | if (...) ... | @@ -1120,9 +1242,11 @@ | Conditions.cs:97:17:97:20 | ...; | Conditions.cs:97:17:97:20 | ...; | | Conditions.cs:99:9:99:17 | return ...; | Conditions.cs:99:16:99:16 | access to local variable x | | Conditions.cs:99:16:99:16 | access to local variable x | Conditions.cs:99:16:99:16 | access to local variable x | +| Conditions.cs:102:20:102:20 | b | Conditions.cs:102:20:102:20 | b | | Conditions.cs:103:5:111:5 | {...} | Conditions.cs:103:5:111:5 | {...} | | Conditions.cs:104:9:104:29 | ... ...; | Conditions.cs:104:9:104:29 | ... ...; | -| Conditions.cs:104:13:104:28 | String x = ... | Conditions.cs:104:17:104:17 | access to parameter b | +| Conditions.cs:104:13:104:13 | access to local variable x | Conditions.cs:104:13:104:13 | access to local variable x | +| Conditions.cs:104:13:104:28 | String x = ... | Conditions.cs:104:13:104:13 | access to local variable x | | Conditions.cs:104:17:104:17 | access to parameter b | Conditions.cs:104:17:104:17 | access to parameter b | | Conditions.cs:104:17:104:28 | call to method ToString | Conditions.cs:104:17:104:17 | access to parameter b | | Conditions.cs:105:9:106:20 | if (...) ... | Conditions.cs:105:9:106:20 | if (...) ... | @@ -1137,7 +1261,7 @@ | Conditions.cs:107:13:107:24 | ... > ... | Conditions.cs:107:13:107:13 | access to local variable x | | Conditions.cs:107:24:107:24 | 0 | Conditions.cs:107:24:107:24 | 0 | | Conditions.cs:108:13:109:24 | if (...) ... | Conditions.cs:108:13:109:24 | if (...) ... | -| Conditions.cs:108:17:108:18 | !... | Conditions.cs:108:18:108:18 | access to parameter b | +| Conditions.cs:108:17:108:18 | !... | Conditions.cs:108:17:108:18 | !... | | Conditions.cs:108:18:108:18 | access to parameter b | Conditions.cs:108:18:108:18 | access to parameter b | | Conditions.cs:109:17:109:17 | access to local variable x | Conditions.cs:109:17:109:17 | access to local variable x | | Conditions.cs:109:17:109:23 | ... += ... | Conditions.cs:109:17:109:17 | access to local variable x | @@ -1145,12 +1269,15 @@ | Conditions.cs:109:22:109:23 | "" | Conditions.cs:109:22:109:23 | "" | | Conditions.cs:110:9:110:17 | return ...; | Conditions.cs:110:16:110:16 | access to local variable x | | Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:110:16:110:16 | access to local variable x | +| Conditions.cs:113:22:113:25 | args | Conditions.cs:113:22:113:25 | args | | Conditions.cs:114:5:124:5 | {...} | Conditions.cs:114:5:124:5 | {...} | | Conditions.cs:115:9:115:24 | ... ...; | Conditions.cs:115:9:115:24 | ... ...; | -| Conditions.cs:115:16:115:23 | String s = ... | Conditions.cs:115:20:115:23 | null | +| Conditions.cs:115:16:115:16 | access to local variable s | Conditions.cs:115:16:115:16 | access to local variable s | +| Conditions.cs:115:16:115:23 | String s = ... | Conditions.cs:115:16:115:16 | access to local variable s | | Conditions.cs:115:20:115:23 | null | Conditions.cs:115:20:115:23 | null | | Conditions.cs:116:9:123:9 | for (...;...;...) ... | Conditions.cs:116:9:123:9 | for (...;...;...) ... | -| Conditions.cs:116:18:116:22 | Int32 i = ... | Conditions.cs:116:22:116:22 | 0 | +| Conditions.cs:116:18:116:18 | access to local variable i | Conditions.cs:116:18:116:18 | access to local variable i | +| Conditions.cs:116:18:116:22 | Int32 i = ... | Conditions.cs:116:18:116:18 | access to local variable i | | Conditions.cs:116:22:116:22 | 0 | Conditions.cs:116:22:116:22 | 0 | | Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:116:25:116:25 | access to local variable i | | Conditions.cs:116:25:116:39 | ... < ... | Conditions.cs:116:25:116:25 | access to local variable i | @@ -1160,7 +1287,8 @@ | Conditions.cs:116:42:116:44 | ...++ | Conditions.cs:116:42:116:42 | access to local variable i | | Conditions.cs:117:9:123:9 | {...} | Conditions.cs:117:9:123:9 | {...} | | Conditions.cs:118:13:118:44 | ... ...; | Conditions.cs:118:13:118:44 | ... ...; | -| Conditions.cs:118:17:118:43 | Boolean last = ... | Conditions.cs:118:24:118:24 | access to local variable i | +| Conditions.cs:118:17:118:20 | access to local variable last | Conditions.cs:118:17:118:20 | access to local variable last | +| Conditions.cs:118:17:118:43 | Boolean last = ... | Conditions.cs:118:17:118:20 | access to local variable last | | Conditions.cs:118:24:118:24 | access to local variable i | Conditions.cs:118:24:118:24 | access to local variable i | | Conditions.cs:118:24:118:43 | ... == ... | Conditions.cs:118:24:118:24 | access to local variable i | | Conditions.cs:118:29:118:32 | access to parameter args | Conditions.cs:118:29:118:32 | access to parameter args | @@ -1168,14 +1296,16 @@ | Conditions.cs:118:29:118:43 | ... - ... | Conditions.cs:118:29:118:32 | access to parameter args | | Conditions.cs:118:43:118:43 | 1 | Conditions.cs:118:43:118:43 | 1 | | Conditions.cs:119:13:120:23 | if (...) ... | Conditions.cs:119:13:120:23 | if (...) ... | -| Conditions.cs:119:17:119:21 | !... | Conditions.cs:119:18:119:21 | access to local variable last | +| Conditions.cs:119:17:119:21 | !... | Conditions.cs:119:17:119:21 | !... | | Conditions.cs:119:18:119:21 | access to local variable last | Conditions.cs:119:18:119:21 | access to local variable last | -| Conditions.cs:120:17:120:22 | ... = ... | Conditions.cs:120:21:120:22 | "" | +| Conditions.cs:120:17:120:17 | access to local variable s | Conditions.cs:120:17:120:17 | access to local variable s | +| Conditions.cs:120:17:120:22 | ... = ... | Conditions.cs:120:17:120:17 | access to local variable s | | Conditions.cs:120:17:120:23 | ...; | Conditions.cs:120:17:120:23 | ...; | | Conditions.cs:120:21:120:22 | "" | Conditions.cs:120:21:120:22 | "" | | Conditions.cs:121:13:122:25 | if (...) ... | Conditions.cs:121:13:122:25 | if (...) ... | | Conditions.cs:121:17:121:20 | access to local variable last | Conditions.cs:121:17:121:20 | access to local variable last | -| Conditions.cs:122:17:122:24 | ... = ... | Conditions.cs:122:21:122:24 | null | +| Conditions.cs:122:17:122:17 | access to local variable s | Conditions.cs:122:17:122:17 | access to local variable s | +| Conditions.cs:122:17:122:24 | ... = ... | Conditions.cs:122:17:122:17 | access to local variable s | | Conditions.cs:122:17:122:25 | ...; | Conditions.cs:122:17:122:25 | ...; | | Conditions.cs:122:21:122:24 | null | Conditions.cs:122:21:122:24 | null | | Conditions.cs:130:5:141:5 | {...} | Conditions.cs:130:5:141:5 | {...} | @@ -1194,11 +1324,13 @@ | Conditions.cs:137:21:137:26 | this access | Conditions.cs:137:21:137:26 | this access | | Conditions.cs:137:21:137:37 | call to method ToString | Conditions.cs:137:21:137:26 | this access | | Conditions.cs:137:21:137:38 | ...; | Conditions.cs:137:21:137:38 | ...; | +| Conditions.cs:143:19:143:19 | b | Conditions.cs:143:19:143:19 | b | | Conditions.cs:144:5:150:5 | {...} | Conditions.cs:144:5:150:5 | {...} | | Conditions.cs:145:9:145:30 | ... ...; | Conditions.cs:145:9:145:30 | ... ...; | -| Conditions.cs:145:13:145:29 | String s = ... | Conditions.cs:145:17:145:17 | access to parameter b | +| Conditions.cs:145:13:145:13 | access to local variable s | Conditions.cs:145:13:145:13 | access to local variable s | +| Conditions.cs:145:13:145:29 | String s = ... | Conditions.cs:145:13:145:13 | access to local variable s | | Conditions.cs:145:17:145:17 | access to parameter b | Conditions.cs:145:17:145:17 | access to parameter b | -| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:145:17:145:17 | access to parameter b | +| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:145:17:145:29 | ... ? ... : ... | | Conditions.cs:145:21:145:23 | "a" | Conditions.cs:145:21:145:23 | "a" | | Conditions.cs:145:27:145:29 | "b" | Conditions.cs:145:27:145:29 | "b" | | Conditions.cs:146:9:149:49 | if (...) ... | Conditions.cs:146:9:149:49 | if (...) ... | @@ -1215,6 +1347,24 @@ | Conditions.cs:149:40:149:43 | "b = " | Conditions.cs:149:40:149:43 | "b = " | | Conditions.cs:149:44:149:46 | {...} | Conditions.cs:149:45:149:45 | access to local variable s | | Conditions.cs:149:45:149:45 | access to local variable s | Conditions.cs:149:45:149:45 | access to local variable s | +| DefaultParam.cs:1:7:1:18 | call to constructor Object | DefaultParam.cs:1:7:1:18 | call to constructor Object | +| DefaultParam.cs:1:7:1:18 | call to method | DefaultParam.cs:1:7:1:18 | this access | +| DefaultParam.cs:1:7:1:18 | this access | DefaultParam.cs:1:7:1:18 | this access | +| DefaultParam.cs:1:7:1:18 | {...} | DefaultParam.cs:1:7:1:18 | {...} | +| DefaultParam.cs:3:20:3:20 | b | DefaultParam.cs:3:20:3:20 | b | +| DefaultParam.cs:3:30:3:30 | s | DefaultParam.cs:3:30:3:30 | s | +| DefaultParam.cs:3:34:3:35 | "" | DefaultParam.cs:3:34:3:35 | "" | +| DefaultParam.cs:3:42:3:42 | i | DefaultParam.cs:3:42:3:42 | i | +| DefaultParam.cs:3:46:3:46 | 0 | DefaultParam.cs:3:46:3:46 | 0 | +| DefaultParam.cs:4:5:6:5 | {...} | DefaultParam.cs:4:5:6:5 | {...} | +| DefaultParam.cs:5:9:5:25 | return ...; | DefaultParam.cs:5:16:5:16 | access to parameter b | +| DefaultParam.cs:5:16:5:16 | (...) ... | DefaultParam.cs:5:16:5:16 | access to parameter b | +| DefaultParam.cs:5:16:5:16 | access to parameter b | DefaultParam.cs:5:16:5:16 | access to parameter b | +| DefaultParam.cs:5:16:5:20 | ... + ... | DefaultParam.cs:5:16:5:16 | access to parameter b | +| DefaultParam.cs:5:16:5:24 | ... + ... | DefaultParam.cs:5:16:5:16 | access to parameter b | +| DefaultParam.cs:5:20:5:20 | access to parameter s | DefaultParam.cs:5:20:5:20 | access to parameter s | +| DefaultParam.cs:5:24:5:24 | (...) ... | DefaultParam.cs:5:24:5:24 | access to parameter i | +| DefaultParam.cs:5:24:5:24 | access to parameter i | DefaultParam.cs:5:24:5:24 | access to parameter i | | ExitMethods.cs:6:7:6:17 | call to constructor Object | ExitMethods.cs:6:7:6:17 | call to constructor Object | | ExitMethods.cs:6:7:6:17 | call to method | ExitMethods.cs:6:7:6:17 | this access | | ExitMethods.cs:6:7:6:17 | this access | ExitMethods.cs:6:7:6:17 | this access | @@ -1233,17 +1383,14 @@ | ExitMethods.cs:22:9:22:25 | call to method ErrorAlways | ExitMethods.cs:22:21:22:24 | true | | ExitMethods.cs:22:9:22:26 | ...; | ExitMethods.cs:22:9:22:26 | ...; | | ExitMethods.cs:22:21:22:24 | true | ExitMethods.cs:22:21:22:24 | true | -| ExitMethods.cs:23:9:23:15 | return ...; | ExitMethods.cs:23:9:23:15 | return ...; | | ExitMethods.cs:27:5:30:5 | {...} | ExitMethods.cs:27:5:30:5 | {...} | | ExitMethods.cs:28:9:28:14 | call to method Exit | ExitMethods.cs:28:9:28:14 | this access | | ExitMethods.cs:28:9:28:14 | this access | ExitMethods.cs:28:9:28:14 | this access | | ExitMethods.cs:28:9:28:15 | ...; | ExitMethods.cs:28:9:28:15 | ...; | -| ExitMethods.cs:29:9:29:15 | return ...; | ExitMethods.cs:29:9:29:15 | return ...; | | ExitMethods.cs:33:5:36:5 | {...} | ExitMethods.cs:33:5:36:5 | {...} | | ExitMethods.cs:34:9:34:25 | call to method ApplicationExit | ExitMethods.cs:34:9:34:25 | this access | | ExitMethods.cs:34:9:34:25 | this access | ExitMethods.cs:34:9:34:25 | this access | | ExitMethods.cs:34:9:34:26 | ...; | ExitMethods.cs:34:9:34:26 | ...; | -| ExitMethods.cs:35:9:35:15 | return ...; | ExitMethods.cs:35:9:35:15 | return ...; | | ExitMethods.cs:39:5:52:5 | {...} | ExitMethods.cs:39:5:52:5 | {...} | | ExitMethods.cs:40:9:51:9 | try {...} ... | ExitMethods.cs:40:9:51:9 | try {...} ... | | ExitMethods.cs:41:9:43:9 | {...} | ExitMethods.cs:41:9:43:9 | {...} | @@ -1259,16 +1406,16 @@ | ExitMethods.cs:55:5:58:5 | {...} | ExitMethods.cs:55:5:58:5 | {...} | | ExitMethods.cs:56:9:56:22 | call to method ErrorAlways2 | ExitMethods.cs:56:9:56:22 | call to method ErrorAlways2 | | ExitMethods.cs:56:9:56:23 | ...; | ExitMethods.cs:56:9:56:23 | ...; | -| ExitMethods.cs:57:9:57:15 | return ...; | ExitMethods.cs:57:9:57:15 | return ...; | | ExitMethods.cs:61:5:64:5 | {...} | ExitMethods.cs:61:5:64:5 | {...} | | ExitMethods.cs:62:9:62:22 | call to method ErrorAlways3 | ExitMethods.cs:62:9:62:22 | call to method ErrorAlways3 | | ExitMethods.cs:62:9:62:23 | ...; | ExitMethods.cs:62:9:62:23 | ...; | -| ExitMethods.cs:63:9:63:15 | return ...; | ExitMethods.cs:63:9:63:15 | return ...; | +| ExitMethods.cs:66:33:66:33 | b | ExitMethods.cs:66:33:66:33 | b | | ExitMethods.cs:67:5:70:5 | {...} | ExitMethods.cs:67:5:70:5 | {...} | | ExitMethods.cs:68:9:69:34 | if (...) ... | ExitMethods.cs:68:9:69:34 | if (...) ... | | ExitMethods.cs:68:13:68:13 | access to parameter b | ExitMethods.cs:68:13:68:13 | access to parameter b | | ExitMethods.cs:69:13:69:34 | throw ...; | ExitMethods.cs:69:19:69:33 | object creation of type Exception | | ExitMethods.cs:69:19:69:33 | object creation of type Exception | ExitMethods.cs:69:19:69:33 | object creation of type Exception | +| ExitMethods.cs:72:34:72:34 | b | ExitMethods.cs:72:34:72:34 | b | | ExitMethods.cs:73:5:78:5 | {...} | ExitMethods.cs:73:5:78:5 | {...} | | ExitMethods.cs:74:9:77:45 | if (...) ... | ExitMethods.cs:74:9:77:45 | if (...) ... | | ExitMethods.cs:74:13:74:13 | access to parameter b | ExitMethods.cs:74:13:74:13 | access to parameter b | @@ -1299,11 +1446,12 @@ | ExitMethods.cs:106:5:108:5 | {...} | ExitMethods.cs:106:5:108:5 | {...} | | ExitMethods.cs:107:9:107:47 | call to method Exit | ExitMethods.cs:107:9:107:47 | call to method Exit | | ExitMethods.cs:107:9:107:48 | ...; | ExitMethods.cs:107:9:107:48 | ...; | +| ExitMethods.cs:110:31:110:35 | input | ExitMethods.cs:110:31:110:35 | input | | ExitMethods.cs:111:5:113:5 | {...} | ExitMethods.cs:111:5:113:5 | {...} | -| ExitMethods.cs:112:9:112:77 | return ...; | ExitMethods.cs:112:16:112:20 | access to parameter input | +| ExitMethods.cs:112:9:112:77 | return ...; | ExitMethods.cs:112:16:112:76 | ... ? ... : ... | | ExitMethods.cs:112:16:112:20 | access to parameter input | ExitMethods.cs:112:16:112:20 | access to parameter input | | ExitMethods.cs:112:16:112:25 | ... != ... | ExitMethods.cs:112:16:112:20 | access to parameter input | -| ExitMethods.cs:112:16:112:76 | ... ? ... : ... | ExitMethods.cs:112:16:112:20 | access to parameter input | +| ExitMethods.cs:112:16:112:76 | ... ? ... : ... | ExitMethods.cs:112:16:112:76 | ... ? ... : ... | | ExitMethods.cs:112:25:112:25 | 0 | ExitMethods.cs:112:25:112:25 | 0 | | ExitMethods.cs:112:25:112:25 | (...) ... | ExitMethods.cs:112:25:112:25 | 0 | | ExitMethods.cs:112:29:112:29 | 1 | ExitMethods.cs:112:29:112:29 | 1 | @@ -1313,11 +1461,12 @@ | ExitMethods.cs:112:41:112:76 | throw ... | ExitMethods.cs:112:69:112:75 | "input" | | ExitMethods.cs:112:47:112:76 | object creation of type ArgumentException | ExitMethods.cs:112:69:112:75 | "input" | | ExitMethods.cs:112:69:112:75 | "input" | ExitMethods.cs:112:69:112:75 | "input" | +| ExitMethods.cs:115:43:115:43 | s | ExitMethods.cs:115:43:115:43 | s | | ExitMethods.cs:116:5:118:5 | {...} | ExitMethods.cs:116:5:118:5 | {...} | -| ExitMethods.cs:117:9:117:39 | return ...; | ExitMethods.cs:117:16:117:16 | access to parameter s | +| ExitMethods.cs:117:9:117:39 | return ...; | ExitMethods.cs:117:16:117:38 | ... ? ... : ... | | ExitMethods.cs:117:16:117:16 | access to parameter s | ExitMethods.cs:117:16:117:16 | access to parameter s | | ExitMethods.cs:117:16:117:30 | call to method Contains | ExitMethods.cs:117:16:117:16 | access to parameter s | -| ExitMethods.cs:117:16:117:38 | ... ? ... : ... | ExitMethods.cs:117:16:117:16 | access to parameter s | +| ExitMethods.cs:117:16:117:38 | ... ? ... : ... | ExitMethods.cs:117:16:117:38 | ... ? ... : ... | | ExitMethods.cs:117:27:117:29 | - | ExitMethods.cs:117:27:117:29 | - | | ExitMethods.cs:117:34:117:34 | 0 | ExitMethods.cs:117:34:117:34 | 0 | | ExitMethods.cs:117:38:117:38 | 1 | ExitMethods.cs:117:38:117:38 | 1 | @@ -1325,16 +1474,11 @@ | ExitMethods.cs:122:9:122:28 | call to method IsTrue | ExitMethods.cs:122:23:122:27 | false | | ExitMethods.cs:122:9:122:29 | ...; | ExitMethods.cs:122:9:122:29 | ...; | | ExitMethods.cs:122:23:122:27 | false | ExitMethods.cs:122:23:122:27 | false | -| ExitMethods.cs:123:9:123:18 | ... ...; | ExitMethods.cs:123:9:123:18 | ... ...; | -| ExitMethods.cs:123:13:123:17 | Int32 x = ... | ExitMethods.cs:123:17:123:17 | 0 | -| ExitMethods.cs:123:17:123:17 | 0 | ExitMethods.cs:123:17:123:17 | 0 | | ExitMethods.cs:127:5:130:5 | {...} | ExitMethods.cs:127:5:130:5 | {...} | | ExitMethods.cs:128:9:128:26 | call to method FailingAssertion | ExitMethods.cs:128:9:128:26 | this access | | ExitMethods.cs:128:9:128:26 | this access | ExitMethods.cs:128:9:128:26 | this access | | ExitMethods.cs:128:9:128:27 | ...; | ExitMethods.cs:128:9:128:27 | ...; | -| ExitMethods.cs:129:9:129:18 | ... ...; | ExitMethods.cs:129:9:129:18 | ... ...; | -| ExitMethods.cs:129:13:129:17 | Int32 x = ... | ExitMethods.cs:129:17:129:17 | 0 | -| ExitMethods.cs:129:17:129:17 | 0 | ExitMethods.cs:129:17:129:17 | 0 | +| ExitMethods.cs:132:27:132:27 | b | ExitMethods.cs:132:27:132:27 | b | | ExitMethods.cs:132:33:132:49 | call to method IsFalse | ExitMethods.cs:132:48:132:48 | access to parameter b | | ExitMethods.cs:132:48:132:48 | access to parameter b | ExitMethods.cs:132:48:132:48 | access to parameter b | | ExitMethods.cs:135:5:138:5 | {...} | ExitMethods.cs:135:5:138:5 | {...} | @@ -1342,9 +1486,8 @@ | ExitMethods.cs:136:9:136:25 | this access | ExitMethods.cs:136:9:136:25 | this access | | ExitMethods.cs:136:9:136:26 | ...; | ExitMethods.cs:136:9:136:26 | ...; | | ExitMethods.cs:136:21:136:24 | true | ExitMethods.cs:136:21:136:24 | true | -| ExitMethods.cs:137:9:137:18 | ... ...; | ExitMethods.cs:137:9:137:18 | ... ...; | -| ExitMethods.cs:137:13:137:17 | Int32 x = ... | ExitMethods.cs:137:17:137:17 | 0 | -| ExitMethods.cs:137:17:137:17 | 0 | ExitMethods.cs:137:17:137:17 | 0 | +| ExitMethods.cs:140:49:140:49 | b | ExitMethods.cs:140:49:140:49 | b | +| ExitMethods.cs:140:70:140:70 | e | ExitMethods.cs:140:70:140:70 | e | | ExitMethods.cs:141:5:147:5 | {...} | ExitMethods.cs:141:5:147:5 | {...} | | ExitMethods.cs:142:9:145:53 | if (...) ... | ExitMethods.cs:142:9:145:53 | if (...) ... | | ExitMethods.cs:142:13:142:13 | access to parameter b | ExitMethods.cs:142:13:142:13 | access to parameter b | @@ -1355,13 +1498,13 @@ | ExitMethods.cs:145:13:145:52 | call to method Throw | ExitMethods.cs:145:43:145:43 | access to parameter e | | ExitMethods.cs:145:13:145:53 | ...; | ExitMethods.cs:145:13:145:53 | ...; | | ExitMethods.cs:145:43:145:43 | access to parameter e | ExitMethods.cs:145:43:145:43 | access to parameter e | -| ExitMethods.cs:146:9:146:33 | call to method WriteLine | ExitMethods.cs:146:27:146:32 | "dead" | -| ExitMethods.cs:146:9:146:34 | ...; | ExitMethods.cs:146:9:146:34 | ...; | -| ExitMethods.cs:146:27:146:32 | "dead" | ExitMethods.cs:146:27:146:32 | "dead" | +| Extensions.cs:5:43:5:43 | s | Extensions.cs:5:43:5:43 | s | | Extensions.cs:6:5:8:5 | {...} | Extensions.cs:6:5:8:5 | {...} | | Extensions.cs:7:9:7:30 | return ...; | Extensions.cs:7:28:7:28 | access to parameter s | | Extensions.cs:7:16:7:29 | call to method Parse | Extensions.cs:7:28:7:28 | access to parameter s | | Extensions.cs:7:28:7:28 | access to parameter s | Extensions.cs:7:28:7:28 | access to parameter s | +| Extensions.cs:10:43:10:43 | s | Extensions.cs:10:43:10:43 | s | +| Extensions.cs:10:65:10:65 | f | Extensions.cs:10:65:10:65 | f | | Extensions.cs:11:5:13:5 | {...} | Extensions.cs:11:5:13:5 | {...} | | Extensions.cs:12:9:12:20 | return ...; | Extensions.cs:12:16:12:16 | access to parameter f | | Extensions.cs:12:16:12:16 | access to parameter f | Extensions.cs:12:16:12:16 | access to parameter f | @@ -1369,6 +1512,7 @@ | Extensions.cs:12:18:12:18 | access to parameter s | Extensions.cs:12:18:12:18 | access to parameter s | | Extensions.cs:15:40:15:51 | call to method ToInt32 | Extensions.cs:15:48:15:50 | "0" | | Extensions.cs:15:48:15:50 | "0" | Extensions.cs:15:48:15:50 | "0" | +| Extensions.cs:20:29:20:29 | s | Extensions.cs:20:29:20:29 | s | | Extensions.cs:21:5:26:5 | {...} | Extensions.cs:21:5:26:5 | {...} | | Extensions.cs:22:9:22:9 | access to parameter s | Extensions.cs:22:9:22:9 | access to parameter s | | Extensions.cs:22:9:22:19 | call to method ToInt32 | Extensions.cs:22:9:22:9 | access to parameter s | @@ -1458,7 +1602,8 @@ | Finally.cs:70:31:70:39 | "Finally" | Finally.cs:70:31:70:39 | "Finally" | | Finally.cs:75:5:101:5 | {...} | Finally.cs:75:5:101:5 | {...} | | Finally.cs:76:9:76:19 | ... ...; | Finally.cs:76:9:76:19 | ... ...; | -| Finally.cs:76:13:76:18 | Int32 i = ... | Finally.cs:76:17:76:18 | 10 | +| Finally.cs:76:13:76:13 | access to local variable i | Finally.cs:76:13:76:13 | access to local variable i | +| Finally.cs:76:13:76:18 | Int32 i = ... | Finally.cs:76:13:76:13 | access to local variable i | | Finally.cs:76:17:76:18 | 10 | Finally.cs:76:17:76:18 | 10 | | Finally.cs:77:9:100:9 | while (...) ... | Finally.cs:77:9:100:9 | while (...) ... | | Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:77:16:77:16 | access to local variable i | @@ -1515,7 +1660,7 @@ | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | | Finally.cs:113:9:118:9 | {...} | Finally.cs:113:9:118:9 | {...} | | Finally.cs:114:13:115:41 | if (...) ... | Finally.cs:114:13:115:41 | if (...) ... | -| Finally.cs:114:17:114:36 | !... | Finally.cs:114:19:114:23 | this access | +| Finally.cs:114:17:114:36 | !... | Finally.cs:114:17:114:36 | !... | | Finally.cs:114:19:114:23 | access to field Field | Finally.cs:114:19:114:23 | this access | | Finally.cs:114:19:114:23 | this access | Finally.cs:114:19:114:23 | this access | | Finally.cs:114:19:114:30 | access to property Length | Finally.cs:114:19:114:23 | this access | @@ -1538,14 +1683,12 @@ | Finally.cs:123:9:130:9 | try {...} ... | Finally.cs:123:9:130:9 | try {...} ... | | Finally.cs:124:9:126:9 | {...} | Finally.cs:124:9:126:9 | {...} | | Finally.cs:125:13:125:41 | ... ...; | Finally.cs:125:13:125:41 | ... ...; | -| Finally.cs:125:17:125:40 | Double temp = ... | Finally.cs:125:24:125:24 | 0 | +| Finally.cs:125:17:125:20 | access to local variable temp | Finally.cs:125:17:125:20 | access to local variable temp | +| Finally.cs:125:17:125:40 | Double temp = ... | Finally.cs:125:17:125:20 | access to local variable temp | | Finally.cs:125:24:125:24 | 0 | Finally.cs:125:24:125:24 | 0 | | Finally.cs:125:24:125:24 | (...) ... | Finally.cs:125:24:125:24 | 0 | | Finally.cs:125:24:125:40 | ... / ... | Finally.cs:125:24:125:24 | 0 | | Finally.cs:125:28:125:40 | access to constant E | Finally.cs:125:28:125:40 | access to constant E | -| Finally.cs:127:9:130:9 | catch {...} | Finally.cs:127:9:130:9 | catch {...} | -| Finally.cs:128:9:130:9 | {...} | Finally.cs:128:9:130:9 | {...} | -| Finally.cs:129:13:129:13 | ; | Finally.cs:129:13:129:13 | ; | | Finally.cs:134:5:145:5 | {...} | Finally.cs:134:5:145:5 | {...} | | Finally.cs:135:9:143:9 | try {...} ... | Finally.cs:135:9:143:9 | try {...} ... | | Finally.cs:136:9:138:9 | {...} | Finally.cs:136:9:138:9 | {...} | @@ -1556,12 +1699,7 @@ | Finally.cs:141:13:141:44 | throw ...; | Finally.cs:141:41:141:42 | "" | | Finally.cs:141:19:141:43 | object creation of type ArgumentException | Finally.cs:141:41:141:42 | "" | | Finally.cs:141:41:141:42 | "" | Finally.cs:141:41:141:42 | "" | -| Finally.cs:142:13:142:37 | call to method WriteLine | Finally.cs:142:31:142:36 | "Dead" | -| Finally.cs:142:13:142:38 | ...; | Finally.cs:142:13:142:38 | ...; | -| Finally.cs:142:31:142:36 | "Dead" | Finally.cs:142:31:142:36 | "Dead" | -| Finally.cs:144:9:144:33 | call to method WriteLine | Finally.cs:144:27:144:32 | "Dead" | -| Finally.cs:144:9:144:34 | ...; | Finally.cs:144:9:144:34 | ...; | -| Finally.cs:144:27:144:32 | "Dead" | Finally.cs:144:27:144:32 | "Dead" | +| Finally.cs:147:22:147:25 | args | Finally.cs:147:22:147:25 | args | | Finally.cs:148:5:170:5 | {...} | Finally.cs:148:5:170:5 | {...} | | Finally.cs:149:9:169:9 | try {...} ... | Finally.cs:149:9:169:9 | try {...} ... | | Finally.cs:150:9:153:9 | {...} | Finally.cs:150:9:153:9 | {...} | @@ -1611,6 +1749,8 @@ | Finally.cs:174:11:174:20 | call to method | Finally.cs:174:11:174:20 | this access | | Finally.cs:174:11:174:20 | this access | Finally.cs:174:11:174:20 | this access | | Finally.cs:174:11:174:20 | {...} | Finally.cs:174:11:174:20 | {...} | +| Finally.cs:176:18:176:19 | b1 | Finally.cs:176:18:176:19 | b1 | +| Finally.cs:176:27:176:28 | b2 | Finally.cs:176:27:176:28 | b2 | | Finally.cs:177:5:193:5 | {...} | Finally.cs:177:5:193:5 | {...} | | Finally.cs:178:9:192:9 | try {...} ... | Finally.cs:178:9:192:9 | try {...} ... | | Finally.cs:179:9:181:9 | {...} | Finally.cs:179:9:181:9 | {...} | @@ -1632,6 +1772,9 @@ | Finally.cs:190:21:190:22 | access to parameter b1 | Finally.cs:190:21:190:22 | access to parameter b1 | | Finally.cs:190:25:190:47 | throw ...; | Finally.cs:190:31:190:46 | object creation of type ExceptionC | | Finally.cs:190:31:190:46 | object creation of type ExceptionC | Finally.cs:190:31:190:46 | object creation of type ExceptionC | +| Finally.cs:195:19:195:20 | b1 | Finally.cs:195:19:195:20 | b1 | +| Finally.cs:195:28:195:29 | b2 | Finally.cs:195:28:195:29 | b2 | +| Finally.cs:195:37:195:38 | b3 | Finally.cs:195:37:195:38 | b3 | | Finally.cs:196:5:214:5 | {...} | Finally.cs:196:5:214:5 | {...} | | Finally.cs:197:9:212:9 | try {...} ... | Finally.cs:197:9:212:9 | try {...} ... | | Finally.cs:198:9:200:9 | {...} | Finally.cs:198:9:200:9 | {...} | @@ -1679,6 +1822,8 @@ | Finally.cs:230:9:230:33 | call to method WriteLine | Finally.cs:230:27:230:32 | "Done" | | Finally.cs:230:9:230:34 | ...; | Finally.cs:230:9:230:34 | ...; | | Finally.cs:230:27:230:32 | "Done" | Finally.cs:230:27:230:32 | "Done" | +| Finally.cs:233:19:233:20 | b1 | Finally.cs:233:19:233:20 | b1 | +| Finally.cs:233:28:233:29 | b2 | Finally.cs:233:28:233:29 | b2 | | Finally.cs:234:5:261:5 | {...} | Finally.cs:234:5:261:5 | {...} | | Finally.cs:235:9:259:9 | try {...} ... | Finally.cs:235:9:259:9 | try {...} ... | | Finally.cs:236:9:255:9 | {...} | Finally.cs:236:9:255:9 | {...} | @@ -1709,6 +1854,7 @@ | Finally.cs:260:9:260:33 | call to method WriteLine | Finally.cs:260:27:260:32 | "Done" | | Finally.cs:260:9:260:34 | ...; | Finally.cs:260:9:260:34 | ...; | | Finally.cs:260:27:260:32 | "Done" | Finally.cs:260:27:260:32 | "Done" | +| Finally.cs:263:18:263:18 | i | Finally.cs:263:18:263:18 | i | | Finally.cs:264:5:274:5 | {...} | Finally.cs:264:5:274:5 | {...} | | Finally.cs:265:9:273:9 | try {...} ... | Finally.cs:265:9:273:9 | try {...} ... | | Finally.cs:266:9:268:9 | {...} | Finally.cs:266:9:268:9 | {...} | @@ -1727,40 +1873,46 @@ | Foreach.cs:4:7:4:13 | call to method | Foreach.cs:4:7:4:13 | this access | | Foreach.cs:4:7:4:13 | this access | Foreach.cs:4:7:4:13 | this access | | Foreach.cs:4:7:4:13 | {...} | Foreach.cs:4:7:4:13 | {...} | +| Foreach.cs:6:22:6:25 | args | Foreach.cs:6:22:6:25 | args | | Foreach.cs:7:5:10:5 | {...} | Foreach.cs:7:5:10:5 | {...} | -| Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:29:8:32 | access to parameter args | +| Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | | Foreach.cs:8:22:8:24 | String arg | Foreach.cs:8:22:8:24 | String arg | | Foreach.cs:8:29:8:32 | access to parameter args | Foreach.cs:8:29:8:32 | access to parameter args | | Foreach.cs:9:13:9:13 | ; | Foreach.cs:9:13:9:13 | ; | +| Foreach.cs:12:22:12:25 | args | Foreach.cs:12:22:12:25 | args | | Foreach.cs:13:5:16:5 | {...} | Foreach.cs:13:5:16:5 | {...} | -| Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:14:27:14:30 | access to parameter args | +| Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | | Foreach.cs:14:22:14:22 | String _ | Foreach.cs:14:22:14:22 | String _ | | Foreach.cs:14:27:14:30 | access to parameter args | Foreach.cs:14:27:14:30 | access to parameter args | | Foreach.cs:15:13:15:13 | ; | Foreach.cs:15:13:15:13 | ; | +| Foreach.cs:18:33:18:33 | e | Foreach.cs:18:33:18:33 | e | | Foreach.cs:19:5:22:5 | {...} | Foreach.cs:19:5:22:5 | {...} | -| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:27:20:27 | access to parameter e | +| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | | Foreach.cs:20:22:20:22 | String x | Foreach.cs:20:22:20:22 | String x | | Foreach.cs:20:27:20:27 | access to parameter e | Foreach.cs:20:27:20:27 | access to parameter e | | Foreach.cs:20:27:20:38 | call to method ToArray | Foreach.cs:20:27:20:27 | access to parameter e | -| Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:20:27:20:27 | access to parameter e | +| Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:20:27:20:68 | ... ?? ... | | Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:20:43:20:68 | call to method Empty | | Foreach.cs:21:11:21:11 | ; | Foreach.cs:21:11:21:11 | ; | +| Foreach.cs:24:40:24:43 | args | Foreach.cs:24:40:24:43 | args | | Foreach.cs:25:5:28:5 | {...} | Foreach.cs:25:5:28:5 | {...} | -| Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | Foreach.cs:26:36:26:39 | access to parameter args | +| Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | | Foreach.cs:26:18:26:31 | (..., ...) | Foreach.cs:26:23:26:23 | String x | | Foreach.cs:26:23:26:23 | String x | Foreach.cs:26:23:26:23 | String x | | Foreach.cs:26:30:26:30 | Int32 y | Foreach.cs:26:30:26:30 | Int32 y | | Foreach.cs:26:36:26:39 | access to parameter args | Foreach.cs:26:36:26:39 | access to parameter args | | Foreach.cs:27:11:27:11 | ; | Foreach.cs:27:11:27:11 | ; | +| Foreach.cs:30:40:30:43 | args | Foreach.cs:30:40:30:43 | args | | Foreach.cs:31:5:34:5 | {...} | Foreach.cs:31:5:34:5 | {...} | -| Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | Foreach.cs:32:32:32:35 | access to parameter args | +| Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | | Foreach.cs:32:18:32:27 | (..., ...) | Foreach.cs:32:23:32:23 | String x | | Foreach.cs:32:23:32:23 | String x | Foreach.cs:32:23:32:23 | String x | | Foreach.cs:32:26:32:26 | Int32 y | Foreach.cs:32:26:32:26 | Int32 y | | Foreach.cs:32:32:32:35 | access to parameter args | Foreach.cs:32:32:32:35 | access to parameter args | | Foreach.cs:33:11:33:11 | ; | Foreach.cs:33:11:33:11 | ; | +| Foreach.cs:36:40:36:43 | args | Foreach.cs:36:40:36:43 | args | | Foreach.cs:37:5:40:5 | {...} | Foreach.cs:37:5:40:5 | {...} | -| Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | Foreach.cs:38:39:38:42 | access to parameter args | +| Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | | Foreach.cs:38:18:38:34 | (..., ...) | Foreach.cs:38:26:38:26 | String x | | Foreach.cs:38:26:38:26 | String x | Foreach.cs:38:26:38:26 | String x | | Foreach.cs:38:33:38:33 | Int32 y | Foreach.cs:38:33:38:33 | Int32 y | @@ -1786,26 +1938,32 @@ | Initializers.cs:10:5:10:16 | call to constructor Object | Initializers.cs:10:5:10:16 | call to constructor Object | | Initializers.cs:10:5:10:16 | call to method | Initializers.cs:10:5:10:16 | this access | | Initializers.cs:10:5:10:16 | this access | Initializers.cs:10:5:10:16 | this access | +| Initializers.cs:10:25:10:25 | s | Initializers.cs:10:25:10:25 | s | | Initializers.cs:10:28:10:30 | {...} | Initializers.cs:10:28:10:30 | {...} | | Initializers.cs:13:5:16:5 | {...} | Initializers.cs:13:5:16:5 | {...} | | Initializers.cs:14:9:14:54 | ... ...; | Initializers.cs:14:9:14:54 | ... ...; | -| Initializers.cs:14:13:14:53 | Initializers i = ... | Initializers.cs:14:34:14:35 | "" | +| Initializers.cs:14:13:14:13 | access to local variable i | Initializers.cs:14:13:14:13 | access to local variable i | +| Initializers.cs:14:13:14:53 | Initializers i = ... | Initializers.cs:14:13:14:13 | access to local variable i | | Initializers.cs:14:17:14:53 | object creation of type Initializers | Initializers.cs:14:34:14:35 | "" | | Initializers.cs:14:34:14:35 | "" | Initializers.cs:14:34:14:35 | "" | -| Initializers.cs:14:38:14:53 | { ..., ... } | Initializers.cs:14:44:14:44 | 0 | -| Initializers.cs:14:40:14:44 | ... = ... | Initializers.cs:14:44:14:44 | 0 | +| Initializers.cs:14:38:14:53 | { ..., ... } | Initializers.cs:14:40:14:40 | access to field F | +| Initializers.cs:14:40:14:40 | access to field F | Initializers.cs:14:40:14:40 | access to field F | +| Initializers.cs:14:40:14:44 | ... = ... | Initializers.cs:14:40:14:40 | access to field F | | Initializers.cs:14:44:14:44 | 0 | Initializers.cs:14:44:14:44 | 0 | -| Initializers.cs:14:47:14:51 | ... = ... | Initializers.cs:14:51:14:51 | 1 | +| Initializers.cs:14:47:14:47 | access to property G | Initializers.cs:14:47:14:47 | access to property G | +| Initializers.cs:14:47:14:51 | ... = ... | Initializers.cs:14:47:14:47 | access to property G | | Initializers.cs:14:51:14:51 | 1 | Initializers.cs:14:51:14:51 | 1 | | Initializers.cs:15:9:15:64 | ... ...; | Initializers.cs:15:9:15:64 | ... ...; | -| Initializers.cs:15:13:15:63 | Initializers[] iz = ... | Initializers.cs:15:18:15:63 | 2 | +| Initializers.cs:15:13:15:14 | access to local variable iz | Initializers.cs:15:13:15:14 | access to local variable iz | +| Initializers.cs:15:13:15:63 | Initializers[] iz = ... | Initializers.cs:15:13:15:14 | access to local variable iz | | Initializers.cs:15:18:15:63 | 2 | Initializers.cs:15:18:15:63 | 2 | -| Initializers.cs:15:18:15:63 | array creation of type Initializers[] | Initializers.cs:15:18:15:63 | 2 | +| Initializers.cs:15:18:15:63 | array creation of type Initializers[] | Initializers.cs:15:39:15:39 | access to local variable i | | Initializers.cs:15:37:15:63 | { ..., ... } | Initializers.cs:15:39:15:39 | access to local variable i | | Initializers.cs:15:39:15:39 | access to local variable i | Initializers.cs:15:39:15:39 | access to local variable i | | Initializers.cs:15:42:15:61 | object creation of type Initializers | Initializers.cs:15:59:15:60 | "" | | Initializers.cs:15:59:15:60 | "" | Initializers.cs:15:59:15:60 | "" | -| Initializers.cs:18:16:18:20 | ... = ... | Initializers.cs:18:20:18:20 | 1 | +| Initializers.cs:18:16:18:16 | access to field H | Initializers.cs:18:16:18:16 | access to field H | +| Initializers.cs:18:16:18:20 | ... = ... | Initializers.cs:18:16:18:16 | access to field H | | Initializers.cs:18:20:18:20 | 1 | Initializers.cs:18:20:18:20 | 1 | | Initializers.cs:20:11:20:23 | call to constructor Object | Initializers.cs:20:11:20:23 | call to constructor Object | | Initializers.cs:20:11:20:23 | call to method | Initializers.cs:20:11:20:23 | this access | @@ -1832,6 +1990,7 @@ | Initializers.cs:31:26:31:30 | ... = ... | Initializers.cs:31:26:31:26 | this access | | Initializers.cs:31:26:31:31 | ...; | Initializers.cs:31:26:31:31 | ...; | | Initializers.cs:31:30:31:30 | 3 | Initializers.cs:31:30:31:30 | 3 | +| Initializers.cs:33:17:33:17 | i | Initializers.cs:33:17:33:17 | i | | Initializers.cs:33:22:33:25 | call to constructor Sub | Initializers.cs:33:22:33:25 | call to constructor Sub | | Initializers.cs:33:29:33:38 | {...} | Initializers.cs:33:29:33:38 | {...} | | Initializers.cs:33:31:33:31 | access to field I | Initializers.cs:33:31:33:31 | this access | @@ -1842,6 +2001,8 @@ | Initializers.cs:35:9:35:11 | call to constructor NoConstructor | Initializers.cs:35:9:35:11 | call to constructor NoConstructor | | Initializers.cs:35:9:35:11 | call to method | Initializers.cs:35:9:35:11 | this access | | Initializers.cs:35:9:35:11 | this access | Initializers.cs:35:9:35:11 | this access | +| Initializers.cs:35:17:35:17 | i | Initializers.cs:35:17:35:17 | i | +| Initializers.cs:35:24:35:24 | j | Initializers.cs:35:24:35:24 | j | | Initializers.cs:35:27:35:40 | {...} | Initializers.cs:35:27:35:40 | {...} | | Initializers.cs:35:29:35:29 | access to field I | Initializers.cs:35:29:35:29 | this access | | Initializers.cs:35:29:35:29 | this access | Initializers.cs:35:29:35:29 | this access | @@ -1858,9 +2019,11 @@ | Initializers.cs:41:11:41:18 | call to method | Initializers.cs:41:11:41:18 | this access | | Initializers.cs:41:11:41:18 | this access | Initializers.cs:41:11:41:18 | this access | | Initializers.cs:41:11:41:18 | {...} | Initializers.cs:41:11:41:18 | {...} | +| Initializers.cs:51:19:51:19 | i | Initializers.cs:51:19:51:19 | i | | Initializers.cs:52:5:66:5 | {...} | Initializers.cs:52:5:66:5 | {...} | | Initializers.cs:54:9:54:96 | ... ...; | Initializers.cs:54:9:54:96 | ... ...; | -| Initializers.cs:54:13:54:95 | Dictionary dict = ... | Initializers.cs:54:20:54:95 | object creation of type Dictionary | +| Initializers.cs:54:13:54:16 | access to local variable dict | Initializers.cs:54:13:54:16 | access to local variable dict | +| Initializers.cs:54:13:54:95 | Dictionary dict = ... | Initializers.cs:54:13:54:16 | access to local variable dict | | Initializers.cs:54:20:54:95 | object creation of type Dictionary | Initializers.cs:54:20:54:95 | object creation of type Dictionary | | Initializers.cs:54:50:54:95 | { ..., ... } | Initializers.cs:54:53:54:53 | 0 | | Initializers.cs:54:52:54:54 | access to indexer | Initializers.cs:54:53:54:53 | 0 | @@ -1878,10 +2041,12 @@ | Initializers.cs:54:84:54:84 | 2 | Initializers.cs:54:84:54:84 | 2 | | Initializers.cs:54:89:54:93 | "Two" | Initializers.cs:54:89:54:93 | "Two" | | Initializers.cs:57:9:65:10 | ... ...; | Initializers.cs:57:9:65:10 | ... ...; | -| Initializers.cs:57:13:65:9 | Compound compound = ... | Initializers.cs:57:24:65:9 | object creation of type Compound | +| Initializers.cs:57:13:57:20 | access to local variable compound | Initializers.cs:57:13:57:20 | access to local variable compound | +| Initializers.cs:57:13:65:9 | Compound compound = ... | Initializers.cs:57:13:57:20 | access to local variable compound | | Initializers.cs:57:24:65:9 | object creation of type Compound | Initializers.cs:57:24:65:9 | object creation of type Compound | -| Initializers.cs:58:9:65:9 | { ..., ... } | Initializers.cs:59:34:59:34 | 0 | -| Initializers.cs:59:13:59:76 | ... = ... | Initializers.cs:59:34:59:34 | 0 | +| Initializers.cs:58:9:65:9 | { ..., ... } | Initializers.cs:59:13:59:27 | access to field DictionaryField | +| Initializers.cs:59:13:59:27 | access to field DictionaryField | Initializers.cs:59:13:59:27 | access to field DictionaryField | +| Initializers.cs:59:13:59:76 | ... = ... | Initializers.cs:59:13:59:27 | access to field DictionaryField | | Initializers.cs:59:31:59:76 | { ..., ... } | Initializers.cs:59:34:59:34 | 0 | | Initializers.cs:59:33:59:35 | access to indexer | Initializers.cs:59:34:59:34 | 0 | | Initializers.cs:59:33:59:44 | ... = ... | Initializers.cs:59:34:59:34 | 0 | @@ -1897,7 +2062,8 @@ | Initializers.cs:59:61:59:65 | ... + ... | Initializers.cs:59:61:59:61 | access to parameter i | | Initializers.cs:59:65:59:65 | 2 | Initializers.cs:59:65:59:65 | 2 | | Initializers.cs:59:70:59:74 | "Two" | Initializers.cs:59:70:59:74 | "Two" | -| Initializers.cs:60:13:60:80 | ... = ... | Initializers.cs:60:37:60:37 | 3 | +| Initializers.cs:60:13:60:30 | access to property DictionaryProperty | Initializers.cs:60:13:60:30 | access to property DictionaryProperty | +| Initializers.cs:60:13:60:80 | ... = ... | Initializers.cs:60:13:60:30 | access to property DictionaryProperty | | Initializers.cs:60:34:60:80 | { ..., ... } | Initializers.cs:60:37:60:37 | 3 | | Initializers.cs:60:36:60:38 | access to indexer | Initializers.cs:60:37:60:37 | 3 | | Initializers.cs:60:36:60:48 | ... = ... | Initializers.cs:60:37:60:37 | 3 | @@ -1913,7 +2079,8 @@ | Initializers.cs:60:65:60:69 | ... + ... | Initializers.cs:60:65:60:65 | access to parameter i | | Initializers.cs:60:69:60:69 | 1 | Initializers.cs:60:69:60:69 | 1 | | Initializers.cs:60:74:60:78 | "One" | Initializers.cs:60:74:60:78 | "One" | -| Initializers.cs:61:13:61:58 | ... = ... | Initializers.cs:61:29:61:29 | 0 | +| Initializers.cs:61:13:61:22 | access to field ArrayField | Initializers.cs:61:13:61:22 | access to field ArrayField | +| Initializers.cs:61:13:61:58 | ... = ... | Initializers.cs:61:13:61:22 | access to field ArrayField | | Initializers.cs:61:26:61:58 | { ..., ... } | Initializers.cs:61:29:61:29 | 0 | | Initializers.cs:61:28:61:30 | access to array element | Initializers.cs:61:29:61:29 | 0 | | Initializers.cs:61:28:61:39 | ... = ... | Initializers.cs:61:29:61:29 | 0 | @@ -1925,7 +2092,8 @@ | Initializers.cs:61:43:61:47 | ... + ... | Initializers.cs:61:43:61:43 | access to parameter i | | Initializers.cs:61:47:61:47 | 1 | Initializers.cs:61:47:61:47 | 1 | | Initializers.cs:61:52:61:56 | "One" | Initializers.cs:61:52:61:56 | "One" | -| Initializers.cs:62:13:62:60 | ... = ... | Initializers.cs:62:30:62:30 | 0 | +| Initializers.cs:62:13:62:23 | access to field ArrayField2 | Initializers.cs:62:13:62:23 | access to field ArrayField2 | +| Initializers.cs:62:13:62:60 | ... = ... | Initializers.cs:62:13:62:23 | access to field ArrayField2 | | Initializers.cs:62:27:62:60 | { ..., ... } | Initializers.cs:62:30:62:30 | 0 | | Initializers.cs:62:29:62:34 | access to array element | Initializers.cs:62:30:62:30 | 0 | | Initializers.cs:62:29:62:40 | ... = ... | Initializers.cs:62:30:62:30 | 0 | @@ -1939,7 +2107,8 @@ | Initializers.cs:62:47:62:51 | ... + ... | Initializers.cs:62:47:62:47 | access to parameter i | | Initializers.cs:62:51:62:51 | 0 | Initializers.cs:62:51:62:51 | 0 | | Initializers.cs:62:56:62:58 | "1" | Initializers.cs:62:56:62:58 | "1" | -| Initializers.cs:63:13:63:60 | ... = ... | Initializers.cs:63:32:63:32 | 1 | +| Initializers.cs:63:13:63:25 | access to property ArrayProperty | Initializers.cs:63:13:63:25 | access to property ArrayProperty | +| Initializers.cs:63:13:63:60 | ... = ... | Initializers.cs:63:13:63:25 | access to property ArrayProperty | | Initializers.cs:63:29:63:60 | { ..., ... } | Initializers.cs:63:32:63:32 | 1 | | Initializers.cs:63:31:63:33 | access to array element | Initializers.cs:63:32:63:32 | 1 | | Initializers.cs:63:31:63:41 | ... = ... | Initializers.cs:63:32:63:32 | 1 | @@ -1951,7 +2120,8 @@ | Initializers.cs:63:45:63:49 | ... + ... | Initializers.cs:63:45:63:45 | access to parameter i | | Initializers.cs:63:49:63:49 | 2 | Initializers.cs:63:49:63:49 | 2 | | Initializers.cs:63:54:63:58 | "Two" | Initializers.cs:63:54:63:58 | "Two" | -| Initializers.cs:64:13:64:63 | ... = ... | Initializers.cs:64:33:64:33 | 0 | +| Initializers.cs:64:13:64:26 | access to property ArrayProperty2 | Initializers.cs:64:13:64:26 | access to property ArrayProperty2 | +| Initializers.cs:64:13:64:63 | ... = ... | Initializers.cs:64:13:64:26 | access to property ArrayProperty2 | | Initializers.cs:64:30:64:63 | { ..., ... } | Initializers.cs:64:33:64:33 | 0 | | Initializers.cs:64:32:64:37 | access to array element | Initializers.cs:64:33:64:33 | 0 | | Initializers.cs:64:32:64:43 | ... = ... | Initializers.cs:64:33:64:33 | 0 | @@ -1969,6 +2139,7 @@ | LoopUnrolling.cs:5:7:5:19 | call to method | LoopUnrolling.cs:5:7:5:19 | this access | | LoopUnrolling.cs:5:7:5:19 | this access | LoopUnrolling.cs:5:7:5:19 | this access | | LoopUnrolling.cs:5:7:5:19 | {...} | LoopUnrolling.cs:5:7:5:19 | {...} | +| LoopUnrolling.cs:7:22:7:25 | args | LoopUnrolling.cs:7:22:7:25 | args | | LoopUnrolling.cs:8:5:13:5 | {...} | LoopUnrolling.cs:8:5:13:5 | {...} | | LoopUnrolling.cs:9:9:10:19 | if (...) ... | LoopUnrolling.cs:9:9:10:19 | if (...) ... | | LoopUnrolling.cs:9:13:9:16 | access to parameter args | LoopUnrolling.cs:9:13:9:16 | access to parameter args | @@ -1976,7 +2147,7 @@ | LoopUnrolling.cs:9:13:9:28 | ... == ... | LoopUnrolling.cs:9:13:9:16 | access to parameter args | | LoopUnrolling.cs:9:28:9:28 | 0 | LoopUnrolling.cs:9:28:9:28 | 0 | | LoopUnrolling.cs:10:13:10:19 | return ...; | LoopUnrolling.cs:10:13:10:19 | return ...; | -| LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:11:29:11:32 | access to parameter args | +| LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | | LoopUnrolling.cs:11:22:11:24 | String arg | LoopUnrolling.cs:11:22:11:24 | String arg | | LoopUnrolling.cs:11:29:11:32 | access to parameter args | LoopUnrolling.cs:11:29:11:32 | access to parameter args | | LoopUnrolling.cs:12:13:12:34 | call to method WriteLine | LoopUnrolling.cs:12:31:12:33 | access to local variable arg | @@ -1984,24 +2155,26 @@ | LoopUnrolling.cs:12:31:12:33 | access to local variable arg | LoopUnrolling.cs:12:31:12:33 | access to local variable arg | | LoopUnrolling.cs:16:5:20:5 | {...} | LoopUnrolling.cs:16:5:20:5 | {...} | | LoopUnrolling.cs:17:9:17:48 | ... ...; | LoopUnrolling.cs:17:9:17:48 | ... ...; | -| LoopUnrolling.cs:17:13:17:47 | String[] xs = ... | LoopUnrolling.cs:17:18:17:47 | 3 | +| LoopUnrolling.cs:17:13:17:14 | access to local variable xs | LoopUnrolling.cs:17:13:17:14 | access to local variable xs | +| LoopUnrolling.cs:17:13:17:47 | String[] xs = ... | LoopUnrolling.cs:17:13:17:14 | access to local variable xs | | LoopUnrolling.cs:17:18:17:47 | 3 | LoopUnrolling.cs:17:18:17:47 | 3 | -| LoopUnrolling.cs:17:18:17:47 | array creation of type String[] | LoopUnrolling.cs:17:18:17:47 | 3 | +| LoopUnrolling.cs:17:18:17:47 | array creation of type String[] | LoopUnrolling.cs:17:33:17:35 | "a" | | LoopUnrolling.cs:17:31:17:47 | { ..., ... } | LoopUnrolling.cs:17:33:17:35 | "a" | | LoopUnrolling.cs:17:33:17:35 | "a" | LoopUnrolling.cs:17:33:17:35 | "a" | | LoopUnrolling.cs:17:38:17:40 | "b" | LoopUnrolling.cs:17:38:17:40 | "b" | | LoopUnrolling.cs:17:43:17:45 | "c" | LoopUnrolling.cs:17:43:17:45 | "c" | -| LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:18:27:18:28 | access to local variable xs | +| LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | | LoopUnrolling.cs:18:22:18:22 | String x | LoopUnrolling.cs:18:22:18:22 | String x | | LoopUnrolling.cs:18:27:18:28 | access to local variable xs | LoopUnrolling.cs:18:27:18:28 | access to local variable xs | | LoopUnrolling.cs:19:13:19:32 | call to method WriteLine | LoopUnrolling.cs:19:31:19:31 | access to local variable x | | LoopUnrolling.cs:19:13:19:33 | ...; | LoopUnrolling.cs:19:13:19:33 | ...; | | LoopUnrolling.cs:19:31:19:31 | access to local variable x | LoopUnrolling.cs:19:31:19:31 | access to local variable x | +| LoopUnrolling.cs:22:20:22:23 | args | LoopUnrolling.cs:22:20:22:23 | args | | LoopUnrolling.cs:23:5:27:5 | {...} | LoopUnrolling.cs:23:5:27:5 | {...} | -| LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:24:29:24:32 | access to parameter args | +| LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | | LoopUnrolling.cs:24:22:24:24 | Char arg | LoopUnrolling.cs:24:22:24:24 | Char arg | | LoopUnrolling.cs:24:29:24:32 | access to parameter args | LoopUnrolling.cs:24:29:24:32 | access to parameter args | -| LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:25:34:25:37 | access to parameter args | +| LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | | LoopUnrolling.cs:25:26:25:29 | Char arg0 | LoopUnrolling.cs:25:26:25:29 | Char arg0 | | LoopUnrolling.cs:25:34:25:37 | access to parameter args | LoopUnrolling.cs:25:34:25:37 | access to parameter args | | LoopUnrolling.cs:26:17:26:39 | call to method WriteLine | LoopUnrolling.cs:26:35:26:38 | access to local variable arg0 | @@ -2009,10 +2182,11 @@ | LoopUnrolling.cs:26:35:26:38 | access to local variable arg0 | LoopUnrolling.cs:26:35:26:38 | access to local variable arg0 | | LoopUnrolling.cs:30:5:34:5 | {...} | LoopUnrolling.cs:30:5:34:5 | {...} | | LoopUnrolling.cs:31:9:31:31 | ... ...; | LoopUnrolling.cs:31:9:31:31 | ... ...; | -| LoopUnrolling.cs:31:13:31:30 | String[] xs = ... | LoopUnrolling.cs:31:29:31:29 | 0 | +| LoopUnrolling.cs:31:13:31:14 | access to local variable xs | LoopUnrolling.cs:31:13:31:14 | access to local variable xs | +| LoopUnrolling.cs:31:13:31:30 | String[] xs = ... | LoopUnrolling.cs:31:13:31:14 | access to local variable xs | | LoopUnrolling.cs:31:18:31:30 | array creation of type String[] | LoopUnrolling.cs:31:29:31:29 | 0 | | LoopUnrolling.cs:31:29:31:29 | 0 | LoopUnrolling.cs:31:29:31:29 | 0 | -| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:32:27:32:28 | access to local variable xs | +| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | | LoopUnrolling.cs:32:22:32:22 | String x | LoopUnrolling.cs:32:22:32:22 | String x | | LoopUnrolling.cs:32:27:32:28 | access to local variable xs | LoopUnrolling.cs:32:27:32:28 | access to local variable xs | | LoopUnrolling.cs:33:13:33:32 | call to method WriteLine | LoopUnrolling.cs:33:31:33:31 | access to local variable x | @@ -2020,25 +2194,27 @@ | LoopUnrolling.cs:33:31:33:31 | access to local variable x | LoopUnrolling.cs:33:31:33:31 | access to local variable x | | LoopUnrolling.cs:37:5:43:5 | {...} | LoopUnrolling.cs:37:5:43:5 | {...} | | LoopUnrolling.cs:38:9:38:48 | ... ...; | LoopUnrolling.cs:38:9:38:48 | ... ...; | -| LoopUnrolling.cs:38:13:38:47 | String[] xs = ... | LoopUnrolling.cs:38:18:38:47 | 3 | +| LoopUnrolling.cs:38:13:38:14 | access to local variable xs | LoopUnrolling.cs:38:13:38:14 | access to local variable xs | +| LoopUnrolling.cs:38:13:38:47 | String[] xs = ... | LoopUnrolling.cs:38:13:38:14 | access to local variable xs | | LoopUnrolling.cs:38:18:38:47 | 3 | LoopUnrolling.cs:38:18:38:47 | 3 | -| LoopUnrolling.cs:38:18:38:47 | array creation of type String[] | LoopUnrolling.cs:38:18:38:47 | 3 | +| LoopUnrolling.cs:38:18:38:47 | array creation of type String[] | LoopUnrolling.cs:38:33:38:35 | "a" | | LoopUnrolling.cs:38:31:38:47 | { ..., ... } | LoopUnrolling.cs:38:33:38:35 | "a" | | LoopUnrolling.cs:38:33:38:35 | "a" | LoopUnrolling.cs:38:33:38:35 | "a" | | LoopUnrolling.cs:38:38:38:40 | "b" | LoopUnrolling.cs:38:38:38:40 | "b" | | LoopUnrolling.cs:38:43:38:45 | "c" | LoopUnrolling.cs:38:43:38:45 | "c" | | LoopUnrolling.cs:39:9:39:48 | ... ...; | LoopUnrolling.cs:39:9:39:48 | ... ...; | -| LoopUnrolling.cs:39:13:39:47 | String[] ys = ... | LoopUnrolling.cs:39:18:39:47 | 3 | +| LoopUnrolling.cs:39:13:39:14 | access to local variable ys | LoopUnrolling.cs:39:13:39:14 | access to local variable ys | +| LoopUnrolling.cs:39:13:39:47 | String[] ys = ... | LoopUnrolling.cs:39:13:39:14 | access to local variable ys | | LoopUnrolling.cs:39:18:39:47 | 3 | LoopUnrolling.cs:39:18:39:47 | 3 | -| LoopUnrolling.cs:39:18:39:47 | array creation of type String[] | LoopUnrolling.cs:39:18:39:47 | 3 | +| LoopUnrolling.cs:39:18:39:47 | array creation of type String[] | LoopUnrolling.cs:39:33:39:35 | "0" | | LoopUnrolling.cs:39:31:39:47 | { ..., ... } | LoopUnrolling.cs:39:33:39:35 | "0" | | LoopUnrolling.cs:39:33:39:35 | "0" | LoopUnrolling.cs:39:33:39:35 | "0" | | LoopUnrolling.cs:39:38:39:40 | "1" | LoopUnrolling.cs:39:38:39:40 | "1" | | LoopUnrolling.cs:39:43:39:45 | "2" | LoopUnrolling.cs:39:43:39:45 | "2" | -| LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:40:27:40:28 | access to local variable xs | +| LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | | LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:40:22:40:22 | String x | | LoopUnrolling.cs:40:27:40:28 | access to local variable xs | LoopUnrolling.cs:40:27:40:28 | access to local variable xs | -| LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:41:31:41:32 | access to local variable ys | +| LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | | LoopUnrolling.cs:41:26:41:26 | String y | LoopUnrolling.cs:41:26:41:26 | String y | | LoopUnrolling.cs:41:31:41:32 | access to local variable ys | LoopUnrolling.cs:41:31:41:32 | access to local variable ys | | LoopUnrolling.cs:42:17:42:40 | call to method WriteLine | LoopUnrolling.cs:42:35:42:35 | access to local variable x | @@ -2048,14 +2224,15 @@ | LoopUnrolling.cs:42:39:42:39 | access to local variable y | LoopUnrolling.cs:42:39:42:39 | access to local variable y | | LoopUnrolling.cs:46:5:53:5 | {...} | LoopUnrolling.cs:46:5:53:5 | {...} | | LoopUnrolling.cs:47:9:47:48 | ... ...; | LoopUnrolling.cs:47:9:47:48 | ... ...; | -| LoopUnrolling.cs:47:13:47:47 | String[] xs = ... | LoopUnrolling.cs:47:18:47:47 | 3 | +| LoopUnrolling.cs:47:13:47:14 | access to local variable xs | LoopUnrolling.cs:47:13:47:14 | access to local variable xs | +| LoopUnrolling.cs:47:13:47:47 | String[] xs = ... | LoopUnrolling.cs:47:13:47:14 | access to local variable xs | | LoopUnrolling.cs:47:18:47:47 | 3 | LoopUnrolling.cs:47:18:47:47 | 3 | -| LoopUnrolling.cs:47:18:47:47 | array creation of type String[] | LoopUnrolling.cs:47:18:47:47 | 3 | +| LoopUnrolling.cs:47:18:47:47 | array creation of type String[] | LoopUnrolling.cs:47:33:47:35 | "a" | | LoopUnrolling.cs:47:31:47:47 | { ..., ... } | LoopUnrolling.cs:47:33:47:35 | "a" | | LoopUnrolling.cs:47:33:47:35 | "a" | LoopUnrolling.cs:47:33:47:35 | "a" | | LoopUnrolling.cs:47:38:47:40 | "b" | LoopUnrolling.cs:47:38:47:40 | "b" | | LoopUnrolling.cs:47:43:47:45 | "c" | LoopUnrolling.cs:47:43:47:45 | "c" | -| LoopUnrolling.cs:48:9:52:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:48:27:48:28 | access to local variable xs | +| LoopUnrolling.cs:48:9:52:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:48:9:52:9 | foreach (... ... in ...) ... | | LoopUnrolling.cs:48:22:48:22 | String x | LoopUnrolling.cs:48:22:48:22 | String x | | LoopUnrolling.cs:48:27:48:28 | access to local variable xs | LoopUnrolling.cs:48:27:48:28 | access to local variable xs | | LoopUnrolling.cs:49:9:52:9 | {...} | LoopUnrolling.cs:49:9:52:9 | {...} | @@ -2064,16 +2241,18 @@ | LoopUnrolling.cs:50:16:50:36 | ...; | LoopUnrolling.cs:50:16:50:36 | ...; | | LoopUnrolling.cs:50:34:50:34 | access to local variable x | LoopUnrolling.cs:50:34:50:34 | access to local variable x | | LoopUnrolling.cs:51:13:51:23 | goto ...; | LoopUnrolling.cs:51:13:51:23 | goto ...; | +| LoopUnrolling.cs:55:18:55:18 | b | LoopUnrolling.cs:55:18:55:18 | b | | LoopUnrolling.cs:56:5:65:5 | {...} | LoopUnrolling.cs:56:5:65:5 | {...} | | LoopUnrolling.cs:57:9:57:48 | ... ...; | LoopUnrolling.cs:57:9:57:48 | ... ...; | -| LoopUnrolling.cs:57:13:57:47 | String[] xs = ... | LoopUnrolling.cs:57:18:57:47 | 3 | +| LoopUnrolling.cs:57:13:57:14 | access to local variable xs | LoopUnrolling.cs:57:13:57:14 | access to local variable xs | +| LoopUnrolling.cs:57:13:57:47 | String[] xs = ... | LoopUnrolling.cs:57:13:57:14 | access to local variable xs | | LoopUnrolling.cs:57:18:57:47 | 3 | LoopUnrolling.cs:57:18:57:47 | 3 | -| LoopUnrolling.cs:57:18:57:47 | array creation of type String[] | LoopUnrolling.cs:57:18:57:47 | 3 | +| LoopUnrolling.cs:57:18:57:47 | array creation of type String[] | LoopUnrolling.cs:57:33:57:35 | "a" | | LoopUnrolling.cs:57:31:57:47 | { ..., ... } | LoopUnrolling.cs:57:33:57:35 | "a" | | LoopUnrolling.cs:57:33:57:35 | "a" | LoopUnrolling.cs:57:33:57:35 | "a" | | LoopUnrolling.cs:57:38:57:40 | "b" | LoopUnrolling.cs:57:38:57:40 | "b" | | LoopUnrolling.cs:57:43:57:45 | "c" | LoopUnrolling.cs:57:43:57:45 | "c" | -| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:58:27:58:28 | access to local variable xs | +| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | | LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:58:22:58:22 | String x | | LoopUnrolling.cs:58:27:58:28 | access to local variable xs | LoopUnrolling.cs:58:27:58:28 | access to local variable xs | | LoopUnrolling.cs:59:9:64:9 | {...} | LoopUnrolling.cs:59:9:64:9 | {...} | @@ -2087,16 +2266,17 @@ | LoopUnrolling.cs:63:17:63:36 | call to method WriteLine | LoopUnrolling.cs:63:35:63:35 | access to local variable x | | LoopUnrolling.cs:63:17:63:37 | ...; | LoopUnrolling.cs:63:17:63:37 | ...; | | LoopUnrolling.cs:63:35:63:35 | access to local variable x | LoopUnrolling.cs:63:35:63:35 | access to local variable x | +| LoopUnrolling.cs:67:26:67:29 | args | LoopUnrolling.cs:67:26:67:29 | args | | LoopUnrolling.cs:68:5:74:5 | {...} | LoopUnrolling.cs:68:5:74:5 | {...} | | LoopUnrolling.cs:69:9:70:19 | if (...) ... | LoopUnrolling.cs:69:9:70:19 | if (...) ... | -| LoopUnrolling.cs:69:13:69:23 | !... | LoopUnrolling.cs:69:14:69:17 | access to parameter args | +| LoopUnrolling.cs:69:13:69:23 | !... | LoopUnrolling.cs:69:13:69:23 | !... | | LoopUnrolling.cs:69:14:69:17 | access to parameter args | LoopUnrolling.cs:69:14:69:17 | access to parameter args | | LoopUnrolling.cs:69:14:69:23 | call to method Any | LoopUnrolling.cs:69:14:69:17 | access to parameter args | | LoopUnrolling.cs:70:13:70:19 | return ...; | LoopUnrolling.cs:70:13:70:19 | return ...; | | LoopUnrolling.cs:71:9:71:12 | access to parameter args | LoopUnrolling.cs:71:9:71:12 | access to parameter args | | LoopUnrolling.cs:71:9:71:20 | call to method Clear | LoopUnrolling.cs:71:9:71:12 | access to parameter args | | LoopUnrolling.cs:71:9:71:21 | ...; | LoopUnrolling.cs:71:9:71:21 | ...; | -| LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:72:29:72:32 | access to parameter args | +| LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | | LoopUnrolling.cs:72:22:72:24 | String arg | LoopUnrolling.cs:72:22:72:24 | String arg | | LoopUnrolling.cs:72:29:72:32 | access to parameter args | LoopUnrolling.cs:72:29:72:32 | access to parameter args | | LoopUnrolling.cs:73:13:73:34 | call to method WriteLine | LoopUnrolling.cs:73:31:73:33 | access to local variable arg | @@ -2104,11 +2284,12 @@ | LoopUnrolling.cs:73:31:73:33 | access to local variable arg | LoopUnrolling.cs:73:31:73:33 | access to local variable arg | | LoopUnrolling.cs:77:5:83:5 | {...} | LoopUnrolling.cs:77:5:83:5 | {...} | | LoopUnrolling.cs:78:9:78:34 | ... ...; | LoopUnrolling.cs:78:9:78:34 | ... ...; | -| LoopUnrolling.cs:78:13:78:33 | String[,] xs = ... | LoopUnrolling.cs:78:29:78:29 | 2 | +| LoopUnrolling.cs:78:13:78:14 | access to local variable xs | LoopUnrolling.cs:78:13:78:14 | access to local variable xs | +| LoopUnrolling.cs:78:13:78:33 | String[,] xs = ... | LoopUnrolling.cs:78:13:78:14 | access to local variable xs | | LoopUnrolling.cs:78:18:78:33 | array creation of type String[,] | LoopUnrolling.cs:78:29:78:29 | 2 | | LoopUnrolling.cs:78:29:78:29 | 2 | LoopUnrolling.cs:78:29:78:29 | 2 | | LoopUnrolling.cs:78:32:78:32 | 0 | LoopUnrolling.cs:78:32:78:32 | 0 | -| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:79:27:79:28 | access to local variable xs | +| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | | LoopUnrolling.cs:79:22:79:22 | String x | LoopUnrolling.cs:79:22:79:22 | String x | | LoopUnrolling.cs:79:27:79:28 | access to local variable xs | LoopUnrolling.cs:79:27:79:28 | access to local variable xs | | LoopUnrolling.cs:80:9:82:9 | {...} | LoopUnrolling.cs:80:9:82:9 | {...} | @@ -2117,11 +2298,12 @@ | LoopUnrolling.cs:81:31:81:31 | access to local variable x | LoopUnrolling.cs:81:31:81:31 | access to local variable x | | LoopUnrolling.cs:86:5:92:5 | {...} | LoopUnrolling.cs:86:5:92:5 | {...} | | LoopUnrolling.cs:87:9:87:34 | ... ...; | LoopUnrolling.cs:87:9:87:34 | ... ...; | -| LoopUnrolling.cs:87:13:87:33 | String[,] xs = ... | LoopUnrolling.cs:87:29:87:29 | 0 | +| LoopUnrolling.cs:87:13:87:14 | access to local variable xs | LoopUnrolling.cs:87:13:87:14 | access to local variable xs | +| LoopUnrolling.cs:87:13:87:33 | String[,] xs = ... | LoopUnrolling.cs:87:13:87:14 | access to local variable xs | | LoopUnrolling.cs:87:18:87:33 | array creation of type String[,] | LoopUnrolling.cs:87:29:87:29 | 0 | | LoopUnrolling.cs:87:29:87:29 | 0 | LoopUnrolling.cs:87:29:87:29 | 0 | | LoopUnrolling.cs:87:32:87:32 | 2 | LoopUnrolling.cs:87:32:87:32 | 2 | -| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:88:27:88:28 | access to local variable xs | +| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | | LoopUnrolling.cs:88:22:88:22 | String x | LoopUnrolling.cs:88:22:88:22 | String x | | LoopUnrolling.cs:88:27:88:28 | access to local variable xs | LoopUnrolling.cs:88:27:88:28 | access to local variable xs | | LoopUnrolling.cs:89:9:91:9 | {...} | LoopUnrolling.cs:89:9:91:9 | {...} | @@ -2130,11 +2312,12 @@ | LoopUnrolling.cs:90:31:90:31 | access to local variable x | LoopUnrolling.cs:90:31:90:31 | access to local variable x | | LoopUnrolling.cs:95:5:101:5 | {...} | LoopUnrolling.cs:95:5:101:5 | {...} | | LoopUnrolling.cs:96:9:96:34 | ... ...; | LoopUnrolling.cs:96:9:96:34 | ... ...; | -| LoopUnrolling.cs:96:13:96:33 | String[,] xs = ... | LoopUnrolling.cs:96:29:96:29 | 2 | +| LoopUnrolling.cs:96:13:96:14 | access to local variable xs | LoopUnrolling.cs:96:13:96:14 | access to local variable xs | +| LoopUnrolling.cs:96:13:96:33 | String[,] xs = ... | LoopUnrolling.cs:96:13:96:14 | access to local variable xs | | LoopUnrolling.cs:96:18:96:33 | array creation of type String[,] | LoopUnrolling.cs:96:29:96:29 | 2 | | LoopUnrolling.cs:96:29:96:29 | 2 | LoopUnrolling.cs:96:29:96:29 | 2 | | LoopUnrolling.cs:96:32:96:32 | 2 | LoopUnrolling.cs:96:32:96:32 | 2 | -| LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:97:27:97:28 | access to local variable xs | +| LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | | LoopUnrolling.cs:97:22:97:22 | String x | LoopUnrolling.cs:97:22:97:22 | String x | | LoopUnrolling.cs:97:27:97:28 | access to local variable xs | LoopUnrolling.cs:97:27:97:28 | access to local variable xs | | LoopUnrolling.cs:98:9:100:9 | {...} | LoopUnrolling.cs:98:9:100:9 | {...} | @@ -2150,6 +2333,7 @@ | MultiImplementationA.cs:7:25:7:39 | {...} | MultiImplementationA.cs:7:25:7:39 | {...} | | MultiImplementationA.cs:7:27:7:37 | throw ...; | MultiImplementationA.cs:7:33:7:36 | null | | MultiImplementationA.cs:7:33:7:36 | null | MultiImplementationA.cs:7:33:7:36 | null | +| MultiImplementationA.cs:7:41:7:43 | value | MultiImplementationA.cs:7:41:7:43 | value | | MultiImplementationA.cs:7:45:7:59 | {...} | MultiImplementationA.cs:7:45:7:59 | {...} | | MultiImplementationA.cs:7:47:7:57 | throw ...; | MultiImplementationA.cs:7:53:7:56 | null | | MultiImplementationA.cs:7:53:7:56 | null | MultiImplementationA.cs:7:53:7:56 | null | @@ -2159,18 +2343,23 @@ | MultiImplementationA.cs:13:16:13:16 | this access | MultiImplementationA.cs:13:16:13:16 | this access | | MultiImplementationA.cs:13:16:13:20 | ... = ... | MultiImplementationA.cs:13:16:13:16 | this access | | MultiImplementationA.cs:13:20:13:20 | 0 | MultiImplementationA.cs:13:20:13:20 | 0 | +| MultiImplementationA.cs:14:25:14:25 | i | MultiImplementationA.cs:14:25:14:25 | i | | MultiImplementationA.cs:14:31:14:31 | access to parameter i | MultiImplementationA.cs:14:31:14:31 | access to parameter i | +| MultiImplementationA.cs:15:31:15:31 | s | MultiImplementationA.cs:15:31:15:31 | s | +| MultiImplementationA.cs:15:31:15:31 | s | MultiImplementationA.cs:15:31:15:31 | s | | MultiImplementationA.cs:15:40:15:52 | {...} | MultiImplementationA.cs:15:40:15:52 | {...} | | MultiImplementationA.cs:15:42:15:50 | return ...; | MultiImplementationA.cs:15:49:15:49 | access to parameter s | | MultiImplementationA.cs:15:49:15:49 | access to parameter s | MultiImplementationA.cs:15:49:15:49 | access to parameter s | +| MultiImplementationA.cs:15:54:15:56 | value | MultiImplementationA.cs:15:54:15:56 | value | | MultiImplementationA.cs:15:58:15:60 | {...} | MultiImplementationA.cs:15:58:15:60 | {...} | -| MultiImplementationA.cs:16:28:16:28 | 0 | MultiImplementationA.cs:16:28:16:28 | 0 | +| MultiImplementationA.cs:16:24:16:24 | i | MultiImplementationA.cs:16:24:16:24 | i | | MultiImplementationA.cs:17:5:19:5 | {...} | MultiImplementationA.cs:17:5:19:5 | {...} | | MultiImplementationA.cs:18:9:18:22 | M2(...) | MultiImplementationA.cs:18:9:18:22 | M2(...) | | MultiImplementationA.cs:18:21:18:21 | 0 | MultiImplementationA.cs:18:21:18:21 | 0 | | MultiImplementationA.cs:20:12:20:13 | call to constructor Object | MultiImplementationA.cs:20:12:20:13 | call to constructor Object | | MultiImplementationA.cs:20:12:20:13 | call to method | MultiImplementationA.cs:20:12:20:13 | this access | | MultiImplementationA.cs:20:12:20:13 | this access | MultiImplementationA.cs:20:12:20:13 | this access | +| MultiImplementationA.cs:20:19:20:19 | i | MultiImplementationA.cs:20:19:20:19 | i | | MultiImplementationA.cs:20:22:20:31 | {...} | MultiImplementationA.cs:20:22:20:31 | {...} | | MultiImplementationA.cs:20:24:20:24 | access to field F | MultiImplementationA.cs:20:24:20:24 | this access | | MultiImplementationA.cs:20:24:20:24 | this access | MultiImplementationA.cs:20:24:20:24 | this access | @@ -2181,6 +2370,7 @@ | MultiImplementationA.cs:21:24:21:24 | 0 | MultiImplementationA.cs:21:24:21:24 | 0 | | MultiImplementationA.cs:21:27:21:29 | {...} | MultiImplementationA.cs:21:27:21:29 | {...} | | MultiImplementationA.cs:22:11:22:13 | {...} | MultiImplementationA.cs:22:11:22:13 | {...} | +| MultiImplementationA.cs:23:44:23:44 | i | MultiImplementationA.cs:23:44:23:44 | i | | MultiImplementationA.cs:23:50:23:53 | null | MultiImplementationA.cs:23:50:23:53 | null | | MultiImplementationA.cs:24:16:24:16 | access to property P | MultiImplementationA.cs:24:16:24:16 | this access | | MultiImplementationA.cs:24:16:24:16 | this access | MultiImplementationA.cs:24:16:24:16 | this access | @@ -2222,7 +2412,6 @@ | MultiImplementationB.cs:13:42:13:52 | throw ...; | MultiImplementationB.cs:13:48:13:51 | null | | MultiImplementationB.cs:13:48:13:51 | null | MultiImplementationB.cs:13:48:13:51 | null | | MultiImplementationB.cs:13:60:13:62 | {...} | MultiImplementationB.cs:13:60:13:62 | {...} | -| MultiImplementationB.cs:14:28:14:28 | 1 | MultiImplementationB.cs:14:28:14:28 | 1 | | MultiImplementationB.cs:15:5:17:5 | {...} | MultiImplementationB.cs:15:5:17:5 | {...} | | MultiImplementationB.cs:16:9:16:31 | M2(...) | MultiImplementationB.cs:16:9:16:31 | M2(...) | | MultiImplementationB.cs:16:21:16:30 | throw ... | MultiImplementationB.cs:16:27:16:30 | null | @@ -2258,57 +2447,71 @@ | NullCoalescing.cs:1:7:1:20 | call to method | NullCoalescing.cs:1:7:1:20 | this access | | NullCoalescing.cs:1:7:1:20 | this access | NullCoalescing.cs:1:7:1:20 | this access | | NullCoalescing.cs:1:7:1:20 | {...} | NullCoalescing.cs:1:7:1:20 | {...} | +| NullCoalescing.cs:3:17:3:17 | i | NullCoalescing.cs:3:17:3:17 | i | | NullCoalescing.cs:3:23:3:23 | access to parameter i | NullCoalescing.cs:3:23:3:23 | access to parameter i | -| NullCoalescing.cs:3:23:3:28 | ... ?? ... | NullCoalescing.cs:3:23:3:23 | access to parameter i | +| NullCoalescing.cs:3:23:3:28 | ... ?? ... | NullCoalescing.cs:3:23:3:28 | ... ?? ... | | NullCoalescing.cs:3:28:3:28 | 0 | NullCoalescing.cs:3:28:3:28 | 0 | -| NullCoalescing.cs:5:24:5:43 | ... ? ... : ... | NullCoalescing.cs:5:25:5:25 | access to parameter b | +| NullCoalescing.cs:5:18:5:18 | b | NullCoalescing.cs:5:18:5:18 | b | +| NullCoalescing.cs:5:24:5:43 | ... ? ... : ... | NullCoalescing.cs:5:24:5:43 | ... ? ... : ... | | NullCoalescing.cs:5:25:5:25 | access to parameter b | NullCoalescing.cs:5:25:5:25 | access to parameter b | -| NullCoalescing.cs:5:25:5:34 | ... ?? ... | NullCoalescing.cs:5:25:5:25 | access to parameter b | +| NullCoalescing.cs:5:25:5:34 | ... ?? ... | NullCoalescing.cs:5:25:5:34 | ... ?? ... | | NullCoalescing.cs:5:30:5:34 | false | NullCoalescing.cs:5:30:5:34 | false | | NullCoalescing.cs:5:39:5:39 | 0 | NullCoalescing.cs:5:39:5:39 | 0 | | NullCoalescing.cs:5:43:5:43 | 1 | NullCoalescing.cs:5:43:5:43 | 1 | +| NullCoalescing.cs:7:22:7:23 | s1 | NullCoalescing.cs:7:22:7:23 | s1 | +| NullCoalescing.cs:7:33:7:34 | s2 | NullCoalescing.cs:7:33:7:34 | s2 | | NullCoalescing.cs:7:40:7:41 | access to parameter s1 | NullCoalescing.cs:7:40:7:41 | access to parameter s1 | -| NullCoalescing.cs:7:40:7:53 | ... ?? ... | NullCoalescing.cs:7:40:7:41 | access to parameter s1 | +| NullCoalescing.cs:7:40:7:53 | ... ?? ... | NullCoalescing.cs:7:40:7:53 | ... ?? ... | | NullCoalescing.cs:7:46:7:47 | access to parameter s2 | NullCoalescing.cs:7:46:7:47 | access to parameter s2 | -| NullCoalescing.cs:7:46:7:53 | ... ?? ... | NullCoalescing.cs:7:46:7:47 | access to parameter s2 | +| NullCoalescing.cs:7:46:7:53 | ... ?? ... | NullCoalescing.cs:7:46:7:53 | ... ?? ... | | NullCoalescing.cs:7:52:7:53 | "" | NullCoalescing.cs:7:52:7:53 | "" | -| NullCoalescing.cs:9:36:9:58 | ... ?? ... | NullCoalescing.cs:9:37:9:37 | access to parameter b | +| NullCoalescing.cs:9:20:9:20 | b | NullCoalescing.cs:9:20:9:20 | b | +| NullCoalescing.cs:9:30:9:30 | s | NullCoalescing.cs:9:30:9:30 | s | +| NullCoalescing.cs:9:36:9:58 | ... ?? ... | NullCoalescing.cs:9:36:9:58 | ... ?? ... | | NullCoalescing.cs:9:37:9:37 | access to parameter b | NullCoalescing.cs:9:37:9:37 | access to parameter b | -| NullCoalescing.cs:9:37:9:45 | ... ? ... : ... | NullCoalescing.cs:9:37:9:37 | access to parameter b | +| NullCoalescing.cs:9:37:9:45 | ... ? ... : ... | NullCoalescing.cs:9:37:9:45 | ... ? ... : ... | | NullCoalescing.cs:9:41:9:41 | access to parameter s | NullCoalescing.cs:9:41:9:41 | access to parameter s | | NullCoalescing.cs:9:45:9:45 | access to parameter s | NullCoalescing.cs:9:45:9:45 | access to parameter s | | NullCoalescing.cs:9:51:9:52 | "" | NullCoalescing.cs:9:51:9:52 | "" | -| NullCoalescing.cs:9:51:9:58 | ... ?? ... | NullCoalescing.cs:9:51:9:52 | "" | +| NullCoalescing.cs:9:51:9:58 | ... ?? ... | NullCoalescing.cs:9:51:9:58 | ... ?? ... | | NullCoalescing.cs:9:57:9:58 | "" | NullCoalescing.cs:9:57:9:58 | "" | -| NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | NullCoalescing.cs:11:44:11:45 | access to parameter b1 | +| NullCoalescing.cs:11:18:11:19 | b1 | NullCoalescing.cs:11:18:11:19 | b1 | +| NullCoalescing.cs:11:27:11:28 | b2 | NullCoalescing.cs:11:27:11:28 | b2 | +| NullCoalescing.cs:11:36:11:37 | b3 | NullCoalescing.cs:11:36:11:37 | b3 | +| NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | | NullCoalescing.cs:11:44:11:45 | access to parameter b1 | NullCoalescing.cs:11:44:11:45 | access to parameter b1 | -| NullCoalescing.cs:11:44:11:59 | ... ?? ... | NullCoalescing.cs:11:44:11:45 | access to parameter b1 | +| NullCoalescing.cs:11:44:11:59 | ... ?? ... | NullCoalescing.cs:11:44:11:59 | ... ?? ... | | NullCoalescing.cs:11:51:11:52 | access to parameter b2 | NullCoalescing.cs:11:51:11:52 | access to parameter b2 | -| NullCoalescing.cs:11:51:11:58 | ... && ... | NullCoalescing.cs:11:51:11:52 | access to parameter b2 | +| NullCoalescing.cs:11:51:11:58 | ... && ... | NullCoalescing.cs:11:51:11:58 | ... && ... | | NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:57:11:58 | access to parameter b3 | | NullCoalescing.cs:11:64:11:64 | 0 | NullCoalescing.cs:11:64:11:64 | 0 | | NullCoalescing.cs:11:68:11:68 | 1 | NullCoalescing.cs:11:68:11:68 | 1 | +| NullCoalescing.cs:13:17:13:17 | i | NullCoalescing.cs:13:17:13:17 | i | | NullCoalescing.cs:14:5:18:5 | {...} | NullCoalescing.cs:14:5:18:5 | {...} | | NullCoalescing.cs:15:9:15:32 | ... ...; | NullCoalescing.cs:15:9:15:32 | ... ...; | -| NullCoalescing.cs:15:13:15:31 | Int32 j = ... | NullCoalescing.cs:15:23:15:26 | null | +| NullCoalescing.cs:15:13:15:13 | access to local variable j | NullCoalescing.cs:15:13:15:13 | access to local variable j | +| NullCoalescing.cs:15:13:15:31 | Int32 j = ... | NullCoalescing.cs:15:13:15:13 | access to local variable j | | NullCoalescing.cs:15:17:15:26 | (...) ... | NullCoalescing.cs:15:23:15:26 | null | -| NullCoalescing.cs:15:17:15:31 | ... ?? ... | NullCoalescing.cs:15:23:15:26 | null | +| NullCoalescing.cs:15:17:15:31 | ... ?? ... | NullCoalescing.cs:15:17:15:31 | ... ?? ... | | NullCoalescing.cs:15:23:15:26 | null | NullCoalescing.cs:15:23:15:26 | null | | NullCoalescing.cs:15:31:15:31 | 0 | NullCoalescing.cs:15:31:15:31 | 0 | | NullCoalescing.cs:16:9:16:26 | ... ...; | NullCoalescing.cs:16:9:16:26 | ... ...; | -| NullCoalescing.cs:16:13:16:25 | String s = ... | NullCoalescing.cs:16:17:16:18 | "" | +| NullCoalescing.cs:16:13:16:13 | access to local variable s | NullCoalescing.cs:16:13:16:13 | access to local variable s | +| NullCoalescing.cs:16:13:16:25 | String s = ... | NullCoalescing.cs:16:13:16:13 | access to local variable s | | NullCoalescing.cs:16:17:16:18 | "" | NullCoalescing.cs:16:17:16:18 | "" | -| NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:16:17:16:18 | "" | +| NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:16:17:16:25 | ... ?? ... | | NullCoalescing.cs:16:23:16:25 | "a" | NullCoalescing.cs:16:23:16:25 | "a" | -| NullCoalescing.cs:17:9:17:24 | ... = ... | NullCoalescing.cs:17:19:17:19 | access to parameter i | +| NullCoalescing.cs:17:9:17:9 | access to local variable j | NullCoalescing.cs:17:9:17:9 | access to local variable j | +| NullCoalescing.cs:17:9:17:24 | ... = ... | NullCoalescing.cs:17:9:17:9 | access to local variable j | | NullCoalescing.cs:17:9:17:25 | ...; | NullCoalescing.cs:17:9:17:25 | ...; | | NullCoalescing.cs:17:13:17:19 | (...) ... | NullCoalescing.cs:17:19:17:19 | access to parameter i | -| NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:17:19:17:19 | access to parameter i | +| NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:17:13:17:24 | ... ?? ... | | NullCoalescing.cs:17:19:17:19 | access to parameter i | NullCoalescing.cs:17:19:17:19 | access to parameter i | | NullCoalescing.cs:17:24:17:24 | 1 | NullCoalescing.cs:17:24:17:24 | 1 | | PartialImplementationA.cs:3:12:3:18 | call to constructor Object | PartialImplementationA.cs:3:12:3:18 | call to constructor Object | | PartialImplementationA.cs:3:12:3:18 | call to method | PartialImplementationA.cs:3:12:3:18 | this access | | PartialImplementationA.cs:3:12:3:18 | this access | PartialImplementationA.cs:3:12:3:18 | this access | +| PartialImplementationA.cs:3:24:3:24 | i | PartialImplementationA.cs:3:24:3:24 | i | | PartialImplementationA.cs:3:27:3:29 | {...} | PartialImplementationA.cs:3:27:3:29 | {...} | | PartialImplementationB.cs:3:16:3:16 | access to field F | PartialImplementationB.cs:3:16:3:16 | this access | | PartialImplementationB.cs:3:16:3:16 | this access | PartialImplementationB.cs:3:16:3:16 | this access | @@ -2328,7 +2531,8 @@ | Patterns.cs:3:7:3:14 | {...} | Patterns.cs:3:7:3:14 | {...} | | Patterns.cs:6:5:43:5 | {...} | Patterns.cs:6:5:43:5 | {...} | | Patterns.cs:7:9:7:24 | ... ...; | Patterns.cs:7:9:7:24 | ... ...; | -| Patterns.cs:7:16:7:23 | Object o = ... | Patterns.cs:7:20:7:23 | null | +| Patterns.cs:7:16:7:16 | access to local variable o | Patterns.cs:7:16:7:16 | access to local variable o | +| Patterns.cs:7:16:7:23 | Object o = ... | Patterns.cs:7:16:7:16 | access to local variable o | | Patterns.cs:7:20:7:23 | null | Patterns.cs:7:20:7:23 | null | | Patterns.cs:8:9:18:9 | if (...) ... | Patterns.cs:8:9:18:9 | if (...) ... | | Patterns.cs:8:13:8:13 | access to local variable o | Patterns.cs:8:13:8:13 | access to local variable o | @@ -2402,13 +2606,15 @@ | Patterns.cs:37:17:37:22 | break; | Patterns.cs:37:17:37:22 | break; | | Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:40:9:42:9 | switch (...) {...} | | Patterns.cs:40:17:40:17 | access to local variable o | Patterns.cs:40:17:40:17 | access to local variable o | +| Patterns.cs:47:32:47:32 | c | Patterns.cs:47:32:47:32 | c | | Patterns.cs:48:9:48:9 | access to parameter c | Patterns.cs:48:9:48:9 | access to parameter c | | Patterns.cs:48:9:48:20 | ... is ... | Patterns.cs:48:9:48:9 | access to parameter c | | Patterns.cs:48:14:48:20 | not ... | Patterns.cs:48:18:48:20 | a | | Patterns.cs:48:18:48:20 | a | Patterns.cs:48:18:48:20 | a | +| Patterns.cs:50:34:50:34 | c | Patterns.cs:50:34:50:34 | c | | Patterns.cs:51:9:51:9 | access to parameter c | Patterns.cs:51:9:51:9 | access to parameter c | | Patterns.cs:51:9:51:21 | ... is ... | Patterns.cs:51:9:51:9 | access to parameter c | -| Patterns.cs:51:9:51:39 | ... ? ... : ... | Patterns.cs:51:9:51:9 | access to parameter c | +| Patterns.cs:51:9:51:39 | ... ? ... : ... | Patterns.cs:51:9:51:39 | ... ? ... : ... | | Patterns.cs:51:14:51:21 | not ... | Patterns.cs:51:18:51:21 | null | | Patterns.cs:51:18:51:21 | null | Patterns.cs:51:18:51:21 | null | | Patterns.cs:51:25:51:25 | access to parameter c | Patterns.cs:51:25:51:25 | access to parameter c | @@ -2417,6 +2623,7 @@ | Patterns.cs:51:34:51:34 | access to parameter c | Patterns.cs:51:34:51:34 | access to parameter c | | Patterns.cs:51:34:51:39 | ... is ... | Patterns.cs:51:34:51:34 | access to parameter c | | Patterns.cs:51:39:51:39 | 2 | Patterns.cs:51:39:51:39 | 2 | +| Patterns.cs:53:34:53:34 | c | Patterns.cs:53:34:53:34 | c | | Patterns.cs:54:9:54:9 | access to parameter c | Patterns.cs:54:9:54:9 | access to parameter c | | Patterns.cs:54:9:54:37 | ... is ... | Patterns.cs:54:9:54:9 | access to parameter c | | Patterns.cs:54:14:54:37 | not ... | Patterns.cs:54:18:54:37 | Patterns u | @@ -2425,58 +2632,62 @@ | Patterns.cs:54:18:54:37 | { ... } | Patterns.cs:54:18:54:37 | Patterns u | | Patterns.cs:54:27:54:35 | { ... } | Patterns.cs:54:33:54:33 | 1 | | Patterns.cs:54:33:54:33 | 1 | Patterns.cs:54:33:54:33 | 1 | +| Patterns.cs:56:33:56:33 | i | Patterns.cs:56:33:56:33 | i | | Patterns.cs:57:5:63:5 | {...} | Patterns.cs:57:5:63:5 | {...} | -| Patterns.cs:58:9:62:10 | return ...; | Patterns.cs:58:16:58:16 | access to parameter i | +| Patterns.cs:58:9:62:10 | return ...; | Patterns.cs:58:16:62:9 | ... switch { ... } | | Patterns.cs:58:16:58:16 | access to parameter i | Patterns.cs:58:16:58:16 | access to parameter i | -| Patterns.cs:58:16:62:9 | ... switch { ... } | Patterns.cs:58:16:58:16 | access to parameter i | +| Patterns.cs:58:16:62:9 | ... switch { ... } | Patterns.cs:58:16:62:9 | ... switch { ... } | | Patterns.cs:60:13:60:17 | not ... | Patterns.cs:60:17:60:17 | 1 | -| Patterns.cs:60:13:60:28 | ... => ... | Patterns.cs:60:17:60:17 | 1 | +| Patterns.cs:60:13:60:28 | ... => ... | Patterns.cs:60:13:60:28 | ... => ... | | Patterns.cs:60:17:60:17 | 1 | Patterns.cs:60:17:60:17 | 1 | | Patterns.cs:60:22:60:28 | "not 1" | Patterns.cs:60:22:60:28 | "not 1" | | Patterns.cs:61:13:61:13 | _ | Patterns.cs:61:13:61:13 | _ | -| Patterns.cs:61:13:61:24 | ... => ... | Patterns.cs:61:13:61:13 | _ | +| Patterns.cs:61:13:61:24 | ... => ... | Patterns.cs:61:13:61:24 | ... => ... | | Patterns.cs:61:18:61:24 | "other" | Patterns.cs:61:18:61:24 | "other" | | Patterns.cs:66:5:72:5 | {...} | Patterns.cs:66:5:72:5 | {...} | -| Patterns.cs:67:9:71:10 | return ...; | Patterns.cs:67:16:67:16 | 2 | +| Patterns.cs:67:9:71:10 | return ...; | Patterns.cs:67:16:71:9 | ... switch { ... } | | Patterns.cs:67:16:67:16 | 2 | Patterns.cs:67:16:67:16 | 2 | -| Patterns.cs:67:16:71:9 | ... switch { ... } | Patterns.cs:67:16:67:16 | 2 | +| Patterns.cs:67:16:71:9 | ... switch { ... } | Patterns.cs:67:16:71:9 | ... switch { ... } | | Patterns.cs:69:13:69:17 | not ... | Patterns.cs:69:17:69:17 | 2 | -| Patterns.cs:69:13:69:33 | ... => ... | Patterns.cs:69:17:69:17 | 2 | +| Patterns.cs:69:13:69:33 | ... => ... | Patterns.cs:69:13:69:33 | ... => ... | | Patterns.cs:69:17:69:17 | 2 | Patterns.cs:69:17:69:17 | 2 | | Patterns.cs:69:22:69:33 | "impossible" | Patterns.cs:69:22:69:33 | "impossible" | | Patterns.cs:70:13:70:13 | 2 | Patterns.cs:70:13:70:13 | 2 | -| Patterns.cs:70:13:70:27 | ... => ... | Patterns.cs:70:13:70:13 | 2 | +| Patterns.cs:70:13:70:27 | ... => ... | Patterns.cs:70:13:70:27 | ... => ... | | Patterns.cs:70:18:70:27 | "possible" | Patterns.cs:70:18:70:27 | "possible" | +| Patterns.cs:74:33:74:33 | i | Patterns.cs:74:33:74:33 | i | | Patterns.cs:75:5:83:5 | {...} | Patterns.cs:75:5:83:5 | {...} | -| Patterns.cs:76:9:82:10 | return ...; | Patterns.cs:76:16:76:16 | access to parameter i | +| Patterns.cs:76:9:82:10 | return ...; | Patterns.cs:76:16:82:9 | ... switch { ... } | | Patterns.cs:76:16:76:16 | access to parameter i | Patterns.cs:76:16:76:16 | access to parameter i | -| Patterns.cs:76:16:82:9 | ... switch { ... } | Patterns.cs:76:16:76:16 | access to parameter i | +| Patterns.cs:76:16:82:9 | ... switch { ... } | Patterns.cs:76:16:82:9 | ... switch { ... } | | Patterns.cs:78:13:78:15 | > ... | Patterns.cs:78:15:78:15 | 1 | -| Patterns.cs:78:13:78:24 | ... => ... | Patterns.cs:78:15:78:15 | 1 | +| Patterns.cs:78:13:78:24 | ... => ... | Patterns.cs:78:13:78:24 | ... => ... | | Patterns.cs:78:15:78:15 | 1 | Patterns.cs:78:15:78:15 | 1 | | Patterns.cs:78:20:78:24 | "> 1" | Patterns.cs:78:20:78:24 | "> 1" | | Patterns.cs:79:13:79:15 | < ... | Patterns.cs:79:15:79:15 | 0 | -| Patterns.cs:79:13:79:24 | ... => ... | Patterns.cs:79:15:79:15 | 0 | +| Patterns.cs:79:13:79:24 | ... => ... | Patterns.cs:79:13:79:24 | ... => ... | | Patterns.cs:79:15:79:15 | 0 | Patterns.cs:79:15:79:15 | 0 | | Patterns.cs:79:20:79:24 | "< 0" | Patterns.cs:79:20:79:24 | "< 0" | | Patterns.cs:80:13:80:13 | 1 | Patterns.cs:80:13:80:13 | 1 | -| Patterns.cs:80:13:80:20 | ... => ... | Patterns.cs:80:13:80:13 | 1 | +| Patterns.cs:80:13:80:20 | ... => ... | Patterns.cs:80:13:80:20 | ... => ... | | Patterns.cs:80:18:80:20 | "1" | Patterns.cs:80:18:80:20 | "1" | | Patterns.cs:81:13:81:13 | _ | Patterns.cs:81:13:81:13 | _ | -| Patterns.cs:81:13:81:20 | ... => ... | Patterns.cs:81:13:81:13 | _ | +| Patterns.cs:81:13:81:20 | ... => ... | Patterns.cs:81:13:81:20 | ... => ... | | Patterns.cs:81:18:81:20 | "0" | Patterns.cs:81:18:81:20 | "0" | +| Patterns.cs:85:33:85:33 | i | Patterns.cs:85:33:85:33 | i | | Patterns.cs:85:39:85:39 | access to parameter i | Patterns.cs:85:39:85:39 | access to parameter i | | Patterns.cs:85:39:85:53 | ... is ... | Patterns.cs:85:39:85:39 | access to parameter i | -| Patterns.cs:85:39:85:69 | ... ? ... : ... | Patterns.cs:85:39:85:39 | access to parameter i | +| Patterns.cs:85:39:85:69 | ... ? ... : ... | Patterns.cs:85:39:85:69 | ... ? ... : ... | | Patterns.cs:85:44:85:44 | 1 | Patterns.cs:85:44:85:44 | 1 | | Patterns.cs:85:44:85:53 | ... or ... | Patterns.cs:85:44:85:44 | 1 | | Patterns.cs:85:49:85:53 | not ... | Patterns.cs:85:53:85:53 | 2 | | Patterns.cs:85:53:85:53 | 2 | Patterns.cs:85:53:85:53 | 2 | | Patterns.cs:85:57:85:63 | "not 2" | Patterns.cs:85:57:85:63 | "not 2" | | Patterns.cs:85:67:85:69 | "2" | Patterns.cs:85:67:85:69 | "2" | +| Patterns.cs:87:33:87:33 | i | Patterns.cs:87:33:87:33 | i | | Patterns.cs:87:39:87:39 | access to parameter i | Patterns.cs:87:39:87:39 | access to parameter i | | Patterns.cs:87:39:87:54 | ... is ... | Patterns.cs:87:39:87:39 | access to parameter i | -| Patterns.cs:87:39:87:70 | ... ? ... : ... | Patterns.cs:87:39:87:39 | access to parameter i | +| Patterns.cs:87:39:87:70 | ... ? ... : ... | Patterns.cs:87:39:87:70 | ... ? ... : ... | | Patterns.cs:87:44:87:44 | 1 | Patterns.cs:87:44:87:44 | 1 | | Patterns.cs:87:44:87:54 | ... and ... | Patterns.cs:87:44:87:44 | 1 | | Patterns.cs:87:50:87:54 | not ... | Patterns.cs:87:54:87:54 | 2 | @@ -2500,10 +2711,12 @@ | PostDominance.cs:3:7:3:19 | call to method | PostDominance.cs:3:7:3:19 | this access | | PostDominance.cs:3:7:3:19 | this access | PostDominance.cs:3:7:3:19 | this access | | PostDominance.cs:3:7:3:19 | {...} | PostDominance.cs:3:7:3:19 | {...} | +| PostDominance.cs:5:20:5:20 | s | PostDominance.cs:5:20:5:20 | s | | PostDominance.cs:6:5:8:5 | {...} | PostDominance.cs:6:5:8:5 | {...} | | PostDominance.cs:7:9:7:28 | call to method WriteLine | PostDominance.cs:7:27:7:27 | access to parameter s | | PostDominance.cs:7:9:7:29 | ...; | PostDominance.cs:7:9:7:29 | ...; | | PostDominance.cs:7:27:7:27 | access to parameter s | PostDominance.cs:7:27:7:27 | access to parameter s | +| PostDominance.cs:10:20:10:20 | s | PostDominance.cs:10:20:10:20 | s | | PostDominance.cs:11:5:15:5 | {...} | PostDominance.cs:11:5:15:5 | {...} | | PostDominance.cs:12:9:13:19 | if (...) ... | PostDominance.cs:12:9:13:19 | if (...) ... | | PostDominance.cs:12:13:12:13 | access to parameter s | PostDominance.cs:12:13:12:13 | access to parameter s | @@ -2513,6 +2726,7 @@ | PostDominance.cs:14:9:14:28 | call to method WriteLine | PostDominance.cs:14:27:14:27 | access to parameter s | | PostDominance.cs:14:9:14:29 | ...; | PostDominance.cs:14:9:14:29 | ...; | | PostDominance.cs:14:27:14:27 | access to parameter s | PostDominance.cs:14:27:14:27 | access to parameter s | +| PostDominance.cs:17:20:17:20 | s | PostDominance.cs:17:20:17:20 | s | | PostDominance.cs:18:5:22:5 | {...} | PostDominance.cs:18:5:22:5 | {...} | | PostDominance.cs:19:9:20:55 | if (...) ... | PostDominance.cs:19:9:20:55 | if (...) ... | | PostDominance.cs:19:13:19:13 | access to parameter s | PostDominance.cs:19:13:19:13 | access to parameter s | @@ -2521,7 +2735,6 @@ | PostDominance.cs:20:13:20:55 | throw ...; | PostDominance.cs:20:45:20:53 | nameof(...) | | PostDominance.cs:20:19:20:54 | object creation of type ArgumentNullException | PostDominance.cs:20:45:20:53 | nameof(...) | | PostDominance.cs:20:45:20:53 | nameof(...) | PostDominance.cs:20:45:20:53 | nameof(...) | -| PostDominance.cs:20:52:20:52 | access to parameter s | PostDominance.cs:20:52:20:52 | access to parameter s | | PostDominance.cs:21:9:21:28 | call to method WriteLine | PostDominance.cs:21:27:21:27 | access to parameter s | | PostDominance.cs:21:9:21:29 | ...; | PostDominance.cs:21:9:21:29 | ...; | | PostDominance.cs:21:27:21:27 | access to parameter s | PostDominance.cs:21:27:21:27 | access to parameter s | @@ -2533,56 +2746,71 @@ | Qualifiers.cs:8:41:8:44 | null | Qualifiers.cs:8:41:8:44 | null | | Qualifiers.cs:11:5:31:5 | {...} | Qualifiers.cs:11:5:31:5 | {...} | | Qualifiers.cs:12:9:12:22 | ... ...; | Qualifiers.cs:12:9:12:22 | ... ...; | -| Qualifiers.cs:12:13:12:21 | Qualifiers q = ... | Qualifiers.cs:12:17:12:21 | this access | +| Qualifiers.cs:12:13:12:13 | access to local variable q | Qualifiers.cs:12:13:12:13 | access to local variable q | +| Qualifiers.cs:12:13:12:21 | Qualifiers q = ... | Qualifiers.cs:12:13:12:13 | access to local variable q | | Qualifiers.cs:12:17:12:21 | access to field Field | Qualifiers.cs:12:17:12:21 | this access | | Qualifiers.cs:12:17:12:21 | this access | Qualifiers.cs:12:17:12:21 | this access | -| Qualifiers.cs:13:9:13:20 | ... = ... | Qualifiers.cs:13:13:13:20 | this access | +| Qualifiers.cs:13:9:13:9 | access to local variable q | Qualifiers.cs:13:9:13:9 | access to local variable q | +| Qualifiers.cs:13:9:13:20 | ... = ... | Qualifiers.cs:13:9:13:9 | access to local variable q | | Qualifiers.cs:13:9:13:21 | ...; | Qualifiers.cs:13:9:13:21 | ...; | | Qualifiers.cs:13:13:13:20 | access to property Property | Qualifiers.cs:13:13:13:20 | this access | | Qualifiers.cs:13:13:13:20 | this access | Qualifiers.cs:13:13:13:20 | this access | -| Qualifiers.cs:14:9:14:20 | ... = ... | Qualifiers.cs:14:13:14:20 | this access | +| Qualifiers.cs:14:9:14:9 | access to local variable q | Qualifiers.cs:14:9:14:9 | access to local variable q | +| Qualifiers.cs:14:9:14:20 | ... = ... | Qualifiers.cs:14:9:14:9 | access to local variable q | | Qualifiers.cs:14:9:14:21 | ...; | Qualifiers.cs:14:9:14:21 | ...; | | Qualifiers.cs:14:13:14:20 | call to method Method | Qualifiers.cs:14:13:14:20 | this access | | Qualifiers.cs:14:13:14:20 | this access | Qualifiers.cs:14:13:14:20 | this access | -| Qualifiers.cs:16:9:16:22 | ... = ... | Qualifiers.cs:16:13:16:16 | this access | +| Qualifiers.cs:16:9:16:9 | access to local variable q | Qualifiers.cs:16:9:16:9 | access to local variable q | +| Qualifiers.cs:16:9:16:22 | ... = ... | Qualifiers.cs:16:9:16:9 | access to local variable q | | Qualifiers.cs:16:9:16:23 | ...; | Qualifiers.cs:16:9:16:23 | ...; | | Qualifiers.cs:16:13:16:16 | this access | Qualifiers.cs:16:13:16:16 | this access | | Qualifiers.cs:16:13:16:22 | access to field Field | Qualifiers.cs:16:13:16:16 | this access | -| Qualifiers.cs:17:9:17:25 | ... = ... | Qualifiers.cs:17:13:17:16 | this access | +| Qualifiers.cs:17:9:17:9 | access to local variable q | Qualifiers.cs:17:9:17:9 | access to local variable q | +| Qualifiers.cs:17:9:17:25 | ... = ... | Qualifiers.cs:17:9:17:9 | access to local variable q | | Qualifiers.cs:17:9:17:26 | ...; | Qualifiers.cs:17:9:17:26 | ...; | | Qualifiers.cs:17:13:17:16 | this access | Qualifiers.cs:17:13:17:16 | this access | | Qualifiers.cs:17:13:17:25 | access to property Property | Qualifiers.cs:17:13:17:16 | this access | -| Qualifiers.cs:18:9:18:25 | ... = ... | Qualifiers.cs:18:13:18:16 | this access | +| Qualifiers.cs:18:9:18:9 | access to local variable q | Qualifiers.cs:18:9:18:9 | access to local variable q | +| Qualifiers.cs:18:9:18:25 | ... = ... | Qualifiers.cs:18:9:18:9 | access to local variable q | | Qualifiers.cs:18:9:18:26 | ...; | Qualifiers.cs:18:9:18:26 | ...; | | Qualifiers.cs:18:13:18:16 | this access | Qualifiers.cs:18:13:18:16 | this access | | Qualifiers.cs:18:13:18:25 | call to method Method | Qualifiers.cs:18:13:18:16 | this access | -| Qualifiers.cs:20:9:20:23 | ... = ... | Qualifiers.cs:20:13:20:23 | access to field StaticField | +| Qualifiers.cs:20:9:20:9 | access to local variable q | Qualifiers.cs:20:9:20:9 | access to local variable q | +| Qualifiers.cs:20:9:20:23 | ... = ... | Qualifiers.cs:20:9:20:9 | access to local variable q | | Qualifiers.cs:20:9:20:24 | ...; | Qualifiers.cs:20:9:20:24 | ...; | | Qualifiers.cs:20:13:20:23 | access to field StaticField | Qualifiers.cs:20:13:20:23 | access to field StaticField | -| Qualifiers.cs:21:9:21:26 | ... = ... | Qualifiers.cs:21:13:21:26 | access to property StaticProperty | +| Qualifiers.cs:21:9:21:9 | access to local variable q | Qualifiers.cs:21:9:21:9 | access to local variable q | +| Qualifiers.cs:21:9:21:26 | ... = ... | Qualifiers.cs:21:9:21:9 | access to local variable q | | Qualifiers.cs:21:9:21:27 | ...; | Qualifiers.cs:21:9:21:27 | ...; | | Qualifiers.cs:21:13:21:26 | access to property StaticProperty | Qualifiers.cs:21:13:21:26 | access to property StaticProperty | -| Qualifiers.cs:22:9:22:26 | ... = ... | Qualifiers.cs:22:13:22:26 | call to method StaticMethod | +| Qualifiers.cs:22:9:22:9 | access to local variable q | Qualifiers.cs:22:9:22:9 | access to local variable q | +| Qualifiers.cs:22:9:22:26 | ... = ... | Qualifiers.cs:22:9:22:9 | access to local variable q | | Qualifiers.cs:22:9:22:27 | ...; | Qualifiers.cs:22:9:22:27 | ...; | | Qualifiers.cs:22:13:22:26 | call to method StaticMethod | Qualifiers.cs:22:13:22:26 | call to method StaticMethod | -| Qualifiers.cs:24:9:24:34 | ... = ... | Qualifiers.cs:24:13:24:34 | access to field StaticField | +| Qualifiers.cs:24:9:24:9 | access to local variable q | Qualifiers.cs:24:9:24:9 | access to local variable q | +| Qualifiers.cs:24:9:24:34 | ... = ... | Qualifiers.cs:24:9:24:9 | access to local variable q | | Qualifiers.cs:24:9:24:35 | ...; | Qualifiers.cs:24:9:24:35 | ...; | | Qualifiers.cs:24:13:24:34 | access to field StaticField | Qualifiers.cs:24:13:24:34 | access to field StaticField | -| Qualifiers.cs:25:9:25:37 | ... = ... | Qualifiers.cs:25:13:25:37 | access to property StaticProperty | +| Qualifiers.cs:25:9:25:9 | access to local variable q | Qualifiers.cs:25:9:25:9 | access to local variable q | +| Qualifiers.cs:25:9:25:37 | ... = ... | Qualifiers.cs:25:9:25:9 | access to local variable q | | Qualifiers.cs:25:9:25:38 | ...; | Qualifiers.cs:25:9:25:38 | ...; | | Qualifiers.cs:25:13:25:37 | access to property StaticProperty | Qualifiers.cs:25:13:25:37 | access to property StaticProperty | -| Qualifiers.cs:26:9:26:37 | ... = ... | Qualifiers.cs:26:13:26:37 | call to method StaticMethod | +| Qualifiers.cs:26:9:26:9 | access to local variable q | Qualifiers.cs:26:9:26:9 | access to local variable q | +| Qualifiers.cs:26:9:26:37 | ... = ... | Qualifiers.cs:26:9:26:9 | access to local variable q | | Qualifiers.cs:26:9:26:38 | ...; | Qualifiers.cs:26:9:26:38 | ...; | | Qualifiers.cs:26:13:26:37 | call to method StaticMethod | Qualifiers.cs:26:13:26:37 | call to method StaticMethod | -| Qualifiers.cs:28:9:28:40 | ... = ... | Qualifiers.cs:28:13:28:34 | access to field StaticField | +| Qualifiers.cs:28:9:28:9 | access to local variable q | Qualifiers.cs:28:9:28:9 | access to local variable q | +| Qualifiers.cs:28:9:28:40 | ... = ... | Qualifiers.cs:28:9:28:9 | access to local variable q | | Qualifiers.cs:28:9:28:41 | ...; | Qualifiers.cs:28:9:28:41 | ...; | | Qualifiers.cs:28:13:28:34 | access to field StaticField | Qualifiers.cs:28:13:28:34 | access to field StaticField | | Qualifiers.cs:28:13:28:40 | access to field Field | Qualifiers.cs:28:13:28:34 | access to field StaticField | -| Qualifiers.cs:29:9:29:46 | ... = ... | Qualifiers.cs:29:13:29:37 | access to property StaticProperty | +| Qualifiers.cs:29:9:29:9 | access to local variable q | Qualifiers.cs:29:9:29:9 | access to local variable q | +| Qualifiers.cs:29:9:29:46 | ... = ... | Qualifiers.cs:29:9:29:9 | access to local variable q | | Qualifiers.cs:29:9:29:47 | ...; | Qualifiers.cs:29:9:29:47 | ...; | | Qualifiers.cs:29:13:29:37 | access to property StaticProperty | Qualifiers.cs:29:13:29:37 | access to property StaticProperty | | Qualifiers.cs:29:13:29:46 | access to property Property | Qualifiers.cs:29:13:29:37 | access to property StaticProperty | -| Qualifiers.cs:30:9:30:46 | ... = ... | Qualifiers.cs:30:13:30:37 | call to method StaticMethod | +| Qualifiers.cs:30:9:30:9 | access to local variable q | Qualifiers.cs:30:9:30:9 | access to local variable q | +| Qualifiers.cs:30:9:30:46 | ... = ... | Qualifiers.cs:30:9:30:9 | access to local variable q | | Qualifiers.cs:30:9:30:47 | ...; | Qualifiers.cs:30:9:30:47 | ...; | | Qualifiers.cs:30:13:30:37 | call to method StaticMethod | Qualifiers.cs:30:13:30:37 | call to method StaticMethod | | Qualifiers.cs:30:13:30:46 | call to method Method | Qualifiers.cs:30:13:30:37 | call to method StaticMethod | @@ -2590,9 +2818,11 @@ | Switch.cs:3:7:3:12 | call to method | Switch.cs:3:7:3:12 | this access | | Switch.cs:3:7:3:12 | this access | Switch.cs:3:7:3:12 | this access | | Switch.cs:3:7:3:12 | {...} | Switch.cs:3:7:3:12 | {...} | +| Switch.cs:5:20:5:20 | o | Switch.cs:5:20:5:20 | o | | Switch.cs:6:5:8:5 | {...} | Switch.cs:6:5:8:5 | {...} | | Switch.cs:7:9:7:22 | switch (...) {...} | Switch.cs:7:9:7:22 | switch (...) {...} | | Switch.cs:7:17:7:17 | access to parameter o | Switch.cs:7:17:7:17 | access to parameter o | +| Switch.cs:10:20:10:20 | o | Switch.cs:10:20:10:20 | o | | Switch.cs:11:5:33:5 | {...} | Switch.cs:11:5:33:5 | {...} | | Switch.cs:12:9:32:9 | switch (...) {...} | Switch.cs:12:9:32:9 | switch (...) {...} | | Switch.cs:12:17:12:17 | access to parameter o | Switch.cs:12:17:12:17 | access to parameter o | @@ -2620,7 +2850,7 @@ | Switch.cs:24:32:24:32 | access to local variable s | Switch.cs:24:32:24:32 | access to local variable s | | Switch.cs:24:32:24:39 | access to property Length | Switch.cs:24:32:24:32 | access to local variable s | | Switch.cs:24:32:24:43 | ... > ... | Switch.cs:24:32:24:32 | access to local variable s | -| Switch.cs:24:32:24:55 | ... && ... | Switch.cs:24:32:24:32 | access to local variable s | +| Switch.cs:24:32:24:55 | ... && ... | Switch.cs:24:32:24:55 | ... && ... | | Switch.cs:24:43:24:43 | 0 | Switch.cs:24:43:24:43 | 0 | | Switch.cs:24:48:24:48 | access to local variable s | Switch.cs:24:48:24:48 | access to local variable s | | Switch.cs:24:48:24:55 | ... != ... | Switch.cs:24:48:24:48 | access to local variable s | @@ -2639,8 +2869,7 @@ | Switch.cs:36:5:42:5 | {...} | Switch.cs:36:5:42:5 | {...} | | Switch.cs:37:9:41:9 | switch (...) {...} | Switch.cs:37:9:41:9 | switch (...) {...} | | Switch.cs:37:17:37:23 | call to method Throw | Switch.cs:37:17:37:23 | call to method Throw | -| Switch.cs:39:13:39:20 | default: | Switch.cs:39:13:39:20 | default: | -| Switch.cs:40:17:40:23 | return ...; | Switch.cs:40:17:40:23 | return ...; | +| Switch.cs:44:20:44:20 | o | Switch.cs:44:20:44:20 | o | | Switch.cs:45:5:53:5 | {...} | Switch.cs:45:5:53:5 | {...} | | Switch.cs:46:9:52:9 | switch (...) {...} | Switch.cs:46:9:52:9 | switch (...) {...} | | Switch.cs:46:17:46:17 | access to parameter o | Switch.cs:46:17:46:17 | access to parameter o | @@ -2664,6 +2893,7 @@ | Switch.cs:61:13:61:19 | case ...: | Switch.cs:61:13:61:19 | case ...: | | Switch.cs:61:18:61:18 | 3 | Switch.cs:61:18:61:18 | 3 | | Switch.cs:62:17:62:22 | break; | Switch.cs:62:17:62:22 | break; | +| Switch.cs:66:20:66:20 | s | Switch.cs:66:20:66:20 | s | | Switch.cs:67:5:75:5 | {...} | Switch.cs:67:5:75:5 | {...} | | Switch.cs:68:9:74:9 | switch (...) {...} | Switch.cs:68:9:74:9 | switch (...) {...} | | Switch.cs:68:17:68:25 | (...) ... | Switch.cs:68:25:68:25 | access to parameter s | @@ -2674,6 +2904,8 @@ | Switch.cs:72:13:72:20 | case ...: | Switch.cs:72:13:72:20 | case ...: | | Switch.cs:72:18:72:19 | "" | Switch.cs:72:18:72:19 | "" | | Switch.cs:73:17:73:22 | break; | Switch.cs:73:17:73:22 | break; | +| Switch.cs:77:17:77:17 | i | Switch.cs:77:17:77:17 | i | +| Switch.cs:77:24:77:24 | j | Switch.cs:77:24:77:24 | j | | Switch.cs:78:5:89:5 | {...} | Switch.cs:78:5:89:5 | {...} | | Switch.cs:79:9:87:9 | switch (...) {...} | Switch.cs:79:9:87:9 | switch (...) {...} | | Switch.cs:79:17:79:17 | access to parameter i | Switch.cs:79:17:79:17 | access to parameter i | @@ -2692,6 +2924,7 @@ | Switch.cs:86:24:86:27 | true | Switch.cs:86:24:86:27 | true | | Switch.cs:88:9:88:21 | return ...; | Switch.cs:88:16:88:20 | false | | Switch.cs:88:16:88:20 | false | Switch.cs:88:16:88:20 | false | +| Switch.cs:91:20:91:20 | o | Switch.cs:91:20:91:20 | o | | Switch.cs:92:5:99:5 | {...} | Switch.cs:92:5:99:5 | {...} | | Switch.cs:93:9:97:9 | switch (...) {...} | Switch.cs:93:9:97:9 | switch (...) {...} | | Switch.cs:93:17:93:17 | access to parameter o | Switch.cs:93:17:93:17 | access to parameter o | @@ -2701,6 +2934,7 @@ | Switch.cs:96:24:96:27 | true | Switch.cs:96:24:96:27 | true | | Switch.cs:98:9:98:21 | return ...; | Switch.cs:98:16:98:20 | false | | Switch.cs:98:16:98:20 | false | Switch.cs:98:16:98:20 | false | +| Switch.cs:101:19:101:19 | s | Switch.cs:101:19:101:19 | s | | Switch.cs:102:5:109:5 | {...} | Switch.cs:102:5:109:5 | {...} | | Switch.cs:103:9:107:9 | switch (...) {...} | Switch.cs:103:9:107:9 | switch (...) {...} | | Switch.cs:103:17:103:17 | access to parameter s | Switch.cs:103:17:103:17 | access to parameter s | @@ -2718,6 +2952,7 @@ | Switch.cs:108:17:108:17 | 1 | Switch.cs:108:17:108:17 | 1 | | Switch.cs:111:28:111:48 | throw ... | Switch.cs:111:34:111:48 | object creation of type Exception | | Switch.cs:111:34:111:48 | object creation of type Exception | Switch.cs:111:34:111:48 | object creation of type Exception | +| Switch.cs:113:20:113:20 | s | Switch.cs:113:20:113:20 | s | | Switch.cs:114:5:121:5 | {...} | Switch.cs:114:5:121:5 | {...} | | Switch.cs:115:9:119:9 | switch (...) {...} | Switch.cs:115:9:119:9 | switch (...) {...} | | Switch.cs:115:17:115:17 | access to parameter s | Switch.cs:115:17:115:17 | access to parameter s | @@ -2739,28 +2974,31 @@ | Switch.cs:120:9:120:18 | return ...; | Switch.cs:120:17:120:17 | 1 | | Switch.cs:120:16:120:17 | -... | Switch.cs:120:17:120:17 | 1 | | Switch.cs:120:17:120:17 | 1 | Switch.cs:120:17:120:17 | 1 | +| Switch.cs:123:21:123:21 | o | Switch.cs:123:21:123:21 | o | | Switch.cs:124:5:127:5 | {...} | Switch.cs:124:5:127:5 | {...} | | Switch.cs:125:9:126:19 | if (...) ... | Switch.cs:125:9:126:19 | if (...) ... | | Switch.cs:125:13:125:13 | access to parameter o | Switch.cs:125:13:125:13 | access to parameter o | -| Switch.cs:125:13:125:48 | ... switch { ... } | Switch.cs:125:13:125:13 | access to parameter o | +| Switch.cs:125:13:125:48 | ... switch { ... } | Switch.cs:125:13:125:48 | ... switch { ... } | | Switch.cs:125:24:125:29 | Boolean b | Switch.cs:125:24:125:29 | Boolean b | -| Switch.cs:125:24:125:34 | ... => ... | Switch.cs:125:24:125:29 | Boolean b | +| Switch.cs:125:24:125:34 | ... => ... | Switch.cs:125:24:125:34 | ... => ... | | Switch.cs:125:34:125:34 | access to local variable b | Switch.cs:125:34:125:34 | access to local variable b | | Switch.cs:125:37:125:37 | _ | Switch.cs:125:37:125:37 | _ | -| Switch.cs:125:37:125:46 | ... => ... | Switch.cs:125:37:125:37 | _ | +| Switch.cs:125:37:125:46 | ... => ... | Switch.cs:125:37:125:46 | ... => ... | | Switch.cs:125:42:125:46 | false | Switch.cs:125:42:125:46 | false | | Switch.cs:126:13:126:19 | return ...; | Switch.cs:126:13:126:19 | return ...; | +| Switch.cs:129:23:129:23 | o | Switch.cs:129:23:129:23 | o | | Switch.cs:130:5:132:5 | {...} | Switch.cs:130:5:132:5 | {...} | -| Switch.cs:131:9:131:67 | return ...; | Switch.cs:131:17:131:17 | access to parameter o | -| Switch.cs:131:16:131:66 | call to method ToString | Switch.cs:131:17:131:17 | access to parameter o | +| Switch.cs:131:9:131:67 | return ...; | Switch.cs:131:17:131:53 | ... switch { ... } | +| Switch.cs:131:16:131:66 | call to method ToString | Switch.cs:131:17:131:53 | ... switch { ... } | | Switch.cs:131:17:131:17 | access to parameter o | Switch.cs:131:17:131:17 | access to parameter o | -| Switch.cs:131:17:131:53 | ... switch { ... } | Switch.cs:131:17:131:17 | access to parameter o | +| Switch.cs:131:17:131:53 | ... switch { ... } | Switch.cs:131:17:131:53 | ... switch { ... } | | Switch.cs:131:28:131:35 | String s | Switch.cs:131:28:131:35 | String s | -| Switch.cs:131:28:131:40 | ... => ... | Switch.cs:131:28:131:35 | String s | +| Switch.cs:131:28:131:40 | ... => ... | Switch.cs:131:28:131:40 | ... => ... | | Switch.cs:131:40:131:40 | access to local variable s | Switch.cs:131:40:131:40 | access to local variable s | | Switch.cs:131:43:131:43 | _ | Switch.cs:131:43:131:43 | _ | -| Switch.cs:131:43:131:51 | ... => ... | Switch.cs:131:43:131:43 | _ | +| Switch.cs:131:43:131:51 | ... => ... | Switch.cs:131:43:131:51 | ... => ... | | Switch.cs:131:48:131:51 | null | Switch.cs:131:48:131:51 | null | +| Switch.cs:134:17:134:17 | i | Switch.cs:134:17:134:17 | i | | Switch.cs:135:5:142:5 | {...} | Switch.cs:135:5:142:5 | {...} | | Switch.cs:136:9:141:9 | switch (...) {...} | Switch.cs:136:9:141:9 | switch (...) {...} | | Switch.cs:136:17:136:17 | access to parameter i | Switch.cs:136:17:136:17 | access to parameter i | @@ -2776,6 +3014,7 @@ | Switch.cs:140:18:140:18 | 2 | Switch.cs:140:18:140:18 | 2 | | Switch.cs:140:21:140:29 | return ...; | Switch.cs:140:28:140:28 | 2 | | Switch.cs:140:28:140:28 | 2 | Switch.cs:140:28:140:28 | 2 | +| Switch.cs:144:17:144:17 | i | Switch.cs:144:17:144:17 | i | | Switch.cs:145:5:152:5 | {...} | Switch.cs:145:5:152:5 | {...} | | Switch.cs:146:9:151:9 | switch (...) {...} | Switch.cs:146:9:151:9 | switch (...) {...} | | Switch.cs:146:17:146:17 | access to parameter i | Switch.cs:146:17:146:17 | access to parameter i | @@ -2791,16 +3030,18 @@ | Switch.cs:150:18:150:18 | 2 | Switch.cs:150:18:150:18 | 2 | | Switch.cs:150:21:150:29 | return ...; | Switch.cs:150:28:150:28 | 2 | | Switch.cs:150:28:150:28 | 2 | Switch.cs:150:28:150:28 | 2 | +| Switch.cs:154:19:154:19 | b | Switch.cs:154:19:154:19 | b | | Switch.cs:155:5:161:5 | {...} | Switch.cs:155:5:161:5 | {...} | | Switch.cs:156:9:156:55 | ... ...; | Switch.cs:156:9:156:55 | ... ...; | -| Switch.cs:156:13:156:54 | String s = ... | Switch.cs:156:17:156:17 | access to parameter b | +| Switch.cs:156:13:156:13 | access to local variable s | Switch.cs:156:13:156:13 | access to local variable s | +| Switch.cs:156:13:156:54 | String s = ... | Switch.cs:156:13:156:13 | access to local variable s | | Switch.cs:156:17:156:17 | access to parameter b | Switch.cs:156:17:156:17 | access to parameter b | -| Switch.cs:156:17:156:54 | ... switch { ... } | Switch.cs:156:17:156:17 | access to parameter b | +| Switch.cs:156:17:156:54 | ... switch { ... } | Switch.cs:156:17:156:54 | ... switch { ... } | | Switch.cs:156:28:156:31 | true | Switch.cs:156:28:156:31 | true | -| Switch.cs:156:28:156:38 | ... => ... | Switch.cs:156:28:156:31 | true | +| Switch.cs:156:28:156:38 | ... => ... | Switch.cs:156:28:156:38 | ... => ... | | Switch.cs:156:36:156:38 | "a" | Switch.cs:156:36:156:38 | "a" | | Switch.cs:156:41:156:45 | false | Switch.cs:156:41:156:45 | false | -| Switch.cs:156:41:156:52 | ... => ... | Switch.cs:156:41:156:45 | false | +| Switch.cs:156:41:156:52 | ... => ... | Switch.cs:156:41:156:52 | ... => ... | | Switch.cs:156:50:156:52 | "b" | Switch.cs:156:50:156:52 | "b" | | Switch.cs:157:9:160:49 | if (...) ... | Switch.cs:157:9:160:49 | if (...) ... | | Switch.cs:157:13:157:13 | access to parameter b | Switch.cs:157:13:157:13 | access to parameter b | @@ -2816,6 +3057,7 @@ | Switch.cs:160:40:160:43 | "b = " | Switch.cs:160:40:160:43 | "b = " | | Switch.cs:160:44:160:46 | {...} | Switch.cs:160:45:160:45 | access to local variable s | | Switch.cs:160:45:160:45 | access to local variable s | Switch.cs:160:45:160:45 | access to local variable s | +| Switch.cs:163:18:163:18 | i | Switch.cs:163:18:163:18 | i | | Switch.cs:164:5:178:5 | {...} | Switch.cs:164:5:178:5 | {...} | | Switch.cs:165:9:177:9 | switch (...) {...} | Switch.cs:165:9:177:9 | switch (...) {...} | | Switch.cs:165:17:165:17 | access to parameter i | Switch.cs:165:17:165:17 | access to parameter i | @@ -2842,12 +3084,15 @@ | TypeAccesses.cs:1:7:1:18 | call to method | TypeAccesses.cs:1:7:1:18 | this access | | TypeAccesses.cs:1:7:1:18 | this access | TypeAccesses.cs:1:7:1:18 | this access | | TypeAccesses.cs:1:7:1:18 | {...} | TypeAccesses.cs:1:7:1:18 | {...} | +| TypeAccesses.cs:3:19:3:19 | o | TypeAccesses.cs:3:19:3:19 | o | | TypeAccesses.cs:4:5:9:5 | {...} | TypeAccesses.cs:4:5:9:5 | {...} | | TypeAccesses.cs:5:9:5:26 | ... ...; | TypeAccesses.cs:5:9:5:26 | ... ...; | -| TypeAccesses.cs:5:13:5:25 | String s = ... | TypeAccesses.cs:5:25:5:25 | access to parameter o | +| TypeAccesses.cs:5:13:5:13 | access to local variable s | TypeAccesses.cs:5:13:5:13 | access to local variable s | +| TypeAccesses.cs:5:13:5:25 | String s = ... | TypeAccesses.cs:5:13:5:13 | access to local variable s | | TypeAccesses.cs:5:17:5:25 | (...) ... | TypeAccesses.cs:5:25:5:25 | access to parameter o | | TypeAccesses.cs:5:25:5:25 | access to parameter o | TypeAccesses.cs:5:25:5:25 | access to parameter o | -| TypeAccesses.cs:6:9:6:23 | ... = ... | TypeAccesses.cs:6:13:6:13 | access to parameter o | +| TypeAccesses.cs:6:9:6:9 | access to local variable s | TypeAccesses.cs:6:9:6:9 | access to local variable s | +| TypeAccesses.cs:6:9:6:23 | ... = ... | TypeAccesses.cs:6:9:6:9 | access to local variable s | | TypeAccesses.cs:6:9:6:24 | ...; | TypeAccesses.cs:6:9:6:24 | ...; | | TypeAccesses.cs:6:13:6:13 | access to parameter o | TypeAccesses.cs:6:13:6:13 | access to parameter o | | TypeAccesses.cs:6:13:6:23 | ... as ... | TypeAccesses.cs:6:13:6:13 | access to parameter o | @@ -2857,20 +3102,24 @@ | TypeAccesses.cs:7:18:7:22 | Int32 j | TypeAccesses.cs:7:18:7:22 | Int32 j | | TypeAccesses.cs:7:25:7:25 | ; | TypeAccesses.cs:7:25:7:25 | ; | | TypeAccesses.cs:8:9:8:28 | ... ...; | TypeAccesses.cs:8:9:8:28 | ... ...; | -| TypeAccesses.cs:8:13:8:27 | Type t = ... | TypeAccesses.cs:8:17:8:27 | typeof(...) | +| TypeAccesses.cs:8:13:8:13 | access to local variable t | TypeAccesses.cs:8:13:8:13 | access to local variable t | +| TypeAccesses.cs:8:13:8:27 | Type t = ... | TypeAccesses.cs:8:13:8:13 | access to local variable t | | TypeAccesses.cs:8:17:8:27 | typeof(...) | TypeAccesses.cs:8:17:8:27 | typeof(...) | | VarDecls.cs:3:7:3:14 | call to constructor Object | VarDecls.cs:3:7:3:14 | call to constructor Object | | VarDecls.cs:3:7:3:14 | call to method | VarDecls.cs:3:7:3:14 | this access | | VarDecls.cs:3:7:3:14 | this access | VarDecls.cs:3:7:3:14 | this access | | VarDecls.cs:3:7:3:14 | {...} | VarDecls.cs:3:7:3:14 | {...} | +| VarDecls.cs:5:30:5:36 | strings | VarDecls.cs:5:30:5:36 | strings | | VarDecls.cs:6:5:11:5 | {...} | VarDecls.cs:6:5:11:5 | {...} | | VarDecls.cs:7:9:10:9 | fixed(...) { ... } | VarDecls.cs:7:9:10:9 | fixed(...) { ... } | -| VarDecls.cs:7:22:7:36 | Char* c1 = ... | VarDecls.cs:7:27:7:33 | access to parameter strings | +| VarDecls.cs:7:22:7:23 | access to local variable c1 | VarDecls.cs:7:22:7:23 | access to local variable c1 | +| VarDecls.cs:7:22:7:36 | Char* c1 = ... | VarDecls.cs:7:22:7:23 | access to local variable c1 | | VarDecls.cs:7:27:7:33 | access to parameter strings | VarDecls.cs:7:27:7:33 | access to parameter strings | | VarDecls.cs:7:27:7:36 | (...) ... | VarDecls.cs:7:27:7:33 | access to parameter strings | | VarDecls.cs:7:27:7:36 | access to array element | VarDecls.cs:7:27:7:33 | access to parameter strings | | VarDecls.cs:7:35:7:35 | 0 | VarDecls.cs:7:35:7:35 | 0 | -| VarDecls.cs:7:39:7:53 | Char* c2 = ... | VarDecls.cs:7:44:7:50 | access to parameter strings | +| VarDecls.cs:7:39:7:40 | access to local variable c2 | VarDecls.cs:7:39:7:40 | access to local variable c2 | +| VarDecls.cs:7:39:7:53 | Char* c2 = ... | VarDecls.cs:7:39:7:40 | access to local variable c2 | | VarDecls.cs:7:44:7:50 | access to parameter strings | VarDecls.cs:7:44:7:50 | access to parameter strings | | VarDecls.cs:7:44:7:53 | (...) ... | VarDecls.cs:7:44:7:50 | access to parameter strings | | VarDecls.cs:7:44:7:53 | access to array element | VarDecls.cs:7:44:7:50 | access to parameter strings | @@ -2879,28 +3128,34 @@ | VarDecls.cs:9:13:9:29 | return ...; | VarDecls.cs:9:27:9:28 | access to local variable c1 | | VarDecls.cs:9:20:9:28 | (...) ... | VarDecls.cs:9:27:9:28 | access to local variable c1 | | VarDecls.cs:9:27:9:28 | access to local variable c1 | VarDecls.cs:9:27:9:28 | access to local variable c1 | +| VarDecls.cs:13:22:13:22 | s | VarDecls.cs:13:22:13:22 | s | | VarDecls.cs:14:5:17:5 | {...} | VarDecls.cs:14:5:17:5 | {...} | | VarDecls.cs:15:9:15:30 | ... ...; | VarDecls.cs:15:9:15:30 | ... ...; | -| VarDecls.cs:15:16:15:21 | String s1 = ... | VarDecls.cs:15:21:15:21 | access to parameter s | +| VarDecls.cs:15:16:15:17 | access to local variable s1 | VarDecls.cs:15:16:15:17 | access to local variable s1 | +| VarDecls.cs:15:16:15:21 | String s1 = ... | VarDecls.cs:15:16:15:17 | access to local variable s1 | | VarDecls.cs:15:21:15:21 | access to parameter s | VarDecls.cs:15:21:15:21 | access to parameter s | -| VarDecls.cs:15:24:15:29 | String s2 = ... | VarDecls.cs:15:29:15:29 | access to parameter s | +| VarDecls.cs:15:24:15:25 | access to local variable s2 | VarDecls.cs:15:24:15:25 | access to local variable s2 | +| VarDecls.cs:15:24:15:29 | String s2 = ... | VarDecls.cs:15:24:15:25 | access to local variable s2 | | VarDecls.cs:15:29:15:29 | access to parameter s | VarDecls.cs:15:29:15:29 | access to parameter s | | VarDecls.cs:16:9:16:23 | return ...; | VarDecls.cs:16:16:16:17 | access to local variable s1 | | VarDecls.cs:16:16:16:17 | access to local variable s1 | VarDecls.cs:16:16:16:17 | access to local variable s1 | | VarDecls.cs:16:16:16:22 | ... + ... | VarDecls.cs:16:16:16:17 | access to local variable s1 | | VarDecls.cs:16:21:16:22 | access to local variable s2 | VarDecls.cs:16:21:16:22 | access to local variable s2 | +| VarDecls.cs:19:15:19:15 | b | VarDecls.cs:19:15:19:15 | b | | VarDecls.cs:20:5:26:5 | {...} | VarDecls.cs:20:5:26:5 | {...} | | VarDecls.cs:21:9:22:13 | using (...) {...} | VarDecls.cs:21:9:22:13 | using (...) {...} | | VarDecls.cs:21:16:21:22 | object creation of type C | VarDecls.cs:21:16:21:22 | object creation of type C | | VarDecls.cs:22:13:22:13 | ; | VarDecls.cs:22:13:22:13 | ; | | VarDecls.cs:24:9:25:29 | using (...) {...} | VarDecls.cs:24:9:25:29 | using (...) {...} | -| VarDecls.cs:24:18:24:28 | C x = ... | VarDecls.cs:24:22:24:28 | object creation of type C | +| VarDecls.cs:24:18:24:18 | access to local variable x | VarDecls.cs:24:18:24:18 | access to local variable x | +| VarDecls.cs:24:18:24:28 | C x = ... | VarDecls.cs:24:18:24:18 | access to local variable x | | VarDecls.cs:24:22:24:28 | object creation of type C | VarDecls.cs:24:22:24:28 | object creation of type C | -| VarDecls.cs:24:31:24:41 | C y = ... | VarDecls.cs:24:35:24:41 | object creation of type C | +| VarDecls.cs:24:31:24:31 | access to local variable y | VarDecls.cs:24:31:24:31 | access to local variable y | +| VarDecls.cs:24:31:24:41 | C y = ... | VarDecls.cs:24:31:24:31 | access to local variable y | | VarDecls.cs:24:35:24:41 | object creation of type C | VarDecls.cs:24:35:24:41 | object creation of type C | -| VarDecls.cs:25:13:25:29 | return ...; | VarDecls.cs:25:20:25:20 | access to parameter b | +| VarDecls.cs:25:13:25:29 | return ...; | VarDecls.cs:25:20:25:28 | ... ? ... : ... | | VarDecls.cs:25:20:25:20 | access to parameter b | VarDecls.cs:25:20:25:20 | access to parameter b | -| VarDecls.cs:25:20:25:28 | ... ? ... : ... | VarDecls.cs:25:20:25:20 | access to parameter b | +| VarDecls.cs:25:20:25:28 | ... ? ... : ... | VarDecls.cs:25:20:25:28 | ... ? ... : ... | | VarDecls.cs:25:24:25:24 | access to local variable x | VarDecls.cs:25:24:25:24 | access to local variable x | | VarDecls.cs:25:28:25:28 | access to local variable y | VarDecls.cs:25:28:25:28 | access to local variable y | | VarDecls.cs:28:11:28:11 | call to constructor Object | VarDecls.cs:28:11:28:11 | call to constructor Object | @@ -2908,12 +3163,15 @@ | VarDecls.cs:28:11:28:11 | this access | VarDecls.cs:28:11:28:11 | this access | | VarDecls.cs:28:11:28:11 | {...} | VarDecls.cs:28:11:28:11 | {...} | | VarDecls.cs:28:51:28:53 | {...} | VarDecls.cs:28:51:28:53 | {...} | +| cflow.cs:5:31:5:34 | args | cflow.cs:5:31:5:34 | args | | cflow.cs:6:5:35:5 | {...} | cflow.cs:6:5:35:5 | {...} | | cflow.cs:7:9:7:28 | ... ...; | cflow.cs:7:9:7:28 | ... ...; | -| cflow.cs:7:13:7:27 | Int32 a = ... | cflow.cs:7:17:7:20 | access to parameter args | +| cflow.cs:7:13:7:13 | access to local variable a | cflow.cs:7:13:7:13 | access to local variable a | +| cflow.cs:7:13:7:27 | Int32 a = ... | cflow.cs:7:13:7:13 | access to local variable a | | cflow.cs:7:17:7:20 | access to parameter args | cflow.cs:7:17:7:20 | access to parameter args | | cflow.cs:7:17:7:27 | access to property Length | cflow.cs:7:17:7:20 | access to parameter args | -| cflow.cs:9:9:9:39 | ... = ... | cflow.cs:9:13:9:29 | object creation of type ControlFlow | +| cflow.cs:9:9:9:9 | access to local variable a | cflow.cs:9:9:9:9 | access to local variable a | +| cflow.cs:9:9:9:39 | ... = ... | cflow.cs:9:9:9:9 | access to local variable a | | cflow.cs:9:9:9:40 | ...; | cflow.cs:9:9:9:40 | ...; | | cflow.cs:9:13:9:29 | object creation of type ControlFlow | cflow.cs:9:13:9:29 | object creation of type ControlFlow | | cflow.cs:9:13:9:39 | call to method Switch | cflow.cs:9:13:9:29 | object creation of type ControlFlow | @@ -2947,7 +3205,8 @@ | cflow.cs:22:18:22:23 | ... < ... | cflow.cs:22:18:22:18 | access to local variable a | | cflow.cs:22:22:22:23 | 10 | cflow.cs:22:22:22:23 | 10 | | cflow.cs:24:9:34:9 | for (...;...;...) ... | cflow.cs:24:9:34:9 | for (...;...;...) ... | -| cflow.cs:24:18:24:22 | Int32 i = ... | cflow.cs:24:22:24:22 | 1 | +| cflow.cs:24:18:24:18 | access to local variable i | cflow.cs:24:18:24:18 | access to local variable i | +| cflow.cs:24:18:24:22 | Int32 i = ... | cflow.cs:24:18:24:18 | access to local variable i | | cflow.cs:24:22:24:22 | 1 | cflow.cs:24:22:24:22 | 1 | | cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:24:25:24:25 | access to local variable i | | cflow.cs:24:25:24:31 | ... <= ... | cflow.cs:24:25:24:25 | access to local variable i | @@ -2959,7 +3218,7 @@ | cflow.cs:26:17:26:17 | access to local variable i | cflow.cs:26:17:26:17 | access to local variable i | | cflow.cs:26:17:26:21 | ... % ... | cflow.cs:26:17:26:17 | access to local variable i | | cflow.cs:26:17:26:26 | ... == ... | cflow.cs:26:17:26:17 | access to local variable i | -| cflow.cs:26:17:26:40 | ... && ... | cflow.cs:26:17:26:17 | access to local variable i | +| cflow.cs:26:17:26:40 | ... && ... | cflow.cs:26:17:26:40 | ... && ... | | cflow.cs:26:21:26:21 | 3 | cflow.cs:26:21:26:21 | 3 | | cflow.cs:26:26:26:26 | 0 | cflow.cs:26:26:26:26 | 0 | | cflow.cs:26:31:26:31 | access to local variable i | cflow.cs:26:31:26:31 | access to local variable i | @@ -2991,6 +3250,7 @@ | cflow.cs:33:17:33:36 | call to method WriteLine | cflow.cs:33:35:33:35 | access to local variable i | | cflow.cs:33:17:33:37 | ...; | cflow.cs:33:17:33:37 | ...; | | cflow.cs:33:35:33:35 | access to local variable i | cflow.cs:33:35:33:35 | access to local variable i | +| cflow.cs:37:28:37:28 | a | cflow.cs:37:28:37:28 | a | | cflow.cs:38:5:68:5 | {...} | cflow.cs:38:5:68:5 | {...} | | cflow.cs:39:9:50:9 | switch (...) {...} | cflow.cs:39:9:50:9 | switch (...) {...} | | cflow.cs:39:17:39:17 | access to parameter a | cflow.cs:39:17:39:17 | access to parameter a | @@ -3034,7 +3294,7 @@ | cflow.cs:62:13:62:19 | case ...: | cflow.cs:62:13:62:19 | case ...: | | cflow.cs:62:18:62:18 | 0 | cflow.cs:62:18:62:18 | 0 | | cflow.cs:63:17:64:55 | if (...) ... | cflow.cs:63:17:64:55 | if (...) ... | -| cflow.cs:63:21:63:34 | !... | cflow.cs:63:23:63:27 | this access | +| cflow.cs:63:21:63:34 | !... | cflow.cs:63:21:63:34 | !... | | cflow.cs:63:23:63:27 | access to field Field | cflow.cs:63:23:63:27 | this access | | cflow.cs:63:23:63:27 | this access | cflow.cs:63:23:63:27 | this access | | cflow.cs:63:23:63:33 | ... == ... | cflow.cs:63:23:63:27 | this access | @@ -3044,6 +3304,7 @@ | cflow.cs:65:17:65:22 | break; | cflow.cs:65:17:65:22 | break; | | cflow.cs:67:9:67:17 | return ...; | cflow.cs:67:16:67:16 | access to parameter a | | cflow.cs:67:16:67:16 | access to parameter a | cflow.cs:67:16:67:16 | access to parameter a | +| cflow.cs:70:27:70:27 | s | cflow.cs:70:27:70:27 | s | | cflow.cs:71:5:82:5 | {...} | cflow.cs:71:5:82:5 | {...} | | cflow.cs:72:9:73:19 | if (...) ... | cflow.cs:72:9:73:19 | if (...) ... | | cflow.cs:72:13:72:13 | access to parameter s | cflow.cs:72:13:72:13 | access to parameter s | @@ -3063,11 +3324,12 @@ | cflow.cs:80:13:80:47 | call to method WriteLine | cflow.cs:80:31:80:46 | "" | | cflow.cs:80:13:80:48 | ...; | cflow.cs:80:13:80:48 | ...; | | cflow.cs:80:31:80:46 | "" | cflow.cs:80:31:80:46 | "" | +| cflow.cs:84:28:84:28 | s | cflow.cs:84:28:84:28 | s | | cflow.cs:85:5:88:5 | {...} | cflow.cs:85:5:88:5 | {...} | | cflow.cs:86:9:87:33 | if (...) ... | cflow.cs:86:9:87:33 | if (...) ... | | cflow.cs:86:13:86:13 | access to parameter s | cflow.cs:86:13:86:13 | access to parameter s | | cflow.cs:86:13:86:21 | ... != ... | cflow.cs:86:13:86:13 | access to parameter s | -| cflow.cs:86:13:86:37 | ... && ... | cflow.cs:86:13:86:13 | access to parameter s | +| cflow.cs:86:13:86:37 | ... && ... | cflow.cs:86:13:86:37 | ... && ... | | cflow.cs:86:18:86:21 | null | cflow.cs:86:18:86:21 | null | | cflow.cs:86:26:86:26 | access to parameter s | cflow.cs:86:26:86:26 | access to parameter s | | cflow.cs:86:26:86:33 | access to property Length | cflow.cs:86:26:86:26 | access to parameter s | @@ -3076,6 +3338,7 @@ | cflow.cs:87:13:87:32 | call to method WriteLine | cflow.cs:87:31:87:31 | access to parameter s | | cflow.cs:87:13:87:33 | ...; | cflow.cs:87:13:87:33 | ...; | | cflow.cs:87:31:87:31 | access to parameter s | cflow.cs:87:31:87:31 | access to parameter s | +| cflow.cs:90:28:90:28 | s | cflow.cs:90:28:90:28 | s | | cflow.cs:91:5:104:5 | {...} | cflow.cs:91:5:104:5 | {...} | | cflow.cs:92:9:93:49 | if (...) ... | cflow.cs:92:9:93:49 | if (...) ... | | cflow.cs:92:13:92:27 | call to method Equals | cflow.cs:92:20:92:20 | access to parameter s | @@ -3114,6 +3377,7 @@ | cflow.cs:103:13:103:36 | ...; | cflow.cs:103:13:103:36 | ...; | | cflow.cs:103:31:103:34 | access to property Prop | cflow.cs:103:31:103:34 | this access | | cflow.cs:103:31:103:34 | this access | cflow.cs:103:31:103:34 | this access | +| cflow.cs:106:28:106:28 | s | cflow.cs:106:28:106:28 | s | | cflow.cs:107:5:117:5 | {...} | cflow.cs:107:5:117:5 | {...} | | cflow.cs:108:9:115:9 | if (...) ... | cflow.cs:108:9:115:9 | if (...) ... | | cflow.cs:108:13:108:13 | access to parameter s | cflow.cs:108:13:108:13 | access to parameter s | @@ -3126,17 +3390,17 @@ | cflow.cs:112:17:112:36 | call to method WriteLine | cflow.cs:112:35:112:35 | access to parameter s | | cflow.cs:112:17:112:37 | ...; | cflow.cs:112:17:112:37 | ...; | | cflow.cs:112:35:112:35 | access to parameter s | cflow.cs:112:35:112:35 | access to parameter s | -| cflow.cs:114:13:114:32 | call to method WriteLine | cflow.cs:114:31:114:31 | access to parameter s | -| cflow.cs:114:13:114:33 | ...; | cflow.cs:114:13:114:33 | ...; | -| cflow.cs:114:31:114:31 | access to parameter s | cflow.cs:114:31:114:31 | access to parameter s | | cflow.cs:116:9:116:28 | call to method WriteLine | cflow.cs:116:27:116:27 | access to parameter s | | cflow.cs:116:9:116:29 | ...; | cflow.cs:116:9:116:29 | ...; | | cflow.cs:116:27:116:27 | access to parameter s | cflow.cs:116:27:116:27 | access to parameter s | +| cflow.cs:119:30:119:30 | s | cflow.cs:119:30:119:30 | s | | cflow.cs:120:5:124:5 | {...} | cflow.cs:120:5:124:5 | {...} | | cflow.cs:121:9:121:18 | ... ...; | cflow.cs:121:9:121:18 | ... ...; | -| cflow.cs:121:13:121:17 | String x = ... | cflow.cs:121:17:121:17 | access to parameter s | +| cflow.cs:121:13:121:13 | access to local variable x | cflow.cs:121:13:121:13 | access to local variable x | +| cflow.cs:121:13:121:17 | String x = ... | cflow.cs:121:13:121:13 | access to local variable x | | cflow.cs:121:17:121:17 | access to parameter s | cflow.cs:121:17:121:17 | access to parameter s | -| cflow.cs:122:9:122:19 | ... = ... | cflow.cs:122:13:122:13 | access to local variable x | +| cflow.cs:122:9:122:9 | access to local variable x | cflow.cs:122:9:122:9 | access to local variable x | +| cflow.cs:122:9:122:19 | ... = ... | cflow.cs:122:9:122:9 | access to local variable x | | cflow.cs:122:9:122:20 | ...; | cflow.cs:122:9:122:20 | ...; | | cflow.cs:122:13:122:13 | access to local variable x | cflow.cs:122:13:122:13 | access to local variable x | | cflow.cs:122:13:122:19 | ... + ... | cflow.cs:122:13:122:13 | access to local variable x | @@ -3144,15 +3408,16 @@ | cflow.cs:123:9:123:17 | return ...; | cflow.cs:123:16:123:16 | access to local variable x | | cflow.cs:123:16:123:16 | access to local variable x | cflow.cs:123:16:123:16 | access to local variable x | | cflow.cs:127:23:127:60 | {...} | cflow.cs:127:23:127:60 | {...} | -| cflow.cs:127:25:127:58 | return ...; | cflow.cs:127:32:127:36 | this access | +| cflow.cs:127:25:127:58 | return ...; | cflow.cs:127:32:127:57 | ... ? ... : ... | | cflow.cs:127:32:127:36 | access to field Field | cflow.cs:127:32:127:36 | this access | | cflow.cs:127:32:127:36 | this access | cflow.cs:127:32:127:36 | this access | | cflow.cs:127:32:127:44 | ... == ... | cflow.cs:127:32:127:36 | this access | -| cflow.cs:127:32:127:57 | ... ? ... : ... | cflow.cs:127:32:127:36 | this access | +| cflow.cs:127:32:127:57 | ... ? ... : ... | cflow.cs:127:32:127:57 | ... ? ... : ... | | cflow.cs:127:41:127:44 | null | cflow.cs:127:41:127:44 | null | | cflow.cs:127:48:127:49 | "" | cflow.cs:127:48:127:49 | "" | | cflow.cs:127:53:127:57 | access to field Field | cflow.cs:127:53:127:57 | this access | | cflow.cs:127:53:127:57 | this access | cflow.cs:127:53:127:57 | this access | +| cflow.cs:127:62:127:64 | value | cflow.cs:127:62:127:64 | value | | cflow.cs:127:66:127:83 | {...} | cflow.cs:127:66:127:83 | {...} | | cflow.cs:127:68:127:72 | access to field Field | cflow.cs:127:68:127:72 | this access | | cflow.cs:127:68:127:72 | this access | cflow.cs:127:68:127:72 | this access | @@ -3162,12 +3427,14 @@ | cflow.cs:129:5:129:15 | call to constructor Object | cflow.cs:129:5:129:15 | call to constructor Object | | cflow.cs:129:5:129:15 | call to method | cflow.cs:129:5:129:15 | this access | | cflow.cs:129:5:129:15 | this access | cflow.cs:129:5:129:15 | this access | +| cflow.cs:129:24:129:24 | s | cflow.cs:129:24:129:24 | s | | cflow.cs:130:5:132:5 | {...} | cflow.cs:130:5:132:5 | {...} | | cflow.cs:131:9:131:13 | access to field Field | cflow.cs:131:9:131:13 | this access | | cflow.cs:131:9:131:13 | this access | cflow.cs:131:9:131:13 | this access | | cflow.cs:131:9:131:17 | ... = ... | cflow.cs:131:9:131:13 | this access | | cflow.cs:131:9:131:18 | ...; | cflow.cs:131:9:131:18 | ...; | | cflow.cs:131:17:131:17 | access to parameter s | cflow.cs:131:17:131:17 | access to parameter s | +| cflow.cs:134:21:134:21 | i | cflow.cs:134:21:134:21 | i | | cflow.cs:134:26:134:29 | call to constructor ControlFlow | cflow.cs:134:31:134:31 | access to parameter i | | cflow.cs:134:31:134:31 | (...) ... | cflow.cs:134:31:134:31 | access to parameter i | | cflow.cs:134:31:134:31 | access to parameter i | cflow.cs:134:31:134:31 | access to parameter i | @@ -3179,22 +3446,28 @@ | cflow.cs:136:33:136:37 | ... + ... | cflow.cs:136:33:136:33 | 0 | | cflow.cs:136:37:136:37 | 1 | cflow.cs:136:37:136:37 | 1 | | cflow.cs:136:40:136:42 | {...} | cflow.cs:136:40:136:42 | {...} | +| cflow.cs:138:54:138:54 | x | cflow.cs:138:54:138:54 | x | +| cflow.cs:138:69:138:69 | y | cflow.cs:138:69:138:69 | y | | cflow.cs:139:5:142:5 | {...} | cflow.cs:139:5:142:5 | {...} | | cflow.cs:140:9:140:28 | call to method WriteLine | cflow.cs:140:27:140:27 | access to parameter x | | cflow.cs:140:9:140:29 | ...; | cflow.cs:140:9:140:29 | ...; | | cflow.cs:140:27:140:27 | access to parameter x | cflow.cs:140:27:140:27 | access to parameter x | | cflow.cs:141:9:141:17 | return ...; | cflow.cs:141:16:141:16 | access to parameter y | | cflow.cs:141:16:141:16 | access to parameter y | cflow.cs:141:16:141:16 | access to parameter y | +| cflow.cs:144:28:144:28 | i | cflow.cs:144:28:144:28 | i | +| cflow.cs:144:28:144:28 | i | cflow.cs:144:28:144:28 | i | | cflow.cs:144:37:144:54 | {...} | cflow.cs:144:37:144:54 | {...} | | cflow.cs:144:39:144:52 | return ...; | cflow.cs:144:46:144:46 | access to parameter i | | cflow.cs:144:46:144:46 | (...) ... | cflow.cs:144:46:144:46 | access to parameter i | | cflow.cs:144:46:144:46 | access to parameter i | cflow.cs:144:46:144:46 | access to parameter i | | cflow.cs:144:46:144:51 | ... + ... | cflow.cs:144:46:144:46 | access to parameter i | | cflow.cs:144:50:144:51 | "" | cflow.cs:144:50:144:51 | "" | +| cflow.cs:144:56:144:58 | value | cflow.cs:144:56:144:58 | value | | cflow.cs:144:60:144:62 | {...} | cflow.cs:144:60:144:62 | {...} | | cflow.cs:147:5:177:5 | {...} | cflow.cs:147:5:177:5 | {...} | | cflow.cs:148:9:148:18 | ... ...; | cflow.cs:148:9:148:18 | ... ...; | -| cflow.cs:148:13:148:17 | Int32 x = ... | cflow.cs:148:17:148:17 | 0 | +| cflow.cs:148:13:148:13 | access to local variable x | cflow.cs:148:13:148:13 | access to local variable x | +| cflow.cs:148:13:148:17 | Int32 x = ... | cflow.cs:148:13:148:13 | access to local variable x | | cflow.cs:148:17:148:17 | 0 | cflow.cs:148:17:148:17 | 0 | | cflow.cs:149:9:150:33 | for (...;...;...) ... | cflow.cs:149:9:150:33 | for (...;...;...) ... | | cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:149:16:149:16 | access to local variable x | @@ -3242,9 +3515,11 @@ | cflow.cs:170:13:170:15 | ...++ | cflow.cs:170:13:170:13 | access to local variable x | | cflow.cs:170:13:170:16 | ...; | cflow.cs:170:13:170:16 | ...; | | cflow.cs:173:9:176:9 | for (...;...;...) ... | cflow.cs:173:9:176:9 | for (...;...;...) ... | -| cflow.cs:173:18:173:22 | Int32 i = ... | cflow.cs:173:22:173:22 | 0 | +| cflow.cs:173:18:173:18 | access to local variable i | cflow.cs:173:18:173:18 | access to local variable i | +| cflow.cs:173:18:173:22 | Int32 i = ... | cflow.cs:173:18:173:18 | access to local variable i | | cflow.cs:173:22:173:22 | 0 | cflow.cs:173:22:173:22 | 0 | -| cflow.cs:173:25:173:29 | Int32 j = ... | cflow.cs:173:29:173:29 | 0 | +| cflow.cs:173:25:173:25 | access to local variable j | cflow.cs:173:25:173:25 | access to local variable j | +| cflow.cs:173:25:173:29 | Int32 j = ... | cflow.cs:173:25:173:25 | access to local variable j | | cflow.cs:173:29:173:29 | 0 | cflow.cs:173:29:173:29 | 0 | | cflow.cs:173:32:173:32 | access to local variable i | cflow.cs:173:32:173:32 | access to local variable i | | cflow.cs:173:32:173:36 | ... + ... | cflow.cs:173:32:173:32 | access to local variable i | @@ -3263,14 +3538,18 @@ | cflow.cs:175:35:175:35 | access to local variable j | cflow.cs:175:35:175:35 | access to local variable j | | cflow.cs:180:5:183:5 | {...} | cflow.cs:180:5:183:5 | {...} | | cflow.cs:181:9:181:38 | ... ...; | cflow.cs:181:9:181:38 | ... ...; | -| cflow.cs:181:24:181:37 | Func y = ... | cflow.cs:181:28:181:37 | (...) => ... | +| cflow.cs:181:24:181:24 | access to local variable y | cflow.cs:181:24:181:24 | access to local variable y | +| cflow.cs:181:24:181:37 | Func y = ... | cflow.cs:181:24:181:24 | access to local variable y | +| cflow.cs:181:28:181:28 | x | cflow.cs:181:28:181:28 | x | | cflow.cs:181:28:181:37 | (...) => ... | cflow.cs:181:28:181:37 | (...) => ... | | cflow.cs:181:33:181:33 | access to parameter x | cflow.cs:181:33:181:33 | access to parameter x | | cflow.cs:181:33:181:37 | ... + ... | cflow.cs:181:33:181:33 | access to parameter x | | cflow.cs:181:37:181:37 | 1 | cflow.cs:181:37:181:37 | 1 | | cflow.cs:182:9:182:62 | ... ...; | cflow.cs:182:9:182:62 | ... ...; | -| cflow.cs:182:24:182:61 | Func z = ... | cflow.cs:182:28:182:61 | delegate(...) { ... } | +| cflow.cs:182:24:182:24 | access to local variable z | cflow.cs:182:24:182:24 | access to local variable z | +| cflow.cs:182:24:182:61 | Func z = ... | cflow.cs:182:24:182:24 | access to local variable z | | cflow.cs:182:28:182:61 | delegate(...) { ... } | cflow.cs:182:28:182:61 | delegate(...) { ... } | +| cflow.cs:182:42:182:42 | x | cflow.cs:182:42:182:42 | x | | cflow.cs:182:45:182:61 | {...} | cflow.cs:182:45:182:61 | {...} | | cflow.cs:182:47:182:59 | return ...; | cflow.cs:182:54:182:54 | access to parameter x | | cflow.cs:182:54:182:54 | access to parameter x | cflow.cs:182:54:182:54 | access to parameter x | @@ -3280,15 +3559,15 @@ | cflow.cs:187:9:190:52 | if (...) ... | cflow.cs:187:9:190:52 | if (...) ... | | cflow.cs:187:13:187:13 | 1 | cflow.cs:187:13:187:13 | 1 | | cflow.cs:187:13:187:18 | ... == ... | cflow.cs:187:13:187:13 | 1 | -| cflow.cs:187:13:187:28 | ... \|\| ... | cflow.cs:187:13:187:13 | 1 | -| cflow.cs:187:13:187:50 | ... \|\| ... | cflow.cs:187:13:187:13 | 1 | +| cflow.cs:187:13:187:28 | ... \|\| ... | cflow.cs:187:13:187:28 | ... \|\| ... | +| cflow.cs:187:13:187:50 | ... \|\| ... | cflow.cs:187:13:187:50 | ... \|\| ... | | cflow.cs:187:18:187:18 | 2 | cflow.cs:187:18:187:18 | 2 | | cflow.cs:187:23:187:23 | 2 | cflow.cs:187:23:187:23 | 2 | | cflow.cs:187:23:187:28 | ... == ... | cflow.cs:187:23:187:23 | 2 | | cflow.cs:187:28:187:28 | 3 | cflow.cs:187:28:187:28 | 3 | | cflow.cs:187:34:187:34 | 1 | cflow.cs:187:34:187:34 | 1 | | cflow.cs:187:34:187:39 | ... == ... | cflow.cs:187:34:187:34 | 1 | -| cflow.cs:187:34:187:49 | ... && ... | cflow.cs:187:34:187:34 | 1 | +| cflow.cs:187:34:187:49 | ... && ... | cflow.cs:187:34:187:49 | ... && ... | | cflow.cs:187:39:187:39 | 3 | cflow.cs:187:39:187:39 | 3 | | cflow.cs:187:44:187:44 | 3 | cflow.cs:187:44:187:44 | 3 | | cflow.cs:187:44:187:49 | ... == ... | cflow.cs:187:44:187:44 | 3 | @@ -3301,54 +3580,56 @@ | cflow.cs:190:31:190:50 | "This should happen" | cflow.cs:190:31:190:50 | "This should happen" | | cflow.cs:194:5:206:5 | {...} | cflow.cs:194:5:206:5 | {...} | | cflow.cs:195:9:195:57 | ... ...; | cflow.cs:195:9:195:57 | ... ...; | -| cflow.cs:195:13:195:56 | Boolean b = ... | cflow.cs:195:17:195:21 | this access | +| cflow.cs:195:13:195:13 | access to local variable b | cflow.cs:195:13:195:13 | access to local variable b | +| cflow.cs:195:13:195:56 | Boolean b = ... | cflow.cs:195:13:195:13 | access to local variable b | | cflow.cs:195:17:195:21 | access to field Field | cflow.cs:195:17:195:21 | this access | | cflow.cs:195:17:195:21 | this access | cflow.cs:195:17:195:21 | this access | | cflow.cs:195:17:195:28 | access to property Length | cflow.cs:195:17:195:21 | this access | | cflow.cs:195:17:195:32 | ... > ... | cflow.cs:195:17:195:21 | this access | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:195:17:195:21 | this access | +| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:195:17:195:56 | ... && ... | | cflow.cs:195:32:195:32 | 0 | cflow.cs:195:32:195:32 | 0 | -| cflow.cs:195:37:195:56 | !... | cflow.cs:195:39:195:43 | this access | +| cflow.cs:195:37:195:56 | !... | cflow.cs:195:37:195:56 | !... | | cflow.cs:195:39:195:43 | access to field Field | cflow.cs:195:39:195:43 | this access | | cflow.cs:195:39:195:43 | this access | cflow.cs:195:39:195:43 | this access | | cflow.cs:195:39:195:50 | access to property Length | cflow.cs:195:39:195:43 | this access | | cflow.cs:195:39:195:55 | ... == ... | cflow.cs:195:39:195:43 | this access | | cflow.cs:195:55:195:55 | 1 | cflow.cs:195:55:195:55 | 1 | | cflow.cs:197:9:198:49 | if (...) ... | cflow.cs:197:9:198:49 | if (...) ... | -| cflow.cs:197:13:197:47 | !... | cflow.cs:197:15:197:19 | this access | +| cflow.cs:197:13:197:47 | !... | cflow.cs:197:13:197:47 | !... | | cflow.cs:197:15:197:19 | access to field Field | cflow.cs:197:15:197:19 | this access | | cflow.cs:197:15:197:19 | this access | cflow.cs:197:15:197:19 | this access | | cflow.cs:197:15:197:26 | access to property Length | cflow.cs:197:15:197:19 | this access | | cflow.cs:197:15:197:31 | ... == ... | cflow.cs:197:15:197:19 | this access | -| cflow.cs:197:15:197:46 | ... ? ... : ... | cflow.cs:197:15:197:19 | this access | +| cflow.cs:197:15:197:46 | ... ? ... : ... | cflow.cs:197:15:197:46 | ... ? ... : ... | | cflow.cs:197:31:197:31 | 0 | cflow.cs:197:31:197:31 | 0 | | cflow.cs:197:35:197:39 | false | cflow.cs:197:35:197:39 | false | | cflow.cs:197:43:197:46 | true | cflow.cs:197:43:197:46 | true | -| cflow.cs:198:13:198:48 | ... = ... | cflow.cs:198:17:198:21 | this access | +| cflow.cs:198:13:198:13 | access to local variable b | cflow.cs:198:13:198:13 | access to local variable b | +| cflow.cs:198:13:198:48 | ... = ... | cflow.cs:198:13:198:13 | access to local variable b | | cflow.cs:198:13:198:49 | ...; | cflow.cs:198:13:198:49 | ...; | | cflow.cs:198:17:198:21 | access to field Field | cflow.cs:198:17:198:21 | this access | | cflow.cs:198:17:198:21 | this access | cflow.cs:198:17:198:21 | this access | | cflow.cs:198:17:198:28 | access to property Length | cflow.cs:198:17:198:21 | this access | | cflow.cs:198:17:198:33 | ... == ... | cflow.cs:198:17:198:21 | this access | -| cflow.cs:198:17:198:48 | ... ? ... : ... | cflow.cs:198:17:198:21 | this access | +| cflow.cs:198:17:198:48 | ... ? ... : ... | cflow.cs:198:17:198:48 | ... ? ... : ... | | cflow.cs:198:33:198:33 | 0 | cflow.cs:198:33:198:33 | 0 | | cflow.cs:198:37:198:41 | false | cflow.cs:198:37:198:41 | false | | cflow.cs:198:45:198:48 | true | cflow.cs:198:45:198:48 | true | | cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:200:9:205:9 | if (...) ... | -| cflow.cs:200:13:200:32 | !... | cflow.cs:200:15:200:19 | this access | -| cflow.cs:200:13:200:62 | ... \|\| ... | cflow.cs:200:15:200:19 | this access | +| cflow.cs:200:13:200:32 | !... | cflow.cs:200:13:200:32 | !... | +| cflow.cs:200:13:200:62 | ... \|\| ... | cflow.cs:200:13:200:62 | ... \|\| ... | | cflow.cs:200:15:200:19 | access to field Field | cflow.cs:200:15:200:19 | this access | | cflow.cs:200:15:200:19 | this access | cflow.cs:200:15:200:19 | this access | | cflow.cs:200:15:200:26 | access to property Length | cflow.cs:200:15:200:19 | this access | | cflow.cs:200:15:200:31 | ... == ... | cflow.cs:200:15:200:19 | this access | | cflow.cs:200:31:200:31 | 0 | cflow.cs:200:31:200:31 | 0 | -| cflow.cs:200:37:200:62 | !... | cflow.cs:200:40:200:44 | this access | -| cflow.cs:200:38:200:62 | !... | cflow.cs:200:40:200:44 | this access | +| cflow.cs:200:37:200:62 | !... | cflow.cs:200:37:200:62 | !... | +| cflow.cs:200:38:200:62 | !... | cflow.cs:200:38:200:62 | !... | | cflow.cs:200:40:200:44 | access to field Field | cflow.cs:200:40:200:44 | this access | | cflow.cs:200:40:200:44 | this access | cflow.cs:200:40:200:44 | this access | | cflow.cs:200:40:200:51 | access to property Length | cflow.cs:200:40:200:44 | this access | | cflow.cs:200:40:200:56 | ... == ... | cflow.cs:200:40:200:44 | this access | -| cflow.cs:200:40:200:61 | ... && ... | cflow.cs:200:40:200:44 | this access | +| cflow.cs:200:40:200:61 | ... && ... | cflow.cs:200:40:200:61 | ... && ... | | cflow.cs:200:56:200:56 | 1 | cflow.cs:200:56:200:56 | 1 | | cflow.cs:200:61:200:61 | access to local variable b | cflow.cs:200:61:200:61 | access to local variable b | | cflow.cs:201:9:205:9 | {...} | cflow.cs:201:9:205:9 | {...} | @@ -3385,7 +3666,7 @@ | cflow.cs:221:18:221:34 | ... < ... | cflow.cs:221:18:221:22 | this access | | cflow.cs:221:33:221:34 | 10 | cflow.cs:221:33:221:34 | 10 | | cflow.cs:225:5:238:5 | {...} | cflow.cs:225:5:238:5 | {...} | -| cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | cflow.cs:226:57:226:59 | "a" | +| cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | | cflow.cs:226:22:226:22 | String x | cflow.cs:226:22:226:22 | String x | | cflow.cs:226:27:226:64 | call to method Repeat | cflow.cs:226:57:226:59 | "a" | | cflow.cs:226:57:226:59 | "a" | cflow.cs:226:57:226:59 | "a" | @@ -3415,8 +3696,8 @@ | cflow.cs:241:5:259:5 | {...} | cflow.cs:241:5:259:5 | {...} | | cflow.cs:242:5:242:9 | Label: | cflow.cs:242:5:242:9 | Label: | | cflow.cs:242:12:242:41 | if (...) ... | cflow.cs:242:12:242:41 | if (...) ... | -| cflow.cs:242:16:242:36 | !... | cflow.cs:242:19:242:23 | this access | -| cflow.cs:242:17:242:36 | !... | cflow.cs:242:19:242:23 | this access | +| cflow.cs:242:16:242:36 | !... | cflow.cs:242:16:242:36 | !... | +| cflow.cs:242:17:242:36 | !... | cflow.cs:242:17:242:36 | !... | | cflow.cs:242:19:242:23 | access to field Field | cflow.cs:242:19:242:23 | this access | | cflow.cs:242:19:242:23 | this access | cflow.cs:242:19:242:23 | this access | | cflow.cs:242:19:242:30 | access to property Length | cflow.cs:242:19:242:23 | this access | @@ -3457,7 +3738,8 @@ | cflow.cs:263:9:263:23 | yield return ...; | cflow.cs:263:22:263:22 | 0 | | cflow.cs:263:22:263:22 | 0 | cflow.cs:263:22:263:22 | 0 | | cflow.cs:264:9:267:9 | for (...;...;...) ... | cflow.cs:264:9:267:9 | for (...;...;...) ... | -| cflow.cs:264:18:264:22 | Int32 i = ... | cflow.cs:264:22:264:22 | 1 | +| cflow.cs:264:18:264:18 | access to local variable i | cflow.cs:264:18:264:18 | access to local variable i | +| cflow.cs:264:18:264:22 | Int32 i = ... | cflow.cs:264:18:264:18 | access to local variable i | | cflow.cs:264:22:264:22 | 1 | cflow.cs:264:22:264:22 | 1 | | cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:264:25:264:25 | access to local variable i | | cflow.cs:264:25:264:30 | ... < ... | cflow.cs:264:25:264:25 | access to local variable i | @@ -3470,9 +3752,6 @@ | cflow.cs:268:9:276:9 | try {...} ... | cflow.cs:268:9:276:9 | try {...} ... | | cflow.cs:269:9:272:9 | {...} | cflow.cs:269:9:272:9 | {...} | | cflow.cs:270:13:270:24 | yield break; | cflow.cs:270:13:270:24 | yield break; | -| cflow.cs:271:13:271:42 | call to method WriteLine | cflow.cs:271:31:271:41 | "dead code" | -| cflow.cs:271:13:271:43 | ...; | cflow.cs:271:13:271:43 | ...; | -| cflow.cs:271:31:271:41 | "dead code" | cflow.cs:271:31:271:41 | "dead code" | | cflow.cs:274:9:276:9 | {...} | cflow.cs:274:9:276:9 | {...} | | cflow.cs:275:13:275:41 | call to method WriteLine | cflow.cs:275:31:275:40 | "not dead" | | cflow.cs:275:13:275:42 | ...; | cflow.cs:275:13:275:42 | ...; | @@ -3481,8 +3760,10 @@ | cflow.cs:282:5:282:18 | this access | cflow.cs:282:5:282:18 | this access | | cflow.cs:282:24:282:27 | call to constructor ControlFlow | cflow.cs:282:24:282:27 | call to constructor ControlFlow | | cflow.cs:282:31:282:33 | {...} | cflow.cs:282:31:282:33 | {...} | +| cflow.cs:284:27:284:27 | s | cflow.cs:284:27:284:27 | s | | cflow.cs:284:32:284:35 | call to constructor ControlFlowSub | cflow.cs:284:32:284:35 | call to constructor ControlFlowSub | | cflow.cs:284:39:284:41 | {...} | cflow.cs:284:39:284:41 | {...} | +| cflow.cs:286:24:286:24 | i | cflow.cs:286:24:286:24 | i | | cflow.cs:286:29:286:32 | call to constructor ControlFlowSub | cflow.cs:286:34:286:34 | access to parameter i | | cflow.cs:286:34:286:34 | access to parameter i | cflow.cs:286:34:286:34 | access to parameter i | | cflow.cs:286:34:286:45 | call to method ToString | cflow.cs:286:34:286:34 | access to parameter i | @@ -3491,19 +3772,26 @@ | cflow.cs:289:7:289:18 | call to method | cflow.cs:289:7:289:18 | this access | | cflow.cs:289:7:289:18 | this access | cflow.cs:289:7:289:18 | this access | | cflow.cs:289:7:289:18 | {...} | cflow.cs:289:7:289:18 | {...} | +| cflow.cs:291:32:291:32 | f | cflow.cs:291:32:291:32 | f | | cflow.cs:291:38:291:38 | access to parameter f | cflow.cs:291:38:291:38 | access to parameter f | | cflow.cs:291:38:291:41 | delegate call | cflow.cs:291:38:291:38 | access to parameter f | | cflow.cs:291:40:291:40 | 0 | cflow.cs:291:40:291:40 | 0 | | cflow.cs:296:5:296:25 | call to constructor Object | cflow.cs:296:5:296:25 | call to constructor Object | | cflow.cs:296:5:296:25 | call to method | cflow.cs:296:5:296:25 | this access | | cflow.cs:296:5:296:25 | this access | cflow.cs:296:5:296:25 | this access | +| cflow.cs:296:32:296:32 | b | cflow.cs:296:32:296:32 | b | +| cflow.cs:296:39:296:39 | i | cflow.cs:296:39:296:39 | i | +| cflow.cs:296:49:296:49 | s | cflow.cs:296:49:296:49 | s | | cflow.cs:296:52:296:54 | {...} | cflow.cs:296:52:296:54 | {...} | +| cflow.cs:298:16:298:16 | i | cflow.cs:298:16:298:16 | i | +| cflow.cs:298:26:298:26 | s | cflow.cs:298:26:298:26 | s | +| cflow.cs:298:34:298:34 | b | cflow.cs:298:34:298:34 | b | | cflow.cs:299:5:301:5 | {...} | cflow.cs:299:5:301:5 | {...} | | cflow.cs:300:9:300:72 | object creation of type NegationInConstructor | cflow.cs:300:38:300:38 | 0 | | cflow.cs:300:9:300:73 | ...; | cflow.cs:300:9:300:73 | ...; | | cflow.cs:300:38:300:38 | 0 | cflow.cs:300:38:300:38 | 0 | -| cflow.cs:300:44:300:51 | !... | cflow.cs:300:46:300:46 | access to parameter i | -| cflow.cs:300:44:300:64 | ... && ... | cflow.cs:300:46:300:46 | access to parameter i | +| cflow.cs:300:44:300:51 | !... | cflow.cs:300:44:300:51 | !... | +| cflow.cs:300:44:300:64 | ... && ... | cflow.cs:300:44:300:64 | ... && ... | | cflow.cs:300:46:300:46 | access to parameter i | cflow.cs:300:46:300:46 | access to parameter i | | cflow.cs:300:46:300:50 | ... > ... | cflow.cs:300:46:300:46 | access to parameter i | | cflow.cs:300:50:300:50 | 0 | cflow.cs:300:50:300:50 | 0 | @@ -3516,9 +3804,12 @@ | cflow.cs:304:7:304:18 | this access | cflow.cs:304:7:304:18 | this access | | cflow.cs:304:7:304:18 | {...} | cflow.cs:304:7:304:18 | {...} | | cflow.cs:306:60:310:5 | (...) => ... | cflow.cs:306:60:310:5 | (...) => ... | +| cflow.cs:306:61:306:61 | o | cflow.cs:306:61:306:61 | o | +| cflow.cs:306:64:306:64 | n | cflow.cs:306:64:306:64 | n | | cflow.cs:307:5:310:5 | {...} | cflow.cs:307:5:310:5 | {...} | | cflow.cs:308:9:308:21 | ... ...; | cflow.cs:308:9:308:21 | ... ...; | -| cflow.cs:308:16:308:20 | Object x = ... | cflow.cs:308:20:308:20 | access to parameter o | +| cflow.cs:308:16:308:16 | access to local variable x | cflow.cs:308:16:308:16 | access to local variable x | +| cflow.cs:308:16:308:20 | Object x = ... | cflow.cs:308:16:308:16 | access to local variable x | | cflow.cs:308:20:308:20 | access to parameter o | cflow.cs:308:20:308:20 | access to parameter o | | cflow.cs:309:9:309:17 | return ...; | cflow.cs:309:16:309:16 | access to local variable x | | cflow.cs:309:16:309:16 | access to local variable x | cflow.cs:309:16:309:16 | access to local variable x | diff --git a/csharp/ql/test/library-tests/controlflow/graph/EntryElement.ql b/csharp/ql/test/library-tests/controlflow/graph/EntryElement.ql index 08f37467efef..60bd04647fda 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/EntryElement.ql +++ b/csharp/ql/test/library-tests/controlflow/graph/EntryElement.ql @@ -1,7 +1,14 @@ import csharp import Common -import semmle.code.csharp.controlflow.internal.ControlFlowGraphImpl + +predicate first(SourceControlFlowElement cfe, ControlFlowNode first) { + first.isBefore(cfe) + or + exists(ControlFlowNode mid | + first(cfe, mid) and not mid.injects(_) and first = mid.getASuccessor() + ) +} from SourceControlFlowElement cfe, ControlFlowElement first -where first(cfe, first) +where first(cfe, first.getControlFlowNode()) select cfe, first diff --git a/csharp/ql/test/library-tests/controlflow/graph/ExitElement.expected b/csharp/ql/test/library-tests/controlflow/graph/ExitElement.expected deleted file mode 100644 index 602dd8c2a528..000000000000 --- a/csharp/ql/test/library-tests/controlflow/graph/ExitElement.expected +++ /dev/null @@ -1,4540 +0,0 @@ -| AccessorCalls.cs:1:7:1:19 | call to constructor Object | AccessorCalls.cs:1:7:1:19 | call to constructor Object | normal | -| AccessorCalls.cs:1:7:1:19 | call to method | AccessorCalls.cs:1:7:1:19 | call to method | normal | -| AccessorCalls.cs:1:7:1:19 | this access | AccessorCalls.cs:1:7:1:19 | this access | normal | -| AccessorCalls.cs:1:7:1:19 | {...} | AccessorCalls.cs:1:7:1:19 | {...} | normal | -| AccessorCalls.cs:5:30:5:30 | access to parameter i | AccessorCalls.cs:5:30:5:30 | access to parameter i | normal | -| AccessorCalls.cs:5:37:5:39 | {...} | AccessorCalls.cs:5:37:5:39 | {...} | normal | -| AccessorCalls.cs:7:36:7:38 | {...} | AccessorCalls.cs:7:36:7:38 | {...} | normal | -| AccessorCalls.cs:7:47:7:49 | {...} | AccessorCalls.cs:7:47:7:49 | {...} | normal | -| AccessorCalls.cs:11:5:17:5 | {...} | AccessorCalls.cs:16:9:16:23 | ... -= ... | normal | -| AccessorCalls.cs:12:9:12:12 | this access | AccessorCalls.cs:12:9:12:12 | this access | normal | -| AccessorCalls.cs:12:9:12:18 | access to field Field | AccessorCalls.cs:12:9:12:12 | this access | normal | -| AccessorCalls.cs:12:9:12:31 | ... = ... | AccessorCalls.cs:12:9:12:31 | ... = ... | normal | -| AccessorCalls.cs:12:9:12:32 | ...; | AccessorCalls.cs:12:9:12:31 | ... = ... | normal | -| AccessorCalls.cs:12:22:12:25 | this access | AccessorCalls.cs:12:22:12:25 | this access | normal | -| AccessorCalls.cs:12:22:12:31 | access to field Field | AccessorCalls.cs:12:22:12:31 | access to field Field | normal | -| AccessorCalls.cs:13:9:13:12 | this access | AccessorCalls.cs:13:9:13:12 | this access | normal | -| AccessorCalls.cs:13:9:13:17 | access to property Prop | AccessorCalls.cs:13:9:13:12 | this access | normal | -| AccessorCalls.cs:13:9:13:29 | ... = ... | AccessorCalls.cs:13:9:13:29 | ... = ... | normal | -| AccessorCalls.cs:13:9:13:30 | ...; | AccessorCalls.cs:13:9:13:29 | ... = ... | normal | -| AccessorCalls.cs:13:21:13:24 | this access | AccessorCalls.cs:13:21:13:24 | this access | normal | -| AccessorCalls.cs:13:21:13:29 | access to property Prop | AccessorCalls.cs:13:21:13:29 | access to property Prop | normal | -| AccessorCalls.cs:14:9:14:12 | this access | AccessorCalls.cs:14:9:14:12 | this access | normal | -| AccessorCalls.cs:14:9:14:15 | access to indexer | AccessorCalls.cs:14:14:14:14 | 0 | normal | -| AccessorCalls.cs:14:9:14:25 | ... = ... | AccessorCalls.cs:14:9:14:25 | ... = ... | normal | -| AccessorCalls.cs:14:9:14:26 | ...; | AccessorCalls.cs:14:9:14:25 | ... = ... | normal | -| AccessorCalls.cs:14:14:14:14 | 0 | AccessorCalls.cs:14:14:14:14 | 0 | normal | -| AccessorCalls.cs:14:19:14:22 | this access | AccessorCalls.cs:14:19:14:22 | this access | normal | -| AccessorCalls.cs:14:19:14:25 | access to indexer | AccessorCalls.cs:14:19:14:25 | access to indexer | normal | -| AccessorCalls.cs:14:24:14:24 | 1 | AccessorCalls.cs:14:24:14:24 | 1 | normal | -| AccessorCalls.cs:15:9:15:12 | this access | AccessorCalls.cs:15:9:15:12 | this access | normal | -| AccessorCalls.cs:15:9:15:18 | access to event Event | AccessorCalls.cs:15:9:15:12 | this access | normal | -| AccessorCalls.cs:15:9:15:23 | ... += ... | AccessorCalls.cs:15:9:15:23 | ... += ... | normal | -| AccessorCalls.cs:15:9:15:24 | ...; | AccessorCalls.cs:15:9:15:23 | ... += ... | normal | -| AccessorCalls.cs:15:23:15:23 | access to parameter e | AccessorCalls.cs:15:23:15:23 | access to parameter e | normal | -| AccessorCalls.cs:16:9:16:12 | this access | AccessorCalls.cs:16:9:16:12 | this access | normal | -| AccessorCalls.cs:16:9:16:18 | access to event Event | AccessorCalls.cs:16:9:16:12 | this access | normal | -| AccessorCalls.cs:16:9:16:23 | ... -= ... | AccessorCalls.cs:16:9:16:23 | ... -= ... | normal | -| AccessorCalls.cs:16:9:16:24 | ...; | AccessorCalls.cs:16:9:16:23 | ... -= ... | normal | -| AccessorCalls.cs:16:23:16:23 | access to parameter e | AccessorCalls.cs:16:23:16:23 | access to parameter e | normal | -| AccessorCalls.cs:20:5:26:5 | {...} | AccessorCalls.cs:25:9:25:25 | ... -= ... | normal | -| AccessorCalls.cs:21:9:21:12 | this access | AccessorCalls.cs:21:9:21:12 | this access | normal | -| AccessorCalls.cs:21:9:21:14 | access to field x | AccessorCalls.cs:21:9:21:14 | access to field x | normal | -| AccessorCalls.cs:21:9:21:20 | access to field Field | AccessorCalls.cs:21:9:21:14 | access to field x | normal | -| AccessorCalls.cs:21:9:21:35 | ... = ... | AccessorCalls.cs:21:9:21:35 | ... = ... | normal | -| AccessorCalls.cs:21:9:21:36 | ...; | AccessorCalls.cs:21:9:21:35 | ... = ... | normal | -| AccessorCalls.cs:21:24:21:27 | this access | AccessorCalls.cs:21:24:21:27 | this access | normal | -| AccessorCalls.cs:21:24:21:29 | access to field x | AccessorCalls.cs:21:24:21:29 | access to field x | normal | -| AccessorCalls.cs:21:24:21:35 | access to field Field | AccessorCalls.cs:21:24:21:35 | access to field Field | normal | -| AccessorCalls.cs:22:9:22:12 | this access | AccessorCalls.cs:22:9:22:12 | this access | normal | -| AccessorCalls.cs:22:9:22:14 | access to field x | AccessorCalls.cs:22:9:22:14 | access to field x | normal | -| AccessorCalls.cs:22:9:22:19 | access to property Prop | AccessorCalls.cs:22:9:22:14 | access to field x | normal | -| AccessorCalls.cs:22:9:22:33 | ... = ... | AccessorCalls.cs:22:9:22:33 | ... = ... | normal | -| AccessorCalls.cs:22:9:22:34 | ...; | AccessorCalls.cs:22:9:22:33 | ... = ... | normal | -| AccessorCalls.cs:22:23:22:26 | this access | AccessorCalls.cs:22:23:22:26 | this access | normal | -| AccessorCalls.cs:22:23:22:28 | access to field x | AccessorCalls.cs:22:23:22:28 | access to field x | normal | -| AccessorCalls.cs:22:23:22:33 | access to property Prop | AccessorCalls.cs:22:23:22:33 | access to property Prop | normal | -| AccessorCalls.cs:23:9:23:12 | this access | AccessorCalls.cs:23:9:23:12 | this access | normal | -| AccessorCalls.cs:23:9:23:14 | access to field x | AccessorCalls.cs:23:9:23:14 | access to field x | normal | -| AccessorCalls.cs:23:9:23:17 | access to indexer | AccessorCalls.cs:23:16:23:16 | 0 | normal | -| AccessorCalls.cs:23:9:23:29 | ... = ... | AccessorCalls.cs:23:9:23:29 | ... = ... | normal | -| AccessorCalls.cs:23:9:23:30 | ...; | AccessorCalls.cs:23:9:23:29 | ... = ... | normal | -| AccessorCalls.cs:23:16:23:16 | 0 | AccessorCalls.cs:23:16:23:16 | 0 | normal | -| AccessorCalls.cs:23:21:23:24 | this access | AccessorCalls.cs:23:21:23:24 | this access | normal | -| AccessorCalls.cs:23:21:23:26 | access to field x | AccessorCalls.cs:23:21:23:26 | access to field x | normal | -| AccessorCalls.cs:23:21:23:29 | access to indexer | AccessorCalls.cs:23:21:23:29 | access to indexer | normal | -| AccessorCalls.cs:23:28:23:28 | 1 | AccessorCalls.cs:23:28:23:28 | 1 | normal | -| AccessorCalls.cs:24:9:24:12 | this access | AccessorCalls.cs:24:9:24:12 | this access | normal | -| AccessorCalls.cs:24:9:24:14 | access to field x | AccessorCalls.cs:24:9:24:14 | access to field x | normal | -| AccessorCalls.cs:24:9:24:20 | access to event Event | AccessorCalls.cs:24:9:24:14 | access to field x | normal | -| AccessorCalls.cs:24:9:24:25 | ... += ... | AccessorCalls.cs:24:9:24:25 | ... += ... | normal | -| AccessorCalls.cs:24:9:24:26 | ...; | AccessorCalls.cs:24:9:24:25 | ... += ... | normal | -| AccessorCalls.cs:24:25:24:25 | access to parameter e | AccessorCalls.cs:24:25:24:25 | access to parameter e | normal | -| AccessorCalls.cs:25:9:25:12 | this access | AccessorCalls.cs:25:9:25:12 | this access | normal | -| AccessorCalls.cs:25:9:25:14 | access to field x | AccessorCalls.cs:25:9:25:14 | access to field x | normal | -| AccessorCalls.cs:25:9:25:20 | access to event Event | AccessorCalls.cs:25:9:25:14 | access to field x | normal | -| AccessorCalls.cs:25:9:25:25 | ... -= ... | AccessorCalls.cs:25:9:25:25 | ... -= ... | normal | -| AccessorCalls.cs:25:9:25:26 | ...; | AccessorCalls.cs:25:9:25:25 | ... -= ... | normal | -| AccessorCalls.cs:25:25:25:25 | access to parameter e | AccessorCalls.cs:25:25:25:25 | access to parameter e | normal | -| AccessorCalls.cs:29:5:33:5 | {...} | AccessorCalls.cs:32:9:32:17 | ...++ | normal | -| AccessorCalls.cs:30:9:30:12 | this access | AccessorCalls.cs:30:9:30:12 | this access | normal | -| AccessorCalls.cs:30:9:30:18 | access to field Field | AccessorCalls.cs:30:9:30:18 | access to field Field | normal | -| AccessorCalls.cs:30:9:30:20 | ...++ | AccessorCalls.cs:30:9:30:20 | ...++ | normal | -| AccessorCalls.cs:30:9:30:21 | ...; | AccessorCalls.cs:30:9:30:20 | ...++ | normal | -| AccessorCalls.cs:31:9:31:12 | this access | AccessorCalls.cs:31:9:31:12 | this access | normal | -| AccessorCalls.cs:31:9:31:17 | access to property Prop | AccessorCalls.cs:31:9:31:17 | access to property Prop | normal | -| AccessorCalls.cs:31:9:31:19 | ...++ | AccessorCalls.cs:31:9:31:19 | ...++ | normal | -| AccessorCalls.cs:31:9:31:20 | ...; | AccessorCalls.cs:31:9:31:19 | ...++ | normal | -| AccessorCalls.cs:32:9:32:12 | this access | AccessorCalls.cs:32:9:32:12 | this access | normal | -| AccessorCalls.cs:32:9:32:15 | access to indexer | AccessorCalls.cs:32:9:32:15 | access to indexer | normal | -| AccessorCalls.cs:32:9:32:17 | ...++ | AccessorCalls.cs:32:9:32:17 | ...++ | normal | -| AccessorCalls.cs:32:9:32:18 | ...; | AccessorCalls.cs:32:9:32:17 | ...++ | normal | -| AccessorCalls.cs:32:14:32:14 | 0 | AccessorCalls.cs:32:14:32:14 | 0 | normal | -| AccessorCalls.cs:36:5:40:5 | {...} | AccessorCalls.cs:39:9:39:19 | ...++ | normal | -| AccessorCalls.cs:37:9:37:12 | this access | AccessorCalls.cs:37:9:37:12 | this access | normal | -| AccessorCalls.cs:37:9:37:14 | access to field x | AccessorCalls.cs:37:9:37:14 | access to field x | normal | -| AccessorCalls.cs:37:9:37:20 | access to field Field | AccessorCalls.cs:37:9:37:20 | access to field Field | normal | -| AccessorCalls.cs:37:9:37:22 | ...++ | AccessorCalls.cs:37:9:37:22 | ...++ | normal | -| AccessorCalls.cs:37:9:37:23 | ...; | AccessorCalls.cs:37:9:37:22 | ...++ | normal | -| AccessorCalls.cs:38:9:38:12 | this access | AccessorCalls.cs:38:9:38:12 | this access | normal | -| AccessorCalls.cs:38:9:38:14 | access to field x | AccessorCalls.cs:38:9:38:14 | access to field x | normal | -| AccessorCalls.cs:38:9:38:19 | access to property Prop | AccessorCalls.cs:38:9:38:19 | access to property Prop | normal | -| AccessorCalls.cs:38:9:38:21 | ...++ | AccessorCalls.cs:38:9:38:21 | ...++ | normal | -| AccessorCalls.cs:38:9:38:22 | ...; | AccessorCalls.cs:38:9:38:21 | ...++ | normal | -| AccessorCalls.cs:39:9:39:12 | this access | AccessorCalls.cs:39:9:39:12 | this access | normal | -| AccessorCalls.cs:39:9:39:14 | access to field x | AccessorCalls.cs:39:9:39:14 | access to field x | normal | -| AccessorCalls.cs:39:9:39:17 | access to indexer | AccessorCalls.cs:39:9:39:17 | access to indexer | normal | -| AccessorCalls.cs:39:9:39:19 | ...++ | AccessorCalls.cs:39:9:39:19 | ...++ | normal | -| AccessorCalls.cs:39:9:39:20 | ...; | AccessorCalls.cs:39:9:39:19 | ...++ | normal | -| AccessorCalls.cs:39:16:39:16 | 0 | AccessorCalls.cs:39:16:39:16 | 0 | normal | -| AccessorCalls.cs:43:5:47:5 | {...} | AccessorCalls.cs:46:9:46:26 | ... += ... | normal | -| AccessorCalls.cs:44:9:44:12 | this access | AccessorCalls.cs:44:9:44:12 | this access | normal | -| AccessorCalls.cs:44:9:44:18 | access to field Field | AccessorCalls.cs:44:9:44:18 | access to field Field | normal | -| AccessorCalls.cs:44:9:44:32 | ... += ... | AccessorCalls.cs:44:9:44:32 | ... += ... | normal | -| AccessorCalls.cs:44:9:44:33 | ...; | AccessorCalls.cs:44:9:44:32 | ... += ... | normal | -| AccessorCalls.cs:44:23:44:26 | this access | AccessorCalls.cs:44:23:44:26 | this access | normal | -| AccessorCalls.cs:44:23:44:32 | access to field Field | AccessorCalls.cs:44:23:44:32 | access to field Field | normal | -| AccessorCalls.cs:45:9:45:12 | this access | AccessorCalls.cs:45:9:45:12 | this access | normal | -| AccessorCalls.cs:45:9:45:17 | access to property Prop | AccessorCalls.cs:45:9:45:17 | access to property Prop | normal | -| AccessorCalls.cs:45:9:45:30 | ... += ... | AccessorCalls.cs:45:9:45:30 | ... += ... | normal | -| AccessorCalls.cs:45:9:45:31 | ...; | AccessorCalls.cs:45:9:45:30 | ... += ... | normal | -| AccessorCalls.cs:45:22:45:25 | this access | AccessorCalls.cs:45:22:45:25 | this access | normal | -| AccessorCalls.cs:45:22:45:30 | access to property Prop | AccessorCalls.cs:45:22:45:30 | access to property Prop | normal | -| AccessorCalls.cs:46:9:46:12 | this access | AccessorCalls.cs:46:9:46:12 | this access | normal | -| AccessorCalls.cs:46:9:46:15 | access to indexer | AccessorCalls.cs:46:9:46:15 | access to indexer | normal | -| AccessorCalls.cs:46:9:46:26 | ... += ... | AccessorCalls.cs:46:9:46:26 | ... += ... | normal | -| AccessorCalls.cs:46:9:46:27 | ...; | AccessorCalls.cs:46:9:46:26 | ... += ... | normal | -| AccessorCalls.cs:46:14:46:14 | 0 | AccessorCalls.cs:46:14:46:14 | 0 | normal | -| AccessorCalls.cs:46:20:46:23 | this access | AccessorCalls.cs:46:20:46:23 | this access | normal | -| AccessorCalls.cs:46:20:46:26 | access to indexer | AccessorCalls.cs:46:20:46:26 | access to indexer | normal | -| AccessorCalls.cs:46:25:46:25 | 0 | AccessorCalls.cs:46:25:46:25 | 0 | normal | -| AccessorCalls.cs:50:5:54:5 | {...} | AccessorCalls.cs:53:9:53:30 | ... += ... | normal | -| AccessorCalls.cs:51:9:51:12 | this access | AccessorCalls.cs:51:9:51:12 | this access | normal | -| AccessorCalls.cs:51:9:51:14 | access to field x | AccessorCalls.cs:51:9:51:14 | access to field x | normal | -| AccessorCalls.cs:51:9:51:20 | access to field Field | AccessorCalls.cs:51:9:51:20 | access to field Field | normal | -| AccessorCalls.cs:51:9:51:36 | ... += ... | AccessorCalls.cs:51:9:51:36 | ... += ... | normal | -| AccessorCalls.cs:51:9:51:37 | ...; | AccessorCalls.cs:51:9:51:36 | ... += ... | normal | -| AccessorCalls.cs:51:25:51:28 | this access | AccessorCalls.cs:51:25:51:28 | this access | normal | -| AccessorCalls.cs:51:25:51:30 | access to field x | AccessorCalls.cs:51:25:51:30 | access to field x | normal | -| AccessorCalls.cs:51:25:51:36 | access to field Field | AccessorCalls.cs:51:25:51:36 | access to field Field | normal | -| AccessorCalls.cs:52:9:52:12 | this access | AccessorCalls.cs:52:9:52:12 | this access | normal | -| AccessorCalls.cs:52:9:52:14 | access to field x | AccessorCalls.cs:52:9:52:14 | access to field x | normal | -| AccessorCalls.cs:52:9:52:19 | access to property Prop | AccessorCalls.cs:52:9:52:19 | access to property Prop | normal | -| AccessorCalls.cs:52:9:52:34 | ... += ... | AccessorCalls.cs:52:9:52:34 | ... += ... | normal | -| AccessorCalls.cs:52:9:52:35 | ...; | AccessorCalls.cs:52:9:52:34 | ... += ... | normal | -| AccessorCalls.cs:52:24:52:27 | this access | AccessorCalls.cs:52:24:52:27 | this access | normal | -| AccessorCalls.cs:52:24:52:29 | access to field x | AccessorCalls.cs:52:24:52:29 | access to field x | normal | -| AccessorCalls.cs:52:24:52:34 | access to property Prop | AccessorCalls.cs:52:24:52:34 | access to property Prop | normal | -| AccessorCalls.cs:53:9:53:12 | this access | AccessorCalls.cs:53:9:53:12 | this access | normal | -| AccessorCalls.cs:53:9:53:14 | access to field x | AccessorCalls.cs:53:9:53:14 | access to field x | normal | -| AccessorCalls.cs:53:9:53:17 | access to indexer | AccessorCalls.cs:53:9:53:17 | access to indexer | normal | -| AccessorCalls.cs:53:9:53:30 | ... += ... | AccessorCalls.cs:53:9:53:30 | ... += ... | normal | -| AccessorCalls.cs:53:9:53:31 | ...; | AccessorCalls.cs:53:9:53:30 | ... += ... | normal | -| AccessorCalls.cs:53:16:53:16 | 0 | AccessorCalls.cs:53:16:53:16 | 0 | normal | -| AccessorCalls.cs:53:22:53:25 | this access | AccessorCalls.cs:53:22:53:25 | this access | normal | -| AccessorCalls.cs:53:22:53:27 | access to field x | AccessorCalls.cs:53:22:53:27 | access to field x | normal | -| AccessorCalls.cs:53:22:53:30 | access to indexer | AccessorCalls.cs:53:22:53:30 | access to indexer | normal | -| AccessorCalls.cs:53:29:53:29 | 0 | AccessorCalls.cs:53:29:53:29 | 0 | normal | -| AccessorCalls.cs:57:5:59:5 | {...} | AccessorCalls.cs:58:9:58:85 | ... = ... | normal | -| AccessorCalls.cs:58:9:58:45 | (..., ...) | AccessorCalls.cs:58:9:58:45 | (..., ...) | normal | -| AccessorCalls.cs:58:9:58:85 | ... = ... | AccessorCalls.cs:58:9:58:85 | ... = ... | normal | -| AccessorCalls.cs:58:9:58:86 | ...; | AccessorCalls.cs:58:9:58:85 | ... = ... | normal | -| AccessorCalls.cs:58:10:58:13 | this access | AccessorCalls.cs:58:10:58:13 | this access | normal | -| AccessorCalls.cs:58:10:58:19 | access to field Field | AccessorCalls.cs:58:10:58:13 | this access | normal | -| AccessorCalls.cs:58:22:58:25 | this access | AccessorCalls.cs:58:22:58:25 | this access | normal | -| AccessorCalls.cs:58:22:58:30 | access to property Prop | AccessorCalls.cs:58:22:58:25 | this access | normal | -| AccessorCalls.cs:58:33:58:44 | (..., ...) | AccessorCalls.cs:58:33:58:44 | (..., ...) | normal | -| AccessorCalls.cs:58:37:58:40 | this access | AccessorCalls.cs:58:37:58:40 | this access | normal | -| AccessorCalls.cs:58:37:58:43 | access to indexer | AccessorCalls.cs:58:42:58:42 | 0 | normal | -| AccessorCalls.cs:58:42:58:42 | 0 | AccessorCalls.cs:58:42:58:42 | 0 | normal | -| AccessorCalls.cs:58:49:58:85 | (..., ...) | AccessorCalls.cs:58:49:58:85 | (..., ...) | normal | -| AccessorCalls.cs:58:50:58:53 | this access | AccessorCalls.cs:58:50:58:53 | this access | normal | -| AccessorCalls.cs:58:50:58:59 | access to field Field | AccessorCalls.cs:58:50:58:59 | access to field Field | normal | -| AccessorCalls.cs:58:62:58:65 | this access | AccessorCalls.cs:58:62:58:65 | this access | normal | -| AccessorCalls.cs:58:62:58:70 | access to property Prop | AccessorCalls.cs:58:62:58:70 | access to property Prop | normal | -| AccessorCalls.cs:58:73:58:84 | (..., ...) | AccessorCalls.cs:58:73:58:84 | (..., ...) | normal | -| AccessorCalls.cs:58:74:58:74 | 0 | AccessorCalls.cs:58:74:58:74 | 0 | normal | -| AccessorCalls.cs:58:77:58:80 | this access | AccessorCalls.cs:58:77:58:80 | this access | normal | -| AccessorCalls.cs:58:77:58:83 | access to indexer | AccessorCalls.cs:58:77:58:83 | access to indexer | normal | -| AccessorCalls.cs:58:82:58:82 | 1 | AccessorCalls.cs:58:82:58:82 | 1 | normal | -| AccessorCalls.cs:62:5:64:5 | {...} | AccessorCalls.cs:63:9:63:97 | ... = ... | normal | -| AccessorCalls.cs:63:9:63:51 | (..., ...) | AccessorCalls.cs:63:9:63:51 | (..., ...) | normal | -| AccessorCalls.cs:63:9:63:97 | ... = ... | AccessorCalls.cs:63:9:63:97 | ... = ... | normal | -| AccessorCalls.cs:63:9:63:98 | ...; | AccessorCalls.cs:63:9:63:97 | ... = ... | normal | -| AccessorCalls.cs:63:10:63:13 | this access | AccessorCalls.cs:63:10:63:13 | this access | normal | -| AccessorCalls.cs:63:10:63:15 | access to field x | AccessorCalls.cs:63:10:63:15 | access to field x | normal | -| AccessorCalls.cs:63:10:63:21 | access to field Field | AccessorCalls.cs:63:10:63:15 | access to field x | normal | -| AccessorCalls.cs:63:24:63:27 | this access | AccessorCalls.cs:63:24:63:27 | this access | normal | -| AccessorCalls.cs:63:24:63:29 | access to field x | AccessorCalls.cs:63:24:63:29 | access to field x | normal | -| AccessorCalls.cs:63:24:63:34 | access to property Prop | AccessorCalls.cs:63:24:63:29 | access to field x | normal | -| AccessorCalls.cs:63:37:63:50 | (..., ...) | AccessorCalls.cs:63:37:63:50 | (..., ...) | normal | -| AccessorCalls.cs:63:41:63:44 | this access | AccessorCalls.cs:63:41:63:44 | this access | normal | -| AccessorCalls.cs:63:41:63:46 | access to field x | AccessorCalls.cs:63:41:63:46 | access to field x | normal | -| AccessorCalls.cs:63:41:63:49 | access to indexer | AccessorCalls.cs:63:48:63:48 | 0 | normal | -| AccessorCalls.cs:63:48:63:48 | 0 | AccessorCalls.cs:63:48:63:48 | 0 | normal | -| AccessorCalls.cs:63:55:63:97 | (..., ...) | AccessorCalls.cs:63:55:63:97 | (..., ...) | normal | -| AccessorCalls.cs:63:56:63:59 | this access | AccessorCalls.cs:63:56:63:59 | this access | normal | -| AccessorCalls.cs:63:56:63:61 | access to field x | AccessorCalls.cs:63:56:63:61 | access to field x | normal | -| AccessorCalls.cs:63:56:63:67 | access to field Field | AccessorCalls.cs:63:56:63:67 | access to field Field | normal | -| AccessorCalls.cs:63:70:63:73 | this access | AccessorCalls.cs:63:70:63:73 | this access | normal | -| AccessorCalls.cs:63:70:63:75 | access to field x | AccessorCalls.cs:63:70:63:75 | access to field x | normal | -| AccessorCalls.cs:63:70:63:80 | access to property Prop | AccessorCalls.cs:63:70:63:80 | access to property Prop | normal | -| AccessorCalls.cs:63:83:63:96 | (..., ...) | AccessorCalls.cs:63:83:63:96 | (..., ...) | normal | -| AccessorCalls.cs:63:84:63:84 | 0 | AccessorCalls.cs:63:84:63:84 | 0 | normal | -| AccessorCalls.cs:63:87:63:90 | this access | AccessorCalls.cs:63:87:63:90 | this access | normal | -| AccessorCalls.cs:63:87:63:92 | access to field x | AccessorCalls.cs:63:87:63:92 | access to field x | normal | -| AccessorCalls.cs:63:87:63:95 | access to indexer | AccessorCalls.cs:63:87:63:95 | access to indexer | normal | -| AccessorCalls.cs:63:94:63:94 | 1 | AccessorCalls.cs:63:94:63:94 | 1 | normal | -| AccessorCalls.cs:67:5:74:5 | {...} | AccessorCalls.cs:73:9:73:83 | ... = ... | normal | -| AccessorCalls.cs:68:9:68:22 | ... ...; | AccessorCalls.cs:68:17:68:21 | dynamic d = ... | normal | -| AccessorCalls.cs:68:17:68:21 | dynamic d = ... | AccessorCalls.cs:68:17:68:21 | dynamic d = ... | normal | -| AccessorCalls.cs:68:21:68:21 | access to parameter o | AccessorCalls.cs:68:21:68:21 | access to parameter o | normal | -| AccessorCalls.cs:69:9:69:9 | access to local variable d | AccessorCalls.cs:69:9:69:9 | access to local variable d | normal | -| AccessorCalls.cs:69:9:69:20 | dynamic access to member MaybeProp1 | AccessorCalls.cs:69:9:69:9 | access to local variable d | normal | -| AccessorCalls.cs:69:9:69:35 | ... = ... | AccessorCalls.cs:69:9:69:35 | ... = ... | normal | -| AccessorCalls.cs:69:9:69:36 | ...; | AccessorCalls.cs:69:9:69:35 | ... = ... | normal | -| AccessorCalls.cs:69:24:69:24 | access to local variable d | AccessorCalls.cs:69:24:69:24 | access to local variable d | normal | -| AccessorCalls.cs:69:24:69:35 | dynamic access to member MaybeProp2 | AccessorCalls.cs:69:24:69:35 | dynamic access to member MaybeProp2 | normal | -| AccessorCalls.cs:70:9:70:9 | access to local variable d | AccessorCalls.cs:70:9:70:9 | access to local variable d | normal | -| AccessorCalls.cs:70:9:70:19 | dynamic access to member MaybeProp | AccessorCalls.cs:70:9:70:19 | dynamic access to member MaybeProp | normal | -| AccessorCalls.cs:70:9:70:21 | dynamic call to operator ++ | AccessorCalls.cs:70:9:70:21 | dynamic call to operator ++ | normal | -| AccessorCalls.cs:70:9:70:22 | ...; | AccessorCalls.cs:70:9:70:21 | dynamic call to operator ++ | normal | -| AccessorCalls.cs:71:9:71:9 | access to local variable d | AccessorCalls.cs:71:9:71:9 | access to local variable d | normal | -| AccessorCalls.cs:71:9:71:20 | dynamic access to member MaybeEvent | AccessorCalls.cs:71:9:71:20 | dynamic access to member MaybeEvent | normal | -| AccessorCalls.cs:71:9:71:25 | ... += ... | AccessorCalls.cs:71:9:71:25 | ... += ... | normal | -| AccessorCalls.cs:71:9:71:26 | ...; | AccessorCalls.cs:71:9:71:25 | ... += ... | normal | -| AccessorCalls.cs:71:25:71:25 | access to parameter e | AccessorCalls.cs:71:25:71:25 | access to parameter e | normal | -| AccessorCalls.cs:72:9:72:9 | access to local variable d | AccessorCalls.cs:72:9:72:9 | access to local variable d | normal | -| AccessorCalls.cs:72:9:72:12 | dynamic access to element | AccessorCalls.cs:72:9:72:12 | dynamic access to element | normal | -| AccessorCalls.cs:72:9:72:20 | ... += ... | AccessorCalls.cs:72:9:72:20 | ... += ... | normal | -| AccessorCalls.cs:72:9:72:21 | ...; | AccessorCalls.cs:72:9:72:20 | ... += ... | normal | -| AccessorCalls.cs:72:11:72:11 | 0 | AccessorCalls.cs:72:11:72:11 | 0 | normal | -| AccessorCalls.cs:72:17:72:17 | access to local variable d | AccessorCalls.cs:72:17:72:17 | access to local variable d | normal | -| AccessorCalls.cs:72:17:72:20 | dynamic access to element | AccessorCalls.cs:72:17:72:20 | dynamic access to element | normal | -| AccessorCalls.cs:72:19:72:19 | 1 | AccessorCalls.cs:72:19:72:19 | 1 | normal | -| AccessorCalls.cs:73:9:73:44 | (..., ...) | AccessorCalls.cs:73:9:73:44 | (..., ...) | normal | -| AccessorCalls.cs:73:9:73:83 | ... = ... | AccessorCalls.cs:73:9:73:83 | ... = ... | normal | -| AccessorCalls.cs:73:9:73:84 | ...; | AccessorCalls.cs:73:9:73:83 | ... = ... | normal | -| AccessorCalls.cs:73:10:73:10 | access to local variable d | AccessorCalls.cs:73:10:73:10 | access to local variable d | normal | -| AccessorCalls.cs:73:10:73:21 | dynamic access to member MaybeProp1 | AccessorCalls.cs:73:10:73:10 | access to local variable d | normal | -| AccessorCalls.cs:73:24:73:27 | this access | AccessorCalls.cs:73:24:73:27 | this access | normal | -| AccessorCalls.cs:73:24:73:32 | access to property Prop | AccessorCalls.cs:73:24:73:27 | this access | normal | -| AccessorCalls.cs:73:35:73:43 | (..., ...) | AccessorCalls.cs:73:35:73:43 | (..., ...) | normal | -| AccessorCalls.cs:73:39:73:39 | access to local variable d | AccessorCalls.cs:73:39:73:39 | access to local variable d | normal | -| AccessorCalls.cs:73:39:73:42 | dynamic access to element | AccessorCalls.cs:73:41:73:41 | 0 | normal | -| AccessorCalls.cs:73:41:73:41 | 0 | AccessorCalls.cs:73:41:73:41 | 0 | normal | -| AccessorCalls.cs:73:48:73:83 | (..., ...) | AccessorCalls.cs:73:48:73:83 | (..., ...) | normal | -| AccessorCalls.cs:73:49:73:49 | access to local variable d | AccessorCalls.cs:73:49:73:49 | access to local variable d | normal | -| AccessorCalls.cs:73:49:73:60 | dynamic access to member MaybeProp1 | AccessorCalls.cs:73:49:73:60 | dynamic access to member MaybeProp1 | normal | -| AccessorCalls.cs:73:63:73:66 | this access | AccessorCalls.cs:73:63:73:66 | this access | normal | -| AccessorCalls.cs:73:63:73:71 | access to property Prop | AccessorCalls.cs:73:63:73:71 | access to property Prop | normal | -| AccessorCalls.cs:73:74:73:82 | (..., ...) | AccessorCalls.cs:73:74:73:82 | (..., ...) | normal | -| AccessorCalls.cs:73:75:73:75 | 0 | AccessorCalls.cs:73:75:73:75 | 0 | normal | -| AccessorCalls.cs:73:78:73:78 | access to local variable d | AccessorCalls.cs:73:78:73:78 | access to local variable d | normal | -| AccessorCalls.cs:73:78:73:81 | dynamic access to element | AccessorCalls.cs:73:78:73:81 | dynamic access to element | normal | -| AccessorCalls.cs:73:80:73:80 | 1 | AccessorCalls.cs:73:80:73:80 | 1 | normal | -| ArrayCreation.cs:1:7:1:19 | call to constructor Object | ArrayCreation.cs:1:7:1:19 | call to constructor Object | normal | -| ArrayCreation.cs:1:7:1:19 | call to method | ArrayCreation.cs:1:7:1:19 | call to method | normal | -| ArrayCreation.cs:1:7:1:19 | this access | ArrayCreation.cs:1:7:1:19 | this access | normal | -| ArrayCreation.cs:1:7:1:19 | {...} | ArrayCreation.cs:1:7:1:19 | {...} | normal | -| ArrayCreation.cs:3:19:3:28 | array creation of type Int32[] | ArrayCreation.cs:3:19:3:28 | array creation of type Int32[] | normal | -| ArrayCreation.cs:3:27:3:27 | 0 | ArrayCreation.cs:3:27:3:27 | 0 | normal | -| ArrayCreation.cs:5:20:5:32 | array creation of type Int32[,] | ArrayCreation.cs:5:20:5:32 | array creation of type Int32[,] | normal | -| ArrayCreation.cs:5:28:5:28 | 0 | ArrayCreation.cs:5:28:5:28 | 0 | normal | -| ArrayCreation.cs:5:31:5:31 | 1 | ArrayCreation.cs:5:31:5:31 | 1 | normal | -| ArrayCreation.cs:7:19:7:36 | 2 | ArrayCreation.cs:7:19:7:36 | 2 | normal | -| ArrayCreation.cs:7:19:7:36 | array creation of type Int32[] | ArrayCreation.cs:7:29:7:36 | { ..., ... } | normal | -| ArrayCreation.cs:7:29:7:36 | { ..., ... } | ArrayCreation.cs:7:29:7:36 | { ..., ... } | normal | -| ArrayCreation.cs:7:31:7:31 | 0 | ArrayCreation.cs:7:31:7:31 | 0 | normal | -| ArrayCreation.cs:7:34:7:34 | 1 | ArrayCreation.cs:7:34:7:34 | 1 | normal | -| ArrayCreation.cs:9:20:9:52 | 2 | ArrayCreation.cs:9:20:9:52 | 2 | normal | -| ArrayCreation.cs:9:20:9:52 | 2 | ArrayCreation.cs:9:20:9:52 | 2 | normal | -| ArrayCreation.cs:9:20:9:52 | array creation of type Int32[,] | ArrayCreation.cs:9:31:9:52 | { ..., ... } | normal | -| ArrayCreation.cs:9:31:9:52 | { ..., ... } | ArrayCreation.cs:9:31:9:52 | { ..., ... } | normal | -| ArrayCreation.cs:9:33:9:40 | { ..., ... } | ArrayCreation.cs:9:33:9:40 | { ..., ... } | normal | -| ArrayCreation.cs:9:35:9:35 | 0 | ArrayCreation.cs:9:35:9:35 | 0 | normal | -| ArrayCreation.cs:9:38:9:38 | 1 | ArrayCreation.cs:9:38:9:38 | 1 | normal | -| ArrayCreation.cs:9:43:9:50 | { ..., ... } | ArrayCreation.cs:9:43:9:50 | { ..., ... } | normal | -| ArrayCreation.cs:9:45:9:45 | 2 | ArrayCreation.cs:9:45:9:45 | 2 | normal | -| ArrayCreation.cs:9:48:9:48 | 3 | ArrayCreation.cs:9:48:9:48 | 3 | normal | -| Assert.cs:5:7:5:17 | call to constructor Object | Assert.cs:5:7:5:17 | call to constructor Object | normal | -| Assert.cs:5:7:5:17 | call to method | Assert.cs:5:7:5:17 | call to method | normal | -| Assert.cs:5:7:5:17 | this access | Assert.cs:5:7:5:17 | this access | normal | -| Assert.cs:5:7:5:17 | {...} | Assert.cs:5:7:5:17 | {...} | normal | -| Assert.cs:8:5:12:5 | {...} | Assert.cs:10:9:10:31 | call to method Assert | exit | -| Assert.cs:8:5:12:5 | {...} | Assert.cs:11:9:11:35 | call to method WriteLine | normal | -| Assert.cs:9:9:9:33 | ... ...; | Assert.cs:9:16:9:32 | String s = ... | normal | -| Assert.cs:9:16:9:32 | String s = ... | Assert.cs:9:16:9:32 | String s = ... | normal | -| Assert.cs:9:20:9:20 | access to parameter b | Assert.cs:9:20:9:20 | access to parameter b | false | -| Assert.cs:9:20:9:20 | access to parameter b | Assert.cs:9:20:9:20 | access to parameter b | true | -| Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:9:20:9:32 | ... ? ... : ... | normal | -| Assert.cs:9:24:9:27 | null | Assert.cs:9:24:9:27 | null | normal | -| Assert.cs:9:31:9:32 | "" | Assert.cs:9:31:9:32 | "" | normal | -| Assert.cs:10:9:10:31 | call to method Assert | Assert.cs:10:9:10:31 | call to method Assert | exit | -| Assert.cs:10:9:10:31 | call to method Assert | Assert.cs:10:9:10:31 | call to method Assert | normal | -| Assert.cs:10:9:10:32 | ...; | Assert.cs:10:9:10:31 | call to method Assert | exit | -| Assert.cs:10:9:10:32 | ...; | Assert.cs:10:9:10:31 | call to method Assert | normal | -| Assert.cs:10:22:10:22 | access to local variable s | Assert.cs:10:22:10:22 | access to local variable s | normal | -| Assert.cs:10:22:10:30 | ... != ... | Assert.cs:10:22:10:30 | ... != ... | normal | -| Assert.cs:10:27:10:30 | null | Assert.cs:10:27:10:30 | null | normal | -| Assert.cs:11:9:11:35 | call to method WriteLine | Assert.cs:11:9:11:35 | call to method WriteLine | normal | -| Assert.cs:11:9:11:36 | ...; | Assert.cs:11:9:11:35 | call to method WriteLine | normal | -| Assert.cs:11:27:11:27 | access to local variable s | Assert.cs:11:27:11:27 | access to local variable s | normal | -| Assert.cs:11:27:11:34 | access to property Length | Assert.cs:11:27:11:34 | access to property Length | normal | -| Assert.cs:15:5:19:5 | {...} | Assert.cs:17:9:17:24 | call to method IsNull | throw(AssertFailedException) | -| Assert.cs:15:5:19:5 | {...} | Assert.cs:18:9:18:35 | call to method WriteLine | normal | -| Assert.cs:16:9:16:33 | ... ...; | Assert.cs:16:16:16:32 | String s = ... | normal | -| Assert.cs:16:16:16:32 | String s = ... | Assert.cs:16:16:16:32 | String s = ... | normal | -| Assert.cs:16:20:16:20 | access to parameter b | Assert.cs:16:20:16:20 | access to parameter b | false | -| Assert.cs:16:20:16:20 | access to parameter b | Assert.cs:16:20:16:20 | access to parameter b | true | -| Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:16:20:16:32 | ... ? ... : ... | normal | -| Assert.cs:16:24:16:27 | null | Assert.cs:16:24:16:27 | null | normal | -| Assert.cs:16:31:16:32 | "" | Assert.cs:16:31:16:32 | "" | normal | -| Assert.cs:17:9:17:24 | call to method IsNull | Assert.cs:17:9:17:24 | call to method IsNull | normal | -| Assert.cs:17:9:17:24 | call to method IsNull | Assert.cs:17:9:17:24 | call to method IsNull | throw(AssertFailedException) | -| Assert.cs:17:9:17:25 | ...; | Assert.cs:17:9:17:24 | call to method IsNull | normal | -| Assert.cs:17:9:17:25 | ...; | Assert.cs:17:9:17:24 | call to method IsNull | throw(AssertFailedException) | -| Assert.cs:17:23:17:23 | access to local variable s | Assert.cs:17:23:17:23 | access to local variable s | normal | -| Assert.cs:18:9:18:35 | call to method WriteLine | Assert.cs:18:9:18:35 | call to method WriteLine | normal | -| Assert.cs:18:9:18:36 | ...; | Assert.cs:18:9:18:35 | call to method WriteLine | normal | -| Assert.cs:18:27:18:27 | access to local variable s | Assert.cs:18:27:18:27 | access to local variable s | normal | -| Assert.cs:18:27:18:34 | access to property Length | Assert.cs:18:27:18:34 | access to property Length | normal | -| Assert.cs:22:5:26:5 | {...} | Assert.cs:24:9:24:27 | call to method IsNotNull | throw(AssertFailedException) | -| Assert.cs:22:5:26:5 | {...} | Assert.cs:25:9:25:35 | call to method WriteLine | normal | -| Assert.cs:23:9:23:33 | ... ...; | Assert.cs:23:16:23:32 | String s = ... | normal | -| Assert.cs:23:16:23:32 | String s = ... | Assert.cs:23:16:23:32 | String s = ... | normal | -| Assert.cs:23:20:23:20 | access to parameter b | Assert.cs:23:20:23:20 | access to parameter b | false | -| Assert.cs:23:20:23:20 | access to parameter b | Assert.cs:23:20:23:20 | access to parameter b | true | -| Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:23:20:23:32 | ... ? ... : ... | normal | -| Assert.cs:23:24:23:27 | null | Assert.cs:23:24:23:27 | null | normal | -| Assert.cs:23:31:23:32 | "" | Assert.cs:23:31:23:32 | "" | normal | -| Assert.cs:24:9:24:27 | call to method IsNotNull | Assert.cs:24:9:24:27 | call to method IsNotNull | normal | -| Assert.cs:24:9:24:27 | call to method IsNotNull | Assert.cs:24:9:24:27 | call to method IsNotNull | throw(AssertFailedException) | -| Assert.cs:24:9:24:28 | ...; | Assert.cs:24:9:24:27 | call to method IsNotNull | normal | -| Assert.cs:24:9:24:28 | ...; | Assert.cs:24:9:24:27 | call to method IsNotNull | throw(AssertFailedException) | -| Assert.cs:24:26:24:26 | access to local variable s | Assert.cs:24:26:24:26 | access to local variable s | normal | -| Assert.cs:25:9:25:35 | call to method WriteLine | Assert.cs:25:9:25:35 | call to method WriteLine | normal | -| Assert.cs:25:9:25:36 | ...; | Assert.cs:25:9:25:35 | call to method WriteLine | normal | -| Assert.cs:25:27:25:27 | access to local variable s | Assert.cs:25:27:25:27 | access to local variable s | normal | -| Assert.cs:25:27:25:34 | access to property Length | Assert.cs:25:27:25:34 | access to property Length | normal | -| Assert.cs:29:5:33:5 | {...} | Assert.cs:31:9:31:32 | call to method IsTrue | throw(AssertFailedException) | -| Assert.cs:29:5:33:5 | {...} | Assert.cs:32:9:32:35 | call to method WriteLine | normal | -| Assert.cs:30:9:30:33 | ... ...; | Assert.cs:30:16:30:32 | String s = ... | normal | -| Assert.cs:30:16:30:32 | String s = ... | Assert.cs:30:16:30:32 | String s = ... | normal | -| Assert.cs:30:20:30:20 | access to parameter b | Assert.cs:30:20:30:20 | access to parameter b | false | -| Assert.cs:30:20:30:20 | access to parameter b | Assert.cs:30:20:30:20 | access to parameter b | true | -| Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:30:20:30:32 | ... ? ... : ... | normal | -| Assert.cs:30:24:30:27 | null | Assert.cs:30:24:30:27 | null | normal | -| Assert.cs:30:31:30:32 | "" | Assert.cs:30:31:30:32 | "" | normal | -| Assert.cs:31:9:31:32 | call to method IsTrue | Assert.cs:31:9:31:32 | call to method IsTrue | normal | -| Assert.cs:31:9:31:32 | call to method IsTrue | Assert.cs:31:9:31:32 | call to method IsTrue | throw(AssertFailedException) | -| Assert.cs:31:9:31:33 | ...; | Assert.cs:31:9:31:32 | call to method IsTrue | normal | -| Assert.cs:31:9:31:33 | ...; | Assert.cs:31:9:31:32 | call to method IsTrue | throw(AssertFailedException) | -| Assert.cs:31:23:31:23 | access to local variable s | Assert.cs:31:23:31:23 | access to local variable s | normal | -| Assert.cs:31:23:31:31 | ... == ... | Assert.cs:31:23:31:31 | ... == ... | normal | -| Assert.cs:31:28:31:31 | null | Assert.cs:31:28:31:31 | null | normal | -| Assert.cs:32:9:32:35 | call to method WriteLine | Assert.cs:32:9:32:35 | call to method WriteLine | normal | -| Assert.cs:32:9:32:36 | ...; | Assert.cs:32:9:32:35 | call to method WriteLine | normal | -| Assert.cs:32:27:32:27 | access to local variable s | Assert.cs:32:27:32:27 | access to local variable s | normal | -| Assert.cs:32:27:32:34 | access to property Length | Assert.cs:32:27:32:34 | access to property Length | normal | -| Assert.cs:36:5:40:5 | {...} | Assert.cs:38:9:38:32 | call to method IsTrue | throw(AssertFailedException) | -| Assert.cs:36:5:40:5 | {...} | Assert.cs:39:9:39:35 | call to method WriteLine | normal | -| Assert.cs:37:9:37:33 | ... ...; | Assert.cs:37:16:37:32 | String s = ... | normal | -| Assert.cs:37:16:37:32 | String s = ... | Assert.cs:37:16:37:32 | String s = ... | normal | -| Assert.cs:37:20:37:20 | access to parameter b | Assert.cs:37:20:37:20 | access to parameter b | false | -| Assert.cs:37:20:37:20 | access to parameter b | Assert.cs:37:20:37:20 | access to parameter b | true | -| Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:37:20:37:32 | ... ? ... : ... | normal | -| Assert.cs:37:24:37:27 | null | Assert.cs:37:24:37:27 | null | normal | -| Assert.cs:37:31:37:32 | "" | Assert.cs:37:31:37:32 | "" | normal | -| Assert.cs:38:9:38:32 | call to method IsTrue | Assert.cs:38:9:38:32 | call to method IsTrue | normal | -| Assert.cs:38:9:38:32 | call to method IsTrue | Assert.cs:38:9:38:32 | call to method IsTrue | throw(AssertFailedException) | -| Assert.cs:38:9:38:33 | ...; | Assert.cs:38:9:38:32 | call to method IsTrue | normal | -| Assert.cs:38:9:38:33 | ...; | Assert.cs:38:9:38:32 | call to method IsTrue | throw(AssertFailedException) | -| Assert.cs:38:23:38:23 | access to local variable s | Assert.cs:38:23:38:23 | access to local variable s | normal | -| Assert.cs:38:23:38:31 | ... != ... | Assert.cs:38:23:38:31 | ... != ... | normal | -| Assert.cs:38:28:38:31 | null | Assert.cs:38:28:38:31 | null | normal | -| Assert.cs:39:9:39:35 | call to method WriteLine | Assert.cs:39:9:39:35 | call to method WriteLine | normal | -| Assert.cs:39:9:39:36 | ...; | Assert.cs:39:9:39:35 | call to method WriteLine | normal | -| Assert.cs:39:27:39:27 | access to local variable s | Assert.cs:39:27:39:27 | access to local variable s | normal | -| Assert.cs:39:27:39:34 | access to property Length | Assert.cs:39:27:39:34 | access to property Length | normal | -| Assert.cs:43:5:47:5 | {...} | Assert.cs:45:9:45:33 | call to method IsFalse | throw(AssertFailedException) | -| Assert.cs:43:5:47:5 | {...} | Assert.cs:46:9:46:35 | call to method WriteLine | normal | -| Assert.cs:44:9:44:33 | ... ...; | Assert.cs:44:16:44:32 | String s = ... | normal | -| Assert.cs:44:16:44:32 | String s = ... | Assert.cs:44:16:44:32 | String s = ... | normal | -| Assert.cs:44:20:44:20 | access to parameter b | Assert.cs:44:20:44:20 | access to parameter b | false | -| Assert.cs:44:20:44:20 | access to parameter b | Assert.cs:44:20:44:20 | access to parameter b | true | -| Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:44:20:44:32 | ... ? ... : ... | normal | -| Assert.cs:44:24:44:27 | null | Assert.cs:44:24:44:27 | null | normal | -| Assert.cs:44:31:44:32 | "" | Assert.cs:44:31:44:32 | "" | normal | -| Assert.cs:45:9:45:33 | call to method IsFalse | Assert.cs:45:9:45:33 | call to method IsFalse | normal | -| Assert.cs:45:9:45:33 | call to method IsFalse | Assert.cs:45:9:45:33 | call to method IsFalse | throw(AssertFailedException) | -| Assert.cs:45:9:45:34 | ...; | Assert.cs:45:9:45:33 | call to method IsFalse | normal | -| Assert.cs:45:9:45:34 | ...; | Assert.cs:45:9:45:33 | call to method IsFalse | throw(AssertFailedException) | -| Assert.cs:45:24:45:24 | access to local variable s | Assert.cs:45:24:45:24 | access to local variable s | normal | -| Assert.cs:45:24:45:32 | ... != ... | Assert.cs:45:24:45:32 | ... != ... | normal | -| Assert.cs:45:29:45:32 | null | Assert.cs:45:29:45:32 | null | normal | -| Assert.cs:46:9:46:35 | call to method WriteLine | Assert.cs:46:9:46:35 | call to method WriteLine | normal | -| Assert.cs:46:9:46:36 | ...; | Assert.cs:46:9:46:35 | call to method WriteLine | normal | -| Assert.cs:46:27:46:27 | access to local variable s | Assert.cs:46:27:46:27 | access to local variable s | normal | -| Assert.cs:46:27:46:34 | access to property Length | Assert.cs:46:27:46:34 | access to property Length | normal | -| Assert.cs:50:5:54:5 | {...} | Assert.cs:52:9:52:33 | call to method IsFalse | throw(AssertFailedException) | -| Assert.cs:50:5:54:5 | {...} | Assert.cs:53:9:53:35 | call to method WriteLine | normal | -| Assert.cs:51:9:51:33 | ... ...; | Assert.cs:51:16:51:32 | String s = ... | normal | -| Assert.cs:51:16:51:32 | String s = ... | Assert.cs:51:16:51:32 | String s = ... | normal | -| Assert.cs:51:20:51:20 | access to parameter b | Assert.cs:51:20:51:20 | access to parameter b | false | -| Assert.cs:51:20:51:20 | access to parameter b | Assert.cs:51:20:51:20 | access to parameter b | true | -| Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:51:20:51:32 | ... ? ... : ... | normal | -| Assert.cs:51:24:51:27 | null | Assert.cs:51:24:51:27 | null | normal | -| Assert.cs:51:31:51:32 | "" | Assert.cs:51:31:51:32 | "" | normal | -| Assert.cs:52:9:52:33 | call to method IsFalse | Assert.cs:52:9:52:33 | call to method IsFalse | normal | -| Assert.cs:52:9:52:33 | call to method IsFalse | Assert.cs:52:9:52:33 | call to method IsFalse | throw(AssertFailedException) | -| Assert.cs:52:9:52:34 | ...; | Assert.cs:52:9:52:33 | call to method IsFalse | normal | -| Assert.cs:52:9:52:34 | ...; | Assert.cs:52:9:52:33 | call to method IsFalse | throw(AssertFailedException) | -| Assert.cs:52:24:52:24 | access to local variable s | Assert.cs:52:24:52:24 | access to local variable s | normal | -| Assert.cs:52:24:52:32 | ... == ... | Assert.cs:52:24:52:32 | ... == ... | normal | -| Assert.cs:52:29:52:32 | null | Assert.cs:52:29:52:32 | null | normal | -| Assert.cs:53:9:53:35 | call to method WriteLine | Assert.cs:53:9:53:35 | call to method WriteLine | normal | -| Assert.cs:53:9:53:36 | ...; | Assert.cs:53:9:53:35 | call to method WriteLine | normal | -| Assert.cs:53:27:53:27 | access to local variable s | Assert.cs:53:27:53:27 | access to local variable s | normal | -| Assert.cs:53:27:53:34 | access to property Length | Assert.cs:53:27:53:34 | access to property Length | normal | -| Assert.cs:57:5:61:5 | {...} | Assert.cs:59:9:59:37 | call to method IsTrue | throw(AssertFailedException) | -| Assert.cs:57:5:61:5 | {...} | Assert.cs:60:9:60:35 | call to method WriteLine | normal | -| Assert.cs:58:9:58:33 | ... ...; | Assert.cs:58:16:58:32 | String s = ... | normal | -| Assert.cs:58:16:58:32 | String s = ... | Assert.cs:58:16:58:32 | String s = ... | normal | -| Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:20:58:20 | access to parameter b | false | -| Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:20:58:20 | access to parameter b | true | -| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:20:58:32 | ... ? ... : ... | normal | -| Assert.cs:58:24:58:27 | null | Assert.cs:58:24:58:27 | null | normal | -| Assert.cs:58:31:58:32 | "" | Assert.cs:58:31:58:32 | "" | normal | -| Assert.cs:59:9:59:37 | call to method IsTrue | Assert.cs:59:9:59:37 | call to method IsTrue | normal | -| Assert.cs:59:9:59:37 | call to method IsTrue | Assert.cs:59:9:59:37 | call to method IsTrue | throw(AssertFailedException) | -| Assert.cs:59:9:59:38 | ...; | Assert.cs:59:9:59:37 | call to method IsTrue | normal | -| Assert.cs:59:9:59:38 | ...; | Assert.cs:59:9:59:37 | call to method IsTrue | throw(AssertFailedException) | -| Assert.cs:59:23:59:23 | access to local variable s | Assert.cs:59:23:59:23 | access to local variable s | normal | -| Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:23:59:31 | ... != ... | false | -| Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:23:59:31 | ... != ... | true | -| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:59:23:59:36 | ... && ... | normal | -| Assert.cs:59:28:59:31 | null | Assert.cs:59:28:59:31 | null | normal | -| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:36:59:36 | access to parameter b | normal | -| Assert.cs:60:9:60:35 | call to method WriteLine | Assert.cs:60:9:60:35 | call to method WriteLine | normal | -| Assert.cs:60:9:60:36 | ...; | Assert.cs:60:9:60:35 | call to method WriteLine | normal | -| Assert.cs:60:27:60:27 | access to local variable s | Assert.cs:60:27:60:27 | access to local variable s | normal | -| Assert.cs:60:27:60:34 | access to property Length | Assert.cs:60:27:60:34 | access to property Length | normal | -| Assert.cs:64:5:68:5 | {...} | Assert.cs:66:9:66:38 | call to method IsFalse | throw(AssertFailedException) | -| Assert.cs:64:5:68:5 | {...} | Assert.cs:67:9:67:35 | call to method WriteLine | normal | -| Assert.cs:65:9:65:33 | ... ...; | Assert.cs:65:16:65:32 | String s = ... | normal | -| Assert.cs:65:16:65:32 | String s = ... | Assert.cs:65:16:65:32 | String s = ... | normal | -| Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:20:65:20 | access to parameter b | false | -| Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:20:65:20 | access to parameter b | true | -| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:20:65:32 | ... ? ... : ... | normal | -| Assert.cs:65:24:65:27 | null | Assert.cs:65:24:65:27 | null | normal | -| Assert.cs:65:31:65:32 | "" | Assert.cs:65:31:65:32 | "" | normal | -| Assert.cs:66:9:66:38 | call to method IsFalse | Assert.cs:66:9:66:38 | call to method IsFalse | normal | -| Assert.cs:66:9:66:38 | call to method IsFalse | Assert.cs:66:9:66:38 | call to method IsFalse | throw(AssertFailedException) | -| Assert.cs:66:9:66:39 | ...; | Assert.cs:66:9:66:38 | call to method IsFalse | normal | -| Assert.cs:66:9:66:39 | ...; | Assert.cs:66:9:66:38 | call to method IsFalse | throw(AssertFailedException) | -| Assert.cs:66:24:66:24 | access to local variable s | Assert.cs:66:24:66:24 | access to local variable s | normal | -| Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:24:66:32 | ... == ... | false | -| Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:24:66:32 | ... == ... | true | -| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:66:24:66:37 | ... \|\| ... | normal | -| Assert.cs:66:29:66:32 | null | Assert.cs:66:29:66:32 | null | normal | -| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:37:66:37 | access to parameter b | normal | -| Assert.cs:67:9:67:35 | call to method WriteLine | Assert.cs:67:9:67:35 | call to method WriteLine | normal | -| Assert.cs:67:9:67:36 | ...; | Assert.cs:67:9:67:35 | call to method WriteLine | normal | -| Assert.cs:67:27:67:27 | access to local variable s | Assert.cs:67:27:67:27 | access to local variable s | normal | -| Assert.cs:67:27:67:34 | access to property Length | Assert.cs:67:27:67:34 | access to property Length | normal | -| Assert.cs:71:5:75:5 | {...} | Assert.cs:73:9:73:37 | call to method IsTrue | throw(AssertFailedException) | -| Assert.cs:71:5:75:5 | {...} | Assert.cs:74:9:74:35 | call to method WriteLine | normal | -| Assert.cs:72:9:72:33 | ... ...; | Assert.cs:72:16:72:32 | String s = ... | normal | -| Assert.cs:72:16:72:32 | String s = ... | Assert.cs:72:16:72:32 | String s = ... | normal | -| Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:20:72:20 | access to parameter b | false | -| Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:20:72:20 | access to parameter b | true | -| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:20:72:32 | ... ? ... : ... | normal | -| Assert.cs:72:24:72:27 | null | Assert.cs:72:24:72:27 | null | normal | -| Assert.cs:72:31:72:32 | "" | Assert.cs:72:31:72:32 | "" | normal | -| Assert.cs:73:9:73:37 | call to method IsTrue | Assert.cs:73:9:73:37 | call to method IsTrue | normal | -| Assert.cs:73:9:73:37 | call to method IsTrue | Assert.cs:73:9:73:37 | call to method IsTrue | throw(AssertFailedException) | -| Assert.cs:73:9:73:38 | ...; | Assert.cs:73:9:73:37 | call to method IsTrue | normal | -| Assert.cs:73:9:73:38 | ...; | Assert.cs:73:9:73:37 | call to method IsTrue | throw(AssertFailedException) | -| Assert.cs:73:23:73:23 | access to local variable s | Assert.cs:73:23:73:23 | access to local variable s | normal | -| Assert.cs:73:23:73:31 | ... == ... | Assert.cs:73:23:73:31 | ... == ... | false | -| Assert.cs:73:23:73:31 | ... == ... | Assert.cs:73:23:73:31 | ... == ... | true | -| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:73:23:73:36 | ... && ... | normal | -| Assert.cs:73:28:73:31 | null | Assert.cs:73:28:73:31 | null | normal | -| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:36:73:36 | access to parameter b | normal | -| Assert.cs:74:9:74:35 | call to method WriteLine | Assert.cs:74:9:74:35 | call to method WriteLine | normal | -| Assert.cs:74:9:74:36 | ...; | Assert.cs:74:9:74:35 | call to method WriteLine | normal | -| Assert.cs:74:27:74:27 | access to local variable s | Assert.cs:74:27:74:27 | access to local variable s | normal | -| Assert.cs:74:27:74:34 | access to property Length | Assert.cs:74:27:74:34 | access to property Length | normal | -| Assert.cs:78:5:82:5 | {...} | Assert.cs:80:9:80:38 | call to method IsFalse | throw(AssertFailedException) | -| Assert.cs:78:5:82:5 | {...} | Assert.cs:81:9:81:35 | call to method WriteLine | normal | -| Assert.cs:79:9:79:33 | ... ...; | Assert.cs:79:16:79:32 | String s = ... | normal | -| Assert.cs:79:16:79:32 | String s = ... | Assert.cs:79:16:79:32 | String s = ... | normal | -| Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:20:79:20 | access to parameter b | false | -| Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:20:79:20 | access to parameter b | true | -| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:20:79:32 | ... ? ... : ... | normal | -| Assert.cs:79:24:79:27 | null | Assert.cs:79:24:79:27 | null | normal | -| Assert.cs:79:31:79:32 | "" | Assert.cs:79:31:79:32 | "" | normal | -| Assert.cs:80:9:80:38 | call to method IsFalse | Assert.cs:80:9:80:38 | call to method IsFalse | normal | -| Assert.cs:80:9:80:38 | call to method IsFalse | Assert.cs:80:9:80:38 | call to method IsFalse | throw(AssertFailedException) | -| Assert.cs:80:9:80:39 | ...; | Assert.cs:80:9:80:38 | call to method IsFalse | normal | -| Assert.cs:80:9:80:39 | ...; | Assert.cs:80:9:80:38 | call to method IsFalse | throw(AssertFailedException) | -| Assert.cs:80:24:80:24 | access to local variable s | Assert.cs:80:24:80:24 | access to local variable s | normal | -| Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:24:80:32 | ... != ... | false | -| Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:24:80:32 | ... != ... | true | -| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:80:24:80:37 | ... \|\| ... | normal | -| Assert.cs:80:29:80:32 | null | Assert.cs:80:29:80:32 | null | normal | -| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:37:80:37 | access to parameter b | normal | -| Assert.cs:81:9:81:35 | call to method WriteLine | Assert.cs:81:9:81:35 | call to method WriteLine | normal | -| Assert.cs:81:9:81:36 | ...; | Assert.cs:81:9:81:35 | call to method WriteLine | normal | -| Assert.cs:81:27:81:27 | access to local variable s | Assert.cs:81:27:81:27 | access to local variable s | normal | -| Assert.cs:81:27:81:34 | access to property Length | Assert.cs:81:27:81:34 | access to property Length | normal | -| Assert.cs:85:5:129:5 | {...} | Assert.cs:87:9:87:31 | call to method Assert | exit | -| Assert.cs:85:5:129:5 | {...} | Assert.cs:91:9:91:24 | call to method IsNull | throw(AssertFailedException) | -| Assert.cs:85:5:129:5 | {...} | Assert.cs:95:9:95:27 | call to method IsNotNull | throw(AssertFailedException) | -| Assert.cs:85:5:129:5 | {...} | Assert.cs:99:9:99:32 | call to method IsTrue | throw(AssertFailedException) | -| Assert.cs:85:5:129:5 | {...} | Assert.cs:103:9:103:32 | call to method IsTrue | throw(AssertFailedException) | -| Assert.cs:85:5:129:5 | {...} | Assert.cs:107:9:107:33 | call to method IsFalse | throw(AssertFailedException) | -| Assert.cs:85:5:129:5 | {...} | Assert.cs:111:9:111:33 | call to method IsFalse | throw(AssertFailedException) | -| Assert.cs:85:5:129:5 | {...} | Assert.cs:115:9:115:37 | call to method IsTrue | throw(AssertFailedException) | -| Assert.cs:85:5:129:5 | {...} | Assert.cs:119:9:119:39 | call to method IsFalse | throw(AssertFailedException) | -| Assert.cs:85:5:129:5 | {...} | Assert.cs:123:9:123:37 | call to method IsTrue | throw(AssertFailedException) | -| Assert.cs:85:5:129:5 | {...} | Assert.cs:127:9:127:39 | call to method IsFalse | throw(AssertFailedException) | -| Assert.cs:85:5:129:5 | {...} | Assert.cs:128:9:128:35 | call to method WriteLine | normal | -| Assert.cs:86:9:86:33 | ... ...; | Assert.cs:86:16:86:32 | String s = ... | normal | -| Assert.cs:86:16:86:32 | String s = ... | Assert.cs:86:16:86:32 | String s = ... | normal | -| Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:86:20:86:20 | access to parameter b | false | -| Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:86:20:86:20 | access to parameter b | true | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:86:20:86:32 | ... ? ... : ... | normal | -| Assert.cs:86:24:86:27 | null | Assert.cs:86:24:86:27 | null | normal | -| Assert.cs:86:31:86:32 | "" | Assert.cs:86:31:86:32 | "" | normal | -| Assert.cs:87:9:87:31 | call to method Assert | Assert.cs:87:9:87:31 | call to method Assert | exit | -| Assert.cs:87:9:87:31 | call to method Assert | Assert.cs:87:9:87:31 | call to method Assert | normal | -| Assert.cs:87:9:87:32 | ...; | Assert.cs:87:9:87:31 | call to method Assert | exit | -| Assert.cs:87:9:87:32 | ...; | Assert.cs:87:9:87:31 | call to method Assert | normal | -| Assert.cs:87:22:87:22 | access to local variable s | Assert.cs:87:22:87:22 | access to local variable s | normal | -| Assert.cs:87:22:87:30 | ... != ... | Assert.cs:87:22:87:30 | ... != ... | normal | -| Assert.cs:87:27:87:30 | null | Assert.cs:87:27:87:30 | null | normal | -| Assert.cs:88:9:88:35 | call to method WriteLine | Assert.cs:88:9:88:35 | call to method WriteLine | normal | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:88:9:88:35 | call to method WriteLine | normal | -| Assert.cs:88:27:88:27 | access to local variable s | Assert.cs:88:27:88:27 | access to local variable s | normal | -| Assert.cs:88:27:88:34 | access to property Length | Assert.cs:88:27:88:34 | access to property Length | normal | -| Assert.cs:90:9:90:25 | ... = ... | Assert.cs:90:9:90:25 | ... = ... | normal | -| Assert.cs:90:9:90:26 | ...; | Assert.cs:90:9:90:25 | ... = ... | normal | -| Assert.cs:90:13:90:13 | access to parameter b | Assert.cs:90:13:90:13 | access to parameter b | false | -| Assert.cs:90:13:90:13 | access to parameter b | Assert.cs:90:13:90:13 | access to parameter b | true | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:90:13:90:25 | ... ? ... : ... | normal | -| Assert.cs:90:17:90:20 | null | Assert.cs:90:17:90:20 | null | normal | -| Assert.cs:90:24:90:25 | "" | Assert.cs:90:24:90:25 | "" | normal | -| Assert.cs:91:9:91:24 | call to method IsNull | Assert.cs:91:9:91:24 | call to method IsNull | normal | -| Assert.cs:91:9:91:24 | call to method IsNull | Assert.cs:91:9:91:24 | call to method IsNull | throw(AssertFailedException) | -| Assert.cs:91:9:91:25 | ...; | Assert.cs:91:9:91:24 | call to method IsNull | normal | -| Assert.cs:91:9:91:25 | ...; | Assert.cs:91:9:91:24 | call to method IsNull | throw(AssertFailedException) | -| Assert.cs:91:23:91:23 | access to local variable s | Assert.cs:91:23:91:23 | access to local variable s | normal | -| Assert.cs:92:9:92:35 | call to method WriteLine | Assert.cs:92:9:92:35 | call to method WriteLine | normal | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:92:9:92:35 | call to method WriteLine | normal | -| Assert.cs:92:27:92:27 | access to local variable s | Assert.cs:92:27:92:27 | access to local variable s | normal | -| Assert.cs:92:27:92:34 | access to property Length | Assert.cs:92:27:92:34 | access to property Length | normal | -| Assert.cs:94:9:94:25 | ... = ... | Assert.cs:94:9:94:25 | ... = ... | normal | -| Assert.cs:94:9:94:26 | ...; | Assert.cs:94:9:94:25 | ... = ... | normal | -| Assert.cs:94:13:94:13 | access to parameter b | Assert.cs:94:13:94:13 | access to parameter b | false | -| Assert.cs:94:13:94:13 | access to parameter b | Assert.cs:94:13:94:13 | access to parameter b | true | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:94:13:94:25 | ... ? ... : ... | normal | -| Assert.cs:94:17:94:20 | null | Assert.cs:94:17:94:20 | null | normal | -| Assert.cs:94:24:94:25 | "" | Assert.cs:94:24:94:25 | "" | normal | -| Assert.cs:95:9:95:27 | call to method IsNotNull | Assert.cs:95:9:95:27 | call to method IsNotNull | normal | -| Assert.cs:95:9:95:27 | call to method IsNotNull | Assert.cs:95:9:95:27 | call to method IsNotNull | throw(AssertFailedException) | -| Assert.cs:95:9:95:28 | ...; | Assert.cs:95:9:95:27 | call to method IsNotNull | normal | -| Assert.cs:95:9:95:28 | ...; | Assert.cs:95:9:95:27 | call to method IsNotNull | throw(AssertFailedException) | -| Assert.cs:95:26:95:26 | access to local variable s | Assert.cs:95:26:95:26 | access to local variable s | normal | -| Assert.cs:96:9:96:35 | call to method WriteLine | Assert.cs:96:9:96:35 | call to method WriteLine | normal | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:96:9:96:35 | call to method WriteLine | normal | -| Assert.cs:96:27:96:27 | access to local variable s | Assert.cs:96:27:96:27 | access to local variable s | normal | -| Assert.cs:96:27:96:34 | access to property Length | Assert.cs:96:27:96:34 | access to property Length | normal | -| Assert.cs:98:9:98:25 | ... = ... | Assert.cs:98:9:98:25 | ... = ... | normal | -| Assert.cs:98:9:98:26 | ...; | Assert.cs:98:9:98:25 | ... = ... | normal | -| Assert.cs:98:13:98:13 | access to parameter b | Assert.cs:98:13:98:13 | access to parameter b | false | -| Assert.cs:98:13:98:13 | access to parameter b | Assert.cs:98:13:98:13 | access to parameter b | true | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:98:13:98:25 | ... ? ... : ... | normal | -| Assert.cs:98:17:98:20 | null | Assert.cs:98:17:98:20 | null | normal | -| Assert.cs:98:24:98:25 | "" | Assert.cs:98:24:98:25 | "" | normal | -| Assert.cs:99:9:99:32 | call to method IsTrue | Assert.cs:99:9:99:32 | call to method IsTrue | normal | -| Assert.cs:99:9:99:32 | call to method IsTrue | Assert.cs:99:9:99:32 | call to method IsTrue | throw(AssertFailedException) | -| Assert.cs:99:9:99:33 | ...; | Assert.cs:99:9:99:32 | call to method IsTrue | normal | -| Assert.cs:99:9:99:33 | ...; | Assert.cs:99:9:99:32 | call to method IsTrue | throw(AssertFailedException) | -| Assert.cs:99:23:99:23 | access to local variable s | Assert.cs:99:23:99:23 | access to local variable s | normal | -| Assert.cs:99:23:99:31 | ... == ... | Assert.cs:99:23:99:31 | ... == ... | normal | -| Assert.cs:99:28:99:31 | null | Assert.cs:99:28:99:31 | null | normal | -| Assert.cs:100:9:100:35 | call to method WriteLine | Assert.cs:100:9:100:35 | call to method WriteLine | normal | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:100:9:100:35 | call to method WriteLine | normal | -| Assert.cs:100:27:100:27 | access to local variable s | Assert.cs:100:27:100:27 | access to local variable s | normal | -| Assert.cs:100:27:100:34 | access to property Length | Assert.cs:100:27:100:34 | access to property Length | normal | -| Assert.cs:102:9:102:25 | ... = ... | Assert.cs:102:9:102:25 | ... = ... | normal | -| Assert.cs:102:9:102:26 | ...; | Assert.cs:102:9:102:25 | ... = ... | normal | -| Assert.cs:102:13:102:13 | access to parameter b | Assert.cs:102:13:102:13 | access to parameter b | false | -| Assert.cs:102:13:102:13 | access to parameter b | Assert.cs:102:13:102:13 | access to parameter b | true | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:102:13:102:25 | ... ? ... : ... | normal | -| Assert.cs:102:17:102:20 | null | Assert.cs:102:17:102:20 | null | normal | -| Assert.cs:102:24:102:25 | "" | Assert.cs:102:24:102:25 | "" | normal | -| Assert.cs:103:9:103:32 | call to method IsTrue | Assert.cs:103:9:103:32 | call to method IsTrue | normal | -| Assert.cs:103:9:103:32 | call to method IsTrue | Assert.cs:103:9:103:32 | call to method IsTrue | throw(AssertFailedException) | -| Assert.cs:103:9:103:33 | ...; | Assert.cs:103:9:103:32 | call to method IsTrue | normal | -| Assert.cs:103:9:103:33 | ...; | Assert.cs:103:9:103:32 | call to method IsTrue | throw(AssertFailedException) | -| Assert.cs:103:23:103:23 | access to local variable s | Assert.cs:103:23:103:23 | access to local variable s | normal | -| Assert.cs:103:23:103:31 | ... != ... | Assert.cs:103:23:103:31 | ... != ... | normal | -| Assert.cs:103:28:103:31 | null | Assert.cs:103:28:103:31 | null | normal | -| Assert.cs:104:9:104:35 | call to method WriteLine | Assert.cs:104:9:104:35 | call to method WriteLine | normal | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:104:9:104:35 | call to method WriteLine | normal | -| Assert.cs:104:27:104:27 | access to local variable s | Assert.cs:104:27:104:27 | access to local variable s | normal | -| Assert.cs:104:27:104:34 | access to property Length | Assert.cs:104:27:104:34 | access to property Length | normal | -| Assert.cs:106:9:106:25 | ... = ... | Assert.cs:106:9:106:25 | ... = ... | normal | -| Assert.cs:106:9:106:26 | ...; | Assert.cs:106:9:106:25 | ... = ... | normal | -| Assert.cs:106:13:106:13 | access to parameter b | Assert.cs:106:13:106:13 | access to parameter b | false | -| Assert.cs:106:13:106:13 | access to parameter b | Assert.cs:106:13:106:13 | access to parameter b | true | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:106:13:106:25 | ... ? ... : ... | normal | -| Assert.cs:106:17:106:20 | null | Assert.cs:106:17:106:20 | null | normal | -| Assert.cs:106:24:106:25 | "" | Assert.cs:106:24:106:25 | "" | normal | -| Assert.cs:107:9:107:33 | call to method IsFalse | Assert.cs:107:9:107:33 | call to method IsFalse | normal | -| Assert.cs:107:9:107:33 | call to method IsFalse | Assert.cs:107:9:107:33 | call to method IsFalse | throw(AssertFailedException) | -| Assert.cs:107:9:107:34 | ...; | Assert.cs:107:9:107:33 | call to method IsFalse | normal | -| Assert.cs:107:9:107:34 | ...; | Assert.cs:107:9:107:33 | call to method IsFalse | throw(AssertFailedException) | -| Assert.cs:107:24:107:24 | access to local variable s | Assert.cs:107:24:107:24 | access to local variable s | normal | -| Assert.cs:107:24:107:32 | ... != ... | Assert.cs:107:24:107:32 | ... != ... | normal | -| Assert.cs:107:29:107:32 | null | Assert.cs:107:29:107:32 | null | normal | -| Assert.cs:108:9:108:35 | call to method WriteLine | Assert.cs:108:9:108:35 | call to method WriteLine | normal | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:108:9:108:35 | call to method WriteLine | normal | -| Assert.cs:108:27:108:27 | access to local variable s | Assert.cs:108:27:108:27 | access to local variable s | normal | -| Assert.cs:108:27:108:34 | access to property Length | Assert.cs:108:27:108:34 | access to property Length | normal | -| Assert.cs:110:9:110:25 | ... = ... | Assert.cs:110:9:110:25 | ... = ... | normal | -| Assert.cs:110:9:110:26 | ...; | Assert.cs:110:9:110:25 | ... = ... | normal | -| Assert.cs:110:13:110:13 | access to parameter b | Assert.cs:110:13:110:13 | access to parameter b | false | -| Assert.cs:110:13:110:13 | access to parameter b | Assert.cs:110:13:110:13 | access to parameter b | true | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:110:13:110:25 | ... ? ... : ... | normal | -| Assert.cs:110:17:110:20 | null | Assert.cs:110:17:110:20 | null | normal | -| Assert.cs:110:24:110:25 | "" | Assert.cs:110:24:110:25 | "" | normal | -| Assert.cs:111:9:111:33 | call to method IsFalse | Assert.cs:111:9:111:33 | call to method IsFalse | normal | -| Assert.cs:111:9:111:33 | call to method IsFalse | Assert.cs:111:9:111:33 | call to method IsFalse | throw(AssertFailedException) | -| Assert.cs:111:9:111:34 | ...; | Assert.cs:111:9:111:33 | call to method IsFalse | normal | -| Assert.cs:111:9:111:34 | ...; | Assert.cs:111:9:111:33 | call to method IsFalse | throw(AssertFailedException) | -| Assert.cs:111:24:111:24 | access to local variable s | Assert.cs:111:24:111:24 | access to local variable s | normal | -| Assert.cs:111:24:111:32 | ... == ... | Assert.cs:111:24:111:32 | ... == ... | normal | -| Assert.cs:111:29:111:32 | null | Assert.cs:111:29:111:32 | null | normal | -| Assert.cs:112:9:112:35 | call to method WriteLine | Assert.cs:112:9:112:35 | call to method WriteLine | normal | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:112:9:112:35 | call to method WriteLine | normal | -| Assert.cs:112:27:112:27 | access to local variable s | Assert.cs:112:27:112:27 | access to local variable s | normal | -| Assert.cs:112:27:112:34 | access to property Length | Assert.cs:112:27:112:34 | access to property Length | normal | -| Assert.cs:114:9:114:25 | ... = ... | Assert.cs:114:9:114:25 | ... = ... | normal | -| Assert.cs:114:9:114:26 | ...; | Assert.cs:114:9:114:25 | ... = ... | normal | -| Assert.cs:114:13:114:13 | access to parameter b | Assert.cs:114:13:114:13 | access to parameter b | false | -| Assert.cs:114:13:114:13 | access to parameter b | Assert.cs:114:13:114:13 | access to parameter b | true | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:114:13:114:25 | ... ? ... : ... | normal | -| Assert.cs:114:17:114:20 | null | Assert.cs:114:17:114:20 | null | normal | -| Assert.cs:114:24:114:25 | "" | Assert.cs:114:24:114:25 | "" | normal | -| Assert.cs:115:9:115:37 | call to method IsTrue | Assert.cs:115:9:115:37 | call to method IsTrue | normal | -| Assert.cs:115:9:115:37 | call to method IsTrue | Assert.cs:115:9:115:37 | call to method IsTrue | throw(AssertFailedException) | -| Assert.cs:115:9:115:38 | ...; | Assert.cs:115:9:115:37 | call to method IsTrue | normal | -| Assert.cs:115:9:115:38 | ...; | Assert.cs:115:9:115:37 | call to method IsTrue | throw(AssertFailedException) | -| Assert.cs:115:23:115:23 | access to local variable s | Assert.cs:115:23:115:23 | access to local variable s | normal | -| Assert.cs:115:23:115:31 | ... != ... | Assert.cs:115:23:115:31 | ... != ... | false | -| Assert.cs:115:23:115:31 | ... != ... | Assert.cs:115:23:115:31 | ... != ... | true | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:115:23:115:36 | ... && ... | normal | -| Assert.cs:115:28:115:31 | null | Assert.cs:115:28:115:31 | null | normal | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:36:115:36 | access to parameter b | normal | -| Assert.cs:116:9:116:35 | call to method WriteLine | Assert.cs:116:9:116:35 | call to method WriteLine | normal | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:116:9:116:35 | call to method WriteLine | normal | -| Assert.cs:116:27:116:27 | access to local variable s | Assert.cs:116:27:116:27 | access to local variable s | normal | -| Assert.cs:116:27:116:34 | access to property Length | Assert.cs:116:27:116:34 | access to property Length | normal | -| Assert.cs:118:9:118:25 | ... = ... | Assert.cs:118:9:118:25 | ... = ... | normal | -| Assert.cs:118:9:118:26 | ...; | Assert.cs:118:9:118:25 | ... = ... | normal | -| Assert.cs:118:13:118:13 | access to parameter b | Assert.cs:118:13:118:13 | access to parameter b | false | -| Assert.cs:118:13:118:13 | access to parameter b | Assert.cs:118:13:118:13 | access to parameter b | true | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:118:13:118:25 | ... ? ... : ... | normal | -| Assert.cs:118:17:118:20 | null | Assert.cs:118:17:118:20 | null | normal | -| Assert.cs:118:24:118:25 | "" | Assert.cs:118:24:118:25 | "" | normal | -| Assert.cs:119:9:119:39 | call to method IsFalse | Assert.cs:119:9:119:39 | call to method IsFalse | normal | -| Assert.cs:119:9:119:39 | call to method IsFalse | Assert.cs:119:9:119:39 | call to method IsFalse | throw(AssertFailedException) | -| Assert.cs:119:9:119:40 | ...; | Assert.cs:119:9:119:39 | call to method IsFalse | normal | -| Assert.cs:119:9:119:40 | ...; | Assert.cs:119:9:119:39 | call to method IsFalse | throw(AssertFailedException) | -| Assert.cs:119:24:119:24 | access to local variable s | Assert.cs:119:24:119:24 | access to local variable s | normal | -| Assert.cs:119:24:119:32 | ... == ... | Assert.cs:119:24:119:32 | ... == ... | false | -| Assert.cs:119:24:119:32 | ... == ... | Assert.cs:119:24:119:32 | ... == ... | true | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:119:24:119:38 | ... \|\| ... | normal | -| Assert.cs:119:29:119:32 | null | Assert.cs:119:29:119:32 | null | normal | -| Assert.cs:119:37:119:38 | !... | Assert.cs:119:37:119:38 | !... | normal | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:38:119:38 | access to parameter b | normal | -| Assert.cs:120:9:120:35 | call to method WriteLine | Assert.cs:120:9:120:35 | call to method WriteLine | normal | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:120:9:120:35 | call to method WriteLine | normal | -| Assert.cs:120:27:120:27 | access to local variable s | Assert.cs:120:27:120:27 | access to local variable s | normal | -| Assert.cs:120:27:120:34 | access to property Length | Assert.cs:120:27:120:34 | access to property Length | normal | -| Assert.cs:122:9:122:25 | ... = ... | Assert.cs:122:9:122:25 | ... = ... | normal | -| Assert.cs:122:9:122:26 | ...; | Assert.cs:122:9:122:25 | ... = ... | normal | -| Assert.cs:122:13:122:13 | access to parameter b | Assert.cs:122:13:122:13 | access to parameter b | false | -| Assert.cs:122:13:122:13 | access to parameter b | Assert.cs:122:13:122:13 | access to parameter b | true | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:122:13:122:25 | ... ? ... : ... | normal | -| Assert.cs:122:17:122:20 | null | Assert.cs:122:17:122:20 | null | normal | -| Assert.cs:122:24:122:25 | "" | Assert.cs:122:24:122:25 | "" | normal | -| Assert.cs:123:9:123:37 | call to method IsTrue | Assert.cs:123:9:123:37 | call to method IsTrue | normal | -| Assert.cs:123:9:123:37 | call to method IsTrue | Assert.cs:123:9:123:37 | call to method IsTrue | throw(AssertFailedException) | -| Assert.cs:123:9:123:38 | ...; | Assert.cs:123:9:123:37 | call to method IsTrue | normal | -| Assert.cs:123:9:123:38 | ...; | Assert.cs:123:9:123:37 | call to method IsTrue | throw(AssertFailedException) | -| Assert.cs:123:23:123:23 | access to local variable s | Assert.cs:123:23:123:23 | access to local variable s | normal | -| Assert.cs:123:23:123:31 | ... == ... | Assert.cs:123:23:123:31 | ... == ... | false | -| Assert.cs:123:23:123:31 | ... == ... | Assert.cs:123:23:123:31 | ... == ... | true | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:123:23:123:36 | ... && ... | normal | -| Assert.cs:123:28:123:31 | null | Assert.cs:123:28:123:31 | null | normal | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:36:123:36 | access to parameter b | normal | -| Assert.cs:124:9:124:35 | call to method WriteLine | Assert.cs:124:9:124:35 | call to method WriteLine | normal | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:124:9:124:35 | call to method WriteLine | normal | -| Assert.cs:124:27:124:27 | access to local variable s | Assert.cs:124:27:124:27 | access to local variable s | normal | -| Assert.cs:124:27:124:34 | access to property Length | Assert.cs:124:27:124:34 | access to property Length | normal | -| Assert.cs:126:9:126:25 | ... = ... | Assert.cs:126:9:126:25 | ... = ... | normal | -| Assert.cs:126:9:126:26 | ...; | Assert.cs:126:9:126:25 | ... = ... | normal | -| Assert.cs:126:13:126:13 | access to parameter b | Assert.cs:126:13:126:13 | access to parameter b | false | -| Assert.cs:126:13:126:13 | access to parameter b | Assert.cs:126:13:126:13 | access to parameter b | true | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:126:13:126:25 | ... ? ... : ... | normal | -| Assert.cs:126:17:126:20 | null | Assert.cs:126:17:126:20 | null | normal | -| Assert.cs:126:24:126:25 | "" | Assert.cs:126:24:126:25 | "" | normal | -| Assert.cs:127:9:127:39 | call to method IsFalse | Assert.cs:127:9:127:39 | call to method IsFalse | normal | -| Assert.cs:127:9:127:39 | call to method IsFalse | Assert.cs:127:9:127:39 | call to method IsFalse | throw(AssertFailedException) | -| Assert.cs:127:9:127:40 | ...; | Assert.cs:127:9:127:39 | call to method IsFalse | normal | -| Assert.cs:127:9:127:40 | ...; | Assert.cs:127:9:127:39 | call to method IsFalse | throw(AssertFailedException) | -| Assert.cs:127:24:127:24 | access to local variable s | Assert.cs:127:24:127:24 | access to local variable s | normal | -| Assert.cs:127:24:127:32 | ... != ... | Assert.cs:127:24:127:32 | ... != ... | false | -| Assert.cs:127:24:127:32 | ... != ... | Assert.cs:127:24:127:32 | ... != ... | true | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:127:24:127:38 | ... \|\| ... | normal | -| Assert.cs:127:29:127:32 | null | Assert.cs:127:29:127:32 | null | normal | -| Assert.cs:127:37:127:38 | !... | Assert.cs:127:37:127:38 | !... | normal | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:38:127:38 | access to parameter b | normal | -| Assert.cs:128:9:128:35 | call to method WriteLine | Assert.cs:128:9:128:35 | call to method WriteLine | normal | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:128:9:128:35 | call to method WriteLine | normal | -| Assert.cs:128:27:128:27 | access to local variable s | Assert.cs:128:27:128:27 | access to local variable s | normal | -| Assert.cs:128:27:128:34 | access to property Length | Assert.cs:128:27:128:34 | access to property Length | normal | -| Assert.cs:135:5:136:5 | {...} | Assert.cs:135:5:136:5 | {...} | normal | -| Assert.cs:139:5:142:5 | {...} | Assert.cs:140:9:140:35 | call to method AssertTrueFalse | throw(Exception) | -| Assert.cs:139:5:142:5 | {...} | Assert.cs:141:9:141:15 | return ...; | return | -| Assert.cs:140:9:140:35 | call to method AssertTrueFalse | Assert.cs:140:9:140:35 | call to method AssertTrueFalse | normal | -| Assert.cs:140:9:140:35 | call to method AssertTrueFalse | Assert.cs:140:9:140:35 | call to method AssertTrueFalse | throw(Exception) | -| Assert.cs:140:9:140:35 | this access | Assert.cs:140:9:140:35 | this access | normal | -| Assert.cs:140:9:140:36 | ...; | Assert.cs:140:9:140:35 | call to method AssertTrueFalse | normal | -| Assert.cs:140:9:140:36 | ...; | Assert.cs:140:9:140:35 | call to method AssertTrueFalse | throw(Exception) | -| Assert.cs:140:25:140:26 | access to parameter b1 | Assert.cs:140:25:140:26 | access to parameter b1 | normal | -| Assert.cs:140:29:140:30 | access to parameter b2 | Assert.cs:140:29:140:30 | access to parameter b2 | normal | -| Assert.cs:140:33:140:34 | access to parameter b3 | Assert.cs:140:33:140:34 | access to parameter b3 | normal | -| Assert.cs:141:9:141:15 | return ...; | Assert.cs:141:9:141:15 | return ...; | return | -| Assignments.cs:1:7:1:17 | call to constructor Object | Assignments.cs:1:7:1:17 | call to constructor Object | normal | -| Assignments.cs:1:7:1:17 | call to method | Assignments.cs:1:7:1:17 | call to method | normal | -| Assignments.cs:1:7:1:17 | this access | Assignments.cs:1:7:1:17 | this access | normal | -| Assignments.cs:1:7:1:17 | {...} | Assignments.cs:1:7:1:17 | {...} | normal | -| Assignments.cs:4:5:15:5 | {...} | Assignments.cs:14:9:14:35 | ... += ... | normal | -| Assignments.cs:5:9:5:18 | ... ...; | Assignments.cs:5:13:5:17 | Int32 x = ... | normal | -| Assignments.cs:5:13:5:17 | Int32 x = ... | Assignments.cs:5:13:5:17 | Int32 x = ... | normal | -| Assignments.cs:5:17:5:17 | 0 | Assignments.cs:5:17:5:17 | 0 | normal | -| Assignments.cs:6:9:6:9 | access to local variable x | Assignments.cs:6:9:6:9 | access to local variable x | normal | -| Assignments.cs:6:9:6:14 | ... += ... | Assignments.cs:6:9:6:14 | ... += ... | normal | -| Assignments.cs:6:9:6:15 | ...; | Assignments.cs:6:9:6:14 | ... += ... | normal | -| Assignments.cs:6:14:6:14 | 1 | Assignments.cs:6:14:6:14 | 1 | normal | -| Assignments.cs:8:9:8:22 | ... ...; | Assignments.cs:8:17:8:21 | dynamic d = ... | normal | -| Assignments.cs:8:17:8:21 | dynamic d = ... | Assignments.cs:8:17:8:21 | dynamic d = ... | normal | -| Assignments.cs:8:21:8:21 | 0 | Assignments.cs:8:21:8:21 | 0 | normal | -| Assignments.cs:8:21:8:21 | (...) ... | Assignments.cs:8:21:8:21 | (...) ... | normal | -| Assignments.cs:9:9:9:9 | access to local variable d | Assignments.cs:9:9:9:9 | access to local variable d | normal | -| Assignments.cs:9:9:9:14 | ... -= ... | Assignments.cs:9:9:9:14 | ... -= ... | normal | -| Assignments.cs:9:9:9:15 | ...; | Assignments.cs:9:9:9:14 | ... -= ... | normal | -| Assignments.cs:9:14:9:14 | 2 | Assignments.cs:9:14:9:14 | 2 | normal | -| Assignments.cs:11:9:11:34 | ... ...; | Assignments.cs:11:13:11:33 | Assignments a = ... | normal | -| Assignments.cs:11:13:11:33 | Assignments a = ... | Assignments.cs:11:13:11:33 | Assignments a = ... | normal | -| Assignments.cs:11:17:11:33 | object creation of type Assignments | Assignments.cs:11:17:11:33 | object creation of type Assignments | normal | -| Assignments.cs:12:9:12:9 | access to local variable a | Assignments.cs:12:9:12:9 | access to local variable a | normal | -| Assignments.cs:12:9:12:17 | ... += ... | Assignments.cs:12:9:12:17 | ... += ... | normal | -| Assignments.cs:12:9:12:18 | ...; | Assignments.cs:12:9:12:17 | ... += ... | normal | -| Assignments.cs:12:14:12:17 | this access | Assignments.cs:12:14:12:17 | this access | normal | -| Assignments.cs:14:9:14:13 | access to event Event | Assignments.cs:14:9:14:13 | this access | normal | -| Assignments.cs:14:9:14:13 | this access | Assignments.cs:14:9:14:13 | this access | normal | -| Assignments.cs:14:9:14:35 | ... += ... | Assignments.cs:14:9:14:35 | ... += ... | normal | -| Assignments.cs:14:9:14:36 | ...; | Assignments.cs:14:9:14:35 | ... += ... | normal | -| Assignments.cs:14:18:14:35 | (...) => ... | Assignments.cs:14:18:14:35 | (...) => ... | normal | -| Assignments.cs:14:33:14:35 | {...} | Assignments.cs:14:33:14:35 | {...} | normal | -| Assignments.cs:18:5:20:5 | {...} | Assignments.cs:19:9:19:17 | return ...; | return | -| Assignments.cs:19:9:19:17 | return ...; | Assignments.cs:19:9:19:17 | return ...; | return | -| Assignments.cs:19:16:19:16 | access to parameter x | Assignments.cs:19:16:19:16 | access to parameter x | normal | -| Assignments.cs:28:5:30:5 | {...} | Assignments.cs:29:9:29:14 | ... = ... | normal | -| Assignments.cs:29:9:29:14 | ... = ... | Assignments.cs:29:9:29:14 | ... = ... | normal | -| Assignments.cs:29:9:29:15 | ...; | Assignments.cs:29:9:29:14 | ... = ... | normal | -| Assignments.cs:29:13:29:14 | 42 | Assignments.cs:29:13:29:14 | 42 | normal | -| Assignments.cs:33:5:36:5 | {...} | Assignments.cs:35:9:35:19 | ... = ... | normal | -| Assignments.cs:34:9:34:14 | ... = ... | Assignments.cs:34:9:34:14 | ... = ... | normal | -| Assignments.cs:34:9:34:15 | ...; | Assignments.cs:34:9:34:14 | ... = ... | normal | -| Assignments.cs:34:13:34:14 | 42 | Assignments.cs:34:13:34:14 | 42 | normal | -| Assignments.cs:35:9:35:19 | ... = ... | Assignments.cs:35:9:35:19 | ... = ... | normal | -| Assignments.cs:35:9:35:20 | ...; | Assignments.cs:35:9:35:19 | ... = ... | normal | -| Assignments.cs:35:13:35:19 | "Hello" | Assignments.cs:35:13:35:19 | "Hello" | normal | -| Assignments.cs:39:5:45:5 | {...} | Assignments.cs:44:9:44:58 | call to method SetParamMulti | normal | -| Assignments.cs:40:9:40:15 | ... ...; | Assignments.cs:40:13:40:14 | Int32 x1 | normal | -| Assignments.cs:40:13:40:14 | Int32 x1 | Assignments.cs:40:13:40:14 | Int32 x1 | normal | -| Assignments.cs:41:9:41:30 | call to method SetParamSingle | Assignments.cs:41:9:41:30 | call to method SetParamSingle | normal | -| Assignments.cs:41:9:41:30 | this access | Assignments.cs:41:9:41:30 | this access | normal | -| Assignments.cs:41:9:41:31 | ...; | Assignments.cs:41:9:41:30 | call to method SetParamSingle | normal | -| Assignments.cs:42:9:42:36 | call to method SetParamSingle | Assignments.cs:42:9:42:36 | call to method SetParamSingle | normal | -| Assignments.cs:42:9:42:36 | this access | Assignments.cs:42:9:42:36 | this access | normal | -| Assignments.cs:42:9:42:37 | ...; | Assignments.cs:42:9:42:36 | call to method SetParamSingle | normal | -| Assignments.cs:42:28:42:35 | access to field IntField | Assignments.cs:42:28:42:35 | access to field IntField | normal | -| Assignments.cs:42:28:42:35 | this access | Assignments.cs:42:28:42:35 | this access | normal | -| Assignments.cs:43:9:43:55 | call to method SetParamMulti | Assignments.cs:43:9:43:55 | call to method SetParamMulti | normal | -| Assignments.cs:43:9:43:55 | this access | Assignments.cs:43:9:43:55 | this access | normal | -| Assignments.cs:43:9:43:56 | ...; | Assignments.cs:43:9:43:55 | call to method SetParamMulti | normal | -| Assignments.cs:43:34:43:37 | null | Assignments.cs:43:34:43:37 | null | normal | -| Assignments.cs:43:44:43:54 | access to field StringField | Assignments.cs:43:44:43:54 | access to field StringField | normal | -| Assignments.cs:43:44:43:54 | this access | Assignments.cs:43:44:43:54 | this access | normal | -| Assignments.cs:44:9:44:58 | call to method SetParamMulti | Assignments.cs:44:9:44:58 | call to method SetParamMulti | normal | -| Assignments.cs:44:9:44:58 | this access | Assignments.cs:44:9:44:58 | this access | normal | -| Assignments.cs:44:9:44:59 | ...; | Assignments.cs:44:9:44:58 | call to method SetParamMulti | normal | -| Assignments.cs:44:27:44:34 | access to field IntField | Assignments.cs:44:27:44:34 | access to field IntField | normal | -| Assignments.cs:44:27:44:34 | this access | Assignments.cs:44:27:44:34 | this access | normal | -| Assignments.cs:44:37:44:40 | null | Assignments.cs:44:37:44:40 | null | normal | -| Assignments.cs:44:47:44:57 | access to field StringField | Assignments.cs:44:47:44:57 | access to field StringField | normal | -| Assignments.cs:44:47:44:57 | this access | Assignments.cs:44:47:44:57 | this access | normal | -| BreakInTry.cs:1:7:1:16 | call to constructor Object | BreakInTry.cs:1:7:1:16 | call to constructor Object | normal | -| BreakInTry.cs:1:7:1:16 | call to method | BreakInTry.cs:1:7:1:16 | call to method | normal | -| BreakInTry.cs:1:7:1:16 | this access | BreakInTry.cs:1:7:1:16 | this access | normal | -| BreakInTry.cs:1:7:1:16 | {...} | BreakInTry.cs:1:7:1:16 | {...} | normal | -| BreakInTry.cs:4:5:18:5 | {...} | BreakInTry.cs:15:17:15:28 | ... == ... | false | -| BreakInTry.cs:4:5:18:5 | {...} | BreakInTry.cs:16:17:16:17 | ; | normal | -| BreakInTry.cs:5:9:17:9 | try {...} ... | BreakInTry.cs:15:17:15:28 | ... == ... | false | -| BreakInTry.cs:5:9:17:9 | try {...} ... | BreakInTry.cs:16:17:16:17 | ; | normal | -| BreakInTry.cs:6:9:12:9 | {...} | BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | empty | -| BreakInTry.cs:6:9:12:9 | {...} | BreakInTry.cs:10:21:10:26 | break; | normal [break] (0) | -| BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | empty | -| BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | BreakInTry.cs:10:21:10:26 | break; | normal [break] (0) | -| BreakInTry.cs:7:26:7:28 | String arg | BreakInTry.cs:7:26:7:28 | String arg | normal | -| BreakInTry.cs:7:33:7:36 | access to parameter args | BreakInTry.cs:7:33:7:36 | access to parameter args | normal | -| BreakInTry.cs:8:13:11:13 | {...} | BreakInTry.cs:9:21:9:31 | ... == ... | false | -| BreakInTry.cs:8:13:11:13 | {...} | BreakInTry.cs:10:21:10:26 | break; | break | -| BreakInTry.cs:9:17:10:26 | if (...) ... | BreakInTry.cs:9:21:9:31 | ... == ... | false | -| BreakInTry.cs:9:17:10:26 | if (...) ... | BreakInTry.cs:10:21:10:26 | break; | break | -| BreakInTry.cs:9:21:9:23 | access to local variable arg | BreakInTry.cs:9:21:9:23 | access to local variable arg | normal | -| BreakInTry.cs:9:21:9:31 | ... == ... | BreakInTry.cs:9:21:9:31 | ... == ... | false | -| BreakInTry.cs:9:21:9:31 | ... == ... | BreakInTry.cs:9:21:9:31 | ... == ... | true | -| BreakInTry.cs:9:28:9:31 | null | BreakInTry.cs:9:28:9:31 | null | normal | -| BreakInTry.cs:10:21:10:26 | break; | BreakInTry.cs:10:21:10:26 | break; | break | -| BreakInTry.cs:14:9:17:9 | {...} | BreakInTry.cs:15:17:15:28 | ... == ... | false | -| BreakInTry.cs:14:9:17:9 | {...} | BreakInTry.cs:16:17:16:17 | ; | normal | -| BreakInTry.cs:15:13:16:17 | if (...) ... | BreakInTry.cs:15:17:15:28 | ... == ... | false | -| BreakInTry.cs:15:13:16:17 | if (...) ... | BreakInTry.cs:16:17:16:17 | ; | normal | -| BreakInTry.cs:15:17:15:20 | access to parameter args | BreakInTry.cs:15:17:15:20 | access to parameter args | normal | -| BreakInTry.cs:15:17:15:28 | ... == ... | BreakInTry.cs:15:17:15:28 | ... == ... | false | -| BreakInTry.cs:15:17:15:28 | ... == ... | BreakInTry.cs:15:17:15:28 | ... == ... | true | -| BreakInTry.cs:15:25:15:28 | null | BreakInTry.cs:15:25:15:28 | null | normal | -| BreakInTry.cs:16:17:16:17 | ; | BreakInTry.cs:16:17:16:17 | ; | normal | -| BreakInTry.cs:21:5:36:5 | {...} | BreakInTry.cs:35:7:35:7 | ; | normal | -| BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | empty | -| BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:31:21:31:32 | ... == ... | false [break] (0) | -| BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:32:21:32:21 | ; | normal [break] (0) | -| BreakInTry.cs:22:22:22:24 | String arg | BreakInTry.cs:22:22:22:24 | String arg | normal | -| BreakInTry.cs:22:29:22:32 | access to parameter args | BreakInTry.cs:22:29:22:32 | access to parameter args | normal | -| BreakInTry.cs:23:9:34:9 | {...} | BreakInTry.cs:31:21:31:32 | ... == ... | break [false] (0) | -| BreakInTry.cs:23:9:34:9 | {...} | BreakInTry.cs:31:21:31:32 | ... == ... | false | -| BreakInTry.cs:23:9:34:9 | {...} | BreakInTry.cs:32:21:32:21 | ; | break [normal] (0) | -| BreakInTry.cs:23:9:34:9 | {...} | BreakInTry.cs:32:21:32:21 | ; | normal | -| BreakInTry.cs:24:13:33:13 | try {...} ... | BreakInTry.cs:31:21:31:32 | ... == ... | break [false] (0) | -| BreakInTry.cs:24:13:33:13 | try {...} ... | BreakInTry.cs:31:21:31:32 | ... == ... | false | -| BreakInTry.cs:24:13:33:13 | try {...} ... | BreakInTry.cs:32:21:32:21 | ; | break [normal] (0) | -| BreakInTry.cs:24:13:33:13 | try {...} ... | BreakInTry.cs:32:21:32:21 | ; | normal | -| BreakInTry.cs:25:13:28:13 | {...} | BreakInTry.cs:26:21:26:31 | ... == ... | false | -| BreakInTry.cs:25:13:28:13 | {...} | BreakInTry.cs:27:21:27:26 | break; | break | -| BreakInTry.cs:26:17:27:26 | if (...) ... | BreakInTry.cs:26:21:26:31 | ... == ... | false | -| BreakInTry.cs:26:17:27:26 | if (...) ... | BreakInTry.cs:27:21:27:26 | break; | break | -| BreakInTry.cs:26:21:26:23 | access to local variable arg | BreakInTry.cs:26:21:26:23 | access to local variable arg | normal | -| BreakInTry.cs:26:21:26:31 | ... == ... | BreakInTry.cs:26:21:26:31 | ... == ... | false | -| BreakInTry.cs:26:21:26:31 | ... == ... | BreakInTry.cs:26:21:26:31 | ... == ... | true | -| BreakInTry.cs:26:28:26:31 | null | BreakInTry.cs:26:28:26:31 | null | normal | -| BreakInTry.cs:27:21:27:26 | break; | BreakInTry.cs:27:21:27:26 | break; | break | -| BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:31:21:31:32 | ... == ... | false | -| BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:32:21:32:21 | ; | normal | -| BreakInTry.cs:31:17:32:21 | if (...) ... | BreakInTry.cs:31:21:31:32 | ... == ... | false | -| BreakInTry.cs:31:17:32:21 | if (...) ... | BreakInTry.cs:32:21:32:21 | ; | normal | -| BreakInTry.cs:31:21:31:24 | access to parameter args | BreakInTry.cs:31:21:31:24 | access to parameter args | normal | -| BreakInTry.cs:31:21:31:32 | ... == ... | BreakInTry.cs:31:21:31:32 | ... == ... | false | -| BreakInTry.cs:31:21:31:32 | ... == ... | BreakInTry.cs:31:21:31:32 | ... == ... | true | -| BreakInTry.cs:31:29:31:32 | null | BreakInTry.cs:31:29:31:32 | null | normal | -| BreakInTry.cs:32:21:32:21 | ; | BreakInTry.cs:32:21:32:21 | ; | normal | -| BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:35:7:35:7 | ; | normal | -| BreakInTry.cs:39:5:54:5 | {...} | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | return [empty] (0) | -| BreakInTry.cs:39:5:54:5 | {...} | BreakInTry.cs:50:21:50:26 | break; | return [normal] (0) | -| BreakInTry.cs:39:5:54:5 | {...} | BreakInTry.cs:53:7:53:7 | ; | normal | -| BreakInTry.cs:40:9:52:9 | try {...} ... | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | empty | -| BreakInTry.cs:40:9:52:9 | try {...} ... | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | return [empty] (0) | -| BreakInTry.cs:40:9:52:9 | try {...} ... | BreakInTry.cs:50:21:50:26 | break; | normal [break] (0) | -| BreakInTry.cs:40:9:52:9 | try {...} ... | BreakInTry.cs:50:21:50:26 | break; | return [normal] (0) | -| BreakInTry.cs:41:9:44:9 | {...} | BreakInTry.cs:42:17:42:28 | ... == ... | false | -| BreakInTry.cs:41:9:44:9 | {...} | BreakInTry.cs:43:17:43:23 | return ...; | return | -| BreakInTry.cs:42:13:43:23 | if (...) ... | BreakInTry.cs:42:17:42:28 | ... == ... | false | -| BreakInTry.cs:42:13:43:23 | if (...) ... | BreakInTry.cs:43:17:43:23 | return ...; | return | -| BreakInTry.cs:42:17:42:20 | access to parameter args | BreakInTry.cs:42:17:42:20 | access to parameter args | normal | -| BreakInTry.cs:42:17:42:28 | ... == ... | BreakInTry.cs:42:17:42:28 | ... == ... | false | -| BreakInTry.cs:42:17:42:28 | ... == ... | BreakInTry.cs:42:17:42:28 | ... == ... | true | -| BreakInTry.cs:42:25:42:28 | null | BreakInTry.cs:42:25:42:28 | null | normal | -| BreakInTry.cs:43:17:43:23 | return ...; | BreakInTry.cs:43:17:43:23 | return ...; | return | -| BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | empty | -| BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:50:21:50:26 | break; | normal [break] (0) | -| BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | empty | -| BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:50:21:50:26 | break; | normal [break] (0) | -| BreakInTry.cs:47:26:47:28 | String arg | BreakInTry.cs:47:26:47:28 | String arg | normal | -| BreakInTry.cs:47:33:47:36 | access to parameter args | BreakInTry.cs:47:33:47:36 | access to parameter args | normal | -| BreakInTry.cs:48:13:51:13 | {...} | BreakInTry.cs:49:21:49:31 | ... == ... | false | -| BreakInTry.cs:48:13:51:13 | {...} | BreakInTry.cs:50:21:50:26 | break; | break | -| BreakInTry.cs:49:17:50:26 | if (...) ... | BreakInTry.cs:49:21:49:31 | ... == ... | false | -| BreakInTry.cs:49:17:50:26 | if (...) ... | BreakInTry.cs:50:21:50:26 | break; | break | -| BreakInTry.cs:49:21:49:23 | access to local variable arg | BreakInTry.cs:49:21:49:23 | access to local variable arg | normal | -| BreakInTry.cs:49:21:49:31 | ... == ... | BreakInTry.cs:49:21:49:31 | ... == ... | false | -| BreakInTry.cs:49:21:49:31 | ... == ... | BreakInTry.cs:49:21:49:31 | ... == ... | true | -| BreakInTry.cs:49:28:49:31 | null | BreakInTry.cs:49:28:49:31 | null | normal | -| BreakInTry.cs:50:21:50:26 | break; | BreakInTry.cs:50:21:50:26 | break; | break | -| BreakInTry.cs:53:7:53:7 | ; | BreakInTry.cs:53:7:53:7 | ; | normal | -| BreakInTry.cs:57:5:71:5 | {...} | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | empty | -| BreakInTry.cs:57:5:71:5 | {...} | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | return [empty] (0) | -| BreakInTry.cs:57:5:71:5 | {...} | BreakInTry.cs:68:21:68:26 | break; | normal [break] (0) | -| BreakInTry.cs:57:5:71:5 | {...} | BreakInTry.cs:68:21:68:26 | break; | return [normal] (0) | -| BreakInTry.cs:58:9:70:9 | try {...} ... | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | empty | -| BreakInTry.cs:58:9:70:9 | try {...} ... | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | return [empty] (0) | -| BreakInTry.cs:58:9:70:9 | try {...} ... | BreakInTry.cs:68:21:68:26 | break; | normal [break] (0) | -| BreakInTry.cs:58:9:70:9 | try {...} ... | BreakInTry.cs:68:21:68:26 | break; | return [normal] (0) | -| BreakInTry.cs:59:9:62:9 | {...} | BreakInTry.cs:60:17:60:28 | ... == ... | false | -| BreakInTry.cs:59:9:62:9 | {...} | BreakInTry.cs:61:17:61:23 | return ...; | return | -| BreakInTry.cs:60:13:61:23 | if (...) ... | BreakInTry.cs:60:17:60:28 | ... == ... | false | -| BreakInTry.cs:60:13:61:23 | if (...) ... | BreakInTry.cs:61:17:61:23 | return ...; | return | -| BreakInTry.cs:60:17:60:20 | access to parameter args | BreakInTry.cs:60:17:60:20 | access to parameter args | normal | -| BreakInTry.cs:60:17:60:28 | ... == ... | BreakInTry.cs:60:17:60:28 | ... == ... | false | -| BreakInTry.cs:60:17:60:28 | ... == ... | BreakInTry.cs:60:17:60:28 | ... == ... | true | -| BreakInTry.cs:60:25:60:28 | null | BreakInTry.cs:60:25:60:28 | null | normal | -| BreakInTry.cs:61:17:61:23 | return ...; | BreakInTry.cs:61:17:61:23 | return ...; | return | -| BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | empty | -| BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:68:21:68:26 | break; | normal [break] (0) | -| BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | empty | -| BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:68:21:68:26 | break; | normal [break] (0) | -| BreakInTry.cs:65:26:65:28 | String arg | BreakInTry.cs:65:26:65:28 | String arg | normal | -| BreakInTry.cs:65:33:65:36 | access to parameter args | BreakInTry.cs:65:33:65:36 | access to parameter args | normal | -| BreakInTry.cs:66:13:69:13 | {...} | BreakInTry.cs:67:21:67:31 | ... == ... | false | -| BreakInTry.cs:66:13:69:13 | {...} | BreakInTry.cs:68:21:68:26 | break; | break | -| BreakInTry.cs:67:17:68:26 | if (...) ... | BreakInTry.cs:67:21:67:31 | ... == ... | false | -| BreakInTry.cs:67:17:68:26 | if (...) ... | BreakInTry.cs:68:21:68:26 | break; | break | -| BreakInTry.cs:67:21:67:23 | access to local variable arg | BreakInTry.cs:67:21:67:23 | access to local variable arg | normal | -| BreakInTry.cs:67:21:67:31 | ... == ... | BreakInTry.cs:67:21:67:31 | ... == ... | false | -| BreakInTry.cs:67:21:67:31 | ... == ... | BreakInTry.cs:67:21:67:31 | ... == ... | true | -| BreakInTry.cs:67:28:67:31 | null | BreakInTry.cs:67:28:67:31 | null | normal | -| BreakInTry.cs:68:21:68:26 | break; | BreakInTry.cs:68:21:68:26 | break; | break | -| CompileTimeOperators.cs:3:7:3:26 | call to constructor Object | CompileTimeOperators.cs:3:7:3:26 | call to constructor Object | normal | -| CompileTimeOperators.cs:3:7:3:26 | call to method | CompileTimeOperators.cs:3:7:3:26 | call to method | normal | -| CompileTimeOperators.cs:3:7:3:26 | this access | CompileTimeOperators.cs:3:7:3:26 | this access | normal | -| CompileTimeOperators.cs:3:7:3:26 | {...} | CompileTimeOperators.cs:3:7:3:26 | {...} | normal | -| CompileTimeOperators.cs:6:5:8:5 | {...} | CompileTimeOperators.cs:7:9:7:28 | return ...; | return | -| CompileTimeOperators.cs:7:9:7:28 | return ...; | CompileTimeOperators.cs:7:9:7:28 | return ...; | return | -| CompileTimeOperators.cs:7:16:7:27 | default(...) | CompileTimeOperators.cs:7:16:7:27 | default(...) | normal | -| CompileTimeOperators.cs:11:5:13:5 | {...} | CompileTimeOperators.cs:12:9:12:27 | return ...; | return | -| CompileTimeOperators.cs:12:9:12:27 | return ...; | CompileTimeOperators.cs:12:9:12:27 | return ...; | return | -| CompileTimeOperators.cs:12:16:12:26 | sizeof(..) | CompileTimeOperators.cs:12:16:12:26 | sizeof(..) | normal | -| CompileTimeOperators.cs:16:5:18:5 | {...} | CompileTimeOperators.cs:17:9:17:27 | return ...; | return | -| CompileTimeOperators.cs:17:9:17:27 | return ...; | CompileTimeOperators.cs:17:9:17:27 | return ...; | return | -| CompileTimeOperators.cs:17:16:17:26 | typeof(...) | CompileTimeOperators.cs:17:16:17:26 | typeof(...) | normal | -| CompileTimeOperators.cs:21:5:23:5 | {...} | CompileTimeOperators.cs:22:9:22:25 | return ...; | return | -| CompileTimeOperators.cs:22:9:22:25 | return ...; | CompileTimeOperators.cs:22:9:22:25 | return ...; | return | -| CompileTimeOperators.cs:22:16:22:24 | nameof(...) | CompileTimeOperators.cs:22:16:22:24 | nameof(...) | normal | -| CompileTimeOperators.cs:22:23:22:23 | access to parameter i | CompileTimeOperators.cs:22:23:22:23 | access to parameter i | normal | -| CompileTimeOperators.cs:26:7:26:22 | call to constructor Object | CompileTimeOperators.cs:26:7:26:22 | call to constructor Object | normal | -| CompileTimeOperators.cs:26:7:26:22 | call to method | CompileTimeOperators.cs:26:7:26:22 | call to method | normal | -| CompileTimeOperators.cs:26:7:26:22 | this access | CompileTimeOperators.cs:26:7:26:22 | this access | normal | -| CompileTimeOperators.cs:26:7:26:22 | {...} | CompileTimeOperators.cs:26:7:26:22 | {...} | normal | -| CompileTimeOperators.cs:29:5:41:5 | {...} | CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | goto(End) [normal] (0) | -| CompileTimeOperators.cs:29:5:41:5 | {...} | CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | throw(Exception) [normal] (0) | -| CompileTimeOperators.cs:29:5:41:5 | {...} | CompileTimeOperators.cs:40:14:40:37 | call to method WriteLine | normal | -| CompileTimeOperators.cs:30:9:38:9 | try {...} ... | CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | goto(End) [normal] (0) | -| CompileTimeOperators.cs:30:9:38:9 | try {...} ... | CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | normal | -| CompileTimeOperators.cs:30:9:38:9 | try {...} ... | CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | throw(Exception) [normal] (0) | -| CompileTimeOperators.cs:31:9:34:9 | {...} | CompileTimeOperators.cs:32:13:32:21 | goto ...; | goto(End) | -| CompileTimeOperators.cs:31:9:34:9 | {...} | CompileTimeOperators.cs:33:13:33:37 | call to method WriteLine | normal | -| CompileTimeOperators.cs:31:9:34:9 | {...} | CompileTimeOperators.cs:33:13:33:37 | call to method WriteLine | throw(Exception) | -| CompileTimeOperators.cs:32:13:32:21 | goto ...; | CompileTimeOperators.cs:32:13:32:21 | goto ...; | goto(End) | -| CompileTimeOperators.cs:33:13:33:37 | call to method WriteLine | CompileTimeOperators.cs:33:13:33:37 | call to method WriteLine | normal | -| CompileTimeOperators.cs:33:13:33:37 | call to method WriteLine | CompileTimeOperators.cs:33:13:33:37 | call to method WriteLine | throw(Exception) | -| CompileTimeOperators.cs:33:13:33:38 | ...; | CompileTimeOperators.cs:33:13:33:37 | call to method WriteLine | normal | -| CompileTimeOperators.cs:33:13:33:38 | ...; | CompileTimeOperators.cs:33:13:33:37 | call to method WriteLine | throw(Exception) | -| CompileTimeOperators.cs:33:31:33:36 | "Dead" | CompileTimeOperators.cs:33:31:33:36 | "Dead" | normal | -| CompileTimeOperators.cs:36:9:38:9 | {...} | CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | normal | -| CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | normal | -| CompileTimeOperators.cs:37:13:37:41 | ...; | CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | normal | -| CompileTimeOperators.cs:37:31:37:39 | "Finally" | CompileTimeOperators.cs:37:31:37:39 | "Finally" | normal | -| CompileTimeOperators.cs:39:9:39:33 | call to method WriteLine | CompileTimeOperators.cs:39:9:39:33 | call to method WriteLine | normal | -| CompileTimeOperators.cs:39:9:39:34 | ...; | CompileTimeOperators.cs:39:9:39:33 | call to method WriteLine | normal | -| CompileTimeOperators.cs:39:27:39:32 | "Dead" | CompileTimeOperators.cs:39:27:39:32 | "Dead" | normal | -| CompileTimeOperators.cs:40:9:40:11 | End: | CompileTimeOperators.cs:40:9:40:11 | End: | normal | -| CompileTimeOperators.cs:40:14:40:37 | call to method WriteLine | CompileTimeOperators.cs:40:14:40:37 | call to method WriteLine | normal | -| CompileTimeOperators.cs:40:14:40:38 | ...; | CompileTimeOperators.cs:40:14:40:37 | call to method WriteLine | normal | -| CompileTimeOperators.cs:40:32:40:36 | "End" | CompileTimeOperators.cs:40:32:40:36 | "End" | normal | -| ConditionalAccess.cs:1:7:1:23 | call to constructor Object | ConditionalAccess.cs:1:7:1:23 | call to constructor Object | normal | -| ConditionalAccess.cs:1:7:1:23 | call to method | ConditionalAccess.cs:1:7:1:23 | call to method | normal | -| ConditionalAccess.cs:1:7:1:23 | this access | ConditionalAccess.cs:1:7:1:23 | this access | normal | -| ConditionalAccess.cs:1:7:1:23 | {...} | ConditionalAccess.cs:1:7:1:23 | {...} | normal | -| ConditionalAccess.cs:3:26:3:26 | access to parameter i | ConditionalAccess.cs:3:26:3:26 | access to parameter i | non-null | -| ConditionalAccess.cs:3:26:3:26 | access to parameter i | ConditionalAccess.cs:3:26:3:26 | access to parameter i | null | -| ConditionalAccess.cs:3:26:3:38 | call to method ToString | ConditionalAccess.cs:3:26:3:26 | access to parameter i | null | -| ConditionalAccess.cs:3:26:3:38 | call to method ToString | ConditionalAccess.cs:3:26:3:38 | call to method ToString | non-null | -| ConditionalAccess.cs:3:26:3:38 | call to method ToString | ConditionalAccess.cs:3:26:3:38 | call to method ToString | null | -| ConditionalAccess.cs:3:26:3:49 | call to method ToLower | ConditionalAccess.cs:3:26:3:26 | access to parameter i | null | -| ConditionalAccess.cs:3:26:3:49 | call to method ToLower | ConditionalAccess.cs:3:26:3:38 | call to method ToString | null | -| ConditionalAccess.cs:3:26:3:49 | call to method ToLower | ConditionalAccess.cs:3:26:3:49 | call to method ToLower | normal | -| ConditionalAccess.cs:5:26:5:26 | access to parameter s | ConditionalAccess.cs:5:26:5:26 | access to parameter s | non-null | -| ConditionalAccess.cs:5:26:5:26 | access to parameter s | ConditionalAccess.cs:5:26:5:26 | access to parameter s | null | -| ConditionalAccess.cs:5:26:5:34 | access to property Length | ConditionalAccess.cs:5:26:5:26 | access to parameter s | null | -| ConditionalAccess.cs:5:26:5:34 | access to property Length | ConditionalAccess.cs:5:26:5:34 | access to property Length | normal | -| ConditionalAccess.cs:7:38:7:55 | access to property Length | ConditionalAccess.cs:7:38:7:55 | access to property Length | normal | -| ConditionalAccess.cs:7:38:7:55 | access to property Length | ConditionalAccess.cs:7:39:7:46 | ... ?? ... | null | -| ConditionalAccess.cs:7:39:7:40 | access to parameter s1 | ConditionalAccess.cs:7:39:7:40 | access to parameter s1 | non-null | -| ConditionalAccess.cs:7:39:7:40 | access to parameter s1 | ConditionalAccess.cs:7:39:7:40 | access to parameter s1 | null | -| ConditionalAccess.cs:7:39:7:46 | ... ?? ... | ConditionalAccess.cs:7:39:7:46 | ... ?? ... | non-null | -| ConditionalAccess.cs:7:39:7:46 | ... ?? ... | ConditionalAccess.cs:7:39:7:46 | ... ?? ... | null | -| ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | non-null | -| ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | null | -| ConditionalAccess.cs:9:25:9:25 | access to parameter s | ConditionalAccess.cs:9:25:9:25 | access to parameter s | non-null | -| ConditionalAccess.cs:9:25:9:25 | access to parameter s | ConditionalAccess.cs:9:25:9:25 | access to parameter s | null | -| ConditionalAccess.cs:9:25:9:33 | access to property Length | ConditionalAccess.cs:9:25:9:25 | access to parameter s | null | -| ConditionalAccess.cs:9:25:9:33 | access to property Length | ConditionalAccess.cs:9:25:9:33 | access to property Length | non-null | -| ConditionalAccess.cs:9:25:9:33 | access to property Length | ConditionalAccess.cs:9:25:9:33 | access to property Length | null | -| ConditionalAccess.cs:9:25:9:38 | ... ?? ... | ConditionalAccess.cs:9:25:9:38 | ... ?? ... | normal | -| ConditionalAccess.cs:9:38:9:38 | 0 | ConditionalAccess.cs:9:38:9:38 | 0 | normal | -| ConditionalAccess.cs:12:5:17:5 | {...} | ConditionalAccess.cs:14:13:14:21 | return ...; | return | -| ConditionalAccess.cs:12:5:17:5 | {...} | ConditionalAccess.cs:16:13:16:21 | return ...; | return | -| ConditionalAccess.cs:13:9:16:21 | if (...) ... | ConditionalAccess.cs:14:13:14:21 | return ...; | return | -| ConditionalAccess.cs:13:9:16:21 | if (...) ... | ConditionalAccess.cs:16:13:16:21 | return ...; | return | -| ConditionalAccess.cs:13:13:13:13 | access to parameter s | ConditionalAccess.cs:13:13:13:13 | access to parameter s | non-null | -| ConditionalAccess.cs:13:13:13:13 | access to parameter s | ConditionalAccess.cs:13:13:13:13 | access to parameter s | null | -| ConditionalAccess.cs:13:13:13:21 | access to property Length | ConditionalAccess.cs:13:13:13:13 | access to parameter s | null | -| ConditionalAccess.cs:13:13:13:21 | access to property Length | ConditionalAccess.cs:13:13:13:21 | access to property Length | normal | -| ConditionalAccess.cs:13:13:13:25 | ... > ... | ConditionalAccess.cs:13:13:13:25 | ... > ... | false | -| ConditionalAccess.cs:13:13:13:25 | ... > ... | ConditionalAccess.cs:13:13:13:25 | ... > ... | true | -| ConditionalAccess.cs:13:25:13:25 | 0 | ConditionalAccess.cs:13:25:13:25 | 0 | normal | -| ConditionalAccess.cs:13:25:13:25 | (...) ... | ConditionalAccess.cs:13:25:13:25 | (...) ... | normal | -| ConditionalAccess.cs:14:13:14:21 | return ...; | ConditionalAccess.cs:14:13:14:21 | return ...; | return | -| ConditionalAccess.cs:14:20:14:20 | 0 | ConditionalAccess.cs:14:20:14:20 | 0 | normal | -| ConditionalAccess.cs:16:13:16:21 | return ...; | ConditionalAccess.cs:16:13:16:21 | return ...; | return | -| ConditionalAccess.cs:16:20:16:20 | 1 | ConditionalAccess.cs:16:20:16:20 | 1 | normal | -| ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | non-null | -| ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | null | -| ConditionalAccess.cs:19:40:19:60 | call to method CommaJoinWith | ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | null | -| ConditionalAccess.cs:19:40:19:60 | call to method CommaJoinWith | ConditionalAccess.cs:19:40:19:60 | call to method CommaJoinWith | normal | -| ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | normal | -| ConditionalAccess.cs:22:5:26:5 | {...} | ConditionalAccess.cs:25:9:25:32 | ... = ... | normal | -| ConditionalAccess.cs:23:9:23:39 | ... ...; | ConditionalAccess.cs:23:13:23:38 | Nullable j = ... | normal | -| ConditionalAccess.cs:23:13:23:38 | Nullable j = ... | ConditionalAccess.cs:23:13:23:38 | Nullable j = ... | normal | -| ConditionalAccess.cs:23:17:23:38 | access to property Length | ConditionalAccess.cs:23:17:23:38 | access to property Length | normal | -| ConditionalAccess.cs:23:17:23:38 | access to property Length | ConditionalAccess.cs:23:18:23:29 | (...) ... | null | -| ConditionalAccess.cs:23:18:23:29 | (...) ... | ConditionalAccess.cs:23:18:23:29 | (...) ... | null | -| ConditionalAccess.cs:23:26:23:29 | null | ConditionalAccess.cs:23:26:23:29 | null | normal | -| ConditionalAccess.cs:24:9:24:38 | ... ...; | ConditionalAccess.cs:24:13:24:37 | String s = ... | normal | -| ConditionalAccess.cs:24:13:24:37 | String s = ... | ConditionalAccess.cs:24:13:24:37 | String s = ... | normal | -| ConditionalAccess.cs:24:17:24:37 | call to method ToString | ConditionalAccess.cs:24:17:24:37 | call to method ToString | normal | -| ConditionalAccess.cs:24:18:24:24 | (...) ... | ConditionalAccess.cs:24:18:24:24 | (...) ... | non-null | -| ConditionalAccess.cs:24:24:24:24 | access to parameter i | ConditionalAccess.cs:24:24:24:24 | access to parameter i | normal | -| ConditionalAccess.cs:25:9:25:32 | ... = ... | ConditionalAccess.cs:25:9:25:32 | ... = ... | normal | -| ConditionalAccess.cs:25:9:25:33 | ...; | ConditionalAccess.cs:25:9:25:32 | ... = ... | normal | -| ConditionalAccess.cs:25:13:25:14 | "" | ConditionalAccess.cs:25:13:25:14 | "" | non-null | -| ConditionalAccess.cs:25:13:25:32 | call to method CommaJoinWith | ConditionalAccess.cs:25:13:25:32 | call to method CommaJoinWith | normal | -| ConditionalAccess.cs:25:31:25:31 | access to local variable s | ConditionalAccess.cs:25:31:25:31 | access to local variable s | normal | -| ConditionalAccess.cs:30:28:30:32 | ... = ... | ConditionalAccess.cs:30:28:30:32 | ... = ... | normal | -| ConditionalAccess.cs:30:32:30:32 | 0 | ConditionalAccess.cs:30:32:30:32 | 0 | normal | -| ConditionalAccess.cs:33:5:36:5 | {...} | ConditionalAccess.cs:35:9:35:12 | access to property Prop | null | -| ConditionalAccess.cs:33:5:36:5 | {...} | ConditionalAccess.cs:35:9:35:24 | call to method Out | normal | -| ConditionalAccess.cs:34:9:34:13 | ... = ... | ConditionalAccess.cs:34:9:34:13 | ... = ... | normal | -| ConditionalAccess.cs:34:9:34:14 | ...; | ConditionalAccess.cs:34:9:34:13 | ... = ... | normal | -| ConditionalAccess.cs:34:13:34:13 | 0 | ConditionalAccess.cs:34:13:34:13 | 0 | normal | -| ConditionalAccess.cs:35:9:35:12 | access to property Prop | ConditionalAccess.cs:35:9:35:12 | access to property Prop | non-null | -| ConditionalAccess.cs:35:9:35:12 | access to property Prop | ConditionalAccess.cs:35:9:35:12 | access to property Prop | null | -| ConditionalAccess.cs:35:9:35:12 | this access | ConditionalAccess.cs:35:9:35:12 | this access | normal | -| ConditionalAccess.cs:35:9:35:24 | call to method Out | ConditionalAccess.cs:35:9:35:12 | access to property Prop | null | -| ConditionalAccess.cs:35:9:35:24 | call to method Out | ConditionalAccess.cs:35:9:35:24 | call to method Out | normal | -| ConditionalAccess.cs:35:9:35:25 | ...; | ConditionalAccess.cs:35:9:35:12 | access to property Prop | null | -| ConditionalAccess.cs:35:9:35:25 | ...; | ConditionalAccess.cs:35:9:35:24 | call to method Out | normal | -| ConditionalAccess.cs:42:13:42:28 | {...} | ConditionalAccess.cs:42:15:42:26 | return ...; | return | -| ConditionalAccess.cs:42:15:42:26 | return ...; | ConditionalAccess.cs:42:15:42:26 | return ...; | return | -| ConditionalAccess.cs:42:22:42:25 | null | ConditionalAccess.cs:42:22:42:25 | null | normal | -| ConditionalAccess.cs:43:13:43:15 | {...} | ConditionalAccess.cs:43:13:43:15 | {...} | normal | -| ConditionalAccess.cs:47:5:55:5 | {...} | ConditionalAccess.cs:54:12:54:29 | ... += ... | normal | -| ConditionalAccess.cs:48:9:48:10 | access to parameter ca | ConditionalAccess.cs:48:9:48:10 | access to parameter ca | non-null | -| ConditionalAccess.cs:48:9:48:10 | access to parameter ca | ConditionalAccess.cs:48:9:48:10 | access to parameter ca | null | -| ConditionalAccess.cs:48:9:48:20 | access to field IntField | ConditionalAccess.cs:48:9:48:10 | access to parameter ca | non-null | -| ConditionalAccess.cs:48:9:48:20 | access to field IntField | ConditionalAccess.cs:48:9:48:10 | access to parameter ca | null | -| ConditionalAccess.cs:48:9:48:26 | ...; | ConditionalAccess.cs:48:9:48:10 | access to parameter ca | null | -| ConditionalAccess.cs:48:9:48:26 | ...; | ConditionalAccess.cs:48:12:48:25 | ... = ... | normal | -| ConditionalAccess.cs:48:12:48:25 | ... = ... | ConditionalAccess.cs:48:9:48:10 | access to parameter ca | null | -| ConditionalAccess.cs:48:12:48:25 | ... = ... | ConditionalAccess.cs:48:12:48:25 | ... = ... | normal | -| ConditionalAccess.cs:48:24:48:25 | 42 | ConditionalAccess.cs:48:24:48:25 | 42 | normal | -| ConditionalAccess.cs:49:9:49:10 | access to parameter ca | ConditionalAccess.cs:49:9:49:10 | access to parameter ca | non-null | -| ConditionalAccess.cs:49:9:49:10 | access to parameter ca | ConditionalAccess.cs:49:9:49:10 | access to parameter ca | null | -| ConditionalAccess.cs:49:9:49:22 | access to property StringProp | ConditionalAccess.cs:49:9:49:10 | access to parameter ca | non-null | -| ConditionalAccess.cs:49:9:49:22 | access to property StringProp | ConditionalAccess.cs:49:9:49:10 | access to parameter ca | null | -| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:49:9:49:10 | access to parameter ca | null | -| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:49:12:49:32 | ... = ... | normal | -| ConditionalAccess.cs:49:12:49:32 | ... = ... | ConditionalAccess.cs:49:9:49:10 | access to parameter ca | null | -| ConditionalAccess.cs:49:12:49:32 | ... = ... | ConditionalAccess.cs:49:12:49:32 | ... = ... | normal | -| ConditionalAccess.cs:49:26:49:32 | "Hello" | ConditionalAccess.cs:49:26:49:32 | "Hello" | normal | -| ConditionalAccess.cs:50:9:50:10 | access to parameter ca | ConditionalAccess.cs:50:9:50:10 | access to parameter ca | non-null | -| ConditionalAccess.cs:50:9:50:10 | access to parameter ca | ConditionalAccess.cs:50:9:50:10 | access to parameter ca | null | -| ConditionalAccess.cs:50:9:50:14 | access to indexer | ConditionalAccess.cs:50:9:50:10 | access to parameter ca | null | -| ConditionalAccess.cs:50:9:50:14 | access to indexer | ConditionalAccess.cs:50:13:50:13 | 0 | normal | -| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:50:9:50:10 | access to parameter ca | null | -| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:50:12:50:23 | ... = ... | normal | -| ConditionalAccess.cs:50:12:50:23 | ... = ... | ConditionalAccess.cs:50:9:50:10 | access to parameter ca | null | -| ConditionalAccess.cs:50:12:50:23 | ... = ... | ConditionalAccess.cs:50:12:50:23 | ... = ... | normal | -| ConditionalAccess.cs:50:13:50:13 | 0 | ConditionalAccess.cs:50:13:50:13 | 0 | normal | -| ConditionalAccess.cs:50:18:50:23 | "Set0" | ConditionalAccess.cs:50:18:50:23 | "Set0" | normal | -| ConditionalAccess.cs:51:9:51:10 | access to parameter ca | ConditionalAccess.cs:51:9:51:10 | access to parameter ca | non-null | -| ConditionalAccess.cs:51:9:51:10 | access to parameter ca | ConditionalAccess.cs:51:9:51:10 | access to parameter ca | null | -| ConditionalAccess.cs:51:9:51:16 | access to property Prop | ConditionalAccess.cs:51:9:51:10 | access to parameter ca | null | -| ConditionalAccess.cs:51:9:51:16 | access to property Prop | ConditionalAccess.cs:51:9:51:16 | access to property Prop | non-null | -| ConditionalAccess.cs:51:9:51:16 | access to property Prop | ConditionalAccess.cs:51:9:51:16 | access to property Prop | null | -| ConditionalAccess.cs:51:9:51:26 | access to field IntField | ConditionalAccess.cs:51:9:51:10 | access to parameter ca | null | -| ConditionalAccess.cs:51:9:51:26 | access to field IntField | ConditionalAccess.cs:51:9:51:16 | access to property Prop | non-null | -| ConditionalAccess.cs:51:9:51:26 | access to field IntField | ConditionalAccess.cs:51:9:51:16 | access to property Prop | null | -| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:51:9:51:10 | access to parameter ca | null | -| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:51:9:51:16 | access to property Prop | null | -| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:51:18:51:31 | ... = ... | normal | -| ConditionalAccess.cs:51:18:51:31 | ... = ... | ConditionalAccess.cs:51:9:51:10 | access to parameter ca | null | -| ConditionalAccess.cs:51:18:51:31 | ... = ... | ConditionalAccess.cs:51:9:51:16 | access to property Prop | null | -| ConditionalAccess.cs:51:18:51:31 | ... = ... | ConditionalAccess.cs:51:18:51:31 | ... = ... | normal | -| ConditionalAccess.cs:51:30:51:31 | 84 | ConditionalAccess.cs:51:30:51:31 | 84 | normal | -| ConditionalAccess.cs:52:9:52:10 | access to parameter ca | ConditionalAccess.cs:52:9:52:10 | access to parameter ca | non-null | -| ConditionalAccess.cs:52:9:52:10 | access to parameter ca | ConditionalAccess.cs:52:9:52:10 | access to parameter ca | null | -| ConditionalAccess.cs:52:9:52:16 | access to property Prop | ConditionalAccess.cs:52:9:52:10 | access to parameter ca | null | -| ConditionalAccess.cs:52:9:52:16 | access to property Prop | ConditionalAccess.cs:52:9:52:16 | access to property Prop | non-null | -| ConditionalAccess.cs:52:9:52:16 | access to property Prop | ConditionalAccess.cs:52:9:52:16 | access to property Prop | null | -| ConditionalAccess.cs:52:9:52:28 | access to property StringProp | ConditionalAccess.cs:52:9:52:10 | access to parameter ca | null | -| ConditionalAccess.cs:52:9:52:28 | access to property StringProp | ConditionalAccess.cs:52:9:52:16 | access to property Prop | non-null | -| ConditionalAccess.cs:52:9:52:28 | access to property StringProp | ConditionalAccess.cs:52:9:52:16 | access to property Prop | null | -| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:52:9:52:10 | access to parameter ca | null | -| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:52:9:52:16 | access to property Prop | null | -| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:52:18:52:38 | ... = ... | normal | -| ConditionalAccess.cs:52:18:52:38 | ... = ... | ConditionalAccess.cs:52:9:52:10 | access to parameter ca | null | -| ConditionalAccess.cs:52:18:52:38 | ... = ... | ConditionalAccess.cs:52:9:52:16 | access to property Prop | null | -| ConditionalAccess.cs:52:18:52:38 | ... = ... | ConditionalAccess.cs:52:18:52:38 | ... = ... | normal | -| ConditionalAccess.cs:52:32:52:38 | "World" | ConditionalAccess.cs:52:32:52:38 | "World" | normal | -| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | non-null | -| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | null | -| ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | null | -| ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:53:9:53:20 | access to field IntField | normal | -| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:53:12:53:25 | ... -= ... | normal | -| ConditionalAccess.cs:53:12:53:25 | ... -= ... | ConditionalAccess.cs:53:12:53:25 | ... -= ... | normal | -| ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:53:25:53:25 | 1 | normal | -| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | non-null | -| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | null | -| ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | null | -| ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | normal | -| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:54:12:54:29 | ... += ... | normal | -| ConditionalAccess.cs:54:12:54:29 | ... += ... | ConditionalAccess.cs:54:12:54:29 | ... += ... | normal | -| ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:54:27:54:29 | "!" | normal | -| ConditionalAccess.cs:60:70:60:71 | access to parameter s1 | ConditionalAccess.cs:60:70:60:71 | access to parameter s1 | normal | -| ConditionalAccess.cs:60:70:60:78 | ... + ... | ConditionalAccess.cs:60:70:60:78 | ... + ... | normal | -| ConditionalAccess.cs:60:70:60:83 | ... + ... | ConditionalAccess.cs:60:70:60:83 | ... + ... | normal | -| ConditionalAccess.cs:60:75:60:78 | ", " | ConditionalAccess.cs:60:75:60:78 | ", " | normal | -| ConditionalAccess.cs:60:82:60:83 | access to parameter s2 | ConditionalAccess.cs:60:82:60:83 | access to parameter s2 | normal | -| Conditions.cs:1:7:1:16 | call to constructor Object | Conditions.cs:1:7:1:16 | call to constructor Object | normal | -| Conditions.cs:1:7:1:16 | call to method | Conditions.cs:1:7:1:16 | call to method | normal | -| Conditions.cs:1:7:1:16 | this access | Conditions.cs:1:7:1:16 | this access | normal | -| Conditions.cs:1:7:1:16 | {...} | Conditions.cs:1:7:1:16 | {...} | normal | -| Conditions.cs:4:5:9:5 | {...} | Conditions.cs:7:13:7:16 | !... | false | -| Conditions.cs:4:5:9:5 | {...} | Conditions.cs:8:13:8:15 | ...-- | normal | -| Conditions.cs:5:9:6:16 | if (...) ... | Conditions.cs:5:13:5:15 | access to parameter inc | false | -| Conditions.cs:5:9:6:16 | if (...) ... | Conditions.cs:6:13:6:15 | ...++ | normal | -| Conditions.cs:5:13:5:15 | access to parameter inc | Conditions.cs:5:13:5:15 | access to parameter inc | false | -| Conditions.cs:5:13:5:15 | access to parameter inc | Conditions.cs:5:13:5:15 | access to parameter inc | true | -| Conditions.cs:6:13:6:13 | access to parameter x | Conditions.cs:6:13:6:13 | access to parameter x | normal | -| Conditions.cs:6:13:6:15 | ...++ | Conditions.cs:6:13:6:15 | ...++ | normal | -| Conditions.cs:6:13:6:16 | ...; | Conditions.cs:6:13:6:15 | ...++ | normal | -| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:7:13:7:16 | !... | false | -| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:8:13:8:15 | ...-- | normal | -| Conditions.cs:7:13:7:16 | !... | Conditions.cs:7:13:7:16 | !... | false | -| Conditions.cs:7:13:7:16 | !... | Conditions.cs:7:13:7:16 | !... | true | -| Conditions.cs:7:14:7:16 | access to parameter inc | Conditions.cs:7:14:7:16 | access to parameter inc | false | -| Conditions.cs:7:14:7:16 | access to parameter inc | Conditions.cs:7:14:7:16 | access to parameter inc | true | -| Conditions.cs:8:13:8:13 | access to parameter x | Conditions.cs:8:13:8:13 | access to parameter x | normal | -| Conditions.cs:8:13:8:15 | ...-- | Conditions.cs:8:13:8:15 | ...-- | normal | -| Conditions.cs:8:13:8:16 | ...; | Conditions.cs:8:13:8:15 | ...-- | normal | -| Conditions.cs:12:5:20:5 | {...} | Conditions.cs:19:9:19:17 | return ...; | return | -| Conditions.cs:13:9:13:18 | ... ...; | Conditions.cs:13:13:13:17 | Int32 x = ... | normal | -| Conditions.cs:13:13:13:17 | Int32 x = ... | Conditions.cs:13:13:13:17 | Int32 x = ... | normal | -| Conditions.cs:13:17:13:17 | 0 | Conditions.cs:13:17:13:17 | 0 | normal | -| Conditions.cs:14:9:15:16 | if (...) ... | Conditions.cs:14:13:14:13 | access to parameter b | false | -| Conditions.cs:14:9:15:16 | if (...) ... | Conditions.cs:15:13:15:15 | ...++ | normal | -| Conditions.cs:14:13:14:13 | access to parameter b | Conditions.cs:14:13:14:13 | access to parameter b | false | -| Conditions.cs:14:13:14:13 | access to parameter b | Conditions.cs:14:13:14:13 | access to parameter b | true | -| Conditions.cs:15:13:15:13 | access to local variable x | Conditions.cs:15:13:15:13 | access to local variable x | normal | -| Conditions.cs:15:13:15:15 | ...++ | Conditions.cs:15:13:15:15 | ...++ | normal | -| Conditions.cs:15:13:15:16 | ...; | Conditions.cs:15:13:15:15 | ...++ | normal | -| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:16:13:16:17 | ... > ... | false | -| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:17:17:17:18 | !... | false | -| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:18:17:18:19 | ...-- | normal | -| Conditions.cs:16:13:16:13 | access to local variable x | Conditions.cs:16:13:16:13 | access to local variable x | normal | -| Conditions.cs:16:13:16:17 | ... > ... | Conditions.cs:16:13:16:17 | ... > ... | false | -| Conditions.cs:16:13:16:17 | ... > ... | Conditions.cs:16:13:16:17 | ... > ... | true | -| Conditions.cs:16:17:16:17 | 0 | Conditions.cs:16:17:16:17 | 0 | normal | -| Conditions.cs:17:13:18:20 | if (...) ... | Conditions.cs:17:17:17:18 | !... | false | -| Conditions.cs:17:13:18:20 | if (...) ... | Conditions.cs:18:17:18:19 | ...-- | normal | -| Conditions.cs:17:17:17:18 | !... | Conditions.cs:17:17:17:18 | !... | false | -| Conditions.cs:17:17:17:18 | !... | Conditions.cs:17:17:17:18 | !... | true | -| Conditions.cs:17:18:17:18 | access to parameter b | Conditions.cs:17:18:17:18 | access to parameter b | false | -| Conditions.cs:17:18:17:18 | access to parameter b | Conditions.cs:17:18:17:18 | access to parameter b | true | -| Conditions.cs:18:17:18:17 | access to local variable x | Conditions.cs:18:17:18:17 | access to local variable x | normal | -| Conditions.cs:18:17:18:19 | ...-- | Conditions.cs:18:17:18:19 | ...-- | normal | -| Conditions.cs:18:17:18:20 | ...; | Conditions.cs:18:17:18:19 | ...-- | normal | -| Conditions.cs:19:9:19:17 | return ...; | Conditions.cs:19:9:19:17 | return ...; | return | -| Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:19:16:19:16 | access to local variable x | normal | -| Conditions.cs:23:5:31:5 | {...} | Conditions.cs:30:9:30:17 | return ...; | return | -| Conditions.cs:24:9:24:18 | ... ...; | Conditions.cs:24:13:24:17 | Int32 x = ... | normal | -| Conditions.cs:24:13:24:17 | Int32 x = ... | Conditions.cs:24:13:24:17 | Int32 x = ... | normal | -| Conditions.cs:24:17:24:17 | 0 | Conditions.cs:24:17:24:17 | 0 | normal | -| Conditions.cs:25:9:27:20 | if (...) ... | Conditions.cs:25:13:25:14 | access to parameter b1 | false | -| Conditions.cs:25:9:27:20 | if (...) ... | Conditions.cs:26:17:26:18 | access to parameter b2 | false | -| Conditions.cs:25:9:27:20 | if (...) ... | Conditions.cs:27:17:27:19 | ...++ | normal | -| Conditions.cs:25:13:25:14 | access to parameter b1 | Conditions.cs:25:13:25:14 | access to parameter b1 | false | -| Conditions.cs:25:13:25:14 | access to parameter b1 | Conditions.cs:25:13:25:14 | access to parameter b1 | true | -| Conditions.cs:26:13:27:20 | if (...) ... | Conditions.cs:26:17:26:18 | access to parameter b2 | false | -| Conditions.cs:26:13:27:20 | if (...) ... | Conditions.cs:27:17:27:19 | ...++ | normal | -| Conditions.cs:26:17:26:18 | access to parameter b2 | Conditions.cs:26:17:26:18 | access to parameter b2 | false | -| Conditions.cs:26:17:26:18 | access to parameter b2 | Conditions.cs:26:17:26:18 | access to parameter b2 | true | -| Conditions.cs:27:17:27:17 | access to local variable x | Conditions.cs:27:17:27:17 | access to local variable x | normal | -| Conditions.cs:27:17:27:19 | ...++ | Conditions.cs:27:17:27:19 | ...++ | normal | -| Conditions.cs:27:17:27:20 | ...; | Conditions.cs:27:17:27:19 | ...++ | normal | -| Conditions.cs:28:9:29:16 | if (...) ... | Conditions.cs:28:13:28:14 | access to parameter b2 | false | -| Conditions.cs:28:9:29:16 | if (...) ... | Conditions.cs:29:13:29:15 | ...++ | normal | -| Conditions.cs:28:13:28:14 | access to parameter b2 | Conditions.cs:28:13:28:14 | access to parameter b2 | false | -| Conditions.cs:28:13:28:14 | access to parameter b2 | Conditions.cs:28:13:28:14 | access to parameter b2 | true | -| Conditions.cs:29:13:29:13 | access to local variable x | Conditions.cs:29:13:29:13 | access to local variable x | normal | -| Conditions.cs:29:13:29:15 | ...++ | Conditions.cs:29:13:29:15 | ...++ | normal | -| Conditions.cs:29:13:29:16 | ...; | Conditions.cs:29:13:29:15 | ...++ | normal | -| Conditions.cs:30:9:30:17 | return ...; | Conditions.cs:30:9:30:17 | return ...; | return | -| Conditions.cs:30:16:30:16 | access to local variable x | Conditions.cs:30:16:30:16 | access to local variable x | normal | -| Conditions.cs:34:5:44:5 | {...} | Conditions.cs:43:9:43:17 | return ...; | return | -| Conditions.cs:35:9:35:18 | ... ...; | Conditions.cs:35:13:35:17 | Int32 x = ... | normal | -| Conditions.cs:35:13:35:17 | Int32 x = ... | Conditions.cs:35:13:35:17 | Int32 x = ... | normal | -| Conditions.cs:35:17:35:17 | 0 | Conditions.cs:35:17:35:17 | 0 | normal | -| Conditions.cs:36:9:36:23 | ... ...; | Conditions.cs:36:13:36:22 | Boolean b2 = ... | normal | -| Conditions.cs:36:13:36:22 | Boolean b2 = ... | Conditions.cs:36:13:36:22 | Boolean b2 = ... | normal | -| Conditions.cs:36:18:36:22 | false | Conditions.cs:36:18:36:22 | false | normal | -| Conditions.cs:37:9:38:20 | if (...) ... | Conditions.cs:37:13:37:14 | access to parameter b1 | false | -| Conditions.cs:37:9:38:20 | if (...) ... | Conditions.cs:38:13:38:19 | ... = ... | normal | -| Conditions.cs:37:13:37:14 | access to parameter b1 | Conditions.cs:37:13:37:14 | access to parameter b1 | false | -| Conditions.cs:37:13:37:14 | access to parameter b1 | Conditions.cs:37:13:37:14 | access to parameter b1 | true | -| Conditions.cs:38:13:38:19 | ... = ... | Conditions.cs:38:13:38:19 | ... = ... | normal | -| Conditions.cs:38:13:38:20 | ...; | Conditions.cs:38:13:38:19 | ... = ... | normal | -| Conditions.cs:38:18:38:19 | access to parameter b1 | Conditions.cs:38:18:38:19 | access to parameter b1 | normal | -| Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:39:13:39:14 | access to local variable b2 | false | -| Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:40:13:40:15 | ...++ | normal | -| Conditions.cs:39:13:39:14 | access to local variable b2 | Conditions.cs:39:13:39:14 | access to local variable b2 | false | -| Conditions.cs:39:13:39:14 | access to local variable b2 | Conditions.cs:39:13:39:14 | access to local variable b2 | true | -| Conditions.cs:40:13:40:13 | access to local variable x | Conditions.cs:40:13:40:13 | access to local variable x | normal | -| Conditions.cs:40:13:40:15 | ...++ | Conditions.cs:40:13:40:15 | ...++ | normal | -| Conditions.cs:40:13:40:16 | ...; | Conditions.cs:40:13:40:15 | ...++ | normal | -| Conditions.cs:41:9:42:16 | if (...) ... | Conditions.cs:41:13:41:14 | access to local variable b2 | false | -| Conditions.cs:41:9:42:16 | if (...) ... | Conditions.cs:42:13:42:15 | ...++ | normal | -| Conditions.cs:41:13:41:14 | access to local variable b2 | Conditions.cs:41:13:41:14 | access to local variable b2 | false | -| Conditions.cs:41:13:41:14 | access to local variable b2 | Conditions.cs:41:13:41:14 | access to local variable b2 | true | -| Conditions.cs:42:13:42:13 | access to local variable x | Conditions.cs:42:13:42:13 | access to local variable x | normal | -| Conditions.cs:42:13:42:15 | ...++ | Conditions.cs:42:13:42:15 | ...++ | normal | -| Conditions.cs:42:13:42:16 | ...; | Conditions.cs:42:13:42:15 | ...++ | normal | -| Conditions.cs:43:9:43:17 | return ...; | Conditions.cs:43:9:43:17 | return ...; | return | -| Conditions.cs:43:16:43:16 | access to local variable x | Conditions.cs:43:16:43:16 | access to local variable x | normal | -| Conditions.cs:47:5:55:5 | {...} | Conditions.cs:54:9:54:17 | return ...; | return | -| Conditions.cs:48:9:48:18 | ... ...; | Conditions.cs:48:13:48:17 | Int32 y = ... | normal | -| Conditions.cs:48:13:48:17 | Int32 y = ... | Conditions.cs:48:13:48:17 | Int32 y = ... | normal | -| Conditions.cs:48:17:48:17 | 0 | Conditions.cs:48:17:48:17 | 0 | normal | -| Conditions.cs:49:9:53:9 | while (...) ... | Conditions.cs:49:16:49:22 | ... > ... | false | -| Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:49:16:49:16 | access to parameter x | normal | -| Conditions.cs:49:16:49:18 | ...-- | Conditions.cs:49:16:49:18 | ...-- | normal | -| Conditions.cs:49:16:49:22 | ... > ... | Conditions.cs:49:16:49:22 | ... > ... | false | -| Conditions.cs:49:16:49:22 | ... > ... | Conditions.cs:49:16:49:22 | ... > ... | true | -| Conditions.cs:49:22:49:22 | 0 | Conditions.cs:49:22:49:22 | 0 | normal | -| Conditions.cs:50:9:53:9 | {...} | Conditions.cs:51:17:51:17 | access to parameter b | false | -| Conditions.cs:50:9:53:9 | {...} | Conditions.cs:52:17:52:19 | ...++ | normal | -| Conditions.cs:51:13:52:20 | if (...) ... | Conditions.cs:51:17:51:17 | access to parameter b | false | -| Conditions.cs:51:13:52:20 | if (...) ... | Conditions.cs:52:17:52:19 | ...++ | normal | -| Conditions.cs:51:17:51:17 | access to parameter b | Conditions.cs:51:17:51:17 | access to parameter b | false | -| Conditions.cs:51:17:51:17 | access to parameter b | Conditions.cs:51:17:51:17 | access to parameter b | true | -| Conditions.cs:52:17:52:17 | access to local variable y | Conditions.cs:52:17:52:17 | access to local variable y | normal | -| Conditions.cs:52:17:52:19 | ...++ | Conditions.cs:52:17:52:19 | ...++ | normal | -| Conditions.cs:52:17:52:20 | ...; | Conditions.cs:52:17:52:19 | ...++ | normal | -| Conditions.cs:54:9:54:17 | return ...; | Conditions.cs:54:9:54:17 | return ...; | return | -| Conditions.cs:54:16:54:16 | access to local variable y | Conditions.cs:54:16:54:16 | access to local variable y | normal | -| Conditions.cs:58:5:68:5 | {...} | Conditions.cs:67:9:67:17 | return ...; | return | -| Conditions.cs:59:9:59:18 | ... ...; | Conditions.cs:59:13:59:17 | Int32 y = ... | normal | -| Conditions.cs:59:13:59:17 | Int32 y = ... | Conditions.cs:59:13:59:17 | Int32 y = ... | normal | -| Conditions.cs:59:17:59:17 | 0 | Conditions.cs:59:17:59:17 | 0 | normal | -| Conditions.cs:60:9:64:9 | while (...) ... | Conditions.cs:60:16:60:22 | ... > ... | false | -| Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:60:16:60:16 | access to parameter x | normal | -| Conditions.cs:60:16:60:18 | ...-- | Conditions.cs:60:16:60:18 | ...-- | normal | -| Conditions.cs:60:16:60:22 | ... > ... | Conditions.cs:60:16:60:22 | ... > ... | false | -| Conditions.cs:60:16:60:22 | ... > ... | Conditions.cs:60:16:60:22 | ... > ... | true | -| Conditions.cs:60:22:60:22 | 0 | Conditions.cs:60:22:60:22 | 0 | normal | -| Conditions.cs:61:9:64:9 | {...} | Conditions.cs:62:17:62:17 | access to parameter b | false | -| Conditions.cs:61:9:64:9 | {...} | Conditions.cs:63:17:63:19 | ...++ | normal | -| Conditions.cs:62:13:63:20 | if (...) ... | Conditions.cs:62:17:62:17 | access to parameter b | false | -| Conditions.cs:62:13:63:20 | if (...) ... | Conditions.cs:63:17:63:19 | ...++ | normal | -| Conditions.cs:62:17:62:17 | access to parameter b | Conditions.cs:62:17:62:17 | access to parameter b | false | -| Conditions.cs:62:17:62:17 | access to parameter b | Conditions.cs:62:17:62:17 | access to parameter b | true | -| Conditions.cs:63:17:63:17 | access to local variable y | Conditions.cs:63:17:63:17 | access to local variable y | normal | -| Conditions.cs:63:17:63:19 | ...++ | Conditions.cs:63:17:63:19 | ...++ | normal | -| Conditions.cs:63:17:63:20 | ...; | Conditions.cs:63:17:63:19 | ...++ | normal | -| Conditions.cs:65:9:66:16 | if (...) ... | Conditions.cs:65:13:65:13 | access to parameter b | false | -| Conditions.cs:65:9:66:16 | if (...) ... | Conditions.cs:66:13:66:15 | ...++ | normal | -| Conditions.cs:65:13:65:13 | access to parameter b | Conditions.cs:65:13:65:13 | access to parameter b | false | -| Conditions.cs:65:13:65:13 | access to parameter b | Conditions.cs:65:13:65:13 | access to parameter b | true | -| Conditions.cs:66:13:66:13 | access to local variable y | Conditions.cs:66:13:66:13 | access to local variable y | normal | -| Conditions.cs:66:13:66:15 | ...++ | Conditions.cs:66:13:66:15 | ...++ | normal | -| Conditions.cs:66:13:66:16 | ...; | Conditions.cs:66:13:66:15 | ...++ | normal | -| Conditions.cs:67:9:67:17 | return ...; | Conditions.cs:67:9:67:17 | return ...; | return | -| Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:67:16:67:16 | access to local variable y | normal | -| Conditions.cs:71:5:84:5 | {...} | Conditions.cs:83:9:83:17 | return ...; | return | -| Conditions.cs:72:9:72:30 | ... ...; | Conditions.cs:72:13:72:29 | Boolean b = ... | normal | -| Conditions.cs:72:13:72:29 | Boolean b = ... | Conditions.cs:72:13:72:29 | Boolean b = ... | normal | -| Conditions.cs:72:17:72:18 | access to parameter ss | Conditions.cs:72:17:72:18 | access to parameter ss | normal | -| Conditions.cs:72:17:72:25 | access to property Length | Conditions.cs:72:17:72:25 | access to property Length | normal | -| Conditions.cs:72:17:72:29 | ... > ... | Conditions.cs:72:17:72:29 | ... > ... | normal | -| Conditions.cs:72:29:72:29 | 0 | Conditions.cs:72:29:72:29 | 0 | normal | -| Conditions.cs:73:9:73:18 | ... ...; | Conditions.cs:73:13:73:17 | Int32 x = ... | normal | -| Conditions.cs:73:13:73:17 | Int32 x = ... | Conditions.cs:73:13:73:17 | Int32 x = ... | normal | -| Conditions.cs:73:17:73:17 | 0 | Conditions.cs:73:17:73:17 | 0 | normal | -| Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | empty | -| Conditions.cs:74:22:74:22 | String _ | Conditions.cs:74:22:74:22 | String _ | normal | -| Conditions.cs:74:27:74:28 | access to parameter ss | Conditions.cs:74:27:74:28 | access to parameter ss | normal | -| Conditions.cs:75:9:80:9 | {...} | Conditions.cs:78:17:78:21 | ... > ... | false | -| Conditions.cs:75:9:80:9 | {...} | Conditions.cs:79:17:79:25 | ... = ... | normal | -| Conditions.cs:76:13:77:20 | if (...) ... | Conditions.cs:76:17:76:17 | access to local variable b | false | -| Conditions.cs:76:13:77:20 | if (...) ... | Conditions.cs:77:17:77:19 | ...++ | normal | -| Conditions.cs:76:17:76:17 | access to local variable b | Conditions.cs:76:17:76:17 | access to local variable b | false | -| Conditions.cs:76:17:76:17 | access to local variable b | Conditions.cs:76:17:76:17 | access to local variable b | true | -| Conditions.cs:77:17:77:17 | access to local variable x | Conditions.cs:77:17:77:17 | access to local variable x | normal | -| Conditions.cs:77:17:77:19 | ...++ | Conditions.cs:77:17:77:19 | ...++ | normal | -| Conditions.cs:77:17:77:20 | ...; | Conditions.cs:77:17:77:19 | ...++ | normal | -| Conditions.cs:78:13:79:26 | if (...) ... | Conditions.cs:78:17:78:21 | ... > ... | false | -| Conditions.cs:78:13:79:26 | if (...) ... | Conditions.cs:79:17:79:25 | ... = ... | normal | -| Conditions.cs:78:17:78:17 | access to local variable x | Conditions.cs:78:17:78:17 | access to local variable x | normal | -| Conditions.cs:78:17:78:21 | ... > ... | Conditions.cs:78:17:78:21 | ... > ... | false | -| Conditions.cs:78:17:78:21 | ... > ... | Conditions.cs:78:17:78:21 | ... > ... | true | -| Conditions.cs:78:21:78:21 | 0 | Conditions.cs:78:21:78:21 | 0 | normal | -| Conditions.cs:79:17:79:25 | ... = ... | Conditions.cs:79:17:79:25 | ... = ... | normal | -| Conditions.cs:79:17:79:26 | ...; | Conditions.cs:79:17:79:25 | ... = ... | normal | -| Conditions.cs:79:21:79:25 | false | Conditions.cs:79:21:79:25 | false | normal | -| Conditions.cs:81:9:82:16 | if (...) ... | Conditions.cs:81:13:81:13 | access to local variable b | false | -| Conditions.cs:81:9:82:16 | if (...) ... | Conditions.cs:82:13:82:15 | ...++ | normal | -| Conditions.cs:81:13:81:13 | access to local variable b | Conditions.cs:81:13:81:13 | access to local variable b | false | -| Conditions.cs:81:13:81:13 | access to local variable b | Conditions.cs:81:13:81:13 | access to local variable b | true | -| Conditions.cs:82:13:82:13 | access to local variable x | Conditions.cs:82:13:82:13 | access to local variable x | normal | -| Conditions.cs:82:13:82:15 | ...++ | Conditions.cs:82:13:82:15 | ...++ | normal | -| Conditions.cs:82:13:82:16 | ...; | Conditions.cs:82:13:82:15 | ...++ | normal | -| Conditions.cs:83:9:83:17 | return ...; | Conditions.cs:83:9:83:17 | return ...; | return | -| Conditions.cs:83:16:83:16 | access to local variable x | Conditions.cs:83:16:83:16 | access to local variable x | normal | -| Conditions.cs:87:5:100:5 | {...} | Conditions.cs:99:9:99:17 | return ...; | return | -| Conditions.cs:88:9:88:30 | ... ...; | Conditions.cs:88:13:88:29 | Boolean b = ... | normal | -| Conditions.cs:88:13:88:29 | Boolean b = ... | Conditions.cs:88:13:88:29 | Boolean b = ... | normal | -| Conditions.cs:88:17:88:18 | access to parameter ss | Conditions.cs:88:17:88:18 | access to parameter ss | normal | -| Conditions.cs:88:17:88:25 | access to property Length | Conditions.cs:88:17:88:25 | access to property Length | normal | -| Conditions.cs:88:17:88:29 | ... > ... | Conditions.cs:88:17:88:29 | ... > ... | normal | -| Conditions.cs:88:29:88:29 | 0 | Conditions.cs:88:29:88:29 | 0 | normal | -| Conditions.cs:89:9:89:18 | ... ...; | Conditions.cs:89:13:89:17 | Int32 x = ... | normal | -| Conditions.cs:89:13:89:17 | Int32 x = ... | Conditions.cs:89:13:89:17 | Int32 x = ... | normal | -| Conditions.cs:89:17:89:17 | 0 | Conditions.cs:89:17:89:17 | 0 | normal | -| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | empty | -| Conditions.cs:90:22:90:22 | String _ | Conditions.cs:90:22:90:22 | String _ | normal | -| Conditions.cs:90:27:90:28 | access to parameter ss | Conditions.cs:90:27:90:28 | access to parameter ss | normal | -| Conditions.cs:91:9:98:9 | {...} | Conditions.cs:96:17:96:17 | access to local variable b | false | -| Conditions.cs:91:9:98:9 | {...} | Conditions.cs:97:17:97:19 | ...++ | normal | -| Conditions.cs:92:13:93:20 | if (...) ... | Conditions.cs:92:17:92:17 | access to local variable b | false | -| Conditions.cs:92:13:93:20 | if (...) ... | Conditions.cs:93:17:93:19 | ...++ | normal | -| Conditions.cs:92:17:92:17 | access to local variable b | Conditions.cs:92:17:92:17 | access to local variable b | false | -| Conditions.cs:92:17:92:17 | access to local variable b | Conditions.cs:92:17:92:17 | access to local variable b | true | -| Conditions.cs:93:17:93:17 | access to local variable x | Conditions.cs:93:17:93:17 | access to local variable x | normal | -| Conditions.cs:93:17:93:19 | ...++ | Conditions.cs:93:17:93:19 | ...++ | normal | -| Conditions.cs:93:17:93:20 | ...; | Conditions.cs:93:17:93:19 | ...++ | normal | -| Conditions.cs:94:13:95:26 | if (...) ... | Conditions.cs:94:17:94:21 | ... > ... | false | -| Conditions.cs:94:13:95:26 | if (...) ... | Conditions.cs:95:17:95:25 | ... = ... | normal | -| Conditions.cs:94:17:94:17 | access to local variable x | Conditions.cs:94:17:94:17 | access to local variable x | normal | -| Conditions.cs:94:17:94:21 | ... > ... | Conditions.cs:94:17:94:21 | ... > ... | false | -| Conditions.cs:94:17:94:21 | ... > ... | Conditions.cs:94:17:94:21 | ... > ... | true | -| Conditions.cs:94:21:94:21 | 0 | Conditions.cs:94:21:94:21 | 0 | normal | -| Conditions.cs:95:17:95:25 | ... = ... | Conditions.cs:95:17:95:25 | ... = ... | normal | -| Conditions.cs:95:17:95:26 | ...; | Conditions.cs:95:17:95:25 | ... = ... | normal | -| Conditions.cs:95:21:95:25 | false | Conditions.cs:95:21:95:25 | false | normal | -| Conditions.cs:96:13:97:20 | if (...) ... | Conditions.cs:96:17:96:17 | access to local variable b | false | -| Conditions.cs:96:13:97:20 | if (...) ... | Conditions.cs:97:17:97:19 | ...++ | normal | -| Conditions.cs:96:17:96:17 | access to local variable b | Conditions.cs:96:17:96:17 | access to local variable b | false | -| Conditions.cs:96:17:96:17 | access to local variable b | Conditions.cs:96:17:96:17 | access to local variable b | true | -| Conditions.cs:97:17:97:17 | access to local variable x | Conditions.cs:97:17:97:17 | access to local variable x | normal | -| Conditions.cs:97:17:97:19 | ...++ | Conditions.cs:97:17:97:19 | ...++ | normal | -| Conditions.cs:97:17:97:20 | ...; | Conditions.cs:97:17:97:19 | ...++ | normal | -| Conditions.cs:99:9:99:17 | return ...; | Conditions.cs:99:9:99:17 | return ...; | return | -| Conditions.cs:99:16:99:16 | access to local variable x | Conditions.cs:99:16:99:16 | access to local variable x | normal | -| Conditions.cs:103:5:111:5 | {...} | Conditions.cs:110:9:110:17 | return ...; | return | -| Conditions.cs:104:9:104:29 | ... ...; | Conditions.cs:104:13:104:28 | String x = ... | normal | -| Conditions.cs:104:13:104:28 | String x = ... | Conditions.cs:104:13:104:28 | String x = ... | normal | -| Conditions.cs:104:17:104:17 | access to parameter b | Conditions.cs:104:17:104:17 | access to parameter b | normal | -| Conditions.cs:104:17:104:28 | call to method ToString | Conditions.cs:104:17:104:28 | call to method ToString | normal | -| Conditions.cs:105:9:106:20 | if (...) ... | Conditions.cs:105:13:105:13 | access to parameter b | false | -| Conditions.cs:105:9:106:20 | if (...) ... | Conditions.cs:106:13:106:19 | ... += ... | normal | -| Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:105:13:105:13 | access to parameter b | false | -| Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:105:13:105:13 | access to parameter b | true | -| Conditions.cs:106:13:106:13 | access to local variable x | Conditions.cs:106:13:106:13 | access to local variable x | normal | -| Conditions.cs:106:13:106:19 | ... += ... | Conditions.cs:106:13:106:19 | ... += ... | normal | -| Conditions.cs:106:13:106:20 | ...; | Conditions.cs:106:13:106:19 | ... += ... | normal | -| Conditions.cs:106:18:106:19 | "" | Conditions.cs:106:18:106:19 | "" | normal | -| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:107:13:107:24 | ... > ... | false | -| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:108:17:108:18 | !... | false | -| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:109:17:109:23 | ... += ... | normal | -| Conditions.cs:107:13:107:13 | access to local variable x | Conditions.cs:107:13:107:13 | access to local variable x | normal | -| Conditions.cs:107:13:107:20 | access to property Length | Conditions.cs:107:13:107:20 | access to property Length | normal | -| Conditions.cs:107:13:107:24 | ... > ... | Conditions.cs:107:13:107:24 | ... > ... | false | -| Conditions.cs:107:13:107:24 | ... > ... | Conditions.cs:107:13:107:24 | ... > ... | true | -| Conditions.cs:107:24:107:24 | 0 | Conditions.cs:107:24:107:24 | 0 | normal | -| Conditions.cs:108:13:109:24 | if (...) ... | Conditions.cs:108:17:108:18 | !... | false | -| Conditions.cs:108:13:109:24 | if (...) ... | Conditions.cs:109:17:109:23 | ... += ... | normal | -| Conditions.cs:108:17:108:18 | !... | Conditions.cs:108:17:108:18 | !... | false | -| Conditions.cs:108:17:108:18 | !... | Conditions.cs:108:17:108:18 | !... | true | -| Conditions.cs:108:18:108:18 | access to parameter b | Conditions.cs:108:18:108:18 | access to parameter b | false | -| Conditions.cs:108:18:108:18 | access to parameter b | Conditions.cs:108:18:108:18 | access to parameter b | true | -| Conditions.cs:109:17:109:17 | access to local variable x | Conditions.cs:109:17:109:17 | access to local variable x | normal | -| Conditions.cs:109:17:109:23 | ... += ... | Conditions.cs:109:17:109:23 | ... += ... | normal | -| Conditions.cs:109:17:109:24 | ...; | Conditions.cs:109:17:109:23 | ... += ... | normal | -| Conditions.cs:109:22:109:23 | "" | Conditions.cs:109:22:109:23 | "" | normal | -| Conditions.cs:110:9:110:17 | return ...; | Conditions.cs:110:9:110:17 | return ...; | return | -| Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:110:16:110:16 | access to local variable x | normal | -| Conditions.cs:114:5:124:5 | {...} | Conditions.cs:116:25:116:39 | ... < ... | false | -| Conditions.cs:115:9:115:24 | ... ...; | Conditions.cs:115:16:115:23 | String s = ... | normal | -| Conditions.cs:115:16:115:23 | String s = ... | Conditions.cs:115:16:115:23 | String s = ... | normal | -| Conditions.cs:115:20:115:23 | null | Conditions.cs:115:20:115:23 | null | normal | -| Conditions.cs:116:9:123:9 | for (...;...;...) ... | Conditions.cs:116:25:116:39 | ... < ... | false | -| Conditions.cs:116:18:116:22 | Int32 i = ... | Conditions.cs:116:18:116:22 | Int32 i = ... | normal | -| Conditions.cs:116:22:116:22 | 0 | Conditions.cs:116:22:116:22 | 0 | normal | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:116:25:116:25 | access to local variable i | normal | -| Conditions.cs:116:25:116:39 | ... < ... | Conditions.cs:116:25:116:39 | ... < ... | false | -| Conditions.cs:116:25:116:39 | ... < ... | Conditions.cs:116:25:116:39 | ... < ... | true | -| Conditions.cs:116:29:116:32 | access to parameter args | Conditions.cs:116:29:116:32 | access to parameter args | normal | -| Conditions.cs:116:29:116:39 | access to property Length | Conditions.cs:116:29:116:39 | access to property Length | normal | -| Conditions.cs:116:42:116:42 | access to local variable i | Conditions.cs:116:42:116:42 | access to local variable i | normal | -| Conditions.cs:116:42:116:44 | ...++ | Conditions.cs:116:42:116:44 | ...++ | normal | -| Conditions.cs:117:9:123:9 | {...} | Conditions.cs:121:17:121:20 | access to local variable last | false | -| Conditions.cs:117:9:123:9 | {...} | Conditions.cs:122:17:122:24 | ... = ... | normal | -| Conditions.cs:118:13:118:44 | ... ...; | Conditions.cs:118:17:118:43 | Boolean last = ... | normal | -| Conditions.cs:118:17:118:43 | Boolean last = ... | Conditions.cs:118:17:118:43 | Boolean last = ... | normal | -| Conditions.cs:118:24:118:24 | access to local variable i | Conditions.cs:118:24:118:24 | access to local variable i | normal | -| Conditions.cs:118:24:118:43 | ... == ... | Conditions.cs:118:24:118:43 | ... == ... | normal | -| Conditions.cs:118:29:118:32 | access to parameter args | Conditions.cs:118:29:118:32 | access to parameter args | normal | -| Conditions.cs:118:29:118:39 | access to property Length | Conditions.cs:118:29:118:39 | access to property Length | normal | -| Conditions.cs:118:29:118:43 | ... - ... | Conditions.cs:118:29:118:43 | ... - ... | normal | -| Conditions.cs:118:43:118:43 | 1 | Conditions.cs:118:43:118:43 | 1 | normal | -| Conditions.cs:119:13:120:23 | if (...) ... | Conditions.cs:119:17:119:21 | !... | false | -| Conditions.cs:119:13:120:23 | if (...) ... | Conditions.cs:120:17:120:22 | ... = ... | normal | -| Conditions.cs:119:17:119:21 | !... | Conditions.cs:119:17:119:21 | !... | false | -| Conditions.cs:119:17:119:21 | !... | Conditions.cs:119:17:119:21 | !... | true | -| Conditions.cs:119:18:119:21 | access to local variable last | Conditions.cs:119:18:119:21 | access to local variable last | false | -| Conditions.cs:119:18:119:21 | access to local variable last | Conditions.cs:119:18:119:21 | access to local variable last | true | -| Conditions.cs:120:17:120:22 | ... = ... | Conditions.cs:120:17:120:22 | ... = ... | normal | -| Conditions.cs:120:17:120:23 | ...; | Conditions.cs:120:17:120:22 | ... = ... | normal | -| Conditions.cs:120:21:120:22 | "" | Conditions.cs:120:21:120:22 | "" | normal | -| Conditions.cs:121:13:122:25 | if (...) ... | Conditions.cs:121:17:121:20 | access to local variable last | false | -| Conditions.cs:121:13:122:25 | if (...) ... | Conditions.cs:122:17:122:24 | ... = ... | normal | -| Conditions.cs:121:17:121:20 | access to local variable last | Conditions.cs:121:17:121:20 | access to local variable last | false | -| Conditions.cs:121:17:121:20 | access to local variable last | Conditions.cs:121:17:121:20 | access to local variable last | true | -| Conditions.cs:122:17:122:24 | ... = ... | Conditions.cs:122:17:122:24 | ... = ... | normal | -| Conditions.cs:122:17:122:25 | ...; | Conditions.cs:122:17:122:24 | ... = ... | normal | -| Conditions.cs:122:21:122:24 | null | Conditions.cs:122:21:122:24 | null | normal | -| Conditions.cs:131:16:131:19 | true | Conditions.cs:131:16:131:19 | true | true | -| Conditions.cs:132:9:140:9 | {...} | Conditions.cs:133:17:133:22 | access to field Field1 | false | -| Conditions.cs:132:9:140:9 | {...} | Conditions.cs:135:21:135:26 | access to field Field2 | false | -| Conditions.cs:132:9:140:9 | {...} | Conditions.cs:137:21:137:37 | call to method ToString | normal | -| Conditions.cs:133:13:139:13 | if (...) ... | Conditions.cs:133:17:133:22 | access to field Field1 | false | -| Conditions.cs:133:13:139:13 | if (...) ... | Conditions.cs:135:21:135:26 | access to field Field2 | false | -| Conditions.cs:133:13:139:13 | if (...) ... | Conditions.cs:137:21:137:37 | call to method ToString | normal | -| Conditions.cs:133:17:133:22 | access to field Field1 | Conditions.cs:133:17:133:22 | access to field Field1 | false | -| Conditions.cs:133:17:133:22 | access to field Field1 | Conditions.cs:133:17:133:22 | access to field Field1 | true | -| Conditions.cs:133:17:133:22 | this access | Conditions.cs:133:17:133:22 | this access | normal | -| Conditions.cs:134:13:139:13 | {...} | Conditions.cs:135:21:135:26 | access to field Field2 | false | -| Conditions.cs:134:13:139:13 | {...} | Conditions.cs:137:21:137:37 | call to method ToString | normal | -| Conditions.cs:135:17:138:17 | if (...) ... | Conditions.cs:135:21:135:26 | access to field Field2 | false | -| Conditions.cs:135:17:138:17 | if (...) ... | Conditions.cs:137:21:137:37 | call to method ToString | normal | -| Conditions.cs:135:21:135:26 | access to field Field2 | Conditions.cs:135:21:135:26 | access to field Field2 | false | -| Conditions.cs:135:21:135:26 | access to field Field2 | Conditions.cs:135:21:135:26 | access to field Field2 | true | -| Conditions.cs:135:21:135:26 | this access | Conditions.cs:135:21:135:26 | this access | normal | -| Conditions.cs:136:17:138:17 | {...} | Conditions.cs:137:21:137:37 | call to method ToString | normal | -| Conditions.cs:137:21:137:26 | access to field Field1 | Conditions.cs:137:21:137:26 | access to field Field1 | normal | -| Conditions.cs:137:21:137:26 | this access | Conditions.cs:137:21:137:26 | this access | normal | -| Conditions.cs:137:21:137:37 | call to method ToString | Conditions.cs:137:21:137:37 | call to method ToString | normal | -| Conditions.cs:137:21:137:38 | ...; | Conditions.cs:137:21:137:37 | call to method ToString | normal | -| Conditions.cs:144:5:150:5 | {...} | Conditions.cs:147:13:147:48 | call to method WriteLine | normal | -| Conditions.cs:144:5:150:5 | {...} | Conditions.cs:149:13:149:48 | call to method WriteLine | normal | -| Conditions.cs:145:9:145:30 | ... ...; | Conditions.cs:145:13:145:29 | String s = ... | normal | -| Conditions.cs:145:13:145:29 | String s = ... | Conditions.cs:145:13:145:29 | String s = ... | normal | -| Conditions.cs:145:17:145:17 | access to parameter b | Conditions.cs:145:17:145:17 | access to parameter b | false | -| Conditions.cs:145:17:145:17 | access to parameter b | Conditions.cs:145:17:145:17 | access to parameter b | true | -| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:145:17:145:29 | ... ? ... : ... | normal | -| Conditions.cs:145:21:145:23 | "a" | Conditions.cs:145:21:145:23 | "a" | normal | -| Conditions.cs:145:27:145:29 | "b" | Conditions.cs:145:27:145:29 | "b" | normal | -| Conditions.cs:146:9:149:49 | if (...) ... | Conditions.cs:147:13:147:48 | call to method WriteLine | normal | -| Conditions.cs:146:9:149:49 | if (...) ... | Conditions.cs:149:13:149:48 | call to method WriteLine | normal | -| Conditions.cs:146:13:146:13 | access to parameter b | Conditions.cs:146:13:146:13 | access to parameter b | false | -| Conditions.cs:146:13:146:13 | access to parameter b | Conditions.cs:146:13:146:13 | access to parameter b | true | -| Conditions.cs:147:13:147:48 | call to method WriteLine | Conditions.cs:147:13:147:48 | call to method WriteLine | normal | -| Conditions.cs:147:13:147:49 | ...; | Conditions.cs:147:13:147:48 | call to method WriteLine | normal | -| Conditions.cs:147:38:147:47 | $"..." | Conditions.cs:147:38:147:47 | $"..." | normal | -| Conditions.cs:147:40:147:43 | "a = " | Conditions.cs:147:40:147:43 | "a = " | normal | -| Conditions.cs:147:44:147:46 | {...} | Conditions.cs:147:44:147:46 | {...} | normal | -| Conditions.cs:147:45:147:45 | access to local variable s | Conditions.cs:147:45:147:45 | access to local variable s | normal | -| Conditions.cs:149:13:149:48 | call to method WriteLine | Conditions.cs:149:13:149:48 | call to method WriteLine | normal | -| Conditions.cs:149:13:149:49 | ...; | Conditions.cs:149:13:149:48 | call to method WriteLine | normal | -| Conditions.cs:149:38:149:47 | $"..." | Conditions.cs:149:38:149:47 | $"..." | normal | -| Conditions.cs:149:40:149:43 | "b = " | Conditions.cs:149:40:149:43 | "b = " | normal | -| Conditions.cs:149:44:149:46 | {...} | Conditions.cs:149:44:149:46 | {...} | normal | -| Conditions.cs:149:45:149:45 | access to local variable s | Conditions.cs:149:45:149:45 | access to local variable s | normal | -| ExitMethods.cs:6:7:6:17 | call to constructor Object | ExitMethods.cs:6:7:6:17 | call to constructor Object | normal | -| ExitMethods.cs:6:7:6:17 | call to method | ExitMethods.cs:6:7:6:17 | call to method | normal | -| ExitMethods.cs:6:7:6:17 | this access | ExitMethods.cs:6:7:6:17 | this access | normal | -| ExitMethods.cs:6:7:6:17 | {...} | ExitMethods.cs:6:7:6:17 | {...} | normal | -| ExitMethods.cs:9:5:12:5 | {...} | ExitMethods.cs:11:9:11:15 | return ...; | return | -| ExitMethods.cs:10:9:10:24 | call to method ErrorMaybe | ExitMethods.cs:10:9:10:24 | call to method ErrorMaybe | normal | -| ExitMethods.cs:10:9:10:25 | ...; | ExitMethods.cs:10:9:10:24 | call to method ErrorMaybe | normal | -| ExitMethods.cs:10:20:10:23 | true | ExitMethods.cs:10:20:10:23 | true | normal | -| ExitMethods.cs:11:9:11:15 | return ...; | ExitMethods.cs:11:9:11:15 | return ...; | return | -| ExitMethods.cs:15:5:18:5 | {...} | ExitMethods.cs:17:9:17:15 | return ...; | return | -| ExitMethods.cs:16:9:16:25 | call to method ErrorMaybe | ExitMethods.cs:16:9:16:25 | call to method ErrorMaybe | normal | -| ExitMethods.cs:16:9:16:26 | ...; | ExitMethods.cs:16:9:16:25 | call to method ErrorMaybe | normal | -| ExitMethods.cs:16:20:16:24 | false | ExitMethods.cs:16:20:16:24 | false | normal | -| ExitMethods.cs:17:9:17:15 | return ...; | ExitMethods.cs:17:9:17:15 | return ...; | return | -| ExitMethods.cs:21:5:24:5 | {...} | ExitMethods.cs:22:9:22:25 | call to method ErrorAlways | throw(ArgumentException) | -| ExitMethods.cs:21:5:24:5 | {...} | ExitMethods.cs:22:9:22:25 | call to method ErrorAlways | throw(Exception) | -| ExitMethods.cs:21:5:24:5 | {...} | ExitMethods.cs:23:9:23:15 | return ...; | return | -| ExitMethods.cs:22:9:22:25 | call to method ErrorAlways | ExitMethods.cs:22:9:22:25 | call to method ErrorAlways | throw(ArgumentException) | -| ExitMethods.cs:22:9:22:25 | call to method ErrorAlways | ExitMethods.cs:22:9:22:25 | call to method ErrorAlways | throw(Exception) | -| ExitMethods.cs:22:9:22:26 | ...; | ExitMethods.cs:22:9:22:25 | call to method ErrorAlways | throw(ArgumentException) | -| ExitMethods.cs:22:9:22:26 | ...; | ExitMethods.cs:22:9:22:25 | call to method ErrorAlways | throw(Exception) | -| ExitMethods.cs:22:21:22:24 | true | ExitMethods.cs:22:21:22:24 | true | normal | -| ExitMethods.cs:23:9:23:15 | return ...; | ExitMethods.cs:23:9:23:15 | return ...; | return | -| ExitMethods.cs:27:5:30:5 | {...} | ExitMethods.cs:28:9:28:14 | call to method Exit | exit | -| ExitMethods.cs:27:5:30:5 | {...} | ExitMethods.cs:29:9:29:15 | return ...; | return | -| ExitMethods.cs:28:9:28:14 | call to method Exit | ExitMethods.cs:28:9:28:14 | call to method Exit | exit | -| ExitMethods.cs:28:9:28:14 | this access | ExitMethods.cs:28:9:28:14 | this access | normal | -| ExitMethods.cs:28:9:28:15 | ...; | ExitMethods.cs:28:9:28:14 | call to method Exit | exit | -| ExitMethods.cs:29:9:29:15 | return ...; | ExitMethods.cs:29:9:29:15 | return ...; | return | -| ExitMethods.cs:33:5:36:5 | {...} | ExitMethods.cs:34:9:34:25 | call to method ApplicationExit | exit | -| ExitMethods.cs:33:5:36:5 | {...} | ExitMethods.cs:35:9:35:15 | return ...; | return | -| ExitMethods.cs:34:9:34:25 | call to method ApplicationExit | ExitMethods.cs:34:9:34:25 | call to method ApplicationExit | exit | -| ExitMethods.cs:34:9:34:25 | this access | ExitMethods.cs:34:9:34:25 | this access | normal | -| ExitMethods.cs:34:9:34:26 | ...; | ExitMethods.cs:34:9:34:25 | call to method ApplicationExit | exit | -| ExitMethods.cs:35:9:35:15 | return ...; | ExitMethods.cs:35:9:35:15 | return ...; | return | -| ExitMethods.cs:39:5:52:5 | {...} | ExitMethods.cs:46:13:46:19 | return ...; | return | -| ExitMethods.cs:39:5:52:5 | {...} | ExitMethods.cs:50:13:50:19 | return ...; | return | -| ExitMethods.cs:40:9:51:9 | try {...} ... | ExitMethods.cs:46:13:46:19 | return ...; | return | -| ExitMethods.cs:40:9:51:9 | try {...} ... | ExitMethods.cs:50:13:50:19 | return ...; | return | -| ExitMethods.cs:41:9:43:9 | {...} | ExitMethods.cs:42:13:42:30 | call to method ErrorAlways | throw(ArgumentException) | -| ExitMethods.cs:41:9:43:9 | {...} | ExitMethods.cs:42:13:42:30 | call to method ErrorAlways | throw(Exception) | -| ExitMethods.cs:42:13:42:30 | call to method ErrorAlways | ExitMethods.cs:42:13:42:30 | call to method ErrorAlways | throw(ArgumentException) | -| ExitMethods.cs:42:13:42:30 | call to method ErrorAlways | ExitMethods.cs:42:13:42:30 | call to method ErrorAlways | throw(Exception) | -| ExitMethods.cs:42:13:42:31 | ...; | ExitMethods.cs:42:13:42:30 | call to method ErrorAlways | throw(ArgumentException) | -| ExitMethods.cs:42:13:42:31 | ...; | ExitMethods.cs:42:13:42:30 | call to method ErrorAlways | throw(Exception) | -| ExitMethods.cs:42:25:42:29 | false | ExitMethods.cs:42:25:42:29 | false | normal | -| ExitMethods.cs:44:9:47:9 | catch (...) {...} | ExitMethods.cs:44:9:47:9 | catch (...) {...} | no-match | -| ExitMethods.cs:44:9:47:9 | catch (...) {...} | ExitMethods.cs:46:13:46:19 | return ...; | return | -| ExitMethods.cs:45:9:47:9 | {...} | ExitMethods.cs:46:13:46:19 | return ...; | return | -| ExitMethods.cs:46:13:46:19 | return ...; | ExitMethods.cs:46:13:46:19 | return ...; | return | -| ExitMethods.cs:48:9:51:9 | catch (...) {...} | ExitMethods.cs:50:13:50:19 | return ...; | return | -| ExitMethods.cs:49:9:51:9 | {...} | ExitMethods.cs:50:13:50:19 | return ...; | return | -| ExitMethods.cs:50:13:50:19 | return ...; | ExitMethods.cs:50:13:50:19 | return ...; | return | -| ExitMethods.cs:55:5:58:5 | {...} | ExitMethods.cs:56:9:56:22 | call to method ErrorAlways2 | throw(Exception) | -| ExitMethods.cs:55:5:58:5 | {...} | ExitMethods.cs:57:9:57:15 | return ...; | return | -| ExitMethods.cs:56:9:56:22 | call to method ErrorAlways2 | ExitMethods.cs:56:9:56:22 | call to method ErrorAlways2 | throw(Exception) | -| ExitMethods.cs:56:9:56:23 | ...; | ExitMethods.cs:56:9:56:22 | call to method ErrorAlways2 | throw(Exception) | -| ExitMethods.cs:57:9:57:15 | return ...; | ExitMethods.cs:57:9:57:15 | return ...; | return | -| ExitMethods.cs:61:5:64:5 | {...} | ExitMethods.cs:62:9:62:22 | call to method ErrorAlways3 | throw(Exception) | -| ExitMethods.cs:61:5:64:5 | {...} | ExitMethods.cs:63:9:63:15 | return ...; | return | -| ExitMethods.cs:62:9:62:22 | call to method ErrorAlways3 | ExitMethods.cs:62:9:62:22 | call to method ErrorAlways3 | throw(Exception) | -| ExitMethods.cs:62:9:62:23 | ...; | ExitMethods.cs:62:9:62:22 | call to method ErrorAlways3 | throw(Exception) | -| ExitMethods.cs:63:9:63:15 | return ...; | ExitMethods.cs:63:9:63:15 | return ...; | return | -| ExitMethods.cs:67:5:70:5 | {...} | ExitMethods.cs:68:13:68:13 | access to parameter b | false | -| ExitMethods.cs:67:5:70:5 | {...} | ExitMethods.cs:69:13:69:34 | throw ...; | throw(Exception) | -| ExitMethods.cs:68:9:69:34 | if (...) ... | ExitMethods.cs:68:13:68:13 | access to parameter b | false | -| ExitMethods.cs:68:9:69:34 | if (...) ... | ExitMethods.cs:69:13:69:34 | throw ...; | throw(Exception) | -| ExitMethods.cs:68:13:68:13 | access to parameter b | ExitMethods.cs:68:13:68:13 | access to parameter b | false | -| ExitMethods.cs:68:13:68:13 | access to parameter b | ExitMethods.cs:68:13:68:13 | access to parameter b | true | -| ExitMethods.cs:69:13:69:34 | throw ...; | ExitMethods.cs:69:13:69:34 | throw ...; | throw(Exception) | -| ExitMethods.cs:69:19:69:33 | object creation of type Exception | ExitMethods.cs:69:19:69:33 | object creation of type Exception | normal | -| ExitMethods.cs:73:5:78:5 | {...} | ExitMethods.cs:75:13:75:34 | throw ...; | throw(Exception) | -| ExitMethods.cs:73:5:78:5 | {...} | ExitMethods.cs:77:13:77:45 | throw ...; | throw(ArgumentException) | -| ExitMethods.cs:74:9:77:45 | if (...) ... | ExitMethods.cs:75:13:75:34 | throw ...; | throw(Exception) | -| ExitMethods.cs:74:9:77:45 | if (...) ... | ExitMethods.cs:77:13:77:45 | throw ...; | throw(ArgumentException) | -| ExitMethods.cs:74:13:74:13 | access to parameter b | ExitMethods.cs:74:13:74:13 | access to parameter b | false | -| ExitMethods.cs:74:13:74:13 | access to parameter b | ExitMethods.cs:74:13:74:13 | access to parameter b | true | -| ExitMethods.cs:75:13:75:34 | throw ...; | ExitMethods.cs:75:13:75:34 | throw ...; | throw(Exception) | -| ExitMethods.cs:75:19:75:33 | object creation of type Exception | ExitMethods.cs:75:19:75:33 | object creation of type Exception | normal | -| ExitMethods.cs:77:13:77:45 | throw ...; | ExitMethods.cs:77:13:77:45 | throw ...; | throw(ArgumentException) | -| ExitMethods.cs:77:19:77:44 | object creation of type ArgumentException | ExitMethods.cs:77:19:77:44 | object creation of type ArgumentException | normal | -| ExitMethods.cs:77:41:77:43 | "b" | ExitMethods.cs:77:41:77:43 | "b" | normal | -| ExitMethods.cs:81:5:83:5 | {...} | ExitMethods.cs:82:9:82:30 | throw ...; | throw(Exception) | -| ExitMethods.cs:82:9:82:30 | throw ...; | ExitMethods.cs:82:9:82:30 | throw ...; | throw(Exception) | -| ExitMethods.cs:82:15:82:29 | object creation of type Exception | ExitMethods.cs:82:15:82:29 | object creation of type Exception | normal | -| ExitMethods.cs:85:35:85:55 | throw ... | ExitMethods.cs:85:35:85:55 | throw ... | throw(Exception) | -| ExitMethods.cs:85:41:85:55 | object creation of type Exception | ExitMethods.cs:85:41:85:55 | object creation of type Exception | normal | -| ExitMethods.cs:88:5:90:5 | {...} | ExitMethods.cs:89:9:89:27 | call to method Exit | exit | -| ExitMethods.cs:89:9:89:27 | call to method Exit | ExitMethods.cs:89:9:89:27 | call to method Exit | exit | -| ExitMethods.cs:89:9:89:28 | ...; | ExitMethods.cs:89:9:89:27 | call to method Exit | exit | -| ExitMethods.cs:89:26:89:26 | 0 | ExitMethods.cs:89:26:89:26 | 0 | normal | -| ExitMethods.cs:93:5:103:5 | {...} | ExitMethods.cs:96:13:96:18 | call to method Exit | exit | -| ExitMethods.cs:94:9:102:9 | try {...} ... | ExitMethods.cs:96:13:96:18 | call to method Exit | exit | -| ExitMethods.cs:95:9:97:9 | {...} | ExitMethods.cs:96:13:96:18 | call to method Exit | exit | -| ExitMethods.cs:96:13:96:18 | call to method Exit | ExitMethods.cs:96:13:96:18 | call to method Exit | exit | -| ExitMethods.cs:96:13:96:18 | this access | ExitMethods.cs:96:13:96:18 | this access | normal | -| ExitMethods.cs:96:13:96:19 | ...; | ExitMethods.cs:96:13:96:18 | call to method Exit | exit | -| ExitMethods.cs:99:9:102:9 | {...} | ExitMethods.cs:101:13:101:40 | call to method WriteLine | normal | -| ExitMethods.cs:101:13:101:40 | call to method WriteLine | ExitMethods.cs:101:13:101:40 | call to method WriteLine | normal | -| ExitMethods.cs:101:13:101:41 | ...; | ExitMethods.cs:101:13:101:40 | call to method WriteLine | normal | -| ExitMethods.cs:101:38:101:39 | "" | ExitMethods.cs:101:38:101:39 | "" | normal | -| ExitMethods.cs:106:5:108:5 | {...} | ExitMethods.cs:107:9:107:47 | call to method Exit | exit | -| ExitMethods.cs:107:9:107:47 | call to method Exit | ExitMethods.cs:107:9:107:47 | call to method Exit | exit | -| ExitMethods.cs:107:9:107:48 | ...; | ExitMethods.cs:107:9:107:47 | call to method Exit | exit | -| ExitMethods.cs:111:5:113:5 | {...} | ExitMethods.cs:112:9:112:77 | return ...; | return | -| ExitMethods.cs:111:5:113:5 | {...} | ExitMethods.cs:112:41:112:76 | throw ... | throw(ArgumentException) | -| ExitMethods.cs:112:9:112:77 | return ...; | ExitMethods.cs:112:9:112:77 | return ...; | return | -| ExitMethods.cs:112:9:112:77 | return ...; | ExitMethods.cs:112:41:112:76 | throw ... | throw(ArgumentException) | -| ExitMethods.cs:112:16:112:20 | access to parameter input | ExitMethods.cs:112:16:112:20 | access to parameter input | normal | -| ExitMethods.cs:112:16:112:25 | ... != ... | ExitMethods.cs:112:16:112:25 | ... != ... | false | -| ExitMethods.cs:112:16:112:25 | ... != ... | ExitMethods.cs:112:16:112:25 | ... != ... | true | -| ExitMethods.cs:112:16:112:76 | ... ? ... : ... | ExitMethods.cs:112:16:112:76 | ... ? ... : ... | normal | -| ExitMethods.cs:112:16:112:76 | ... ? ... : ... | ExitMethods.cs:112:41:112:76 | throw ... | throw(ArgumentException) | -| ExitMethods.cs:112:25:112:25 | 0 | ExitMethods.cs:112:25:112:25 | 0 | normal | -| ExitMethods.cs:112:25:112:25 | (...) ... | ExitMethods.cs:112:25:112:25 | (...) ... | normal | -| ExitMethods.cs:112:29:112:29 | 1 | ExitMethods.cs:112:29:112:29 | 1 | normal | -| ExitMethods.cs:112:29:112:29 | (...) ... | ExitMethods.cs:112:29:112:29 | (...) ... | normal | -| ExitMethods.cs:112:29:112:37 | ... / ... | ExitMethods.cs:112:29:112:37 | ... / ... | normal | -| ExitMethods.cs:112:33:112:37 | access to parameter input | ExitMethods.cs:112:33:112:37 | access to parameter input | normal | -| ExitMethods.cs:112:41:112:76 | throw ... | ExitMethods.cs:112:41:112:76 | throw ... | throw(ArgumentException) | -| ExitMethods.cs:112:47:112:76 | object creation of type ArgumentException | ExitMethods.cs:112:47:112:76 | object creation of type ArgumentException | normal | -| ExitMethods.cs:112:69:112:75 | "input" | ExitMethods.cs:112:69:112:75 | "input" | normal | -| ExitMethods.cs:116:5:118:5 | {...} | ExitMethods.cs:117:9:117:39 | return ...; | return | -| ExitMethods.cs:117:9:117:39 | return ...; | ExitMethods.cs:117:9:117:39 | return ...; | return | -| ExitMethods.cs:117:16:117:16 | access to parameter s | ExitMethods.cs:117:16:117:16 | access to parameter s | normal | -| ExitMethods.cs:117:16:117:30 | call to method Contains | ExitMethods.cs:117:16:117:30 | call to method Contains | false | -| ExitMethods.cs:117:16:117:30 | call to method Contains | ExitMethods.cs:117:16:117:30 | call to method Contains | true | -| ExitMethods.cs:117:16:117:38 | ... ? ... : ... | ExitMethods.cs:117:16:117:38 | ... ? ... : ... | normal | -| ExitMethods.cs:117:27:117:29 | - | ExitMethods.cs:117:27:117:29 | - | normal | -| ExitMethods.cs:117:34:117:34 | 0 | ExitMethods.cs:117:34:117:34 | 0 | normal | -| ExitMethods.cs:117:38:117:38 | 1 | ExitMethods.cs:117:38:117:38 | 1 | normal | -| ExitMethods.cs:121:5:124:5 | {...} | ExitMethods.cs:122:9:122:28 | call to method IsTrue | throw(AssertFailedException) | -| ExitMethods.cs:121:5:124:5 | {...} | ExitMethods.cs:123:13:123:17 | Int32 x = ... | normal | -| ExitMethods.cs:122:9:122:28 | call to method IsTrue | ExitMethods.cs:122:9:122:28 | call to method IsTrue | throw(AssertFailedException) | -| ExitMethods.cs:122:9:122:29 | ...; | ExitMethods.cs:122:9:122:28 | call to method IsTrue | throw(AssertFailedException) | -| ExitMethods.cs:122:23:122:27 | false | ExitMethods.cs:122:23:122:27 | false | normal | -| ExitMethods.cs:123:9:123:18 | ... ...; | ExitMethods.cs:123:13:123:17 | Int32 x = ... | normal | -| ExitMethods.cs:123:13:123:17 | Int32 x = ... | ExitMethods.cs:123:13:123:17 | Int32 x = ... | normal | -| ExitMethods.cs:123:17:123:17 | 0 | ExitMethods.cs:123:17:123:17 | 0 | normal | -| ExitMethods.cs:127:5:130:5 | {...} | ExitMethods.cs:128:9:128:26 | call to method FailingAssertion | throw(AssertFailedException) | -| ExitMethods.cs:127:5:130:5 | {...} | ExitMethods.cs:129:13:129:17 | Int32 x = ... | normal | -| ExitMethods.cs:128:9:128:26 | call to method FailingAssertion | ExitMethods.cs:128:9:128:26 | call to method FailingAssertion | throw(AssertFailedException) | -| ExitMethods.cs:128:9:128:26 | this access | ExitMethods.cs:128:9:128:26 | this access | normal | -| ExitMethods.cs:128:9:128:27 | ...; | ExitMethods.cs:128:9:128:26 | call to method FailingAssertion | throw(AssertFailedException) | -| ExitMethods.cs:129:9:129:18 | ... ...; | ExitMethods.cs:129:13:129:17 | Int32 x = ... | normal | -| ExitMethods.cs:129:13:129:17 | Int32 x = ... | ExitMethods.cs:129:13:129:17 | Int32 x = ... | normal | -| ExitMethods.cs:129:17:129:17 | 0 | ExitMethods.cs:129:17:129:17 | 0 | normal | -| ExitMethods.cs:132:33:132:49 | call to method IsFalse | ExitMethods.cs:132:33:132:49 | call to method IsFalse | normal | -| ExitMethods.cs:132:33:132:49 | call to method IsFalse | ExitMethods.cs:132:33:132:49 | call to method IsFalse | throw(AssertFailedException) | -| ExitMethods.cs:132:48:132:48 | access to parameter b | ExitMethods.cs:132:48:132:48 | access to parameter b | normal | -| ExitMethods.cs:135:5:138:5 | {...} | ExitMethods.cs:136:9:136:25 | call to method AssertFalse | throw(AssertFailedException) | -| ExitMethods.cs:135:5:138:5 | {...} | ExitMethods.cs:137:13:137:17 | Int32 x = ... | normal | -| ExitMethods.cs:136:9:136:25 | call to method AssertFalse | ExitMethods.cs:136:9:136:25 | call to method AssertFalse | throw(AssertFailedException) | -| ExitMethods.cs:136:9:136:25 | this access | ExitMethods.cs:136:9:136:25 | this access | normal | -| ExitMethods.cs:136:9:136:26 | ...; | ExitMethods.cs:136:9:136:25 | call to method AssertFalse | throw(AssertFailedException) | -| ExitMethods.cs:136:21:136:24 | true | ExitMethods.cs:136:21:136:24 | true | normal | -| ExitMethods.cs:137:9:137:18 | ... ...; | ExitMethods.cs:137:13:137:17 | Int32 x = ... | normal | -| ExitMethods.cs:137:13:137:17 | Int32 x = ... | ExitMethods.cs:137:13:137:17 | Int32 x = ... | normal | -| ExitMethods.cs:137:17:137:17 | 0 | ExitMethods.cs:137:17:137:17 | 0 | normal | -| ExitMethods.cs:141:5:147:5 | {...} | ExitMethods.cs:143:13:143:42 | call to method Throw | throw(ArgumentException) | -| ExitMethods.cs:141:5:147:5 | {...} | ExitMethods.cs:145:13:145:52 | call to method Throw | throw(Exception) | -| ExitMethods.cs:141:5:147:5 | {...} | ExitMethods.cs:146:9:146:33 | call to method WriteLine | normal | -| ExitMethods.cs:142:9:145:53 | if (...) ... | ExitMethods.cs:143:13:143:42 | call to method Throw | throw(ArgumentException) | -| ExitMethods.cs:142:9:145:53 | if (...) ... | ExitMethods.cs:145:13:145:52 | call to method Throw | throw(Exception) | -| ExitMethods.cs:142:13:142:13 | access to parameter b | ExitMethods.cs:142:13:142:13 | access to parameter b | false | -| ExitMethods.cs:142:13:142:13 | access to parameter b | ExitMethods.cs:142:13:142:13 | access to parameter b | true | -| ExitMethods.cs:143:13:143:42 | call to method Throw | ExitMethods.cs:143:13:143:42 | call to method Throw | throw(ArgumentException) | -| ExitMethods.cs:143:13:143:43 | ...; | ExitMethods.cs:143:13:143:42 | call to method Throw | throw(ArgumentException) | -| ExitMethods.cs:143:41:143:41 | access to parameter e | ExitMethods.cs:143:41:143:41 | access to parameter e | normal | -| ExitMethods.cs:145:13:145:44 | call to method Capture | ExitMethods.cs:145:13:145:44 | call to method Capture | normal | -| ExitMethods.cs:145:13:145:52 | call to method Throw | ExitMethods.cs:145:13:145:52 | call to method Throw | throw(Exception) | -| ExitMethods.cs:145:13:145:53 | ...; | ExitMethods.cs:145:13:145:52 | call to method Throw | throw(Exception) | -| ExitMethods.cs:145:43:145:43 | access to parameter e | ExitMethods.cs:145:43:145:43 | access to parameter e | normal | -| ExitMethods.cs:146:9:146:33 | call to method WriteLine | ExitMethods.cs:146:9:146:33 | call to method WriteLine | normal | -| ExitMethods.cs:146:9:146:34 | ...; | ExitMethods.cs:146:9:146:33 | call to method WriteLine | normal | -| ExitMethods.cs:146:27:146:32 | "dead" | ExitMethods.cs:146:27:146:32 | "dead" | normal | -| Extensions.cs:6:5:8:5 | {...} | Extensions.cs:7:9:7:30 | return ...; | return | -| Extensions.cs:7:9:7:30 | return ...; | Extensions.cs:7:9:7:30 | return ...; | return | -| Extensions.cs:7:16:7:29 | call to method Parse | Extensions.cs:7:16:7:29 | call to method Parse | normal | -| Extensions.cs:7:28:7:28 | access to parameter s | Extensions.cs:7:28:7:28 | access to parameter s | normal | -| Extensions.cs:11:5:13:5 | {...} | Extensions.cs:12:9:12:20 | return ...; | return | -| Extensions.cs:12:9:12:20 | return ...; | Extensions.cs:12:9:12:20 | return ...; | return | -| Extensions.cs:12:16:12:16 | access to parameter f | Extensions.cs:12:16:12:16 | access to parameter f | normal | -| Extensions.cs:12:16:12:19 | delegate call | Extensions.cs:12:16:12:19 | delegate call | normal | -| Extensions.cs:12:18:12:18 | access to parameter s | Extensions.cs:12:18:12:18 | access to parameter s | normal | -| Extensions.cs:15:40:15:51 | call to method ToInt32 | Extensions.cs:15:40:15:51 | call to method ToInt32 | normal | -| Extensions.cs:15:48:15:50 | "0" | Extensions.cs:15:48:15:50 | "0" | normal | -| Extensions.cs:21:5:26:5 | {...} | Extensions.cs:25:9:25:33 | call to method ToBool | normal | -| Extensions.cs:22:9:22:9 | access to parameter s | Extensions.cs:22:9:22:9 | access to parameter s | normal | -| Extensions.cs:22:9:22:19 | call to method ToInt32 | Extensions.cs:22:9:22:19 | call to method ToInt32 | normal | -| Extensions.cs:22:9:22:20 | ...; | Extensions.cs:22:9:22:19 | call to method ToInt32 | normal | -| Extensions.cs:23:9:23:30 | call to method ToInt32 | Extensions.cs:23:9:23:30 | call to method ToInt32 | normal | -| Extensions.cs:23:9:23:31 | ...; | Extensions.cs:23:9:23:30 | call to method ToInt32 | normal | -| Extensions.cs:23:28:23:29 | "" | Extensions.cs:23:28:23:29 | "" | normal | -| Extensions.cs:24:9:24:45 | call to method ToBool | Extensions.cs:24:9:24:45 | call to method ToBool | normal | -| Extensions.cs:24:9:24:46 | ...; | Extensions.cs:24:9:24:45 | call to method ToBool | normal | -| Extensions.cs:24:27:24:32 | "true" | Extensions.cs:24:27:24:32 | "true" | normal | -| Extensions.cs:24:35:24:44 | access to method Parse | Extensions.cs:24:35:24:44 | access to method Parse | normal | -| Extensions.cs:24:35:24:44 | delegate creation of type Func | Extensions.cs:24:35:24:44 | delegate creation of type Func | normal | -| Extensions.cs:25:9:25:14 | "true" | Extensions.cs:25:9:25:14 | "true" | normal | -| Extensions.cs:25:9:25:33 | call to method ToBool | Extensions.cs:25:9:25:33 | call to method ToBool | normal | -| Extensions.cs:25:9:25:34 | ...; | Extensions.cs:25:9:25:33 | call to method ToBool | normal | -| Extensions.cs:25:23:25:32 | access to method Parse | Extensions.cs:25:23:25:32 | access to method Parse | normal | -| Extensions.cs:25:23:25:32 | delegate creation of type Func | Extensions.cs:25:23:25:32 | delegate creation of type Func | normal | -| Finally.cs:3:14:3:20 | call to constructor Object | Finally.cs:3:14:3:20 | call to constructor Object | normal | -| Finally.cs:3:14:3:20 | call to method | Finally.cs:3:14:3:20 | call to method | normal | -| Finally.cs:3:14:3:20 | this access | Finally.cs:3:14:3:20 | this access | normal | -| Finally.cs:3:14:3:20 | {...} | Finally.cs:3:14:3:20 | {...} | normal | -| Finally.cs:8:5:17:5 | {...} | Finally.cs:15:13:15:40 | call to method WriteLine | normal | -| Finally.cs:8:5:17:5 | {...} | Finally.cs:15:13:15:40 | call to method WriteLine | throw(Exception) [normal] (0) | -| Finally.cs:9:9:16:9 | try {...} ... | Finally.cs:15:13:15:40 | call to method WriteLine | normal | -| Finally.cs:9:9:16:9 | try {...} ... | Finally.cs:15:13:15:40 | call to method WriteLine | throw(Exception) [normal] (0) | -| Finally.cs:10:9:12:9 | {...} | Finally.cs:11:13:11:37 | call to method WriteLine | normal | -| Finally.cs:10:9:12:9 | {...} | Finally.cs:11:13:11:37 | call to method WriteLine | throw(Exception) | -| Finally.cs:11:13:11:37 | call to method WriteLine | Finally.cs:11:13:11:37 | call to method WriteLine | normal | -| Finally.cs:11:13:11:37 | call to method WriteLine | Finally.cs:11:13:11:37 | call to method WriteLine | throw(Exception) | -| Finally.cs:11:13:11:38 | ...; | Finally.cs:11:13:11:37 | call to method WriteLine | normal | -| Finally.cs:11:13:11:38 | ...; | Finally.cs:11:13:11:37 | call to method WriteLine | throw(Exception) | -| Finally.cs:11:31:11:36 | "Try1" | Finally.cs:11:31:11:36 | "Try1" | normal | -| Finally.cs:14:9:16:9 | {...} | Finally.cs:15:13:15:40 | call to method WriteLine | normal | -| Finally.cs:15:13:15:40 | call to method WriteLine | Finally.cs:15:13:15:40 | call to method WriteLine | normal | -| Finally.cs:15:13:15:41 | ...; | Finally.cs:15:13:15:40 | call to method WriteLine | normal | -| Finally.cs:15:31:15:39 | "Finally" | Finally.cs:15:31:15:39 | "Finally" | normal | -| Finally.cs:20:5:52:5 | {...} | Finally.cs:50:13:50:40 | call to method WriteLine | normal | -| Finally.cs:20:5:52:5 | {...} | Finally.cs:50:13:50:40 | call to method WriteLine | return [normal] (0) | -| Finally.cs:20:5:52:5 | {...} | Finally.cs:50:13:50:40 | call to method WriteLine | throw(Exception) [normal] (0) | -| Finally.cs:20:5:52:5 | {...} | Finally.cs:50:13:50:40 | call to method WriteLine | throw(IOException) [normal] (0) | -| Finally.cs:21:9:51:9 | try {...} ... | Finally.cs:50:13:50:40 | call to method WriteLine | normal | -| Finally.cs:21:9:51:9 | try {...} ... | Finally.cs:50:13:50:40 | call to method WriteLine | return [normal] (0) | -| Finally.cs:21:9:51:9 | try {...} ... | Finally.cs:50:13:50:40 | call to method WriteLine | throw(Exception) [normal] (0) | -| Finally.cs:21:9:51:9 | try {...} ... | Finally.cs:50:13:50:40 | call to method WriteLine | throw(IOException) [normal] (0) | -| Finally.cs:22:9:25:9 | {...} | Finally.cs:23:13:23:37 | call to method WriteLine | throw(Exception) | -| Finally.cs:22:9:25:9 | {...} | Finally.cs:24:13:24:19 | return ...; | return | -| Finally.cs:23:13:23:37 | call to method WriteLine | Finally.cs:23:13:23:37 | call to method WriteLine | normal | -| Finally.cs:23:13:23:37 | call to method WriteLine | Finally.cs:23:13:23:37 | call to method WriteLine | throw(Exception) | -| Finally.cs:23:13:23:38 | ...; | Finally.cs:23:13:23:37 | call to method WriteLine | normal | -| Finally.cs:23:13:23:38 | ...; | Finally.cs:23:13:23:37 | call to method WriteLine | throw(Exception) | -| Finally.cs:23:31:23:36 | "Try2" | Finally.cs:23:31:23:36 | "Try2" | normal | -| Finally.cs:24:13:24:19 | return ...; | Finally.cs:24:13:24:19 | return ...; | return | -| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:26:9:29:9 | catch (...) {...} | no-match | -| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:28:13:28:18 | throw ...; | throw(IOException) | -| Finally.cs:26:38:26:39 | IOException ex | Finally.cs:26:38:26:39 | IOException ex | normal | -| Finally.cs:26:48:26:51 | true | Finally.cs:26:48:26:51 | true | true | -| Finally.cs:27:9:29:9 | {...} | Finally.cs:28:13:28:18 | throw ...; | throw(IOException) | -| Finally.cs:28:13:28:18 | throw ...; | Finally.cs:28:13:28:18 | throw ...; | throw(IOException) | -| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:30:9:40:9 | catch (...) {...} | no-match | -| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:38:17:38:44 | throw ...; | throw(Exception) | -| Finally.cs:30:41:30:42 | ArgumentException ex | Finally.cs:30:41:30:42 | ArgumentException ex | normal | -| Finally.cs:31:9:40:9 | {...} | Finally.cs:38:17:38:44 | throw ...; | throw(Exception) | -| Finally.cs:32:13:39:13 | try {...} ... | Finally.cs:38:17:38:44 | throw ...; | throw(Exception) | -| Finally.cs:33:13:35:13 | {...} | Finally.cs:34:27:34:32 | throw ...; | throw(ArgumentException) | -| Finally.cs:34:17:34:32 | if (...) ... | Finally.cs:34:27:34:32 | throw ...; | throw(ArgumentException) | -| Finally.cs:34:21:34:24 | true | Finally.cs:34:21:34:24 | true | true | -| Finally.cs:34:27:34:32 | throw ...; | Finally.cs:34:27:34:32 | throw ...; | throw(ArgumentException) | -| Finally.cs:37:13:39:13 | {...} | Finally.cs:38:17:38:44 | throw ...; | throw(Exception) | -| Finally.cs:38:17:38:44 | throw ...; | Finally.cs:38:17:38:44 | throw ...; | throw(Exception) | -| Finally.cs:38:23:38:43 | object creation of type Exception | Finally.cs:38:23:38:43 | object creation of type Exception | normal | -| Finally.cs:38:37:38:42 | "Boo!" | Finally.cs:38:37:38:42 | "Boo!" | normal | -| Finally.cs:41:9:43:9 | catch (...) {...} | Finally.cs:41:9:43:9 | catch (...) {...} | no-match | -| Finally.cs:41:9:43:9 | catch (...) {...} | Finally.cs:42:9:43:9 | {...} | normal | -| Finally.cs:42:9:43:9 | {...} | Finally.cs:42:9:43:9 | {...} | normal | -| Finally.cs:44:9:47:9 | catch {...} | Finally.cs:46:13:46:19 | return ...; | return | -| Finally.cs:45:9:47:9 | {...} | Finally.cs:46:13:46:19 | return ...; | return | -| Finally.cs:46:13:46:19 | return ...; | Finally.cs:46:13:46:19 | return ...; | return | -| Finally.cs:49:9:51:9 | {...} | Finally.cs:50:13:50:40 | call to method WriteLine | normal | -| Finally.cs:50:13:50:40 | call to method WriteLine | Finally.cs:50:13:50:40 | call to method WriteLine | normal | -| Finally.cs:50:13:50:41 | ...; | Finally.cs:50:13:50:40 | call to method WriteLine | normal | -| Finally.cs:50:31:50:39 | "Finally" | Finally.cs:50:31:50:39 | "Finally" | normal | -| Finally.cs:55:5:72:5 | {...} | Finally.cs:70:13:70:40 | call to method WriteLine | normal | -| Finally.cs:55:5:72:5 | {...} | Finally.cs:70:13:70:40 | call to method WriteLine | return [normal] (0) | -| Finally.cs:55:5:72:5 | {...} | Finally.cs:70:13:70:40 | call to method WriteLine | throw(Exception) [normal] (0) | -| Finally.cs:55:5:72:5 | {...} | Finally.cs:70:13:70:40 | call to method WriteLine | throw(IOException) [normal] (0) | -| Finally.cs:56:9:71:9 | try {...} ... | Finally.cs:70:13:70:40 | call to method WriteLine | normal | -| Finally.cs:56:9:71:9 | try {...} ... | Finally.cs:70:13:70:40 | call to method WriteLine | return [normal] (0) | -| Finally.cs:56:9:71:9 | try {...} ... | Finally.cs:70:13:70:40 | call to method WriteLine | throw(Exception) [normal] (0) | -| Finally.cs:56:9:71:9 | try {...} ... | Finally.cs:70:13:70:40 | call to method WriteLine | throw(IOException) [normal] (0) | -| Finally.cs:57:9:60:9 | {...} | Finally.cs:58:13:58:37 | call to method WriteLine | throw(Exception) | -| Finally.cs:57:9:60:9 | {...} | Finally.cs:59:13:59:19 | return ...; | return | -| Finally.cs:58:13:58:37 | call to method WriteLine | Finally.cs:58:13:58:37 | call to method WriteLine | normal | -| Finally.cs:58:13:58:37 | call to method WriteLine | Finally.cs:58:13:58:37 | call to method WriteLine | throw(Exception) | -| Finally.cs:58:13:58:38 | ...; | Finally.cs:58:13:58:37 | call to method WriteLine | normal | -| Finally.cs:58:13:58:38 | ...; | Finally.cs:58:13:58:37 | call to method WriteLine | throw(Exception) | -| Finally.cs:58:31:58:36 | "Try3" | Finally.cs:58:31:58:36 | "Try3" | normal | -| Finally.cs:59:13:59:19 | return ...; | Finally.cs:59:13:59:19 | return ...; | return | -| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:61:9:64:9 | catch (...) {...} | no-match | -| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:63:13:63:18 | throw ...; | throw(IOException) | -| Finally.cs:61:38:61:39 | IOException ex | Finally.cs:61:38:61:39 | IOException ex | normal | -| Finally.cs:61:48:61:51 | true | Finally.cs:61:48:61:51 | true | true | -| Finally.cs:62:9:64:9 | {...} | Finally.cs:63:13:63:18 | throw ...; | throw(IOException) | -| Finally.cs:63:13:63:18 | throw ...; | Finally.cs:63:13:63:18 | throw ...; | throw(IOException) | -| Finally.cs:65:9:67:9 | catch (...) {...} | Finally.cs:65:9:67:9 | catch (...) {...} | throw(Exception) [no-match] (0) | -| Finally.cs:65:9:67:9 | catch (...) {...} | Finally.cs:65:35:65:51 | ... != ... | throw(Exception) [false] (0) | -| Finally.cs:65:9:67:9 | catch (...) {...} | Finally.cs:66:9:67:9 | {...} | normal | -| Finally.cs:65:26:65:26 | Exception e | Finally.cs:65:26:65:26 | Exception e | normal | -| Finally.cs:65:35:65:35 | access to local variable e | Finally.cs:65:35:65:35 | access to local variable e | normal | -| Finally.cs:65:35:65:43 | access to property Message | Finally.cs:65:35:65:43 | access to property Message | normal | -| Finally.cs:65:35:65:51 | ... != ... | Finally.cs:65:35:65:51 | ... != ... | false | -| Finally.cs:65:35:65:51 | ... != ... | Finally.cs:65:35:65:51 | ... != ... | true | -| Finally.cs:65:48:65:51 | null | Finally.cs:65:48:65:51 | null | normal | -| Finally.cs:66:9:67:9 | {...} | Finally.cs:66:9:67:9 | {...} | normal | -| Finally.cs:69:9:71:9 | {...} | Finally.cs:70:13:70:40 | call to method WriteLine | normal | -| Finally.cs:70:13:70:40 | call to method WriteLine | Finally.cs:70:13:70:40 | call to method WriteLine | normal | -| Finally.cs:70:13:70:41 | ...; | Finally.cs:70:13:70:40 | call to method WriteLine | normal | -| Finally.cs:70:31:70:39 | "Finally" | Finally.cs:70:31:70:39 | "Finally" | normal | -| Finally.cs:75:5:101:5 | {...} | Finally.cs:77:16:77:20 | ... > ... | false | -| Finally.cs:75:5:101:5 | {...} | Finally.cs:97:21:97:23 | ...-- | normal [break] (0) | -| Finally.cs:75:5:101:5 | {...} | Finally.cs:97:21:97:23 | ...-- | return [normal] (0) | -| Finally.cs:75:5:101:5 | {...} | Finally.cs:97:21:97:23 | ...-- | throw(Exception) [normal] (1) | -| Finally.cs:76:9:76:19 | ... ...; | Finally.cs:76:13:76:18 | Int32 i = ... | normal | -| Finally.cs:76:13:76:18 | Int32 i = ... | Finally.cs:76:13:76:18 | Int32 i = ... | normal | -| Finally.cs:76:17:76:18 | 10 | Finally.cs:76:17:76:18 | 10 | normal | -| Finally.cs:77:9:100:9 | while (...) ... | Finally.cs:77:16:77:20 | ... > ... | false | -| Finally.cs:77:9:100:9 | while (...) ... | Finally.cs:97:21:97:23 | ...-- | normal [break] (0) | -| Finally.cs:77:9:100:9 | while (...) ... | Finally.cs:97:21:97:23 | ...-- | return [normal] (0) | -| Finally.cs:77:9:100:9 | while (...) ... | Finally.cs:97:21:97:23 | ...-- | throw(Exception) [normal] (1) | -| Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:77:16:77:16 | access to local variable i | normal | -| Finally.cs:77:16:77:20 | ... > ... | Finally.cs:77:16:77:20 | ... > ... | false | -| Finally.cs:77:16:77:20 | ... > ... | Finally.cs:77:16:77:20 | ... > ... | true | -| Finally.cs:77:20:77:20 | 0 | Finally.cs:77:20:77:20 | 0 | normal | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:97:21:97:23 | ...-- | break [normal] (0) | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:97:21:97:23 | ...-- | continue [normal] (0) | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:97:21:97:23 | ...-- | normal | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:97:21:97:23 | ...-- | return [normal] (0) | -| Finally.cs:78:9:100:9 | {...} | Finally.cs:97:21:97:23 | ...-- | throw(Exception) [normal] (1) | -| Finally.cs:79:13:99:13 | try {...} ... | Finally.cs:97:21:97:23 | ...-- | break [normal] (0) | -| Finally.cs:79:13:99:13 | try {...} ... | Finally.cs:97:21:97:23 | ...-- | continue [normal] (0) | -| Finally.cs:79:13:99:13 | try {...} ... | Finally.cs:97:21:97:23 | ...-- | normal | -| Finally.cs:79:13:99:13 | try {...} ... | Finally.cs:97:21:97:23 | ...-- | return [normal] (0) | -| Finally.cs:79:13:99:13 | try {...} ... | Finally.cs:97:21:97:23 | ...-- | throw(Exception) [normal] (1) | -| Finally.cs:80:13:87:13 | {...} | Finally.cs:82:21:82:27 | return ...; | return | -| Finally.cs:80:13:87:13 | {...} | Finally.cs:84:21:84:29 | continue; | continue | -| Finally.cs:80:13:87:13 | {...} | Finally.cs:85:21:85:26 | ... == ... | false | -| Finally.cs:80:13:87:13 | {...} | Finally.cs:86:21:86:26 | break; | break | -| Finally.cs:81:17:82:27 | if (...) ... | Finally.cs:81:21:81:26 | ... == ... | false | -| Finally.cs:81:17:82:27 | if (...) ... | Finally.cs:82:21:82:27 | return ...; | return | -| Finally.cs:81:21:81:21 | access to local variable i | Finally.cs:81:21:81:21 | access to local variable i | normal | -| Finally.cs:81:21:81:26 | ... == ... | Finally.cs:81:21:81:26 | ... == ... | false | -| Finally.cs:81:21:81:26 | ... == ... | Finally.cs:81:21:81:26 | ... == ... | true | -| Finally.cs:81:26:81:26 | 0 | Finally.cs:81:26:81:26 | 0 | normal | -| Finally.cs:82:21:82:27 | return ...; | Finally.cs:82:21:82:27 | return ...; | return | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:83:21:83:26 | ... == ... | false | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:84:21:84:29 | continue; | continue | -| Finally.cs:83:21:83:21 | access to local variable i | Finally.cs:83:21:83:21 | access to local variable i | normal | -| Finally.cs:83:21:83:26 | ... == ... | Finally.cs:83:21:83:26 | ... == ... | false | -| Finally.cs:83:21:83:26 | ... == ... | Finally.cs:83:21:83:26 | ... == ... | true | -| Finally.cs:83:26:83:26 | 1 | Finally.cs:83:26:83:26 | 1 | normal | -| Finally.cs:84:21:84:29 | continue; | Finally.cs:84:21:84:29 | continue; | continue | -| Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:85:21:85:26 | ... == ... | false | -| Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:86:21:86:26 | break; | break | -| Finally.cs:85:21:85:21 | access to local variable i | Finally.cs:85:21:85:21 | access to local variable i | normal | -| Finally.cs:85:21:85:26 | ... == ... | Finally.cs:85:21:85:26 | ... == ... | false | -| Finally.cs:85:21:85:26 | ... == ... | Finally.cs:85:21:85:26 | ... == ... | true | -| Finally.cs:85:26:85:26 | 2 | Finally.cs:85:26:85:26 | 2 | normal | -| Finally.cs:86:21:86:26 | break; | Finally.cs:86:21:86:26 | break; | break | -| Finally.cs:89:13:99:13 | {...} | Finally.cs:97:21:97:23 | ...-- | normal | -| Finally.cs:89:13:99:13 | {...} | Finally.cs:97:21:97:23 | ...-- | throw(Exception) [normal] (1) | -| Finally.cs:90:17:98:17 | try {...} ... | Finally.cs:97:21:97:23 | ...-- | normal | -| Finally.cs:90:17:98:17 | try {...} ... | Finally.cs:97:21:97:23 | ...-- | throw(Exception) [normal] (1) | -| Finally.cs:91:17:94:17 | {...} | Finally.cs:92:25:92:30 | ... == ... | false | -| Finally.cs:91:17:94:17 | {...} | Finally.cs:93:25:93:46 | throw ...; | throw(Exception) | -| Finally.cs:91:17:94:17 | {...} | Finally.cs:93:31:93:45 | object creation of type Exception | throw(Exception) | -| Finally.cs:92:21:93:46 | if (...) ... | Finally.cs:92:25:92:30 | ... == ... | false | -| Finally.cs:92:21:93:46 | if (...) ... | Finally.cs:93:25:93:46 | throw ...; | throw(Exception) | -| Finally.cs:92:21:93:46 | if (...) ... | Finally.cs:93:31:93:45 | object creation of type Exception | throw(Exception) | -| Finally.cs:92:25:92:25 | access to local variable i | Finally.cs:92:25:92:25 | access to local variable i | normal | -| Finally.cs:92:25:92:30 | ... == ... | Finally.cs:92:25:92:30 | ... == ... | false | -| Finally.cs:92:25:92:30 | ... == ... | Finally.cs:92:25:92:30 | ... == ... | true | -| Finally.cs:92:30:92:30 | 3 | Finally.cs:92:30:92:30 | 3 | normal | -| Finally.cs:93:25:93:46 | throw ...; | Finally.cs:93:25:93:46 | throw ...; | throw(Exception) | -| Finally.cs:93:25:93:46 | throw ...; | Finally.cs:93:31:93:45 | object creation of type Exception | throw(Exception) | -| Finally.cs:93:31:93:45 | object creation of type Exception | Finally.cs:93:31:93:45 | object creation of type Exception | normal | -| Finally.cs:93:31:93:45 | object creation of type Exception | Finally.cs:93:31:93:45 | object creation of type Exception | throw(Exception) | -| Finally.cs:96:17:98:17 | {...} | Finally.cs:97:21:97:23 | ...-- | normal | -| Finally.cs:97:21:97:21 | access to local variable i | Finally.cs:97:21:97:21 | access to local variable i | normal | -| Finally.cs:97:21:97:23 | ...-- | Finally.cs:97:21:97:23 | ...-- | normal | -| Finally.cs:97:21:97:24 | ...; | Finally.cs:97:21:97:23 | ...-- | normal | -| Finally.cs:104:5:119:5 | {...} | Finally.cs:116:17:116:32 | ... > ... | false | -| Finally.cs:104:5:119:5 | {...} | Finally.cs:116:17:116:32 | ... > ... | return [false] (0) | -| Finally.cs:104:5:119:5 | {...} | Finally.cs:116:17:116:32 | ... > ... | throw(Exception) [false] (0) | -| Finally.cs:104:5:119:5 | {...} | Finally.cs:116:17:116:32 | ... > ... | throw(NullReferenceException) [false] (0) | -| Finally.cs:104:5:119:5 | {...} | Finally.cs:116:17:116:32 | ... > ... | throw(OutOfMemoryException) [false] (0) | -| Finally.cs:104:5:119:5 | {...} | Finally.cs:117:17:117:36 | call to method WriteLine | normal | -| Finally.cs:104:5:119:5 | {...} | Finally.cs:117:17:117:36 | call to method WriteLine | return [normal] (0) | -| Finally.cs:104:5:119:5 | {...} | Finally.cs:117:17:117:36 | call to method WriteLine | throw(Exception) [normal] (0) | -| Finally.cs:104:5:119:5 | {...} | Finally.cs:117:17:117:36 | call to method WriteLine | throw(NullReferenceException) [normal] (0) | -| Finally.cs:104:5:119:5 | {...} | Finally.cs:117:17:117:36 | call to method WriteLine | throw(OutOfMemoryException) [normal] (0) | -| Finally.cs:105:9:118:9 | try {...} ... | Finally.cs:116:17:116:32 | ... > ... | false | -| Finally.cs:105:9:118:9 | try {...} ... | Finally.cs:116:17:116:32 | ... > ... | return [false] (0) | -| Finally.cs:105:9:118:9 | try {...} ... | Finally.cs:116:17:116:32 | ... > ... | throw(Exception) [false] (0) | -| Finally.cs:105:9:118:9 | try {...} ... | Finally.cs:116:17:116:32 | ... > ... | throw(NullReferenceException) [false] (0) | -| Finally.cs:105:9:118:9 | try {...} ... | Finally.cs:116:17:116:32 | ... > ... | throw(OutOfMemoryException) [false] (0) | -| Finally.cs:105:9:118:9 | try {...} ... | Finally.cs:117:17:117:36 | call to method WriteLine | normal | -| Finally.cs:105:9:118:9 | try {...} ... | Finally.cs:117:17:117:36 | call to method WriteLine | return [normal] (0) | -| Finally.cs:105:9:118:9 | try {...} ... | Finally.cs:117:17:117:36 | call to method WriteLine | throw(Exception) [normal] (0) | -| Finally.cs:105:9:118:9 | try {...} ... | Finally.cs:117:17:117:36 | call to method WriteLine | throw(NullReferenceException) [normal] (0) | -| Finally.cs:105:9:118:9 | try {...} ... | Finally.cs:117:17:117:36 | call to method WriteLine | throw(OutOfMemoryException) [normal] (0) | -| Finally.cs:106:9:111:9 | {...} | Finally.cs:107:17:107:21 | access to field Field | throw(NullReferenceException) | -| Finally.cs:106:9:111:9 | {...} | Finally.cs:107:17:107:28 | access to property Length | throw(Exception) | -| Finally.cs:106:9:111:9 | {...} | Finally.cs:107:17:107:28 | access to property Length | throw(NullReferenceException) | -| Finally.cs:106:9:111:9 | {...} | Finally.cs:108:17:108:23 | return ...; | return | -| Finally.cs:106:9:111:9 | {...} | Finally.cs:109:17:109:21 | access to field Field | throw(NullReferenceException) | -| Finally.cs:106:9:111:9 | {...} | Finally.cs:109:17:109:28 | access to property Length | throw(Exception) | -| Finally.cs:106:9:111:9 | {...} | Finally.cs:109:17:109:28 | access to property Length | throw(NullReferenceException) | -| Finally.cs:106:9:111:9 | {...} | Finally.cs:109:17:109:33 | ... == ... | false | -| Finally.cs:106:9:111:9 | {...} | Finally.cs:110:17:110:49 | throw ...; | throw(OutOfMemoryException) | -| Finally.cs:106:9:111:9 | {...} | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | throw(Exception) | -| Finally.cs:107:13:108:23 | if (...) ... | Finally.cs:107:17:107:21 | access to field Field | throw(NullReferenceException) | -| Finally.cs:107:13:108:23 | if (...) ... | Finally.cs:107:17:107:28 | access to property Length | throw(Exception) | -| Finally.cs:107:13:108:23 | if (...) ... | Finally.cs:107:17:107:28 | access to property Length | throw(NullReferenceException) | -| Finally.cs:107:13:108:23 | if (...) ... | Finally.cs:107:17:107:33 | ... == ... | false | -| Finally.cs:107:13:108:23 | if (...) ... | Finally.cs:108:17:108:23 | return ...; | return | -| Finally.cs:107:17:107:21 | access to field Field | Finally.cs:107:17:107:21 | access to field Field | normal | -| Finally.cs:107:17:107:21 | access to field Field | Finally.cs:107:17:107:21 | access to field Field | throw(NullReferenceException) | -| Finally.cs:107:17:107:21 | this access | Finally.cs:107:17:107:21 | this access | normal | -| Finally.cs:107:17:107:28 | access to property Length | Finally.cs:107:17:107:21 | access to field Field | throw(NullReferenceException) | -| Finally.cs:107:17:107:28 | access to property Length | Finally.cs:107:17:107:28 | access to property Length | normal | -| Finally.cs:107:17:107:28 | access to property Length | Finally.cs:107:17:107:28 | access to property Length | throw(Exception) | -| Finally.cs:107:17:107:28 | access to property Length | Finally.cs:107:17:107:28 | access to property Length | throw(NullReferenceException) | -| Finally.cs:107:17:107:33 | ... == ... | Finally.cs:107:17:107:21 | access to field Field | throw(NullReferenceException) | -| Finally.cs:107:17:107:33 | ... == ... | Finally.cs:107:17:107:28 | access to property Length | throw(Exception) | -| Finally.cs:107:17:107:33 | ... == ... | Finally.cs:107:17:107:28 | access to property Length | throw(NullReferenceException) | -| Finally.cs:107:17:107:33 | ... == ... | Finally.cs:107:17:107:33 | ... == ... | false | -| Finally.cs:107:17:107:33 | ... == ... | Finally.cs:107:17:107:33 | ... == ... | true | -| Finally.cs:107:33:107:33 | 0 | Finally.cs:107:33:107:33 | 0 | normal | -| Finally.cs:108:17:108:23 | return ...; | Finally.cs:108:17:108:23 | return ...; | return | -| Finally.cs:109:13:110:49 | if (...) ... | Finally.cs:109:17:109:21 | access to field Field | throw(NullReferenceException) | -| Finally.cs:109:13:110:49 | if (...) ... | Finally.cs:109:17:109:28 | access to property Length | throw(Exception) | -| Finally.cs:109:13:110:49 | if (...) ... | Finally.cs:109:17:109:28 | access to property Length | throw(NullReferenceException) | -| Finally.cs:109:13:110:49 | if (...) ... | Finally.cs:109:17:109:33 | ... == ... | false | -| Finally.cs:109:13:110:49 | if (...) ... | Finally.cs:110:17:110:49 | throw ...; | throw(OutOfMemoryException) | -| Finally.cs:109:13:110:49 | if (...) ... | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | throw(Exception) | -| Finally.cs:109:17:109:21 | access to field Field | Finally.cs:109:17:109:21 | access to field Field | normal | -| Finally.cs:109:17:109:21 | access to field Field | Finally.cs:109:17:109:21 | access to field Field | throw(NullReferenceException) | -| Finally.cs:109:17:109:21 | this access | Finally.cs:109:17:109:21 | this access | normal | -| Finally.cs:109:17:109:28 | access to property Length | Finally.cs:109:17:109:21 | access to field Field | throw(NullReferenceException) | -| Finally.cs:109:17:109:28 | access to property Length | Finally.cs:109:17:109:28 | access to property Length | normal | -| Finally.cs:109:17:109:28 | access to property Length | Finally.cs:109:17:109:28 | access to property Length | throw(Exception) | -| Finally.cs:109:17:109:28 | access to property Length | Finally.cs:109:17:109:28 | access to property Length | throw(NullReferenceException) | -| Finally.cs:109:17:109:33 | ... == ... | Finally.cs:109:17:109:21 | access to field Field | throw(NullReferenceException) | -| Finally.cs:109:17:109:33 | ... == ... | Finally.cs:109:17:109:28 | access to property Length | throw(Exception) | -| Finally.cs:109:17:109:33 | ... == ... | Finally.cs:109:17:109:28 | access to property Length | throw(NullReferenceException) | -| Finally.cs:109:17:109:33 | ... == ... | Finally.cs:109:17:109:33 | ... == ... | false | -| Finally.cs:109:17:109:33 | ... == ... | Finally.cs:109:17:109:33 | ... == ... | true | -| Finally.cs:109:33:109:33 | 1 | Finally.cs:109:33:109:33 | 1 | normal | -| Finally.cs:110:17:110:49 | throw ...; | Finally.cs:110:17:110:49 | throw ...; | throw(OutOfMemoryException) | -| Finally.cs:110:17:110:49 | throw ...; | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | throw(Exception) | -| Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | normal | -| Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | throw(Exception) | -| Finally.cs:113:9:118:9 | {...} | Finally.cs:116:17:116:32 | ... > ... | false | -| Finally.cs:113:9:118:9 | {...} | Finally.cs:117:17:117:36 | call to method WriteLine | normal | -| Finally.cs:114:13:115:41 | if (...) ... | Finally.cs:114:17:114:36 | !... | false | -| Finally.cs:114:13:115:41 | if (...) ... | Finally.cs:115:17:115:40 | call to method WriteLine | normal | -| Finally.cs:114:17:114:36 | !... | Finally.cs:114:17:114:36 | !... | false | -| Finally.cs:114:17:114:36 | !... | Finally.cs:114:17:114:36 | !... | true | -| Finally.cs:114:19:114:23 | access to field Field | Finally.cs:114:19:114:23 | access to field Field | normal | -| Finally.cs:114:19:114:23 | this access | Finally.cs:114:19:114:23 | this access | normal | -| Finally.cs:114:19:114:30 | access to property Length | Finally.cs:114:19:114:30 | access to property Length | normal | -| Finally.cs:114:19:114:35 | ... == ... | Finally.cs:114:19:114:35 | ... == ... | false | -| Finally.cs:114:19:114:35 | ... == ... | Finally.cs:114:19:114:35 | ... == ... | true | -| Finally.cs:114:35:114:35 | 0 | Finally.cs:114:35:114:35 | 0 | normal | -| Finally.cs:115:17:115:40 | call to method WriteLine | Finally.cs:115:17:115:40 | call to method WriteLine | normal | -| Finally.cs:115:17:115:41 | ...; | Finally.cs:115:17:115:40 | call to method WriteLine | normal | -| Finally.cs:115:35:115:39 | access to field Field | Finally.cs:115:35:115:39 | access to field Field | normal | -| Finally.cs:115:35:115:39 | this access | Finally.cs:115:35:115:39 | this access | normal | -| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:116:17:116:32 | ... > ... | false | -| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:117:17:117:36 | call to method WriteLine | normal | -| Finally.cs:116:17:116:21 | access to field Field | Finally.cs:116:17:116:21 | access to field Field | normal | -| Finally.cs:116:17:116:21 | this access | Finally.cs:116:17:116:21 | this access | normal | -| Finally.cs:116:17:116:28 | access to property Length | Finally.cs:116:17:116:28 | access to property Length | normal | -| Finally.cs:116:17:116:32 | ... > ... | Finally.cs:116:17:116:32 | ... > ... | false | -| Finally.cs:116:17:116:32 | ... > ... | Finally.cs:116:17:116:32 | ... > ... | true | -| Finally.cs:116:32:116:32 | 0 | Finally.cs:116:32:116:32 | 0 | normal | -| Finally.cs:117:17:117:36 | call to method WriteLine | Finally.cs:117:17:117:36 | call to method WriteLine | normal | -| Finally.cs:117:17:117:37 | ...; | Finally.cs:117:17:117:36 | call to method WriteLine | normal | -| Finally.cs:117:35:117:35 | 1 | Finally.cs:117:35:117:35 | 1 | normal | -| Finally.cs:122:5:131:5 | {...} | Finally.cs:125:17:125:40 | Double temp = ... | normal | -| Finally.cs:122:5:131:5 | {...} | Finally.cs:129:13:129:13 | ; | normal | -| Finally.cs:123:9:130:9 | try {...} ... | Finally.cs:125:17:125:40 | Double temp = ... | normal | -| Finally.cs:123:9:130:9 | try {...} ... | Finally.cs:129:13:129:13 | ; | normal | -| Finally.cs:124:9:126:9 | {...} | Finally.cs:125:17:125:40 | Double temp = ... | normal | -| Finally.cs:125:13:125:41 | ... ...; | Finally.cs:125:17:125:40 | Double temp = ... | normal | -| Finally.cs:125:17:125:40 | Double temp = ... | Finally.cs:125:17:125:40 | Double temp = ... | normal | -| Finally.cs:125:24:125:24 | 0 | Finally.cs:125:24:125:24 | 0 | normal | -| Finally.cs:125:24:125:24 | (...) ... | Finally.cs:125:24:125:24 | (...) ... | normal | -| Finally.cs:125:24:125:40 | ... / ... | Finally.cs:125:24:125:40 | ... / ... | normal | -| Finally.cs:125:28:125:40 | access to constant E | Finally.cs:125:28:125:40 | access to constant E | normal | -| Finally.cs:127:9:130:9 | catch {...} | Finally.cs:129:13:129:13 | ; | normal | -| Finally.cs:128:9:130:9 | {...} | Finally.cs:129:13:129:13 | ; | normal | -| Finally.cs:129:13:129:13 | ; | Finally.cs:129:13:129:13 | ; | normal | -| Finally.cs:134:5:145:5 | {...} | Finally.cs:141:13:141:44 | throw ...; | throw(ArgumentException) | -| Finally.cs:134:5:145:5 | {...} | Finally.cs:142:13:142:37 | call to method WriteLine | throw(Exception) [normal] (0) | -| Finally.cs:134:5:145:5 | {...} | Finally.cs:144:9:144:33 | call to method WriteLine | normal | -| Finally.cs:135:9:143:9 | try {...} ... | Finally.cs:141:13:141:44 | throw ...; | throw(ArgumentException) | -| Finally.cs:135:9:143:9 | try {...} ... | Finally.cs:142:13:142:37 | call to method WriteLine | normal | -| Finally.cs:135:9:143:9 | try {...} ... | Finally.cs:142:13:142:37 | call to method WriteLine | throw(Exception) [normal] (0) | -| Finally.cs:136:9:138:9 | {...} | Finally.cs:137:13:137:36 | call to method WriteLine | normal | -| Finally.cs:136:9:138:9 | {...} | Finally.cs:137:13:137:36 | call to method WriteLine | throw(Exception) | -| Finally.cs:137:13:137:36 | call to method WriteLine | Finally.cs:137:13:137:36 | call to method WriteLine | normal | -| Finally.cs:137:13:137:36 | call to method WriteLine | Finally.cs:137:13:137:36 | call to method WriteLine | throw(Exception) | -| Finally.cs:137:13:137:37 | ...; | Finally.cs:137:13:137:36 | call to method WriteLine | normal | -| Finally.cs:137:13:137:37 | ...; | Finally.cs:137:13:137:36 | call to method WriteLine | throw(Exception) | -| Finally.cs:137:31:137:35 | "Try" | Finally.cs:137:31:137:35 | "Try" | normal | -| Finally.cs:140:9:143:9 | {...} | Finally.cs:141:13:141:44 | throw ...; | throw(ArgumentException) | -| Finally.cs:140:9:143:9 | {...} | Finally.cs:142:13:142:37 | call to method WriteLine | normal | -| Finally.cs:141:13:141:44 | throw ...; | Finally.cs:141:13:141:44 | throw ...; | throw(ArgumentException) | -| Finally.cs:141:19:141:43 | object creation of type ArgumentException | Finally.cs:141:19:141:43 | object creation of type ArgumentException | normal | -| Finally.cs:141:41:141:42 | "" | Finally.cs:141:41:141:42 | "" | normal | -| Finally.cs:142:13:142:37 | call to method WriteLine | Finally.cs:142:13:142:37 | call to method WriteLine | normal | -| Finally.cs:142:13:142:38 | ...; | Finally.cs:142:13:142:37 | call to method WriteLine | normal | -| Finally.cs:142:31:142:36 | "Dead" | Finally.cs:142:31:142:36 | "Dead" | normal | -| Finally.cs:144:9:144:33 | call to method WriteLine | Finally.cs:144:9:144:33 | call to method WriteLine | normal | -| Finally.cs:144:9:144:34 | ...; | Finally.cs:144:9:144:33 | call to method WriteLine | normal | -| Finally.cs:144:27:144:32 | "Dead" | Finally.cs:144:27:144:32 | "Dead" | normal | -| Finally.cs:148:5:170:5 | {...} | Finally.cs:158:21:158:36 | ... == ... | false | -| Finally.cs:148:5:170:5 | {...} | Finally.cs:158:21:158:36 | ... == ... | throw(ArgumentNullException) [false] (0) | -| Finally.cs:148:5:170:5 | {...} | Finally.cs:158:21:158:36 | ... == ... | throw(Exception) [false] (0) | -| Finally.cs:148:5:170:5 | {...} | Finally.cs:163:17:163:42 | call to method WriteLine | normal | -| Finally.cs:148:5:170:5 | {...} | Finally.cs:163:17:163:42 | call to method WriteLine | throw(ArgumentNullException) [normal] (0) | -| Finally.cs:148:5:170:5 | {...} | Finally.cs:163:17:163:42 | call to method WriteLine | throw(Exception) [normal] (0) | -| Finally.cs:148:5:170:5 | {...} | Finally.cs:167:17:167:37 | call to method WriteLine | normal | -| Finally.cs:148:5:170:5 | {...} | Finally.cs:167:17:167:37 | call to method WriteLine | throw(ArgumentNullException) [normal] (0) | -| Finally.cs:148:5:170:5 | {...} | Finally.cs:167:17:167:37 | call to method WriteLine | throw(Exception) [normal] (0) | -| Finally.cs:149:9:169:9 | try {...} ... | Finally.cs:158:21:158:36 | ... == ... | false | -| Finally.cs:149:9:169:9 | try {...} ... | Finally.cs:158:21:158:36 | ... == ... | throw(ArgumentNullException) [false] (0) | -| Finally.cs:149:9:169:9 | try {...} ... | Finally.cs:158:21:158:36 | ... == ... | throw(Exception) [false] (0) | -| Finally.cs:149:9:169:9 | try {...} ... | Finally.cs:163:17:163:42 | call to method WriteLine | normal | -| Finally.cs:149:9:169:9 | try {...} ... | Finally.cs:163:17:163:42 | call to method WriteLine | throw(ArgumentNullException) [normal] (0) | -| Finally.cs:149:9:169:9 | try {...} ... | Finally.cs:163:17:163:42 | call to method WriteLine | throw(Exception) [normal] (0) | -| Finally.cs:149:9:169:9 | try {...} ... | Finally.cs:167:17:167:37 | call to method WriteLine | normal | -| Finally.cs:149:9:169:9 | try {...} ... | Finally.cs:167:17:167:37 | call to method WriteLine | throw(ArgumentNullException) [normal] (0) | -| Finally.cs:149:9:169:9 | try {...} ... | Finally.cs:167:17:167:37 | call to method WriteLine | throw(Exception) [normal] (0) | -| Finally.cs:150:9:153:9 | {...} | Finally.cs:151:17:151:28 | ... == ... | false | -| Finally.cs:150:9:153:9 | {...} | Finally.cs:152:17:152:50 | throw ...; | throw(ArgumentNullException) | -| Finally.cs:150:9:153:9 | {...} | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | throw(Exception) | -| Finally.cs:151:13:152:50 | if (...) ... | Finally.cs:151:17:151:28 | ... == ... | false | -| Finally.cs:151:13:152:50 | if (...) ... | Finally.cs:152:17:152:50 | throw ...; | throw(ArgumentNullException) | -| Finally.cs:151:13:152:50 | if (...) ... | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | throw(Exception) | -| Finally.cs:151:17:151:20 | access to parameter args | Finally.cs:151:17:151:20 | access to parameter args | normal | -| Finally.cs:151:17:151:28 | ... == ... | Finally.cs:151:17:151:28 | ... == ... | false | -| Finally.cs:151:17:151:28 | ... == ... | Finally.cs:151:17:151:28 | ... == ... | true | -| Finally.cs:151:25:151:28 | null | Finally.cs:151:25:151:28 | null | normal | -| Finally.cs:152:17:152:50 | throw ...; | Finally.cs:152:17:152:50 | throw ...; | throw(ArgumentNullException) | -| Finally.cs:152:17:152:50 | throw ...; | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | throw(Exception) | -| Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | normal | -| Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | throw(Exception) | -| Finally.cs:155:9:169:9 | {...} | Finally.cs:158:21:158:36 | ... == ... | false | -| Finally.cs:155:9:169:9 | {...} | Finally.cs:163:17:163:42 | call to method WriteLine | normal | -| Finally.cs:155:9:169:9 | {...} | Finally.cs:167:17:167:37 | call to method WriteLine | normal | -| Finally.cs:156:13:168:13 | try {...} ... | Finally.cs:158:21:158:36 | ... == ... | false | -| Finally.cs:156:13:168:13 | try {...} ... | Finally.cs:163:17:163:42 | call to method WriteLine | normal | -| Finally.cs:156:13:168:13 | try {...} ... | Finally.cs:167:17:167:37 | call to method WriteLine | normal | -| Finally.cs:157:13:160:13 | {...} | Finally.cs:158:21:158:31 | access to property Length | throw(Exception) | -| Finally.cs:157:13:160:13 | {...} | Finally.cs:158:21:158:31 | access to property Length | throw(NullReferenceException) | -| Finally.cs:157:13:160:13 | {...} | Finally.cs:158:21:158:36 | ... == ... | false | -| Finally.cs:157:13:160:13 | {...} | Finally.cs:159:21:159:45 | throw ...; | throw(Exception) | -| Finally.cs:157:13:160:13 | {...} | Finally.cs:159:27:159:44 | object creation of type Exception | throw(Exception) | -| Finally.cs:158:17:159:45 | if (...) ... | Finally.cs:158:21:158:31 | access to property Length | throw(Exception) | -| Finally.cs:158:17:159:45 | if (...) ... | Finally.cs:158:21:158:31 | access to property Length | throw(NullReferenceException) | -| Finally.cs:158:17:159:45 | if (...) ... | Finally.cs:158:21:158:36 | ... == ... | false | -| Finally.cs:158:17:159:45 | if (...) ... | Finally.cs:159:21:159:45 | throw ...; | throw(Exception) | -| Finally.cs:158:17:159:45 | if (...) ... | Finally.cs:159:27:159:44 | object creation of type Exception | throw(Exception) | -| Finally.cs:158:21:158:24 | access to parameter args | Finally.cs:158:21:158:24 | access to parameter args | normal | -| Finally.cs:158:21:158:31 | access to property Length | Finally.cs:158:21:158:31 | access to property Length | normal | -| Finally.cs:158:21:158:31 | access to property Length | Finally.cs:158:21:158:31 | access to property Length | throw(Exception) | -| Finally.cs:158:21:158:31 | access to property Length | Finally.cs:158:21:158:31 | access to property Length | throw(NullReferenceException) | -| Finally.cs:158:21:158:36 | ... == ... | Finally.cs:158:21:158:31 | access to property Length | throw(Exception) | -| Finally.cs:158:21:158:36 | ... == ... | Finally.cs:158:21:158:31 | access to property Length | throw(NullReferenceException) | -| Finally.cs:158:21:158:36 | ... == ... | Finally.cs:158:21:158:36 | ... == ... | false | -| Finally.cs:158:21:158:36 | ... == ... | Finally.cs:158:21:158:36 | ... == ... | true | -| Finally.cs:158:36:158:36 | 1 | Finally.cs:158:36:158:36 | 1 | normal | -| Finally.cs:159:21:159:45 | throw ...; | Finally.cs:159:21:159:45 | throw ...; | throw(Exception) | -| Finally.cs:159:21:159:45 | throw ...; | Finally.cs:159:27:159:44 | object creation of type Exception | throw(Exception) | -| Finally.cs:159:27:159:44 | object creation of type Exception | Finally.cs:159:27:159:44 | object creation of type Exception | normal | -| Finally.cs:159:27:159:44 | object creation of type Exception | Finally.cs:159:27:159:44 | object creation of type Exception | throw(Exception) | -| Finally.cs:159:41:159:43 | "1" | Finally.cs:159:41:159:43 | "1" | normal | -| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:161:13:164:13 | catch (...) {...} | no-match | -| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:161:39:161:54 | ... == ... | false | -| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:163:17:163:42 | call to method WriteLine | normal | -| Finally.cs:161:30:161:30 | Exception e | Finally.cs:161:30:161:30 | Exception e | normal | -| Finally.cs:161:39:161:39 | access to local variable e | Finally.cs:161:39:161:39 | access to local variable e | normal | -| Finally.cs:161:39:161:47 | access to property Message | Finally.cs:161:39:161:47 | access to property Message | normal | -| Finally.cs:161:39:161:54 | ... == ... | Finally.cs:161:39:161:54 | ... == ... | false | -| Finally.cs:161:39:161:54 | ... == ... | Finally.cs:161:39:161:54 | ... == ... | true | -| Finally.cs:161:52:161:54 | "1" | Finally.cs:161:52:161:54 | "1" | normal | -| Finally.cs:162:13:164:13 | {...} | Finally.cs:163:17:163:42 | call to method WriteLine | normal | -| Finally.cs:163:17:163:42 | call to method WriteLine | Finally.cs:163:17:163:42 | call to method WriteLine | normal | -| Finally.cs:163:17:163:43 | ...; | Finally.cs:163:17:163:42 | call to method WriteLine | normal | -| Finally.cs:163:35:163:38 | access to parameter args | Finally.cs:163:35:163:38 | access to parameter args | normal | -| Finally.cs:163:35:163:41 | access to array element | Finally.cs:163:35:163:41 | access to array element | normal | -| Finally.cs:163:40:163:40 | 0 | Finally.cs:163:40:163:40 | 0 | normal | -| Finally.cs:165:13:168:13 | catch {...} | Finally.cs:167:17:167:37 | call to method WriteLine | normal | -| Finally.cs:166:13:168:13 | {...} | Finally.cs:167:17:167:37 | call to method WriteLine | normal | -| Finally.cs:167:17:167:37 | call to method WriteLine | Finally.cs:167:17:167:37 | call to method WriteLine | normal | -| Finally.cs:167:17:167:38 | ...; | Finally.cs:167:17:167:37 | call to method WriteLine | normal | -| Finally.cs:167:35:167:36 | "" | Finally.cs:167:35:167:36 | "" | normal | -| Finally.cs:172:11:172:20 | call to constructor Exception | Finally.cs:172:11:172:20 | call to constructor Exception | normal | -| Finally.cs:172:11:172:20 | call to method | Finally.cs:172:11:172:20 | call to method | normal | -| Finally.cs:172:11:172:20 | this access | Finally.cs:172:11:172:20 | this access | normal | -| Finally.cs:172:11:172:20 | {...} | Finally.cs:172:11:172:20 | {...} | normal | -| Finally.cs:173:11:173:20 | call to constructor Exception | Finally.cs:173:11:173:20 | call to constructor Exception | normal | -| Finally.cs:173:11:173:20 | call to method | Finally.cs:173:11:173:20 | call to method | normal | -| Finally.cs:173:11:173:20 | this access | Finally.cs:173:11:173:20 | this access | normal | -| Finally.cs:173:11:173:20 | {...} | Finally.cs:173:11:173:20 | {...} | normal | -| Finally.cs:174:11:174:20 | call to constructor Exception | Finally.cs:174:11:174:20 | call to constructor Exception | normal | -| Finally.cs:174:11:174:20 | call to method | Finally.cs:174:11:174:20 | call to method | normal | -| Finally.cs:174:11:174:20 | this access | Finally.cs:174:11:174:20 | this access | normal | -| Finally.cs:174:11:174:20 | {...} | Finally.cs:174:11:174:20 | {...} | normal | -| Finally.cs:177:5:193:5 | {...} | Finally.cs:186:21:186:22 | access to parameter b2 | false | -| Finally.cs:177:5:193:5 | {...} | Finally.cs:186:21:186:22 | access to parameter b2 | throw(Exception) [false] (0) | -| Finally.cs:177:5:193:5 | {...} | Finally.cs:186:21:186:22 | access to parameter b2 | throw(ExceptionA) [false] (0) | -| Finally.cs:177:5:193:5 | {...} | Finally.cs:188:13:191:13 | catch (...) {...} | throw(Exception) [no-match] (0) | -| Finally.cs:177:5:193:5 | {...} | Finally.cs:188:13:191:13 | catch (...) {...} | throw(ExceptionB) [no-match] (0) | -| Finally.cs:177:5:193:5 | {...} | Finally.cs:188:38:188:39 | access to parameter b2 | throw(Exception) [false] (0) | -| Finally.cs:177:5:193:5 | {...} | Finally.cs:188:38:188:39 | access to parameter b2 | throw(ExceptionB) [false] (0) | -| Finally.cs:177:5:193:5 | {...} | Finally.cs:190:21:190:22 | access to parameter b1 | false | -| Finally.cs:177:5:193:5 | {...} | Finally.cs:190:21:190:22 | access to parameter b1 | throw(Exception) [false] (0) | -| Finally.cs:177:5:193:5 | {...} | Finally.cs:190:21:190:22 | access to parameter b1 | throw(ExceptionA) [false] (0) | -| Finally.cs:177:5:193:5 | {...} | Finally.cs:190:25:190:47 | throw ...; | throw(ExceptionC) | -| Finally.cs:178:9:192:9 | try {...} ... | Finally.cs:186:21:186:22 | access to parameter b2 | false | -| Finally.cs:178:9:192:9 | try {...} ... | Finally.cs:186:21:186:22 | access to parameter b2 | throw(Exception) [false] (0) | -| Finally.cs:178:9:192:9 | try {...} ... | Finally.cs:186:21:186:22 | access to parameter b2 | throw(ExceptionA) [false] (0) | -| Finally.cs:178:9:192:9 | try {...} ... | Finally.cs:188:13:191:13 | catch (...) {...} | throw(Exception) [no-match] (0) | -| Finally.cs:178:9:192:9 | try {...} ... | Finally.cs:188:13:191:13 | catch (...) {...} | throw(ExceptionB) [no-match] (0) | -| Finally.cs:178:9:192:9 | try {...} ... | Finally.cs:188:38:188:39 | access to parameter b2 | throw(Exception) [false] (0) | -| Finally.cs:178:9:192:9 | try {...} ... | Finally.cs:188:38:188:39 | access to parameter b2 | throw(ExceptionB) [false] (0) | -| Finally.cs:178:9:192:9 | try {...} ... | Finally.cs:190:21:190:22 | access to parameter b1 | false | -| Finally.cs:178:9:192:9 | try {...} ... | Finally.cs:190:21:190:22 | access to parameter b1 | throw(Exception) [false] (0) | -| Finally.cs:178:9:192:9 | try {...} ... | Finally.cs:190:21:190:22 | access to parameter b1 | throw(ExceptionA) [false] (0) | -| Finally.cs:178:9:192:9 | try {...} ... | Finally.cs:190:25:190:47 | throw ...; | throw(ExceptionC) | -| Finally.cs:179:9:181:9 | {...} | Finally.cs:180:17:180:18 | access to parameter b1 | false | -| Finally.cs:179:9:181:9 | {...} | Finally.cs:180:21:180:43 | throw ...; | throw(ExceptionA) | -| Finally.cs:179:9:181:9 | {...} | Finally.cs:180:27:180:42 | object creation of type ExceptionA | throw(Exception) | -| Finally.cs:180:13:180:43 | if (...) ... | Finally.cs:180:17:180:18 | access to parameter b1 | false | -| Finally.cs:180:13:180:43 | if (...) ... | Finally.cs:180:21:180:43 | throw ...; | throw(ExceptionA) | -| Finally.cs:180:13:180:43 | if (...) ... | Finally.cs:180:27:180:42 | object creation of type ExceptionA | throw(Exception) | -| Finally.cs:180:17:180:18 | access to parameter b1 | Finally.cs:180:17:180:18 | access to parameter b1 | false | -| Finally.cs:180:17:180:18 | access to parameter b1 | Finally.cs:180:17:180:18 | access to parameter b1 | true | -| Finally.cs:180:21:180:43 | throw ...; | Finally.cs:180:21:180:43 | throw ...; | throw(ExceptionA) | -| Finally.cs:180:21:180:43 | throw ...; | Finally.cs:180:27:180:42 | object creation of type ExceptionA | throw(Exception) | -| Finally.cs:180:27:180:42 | object creation of type ExceptionA | Finally.cs:180:27:180:42 | object creation of type ExceptionA | normal | -| Finally.cs:180:27:180:42 | object creation of type ExceptionA | Finally.cs:180:27:180:42 | object creation of type ExceptionA | throw(Exception) | -| Finally.cs:183:9:192:9 | {...} | Finally.cs:186:21:186:22 | access to parameter b2 | false | -| Finally.cs:183:9:192:9 | {...} | Finally.cs:188:13:191:13 | catch (...) {...} | throw(Exception) [no-match] (0) | -| Finally.cs:183:9:192:9 | {...} | Finally.cs:188:13:191:13 | catch (...) {...} | throw(ExceptionB) [no-match] (0) | -| Finally.cs:183:9:192:9 | {...} | Finally.cs:188:38:188:39 | access to parameter b2 | throw(Exception) [false] (0) | -| Finally.cs:183:9:192:9 | {...} | Finally.cs:188:38:188:39 | access to parameter b2 | throw(ExceptionB) [false] (0) | -| Finally.cs:183:9:192:9 | {...} | Finally.cs:190:21:190:22 | access to parameter b1 | false | -| Finally.cs:183:9:192:9 | {...} | Finally.cs:190:25:190:47 | throw ...; | throw(ExceptionC) | -| Finally.cs:184:13:191:13 | try {...} ... | Finally.cs:186:21:186:22 | access to parameter b2 | false | -| Finally.cs:184:13:191:13 | try {...} ... | Finally.cs:188:13:191:13 | catch (...) {...} | throw(Exception) [no-match] (0) | -| Finally.cs:184:13:191:13 | try {...} ... | Finally.cs:188:13:191:13 | catch (...) {...} | throw(ExceptionB) [no-match] (0) | -| Finally.cs:184:13:191:13 | try {...} ... | Finally.cs:188:38:188:39 | access to parameter b2 | throw(Exception) [false] (0) | -| Finally.cs:184:13:191:13 | try {...} ... | Finally.cs:188:38:188:39 | access to parameter b2 | throw(ExceptionB) [false] (0) | -| Finally.cs:184:13:191:13 | try {...} ... | Finally.cs:190:21:190:22 | access to parameter b1 | false | -| Finally.cs:184:13:191:13 | try {...} ... | Finally.cs:190:25:190:47 | throw ...; | throw(ExceptionC) | -| Finally.cs:185:13:187:13 | {...} | Finally.cs:186:21:186:22 | access to parameter b2 | false | -| Finally.cs:185:13:187:13 | {...} | Finally.cs:186:25:186:47 | throw ...; | throw(ExceptionB) | -| Finally.cs:185:13:187:13 | {...} | Finally.cs:186:31:186:46 | object creation of type ExceptionB | throw(Exception) | -| Finally.cs:186:17:186:47 | if (...) ... | Finally.cs:186:21:186:22 | access to parameter b2 | false | -| Finally.cs:186:17:186:47 | if (...) ... | Finally.cs:186:25:186:47 | throw ...; | throw(ExceptionB) | -| Finally.cs:186:17:186:47 | if (...) ... | Finally.cs:186:31:186:46 | object creation of type ExceptionB | throw(Exception) | -| Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:186:21:186:22 | access to parameter b2 | false | -| Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:186:21:186:22 | access to parameter b2 | true | -| Finally.cs:186:25:186:47 | throw ...; | Finally.cs:186:25:186:47 | throw ...; | throw(ExceptionB) | -| Finally.cs:186:25:186:47 | throw ...; | Finally.cs:186:31:186:46 | object creation of type ExceptionB | throw(Exception) | -| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:186:31:186:46 | object creation of type ExceptionB | normal | -| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:186:31:186:46 | object creation of type ExceptionB | throw(Exception) | -| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:188:13:191:13 | catch (...) {...} | throw(Exception) [no-match] (0) | -| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:188:13:191:13 | catch (...) {...} | throw(ExceptionB) [no-match] (0) | -| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:188:38:188:39 | access to parameter b2 | throw(Exception) [false] (0) | -| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:188:38:188:39 | access to parameter b2 | throw(ExceptionB) [false] (0) | -| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:190:21:190:22 | access to parameter b1 | false | -| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:190:25:190:47 | throw ...; | throw(ExceptionC) | -| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:188:38:188:39 | access to parameter b2 | false | -| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:188:38:188:39 | access to parameter b2 | true | -| Finally.cs:189:13:191:13 | {...} | Finally.cs:190:21:190:22 | access to parameter b1 | false | -| Finally.cs:189:13:191:13 | {...} | Finally.cs:190:25:190:47 | throw ...; | throw(ExceptionC) | -| Finally.cs:190:17:190:47 | if (...) ... | Finally.cs:190:21:190:22 | access to parameter b1 | false | -| Finally.cs:190:17:190:47 | if (...) ... | Finally.cs:190:25:190:47 | throw ...; | throw(ExceptionC) | -| Finally.cs:190:21:190:22 | access to parameter b1 | Finally.cs:190:21:190:22 | access to parameter b1 | false | -| Finally.cs:190:21:190:22 | access to parameter b1 | Finally.cs:190:21:190:22 | access to parameter b1 | true | -| Finally.cs:190:25:190:47 | throw ...; | Finally.cs:190:25:190:47 | throw ...; | throw(ExceptionC) | -| Finally.cs:190:31:190:46 | object creation of type ExceptionC | Finally.cs:190:31:190:46 | object creation of type ExceptionC | normal | -| Finally.cs:196:5:214:5 | {...} | Finally.cs:209:21:209:22 | access to parameter b3 | throw(Exception) [false] (1) | -| Finally.cs:196:5:214:5 | {...} | Finally.cs:209:21:209:22 | access to parameter b3 | throw(ExceptionB) [false] (1) | -| Finally.cs:196:5:214:5 | {...} | Finally.cs:209:25:209:47 | throw ...; | throw(ExceptionC) | -| Finally.cs:196:5:214:5 | {...} | Finally.cs:211:13:211:28 | ... = ... | throw(Exception) [normal] (0) | -| Finally.cs:196:5:214:5 | {...} | Finally.cs:211:13:211:28 | ... = ... | throw(ExceptionA) [normal] (0) | -| Finally.cs:196:5:214:5 | {...} | Finally.cs:213:9:213:24 | ... = ... | normal | -| Finally.cs:197:9:212:9 | try {...} ... | Finally.cs:209:21:209:22 | access to parameter b3 | throw(Exception) [false] (1) | -| Finally.cs:197:9:212:9 | try {...} ... | Finally.cs:209:21:209:22 | access to parameter b3 | throw(ExceptionB) [false] (1) | -| Finally.cs:197:9:212:9 | try {...} ... | Finally.cs:209:25:209:47 | throw ...; | throw(ExceptionC) | -| Finally.cs:197:9:212:9 | try {...} ... | Finally.cs:211:13:211:28 | ... = ... | normal | -| Finally.cs:197:9:212:9 | try {...} ... | Finally.cs:211:13:211:28 | ... = ... | throw(Exception) [normal] (0) | -| Finally.cs:197:9:212:9 | try {...} ... | Finally.cs:211:13:211:28 | ... = ... | throw(ExceptionA) [normal] (0) | -| Finally.cs:198:9:200:9 | {...} | Finally.cs:199:17:199:18 | access to parameter b1 | false | -| Finally.cs:198:9:200:9 | {...} | Finally.cs:199:21:199:43 | throw ...; | throw(ExceptionA) | -| Finally.cs:198:9:200:9 | {...} | Finally.cs:199:27:199:42 | object creation of type ExceptionA | throw(Exception) | -| Finally.cs:199:13:199:43 | if (...) ... | Finally.cs:199:17:199:18 | access to parameter b1 | false | -| Finally.cs:199:13:199:43 | if (...) ... | Finally.cs:199:21:199:43 | throw ...; | throw(ExceptionA) | -| Finally.cs:199:13:199:43 | if (...) ... | Finally.cs:199:27:199:42 | object creation of type ExceptionA | throw(Exception) | -| Finally.cs:199:17:199:18 | access to parameter b1 | Finally.cs:199:17:199:18 | access to parameter b1 | false | -| Finally.cs:199:17:199:18 | access to parameter b1 | Finally.cs:199:17:199:18 | access to parameter b1 | true | -| Finally.cs:199:21:199:43 | throw ...; | Finally.cs:199:21:199:43 | throw ...; | throw(ExceptionA) | -| Finally.cs:199:21:199:43 | throw ...; | Finally.cs:199:27:199:42 | object creation of type ExceptionA | throw(Exception) | -| Finally.cs:199:27:199:42 | object creation of type ExceptionA | Finally.cs:199:27:199:42 | object creation of type ExceptionA | normal | -| Finally.cs:199:27:199:42 | object creation of type ExceptionA | Finally.cs:199:27:199:42 | object creation of type ExceptionA | throw(Exception) | -| Finally.cs:202:9:212:9 | {...} | Finally.cs:209:21:209:22 | access to parameter b3 | throw(Exception) [false] (1) | -| Finally.cs:202:9:212:9 | {...} | Finally.cs:209:21:209:22 | access to parameter b3 | throw(ExceptionB) [false] (1) | -| Finally.cs:202:9:212:9 | {...} | Finally.cs:209:25:209:47 | throw ...; | throw(ExceptionC) | -| Finally.cs:202:9:212:9 | {...} | Finally.cs:211:13:211:28 | ... = ... | normal | -| Finally.cs:203:13:210:13 | try {...} ... | Finally.cs:209:21:209:22 | access to parameter b3 | false | -| Finally.cs:203:13:210:13 | try {...} ... | Finally.cs:209:21:209:22 | access to parameter b3 | throw(Exception) [false] (1) | -| Finally.cs:203:13:210:13 | try {...} ... | Finally.cs:209:21:209:22 | access to parameter b3 | throw(ExceptionB) [false] (1) | -| Finally.cs:203:13:210:13 | try {...} ... | Finally.cs:209:25:209:47 | throw ...; | throw(ExceptionC) | -| Finally.cs:204:13:206:13 | {...} | Finally.cs:205:21:205:22 | access to parameter b2 | false | -| Finally.cs:204:13:206:13 | {...} | Finally.cs:205:25:205:47 | throw ...; | throw(ExceptionB) | -| Finally.cs:204:13:206:13 | {...} | Finally.cs:205:31:205:46 | object creation of type ExceptionB | throw(Exception) | -| Finally.cs:205:17:205:47 | if (...) ... | Finally.cs:205:21:205:22 | access to parameter b2 | false | -| Finally.cs:205:17:205:47 | if (...) ... | Finally.cs:205:25:205:47 | throw ...; | throw(ExceptionB) | -| Finally.cs:205:17:205:47 | if (...) ... | Finally.cs:205:31:205:46 | object creation of type ExceptionB | throw(Exception) | -| Finally.cs:205:21:205:22 | access to parameter b2 | Finally.cs:205:21:205:22 | access to parameter b2 | false | -| Finally.cs:205:21:205:22 | access to parameter b2 | Finally.cs:205:21:205:22 | access to parameter b2 | true | -| Finally.cs:205:25:205:47 | throw ...; | Finally.cs:205:25:205:47 | throw ...; | throw(ExceptionB) | -| Finally.cs:205:25:205:47 | throw ...; | Finally.cs:205:31:205:46 | object creation of type ExceptionB | throw(Exception) | -| Finally.cs:205:31:205:46 | object creation of type ExceptionB | Finally.cs:205:31:205:46 | object creation of type ExceptionB | normal | -| Finally.cs:205:31:205:46 | object creation of type ExceptionB | Finally.cs:205:31:205:46 | object creation of type ExceptionB | throw(Exception) | -| Finally.cs:208:13:210:13 | {...} | Finally.cs:209:21:209:22 | access to parameter b3 | false | -| Finally.cs:208:13:210:13 | {...} | Finally.cs:209:25:209:47 | throw ...; | throw(ExceptionC) | -| Finally.cs:209:17:209:47 | if (...) ... | Finally.cs:209:21:209:22 | access to parameter b3 | false | -| Finally.cs:209:17:209:47 | if (...) ... | Finally.cs:209:25:209:47 | throw ...; | throw(ExceptionC) | -| Finally.cs:209:21:209:22 | access to parameter b3 | Finally.cs:209:21:209:22 | access to parameter b3 | false | -| Finally.cs:209:21:209:22 | access to parameter b3 | Finally.cs:209:21:209:22 | access to parameter b3 | true | -| Finally.cs:209:25:209:47 | throw ...; | Finally.cs:209:25:209:47 | throw ...; | throw(ExceptionC) | -| Finally.cs:209:31:209:46 | object creation of type ExceptionC | Finally.cs:209:31:209:46 | object creation of type ExceptionC | normal | -| Finally.cs:211:13:211:16 | this access | Finally.cs:211:13:211:16 | this access | normal | -| Finally.cs:211:13:211:22 | access to field Field | Finally.cs:211:13:211:16 | this access | normal | -| Finally.cs:211:13:211:28 | ... = ... | Finally.cs:211:13:211:28 | ... = ... | normal | -| Finally.cs:211:13:211:29 | ...; | Finally.cs:211:13:211:28 | ... = ... | normal | -| Finally.cs:211:26:211:28 | "0" | Finally.cs:211:26:211:28 | "0" | normal | -| Finally.cs:213:9:213:12 | this access | Finally.cs:213:9:213:12 | this access | normal | -| Finally.cs:213:9:213:18 | access to field Field | Finally.cs:213:9:213:12 | this access | normal | -| Finally.cs:213:9:213:24 | ... = ... | Finally.cs:213:9:213:24 | ... = ... | normal | -| Finally.cs:213:9:213:25 | ...; | Finally.cs:213:9:213:24 | ... = ... | normal | -| Finally.cs:213:22:213:24 | "1" | Finally.cs:213:22:213:24 | "1" | normal | -| Finally.cs:217:5:231:5 | {...} | Finally.cs:230:9:230:33 | call to method WriteLine | normal | -| Finally.cs:218:9:229:9 | try {...} ... | Finally.cs:228:13:228:40 | call to method WriteLine | normal | -| Finally.cs:219:9:221:9 | {...} | Finally.cs:220:13:220:36 | call to method WriteLine | normal | -| Finally.cs:219:9:221:9 | {...} | Finally.cs:220:13:220:36 | call to method WriteLine | throw(Exception) | -| Finally.cs:220:13:220:36 | call to method WriteLine | Finally.cs:220:13:220:36 | call to method WriteLine | normal | -| Finally.cs:220:13:220:36 | call to method WriteLine | Finally.cs:220:13:220:36 | call to method WriteLine | throw(Exception) | -| Finally.cs:220:13:220:37 | ...; | Finally.cs:220:13:220:36 | call to method WriteLine | normal | -| Finally.cs:220:13:220:37 | ...; | Finally.cs:220:13:220:36 | call to method WriteLine | throw(Exception) | -| Finally.cs:220:31:220:35 | "Try" | Finally.cs:220:31:220:35 | "Try" | normal | -| Finally.cs:222:9:225:9 | catch {...} | Finally.cs:224:13:224:38 | call to method WriteLine | normal | -| Finally.cs:223:9:225:9 | {...} | Finally.cs:224:13:224:38 | call to method WriteLine | normal | -| Finally.cs:224:13:224:38 | call to method WriteLine | Finally.cs:224:13:224:38 | call to method WriteLine | normal | -| Finally.cs:224:13:224:39 | ...; | Finally.cs:224:13:224:38 | call to method WriteLine | normal | -| Finally.cs:224:31:224:37 | "Catch" | Finally.cs:224:31:224:37 | "Catch" | normal | -| Finally.cs:227:9:229:9 | {...} | Finally.cs:228:13:228:40 | call to method WriteLine | normal | -| Finally.cs:228:13:228:40 | call to method WriteLine | Finally.cs:228:13:228:40 | call to method WriteLine | normal | -| Finally.cs:228:13:228:41 | ...; | Finally.cs:228:13:228:40 | call to method WriteLine | normal | -| Finally.cs:228:31:228:39 | "Finally" | Finally.cs:228:31:228:39 | "Finally" | normal | -| Finally.cs:230:9:230:33 | call to method WriteLine | Finally.cs:230:9:230:33 | call to method WriteLine | normal | -| Finally.cs:230:9:230:34 | ...; | Finally.cs:230:9:230:33 | call to method WriteLine | normal | -| Finally.cs:230:27:230:32 | "Done" | Finally.cs:230:27:230:32 | "Done" | normal | -| Finally.cs:234:5:261:5 | {...} | Finally.cs:258:13:258:46 | call to method WriteLine | throw(Exception) [normal] (0) | -| Finally.cs:234:5:261:5 | {...} | Finally.cs:258:13:258:46 | call to method WriteLine | throw(ExceptionA) [normal] (0) | -| Finally.cs:234:5:261:5 | {...} | Finally.cs:260:9:260:33 | call to method WriteLine | normal | -| Finally.cs:235:9:259:9 | try {...} ... | Finally.cs:258:13:258:46 | call to method WriteLine | normal | -| Finally.cs:235:9:259:9 | try {...} ... | Finally.cs:258:13:258:46 | call to method WriteLine | throw(Exception) [normal] (0) | -| Finally.cs:235:9:259:9 | try {...} ... | Finally.cs:258:13:258:46 | call to method WriteLine | throw(ExceptionA) [normal] (0) | -| Finally.cs:236:9:255:9 | {...} | Finally.cs:251:21:251:54 | call to method WriteLine | throw(Exception) [normal] (0) | -| Finally.cs:236:9:255:9 | {...} | Finally.cs:251:21:251:54 | call to method WriteLine | throw(Exception) [normal] (1) | -| Finally.cs:236:9:255:9 | {...} | Finally.cs:251:21:251:54 | call to method WriteLine | throw(ExceptionA) [normal] (0) | -| Finally.cs:236:9:255:9 | {...} | Finally.cs:251:21:251:54 | call to method WriteLine | throw(ExceptionA) [normal] (1) | -| Finally.cs:236:9:255:9 | {...} | Finally.cs:254:13:254:44 | call to method WriteLine | normal | -| Finally.cs:236:9:255:9 | {...} | Finally.cs:254:13:254:44 | call to method WriteLine | throw(Exception) | -| Finally.cs:237:13:253:13 | try {...} ... | Finally.cs:251:21:251:54 | call to method WriteLine | normal | -| Finally.cs:237:13:253:13 | try {...} ... | Finally.cs:251:21:251:54 | call to method WriteLine | throw(Exception) [normal] (0) | -| Finally.cs:237:13:253:13 | try {...} ... | Finally.cs:251:21:251:54 | call to method WriteLine | throw(Exception) [normal] (1) | -| Finally.cs:237:13:253:13 | try {...} ... | Finally.cs:251:21:251:54 | call to method WriteLine | throw(ExceptionA) [normal] (0) | -| Finally.cs:237:13:253:13 | try {...} ... | Finally.cs:251:21:251:54 | call to method WriteLine | throw(ExceptionA) [normal] (1) | -| Finally.cs:238:13:241:13 | {...} | Finally.cs:239:21:239:22 | access to parameter b1 | false | -| Finally.cs:238:13:241:13 | {...} | Finally.cs:240:21:240:43 | throw ...; | throw(ExceptionA) | -| Finally.cs:238:13:241:13 | {...} | Finally.cs:240:27:240:42 | object creation of type ExceptionA | throw(Exception) | -| Finally.cs:239:17:240:43 | if (...) ... | Finally.cs:239:21:239:22 | access to parameter b1 | false | -| Finally.cs:239:17:240:43 | if (...) ... | Finally.cs:240:21:240:43 | throw ...; | throw(ExceptionA) | -| Finally.cs:239:17:240:43 | if (...) ... | Finally.cs:240:27:240:42 | object creation of type ExceptionA | throw(Exception) | -| Finally.cs:239:21:239:22 | access to parameter b1 | Finally.cs:239:21:239:22 | access to parameter b1 | false | -| Finally.cs:239:21:239:22 | access to parameter b1 | Finally.cs:239:21:239:22 | access to parameter b1 | true | -| Finally.cs:240:21:240:43 | throw ...; | Finally.cs:240:21:240:43 | throw ...; | throw(ExceptionA) | -| Finally.cs:240:21:240:43 | throw ...; | Finally.cs:240:27:240:42 | object creation of type ExceptionA | throw(Exception) | -| Finally.cs:240:27:240:42 | object creation of type ExceptionA | Finally.cs:240:27:240:42 | object creation of type ExceptionA | normal | -| Finally.cs:240:27:240:42 | object creation of type ExceptionA | Finally.cs:240:27:240:42 | object creation of type ExceptionA | throw(Exception) | -| Finally.cs:243:13:253:13 | {...} | Finally.cs:251:21:251:54 | call to method WriteLine | normal | -| Finally.cs:243:13:253:13 | {...} | Finally.cs:251:21:251:54 | call to method WriteLine | throw(Exception) [normal] (1) | -| Finally.cs:243:13:253:13 | {...} | Finally.cs:251:21:251:54 | call to method WriteLine | throw(ExceptionA) [normal] (1) | -| Finally.cs:244:17:252:17 | try {...} ... | Finally.cs:251:21:251:54 | call to method WriteLine | normal | -| Finally.cs:244:17:252:17 | try {...} ... | Finally.cs:251:21:251:54 | call to method WriteLine | throw(Exception) [normal] (1) | -| Finally.cs:244:17:252:17 | try {...} ... | Finally.cs:251:21:251:54 | call to method WriteLine | throw(ExceptionA) [normal] (1) | -| Finally.cs:245:17:248:17 | {...} | Finally.cs:246:25:246:26 | access to parameter b2 | false | -| Finally.cs:245:17:248:17 | {...} | Finally.cs:247:25:247:47 | throw ...; | throw(ExceptionA) | -| Finally.cs:245:17:248:17 | {...} | Finally.cs:247:31:247:46 | object creation of type ExceptionA | throw(Exception) | -| Finally.cs:246:21:247:47 | if (...) ... | Finally.cs:246:25:246:26 | access to parameter b2 | false | -| Finally.cs:246:21:247:47 | if (...) ... | Finally.cs:247:25:247:47 | throw ...; | throw(ExceptionA) | -| Finally.cs:246:21:247:47 | if (...) ... | Finally.cs:247:31:247:46 | object creation of type ExceptionA | throw(Exception) | -| Finally.cs:246:25:246:26 | access to parameter b2 | Finally.cs:246:25:246:26 | access to parameter b2 | false | -| Finally.cs:246:25:246:26 | access to parameter b2 | Finally.cs:246:25:246:26 | access to parameter b2 | true | -| Finally.cs:247:25:247:47 | throw ...; | Finally.cs:247:25:247:47 | throw ...; | throw(ExceptionA) | -| Finally.cs:247:25:247:47 | throw ...; | Finally.cs:247:31:247:46 | object creation of type ExceptionA | throw(Exception) | -| Finally.cs:247:31:247:46 | object creation of type ExceptionA | Finally.cs:247:31:247:46 | object creation of type ExceptionA | normal | -| Finally.cs:247:31:247:46 | object creation of type ExceptionA | Finally.cs:247:31:247:46 | object creation of type ExceptionA | throw(Exception) | -| Finally.cs:250:17:252:17 | {...} | Finally.cs:251:21:251:54 | call to method WriteLine | normal | -| Finally.cs:251:21:251:54 | call to method WriteLine | Finally.cs:251:21:251:54 | call to method WriteLine | normal | -| Finally.cs:251:21:251:55 | ...; | Finally.cs:251:21:251:54 | call to method WriteLine | normal | -| Finally.cs:251:39:251:53 | "Inner finally" | Finally.cs:251:39:251:53 | "Inner finally" | normal | -| Finally.cs:254:13:254:44 | call to method WriteLine | Finally.cs:254:13:254:44 | call to method WriteLine | normal | -| Finally.cs:254:13:254:44 | call to method WriteLine | Finally.cs:254:13:254:44 | call to method WriteLine | throw(Exception) | -| Finally.cs:254:13:254:45 | ...; | Finally.cs:254:13:254:44 | call to method WriteLine | normal | -| Finally.cs:254:13:254:45 | ...; | Finally.cs:254:13:254:44 | call to method WriteLine | throw(Exception) | -| Finally.cs:254:31:254:43 | "Mid finally" | Finally.cs:254:31:254:43 | "Mid finally" | normal | -| Finally.cs:257:9:259:9 | {...} | Finally.cs:258:13:258:46 | call to method WriteLine | normal | -| Finally.cs:258:13:258:46 | call to method WriteLine | Finally.cs:258:13:258:46 | call to method WriteLine | normal | -| Finally.cs:258:13:258:47 | ...; | Finally.cs:258:13:258:46 | call to method WriteLine | normal | -| Finally.cs:258:31:258:45 | "Outer finally" | Finally.cs:258:31:258:45 | "Outer finally" | normal | -| Finally.cs:260:9:260:33 | call to method WriteLine | Finally.cs:260:9:260:33 | call to method WriteLine | normal | -| Finally.cs:260:9:260:34 | ...; | Finally.cs:260:9:260:33 | call to method WriteLine | normal | -| Finally.cs:260:27:260:32 | "Done" | Finally.cs:260:27:260:32 | "Done" | normal | -| Finally.cs:264:5:274:5 | {...} | Finally.cs:272:13:272:18 | ... += ... | normal | -| Finally.cs:264:5:274:5 | {...} | Finally.cs:272:13:272:18 | ... += ... | throw(Exception) [normal] (0) | -| Finally.cs:265:9:273:9 | try {...} ... | Finally.cs:272:13:272:18 | ... += ... | normal | -| Finally.cs:265:9:273:9 | try {...} ... | Finally.cs:272:13:272:18 | ... += ... | throw(Exception) [normal] (0) | -| Finally.cs:266:9:268:9 | {...} | Finally.cs:267:13:267:34 | call to method WriteLine | normal | -| Finally.cs:266:9:268:9 | {...} | Finally.cs:267:13:267:34 | call to method WriteLine | throw(Exception) | -| Finally.cs:267:13:267:34 | call to method WriteLine | Finally.cs:267:13:267:34 | call to method WriteLine | normal | -| Finally.cs:267:13:267:34 | call to method WriteLine | Finally.cs:267:13:267:34 | call to method WriteLine | throw(Exception) | -| Finally.cs:267:13:267:35 | ...; | Finally.cs:267:13:267:34 | call to method WriteLine | normal | -| Finally.cs:267:13:267:35 | ...; | Finally.cs:267:13:267:34 | call to method WriteLine | throw(Exception) | -| Finally.cs:267:31:267:33 | "1" | Finally.cs:267:31:267:33 | "1" | normal | -| Finally.cs:270:9:273:9 | {...} | Finally.cs:272:13:272:18 | ... += ... | normal | -| Finally.cs:271:13:271:34 | call to method WriteLine | Finally.cs:271:13:271:34 | call to method WriteLine | normal | -| Finally.cs:271:13:271:35 | ...; | Finally.cs:271:13:271:34 | call to method WriteLine | normal | -| Finally.cs:271:31:271:33 | "3" | Finally.cs:271:31:271:33 | "3" | normal | -| Finally.cs:272:13:272:13 | access to parameter i | Finally.cs:272:13:272:13 | access to parameter i | normal | -| Finally.cs:272:13:272:18 | ... += ... | Finally.cs:272:13:272:18 | ... += ... | normal | -| Finally.cs:272:13:272:19 | ...; | Finally.cs:272:13:272:18 | ... += ... | normal | -| Finally.cs:272:18:272:18 | 3 | Finally.cs:272:18:272:18 | 3 | normal | -| Foreach.cs:4:7:4:13 | call to constructor Object | Foreach.cs:4:7:4:13 | call to constructor Object | normal | -| Foreach.cs:4:7:4:13 | call to method | Foreach.cs:4:7:4:13 | call to method | normal | -| Foreach.cs:4:7:4:13 | this access | Foreach.cs:4:7:4:13 | this access | normal | -| Foreach.cs:4:7:4:13 | {...} | Foreach.cs:4:7:4:13 | {...} | normal | -| Foreach.cs:7:5:10:5 | {...} | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | empty | -| Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | empty | -| Foreach.cs:8:22:8:24 | String arg | Foreach.cs:8:22:8:24 | String arg | normal | -| Foreach.cs:8:29:8:32 | access to parameter args | Foreach.cs:8:29:8:32 | access to parameter args | normal | -| Foreach.cs:9:13:9:13 | ; | Foreach.cs:9:13:9:13 | ; | normal | -| Foreach.cs:13:5:16:5 | {...} | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | empty | -| Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | empty | -| Foreach.cs:14:22:14:22 | String _ | Foreach.cs:14:22:14:22 | String _ | normal | -| Foreach.cs:14:27:14:30 | access to parameter args | Foreach.cs:14:27:14:30 | access to parameter args | normal | -| Foreach.cs:15:13:15:13 | ; | Foreach.cs:15:13:15:13 | ; | normal | -| Foreach.cs:19:5:22:5 | {...} | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | empty | -| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | empty | -| Foreach.cs:20:22:20:22 | String x | Foreach.cs:20:22:20:22 | String x | normal | -| Foreach.cs:20:27:20:27 | access to parameter e | Foreach.cs:20:27:20:27 | access to parameter e | non-null | -| Foreach.cs:20:27:20:27 | access to parameter e | Foreach.cs:20:27:20:27 | access to parameter e | null | -| Foreach.cs:20:27:20:38 | call to method ToArray | Foreach.cs:20:27:20:27 | access to parameter e | null | -| Foreach.cs:20:27:20:38 | call to method ToArray | Foreach.cs:20:27:20:38 | call to method ToArray | non-null | -| Foreach.cs:20:27:20:38 | call to method ToArray | Foreach.cs:20:27:20:38 | call to method ToArray | null | -| Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:20:27:20:68 | ... ?? ... | normal | -| Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:20:43:20:68 | call to method Empty | normal | -| Foreach.cs:21:11:21:11 | ; | Foreach.cs:21:11:21:11 | ; | normal | -| Foreach.cs:25:5:28:5 | {...} | Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | empty | -| Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | empty | -| Foreach.cs:26:18:26:31 | (..., ...) | Foreach.cs:26:18:26:31 | (..., ...) | normal | -| Foreach.cs:26:23:26:23 | String x | Foreach.cs:26:23:26:23 | String x | normal | -| Foreach.cs:26:30:26:30 | Int32 y | Foreach.cs:26:30:26:30 | Int32 y | normal | -| Foreach.cs:26:36:26:39 | access to parameter args | Foreach.cs:26:36:26:39 | access to parameter args | normal | -| Foreach.cs:27:11:27:11 | ; | Foreach.cs:27:11:27:11 | ; | normal | -| Foreach.cs:31:5:34:5 | {...} | Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | empty | -| Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | empty | -| Foreach.cs:32:18:32:27 | (..., ...) | Foreach.cs:32:18:32:27 | (..., ...) | normal | -| Foreach.cs:32:23:32:23 | String x | Foreach.cs:32:23:32:23 | String x | normal | -| Foreach.cs:32:26:32:26 | Int32 y | Foreach.cs:32:26:32:26 | Int32 y | normal | -| Foreach.cs:32:32:32:35 | access to parameter args | Foreach.cs:32:32:32:35 | access to parameter args | normal | -| Foreach.cs:33:11:33:11 | ; | Foreach.cs:33:11:33:11 | ; | normal | -| Foreach.cs:37:5:40:5 | {...} | Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | empty | -| Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | empty | -| Foreach.cs:38:18:38:34 | (..., ...) | Foreach.cs:38:18:38:34 | (..., ...) | normal | -| Foreach.cs:38:26:38:26 | String x | Foreach.cs:38:26:38:26 | String x | normal | -| Foreach.cs:38:33:38:33 | Int32 y | Foreach.cs:38:33:38:33 | Int32 y | normal | -| Foreach.cs:38:39:38:42 | access to parameter args | Foreach.cs:38:39:38:42 | access to parameter args | normal | -| Foreach.cs:39:11:39:11 | ; | Foreach.cs:39:11:39:11 | ; | normal | -| Initializers.cs:3:7:3:18 | {...} | Initializers.cs:3:7:3:18 | {...} | normal | -| Initializers.cs:5:9:5:9 | access to field F | Initializers.cs:5:9:5:9 | this access | normal | -| Initializers.cs:5:9:5:9 | this access | Initializers.cs:5:9:5:9 | this access | normal | -| Initializers.cs:5:9:5:17 | ... = ... | Initializers.cs:5:9:5:17 | ... = ... | normal | -| Initializers.cs:5:13:5:13 | access to field H | Initializers.cs:5:13:5:13 | access to field H | normal | -| Initializers.cs:5:13:5:17 | ... + ... | Initializers.cs:5:13:5:17 | ... + ... | normal | -| Initializers.cs:5:17:5:17 | 1 | Initializers.cs:5:17:5:17 | 1 | normal | -| Initializers.cs:6:9:6:9 | access to property G | Initializers.cs:6:9:6:9 | this access | normal | -| Initializers.cs:6:9:6:9 | this access | Initializers.cs:6:9:6:9 | this access | normal | -| Initializers.cs:6:25:6:31 | ... = ... | Initializers.cs:6:25:6:31 | ... = ... | normal | -| Initializers.cs:6:27:6:27 | access to field H | Initializers.cs:6:27:6:27 | access to field H | normal | -| Initializers.cs:6:27:6:31 | ... + ... | Initializers.cs:6:27:6:31 | ... + ... | normal | -| Initializers.cs:6:31:6:31 | 2 | Initializers.cs:6:31:6:31 | 2 | normal | -| Initializers.cs:8:5:8:16 | call to constructor Object | Initializers.cs:8:5:8:16 | call to constructor Object | normal | -| Initializers.cs:8:5:8:16 | call to method | Initializers.cs:8:5:8:16 | call to method | normal | -| Initializers.cs:8:5:8:16 | this access | Initializers.cs:8:5:8:16 | this access | normal | -| Initializers.cs:8:20:8:22 | {...} | Initializers.cs:8:20:8:22 | {...} | normal | -| Initializers.cs:10:5:10:16 | call to constructor Object | Initializers.cs:10:5:10:16 | call to constructor Object | normal | -| Initializers.cs:10:5:10:16 | call to method | Initializers.cs:10:5:10:16 | call to method | normal | -| Initializers.cs:10:5:10:16 | this access | Initializers.cs:10:5:10:16 | this access | normal | -| Initializers.cs:10:28:10:30 | {...} | Initializers.cs:10:28:10:30 | {...} | normal | -| Initializers.cs:13:5:16:5 | {...} | Initializers.cs:15:13:15:63 | Initializers[] iz = ... | normal | -| Initializers.cs:14:9:14:54 | ... ...; | Initializers.cs:14:13:14:53 | Initializers i = ... | normal | -| Initializers.cs:14:13:14:53 | Initializers i = ... | Initializers.cs:14:13:14:53 | Initializers i = ... | normal | -| Initializers.cs:14:17:14:53 | object creation of type Initializers | Initializers.cs:14:38:14:53 | { ..., ... } | normal | -| Initializers.cs:14:34:14:35 | "" | Initializers.cs:14:34:14:35 | "" | normal | -| Initializers.cs:14:38:14:53 | { ..., ... } | Initializers.cs:14:38:14:53 | { ..., ... } | normal | -| Initializers.cs:14:40:14:44 | ... = ... | Initializers.cs:14:40:14:44 | ... = ... | normal | -| Initializers.cs:14:44:14:44 | 0 | Initializers.cs:14:44:14:44 | 0 | normal | -| Initializers.cs:14:47:14:51 | ... = ... | Initializers.cs:14:47:14:51 | ... = ... | normal | -| Initializers.cs:14:51:14:51 | 1 | Initializers.cs:14:51:14:51 | 1 | normal | -| Initializers.cs:15:9:15:64 | ... ...; | Initializers.cs:15:13:15:63 | Initializers[] iz = ... | normal | -| Initializers.cs:15:13:15:63 | Initializers[] iz = ... | Initializers.cs:15:13:15:63 | Initializers[] iz = ... | normal | -| Initializers.cs:15:18:15:63 | 2 | Initializers.cs:15:18:15:63 | 2 | normal | -| Initializers.cs:15:18:15:63 | array creation of type Initializers[] | Initializers.cs:15:37:15:63 | { ..., ... } | normal | -| Initializers.cs:15:37:15:63 | { ..., ... } | Initializers.cs:15:37:15:63 | { ..., ... } | normal | -| Initializers.cs:15:39:15:39 | access to local variable i | Initializers.cs:15:39:15:39 | access to local variable i | normal | -| Initializers.cs:15:42:15:61 | object creation of type Initializers | Initializers.cs:15:42:15:61 | object creation of type Initializers | normal | -| Initializers.cs:15:59:15:60 | "" | Initializers.cs:15:59:15:60 | "" | normal | -| Initializers.cs:18:16:18:20 | ... = ... | Initializers.cs:18:16:18:20 | ... = ... | normal | -| Initializers.cs:18:20:18:20 | 1 | Initializers.cs:18:20:18:20 | 1 | normal | -| Initializers.cs:20:11:20:23 | call to constructor Object | Initializers.cs:20:11:20:23 | call to constructor Object | normal | -| Initializers.cs:20:11:20:23 | call to method | Initializers.cs:20:11:20:23 | call to method | normal | -| Initializers.cs:20:11:20:23 | this access | Initializers.cs:20:11:20:23 | this access | normal | -| Initializers.cs:20:11:20:23 | {...} | Initializers.cs:20:11:20:23 | {...} | normal | -| Initializers.cs:22:23:22:23 | access to field F | Initializers.cs:22:23:22:23 | this access | normal | -| Initializers.cs:22:23:22:23 | this access | Initializers.cs:22:23:22:23 | this access | normal | -| Initializers.cs:22:23:22:27 | ... = ... | Initializers.cs:22:23:22:27 | ... = ... | normal | -| Initializers.cs:22:27:22:27 | 0 | Initializers.cs:22:27:22:27 | 0 | normal | -| Initializers.cs:23:23:23:23 | access to field G | Initializers.cs:23:23:23:23 | this access | normal | -| Initializers.cs:23:23:23:23 | this access | Initializers.cs:23:23:23:23 | this access | normal | -| Initializers.cs:23:23:23:27 | ... = ... | Initializers.cs:23:23:23:27 | ... = ... | normal | -| Initializers.cs:23:27:23:27 | 1 | Initializers.cs:23:27:23:27 | 1 | normal | -| Initializers.cs:28:13:28:13 | access to field H | Initializers.cs:28:13:28:13 | this access | normal | -| Initializers.cs:28:13:28:13 | this access | Initializers.cs:28:13:28:13 | this access | normal | -| Initializers.cs:28:13:28:17 | ... = ... | Initializers.cs:28:13:28:17 | ... = ... | normal | -| Initializers.cs:28:17:28:17 | 2 | Initializers.cs:28:17:28:17 | 2 | normal | -| Initializers.cs:31:9:31:11 | call to method | Initializers.cs:31:9:31:11 | call to method | normal | -| Initializers.cs:31:9:31:11 | this access | Initializers.cs:31:9:31:11 | this access | normal | -| Initializers.cs:31:17:31:20 | call to constructor NoConstructor | Initializers.cs:31:17:31:20 | call to constructor NoConstructor | normal | -| Initializers.cs:31:24:31:33 | {...} | Initializers.cs:31:26:31:30 | ... = ... | normal | -| Initializers.cs:31:26:31:26 | access to field I | Initializers.cs:31:26:31:26 | this access | normal | -| Initializers.cs:31:26:31:26 | this access | Initializers.cs:31:26:31:26 | this access | normal | -| Initializers.cs:31:26:31:30 | ... = ... | Initializers.cs:31:26:31:30 | ... = ... | normal | -| Initializers.cs:31:26:31:31 | ...; | Initializers.cs:31:26:31:30 | ... = ... | normal | -| Initializers.cs:31:30:31:30 | 3 | Initializers.cs:31:30:31:30 | 3 | normal | -| Initializers.cs:33:22:33:25 | call to constructor Sub | Initializers.cs:33:22:33:25 | call to constructor Sub | normal | -| Initializers.cs:33:29:33:38 | {...} | Initializers.cs:33:31:33:35 | ... = ... | normal | -| Initializers.cs:33:31:33:31 | access to field I | Initializers.cs:33:31:33:31 | this access | normal | -| Initializers.cs:33:31:33:31 | this access | Initializers.cs:33:31:33:31 | this access | normal | -| Initializers.cs:33:31:33:35 | ... = ... | Initializers.cs:33:31:33:35 | ... = ... | normal | -| Initializers.cs:33:31:33:36 | ...; | Initializers.cs:33:31:33:35 | ... = ... | normal | -| Initializers.cs:33:35:33:35 | access to parameter i | Initializers.cs:33:35:33:35 | access to parameter i | normal | -| Initializers.cs:35:9:35:11 | call to constructor NoConstructor | Initializers.cs:35:9:35:11 | call to constructor NoConstructor | normal | -| Initializers.cs:35:9:35:11 | call to method | Initializers.cs:35:9:35:11 | call to method | normal | -| Initializers.cs:35:9:35:11 | this access | Initializers.cs:35:9:35:11 | this access | normal | -| Initializers.cs:35:27:35:40 | {...} | Initializers.cs:35:29:35:37 | ... = ... | normal | -| Initializers.cs:35:29:35:29 | access to field I | Initializers.cs:35:29:35:29 | this access | normal | -| Initializers.cs:35:29:35:29 | this access | Initializers.cs:35:29:35:29 | this access | normal | -| Initializers.cs:35:29:35:37 | ... = ... | Initializers.cs:35:29:35:37 | ... = ... | normal | -| Initializers.cs:35:29:35:38 | ...; | Initializers.cs:35:29:35:37 | ... = ... | normal | -| Initializers.cs:35:33:35:33 | access to parameter i | Initializers.cs:35:33:35:33 | access to parameter i | normal | -| Initializers.cs:35:33:35:37 | ... + ... | Initializers.cs:35:33:35:37 | ... + ... | normal | -| Initializers.cs:35:37:35:37 | access to parameter j | Initializers.cs:35:37:35:37 | access to parameter j | normal | -| Initializers.cs:39:7:39:23 | call to constructor Object | Initializers.cs:39:7:39:23 | call to constructor Object | normal | -| Initializers.cs:39:7:39:23 | call to method | Initializers.cs:39:7:39:23 | call to method | normal | -| Initializers.cs:39:7:39:23 | this access | Initializers.cs:39:7:39:23 | this access | normal | -| Initializers.cs:39:7:39:23 | {...} | Initializers.cs:39:7:39:23 | {...} | normal | -| Initializers.cs:41:11:41:18 | call to constructor Object | Initializers.cs:41:11:41:18 | call to constructor Object | normal | -| Initializers.cs:41:11:41:18 | call to method | Initializers.cs:41:11:41:18 | call to method | normal | -| Initializers.cs:41:11:41:18 | this access | Initializers.cs:41:11:41:18 | this access | normal | -| Initializers.cs:41:11:41:18 | {...} | Initializers.cs:41:11:41:18 | {...} | normal | -| Initializers.cs:52:5:66:5 | {...} | Initializers.cs:57:13:65:9 | Compound compound = ... | normal | -| Initializers.cs:54:9:54:96 | ... ...; | Initializers.cs:54:13:54:95 | Dictionary dict = ... | normal | -| Initializers.cs:54:13:54:95 | Dictionary dict = ... | Initializers.cs:54:13:54:95 | Dictionary dict = ... | normal | -| Initializers.cs:54:20:54:95 | object creation of type Dictionary | Initializers.cs:54:50:54:95 | { ..., ... } | normal | -| Initializers.cs:54:50:54:95 | { ..., ... } | Initializers.cs:54:50:54:95 | { ..., ... } | normal | -| Initializers.cs:54:52:54:54 | access to indexer | Initializers.cs:54:53:54:53 | 0 | normal | -| Initializers.cs:54:52:54:63 | ... = ... | Initializers.cs:54:52:54:63 | ... = ... | normal | -| Initializers.cs:54:53:54:53 | 0 | Initializers.cs:54:53:54:53 | 0 | normal | -| Initializers.cs:54:58:54:63 | "Zero" | Initializers.cs:54:58:54:63 | "Zero" | normal | -| Initializers.cs:54:66:54:68 | access to indexer | Initializers.cs:54:67:54:67 | 1 | normal | -| Initializers.cs:54:66:54:76 | ... = ... | Initializers.cs:54:66:54:76 | ... = ... | normal | -| Initializers.cs:54:67:54:67 | 1 | Initializers.cs:54:67:54:67 | 1 | normal | -| Initializers.cs:54:72:54:76 | "One" | Initializers.cs:54:72:54:76 | "One" | normal | -| Initializers.cs:54:79:54:85 | access to indexer | Initializers.cs:54:80:54:84 | ... + ... | normal | -| Initializers.cs:54:79:54:93 | ... = ... | Initializers.cs:54:79:54:93 | ... = ... | normal | -| Initializers.cs:54:80:54:80 | access to parameter i | Initializers.cs:54:80:54:80 | access to parameter i | normal | -| Initializers.cs:54:80:54:84 | ... + ... | Initializers.cs:54:80:54:84 | ... + ... | normal | -| Initializers.cs:54:84:54:84 | 2 | Initializers.cs:54:84:54:84 | 2 | normal | -| Initializers.cs:54:89:54:93 | "Two" | Initializers.cs:54:89:54:93 | "Two" | normal | -| Initializers.cs:57:9:65:10 | ... ...; | Initializers.cs:57:13:65:9 | Compound compound = ... | normal | -| Initializers.cs:57:13:65:9 | Compound compound = ... | Initializers.cs:57:13:65:9 | Compound compound = ... | normal | -| Initializers.cs:57:24:65:9 | object creation of type Compound | Initializers.cs:58:9:65:9 | { ..., ... } | normal | -| Initializers.cs:58:9:65:9 | { ..., ... } | Initializers.cs:58:9:65:9 | { ..., ... } | normal | -| Initializers.cs:59:13:59:76 | ... = ... | Initializers.cs:59:13:59:76 | ... = ... | normal | -| Initializers.cs:59:31:59:76 | { ..., ... } | Initializers.cs:59:31:59:76 | { ..., ... } | normal | -| Initializers.cs:59:33:59:35 | access to indexer | Initializers.cs:59:34:59:34 | 0 | normal | -| Initializers.cs:59:33:59:44 | ... = ... | Initializers.cs:59:33:59:44 | ... = ... | normal | -| Initializers.cs:59:34:59:34 | 0 | Initializers.cs:59:34:59:34 | 0 | normal | -| Initializers.cs:59:39:59:44 | "Zero" | Initializers.cs:59:39:59:44 | "Zero" | normal | -| Initializers.cs:59:47:59:49 | access to indexer | Initializers.cs:59:48:59:48 | 1 | normal | -| Initializers.cs:59:47:59:57 | ... = ... | Initializers.cs:59:47:59:57 | ... = ... | normal | -| Initializers.cs:59:48:59:48 | 1 | Initializers.cs:59:48:59:48 | 1 | normal | -| Initializers.cs:59:53:59:57 | "One" | Initializers.cs:59:53:59:57 | "One" | normal | -| Initializers.cs:59:60:59:66 | access to indexer | Initializers.cs:59:61:59:65 | ... + ... | normal | -| Initializers.cs:59:60:59:74 | ... = ... | Initializers.cs:59:60:59:74 | ... = ... | normal | -| Initializers.cs:59:61:59:61 | access to parameter i | Initializers.cs:59:61:59:61 | access to parameter i | normal | -| Initializers.cs:59:61:59:65 | ... + ... | Initializers.cs:59:61:59:65 | ... + ... | normal | -| Initializers.cs:59:65:59:65 | 2 | Initializers.cs:59:65:59:65 | 2 | normal | -| Initializers.cs:59:70:59:74 | "Two" | Initializers.cs:59:70:59:74 | "Two" | normal | -| Initializers.cs:60:13:60:80 | ... = ... | Initializers.cs:60:13:60:80 | ... = ... | normal | -| Initializers.cs:60:34:60:80 | { ..., ... } | Initializers.cs:60:34:60:80 | { ..., ... } | normal | -| Initializers.cs:60:36:60:38 | access to indexer | Initializers.cs:60:37:60:37 | 3 | normal | -| Initializers.cs:60:36:60:48 | ... = ... | Initializers.cs:60:36:60:48 | ... = ... | normal | -| Initializers.cs:60:37:60:37 | 3 | Initializers.cs:60:37:60:37 | 3 | normal | -| Initializers.cs:60:42:60:48 | "Three" | Initializers.cs:60:42:60:48 | "Three" | normal | -| Initializers.cs:60:51:60:53 | access to indexer | Initializers.cs:60:52:60:52 | 2 | normal | -| Initializers.cs:60:51:60:61 | ... = ... | Initializers.cs:60:51:60:61 | ... = ... | normal | -| Initializers.cs:60:52:60:52 | 2 | Initializers.cs:60:52:60:52 | 2 | normal | -| Initializers.cs:60:57:60:61 | "Two" | Initializers.cs:60:57:60:61 | "Two" | normal | -| Initializers.cs:60:64:60:70 | access to indexer | Initializers.cs:60:65:60:69 | ... + ... | normal | -| Initializers.cs:60:64:60:78 | ... = ... | Initializers.cs:60:64:60:78 | ... = ... | normal | -| Initializers.cs:60:65:60:65 | access to parameter i | Initializers.cs:60:65:60:65 | access to parameter i | normal | -| Initializers.cs:60:65:60:69 | ... + ... | Initializers.cs:60:65:60:69 | ... + ... | normal | -| Initializers.cs:60:69:60:69 | 1 | Initializers.cs:60:69:60:69 | 1 | normal | -| Initializers.cs:60:74:60:78 | "One" | Initializers.cs:60:74:60:78 | "One" | normal | -| Initializers.cs:61:13:61:58 | ... = ... | Initializers.cs:61:13:61:58 | ... = ... | normal | -| Initializers.cs:61:26:61:58 | { ..., ... } | Initializers.cs:61:26:61:58 | { ..., ... } | normal | -| Initializers.cs:61:28:61:30 | access to array element | Initializers.cs:61:29:61:29 | 0 | normal | -| Initializers.cs:61:28:61:39 | ... = ... | Initializers.cs:61:28:61:39 | ... = ... | normal | -| Initializers.cs:61:29:61:29 | 0 | Initializers.cs:61:29:61:29 | 0 | normal | -| Initializers.cs:61:34:61:39 | "Zero" | Initializers.cs:61:34:61:39 | "Zero" | normal | -| Initializers.cs:61:42:61:48 | access to array element | Initializers.cs:61:43:61:47 | ... + ... | normal | -| Initializers.cs:61:42:61:56 | ... = ... | Initializers.cs:61:42:61:56 | ... = ... | normal | -| Initializers.cs:61:43:61:43 | access to parameter i | Initializers.cs:61:43:61:43 | access to parameter i | normal | -| Initializers.cs:61:43:61:47 | ... + ... | Initializers.cs:61:43:61:47 | ... + ... | normal | -| Initializers.cs:61:47:61:47 | 1 | Initializers.cs:61:47:61:47 | 1 | normal | -| Initializers.cs:61:52:61:56 | "One" | Initializers.cs:61:52:61:56 | "One" | normal | -| Initializers.cs:62:13:62:60 | ... = ... | Initializers.cs:62:13:62:60 | ... = ... | normal | -| Initializers.cs:62:27:62:60 | { ..., ... } | Initializers.cs:62:27:62:60 | { ..., ... } | normal | -| Initializers.cs:62:29:62:34 | access to array element | Initializers.cs:62:33:62:33 | 1 | normal | -| Initializers.cs:62:29:62:40 | ... = ... | Initializers.cs:62:29:62:40 | ... = ... | normal | -| Initializers.cs:62:30:62:30 | 0 | Initializers.cs:62:30:62:30 | 0 | normal | -| Initializers.cs:62:33:62:33 | 1 | Initializers.cs:62:33:62:33 | 1 | normal | -| Initializers.cs:62:38:62:40 | "i" | Initializers.cs:62:38:62:40 | "i" | normal | -| Initializers.cs:62:43:62:52 | access to array element | Initializers.cs:62:47:62:51 | ... + ... | normal | -| Initializers.cs:62:43:62:58 | ... = ... | Initializers.cs:62:43:62:58 | ... = ... | normal | -| Initializers.cs:62:44:62:44 | 1 | Initializers.cs:62:44:62:44 | 1 | normal | -| Initializers.cs:62:47:62:47 | access to parameter i | Initializers.cs:62:47:62:47 | access to parameter i | normal | -| Initializers.cs:62:47:62:51 | ... + ... | Initializers.cs:62:47:62:51 | ... + ... | normal | -| Initializers.cs:62:51:62:51 | 0 | Initializers.cs:62:51:62:51 | 0 | normal | -| Initializers.cs:62:56:62:58 | "1" | Initializers.cs:62:56:62:58 | "1" | normal | -| Initializers.cs:63:13:63:60 | ... = ... | Initializers.cs:63:13:63:60 | ... = ... | normal | -| Initializers.cs:63:29:63:60 | { ..., ... } | Initializers.cs:63:29:63:60 | { ..., ... } | normal | -| Initializers.cs:63:31:63:33 | access to array element | Initializers.cs:63:32:63:32 | 1 | normal | -| Initializers.cs:63:31:63:41 | ... = ... | Initializers.cs:63:31:63:41 | ... = ... | normal | -| Initializers.cs:63:32:63:32 | 1 | Initializers.cs:63:32:63:32 | 1 | normal | -| Initializers.cs:63:37:63:41 | "One" | Initializers.cs:63:37:63:41 | "One" | normal | -| Initializers.cs:63:44:63:50 | access to array element | Initializers.cs:63:45:63:49 | ... + ... | normal | -| Initializers.cs:63:44:63:58 | ... = ... | Initializers.cs:63:44:63:58 | ... = ... | normal | -| Initializers.cs:63:45:63:45 | access to parameter i | Initializers.cs:63:45:63:45 | access to parameter i | normal | -| Initializers.cs:63:45:63:49 | ... + ... | Initializers.cs:63:45:63:49 | ... + ... | normal | -| Initializers.cs:63:49:63:49 | 2 | Initializers.cs:63:49:63:49 | 2 | normal | -| Initializers.cs:63:54:63:58 | "Two" | Initializers.cs:63:54:63:58 | "Two" | normal | -| Initializers.cs:64:13:64:63 | ... = ... | Initializers.cs:64:13:64:63 | ... = ... | normal | -| Initializers.cs:64:30:64:63 | { ..., ... } | Initializers.cs:64:30:64:63 | { ..., ... } | normal | -| Initializers.cs:64:32:64:37 | access to array element | Initializers.cs:64:36:64:36 | 1 | normal | -| Initializers.cs:64:32:64:43 | ... = ... | Initializers.cs:64:32:64:43 | ... = ... | normal | -| Initializers.cs:64:33:64:33 | 0 | Initializers.cs:64:33:64:33 | 0 | normal | -| Initializers.cs:64:36:64:36 | 1 | Initializers.cs:64:36:64:36 | 1 | normal | -| Initializers.cs:64:41:64:43 | "i" | Initializers.cs:64:41:64:43 | "i" | normal | -| Initializers.cs:64:46:64:55 | access to array element | Initializers.cs:64:50:64:54 | ... + ... | normal | -| Initializers.cs:64:46:64:61 | ... = ... | Initializers.cs:64:46:64:61 | ... = ... | normal | -| Initializers.cs:64:47:64:47 | 1 | Initializers.cs:64:47:64:47 | 1 | normal | -| Initializers.cs:64:50:64:50 | access to parameter i | Initializers.cs:64:50:64:50 | access to parameter i | normal | -| Initializers.cs:64:50:64:54 | ... + ... | Initializers.cs:64:50:64:54 | ... + ... | normal | -| Initializers.cs:64:54:64:54 | 0 | Initializers.cs:64:54:64:54 | 0 | normal | -| Initializers.cs:64:59:64:61 | "1" | Initializers.cs:64:59:64:61 | "1" | normal | -| LoopUnrolling.cs:5:7:5:19 | call to constructor Object | LoopUnrolling.cs:5:7:5:19 | call to constructor Object | normal | -| LoopUnrolling.cs:5:7:5:19 | call to method | LoopUnrolling.cs:5:7:5:19 | call to method | normal | -| LoopUnrolling.cs:5:7:5:19 | this access | LoopUnrolling.cs:5:7:5:19 | this access | normal | -| LoopUnrolling.cs:5:7:5:19 | {...} | LoopUnrolling.cs:5:7:5:19 | {...} | normal | -| LoopUnrolling.cs:8:5:13:5 | {...} | LoopUnrolling.cs:10:13:10:19 | return ...; | return | -| LoopUnrolling.cs:8:5:13:5 | {...} | LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | empty | -| LoopUnrolling.cs:9:9:10:19 | if (...) ... | LoopUnrolling.cs:9:13:9:28 | ... == ... | false | -| LoopUnrolling.cs:9:9:10:19 | if (...) ... | LoopUnrolling.cs:10:13:10:19 | return ...; | return | -| LoopUnrolling.cs:9:13:9:16 | access to parameter args | LoopUnrolling.cs:9:13:9:16 | access to parameter args | normal | -| LoopUnrolling.cs:9:13:9:23 | access to property Length | LoopUnrolling.cs:9:13:9:23 | access to property Length | normal | -| LoopUnrolling.cs:9:13:9:28 | ... == ... | LoopUnrolling.cs:9:13:9:28 | ... == ... | false | -| LoopUnrolling.cs:9:13:9:28 | ... == ... | LoopUnrolling.cs:9:13:9:28 | ... == ... | true | -| LoopUnrolling.cs:9:28:9:28 | 0 | LoopUnrolling.cs:9:28:9:28 | 0 | normal | -| LoopUnrolling.cs:10:13:10:19 | return ...; | LoopUnrolling.cs:10:13:10:19 | return ...; | return | -| LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | empty | -| LoopUnrolling.cs:11:22:11:24 | String arg | LoopUnrolling.cs:11:22:11:24 | String arg | normal | -| LoopUnrolling.cs:11:29:11:32 | access to parameter args | LoopUnrolling.cs:11:29:11:32 | access to parameter args | normal | -| LoopUnrolling.cs:12:13:12:34 | call to method WriteLine | LoopUnrolling.cs:12:13:12:34 | call to method WriteLine | normal | -| LoopUnrolling.cs:12:13:12:35 | ...; | LoopUnrolling.cs:12:13:12:34 | call to method WriteLine | normal | -| LoopUnrolling.cs:12:31:12:33 | access to local variable arg | LoopUnrolling.cs:12:31:12:33 | access to local variable arg | normal | -| LoopUnrolling.cs:16:5:20:5 | {...} | LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | empty | -| LoopUnrolling.cs:17:9:17:48 | ... ...; | LoopUnrolling.cs:17:13:17:47 | String[] xs = ... | normal | -| LoopUnrolling.cs:17:13:17:47 | String[] xs = ... | LoopUnrolling.cs:17:13:17:47 | String[] xs = ... | normal | -| LoopUnrolling.cs:17:18:17:47 | 3 | LoopUnrolling.cs:17:18:17:47 | 3 | normal | -| LoopUnrolling.cs:17:18:17:47 | array creation of type String[] | LoopUnrolling.cs:17:31:17:47 | { ..., ... } | normal | -| LoopUnrolling.cs:17:31:17:47 | { ..., ... } | LoopUnrolling.cs:17:31:17:47 | { ..., ... } | normal | -| LoopUnrolling.cs:17:33:17:35 | "a" | LoopUnrolling.cs:17:33:17:35 | "a" | normal | -| LoopUnrolling.cs:17:38:17:40 | "b" | LoopUnrolling.cs:17:38:17:40 | "b" | normal | -| LoopUnrolling.cs:17:43:17:45 | "c" | LoopUnrolling.cs:17:43:17:45 | "c" | normal | -| LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | empty | -| LoopUnrolling.cs:18:22:18:22 | String x | LoopUnrolling.cs:18:22:18:22 | String x | normal | -| LoopUnrolling.cs:18:27:18:28 | access to local variable xs | LoopUnrolling.cs:18:27:18:28 | access to local variable xs | normal | -| LoopUnrolling.cs:19:13:19:32 | call to method WriteLine | LoopUnrolling.cs:19:13:19:32 | call to method WriteLine | normal | -| LoopUnrolling.cs:19:13:19:33 | ...; | LoopUnrolling.cs:19:13:19:32 | call to method WriteLine | normal | -| LoopUnrolling.cs:19:31:19:31 | access to local variable x | LoopUnrolling.cs:19:31:19:31 | access to local variable x | normal | -| LoopUnrolling.cs:23:5:27:5 | {...} | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | empty | -| LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | empty | -| LoopUnrolling.cs:24:22:24:24 | Char arg | LoopUnrolling.cs:24:22:24:24 | Char arg | normal | -| LoopUnrolling.cs:24:29:24:32 | access to parameter args | LoopUnrolling.cs:24:29:24:32 | access to parameter args | normal | -| LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | empty | -| LoopUnrolling.cs:25:26:25:29 | Char arg0 | LoopUnrolling.cs:25:26:25:29 | Char arg0 | normal | -| LoopUnrolling.cs:25:34:25:37 | access to parameter args | LoopUnrolling.cs:25:34:25:37 | access to parameter args | normal | -| LoopUnrolling.cs:26:17:26:39 | call to method WriteLine | LoopUnrolling.cs:26:17:26:39 | call to method WriteLine | normal | -| LoopUnrolling.cs:26:17:26:40 | ...; | LoopUnrolling.cs:26:17:26:39 | call to method WriteLine | normal | -| LoopUnrolling.cs:26:35:26:38 | access to local variable arg0 | LoopUnrolling.cs:26:35:26:38 | access to local variable arg0 | normal | -| LoopUnrolling.cs:30:5:34:5 | {...} | LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | empty | -| LoopUnrolling.cs:31:9:31:31 | ... ...; | LoopUnrolling.cs:31:13:31:30 | String[] xs = ... | normal | -| LoopUnrolling.cs:31:13:31:30 | String[] xs = ... | LoopUnrolling.cs:31:13:31:30 | String[] xs = ... | normal | -| LoopUnrolling.cs:31:18:31:30 | array creation of type String[] | LoopUnrolling.cs:31:18:31:30 | array creation of type String[] | normal | -| LoopUnrolling.cs:31:29:31:29 | 0 | LoopUnrolling.cs:31:29:31:29 | 0 | normal | -| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | empty | -| LoopUnrolling.cs:32:22:32:22 | String x | LoopUnrolling.cs:32:22:32:22 | String x | normal | -| LoopUnrolling.cs:32:27:32:28 | access to local variable xs | LoopUnrolling.cs:32:27:32:28 | access to local variable xs | normal | -| LoopUnrolling.cs:33:13:33:32 | call to method WriteLine | LoopUnrolling.cs:33:13:33:32 | call to method WriteLine | normal | -| LoopUnrolling.cs:33:13:33:33 | ...; | LoopUnrolling.cs:33:13:33:32 | call to method WriteLine | normal | -| LoopUnrolling.cs:33:31:33:31 | access to local variable x | LoopUnrolling.cs:33:31:33:31 | access to local variable x | normal | -| LoopUnrolling.cs:37:5:43:5 | {...} | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | empty | -| LoopUnrolling.cs:38:9:38:48 | ... ...; | LoopUnrolling.cs:38:13:38:47 | String[] xs = ... | normal | -| LoopUnrolling.cs:38:13:38:47 | String[] xs = ... | LoopUnrolling.cs:38:13:38:47 | String[] xs = ... | normal | -| LoopUnrolling.cs:38:18:38:47 | 3 | LoopUnrolling.cs:38:18:38:47 | 3 | normal | -| LoopUnrolling.cs:38:18:38:47 | array creation of type String[] | LoopUnrolling.cs:38:31:38:47 | { ..., ... } | normal | -| LoopUnrolling.cs:38:31:38:47 | { ..., ... } | LoopUnrolling.cs:38:31:38:47 | { ..., ... } | normal | -| LoopUnrolling.cs:38:33:38:35 | "a" | LoopUnrolling.cs:38:33:38:35 | "a" | normal | -| LoopUnrolling.cs:38:38:38:40 | "b" | LoopUnrolling.cs:38:38:38:40 | "b" | normal | -| LoopUnrolling.cs:38:43:38:45 | "c" | LoopUnrolling.cs:38:43:38:45 | "c" | normal | -| LoopUnrolling.cs:39:9:39:48 | ... ...; | LoopUnrolling.cs:39:13:39:47 | String[] ys = ... | normal | -| LoopUnrolling.cs:39:13:39:47 | String[] ys = ... | LoopUnrolling.cs:39:13:39:47 | String[] ys = ... | normal | -| LoopUnrolling.cs:39:18:39:47 | 3 | LoopUnrolling.cs:39:18:39:47 | 3 | normal | -| LoopUnrolling.cs:39:18:39:47 | array creation of type String[] | LoopUnrolling.cs:39:31:39:47 | { ..., ... } | normal | -| LoopUnrolling.cs:39:31:39:47 | { ..., ... } | LoopUnrolling.cs:39:31:39:47 | { ..., ... } | normal | -| LoopUnrolling.cs:39:33:39:35 | "0" | LoopUnrolling.cs:39:33:39:35 | "0" | normal | -| LoopUnrolling.cs:39:38:39:40 | "1" | LoopUnrolling.cs:39:38:39:40 | "1" | normal | -| LoopUnrolling.cs:39:43:39:45 | "2" | LoopUnrolling.cs:39:43:39:45 | "2" | normal | -| LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | empty | -| LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:40:22:40:22 | String x | normal | -| LoopUnrolling.cs:40:27:40:28 | access to local variable xs | LoopUnrolling.cs:40:27:40:28 | access to local variable xs | normal | -| LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | empty | -| LoopUnrolling.cs:41:26:41:26 | String y | LoopUnrolling.cs:41:26:41:26 | String y | normal | -| LoopUnrolling.cs:41:31:41:32 | access to local variable ys | LoopUnrolling.cs:41:31:41:32 | access to local variable ys | normal | -| LoopUnrolling.cs:42:17:42:40 | call to method WriteLine | LoopUnrolling.cs:42:17:42:40 | call to method WriteLine | normal | -| LoopUnrolling.cs:42:17:42:41 | ...; | LoopUnrolling.cs:42:17:42:40 | call to method WriteLine | normal | -| LoopUnrolling.cs:42:35:42:35 | access to local variable x | LoopUnrolling.cs:42:35:42:35 | access to local variable x | normal | -| LoopUnrolling.cs:42:35:42:39 | ... + ... | LoopUnrolling.cs:42:35:42:39 | ... + ... | normal | -| LoopUnrolling.cs:42:39:42:39 | access to local variable y | LoopUnrolling.cs:42:39:42:39 | access to local variable y | normal | -| LoopUnrolling.cs:46:5:53:5 | {...} | LoopUnrolling.cs:48:9:52:9 | foreach (... ... in ...) ... | empty | -| LoopUnrolling.cs:46:5:53:5 | {...} | LoopUnrolling.cs:51:13:51:23 | goto ...; | goto(Label) | -| LoopUnrolling.cs:47:9:47:48 | ... ...; | LoopUnrolling.cs:47:13:47:47 | String[] xs = ... | normal | -| LoopUnrolling.cs:47:13:47:47 | String[] xs = ... | LoopUnrolling.cs:47:13:47:47 | String[] xs = ... | normal | -| LoopUnrolling.cs:47:18:47:47 | 3 | LoopUnrolling.cs:47:18:47:47 | 3 | normal | -| LoopUnrolling.cs:47:18:47:47 | array creation of type String[] | LoopUnrolling.cs:47:31:47:47 | { ..., ... } | normal | -| LoopUnrolling.cs:47:31:47:47 | { ..., ... } | LoopUnrolling.cs:47:31:47:47 | { ..., ... } | normal | -| LoopUnrolling.cs:47:33:47:35 | "a" | LoopUnrolling.cs:47:33:47:35 | "a" | normal | -| LoopUnrolling.cs:47:38:47:40 | "b" | LoopUnrolling.cs:47:38:47:40 | "b" | normal | -| LoopUnrolling.cs:47:43:47:45 | "c" | LoopUnrolling.cs:47:43:47:45 | "c" | normal | -| LoopUnrolling.cs:48:9:52:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:48:9:52:9 | foreach (... ... in ...) ... | empty | -| LoopUnrolling.cs:48:9:52:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:51:13:51:23 | goto ...; | goto(Label) | -| LoopUnrolling.cs:48:22:48:22 | String x | LoopUnrolling.cs:48:22:48:22 | String x | normal | -| LoopUnrolling.cs:48:27:48:28 | access to local variable xs | LoopUnrolling.cs:48:27:48:28 | access to local variable xs | normal | -| LoopUnrolling.cs:49:9:52:9 | {...} | LoopUnrolling.cs:51:13:51:23 | goto ...; | goto(Label) | -| LoopUnrolling.cs:50:9:50:13 | Label: | LoopUnrolling.cs:50:9:50:13 | Label: | normal | -| LoopUnrolling.cs:50:16:50:35 | call to method WriteLine | LoopUnrolling.cs:50:16:50:35 | call to method WriteLine | normal | -| LoopUnrolling.cs:50:16:50:36 | ...; | LoopUnrolling.cs:50:16:50:35 | call to method WriteLine | normal | -| LoopUnrolling.cs:50:34:50:34 | access to local variable x | LoopUnrolling.cs:50:34:50:34 | access to local variable x | normal | -| LoopUnrolling.cs:51:13:51:23 | goto ...; | LoopUnrolling.cs:51:13:51:23 | goto ...; | goto(Label) | -| LoopUnrolling.cs:56:5:65:5 | {...} | LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | empty | -| LoopUnrolling.cs:57:9:57:48 | ... ...; | LoopUnrolling.cs:57:13:57:47 | String[] xs = ... | normal | -| LoopUnrolling.cs:57:13:57:47 | String[] xs = ... | LoopUnrolling.cs:57:13:57:47 | String[] xs = ... | normal | -| LoopUnrolling.cs:57:18:57:47 | 3 | LoopUnrolling.cs:57:18:57:47 | 3 | normal | -| LoopUnrolling.cs:57:18:57:47 | array creation of type String[] | LoopUnrolling.cs:57:31:57:47 | { ..., ... } | normal | -| LoopUnrolling.cs:57:31:57:47 | { ..., ... } | LoopUnrolling.cs:57:31:57:47 | { ..., ... } | normal | -| LoopUnrolling.cs:57:33:57:35 | "a" | LoopUnrolling.cs:57:33:57:35 | "a" | normal | -| LoopUnrolling.cs:57:38:57:40 | "b" | LoopUnrolling.cs:57:38:57:40 | "b" | normal | -| LoopUnrolling.cs:57:43:57:45 | "c" | LoopUnrolling.cs:57:43:57:45 | "c" | normal | -| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | empty | -| LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:58:22:58:22 | String x | normal | -| LoopUnrolling.cs:58:27:58:28 | access to local variable xs | LoopUnrolling.cs:58:27:58:28 | access to local variable xs | normal | -| LoopUnrolling.cs:59:9:64:9 | {...} | LoopUnrolling.cs:62:17:62:17 | access to parameter b | false | -| LoopUnrolling.cs:59:9:64:9 | {...} | LoopUnrolling.cs:63:17:63:36 | call to method WriteLine | normal | -| LoopUnrolling.cs:60:13:61:37 | if (...) ... | LoopUnrolling.cs:60:17:60:17 | access to parameter b | false | -| LoopUnrolling.cs:60:13:61:37 | if (...) ... | LoopUnrolling.cs:61:17:61:36 | call to method WriteLine | normal | -| LoopUnrolling.cs:60:17:60:17 | access to parameter b | LoopUnrolling.cs:60:17:60:17 | access to parameter b | false | -| LoopUnrolling.cs:60:17:60:17 | access to parameter b | LoopUnrolling.cs:60:17:60:17 | access to parameter b | true | -| LoopUnrolling.cs:61:17:61:36 | call to method WriteLine | LoopUnrolling.cs:61:17:61:36 | call to method WriteLine | normal | -| LoopUnrolling.cs:61:17:61:37 | ...; | LoopUnrolling.cs:61:17:61:36 | call to method WriteLine | normal | -| LoopUnrolling.cs:61:35:61:35 | access to local variable x | LoopUnrolling.cs:61:35:61:35 | access to local variable x | normal | -| LoopUnrolling.cs:62:13:63:37 | if (...) ... | LoopUnrolling.cs:62:17:62:17 | access to parameter b | false | -| LoopUnrolling.cs:62:13:63:37 | if (...) ... | LoopUnrolling.cs:63:17:63:36 | call to method WriteLine | normal | -| LoopUnrolling.cs:62:17:62:17 | access to parameter b | LoopUnrolling.cs:62:17:62:17 | access to parameter b | false | -| LoopUnrolling.cs:62:17:62:17 | access to parameter b | LoopUnrolling.cs:62:17:62:17 | access to parameter b | true | -| LoopUnrolling.cs:63:17:63:36 | call to method WriteLine | LoopUnrolling.cs:63:17:63:36 | call to method WriteLine | normal | -| LoopUnrolling.cs:63:17:63:37 | ...; | LoopUnrolling.cs:63:17:63:36 | call to method WriteLine | normal | -| LoopUnrolling.cs:63:35:63:35 | access to local variable x | LoopUnrolling.cs:63:35:63:35 | access to local variable x | normal | -| LoopUnrolling.cs:68:5:74:5 | {...} | LoopUnrolling.cs:70:13:70:19 | return ...; | return | -| LoopUnrolling.cs:68:5:74:5 | {...} | LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | empty | -| LoopUnrolling.cs:69:9:70:19 | if (...) ... | LoopUnrolling.cs:69:13:69:23 | !... | false | -| LoopUnrolling.cs:69:9:70:19 | if (...) ... | LoopUnrolling.cs:70:13:70:19 | return ...; | return | -| LoopUnrolling.cs:69:13:69:23 | !... | LoopUnrolling.cs:69:13:69:23 | !... | false | -| LoopUnrolling.cs:69:13:69:23 | !... | LoopUnrolling.cs:69:13:69:23 | !... | true | -| LoopUnrolling.cs:69:14:69:17 | access to parameter args | LoopUnrolling.cs:69:14:69:17 | access to parameter args | normal | -| LoopUnrolling.cs:69:14:69:23 | call to method Any | LoopUnrolling.cs:69:14:69:23 | call to method Any | false | -| LoopUnrolling.cs:69:14:69:23 | call to method Any | LoopUnrolling.cs:69:14:69:23 | call to method Any | true | -| LoopUnrolling.cs:70:13:70:19 | return ...; | LoopUnrolling.cs:70:13:70:19 | return ...; | return | -| LoopUnrolling.cs:71:9:71:12 | access to parameter args | LoopUnrolling.cs:71:9:71:12 | access to parameter args | normal | -| LoopUnrolling.cs:71:9:71:20 | call to method Clear | LoopUnrolling.cs:71:9:71:20 | call to method Clear | normal | -| LoopUnrolling.cs:71:9:71:21 | ...; | LoopUnrolling.cs:71:9:71:20 | call to method Clear | normal | -| LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | empty | -| LoopUnrolling.cs:72:22:72:24 | String arg | LoopUnrolling.cs:72:22:72:24 | String arg | normal | -| LoopUnrolling.cs:72:29:72:32 | access to parameter args | LoopUnrolling.cs:72:29:72:32 | access to parameter args | normal | -| LoopUnrolling.cs:73:13:73:34 | call to method WriteLine | LoopUnrolling.cs:73:13:73:34 | call to method WriteLine | normal | -| LoopUnrolling.cs:73:13:73:35 | ...; | LoopUnrolling.cs:73:13:73:34 | call to method WriteLine | normal | -| LoopUnrolling.cs:73:31:73:33 | access to local variable arg | LoopUnrolling.cs:73:31:73:33 | access to local variable arg | normal | -| LoopUnrolling.cs:77:5:83:5 | {...} | LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | empty | -| LoopUnrolling.cs:78:9:78:34 | ... ...; | LoopUnrolling.cs:78:13:78:33 | String[,] xs = ... | normal | -| LoopUnrolling.cs:78:13:78:33 | String[,] xs = ... | LoopUnrolling.cs:78:13:78:33 | String[,] xs = ... | normal | -| LoopUnrolling.cs:78:18:78:33 | array creation of type String[,] | LoopUnrolling.cs:78:18:78:33 | array creation of type String[,] | normal | -| LoopUnrolling.cs:78:29:78:29 | 2 | LoopUnrolling.cs:78:29:78:29 | 2 | normal | -| LoopUnrolling.cs:78:32:78:32 | 0 | LoopUnrolling.cs:78:32:78:32 | 0 | normal | -| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | empty | -| LoopUnrolling.cs:79:22:79:22 | String x | LoopUnrolling.cs:79:22:79:22 | String x | normal | -| LoopUnrolling.cs:79:27:79:28 | access to local variable xs | LoopUnrolling.cs:79:27:79:28 | access to local variable xs | normal | -| LoopUnrolling.cs:80:9:82:9 | {...} | LoopUnrolling.cs:81:13:81:32 | call to method WriteLine | normal | -| LoopUnrolling.cs:81:13:81:32 | call to method WriteLine | LoopUnrolling.cs:81:13:81:32 | call to method WriteLine | normal | -| LoopUnrolling.cs:81:13:81:33 | ...; | LoopUnrolling.cs:81:13:81:32 | call to method WriteLine | normal | -| LoopUnrolling.cs:81:31:81:31 | access to local variable x | LoopUnrolling.cs:81:31:81:31 | access to local variable x | normal | -| LoopUnrolling.cs:86:5:92:5 | {...} | LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | empty | -| LoopUnrolling.cs:87:9:87:34 | ... ...; | LoopUnrolling.cs:87:13:87:33 | String[,] xs = ... | normal | -| LoopUnrolling.cs:87:13:87:33 | String[,] xs = ... | LoopUnrolling.cs:87:13:87:33 | String[,] xs = ... | normal | -| LoopUnrolling.cs:87:18:87:33 | array creation of type String[,] | LoopUnrolling.cs:87:18:87:33 | array creation of type String[,] | normal | -| LoopUnrolling.cs:87:29:87:29 | 0 | LoopUnrolling.cs:87:29:87:29 | 0 | normal | -| LoopUnrolling.cs:87:32:87:32 | 2 | LoopUnrolling.cs:87:32:87:32 | 2 | normal | -| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | empty | -| LoopUnrolling.cs:88:22:88:22 | String x | LoopUnrolling.cs:88:22:88:22 | String x | normal | -| LoopUnrolling.cs:88:27:88:28 | access to local variable xs | LoopUnrolling.cs:88:27:88:28 | access to local variable xs | normal | -| LoopUnrolling.cs:89:9:91:9 | {...} | LoopUnrolling.cs:90:13:90:32 | call to method WriteLine | normal | -| LoopUnrolling.cs:90:13:90:32 | call to method WriteLine | LoopUnrolling.cs:90:13:90:32 | call to method WriteLine | normal | -| LoopUnrolling.cs:90:13:90:33 | ...; | LoopUnrolling.cs:90:13:90:32 | call to method WriteLine | normal | -| LoopUnrolling.cs:90:31:90:31 | access to local variable x | LoopUnrolling.cs:90:31:90:31 | access to local variable x | normal | -| LoopUnrolling.cs:95:5:101:5 | {...} | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | empty | -| LoopUnrolling.cs:96:9:96:34 | ... ...; | LoopUnrolling.cs:96:13:96:33 | String[,] xs = ... | normal | -| LoopUnrolling.cs:96:13:96:33 | String[,] xs = ... | LoopUnrolling.cs:96:13:96:33 | String[,] xs = ... | normal | -| LoopUnrolling.cs:96:18:96:33 | array creation of type String[,] | LoopUnrolling.cs:96:18:96:33 | array creation of type String[,] | normal | -| LoopUnrolling.cs:96:29:96:29 | 2 | LoopUnrolling.cs:96:29:96:29 | 2 | normal | -| LoopUnrolling.cs:96:32:96:32 | 2 | LoopUnrolling.cs:96:32:96:32 | 2 | normal | -| LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | empty | -| LoopUnrolling.cs:97:22:97:22 | String x | LoopUnrolling.cs:97:22:97:22 | String x | normal | -| LoopUnrolling.cs:97:27:97:28 | access to local variable xs | LoopUnrolling.cs:97:27:97:28 | access to local variable xs | normal | -| LoopUnrolling.cs:98:9:100:9 | {...} | LoopUnrolling.cs:99:13:99:32 | call to method WriteLine | normal | -| LoopUnrolling.cs:99:13:99:32 | call to method WriteLine | LoopUnrolling.cs:99:13:99:32 | call to method WriteLine | normal | -| LoopUnrolling.cs:99:13:99:33 | ...; | LoopUnrolling.cs:99:13:99:32 | call to method WriteLine | normal | -| LoopUnrolling.cs:99:31:99:31 | access to local variable x | LoopUnrolling.cs:99:31:99:31 | access to local variable x | normal | -| MultiImplementationA.cs:4:7:4:8 | call to constructor Object | MultiImplementationA.cs:4:7:4:8 | call to constructor Object | normal | -| MultiImplementationA.cs:4:7:4:8 | call to method | MultiImplementationA.cs:4:7:4:8 | call to method | normal | -| MultiImplementationA.cs:4:7:4:8 | this access | MultiImplementationA.cs:4:7:4:8 | this access | normal | -| MultiImplementationA.cs:4:7:4:8 | {...} | MultiImplementationA.cs:4:7:4:8 | {...} | normal | -| MultiImplementationA.cs:6:22:6:31 | throw ... | MultiImplementationA.cs:6:22:6:31 | throw ... | throw(NullReferenceException) | -| MultiImplementationA.cs:6:28:6:31 | null | MultiImplementationA.cs:6:28:6:31 | null | normal | -| MultiImplementationA.cs:7:25:7:39 | {...} | MultiImplementationA.cs:7:27:7:37 | throw ...; | throw(NullReferenceException) | -| MultiImplementationA.cs:7:27:7:37 | throw ...; | MultiImplementationA.cs:7:27:7:37 | throw ...; | throw(NullReferenceException) | -| MultiImplementationA.cs:7:33:7:36 | null | MultiImplementationA.cs:7:33:7:36 | null | normal | -| MultiImplementationA.cs:7:45:7:59 | {...} | MultiImplementationA.cs:7:47:7:57 | throw ...; | throw(NullReferenceException) | -| MultiImplementationA.cs:7:47:7:57 | throw ...; | MultiImplementationA.cs:7:47:7:57 | throw ...; | throw(NullReferenceException) | -| MultiImplementationA.cs:7:53:7:56 | null | MultiImplementationA.cs:7:53:7:56 | null | normal | -| MultiImplementationA.cs:8:23:8:32 | throw ... | MultiImplementationA.cs:8:23:8:32 | throw ... | throw(NullReferenceException) | -| MultiImplementationA.cs:8:29:8:32 | null | MultiImplementationA.cs:8:29:8:32 | null | normal | -| MultiImplementationA.cs:13:16:13:16 | access to field F | MultiImplementationA.cs:13:16:13:16 | this access | normal | -| MultiImplementationA.cs:13:16:13:16 | this access | MultiImplementationA.cs:13:16:13:16 | this access | normal | -| MultiImplementationA.cs:13:16:13:20 | ... = ... | MultiImplementationA.cs:13:16:13:20 | ... = ... | normal | -| MultiImplementationA.cs:13:20:13:20 | 0 | MultiImplementationA.cs:13:20:13:20 | 0 | normal | -| MultiImplementationA.cs:14:31:14:31 | access to parameter i | MultiImplementationA.cs:14:31:14:31 | access to parameter i | normal | -| MultiImplementationA.cs:15:40:15:52 | {...} | MultiImplementationA.cs:15:42:15:50 | return ...; | return | -| MultiImplementationA.cs:15:42:15:50 | return ...; | MultiImplementationA.cs:15:42:15:50 | return ...; | return | -| MultiImplementationA.cs:15:49:15:49 | access to parameter s | MultiImplementationA.cs:15:49:15:49 | access to parameter s | normal | -| MultiImplementationA.cs:15:58:15:60 | {...} | MultiImplementationA.cs:15:58:15:60 | {...} | normal | -| MultiImplementationA.cs:16:28:16:28 | 0 | MultiImplementationA.cs:16:28:16:28 | 0 | normal | -| MultiImplementationA.cs:17:5:19:5 | {...} | MultiImplementationA.cs:18:9:18:22 | M2(...) | normal | -| MultiImplementationA.cs:18:9:18:22 | M2(...) | MultiImplementationA.cs:18:9:18:22 | M2(...) | normal | -| MultiImplementationA.cs:18:21:18:21 | 0 | MultiImplementationA.cs:18:21:18:21 | 0 | normal | -| MultiImplementationA.cs:20:12:20:13 | call to constructor Object | MultiImplementationA.cs:20:12:20:13 | call to constructor Object | normal | -| MultiImplementationA.cs:20:12:20:13 | call to method | MultiImplementationA.cs:20:12:20:13 | call to method | normal | -| MultiImplementationA.cs:20:12:20:13 | this access | MultiImplementationA.cs:20:12:20:13 | this access | normal | -| MultiImplementationA.cs:20:22:20:31 | {...} | MultiImplementationA.cs:20:24:20:28 | ... = ... | normal | -| MultiImplementationA.cs:20:24:20:24 | access to field F | MultiImplementationA.cs:20:24:20:24 | this access | normal | -| MultiImplementationA.cs:20:24:20:24 | this access | MultiImplementationA.cs:20:24:20:24 | this access | normal | -| MultiImplementationA.cs:20:24:20:28 | ... = ... | MultiImplementationA.cs:20:24:20:28 | ... = ... | normal | -| MultiImplementationA.cs:20:24:20:29 | ...; | MultiImplementationA.cs:20:24:20:28 | ... = ... | normal | -| MultiImplementationA.cs:20:28:20:28 | access to parameter i | MultiImplementationA.cs:20:28:20:28 | access to parameter i | normal | -| MultiImplementationA.cs:21:19:21:22 | call to constructor C2 | MultiImplementationA.cs:21:19:21:22 | call to constructor C2 | normal | -| MultiImplementationA.cs:21:24:21:24 | 0 | MultiImplementationA.cs:21:24:21:24 | 0 | normal | -| MultiImplementationA.cs:21:27:21:29 | {...} | MultiImplementationA.cs:21:27:21:29 | {...} | normal | -| MultiImplementationA.cs:22:11:22:13 | {...} | MultiImplementationA.cs:22:11:22:13 | {...} | normal | -| MultiImplementationA.cs:23:50:23:53 | null | MultiImplementationA.cs:23:50:23:53 | null | normal | -| MultiImplementationA.cs:24:16:24:16 | access to property P | MultiImplementationA.cs:24:16:24:16 | this access | normal | -| MultiImplementationA.cs:24:16:24:16 | this access | MultiImplementationA.cs:24:16:24:16 | this access | normal | -| MultiImplementationA.cs:24:32:24:34 | ... = ... | MultiImplementationA.cs:24:32:24:34 | ... = ... | normal | -| MultiImplementationA.cs:24:34:24:34 | 0 | MultiImplementationA.cs:24:34:24:34 | 0 | normal | -| MultiImplementationA.cs:28:7:28:8 | call to constructor Object | MultiImplementationA.cs:28:7:28:8 | call to constructor Object | normal | -| MultiImplementationA.cs:28:7:28:8 | call to method | MultiImplementationA.cs:28:7:28:8 | call to method | normal | -| MultiImplementationA.cs:28:7:28:8 | this access | MultiImplementationA.cs:28:7:28:8 | this access | normal | -| MultiImplementationA.cs:28:7:28:8 | {...} | MultiImplementationA.cs:28:7:28:8 | {...} | normal | -| MultiImplementationA.cs:30:28:30:37 | throw ... | MultiImplementationA.cs:30:28:30:37 | throw ... | throw(NullReferenceException) | -| MultiImplementationA.cs:30:34:30:37 | null | MultiImplementationA.cs:30:34:30:37 | null | normal | -| MultiImplementationA.cs:34:15:34:16 | call to constructor Object | MultiImplementationA.cs:34:15:34:16 | call to constructor Object | normal | -| MultiImplementationA.cs:34:15:34:16 | call to method | MultiImplementationA.cs:34:15:34:16 | call to method | normal | -| MultiImplementationA.cs:34:15:34:16 | this access | MultiImplementationA.cs:34:15:34:16 | this access | normal | -| MultiImplementationA.cs:34:15:34:16 | {...} | MultiImplementationA.cs:34:15:34:16 | {...} | normal | -| MultiImplementationA.cs:36:14:36:28 | {...} | MultiImplementationA.cs:36:16:36:26 | throw ...; | throw(NullReferenceException) | -| MultiImplementationA.cs:36:16:36:26 | throw ...; | MultiImplementationA.cs:36:16:36:26 | throw ...; | throw(NullReferenceException) | -| MultiImplementationA.cs:36:22:36:25 | null | MultiImplementationA.cs:36:22:36:25 | null | normal | -| MultiImplementationA.cs:37:14:37:28 | {...} | MultiImplementationA.cs:37:16:37:26 | throw ...; | throw(NullReferenceException) | -| MultiImplementationA.cs:37:16:37:26 | throw ...; | MultiImplementationA.cs:37:16:37:26 | throw ...; | throw(NullReferenceException) | -| MultiImplementationA.cs:37:22:37:25 | null | MultiImplementationA.cs:37:22:37:25 | null | normal | -| MultiImplementationB.cs:1:7:1:8 | call to constructor Object | MultiImplementationB.cs:1:7:1:8 | call to constructor Object | normal | -| MultiImplementationB.cs:1:7:1:8 | call to method | MultiImplementationB.cs:1:7:1:8 | call to method | normal | -| MultiImplementationB.cs:1:7:1:8 | this access | MultiImplementationB.cs:1:7:1:8 | this access | normal | -| MultiImplementationB.cs:1:7:1:8 | {...} | MultiImplementationB.cs:1:7:1:8 | {...} | normal | -| MultiImplementationB.cs:3:22:3:22 | 0 | MultiImplementationB.cs:3:22:3:22 | 0 | normal | -| MultiImplementationB.cs:4:25:4:37 | {...} | MultiImplementationB.cs:4:27:4:35 | return ...; | return | -| MultiImplementationB.cs:4:27:4:35 | return ...; | MultiImplementationB.cs:4:27:4:35 | return ...; | return | -| MultiImplementationB.cs:4:34:4:34 | 1 | MultiImplementationB.cs:4:34:4:34 | 1 | normal | -| MultiImplementationB.cs:4:43:4:45 | {...} | MultiImplementationB.cs:4:43:4:45 | {...} | normal | -| MultiImplementationB.cs:5:23:5:23 | 2 | MultiImplementationB.cs:5:23:5:23 | 2 | normal | -| MultiImplementationB.cs:11:16:11:16 | access to field F | MultiImplementationB.cs:11:16:11:16 | this access | normal | -| MultiImplementationB.cs:11:16:11:16 | this access | MultiImplementationB.cs:11:16:11:16 | this access | normal | -| MultiImplementationB.cs:11:16:11:20 | ... = ... | MultiImplementationB.cs:11:16:11:20 | ... = ... | normal | -| MultiImplementationB.cs:11:20:11:20 | 1 | MultiImplementationB.cs:11:20:11:20 | 1 | normal | -| MultiImplementationB.cs:12:31:12:40 | throw ... | MultiImplementationB.cs:12:31:12:40 | throw ... | throw(NullReferenceException) | -| MultiImplementationB.cs:12:37:12:40 | null | MultiImplementationB.cs:12:37:12:40 | null | normal | -| MultiImplementationB.cs:13:40:13:54 | {...} | MultiImplementationB.cs:13:42:13:52 | throw ...; | throw(NullReferenceException) | -| MultiImplementationB.cs:13:42:13:52 | throw ...; | MultiImplementationB.cs:13:42:13:52 | throw ...; | throw(NullReferenceException) | -| MultiImplementationB.cs:13:48:13:51 | null | MultiImplementationB.cs:13:48:13:51 | null | normal | -| MultiImplementationB.cs:13:60:13:62 | {...} | MultiImplementationB.cs:13:60:13:62 | {...} | normal | -| MultiImplementationB.cs:14:28:14:28 | 1 | MultiImplementationB.cs:14:28:14:28 | 1 | normal | -| MultiImplementationB.cs:15:5:17:5 | {...} | MultiImplementationB.cs:16:9:16:31 | M2(...) | normal | -| MultiImplementationB.cs:16:9:16:31 | M2(...) | MultiImplementationB.cs:16:9:16:31 | M2(...) | normal | -| MultiImplementationB.cs:16:21:16:30 | throw ... | MultiImplementationB.cs:16:21:16:30 | throw ... | throw(NullReferenceException) | -| MultiImplementationB.cs:16:27:16:30 | null | MultiImplementationB.cs:16:27:16:30 | null | normal | -| MultiImplementationB.cs:18:12:18:13 | call to constructor Object | MultiImplementationB.cs:18:12:18:13 | call to constructor Object | normal | -| MultiImplementationB.cs:18:12:18:13 | call to method | MultiImplementationB.cs:18:12:18:13 | call to method | normal | -| MultiImplementationB.cs:18:12:18:13 | this access | MultiImplementationB.cs:18:12:18:13 | this access | normal | -| MultiImplementationB.cs:18:22:18:36 | {...} | MultiImplementationB.cs:18:24:18:34 | throw ...; | throw(NullReferenceException) | -| MultiImplementationB.cs:18:24:18:34 | throw ...; | MultiImplementationB.cs:18:24:18:34 | throw ...; | throw(NullReferenceException) | -| MultiImplementationB.cs:18:30:18:33 | null | MultiImplementationB.cs:18:30:18:33 | null | normal | -| MultiImplementationB.cs:19:19:19:22 | call to constructor C2 | MultiImplementationB.cs:19:19:19:22 | call to constructor C2 | normal | -| MultiImplementationB.cs:19:24:19:24 | 1 | MultiImplementationB.cs:19:24:19:24 | 1 | normal | -| MultiImplementationB.cs:19:27:19:29 | {...} | MultiImplementationB.cs:19:27:19:29 | {...} | normal | -| MultiImplementationB.cs:20:11:20:25 | {...} | MultiImplementationB.cs:20:13:20:23 | throw ...; | throw(NullReferenceException) | -| MultiImplementationB.cs:20:13:20:23 | throw ...; | MultiImplementationB.cs:20:13:20:23 | throw ...; | throw(NullReferenceException) | -| MultiImplementationB.cs:20:19:20:22 | null | MultiImplementationB.cs:20:19:20:22 | null | normal | -| MultiImplementationB.cs:21:50:21:59 | throw ... | MultiImplementationB.cs:21:50:21:59 | throw ... | throw(NullReferenceException) | -| MultiImplementationB.cs:21:56:21:59 | null | MultiImplementationB.cs:21:56:21:59 | null | normal | -| MultiImplementationB.cs:22:16:22:16 | access to property P | MultiImplementationB.cs:22:16:22:16 | this access | normal | -| MultiImplementationB.cs:22:16:22:16 | this access | MultiImplementationB.cs:22:16:22:16 | this access | normal | -| MultiImplementationB.cs:22:32:22:34 | ... = ... | MultiImplementationB.cs:22:32:22:34 | ... = ... | normal | -| MultiImplementationB.cs:22:34:22:34 | 1 | MultiImplementationB.cs:22:34:22:34 | 1 | normal | -| MultiImplementationB.cs:25:7:25:8 | call to constructor Object | MultiImplementationB.cs:25:7:25:8 | call to constructor Object | normal | -| MultiImplementationB.cs:25:7:25:8 | call to method | MultiImplementationB.cs:25:7:25:8 | call to method | normal | -| MultiImplementationB.cs:25:7:25:8 | this access | MultiImplementationB.cs:25:7:25:8 | this access | normal | -| MultiImplementationB.cs:25:7:25:8 | {...} | MultiImplementationB.cs:25:7:25:8 | {...} | normal | -| MultiImplementationB.cs:30:15:30:16 | call to constructor Object | MultiImplementationB.cs:30:15:30:16 | call to constructor Object | normal | -| MultiImplementationB.cs:30:15:30:16 | call to method | MultiImplementationB.cs:30:15:30:16 | call to method | normal | -| MultiImplementationB.cs:30:15:30:16 | this access | MultiImplementationB.cs:30:15:30:16 | this access | normal | -| MultiImplementationB.cs:30:15:30:16 | {...} | MultiImplementationB.cs:30:15:30:16 | {...} | normal | -| MultiImplementationB.cs:32:17:32:17 | 0 | MultiImplementationB.cs:32:17:32:17 | 0 | normal | -| NullCoalescing.cs:1:7:1:20 | call to constructor Object | NullCoalescing.cs:1:7:1:20 | call to constructor Object | normal | -| NullCoalescing.cs:1:7:1:20 | call to method | NullCoalescing.cs:1:7:1:20 | call to method | normal | -| NullCoalescing.cs:1:7:1:20 | this access | NullCoalescing.cs:1:7:1:20 | this access | normal | -| NullCoalescing.cs:1:7:1:20 | {...} | NullCoalescing.cs:1:7:1:20 | {...} | normal | -| NullCoalescing.cs:3:23:3:23 | access to parameter i | NullCoalescing.cs:3:23:3:23 | access to parameter i | non-null | -| NullCoalescing.cs:3:23:3:23 | access to parameter i | NullCoalescing.cs:3:23:3:23 | access to parameter i | null | -| NullCoalescing.cs:3:23:3:28 | ... ?? ... | NullCoalescing.cs:3:23:3:28 | ... ?? ... | normal | -| NullCoalescing.cs:3:28:3:28 | 0 | NullCoalescing.cs:3:28:3:28 | 0 | normal | -| NullCoalescing.cs:5:24:5:43 | ... ? ... : ... | NullCoalescing.cs:5:24:5:43 | ... ? ... : ... | normal | -| NullCoalescing.cs:5:25:5:25 | access to parameter b | NullCoalescing.cs:5:25:5:25 | access to parameter b | false | -| NullCoalescing.cs:5:25:5:25 | access to parameter b | NullCoalescing.cs:5:25:5:25 | access to parameter b | null | -| NullCoalescing.cs:5:25:5:25 | access to parameter b | NullCoalescing.cs:5:25:5:25 | access to parameter b | true | -| NullCoalescing.cs:5:25:5:34 | ... ?? ... | NullCoalescing.cs:5:25:5:34 | ... ?? ... | false | -| NullCoalescing.cs:5:25:5:34 | ... ?? ... | NullCoalescing.cs:5:25:5:34 | ... ?? ... | true | -| NullCoalescing.cs:5:30:5:34 | false | NullCoalescing.cs:5:30:5:34 | false | false | -| NullCoalescing.cs:5:39:5:39 | 0 | NullCoalescing.cs:5:39:5:39 | 0 | normal | -| NullCoalescing.cs:5:43:5:43 | 1 | NullCoalescing.cs:5:43:5:43 | 1 | normal | -| NullCoalescing.cs:7:40:7:41 | access to parameter s1 | NullCoalescing.cs:7:40:7:41 | access to parameter s1 | non-null | -| NullCoalescing.cs:7:40:7:41 | access to parameter s1 | NullCoalescing.cs:7:40:7:41 | access to parameter s1 | null | -| NullCoalescing.cs:7:40:7:53 | ... ?? ... | NullCoalescing.cs:7:40:7:53 | ... ?? ... | normal | -| NullCoalescing.cs:7:46:7:47 | access to parameter s2 | NullCoalescing.cs:7:46:7:47 | access to parameter s2 | non-null | -| NullCoalescing.cs:7:46:7:47 | access to parameter s2 | NullCoalescing.cs:7:46:7:47 | access to parameter s2 | null | -| NullCoalescing.cs:7:46:7:53 | ... ?? ... | NullCoalescing.cs:7:46:7:53 | ... ?? ... | normal | -| NullCoalescing.cs:7:52:7:53 | "" | NullCoalescing.cs:7:52:7:53 | "" | normal | -| NullCoalescing.cs:9:36:9:58 | ... ?? ... | NullCoalescing.cs:9:36:9:58 | ... ?? ... | normal | -| NullCoalescing.cs:9:37:9:37 | access to parameter b | NullCoalescing.cs:9:37:9:37 | access to parameter b | false | -| NullCoalescing.cs:9:37:9:37 | access to parameter b | NullCoalescing.cs:9:37:9:37 | access to parameter b | true | -| NullCoalescing.cs:9:37:9:45 | ... ? ... : ... | NullCoalescing.cs:9:37:9:45 | ... ? ... : ... | non-null | -| NullCoalescing.cs:9:37:9:45 | ... ? ... : ... | NullCoalescing.cs:9:37:9:45 | ... ? ... : ... | null | -| NullCoalescing.cs:9:41:9:41 | access to parameter s | NullCoalescing.cs:9:41:9:41 | access to parameter s | non-null | -| NullCoalescing.cs:9:41:9:41 | access to parameter s | NullCoalescing.cs:9:41:9:41 | access to parameter s | null | -| NullCoalescing.cs:9:45:9:45 | access to parameter s | NullCoalescing.cs:9:45:9:45 | access to parameter s | non-null | -| NullCoalescing.cs:9:45:9:45 | access to parameter s | NullCoalescing.cs:9:45:9:45 | access to parameter s | null | -| NullCoalescing.cs:9:51:9:52 | "" | NullCoalescing.cs:9:51:9:52 | "" | non-null | -| NullCoalescing.cs:9:51:9:58 | ... ?? ... | NullCoalescing.cs:9:51:9:58 | ... ?? ... | normal | -| NullCoalescing.cs:9:57:9:58 | "" | NullCoalescing.cs:9:57:9:58 | "" | normal | -| NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | normal | -| NullCoalescing.cs:11:44:11:45 | access to parameter b1 | NullCoalescing.cs:11:44:11:45 | access to parameter b1 | false | -| NullCoalescing.cs:11:44:11:45 | access to parameter b1 | NullCoalescing.cs:11:44:11:45 | access to parameter b1 | null | -| NullCoalescing.cs:11:44:11:45 | access to parameter b1 | NullCoalescing.cs:11:44:11:45 | access to parameter b1 | true | -| NullCoalescing.cs:11:44:11:59 | ... ?? ... | NullCoalescing.cs:11:44:11:59 | ... ?? ... | false | -| NullCoalescing.cs:11:44:11:59 | ... ?? ... | NullCoalescing.cs:11:44:11:59 | ... ?? ... | true | -| NullCoalescing.cs:11:51:11:52 | access to parameter b2 | NullCoalescing.cs:11:51:11:52 | access to parameter b2 | false | -| NullCoalescing.cs:11:51:11:52 | access to parameter b2 | NullCoalescing.cs:11:51:11:52 | access to parameter b2 | true | -| NullCoalescing.cs:11:51:11:58 | ... && ... | NullCoalescing.cs:11:51:11:58 | ... && ... | false | -| NullCoalescing.cs:11:51:11:58 | ... && ... | NullCoalescing.cs:11:51:11:58 | ... && ... | true | -| NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:57:11:58 | access to parameter b3 | false | -| NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:57:11:58 | access to parameter b3 | true | -| NullCoalescing.cs:11:64:11:64 | 0 | NullCoalescing.cs:11:64:11:64 | 0 | normal | -| NullCoalescing.cs:11:68:11:68 | 1 | NullCoalescing.cs:11:68:11:68 | 1 | normal | -| NullCoalescing.cs:14:5:18:5 | {...} | NullCoalescing.cs:17:9:17:24 | ... = ... | normal | -| NullCoalescing.cs:15:9:15:32 | ... ...; | NullCoalescing.cs:15:13:15:31 | Int32 j = ... | normal | -| NullCoalescing.cs:15:13:15:31 | Int32 j = ... | NullCoalescing.cs:15:13:15:31 | Int32 j = ... | normal | -| NullCoalescing.cs:15:17:15:26 | (...) ... | NullCoalescing.cs:15:17:15:26 | (...) ... | null | -| NullCoalescing.cs:15:17:15:31 | ... ?? ... | NullCoalescing.cs:15:17:15:31 | ... ?? ... | normal | -| NullCoalescing.cs:15:23:15:26 | null | NullCoalescing.cs:15:23:15:26 | null | normal | -| NullCoalescing.cs:15:31:15:31 | 0 | NullCoalescing.cs:15:31:15:31 | 0 | normal | -| NullCoalescing.cs:16:9:16:26 | ... ...; | NullCoalescing.cs:16:13:16:25 | String s = ... | normal | -| NullCoalescing.cs:16:13:16:25 | String s = ... | NullCoalescing.cs:16:13:16:25 | String s = ... | normal | -| NullCoalescing.cs:16:17:16:18 | "" | NullCoalescing.cs:16:17:16:18 | "" | non-null | -| NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:16:17:16:25 | ... ?? ... | normal | -| NullCoalescing.cs:16:23:16:25 | "a" | NullCoalescing.cs:16:23:16:25 | "a" | normal | -| NullCoalescing.cs:17:9:17:24 | ... = ... | NullCoalescing.cs:17:9:17:24 | ... = ... | normal | -| NullCoalescing.cs:17:9:17:25 | ...; | NullCoalescing.cs:17:9:17:24 | ... = ... | normal | -| NullCoalescing.cs:17:13:17:19 | (...) ... | NullCoalescing.cs:17:13:17:19 | (...) ... | non-null | -| NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:17:13:17:24 | ... ?? ... | normal | -| NullCoalescing.cs:17:19:17:19 | access to parameter i | NullCoalescing.cs:17:19:17:19 | access to parameter i | normal | -| NullCoalescing.cs:17:24:17:24 | 1 | NullCoalescing.cs:17:24:17:24 | 1 | normal | -| PartialImplementationA.cs:3:12:3:18 | call to constructor Object | PartialImplementationA.cs:3:12:3:18 | call to constructor Object | normal | -| PartialImplementationA.cs:3:12:3:18 | call to method | PartialImplementationA.cs:3:12:3:18 | call to method | normal | -| PartialImplementationA.cs:3:12:3:18 | this access | PartialImplementationA.cs:3:12:3:18 | this access | normal | -| PartialImplementationA.cs:3:27:3:29 | {...} | PartialImplementationA.cs:3:27:3:29 | {...} | normal | -| PartialImplementationB.cs:3:16:3:16 | access to field F | PartialImplementationB.cs:3:16:3:16 | this access | normal | -| PartialImplementationB.cs:3:16:3:16 | this access | PartialImplementationB.cs:3:16:3:16 | this access | normal | -| PartialImplementationB.cs:3:16:3:20 | ... = ... | PartialImplementationB.cs:3:16:3:20 | ... = ... | normal | -| PartialImplementationB.cs:3:20:3:20 | 0 | PartialImplementationB.cs:3:20:3:20 | 0 | normal | -| PartialImplementationB.cs:4:12:4:18 | call to constructor Object | PartialImplementationB.cs:4:12:4:18 | call to constructor Object | normal | -| PartialImplementationB.cs:4:12:4:18 | call to method | PartialImplementationB.cs:4:12:4:18 | call to method | normal | -| PartialImplementationB.cs:4:12:4:18 | this access | PartialImplementationB.cs:4:12:4:18 | this access | normal | -| PartialImplementationB.cs:4:22:4:24 | {...} | PartialImplementationB.cs:4:22:4:24 | {...} | normal | -| PartialImplementationB.cs:5:16:5:16 | access to property P | PartialImplementationB.cs:5:16:5:16 | this access | normal | -| PartialImplementationB.cs:5:16:5:16 | this access | PartialImplementationB.cs:5:16:5:16 | this access | normal | -| PartialImplementationB.cs:5:32:5:34 | ... = ... | PartialImplementationB.cs:5:32:5:34 | ... = ... | normal | -| PartialImplementationB.cs:5:34:5:34 | 0 | PartialImplementationB.cs:5:34:5:34 | 0 | normal | -| Patterns.cs:3:7:3:14 | call to constructor Object | Patterns.cs:3:7:3:14 | call to constructor Object | normal | -| Patterns.cs:3:7:3:14 | call to method | Patterns.cs:3:7:3:14 | call to method | normal | -| Patterns.cs:3:7:3:14 | this access | Patterns.cs:3:7:3:14 | this access | normal | -| Patterns.cs:3:7:3:14 | {...} | Patterns.cs:3:7:3:14 | {...} | normal | -| Patterns.cs:6:5:43:5 | {...} | Patterns.cs:40:17:40:17 | access to local variable o | normal | -| Patterns.cs:7:9:7:24 | ... ...; | Patterns.cs:7:16:7:23 | Object o = ... | normal | -| Patterns.cs:7:16:7:23 | Object o = ... | Patterns.cs:7:16:7:23 | Object o = ... | normal | -| Patterns.cs:7:20:7:23 | null | Patterns.cs:7:20:7:23 | null | normal | -| Patterns.cs:8:9:18:9 | if (...) ... | Patterns.cs:10:13:10:42 | call to method WriteLine | normal | -| Patterns.cs:8:9:18:9 | if (...) ... | Patterns.cs:14:13:14:45 | call to method WriteLine | normal | -| Patterns.cs:8:9:18:9 | if (...) ... | Patterns.cs:16:18:16:28 | ... is ... | false | -| Patterns.cs:8:9:18:9 | if (...) ... | Patterns.cs:17:9:18:9 | {...} | normal | -| Patterns.cs:8:13:8:13 | access to local variable o | Patterns.cs:8:13:8:13 | access to local variable o | normal | -| Patterns.cs:8:13:8:23 | ... is ... | Patterns.cs:8:13:8:23 | ... is ... | false | -| Patterns.cs:8:13:8:23 | ... is ... | Patterns.cs:8:13:8:23 | ... is ... | true | -| Patterns.cs:8:18:8:23 | Int32 i1 | Patterns.cs:8:18:8:23 | Int32 i1 | match | -| Patterns.cs:8:18:8:23 | Int32 i1 | Patterns.cs:8:18:8:23 | Int32 i1 | no-match | -| Patterns.cs:9:9:11:9 | {...} | Patterns.cs:10:13:10:42 | call to method WriteLine | normal | -| Patterns.cs:10:13:10:42 | call to method WriteLine | Patterns.cs:10:13:10:42 | call to method WriteLine | normal | -| Patterns.cs:10:13:10:43 | ...; | Patterns.cs:10:13:10:42 | call to method WriteLine | normal | -| Patterns.cs:10:31:10:41 | $"..." | Patterns.cs:10:31:10:41 | $"..." | normal | -| Patterns.cs:10:33:10:36 | "int " | Patterns.cs:10:33:10:36 | "int " | normal | -| Patterns.cs:10:37:10:40 | {...} | Patterns.cs:10:37:10:40 | {...} | normal | -| Patterns.cs:10:38:10:39 | access to local variable i1 | Patterns.cs:10:38:10:39 | access to local variable i1 | normal | -| Patterns.cs:12:14:18:9 | if (...) ... | Patterns.cs:14:13:14:45 | call to method WriteLine | normal | -| Patterns.cs:12:14:18:9 | if (...) ... | Patterns.cs:16:18:16:28 | ... is ... | false | -| Patterns.cs:12:14:18:9 | if (...) ... | Patterns.cs:17:9:18:9 | {...} | normal | -| Patterns.cs:12:18:12:18 | access to local variable o | Patterns.cs:12:18:12:18 | access to local variable o | normal | -| Patterns.cs:12:18:12:31 | ... is ... | Patterns.cs:12:18:12:31 | ... is ... | false | -| Patterns.cs:12:18:12:31 | ... is ... | Patterns.cs:12:18:12:31 | ... is ... | true | -| Patterns.cs:12:23:12:31 | String s1 | Patterns.cs:12:23:12:31 | String s1 | match | -| Patterns.cs:12:23:12:31 | String s1 | Patterns.cs:12:23:12:31 | String s1 | no-match | -| Patterns.cs:13:9:15:9 | {...} | Patterns.cs:14:13:14:45 | call to method WriteLine | normal | -| Patterns.cs:14:13:14:45 | call to method WriteLine | Patterns.cs:14:13:14:45 | call to method WriteLine | normal | -| Patterns.cs:14:13:14:46 | ...; | Patterns.cs:14:13:14:45 | call to method WriteLine | normal | -| Patterns.cs:14:31:14:44 | $"..." | Patterns.cs:14:31:14:44 | $"..." | normal | -| Patterns.cs:14:33:14:39 | "string " | Patterns.cs:14:33:14:39 | "string " | normal | -| Patterns.cs:14:40:14:43 | {...} | Patterns.cs:14:40:14:43 | {...} | normal | -| Patterns.cs:14:41:14:42 | access to local variable s1 | Patterns.cs:14:41:14:42 | access to local variable s1 | normal | -| Patterns.cs:16:14:18:9 | if (...) ... | Patterns.cs:16:18:16:28 | ... is ... | false | -| Patterns.cs:16:14:18:9 | if (...) ... | Patterns.cs:17:9:18:9 | {...} | normal | -| Patterns.cs:16:18:16:18 | access to local variable o | Patterns.cs:16:18:16:18 | access to local variable o | normal | -| Patterns.cs:16:18:16:28 | ... is ... | Patterns.cs:16:18:16:28 | ... is ... | false | -| Patterns.cs:16:18:16:28 | ... is ... | Patterns.cs:16:18:16:28 | ... is ... | true | -| Patterns.cs:16:23:16:28 | Object v1 | Patterns.cs:16:23:16:28 | Object v1 | match | -| Patterns.cs:16:23:16:28 | Object v1 | Patterns.cs:16:23:16:28 | Object v1 | no-match | -| Patterns.cs:17:9:18:9 | {...} | Patterns.cs:17:9:18:9 | {...} | normal | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:23:17:23:22 | break; | normal [break] (0) | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:26:17:26:22 | break; | normal [break] (0) | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:29:17:29:22 | break; | normal [break] (0) | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:32:17:32:22 | break; | normal [break] (0) | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:34:17:34:22 | break; | normal [break] (0) | -| Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:37:17:37:22 | break; | normal [break] (0) | -| Patterns.cs:20:17:20:17 | access to local variable o | Patterns.cs:20:17:20:17 | access to local variable o | normal | -| Patterns.cs:22:13:22:23 | case ...: | Patterns.cs:22:18:22:22 | "xyz" | no-match | -| Patterns.cs:22:13:22:23 | case ...: | Patterns.cs:23:17:23:22 | break; | break | -| Patterns.cs:22:18:22:22 | "xyz" | Patterns.cs:22:18:22:22 | "xyz" | match | -| Patterns.cs:22:18:22:22 | "xyz" | Patterns.cs:22:18:22:22 | "xyz" | no-match | -| Patterns.cs:23:17:23:22 | break; | Patterns.cs:23:17:23:22 | break; | break | -| Patterns.cs:24:13:24:36 | case ...: | Patterns.cs:24:18:24:23 | Int32 i2 | no-match | -| Patterns.cs:24:13:24:36 | case ...: | Patterns.cs:24:30:24:35 | ... > ... | false | -| Patterns.cs:24:13:24:36 | case ...: | Patterns.cs:25:17:25:51 | call to method WriteLine | normal | -| Patterns.cs:24:18:24:23 | Int32 i2 | Patterns.cs:24:18:24:23 | Int32 i2 | match | -| Patterns.cs:24:18:24:23 | Int32 i2 | Patterns.cs:24:18:24:23 | Int32 i2 | no-match | -| Patterns.cs:24:30:24:31 | access to local variable i2 | Patterns.cs:24:30:24:31 | access to local variable i2 | normal | -| Patterns.cs:24:30:24:35 | ... > ... | Patterns.cs:24:30:24:35 | ... > ... | false | -| Patterns.cs:24:30:24:35 | ... > ... | Patterns.cs:24:30:24:35 | ... > ... | true | -| Patterns.cs:24:35:24:35 | 0 | Patterns.cs:24:35:24:35 | 0 | normal | -| Patterns.cs:25:17:25:51 | call to method WriteLine | Patterns.cs:25:17:25:51 | call to method WriteLine | normal | -| Patterns.cs:25:17:25:52 | ...; | Patterns.cs:25:17:25:51 | call to method WriteLine | normal | -| Patterns.cs:25:35:25:50 | $"..." | Patterns.cs:25:35:25:50 | $"..." | normal | -| Patterns.cs:25:37:25:45 | "positive " | Patterns.cs:25:37:25:45 | "positive " | normal | -| Patterns.cs:25:46:25:49 | {...} | Patterns.cs:25:46:25:49 | {...} | normal | -| Patterns.cs:25:47:25:48 | access to local variable i2 | Patterns.cs:25:47:25:48 | access to local variable i2 | normal | -| Patterns.cs:26:17:26:22 | break; | Patterns.cs:26:17:26:22 | break; | break | -| Patterns.cs:27:13:27:24 | case ...: | Patterns.cs:27:18:27:23 | Int32 i3 | no-match | -| Patterns.cs:27:13:27:24 | case ...: | Patterns.cs:28:17:28:46 | call to method WriteLine | normal | -| Patterns.cs:27:18:27:23 | Int32 i3 | Patterns.cs:27:18:27:23 | Int32 i3 | match | -| Patterns.cs:27:18:27:23 | Int32 i3 | Patterns.cs:27:18:27:23 | Int32 i3 | no-match | -| Patterns.cs:28:17:28:46 | call to method WriteLine | Patterns.cs:28:17:28:46 | call to method WriteLine | normal | -| Patterns.cs:28:17:28:47 | ...; | Patterns.cs:28:17:28:46 | call to method WriteLine | normal | -| Patterns.cs:28:35:28:45 | $"..." | Patterns.cs:28:35:28:45 | $"..." | normal | -| Patterns.cs:28:37:28:40 | "int " | Patterns.cs:28:37:28:40 | "int " | normal | -| Patterns.cs:28:41:28:44 | {...} | Patterns.cs:28:41:28:44 | {...} | normal | -| Patterns.cs:28:42:28:43 | access to local variable i3 | Patterns.cs:28:42:28:43 | access to local variable i3 | normal | -| Patterns.cs:29:17:29:22 | break; | Patterns.cs:29:17:29:22 | break; | break | -| Patterns.cs:30:13:30:27 | case ...: | Patterns.cs:30:18:30:26 | String s2 | no-match | -| Patterns.cs:30:13:30:27 | case ...: | Patterns.cs:31:17:31:49 | call to method WriteLine | normal | -| Patterns.cs:30:18:30:26 | String s2 | Patterns.cs:30:18:30:26 | String s2 | match | -| Patterns.cs:30:18:30:26 | String s2 | Patterns.cs:30:18:30:26 | String s2 | no-match | -| Patterns.cs:31:17:31:49 | call to method WriteLine | Patterns.cs:31:17:31:49 | call to method WriteLine | normal | -| Patterns.cs:31:17:31:50 | ...; | Patterns.cs:31:17:31:49 | call to method WriteLine | normal | -| Patterns.cs:31:35:31:48 | $"..." | Patterns.cs:31:35:31:48 | $"..." | normal | -| Patterns.cs:31:37:31:43 | "string " | Patterns.cs:31:37:31:43 | "string " | normal | -| Patterns.cs:31:44:31:47 | {...} | Patterns.cs:31:44:31:47 | {...} | normal | -| Patterns.cs:31:45:31:46 | access to local variable s2 | Patterns.cs:31:45:31:46 | access to local variable s2 | normal | -| Patterns.cs:32:17:32:22 | break; | Patterns.cs:32:17:32:22 | break; | break | -| Patterns.cs:33:13:33:24 | case ...: | Patterns.cs:33:18:33:23 | Object v2 | no-match | -| Patterns.cs:33:13:33:24 | case ...: | Patterns.cs:34:17:34:22 | break; | break | -| Patterns.cs:33:18:33:23 | Object v2 | Patterns.cs:33:18:33:23 | Object v2 | match | -| Patterns.cs:33:18:33:23 | Object v2 | Patterns.cs:33:18:33:23 | Object v2 | no-match | -| Patterns.cs:34:17:34:22 | break; | Patterns.cs:34:17:34:22 | break; | break | -| Patterns.cs:35:13:35:20 | default: | Patterns.cs:36:17:36:51 | call to method WriteLine | normal | -| Patterns.cs:36:17:36:51 | call to method WriteLine | Patterns.cs:36:17:36:51 | call to method WriteLine | normal | -| Patterns.cs:36:17:36:52 | ...; | Patterns.cs:36:17:36:51 | call to method WriteLine | normal | -| Patterns.cs:36:35:36:50 | "Something else" | Patterns.cs:36:35:36:50 | "Something else" | normal | -| Patterns.cs:37:17:37:22 | break; | Patterns.cs:37:17:37:22 | break; | break | -| Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:40:17:40:17 | access to local variable o | normal | -| Patterns.cs:40:17:40:17 | access to local variable o | Patterns.cs:40:17:40:17 | access to local variable o | normal | -| Patterns.cs:48:9:48:9 | access to parameter c | Patterns.cs:48:9:48:9 | access to parameter c | normal | -| Patterns.cs:48:9:48:20 | ... is ... | Patterns.cs:48:9:48:20 | ... is ... | normal | -| Patterns.cs:48:14:48:20 | not ... | Patterns.cs:48:14:48:20 | not ... | normal | -| Patterns.cs:48:18:48:20 | a | Patterns.cs:48:18:48:20 | a | normal | -| Patterns.cs:51:9:51:9 | access to parameter c | Patterns.cs:51:9:51:9 | access to parameter c | normal | -| Patterns.cs:51:9:51:21 | ... is ... | Patterns.cs:51:9:51:21 | ... is ... | false | -| Patterns.cs:51:9:51:21 | ... is ... | Patterns.cs:51:9:51:21 | ... is ... | true | -| Patterns.cs:51:9:51:39 | ... ? ... : ... | Patterns.cs:51:9:51:39 | ... ? ... : ... | normal | -| Patterns.cs:51:14:51:21 | not ... | Patterns.cs:51:14:51:21 | not ... | match | -| Patterns.cs:51:14:51:21 | not ... | Patterns.cs:51:14:51:21 | not ... | no-match | -| Patterns.cs:51:18:51:21 | null | Patterns.cs:51:18:51:21 | null | match | -| Patterns.cs:51:18:51:21 | null | Patterns.cs:51:18:51:21 | null | no-match | -| Patterns.cs:51:25:51:25 | access to parameter c | Patterns.cs:51:25:51:25 | access to parameter c | normal | -| Patterns.cs:51:25:51:30 | ... is ... | Patterns.cs:51:25:51:30 | ... is ... | normal | -| Patterns.cs:51:30:51:30 | 1 | Patterns.cs:51:30:51:30 | 1 | normal | -| Patterns.cs:51:34:51:34 | access to parameter c | Patterns.cs:51:34:51:34 | access to parameter c | normal | -| Patterns.cs:51:34:51:39 | ... is ... | Patterns.cs:51:34:51:39 | ... is ... | normal | -| Patterns.cs:51:39:51:39 | 2 | Patterns.cs:51:39:51:39 | 2 | normal | -| Patterns.cs:54:9:54:9 | access to parameter c | Patterns.cs:54:9:54:9 | access to parameter c | normal | -| Patterns.cs:54:9:54:37 | ... is ... | Patterns.cs:54:9:54:37 | ... is ... | normal | -| Patterns.cs:54:14:54:37 | not ... | Patterns.cs:54:14:54:37 | not ... | normal | -| Patterns.cs:54:18:54:25 | access to type Patterns | Patterns.cs:54:18:54:25 | access to type Patterns | match | -| Patterns.cs:54:18:54:25 | access to type Patterns | Patterns.cs:54:18:54:25 | access to type Patterns | no-match | -| Patterns.cs:54:18:54:37 | Patterns u | Patterns.cs:54:18:54:37 | Patterns u | match | -| Patterns.cs:54:18:54:37 | Patterns u | Patterns.cs:54:18:54:37 | Patterns u | no-match | -| Patterns.cs:54:18:54:37 | { ... } | Patterns.cs:54:18:54:37 | { ... } | normal | -| Patterns.cs:54:27:54:35 | { ... } | Patterns.cs:54:27:54:35 | { ... } | match | -| Patterns.cs:54:27:54:35 | { ... } | Patterns.cs:54:27:54:35 | { ... } | no-match | -| Patterns.cs:54:33:54:33 | 1 | Patterns.cs:54:33:54:33 | 1 | match | -| Patterns.cs:54:33:54:33 | 1 | Patterns.cs:54:33:54:33 | 1 | no-match | -| Patterns.cs:57:5:63:5 | {...} | Patterns.cs:58:9:62:10 | return ...; | return | -| Patterns.cs:58:9:62:10 | return ...; | Patterns.cs:58:9:62:10 | return ...; | return | -| Patterns.cs:58:16:58:16 | access to parameter i | Patterns.cs:58:16:58:16 | access to parameter i | normal | -| Patterns.cs:58:16:62:9 | ... switch { ... } | Patterns.cs:58:16:62:9 | ... switch { ... } | normal | -| Patterns.cs:60:13:60:17 | not ... | Patterns.cs:60:13:60:17 | not ... | match | -| Patterns.cs:60:13:60:17 | not ... | Patterns.cs:60:13:60:17 | not ... | no-match | -| Patterns.cs:60:13:60:28 | ... => ... | Patterns.cs:60:13:60:28 | ... => ... | normal | -| Patterns.cs:60:17:60:17 | 1 | Patterns.cs:60:17:60:17 | 1 | match | -| Patterns.cs:60:17:60:17 | 1 | Patterns.cs:60:17:60:17 | 1 | no-match | -| Patterns.cs:60:22:60:28 | "not 1" | Patterns.cs:60:22:60:28 | "not 1" | normal | -| Patterns.cs:61:13:61:13 | _ | Patterns.cs:61:13:61:13 | _ | match | -| Patterns.cs:61:13:61:24 | ... => ... | Patterns.cs:61:13:61:24 | ... => ... | normal | -| Patterns.cs:61:18:61:24 | "other" | Patterns.cs:61:18:61:24 | "other" | normal | -| Patterns.cs:66:5:72:5 | {...} | Patterns.cs:67:9:71:10 | return ...; | return | -| Patterns.cs:67:9:71:10 | return ...; | Patterns.cs:67:9:71:10 | return ...; | return | -| Patterns.cs:67:16:67:16 | 2 | Patterns.cs:67:16:67:16 | 2 | normal | -| Patterns.cs:67:16:71:9 | ... switch { ... } | Patterns.cs:67:16:71:9 | ... switch { ... } | normal | -| Patterns.cs:69:13:69:17 | not ... | Patterns.cs:69:13:69:17 | not ... | match | -| Patterns.cs:69:13:69:17 | not ... | Patterns.cs:69:13:69:17 | not ... | no-match | -| Patterns.cs:69:13:69:33 | ... => ... | Patterns.cs:69:13:69:33 | ... => ... | normal | -| Patterns.cs:69:17:69:17 | 2 | Patterns.cs:69:17:69:17 | 2 | match | -| Patterns.cs:69:22:69:33 | "impossible" | Patterns.cs:69:22:69:33 | "impossible" | normal | -| Patterns.cs:70:13:70:13 | 2 | Patterns.cs:70:13:70:13 | 2 | match | -| Patterns.cs:70:13:70:27 | ... => ... | Patterns.cs:70:13:70:27 | ... => ... | normal | -| Patterns.cs:70:18:70:27 | "possible" | Patterns.cs:70:18:70:27 | "possible" | normal | -| Patterns.cs:75:5:83:5 | {...} | Patterns.cs:76:9:82:10 | return ...; | return | -| Patterns.cs:76:9:82:10 | return ...; | Patterns.cs:76:9:82:10 | return ...; | return | -| Patterns.cs:76:16:76:16 | access to parameter i | Patterns.cs:76:16:76:16 | access to parameter i | normal | -| Patterns.cs:76:16:82:9 | ... switch { ... } | Patterns.cs:76:16:82:9 | ... switch { ... } | normal | -| Patterns.cs:78:13:78:15 | > ... | Patterns.cs:78:13:78:15 | > ... | match | -| Patterns.cs:78:13:78:15 | > ... | Patterns.cs:78:13:78:15 | > ... | no-match | -| Patterns.cs:78:13:78:24 | ... => ... | Patterns.cs:78:13:78:24 | ... => ... | normal | -| Patterns.cs:78:15:78:15 | 1 | Patterns.cs:78:15:78:15 | 1 | normal | -| Patterns.cs:78:20:78:24 | "> 1" | Patterns.cs:78:20:78:24 | "> 1" | normal | -| Patterns.cs:79:13:79:15 | < ... | Patterns.cs:79:13:79:15 | < ... | match | -| Patterns.cs:79:13:79:15 | < ... | Patterns.cs:79:13:79:15 | < ... | no-match | -| Patterns.cs:79:13:79:24 | ... => ... | Patterns.cs:79:13:79:24 | ... => ... | normal | -| Patterns.cs:79:15:79:15 | 0 | Patterns.cs:79:15:79:15 | 0 | normal | -| Patterns.cs:79:20:79:24 | "< 0" | Patterns.cs:79:20:79:24 | "< 0" | normal | -| Patterns.cs:80:13:80:13 | 1 | Patterns.cs:80:13:80:13 | 1 | match | -| Patterns.cs:80:13:80:13 | 1 | Patterns.cs:80:13:80:13 | 1 | no-match | -| Patterns.cs:80:13:80:20 | ... => ... | Patterns.cs:80:13:80:20 | ... => ... | normal | -| Patterns.cs:80:18:80:20 | "1" | Patterns.cs:80:18:80:20 | "1" | normal | -| Patterns.cs:81:13:81:13 | _ | Patterns.cs:81:13:81:13 | _ | match | -| Patterns.cs:81:13:81:20 | ... => ... | Patterns.cs:81:13:81:20 | ... => ... | normal | -| Patterns.cs:81:18:81:20 | "0" | Patterns.cs:81:18:81:20 | "0" | normal | -| Patterns.cs:85:39:85:39 | access to parameter i | Patterns.cs:85:39:85:39 | access to parameter i | normal | -| Patterns.cs:85:39:85:53 | ... is ... | Patterns.cs:85:39:85:53 | ... is ... | false | -| Patterns.cs:85:39:85:53 | ... is ... | Patterns.cs:85:39:85:53 | ... is ... | true | -| Patterns.cs:85:39:85:69 | ... ? ... : ... | Patterns.cs:85:39:85:69 | ... ? ... : ... | normal | -| Patterns.cs:85:44:85:44 | 1 | Patterns.cs:85:44:85:44 | 1 | match | -| Patterns.cs:85:44:85:44 | 1 | Patterns.cs:85:44:85:44 | 1 | no-match | -| Patterns.cs:85:44:85:53 | ... or ... | Patterns.cs:85:44:85:53 | ... or ... | match | -| Patterns.cs:85:44:85:53 | ... or ... | Patterns.cs:85:44:85:53 | ... or ... | no-match | -| Patterns.cs:85:49:85:53 | not ... | Patterns.cs:85:49:85:53 | not ... | match | -| Patterns.cs:85:49:85:53 | not ... | Patterns.cs:85:49:85:53 | not ... | no-match | -| Patterns.cs:85:53:85:53 | 2 | Patterns.cs:85:53:85:53 | 2 | match | -| Patterns.cs:85:53:85:53 | 2 | Patterns.cs:85:53:85:53 | 2 | no-match | -| Patterns.cs:85:57:85:63 | "not 2" | Patterns.cs:85:57:85:63 | "not 2" | normal | -| Patterns.cs:85:67:85:69 | "2" | Patterns.cs:85:67:85:69 | "2" | normal | -| Patterns.cs:87:39:87:39 | access to parameter i | Patterns.cs:87:39:87:39 | access to parameter i | normal | -| Patterns.cs:87:39:87:54 | ... is ... | Patterns.cs:87:39:87:54 | ... is ... | false | -| Patterns.cs:87:39:87:54 | ... is ... | Patterns.cs:87:39:87:54 | ... is ... | true | -| Patterns.cs:87:39:87:70 | ... ? ... : ... | Patterns.cs:87:39:87:70 | ... ? ... : ... | normal | -| Patterns.cs:87:44:87:44 | 1 | Patterns.cs:87:44:87:44 | 1 | match | -| Patterns.cs:87:44:87:44 | 1 | Patterns.cs:87:44:87:44 | 1 | no-match | -| Patterns.cs:87:44:87:54 | ... and ... | Patterns.cs:87:44:87:54 | ... and ... | match | -| Patterns.cs:87:44:87:54 | ... and ... | Patterns.cs:87:44:87:54 | ... and ... | no-match | -| Patterns.cs:87:50:87:54 | not ... | Patterns.cs:87:50:87:54 | not ... | match | -| Patterns.cs:87:50:87:54 | not ... | Patterns.cs:87:50:87:54 | not ... | no-match | -| Patterns.cs:87:54:87:54 | 2 | Patterns.cs:87:54:87:54 | 2 | match | -| Patterns.cs:87:54:87:54 | 2 | Patterns.cs:87:54:87:54 | 2 | no-match | -| Patterns.cs:87:58:87:60 | "1" | Patterns.cs:87:58:87:60 | "1" | normal | -| Patterns.cs:87:64:87:70 | "not 1" | Patterns.cs:87:64:87:70 | "not 1" | normal | -| Patterns.cs:94:5:99:5 | {...} | Patterns.cs:95:13:95:40 | ... is ... | false | -| Patterns.cs:94:5:99:5 | {...} | Patterns.cs:97:13:97:38 | call to method WriteLine | normal | -| Patterns.cs:95:9:98:9 | if (...) ... | Patterns.cs:95:13:95:40 | ... is ... | false | -| Patterns.cs:95:9:98:9 | if (...) ... | Patterns.cs:97:13:97:38 | call to method WriteLine | normal | -| Patterns.cs:95:13:95:16 | this access | Patterns.cs:95:13:95:16 | this access | normal | -| Patterns.cs:95:13:95:40 | ... is ... | Patterns.cs:95:13:95:40 | ... is ... | false | -| Patterns.cs:95:13:95:40 | ... is ... | Patterns.cs:95:13:95:40 | ... is ... | true | -| Patterns.cs:95:21:95:40 | { ... } | Patterns.cs:95:21:95:40 | { ... } | match | -| Patterns.cs:95:21:95:40 | { ... } | Patterns.cs:95:21:95:40 | { ... } | match | -| Patterns.cs:95:21:95:40 | { ... } | Patterns.cs:95:21:95:40 | { ... } | no-match | -| Patterns.cs:95:21:95:40 | { ... } | Patterns.cs:95:21:95:40 | { ... } | no-match | -| Patterns.cs:95:29:95:31 | access to constant A | Patterns.cs:95:29:95:31 | access to constant A | match | -| Patterns.cs:95:29:95:31 | access to constant A | Patterns.cs:95:29:95:31 | access to constant A | no-match | -| Patterns.cs:95:29:95:38 | ... or ... | Patterns.cs:95:29:95:38 | ... or ... | match | -| Patterns.cs:95:29:95:38 | ... or ... | Patterns.cs:95:29:95:38 | ... or ... | no-match | -| Patterns.cs:95:36:95:38 | access to constant B | Patterns.cs:95:36:95:38 | access to constant B | match | -| Patterns.cs:95:36:95:38 | access to constant B | Patterns.cs:95:36:95:38 | access to constant B | no-match | -| Patterns.cs:96:9:98:9 | {...} | Patterns.cs:97:13:97:38 | call to method WriteLine | normal | -| Patterns.cs:97:13:97:38 | call to method WriteLine | Patterns.cs:97:13:97:38 | call to method WriteLine | normal | -| Patterns.cs:97:13:97:39 | ...; | Patterns.cs:97:13:97:38 | call to method WriteLine | normal | -| Patterns.cs:97:31:97:37 | "not C" | Patterns.cs:97:31:97:37 | "not C" | normal | -| PostDominance.cs:3:7:3:19 | call to constructor Object | PostDominance.cs:3:7:3:19 | call to constructor Object | normal | -| PostDominance.cs:3:7:3:19 | call to method | PostDominance.cs:3:7:3:19 | call to method | normal | -| PostDominance.cs:3:7:3:19 | this access | PostDominance.cs:3:7:3:19 | this access | normal | -| PostDominance.cs:3:7:3:19 | {...} | PostDominance.cs:3:7:3:19 | {...} | normal | -| PostDominance.cs:6:5:8:5 | {...} | PostDominance.cs:7:9:7:28 | call to method WriteLine | normal | -| PostDominance.cs:7:9:7:28 | call to method WriteLine | PostDominance.cs:7:9:7:28 | call to method WriteLine | normal | -| PostDominance.cs:7:9:7:29 | ...; | PostDominance.cs:7:9:7:28 | call to method WriteLine | normal | -| PostDominance.cs:7:27:7:27 | access to parameter s | PostDominance.cs:7:27:7:27 | access to parameter s | normal | -| PostDominance.cs:11:5:15:5 | {...} | PostDominance.cs:13:13:13:19 | return ...; | return | -| PostDominance.cs:11:5:15:5 | {...} | PostDominance.cs:14:9:14:28 | call to method WriteLine | normal | -| PostDominance.cs:12:9:13:19 | if (...) ... | PostDominance.cs:12:13:12:21 | ... is ... | false | -| PostDominance.cs:12:9:13:19 | if (...) ... | PostDominance.cs:13:13:13:19 | return ...; | return | -| PostDominance.cs:12:13:12:13 | access to parameter s | PostDominance.cs:12:13:12:13 | access to parameter s | normal | -| PostDominance.cs:12:13:12:21 | ... is ... | PostDominance.cs:12:13:12:21 | ... is ... | false | -| PostDominance.cs:12:13:12:21 | ... is ... | PostDominance.cs:12:13:12:21 | ... is ... | true | -| PostDominance.cs:12:18:12:21 | null | PostDominance.cs:12:18:12:21 | null | match | -| PostDominance.cs:12:18:12:21 | null | PostDominance.cs:12:18:12:21 | null | no-match | -| PostDominance.cs:13:13:13:19 | return ...; | PostDominance.cs:13:13:13:19 | return ...; | return | -| PostDominance.cs:14:9:14:28 | call to method WriteLine | PostDominance.cs:14:9:14:28 | call to method WriteLine | normal | -| PostDominance.cs:14:9:14:29 | ...; | PostDominance.cs:14:9:14:28 | call to method WriteLine | normal | -| PostDominance.cs:14:27:14:27 | access to parameter s | PostDominance.cs:14:27:14:27 | access to parameter s | normal | -| PostDominance.cs:18:5:22:5 | {...} | PostDominance.cs:20:13:20:55 | throw ...; | throw(ArgumentNullException) | -| PostDominance.cs:18:5:22:5 | {...} | PostDominance.cs:21:9:21:28 | call to method WriteLine | normal | -| PostDominance.cs:19:9:20:55 | if (...) ... | PostDominance.cs:19:13:19:21 | ... is ... | false | -| PostDominance.cs:19:9:20:55 | if (...) ... | PostDominance.cs:20:13:20:55 | throw ...; | throw(ArgumentNullException) | -| PostDominance.cs:19:13:19:13 | access to parameter s | PostDominance.cs:19:13:19:13 | access to parameter s | normal | -| PostDominance.cs:19:13:19:21 | ... is ... | PostDominance.cs:19:13:19:21 | ... is ... | false | -| PostDominance.cs:19:13:19:21 | ... is ... | PostDominance.cs:19:13:19:21 | ... is ... | true | -| PostDominance.cs:19:18:19:21 | null | PostDominance.cs:19:18:19:21 | null | match | -| PostDominance.cs:19:18:19:21 | null | PostDominance.cs:19:18:19:21 | null | no-match | -| PostDominance.cs:20:13:20:55 | throw ...; | PostDominance.cs:20:13:20:55 | throw ...; | throw(ArgumentNullException) | -| PostDominance.cs:20:19:20:54 | object creation of type ArgumentNullException | PostDominance.cs:20:19:20:54 | object creation of type ArgumentNullException | normal | -| PostDominance.cs:20:45:20:53 | nameof(...) | PostDominance.cs:20:45:20:53 | nameof(...) | normal | -| PostDominance.cs:20:52:20:52 | access to parameter s | PostDominance.cs:20:52:20:52 | access to parameter s | normal | -| PostDominance.cs:21:9:21:28 | call to method WriteLine | PostDominance.cs:21:9:21:28 | call to method WriteLine | normal | -| PostDominance.cs:21:9:21:29 | ...; | PostDominance.cs:21:9:21:28 | call to method WriteLine | normal | -| PostDominance.cs:21:27:21:27 | access to parameter s | PostDominance.cs:21:27:21:27 | access to parameter s | normal | -| Qualifiers.cs:1:7:1:16 | call to constructor Object | Qualifiers.cs:1:7:1:16 | call to constructor Object | normal | -| Qualifiers.cs:1:7:1:16 | call to method | Qualifiers.cs:1:7:1:16 | call to method | normal | -| Qualifiers.cs:1:7:1:16 | this access | Qualifiers.cs:1:7:1:16 | this access | normal | -| Qualifiers.cs:1:7:1:16 | {...} | Qualifiers.cs:1:7:1:16 | {...} | normal | -| Qualifiers.cs:7:28:7:31 | null | Qualifiers.cs:7:28:7:31 | null | normal | -| Qualifiers.cs:8:41:8:44 | null | Qualifiers.cs:8:41:8:44 | null | normal | -| Qualifiers.cs:11:5:31:5 | {...} | Qualifiers.cs:30:9:30:46 | ... = ... | normal | -| Qualifiers.cs:12:9:12:22 | ... ...; | Qualifiers.cs:12:13:12:21 | Qualifiers q = ... | normal | -| Qualifiers.cs:12:13:12:21 | Qualifiers q = ... | Qualifiers.cs:12:13:12:21 | Qualifiers q = ... | normal | -| Qualifiers.cs:12:17:12:21 | access to field Field | Qualifiers.cs:12:17:12:21 | access to field Field | normal | -| Qualifiers.cs:12:17:12:21 | this access | Qualifiers.cs:12:17:12:21 | this access | normal | -| Qualifiers.cs:13:9:13:20 | ... = ... | Qualifiers.cs:13:9:13:20 | ... = ... | normal | -| Qualifiers.cs:13:9:13:21 | ...; | Qualifiers.cs:13:9:13:20 | ... = ... | normal | -| Qualifiers.cs:13:13:13:20 | access to property Property | Qualifiers.cs:13:13:13:20 | access to property Property | normal | -| Qualifiers.cs:13:13:13:20 | this access | Qualifiers.cs:13:13:13:20 | this access | normal | -| Qualifiers.cs:14:9:14:20 | ... = ... | Qualifiers.cs:14:9:14:20 | ... = ... | normal | -| Qualifiers.cs:14:9:14:21 | ...; | Qualifiers.cs:14:9:14:20 | ... = ... | normal | -| Qualifiers.cs:14:13:14:20 | call to method Method | Qualifiers.cs:14:13:14:20 | call to method Method | normal | -| Qualifiers.cs:14:13:14:20 | this access | Qualifiers.cs:14:13:14:20 | this access | normal | -| Qualifiers.cs:16:9:16:22 | ... = ... | Qualifiers.cs:16:9:16:22 | ... = ... | normal | -| Qualifiers.cs:16:9:16:23 | ...; | Qualifiers.cs:16:9:16:22 | ... = ... | normal | -| Qualifiers.cs:16:13:16:16 | this access | Qualifiers.cs:16:13:16:16 | this access | normal | -| Qualifiers.cs:16:13:16:22 | access to field Field | Qualifiers.cs:16:13:16:22 | access to field Field | normal | -| Qualifiers.cs:17:9:17:25 | ... = ... | Qualifiers.cs:17:9:17:25 | ... = ... | normal | -| Qualifiers.cs:17:9:17:26 | ...; | Qualifiers.cs:17:9:17:25 | ... = ... | normal | -| Qualifiers.cs:17:13:17:16 | this access | Qualifiers.cs:17:13:17:16 | this access | normal | -| Qualifiers.cs:17:13:17:25 | access to property Property | Qualifiers.cs:17:13:17:25 | access to property Property | normal | -| Qualifiers.cs:18:9:18:25 | ... = ... | Qualifiers.cs:18:9:18:25 | ... = ... | normal | -| Qualifiers.cs:18:9:18:26 | ...; | Qualifiers.cs:18:9:18:25 | ... = ... | normal | -| Qualifiers.cs:18:13:18:16 | this access | Qualifiers.cs:18:13:18:16 | this access | normal | -| Qualifiers.cs:18:13:18:25 | call to method Method | Qualifiers.cs:18:13:18:25 | call to method Method | normal | -| Qualifiers.cs:20:9:20:23 | ... = ... | Qualifiers.cs:20:9:20:23 | ... = ... | normal | -| Qualifiers.cs:20:9:20:24 | ...; | Qualifiers.cs:20:9:20:23 | ... = ... | normal | -| Qualifiers.cs:20:13:20:23 | access to field StaticField | Qualifiers.cs:20:13:20:23 | access to field StaticField | normal | -| Qualifiers.cs:21:9:21:26 | ... = ... | Qualifiers.cs:21:9:21:26 | ... = ... | normal | -| Qualifiers.cs:21:9:21:27 | ...; | Qualifiers.cs:21:9:21:26 | ... = ... | normal | -| Qualifiers.cs:21:13:21:26 | access to property StaticProperty | Qualifiers.cs:21:13:21:26 | access to property StaticProperty | normal | -| Qualifiers.cs:22:9:22:26 | ... = ... | Qualifiers.cs:22:9:22:26 | ... = ... | normal | -| Qualifiers.cs:22:9:22:27 | ...; | Qualifiers.cs:22:9:22:26 | ... = ... | normal | -| Qualifiers.cs:22:13:22:26 | call to method StaticMethod | Qualifiers.cs:22:13:22:26 | call to method StaticMethod | normal | -| Qualifiers.cs:24:9:24:34 | ... = ... | Qualifiers.cs:24:9:24:34 | ... = ... | normal | -| Qualifiers.cs:24:9:24:35 | ...; | Qualifiers.cs:24:9:24:34 | ... = ... | normal | -| Qualifiers.cs:24:13:24:34 | access to field StaticField | Qualifiers.cs:24:13:24:34 | access to field StaticField | normal | -| Qualifiers.cs:25:9:25:37 | ... = ... | Qualifiers.cs:25:9:25:37 | ... = ... | normal | -| Qualifiers.cs:25:9:25:38 | ...; | Qualifiers.cs:25:9:25:37 | ... = ... | normal | -| Qualifiers.cs:25:13:25:37 | access to property StaticProperty | Qualifiers.cs:25:13:25:37 | access to property StaticProperty | normal | -| Qualifiers.cs:26:9:26:37 | ... = ... | Qualifiers.cs:26:9:26:37 | ... = ... | normal | -| Qualifiers.cs:26:9:26:38 | ...; | Qualifiers.cs:26:9:26:37 | ... = ... | normal | -| Qualifiers.cs:26:13:26:37 | call to method StaticMethod | Qualifiers.cs:26:13:26:37 | call to method StaticMethod | normal | -| Qualifiers.cs:28:9:28:40 | ... = ... | Qualifiers.cs:28:9:28:40 | ... = ... | normal | -| Qualifiers.cs:28:9:28:41 | ...; | Qualifiers.cs:28:9:28:40 | ... = ... | normal | -| Qualifiers.cs:28:13:28:34 | access to field StaticField | Qualifiers.cs:28:13:28:34 | access to field StaticField | normal | -| Qualifiers.cs:28:13:28:40 | access to field Field | Qualifiers.cs:28:13:28:40 | access to field Field | normal | -| Qualifiers.cs:29:9:29:46 | ... = ... | Qualifiers.cs:29:9:29:46 | ... = ... | normal | -| Qualifiers.cs:29:9:29:47 | ...; | Qualifiers.cs:29:9:29:46 | ... = ... | normal | -| Qualifiers.cs:29:13:29:37 | access to property StaticProperty | Qualifiers.cs:29:13:29:37 | access to property StaticProperty | normal | -| Qualifiers.cs:29:13:29:46 | access to property Property | Qualifiers.cs:29:13:29:46 | access to property Property | normal | -| Qualifiers.cs:30:9:30:46 | ... = ... | Qualifiers.cs:30:9:30:46 | ... = ... | normal | -| Qualifiers.cs:30:9:30:47 | ...; | Qualifiers.cs:30:9:30:46 | ... = ... | normal | -| Qualifiers.cs:30:13:30:37 | call to method StaticMethod | Qualifiers.cs:30:13:30:37 | call to method StaticMethod | normal | -| Qualifiers.cs:30:13:30:46 | call to method Method | Qualifiers.cs:30:13:30:46 | call to method Method | normal | -| Switch.cs:3:7:3:12 | call to constructor Object | Switch.cs:3:7:3:12 | call to constructor Object | normal | -| Switch.cs:3:7:3:12 | call to method | Switch.cs:3:7:3:12 | call to method | normal | -| Switch.cs:3:7:3:12 | this access | Switch.cs:3:7:3:12 | this access | normal | -| Switch.cs:3:7:3:12 | {...} | Switch.cs:3:7:3:12 | {...} | normal | -| Switch.cs:6:5:8:5 | {...} | Switch.cs:7:17:7:17 | access to parameter o | normal | -| Switch.cs:7:9:7:22 | switch (...) {...} | Switch.cs:7:17:7:17 | access to parameter o | normal | -| Switch.cs:7:17:7:17 | access to parameter o | Switch.cs:7:17:7:17 | access to parameter o | normal | -| Switch.cs:11:5:33:5 | {...} | Switch.cs:15:17:15:23 | return ...; | return | -| Switch.cs:11:5:33:5 | {...} | Switch.cs:17:17:17:38 | throw ...; | throw(Exception) | -| Switch.cs:11:5:33:5 | {...} | Switch.cs:22:21:22:27 | return ...; | return | -| Switch.cs:11:5:33:5 | {...} | Switch.cs:26:17:26:23 | return ...; | return | -| Switch.cs:11:5:33:5 | {...} | Switch.cs:27:32:27:38 | call to method Throw | throw(Exception) | -| Switch.cs:11:5:33:5 | {...} | Switch.cs:29:17:29:23 | return ...; | return | -| Switch.cs:11:5:33:5 | {...} | Switch.cs:31:17:31:27 | goto ...; | goto(Label) | -| Switch.cs:12:9:32:9 | switch (...) {...} | Switch.cs:15:17:15:23 | return ...; | return | -| Switch.cs:12:9:32:9 | switch (...) {...} | Switch.cs:17:17:17:38 | throw ...; | throw(Exception) | -| Switch.cs:12:9:32:9 | switch (...) {...} | Switch.cs:22:21:22:27 | return ...; | return | -| Switch.cs:12:9:32:9 | switch (...) {...} | Switch.cs:26:17:26:23 | return ...; | return | -| Switch.cs:12:9:32:9 | switch (...) {...} | Switch.cs:27:32:27:38 | call to method Throw | throw(Exception) | -| Switch.cs:12:9:32:9 | switch (...) {...} | Switch.cs:29:17:29:23 | return ...; | return | -| Switch.cs:12:9:32:9 | switch (...) {...} | Switch.cs:31:17:31:27 | goto ...; | goto(Label) | -| Switch.cs:12:17:12:17 | access to parameter o | Switch.cs:12:17:12:17 | access to parameter o | normal | -| Switch.cs:14:13:14:21 | case ...: | Switch.cs:14:18:14:20 | "a" | no-match | -| Switch.cs:14:13:14:21 | case ...: | Switch.cs:15:17:15:23 | return ...; | return | -| Switch.cs:14:18:14:20 | "a" | Switch.cs:14:18:14:20 | "a" | match | -| Switch.cs:14:18:14:20 | "a" | Switch.cs:14:18:14:20 | "a" | no-match | -| Switch.cs:15:17:15:23 | return ...; | Switch.cs:15:17:15:23 | return ...; | return | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:16:18:16:18 | 0 | no-match | -| Switch.cs:16:13:16:19 | case ...: | Switch.cs:17:17:17:38 | throw ...; | throw(Exception) | -| Switch.cs:16:18:16:18 | 0 | Switch.cs:16:18:16:18 | 0 | match | -| Switch.cs:16:18:16:18 | 0 | Switch.cs:16:18:16:18 | 0 | no-match | -| Switch.cs:17:17:17:38 | throw ...; | Switch.cs:17:17:17:38 | throw ...; | throw(Exception) | -| Switch.cs:17:23:17:37 | object creation of type Exception | Switch.cs:17:23:17:37 | object creation of type Exception | normal | -| Switch.cs:18:13:18:22 | case ...: | Switch.cs:18:18:18:21 | null | no-match | -| Switch.cs:18:13:18:22 | case ...: | Switch.cs:19:17:19:29 | goto default; | goto(default) | -| Switch.cs:18:18:18:21 | null | Switch.cs:18:18:18:21 | null | match | -| Switch.cs:18:18:18:21 | null | Switch.cs:18:18:18:21 | null | no-match | -| Switch.cs:19:17:19:29 | goto default; | Switch.cs:19:17:19:29 | goto default; | goto(default) | -| Switch.cs:20:13:20:23 | case ...: | Switch.cs:20:18:20:22 | Int32 i | no-match | -| Switch.cs:20:13:20:23 | case ...: | Switch.cs:21:21:21:29 | ... == ... | false | -| Switch.cs:20:13:20:23 | case ...: | Switch.cs:22:21:22:27 | return ...; | return | -| Switch.cs:20:18:20:22 | Int32 i | Switch.cs:20:18:20:22 | Int32 i | match | -| Switch.cs:20:18:20:22 | Int32 i | Switch.cs:20:18:20:22 | Int32 i | no-match | -| Switch.cs:21:17:22:27 | if (...) ... | Switch.cs:21:21:21:29 | ... == ... | false | -| Switch.cs:21:17:22:27 | if (...) ... | Switch.cs:22:21:22:27 | return ...; | return | -| Switch.cs:21:21:21:21 | access to parameter o | Switch.cs:21:21:21:21 | access to parameter o | normal | -| Switch.cs:21:21:21:29 | ... == ... | Switch.cs:21:21:21:29 | ... == ... | false | -| Switch.cs:21:21:21:29 | ... == ... | Switch.cs:21:21:21:29 | ... == ... | true | -| Switch.cs:21:26:21:29 | null | Switch.cs:21:26:21:29 | null | normal | -| Switch.cs:22:21:22:27 | return ...; | Switch.cs:22:21:22:27 | return ...; | return | -| Switch.cs:23:17:23:28 | goto case ...; | Switch.cs:23:17:23:28 | goto case ...; | goto(0) | -| Switch.cs:23:27:23:27 | 0 | Switch.cs:23:27:23:27 | 0 | normal | -| Switch.cs:24:13:24:56 | case ...: | Switch.cs:24:18:24:25 | String s | no-match | -| Switch.cs:24:13:24:56 | case ...: | Switch.cs:24:32:24:55 | ... && ... | false | -| Switch.cs:24:13:24:56 | case ...: | Switch.cs:25:17:25:36 | call to method WriteLine | normal | -| Switch.cs:24:18:24:25 | String s | Switch.cs:24:18:24:25 | String s | match | -| Switch.cs:24:18:24:25 | String s | Switch.cs:24:18:24:25 | String s | no-match | -| Switch.cs:24:32:24:32 | access to local variable s | Switch.cs:24:32:24:32 | access to local variable s | normal | -| Switch.cs:24:32:24:39 | access to property Length | Switch.cs:24:32:24:39 | access to property Length | normal | -| Switch.cs:24:32:24:43 | ... > ... | Switch.cs:24:32:24:43 | ... > ... | false | -| Switch.cs:24:32:24:43 | ... > ... | Switch.cs:24:32:24:43 | ... > ... | true | -| Switch.cs:24:32:24:55 | ... && ... | Switch.cs:24:32:24:55 | ... && ... | false | -| Switch.cs:24:32:24:55 | ... && ... | Switch.cs:24:32:24:55 | ... && ... | true | -| Switch.cs:24:43:24:43 | 0 | Switch.cs:24:43:24:43 | 0 | normal | -| Switch.cs:24:48:24:48 | access to local variable s | Switch.cs:24:48:24:48 | access to local variable s | normal | -| Switch.cs:24:48:24:55 | ... != ... | Switch.cs:24:48:24:55 | ... != ... | false | -| Switch.cs:24:48:24:55 | ... != ... | Switch.cs:24:48:24:55 | ... != ... | true | -| Switch.cs:24:53:24:55 | "a" | Switch.cs:24:53:24:55 | "a" | normal | -| Switch.cs:25:17:25:36 | call to method WriteLine | Switch.cs:25:17:25:36 | call to method WriteLine | normal | -| Switch.cs:25:17:25:37 | ...; | Switch.cs:25:17:25:36 | call to method WriteLine | normal | -| Switch.cs:25:35:25:35 | access to local variable s | Switch.cs:25:35:25:35 | access to local variable s | normal | -| Switch.cs:26:17:26:23 | return ...; | Switch.cs:26:17:26:23 | return ...; | return | -| Switch.cs:27:13:27:39 | case ...: | Switch.cs:27:18:27:25 | Double d | no-match | -| Switch.cs:27:13:27:39 | case ...: | Switch.cs:27:32:27:38 | call to method Throw | throw(Exception) | -| Switch.cs:27:13:27:39 | case ...: | Switch.cs:28:13:28:17 | Label: | normal | -| Switch.cs:27:18:27:25 | Double d | Switch.cs:27:18:27:25 | Double d | match | -| Switch.cs:27:18:27:25 | Double d | Switch.cs:27:18:27:25 | Double d | no-match | -| Switch.cs:27:32:27:38 | call to method Throw | Switch.cs:27:32:27:38 | call to method Throw | throw(Exception) | -| Switch.cs:28:13:28:17 | Label: | Switch.cs:28:13:28:17 | Label: | normal | -| Switch.cs:29:17:29:23 | return ...; | Switch.cs:29:17:29:23 | return ...; | return | -| Switch.cs:30:13:30:20 | default: | Switch.cs:31:17:31:27 | goto ...; | goto(Label) | -| Switch.cs:31:17:31:27 | goto ...; | Switch.cs:31:17:31:27 | goto ...; | goto(Label) | -| Switch.cs:36:5:42:5 | {...} | Switch.cs:37:17:37:23 | call to method Throw | throw(Exception) | -| Switch.cs:36:5:42:5 | {...} | Switch.cs:40:17:40:23 | return ...; | return | -| Switch.cs:37:9:41:9 | switch (...) {...} | Switch.cs:37:17:37:23 | call to method Throw | throw(Exception) | -| Switch.cs:37:9:41:9 | switch (...) {...} | Switch.cs:40:17:40:23 | return ...; | return | -| Switch.cs:37:17:37:23 | call to method Throw | Switch.cs:37:17:37:23 | call to method Throw | throw(Exception) | -| Switch.cs:39:13:39:20 | default: | Switch.cs:40:17:40:23 | return ...; | return | -| Switch.cs:40:17:40:23 | return ...; | Switch.cs:40:17:40:23 | return ...; | return | -| Switch.cs:45:5:53:5 | {...} | Switch.cs:49:17:49:22 | break; | normal [break] (0) | -| Switch.cs:45:5:53:5 | {...} | Switch.cs:50:18:50:21 | access to type Boolean | no-match | -| Switch.cs:45:5:53:5 | {...} | Switch.cs:50:30:50:38 | ... != ... | false | -| Switch.cs:45:5:53:5 | {...} | Switch.cs:51:17:51:22 | break; | normal [break] (0) | -| Switch.cs:46:9:52:9 | switch (...) {...} | Switch.cs:49:17:49:22 | break; | normal [break] (0) | -| Switch.cs:46:9:52:9 | switch (...) {...} | Switch.cs:50:18:50:21 | access to type Boolean | no-match | -| Switch.cs:46:9:52:9 | switch (...) {...} | Switch.cs:50:30:50:38 | ... != ... | false | -| Switch.cs:46:9:52:9 | switch (...) {...} | Switch.cs:51:17:51:22 | break; | normal [break] (0) | -| Switch.cs:46:17:46:17 | access to parameter o | Switch.cs:46:17:46:17 | access to parameter o | normal | -| Switch.cs:48:13:48:23 | case ...: | Switch.cs:48:18:48:20 | access to type Int32 | no-match | -| Switch.cs:48:13:48:23 | case ...: | Switch.cs:49:17:49:22 | break; | break | -| Switch.cs:48:18:48:20 | access to type Int32 | Switch.cs:48:18:48:20 | access to type Int32 | match | -| Switch.cs:48:18:48:20 | access to type Int32 | Switch.cs:48:18:48:20 | access to type Int32 | no-match | -| Switch.cs:49:17:49:22 | break; | Switch.cs:49:17:49:22 | break; | break | -| Switch.cs:50:13:50:39 | case ...: | Switch.cs:50:18:50:21 | access to type Boolean | no-match | -| Switch.cs:50:13:50:39 | case ...: | Switch.cs:50:30:50:38 | ... != ... | false | -| Switch.cs:50:13:50:39 | case ...: | Switch.cs:51:17:51:22 | break; | break | -| Switch.cs:50:18:50:21 | access to type Boolean | Switch.cs:50:18:50:21 | access to type Boolean | match | -| Switch.cs:50:18:50:21 | access to type Boolean | Switch.cs:50:18:50:21 | access to type Boolean | no-match | -| Switch.cs:50:30:50:30 | access to parameter o | Switch.cs:50:30:50:30 | access to parameter o | normal | -| Switch.cs:50:30:50:38 | ... != ... | Switch.cs:50:30:50:38 | ... != ... | false | -| Switch.cs:50:30:50:38 | ... != ... | Switch.cs:50:30:50:38 | ... != ... | true | -| Switch.cs:50:35:50:38 | null | Switch.cs:50:35:50:38 | null | normal | -| Switch.cs:51:17:51:22 | break; | Switch.cs:51:17:51:22 | break; | break | -| Switch.cs:56:5:64:5 | {...} | Switch.cs:60:17:60:22 | break; | normal [break] (0) | -| Switch.cs:56:5:64:5 | {...} | Switch.cs:62:17:62:22 | break; | normal [break] (0) | -| Switch.cs:57:9:63:9 | switch (...) {...} | Switch.cs:60:17:60:22 | break; | normal [break] (0) | -| Switch.cs:57:9:63:9 | switch (...) {...} | Switch.cs:62:17:62:22 | break; | normal [break] (0) | -| Switch.cs:57:17:57:17 | 1 | Switch.cs:57:17:57:17 | 1 | normal | -| Switch.cs:57:17:57:21 | ... + ... | Switch.cs:57:17:57:21 | ... + ... | normal | -| Switch.cs:57:21:57:21 | 2 | Switch.cs:57:21:57:21 | 2 | normal | -| Switch.cs:59:13:59:19 | case ...: | Switch.cs:59:18:59:18 | 2 | no-match | -| Switch.cs:59:13:59:19 | case ...: | Switch.cs:60:17:60:22 | break; | break | -| Switch.cs:59:18:59:18 | 2 | Switch.cs:59:18:59:18 | 2 | no-match | -| Switch.cs:60:17:60:22 | break; | Switch.cs:60:17:60:22 | break; | break | -| Switch.cs:61:13:61:19 | case ...: | Switch.cs:62:17:62:22 | break; | break | -| Switch.cs:61:18:61:18 | 3 | Switch.cs:61:18:61:18 | 3 | match | -| Switch.cs:62:17:62:22 | break; | Switch.cs:62:17:62:22 | break; | break | -| Switch.cs:67:5:75:5 | {...} | Switch.cs:71:17:71:22 | break; | normal [break] (0) | -| Switch.cs:67:5:75:5 | {...} | Switch.cs:72:18:72:19 | "" | no-match | -| Switch.cs:67:5:75:5 | {...} | Switch.cs:73:17:73:22 | break; | normal [break] (0) | -| Switch.cs:68:9:74:9 | switch (...) {...} | Switch.cs:71:17:71:22 | break; | normal [break] (0) | -| Switch.cs:68:9:74:9 | switch (...) {...} | Switch.cs:72:18:72:19 | "" | no-match | -| Switch.cs:68:9:74:9 | switch (...) {...} | Switch.cs:73:17:73:22 | break; | normal [break] (0) | -| Switch.cs:68:17:68:25 | (...) ... | Switch.cs:68:17:68:25 | (...) ... | normal | -| Switch.cs:68:25:68:25 | access to parameter s | Switch.cs:68:25:68:25 | access to parameter s | normal | -| Switch.cs:70:13:70:23 | case ...: | Switch.cs:70:18:70:20 | access to type Int32 | no-match | -| Switch.cs:70:13:70:23 | case ...: | Switch.cs:71:17:71:22 | break; | break | -| Switch.cs:70:18:70:20 | access to type Int32 | Switch.cs:70:18:70:20 | access to type Int32 | no-match | -| Switch.cs:71:17:71:22 | break; | Switch.cs:71:17:71:22 | break; | break | -| Switch.cs:72:13:72:20 | case ...: | Switch.cs:72:18:72:19 | "" | no-match | -| Switch.cs:72:13:72:20 | case ...: | Switch.cs:73:17:73:22 | break; | break | -| Switch.cs:72:18:72:19 | "" | Switch.cs:72:18:72:19 | "" | match | -| Switch.cs:72:18:72:19 | "" | Switch.cs:72:18:72:19 | "" | no-match | -| Switch.cs:73:17:73:22 | break; | Switch.cs:73:17:73:22 | break; | break | -| Switch.cs:78:5:89:5 | {...} | Switch.cs:82:17:82:28 | return ...; | return | -| Switch.cs:78:5:89:5 | {...} | Switch.cs:86:17:86:28 | return ...; | return | -| Switch.cs:78:5:89:5 | {...} | Switch.cs:88:9:88:21 | return ...; | return | -| Switch.cs:79:9:87:9 | switch (...) {...} | Switch.cs:82:17:82:28 | return ...; | return | -| Switch.cs:79:9:87:9 | switch (...) {...} | Switch.cs:83:18:83:18 | 2 | no-match | -| Switch.cs:79:9:87:9 | switch (...) {...} | Switch.cs:85:21:85:26 | break; | normal [break] (0) | -| Switch.cs:79:9:87:9 | switch (...) {...} | Switch.cs:86:17:86:28 | return ...; | return | -| Switch.cs:79:17:79:17 | access to parameter i | Switch.cs:79:17:79:17 | access to parameter i | normal | -| Switch.cs:81:13:81:19 | case ...: | Switch.cs:81:18:81:18 | 1 | no-match | -| Switch.cs:81:13:81:19 | case ...: | Switch.cs:82:17:82:28 | return ...; | return | -| Switch.cs:81:18:81:18 | 1 | Switch.cs:81:18:81:18 | 1 | match | -| Switch.cs:81:18:81:18 | 1 | Switch.cs:81:18:81:18 | 1 | no-match | -| Switch.cs:82:17:82:28 | return ...; | Switch.cs:82:17:82:28 | return ...; | return | -| Switch.cs:82:24:82:27 | true | Switch.cs:82:24:82:27 | true | normal | -| Switch.cs:83:13:83:19 | case ...: | Switch.cs:83:18:83:18 | 2 | no-match | -| Switch.cs:83:13:83:19 | case ...: | Switch.cs:84:21:84:25 | ... > ... | false | -| Switch.cs:83:13:83:19 | case ...: | Switch.cs:85:21:85:26 | break; | break | -| Switch.cs:83:18:83:18 | 2 | Switch.cs:83:18:83:18 | 2 | match | -| Switch.cs:83:18:83:18 | 2 | Switch.cs:83:18:83:18 | 2 | no-match | -| Switch.cs:84:17:85:26 | if (...) ... | Switch.cs:84:21:84:25 | ... > ... | false | -| Switch.cs:84:17:85:26 | if (...) ... | Switch.cs:85:21:85:26 | break; | break | -| Switch.cs:84:21:84:21 | access to parameter j | Switch.cs:84:21:84:21 | access to parameter j | normal | -| Switch.cs:84:21:84:25 | ... > ... | Switch.cs:84:21:84:25 | ... > ... | false | -| Switch.cs:84:21:84:25 | ... > ... | Switch.cs:84:21:84:25 | ... > ... | true | -| Switch.cs:84:25:84:25 | 2 | Switch.cs:84:25:84:25 | 2 | normal | -| Switch.cs:85:21:85:26 | break; | Switch.cs:85:21:85:26 | break; | break | -| Switch.cs:86:17:86:28 | return ...; | Switch.cs:86:17:86:28 | return ...; | return | -| Switch.cs:86:24:86:27 | true | Switch.cs:86:24:86:27 | true | normal | -| Switch.cs:88:9:88:21 | return ...; | Switch.cs:88:9:88:21 | return ...; | return | -| Switch.cs:88:16:88:20 | false | Switch.cs:88:16:88:20 | false | normal | -| Switch.cs:92:5:99:5 | {...} | Switch.cs:96:17:96:28 | return ...; | return | -| Switch.cs:92:5:99:5 | {...} | Switch.cs:98:9:98:21 | return ...; | return | -| Switch.cs:93:9:97:9 | switch (...) {...} | Switch.cs:95:18:95:20 | access to type Int32 | no-match | -| Switch.cs:93:9:97:9 | switch (...) {...} | Switch.cs:96:17:96:28 | return ...; | return | -| Switch.cs:93:17:93:17 | access to parameter o | Switch.cs:93:17:93:17 | access to parameter o | normal | -| Switch.cs:95:13:95:23 | case ...: | Switch.cs:95:18:95:20 | access to type Int32 | no-match | -| Switch.cs:95:13:95:23 | case ...: | Switch.cs:96:17:96:28 | return ...; | return | -| Switch.cs:95:18:95:20 | access to type Int32 | Switch.cs:95:18:95:20 | access to type Int32 | match | -| Switch.cs:95:18:95:20 | access to type Int32 | Switch.cs:95:18:95:20 | access to type Int32 | no-match | -| Switch.cs:96:17:96:28 | return ...; | Switch.cs:96:17:96:28 | return ...; | return | -| Switch.cs:96:24:96:27 | true | Switch.cs:96:24:96:27 | true | normal | -| Switch.cs:98:9:98:21 | return ...; | Switch.cs:98:9:98:21 | return ...; | return | -| Switch.cs:98:16:98:20 | false | Switch.cs:98:16:98:20 | false | normal | -| Switch.cs:102:5:109:5 | {...} | Switch.cs:105:21:105:29 | return ...; | return | -| Switch.cs:102:5:109:5 | {...} | Switch.cs:106:21:106:29 | return ...; | return | -| Switch.cs:102:5:109:5 | {...} | Switch.cs:108:9:108:18 | return ...; | return | -| Switch.cs:103:9:107:9 | switch (...) {...} | Switch.cs:105:21:105:29 | return ...; | return | -| Switch.cs:103:9:107:9 | switch (...) {...} | Switch.cs:106:18:106:18 | 1 | no-match | -| Switch.cs:103:9:107:9 | switch (...) {...} | Switch.cs:106:21:106:29 | return ...; | return | -| Switch.cs:103:17:103:17 | access to parameter s | Switch.cs:103:17:103:17 | access to parameter s | non-null | -| Switch.cs:103:17:103:17 | access to parameter s | Switch.cs:103:17:103:17 | access to parameter s | null | -| Switch.cs:103:17:103:25 | access to property Length | Switch.cs:103:17:103:17 | access to parameter s | null | -| Switch.cs:103:17:103:25 | access to property Length | Switch.cs:103:17:103:25 | access to property Length | normal | -| Switch.cs:105:13:105:19 | case ...: | Switch.cs:105:18:105:18 | 0 | no-match | -| Switch.cs:105:13:105:19 | case ...: | Switch.cs:105:21:105:29 | return ...; | return | -| Switch.cs:105:18:105:18 | 0 | Switch.cs:105:18:105:18 | 0 | match | -| Switch.cs:105:18:105:18 | 0 | Switch.cs:105:18:105:18 | 0 | no-match | -| Switch.cs:105:21:105:29 | return ...; | Switch.cs:105:21:105:29 | return ...; | return | -| Switch.cs:105:28:105:28 | 0 | Switch.cs:105:28:105:28 | 0 | normal | -| Switch.cs:106:13:106:19 | case ...: | Switch.cs:106:18:106:18 | 1 | no-match | -| Switch.cs:106:13:106:19 | case ...: | Switch.cs:106:21:106:29 | return ...; | return | -| Switch.cs:106:18:106:18 | 1 | Switch.cs:106:18:106:18 | 1 | match | -| Switch.cs:106:18:106:18 | 1 | Switch.cs:106:18:106:18 | 1 | no-match | -| Switch.cs:106:21:106:29 | return ...; | Switch.cs:106:21:106:29 | return ...; | return | -| Switch.cs:106:28:106:28 | 1 | Switch.cs:106:28:106:28 | 1 | normal | -| Switch.cs:108:9:108:18 | return ...; | Switch.cs:108:9:108:18 | return ...; | return | -| Switch.cs:108:16:108:17 | -... | Switch.cs:108:16:108:17 | -... | normal | -| Switch.cs:108:17:108:17 | 1 | Switch.cs:108:17:108:17 | 1 | normal | -| Switch.cs:111:28:111:48 | throw ... | Switch.cs:111:28:111:48 | throw ... | throw(Exception) | -| Switch.cs:111:34:111:48 | object creation of type Exception | Switch.cs:111:34:111:48 | object creation of type Exception | normal | -| Switch.cs:114:5:121:5 | {...} | Switch.cs:117:37:117:45 | return ...; | return | -| Switch.cs:114:5:121:5 | {...} | Switch.cs:118:36:118:44 | return ...; | return | -| Switch.cs:114:5:121:5 | {...} | Switch.cs:120:9:120:18 | return ...; | return | -| Switch.cs:115:9:119:9 | switch (...) {...} | Switch.cs:117:37:117:45 | return ...; | return | -| Switch.cs:115:9:119:9 | switch (...) {...} | Switch.cs:118:18:118:18 | 2 | no-match | -| Switch.cs:115:9:119:9 | switch (...) {...} | Switch.cs:118:25:118:33 | ... == ... | false | -| Switch.cs:115:9:119:9 | switch (...) {...} | Switch.cs:118:36:118:44 | return ...; | return | -| Switch.cs:115:17:115:17 | access to parameter s | Switch.cs:115:17:115:17 | access to parameter s | normal | -| Switch.cs:115:17:115:24 | access to property Length | Switch.cs:115:17:115:24 | access to property Length | normal | -| Switch.cs:117:13:117:35 | case ...: | Switch.cs:117:18:117:18 | 3 | no-match | -| Switch.cs:117:13:117:35 | case ...: | Switch.cs:117:25:117:34 | ... == ... | false | -| Switch.cs:117:13:117:35 | case ...: | Switch.cs:117:37:117:45 | return ...; | return | -| Switch.cs:117:18:117:18 | 3 | Switch.cs:117:18:117:18 | 3 | match | -| Switch.cs:117:18:117:18 | 3 | Switch.cs:117:18:117:18 | 3 | no-match | -| Switch.cs:117:25:117:25 | access to parameter s | Switch.cs:117:25:117:25 | access to parameter s | normal | -| Switch.cs:117:25:117:34 | ... == ... | Switch.cs:117:25:117:34 | ... == ... | false | -| Switch.cs:117:25:117:34 | ... == ... | Switch.cs:117:25:117:34 | ... == ... | true | -| Switch.cs:117:30:117:34 | "foo" | Switch.cs:117:30:117:34 | "foo" | normal | -| Switch.cs:117:37:117:45 | return ...; | Switch.cs:117:37:117:45 | return ...; | return | -| Switch.cs:117:44:117:44 | 1 | Switch.cs:117:44:117:44 | 1 | normal | -| Switch.cs:118:13:118:34 | case ...: | Switch.cs:118:18:118:18 | 2 | no-match | -| Switch.cs:118:13:118:34 | case ...: | Switch.cs:118:25:118:33 | ... == ... | false | -| Switch.cs:118:13:118:34 | case ...: | Switch.cs:118:36:118:44 | return ...; | return | -| Switch.cs:118:18:118:18 | 2 | Switch.cs:118:18:118:18 | 2 | match | -| Switch.cs:118:18:118:18 | 2 | Switch.cs:118:18:118:18 | 2 | no-match | -| Switch.cs:118:25:118:25 | access to parameter s | Switch.cs:118:25:118:25 | access to parameter s | normal | -| Switch.cs:118:25:118:33 | ... == ... | Switch.cs:118:25:118:33 | ... == ... | false | -| Switch.cs:118:25:118:33 | ... == ... | Switch.cs:118:25:118:33 | ... == ... | true | -| Switch.cs:118:30:118:33 | "fu" | Switch.cs:118:30:118:33 | "fu" | normal | -| Switch.cs:118:36:118:44 | return ...; | Switch.cs:118:36:118:44 | return ...; | return | -| Switch.cs:118:43:118:43 | 2 | Switch.cs:118:43:118:43 | 2 | normal | -| Switch.cs:120:9:120:18 | return ...; | Switch.cs:120:9:120:18 | return ...; | return | -| Switch.cs:120:16:120:17 | -... | Switch.cs:120:16:120:17 | -... | normal | -| Switch.cs:120:17:120:17 | 1 | Switch.cs:120:17:120:17 | 1 | normal | -| Switch.cs:124:5:127:5 | {...} | Switch.cs:125:13:125:48 | ... switch { ... } | false | -| Switch.cs:124:5:127:5 | {...} | Switch.cs:126:13:126:19 | return ...; | return | -| Switch.cs:125:9:126:19 | if (...) ... | Switch.cs:125:13:125:48 | ... switch { ... } | false | -| Switch.cs:125:9:126:19 | if (...) ... | Switch.cs:126:13:126:19 | return ...; | return | -| Switch.cs:125:13:125:13 | access to parameter o | Switch.cs:125:13:125:13 | access to parameter o | normal | -| Switch.cs:125:13:125:48 | ... switch { ... } | Switch.cs:125:13:125:48 | ... switch { ... } | false | -| Switch.cs:125:13:125:48 | ... switch { ... } | Switch.cs:125:13:125:48 | ... switch { ... } | true | -| Switch.cs:125:24:125:29 | Boolean b | Switch.cs:125:24:125:29 | Boolean b | match | -| Switch.cs:125:24:125:29 | Boolean b | Switch.cs:125:24:125:29 | Boolean b | no-match | -| Switch.cs:125:24:125:34 | ... => ... | Switch.cs:125:24:125:34 | ... => ... | false | -| Switch.cs:125:24:125:34 | ... => ... | Switch.cs:125:24:125:34 | ... => ... | true | -| Switch.cs:125:34:125:34 | access to local variable b | Switch.cs:125:34:125:34 | access to local variable b | false | -| Switch.cs:125:34:125:34 | access to local variable b | Switch.cs:125:34:125:34 | access to local variable b | true | -| Switch.cs:125:37:125:37 | _ | Switch.cs:125:37:125:37 | _ | match | -| Switch.cs:125:37:125:46 | ... => ... | Switch.cs:125:37:125:46 | ... => ... | false | -| Switch.cs:125:37:125:46 | ... => ... | Switch.cs:125:37:125:46 | ... => ... | true | -| Switch.cs:125:42:125:46 | false | Switch.cs:125:42:125:46 | false | false | -| Switch.cs:126:13:126:19 | return ...; | Switch.cs:126:13:126:19 | return ...; | return | -| Switch.cs:130:5:132:5 | {...} | Switch.cs:131:9:131:67 | return ...; | return | -| Switch.cs:131:9:131:67 | return ...; | Switch.cs:131:9:131:67 | return ...; | return | -| Switch.cs:131:16:131:66 | call to method ToString | Switch.cs:131:16:131:66 | call to method ToString | normal | -| Switch.cs:131:16:131:66 | call to method ToString | Switch.cs:131:17:131:53 | ... switch { ... } | null | -| Switch.cs:131:17:131:17 | access to parameter o | Switch.cs:131:17:131:17 | access to parameter o | normal | -| Switch.cs:131:17:131:53 | ... switch { ... } | Switch.cs:131:17:131:53 | ... switch { ... } | non-null | -| Switch.cs:131:17:131:53 | ... switch { ... } | Switch.cs:131:17:131:53 | ... switch { ... } | null | -| Switch.cs:131:28:131:35 | String s | Switch.cs:131:28:131:35 | String s | match | -| Switch.cs:131:28:131:35 | String s | Switch.cs:131:28:131:35 | String s | no-match | -| Switch.cs:131:28:131:40 | ... => ... | Switch.cs:131:28:131:40 | ... => ... | non-null | -| Switch.cs:131:28:131:40 | ... => ... | Switch.cs:131:28:131:40 | ... => ... | null | -| Switch.cs:131:40:131:40 | access to local variable s | Switch.cs:131:40:131:40 | access to local variable s | non-null | -| Switch.cs:131:40:131:40 | access to local variable s | Switch.cs:131:40:131:40 | access to local variable s | null | -| Switch.cs:131:43:131:43 | _ | Switch.cs:131:43:131:43 | _ | match | -| Switch.cs:131:43:131:51 | ... => ... | Switch.cs:131:43:131:51 | ... => ... | non-null | -| Switch.cs:131:43:131:51 | ... => ... | Switch.cs:131:43:131:51 | ... => ... | null | -| Switch.cs:131:48:131:51 | null | Switch.cs:131:48:131:51 | null | null | -| Switch.cs:135:5:142:5 | {...} | Switch.cs:138:22:138:31 | return ...; | return | -| Switch.cs:135:5:142:5 | {...} | Switch.cs:139:21:139:29 | return ...; | return | -| Switch.cs:135:5:142:5 | {...} | Switch.cs:140:21:140:29 | return ...; | return | -| Switch.cs:136:9:141:9 | switch (...) {...} | Switch.cs:138:22:138:31 | return ...; | return | -| Switch.cs:136:9:141:9 | switch (...) {...} | Switch.cs:139:21:139:29 | return ...; | return | -| Switch.cs:136:9:141:9 | switch (...) {...} | Switch.cs:140:21:140:29 | return ...; | return | -| Switch.cs:136:17:136:17 | access to parameter i | Switch.cs:136:17:136:17 | access to parameter i | normal | -| Switch.cs:138:13:138:20 | default: | Switch.cs:138:22:138:31 | return ...; | return | -| Switch.cs:138:22:138:31 | return ...; | Switch.cs:138:22:138:31 | return ...; | return | -| Switch.cs:138:29:138:30 | -... | Switch.cs:138:29:138:30 | -... | normal | -| Switch.cs:138:30:138:30 | 1 | Switch.cs:138:30:138:30 | 1 | normal | -| Switch.cs:139:13:139:19 | case ...: | Switch.cs:139:18:139:18 | 1 | no-match | -| Switch.cs:139:13:139:19 | case ...: | Switch.cs:139:21:139:29 | return ...; | return | -| Switch.cs:139:18:139:18 | 1 | Switch.cs:139:18:139:18 | 1 | match | -| Switch.cs:139:18:139:18 | 1 | Switch.cs:139:18:139:18 | 1 | no-match | -| Switch.cs:139:21:139:29 | return ...; | Switch.cs:139:21:139:29 | return ...; | return | -| Switch.cs:139:28:139:28 | 1 | Switch.cs:139:28:139:28 | 1 | normal | -| Switch.cs:140:13:140:19 | case ...: | Switch.cs:140:18:140:18 | 2 | no-match | -| Switch.cs:140:13:140:19 | case ...: | Switch.cs:140:21:140:29 | return ...; | return | -| Switch.cs:140:18:140:18 | 2 | Switch.cs:140:18:140:18 | 2 | match | -| Switch.cs:140:18:140:18 | 2 | Switch.cs:140:18:140:18 | 2 | no-match | -| Switch.cs:140:21:140:29 | return ...; | Switch.cs:140:21:140:29 | return ...; | return | -| Switch.cs:140:28:140:28 | 2 | Switch.cs:140:28:140:28 | 2 | normal | -| Switch.cs:145:5:152:5 | {...} | Switch.cs:148:21:148:29 | return ...; | return | -| Switch.cs:145:5:152:5 | {...} | Switch.cs:149:22:149:31 | return ...; | return | -| Switch.cs:145:5:152:5 | {...} | Switch.cs:150:21:150:29 | return ...; | return | -| Switch.cs:146:9:151:9 | switch (...) {...} | Switch.cs:148:21:148:29 | return ...; | return | -| Switch.cs:146:9:151:9 | switch (...) {...} | Switch.cs:149:22:149:31 | return ...; | return | -| Switch.cs:146:9:151:9 | switch (...) {...} | Switch.cs:150:21:150:29 | return ...; | return | -| Switch.cs:146:17:146:17 | access to parameter i | Switch.cs:146:17:146:17 | access to parameter i | normal | -| Switch.cs:148:13:148:19 | case ...: | Switch.cs:148:18:148:18 | 1 | no-match | -| Switch.cs:148:13:148:19 | case ...: | Switch.cs:148:21:148:29 | return ...; | return | -| Switch.cs:148:18:148:18 | 1 | Switch.cs:148:18:148:18 | 1 | match | -| Switch.cs:148:18:148:18 | 1 | Switch.cs:148:18:148:18 | 1 | no-match | -| Switch.cs:148:21:148:29 | return ...; | Switch.cs:148:21:148:29 | return ...; | return | -| Switch.cs:148:28:148:28 | 1 | Switch.cs:148:28:148:28 | 1 | normal | -| Switch.cs:149:13:149:20 | default: | Switch.cs:149:22:149:31 | return ...; | return | -| Switch.cs:149:22:149:31 | return ...; | Switch.cs:149:22:149:31 | return ...; | return | -| Switch.cs:149:29:149:30 | -... | Switch.cs:149:29:149:30 | -... | normal | -| Switch.cs:149:30:149:30 | 1 | Switch.cs:149:30:149:30 | 1 | normal | -| Switch.cs:150:13:150:19 | case ...: | Switch.cs:150:18:150:18 | 2 | no-match | -| Switch.cs:150:13:150:19 | case ...: | Switch.cs:150:21:150:29 | return ...; | return | -| Switch.cs:150:18:150:18 | 2 | Switch.cs:150:18:150:18 | 2 | match | -| Switch.cs:150:18:150:18 | 2 | Switch.cs:150:18:150:18 | 2 | no-match | -| Switch.cs:150:21:150:29 | return ...; | Switch.cs:150:21:150:29 | return ...; | return | -| Switch.cs:150:28:150:28 | 2 | Switch.cs:150:28:150:28 | 2 | normal | -| Switch.cs:155:5:161:5 | {...} | Switch.cs:156:41:156:45 | false | throw(InvalidOperationException) [no-match] (0) | -| Switch.cs:155:5:161:5 | {...} | Switch.cs:158:13:158:48 | call to method WriteLine | normal | -| Switch.cs:155:5:161:5 | {...} | Switch.cs:160:13:160:48 | call to method WriteLine | normal | -| Switch.cs:156:9:156:55 | ... ...; | Switch.cs:156:13:156:54 | String s = ... | normal | -| Switch.cs:156:9:156:55 | ... ...; | Switch.cs:156:41:156:45 | false | throw(InvalidOperationException) [no-match] (0) | -| Switch.cs:156:13:156:54 | String s = ... | Switch.cs:156:13:156:54 | String s = ... | normal | -| Switch.cs:156:13:156:54 | String s = ... | Switch.cs:156:41:156:45 | false | throw(InvalidOperationException) [no-match] (0) | -| Switch.cs:156:17:156:17 | access to parameter b | Switch.cs:156:17:156:17 | access to parameter b | normal | -| Switch.cs:156:17:156:54 | ... switch { ... } | Switch.cs:156:17:156:54 | ... switch { ... } | normal | -| Switch.cs:156:17:156:54 | ... switch { ... } | Switch.cs:156:41:156:45 | false | throw(InvalidOperationException) [no-match] (0) | -| Switch.cs:156:28:156:31 | true | Switch.cs:156:28:156:31 | true | match | -| Switch.cs:156:28:156:31 | true | Switch.cs:156:28:156:31 | true | no-match | -| Switch.cs:156:28:156:38 | ... => ... | Switch.cs:156:28:156:38 | ... => ... | normal | -| Switch.cs:156:36:156:38 | "a" | Switch.cs:156:36:156:38 | "a" | normal | -| Switch.cs:156:41:156:45 | false | Switch.cs:156:41:156:45 | false | match | -| Switch.cs:156:41:156:45 | false | Switch.cs:156:41:156:45 | false | no-match | -| Switch.cs:156:41:156:52 | ... => ... | Switch.cs:156:41:156:45 | false | throw(InvalidOperationException) [no-match] (0) | -| Switch.cs:156:41:156:52 | ... => ... | Switch.cs:156:41:156:52 | ... => ... | normal | -| Switch.cs:156:50:156:52 | "b" | Switch.cs:156:50:156:52 | "b" | normal | -| Switch.cs:157:9:160:49 | if (...) ... | Switch.cs:158:13:158:48 | call to method WriteLine | normal | -| Switch.cs:157:9:160:49 | if (...) ... | Switch.cs:160:13:160:48 | call to method WriteLine | normal | -| Switch.cs:157:13:157:13 | access to parameter b | Switch.cs:157:13:157:13 | access to parameter b | false | -| Switch.cs:157:13:157:13 | access to parameter b | Switch.cs:157:13:157:13 | access to parameter b | true | -| Switch.cs:158:13:158:48 | call to method WriteLine | Switch.cs:158:13:158:48 | call to method WriteLine | normal | -| Switch.cs:158:13:158:49 | ...; | Switch.cs:158:13:158:48 | call to method WriteLine | normal | -| Switch.cs:158:38:158:47 | $"..." | Switch.cs:158:38:158:47 | $"..." | normal | -| Switch.cs:158:40:158:43 | "a = " | Switch.cs:158:40:158:43 | "a = " | normal | -| Switch.cs:158:44:158:46 | {...} | Switch.cs:158:44:158:46 | {...} | normal | -| Switch.cs:158:45:158:45 | access to local variable s | Switch.cs:158:45:158:45 | access to local variable s | normal | -| Switch.cs:160:13:160:48 | call to method WriteLine | Switch.cs:160:13:160:48 | call to method WriteLine | normal | -| Switch.cs:160:13:160:49 | ...; | Switch.cs:160:13:160:48 | call to method WriteLine | normal | -| Switch.cs:160:38:160:47 | $"..." | Switch.cs:160:38:160:47 | $"..." | normal | -| Switch.cs:160:40:160:43 | "b = " | Switch.cs:160:40:160:43 | "b = " | normal | -| Switch.cs:160:44:160:46 | {...} | Switch.cs:160:44:160:46 | {...} | normal | -| Switch.cs:160:45:160:45 | access to local variable s | Switch.cs:160:45:160:45 | access to local variable s | normal | -| Switch.cs:164:5:178:5 | {...} | Switch.cs:170:17:170:22 | break; | normal [break] (0) | -| Switch.cs:164:5:178:5 | {...} | Switch.cs:173:17:173:22 | break; | normal [break] (0) | -| Switch.cs:164:5:178:5 | {...} | Switch.cs:176:17:176:22 | break; | normal [break] (0) | -| Switch.cs:165:9:177:9 | switch (...) {...} | Switch.cs:170:17:170:22 | break; | normal [break] (0) | -| Switch.cs:165:9:177:9 | switch (...) {...} | Switch.cs:173:17:173:22 | break; | normal [break] (0) | -| Switch.cs:165:9:177:9 | switch (...) {...} | Switch.cs:176:17:176:22 | break; | normal [break] (0) | -| Switch.cs:165:17:165:17 | access to parameter i | Switch.cs:165:17:165:17 | access to parameter i | normal | -| Switch.cs:167:13:167:19 | case ...: | Switch.cs:167:18:167:18 | 1 | no-match | -| Switch.cs:167:13:167:19 | case ...: | Switch.cs:169:17:169:50 | call to method WriteLine | normal | -| Switch.cs:167:18:167:18 | 1 | Switch.cs:167:18:167:18 | 1 | match | -| Switch.cs:167:18:167:18 | 1 | Switch.cs:167:18:167:18 | 1 | no-match | -| Switch.cs:168:13:168:19 | case ...: | Switch.cs:168:18:168:18 | 2 | no-match | -| Switch.cs:168:13:168:19 | case ...: | Switch.cs:169:17:169:50 | call to method WriteLine | normal | -| Switch.cs:168:18:168:18 | 2 | Switch.cs:168:18:168:18 | 2 | match | -| Switch.cs:168:18:168:18 | 2 | Switch.cs:168:18:168:18 | 2 | no-match | -| Switch.cs:169:17:169:50 | call to method WriteLine | Switch.cs:169:17:169:50 | call to method WriteLine | normal | -| Switch.cs:169:17:169:51 | ...; | Switch.cs:169:17:169:50 | call to method WriteLine | normal | -| Switch.cs:169:42:169:49 | "1 or 2" | Switch.cs:169:42:169:49 | "1 or 2" | normal | -| Switch.cs:170:17:170:22 | break; | Switch.cs:170:17:170:22 | break; | break | -| Switch.cs:171:13:171:19 | case ...: | Switch.cs:171:18:171:18 | 3 | no-match | -| Switch.cs:171:13:171:19 | case ...: | Switch.cs:172:17:172:45 | call to method WriteLine | normal | -| Switch.cs:171:18:171:18 | 3 | Switch.cs:171:18:171:18 | 3 | match | -| Switch.cs:171:18:171:18 | 3 | Switch.cs:171:18:171:18 | 3 | no-match | -| Switch.cs:172:17:172:45 | call to method WriteLine | Switch.cs:172:17:172:45 | call to method WriteLine | normal | -| Switch.cs:172:17:172:46 | ...; | Switch.cs:172:17:172:45 | call to method WriteLine | normal | -| Switch.cs:172:42:172:44 | "3" | Switch.cs:172:42:172:44 | "3" | normal | -| Switch.cs:173:17:173:22 | break; | Switch.cs:173:17:173:22 | break; | break | -| Switch.cs:174:13:174:20 | default: | Switch.cs:175:17:175:47 | call to method WriteLine | normal | -| Switch.cs:175:17:175:47 | call to method WriteLine | Switch.cs:175:17:175:47 | call to method WriteLine | normal | -| Switch.cs:175:17:175:48 | ...; | Switch.cs:175:17:175:47 | call to method WriteLine | normal | -| Switch.cs:175:42:175:46 | "def" | Switch.cs:175:42:175:46 | "def" | normal | -| Switch.cs:176:17:176:22 | break; | Switch.cs:176:17:176:22 | break; | break | -| TypeAccesses.cs:1:7:1:18 | call to constructor Object | TypeAccesses.cs:1:7:1:18 | call to constructor Object | normal | -| TypeAccesses.cs:1:7:1:18 | call to method | TypeAccesses.cs:1:7:1:18 | call to method | normal | -| TypeAccesses.cs:1:7:1:18 | this access | TypeAccesses.cs:1:7:1:18 | this access | normal | -| TypeAccesses.cs:1:7:1:18 | {...} | TypeAccesses.cs:1:7:1:18 | {...} | normal | -| TypeAccesses.cs:4:5:9:5 | {...} | TypeAccesses.cs:8:13:8:27 | Type t = ... | normal | -| TypeAccesses.cs:5:9:5:26 | ... ...; | TypeAccesses.cs:5:13:5:25 | String s = ... | normal | -| TypeAccesses.cs:5:13:5:25 | String s = ... | TypeAccesses.cs:5:13:5:25 | String s = ... | normal | -| TypeAccesses.cs:5:17:5:25 | (...) ... | TypeAccesses.cs:5:17:5:25 | (...) ... | normal | -| TypeAccesses.cs:5:25:5:25 | access to parameter o | TypeAccesses.cs:5:25:5:25 | access to parameter o | normal | -| TypeAccesses.cs:6:9:6:23 | ... = ... | TypeAccesses.cs:6:9:6:23 | ... = ... | normal | -| TypeAccesses.cs:6:9:6:24 | ...; | TypeAccesses.cs:6:9:6:23 | ... = ... | normal | -| TypeAccesses.cs:6:13:6:13 | access to parameter o | TypeAccesses.cs:6:13:6:13 | access to parameter o | normal | -| TypeAccesses.cs:6:13:6:23 | ... as ... | TypeAccesses.cs:6:13:6:23 | ... as ... | normal | -| TypeAccesses.cs:7:9:7:25 | if (...) ... | TypeAccesses.cs:7:13:7:22 | ... is ... | false | -| TypeAccesses.cs:7:9:7:25 | if (...) ... | TypeAccesses.cs:7:25:7:25 | ; | normal | -| TypeAccesses.cs:7:13:7:13 | access to parameter o | TypeAccesses.cs:7:13:7:13 | access to parameter o | normal | -| TypeAccesses.cs:7:13:7:22 | ... is ... | TypeAccesses.cs:7:13:7:22 | ... is ... | false | -| TypeAccesses.cs:7:13:7:22 | ... is ... | TypeAccesses.cs:7:13:7:22 | ... is ... | true | -| TypeAccesses.cs:7:18:7:22 | Int32 j | TypeAccesses.cs:7:18:7:22 | Int32 j | match | -| TypeAccesses.cs:7:18:7:22 | Int32 j | TypeAccesses.cs:7:18:7:22 | Int32 j | no-match | -| TypeAccesses.cs:7:25:7:25 | ; | TypeAccesses.cs:7:25:7:25 | ; | normal | -| TypeAccesses.cs:8:9:8:28 | ... ...; | TypeAccesses.cs:8:13:8:27 | Type t = ... | normal | -| TypeAccesses.cs:8:13:8:27 | Type t = ... | TypeAccesses.cs:8:13:8:27 | Type t = ... | normal | -| TypeAccesses.cs:8:17:8:27 | typeof(...) | TypeAccesses.cs:8:17:8:27 | typeof(...) | normal | -| VarDecls.cs:3:7:3:14 | call to constructor Object | VarDecls.cs:3:7:3:14 | call to constructor Object | normal | -| VarDecls.cs:3:7:3:14 | call to method | VarDecls.cs:3:7:3:14 | call to method | normal | -| VarDecls.cs:3:7:3:14 | this access | VarDecls.cs:3:7:3:14 | this access | normal | -| VarDecls.cs:3:7:3:14 | {...} | VarDecls.cs:3:7:3:14 | {...} | normal | -| VarDecls.cs:6:5:11:5 | {...} | VarDecls.cs:9:13:9:29 | return ...; | return | -| VarDecls.cs:7:9:10:9 | fixed(...) { ... } | VarDecls.cs:9:13:9:29 | return ...; | return | -| VarDecls.cs:7:22:7:36 | Char* c1 = ... | VarDecls.cs:7:22:7:36 | Char* c1 = ... | normal | -| VarDecls.cs:7:27:7:33 | access to parameter strings | VarDecls.cs:7:27:7:33 | access to parameter strings | normal | -| VarDecls.cs:7:27:7:36 | (...) ... | VarDecls.cs:7:27:7:36 | (...) ... | normal | -| VarDecls.cs:7:27:7:36 | access to array element | VarDecls.cs:7:27:7:36 | access to array element | normal | -| VarDecls.cs:7:35:7:35 | 0 | VarDecls.cs:7:35:7:35 | 0 | normal | -| VarDecls.cs:7:39:7:53 | Char* c2 = ... | VarDecls.cs:7:39:7:53 | Char* c2 = ... | normal | -| VarDecls.cs:7:44:7:50 | access to parameter strings | VarDecls.cs:7:44:7:50 | access to parameter strings | normal | -| VarDecls.cs:7:44:7:53 | (...) ... | VarDecls.cs:7:44:7:53 | (...) ... | normal | -| VarDecls.cs:7:44:7:53 | access to array element | VarDecls.cs:7:44:7:53 | access to array element | normal | -| VarDecls.cs:7:52:7:52 | 1 | VarDecls.cs:7:52:7:52 | 1 | normal | -| VarDecls.cs:8:9:10:9 | {...} | VarDecls.cs:9:13:9:29 | return ...; | return | -| VarDecls.cs:9:13:9:29 | return ...; | VarDecls.cs:9:13:9:29 | return ...; | return | -| VarDecls.cs:9:20:9:28 | (...) ... | VarDecls.cs:9:20:9:28 | (...) ... | normal | -| VarDecls.cs:9:27:9:28 | access to local variable c1 | VarDecls.cs:9:27:9:28 | access to local variable c1 | normal | -| VarDecls.cs:14:5:17:5 | {...} | VarDecls.cs:16:9:16:23 | return ...; | return | -| VarDecls.cs:15:9:15:30 | ... ...; | VarDecls.cs:15:24:15:29 | String s2 = ... | normal | -| VarDecls.cs:15:16:15:21 | String s1 = ... | VarDecls.cs:15:16:15:21 | String s1 = ... | normal | -| VarDecls.cs:15:21:15:21 | access to parameter s | VarDecls.cs:15:21:15:21 | access to parameter s | normal | -| VarDecls.cs:15:24:15:29 | String s2 = ... | VarDecls.cs:15:24:15:29 | String s2 = ... | normal | -| VarDecls.cs:15:29:15:29 | access to parameter s | VarDecls.cs:15:29:15:29 | access to parameter s | normal | -| VarDecls.cs:16:9:16:23 | return ...; | VarDecls.cs:16:9:16:23 | return ...; | return | -| VarDecls.cs:16:16:16:17 | access to local variable s1 | VarDecls.cs:16:16:16:17 | access to local variable s1 | normal | -| VarDecls.cs:16:16:16:22 | ... + ... | VarDecls.cs:16:16:16:22 | ... + ... | normal | -| VarDecls.cs:16:21:16:22 | access to local variable s2 | VarDecls.cs:16:21:16:22 | access to local variable s2 | normal | -| VarDecls.cs:20:5:26:5 | {...} | VarDecls.cs:25:13:25:29 | return ...; | return | -| VarDecls.cs:21:9:22:13 | using (...) {...} | VarDecls.cs:22:13:22:13 | ; | normal | -| VarDecls.cs:21:16:21:22 | object creation of type C | VarDecls.cs:21:16:21:22 | object creation of type C | normal | -| VarDecls.cs:22:13:22:13 | ; | VarDecls.cs:22:13:22:13 | ; | normal | -| VarDecls.cs:24:9:25:29 | using (...) {...} | VarDecls.cs:25:13:25:29 | return ...; | return | -| VarDecls.cs:24:18:24:28 | C x = ... | VarDecls.cs:24:18:24:28 | C x = ... | normal | -| VarDecls.cs:24:22:24:28 | object creation of type C | VarDecls.cs:24:22:24:28 | object creation of type C | normal | -| VarDecls.cs:24:31:24:41 | C y = ... | VarDecls.cs:24:31:24:41 | C y = ... | normal | -| VarDecls.cs:24:35:24:41 | object creation of type C | VarDecls.cs:24:35:24:41 | object creation of type C | normal | -| VarDecls.cs:25:13:25:29 | return ...; | VarDecls.cs:25:13:25:29 | return ...; | return | -| VarDecls.cs:25:20:25:20 | access to parameter b | VarDecls.cs:25:20:25:20 | access to parameter b | false | -| VarDecls.cs:25:20:25:20 | access to parameter b | VarDecls.cs:25:20:25:20 | access to parameter b | true | -| VarDecls.cs:25:20:25:28 | ... ? ... : ... | VarDecls.cs:25:20:25:28 | ... ? ... : ... | normal | -| VarDecls.cs:25:24:25:24 | access to local variable x | VarDecls.cs:25:24:25:24 | access to local variable x | normal | -| VarDecls.cs:25:28:25:28 | access to local variable y | VarDecls.cs:25:28:25:28 | access to local variable y | normal | -| VarDecls.cs:28:11:28:11 | call to constructor Object | VarDecls.cs:28:11:28:11 | call to constructor Object | normal | -| VarDecls.cs:28:11:28:11 | call to method | VarDecls.cs:28:11:28:11 | call to method | normal | -| VarDecls.cs:28:11:28:11 | this access | VarDecls.cs:28:11:28:11 | this access | normal | -| VarDecls.cs:28:11:28:11 | {...} | VarDecls.cs:28:11:28:11 | {...} | normal | -| VarDecls.cs:28:51:28:53 | {...} | VarDecls.cs:28:51:28:53 | {...} | normal | -| cflow.cs:6:5:35:5 | {...} | cflow.cs:24:25:24:31 | ... <= ... | false | -| cflow.cs:7:9:7:28 | ... ...; | cflow.cs:7:13:7:27 | Int32 a = ... | normal | -| cflow.cs:7:13:7:27 | Int32 a = ... | cflow.cs:7:13:7:27 | Int32 a = ... | normal | -| cflow.cs:7:17:7:20 | access to parameter args | cflow.cs:7:17:7:20 | access to parameter args | normal | -| cflow.cs:7:17:7:27 | access to property Length | cflow.cs:7:17:7:27 | access to property Length | normal | -| cflow.cs:9:9:9:39 | ... = ... | cflow.cs:9:9:9:39 | ... = ... | normal | -| cflow.cs:9:9:9:40 | ...; | cflow.cs:9:9:9:39 | ... = ... | normal | -| cflow.cs:9:13:9:29 | object creation of type ControlFlow | cflow.cs:9:13:9:29 | object creation of type ControlFlow | normal | -| cflow.cs:9:13:9:39 | call to method Switch | cflow.cs:9:13:9:39 | call to method Switch | normal | -| cflow.cs:9:38:9:38 | access to local variable a | cflow.cs:9:38:9:38 | access to local variable a | normal | -| cflow.cs:11:9:12:49 | if (...) ... | cflow.cs:11:13:11:17 | ... > ... | false | -| cflow.cs:11:9:12:49 | if (...) ... | cflow.cs:12:13:12:48 | call to method WriteLine | normal | -| cflow.cs:11:13:11:13 | access to local variable a | cflow.cs:11:13:11:13 | access to local variable a | normal | -| cflow.cs:11:13:11:17 | ... > ... | cflow.cs:11:13:11:17 | ... > ... | false | -| cflow.cs:11:13:11:17 | ... > ... | cflow.cs:11:13:11:17 | ... > ... | true | -| cflow.cs:11:17:11:17 | 3 | cflow.cs:11:17:11:17 | 3 | normal | -| cflow.cs:12:13:12:48 | call to method WriteLine | cflow.cs:12:13:12:48 | call to method WriteLine | normal | -| cflow.cs:12:13:12:49 | ...; | cflow.cs:12:13:12:48 | call to method WriteLine | normal | -| cflow.cs:12:31:12:47 | "more than a few" | cflow.cs:12:31:12:47 | "more than a few" | normal | -| cflow.cs:14:9:17:9 | while (...) ... | cflow.cs:14:16:14:20 | ... > ... | false | -| cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:14:16:14:16 | access to local variable a | normal | -| cflow.cs:14:16:14:20 | ... > ... | cflow.cs:14:16:14:20 | ... > ... | false | -| cflow.cs:14:16:14:20 | ... > ... | cflow.cs:14:16:14:20 | ... > ... | true | -| cflow.cs:14:20:14:20 | 0 | cflow.cs:14:20:14:20 | 0 | normal | -| cflow.cs:15:9:17:9 | {...} | cflow.cs:16:13:16:40 | call to method WriteLine | normal | -| cflow.cs:16:13:16:40 | call to method WriteLine | cflow.cs:16:13:16:40 | call to method WriteLine | normal | -| cflow.cs:16:13:16:41 | ...; | cflow.cs:16:13:16:40 | call to method WriteLine | normal | -| cflow.cs:16:31:16:31 | access to local variable a | cflow.cs:16:31:16:31 | access to local variable a | normal | -| cflow.cs:16:31:16:33 | ...-- | cflow.cs:16:31:16:33 | ...-- | normal | -| cflow.cs:16:31:16:39 | ... * ... | cflow.cs:16:31:16:39 | ... * ... | normal | -| cflow.cs:16:37:16:39 | 100 | cflow.cs:16:37:16:39 | 100 | normal | -| cflow.cs:19:9:22:25 | do ... while (...); | cflow.cs:22:18:22:23 | ... < ... | false | -| cflow.cs:20:9:22:9 | {...} | cflow.cs:21:13:21:35 | call to method WriteLine | normal | -| cflow.cs:21:13:21:35 | call to method WriteLine | cflow.cs:21:13:21:35 | call to method WriteLine | normal | -| cflow.cs:21:13:21:36 | ...; | cflow.cs:21:13:21:35 | call to method WriteLine | normal | -| cflow.cs:21:31:21:34 | -... | cflow.cs:21:31:21:34 | -... | normal | -| cflow.cs:21:32:21:32 | access to local variable a | cflow.cs:21:32:21:32 | access to local variable a | normal | -| cflow.cs:21:32:21:34 | ...++ | cflow.cs:21:32:21:34 | ...++ | normal | -| cflow.cs:22:18:22:18 | access to local variable a | cflow.cs:22:18:22:18 | access to local variable a | normal | -| cflow.cs:22:18:22:23 | ... < ... | cflow.cs:22:18:22:23 | ... < ... | false | -| cflow.cs:22:18:22:23 | ... < ... | cflow.cs:22:18:22:23 | ... < ... | true | -| cflow.cs:22:22:22:23 | 10 | cflow.cs:22:22:22:23 | 10 | normal | -| cflow.cs:24:9:34:9 | for (...;...;...) ... | cflow.cs:24:25:24:31 | ... <= ... | false | -| cflow.cs:24:18:24:22 | Int32 i = ... | cflow.cs:24:18:24:22 | Int32 i = ... | normal | -| cflow.cs:24:22:24:22 | 1 | cflow.cs:24:22:24:22 | 1 | normal | -| cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:24:25:24:25 | access to local variable i | normal | -| cflow.cs:24:25:24:31 | ... <= ... | cflow.cs:24:25:24:31 | ... <= ... | false | -| cflow.cs:24:25:24:31 | ... <= ... | cflow.cs:24:25:24:31 | ... <= ... | true | -| cflow.cs:24:30:24:31 | 20 | cflow.cs:24:30:24:31 | 20 | normal | -| cflow.cs:24:34:24:34 | access to local variable i | cflow.cs:24:34:24:34 | access to local variable i | normal | -| cflow.cs:24:34:24:36 | ...++ | cflow.cs:24:34:24:36 | ...++ | normal | -| cflow.cs:25:9:34:9 | {...} | cflow.cs:27:17:27:45 | call to method WriteLine | normal | -| cflow.cs:25:9:34:9 | {...} | cflow.cs:29:17:29:41 | call to method WriteLine | normal | -| cflow.cs:25:9:34:9 | {...} | cflow.cs:31:17:31:41 | call to method WriteLine | normal | -| cflow.cs:25:9:34:9 | {...} | cflow.cs:33:17:33:36 | call to method WriteLine | normal | -| cflow.cs:26:13:33:37 | if (...) ... | cflow.cs:27:17:27:45 | call to method WriteLine | normal | -| cflow.cs:26:13:33:37 | if (...) ... | cflow.cs:29:17:29:41 | call to method WriteLine | normal | -| cflow.cs:26:13:33:37 | if (...) ... | cflow.cs:31:17:31:41 | call to method WriteLine | normal | -| cflow.cs:26:13:33:37 | if (...) ... | cflow.cs:33:17:33:36 | call to method WriteLine | normal | -| cflow.cs:26:17:26:17 | access to local variable i | cflow.cs:26:17:26:17 | access to local variable i | normal | -| cflow.cs:26:17:26:21 | ... % ... | cflow.cs:26:17:26:21 | ... % ... | normal | -| cflow.cs:26:17:26:26 | ... == ... | cflow.cs:26:17:26:26 | ... == ... | false | -| cflow.cs:26:17:26:26 | ... == ... | cflow.cs:26:17:26:26 | ... == ... | true | -| cflow.cs:26:17:26:40 | ... && ... | cflow.cs:26:17:26:40 | ... && ... | false | -| cflow.cs:26:17:26:40 | ... && ... | cflow.cs:26:17:26:40 | ... && ... | true | -| cflow.cs:26:21:26:21 | 3 | cflow.cs:26:21:26:21 | 3 | normal | -| cflow.cs:26:26:26:26 | 0 | cflow.cs:26:26:26:26 | 0 | normal | -| cflow.cs:26:31:26:31 | access to local variable i | cflow.cs:26:31:26:31 | access to local variable i | normal | -| cflow.cs:26:31:26:35 | ... % ... | cflow.cs:26:31:26:35 | ... % ... | normal | -| cflow.cs:26:31:26:40 | ... == ... | cflow.cs:26:31:26:40 | ... == ... | false | -| cflow.cs:26:31:26:40 | ... == ... | cflow.cs:26:31:26:40 | ... == ... | true | -| cflow.cs:26:35:26:35 | 5 | cflow.cs:26:35:26:35 | 5 | normal | -| cflow.cs:26:40:26:40 | 0 | cflow.cs:26:40:26:40 | 0 | normal | -| cflow.cs:27:17:27:45 | call to method WriteLine | cflow.cs:27:17:27:45 | call to method WriteLine | normal | -| cflow.cs:27:17:27:46 | ...; | cflow.cs:27:17:27:45 | call to method WriteLine | normal | -| cflow.cs:27:35:27:44 | "FizzBuzz" | cflow.cs:27:35:27:44 | "FizzBuzz" | normal | -| cflow.cs:28:18:33:37 | if (...) ... | cflow.cs:29:17:29:41 | call to method WriteLine | normal | -| cflow.cs:28:18:33:37 | if (...) ... | cflow.cs:31:17:31:41 | call to method WriteLine | normal | -| cflow.cs:28:18:33:37 | if (...) ... | cflow.cs:33:17:33:36 | call to method WriteLine | normal | -| cflow.cs:28:22:28:22 | access to local variable i | cflow.cs:28:22:28:22 | access to local variable i | normal | -| cflow.cs:28:22:28:26 | ... % ... | cflow.cs:28:22:28:26 | ... % ... | normal | -| cflow.cs:28:22:28:31 | ... == ... | cflow.cs:28:22:28:31 | ... == ... | false | -| cflow.cs:28:22:28:31 | ... == ... | cflow.cs:28:22:28:31 | ... == ... | true | -| cflow.cs:28:26:28:26 | 3 | cflow.cs:28:26:28:26 | 3 | normal | -| cflow.cs:28:31:28:31 | 0 | cflow.cs:28:31:28:31 | 0 | normal | -| cflow.cs:29:17:29:41 | call to method WriteLine | cflow.cs:29:17:29:41 | call to method WriteLine | normal | -| cflow.cs:29:17:29:42 | ...; | cflow.cs:29:17:29:41 | call to method WriteLine | normal | -| cflow.cs:29:35:29:40 | "Fizz" | cflow.cs:29:35:29:40 | "Fizz" | normal | -| cflow.cs:30:18:33:37 | if (...) ... | cflow.cs:31:17:31:41 | call to method WriteLine | normal | -| cflow.cs:30:18:33:37 | if (...) ... | cflow.cs:33:17:33:36 | call to method WriteLine | normal | -| cflow.cs:30:22:30:22 | access to local variable i | cflow.cs:30:22:30:22 | access to local variable i | normal | -| cflow.cs:30:22:30:26 | ... % ... | cflow.cs:30:22:30:26 | ... % ... | normal | -| cflow.cs:30:22:30:31 | ... == ... | cflow.cs:30:22:30:31 | ... == ... | false | -| cflow.cs:30:22:30:31 | ... == ... | cflow.cs:30:22:30:31 | ... == ... | true | -| cflow.cs:30:26:30:26 | 5 | cflow.cs:30:26:30:26 | 5 | normal | -| cflow.cs:30:31:30:31 | 0 | cflow.cs:30:31:30:31 | 0 | normal | -| cflow.cs:31:17:31:41 | call to method WriteLine | cflow.cs:31:17:31:41 | call to method WriteLine | normal | -| cflow.cs:31:17:31:42 | ...; | cflow.cs:31:17:31:41 | call to method WriteLine | normal | -| cflow.cs:31:35:31:40 | "Buzz" | cflow.cs:31:35:31:40 | "Buzz" | normal | -| cflow.cs:33:17:33:36 | call to method WriteLine | cflow.cs:33:17:33:36 | call to method WriteLine | normal | -| cflow.cs:33:17:33:37 | ...; | cflow.cs:33:17:33:36 | call to method WriteLine | normal | -| cflow.cs:33:35:33:35 | access to local variable i | cflow.cs:33:35:33:35 | access to local variable i | normal | -| cflow.cs:38:5:68:5 | {...} | cflow.cs:64:21:64:55 | throw ...; | throw(NullReferenceException) | -| cflow.cs:38:5:68:5 | {...} | cflow.cs:67:9:67:17 | return ...; | return | -| cflow.cs:39:9:50:9 | switch (...) {...} | cflow.cs:47:18:47:18 | 3 | no-match | -| cflow.cs:39:9:50:9 | switch (...) {...} | cflow.cs:49:17:49:22 | break; | normal [break] (0) | -| cflow.cs:39:17:39:17 | access to parameter a | cflow.cs:39:17:39:17 | access to parameter a | normal | -| cflow.cs:41:13:41:19 | case ...: | cflow.cs:41:18:41:18 | 1 | no-match | -| cflow.cs:41:13:41:19 | case ...: | cflow.cs:42:17:42:38 | call to method WriteLine | normal | -| cflow.cs:41:18:41:18 | 1 | cflow.cs:41:18:41:18 | 1 | match | -| cflow.cs:41:18:41:18 | 1 | cflow.cs:41:18:41:18 | 1 | no-match | -| cflow.cs:42:17:42:38 | call to method WriteLine | cflow.cs:42:17:42:38 | call to method WriteLine | normal | -| cflow.cs:42:17:42:39 | ...; | cflow.cs:42:17:42:38 | call to method WriteLine | normal | -| cflow.cs:42:35:42:37 | "1" | cflow.cs:42:35:42:37 | "1" | normal | -| cflow.cs:43:17:43:28 | goto case ...; | cflow.cs:43:17:43:28 | goto case ...; | goto(2) | -| cflow.cs:43:27:43:27 | 2 | cflow.cs:43:27:43:27 | 2 | normal | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:44:18:44:18 | 2 | no-match | -| cflow.cs:44:13:44:19 | case ...: | cflow.cs:45:17:45:38 | call to method WriteLine | normal | -| cflow.cs:44:18:44:18 | 2 | cflow.cs:44:18:44:18 | 2 | match | -| cflow.cs:44:18:44:18 | 2 | cflow.cs:44:18:44:18 | 2 | no-match | -| cflow.cs:45:17:45:38 | call to method WriteLine | cflow.cs:45:17:45:38 | call to method WriteLine | normal | -| cflow.cs:45:17:45:39 | ...; | cflow.cs:45:17:45:38 | call to method WriteLine | normal | -| cflow.cs:45:35:45:37 | "2" | cflow.cs:45:35:45:37 | "2" | normal | -| cflow.cs:46:17:46:28 | goto case ...; | cflow.cs:46:17:46:28 | goto case ...; | goto(1) | -| cflow.cs:46:27:46:27 | 1 | cflow.cs:46:27:46:27 | 1 | normal | -| cflow.cs:47:13:47:19 | case ...: | cflow.cs:47:18:47:18 | 3 | no-match | -| cflow.cs:47:13:47:19 | case ...: | cflow.cs:48:17:48:38 | call to method WriteLine | normal | -| cflow.cs:47:18:47:18 | 3 | cflow.cs:47:18:47:18 | 3 | match | -| cflow.cs:47:18:47:18 | 3 | cflow.cs:47:18:47:18 | 3 | no-match | -| cflow.cs:48:17:48:38 | call to method WriteLine | cflow.cs:48:17:48:38 | call to method WriteLine | normal | -| cflow.cs:48:17:48:39 | ...; | cflow.cs:48:17:48:38 | call to method WriteLine | normal | -| cflow.cs:48:35:48:37 | "3" | cflow.cs:48:35:48:37 | "3" | normal | -| cflow.cs:49:17:49:22 | break; | cflow.cs:49:17:49:22 | break; | break | -| cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:55:17:55:22 | break; | normal [break] (0) | -| cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:58:17:58:22 | break; | normal [break] (0) | -| cflow.cs:51:17:51:17 | access to parameter a | cflow.cs:51:17:51:17 | access to parameter a | normal | -| cflow.cs:53:13:53:20 | case ...: | cflow.cs:53:18:53:19 | 42 | no-match | -| cflow.cs:53:13:53:20 | case ...: | cflow.cs:54:17:54:47 | call to method WriteLine | normal | -| cflow.cs:53:18:53:19 | 42 | cflow.cs:53:18:53:19 | 42 | match | -| cflow.cs:53:18:53:19 | 42 | cflow.cs:53:18:53:19 | 42 | no-match | -| cflow.cs:54:17:54:47 | call to method WriteLine | cflow.cs:54:17:54:47 | call to method WriteLine | normal | -| cflow.cs:54:17:54:48 | ...; | cflow.cs:54:17:54:47 | call to method WriteLine | normal | -| cflow.cs:54:35:54:46 | "The answer" | cflow.cs:54:35:54:46 | "The answer" | normal | -| cflow.cs:55:17:55:22 | break; | cflow.cs:55:17:55:22 | break; | break | -| cflow.cs:56:13:56:20 | default: | cflow.cs:57:17:57:51 | call to method WriteLine | normal | -| cflow.cs:57:17:57:51 | call to method WriteLine | cflow.cs:57:17:57:51 | call to method WriteLine | normal | -| cflow.cs:57:17:57:52 | ...; | cflow.cs:57:17:57:51 | call to method WriteLine | normal | -| cflow.cs:57:35:57:50 | "Not the answer" | cflow.cs:57:35:57:50 | "Not the answer" | normal | -| cflow.cs:58:17:58:22 | break; | cflow.cs:58:17:58:22 | break; | break | -| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:62:18:62:18 | 0 | no-match | -| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:64:21:64:55 | throw ...; | throw(NullReferenceException) | -| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:65:17:65:22 | break; | normal [break] (0) | -| cflow.cs:60:17:60:32 | call to method Parse | cflow.cs:60:17:60:32 | call to method Parse | normal | -| cflow.cs:60:27:60:31 | access to field Field | cflow.cs:60:27:60:31 | access to field Field | normal | -| cflow.cs:60:27:60:31 | this access | cflow.cs:60:27:60:31 | this access | normal | -| cflow.cs:62:13:62:19 | case ...: | cflow.cs:62:18:62:18 | 0 | no-match | -| cflow.cs:62:13:62:19 | case ...: | cflow.cs:63:21:63:34 | !... | false | -| cflow.cs:62:13:62:19 | case ...: | cflow.cs:64:21:64:55 | throw ...; | throw(NullReferenceException) | -| cflow.cs:62:18:62:18 | 0 | cflow.cs:62:18:62:18 | 0 | match | -| cflow.cs:62:18:62:18 | 0 | cflow.cs:62:18:62:18 | 0 | no-match | -| cflow.cs:63:17:64:55 | if (...) ... | cflow.cs:63:21:63:34 | !... | false | -| cflow.cs:63:17:64:55 | if (...) ... | cflow.cs:64:21:64:55 | throw ...; | throw(NullReferenceException) | -| cflow.cs:63:21:63:34 | !... | cflow.cs:63:21:63:34 | !... | false | -| cflow.cs:63:21:63:34 | !... | cflow.cs:63:21:63:34 | !... | true | -| cflow.cs:63:23:63:27 | access to field Field | cflow.cs:63:23:63:27 | access to field Field | normal | -| cflow.cs:63:23:63:27 | this access | cflow.cs:63:23:63:27 | this access | normal | -| cflow.cs:63:23:63:33 | ... == ... | cflow.cs:63:23:63:33 | ... == ... | false | -| cflow.cs:63:23:63:33 | ... == ... | cflow.cs:63:23:63:33 | ... == ... | true | -| cflow.cs:63:32:63:33 | "" | cflow.cs:63:32:63:33 | "" | normal | -| cflow.cs:64:21:64:55 | throw ...; | cflow.cs:64:21:64:55 | throw ...; | throw(NullReferenceException) | -| cflow.cs:64:27:64:54 | object creation of type NullReferenceException | cflow.cs:64:27:64:54 | object creation of type NullReferenceException | normal | -| cflow.cs:65:17:65:22 | break; | cflow.cs:65:17:65:22 | break; | break | -| cflow.cs:67:9:67:17 | return ...; | cflow.cs:67:9:67:17 | return ...; | return | -| cflow.cs:67:16:67:16 | access to parameter a | cflow.cs:67:16:67:16 | access to parameter a | normal | -| cflow.cs:71:5:82:5 | {...} | cflow.cs:73:13:73:19 | return ...; | return | -| cflow.cs:71:5:82:5 | {...} | cflow.cs:76:13:76:32 | call to method WriteLine | normal | -| cflow.cs:71:5:82:5 | {...} | cflow.cs:80:13:80:47 | call to method WriteLine | normal | -| cflow.cs:72:9:73:19 | if (...) ... | cflow.cs:72:13:72:21 | ... == ... | false | -| cflow.cs:72:9:73:19 | if (...) ... | cflow.cs:73:13:73:19 | return ...; | return | -| cflow.cs:72:13:72:13 | access to parameter s | cflow.cs:72:13:72:13 | access to parameter s | normal | -| cflow.cs:72:13:72:21 | ... == ... | cflow.cs:72:13:72:21 | ... == ... | false | -| cflow.cs:72:13:72:21 | ... == ... | cflow.cs:72:13:72:21 | ... == ... | true | -| cflow.cs:72:18:72:21 | null | cflow.cs:72:18:72:21 | null | normal | -| cflow.cs:73:13:73:19 | return ...; | cflow.cs:73:13:73:19 | return ...; | return | -| cflow.cs:74:9:81:9 | if (...) ... | cflow.cs:76:13:76:32 | call to method WriteLine | normal | -| cflow.cs:74:9:81:9 | if (...) ... | cflow.cs:80:13:80:47 | call to method WriteLine | normal | -| cflow.cs:74:13:74:13 | access to parameter s | cflow.cs:74:13:74:13 | access to parameter s | normal | -| cflow.cs:74:13:74:20 | access to property Length | cflow.cs:74:13:74:20 | access to property Length | normal | -| cflow.cs:74:13:74:24 | ... > ... | cflow.cs:74:13:74:24 | ... > ... | false | -| cflow.cs:74:13:74:24 | ... > ... | cflow.cs:74:13:74:24 | ... > ... | true | -| cflow.cs:74:24:74:24 | 0 | cflow.cs:74:24:74:24 | 0 | normal | -| cflow.cs:75:9:77:9 | {...} | cflow.cs:76:13:76:32 | call to method WriteLine | normal | -| cflow.cs:76:13:76:32 | call to method WriteLine | cflow.cs:76:13:76:32 | call to method WriteLine | normal | -| cflow.cs:76:13:76:33 | ...; | cflow.cs:76:13:76:32 | call to method WriteLine | normal | -| cflow.cs:76:31:76:31 | access to parameter s | cflow.cs:76:31:76:31 | access to parameter s | normal | -| cflow.cs:79:9:81:9 | {...} | cflow.cs:80:13:80:47 | call to method WriteLine | normal | -| cflow.cs:80:13:80:47 | call to method WriteLine | cflow.cs:80:13:80:47 | call to method WriteLine | normal | -| cflow.cs:80:13:80:48 | ...; | cflow.cs:80:13:80:47 | call to method WriteLine | normal | -| cflow.cs:80:31:80:46 | "" | cflow.cs:80:31:80:46 | "" | normal | -| cflow.cs:85:5:88:5 | {...} | cflow.cs:86:13:86:37 | ... && ... | false | -| cflow.cs:85:5:88:5 | {...} | cflow.cs:87:13:87:32 | call to method WriteLine | normal | -| cflow.cs:86:9:87:33 | if (...) ... | cflow.cs:86:13:86:37 | ... && ... | false | -| cflow.cs:86:9:87:33 | if (...) ... | cflow.cs:87:13:87:32 | call to method WriteLine | normal | -| cflow.cs:86:13:86:13 | access to parameter s | cflow.cs:86:13:86:13 | access to parameter s | normal | -| cflow.cs:86:13:86:21 | ... != ... | cflow.cs:86:13:86:21 | ... != ... | false | -| cflow.cs:86:13:86:21 | ... != ... | cflow.cs:86:13:86:21 | ... != ... | true | -| cflow.cs:86:13:86:37 | ... && ... | cflow.cs:86:13:86:37 | ... && ... | false | -| cflow.cs:86:13:86:37 | ... && ... | cflow.cs:86:13:86:37 | ... && ... | true | -| cflow.cs:86:18:86:21 | null | cflow.cs:86:18:86:21 | null | normal | -| cflow.cs:86:26:86:26 | access to parameter s | cflow.cs:86:26:86:26 | access to parameter s | normal | -| cflow.cs:86:26:86:33 | access to property Length | cflow.cs:86:26:86:33 | access to property Length | normal | -| cflow.cs:86:26:86:37 | ... > ... | cflow.cs:86:26:86:37 | ... > ... | false | -| cflow.cs:86:26:86:37 | ... > ... | cflow.cs:86:26:86:37 | ... > ... | true | -| cflow.cs:86:37:86:37 | 0 | cflow.cs:86:37:86:37 | 0 | normal | -| cflow.cs:87:13:87:32 | call to method WriteLine | cflow.cs:87:13:87:32 | call to method WriteLine | normal | -| cflow.cs:87:13:87:33 | ...; | cflow.cs:87:13:87:32 | call to method WriteLine | normal | -| cflow.cs:87:31:87:31 | access to parameter s | cflow.cs:87:31:87:31 | access to parameter s | normal | -| cflow.cs:91:5:104:5 | {...} | cflow.cs:93:13:93:49 | throw ...; | throw(ArgumentNullException) | -| cflow.cs:91:5:104:5 | {...} | cflow.cs:102:13:102:29 | ... != ... | false | -| cflow.cs:91:5:104:5 | {...} | cflow.cs:103:13:103:35 | call to method WriteLine | normal | -| cflow.cs:92:9:93:49 | if (...) ... | cflow.cs:92:13:92:27 | call to method Equals | false | -| cflow.cs:92:9:93:49 | if (...) ... | cflow.cs:93:13:93:49 | throw ...; | throw(ArgumentNullException) | -| cflow.cs:92:13:92:27 | call to method Equals | cflow.cs:92:13:92:27 | call to method Equals | false | -| cflow.cs:92:13:92:27 | call to method Equals | cflow.cs:92:13:92:27 | call to method Equals | true | -| cflow.cs:92:20:92:20 | access to parameter s | cflow.cs:92:20:92:20 | access to parameter s | normal | -| cflow.cs:92:23:92:26 | null | cflow.cs:92:23:92:26 | null | normal | -| cflow.cs:93:13:93:49 | throw ...; | cflow.cs:93:13:93:49 | throw ...; | throw(ArgumentNullException) | -| cflow.cs:93:19:93:48 | object creation of type ArgumentNullException | cflow.cs:93:19:93:48 | object creation of type ArgumentNullException | normal | -| cflow.cs:93:45:93:47 | "s" | cflow.cs:93:45:93:47 | "s" | normal | -| cflow.cs:94:9:94:28 | call to method WriteLine | cflow.cs:94:9:94:28 | call to method WriteLine | normal | -| cflow.cs:94:9:94:29 | ...; | cflow.cs:94:9:94:28 | call to method WriteLine | normal | -| cflow.cs:94:27:94:27 | access to parameter s | cflow.cs:94:27:94:27 | access to parameter s | normal | -| cflow.cs:96:9:97:55 | if (...) ... | cflow.cs:96:13:96:25 | ... != ... | false | -| cflow.cs:96:9:97:55 | if (...) ... | cflow.cs:97:13:97:54 | call to method WriteLine | normal | -| cflow.cs:96:13:96:17 | access to field Field | cflow.cs:96:13:96:17 | access to field Field | normal | -| cflow.cs:96:13:96:17 | this access | cflow.cs:96:13:96:17 | this access | normal | -| cflow.cs:96:13:96:25 | ... != ... | cflow.cs:96:13:96:25 | ... != ... | false | -| cflow.cs:96:13:96:25 | ... != ... | cflow.cs:96:13:96:25 | ... != ... | true | -| cflow.cs:96:22:96:25 | null | cflow.cs:96:22:96:25 | null | normal | -| cflow.cs:97:13:97:54 | call to method WriteLine | cflow.cs:97:13:97:54 | call to method WriteLine | normal | -| cflow.cs:97:13:97:55 | ...; | cflow.cs:97:13:97:54 | call to method WriteLine | normal | -| cflow.cs:97:31:97:47 | object creation of type ControlFlow | cflow.cs:97:31:97:47 | object creation of type ControlFlow | normal | -| cflow.cs:97:31:97:53 | access to field Field | cflow.cs:97:31:97:53 | access to field Field | normal | -| cflow.cs:99:9:100:42 | if (...) ... | cflow.cs:99:13:99:25 | ... != ... | false | -| cflow.cs:99:9:100:42 | if (...) ... | cflow.cs:100:13:100:41 | call to method WriteLine | normal | -| cflow.cs:99:13:99:17 | access to field Field | cflow.cs:99:13:99:17 | access to field Field | normal | -| cflow.cs:99:13:99:17 | this access | cflow.cs:99:13:99:17 | this access | normal | -| cflow.cs:99:13:99:25 | ... != ... | cflow.cs:99:13:99:25 | ... != ... | false | -| cflow.cs:99:13:99:25 | ... != ... | cflow.cs:99:13:99:25 | ... != ... | true | -| cflow.cs:99:22:99:25 | null | cflow.cs:99:22:99:25 | null | normal | -| cflow.cs:100:13:100:41 | call to method WriteLine | cflow.cs:100:13:100:41 | call to method WriteLine | normal | -| cflow.cs:100:13:100:42 | ...; | cflow.cs:100:13:100:41 | call to method WriteLine | normal | -| cflow.cs:100:31:100:34 | this access | cflow.cs:100:31:100:34 | this access | normal | -| cflow.cs:100:31:100:40 | access to field Field | cflow.cs:100:31:100:40 | access to field Field | normal | -| cflow.cs:102:9:103:36 | if (...) ... | cflow.cs:102:13:102:29 | ... != ... | false | -| cflow.cs:102:9:103:36 | if (...) ... | cflow.cs:103:13:103:35 | call to method WriteLine | normal | -| cflow.cs:102:13:102:16 | this access | cflow.cs:102:13:102:16 | this access | normal | -| cflow.cs:102:13:102:21 | access to property Prop | cflow.cs:102:13:102:21 | access to property Prop | normal | -| cflow.cs:102:13:102:29 | ... != ... | cflow.cs:102:13:102:29 | ... != ... | false | -| cflow.cs:102:13:102:29 | ... != ... | cflow.cs:102:13:102:29 | ... != ... | true | -| cflow.cs:102:26:102:29 | null | cflow.cs:102:26:102:29 | null | normal | -| cflow.cs:103:13:103:35 | call to method WriteLine | cflow.cs:103:13:103:35 | call to method WriteLine | normal | -| cflow.cs:103:13:103:36 | ...; | cflow.cs:103:13:103:35 | call to method WriteLine | normal | -| cflow.cs:103:31:103:34 | access to property Prop | cflow.cs:103:31:103:34 | access to property Prop | normal | -| cflow.cs:103:31:103:34 | this access | cflow.cs:103:31:103:34 | this access | normal | -| cflow.cs:107:5:117:5 | {...} | cflow.cs:116:9:116:28 | call to method WriteLine | normal | -| cflow.cs:108:9:115:9 | if (...) ... | cflow.cs:108:13:108:21 | ... != ... | false | -| cflow.cs:108:9:115:9 | if (...) ... | cflow.cs:114:13:114:32 | call to method WriteLine | normal | -| cflow.cs:108:13:108:13 | access to parameter s | cflow.cs:108:13:108:13 | access to parameter s | normal | -| cflow.cs:108:13:108:21 | ... != ... | cflow.cs:108:13:108:21 | ... != ... | false | -| cflow.cs:108:13:108:21 | ... != ... | cflow.cs:108:13:108:21 | ... != ... | true | -| cflow.cs:108:18:108:21 | null | cflow.cs:108:18:108:21 | null | normal | -| cflow.cs:109:9:115:9 | {...} | cflow.cs:114:13:114:32 | call to method WriteLine | normal | -| cflow.cs:110:20:110:23 | true | cflow.cs:110:20:110:23 | true | true | -| cflow.cs:111:13:113:13 | {...} | cflow.cs:112:17:112:36 | call to method WriteLine | normal | -| cflow.cs:112:17:112:36 | call to method WriteLine | cflow.cs:112:17:112:36 | call to method WriteLine | normal | -| cflow.cs:112:17:112:37 | ...; | cflow.cs:112:17:112:36 | call to method WriteLine | normal | -| cflow.cs:112:35:112:35 | access to parameter s | cflow.cs:112:35:112:35 | access to parameter s | normal | -| cflow.cs:114:13:114:32 | call to method WriteLine | cflow.cs:114:13:114:32 | call to method WriteLine | normal | -| cflow.cs:114:13:114:33 | ...; | cflow.cs:114:13:114:32 | call to method WriteLine | normal | -| cflow.cs:114:31:114:31 | access to parameter s | cflow.cs:114:31:114:31 | access to parameter s | normal | -| cflow.cs:116:9:116:28 | call to method WriteLine | cflow.cs:116:9:116:28 | call to method WriteLine | normal | -| cflow.cs:116:9:116:29 | ...; | cflow.cs:116:9:116:28 | call to method WriteLine | normal | -| cflow.cs:116:27:116:27 | access to parameter s | cflow.cs:116:27:116:27 | access to parameter s | normal | -| cflow.cs:120:5:124:5 | {...} | cflow.cs:123:9:123:17 | return ...; | return | -| cflow.cs:121:9:121:18 | ... ...; | cflow.cs:121:13:121:17 | String x = ... | normal | -| cflow.cs:121:13:121:17 | String x = ... | cflow.cs:121:13:121:17 | String x = ... | normal | -| cflow.cs:121:17:121:17 | access to parameter s | cflow.cs:121:17:121:17 | access to parameter s | normal | -| cflow.cs:122:9:122:19 | ... = ... | cflow.cs:122:9:122:19 | ... = ... | normal | -| cflow.cs:122:9:122:20 | ...; | cflow.cs:122:9:122:19 | ... = ... | normal | -| cflow.cs:122:13:122:13 | access to local variable x | cflow.cs:122:13:122:13 | access to local variable x | normal | -| cflow.cs:122:13:122:19 | ... + ... | cflow.cs:122:13:122:19 | ... + ... | normal | -| cflow.cs:122:17:122:19 | " " | cflow.cs:122:17:122:19 | " " | normal | -| cflow.cs:123:9:123:17 | return ...; | cflow.cs:123:9:123:17 | return ...; | return | -| cflow.cs:123:16:123:16 | access to local variable x | cflow.cs:123:16:123:16 | access to local variable x | normal | -| cflow.cs:127:23:127:60 | {...} | cflow.cs:127:25:127:58 | return ...; | return | -| cflow.cs:127:25:127:58 | return ...; | cflow.cs:127:25:127:58 | return ...; | return | -| cflow.cs:127:32:127:36 | access to field Field | cflow.cs:127:32:127:36 | access to field Field | normal | -| cflow.cs:127:32:127:36 | this access | cflow.cs:127:32:127:36 | this access | normal | -| cflow.cs:127:32:127:44 | ... == ... | cflow.cs:127:32:127:44 | ... == ... | false | -| cflow.cs:127:32:127:44 | ... == ... | cflow.cs:127:32:127:44 | ... == ... | true | -| cflow.cs:127:32:127:57 | ... ? ... : ... | cflow.cs:127:32:127:57 | ... ? ... : ... | normal | -| cflow.cs:127:41:127:44 | null | cflow.cs:127:41:127:44 | null | normal | -| cflow.cs:127:48:127:49 | "" | cflow.cs:127:48:127:49 | "" | normal | -| cflow.cs:127:53:127:57 | access to field Field | cflow.cs:127:53:127:57 | access to field Field | normal | -| cflow.cs:127:53:127:57 | this access | cflow.cs:127:53:127:57 | this access | normal | -| cflow.cs:127:66:127:83 | {...} | cflow.cs:127:68:127:80 | ... = ... | normal | -| cflow.cs:127:68:127:72 | access to field Field | cflow.cs:127:68:127:72 | this access | normal | -| cflow.cs:127:68:127:72 | this access | cflow.cs:127:68:127:72 | this access | normal | -| cflow.cs:127:68:127:80 | ... = ... | cflow.cs:127:68:127:80 | ... = ... | normal | -| cflow.cs:127:68:127:81 | ...; | cflow.cs:127:68:127:80 | ... = ... | normal | -| cflow.cs:127:76:127:80 | access to parameter value | cflow.cs:127:76:127:80 | access to parameter value | normal | -| cflow.cs:129:5:129:15 | call to constructor Object | cflow.cs:129:5:129:15 | call to constructor Object | normal | -| cflow.cs:129:5:129:15 | call to method | cflow.cs:129:5:129:15 | call to method | normal | -| cflow.cs:129:5:129:15 | this access | cflow.cs:129:5:129:15 | this access | normal | -| cflow.cs:130:5:132:5 | {...} | cflow.cs:131:9:131:17 | ... = ... | normal | -| cflow.cs:131:9:131:13 | access to field Field | cflow.cs:131:9:131:13 | this access | normal | -| cflow.cs:131:9:131:13 | this access | cflow.cs:131:9:131:13 | this access | normal | -| cflow.cs:131:9:131:17 | ... = ... | cflow.cs:131:9:131:17 | ... = ... | normal | -| cflow.cs:131:9:131:18 | ...; | cflow.cs:131:9:131:17 | ... = ... | normal | -| cflow.cs:131:17:131:17 | access to parameter s | cflow.cs:131:17:131:17 | access to parameter s | normal | -| cflow.cs:134:26:134:29 | call to constructor ControlFlow | cflow.cs:134:26:134:29 | call to constructor ControlFlow | normal | -| cflow.cs:134:31:134:31 | (...) ... | cflow.cs:134:31:134:31 | (...) ... | normal | -| cflow.cs:134:31:134:31 | access to parameter i | cflow.cs:134:31:134:31 | access to parameter i | normal | -| cflow.cs:134:31:134:36 | ... + ... | cflow.cs:134:31:134:36 | ... + ... | normal | -| cflow.cs:134:35:134:36 | "" | cflow.cs:134:35:134:36 | "" | normal | -| cflow.cs:134:39:134:41 | {...} | cflow.cs:134:39:134:41 | {...} | normal | -| cflow.cs:136:28:136:31 | call to constructor ControlFlow | cflow.cs:136:28:136:31 | call to constructor ControlFlow | normal | -| cflow.cs:136:33:136:33 | 0 | cflow.cs:136:33:136:33 | 0 | normal | -| cflow.cs:136:33:136:37 | ... + ... | cflow.cs:136:33:136:37 | ... + ... | normal | -| cflow.cs:136:37:136:37 | 1 | cflow.cs:136:37:136:37 | 1 | normal | -| cflow.cs:136:40:136:42 | {...} | cflow.cs:136:40:136:42 | {...} | normal | -| cflow.cs:139:5:142:5 | {...} | cflow.cs:141:9:141:17 | return ...; | return | -| cflow.cs:140:9:140:28 | call to method WriteLine | cflow.cs:140:9:140:28 | call to method WriteLine | normal | -| cflow.cs:140:9:140:29 | ...; | cflow.cs:140:9:140:28 | call to method WriteLine | normal | -| cflow.cs:140:27:140:27 | access to parameter x | cflow.cs:140:27:140:27 | access to parameter x | normal | -| cflow.cs:141:9:141:17 | return ...; | cflow.cs:141:9:141:17 | return ...; | return | -| cflow.cs:141:16:141:16 | access to parameter y | cflow.cs:141:16:141:16 | access to parameter y | normal | -| cflow.cs:144:37:144:54 | {...} | cflow.cs:144:39:144:52 | return ...; | return | -| cflow.cs:144:39:144:52 | return ...; | cflow.cs:144:39:144:52 | return ...; | return | -| cflow.cs:144:46:144:46 | (...) ... | cflow.cs:144:46:144:46 | (...) ... | normal | -| cflow.cs:144:46:144:46 | access to parameter i | cflow.cs:144:46:144:46 | access to parameter i | normal | -| cflow.cs:144:46:144:51 | ... + ... | cflow.cs:144:46:144:51 | ... + ... | normal | -| cflow.cs:144:50:144:51 | "" | cflow.cs:144:50:144:51 | "" | normal | -| cflow.cs:144:60:144:62 | {...} | cflow.cs:144:60:144:62 | {...} | normal | -| cflow.cs:147:5:177:5 | {...} | cflow.cs:173:32:173:41 | ... < ... | false | -| cflow.cs:148:9:148:18 | ... ...; | cflow.cs:148:13:148:17 | Int32 x = ... | normal | -| cflow.cs:148:13:148:17 | Int32 x = ... | cflow.cs:148:13:148:17 | Int32 x = ... | normal | -| cflow.cs:148:17:148:17 | 0 | cflow.cs:148:17:148:17 | 0 | normal | -| cflow.cs:149:9:150:33 | for (...;...;...) ... | cflow.cs:149:16:149:21 | ... < ... | false | -| cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:149:16:149:16 | access to local variable x | normal | -| cflow.cs:149:16:149:21 | ... < ... | cflow.cs:149:16:149:21 | ... < ... | false | -| cflow.cs:149:16:149:21 | ... < ... | cflow.cs:149:16:149:21 | ... < ... | true | -| cflow.cs:149:20:149:21 | 10 | cflow.cs:149:20:149:21 | 10 | normal | -| cflow.cs:149:24:149:26 | ++... | cflow.cs:149:24:149:26 | ++... | normal | -| cflow.cs:149:26:149:26 | access to local variable x | cflow.cs:149:26:149:26 | access to local variable x | normal | -| cflow.cs:150:13:150:32 | call to method WriteLine | cflow.cs:150:13:150:32 | call to method WriteLine | normal | -| cflow.cs:150:13:150:33 | ...; | cflow.cs:150:13:150:32 | call to method WriteLine | normal | -| cflow.cs:150:31:150:31 | access to local variable x | cflow.cs:150:31:150:31 | access to local variable x | normal | -| cflow.cs:152:9:157:9 | for (...;...;...) ... | cflow.cs:156:17:156:22 | break; | normal [break] (0) | -| cflow.cs:152:18:152:18 | access to local variable x | cflow.cs:152:18:152:18 | access to local variable x | normal | -| cflow.cs:152:18:152:20 | ...++ | cflow.cs:152:18:152:20 | ...++ | normal | -| cflow.cs:153:9:157:9 | {...} | cflow.cs:155:17:155:22 | ... > ... | false | -| cflow.cs:153:9:157:9 | {...} | cflow.cs:156:17:156:22 | break; | break | -| cflow.cs:154:13:154:32 | call to method WriteLine | cflow.cs:154:13:154:32 | call to method WriteLine | normal | -| cflow.cs:154:13:154:33 | ...; | cflow.cs:154:13:154:32 | call to method WriteLine | normal | -| cflow.cs:154:31:154:31 | access to local variable x | cflow.cs:154:31:154:31 | access to local variable x | normal | -| cflow.cs:155:13:156:22 | if (...) ... | cflow.cs:155:17:155:22 | ... > ... | false | -| cflow.cs:155:13:156:22 | if (...) ... | cflow.cs:156:17:156:22 | break; | break | -| cflow.cs:155:17:155:17 | access to local variable x | cflow.cs:155:17:155:17 | access to local variable x | normal | -| cflow.cs:155:17:155:22 | ... > ... | cflow.cs:155:17:155:22 | ... > ... | false | -| cflow.cs:155:17:155:22 | ... > ... | cflow.cs:155:17:155:22 | ... > ... | true | -| cflow.cs:155:21:155:22 | 20 | cflow.cs:155:21:155:22 | 20 | normal | -| cflow.cs:156:17:156:22 | break; | cflow.cs:156:17:156:22 | break; | break | -| cflow.cs:159:9:165:9 | for (...;...;...) ... | cflow.cs:164:17:164:22 | break; | normal [break] (0) | -| cflow.cs:160:9:165:9 | {...} | cflow.cs:163:17:163:22 | ... > ... | false | -| cflow.cs:160:9:165:9 | {...} | cflow.cs:164:17:164:22 | break; | break | -| cflow.cs:161:13:161:32 | call to method WriteLine | cflow.cs:161:13:161:32 | call to method WriteLine | normal | -| cflow.cs:161:13:161:33 | ...; | cflow.cs:161:13:161:32 | call to method WriteLine | normal | -| cflow.cs:161:31:161:31 | access to local variable x | cflow.cs:161:31:161:31 | access to local variable x | normal | -| cflow.cs:162:13:162:13 | access to local variable x | cflow.cs:162:13:162:13 | access to local variable x | normal | -| cflow.cs:162:13:162:15 | ...++ | cflow.cs:162:13:162:15 | ...++ | normal | -| cflow.cs:162:13:162:16 | ...; | cflow.cs:162:13:162:15 | ...++ | normal | -| cflow.cs:163:13:164:22 | if (...) ... | cflow.cs:163:17:163:22 | ... > ... | false | -| cflow.cs:163:13:164:22 | if (...) ... | cflow.cs:164:17:164:22 | break; | break | -| cflow.cs:163:17:163:17 | access to local variable x | cflow.cs:163:17:163:17 | access to local variable x | normal | -| cflow.cs:163:17:163:22 | ... > ... | cflow.cs:163:17:163:22 | ... > ... | false | -| cflow.cs:163:17:163:22 | ... > ... | cflow.cs:163:17:163:22 | ... > ... | true | -| cflow.cs:163:21:163:22 | 30 | cflow.cs:163:21:163:22 | 30 | normal | -| cflow.cs:164:17:164:22 | break; | cflow.cs:164:17:164:22 | break; | break | -| cflow.cs:167:9:171:9 | for (...;...;...) ... | cflow.cs:167:16:167:21 | ... < ... | false | -| cflow.cs:167:16:167:16 | access to local variable x | cflow.cs:167:16:167:16 | access to local variable x | normal | -| cflow.cs:167:16:167:21 | ... < ... | cflow.cs:167:16:167:21 | ... < ... | false | -| cflow.cs:167:16:167:21 | ... < ... | cflow.cs:167:16:167:21 | ... < ... | true | -| cflow.cs:167:20:167:21 | 40 | cflow.cs:167:20:167:21 | 40 | normal | -| cflow.cs:168:9:171:9 | {...} | cflow.cs:170:13:170:15 | ...++ | normal | -| cflow.cs:169:13:169:32 | call to method WriteLine | cflow.cs:169:13:169:32 | call to method WriteLine | normal | -| cflow.cs:169:13:169:33 | ...; | cflow.cs:169:13:169:32 | call to method WriteLine | normal | -| cflow.cs:169:31:169:31 | access to local variable x | cflow.cs:169:31:169:31 | access to local variable x | normal | -| cflow.cs:170:13:170:13 | access to local variable x | cflow.cs:170:13:170:13 | access to local variable x | normal | -| cflow.cs:170:13:170:15 | ...++ | cflow.cs:170:13:170:15 | ...++ | normal | -| cflow.cs:170:13:170:16 | ...; | cflow.cs:170:13:170:15 | ...++ | normal | -| cflow.cs:173:9:176:9 | for (...;...;...) ... | cflow.cs:173:32:173:41 | ... < ... | false | -| cflow.cs:173:18:173:22 | Int32 i = ... | cflow.cs:173:18:173:22 | Int32 i = ... | normal | -| cflow.cs:173:22:173:22 | 0 | cflow.cs:173:22:173:22 | 0 | normal | -| cflow.cs:173:25:173:29 | Int32 j = ... | cflow.cs:173:25:173:29 | Int32 j = ... | normal | -| cflow.cs:173:29:173:29 | 0 | cflow.cs:173:29:173:29 | 0 | normal | -| cflow.cs:173:32:173:32 | access to local variable i | cflow.cs:173:32:173:32 | access to local variable i | normal | -| cflow.cs:173:32:173:36 | ... + ... | cflow.cs:173:32:173:36 | ... + ... | normal | -| cflow.cs:173:32:173:41 | ... < ... | cflow.cs:173:32:173:41 | ... < ... | false | -| cflow.cs:173:32:173:41 | ... < ... | cflow.cs:173:32:173:41 | ... < ... | true | -| cflow.cs:173:36:173:36 | access to local variable j | cflow.cs:173:36:173:36 | access to local variable j | normal | -| cflow.cs:173:40:173:41 | 10 | cflow.cs:173:40:173:41 | 10 | normal | -| cflow.cs:173:44:173:44 | access to local variable i | cflow.cs:173:44:173:44 | access to local variable i | normal | -| cflow.cs:173:44:173:46 | ...++ | cflow.cs:173:44:173:46 | ...++ | normal | -| cflow.cs:173:49:173:49 | access to local variable j | cflow.cs:173:49:173:49 | access to local variable j | normal | -| cflow.cs:173:49:173:51 | ...++ | cflow.cs:173:49:173:51 | ...++ | normal | -| cflow.cs:174:9:176:9 | {...} | cflow.cs:175:13:175:36 | call to method WriteLine | normal | -| cflow.cs:175:13:175:36 | call to method WriteLine | cflow.cs:175:13:175:36 | call to method WriteLine | normal | -| cflow.cs:175:13:175:37 | ...; | cflow.cs:175:13:175:36 | call to method WriteLine | normal | -| cflow.cs:175:31:175:31 | access to local variable i | cflow.cs:175:31:175:31 | access to local variable i | normal | -| cflow.cs:175:31:175:35 | ... + ... | cflow.cs:175:31:175:35 | ... + ... | normal | -| cflow.cs:175:35:175:35 | access to local variable j | cflow.cs:175:35:175:35 | access to local variable j | normal | -| cflow.cs:180:5:183:5 | {...} | cflow.cs:182:24:182:61 | Func z = ... | normal | -| cflow.cs:181:9:181:38 | ... ...; | cflow.cs:181:24:181:37 | Func y = ... | normal | -| cflow.cs:181:24:181:37 | Func y = ... | cflow.cs:181:24:181:37 | Func y = ... | normal | -| cflow.cs:181:28:181:37 | (...) => ... | cflow.cs:181:28:181:37 | (...) => ... | normal | -| cflow.cs:181:33:181:33 | access to parameter x | cflow.cs:181:33:181:33 | access to parameter x | normal | -| cflow.cs:181:33:181:37 | ... + ... | cflow.cs:181:33:181:37 | ... + ... | normal | -| cflow.cs:181:37:181:37 | 1 | cflow.cs:181:37:181:37 | 1 | normal | -| cflow.cs:182:9:182:62 | ... ...; | cflow.cs:182:24:182:61 | Func z = ... | normal | -| cflow.cs:182:24:182:61 | Func z = ... | cflow.cs:182:24:182:61 | Func z = ... | normal | -| cflow.cs:182:28:182:61 | delegate(...) { ... } | cflow.cs:182:28:182:61 | delegate(...) { ... } | normal | -| cflow.cs:182:45:182:61 | {...} | cflow.cs:182:47:182:59 | return ...; | return | -| cflow.cs:182:47:182:59 | return ...; | cflow.cs:182:47:182:59 | return ...; | return | -| cflow.cs:182:54:182:54 | access to parameter x | cflow.cs:182:54:182:54 | access to parameter x | normal | -| cflow.cs:182:54:182:58 | ... + ... | cflow.cs:182:54:182:58 | ... + ... | normal | -| cflow.cs:182:58:182:58 | 1 | cflow.cs:182:58:182:58 | 1 | normal | -| cflow.cs:186:5:191:5 | {...} | cflow.cs:188:13:188:54 | call to method WriteLine | normal | -| cflow.cs:186:5:191:5 | {...} | cflow.cs:190:13:190:51 | call to method WriteLine | normal | -| cflow.cs:187:9:190:52 | if (...) ... | cflow.cs:188:13:188:54 | call to method WriteLine | normal | -| cflow.cs:187:9:190:52 | if (...) ... | cflow.cs:190:13:190:51 | call to method WriteLine | normal | -| cflow.cs:187:13:187:13 | 1 | cflow.cs:187:13:187:13 | 1 | normal | -| cflow.cs:187:13:187:18 | ... == ... | cflow.cs:187:13:187:18 | ... == ... | false | -| cflow.cs:187:13:187:28 | ... \|\| ... | cflow.cs:187:13:187:28 | ... \|\| ... | false | -| cflow.cs:187:13:187:50 | ... \|\| ... | cflow.cs:187:13:187:50 | ... \|\| ... | false | -| cflow.cs:187:18:187:18 | 2 | cflow.cs:187:18:187:18 | 2 | normal | -| cflow.cs:187:23:187:23 | 2 | cflow.cs:187:23:187:23 | 2 | normal | -| cflow.cs:187:23:187:28 | ... == ... | cflow.cs:187:23:187:28 | ... == ... | false | -| cflow.cs:187:28:187:28 | 3 | cflow.cs:187:28:187:28 | 3 | normal | -| cflow.cs:187:34:187:34 | 1 | cflow.cs:187:34:187:34 | 1 | normal | -| cflow.cs:187:34:187:39 | ... == ... | cflow.cs:187:34:187:39 | ... == ... | false | -| cflow.cs:187:34:187:49 | ... && ... | cflow.cs:187:34:187:49 | ... && ... | false | -| cflow.cs:187:39:187:39 | 3 | cflow.cs:187:39:187:39 | 3 | normal | -| cflow.cs:187:44:187:44 | 3 | cflow.cs:187:44:187:44 | 3 | normal | -| cflow.cs:187:44:187:49 | ... == ... | cflow.cs:187:44:187:49 | ... == ... | false | -| cflow.cs:187:49:187:49 | 1 | cflow.cs:187:49:187:49 | 1 | normal | -| cflow.cs:188:13:188:54 | call to method WriteLine | cflow.cs:188:13:188:54 | call to method WriteLine | normal | -| cflow.cs:188:13:188:55 | ...; | cflow.cs:188:13:188:54 | call to method WriteLine | normal | -| cflow.cs:188:31:188:53 | "This shouldn't happen" | cflow.cs:188:31:188:53 | "This shouldn't happen" | normal | -| cflow.cs:190:13:190:51 | call to method WriteLine | cflow.cs:190:13:190:51 | call to method WriteLine | normal | -| cflow.cs:190:13:190:52 | ...; | cflow.cs:190:13:190:51 | call to method WriteLine | normal | -| cflow.cs:190:31:190:50 | "This should happen" | cflow.cs:190:31:190:50 | "This should happen" | normal | -| cflow.cs:194:5:206:5 | {...} | cflow.cs:200:13:200:62 | ... \|\| ... | false | -| cflow.cs:194:5:206:5 | {...} | cflow.cs:203:17:203:38 | throw ...; | throw(Exception) | -| cflow.cs:195:9:195:57 | ... ...; | cflow.cs:195:13:195:56 | Boolean b = ... | normal | -| cflow.cs:195:13:195:56 | Boolean b = ... | cflow.cs:195:13:195:56 | Boolean b = ... | normal | -| cflow.cs:195:17:195:21 | access to field Field | cflow.cs:195:17:195:21 | access to field Field | normal | -| cflow.cs:195:17:195:21 | this access | cflow.cs:195:17:195:21 | this access | normal | -| cflow.cs:195:17:195:28 | access to property Length | cflow.cs:195:17:195:28 | access to property Length | normal | -| cflow.cs:195:17:195:32 | ... > ... | cflow.cs:195:17:195:32 | ... > ... | false | -| cflow.cs:195:17:195:32 | ... > ... | cflow.cs:195:17:195:32 | ... > ... | true | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:195:17:195:56 | ... && ... | normal | -| cflow.cs:195:32:195:32 | 0 | cflow.cs:195:32:195:32 | 0 | normal | -| cflow.cs:195:37:195:56 | !... | cflow.cs:195:37:195:56 | !... | normal | -| cflow.cs:195:39:195:43 | access to field Field | cflow.cs:195:39:195:43 | access to field Field | normal | -| cflow.cs:195:39:195:43 | this access | cflow.cs:195:39:195:43 | this access | normal | -| cflow.cs:195:39:195:50 | access to property Length | cflow.cs:195:39:195:50 | access to property Length | normal | -| cflow.cs:195:39:195:55 | ... == ... | cflow.cs:195:39:195:55 | ... == ... | normal | -| cflow.cs:195:55:195:55 | 1 | cflow.cs:195:55:195:55 | 1 | normal | -| cflow.cs:197:9:198:49 | if (...) ... | cflow.cs:197:13:197:47 | !... | false | -| cflow.cs:197:9:198:49 | if (...) ... | cflow.cs:198:13:198:48 | ... = ... | normal | -| cflow.cs:197:13:197:47 | !... | cflow.cs:197:13:197:47 | !... | false | -| cflow.cs:197:13:197:47 | !... | cflow.cs:197:13:197:47 | !... | true | -| cflow.cs:197:15:197:19 | access to field Field | cflow.cs:197:15:197:19 | access to field Field | normal | -| cflow.cs:197:15:197:19 | this access | cflow.cs:197:15:197:19 | this access | normal | -| cflow.cs:197:15:197:26 | access to property Length | cflow.cs:197:15:197:26 | access to property Length | normal | -| cflow.cs:197:15:197:31 | ... == ... | cflow.cs:197:15:197:31 | ... == ... | false | -| cflow.cs:197:15:197:31 | ... == ... | cflow.cs:197:15:197:31 | ... == ... | true | -| cflow.cs:197:15:197:46 | ... ? ... : ... | cflow.cs:197:15:197:46 | ... ? ... : ... | false | -| cflow.cs:197:15:197:46 | ... ? ... : ... | cflow.cs:197:15:197:46 | ... ? ... : ... | true | -| cflow.cs:197:31:197:31 | 0 | cflow.cs:197:31:197:31 | 0 | normal | -| cflow.cs:197:35:197:39 | false | cflow.cs:197:35:197:39 | false | false | -| cflow.cs:197:43:197:46 | true | cflow.cs:197:43:197:46 | true | true | -| cflow.cs:198:13:198:48 | ... = ... | cflow.cs:198:13:198:48 | ... = ... | normal | -| cflow.cs:198:13:198:49 | ...; | cflow.cs:198:13:198:48 | ... = ... | normal | -| cflow.cs:198:17:198:21 | access to field Field | cflow.cs:198:17:198:21 | access to field Field | normal | -| cflow.cs:198:17:198:21 | this access | cflow.cs:198:17:198:21 | this access | normal | -| cflow.cs:198:17:198:28 | access to property Length | cflow.cs:198:17:198:28 | access to property Length | normal | -| cflow.cs:198:17:198:33 | ... == ... | cflow.cs:198:17:198:33 | ... == ... | false | -| cflow.cs:198:17:198:33 | ... == ... | cflow.cs:198:17:198:33 | ... == ... | true | -| cflow.cs:198:17:198:48 | ... ? ... : ... | cflow.cs:198:17:198:48 | ... ? ... : ... | normal | -| cflow.cs:198:33:198:33 | 0 | cflow.cs:198:33:198:33 | 0 | normal | -| cflow.cs:198:37:198:41 | false | cflow.cs:198:37:198:41 | false | normal | -| cflow.cs:198:45:198:48 | true | cflow.cs:198:45:198:48 | true | normal | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:200:13:200:62 | ... \|\| ... | false | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:203:17:203:38 | throw ...; | throw(Exception) | -| cflow.cs:200:13:200:32 | !... | cflow.cs:200:13:200:32 | !... | false | -| cflow.cs:200:13:200:32 | !... | cflow.cs:200:13:200:32 | !... | true | -| cflow.cs:200:13:200:62 | ... \|\| ... | cflow.cs:200:13:200:62 | ... \|\| ... | false | -| cflow.cs:200:13:200:62 | ... \|\| ... | cflow.cs:200:13:200:62 | ... \|\| ... | true | -| cflow.cs:200:15:200:19 | access to field Field | cflow.cs:200:15:200:19 | access to field Field | normal | -| cflow.cs:200:15:200:19 | this access | cflow.cs:200:15:200:19 | this access | normal | -| cflow.cs:200:15:200:26 | access to property Length | cflow.cs:200:15:200:26 | access to property Length | normal | -| cflow.cs:200:15:200:31 | ... == ... | cflow.cs:200:15:200:31 | ... == ... | false | -| cflow.cs:200:15:200:31 | ... == ... | cflow.cs:200:15:200:31 | ... == ... | true | -| cflow.cs:200:31:200:31 | 0 | cflow.cs:200:31:200:31 | 0 | normal | -| cflow.cs:200:37:200:62 | !... | cflow.cs:200:37:200:62 | !... | false | -| cflow.cs:200:37:200:62 | !... | cflow.cs:200:37:200:62 | !... | true | -| cflow.cs:200:38:200:62 | !... | cflow.cs:200:38:200:62 | !... | false | -| cflow.cs:200:38:200:62 | !... | cflow.cs:200:38:200:62 | !... | true | -| cflow.cs:200:40:200:44 | access to field Field | cflow.cs:200:40:200:44 | access to field Field | normal | -| cflow.cs:200:40:200:44 | this access | cflow.cs:200:40:200:44 | this access | normal | -| cflow.cs:200:40:200:51 | access to property Length | cflow.cs:200:40:200:51 | access to property Length | normal | -| cflow.cs:200:40:200:56 | ... == ... | cflow.cs:200:40:200:56 | ... == ... | false | -| cflow.cs:200:40:200:56 | ... == ... | cflow.cs:200:40:200:56 | ... == ... | true | -| cflow.cs:200:40:200:61 | ... && ... | cflow.cs:200:40:200:61 | ... && ... | false | -| cflow.cs:200:40:200:61 | ... && ... | cflow.cs:200:40:200:61 | ... && ... | true | -| cflow.cs:200:56:200:56 | 1 | cflow.cs:200:56:200:56 | 1 | normal | -| cflow.cs:200:61:200:61 | access to local variable b | cflow.cs:200:61:200:61 | access to local variable b | false | -| cflow.cs:200:61:200:61 | access to local variable b | cflow.cs:200:61:200:61 | access to local variable b | true | -| cflow.cs:201:9:205:9 | {...} | cflow.cs:203:17:203:38 | throw ...; | throw(Exception) | -| cflow.cs:202:13:204:13 | {...} | cflow.cs:203:17:203:38 | throw ...; | throw(Exception) | -| cflow.cs:203:17:203:38 | throw ...; | cflow.cs:203:17:203:38 | throw ...; | throw(Exception) | -| cflow.cs:203:23:203:37 | object creation of type Exception | cflow.cs:203:23:203:37 | object creation of type Exception | normal | -| cflow.cs:209:5:222:5 | {...} | cflow.cs:219:17:219:22 | break; | normal [break] (0) | -| cflow.cs:209:5:222:5 | {...} | cflow.cs:221:18:221:34 | ... < ... | false | -| cflow.cs:210:9:221:36 | do ... while (...); | cflow.cs:219:17:219:22 | break; | normal [break] (0) | -| cflow.cs:210:9:221:36 | do ... while (...); | cflow.cs:221:18:221:34 | ... < ... | false | -| cflow.cs:211:9:221:9 | {...} | cflow.cs:215:17:215:25 | continue; | continue | -| cflow.cs:211:9:221:9 | {...} | cflow.cs:217:17:217:32 | ... < ... | false | -| cflow.cs:211:9:221:9 | {...} | cflow.cs:219:17:219:22 | break; | break | -| cflow.cs:212:13:212:17 | access to field Field | cflow.cs:212:13:212:17 | access to field Field | normal | -| cflow.cs:212:13:212:17 | this access | cflow.cs:212:13:212:17 | this access | normal | -| cflow.cs:212:13:212:24 | ... += ... | cflow.cs:212:13:212:24 | ... += ... | normal | -| cflow.cs:212:13:212:25 | ...; | cflow.cs:212:13:212:24 | ... += ... | normal | -| cflow.cs:212:22:212:24 | "a" | cflow.cs:212:22:212:24 | "a" | normal | -| cflow.cs:213:13:216:13 | if (...) ... | cflow.cs:213:17:213:32 | ... > ... | false | -| cflow.cs:213:13:216:13 | if (...) ... | cflow.cs:215:17:215:25 | continue; | continue | -| cflow.cs:213:17:213:21 | access to field Field | cflow.cs:213:17:213:21 | access to field Field | normal | -| cflow.cs:213:17:213:21 | this access | cflow.cs:213:17:213:21 | this access | normal | -| cflow.cs:213:17:213:28 | access to property Length | cflow.cs:213:17:213:28 | access to property Length | normal | -| cflow.cs:213:17:213:32 | ... > ... | cflow.cs:213:17:213:32 | ... > ... | false | -| cflow.cs:213:17:213:32 | ... > ... | cflow.cs:213:17:213:32 | ... > ... | true | -| cflow.cs:213:32:213:32 | 0 | cflow.cs:213:32:213:32 | 0 | normal | -| cflow.cs:214:13:216:13 | {...} | cflow.cs:215:17:215:25 | continue; | continue | -| cflow.cs:215:17:215:25 | continue; | cflow.cs:215:17:215:25 | continue; | continue | -| cflow.cs:217:13:220:13 | if (...) ... | cflow.cs:217:17:217:32 | ... < ... | false | -| cflow.cs:217:13:220:13 | if (...) ... | cflow.cs:219:17:219:22 | break; | break | -| cflow.cs:217:17:217:21 | access to field Field | cflow.cs:217:17:217:21 | access to field Field | normal | -| cflow.cs:217:17:217:21 | this access | cflow.cs:217:17:217:21 | this access | normal | -| cflow.cs:217:17:217:28 | access to property Length | cflow.cs:217:17:217:28 | access to property Length | normal | -| cflow.cs:217:17:217:32 | ... < ... | cflow.cs:217:17:217:32 | ... < ... | false | -| cflow.cs:217:17:217:32 | ... < ... | cflow.cs:217:17:217:32 | ... < ... | true | -| cflow.cs:217:32:217:32 | 0 | cflow.cs:217:32:217:32 | 0 | normal | -| cflow.cs:218:13:220:13 | {...} | cflow.cs:219:17:219:22 | break; | break | -| cflow.cs:219:17:219:22 | break; | cflow.cs:219:17:219:22 | break; | break | -| cflow.cs:221:18:221:22 | access to field Field | cflow.cs:221:18:221:22 | access to field Field | normal | -| cflow.cs:221:18:221:22 | this access | cflow.cs:221:18:221:22 | this access | normal | -| cflow.cs:221:18:221:29 | access to property Length | cflow.cs:221:18:221:29 | access to property Length | normal | -| cflow.cs:221:18:221:34 | ... < ... | cflow.cs:221:18:221:34 | ... < ... | false | -| cflow.cs:221:18:221:34 | ... < ... | cflow.cs:221:18:221:34 | ... < ... | true | -| cflow.cs:221:33:221:34 | 10 | cflow.cs:221:33:221:34 | 10 | normal | -| cflow.cs:225:5:238:5 | {...} | cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | empty | -| cflow.cs:225:5:238:5 | {...} | cflow.cs:235:17:235:22 | break; | normal [break] (0) | -| cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | empty | -| cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | cflow.cs:235:17:235:22 | break; | normal [break] (0) | -| cflow.cs:226:22:226:22 | String x | cflow.cs:226:22:226:22 | String x | normal | -| cflow.cs:226:27:226:64 | call to method Repeat | cflow.cs:226:27:226:64 | call to method Repeat | normal | -| cflow.cs:226:57:226:59 | "a" | cflow.cs:226:57:226:59 | "a" | normal | -| cflow.cs:226:62:226:63 | 10 | cflow.cs:226:62:226:63 | 10 | normal | -| cflow.cs:227:9:237:9 | {...} | cflow.cs:231:17:231:25 | continue; | continue | -| cflow.cs:227:9:237:9 | {...} | cflow.cs:233:17:233:32 | ... < ... | false | -| cflow.cs:227:9:237:9 | {...} | cflow.cs:235:17:235:22 | break; | break | -| cflow.cs:228:13:228:17 | access to field Field | cflow.cs:228:13:228:17 | access to field Field | normal | -| cflow.cs:228:13:228:17 | this access | cflow.cs:228:13:228:17 | this access | normal | -| cflow.cs:228:13:228:22 | ... += ... | cflow.cs:228:13:228:22 | ... += ... | normal | -| cflow.cs:228:13:228:23 | ...; | cflow.cs:228:13:228:22 | ... += ... | normal | -| cflow.cs:228:22:228:22 | access to local variable x | cflow.cs:228:22:228:22 | access to local variable x | normal | -| cflow.cs:229:13:232:13 | if (...) ... | cflow.cs:229:17:229:32 | ... > ... | false | -| cflow.cs:229:13:232:13 | if (...) ... | cflow.cs:231:17:231:25 | continue; | continue | -| cflow.cs:229:17:229:21 | access to field Field | cflow.cs:229:17:229:21 | access to field Field | normal | -| cflow.cs:229:17:229:21 | this access | cflow.cs:229:17:229:21 | this access | normal | -| cflow.cs:229:17:229:28 | access to property Length | cflow.cs:229:17:229:28 | access to property Length | normal | -| cflow.cs:229:17:229:32 | ... > ... | cflow.cs:229:17:229:32 | ... > ... | false | -| cflow.cs:229:17:229:32 | ... > ... | cflow.cs:229:17:229:32 | ... > ... | true | -| cflow.cs:229:32:229:32 | 0 | cflow.cs:229:32:229:32 | 0 | normal | -| cflow.cs:230:13:232:13 | {...} | cflow.cs:231:17:231:25 | continue; | continue | -| cflow.cs:231:17:231:25 | continue; | cflow.cs:231:17:231:25 | continue; | continue | -| cflow.cs:233:13:236:13 | if (...) ... | cflow.cs:233:17:233:32 | ... < ... | false | -| cflow.cs:233:13:236:13 | if (...) ... | cflow.cs:235:17:235:22 | break; | break | -| cflow.cs:233:17:233:21 | access to field Field | cflow.cs:233:17:233:21 | access to field Field | normal | -| cflow.cs:233:17:233:21 | this access | cflow.cs:233:17:233:21 | this access | normal | -| cflow.cs:233:17:233:28 | access to property Length | cflow.cs:233:17:233:28 | access to property Length | normal | -| cflow.cs:233:17:233:32 | ... < ... | cflow.cs:233:17:233:32 | ... < ... | false | -| cflow.cs:233:17:233:32 | ... < ... | cflow.cs:233:17:233:32 | ... < ... | true | -| cflow.cs:233:32:233:32 | 0 | cflow.cs:233:32:233:32 | 0 | normal | -| cflow.cs:234:13:236:13 | {...} | cflow.cs:235:17:235:22 | break; | break | -| cflow.cs:235:17:235:22 | break; | cflow.cs:235:17:235:22 | break; | break | -| cflow.cs:241:5:259:5 | {...} | cflow.cs:244:31:244:41 | goto ...; | goto(Label) | -| cflow.cs:241:5:259:5 | {...} | cflow.cs:252:17:252:22 | break; | normal [break] (0) | -| cflow.cs:241:5:259:5 | {...} | cflow.cs:254:17:254:27 | goto ...; | goto(Label) | -| cflow.cs:241:5:259:5 | {...} | cflow.cs:257:17:257:22 | break; | normal [break] (0) | -| cflow.cs:242:5:242:9 | Label: | cflow.cs:242:5:242:9 | Label: | normal | -| cflow.cs:242:12:242:41 | if (...) ... | cflow.cs:242:16:242:36 | !... | false | -| cflow.cs:242:12:242:41 | if (...) ... | cflow.cs:242:39:242:41 | {...} | normal | -| cflow.cs:242:16:242:36 | !... | cflow.cs:242:16:242:36 | !... | false | -| cflow.cs:242:16:242:36 | !... | cflow.cs:242:16:242:36 | !... | true | -| cflow.cs:242:17:242:36 | !... | cflow.cs:242:17:242:36 | !... | false | -| cflow.cs:242:17:242:36 | !... | cflow.cs:242:17:242:36 | !... | true | -| cflow.cs:242:19:242:23 | access to field Field | cflow.cs:242:19:242:23 | access to field Field | normal | -| cflow.cs:242:19:242:23 | this access | cflow.cs:242:19:242:23 | this access | normal | -| cflow.cs:242:19:242:30 | access to property Length | cflow.cs:242:19:242:30 | access to property Length | normal | -| cflow.cs:242:19:242:35 | ... == ... | cflow.cs:242:19:242:35 | ... == ... | false | -| cflow.cs:242:19:242:35 | ... == ... | cflow.cs:242:19:242:35 | ... == ... | true | -| cflow.cs:242:35:242:35 | 0 | cflow.cs:242:35:242:35 | 0 | normal | -| cflow.cs:242:39:242:41 | {...} | cflow.cs:242:39:242:41 | {...} | normal | -| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:244:13:244:28 | ... > ... | false | -| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:244:31:244:41 | goto ...; | goto(Label) | -| cflow.cs:244:13:244:17 | access to field Field | cflow.cs:244:13:244:17 | access to field Field | normal | -| cflow.cs:244:13:244:17 | this access | cflow.cs:244:13:244:17 | this access | normal | -| cflow.cs:244:13:244:24 | access to property Length | cflow.cs:244:13:244:24 | access to property Length | normal | -| cflow.cs:244:13:244:28 | ... > ... | cflow.cs:244:13:244:28 | ... > ... | false | -| cflow.cs:244:13:244:28 | ... > ... | cflow.cs:244:13:244:28 | ... > ... | true | -| cflow.cs:244:28:244:28 | 0 | cflow.cs:244:28:244:28 | 0 | normal | -| cflow.cs:244:31:244:41 | goto ...; | cflow.cs:244:31:244:41 | goto ...; | goto(Label) | -| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:252:17:252:22 | break; | normal [break] (0) | -| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:254:17:254:27 | goto ...; | goto(Label) | -| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:257:17:257:22 | break; | normal [break] (0) | -| cflow.cs:246:17:246:21 | access to field Field | cflow.cs:246:17:246:21 | access to field Field | normal | -| cflow.cs:246:17:246:21 | this access | cflow.cs:246:17:246:21 | this access | normal | -| cflow.cs:246:17:246:28 | access to property Length | cflow.cs:246:17:246:28 | access to property Length | normal | -| cflow.cs:246:17:246:32 | ... + ... | cflow.cs:246:17:246:32 | ... + ... | normal | -| cflow.cs:246:32:246:32 | 3 | cflow.cs:246:32:246:32 | 3 | normal | -| cflow.cs:248:13:248:19 | case ...: | cflow.cs:248:18:248:18 | 0 | no-match | -| cflow.cs:248:13:248:19 | case ...: | cflow.cs:249:17:249:29 | goto default; | goto(default) | -| cflow.cs:248:18:248:18 | 0 | cflow.cs:248:18:248:18 | 0 | match | -| cflow.cs:248:18:248:18 | 0 | cflow.cs:248:18:248:18 | 0 | no-match | -| cflow.cs:249:17:249:29 | goto default; | cflow.cs:249:17:249:29 | goto default; | goto(default) | -| cflow.cs:250:13:250:19 | case ...: | cflow.cs:250:18:250:18 | 1 | no-match | -| cflow.cs:250:13:250:19 | case ...: | cflow.cs:251:17:251:36 | call to method WriteLine | normal | -| cflow.cs:250:18:250:18 | 1 | cflow.cs:250:18:250:18 | 1 | match | -| cflow.cs:250:18:250:18 | 1 | cflow.cs:250:18:250:18 | 1 | no-match | -| cflow.cs:251:17:251:36 | call to method WriteLine | cflow.cs:251:17:251:36 | call to method WriteLine | normal | -| cflow.cs:251:17:251:37 | ...; | cflow.cs:251:17:251:36 | call to method WriteLine | normal | -| cflow.cs:251:35:251:35 | 1 | cflow.cs:251:35:251:35 | 1 | normal | -| cflow.cs:252:17:252:22 | break; | cflow.cs:252:17:252:22 | break; | break | -| cflow.cs:253:13:253:19 | case ...: | cflow.cs:253:18:253:18 | 2 | no-match | -| cflow.cs:253:13:253:19 | case ...: | cflow.cs:254:17:254:27 | goto ...; | goto(Label) | -| cflow.cs:253:18:253:18 | 2 | cflow.cs:253:18:253:18 | 2 | match | -| cflow.cs:253:18:253:18 | 2 | cflow.cs:253:18:253:18 | 2 | no-match | -| cflow.cs:254:17:254:27 | goto ...; | cflow.cs:254:17:254:27 | goto ...; | goto(Label) | -| cflow.cs:255:13:255:20 | default: | cflow.cs:256:17:256:36 | call to method WriteLine | normal | -| cflow.cs:256:17:256:36 | call to method WriteLine | cflow.cs:256:17:256:36 | call to method WriteLine | normal | -| cflow.cs:256:17:256:37 | ...; | cflow.cs:256:17:256:36 | call to method WriteLine | normal | -| cflow.cs:256:35:256:35 | 0 | cflow.cs:256:35:256:35 | 0 | normal | -| cflow.cs:257:17:257:22 | break; | cflow.cs:257:17:257:22 | break; | break | -| cflow.cs:262:5:277:5 | {...} | cflow.cs:275:13:275:41 | call to method WriteLine | normal | -| cflow.cs:262:5:277:5 | {...} | cflow.cs:275:13:275:41 | call to method WriteLine | return [normal] (0) | -| cflow.cs:262:5:277:5 | {...} | cflow.cs:275:13:275:41 | call to method WriteLine | throw(Exception) [normal] (0) | -| cflow.cs:263:9:263:23 | yield return ...; | cflow.cs:263:9:263:23 | yield return ...; | normal | -| cflow.cs:263:22:263:22 | 0 | cflow.cs:263:22:263:22 | 0 | normal | -| cflow.cs:264:9:267:9 | for (...;...;...) ... | cflow.cs:264:25:264:30 | ... < ... | false | -| cflow.cs:264:18:264:22 | Int32 i = ... | cflow.cs:264:18:264:22 | Int32 i = ... | normal | -| cflow.cs:264:22:264:22 | 1 | cflow.cs:264:22:264:22 | 1 | normal | -| cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:264:25:264:25 | access to local variable i | normal | -| cflow.cs:264:25:264:30 | ... < ... | cflow.cs:264:25:264:30 | ... < ... | false | -| cflow.cs:264:25:264:30 | ... < ... | cflow.cs:264:25:264:30 | ... < ... | true | -| cflow.cs:264:29:264:30 | 10 | cflow.cs:264:29:264:30 | 10 | normal | -| cflow.cs:264:33:264:33 | access to local variable i | cflow.cs:264:33:264:33 | access to local variable i | normal | -| cflow.cs:264:33:264:35 | ...++ | cflow.cs:264:33:264:35 | ...++ | normal | -| cflow.cs:265:9:267:9 | {...} | cflow.cs:266:13:266:27 | yield return ...; | normal | -| cflow.cs:266:13:266:27 | yield return ...; | cflow.cs:266:13:266:27 | yield return ...; | normal | -| cflow.cs:266:26:266:26 | access to local variable i | cflow.cs:266:26:266:26 | access to local variable i | normal | -| cflow.cs:268:9:276:9 | try {...} ... | cflow.cs:275:13:275:41 | call to method WriteLine | normal | -| cflow.cs:268:9:276:9 | try {...} ... | cflow.cs:275:13:275:41 | call to method WriteLine | return [normal] (0) | -| cflow.cs:268:9:276:9 | try {...} ... | cflow.cs:275:13:275:41 | call to method WriteLine | throw(Exception) [normal] (0) | -| cflow.cs:269:9:272:9 | {...} | cflow.cs:270:13:270:24 | yield break; | return | -| cflow.cs:269:9:272:9 | {...} | cflow.cs:271:13:271:42 | call to method WriteLine | normal | -| cflow.cs:269:9:272:9 | {...} | cflow.cs:271:13:271:42 | call to method WriteLine | throw(Exception) | -| cflow.cs:270:13:270:24 | yield break; | cflow.cs:270:13:270:24 | yield break; | return | -| cflow.cs:271:13:271:42 | call to method WriteLine | cflow.cs:271:13:271:42 | call to method WriteLine | normal | -| cflow.cs:271:13:271:42 | call to method WriteLine | cflow.cs:271:13:271:42 | call to method WriteLine | throw(Exception) | -| cflow.cs:271:13:271:43 | ...; | cflow.cs:271:13:271:42 | call to method WriteLine | normal | -| cflow.cs:271:13:271:43 | ...; | cflow.cs:271:13:271:42 | call to method WriteLine | throw(Exception) | -| cflow.cs:271:31:271:41 | "dead code" | cflow.cs:271:31:271:41 | "dead code" | normal | -| cflow.cs:274:9:276:9 | {...} | cflow.cs:275:13:275:41 | call to method WriteLine | normal | -| cflow.cs:275:13:275:41 | call to method WriteLine | cflow.cs:275:13:275:41 | call to method WriteLine | normal | -| cflow.cs:275:13:275:42 | ...; | cflow.cs:275:13:275:41 | call to method WriteLine | normal | -| cflow.cs:275:31:275:40 | "not dead" | cflow.cs:275:31:275:40 | "not dead" | normal | -| cflow.cs:282:5:282:18 | call to method | cflow.cs:282:5:282:18 | call to method | normal | -| cflow.cs:282:5:282:18 | this access | cflow.cs:282:5:282:18 | this access | normal | -| cflow.cs:282:24:282:27 | call to constructor ControlFlow | cflow.cs:282:24:282:27 | call to constructor ControlFlow | normal | -| cflow.cs:282:31:282:33 | {...} | cflow.cs:282:31:282:33 | {...} | normal | -| cflow.cs:284:32:284:35 | call to constructor ControlFlowSub | cflow.cs:284:32:284:35 | call to constructor ControlFlowSub | normal | -| cflow.cs:284:39:284:41 | {...} | cflow.cs:284:39:284:41 | {...} | normal | -| cflow.cs:286:29:286:32 | call to constructor ControlFlowSub | cflow.cs:286:29:286:32 | call to constructor ControlFlowSub | normal | -| cflow.cs:286:34:286:34 | access to parameter i | cflow.cs:286:34:286:34 | access to parameter i | normal | -| cflow.cs:286:34:286:45 | call to method ToString | cflow.cs:286:34:286:45 | call to method ToString | normal | -| cflow.cs:286:48:286:50 | {...} | cflow.cs:286:48:286:50 | {...} | normal | -| cflow.cs:289:7:289:18 | call to constructor Object | cflow.cs:289:7:289:18 | call to constructor Object | normal | -| cflow.cs:289:7:289:18 | call to method | cflow.cs:289:7:289:18 | call to method | normal | -| cflow.cs:289:7:289:18 | this access | cflow.cs:289:7:289:18 | this access | normal | -| cflow.cs:289:7:289:18 | {...} | cflow.cs:289:7:289:18 | {...} | normal | -| cflow.cs:291:38:291:38 | access to parameter f | cflow.cs:291:38:291:38 | access to parameter f | normal | -| cflow.cs:291:38:291:41 | delegate call | cflow.cs:291:38:291:41 | delegate call | normal | -| cflow.cs:291:40:291:40 | 0 | cflow.cs:291:40:291:40 | 0 | normal | -| cflow.cs:296:5:296:25 | call to constructor Object | cflow.cs:296:5:296:25 | call to constructor Object | normal | -| cflow.cs:296:5:296:25 | call to method | cflow.cs:296:5:296:25 | call to method | normal | -| cflow.cs:296:5:296:25 | this access | cflow.cs:296:5:296:25 | this access | normal | -| cflow.cs:296:52:296:54 | {...} | cflow.cs:296:52:296:54 | {...} | normal | -| cflow.cs:299:5:301:5 | {...} | cflow.cs:300:9:300:72 | object creation of type NegationInConstructor | normal | -| cflow.cs:300:9:300:72 | object creation of type NegationInConstructor | cflow.cs:300:9:300:72 | object creation of type NegationInConstructor | normal | -| cflow.cs:300:9:300:73 | ...; | cflow.cs:300:9:300:72 | object creation of type NegationInConstructor | normal | -| cflow.cs:300:38:300:38 | 0 | cflow.cs:300:38:300:38 | 0 | normal | -| cflow.cs:300:44:300:51 | !... | cflow.cs:300:44:300:51 | !... | false | -| cflow.cs:300:44:300:51 | !... | cflow.cs:300:44:300:51 | !... | true | -| cflow.cs:300:44:300:64 | ... && ... | cflow.cs:300:44:300:64 | ... && ... | normal | -| cflow.cs:300:46:300:46 | access to parameter i | cflow.cs:300:46:300:46 | access to parameter i | normal | -| cflow.cs:300:46:300:50 | ... > ... | cflow.cs:300:46:300:50 | ... > ... | false | -| cflow.cs:300:46:300:50 | ... > ... | cflow.cs:300:46:300:50 | ... > ... | true | -| cflow.cs:300:50:300:50 | 0 | cflow.cs:300:50:300:50 | 0 | normal | -| cflow.cs:300:56:300:56 | access to parameter s | cflow.cs:300:56:300:56 | access to parameter s | normal | -| cflow.cs:300:56:300:64 | ... != ... | cflow.cs:300:56:300:64 | ... != ... | normal | -| cflow.cs:300:61:300:64 | null | cflow.cs:300:61:300:64 | null | normal | -| cflow.cs:300:70:300:71 | "" | cflow.cs:300:70:300:71 | "" | normal | -| cflow.cs:304:7:304:18 | call to constructor Object | cflow.cs:304:7:304:18 | call to constructor Object | normal | -| cflow.cs:304:7:304:18 | call to method | cflow.cs:304:7:304:18 | call to method | normal | -| cflow.cs:304:7:304:18 | this access | cflow.cs:304:7:304:18 | this access | normal | -| cflow.cs:304:7:304:18 | {...} | cflow.cs:304:7:304:18 | {...} | normal | -| cflow.cs:306:60:310:5 | (...) => ... | cflow.cs:306:60:310:5 | (...) => ... | normal | -| cflow.cs:307:5:310:5 | {...} | cflow.cs:309:9:309:17 | return ...; | return | -| cflow.cs:308:9:308:21 | ... ...; | cflow.cs:308:16:308:20 | Object x = ... | normal | -| cflow.cs:308:16:308:20 | Object x = ... | cflow.cs:308:16:308:20 | Object x = ... | normal | -| cflow.cs:308:20:308:20 | access to parameter o | cflow.cs:308:20:308:20 | access to parameter o | normal | -| cflow.cs:309:9:309:17 | return ...; | cflow.cs:309:9:309:17 | return ...; | return | -| cflow.cs:309:16:309:16 | access to local variable x | cflow.cs:309:16:309:16 | access to local variable x | normal | diff --git a/csharp/ql/test/library-tests/controlflow/graph/ExitElement.ql b/csharp/ql/test/library-tests/controlflow/graph/ExitElement.ql deleted file mode 100644 index d51cbcb82c40..000000000000 --- a/csharp/ql/test/library-tests/controlflow/graph/ExitElement.ql +++ /dev/null @@ -1,8 +0,0 @@ -import csharp -import semmle.code.csharp.controlflow.internal.ControlFlowGraphImpl -private import semmle.code.csharp.controlflow.internal.Completion -import Common - -from SourceControlFlowElement cfe, ControlFlowElement last, Completion c -where last(cfe, last, c) -select cfe, last, c diff --git a/csharp/ql/test/library-tests/controlflow/graph/NodeGraph.expected b/csharp/ql/test/library-tests/controlflow/graph/NodeGraph.expected index 544bc1bd776c..da56986ea095 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/NodeGraph.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/NodeGraph.expected @@ -1,4468 +1,8525 @@ -| AccessorCalls.cs:1:7:1:19 | call to constructor Object | AccessorCalls.cs:1:7:1:19 | {...} | | -| AccessorCalls.cs:1:7:1:19 | call to method | AccessorCalls.cs:1:7:1:19 | call to constructor Object | | -| AccessorCalls.cs:1:7:1:19 | enter AccessorCalls | AccessorCalls.cs:1:7:1:19 | this access | | -| AccessorCalls.cs:1:7:1:19 | exit AccessorCalls (normal) | AccessorCalls.cs:1:7:1:19 | exit AccessorCalls | | +| AccessorCalls.cs:1:7:1:19 | After call to constructor Object | AccessorCalls.cs:1:7:1:19 | {...} | | +| AccessorCalls.cs:1:7:1:19 | After call to method | AccessorCalls.cs:1:7:1:19 | Before call to constructor Object | | +| AccessorCalls.cs:1:7:1:19 | Before call to constructor Object | AccessorCalls.cs:1:7:1:19 | call to constructor Object | | +| AccessorCalls.cs:1:7:1:19 | Before call to method | AccessorCalls.cs:1:7:1:19 | this access | | +| AccessorCalls.cs:1:7:1:19 | Entry | AccessorCalls.cs:1:7:1:19 | Before call to method | | +| AccessorCalls.cs:1:7:1:19 | Normal Exit | AccessorCalls.cs:1:7:1:19 | Exit | | +| AccessorCalls.cs:1:7:1:19 | call to constructor Object | AccessorCalls.cs:1:7:1:19 | After call to constructor Object | | +| AccessorCalls.cs:1:7:1:19 | call to method | AccessorCalls.cs:1:7:1:19 | After call to method | | | AccessorCalls.cs:1:7:1:19 | this access | AccessorCalls.cs:1:7:1:19 | call to method | | -| AccessorCalls.cs:1:7:1:19 | {...} | AccessorCalls.cs:1:7:1:19 | exit AccessorCalls (normal) | | -| AccessorCalls.cs:5:23:5:25 | enter get_Item | AccessorCalls.cs:5:30:5:30 | access to parameter i | | -| AccessorCalls.cs:5:23:5:25 | exit get_Item (normal) | AccessorCalls.cs:5:23:5:25 | exit get_Item | | -| AccessorCalls.cs:5:30:5:30 | access to parameter i | AccessorCalls.cs:5:23:5:25 | exit get_Item (normal) | | -| AccessorCalls.cs:5:33:5:35 | enter set_Item | AccessorCalls.cs:5:37:5:39 | {...} | | -| AccessorCalls.cs:5:33:5:35 | exit set_Item (normal) | AccessorCalls.cs:5:33:5:35 | exit set_Item | | -| AccessorCalls.cs:5:37:5:39 | {...} | AccessorCalls.cs:5:33:5:35 | exit set_Item (normal) | | -| AccessorCalls.cs:7:32:7:34 | enter add_Event | AccessorCalls.cs:7:36:7:38 | {...} | | -| AccessorCalls.cs:7:32:7:34 | exit add_Event (normal) | AccessorCalls.cs:7:32:7:34 | exit add_Event | | -| AccessorCalls.cs:7:36:7:38 | {...} | AccessorCalls.cs:7:32:7:34 | exit add_Event (normal) | | -| AccessorCalls.cs:7:40:7:45 | enter remove_Event | AccessorCalls.cs:7:47:7:49 | {...} | | -| AccessorCalls.cs:7:40:7:45 | exit remove_Event (normal) | AccessorCalls.cs:7:40:7:45 | exit remove_Event | | -| AccessorCalls.cs:7:47:7:49 | {...} | AccessorCalls.cs:7:40:7:45 | exit remove_Event (normal) | | -| AccessorCalls.cs:10:10:10:11 | enter M1 | AccessorCalls.cs:11:5:17:5 | {...} | | -| AccessorCalls.cs:10:10:10:11 | exit M1 (normal) | AccessorCalls.cs:10:10:10:11 | exit M1 | | +| AccessorCalls.cs:1:7:1:19 | {...} | AccessorCalls.cs:1:7:1:19 | Normal Exit | | +| AccessorCalls.cs:5:18:5:18 | i | AccessorCalls.cs:5:30:5:30 | access to parameter i | | +| AccessorCalls.cs:5:18:5:18 | i | AccessorCalls.cs:5:33:5:35 | value | | +| AccessorCalls.cs:5:23:5:25 | Entry | AccessorCalls.cs:5:18:5:18 | i | | +| AccessorCalls.cs:5:23:5:25 | Normal Exit | AccessorCalls.cs:5:23:5:25 | Exit | | +| AccessorCalls.cs:5:30:5:30 | access to parameter i | AccessorCalls.cs:5:23:5:25 | Normal Exit | | +| AccessorCalls.cs:5:33:5:35 | Entry | AccessorCalls.cs:5:18:5:18 | i | | +| AccessorCalls.cs:5:33:5:35 | Normal Exit | AccessorCalls.cs:5:33:5:35 | Exit | | +| AccessorCalls.cs:5:33:5:35 | value | AccessorCalls.cs:5:37:5:39 | {...} | | +| AccessorCalls.cs:5:37:5:39 | {...} | AccessorCalls.cs:5:33:5:35 | Normal Exit | | +| AccessorCalls.cs:7:32:7:34 | Entry | AccessorCalls.cs:7:32:7:34 | value | | +| AccessorCalls.cs:7:32:7:34 | Normal Exit | AccessorCalls.cs:7:32:7:34 | Exit | | +| AccessorCalls.cs:7:32:7:34 | value | AccessorCalls.cs:7:36:7:38 | {...} | | +| AccessorCalls.cs:7:36:7:38 | {...} | AccessorCalls.cs:7:32:7:34 | Normal Exit | | +| AccessorCalls.cs:7:40:7:45 | Entry | AccessorCalls.cs:7:40:7:45 | value | | +| AccessorCalls.cs:7:40:7:45 | Normal Exit | AccessorCalls.cs:7:40:7:45 | Exit | | +| AccessorCalls.cs:7:40:7:45 | value | AccessorCalls.cs:7:47:7:49 | {...} | | +| AccessorCalls.cs:7:47:7:49 | {...} | AccessorCalls.cs:7:40:7:45 | Normal Exit | | +| AccessorCalls.cs:10:10:10:11 | Entry | AccessorCalls.cs:10:26:10:26 | e | | +| AccessorCalls.cs:10:10:10:11 | Normal Exit | AccessorCalls.cs:10:10:10:11 | Exit | | +| AccessorCalls.cs:10:26:10:26 | e | AccessorCalls.cs:11:5:17:5 | {...} | | +| AccessorCalls.cs:11:5:17:5 | After {...} | AccessorCalls.cs:10:10:10:11 | Normal Exit | | | AccessorCalls.cs:11:5:17:5 | {...} | AccessorCalls.cs:12:9:12:32 | ...; | | -| AccessorCalls.cs:12:9:12:12 | this access | AccessorCalls.cs:12:22:12:25 | this access | | -| AccessorCalls.cs:12:9:12:18 | access to field Field | AccessorCalls.cs:12:9:12:31 | ... = ... | | -| AccessorCalls.cs:12:9:12:31 | ... = ... | AccessorCalls.cs:13:9:13:30 | ...; | | -| AccessorCalls.cs:12:9:12:32 | ...; | AccessorCalls.cs:12:9:12:12 | this access | | +| AccessorCalls.cs:12:9:12:12 | this access | AccessorCalls.cs:12:9:12:18 | access to field Field | | +| AccessorCalls.cs:12:9:12:18 | After access to field Field | AccessorCalls.cs:12:22:12:31 | Before access to field Field | | +| AccessorCalls.cs:12:9:12:18 | Before access to field Field | AccessorCalls.cs:12:9:12:12 | this access | | +| AccessorCalls.cs:12:9:12:18 | access to field Field | AccessorCalls.cs:12:9:12:18 | After access to field Field | | +| AccessorCalls.cs:12:9:12:31 | ... = ... | AccessorCalls.cs:12:9:12:31 | After ... = ... | | +| AccessorCalls.cs:12:9:12:31 | After ... = ... | AccessorCalls.cs:12:9:12:32 | After ...; | | +| AccessorCalls.cs:12:9:12:31 | Before ... = ... | AccessorCalls.cs:12:9:12:18 | Before access to field Field | | +| AccessorCalls.cs:12:9:12:32 | ...; | AccessorCalls.cs:12:9:12:31 | Before ... = ... | | +| AccessorCalls.cs:12:9:12:32 | After ...; | AccessorCalls.cs:13:9:13:30 | ...; | | | AccessorCalls.cs:12:22:12:25 | this access | AccessorCalls.cs:12:22:12:31 | access to field Field | | -| AccessorCalls.cs:12:22:12:31 | access to field Field | AccessorCalls.cs:12:9:12:18 | access to field Field | | -| AccessorCalls.cs:13:9:13:12 | this access | AccessorCalls.cs:13:21:13:24 | this access | | -| AccessorCalls.cs:13:9:13:17 | access to property Prop | AccessorCalls.cs:13:9:13:29 | ... = ... | | -| AccessorCalls.cs:13:9:13:29 | ... = ... | AccessorCalls.cs:14:9:14:26 | ...; | | -| AccessorCalls.cs:13:9:13:30 | ...; | AccessorCalls.cs:13:9:13:12 | this access | | +| AccessorCalls.cs:12:22:12:31 | After access to field Field | AccessorCalls.cs:12:9:12:31 | ... = ... | | +| AccessorCalls.cs:12:22:12:31 | Before access to field Field | AccessorCalls.cs:12:22:12:25 | this access | | +| AccessorCalls.cs:12:22:12:31 | access to field Field | AccessorCalls.cs:12:22:12:31 | After access to field Field | | +| AccessorCalls.cs:13:9:13:12 | this access | AccessorCalls.cs:13:9:13:17 | access to property Prop | | +| AccessorCalls.cs:13:9:13:17 | After access to property Prop | AccessorCalls.cs:13:21:13:29 | Before access to property Prop | | +| AccessorCalls.cs:13:9:13:17 | Before access to property Prop | AccessorCalls.cs:13:9:13:12 | this access | | +| AccessorCalls.cs:13:9:13:17 | access to property Prop | AccessorCalls.cs:13:9:13:17 | After access to property Prop | | +| AccessorCalls.cs:13:9:13:29 | ... = ... | AccessorCalls.cs:13:9:13:29 | After ... = ... | | +| AccessorCalls.cs:13:9:13:29 | After ... = ... | AccessorCalls.cs:13:9:13:30 | After ...; | | +| AccessorCalls.cs:13:9:13:29 | Before ... = ... | AccessorCalls.cs:13:9:13:17 | Before access to property Prop | | +| AccessorCalls.cs:13:9:13:30 | ...; | AccessorCalls.cs:13:9:13:29 | Before ... = ... | | +| AccessorCalls.cs:13:9:13:30 | After ...; | AccessorCalls.cs:14:9:14:26 | ...; | | | AccessorCalls.cs:13:21:13:24 | this access | AccessorCalls.cs:13:21:13:29 | access to property Prop | | -| AccessorCalls.cs:13:21:13:29 | access to property Prop | AccessorCalls.cs:13:9:13:17 | access to property Prop | | +| AccessorCalls.cs:13:21:13:29 | After access to property Prop | AccessorCalls.cs:13:9:13:29 | ... = ... | | +| AccessorCalls.cs:13:21:13:29 | Before access to property Prop | AccessorCalls.cs:13:21:13:24 | this access | | +| AccessorCalls.cs:13:21:13:29 | access to property Prop | AccessorCalls.cs:13:21:13:29 | After access to property Prop | | | AccessorCalls.cs:14:9:14:12 | this access | AccessorCalls.cs:14:14:14:14 | 0 | | -| AccessorCalls.cs:14:9:14:15 | access to indexer | AccessorCalls.cs:14:9:14:25 | ... = ... | | -| AccessorCalls.cs:14:9:14:25 | ... = ... | AccessorCalls.cs:15:9:15:24 | ...; | | -| AccessorCalls.cs:14:9:14:26 | ...; | AccessorCalls.cs:14:9:14:12 | this access | | -| AccessorCalls.cs:14:14:14:14 | 0 | AccessorCalls.cs:14:19:14:22 | this access | | +| AccessorCalls.cs:14:9:14:15 | After access to indexer | AccessorCalls.cs:14:19:14:25 | Before access to indexer | | +| AccessorCalls.cs:14:9:14:15 | Before access to indexer | AccessorCalls.cs:14:9:14:12 | this access | | +| AccessorCalls.cs:14:9:14:15 | access to indexer | AccessorCalls.cs:14:9:14:15 | After access to indexer | | +| AccessorCalls.cs:14:9:14:25 | ... = ... | AccessorCalls.cs:14:9:14:25 | After ... = ... | | +| AccessorCalls.cs:14:9:14:25 | After ... = ... | AccessorCalls.cs:14:9:14:26 | After ...; | | +| AccessorCalls.cs:14:9:14:25 | Before ... = ... | AccessorCalls.cs:14:9:14:15 | Before access to indexer | | +| AccessorCalls.cs:14:9:14:26 | ...; | AccessorCalls.cs:14:9:14:25 | Before ... = ... | | +| AccessorCalls.cs:14:9:14:26 | After ...; | AccessorCalls.cs:15:9:15:24 | ...; | | +| AccessorCalls.cs:14:14:14:14 | 0 | AccessorCalls.cs:14:9:14:15 | access to indexer | | | AccessorCalls.cs:14:19:14:22 | this access | AccessorCalls.cs:14:24:14:24 | 1 | | -| AccessorCalls.cs:14:19:14:25 | access to indexer | AccessorCalls.cs:14:9:14:15 | access to indexer | | +| AccessorCalls.cs:14:19:14:25 | After access to indexer | AccessorCalls.cs:14:9:14:25 | ... = ... | | +| AccessorCalls.cs:14:19:14:25 | Before access to indexer | AccessorCalls.cs:14:19:14:22 | this access | | +| AccessorCalls.cs:14:19:14:25 | access to indexer | AccessorCalls.cs:14:19:14:25 | After access to indexer | | | AccessorCalls.cs:14:24:14:24 | 1 | AccessorCalls.cs:14:19:14:25 | access to indexer | | -| AccessorCalls.cs:15:9:15:12 | this access | AccessorCalls.cs:15:23:15:23 | access to parameter e | | -| AccessorCalls.cs:15:9:15:18 | access to event Event | AccessorCalls.cs:15:9:15:23 | ... += ... | | -| AccessorCalls.cs:15:9:15:23 | ... += ... | AccessorCalls.cs:16:9:16:24 | ...; | | -| AccessorCalls.cs:15:9:15:24 | ...; | AccessorCalls.cs:15:9:15:12 | this access | | -| AccessorCalls.cs:15:23:15:23 | access to parameter e | AccessorCalls.cs:15:9:15:18 | access to event Event | | -| AccessorCalls.cs:16:9:16:12 | this access | AccessorCalls.cs:16:23:16:23 | access to parameter e | | -| AccessorCalls.cs:16:9:16:18 | access to event Event | AccessorCalls.cs:16:9:16:23 | ... -= ... | | -| AccessorCalls.cs:16:9:16:23 | ... -= ... | AccessorCalls.cs:10:10:10:11 | exit M1 (normal) | | -| AccessorCalls.cs:16:9:16:24 | ...; | AccessorCalls.cs:16:9:16:12 | this access | | -| AccessorCalls.cs:16:23:16:23 | access to parameter e | AccessorCalls.cs:16:9:16:18 | access to event Event | | -| AccessorCalls.cs:19:10:19:11 | enter M2 | AccessorCalls.cs:20:5:26:5 | {...} | | -| AccessorCalls.cs:19:10:19:11 | exit M2 (normal) | AccessorCalls.cs:19:10:19:11 | exit M2 | | +| AccessorCalls.cs:15:9:15:12 | this access | AccessorCalls.cs:15:9:15:18 | access to event Event | | +| AccessorCalls.cs:15:9:15:18 | After access to event Event | AccessorCalls.cs:15:23:15:23 | access to parameter e | | +| AccessorCalls.cs:15:9:15:18 | Before access to event Event | AccessorCalls.cs:15:9:15:12 | this access | | +| AccessorCalls.cs:15:9:15:18 | access to event Event | AccessorCalls.cs:15:9:15:18 | After access to event Event | | +| AccessorCalls.cs:15:9:15:23 | ... += ... | AccessorCalls.cs:15:9:15:23 | After ... += ... | | +| AccessorCalls.cs:15:9:15:23 | After ... += ... | AccessorCalls.cs:15:9:15:24 | After ...; | | +| AccessorCalls.cs:15:9:15:23 | Before ... += ... | AccessorCalls.cs:15:9:15:18 | Before access to event Event | | +| AccessorCalls.cs:15:9:15:24 | ...; | AccessorCalls.cs:15:9:15:23 | Before ... += ... | | +| AccessorCalls.cs:15:9:15:24 | After ...; | AccessorCalls.cs:16:9:16:24 | ...; | | +| AccessorCalls.cs:15:23:15:23 | access to parameter e | AccessorCalls.cs:15:9:15:23 | ... += ... | | +| AccessorCalls.cs:16:9:16:12 | this access | AccessorCalls.cs:16:9:16:18 | access to event Event | | +| AccessorCalls.cs:16:9:16:18 | After access to event Event | AccessorCalls.cs:16:23:16:23 | access to parameter e | | +| AccessorCalls.cs:16:9:16:18 | Before access to event Event | AccessorCalls.cs:16:9:16:12 | this access | | +| AccessorCalls.cs:16:9:16:18 | access to event Event | AccessorCalls.cs:16:9:16:18 | After access to event Event | | +| AccessorCalls.cs:16:9:16:23 | ... -= ... | AccessorCalls.cs:16:9:16:23 | After ... -= ... | | +| AccessorCalls.cs:16:9:16:23 | After ... -= ... | AccessorCalls.cs:16:9:16:24 | After ...; | | +| AccessorCalls.cs:16:9:16:23 | Before ... -= ... | AccessorCalls.cs:16:9:16:18 | Before access to event Event | | +| AccessorCalls.cs:16:9:16:24 | ...; | AccessorCalls.cs:16:9:16:23 | Before ... -= ... | | +| AccessorCalls.cs:16:9:16:24 | After ...; | AccessorCalls.cs:11:5:17:5 | After {...} | | +| AccessorCalls.cs:16:23:16:23 | access to parameter e | AccessorCalls.cs:16:9:16:23 | ... -= ... | | +| AccessorCalls.cs:19:10:19:11 | Entry | AccessorCalls.cs:19:26:19:26 | e | | +| AccessorCalls.cs:19:10:19:11 | Normal Exit | AccessorCalls.cs:19:10:19:11 | Exit | | +| AccessorCalls.cs:19:26:19:26 | e | AccessorCalls.cs:20:5:26:5 | {...} | | +| AccessorCalls.cs:20:5:26:5 | After {...} | AccessorCalls.cs:19:10:19:11 | Normal Exit | | | AccessorCalls.cs:20:5:26:5 | {...} | AccessorCalls.cs:21:9:21:36 | ...; | | | AccessorCalls.cs:21:9:21:12 | this access | AccessorCalls.cs:21:9:21:14 | access to field x | | -| AccessorCalls.cs:21:9:21:14 | access to field x | AccessorCalls.cs:21:24:21:27 | this access | | -| AccessorCalls.cs:21:9:21:20 | access to field Field | AccessorCalls.cs:21:9:21:35 | ... = ... | | -| AccessorCalls.cs:21:9:21:35 | ... = ... | AccessorCalls.cs:22:9:22:34 | ...; | | -| AccessorCalls.cs:21:9:21:36 | ...; | AccessorCalls.cs:21:9:21:12 | this access | | +| AccessorCalls.cs:21:9:21:14 | After access to field x | AccessorCalls.cs:21:9:21:20 | access to field Field | | +| AccessorCalls.cs:21:9:21:14 | Before access to field x | AccessorCalls.cs:21:9:21:12 | this access | | +| AccessorCalls.cs:21:9:21:14 | access to field x | AccessorCalls.cs:21:9:21:14 | After access to field x | | +| AccessorCalls.cs:21:9:21:20 | After access to field Field | AccessorCalls.cs:21:24:21:35 | Before access to field Field | | +| AccessorCalls.cs:21:9:21:20 | Before access to field Field | AccessorCalls.cs:21:9:21:14 | Before access to field x | | +| AccessorCalls.cs:21:9:21:20 | access to field Field | AccessorCalls.cs:21:9:21:20 | After access to field Field | | +| AccessorCalls.cs:21:9:21:35 | ... = ... | AccessorCalls.cs:21:9:21:35 | After ... = ... | | +| AccessorCalls.cs:21:9:21:35 | After ... = ... | AccessorCalls.cs:21:9:21:36 | After ...; | | +| AccessorCalls.cs:21:9:21:35 | Before ... = ... | AccessorCalls.cs:21:9:21:20 | Before access to field Field | | +| AccessorCalls.cs:21:9:21:36 | ...; | AccessorCalls.cs:21:9:21:35 | Before ... = ... | | +| AccessorCalls.cs:21:9:21:36 | After ...; | AccessorCalls.cs:22:9:22:34 | ...; | | | AccessorCalls.cs:21:24:21:27 | this access | AccessorCalls.cs:21:24:21:29 | access to field x | | -| AccessorCalls.cs:21:24:21:29 | access to field x | AccessorCalls.cs:21:24:21:35 | access to field Field | | -| AccessorCalls.cs:21:24:21:35 | access to field Field | AccessorCalls.cs:21:9:21:20 | access to field Field | | +| AccessorCalls.cs:21:24:21:29 | After access to field x | AccessorCalls.cs:21:24:21:35 | access to field Field | | +| AccessorCalls.cs:21:24:21:29 | Before access to field x | AccessorCalls.cs:21:24:21:27 | this access | | +| AccessorCalls.cs:21:24:21:29 | access to field x | AccessorCalls.cs:21:24:21:29 | After access to field x | | +| AccessorCalls.cs:21:24:21:35 | After access to field Field | AccessorCalls.cs:21:9:21:35 | ... = ... | | +| AccessorCalls.cs:21:24:21:35 | Before access to field Field | AccessorCalls.cs:21:24:21:29 | Before access to field x | | +| AccessorCalls.cs:21:24:21:35 | access to field Field | AccessorCalls.cs:21:24:21:35 | After access to field Field | | | AccessorCalls.cs:22:9:22:12 | this access | AccessorCalls.cs:22:9:22:14 | access to field x | | -| AccessorCalls.cs:22:9:22:14 | access to field x | AccessorCalls.cs:22:23:22:26 | this access | | -| AccessorCalls.cs:22:9:22:19 | access to property Prop | AccessorCalls.cs:22:9:22:33 | ... = ... | | -| AccessorCalls.cs:22:9:22:33 | ... = ... | AccessorCalls.cs:23:9:23:30 | ...; | | -| AccessorCalls.cs:22:9:22:34 | ...; | AccessorCalls.cs:22:9:22:12 | this access | | +| AccessorCalls.cs:22:9:22:14 | After access to field x | AccessorCalls.cs:22:9:22:19 | access to property Prop | | +| AccessorCalls.cs:22:9:22:14 | Before access to field x | AccessorCalls.cs:22:9:22:12 | this access | | +| AccessorCalls.cs:22:9:22:14 | access to field x | AccessorCalls.cs:22:9:22:14 | After access to field x | | +| AccessorCalls.cs:22:9:22:19 | After access to property Prop | AccessorCalls.cs:22:23:22:33 | Before access to property Prop | | +| AccessorCalls.cs:22:9:22:19 | Before access to property Prop | AccessorCalls.cs:22:9:22:14 | Before access to field x | | +| AccessorCalls.cs:22:9:22:19 | access to property Prop | AccessorCalls.cs:22:9:22:19 | After access to property Prop | | +| AccessorCalls.cs:22:9:22:33 | ... = ... | AccessorCalls.cs:22:9:22:33 | After ... = ... | | +| AccessorCalls.cs:22:9:22:33 | After ... = ... | AccessorCalls.cs:22:9:22:34 | After ...; | | +| AccessorCalls.cs:22:9:22:33 | Before ... = ... | AccessorCalls.cs:22:9:22:19 | Before access to property Prop | | +| AccessorCalls.cs:22:9:22:34 | ...; | AccessorCalls.cs:22:9:22:33 | Before ... = ... | | +| AccessorCalls.cs:22:9:22:34 | After ...; | AccessorCalls.cs:23:9:23:30 | ...; | | | AccessorCalls.cs:22:23:22:26 | this access | AccessorCalls.cs:22:23:22:28 | access to field x | | -| AccessorCalls.cs:22:23:22:28 | access to field x | AccessorCalls.cs:22:23:22:33 | access to property Prop | | -| AccessorCalls.cs:22:23:22:33 | access to property Prop | AccessorCalls.cs:22:9:22:19 | access to property Prop | | +| AccessorCalls.cs:22:23:22:28 | After access to field x | AccessorCalls.cs:22:23:22:33 | access to property Prop | | +| AccessorCalls.cs:22:23:22:28 | Before access to field x | AccessorCalls.cs:22:23:22:26 | this access | | +| AccessorCalls.cs:22:23:22:28 | access to field x | AccessorCalls.cs:22:23:22:28 | After access to field x | | +| AccessorCalls.cs:22:23:22:33 | After access to property Prop | AccessorCalls.cs:22:9:22:33 | ... = ... | | +| AccessorCalls.cs:22:23:22:33 | Before access to property Prop | AccessorCalls.cs:22:23:22:28 | Before access to field x | | +| AccessorCalls.cs:22:23:22:33 | access to property Prop | AccessorCalls.cs:22:23:22:33 | After access to property Prop | | | AccessorCalls.cs:23:9:23:12 | this access | AccessorCalls.cs:23:9:23:14 | access to field x | | -| AccessorCalls.cs:23:9:23:14 | access to field x | AccessorCalls.cs:23:16:23:16 | 0 | | -| AccessorCalls.cs:23:9:23:17 | access to indexer | AccessorCalls.cs:23:9:23:29 | ... = ... | | -| AccessorCalls.cs:23:9:23:29 | ... = ... | AccessorCalls.cs:24:9:24:26 | ...; | | -| AccessorCalls.cs:23:9:23:30 | ...; | AccessorCalls.cs:23:9:23:12 | this access | | -| AccessorCalls.cs:23:16:23:16 | 0 | AccessorCalls.cs:23:21:23:24 | this access | | +| AccessorCalls.cs:23:9:23:14 | After access to field x | AccessorCalls.cs:23:16:23:16 | 0 | | +| AccessorCalls.cs:23:9:23:14 | Before access to field x | AccessorCalls.cs:23:9:23:12 | this access | | +| AccessorCalls.cs:23:9:23:14 | access to field x | AccessorCalls.cs:23:9:23:14 | After access to field x | | +| AccessorCalls.cs:23:9:23:17 | After access to indexer | AccessorCalls.cs:23:21:23:29 | Before access to indexer | | +| AccessorCalls.cs:23:9:23:17 | Before access to indexer | AccessorCalls.cs:23:9:23:14 | Before access to field x | | +| AccessorCalls.cs:23:9:23:17 | access to indexer | AccessorCalls.cs:23:9:23:17 | After access to indexer | | +| AccessorCalls.cs:23:9:23:29 | ... = ... | AccessorCalls.cs:23:9:23:29 | After ... = ... | | +| AccessorCalls.cs:23:9:23:29 | After ... = ... | AccessorCalls.cs:23:9:23:30 | After ...; | | +| AccessorCalls.cs:23:9:23:29 | Before ... = ... | AccessorCalls.cs:23:9:23:17 | Before access to indexer | | +| AccessorCalls.cs:23:9:23:30 | ...; | AccessorCalls.cs:23:9:23:29 | Before ... = ... | | +| AccessorCalls.cs:23:9:23:30 | After ...; | AccessorCalls.cs:24:9:24:26 | ...; | | +| AccessorCalls.cs:23:16:23:16 | 0 | AccessorCalls.cs:23:9:23:17 | access to indexer | | | AccessorCalls.cs:23:21:23:24 | this access | AccessorCalls.cs:23:21:23:26 | access to field x | | -| AccessorCalls.cs:23:21:23:26 | access to field x | AccessorCalls.cs:23:28:23:28 | 1 | | -| AccessorCalls.cs:23:21:23:29 | access to indexer | AccessorCalls.cs:23:9:23:17 | access to indexer | | +| AccessorCalls.cs:23:21:23:26 | After access to field x | AccessorCalls.cs:23:28:23:28 | 1 | | +| AccessorCalls.cs:23:21:23:26 | Before access to field x | AccessorCalls.cs:23:21:23:24 | this access | | +| AccessorCalls.cs:23:21:23:26 | access to field x | AccessorCalls.cs:23:21:23:26 | After access to field x | | +| AccessorCalls.cs:23:21:23:29 | After access to indexer | AccessorCalls.cs:23:9:23:29 | ... = ... | | +| AccessorCalls.cs:23:21:23:29 | Before access to indexer | AccessorCalls.cs:23:21:23:26 | Before access to field x | | +| AccessorCalls.cs:23:21:23:29 | access to indexer | AccessorCalls.cs:23:21:23:29 | After access to indexer | | | AccessorCalls.cs:23:28:23:28 | 1 | AccessorCalls.cs:23:21:23:29 | access to indexer | | | AccessorCalls.cs:24:9:24:12 | this access | AccessorCalls.cs:24:9:24:14 | access to field x | | -| AccessorCalls.cs:24:9:24:14 | access to field x | AccessorCalls.cs:24:25:24:25 | access to parameter e | | -| AccessorCalls.cs:24:9:24:20 | access to event Event | AccessorCalls.cs:24:9:24:25 | ... += ... | | -| AccessorCalls.cs:24:9:24:25 | ... += ... | AccessorCalls.cs:25:9:25:26 | ...; | | -| AccessorCalls.cs:24:9:24:26 | ...; | AccessorCalls.cs:24:9:24:12 | this access | | -| AccessorCalls.cs:24:25:24:25 | access to parameter e | AccessorCalls.cs:24:9:24:20 | access to event Event | | +| AccessorCalls.cs:24:9:24:14 | After access to field x | AccessorCalls.cs:24:9:24:20 | access to event Event | | +| AccessorCalls.cs:24:9:24:14 | Before access to field x | AccessorCalls.cs:24:9:24:12 | this access | | +| AccessorCalls.cs:24:9:24:14 | access to field x | AccessorCalls.cs:24:9:24:14 | After access to field x | | +| AccessorCalls.cs:24:9:24:20 | After access to event Event | AccessorCalls.cs:24:25:24:25 | access to parameter e | | +| AccessorCalls.cs:24:9:24:20 | Before access to event Event | AccessorCalls.cs:24:9:24:14 | Before access to field x | | +| AccessorCalls.cs:24:9:24:20 | access to event Event | AccessorCalls.cs:24:9:24:20 | After access to event Event | | +| AccessorCalls.cs:24:9:24:25 | ... += ... | AccessorCalls.cs:24:9:24:25 | After ... += ... | | +| AccessorCalls.cs:24:9:24:25 | After ... += ... | AccessorCalls.cs:24:9:24:26 | After ...; | | +| AccessorCalls.cs:24:9:24:25 | Before ... += ... | AccessorCalls.cs:24:9:24:20 | Before access to event Event | | +| AccessorCalls.cs:24:9:24:26 | ...; | AccessorCalls.cs:24:9:24:25 | Before ... += ... | | +| AccessorCalls.cs:24:9:24:26 | After ...; | AccessorCalls.cs:25:9:25:26 | ...; | | +| AccessorCalls.cs:24:25:24:25 | access to parameter e | AccessorCalls.cs:24:9:24:25 | ... += ... | | | AccessorCalls.cs:25:9:25:12 | this access | AccessorCalls.cs:25:9:25:14 | access to field x | | -| AccessorCalls.cs:25:9:25:14 | access to field x | AccessorCalls.cs:25:25:25:25 | access to parameter e | | -| AccessorCalls.cs:25:9:25:20 | access to event Event | AccessorCalls.cs:25:9:25:25 | ... -= ... | | -| AccessorCalls.cs:25:9:25:25 | ... -= ... | AccessorCalls.cs:19:10:19:11 | exit M2 (normal) | | -| AccessorCalls.cs:25:9:25:26 | ...; | AccessorCalls.cs:25:9:25:12 | this access | | -| AccessorCalls.cs:25:25:25:25 | access to parameter e | AccessorCalls.cs:25:9:25:20 | access to event Event | | -| AccessorCalls.cs:28:10:28:11 | enter M3 | AccessorCalls.cs:29:5:33:5 | {...} | | -| AccessorCalls.cs:28:10:28:11 | exit M3 (normal) | AccessorCalls.cs:28:10:28:11 | exit M3 | | +| AccessorCalls.cs:25:9:25:14 | After access to field x | AccessorCalls.cs:25:9:25:20 | access to event Event | | +| AccessorCalls.cs:25:9:25:14 | Before access to field x | AccessorCalls.cs:25:9:25:12 | this access | | +| AccessorCalls.cs:25:9:25:14 | access to field x | AccessorCalls.cs:25:9:25:14 | After access to field x | | +| AccessorCalls.cs:25:9:25:20 | After access to event Event | AccessorCalls.cs:25:25:25:25 | access to parameter e | | +| AccessorCalls.cs:25:9:25:20 | Before access to event Event | AccessorCalls.cs:25:9:25:14 | Before access to field x | | +| AccessorCalls.cs:25:9:25:20 | access to event Event | AccessorCalls.cs:25:9:25:20 | After access to event Event | | +| AccessorCalls.cs:25:9:25:25 | ... -= ... | AccessorCalls.cs:25:9:25:25 | After ... -= ... | | +| AccessorCalls.cs:25:9:25:25 | After ... -= ... | AccessorCalls.cs:25:9:25:26 | After ...; | | +| AccessorCalls.cs:25:9:25:25 | Before ... -= ... | AccessorCalls.cs:25:9:25:20 | Before access to event Event | | +| AccessorCalls.cs:25:9:25:26 | ...; | AccessorCalls.cs:25:9:25:25 | Before ... -= ... | | +| AccessorCalls.cs:25:9:25:26 | After ...; | AccessorCalls.cs:20:5:26:5 | After {...} | | +| AccessorCalls.cs:25:25:25:25 | access to parameter e | AccessorCalls.cs:25:9:25:25 | ... -= ... | | +| AccessorCalls.cs:28:10:28:11 | Entry | AccessorCalls.cs:29:5:33:5 | {...} | | +| AccessorCalls.cs:28:10:28:11 | Normal Exit | AccessorCalls.cs:28:10:28:11 | Exit | | +| AccessorCalls.cs:29:5:33:5 | After {...} | AccessorCalls.cs:28:10:28:11 | Normal Exit | | | AccessorCalls.cs:29:5:33:5 | {...} | AccessorCalls.cs:30:9:30:21 | ...; | | | AccessorCalls.cs:30:9:30:12 | this access | AccessorCalls.cs:30:9:30:18 | access to field Field | | -| AccessorCalls.cs:30:9:30:18 | access to field Field | AccessorCalls.cs:30:9:30:20 | ...++ | | -| AccessorCalls.cs:30:9:30:20 | ...++ | AccessorCalls.cs:31:9:31:20 | ...; | | -| AccessorCalls.cs:30:9:30:21 | ...; | AccessorCalls.cs:30:9:30:12 | this access | | +| AccessorCalls.cs:30:9:30:18 | After access to field Field | AccessorCalls.cs:30:9:30:20 | ...++ | | +| AccessorCalls.cs:30:9:30:18 | Before access to field Field | AccessorCalls.cs:30:9:30:12 | this access | | +| AccessorCalls.cs:30:9:30:18 | access to field Field | AccessorCalls.cs:30:9:30:18 | After access to field Field | | +| AccessorCalls.cs:30:9:30:20 | ...++ | AccessorCalls.cs:30:9:30:20 | After ...++ | | +| AccessorCalls.cs:30:9:30:20 | After ...++ | AccessorCalls.cs:30:9:30:21 | After ...; | | +| AccessorCalls.cs:30:9:30:20 | Before ...++ | AccessorCalls.cs:30:9:30:18 | Before access to field Field | | +| AccessorCalls.cs:30:9:30:21 | ...; | AccessorCalls.cs:30:9:30:20 | Before ...++ | | +| AccessorCalls.cs:30:9:30:21 | After ...; | AccessorCalls.cs:31:9:31:20 | ...; | | | AccessorCalls.cs:31:9:31:12 | this access | AccessorCalls.cs:31:9:31:17 | access to property Prop | | -| AccessorCalls.cs:31:9:31:17 | access to property Prop | AccessorCalls.cs:31:9:31:19 | ...++ | | -| AccessorCalls.cs:31:9:31:19 | ...++ | AccessorCalls.cs:32:9:32:18 | ...; | | -| AccessorCalls.cs:31:9:31:20 | ...; | AccessorCalls.cs:31:9:31:12 | this access | | +| AccessorCalls.cs:31:9:31:17 | After access to property Prop | AccessorCalls.cs:31:9:31:19 | ...++ | | +| AccessorCalls.cs:31:9:31:17 | Before access to property Prop | AccessorCalls.cs:31:9:31:12 | this access | | +| AccessorCalls.cs:31:9:31:17 | access to property Prop | AccessorCalls.cs:31:9:31:17 | After access to property Prop | | +| AccessorCalls.cs:31:9:31:19 | ...++ | AccessorCalls.cs:31:9:31:19 | After ...++ | | +| AccessorCalls.cs:31:9:31:19 | After ...++ | AccessorCalls.cs:31:9:31:20 | After ...; | | +| AccessorCalls.cs:31:9:31:19 | Before ...++ | AccessorCalls.cs:31:9:31:17 | Before access to property Prop | | +| AccessorCalls.cs:31:9:31:20 | ...; | AccessorCalls.cs:31:9:31:19 | Before ...++ | | +| AccessorCalls.cs:31:9:31:20 | After ...; | AccessorCalls.cs:32:9:32:18 | ...; | | | AccessorCalls.cs:32:9:32:12 | this access | AccessorCalls.cs:32:14:32:14 | 0 | | -| AccessorCalls.cs:32:9:32:15 | access to indexer | AccessorCalls.cs:32:9:32:17 | ...++ | | -| AccessorCalls.cs:32:9:32:17 | ...++ | AccessorCalls.cs:28:10:28:11 | exit M3 (normal) | | -| AccessorCalls.cs:32:9:32:18 | ...; | AccessorCalls.cs:32:9:32:12 | this access | | +| AccessorCalls.cs:32:9:32:15 | After access to indexer | AccessorCalls.cs:32:9:32:17 | ...++ | | +| AccessorCalls.cs:32:9:32:15 | Before access to indexer | AccessorCalls.cs:32:9:32:12 | this access | | +| AccessorCalls.cs:32:9:32:15 | access to indexer | AccessorCalls.cs:32:9:32:15 | After access to indexer | | +| AccessorCalls.cs:32:9:32:17 | ...++ | AccessorCalls.cs:32:9:32:17 | After ...++ | | +| AccessorCalls.cs:32:9:32:17 | After ...++ | AccessorCalls.cs:32:9:32:18 | After ...; | | +| AccessorCalls.cs:32:9:32:17 | Before ...++ | AccessorCalls.cs:32:9:32:15 | Before access to indexer | | +| AccessorCalls.cs:32:9:32:18 | ...; | AccessorCalls.cs:32:9:32:17 | Before ...++ | | +| AccessorCalls.cs:32:9:32:18 | After ...; | AccessorCalls.cs:29:5:33:5 | After {...} | | | AccessorCalls.cs:32:14:32:14 | 0 | AccessorCalls.cs:32:9:32:15 | access to indexer | | -| AccessorCalls.cs:35:10:35:11 | enter M4 | AccessorCalls.cs:36:5:40:5 | {...} | | -| AccessorCalls.cs:35:10:35:11 | exit M4 (normal) | AccessorCalls.cs:35:10:35:11 | exit M4 | | +| AccessorCalls.cs:35:10:35:11 | Entry | AccessorCalls.cs:36:5:40:5 | {...} | | +| AccessorCalls.cs:35:10:35:11 | Normal Exit | AccessorCalls.cs:35:10:35:11 | Exit | | +| AccessorCalls.cs:36:5:40:5 | After {...} | AccessorCalls.cs:35:10:35:11 | Normal Exit | | | AccessorCalls.cs:36:5:40:5 | {...} | AccessorCalls.cs:37:9:37:23 | ...; | | | AccessorCalls.cs:37:9:37:12 | this access | AccessorCalls.cs:37:9:37:14 | access to field x | | -| AccessorCalls.cs:37:9:37:14 | access to field x | AccessorCalls.cs:37:9:37:20 | access to field Field | | -| AccessorCalls.cs:37:9:37:20 | access to field Field | AccessorCalls.cs:37:9:37:22 | ...++ | | -| AccessorCalls.cs:37:9:37:22 | ...++ | AccessorCalls.cs:38:9:38:22 | ...; | | -| AccessorCalls.cs:37:9:37:23 | ...; | AccessorCalls.cs:37:9:37:12 | this access | | +| AccessorCalls.cs:37:9:37:14 | After access to field x | AccessorCalls.cs:37:9:37:20 | access to field Field | | +| AccessorCalls.cs:37:9:37:14 | Before access to field x | AccessorCalls.cs:37:9:37:12 | this access | | +| AccessorCalls.cs:37:9:37:14 | access to field x | AccessorCalls.cs:37:9:37:14 | After access to field x | | +| AccessorCalls.cs:37:9:37:20 | After access to field Field | AccessorCalls.cs:37:9:37:22 | ...++ | | +| AccessorCalls.cs:37:9:37:20 | Before access to field Field | AccessorCalls.cs:37:9:37:14 | Before access to field x | | +| AccessorCalls.cs:37:9:37:20 | access to field Field | AccessorCalls.cs:37:9:37:20 | After access to field Field | | +| AccessorCalls.cs:37:9:37:22 | ...++ | AccessorCalls.cs:37:9:37:22 | After ...++ | | +| AccessorCalls.cs:37:9:37:22 | After ...++ | AccessorCalls.cs:37:9:37:23 | After ...; | | +| AccessorCalls.cs:37:9:37:22 | Before ...++ | AccessorCalls.cs:37:9:37:20 | Before access to field Field | | +| AccessorCalls.cs:37:9:37:23 | ...; | AccessorCalls.cs:37:9:37:22 | Before ...++ | | +| AccessorCalls.cs:37:9:37:23 | After ...; | AccessorCalls.cs:38:9:38:22 | ...; | | | AccessorCalls.cs:38:9:38:12 | this access | AccessorCalls.cs:38:9:38:14 | access to field x | | -| AccessorCalls.cs:38:9:38:14 | access to field x | AccessorCalls.cs:38:9:38:19 | access to property Prop | | -| AccessorCalls.cs:38:9:38:19 | access to property Prop | AccessorCalls.cs:38:9:38:21 | ...++ | | -| AccessorCalls.cs:38:9:38:21 | ...++ | AccessorCalls.cs:39:9:39:20 | ...; | | -| AccessorCalls.cs:38:9:38:22 | ...; | AccessorCalls.cs:38:9:38:12 | this access | | +| AccessorCalls.cs:38:9:38:14 | After access to field x | AccessorCalls.cs:38:9:38:19 | access to property Prop | | +| AccessorCalls.cs:38:9:38:14 | Before access to field x | AccessorCalls.cs:38:9:38:12 | this access | | +| AccessorCalls.cs:38:9:38:14 | access to field x | AccessorCalls.cs:38:9:38:14 | After access to field x | | +| AccessorCalls.cs:38:9:38:19 | After access to property Prop | AccessorCalls.cs:38:9:38:21 | ...++ | | +| AccessorCalls.cs:38:9:38:19 | Before access to property Prop | AccessorCalls.cs:38:9:38:14 | Before access to field x | | +| AccessorCalls.cs:38:9:38:19 | access to property Prop | AccessorCalls.cs:38:9:38:19 | After access to property Prop | | +| AccessorCalls.cs:38:9:38:21 | ...++ | AccessorCalls.cs:38:9:38:21 | After ...++ | | +| AccessorCalls.cs:38:9:38:21 | After ...++ | AccessorCalls.cs:38:9:38:22 | After ...; | | +| AccessorCalls.cs:38:9:38:21 | Before ...++ | AccessorCalls.cs:38:9:38:19 | Before access to property Prop | | +| AccessorCalls.cs:38:9:38:22 | ...; | AccessorCalls.cs:38:9:38:21 | Before ...++ | | +| AccessorCalls.cs:38:9:38:22 | After ...; | AccessorCalls.cs:39:9:39:20 | ...; | | | AccessorCalls.cs:39:9:39:12 | this access | AccessorCalls.cs:39:9:39:14 | access to field x | | -| AccessorCalls.cs:39:9:39:14 | access to field x | AccessorCalls.cs:39:16:39:16 | 0 | | -| AccessorCalls.cs:39:9:39:17 | access to indexer | AccessorCalls.cs:39:9:39:19 | ...++ | | -| AccessorCalls.cs:39:9:39:19 | ...++ | AccessorCalls.cs:35:10:35:11 | exit M4 (normal) | | -| AccessorCalls.cs:39:9:39:20 | ...; | AccessorCalls.cs:39:9:39:12 | this access | | +| AccessorCalls.cs:39:9:39:14 | After access to field x | AccessorCalls.cs:39:16:39:16 | 0 | | +| AccessorCalls.cs:39:9:39:14 | Before access to field x | AccessorCalls.cs:39:9:39:12 | this access | | +| AccessorCalls.cs:39:9:39:14 | access to field x | AccessorCalls.cs:39:9:39:14 | After access to field x | | +| AccessorCalls.cs:39:9:39:17 | After access to indexer | AccessorCalls.cs:39:9:39:19 | ...++ | | +| AccessorCalls.cs:39:9:39:17 | Before access to indexer | AccessorCalls.cs:39:9:39:14 | Before access to field x | | +| AccessorCalls.cs:39:9:39:17 | access to indexer | AccessorCalls.cs:39:9:39:17 | After access to indexer | | +| AccessorCalls.cs:39:9:39:19 | ...++ | AccessorCalls.cs:39:9:39:19 | After ...++ | | +| AccessorCalls.cs:39:9:39:19 | After ...++ | AccessorCalls.cs:39:9:39:20 | After ...; | | +| AccessorCalls.cs:39:9:39:19 | Before ...++ | AccessorCalls.cs:39:9:39:17 | Before access to indexer | | +| AccessorCalls.cs:39:9:39:20 | ...; | AccessorCalls.cs:39:9:39:19 | Before ...++ | | +| AccessorCalls.cs:39:9:39:20 | After ...; | AccessorCalls.cs:36:5:40:5 | After {...} | | | AccessorCalls.cs:39:16:39:16 | 0 | AccessorCalls.cs:39:9:39:17 | access to indexer | | -| AccessorCalls.cs:42:10:42:11 | enter M5 | AccessorCalls.cs:43:5:47:5 | {...} | | -| AccessorCalls.cs:42:10:42:11 | exit M5 (normal) | AccessorCalls.cs:42:10:42:11 | exit M5 | | +| AccessorCalls.cs:42:10:42:11 | Entry | AccessorCalls.cs:43:5:47:5 | {...} | | +| AccessorCalls.cs:42:10:42:11 | Normal Exit | AccessorCalls.cs:42:10:42:11 | Exit | | +| AccessorCalls.cs:43:5:47:5 | After {...} | AccessorCalls.cs:42:10:42:11 | Normal Exit | | | AccessorCalls.cs:43:5:47:5 | {...} | AccessorCalls.cs:44:9:44:33 | ...; | | | AccessorCalls.cs:44:9:44:12 | this access | AccessorCalls.cs:44:9:44:18 | access to field Field | | -| AccessorCalls.cs:44:9:44:18 | access to field Field | AccessorCalls.cs:44:23:44:26 | this access | | -| AccessorCalls.cs:44:9:44:32 | ... += ... | AccessorCalls.cs:45:9:45:31 | ...; | | -| AccessorCalls.cs:44:9:44:33 | ...; | AccessorCalls.cs:44:9:44:12 | this access | | +| AccessorCalls.cs:44:9:44:18 | After access to field Field | AccessorCalls.cs:44:23:44:32 | Before access to field Field | | +| AccessorCalls.cs:44:9:44:18 | Before access to field Field | AccessorCalls.cs:44:9:44:12 | this access | | +| AccessorCalls.cs:44:9:44:18 | access to field Field | AccessorCalls.cs:44:9:44:18 | After access to field Field | | +| AccessorCalls.cs:44:9:44:32 | ... += ... | AccessorCalls.cs:44:9:44:32 | After ... += ... | | +| AccessorCalls.cs:44:9:44:32 | After ... += ... | AccessorCalls.cs:44:9:44:33 | After ...; | | +| AccessorCalls.cs:44:9:44:32 | Before ... += ... | AccessorCalls.cs:44:9:44:18 | Before access to field Field | | +| AccessorCalls.cs:44:9:44:33 | ...; | AccessorCalls.cs:44:9:44:32 | Before ... += ... | | +| AccessorCalls.cs:44:9:44:33 | After ...; | AccessorCalls.cs:45:9:45:31 | ...; | | | AccessorCalls.cs:44:23:44:26 | this access | AccessorCalls.cs:44:23:44:32 | access to field Field | | -| AccessorCalls.cs:44:23:44:32 | access to field Field | AccessorCalls.cs:44:9:44:32 | ... += ... | | +| AccessorCalls.cs:44:23:44:32 | After access to field Field | AccessorCalls.cs:44:9:44:32 | ... += ... | | +| AccessorCalls.cs:44:23:44:32 | Before access to field Field | AccessorCalls.cs:44:23:44:26 | this access | | +| AccessorCalls.cs:44:23:44:32 | access to field Field | AccessorCalls.cs:44:23:44:32 | After access to field Field | | | AccessorCalls.cs:45:9:45:12 | this access | AccessorCalls.cs:45:9:45:17 | access to property Prop | | -| AccessorCalls.cs:45:9:45:17 | access to property Prop | AccessorCalls.cs:45:22:45:25 | this access | | -| AccessorCalls.cs:45:9:45:30 | ... += ... | AccessorCalls.cs:46:9:46:27 | ...; | | -| AccessorCalls.cs:45:9:45:31 | ...; | AccessorCalls.cs:45:9:45:12 | this access | | +| AccessorCalls.cs:45:9:45:17 | After access to property Prop | AccessorCalls.cs:45:22:45:30 | Before access to property Prop | | +| AccessorCalls.cs:45:9:45:17 | Before access to property Prop | AccessorCalls.cs:45:9:45:12 | this access | | +| AccessorCalls.cs:45:9:45:17 | access to property Prop | AccessorCalls.cs:45:9:45:17 | After access to property Prop | | +| AccessorCalls.cs:45:9:45:30 | ... += ... | AccessorCalls.cs:45:9:45:30 | After ... += ... | | +| AccessorCalls.cs:45:9:45:30 | After ... += ... | AccessorCalls.cs:45:9:45:31 | After ...; | | +| AccessorCalls.cs:45:9:45:30 | Before ... += ... | AccessorCalls.cs:45:9:45:17 | Before access to property Prop | | +| AccessorCalls.cs:45:9:45:31 | ...; | AccessorCalls.cs:45:9:45:30 | Before ... += ... | | +| AccessorCalls.cs:45:9:45:31 | After ...; | AccessorCalls.cs:46:9:46:27 | ...; | | | AccessorCalls.cs:45:22:45:25 | this access | AccessorCalls.cs:45:22:45:30 | access to property Prop | | -| AccessorCalls.cs:45:22:45:30 | access to property Prop | AccessorCalls.cs:45:9:45:30 | ... += ... | | +| AccessorCalls.cs:45:22:45:30 | After access to property Prop | AccessorCalls.cs:45:9:45:30 | ... += ... | | +| AccessorCalls.cs:45:22:45:30 | Before access to property Prop | AccessorCalls.cs:45:22:45:25 | this access | | +| AccessorCalls.cs:45:22:45:30 | access to property Prop | AccessorCalls.cs:45:22:45:30 | After access to property Prop | | | AccessorCalls.cs:46:9:46:12 | this access | AccessorCalls.cs:46:14:46:14 | 0 | | -| AccessorCalls.cs:46:9:46:15 | access to indexer | AccessorCalls.cs:46:20:46:23 | this access | | -| AccessorCalls.cs:46:9:46:26 | ... += ... | AccessorCalls.cs:42:10:42:11 | exit M5 (normal) | | -| AccessorCalls.cs:46:9:46:27 | ...; | AccessorCalls.cs:46:9:46:12 | this access | | +| AccessorCalls.cs:46:9:46:15 | After access to indexer | AccessorCalls.cs:46:20:46:26 | Before access to indexer | | +| AccessorCalls.cs:46:9:46:15 | Before access to indexer | AccessorCalls.cs:46:9:46:12 | this access | | +| AccessorCalls.cs:46:9:46:15 | access to indexer | AccessorCalls.cs:46:9:46:15 | After access to indexer | | +| AccessorCalls.cs:46:9:46:26 | ... += ... | AccessorCalls.cs:46:9:46:26 | After ... += ... | | +| AccessorCalls.cs:46:9:46:26 | After ... += ... | AccessorCalls.cs:46:9:46:27 | After ...; | | +| AccessorCalls.cs:46:9:46:26 | Before ... += ... | AccessorCalls.cs:46:9:46:15 | Before access to indexer | | +| AccessorCalls.cs:46:9:46:27 | ...; | AccessorCalls.cs:46:9:46:26 | Before ... += ... | | +| AccessorCalls.cs:46:9:46:27 | After ...; | AccessorCalls.cs:43:5:47:5 | After {...} | | | AccessorCalls.cs:46:14:46:14 | 0 | AccessorCalls.cs:46:9:46:15 | access to indexer | | | AccessorCalls.cs:46:20:46:23 | this access | AccessorCalls.cs:46:25:46:25 | 0 | | -| AccessorCalls.cs:46:20:46:26 | access to indexer | AccessorCalls.cs:46:9:46:26 | ... += ... | | +| AccessorCalls.cs:46:20:46:26 | After access to indexer | AccessorCalls.cs:46:9:46:26 | ... += ... | | +| AccessorCalls.cs:46:20:46:26 | Before access to indexer | AccessorCalls.cs:46:20:46:23 | this access | | +| AccessorCalls.cs:46:20:46:26 | access to indexer | AccessorCalls.cs:46:20:46:26 | After access to indexer | | | AccessorCalls.cs:46:25:46:25 | 0 | AccessorCalls.cs:46:20:46:26 | access to indexer | | -| AccessorCalls.cs:49:10:49:11 | enter M6 | AccessorCalls.cs:50:5:54:5 | {...} | | -| AccessorCalls.cs:49:10:49:11 | exit M6 (normal) | AccessorCalls.cs:49:10:49:11 | exit M6 | | +| AccessorCalls.cs:49:10:49:11 | Entry | AccessorCalls.cs:50:5:54:5 | {...} | | +| AccessorCalls.cs:49:10:49:11 | Normal Exit | AccessorCalls.cs:49:10:49:11 | Exit | | +| AccessorCalls.cs:50:5:54:5 | After {...} | AccessorCalls.cs:49:10:49:11 | Normal Exit | | | AccessorCalls.cs:50:5:54:5 | {...} | AccessorCalls.cs:51:9:51:37 | ...; | | | AccessorCalls.cs:51:9:51:12 | this access | AccessorCalls.cs:51:9:51:14 | access to field x | | -| AccessorCalls.cs:51:9:51:14 | access to field x | AccessorCalls.cs:51:9:51:20 | access to field Field | | -| AccessorCalls.cs:51:9:51:20 | access to field Field | AccessorCalls.cs:51:25:51:28 | this access | | -| AccessorCalls.cs:51:9:51:36 | ... += ... | AccessorCalls.cs:52:9:52:35 | ...; | | -| AccessorCalls.cs:51:9:51:37 | ...; | AccessorCalls.cs:51:9:51:12 | this access | | +| AccessorCalls.cs:51:9:51:14 | After access to field x | AccessorCalls.cs:51:9:51:20 | access to field Field | | +| AccessorCalls.cs:51:9:51:14 | Before access to field x | AccessorCalls.cs:51:9:51:12 | this access | | +| AccessorCalls.cs:51:9:51:14 | access to field x | AccessorCalls.cs:51:9:51:14 | After access to field x | | +| AccessorCalls.cs:51:9:51:20 | After access to field Field | AccessorCalls.cs:51:25:51:36 | Before access to field Field | | +| AccessorCalls.cs:51:9:51:20 | Before access to field Field | AccessorCalls.cs:51:9:51:14 | Before access to field x | | +| AccessorCalls.cs:51:9:51:20 | access to field Field | AccessorCalls.cs:51:9:51:20 | After access to field Field | | +| AccessorCalls.cs:51:9:51:36 | ... += ... | AccessorCalls.cs:51:9:51:36 | After ... += ... | | +| AccessorCalls.cs:51:9:51:36 | After ... += ... | AccessorCalls.cs:51:9:51:37 | After ...; | | +| AccessorCalls.cs:51:9:51:36 | Before ... += ... | AccessorCalls.cs:51:9:51:20 | Before access to field Field | | +| AccessorCalls.cs:51:9:51:37 | ...; | AccessorCalls.cs:51:9:51:36 | Before ... += ... | | +| AccessorCalls.cs:51:9:51:37 | After ...; | AccessorCalls.cs:52:9:52:35 | ...; | | | AccessorCalls.cs:51:25:51:28 | this access | AccessorCalls.cs:51:25:51:30 | access to field x | | -| AccessorCalls.cs:51:25:51:30 | access to field x | AccessorCalls.cs:51:25:51:36 | access to field Field | | -| AccessorCalls.cs:51:25:51:36 | access to field Field | AccessorCalls.cs:51:9:51:36 | ... += ... | | +| AccessorCalls.cs:51:25:51:30 | After access to field x | AccessorCalls.cs:51:25:51:36 | access to field Field | | +| AccessorCalls.cs:51:25:51:30 | Before access to field x | AccessorCalls.cs:51:25:51:28 | this access | | +| AccessorCalls.cs:51:25:51:30 | access to field x | AccessorCalls.cs:51:25:51:30 | After access to field x | | +| AccessorCalls.cs:51:25:51:36 | After access to field Field | AccessorCalls.cs:51:9:51:36 | ... += ... | | +| AccessorCalls.cs:51:25:51:36 | Before access to field Field | AccessorCalls.cs:51:25:51:30 | Before access to field x | | +| AccessorCalls.cs:51:25:51:36 | access to field Field | AccessorCalls.cs:51:25:51:36 | After access to field Field | | | AccessorCalls.cs:52:9:52:12 | this access | AccessorCalls.cs:52:9:52:14 | access to field x | | -| AccessorCalls.cs:52:9:52:14 | access to field x | AccessorCalls.cs:52:9:52:19 | access to property Prop | | -| AccessorCalls.cs:52:9:52:19 | access to property Prop | AccessorCalls.cs:52:24:52:27 | this access | | -| AccessorCalls.cs:52:9:52:34 | ... += ... | AccessorCalls.cs:53:9:53:31 | ...; | | -| AccessorCalls.cs:52:9:52:35 | ...; | AccessorCalls.cs:52:9:52:12 | this access | | +| AccessorCalls.cs:52:9:52:14 | After access to field x | AccessorCalls.cs:52:9:52:19 | access to property Prop | | +| AccessorCalls.cs:52:9:52:14 | Before access to field x | AccessorCalls.cs:52:9:52:12 | this access | | +| AccessorCalls.cs:52:9:52:14 | access to field x | AccessorCalls.cs:52:9:52:14 | After access to field x | | +| AccessorCalls.cs:52:9:52:19 | After access to property Prop | AccessorCalls.cs:52:24:52:34 | Before access to property Prop | | +| AccessorCalls.cs:52:9:52:19 | Before access to property Prop | AccessorCalls.cs:52:9:52:14 | Before access to field x | | +| AccessorCalls.cs:52:9:52:19 | access to property Prop | AccessorCalls.cs:52:9:52:19 | After access to property Prop | | +| AccessorCalls.cs:52:9:52:34 | ... += ... | AccessorCalls.cs:52:9:52:34 | After ... += ... | | +| AccessorCalls.cs:52:9:52:34 | After ... += ... | AccessorCalls.cs:52:9:52:35 | After ...; | | +| AccessorCalls.cs:52:9:52:34 | Before ... += ... | AccessorCalls.cs:52:9:52:19 | Before access to property Prop | | +| AccessorCalls.cs:52:9:52:35 | ...; | AccessorCalls.cs:52:9:52:34 | Before ... += ... | | +| AccessorCalls.cs:52:9:52:35 | After ...; | AccessorCalls.cs:53:9:53:31 | ...; | | | AccessorCalls.cs:52:24:52:27 | this access | AccessorCalls.cs:52:24:52:29 | access to field x | | -| AccessorCalls.cs:52:24:52:29 | access to field x | AccessorCalls.cs:52:24:52:34 | access to property Prop | | -| AccessorCalls.cs:52:24:52:34 | access to property Prop | AccessorCalls.cs:52:9:52:34 | ... += ... | | +| AccessorCalls.cs:52:24:52:29 | After access to field x | AccessorCalls.cs:52:24:52:34 | access to property Prop | | +| AccessorCalls.cs:52:24:52:29 | Before access to field x | AccessorCalls.cs:52:24:52:27 | this access | | +| AccessorCalls.cs:52:24:52:29 | access to field x | AccessorCalls.cs:52:24:52:29 | After access to field x | | +| AccessorCalls.cs:52:24:52:34 | After access to property Prop | AccessorCalls.cs:52:9:52:34 | ... += ... | | +| AccessorCalls.cs:52:24:52:34 | Before access to property Prop | AccessorCalls.cs:52:24:52:29 | Before access to field x | | +| AccessorCalls.cs:52:24:52:34 | access to property Prop | AccessorCalls.cs:52:24:52:34 | After access to property Prop | | | AccessorCalls.cs:53:9:53:12 | this access | AccessorCalls.cs:53:9:53:14 | access to field x | | -| AccessorCalls.cs:53:9:53:14 | access to field x | AccessorCalls.cs:53:16:53:16 | 0 | | -| AccessorCalls.cs:53:9:53:17 | access to indexer | AccessorCalls.cs:53:22:53:25 | this access | | -| AccessorCalls.cs:53:9:53:30 | ... += ... | AccessorCalls.cs:49:10:49:11 | exit M6 (normal) | | -| AccessorCalls.cs:53:9:53:31 | ...; | AccessorCalls.cs:53:9:53:12 | this access | | +| AccessorCalls.cs:53:9:53:14 | After access to field x | AccessorCalls.cs:53:16:53:16 | 0 | | +| AccessorCalls.cs:53:9:53:14 | Before access to field x | AccessorCalls.cs:53:9:53:12 | this access | | +| AccessorCalls.cs:53:9:53:14 | access to field x | AccessorCalls.cs:53:9:53:14 | After access to field x | | +| AccessorCalls.cs:53:9:53:17 | After access to indexer | AccessorCalls.cs:53:22:53:30 | Before access to indexer | | +| AccessorCalls.cs:53:9:53:17 | Before access to indexer | AccessorCalls.cs:53:9:53:14 | Before access to field x | | +| AccessorCalls.cs:53:9:53:17 | access to indexer | AccessorCalls.cs:53:9:53:17 | After access to indexer | | +| AccessorCalls.cs:53:9:53:30 | ... += ... | AccessorCalls.cs:53:9:53:30 | After ... += ... | | +| AccessorCalls.cs:53:9:53:30 | After ... += ... | AccessorCalls.cs:53:9:53:31 | After ...; | | +| AccessorCalls.cs:53:9:53:30 | Before ... += ... | AccessorCalls.cs:53:9:53:17 | Before access to indexer | | +| AccessorCalls.cs:53:9:53:31 | ...; | AccessorCalls.cs:53:9:53:30 | Before ... += ... | | +| AccessorCalls.cs:53:9:53:31 | After ...; | AccessorCalls.cs:50:5:54:5 | After {...} | | | AccessorCalls.cs:53:16:53:16 | 0 | AccessorCalls.cs:53:9:53:17 | access to indexer | | | AccessorCalls.cs:53:22:53:25 | this access | AccessorCalls.cs:53:22:53:27 | access to field x | | -| AccessorCalls.cs:53:22:53:27 | access to field x | AccessorCalls.cs:53:29:53:29 | 0 | | -| AccessorCalls.cs:53:22:53:30 | access to indexer | AccessorCalls.cs:53:9:53:30 | ... += ... | | +| AccessorCalls.cs:53:22:53:27 | After access to field x | AccessorCalls.cs:53:29:53:29 | 0 | | +| AccessorCalls.cs:53:22:53:27 | Before access to field x | AccessorCalls.cs:53:22:53:25 | this access | | +| AccessorCalls.cs:53:22:53:27 | access to field x | AccessorCalls.cs:53:22:53:27 | After access to field x | | +| AccessorCalls.cs:53:22:53:30 | After access to indexer | AccessorCalls.cs:53:9:53:30 | ... += ... | | +| AccessorCalls.cs:53:22:53:30 | Before access to indexer | AccessorCalls.cs:53:22:53:27 | Before access to field x | | +| AccessorCalls.cs:53:22:53:30 | access to indexer | AccessorCalls.cs:53:22:53:30 | After access to indexer | | | AccessorCalls.cs:53:29:53:29 | 0 | AccessorCalls.cs:53:22:53:30 | access to indexer | | -| AccessorCalls.cs:56:10:56:11 | enter M7 | AccessorCalls.cs:57:5:59:5 | {...} | | -| AccessorCalls.cs:56:10:56:11 | exit M7 (normal) | AccessorCalls.cs:56:10:56:11 | exit M7 | | +| AccessorCalls.cs:56:10:56:11 | Entry | AccessorCalls.cs:56:17:56:17 | i | | +| AccessorCalls.cs:56:10:56:11 | Normal Exit | AccessorCalls.cs:56:10:56:11 | Exit | | +| AccessorCalls.cs:56:17:56:17 | i | AccessorCalls.cs:57:5:59:5 | {...} | | +| AccessorCalls.cs:57:5:59:5 | After {...} | AccessorCalls.cs:56:10:56:11 | Normal Exit | | | AccessorCalls.cs:57:5:59:5 | {...} | AccessorCalls.cs:58:9:58:86 | ...; | | -| AccessorCalls.cs:58:9:58:45 | (..., ...) | AccessorCalls.cs:58:50:58:53 | this access | | -| AccessorCalls.cs:58:9:58:85 | ... = ... | AccessorCalls.cs:56:10:56:11 | exit M7 (normal) | | -| AccessorCalls.cs:58:9:58:86 | ...; | AccessorCalls.cs:58:10:58:13 | this access | | -| AccessorCalls.cs:58:10:58:13 | this access | AccessorCalls.cs:58:22:58:25 | this access | | -| AccessorCalls.cs:58:10:58:19 | access to field Field | AccessorCalls.cs:58:22:58:30 | access to property Prop | | -| AccessorCalls.cs:58:22:58:25 | this access | AccessorCalls.cs:58:37:58:40 | this access | | -| AccessorCalls.cs:58:22:58:30 | access to property Prop | AccessorCalls.cs:58:37:58:43 | access to indexer | | -| AccessorCalls.cs:58:33:58:44 | (..., ...) | AccessorCalls.cs:58:9:58:45 | (..., ...) | | +| AccessorCalls.cs:58:9:58:45 | (..., ...) | AccessorCalls.cs:58:9:58:45 | After (..., ...) | | +| AccessorCalls.cs:58:9:58:45 | After (..., ...) | AccessorCalls.cs:58:49:58:85 | Before (..., ...) | | +| AccessorCalls.cs:58:9:58:45 | Before (..., ...) | AccessorCalls.cs:58:10:58:19 | Before access to field Field | | +| AccessorCalls.cs:58:9:58:85 | ... = ... | AccessorCalls.cs:58:9:58:85 | After ... = ... | | +| AccessorCalls.cs:58:9:58:85 | After ... = ... | AccessorCalls.cs:58:9:58:86 | After ...; | | +| AccessorCalls.cs:58:9:58:85 | Before ... = ... | AccessorCalls.cs:58:9:58:45 | Before (..., ...) | | +| AccessorCalls.cs:58:9:58:86 | ...; | AccessorCalls.cs:58:9:58:85 | Before ... = ... | | +| AccessorCalls.cs:58:9:58:86 | After ...; | AccessorCalls.cs:57:5:59:5 | After {...} | | +| AccessorCalls.cs:58:10:58:13 | this access | AccessorCalls.cs:58:10:58:19 | access to field Field | | +| AccessorCalls.cs:58:10:58:19 | After access to field Field | AccessorCalls.cs:58:22:58:30 | Before access to property Prop | | +| AccessorCalls.cs:58:10:58:19 | Before access to field Field | AccessorCalls.cs:58:10:58:13 | this access | | +| AccessorCalls.cs:58:10:58:19 | access to field Field | AccessorCalls.cs:58:10:58:19 | After access to field Field | | +| AccessorCalls.cs:58:22:58:25 | this access | AccessorCalls.cs:58:22:58:30 | access to property Prop | | +| AccessorCalls.cs:58:22:58:30 | After access to property Prop | AccessorCalls.cs:58:33:58:44 | Before (..., ...) | | +| AccessorCalls.cs:58:22:58:30 | Before access to property Prop | AccessorCalls.cs:58:22:58:25 | this access | | +| AccessorCalls.cs:58:22:58:30 | access to property Prop | AccessorCalls.cs:58:22:58:30 | After access to property Prop | | +| AccessorCalls.cs:58:33:58:44 | (..., ...) | AccessorCalls.cs:58:33:58:44 | After (..., ...) | | +| AccessorCalls.cs:58:33:58:44 | After (..., ...) | AccessorCalls.cs:58:9:58:45 | (..., ...) | | +| AccessorCalls.cs:58:33:58:44 | Before (..., ...) | AccessorCalls.cs:58:34:58:34 | access to parameter i | | +| AccessorCalls.cs:58:34:58:34 | access to parameter i | AccessorCalls.cs:58:37:58:43 | Before access to indexer | | | AccessorCalls.cs:58:37:58:40 | this access | AccessorCalls.cs:58:42:58:42 | 0 | | -| AccessorCalls.cs:58:37:58:43 | access to indexer | AccessorCalls.cs:58:9:58:85 | ... = ... | | -| AccessorCalls.cs:58:42:58:42 | 0 | AccessorCalls.cs:58:33:58:44 | (..., ...) | | -| AccessorCalls.cs:58:49:58:85 | (..., ...) | AccessorCalls.cs:58:10:58:19 | access to field Field | | +| AccessorCalls.cs:58:37:58:43 | After access to indexer | AccessorCalls.cs:58:33:58:44 | (..., ...) | | +| AccessorCalls.cs:58:37:58:43 | Before access to indexer | AccessorCalls.cs:58:37:58:40 | this access | | +| AccessorCalls.cs:58:37:58:43 | access to indexer | AccessorCalls.cs:58:37:58:43 | After access to indexer | | +| AccessorCalls.cs:58:42:58:42 | 0 | AccessorCalls.cs:58:37:58:43 | access to indexer | | +| AccessorCalls.cs:58:49:58:85 | (..., ...) | AccessorCalls.cs:58:49:58:85 | After (..., ...) | | +| AccessorCalls.cs:58:49:58:85 | After (..., ...) | AccessorCalls.cs:58:9:58:85 | ... = ... | | +| AccessorCalls.cs:58:49:58:85 | Before (..., ...) | AccessorCalls.cs:58:50:58:59 | Before access to field Field | | | AccessorCalls.cs:58:50:58:53 | this access | AccessorCalls.cs:58:50:58:59 | access to field Field | | -| AccessorCalls.cs:58:50:58:59 | access to field Field | AccessorCalls.cs:58:62:58:65 | this access | | +| AccessorCalls.cs:58:50:58:59 | After access to field Field | AccessorCalls.cs:58:62:58:70 | Before access to property Prop | | +| AccessorCalls.cs:58:50:58:59 | Before access to field Field | AccessorCalls.cs:58:50:58:53 | this access | | +| AccessorCalls.cs:58:50:58:59 | access to field Field | AccessorCalls.cs:58:50:58:59 | After access to field Field | | | AccessorCalls.cs:58:62:58:65 | this access | AccessorCalls.cs:58:62:58:70 | access to property Prop | | -| AccessorCalls.cs:58:62:58:70 | access to property Prop | AccessorCalls.cs:58:74:58:74 | 0 | | -| AccessorCalls.cs:58:73:58:84 | (..., ...) | AccessorCalls.cs:58:49:58:85 | (..., ...) | | -| AccessorCalls.cs:58:74:58:74 | 0 | AccessorCalls.cs:58:77:58:80 | this access | | +| AccessorCalls.cs:58:62:58:70 | After access to property Prop | AccessorCalls.cs:58:73:58:84 | Before (..., ...) | | +| AccessorCalls.cs:58:62:58:70 | Before access to property Prop | AccessorCalls.cs:58:62:58:65 | this access | | +| AccessorCalls.cs:58:62:58:70 | access to property Prop | AccessorCalls.cs:58:62:58:70 | After access to property Prop | | +| AccessorCalls.cs:58:73:58:84 | (..., ...) | AccessorCalls.cs:58:73:58:84 | After (..., ...) | | +| AccessorCalls.cs:58:73:58:84 | After (..., ...) | AccessorCalls.cs:58:49:58:85 | (..., ...) | | +| AccessorCalls.cs:58:73:58:84 | Before (..., ...) | AccessorCalls.cs:58:74:58:74 | 0 | | +| AccessorCalls.cs:58:74:58:74 | 0 | AccessorCalls.cs:58:77:58:83 | Before access to indexer | | | AccessorCalls.cs:58:77:58:80 | this access | AccessorCalls.cs:58:82:58:82 | 1 | | -| AccessorCalls.cs:58:77:58:83 | access to indexer | AccessorCalls.cs:58:73:58:84 | (..., ...) | | +| AccessorCalls.cs:58:77:58:83 | After access to indexer | AccessorCalls.cs:58:73:58:84 | (..., ...) | | +| AccessorCalls.cs:58:77:58:83 | Before access to indexer | AccessorCalls.cs:58:77:58:80 | this access | | +| AccessorCalls.cs:58:77:58:83 | access to indexer | AccessorCalls.cs:58:77:58:83 | After access to indexer | | | AccessorCalls.cs:58:82:58:82 | 1 | AccessorCalls.cs:58:77:58:83 | access to indexer | | -| AccessorCalls.cs:61:10:61:11 | enter M8 | AccessorCalls.cs:62:5:64:5 | {...} | | -| AccessorCalls.cs:61:10:61:11 | exit M8 (normal) | AccessorCalls.cs:61:10:61:11 | exit M8 | | +| AccessorCalls.cs:61:10:61:11 | Entry | AccessorCalls.cs:61:17:61:17 | i | | +| AccessorCalls.cs:61:10:61:11 | Normal Exit | AccessorCalls.cs:61:10:61:11 | Exit | | +| AccessorCalls.cs:61:17:61:17 | i | AccessorCalls.cs:62:5:64:5 | {...} | | +| AccessorCalls.cs:62:5:64:5 | After {...} | AccessorCalls.cs:61:10:61:11 | Normal Exit | | | AccessorCalls.cs:62:5:64:5 | {...} | AccessorCalls.cs:63:9:63:98 | ...; | | -| AccessorCalls.cs:63:9:63:51 | (..., ...) | AccessorCalls.cs:63:56:63:59 | this access | | -| AccessorCalls.cs:63:9:63:97 | ... = ... | AccessorCalls.cs:61:10:61:11 | exit M8 (normal) | | -| AccessorCalls.cs:63:9:63:98 | ...; | AccessorCalls.cs:63:10:63:13 | this access | | +| AccessorCalls.cs:63:9:63:51 | (..., ...) | AccessorCalls.cs:63:9:63:51 | After (..., ...) | | +| AccessorCalls.cs:63:9:63:51 | After (..., ...) | AccessorCalls.cs:63:55:63:97 | Before (..., ...) | | +| AccessorCalls.cs:63:9:63:51 | Before (..., ...) | AccessorCalls.cs:63:10:63:21 | Before access to field Field | | +| AccessorCalls.cs:63:9:63:97 | ... = ... | AccessorCalls.cs:63:9:63:97 | After ... = ... | | +| AccessorCalls.cs:63:9:63:97 | After ... = ... | AccessorCalls.cs:63:9:63:98 | After ...; | | +| AccessorCalls.cs:63:9:63:97 | Before ... = ... | AccessorCalls.cs:63:9:63:51 | Before (..., ...) | | +| AccessorCalls.cs:63:9:63:98 | ...; | AccessorCalls.cs:63:9:63:97 | Before ... = ... | | +| AccessorCalls.cs:63:9:63:98 | After ...; | AccessorCalls.cs:62:5:64:5 | After {...} | | | AccessorCalls.cs:63:10:63:13 | this access | AccessorCalls.cs:63:10:63:15 | access to field x | | -| AccessorCalls.cs:63:10:63:15 | access to field x | AccessorCalls.cs:63:24:63:27 | this access | | -| AccessorCalls.cs:63:10:63:21 | access to field Field | AccessorCalls.cs:63:24:63:34 | access to property Prop | | +| AccessorCalls.cs:63:10:63:15 | After access to field x | AccessorCalls.cs:63:10:63:21 | access to field Field | | +| AccessorCalls.cs:63:10:63:15 | Before access to field x | AccessorCalls.cs:63:10:63:13 | this access | | +| AccessorCalls.cs:63:10:63:15 | access to field x | AccessorCalls.cs:63:10:63:15 | After access to field x | | +| AccessorCalls.cs:63:10:63:21 | After access to field Field | AccessorCalls.cs:63:24:63:34 | Before access to property Prop | | +| AccessorCalls.cs:63:10:63:21 | Before access to field Field | AccessorCalls.cs:63:10:63:15 | Before access to field x | | +| AccessorCalls.cs:63:10:63:21 | access to field Field | AccessorCalls.cs:63:10:63:21 | After access to field Field | | | AccessorCalls.cs:63:24:63:27 | this access | AccessorCalls.cs:63:24:63:29 | access to field x | | -| AccessorCalls.cs:63:24:63:29 | access to field x | AccessorCalls.cs:63:41:63:44 | this access | | -| AccessorCalls.cs:63:24:63:34 | access to property Prop | AccessorCalls.cs:63:41:63:49 | access to indexer | | -| AccessorCalls.cs:63:37:63:50 | (..., ...) | AccessorCalls.cs:63:9:63:51 | (..., ...) | | +| AccessorCalls.cs:63:24:63:29 | After access to field x | AccessorCalls.cs:63:24:63:34 | access to property Prop | | +| AccessorCalls.cs:63:24:63:29 | Before access to field x | AccessorCalls.cs:63:24:63:27 | this access | | +| AccessorCalls.cs:63:24:63:29 | access to field x | AccessorCalls.cs:63:24:63:29 | After access to field x | | +| AccessorCalls.cs:63:24:63:34 | After access to property Prop | AccessorCalls.cs:63:37:63:50 | Before (..., ...) | | +| AccessorCalls.cs:63:24:63:34 | Before access to property Prop | AccessorCalls.cs:63:24:63:29 | Before access to field x | | +| AccessorCalls.cs:63:24:63:34 | access to property Prop | AccessorCalls.cs:63:24:63:34 | After access to property Prop | | +| AccessorCalls.cs:63:37:63:50 | (..., ...) | AccessorCalls.cs:63:37:63:50 | After (..., ...) | | +| AccessorCalls.cs:63:37:63:50 | After (..., ...) | AccessorCalls.cs:63:9:63:51 | (..., ...) | | +| AccessorCalls.cs:63:37:63:50 | Before (..., ...) | AccessorCalls.cs:63:38:63:38 | access to parameter i | | +| AccessorCalls.cs:63:38:63:38 | access to parameter i | AccessorCalls.cs:63:41:63:49 | Before access to indexer | | | AccessorCalls.cs:63:41:63:44 | this access | AccessorCalls.cs:63:41:63:46 | access to field x | | -| AccessorCalls.cs:63:41:63:46 | access to field x | AccessorCalls.cs:63:48:63:48 | 0 | | -| AccessorCalls.cs:63:41:63:49 | access to indexer | AccessorCalls.cs:63:9:63:97 | ... = ... | | -| AccessorCalls.cs:63:48:63:48 | 0 | AccessorCalls.cs:63:37:63:50 | (..., ...) | | -| AccessorCalls.cs:63:55:63:97 | (..., ...) | AccessorCalls.cs:63:10:63:21 | access to field Field | | +| AccessorCalls.cs:63:41:63:46 | After access to field x | AccessorCalls.cs:63:48:63:48 | 0 | | +| AccessorCalls.cs:63:41:63:46 | Before access to field x | AccessorCalls.cs:63:41:63:44 | this access | | +| AccessorCalls.cs:63:41:63:46 | access to field x | AccessorCalls.cs:63:41:63:46 | After access to field x | | +| AccessorCalls.cs:63:41:63:49 | After access to indexer | AccessorCalls.cs:63:37:63:50 | (..., ...) | | +| AccessorCalls.cs:63:41:63:49 | Before access to indexer | AccessorCalls.cs:63:41:63:46 | Before access to field x | | +| AccessorCalls.cs:63:41:63:49 | access to indexer | AccessorCalls.cs:63:41:63:49 | After access to indexer | | +| AccessorCalls.cs:63:48:63:48 | 0 | AccessorCalls.cs:63:41:63:49 | access to indexer | | +| AccessorCalls.cs:63:55:63:97 | (..., ...) | AccessorCalls.cs:63:55:63:97 | After (..., ...) | | +| AccessorCalls.cs:63:55:63:97 | After (..., ...) | AccessorCalls.cs:63:9:63:97 | ... = ... | | +| AccessorCalls.cs:63:55:63:97 | Before (..., ...) | AccessorCalls.cs:63:56:63:67 | Before access to field Field | | | AccessorCalls.cs:63:56:63:59 | this access | AccessorCalls.cs:63:56:63:61 | access to field x | | -| AccessorCalls.cs:63:56:63:61 | access to field x | AccessorCalls.cs:63:56:63:67 | access to field Field | | -| AccessorCalls.cs:63:56:63:67 | access to field Field | AccessorCalls.cs:63:70:63:73 | this access | | +| AccessorCalls.cs:63:56:63:61 | After access to field x | AccessorCalls.cs:63:56:63:67 | access to field Field | | +| AccessorCalls.cs:63:56:63:61 | Before access to field x | AccessorCalls.cs:63:56:63:59 | this access | | +| AccessorCalls.cs:63:56:63:61 | access to field x | AccessorCalls.cs:63:56:63:61 | After access to field x | | +| AccessorCalls.cs:63:56:63:67 | After access to field Field | AccessorCalls.cs:63:70:63:80 | Before access to property Prop | | +| AccessorCalls.cs:63:56:63:67 | Before access to field Field | AccessorCalls.cs:63:56:63:61 | Before access to field x | | +| AccessorCalls.cs:63:56:63:67 | access to field Field | AccessorCalls.cs:63:56:63:67 | After access to field Field | | | AccessorCalls.cs:63:70:63:73 | this access | AccessorCalls.cs:63:70:63:75 | access to field x | | -| AccessorCalls.cs:63:70:63:75 | access to field x | AccessorCalls.cs:63:70:63:80 | access to property Prop | | -| AccessorCalls.cs:63:70:63:80 | access to property Prop | AccessorCalls.cs:63:84:63:84 | 0 | | -| AccessorCalls.cs:63:83:63:96 | (..., ...) | AccessorCalls.cs:63:55:63:97 | (..., ...) | | -| AccessorCalls.cs:63:84:63:84 | 0 | AccessorCalls.cs:63:87:63:90 | this access | | +| AccessorCalls.cs:63:70:63:75 | After access to field x | AccessorCalls.cs:63:70:63:80 | access to property Prop | | +| AccessorCalls.cs:63:70:63:75 | Before access to field x | AccessorCalls.cs:63:70:63:73 | this access | | +| AccessorCalls.cs:63:70:63:75 | access to field x | AccessorCalls.cs:63:70:63:75 | After access to field x | | +| AccessorCalls.cs:63:70:63:80 | After access to property Prop | AccessorCalls.cs:63:83:63:96 | Before (..., ...) | | +| AccessorCalls.cs:63:70:63:80 | Before access to property Prop | AccessorCalls.cs:63:70:63:75 | Before access to field x | | +| AccessorCalls.cs:63:70:63:80 | access to property Prop | AccessorCalls.cs:63:70:63:80 | After access to property Prop | | +| AccessorCalls.cs:63:83:63:96 | (..., ...) | AccessorCalls.cs:63:83:63:96 | After (..., ...) | | +| AccessorCalls.cs:63:83:63:96 | After (..., ...) | AccessorCalls.cs:63:55:63:97 | (..., ...) | | +| AccessorCalls.cs:63:83:63:96 | Before (..., ...) | AccessorCalls.cs:63:84:63:84 | 0 | | +| AccessorCalls.cs:63:84:63:84 | 0 | AccessorCalls.cs:63:87:63:95 | Before access to indexer | | | AccessorCalls.cs:63:87:63:90 | this access | AccessorCalls.cs:63:87:63:92 | access to field x | | -| AccessorCalls.cs:63:87:63:92 | access to field x | AccessorCalls.cs:63:94:63:94 | 1 | | -| AccessorCalls.cs:63:87:63:95 | access to indexer | AccessorCalls.cs:63:83:63:96 | (..., ...) | | +| AccessorCalls.cs:63:87:63:92 | After access to field x | AccessorCalls.cs:63:94:63:94 | 1 | | +| AccessorCalls.cs:63:87:63:92 | Before access to field x | AccessorCalls.cs:63:87:63:90 | this access | | +| AccessorCalls.cs:63:87:63:92 | access to field x | AccessorCalls.cs:63:87:63:92 | After access to field x | | +| AccessorCalls.cs:63:87:63:95 | After access to indexer | AccessorCalls.cs:63:83:63:96 | (..., ...) | | +| AccessorCalls.cs:63:87:63:95 | Before access to indexer | AccessorCalls.cs:63:87:63:92 | Before access to field x | | +| AccessorCalls.cs:63:87:63:95 | access to indexer | AccessorCalls.cs:63:87:63:95 | After access to indexer | | | AccessorCalls.cs:63:94:63:94 | 1 | AccessorCalls.cs:63:87:63:95 | access to indexer | | -| AccessorCalls.cs:66:10:66:11 | enter M9 | AccessorCalls.cs:67:5:74:5 | {...} | | -| AccessorCalls.cs:66:10:66:11 | exit M9 (normal) | AccessorCalls.cs:66:10:66:11 | exit M9 | | +| AccessorCalls.cs:66:10:66:11 | Entry | AccessorCalls.cs:66:20:66:20 | o | | +| AccessorCalls.cs:66:10:66:11 | Normal Exit | AccessorCalls.cs:66:10:66:11 | Exit | | +| AccessorCalls.cs:66:20:66:20 | o | AccessorCalls.cs:66:27:66:27 | i | | +| AccessorCalls.cs:66:27:66:27 | i | AccessorCalls.cs:66:43:66:43 | e | | +| AccessorCalls.cs:66:43:66:43 | e | AccessorCalls.cs:67:5:74:5 | {...} | | +| AccessorCalls.cs:67:5:74:5 | After {...} | AccessorCalls.cs:66:10:66:11 | Normal Exit | | | AccessorCalls.cs:67:5:74:5 | {...} | AccessorCalls.cs:68:9:68:22 | ... ...; | | -| AccessorCalls.cs:68:9:68:22 | ... ...; | AccessorCalls.cs:68:21:68:21 | access to parameter o | | -| AccessorCalls.cs:68:17:68:21 | dynamic d = ... | AccessorCalls.cs:69:9:69:36 | ...; | | +| AccessorCalls.cs:68:9:68:22 | ... ...; | AccessorCalls.cs:68:17:68:21 | Before dynamic d = ... | | +| AccessorCalls.cs:68:9:68:22 | After ... ...; | AccessorCalls.cs:69:9:69:36 | ...; | | +| AccessorCalls.cs:68:17:68:17 | access to local variable d | AccessorCalls.cs:68:21:68:21 | access to parameter o | | +| AccessorCalls.cs:68:17:68:21 | After dynamic d = ... | AccessorCalls.cs:68:9:68:22 | After ... ...; | | +| AccessorCalls.cs:68:17:68:21 | Before dynamic d = ... | AccessorCalls.cs:68:17:68:17 | access to local variable d | | +| AccessorCalls.cs:68:17:68:21 | dynamic d = ... | AccessorCalls.cs:68:17:68:21 | After dynamic d = ... | | | AccessorCalls.cs:68:21:68:21 | access to parameter o | AccessorCalls.cs:68:17:68:21 | dynamic d = ... | | -| AccessorCalls.cs:69:9:69:9 | access to local variable d | AccessorCalls.cs:69:24:69:24 | access to local variable d | | -| AccessorCalls.cs:69:9:69:20 | dynamic access to member MaybeProp1 | AccessorCalls.cs:69:9:69:35 | ... = ... | | -| AccessorCalls.cs:69:9:69:35 | ... = ... | AccessorCalls.cs:70:9:70:22 | ...; | | -| AccessorCalls.cs:69:9:69:36 | ...; | AccessorCalls.cs:69:9:69:9 | access to local variable d | | +| AccessorCalls.cs:69:9:69:9 | access to local variable d | AccessorCalls.cs:69:9:69:20 | dynamic access to member MaybeProp1 | | +| AccessorCalls.cs:69:9:69:20 | After dynamic access to member MaybeProp1 | AccessorCalls.cs:69:24:69:35 | Before dynamic access to member MaybeProp2 | | +| AccessorCalls.cs:69:9:69:20 | Before dynamic access to member MaybeProp1 | AccessorCalls.cs:69:9:69:9 | access to local variable d | | +| AccessorCalls.cs:69:9:69:20 | dynamic access to member MaybeProp1 | AccessorCalls.cs:69:9:69:20 | After dynamic access to member MaybeProp1 | | +| AccessorCalls.cs:69:9:69:35 | ... = ... | AccessorCalls.cs:69:9:69:35 | After ... = ... | | +| AccessorCalls.cs:69:9:69:35 | After ... = ... | AccessorCalls.cs:69:9:69:36 | After ...; | | +| AccessorCalls.cs:69:9:69:35 | Before ... = ... | AccessorCalls.cs:69:9:69:20 | Before dynamic access to member MaybeProp1 | | +| AccessorCalls.cs:69:9:69:36 | ...; | AccessorCalls.cs:69:9:69:35 | Before ... = ... | | +| AccessorCalls.cs:69:9:69:36 | After ...; | AccessorCalls.cs:70:9:70:22 | ...; | | | AccessorCalls.cs:69:24:69:24 | access to local variable d | AccessorCalls.cs:69:24:69:35 | dynamic access to member MaybeProp2 | | -| AccessorCalls.cs:69:24:69:35 | dynamic access to member MaybeProp2 | AccessorCalls.cs:69:9:69:20 | dynamic access to member MaybeProp1 | | +| AccessorCalls.cs:69:24:69:35 | After dynamic access to member MaybeProp2 | AccessorCalls.cs:69:9:69:35 | ... = ... | | +| AccessorCalls.cs:69:24:69:35 | Before dynamic access to member MaybeProp2 | AccessorCalls.cs:69:24:69:24 | access to local variable d | | +| AccessorCalls.cs:69:24:69:35 | dynamic access to member MaybeProp2 | AccessorCalls.cs:69:24:69:35 | After dynamic access to member MaybeProp2 | | | AccessorCalls.cs:70:9:70:9 | access to local variable d | AccessorCalls.cs:70:9:70:19 | dynamic access to member MaybeProp | | -| AccessorCalls.cs:70:9:70:19 | dynamic access to member MaybeProp | AccessorCalls.cs:70:9:70:21 | dynamic call to operator ++ | | -| AccessorCalls.cs:70:9:70:21 | dynamic call to operator ++ | AccessorCalls.cs:71:9:71:26 | ...; | | -| AccessorCalls.cs:70:9:70:22 | ...; | AccessorCalls.cs:70:9:70:9 | access to local variable d | | +| AccessorCalls.cs:70:9:70:19 | After dynamic access to member MaybeProp | AccessorCalls.cs:70:9:70:21 | dynamic call to operator ++ | | +| AccessorCalls.cs:70:9:70:19 | Before dynamic access to member MaybeProp | AccessorCalls.cs:70:9:70:9 | access to local variable d | | +| AccessorCalls.cs:70:9:70:19 | dynamic access to member MaybeProp | AccessorCalls.cs:70:9:70:19 | After dynamic access to member MaybeProp | | +| AccessorCalls.cs:70:9:70:21 | After dynamic call to operator ++ | AccessorCalls.cs:70:9:70:22 | After ...; | | +| AccessorCalls.cs:70:9:70:21 | Before dynamic call to operator ++ | AccessorCalls.cs:70:9:70:19 | Before dynamic access to member MaybeProp | | +| AccessorCalls.cs:70:9:70:21 | dynamic call to operator ++ | AccessorCalls.cs:70:9:70:21 | After dynamic call to operator ++ | | +| AccessorCalls.cs:70:9:70:22 | ...; | AccessorCalls.cs:70:9:70:21 | Before dynamic call to operator ++ | | +| AccessorCalls.cs:70:9:70:22 | After ...; | AccessorCalls.cs:71:9:71:26 | ...; | | | AccessorCalls.cs:71:9:71:9 | access to local variable d | AccessorCalls.cs:71:9:71:20 | dynamic access to member MaybeEvent | | -| AccessorCalls.cs:71:9:71:20 | dynamic access to member MaybeEvent | AccessorCalls.cs:71:25:71:25 | access to parameter e | | -| AccessorCalls.cs:71:9:71:25 | ... += ... | AccessorCalls.cs:72:9:72:21 | ...; | | -| AccessorCalls.cs:71:9:71:26 | ...; | AccessorCalls.cs:71:9:71:9 | access to local variable d | | +| AccessorCalls.cs:71:9:71:20 | After dynamic access to member MaybeEvent | AccessorCalls.cs:71:25:71:25 | access to parameter e | | +| AccessorCalls.cs:71:9:71:20 | Before dynamic access to member MaybeEvent | AccessorCalls.cs:71:9:71:9 | access to local variable d | | +| AccessorCalls.cs:71:9:71:20 | dynamic access to member MaybeEvent | AccessorCalls.cs:71:9:71:20 | After dynamic access to member MaybeEvent | | +| AccessorCalls.cs:71:9:71:25 | ... += ... | AccessorCalls.cs:71:9:71:25 | After ... += ... | | +| AccessorCalls.cs:71:9:71:25 | After ... += ... | AccessorCalls.cs:71:9:71:26 | After ...; | | +| AccessorCalls.cs:71:9:71:25 | Before ... += ... | AccessorCalls.cs:71:9:71:20 | Before dynamic access to member MaybeEvent | | +| AccessorCalls.cs:71:9:71:26 | ...; | AccessorCalls.cs:71:9:71:25 | Before ... += ... | | +| AccessorCalls.cs:71:9:71:26 | After ...; | AccessorCalls.cs:72:9:72:21 | ...; | | | AccessorCalls.cs:71:25:71:25 | access to parameter e | AccessorCalls.cs:71:9:71:25 | ... += ... | | | AccessorCalls.cs:72:9:72:9 | access to local variable d | AccessorCalls.cs:72:11:72:11 | 0 | | -| AccessorCalls.cs:72:9:72:12 | dynamic access to element | AccessorCalls.cs:72:17:72:17 | access to local variable d | | -| AccessorCalls.cs:72:9:72:20 | ... += ... | AccessorCalls.cs:73:9:73:84 | ...; | | -| AccessorCalls.cs:72:9:72:21 | ...; | AccessorCalls.cs:72:9:72:9 | access to local variable d | | +| AccessorCalls.cs:72:9:72:12 | After dynamic access to element | AccessorCalls.cs:72:17:72:20 | Before dynamic access to element | | +| AccessorCalls.cs:72:9:72:12 | Before dynamic access to element | AccessorCalls.cs:72:9:72:9 | access to local variable d | | +| AccessorCalls.cs:72:9:72:12 | dynamic access to element | AccessorCalls.cs:72:9:72:12 | After dynamic access to element | | +| AccessorCalls.cs:72:9:72:20 | ... += ... | AccessorCalls.cs:72:9:72:20 | After ... += ... | | +| AccessorCalls.cs:72:9:72:20 | After ... += ... | AccessorCalls.cs:72:9:72:21 | After ...; | | +| AccessorCalls.cs:72:9:72:20 | Before ... += ... | AccessorCalls.cs:72:9:72:12 | Before dynamic access to element | | +| AccessorCalls.cs:72:9:72:21 | ...; | AccessorCalls.cs:72:9:72:20 | Before ... += ... | | +| AccessorCalls.cs:72:9:72:21 | After ...; | AccessorCalls.cs:73:9:73:84 | ...; | | | AccessorCalls.cs:72:11:72:11 | 0 | AccessorCalls.cs:72:9:72:12 | dynamic access to element | | | AccessorCalls.cs:72:17:72:17 | access to local variable d | AccessorCalls.cs:72:19:72:19 | 1 | | -| AccessorCalls.cs:72:17:72:20 | dynamic access to element | AccessorCalls.cs:72:9:72:20 | ... += ... | | +| AccessorCalls.cs:72:17:72:20 | After dynamic access to element | AccessorCalls.cs:72:9:72:20 | ... += ... | | +| AccessorCalls.cs:72:17:72:20 | Before dynamic access to element | AccessorCalls.cs:72:17:72:17 | access to local variable d | | +| AccessorCalls.cs:72:17:72:20 | dynamic access to element | AccessorCalls.cs:72:17:72:20 | After dynamic access to element | | | AccessorCalls.cs:72:19:72:19 | 1 | AccessorCalls.cs:72:17:72:20 | dynamic access to element | | -| AccessorCalls.cs:73:9:73:44 | (..., ...) | AccessorCalls.cs:73:49:73:49 | access to local variable d | | -| AccessorCalls.cs:73:9:73:83 | ... = ... | AccessorCalls.cs:66:10:66:11 | exit M9 (normal) | | -| AccessorCalls.cs:73:9:73:84 | ...; | AccessorCalls.cs:73:10:73:10 | access to local variable d | | -| AccessorCalls.cs:73:10:73:10 | access to local variable d | AccessorCalls.cs:73:24:73:27 | this access | | -| AccessorCalls.cs:73:10:73:21 | dynamic access to member MaybeProp1 | AccessorCalls.cs:73:24:73:32 | access to property Prop | | -| AccessorCalls.cs:73:24:73:27 | this access | AccessorCalls.cs:73:39:73:39 | access to local variable d | | -| AccessorCalls.cs:73:24:73:32 | access to property Prop | AccessorCalls.cs:73:39:73:42 | dynamic access to element | | -| AccessorCalls.cs:73:35:73:43 | (..., ...) | AccessorCalls.cs:73:9:73:44 | (..., ...) | | +| AccessorCalls.cs:73:9:73:44 | (..., ...) | AccessorCalls.cs:73:9:73:44 | After (..., ...) | | +| AccessorCalls.cs:73:9:73:44 | After (..., ...) | AccessorCalls.cs:73:48:73:83 | Before (..., ...) | | +| AccessorCalls.cs:73:9:73:44 | Before (..., ...) | AccessorCalls.cs:73:10:73:21 | Before dynamic access to member MaybeProp1 | | +| AccessorCalls.cs:73:9:73:83 | ... = ... | AccessorCalls.cs:73:9:73:83 | After ... = ... | | +| AccessorCalls.cs:73:9:73:83 | After ... = ... | AccessorCalls.cs:73:9:73:84 | After ...; | | +| AccessorCalls.cs:73:9:73:83 | Before ... = ... | AccessorCalls.cs:73:9:73:44 | Before (..., ...) | | +| AccessorCalls.cs:73:9:73:84 | ...; | AccessorCalls.cs:73:9:73:83 | Before ... = ... | | +| AccessorCalls.cs:73:9:73:84 | After ...; | AccessorCalls.cs:67:5:74:5 | After {...} | | +| AccessorCalls.cs:73:10:73:10 | access to local variable d | AccessorCalls.cs:73:10:73:21 | dynamic access to member MaybeProp1 | | +| AccessorCalls.cs:73:10:73:21 | After dynamic access to member MaybeProp1 | AccessorCalls.cs:73:24:73:32 | Before access to property Prop | | +| AccessorCalls.cs:73:10:73:21 | Before dynamic access to member MaybeProp1 | AccessorCalls.cs:73:10:73:10 | access to local variable d | | +| AccessorCalls.cs:73:10:73:21 | dynamic access to member MaybeProp1 | AccessorCalls.cs:73:10:73:21 | After dynamic access to member MaybeProp1 | | +| AccessorCalls.cs:73:24:73:27 | this access | AccessorCalls.cs:73:24:73:32 | access to property Prop | | +| AccessorCalls.cs:73:24:73:32 | After access to property Prop | AccessorCalls.cs:73:35:73:43 | Before (..., ...) | | +| AccessorCalls.cs:73:24:73:32 | Before access to property Prop | AccessorCalls.cs:73:24:73:27 | this access | | +| AccessorCalls.cs:73:24:73:32 | access to property Prop | AccessorCalls.cs:73:24:73:32 | After access to property Prop | | +| AccessorCalls.cs:73:35:73:43 | (..., ...) | AccessorCalls.cs:73:35:73:43 | After (..., ...) | | +| AccessorCalls.cs:73:35:73:43 | After (..., ...) | AccessorCalls.cs:73:9:73:44 | (..., ...) | | +| AccessorCalls.cs:73:35:73:43 | Before (..., ...) | AccessorCalls.cs:73:36:73:36 | access to parameter i | | +| AccessorCalls.cs:73:36:73:36 | access to parameter i | AccessorCalls.cs:73:39:73:42 | Before dynamic access to element | | | AccessorCalls.cs:73:39:73:39 | access to local variable d | AccessorCalls.cs:73:41:73:41 | 0 | | -| AccessorCalls.cs:73:39:73:42 | dynamic access to element | AccessorCalls.cs:73:9:73:83 | ... = ... | | -| AccessorCalls.cs:73:41:73:41 | 0 | AccessorCalls.cs:73:35:73:43 | (..., ...) | | -| AccessorCalls.cs:73:48:73:83 | (..., ...) | AccessorCalls.cs:73:10:73:21 | dynamic access to member MaybeProp1 | | +| AccessorCalls.cs:73:39:73:42 | After dynamic access to element | AccessorCalls.cs:73:35:73:43 | (..., ...) | | +| AccessorCalls.cs:73:39:73:42 | Before dynamic access to element | AccessorCalls.cs:73:39:73:39 | access to local variable d | | +| AccessorCalls.cs:73:39:73:42 | dynamic access to element | AccessorCalls.cs:73:39:73:42 | After dynamic access to element | | +| AccessorCalls.cs:73:41:73:41 | 0 | AccessorCalls.cs:73:39:73:42 | dynamic access to element | | +| AccessorCalls.cs:73:48:73:83 | (..., ...) | AccessorCalls.cs:73:48:73:83 | After (..., ...) | | +| AccessorCalls.cs:73:48:73:83 | After (..., ...) | AccessorCalls.cs:73:9:73:83 | ... = ... | | +| AccessorCalls.cs:73:48:73:83 | Before (..., ...) | AccessorCalls.cs:73:49:73:60 | Before dynamic access to member MaybeProp1 | | | AccessorCalls.cs:73:49:73:49 | access to local variable d | AccessorCalls.cs:73:49:73:60 | dynamic access to member MaybeProp1 | | -| AccessorCalls.cs:73:49:73:60 | dynamic access to member MaybeProp1 | AccessorCalls.cs:73:63:73:66 | this access | | +| AccessorCalls.cs:73:49:73:60 | After dynamic access to member MaybeProp1 | AccessorCalls.cs:73:63:73:71 | Before access to property Prop | | +| AccessorCalls.cs:73:49:73:60 | Before dynamic access to member MaybeProp1 | AccessorCalls.cs:73:49:73:49 | access to local variable d | | +| AccessorCalls.cs:73:49:73:60 | dynamic access to member MaybeProp1 | AccessorCalls.cs:73:49:73:60 | After dynamic access to member MaybeProp1 | | | AccessorCalls.cs:73:63:73:66 | this access | AccessorCalls.cs:73:63:73:71 | access to property Prop | | -| AccessorCalls.cs:73:63:73:71 | access to property Prop | AccessorCalls.cs:73:75:73:75 | 0 | | -| AccessorCalls.cs:73:74:73:82 | (..., ...) | AccessorCalls.cs:73:48:73:83 | (..., ...) | | -| AccessorCalls.cs:73:75:73:75 | 0 | AccessorCalls.cs:73:78:73:78 | access to local variable d | | +| AccessorCalls.cs:73:63:73:71 | After access to property Prop | AccessorCalls.cs:73:74:73:82 | Before (..., ...) | | +| AccessorCalls.cs:73:63:73:71 | Before access to property Prop | AccessorCalls.cs:73:63:73:66 | this access | | +| AccessorCalls.cs:73:63:73:71 | access to property Prop | AccessorCalls.cs:73:63:73:71 | After access to property Prop | | +| AccessorCalls.cs:73:74:73:82 | (..., ...) | AccessorCalls.cs:73:74:73:82 | After (..., ...) | | +| AccessorCalls.cs:73:74:73:82 | After (..., ...) | AccessorCalls.cs:73:48:73:83 | (..., ...) | | +| AccessorCalls.cs:73:74:73:82 | Before (..., ...) | AccessorCalls.cs:73:75:73:75 | 0 | | +| AccessorCalls.cs:73:75:73:75 | 0 | AccessorCalls.cs:73:78:73:81 | Before dynamic access to element | | | AccessorCalls.cs:73:78:73:78 | access to local variable d | AccessorCalls.cs:73:80:73:80 | 1 | | -| AccessorCalls.cs:73:78:73:81 | dynamic access to element | AccessorCalls.cs:73:74:73:82 | (..., ...) | | +| AccessorCalls.cs:73:78:73:81 | After dynamic access to element | AccessorCalls.cs:73:74:73:82 | (..., ...) | | +| AccessorCalls.cs:73:78:73:81 | Before dynamic access to element | AccessorCalls.cs:73:78:73:78 | access to local variable d | | +| AccessorCalls.cs:73:78:73:81 | dynamic access to element | AccessorCalls.cs:73:78:73:81 | After dynamic access to element | | | AccessorCalls.cs:73:80:73:80 | 1 | AccessorCalls.cs:73:78:73:81 | dynamic access to element | | -| ArrayCreation.cs:1:7:1:19 | call to constructor Object | ArrayCreation.cs:1:7:1:19 | {...} | | -| ArrayCreation.cs:1:7:1:19 | call to method | ArrayCreation.cs:1:7:1:19 | call to constructor Object | | -| ArrayCreation.cs:1:7:1:19 | enter ArrayCreation | ArrayCreation.cs:1:7:1:19 | this access | | -| ArrayCreation.cs:1:7:1:19 | exit ArrayCreation (normal) | ArrayCreation.cs:1:7:1:19 | exit ArrayCreation | | +| ArrayCreation.cs:1:7:1:19 | After call to constructor Object | ArrayCreation.cs:1:7:1:19 | {...} | | +| ArrayCreation.cs:1:7:1:19 | After call to method | ArrayCreation.cs:1:7:1:19 | Before call to constructor Object | | +| ArrayCreation.cs:1:7:1:19 | Before call to constructor Object | ArrayCreation.cs:1:7:1:19 | call to constructor Object | | +| ArrayCreation.cs:1:7:1:19 | Before call to method | ArrayCreation.cs:1:7:1:19 | this access | | +| ArrayCreation.cs:1:7:1:19 | Entry | ArrayCreation.cs:1:7:1:19 | Before call to method | | +| ArrayCreation.cs:1:7:1:19 | Normal Exit | ArrayCreation.cs:1:7:1:19 | Exit | | +| ArrayCreation.cs:1:7:1:19 | call to constructor Object | ArrayCreation.cs:1:7:1:19 | After call to constructor Object | | +| ArrayCreation.cs:1:7:1:19 | call to method | ArrayCreation.cs:1:7:1:19 | After call to method | | | ArrayCreation.cs:1:7:1:19 | this access | ArrayCreation.cs:1:7:1:19 | call to method | | -| ArrayCreation.cs:1:7:1:19 | {...} | ArrayCreation.cs:1:7:1:19 | exit ArrayCreation (normal) | | -| ArrayCreation.cs:3:11:3:12 | enter M1 | ArrayCreation.cs:3:27:3:27 | 0 | | -| ArrayCreation.cs:3:11:3:12 | exit M1 (normal) | ArrayCreation.cs:3:11:3:12 | exit M1 | | -| ArrayCreation.cs:3:19:3:28 | array creation of type Int32[] | ArrayCreation.cs:3:11:3:12 | exit M1 (normal) | | +| ArrayCreation.cs:1:7:1:19 | {...} | ArrayCreation.cs:1:7:1:19 | Normal Exit | | +| ArrayCreation.cs:3:11:3:12 | Entry | ArrayCreation.cs:3:19:3:28 | Before array creation of type Int32[] | | +| ArrayCreation.cs:3:11:3:12 | Normal Exit | ArrayCreation.cs:3:11:3:12 | Exit | | +| ArrayCreation.cs:3:19:3:28 | After array creation of type Int32[] | ArrayCreation.cs:3:11:3:12 | Normal Exit | | +| ArrayCreation.cs:3:19:3:28 | Before array creation of type Int32[] | ArrayCreation.cs:3:27:3:27 | 0 | | +| ArrayCreation.cs:3:19:3:28 | array creation of type Int32[] | ArrayCreation.cs:3:19:3:28 | After array creation of type Int32[] | | | ArrayCreation.cs:3:27:3:27 | 0 | ArrayCreation.cs:3:19:3:28 | array creation of type Int32[] | | -| ArrayCreation.cs:5:12:5:13 | enter M2 | ArrayCreation.cs:5:28:5:28 | 0 | | -| ArrayCreation.cs:5:12:5:13 | exit M2 (normal) | ArrayCreation.cs:5:12:5:13 | exit M2 | | -| ArrayCreation.cs:5:20:5:32 | array creation of type Int32[,] | ArrayCreation.cs:5:12:5:13 | exit M2 (normal) | | +| ArrayCreation.cs:5:12:5:13 | Entry | ArrayCreation.cs:5:20:5:32 | Before array creation of type Int32[,] | | +| ArrayCreation.cs:5:12:5:13 | Normal Exit | ArrayCreation.cs:5:12:5:13 | Exit | | +| ArrayCreation.cs:5:20:5:32 | After array creation of type Int32[,] | ArrayCreation.cs:5:12:5:13 | Normal Exit | | +| ArrayCreation.cs:5:20:5:32 | Before array creation of type Int32[,] | ArrayCreation.cs:5:28:5:28 | 0 | | +| ArrayCreation.cs:5:20:5:32 | array creation of type Int32[,] | ArrayCreation.cs:5:20:5:32 | After array creation of type Int32[,] | | | ArrayCreation.cs:5:28:5:28 | 0 | ArrayCreation.cs:5:31:5:31 | 1 | | | ArrayCreation.cs:5:31:5:31 | 1 | ArrayCreation.cs:5:20:5:32 | array creation of type Int32[,] | | -| ArrayCreation.cs:7:11:7:12 | enter M3 | ArrayCreation.cs:7:19:7:36 | 2 | | -| ArrayCreation.cs:7:11:7:12 | exit M3 (normal) | ArrayCreation.cs:7:11:7:12 | exit M3 | | +| ArrayCreation.cs:7:11:7:12 | Entry | ArrayCreation.cs:7:19:7:36 | Before array creation of type Int32[] | | +| ArrayCreation.cs:7:11:7:12 | Normal Exit | ArrayCreation.cs:7:11:7:12 | Exit | | | ArrayCreation.cs:7:19:7:36 | 2 | ArrayCreation.cs:7:19:7:36 | array creation of type Int32[] | | -| ArrayCreation.cs:7:19:7:36 | array creation of type Int32[] | ArrayCreation.cs:7:31:7:31 | 0 | | -| ArrayCreation.cs:7:29:7:36 | { ..., ... } | ArrayCreation.cs:7:11:7:12 | exit M3 (normal) | | +| ArrayCreation.cs:7:19:7:36 | After array creation of type Int32[] | ArrayCreation.cs:7:11:7:12 | Normal Exit | | +| ArrayCreation.cs:7:19:7:36 | Before array creation of type Int32[] | ArrayCreation.cs:7:29:7:36 | Before { ..., ... } | | +| ArrayCreation.cs:7:19:7:36 | array creation of type Int32[] | ArrayCreation.cs:7:19:7:36 | After array creation of type Int32[] | | +| ArrayCreation.cs:7:29:7:36 | After { ..., ... } | ArrayCreation.cs:7:19:7:36 | 2 | | +| ArrayCreation.cs:7:29:7:36 | Before { ..., ... } | ArrayCreation.cs:7:31:7:31 | 0 | | +| ArrayCreation.cs:7:29:7:36 | { ..., ... } | ArrayCreation.cs:7:29:7:36 | After { ..., ... } | | | ArrayCreation.cs:7:31:7:31 | 0 | ArrayCreation.cs:7:34:7:34 | 1 | | | ArrayCreation.cs:7:34:7:34 | 1 | ArrayCreation.cs:7:29:7:36 | { ..., ... } | | -| ArrayCreation.cs:9:12:9:13 | enter M4 | ArrayCreation.cs:9:20:9:52 | 2 | | -| ArrayCreation.cs:9:12:9:13 | exit M4 (normal) | ArrayCreation.cs:9:12:9:13 | exit M4 | | +| ArrayCreation.cs:9:12:9:13 | Entry | ArrayCreation.cs:9:20:9:52 | Before array creation of type Int32[,] | | +| ArrayCreation.cs:9:12:9:13 | Normal Exit | ArrayCreation.cs:9:12:9:13 | Exit | | | ArrayCreation.cs:9:20:9:52 | 2 | ArrayCreation.cs:9:20:9:52 | 2 | | | ArrayCreation.cs:9:20:9:52 | 2 | ArrayCreation.cs:9:20:9:52 | array creation of type Int32[,] | | -| ArrayCreation.cs:9:20:9:52 | array creation of type Int32[,] | ArrayCreation.cs:9:35:9:35 | 0 | | -| ArrayCreation.cs:9:31:9:52 | { ..., ... } | ArrayCreation.cs:9:12:9:13 | exit M4 (normal) | | -| ArrayCreation.cs:9:33:9:40 | { ..., ... } | ArrayCreation.cs:9:45:9:45 | 2 | | +| ArrayCreation.cs:9:20:9:52 | After array creation of type Int32[,] | ArrayCreation.cs:9:12:9:13 | Normal Exit | | +| ArrayCreation.cs:9:20:9:52 | Before array creation of type Int32[,] | ArrayCreation.cs:9:31:9:52 | Before { ..., ... } | | +| ArrayCreation.cs:9:20:9:52 | array creation of type Int32[,] | ArrayCreation.cs:9:20:9:52 | After array creation of type Int32[,] | | +| ArrayCreation.cs:9:31:9:52 | After { ..., ... } | ArrayCreation.cs:9:20:9:52 | 2 | | +| ArrayCreation.cs:9:31:9:52 | Before { ..., ... } | ArrayCreation.cs:9:33:9:40 | Before { ..., ... } | | +| ArrayCreation.cs:9:31:9:52 | { ..., ... } | ArrayCreation.cs:9:31:9:52 | After { ..., ... } | | +| ArrayCreation.cs:9:33:9:40 | After { ..., ... } | ArrayCreation.cs:9:43:9:50 | Before { ..., ... } | | +| ArrayCreation.cs:9:33:9:40 | Before { ..., ... } | ArrayCreation.cs:9:35:9:35 | 0 | | +| ArrayCreation.cs:9:33:9:40 | { ..., ... } | ArrayCreation.cs:9:33:9:40 | After { ..., ... } | | | ArrayCreation.cs:9:35:9:35 | 0 | ArrayCreation.cs:9:38:9:38 | 1 | | | ArrayCreation.cs:9:38:9:38 | 1 | ArrayCreation.cs:9:33:9:40 | { ..., ... } | | -| ArrayCreation.cs:9:43:9:50 | { ..., ... } | ArrayCreation.cs:9:31:9:52 | { ..., ... } | | +| ArrayCreation.cs:9:43:9:50 | After { ..., ... } | ArrayCreation.cs:9:31:9:52 | { ..., ... } | | +| ArrayCreation.cs:9:43:9:50 | Before { ..., ... } | ArrayCreation.cs:9:45:9:45 | 2 | | +| ArrayCreation.cs:9:43:9:50 | { ..., ... } | ArrayCreation.cs:9:43:9:50 | After { ..., ... } | | | ArrayCreation.cs:9:45:9:45 | 2 | ArrayCreation.cs:9:48:9:48 | 3 | | | ArrayCreation.cs:9:48:9:48 | 3 | ArrayCreation.cs:9:43:9:50 | { ..., ... } | | -| Assert.cs:5:7:5:17 | call to constructor Object | Assert.cs:5:7:5:17 | {...} | | -| Assert.cs:5:7:5:17 | call to method | Assert.cs:5:7:5:17 | call to constructor Object | | -| Assert.cs:5:7:5:17 | enter AssertTests | Assert.cs:5:7:5:17 | this access | | -| Assert.cs:5:7:5:17 | exit AssertTests (normal) | Assert.cs:5:7:5:17 | exit AssertTests | | +| Assert.cs:5:7:5:17 | After call to constructor Object | Assert.cs:5:7:5:17 | {...} | | +| Assert.cs:5:7:5:17 | After call to method | Assert.cs:5:7:5:17 | Before call to constructor Object | | +| Assert.cs:5:7:5:17 | Before call to constructor Object | Assert.cs:5:7:5:17 | call to constructor Object | | +| Assert.cs:5:7:5:17 | Before call to method | Assert.cs:5:7:5:17 | this access | | +| Assert.cs:5:7:5:17 | Entry | Assert.cs:5:7:5:17 | Before call to method | | +| Assert.cs:5:7:5:17 | Normal Exit | Assert.cs:5:7:5:17 | Exit | | +| Assert.cs:5:7:5:17 | call to constructor Object | Assert.cs:5:7:5:17 | After call to constructor Object | | +| Assert.cs:5:7:5:17 | call to method | Assert.cs:5:7:5:17 | After call to method | | | Assert.cs:5:7:5:17 | this access | Assert.cs:5:7:5:17 | call to method | | -| Assert.cs:5:7:5:17 | {...} | Assert.cs:5:7:5:17 | exit AssertTests (normal) | | -| Assert.cs:7:10:7:11 | enter M1 | Assert.cs:8:5:12:5 | {...} | | -| Assert.cs:7:10:7:11 | exit M1 (abnormal) | Assert.cs:7:10:7:11 | exit M1 | | -| Assert.cs:7:10:7:11 | exit M1 (normal) | Assert.cs:7:10:7:11 | exit M1 | | +| Assert.cs:5:7:5:17 | {...} | Assert.cs:5:7:5:17 | Normal Exit | | +| Assert.cs:7:10:7:11 | Entry | Assert.cs:7:18:7:18 | b | | +| Assert.cs:7:10:7:11 | Exceptional Exit | Assert.cs:7:10:7:11 | Exit | | +| Assert.cs:7:10:7:11 | Normal Exit | Assert.cs:7:10:7:11 | Exit | | +| Assert.cs:7:18:7:18 | b | Assert.cs:8:5:12:5 | {...} | | +| Assert.cs:8:5:12:5 | After {...} | Assert.cs:7:10:7:11 | Normal Exit | | | Assert.cs:8:5:12:5 | {...} | Assert.cs:9:9:9:33 | ... ...; | | -| Assert.cs:9:9:9:33 | ... ...; | Assert.cs:9:20:9:20 | access to parameter b | | -| Assert.cs:9:16:9:32 | String s = ... | Assert.cs:10:9:10:32 | ...; | | -| Assert.cs:9:20:9:20 | access to parameter b | Assert.cs:9:24:9:27 | null | true | -| Assert.cs:9:20:9:20 | access to parameter b | Assert.cs:9:31:9:32 | "" | false | -| Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:9:16:9:32 | String s = ... | | -| Assert.cs:9:24:9:27 | null | Assert.cs:9:20:9:32 | ... ? ... : ... | | -| Assert.cs:9:31:9:32 | "" | Assert.cs:9:20:9:32 | ... ? ... : ... | | -| Assert.cs:10:9:10:31 | call to method Assert | Assert.cs:7:10:7:11 | exit M1 (abnormal) | exit | -| Assert.cs:10:9:10:31 | call to method Assert | Assert.cs:11:9:11:36 | ...; | | -| Assert.cs:10:9:10:32 | ...; | Assert.cs:10:22:10:22 | access to local variable s | | +| Assert.cs:9:9:9:33 | ... ...; | Assert.cs:9:16:9:32 | Before String s = ... | | +| Assert.cs:9:9:9:33 | After ... ...; | Assert.cs:10:9:10:32 | ...; | | +| Assert.cs:9:16:9:16 | access to local variable s | Assert.cs:9:20:9:32 | ... ? ... : ... | | +| Assert.cs:9:16:9:32 | After String s = ... | Assert.cs:9:9:9:33 | After ... ...; | | +| Assert.cs:9:16:9:32 | Before String s = ... | Assert.cs:9:16:9:16 | access to local variable s | | +| Assert.cs:9:16:9:32 | String s = ... | Assert.cs:9:16:9:32 | After String s = ... | | +| Assert.cs:9:20:9:20 | After access to parameter b [false] | Assert.cs:9:31:9:32 | "" | | +| Assert.cs:9:20:9:20 | After access to parameter b [true] | Assert.cs:9:24:9:27 | null | | +| Assert.cs:9:20:9:20 | access to parameter b | Assert.cs:9:20:9:20 | After access to parameter b [false] | false | +| Assert.cs:9:20:9:20 | access to parameter b | Assert.cs:9:20:9:20 | After access to parameter b [true] | true | +| Assert.cs:9:20:9:32 | ... ? ... : ... | Assert.cs:9:20:9:20 | access to parameter b | | +| Assert.cs:9:20:9:32 | After ... ? ... : ... | Assert.cs:9:16:9:32 | String s = ... | | +| Assert.cs:9:24:9:27 | null | Assert.cs:9:20:9:32 | After ... ? ... : ... | | +| Assert.cs:9:31:9:32 | "" | Assert.cs:9:20:9:32 | After ... ? ... : ... | | +| Assert.cs:10:9:10:31 | After call to method Assert | Assert.cs:10:9:10:32 | After ...; | | +| Assert.cs:10:9:10:31 | Before call to method Assert | Assert.cs:10:22:10:30 | Before ... != ... | | +| Assert.cs:10:9:10:31 | call to method Assert | Assert.cs:7:10:7:11 | Exceptional Exit | exception | +| Assert.cs:10:9:10:31 | call to method Assert | Assert.cs:10:9:10:31 | After call to method Assert | | +| Assert.cs:10:9:10:32 | ...; | Assert.cs:10:9:10:31 | Before call to method Assert | | +| Assert.cs:10:9:10:32 | After ...; | Assert.cs:11:9:11:36 | ...; | | | Assert.cs:10:22:10:22 | access to local variable s | Assert.cs:10:27:10:30 | null | | -| Assert.cs:10:22:10:30 | ... != ... | Assert.cs:10:9:10:31 | call to method Assert | | +| Assert.cs:10:22:10:30 | ... != ... | Assert.cs:10:22:10:30 | After ... != ... | | +| Assert.cs:10:22:10:30 | After ... != ... | Assert.cs:10:9:10:31 | call to method Assert | | +| Assert.cs:10:22:10:30 | Before ... != ... | Assert.cs:10:22:10:22 | access to local variable s | | | Assert.cs:10:27:10:30 | null | Assert.cs:10:22:10:30 | ... != ... | | -| Assert.cs:11:9:11:35 | call to method WriteLine | Assert.cs:7:10:7:11 | exit M1 (normal) | | -| Assert.cs:11:9:11:36 | ...; | Assert.cs:11:27:11:27 | access to local variable s | | +| Assert.cs:11:9:11:35 | After call to method WriteLine | Assert.cs:11:9:11:36 | After ...; | | +| Assert.cs:11:9:11:35 | Before call to method WriteLine | Assert.cs:11:27:11:34 | Before access to property Length | | +| Assert.cs:11:9:11:35 | call to method WriteLine | Assert.cs:11:9:11:35 | After call to method WriteLine | | +| Assert.cs:11:9:11:36 | ...; | Assert.cs:11:9:11:35 | Before call to method WriteLine | | +| Assert.cs:11:9:11:36 | After ...; | Assert.cs:8:5:12:5 | After {...} | | | Assert.cs:11:27:11:27 | access to local variable s | Assert.cs:11:27:11:34 | access to property Length | | -| Assert.cs:11:27:11:34 | access to property Length | Assert.cs:11:9:11:35 | call to method WriteLine | | -| Assert.cs:14:10:14:11 | enter M2 | Assert.cs:15:5:19:5 | {...} | | -| Assert.cs:14:10:14:11 | exit M2 (abnormal) | Assert.cs:14:10:14:11 | exit M2 | | -| Assert.cs:14:10:14:11 | exit M2 (normal) | Assert.cs:14:10:14:11 | exit M2 | | +| Assert.cs:11:27:11:34 | After access to property Length | Assert.cs:11:9:11:35 | call to method WriteLine | | +| Assert.cs:11:27:11:34 | Before access to property Length | Assert.cs:11:27:11:27 | access to local variable s | | +| Assert.cs:11:27:11:34 | access to property Length | Assert.cs:11:27:11:34 | After access to property Length | | +| Assert.cs:14:10:14:11 | Entry | Assert.cs:14:18:14:18 | b | | +| Assert.cs:14:10:14:11 | Exceptional Exit | Assert.cs:14:10:14:11 | Exit | | +| Assert.cs:14:10:14:11 | Normal Exit | Assert.cs:14:10:14:11 | Exit | | +| Assert.cs:14:18:14:18 | b | Assert.cs:15:5:19:5 | {...} | | +| Assert.cs:15:5:19:5 | After {...} | Assert.cs:14:10:14:11 | Normal Exit | | | Assert.cs:15:5:19:5 | {...} | Assert.cs:16:9:16:33 | ... ...; | | -| Assert.cs:16:9:16:33 | ... ...; | Assert.cs:16:20:16:20 | access to parameter b | | -| Assert.cs:16:16:16:32 | String s = ... | Assert.cs:17:9:17:25 | ...; | | -| Assert.cs:16:20:16:20 | access to parameter b | Assert.cs:16:24:16:27 | null | true | -| Assert.cs:16:20:16:20 | access to parameter b | Assert.cs:16:31:16:32 | "" | false | -| Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:16:16:16:32 | String s = ... | | -| Assert.cs:16:24:16:27 | null | Assert.cs:16:20:16:32 | ... ? ... : ... | | -| Assert.cs:16:31:16:32 | "" | Assert.cs:16:20:16:32 | ... ? ... : ... | | -| Assert.cs:17:9:17:24 | call to method IsNull | Assert.cs:14:10:14:11 | exit M2 (abnormal) | exception | -| Assert.cs:17:9:17:24 | call to method IsNull | Assert.cs:18:9:18:36 | ...; | | -| Assert.cs:17:9:17:25 | ...; | Assert.cs:17:23:17:23 | access to local variable s | | +| Assert.cs:16:9:16:33 | ... ...; | Assert.cs:16:16:16:32 | Before String s = ... | | +| Assert.cs:16:9:16:33 | After ... ...; | Assert.cs:17:9:17:25 | ...; | | +| Assert.cs:16:16:16:16 | access to local variable s | Assert.cs:16:20:16:32 | ... ? ... : ... | | +| Assert.cs:16:16:16:32 | After String s = ... | Assert.cs:16:9:16:33 | After ... ...; | | +| Assert.cs:16:16:16:32 | Before String s = ... | Assert.cs:16:16:16:16 | access to local variable s | | +| Assert.cs:16:16:16:32 | String s = ... | Assert.cs:16:16:16:32 | After String s = ... | | +| Assert.cs:16:20:16:20 | After access to parameter b [false] | Assert.cs:16:31:16:32 | "" | | +| Assert.cs:16:20:16:20 | After access to parameter b [true] | Assert.cs:16:24:16:27 | null | | +| Assert.cs:16:20:16:20 | access to parameter b | Assert.cs:16:20:16:20 | After access to parameter b [false] | false | +| Assert.cs:16:20:16:20 | access to parameter b | Assert.cs:16:20:16:20 | After access to parameter b [true] | true | +| Assert.cs:16:20:16:32 | ... ? ... : ... | Assert.cs:16:20:16:20 | access to parameter b | | +| Assert.cs:16:20:16:32 | After ... ? ... : ... | Assert.cs:16:16:16:32 | String s = ... | | +| Assert.cs:16:24:16:27 | null | Assert.cs:16:20:16:32 | After ... ? ... : ... | | +| Assert.cs:16:31:16:32 | "" | Assert.cs:16:20:16:32 | After ... ? ... : ... | | +| Assert.cs:17:9:17:24 | After call to method IsNull | Assert.cs:17:9:17:25 | After ...; | | +| Assert.cs:17:9:17:24 | Before call to method IsNull | Assert.cs:17:23:17:23 | access to local variable s | | +| Assert.cs:17:9:17:24 | call to method IsNull | Assert.cs:14:10:14:11 | Exceptional Exit | exception | +| Assert.cs:17:9:17:24 | call to method IsNull | Assert.cs:17:9:17:24 | After call to method IsNull | | +| Assert.cs:17:9:17:25 | ...; | Assert.cs:17:9:17:24 | Before call to method IsNull | | +| Assert.cs:17:9:17:25 | After ...; | Assert.cs:18:9:18:36 | ...; | | | Assert.cs:17:23:17:23 | access to local variable s | Assert.cs:17:9:17:24 | call to method IsNull | | -| Assert.cs:18:9:18:35 | call to method WriteLine | Assert.cs:14:10:14:11 | exit M2 (normal) | | -| Assert.cs:18:9:18:36 | ...; | Assert.cs:18:27:18:27 | access to local variable s | | +| Assert.cs:18:9:18:35 | After call to method WriteLine | Assert.cs:18:9:18:36 | After ...; | | +| Assert.cs:18:9:18:35 | Before call to method WriteLine | Assert.cs:18:27:18:34 | Before access to property Length | | +| Assert.cs:18:9:18:35 | call to method WriteLine | Assert.cs:18:9:18:35 | After call to method WriteLine | | +| Assert.cs:18:9:18:36 | ...; | Assert.cs:18:9:18:35 | Before call to method WriteLine | | +| Assert.cs:18:9:18:36 | After ...; | Assert.cs:15:5:19:5 | After {...} | | | Assert.cs:18:27:18:27 | access to local variable s | Assert.cs:18:27:18:34 | access to property Length | | -| Assert.cs:18:27:18:34 | access to property Length | Assert.cs:18:9:18:35 | call to method WriteLine | | -| Assert.cs:21:10:21:11 | enter M3 | Assert.cs:22:5:26:5 | {...} | | -| Assert.cs:21:10:21:11 | exit M3 (abnormal) | Assert.cs:21:10:21:11 | exit M3 | | -| Assert.cs:21:10:21:11 | exit M3 (normal) | Assert.cs:21:10:21:11 | exit M3 | | +| Assert.cs:18:27:18:34 | After access to property Length | Assert.cs:18:9:18:35 | call to method WriteLine | | +| Assert.cs:18:27:18:34 | Before access to property Length | Assert.cs:18:27:18:27 | access to local variable s | | +| Assert.cs:18:27:18:34 | access to property Length | Assert.cs:18:27:18:34 | After access to property Length | | +| Assert.cs:21:10:21:11 | Entry | Assert.cs:21:18:21:18 | b | | +| Assert.cs:21:10:21:11 | Exceptional Exit | Assert.cs:21:10:21:11 | Exit | | +| Assert.cs:21:10:21:11 | Normal Exit | Assert.cs:21:10:21:11 | Exit | | +| Assert.cs:21:18:21:18 | b | Assert.cs:22:5:26:5 | {...} | | +| Assert.cs:22:5:26:5 | After {...} | Assert.cs:21:10:21:11 | Normal Exit | | | Assert.cs:22:5:26:5 | {...} | Assert.cs:23:9:23:33 | ... ...; | | -| Assert.cs:23:9:23:33 | ... ...; | Assert.cs:23:20:23:20 | access to parameter b | | -| Assert.cs:23:16:23:32 | String s = ... | Assert.cs:24:9:24:28 | ...; | | -| Assert.cs:23:20:23:20 | access to parameter b | Assert.cs:23:24:23:27 | null | true | -| Assert.cs:23:20:23:20 | access to parameter b | Assert.cs:23:31:23:32 | "" | false | -| Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:23:16:23:32 | String s = ... | | -| Assert.cs:23:24:23:27 | null | Assert.cs:23:20:23:32 | ... ? ... : ... | | -| Assert.cs:23:31:23:32 | "" | Assert.cs:23:20:23:32 | ... ? ... : ... | | -| Assert.cs:24:9:24:27 | call to method IsNotNull | Assert.cs:21:10:21:11 | exit M3 (abnormal) | exception | -| Assert.cs:24:9:24:27 | call to method IsNotNull | Assert.cs:25:9:25:36 | ...; | | -| Assert.cs:24:9:24:28 | ...; | Assert.cs:24:26:24:26 | access to local variable s | | +| Assert.cs:23:9:23:33 | ... ...; | Assert.cs:23:16:23:32 | Before String s = ... | | +| Assert.cs:23:9:23:33 | After ... ...; | Assert.cs:24:9:24:28 | ...; | | +| Assert.cs:23:16:23:16 | access to local variable s | Assert.cs:23:20:23:32 | ... ? ... : ... | | +| Assert.cs:23:16:23:32 | After String s = ... | Assert.cs:23:9:23:33 | After ... ...; | | +| Assert.cs:23:16:23:32 | Before String s = ... | Assert.cs:23:16:23:16 | access to local variable s | | +| Assert.cs:23:16:23:32 | String s = ... | Assert.cs:23:16:23:32 | After String s = ... | | +| Assert.cs:23:20:23:20 | After access to parameter b [false] | Assert.cs:23:31:23:32 | "" | | +| Assert.cs:23:20:23:20 | After access to parameter b [true] | Assert.cs:23:24:23:27 | null | | +| Assert.cs:23:20:23:20 | access to parameter b | Assert.cs:23:20:23:20 | After access to parameter b [false] | false | +| Assert.cs:23:20:23:20 | access to parameter b | Assert.cs:23:20:23:20 | After access to parameter b [true] | true | +| Assert.cs:23:20:23:32 | ... ? ... : ... | Assert.cs:23:20:23:20 | access to parameter b | | +| Assert.cs:23:20:23:32 | After ... ? ... : ... | Assert.cs:23:16:23:32 | String s = ... | | +| Assert.cs:23:24:23:27 | null | Assert.cs:23:20:23:32 | After ... ? ... : ... | | +| Assert.cs:23:31:23:32 | "" | Assert.cs:23:20:23:32 | After ... ? ... : ... | | +| Assert.cs:24:9:24:27 | After call to method IsNotNull | Assert.cs:24:9:24:28 | After ...; | | +| Assert.cs:24:9:24:27 | Before call to method IsNotNull | Assert.cs:24:26:24:26 | access to local variable s | | +| Assert.cs:24:9:24:27 | call to method IsNotNull | Assert.cs:21:10:21:11 | Exceptional Exit | exception | +| Assert.cs:24:9:24:27 | call to method IsNotNull | Assert.cs:24:9:24:27 | After call to method IsNotNull | | +| Assert.cs:24:9:24:28 | ...; | Assert.cs:24:9:24:27 | Before call to method IsNotNull | | +| Assert.cs:24:9:24:28 | After ...; | Assert.cs:25:9:25:36 | ...; | | | Assert.cs:24:26:24:26 | access to local variable s | Assert.cs:24:9:24:27 | call to method IsNotNull | | -| Assert.cs:25:9:25:35 | call to method WriteLine | Assert.cs:21:10:21:11 | exit M3 (normal) | | -| Assert.cs:25:9:25:36 | ...; | Assert.cs:25:27:25:27 | access to local variable s | | +| Assert.cs:25:9:25:35 | After call to method WriteLine | Assert.cs:25:9:25:36 | After ...; | | +| Assert.cs:25:9:25:35 | Before call to method WriteLine | Assert.cs:25:27:25:34 | Before access to property Length | | +| Assert.cs:25:9:25:35 | call to method WriteLine | Assert.cs:25:9:25:35 | After call to method WriteLine | | +| Assert.cs:25:9:25:36 | ...; | Assert.cs:25:9:25:35 | Before call to method WriteLine | | +| Assert.cs:25:9:25:36 | After ...; | Assert.cs:22:5:26:5 | After {...} | | | Assert.cs:25:27:25:27 | access to local variable s | Assert.cs:25:27:25:34 | access to property Length | | -| Assert.cs:25:27:25:34 | access to property Length | Assert.cs:25:9:25:35 | call to method WriteLine | | -| Assert.cs:28:10:28:11 | enter M4 | Assert.cs:29:5:33:5 | {...} | | -| Assert.cs:28:10:28:11 | exit M4 (abnormal) | Assert.cs:28:10:28:11 | exit M4 | | -| Assert.cs:28:10:28:11 | exit M4 (normal) | Assert.cs:28:10:28:11 | exit M4 | | +| Assert.cs:25:27:25:34 | After access to property Length | Assert.cs:25:9:25:35 | call to method WriteLine | | +| Assert.cs:25:27:25:34 | Before access to property Length | Assert.cs:25:27:25:27 | access to local variable s | | +| Assert.cs:25:27:25:34 | access to property Length | Assert.cs:25:27:25:34 | After access to property Length | | +| Assert.cs:28:10:28:11 | Entry | Assert.cs:28:18:28:18 | b | | +| Assert.cs:28:10:28:11 | Exceptional Exit | Assert.cs:28:10:28:11 | Exit | | +| Assert.cs:28:10:28:11 | Normal Exit | Assert.cs:28:10:28:11 | Exit | | +| Assert.cs:28:18:28:18 | b | Assert.cs:29:5:33:5 | {...} | | +| Assert.cs:29:5:33:5 | After {...} | Assert.cs:28:10:28:11 | Normal Exit | | | Assert.cs:29:5:33:5 | {...} | Assert.cs:30:9:30:33 | ... ...; | | -| Assert.cs:30:9:30:33 | ... ...; | Assert.cs:30:20:30:20 | access to parameter b | | -| Assert.cs:30:16:30:32 | String s = ... | Assert.cs:31:9:31:33 | ...; | | -| Assert.cs:30:20:30:20 | access to parameter b | Assert.cs:30:24:30:27 | null | true | -| Assert.cs:30:20:30:20 | access to parameter b | Assert.cs:30:31:30:32 | "" | false | -| Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:30:16:30:32 | String s = ... | | -| Assert.cs:30:24:30:27 | null | Assert.cs:30:20:30:32 | ... ? ... : ... | | -| Assert.cs:30:31:30:32 | "" | Assert.cs:30:20:30:32 | ... ? ... : ... | | -| Assert.cs:31:9:31:32 | call to method IsTrue | Assert.cs:28:10:28:11 | exit M4 (abnormal) | exception | -| Assert.cs:31:9:31:32 | call to method IsTrue | Assert.cs:32:9:32:36 | ...; | | -| Assert.cs:31:9:31:33 | ...; | Assert.cs:31:23:31:23 | access to local variable s | | +| Assert.cs:30:9:30:33 | ... ...; | Assert.cs:30:16:30:32 | Before String s = ... | | +| Assert.cs:30:9:30:33 | After ... ...; | Assert.cs:31:9:31:33 | ...; | | +| Assert.cs:30:16:30:16 | access to local variable s | Assert.cs:30:20:30:32 | ... ? ... : ... | | +| Assert.cs:30:16:30:32 | After String s = ... | Assert.cs:30:9:30:33 | After ... ...; | | +| Assert.cs:30:16:30:32 | Before String s = ... | Assert.cs:30:16:30:16 | access to local variable s | | +| Assert.cs:30:16:30:32 | String s = ... | Assert.cs:30:16:30:32 | After String s = ... | | +| Assert.cs:30:20:30:20 | After access to parameter b [false] | Assert.cs:30:31:30:32 | "" | | +| Assert.cs:30:20:30:20 | After access to parameter b [true] | Assert.cs:30:24:30:27 | null | | +| Assert.cs:30:20:30:20 | access to parameter b | Assert.cs:30:20:30:20 | After access to parameter b [false] | false | +| Assert.cs:30:20:30:20 | access to parameter b | Assert.cs:30:20:30:20 | After access to parameter b [true] | true | +| Assert.cs:30:20:30:32 | ... ? ... : ... | Assert.cs:30:20:30:20 | access to parameter b | | +| Assert.cs:30:20:30:32 | After ... ? ... : ... | Assert.cs:30:16:30:32 | String s = ... | | +| Assert.cs:30:24:30:27 | null | Assert.cs:30:20:30:32 | After ... ? ... : ... | | +| Assert.cs:30:31:30:32 | "" | Assert.cs:30:20:30:32 | After ... ? ... : ... | | +| Assert.cs:31:9:31:32 | After call to method IsTrue | Assert.cs:31:9:31:33 | After ...; | | +| Assert.cs:31:9:31:32 | Before call to method IsTrue | Assert.cs:31:23:31:31 | Before ... == ... | | +| Assert.cs:31:9:31:32 | call to method IsTrue | Assert.cs:28:10:28:11 | Exceptional Exit | exception | +| Assert.cs:31:9:31:32 | call to method IsTrue | Assert.cs:31:9:31:32 | After call to method IsTrue | | +| Assert.cs:31:9:31:33 | ...; | Assert.cs:31:9:31:32 | Before call to method IsTrue | | +| Assert.cs:31:9:31:33 | After ...; | Assert.cs:32:9:32:36 | ...; | | | Assert.cs:31:23:31:23 | access to local variable s | Assert.cs:31:28:31:31 | null | | -| Assert.cs:31:23:31:31 | ... == ... | Assert.cs:31:9:31:32 | call to method IsTrue | | +| Assert.cs:31:23:31:31 | ... == ... | Assert.cs:31:23:31:31 | After ... == ... | | +| Assert.cs:31:23:31:31 | After ... == ... | Assert.cs:31:9:31:32 | call to method IsTrue | | +| Assert.cs:31:23:31:31 | Before ... == ... | Assert.cs:31:23:31:23 | access to local variable s | | | Assert.cs:31:28:31:31 | null | Assert.cs:31:23:31:31 | ... == ... | | -| Assert.cs:32:9:32:35 | call to method WriteLine | Assert.cs:28:10:28:11 | exit M4 (normal) | | -| Assert.cs:32:9:32:36 | ...; | Assert.cs:32:27:32:27 | access to local variable s | | +| Assert.cs:32:9:32:35 | After call to method WriteLine | Assert.cs:32:9:32:36 | After ...; | | +| Assert.cs:32:9:32:35 | Before call to method WriteLine | Assert.cs:32:27:32:34 | Before access to property Length | | +| Assert.cs:32:9:32:35 | call to method WriteLine | Assert.cs:32:9:32:35 | After call to method WriteLine | | +| Assert.cs:32:9:32:36 | ...; | Assert.cs:32:9:32:35 | Before call to method WriteLine | | +| Assert.cs:32:9:32:36 | After ...; | Assert.cs:29:5:33:5 | After {...} | | | Assert.cs:32:27:32:27 | access to local variable s | Assert.cs:32:27:32:34 | access to property Length | | -| Assert.cs:32:27:32:34 | access to property Length | Assert.cs:32:9:32:35 | call to method WriteLine | | -| Assert.cs:35:10:35:11 | enter M5 | Assert.cs:36:5:40:5 | {...} | | -| Assert.cs:35:10:35:11 | exit M5 (abnormal) | Assert.cs:35:10:35:11 | exit M5 | | -| Assert.cs:35:10:35:11 | exit M5 (normal) | Assert.cs:35:10:35:11 | exit M5 | | +| Assert.cs:32:27:32:34 | After access to property Length | Assert.cs:32:9:32:35 | call to method WriteLine | | +| Assert.cs:32:27:32:34 | Before access to property Length | Assert.cs:32:27:32:27 | access to local variable s | | +| Assert.cs:32:27:32:34 | access to property Length | Assert.cs:32:27:32:34 | After access to property Length | | +| Assert.cs:35:10:35:11 | Entry | Assert.cs:35:18:35:18 | b | | +| Assert.cs:35:10:35:11 | Exceptional Exit | Assert.cs:35:10:35:11 | Exit | | +| Assert.cs:35:10:35:11 | Normal Exit | Assert.cs:35:10:35:11 | Exit | | +| Assert.cs:35:18:35:18 | b | Assert.cs:36:5:40:5 | {...} | | +| Assert.cs:36:5:40:5 | After {...} | Assert.cs:35:10:35:11 | Normal Exit | | | Assert.cs:36:5:40:5 | {...} | Assert.cs:37:9:37:33 | ... ...; | | -| Assert.cs:37:9:37:33 | ... ...; | Assert.cs:37:20:37:20 | access to parameter b | | -| Assert.cs:37:16:37:32 | String s = ... | Assert.cs:38:9:38:33 | ...; | | -| Assert.cs:37:20:37:20 | access to parameter b | Assert.cs:37:24:37:27 | null | true | -| Assert.cs:37:20:37:20 | access to parameter b | Assert.cs:37:31:37:32 | "" | false | -| Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:37:16:37:32 | String s = ... | | -| Assert.cs:37:24:37:27 | null | Assert.cs:37:20:37:32 | ... ? ... : ... | | -| Assert.cs:37:31:37:32 | "" | Assert.cs:37:20:37:32 | ... ? ... : ... | | -| Assert.cs:38:9:38:32 | call to method IsTrue | Assert.cs:35:10:35:11 | exit M5 (abnormal) | exception | -| Assert.cs:38:9:38:32 | call to method IsTrue | Assert.cs:39:9:39:36 | ...; | | -| Assert.cs:38:9:38:33 | ...; | Assert.cs:38:23:38:23 | access to local variable s | | +| Assert.cs:37:9:37:33 | ... ...; | Assert.cs:37:16:37:32 | Before String s = ... | | +| Assert.cs:37:9:37:33 | After ... ...; | Assert.cs:38:9:38:33 | ...; | | +| Assert.cs:37:16:37:16 | access to local variable s | Assert.cs:37:20:37:32 | ... ? ... : ... | | +| Assert.cs:37:16:37:32 | After String s = ... | Assert.cs:37:9:37:33 | After ... ...; | | +| Assert.cs:37:16:37:32 | Before String s = ... | Assert.cs:37:16:37:16 | access to local variable s | | +| Assert.cs:37:16:37:32 | String s = ... | Assert.cs:37:16:37:32 | After String s = ... | | +| Assert.cs:37:20:37:20 | After access to parameter b [false] | Assert.cs:37:31:37:32 | "" | | +| Assert.cs:37:20:37:20 | After access to parameter b [true] | Assert.cs:37:24:37:27 | null | | +| Assert.cs:37:20:37:20 | access to parameter b | Assert.cs:37:20:37:20 | After access to parameter b [false] | false | +| Assert.cs:37:20:37:20 | access to parameter b | Assert.cs:37:20:37:20 | After access to parameter b [true] | true | +| Assert.cs:37:20:37:32 | ... ? ... : ... | Assert.cs:37:20:37:20 | access to parameter b | | +| Assert.cs:37:20:37:32 | After ... ? ... : ... | Assert.cs:37:16:37:32 | String s = ... | | +| Assert.cs:37:24:37:27 | null | Assert.cs:37:20:37:32 | After ... ? ... : ... | | +| Assert.cs:37:31:37:32 | "" | Assert.cs:37:20:37:32 | After ... ? ... : ... | | +| Assert.cs:38:9:38:32 | After call to method IsTrue | Assert.cs:38:9:38:33 | After ...; | | +| Assert.cs:38:9:38:32 | Before call to method IsTrue | Assert.cs:38:23:38:31 | Before ... != ... | | +| Assert.cs:38:9:38:32 | call to method IsTrue | Assert.cs:35:10:35:11 | Exceptional Exit | exception | +| Assert.cs:38:9:38:32 | call to method IsTrue | Assert.cs:38:9:38:32 | After call to method IsTrue | | +| Assert.cs:38:9:38:33 | ...; | Assert.cs:38:9:38:32 | Before call to method IsTrue | | +| Assert.cs:38:9:38:33 | After ...; | Assert.cs:39:9:39:36 | ...; | | | Assert.cs:38:23:38:23 | access to local variable s | Assert.cs:38:28:38:31 | null | | -| Assert.cs:38:23:38:31 | ... != ... | Assert.cs:38:9:38:32 | call to method IsTrue | | +| Assert.cs:38:23:38:31 | ... != ... | Assert.cs:38:23:38:31 | After ... != ... | | +| Assert.cs:38:23:38:31 | After ... != ... | Assert.cs:38:9:38:32 | call to method IsTrue | | +| Assert.cs:38:23:38:31 | Before ... != ... | Assert.cs:38:23:38:23 | access to local variable s | | | Assert.cs:38:28:38:31 | null | Assert.cs:38:23:38:31 | ... != ... | | -| Assert.cs:39:9:39:35 | call to method WriteLine | Assert.cs:35:10:35:11 | exit M5 (normal) | | -| Assert.cs:39:9:39:36 | ...; | Assert.cs:39:27:39:27 | access to local variable s | | +| Assert.cs:39:9:39:35 | After call to method WriteLine | Assert.cs:39:9:39:36 | After ...; | | +| Assert.cs:39:9:39:35 | Before call to method WriteLine | Assert.cs:39:27:39:34 | Before access to property Length | | +| Assert.cs:39:9:39:35 | call to method WriteLine | Assert.cs:39:9:39:35 | After call to method WriteLine | | +| Assert.cs:39:9:39:36 | ...; | Assert.cs:39:9:39:35 | Before call to method WriteLine | | +| Assert.cs:39:9:39:36 | After ...; | Assert.cs:36:5:40:5 | After {...} | | | Assert.cs:39:27:39:27 | access to local variable s | Assert.cs:39:27:39:34 | access to property Length | | -| Assert.cs:39:27:39:34 | access to property Length | Assert.cs:39:9:39:35 | call to method WriteLine | | -| Assert.cs:42:10:42:11 | enter M6 | Assert.cs:43:5:47:5 | {...} | | -| Assert.cs:42:10:42:11 | exit M6 (abnormal) | Assert.cs:42:10:42:11 | exit M6 | | -| Assert.cs:42:10:42:11 | exit M6 (normal) | Assert.cs:42:10:42:11 | exit M6 | | +| Assert.cs:39:27:39:34 | After access to property Length | Assert.cs:39:9:39:35 | call to method WriteLine | | +| Assert.cs:39:27:39:34 | Before access to property Length | Assert.cs:39:27:39:27 | access to local variable s | | +| Assert.cs:39:27:39:34 | access to property Length | Assert.cs:39:27:39:34 | After access to property Length | | +| Assert.cs:42:10:42:11 | Entry | Assert.cs:42:18:42:18 | b | | +| Assert.cs:42:10:42:11 | Exceptional Exit | Assert.cs:42:10:42:11 | Exit | | +| Assert.cs:42:10:42:11 | Normal Exit | Assert.cs:42:10:42:11 | Exit | | +| Assert.cs:42:18:42:18 | b | Assert.cs:43:5:47:5 | {...} | | +| Assert.cs:43:5:47:5 | After {...} | Assert.cs:42:10:42:11 | Normal Exit | | | Assert.cs:43:5:47:5 | {...} | Assert.cs:44:9:44:33 | ... ...; | | -| Assert.cs:44:9:44:33 | ... ...; | Assert.cs:44:20:44:20 | access to parameter b | | -| Assert.cs:44:16:44:32 | String s = ... | Assert.cs:45:9:45:34 | ...; | | -| Assert.cs:44:20:44:20 | access to parameter b | Assert.cs:44:24:44:27 | null | true | -| Assert.cs:44:20:44:20 | access to parameter b | Assert.cs:44:31:44:32 | "" | false | -| Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:44:16:44:32 | String s = ... | | -| Assert.cs:44:24:44:27 | null | Assert.cs:44:20:44:32 | ... ? ... : ... | | -| Assert.cs:44:31:44:32 | "" | Assert.cs:44:20:44:32 | ... ? ... : ... | | -| Assert.cs:45:9:45:33 | call to method IsFalse | Assert.cs:42:10:42:11 | exit M6 (abnormal) | exception | -| Assert.cs:45:9:45:33 | call to method IsFalse | Assert.cs:46:9:46:36 | ...; | | -| Assert.cs:45:9:45:34 | ...; | Assert.cs:45:24:45:24 | access to local variable s | | +| Assert.cs:44:9:44:33 | ... ...; | Assert.cs:44:16:44:32 | Before String s = ... | | +| Assert.cs:44:9:44:33 | After ... ...; | Assert.cs:45:9:45:34 | ...; | | +| Assert.cs:44:16:44:16 | access to local variable s | Assert.cs:44:20:44:32 | ... ? ... : ... | | +| Assert.cs:44:16:44:32 | After String s = ... | Assert.cs:44:9:44:33 | After ... ...; | | +| Assert.cs:44:16:44:32 | Before String s = ... | Assert.cs:44:16:44:16 | access to local variable s | | +| Assert.cs:44:16:44:32 | String s = ... | Assert.cs:44:16:44:32 | After String s = ... | | +| Assert.cs:44:20:44:20 | After access to parameter b [false] | Assert.cs:44:31:44:32 | "" | | +| Assert.cs:44:20:44:20 | After access to parameter b [true] | Assert.cs:44:24:44:27 | null | | +| Assert.cs:44:20:44:20 | access to parameter b | Assert.cs:44:20:44:20 | After access to parameter b [false] | false | +| Assert.cs:44:20:44:20 | access to parameter b | Assert.cs:44:20:44:20 | After access to parameter b [true] | true | +| Assert.cs:44:20:44:32 | ... ? ... : ... | Assert.cs:44:20:44:20 | access to parameter b | | +| Assert.cs:44:20:44:32 | After ... ? ... : ... | Assert.cs:44:16:44:32 | String s = ... | | +| Assert.cs:44:24:44:27 | null | Assert.cs:44:20:44:32 | After ... ? ... : ... | | +| Assert.cs:44:31:44:32 | "" | Assert.cs:44:20:44:32 | After ... ? ... : ... | | +| Assert.cs:45:9:45:33 | After call to method IsFalse | Assert.cs:45:9:45:34 | After ...; | | +| Assert.cs:45:9:45:33 | Before call to method IsFalse | Assert.cs:45:24:45:32 | Before ... != ... | | +| Assert.cs:45:9:45:33 | call to method IsFalse | Assert.cs:42:10:42:11 | Exceptional Exit | exception | +| Assert.cs:45:9:45:33 | call to method IsFalse | Assert.cs:45:9:45:33 | After call to method IsFalse | | +| Assert.cs:45:9:45:34 | ...; | Assert.cs:45:9:45:33 | Before call to method IsFalse | | +| Assert.cs:45:9:45:34 | After ...; | Assert.cs:46:9:46:36 | ...; | | | Assert.cs:45:24:45:24 | access to local variable s | Assert.cs:45:29:45:32 | null | | -| Assert.cs:45:24:45:32 | ... != ... | Assert.cs:45:9:45:33 | call to method IsFalse | | +| Assert.cs:45:24:45:32 | ... != ... | Assert.cs:45:24:45:32 | After ... != ... | | +| Assert.cs:45:24:45:32 | After ... != ... | Assert.cs:45:9:45:33 | call to method IsFalse | | +| Assert.cs:45:24:45:32 | Before ... != ... | Assert.cs:45:24:45:24 | access to local variable s | | | Assert.cs:45:29:45:32 | null | Assert.cs:45:24:45:32 | ... != ... | | -| Assert.cs:46:9:46:35 | call to method WriteLine | Assert.cs:42:10:42:11 | exit M6 (normal) | | -| Assert.cs:46:9:46:36 | ...; | Assert.cs:46:27:46:27 | access to local variable s | | +| Assert.cs:46:9:46:35 | After call to method WriteLine | Assert.cs:46:9:46:36 | After ...; | | +| Assert.cs:46:9:46:35 | Before call to method WriteLine | Assert.cs:46:27:46:34 | Before access to property Length | | +| Assert.cs:46:9:46:35 | call to method WriteLine | Assert.cs:46:9:46:35 | After call to method WriteLine | | +| Assert.cs:46:9:46:36 | ...; | Assert.cs:46:9:46:35 | Before call to method WriteLine | | +| Assert.cs:46:9:46:36 | After ...; | Assert.cs:43:5:47:5 | After {...} | | | Assert.cs:46:27:46:27 | access to local variable s | Assert.cs:46:27:46:34 | access to property Length | | -| Assert.cs:46:27:46:34 | access to property Length | Assert.cs:46:9:46:35 | call to method WriteLine | | -| Assert.cs:49:10:49:11 | enter M7 | Assert.cs:50:5:54:5 | {...} | | -| Assert.cs:49:10:49:11 | exit M7 (abnormal) | Assert.cs:49:10:49:11 | exit M7 | | -| Assert.cs:49:10:49:11 | exit M7 (normal) | Assert.cs:49:10:49:11 | exit M7 | | +| Assert.cs:46:27:46:34 | After access to property Length | Assert.cs:46:9:46:35 | call to method WriteLine | | +| Assert.cs:46:27:46:34 | Before access to property Length | Assert.cs:46:27:46:27 | access to local variable s | | +| Assert.cs:46:27:46:34 | access to property Length | Assert.cs:46:27:46:34 | After access to property Length | | +| Assert.cs:49:10:49:11 | Entry | Assert.cs:49:18:49:18 | b | | +| Assert.cs:49:10:49:11 | Exceptional Exit | Assert.cs:49:10:49:11 | Exit | | +| Assert.cs:49:10:49:11 | Normal Exit | Assert.cs:49:10:49:11 | Exit | | +| Assert.cs:49:18:49:18 | b | Assert.cs:50:5:54:5 | {...} | | +| Assert.cs:50:5:54:5 | After {...} | Assert.cs:49:10:49:11 | Normal Exit | | | Assert.cs:50:5:54:5 | {...} | Assert.cs:51:9:51:33 | ... ...; | | -| Assert.cs:51:9:51:33 | ... ...; | Assert.cs:51:20:51:20 | access to parameter b | | -| Assert.cs:51:16:51:32 | String s = ... | Assert.cs:52:9:52:34 | ...; | | -| Assert.cs:51:20:51:20 | access to parameter b | Assert.cs:51:24:51:27 | null | true | -| Assert.cs:51:20:51:20 | access to parameter b | Assert.cs:51:31:51:32 | "" | false | -| Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:51:16:51:32 | String s = ... | | -| Assert.cs:51:24:51:27 | null | Assert.cs:51:20:51:32 | ... ? ... : ... | | -| Assert.cs:51:31:51:32 | "" | Assert.cs:51:20:51:32 | ... ? ... : ... | | -| Assert.cs:52:9:52:33 | call to method IsFalse | Assert.cs:49:10:49:11 | exit M7 (abnormal) | exception | -| Assert.cs:52:9:52:33 | call to method IsFalse | Assert.cs:53:9:53:36 | ...; | | -| Assert.cs:52:9:52:34 | ...; | Assert.cs:52:24:52:24 | access to local variable s | | +| Assert.cs:51:9:51:33 | ... ...; | Assert.cs:51:16:51:32 | Before String s = ... | | +| Assert.cs:51:9:51:33 | After ... ...; | Assert.cs:52:9:52:34 | ...; | | +| Assert.cs:51:16:51:16 | access to local variable s | Assert.cs:51:20:51:32 | ... ? ... : ... | | +| Assert.cs:51:16:51:32 | After String s = ... | Assert.cs:51:9:51:33 | After ... ...; | | +| Assert.cs:51:16:51:32 | Before String s = ... | Assert.cs:51:16:51:16 | access to local variable s | | +| Assert.cs:51:16:51:32 | String s = ... | Assert.cs:51:16:51:32 | After String s = ... | | +| Assert.cs:51:20:51:20 | After access to parameter b [false] | Assert.cs:51:31:51:32 | "" | | +| Assert.cs:51:20:51:20 | After access to parameter b [true] | Assert.cs:51:24:51:27 | null | | +| Assert.cs:51:20:51:20 | access to parameter b | Assert.cs:51:20:51:20 | After access to parameter b [false] | false | +| Assert.cs:51:20:51:20 | access to parameter b | Assert.cs:51:20:51:20 | After access to parameter b [true] | true | +| Assert.cs:51:20:51:32 | ... ? ... : ... | Assert.cs:51:20:51:20 | access to parameter b | | +| Assert.cs:51:20:51:32 | After ... ? ... : ... | Assert.cs:51:16:51:32 | String s = ... | | +| Assert.cs:51:24:51:27 | null | Assert.cs:51:20:51:32 | After ... ? ... : ... | | +| Assert.cs:51:31:51:32 | "" | Assert.cs:51:20:51:32 | After ... ? ... : ... | | +| Assert.cs:52:9:52:33 | After call to method IsFalse | Assert.cs:52:9:52:34 | After ...; | | +| Assert.cs:52:9:52:33 | Before call to method IsFalse | Assert.cs:52:24:52:32 | Before ... == ... | | +| Assert.cs:52:9:52:33 | call to method IsFalse | Assert.cs:49:10:49:11 | Exceptional Exit | exception | +| Assert.cs:52:9:52:33 | call to method IsFalse | Assert.cs:52:9:52:33 | After call to method IsFalse | | +| Assert.cs:52:9:52:34 | ...; | Assert.cs:52:9:52:33 | Before call to method IsFalse | | +| Assert.cs:52:9:52:34 | After ...; | Assert.cs:53:9:53:36 | ...; | | | Assert.cs:52:24:52:24 | access to local variable s | Assert.cs:52:29:52:32 | null | | -| Assert.cs:52:24:52:32 | ... == ... | Assert.cs:52:9:52:33 | call to method IsFalse | | +| Assert.cs:52:24:52:32 | ... == ... | Assert.cs:52:24:52:32 | After ... == ... | | +| Assert.cs:52:24:52:32 | After ... == ... | Assert.cs:52:9:52:33 | call to method IsFalse | | +| Assert.cs:52:24:52:32 | Before ... == ... | Assert.cs:52:24:52:24 | access to local variable s | | | Assert.cs:52:29:52:32 | null | Assert.cs:52:24:52:32 | ... == ... | | -| Assert.cs:53:9:53:35 | call to method WriteLine | Assert.cs:49:10:49:11 | exit M7 (normal) | | -| Assert.cs:53:9:53:36 | ...; | Assert.cs:53:27:53:27 | access to local variable s | | +| Assert.cs:53:9:53:35 | After call to method WriteLine | Assert.cs:53:9:53:36 | After ...; | | +| Assert.cs:53:9:53:35 | Before call to method WriteLine | Assert.cs:53:27:53:34 | Before access to property Length | | +| Assert.cs:53:9:53:35 | call to method WriteLine | Assert.cs:53:9:53:35 | After call to method WriteLine | | +| Assert.cs:53:9:53:36 | ...; | Assert.cs:53:9:53:35 | Before call to method WriteLine | | +| Assert.cs:53:9:53:36 | After ...; | Assert.cs:50:5:54:5 | After {...} | | | Assert.cs:53:27:53:27 | access to local variable s | Assert.cs:53:27:53:34 | access to property Length | | -| Assert.cs:53:27:53:34 | access to property Length | Assert.cs:53:9:53:35 | call to method WriteLine | | -| Assert.cs:56:10:56:11 | enter M8 | Assert.cs:57:5:61:5 | {...} | | -| Assert.cs:56:10:56:11 | exit M8 (abnormal) | Assert.cs:56:10:56:11 | exit M8 | | -| Assert.cs:56:10:56:11 | exit M8 (normal) | Assert.cs:56:10:56:11 | exit M8 | | +| Assert.cs:53:27:53:34 | After access to property Length | Assert.cs:53:9:53:35 | call to method WriteLine | | +| Assert.cs:53:27:53:34 | Before access to property Length | Assert.cs:53:27:53:27 | access to local variable s | | +| Assert.cs:53:27:53:34 | access to property Length | Assert.cs:53:27:53:34 | After access to property Length | | +| Assert.cs:56:10:56:11 | Entry | Assert.cs:56:18:56:18 | b | | +| Assert.cs:56:10:56:11 | Exceptional Exit | Assert.cs:56:10:56:11 | Exit | | +| Assert.cs:56:10:56:11 | Normal Exit | Assert.cs:56:10:56:11 | Exit | | +| Assert.cs:56:18:56:18 | b | Assert.cs:57:5:61:5 | {...} | | +| Assert.cs:57:5:61:5 | After {...} | Assert.cs:56:10:56:11 | Normal Exit | | | Assert.cs:57:5:61:5 | {...} | Assert.cs:58:9:58:33 | ... ...; | | -| Assert.cs:58:9:58:33 | ... ...; | Assert.cs:58:20:58:20 | access to parameter b | | -| Assert.cs:58:16:58:32 | String s = ... | Assert.cs:59:9:59:38 | ...; | | -| Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:24:58:27 | null | true | -| Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:31:58:32 | "" | false | -| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:16:58:32 | String s = ... | | -| Assert.cs:58:24:58:27 | null | Assert.cs:58:20:58:32 | ... ? ... : ... | | -| Assert.cs:58:31:58:32 | "" | Assert.cs:58:20:58:32 | ... ? ... : ... | | -| Assert.cs:59:9:59:37 | call to method IsTrue | Assert.cs:56:10:56:11 | exit M8 (abnormal) | exception | -| Assert.cs:59:9:59:37 | call to method IsTrue | Assert.cs:60:9:60:36 | ...; | | -| Assert.cs:59:9:59:38 | ...; | Assert.cs:59:23:59:23 | access to local variable s | | +| Assert.cs:58:9:58:33 | ... ...; | Assert.cs:58:16:58:32 | Before String s = ... | | +| Assert.cs:58:9:58:33 | After ... ...; | Assert.cs:59:9:59:38 | ...; | | +| Assert.cs:58:16:58:16 | access to local variable s | Assert.cs:58:20:58:32 | ... ? ... : ... | | +| Assert.cs:58:16:58:32 | After String s = ... | Assert.cs:58:9:58:33 | After ... ...; | | +| Assert.cs:58:16:58:32 | Before String s = ... | Assert.cs:58:16:58:16 | access to local variable s | | +| Assert.cs:58:16:58:32 | String s = ... | Assert.cs:58:16:58:32 | After String s = ... | | +| Assert.cs:58:20:58:20 | After access to parameter b [false] | Assert.cs:58:31:58:32 | "" | | +| Assert.cs:58:20:58:20 | After access to parameter b [true] | Assert.cs:58:24:58:27 | null | | +| Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:20:58:20 | After access to parameter b [false] | false | +| Assert.cs:58:20:58:20 | access to parameter b | Assert.cs:58:20:58:20 | After access to parameter b [true] | true | +| Assert.cs:58:20:58:32 | ... ? ... : ... | Assert.cs:58:20:58:20 | access to parameter b | | +| Assert.cs:58:20:58:32 | After ... ? ... : ... | Assert.cs:58:16:58:32 | String s = ... | | +| Assert.cs:58:24:58:27 | null | Assert.cs:58:20:58:32 | After ... ? ... : ... | | +| Assert.cs:58:31:58:32 | "" | Assert.cs:58:20:58:32 | After ... ? ... : ... | | +| Assert.cs:59:9:59:37 | After call to method IsTrue | Assert.cs:59:9:59:38 | After ...; | | +| Assert.cs:59:9:59:37 | Before call to method IsTrue | Assert.cs:59:23:59:36 | ... && ... | | +| Assert.cs:59:9:59:37 | call to method IsTrue | Assert.cs:56:10:56:11 | Exceptional Exit | exception | +| Assert.cs:59:9:59:37 | call to method IsTrue | Assert.cs:59:9:59:37 | After call to method IsTrue | | +| Assert.cs:59:9:59:38 | ...; | Assert.cs:59:9:59:37 | Before call to method IsTrue | | +| Assert.cs:59:9:59:38 | After ...; | Assert.cs:60:9:60:36 | ...; | | | Assert.cs:59:23:59:23 | access to local variable s | Assert.cs:59:28:59:31 | null | | -| Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:23:59:36 | ... && ... | false | -| Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:36:59:36 | access to parameter b | true | -| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:59:9:59:37 | call to method IsTrue | | +| Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:23:59:31 | After ... != ... [false] | false | +| Assert.cs:59:23:59:31 | ... != ... | Assert.cs:59:23:59:31 | After ... != ... [true] | true | +| Assert.cs:59:23:59:31 | After ... != ... [false] | Assert.cs:59:23:59:36 | After ... && ... | | +| Assert.cs:59:23:59:31 | After ... != ... [true] | Assert.cs:59:36:59:36 | access to parameter b | | +| Assert.cs:59:23:59:31 | Before ... != ... | Assert.cs:59:23:59:23 | access to local variable s | | +| Assert.cs:59:23:59:36 | ... && ... | Assert.cs:59:23:59:31 | Before ... != ... | | +| Assert.cs:59:23:59:36 | After ... && ... | Assert.cs:59:9:59:37 | call to method IsTrue | | | Assert.cs:59:28:59:31 | null | Assert.cs:59:23:59:31 | ... != ... | | -| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:23:59:36 | ... && ... | | -| Assert.cs:60:9:60:35 | call to method WriteLine | Assert.cs:56:10:56:11 | exit M8 (normal) | | -| Assert.cs:60:9:60:36 | ...; | Assert.cs:60:27:60:27 | access to local variable s | | +| Assert.cs:59:36:59:36 | access to parameter b | Assert.cs:59:23:59:36 | After ... && ... | | +| Assert.cs:60:9:60:35 | After call to method WriteLine | Assert.cs:60:9:60:36 | After ...; | | +| Assert.cs:60:9:60:35 | Before call to method WriteLine | Assert.cs:60:27:60:34 | Before access to property Length | | +| Assert.cs:60:9:60:35 | call to method WriteLine | Assert.cs:60:9:60:35 | After call to method WriteLine | | +| Assert.cs:60:9:60:36 | ...; | Assert.cs:60:9:60:35 | Before call to method WriteLine | | +| Assert.cs:60:9:60:36 | After ...; | Assert.cs:57:5:61:5 | After {...} | | | Assert.cs:60:27:60:27 | access to local variable s | Assert.cs:60:27:60:34 | access to property Length | | -| Assert.cs:60:27:60:34 | access to property Length | Assert.cs:60:9:60:35 | call to method WriteLine | | -| Assert.cs:63:10:63:11 | enter M9 | Assert.cs:64:5:68:5 | {...} | | -| Assert.cs:63:10:63:11 | exit M9 (abnormal) | Assert.cs:63:10:63:11 | exit M9 | | -| Assert.cs:63:10:63:11 | exit M9 (normal) | Assert.cs:63:10:63:11 | exit M9 | | +| Assert.cs:60:27:60:34 | After access to property Length | Assert.cs:60:9:60:35 | call to method WriteLine | | +| Assert.cs:60:27:60:34 | Before access to property Length | Assert.cs:60:27:60:27 | access to local variable s | | +| Assert.cs:60:27:60:34 | access to property Length | Assert.cs:60:27:60:34 | After access to property Length | | +| Assert.cs:63:10:63:11 | Entry | Assert.cs:63:18:63:18 | b | | +| Assert.cs:63:10:63:11 | Exceptional Exit | Assert.cs:63:10:63:11 | Exit | | +| Assert.cs:63:10:63:11 | Normal Exit | Assert.cs:63:10:63:11 | Exit | | +| Assert.cs:63:18:63:18 | b | Assert.cs:64:5:68:5 | {...} | | +| Assert.cs:64:5:68:5 | After {...} | Assert.cs:63:10:63:11 | Normal Exit | | | Assert.cs:64:5:68:5 | {...} | Assert.cs:65:9:65:33 | ... ...; | | -| Assert.cs:65:9:65:33 | ... ...; | Assert.cs:65:20:65:20 | access to parameter b | | -| Assert.cs:65:16:65:32 | String s = ... | Assert.cs:66:9:66:39 | ...; | | -| Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:24:65:27 | null | true | -| Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:31:65:32 | "" | false | -| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:16:65:32 | String s = ... | | -| Assert.cs:65:24:65:27 | null | Assert.cs:65:20:65:32 | ... ? ... : ... | | -| Assert.cs:65:31:65:32 | "" | Assert.cs:65:20:65:32 | ... ? ... : ... | | -| Assert.cs:66:9:66:38 | call to method IsFalse | Assert.cs:63:10:63:11 | exit M9 (abnormal) | exception | -| Assert.cs:66:9:66:38 | call to method IsFalse | Assert.cs:67:9:67:36 | ...; | | -| Assert.cs:66:9:66:39 | ...; | Assert.cs:66:24:66:24 | access to local variable s | | +| Assert.cs:65:9:65:33 | ... ...; | Assert.cs:65:16:65:32 | Before String s = ... | | +| Assert.cs:65:9:65:33 | After ... ...; | Assert.cs:66:9:66:39 | ...; | | +| Assert.cs:65:16:65:16 | access to local variable s | Assert.cs:65:20:65:32 | ... ? ... : ... | | +| Assert.cs:65:16:65:32 | After String s = ... | Assert.cs:65:9:65:33 | After ... ...; | | +| Assert.cs:65:16:65:32 | Before String s = ... | Assert.cs:65:16:65:16 | access to local variable s | | +| Assert.cs:65:16:65:32 | String s = ... | Assert.cs:65:16:65:32 | After String s = ... | | +| Assert.cs:65:20:65:20 | After access to parameter b [false] | Assert.cs:65:31:65:32 | "" | | +| Assert.cs:65:20:65:20 | After access to parameter b [true] | Assert.cs:65:24:65:27 | null | | +| Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:20:65:20 | After access to parameter b [false] | false | +| Assert.cs:65:20:65:20 | access to parameter b | Assert.cs:65:20:65:20 | After access to parameter b [true] | true | +| Assert.cs:65:20:65:32 | ... ? ... : ... | Assert.cs:65:20:65:20 | access to parameter b | | +| Assert.cs:65:20:65:32 | After ... ? ... : ... | Assert.cs:65:16:65:32 | String s = ... | | +| Assert.cs:65:24:65:27 | null | Assert.cs:65:20:65:32 | After ... ? ... : ... | | +| Assert.cs:65:31:65:32 | "" | Assert.cs:65:20:65:32 | After ... ? ... : ... | | +| Assert.cs:66:9:66:38 | After call to method IsFalse | Assert.cs:66:9:66:39 | After ...; | | +| Assert.cs:66:9:66:38 | Before call to method IsFalse | Assert.cs:66:24:66:37 | ... \|\| ... | | +| Assert.cs:66:9:66:38 | call to method IsFalse | Assert.cs:63:10:63:11 | Exceptional Exit | exception | +| Assert.cs:66:9:66:38 | call to method IsFalse | Assert.cs:66:9:66:38 | After call to method IsFalse | | +| Assert.cs:66:9:66:39 | ...; | Assert.cs:66:9:66:38 | Before call to method IsFalse | | +| Assert.cs:66:9:66:39 | After ...; | Assert.cs:67:9:67:36 | ...; | | | Assert.cs:66:24:66:24 | access to local variable s | Assert.cs:66:29:66:32 | null | | -| Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:24:66:37 | ... \|\| ... | true | -| Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:37:66:37 | access to parameter b | false | -| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:66:9:66:38 | call to method IsFalse | | +| Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:24:66:32 | After ... == ... [false] | false | +| Assert.cs:66:24:66:32 | ... == ... | Assert.cs:66:24:66:32 | After ... == ... [true] | true | +| Assert.cs:66:24:66:32 | After ... == ... [false] | Assert.cs:66:37:66:37 | access to parameter b | | +| Assert.cs:66:24:66:32 | After ... == ... [true] | Assert.cs:66:24:66:37 | After ... \|\| ... | | +| Assert.cs:66:24:66:32 | Before ... == ... | Assert.cs:66:24:66:24 | access to local variable s | | +| Assert.cs:66:24:66:37 | ... \|\| ... | Assert.cs:66:24:66:32 | Before ... == ... | | +| Assert.cs:66:24:66:37 | After ... \|\| ... | Assert.cs:66:9:66:38 | call to method IsFalse | | | Assert.cs:66:29:66:32 | null | Assert.cs:66:24:66:32 | ... == ... | | -| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:24:66:37 | ... \|\| ... | | -| Assert.cs:67:9:67:35 | call to method WriteLine | Assert.cs:63:10:63:11 | exit M9 (normal) | | -| Assert.cs:67:9:67:36 | ...; | Assert.cs:67:27:67:27 | access to local variable s | | +| Assert.cs:66:37:66:37 | access to parameter b | Assert.cs:66:24:66:37 | After ... \|\| ... | | +| Assert.cs:67:9:67:35 | After call to method WriteLine | Assert.cs:67:9:67:36 | After ...; | | +| Assert.cs:67:9:67:35 | Before call to method WriteLine | Assert.cs:67:27:67:34 | Before access to property Length | | +| Assert.cs:67:9:67:35 | call to method WriteLine | Assert.cs:67:9:67:35 | After call to method WriteLine | | +| Assert.cs:67:9:67:36 | ...; | Assert.cs:67:9:67:35 | Before call to method WriteLine | | +| Assert.cs:67:9:67:36 | After ...; | Assert.cs:64:5:68:5 | After {...} | | | Assert.cs:67:27:67:27 | access to local variable s | Assert.cs:67:27:67:34 | access to property Length | | -| Assert.cs:67:27:67:34 | access to property Length | Assert.cs:67:9:67:35 | call to method WriteLine | | -| Assert.cs:70:10:70:12 | enter M10 | Assert.cs:71:5:75:5 | {...} | | -| Assert.cs:70:10:70:12 | exit M10 (abnormal) | Assert.cs:70:10:70:12 | exit M10 | | -| Assert.cs:70:10:70:12 | exit M10 (normal) | Assert.cs:70:10:70:12 | exit M10 | | +| Assert.cs:67:27:67:34 | After access to property Length | Assert.cs:67:9:67:35 | call to method WriteLine | | +| Assert.cs:67:27:67:34 | Before access to property Length | Assert.cs:67:27:67:27 | access to local variable s | | +| Assert.cs:67:27:67:34 | access to property Length | Assert.cs:67:27:67:34 | After access to property Length | | +| Assert.cs:70:10:70:12 | Entry | Assert.cs:70:19:70:19 | b | | +| Assert.cs:70:10:70:12 | Exceptional Exit | Assert.cs:70:10:70:12 | Exit | | +| Assert.cs:70:10:70:12 | Normal Exit | Assert.cs:70:10:70:12 | Exit | | +| Assert.cs:70:19:70:19 | b | Assert.cs:71:5:75:5 | {...} | | +| Assert.cs:71:5:75:5 | After {...} | Assert.cs:70:10:70:12 | Normal Exit | | | Assert.cs:71:5:75:5 | {...} | Assert.cs:72:9:72:33 | ... ...; | | -| Assert.cs:72:9:72:33 | ... ...; | Assert.cs:72:20:72:20 | access to parameter b | | -| Assert.cs:72:16:72:32 | String s = ... | Assert.cs:73:9:73:38 | ...; | | -| Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:24:72:27 | null | true | -| Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:31:72:32 | "" | false | -| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:16:72:32 | String s = ... | | -| Assert.cs:72:24:72:27 | null | Assert.cs:72:20:72:32 | ... ? ... : ... | | -| Assert.cs:72:31:72:32 | "" | Assert.cs:72:20:72:32 | ... ? ... : ... | | -| Assert.cs:73:9:73:37 | call to method IsTrue | Assert.cs:70:10:70:12 | exit M10 (abnormal) | exception | -| Assert.cs:73:9:73:37 | call to method IsTrue | Assert.cs:74:9:74:36 | ...; | | -| Assert.cs:73:9:73:38 | ...; | Assert.cs:73:23:73:23 | access to local variable s | | +| Assert.cs:72:9:72:33 | ... ...; | Assert.cs:72:16:72:32 | Before String s = ... | | +| Assert.cs:72:9:72:33 | After ... ...; | Assert.cs:73:9:73:38 | ...; | | +| Assert.cs:72:16:72:16 | access to local variable s | Assert.cs:72:20:72:32 | ... ? ... : ... | | +| Assert.cs:72:16:72:32 | After String s = ... | Assert.cs:72:9:72:33 | After ... ...; | | +| Assert.cs:72:16:72:32 | Before String s = ... | Assert.cs:72:16:72:16 | access to local variable s | | +| Assert.cs:72:16:72:32 | String s = ... | Assert.cs:72:16:72:32 | After String s = ... | | +| Assert.cs:72:20:72:20 | After access to parameter b [false] | Assert.cs:72:31:72:32 | "" | | +| Assert.cs:72:20:72:20 | After access to parameter b [true] | Assert.cs:72:24:72:27 | null | | +| Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:20:72:20 | After access to parameter b [false] | false | +| Assert.cs:72:20:72:20 | access to parameter b | Assert.cs:72:20:72:20 | After access to parameter b [true] | true | +| Assert.cs:72:20:72:32 | ... ? ... : ... | Assert.cs:72:20:72:20 | access to parameter b | | +| Assert.cs:72:20:72:32 | After ... ? ... : ... | Assert.cs:72:16:72:32 | String s = ... | | +| Assert.cs:72:24:72:27 | null | Assert.cs:72:20:72:32 | After ... ? ... : ... | | +| Assert.cs:72:31:72:32 | "" | Assert.cs:72:20:72:32 | After ... ? ... : ... | | +| Assert.cs:73:9:73:37 | After call to method IsTrue | Assert.cs:73:9:73:38 | After ...; | | +| Assert.cs:73:9:73:37 | Before call to method IsTrue | Assert.cs:73:23:73:36 | ... && ... | | +| Assert.cs:73:9:73:37 | call to method IsTrue | Assert.cs:70:10:70:12 | Exceptional Exit | exception | +| Assert.cs:73:9:73:37 | call to method IsTrue | Assert.cs:73:9:73:37 | After call to method IsTrue | | +| Assert.cs:73:9:73:38 | ...; | Assert.cs:73:9:73:37 | Before call to method IsTrue | | +| Assert.cs:73:9:73:38 | After ...; | Assert.cs:74:9:74:36 | ...; | | | Assert.cs:73:23:73:23 | access to local variable s | Assert.cs:73:28:73:31 | null | | -| Assert.cs:73:23:73:31 | ... == ... | Assert.cs:73:23:73:36 | ... && ... | false | -| Assert.cs:73:23:73:31 | ... == ... | Assert.cs:73:36:73:36 | access to parameter b | true | -| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:73:9:73:37 | call to method IsTrue | | +| Assert.cs:73:23:73:31 | ... == ... | Assert.cs:73:23:73:31 | After ... == ... [false] | false | +| Assert.cs:73:23:73:31 | ... == ... | Assert.cs:73:23:73:31 | After ... == ... [true] | true | +| Assert.cs:73:23:73:31 | After ... == ... [false] | Assert.cs:73:23:73:36 | After ... && ... | | +| Assert.cs:73:23:73:31 | After ... == ... [true] | Assert.cs:73:36:73:36 | access to parameter b | | +| Assert.cs:73:23:73:31 | Before ... == ... | Assert.cs:73:23:73:23 | access to local variable s | | +| Assert.cs:73:23:73:36 | ... && ... | Assert.cs:73:23:73:31 | Before ... == ... | | +| Assert.cs:73:23:73:36 | After ... && ... | Assert.cs:73:9:73:37 | call to method IsTrue | | | Assert.cs:73:28:73:31 | null | Assert.cs:73:23:73:31 | ... == ... | | -| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:23:73:36 | ... && ... | | -| Assert.cs:74:9:74:35 | call to method WriteLine | Assert.cs:70:10:70:12 | exit M10 (normal) | | -| Assert.cs:74:9:74:36 | ...; | Assert.cs:74:27:74:27 | access to local variable s | | +| Assert.cs:73:36:73:36 | access to parameter b | Assert.cs:73:23:73:36 | After ... && ... | | +| Assert.cs:74:9:74:35 | After call to method WriteLine | Assert.cs:74:9:74:36 | After ...; | | +| Assert.cs:74:9:74:35 | Before call to method WriteLine | Assert.cs:74:27:74:34 | Before access to property Length | | +| Assert.cs:74:9:74:35 | call to method WriteLine | Assert.cs:74:9:74:35 | After call to method WriteLine | | +| Assert.cs:74:9:74:36 | ...; | Assert.cs:74:9:74:35 | Before call to method WriteLine | | +| Assert.cs:74:9:74:36 | After ...; | Assert.cs:71:5:75:5 | After {...} | | | Assert.cs:74:27:74:27 | access to local variable s | Assert.cs:74:27:74:34 | access to property Length | | -| Assert.cs:74:27:74:34 | access to property Length | Assert.cs:74:9:74:35 | call to method WriteLine | | -| Assert.cs:77:10:77:12 | enter M11 | Assert.cs:78:5:82:5 | {...} | | -| Assert.cs:77:10:77:12 | exit M11 (abnormal) | Assert.cs:77:10:77:12 | exit M11 | | -| Assert.cs:77:10:77:12 | exit M11 (normal) | Assert.cs:77:10:77:12 | exit M11 | | +| Assert.cs:74:27:74:34 | After access to property Length | Assert.cs:74:9:74:35 | call to method WriteLine | | +| Assert.cs:74:27:74:34 | Before access to property Length | Assert.cs:74:27:74:27 | access to local variable s | | +| Assert.cs:74:27:74:34 | access to property Length | Assert.cs:74:27:74:34 | After access to property Length | | +| Assert.cs:77:10:77:12 | Entry | Assert.cs:77:19:77:19 | b | | +| Assert.cs:77:10:77:12 | Exceptional Exit | Assert.cs:77:10:77:12 | Exit | | +| Assert.cs:77:10:77:12 | Normal Exit | Assert.cs:77:10:77:12 | Exit | | +| Assert.cs:77:19:77:19 | b | Assert.cs:78:5:82:5 | {...} | | +| Assert.cs:78:5:82:5 | After {...} | Assert.cs:77:10:77:12 | Normal Exit | | | Assert.cs:78:5:82:5 | {...} | Assert.cs:79:9:79:33 | ... ...; | | -| Assert.cs:79:9:79:33 | ... ...; | Assert.cs:79:20:79:20 | access to parameter b | | -| Assert.cs:79:16:79:32 | String s = ... | Assert.cs:80:9:80:39 | ...; | | -| Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:24:79:27 | null | true | -| Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:31:79:32 | "" | false | -| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:16:79:32 | String s = ... | | -| Assert.cs:79:24:79:27 | null | Assert.cs:79:20:79:32 | ... ? ... : ... | | -| Assert.cs:79:31:79:32 | "" | Assert.cs:79:20:79:32 | ... ? ... : ... | | -| Assert.cs:80:9:80:38 | call to method IsFalse | Assert.cs:77:10:77:12 | exit M11 (abnormal) | exception | -| Assert.cs:80:9:80:38 | call to method IsFalse | Assert.cs:81:9:81:36 | ...; | | -| Assert.cs:80:9:80:39 | ...; | Assert.cs:80:24:80:24 | access to local variable s | | +| Assert.cs:79:9:79:33 | ... ...; | Assert.cs:79:16:79:32 | Before String s = ... | | +| Assert.cs:79:9:79:33 | After ... ...; | Assert.cs:80:9:80:39 | ...; | | +| Assert.cs:79:16:79:16 | access to local variable s | Assert.cs:79:20:79:32 | ... ? ... : ... | | +| Assert.cs:79:16:79:32 | After String s = ... | Assert.cs:79:9:79:33 | After ... ...; | | +| Assert.cs:79:16:79:32 | Before String s = ... | Assert.cs:79:16:79:16 | access to local variable s | | +| Assert.cs:79:16:79:32 | String s = ... | Assert.cs:79:16:79:32 | After String s = ... | | +| Assert.cs:79:20:79:20 | After access to parameter b [false] | Assert.cs:79:31:79:32 | "" | | +| Assert.cs:79:20:79:20 | After access to parameter b [true] | Assert.cs:79:24:79:27 | null | | +| Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:20:79:20 | After access to parameter b [false] | false | +| Assert.cs:79:20:79:20 | access to parameter b | Assert.cs:79:20:79:20 | After access to parameter b [true] | true | +| Assert.cs:79:20:79:32 | ... ? ... : ... | Assert.cs:79:20:79:20 | access to parameter b | | +| Assert.cs:79:20:79:32 | After ... ? ... : ... | Assert.cs:79:16:79:32 | String s = ... | | +| Assert.cs:79:24:79:27 | null | Assert.cs:79:20:79:32 | After ... ? ... : ... | | +| Assert.cs:79:31:79:32 | "" | Assert.cs:79:20:79:32 | After ... ? ... : ... | | +| Assert.cs:80:9:80:38 | After call to method IsFalse | Assert.cs:80:9:80:39 | After ...; | | +| Assert.cs:80:9:80:38 | Before call to method IsFalse | Assert.cs:80:24:80:37 | ... \|\| ... | | +| Assert.cs:80:9:80:38 | call to method IsFalse | Assert.cs:77:10:77:12 | Exceptional Exit | exception | +| Assert.cs:80:9:80:38 | call to method IsFalse | Assert.cs:80:9:80:38 | After call to method IsFalse | | +| Assert.cs:80:9:80:39 | ...; | Assert.cs:80:9:80:38 | Before call to method IsFalse | | +| Assert.cs:80:9:80:39 | After ...; | Assert.cs:81:9:81:36 | ...; | | | Assert.cs:80:24:80:24 | access to local variable s | Assert.cs:80:29:80:32 | null | | -| Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:24:80:37 | ... \|\| ... | true | -| Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:37:80:37 | access to parameter b | false | -| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:80:9:80:38 | call to method IsFalse | | +| Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:24:80:32 | After ... != ... [false] | false | +| Assert.cs:80:24:80:32 | ... != ... | Assert.cs:80:24:80:32 | After ... != ... [true] | true | +| Assert.cs:80:24:80:32 | After ... != ... [false] | Assert.cs:80:37:80:37 | access to parameter b | | +| Assert.cs:80:24:80:32 | After ... != ... [true] | Assert.cs:80:24:80:37 | After ... \|\| ... | | +| Assert.cs:80:24:80:32 | Before ... != ... | Assert.cs:80:24:80:24 | access to local variable s | | +| Assert.cs:80:24:80:37 | ... \|\| ... | Assert.cs:80:24:80:32 | Before ... != ... | | +| Assert.cs:80:24:80:37 | After ... \|\| ... | Assert.cs:80:9:80:38 | call to method IsFalse | | | Assert.cs:80:29:80:32 | null | Assert.cs:80:24:80:32 | ... != ... | | -| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:24:80:37 | ... \|\| ... | | -| Assert.cs:81:9:81:35 | call to method WriteLine | Assert.cs:77:10:77:12 | exit M11 (normal) | | -| Assert.cs:81:9:81:36 | ...; | Assert.cs:81:27:81:27 | access to local variable s | | +| Assert.cs:80:37:80:37 | access to parameter b | Assert.cs:80:24:80:37 | After ... \|\| ... | | +| Assert.cs:81:9:81:35 | After call to method WriteLine | Assert.cs:81:9:81:36 | After ...; | | +| Assert.cs:81:9:81:35 | Before call to method WriteLine | Assert.cs:81:27:81:34 | Before access to property Length | | +| Assert.cs:81:9:81:35 | call to method WriteLine | Assert.cs:81:9:81:35 | After call to method WriteLine | | +| Assert.cs:81:9:81:36 | ...; | Assert.cs:81:9:81:35 | Before call to method WriteLine | | +| Assert.cs:81:9:81:36 | After ...; | Assert.cs:78:5:82:5 | After {...} | | | Assert.cs:81:27:81:27 | access to local variable s | Assert.cs:81:27:81:34 | access to property Length | | -| Assert.cs:81:27:81:34 | access to property Length | Assert.cs:81:9:81:35 | call to method WriteLine | | -| Assert.cs:84:10:84:12 | enter M12 | Assert.cs:85:5:129:5 | {...} | | -| Assert.cs:84:10:84:12 | exit M12 (abnormal) | Assert.cs:84:10:84:12 | exit M12 | | -| Assert.cs:84:10:84:12 | exit M12 (normal) | Assert.cs:84:10:84:12 | exit M12 | | +| Assert.cs:81:27:81:34 | After access to property Length | Assert.cs:81:9:81:35 | call to method WriteLine | | +| Assert.cs:81:27:81:34 | Before access to property Length | Assert.cs:81:27:81:27 | access to local variable s | | +| Assert.cs:81:27:81:34 | access to property Length | Assert.cs:81:27:81:34 | After access to property Length | | +| Assert.cs:84:10:84:12 | Entry | Assert.cs:84:19:84:19 | b | | +| Assert.cs:84:10:84:12 | Exceptional Exit | Assert.cs:84:10:84:12 | Exit | | +| Assert.cs:84:10:84:12 | Normal Exit | Assert.cs:84:10:84:12 | Exit | | +| Assert.cs:84:19:84:19 | b | Assert.cs:85:5:129:5 | {...} | | +| Assert.cs:85:5:129:5 | After {...} | Assert.cs:84:10:84:12 | Normal Exit | | | Assert.cs:85:5:129:5 | {...} | Assert.cs:86:9:86:33 | ... ...; | | -| Assert.cs:86:9:86:33 | ... ...; | Assert.cs:86:20:86:20 | access to parameter b | | -| Assert.cs:86:16:86:32 | String s = ... | Assert.cs:87:9:87:32 | ...; | | -| Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:86:24:86:27 | null | true | -| Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:86:31:86:32 | "" | false | -| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:86:16:86:32 | String s = ... | | -| Assert.cs:86:24:86:27 | null | Assert.cs:86:20:86:32 | ... ? ... : ... | | -| Assert.cs:86:31:86:32 | "" | Assert.cs:86:20:86:32 | ... ? ... : ... | | -| Assert.cs:87:9:87:31 | call to method Assert | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exit | -| Assert.cs:87:9:87:31 | call to method Assert | Assert.cs:88:9:88:36 | ...; | | -| Assert.cs:87:9:87:32 | ...; | Assert.cs:87:22:87:22 | access to local variable s | | +| Assert.cs:86:9:86:33 | ... ...; | Assert.cs:86:16:86:32 | Before String s = ... | | +| Assert.cs:86:9:86:33 | After ... ...; | Assert.cs:87:9:87:32 | ...; | | +| Assert.cs:86:16:86:16 | access to local variable s | Assert.cs:86:20:86:32 | ... ? ... : ... | | +| Assert.cs:86:16:86:32 | After String s = ... | Assert.cs:86:9:86:33 | After ... ...; | | +| Assert.cs:86:16:86:32 | Before String s = ... | Assert.cs:86:16:86:16 | access to local variable s | | +| Assert.cs:86:16:86:32 | String s = ... | Assert.cs:86:16:86:32 | After String s = ... | | +| Assert.cs:86:20:86:20 | After access to parameter b [false] | Assert.cs:86:31:86:32 | "" | | +| Assert.cs:86:20:86:20 | After access to parameter b [true] | Assert.cs:86:24:86:27 | null | | +| Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:86:20:86:20 | After access to parameter b [false] | false | +| Assert.cs:86:20:86:20 | access to parameter b | Assert.cs:86:20:86:20 | After access to parameter b [true] | true | +| Assert.cs:86:20:86:32 | ... ? ... : ... | Assert.cs:86:20:86:20 | access to parameter b | | +| Assert.cs:86:20:86:32 | After ... ? ... : ... | Assert.cs:86:16:86:32 | String s = ... | | +| Assert.cs:86:24:86:27 | null | Assert.cs:86:20:86:32 | After ... ? ... : ... | | +| Assert.cs:86:31:86:32 | "" | Assert.cs:86:20:86:32 | After ... ? ... : ... | | +| Assert.cs:87:9:87:31 | After call to method Assert | Assert.cs:87:9:87:32 | After ...; | | +| Assert.cs:87:9:87:31 | Before call to method Assert | Assert.cs:87:22:87:30 | Before ... != ... | | +| Assert.cs:87:9:87:31 | call to method Assert | Assert.cs:84:10:84:12 | Exceptional Exit | exception | +| Assert.cs:87:9:87:31 | call to method Assert | Assert.cs:87:9:87:31 | After call to method Assert | | +| Assert.cs:87:9:87:32 | ...; | Assert.cs:87:9:87:31 | Before call to method Assert | | +| Assert.cs:87:9:87:32 | After ...; | Assert.cs:88:9:88:36 | ...; | | | Assert.cs:87:22:87:22 | access to local variable s | Assert.cs:87:27:87:30 | null | | -| Assert.cs:87:22:87:30 | ... != ... | Assert.cs:87:9:87:31 | call to method Assert | | +| Assert.cs:87:22:87:30 | ... != ... | Assert.cs:87:22:87:30 | After ... != ... | | +| Assert.cs:87:22:87:30 | After ... != ... | Assert.cs:87:9:87:31 | call to method Assert | | +| Assert.cs:87:22:87:30 | Before ... != ... | Assert.cs:87:22:87:22 | access to local variable s | | | Assert.cs:87:27:87:30 | null | Assert.cs:87:22:87:30 | ... != ... | | -| Assert.cs:88:9:88:35 | call to method WriteLine | Assert.cs:90:9:90:26 | ...; | | -| Assert.cs:88:9:88:36 | ...; | Assert.cs:88:27:88:27 | access to local variable s | | +| Assert.cs:88:9:88:35 | After call to method WriteLine | Assert.cs:88:9:88:36 | After ...; | | +| Assert.cs:88:9:88:35 | Before call to method WriteLine | Assert.cs:88:27:88:34 | Before access to property Length | | +| Assert.cs:88:9:88:35 | call to method WriteLine | Assert.cs:88:9:88:35 | After call to method WriteLine | | +| Assert.cs:88:9:88:36 | ...; | Assert.cs:88:9:88:35 | Before call to method WriteLine | | +| Assert.cs:88:9:88:36 | After ...; | Assert.cs:90:9:90:26 | ...; | | | Assert.cs:88:27:88:27 | access to local variable s | Assert.cs:88:27:88:34 | access to property Length | | -| Assert.cs:88:27:88:34 | access to property Length | Assert.cs:88:9:88:35 | call to method WriteLine | | -| Assert.cs:90:9:90:25 | ... = ... | Assert.cs:91:9:91:25 | ...; | | -| Assert.cs:90:9:90:26 | ...; | Assert.cs:90:13:90:13 | access to parameter b | | -| Assert.cs:90:13:90:13 | access to parameter b | Assert.cs:90:17:90:20 | null | true | -| Assert.cs:90:13:90:13 | access to parameter b | Assert.cs:90:24:90:25 | "" | false | -| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:90:9:90:25 | ... = ... | | -| Assert.cs:90:17:90:20 | null | Assert.cs:90:13:90:25 | ... ? ... : ... | | -| Assert.cs:90:24:90:25 | "" | Assert.cs:90:13:90:25 | ... ? ... : ... | | -| Assert.cs:91:9:91:24 | call to method IsNull | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | -| Assert.cs:91:9:91:24 | call to method IsNull | Assert.cs:92:9:92:36 | ...; | | -| Assert.cs:91:9:91:25 | ...; | Assert.cs:91:23:91:23 | access to local variable s | | +| Assert.cs:88:27:88:34 | After access to property Length | Assert.cs:88:9:88:35 | call to method WriteLine | | +| Assert.cs:88:27:88:34 | Before access to property Length | Assert.cs:88:27:88:27 | access to local variable s | | +| Assert.cs:88:27:88:34 | access to property Length | Assert.cs:88:27:88:34 | After access to property Length | | +| Assert.cs:90:9:90:9 | access to local variable s | Assert.cs:90:13:90:25 | ... ? ... : ... | | +| Assert.cs:90:9:90:25 | ... = ... | Assert.cs:90:9:90:25 | After ... = ... | | +| Assert.cs:90:9:90:25 | After ... = ... | Assert.cs:90:9:90:26 | After ...; | | +| Assert.cs:90:9:90:25 | Before ... = ... | Assert.cs:90:9:90:9 | access to local variable s | | +| Assert.cs:90:9:90:26 | ...; | Assert.cs:90:9:90:25 | Before ... = ... | | +| Assert.cs:90:9:90:26 | After ...; | Assert.cs:91:9:91:25 | ...; | | +| Assert.cs:90:13:90:13 | After access to parameter b [false] | Assert.cs:90:24:90:25 | "" | | +| Assert.cs:90:13:90:13 | After access to parameter b [true] | Assert.cs:90:17:90:20 | null | | +| Assert.cs:90:13:90:13 | access to parameter b | Assert.cs:90:13:90:13 | After access to parameter b [false] | false | +| Assert.cs:90:13:90:13 | access to parameter b | Assert.cs:90:13:90:13 | After access to parameter b [true] | true | +| Assert.cs:90:13:90:25 | ... ? ... : ... | Assert.cs:90:13:90:13 | access to parameter b | | +| Assert.cs:90:13:90:25 | After ... ? ... : ... | Assert.cs:90:9:90:25 | ... = ... | | +| Assert.cs:90:17:90:20 | null | Assert.cs:90:13:90:25 | After ... ? ... : ... | | +| Assert.cs:90:24:90:25 | "" | Assert.cs:90:13:90:25 | After ... ? ... : ... | | +| Assert.cs:91:9:91:24 | After call to method IsNull | Assert.cs:91:9:91:25 | After ...; | | +| Assert.cs:91:9:91:24 | Before call to method IsNull | Assert.cs:91:23:91:23 | access to local variable s | | +| Assert.cs:91:9:91:24 | call to method IsNull | Assert.cs:84:10:84:12 | Exceptional Exit | exception | +| Assert.cs:91:9:91:24 | call to method IsNull | Assert.cs:91:9:91:24 | After call to method IsNull | | +| Assert.cs:91:9:91:25 | ...; | Assert.cs:91:9:91:24 | Before call to method IsNull | | +| Assert.cs:91:9:91:25 | After ...; | Assert.cs:92:9:92:36 | ...; | | | Assert.cs:91:23:91:23 | access to local variable s | Assert.cs:91:9:91:24 | call to method IsNull | | -| Assert.cs:92:9:92:35 | call to method WriteLine | Assert.cs:94:9:94:26 | ...; | | -| Assert.cs:92:9:92:36 | ...; | Assert.cs:92:27:92:27 | access to local variable s | | +| Assert.cs:92:9:92:35 | After call to method WriteLine | Assert.cs:92:9:92:36 | After ...; | | +| Assert.cs:92:9:92:35 | Before call to method WriteLine | Assert.cs:92:27:92:34 | Before access to property Length | | +| Assert.cs:92:9:92:35 | call to method WriteLine | Assert.cs:92:9:92:35 | After call to method WriteLine | | +| Assert.cs:92:9:92:36 | ...; | Assert.cs:92:9:92:35 | Before call to method WriteLine | | +| Assert.cs:92:9:92:36 | After ...; | Assert.cs:94:9:94:26 | ...; | | | Assert.cs:92:27:92:27 | access to local variable s | Assert.cs:92:27:92:34 | access to property Length | | -| Assert.cs:92:27:92:34 | access to property Length | Assert.cs:92:9:92:35 | call to method WriteLine | | -| Assert.cs:94:9:94:25 | ... = ... | Assert.cs:95:9:95:28 | ...; | | -| Assert.cs:94:9:94:26 | ...; | Assert.cs:94:13:94:13 | access to parameter b | | -| Assert.cs:94:13:94:13 | access to parameter b | Assert.cs:94:17:94:20 | null | true | -| Assert.cs:94:13:94:13 | access to parameter b | Assert.cs:94:24:94:25 | "" | false | -| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:94:9:94:25 | ... = ... | | -| Assert.cs:94:17:94:20 | null | Assert.cs:94:13:94:25 | ... ? ... : ... | | -| Assert.cs:94:24:94:25 | "" | Assert.cs:94:13:94:25 | ... ? ... : ... | | -| Assert.cs:95:9:95:27 | call to method IsNotNull | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | -| Assert.cs:95:9:95:27 | call to method IsNotNull | Assert.cs:96:9:96:36 | ...; | | -| Assert.cs:95:9:95:28 | ...; | Assert.cs:95:26:95:26 | access to local variable s | | +| Assert.cs:92:27:92:34 | After access to property Length | Assert.cs:92:9:92:35 | call to method WriteLine | | +| Assert.cs:92:27:92:34 | Before access to property Length | Assert.cs:92:27:92:27 | access to local variable s | | +| Assert.cs:92:27:92:34 | access to property Length | Assert.cs:92:27:92:34 | After access to property Length | | +| Assert.cs:94:9:94:9 | access to local variable s | Assert.cs:94:13:94:25 | ... ? ... : ... | | +| Assert.cs:94:9:94:25 | ... = ... | Assert.cs:94:9:94:25 | After ... = ... | | +| Assert.cs:94:9:94:25 | After ... = ... | Assert.cs:94:9:94:26 | After ...; | | +| Assert.cs:94:9:94:25 | Before ... = ... | Assert.cs:94:9:94:9 | access to local variable s | | +| Assert.cs:94:9:94:26 | ...; | Assert.cs:94:9:94:25 | Before ... = ... | | +| Assert.cs:94:9:94:26 | After ...; | Assert.cs:95:9:95:28 | ...; | | +| Assert.cs:94:13:94:13 | After access to parameter b [false] | Assert.cs:94:24:94:25 | "" | | +| Assert.cs:94:13:94:13 | After access to parameter b [true] | Assert.cs:94:17:94:20 | null | | +| Assert.cs:94:13:94:13 | access to parameter b | Assert.cs:94:13:94:13 | After access to parameter b [false] | false | +| Assert.cs:94:13:94:13 | access to parameter b | Assert.cs:94:13:94:13 | After access to parameter b [true] | true | +| Assert.cs:94:13:94:25 | ... ? ... : ... | Assert.cs:94:13:94:13 | access to parameter b | | +| Assert.cs:94:13:94:25 | After ... ? ... : ... | Assert.cs:94:9:94:25 | ... = ... | | +| Assert.cs:94:17:94:20 | null | Assert.cs:94:13:94:25 | After ... ? ... : ... | | +| Assert.cs:94:24:94:25 | "" | Assert.cs:94:13:94:25 | After ... ? ... : ... | | +| Assert.cs:95:9:95:27 | After call to method IsNotNull | Assert.cs:95:9:95:28 | After ...; | | +| Assert.cs:95:9:95:27 | Before call to method IsNotNull | Assert.cs:95:26:95:26 | access to local variable s | | +| Assert.cs:95:9:95:27 | call to method IsNotNull | Assert.cs:84:10:84:12 | Exceptional Exit | exception | +| Assert.cs:95:9:95:27 | call to method IsNotNull | Assert.cs:95:9:95:27 | After call to method IsNotNull | | +| Assert.cs:95:9:95:28 | ...; | Assert.cs:95:9:95:27 | Before call to method IsNotNull | | +| Assert.cs:95:9:95:28 | After ...; | Assert.cs:96:9:96:36 | ...; | | | Assert.cs:95:26:95:26 | access to local variable s | Assert.cs:95:9:95:27 | call to method IsNotNull | | -| Assert.cs:96:9:96:35 | call to method WriteLine | Assert.cs:98:9:98:26 | ...; | | -| Assert.cs:96:9:96:36 | ...; | Assert.cs:96:27:96:27 | access to local variable s | | +| Assert.cs:96:9:96:35 | After call to method WriteLine | Assert.cs:96:9:96:36 | After ...; | | +| Assert.cs:96:9:96:35 | Before call to method WriteLine | Assert.cs:96:27:96:34 | Before access to property Length | | +| Assert.cs:96:9:96:35 | call to method WriteLine | Assert.cs:96:9:96:35 | After call to method WriteLine | | +| Assert.cs:96:9:96:36 | ...; | Assert.cs:96:9:96:35 | Before call to method WriteLine | | +| Assert.cs:96:9:96:36 | After ...; | Assert.cs:98:9:98:26 | ...; | | | Assert.cs:96:27:96:27 | access to local variable s | Assert.cs:96:27:96:34 | access to property Length | | -| Assert.cs:96:27:96:34 | access to property Length | Assert.cs:96:9:96:35 | call to method WriteLine | | -| Assert.cs:98:9:98:25 | ... = ... | Assert.cs:99:9:99:33 | ...; | | -| Assert.cs:98:9:98:26 | ...; | Assert.cs:98:13:98:13 | access to parameter b | | -| Assert.cs:98:13:98:13 | access to parameter b | Assert.cs:98:17:98:20 | null | true | -| Assert.cs:98:13:98:13 | access to parameter b | Assert.cs:98:24:98:25 | "" | false | -| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:98:9:98:25 | ... = ... | | -| Assert.cs:98:17:98:20 | null | Assert.cs:98:13:98:25 | ... ? ... : ... | | -| Assert.cs:98:24:98:25 | "" | Assert.cs:98:13:98:25 | ... ? ... : ... | | -| Assert.cs:99:9:99:32 | call to method IsTrue | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | -| Assert.cs:99:9:99:32 | call to method IsTrue | Assert.cs:100:9:100:36 | ...; | | -| Assert.cs:99:9:99:33 | ...; | Assert.cs:99:23:99:23 | access to local variable s | | +| Assert.cs:96:27:96:34 | After access to property Length | Assert.cs:96:9:96:35 | call to method WriteLine | | +| Assert.cs:96:27:96:34 | Before access to property Length | Assert.cs:96:27:96:27 | access to local variable s | | +| Assert.cs:96:27:96:34 | access to property Length | Assert.cs:96:27:96:34 | After access to property Length | | +| Assert.cs:98:9:98:9 | access to local variable s | Assert.cs:98:13:98:25 | ... ? ... : ... | | +| Assert.cs:98:9:98:25 | ... = ... | Assert.cs:98:9:98:25 | After ... = ... | | +| Assert.cs:98:9:98:25 | After ... = ... | Assert.cs:98:9:98:26 | After ...; | | +| Assert.cs:98:9:98:25 | Before ... = ... | Assert.cs:98:9:98:9 | access to local variable s | | +| Assert.cs:98:9:98:26 | ...; | Assert.cs:98:9:98:25 | Before ... = ... | | +| Assert.cs:98:9:98:26 | After ...; | Assert.cs:99:9:99:33 | ...; | | +| Assert.cs:98:13:98:13 | After access to parameter b [false] | Assert.cs:98:24:98:25 | "" | | +| Assert.cs:98:13:98:13 | After access to parameter b [true] | Assert.cs:98:17:98:20 | null | | +| Assert.cs:98:13:98:13 | access to parameter b | Assert.cs:98:13:98:13 | After access to parameter b [false] | false | +| Assert.cs:98:13:98:13 | access to parameter b | Assert.cs:98:13:98:13 | After access to parameter b [true] | true | +| Assert.cs:98:13:98:25 | ... ? ... : ... | Assert.cs:98:13:98:13 | access to parameter b | | +| Assert.cs:98:13:98:25 | After ... ? ... : ... | Assert.cs:98:9:98:25 | ... = ... | | +| Assert.cs:98:17:98:20 | null | Assert.cs:98:13:98:25 | After ... ? ... : ... | | +| Assert.cs:98:24:98:25 | "" | Assert.cs:98:13:98:25 | After ... ? ... : ... | | +| Assert.cs:99:9:99:32 | After call to method IsTrue | Assert.cs:99:9:99:33 | After ...; | | +| Assert.cs:99:9:99:32 | Before call to method IsTrue | Assert.cs:99:23:99:31 | Before ... == ... | | +| Assert.cs:99:9:99:32 | call to method IsTrue | Assert.cs:84:10:84:12 | Exceptional Exit | exception | +| Assert.cs:99:9:99:32 | call to method IsTrue | Assert.cs:99:9:99:32 | After call to method IsTrue | | +| Assert.cs:99:9:99:33 | ...; | Assert.cs:99:9:99:32 | Before call to method IsTrue | | +| Assert.cs:99:9:99:33 | After ...; | Assert.cs:100:9:100:36 | ...; | | | Assert.cs:99:23:99:23 | access to local variable s | Assert.cs:99:28:99:31 | null | | -| Assert.cs:99:23:99:31 | ... == ... | Assert.cs:99:9:99:32 | call to method IsTrue | | +| Assert.cs:99:23:99:31 | ... == ... | Assert.cs:99:23:99:31 | After ... == ... | | +| Assert.cs:99:23:99:31 | After ... == ... | Assert.cs:99:9:99:32 | call to method IsTrue | | +| Assert.cs:99:23:99:31 | Before ... == ... | Assert.cs:99:23:99:23 | access to local variable s | | | Assert.cs:99:28:99:31 | null | Assert.cs:99:23:99:31 | ... == ... | | -| Assert.cs:100:9:100:35 | call to method WriteLine | Assert.cs:102:9:102:26 | ...; | | -| Assert.cs:100:9:100:36 | ...; | Assert.cs:100:27:100:27 | access to local variable s | | +| Assert.cs:100:9:100:35 | After call to method WriteLine | Assert.cs:100:9:100:36 | After ...; | | +| Assert.cs:100:9:100:35 | Before call to method WriteLine | Assert.cs:100:27:100:34 | Before access to property Length | | +| Assert.cs:100:9:100:35 | call to method WriteLine | Assert.cs:100:9:100:35 | After call to method WriteLine | | +| Assert.cs:100:9:100:36 | ...; | Assert.cs:100:9:100:35 | Before call to method WriteLine | | +| Assert.cs:100:9:100:36 | After ...; | Assert.cs:102:9:102:26 | ...; | | | Assert.cs:100:27:100:27 | access to local variable s | Assert.cs:100:27:100:34 | access to property Length | | -| Assert.cs:100:27:100:34 | access to property Length | Assert.cs:100:9:100:35 | call to method WriteLine | | -| Assert.cs:102:9:102:25 | ... = ... | Assert.cs:103:9:103:33 | ...; | | -| Assert.cs:102:9:102:26 | ...; | Assert.cs:102:13:102:13 | access to parameter b | | -| Assert.cs:102:13:102:13 | access to parameter b | Assert.cs:102:17:102:20 | null | true | -| Assert.cs:102:13:102:13 | access to parameter b | Assert.cs:102:24:102:25 | "" | false | -| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:102:9:102:25 | ... = ... | | -| Assert.cs:102:17:102:20 | null | Assert.cs:102:13:102:25 | ... ? ... : ... | | -| Assert.cs:102:24:102:25 | "" | Assert.cs:102:13:102:25 | ... ? ... : ... | | -| Assert.cs:103:9:103:32 | call to method IsTrue | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | -| Assert.cs:103:9:103:32 | call to method IsTrue | Assert.cs:104:9:104:36 | ...; | | -| Assert.cs:103:9:103:33 | ...; | Assert.cs:103:23:103:23 | access to local variable s | | +| Assert.cs:100:27:100:34 | After access to property Length | Assert.cs:100:9:100:35 | call to method WriteLine | | +| Assert.cs:100:27:100:34 | Before access to property Length | Assert.cs:100:27:100:27 | access to local variable s | | +| Assert.cs:100:27:100:34 | access to property Length | Assert.cs:100:27:100:34 | After access to property Length | | +| Assert.cs:102:9:102:9 | access to local variable s | Assert.cs:102:13:102:25 | ... ? ... : ... | | +| Assert.cs:102:9:102:25 | ... = ... | Assert.cs:102:9:102:25 | After ... = ... | | +| Assert.cs:102:9:102:25 | After ... = ... | Assert.cs:102:9:102:26 | After ...; | | +| Assert.cs:102:9:102:25 | Before ... = ... | Assert.cs:102:9:102:9 | access to local variable s | | +| Assert.cs:102:9:102:26 | ...; | Assert.cs:102:9:102:25 | Before ... = ... | | +| Assert.cs:102:9:102:26 | After ...; | Assert.cs:103:9:103:33 | ...; | | +| Assert.cs:102:13:102:13 | After access to parameter b [false] | Assert.cs:102:24:102:25 | "" | | +| Assert.cs:102:13:102:13 | After access to parameter b [true] | Assert.cs:102:17:102:20 | null | | +| Assert.cs:102:13:102:13 | access to parameter b | Assert.cs:102:13:102:13 | After access to parameter b [false] | false | +| Assert.cs:102:13:102:13 | access to parameter b | Assert.cs:102:13:102:13 | After access to parameter b [true] | true | +| Assert.cs:102:13:102:25 | ... ? ... : ... | Assert.cs:102:13:102:13 | access to parameter b | | +| Assert.cs:102:13:102:25 | After ... ? ... : ... | Assert.cs:102:9:102:25 | ... = ... | | +| Assert.cs:102:17:102:20 | null | Assert.cs:102:13:102:25 | After ... ? ... : ... | | +| Assert.cs:102:24:102:25 | "" | Assert.cs:102:13:102:25 | After ... ? ... : ... | | +| Assert.cs:103:9:103:32 | After call to method IsTrue | Assert.cs:103:9:103:33 | After ...; | | +| Assert.cs:103:9:103:32 | Before call to method IsTrue | Assert.cs:103:23:103:31 | Before ... != ... | | +| Assert.cs:103:9:103:32 | call to method IsTrue | Assert.cs:84:10:84:12 | Exceptional Exit | exception | +| Assert.cs:103:9:103:32 | call to method IsTrue | Assert.cs:103:9:103:32 | After call to method IsTrue | | +| Assert.cs:103:9:103:33 | ...; | Assert.cs:103:9:103:32 | Before call to method IsTrue | | +| Assert.cs:103:9:103:33 | After ...; | Assert.cs:104:9:104:36 | ...; | | | Assert.cs:103:23:103:23 | access to local variable s | Assert.cs:103:28:103:31 | null | | -| Assert.cs:103:23:103:31 | ... != ... | Assert.cs:103:9:103:32 | call to method IsTrue | | +| Assert.cs:103:23:103:31 | ... != ... | Assert.cs:103:23:103:31 | After ... != ... | | +| Assert.cs:103:23:103:31 | After ... != ... | Assert.cs:103:9:103:32 | call to method IsTrue | | +| Assert.cs:103:23:103:31 | Before ... != ... | Assert.cs:103:23:103:23 | access to local variable s | | | Assert.cs:103:28:103:31 | null | Assert.cs:103:23:103:31 | ... != ... | | -| Assert.cs:104:9:104:35 | call to method WriteLine | Assert.cs:106:9:106:26 | ...; | | -| Assert.cs:104:9:104:36 | ...; | Assert.cs:104:27:104:27 | access to local variable s | | +| Assert.cs:104:9:104:35 | After call to method WriteLine | Assert.cs:104:9:104:36 | After ...; | | +| Assert.cs:104:9:104:35 | Before call to method WriteLine | Assert.cs:104:27:104:34 | Before access to property Length | | +| Assert.cs:104:9:104:35 | call to method WriteLine | Assert.cs:104:9:104:35 | After call to method WriteLine | | +| Assert.cs:104:9:104:36 | ...; | Assert.cs:104:9:104:35 | Before call to method WriteLine | | +| Assert.cs:104:9:104:36 | After ...; | Assert.cs:106:9:106:26 | ...; | | | Assert.cs:104:27:104:27 | access to local variable s | Assert.cs:104:27:104:34 | access to property Length | | -| Assert.cs:104:27:104:34 | access to property Length | Assert.cs:104:9:104:35 | call to method WriteLine | | -| Assert.cs:106:9:106:25 | ... = ... | Assert.cs:107:9:107:34 | ...; | | -| Assert.cs:106:9:106:26 | ...; | Assert.cs:106:13:106:13 | access to parameter b | | -| Assert.cs:106:13:106:13 | access to parameter b | Assert.cs:106:17:106:20 | null | true | -| Assert.cs:106:13:106:13 | access to parameter b | Assert.cs:106:24:106:25 | "" | false | -| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:106:9:106:25 | ... = ... | | -| Assert.cs:106:17:106:20 | null | Assert.cs:106:13:106:25 | ... ? ... : ... | | -| Assert.cs:106:24:106:25 | "" | Assert.cs:106:13:106:25 | ... ? ... : ... | | -| Assert.cs:107:9:107:33 | call to method IsFalse | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | -| Assert.cs:107:9:107:33 | call to method IsFalse | Assert.cs:108:9:108:36 | ...; | | -| Assert.cs:107:9:107:34 | ...; | Assert.cs:107:24:107:24 | access to local variable s | | +| Assert.cs:104:27:104:34 | After access to property Length | Assert.cs:104:9:104:35 | call to method WriteLine | | +| Assert.cs:104:27:104:34 | Before access to property Length | Assert.cs:104:27:104:27 | access to local variable s | | +| Assert.cs:104:27:104:34 | access to property Length | Assert.cs:104:27:104:34 | After access to property Length | | +| Assert.cs:106:9:106:9 | access to local variable s | Assert.cs:106:13:106:25 | ... ? ... : ... | | +| Assert.cs:106:9:106:25 | ... = ... | Assert.cs:106:9:106:25 | After ... = ... | | +| Assert.cs:106:9:106:25 | After ... = ... | Assert.cs:106:9:106:26 | After ...; | | +| Assert.cs:106:9:106:25 | Before ... = ... | Assert.cs:106:9:106:9 | access to local variable s | | +| Assert.cs:106:9:106:26 | ...; | Assert.cs:106:9:106:25 | Before ... = ... | | +| Assert.cs:106:9:106:26 | After ...; | Assert.cs:107:9:107:34 | ...; | | +| Assert.cs:106:13:106:13 | After access to parameter b [false] | Assert.cs:106:24:106:25 | "" | | +| Assert.cs:106:13:106:13 | After access to parameter b [true] | Assert.cs:106:17:106:20 | null | | +| Assert.cs:106:13:106:13 | access to parameter b | Assert.cs:106:13:106:13 | After access to parameter b [false] | false | +| Assert.cs:106:13:106:13 | access to parameter b | Assert.cs:106:13:106:13 | After access to parameter b [true] | true | +| Assert.cs:106:13:106:25 | ... ? ... : ... | Assert.cs:106:13:106:13 | access to parameter b | | +| Assert.cs:106:13:106:25 | After ... ? ... : ... | Assert.cs:106:9:106:25 | ... = ... | | +| Assert.cs:106:17:106:20 | null | Assert.cs:106:13:106:25 | After ... ? ... : ... | | +| Assert.cs:106:24:106:25 | "" | Assert.cs:106:13:106:25 | After ... ? ... : ... | | +| Assert.cs:107:9:107:33 | After call to method IsFalse | Assert.cs:107:9:107:34 | After ...; | | +| Assert.cs:107:9:107:33 | Before call to method IsFalse | Assert.cs:107:24:107:32 | Before ... != ... | | +| Assert.cs:107:9:107:33 | call to method IsFalse | Assert.cs:84:10:84:12 | Exceptional Exit | exception | +| Assert.cs:107:9:107:33 | call to method IsFalse | Assert.cs:107:9:107:33 | After call to method IsFalse | | +| Assert.cs:107:9:107:34 | ...; | Assert.cs:107:9:107:33 | Before call to method IsFalse | | +| Assert.cs:107:9:107:34 | After ...; | Assert.cs:108:9:108:36 | ...; | | | Assert.cs:107:24:107:24 | access to local variable s | Assert.cs:107:29:107:32 | null | | -| Assert.cs:107:24:107:32 | ... != ... | Assert.cs:107:9:107:33 | call to method IsFalse | | +| Assert.cs:107:24:107:32 | ... != ... | Assert.cs:107:24:107:32 | After ... != ... | | +| Assert.cs:107:24:107:32 | After ... != ... | Assert.cs:107:9:107:33 | call to method IsFalse | | +| Assert.cs:107:24:107:32 | Before ... != ... | Assert.cs:107:24:107:24 | access to local variable s | | | Assert.cs:107:29:107:32 | null | Assert.cs:107:24:107:32 | ... != ... | | -| Assert.cs:108:9:108:35 | call to method WriteLine | Assert.cs:110:9:110:26 | ...; | | -| Assert.cs:108:9:108:36 | ...; | Assert.cs:108:27:108:27 | access to local variable s | | +| Assert.cs:108:9:108:35 | After call to method WriteLine | Assert.cs:108:9:108:36 | After ...; | | +| Assert.cs:108:9:108:35 | Before call to method WriteLine | Assert.cs:108:27:108:34 | Before access to property Length | | +| Assert.cs:108:9:108:35 | call to method WriteLine | Assert.cs:108:9:108:35 | After call to method WriteLine | | +| Assert.cs:108:9:108:36 | ...; | Assert.cs:108:9:108:35 | Before call to method WriteLine | | +| Assert.cs:108:9:108:36 | After ...; | Assert.cs:110:9:110:26 | ...; | | | Assert.cs:108:27:108:27 | access to local variable s | Assert.cs:108:27:108:34 | access to property Length | | -| Assert.cs:108:27:108:34 | access to property Length | Assert.cs:108:9:108:35 | call to method WriteLine | | -| Assert.cs:110:9:110:25 | ... = ... | Assert.cs:111:9:111:34 | ...; | | -| Assert.cs:110:9:110:26 | ...; | Assert.cs:110:13:110:13 | access to parameter b | | -| Assert.cs:110:13:110:13 | access to parameter b | Assert.cs:110:17:110:20 | null | true | -| Assert.cs:110:13:110:13 | access to parameter b | Assert.cs:110:24:110:25 | "" | false | -| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:110:9:110:25 | ... = ... | | -| Assert.cs:110:17:110:20 | null | Assert.cs:110:13:110:25 | ... ? ... : ... | | -| Assert.cs:110:24:110:25 | "" | Assert.cs:110:13:110:25 | ... ? ... : ... | | -| Assert.cs:111:9:111:33 | call to method IsFalse | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | -| Assert.cs:111:9:111:33 | call to method IsFalse | Assert.cs:112:9:112:36 | ...; | | -| Assert.cs:111:9:111:34 | ...; | Assert.cs:111:24:111:24 | access to local variable s | | +| Assert.cs:108:27:108:34 | After access to property Length | Assert.cs:108:9:108:35 | call to method WriteLine | | +| Assert.cs:108:27:108:34 | Before access to property Length | Assert.cs:108:27:108:27 | access to local variable s | | +| Assert.cs:108:27:108:34 | access to property Length | Assert.cs:108:27:108:34 | After access to property Length | | +| Assert.cs:110:9:110:9 | access to local variable s | Assert.cs:110:13:110:25 | ... ? ... : ... | | +| Assert.cs:110:9:110:25 | ... = ... | Assert.cs:110:9:110:25 | After ... = ... | | +| Assert.cs:110:9:110:25 | After ... = ... | Assert.cs:110:9:110:26 | After ...; | | +| Assert.cs:110:9:110:25 | Before ... = ... | Assert.cs:110:9:110:9 | access to local variable s | | +| Assert.cs:110:9:110:26 | ...; | Assert.cs:110:9:110:25 | Before ... = ... | | +| Assert.cs:110:9:110:26 | After ...; | Assert.cs:111:9:111:34 | ...; | | +| Assert.cs:110:13:110:13 | After access to parameter b [false] | Assert.cs:110:24:110:25 | "" | | +| Assert.cs:110:13:110:13 | After access to parameter b [true] | Assert.cs:110:17:110:20 | null | | +| Assert.cs:110:13:110:13 | access to parameter b | Assert.cs:110:13:110:13 | After access to parameter b [false] | false | +| Assert.cs:110:13:110:13 | access to parameter b | Assert.cs:110:13:110:13 | After access to parameter b [true] | true | +| Assert.cs:110:13:110:25 | ... ? ... : ... | Assert.cs:110:13:110:13 | access to parameter b | | +| Assert.cs:110:13:110:25 | After ... ? ... : ... | Assert.cs:110:9:110:25 | ... = ... | | +| Assert.cs:110:17:110:20 | null | Assert.cs:110:13:110:25 | After ... ? ... : ... | | +| Assert.cs:110:24:110:25 | "" | Assert.cs:110:13:110:25 | After ... ? ... : ... | | +| Assert.cs:111:9:111:33 | After call to method IsFalse | Assert.cs:111:9:111:34 | After ...; | | +| Assert.cs:111:9:111:33 | Before call to method IsFalse | Assert.cs:111:24:111:32 | Before ... == ... | | +| Assert.cs:111:9:111:33 | call to method IsFalse | Assert.cs:84:10:84:12 | Exceptional Exit | exception | +| Assert.cs:111:9:111:33 | call to method IsFalse | Assert.cs:111:9:111:33 | After call to method IsFalse | | +| Assert.cs:111:9:111:34 | ...; | Assert.cs:111:9:111:33 | Before call to method IsFalse | | +| Assert.cs:111:9:111:34 | After ...; | Assert.cs:112:9:112:36 | ...; | | | Assert.cs:111:24:111:24 | access to local variable s | Assert.cs:111:29:111:32 | null | | -| Assert.cs:111:24:111:32 | ... == ... | Assert.cs:111:9:111:33 | call to method IsFalse | | +| Assert.cs:111:24:111:32 | ... == ... | Assert.cs:111:24:111:32 | After ... == ... | | +| Assert.cs:111:24:111:32 | After ... == ... | Assert.cs:111:9:111:33 | call to method IsFalse | | +| Assert.cs:111:24:111:32 | Before ... == ... | Assert.cs:111:24:111:24 | access to local variable s | | | Assert.cs:111:29:111:32 | null | Assert.cs:111:24:111:32 | ... == ... | | -| Assert.cs:112:9:112:35 | call to method WriteLine | Assert.cs:114:9:114:26 | ...; | | -| Assert.cs:112:9:112:36 | ...; | Assert.cs:112:27:112:27 | access to local variable s | | +| Assert.cs:112:9:112:35 | After call to method WriteLine | Assert.cs:112:9:112:36 | After ...; | | +| Assert.cs:112:9:112:35 | Before call to method WriteLine | Assert.cs:112:27:112:34 | Before access to property Length | | +| Assert.cs:112:9:112:35 | call to method WriteLine | Assert.cs:112:9:112:35 | After call to method WriteLine | | +| Assert.cs:112:9:112:36 | ...; | Assert.cs:112:9:112:35 | Before call to method WriteLine | | +| Assert.cs:112:9:112:36 | After ...; | Assert.cs:114:9:114:26 | ...; | | | Assert.cs:112:27:112:27 | access to local variable s | Assert.cs:112:27:112:34 | access to property Length | | -| Assert.cs:112:27:112:34 | access to property Length | Assert.cs:112:9:112:35 | call to method WriteLine | | -| Assert.cs:114:9:114:25 | ... = ... | Assert.cs:115:9:115:38 | ...; | | -| Assert.cs:114:9:114:26 | ...; | Assert.cs:114:13:114:13 | access to parameter b | | -| Assert.cs:114:13:114:13 | access to parameter b | Assert.cs:114:17:114:20 | null | true | -| Assert.cs:114:13:114:13 | access to parameter b | Assert.cs:114:24:114:25 | "" | false | -| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:114:9:114:25 | ... = ... | | -| Assert.cs:114:17:114:20 | null | Assert.cs:114:13:114:25 | ... ? ... : ... | | -| Assert.cs:114:24:114:25 | "" | Assert.cs:114:13:114:25 | ... ? ... : ... | | -| Assert.cs:115:9:115:37 | call to method IsTrue | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | -| Assert.cs:115:9:115:37 | call to method IsTrue | Assert.cs:116:9:116:36 | ...; | | -| Assert.cs:115:9:115:38 | ...; | Assert.cs:115:23:115:23 | access to local variable s | | +| Assert.cs:112:27:112:34 | After access to property Length | Assert.cs:112:9:112:35 | call to method WriteLine | | +| Assert.cs:112:27:112:34 | Before access to property Length | Assert.cs:112:27:112:27 | access to local variable s | | +| Assert.cs:112:27:112:34 | access to property Length | Assert.cs:112:27:112:34 | After access to property Length | | +| Assert.cs:114:9:114:9 | access to local variable s | Assert.cs:114:13:114:25 | ... ? ... : ... | | +| Assert.cs:114:9:114:25 | ... = ... | Assert.cs:114:9:114:25 | After ... = ... | | +| Assert.cs:114:9:114:25 | After ... = ... | Assert.cs:114:9:114:26 | After ...; | | +| Assert.cs:114:9:114:25 | Before ... = ... | Assert.cs:114:9:114:9 | access to local variable s | | +| Assert.cs:114:9:114:26 | ...; | Assert.cs:114:9:114:25 | Before ... = ... | | +| Assert.cs:114:9:114:26 | After ...; | Assert.cs:115:9:115:38 | ...; | | +| Assert.cs:114:13:114:13 | After access to parameter b [false] | Assert.cs:114:24:114:25 | "" | | +| Assert.cs:114:13:114:13 | After access to parameter b [true] | Assert.cs:114:17:114:20 | null | | +| Assert.cs:114:13:114:13 | access to parameter b | Assert.cs:114:13:114:13 | After access to parameter b [false] | false | +| Assert.cs:114:13:114:13 | access to parameter b | Assert.cs:114:13:114:13 | After access to parameter b [true] | true | +| Assert.cs:114:13:114:25 | ... ? ... : ... | Assert.cs:114:13:114:13 | access to parameter b | | +| Assert.cs:114:13:114:25 | After ... ? ... : ... | Assert.cs:114:9:114:25 | ... = ... | | +| Assert.cs:114:17:114:20 | null | Assert.cs:114:13:114:25 | After ... ? ... : ... | | +| Assert.cs:114:24:114:25 | "" | Assert.cs:114:13:114:25 | After ... ? ... : ... | | +| Assert.cs:115:9:115:37 | After call to method IsTrue | Assert.cs:115:9:115:38 | After ...; | | +| Assert.cs:115:9:115:37 | Before call to method IsTrue | Assert.cs:115:23:115:36 | ... && ... | | +| Assert.cs:115:9:115:37 | call to method IsTrue | Assert.cs:84:10:84:12 | Exceptional Exit | exception | +| Assert.cs:115:9:115:37 | call to method IsTrue | Assert.cs:115:9:115:37 | After call to method IsTrue | | +| Assert.cs:115:9:115:38 | ...; | Assert.cs:115:9:115:37 | Before call to method IsTrue | | +| Assert.cs:115:9:115:38 | After ...; | Assert.cs:116:9:116:36 | ...; | | | Assert.cs:115:23:115:23 | access to local variable s | Assert.cs:115:28:115:31 | null | | -| Assert.cs:115:23:115:31 | ... != ... | Assert.cs:115:23:115:36 | ... && ... | false | -| Assert.cs:115:23:115:31 | ... != ... | Assert.cs:115:36:115:36 | access to parameter b | true | -| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:115:9:115:37 | call to method IsTrue | | +| Assert.cs:115:23:115:31 | ... != ... | Assert.cs:115:23:115:31 | After ... != ... [false] | false | +| Assert.cs:115:23:115:31 | ... != ... | Assert.cs:115:23:115:31 | After ... != ... [true] | true | +| Assert.cs:115:23:115:31 | After ... != ... [false] | Assert.cs:115:23:115:36 | After ... && ... | | +| Assert.cs:115:23:115:31 | After ... != ... [true] | Assert.cs:115:36:115:36 | access to parameter b | | +| Assert.cs:115:23:115:31 | Before ... != ... | Assert.cs:115:23:115:23 | access to local variable s | | +| Assert.cs:115:23:115:36 | ... && ... | Assert.cs:115:23:115:31 | Before ... != ... | | +| Assert.cs:115:23:115:36 | After ... && ... | Assert.cs:115:9:115:37 | call to method IsTrue | | | Assert.cs:115:28:115:31 | null | Assert.cs:115:23:115:31 | ... != ... | | -| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:23:115:36 | ... && ... | | -| Assert.cs:116:9:116:35 | call to method WriteLine | Assert.cs:118:9:118:26 | ...; | | -| Assert.cs:116:9:116:36 | ...; | Assert.cs:116:27:116:27 | access to local variable s | | +| Assert.cs:115:36:115:36 | access to parameter b | Assert.cs:115:23:115:36 | After ... && ... | | +| Assert.cs:116:9:116:35 | After call to method WriteLine | Assert.cs:116:9:116:36 | After ...; | | +| Assert.cs:116:9:116:35 | Before call to method WriteLine | Assert.cs:116:27:116:34 | Before access to property Length | | +| Assert.cs:116:9:116:35 | call to method WriteLine | Assert.cs:116:9:116:35 | After call to method WriteLine | | +| Assert.cs:116:9:116:36 | ...; | Assert.cs:116:9:116:35 | Before call to method WriteLine | | +| Assert.cs:116:9:116:36 | After ...; | Assert.cs:118:9:118:26 | ...; | | | Assert.cs:116:27:116:27 | access to local variable s | Assert.cs:116:27:116:34 | access to property Length | | -| Assert.cs:116:27:116:34 | access to property Length | Assert.cs:116:9:116:35 | call to method WriteLine | | -| Assert.cs:118:9:118:25 | ... = ... | Assert.cs:119:9:119:40 | ...; | | -| Assert.cs:118:9:118:26 | ...; | Assert.cs:118:13:118:13 | access to parameter b | | -| Assert.cs:118:13:118:13 | access to parameter b | Assert.cs:118:17:118:20 | null | true | -| Assert.cs:118:13:118:13 | access to parameter b | Assert.cs:118:24:118:25 | "" | false | -| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:118:9:118:25 | ... = ... | | -| Assert.cs:118:17:118:20 | null | Assert.cs:118:13:118:25 | ... ? ... : ... | | -| Assert.cs:118:24:118:25 | "" | Assert.cs:118:13:118:25 | ... ? ... : ... | | -| Assert.cs:119:9:119:39 | call to method IsFalse | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | -| Assert.cs:119:9:119:39 | call to method IsFalse | Assert.cs:120:9:120:36 | ...; | | -| Assert.cs:119:9:119:40 | ...; | Assert.cs:119:24:119:24 | access to local variable s | | +| Assert.cs:116:27:116:34 | After access to property Length | Assert.cs:116:9:116:35 | call to method WriteLine | | +| Assert.cs:116:27:116:34 | Before access to property Length | Assert.cs:116:27:116:27 | access to local variable s | | +| Assert.cs:116:27:116:34 | access to property Length | Assert.cs:116:27:116:34 | After access to property Length | | +| Assert.cs:118:9:118:9 | access to local variable s | Assert.cs:118:13:118:25 | ... ? ... : ... | | +| Assert.cs:118:9:118:25 | ... = ... | Assert.cs:118:9:118:25 | After ... = ... | | +| Assert.cs:118:9:118:25 | After ... = ... | Assert.cs:118:9:118:26 | After ...; | | +| Assert.cs:118:9:118:25 | Before ... = ... | Assert.cs:118:9:118:9 | access to local variable s | | +| Assert.cs:118:9:118:26 | ...; | Assert.cs:118:9:118:25 | Before ... = ... | | +| Assert.cs:118:9:118:26 | After ...; | Assert.cs:119:9:119:40 | ...; | | +| Assert.cs:118:13:118:13 | After access to parameter b [false] | Assert.cs:118:24:118:25 | "" | | +| Assert.cs:118:13:118:13 | After access to parameter b [true] | Assert.cs:118:17:118:20 | null | | +| Assert.cs:118:13:118:13 | access to parameter b | Assert.cs:118:13:118:13 | After access to parameter b [false] | false | +| Assert.cs:118:13:118:13 | access to parameter b | Assert.cs:118:13:118:13 | After access to parameter b [true] | true | +| Assert.cs:118:13:118:25 | ... ? ... : ... | Assert.cs:118:13:118:13 | access to parameter b | | +| Assert.cs:118:13:118:25 | After ... ? ... : ... | Assert.cs:118:9:118:25 | ... = ... | | +| Assert.cs:118:17:118:20 | null | Assert.cs:118:13:118:25 | After ... ? ... : ... | | +| Assert.cs:118:24:118:25 | "" | Assert.cs:118:13:118:25 | After ... ? ... : ... | | +| Assert.cs:119:9:119:39 | After call to method IsFalse | Assert.cs:119:9:119:40 | After ...; | | +| Assert.cs:119:9:119:39 | Before call to method IsFalse | Assert.cs:119:24:119:38 | ... \|\| ... | | +| Assert.cs:119:9:119:39 | call to method IsFalse | Assert.cs:84:10:84:12 | Exceptional Exit | exception | +| Assert.cs:119:9:119:39 | call to method IsFalse | Assert.cs:119:9:119:39 | After call to method IsFalse | | +| Assert.cs:119:9:119:40 | ...; | Assert.cs:119:9:119:39 | Before call to method IsFalse | | +| Assert.cs:119:9:119:40 | After ...; | Assert.cs:120:9:120:36 | ...; | | | Assert.cs:119:24:119:24 | access to local variable s | Assert.cs:119:29:119:32 | null | | -| Assert.cs:119:24:119:32 | ... == ... | Assert.cs:119:24:119:38 | ... \|\| ... | true | -| Assert.cs:119:24:119:32 | ... == ... | Assert.cs:119:38:119:38 | access to parameter b | false | -| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:119:9:119:39 | call to method IsFalse | | +| Assert.cs:119:24:119:32 | ... == ... | Assert.cs:119:24:119:32 | After ... == ... [false] | false | +| Assert.cs:119:24:119:32 | ... == ... | Assert.cs:119:24:119:32 | After ... == ... [true] | true | +| Assert.cs:119:24:119:32 | After ... == ... [false] | Assert.cs:119:37:119:38 | !... | | +| Assert.cs:119:24:119:32 | After ... == ... [true] | Assert.cs:119:24:119:38 | After ... \|\| ... | | +| Assert.cs:119:24:119:32 | Before ... == ... | Assert.cs:119:24:119:24 | access to local variable s | | +| Assert.cs:119:24:119:38 | ... \|\| ... | Assert.cs:119:24:119:32 | Before ... == ... | | +| Assert.cs:119:24:119:38 | After ... \|\| ... | Assert.cs:119:9:119:39 | call to method IsFalse | | | Assert.cs:119:29:119:32 | null | Assert.cs:119:24:119:32 | ... == ... | | -| Assert.cs:119:37:119:38 | !... | Assert.cs:119:24:119:38 | ... \|\| ... | | -| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:37:119:38 | !... | | -| Assert.cs:120:9:120:35 | call to method WriteLine | Assert.cs:122:9:122:26 | ...; | | -| Assert.cs:120:9:120:36 | ...; | Assert.cs:120:27:120:27 | access to local variable s | | +| Assert.cs:119:37:119:38 | !... | Assert.cs:119:38:119:38 | access to parameter b | | +| Assert.cs:119:37:119:38 | After !... | Assert.cs:119:24:119:38 | After ... \|\| ... | | +| Assert.cs:119:38:119:38 | access to parameter b | Assert.cs:119:37:119:38 | After !... | | +| Assert.cs:120:9:120:35 | After call to method WriteLine | Assert.cs:120:9:120:36 | After ...; | | +| Assert.cs:120:9:120:35 | Before call to method WriteLine | Assert.cs:120:27:120:34 | Before access to property Length | | +| Assert.cs:120:9:120:35 | call to method WriteLine | Assert.cs:120:9:120:35 | After call to method WriteLine | | +| Assert.cs:120:9:120:36 | ...; | Assert.cs:120:9:120:35 | Before call to method WriteLine | | +| Assert.cs:120:9:120:36 | After ...; | Assert.cs:122:9:122:26 | ...; | | | Assert.cs:120:27:120:27 | access to local variable s | Assert.cs:120:27:120:34 | access to property Length | | -| Assert.cs:120:27:120:34 | access to property Length | Assert.cs:120:9:120:35 | call to method WriteLine | | -| Assert.cs:122:9:122:25 | ... = ... | Assert.cs:123:9:123:38 | ...; | | -| Assert.cs:122:9:122:26 | ...; | Assert.cs:122:13:122:13 | access to parameter b | | -| Assert.cs:122:13:122:13 | access to parameter b | Assert.cs:122:17:122:20 | null | true | -| Assert.cs:122:13:122:13 | access to parameter b | Assert.cs:122:24:122:25 | "" | false | -| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:122:9:122:25 | ... = ... | | -| Assert.cs:122:17:122:20 | null | Assert.cs:122:13:122:25 | ... ? ... : ... | | -| Assert.cs:122:24:122:25 | "" | Assert.cs:122:13:122:25 | ... ? ... : ... | | -| Assert.cs:123:9:123:37 | call to method IsTrue | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | -| Assert.cs:123:9:123:37 | call to method IsTrue | Assert.cs:124:9:124:36 | ...; | | -| Assert.cs:123:9:123:38 | ...; | Assert.cs:123:23:123:23 | access to local variable s | | +| Assert.cs:120:27:120:34 | After access to property Length | Assert.cs:120:9:120:35 | call to method WriteLine | | +| Assert.cs:120:27:120:34 | Before access to property Length | Assert.cs:120:27:120:27 | access to local variable s | | +| Assert.cs:120:27:120:34 | access to property Length | Assert.cs:120:27:120:34 | After access to property Length | | +| Assert.cs:122:9:122:9 | access to local variable s | Assert.cs:122:13:122:25 | ... ? ... : ... | | +| Assert.cs:122:9:122:25 | ... = ... | Assert.cs:122:9:122:25 | After ... = ... | | +| Assert.cs:122:9:122:25 | After ... = ... | Assert.cs:122:9:122:26 | After ...; | | +| Assert.cs:122:9:122:25 | Before ... = ... | Assert.cs:122:9:122:9 | access to local variable s | | +| Assert.cs:122:9:122:26 | ...; | Assert.cs:122:9:122:25 | Before ... = ... | | +| Assert.cs:122:9:122:26 | After ...; | Assert.cs:123:9:123:38 | ...; | | +| Assert.cs:122:13:122:13 | After access to parameter b [false] | Assert.cs:122:24:122:25 | "" | | +| Assert.cs:122:13:122:13 | After access to parameter b [true] | Assert.cs:122:17:122:20 | null | | +| Assert.cs:122:13:122:13 | access to parameter b | Assert.cs:122:13:122:13 | After access to parameter b [false] | false | +| Assert.cs:122:13:122:13 | access to parameter b | Assert.cs:122:13:122:13 | After access to parameter b [true] | true | +| Assert.cs:122:13:122:25 | ... ? ... : ... | Assert.cs:122:13:122:13 | access to parameter b | | +| Assert.cs:122:13:122:25 | After ... ? ... : ... | Assert.cs:122:9:122:25 | ... = ... | | +| Assert.cs:122:17:122:20 | null | Assert.cs:122:13:122:25 | After ... ? ... : ... | | +| Assert.cs:122:24:122:25 | "" | Assert.cs:122:13:122:25 | After ... ? ... : ... | | +| Assert.cs:123:9:123:37 | After call to method IsTrue | Assert.cs:123:9:123:38 | After ...; | | +| Assert.cs:123:9:123:37 | Before call to method IsTrue | Assert.cs:123:23:123:36 | ... && ... | | +| Assert.cs:123:9:123:37 | call to method IsTrue | Assert.cs:84:10:84:12 | Exceptional Exit | exception | +| Assert.cs:123:9:123:37 | call to method IsTrue | Assert.cs:123:9:123:37 | After call to method IsTrue | | +| Assert.cs:123:9:123:38 | ...; | Assert.cs:123:9:123:37 | Before call to method IsTrue | | +| Assert.cs:123:9:123:38 | After ...; | Assert.cs:124:9:124:36 | ...; | | | Assert.cs:123:23:123:23 | access to local variable s | Assert.cs:123:28:123:31 | null | | -| Assert.cs:123:23:123:31 | ... == ... | Assert.cs:123:23:123:36 | ... && ... | false | -| Assert.cs:123:23:123:31 | ... == ... | Assert.cs:123:36:123:36 | access to parameter b | true | -| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:123:9:123:37 | call to method IsTrue | | +| Assert.cs:123:23:123:31 | ... == ... | Assert.cs:123:23:123:31 | After ... == ... [false] | false | +| Assert.cs:123:23:123:31 | ... == ... | Assert.cs:123:23:123:31 | After ... == ... [true] | true | +| Assert.cs:123:23:123:31 | After ... == ... [false] | Assert.cs:123:23:123:36 | After ... && ... | | +| Assert.cs:123:23:123:31 | After ... == ... [true] | Assert.cs:123:36:123:36 | access to parameter b | | +| Assert.cs:123:23:123:31 | Before ... == ... | Assert.cs:123:23:123:23 | access to local variable s | | +| Assert.cs:123:23:123:36 | ... && ... | Assert.cs:123:23:123:31 | Before ... == ... | | +| Assert.cs:123:23:123:36 | After ... && ... | Assert.cs:123:9:123:37 | call to method IsTrue | | | Assert.cs:123:28:123:31 | null | Assert.cs:123:23:123:31 | ... == ... | | -| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:23:123:36 | ... && ... | | -| Assert.cs:124:9:124:35 | call to method WriteLine | Assert.cs:126:9:126:26 | ...; | | -| Assert.cs:124:9:124:36 | ...; | Assert.cs:124:27:124:27 | access to local variable s | | +| Assert.cs:123:36:123:36 | access to parameter b | Assert.cs:123:23:123:36 | After ... && ... | | +| Assert.cs:124:9:124:35 | After call to method WriteLine | Assert.cs:124:9:124:36 | After ...; | | +| Assert.cs:124:9:124:35 | Before call to method WriteLine | Assert.cs:124:27:124:34 | Before access to property Length | | +| Assert.cs:124:9:124:35 | call to method WriteLine | Assert.cs:124:9:124:35 | After call to method WriteLine | | +| Assert.cs:124:9:124:36 | ...; | Assert.cs:124:9:124:35 | Before call to method WriteLine | | +| Assert.cs:124:9:124:36 | After ...; | Assert.cs:126:9:126:26 | ...; | | | Assert.cs:124:27:124:27 | access to local variable s | Assert.cs:124:27:124:34 | access to property Length | | -| Assert.cs:124:27:124:34 | access to property Length | Assert.cs:124:9:124:35 | call to method WriteLine | | -| Assert.cs:126:9:126:25 | ... = ... | Assert.cs:127:9:127:40 | ...; | | -| Assert.cs:126:9:126:26 | ...; | Assert.cs:126:13:126:13 | access to parameter b | | -| Assert.cs:126:13:126:13 | access to parameter b | Assert.cs:126:17:126:20 | null | true | -| Assert.cs:126:13:126:13 | access to parameter b | Assert.cs:126:24:126:25 | "" | false | -| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:126:9:126:25 | ... = ... | | -| Assert.cs:126:17:126:20 | null | Assert.cs:126:13:126:25 | ... ? ... : ... | | -| Assert.cs:126:24:126:25 | "" | Assert.cs:126:13:126:25 | ... ? ... : ... | | -| Assert.cs:127:9:127:39 | call to method IsFalse | Assert.cs:84:10:84:12 | exit M12 (abnormal) | exception | -| Assert.cs:127:9:127:39 | call to method IsFalse | Assert.cs:128:9:128:36 | ...; | | -| Assert.cs:127:9:127:40 | ...; | Assert.cs:127:24:127:24 | access to local variable s | | +| Assert.cs:124:27:124:34 | After access to property Length | Assert.cs:124:9:124:35 | call to method WriteLine | | +| Assert.cs:124:27:124:34 | Before access to property Length | Assert.cs:124:27:124:27 | access to local variable s | | +| Assert.cs:124:27:124:34 | access to property Length | Assert.cs:124:27:124:34 | After access to property Length | | +| Assert.cs:126:9:126:9 | access to local variable s | Assert.cs:126:13:126:25 | ... ? ... : ... | | +| Assert.cs:126:9:126:25 | ... = ... | Assert.cs:126:9:126:25 | After ... = ... | | +| Assert.cs:126:9:126:25 | After ... = ... | Assert.cs:126:9:126:26 | After ...; | | +| Assert.cs:126:9:126:25 | Before ... = ... | Assert.cs:126:9:126:9 | access to local variable s | | +| Assert.cs:126:9:126:26 | ...; | Assert.cs:126:9:126:25 | Before ... = ... | | +| Assert.cs:126:9:126:26 | After ...; | Assert.cs:127:9:127:40 | ...; | | +| Assert.cs:126:13:126:13 | After access to parameter b [false] | Assert.cs:126:24:126:25 | "" | | +| Assert.cs:126:13:126:13 | After access to parameter b [true] | Assert.cs:126:17:126:20 | null | | +| Assert.cs:126:13:126:13 | access to parameter b | Assert.cs:126:13:126:13 | After access to parameter b [false] | false | +| Assert.cs:126:13:126:13 | access to parameter b | Assert.cs:126:13:126:13 | After access to parameter b [true] | true | +| Assert.cs:126:13:126:25 | ... ? ... : ... | Assert.cs:126:13:126:13 | access to parameter b | | +| Assert.cs:126:13:126:25 | After ... ? ... : ... | Assert.cs:126:9:126:25 | ... = ... | | +| Assert.cs:126:17:126:20 | null | Assert.cs:126:13:126:25 | After ... ? ... : ... | | +| Assert.cs:126:24:126:25 | "" | Assert.cs:126:13:126:25 | After ... ? ... : ... | | +| Assert.cs:127:9:127:39 | After call to method IsFalse | Assert.cs:127:9:127:40 | After ...; | | +| Assert.cs:127:9:127:39 | Before call to method IsFalse | Assert.cs:127:24:127:38 | ... \|\| ... | | +| Assert.cs:127:9:127:39 | call to method IsFalse | Assert.cs:84:10:84:12 | Exceptional Exit | exception | +| Assert.cs:127:9:127:39 | call to method IsFalse | Assert.cs:127:9:127:39 | After call to method IsFalse | | +| Assert.cs:127:9:127:40 | ...; | Assert.cs:127:9:127:39 | Before call to method IsFalse | | +| Assert.cs:127:9:127:40 | After ...; | Assert.cs:128:9:128:36 | ...; | | | Assert.cs:127:24:127:24 | access to local variable s | Assert.cs:127:29:127:32 | null | | -| Assert.cs:127:24:127:32 | ... != ... | Assert.cs:127:24:127:38 | ... \|\| ... | true | -| Assert.cs:127:24:127:32 | ... != ... | Assert.cs:127:38:127:38 | access to parameter b | false | -| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:127:9:127:39 | call to method IsFalse | | +| Assert.cs:127:24:127:32 | ... != ... | Assert.cs:127:24:127:32 | After ... != ... [false] | false | +| Assert.cs:127:24:127:32 | ... != ... | Assert.cs:127:24:127:32 | After ... != ... [true] | true | +| Assert.cs:127:24:127:32 | After ... != ... [false] | Assert.cs:127:37:127:38 | !... | | +| Assert.cs:127:24:127:32 | After ... != ... [true] | Assert.cs:127:24:127:38 | After ... \|\| ... | | +| Assert.cs:127:24:127:32 | Before ... != ... | Assert.cs:127:24:127:24 | access to local variable s | | +| Assert.cs:127:24:127:38 | ... \|\| ... | Assert.cs:127:24:127:32 | Before ... != ... | | +| Assert.cs:127:24:127:38 | After ... \|\| ... | Assert.cs:127:9:127:39 | call to method IsFalse | | | Assert.cs:127:29:127:32 | null | Assert.cs:127:24:127:32 | ... != ... | | -| Assert.cs:127:37:127:38 | !... | Assert.cs:127:24:127:38 | ... \|\| ... | | -| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:37:127:38 | !... | | -| Assert.cs:128:9:128:35 | call to method WriteLine | Assert.cs:84:10:84:12 | exit M12 (normal) | | -| Assert.cs:128:9:128:36 | ...; | Assert.cs:128:27:128:27 | access to local variable s | | +| Assert.cs:127:37:127:38 | !... | Assert.cs:127:38:127:38 | access to parameter b | | +| Assert.cs:127:37:127:38 | After !... | Assert.cs:127:24:127:38 | After ... \|\| ... | | +| Assert.cs:127:38:127:38 | access to parameter b | Assert.cs:127:37:127:38 | After !... | | +| Assert.cs:128:9:128:35 | After call to method WriteLine | Assert.cs:128:9:128:36 | After ...; | | +| Assert.cs:128:9:128:35 | Before call to method WriteLine | Assert.cs:128:27:128:34 | Before access to property Length | | +| Assert.cs:128:9:128:35 | call to method WriteLine | Assert.cs:128:9:128:35 | After call to method WriteLine | | +| Assert.cs:128:9:128:36 | ...; | Assert.cs:128:9:128:35 | Before call to method WriteLine | | +| Assert.cs:128:9:128:36 | After ...; | Assert.cs:85:5:129:5 | After {...} | | | Assert.cs:128:27:128:27 | access to local variable s | Assert.cs:128:27:128:34 | access to property Length | | -| Assert.cs:128:27:128:34 | access to property Length | Assert.cs:128:9:128:35 | call to method WriteLine | | -| Assert.cs:131:18:131:32 | enter AssertTrueFalse | Assert.cs:135:5:136:5 | {...} | | -| Assert.cs:131:18:131:32 | exit AssertTrueFalse (normal) | Assert.cs:131:18:131:32 | exit AssertTrueFalse | | -| Assert.cs:135:5:136:5 | {...} | Assert.cs:131:18:131:32 | exit AssertTrueFalse (normal) | | -| Assert.cs:138:10:138:12 | enter M13 | Assert.cs:139:5:142:5 | {...} | | -| Assert.cs:138:10:138:12 | exit M13 (abnormal) | Assert.cs:138:10:138:12 | exit M13 | | -| Assert.cs:138:10:138:12 | exit M13 (normal) | Assert.cs:138:10:138:12 | exit M13 | | +| Assert.cs:128:27:128:34 | After access to property Length | Assert.cs:128:9:128:35 | call to method WriteLine | | +| Assert.cs:128:27:128:34 | Before access to property Length | Assert.cs:128:27:128:27 | access to local variable s | | +| Assert.cs:128:27:128:34 | access to property Length | Assert.cs:128:27:128:34 | After access to property Length | | +| Assert.cs:131:18:131:32 | Entry | Assert.cs:132:74:132:83 | condition1 | | +| Assert.cs:131:18:131:32 | Normal Exit | Assert.cs:131:18:131:32 | Exit | | +| Assert.cs:132:74:132:83 | condition1 | Assert.cs:133:73:133:82 | condition2 | | +| Assert.cs:133:73:133:82 | condition2 | Assert.cs:134:17:134:28 | nonCondition | | +| Assert.cs:134:17:134:28 | nonCondition | Assert.cs:135:5:136:5 | {...} | | +| Assert.cs:135:5:136:5 | {...} | Assert.cs:131:18:131:32 | Normal Exit | | +| Assert.cs:138:10:138:12 | Entry | Assert.cs:138:19:138:20 | b1 | | +| Assert.cs:138:10:138:12 | Exceptional Exit | Assert.cs:138:10:138:12 | Exit | | +| Assert.cs:138:10:138:12 | Normal Exit | Assert.cs:138:10:138:12 | Exit | | +| Assert.cs:138:19:138:20 | b1 | Assert.cs:138:28:138:29 | b2 | | +| Assert.cs:138:28:138:29 | b2 | Assert.cs:138:37:138:38 | b3 | | +| Assert.cs:138:37:138:38 | b3 | Assert.cs:139:5:142:5 | {...} | | | Assert.cs:139:5:142:5 | {...} | Assert.cs:140:9:140:36 | ...; | | -| Assert.cs:140:9:140:35 | call to method AssertTrueFalse | Assert.cs:138:10:138:12 | exit M13 (abnormal) | exception | -| Assert.cs:140:9:140:35 | call to method AssertTrueFalse | Assert.cs:141:9:141:15 | return ...; | | +| Assert.cs:140:9:140:35 | After call to method AssertTrueFalse | Assert.cs:140:9:140:36 | After ...; | | +| Assert.cs:140:9:140:35 | Before call to method AssertTrueFalse | Assert.cs:140:9:140:35 | this access | | +| Assert.cs:140:9:140:35 | call to method AssertTrueFalse | Assert.cs:138:10:138:12 | Exceptional Exit | exception | +| Assert.cs:140:9:140:35 | call to method AssertTrueFalse | Assert.cs:140:9:140:35 | After call to method AssertTrueFalse | | | Assert.cs:140:9:140:35 | this access | Assert.cs:140:25:140:26 | access to parameter b1 | | -| Assert.cs:140:9:140:36 | ...; | Assert.cs:140:9:140:35 | this access | | +| Assert.cs:140:9:140:36 | ...; | Assert.cs:140:9:140:35 | Before call to method AssertTrueFalse | | +| Assert.cs:140:9:140:36 | After ...; | Assert.cs:141:9:141:15 | Before return ...; | | | Assert.cs:140:25:140:26 | access to parameter b1 | Assert.cs:140:29:140:30 | access to parameter b2 | | | Assert.cs:140:29:140:30 | access to parameter b2 | Assert.cs:140:33:140:34 | access to parameter b3 | | | Assert.cs:140:33:140:34 | access to parameter b3 | Assert.cs:140:9:140:35 | call to method AssertTrueFalse | | -| Assert.cs:141:9:141:15 | return ...; | Assert.cs:138:10:138:12 | exit M13 (normal) | return | -| Assignments.cs:1:7:1:17 | call to constructor Object | Assignments.cs:1:7:1:17 | {...} | | -| Assignments.cs:1:7:1:17 | call to method | Assignments.cs:1:7:1:17 | call to constructor Object | | -| Assignments.cs:1:7:1:17 | enter Assignments | Assignments.cs:1:7:1:17 | this access | | -| Assignments.cs:1:7:1:17 | exit Assignments (normal) | Assignments.cs:1:7:1:17 | exit Assignments | | +| Assert.cs:141:9:141:15 | Before return ...; | Assert.cs:141:9:141:15 | return ...; | | +| Assert.cs:141:9:141:15 | return ...; | Assert.cs:138:10:138:12 | Normal Exit | return | +| Assignments.cs:1:7:1:17 | After call to constructor Object | Assignments.cs:1:7:1:17 | {...} | | +| Assignments.cs:1:7:1:17 | After call to method | Assignments.cs:1:7:1:17 | Before call to constructor Object | | +| Assignments.cs:1:7:1:17 | Before call to constructor Object | Assignments.cs:1:7:1:17 | call to constructor Object | | +| Assignments.cs:1:7:1:17 | Before call to method | Assignments.cs:1:7:1:17 | this access | | +| Assignments.cs:1:7:1:17 | Entry | Assignments.cs:1:7:1:17 | Before call to method | | +| Assignments.cs:1:7:1:17 | Normal Exit | Assignments.cs:1:7:1:17 | Exit | | +| Assignments.cs:1:7:1:17 | call to constructor Object | Assignments.cs:1:7:1:17 | After call to constructor Object | | +| Assignments.cs:1:7:1:17 | call to method | Assignments.cs:1:7:1:17 | After call to method | | | Assignments.cs:1:7:1:17 | this access | Assignments.cs:1:7:1:17 | call to method | | -| Assignments.cs:1:7:1:17 | {...} | Assignments.cs:1:7:1:17 | exit Assignments (normal) | | -| Assignments.cs:3:10:3:10 | enter M | Assignments.cs:4:5:15:5 | {...} | | -| Assignments.cs:3:10:3:10 | exit M (normal) | Assignments.cs:3:10:3:10 | exit M | | +| Assignments.cs:1:7:1:17 | {...} | Assignments.cs:1:7:1:17 | Normal Exit | | +| Assignments.cs:3:10:3:10 | Entry | Assignments.cs:4:5:15:5 | {...} | | +| Assignments.cs:3:10:3:10 | Normal Exit | Assignments.cs:3:10:3:10 | Exit | | +| Assignments.cs:4:5:15:5 | After {...} | Assignments.cs:3:10:3:10 | Normal Exit | | | Assignments.cs:4:5:15:5 | {...} | Assignments.cs:5:9:5:18 | ... ...; | | -| Assignments.cs:5:9:5:18 | ... ...; | Assignments.cs:5:17:5:17 | 0 | | -| Assignments.cs:5:13:5:17 | Int32 x = ... | Assignments.cs:6:9:6:15 | ...; | | +| Assignments.cs:5:9:5:18 | ... ...; | Assignments.cs:5:13:5:17 | Before Int32 x = ... | | +| Assignments.cs:5:9:5:18 | After ... ...; | Assignments.cs:6:9:6:15 | ...; | | +| Assignments.cs:5:13:5:13 | access to local variable x | Assignments.cs:5:17:5:17 | 0 | | +| Assignments.cs:5:13:5:17 | After Int32 x = ... | Assignments.cs:5:9:5:18 | After ... ...; | | +| Assignments.cs:5:13:5:17 | Before Int32 x = ... | Assignments.cs:5:13:5:13 | access to local variable x | | +| Assignments.cs:5:13:5:17 | Int32 x = ... | Assignments.cs:5:13:5:17 | After Int32 x = ... | | | Assignments.cs:5:17:5:17 | 0 | Assignments.cs:5:13:5:17 | Int32 x = ... | | | Assignments.cs:6:9:6:9 | access to local variable x | Assignments.cs:6:14:6:14 | 1 | | -| Assignments.cs:6:9:6:14 | ... += ... | Assignments.cs:8:9:8:22 | ... ...; | | -| Assignments.cs:6:9:6:15 | ...; | Assignments.cs:6:9:6:9 | access to local variable x | | +| Assignments.cs:6:9:6:14 | ... += ... | Assignments.cs:6:9:6:14 | After ... += ... | | +| Assignments.cs:6:9:6:14 | After ... += ... | Assignments.cs:6:9:6:15 | After ...; | | +| Assignments.cs:6:9:6:14 | Before ... += ... | Assignments.cs:6:9:6:9 | access to local variable x | | +| Assignments.cs:6:9:6:15 | ...; | Assignments.cs:6:9:6:14 | Before ... += ... | | +| Assignments.cs:6:9:6:15 | After ...; | Assignments.cs:8:9:8:22 | ... ...; | | | Assignments.cs:6:14:6:14 | 1 | Assignments.cs:6:9:6:14 | ... += ... | | -| Assignments.cs:8:9:8:22 | ... ...; | Assignments.cs:8:21:8:21 | 0 | | -| Assignments.cs:8:17:8:21 | dynamic d = ... | Assignments.cs:9:9:9:15 | ...; | | +| Assignments.cs:8:9:8:22 | ... ...; | Assignments.cs:8:17:8:21 | Before dynamic d = ... | | +| Assignments.cs:8:9:8:22 | After ... ...; | Assignments.cs:9:9:9:15 | ...; | | +| Assignments.cs:8:17:8:17 | access to local variable d | Assignments.cs:8:21:8:21 | Before (...) ... | | +| Assignments.cs:8:17:8:21 | After dynamic d = ... | Assignments.cs:8:9:8:22 | After ... ...; | | +| Assignments.cs:8:17:8:21 | Before dynamic d = ... | Assignments.cs:8:17:8:17 | access to local variable d | | +| Assignments.cs:8:17:8:21 | dynamic d = ... | Assignments.cs:8:17:8:21 | After dynamic d = ... | | | Assignments.cs:8:21:8:21 | 0 | Assignments.cs:8:21:8:21 | (...) ... | | -| Assignments.cs:8:21:8:21 | (...) ... | Assignments.cs:8:17:8:21 | dynamic d = ... | | +| Assignments.cs:8:21:8:21 | (...) ... | Assignments.cs:8:21:8:21 | After (...) ... | | +| Assignments.cs:8:21:8:21 | After (...) ... | Assignments.cs:8:17:8:21 | dynamic d = ... | | +| Assignments.cs:8:21:8:21 | Before (...) ... | Assignments.cs:8:21:8:21 | 0 | | | Assignments.cs:9:9:9:9 | access to local variable d | Assignments.cs:9:14:9:14 | 2 | | -| Assignments.cs:9:9:9:14 | ... -= ... | Assignments.cs:11:9:11:34 | ... ...; | | -| Assignments.cs:9:9:9:15 | ...; | Assignments.cs:9:9:9:9 | access to local variable d | | +| Assignments.cs:9:9:9:14 | ... -= ... | Assignments.cs:9:9:9:14 | After ... -= ... | | +| Assignments.cs:9:9:9:14 | After ... -= ... | Assignments.cs:9:9:9:15 | After ...; | | +| Assignments.cs:9:9:9:14 | Before ... -= ... | Assignments.cs:9:9:9:9 | access to local variable d | | +| Assignments.cs:9:9:9:15 | ...; | Assignments.cs:9:9:9:14 | Before ... -= ... | | +| Assignments.cs:9:9:9:15 | After ...; | Assignments.cs:11:9:11:34 | ... ...; | | | Assignments.cs:9:14:9:14 | 2 | Assignments.cs:9:9:9:14 | ... -= ... | | -| Assignments.cs:11:9:11:34 | ... ...; | Assignments.cs:11:17:11:33 | object creation of type Assignments | | -| Assignments.cs:11:13:11:33 | Assignments a = ... | Assignments.cs:12:9:12:18 | ...; | | -| Assignments.cs:11:17:11:33 | object creation of type Assignments | Assignments.cs:11:13:11:33 | Assignments a = ... | | +| Assignments.cs:11:9:11:34 | ... ...; | Assignments.cs:11:13:11:33 | Before Assignments a = ... | | +| Assignments.cs:11:9:11:34 | After ... ...; | Assignments.cs:12:9:12:18 | ...; | | +| Assignments.cs:11:13:11:13 | access to local variable a | Assignments.cs:11:17:11:33 | Before object creation of type Assignments | | +| Assignments.cs:11:13:11:33 | After Assignments a = ... | Assignments.cs:11:9:11:34 | After ... ...; | | +| Assignments.cs:11:13:11:33 | Assignments a = ... | Assignments.cs:11:13:11:33 | After Assignments a = ... | | +| Assignments.cs:11:13:11:33 | Before Assignments a = ... | Assignments.cs:11:13:11:13 | access to local variable a | | +| Assignments.cs:11:17:11:33 | After object creation of type Assignments | Assignments.cs:11:13:11:33 | Assignments a = ... | | +| Assignments.cs:11:17:11:33 | Before object creation of type Assignments | Assignments.cs:11:17:11:33 | object creation of type Assignments | | +| Assignments.cs:11:17:11:33 | object creation of type Assignments | Assignments.cs:11:17:11:33 | After object creation of type Assignments | | | Assignments.cs:12:9:12:9 | access to local variable a | Assignments.cs:12:14:12:17 | this access | | -| Assignments.cs:12:9:12:17 | ... += ... | Assignments.cs:14:9:14:36 | ...; | | -| Assignments.cs:12:9:12:18 | ...; | Assignments.cs:12:9:12:9 | access to local variable a | | +| Assignments.cs:12:9:12:17 | ... += ... | Assignments.cs:12:9:12:17 | After ... += ... | | +| Assignments.cs:12:9:12:17 | After ... += ... | Assignments.cs:12:9:12:18 | After ...; | | +| Assignments.cs:12:9:12:17 | Before ... += ... | Assignments.cs:12:9:12:9 | access to local variable a | | +| Assignments.cs:12:9:12:18 | ...; | Assignments.cs:12:9:12:17 | Before ... += ... | | +| Assignments.cs:12:9:12:18 | After ...; | Assignments.cs:14:9:14:36 | ...; | | | Assignments.cs:12:14:12:17 | this access | Assignments.cs:12:9:12:17 | ... += ... | | -| Assignments.cs:14:9:14:13 | access to event Event | Assignments.cs:14:9:14:35 | ... += ... | | -| Assignments.cs:14:9:14:13 | this access | Assignments.cs:14:18:14:35 | (...) => ... | | -| Assignments.cs:14:9:14:35 | ... += ... | Assignments.cs:3:10:3:10 | exit M (normal) | | -| Assignments.cs:14:9:14:36 | ...; | Assignments.cs:14:9:14:13 | this access | | -| Assignments.cs:14:18:14:35 | (...) => ... | Assignments.cs:14:9:14:13 | access to event Event | | -| Assignments.cs:14:18:14:35 | enter (...) => ... | Assignments.cs:14:33:14:35 | {...} | | -| Assignments.cs:14:18:14:35 | exit (...) => ... (normal) | Assignments.cs:14:18:14:35 | exit (...) => ... | | -| Assignments.cs:14:33:14:35 | {...} | Assignments.cs:14:18:14:35 | exit (...) => ... (normal) | | -| Assignments.cs:17:40:17:40 | enter + | Assignments.cs:18:5:20:5 | {...} | | -| Assignments.cs:17:40:17:40 | exit + (normal) | Assignments.cs:17:40:17:40 | exit + | | -| Assignments.cs:18:5:20:5 | {...} | Assignments.cs:19:16:19:16 | access to parameter x | | -| Assignments.cs:19:9:19:17 | return ...; | Assignments.cs:17:40:17:40 | exit + (normal) | return | +| Assignments.cs:14:9:14:13 | After access to event Event | Assignments.cs:14:18:14:35 | (...) => ... | | +| Assignments.cs:14:9:14:13 | Before access to event Event | Assignments.cs:14:9:14:13 | this access | | +| Assignments.cs:14:9:14:13 | access to event Event | Assignments.cs:14:9:14:13 | After access to event Event | | +| Assignments.cs:14:9:14:13 | this access | Assignments.cs:14:9:14:13 | access to event Event | | +| Assignments.cs:14:9:14:35 | ... += ... | Assignments.cs:14:9:14:35 | After ... += ... | | +| Assignments.cs:14:9:14:35 | After ... += ... | Assignments.cs:14:9:14:36 | After ...; | | +| Assignments.cs:14:9:14:35 | Before ... += ... | Assignments.cs:14:9:14:13 | Before access to event Event | | +| Assignments.cs:14:9:14:36 | ...; | Assignments.cs:14:9:14:35 | Before ... += ... | | +| Assignments.cs:14:9:14:36 | After ...; | Assignments.cs:4:5:15:5 | After {...} | | +| Assignments.cs:14:18:14:35 | (...) => ... | Assignments.cs:14:9:14:35 | ... += ... | | +| Assignments.cs:14:18:14:35 | Entry | Assignments.cs:14:19:14:24 | sender | | +| Assignments.cs:14:18:14:35 | Normal Exit | Assignments.cs:14:18:14:35 | Exit | | +| Assignments.cs:14:19:14:24 | sender | Assignments.cs:14:27:14:27 | e | | +| Assignments.cs:14:27:14:27 | e | Assignments.cs:14:33:14:35 | {...} | | +| Assignments.cs:14:33:14:35 | {...} | Assignments.cs:14:18:14:35 | Normal Exit | | +| Assignments.cs:17:40:17:40 | Entry | Assignments.cs:17:54:17:54 | x | | +| Assignments.cs:17:40:17:40 | Normal Exit | Assignments.cs:17:40:17:40 | Exit | | +| Assignments.cs:17:54:17:54 | x | Assignments.cs:17:69:17:69 | y | | +| Assignments.cs:17:69:17:69 | y | Assignments.cs:18:5:20:5 | {...} | | +| Assignments.cs:18:5:20:5 | {...} | Assignments.cs:19:9:19:17 | Before return ...; | | +| Assignments.cs:19:9:19:17 | Before return ...; | Assignments.cs:19:16:19:16 | access to parameter x | | +| Assignments.cs:19:9:19:17 | return ...; | Assignments.cs:17:40:17:40 | Normal Exit | return | | Assignments.cs:19:16:19:16 | access to parameter x | Assignments.cs:19:9:19:17 | return ...; | | -| Assignments.cs:27:10:27:23 | enter SetParamSingle | Assignments.cs:28:5:30:5 | {...} | | -| Assignments.cs:27:10:27:23 | exit SetParamSingle (normal) | Assignments.cs:27:10:27:23 | exit SetParamSingle | | +| Assignments.cs:27:10:27:23 | Entry | Assignments.cs:27:33:27:33 | x | | +| Assignments.cs:27:10:27:23 | Normal Exit | Assignments.cs:27:10:27:23 | Exit | | +| Assignments.cs:27:33:27:33 | x | Assignments.cs:28:5:30:5 | {...} | | +| Assignments.cs:28:5:30:5 | After {...} | Assignments.cs:27:10:27:23 | Normal Exit | | | Assignments.cs:28:5:30:5 | {...} | Assignments.cs:29:9:29:15 | ...; | | -| Assignments.cs:29:9:29:14 | ... = ... | Assignments.cs:27:10:27:23 | exit SetParamSingle (normal) | | -| Assignments.cs:29:9:29:15 | ...; | Assignments.cs:29:13:29:14 | 42 | | +| Assignments.cs:29:9:29:9 | access to parameter x | Assignments.cs:29:13:29:14 | 42 | | +| Assignments.cs:29:9:29:14 | ... = ... | Assignments.cs:29:9:29:14 | After ... = ... | | +| Assignments.cs:29:9:29:14 | After ... = ... | Assignments.cs:29:9:29:15 | After ...; | | +| Assignments.cs:29:9:29:14 | Before ... = ... | Assignments.cs:29:9:29:9 | access to parameter x | | +| Assignments.cs:29:9:29:15 | ...; | Assignments.cs:29:9:29:14 | Before ... = ... | | +| Assignments.cs:29:9:29:15 | After ...; | Assignments.cs:28:5:30:5 | After {...} | | | Assignments.cs:29:13:29:14 | 42 | Assignments.cs:29:9:29:14 | ... = ... | | -| Assignments.cs:32:10:32:22 | enter SetParamMulti | Assignments.cs:33:5:36:5 | {...} | | -| Assignments.cs:32:10:32:22 | exit SetParamMulti (normal) | Assignments.cs:32:10:32:22 | exit SetParamMulti | | +| Assignments.cs:32:10:32:22 | Entry | Assignments.cs:32:32:32:32 | x | | +| Assignments.cs:32:10:32:22 | Normal Exit | Assignments.cs:32:10:32:22 | Exit | | +| Assignments.cs:32:32:32:32 | x | Assignments.cs:32:42:32:42 | o | | +| Assignments.cs:32:42:32:42 | o | Assignments.cs:32:56:32:56 | y | | +| Assignments.cs:32:56:32:56 | y | Assignments.cs:33:5:36:5 | {...} | | +| Assignments.cs:33:5:36:5 | After {...} | Assignments.cs:32:10:32:22 | Normal Exit | | | Assignments.cs:33:5:36:5 | {...} | Assignments.cs:34:9:34:15 | ...; | | -| Assignments.cs:34:9:34:14 | ... = ... | Assignments.cs:35:9:35:20 | ...; | | -| Assignments.cs:34:9:34:15 | ...; | Assignments.cs:34:13:34:14 | 42 | | +| Assignments.cs:34:9:34:9 | access to parameter x | Assignments.cs:34:13:34:14 | 42 | | +| Assignments.cs:34:9:34:14 | ... = ... | Assignments.cs:34:9:34:14 | After ... = ... | | +| Assignments.cs:34:9:34:14 | After ... = ... | Assignments.cs:34:9:34:15 | After ...; | | +| Assignments.cs:34:9:34:14 | Before ... = ... | Assignments.cs:34:9:34:9 | access to parameter x | | +| Assignments.cs:34:9:34:15 | ...; | Assignments.cs:34:9:34:14 | Before ... = ... | | +| Assignments.cs:34:9:34:15 | After ...; | Assignments.cs:35:9:35:20 | ...; | | | Assignments.cs:34:13:34:14 | 42 | Assignments.cs:34:9:34:14 | ... = ... | | -| Assignments.cs:35:9:35:19 | ... = ... | Assignments.cs:32:10:32:22 | exit SetParamMulti (normal) | | -| Assignments.cs:35:9:35:20 | ...; | Assignments.cs:35:13:35:19 | "Hello" | | +| Assignments.cs:35:9:35:9 | access to parameter y | Assignments.cs:35:13:35:19 | "Hello" | | +| Assignments.cs:35:9:35:19 | ... = ... | Assignments.cs:35:9:35:19 | After ... = ... | | +| Assignments.cs:35:9:35:19 | After ... = ... | Assignments.cs:35:9:35:20 | After ...; | | +| Assignments.cs:35:9:35:19 | Before ... = ... | Assignments.cs:35:9:35:9 | access to parameter y | | +| Assignments.cs:35:9:35:20 | ...; | Assignments.cs:35:9:35:19 | Before ... = ... | | +| Assignments.cs:35:9:35:20 | After ...; | Assignments.cs:33:5:36:5 | After {...} | | | Assignments.cs:35:13:35:19 | "Hello" | Assignments.cs:35:9:35:19 | ... = ... | | -| Assignments.cs:38:10:38:11 | enter M2 | Assignments.cs:39:5:45:5 | {...} | | -| Assignments.cs:38:10:38:11 | exit M2 (normal) | Assignments.cs:38:10:38:11 | exit M2 | | +| Assignments.cs:38:10:38:11 | Entry | Assignments.cs:39:5:45:5 | {...} | | +| Assignments.cs:38:10:38:11 | Normal Exit | Assignments.cs:38:10:38:11 | Exit | | +| Assignments.cs:39:5:45:5 | After {...} | Assignments.cs:38:10:38:11 | Normal Exit | | | Assignments.cs:39:5:45:5 | {...} | Assignments.cs:40:9:40:15 | ... ...; | | | Assignments.cs:40:9:40:15 | ... ...; | Assignments.cs:40:13:40:14 | Int32 x1 | | -| Assignments.cs:40:13:40:14 | Int32 x1 | Assignments.cs:41:9:41:31 | ...; | | -| Assignments.cs:41:9:41:30 | call to method SetParamSingle | Assignments.cs:42:9:42:37 | ...; | | -| Assignments.cs:41:9:41:30 | this access | Assignments.cs:41:9:41:30 | call to method SetParamSingle | | -| Assignments.cs:41:9:41:31 | ...; | Assignments.cs:41:9:41:30 | this access | | -| Assignments.cs:42:9:42:36 | call to method SetParamSingle | Assignments.cs:43:9:43:56 | ...; | | -| Assignments.cs:42:9:42:36 | this access | Assignments.cs:42:28:42:35 | this access | | -| Assignments.cs:42:9:42:37 | ...; | Assignments.cs:42:9:42:36 | this access | | -| Assignments.cs:42:28:42:35 | access to field IntField | Assignments.cs:42:9:42:36 | call to method SetParamSingle | | +| Assignments.cs:40:9:40:15 | After ... ...; | Assignments.cs:41:9:41:31 | ...; | | +| Assignments.cs:40:13:40:14 | Int32 x1 | Assignments.cs:40:9:40:15 | After ... ...; | | +| Assignments.cs:41:9:41:30 | After call to method SetParamSingle | Assignments.cs:41:9:41:31 | After ...; | | +| Assignments.cs:41:9:41:30 | Before call to method SetParamSingle | Assignments.cs:41:9:41:30 | this access | | +| Assignments.cs:41:9:41:30 | call to method SetParamSingle | Assignments.cs:41:9:41:30 | After call to method SetParamSingle | | +| Assignments.cs:41:9:41:30 | this access | Assignments.cs:41:28:41:29 | access to local variable x1 | | +| Assignments.cs:41:9:41:31 | ...; | Assignments.cs:41:9:41:30 | Before call to method SetParamSingle | | +| Assignments.cs:41:9:41:31 | After ...; | Assignments.cs:42:9:42:37 | ...; | | +| Assignments.cs:41:28:41:29 | access to local variable x1 | Assignments.cs:41:9:41:30 | call to method SetParamSingle | | +| Assignments.cs:42:9:42:36 | After call to method SetParamSingle | Assignments.cs:42:9:42:37 | After ...; | | +| Assignments.cs:42:9:42:36 | Before call to method SetParamSingle | Assignments.cs:42:9:42:36 | this access | | +| Assignments.cs:42:9:42:36 | call to method SetParamSingle | Assignments.cs:42:9:42:36 | After call to method SetParamSingle | | +| Assignments.cs:42:9:42:36 | this access | Assignments.cs:42:28:42:35 | Before access to field IntField | | +| Assignments.cs:42:9:42:37 | ...; | Assignments.cs:42:9:42:36 | Before call to method SetParamSingle | | +| Assignments.cs:42:9:42:37 | After ...; | Assignments.cs:43:9:43:56 | ...; | | +| Assignments.cs:42:28:42:35 | After access to field IntField | Assignments.cs:42:9:42:36 | call to method SetParamSingle | | +| Assignments.cs:42:28:42:35 | Before access to field IntField | Assignments.cs:42:28:42:35 | this access | | +| Assignments.cs:42:28:42:35 | access to field IntField | Assignments.cs:42:28:42:35 | After access to field IntField | | | Assignments.cs:42:28:42:35 | this access | Assignments.cs:42:28:42:35 | access to field IntField | | -| Assignments.cs:43:9:43:55 | call to method SetParamMulti | Assignments.cs:44:9:44:59 | ...; | | -| Assignments.cs:43:9:43:55 | this access | Assignments.cs:43:34:43:37 | null | | -| Assignments.cs:43:9:43:56 | ...; | Assignments.cs:43:9:43:55 | this access | | -| Assignments.cs:43:34:43:37 | null | Assignments.cs:43:44:43:54 | this access | | -| Assignments.cs:43:44:43:54 | access to field StringField | Assignments.cs:43:9:43:55 | call to method SetParamMulti | | +| Assignments.cs:43:9:43:55 | After call to method SetParamMulti | Assignments.cs:43:9:43:56 | After ...; | | +| Assignments.cs:43:9:43:55 | Before call to method SetParamMulti | Assignments.cs:43:9:43:55 | this access | | +| Assignments.cs:43:9:43:55 | call to method SetParamMulti | Assignments.cs:43:9:43:55 | After call to method SetParamMulti | | +| Assignments.cs:43:9:43:55 | this access | Assignments.cs:43:31:43:31 | Int32 y | | +| Assignments.cs:43:9:43:56 | ...; | Assignments.cs:43:9:43:55 | Before call to method SetParamMulti | | +| Assignments.cs:43:9:43:56 | After ...; | Assignments.cs:44:9:44:59 | ...; | | +| Assignments.cs:43:31:43:31 | Int32 y | Assignments.cs:43:34:43:37 | null | | +| Assignments.cs:43:34:43:37 | null | Assignments.cs:43:44:43:54 | Before access to field StringField | | +| Assignments.cs:43:44:43:54 | After access to field StringField | Assignments.cs:43:9:43:55 | call to method SetParamMulti | | +| Assignments.cs:43:44:43:54 | Before access to field StringField | Assignments.cs:43:44:43:54 | this access | | +| Assignments.cs:43:44:43:54 | access to field StringField | Assignments.cs:43:44:43:54 | After access to field StringField | | | Assignments.cs:43:44:43:54 | this access | Assignments.cs:43:44:43:54 | access to field StringField | | -| Assignments.cs:44:9:44:58 | call to method SetParamMulti | Assignments.cs:38:10:38:11 | exit M2 (normal) | | -| Assignments.cs:44:9:44:58 | this access | Assignments.cs:44:27:44:34 | this access | | -| Assignments.cs:44:9:44:59 | ...; | Assignments.cs:44:9:44:58 | this access | | -| Assignments.cs:44:27:44:34 | access to field IntField | Assignments.cs:44:37:44:40 | null | | +| Assignments.cs:44:9:44:58 | After call to method SetParamMulti | Assignments.cs:44:9:44:59 | After ...; | | +| Assignments.cs:44:9:44:58 | Before call to method SetParamMulti | Assignments.cs:44:9:44:58 | this access | | +| Assignments.cs:44:9:44:58 | call to method SetParamMulti | Assignments.cs:44:9:44:58 | After call to method SetParamMulti | | +| Assignments.cs:44:9:44:58 | this access | Assignments.cs:44:27:44:34 | Before access to field IntField | | +| Assignments.cs:44:9:44:59 | ...; | Assignments.cs:44:9:44:58 | Before call to method SetParamMulti | | +| Assignments.cs:44:9:44:59 | After ...; | Assignments.cs:39:5:45:5 | After {...} | | +| Assignments.cs:44:27:44:34 | After access to field IntField | Assignments.cs:44:37:44:40 | null | | +| Assignments.cs:44:27:44:34 | Before access to field IntField | Assignments.cs:44:27:44:34 | this access | | +| Assignments.cs:44:27:44:34 | access to field IntField | Assignments.cs:44:27:44:34 | After access to field IntField | | | Assignments.cs:44:27:44:34 | this access | Assignments.cs:44:27:44:34 | access to field IntField | | -| Assignments.cs:44:37:44:40 | null | Assignments.cs:44:47:44:57 | this access | | -| Assignments.cs:44:47:44:57 | access to field StringField | Assignments.cs:44:9:44:58 | call to method SetParamMulti | | +| Assignments.cs:44:37:44:40 | null | Assignments.cs:44:47:44:57 | Before access to field StringField | | +| Assignments.cs:44:47:44:57 | After access to field StringField | Assignments.cs:44:9:44:58 | call to method SetParamMulti | | +| Assignments.cs:44:47:44:57 | Before access to field StringField | Assignments.cs:44:47:44:57 | this access | | +| Assignments.cs:44:47:44:57 | access to field StringField | Assignments.cs:44:47:44:57 | After access to field StringField | | | Assignments.cs:44:47:44:57 | this access | Assignments.cs:44:47:44:57 | access to field StringField | | -| BreakInTry.cs:1:7:1:16 | call to constructor Object | BreakInTry.cs:1:7:1:16 | {...} | | -| BreakInTry.cs:1:7:1:16 | call to method | BreakInTry.cs:1:7:1:16 | call to constructor Object | | -| BreakInTry.cs:1:7:1:16 | enter BreakInTry | BreakInTry.cs:1:7:1:16 | this access | | -| BreakInTry.cs:1:7:1:16 | exit BreakInTry (normal) | BreakInTry.cs:1:7:1:16 | exit BreakInTry | | +| BreakInTry.cs:1:7:1:16 | After call to constructor Object | BreakInTry.cs:1:7:1:16 | {...} | | +| BreakInTry.cs:1:7:1:16 | After call to method | BreakInTry.cs:1:7:1:16 | Before call to constructor Object | | +| BreakInTry.cs:1:7:1:16 | Before call to constructor Object | BreakInTry.cs:1:7:1:16 | call to constructor Object | | +| BreakInTry.cs:1:7:1:16 | Before call to method | BreakInTry.cs:1:7:1:16 | this access | | +| BreakInTry.cs:1:7:1:16 | Entry | BreakInTry.cs:1:7:1:16 | Before call to method | | +| BreakInTry.cs:1:7:1:16 | Normal Exit | BreakInTry.cs:1:7:1:16 | Exit | | +| BreakInTry.cs:1:7:1:16 | call to constructor Object | BreakInTry.cs:1:7:1:16 | After call to constructor Object | | +| BreakInTry.cs:1:7:1:16 | call to method | BreakInTry.cs:1:7:1:16 | After call to method | | | BreakInTry.cs:1:7:1:16 | this access | BreakInTry.cs:1:7:1:16 | call to method | | -| BreakInTry.cs:1:7:1:16 | {...} | BreakInTry.cs:1:7:1:16 | exit BreakInTry (normal) | | -| BreakInTry.cs:3:10:3:11 | enter M1 | BreakInTry.cs:4:5:18:5 | {...} | | -| BreakInTry.cs:3:10:3:11 | exit M1 (normal) | BreakInTry.cs:3:10:3:11 | exit M1 | | +| BreakInTry.cs:1:7:1:16 | {...} | BreakInTry.cs:1:7:1:16 | Normal Exit | | +| BreakInTry.cs:3:10:3:11 | Entry | BreakInTry.cs:3:22:3:25 | args | | +| BreakInTry.cs:3:10:3:11 | Normal Exit | BreakInTry.cs:3:10:3:11 | Exit | | +| BreakInTry.cs:3:22:3:25 | args | BreakInTry.cs:4:5:18:5 | {...} | | +| BreakInTry.cs:4:5:18:5 | After {...} | BreakInTry.cs:3:10:3:11 | Normal Exit | | | BreakInTry.cs:4:5:18:5 | {...} | BreakInTry.cs:5:9:17:9 | try {...} ... | | +| BreakInTry.cs:5:9:17:9 | After try {...} ... | BreakInTry.cs:4:5:18:5 | After {...} | | | BreakInTry.cs:5:9:17:9 | try {...} ... | BreakInTry.cs:6:9:12:9 | {...} | | -| BreakInTry.cs:6:9:12:9 | {...} | BreakInTry.cs:7:33:7:36 | access to parameter args | | -| BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | BreakInTry.cs:7:26:7:28 | String arg | non-empty | -| BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | BreakInTry.cs:14:9:17:9 | {...} | empty | +| BreakInTry.cs:6:9:12:9 | After {...} | BreakInTry.cs:14:9:17:9 | {...} | | +| BreakInTry.cs:6:9:12:9 | {...} | BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | | +| BreakInTry.cs:7:13:11:13 | After foreach (... ... in ...) ... | BreakInTry.cs:6:9:12:9 | After {...} | | +| BreakInTry.cs:7:13:11:13 | [LoopHeader] foreach (... ... in ...) ... | BreakInTry.cs:7:13:11:13 | After foreach (... ... in ...) ... | | +| BreakInTry.cs:7:13:11:13 | [LoopHeader] foreach (... ... in ...) ... | BreakInTry.cs:7:26:7:28 | String arg | | +| BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | BreakInTry.cs:7:33:7:36 | access to parameter args | | | BreakInTry.cs:7:26:7:28 | String arg | BreakInTry.cs:8:13:11:13 | {...} | | -| BreakInTry.cs:7:33:7:36 | access to parameter args | BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | | +| BreakInTry.cs:7:33:7:36 | After access to parameter args [empty] | BreakInTry.cs:7:13:11:13 | After foreach (... ... in ...) ... | | +| BreakInTry.cs:7:33:7:36 | After access to parameter args [non-empty] | BreakInTry.cs:7:26:7:28 | String arg | | +| BreakInTry.cs:7:33:7:36 | access to parameter args | BreakInTry.cs:7:33:7:36 | After access to parameter args [empty] | empty | +| BreakInTry.cs:7:33:7:36 | access to parameter args | BreakInTry.cs:7:33:7:36 | After access to parameter args [non-empty] | non-empty | +| BreakInTry.cs:8:13:11:13 | After {...} | BreakInTry.cs:7:13:11:13 | [LoopHeader] foreach (... ... in ...) ... | | | BreakInTry.cs:8:13:11:13 | {...} | BreakInTry.cs:9:17:10:26 | if (...) ... | | -| BreakInTry.cs:9:17:10:26 | if (...) ... | BreakInTry.cs:9:21:9:23 | access to local variable arg | | +| BreakInTry.cs:9:17:10:26 | After if (...) ... | BreakInTry.cs:8:13:11:13 | After {...} | | +| BreakInTry.cs:9:17:10:26 | if (...) ... | BreakInTry.cs:9:21:9:31 | Before ... == ... | | | BreakInTry.cs:9:21:9:23 | access to local variable arg | BreakInTry.cs:9:28:9:31 | null | | -| BreakInTry.cs:9:21:9:31 | ... == ... | BreakInTry.cs:7:13:11:13 | foreach (... ... in ...) ... | false | -| BreakInTry.cs:9:21:9:31 | ... == ... | BreakInTry.cs:10:21:10:26 | break; | true | +| BreakInTry.cs:9:21:9:31 | ... == ... | BreakInTry.cs:9:21:9:31 | After ... == ... [false] | false | +| BreakInTry.cs:9:21:9:31 | ... == ... | BreakInTry.cs:9:21:9:31 | After ... == ... [true] | true | +| BreakInTry.cs:9:21:9:31 | After ... == ... [false] | BreakInTry.cs:9:17:10:26 | After if (...) ... | | +| BreakInTry.cs:9:21:9:31 | After ... == ... [true] | BreakInTry.cs:10:21:10:26 | Before break; | | +| BreakInTry.cs:9:21:9:31 | Before ... == ... | BreakInTry.cs:9:21:9:23 | access to local variable arg | | | BreakInTry.cs:9:28:9:31 | null | BreakInTry.cs:9:21:9:31 | ... == ... | | -| BreakInTry.cs:10:21:10:26 | break; | BreakInTry.cs:14:9:17:9 | {...} | break | +| BreakInTry.cs:10:21:10:26 | Before break; | BreakInTry.cs:10:21:10:26 | break; | | +| BreakInTry.cs:10:21:10:26 | break; | BreakInTry.cs:7:13:11:13 | After foreach (... ... in ...) ... | break | +| BreakInTry.cs:14:9:17:9 | After {...} | BreakInTry.cs:5:9:17:9 | After try {...} ... | | | BreakInTry.cs:14:9:17:9 | {...} | BreakInTry.cs:15:13:16:17 | if (...) ... | | -| BreakInTry.cs:15:13:16:17 | if (...) ... | BreakInTry.cs:15:17:15:20 | access to parameter args | | +| BreakInTry.cs:15:13:16:17 | After if (...) ... | BreakInTry.cs:14:9:17:9 | After {...} | | +| BreakInTry.cs:15:13:16:17 | if (...) ... | BreakInTry.cs:15:17:15:28 | Before ... == ... | | | BreakInTry.cs:15:17:15:20 | access to parameter args | BreakInTry.cs:15:25:15:28 | null | | -| BreakInTry.cs:15:17:15:28 | ... == ... | BreakInTry.cs:3:10:3:11 | exit M1 (normal) | false | -| BreakInTry.cs:15:17:15:28 | ... == ... | BreakInTry.cs:16:17:16:17 | ; | true | +| BreakInTry.cs:15:17:15:28 | ... == ... | BreakInTry.cs:15:17:15:28 | After ... == ... [false] | false | +| BreakInTry.cs:15:17:15:28 | ... == ... | BreakInTry.cs:15:17:15:28 | After ... == ... [true] | true | +| BreakInTry.cs:15:17:15:28 | After ... == ... [false] | BreakInTry.cs:15:13:16:17 | After if (...) ... | | +| BreakInTry.cs:15:17:15:28 | After ... == ... [true] | BreakInTry.cs:16:17:16:17 | ; | | +| BreakInTry.cs:15:17:15:28 | Before ... == ... | BreakInTry.cs:15:17:15:20 | access to parameter args | | | BreakInTry.cs:15:25:15:28 | null | BreakInTry.cs:15:17:15:28 | ... == ... | | -| BreakInTry.cs:16:17:16:17 | ; | BreakInTry.cs:3:10:3:11 | exit M1 (normal) | | -| BreakInTry.cs:20:10:20:11 | enter M2 | BreakInTry.cs:21:5:36:5 | {...} | | -| BreakInTry.cs:20:10:20:11 | exit M2 (normal) | BreakInTry.cs:20:10:20:11 | exit M2 | | -| BreakInTry.cs:21:5:36:5 | {...} | BreakInTry.cs:22:29:22:32 | access to parameter args | | -| BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:22:22:22:24 | String arg | non-empty | -| BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:35:7:35:7 | ; | empty | +| BreakInTry.cs:16:17:16:17 | ; | BreakInTry.cs:15:13:16:17 | After if (...) ... | | +| BreakInTry.cs:20:10:20:11 | Entry | BreakInTry.cs:20:22:20:25 | args | | +| BreakInTry.cs:20:10:20:11 | Normal Exit | BreakInTry.cs:20:10:20:11 | Exit | | +| BreakInTry.cs:20:22:20:25 | args | BreakInTry.cs:21:5:36:5 | {...} | | +| BreakInTry.cs:21:5:36:5 | After {...} | BreakInTry.cs:20:10:20:11 | Normal Exit | | +| BreakInTry.cs:21:5:36:5 | {...} | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | | +| BreakInTry.cs:22:9:34:9 | After foreach (... ... in ...) ... | BreakInTry.cs:35:7:35:7 | ; | | +| BreakInTry.cs:22:9:34:9 | [LoopHeader] foreach (... ... in ...) ... | BreakInTry.cs:22:9:34:9 | After foreach (... ... in ...) ... | | +| BreakInTry.cs:22:9:34:9 | [LoopHeader] foreach (... ... in ...) ... | BreakInTry.cs:22:22:22:24 | String arg | | +| BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | BreakInTry.cs:22:29:22:32 | access to parameter args | | | BreakInTry.cs:22:22:22:24 | String arg | BreakInTry.cs:23:9:34:9 | {...} | | -| BreakInTry.cs:22:29:22:32 | access to parameter args | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | | +| BreakInTry.cs:22:29:22:32 | After access to parameter args [empty] | BreakInTry.cs:22:9:34:9 | After foreach (... ... in ...) ... | | +| BreakInTry.cs:22:29:22:32 | After access to parameter args [non-empty] | BreakInTry.cs:22:22:22:24 | String arg | | +| BreakInTry.cs:22:29:22:32 | access to parameter args | BreakInTry.cs:22:29:22:32 | After access to parameter args [empty] | empty | +| BreakInTry.cs:22:29:22:32 | access to parameter args | BreakInTry.cs:22:29:22:32 | After access to parameter args [non-empty] | non-empty | +| BreakInTry.cs:23:9:34:9 | After {...} | BreakInTry.cs:22:9:34:9 | [LoopHeader] foreach (... ... in ...) ... | | | BreakInTry.cs:23:9:34:9 | {...} | BreakInTry.cs:24:13:33:13 | try {...} ... | | +| BreakInTry.cs:24:13:33:13 | After try {...} ... | BreakInTry.cs:23:9:34:9 | After {...} | | | BreakInTry.cs:24:13:33:13 | try {...} ... | BreakInTry.cs:25:13:28:13 | {...} | | +| BreakInTry.cs:25:13:28:13 | After {...} | BreakInTry.cs:30:13:33:13 | {...} | | | BreakInTry.cs:25:13:28:13 | {...} | BreakInTry.cs:26:17:27:26 | if (...) ... | | -| BreakInTry.cs:26:17:27:26 | if (...) ... | BreakInTry.cs:26:21:26:23 | access to local variable arg | | +| BreakInTry.cs:26:17:27:26 | After if (...) ... | BreakInTry.cs:25:13:28:13 | After {...} | | +| BreakInTry.cs:26:17:27:26 | if (...) ... | BreakInTry.cs:26:21:26:31 | Before ... == ... | | | BreakInTry.cs:26:21:26:23 | access to local variable arg | BreakInTry.cs:26:28:26:31 | null | | -| BreakInTry.cs:26:21:26:31 | ... == ... | BreakInTry.cs:27:21:27:26 | break; | true | -| BreakInTry.cs:26:21:26:31 | ... == ... | BreakInTry.cs:30:13:33:13 | {...} | false | +| BreakInTry.cs:26:21:26:31 | ... == ... | BreakInTry.cs:26:21:26:31 | After ... == ... [false] | false | +| BreakInTry.cs:26:21:26:31 | ... == ... | BreakInTry.cs:26:21:26:31 | After ... == ... [true] | true | +| BreakInTry.cs:26:21:26:31 | After ... == ... [false] | BreakInTry.cs:26:17:27:26 | After if (...) ... | | +| BreakInTry.cs:26:21:26:31 | After ... == ... [true] | BreakInTry.cs:27:21:27:26 | Before break; | | +| BreakInTry.cs:26:21:26:31 | Before ... == ... | BreakInTry.cs:26:21:26:23 | access to local variable arg | | | BreakInTry.cs:26:28:26:31 | null | BreakInTry.cs:26:21:26:31 | ... == ... | | +| BreakInTry.cs:27:21:27:26 | Before break; | BreakInTry.cs:27:21:27:26 | break; | | | BreakInTry.cs:27:21:27:26 | break; | BreakInTry.cs:30:13:33:13 | {...} | break | +| BreakInTry.cs:30:13:33:13 | After {...} | BreakInTry.cs:22:9:34:9 | After foreach (... ... in ...) ... | break | +| BreakInTry.cs:30:13:33:13 | After {...} | BreakInTry.cs:24:13:33:13 | After try {...} ... | | | BreakInTry.cs:30:13:33:13 | {...} | BreakInTry.cs:31:17:32:21 | if (...) ... | | -| BreakInTry.cs:31:17:32:21 | if (...) ... | BreakInTry.cs:31:21:31:24 | access to parameter args | | +| BreakInTry.cs:31:17:32:21 | After if (...) ... | BreakInTry.cs:30:13:33:13 | After {...} | | +| BreakInTry.cs:31:17:32:21 | if (...) ... | BreakInTry.cs:31:21:31:32 | Before ... == ... | | | BreakInTry.cs:31:21:31:24 | access to parameter args | BreakInTry.cs:31:29:31:32 | null | | -| BreakInTry.cs:31:21:31:32 | ... == ... | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | false | -| BreakInTry.cs:31:21:31:32 | ... == ... | BreakInTry.cs:32:21:32:21 | ; | true | -| BreakInTry.cs:31:21:31:32 | ... == ... | BreakInTry.cs:35:7:35:7 | ; | false | +| BreakInTry.cs:31:21:31:32 | ... == ... | BreakInTry.cs:31:21:31:32 | After ... == ... [false] | false | +| BreakInTry.cs:31:21:31:32 | ... == ... | BreakInTry.cs:31:21:31:32 | After ... == ... [true] | true | +| BreakInTry.cs:31:21:31:32 | After ... == ... [false] | BreakInTry.cs:31:17:32:21 | After if (...) ... | | +| BreakInTry.cs:31:21:31:32 | After ... == ... [true] | BreakInTry.cs:32:21:32:21 | ; | | +| BreakInTry.cs:31:21:31:32 | Before ... == ... | BreakInTry.cs:31:21:31:24 | access to parameter args | | | BreakInTry.cs:31:29:31:32 | null | BreakInTry.cs:31:21:31:32 | ... == ... | | -| BreakInTry.cs:32:21:32:21 | ; | BreakInTry.cs:22:9:34:9 | foreach (... ... in ...) ... | | -| BreakInTry.cs:32:21:32:21 | ; | BreakInTry.cs:35:7:35:7 | ; | break | -| BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:20:10:20:11 | exit M2 (normal) | | -| BreakInTry.cs:38:10:38:11 | enter M3 | BreakInTry.cs:39:5:54:5 | {...} | | -| BreakInTry.cs:38:10:38:11 | exit M3 (normal) | BreakInTry.cs:38:10:38:11 | exit M3 | | +| BreakInTry.cs:32:21:32:21 | ; | BreakInTry.cs:31:17:32:21 | After if (...) ... | | +| BreakInTry.cs:35:7:35:7 | ; | BreakInTry.cs:21:5:36:5 | After {...} | | +| BreakInTry.cs:38:10:38:11 | Entry | BreakInTry.cs:38:22:38:25 | args | | +| BreakInTry.cs:38:10:38:11 | Normal Exit | BreakInTry.cs:38:10:38:11 | Exit | | +| BreakInTry.cs:38:22:38:25 | args | BreakInTry.cs:39:5:54:5 | {...} | | +| BreakInTry.cs:39:5:54:5 | After {...} | BreakInTry.cs:38:10:38:11 | Normal Exit | | | BreakInTry.cs:39:5:54:5 | {...} | BreakInTry.cs:40:9:52:9 | try {...} ... | | +| BreakInTry.cs:40:9:52:9 | After try {...} ... | BreakInTry.cs:53:7:53:7 | ; | | | BreakInTry.cs:40:9:52:9 | try {...} ... | BreakInTry.cs:41:9:44:9 | {...} | | +| BreakInTry.cs:41:9:44:9 | After {...} | BreakInTry.cs:46:9:52:9 | {...} | | | BreakInTry.cs:41:9:44:9 | {...} | BreakInTry.cs:42:13:43:23 | if (...) ... | | -| BreakInTry.cs:42:13:43:23 | if (...) ... | BreakInTry.cs:42:17:42:20 | access to parameter args | | +| BreakInTry.cs:42:13:43:23 | After if (...) ... | BreakInTry.cs:41:9:44:9 | After {...} | | +| BreakInTry.cs:42:13:43:23 | if (...) ... | BreakInTry.cs:42:17:42:28 | Before ... == ... | | | BreakInTry.cs:42:17:42:20 | access to parameter args | BreakInTry.cs:42:25:42:28 | null | | -| BreakInTry.cs:42:17:42:28 | ... == ... | BreakInTry.cs:43:17:43:23 | return ...; | true | -| BreakInTry.cs:42:17:42:28 | ... == ... | BreakInTry.cs:46:9:52:9 | {...} | false | +| BreakInTry.cs:42:17:42:28 | ... == ... | BreakInTry.cs:42:17:42:28 | After ... == ... [false] | false | +| BreakInTry.cs:42:17:42:28 | ... == ... | BreakInTry.cs:42:17:42:28 | After ... == ... [true] | true | +| BreakInTry.cs:42:17:42:28 | After ... == ... [false] | BreakInTry.cs:42:13:43:23 | After if (...) ... | | +| BreakInTry.cs:42:17:42:28 | After ... == ... [true] | BreakInTry.cs:43:17:43:23 | Before return ...; | | +| BreakInTry.cs:42:17:42:28 | Before ... == ... | BreakInTry.cs:42:17:42:20 | access to parameter args | | | BreakInTry.cs:42:25:42:28 | null | BreakInTry.cs:42:17:42:28 | ... == ... | | +| BreakInTry.cs:43:17:43:23 | Before return ...; | BreakInTry.cs:43:17:43:23 | return ...; | | | BreakInTry.cs:43:17:43:23 | return ...; | BreakInTry.cs:46:9:52:9 | {...} | return | -| BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:47:33:47:36 | access to parameter args | | -| BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:38:10:38:11 | exit M3 (normal) | return | -| BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:47:26:47:28 | String arg | non-empty | -| BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:53:7:53:7 | ; | empty | +| BreakInTry.cs:46:9:52:9 | After {...} | BreakInTry.cs:38:10:38:11 | Normal Exit | return | +| BreakInTry.cs:46:9:52:9 | After {...} | BreakInTry.cs:40:9:52:9 | After try {...} ... | | +| BreakInTry.cs:46:9:52:9 | {...} | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | | +| BreakInTry.cs:47:13:51:13 | After foreach (... ... in ...) ... | BreakInTry.cs:46:9:52:9 | After {...} | | +| BreakInTry.cs:47:13:51:13 | [LoopHeader] foreach (... ... in ...) ... | BreakInTry.cs:47:13:51:13 | After foreach (... ... in ...) ... | | +| BreakInTry.cs:47:13:51:13 | [LoopHeader] foreach (... ... in ...) ... | BreakInTry.cs:47:26:47:28 | String arg | | +| BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | BreakInTry.cs:47:33:47:36 | access to parameter args | | | BreakInTry.cs:47:26:47:28 | String arg | BreakInTry.cs:48:13:51:13 | {...} | | -| BreakInTry.cs:47:33:47:36 | access to parameter args | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | | +| BreakInTry.cs:47:33:47:36 | After access to parameter args [empty] | BreakInTry.cs:47:13:51:13 | After foreach (... ... in ...) ... | | +| BreakInTry.cs:47:33:47:36 | After access to parameter args [non-empty] | BreakInTry.cs:47:26:47:28 | String arg | | +| BreakInTry.cs:47:33:47:36 | access to parameter args | BreakInTry.cs:47:33:47:36 | After access to parameter args [empty] | empty | +| BreakInTry.cs:47:33:47:36 | access to parameter args | BreakInTry.cs:47:33:47:36 | After access to parameter args [non-empty] | non-empty | +| BreakInTry.cs:48:13:51:13 | After {...} | BreakInTry.cs:47:13:51:13 | [LoopHeader] foreach (... ... in ...) ... | | | BreakInTry.cs:48:13:51:13 | {...} | BreakInTry.cs:49:17:50:26 | if (...) ... | | -| BreakInTry.cs:49:17:50:26 | if (...) ... | BreakInTry.cs:49:21:49:23 | access to local variable arg | | +| BreakInTry.cs:49:17:50:26 | After if (...) ... | BreakInTry.cs:48:13:51:13 | After {...} | | +| BreakInTry.cs:49:17:50:26 | if (...) ... | BreakInTry.cs:49:21:49:31 | Before ... == ... | | | BreakInTry.cs:49:21:49:23 | access to local variable arg | BreakInTry.cs:49:28:49:31 | null | | -| BreakInTry.cs:49:21:49:31 | ... == ... | BreakInTry.cs:47:13:51:13 | foreach (... ... in ...) ... | false | -| BreakInTry.cs:49:21:49:31 | ... == ... | BreakInTry.cs:50:21:50:26 | break; | true | +| BreakInTry.cs:49:21:49:31 | ... == ... | BreakInTry.cs:49:21:49:31 | After ... == ... [false] | false | +| BreakInTry.cs:49:21:49:31 | ... == ... | BreakInTry.cs:49:21:49:31 | After ... == ... [true] | true | +| BreakInTry.cs:49:21:49:31 | After ... == ... [false] | BreakInTry.cs:49:17:50:26 | After if (...) ... | | +| BreakInTry.cs:49:21:49:31 | After ... == ... [true] | BreakInTry.cs:50:21:50:26 | Before break; | | +| BreakInTry.cs:49:21:49:31 | Before ... == ... | BreakInTry.cs:49:21:49:23 | access to local variable arg | | | BreakInTry.cs:49:28:49:31 | null | BreakInTry.cs:49:21:49:31 | ... == ... | | -| BreakInTry.cs:50:21:50:26 | break; | BreakInTry.cs:38:10:38:11 | exit M3 (normal) | return | -| BreakInTry.cs:50:21:50:26 | break; | BreakInTry.cs:53:7:53:7 | ; | break | -| BreakInTry.cs:53:7:53:7 | ; | BreakInTry.cs:38:10:38:11 | exit M3 (normal) | | -| BreakInTry.cs:56:10:56:11 | enter M4 | BreakInTry.cs:57:5:71:5 | {...} | | -| BreakInTry.cs:56:10:56:11 | exit M4 (normal) | BreakInTry.cs:56:10:56:11 | exit M4 | | +| BreakInTry.cs:50:21:50:26 | Before break; | BreakInTry.cs:50:21:50:26 | break; | | +| BreakInTry.cs:50:21:50:26 | break; | BreakInTry.cs:47:13:51:13 | After foreach (... ... in ...) ... | break | +| BreakInTry.cs:53:7:53:7 | ; | BreakInTry.cs:39:5:54:5 | After {...} | | +| BreakInTry.cs:56:10:56:11 | Entry | BreakInTry.cs:56:22:56:25 | args | | +| BreakInTry.cs:56:10:56:11 | Normal Exit | BreakInTry.cs:56:10:56:11 | Exit | | +| BreakInTry.cs:56:22:56:25 | args | BreakInTry.cs:57:5:71:5 | {...} | | +| BreakInTry.cs:57:5:71:5 | After {...} | BreakInTry.cs:56:10:56:11 | Normal Exit | | | BreakInTry.cs:57:5:71:5 | {...} | BreakInTry.cs:58:9:70:9 | try {...} ... | | +| BreakInTry.cs:58:9:70:9 | After try {...} ... | BreakInTry.cs:57:5:71:5 | After {...} | | | BreakInTry.cs:58:9:70:9 | try {...} ... | BreakInTry.cs:59:9:62:9 | {...} | | +| BreakInTry.cs:59:9:62:9 | After {...} | BreakInTry.cs:64:9:70:9 | {...} | | | BreakInTry.cs:59:9:62:9 | {...} | BreakInTry.cs:60:13:61:23 | if (...) ... | | -| BreakInTry.cs:60:13:61:23 | if (...) ... | BreakInTry.cs:60:17:60:20 | access to parameter args | | +| BreakInTry.cs:60:13:61:23 | After if (...) ... | BreakInTry.cs:59:9:62:9 | After {...} | | +| BreakInTry.cs:60:13:61:23 | if (...) ... | BreakInTry.cs:60:17:60:28 | Before ... == ... | | | BreakInTry.cs:60:17:60:20 | access to parameter args | BreakInTry.cs:60:25:60:28 | null | | -| BreakInTry.cs:60:17:60:28 | ... == ... | BreakInTry.cs:61:17:61:23 | return ...; | true | -| BreakInTry.cs:60:17:60:28 | ... == ... | BreakInTry.cs:64:9:70:9 | {...} | false | +| BreakInTry.cs:60:17:60:28 | ... == ... | BreakInTry.cs:60:17:60:28 | After ... == ... [false] | false | +| BreakInTry.cs:60:17:60:28 | ... == ... | BreakInTry.cs:60:17:60:28 | After ... == ... [true] | true | +| BreakInTry.cs:60:17:60:28 | After ... == ... [false] | BreakInTry.cs:60:13:61:23 | After if (...) ... | | +| BreakInTry.cs:60:17:60:28 | After ... == ... [true] | BreakInTry.cs:61:17:61:23 | Before return ...; | | +| BreakInTry.cs:60:17:60:28 | Before ... == ... | BreakInTry.cs:60:17:60:20 | access to parameter args | | | BreakInTry.cs:60:25:60:28 | null | BreakInTry.cs:60:17:60:28 | ... == ... | | +| BreakInTry.cs:61:17:61:23 | Before return ...; | BreakInTry.cs:61:17:61:23 | return ...; | | | BreakInTry.cs:61:17:61:23 | return ...; | BreakInTry.cs:64:9:70:9 | {...} | return | -| BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:65:33:65:36 | access to parameter args | | -| BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:56:10:56:11 | exit M4 (normal) | empty, return | -| BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:65:26:65:28 | String arg | non-empty | +| BreakInTry.cs:64:9:70:9 | After {...} | BreakInTry.cs:56:10:56:11 | Normal Exit | return | +| BreakInTry.cs:64:9:70:9 | After {...} | BreakInTry.cs:58:9:70:9 | After try {...} ... | | +| BreakInTry.cs:64:9:70:9 | {...} | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | | +| BreakInTry.cs:65:13:69:13 | After foreach (... ... in ...) ... | BreakInTry.cs:64:9:70:9 | After {...} | | +| BreakInTry.cs:65:13:69:13 | [LoopHeader] foreach (... ... in ...) ... | BreakInTry.cs:65:13:69:13 | After foreach (... ... in ...) ... | | +| BreakInTry.cs:65:13:69:13 | [LoopHeader] foreach (... ... in ...) ... | BreakInTry.cs:65:26:65:28 | String arg | | +| BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | BreakInTry.cs:65:33:65:36 | access to parameter args | | | BreakInTry.cs:65:26:65:28 | String arg | BreakInTry.cs:66:13:69:13 | {...} | | -| BreakInTry.cs:65:33:65:36 | access to parameter args | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | | +| BreakInTry.cs:65:33:65:36 | After access to parameter args [empty] | BreakInTry.cs:65:13:69:13 | After foreach (... ... in ...) ... | | +| BreakInTry.cs:65:33:65:36 | After access to parameter args [non-empty] | BreakInTry.cs:65:26:65:28 | String arg | | +| BreakInTry.cs:65:33:65:36 | access to parameter args | BreakInTry.cs:65:33:65:36 | After access to parameter args [empty] | empty | +| BreakInTry.cs:65:33:65:36 | access to parameter args | BreakInTry.cs:65:33:65:36 | After access to parameter args [non-empty] | non-empty | +| BreakInTry.cs:66:13:69:13 | After {...} | BreakInTry.cs:65:13:69:13 | [LoopHeader] foreach (... ... in ...) ... | | | BreakInTry.cs:66:13:69:13 | {...} | BreakInTry.cs:67:17:68:26 | if (...) ... | | -| BreakInTry.cs:67:17:68:26 | if (...) ... | BreakInTry.cs:67:21:67:23 | access to local variable arg | | +| BreakInTry.cs:67:17:68:26 | After if (...) ... | BreakInTry.cs:66:13:69:13 | After {...} | | +| BreakInTry.cs:67:17:68:26 | if (...) ... | BreakInTry.cs:67:21:67:31 | Before ... == ... | | | BreakInTry.cs:67:21:67:23 | access to local variable arg | BreakInTry.cs:67:28:67:31 | null | | -| BreakInTry.cs:67:21:67:31 | ... == ... | BreakInTry.cs:65:13:69:13 | foreach (... ... in ...) ... | false | -| BreakInTry.cs:67:21:67:31 | ... == ... | BreakInTry.cs:68:21:68:26 | break; | true | +| BreakInTry.cs:67:21:67:31 | ... == ... | BreakInTry.cs:67:21:67:31 | After ... == ... [false] | false | +| BreakInTry.cs:67:21:67:31 | ... == ... | BreakInTry.cs:67:21:67:31 | After ... == ... [true] | true | +| BreakInTry.cs:67:21:67:31 | After ... == ... [false] | BreakInTry.cs:67:17:68:26 | After if (...) ... | | +| BreakInTry.cs:67:21:67:31 | After ... == ... [true] | BreakInTry.cs:68:21:68:26 | Before break; | | +| BreakInTry.cs:67:21:67:31 | Before ... == ... | BreakInTry.cs:67:21:67:23 | access to local variable arg | | | BreakInTry.cs:67:28:67:31 | null | BreakInTry.cs:67:21:67:31 | ... == ... | | -| BreakInTry.cs:68:21:68:26 | break; | BreakInTry.cs:56:10:56:11 | exit M4 (normal) | break, return | -| CompileTimeOperators.cs:3:7:3:26 | call to constructor Object | CompileTimeOperators.cs:3:7:3:26 | {...} | | -| CompileTimeOperators.cs:3:7:3:26 | call to method | CompileTimeOperators.cs:3:7:3:26 | call to constructor Object | | -| CompileTimeOperators.cs:3:7:3:26 | enter CompileTimeOperators | CompileTimeOperators.cs:3:7:3:26 | this access | | -| CompileTimeOperators.cs:3:7:3:26 | exit CompileTimeOperators (normal) | CompileTimeOperators.cs:3:7:3:26 | exit CompileTimeOperators | | +| BreakInTry.cs:68:21:68:26 | Before break; | BreakInTry.cs:68:21:68:26 | break; | | +| BreakInTry.cs:68:21:68:26 | break; | BreakInTry.cs:65:13:69:13 | After foreach (... ... in ...) ... | break | +| CompileTimeOperators.cs:3:7:3:26 | After call to constructor Object | CompileTimeOperators.cs:3:7:3:26 | {...} | | +| CompileTimeOperators.cs:3:7:3:26 | After call to method | CompileTimeOperators.cs:3:7:3:26 | Before call to constructor Object | | +| CompileTimeOperators.cs:3:7:3:26 | Before call to constructor Object | CompileTimeOperators.cs:3:7:3:26 | call to constructor Object | | +| CompileTimeOperators.cs:3:7:3:26 | Before call to method | CompileTimeOperators.cs:3:7:3:26 | this access | | +| CompileTimeOperators.cs:3:7:3:26 | Entry | CompileTimeOperators.cs:3:7:3:26 | Before call to method | | +| CompileTimeOperators.cs:3:7:3:26 | Normal Exit | CompileTimeOperators.cs:3:7:3:26 | Exit | | +| CompileTimeOperators.cs:3:7:3:26 | call to constructor Object | CompileTimeOperators.cs:3:7:3:26 | After call to constructor Object | | +| CompileTimeOperators.cs:3:7:3:26 | call to method | CompileTimeOperators.cs:3:7:3:26 | After call to method | | | CompileTimeOperators.cs:3:7:3:26 | this access | CompileTimeOperators.cs:3:7:3:26 | call to method | | -| CompileTimeOperators.cs:3:7:3:26 | {...} | CompileTimeOperators.cs:3:7:3:26 | exit CompileTimeOperators (normal) | | -| CompileTimeOperators.cs:5:9:5:15 | enter Default | CompileTimeOperators.cs:6:5:8:5 | {...} | | -| CompileTimeOperators.cs:5:9:5:15 | exit Default (normal) | CompileTimeOperators.cs:5:9:5:15 | exit Default | | -| CompileTimeOperators.cs:6:5:8:5 | {...} | CompileTimeOperators.cs:7:16:7:27 | default(...) | | -| CompileTimeOperators.cs:7:9:7:28 | return ...; | CompileTimeOperators.cs:5:9:5:15 | exit Default (normal) | return | +| CompileTimeOperators.cs:3:7:3:26 | {...} | CompileTimeOperators.cs:3:7:3:26 | Normal Exit | | +| CompileTimeOperators.cs:5:9:5:15 | Entry | CompileTimeOperators.cs:6:5:8:5 | {...} | | +| CompileTimeOperators.cs:5:9:5:15 | Normal Exit | CompileTimeOperators.cs:5:9:5:15 | Exit | | +| CompileTimeOperators.cs:6:5:8:5 | {...} | CompileTimeOperators.cs:7:9:7:28 | Before return ...; | | +| CompileTimeOperators.cs:7:9:7:28 | Before return ...; | CompileTimeOperators.cs:7:16:7:27 | default(...) | | +| CompileTimeOperators.cs:7:9:7:28 | return ...; | CompileTimeOperators.cs:5:9:5:15 | Normal Exit | return | | CompileTimeOperators.cs:7:16:7:27 | default(...) | CompileTimeOperators.cs:7:9:7:28 | return ...; | | -| CompileTimeOperators.cs:10:9:10:14 | enter Sizeof | CompileTimeOperators.cs:11:5:13:5 | {...} | | -| CompileTimeOperators.cs:10:9:10:14 | exit Sizeof (normal) | CompileTimeOperators.cs:10:9:10:14 | exit Sizeof | | -| CompileTimeOperators.cs:11:5:13:5 | {...} | CompileTimeOperators.cs:12:16:12:26 | sizeof(..) | | -| CompileTimeOperators.cs:12:9:12:27 | return ...; | CompileTimeOperators.cs:10:9:10:14 | exit Sizeof (normal) | return | +| CompileTimeOperators.cs:10:9:10:14 | Entry | CompileTimeOperators.cs:11:5:13:5 | {...} | | +| CompileTimeOperators.cs:10:9:10:14 | Normal Exit | CompileTimeOperators.cs:10:9:10:14 | Exit | | +| CompileTimeOperators.cs:11:5:13:5 | {...} | CompileTimeOperators.cs:12:9:12:27 | Before return ...; | | +| CompileTimeOperators.cs:12:9:12:27 | Before return ...; | CompileTimeOperators.cs:12:16:12:26 | sizeof(..) | | +| CompileTimeOperators.cs:12:9:12:27 | return ...; | CompileTimeOperators.cs:10:9:10:14 | Normal Exit | return | | CompileTimeOperators.cs:12:16:12:26 | sizeof(..) | CompileTimeOperators.cs:12:9:12:27 | return ...; | | -| CompileTimeOperators.cs:15:10:15:15 | enter Typeof | CompileTimeOperators.cs:16:5:18:5 | {...} | | -| CompileTimeOperators.cs:15:10:15:15 | exit Typeof (normal) | CompileTimeOperators.cs:15:10:15:15 | exit Typeof | | -| CompileTimeOperators.cs:16:5:18:5 | {...} | CompileTimeOperators.cs:17:16:17:26 | typeof(...) | | -| CompileTimeOperators.cs:17:9:17:27 | return ...; | CompileTimeOperators.cs:15:10:15:15 | exit Typeof (normal) | return | +| CompileTimeOperators.cs:15:10:15:15 | Entry | CompileTimeOperators.cs:16:5:18:5 | {...} | | +| CompileTimeOperators.cs:15:10:15:15 | Normal Exit | CompileTimeOperators.cs:15:10:15:15 | Exit | | +| CompileTimeOperators.cs:16:5:18:5 | {...} | CompileTimeOperators.cs:17:9:17:27 | Before return ...; | | +| CompileTimeOperators.cs:17:9:17:27 | Before return ...; | CompileTimeOperators.cs:17:16:17:26 | typeof(...) | | +| CompileTimeOperators.cs:17:9:17:27 | return ...; | CompileTimeOperators.cs:15:10:15:15 | Normal Exit | return | | CompileTimeOperators.cs:17:16:17:26 | typeof(...) | CompileTimeOperators.cs:17:9:17:27 | return ...; | | -| CompileTimeOperators.cs:20:12:20:17 | enter Nameof | CompileTimeOperators.cs:21:5:23:5 | {...} | | -| CompileTimeOperators.cs:20:12:20:17 | exit Nameof (normal) | CompileTimeOperators.cs:20:12:20:17 | exit Nameof | | -| CompileTimeOperators.cs:21:5:23:5 | {...} | CompileTimeOperators.cs:22:16:22:24 | nameof(...) | | -| CompileTimeOperators.cs:22:9:22:25 | return ...; | CompileTimeOperators.cs:20:12:20:17 | exit Nameof (normal) | return | +| CompileTimeOperators.cs:20:12:20:17 | Entry | CompileTimeOperators.cs:20:23:20:23 | i | | +| CompileTimeOperators.cs:20:12:20:17 | Normal Exit | CompileTimeOperators.cs:20:12:20:17 | Exit | | +| CompileTimeOperators.cs:20:23:20:23 | i | CompileTimeOperators.cs:21:5:23:5 | {...} | | +| CompileTimeOperators.cs:21:5:23:5 | {...} | CompileTimeOperators.cs:22:9:22:25 | Before return ...; | | +| CompileTimeOperators.cs:22:9:22:25 | Before return ...; | CompileTimeOperators.cs:22:16:22:24 | nameof(...) | | +| CompileTimeOperators.cs:22:9:22:25 | return ...; | CompileTimeOperators.cs:20:12:20:17 | Normal Exit | return | | CompileTimeOperators.cs:22:16:22:24 | nameof(...) | CompileTimeOperators.cs:22:9:22:25 | return ...; | | -| CompileTimeOperators.cs:26:7:26:22 | call to constructor Object | CompileTimeOperators.cs:26:7:26:22 | {...} | | -| CompileTimeOperators.cs:26:7:26:22 | call to method | CompileTimeOperators.cs:26:7:26:22 | call to constructor Object | | -| CompileTimeOperators.cs:26:7:26:22 | enter GotoInTryFinally | CompileTimeOperators.cs:26:7:26:22 | this access | | -| CompileTimeOperators.cs:26:7:26:22 | exit GotoInTryFinally (normal) | CompileTimeOperators.cs:26:7:26:22 | exit GotoInTryFinally | | +| CompileTimeOperators.cs:26:7:26:22 | After call to constructor Object | CompileTimeOperators.cs:26:7:26:22 | {...} | | +| CompileTimeOperators.cs:26:7:26:22 | After call to method | CompileTimeOperators.cs:26:7:26:22 | Before call to constructor Object | | +| CompileTimeOperators.cs:26:7:26:22 | Before call to constructor Object | CompileTimeOperators.cs:26:7:26:22 | call to constructor Object | | +| CompileTimeOperators.cs:26:7:26:22 | Before call to method | CompileTimeOperators.cs:26:7:26:22 | this access | | +| CompileTimeOperators.cs:26:7:26:22 | Entry | CompileTimeOperators.cs:26:7:26:22 | Before call to method | | +| CompileTimeOperators.cs:26:7:26:22 | Normal Exit | CompileTimeOperators.cs:26:7:26:22 | Exit | | +| CompileTimeOperators.cs:26:7:26:22 | call to constructor Object | CompileTimeOperators.cs:26:7:26:22 | After call to constructor Object | | +| CompileTimeOperators.cs:26:7:26:22 | call to method | CompileTimeOperators.cs:26:7:26:22 | After call to method | | | CompileTimeOperators.cs:26:7:26:22 | this access | CompileTimeOperators.cs:26:7:26:22 | call to method | | -| CompileTimeOperators.cs:26:7:26:22 | {...} | CompileTimeOperators.cs:26:7:26:22 | exit GotoInTryFinally (normal) | | -| CompileTimeOperators.cs:28:10:28:10 | enter M | CompileTimeOperators.cs:29:5:41:5 | {...} | | -| CompileTimeOperators.cs:28:10:28:10 | exit M (abnormal) | CompileTimeOperators.cs:28:10:28:10 | exit M | | -| CompileTimeOperators.cs:28:10:28:10 | exit M (normal) | CompileTimeOperators.cs:28:10:28:10 | exit M | | +| CompileTimeOperators.cs:26:7:26:22 | {...} | CompileTimeOperators.cs:26:7:26:22 | Normal Exit | | +| CompileTimeOperators.cs:28:10:28:10 | Entry | CompileTimeOperators.cs:29:5:41:5 | {...} | | +| CompileTimeOperators.cs:28:10:28:10 | Exceptional Exit | CompileTimeOperators.cs:28:10:28:10 | Exit | | +| CompileTimeOperators.cs:28:10:28:10 | Normal Exit | CompileTimeOperators.cs:28:10:28:10 | Exit | | +| CompileTimeOperators.cs:29:5:41:5 | After {...} | CompileTimeOperators.cs:28:10:28:10 | Normal Exit | | | CompileTimeOperators.cs:29:5:41:5 | {...} | CompileTimeOperators.cs:30:9:38:9 | try {...} ... | | +| CompileTimeOperators.cs:30:9:38:9 | After try {...} ... | CompileTimeOperators.cs:39:9:39:34 | ...; | | | CompileTimeOperators.cs:30:9:38:9 | try {...} ... | CompileTimeOperators.cs:31:9:34:9 | {...} | | -| CompileTimeOperators.cs:31:9:34:9 | {...} | CompileTimeOperators.cs:32:13:32:21 | goto ...; | | +| CompileTimeOperators.cs:31:9:34:9 | {...} | CompileTimeOperators.cs:32:13:32:21 | Before goto ...; | | +| CompileTimeOperators.cs:32:13:32:21 | Before goto ...; | CompileTimeOperators.cs:32:13:32:21 | goto ...; | | | CompileTimeOperators.cs:32:13:32:21 | goto ...; | CompileTimeOperators.cs:36:9:38:9 | {...} | goto | +| CompileTimeOperators.cs:36:9:38:9 | After {...} | CompileTimeOperators.cs:28:10:28:10 | Exceptional Exit | exception | +| CompileTimeOperators.cs:36:9:38:9 | After {...} | CompileTimeOperators.cs:30:9:38:9 | After try {...} ... | | +| CompileTimeOperators.cs:36:9:38:9 | After {...} | CompileTimeOperators.cs:40:9:40:11 | End: | goto | | CompileTimeOperators.cs:36:9:38:9 | {...} | CompileTimeOperators.cs:37:13:37:41 | ...; | | -| CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | CompileTimeOperators.cs:28:10:28:10 | exit M (abnormal) | exception | -| CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | CompileTimeOperators.cs:39:9:39:34 | ...; | | -| CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | CompileTimeOperators.cs:40:9:40:11 | End: | goto | -| CompileTimeOperators.cs:37:13:37:41 | ...; | CompileTimeOperators.cs:37:31:37:39 | "Finally" | | +| CompileTimeOperators.cs:37:13:37:40 | After call to method WriteLine | CompileTimeOperators.cs:37:13:37:41 | After ...; | | +| CompileTimeOperators.cs:37:13:37:40 | Before call to method WriteLine | CompileTimeOperators.cs:37:31:37:39 | "Finally" | | +| CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | CompileTimeOperators.cs:37:13:37:40 | After call to method WriteLine | | +| CompileTimeOperators.cs:37:13:37:41 | ...; | CompileTimeOperators.cs:37:13:37:40 | Before call to method WriteLine | | +| CompileTimeOperators.cs:37:13:37:41 | After ...; | CompileTimeOperators.cs:36:9:38:9 | After {...} | | | CompileTimeOperators.cs:37:31:37:39 | "Finally" | CompileTimeOperators.cs:37:13:37:40 | call to method WriteLine | | -| CompileTimeOperators.cs:39:9:39:33 | call to method WriteLine | CompileTimeOperators.cs:40:9:40:11 | End: | | -| CompileTimeOperators.cs:39:9:39:34 | ...; | CompileTimeOperators.cs:39:27:39:32 | "Dead" | | +| CompileTimeOperators.cs:39:9:39:33 | After call to method WriteLine | CompileTimeOperators.cs:39:9:39:34 | After ...; | | +| CompileTimeOperators.cs:39:9:39:33 | Before call to method WriteLine | CompileTimeOperators.cs:39:27:39:32 | "Dead" | | +| CompileTimeOperators.cs:39:9:39:33 | call to method WriteLine | CompileTimeOperators.cs:39:9:39:33 | After call to method WriteLine | | +| CompileTimeOperators.cs:39:9:39:34 | ...; | CompileTimeOperators.cs:39:9:39:33 | Before call to method WriteLine | | +| CompileTimeOperators.cs:39:9:39:34 | After ...; | CompileTimeOperators.cs:40:9:40:11 | End: | | | CompileTimeOperators.cs:39:27:39:32 | "Dead" | CompileTimeOperators.cs:39:9:39:33 | call to method WriteLine | | | CompileTimeOperators.cs:40:9:40:11 | End: | CompileTimeOperators.cs:40:14:40:38 | ...; | | -| CompileTimeOperators.cs:40:14:40:37 | call to method WriteLine | CompileTimeOperators.cs:28:10:28:10 | exit M (normal) | | -| CompileTimeOperators.cs:40:14:40:38 | ...; | CompileTimeOperators.cs:40:32:40:36 | "End" | | +| CompileTimeOperators.cs:40:14:40:37 | After call to method WriteLine | CompileTimeOperators.cs:40:14:40:38 | After ...; | | +| CompileTimeOperators.cs:40:14:40:37 | Before call to method WriteLine | CompileTimeOperators.cs:40:32:40:36 | "End" | | +| CompileTimeOperators.cs:40:14:40:37 | call to method WriteLine | CompileTimeOperators.cs:40:14:40:37 | After call to method WriteLine | | +| CompileTimeOperators.cs:40:14:40:38 | ...; | CompileTimeOperators.cs:40:14:40:37 | Before call to method WriteLine | | +| CompileTimeOperators.cs:40:14:40:38 | After ...; | CompileTimeOperators.cs:29:5:41:5 | After {...} | | | CompileTimeOperators.cs:40:32:40:36 | "End" | CompileTimeOperators.cs:40:14:40:37 | call to method WriteLine | | -| ConditionalAccess.cs:1:7:1:23 | call to constructor Object | ConditionalAccess.cs:1:7:1:23 | {...} | | -| ConditionalAccess.cs:1:7:1:23 | call to method | ConditionalAccess.cs:1:7:1:23 | call to constructor Object | | -| ConditionalAccess.cs:1:7:1:23 | enter ConditionalAccess | ConditionalAccess.cs:1:7:1:23 | this access | | -| ConditionalAccess.cs:1:7:1:23 | exit ConditionalAccess (normal) | ConditionalAccess.cs:1:7:1:23 | exit ConditionalAccess | | +| ConditionalAccess.cs:1:7:1:23 | After call to constructor Object | ConditionalAccess.cs:1:7:1:23 | {...} | | +| ConditionalAccess.cs:1:7:1:23 | After call to method | ConditionalAccess.cs:1:7:1:23 | Before call to constructor Object | | +| ConditionalAccess.cs:1:7:1:23 | Before call to constructor Object | ConditionalAccess.cs:1:7:1:23 | call to constructor Object | | +| ConditionalAccess.cs:1:7:1:23 | Before call to method | ConditionalAccess.cs:1:7:1:23 | this access | | +| ConditionalAccess.cs:1:7:1:23 | Entry | ConditionalAccess.cs:1:7:1:23 | Before call to method | | +| ConditionalAccess.cs:1:7:1:23 | Normal Exit | ConditionalAccess.cs:1:7:1:23 | Exit | | +| ConditionalAccess.cs:1:7:1:23 | call to constructor Object | ConditionalAccess.cs:1:7:1:23 | After call to constructor Object | | +| ConditionalAccess.cs:1:7:1:23 | call to method | ConditionalAccess.cs:1:7:1:23 | After call to method | | | ConditionalAccess.cs:1:7:1:23 | this access | ConditionalAccess.cs:1:7:1:23 | call to method | | -| ConditionalAccess.cs:1:7:1:23 | {...} | ConditionalAccess.cs:1:7:1:23 | exit ConditionalAccess (normal) | | -| ConditionalAccess.cs:3:12:3:13 | enter M1 | ConditionalAccess.cs:3:26:3:26 | access to parameter i | | -| ConditionalAccess.cs:3:12:3:13 | exit M1 (normal) | ConditionalAccess.cs:3:12:3:13 | exit M1 | | -| ConditionalAccess.cs:3:26:3:26 | access to parameter i | ConditionalAccess.cs:3:12:3:13 | exit M1 (normal) | null | -| ConditionalAccess.cs:3:26:3:26 | access to parameter i | ConditionalAccess.cs:3:26:3:38 | call to method ToString | non-null | -| ConditionalAccess.cs:3:26:3:38 | call to method ToString | ConditionalAccess.cs:3:12:3:13 | exit M1 (normal) | null | -| ConditionalAccess.cs:3:26:3:38 | call to method ToString | ConditionalAccess.cs:3:26:3:49 | call to method ToLower | non-null | -| ConditionalAccess.cs:3:26:3:49 | call to method ToLower | ConditionalAccess.cs:3:12:3:13 | exit M1 (normal) | | -| ConditionalAccess.cs:5:10:5:11 | enter M2 | ConditionalAccess.cs:5:26:5:26 | access to parameter s | | -| ConditionalAccess.cs:5:10:5:11 | exit M2 (normal) | ConditionalAccess.cs:5:10:5:11 | exit M2 | | -| ConditionalAccess.cs:5:26:5:26 | access to parameter s | ConditionalAccess.cs:5:10:5:11 | exit M2 (normal) | null | -| ConditionalAccess.cs:5:26:5:26 | access to parameter s | ConditionalAccess.cs:5:26:5:34 | access to property Length | non-null | -| ConditionalAccess.cs:5:26:5:34 | access to property Length | ConditionalAccess.cs:5:10:5:11 | exit M2 (normal) | | -| ConditionalAccess.cs:7:10:7:11 | enter M3 | ConditionalAccess.cs:7:39:7:40 | access to parameter s1 | | -| ConditionalAccess.cs:7:10:7:11 | exit M3 (normal) | ConditionalAccess.cs:7:10:7:11 | exit M3 | | -| ConditionalAccess.cs:7:38:7:55 | access to property Length | ConditionalAccess.cs:7:10:7:11 | exit M3 (normal) | | -| ConditionalAccess.cs:7:39:7:40 | access to parameter s1 | ConditionalAccess.cs:7:39:7:46 | ... ?? ... | non-null | -| ConditionalAccess.cs:7:39:7:40 | access to parameter s1 | ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | null | -| ConditionalAccess.cs:7:39:7:46 | ... ?? ... | ConditionalAccess.cs:7:10:7:11 | exit M3 (normal) | null | -| ConditionalAccess.cs:7:39:7:46 | ... ?? ... | ConditionalAccess.cs:7:38:7:55 | access to property Length | non-null | -| ConditionalAccess.cs:7:39:7:46 | [non-null] ... ?? ... | ConditionalAccess.cs:7:38:7:55 | access to property Length | non-null | -| ConditionalAccess.cs:7:39:7:46 | [null] ... ?? ... | ConditionalAccess.cs:7:10:7:11 | exit M3 (normal) | null | -| ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | ConditionalAccess.cs:7:39:7:46 | [non-null] ... ?? ... | non-null | -| ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | ConditionalAccess.cs:7:39:7:46 | [null] ... ?? ... | null | -| ConditionalAccess.cs:9:9:9:10 | enter M4 | ConditionalAccess.cs:9:25:9:25 | access to parameter s | | -| ConditionalAccess.cs:9:9:9:10 | exit M4 (normal) | ConditionalAccess.cs:9:9:9:10 | exit M4 | | -| ConditionalAccess.cs:9:25:9:25 | access to parameter s | ConditionalAccess.cs:9:25:9:33 | access to property Length | non-null | -| ConditionalAccess.cs:9:25:9:25 | access to parameter s | ConditionalAccess.cs:9:38:9:38 | 0 | null | -| ConditionalAccess.cs:9:25:9:33 | access to property Length | ConditionalAccess.cs:9:25:9:38 | ... ?? ... | non-null | -| ConditionalAccess.cs:9:25:9:33 | access to property Length | ConditionalAccess.cs:9:38:9:38 | 0 | null | -| ConditionalAccess.cs:9:25:9:38 | ... ?? ... | ConditionalAccess.cs:9:9:9:10 | exit M4 (normal) | | -| ConditionalAccess.cs:9:38:9:38 | 0 | ConditionalAccess.cs:9:25:9:38 | ... ?? ... | | -| ConditionalAccess.cs:11:9:11:10 | enter M5 | ConditionalAccess.cs:12:5:17:5 | {...} | | -| ConditionalAccess.cs:11:9:11:10 | exit M5 (normal) | ConditionalAccess.cs:11:9:11:10 | exit M5 | | +| ConditionalAccess.cs:1:7:1:23 | {...} | ConditionalAccess.cs:1:7:1:23 | Normal Exit | | +| ConditionalAccess.cs:3:12:3:13 | Entry | ConditionalAccess.cs:3:20:3:20 | i | | +| ConditionalAccess.cs:3:12:3:13 | Normal Exit | ConditionalAccess.cs:3:12:3:13 | Exit | | +| ConditionalAccess.cs:3:20:3:20 | i | ConditionalAccess.cs:3:26:3:49 | Before call to method ToLower | | +| ConditionalAccess.cs:3:26:3:26 | After access to parameter i [non-null] | ConditionalAccess.cs:3:26:3:38 | call to method ToString | | +| ConditionalAccess.cs:3:26:3:26 | After access to parameter i [null] | ConditionalAccess.cs:3:26:3:38 | After call to method ToString [null] | null | +| ConditionalAccess.cs:3:26:3:26 | access to parameter i | ConditionalAccess.cs:3:26:3:26 | After access to parameter i [non-null] | non-null | +| ConditionalAccess.cs:3:26:3:26 | access to parameter i | ConditionalAccess.cs:3:26:3:26 | After access to parameter i [null] | null | +| ConditionalAccess.cs:3:26:3:38 | After call to method ToString [non-null] | ConditionalAccess.cs:3:26:3:49 | call to method ToLower | | +| ConditionalAccess.cs:3:26:3:38 | After call to method ToString [null] | ConditionalAccess.cs:3:26:3:49 | After call to method ToLower | | +| ConditionalAccess.cs:3:26:3:38 | Before call to method ToString | ConditionalAccess.cs:3:26:3:26 | access to parameter i | | +| ConditionalAccess.cs:3:26:3:38 | call to method ToString | ConditionalAccess.cs:3:26:3:38 | After call to method ToString [non-null] | non-null | +| ConditionalAccess.cs:3:26:3:38 | call to method ToString | ConditionalAccess.cs:3:26:3:38 | After call to method ToString [null] | null | +| ConditionalAccess.cs:3:26:3:49 | After call to method ToLower | ConditionalAccess.cs:3:12:3:13 | Normal Exit | | +| ConditionalAccess.cs:3:26:3:49 | Before call to method ToLower | ConditionalAccess.cs:3:26:3:38 | Before call to method ToString | | +| ConditionalAccess.cs:3:26:3:49 | call to method ToLower | ConditionalAccess.cs:3:26:3:49 | After call to method ToLower | | +| ConditionalAccess.cs:5:10:5:11 | Entry | ConditionalAccess.cs:5:20:5:20 | s | | +| ConditionalAccess.cs:5:10:5:11 | Normal Exit | ConditionalAccess.cs:5:10:5:11 | Exit | | +| ConditionalAccess.cs:5:20:5:20 | s | ConditionalAccess.cs:5:26:5:34 | Before access to property Length | | +| ConditionalAccess.cs:5:26:5:26 | After access to parameter s [non-null] | ConditionalAccess.cs:5:26:5:34 | access to property Length | | +| ConditionalAccess.cs:5:26:5:26 | After access to parameter s [null] | ConditionalAccess.cs:5:26:5:34 | After access to property Length | | +| ConditionalAccess.cs:5:26:5:26 | access to parameter s | ConditionalAccess.cs:5:26:5:26 | After access to parameter s [non-null] | non-null | +| ConditionalAccess.cs:5:26:5:26 | access to parameter s | ConditionalAccess.cs:5:26:5:26 | After access to parameter s [null] | null | +| ConditionalAccess.cs:5:26:5:34 | After access to property Length | ConditionalAccess.cs:5:10:5:11 | Normal Exit | | +| ConditionalAccess.cs:5:26:5:34 | Before access to property Length | ConditionalAccess.cs:5:26:5:26 | access to parameter s | | +| ConditionalAccess.cs:5:26:5:34 | access to property Length | ConditionalAccess.cs:5:26:5:34 | After access to property Length | | +| ConditionalAccess.cs:7:10:7:11 | Entry | ConditionalAccess.cs:7:20:7:21 | s1 | | +| ConditionalAccess.cs:7:10:7:11 | Normal Exit | ConditionalAccess.cs:7:10:7:11 | Exit | | +| ConditionalAccess.cs:7:20:7:21 | s1 | ConditionalAccess.cs:7:31:7:32 | s2 | | +| ConditionalAccess.cs:7:31:7:32 | s2 | ConditionalAccess.cs:7:38:7:55 | Before access to property Length | | +| ConditionalAccess.cs:7:38:7:55 | After access to property Length | ConditionalAccess.cs:7:10:7:11 | Normal Exit | | +| ConditionalAccess.cs:7:38:7:55 | Before access to property Length | ConditionalAccess.cs:7:39:7:46 | ... ?? ... | | +| ConditionalAccess.cs:7:38:7:55 | access to property Length | ConditionalAccess.cs:7:38:7:55 | After access to property Length | | +| ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [non-null] | ConditionalAccess.cs:7:39:7:46 | After ... ?? ... [non-null] | non-null | +| ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [null] | ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | | +| ConditionalAccess.cs:7:39:7:40 | access to parameter s1 | ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [non-null] | non-null | +| ConditionalAccess.cs:7:39:7:40 | access to parameter s1 | ConditionalAccess.cs:7:39:7:40 | After access to parameter s1 [null] | null | +| ConditionalAccess.cs:7:39:7:46 | ... ?? ... | ConditionalAccess.cs:7:39:7:40 | access to parameter s1 | | +| ConditionalAccess.cs:7:39:7:46 | After ... ?? ... [non-null] | ConditionalAccess.cs:7:38:7:55 | access to property Length | | +| ConditionalAccess.cs:7:39:7:46 | After ... ?? ... [null] | ConditionalAccess.cs:7:38:7:55 | After access to property Length | | +| ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [non-null] | ConditionalAccess.cs:7:39:7:46 | After ... ?? ... [non-null] | non-null | +| ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [null] | ConditionalAccess.cs:7:39:7:46 | After ... ?? ... [null] | null | +| ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [non-null] | non-null | +| ConditionalAccess.cs:7:45:7:46 | access to parameter s2 | ConditionalAccess.cs:7:45:7:46 | After access to parameter s2 [null] | null | +| ConditionalAccess.cs:9:9:9:10 | Entry | ConditionalAccess.cs:9:19:9:19 | s | | +| ConditionalAccess.cs:9:9:9:10 | Normal Exit | ConditionalAccess.cs:9:9:9:10 | Exit | | +| ConditionalAccess.cs:9:19:9:19 | s | ConditionalAccess.cs:9:25:9:38 | ... ?? ... | | +| ConditionalAccess.cs:9:25:9:25 | After access to parameter s [non-null] | ConditionalAccess.cs:9:25:9:33 | access to property Length | | +| ConditionalAccess.cs:9:25:9:25 | After access to parameter s [null] | ConditionalAccess.cs:9:25:9:33 | After access to property Length [null] | null | +| ConditionalAccess.cs:9:25:9:25 | access to parameter s | ConditionalAccess.cs:9:25:9:25 | After access to parameter s [non-null] | non-null | +| ConditionalAccess.cs:9:25:9:25 | access to parameter s | ConditionalAccess.cs:9:25:9:25 | After access to parameter s [null] | null | +| ConditionalAccess.cs:9:25:9:33 | After access to property Length [non-null] | ConditionalAccess.cs:9:25:9:38 | After ... ?? ... | | +| ConditionalAccess.cs:9:25:9:33 | After access to property Length [null] | ConditionalAccess.cs:9:38:9:38 | 0 | | +| ConditionalAccess.cs:9:25:9:33 | Before access to property Length | ConditionalAccess.cs:9:25:9:25 | access to parameter s | | +| ConditionalAccess.cs:9:25:9:33 | access to property Length | ConditionalAccess.cs:9:25:9:33 | After access to property Length [non-null] | non-null | +| ConditionalAccess.cs:9:25:9:33 | access to property Length | ConditionalAccess.cs:9:25:9:33 | After access to property Length [null] | null | +| ConditionalAccess.cs:9:25:9:38 | ... ?? ... | ConditionalAccess.cs:9:25:9:33 | Before access to property Length | | +| ConditionalAccess.cs:9:25:9:38 | After ... ?? ... | ConditionalAccess.cs:9:9:9:10 | Normal Exit | | +| ConditionalAccess.cs:9:38:9:38 | 0 | ConditionalAccess.cs:9:25:9:38 | After ... ?? ... | | +| ConditionalAccess.cs:11:9:11:10 | Entry | ConditionalAccess.cs:11:19:11:19 | s | | +| ConditionalAccess.cs:11:9:11:10 | Normal Exit | ConditionalAccess.cs:11:9:11:10 | Exit | | +| ConditionalAccess.cs:11:19:11:19 | s | ConditionalAccess.cs:12:5:17:5 | {...} | | | ConditionalAccess.cs:12:5:17:5 | {...} | ConditionalAccess.cs:13:9:16:21 | if (...) ... | | -| ConditionalAccess.cs:13:9:16:21 | if (...) ... | ConditionalAccess.cs:13:13:13:13 | access to parameter s | | -| ConditionalAccess.cs:13:13:13:13 | access to parameter s | ConditionalAccess.cs:13:13:13:21 | access to property Length | non-null | -| ConditionalAccess.cs:13:13:13:13 | access to parameter s | ConditionalAccess.cs:13:25:13:25 | 0 | null | -| ConditionalAccess.cs:13:13:13:21 | access to property Length | ConditionalAccess.cs:13:25:13:25 | 0 | | -| ConditionalAccess.cs:13:13:13:25 | ... > ... | ConditionalAccess.cs:14:20:14:20 | 0 | true | -| ConditionalAccess.cs:13:13:13:25 | ... > ... | ConditionalAccess.cs:16:20:16:20 | 1 | false | +| ConditionalAccess.cs:13:9:16:21 | if (...) ... | ConditionalAccess.cs:13:13:13:25 | Before ... > ... | | +| ConditionalAccess.cs:13:13:13:13 | After access to parameter s [non-null] | ConditionalAccess.cs:13:13:13:21 | access to property Length | | +| ConditionalAccess.cs:13:13:13:13 | After access to parameter s [null] | ConditionalAccess.cs:13:13:13:21 | After access to property Length | | +| ConditionalAccess.cs:13:13:13:13 | access to parameter s | ConditionalAccess.cs:13:13:13:13 | After access to parameter s [non-null] | non-null | +| ConditionalAccess.cs:13:13:13:13 | access to parameter s | ConditionalAccess.cs:13:13:13:13 | After access to parameter s [null] | null | +| ConditionalAccess.cs:13:13:13:21 | After access to property Length | ConditionalAccess.cs:13:25:13:25 | Before (...) ... | | +| ConditionalAccess.cs:13:13:13:21 | Before access to property Length | ConditionalAccess.cs:13:13:13:13 | access to parameter s | | +| ConditionalAccess.cs:13:13:13:21 | access to property Length | ConditionalAccess.cs:13:13:13:21 | After access to property Length | | +| ConditionalAccess.cs:13:13:13:25 | ... > ... | ConditionalAccess.cs:13:13:13:25 | After ... > ... [false] | false | +| ConditionalAccess.cs:13:13:13:25 | ... > ... | ConditionalAccess.cs:13:13:13:25 | After ... > ... [true] | true | +| ConditionalAccess.cs:13:13:13:25 | After ... > ... [false] | ConditionalAccess.cs:16:13:16:21 | Before return ...; | | +| ConditionalAccess.cs:13:13:13:25 | After ... > ... [true] | ConditionalAccess.cs:14:13:14:21 | Before return ...; | | +| ConditionalAccess.cs:13:13:13:25 | Before ... > ... | ConditionalAccess.cs:13:13:13:21 | Before access to property Length | | | ConditionalAccess.cs:13:25:13:25 | 0 | ConditionalAccess.cs:13:25:13:25 | (...) ... | | -| ConditionalAccess.cs:13:25:13:25 | (...) ... | ConditionalAccess.cs:13:13:13:25 | ... > ... | | -| ConditionalAccess.cs:14:13:14:21 | return ...; | ConditionalAccess.cs:11:9:11:10 | exit M5 (normal) | return | +| ConditionalAccess.cs:13:25:13:25 | (...) ... | ConditionalAccess.cs:13:25:13:25 | After (...) ... | | +| ConditionalAccess.cs:13:25:13:25 | After (...) ... | ConditionalAccess.cs:13:13:13:25 | ... > ... | | +| ConditionalAccess.cs:13:25:13:25 | Before (...) ... | ConditionalAccess.cs:13:25:13:25 | 0 | | +| ConditionalAccess.cs:14:13:14:21 | Before return ...; | ConditionalAccess.cs:14:20:14:20 | 0 | | +| ConditionalAccess.cs:14:13:14:21 | return ...; | ConditionalAccess.cs:11:9:11:10 | Normal Exit | return | | ConditionalAccess.cs:14:20:14:20 | 0 | ConditionalAccess.cs:14:13:14:21 | return ...; | | -| ConditionalAccess.cs:16:13:16:21 | return ...; | ConditionalAccess.cs:11:9:11:10 | exit M5 (normal) | return | +| ConditionalAccess.cs:16:13:16:21 | Before return ...; | ConditionalAccess.cs:16:20:16:20 | 1 | | +| ConditionalAccess.cs:16:13:16:21 | return ...; | ConditionalAccess.cs:11:9:11:10 | Normal Exit | return | | ConditionalAccess.cs:16:20:16:20 | 1 | ConditionalAccess.cs:16:13:16:21 | return ...; | | -| ConditionalAccess.cs:19:12:19:13 | enter M6 | ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | | -| ConditionalAccess.cs:19:12:19:13 | exit M6 (normal) | ConditionalAccess.cs:19:12:19:13 | exit M6 | | -| ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | ConditionalAccess.cs:19:12:19:13 | exit M6 (normal) | null | -| ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | non-null | -| ConditionalAccess.cs:19:40:19:60 | call to method CommaJoinWith | ConditionalAccess.cs:19:12:19:13 | exit M6 (normal) | | +| ConditionalAccess.cs:19:12:19:13 | Entry | ConditionalAccess.cs:19:22:19:23 | s1 | | +| ConditionalAccess.cs:19:12:19:13 | Normal Exit | ConditionalAccess.cs:19:12:19:13 | Exit | | +| ConditionalAccess.cs:19:22:19:23 | s1 | ConditionalAccess.cs:19:33:19:34 | s2 | | +| ConditionalAccess.cs:19:33:19:34 | s2 | ConditionalAccess.cs:19:40:19:60 | Before call to method CommaJoinWith | | +| ConditionalAccess.cs:19:40:19:41 | After access to parameter s1 [non-null] | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | | +| ConditionalAccess.cs:19:40:19:41 | After access to parameter s1 [null] | ConditionalAccess.cs:19:40:19:60 | After call to method CommaJoinWith | | +| ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | ConditionalAccess.cs:19:40:19:41 | After access to parameter s1 [non-null] | non-null | +| ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | ConditionalAccess.cs:19:40:19:41 | After access to parameter s1 [null] | null | +| ConditionalAccess.cs:19:40:19:60 | After call to method CommaJoinWith | ConditionalAccess.cs:19:12:19:13 | Normal Exit | | +| ConditionalAccess.cs:19:40:19:60 | Before call to method CommaJoinWith | ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | | +| ConditionalAccess.cs:19:40:19:60 | call to method CommaJoinWith | ConditionalAccess.cs:19:40:19:60 | After call to method CommaJoinWith | | | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | ConditionalAccess.cs:19:40:19:60 | call to method CommaJoinWith | | -| ConditionalAccess.cs:21:10:21:11 | enter M7 | ConditionalAccess.cs:22:5:26:5 | {...} | | -| ConditionalAccess.cs:21:10:21:11 | exit M7 (normal) | ConditionalAccess.cs:21:10:21:11 | exit M7 | | +| ConditionalAccess.cs:21:10:21:11 | Entry | ConditionalAccess.cs:21:17:21:17 | i | | +| ConditionalAccess.cs:21:10:21:11 | Normal Exit | ConditionalAccess.cs:21:10:21:11 | Exit | | +| ConditionalAccess.cs:21:17:21:17 | i | ConditionalAccess.cs:22:5:26:5 | {...} | | +| ConditionalAccess.cs:22:5:26:5 | After {...} | ConditionalAccess.cs:21:10:21:11 | Normal Exit | | | ConditionalAccess.cs:22:5:26:5 | {...} | ConditionalAccess.cs:23:9:23:39 | ... ...; | | -| ConditionalAccess.cs:23:9:23:39 | ... ...; | ConditionalAccess.cs:23:26:23:29 | null | | -| ConditionalAccess.cs:23:13:23:38 | Nullable j = ... | ConditionalAccess.cs:24:9:24:38 | ... ...; | | -| ConditionalAccess.cs:23:18:23:29 | (...) ... | ConditionalAccess.cs:23:13:23:38 | Nullable j = ... | null | +| ConditionalAccess.cs:23:9:23:39 | ... ...; | ConditionalAccess.cs:23:13:23:38 | Before Nullable j = ... | | +| ConditionalAccess.cs:23:9:23:39 | After ... ...; | ConditionalAccess.cs:24:9:24:38 | ... ...; | | +| ConditionalAccess.cs:23:13:23:13 | access to local variable j | ConditionalAccess.cs:23:17:23:38 | Before access to property Length | | +| ConditionalAccess.cs:23:13:23:38 | After Nullable j = ... | ConditionalAccess.cs:23:9:23:39 | After ... ...; | | +| ConditionalAccess.cs:23:13:23:38 | Before Nullable j = ... | ConditionalAccess.cs:23:13:23:13 | access to local variable j | | +| ConditionalAccess.cs:23:13:23:38 | Nullable j = ... | ConditionalAccess.cs:23:13:23:38 | After Nullable j = ... | | +| ConditionalAccess.cs:23:17:23:38 | After access to property Length | ConditionalAccess.cs:23:13:23:38 | Nullable j = ... | | +| ConditionalAccess.cs:23:17:23:38 | Before access to property Length | ConditionalAccess.cs:23:18:23:29 | Before (...) ... | | +| ConditionalAccess.cs:23:17:23:38 | access to property Length | ConditionalAccess.cs:23:17:23:38 | After access to property Length | | +| ConditionalAccess.cs:23:18:23:29 | (...) ... | ConditionalAccess.cs:23:18:23:29 | After (...) ... [non-null] | non-null | +| ConditionalAccess.cs:23:18:23:29 | (...) ... | ConditionalAccess.cs:23:18:23:29 | After (...) ... [null] | null | +| ConditionalAccess.cs:23:18:23:29 | After (...) ... [non-null] | ConditionalAccess.cs:23:17:23:38 | access to property Length | | +| ConditionalAccess.cs:23:18:23:29 | After (...) ... [null] | ConditionalAccess.cs:23:17:23:38 | After access to property Length | | +| ConditionalAccess.cs:23:18:23:29 | Before (...) ... | ConditionalAccess.cs:23:26:23:29 | null | | | ConditionalAccess.cs:23:26:23:29 | null | ConditionalAccess.cs:23:18:23:29 | (...) ... | | -| ConditionalAccess.cs:24:9:24:38 | ... ...; | ConditionalAccess.cs:24:24:24:24 | access to parameter i | | -| ConditionalAccess.cs:24:13:24:37 | String s = ... | ConditionalAccess.cs:25:9:25:33 | ...; | | -| ConditionalAccess.cs:24:17:24:37 | call to method ToString | ConditionalAccess.cs:24:13:24:37 | String s = ... | | -| ConditionalAccess.cs:24:18:24:24 | (...) ... | ConditionalAccess.cs:24:17:24:37 | call to method ToString | non-null | +| ConditionalAccess.cs:24:9:24:38 | ... ...; | ConditionalAccess.cs:24:13:24:37 | Before String s = ... | | +| ConditionalAccess.cs:24:9:24:38 | After ... ...; | ConditionalAccess.cs:25:9:25:33 | ...; | | +| ConditionalAccess.cs:24:13:24:13 | access to local variable s | ConditionalAccess.cs:24:17:24:37 | Before call to method ToString | | +| ConditionalAccess.cs:24:13:24:37 | After String s = ... | ConditionalAccess.cs:24:9:24:38 | After ... ...; | | +| ConditionalAccess.cs:24:13:24:37 | Before String s = ... | ConditionalAccess.cs:24:13:24:13 | access to local variable s | | +| ConditionalAccess.cs:24:13:24:37 | String s = ... | ConditionalAccess.cs:24:13:24:37 | After String s = ... | | +| ConditionalAccess.cs:24:17:24:37 | After call to method ToString | ConditionalAccess.cs:24:13:24:37 | String s = ... | | +| ConditionalAccess.cs:24:17:24:37 | Before call to method ToString | ConditionalAccess.cs:24:18:24:24 | Before (...) ... | | +| ConditionalAccess.cs:24:17:24:37 | call to method ToString | ConditionalAccess.cs:24:17:24:37 | After call to method ToString | | +| ConditionalAccess.cs:24:18:24:24 | (...) ... | ConditionalAccess.cs:24:18:24:24 | After (...) ... [non-null] | non-null | +| ConditionalAccess.cs:24:18:24:24 | (...) ... | ConditionalAccess.cs:24:18:24:24 | After (...) ... [null] | null | +| ConditionalAccess.cs:24:18:24:24 | After (...) ... [non-null] | ConditionalAccess.cs:24:17:24:37 | call to method ToString | | +| ConditionalAccess.cs:24:18:24:24 | After (...) ... [null] | ConditionalAccess.cs:24:17:24:37 | After call to method ToString | | +| ConditionalAccess.cs:24:18:24:24 | Before (...) ... | ConditionalAccess.cs:24:24:24:24 | access to parameter i | | | ConditionalAccess.cs:24:24:24:24 | access to parameter i | ConditionalAccess.cs:24:18:24:24 | (...) ... | | -| ConditionalAccess.cs:25:9:25:32 | ... = ... | ConditionalAccess.cs:21:10:21:11 | exit M7 (normal) | | -| ConditionalAccess.cs:25:9:25:33 | ...; | ConditionalAccess.cs:25:13:25:14 | "" | | -| ConditionalAccess.cs:25:13:25:14 | "" | ConditionalAccess.cs:25:31:25:31 | access to local variable s | non-null | -| ConditionalAccess.cs:25:13:25:32 | call to method CommaJoinWith | ConditionalAccess.cs:25:9:25:32 | ... = ... | | +| ConditionalAccess.cs:25:9:25:9 | access to local variable s | ConditionalAccess.cs:25:13:25:32 | Before call to method CommaJoinWith | | +| ConditionalAccess.cs:25:9:25:32 | ... = ... | ConditionalAccess.cs:25:9:25:32 | After ... = ... | | +| ConditionalAccess.cs:25:9:25:32 | After ... = ... | ConditionalAccess.cs:25:9:25:33 | After ...; | | +| ConditionalAccess.cs:25:9:25:32 | Before ... = ... | ConditionalAccess.cs:25:9:25:9 | access to local variable s | | +| ConditionalAccess.cs:25:9:25:33 | ...; | ConditionalAccess.cs:25:9:25:32 | Before ... = ... | | +| ConditionalAccess.cs:25:9:25:33 | After ...; | ConditionalAccess.cs:22:5:26:5 | After {...} | | +| ConditionalAccess.cs:25:13:25:14 | "" | ConditionalAccess.cs:25:13:25:14 | After "" [non-null] | non-null | +| ConditionalAccess.cs:25:13:25:14 | "" | ConditionalAccess.cs:25:13:25:14 | After "" [null] | null | +| ConditionalAccess.cs:25:13:25:14 | After "" [non-null] | ConditionalAccess.cs:25:31:25:31 | access to local variable s | | +| ConditionalAccess.cs:25:13:25:14 | After "" [null] | ConditionalAccess.cs:25:13:25:32 | After call to method CommaJoinWith | | +| ConditionalAccess.cs:25:13:25:32 | After call to method CommaJoinWith | ConditionalAccess.cs:25:9:25:32 | ... = ... | | +| ConditionalAccess.cs:25:13:25:32 | Before call to method CommaJoinWith | ConditionalAccess.cs:25:13:25:14 | "" | | +| ConditionalAccess.cs:25:13:25:32 | call to method CommaJoinWith | ConditionalAccess.cs:25:13:25:32 | After call to method CommaJoinWith | | | ConditionalAccess.cs:25:31:25:31 | access to local variable s | ConditionalAccess.cs:25:13:25:32 | call to method CommaJoinWith | | -| ConditionalAccess.cs:30:10:30:12 | enter Out | ConditionalAccess.cs:30:32:30:32 | 0 | | -| ConditionalAccess.cs:30:10:30:12 | exit Out (normal) | ConditionalAccess.cs:30:10:30:12 | exit Out | | -| ConditionalAccess.cs:30:28:30:32 | ... = ... | ConditionalAccess.cs:30:10:30:12 | exit Out (normal) | | +| ConditionalAccess.cs:30:10:30:12 | Entry | ConditionalAccess.cs:30:22:30:22 | i | | +| ConditionalAccess.cs:30:10:30:12 | Normal Exit | ConditionalAccess.cs:30:10:30:12 | Exit | | +| ConditionalAccess.cs:30:22:30:22 | i | ConditionalAccess.cs:30:28:30:32 | Before ... = ... | | +| ConditionalAccess.cs:30:28:30:28 | access to parameter i | ConditionalAccess.cs:30:32:30:32 | 0 | | +| ConditionalAccess.cs:30:28:30:32 | ... = ... | ConditionalAccess.cs:30:28:30:32 | After ... = ... | | +| ConditionalAccess.cs:30:28:30:32 | After ... = ... | ConditionalAccess.cs:30:10:30:12 | Normal Exit | | +| ConditionalAccess.cs:30:28:30:32 | Before ... = ... | ConditionalAccess.cs:30:28:30:28 | access to parameter i | | | ConditionalAccess.cs:30:32:30:32 | 0 | ConditionalAccess.cs:30:28:30:32 | ... = ... | | -| ConditionalAccess.cs:32:10:32:11 | enter M8 | ConditionalAccess.cs:33:5:36:5 | {...} | | -| ConditionalAccess.cs:32:10:32:11 | exit M8 (normal) | ConditionalAccess.cs:32:10:32:11 | exit M8 | | +| ConditionalAccess.cs:32:10:32:11 | Entry | ConditionalAccess.cs:32:18:32:18 | b | | +| ConditionalAccess.cs:32:10:32:11 | Normal Exit | ConditionalAccess.cs:32:10:32:11 | Exit | | +| ConditionalAccess.cs:32:18:32:18 | b | ConditionalAccess.cs:32:29:32:29 | i | | +| ConditionalAccess.cs:32:29:32:29 | i | ConditionalAccess.cs:33:5:36:5 | {...} | | +| ConditionalAccess.cs:33:5:36:5 | After {...} | ConditionalAccess.cs:32:10:32:11 | Normal Exit | | | ConditionalAccess.cs:33:5:36:5 | {...} | ConditionalAccess.cs:34:9:34:14 | ...; | | -| ConditionalAccess.cs:34:9:34:13 | ... = ... | ConditionalAccess.cs:35:9:35:25 | ...; | | -| ConditionalAccess.cs:34:9:34:14 | ...; | ConditionalAccess.cs:34:13:34:13 | 0 | | +| ConditionalAccess.cs:34:9:34:9 | access to parameter i | ConditionalAccess.cs:34:13:34:13 | 0 | | +| ConditionalAccess.cs:34:9:34:13 | ... = ... | ConditionalAccess.cs:34:9:34:13 | After ... = ... | | +| ConditionalAccess.cs:34:9:34:13 | After ... = ... | ConditionalAccess.cs:34:9:34:14 | After ...; | | +| ConditionalAccess.cs:34:9:34:13 | Before ... = ... | ConditionalAccess.cs:34:9:34:9 | access to parameter i | | +| ConditionalAccess.cs:34:9:34:14 | ...; | ConditionalAccess.cs:34:9:34:13 | Before ... = ... | | +| ConditionalAccess.cs:34:9:34:14 | After ...; | ConditionalAccess.cs:35:9:35:25 | ...; | | | ConditionalAccess.cs:34:13:34:13 | 0 | ConditionalAccess.cs:34:9:34:13 | ... = ... | | -| ConditionalAccess.cs:35:9:35:12 | access to property Prop | ConditionalAccess.cs:32:10:32:11 | exit M8 (normal) | null | -| ConditionalAccess.cs:35:9:35:12 | access to property Prop | ConditionalAccess.cs:35:9:35:24 | call to method Out | non-null | +| ConditionalAccess.cs:35:9:35:12 | After access to property Prop [non-null] | ConditionalAccess.cs:35:23:35:23 | access to parameter i | | +| ConditionalAccess.cs:35:9:35:12 | After access to property Prop [null] | ConditionalAccess.cs:35:9:35:24 | After call to method Out | | +| ConditionalAccess.cs:35:9:35:12 | Before access to property Prop | ConditionalAccess.cs:35:9:35:12 | this access | | +| ConditionalAccess.cs:35:9:35:12 | access to property Prop | ConditionalAccess.cs:35:9:35:12 | After access to property Prop [non-null] | non-null | +| ConditionalAccess.cs:35:9:35:12 | access to property Prop | ConditionalAccess.cs:35:9:35:12 | After access to property Prop [null] | null | | ConditionalAccess.cs:35:9:35:12 | this access | ConditionalAccess.cs:35:9:35:12 | access to property Prop | | -| ConditionalAccess.cs:35:9:35:24 | call to method Out | ConditionalAccess.cs:32:10:32:11 | exit M8 (normal) | | -| ConditionalAccess.cs:35:9:35:25 | ...; | ConditionalAccess.cs:35:9:35:12 | this access | | -| ConditionalAccess.cs:42:9:42:11 | enter get_Item | ConditionalAccess.cs:42:13:42:28 | {...} | | -| ConditionalAccess.cs:42:9:42:11 | exit get_Item (normal) | ConditionalAccess.cs:42:9:42:11 | exit get_Item | | -| ConditionalAccess.cs:42:13:42:28 | {...} | ConditionalAccess.cs:42:22:42:25 | null | | -| ConditionalAccess.cs:42:15:42:26 | return ...; | ConditionalAccess.cs:42:9:42:11 | exit get_Item (normal) | return | +| ConditionalAccess.cs:35:9:35:24 | After call to method Out | ConditionalAccess.cs:35:9:35:25 | After ...; | | +| ConditionalAccess.cs:35:9:35:24 | Before call to method Out | ConditionalAccess.cs:35:9:35:12 | Before access to property Prop | | +| ConditionalAccess.cs:35:9:35:24 | call to method Out | ConditionalAccess.cs:35:9:35:24 | After call to method Out | | +| ConditionalAccess.cs:35:9:35:25 | ...; | ConditionalAccess.cs:35:9:35:24 | Before call to method Out | | +| ConditionalAccess.cs:35:9:35:25 | After ...; | ConditionalAccess.cs:33:5:36:5 | After {...} | | +| ConditionalAccess.cs:35:23:35:23 | access to parameter i | ConditionalAccess.cs:35:9:35:24 | call to method Out | | +| ConditionalAccess.cs:40:21:40:25 | index | ConditionalAccess.cs:42:13:42:28 | {...} | | +| ConditionalAccess.cs:40:21:40:25 | index | ConditionalAccess.cs:43:9:43:11 | value | | +| ConditionalAccess.cs:42:9:42:11 | Entry | ConditionalAccess.cs:40:21:40:25 | index | | +| ConditionalAccess.cs:42:9:42:11 | Normal Exit | ConditionalAccess.cs:42:9:42:11 | Exit | | +| ConditionalAccess.cs:42:13:42:28 | {...} | ConditionalAccess.cs:42:15:42:26 | Before return ...; | | +| ConditionalAccess.cs:42:15:42:26 | Before return ...; | ConditionalAccess.cs:42:22:42:25 | null | | +| ConditionalAccess.cs:42:15:42:26 | return ...; | ConditionalAccess.cs:42:9:42:11 | Normal Exit | return | | ConditionalAccess.cs:42:22:42:25 | null | ConditionalAccess.cs:42:15:42:26 | return ...; | | -| ConditionalAccess.cs:43:9:43:11 | enter set_Item | ConditionalAccess.cs:43:13:43:15 | {...} | | -| ConditionalAccess.cs:43:9:43:11 | exit set_Item (normal) | ConditionalAccess.cs:43:9:43:11 | exit set_Item | | -| ConditionalAccess.cs:43:13:43:15 | {...} | ConditionalAccess.cs:43:9:43:11 | exit set_Item (normal) | | -| ConditionalAccess.cs:46:10:46:11 | enter M9 | ConditionalAccess.cs:47:5:55:5 | {...} | | -| ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | ConditionalAccess.cs:46:10:46:11 | exit M9 | | +| ConditionalAccess.cs:43:9:43:11 | Entry | ConditionalAccess.cs:40:21:40:25 | index | | +| ConditionalAccess.cs:43:9:43:11 | Normal Exit | ConditionalAccess.cs:43:9:43:11 | Exit | | +| ConditionalAccess.cs:43:9:43:11 | value | ConditionalAccess.cs:43:13:43:15 | {...} | | +| ConditionalAccess.cs:43:13:43:15 | {...} | ConditionalAccess.cs:43:9:43:11 | Normal Exit | | +| ConditionalAccess.cs:46:10:46:11 | Entry | ConditionalAccess.cs:46:31:46:32 | ca | | +| ConditionalAccess.cs:46:10:46:11 | Normal Exit | ConditionalAccess.cs:46:10:46:11 | Exit | | +| ConditionalAccess.cs:46:31:46:32 | ca | ConditionalAccess.cs:47:5:55:5 | {...} | | +| ConditionalAccess.cs:47:5:55:5 | After {...} | ConditionalAccess.cs:46:10:46:11 | Normal Exit | | | ConditionalAccess.cs:47:5:55:5 | {...} | ConditionalAccess.cs:48:9:48:26 | ...; | | -| ConditionalAccess.cs:48:9:48:10 | access to parameter ca | ConditionalAccess.cs:48:24:48:25 | 42 | non-null | -| ConditionalAccess.cs:48:9:48:10 | access to parameter ca | ConditionalAccess.cs:49:9:49:33 | ...; | null | -| ConditionalAccess.cs:48:9:48:20 | access to field IntField | ConditionalAccess.cs:48:12:48:25 | ... = ... | | -| ConditionalAccess.cs:48:9:48:26 | ...; | ConditionalAccess.cs:48:9:48:10 | access to parameter ca | | -| ConditionalAccess.cs:48:12:48:25 | ... = ... | ConditionalAccess.cs:49:9:49:33 | ...; | | -| ConditionalAccess.cs:48:24:48:25 | 42 | ConditionalAccess.cs:48:9:48:20 | access to field IntField | | -| ConditionalAccess.cs:49:9:49:10 | access to parameter ca | ConditionalAccess.cs:49:26:49:32 | "Hello" | non-null | -| ConditionalAccess.cs:49:9:49:10 | access to parameter ca | ConditionalAccess.cs:50:9:50:24 | ...; | null | -| ConditionalAccess.cs:49:9:49:22 | access to property StringProp | ConditionalAccess.cs:49:12:49:32 | ... = ... | | -| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:49:9:49:10 | access to parameter ca | | -| ConditionalAccess.cs:49:12:49:32 | ... = ... | ConditionalAccess.cs:50:9:50:24 | ...; | | -| ConditionalAccess.cs:49:26:49:32 | "Hello" | ConditionalAccess.cs:49:9:49:22 | access to property StringProp | | -| ConditionalAccess.cs:50:9:50:10 | access to parameter ca | ConditionalAccess.cs:50:13:50:13 | 0 | non-null | -| ConditionalAccess.cs:50:9:50:10 | access to parameter ca | ConditionalAccess.cs:51:9:51:32 | ...; | null | -| ConditionalAccess.cs:50:9:50:14 | access to indexer | ConditionalAccess.cs:50:12:50:23 | ... = ... | | -| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:50:9:50:10 | access to parameter ca | | -| ConditionalAccess.cs:50:12:50:23 | ... = ... | ConditionalAccess.cs:51:9:51:32 | ...; | | -| ConditionalAccess.cs:50:13:50:13 | 0 | ConditionalAccess.cs:50:18:50:23 | "Set0" | | -| ConditionalAccess.cs:50:18:50:23 | "Set0" | ConditionalAccess.cs:50:9:50:14 | access to indexer | | -| ConditionalAccess.cs:51:9:51:10 | access to parameter ca | ConditionalAccess.cs:51:9:51:16 | access to property Prop | non-null | -| ConditionalAccess.cs:51:9:51:10 | access to parameter ca | ConditionalAccess.cs:52:9:52:39 | ...; | null | -| ConditionalAccess.cs:51:9:51:16 | access to property Prop | ConditionalAccess.cs:51:30:51:31 | 84 | non-null | -| ConditionalAccess.cs:51:9:51:16 | access to property Prop | ConditionalAccess.cs:52:9:52:39 | ...; | null | -| ConditionalAccess.cs:51:9:51:26 | access to field IntField | ConditionalAccess.cs:51:18:51:31 | ... = ... | | -| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:51:9:51:10 | access to parameter ca | | -| ConditionalAccess.cs:51:18:51:31 | ... = ... | ConditionalAccess.cs:52:9:52:39 | ...; | | -| ConditionalAccess.cs:51:30:51:31 | 84 | ConditionalAccess.cs:51:9:51:26 | access to field IntField | | -| ConditionalAccess.cs:52:9:52:10 | access to parameter ca | ConditionalAccess.cs:52:9:52:16 | access to property Prop | non-null | -| ConditionalAccess.cs:52:9:52:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:26 | ...; | null | -| ConditionalAccess.cs:52:9:52:16 | access to property Prop | ConditionalAccess.cs:52:32:52:38 | "World" | non-null | -| ConditionalAccess.cs:52:9:52:16 | access to property Prop | ConditionalAccess.cs:53:9:53:26 | ...; | null | -| ConditionalAccess.cs:52:9:52:28 | access to property StringProp | ConditionalAccess.cs:52:18:52:38 | ... = ... | | -| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:52:9:52:10 | access to parameter ca | | -| ConditionalAccess.cs:52:18:52:38 | ... = ... | ConditionalAccess.cs:53:9:53:26 | ...; | | -| ConditionalAccess.cs:52:32:52:38 | "World" | ConditionalAccess.cs:52:9:52:28 | access to property StringProp | | -| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:20 | access to field IntField | non-null | -| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:25:53:25 | 1 | null | -| ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:53:25:53:25 | 1 | | -| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | | -| ConditionalAccess.cs:53:12:53:25 | ... -= ... | ConditionalAccess.cs:54:9:54:30 | ...; | | +| ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:48:9:48:20 | access to field IntField | | +| ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [null] | ConditionalAccess.cs:48:12:48:25 | After ... = ... | | +| ConditionalAccess.cs:48:9:48:10 | access to parameter ca | ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [non-null] | non-null | +| ConditionalAccess.cs:48:9:48:10 | access to parameter ca | ConditionalAccess.cs:48:9:48:10 | After access to parameter ca [null] | null | +| ConditionalAccess.cs:48:9:48:20 | After access to field IntField | ConditionalAccess.cs:48:24:48:25 | 42 | | +| ConditionalAccess.cs:48:9:48:20 | Before access to field IntField | ConditionalAccess.cs:48:9:48:10 | access to parameter ca | | +| ConditionalAccess.cs:48:9:48:20 | access to field IntField | ConditionalAccess.cs:48:9:48:20 | After access to field IntField | | +| ConditionalAccess.cs:48:9:48:26 | ...; | ConditionalAccess.cs:48:12:48:25 | Before ... = ... | | +| ConditionalAccess.cs:48:9:48:26 | After ...; | ConditionalAccess.cs:49:9:49:33 | ...; | | +| ConditionalAccess.cs:48:12:48:25 | ... = ... | ConditionalAccess.cs:48:12:48:25 | After ... = ... | | +| ConditionalAccess.cs:48:12:48:25 | After ... = ... | ConditionalAccess.cs:48:9:48:26 | After ...; | | +| ConditionalAccess.cs:48:12:48:25 | Before ... = ... | ConditionalAccess.cs:48:9:48:20 | Before access to field IntField | | +| ConditionalAccess.cs:48:24:48:25 | 42 | ConditionalAccess.cs:48:12:48:25 | ... = ... | | +| ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:49:9:49:22 | access to property StringProp | | +| ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [null] | ConditionalAccess.cs:49:12:49:32 | After ... = ... | | +| ConditionalAccess.cs:49:9:49:10 | access to parameter ca | ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [non-null] | non-null | +| ConditionalAccess.cs:49:9:49:10 | access to parameter ca | ConditionalAccess.cs:49:9:49:10 | After access to parameter ca [null] | null | +| ConditionalAccess.cs:49:9:49:22 | After access to property StringProp | ConditionalAccess.cs:49:26:49:32 | "Hello" | | +| ConditionalAccess.cs:49:9:49:22 | Before access to property StringProp | ConditionalAccess.cs:49:9:49:10 | access to parameter ca | | +| ConditionalAccess.cs:49:9:49:22 | access to property StringProp | ConditionalAccess.cs:49:9:49:22 | After access to property StringProp | | +| ConditionalAccess.cs:49:9:49:33 | ...; | ConditionalAccess.cs:49:12:49:32 | Before ... = ... | | +| ConditionalAccess.cs:49:9:49:33 | After ...; | ConditionalAccess.cs:50:9:50:24 | ...; | | +| ConditionalAccess.cs:49:12:49:32 | ... = ... | ConditionalAccess.cs:49:12:49:32 | After ... = ... | | +| ConditionalAccess.cs:49:12:49:32 | After ... = ... | ConditionalAccess.cs:49:9:49:33 | After ...; | | +| ConditionalAccess.cs:49:12:49:32 | Before ... = ... | ConditionalAccess.cs:49:9:49:22 | Before access to property StringProp | | +| ConditionalAccess.cs:49:26:49:32 | "Hello" | ConditionalAccess.cs:49:12:49:32 | ... = ... | | +| ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:50:13:50:13 | 0 | | +| ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [null] | ConditionalAccess.cs:50:12:50:23 | After ... = ... | | +| ConditionalAccess.cs:50:9:50:10 | access to parameter ca | ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [non-null] | non-null | +| ConditionalAccess.cs:50:9:50:10 | access to parameter ca | ConditionalAccess.cs:50:9:50:10 | After access to parameter ca [null] | null | +| ConditionalAccess.cs:50:9:50:14 | After access to indexer | ConditionalAccess.cs:50:18:50:23 | "Set0" | | +| ConditionalAccess.cs:50:9:50:14 | Before access to indexer | ConditionalAccess.cs:50:9:50:10 | access to parameter ca | | +| ConditionalAccess.cs:50:9:50:14 | access to indexer | ConditionalAccess.cs:50:9:50:14 | After access to indexer | | +| ConditionalAccess.cs:50:9:50:24 | ...; | ConditionalAccess.cs:50:12:50:23 | Before ... = ... | | +| ConditionalAccess.cs:50:9:50:24 | After ...; | ConditionalAccess.cs:51:9:51:32 | ...; | | +| ConditionalAccess.cs:50:12:50:23 | ... = ... | ConditionalAccess.cs:50:12:50:23 | After ... = ... | | +| ConditionalAccess.cs:50:12:50:23 | After ... = ... | ConditionalAccess.cs:50:9:50:24 | After ...; | | +| ConditionalAccess.cs:50:12:50:23 | Before ... = ... | ConditionalAccess.cs:50:9:50:14 | Before access to indexer | | +| ConditionalAccess.cs:50:13:50:13 | 0 | ConditionalAccess.cs:50:9:50:14 | access to indexer | | +| ConditionalAccess.cs:50:18:50:23 | "Set0" | ConditionalAccess.cs:50:12:50:23 | ... = ... | | +| ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:51:9:51:16 | access to property Prop | | +| ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [null] | ConditionalAccess.cs:51:9:51:16 | After access to property Prop [null] | null | +| ConditionalAccess.cs:51:9:51:10 | access to parameter ca | ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [non-null] | non-null | +| ConditionalAccess.cs:51:9:51:10 | access to parameter ca | ConditionalAccess.cs:51:9:51:10 | After access to parameter ca [null] | null | +| ConditionalAccess.cs:51:9:51:16 | After access to property Prop [non-null] | ConditionalAccess.cs:51:9:51:26 | access to field IntField | | +| ConditionalAccess.cs:51:9:51:16 | After access to property Prop [null] | ConditionalAccess.cs:51:18:51:31 | After ... = ... | | +| ConditionalAccess.cs:51:9:51:16 | Before access to property Prop | ConditionalAccess.cs:51:9:51:10 | access to parameter ca | | +| ConditionalAccess.cs:51:9:51:16 | access to property Prop | ConditionalAccess.cs:51:9:51:16 | After access to property Prop [non-null] | non-null | +| ConditionalAccess.cs:51:9:51:16 | access to property Prop | ConditionalAccess.cs:51:9:51:16 | After access to property Prop [null] | null | +| ConditionalAccess.cs:51:9:51:26 | After access to field IntField | ConditionalAccess.cs:51:30:51:31 | 84 | | +| ConditionalAccess.cs:51:9:51:26 | Before access to field IntField | ConditionalAccess.cs:51:9:51:16 | Before access to property Prop | | +| ConditionalAccess.cs:51:9:51:26 | access to field IntField | ConditionalAccess.cs:51:9:51:26 | After access to field IntField | | +| ConditionalAccess.cs:51:9:51:32 | ...; | ConditionalAccess.cs:51:18:51:31 | Before ... = ... | | +| ConditionalAccess.cs:51:9:51:32 | After ...; | ConditionalAccess.cs:52:9:52:39 | ...; | | +| ConditionalAccess.cs:51:18:51:31 | ... = ... | ConditionalAccess.cs:51:18:51:31 | After ... = ... | | +| ConditionalAccess.cs:51:18:51:31 | After ... = ... | ConditionalAccess.cs:51:9:51:32 | After ...; | | +| ConditionalAccess.cs:51:18:51:31 | Before ... = ... | ConditionalAccess.cs:51:9:51:26 | Before access to field IntField | | +| ConditionalAccess.cs:51:30:51:31 | 84 | ConditionalAccess.cs:51:18:51:31 | ... = ... | | +| ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:52:9:52:16 | access to property Prop | | +| ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [null] | ConditionalAccess.cs:52:9:52:16 | After access to property Prop [null] | null | +| ConditionalAccess.cs:52:9:52:10 | access to parameter ca | ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [non-null] | non-null | +| ConditionalAccess.cs:52:9:52:10 | access to parameter ca | ConditionalAccess.cs:52:9:52:10 | After access to parameter ca [null] | null | +| ConditionalAccess.cs:52:9:52:16 | After access to property Prop [non-null] | ConditionalAccess.cs:52:9:52:28 | access to property StringProp | | +| ConditionalAccess.cs:52:9:52:16 | After access to property Prop [null] | ConditionalAccess.cs:52:18:52:38 | After ... = ... | | +| ConditionalAccess.cs:52:9:52:16 | Before access to property Prop | ConditionalAccess.cs:52:9:52:10 | access to parameter ca | | +| ConditionalAccess.cs:52:9:52:16 | access to property Prop | ConditionalAccess.cs:52:9:52:16 | After access to property Prop [non-null] | non-null | +| ConditionalAccess.cs:52:9:52:16 | access to property Prop | ConditionalAccess.cs:52:9:52:16 | After access to property Prop [null] | null | +| ConditionalAccess.cs:52:9:52:28 | After access to property StringProp | ConditionalAccess.cs:52:32:52:38 | "World" | | +| ConditionalAccess.cs:52:9:52:28 | Before access to property StringProp | ConditionalAccess.cs:52:9:52:16 | Before access to property Prop | | +| ConditionalAccess.cs:52:9:52:28 | access to property StringProp | ConditionalAccess.cs:52:9:52:28 | After access to property StringProp | | +| ConditionalAccess.cs:52:9:52:39 | ...; | ConditionalAccess.cs:52:18:52:38 | Before ... = ... | | +| ConditionalAccess.cs:52:9:52:39 | After ...; | ConditionalAccess.cs:53:9:53:26 | ...; | | +| ConditionalAccess.cs:52:18:52:38 | ... = ... | ConditionalAccess.cs:52:18:52:38 | After ... = ... | | +| ConditionalAccess.cs:52:18:52:38 | After ... = ... | ConditionalAccess.cs:52:9:52:39 | After ...; | | +| ConditionalAccess.cs:52:18:52:38 | Before ... = ... | ConditionalAccess.cs:52:9:52:28 | Before access to property StringProp | | +| ConditionalAccess.cs:52:32:52:38 | "World" | ConditionalAccess.cs:52:18:52:38 | ... = ... | | +| ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:53:9:53:20 | access to field IntField | | +| ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [null] | ConditionalAccess.cs:53:12:53:25 | After ... -= ... | | +| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [non-null] | non-null | +| ConditionalAccess.cs:53:9:53:10 | access to parameter ca | ConditionalAccess.cs:53:9:53:10 | After access to parameter ca [null] | null | +| ConditionalAccess.cs:53:9:53:20 | After access to field IntField | ConditionalAccess.cs:53:25:53:25 | 1 | | +| ConditionalAccess.cs:53:9:53:20 | Before access to field IntField | ConditionalAccess.cs:53:9:53:10 | access to parameter ca | | +| ConditionalAccess.cs:53:9:53:20 | access to field IntField | ConditionalAccess.cs:53:9:53:20 | After access to field IntField | | +| ConditionalAccess.cs:53:9:53:26 | ...; | ConditionalAccess.cs:53:12:53:25 | Before ... -= ... | | +| ConditionalAccess.cs:53:9:53:26 | After ...; | ConditionalAccess.cs:54:9:54:30 | ...; | | +| ConditionalAccess.cs:53:12:53:25 | ... -= ... | ConditionalAccess.cs:53:12:53:25 | After ... -= ... | | +| ConditionalAccess.cs:53:12:53:25 | After ... -= ... | ConditionalAccess.cs:53:9:53:26 | After ...; | | +| ConditionalAccess.cs:53:12:53:25 | Before ... -= ... | ConditionalAccess.cs:53:9:53:20 | Before access to field IntField | | | ConditionalAccess.cs:53:25:53:25 | 1 | ConditionalAccess.cs:53:12:53:25 | ... -= ... | | -| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | non-null | -| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:27:54:29 | "!" | null | -| ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:54:27:54:29 | "!" | | -| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | | -| ConditionalAccess.cs:54:12:54:29 | ... += ... | ConditionalAccess.cs:46:10:46:11 | exit M9 (normal) | | +| ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [non-null] | ConditionalAccess.cs:54:9:54:22 | access to property StringProp | | +| ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [null] | ConditionalAccess.cs:54:12:54:29 | After ... += ... | | +| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [non-null] | non-null | +| ConditionalAccess.cs:54:9:54:10 | access to parameter ca | ConditionalAccess.cs:54:9:54:10 | After access to parameter ca [null] | null | +| ConditionalAccess.cs:54:9:54:22 | After access to property StringProp | ConditionalAccess.cs:54:27:54:29 | "!" | | +| ConditionalAccess.cs:54:9:54:22 | Before access to property StringProp | ConditionalAccess.cs:54:9:54:10 | access to parameter ca | | +| ConditionalAccess.cs:54:9:54:22 | access to property StringProp | ConditionalAccess.cs:54:9:54:22 | After access to property StringProp | | +| ConditionalAccess.cs:54:9:54:30 | ...; | ConditionalAccess.cs:54:12:54:29 | Before ... += ... | | +| ConditionalAccess.cs:54:9:54:30 | After ...; | ConditionalAccess.cs:47:5:55:5 | After {...} | | +| ConditionalAccess.cs:54:12:54:29 | ... += ... | ConditionalAccess.cs:54:12:54:29 | After ... += ... | | +| ConditionalAccess.cs:54:12:54:29 | After ... += ... | ConditionalAccess.cs:54:9:54:30 | After ...; | | +| ConditionalAccess.cs:54:12:54:29 | Before ... += ... | ConditionalAccess.cs:54:9:54:22 | Before access to property StringProp | | | ConditionalAccess.cs:54:27:54:29 | "!" | ConditionalAccess.cs:54:12:54:29 | ... += ... | | -| ConditionalAccess.cs:60:26:60:38 | enter CommaJoinWith | ConditionalAccess.cs:60:70:60:71 | access to parameter s1 | | -| ConditionalAccess.cs:60:26:60:38 | exit CommaJoinWith (normal) | ConditionalAccess.cs:60:26:60:38 | exit CommaJoinWith | | +| ConditionalAccess.cs:60:26:60:38 | Entry | ConditionalAccess.cs:60:52:60:53 | s1 | | +| ConditionalAccess.cs:60:26:60:38 | Normal Exit | ConditionalAccess.cs:60:26:60:38 | Exit | | +| ConditionalAccess.cs:60:52:60:53 | s1 | ConditionalAccess.cs:60:63:60:64 | s2 | | +| ConditionalAccess.cs:60:63:60:64 | s2 | ConditionalAccess.cs:60:70:60:83 | Before ... + ... | | | ConditionalAccess.cs:60:70:60:71 | access to parameter s1 | ConditionalAccess.cs:60:75:60:78 | ", " | | -| ConditionalAccess.cs:60:70:60:78 | ... + ... | ConditionalAccess.cs:60:82:60:83 | access to parameter s2 | | -| ConditionalAccess.cs:60:70:60:83 | ... + ... | ConditionalAccess.cs:60:26:60:38 | exit CommaJoinWith (normal) | | +| ConditionalAccess.cs:60:70:60:78 | ... + ... | ConditionalAccess.cs:60:70:60:78 | After ... + ... | | +| ConditionalAccess.cs:60:70:60:78 | After ... + ... | ConditionalAccess.cs:60:82:60:83 | access to parameter s2 | | +| ConditionalAccess.cs:60:70:60:78 | Before ... + ... | ConditionalAccess.cs:60:70:60:71 | access to parameter s1 | | +| ConditionalAccess.cs:60:70:60:83 | ... + ... | ConditionalAccess.cs:60:70:60:83 | After ... + ... | | +| ConditionalAccess.cs:60:70:60:83 | After ... + ... | ConditionalAccess.cs:60:26:60:38 | Normal Exit | | +| ConditionalAccess.cs:60:70:60:83 | Before ... + ... | ConditionalAccess.cs:60:70:60:78 | Before ... + ... | | | ConditionalAccess.cs:60:75:60:78 | ", " | ConditionalAccess.cs:60:70:60:78 | ... + ... | | | ConditionalAccess.cs:60:82:60:83 | access to parameter s2 | ConditionalAccess.cs:60:70:60:83 | ... + ... | | -| Conditions.cs:1:7:1:16 | call to constructor Object | Conditions.cs:1:7:1:16 | {...} | | -| Conditions.cs:1:7:1:16 | call to method | Conditions.cs:1:7:1:16 | call to constructor Object | | -| Conditions.cs:1:7:1:16 | enter Conditions | Conditions.cs:1:7:1:16 | this access | | -| Conditions.cs:1:7:1:16 | exit Conditions (normal) | Conditions.cs:1:7:1:16 | exit Conditions | | +| Conditions.cs:1:7:1:16 | After call to constructor Object | Conditions.cs:1:7:1:16 | {...} | | +| Conditions.cs:1:7:1:16 | After call to method | Conditions.cs:1:7:1:16 | Before call to constructor Object | | +| Conditions.cs:1:7:1:16 | Before call to constructor Object | Conditions.cs:1:7:1:16 | call to constructor Object | | +| Conditions.cs:1:7:1:16 | Before call to method | Conditions.cs:1:7:1:16 | this access | | +| Conditions.cs:1:7:1:16 | Entry | Conditions.cs:1:7:1:16 | Before call to method | | +| Conditions.cs:1:7:1:16 | Normal Exit | Conditions.cs:1:7:1:16 | Exit | | +| Conditions.cs:1:7:1:16 | call to constructor Object | Conditions.cs:1:7:1:16 | After call to constructor Object | | +| Conditions.cs:1:7:1:16 | call to method | Conditions.cs:1:7:1:16 | After call to method | | | Conditions.cs:1:7:1:16 | this access | Conditions.cs:1:7:1:16 | call to method | | -| Conditions.cs:1:7:1:16 | {...} | Conditions.cs:1:7:1:16 | exit Conditions (normal) | | -| Conditions.cs:3:10:3:19 | enter IncrOrDecr | Conditions.cs:4:5:9:5 | {...} | | -| Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | Conditions.cs:3:10:3:19 | exit IncrOrDecr | | +| Conditions.cs:1:7:1:16 | {...} | Conditions.cs:1:7:1:16 | Normal Exit | | +| Conditions.cs:3:10:3:19 | Entry | Conditions.cs:3:26:3:28 | inc | | +| Conditions.cs:3:10:3:19 | Normal Exit | Conditions.cs:3:10:3:19 | Exit | | +| Conditions.cs:3:26:3:28 | inc | Conditions.cs:3:39:3:39 | x | | +| Conditions.cs:3:39:3:39 | x | Conditions.cs:4:5:9:5 | {...} | | +| Conditions.cs:4:5:9:5 | After {...} | Conditions.cs:3:10:3:19 | Normal Exit | | | Conditions.cs:4:5:9:5 | {...} | Conditions.cs:5:9:6:16 | if (...) ... | | +| Conditions.cs:5:9:6:16 | After if (...) ... | Conditions.cs:7:9:8:16 | if (...) ... | | | Conditions.cs:5:9:6:16 | if (...) ... | Conditions.cs:5:13:5:15 | access to parameter inc | | -| Conditions.cs:5:13:5:15 | access to parameter inc | Conditions.cs:6:13:6:16 | ...; | true | -| Conditions.cs:5:13:5:15 | access to parameter inc | Conditions.cs:7:9:8:16 | if (...) ... | false | +| Conditions.cs:5:13:5:15 | After access to parameter inc [false] | Conditions.cs:5:9:6:16 | After if (...) ... | | +| Conditions.cs:5:13:5:15 | After access to parameter inc [true] | Conditions.cs:6:13:6:16 | ...; | | +| Conditions.cs:5:13:5:15 | access to parameter inc | Conditions.cs:5:13:5:15 | After access to parameter inc [false] | false | +| Conditions.cs:5:13:5:15 | access to parameter inc | Conditions.cs:5:13:5:15 | After access to parameter inc [true] | true | | Conditions.cs:6:13:6:13 | access to parameter x | Conditions.cs:6:13:6:15 | ...++ | | -| Conditions.cs:6:13:6:15 | ...++ | Conditions.cs:7:9:8:16 | if (...) ... | | -| Conditions.cs:6:13:6:16 | ...; | Conditions.cs:6:13:6:13 | access to parameter x | | -| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:7:14:7:16 | access to parameter inc | | -| Conditions.cs:7:13:7:16 | [false] !... | Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | false | -| Conditions.cs:7:13:7:16 | [true] !... | Conditions.cs:8:13:8:16 | ...; | true | -| Conditions.cs:7:14:7:16 | access to parameter inc | Conditions.cs:7:13:7:16 | [false] !... | true | -| Conditions.cs:7:14:7:16 | access to parameter inc | Conditions.cs:7:13:7:16 | [true] !... | false | +| Conditions.cs:6:13:6:15 | ...++ | Conditions.cs:6:13:6:15 | After ...++ | | +| Conditions.cs:6:13:6:15 | After ...++ | Conditions.cs:6:13:6:16 | After ...; | | +| Conditions.cs:6:13:6:15 | Before ...++ | Conditions.cs:6:13:6:13 | access to parameter x | | +| Conditions.cs:6:13:6:16 | ...; | Conditions.cs:6:13:6:15 | Before ...++ | | +| Conditions.cs:6:13:6:16 | After ...; | Conditions.cs:5:9:6:16 | After if (...) ... | | +| Conditions.cs:7:9:8:16 | After if (...) ... | Conditions.cs:4:5:9:5 | After {...} | | +| Conditions.cs:7:9:8:16 | if (...) ... | Conditions.cs:7:13:7:16 | !... | | +| Conditions.cs:7:13:7:16 | !... | Conditions.cs:7:14:7:16 | access to parameter inc | | +| Conditions.cs:7:13:7:16 | After !... [false] | Conditions.cs:7:9:8:16 | After if (...) ... | | +| Conditions.cs:7:13:7:16 | After !... [true] | Conditions.cs:8:13:8:16 | ...; | | +| Conditions.cs:7:14:7:16 | After access to parameter inc [false] | Conditions.cs:7:13:7:16 | After !... [true] | true | +| Conditions.cs:7:14:7:16 | After access to parameter inc [true] | Conditions.cs:7:13:7:16 | After !... [false] | false | +| Conditions.cs:7:14:7:16 | access to parameter inc | Conditions.cs:7:14:7:16 | After access to parameter inc [false] | false | +| Conditions.cs:7:14:7:16 | access to parameter inc | Conditions.cs:7:14:7:16 | After access to parameter inc [true] | true | | Conditions.cs:8:13:8:13 | access to parameter x | Conditions.cs:8:13:8:15 | ...-- | | -| Conditions.cs:8:13:8:15 | ...-- | Conditions.cs:3:10:3:19 | exit IncrOrDecr (normal) | | -| Conditions.cs:8:13:8:16 | ...; | Conditions.cs:8:13:8:13 | access to parameter x | | -| Conditions.cs:11:9:11:10 | enter M1 | Conditions.cs:12:5:20:5 | {...} | | -| Conditions.cs:11:9:11:10 | exit M1 (normal) | Conditions.cs:11:9:11:10 | exit M1 | | +| Conditions.cs:8:13:8:15 | ...-- | Conditions.cs:8:13:8:15 | After ...-- | | +| Conditions.cs:8:13:8:15 | After ...-- | Conditions.cs:8:13:8:16 | After ...; | | +| Conditions.cs:8:13:8:15 | Before ...-- | Conditions.cs:8:13:8:13 | access to parameter x | | +| Conditions.cs:8:13:8:16 | ...; | Conditions.cs:8:13:8:15 | Before ...-- | | +| Conditions.cs:8:13:8:16 | After ...; | Conditions.cs:7:9:8:16 | After if (...) ... | | +| Conditions.cs:11:9:11:10 | Entry | Conditions.cs:11:17:11:17 | b | | +| Conditions.cs:11:9:11:10 | Normal Exit | Conditions.cs:11:9:11:10 | Exit | | +| Conditions.cs:11:17:11:17 | b | Conditions.cs:12:5:20:5 | {...} | | | Conditions.cs:12:5:20:5 | {...} | Conditions.cs:13:9:13:18 | ... ...; | | -| Conditions.cs:13:9:13:18 | ... ...; | Conditions.cs:13:17:13:17 | 0 | | -| Conditions.cs:13:13:13:17 | Int32 x = ... | Conditions.cs:14:9:15:16 | if (...) ... | | +| Conditions.cs:13:9:13:18 | ... ...; | Conditions.cs:13:13:13:17 | Before Int32 x = ... | | +| Conditions.cs:13:9:13:18 | After ... ...; | Conditions.cs:14:9:15:16 | if (...) ... | | +| Conditions.cs:13:13:13:13 | access to local variable x | Conditions.cs:13:17:13:17 | 0 | | +| Conditions.cs:13:13:13:17 | After Int32 x = ... | Conditions.cs:13:9:13:18 | After ... ...; | | +| Conditions.cs:13:13:13:17 | Before Int32 x = ... | Conditions.cs:13:13:13:13 | access to local variable x | | +| Conditions.cs:13:13:13:17 | Int32 x = ... | Conditions.cs:13:13:13:17 | After Int32 x = ... | | | Conditions.cs:13:17:13:17 | 0 | Conditions.cs:13:13:13:17 | Int32 x = ... | | +| Conditions.cs:14:9:15:16 | After if (...) ... | Conditions.cs:16:9:18:20 | if (...) ... | | | Conditions.cs:14:9:15:16 | if (...) ... | Conditions.cs:14:13:14:13 | access to parameter b | | -| Conditions.cs:14:13:14:13 | access to parameter b | Conditions.cs:15:13:15:16 | ...; | true | -| Conditions.cs:14:13:14:13 | access to parameter b | Conditions.cs:16:9:18:20 | if (...) ... | false | +| Conditions.cs:14:13:14:13 | After access to parameter b [false] | Conditions.cs:14:9:15:16 | After if (...) ... | | +| Conditions.cs:14:13:14:13 | After access to parameter b [true] | Conditions.cs:15:13:15:16 | ...; | | +| Conditions.cs:14:13:14:13 | access to parameter b | Conditions.cs:14:13:14:13 | After access to parameter b [false] | false | +| Conditions.cs:14:13:14:13 | access to parameter b | Conditions.cs:14:13:14:13 | After access to parameter b [true] | true | | Conditions.cs:15:13:15:13 | access to local variable x | Conditions.cs:15:13:15:15 | ...++ | | -| Conditions.cs:15:13:15:15 | ...++ | Conditions.cs:16:9:18:20 | if (...) ... | | -| Conditions.cs:15:13:15:16 | ...; | Conditions.cs:15:13:15:13 | access to local variable x | | -| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:16:13:16:13 | access to local variable x | | +| Conditions.cs:15:13:15:15 | ...++ | Conditions.cs:15:13:15:15 | After ...++ | | +| Conditions.cs:15:13:15:15 | After ...++ | Conditions.cs:15:13:15:16 | After ...; | | +| Conditions.cs:15:13:15:15 | Before ...++ | Conditions.cs:15:13:15:13 | access to local variable x | | +| Conditions.cs:15:13:15:16 | ...; | Conditions.cs:15:13:15:15 | Before ...++ | | +| Conditions.cs:15:13:15:16 | After ...; | Conditions.cs:14:9:15:16 | After if (...) ... | | +| Conditions.cs:16:9:18:20 | After if (...) ... | Conditions.cs:19:9:19:17 | Before return ...; | | +| Conditions.cs:16:9:18:20 | if (...) ... | Conditions.cs:16:13:16:17 | Before ... > ... | | | Conditions.cs:16:13:16:13 | access to local variable x | Conditions.cs:16:17:16:17 | 0 | | -| Conditions.cs:16:13:16:17 | ... > ... | Conditions.cs:17:13:18:20 | if (...) ... | true | -| Conditions.cs:16:13:16:17 | ... > ... | Conditions.cs:19:16:19:16 | access to local variable x | false | +| Conditions.cs:16:13:16:17 | ... > ... | Conditions.cs:16:13:16:17 | After ... > ... [false] | false | +| Conditions.cs:16:13:16:17 | ... > ... | Conditions.cs:16:13:16:17 | After ... > ... [true] | true | +| Conditions.cs:16:13:16:17 | After ... > ... [false] | Conditions.cs:16:9:18:20 | After if (...) ... | | +| Conditions.cs:16:13:16:17 | After ... > ... [true] | Conditions.cs:17:13:18:20 | if (...) ... | | +| Conditions.cs:16:13:16:17 | Before ... > ... | Conditions.cs:16:13:16:13 | access to local variable x | | | Conditions.cs:16:17:16:17 | 0 | Conditions.cs:16:13:16:17 | ... > ... | | -| Conditions.cs:17:13:18:20 | if (...) ... | Conditions.cs:17:18:17:18 | access to parameter b | | -| Conditions.cs:17:17:17:18 | [false] !... | Conditions.cs:19:16:19:16 | access to local variable x | false | -| Conditions.cs:17:17:17:18 | [true] !... | Conditions.cs:18:17:18:20 | ...; | true | -| Conditions.cs:17:18:17:18 | access to parameter b | Conditions.cs:17:17:17:18 | [false] !... | true | -| Conditions.cs:17:18:17:18 | access to parameter b | Conditions.cs:17:17:17:18 | [true] !... | false | +| Conditions.cs:17:13:18:20 | After if (...) ... | Conditions.cs:16:9:18:20 | After if (...) ... | | +| Conditions.cs:17:13:18:20 | if (...) ... | Conditions.cs:17:17:17:18 | !... | | +| Conditions.cs:17:17:17:18 | !... | Conditions.cs:17:18:17:18 | access to parameter b | | +| Conditions.cs:17:17:17:18 | After !... [false] | Conditions.cs:17:13:18:20 | After if (...) ... | | +| Conditions.cs:17:17:17:18 | After !... [true] | Conditions.cs:18:17:18:20 | ...; | | +| Conditions.cs:17:18:17:18 | After access to parameter b [false] | Conditions.cs:17:17:17:18 | After !... [true] | true | +| Conditions.cs:17:18:17:18 | After access to parameter b [true] | Conditions.cs:17:17:17:18 | After !... [false] | false | +| Conditions.cs:17:18:17:18 | access to parameter b | Conditions.cs:17:18:17:18 | After access to parameter b [false] | false | +| Conditions.cs:17:18:17:18 | access to parameter b | Conditions.cs:17:18:17:18 | After access to parameter b [true] | true | | Conditions.cs:18:17:18:17 | access to local variable x | Conditions.cs:18:17:18:19 | ...-- | | -| Conditions.cs:18:17:18:19 | ...-- | Conditions.cs:19:16:19:16 | access to local variable x | | -| Conditions.cs:18:17:18:20 | ...; | Conditions.cs:18:17:18:17 | access to local variable x | | -| Conditions.cs:19:9:19:17 | return ...; | Conditions.cs:11:9:11:10 | exit M1 (normal) | return | +| Conditions.cs:18:17:18:19 | ...-- | Conditions.cs:18:17:18:19 | After ...-- | | +| Conditions.cs:18:17:18:19 | After ...-- | Conditions.cs:18:17:18:20 | After ...; | | +| Conditions.cs:18:17:18:19 | Before ...-- | Conditions.cs:18:17:18:17 | access to local variable x | | +| Conditions.cs:18:17:18:20 | ...; | Conditions.cs:18:17:18:19 | Before ...-- | | +| Conditions.cs:18:17:18:20 | After ...; | Conditions.cs:17:13:18:20 | After if (...) ... | | +| Conditions.cs:19:9:19:17 | Before return ...; | Conditions.cs:19:16:19:16 | access to local variable x | | +| Conditions.cs:19:9:19:17 | return ...; | Conditions.cs:11:9:11:10 | Normal Exit | return | | Conditions.cs:19:16:19:16 | access to local variable x | Conditions.cs:19:9:19:17 | return ...; | | -| Conditions.cs:22:9:22:10 | enter M2 | Conditions.cs:23:5:31:5 | {...} | | -| Conditions.cs:22:9:22:10 | exit M2 (normal) | Conditions.cs:22:9:22:10 | exit M2 | | +| Conditions.cs:22:9:22:10 | Entry | Conditions.cs:22:17:22:18 | b1 | | +| Conditions.cs:22:9:22:10 | Normal Exit | Conditions.cs:22:9:22:10 | Exit | | +| Conditions.cs:22:17:22:18 | b1 | Conditions.cs:22:26:22:27 | b2 | | +| Conditions.cs:22:26:22:27 | b2 | Conditions.cs:23:5:31:5 | {...} | | | Conditions.cs:23:5:31:5 | {...} | Conditions.cs:24:9:24:18 | ... ...; | | -| Conditions.cs:24:9:24:18 | ... ...; | Conditions.cs:24:17:24:17 | 0 | | -| Conditions.cs:24:13:24:17 | Int32 x = ... | Conditions.cs:25:9:27:20 | if (...) ... | | +| Conditions.cs:24:9:24:18 | ... ...; | Conditions.cs:24:13:24:17 | Before Int32 x = ... | | +| Conditions.cs:24:9:24:18 | After ... ...; | Conditions.cs:25:9:27:20 | if (...) ... | | +| Conditions.cs:24:13:24:13 | access to local variable x | Conditions.cs:24:17:24:17 | 0 | | +| Conditions.cs:24:13:24:17 | After Int32 x = ... | Conditions.cs:24:9:24:18 | After ... ...; | | +| Conditions.cs:24:13:24:17 | Before Int32 x = ... | Conditions.cs:24:13:24:13 | access to local variable x | | +| Conditions.cs:24:13:24:17 | Int32 x = ... | Conditions.cs:24:13:24:17 | After Int32 x = ... | | | Conditions.cs:24:17:24:17 | 0 | Conditions.cs:24:13:24:17 | Int32 x = ... | | +| Conditions.cs:25:9:27:20 | After if (...) ... | Conditions.cs:28:9:29:16 | if (...) ... | | | Conditions.cs:25:9:27:20 | if (...) ... | Conditions.cs:25:13:25:14 | access to parameter b1 | | -| Conditions.cs:25:13:25:14 | access to parameter b1 | Conditions.cs:26:13:27:20 | if (...) ... | true | -| Conditions.cs:25:13:25:14 | access to parameter b1 | Conditions.cs:28:9:29:16 | if (...) ... | false | +| Conditions.cs:25:13:25:14 | After access to parameter b1 [false] | Conditions.cs:25:9:27:20 | After if (...) ... | | +| Conditions.cs:25:13:25:14 | After access to parameter b1 [true] | Conditions.cs:26:13:27:20 | if (...) ... | | +| Conditions.cs:25:13:25:14 | access to parameter b1 | Conditions.cs:25:13:25:14 | After access to parameter b1 [false] | false | +| Conditions.cs:25:13:25:14 | access to parameter b1 | Conditions.cs:25:13:25:14 | After access to parameter b1 [true] | true | +| Conditions.cs:26:13:27:20 | After if (...) ... | Conditions.cs:25:9:27:20 | After if (...) ... | | | Conditions.cs:26:13:27:20 | if (...) ... | Conditions.cs:26:17:26:18 | access to parameter b2 | | -| Conditions.cs:26:17:26:18 | access to parameter b2 | Conditions.cs:27:17:27:20 | ...; | true | -| Conditions.cs:26:17:26:18 | access to parameter b2 | Conditions.cs:28:9:29:16 | if (...) ... | false | +| Conditions.cs:26:17:26:18 | After access to parameter b2 [false] | Conditions.cs:26:13:27:20 | After if (...) ... | | +| Conditions.cs:26:17:26:18 | After access to parameter b2 [true] | Conditions.cs:27:17:27:20 | ...; | | +| Conditions.cs:26:17:26:18 | access to parameter b2 | Conditions.cs:26:17:26:18 | After access to parameter b2 [false] | false | +| Conditions.cs:26:17:26:18 | access to parameter b2 | Conditions.cs:26:17:26:18 | After access to parameter b2 [true] | true | | Conditions.cs:27:17:27:17 | access to local variable x | Conditions.cs:27:17:27:19 | ...++ | | -| Conditions.cs:27:17:27:19 | ...++ | Conditions.cs:28:9:29:16 | if (...) ... | | -| Conditions.cs:27:17:27:20 | ...; | Conditions.cs:27:17:27:17 | access to local variable x | | +| Conditions.cs:27:17:27:19 | ...++ | Conditions.cs:27:17:27:19 | After ...++ | | +| Conditions.cs:27:17:27:19 | After ...++ | Conditions.cs:27:17:27:20 | After ...; | | +| Conditions.cs:27:17:27:19 | Before ...++ | Conditions.cs:27:17:27:17 | access to local variable x | | +| Conditions.cs:27:17:27:20 | ...; | Conditions.cs:27:17:27:19 | Before ...++ | | +| Conditions.cs:27:17:27:20 | After ...; | Conditions.cs:26:13:27:20 | After if (...) ... | | +| Conditions.cs:28:9:29:16 | After if (...) ... | Conditions.cs:30:9:30:17 | Before return ...; | | | Conditions.cs:28:9:29:16 | if (...) ... | Conditions.cs:28:13:28:14 | access to parameter b2 | | -| Conditions.cs:28:13:28:14 | access to parameter b2 | Conditions.cs:29:13:29:16 | ...; | true | -| Conditions.cs:28:13:28:14 | access to parameter b2 | Conditions.cs:30:16:30:16 | access to local variable x | false | +| Conditions.cs:28:13:28:14 | After access to parameter b2 [false] | Conditions.cs:28:9:29:16 | After if (...) ... | | +| Conditions.cs:28:13:28:14 | After access to parameter b2 [true] | Conditions.cs:29:13:29:16 | ...; | | +| Conditions.cs:28:13:28:14 | access to parameter b2 | Conditions.cs:28:13:28:14 | After access to parameter b2 [false] | false | +| Conditions.cs:28:13:28:14 | access to parameter b2 | Conditions.cs:28:13:28:14 | After access to parameter b2 [true] | true | | Conditions.cs:29:13:29:13 | access to local variable x | Conditions.cs:29:13:29:15 | ...++ | | -| Conditions.cs:29:13:29:15 | ...++ | Conditions.cs:30:16:30:16 | access to local variable x | | -| Conditions.cs:29:13:29:16 | ...; | Conditions.cs:29:13:29:13 | access to local variable x | | -| Conditions.cs:30:9:30:17 | return ...; | Conditions.cs:22:9:22:10 | exit M2 (normal) | return | +| Conditions.cs:29:13:29:15 | ...++ | Conditions.cs:29:13:29:15 | After ...++ | | +| Conditions.cs:29:13:29:15 | After ...++ | Conditions.cs:29:13:29:16 | After ...; | | +| Conditions.cs:29:13:29:15 | Before ...++ | Conditions.cs:29:13:29:13 | access to local variable x | | +| Conditions.cs:29:13:29:16 | ...; | Conditions.cs:29:13:29:15 | Before ...++ | | +| Conditions.cs:29:13:29:16 | After ...; | Conditions.cs:28:9:29:16 | After if (...) ... | | +| Conditions.cs:30:9:30:17 | Before return ...; | Conditions.cs:30:16:30:16 | access to local variable x | | +| Conditions.cs:30:9:30:17 | return ...; | Conditions.cs:22:9:22:10 | Normal Exit | return | | Conditions.cs:30:16:30:16 | access to local variable x | Conditions.cs:30:9:30:17 | return ...; | | -| Conditions.cs:33:9:33:10 | enter M3 | Conditions.cs:34:5:44:5 | {...} | | -| Conditions.cs:33:9:33:10 | exit M3 (normal) | Conditions.cs:33:9:33:10 | exit M3 | | +| Conditions.cs:33:9:33:10 | Entry | Conditions.cs:33:17:33:18 | b1 | | +| Conditions.cs:33:9:33:10 | Normal Exit | Conditions.cs:33:9:33:10 | Exit | | +| Conditions.cs:33:17:33:18 | b1 | Conditions.cs:34:5:44:5 | {...} | | | Conditions.cs:34:5:44:5 | {...} | Conditions.cs:35:9:35:18 | ... ...; | | -| Conditions.cs:35:9:35:18 | ... ...; | Conditions.cs:35:17:35:17 | 0 | | -| Conditions.cs:35:13:35:17 | Int32 x = ... | Conditions.cs:36:9:36:23 | ... ...; | | +| Conditions.cs:35:9:35:18 | ... ...; | Conditions.cs:35:13:35:17 | Before Int32 x = ... | | +| Conditions.cs:35:9:35:18 | After ... ...; | Conditions.cs:36:9:36:23 | ... ...; | | +| Conditions.cs:35:13:35:13 | access to local variable x | Conditions.cs:35:17:35:17 | 0 | | +| Conditions.cs:35:13:35:17 | After Int32 x = ... | Conditions.cs:35:9:35:18 | After ... ...; | | +| Conditions.cs:35:13:35:17 | Before Int32 x = ... | Conditions.cs:35:13:35:13 | access to local variable x | | +| Conditions.cs:35:13:35:17 | Int32 x = ... | Conditions.cs:35:13:35:17 | After Int32 x = ... | | | Conditions.cs:35:17:35:17 | 0 | Conditions.cs:35:13:35:17 | Int32 x = ... | | -| Conditions.cs:36:9:36:23 | ... ...; | Conditions.cs:36:18:36:22 | false | | -| Conditions.cs:36:13:36:22 | Boolean b2 = ... | Conditions.cs:37:9:38:20 | if (...) ... | | +| Conditions.cs:36:9:36:23 | ... ...; | Conditions.cs:36:13:36:22 | Before Boolean b2 = ... | | +| Conditions.cs:36:9:36:23 | After ... ...; | Conditions.cs:37:9:38:20 | if (...) ... | | +| Conditions.cs:36:13:36:14 | access to local variable b2 | Conditions.cs:36:18:36:22 | false | | +| Conditions.cs:36:13:36:22 | After Boolean b2 = ... | Conditions.cs:36:9:36:23 | After ... ...; | | +| Conditions.cs:36:13:36:22 | Before Boolean b2 = ... | Conditions.cs:36:13:36:14 | access to local variable b2 | | +| Conditions.cs:36:13:36:22 | Boolean b2 = ... | Conditions.cs:36:13:36:22 | After Boolean b2 = ... | | | Conditions.cs:36:18:36:22 | false | Conditions.cs:36:13:36:22 | Boolean b2 = ... | | +| Conditions.cs:37:9:38:20 | After if (...) ... | Conditions.cs:39:9:40:16 | if (...) ... | | | Conditions.cs:37:9:38:20 | if (...) ... | Conditions.cs:37:13:37:14 | access to parameter b1 | | -| Conditions.cs:37:13:37:14 | access to parameter b1 | Conditions.cs:38:13:38:20 | ...; | true | -| Conditions.cs:37:13:37:14 | access to parameter b1 | Conditions.cs:39:9:40:16 | if (...) ... | false | -| Conditions.cs:38:13:38:19 | ... = ... | Conditions.cs:39:9:40:16 | if (...) ... | | -| Conditions.cs:38:13:38:20 | ...; | Conditions.cs:38:18:38:19 | access to parameter b1 | | +| Conditions.cs:37:13:37:14 | After access to parameter b1 [false] | Conditions.cs:37:9:38:20 | After if (...) ... | | +| Conditions.cs:37:13:37:14 | After access to parameter b1 [true] | Conditions.cs:38:13:38:20 | ...; | | +| Conditions.cs:37:13:37:14 | access to parameter b1 | Conditions.cs:37:13:37:14 | After access to parameter b1 [false] | false | +| Conditions.cs:37:13:37:14 | access to parameter b1 | Conditions.cs:37:13:37:14 | After access to parameter b1 [true] | true | +| Conditions.cs:38:13:38:14 | access to local variable b2 | Conditions.cs:38:18:38:19 | access to parameter b1 | | +| Conditions.cs:38:13:38:19 | ... = ... | Conditions.cs:38:13:38:19 | After ... = ... | | +| Conditions.cs:38:13:38:19 | After ... = ... | Conditions.cs:38:13:38:20 | After ...; | | +| Conditions.cs:38:13:38:19 | Before ... = ... | Conditions.cs:38:13:38:14 | access to local variable b2 | | +| Conditions.cs:38:13:38:20 | ...; | Conditions.cs:38:13:38:19 | Before ... = ... | | +| Conditions.cs:38:13:38:20 | After ...; | Conditions.cs:37:9:38:20 | After if (...) ... | | | Conditions.cs:38:18:38:19 | access to parameter b1 | Conditions.cs:38:13:38:19 | ... = ... | | +| Conditions.cs:39:9:40:16 | After if (...) ... | Conditions.cs:41:9:42:16 | if (...) ... | | | Conditions.cs:39:9:40:16 | if (...) ... | Conditions.cs:39:13:39:14 | access to local variable b2 | | -| Conditions.cs:39:13:39:14 | access to local variable b2 | Conditions.cs:40:13:40:16 | ...; | true | -| Conditions.cs:39:13:39:14 | access to local variable b2 | Conditions.cs:41:9:42:16 | if (...) ... | false | +| Conditions.cs:39:13:39:14 | After access to local variable b2 [false] | Conditions.cs:39:9:40:16 | After if (...) ... | | +| Conditions.cs:39:13:39:14 | After access to local variable b2 [true] | Conditions.cs:40:13:40:16 | ...; | | +| Conditions.cs:39:13:39:14 | access to local variable b2 | Conditions.cs:39:13:39:14 | After access to local variable b2 [false] | false | +| Conditions.cs:39:13:39:14 | access to local variable b2 | Conditions.cs:39:13:39:14 | After access to local variable b2 [true] | true | | Conditions.cs:40:13:40:13 | access to local variable x | Conditions.cs:40:13:40:15 | ...++ | | -| Conditions.cs:40:13:40:15 | ...++ | Conditions.cs:41:9:42:16 | if (...) ... | | -| Conditions.cs:40:13:40:16 | ...; | Conditions.cs:40:13:40:13 | access to local variable x | | +| Conditions.cs:40:13:40:15 | ...++ | Conditions.cs:40:13:40:15 | After ...++ | | +| Conditions.cs:40:13:40:15 | After ...++ | Conditions.cs:40:13:40:16 | After ...; | | +| Conditions.cs:40:13:40:15 | Before ...++ | Conditions.cs:40:13:40:13 | access to local variable x | | +| Conditions.cs:40:13:40:16 | ...; | Conditions.cs:40:13:40:15 | Before ...++ | | +| Conditions.cs:40:13:40:16 | After ...; | Conditions.cs:39:9:40:16 | After if (...) ... | | +| Conditions.cs:41:9:42:16 | After if (...) ... | Conditions.cs:43:9:43:17 | Before return ...; | | | Conditions.cs:41:9:42:16 | if (...) ... | Conditions.cs:41:13:41:14 | access to local variable b2 | | -| Conditions.cs:41:13:41:14 | access to local variable b2 | Conditions.cs:42:13:42:16 | ...; | true | -| Conditions.cs:41:13:41:14 | access to local variable b2 | Conditions.cs:43:16:43:16 | access to local variable x | false | +| Conditions.cs:41:13:41:14 | After access to local variable b2 [false] | Conditions.cs:41:9:42:16 | After if (...) ... | | +| Conditions.cs:41:13:41:14 | After access to local variable b2 [true] | Conditions.cs:42:13:42:16 | ...; | | +| Conditions.cs:41:13:41:14 | access to local variable b2 | Conditions.cs:41:13:41:14 | After access to local variable b2 [false] | false | +| Conditions.cs:41:13:41:14 | access to local variable b2 | Conditions.cs:41:13:41:14 | After access to local variable b2 [true] | true | | Conditions.cs:42:13:42:13 | access to local variable x | Conditions.cs:42:13:42:15 | ...++ | | -| Conditions.cs:42:13:42:15 | ...++ | Conditions.cs:43:16:43:16 | access to local variable x | | -| Conditions.cs:42:13:42:16 | ...; | Conditions.cs:42:13:42:13 | access to local variable x | | -| Conditions.cs:43:9:43:17 | return ...; | Conditions.cs:33:9:33:10 | exit M3 (normal) | return | +| Conditions.cs:42:13:42:15 | ...++ | Conditions.cs:42:13:42:15 | After ...++ | | +| Conditions.cs:42:13:42:15 | After ...++ | Conditions.cs:42:13:42:16 | After ...; | | +| Conditions.cs:42:13:42:15 | Before ...++ | Conditions.cs:42:13:42:13 | access to local variable x | | +| Conditions.cs:42:13:42:16 | ...; | Conditions.cs:42:13:42:15 | Before ...++ | | +| Conditions.cs:42:13:42:16 | After ...; | Conditions.cs:41:9:42:16 | After if (...) ... | | +| Conditions.cs:43:9:43:17 | Before return ...; | Conditions.cs:43:16:43:16 | access to local variable x | | +| Conditions.cs:43:9:43:17 | return ...; | Conditions.cs:33:9:33:10 | Normal Exit | return | | Conditions.cs:43:16:43:16 | access to local variable x | Conditions.cs:43:9:43:17 | return ...; | | -| Conditions.cs:46:9:46:10 | enter M4 | Conditions.cs:47:5:55:5 | {...} | | -| Conditions.cs:46:9:46:10 | exit M4 (normal) | Conditions.cs:46:9:46:10 | exit M4 | | +| Conditions.cs:46:9:46:10 | Entry | Conditions.cs:46:17:46:17 | b | | +| Conditions.cs:46:9:46:10 | Normal Exit | Conditions.cs:46:9:46:10 | Exit | | +| Conditions.cs:46:17:46:17 | b | Conditions.cs:46:24:46:24 | x | | +| Conditions.cs:46:24:46:24 | x | Conditions.cs:47:5:55:5 | {...} | | | Conditions.cs:47:5:55:5 | {...} | Conditions.cs:48:9:48:18 | ... ...; | | -| Conditions.cs:48:9:48:18 | ... ...; | Conditions.cs:48:17:48:17 | 0 | | -| Conditions.cs:48:13:48:17 | Int32 y = ... | Conditions.cs:49:9:53:9 | while (...) ... | | +| Conditions.cs:48:9:48:18 | ... ...; | Conditions.cs:48:13:48:17 | Before Int32 y = ... | | +| Conditions.cs:48:9:48:18 | After ... ...; | Conditions.cs:49:9:53:9 | while (...) ... | | +| Conditions.cs:48:13:48:13 | access to local variable y | Conditions.cs:48:17:48:17 | 0 | | +| Conditions.cs:48:13:48:17 | After Int32 y = ... | Conditions.cs:48:9:48:18 | After ... ...; | | +| Conditions.cs:48:13:48:17 | Before Int32 y = ... | Conditions.cs:48:13:48:13 | access to local variable y | | +| Conditions.cs:48:13:48:17 | Int32 y = ... | Conditions.cs:48:13:48:17 | After Int32 y = ... | | | Conditions.cs:48:17:48:17 | 0 | Conditions.cs:48:13:48:17 | Int32 y = ... | | -| Conditions.cs:49:9:53:9 | while (...) ... | Conditions.cs:49:16:49:16 | access to parameter x | | +| Conditions.cs:49:9:53:9 | After while (...) ... | Conditions.cs:54:9:54:17 | Before return ...; | | +| Conditions.cs:49:9:53:9 | [LoopHeader] while (...) ... | Conditions.cs:49:16:49:22 | Before ... > ... | | +| Conditions.cs:49:9:53:9 | while (...) ... | Conditions.cs:49:9:53:9 | [LoopHeader] while (...) ... | | | Conditions.cs:49:16:49:16 | access to parameter x | Conditions.cs:49:16:49:18 | ...-- | | -| Conditions.cs:49:16:49:18 | ...-- | Conditions.cs:49:22:49:22 | 0 | | -| Conditions.cs:49:16:49:22 | ... > ... | Conditions.cs:50:9:53:9 | {...} | true | -| Conditions.cs:49:16:49:22 | ... > ... | Conditions.cs:54:16:54:16 | access to local variable y | false | +| Conditions.cs:49:16:49:18 | ...-- | Conditions.cs:49:16:49:18 | After ...-- | | +| Conditions.cs:49:16:49:18 | After ...-- | Conditions.cs:49:22:49:22 | 0 | | +| Conditions.cs:49:16:49:18 | Before ...-- | Conditions.cs:49:16:49:16 | access to parameter x | | +| Conditions.cs:49:16:49:22 | ... > ... | Conditions.cs:49:16:49:22 | After ... > ... [false] | false | +| Conditions.cs:49:16:49:22 | ... > ... | Conditions.cs:49:16:49:22 | After ... > ... [true] | true | +| Conditions.cs:49:16:49:22 | After ... > ... [false] | Conditions.cs:49:9:53:9 | After while (...) ... | | +| Conditions.cs:49:16:49:22 | After ... > ... [true] | Conditions.cs:50:9:53:9 | {...} | | +| Conditions.cs:49:16:49:22 | Before ... > ... | Conditions.cs:49:16:49:18 | Before ...-- | | | Conditions.cs:49:22:49:22 | 0 | Conditions.cs:49:16:49:22 | ... > ... | | +| Conditions.cs:50:9:53:9 | After {...} | Conditions.cs:49:9:53:9 | [LoopHeader] while (...) ... | | | Conditions.cs:50:9:53:9 | {...} | Conditions.cs:51:13:52:20 | if (...) ... | | +| Conditions.cs:51:13:52:20 | After if (...) ... | Conditions.cs:50:9:53:9 | After {...} | | | Conditions.cs:51:13:52:20 | if (...) ... | Conditions.cs:51:17:51:17 | access to parameter b | | -| Conditions.cs:51:17:51:17 | access to parameter b | Conditions.cs:49:16:49:16 | access to parameter x | false | -| Conditions.cs:51:17:51:17 | access to parameter b | Conditions.cs:52:17:52:20 | ...; | true | +| Conditions.cs:51:17:51:17 | After access to parameter b [false] | Conditions.cs:51:13:52:20 | After if (...) ... | | +| Conditions.cs:51:17:51:17 | After access to parameter b [true] | Conditions.cs:52:17:52:20 | ...; | | +| Conditions.cs:51:17:51:17 | access to parameter b | Conditions.cs:51:17:51:17 | After access to parameter b [false] | false | +| Conditions.cs:51:17:51:17 | access to parameter b | Conditions.cs:51:17:51:17 | After access to parameter b [true] | true | | Conditions.cs:52:17:52:17 | access to local variable y | Conditions.cs:52:17:52:19 | ...++ | | -| Conditions.cs:52:17:52:19 | ...++ | Conditions.cs:49:16:49:16 | access to parameter x | | -| Conditions.cs:52:17:52:20 | ...; | Conditions.cs:52:17:52:17 | access to local variable y | | -| Conditions.cs:54:9:54:17 | return ...; | Conditions.cs:46:9:46:10 | exit M4 (normal) | return | +| Conditions.cs:52:17:52:19 | ...++ | Conditions.cs:52:17:52:19 | After ...++ | | +| Conditions.cs:52:17:52:19 | After ...++ | Conditions.cs:52:17:52:20 | After ...; | | +| Conditions.cs:52:17:52:19 | Before ...++ | Conditions.cs:52:17:52:17 | access to local variable y | | +| Conditions.cs:52:17:52:20 | ...; | Conditions.cs:52:17:52:19 | Before ...++ | | +| Conditions.cs:52:17:52:20 | After ...; | Conditions.cs:51:13:52:20 | After if (...) ... | | +| Conditions.cs:54:9:54:17 | Before return ...; | Conditions.cs:54:16:54:16 | access to local variable y | | +| Conditions.cs:54:9:54:17 | return ...; | Conditions.cs:46:9:46:10 | Normal Exit | return | | Conditions.cs:54:16:54:16 | access to local variable y | Conditions.cs:54:9:54:17 | return ...; | | -| Conditions.cs:57:9:57:10 | enter M5 | Conditions.cs:58:5:68:5 | {...} | | -| Conditions.cs:57:9:57:10 | exit M5 (normal) | Conditions.cs:57:9:57:10 | exit M5 | | +| Conditions.cs:57:9:57:10 | Entry | Conditions.cs:57:17:57:17 | b | | +| Conditions.cs:57:9:57:10 | Normal Exit | Conditions.cs:57:9:57:10 | Exit | | +| Conditions.cs:57:17:57:17 | b | Conditions.cs:57:24:57:24 | x | | +| Conditions.cs:57:24:57:24 | x | Conditions.cs:58:5:68:5 | {...} | | | Conditions.cs:58:5:68:5 | {...} | Conditions.cs:59:9:59:18 | ... ...; | | -| Conditions.cs:59:9:59:18 | ... ...; | Conditions.cs:59:17:59:17 | 0 | | -| Conditions.cs:59:13:59:17 | Int32 y = ... | Conditions.cs:60:9:64:9 | while (...) ... | | +| Conditions.cs:59:9:59:18 | ... ...; | Conditions.cs:59:13:59:17 | Before Int32 y = ... | | +| Conditions.cs:59:9:59:18 | After ... ...; | Conditions.cs:60:9:64:9 | while (...) ... | | +| Conditions.cs:59:13:59:13 | access to local variable y | Conditions.cs:59:17:59:17 | 0 | | +| Conditions.cs:59:13:59:17 | After Int32 y = ... | Conditions.cs:59:9:59:18 | After ... ...; | | +| Conditions.cs:59:13:59:17 | Before Int32 y = ... | Conditions.cs:59:13:59:13 | access to local variable y | | +| Conditions.cs:59:13:59:17 | Int32 y = ... | Conditions.cs:59:13:59:17 | After Int32 y = ... | | | Conditions.cs:59:17:59:17 | 0 | Conditions.cs:59:13:59:17 | Int32 y = ... | | -| Conditions.cs:60:9:64:9 | while (...) ... | Conditions.cs:60:16:60:16 | access to parameter x | | +| Conditions.cs:60:9:64:9 | After while (...) ... | Conditions.cs:65:9:66:16 | if (...) ... | | +| Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | Conditions.cs:60:16:60:22 | Before ... > ... | | +| Conditions.cs:60:9:64:9 | while (...) ... | Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | | | Conditions.cs:60:16:60:16 | access to parameter x | Conditions.cs:60:16:60:18 | ...-- | | -| Conditions.cs:60:16:60:18 | ...-- | Conditions.cs:60:22:60:22 | 0 | | -| Conditions.cs:60:16:60:22 | ... > ... | Conditions.cs:61:9:64:9 | {...} | true | -| Conditions.cs:60:16:60:22 | ... > ... | Conditions.cs:65:9:66:16 | if (...) ... | false | +| Conditions.cs:60:16:60:18 | ...-- | Conditions.cs:60:16:60:18 | After ...-- | | +| Conditions.cs:60:16:60:18 | After ...-- | Conditions.cs:60:22:60:22 | 0 | | +| Conditions.cs:60:16:60:18 | Before ...-- | Conditions.cs:60:16:60:16 | access to parameter x | | +| Conditions.cs:60:16:60:22 | ... > ... | Conditions.cs:60:16:60:22 | After ... > ... [false] | false | +| Conditions.cs:60:16:60:22 | ... > ... | Conditions.cs:60:16:60:22 | After ... > ... [true] | true | +| Conditions.cs:60:16:60:22 | After ... > ... [false] | Conditions.cs:60:9:64:9 | After while (...) ... | | +| Conditions.cs:60:16:60:22 | After ... > ... [true] | Conditions.cs:61:9:64:9 | {...} | | +| Conditions.cs:60:16:60:22 | Before ... > ... | Conditions.cs:60:16:60:18 | Before ...-- | | | Conditions.cs:60:22:60:22 | 0 | Conditions.cs:60:16:60:22 | ... > ... | | +| Conditions.cs:61:9:64:9 | After {...} | Conditions.cs:60:9:64:9 | [LoopHeader] while (...) ... | | | Conditions.cs:61:9:64:9 | {...} | Conditions.cs:62:13:63:20 | if (...) ... | | +| Conditions.cs:62:13:63:20 | After if (...) ... | Conditions.cs:61:9:64:9 | After {...} | | | Conditions.cs:62:13:63:20 | if (...) ... | Conditions.cs:62:17:62:17 | access to parameter b | | -| Conditions.cs:62:17:62:17 | access to parameter b | Conditions.cs:60:16:60:16 | access to parameter x | false | -| Conditions.cs:62:17:62:17 | access to parameter b | Conditions.cs:63:17:63:20 | ...; | true | +| Conditions.cs:62:17:62:17 | After access to parameter b [false] | Conditions.cs:62:13:63:20 | After if (...) ... | | +| Conditions.cs:62:17:62:17 | After access to parameter b [true] | Conditions.cs:63:17:63:20 | ...; | | +| Conditions.cs:62:17:62:17 | access to parameter b | Conditions.cs:62:17:62:17 | After access to parameter b [false] | false | +| Conditions.cs:62:17:62:17 | access to parameter b | Conditions.cs:62:17:62:17 | After access to parameter b [true] | true | | Conditions.cs:63:17:63:17 | access to local variable y | Conditions.cs:63:17:63:19 | ...++ | | -| Conditions.cs:63:17:63:19 | ...++ | Conditions.cs:60:16:60:16 | access to parameter x | | -| Conditions.cs:63:17:63:20 | ...; | Conditions.cs:63:17:63:17 | access to local variable y | | +| Conditions.cs:63:17:63:19 | ...++ | Conditions.cs:63:17:63:19 | After ...++ | | +| Conditions.cs:63:17:63:19 | After ...++ | Conditions.cs:63:17:63:20 | After ...; | | +| Conditions.cs:63:17:63:19 | Before ...++ | Conditions.cs:63:17:63:17 | access to local variable y | | +| Conditions.cs:63:17:63:20 | ...; | Conditions.cs:63:17:63:19 | Before ...++ | | +| Conditions.cs:63:17:63:20 | After ...; | Conditions.cs:62:13:63:20 | After if (...) ... | | +| Conditions.cs:65:9:66:16 | After if (...) ... | Conditions.cs:67:9:67:17 | Before return ...; | | | Conditions.cs:65:9:66:16 | if (...) ... | Conditions.cs:65:13:65:13 | access to parameter b | | -| Conditions.cs:65:13:65:13 | access to parameter b | Conditions.cs:66:13:66:16 | ...; | true | -| Conditions.cs:65:13:65:13 | access to parameter b | Conditions.cs:67:16:67:16 | access to local variable y | false | +| Conditions.cs:65:13:65:13 | After access to parameter b [false] | Conditions.cs:65:9:66:16 | After if (...) ... | | +| Conditions.cs:65:13:65:13 | After access to parameter b [true] | Conditions.cs:66:13:66:16 | ...; | | +| Conditions.cs:65:13:65:13 | access to parameter b | Conditions.cs:65:13:65:13 | After access to parameter b [false] | false | +| Conditions.cs:65:13:65:13 | access to parameter b | Conditions.cs:65:13:65:13 | After access to parameter b [true] | true | | Conditions.cs:66:13:66:13 | access to local variable y | Conditions.cs:66:13:66:15 | ...++ | | -| Conditions.cs:66:13:66:15 | ...++ | Conditions.cs:67:16:67:16 | access to local variable y | | -| Conditions.cs:66:13:66:16 | ...; | Conditions.cs:66:13:66:13 | access to local variable y | | -| Conditions.cs:67:9:67:17 | return ...; | Conditions.cs:57:9:57:10 | exit M5 (normal) | return | +| Conditions.cs:66:13:66:15 | ...++ | Conditions.cs:66:13:66:15 | After ...++ | | +| Conditions.cs:66:13:66:15 | After ...++ | Conditions.cs:66:13:66:16 | After ...; | | +| Conditions.cs:66:13:66:15 | Before ...++ | Conditions.cs:66:13:66:13 | access to local variable y | | +| Conditions.cs:66:13:66:16 | ...; | Conditions.cs:66:13:66:15 | Before ...++ | | +| Conditions.cs:66:13:66:16 | After ...; | Conditions.cs:65:9:66:16 | After if (...) ... | | +| Conditions.cs:67:9:67:17 | Before return ...; | Conditions.cs:67:16:67:16 | access to local variable y | | +| Conditions.cs:67:9:67:17 | return ...; | Conditions.cs:57:9:57:10 | Normal Exit | return | | Conditions.cs:67:16:67:16 | access to local variable y | Conditions.cs:67:9:67:17 | return ...; | | -| Conditions.cs:70:9:70:10 | enter M6 | Conditions.cs:71:5:84:5 | {...} | | -| Conditions.cs:70:9:70:10 | exit M6 (normal) | Conditions.cs:70:9:70:10 | exit M6 | | +| Conditions.cs:70:9:70:10 | Entry | Conditions.cs:70:21:70:22 | ss | | +| Conditions.cs:70:9:70:10 | Normal Exit | Conditions.cs:70:9:70:10 | Exit | | +| Conditions.cs:70:21:70:22 | ss | Conditions.cs:71:5:84:5 | {...} | | | Conditions.cs:71:5:84:5 | {...} | Conditions.cs:72:9:72:30 | ... ...; | | -| Conditions.cs:72:9:72:30 | ... ...; | Conditions.cs:72:17:72:18 | access to parameter ss | | -| Conditions.cs:72:13:72:29 | Boolean b = ... | Conditions.cs:73:9:73:18 | ... ...; | | +| Conditions.cs:72:9:72:30 | ... ...; | Conditions.cs:72:13:72:29 | Before Boolean b = ... | | +| Conditions.cs:72:9:72:30 | After ... ...; | Conditions.cs:73:9:73:18 | ... ...; | | +| Conditions.cs:72:13:72:13 | access to local variable b | Conditions.cs:72:17:72:29 | Before ... > ... | | +| Conditions.cs:72:13:72:29 | After Boolean b = ... | Conditions.cs:72:9:72:30 | After ... ...; | | +| Conditions.cs:72:13:72:29 | Before Boolean b = ... | Conditions.cs:72:13:72:13 | access to local variable b | | +| Conditions.cs:72:13:72:29 | Boolean b = ... | Conditions.cs:72:13:72:29 | After Boolean b = ... | | | Conditions.cs:72:17:72:18 | access to parameter ss | Conditions.cs:72:17:72:25 | access to property Length | | -| Conditions.cs:72:17:72:25 | access to property Length | Conditions.cs:72:29:72:29 | 0 | | -| Conditions.cs:72:17:72:29 | ... > ... | Conditions.cs:72:13:72:29 | Boolean b = ... | | +| Conditions.cs:72:17:72:25 | After access to property Length | Conditions.cs:72:29:72:29 | 0 | | +| Conditions.cs:72:17:72:25 | Before access to property Length | Conditions.cs:72:17:72:18 | access to parameter ss | | +| Conditions.cs:72:17:72:25 | access to property Length | Conditions.cs:72:17:72:25 | After access to property Length | | +| Conditions.cs:72:17:72:29 | ... > ... | Conditions.cs:72:17:72:29 | After ... > ... | | +| Conditions.cs:72:17:72:29 | After ... > ... | Conditions.cs:72:13:72:29 | Boolean b = ... | | +| Conditions.cs:72:17:72:29 | Before ... > ... | Conditions.cs:72:17:72:25 | Before access to property Length | | | Conditions.cs:72:29:72:29 | 0 | Conditions.cs:72:17:72:29 | ... > ... | | -| Conditions.cs:73:9:73:18 | ... ...; | Conditions.cs:73:17:73:17 | 0 | | -| Conditions.cs:73:13:73:17 | Int32 x = ... | Conditions.cs:74:27:74:28 | access to parameter ss | | +| Conditions.cs:73:9:73:18 | ... ...; | Conditions.cs:73:13:73:17 | Before Int32 x = ... | | +| Conditions.cs:73:9:73:18 | After ... ...; | Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | | +| Conditions.cs:73:13:73:13 | access to local variable x | Conditions.cs:73:17:73:17 | 0 | | +| Conditions.cs:73:13:73:17 | After Int32 x = ... | Conditions.cs:73:9:73:18 | After ... ...; | | +| Conditions.cs:73:13:73:17 | Before Int32 x = ... | Conditions.cs:73:13:73:13 | access to local variable x | | +| Conditions.cs:73:13:73:17 | Int32 x = ... | Conditions.cs:73:13:73:17 | After Int32 x = ... | | | Conditions.cs:73:17:73:17 | 0 | Conditions.cs:73:13:73:17 | Int32 x = ... | | -| Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:74:22:74:22 | String _ | non-empty | -| Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:81:9:82:16 | if (...) ... | empty | +| Conditions.cs:74:9:80:9 | After foreach (... ... in ...) ... | Conditions.cs:81:9:82:16 | if (...) ... | | +| Conditions.cs:74:9:80:9 | [LoopHeader] foreach (... ... in ...) ... | Conditions.cs:74:9:80:9 | After foreach (... ... in ...) ... | | +| Conditions.cs:74:9:80:9 | [LoopHeader] foreach (... ... in ...) ... | Conditions.cs:74:22:74:22 | String _ | | +| Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | Conditions.cs:74:27:74:28 | access to parameter ss | | | Conditions.cs:74:22:74:22 | String _ | Conditions.cs:75:9:80:9 | {...} | | -| Conditions.cs:74:27:74:28 | access to parameter ss | Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | | +| Conditions.cs:74:27:74:28 | After access to parameter ss [empty] | Conditions.cs:74:9:80:9 | After foreach (... ... in ...) ... | | +| Conditions.cs:74:27:74:28 | After access to parameter ss [non-empty] | Conditions.cs:74:22:74:22 | String _ | | +| Conditions.cs:74:27:74:28 | access to parameter ss | Conditions.cs:74:27:74:28 | After access to parameter ss [empty] | empty | +| Conditions.cs:74:27:74:28 | access to parameter ss | Conditions.cs:74:27:74:28 | After access to parameter ss [non-empty] | non-empty | +| Conditions.cs:75:9:80:9 | After {...} | Conditions.cs:74:9:80:9 | [LoopHeader] foreach (... ... in ...) ... | | | Conditions.cs:75:9:80:9 | {...} | Conditions.cs:76:13:77:20 | if (...) ... | | +| Conditions.cs:76:13:77:20 | After if (...) ... | Conditions.cs:78:13:79:26 | if (...) ... | | | Conditions.cs:76:13:77:20 | if (...) ... | Conditions.cs:76:17:76:17 | access to local variable b | | -| Conditions.cs:76:17:76:17 | access to local variable b | Conditions.cs:77:17:77:20 | ...; | true | -| Conditions.cs:76:17:76:17 | access to local variable b | Conditions.cs:78:13:79:26 | if (...) ... | false | +| Conditions.cs:76:17:76:17 | After access to local variable b [false] | Conditions.cs:76:13:77:20 | After if (...) ... | | +| Conditions.cs:76:17:76:17 | After access to local variable b [true] | Conditions.cs:77:17:77:20 | ...; | | +| Conditions.cs:76:17:76:17 | access to local variable b | Conditions.cs:76:17:76:17 | After access to local variable b [false] | false | +| Conditions.cs:76:17:76:17 | access to local variable b | Conditions.cs:76:17:76:17 | After access to local variable b [true] | true | | Conditions.cs:77:17:77:17 | access to local variable x | Conditions.cs:77:17:77:19 | ...++ | | -| Conditions.cs:77:17:77:19 | ...++ | Conditions.cs:78:13:79:26 | if (...) ... | | -| Conditions.cs:77:17:77:20 | ...; | Conditions.cs:77:17:77:17 | access to local variable x | | -| Conditions.cs:78:13:79:26 | if (...) ... | Conditions.cs:78:17:78:17 | access to local variable x | | +| Conditions.cs:77:17:77:19 | ...++ | Conditions.cs:77:17:77:19 | After ...++ | | +| Conditions.cs:77:17:77:19 | After ...++ | Conditions.cs:77:17:77:20 | After ...; | | +| Conditions.cs:77:17:77:19 | Before ...++ | Conditions.cs:77:17:77:17 | access to local variable x | | +| Conditions.cs:77:17:77:20 | ...; | Conditions.cs:77:17:77:19 | Before ...++ | | +| Conditions.cs:77:17:77:20 | After ...; | Conditions.cs:76:13:77:20 | After if (...) ... | | +| Conditions.cs:78:13:79:26 | After if (...) ... | Conditions.cs:75:9:80:9 | After {...} | | +| Conditions.cs:78:13:79:26 | if (...) ... | Conditions.cs:78:17:78:21 | Before ... > ... | | | Conditions.cs:78:17:78:17 | access to local variable x | Conditions.cs:78:21:78:21 | 0 | | -| Conditions.cs:78:17:78:21 | ... > ... | Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | false | -| Conditions.cs:78:17:78:21 | ... > ... | Conditions.cs:79:17:79:26 | ...; | true | +| Conditions.cs:78:17:78:21 | ... > ... | Conditions.cs:78:17:78:21 | After ... > ... [false] | false | +| Conditions.cs:78:17:78:21 | ... > ... | Conditions.cs:78:17:78:21 | After ... > ... [true] | true | +| Conditions.cs:78:17:78:21 | After ... > ... [false] | Conditions.cs:78:13:79:26 | After if (...) ... | | +| Conditions.cs:78:17:78:21 | After ... > ... [true] | Conditions.cs:79:17:79:26 | ...; | | +| Conditions.cs:78:17:78:21 | Before ... > ... | Conditions.cs:78:17:78:17 | access to local variable x | | | Conditions.cs:78:21:78:21 | 0 | Conditions.cs:78:17:78:21 | ... > ... | | -| Conditions.cs:79:17:79:25 | ... = ... | Conditions.cs:74:9:80:9 | foreach (... ... in ...) ... | | -| Conditions.cs:79:17:79:26 | ...; | Conditions.cs:79:21:79:25 | false | | +| Conditions.cs:79:17:79:17 | access to local variable b | Conditions.cs:79:21:79:25 | false | | +| Conditions.cs:79:17:79:25 | ... = ... | Conditions.cs:79:17:79:25 | After ... = ... | | +| Conditions.cs:79:17:79:25 | After ... = ... | Conditions.cs:79:17:79:26 | After ...; | | +| Conditions.cs:79:17:79:25 | Before ... = ... | Conditions.cs:79:17:79:17 | access to local variable b | | +| Conditions.cs:79:17:79:26 | ...; | Conditions.cs:79:17:79:25 | Before ... = ... | | +| Conditions.cs:79:17:79:26 | After ...; | Conditions.cs:78:13:79:26 | After if (...) ... | | | Conditions.cs:79:21:79:25 | false | Conditions.cs:79:17:79:25 | ... = ... | | +| Conditions.cs:81:9:82:16 | After if (...) ... | Conditions.cs:83:9:83:17 | Before return ...; | | | Conditions.cs:81:9:82:16 | if (...) ... | Conditions.cs:81:13:81:13 | access to local variable b | | -| Conditions.cs:81:13:81:13 | access to local variable b | Conditions.cs:82:13:82:16 | ...; | true | -| Conditions.cs:81:13:81:13 | access to local variable b | Conditions.cs:83:16:83:16 | access to local variable x | false | +| Conditions.cs:81:13:81:13 | After access to local variable b [false] | Conditions.cs:81:9:82:16 | After if (...) ... | | +| Conditions.cs:81:13:81:13 | After access to local variable b [true] | Conditions.cs:82:13:82:16 | ...; | | +| Conditions.cs:81:13:81:13 | access to local variable b | Conditions.cs:81:13:81:13 | After access to local variable b [false] | false | +| Conditions.cs:81:13:81:13 | access to local variable b | Conditions.cs:81:13:81:13 | After access to local variable b [true] | true | | Conditions.cs:82:13:82:13 | access to local variable x | Conditions.cs:82:13:82:15 | ...++ | | -| Conditions.cs:82:13:82:15 | ...++ | Conditions.cs:83:16:83:16 | access to local variable x | | -| Conditions.cs:82:13:82:16 | ...; | Conditions.cs:82:13:82:13 | access to local variable x | | -| Conditions.cs:83:9:83:17 | return ...; | Conditions.cs:70:9:70:10 | exit M6 (normal) | return | +| Conditions.cs:82:13:82:15 | ...++ | Conditions.cs:82:13:82:15 | After ...++ | | +| Conditions.cs:82:13:82:15 | After ...++ | Conditions.cs:82:13:82:16 | After ...; | | +| Conditions.cs:82:13:82:15 | Before ...++ | Conditions.cs:82:13:82:13 | access to local variable x | | +| Conditions.cs:82:13:82:16 | ...; | Conditions.cs:82:13:82:15 | Before ...++ | | +| Conditions.cs:82:13:82:16 | After ...; | Conditions.cs:81:9:82:16 | After if (...) ... | | +| Conditions.cs:83:9:83:17 | Before return ...; | Conditions.cs:83:16:83:16 | access to local variable x | | +| Conditions.cs:83:9:83:17 | return ...; | Conditions.cs:70:9:70:10 | Normal Exit | return | | Conditions.cs:83:16:83:16 | access to local variable x | Conditions.cs:83:9:83:17 | return ...; | | -| Conditions.cs:86:9:86:10 | enter M7 | Conditions.cs:87:5:100:5 | {...} | | -| Conditions.cs:86:9:86:10 | exit M7 (normal) | Conditions.cs:86:9:86:10 | exit M7 | | +| Conditions.cs:86:9:86:10 | Entry | Conditions.cs:86:21:86:22 | ss | | +| Conditions.cs:86:9:86:10 | Normal Exit | Conditions.cs:86:9:86:10 | Exit | | +| Conditions.cs:86:21:86:22 | ss | Conditions.cs:87:5:100:5 | {...} | | | Conditions.cs:87:5:100:5 | {...} | Conditions.cs:88:9:88:30 | ... ...; | | -| Conditions.cs:88:9:88:30 | ... ...; | Conditions.cs:88:17:88:18 | access to parameter ss | | -| Conditions.cs:88:13:88:29 | Boolean b = ... | Conditions.cs:89:9:89:18 | ... ...; | | +| Conditions.cs:88:9:88:30 | ... ...; | Conditions.cs:88:13:88:29 | Before Boolean b = ... | | +| Conditions.cs:88:9:88:30 | After ... ...; | Conditions.cs:89:9:89:18 | ... ...; | | +| Conditions.cs:88:13:88:13 | access to local variable b | Conditions.cs:88:17:88:29 | Before ... > ... | | +| Conditions.cs:88:13:88:29 | After Boolean b = ... | Conditions.cs:88:9:88:30 | After ... ...; | | +| Conditions.cs:88:13:88:29 | Before Boolean b = ... | Conditions.cs:88:13:88:13 | access to local variable b | | +| Conditions.cs:88:13:88:29 | Boolean b = ... | Conditions.cs:88:13:88:29 | After Boolean b = ... | | | Conditions.cs:88:17:88:18 | access to parameter ss | Conditions.cs:88:17:88:25 | access to property Length | | -| Conditions.cs:88:17:88:25 | access to property Length | Conditions.cs:88:29:88:29 | 0 | | -| Conditions.cs:88:17:88:29 | ... > ... | Conditions.cs:88:13:88:29 | Boolean b = ... | | +| Conditions.cs:88:17:88:25 | After access to property Length | Conditions.cs:88:29:88:29 | 0 | | +| Conditions.cs:88:17:88:25 | Before access to property Length | Conditions.cs:88:17:88:18 | access to parameter ss | | +| Conditions.cs:88:17:88:25 | access to property Length | Conditions.cs:88:17:88:25 | After access to property Length | | +| Conditions.cs:88:17:88:29 | ... > ... | Conditions.cs:88:17:88:29 | After ... > ... | | +| Conditions.cs:88:17:88:29 | After ... > ... | Conditions.cs:88:13:88:29 | Boolean b = ... | | +| Conditions.cs:88:17:88:29 | Before ... > ... | Conditions.cs:88:17:88:25 | Before access to property Length | | | Conditions.cs:88:29:88:29 | 0 | Conditions.cs:88:17:88:29 | ... > ... | | -| Conditions.cs:89:9:89:18 | ... ...; | Conditions.cs:89:17:89:17 | 0 | | -| Conditions.cs:89:13:89:17 | Int32 x = ... | Conditions.cs:90:27:90:28 | access to parameter ss | | +| Conditions.cs:89:9:89:18 | ... ...; | Conditions.cs:89:13:89:17 | Before Int32 x = ... | | +| Conditions.cs:89:9:89:18 | After ... ...; | Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | | +| Conditions.cs:89:13:89:13 | access to local variable x | Conditions.cs:89:17:89:17 | 0 | | +| Conditions.cs:89:13:89:17 | After Int32 x = ... | Conditions.cs:89:9:89:18 | After ... ...; | | +| Conditions.cs:89:13:89:17 | Before Int32 x = ... | Conditions.cs:89:13:89:13 | access to local variable x | | +| Conditions.cs:89:13:89:17 | Int32 x = ... | Conditions.cs:89:13:89:17 | After Int32 x = ... | | | Conditions.cs:89:17:89:17 | 0 | Conditions.cs:89:13:89:17 | Int32 x = ... | | -| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:90:22:90:22 | String _ | non-empty | -| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:99:16:99:16 | access to local variable x | empty | +| Conditions.cs:90:9:98:9 | After foreach (... ... in ...) ... | Conditions.cs:99:9:99:17 | Before return ...; | | +| Conditions.cs:90:9:98:9 | [LoopHeader] foreach (... ... in ...) ... | Conditions.cs:90:9:98:9 | After foreach (... ... in ...) ... | | +| Conditions.cs:90:9:98:9 | [LoopHeader] foreach (... ... in ...) ... | Conditions.cs:90:22:90:22 | String _ | | +| Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | Conditions.cs:90:27:90:28 | access to parameter ss | | | Conditions.cs:90:22:90:22 | String _ | Conditions.cs:91:9:98:9 | {...} | | -| Conditions.cs:90:27:90:28 | access to parameter ss | Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | | +| Conditions.cs:90:27:90:28 | After access to parameter ss [empty] | Conditions.cs:90:9:98:9 | After foreach (... ... in ...) ... | | +| Conditions.cs:90:27:90:28 | After access to parameter ss [non-empty] | Conditions.cs:90:22:90:22 | String _ | | +| Conditions.cs:90:27:90:28 | access to parameter ss | Conditions.cs:90:27:90:28 | After access to parameter ss [empty] | empty | +| Conditions.cs:90:27:90:28 | access to parameter ss | Conditions.cs:90:27:90:28 | After access to parameter ss [non-empty] | non-empty | +| Conditions.cs:91:9:98:9 | After {...} | Conditions.cs:90:9:98:9 | [LoopHeader] foreach (... ... in ...) ... | | | Conditions.cs:91:9:98:9 | {...} | Conditions.cs:92:13:93:20 | if (...) ... | | +| Conditions.cs:92:13:93:20 | After if (...) ... | Conditions.cs:94:13:95:26 | if (...) ... | | | Conditions.cs:92:13:93:20 | if (...) ... | Conditions.cs:92:17:92:17 | access to local variable b | | -| Conditions.cs:92:17:92:17 | access to local variable b | Conditions.cs:93:17:93:20 | ...; | true | -| Conditions.cs:92:17:92:17 | access to local variable b | Conditions.cs:94:13:95:26 | if (...) ... | false | +| Conditions.cs:92:17:92:17 | After access to local variable b [false] | Conditions.cs:92:13:93:20 | After if (...) ... | | +| Conditions.cs:92:17:92:17 | After access to local variable b [true] | Conditions.cs:93:17:93:20 | ...; | | +| Conditions.cs:92:17:92:17 | access to local variable b | Conditions.cs:92:17:92:17 | After access to local variable b [false] | false | +| Conditions.cs:92:17:92:17 | access to local variable b | Conditions.cs:92:17:92:17 | After access to local variable b [true] | true | | Conditions.cs:93:17:93:17 | access to local variable x | Conditions.cs:93:17:93:19 | ...++ | | -| Conditions.cs:93:17:93:19 | ...++ | Conditions.cs:94:13:95:26 | if (...) ... | | -| Conditions.cs:93:17:93:20 | ...; | Conditions.cs:93:17:93:17 | access to local variable x | | -| Conditions.cs:94:13:95:26 | if (...) ... | Conditions.cs:94:17:94:17 | access to local variable x | | +| Conditions.cs:93:17:93:19 | ...++ | Conditions.cs:93:17:93:19 | After ...++ | | +| Conditions.cs:93:17:93:19 | After ...++ | Conditions.cs:93:17:93:20 | After ...; | | +| Conditions.cs:93:17:93:19 | Before ...++ | Conditions.cs:93:17:93:17 | access to local variable x | | +| Conditions.cs:93:17:93:20 | ...; | Conditions.cs:93:17:93:19 | Before ...++ | | +| Conditions.cs:93:17:93:20 | After ...; | Conditions.cs:92:13:93:20 | After if (...) ... | | +| Conditions.cs:94:13:95:26 | After if (...) ... | Conditions.cs:96:13:97:20 | if (...) ... | | +| Conditions.cs:94:13:95:26 | if (...) ... | Conditions.cs:94:17:94:21 | Before ... > ... | | | Conditions.cs:94:17:94:17 | access to local variable x | Conditions.cs:94:21:94:21 | 0 | | -| Conditions.cs:94:17:94:21 | ... > ... | Conditions.cs:95:17:95:26 | ...; | true | -| Conditions.cs:94:17:94:21 | ... > ... | Conditions.cs:96:13:97:20 | if (...) ... | false | +| Conditions.cs:94:17:94:21 | ... > ... | Conditions.cs:94:17:94:21 | After ... > ... [false] | false | +| Conditions.cs:94:17:94:21 | ... > ... | Conditions.cs:94:17:94:21 | After ... > ... [true] | true | +| Conditions.cs:94:17:94:21 | After ... > ... [false] | Conditions.cs:94:13:95:26 | After if (...) ... | | +| Conditions.cs:94:17:94:21 | After ... > ... [true] | Conditions.cs:95:17:95:26 | ...; | | +| Conditions.cs:94:17:94:21 | Before ... > ... | Conditions.cs:94:17:94:17 | access to local variable x | | | Conditions.cs:94:21:94:21 | 0 | Conditions.cs:94:17:94:21 | ... > ... | | -| Conditions.cs:95:17:95:25 | ... = ... | Conditions.cs:96:13:97:20 | if (...) ... | | -| Conditions.cs:95:17:95:26 | ...; | Conditions.cs:95:21:95:25 | false | | +| Conditions.cs:95:17:95:17 | access to local variable b | Conditions.cs:95:21:95:25 | false | | +| Conditions.cs:95:17:95:25 | ... = ... | Conditions.cs:95:17:95:25 | After ... = ... | | +| Conditions.cs:95:17:95:25 | After ... = ... | Conditions.cs:95:17:95:26 | After ...; | | +| Conditions.cs:95:17:95:25 | Before ... = ... | Conditions.cs:95:17:95:17 | access to local variable b | | +| Conditions.cs:95:17:95:26 | ...; | Conditions.cs:95:17:95:25 | Before ... = ... | | +| Conditions.cs:95:17:95:26 | After ...; | Conditions.cs:94:13:95:26 | After if (...) ... | | | Conditions.cs:95:21:95:25 | false | Conditions.cs:95:17:95:25 | ... = ... | | +| Conditions.cs:96:13:97:20 | After if (...) ... | Conditions.cs:91:9:98:9 | After {...} | | | Conditions.cs:96:13:97:20 | if (...) ... | Conditions.cs:96:17:96:17 | access to local variable b | | -| Conditions.cs:96:17:96:17 | access to local variable b | Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | false | -| Conditions.cs:96:17:96:17 | access to local variable b | Conditions.cs:97:17:97:20 | ...; | true | +| Conditions.cs:96:17:96:17 | After access to local variable b [false] | Conditions.cs:96:13:97:20 | After if (...) ... | | +| Conditions.cs:96:17:96:17 | After access to local variable b [true] | Conditions.cs:97:17:97:20 | ...; | | +| Conditions.cs:96:17:96:17 | access to local variable b | Conditions.cs:96:17:96:17 | After access to local variable b [false] | false | +| Conditions.cs:96:17:96:17 | access to local variable b | Conditions.cs:96:17:96:17 | After access to local variable b [true] | true | | Conditions.cs:97:17:97:17 | access to local variable x | Conditions.cs:97:17:97:19 | ...++ | | -| Conditions.cs:97:17:97:19 | ...++ | Conditions.cs:90:9:98:9 | foreach (... ... in ...) ... | | -| Conditions.cs:97:17:97:20 | ...; | Conditions.cs:97:17:97:17 | access to local variable x | | -| Conditions.cs:99:9:99:17 | return ...; | Conditions.cs:86:9:86:10 | exit M7 (normal) | return | +| Conditions.cs:97:17:97:19 | ...++ | Conditions.cs:97:17:97:19 | After ...++ | | +| Conditions.cs:97:17:97:19 | After ...++ | Conditions.cs:97:17:97:20 | After ...; | | +| Conditions.cs:97:17:97:19 | Before ...++ | Conditions.cs:97:17:97:17 | access to local variable x | | +| Conditions.cs:97:17:97:20 | ...; | Conditions.cs:97:17:97:19 | Before ...++ | | +| Conditions.cs:97:17:97:20 | After ...; | Conditions.cs:96:13:97:20 | After if (...) ... | | +| Conditions.cs:99:9:99:17 | Before return ...; | Conditions.cs:99:16:99:16 | access to local variable x | | +| Conditions.cs:99:9:99:17 | return ...; | Conditions.cs:86:9:86:10 | Normal Exit | return | | Conditions.cs:99:16:99:16 | access to local variable x | Conditions.cs:99:9:99:17 | return ...; | | -| Conditions.cs:102:12:102:13 | enter M8 | Conditions.cs:103:5:111:5 | {...} | | -| Conditions.cs:102:12:102:13 | exit M8 (normal) | Conditions.cs:102:12:102:13 | exit M8 | | +| Conditions.cs:102:12:102:13 | Entry | Conditions.cs:102:20:102:20 | b | | +| Conditions.cs:102:12:102:13 | Normal Exit | Conditions.cs:102:12:102:13 | Exit | | +| Conditions.cs:102:20:102:20 | b | Conditions.cs:103:5:111:5 | {...} | | | Conditions.cs:103:5:111:5 | {...} | Conditions.cs:104:9:104:29 | ... ...; | | -| Conditions.cs:104:9:104:29 | ... ...; | Conditions.cs:104:17:104:17 | access to parameter b | | -| Conditions.cs:104:13:104:28 | String x = ... | Conditions.cs:105:9:106:20 | if (...) ... | | +| Conditions.cs:104:9:104:29 | ... ...; | Conditions.cs:104:13:104:28 | Before String x = ... | | +| Conditions.cs:104:9:104:29 | After ... ...; | Conditions.cs:105:9:106:20 | if (...) ... | | +| Conditions.cs:104:13:104:13 | access to local variable x | Conditions.cs:104:17:104:28 | Before call to method ToString | | +| Conditions.cs:104:13:104:28 | After String x = ... | Conditions.cs:104:9:104:29 | After ... ...; | | +| Conditions.cs:104:13:104:28 | Before String x = ... | Conditions.cs:104:13:104:13 | access to local variable x | | +| Conditions.cs:104:13:104:28 | String x = ... | Conditions.cs:104:13:104:28 | After String x = ... | | | Conditions.cs:104:17:104:17 | access to parameter b | Conditions.cs:104:17:104:28 | call to method ToString | | -| Conditions.cs:104:17:104:28 | call to method ToString | Conditions.cs:104:13:104:28 | String x = ... | | +| Conditions.cs:104:17:104:28 | After call to method ToString | Conditions.cs:104:13:104:28 | String x = ... | | +| Conditions.cs:104:17:104:28 | Before call to method ToString | Conditions.cs:104:17:104:17 | access to parameter b | | +| Conditions.cs:104:17:104:28 | call to method ToString | Conditions.cs:104:17:104:28 | After call to method ToString | | +| Conditions.cs:105:9:106:20 | After if (...) ... | Conditions.cs:107:9:109:24 | if (...) ... | | | Conditions.cs:105:9:106:20 | if (...) ... | Conditions.cs:105:13:105:13 | access to parameter b | | -| Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:106:13:106:20 | ...; | true | -| Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:107:9:109:24 | if (...) ... | false | +| Conditions.cs:105:13:105:13 | After access to parameter b [false] | Conditions.cs:105:9:106:20 | After if (...) ... | | +| Conditions.cs:105:13:105:13 | After access to parameter b [true] | Conditions.cs:106:13:106:20 | ...; | | +| Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:105:13:105:13 | After access to parameter b [false] | false | +| Conditions.cs:105:13:105:13 | access to parameter b | Conditions.cs:105:13:105:13 | After access to parameter b [true] | true | | Conditions.cs:106:13:106:13 | access to local variable x | Conditions.cs:106:18:106:19 | "" | | -| Conditions.cs:106:13:106:19 | ... += ... | Conditions.cs:107:9:109:24 | if (...) ... | | -| Conditions.cs:106:13:106:20 | ...; | Conditions.cs:106:13:106:13 | access to local variable x | | +| Conditions.cs:106:13:106:19 | ... += ... | Conditions.cs:106:13:106:19 | After ... += ... | | +| Conditions.cs:106:13:106:19 | After ... += ... | Conditions.cs:106:13:106:20 | After ...; | | +| Conditions.cs:106:13:106:19 | Before ... += ... | Conditions.cs:106:13:106:13 | access to local variable x | | +| Conditions.cs:106:13:106:20 | ...; | Conditions.cs:106:13:106:19 | Before ... += ... | | +| Conditions.cs:106:13:106:20 | After ...; | Conditions.cs:105:9:106:20 | After if (...) ... | | | Conditions.cs:106:18:106:19 | "" | Conditions.cs:106:13:106:19 | ... += ... | | -| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:107:13:107:13 | access to local variable x | | +| Conditions.cs:107:9:109:24 | After if (...) ... | Conditions.cs:110:9:110:17 | Before return ...; | | +| Conditions.cs:107:9:109:24 | if (...) ... | Conditions.cs:107:13:107:24 | Before ... > ... | | | Conditions.cs:107:13:107:13 | access to local variable x | Conditions.cs:107:13:107:20 | access to property Length | | -| Conditions.cs:107:13:107:20 | access to property Length | Conditions.cs:107:24:107:24 | 0 | | -| Conditions.cs:107:13:107:24 | ... > ... | Conditions.cs:108:13:109:24 | if (...) ... | true | -| Conditions.cs:107:13:107:24 | ... > ... | Conditions.cs:110:16:110:16 | access to local variable x | false | +| Conditions.cs:107:13:107:20 | After access to property Length | Conditions.cs:107:24:107:24 | 0 | | +| Conditions.cs:107:13:107:20 | Before access to property Length | Conditions.cs:107:13:107:13 | access to local variable x | | +| Conditions.cs:107:13:107:20 | access to property Length | Conditions.cs:107:13:107:20 | After access to property Length | | +| Conditions.cs:107:13:107:24 | ... > ... | Conditions.cs:107:13:107:24 | After ... > ... [false] | false | +| Conditions.cs:107:13:107:24 | ... > ... | Conditions.cs:107:13:107:24 | After ... > ... [true] | true | +| Conditions.cs:107:13:107:24 | After ... > ... [false] | Conditions.cs:107:9:109:24 | After if (...) ... | | +| Conditions.cs:107:13:107:24 | After ... > ... [true] | Conditions.cs:108:13:109:24 | if (...) ... | | +| Conditions.cs:107:13:107:24 | Before ... > ... | Conditions.cs:107:13:107:20 | Before access to property Length | | | Conditions.cs:107:24:107:24 | 0 | Conditions.cs:107:13:107:24 | ... > ... | | -| Conditions.cs:108:13:109:24 | if (...) ... | Conditions.cs:108:18:108:18 | access to parameter b | | -| Conditions.cs:108:17:108:18 | [false] !... | Conditions.cs:110:16:110:16 | access to local variable x | false | -| Conditions.cs:108:17:108:18 | [true] !... | Conditions.cs:109:17:109:24 | ...; | true | -| Conditions.cs:108:18:108:18 | access to parameter b | Conditions.cs:108:17:108:18 | [false] !... | true | -| Conditions.cs:108:18:108:18 | access to parameter b | Conditions.cs:108:17:108:18 | [true] !... | false | +| Conditions.cs:108:13:109:24 | After if (...) ... | Conditions.cs:107:9:109:24 | After if (...) ... | | +| Conditions.cs:108:13:109:24 | if (...) ... | Conditions.cs:108:17:108:18 | !... | | +| Conditions.cs:108:17:108:18 | !... | Conditions.cs:108:18:108:18 | access to parameter b | | +| Conditions.cs:108:17:108:18 | After !... [false] | Conditions.cs:108:13:109:24 | After if (...) ... | | +| Conditions.cs:108:17:108:18 | After !... [true] | Conditions.cs:109:17:109:24 | ...; | | +| Conditions.cs:108:18:108:18 | After access to parameter b [false] | Conditions.cs:108:17:108:18 | After !... [true] | true | +| Conditions.cs:108:18:108:18 | After access to parameter b [true] | Conditions.cs:108:17:108:18 | After !... [false] | false | +| Conditions.cs:108:18:108:18 | access to parameter b | Conditions.cs:108:18:108:18 | After access to parameter b [false] | false | +| Conditions.cs:108:18:108:18 | access to parameter b | Conditions.cs:108:18:108:18 | After access to parameter b [true] | true | | Conditions.cs:109:17:109:17 | access to local variable x | Conditions.cs:109:22:109:23 | "" | | -| Conditions.cs:109:17:109:23 | ... += ... | Conditions.cs:110:16:110:16 | access to local variable x | | -| Conditions.cs:109:17:109:24 | ...; | Conditions.cs:109:17:109:17 | access to local variable x | | +| Conditions.cs:109:17:109:23 | ... += ... | Conditions.cs:109:17:109:23 | After ... += ... | | +| Conditions.cs:109:17:109:23 | After ... += ... | Conditions.cs:109:17:109:24 | After ...; | | +| Conditions.cs:109:17:109:23 | Before ... += ... | Conditions.cs:109:17:109:17 | access to local variable x | | +| Conditions.cs:109:17:109:24 | ...; | Conditions.cs:109:17:109:23 | Before ... += ... | | +| Conditions.cs:109:17:109:24 | After ...; | Conditions.cs:108:13:109:24 | After if (...) ... | | | Conditions.cs:109:22:109:23 | "" | Conditions.cs:109:17:109:23 | ... += ... | | -| Conditions.cs:110:9:110:17 | return ...; | Conditions.cs:102:12:102:13 | exit M8 (normal) | return | +| Conditions.cs:110:9:110:17 | Before return ...; | Conditions.cs:110:16:110:16 | access to local variable x | | +| Conditions.cs:110:9:110:17 | return ...; | Conditions.cs:102:12:102:13 | Normal Exit | return | | Conditions.cs:110:16:110:16 | access to local variable x | Conditions.cs:110:9:110:17 | return ...; | | -| Conditions.cs:113:10:113:11 | enter M9 | Conditions.cs:114:5:124:5 | {...} | | -| Conditions.cs:113:10:113:11 | exit M9 (normal) | Conditions.cs:113:10:113:11 | exit M9 | | +| Conditions.cs:113:10:113:11 | Entry | Conditions.cs:113:22:113:25 | args | | +| Conditions.cs:113:10:113:11 | Normal Exit | Conditions.cs:113:10:113:11 | Exit | | +| Conditions.cs:113:22:113:25 | args | Conditions.cs:114:5:124:5 | {...} | | +| Conditions.cs:114:5:124:5 | After {...} | Conditions.cs:113:10:113:11 | Normal Exit | | | Conditions.cs:114:5:124:5 | {...} | Conditions.cs:115:9:115:24 | ... ...; | | -| Conditions.cs:115:9:115:24 | ... ...; | Conditions.cs:115:20:115:23 | null | | -| Conditions.cs:115:16:115:23 | String s = ... | Conditions.cs:116:9:123:9 | for (...;...;...) ... | | +| Conditions.cs:115:9:115:24 | ... ...; | Conditions.cs:115:16:115:23 | Before String s = ... | | +| Conditions.cs:115:9:115:24 | After ... ...; | Conditions.cs:116:9:123:9 | for (...;...;...) ... | | +| Conditions.cs:115:16:115:16 | access to local variable s | Conditions.cs:115:20:115:23 | null | | +| Conditions.cs:115:16:115:23 | After String s = ... | Conditions.cs:115:9:115:24 | After ... ...; | | +| Conditions.cs:115:16:115:23 | Before String s = ... | Conditions.cs:115:16:115:16 | access to local variable s | | +| Conditions.cs:115:16:115:23 | String s = ... | Conditions.cs:115:16:115:23 | After String s = ... | | | Conditions.cs:115:20:115:23 | null | Conditions.cs:115:16:115:23 | String s = ... | | -| Conditions.cs:116:9:123:9 | for (...;...;...) ... | Conditions.cs:116:22:116:22 | 0 | | -| Conditions.cs:116:18:116:22 | Int32 i = ... | Conditions.cs:116:25:116:25 | access to local variable i | | +| Conditions.cs:116:9:123:9 | After for (...;...;...) ... | Conditions.cs:114:5:124:5 | After {...} | | +| Conditions.cs:116:9:123:9 | [LoopHeader] for (...;...;...) ... | Conditions.cs:116:42:116:44 | Before ...++ | | +| Conditions.cs:116:9:123:9 | for (...;...;...) ... | Conditions.cs:116:18:116:22 | Before Int32 i = ... | | +| Conditions.cs:116:18:116:18 | access to local variable i | Conditions.cs:116:22:116:22 | 0 | | +| Conditions.cs:116:18:116:22 | After Int32 i = ... | Conditions.cs:116:25:116:39 | Before ... < ... | | +| Conditions.cs:116:18:116:22 | Before Int32 i = ... | Conditions.cs:116:18:116:18 | access to local variable i | | +| Conditions.cs:116:18:116:22 | Int32 i = ... | Conditions.cs:116:18:116:22 | After Int32 i = ... | | | Conditions.cs:116:22:116:22 | 0 | Conditions.cs:116:18:116:22 | Int32 i = ... | | -| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:116:29:116:32 | access to parameter args | | -| Conditions.cs:116:25:116:39 | ... < ... | Conditions.cs:113:10:113:11 | exit M9 (normal) | false | -| Conditions.cs:116:25:116:39 | ... < ... | Conditions.cs:117:9:123:9 | {...} | true | +| Conditions.cs:116:25:116:25 | access to local variable i | Conditions.cs:116:29:116:39 | Before access to property Length | | +| Conditions.cs:116:25:116:39 | ... < ... | Conditions.cs:116:25:116:39 | After ... < ... [false] | false | +| Conditions.cs:116:25:116:39 | ... < ... | Conditions.cs:116:25:116:39 | After ... < ... [true] | true | +| Conditions.cs:116:25:116:39 | After ... < ... [false] | Conditions.cs:116:9:123:9 | After for (...;...;...) ... | | +| Conditions.cs:116:25:116:39 | After ... < ... [true] | Conditions.cs:117:9:123:9 | {...} | | +| Conditions.cs:116:25:116:39 | Before ... < ... | Conditions.cs:116:25:116:25 | access to local variable i | | | Conditions.cs:116:29:116:32 | access to parameter args | Conditions.cs:116:29:116:39 | access to property Length | | -| Conditions.cs:116:29:116:39 | access to property Length | Conditions.cs:116:25:116:39 | ... < ... | | +| Conditions.cs:116:29:116:39 | After access to property Length | Conditions.cs:116:25:116:39 | ... < ... | | +| Conditions.cs:116:29:116:39 | Before access to property Length | Conditions.cs:116:29:116:32 | access to parameter args | | +| Conditions.cs:116:29:116:39 | access to property Length | Conditions.cs:116:29:116:39 | After access to property Length | | | Conditions.cs:116:42:116:42 | access to local variable i | Conditions.cs:116:42:116:44 | ...++ | | -| Conditions.cs:116:42:116:44 | ...++ | Conditions.cs:116:25:116:25 | access to local variable i | | +| Conditions.cs:116:42:116:44 | ...++ | Conditions.cs:116:42:116:44 | After ...++ | | +| Conditions.cs:116:42:116:44 | After ...++ | Conditions.cs:116:25:116:39 | Before ... < ... | | +| Conditions.cs:116:42:116:44 | Before ...++ | Conditions.cs:116:42:116:42 | access to local variable i | | +| Conditions.cs:117:9:123:9 | After {...} | Conditions.cs:116:9:123:9 | [LoopHeader] for (...;...;...) ... | | | Conditions.cs:117:9:123:9 | {...} | Conditions.cs:118:13:118:44 | ... ...; | | -| Conditions.cs:118:13:118:44 | ... ...; | Conditions.cs:118:24:118:24 | access to local variable i | | -| Conditions.cs:118:17:118:43 | Boolean last = ... | Conditions.cs:119:13:120:23 | if (...) ... | | -| Conditions.cs:118:24:118:24 | access to local variable i | Conditions.cs:118:29:118:32 | access to parameter args | | -| Conditions.cs:118:24:118:43 | ... == ... | Conditions.cs:118:17:118:43 | Boolean last = ... | | +| Conditions.cs:118:13:118:44 | ... ...; | Conditions.cs:118:17:118:43 | Before Boolean last = ... | | +| Conditions.cs:118:13:118:44 | After ... ...; | Conditions.cs:119:13:120:23 | if (...) ... | | +| Conditions.cs:118:17:118:20 | access to local variable last | Conditions.cs:118:24:118:43 | Before ... == ... | | +| Conditions.cs:118:17:118:43 | After Boolean last = ... | Conditions.cs:118:13:118:44 | After ... ...; | | +| Conditions.cs:118:17:118:43 | Before Boolean last = ... | Conditions.cs:118:17:118:20 | access to local variable last | | +| Conditions.cs:118:17:118:43 | Boolean last = ... | Conditions.cs:118:17:118:43 | After Boolean last = ... | | +| Conditions.cs:118:24:118:24 | access to local variable i | Conditions.cs:118:29:118:43 | Before ... - ... | | +| Conditions.cs:118:24:118:43 | ... == ... | Conditions.cs:118:24:118:43 | After ... == ... | | +| Conditions.cs:118:24:118:43 | After ... == ... | Conditions.cs:118:17:118:43 | Boolean last = ... | | +| Conditions.cs:118:24:118:43 | Before ... == ... | Conditions.cs:118:24:118:24 | access to local variable i | | | Conditions.cs:118:29:118:32 | access to parameter args | Conditions.cs:118:29:118:39 | access to property Length | | -| Conditions.cs:118:29:118:39 | access to property Length | Conditions.cs:118:43:118:43 | 1 | | -| Conditions.cs:118:29:118:43 | ... - ... | Conditions.cs:118:24:118:43 | ... == ... | | +| Conditions.cs:118:29:118:39 | After access to property Length | Conditions.cs:118:43:118:43 | 1 | | +| Conditions.cs:118:29:118:39 | Before access to property Length | Conditions.cs:118:29:118:32 | access to parameter args | | +| Conditions.cs:118:29:118:39 | access to property Length | Conditions.cs:118:29:118:39 | After access to property Length | | +| Conditions.cs:118:29:118:43 | ... - ... | Conditions.cs:118:29:118:43 | After ... - ... | | +| Conditions.cs:118:29:118:43 | After ... - ... | Conditions.cs:118:24:118:43 | ... == ... | | +| Conditions.cs:118:29:118:43 | Before ... - ... | Conditions.cs:118:29:118:39 | Before access to property Length | | | Conditions.cs:118:43:118:43 | 1 | Conditions.cs:118:29:118:43 | ... - ... | | -| Conditions.cs:119:13:120:23 | if (...) ... | Conditions.cs:119:18:119:21 | access to local variable last | | -| Conditions.cs:119:17:119:21 | [false] !... | Conditions.cs:121:13:122:25 | if (...) ... | false | -| Conditions.cs:119:17:119:21 | [true] !... | Conditions.cs:120:17:120:23 | ...; | true | -| Conditions.cs:119:18:119:21 | access to local variable last | Conditions.cs:119:17:119:21 | [false] !... | true | -| Conditions.cs:119:18:119:21 | access to local variable last | Conditions.cs:119:17:119:21 | [true] !... | false | -| Conditions.cs:120:17:120:22 | ... = ... | Conditions.cs:121:13:122:25 | if (...) ... | | -| Conditions.cs:120:17:120:23 | ...; | Conditions.cs:120:21:120:22 | "" | | +| Conditions.cs:119:13:120:23 | After if (...) ... | Conditions.cs:121:13:122:25 | if (...) ... | | +| Conditions.cs:119:13:120:23 | if (...) ... | Conditions.cs:119:17:119:21 | !... | | +| Conditions.cs:119:17:119:21 | !... | Conditions.cs:119:18:119:21 | access to local variable last | | +| Conditions.cs:119:17:119:21 | After !... [false] | Conditions.cs:119:13:120:23 | After if (...) ... | | +| Conditions.cs:119:17:119:21 | After !... [true] | Conditions.cs:120:17:120:23 | ...; | | +| Conditions.cs:119:18:119:21 | After access to local variable last [false] | Conditions.cs:119:17:119:21 | After !... [true] | true | +| Conditions.cs:119:18:119:21 | After access to local variable last [true] | Conditions.cs:119:17:119:21 | After !... [false] | false | +| Conditions.cs:119:18:119:21 | access to local variable last | Conditions.cs:119:18:119:21 | After access to local variable last [false] | false | +| Conditions.cs:119:18:119:21 | access to local variable last | Conditions.cs:119:18:119:21 | After access to local variable last [true] | true | +| Conditions.cs:120:17:120:17 | access to local variable s | Conditions.cs:120:21:120:22 | "" | | +| Conditions.cs:120:17:120:22 | ... = ... | Conditions.cs:120:17:120:22 | After ... = ... | | +| Conditions.cs:120:17:120:22 | After ... = ... | Conditions.cs:120:17:120:23 | After ...; | | +| Conditions.cs:120:17:120:22 | Before ... = ... | Conditions.cs:120:17:120:17 | access to local variable s | | +| Conditions.cs:120:17:120:23 | ...; | Conditions.cs:120:17:120:22 | Before ... = ... | | +| Conditions.cs:120:17:120:23 | After ...; | Conditions.cs:119:13:120:23 | After if (...) ... | | | Conditions.cs:120:21:120:22 | "" | Conditions.cs:120:17:120:22 | ... = ... | | +| Conditions.cs:121:13:122:25 | After if (...) ... | Conditions.cs:117:9:123:9 | After {...} | | | Conditions.cs:121:13:122:25 | if (...) ... | Conditions.cs:121:17:121:20 | access to local variable last | | -| Conditions.cs:121:17:121:20 | access to local variable last | Conditions.cs:116:42:116:42 | access to local variable i | false | -| Conditions.cs:121:17:121:20 | access to local variable last | Conditions.cs:122:17:122:25 | ...; | true | -| Conditions.cs:122:17:122:24 | ... = ... | Conditions.cs:116:42:116:42 | access to local variable i | | -| Conditions.cs:122:17:122:25 | ...; | Conditions.cs:122:21:122:24 | null | | +| Conditions.cs:121:17:121:20 | After access to local variable last [false] | Conditions.cs:121:13:122:25 | After if (...) ... | | +| Conditions.cs:121:17:121:20 | After access to local variable last [true] | Conditions.cs:122:17:122:25 | ...; | | +| Conditions.cs:121:17:121:20 | access to local variable last | Conditions.cs:121:17:121:20 | After access to local variable last [false] | false | +| Conditions.cs:121:17:121:20 | access to local variable last | Conditions.cs:121:17:121:20 | After access to local variable last [true] | true | +| Conditions.cs:122:17:122:17 | access to local variable s | Conditions.cs:122:21:122:24 | null | | +| Conditions.cs:122:17:122:24 | ... = ... | Conditions.cs:122:17:122:24 | After ... = ... | | +| Conditions.cs:122:17:122:24 | After ... = ... | Conditions.cs:122:17:122:25 | After ...; | | +| Conditions.cs:122:17:122:24 | Before ... = ... | Conditions.cs:122:17:122:17 | access to local variable s | | +| Conditions.cs:122:17:122:25 | ...; | Conditions.cs:122:17:122:24 | Before ... = ... | | +| Conditions.cs:122:17:122:25 | After ...; | Conditions.cs:121:13:122:25 | After if (...) ... | | | Conditions.cs:122:21:122:24 | null | Conditions.cs:122:17:122:24 | ... = ... | | -| Conditions.cs:129:10:129:12 | enter M10 | Conditions.cs:130:5:141:5 | {...} | | +| Conditions.cs:129:10:129:12 | Entry | Conditions.cs:130:5:141:5 | {...} | | | Conditions.cs:130:5:141:5 | {...} | Conditions.cs:131:9:140:9 | while (...) ... | | -| Conditions.cs:131:9:140:9 | while (...) ... | Conditions.cs:131:16:131:19 | true | | -| Conditions.cs:131:16:131:19 | true | Conditions.cs:132:9:140:9 | {...} | true | +| Conditions.cs:131:9:140:9 | [LoopHeader] while (...) ... | Conditions.cs:131:16:131:19 | true | | +| Conditions.cs:131:9:140:9 | while (...) ... | Conditions.cs:131:9:140:9 | [LoopHeader] while (...) ... | | +| Conditions.cs:131:16:131:19 | After true [true] | Conditions.cs:132:9:140:9 | {...} | | +| Conditions.cs:131:16:131:19 | true | Conditions.cs:131:16:131:19 | After true [true] | true | +| Conditions.cs:132:9:140:9 | After {...} | Conditions.cs:131:9:140:9 | [LoopHeader] while (...) ... | | | Conditions.cs:132:9:140:9 | {...} | Conditions.cs:133:13:139:13 | if (...) ... | | -| Conditions.cs:133:13:139:13 | if (...) ... | Conditions.cs:133:17:133:22 | this access | | -| Conditions.cs:133:17:133:22 | access to field Field1 | Conditions.cs:131:16:131:19 | true | false | -| Conditions.cs:133:17:133:22 | access to field Field1 | Conditions.cs:134:13:139:13 | {...} | true | +| Conditions.cs:133:13:139:13 | After if (...) ... | Conditions.cs:132:9:140:9 | After {...} | | +| Conditions.cs:133:13:139:13 | if (...) ... | Conditions.cs:133:17:133:22 | Before access to field Field1 | | +| Conditions.cs:133:17:133:22 | After access to field Field1 [false] | Conditions.cs:133:13:139:13 | After if (...) ... | | +| Conditions.cs:133:17:133:22 | After access to field Field1 [true] | Conditions.cs:134:13:139:13 | {...} | | +| Conditions.cs:133:17:133:22 | Before access to field Field1 | Conditions.cs:133:17:133:22 | this access | | +| Conditions.cs:133:17:133:22 | access to field Field1 | Conditions.cs:133:17:133:22 | After access to field Field1 [false] | false | +| Conditions.cs:133:17:133:22 | access to field Field1 | Conditions.cs:133:17:133:22 | After access to field Field1 [true] | true | | Conditions.cs:133:17:133:22 | this access | Conditions.cs:133:17:133:22 | access to field Field1 | | +| Conditions.cs:134:13:139:13 | After {...} | Conditions.cs:133:13:139:13 | After if (...) ... | | | Conditions.cs:134:13:139:13 | {...} | Conditions.cs:135:17:138:17 | if (...) ... | | -| Conditions.cs:135:17:138:17 | if (...) ... | Conditions.cs:135:21:135:26 | this access | | -| Conditions.cs:135:21:135:26 | access to field Field2 | Conditions.cs:131:16:131:19 | true | false | -| Conditions.cs:135:21:135:26 | access to field Field2 | Conditions.cs:136:17:138:17 | {...} | true | +| Conditions.cs:135:17:138:17 | After if (...) ... | Conditions.cs:134:13:139:13 | After {...} | | +| Conditions.cs:135:17:138:17 | if (...) ... | Conditions.cs:135:21:135:26 | Before access to field Field2 | | +| Conditions.cs:135:21:135:26 | After access to field Field2 [false] | Conditions.cs:135:17:138:17 | After if (...) ... | | +| Conditions.cs:135:21:135:26 | After access to field Field2 [true] | Conditions.cs:136:17:138:17 | {...} | | +| Conditions.cs:135:21:135:26 | Before access to field Field2 | Conditions.cs:135:21:135:26 | this access | | +| Conditions.cs:135:21:135:26 | access to field Field2 | Conditions.cs:135:21:135:26 | After access to field Field2 [false] | false | +| Conditions.cs:135:21:135:26 | access to field Field2 | Conditions.cs:135:21:135:26 | After access to field Field2 [true] | true | | Conditions.cs:135:21:135:26 | this access | Conditions.cs:135:21:135:26 | access to field Field2 | | +| Conditions.cs:136:17:138:17 | After {...} | Conditions.cs:135:17:138:17 | After if (...) ... | | | Conditions.cs:136:17:138:17 | {...} | Conditions.cs:137:21:137:38 | ...; | | -| Conditions.cs:137:21:137:26 | access to field Field1 | Conditions.cs:137:21:137:37 | call to method ToString | | +| Conditions.cs:137:21:137:26 | After access to field Field1 | Conditions.cs:137:21:137:37 | call to method ToString | | +| Conditions.cs:137:21:137:26 | Before access to field Field1 | Conditions.cs:137:21:137:26 | this access | | +| Conditions.cs:137:21:137:26 | access to field Field1 | Conditions.cs:137:21:137:26 | After access to field Field1 | | | Conditions.cs:137:21:137:26 | this access | Conditions.cs:137:21:137:26 | access to field Field1 | | -| Conditions.cs:137:21:137:37 | call to method ToString | Conditions.cs:131:16:131:19 | true | | -| Conditions.cs:137:21:137:38 | ...; | Conditions.cs:137:21:137:26 | this access | | -| Conditions.cs:143:10:143:12 | enter M11 | Conditions.cs:144:5:150:5 | {...} | | -| Conditions.cs:143:10:143:12 | exit M11 (normal) | Conditions.cs:143:10:143:12 | exit M11 | | +| Conditions.cs:137:21:137:37 | After call to method ToString | Conditions.cs:137:21:137:38 | After ...; | | +| Conditions.cs:137:21:137:37 | Before call to method ToString | Conditions.cs:137:21:137:26 | Before access to field Field1 | | +| Conditions.cs:137:21:137:37 | call to method ToString | Conditions.cs:137:21:137:37 | After call to method ToString | | +| Conditions.cs:137:21:137:38 | ...; | Conditions.cs:137:21:137:37 | Before call to method ToString | | +| Conditions.cs:137:21:137:38 | After ...; | Conditions.cs:136:17:138:17 | After {...} | | +| Conditions.cs:143:10:143:12 | Entry | Conditions.cs:143:19:143:19 | b | | +| Conditions.cs:143:10:143:12 | Normal Exit | Conditions.cs:143:10:143:12 | Exit | | +| Conditions.cs:143:19:143:19 | b | Conditions.cs:144:5:150:5 | {...} | | +| Conditions.cs:144:5:150:5 | After {...} | Conditions.cs:143:10:143:12 | Normal Exit | | | Conditions.cs:144:5:150:5 | {...} | Conditions.cs:145:9:145:30 | ... ...; | | -| Conditions.cs:145:9:145:30 | ... ...; | Conditions.cs:145:17:145:17 | access to parameter b | | -| Conditions.cs:145:13:145:29 | String s = ... | Conditions.cs:146:9:149:49 | if (...) ... | | -| Conditions.cs:145:17:145:17 | access to parameter b | Conditions.cs:145:21:145:23 | "a" | true | -| Conditions.cs:145:17:145:17 | access to parameter b | Conditions.cs:145:27:145:29 | "b" | false | -| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:145:13:145:29 | String s = ... | | -| Conditions.cs:145:21:145:23 | "a" | Conditions.cs:145:17:145:29 | ... ? ... : ... | | -| Conditions.cs:145:27:145:29 | "b" | Conditions.cs:145:17:145:29 | ... ? ... : ... | | +| Conditions.cs:145:9:145:30 | ... ...; | Conditions.cs:145:13:145:29 | Before String s = ... | | +| Conditions.cs:145:9:145:30 | After ... ...; | Conditions.cs:146:9:149:49 | if (...) ... | | +| Conditions.cs:145:13:145:13 | access to local variable s | Conditions.cs:145:17:145:29 | ... ? ... : ... | | +| Conditions.cs:145:13:145:29 | After String s = ... | Conditions.cs:145:9:145:30 | After ... ...; | | +| Conditions.cs:145:13:145:29 | Before String s = ... | Conditions.cs:145:13:145:13 | access to local variable s | | +| Conditions.cs:145:13:145:29 | String s = ... | Conditions.cs:145:13:145:29 | After String s = ... | | +| Conditions.cs:145:17:145:17 | After access to parameter b [false] | Conditions.cs:145:27:145:29 | "b" | | +| Conditions.cs:145:17:145:17 | After access to parameter b [true] | Conditions.cs:145:21:145:23 | "a" | | +| Conditions.cs:145:17:145:17 | access to parameter b | Conditions.cs:145:17:145:17 | After access to parameter b [false] | false | +| Conditions.cs:145:17:145:17 | access to parameter b | Conditions.cs:145:17:145:17 | After access to parameter b [true] | true | +| Conditions.cs:145:17:145:29 | ... ? ... : ... | Conditions.cs:145:17:145:17 | access to parameter b | | +| Conditions.cs:145:17:145:29 | After ... ? ... : ... | Conditions.cs:145:13:145:29 | String s = ... | | +| Conditions.cs:145:21:145:23 | "a" | Conditions.cs:145:17:145:29 | After ... ? ... : ... | | +| Conditions.cs:145:27:145:29 | "b" | Conditions.cs:145:17:145:29 | After ... ? ... : ... | | +| Conditions.cs:146:9:149:49 | After if (...) ... | Conditions.cs:144:5:150:5 | After {...} | | | Conditions.cs:146:9:149:49 | if (...) ... | Conditions.cs:146:13:146:13 | access to parameter b | | -| Conditions.cs:146:13:146:13 | access to parameter b | Conditions.cs:147:13:147:49 | ...; | true | -| Conditions.cs:146:13:146:13 | access to parameter b | Conditions.cs:149:13:149:49 | ...; | false | -| Conditions.cs:147:13:147:48 | call to method WriteLine | Conditions.cs:143:10:143:12 | exit M11 (normal) | | -| Conditions.cs:147:13:147:49 | ...; | Conditions.cs:147:40:147:43 | "a = " | | -| Conditions.cs:147:38:147:47 | $"..." | Conditions.cs:147:13:147:48 | call to method WriteLine | | -| Conditions.cs:147:40:147:43 | "a = " | Conditions.cs:147:45:147:45 | access to local variable s | | -| Conditions.cs:147:44:147:46 | {...} | Conditions.cs:147:38:147:47 | $"..." | | +| Conditions.cs:146:13:146:13 | After access to parameter b [false] | Conditions.cs:149:13:149:49 | ...; | | +| Conditions.cs:146:13:146:13 | After access to parameter b [true] | Conditions.cs:147:13:147:49 | ...; | | +| Conditions.cs:146:13:146:13 | access to parameter b | Conditions.cs:146:13:146:13 | After access to parameter b [false] | false | +| Conditions.cs:146:13:146:13 | access to parameter b | Conditions.cs:146:13:146:13 | After access to parameter b [true] | true | +| Conditions.cs:147:13:147:48 | After call to method WriteLine | Conditions.cs:147:13:147:49 | After ...; | | +| Conditions.cs:147:13:147:48 | Before call to method WriteLine | Conditions.cs:147:38:147:47 | Before $"..." | | +| Conditions.cs:147:13:147:48 | call to method WriteLine | Conditions.cs:147:13:147:48 | After call to method WriteLine | | +| Conditions.cs:147:13:147:49 | ...; | Conditions.cs:147:13:147:48 | Before call to method WriteLine | | +| Conditions.cs:147:13:147:49 | After ...; | Conditions.cs:146:9:149:49 | After if (...) ... | | +| Conditions.cs:147:38:147:47 | $"..." | Conditions.cs:147:38:147:47 | After $"..." | | +| Conditions.cs:147:38:147:47 | After $"..." | Conditions.cs:147:13:147:48 | call to method WriteLine | | +| Conditions.cs:147:38:147:47 | Before $"..." | Conditions.cs:147:40:147:43 | "a = " | | +| Conditions.cs:147:40:147:43 | "a = " | Conditions.cs:147:44:147:46 | Before {...} | | +| Conditions.cs:147:44:147:46 | After {...} | Conditions.cs:147:38:147:47 | $"..." | | +| Conditions.cs:147:44:147:46 | Before {...} | Conditions.cs:147:45:147:45 | access to local variable s | | +| Conditions.cs:147:44:147:46 | {...} | Conditions.cs:147:44:147:46 | After {...} | | | Conditions.cs:147:45:147:45 | access to local variable s | Conditions.cs:147:44:147:46 | {...} | | -| Conditions.cs:149:13:149:48 | call to method WriteLine | Conditions.cs:143:10:143:12 | exit M11 (normal) | | -| Conditions.cs:149:13:149:49 | ...; | Conditions.cs:149:40:149:43 | "b = " | | -| Conditions.cs:149:38:149:47 | $"..." | Conditions.cs:149:13:149:48 | call to method WriteLine | | -| Conditions.cs:149:40:149:43 | "b = " | Conditions.cs:149:45:149:45 | access to local variable s | | -| Conditions.cs:149:44:149:46 | {...} | Conditions.cs:149:38:149:47 | $"..." | | +| Conditions.cs:149:13:149:48 | After call to method WriteLine | Conditions.cs:149:13:149:49 | After ...; | | +| Conditions.cs:149:13:149:48 | Before call to method WriteLine | Conditions.cs:149:38:149:47 | Before $"..." | | +| Conditions.cs:149:13:149:48 | call to method WriteLine | Conditions.cs:149:13:149:48 | After call to method WriteLine | | +| Conditions.cs:149:13:149:49 | ...; | Conditions.cs:149:13:149:48 | Before call to method WriteLine | | +| Conditions.cs:149:13:149:49 | After ...; | Conditions.cs:146:9:149:49 | After if (...) ... | | +| Conditions.cs:149:38:149:47 | $"..." | Conditions.cs:149:38:149:47 | After $"..." | | +| Conditions.cs:149:38:149:47 | After $"..." | Conditions.cs:149:13:149:48 | call to method WriteLine | | +| Conditions.cs:149:38:149:47 | Before $"..." | Conditions.cs:149:40:149:43 | "b = " | | +| Conditions.cs:149:40:149:43 | "b = " | Conditions.cs:149:44:149:46 | Before {...} | | +| Conditions.cs:149:44:149:46 | After {...} | Conditions.cs:149:38:149:47 | $"..." | | +| Conditions.cs:149:44:149:46 | Before {...} | Conditions.cs:149:45:149:45 | access to local variable s | | +| Conditions.cs:149:44:149:46 | {...} | Conditions.cs:149:44:149:46 | After {...} | | | Conditions.cs:149:45:149:45 | access to local variable s | Conditions.cs:149:44:149:46 | {...} | | -| ExitMethods.cs:6:7:6:17 | call to constructor Object | ExitMethods.cs:6:7:6:17 | {...} | | -| ExitMethods.cs:6:7:6:17 | call to method | ExitMethods.cs:6:7:6:17 | call to constructor Object | | -| ExitMethods.cs:6:7:6:17 | enter ExitMethods | ExitMethods.cs:6:7:6:17 | this access | | -| ExitMethods.cs:6:7:6:17 | exit ExitMethods (normal) | ExitMethods.cs:6:7:6:17 | exit ExitMethods | | +| DefaultParam.cs:1:7:1:18 | After call to constructor Object | DefaultParam.cs:1:7:1:18 | {...} | | +| DefaultParam.cs:1:7:1:18 | After call to method | DefaultParam.cs:1:7:1:18 | Before call to constructor Object | | +| DefaultParam.cs:1:7:1:18 | Before call to constructor Object | DefaultParam.cs:1:7:1:18 | call to constructor Object | | +| DefaultParam.cs:1:7:1:18 | Before call to method | DefaultParam.cs:1:7:1:18 | this access | | +| DefaultParam.cs:1:7:1:18 | Entry | DefaultParam.cs:1:7:1:18 | Before call to method | | +| DefaultParam.cs:1:7:1:18 | Normal Exit | DefaultParam.cs:1:7:1:18 | Exit | | +| DefaultParam.cs:1:7:1:18 | call to constructor Object | DefaultParam.cs:1:7:1:18 | After call to constructor Object | | +| DefaultParam.cs:1:7:1:18 | call to method | DefaultParam.cs:1:7:1:18 | After call to method | | +| DefaultParam.cs:1:7:1:18 | this access | DefaultParam.cs:1:7:1:18 | call to method | | +| DefaultParam.cs:1:7:1:18 | {...} | DefaultParam.cs:1:7:1:18 | Normal Exit | | +| DefaultParam.cs:3:12:3:13 | Entry | DefaultParam.cs:3:20:3:20 | b | | +| DefaultParam.cs:3:12:3:13 | Normal Exit | DefaultParam.cs:3:12:3:13 | Exit | | +| DefaultParam.cs:3:20:3:20 | b | DefaultParam.cs:3:30:3:30 | s | | +| DefaultParam.cs:3:30:3:30 | After s [match] | DefaultParam.cs:3:42:3:42 | i | | +| DefaultParam.cs:3:30:3:30 | After s [no-match] | DefaultParam.cs:3:34:3:35 | "" | | +| DefaultParam.cs:3:30:3:30 | s | DefaultParam.cs:3:30:3:30 | After s [match] | match | +| DefaultParam.cs:3:30:3:30 | s | DefaultParam.cs:3:30:3:30 | After s [no-match] | no-match | +| DefaultParam.cs:3:34:3:35 | "" | DefaultParam.cs:3:42:3:42 | i | | +| DefaultParam.cs:3:42:3:42 | After i [match] | DefaultParam.cs:4:5:6:5 | {...} | | +| DefaultParam.cs:3:42:3:42 | After i [no-match] | DefaultParam.cs:3:46:3:46 | 0 | | +| DefaultParam.cs:3:42:3:42 | i | DefaultParam.cs:3:42:3:42 | After i [match] | match | +| DefaultParam.cs:3:42:3:42 | i | DefaultParam.cs:3:42:3:42 | After i [no-match] | no-match | +| DefaultParam.cs:3:46:3:46 | 0 | DefaultParam.cs:4:5:6:5 | {...} | | +| DefaultParam.cs:4:5:6:5 | {...} | DefaultParam.cs:5:9:5:25 | Before return ...; | | +| DefaultParam.cs:5:9:5:25 | Before return ...; | DefaultParam.cs:5:16:5:24 | Before ... + ... | | +| DefaultParam.cs:5:9:5:25 | return ...; | DefaultParam.cs:3:12:3:13 | Normal Exit | return | +| DefaultParam.cs:5:16:5:16 | (...) ... | DefaultParam.cs:5:16:5:16 | After (...) ... | | +| DefaultParam.cs:5:16:5:16 | After (...) ... | DefaultParam.cs:5:20:5:20 | access to parameter s | | +| DefaultParam.cs:5:16:5:16 | Before (...) ... | DefaultParam.cs:5:16:5:16 | access to parameter b | | +| DefaultParam.cs:5:16:5:16 | access to parameter b | DefaultParam.cs:5:16:5:16 | (...) ... | | +| DefaultParam.cs:5:16:5:20 | ... + ... | DefaultParam.cs:5:16:5:20 | After ... + ... | | +| DefaultParam.cs:5:16:5:20 | After ... + ... | DefaultParam.cs:5:24:5:24 | Before (...) ... | | +| DefaultParam.cs:5:16:5:20 | Before ... + ... | DefaultParam.cs:5:16:5:16 | Before (...) ... | | +| DefaultParam.cs:5:16:5:24 | ... + ... | DefaultParam.cs:5:16:5:24 | After ... + ... | | +| DefaultParam.cs:5:16:5:24 | After ... + ... | DefaultParam.cs:5:9:5:25 | return ...; | | +| DefaultParam.cs:5:16:5:24 | Before ... + ... | DefaultParam.cs:5:16:5:20 | Before ... + ... | | +| DefaultParam.cs:5:20:5:20 | access to parameter s | DefaultParam.cs:5:16:5:20 | ... + ... | | +| DefaultParam.cs:5:24:5:24 | (...) ... | DefaultParam.cs:5:24:5:24 | After (...) ... | | +| DefaultParam.cs:5:24:5:24 | After (...) ... | DefaultParam.cs:5:16:5:24 | ... + ... | | +| DefaultParam.cs:5:24:5:24 | Before (...) ... | DefaultParam.cs:5:24:5:24 | access to parameter i | | +| DefaultParam.cs:5:24:5:24 | access to parameter i | DefaultParam.cs:5:24:5:24 | (...) ... | | +| ExitMethods.cs:6:7:6:17 | After call to constructor Object | ExitMethods.cs:6:7:6:17 | {...} | | +| ExitMethods.cs:6:7:6:17 | After call to method | ExitMethods.cs:6:7:6:17 | Before call to constructor Object | | +| ExitMethods.cs:6:7:6:17 | Before call to constructor Object | ExitMethods.cs:6:7:6:17 | call to constructor Object | | +| ExitMethods.cs:6:7:6:17 | Before call to method | ExitMethods.cs:6:7:6:17 | this access | | +| ExitMethods.cs:6:7:6:17 | Entry | ExitMethods.cs:6:7:6:17 | Before call to method | | +| ExitMethods.cs:6:7:6:17 | Normal Exit | ExitMethods.cs:6:7:6:17 | Exit | | +| ExitMethods.cs:6:7:6:17 | call to constructor Object | ExitMethods.cs:6:7:6:17 | After call to constructor Object | | +| ExitMethods.cs:6:7:6:17 | call to method | ExitMethods.cs:6:7:6:17 | After call to method | | | ExitMethods.cs:6:7:6:17 | this access | ExitMethods.cs:6:7:6:17 | call to method | | -| ExitMethods.cs:6:7:6:17 | {...} | ExitMethods.cs:6:7:6:17 | exit ExitMethods (normal) | | -| ExitMethods.cs:8:10:8:11 | enter M1 | ExitMethods.cs:9:5:12:5 | {...} | | -| ExitMethods.cs:8:10:8:11 | exit M1 (normal) | ExitMethods.cs:8:10:8:11 | exit M1 | | +| ExitMethods.cs:6:7:6:17 | {...} | ExitMethods.cs:6:7:6:17 | Normal Exit | | +| ExitMethods.cs:8:10:8:11 | Entry | ExitMethods.cs:9:5:12:5 | {...} | | +| ExitMethods.cs:8:10:8:11 | Normal Exit | ExitMethods.cs:8:10:8:11 | Exit | | | ExitMethods.cs:9:5:12:5 | {...} | ExitMethods.cs:10:9:10:25 | ...; | | -| ExitMethods.cs:10:9:10:24 | call to method ErrorMaybe | ExitMethods.cs:11:9:11:15 | return ...; | | -| ExitMethods.cs:10:9:10:25 | ...; | ExitMethods.cs:10:20:10:23 | true | | +| ExitMethods.cs:10:9:10:24 | After call to method ErrorMaybe | ExitMethods.cs:10:9:10:25 | After ...; | | +| ExitMethods.cs:10:9:10:24 | Before call to method ErrorMaybe | ExitMethods.cs:10:20:10:23 | true | | +| ExitMethods.cs:10:9:10:24 | call to method ErrorMaybe | ExitMethods.cs:10:9:10:24 | After call to method ErrorMaybe | | +| ExitMethods.cs:10:9:10:25 | ...; | ExitMethods.cs:10:9:10:24 | Before call to method ErrorMaybe | | +| ExitMethods.cs:10:9:10:25 | After ...; | ExitMethods.cs:11:9:11:15 | Before return ...; | | | ExitMethods.cs:10:20:10:23 | true | ExitMethods.cs:10:9:10:24 | call to method ErrorMaybe | | -| ExitMethods.cs:11:9:11:15 | return ...; | ExitMethods.cs:8:10:8:11 | exit M1 (normal) | return | -| ExitMethods.cs:14:10:14:11 | enter M2 | ExitMethods.cs:15:5:18:5 | {...} | | -| ExitMethods.cs:14:10:14:11 | exit M2 (normal) | ExitMethods.cs:14:10:14:11 | exit M2 | | +| ExitMethods.cs:11:9:11:15 | Before return ...; | ExitMethods.cs:11:9:11:15 | return ...; | | +| ExitMethods.cs:11:9:11:15 | return ...; | ExitMethods.cs:8:10:8:11 | Normal Exit | return | +| ExitMethods.cs:14:10:14:11 | Entry | ExitMethods.cs:15:5:18:5 | {...} | | +| ExitMethods.cs:14:10:14:11 | Normal Exit | ExitMethods.cs:14:10:14:11 | Exit | | | ExitMethods.cs:15:5:18:5 | {...} | ExitMethods.cs:16:9:16:26 | ...; | | -| ExitMethods.cs:16:9:16:25 | call to method ErrorMaybe | ExitMethods.cs:17:9:17:15 | return ...; | | -| ExitMethods.cs:16:9:16:26 | ...; | ExitMethods.cs:16:20:16:24 | false | | +| ExitMethods.cs:16:9:16:25 | After call to method ErrorMaybe | ExitMethods.cs:16:9:16:26 | After ...; | | +| ExitMethods.cs:16:9:16:25 | Before call to method ErrorMaybe | ExitMethods.cs:16:20:16:24 | false | | +| ExitMethods.cs:16:9:16:25 | call to method ErrorMaybe | ExitMethods.cs:16:9:16:25 | After call to method ErrorMaybe | | +| ExitMethods.cs:16:9:16:26 | ...; | ExitMethods.cs:16:9:16:25 | Before call to method ErrorMaybe | | +| ExitMethods.cs:16:9:16:26 | After ...; | ExitMethods.cs:17:9:17:15 | Before return ...; | | | ExitMethods.cs:16:20:16:24 | false | ExitMethods.cs:16:9:16:25 | call to method ErrorMaybe | | -| ExitMethods.cs:17:9:17:15 | return ...; | ExitMethods.cs:14:10:14:11 | exit M2 (normal) | return | -| ExitMethods.cs:20:10:20:11 | enter M3 | ExitMethods.cs:21:5:24:5 | {...} | | -| ExitMethods.cs:20:10:20:11 | exit M3 (abnormal) | ExitMethods.cs:20:10:20:11 | exit M3 | | +| ExitMethods.cs:17:9:17:15 | Before return ...; | ExitMethods.cs:17:9:17:15 | return ...; | | +| ExitMethods.cs:17:9:17:15 | return ...; | ExitMethods.cs:14:10:14:11 | Normal Exit | return | +| ExitMethods.cs:20:10:20:11 | Entry | ExitMethods.cs:21:5:24:5 | {...} | | +| ExitMethods.cs:20:10:20:11 | Exceptional Exit | ExitMethods.cs:20:10:20:11 | Exit | | | ExitMethods.cs:21:5:24:5 | {...} | ExitMethods.cs:22:9:22:26 | ...; | | -| ExitMethods.cs:22:9:22:25 | call to method ErrorAlways | ExitMethods.cs:20:10:20:11 | exit M3 (abnormal) | exception | -| ExitMethods.cs:22:9:22:26 | ...; | ExitMethods.cs:22:21:22:24 | true | | +| ExitMethods.cs:22:9:22:25 | Before call to method ErrorAlways | ExitMethods.cs:22:21:22:24 | true | | +| ExitMethods.cs:22:9:22:25 | call to method ErrorAlways | ExitMethods.cs:20:10:20:11 | Exceptional Exit | exception | +| ExitMethods.cs:22:9:22:26 | ...; | ExitMethods.cs:22:9:22:25 | Before call to method ErrorAlways | | | ExitMethods.cs:22:21:22:24 | true | ExitMethods.cs:22:9:22:25 | call to method ErrorAlways | | -| ExitMethods.cs:26:10:26:11 | enter M4 | ExitMethods.cs:27:5:30:5 | {...} | | -| ExitMethods.cs:26:10:26:11 | exit M4 (abnormal) | ExitMethods.cs:26:10:26:11 | exit M4 | | +| ExitMethods.cs:26:10:26:11 | Entry | ExitMethods.cs:27:5:30:5 | {...} | | +| ExitMethods.cs:26:10:26:11 | Exceptional Exit | ExitMethods.cs:26:10:26:11 | Exit | | | ExitMethods.cs:27:5:30:5 | {...} | ExitMethods.cs:28:9:28:15 | ...; | | -| ExitMethods.cs:28:9:28:14 | call to method Exit | ExitMethods.cs:26:10:26:11 | exit M4 (abnormal) | exit | +| ExitMethods.cs:28:9:28:14 | Before call to method Exit | ExitMethods.cs:28:9:28:14 | this access | | +| ExitMethods.cs:28:9:28:14 | call to method Exit | ExitMethods.cs:26:10:26:11 | Exceptional Exit | exception | | ExitMethods.cs:28:9:28:14 | this access | ExitMethods.cs:28:9:28:14 | call to method Exit | | -| ExitMethods.cs:28:9:28:15 | ...; | ExitMethods.cs:28:9:28:14 | this access | | -| ExitMethods.cs:32:10:32:11 | enter M5 | ExitMethods.cs:33:5:36:5 | {...} | | -| ExitMethods.cs:32:10:32:11 | exit M5 (abnormal) | ExitMethods.cs:32:10:32:11 | exit M5 | | +| ExitMethods.cs:28:9:28:15 | ...; | ExitMethods.cs:28:9:28:14 | Before call to method Exit | | +| ExitMethods.cs:32:10:32:11 | Entry | ExitMethods.cs:33:5:36:5 | {...} | | +| ExitMethods.cs:32:10:32:11 | Exceptional Exit | ExitMethods.cs:32:10:32:11 | Exit | | | ExitMethods.cs:33:5:36:5 | {...} | ExitMethods.cs:34:9:34:26 | ...; | | -| ExitMethods.cs:34:9:34:25 | call to method ApplicationExit | ExitMethods.cs:32:10:32:11 | exit M5 (abnormal) | exit | +| ExitMethods.cs:34:9:34:25 | Before call to method ApplicationExit | ExitMethods.cs:34:9:34:25 | this access | | +| ExitMethods.cs:34:9:34:25 | call to method ApplicationExit | ExitMethods.cs:32:10:32:11 | Exceptional Exit | exception | | ExitMethods.cs:34:9:34:25 | this access | ExitMethods.cs:34:9:34:25 | call to method ApplicationExit | | -| ExitMethods.cs:34:9:34:26 | ...; | ExitMethods.cs:34:9:34:25 | this access | | -| ExitMethods.cs:38:10:38:11 | enter M6 | ExitMethods.cs:39:5:52:5 | {...} | | -| ExitMethods.cs:38:10:38:11 | exit M6 (normal) | ExitMethods.cs:38:10:38:11 | exit M6 | | +| ExitMethods.cs:34:9:34:26 | ...; | ExitMethods.cs:34:9:34:25 | Before call to method ApplicationExit | | +| ExitMethods.cs:38:10:38:11 | Entry | ExitMethods.cs:39:5:52:5 | {...} | | +| ExitMethods.cs:38:10:38:11 | Exceptional Exit | ExitMethods.cs:38:10:38:11 | Exit | | +| ExitMethods.cs:38:10:38:11 | Normal Exit | ExitMethods.cs:38:10:38:11 | Exit | | | ExitMethods.cs:39:5:52:5 | {...} | ExitMethods.cs:40:9:51:9 | try {...} ... | | | ExitMethods.cs:40:9:51:9 | try {...} ... | ExitMethods.cs:41:9:43:9 | {...} | | | ExitMethods.cs:41:9:43:9 | {...} | ExitMethods.cs:42:13:42:31 | ...; | | +| ExitMethods.cs:42:13:42:30 | Before call to method ErrorAlways | ExitMethods.cs:42:25:42:29 | false | | | ExitMethods.cs:42:13:42:30 | call to method ErrorAlways | ExitMethods.cs:44:9:47:9 | catch (...) {...} | exception | -| ExitMethods.cs:42:13:42:31 | ...; | ExitMethods.cs:42:25:42:29 | false | | +| ExitMethods.cs:42:13:42:31 | ...; | ExitMethods.cs:42:13:42:30 | Before call to method ErrorAlways | | | ExitMethods.cs:42:25:42:29 | false | ExitMethods.cs:42:13:42:30 | call to method ErrorAlways | | -| ExitMethods.cs:44:9:47:9 | catch (...) {...} | ExitMethods.cs:45:9:47:9 | {...} | match | -| ExitMethods.cs:44:9:47:9 | catch (...) {...} | ExitMethods.cs:48:9:51:9 | catch (...) {...} | no-match | -| ExitMethods.cs:45:9:47:9 | {...} | ExitMethods.cs:46:13:46:19 | return ...; | | -| ExitMethods.cs:46:13:46:19 | return ...; | ExitMethods.cs:38:10:38:11 | exit M6 (normal) | return | -| ExitMethods.cs:48:9:51:9 | catch (...) {...} | ExitMethods.cs:49:9:51:9 | {...} | match | -| ExitMethods.cs:49:9:51:9 | {...} | ExitMethods.cs:50:13:50:19 | return ...; | | -| ExitMethods.cs:50:13:50:19 | return ...; | ExitMethods.cs:38:10:38:11 | exit M6 (normal) | return | -| ExitMethods.cs:54:10:54:11 | enter M7 | ExitMethods.cs:55:5:58:5 | {...} | | -| ExitMethods.cs:54:10:54:11 | exit M7 (abnormal) | ExitMethods.cs:54:10:54:11 | exit M7 | | +| ExitMethods.cs:44:9:47:9 | After catch (...) {...} [match] | ExitMethods.cs:45:9:47:9 | {...} | | +| ExitMethods.cs:44:9:47:9 | After catch (...) {...} [no-match] | ExitMethods.cs:48:9:51:9 | catch (...) {...} | | +| ExitMethods.cs:44:9:47:9 | catch (...) {...} | ExitMethods.cs:44:9:47:9 | After catch (...) {...} [match] | match | +| ExitMethods.cs:44:9:47:9 | catch (...) {...} | ExitMethods.cs:44:9:47:9 | After catch (...) {...} [no-match] | no-match | +| ExitMethods.cs:45:9:47:9 | {...} | ExitMethods.cs:46:13:46:19 | Before return ...; | | +| ExitMethods.cs:46:13:46:19 | Before return ...; | ExitMethods.cs:46:13:46:19 | return ...; | | +| ExitMethods.cs:46:13:46:19 | return ...; | ExitMethods.cs:38:10:38:11 | Normal Exit | return | +| ExitMethods.cs:48:9:51:9 | After catch (...) {...} [match] | ExitMethods.cs:49:9:51:9 | {...} | | +| ExitMethods.cs:48:9:51:9 | After catch (...) {...} [no-match] | ExitMethods.cs:38:10:38:11 | Exceptional Exit | exception | +| ExitMethods.cs:48:9:51:9 | catch (...) {...} | ExitMethods.cs:48:9:51:9 | After catch (...) {...} [match] | match | +| ExitMethods.cs:48:9:51:9 | catch (...) {...} | ExitMethods.cs:48:9:51:9 | After catch (...) {...} [no-match] | no-match | +| ExitMethods.cs:49:9:51:9 | {...} | ExitMethods.cs:50:13:50:19 | Before return ...; | | +| ExitMethods.cs:50:13:50:19 | Before return ...; | ExitMethods.cs:50:13:50:19 | return ...; | | +| ExitMethods.cs:50:13:50:19 | return ...; | ExitMethods.cs:38:10:38:11 | Normal Exit | return | +| ExitMethods.cs:54:10:54:11 | Entry | ExitMethods.cs:55:5:58:5 | {...} | | +| ExitMethods.cs:54:10:54:11 | Exceptional Exit | ExitMethods.cs:54:10:54:11 | Exit | | | ExitMethods.cs:55:5:58:5 | {...} | ExitMethods.cs:56:9:56:23 | ...; | | -| ExitMethods.cs:56:9:56:22 | call to method ErrorAlways2 | ExitMethods.cs:54:10:54:11 | exit M7 (abnormal) | exception | -| ExitMethods.cs:56:9:56:23 | ...; | ExitMethods.cs:56:9:56:22 | call to method ErrorAlways2 | | -| ExitMethods.cs:60:10:60:11 | enter M8 | ExitMethods.cs:61:5:64:5 | {...} | | -| ExitMethods.cs:60:10:60:11 | exit M8 (abnormal) | ExitMethods.cs:60:10:60:11 | exit M8 | | +| ExitMethods.cs:56:9:56:22 | Before call to method ErrorAlways2 | ExitMethods.cs:56:9:56:22 | call to method ErrorAlways2 | | +| ExitMethods.cs:56:9:56:22 | call to method ErrorAlways2 | ExitMethods.cs:54:10:54:11 | Exceptional Exit | exception | +| ExitMethods.cs:56:9:56:23 | ...; | ExitMethods.cs:56:9:56:22 | Before call to method ErrorAlways2 | | +| ExitMethods.cs:60:10:60:11 | Entry | ExitMethods.cs:61:5:64:5 | {...} | | +| ExitMethods.cs:60:10:60:11 | Exceptional Exit | ExitMethods.cs:60:10:60:11 | Exit | | | ExitMethods.cs:61:5:64:5 | {...} | ExitMethods.cs:62:9:62:23 | ...; | | -| ExitMethods.cs:62:9:62:22 | call to method ErrorAlways3 | ExitMethods.cs:60:10:60:11 | exit M8 (abnormal) | exception | -| ExitMethods.cs:62:9:62:23 | ...; | ExitMethods.cs:62:9:62:22 | call to method ErrorAlways3 | | -| ExitMethods.cs:66:17:66:26 | enter ErrorMaybe | ExitMethods.cs:67:5:70:5 | {...} | | -| ExitMethods.cs:66:17:66:26 | exit ErrorMaybe (abnormal) | ExitMethods.cs:66:17:66:26 | exit ErrorMaybe | | -| ExitMethods.cs:66:17:66:26 | exit ErrorMaybe (normal) | ExitMethods.cs:66:17:66:26 | exit ErrorMaybe | | +| ExitMethods.cs:62:9:62:22 | Before call to method ErrorAlways3 | ExitMethods.cs:62:9:62:22 | call to method ErrorAlways3 | | +| ExitMethods.cs:62:9:62:22 | call to method ErrorAlways3 | ExitMethods.cs:60:10:60:11 | Exceptional Exit | exception | +| ExitMethods.cs:62:9:62:23 | ...; | ExitMethods.cs:62:9:62:22 | Before call to method ErrorAlways3 | | +| ExitMethods.cs:66:17:66:26 | Entry | ExitMethods.cs:66:33:66:33 | b | | +| ExitMethods.cs:66:17:66:26 | Exceptional Exit | ExitMethods.cs:66:17:66:26 | Exit | | +| ExitMethods.cs:66:17:66:26 | Normal Exit | ExitMethods.cs:66:17:66:26 | Exit | | +| ExitMethods.cs:66:33:66:33 | b | ExitMethods.cs:67:5:70:5 | {...} | | +| ExitMethods.cs:67:5:70:5 | After {...} | ExitMethods.cs:66:17:66:26 | Normal Exit | | | ExitMethods.cs:67:5:70:5 | {...} | ExitMethods.cs:68:9:69:34 | if (...) ... | | +| ExitMethods.cs:68:9:69:34 | After if (...) ... | ExitMethods.cs:67:5:70:5 | After {...} | | | ExitMethods.cs:68:9:69:34 | if (...) ... | ExitMethods.cs:68:13:68:13 | access to parameter b | | -| ExitMethods.cs:68:13:68:13 | access to parameter b | ExitMethods.cs:66:17:66:26 | exit ErrorMaybe (normal) | false | -| ExitMethods.cs:68:13:68:13 | access to parameter b | ExitMethods.cs:69:19:69:33 | object creation of type Exception | true | -| ExitMethods.cs:69:13:69:34 | throw ...; | ExitMethods.cs:66:17:66:26 | exit ErrorMaybe (abnormal) | exception | -| ExitMethods.cs:69:19:69:33 | object creation of type Exception | ExitMethods.cs:69:13:69:34 | throw ...; | | -| ExitMethods.cs:72:17:72:27 | enter ErrorAlways | ExitMethods.cs:73:5:78:5 | {...} | | -| ExitMethods.cs:72:17:72:27 | exit ErrorAlways (abnormal) | ExitMethods.cs:72:17:72:27 | exit ErrorAlways | | +| ExitMethods.cs:68:13:68:13 | After access to parameter b [false] | ExitMethods.cs:68:9:69:34 | After if (...) ... | | +| ExitMethods.cs:68:13:68:13 | After access to parameter b [true] | ExitMethods.cs:69:13:69:34 | Before throw ...; | | +| ExitMethods.cs:68:13:68:13 | access to parameter b | ExitMethods.cs:68:13:68:13 | After access to parameter b [false] | false | +| ExitMethods.cs:68:13:68:13 | access to parameter b | ExitMethods.cs:68:13:68:13 | After access to parameter b [true] | true | +| ExitMethods.cs:69:13:69:34 | Before throw ...; | ExitMethods.cs:69:19:69:33 | Before object creation of type Exception | | +| ExitMethods.cs:69:13:69:34 | throw ...; | ExitMethods.cs:66:17:66:26 | Exceptional Exit | exception | +| ExitMethods.cs:69:19:69:33 | After object creation of type Exception | ExitMethods.cs:69:13:69:34 | throw ...; | | +| ExitMethods.cs:69:19:69:33 | Before object creation of type Exception | ExitMethods.cs:69:19:69:33 | object creation of type Exception | | +| ExitMethods.cs:69:19:69:33 | object creation of type Exception | ExitMethods.cs:69:19:69:33 | After object creation of type Exception | | +| ExitMethods.cs:72:17:72:27 | Entry | ExitMethods.cs:72:34:72:34 | b | | +| ExitMethods.cs:72:17:72:27 | Exceptional Exit | ExitMethods.cs:72:17:72:27 | Exit | | +| ExitMethods.cs:72:34:72:34 | b | ExitMethods.cs:73:5:78:5 | {...} | | | ExitMethods.cs:73:5:78:5 | {...} | ExitMethods.cs:74:9:77:45 | if (...) ... | | | ExitMethods.cs:74:9:77:45 | if (...) ... | ExitMethods.cs:74:13:74:13 | access to parameter b | | -| ExitMethods.cs:74:13:74:13 | access to parameter b | ExitMethods.cs:75:19:75:33 | object creation of type Exception | true | -| ExitMethods.cs:74:13:74:13 | access to parameter b | ExitMethods.cs:77:41:77:43 | "b" | false | -| ExitMethods.cs:75:13:75:34 | throw ...; | ExitMethods.cs:72:17:72:27 | exit ErrorAlways (abnormal) | exception | -| ExitMethods.cs:75:19:75:33 | object creation of type Exception | ExitMethods.cs:75:13:75:34 | throw ...; | | -| ExitMethods.cs:77:13:77:45 | throw ...; | ExitMethods.cs:72:17:72:27 | exit ErrorAlways (abnormal) | exception | -| ExitMethods.cs:77:19:77:44 | object creation of type ArgumentException | ExitMethods.cs:77:13:77:45 | throw ...; | | +| ExitMethods.cs:74:13:74:13 | After access to parameter b [false] | ExitMethods.cs:77:13:77:45 | Before throw ...; | | +| ExitMethods.cs:74:13:74:13 | After access to parameter b [true] | ExitMethods.cs:75:13:75:34 | Before throw ...; | | +| ExitMethods.cs:74:13:74:13 | access to parameter b | ExitMethods.cs:74:13:74:13 | After access to parameter b [false] | false | +| ExitMethods.cs:74:13:74:13 | access to parameter b | ExitMethods.cs:74:13:74:13 | After access to parameter b [true] | true | +| ExitMethods.cs:75:13:75:34 | Before throw ...; | ExitMethods.cs:75:19:75:33 | Before object creation of type Exception | | +| ExitMethods.cs:75:13:75:34 | throw ...; | ExitMethods.cs:72:17:72:27 | Exceptional Exit | exception | +| ExitMethods.cs:75:19:75:33 | After object creation of type Exception | ExitMethods.cs:75:13:75:34 | throw ...; | | +| ExitMethods.cs:75:19:75:33 | Before object creation of type Exception | ExitMethods.cs:75:19:75:33 | object creation of type Exception | | +| ExitMethods.cs:75:19:75:33 | object creation of type Exception | ExitMethods.cs:75:19:75:33 | After object creation of type Exception | | +| ExitMethods.cs:77:13:77:45 | Before throw ...; | ExitMethods.cs:77:19:77:44 | Before object creation of type ArgumentException | | +| ExitMethods.cs:77:13:77:45 | throw ...; | ExitMethods.cs:72:17:72:27 | Exceptional Exit | exception | +| ExitMethods.cs:77:19:77:44 | After object creation of type ArgumentException | ExitMethods.cs:77:13:77:45 | throw ...; | | +| ExitMethods.cs:77:19:77:44 | Before object creation of type ArgumentException | ExitMethods.cs:77:41:77:43 | "b" | | +| ExitMethods.cs:77:19:77:44 | object creation of type ArgumentException | ExitMethods.cs:77:19:77:44 | After object creation of type ArgumentException | | | ExitMethods.cs:77:41:77:43 | "b" | ExitMethods.cs:77:19:77:44 | object creation of type ArgumentException | | -| ExitMethods.cs:80:17:80:28 | enter ErrorAlways2 | ExitMethods.cs:81:5:83:5 | {...} | | -| ExitMethods.cs:80:17:80:28 | exit ErrorAlways2 (abnormal) | ExitMethods.cs:80:17:80:28 | exit ErrorAlways2 | | -| ExitMethods.cs:81:5:83:5 | {...} | ExitMethods.cs:82:15:82:29 | object creation of type Exception | | -| ExitMethods.cs:82:9:82:30 | throw ...; | ExitMethods.cs:80:17:80:28 | exit ErrorAlways2 (abnormal) | exception | -| ExitMethods.cs:82:15:82:29 | object creation of type Exception | ExitMethods.cs:82:9:82:30 | throw ...; | | -| ExitMethods.cs:85:17:85:28 | enter ErrorAlways3 | ExitMethods.cs:85:41:85:55 | object creation of type Exception | | -| ExitMethods.cs:85:17:85:28 | exit ErrorAlways3 (abnormal) | ExitMethods.cs:85:17:85:28 | exit ErrorAlways3 | | -| ExitMethods.cs:85:35:85:55 | throw ... | ExitMethods.cs:85:17:85:28 | exit ErrorAlways3 (abnormal) | exception | -| ExitMethods.cs:85:41:85:55 | object creation of type Exception | ExitMethods.cs:85:35:85:55 | throw ... | | -| ExitMethods.cs:87:10:87:13 | enter Exit | ExitMethods.cs:88:5:90:5 | {...} | | -| ExitMethods.cs:87:10:87:13 | exit Exit (abnormal) | ExitMethods.cs:87:10:87:13 | exit Exit | | +| ExitMethods.cs:80:17:80:28 | Entry | ExitMethods.cs:81:5:83:5 | {...} | | +| ExitMethods.cs:80:17:80:28 | Exceptional Exit | ExitMethods.cs:80:17:80:28 | Exit | | +| ExitMethods.cs:81:5:83:5 | {...} | ExitMethods.cs:82:9:82:30 | Before throw ...; | | +| ExitMethods.cs:82:9:82:30 | Before throw ...; | ExitMethods.cs:82:15:82:29 | Before object creation of type Exception | | +| ExitMethods.cs:82:9:82:30 | throw ...; | ExitMethods.cs:80:17:80:28 | Exceptional Exit | exception | +| ExitMethods.cs:82:15:82:29 | After object creation of type Exception | ExitMethods.cs:82:9:82:30 | throw ...; | | +| ExitMethods.cs:82:15:82:29 | Before object creation of type Exception | ExitMethods.cs:82:15:82:29 | object creation of type Exception | | +| ExitMethods.cs:82:15:82:29 | object creation of type Exception | ExitMethods.cs:82:15:82:29 | After object creation of type Exception | | +| ExitMethods.cs:85:17:85:28 | Entry | ExitMethods.cs:85:35:85:55 | Before throw ... | | +| ExitMethods.cs:85:17:85:28 | Exceptional Exit | ExitMethods.cs:85:17:85:28 | Exit | | +| ExitMethods.cs:85:35:85:55 | Before throw ... | ExitMethods.cs:85:41:85:55 | Before object creation of type Exception | | +| ExitMethods.cs:85:35:85:55 | throw ... | ExitMethods.cs:85:17:85:28 | Exceptional Exit | exception | +| ExitMethods.cs:85:41:85:55 | After object creation of type Exception | ExitMethods.cs:85:35:85:55 | throw ... | | +| ExitMethods.cs:85:41:85:55 | Before object creation of type Exception | ExitMethods.cs:85:41:85:55 | object creation of type Exception | | +| ExitMethods.cs:85:41:85:55 | object creation of type Exception | ExitMethods.cs:85:41:85:55 | After object creation of type Exception | | +| ExitMethods.cs:87:10:87:13 | Entry | ExitMethods.cs:88:5:90:5 | {...} | | +| ExitMethods.cs:87:10:87:13 | Exceptional Exit | ExitMethods.cs:87:10:87:13 | Exit | | | ExitMethods.cs:88:5:90:5 | {...} | ExitMethods.cs:89:9:89:28 | ...; | | -| ExitMethods.cs:89:9:89:27 | call to method Exit | ExitMethods.cs:87:10:87:13 | exit Exit (abnormal) | exit | -| ExitMethods.cs:89:9:89:28 | ...; | ExitMethods.cs:89:26:89:26 | 0 | | +| ExitMethods.cs:89:9:89:27 | Before call to method Exit | ExitMethods.cs:89:26:89:26 | 0 | | +| ExitMethods.cs:89:9:89:27 | call to method Exit | ExitMethods.cs:87:10:87:13 | Exceptional Exit | exception | +| ExitMethods.cs:89:9:89:28 | ...; | ExitMethods.cs:89:9:89:27 | Before call to method Exit | | | ExitMethods.cs:89:26:89:26 | 0 | ExitMethods.cs:89:9:89:27 | call to method Exit | | -| ExitMethods.cs:92:10:92:18 | enter ExitInTry | ExitMethods.cs:93:5:103:5 | {...} | | -| ExitMethods.cs:92:10:92:18 | exit ExitInTry (abnormal) | ExitMethods.cs:92:10:92:18 | exit ExitInTry | | +| ExitMethods.cs:92:10:92:18 | Entry | ExitMethods.cs:93:5:103:5 | {...} | | +| ExitMethods.cs:92:10:92:18 | Exceptional Exit | ExitMethods.cs:92:10:92:18 | Exit | | +| ExitMethods.cs:92:10:92:18 | Normal Exit | ExitMethods.cs:92:10:92:18 | Exit | | +| ExitMethods.cs:93:5:103:5 | After {...} | ExitMethods.cs:92:10:92:18 | Normal Exit | | | ExitMethods.cs:93:5:103:5 | {...} | ExitMethods.cs:94:9:102:9 | try {...} ... | | +| ExitMethods.cs:94:9:102:9 | After try {...} ... | ExitMethods.cs:93:5:103:5 | After {...} | | | ExitMethods.cs:94:9:102:9 | try {...} ... | ExitMethods.cs:95:9:97:9 | {...} | | | ExitMethods.cs:95:9:97:9 | {...} | ExitMethods.cs:96:13:96:19 | ...; | | -| ExitMethods.cs:96:13:96:18 | call to method Exit | ExitMethods.cs:92:10:92:18 | exit ExitInTry (abnormal) | exit | +| ExitMethods.cs:96:13:96:18 | Before call to method Exit | ExitMethods.cs:96:13:96:18 | this access | | +| ExitMethods.cs:96:13:96:18 | call to method Exit | ExitMethods.cs:99:9:102:9 | {...} | exception | | ExitMethods.cs:96:13:96:18 | this access | ExitMethods.cs:96:13:96:18 | call to method Exit | | -| ExitMethods.cs:96:13:96:19 | ...; | ExitMethods.cs:96:13:96:18 | this access | | -| ExitMethods.cs:105:10:105:24 | enter ApplicationExit | ExitMethods.cs:106:5:108:5 | {...} | | -| ExitMethods.cs:105:10:105:24 | exit ApplicationExit (abnormal) | ExitMethods.cs:105:10:105:24 | exit ApplicationExit | | +| ExitMethods.cs:96:13:96:19 | ...; | ExitMethods.cs:96:13:96:18 | Before call to method Exit | | +| ExitMethods.cs:99:9:102:9 | After {...} | ExitMethods.cs:92:10:92:18 | Exceptional Exit | exception | +| ExitMethods.cs:99:9:102:9 | After {...} | ExitMethods.cs:94:9:102:9 | After try {...} ... | | +| ExitMethods.cs:99:9:102:9 | {...} | ExitMethods.cs:101:13:101:41 | ...; | | +| ExitMethods.cs:101:13:101:40 | After call to method WriteLine | ExitMethods.cs:101:13:101:41 | After ...; | | +| ExitMethods.cs:101:13:101:40 | Before call to method WriteLine | ExitMethods.cs:101:38:101:39 | "" | | +| ExitMethods.cs:101:13:101:40 | call to method WriteLine | ExitMethods.cs:101:13:101:40 | After call to method WriteLine | | +| ExitMethods.cs:101:13:101:41 | ...; | ExitMethods.cs:101:13:101:40 | Before call to method WriteLine | | +| ExitMethods.cs:101:13:101:41 | After ...; | ExitMethods.cs:99:9:102:9 | After {...} | | +| ExitMethods.cs:101:38:101:39 | "" | ExitMethods.cs:101:13:101:40 | call to method WriteLine | | +| ExitMethods.cs:105:10:105:24 | Entry | ExitMethods.cs:106:5:108:5 | {...} | | +| ExitMethods.cs:105:10:105:24 | Exceptional Exit | ExitMethods.cs:105:10:105:24 | Exit | | | ExitMethods.cs:106:5:108:5 | {...} | ExitMethods.cs:107:9:107:48 | ...; | | -| ExitMethods.cs:107:9:107:47 | call to method Exit | ExitMethods.cs:105:10:105:24 | exit ApplicationExit (abnormal) | exit | -| ExitMethods.cs:107:9:107:48 | ...; | ExitMethods.cs:107:9:107:47 | call to method Exit | | -| ExitMethods.cs:110:13:110:21 | enter ThrowExpr | ExitMethods.cs:111:5:113:5 | {...} | | -| ExitMethods.cs:110:13:110:21 | exit ThrowExpr (abnormal) | ExitMethods.cs:110:13:110:21 | exit ThrowExpr | | -| ExitMethods.cs:110:13:110:21 | exit ThrowExpr (normal) | ExitMethods.cs:110:13:110:21 | exit ThrowExpr | | -| ExitMethods.cs:111:5:113:5 | {...} | ExitMethods.cs:112:16:112:20 | access to parameter input | | -| ExitMethods.cs:112:9:112:77 | return ...; | ExitMethods.cs:110:13:110:21 | exit ThrowExpr (normal) | return | -| ExitMethods.cs:112:16:112:20 | access to parameter input | ExitMethods.cs:112:25:112:25 | 0 | | -| ExitMethods.cs:112:16:112:25 | ... != ... | ExitMethods.cs:112:29:112:29 | 1 | true | -| ExitMethods.cs:112:16:112:25 | ... != ... | ExitMethods.cs:112:69:112:75 | "input" | false | -| ExitMethods.cs:112:16:112:76 | ... ? ... : ... | ExitMethods.cs:112:9:112:77 | return ...; | | +| ExitMethods.cs:107:9:107:47 | Before call to method Exit | ExitMethods.cs:107:9:107:47 | call to method Exit | | +| ExitMethods.cs:107:9:107:47 | call to method Exit | ExitMethods.cs:105:10:105:24 | Exceptional Exit | exception | +| ExitMethods.cs:107:9:107:48 | ...; | ExitMethods.cs:107:9:107:47 | Before call to method Exit | | +| ExitMethods.cs:110:13:110:21 | Entry | ExitMethods.cs:110:31:110:35 | input | | +| ExitMethods.cs:110:13:110:21 | Exceptional Exit | ExitMethods.cs:110:13:110:21 | Exit | | +| ExitMethods.cs:110:13:110:21 | Normal Exit | ExitMethods.cs:110:13:110:21 | Exit | | +| ExitMethods.cs:110:31:110:35 | input | ExitMethods.cs:111:5:113:5 | {...} | | +| ExitMethods.cs:111:5:113:5 | {...} | ExitMethods.cs:112:9:112:77 | Before return ...; | | +| ExitMethods.cs:112:9:112:77 | Before return ...; | ExitMethods.cs:112:16:112:76 | ... ? ... : ... | | +| ExitMethods.cs:112:9:112:77 | return ...; | ExitMethods.cs:110:13:110:21 | Normal Exit | return | +| ExitMethods.cs:112:16:112:20 | access to parameter input | ExitMethods.cs:112:25:112:25 | Before (...) ... | | +| ExitMethods.cs:112:16:112:25 | ... != ... | ExitMethods.cs:112:16:112:25 | After ... != ... [false] | false | +| ExitMethods.cs:112:16:112:25 | ... != ... | ExitMethods.cs:112:16:112:25 | After ... != ... [true] | true | +| ExitMethods.cs:112:16:112:25 | After ... != ... [false] | ExitMethods.cs:112:41:112:76 | Before throw ... | | +| ExitMethods.cs:112:16:112:25 | After ... != ... [true] | ExitMethods.cs:112:29:112:37 | Before ... / ... | | +| ExitMethods.cs:112:16:112:25 | Before ... != ... | ExitMethods.cs:112:16:112:20 | access to parameter input | | +| ExitMethods.cs:112:16:112:76 | ... ? ... : ... | ExitMethods.cs:112:16:112:25 | Before ... != ... | | +| ExitMethods.cs:112:16:112:76 | After ... ? ... : ... | ExitMethods.cs:112:9:112:77 | return ...; | | | ExitMethods.cs:112:25:112:25 | 0 | ExitMethods.cs:112:25:112:25 | (...) ... | | -| ExitMethods.cs:112:25:112:25 | (...) ... | ExitMethods.cs:112:16:112:25 | ... != ... | | +| ExitMethods.cs:112:25:112:25 | (...) ... | ExitMethods.cs:112:25:112:25 | After (...) ... | | +| ExitMethods.cs:112:25:112:25 | After (...) ... | ExitMethods.cs:112:16:112:25 | ... != ... | | +| ExitMethods.cs:112:25:112:25 | Before (...) ... | ExitMethods.cs:112:25:112:25 | 0 | | | ExitMethods.cs:112:29:112:29 | 1 | ExitMethods.cs:112:29:112:29 | (...) ... | | -| ExitMethods.cs:112:29:112:29 | (...) ... | ExitMethods.cs:112:33:112:37 | access to parameter input | | -| ExitMethods.cs:112:29:112:37 | ... / ... | ExitMethods.cs:112:16:112:76 | ... ? ... : ... | | +| ExitMethods.cs:112:29:112:29 | (...) ... | ExitMethods.cs:112:29:112:29 | After (...) ... | | +| ExitMethods.cs:112:29:112:29 | After (...) ... | ExitMethods.cs:112:33:112:37 | access to parameter input | | +| ExitMethods.cs:112:29:112:29 | Before (...) ... | ExitMethods.cs:112:29:112:29 | 1 | | +| ExitMethods.cs:112:29:112:37 | ... / ... | ExitMethods.cs:112:29:112:37 | After ... / ... | | +| ExitMethods.cs:112:29:112:37 | After ... / ... | ExitMethods.cs:112:16:112:76 | After ... ? ... : ... | | +| ExitMethods.cs:112:29:112:37 | Before ... / ... | ExitMethods.cs:112:29:112:29 | Before (...) ... | | | ExitMethods.cs:112:33:112:37 | access to parameter input | ExitMethods.cs:112:29:112:37 | ... / ... | | -| ExitMethods.cs:112:41:112:76 | throw ... | ExitMethods.cs:110:13:110:21 | exit ThrowExpr (abnormal) | exception | -| ExitMethods.cs:112:47:112:76 | object creation of type ArgumentException | ExitMethods.cs:112:41:112:76 | throw ... | | +| ExitMethods.cs:112:41:112:76 | Before throw ... | ExitMethods.cs:112:47:112:76 | Before object creation of type ArgumentException | | +| ExitMethods.cs:112:41:112:76 | throw ... | ExitMethods.cs:110:13:110:21 | Exceptional Exit | exception | +| ExitMethods.cs:112:47:112:76 | After object creation of type ArgumentException | ExitMethods.cs:112:41:112:76 | throw ... | | +| ExitMethods.cs:112:47:112:76 | Before object creation of type ArgumentException | ExitMethods.cs:112:69:112:75 | "input" | | +| ExitMethods.cs:112:47:112:76 | object creation of type ArgumentException | ExitMethods.cs:112:47:112:76 | After object creation of type ArgumentException | | | ExitMethods.cs:112:69:112:75 | "input" | ExitMethods.cs:112:47:112:76 | object creation of type ArgumentException | | -| ExitMethods.cs:115:16:115:34 | enter ExtensionMethodCall | ExitMethods.cs:116:5:118:5 | {...} | | -| ExitMethods.cs:115:16:115:34 | exit ExtensionMethodCall (normal) | ExitMethods.cs:115:16:115:34 | exit ExtensionMethodCall | | -| ExitMethods.cs:116:5:118:5 | {...} | ExitMethods.cs:117:16:117:16 | access to parameter s | | -| ExitMethods.cs:117:9:117:39 | return ...; | ExitMethods.cs:115:16:115:34 | exit ExtensionMethodCall (normal) | return | +| ExitMethods.cs:115:16:115:34 | Entry | ExitMethods.cs:115:43:115:43 | s | | +| ExitMethods.cs:115:16:115:34 | Normal Exit | ExitMethods.cs:115:16:115:34 | Exit | | +| ExitMethods.cs:115:43:115:43 | s | ExitMethods.cs:116:5:118:5 | {...} | | +| ExitMethods.cs:116:5:118:5 | {...} | ExitMethods.cs:117:9:117:39 | Before return ...; | | +| ExitMethods.cs:117:9:117:39 | Before return ...; | ExitMethods.cs:117:16:117:38 | ... ? ... : ... | | +| ExitMethods.cs:117:9:117:39 | return ...; | ExitMethods.cs:115:16:115:34 | Normal Exit | return | | ExitMethods.cs:117:16:117:16 | access to parameter s | ExitMethods.cs:117:27:117:29 | - | | -| ExitMethods.cs:117:16:117:30 | call to method Contains | ExitMethods.cs:117:34:117:34 | 0 | true | -| ExitMethods.cs:117:16:117:30 | call to method Contains | ExitMethods.cs:117:38:117:38 | 1 | false | -| ExitMethods.cs:117:16:117:38 | ... ? ... : ... | ExitMethods.cs:117:9:117:39 | return ...; | | +| ExitMethods.cs:117:16:117:30 | After call to method Contains [false] | ExitMethods.cs:117:38:117:38 | 1 | | +| ExitMethods.cs:117:16:117:30 | After call to method Contains [true] | ExitMethods.cs:117:34:117:34 | 0 | | +| ExitMethods.cs:117:16:117:30 | Before call to method Contains | ExitMethods.cs:117:16:117:16 | access to parameter s | | +| ExitMethods.cs:117:16:117:30 | call to method Contains | ExitMethods.cs:117:16:117:30 | After call to method Contains [false] | false | +| ExitMethods.cs:117:16:117:30 | call to method Contains | ExitMethods.cs:117:16:117:30 | After call to method Contains [true] | true | +| ExitMethods.cs:117:16:117:38 | ... ? ... : ... | ExitMethods.cs:117:16:117:30 | Before call to method Contains | | +| ExitMethods.cs:117:16:117:38 | After ... ? ... : ... | ExitMethods.cs:117:9:117:39 | return ...; | | | ExitMethods.cs:117:27:117:29 | - | ExitMethods.cs:117:16:117:30 | call to method Contains | | -| ExitMethods.cs:117:34:117:34 | 0 | ExitMethods.cs:117:16:117:38 | ... ? ... : ... | | -| ExitMethods.cs:117:38:117:38 | 1 | ExitMethods.cs:117:16:117:38 | ... ? ... : ... | | -| ExitMethods.cs:120:17:120:32 | enter FailingAssertion | ExitMethods.cs:121:5:124:5 | {...} | | -| ExitMethods.cs:120:17:120:32 | exit FailingAssertion (abnormal) | ExitMethods.cs:120:17:120:32 | exit FailingAssertion | | +| ExitMethods.cs:117:34:117:34 | 0 | ExitMethods.cs:117:16:117:38 | After ... ? ... : ... | | +| ExitMethods.cs:117:38:117:38 | 1 | ExitMethods.cs:117:16:117:38 | After ... ? ... : ... | | +| ExitMethods.cs:120:17:120:32 | Entry | ExitMethods.cs:121:5:124:5 | {...} | | +| ExitMethods.cs:120:17:120:32 | Exceptional Exit | ExitMethods.cs:120:17:120:32 | Exit | | | ExitMethods.cs:121:5:124:5 | {...} | ExitMethods.cs:122:9:122:29 | ...; | | -| ExitMethods.cs:122:9:122:28 | call to method IsTrue | ExitMethods.cs:120:17:120:32 | exit FailingAssertion (abnormal) | exception | -| ExitMethods.cs:122:9:122:29 | ...; | ExitMethods.cs:122:23:122:27 | false | | +| ExitMethods.cs:122:9:122:28 | Before call to method IsTrue | ExitMethods.cs:122:23:122:27 | false | | +| ExitMethods.cs:122:9:122:28 | call to method IsTrue | ExitMethods.cs:120:17:120:32 | Exceptional Exit | exception | +| ExitMethods.cs:122:9:122:29 | ...; | ExitMethods.cs:122:9:122:28 | Before call to method IsTrue | | | ExitMethods.cs:122:23:122:27 | false | ExitMethods.cs:122:9:122:28 | call to method IsTrue | | -| ExitMethods.cs:126:17:126:33 | enter FailingAssertion2 | ExitMethods.cs:127:5:130:5 | {...} | | -| ExitMethods.cs:126:17:126:33 | exit FailingAssertion2 (abnormal) | ExitMethods.cs:126:17:126:33 | exit FailingAssertion2 | | +| ExitMethods.cs:126:17:126:33 | Entry | ExitMethods.cs:127:5:130:5 | {...} | | +| ExitMethods.cs:126:17:126:33 | Exceptional Exit | ExitMethods.cs:126:17:126:33 | Exit | | | ExitMethods.cs:127:5:130:5 | {...} | ExitMethods.cs:128:9:128:27 | ...; | | -| ExitMethods.cs:128:9:128:26 | call to method FailingAssertion | ExitMethods.cs:126:17:126:33 | exit FailingAssertion2 (abnormal) | exception | +| ExitMethods.cs:128:9:128:26 | Before call to method FailingAssertion | ExitMethods.cs:128:9:128:26 | this access | | +| ExitMethods.cs:128:9:128:26 | call to method FailingAssertion | ExitMethods.cs:126:17:126:33 | Exceptional Exit | exception | | ExitMethods.cs:128:9:128:26 | this access | ExitMethods.cs:128:9:128:26 | call to method FailingAssertion | | -| ExitMethods.cs:128:9:128:27 | ...; | ExitMethods.cs:128:9:128:26 | this access | | -| ExitMethods.cs:132:10:132:20 | enter AssertFalse | ExitMethods.cs:132:48:132:48 | access to parameter b | | -| ExitMethods.cs:132:10:132:20 | exit AssertFalse (abnormal) | ExitMethods.cs:132:10:132:20 | exit AssertFalse | | -| ExitMethods.cs:132:10:132:20 | exit AssertFalse (normal) | ExitMethods.cs:132:10:132:20 | exit AssertFalse | | -| ExitMethods.cs:132:33:132:49 | call to method IsFalse | ExitMethods.cs:132:10:132:20 | exit AssertFalse (abnormal) | exception | -| ExitMethods.cs:132:33:132:49 | call to method IsFalse | ExitMethods.cs:132:10:132:20 | exit AssertFalse (normal) | | +| ExitMethods.cs:128:9:128:27 | ...; | ExitMethods.cs:128:9:128:26 | Before call to method FailingAssertion | | +| ExitMethods.cs:132:10:132:20 | Entry | ExitMethods.cs:132:27:132:27 | b | | +| ExitMethods.cs:132:10:132:20 | Exceptional Exit | ExitMethods.cs:132:10:132:20 | Exit | | +| ExitMethods.cs:132:10:132:20 | Normal Exit | ExitMethods.cs:132:10:132:20 | Exit | | +| ExitMethods.cs:132:27:132:27 | b | ExitMethods.cs:132:33:132:49 | Before call to method IsFalse | | +| ExitMethods.cs:132:33:132:49 | After call to method IsFalse | ExitMethods.cs:132:10:132:20 | Normal Exit | | +| ExitMethods.cs:132:33:132:49 | Before call to method IsFalse | ExitMethods.cs:132:48:132:48 | access to parameter b | | +| ExitMethods.cs:132:33:132:49 | call to method IsFalse | ExitMethods.cs:132:10:132:20 | Exceptional Exit | exception | +| ExitMethods.cs:132:33:132:49 | call to method IsFalse | ExitMethods.cs:132:33:132:49 | After call to method IsFalse | | | ExitMethods.cs:132:48:132:48 | access to parameter b | ExitMethods.cs:132:33:132:49 | call to method IsFalse | | -| ExitMethods.cs:134:17:134:33 | enter FailingAssertion3 | ExitMethods.cs:135:5:138:5 | {...} | | -| ExitMethods.cs:134:17:134:33 | exit FailingAssertion3 (abnormal) | ExitMethods.cs:134:17:134:33 | exit FailingAssertion3 | | +| ExitMethods.cs:134:17:134:33 | Entry | ExitMethods.cs:135:5:138:5 | {...} | | +| ExitMethods.cs:134:17:134:33 | Exceptional Exit | ExitMethods.cs:134:17:134:33 | Exit | | | ExitMethods.cs:135:5:138:5 | {...} | ExitMethods.cs:136:9:136:26 | ...; | | -| ExitMethods.cs:136:9:136:25 | call to method AssertFalse | ExitMethods.cs:134:17:134:33 | exit FailingAssertion3 (abnormal) | exception | +| ExitMethods.cs:136:9:136:25 | Before call to method AssertFalse | ExitMethods.cs:136:9:136:25 | this access | | +| ExitMethods.cs:136:9:136:25 | call to method AssertFalse | ExitMethods.cs:134:17:134:33 | Exceptional Exit | exception | | ExitMethods.cs:136:9:136:25 | this access | ExitMethods.cs:136:21:136:24 | true | | -| ExitMethods.cs:136:9:136:26 | ...; | ExitMethods.cs:136:9:136:25 | this access | | +| ExitMethods.cs:136:9:136:26 | ...; | ExitMethods.cs:136:9:136:25 | Before call to method AssertFalse | | | ExitMethods.cs:136:21:136:24 | true | ExitMethods.cs:136:9:136:25 | call to method AssertFalse | | -| ExitMethods.cs:140:17:140:42 | enter ExceptionDispatchInfoThrow | ExitMethods.cs:141:5:147:5 | {...} | | -| ExitMethods.cs:140:17:140:42 | exit ExceptionDispatchInfoThrow (abnormal) | ExitMethods.cs:140:17:140:42 | exit ExceptionDispatchInfoThrow | | +| ExitMethods.cs:140:17:140:42 | Entry | ExitMethods.cs:140:49:140:49 | b | | +| ExitMethods.cs:140:17:140:42 | Exceptional Exit | ExitMethods.cs:140:17:140:42 | Exit | | +| ExitMethods.cs:140:49:140:49 | b | ExitMethods.cs:140:70:140:70 | e | | +| ExitMethods.cs:140:70:140:70 | e | ExitMethods.cs:141:5:147:5 | {...} | | | ExitMethods.cs:141:5:147:5 | {...} | ExitMethods.cs:142:9:145:53 | if (...) ... | | | ExitMethods.cs:142:9:145:53 | if (...) ... | ExitMethods.cs:142:13:142:13 | access to parameter b | | -| ExitMethods.cs:142:13:142:13 | access to parameter b | ExitMethods.cs:143:13:143:43 | ...; | true | -| ExitMethods.cs:142:13:142:13 | access to parameter b | ExitMethods.cs:145:13:145:53 | ...; | false | -| ExitMethods.cs:143:13:143:42 | call to method Throw | ExitMethods.cs:140:17:140:42 | exit ExceptionDispatchInfoThrow (abnormal) | exception | -| ExitMethods.cs:143:13:143:43 | ...; | ExitMethods.cs:143:41:143:41 | access to parameter e | | +| ExitMethods.cs:142:13:142:13 | After access to parameter b [false] | ExitMethods.cs:145:13:145:53 | ...; | | +| ExitMethods.cs:142:13:142:13 | After access to parameter b [true] | ExitMethods.cs:143:13:143:43 | ...; | | +| ExitMethods.cs:142:13:142:13 | access to parameter b | ExitMethods.cs:142:13:142:13 | After access to parameter b [false] | false | +| ExitMethods.cs:142:13:142:13 | access to parameter b | ExitMethods.cs:142:13:142:13 | After access to parameter b [true] | true | +| ExitMethods.cs:143:13:143:42 | Before call to method Throw | ExitMethods.cs:143:41:143:41 | access to parameter e | | +| ExitMethods.cs:143:13:143:42 | call to method Throw | ExitMethods.cs:140:17:140:42 | Exceptional Exit | exception | +| ExitMethods.cs:143:13:143:43 | ...; | ExitMethods.cs:143:13:143:42 | Before call to method Throw | | | ExitMethods.cs:143:41:143:41 | access to parameter e | ExitMethods.cs:143:13:143:42 | call to method Throw | | -| ExitMethods.cs:145:13:145:44 | call to method Capture | ExitMethods.cs:145:13:145:52 | call to method Throw | | -| ExitMethods.cs:145:13:145:52 | call to method Throw | ExitMethods.cs:140:17:140:42 | exit ExceptionDispatchInfoThrow (abnormal) | exception | -| ExitMethods.cs:145:13:145:53 | ...; | ExitMethods.cs:145:43:145:43 | access to parameter e | | +| ExitMethods.cs:145:13:145:44 | After call to method Capture | ExitMethods.cs:145:13:145:52 | call to method Throw | | +| ExitMethods.cs:145:13:145:44 | Before call to method Capture | ExitMethods.cs:145:43:145:43 | access to parameter e | | +| ExitMethods.cs:145:13:145:44 | call to method Capture | ExitMethods.cs:145:13:145:44 | After call to method Capture | | +| ExitMethods.cs:145:13:145:52 | Before call to method Throw | ExitMethods.cs:145:13:145:44 | Before call to method Capture | | +| ExitMethods.cs:145:13:145:52 | call to method Throw | ExitMethods.cs:140:17:140:42 | Exceptional Exit | exception | +| ExitMethods.cs:145:13:145:53 | ...; | ExitMethods.cs:145:13:145:52 | Before call to method Throw | | | ExitMethods.cs:145:43:145:43 | access to parameter e | ExitMethods.cs:145:13:145:44 | call to method Capture | | -| Extensions.cs:5:23:5:29 | enter ToInt32 | Extensions.cs:6:5:8:5 | {...} | | -| Extensions.cs:5:23:5:29 | exit ToInt32 (normal) | Extensions.cs:5:23:5:29 | exit ToInt32 | | -| Extensions.cs:6:5:8:5 | {...} | Extensions.cs:7:28:7:28 | access to parameter s | | -| Extensions.cs:7:9:7:30 | return ...; | Extensions.cs:5:23:5:29 | exit ToInt32 (normal) | return | -| Extensions.cs:7:16:7:29 | call to method Parse | Extensions.cs:7:9:7:30 | return ...; | | +| Extensions.cs:5:23:5:29 | Entry | Extensions.cs:5:43:5:43 | s | | +| Extensions.cs:5:23:5:29 | Normal Exit | Extensions.cs:5:23:5:29 | Exit | | +| Extensions.cs:5:43:5:43 | s | Extensions.cs:6:5:8:5 | {...} | | +| Extensions.cs:6:5:8:5 | {...} | Extensions.cs:7:9:7:30 | Before return ...; | | +| Extensions.cs:7:9:7:30 | Before return ...; | Extensions.cs:7:16:7:29 | Before call to method Parse | | +| Extensions.cs:7:9:7:30 | return ...; | Extensions.cs:5:23:5:29 | Normal Exit | return | +| Extensions.cs:7:16:7:29 | After call to method Parse | Extensions.cs:7:9:7:30 | return ...; | | +| Extensions.cs:7:16:7:29 | Before call to method Parse | Extensions.cs:7:28:7:28 | access to parameter s | | +| Extensions.cs:7:16:7:29 | call to method Parse | Extensions.cs:7:16:7:29 | After call to method Parse | | | Extensions.cs:7:28:7:28 | access to parameter s | Extensions.cs:7:16:7:29 | call to method Parse | | -| Extensions.cs:10:24:10:29 | enter ToBool | Extensions.cs:11:5:13:5 | {...} | | -| Extensions.cs:10:24:10:29 | exit ToBool (normal) | Extensions.cs:10:24:10:29 | exit ToBool | | -| Extensions.cs:11:5:13:5 | {...} | Extensions.cs:12:16:12:16 | access to parameter f | | -| Extensions.cs:12:9:12:20 | return ...; | Extensions.cs:10:24:10:29 | exit ToBool (normal) | return | +| Extensions.cs:10:24:10:29 | Entry | Extensions.cs:10:43:10:43 | s | | +| Extensions.cs:10:24:10:29 | Normal Exit | Extensions.cs:10:24:10:29 | Exit | | +| Extensions.cs:10:43:10:43 | s | Extensions.cs:10:65:10:65 | f | | +| Extensions.cs:10:65:10:65 | f | Extensions.cs:11:5:13:5 | {...} | | +| Extensions.cs:11:5:13:5 | {...} | Extensions.cs:12:9:12:20 | Before return ...; | | +| Extensions.cs:12:9:12:20 | Before return ...; | Extensions.cs:12:16:12:19 | Before delegate call | | +| Extensions.cs:12:9:12:20 | return ...; | Extensions.cs:10:24:10:29 | Normal Exit | return | | Extensions.cs:12:16:12:16 | access to parameter f | Extensions.cs:12:18:12:18 | access to parameter s | | -| Extensions.cs:12:16:12:19 | delegate call | Extensions.cs:12:9:12:20 | return ...; | | +| Extensions.cs:12:16:12:19 | After delegate call | Extensions.cs:12:9:12:20 | return ...; | | +| Extensions.cs:12:16:12:19 | Before delegate call | Extensions.cs:12:16:12:16 | access to parameter f | | +| Extensions.cs:12:16:12:19 | delegate call | Extensions.cs:12:16:12:19 | After delegate call | | | Extensions.cs:12:18:12:18 | access to parameter s | Extensions.cs:12:16:12:19 | delegate call | | -| Extensions.cs:15:23:15:33 | enter CallToInt32 | Extensions.cs:15:48:15:50 | "0" | | -| Extensions.cs:15:23:15:33 | exit CallToInt32 (normal) | Extensions.cs:15:23:15:33 | exit CallToInt32 | | -| Extensions.cs:15:40:15:51 | call to method ToInt32 | Extensions.cs:15:23:15:33 | exit CallToInt32 (normal) | | +| Extensions.cs:15:23:15:33 | Entry | Extensions.cs:15:40:15:51 | Before call to method ToInt32 | | +| Extensions.cs:15:23:15:33 | Normal Exit | Extensions.cs:15:23:15:33 | Exit | | +| Extensions.cs:15:40:15:51 | After call to method ToInt32 | Extensions.cs:15:23:15:33 | Normal Exit | | +| Extensions.cs:15:40:15:51 | Before call to method ToInt32 | Extensions.cs:15:48:15:50 | "0" | | +| Extensions.cs:15:40:15:51 | call to method ToInt32 | Extensions.cs:15:40:15:51 | After call to method ToInt32 | | | Extensions.cs:15:48:15:50 | "0" | Extensions.cs:15:40:15:51 | call to method ToInt32 | | -| Extensions.cs:20:17:20:20 | enter Main | Extensions.cs:21:5:26:5 | {...} | | -| Extensions.cs:20:17:20:20 | exit Main (normal) | Extensions.cs:20:17:20:20 | exit Main | | +| Extensions.cs:20:17:20:20 | Entry | Extensions.cs:20:29:20:29 | s | | +| Extensions.cs:20:17:20:20 | Normal Exit | Extensions.cs:20:17:20:20 | Exit | | +| Extensions.cs:20:29:20:29 | s | Extensions.cs:21:5:26:5 | {...} | | +| Extensions.cs:21:5:26:5 | After {...} | Extensions.cs:20:17:20:20 | Normal Exit | | | Extensions.cs:21:5:26:5 | {...} | Extensions.cs:22:9:22:20 | ...; | | | Extensions.cs:22:9:22:9 | access to parameter s | Extensions.cs:22:9:22:19 | call to method ToInt32 | | -| Extensions.cs:22:9:22:19 | call to method ToInt32 | Extensions.cs:23:9:23:31 | ...; | | -| Extensions.cs:22:9:22:20 | ...; | Extensions.cs:22:9:22:9 | access to parameter s | | -| Extensions.cs:23:9:23:30 | call to method ToInt32 | Extensions.cs:24:9:24:46 | ...; | | -| Extensions.cs:23:9:23:31 | ...; | Extensions.cs:23:28:23:29 | "" | | +| Extensions.cs:22:9:22:19 | After call to method ToInt32 | Extensions.cs:22:9:22:20 | After ...; | | +| Extensions.cs:22:9:22:19 | Before call to method ToInt32 | Extensions.cs:22:9:22:9 | access to parameter s | | +| Extensions.cs:22:9:22:19 | call to method ToInt32 | Extensions.cs:22:9:22:19 | After call to method ToInt32 | | +| Extensions.cs:22:9:22:20 | ...; | Extensions.cs:22:9:22:19 | Before call to method ToInt32 | | +| Extensions.cs:22:9:22:20 | After ...; | Extensions.cs:23:9:23:31 | ...; | | +| Extensions.cs:23:9:23:30 | After call to method ToInt32 | Extensions.cs:23:9:23:31 | After ...; | | +| Extensions.cs:23:9:23:30 | Before call to method ToInt32 | Extensions.cs:23:28:23:29 | "" | | +| Extensions.cs:23:9:23:30 | call to method ToInt32 | Extensions.cs:23:9:23:30 | After call to method ToInt32 | | +| Extensions.cs:23:9:23:31 | ...; | Extensions.cs:23:9:23:30 | Before call to method ToInt32 | | +| Extensions.cs:23:9:23:31 | After ...; | Extensions.cs:24:9:24:46 | ...; | | | Extensions.cs:23:28:23:29 | "" | Extensions.cs:23:9:23:30 | call to method ToInt32 | | -| Extensions.cs:24:9:24:45 | call to method ToBool | Extensions.cs:25:9:25:34 | ...; | | -| Extensions.cs:24:9:24:46 | ...; | Extensions.cs:24:27:24:32 | "true" | | -| Extensions.cs:24:27:24:32 | "true" | Extensions.cs:24:35:24:44 | access to method Parse | | +| Extensions.cs:24:9:24:45 | After call to method ToBool | Extensions.cs:24:9:24:46 | After ...; | | +| Extensions.cs:24:9:24:45 | Before call to method ToBool | Extensions.cs:24:27:24:32 | "true" | | +| Extensions.cs:24:9:24:45 | call to method ToBool | Extensions.cs:24:9:24:45 | After call to method ToBool | | +| Extensions.cs:24:9:24:46 | ...; | Extensions.cs:24:9:24:45 | Before call to method ToBool | | +| Extensions.cs:24:9:24:46 | After ...; | Extensions.cs:25:9:25:34 | ...; | | +| Extensions.cs:24:27:24:32 | "true" | Extensions.cs:24:35:24:44 | Before delegate creation of type Func | | +| Extensions.cs:24:35:24:44 | After delegate creation of type Func | Extensions.cs:24:9:24:45 | call to method ToBool | | +| Extensions.cs:24:35:24:44 | Before delegate creation of type Func | Extensions.cs:24:35:24:44 | access to method Parse | | | Extensions.cs:24:35:24:44 | access to method Parse | Extensions.cs:24:35:24:44 | delegate creation of type Func | | -| Extensions.cs:24:35:24:44 | delegate creation of type Func | Extensions.cs:24:9:24:45 | call to method ToBool | | -| Extensions.cs:25:9:25:14 | "true" | Extensions.cs:25:23:25:32 | access to method Parse | | -| Extensions.cs:25:9:25:33 | call to method ToBool | Extensions.cs:20:17:20:20 | exit Main (normal) | | -| Extensions.cs:25:9:25:34 | ...; | Extensions.cs:25:9:25:14 | "true" | | +| Extensions.cs:24:35:24:44 | delegate creation of type Func | Extensions.cs:24:35:24:44 | After delegate creation of type Func | | +| Extensions.cs:25:9:25:14 | "true" | Extensions.cs:25:23:25:32 | Before delegate creation of type Func | | +| Extensions.cs:25:9:25:33 | After call to method ToBool | Extensions.cs:25:9:25:34 | After ...; | | +| Extensions.cs:25:9:25:33 | Before call to method ToBool | Extensions.cs:25:9:25:14 | "true" | | +| Extensions.cs:25:9:25:33 | call to method ToBool | Extensions.cs:25:9:25:33 | After call to method ToBool | | +| Extensions.cs:25:9:25:34 | ...; | Extensions.cs:25:9:25:33 | Before call to method ToBool | | +| Extensions.cs:25:9:25:34 | After ...; | Extensions.cs:21:5:26:5 | After {...} | | +| Extensions.cs:25:23:25:32 | After delegate creation of type Func | Extensions.cs:25:9:25:33 | call to method ToBool | | +| Extensions.cs:25:23:25:32 | Before delegate creation of type Func | Extensions.cs:25:23:25:32 | access to method Parse | | | Extensions.cs:25:23:25:32 | access to method Parse | Extensions.cs:25:23:25:32 | delegate creation of type Func | | -| Extensions.cs:25:23:25:32 | delegate creation of type Func | Extensions.cs:25:9:25:33 | call to method ToBool | | -| Finally.cs:3:14:3:20 | call to constructor Object | Finally.cs:3:14:3:20 | {...} | | -| Finally.cs:3:14:3:20 | call to method | Finally.cs:3:14:3:20 | call to constructor Object | | -| Finally.cs:3:14:3:20 | enter Finally | Finally.cs:3:14:3:20 | this access | | -| Finally.cs:3:14:3:20 | exit Finally (normal) | Finally.cs:3:14:3:20 | exit Finally | | +| Extensions.cs:25:23:25:32 | delegate creation of type Func | Extensions.cs:25:23:25:32 | After delegate creation of type Func | | +| Finally.cs:3:14:3:20 | After call to constructor Object | Finally.cs:3:14:3:20 | {...} | | +| Finally.cs:3:14:3:20 | After call to method | Finally.cs:3:14:3:20 | Before call to constructor Object | | +| Finally.cs:3:14:3:20 | Before call to constructor Object | Finally.cs:3:14:3:20 | call to constructor Object | | +| Finally.cs:3:14:3:20 | Before call to method | Finally.cs:3:14:3:20 | this access | | +| Finally.cs:3:14:3:20 | Entry | Finally.cs:3:14:3:20 | Before call to method | | +| Finally.cs:3:14:3:20 | Normal Exit | Finally.cs:3:14:3:20 | Exit | | +| Finally.cs:3:14:3:20 | call to constructor Object | Finally.cs:3:14:3:20 | After call to constructor Object | | +| Finally.cs:3:14:3:20 | call to method | Finally.cs:3:14:3:20 | After call to method | | | Finally.cs:3:14:3:20 | this access | Finally.cs:3:14:3:20 | call to method | | -| Finally.cs:3:14:3:20 | {...} | Finally.cs:3:14:3:20 | exit Finally (normal) | | -| Finally.cs:7:10:7:11 | enter M1 | Finally.cs:8:5:17:5 | {...} | | -| Finally.cs:7:10:7:11 | exit M1 (abnormal) | Finally.cs:7:10:7:11 | exit M1 | | -| Finally.cs:7:10:7:11 | exit M1 (normal) | Finally.cs:7:10:7:11 | exit M1 | | +| Finally.cs:3:14:3:20 | {...} | Finally.cs:3:14:3:20 | Normal Exit | | +| Finally.cs:7:10:7:11 | Entry | Finally.cs:8:5:17:5 | {...} | | +| Finally.cs:7:10:7:11 | Exceptional Exit | Finally.cs:7:10:7:11 | Exit | | +| Finally.cs:7:10:7:11 | Normal Exit | Finally.cs:7:10:7:11 | Exit | | +| Finally.cs:8:5:17:5 | After {...} | Finally.cs:7:10:7:11 | Normal Exit | | | Finally.cs:8:5:17:5 | {...} | Finally.cs:9:9:16:9 | try {...} ... | | +| Finally.cs:9:9:16:9 | After try {...} ... | Finally.cs:8:5:17:5 | After {...} | | | Finally.cs:9:9:16:9 | try {...} ... | Finally.cs:10:9:12:9 | {...} | | +| Finally.cs:10:9:12:9 | After {...} | Finally.cs:14:9:16:9 | {...} | | | Finally.cs:10:9:12:9 | {...} | Finally.cs:11:13:11:38 | ...; | | -| Finally.cs:11:13:11:37 | call to method WriteLine | Finally.cs:14:9:16:9 | {...} | , exception | -| Finally.cs:11:13:11:38 | ...; | Finally.cs:11:31:11:36 | "Try1" | | +| Finally.cs:11:13:11:37 | After call to method WriteLine | Finally.cs:11:13:11:38 | After ...; | | +| Finally.cs:11:13:11:37 | Before call to method WriteLine | Finally.cs:11:31:11:36 | "Try1" | | +| Finally.cs:11:13:11:37 | call to method WriteLine | Finally.cs:11:13:11:37 | After call to method WriteLine | | +| Finally.cs:11:13:11:37 | call to method WriteLine | Finally.cs:14:9:16:9 | {...} | exception | +| Finally.cs:11:13:11:38 | ...; | Finally.cs:11:13:11:37 | Before call to method WriteLine | | +| Finally.cs:11:13:11:38 | After ...; | Finally.cs:10:9:12:9 | After {...} | | | Finally.cs:11:31:11:36 | "Try1" | Finally.cs:11:13:11:37 | call to method WriteLine | | +| Finally.cs:14:9:16:9 | After {...} | Finally.cs:7:10:7:11 | Exceptional Exit | exception | +| Finally.cs:14:9:16:9 | After {...} | Finally.cs:9:9:16:9 | After try {...} ... | | | Finally.cs:14:9:16:9 | {...} | Finally.cs:15:13:15:41 | ...; | | -| Finally.cs:15:13:15:40 | call to method WriteLine | Finally.cs:7:10:7:11 | exit M1 (abnormal) | exception | -| Finally.cs:15:13:15:40 | call to method WriteLine | Finally.cs:7:10:7:11 | exit M1 (normal) | | -| Finally.cs:15:13:15:41 | ...; | Finally.cs:15:31:15:39 | "Finally" | | +| Finally.cs:15:13:15:40 | After call to method WriteLine | Finally.cs:15:13:15:41 | After ...; | | +| Finally.cs:15:13:15:40 | Before call to method WriteLine | Finally.cs:15:31:15:39 | "Finally" | | +| Finally.cs:15:13:15:40 | call to method WriteLine | Finally.cs:15:13:15:40 | After call to method WriteLine | | +| Finally.cs:15:13:15:41 | ...; | Finally.cs:15:13:15:40 | Before call to method WriteLine | | +| Finally.cs:15:13:15:41 | After ...; | Finally.cs:14:9:16:9 | After {...} | | | Finally.cs:15:31:15:39 | "Finally" | Finally.cs:15:13:15:40 | call to method WriteLine | | -| Finally.cs:19:10:19:11 | enter M2 | Finally.cs:20:5:52:5 | {...} | | -| Finally.cs:19:10:19:11 | exit M2 (abnormal) | Finally.cs:19:10:19:11 | exit M2 | | -| Finally.cs:19:10:19:11 | exit M2 (normal) | Finally.cs:19:10:19:11 | exit M2 | | +| Finally.cs:19:10:19:11 | Entry | Finally.cs:20:5:52:5 | {...} | | +| Finally.cs:19:10:19:11 | Exceptional Exit | Finally.cs:19:10:19:11 | Exit | | +| Finally.cs:19:10:19:11 | Normal Exit | Finally.cs:19:10:19:11 | Exit | | +| Finally.cs:20:5:52:5 | After {...} | Finally.cs:19:10:19:11 | Normal Exit | | | Finally.cs:20:5:52:5 | {...} | Finally.cs:21:9:51:9 | try {...} ... | | +| Finally.cs:21:9:51:9 | After try {...} ... | Finally.cs:20:5:52:5 | After {...} | | | Finally.cs:21:9:51:9 | try {...} ... | Finally.cs:22:9:25:9 | {...} | | | Finally.cs:22:9:25:9 | {...} | Finally.cs:23:13:23:38 | ...; | | -| Finally.cs:23:13:23:37 | call to method WriteLine | Finally.cs:24:13:24:19 | return ...; | | +| Finally.cs:23:13:23:37 | After call to method WriteLine | Finally.cs:23:13:23:38 | After ...; | | +| Finally.cs:23:13:23:37 | Before call to method WriteLine | Finally.cs:23:31:23:36 | "Try2" | | +| Finally.cs:23:13:23:37 | call to method WriteLine | Finally.cs:23:13:23:37 | After call to method WriteLine | | | Finally.cs:23:13:23:37 | call to method WriteLine | Finally.cs:26:9:29:9 | catch (...) {...} | exception | -| Finally.cs:23:13:23:38 | ...; | Finally.cs:23:31:23:36 | "Try2" | | +| Finally.cs:23:13:23:38 | ...; | Finally.cs:23:13:23:37 | Before call to method WriteLine | | +| Finally.cs:23:13:23:38 | After ...; | Finally.cs:24:13:24:19 | Before return ...; | | | Finally.cs:23:31:23:36 | "Try2" | Finally.cs:23:13:23:37 | call to method WriteLine | | +| Finally.cs:24:13:24:19 | Before return ...; | Finally.cs:24:13:24:19 | return ...; | | | Finally.cs:24:13:24:19 | return ...; | Finally.cs:49:9:51:9 | {...} | return | -| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:26:38:26:39 | IOException ex | match | -| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:30:9:40:9 | catch (...) {...} | no-match | +| Finally.cs:26:9:29:9 | After catch (...) {...} [match] | Finally.cs:26:38:26:39 | IOException ex | | +| Finally.cs:26:9:29:9 | After catch (...) {...} [no-match] | Finally.cs:30:9:40:9 | catch (...) {...} | | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:26:9:29:9 | After catch (...) {...} [match] | match | +| Finally.cs:26:9:29:9 | catch (...) {...} | Finally.cs:26:9:29:9 | After catch (...) {...} [no-match] | no-match | | Finally.cs:26:38:26:39 | IOException ex | Finally.cs:26:48:26:51 | true | | -| Finally.cs:26:48:26:51 | true | Finally.cs:27:9:29:9 | {...} | true | -| Finally.cs:27:9:29:9 | {...} | Finally.cs:28:13:28:18 | throw ...; | | +| Finally.cs:26:48:26:51 | After true [true] | Finally.cs:27:9:29:9 | {...} | | +| Finally.cs:26:48:26:51 | true | Finally.cs:26:48:26:51 | After true [true] | true | +| Finally.cs:27:9:29:9 | {...} | Finally.cs:28:13:28:18 | Before throw ...; | | +| Finally.cs:28:13:28:18 | Before throw ...; | Finally.cs:28:13:28:18 | throw ...; | | | Finally.cs:28:13:28:18 | throw ...; | Finally.cs:49:9:51:9 | {...} | exception | -| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:30:41:30:42 | ArgumentException ex | match | -| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:41:9:43:9 | catch (...) {...} | no-match | +| Finally.cs:30:9:40:9 | After catch (...) {...} [match] | Finally.cs:30:41:30:42 | ArgumentException ex | | +| Finally.cs:30:9:40:9 | After catch (...) {...} [no-match] | Finally.cs:41:9:43:9 | catch (...) {...} | | +| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:30:9:40:9 | After catch (...) {...} [match] | match | +| Finally.cs:30:9:40:9 | catch (...) {...} | Finally.cs:30:9:40:9 | After catch (...) {...} [no-match] | no-match | | Finally.cs:30:41:30:42 | ArgumentException ex | Finally.cs:31:9:40:9 | {...} | | | Finally.cs:31:9:40:9 | {...} | Finally.cs:32:13:39:13 | try {...} ... | | | Finally.cs:32:13:39:13 | try {...} ... | Finally.cs:33:13:35:13 | {...} | | | Finally.cs:33:13:35:13 | {...} | Finally.cs:34:17:34:32 | if (...) ... | | | Finally.cs:34:17:34:32 | if (...) ... | Finally.cs:34:21:34:24 | true | | -| Finally.cs:34:21:34:24 | true | Finally.cs:34:27:34:32 | throw ...; | true | +| Finally.cs:34:21:34:24 | After true [true] | Finally.cs:34:27:34:32 | Before throw ...; | | +| Finally.cs:34:21:34:24 | true | Finally.cs:34:21:34:24 | After true [true] | true | +| Finally.cs:34:27:34:32 | Before throw ...; | Finally.cs:34:27:34:32 | throw ...; | | | Finally.cs:34:27:34:32 | throw ...; | Finally.cs:37:13:39:13 | {...} | exception | -| Finally.cs:37:13:39:13 | {...} | Finally.cs:38:37:38:42 | "Boo!" | | +| Finally.cs:37:13:39:13 | {...} | Finally.cs:38:17:38:44 | Before throw ...; | | +| Finally.cs:38:17:38:44 | Before throw ...; | Finally.cs:38:23:38:43 | Before object creation of type Exception | | | Finally.cs:38:17:38:44 | throw ...; | Finally.cs:49:9:51:9 | {...} | exception | -| Finally.cs:38:23:38:43 | object creation of type Exception | Finally.cs:38:17:38:44 | throw ...; | | +| Finally.cs:38:23:38:43 | After object creation of type Exception | Finally.cs:38:17:38:44 | throw ...; | | +| Finally.cs:38:23:38:43 | Before object creation of type Exception | Finally.cs:38:37:38:42 | "Boo!" | | +| Finally.cs:38:23:38:43 | object creation of type Exception | Finally.cs:38:23:38:43 | After object creation of type Exception | | | Finally.cs:38:37:38:42 | "Boo!" | Finally.cs:38:23:38:43 | object creation of type Exception | | -| Finally.cs:41:9:43:9 | catch (...) {...} | Finally.cs:42:9:43:9 | {...} | match | -| Finally.cs:41:9:43:9 | catch (...) {...} | Finally.cs:44:9:47:9 | catch {...} | no-match | +| Finally.cs:41:9:43:9 | After catch (...) {...} [match] | Finally.cs:42:9:43:9 | {...} | | +| Finally.cs:41:9:43:9 | After catch (...) {...} [no-match] | Finally.cs:44:9:47:9 | catch {...} | | +| Finally.cs:41:9:43:9 | catch (...) {...} | Finally.cs:41:9:43:9 | After catch (...) {...} [match] | match | +| Finally.cs:41:9:43:9 | catch (...) {...} | Finally.cs:41:9:43:9 | After catch (...) {...} [no-match] | no-match | | Finally.cs:42:9:43:9 | {...} | Finally.cs:49:9:51:9 | {...} | | -| Finally.cs:44:9:47:9 | catch {...} | Finally.cs:45:9:47:9 | {...} | | -| Finally.cs:45:9:47:9 | {...} | Finally.cs:46:13:46:19 | return ...; | | +| Finally.cs:44:9:47:9 | After catch {...} [match] | Finally.cs:45:9:47:9 | {...} | | +| Finally.cs:44:9:47:9 | catch {...} | Finally.cs:44:9:47:9 | After catch {...} [match] | match | +| Finally.cs:45:9:47:9 | {...} | Finally.cs:46:13:46:19 | Before return ...; | | +| Finally.cs:46:13:46:19 | Before return ...; | Finally.cs:46:13:46:19 | return ...; | | | Finally.cs:46:13:46:19 | return ...; | Finally.cs:49:9:51:9 | {...} | return | +| Finally.cs:49:9:51:9 | After {...} | Finally.cs:19:10:19:11 | Exceptional Exit | exception | +| Finally.cs:49:9:51:9 | After {...} | Finally.cs:19:10:19:11 | Normal Exit | return | +| Finally.cs:49:9:51:9 | After {...} | Finally.cs:21:9:51:9 | After try {...} ... | | | Finally.cs:49:9:51:9 | {...} | Finally.cs:50:13:50:41 | ...; | | -| Finally.cs:50:13:50:40 | call to method WriteLine | Finally.cs:19:10:19:11 | exit M2 (abnormal) | exception | -| Finally.cs:50:13:50:40 | call to method WriteLine | Finally.cs:19:10:19:11 | exit M2 (normal) | , return | -| Finally.cs:50:13:50:41 | ...; | Finally.cs:50:31:50:39 | "Finally" | | +| Finally.cs:50:13:50:40 | After call to method WriteLine | Finally.cs:50:13:50:41 | After ...; | | +| Finally.cs:50:13:50:40 | Before call to method WriteLine | Finally.cs:50:31:50:39 | "Finally" | | +| Finally.cs:50:13:50:40 | call to method WriteLine | Finally.cs:50:13:50:40 | After call to method WriteLine | | +| Finally.cs:50:13:50:41 | ...; | Finally.cs:50:13:50:40 | Before call to method WriteLine | | +| Finally.cs:50:13:50:41 | After ...; | Finally.cs:49:9:51:9 | After {...} | | | Finally.cs:50:31:50:39 | "Finally" | Finally.cs:50:13:50:40 | call to method WriteLine | | -| Finally.cs:54:10:54:11 | enter M3 | Finally.cs:55:5:72:5 | {...} | | -| Finally.cs:54:10:54:11 | exit M3 (abnormal) | Finally.cs:54:10:54:11 | exit M3 | | -| Finally.cs:54:10:54:11 | exit M3 (normal) | Finally.cs:54:10:54:11 | exit M3 | | +| Finally.cs:54:10:54:11 | Entry | Finally.cs:55:5:72:5 | {...} | | +| Finally.cs:54:10:54:11 | Exceptional Exit | Finally.cs:54:10:54:11 | Exit | | +| Finally.cs:54:10:54:11 | Normal Exit | Finally.cs:54:10:54:11 | Exit | | +| Finally.cs:55:5:72:5 | After {...} | Finally.cs:54:10:54:11 | Normal Exit | | | Finally.cs:55:5:72:5 | {...} | Finally.cs:56:9:71:9 | try {...} ... | | +| Finally.cs:56:9:71:9 | After try {...} ... | Finally.cs:55:5:72:5 | After {...} | | | Finally.cs:56:9:71:9 | try {...} ... | Finally.cs:57:9:60:9 | {...} | | | Finally.cs:57:9:60:9 | {...} | Finally.cs:58:13:58:38 | ...; | | -| Finally.cs:58:13:58:37 | call to method WriteLine | Finally.cs:59:13:59:19 | return ...; | | +| Finally.cs:58:13:58:37 | After call to method WriteLine | Finally.cs:58:13:58:38 | After ...; | | +| Finally.cs:58:13:58:37 | Before call to method WriteLine | Finally.cs:58:31:58:36 | "Try3" | | +| Finally.cs:58:13:58:37 | call to method WriteLine | Finally.cs:58:13:58:37 | After call to method WriteLine | | | Finally.cs:58:13:58:37 | call to method WriteLine | Finally.cs:61:9:64:9 | catch (...) {...} | exception | -| Finally.cs:58:13:58:38 | ...; | Finally.cs:58:31:58:36 | "Try3" | | +| Finally.cs:58:13:58:38 | ...; | Finally.cs:58:13:58:37 | Before call to method WriteLine | | +| Finally.cs:58:13:58:38 | After ...; | Finally.cs:59:13:59:19 | Before return ...; | | | Finally.cs:58:31:58:36 | "Try3" | Finally.cs:58:13:58:37 | call to method WriteLine | | +| Finally.cs:59:13:59:19 | Before return ...; | Finally.cs:59:13:59:19 | return ...; | | | Finally.cs:59:13:59:19 | return ...; | Finally.cs:69:9:71:9 | {...} | return | -| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:61:38:61:39 | IOException ex | match | -| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:65:9:67:9 | catch (...) {...} | no-match | +| Finally.cs:61:9:64:9 | After catch (...) {...} [match] | Finally.cs:61:38:61:39 | IOException ex | | +| Finally.cs:61:9:64:9 | After catch (...) {...} [no-match] | Finally.cs:65:9:67:9 | catch (...) {...} | | +| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:61:9:64:9 | After catch (...) {...} [match] | match | +| Finally.cs:61:9:64:9 | catch (...) {...} | Finally.cs:61:9:64:9 | After catch (...) {...} [no-match] | no-match | | Finally.cs:61:38:61:39 | IOException ex | Finally.cs:61:48:61:51 | true | | -| Finally.cs:61:48:61:51 | true | Finally.cs:62:9:64:9 | {...} | true | -| Finally.cs:62:9:64:9 | {...} | Finally.cs:63:13:63:18 | throw ...; | | +| Finally.cs:61:48:61:51 | After true [true] | Finally.cs:62:9:64:9 | {...} | | +| Finally.cs:61:48:61:51 | true | Finally.cs:61:48:61:51 | After true [true] | true | +| Finally.cs:62:9:64:9 | {...} | Finally.cs:63:13:63:18 | Before throw ...; | | +| Finally.cs:63:13:63:18 | Before throw ...; | Finally.cs:63:13:63:18 | throw ...; | | | Finally.cs:63:13:63:18 | throw ...; | Finally.cs:69:9:71:9 | {...} | exception | -| Finally.cs:65:9:67:9 | catch (...) {...} | Finally.cs:65:26:65:26 | Exception e | match | -| Finally.cs:65:9:67:9 | catch (...) {...} | Finally.cs:69:9:71:9 | {...} | exception | -| Finally.cs:65:26:65:26 | Exception e | Finally.cs:65:35:65:35 | access to local variable e | | +| Finally.cs:65:9:67:9 | After catch (...) {...} [match] | Finally.cs:65:26:65:26 | Exception e | | +| Finally.cs:65:9:67:9 | After catch (...) {...} [no-match] | Finally.cs:69:9:71:9 | {...} | exception | +| Finally.cs:65:9:67:9 | catch (...) {...} | Finally.cs:65:9:67:9 | After catch (...) {...} [match] | match | +| Finally.cs:65:9:67:9 | catch (...) {...} | Finally.cs:65:9:67:9 | After catch (...) {...} [no-match] | no-match | +| Finally.cs:65:26:65:26 | Exception e | Finally.cs:65:35:65:51 | Before ... != ... | | | Finally.cs:65:35:65:35 | access to local variable e | Finally.cs:65:35:65:43 | access to property Message | | -| Finally.cs:65:35:65:43 | access to property Message | Finally.cs:65:48:65:51 | null | | -| Finally.cs:65:35:65:51 | ... != ... | Finally.cs:66:9:67:9 | {...} | true | -| Finally.cs:65:35:65:51 | ... != ... | Finally.cs:69:9:71:9 | {...} | exception | +| Finally.cs:65:35:65:43 | After access to property Message | Finally.cs:65:48:65:51 | null | | +| Finally.cs:65:35:65:43 | Before access to property Message | Finally.cs:65:35:65:35 | access to local variable e | | +| Finally.cs:65:35:65:43 | access to property Message | Finally.cs:65:35:65:43 | After access to property Message | | +| Finally.cs:65:35:65:51 | ... != ... | Finally.cs:65:35:65:51 | After ... != ... [false] | false | +| Finally.cs:65:35:65:51 | ... != ... | Finally.cs:65:35:65:51 | After ... != ... [true] | true | +| Finally.cs:65:35:65:51 | After ... != ... [false] | Finally.cs:65:9:67:9 | After catch (...) {...} [no-match] | no-match | +| Finally.cs:65:35:65:51 | After ... != ... [true] | Finally.cs:66:9:67:9 | {...} | | +| Finally.cs:65:35:65:51 | Before ... != ... | Finally.cs:65:35:65:43 | Before access to property Message | | | Finally.cs:65:48:65:51 | null | Finally.cs:65:35:65:51 | ... != ... | | | Finally.cs:66:9:67:9 | {...} | Finally.cs:69:9:71:9 | {...} | | +| Finally.cs:69:9:71:9 | After {...} | Finally.cs:54:10:54:11 | Exceptional Exit | exception | +| Finally.cs:69:9:71:9 | After {...} | Finally.cs:54:10:54:11 | Normal Exit | return | +| Finally.cs:69:9:71:9 | After {...} | Finally.cs:56:9:71:9 | After try {...} ... | | | Finally.cs:69:9:71:9 | {...} | Finally.cs:70:13:70:41 | ...; | | -| Finally.cs:70:13:70:40 | call to method WriteLine | Finally.cs:54:10:54:11 | exit M3 (abnormal) | exception | -| Finally.cs:70:13:70:40 | call to method WriteLine | Finally.cs:54:10:54:11 | exit M3 (normal) | , return | -| Finally.cs:70:13:70:41 | ...; | Finally.cs:70:31:70:39 | "Finally" | | +| Finally.cs:70:13:70:40 | After call to method WriteLine | Finally.cs:70:13:70:41 | After ...; | | +| Finally.cs:70:13:70:40 | Before call to method WriteLine | Finally.cs:70:31:70:39 | "Finally" | | +| Finally.cs:70:13:70:40 | call to method WriteLine | Finally.cs:70:13:70:40 | After call to method WriteLine | | +| Finally.cs:70:13:70:41 | ...; | Finally.cs:70:13:70:40 | Before call to method WriteLine | | +| Finally.cs:70:13:70:41 | After ...; | Finally.cs:69:9:71:9 | After {...} | | | Finally.cs:70:31:70:39 | "Finally" | Finally.cs:70:13:70:40 | call to method WriteLine | | -| Finally.cs:74:10:74:11 | enter M4 | Finally.cs:75:5:101:5 | {...} | | -| Finally.cs:74:10:74:11 | exit M4 (abnormal) | Finally.cs:74:10:74:11 | exit M4 | | -| Finally.cs:74:10:74:11 | exit M4 (normal) | Finally.cs:74:10:74:11 | exit M4 | | +| Finally.cs:74:10:74:11 | Entry | Finally.cs:75:5:101:5 | {...} | | +| Finally.cs:74:10:74:11 | Exceptional Exit | Finally.cs:74:10:74:11 | Exit | | +| Finally.cs:74:10:74:11 | Normal Exit | Finally.cs:74:10:74:11 | Exit | | +| Finally.cs:75:5:101:5 | After {...} | Finally.cs:74:10:74:11 | Normal Exit | | | Finally.cs:75:5:101:5 | {...} | Finally.cs:76:9:76:19 | ... ...; | | -| Finally.cs:76:9:76:19 | ... ...; | Finally.cs:76:17:76:18 | 10 | | -| Finally.cs:76:13:76:18 | Int32 i = ... | Finally.cs:77:9:100:9 | while (...) ... | | +| Finally.cs:76:9:76:19 | ... ...; | Finally.cs:76:13:76:18 | Before Int32 i = ... | | +| Finally.cs:76:9:76:19 | After ... ...; | Finally.cs:77:9:100:9 | while (...) ... | | +| Finally.cs:76:13:76:13 | access to local variable i | Finally.cs:76:17:76:18 | 10 | | +| Finally.cs:76:13:76:18 | After Int32 i = ... | Finally.cs:76:9:76:19 | After ... ...; | | +| Finally.cs:76:13:76:18 | Before Int32 i = ... | Finally.cs:76:13:76:13 | access to local variable i | | +| Finally.cs:76:13:76:18 | Int32 i = ... | Finally.cs:76:13:76:18 | After Int32 i = ... | | | Finally.cs:76:17:76:18 | 10 | Finally.cs:76:13:76:18 | Int32 i = ... | | -| Finally.cs:77:9:100:9 | while (...) ... | Finally.cs:77:16:77:16 | access to local variable i | | +| Finally.cs:77:9:100:9 | After while (...) ... | Finally.cs:75:5:101:5 | After {...} | | +| Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | Finally.cs:77:16:77:20 | Before ... > ... | | +| Finally.cs:77:9:100:9 | while (...) ... | Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | | | Finally.cs:77:16:77:16 | access to local variable i | Finally.cs:77:20:77:20 | 0 | | -| Finally.cs:77:16:77:20 | ... > ... | Finally.cs:74:10:74:11 | exit M4 (normal) | false | -| Finally.cs:77:16:77:20 | ... > ... | Finally.cs:78:9:100:9 | {...} | true | +| Finally.cs:77:16:77:20 | ... > ... | Finally.cs:77:16:77:20 | After ... > ... [false] | false | +| Finally.cs:77:16:77:20 | ... > ... | Finally.cs:77:16:77:20 | After ... > ... [true] | true | +| Finally.cs:77:16:77:20 | After ... > ... [false] | Finally.cs:77:9:100:9 | After while (...) ... | | +| Finally.cs:77:16:77:20 | After ... > ... [true] | Finally.cs:78:9:100:9 | {...} | | +| Finally.cs:77:16:77:20 | Before ... > ... | Finally.cs:77:16:77:16 | access to local variable i | | | Finally.cs:77:20:77:20 | 0 | Finally.cs:77:16:77:20 | ... > ... | | +| Finally.cs:78:9:100:9 | After {...} | Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | | | Finally.cs:78:9:100:9 | {...} | Finally.cs:79:13:99:13 | try {...} ... | | +| Finally.cs:79:13:99:13 | After try {...} ... | Finally.cs:78:9:100:9 | After {...} | | | Finally.cs:79:13:99:13 | try {...} ... | Finally.cs:80:13:87:13 | {...} | | +| Finally.cs:80:13:87:13 | After {...} | Finally.cs:89:13:99:13 | {...} | | | Finally.cs:80:13:87:13 | {...} | Finally.cs:81:17:82:27 | if (...) ... | | -| Finally.cs:81:17:82:27 | if (...) ... | Finally.cs:81:21:81:21 | access to local variable i | | +| Finally.cs:81:17:82:27 | After if (...) ... | Finally.cs:83:17:84:29 | if (...) ... | | +| Finally.cs:81:17:82:27 | if (...) ... | Finally.cs:81:21:81:26 | Before ... == ... | | | Finally.cs:81:21:81:21 | access to local variable i | Finally.cs:81:26:81:26 | 0 | | -| Finally.cs:81:21:81:26 | ... == ... | Finally.cs:82:21:82:27 | return ...; | true | -| Finally.cs:81:21:81:26 | ... == ... | Finally.cs:83:17:84:29 | if (...) ... | false | +| Finally.cs:81:21:81:26 | ... == ... | Finally.cs:81:21:81:26 | After ... == ... [false] | false | +| Finally.cs:81:21:81:26 | ... == ... | Finally.cs:81:21:81:26 | After ... == ... [true] | true | +| Finally.cs:81:21:81:26 | After ... == ... [false] | Finally.cs:81:17:82:27 | After if (...) ... | | +| Finally.cs:81:21:81:26 | After ... == ... [true] | Finally.cs:82:21:82:27 | Before return ...; | | +| Finally.cs:81:21:81:26 | Before ... == ... | Finally.cs:81:21:81:21 | access to local variable i | | | Finally.cs:81:26:81:26 | 0 | Finally.cs:81:21:81:26 | ... == ... | | +| Finally.cs:82:21:82:27 | Before return ...; | Finally.cs:82:21:82:27 | return ...; | | | Finally.cs:82:21:82:27 | return ...; | Finally.cs:89:13:99:13 | {...} | return | -| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:83:21:83:21 | access to local variable i | | +| Finally.cs:83:17:84:29 | After if (...) ... | Finally.cs:85:17:86:26 | if (...) ... | | +| Finally.cs:83:17:84:29 | if (...) ... | Finally.cs:83:21:83:26 | Before ... == ... | | | Finally.cs:83:21:83:21 | access to local variable i | Finally.cs:83:26:83:26 | 1 | | -| Finally.cs:83:21:83:26 | ... == ... | Finally.cs:84:21:84:29 | continue; | true | -| Finally.cs:83:21:83:26 | ... == ... | Finally.cs:85:17:86:26 | if (...) ... | false | +| Finally.cs:83:21:83:26 | ... == ... | Finally.cs:83:21:83:26 | After ... == ... [false] | false | +| Finally.cs:83:21:83:26 | ... == ... | Finally.cs:83:21:83:26 | After ... == ... [true] | true | +| Finally.cs:83:21:83:26 | After ... == ... [false] | Finally.cs:83:17:84:29 | After if (...) ... | | +| Finally.cs:83:21:83:26 | After ... == ... [true] | Finally.cs:84:21:84:29 | Before continue; | | +| Finally.cs:83:21:83:26 | Before ... == ... | Finally.cs:83:21:83:21 | access to local variable i | | | Finally.cs:83:26:83:26 | 1 | Finally.cs:83:21:83:26 | ... == ... | | +| Finally.cs:84:21:84:29 | Before continue; | Finally.cs:84:21:84:29 | continue; | | | Finally.cs:84:21:84:29 | continue; | Finally.cs:89:13:99:13 | {...} | continue | -| Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:85:21:85:21 | access to local variable i | | +| Finally.cs:85:17:86:26 | After if (...) ... | Finally.cs:80:13:87:13 | After {...} | | +| Finally.cs:85:17:86:26 | if (...) ... | Finally.cs:85:21:85:26 | Before ... == ... | | | Finally.cs:85:21:85:21 | access to local variable i | Finally.cs:85:26:85:26 | 2 | | -| Finally.cs:85:21:85:26 | ... == ... | Finally.cs:86:21:86:26 | break; | true | -| Finally.cs:85:21:85:26 | ... == ... | Finally.cs:89:13:99:13 | {...} | false | +| Finally.cs:85:21:85:26 | ... == ... | Finally.cs:85:21:85:26 | After ... == ... [false] | false | +| Finally.cs:85:21:85:26 | ... == ... | Finally.cs:85:21:85:26 | After ... == ... [true] | true | +| Finally.cs:85:21:85:26 | After ... == ... [false] | Finally.cs:85:17:86:26 | After if (...) ... | | +| Finally.cs:85:21:85:26 | After ... == ... [true] | Finally.cs:86:21:86:26 | Before break; | | +| Finally.cs:85:21:85:26 | Before ... == ... | Finally.cs:85:21:85:21 | access to local variable i | | | Finally.cs:85:26:85:26 | 2 | Finally.cs:85:21:85:26 | ... == ... | | +| Finally.cs:86:21:86:26 | Before break; | Finally.cs:86:21:86:26 | break; | | | Finally.cs:86:21:86:26 | break; | Finally.cs:89:13:99:13 | {...} | break | +| Finally.cs:89:13:99:13 | After {...} | Finally.cs:74:10:74:11 | Normal Exit | return | +| Finally.cs:89:13:99:13 | After {...} | Finally.cs:77:9:100:9 | After while (...) ... | break | +| Finally.cs:89:13:99:13 | After {...} | Finally.cs:77:9:100:9 | [LoopHeader] while (...) ... | continue | +| Finally.cs:89:13:99:13 | After {...} | Finally.cs:79:13:99:13 | After try {...} ... | | | Finally.cs:89:13:99:13 | {...} | Finally.cs:90:17:98:17 | try {...} ... | | +| Finally.cs:90:17:98:17 | After try {...} ... | Finally.cs:89:13:99:13 | After {...} | | | Finally.cs:90:17:98:17 | try {...} ... | Finally.cs:91:17:94:17 | {...} | | +| Finally.cs:91:17:94:17 | After {...} | Finally.cs:96:17:98:17 | {...} | | | Finally.cs:91:17:94:17 | {...} | Finally.cs:92:21:93:46 | if (...) ... | | -| Finally.cs:92:21:93:46 | if (...) ... | Finally.cs:92:25:92:25 | access to local variable i | | +| Finally.cs:92:21:93:46 | After if (...) ... | Finally.cs:91:17:94:17 | After {...} | | +| Finally.cs:92:21:93:46 | if (...) ... | Finally.cs:92:25:92:30 | Before ... == ... | | | Finally.cs:92:25:92:25 | access to local variable i | Finally.cs:92:30:92:30 | 3 | | -| Finally.cs:92:25:92:30 | ... == ... | Finally.cs:93:31:93:45 | object creation of type Exception | true | -| Finally.cs:92:25:92:30 | ... == ... | Finally.cs:96:17:98:17 | {...} | false | +| Finally.cs:92:25:92:30 | ... == ... | Finally.cs:92:25:92:30 | After ... == ... [false] | false | +| Finally.cs:92:25:92:30 | ... == ... | Finally.cs:92:25:92:30 | After ... == ... [true] | true | +| Finally.cs:92:25:92:30 | After ... == ... [false] | Finally.cs:92:21:93:46 | After if (...) ... | | +| Finally.cs:92:25:92:30 | After ... == ... [true] | Finally.cs:93:25:93:46 | Before throw ...; | | +| Finally.cs:92:25:92:30 | Before ... == ... | Finally.cs:92:25:92:25 | access to local variable i | | | Finally.cs:92:30:92:30 | 3 | Finally.cs:92:25:92:30 | ... == ... | | +| Finally.cs:93:25:93:46 | Before throw ...; | Finally.cs:93:31:93:45 | Before object creation of type Exception | | | Finally.cs:93:25:93:46 | throw ...; | Finally.cs:96:17:98:17 | {...} | exception | -| Finally.cs:93:31:93:45 | object creation of type Exception | Finally.cs:93:25:93:46 | throw ...; | | +| Finally.cs:93:31:93:45 | After object creation of type Exception | Finally.cs:93:25:93:46 | throw ...; | | +| Finally.cs:93:31:93:45 | Before object creation of type Exception | Finally.cs:93:31:93:45 | object creation of type Exception | | +| Finally.cs:93:31:93:45 | object creation of type Exception | Finally.cs:93:31:93:45 | After object creation of type Exception | | | Finally.cs:93:31:93:45 | object creation of type Exception | Finally.cs:96:17:98:17 | {...} | exception | +| Finally.cs:96:17:98:17 | After {...} | Finally.cs:74:10:74:11 | Exceptional Exit | exception | +| Finally.cs:96:17:98:17 | After {...} | Finally.cs:90:17:98:17 | After try {...} ... | | | Finally.cs:96:17:98:17 | {...} | Finally.cs:97:21:97:24 | ...; | | | Finally.cs:97:21:97:21 | access to local variable i | Finally.cs:97:21:97:23 | ...-- | | -| Finally.cs:97:21:97:23 | ...-- | Finally.cs:74:10:74:11 | exit M4 (abnormal) | exception | -| Finally.cs:97:21:97:23 | ...-- | Finally.cs:74:10:74:11 | exit M4 (normal) | break, return | -| Finally.cs:97:21:97:23 | ...-- | Finally.cs:77:16:77:16 | access to local variable i | , continue | -| Finally.cs:97:21:97:24 | ...; | Finally.cs:97:21:97:21 | access to local variable i | | -| Finally.cs:103:10:103:11 | enter M5 | Finally.cs:104:5:119:5 | {...} | | -| Finally.cs:103:10:103:11 | exit M5 (abnormal) | Finally.cs:103:10:103:11 | exit M5 | | -| Finally.cs:103:10:103:11 | exit M5 (normal) | Finally.cs:103:10:103:11 | exit M5 | | +| Finally.cs:97:21:97:23 | ...-- | Finally.cs:97:21:97:23 | After ...-- | | +| Finally.cs:97:21:97:23 | After ...-- | Finally.cs:97:21:97:24 | After ...; | | +| Finally.cs:97:21:97:23 | Before ...-- | Finally.cs:97:21:97:21 | access to local variable i | | +| Finally.cs:97:21:97:24 | ...; | Finally.cs:97:21:97:23 | Before ...-- | | +| Finally.cs:97:21:97:24 | After ...; | Finally.cs:96:17:98:17 | After {...} | | +| Finally.cs:103:10:103:11 | Entry | Finally.cs:104:5:119:5 | {...} | | +| Finally.cs:103:10:103:11 | Exceptional Exit | Finally.cs:103:10:103:11 | Exit | | +| Finally.cs:103:10:103:11 | Normal Exit | Finally.cs:103:10:103:11 | Exit | | +| Finally.cs:104:5:119:5 | After {...} | Finally.cs:103:10:103:11 | Normal Exit | | | Finally.cs:104:5:119:5 | {...} | Finally.cs:105:9:118:9 | try {...} ... | | +| Finally.cs:105:9:118:9 | After try {...} ... | Finally.cs:104:5:119:5 | After {...} | | | Finally.cs:105:9:118:9 | try {...} ... | Finally.cs:106:9:111:9 | {...} | | +| Finally.cs:106:9:111:9 | After {...} | Finally.cs:113:9:118:9 | {...} | | | Finally.cs:106:9:111:9 | {...} | Finally.cs:107:13:108:23 | if (...) ... | | -| Finally.cs:107:13:108:23 | if (...) ... | Finally.cs:107:17:107:21 | this access | | -| Finally.cs:107:17:107:21 | access to field Field | Finally.cs:107:17:107:28 | access to property Length | | +| Finally.cs:107:13:108:23 | After if (...) ... | Finally.cs:109:13:110:49 | if (...) ... | | +| Finally.cs:107:13:108:23 | if (...) ... | Finally.cs:107:17:107:33 | Before ... == ... | | +| Finally.cs:107:17:107:21 | After access to field Field | Finally.cs:107:17:107:28 | access to property Length | | +| Finally.cs:107:17:107:21 | Before access to field Field | Finally.cs:107:17:107:21 | this access | | +| Finally.cs:107:17:107:21 | access to field Field | Finally.cs:107:17:107:21 | After access to field Field | | | Finally.cs:107:17:107:21 | access to field Field | Finally.cs:113:9:118:9 | {...} | exception | | Finally.cs:107:17:107:21 | this access | Finally.cs:107:17:107:21 | access to field Field | | -| Finally.cs:107:17:107:28 | access to property Length | Finally.cs:107:33:107:33 | 0 | | +| Finally.cs:107:17:107:28 | After access to property Length | Finally.cs:107:33:107:33 | 0 | | +| Finally.cs:107:17:107:28 | Before access to property Length | Finally.cs:107:17:107:21 | Before access to field Field | | +| Finally.cs:107:17:107:28 | access to property Length | Finally.cs:107:17:107:28 | After access to property Length | | | Finally.cs:107:17:107:28 | access to property Length | Finally.cs:113:9:118:9 | {...} | exception | -| Finally.cs:107:17:107:33 | ... == ... | Finally.cs:108:17:108:23 | return ...; | true | -| Finally.cs:107:17:107:33 | ... == ... | Finally.cs:109:13:110:49 | if (...) ... | false | +| Finally.cs:107:17:107:33 | ... == ... | Finally.cs:107:17:107:33 | After ... == ... [false] | false | +| Finally.cs:107:17:107:33 | ... == ... | Finally.cs:107:17:107:33 | After ... == ... [true] | true | +| Finally.cs:107:17:107:33 | After ... == ... [false] | Finally.cs:107:13:108:23 | After if (...) ... | | +| Finally.cs:107:17:107:33 | After ... == ... [true] | Finally.cs:108:17:108:23 | Before return ...; | | +| Finally.cs:107:17:107:33 | Before ... == ... | Finally.cs:107:17:107:28 | Before access to property Length | | | Finally.cs:107:33:107:33 | 0 | Finally.cs:107:17:107:33 | ... == ... | | +| Finally.cs:108:17:108:23 | Before return ...; | Finally.cs:108:17:108:23 | return ...; | | | Finally.cs:108:17:108:23 | return ...; | Finally.cs:113:9:118:9 | {...} | return | -| Finally.cs:109:13:110:49 | if (...) ... | Finally.cs:109:17:109:21 | this access | | -| Finally.cs:109:17:109:21 | access to field Field | Finally.cs:109:17:109:28 | access to property Length | | +| Finally.cs:109:13:110:49 | After if (...) ... | Finally.cs:106:9:111:9 | After {...} | | +| Finally.cs:109:13:110:49 | if (...) ... | Finally.cs:109:17:109:33 | Before ... == ... | | +| Finally.cs:109:17:109:21 | After access to field Field | Finally.cs:109:17:109:28 | access to property Length | | +| Finally.cs:109:17:109:21 | Before access to field Field | Finally.cs:109:17:109:21 | this access | | +| Finally.cs:109:17:109:21 | access to field Field | Finally.cs:109:17:109:21 | After access to field Field | | | Finally.cs:109:17:109:21 | access to field Field | Finally.cs:113:9:118:9 | {...} | exception | | Finally.cs:109:17:109:21 | this access | Finally.cs:109:17:109:21 | access to field Field | | -| Finally.cs:109:17:109:28 | access to property Length | Finally.cs:109:33:109:33 | 1 | | +| Finally.cs:109:17:109:28 | After access to property Length | Finally.cs:109:33:109:33 | 1 | | +| Finally.cs:109:17:109:28 | Before access to property Length | Finally.cs:109:17:109:21 | Before access to field Field | | +| Finally.cs:109:17:109:28 | access to property Length | Finally.cs:109:17:109:28 | After access to property Length | | | Finally.cs:109:17:109:28 | access to property Length | Finally.cs:113:9:118:9 | {...} | exception | -| Finally.cs:109:17:109:33 | ... == ... | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | true | -| Finally.cs:109:17:109:33 | ... == ... | Finally.cs:113:9:118:9 | {...} | false | +| Finally.cs:109:17:109:33 | ... == ... | Finally.cs:109:17:109:33 | After ... == ... [false] | false | +| Finally.cs:109:17:109:33 | ... == ... | Finally.cs:109:17:109:33 | After ... == ... [true] | true | +| Finally.cs:109:17:109:33 | After ... == ... [false] | Finally.cs:109:13:110:49 | After if (...) ... | | +| Finally.cs:109:17:109:33 | After ... == ... [true] | Finally.cs:110:17:110:49 | Before throw ...; | | +| Finally.cs:109:17:109:33 | Before ... == ... | Finally.cs:109:17:109:28 | Before access to property Length | | | Finally.cs:109:33:109:33 | 1 | Finally.cs:109:17:109:33 | ... == ... | | +| Finally.cs:110:17:110:49 | Before throw ...; | Finally.cs:110:23:110:48 | Before object creation of type OutOfMemoryException | | | Finally.cs:110:17:110:49 | throw ...; | Finally.cs:113:9:118:9 | {...} | exception | -| Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | Finally.cs:110:17:110:49 | throw ...; | | +| Finally.cs:110:23:110:48 | After object creation of type OutOfMemoryException | Finally.cs:110:17:110:49 | throw ...; | | +| Finally.cs:110:23:110:48 | Before object creation of type OutOfMemoryException | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | | +| Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | Finally.cs:110:23:110:48 | After object creation of type OutOfMemoryException | | | Finally.cs:110:23:110:48 | object creation of type OutOfMemoryException | Finally.cs:113:9:118:9 | {...} | exception | +| Finally.cs:113:9:118:9 | After {...} | Finally.cs:103:10:103:11 | Exceptional Exit | exception | +| Finally.cs:113:9:118:9 | After {...} | Finally.cs:103:10:103:11 | Normal Exit | return | +| Finally.cs:113:9:118:9 | After {...} | Finally.cs:105:9:118:9 | After try {...} ... | | | Finally.cs:113:9:118:9 | {...} | Finally.cs:114:13:115:41 | if (...) ... | | -| Finally.cs:114:13:115:41 | if (...) ... | Finally.cs:114:19:114:23 | this access | | -| Finally.cs:114:17:114:36 | [false] !... | Finally.cs:116:13:117:37 | if (...) ... | false | -| Finally.cs:114:17:114:36 | [true] !... | Finally.cs:115:17:115:41 | ...; | true | -| Finally.cs:114:19:114:23 | access to field Field | Finally.cs:114:19:114:30 | access to property Length | | +| Finally.cs:114:13:115:41 | After if (...) ... | Finally.cs:116:13:117:37 | if (...) ... | | +| Finally.cs:114:13:115:41 | if (...) ... | Finally.cs:114:17:114:36 | !... | | +| Finally.cs:114:17:114:36 | !... | Finally.cs:114:19:114:35 | Before ... == ... | | +| Finally.cs:114:17:114:36 | After !... [false] | Finally.cs:114:13:115:41 | After if (...) ... | | +| Finally.cs:114:17:114:36 | After !... [true] | Finally.cs:115:17:115:41 | ...; | | +| Finally.cs:114:19:114:23 | After access to field Field | Finally.cs:114:19:114:30 | access to property Length | | +| Finally.cs:114:19:114:23 | Before access to field Field | Finally.cs:114:19:114:23 | this access | | +| Finally.cs:114:19:114:23 | access to field Field | Finally.cs:114:19:114:23 | After access to field Field | | | Finally.cs:114:19:114:23 | this access | Finally.cs:114:19:114:23 | access to field Field | | -| Finally.cs:114:19:114:30 | access to property Length | Finally.cs:114:35:114:35 | 0 | | -| Finally.cs:114:19:114:35 | ... == ... | Finally.cs:114:17:114:36 | [false] !... | true | -| Finally.cs:114:19:114:35 | ... == ... | Finally.cs:114:17:114:36 | [true] !... | false | +| Finally.cs:114:19:114:30 | After access to property Length | Finally.cs:114:35:114:35 | 0 | | +| Finally.cs:114:19:114:30 | Before access to property Length | Finally.cs:114:19:114:23 | Before access to field Field | | +| Finally.cs:114:19:114:30 | access to property Length | Finally.cs:114:19:114:30 | After access to property Length | | +| Finally.cs:114:19:114:35 | ... == ... | Finally.cs:114:19:114:35 | After ... == ... [false] | false | +| Finally.cs:114:19:114:35 | ... == ... | Finally.cs:114:19:114:35 | After ... == ... [true] | true | +| Finally.cs:114:19:114:35 | After ... == ... [false] | Finally.cs:114:17:114:36 | After !... [true] | true | +| Finally.cs:114:19:114:35 | After ... == ... [true] | Finally.cs:114:17:114:36 | After !... [false] | false | +| Finally.cs:114:19:114:35 | Before ... == ... | Finally.cs:114:19:114:30 | Before access to property Length | | | Finally.cs:114:35:114:35 | 0 | Finally.cs:114:19:114:35 | ... == ... | | -| Finally.cs:115:17:115:40 | call to method WriteLine | Finally.cs:116:13:117:37 | if (...) ... | | -| Finally.cs:115:17:115:41 | ...; | Finally.cs:115:35:115:39 | this access | | -| Finally.cs:115:35:115:39 | access to field Field | Finally.cs:115:17:115:40 | call to method WriteLine | | +| Finally.cs:115:17:115:40 | After call to method WriteLine | Finally.cs:115:17:115:41 | After ...; | | +| Finally.cs:115:17:115:40 | Before call to method WriteLine | Finally.cs:115:35:115:39 | Before access to field Field | | +| Finally.cs:115:17:115:40 | call to method WriteLine | Finally.cs:115:17:115:40 | After call to method WriteLine | | +| Finally.cs:115:17:115:41 | ...; | Finally.cs:115:17:115:40 | Before call to method WriteLine | | +| Finally.cs:115:17:115:41 | After ...; | Finally.cs:114:13:115:41 | After if (...) ... | | +| Finally.cs:115:35:115:39 | After access to field Field | Finally.cs:115:17:115:40 | call to method WriteLine | | +| Finally.cs:115:35:115:39 | Before access to field Field | Finally.cs:115:35:115:39 | this access | | +| Finally.cs:115:35:115:39 | access to field Field | Finally.cs:115:35:115:39 | After access to field Field | | | Finally.cs:115:35:115:39 | this access | Finally.cs:115:35:115:39 | access to field Field | | -| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:116:17:116:21 | this access | | -| Finally.cs:116:17:116:21 | access to field Field | Finally.cs:116:17:116:28 | access to property Length | | +| Finally.cs:116:13:117:37 | After if (...) ... | Finally.cs:113:9:118:9 | After {...} | | +| Finally.cs:116:13:117:37 | if (...) ... | Finally.cs:116:17:116:32 | Before ... > ... | | +| Finally.cs:116:17:116:21 | After access to field Field | Finally.cs:116:17:116:28 | access to property Length | | +| Finally.cs:116:17:116:21 | Before access to field Field | Finally.cs:116:17:116:21 | this access | | +| Finally.cs:116:17:116:21 | access to field Field | Finally.cs:116:17:116:21 | After access to field Field | | | Finally.cs:116:17:116:21 | this access | Finally.cs:116:17:116:21 | access to field Field | | -| Finally.cs:116:17:116:28 | access to property Length | Finally.cs:116:32:116:32 | 0 | | -| Finally.cs:116:17:116:32 | ... > ... | Finally.cs:103:10:103:11 | exit M5 (abnormal) | exception | -| Finally.cs:116:17:116:32 | ... > ... | Finally.cs:103:10:103:11 | exit M5 (normal) | false, return | -| Finally.cs:116:17:116:32 | ... > ... | Finally.cs:117:17:117:37 | ...; | true | +| Finally.cs:116:17:116:28 | After access to property Length | Finally.cs:116:32:116:32 | 0 | | +| Finally.cs:116:17:116:28 | Before access to property Length | Finally.cs:116:17:116:21 | Before access to field Field | | +| Finally.cs:116:17:116:28 | access to property Length | Finally.cs:116:17:116:28 | After access to property Length | | +| Finally.cs:116:17:116:32 | ... > ... | Finally.cs:116:17:116:32 | After ... > ... [false] | false | +| Finally.cs:116:17:116:32 | ... > ... | Finally.cs:116:17:116:32 | After ... > ... [true] | true | +| Finally.cs:116:17:116:32 | After ... > ... [false] | Finally.cs:116:13:117:37 | After if (...) ... | | +| Finally.cs:116:17:116:32 | After ... > ... [true] | Finally.cs:117:17:117:37 | ...; | | +| Finally.cs:116:17:116:32 | Before ... > ... | Finally.cs:116:17:116:28 | Before access to property Length | | | Finally.cs:116:32:116:32 | 0 | Finally.cs:116:17:116:32 | ... > ... | | -| Finally.cs:117:17:117:36 | call to method WriteLine | Finally.cs:103:10:103:11 | exit M5 (abnormal) | exception | -| Finally.cs:117:17:117:36 | call to method WriteLine | Finally.cs:103:10:103:11 | exit M5 (normal) | , return | -| Finally.cs:117:17:117:37 | ...; | Finally.cs:117:35:117:35 | 1 | | +| Finally.cs:117:17:117:36 | After call to method WriteLine | Finally.cs:117:17:117:37 | After ...; | | +| Finally.cs:117:17:117:36 | Before call to method WriteLine | Finally.cs:117:35:117:35 | 1 | | +| Finally.cs:117:17:117:36 | call to method WriteLine | Finally.cs:117:17:117:36 | After call to method WriteLine | | +| Finally.cs:117:17:117:37 | ...; | Finally.cs:117:17:117:36 | Before call to method WriteLine | | +| Finally.cs:117:17:117:37 | After ...; | Finally.cs:116:13:117:37 | After if (...) ... | | | Finally.cs:117:35:117:35 | 1 | Finally.cs:117:17:117:36 | call to method WriteLine | | -| Finally.cs:121:10:121:11 | enter M6 | Finally.cs:122:5:131:5 | {...} | | -| Finally.cs:121:10:121:11 | exit M6 (normal) | Finally.cs:121:10:121:11 | exit M6 | | +| Finally.cs:121:10:121:11 | Entry | Finally.cs:122:5:131:5 | {...} | | +| Finally.cs:121:10:121:11 | Normal Exit | Finally.cs:121:10:121:11 | Exit | | +| Finally.cs:122:5:131:5 | After {...} | Finally.cs:121:10:121:11 | Normal Exit | | | Finally.cs:122:5:131:5 | {...} | Finally.cs:123:9:130:9 | try {...} ... | | +| Finally.cs:123:9:130:9 | After try {...} ... | Finally.cs:122:5:131:5 | After {...} | | | Finally.cs:123:9:130:9 | try {...} ... | Finally.cs:124:9:126:9 | {...} | | +| Finally.cs:124:9:126:9 | After {...} | Finally.cs:123:9:130:9 | After try {...} ... | | | Finally.cs:124:9:126:9 | {...} | Finally.cs:125:13:125:41 | ... ...; | | -| Finally.cs:125:13:125:41 | ... ...; | Finally.cs:125:24:125:24 | 0 | | -| Finally.cs:125:17:125:40 | Double temp = ... | Finally.cs:121:10:121:11 | exit M6 (normal) | | +| Finally.cs:125:13:125:41 | ... ...; | Finally.cs:125:17:125:40 | Before Double temp = ... | | +| Finally.cs:125:13:125:41 | After ... ...; | Finally.cs:124:9:126:9 | After {...} | | +| Finally.cs:125:17:125:20 | access to local variable temp | Finally.cs:125:24:125:40 | Before ... / ... | | +| Finally.cs:125:17:125:40 | After Double temp = ... | Finally.cs:125:13:125:41 | After ... ...; | | +| Finally.cs:125:17:125:40 | Before Double temp = ... | Finally.cs:125:17:125:20 | access to local variable temp | | +| Finally.cs:125:17:125:40 | Double temp = ... | Finally.cs:125:17:125:40 | After Double temp = ... | | | Finally.cs:125:24:125:24 | 0 | Finally.cs:125:24:125:24 | (...) ... | | -| Finally.cs:125:24:125:24 | (...) ... | Finally.cs:125:28:125:40 | access to constant E | | -| Finally.cs:125:24:125:40 | ... / ... | Finally.cs:125:17:125:40 | Double temp = ... | | +| Finally.cs:125:24:125:24 | (...) ... | Finally.cs:125:24:125:24 | After (...) ... | | +| Finally.cs:125:24:125:24 | After (...) ... | Finally.cs:125:28:125:40 | access to constant E | | +| Finally.cs:125:24:125:24 | Before (...) ... | Finally.cs:125:24:125:24 | 0 | | +| Finally.cs:125:24:125:40 | ... / ... | Finally.cs:125:24:125:40 | After ... / ... | | +| Finally.cs:125:24:125:40 | After ... / ... | Finally.cs:125:17:125:40 | Double temp = ... | | +| Finally.cs:125:24:125:40 | Before ... / ... | Finally.cs:125:24:125:24 | Before (...) ... | | | Finally.cs:125:28:125:40 | access to constant E | Finally.cs:125:24:125:40 | ... / ... | | -| Finally.cs:133:10:133:11 | enter M7 | Finally.cs:134:5:145:5 | {...} | | -| Finally.cs:133:10:133:11 | exit M7 (abnormal) | Finally.cs:133:10:133:11 | exit M7 | | +| Finally.cs:133:10:133:11 | Entry | Finally.cs:134:5:145:5 | {...} | | +| Finally.cs:133:10:133:11 | Exceptional Exit | Finally.cs:133:10:133:11 | Exit | | | Finally.cs:134:5:145:5 | {...} | Finally.cs:135:9:143:9 | try {...} ... | | | Finally.cs:135:9:143:9 | try {...} ... | Finally.cs:136:9:138:9 | {...} | | +| Finally.cs:136:9:138:9 | After {...} | Finally.cs:140:9:143:9 | {...} | | | Finally.cs:136:9:138:9 | {...} | Finally.cs:137:13:137:37 | ...; | | -| Finally.cs:137:13:137:36 | call to method WriteLine | Finally.cs:140:9:143:9 | {...} | , exception | -| Finally.cs:137:13:137:37 | ...; | Finally.cs:137:31:137:35 | "Try" | | +| Finally.cs:137:13:137:36 | After call to method WriteLine | Finally.cs:137:13:137:37 | After ...; | | +| Finally.cs:137:13:137:36 | Before call to method WriteLine | Finally.cs:137:31:137:35 | "Try" | | +| Finally.cs:137:13:137:36 | call to method WriteLine | Finally.cs:137:13:137:36 | After call to method WriteLine | | +| Finally.cs:137:13:137:36 | call to method WriteLine | Finally.cs:140:9:143:9 | {...} | exception | +| Finally.cs:137:13:137:37 | ...; | Finally.cs:137:13:137:36 | Before call to method WriteLine | | +| Finally.cs:137:13:137:37 | After ...; | Finally.cs:136:9:138:9 | After {...} | | | Finally.cs:137:31:137:35 | "Try" | Finally.cs:137:13:137:36 | call to method WriteLine | | -| Finally.cs:140:9:143:9 | {...} | Finally.cs:141:41:141:42 | "" | | -| Finally.cs:141:13:141:44 | throw ...; | Finally.cs:133:10:133:11 | exit M7 (abnormal) | exception | -| Finally.cs:141:19:141:43 | object creation of type ArgumentException | Finally.cs:141:13:141:44 | throw ...; | | +| Finally.cs:140:9:143:9 | {...} | Finally.cs:141:13:141:44 | Before throw ...; | | +| Finally.cs:141:13:141:44 | Before throw ...; | Finally.cs:141:19:141:43 | Before object creation of type ArgumentException | | +| Finally.cs:141:13:141:44 | throw ...; | Finally.cs:133:10:133:11 | Exceptional Exit | exception | +| Finally.cs:141:19:141:43 | After object creation of type ArgumentException | Finally.cs:141:13:141:44 | throw ...; | | +| Finally.cs:141:19:141:43 | Before object creation of type ArgumentException | Finally.cs:141:41:141:42 | "" | | +| Finally.cs:141:19:141:43 | object creation of type ArgumentException | Finally.cs:141:19:141:43 | After object creation of type ArgumentException | | | Finally.cs:141:41:141:42 | "" | Finally.cs:141:19:141:43 | object creation of type ArgumentException | | -| Finally.cs:147:10:147:11 | enter M8 | Finally.cs:148:5:170:5 | {...} | | -| Finally.cs:147:10:147:11 | exit M8 (abnormal) | Finally.cs:147:10:147:11 | exit M8 | | -| Finally.cs:147:10:147:11 | exit M8 (normal) | Finally.cs:147:10:147:11 | exit M8 | | +| Finally.cs:147:10:147:11 | Entry | Finally.cs:147:22:147:25 | args | | +| Finally.cs:147:10:147:11 | Exceptional Exit | Finally.cs:147:10:147:11 | Exit | | +| Finally.cs:147:10:147:11 | Normal Exit | Finally.cs:147:10:147:11 | Exit | | +| Finally.cs:147:22:147:25 | args | Finally.cs:148:5:170:5 | {...} | | +| Finally.cs:148:5:170:5 | After {...} | Finally.cs:147:10:147:11 | Normal Exit | | | Finally.cs:148:5:170:5 | {...} | Finally.cs:149:9:169:9 | try {...} ... | | +| Finally.cs:149:9:169:9 | After try {...} ... | Finally.cs:148:5:170:5 | After {...} | | | Finally.cs:149:9:169:9 | try {...} ... | Finally.cs:150:9:153:9 | {...} | | +| Finally.cs:150:9:153:9 | After {...} | Finally.cs:155:9:169:9 | {...} | | | Finally.cs:150:9:153:9 | {...} | Finally.cs:151:13:152:50 | if (...) ... | | -| Finally.cs:151:13:152:50 | if (...) ... | Finally.cs:151:17:151:20 | access to parameter args | | +| Finally.cs:151:13:152:50 | After if (...) ... | Finally.cs:150:9:153:9 | After {...} | | +| Finally.cs:151:13:152:50 | if (...) ... | Finally.cs:151:17:151:28 | Before ... == ... | | | Finally.cs:151:17:151:20 | access to parameter args | Finally.cs:151:25:151:28 | null | | -| Finally.cs:151:17:151:28 | ... == ... | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | true | -| Finally.cs:151:17:151:28 | ... == ... | Finally.cs:155:9:169:9 | {...} | false | +| Finally.cs:151:17:151:28 | ... == ... | Finally.cs:151:17:151:28 | After ... == ... [false] | false | +| Finally.cs:151:17:151:28 | ... == ... | Finally.cs:151:17:151:28 | After ... == ... [true] | true | +| Finally.cs:151:17:151:28 | After ... == ... [false] | Finally.cs:151:13:152:50 | After if (...) ... | | +| Finally.cs:151:17:151:28 | After ... == ... [true] | Finally.cs:152:17:152:50 | Before throw ...; | | +| Finally.cs:151:17:151:28 | Before ... == ... | Finally.cs:151:17:151:20 | access to parameter args | | | Finally.cs:151:25:151:28 | null | Finally.cs:151:17:151:28 | ... == ... | | +| Finally.cs:152:17:152:50 | Before throw ...; | Finally.cs:152:23:152:49 | Before object creation of type ArgumentNullException | | | Finally.cs:152:17:152:50 | throw ...; | Finally.cs:155:9:169:9 | {...} | exception | -| Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | Finally.cs:152:17:152:50 | throw ...; | | +| Finally.cs:152:23:152:49 | After object creation of type ArgumentNullException | Finally.cs:152:17:152:50 | throw ...; | | +| Finally.cs:152:23:152:49 | Before object creation of type ArgumentNullException | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | | +| Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | Finally.cs:152:23:152:49 | After object creation of type ArgumentNullException | | | Finally.cs:152:23:152:49 | object creation of type ArgumentNullException | Finally.cs:155:9:169:9 | {...} | exception | +| Finally.cs:155:9:169:9 | After {...} | Finally.cs:147:10:147:11 | Exceptional Exit | exception | +| Finally.cs:155:9:169:9 | After {...} | Finally.cs:149:9:169:9 | After try {...} ... | | | Finally.cs:155:9:169:9 | {...} | Finally.cs:156:13:168:13 | try {...} ... | | +| Finally.cs:156:13:168:13 | After try {...} ... | Finally.cs:155:9:169:9 | After {...} | | | Finally.cs:156:13:168:13 | try {...} ... | Finally.cs:157:13:160:13 | {...} | | +| Finally.cs:157:13:160:13 | After {...} | Finally.cs:156:13:168:13 | After try {...} ... | | | Finally.cs:157:13:160:13 | {...} | Finally.cs:158:17:159:45 | if (...) ... | | -| Finally.cs:158:17:159:45 | if (...) ... | Finally.cs:158:21:158:24 | access to parameter args | | +| Finally.cs:158:17:159:45 | After if (...) ... | Finally.cs:157:13:160:13 | After {...} | | +| Finally.cs:158:17:159:45 | if (...) ... | Finally.cs:158:21:158:36 | Before ... == ... | | | Finally.cs:158:21:158:24 | access to parameter args | Finally.cs:158:21:158:31 | access to property Length | | -| Finally.cs:158:21:158:31 | access to property Length | Finally.cs:158:36:158:36 | 1 | | +| Finally.cs:158:21:158:31 | After access to property Length | Finally.cs:158:36:158:36 | 1 | | +| Finally.cs:158:21:158:31 | Before access to property Length | Finally.cs:158:21:158:24 | access to parameter args | | +| Finally.cs:158:21:158:31 | access to property Length | Finally.cs:158:21:158:31 | After access to property Length | | | Finally.cs:158:21:158:31 | access to property Length | Finally.cs:161:13:164:13 | catch (...) {...} | exception | -| Finally.cs:158:21:158:36 | ... == ... | Finally.cs:147:10:147:11 | exit M8 (abnormal) | exception | -| Finally.cs:158:21:158:36 | ... == ... | Finally.cs:147:10:147:11 | exit M8 (normal) | false | -| Finally.cs:158:21:158:36 | ... == ... | Finally.cs:159:41:159:43 | "1" | true | +| Finally.cs:158:21:158:36 | ... == ... | Finally.cs:158:21:158:36 | After ... == ... [false] | false | +| Finally.cs:158:21:158:36 | ... == ... | Finally.cs:158:21:158:36 | After ... == ... [true] | true | +| Finally.cs:158:21:158:36 | After ... == ... [false] | Finally.cs:158:17:159:45 | After if (...) ... | | +| Finally.cs:158:21:158:36 | After ... == ... [true] | Finally.cs:159:21:159:45 | Before throw ...; | | +| Finally.cs:158:21:158:36 | Before ... == ... | Finally.cs:158:21:158:31 | Before access to property Length | | | Finally.cs:158:36:158:36 | 1 | Finally.cs:158:21:158:36 | ... == ... | | +| Finally.cs:159:21:159:45 | Before throw ...; | Finally.cs:159:27:159:44 | Before object creation of type Exception | | | Finally.cs:159:21:159:45 | throw ...; | Finally.cs:161:13:164:13 | catch (...) {...} | exception | -| Finally.cs:159:27:159:44 | object creation of type Exception | Finally.cs:159:21:159:45 | throw ...; | | +| Finally.cs:159:27:159:44 | After object creation of type Exception | Finally.cs:159:21:159:45 | throw ...; | | +| Finally.cs:159:27:159:44 | Before object creation of type Exception | Finally.cs:159:41:159:43 | "1" | | +| Finally.cs:159:27:159:44 | object creation of type Exception | Finally.cs:159:27:159:44 | After object creation of type Exception | | | Finally.cs:159:27:159:44 | object creation of type Exception | Finally.cs:161:13:164:13 | catch (...) {...} | exception | | Finally.cs:159:41:159:43 | "1" | Finally.cs:159:27:159:44 | object creation of type Exception | | -| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:161:30:161:30 | Exception e | match | -| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:165:13:168:13 | catch {...} | no-match | -| Finally.cs:161:30:161:30 | Exception e | Finally.cs:161:39:161:39 | access to local variable e | | +| Finally.cs:161:13:164:13 | After catch (...) {...} [match] | Finally.cs:161:30:161:30 | Exception e | | +| Finally.cs:161:13:164:13 | After catch (...) {...} [no-match] | Finally.cs:165:13:168:13 | catch {...} | | +| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:161:13:164:13 | After catch (...) {...} [match] | match | +| Finally.cs:161:13:164:13 | catch (...) {...} | Finally.cs:161:13:164:13 | After catch (...) {...} [no-match] | no-match | +| Finally.cs:161:30:161:30 | Exception e | Finally.cs:161:39:161:54 | Before ... == ... | | | Finally.cs:161:39:161:39 | access to local variable e | Finally.cs:161:39:161:47 | access to property Message | | -| Finally.cs:161:39:161:47 | access to property Message | Finally.cs:161:52:161:54 | "1" | | -| Finally.cs:161:39:161:54 | ... == ... | Finally.cs:162:13:164:13 | {...} | true | -| Finally.cs:161:39:161:54 | ... == ... | Finally.cs:165:13:168:13 | catch {...} | false | +| Finally.cs:161:39:161:47 | After access to property Message | Finally.cs:161:52:161:54 | "1" | | +| Finally.cs:161:39:161:47 | Before access to property Message | Finally.cs:161:39:161:39 | access to local variable e | | +| Finally.cs:161:39:161:47 | access to property Message | Finally.cs:161:39:161:47 | After access to property Message | | +| Finally.cs:161:39:161:54 | ... == ... | Finally.cs:161:39:161:54 | After ... == ... [false] | false | +| Finally.cs:161:39:161:54 | ... == ... | Finally.cs:161:39:161:54 | After ... == ... [true] | true | +| Finally.cs:161:39:161:54 | After ... == ... [false] | Finally.cs:161:13:164:13 | After catch (...) {...} [no-match] | no-match | +| Finally.cs:161:39:161:54 | After ... == ... [true] | Finally.cs:162:13:164:13 | {...} | | +| Finally.cs:161:39:161:54 | Before ... == ... | Finally.cs:161:39:161:47 | Before access to property Message | | | Finally.cs:161:52:161:54 | "1" | Finally.cs:161:39:161:54 | ... == ... | | +| Finally.cs:162:13:164:13 | After {...} | Finally.cs:156:13:168:13 | After try {...} ... | | | Finally.cs:162:13:164:13 | {...} | Finally.cs:163:17:163:43 | ...; | | -| Finally.cs:163:17:163:42 | call to method WriteLine | Finally.cs:147:10:147:11 | exit M8 (abnormal) | exception | -| Finally.cs:163:17:163:42 | call to method WriteLine | Finally.cs:147:10:147:11 | exit M8 (normal) | | -| Finally.cs:163:17:163:43 | ...; | Finally.cs:163:35:163:38 | access to parameter args | | +| Finally.cs:163:17:163:42 | After call to method WriteLine | Finally.cs:163:17:163:43 | After ...; | | +| Finally.cs:163:17:163:42 | Before call to method WriteLine | Finally.cs:163:35:163:41 | Before access to array element | | +| Finally.cs:163:17:163:42 | call to method WriteLine | Finally.cs:163:17:163:42 | After call to method WriteLine | | +| Finally.cs:163:17:163:43 | ...; | Finally.cs:163:17:163:42 | Before call to method WriteLine | | +| Finally.cs:163:17:163:43 | After ...; | Finally.cs:162:13:164:13 | After {...} | | | Finally.cs:163:35:163:38 | access to parameter args | Finally.cs:163:40:163:40 | 0 | | -| Finally.cs:163:35:163:41 | access to array element | Finally.cs:163:17:163:42 | call to method WriteLine | | +| Finally.cs:163:35:163:41 | After access to array element | Finally.cs:163:17:163:42 | call to method WriteLine | | +| Finally.cs:163:35:163:41 | Before access to array element | Finally.cs:163:35:163:38 | access to parameter args | | +| Finally.cs:163:35:163:41 | access to array element | Finally.cs:163:35:163:41 | After access to array element | | | Finally.cs:163:40:163:40 | 0 | Finally.cs:163:35:163:41 | access to array element | | -| Finally.cs:165:13:168:13 | catch {...} | Finally.cs:166:13:168:13 | {...} | | +| Finally.cs:165:13:168:13 | After catch {...} [match] | Finally.cs:166:13:168:13 | {...} | | +| Finally.cs:165:13:168:13 | catch {...} | Finally.cs:165:13:168:13 | After catch {...} [match] | match | +| Finally.cs:166:13:168:13 | After {...} | Finally.cs:156:13:168:13 | After try {...} ... | | | Finally.cs:166:13:168:13 | {...} | Finally.cs:167:17:167:38 | ...; | | -| Finally.cs:167:17:167:37 | call to method WriteLine | Finally.cs:147:10:147:11 | exit M8 (abnormal) | exception | -| Finally.cs:167:17:167:37 | call to method WriteLine | Finally.cs:147:10:147:11 | exit M8 (normal) | | -| Finally.cs:167:17:167:38 | ...; | Finally.cs:167:35:167:36 | "" | | +| Finally.cs:167:17:167:37 | After call to method WriteLine | Finally.cs:167:17:167:38 | After ...; | | +| Finally.cs:167:17:167:37 | Before call to method WriteLine | Finally.cs:167:35:167:36 | "" | | +| Finally.cs:167:17:167:37 | call to method WriteLine | Finally.cs:167:17:167:37 | After call to method WriteLine | | +| Finally.cs:167:17:167:38 | ...; | Finally.cs:167:17:167:37 | Before call to method WriteLine | | +| Finally.cs:167:17:167:38 | After ...; | Finally.cs:166:13:168:13 | After {...} | | | Finally.cs:167:35:167:36 | "" | Finally.cs:167:17:167:37 | call to method WriteLine | | -| Finally.cs:172:11:172:20 | call to constructor Exception | Finally.cs:172:11:172:20 | {...} | | -| Finally.cs:172:11:172:20 | call to method | Finally.cs:172:11:172:20 | call to constructor Exception | | -| Finally.cs:172:11:172:20 | enter ExceptionA | Finally.cs:172:11:172:20 | this access | | -| Finally.cs:172:11:172:20 | exit ExceptionA (normal) | Finally.cs:172:11:172:20 | exit ExceptionA | | +| Finally.cs:172:11:172:20 | After call to constructor Exception | Finally.cs:172:11:172:20 | {...} | | +| Finally.cs:172:11:172:20 | After call to method | Finally.cs:172:11:172:20 | Before call to constructor Exception | | +| Finally.cs:172:11:172:20 | Before call to constructor Exception | Finally.cs:172:11:172:20 | call to constructor Exception | | +| Finally.cs:172:11:172:20 | Before call to method | Finally.cs:172:11:172:20 | this access | | +| Finally.cs:172:11:172:20 | Entry | Finally.cs:172:11:172:20 | Before call to method | | +| Finally.cs:172:11:172:20 | Normal Exit | Finally.cs:172:11:172:20 | Exit | | +| Finally.cs:172:11:172:20 | call to constructor Exception | Finally.cs:172:11:172:20 | After call to constructor Exception | | +| Finally.cs:172:11:172:20 | call to method | Finally.cs:172:11:172:20 | After call to method | | | Finally.cs:172:11:172:20 | this access | Finally.cs:172:11:172:20 | call to method | | -| Finally.cs:172:11:172:20 | {...} | Finally.cs:172:11:172:20 | exit ExceptionA (normal) | | -| Finally.cs:173:11:173:20 | call to constructor Exception | Finally.cs:173:11:173:20 | {...} | | -| Finally.cs:173:11:173:20 | call to method | Finally.cs:173:11:173:20 | call to constructor Exception | | -| Finally.cs:173:11:173:20 | enter ExceptionB | Finally.cs:173:11:173:20 | this access | | -| Finally.cs:173:11:173:20 | exit ExceptionB (normal) | Finally.cs:173:11:173:20 | exit ExceptionB | | +| Finally.cs:172:11:172:20 | {...} | Finally.cs:172:11:172:20 | Normal Exit | | +| Finally.cs:173:11:173:20 | After call to constructor Exception | Finally.cs:173:11:173:20 | {...} | | +| Finally.cs:173:11:173:20 | After call to method | Finally.cs:173:11:173:20 | Before call to constructor Exception | | +| Finally.cs:173:11:173:20 | Before call to constructor Exception | Finally.cs:173:11:173:20 | call to constructor Exception | | +| Finally.cs:173:11:173:20 | Before call to method | Finally.cs:173:11:173:20 | this access | | +| Finally.cs:173:11:173:20 | Entry | Finally.cs:173:11:173:20 | Before call to method | | +| Finally.cs:173:11:173:20 | Normal Exit | Finally.cs:173:11:173:20 | Exit | | +| Finally.cs:173:11:173:20 | call to constructor Exception | Finally.cs:173:11:173:20 | After call to constructor Exception | | +| Finally.cs:173:11:173:20 | call to method | Finally.cs:173:11:173:20 | After call to method | | | Finally.cs:173:11:173:20 | this access | Finally.cs:173:11:173:20 | call to method | | -| Finally.cs:173:11:173:20 | {...} | Finally.cs:173:11:173:20 | exit ExceptionB (normal) | | -| Finally.cs:174:11:174:20 | call to constructor Exception | Finally.cs:174:11:174:20 | {...} | | -| Finally.cs:174:11:174:20 | call to method | Finally.cs:174:11:174:20 | call to constructor Exception | | -| Finally.cs:174:11:174:20 | enter ExceptionC | Finally.cs:174:11:174:20 | this access | | -| Finally.cs:174:11:174:20 | exit ExceptionC (normal) | Finally.cs:174:11:174:20 | exit ExceptionC | | +| Finally.cs:173:11:173:20 | {...} | Finally.cs:173:11:173:20 | Normal Exit | | +| Finally.cs:174:11:174:20 | After call to constructor Exception | Finally.cs:174:11:174:20 | {...} | | +| Finally.cs:174:11:174:20 | After call to method | Finally.cs:174:11:174:20 | Before call to constructor Exception | | +| Finally.cs:174:11:174:20 | Before call to constructor Exception | Finally.cs:174:11:174:20 | call to constructor Exception | | +| Finally.cs:174:11:174:20 | Before call to method | Finally.cs:174:11:174:20 | this access | | +| Finally.cs:174:11:174:20 | Entry | Finally.cs:174:11:174:20 | Before call to method | | +| Finally.cs:174:11:174:20 | Normal Exit | Finally.cs:174:11:174:20 | Exit | | +| Finally.cs:174:11:174:20 | call to constructor Exception | Finally.cs:174:11:174:20 | After call to constructor Exception | | +| Finally.cs:174:11:174:20 | call to method | Finally.cs:174:11:174:20 | After call to method | | | Finally.cs:174:11:174:20 | this access | Finally.cs:174:11:174:20 | call to method | | -| Finally.cs:174:11:174:20 | {...} | Finally.cs:174:11:174:20 | exit ExceptionC (normal) | | -| Finally.cs:176:10:176:11 | enter M9 | Finally.cs:177:5:193:5 | {...} | | -| Finally.cs:176:10:176:11 | exit M9 (abnormal) | Finally.cs:176:10:176:11 | exit M9 | | -| Finally.cs:176:10:176:11 | exit M9 (normal) | Finally.cs:176:10:176:11 | exit M9 | | +| Finally.cs:174:11:174:20 | {...} | Finally.cs:174:11:174:20 | Normal Exit | | +| Finally.cs:176:10:176:11 | Entry | Finally.cs:176:18:176:19 | b1 | | +| Finally.cs:176:10:176:11 | Exceptional Exit | Finally.cs:176:10:176:11 | Exit | | +| Finally.cs:176:10:176:11 | Normal Exit | Finally.cs:176:10:176:11 | Exit | | +| Finally.cs:176:18:176:19 | b1 | Finally.cs:176:27:176:28 | b2 | | +| Finally.cs:176:27:176:28 | b2 | Finally.cs:177:5:193:5 | {...} | | +| Finally.cs:177:5:193:5 | After {...} | Finally.cs:176:10:176:11 | Normal Exit | | | Finally.cs:177:5:193:5 | {...} | Finally.cs:178:9:192:9 | try {...} ... | | +| Finally.cs:178:9:192:9 | After try {...} ... | Finally.cs:177:5:193:5 | After {...} | | | Finally.cs:178:9:192:9 | try {...} ... | Finally.cs:179:9:181:9 | {...} | | +| Finally.cs:179:9:181:9 | After {...} | Finally.cs:183:9:192:9 | {...} | | | Finally.cs:179:9:181:9 | {...} | Finally.cs:180:13:180:43 | if (...) ... | | +| Finally.cs:180:13:180:43 | After if (...) ... | Finally.cs:179:9:181:9 | After {...} | | | Finally.cs:180:13:180:43 | if (...) ... | Finally.cs:180:17:180:18 | access to parameter b1 | | -| Finally.cs:180:17:180:18 | access to parameter b1 | Finally.cs:180:27:180:42 | object creation of type ExceptionA | true | -| Finally.cs:180:17:180:18 | access to parameter b1 | Finally.cs:183:9:192:9 | {...} | false | +| Finally.cs:180:17:180:18 | After access to parameter b1 [false] | Finally.cs:180:13:180:43 | After if (...) ... | | +| Finally.cs:180:17:180:18 | After access to parameter b1 [true] | Finally.cs:180:21:180:43 | Before throw ...; | | +| Finally.cs:180:17:180:18 | access to parameter b1 | Finally.cs:180:17:180:18 | After access to parameter b1 [false] | false | +| Finally.cs:180:17:180:18 | access to parameter b1 | Finally.cs:180:17:180:18 | After access to parameter b1 [true] | true | +| Finally.cs:180:21:180:43 | Before throw ...; | Finally.cs:180:27:180:42 | Before object creation of type ExceptionA | | | Finally.cs:180:21:180:43 | throw ...; | Finally.cs:183:9:192:9 | {...} | exception | -| Finally.cs:180:27:180:42 | object creation of type ExceptionA | Finally.cs:180:21:180:43 | throw ...; | | +| Finally.cs:180:27:180:42 | After object creation of type ExceptionA | Finally.cs:180:21:180:43 | throw ...; | | +| Finally.cs:180:27:180:42 | Before object creation of type ExceptionA | Finally.cs:180:27:180:42 | object creation of type ExceptionA | | +| Finally.cs:180:27:180:42 | object creation of type ExceptionA | Finally.cs:180:27:180:42 | After object creation of type ExceptionA | | | Finally.cs:180:27:180:42 | object creation of type ExceptionA | Finally.cs:183:9:192:9 | {...} | exception | +| Finally.cs:183:9:192:9 | After {...} | Finally.cs:176:10:176:11 | Exceptional Exit | exception | +| Finally.cs:183:9:192:9 | After {...} | Finally.cs:178:9:192:9 | After try {...} ... | | | Finally.cs:183:9:192:9 | {...} | Finally.cs:184:13:191:13 | try {...} ... | | +| Finally.cs:184:13:191:13 | After try {...} ... | Finally.cs:183:9:192:9 | After {...} | | | Finally.cs:184:13:191:13 | try {...} ... | Finally.cs:185:13:187:13 | {...} | | +| Finally.cs:185:13:187:13 | After {...} | Finally.cs:184:13:191:13 | After try {...} ... | | | Finally.cs:185:13:187:13 | {...} | Finally.cs:186:17:186:47 | if (...) ... | | +| Finally.cs:186:17:186:47 | After if (...) ... | Finally.cs:185:13:187:13 | After {...} | | | Finally.cs:186:17:186:47 | if (...) ... | Finally.cs:186:21:186:22 | access to parameter b2 | | -| Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:176:10:176:11 | exit M9 (abnormal) | exception | -| Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:176:10:176:11 | exit M9 (normal) | false | -| Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:186:31:186:46 | object creation of type ExceptionB | true | +| Finally.cs:186:21:186:22 | After access to parameter b2 [false] | Finally.cs:186:17:186:47 | After if (...) ... | | +| Finally.cs:186:21:186:22 | After access to parameter b2 [true] | Finally.cs:186:25:186:47 | Before throw ...; | | +| Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:186:21:186:22 | After access to parameter b2 [false] | false | +| Finally.cs:186:21:186:22 | access to parameter b2 | Finally.cs:186:21:186:22 | After access to parameter b2 [true] | true | +| Finally.cs:186:25:186:47 | Before throw ...; | Finally.cs:186:31:186:46 | Before object creation of type ExceptionB | | | Finally.cs:186:25:186:47 | throw ...; | Finally.cs:188:13:191:13 | catch (...) {...} | exception | -| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:186:25:186:47 | throw ...; | | +| Finally.cs:186:31:186:46 | After object creation of type ExceptionB | Finally.cs:186:25:186:47 | throw ...; | | +| Finally.cs:186:31:186:46 | Before object creation of type ExceptionB | Finally.cs:186:31:186:46 | object creation of type ExceptionB | | +| Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:186:31:186:46 | After object creation of type ExceptionB | | | Finally.cs:186:31:186:46 | object creation of type ExceptionB | Finally.cs:188:13:191:13 | catch (...) {...} | exception | -| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:176:10:176:11 | exit M9 (abnormal) | exception | -| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:188:38:188:39 | access to parameter b2 | match | -| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:176:10:176:11 | exit M9 (abnormal) | exception | -| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:189:13:191:13 | {...} | true | +| Finally.cs:188:13:191:13 | After catch (...) {...} [match] | Finally.cs:188:38:188:39 | access to parameter b2 | | +| Finally.cs:188:13:191:13 | After catch (...) {...} [no-match] | Finally.cs:176:10:176:11 | Exceptional Exit | exception | +| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:188:13:191:13 | After catch (...) {...} [match] | match | +| Finally.cs:188:13:191:13 | catch (...) {...} | Finally.cs:188:13:191:13 | After catch (...) {...} [no-match] | no-match | +| Finally.cs:188:38:188:39 | After access to parameter b2 [false] | Finally.cs:188:13:191:13 | After catch (...) {...} [no-match] | no-match | +| Finally.cs:188:38:188:39 | After access to parameter b2 [true] | Finally.cs:189:13:191:13 | {...} | | +| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:188:38:188:39 | After access to parameter b2 [false] | false | +| Finally.cs:188:38:188:39 | access to parameter b2 | Finally.cs:188:38:188:39 | After access to parameter b2 [true] | true | +| Finally.cs:189:13:191:13 | After {...} | Finally.cs:184:13:191:13 | After try {...} ... | | | Finally.cs:189:13:191:13 | {...} | Finally.cs:190:17:190:47 | if (...) ... | | +| Finally.cs:190:17:190:47 | After if (...) ... | Finally.cs:189:13:191:13 | After {...} | | | Finally.cs:190:17:190:47 | if (...) ... | Finally.cs:190:21:190:22 | access to parameter b1 | | -| Finally.cs:190:21:190:22 | access to parameter b1 | Finally.cs:176:10:176:11 | exit M9 (abnormal) | exception | -| Finally.cs:190:21:190:22 | access to parameter b1 | Finally.cs:176:10:176:11 | exit M9 (normal) | false | -| Finally.cs:190:21:190:22 | access to parameter b1 | Finally.cs:190:31:190:46 | object creation of type ExceptionC | true | -| Finally.cs:190:25:190:47 | throw ...; | Finally.cs:176:10:176:11 | exit M9 (abnormal) | exception | -| Finally.cs:190:31:190:46 | object creation of type ExceptionC | Finally.cs:190:25:190:47 | throw ...; | | -| Finally.cs:195:10:195:12 | enter M10 | Finally.cs:196:5:214:5 | {...} | | -| Finally.cs:195:10:195:12 | exit M10 (abnormal) | Finally.cs:195:10:195:12 | exit M10 | | -| Finally.cs:195:10:195:12 | exit M10 (normal) | Finally.cs:195:10:195:12 | exit M10 | | +| Finally.cs:190:21:190:22 | After access to parameter b1 [false] | Finally.cs:190:17:190:47 | After if (...) ... | | +| Finally.cs:190:21:190:22 | After access to parameter b1 [true] | Finally.cs:190:25:190:47 | Before throw ...; | | +| Finally.cs:190:21:190:22 | access to parameter b1 | Finally.cs:190:21:190:22 | After access to parameter b1 [false] | false | +| Finally.cs:190:21:190:22 | access to parameter b1 | Finally.cs:190:21:190:22 | After access to parameter b1 [true] | true | +| Finally.cs:190:25:190:47 | Before throw ...; | Finally.cs:190:31:190:46 | Before object creation of type ExceptionC | | +| Finally.cs:190:25:190:47 | throw ...; | Finally.cs:176:10:176:11 | Exceptional Exit | exception | +| Finally.cs:190:31:190:46 | After object creation of type ExceptionC | Finally.cs:190:25:190:47 | throw ...; | | +| Finally.cs:190:31:190:46 | Before object creation of type ExceptionC | Finally.cs:190:31:190:46 | object creation of type ExceptionC | | +| Finally.cs:190:31:190:46 | object creation of type ExceptionC | Finally.cs:190:31:190:46 | After object creation of type ExceptionC | | +| Finally.cs:195:10:195:12 | Entry | Finally.cs:195:19:195:20 | b1 | | +| Finally.cs:195:10:195:12 | Exceptional Exit | Finally.cs:195:10:195:12 | Exit | | +| Finally.cs:195:10:195:12 | Normal Exit | Finally.cs:195:10:195:12 | Exit | | +| Finally.cs:195:19:195:20 | b1 | Finally.cs:195:28:195:29 | b2 | | +| Finally.cs:195:28:195:29 | b2 | Finally.cs:195:37:195:38 | b3 | | +| Finally.cs:195:37:195:38 | b3 | Finally.cs:196:5:214:5 | {...} | | +| Finally.cs:196:5:214:5 | After {...} | Finally.cs:195:10:195:12 | Normal Exit | | | Finally.cs:196:5:214:5 | {...} | Finally.cs:197:9:212:9 | try {...} ... | | +| Finally.cs:197:9:212:9 | After try {...} ... | Finally.cs:213:9:213:25 | ...; | | | Finally.cs:197:9:212:9 | try {...} ... | Finally.cs:198:9:200:9 | {...} | | +| Finally.cs:198:9:200:9 | After {...} | Finally.cs:202:9:212:9 | {...} | | | Finally.cs:198:9:200:9 | {...} | Finally.cs:199:13:199:43 | if (...) ... | | +| Finally.cs:199:13:199:43 | After if (...) ... | Finally.cs:198:9:200:9 | After {...} | | | Finally.cs:199:13:199:43 | if (...) ... | Finally.cs:199:17:199:18 | access to parameter b1 | | -| Finally.cs:199:17:199:18 | access to parameter b1 | Finally.cs:199:27:199:42 | object creation of type ExceptionA | true | -| Finally.cs:199:17:199:18 | access to parameter b1 | Finally.cs:202:9:212:9 | {...} | false | +| Finally.cs:199:17:199:18 | After access to parameter b1 [false] | Finally.cs:199:13:199:43 | After if (...) ... | | +| Finally.cs:199:17:199:18 | After access to parameter b1 [true] | Finally.cs:199:21:199:43 | Before throw ...; | | +| Finally.cs:199:17:199:18 | access to parameter b1 | Finally.cs:199:17:199:18 | After access to parameter b1 [false] | false | +| Finally.cs:199:17:199:18 | access to parameter b1 | Finally.cs:199:17:199:18 | After access to parameter b1 [true] | true | +| Finally.cs:199:21:199:43 | Before throw ...; | Finally.cs:199:27:199:42 | Before object creation of type ExceptionA | | | Finally.cs:199:21:199:43 | throw ...; | Finally.cs:202:9:212:9 | {...} | exception | -| Finally.cs:199:27:199:42 | object creation of type ExceptionA | Finally.cs:199:21:199:43 | throw ...; | | +| Finally.cs:199:27:199:42 | After object creation of type ExceptionA | Finally.cs:199:21:199:43 | throw ...; | | +| Finally.cs:199:27:199:42 | Before object creation of type ExceptionA | Finally.cs:199:27:199:42 | object creation of type ExceptionA | | +| Finally.cs:199:27:199:42 | object creation of type ExceptionA | Finally.cs:199:27:199:42 | After object creation of type ExceptionA | | | Finally.cs:199:27:199:42 | object creation of type ExceptionA | Finally.cs:202:9:212:9 | {...} | exception | +| Finally.cs:202:9:212:9 | After {...} | Finally.cs:195:10:195:12 | Exceptional Exit | exception | +| Finally.cs:202:9:212:9 | After {...} | Finally.cs:197:9:212:9 | After try {...} ... | | | Finally.cs:202:9:212:9 | {...} | Finally.cs:203:13:210:13 | try {...} ... | | +| Finally.cs:203:13:210:13 | After try {...} ... | Finally.cs:211:13:211:29 | ...; | | | Finally.cs:203:13:210:13 | try {...} ... | Finally.cs:204:13:206:13 | {...} | | +| Finally.cs:204:13:206:13 | After {...} | Finally.cs:208:13:210:13 | {...} | | | Finally.cs:204:13:206:13 | {...} | Finally.cs:205:17:205:47 | if (...) ... | | +| Finally.cs:205:17:205:47 | After if (...) ... | Finally.cs:204:13:206:13 | After {...} | | | Finally.cs:205:17:205:47 | if (...) ... | Finally.cs:205:21:205:22 | access to parameter b2 | | -| Finally.cs:205:21:205:22 | access to parameter b2 | Finally.cs:205:31:205:46 | object creation of type ExceptionB | true | -| Finally.cs:205:21:205:22 | access to parameter b2 | Finally.cs:208:13:210:13 | {...} | false | +| Finally.cs:205:21:205:22 | After access to parameter b2 [false] | Finally.cs:205:17:205:47 | After if (...) ... | | +| Finally.cs:205:21:205:22 | After access to parameter b2 [true] | Finally.cs:205:25:205:47 | Before throw ...; | | +| Finally.cs:205:21:205:22 | access to parameter b2 | Finally.cs:205:21:205:22 | After access to parameter b2 [false] | false | +| Finally.cs:205:21:205:22 | access to parameter b2 | Finally.cs:205:21:205:22 | After access to parameter b2 [true] | true | +| Finally.cs:205:25:205:47 | Before throw ...; | Finally.cs:205:31:205:46 | Before object creation of type ExceptionB | | | Finally.cs:205:25:205:47 | throw ...; | Finally.cs:208:13:210:13 | {...} | exception | -| Finally.cs:205:31:205:46 | object creation of type ExceptionB | Finally.cs:205:25:205:47 | throw ...; | | +| Finally.cs:205:31:205:46 | After object creation of type ExceptionB | Finally.cs:205:25:205:47 | throw ...; | | +| Finally.cs:205:31:205:46 | Before object creation of type ExceptionB | Finally.cs:205:31:205:46 | object creation of type ExceptionB | | +| Finally.cs:205:31:205:46 | object creation of type ExceptionB | Finally.cs:205:31:205:46 | After object creation of type ExceptionB | | | Finally.cs:205:31:205:46 | object creation of type ExceptionB | Finally.cs:208:13:210:13 | {...} | exception | +| Finally.cs:208:13:210:13 | After {...} | Finally.cs:195:10:195:12 | Exceptional Exit | exception | +| Finally.cs:208:13:210:13 | After {...} | Finally.cs:203:13:210:13 | After try {...} ... | | | Finally.cs:208:13:210:13 | {...} | Finally.cs:209:17:209:47 | if (...) ... | | +| Finally.cs:209:17:209:47 | After if (...) ... | Finally.cs:208:13:210:13 | After {...} | | | Finally.cs:209:17:209:47 | if (...) ... | Finally.cs:209:21:209:22 | access to parameter b3 | | -| Finally.cs:209:21:209:22 | access to parameter b3 | Finally.cs:195:10:195:12 | exit M10 (abnormal) | exception | -| Finally.cs:209:21:209:22 | access to parameter b3 | Finally.cs:209:31:209:46 | object creation of type ExceptionC | true | -| Finally.cs:209:21:209:22 | access to parameter b3 | Finally.cs:211:13:211:29 | ...; | false | -| Finally.cs:209:25:209:47 | throw ...; | Finally.cs:195:10:195:12 | exit M10 (abnormal) | exception | -| Finally.cs:209:31:209:46 | object creation of type ExceptionC | Finally.cs:209:25:209:47 | throw ...; | | -| Finally.cs:211:13:211:16 | this access | Finally.cs:211:26:211:28 | "0" | | -| Finally.cs:211:13:211:22 | access to field Field | Finally.cs:211:13:211:28 | ... = ... | | -| Finally.cs:211:13:211:28 | ... = ... | Finally.cs:195:10:195:12 | exit M10 (abnormal) | exception | -| Finally.cs:211:13:211:28 | ... = ... | Finally.cs:213:9:213:25 | ...; | | -| Finally.cs:211:13:211:29 | ...; | Finally.cs:211:13:211:16 | this access | | -| Finally.cs:211:26:211:28 | "0" | Finally.cs:211:13:211:22 | access to field Field | | -| Finally.cs:213:9:213:12 | this access | Finally.cs:213:22:213:24 | "1" | | -| Finally.cs:213:9:213:18 | access to field Field | Finally.cs:213:9:213:24 | ... = ... | | -| Finally.cs:213:9:213:24 | ... = ... | Finally.cs:195:10:195:12 | exit M10 (normal) | | -| Finally.cs:213:9:213:25 | ...; | Finally.cs:213:9:213:12 | this access | | -| Finally.cs:213:22:213:24 | "1" | Finally.cs:213:9:213:18 | access to field Field | | -| Finally.cs:216:10:216:12 | enter M11 | Finally.cs:217:5:231:5 | {...} | | -| Finally.cs:216:10:216:12 | exit M11 (normal) | Finally.cs:216:10:216:12 | exit M11 | | +| Finally.cs:209:21:209:22 | After access to parameter b3 [false] | Finally.cs:209:17:209:47 | After if (...) ... | | +| Finally.cs:209:21:209:22 | After access to parameter b3 [true] | Finally.cs:209:25:209:47 | Before throw ...; | | +| Finally.cs:209:21:209:22 | access to parameter b3 | Finally.cs:209:21:209:22 | After access to parameter b3 [false] | false | +| Finally.cs:209:21:209:22 | access to parameter b3 | Finally.cs:209:21:209:22 | After access to parameter b3 [true] | true | +| Finally.cs:209:25:209:47 | Before throw ...; | Finally.cs:209:31:209:46 | Before object creation of type ExceptionC | | +| Finally.cs:209:25:209:47 | throw ...; | Finally.cs:195:10:195:12 | Exceptional Exit | exception | +| Finally.cs:209:31:209:46 | After object creation of type ExceptionC | Finally.cs:209:25:209:47 | throw ...; | | +| Finally.cs:209:31:209:46 | Before object creation of type ExceptionC | Finally.cs:209:31:209:46 | object creation of type ExceptionC | | +| Finally.cs:209:31:209:46 | object creation of type ExceptionC | Finally.cs:209:31:209:46 | After object creation of type ExceptionC | | +| Finally.cs:211:13:211:16 | this access | Finally.cs:211:13:211:22 | access to field Field | | +| Finally.cs:211:13:211:22 | After access to field Field | Finally.cs:211:26:211:28 | "0" | | +| Finally.cs:211:13:211:22 | Before access to field Field | Finally.cs:211:13:211:16 | this access | | +| Finally.cs:211:13:211:22 | access to field Field | Finally.cs:211:13:211:22 | After access to field Field | | +| Finally.cs:211:13:211:28 | ... = ... | Finally.cs:211:13:211:28 | After ... = ... | | +| Finally.cs:211:13:211:28 | After ... = ... | Finally.cs:211:13:211:29 | After ...; | | +| Finally.cs:211:13:211:28 | Before ... = ... | Finally.cs:211:13:211:22 | Before access to field Field | | +| Finally.cs:211:13:211:29 | ...; | Finally.cs:211:13:211:28 | Before ... = ... | | +| Finally.cs:211:13:211:29 | After ...; | Finally.cs:202:9:212:9 | After {...} | | +| Finally.cs:211:26:211:28 | "0" | Finally.cs:211:13:211:28 | ... = ... | | +| Finally.cs:213:9:213:12 | this access | Finally.cs:213:9:213:18 | access to field Field | | +| Finally.cs:213:9:213:18 | After access to field Field | Finally.cs:213:22:213:24 | "1" | | +| Finally.cs:213:9:213:18 | Before access to field Field | Finally.cs:213:9:213:12 | this access | | +| Finally.cs:213:9:213:18 | access to field Field | Finally.cs:213:9:213:18 | After access to field Field | | +| Finally.cs:213:9:213:24 | ... = ... | Finally.cs:213:9:213:24 | After ... = ... | | +| Finally.cs:213:9:213:24 | After ... = ... | Finally.cs:213:9:213:25 | After ...; | | +| Finally.cs:213:9:213:24 | Before ... = ... | Finally.cs:213:9:213:18 | Before access to field Field | | +| Finally.cs:213:9:213:25 | ...; | Finally.cs:213:9:213:24 | Before ... = ... | | +| Finally.cs:213:9:213:25 | After ...; | Finally.cs:196:5:214:5 | After {...} | | +| Finally.cs:213:22:213:24 | "1" | Finally.cs:213:9:213:24 | ... = ... | | +| Finally.cs:216:10:216:12 | Entry | Finally.cs:217:5:231:5 | {...} | | +| Finally.cs:216:10:216:12 | Normal Exit | Finally.cs:216:10:216:12 | Exit | | +| Finally.cs:217:5:231:5 | After {...} | Finally.cs:216:10:216:12 | Normal Exit | | | Finally.cs:217:5:231:5 | {...} | Finally.cs:218:9:229:9 | try {...} ... | | +| Finally.cs:218:9:229:9 | After try {...} ... | Finally.cs:230:9:230:34 | ...; | | | Finally.cs:218:9:229:9 | try {...} ... | Finally.cs:219:9:221:9 | {...} | | +| Finally.cs:219:9:221:9 | After {...} | Finally.cs:227:9:229:9 | {...} | | | Finally.cs:219:9:221:9 | {...} | Finally.cs:220:13:220:37 | ...; | | +| Finally.cs:220:13:220:36 | After call to method WriteLine | Finally.cs:220:13:220:37 | After ...; | | +| Finally.cs:220:13:220:36 | Before call to method WriteLine | Finally.cs:220:31:220:35 | "Try" | | +| Finally.cs:220:13:220:36 | call to method WriteLine | Finally.cs:220:13:220:36 | After call to method WriteLine | | | Finally.cs:220:13:220:36 | call to method WriteLine | Finally.cs:222:9:225:9 | catch {...} | exception | -| Finally.cs:220:13:220:36 | call to method WriteLine | Finally.cs:227:9:229:9 | {...} | | -| Finally.cs:220:13:220:37 | ...; | Finally.cs:220:31:220:35 | "Try" | | +| Finally.cs:220:13:220:37 | ...; | Finally.cs:220:13:220:36 | Before call to method WriteLine | | +| Finally.cs:220:13:220:37 | After ...; | Finally.cs:219:9:221:9 | After {...} | | | Finally.cs:220:31:220:35 | "Try" | Finally.cs:220:13:220:36 | call to method WriteLine | | -| Finally.cs:222:9:225:9 | catch {...} | Finally.cs:223:9:225:9 | {...} | | +| Finally.cs:222:9:225:9 | After catch {...} [match] | Finally.cs:223:9:225:9 | {...} | | +| Finally.cs:222:9:225:9 | catch {...} | Finally.cs:222:9:225:9 | After catch {...} [match] | match | +| Finally.cs:223:9:225:9 | After {...} | Finally.cs:227:9:229:9 | {...} | | | Finally.cs:223:9:225:9 | {...} | Finally.cs:224:13:224:39 | ...; | | -| Finally.cs:224:13:224:38 | call to method WriteLine | Finally.cs:227:9:229:9 | {...} | | -| Finally.cs:224:13:224:39 | ...; | Finally.cs:224:31:224:37 | "Catch" | | +| Finally.cs:224:13:224:38 | After call to method WriteLine | Finally.cs:224:13:224:39 | After ...; | | +| Finally.cs:224:13:224:38 | Before call to method WriteLine | Finally.cs:224:31:224:37 | "Catch" | | +| Finally.cs:224:13:224:38 | call to method WriteLine | Finally.cs:224:13:224:38 | After call to method WriteLine | | +| Finally.cs:224:13:224:39 | ...; | Finally.cs:224:13:224:38 | Before call to method WriteLine | | +| Finally.cs:224:13:224:39 | After ...; | Finally.cs:223:9:225:9 | After {...} | | | Finally.cs:224:31:224:37 | "Catch" | Finally.cs:224:13:224:38 | call to method WriteLine | | +| Finally.cs:227:9:229:9 | After {...} | Finally.cs:218:9:229:9 | After try {...} ... | | | Finally.cs:227:9:229:9 | {...} | Finally.cs:228:13:228:41 | ...; | | -| Finally.cs:228:13:228:40 | call to method WriteLine | Finally.cs:230:9:230:34 | ...; | | -| Finally.cs:228:13:228:41 | ...; | Finally.cs:228:31:228:39 | "Finally" | | +| Finally.cs:228:13:228:40 | After call to method WriteLine | Finally.cs:228:13:228:41 | After ...; | | +| Finally.cs:228:13:228:40 | Before call to method WriteLine | Finally.cs:228:31:228:39 | "Finally" | | +| Finally.cs:228:13:228:40 | call to method WriteLine | Finally.cs:228:13:228:40 | After call to method WriteLine | | +| Finally.cs:228:13:228:41 | ...; | Finally.cs:228:13:228:40 | Before call to method WriteLine | | +| Finally.cs:228:13:228:41 | After ...; | Finally.cs:227:9:229:9 | After {...} | | | Finally.cs:228:31:228:39 | "Finally" | Finally.cs:228:13:228:40 | call to method WriteLine | | -| Finally.cs:230:9:230:33 | call to method WriteLine | Finally.cs:216:10:216:12 | exit M11 (normal) | | -| Finally.cs:230:9:230:34 | ...; | Finally.cs:230:27:230:32 | "Done" | | +| Finally.cs:230:9:230:33 | After call to method WriteLine | Finally.cs:230:9:230:34 | After ...; | | +| Finally.cs:230:9:230:33 | Before call to method WriteLine | Finally.cs:230:27:230:32 | "Done" | | +| Finally.cs:230:9:230:33 | call to method WriteLine | Finally.cs:230:9:230:33 | After call to method WriteLine | | +| Finally.cs:230:9:230:34 | ...; | Finally.cs:230:9:230:33 | Before call to method WriteLine | | +| Finally.cs:230:9:230:34 | After ...; | Finally.cs:217:5:231:5 | After {...} | | | Finally.cs:230:27:230:32 | "Done" | Finally.cs:230:9:230:33 | call to method WriteLine | | -| Finally.cs:233:10:233:12 | enter M12 | Finally.cs:234:5:261:5 | {...} | | -| Finally.cs:233:10:233:12 | exit M12 (abnormal) | Finally.cs:233:10:233:12 | exit M12 | | -| Finally.cs:233:10:233:12 | exit M12 (normal) | Finally.cs:233:10:233:12 | exit M12 | | +| Finally.cs:233:10:233:12 | Entry | Finally.cs:233:19:233:20 | b1 | | +| Finally.cs:233:10:233:12 | Exceptional Exit | Finally.cs:233:10:233:12 | Exit | | +| Finally.cs:233:10:233:12 | Normal Exit | Finally.cs:233:10:233:12 | Exit | | +| Finally.cs:233:19:233:20 | b1 | Finally.cs:233:28:233:29 | b2 | | +| Finally.cs:233:28:233:29 | b2 | Finally.cs:234:5:261:5 | {...} | | +| Finally.cs:234:5:261:5 | After {...} | Finally.cs:233:10:233:12 | Normal Exit | | | Finally.cs:234:5:261:5 | {...} | Finally.cs:235:9:259:9 | try {...} ... | | +| Finally.cs:235:9:259:9 | After try {...} ... | Finally.cs:260:9:260:34 | ...; | | | Finally.cs:235:9:259:9 | try {...} ... | Finally.cs:236:9:255:9 | {...} | | +| Finally.cs:236:9:255:9 | After {...} | Finally.cs:257:9:259:9 | {...} | | | Finally.cs:236:9:255:9 | {...} | Finally.cs:237:13:253:13 | try {...} ... | | +| Finally.cs:237:13:253:13 | After try {...} ... | Finally.cs:254:13:254:45 | ...; | | | Finally.cs:237:13:253:13 | try {...} ... | Finally.cs:238:13:241:13 | {...} | | +| Finally.cs:238:13:241:13 | After {...} | Finally.cs:243:13:253:13 | {...} | | | Finally.cs:238:13:241:13 | {...} | Finally.cs:239:17:240:43 | if (...) ... | | +| Finally.cs:239:17:240:43 | After if (...) ... | Finally.cs:238:13:241:13 | After {...} | | | Finally.cs:239:17:240:43 | if (...) ... | Finally.cs:239:21:239:22 | access to parameter b1 | | -| Finally.cs:239:21:239:22 | access to parameter b1 | Finally.cs:240:27:240:42 | object creation of type ExceptionA | true | -| Finally.cs:239:21:239:22 | access to parameter b1 | Finally.cs:243:13:253:13 | {...} | false | +| Finally.cs:239:21:239:22 | After access to parameter b1 [false] | Finally.cs:239:17:240:43 | After if (...) ... | | +| Finally.cs:239:21:239:22 | After access to parameter b1 [true] | Finally.cs:240:21:240:43 | Before throw ...; | | +| Finally.cs:239:21:239:22 | access to parameter b1 | Finally.cs:239:21:239:22 | After access to parameter b1 [false] | false | +| Finally.cs:239:21:239:22 | access to parameter b1 | Finally.cs:239:21:239:22 | After access to parameter b1 [true] | true | +| Finally.cs:240:21:240:43 | Before throw ...; | Finally.cs:240:27:240:42 | Before object creation of type ExceptionA | | | Finally.cs:240:21:240:43 | throw ...; | Finally.cs:243:13:253:13 | {...} | exception | -| Finally.cs:240:27:240:42 | object creation of type ExceptionA | Finally.cs:240:21:240:43 | throw ...; | | +| Finally.cs:240:27:240:42 | After object creation of type ExceptionA | Finally.cs:240:21:240:43 | throw ...; | | +| Finally.cs:240:27:240:42 | Before object creation of type ExceptionA | Finally.cs:240:27:240:42 | object creation of type ExceptionA | | +| Finally.cs:240:27:240:42 | object creation of type ExceptionA | Finally.cs:240:27:240:42 | After object creation of type ExceptionA | | | Finally.cs:240:27:240:42 | object creation of type ExceptionA | Finally.cs:243:13:253:13 | {...} | exception | +| Finally.cs:243:13:253:13 | After {...} | Finally.cs:237:13:253:13 | After try {...} ... | | +| Finally.cs:243:13:253:13 | After {...} | Finally.cs:257:9:259:9 | {...} | exception | | Finally.cs:243:13:253:13 | {...} | Finally.cs:244:17:252:17 | try {...} ... | | +| Finally.cs:244:17:252:17 | After try {...} ... | Finally.cs:243:13:253:13 | After {...} | | | Finally.cs:244:17:252:17 | try {...} ... | Finally.cs:245:17:248:17 | {...} | | +| Finally.cs:245:17:248:17 | After {...} | Finally.cs:250:17:252:17 | {...} | | | Finally.cs:245:17:248:17 | {...} | Finally.cs:246:21:247:47 | if (...) ... | | +| Finally.cs:246:21:247:47 | After if (...) ... | Finally.cs:245:17:248:17 | After {...} | | | Finally.cs:246:21:247:47 | if (...) ... | Finally.cs:246:25:246:26 | access to parameter b2 | | -| Finally.cs:246:25:246:26 | access to parameter b2 | Finally.cs:247:31:247:46 | object creation of type ExceptionA | true | -| Finally.cs:246:25:246:26 | access to parameter b2 | Finally.cs:250:17:252:17 | {...} | false | +| Finally.cs:246:25:246:26 | After access to parameter b2 [false] | Finally.cs:246:21:247:47 | After if (...) ... | | +| Finally.cs:246:25:246:26 | After access to parameter b2 [true] | Finally.cs:247:25:247:47 | Before throw ...; | | +| Finally.cs:246:25:246:26 | access to parameter b2 | Finally.cs:246:25:246:26 | After access to parameter b2 [false] | false | +| Finally.cs:246:25:246:26 | access to parameter b2 | Finally.cs:246:25:246:26 | After access to parameter b2 [true] | true | +| Finally.cs:247:25:247:47 | Before throw ...; | Finally.cs:247:31:247:46 | Before object creation of type ExceptionA | | | Finally.cs:247:25:247:47 | throw ...; | Finally.cs:250:17:252:17 | {...} | exception | -| Finally.cs:247:31:247:46 | object creation of type ExceptionA | Finally.cs:247:25:247:47 | throw ...; | | +| Finally.cs:247:31:247:46 | After object creation of type ExceptionA | Finally.cs:247:25:247:47 | throw ...; | | +| Finally.cs:247:31:247:46 | Before object creation of type ExceptionA | Finally.cs:247:31:247:46 | object creation of type ExceptionA | | +| Finally.cs:247:31:247:46 | object creation of type ExceptionA | Finally.cs:247:31:247:46 | After object creation of type ExceptionA | | | Finally.cs:247:31:247:46 | object creation of type ExceptionA | Finally.cs:250:17:252:17 | {...} | exception | +| Finally.cs:250:17:252:17 | After {...} | Finally.cs:244:17:252:17 | After try {...} ... | | +| Finally.cs:250:17:252:17 | After {...} | Finally.cs:257:9:259:9 | {...} | exception | | Finally.cs:250:17:252:17 | {...} | Finally.cs:251:21:251:55 | ...; | | -| Finally.cs:251:21:251:54 | call to method WriteLine | Finally.cs:254:13:254:45 | ...; | | -| Finally.cs:251:21:251:54 | call to method WriteLine | Finally.cs:257:9:259:9 | {...} | exception | -| Finally.cs:251:21:251:55 | ...; | Finally.cs:251:39:251:53 | "Inner finally" | | +| Finally.cs:251:21:251:54 | After call to method WriteLine | Finally.cs:251:21:251:55 | After ...; | | +| Finally.cs:251:21:251:54 | Before call to method WriteLine | Finally.cs:251:39:251:53 | "Inner finally" | | +| Finally.cs:251:21:251:54 | call to method WriteLine | Finally.cs:251:21:251:54 | After call to method WriteLine | | +| Finally.cs:251:21:251:55 | ...; | Finally.cs:251:21:251:54 | Before call to method WriteLine | | +| Finally.cs:251:21:251:55 | After ...; | Finally.cs:250:17:252:17 | After {...} | | | Finally.cs:251:39:251:53 | "Inner finally" | Finally.cs:251:21:251:54 | call to method WriteLine | | -| Finally.cs:254:13:254:44 | call to method WriteLine | Finally.cs:257:9:259:9 | {...} | , exception | -| Finally.cs:254:13:254:45 | ...; | Finally.cs:254:31:254:43 | "Mid finally" | | +| Finally.cs:254:13:254:44 | After call to method WriteLine | Finally.cs:254:13:254:45 | After ...; | | +| Finally.cs:254:13:254:44 | Before call to method WriteLine | Finally.cs:254:31:254:43 | "Mid finally" | | +| Finally.cs:254:13:254:44 | call to method WriteLine | Finally.cs:254:13:254:44 | After call to method WriteLine | | +| Finally.cs:254:13:254:44 | call to method WriteLine | Finally.cs:257:9:259:9 | {...} | exception | +| Finally.cs:254:13:254:45 | ...; | Finally.cs:254:13:254:44 | Before call to method WriteLine | | +| Finally.cs:254:13:254:45 | After ...; | Finally.cs:236:9:255:9 | After {...} | | | Finally.cs:254:31:254:43 | "Mid finally" | Finally.cs:254:13:254:44 | call to method WriteLine | | +| Finally.cs:257:9:259:9 | After {...} | Finally.cs:233:10:233:12 | Exceptional Exit | exception | +| Finally.cs:257:9:259:9 | After {...} | Finally.cs:235:9:259:9 | After try {...} ... | | | Finally.cs:257:9:259:9 | {...} | Finally.cs:258:13:258:47 | ...; | | -| Finally.cs:258:13:258:46 | call to method WriteLine | Finally.cs:233:10:233:12 | exit M12 (abnormal) | exception | -| Finally.cs:258:13:258:46 | call to method WriteLine | Finally.cs:260:9:260:34 | ...; | | -| Finally.cs:258:13:258:47 | ...; | Finally.cs:258:31:258:45 | "Outer finally" | | +| Finally.cs:258:13:258:46 | After call to method WriteLine | Finally.cs:258:13:258:47 | After ...; | | +| Finally.cs:258:13:258:46 | Before call to method WriteLine | Finally.cs:258:31:258:45 | "Outer finally" | | +| Finally.cs:258:13:258:46 | call to method WriteLine | Finally.cs:258:13:258:46 | After call to method WriteLine | | +| Finally.cs:258:13:258:47 | ...; | Finally.cs:258:13:258:46 | Before call to method WriteLine | | +| Finally.cs:258:13:258:47 | After ...; | Finally.cs:257:9:259:9 | After {...} | | | Finally.cs:258:31:258:45 | "Outer finally" | Finally.cs:258:13:258:46 | call to method WriteLine | | -| Finally.cs:260:9:260:33 | call to method WriteLine | Finally.cs:233:10:233:12 | exit M12 (normal) | | -| Finally.cs:260:9:260:34 | ...; | Finally.cs:260:27:260:32 | "Done" | | +| Finally.cs:260:9:260:33 | After call to method WriteLine | Finally.cs:260:9:260:34 | After ...; | | +| Finally.cs:260:9:260:33 | Before call to method WriteLine | Finally.cs:260:27:260:32 | "Done" | | +| Finally.cs:260:9:260:33 | call to method WriteLine | Finally.cs:260:9:260:33 | After call to method WriteLine | | +| Finally.cs:260:9:260:34 | ...; | Finally.cs:260:9:260:33 | Before call to method WriteLine | | +| Finally.cs:260:9:260:34 | After ...; | Finally.cs:234:5:261:5 | After {...} | | | Finally.cs:260:27:260:32 | "Done" | Finally.cs:260:9:260:33 | call to method WriteLine | | -| Finally.cs:263:10:263:12 | enter M13 | Finally.cs:264:5:274:5 | {...} | | -| Finally.cs:263:10:263:12 | exit M13 (abnormal) | Finally.cs:263:10:263:12 | exit M13 | | -| Finally.cs:263:10:263:12 | exit M13 (normal) | Finally.cs:263:10:263:12 | exit M13 | | +| Finally.cs:263:10:263:12 | Entry | Finally.cs:263:18:263:18 | i | | +| Finally.cs:263:10:263:12 | Exceptional Exit | Finally.cs:263:10:263:12 | Exit | | +| Finally.cs:263:10:263:12 | Normal Exit | Finally.cs:263:10:263:12 | Exit | | +| Finally.cs:263:18:263:18 | i | Finally.cs:264:5:274:5 | {...} | | +| Finally.cs:264:5:274:5 | After {...} | Finally.cs:263:10:263:12 | Normal Exit | | | Finally.cs:264:5:274:5 | {...} | Finally.cs:265:9:273:9 | try {...} ... | | +| Finally.cs:265:9:273:9 | After try {...} ... | Finally.cs:264:5:274:5 | After {...} | | | Finally.cs:265:9:273:9 | try {...} ... | Finally.cs:266:9:268:9 | {...} | | +| Finally.cs:266:9:268:9 | After {...} | Finally.cs:270:9:273:9 | {...} | | | Finally.cs:266:9:268:9 | {...} | Finally.cs:267:13:267:35 | ...; | | -| Finally.cs:267:13:267:34 | call to method WriteLine | Finally.cs:270:9:273:9 | {...} | , exception | -| Finally.cs:267:13:267:35 | ...; | Finally.cs:267:31:267:33 | "1" | | +| Finally.cs:267:13:267:34 | After call to method WriteLine | Finally.cs:267:13:267:35 | After ...; | | +| Finally.cs:267:13:267:34 | Before call to method WriteLine | Finally.cs:267:31:267:33 | "1" | | +| Finally.cs:267:13:267:34 | call to method WriteLine | Finally.cs:267:13:267:34 | After call to method WriteLine | | +| Finally.cs:267:13:267:34 | call to method WriteLine | Finally.cs:270:9:273:9 | {...} | exception | +| Finally.cs:267:13:267:35 | ...; | Finally.cs:267:13:267:34 | Before call to method WriteLine | | +| Finally.cs:267:13:267:35 | After ...; | Finally.cs:266:9:268:9 | After {...} | | | Finally.cs:267:31:267:33 | "1" | Finally.cs:267:13:267:34 | call to method WriteLine | | +| Finally.cs:270:9:273:9 | After {...} | Finally.cs:263:10:263:12 | Exceptional Exit | exception | +| Finally.cs:270:9:273:9 | After {...} | Finally.cs:265:9:273:9 | After try {...} ... | | | Finally.cs:270:9:273:9 | {...} | Finally.cs:271:13:271:35 | ...; | | -| Finally.cs:271:13:271:34 | call to method WriteLine | Finally.cs:272:13:272:19 | ...; | | -| Finally.cs:271:13:271:35 | ...; | Finally.cs:271:31:271:33 | "3" | | +| Finally.cs:271:13:271:34 | After call to method WriteLine | Finally.cs:271:13:271:35 | After ...; | | +| Finally.cs:271:13:271:34 | Before call to method WriteLine | Finally.cs:271:31:271:33 | "3" | | +| Finally.cs:271:13:271:34 | call to method WriteLine | Finally.cs:271:13:271:34 | After call to method WriteLine | | +| Finally.cs:271:13:271:35 | ...; | Finally.cs:271:13:271:34 | Before call to method WriteLine | | +| Finally.cs:271:13:271:35 | After ...; | Finally.cs:272:13:272:19 | ...; | | | Finally.cs:271:31:271:33 | "3" | Finally.cs:271:13:271:34 | call to method WriteLine | | | Finally.cs:272:13:272:13 | access to parameter i | Finally.cs:272:18:272:18 | 3 | | -| Finally.cs:272:13:272:18 | ... += ... | Finally.cs:263:10:263:12 | exit M13 (abnormal) | exception | -| Finally.cs:272:13:272:18 | ... += ... | Finally.cs:263:10:263:12 | exit M13 (normal) | | -| Finally.cs:272:13:272:19 | ...; | Finally.cs:272:13:272:13 | access to parameter i | | +| Finally.cs:272:13:272:18 | ... += ... | Finally.cs:272:13:272:18 | After ... += ... | | +| Finally.cs:272:13:272:18 | After ... += ... | Finally.cs:272:13:272:19 | After ...; | | +| Finally.cs:272:13:272:18 | Before ... += ... | Finally.cs:272:13:272:13 | access to parameter i | | +| Finally.cs:272:13:272:19 | ...; | Finally.cs:272:13:272:18 | Before ... += ... | | +| Finally.cs:272:13:272:19 | After ...; | Finally.cs:270:9:273:9 | After {...} | | | Finally.cs:272:18:272:18 | 3 | Finally.cs:272:13:272:18 | ... += ... | | -| Foreach.cs:4:7:4:13 | call to constructor Object | Foreach.cs:4:7:4:13 | {...} | | -| Foreach.cs:4:7:4:13 | call to method | Foreach.cs:4:7:4:13 | call to constructor Object | | -| Foreach.cs:4:7:4:13 | enter Foreach | Foreach.cs:4:7:4:13 | this access | | -| Foreach.cs:4:7:4:13 | exit Foreach (normal) | Foreach.cs:4:7:4:13 | exit Foreach | | +| Foreach.cs:4:7:4:13 | After call to constructor Object | Foreach.cs:4:7:4:13 | {...} | | +| Foreach.cs:4:7:4:13 | After call to method | Foreach.cs:4:7:4:13 | Before call to constructor Object | | +| Foreach.cs:4:7:4:13 | Before call to constructor Object | Foreach.cs:4:7:4:13 | call to constructor Object | | +| Foreach.cs:4:7:4:13 | Before call to method | Foreach.cs:4:7:4:13 | this access | | +| Foreach.cs:4:7:4:13 | Entry | Foreach.cs:4:7:4:13 | Before call to method | | +| Foreach.cs:4:7:4:13 | Normal Exit | Foreach.cs:4:7:4:13 | Exit | | +| Foreach.cs:4:7:4:13 | call to constructor Object | Foreach.cs:4:7:4:13 | After call to constructor Object | | +| Foreach.cs:4:7:4:13 | call to method | Foreach.cs:4:7:4:13 | After call to method | | | Foreach.cs:4:7:4:13 | this access | Foreach.cs:4:7:4:13 | call to method | | -| Foreach.cs:4:7:4:13 | {...} | Foreach.cs:4:7:4:13 | exit Foreach (normal) | | -| Foreach.cs:6:10:6:11 | enter M1 | Foreach.cs:7:5:10:5 | {...} | | -| Foreach.cs:6:10:6:11 | exit M1 (normal) | Foreach.cs:6:10:6:11 | exit M1 | | -| Foreach.cs:7:5:10:5 | {...} | Foreach.cs:8:29:8:32 | access to parameter args | | -| Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:6:10:6:11 | exit M1 (normal) | empty | -| Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:22:8:24 | String arg | non-empty | +| Foreach.cs:4:7:4:13 | {...} | Foreach.cs:4:7:4:13 | Normal Exit | | +| Foreach.cs:6:10:6:11 | Entry | Foreach.cs:6:22:6:25 | args | | +| Foreach.cs:6:10:6:11 | Normal Exit | Foreach.cs:6:10:6:11 | Exit | | +| Foreach.cs:6:22:6:25 | args | Foreach.cs:7:5:10:5 | {...} | | +| Foreach.cs:7:5:10:5 | After {...} | Foreach.cs:6:10:6:11 | Normal Exit | | +| Foreach.cs:7:5:10:5 | {...} | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | | +| Foreach.cs:8:9:9:13 | After foreach (... ... in ...) ... | Foreach.cs:7:5:10:5 | After {...} | | +| Foreach.cs:8:9:9:13 | [LoopHeader] foreach (... ... in ...) ... | Foreach.cs:8:9:9:13 | After foreach (... ... in ...) ... | | +| Foreach.cs:8:9:9:13 | [LoopHeader] foreach (... ... in ...) ... | Foreach.cs:8:22:8:24 | String arg | | +| Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:29:8:32 | access to parameter args | | | Foreach.cs:8:22:8:24 | String arg | Foreach.cs:9:13:9:13 | ; | | -| Foreach.cs:8:29:8:32 | access to parameter args | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | | -| Foreach.cs:9:13:9:13 | ; | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | | -| Foreach.cs:12:10:12:11 | enter M2 | Foreach.cs:13:5:16:5 | {...} | | -| Foreach.cs:12:10:12:11 | exit M2 (normal) | Foreach.cs:12:10:12:11 | exit M2 | | -| Foreach.cs:13:5:16:5 | {...} | Foreach.cs:14:27:14:30 | access to parameter args | | -| Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:12:10:12:11 | exit M2 (normal) | empty | -| Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:14:22:14:22 | String _ | non-empty | +| Foreach.cs:8:29:8:32 | After access to parameter args [empty] | Foreach.cs:8:9:9:13 | After foreach (... ... in ...) ... | | +| Foreach.cs:8:29:8:32 | After access to parameter args [non-empty] | Foreach.cs:8:22:8:24 | String arg | | +| Foreach.cs:8:29:8:32 | access to parameter args | Foreach.cs:8:29:8:32 | After access to parameter args [empty] | empty | +| Foreach.cs:8:29:8:32 | access to parameter args | Foreach.cs:8:29:8:32 | After access to parameter args [non-empty] | non-empty | +| Foreach.cs:9:13:9:13 | ; | Foreach.cs:8:9:9:13 | [LoopHeader] foreach (... ... in ...) ... | | +| Foreach.cs:12:10:12:11 | Entry | Foreach.cs:12:22:12:25 | args | | +| Foreach.cs:12:10:12:11 | Normal Exit | Foreach.cs:12:10:12:11 | Exit | | +| Foreach.cs:12:22:12:25 | args | Foreach.cs:13:5:16:5 | {...} | | +| Foreach.cs:13:5:16:5 | After {...} | Foreach.cs:12:10:12:11 | Normal Exit | | +| Foreach.cs:13:5:16:5 | {...} | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | | +| Foreach.cs:14:9:15:13 | After foreach (... ... in ...) ... | Foreach.cs:13:5:16:5 | After {...} | | +| Foreach.cs:14:9:15:13 | [LoopHeader] foreach (... ... in ...) ... | Foreach.cs:14:9:15:13 | After foreach (... ... in ...) ... | | +| Foreach.cs:14:9:15:13 | [LoopHeader] foreach (... ... in ...) ... | Foreach.cs:14:22:14:22 | String _ | | +| Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:14:27:14:30 | access to parameter args | | | Foreach.cs:14:22:14:22 | String _ | Foreach.cs:15:13:15:13 | ; | | -| Foreach.cs:14:27:14:30 | access to parameter args | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | | -| Foreach.cs:15:13:15:13 | ; | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | | -| Foreach.cs:18:10:18:11 | enter M3 | Foreach.cs:19:5:22:5 | {...} | | -| Foreach.cs:18:10:18:11 | exit M3 (normal) | Foreach.cs:18:10:18:11 | exit M3 | | -| Foreach.cs:19:5:22:5 | {...} | Foreach.cs:20:27:20:27 | access to parameter e | | -| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:18:10:18:11 | exit M3 (normal) | empty | -| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:22:20:22 | String x | non-empty | +| Foreach.cs:14:27:14:30 | After access to parameter args [empty] | Foreach.cs:14:9:15:13 | After foreach (... ... in ...) ... | | +| Foreach.cs:14:27:14:30 | After access to parameter args [non-empty] | Foreach.cs:14:22:14:22 | String _ | | +| Foreach.cs:14:27:14:30 | access to parameter args | Foreach.cs:14:27:14:30 | After access to parameter args [empty] | empty | +| Foreach.cs:14:27:14:30 | access to parameter args | Foreach.cs:14:27:14:30 | After access to parameter args [non-empty] | non-empty | +| Foreach.cs:15:13:15:13 | ; | Foreach.cs:14:9:15:13 | [LoopHeader] foreach (... ... in ...) ... | | +| Foreach.cs:18:10:18:11 | Entry | Foreach.cs:18:33:18:33 | e | | +| Foreach.cs:18:10:18:11 | Normal Exit | Foreach.cs:18:10:18:11 | Exit | | +| Foreach.cs:18:33:18:33 | e | Foreach.cs:19:5:22:5 | {...} | | +| Foreach.cs:19:5:22:5 | After {...} | Foreach.cs:18:10:18:11 | Normal Exit | | +| Foreach.cs:19:5:22:5 | {...} | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | | +| Foreach.cs:20:9:21:11 | After foreach (... ... in ...) ... | Foreach.cs:19:5:22:5 | After {...} | | +| Foreach.cs:20:9:21:11 | [LoopHeader] foreach (... ... in ...) ... | Foreach.cs:20:9:21:11 | After foreach (... ... in ...) ... | | +| Foreach.cs:20:9:21:11 | [LoopHeader] foreach (... ... in ...) ... | Foreach.cs:20:22:20:22 | String x | | +| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:27:20:68 | ... ?? ... | | | Foreach.cs:20:22:20:22 | String x | Foreach.cs:21:11:21:11 | ; | | -| Foreach.cs:20:27:20:27 | access to parameter e | Foreach.cs:20:27:20:38 | call to method ToArray | non-null | -| Foreach.cs:20:27:20:27 | access to parameter e | Foreach.cs:20:43:20:68 | call to method Empty | null | -| Foreach.cs:20:27:20:38 | call to method ToArray | Foreach.cs:20:27:20:68 | ... ?? ... | non-null | -| Foreach.cs:20:27:20:38 | call to method ToArray | Foreach.cs:20:43:20:68 | call to method Empty | null | -| Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | | -| Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:20:27:20:68 | ... ?? ... | | -| Foreach.cs:21:11:21:11 | ; | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | | -| Foreach.cs:24:10:24:11 | enter M4 | Foreach.cs:25:5:28:5 | {...} | | -| Foreach.cs:24:10:24:11 | exit M4 (normal) | Foreach.cs:24:10:24:11 | exit M4 | | -| Foreach.cs:25:5:28:5 | {...} | Foreach.cs:26:36:26:39 | access to parameter args | | -| Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | Foreach.cs:24:10:24:11 | exit M4 (normal) | empty | -| Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | Foreach.cs:26:23:26:23 | String x | non-empty | -| Foreach.cs:26:18:26:31 | (..., ...) | Foreach.cs:27:11:27:11 | ; | | +| Foreach.cs:20:27:20:27 | After access to parameter e [non-null] | Foreach.cs:20:27:20:38 | call to method ToArray | | +| Foreach.cs:20:27:20:27 | After access to parameter e [null] | Foreach.cs:20:27:20:38 | After call to method ToArray [null] | null | +| Foreach.cs:20:27:20:27 | access to parameter e | Foreach.cs:20:27:20:27 | After access to parameter e [non-null] | non-null | +| Foreach.cs:20:27:20:27 | access to parameter e | Foreach.cs:20:27:20:27 | After access to parameter e [null] | null | +| Foreach.cs:20:27:20:38 | After call to method ToArray [non-null] | Foreach.cs:20:27:20:68 | After ... ?? ... [empty] | empty | +| Foreach.cs:20:27:20:38 | After call to method ToArray [non-null] | Foreach.cs:20:27:20:68 | After ... ?? ... [non-empty] | non-empty | +| Foreach.cs:20:27:20:38 | After call to method ToArray [null] | Foreach.cs:20:43:20:68 | Before call to method Empty | | +| Foreach.cs:20:27:20:38 | Before call to method ToArray | Foreach.cs:20:27:20:27 | access to parameter e | | +| Foreach.cs:20:27:20:38 | call to method ToArray | Foreach.cs:20:27:20:38 | After call to method ToArray [non-null] | non-null | +| Foreach.cs:20:27:20:38 | call to method ToArray | Foreach.cs:20:27:20:38 | After call to method ToArray [null] | null | +| Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:20:27:20:38 | Before call to method ToArray | | +| Foreach.cs:20:27:20:68 | After ... ?? ... [empty] | Foreach.cs:20:9:21:11 | After foreach (... ... in ...) ... | | +| Foreach.cs:20:27:20:68 | After ... ?? ... [non-empty] | Foreach.cs:20:22:20:22 | String x | | +| Foreach.cs:20:43:20:68 | After call to method Empty [empty] | Foreach.cs:20:27:20:68 | After ... ?? ... [empty] | empty | +| Foreach.cs:20:43:20:68 | After call to method Empty [non-empty] | Foreach.cs:20:27:20:68 | After ... ?? ... [non-empty] | non-empty | +| Foreach.cs:20:43:20:68 | Before call to method Empty | Foreach.cs:20:43:20:68 | call to method Empty | | +| Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:20:43:20:68 | After call to method Empty [empty] | empty | +| Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:20:43:20:68 | After call to method Empty [non-empty] | non-empty | +| Foreach.cs:21:11:21:11 | ; | Foreach.cs:20:9:21:11 | [LoopHeader] foreach (... ... in ...) ... | | +| Foreach.cs:24:10:24:11 | Entry | Foreach.cs:24:40:24:43 | args | | +| Foreach.cs:24:10:24:11 | Normal Exit | Foreach.cs:24:10:24:11 | Exit | | +| Foreach.cs:24:40:24:43 | args | Foreach.cs:25:5:28:5 | {...} | | +| Foreach.cs:25:5:28:5 | After {...} | Foreach.cs:24:10:24:11 | Normal Exit | | +| Foreach.cs:25:5:28:5 | {...} | Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | | +| Foreach.cs:26:9:27:11 | After foreach (... ... in ...) ... | Foreach.cs:25:5:28:5 | After {...} | | +| Foreach.cs:26:9:27:11 | [LoopHeader] foreach (... ... in ...) ... | Foreach.cs:26:9:27:11 | After foreach (... ... in ...) ... | | +| Foreach.cs:26:9:27:11 | [LoopHeader] foreach (... ... in ...) ... | Foreach.cs:26:18:26:31 | Before (..., ...) | | +| Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | Foreach.cs:26:36:26:39 | access to parameter args | | +| Foreach.cs:26:18:26:31 | (..., ...) | Foreach.cs:26:18:26:31 | After (..., ...) | | +| Foreach.cs:26:18:26:31 | After (..., ...) | Foreach.cs:27:11:27:11 | ; | | +| Foreach.cs:26:18:26:31 | Before (..., ...) | Foreach.cs:26:23:26:23 | String x | | | Foreach.cs:26:23:26:23 | String x | Foreach.cs:26:30:26:30 | Int32 y | | | Foreach.cs:26:30:26:30 | Int32 y | Foreach.cs:26:18:26:31 | (..., ...) | | -| Foreach.cs:26:36:26:39 | access to parameter args | Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | | -| Foreach.cs:27:11:27:11 | ; | Foreach.cs:26:9:27:11 | foreach (... ... in ...) ... | | -| Foreach.cs:30:10:30:11 | enter M5 | Foreach.cs:31:5:34:5 | {...} | | -| Foreach.cs:30:10:30:11 | exit M5 (normal) | Foreach.cs:30:10:30:11 | exit M5 | | -| Foreach.cs:31:5:34:5 | {...} | Foreach.cs:32:32:32:35 | access to parameter args | | -| Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | Foreach.cs:30:10:30:11 | exit M5 (normal) | empty | -| Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | Foreach.cs:32:23:32:23 | String x | non-empty | -| Foreach.cs:32:18:32:27 | (..., ...) | Foreach.cs:33:11:33:11 | ; | | +| Foreach.cs:26:36:26:39 | After access to parameter args [empty] | Foreach.cs:26:9:27:11 | After foreach (... ... in ...) ... | | +| Foreach.cs:26:36:26:39 | After access to parameter args [non-empty] | Foreach.cs:26:18:26:31 | Before (..., ...) | | +| Foreach.cs:26:36:26:39 | access to parameter args | Foreach.cs:26:36:26:39 | After access to parameter args [empty] | empty | +| Foreach.cs:26:36:26:39 | access to parameter args | Foreach.cs:26:36:26:39 | After access to parameter args [non-empty] | non-empty | +| Foreach.cs:27:11:27:11 | ; | Foreach.cs:26:9:27:11 | [LoopHeader] foreach (... ... in ...) ... | | +| Foreach.cs:30:10:30:11 | Entry | Foreach.cs:30:40:30:43 | args | | +| Foreach.cs:30:10:30:11 | Normal Exit | Foreach.cs:30:10:30:11 | Exit | | +| Foreach.cs:30:40:30:43 | args | Foreach.cs:31:5:34:5 | {...} | | +| Foreach.cs:31:5:34:5 | After {...} | Foreach.cs:30:10:30:11 | Normal Exit | | +| Foreach.cs:31:5:34:5 | {...} | Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | | +| Foreach.cs:32:9:33:11 | After foreach (... ... in ...) ... | Foreach.cs:31:5:34:5 | After {...} | | +| Foreach.cs:32:9:33:11 | [LoopHeader] foreach (... ... in ...) ... | Foreach.cs:32:9:33:11 | After foreach (... ... in ...) ... | | +| Foreach.cs:32:9:33:11 | [LoopHeader] foreach (... ... in ...) ... | Foreach.cs:32:18:32:27 | Before (..., ...) | | +| Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | Foreach.cs:32:32:32:35 | access to parameter args | | +| Foreach.cs:32:18:32:27 | (..., ...) | Foreach.cs:32:18:32:27 | After (..., ...) | | +| Foreach.cs:32:18:32:27 | After (..., ...) | Foreach.cs:33:11:33:11 | ; | | +| Foreach.cs:32:18:32:27 | Before (..., ...) | Foreach.cs:32:23:32:23 | String x | | | Foreach.cs:32:23:32:23 | String x | Foreach.cs:32:26:32:26 | Int32 y | | | Foreach.cs:32:26:32:26 | Int32 y | Foreach.cs:32:18:32:27 | (..., ...) | | -| Foreach.cs:32:32:32:35 | access to parameter args | Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | | -| Foreach.cs:33:11:33:11 | ; | Foreach.cs:32:9:33:11 | foreach (... ... in ...) ... | | -| Foreach.cs:36:10:36:11 | enter M6 | Foreach.cs:37:5:40:5 | {...} | | -| Foreach.cs:36:10:36:11 | exit M6 (normal) | Foreach.cs:36:10:36:11 | exit M6 | | -| Foreach.cs:37:5:40:5 | {...} | Foreach.cs:38:39:38:42 | access to parameter args | | -| Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | Foreach.cs:36:10:36:11 | exit M6 (normal) | empty | -| Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | Foreach.cs:38:26:38:26 | String x | non-empty | -| Foreach.cs:38:18:38:34 | (..., ...) | Foreach.cs:39:11:39:11 | ; | | +| Foreach.cs:32:32:32:35 | After access to parameter args [empty] | Foreach.cs:32:9:33:11 | After foreach (... ... in ...) ... | | +| Foreach.cs:32:32:32:35 | After access to parameter args [non-empty] | Foreach.cs:32:18:32:27 | Before (..., ...) | | +| Foreach.cs:32:32:32:35 | access to parameter args | Foreach.cs:32:32:32:35 | After access to parameter args [empty] | empty | +| Foreach.cs:32:32:32:35 | access to parameter args | Foreach.cs:32:32:32:35 | After access to parameter args [non-empty] | non-empty | +| Foreach.cs:33:11:33:11 | ; | Foreach.cs:32:9:33:11 | [LoopHeader] foreach (... ... in ...) ... | | +| Foreach.cs:36:10:36:11 | Entry | Foreach.cs:36:40:36:43 | args | | +| Foreach.cs:36:10:36:11 | Normal Exit | Foreach.cs:36:10:36:11 | Exit | | +| Foreach.cs:36:40:36:43 | args | Foreach.cs:37:5:40:5 | {...} | | +| Foreach.cs:37:5:40:5 | After {...} | Foreach.cs:36:10:36:11 | Normal Exit | | +| Foreach.cs:37:5:40:5 | {...} | Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | | +| Foreach.cs:38:9:39:11 | After foreach (... ... in ...) ... | Foreach.cs:37:5:40:5 | After {...} | | +| Foreach.cs:38:9:39:11 | [LoopHeader] foreach (... ... in ...) ... | Foreach.cs:38:9:39:11 | After foreach (... ... in ...) ... | | +| Foreach.cs:38:9:39:11 | [LoopHeader] foreach (... ... in ...) ... | Foreach.cs:38:18:38:34 | Before (..., ...) | | +| Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | Foreach.cs:38:39:38:42 | access to parameter args | | +| Foreach.cs:38:18:38:34 | (..., ...) | Foreach.cs:38:18:38:34 | After (..., ...) | | +| Foreach.cs:38:18:38:34 | After (..., ...) | Foreach.cs:39:11:39:11 | ; | | +| Foreach.cs:38:18:38:34 | Before (..., ...) | Foreach.cs:38:26:38:26 | String x | | | Foreach.cs:38:26:38:26 | String x | Foreach.cs:38:33:38:33 | Int32 y | | | Foreach.cs:38:33:38:33 | Int32 y | Foreach.cs:38:18:38:34 | (..., ...) | | -| Foreach.cs:38:39:38:42 | access to parameter args | Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | | -| Foreach.cs:39:11:39:11 | ; | Foreach.cs:38:9:39:11 | foreach (... ... in ...) ... | | -| Initializers.cs:3:7:3:18 | enter | Initializers.cs:5:9:5:9 | this access | | -| Initializers.cs:3:7:3:18 | enter Initializers | Initializers.cs:3:7:3:18 | {...} | | -| Initializers.cs:3:7:3:18 | exit (normal) | Initializers.cs:3:7:3:18 | exit | | -| Initializers.cs:3:7:3:18 | exit Initializers (normal) | Initializers.cs:3:7:3:18 | exit Initializers | | -| Initializers.cs:3:7:3:18 | {...} | Initializers.cs:3:7:3:18 | exit Initializers (normal) | | -| Initializers.cs:5:9:5:9 | access to field F | Initializers.cs:5:9:5:17 | ... = ... | | -| Initializers.cs:5:9:5:9 | this access | Initializers.cs:5:13:5:13 | access to field H | | -| Initializers.cs:5:9:5:17 | ... = ... | Initializers.cs:6:9:6:9 | this access | | +| Foreach.cs:38:39:38:42 | After access to parameter args [empty] | Foreach.cs:38:9:39:11 | After foreach (... ... in ...) ... | | +| Foreach.cs:38:39:38:42 | After access to parameter args [non-empty] | Foreach.cs:38:18:38:34 | Before (..., ...) | | +| Foreach.cs:38:39:38:42 | access to parameter args | Foreach.cs:38:39:38:42 | After access to parameter args [empty] | empty | +| Foreach.cs:38:39:38:42 | access to parameter args | Foreach.cs:38:39:38:42 | After access to parameter args [non-empty] | non-empty | +| Foreach.cs:39:11:39:11 | ; | Foreach.cs:38:9:39:11 | [LoopHeader] foreach (... ... in ...) ... | | +| Initializers.cs:3:7:3:18 | Entry | Initializers.cs:5:9:5:17 | Before ... = ... | | +| Initializers.cs:3:7:3:18 | Entry | Initializers.cs:18:16:18:20 | Before ... = ... | | +| Initializers.cs:3:7:3:18 | Normal Exit | Initializers.cs:3:7:3:18 | Exit | | +| Initializers.cs:3:7:3:18 | Normal Exit | Initializers.cs:3:7:3:18 | Exit | | +| Initializers.cs:3:7:3:18 | {...} | Initializers.cs:3:7:3:18 | Normal Exit | | +| Initializers.cs:5:9:5:9 | After access to field F | Initializers.cs:5:13:5:17 | Before ... + ... | | +| Initializers.cs:5:9:5:9 | Before access to field F | Initializers.cs:5:9:5:9 | this access | | +| Initializers.cs:5:9:5:9 | access to field F | Initializers.cs:5:9:5:9 | After access to field F | | +| Initializers.cs:5:9:5:9 | this access | Initializers.cs:5:9:5:9 | access to field F | | +| Initializers.cs:5:9:5:17 | ... = ... | Initializers.cs:5:9:5:17 | After ... = ... | | +| Initializers.cs:5:9:5:17 | After ... = ... | Initializers.cs:6:25:6:31 | Before ... = ... | | +| Initializers.cs:5:9:5:17 | Before ... = ... | Initializers.cs:5:9:5:9 | Before access to field F | | | Initializers.cs:5:13:5:13 | access to field H | Initializers.cs:5:17:5:17 | 1 | | -| Initializers.cs:5:13:5:17 | ... + ... | Initializers.cs:5:9:5:9 | access to field F | | +| Initializers.cs:5:13:5:17 | ... + ... | Initializers.cs:5:13:5:17 | After ... + ... | | +| Initializers.cs:5:13:5:17 | After ... + ... | Initializers.cs:5:9:5:17 | ... = ... | | +| Initializers.cs:5:13:5:17 | Before ... + ... | Initializers.cs:5:13:5:13 | access to field H | | | Initializers.cs:5:17:5:17 | 1 | Initializers.cs:5:13:5:17 | ... + ... | | -| Initializers.cs:6:9:6:9 | access to property G | Initializers.cs:6:25:6:31 | ... = ... | | -| Initializers.cs:6:9:6:9 | this access | Initializers.cs:6:27:6:27 | access to field H | | -| Initializers.cs:6:25:6:31 | ... = ... | Initializers.cs:3:7:3:18 | exit (normal) | | +| Initializers.cs:6:9:6:9 | After access to property G | Initializers.cs:6:27:6:31 | Before ... + ... | | +| Initializers.cs:6:9:6:9 | Before access to property G | Initializers.cs:6:9:6:9 | this access | | +| Initializers.cs:6:9:6:9 | access to property G | Initializers.cs:6:9:6:9 | After access to property G | | +| Initializers.cs:6:9:6:9 | this access | Initializers.cs:6:9:6:9 | access to property G | | +| Initializers.cs:6:25:6:31 | ... = ... | Initializers.cs:6:25:6:31 | After ... = ... | | +| Initializers.cs:6:25:6:31 | After ... = ... | Initializers.cs:3:7:3:18 | Normal Exit | | +| Initializers.cs:6:25:6:31 | Before ... = ... | Initializers.cs:6:9:6:9 | Before access to property G | | | Initializers.cs:6:27:6:27 | access to field H | Initializers.cs:6:31:6:31 | 2 | | -| Initializers.cs:6:27:6:31 | ... + ... | Initializers.cs:6:9:6:9 | access to property G | | +| Initializers.cs:6:27:6:31 | ... + ... | Initializers.cs:6:27:6:31 | After ... + ... | | +| Initializers.cs:6:27:6:31 | After ... + ... | Initializers.cs:6:25:6:31 | ... = ... | | +| Initializers.cs:6:27:6:31 | Before ... + ... | Initializers.cs:6:27:6:27 | access to field H | | | Initializers.cs:6:31:6:31 | 2 | Initializers.cs:6:27:6:31 | ... + ... | | -| Initializers.cs:8:5:8:16 | call to constructor Object | Initializers.cs:8:20:8:22 | {...} | | -| Initializers.cs:8:5:8:16 | call to method | Initializers.cs:8:5:8:16 | call to constructor Object | | -| Initializers.cs:8:5:8:16 | enter Initializers | Initializers.cs:8:5:8:16 | this access | | -| Initializers.cs:8:5:8:16 | exit Initializers (normal) | Initializers.cs:8:5:8:16 | exit Initializers | | +| Initializers.cs:8:5:8:16 | After call to constructor Object | Initializers.cs:8:20:8:22 | {...} | | +| Initializers.cs:8:5:8:16 | After call to method | Initializers.cs:8:5:8:16 | Before call to constructor Object | | +| Initializers.cs:8:5:8:16 | Before call to constructor Object | Initializers.cs:8:5:8:16 | call to constructor Object | | +| Initializers.cs:8:5:8:16 | Before call to method | Initializers.cs:8:5:8:16 | this access | | +| Initializers.cs:8:5:8:16 | Entry | Initializers.cs:8:5:8:16 | Before call to method | | +| Initializers.cs:8:5:8:16 | Normal Exit | Initializers.cs:8:5:8:16 | Exit | | +| Initializers.cs:8:5:8:16 | call to constructor Object | Initializers.cs:8:5:8:16 | After call to constructor Object | | +| Initializers.cs:8:5:8:16 | call to method | Initializers.cs:8:5:8:16 | After call to method | | | Initializers.cs:8:5:8:16 | this access | Initializers.cs:8:5:8:16 | call to method | | -| Initializers.cs:8:20:8:22 | {...} | Initializers.cs:8:5:8:16 | exit Initializers (normal) | | -| Initializers.cs:10:5:10:16 | call to constructor Object | Initializers.cs:10:28:10:30 | {...} | | -| Initializers.cs:10:5:10:16 | call to method | Initializers.cs:10:5:10:16 | call to constructor Object | | -| Initializers.cs:10:5:10:16 | enter Initializers | Initializers.cs:10:5:10:16 | this access | | -| Initializers.cs:10:5:10:16 | exit Initializers (normal) | Initializers.cs:10:5:10:16 | exit Initializers | | +| Initializers.cs:8:20:8:22 | {...} | Initializers.cs:8:5:8:16 | Normal Exit | | +| Initializers.cs:10:5:10:16 | After call to constructor Object | Initializers.cs:10:28:10:30 | {...} | | +| Initializers.cs:10:5:10:16 | After call to method | Initializers.cs:10:5:10:16 | Before call to constructor Object | | +| Initializers.cs:10:5:10:16 | Before call to constructor Object | Initializers.cs:10:5:10:16 | call to constructor Object | | +| Initializers.cs:10:5:10:16 | Before call to method | Initializers.cs:10:5:10:16 | this access | | +| Initializers.cs:10:5:10:16 | Entry | Initializers.cs:10:25:10:25 | s | | +| Initializers.cs:10:5:10:16 | Normal Exit | Initializers.cs:10:5:10:16 | Exit | | +| Initializers.cs:10:5:10:16 | call to constructor Object | Initializers.cs:10:5:10:16 | After call to constructor Object | | +| Initializers.cs:10:5:10:16 | call to method | Initializers.cs:10:5:10:16 | After call to method | | | Initializers.cs:10:5:10:16 | this access | Initializers.cs:10:5:10:16 | call to method | | -| Initializers.cs:10:28:10:30 | {...} | Initializers.cs:10:5:10:16 | exit Initializers (normal) | | -| Initializers.cs:12:10:12:10 | enter M | Initializers.cs:13:5:16:5 | {...} | | -| Initializers.cs:12:10:12:10 | exit M (normal) | Initializers.cs:12:10:12:10 | exit M | | +| Initializers.cs:10:25:10:25 | s | Initializers.cs:10:5:10:16 | Before call to method | | +| Initializers.cs:10:28:10:30 | {...} | Initializers.cs:10:5:10:16 | Normal Exit | | +| Initializers.cs:12:10:12:10 | Entry | Initializers.cs:13:5:16:5 | {...} | | +| Initializers.cs:12:10:12:10 | Normal Exit | Initializers.cs:12:10:12:10 | Exit | | +| Initializers.cs:13:5:16:5 | After {...} | Initializers.cs:12:10:12:10 | Normal Exit | | | Initializers.cs:13:5:16:5 | {...} | Initializers.cs:14:9:14:54 | ... ...; | | -| Initializers.cs:14:9:14:54 | ... ...; | Initializers.cs:14:34:14:35 | "" | | -| Initializers.cs:14:13:14:53 | Initializers i = ... | Initializers.cs:15:9:15:64 | ... ...; | | -| Initializers.cs:14:17:14:53 | object creation of type Initializers | Initializers.cs:14:44:14:44 | 0 | | +| Initializers.cs:14:9:14:54 | ... ...; | Initializers.cs:14:13:14:53 | Before Initializers i = ... | | +| Initializers.cs:14:9:14:54 | After ... ...; | Initializers.cs:15:9:15:64 | ... ...; | | +| Initializers.cs:14:13:14:13 | access to local variable i | Initializers.cs:14:17:14:53 | Before object creation of type Initializers | | +| Initializers.cs:14:13:14:53 | After Initializers i = ... | Initializers.cs:14:9:14:54 | After ... ...; | | +| Initializers.cs:14:13:14:53 | Before Initializers i = ... | Initializers.cs:14:13:14:13 | access to local variable i | | +| Initializers.cs:14:13:14:53 | Initializers i = ... | Initializers.cs:14:13:14:53 | After Initializers i = ... | | +| Initializers.cs:14:17:14:53 | After object creation of type Initializers | Initializers.cs:14:13:14:53 | Initializers i = ... | | +| Initializers.cs:14:17:14:53 | Before object creation of type Initializers | Initializers.cs:14:34:14:35 | "" | | +| Initializers.cs:14:17:14:53 | object creation of type Initializers | Initializers.cs:14:38:14:53 | Before { ..., ... } | | | Initializers.cs:14:34:14:35 | "" | Initializers.cs:14:17:14:53 | object creation of type Initializers | | -| Initializers.cs:14:38:14:53 | { ..., ... } | Initializers.cs:14:13:14:53 | Initializers i = ... | | -| Initializers.cs:14:40:14:40 | access to field F | Initializers.cs:14:40:14:44 | ... = ... | | -| Initializers.cs:14:40:14:44 | ... = ... | Initializers.cs:14:51:14:51 | 1 | | -| Initializers.cs:14:44:14:44 | 0 | Initializers.cs:14:40:14:40 | access to field F | | -| Initializers.cs:14:47:14:47 | access to property G | Initializers.cs:14:47:14:51 | ... = ... | | -| Initializers.cs:14:47:14:51 | ... = ... | Initializers.cs:14:38:14:53 | { ..., ... } | | -| Initializers.cs:14:51:14:51 | 1 | Initializers.cs:14:47:14:47 | access to property G | | -| Initializers.cs:15:9:15:64 | ... ...; | Initializers.cs:15:18:15:63 | 2 | | -| Initializers.cs:15:13:15:63 | Initializers[] iz = ... | Initializers.cs:12:10:12:10 | exit M (normal) | | +| Initializers.cs:14:38:14:53 | After { ..., ... } | Initializers.cs:14:17:14:53 | After object creation of type Initializers | | +| Initializers.cs:14:38:14:53 | Before { ..., ... } | Initializers.cs:14:40:14:44 | Before ... = ... | | +| Initializers.cs:14:38:14:53 | { ..., ... } | Initializers.cs:14:38:14:53 | After { ..., ... } | | +| Initializers.cs:14:40:14:40 | access to field F | Initializers.cs:14:44:14:44 | 0 | | +| Initializers.cs:14:40:14:44 | ... = ... | Initializers.cs:14:40:14:44 | After ... = ... | | +| Initializers.cs:14:40:14:44 | After ... = ... | Initializers.cs:14:47:14:51 | Before ... = ... | | +| Initializers.cs:14:40:14:44 | Before ... = ... | Initializers.cs:14:40:14:40 | access to field F | | +| Initializers.cs:14:44:14:44 | 0 | Initializers.cs:14:40:14:44 | ... = ... | | +| Initializers.cs:14:47:14:47 | After access to property G | Initializers.cs:14:51:14:51 | 1 | | +| Initializers.cs:14:47:14:47 | Before access to property G | Initializers.cs:14:47:14:47 | access to property G | | +| Initializers.cs:14:47:14:47 | access to property G | Initializers.cs:14:47:14:47 | After access to property G | | +| Initializers.cs:14:47:14:51 | ... = ... | Initializers.cs:14:47:14:51 | After ... = ... | | +| Initializers.cs:14:47:14:51 | After ... = ... | Initializers.cs:14:38:14:53 | { ..., ... } | | +| Initializers.cs:14:47:14:51 | Before ... = ... | Initializers.cs:14:47:14:47 | Before access to property G | | +| Initializers.cs:14:51:14:51 | 1 | Initializers.cs:14:47:14:51 | ... = ... | | +| Initializers.cs:15:9:15:64 | ... ...; | Initializers.cs:15:13:15:63 | Before Initializers[] iz = ... | | +| Initializers.cs:15:9:15:64 | After ... ...; | Initializers.cs:13:5:16:5 | After {...} | | +| Initializers.cs:15:13:15:14 | access to local variable iz | Initializers.cs:15:18:15:63 | Before array creation of type Initializers[] | | +| Initializers.cs:15:13:15:63 | After Initializers[] iz = ... | Initializers.cs:15:9:15:64 | After ... ...; | | +| Initializers.cs:15:13:15:63 | Before Initializers[] iz = ... | Initializers.cs:15:13:15:14 | access to local variable iz | | +| Initializers.cs:15:13:15:63 | Initializers[] iz = ... | Initializers.cs:15:13:15:63 | After Initializers[] iz = ... | | | Initializers.cs:15:18:15:63 | 2 | Initializers.cs:15:18:15:63 | array creation of type Initializers[] | | -| Initializers.cs:15:18:15:63 | array creation of type Initializers[] | Initializers.cs:15:39:15:39 | access to local variable i | | -| Initializers.cs:15:37:15:63 | { ..., ... } | Initializers.cs:15:13:15:63 | Initializers[] iz = ... | | -| Initializers.cs:15:39:15:39 | access to local variable i | Initializers.cs:15:59:15:60 | "" | | -| Initializers.cs:15:42:15:61 | object creation of type Initializers | Initializers.cs:15:37:15:63 | { ..., ... } | | +| Initializers.cs:15:18:15:63 | After array creation of type Initializers[] | Initializers.cs:15:13:15:63 | Initializers[] iz = ... | | +| Initializers.cs:15:18:15:63 | Before array creation of type Initializers[] | Initializers.cs:15:37:15:63 | Before { ..., ... } | | +| Initializers.cs:15:18:15:63 | array creation of type Initializers[] | Initializers.cs:15:18:15:63 | After array creation of type Initializers[] | | +| Initializers.cs:15:37:15:63 | After { ..., ... } | Initializers.cs:15:18:15:63 | 2 | | +| Initializers.cs:15:37:15:63 | Before { ..., ... } | Initializers.cs:15:39:15:39 | access to local variable i | | +| Initializers.cs:15:37:15:63 | { ..., ... } | Initializers.cs:15:37:15:63 | After { ..., ... } | | +| Initializers.cs:15:39:15:39 | access to local variable i | Initializers.cs:15:42:15:61 | Before object creation of type Initializers | | +| Initializers.cs:15:42:15:61 | After object creation of type Initializers | Initializers.cs:15:37:15:63 | { ..., ... } | | +| Initializers.cs:15:42:15:61 | Before object creation of type Initializers | Initializers.cs:15:59:15:60 | "" | | +| Initializers.cs:15:42:15:61 | object creation of type Initializers | Initializers.cs:15:42:15:61 | After object creation of type Initializers | | | Initializers.cs:15:59:15:60 | "" | Initializers.cs:15:42:15:61 | object creation of type Initializers | | -| Initializers.cs:18:16:18:16 | access to field H | Initializers.cs:18:16:18:20 | ... = ... | | -| Initializers.cs:18:16:18:16 | enter H | Initializers.cs:18:20:18:20 | 1 | | -| Initializers.cs:18:16:18:16 | exit H (normal) | Initializers.cs:18:16:18:16 | exit H | | -| Initializers.cs:18:16:18:20 | ... = ... | Initializers.cs:18:16:18:16 | exit H (normal) | | -| Initializers.cs:18:20:18:20 | 1 | Initializers.cs:18:16:18:16 | access to field H | | -| Initializers.cs:20:11:20:23 | call to constructor Object | Initializers.cs:20:11:20:23 | {...} | | -| Initializers.cs:20:11:20:23 | call to method | Initializers.cs:20:11:20:23 | call to constructor Object | | -| Initializers.cs:20:11:20:23 | enter | Initializers.cs:22:23:22:23 | this access | | -| Initializers.cs:20:11:20:23 | enter NoConstructor | Initializers.cs:20:11:20:23 | this access | | -| Initializers.cs:20:11:20:23 | exit (normal) | Initializers.cs:20:11:20:23 | exit | | -| Initializers.cs:20:11:20:23 | exit NoConstructor (normal) | Initializers.cs:20:11:20:23 | exit NoConstructor | | +| Initializers.cs:18:16:18:16 | access to field H | Initializers.cs:18:20:18:20 | 1 | | +| Initializers.cs:18:16:18:20 | ... = ... | Initializers.cs:18:16:18:20 | After ... = ... | | +| Initializers.cs:18:16:18:20 | After ... = ... | Initializers.cs:3:7:3:18 | {...} | | +| Initializers.cs:18:16:18:20 | Before ... = ... | Initializers.cs:18:16:18:16 | access to field H | | +| Initializers.cs:18:20:18:20 | 1 | Initializers.cs:18:16:18:20 | ... = ... | | +| Initializers.cs:20:11:20:23 | After call to constructor Object | Initializers.cs:20:11:20:23 | {...} | | +| Initializers.cs:20:11:20:23 | After call to method | Initializers.cs:20:11:20:23 | Before call to constructor Object | | +| Initializers.cs:20:11:20:23 | Before call to constructor Object | Initializers.cs:20:11:20:23 | call to constructor Object | | +| Initializers.cs:20:11:20:23 | Before call to method | Initializers.cs:20:11:20:23 | this access | | +| Initializers.cs:20:11:20:23 | Entry | Initializers.cs:20:11:20:23 | Before call to method | | +| Initializers.cs:20:11:20:23 | Entry | Initializers.cs:22:23:22:27 | Before ... = ... | | +| Initializers.cs:20:11:20:23 | Normal Exit | Initializers.cs:20:11:20:23 | Exit | | +| Initializers.cs:20:11:20:23 | Normal Exit | Initializers.cs:20:11:20:23 | Exit | | +| Initializers.cs:20:11:20:23 | call to constructor Object | Initializers.cs:20:11:20:23 | After call to constructor Object | | +| Initializers.cs:20:11:20:23 | call to method | Initializers.cs:20:11:20:23 | After call to method | | | Initializers.cs:20:11:20:23 | this access | Initializers.cs:20:11:20:23 | call to method | | -| Initializers.cs:20:11:20:23 | {...} | Initializers.cs:20:11:20:23 | exit NoConstructor (normal) | | -| Initializers.cs:22:23:22:23 | access to field F | Initializers.cs:22:23:22:27 | ... = ... | | -| Initializers.cs:22:23:22:23 | this access | Initializers.cs:22:27:22:27 | 0 | | -| Initializers.cs:22:23:22:27 | ... = ... | Initializers.cs:23:23:23:23 | this access | | -| Initializers.cs:22:27:22:27 | 0 | Initializers.cs:22:23:22:23 | access to field F | | -| Initializers.cs:23:23:23:23 | access to field G | Initializers.cs:23:23:23:27 | ... = ... | | -| Initializers.cs:23:23:23:23 | this access | Initializers.cs:23:27:23:27 | 1 | | -| Initializers.cs:23:23:23:27 | ... = ... | Initializers.cs:20:11:20:23 | exit (normal) | | -| Initializers.cs:23:27:23:27 | 1 | Initializers.cs:23:23:23:23 | access to field G | | -| Initializers.cs:26:11:26:13 | enter | Initializers.cs:28:13:28:13 | this access | | -| Initializers.cs:26:11:26:13 | exit (normal) | Initializers.cs:26:11:26:13 | exit | | -| Initializers.cs:28:13:28:13 | access to field H | Initializers.cs:28:13:28:17 | ... = ... | | -| Initializers.cs:28:13:28:13 | this access | Initializers.cs:28:17:28:17 | 2 | | -| Initializers.cs:28:13:28:17 | ... = ... | Initializers.cs:26:11:26:13 | exit (normal) | | -| Initializers.cs:28:17:28:17 | 2 | Initializers.cs:28:13:28:13 | access to field H | | -| Initializers.cs:31:9:31:11 | call to method | Initializers.cs:31:17:31:20 | call to constructor NoConstructor | | -| Initializers.cs:31:9:31:11 | enter Sub | Initializers.cs:31:9:31:11 | this access | | -| Initializers.cs:31:9:31:11 | exit Sub (normal) | Initializers.cs:31:9:31:11 | exit Sub | | +| Initializers.cs:20:11:20:23 | {...} | Initializers.cs:20:11:20:23 | Normal Exit | | +| Initializers.cs:22:23:22:23 | After access to field F | Initializers.cs:22:27:22:27 | 0 | | +| Initializers.cs:22:23:22:23 | Before access to field F | Initializers.cs:22:23:22:23 | this access | | +| Initializers.cs:22:23:22:23 | access to field F | Initializers.cs:22:23:22:23 | After access to field F | | +| Initializers.cs:22:23:22:23 | this access | Initializers.cs:22:23:22:23 | access to field F | | +| Initializers.cs:22:23:22:27 | ... = ... | Initializers.cs:22:23:22:27 | After ... = ... | | +| Initializers.cs:22:23:22:27 | After ... = ... | Initializers.cs:23:23:23:27 | Before ... = ... | | +| Initializers.cs:22:23:22:27 | Before ... = ... | Initializers.cs:22:23:22:23 | Before access to field F | | +| Initializers.cs:22:27:22:27 | 0 | Initializers.cs:22:23:22:27 | ... = ... | | +| Initializers.cs:23:23:23:23 | After access to field G | Initializers.cs:23:27:23:27 | 1 | | +| Initializers.cs:23:23:23:23 | Before access to field G | Initializers.cs:23:23:23:23 | this access | | +| Initializers.cs:23:23:23:23 | access to field G | Initializers.cs:23:23:23:23 | After access to field G | | +| Initializers.cs:23:23:23:23 | this access | Initializers.cs:23:23:23:23 | access to field G | | +| Initializers.cs:23:23:23:27 | ... = ... | Initializers.cs:23:23:23:27 | After ... = ... | | +| Initializers.cs:23:23:23:27 | After ... = ... | Initializers.cs:20:11:20:23 | Normal Exit | | +| Initializers.cs:23:23:23:27 | Before ... = ... | Initializers.cs:23:23:23:23 | Before access to field G | | +| Initializers.cs:23:27:23:27 | 1 | Initializers.cs:23:23:23:27 | ... = ... | | +| Initializers.cs:26:11:26:13 | Entry | Initializers.cs:28:13:28:17 | Before ... = ... | | +| Initializers.cs:26:11:26:13 | Normal Exit | Initializers.cs:26:11:26:13 | Exit | | +| Initializers.cs:28:13:28:13 | After access to field H | Initializers.cs:28:17:28:17 | 2 | | +| Initializers.cs:28:13:28:13 | Before access to field H | Initializers.cs:28:13:28:13 | this access | | +| Initializers.cs:28:13:28:13 | access to field H | Initializers.cs:28:13:28:13 | After access to field H | | +| Initializers.cs:28:13:28:13 | this access | Initializers.cs:28:13:28:13 | access to field H | | +| Initializers.cs:28:13:28:17 | ... = ... | Initializers.cs:28:13:28:17 | After ... = ... | | +| Initializers.cs:28:13:28:17 | After ... = ... | Initializers.cs:26:11:26:13 | Normal Exit | | +| Initializers.cs:28:13:28:17 | Before ... = ... | Initializers.cs:28:13:28:13 | Before access to field H | | +| Initializers.cs:28:17:28:17 | 2 | Initializers.cs:28:13:28:17 | ... = ... | | +| Initializers.cs:31:9:31:11 | After call to method | Initializers.cs:31:17:31:20 | Before call to constructor NoConstructor | | +| Initializers.cs:31:9:31:11 | Before call to method | Initializers.cs:31:9:31:11 | this access | | +| Initializers.cs:31:9:31:11 | Entry | Initializers.cs:31:9:31:11 | Before call to method | | +| Initializers.cs:31:9:31:11 | Normal Exit | Initializers.cs:31:9:31:11 | Exit | | +| Initializers.cs:31:9:31:11 | call to method | Initializers.cs:31:9:31:11 | After call to method | | | Initializers.cs:31:9:31:11 | this access | Initializers.cs:31:9:31:11 | call to method | | -| Initializers.cs:31:17:31:20 | call to constructor NoConstructor | Initializers.cs:31:24:31:33 | {...} | | +| Initializers.cs:31:17:31:20 | After call to constructor NoConstructor | Initializers.cs:31:24:31:33 | {...} | | +| Initializers.cs:31:17:31:20 | Before call to constructor NoConstructor | Initializers.cs:31:17:31:20 | call to constructor NoConstructor | | +| Initializers.cs:31:17:31:20 | call to constructor NoConstructor | Initializers.cs:31:17:31:20 | After call to constructor NoConstructor | | +| Initializers.cs:31:24:31:33 | After {...} | Initializers.cs:31:9:31:11 | Normal Exit | | | Initializers.cs:31:24:31:33 | {...} | Initializers.cs:31:26:31:31 | ...; | | -| Initializers.cs:31:26:31:26 | access to field I | Initializers.cs:31:26:31:30 | ... = ... | | -| Initializers.cs:31:26:31:26 | this access | Initializers.cs:31:30:31:30 | 3 | | -| Initializers.cs:31:26:31:30 | ... = ... | Initializers.cs:31:9:31:11 | exit Sub (normal) | | -| Initializers.cs:31:26:31:31 | ...; | Initializers.cs:31:26:31:26 | this access | | -| Initializers.cs:31:30:31:30 | 3 | Initializers.cs:31:26:31:26 | access to field I | | -| Initializers.cs:33:9:33:11 | enter Sub | Initializers.cs:33:22:33:25 | call to constructor Sub | | -| Initializers.cs:33:9:33:11 | exit Sub (normal) | Initializers.cs:33:9:33:11 | exit Sub | | -| Initializers.cs:33:22:33:25 | call to constructor Sub | Initializers.cs:33:29:33:38 | {...} | | +| Initializers.cs:31:26:31:26 | After access to field I | Initializers.cs:31:30:31:30 | 3 | | +| Initializers.cs:31:26:31:26 | Before access to field I | Initializers.cs:31:26:31:26 | this access | | +| Initializers.cs:31:26:31:26 | access to field I | Initializers.cs:31:26:31:26 | After access to field I | | +| Initializers.cs:31:26:31:26 | this access | Initializers.cs:31:26:31:26 | access to field I | | +| Initializers.cs:31:26:31:30 | ... = ... | Initializers.cs:31:26:31:30 | After ... = ... | | +| Initializers.cs:31:26:31:30 | After ... = ... | Initializers.cs:31:26:31:31 | After ...; | | +| Initializers.cs:31:26:31:30 | Before ... = ... | Initializers.cs:31:26:31:26 | Before access to field I | | +| Initializers.cs:31:26:31:31 | ...; | Initializers.cs:31:26:31:30 | Before ... = ... | | +| Initializers.cs:31:26:31:31 | After ...; | Initializers.cs:31:24:31:33 | After {...} | | +| Initializers.cs:31:30:31:30 | 3 | Initializers.cs:31:26:31:30 | ... = ... | | +| Initializers.cs:33:9:33:11 | Entry | Initializers.cs:33:17:33:17 | i | | +| Initializers.cs:33:9:33:11 | Normal Exit | Initializers.cs:33:9:33:11 | Exit | | +| Initializers.cs:33:17:33:17 | i | Initializers.cs:33:22:33:25 | Before call to constructor Sub | | +| Initializers.cs:33:22:33:25 | After call to constructor Sub | Initializers.cs:33:29:33:38 | {...} | | +| Initializers.cs:33:22:33:25 | Before call to constructor Sub | Initializers.cs:33:22:33:25 | call to constructor Sub | | +| Initializers.cs:33:22:33:25 | call to constructor Sub | Initializers.cs:33:22:33:25 | After call to constructor Sub | | +| Initializers.cs:33:29:33:38 | After {...} | Initializers.cs:33:9:33:11 | Normal Exit | | | Initializers.cs:33:29:33:38 | {...} | Initializers.cs:33:31:33:36 | ...; | | -| Initializers.cs:33:31:33:31 | access to field I | Initializers.cs:33:31:33:35 | ... = ... | | -| Initializers.cs:33:31:33:31 | this access | Initializers.cs:33:35:33:35 | access to parameter i | | -| Initializers.cs:33:31:33:35 | ... = ... | Initializers.cs:33:9:33:11 | exit Sub (normal) | | -| Initializers.cs:33:31:33:36 | ...; | Initializers.cs:33:31:33:31 | this access | | -| Initializers.cs:33:35:33:35 | access to parameter i | Initializers.cs:33:31:33:31 | access to field I | | -| Initializers.cs:35:9:35:11 | call to constructor NoConstructor | Initializers.cs:35:27:35:40 | {...} | | -| Initializers.cs:35:9:35:11 | call to method | Initializers.cs:35:9:35:11 | call to constructor NoConstructor | | -| Initializers.cs:35:9:35:11 | enter Sub | Initializers.cs:35:9:35:11 | this access | | -| Initializers.cs:35:9:35:11 | exit Sub (normal) | Initializers.cs:35:9:35:11 | exit Sub | | +| Initializers.cs:33:31:33:31 | After access to field I | Initializers.cs:33:35:33:35 | access to parameter i | | +| Initializers.cs:33:31:33:31 | Before access to field I | Initializers.cs:33:31:33:31 | this access | | +| Initializers.cs:33:31:33:31 | access to field I | Initializers.cs:33:31:33:31 | After access to field I | | +| Initializers.cs:33:31:33:31 | this access | Initializers.cs:33:31:33:31 | access to field I | | +| Initializers.cs:33:31:33:35 | ... = ... | Initializers.cs:33:31:33:35 | After ... = ... | | +| Initializers.cs:33:31:33:35 | After ... = ... | Initializers.cs:33:31:33:36 | After ...; | | +| Initializers.cs:33:31:33:35 | Before ... = ... | Initializers.cs:33:31:33:31 | Before access to field I | | +| Initializers.cs:33:31:33:36 | ...; | Initializers.cs:33:31:33:35 | Before ... = ... | | +| Initializers.cs:33:31:33:36 | After ...; | Initializers.cs:33:29:33:38 | After {...} | | +| Initializers.cs:33:35:33:35 | access to parameter i | Initializers.cs:33:31:33:35 | ... = ... | | +| Initializers.cs:35:9:35:11 | After call to constructor NoConstructor | Initializers.cs:35:27:35:40 | {...} | | +| Initializers.cs:35:9:35:11 | After call to method | Initializers.cs:35:9:35:11 | Before call to constructor NoConstructor | | +| Initializers.cs:35:9:35:11 | Before call to constructor NoConstructor | Initializers.cs:35:9:35:11 | call to constructor NoConstructor | | +| Initializers.cs:35:9:35:11 | Before call to method | Initializers.cs:35:9:35:11 | this access | | +| Initializers.cs:35:9:35:11 | Entry | Initializers.cs:35:17:35:17 | i | | +| Initializers.cs:35:9:35:11 | Normal Exit | Initializers.cs:35:9:35:11 | Exit | | +| Initializers.cs:35:9:35:11 | call to constructor NoConstructor | Initializers.cs:35:9:35:11 | After call to constructor NoConstructor | | +| Initializers.cs:35:9:35:11 | call to method | Initializers.cs:35:9:35:11 | After call to method | | | Initializers.cs:35:9:35:11 | this access | Initializers.cs:35:9:35:11 | call to method | | +| Initializers.cs:35:17:35:17 | i | Initializers.cs:35:24:35:24 | j | | +| Initializers.cs:35:24:35:24 | j | Initializers.cs:35:9:35:11 | Before call to method | | +| Initializers.cs:35:27:35:40 | After {...} | Initializers.cs:35:9:35:11 | Normal Exit | | | Initializers.cs:35:27:35:40 | {...} | Initializers.cs:35:29:35:38 | ...; | | -| Initializers.cs:35:29:35:29 | access to field I | Initializers.cs:35:29:35:37 | ... = ... | | -| Initializers.cs:35:29:35:29 | this access | Initializers.cs:35:33:35:33 | access to parameter i | | -| Initializers.cs:35:29:35:37 | ... = ... | Initializers.cs:35:9:35:11 | exit Sub (normal) | | -| Initializers.cs:35:29:35:38 | ...; | Initializers.cs:35:29:35:29 | this access | | +| Initializers.cs:35:29:35:29 | After access to field I | Initializers.cs:35:33:35:37 | Before ... + ... | | +| Initializers.cs:35:29:35:29 | Before access to field I | Initializers.cs:35:29:35:29 | this access | | +| Initializers.cs:35:29:35:29 | access to field I | Initializers.cs:35:29:35:29 | After access to field I | | +| Initializers.cs:35:29:35:29 | this access | Initializers.cs:35:29:35:29 | access to field I | | +| Initializers.cs:35:29:35:37 | ... = ... | Initializers.cs:35:29:35:37 | After ... = ... | | +| Initializers.cs:35:29:35:37 | After ... = ... | Initializers.cs:35:29:35:38 | After ...; | | +| Initializers.cs:35:29:35:37 | Before ... = ... | Initializers.cs:35:29:35:29 | Before access to field I | | +| Initializers.cs:35:29:35:38 | ...; | Initializers.cs:35:29:35:37 | Before ... = ... | | +| Initializers.cs:35:29:35:38 | After ...; | Initializers.cs:35:27:35:40 | After {...} | | | Initializers.cs:35:33:35:33 | access to parameter i | Initializers.cs:35:37:35:37 | access to parameter j | | -| Initializers.cs:35:33:35:37 | ... + ... | Initializers.cs:35:29:35:29 | access to field I | | +| Initializers.cs:35:33:35:37 | ... + ... | Initializers.cs:35:33:35:37 | After ... + ... | | +| Initializers.cs:35:33:35:37 | After ... + ... | Initializers.cs:35:29:35:37 | ... = ... | | +| Initializers.cs:35:33:35:37 | Before ... + ... | Initializers.cs:35:33:35:33 | access to parameter i | | | Initializers.cs:35:37:35:37 | access to parameter j | Initializers.cs:35:33:35:37 | ... + ... | | -| Initializers.cs:39:7:39:23 | call to constructor Object | Initializers.cs:39:7:39:23 | {...} | | -| Initializers.cs:39:7:39:23 | call to method | Initializers.cs:39:7:39:23 | call to constructor Object | | -| Initializers.cs:39:7:39:23 | enter IndexInitializers | Initializers.cs:39:7:39:23 | this access | | -| Initializers.cs:39:7:39:23 | exit IndexInitializers (normal) | Initializers.cs:39:7:39:23 | exit IndexInitializers | | +| Initializers.cs:39:7:39:23 | After call to constructor Object | Initializers.cs:39:7:39:23 | {...} | | +| Initializers.cs:39:7:39:23 | After call to method | Initializers.cs:39:7:39:23 | Before call to constructor Object | | +| Initializers.cs:39:7:39:23 | Before call to constructor Object | Initializers.cs:39:7:39:23 | call to constructor Object | | +| Initializers.cs:39:7:39:23 | Before call to method | Initializers.cs:39:7:39:23 | this access | | +| Initializers.cs:39:7:39:23 | Entry | Initializers.cs:39:7:39:23 | Before call to method | | +| Initializers.cs:39:7:39:23 | Normal Exit | Initializers.cs:39:7:39:23 | Exit | | +| Initializers.cs:39:7:39:23 | call to constructor Object | Initializers.cs:39:7:39:23 | After call to constructor Object | | +| Initializers.cs:39:7:39:23 | call to method | Initializers.cs:39:7:39:23 | After call to method | | | Initializers.cs:39:7:39:23 | this access | Initializers.cs:39:7:39:23 | call to method | | -| Initializers.cs:39:7:39:23 | {...} | Initializers.cs:39:7:39:23 | exit IndexInitializers (normal) | | -| Initializers.cs:41:11:41:18 | call to constructor Object | Initializers.cs:41:11:41:18 | {...} | | -| Initializers.cs:41:11:41:18 | call to method | Initializers.cs:41:11:41:18 | call to constructor Object | | -| Initializers.cs:41:11:41:18 | enter Compound | Initializers.cs:41:11:41:18 | this access | | -| Initializers.cs:41:11:41:18 | exit Compound (normal) | Initializers.cs:41:11:41:18 | exit Compound | | +| Initializers.cs:39:7:39:23 | {...} | Initializers.cs:39:7:39:23 | Normal Exit | | +| Initializers.cs:41:11:41:18 | After call to constructor Object | Initializers.cs:41:11:41:18 | {...} | | +| Initializers.cs:41:11:41:18 | After call to method | Initializers.cs:41:11:41:18 | Before call to constructor Object | | +| Initializers.cs:41:11:41:18 | Before call to constructor Object | Initializers.cs:41:11:41:18 | call to constructor Object | | +| Initializers.cs:41:11:41:18 | Before call to method | Initializers.cs:41:11:41:18 | this access | | +| Initializers.cs:41:11:41:18 | Entry | Initializers.cs:41:11:41:18 | Before call to method | | +| Initializers.cs:41:11:41:18 | Normal Exit | Initializers.cs:41:11:41:18 | Exit | | +| Initializers.cs:41:11:41:18 | call to constructor Object | Initializers.cs:41:11:41:18 | After call to constructor Object | | +| Initializers.cs:41:11:41:18 | call to method | Initializers.cs:41:11:41:18 | After call to method | | | Initializers.cs:41:11:41:18 | this access | Initializers.cs:41:11:41:18 | call to method | | -| Initializers.cs:41:11:41:18 | {...} | Initializers.cs:41:11:41:18 | exit Compound (normal) | | -| Initializers.cs:51:10:51:13 | enter Test | Initializers.cs:52:5:66:5 | {...} | | -| Initializers.cs:51:10:51:13 | exit Test (normal) | Initializers.cs:51:10:51:13 | exit Test | | +| Initializers.cs:41:11:41:18 | {...} | Initializers.cs:41:11:41:18 | Normal Exit | | +| Initializers.cs:51:10:51:13 | Entry | Initializers.cs:51:19:51:19 | i | | +| Initializers.cs:51:10:51:13 | Normal Exit | Initializers.cs:51:10:51:13 | Exit | | +| Initializers.cs:51:19:51:19 | i | Initializers.cs:52:5:66:5 | {...} | | +| Initializers.cs:52:5:66:5 | After {...} | Initializers.cs:51:10:51:13 | Normal Exit | | | Initializers.cs:52:5:66:5 | {...} | Initializers.cs:54:9:54:96 | ... ...; | | -| Initializers.cs:54:9:54:96 | ... ...; | Initializers.cs:54:20:54:95 | object creation of type Dictionary | | -| Initializers.cs:54:13:54:95 | Dictionary dict = ... | Initializers.cs:57:9:65:10 | ... ...; | | -| Initializers.cs:54:20:54:95 | object creation of type Dictionary | Initializers.cs:54:53:54:53 | 0 | | -| Initializers.cs:54:50:54:95 | { ..., ... } | Initializers.cs:54:13:54:95 | Dictionary dict = ... | | -| Initializers.cs:54:52:54:54 | access to indexer | Initializers.cs:54:52:54:63 | ... = ... | | -| Initializers.cs:54:52:54:63 | ... = ... | Initializers.cs:54:67:54:67 | 1 | | -| Initializers.cs:54:53:54:53 | 0 | Initializers.cs:54:58:54:63 | "Zero" | | -| Initializers.cs:54:58:54:63 | "Zero" | Initializers.cs:54:52:54:54 | access to indexer | | -| Initializers.cs:54:66:54:68 | access to indexer | Initializers.cs:54:66:54:76 | ... = ... | | -| Initializers.cs:54:66:54:76 | ... = ... | Initializers.cs:54:80:54:80 | access to parameter i | | -| Initializers.cs:54:67:54:67 | 1 | Initializers.cs:54:72:54:76 | "One" | | -| Initializers.cs:54:72:54:76 | "One" | Initializers.cs:54:66:54:68 | access to indexer | | -| Initializers.cs:54:79:54:85 | access to indexer | Initializers.cs:54:79:54:93 | ... = ... | | -| Initializers.cs:54:79:54:93 | ... = ... | Initializers.cs:54:50:54:95 | { ..., ... } | | +| Initializers.cs:54:9:54:96 | ... ...; | Initializers.cs:54:13:54:95 | Before Dictionary dict = ... | | +| Initializers.cs:54:9:54:96 | After ... ...; | Initializers.cs:57:9:65:10 | ... ...; | | +| Initializers.cs:54:13:54:16 | access to local variable dict | Initializers.cs:54:20:54:95 | Before object creation of type Dictionary | | +| Initializers.cs:54:13:54:95 | After Dictionary dict = ... | Initializers.cs:54:9:54:96 | After ... ...; | | +| Initializers.cs:54:13:54:95 | Before Dictionary dict = ... | Initializers.cs:54:13:54:16 | access to local variable dict | | +| Initializers.cs:54:13:54:95 | Dictionary dict = ... | Initializers.cs:54:13:54:95 | After Dictionary dict = ... | | +| Initializers.cs:54:20:54:95 | After object creation of type Dictionary | Initializers.cs:54:13:54:95 | Dictionary dict = ... | | +| Initializers.cs:54:20:54:95 | Before object creation of type Dictionary | Initializers.cs:54:20:54:95 | object creation of type Dictionary | | +| Initializers.cs:54:20:54:95 | object creation of type Dictionary | Initializers.cs:54:50:54:95 | Before { ..., ... } | | +| Initializers.cs:54:50:54:95 | After { ..., ... } | Initializers.cs:54:20:54:95 | After object creation of type Dictionary | | +| Initializers.cs:54:50:54:95 | Before { ..., ... } | Initializers.cs:54:52:54:63 | Before ... = ... | | +| Initializers.cs:54:50:54:95 | { ..., ... } | Initializers.cs:54:50:54:95 | After { ..., ... } | | +| Initializers.cs:54:52:54:54 | After access to indexer | Initializers.cs:54:58:54:63 | "Zero" | | +| Initializers.cs:54:52:54:54 | Before access to indexer | Initializers.cs:54:53:54:53 | 0 | | +| Initializers.cs:54:52:54:54 | access to indexer | Initializers.cs:54:52:54:54 | After access to indexer | | +| Initializers.cs:54:52:54:63 | ... = ... | Initializers.cs:54:52:54:63 | After ... = ... | | +| Initializers.cs:54:52:54:63 | After ... = ... | Initializers.cs:54:66:54:76 | Before ... = ... | | +| Initializers.cs:54:52:54:63 | Before ... = ... | Initializers.cs:54:52:54:54 | Before access to indexer | | +| Initializers.cs:54:53:54:53 | 0 | Initializers.cs:54:52:54:54 | access to indexer | | +| Initializers.cs:54:58:54:63 | "Zero" | Initializers.cs:54:52:54:63 | ... = ... | | +| Initializers.cs:54:66:54:68 | After access to indexer | Initializers.cs:54:72:54:76 | "One" | | +| Initializers.cs:54:66:54:68 | Before access to indexer | Initializers.cs:54:67:54:67 | 1 | | +| Initializers.cs:54:66:54:68 | access to indexer | Initializers.cs:54:66:54:68 | After access to indexer | | +| Initializers.cs:54:66:54:76 | ... = ... | Initializers.cs:54:66:54:76 | After ... = ... | | +| Initializers.cs:54:66:54:76 | After ... = ... | Initializers.cs:54:79:54:93 | Before ... = ... | | +| Initializers.cs:54:66:54:76 | Before ... = ... | Initializers.cs:54:66:54:68 | Before access to indexer | | +| Initializers.cs:54:67:54:67 | 1 | Initializers.cs:54:66:54:68 | access to indexer | | +| Initializers.cs:54:72:54:76 | "One" | Initializers.cs:54:66:54:76 | ... = ... | | +| Initializers.cs:54:79:54:85 | After access to indexer | Initializers.cs:54:89:54:93 | "Two" | | +| Initializers.cs:54:79:54:85 | Before access to indexer | Initializers.cs:54:80:54:84 | Before ... + ... | | +| Initializers.cs:54:79:54:85 | access to indexer | Initializers.cs:54:79:54:85 | After access to indexer | | +| Initializers.cs:54:79:54:93 | ... = ... | Initializers.cs:54:79:54:93 | After ... = ... | | +| Initializers.cs:54:79:54:93 | After ... = ... | Initializers.cs:54:50:54:95 | { ..., ... } | | +| Initializers.cs:54:79:54:93 | Before ... = ... | Initializers.cs:54:79:54:85 | Before access to indexer | | | Initializers.cs:54:80:54:80 | access to parameter i | Initializers.cs:54:84:54:84 | 2 | | -| Initializers.cs:54:80:54:84 | ... + ... | Initializers.cs:54:89:54:93 | "Two" | | +| Initializers.cs:54:80:54:84 | ... + ... | Initializers.cs:54:80:54:84 | After ... + ... | | +| Initializers.cs:54:80:54:84 | After ... + ... | Initializers.cs:54:79:54:85 | access to indexer | | +| Initializers.cs:54:80:54:84 | Before ... + ... | Initializers.cs:54:80:54:80 | access to parameter i | | | Initializers.cs:54:84:54:84 | 2 | Initializers.cs:54:80:54:84 | ... + ... | | -| Initializers.cs:54:89:54:93 | "Two" | Initializers.cs:54:79:54:85 | access to indexer | | -| Initializers.cs:57:9:65:10 | ... ...; | Initializers.cs:57:24:65:9 | object creation of type Compound | | -| Initializers.cs:57:13:65:9 | Compound compound = ... | Initializers.cs:51:10:51:13 | exit Test (normal) | | -| Initializers.cs:57:24:65:9 | object creation of type Compound | Initializers.cs:59:34:59:34 | 0 | | -| Initializers.cs:58:9:65:9 | { ..., ... } | Initializers.cs:57:13:65:9 | Compound compound = ... | | -| Initializers.cs:59:13:59:27 | access to field DictionaryField | Initializers.cs:59:13:59:76 | ... = ... | | -| Initializers.cs:59:13:59:76 | ... = ... | Initializers.cs:60:37:60:37 | 3 | | -| Initializers.cs:59:31:59:76 | { ..., ... } | Initializers.cs:59:13:59:27 | access to field DictionaryField | | -| Initializers.cs:59:33:59:35 | access to indexer | Initializers.cs:59:33:59:44 | ... = ... | | -| Initializers.cs:59:33:59:44 | ... = ... | Initializers.cs:59:48:59:48 | 1 | | -| Initializers.cs:59:34:59:34 | 0 | Initializers.cs:59:39:59:44 | "Zero" | | -| Initializers.cs:59:39:59:44 | "Zero" | Initializers.cs:59:33:59:35 | access to indexer | | -| Initializers.cs:59:47:59:49 | access to indexer | Initializers.cs:59:47:59:57 | ... = ... | | -| Initializers.cs:59:47:59:57 | ... = ... | Initializers.cs:59:61:59:61 | access to parameter i | | -| Initializers.cs:59:48:59:48 | 1 | Initializers.cs:59:53:59:57 | "One" | | -| Initializers.cs:59:53:59:57 | "One" | Initializers.cs:59:47:59:49 | access to indexer | | -| Initializers.cs:59:60:59:66 | access to indexer | Initializers.cs:59:60:59:74 | ... = ... | | -| Initializers.cs:59:60:59:74 | ... = ... | Initializers.cs:59:31:59:76 | { ..., ... } | | +| Initializers.cs:54:89:54:93 | "Two" | Initializers.cs:54:79:54:93 | ... = ... | | +| Initializers.cs:57:9:65:10 | ... ...; | Initializers.cs:57:13:65:9 | Before Compound compound = ... | | +| Initializers.cs:57:9:65:10 | After ... ...; | Initializers.cs:52:5:66:5 | After {...} | | +| Initializers.cs:57:13:57:20 | access to local variable compound | Initializers.cs:57:24:65:9 | Before object creation of type Compound | | +| Initializers.cs:57:13:65:9 | After Compound compound = ... | Initializers.cs:57:9:65:10 | After ... ...; | | +| Initializers.cs:57:13:65:9 | Before Compound compound = ... | Initializers.cs:57:13:57:20 | access to local variable compound | | +| Initializers.cs:57:13:65:9 | Compound compound = ... | Initializers.cs:57:13:65:9 | After Compound compound = ... | | +| Initializers.cs:57:24:65:9 | After object creation of type Compound | Initializers.cs:57:13:65:9 | Compound compound = ... | | +| Initializers.cs:57:24:65:9 | Before object creation of type Compound | Initializers.cs:57:24:65:9 | object creation of type Compound | | +| Initializers.cs:57:24:65:9 | object creation of type Compound | Initializers.cs:58:9:65:9 | Before { ..., ... } | | +| Initializers.cs:58:9:65:9 | After { ..., ... } | Initializers.cs:57:24:65:9 | After object creation of type Compound | | +| Initializers.cs:58:9:65:9 | Before { ..., ... } | Initializers.cs:59:13:59:76 | Before ... = ... | | +| Initializers.cs:58:9:65:9 | { ..., ... } | Initializers.cs:58:9:65:9 | After { ..., ... } | | +| Initializers.cs:59:13:59:27 | access to field DictionaryField | Initializers.cs:59:31:59:76 | Before { ..., ... } | | +| Initializers.cs:59:13:59:76 | ... = ... | Initializers.cs:59:13:59:76 | After ... = ... | | +| Initializers.cs:59:13:59:76 | After ... = ... | Initializers.cs:60:13:60:80 | Before ... = ... | | +| Initializers.cs:59:13:59:76 | Before ... = ... | Initializers.cs:59:13:59:27 | access to field DictionaryField | | +| Initializers.cs:59:31:59:76 | After { ..., ... } | Initializers.cs:59:13:59:76 | ... = ... | | +| Initializers.cs:59:31:59:76 | Before { ..., ... } | Initializers.cs:59:33:59:44 | Before ... = ... | | +| Initializers.cs:59:31:59:76 | { ..., ... } | Initializers.cs:59:31:59:76 | After { ..., ... } | | +| Initializers.cs:59:33:59:35 | After access to indexer | Initializers.cs:59:39:59:44 | "Zero" | | +| Initializers.cs:59:33:59:35 | Before access to indexer | Initializers.cs:59:34:59:34 | 0 | | +| Initializers.cs:59:33:59:35 | access to indexer | Initializers.cs:59:33:59:35 | After access to indexer | | +| Initializers.cs:59:33:59:44 | ... = ... | Initializers.cs:59:33:59:44 | After ... = ... | | +| Initializers.cs:59:33:59:44 | After ... = ... | Initializers.cs:59:47:59:57 | Before ... = ... | | +| Initializers.cs:59:33:59:44 | Before ... = ... | Initializers.cs:59:33:59:35 | Before access to indexer | | +| Initializers.cs:59:34:59:34 | 0 | Initializers.cs:59:33:59:35 | access to indexer | | +| Initializers.cs:59:39:59:44 | "Zero" | Initializers.cs:59:33:59:44 | ... = ... | | +| Initializers.cs:59:47:59:49 | After access to indexer | Initializers.cs:59:53:59:57 | "One" | | +| Initializers.cs:59:47:59:49 | Before access to indexer | Initializers.cs:59:48:59:48 | 1 | | +| Initializers.cs:59:47:59:49 | access to indexer | Initializers.cs:59:47:59:49 | After access to indexer | | +| Initializers.cs:59:47:59:57 | ... = ... | Initializers.cs:59:47:59:57 | After ... = ... | | +| Initializers.cs:59:47:59:57 | After ... = ... | Initializers.cs:59:60:59:74 | Before ... = ... | | +| Initializers.cs:59:47:59:57 | Before ... = ... | Initializers.cs:59:47:59:49 | Before access to indexer | | +| Initializers.cs:59:48:59:48 | 1 | Initializers.cs:59:47:59:49 | access to indexer | | +| Initializers.cs:59:53:59:57 | "One" | Initializers.cs:59:47:59:57 | ... = ... | | +| Initializers.cs:59:60:59:66 | After access to indexer | Initializers.cs:59:70:59:74 | "Two" | | +| Initializers.cs:59:60:59:66 | Before access to indexer | Initializers.cs:59:61:59:65 | Before ... + ... | | +| Initializers.cs:59:60:59:66 | access to indexer | Initializers.cs:59:60:59:66 | After access to indexer | | +| Initializers.cs:59:60:59:74 | ... = ... | Initializers.cs:59:60:59:74 | After ... = ... | | +| Initializers.cs:59:60:59:74 | After ... = ... | Initializers.cs:59:31:59:76 | { ..., ... } | | +| Initializers.cs:59:60:59:74 | Before ... = ... | Initializers.cs:59:60:59:66 | Before access to indexer | | | Initializers.cs:59:61:59:61 | access to parameter i | Initializers.cs:59:65:59:65 | 2 | | -| Initializers.cs:59:61:59:65 | ... + ... | Initializers.cs:59:70:59:74 | "Two" | | +| Initializers.cs:59:61:59:65 | ... + ... | Initializers.cs:59:61:59:65 | After ... + ... | | +| Initializers.cs:59:61:59:65 | After ... + ... | Initializers.cs:59:60:59:66 | access to indexer | | +| Initializers.cs:59:61:59:65 | Before ... + ... | Initializers.cs:59:61:59:61 | access to parameter i | | | Initializers.cs:59:65:59:65 | 2 | Initializers.cs:59:61:59:65 | ... + ... | | -| Initializers.cs:59:70:59:74 | "Two" | Initializers.cs:59:60:59:66 | access to indexer | | -| Initializers.cs:60:13:60:30 | access to property DictionaryProperty | Initializers.cs:60:13:60:80 | ... = ... | | -| Initializers.cs:60:13:60:80 | ... = ... | Initializers.cs:61:29:61:29 | 0 | | -| Initializers.cs:60:34:60:80 | { ..., ... } | Initializers.cs:60:13:60:30 | access to property DictionaryProperty | | -| Initializers.cs:60:36:60:38 | access to indexer | Initializers.cs:60:36:60:48 | ... = ... | | -| Initializers.cs:60:36:60:48 | ... = ... | Initializers.cs:60:52:60:52 | 2 | | -| Initializers.cs:60:37:60:37 | 3 | Initializers.cs:60:42:60:48 | "Three" | | -| Initializers.cs:60:42:60:48 | "Three" | Initializers.cs:60:36:60:38 | access to indexer | | -| Initializers.cs:60:51:60:53 | access to indexer | Initializers.cs:60:51:60:61 | ... = ... | | -| Initializers.cs:60:51:60:61 | ... = ... | Initializers.cs:60:65:60:65 | access to parameter i | | -| Initializers.cs:60:52:60:52 | 2 | Initializers.cs:60:57:60:61 | "Two" | | -| Initializers.cs:60:57:60:61 | "Two" | Initializers.cs:60:51:60:53 | access to indexer | | -| Initializers.cs:60:64:60:70 | access to indexer | Initializers.cs:60:64:60:78 | ... = ... | | -| Initializers.cs:60:64:60:78 | ... = ... | Initializers.cs:60:34:60:80 | { ..., ... } | | +| Initializers.cs:59:70:59:74 | "Two" | Initializers.cs:59:60:59:74 | ... = ... | | +| Initializers.cs:60:13:60:30 | After access to property DictionaryProperty | Initializers.cs:60:34:60:80 | Before { ..., ... } | | +| Initializers.cs:60:13:60:30 | Before access to property DictionaryProperty | Initializers.cs:60:13:60:30 | access to property DictionaryProperty | | +| Initializers.cs:60:13:60:30 | access to property DictionaryProperty | Initializers.cs:60:13:60:30 | After access to property DictionaryProperty | | +| Initializers.cs:60:13:60:80 | ... = ... | Initializers.cs:60:13:60:80 | After ... = ... | | +| Initializers.cs:60:13:60:80 | After ... = ... | Initializers.cs:61:13:61:58 | Before ... = ... | | +| Initializers.cs:60:13:60:80 | Before ... = ... | Initializers.cs:60:13:60:30 | Before access to property DictionaryProperty | | +| Initializers.cs:60:34:60:80 | After { ..., ... } | Initializers.cs:60:13:60:80 | ... = ... | | +| Initializers.cs:60:34:60:80 | Before { ..., ... } | Initializers.cs:60:36:60:48 | Before ... = ... | | +| Initializers.cs:60:34:60:80 | { ..., ... } | Initializers.cs:60:34:60:80 | After { ..., ... } | | +| Initializers.cs:60:36:60:38 | After access to indexer | Initializers.cs:60:42:60:48 | "Three" | | +| Initializers.cs:60:36:60:38 | Before access to indexer | Initializers.cs:60:37:60:37 | 3 | | +| Initializers.cs:60:36:60:38 | access to indexer | Initializers.cs:60:36:60:38 | After access to indexer | | +| Initializers.cs:60:36:60:48 | ... = ... | Initializers.cs:60:36:60:48 | After ... = ... | | +| Initializers.cs:60:36:60:48 | After ... = ... | Initializers.cs:60:51:60:61 | Before ... = ... | | +| Initializers.cs:60:36:60:48 | Before ... = ... | Initializers.cs:60:36:60:38 | Before access to indexer | | +| Initializers.cs:60:37:60:37 | 3 | Initializers.cs:60:36:60:38 | access to indexer | | +| Initializers.cs:60:42:60:48 | "Three" | Initializers.cs:60:36:60:48 | ... = ... | | +| Initializers.cs:60:51:60:53 | After access to indexer | Initializers.cs:60:57:60:61 | "Two" | | +| Initializers.cs:60:51:60:53 | Before access to indexer | Initializers.cs:60:52:60:52 | 2 | | +| Initializers.cs:60:51:60:53 | access to indexer | Initializers.cs:60:51:60:53 | After access to indexer | | +| Initializers.cs:60:51:60:61 | ... = ... | Initializers.cs:60:51:60:61 | After ... = ... | | +| Initializers.cs:60:51:60:61 | After ... = ... | Initializers.cs:60:64:60:78 | Before ... = ... | | +| Initializers.cs:60:51:60:61 | Before ... = ... | Initializers.cs:60:51:60:53 | Before access to indexer | | +| Initializers.cs:60:52:60:52 | 2 | Initializers.cs:60:51:60:53 | access to indexer | | +| Initializers.cs:60:57:60:61 | "Two" | Initializers.cs:60:51:60:61 | ... = ... | | +| Initializers.cs:60:64:60:70 | After access to indexer | Initializers.cs:60:74:60:78 | "One" | | +| Initializers.cs:60:64:60:70 | Before access to indexer | Initializers.cs:60:65:60:69 | Before ... + ... | | +| Initializers.cs:60:64:60:70 | access to indexer | Initializers.cs:60:64:60:70 | After access to indexer | | +| Initializers.cs:60:64:60:78 | ... = ... | Initializers.cs:60:64:60:78 | After ... = ... | | +| Initializers.cs:60:64:60:78 | After ... = ... | Initializers.cs:60:34:60:80 | { ..., ... } | | +| Initializers.cs:60:64:60:78 | Before ... = ... | Initializers.cs:60:64:60:70 | Before access to indexer | | | Initializers.cs:60:65:60:65 | access to parameter i | Initializers.cs:60:69:60:69 | 1 | | -| Initializers.cs:60:65:60:69 | ... + ... | Initializers.cs:60:74:60:78 | "One" | | +| Initializers.cs:60:65:60:69 | ... + ... | Initializers.cs:60:65:60:69 | After ... + ... | | +| Initializers.cs:60:65:60:69 | After ... + ... | Initializers.cs:60:64:60:70 | access to indexer | | +| Initializers.cs:60:65:60:69 | Before ... + ... | Initializers.cs:60:65:60:65 | access to parameter i | | | Initializers.cs:60:69:60:69 | 1 | Initializers.cs:60:65:60:69 | ... + ... | | -| Initializers.cs:60:74:60:78 | "One" | Initializers.cs:60:64:60:70 | access to indexer | | -| Initializers.cs:61:13:61:22 | access to field ArrayField | Initializers.cs:61:13:61:58 | ... = ... | | -| Initializers.cs:61:13:61:58 | ... = ... | Initializers.cs:62:30:62:30 | 0 | | -| Initializers.cs:61:26:61:58 | { ..., ... } | Initializers.cs:61:13:61:22 | access to field ArrayField | | -| Initializers.cs:61:28:61:30 | access to array element | Initializers.cs:61:28:61:39 | ... = ... | | -| Initializers.cs:61:28:61:39 | ... = ... | Initializers.cs:61:43:61:43 | access to parameter i | | -| Initializers.cs:61:29:61:29 | 0 | Initializers.cs:61:34:61:39 | "Zero" | | -| Initializers.cs:61:34:61:39 | "Zero" | Initializers.cs:61:28:61:30 | access to array element | | -| Initializers.cs:61:42:61:48 | access to array element | Initializers.cs:61:42:61:56 | ... = ... | | -| Initializers.cs:61:42:61:56 | ... = ... | Initializers.cs:61:26:61:58 | { ..., ... } | | +| Initializers.cs:60:74:60:78 | "One" | Initializers.cs:60:64:60:78 | ... = ... | | +| Initializers.cs:61:13:61:22 | access to field ArrayField | Initializers.cs:61:26:61:58 | Before { ..., ... } | | +| Initializers.cs:61:13:61:58 | ... = ... | Initializers.cs:61:13:61:58 | After ... = ... | | +| Initializers.cs:61:13:61:58 | After ... = ... | Initializers.cs:62:13:62:60 | Before ... = ... | | +| Initializers.cs:61:13:61:58 | Before ... = ... | Initializers.cs:61:13:61:22 | access to field ArrayField | | +| Initializers.cs:61:26:61:58 | After { ..., ... } | Initializers.cs:61:13:61:58 | ... = ... | | +| Initializers.cs:61:26:61:58 | Before { ..., ... } | Initializers.cs:61:28:61:39 | Before ... = ... | | +| Initializers.cs:61:26:61:58 | { ..., ... } | Initializers.cs:61:26:61:58 | After { ..., ... } | | +| Initializers.cs:61:28:61:30 | After access to array element | Initializers.cs:61:34:61:39 | "Zero" | | +| Initializers.cs:61:28:61:30 | Before access to array element | Initializers.cs:61:29:61:29 | 0 | | +| Initializers.cs:61:28:61:30 | access to array element | Initializers.cs:61:28:61:30 | After access to array element | | +| Initializers.cs:61:28:61:39 | ... = ... | Initializers.cs:61:28:61:39 | After ... = ... | | +| Initializers.cs:61:28:61:39 | After ... = ... | Initializers.cs:61:42:61:56 | Before ... = ... | | +| Initializers.cs:61:28:61:39 | Before ... = ... | Initializers.cs:61:28:61:30 | Before access to array element | | +| Initializers.cs:61:29:61:29 | 0 | Initializers.cs:61:28:61:30 | access to array element | | +| Initializers.cs:61:34:61:39 | "Zero" | Initializers.cs:61:28:61:39 | ... = ... | | +| Initializers.cs:61:42:61:48 | After access to array element | Initializers.cs:61:52:61:56 | "One" | | +| Initializers.cs:61:42:61:48 | Before access to array element | Initializers.cs:61:43:61:47 | Before ... + ... | | +| Initializers.cs:61:42:61:48 | access to array element | Initializers.cs:61:42:61:48 | After access to array element | | +| Initializers.cs:61:42:61:56 | ... = ... | Initializers.cs:61:42:61:56 | After ... = ... | | +| Initializers.cs:61:42:61:56 | After ... = ... | Initializers.cs:61:26:61:58 | { ..., ... } | | +| Initializers.cs:61:42:61:56 | Before ... = ... | Initializers.cs:61:42:61:48 | Before access to array element | | | Initializers.cs:61:43:61:43 | access to parameter i | Initializers.cs:61:47:61:47 | 1 | | -| Initializers.cs:61:43:61:47 | ... + ... | Initializers.cs:61:52:61:56 | "One" | | +| Initializers.cs:61:43:61:47 | ... + ... | Initializers.cs:61:43:61:47 | After ... + ... | | +| Initializers.cs:61:43:61:47 | After ... + ... | Initializers.cs:61:42:61:48 | access to array element | | +| Initializers.cs:61:43:61:47 | Before ... + ... | Initializers.cs:61:43:61:43 | access to parameter i | | | Initializers.cs:61:47:61:47 | 1 | Initializers.cs:61:43:61:47 | ... + ... | | -| Initializers.cs:61:52:61:56 | "One" | Initializers.cs:61:42:61:48 | access to array element | | -| Initializers.cs:62:13:62:23 | access to field ArrayField2 | Initializers.cs:62:13:62:60 | ... = ... | | -| Initializers.cs:62:13:62:60 | ... = ... | Initializers.cs:63:32:63:32 | 1 | | -| Initializers.cs:62:27:62:60 | { ..., ... } | Initializers.cs:62:13:62:23 | access to field ArrayField2 | | -| Initializers.cs:62:29:62:34 | access to array element | Initializers.cs:62:29:62:40 | ... = ... | | -| Initializers.cs:62:29:62:40 | ... = ... | Initializers.cs:62:44:62:44 | 1 | | +| Initializers.cs:61:52:61:56 | "One" | Initializers.cs:61:42:61:56 | ... = ... | | +| Initializers.cs:62:13:62:23 | access to field ArrayField2 | Initializers.cs:62:27:62:60 | Before { ..., ... } | | +| Initializers.cs:62:13:62:60 | ... = ... | Initializers.cs:62:13:62:60 | After ... = ... | | +| Initializers.cs:62:13:62:60 | After ... = ... | Initializers.cs:63:13:63:60 | Before ... = ... | | +| Initializers.cs:62:13:62:60 | Before ... = ... | Initializers.cs:62:13:62:23 | access to field ArrayField2 | | +| Initializers.cs:62:27:62:60 | After { ..., ... } | Initializers.cs:62:13:62:60 | ... = ... | | +| Initializers.cs:62:27:62:60 | Before { ..., ... } | Initializers.cs:62:29:62:40 | Before ... = ... | | +| Initializers.cs:62:27:62:60 | { ..., ... } | Initializers.cs:62:27:62:60 | After { ..., ... } | | +| Initializers.cs:62:29:62:34 | After access to array element | Initializers.cs:62:38:62:40 | "i" | | +| Initializers.cs:62:29:62:34 | Before access to array element | Initializers.cs:62:30:62:30 | 0 | | +| Initializers.cs:62:29:62:34 | access to array element | Initializers.cs:62:29:62:34 | After access to array element | | +| Initializers.cs:62:29:62:40 | ... = ... | Initializers.cs:62:29:62:40 | After ... = ... | | +| Initializers.cs:62:29:62:40 | After ... = ... | Initializers.cs:62:43:62:58 | Before ... = ... | | +| Initializers.cs:62:29:62:40 | Before ... = ... | Initializers.cs:62:29:62:34 | Before access to array element | | | Initializers.cs:62:30:62:30 | 0 | Initializers.cs:62:33:62:33 | 1 | | -| Initializers.cs:62:33:62:33 | 1 | Initializers.cs:62:38:62:40 | "i" | | -| Initializers.cs:62:38:62:40 | "i" | Initializers.cs:62:29:62:34 | access to array element | | -| Initializers.cs:62:43:62:52 | access to array element | Initializers.cs:62:43:62:58 | ... = ... | | -| Initializers.cs:62:43:62:58 | ... = ... | Initializers.cs:62:27:62:60 | { ..., ... } | | -| Initializers.cs:62:44:62:44 | 1 | Initializers.cs:62:47:62:47 | access to parameter i | | +| Initializers.cs:62:33:62:33 | 1 | Initializers.cs:62:29:62:34 | access to array element | | +| Initializers.cs:62:38:62:40 | "i" | Initializers.cs:62:29:62:40 | ... = ... | | +| Initializers.cs:62:43:62:52 | After access to array element | Initializers.cs:62:56:62:58 | "1" | | +| Initializers.cs:62:43:62:52 | Before access to array element | Initializers.cs:62:44:62:44 | 1 | | +| Initializers.cs:62:43:62:52 | access to array element | Initializers.cs:62:43:62:52 | After access to array element | | +| Initializers.cs:62:43:62:58 | ... = ... | Initializers.cs:62:43:62:58 | After ... = ... | | +| Initializers.cs:62:43:62:58 | After ... = ... | Initializers.cs:62:27:62:60 | { ..., ... } | | +| Initializers.cs:62:43:62:58 | Before ... = ... | Initializers.cs:62:43:62:52 | Before access to array element | | +| Initializers.cs:62:44:62:44 | 1 | Initializers.cs:62:47:62:51 | Before ... + ... | | | Initializers.cs:62:47:62:47 | access to parameter i | Initializers.cs:62:51:62:51 | 0 | | -| Initializers.cs:62:47:62:51 | ... + ... | Initializers.cs:62:56:62:58 | "1" | | +| Initializers.cs:62:47:62:51 | ... + ... | Initializers.cs:62:47:62:51 | After ... + ... | | +| Initializers.cs:62:47:62:51 | After ... + ... | Initializers.cs:62:43:62:52 | access to array element | | +| Initializers.cs:62:47:62:51 | Before ... + ... | Initializers.cs:62:47:62:47 | access to parameter i | | | Initializers.cs:62:51:62:51 | 0 | Initializers.cs:62:47:62:51 | ... + ... | | -| Initializers.cs:62:56:62:58 | "1" | Initializers.cs:62:43:62:52 | access to array element | | -| Initializers.cs:63:13:63:25 | access to property ArrayProperty | Initializers.cs:63:13:63:60 | ... = ... | | -| Initializers.cs:63:13:63:60 | ... = ... | Initializers.cs:64:33:64:33 | 0 | | -| Initializers.cs:63:29:63:60 | { ..., ... } | Initializers.cs:63:13:63:25 | access to property ArrayProperty | | -| Initializers.cs:63:31:63:33 | access to array element | Initializers.cs:63:31:63:41 | ... = ... | | -| Initializers.cs:63:31:63:41 | ... = ... | Initializers.cs:63:45:63:45 | access to parameter i | | -| Initializers.cs:63:32:63:32 | 1 | Initializers.cs:63:37:63:41 | "One" | | -| Initializers.cs:63:37:63:41 | "One" | Initializers.cs:63:31:63:33 | access to array element | | -| Initializers.cs:63:44:63:50 | access to array element | Initializers.cs:63:44:63:58 | ... = ... | | -| Initializers.cs:63:44:63:58 | ... = ... | Initializers.cs:63:29:63:60 | { ..., ... } | | +| Initializers.cs:62:56:62:58 | "1" | Initializers.cs:62:43:62:58 | ... = ... | | +| Initializers.cs:63:13:63:25 | After access to property ArrayProperty | Initializers.cs:63:29:63:60 | Before { ..., ... } | | +| Initializers.cs:63:13:63:25 | Before access to property ArrayProperty | Initializers.cs:63:13:63:25 | access to property ArrayProperty | | +| Initializers.cs:63:13:63:25 | access to property ArrayProperty | Initializers.cs:63:13:63:25 | After access to property ArrayProperty | | +| Initializers.cs:63:13:63:60 | ... = ... | Initializers.cs:63:13:63:60 | After ... = ... | | +| Initializers.cs:63:13:63:60 | After ... = ... | Initializers.cs:64:13:64:63 | Before ... = ... | | +| Initializers.cs:63:13:63:60 | Before ... = ... | Initializers.cs:63:13:63:25 | Before access to property ArrayProperty | | +| Initializers.cs:63:29:63:60 | After { ..., ... } | Initializers.cs:63:13:63:60 | ... = ... | | +| Initializers.cs:63:29:63:60 | Before { ..., ... } | Initializers.cs:63:31:63:41 | Before ... = ... | | +| Initializers.cs:63:29:63:60 | { ..., ... } | Initializers.cs:63:29:63:60 | After { ..., ... } | | +| Initializers.cs:63:31:63:33 | After access to array element | Initializers.cs:63:37:63:41 | "One" | | +| Initializers.cs:63:31:63:33 | Before access to array element | Initializers.cs:63:32:63:32 | 1 | | +| Initializers.cs:63:31:63:33 | access to array element | Initializers.cs:63:31:63:33 | After access to array element | | +| Initializers.cs:63:31:63:41 | ... = ... | Initializers.cs:63:31:63:41 | After ... = ... | | +| Initializers.cs:63:31:63:41 | After ... = ... | Initializers.cs:63:44:63:58 | Before ... = ... | | +| Initializers.cs:63:31:63:41 | Before ... = ... | Initializers.cs:63:31:63:33 | Before access to array element | | +| Initializers.cs:63:32:63:32 | 1 | Initializers.cs:63:31:63:33 | access to array element | | +| Initializers.cs:63:37:63:41 | "One" | Initializers.cs:63:31:63:41 | ... = ... | | +| Initializers.cs:63:44:63:50 | After access to array element | Initializers.cs:63:54:63:58 | "Two" | | +| Initializers.cs:63:44:63:50 | Before access to array element | Initializers.cs:63:45:63:49 | Before ... + ... | | +| Initializers.cs:63:44:63:50 | access to array element | Initializers.cs:63:44:63:50 | After access to array element | | +| Initializers.cs:63:44:63:58 | ... = ... | Initializers.cs:63:44:63:58 | After ... = ... | | +| Initializers.cs:63:44:63:58 | After ... = ... | Initializers.cs:63:29:63:60 | { ..., ... } | | +| Initializers.cs:63:44:63:58 | Before ... = ... | Initializers.cs:63:44:63:50 | Before access to array element | | | Initializers.cs:63:45:63:45 | access to parameter i | Initializers.cs:63:49:63:49 | 2 | | -| Initializers.cs:63:45:63:49 | ... + ... | Initializers.cs:63:54:63:58 | "Two" | | +| Initializers.cs:63:45:63:49 | ... + ... | Initializers.cs:63:45:63:49 | After ... + ... | | +| Initializers.cs:63:45:63:49 | After ... + ... | Initializers.cs:63:44:63:50 | access to array element | | +| Initializers.cs:63:45:63:49 | Before ... + ... | Initializers.cs:63:45:63:45 | access to parameter i | | | Initializers.cs:63:49:63:49 | 2 | Initializers.cs:63:45:63:49 | ... + ... | | -| Initializers.cs:63:54:63:58 | "Two" | Initializers.cs:63:44:63:50 | access to array element | | -| Initializers.cs:64:13:64:26 | access to property ArrayProperty2 | Initializers.cs:64:13:64:63 | ... = ... | | -| Initializers.cs:64:13:64:63 | ... = ... | Initializers.cs:58:9:65:9 | { ..., ... } | | -| Initializers.cs:64:30:64:63 | { ..., ... } | Initializers.cs:64:13:64:26 | access to property ArrayProperty2 | | -| Initializers.cs:64:32:64:37 | access to array element | Initializers.cs:64:32:64:43 | ... = ... | | -| Initializers.cs:64:32:64:43 | ... = ... | Initializers.cs:64:47:64:47 | 1 | | +| Initializers.cs:63:54:63:58 | "Two" | Initializers.cs:63:44:63:58 | ... = ... | | +| Initializers.cs:64:13:64:26 | After access to property ArrayProperty2 | Initializers.cs:64:30:64:63 | Before { ..., ... } | | +| Initializers.cs:64:13:64:26 | Before access to property ArrayProperty2 | Initializers.cs:64:13:64:26 | access to property ArrayProperty2 | | +| Initializers.cs:64:13:64:26 | access to property ArrayProperty2 | Initializers.cs:64:13:64:26 | After access to property ArrayProperty2 | | +| Initializers.cs:64:13:64:63 | ... = ... | Initializers.cs:64:13:64:63 | After ... = ... | | +| Initializers.cs:64:13:64:63 | After ... = ... | Initializers.cs:58:9:65:9 | { ..., ... } | | +| Initializers.cs:64:13:64:63 | Before ... = ... | Initializers.cs:64:13:64:26 | Before access to property ArrayProperty2 | | +| Initializers.cs:64:30:64:63 | After { ..., ... } | Initializers.cs:64:13:64:63 | ... = ... | | +| Initializers.cs:64:30:64:63 | Before { ..., ... } | Initializers.cs:64:32:64:43 | Before ... = ... | | +| Initializers.cs:64:30:64:63 | { ..., ... } | Initializers.cs:64:30:64:63 | After { ..., ... } | | +| Initializers.cs:64:32:64:37 | After access to array element | Initializers.cs:64:41:64:43 | "i" | | +| Initializers.cs:64:32:64:37 | Before access to array element | Initializers.cs:64:33:64:33 | 0 | | +| Initializers.cs:64:32:64:37 | access to array element | Initializers.cs:64:32:64:37 | After access to array element | | +| Initializers.cs:64:32:64:43 | ... = ... | Initializers.cs:64:32:64:43 | After ... = ... | | +| Initializers.cs:64:32:64:43 | After ... = ... | Initializers.cs:64:46:64:61 | Before ... = ... | | +| Initializers.cs:64:32:64:43 | Before ... = ... | Initializers.cs:64:32:64:37 | Before access to array element | | | Initializers.cs:64:33:64:33 | 0 | Initializers.cs:64:36:64:36 | 1 | | -| Initializers.cs:64:36:64:36 | 1 | Initializers.cs:64:41:64:43 | "i" | | -| Initializers.cs:64:41:64:43 | "i" | Initializers.cs:64:32:64:37 | access to array element | | -| Initializers.cs:64:46:64:55 | access to array element | Initializers.cs:64:46:64:61 | ... = ... | | -| Initializers.cs:64:46:64:61 | ... = ... | Initializers.cs:64:30:64:63 | { ..., ... } | | -| Initializers.cs:64:47:64:47 | 1 | Initializers.cs:64:50:64:50 | access to parameter i | | +| Initializers.cs:64:36:64:36 | 1 | Initializers.cs:64:32:64:37 | access to array element | | +| Initializers.cs:64:41:64:43 | "i" | Initializers.cs:64:32:64:43 | ... = ... | | +| Initializers.cs:64:46:64:55 | After access to array element | Initializers.cs:64:59:64:61 | "1" | | +| Initializers.cs:64:46:64:55 | Before access to array element | Initializers.cs:64:47:64:47 | 1 | | +| Initializers.cs:64:46:64:55 | access to array element | Initializers.cs:64:46:64:55 | After access to array element | | +| Initializers.cs:64:46:64:61 | ... = ... | Initializers.cs:64:46:64:61 | After ... = ... | | +| Initializers.cs:64:46:64:61 | After ... = ... | Initializers.cs:64:30:64:63 | { ..., ... } | | +| Initializers.cs:64:46:64:61 | Before ... = ... | Initializers.cs:64:46:64:55 | Before access to array element | | +| Initializers.cs:64:47:64:47 | 1 | Initializers.cs:64:50:64:54 | Before ... + ... | | | Initializers.cs:64:50:64:50 | access to parameter i | Initializers.cs:64:54:64:54 | 0 | | -| Initializers.cs:64:50:64:54 | ... + ... | Initializers.cs:64:59:64:61 | "1" | | +| Initializers.cs:64:50:64:54 | ... + ... | Initializers.cs:64:50:64:54 | After ... + ... | | +| Initializers.cs:64:50:64:54 | After ... + ... | Initializers.cs:64:46:64:55 | access to array element | | +| Initializers.cs:64:50:64:54 | Before ... + ... | Initializers.cs:64:50:64:50 | access to parameter i | | | Initializers.cs:64:54:64:54 | 0 | Initializers.cs:64:50:64:54 | ... + ... | | -| Initializers.cs:64:59:64:61 | "1" | Initializers.cs:64:46:64:55 | access to array element | | -| LoopUnrolling.cs:5:7:5:19 | call to constructor Object | LoopUnrolling.cs:5:7:5:19 | {...} | | -| LoopUnrolling.cs:5:7:5:19 | call to method | LoopUnrolling.cs:5:7:5:19 | call to constructor Object | | -| LoopUnrolling.cs:5:7:5:19 | enter LoopUnrolling | LoopUnrolling.cs:5:7:5:19 | this access | | -| LoopUnrolling.cs:5:7:5:19 | exit LoopUnrolling (normal) | LoopUnrolling.cs:5:7:5:19 | exit LoopUnrolling | | +| Initializers.cs:64:59:64:61 | "1" | Initializers.cs:64:46:64:61 | ... = ... | | +| LoopUnrolling.cs:5:7:5:19 | After call to constructor Object | LoopUnrolling.cs:5:7:5:19 | {...} | | +| LoopUnrolling.cs:5:7:5:19 | After call to method | LoopUnrolling.cs:5:7:5:19 | Before call to constructor Object | | +| LoopUnrolling.cs:5:7:5:19 | Before call to constructor Object | LoopUnrolling.cs:5:7:5:19 | call to constructor Object | | +| LoopUnrolling.cs:5:7:5:19 | Before call to method | LoopUnrolling.cs:5:7:5:19 | this access | | +| LoopUnrolling.cs:5:7:5:19 | Entry | LoopUnrolling.cs:5:7:5:19 | Before call to method | | +| LoopUnrolling.cs:5:7:5:19 | Normal Exit | LoopUnrolling.cs:5:7:5:19 | Exit | | +| LoopUnrolling.cs:5:7:5:19 | call to constructor Object | LoopUnrolling.cs:5:7:5:19 | After call to constructor Object | | +| LoopUnrolling.cs:5:7:5:19 | call to method | LoopUnrolling.cs:5:7:5:19 | After call to method | | | LoopUnrolling.cs:5:7:5:19 | this access | LoopUnrolling.cs:5:7:5:19 | call to method | | -| LoopUnrolling.cs:5:7:5:19 | {...} | LoopUnrolling.cs:5:7:5:19 | exit LoopUnrolling (normal) | | -| LoopUnrolling.cs:7:10:7:11 | enter M1 | LoopUnrolling.cs:8:5:13:5 | {...} | | -| LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | LoopUnrolling.cs:7:10:7:11 | exit M1 | | +| LoopUnrolling.cs:5:7:5:19 | {...} | LoopUnrolling.cs:5:7:5:19 | Normal Exit | | +| LoopUnrolling.cs:7:10:7:11 | Entry | LoopUnrolling.cs:7:22:7:25 | args | | +| LoopUnrolling.cs:7:10:7:11 | Normal Exit | LoopUnrolling.cs:7:10:7:11 | Exit | | +| LoopUnrolling.cs:7:22:7:25 | args | LoopUnrolling.cs:8:5:13:5 | {...} | | +| LoopUnrolling.cs:8:5:13:5 | After {...} | LoopUnrolling.cs:7:10:7:11 | Normal Exit | | | LoopUnrolling.cs:8:5:13:5 | {...} | LoopUnrolling.cs:9:9:10:19 | if (...) ... | | -| LoopUnrolling.cs:9:9:10:19 | if (...) ... | LoopUnrolling.cs:9:13:9:16 | access to parameter args | | +| LoopUnrolling.cs:9:9:10:19 | After if (...) ... | LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | | +| LoopUnrolling.cs:9:9:10:19 | if (...) ... | LoopUnrolling.cs:9:13:9:28 | Before ... == ... | | | LoopUnrolling.cs:9:13:9:16 | access to parameter args | LoopUnrolling.cs:9:13:9:23 | access to property Length | | -| LoopUnrolling.cs:9:13:9:23 | access to property Length | LoopUnrolling.cs:9:28:9:28 | 0 | | -| LoopUnrolling.cs:9:13:9:28 | ... == ... | LoopUnrolling.cs:10:13:10:19 | return ...; | true | -| LoopUnrolling.cs:9:13:9:28 | ... == ... | LoopUnrolling.cs:11:29:11:32 | access to parameter args | false | +| LoopUnrolling.cs:9:13:9:23 | After access to property Length | LoopUnrolling.cs:9:28:9:28 | 0 | | +| LoopUnrolling.cs:9:13:9:23 | Before access to property Length | LoopUnrolling.cs:9:13:9:16 | access to parameter args | | +| LoopUnrolling.cs:9:13:9:23 | access to property Length | LoopUnrolling.cs:9:13:9:23 | After access to property Length | | +| LoopUnrolling.cs:9:13:9:28 | ... == ... | LoopUnrolling.cs:9:13:9:28 | After ... == ... [false] | false | +| LoopUnrolling.cs:9:13:9:28 | ... == ... | LoopUnrolling.cs:9:13:9:28 | After ... == ... [true] | true | +| LoopUnrolling.cs:9:13:9:28 | After ... == ... [false] | LoopUnrolling.cs:9:9:10:19 | After if (...) ... | | +| LoopUnrolling.cs:9:13:9:28 | After ... == ... [true] | LoopUnrolling.cs:10:13:10:19 | Before return ...; | | +| LoopUnrolling.cs:9:13:9:28 | Before ... == ... | LoopUnrolling.cs:9:13:9:23 | Before access to property Length | | | LoopUnrolling.cs:9:28:9:28 | 0 | LoopUnrolling.cs:9:13:9:28 | ... == ... | | -| LoopUnrolling.cs:10:13:10:19 | return ...; | LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | return | -| LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:7:10:7:11 | exit M1 (normal) | empty | -| LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:11:22:11:24 | String arg | non-empty | +| LoopUnrolling.cs:10:13:10:19 | Before return ...; | LoopUnrolling.cs:10:13:10:19 | return ...; | | +| LoopUnrolling.cs:10:13:10:19 | return ...; | LoopUnrolling.cs:7:10:7:11 | Normal Exit | return | +| LoopUnrolling.cs:11:9:12:35 | After foreach (... ... in ...) ... | LoopUnrolling.cs:8:5:13:5 | After {...} | | +| LoopUnrolling.cs:11:9:12:35 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:11:9:12:35 | After foreach (... ... in ...) ... | | +| LoopUnrolling.cs:11:9:12:35 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:11:22:11:24 | String arg | | +| LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:11:29:11:32 | access to parameter args | | | LoopUnrolling.cs:11:22:11:24 | String arg | LoopUnrolling.cs:12:13:12:35 | ...; | | -| LoopUnrolling.cs:11:29:11:32 | access to parameter args | LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | | -| LoopUnrolling.cs:12:13:12:34 | call to method WriteLine | LoopUnrolling.cs:11:9:12:35 | foreach (... ... in ...) ... | | -| LoopUnrolling.cs:12:13:12:35 | ...; | LoopUnrolling.cs:12:31:12:33 | access to local variable arg | | +| LoopUnrolling.cs:11:29:11:32 | After access to parameter args [empty] | LoopUnrolling.cs:11:9:12:35 | After foreach (... ... in ...) ... | | +| LoopUnrolling.cs:11:29:11:32 | After access to parameter args [non-empty] | LoopUnrolling.cs:11:22:11:24 | String arg | | +| LoopUnrolling.cs:11:29:11:32 | access to parameter args | LoopUnrolling.cs:11:29:11:32 | After access to parameter args [empty] | empty | +| LoopUnrolling.cs:11:29:11:32 | access to parameter args | LoopUnrolling.cs:11:29:11:32 | After access to parameter args [non-empty] | non-empty | +| LoopUnrolling.cs:12:13:12:34 | After call to method WriteLine | LoopUnrolling.cs:12:13:12:35 | After ...; | | +| LoopUnrolling.cs:12:13:12:34 | Before call to method WriteLine | LoopUnrolling.cs:12:31:12:33 | access to local variable arg | | +| LoopUnrolling.cs:12:13:12:34 | call to method WriteLine | LoopUnrolling.cs:12:13:12:34 | After call to method WriteLine | | +| LoopUnrolling.cs:12:13:12:35 | ...; | LoopUnrolling.cs:12:13:12:34 | Before call to method WriteLine | | +| LoopUnrolling.cs:12:13:12:35 | After ...; | LoopUnrolling.cs:11:9:12:35 | [LoopHeader] foreach (... ... in ...) ... | | | LoopUnrolling.cs:12:31:12:33 | access to local variable arg | LoopUnrolling.cs:12:13:12:34 | call to method WriteLine | | -| LoopUnrolling.cs:15:10:15:11 | enter M2 | LoopUnrolling.cs:16:5:20:5 | {...} | | -| LoopUnrolling.cs:15:10:15:11 | exit M2 (normal) | LoopUnrolling.cs:15:10:15:11 | exit M2 | | +| LoopUnrolling.cs:15:10:15:11 | Entry | LoopUnrolling.cs:16:5:20:5 | {...} | | +| LoopUnrolling.cs:15:10:15:11 | Normal Exit | LoopUnrolling.cs:15:10:15:11 | Exit | | +| LoopUnrolling.cs:16:5:20:5 | After {...} | LoopUnrolling.cs:15:10:15:11 | Normal Exit | | | LoopUnrolling.cs:16:5:20:5 | {...} | LoopUnrolling.cs:17:9:17:48 | ... ...; | | -| LoopUnrolling.cs:17:9:17:48 | ... ...; | LoopUnrolling.cs:17:18:17:47 | 3 | | -| LoopUnrolling.cs:17:13:17:47 | String[] xs = ... | LoopUnrolling.cs:18:27:18:28 | access to local variable xs | | +| LoopUnrolling.cs:17:9:17:48 | ... ...; | LoopUnrolling.cs:17:13:17:47 | Before String[] xs = ... | | +| LoopUnrolling.cs:17:9:17:48 | After ... ...; | LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | | +| LoopUnrolling.cs:17:13:17:14 | access to local variable xs | LoopUnrolling.cs:17:18:17:47 | Before array creation of type String[] | | +| LoopUnrolling.cs:17:13:17:47 | After String[] xs = ... | LoopUnrolling.cs:17:9:17:48 | After ... ...; | | +| LoopUnrolling.cs:17:13:17:47 | Before String[] xs = ... | LoopUnrolling.cs:17:13:17:14 | access to local variable xs | | +| LoopUnrolling.cs:17:13:17:47 | String[] xs = ... | LoopUnrolling.cs:17:13:17:47 | After String[] xs = ... | | | LoopUnrolling.cs:17:18:17:47 | 3 | LoopUnrolling.cs:17:18:17:47 | array creation of type String[] | | -| LoopUnrolling.cs:17:18:17:47 | array creation of type String[] | LoopUnrolling.cs:17:33:17:35 | "a" | | -| LoopUnrolling.cs:17:31:17:47 | { ..., ... } | LoopUnrolling.cs:17:13:17:47 | String[] xs = ... | | +| LoopUnrolling.cs:17:18:17:47 | After array creation of type String[] | LoopUnrolling.cs:17:13:17:47 | String[] xs = ... | | +| LoopUnrolling.cs:17:18:17:47 | Before array creation of type String[] | LoopUnrolling.cs:17:31:17:47 | Before { ..., ... } | | +| LoopUnrolling.cs:17:18:17:47 | array creation of type String[] | LoopUnrolling.cs:17:18:17:47 | After array creation of type String[] | | +| LoopUnrolling.cs:17:31:17:47 | After { ..., ... } | LoopUnrolling.cs:17:18:17:47 | 3 | | +| LoopUnrolling.cs:17:31:17:47 | Before { ..., ... } | LoopUnrolling.cs:17:33:17:35 | "a" | | +| LoopUnrolling.cs:17:31:17:47 | { ..., ... } | LoopUnrolling.cs:17:31:17:47 | After { ..., ... } | | | LoopUnrolling.cs:17:33:17:35 | "a" | LoopUnrolling.cs:17:38:17:40 | "b" | | | LoopUnrolling.cs:17:38:17:40 | "b" | LoopUnrolling.cs:17:43:17:45 | "c" | | | LoopUnrolling.cs:17:43:17:45 | "c" | LoopUnrolling.cs:17:31:17:47 | { ..., ... } | | -| LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:15:10:15:11 | exit M2 (normal) | empty | -| LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:18:22:18:22 | String x | non-empty | +| LoopUnrolling.cs:18:9:19:33 | After foreach (... ... in ...) ... | LoopUnrolling.cs:16:5:20:5 | After {...} | | +| LoopUnrolling.cs:18:9:19:33 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:18:9:19:33 | After foreach (... ... in ...) ... | | +| LoopUnrolling.cs:18:9:19:33 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:18:22:18:22 | String x | | +| LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:18:27:18:28 | access to local variable xs | | | LoopUnrolling.cs:18:22:18:22 | String x | LoopUnrolling.cs:19:13:19:33 | ...; | | -| LoopUnrolling.cs:18:27:18:28 | access to local variable xs | LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | | -| LoopUnrolling.cs:19:13:19:32 | call to method WriteLine | LoopUnrolling.cs:18:9:19:33 | foreach (... ... in ...) ... | | -| LoopUnrolling.cs:19:13:19:33 | ...; | LoopUnrolling.cs:19:31:19:31 | access to local variable x | | +| LoopUnrolling.cs:18:27:18:28 | After access to local variable xs [empty] | LoopUnrolling.cs:18:9:19:33 | After foreach (... ... in ...) ... | | +| LoopUnrolling.cs:18:27:18:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:18:22:18:22 | String x | | +| LoopUnrolling.cs:18:27:18:28 | access to local variable xs | LoopUnrolling.cs:18:27:18:28 | After access to local variable xs [empty] | empty | +| LoopUnrolling.cs:18:27:18:28 | access to local variable xs | LoopUnrolling.cs:18:27:18:28 | After access to local variable xs [non-empty] | non-empty | +| LoopUnrolling.cs:19:13:19:32 | After call to method WriteLine | LoopUnrolling.cs:19:13:19:33 | After ...; | | +| LoopUnrolling.cs:19:13:19:32 | Before call to method WriteLine | LoopUnrolling.cs:19:31:19:31 | access to local variable x | | +| LoopUnrolling.cs:19:13:19:32 | call to method WriteLine | LoopUnrolling.cs:19:13:19:32 | After call to method WriteLine | | +| LoopUnrolling.cs:19:13:19:33 | ...; | LoopUnrolling.cs:19:13:19:32 | Before call to method WriteLine | | +| LoopUnrolling.cs:19:13:19:33 | After ...; | LoopUnrolling.cs:18:9:19:33 | [LoopHeader] foreach (... ... in ...) ... | | | LoopUnrolling.cs:19:31:19:31 | access to local variable x | LoopUnrolling.cs:19:13:19:32 | call to method WriteLine | | -| LoopUnrolling.cs:22:10:22:11 | enter M3 | LoopUnrolling.cs:23:5:27:5 | {...} | | -| LoopUnrolling.cs:22:10:22:11 | exit M3 (normal) | LoopUnrolling.cs:22:10:22:11 | exit M3 | | -| LoopUnrolling.cs:23:5:27:5 | {...} | LoopUnrolling.cs:24:29:24:32 | access to parameter args | | -| LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:22:10:22:11 | exit M3 (normal) | empty | -| LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:24:22:24:24 | Char arg | non-empty | -| LoopUnrolling.cs:24:22:24:24 | Char arg | LoopUnrolling.cs:25:34:25:37 | access to parameter args | | -| LoopUnrolling.cs:24:29:24:32 | access to parameter args | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | | -| LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | empty | -| LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:25:26:25:29 | Char arg0 | non-empty | +| LoopUnrolling.cs:22:10:22:11 | Entry | LoopUnrolling.cs:22:20:22:23 | args | | +| LoopUnrolling.cs:22:10:22:11 | Normal Exit | LoopUnrolling.cs:22:10:22:11 | Exit | | +| LoopUnrolling.cs:22:20:22:23 | args | LoopUnrolling.cs:23:5:27:5 | {...} | | +| LoopUnrolling.cs:23:5:27:5 | After {...} | LoopUnrolling.cs:22:10:22:11 | Normal Exit | | +| LoopUnrolling.cs:23:5:27:5 | {...} | LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | | +| LoopUnrolling.cs:24:9:26:40 | After foreach (... ... in ...) ... | LoopUnrolling.cs:23:5:27:5 | After {...} | | +| LoopUnrolling.cs:24:9:26:40 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:24:9:26:40 | After foreach (... ... in ...) ... | | +| LoopUnrolling.cs:24:9:26:40 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:24:22:24:24 | Char arg | | +| LoopUnrolling.cs:24:9:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:24:29:24:32 | access to parameter args | | +| LoopUnrolling.cs:24:22:24:24 | Char arg | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | | +| LoopUnrolling.cs:24:29:24:32 | After access to parameter args [empty] | LoopUnrolling.cs:24:9:26:40 | After foreach (... ... in ...) ... | | +| LoopUnrolling.cs:24:29:24:32 | After access to parameter args [non-empty] | LoopUnrolling.cs:24:22:24:24 | Char arg | | +| LoopUnrolling.cs:24:29:24:32 | access to parameter args | LoopUnrolling.cs:24:29:24:32 | After access to parameter args [empty] | empty | +| LoopUnrolling.cs:24:29:24:32 | access to parameter args | LoopUnrolling.cs:24:29:24:32 | After access to parameter args [non-empty] | non-empty | +| LoopUnrolling.cs:25:13:26:40 | After foreach (... ... in ...) ... | LoopUnrolling.cs:24:9:26:40 | [LoopHeader] foreach (... ... in ...) ... | | +| LoopUnrolling.cs:25:13:26:40 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:25:13:26:40 | After foreach (... ... in ...) ... | | +| LoopUnrolling.cs:25:13:26:40 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:25:26:25:29 | Char arg0 | | +| LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | LoopUnrolling.cs:25:34:25:37 | access to parameter args | | | LoopUnrolling.cs:25:26:25:29 | Char arg0 | LoopUnrolling.cs:26:17:26:40 | ...; | | -| LoopUnrolling.cs:25:34:25:37 | access to parameter args | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | | -| LoopUnrolling.cs:26:17:26:39 | call to method WriteLine | LoopUnrolling.cs:25:13:26:40 | foreach (... ... in ...) ... | | -| LoopUnrolling.cs:26:17:26:40 | ...; | LoopUnrolling.cs:26:35:26:38 | access to local variable arg0 | | +| LoopUnrolling.cs:25:34:25:37 | After access to parameter args [empty] | LoopUnrolling.cs:25:13:26:40 | After foreach (... ... in ...) ... | | +| LoopUnrolling.cs:25:34:25:37 | After access to parameter args [non-empty] | LoopUnrolling.cs:25:26:25:29 | Char arg0 | | +| LoopUnrolling.cs:25:34:25:37 | access to parameter args | LoopUnrolling.cs:25:34:25:37 | After access to parameter args [empty] | empty | +| LoopUnrolling.cs:25:34:25:37 | access to parameter args | LoopUnrolling.cs:25:34:25:37 | After access to parameter args [non-empty] | non-empty | +| LoopUnrolling.cs:26:17:26:39 | After call to method WriteLine | LoopUnrolling.cs:26:17:26:40 | After ...; | | +| LoopUnrolling.cs:26:17:26:39 | Before call to method WriteLine | LoopUnrolling.cs:26:35:26:38 | access to local variable arg0 | | +| LoopUnrolling.cs:26:17:26:39 | call to method WriteLine | LoopUnrolling.cs:26:17:26:39 | After call to method WriteLine | | +| LoopUnrolling.cs:26:17:26:40 | ...; | LoopUnrolling.cs:26:17:26:39 | Before call to method WriteLine | | +| LoopUnrolling.cs:26:17:26:40 | After ...; | LoopUnrolling.cs:25:13:26:40 | [LoopHeader] foreach (... ... in ...) ... | | | LoopUnrolling.cs:26:35:26:38 | access to local variable arg0 | LoopUnrolling.cs:26:17:26:39 | call to method WriteLine | | -| LoopUnrolling.cs:29:10:29:11 | enter M4 | LoopUnrolling.cs:30:5:34:5 | {...} | | -| LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | LoopUnrolling.cs:29:10:29:11 | exit M4 | | +| LoopUnrolling.cs:29:10:29:11 | Entry | LoopUnrolling.cs:30:5:34:5 | {...} | | +| LoopUnrolling.cs:29:10:29:11 | Normal Exit | LoopUnrolling.cs:29:10:29:11 | Exit | | +| LoopUnrolling.cs:30:5:34:5 | After {...} | LoopUnrolling.cs:29:10:29:11 | Normal Exit | | | LoopUnrolling.cs:30:5:34:5 | {...} | LoopUnrolling.cs:31:9:31:31 | ... ...; | | -| LoopUnrolling.cs:31:9:31:31 | ... ...; | LoopUnrolling.cs:31:29:31:29 | 0 | | -| LoopUnrolling.cs:31:13:31:30 | String[] xs = ... | LoopUnrolling.cs:32:27:32:28 | access to local variable xs | | -| LoopUnrolling.cs:31:18:31:30 | array creation of type String[] | LoopUnrolling.cs:31:13:31:30 | String[] xs = ... | | +| LoopUnrolling.cs:31:9:31:31 | ... ...; | LoopUnrolling.cs:31:13:31:30 | Before String[] xs = ... | | +| LoopUnrolling.cs:31:9:31:31 | After ... ...; | LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | | +| LoopUnrolling.cs:31:13:31:14 | access to local variable xs | LoopUnrolling.cs:31:18:31:30 | Before array creation of type String[] | | +| LoopUnrolling.cs:31:13:31:30 | After String[] xs = ... | LoopUnrolling.cs:31:9:31:31 | After ... ...; | | +| LoopUnrolling.cs:31:13:31:30 | Before String[] xs = ... | LoopUnrolling.cs:31:13:31:14 | access to local variable xs | | +| LoopUnrolling.cs:31:13:31:30 | String[] xs = ... | LoopUnrolling.cs:31:13:31:30 | After String[] xs = ... | | +| LoopUnrolling.cs:31:18:31:30 | After array creation of type String[] | LoopUnrolling.cs:31:13:31:30 | String[] xs = ... | | +| LoopUnrolling.cs:31:18:31:30 | Before array creation of type String[] | LoopUnrolling.cs:31:29:31:29 | 0 | | +| LoopUnrolling.cs:31:18:31:30 | array creation of type String[] | LoopUnrolling.cs:31:18:31:30 | After array creation of type String[] | | | LoopUnrolling.cs:31:29:31:29 | 0 | LoopUnrolling.cs:31:18:31:30 | array creation of type String[] | | -| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:29:10:29:11 | exit M4 (normal) | empty | -| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:32:22:32:22 | String x | non-empty | +| LoopUnrolling.cs:32:9:33:33 | After foreach (... ... in ...) ... | LoopUnrolling.cs:30:5:34:5 | After {...} | | +| LoopUnrolling.cs:32:9:33:33 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:32:9:33:33 | After foreach (... ... in ...) ... | | +| LoopUnrolling.cs:32:9:33:33 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:32:22:32:22 | String x | | +| LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | LoopUnrolling.cs:32:27:32:28 | access to local variable xs | | | LoopUnrolling.cs:32:22:32:22 | String x | LoopUnrolling.cs:33:13:33:33 | ...; | | -| LoopUnrolling.cs:32:27:32:28 | access to local variable xs | LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | | -| LoopUnrolling.cs:33:13:33:32 | call to method WriteLine | LoopUnrolling.cs:32:9:33:33 | foreach (... ... in ...) ... | | -| LoopUnrolling.cs:33:13:33:33 | ...; | LoopUnrolling.cs:33:31:33:31 | access to local variable x | | +| LoopUnrolling.cs:32:27:32:28 | After access to local variable xs [empty] | LoopUnrolling.cs:32:9:33:33 | After foreach (... ... in ...) ... | | +| LoopUnrolling.cs:32:27:32:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:32:22:32:22 | String x | | +| LoopUnrolling.cs:32:27:32:28 | access to local variable xs | LoopUnrolling.cs:32:27:32:28 | After access to local variable xs [empty] | empty | +| LoopUnrolling.cs:32:27:32:28 | access to local variable xs | LoopUnrolling.cs:32:27:32:28 | After access to local variable xs [non-empty] | non-empty | +| LoopUnrolling.cs:33:13:33:32 | After call to method WriteLine | LoopUnrolling.cs:33:13:33:33 | After ...; | | +| LoopUnrolling.cs:33:13:33:32 | Before call to method WriteLine | LoopUnrolling.cs:33:31:33:31 | access to local variable x | | +| LoopUnrolling.cs:33:13:33:32 | call to method WriteLine | LoopUnrolling.cs:33:13:33:32 | After call to method WriteLine | | +| LoopUnrolling.cs:33:13:33:33 | ...; | LoopUnrolling.cs:33:13:33:32 | Before call to method WriteLine | | +| LoopUnrolling.cs:33:13:33:33 | After ...; | LoopUnrolling.cs:32:9:33:33 | [LoopHeader] foreach (... ... in ...) ... | | | LoopUnrolling.cs:33:31:33:31 | access to local variable x | LoopUnrolling.cs:33:13:33:32 | call to method WriteLine | | -| LoopUnrolling.cs:36:10:36:11 | enter M5 | LoopUnrolling.cs:37:5:43:5 | {...} | | -| LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | LoopUnrolling.cs:36:10:36:11 | exit M5 | | +| LoopUnrolling.cs:36:10:36:11 | Entry | LoopUnrolling.cs:37:5:43:5 | {...} | | +| LoopUnrolling.cs:36:10:36:11 | Normal Exit | LoopUnrolling.cs:36:10:36:11 | Exit | | +| LoopUnrolling.cs:37:5:43:5 | After {...} | LoopUnrolling.cs:36:10:36:11 | Normal Exit | | | LoopUnrolling.cs:37:5:43:5 | {...} | LoopUnrolling.cs:38:9:38:48 | ... ...; | | -| LoopUnrolling.cs:38:9:38:48 | ... ...; | LoopUnrolling.cs:38:18:38:47 | 3 | | -| LoopUnrolling.cs:38:13:38:47 | String[] xs = ... | LoopUnrolling.cs:39:9:39:48 | ... ...; | | +| LoopUnrolling.cs:38:9:38:48 | ... ...; | LoopUnrolling.cs:38:13:38:47 | Before String[] xs = ... | | +| LoopUnrolling.cs:38:9:38:48 | After ... ...; | LoopUnrolling.cs:39:9:39:48 | ... ...; | | +| LoopUnrolling.cs:38:13:38:14 | access to local variable xs | LoopUnrolling.cs:38:18:38:47 | Before array creation of type String[] | | +| LoopUnrolling.cs:38:13:38:47 | After String[] xs = ... | LoopUnrolling.cs:38:9:38:48 | After ... ...; | | +| LoopUnrolling.cs:38:13:38:47 | Before String[] xs = ... | LoopUnrolling.cs:38:13:38:14 | access to local variable xs | | +| LoopUnrolling.cs:38:13:38:47 | String[] xs = ... | LoopUnrolling.cs:38:13:38:47 | After String[] xs = ... | | | LoopUnrolling.cs:38:18:38:47 | 3 | LoopUnrolling.cs:38:18:38:47 | array creation of type String[] | | -| LoopUnrolling.cs:38:18:38:47 | array creation of type String[] | LoopUnrolling.cs:38:33:38:35 | "a" | | -| LoopUnrolling.cs:38:31:38:47 | { ..., ... } | LoopUnrolling.cs:38:13:38:47 | String[] xs = ... | | +| LoopUnrolling.cs:38:18:38:47 | After array creation of type String[] | LoopUnrolling.cs:38:13:38:47 | String[] xs = ... | | +| LoopUnrolling.cs:38:18:38:47 | Before array creation of type String[] | LoopUnrolling.cs:38:31:38:47 | Before { ..., ... } | | +| LoopUnrolling.cs:38:18:38:47 | array creation of type String[] | LoopUnrolling.cs:38:18:38:47 | After array creation of type String[] | | +| LoopUnrolling.cs:38:31:38:47 | After { ..., ... } | LoopUnrolling.cs:38:18:38:47 | 3 | | +| LoopUnrolling.cs:38:31:38:47 | Before { ..., ... } | LoopUnrolling.cs:38:33:38:35 | "a" | | +| LoopUnrolling.cs:38:31:38:47 | { ..., ... } | LoopUnrolling.cs:38:31:38:47 | After { ..., ... } | | | LoopUnrolling.cs:38:33:38:35 | "a" | LoopUnrolling.cs:38:38:38:40 | "b" | | | LoopUnrolling.cs:38:38:38:40 | "b" | LoopUnrolling.cs:38:43:38:45 | "c" | | | LoopUnrolling.cs:38:43:38:45 | "c" | LoopUnrolling.cs:38:31:38:47 | { ..., ... } | | -| LoopUnrolling.cs:39:9:39:48 | ... ...; | LoopUnrolling.cs:39:18:39:47 | 3 | | -| LoopUnrolling.cs:39:13:39:47 | String[] ys = ... | LoopUnrolling.cs:40:27:40:28 | access to local variable xs | | +| LoopUnrolling.cs:39:9:39:48 | ... ...; | LoopUnrolling.cs:39:13:39:47 | Before String[] ys = ... | | +| LoopUnrolling.cs:39:9:39:48 | After ... ...; | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | | +| LoopUnrolling.cs:39:13:39:14 | access to local variable ys | LoopUnrolling.cs:39:18:39:47 | Before array creation of type String[] | | +| LoopUnrolling.cs:39:13:39:47 | After String[] ys = ... | LoopUnrolling.cs:39:9:39:48 | After ... ...; | | +| LoopUnrolling.cs:39:13:39:47 | Before String[] ys = ... | LoopUnrolling.cs:39:13:39:14 | access to local variable ys | | +| LoopUnrolling.cs:39:13:39:47 | String[] ys = ... | LoopUnrolling.cs:39:13:39:47 | After String[] ys = ... | | | LoopUnrolling.cs:39:18:39:47 | 3 | LoopUnrolling.cs:39:18:39:47 | array creation of type String[] | | -| LoopUnrolling.cs:39:18:39:47 | array creation of type String[] | LoopUnrolling.cs:39:33:39:35 | "0" | | -| LoopUnrolling.cs:39:31:39:47 | { ..., ... } | LoopUnrolling.cs:39:13:39:47 | String[] ys = ... | | +| LoopUnrolling.cs:39:18:39:47 | After array creation of type String[] | LoopUnrolling.cs:39:13:39:47 | String[] ys = ... | | +| LoopUnrolling.cs:39:18:39:47 | Before array creation of type String[] | LoopUnrolling.cs:39:31:39:47 | Before { ..., ... } | | +| LoopUnrolling.cs:39:18:39:47 | array creation of type String[] | LoopUnrolling.cs:39:18:39:47 | After array creation of type String[] | | +| LoopUnrolling.cs:39:31:39:47 | After { ..., ... } | LoopUnrolling.cs:39:18:39:47 | 3 | | +| LoopUnrolling.cs:39:31:39:47 | Before { ..., ... } | LoopUnrolling.cs:39:33:39:35 | "0" | | +| LoopUnrolling.cs:39:31:39:47 | { ..., ... } | LoopUnrolling.cs:39:31:39:47 | After { ..., ... } | | | LoopUnrolling.cs:39:33:39:35 | "0" | LoopUnrolling.cs:39:38:39:40 | "1" | | | LoopUnrolling.cs:39:38:39:40 | "1" | LoopUnrolling.cs:39:43:39:45 | "2" | | | LoopUnrolling.cs:39:43:39:45 | "2" | LoopUnrolling.cs:39:31:39:47 | { ..., ... } | | -| LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:36:10:36:11 | exit M5 (normal) | empty | -| LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:40:22:40:22 | String x | non-empty | -| LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:41:31:41:32 | access to local variable ys | | -| LoopUnrolling.cs:40:27:40:28 | access to local variable xs | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | | -| LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | empty | -| LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:41:26:41:26 | String y | non-empty | +| LoopUnrolling.cs:40:9:42:41 | After foreach (... ... in ...) ... | LoopUnrolling.cs:37:5:43:5 | After {...} | | +| LoopUnrolling.cs:40:9:42:41 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:40:9:42:41 | After foreach (... ... in ...) ... | | +| LoopUnrolling.cs:40:9:42:41 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:40:22:40:22 | String x | | +| LoopUnrolling.cs:40:9:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:40:27:40:28 | access to local variable xs | | +| LoopUnrolling.cs:40:22:40:22 | String x | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | | +| LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [empty] | LoopUnrolling.cs:40:9:42:41 | After foreach (... ... in ...) ... | | +| LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:40:22:40:22 | String x | | +| LoopUnrolling.cs:40:27:40:28 | access to local variable xs | LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [empty] | empty | +| LoopUnrolling.cs:40:27:40:28 | access to local variable xs | LoopUnrolling.cs:40:27:40:28 | After access to local variable xs [non-empty] | non-empty | +| LoopUnrolling.cs:41:13:42:41 | After foreach (... ... in ...) ... | LoopUnrolling.cs:40:9:42:41 | [LoopHeader] foreach (... ... in ...) ... | | +| LoopUnrolling.cs:41:13:42:41 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:41:13:42:41 | After foreach (... ... in ...) ... | | +| LoopUnrolling.cs:41:13:42:41 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:41:26:41:26 | String y | | +| LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | LoopUnrolling.cs:41:31:41:32 | access to local variable ys | | | LoopUnrolling.cs:41:26:41:26 | String y | LoopUnrolling.cs:42:17:42:41 | ...; | | -| LoopUnrolling.cs:41:31:41:32 | access to local variable ys | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | | -| LoopUnrolling.cs:42:17:42:40 | call to method WriteLine | LoopUnrolling.cs:41:13:42:41 | foreach (... ... in ...) ... | | -| LoopUnrolling.cs:42:17:42:41 | ...; | LoopUnrolling.cs:42:35:42:35 | access to local variable x | | +| LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [empty] | LoopUnrolling.cs:41:13:42:41 | After foreach (... ... in ...) ... | | +| LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [non-empty] | LoopUnrolling.cs:41:26:41:26 | String y | | +| LoopUnrolling.cs:41:31:41:32 | access to local variable ys | LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [empty] | empty | +| LoopUnrolling.cs:41:31:41:32 | access to local variable ys | LoopUnrolling.cs:41:31:41:32 | After access to local variable ys [non-empty] | non-empty | +| LoopUnrolling.cs:42:17:42:40 | After call to method WriteLine | LoopUnrolling.cs:42:17:42:41 | After ...; | | +| LoopUnrolling.cs:42:17:42:40 | Before call to method WriteLine | LoopUnrolling.cs:42:35:42:39 | Before ... + ... | | +| LoopUnrolling.cs:42:17:42:40 | call to method WriteLine | LoopUnrolling.cs:42:17:42:40 | After call to method WriteLine | | +| LoopUnrolling.cs:42:17:42:41 | ...; | LoopUnrolling.cs:42:17:42:40 | Before call to method WriteLine | | +| LoopUnrolling.cs:42:17:42:41 | After ...; | LoopUnrolling.cs:41:13:42:41 | [LoopHeader] foreach (... ... in ...) ... | | | LoopUnrolling.cs:42:35:42:35 | access to local variable x | LoopUnrolling.cs:42:39:42:39 | access to local variable y | | -| LoopUnrolling.cs:42:35:42:39 | ... + ... | LoopUnrolling.cs:42:17:42:40 | call to method WriteLine | | +| LoopUnrolling.cs:42:35:42:39 | ... + ... | LoopUnrolling.cs:42:35:42:39 | After ... + ... | | +| LoopUnrolling.cs:42:35:42:39 | After ... + ... | LoopUnrolling.cs:42:17:42:40 | call to method WriteLine | | +| LoopUnrolling.cs:42:35:42:39 | Before ... + ... | LoopUnrolling.cs:42:35:42:35 | access to local variable x | | | LoopUnrolling.cs:42:39:42:39 | access to local variable y | LoopUnrolling.cs:42:35:42:39 | ... + ... | | -| LoopUnrolling.cs:45:10:45:11 | enter M6 | LoopUnrolling.cs:46:5:53:5 | {...} | | -| LoopUnrolling.cs:45:10:45:11 | exit M6 (normal) | LoopUnrolling.cs:45:10:45:11 | exit M6 | | +| LoopUnrolling.cs:45:10:45:11 | Entry | LoopUnrolling.cs:46:5:53:5 | {...} | | +| LoopUnrolling.cs:45:10:45:11 | Normal Exit | LoopUnrolling.cs:45:10:45:11 | Exit | | +| LoopUnrolling.cs:46:5:53:5 | After {...} | LoopUnrolling.cs:45:10:45:11 | Normal Exit | | | LoopUnrolling.cs:46:5:53:5 | {...} | LoopUnrolling.cs:47:9:47:48 | ... ...; | | -| LoopUnrolling.cs:47:9:47:48 | ... ...; | LoopUnrolling.cs:47:18:47:47 | 3 | | -| LoopUnrolling.cs:47:13:47:47 | String[] xs = ... | LoopUnrolling.cs:48:27:48:28 | access to local variable xs | | +| LoopUnrolling.cs:47:9:47:48 | ... ...; | LoopUnrolling.cs:47:13:47:47 | Before String[] xs = ... | | +| LoopUnrolling.cs:47:9:47:48 | After ... ...; | LoopUnrolling.cs:48:9:52:9 | foreach (... ... in ...) ... | | +| LoopUnrolling.cs:47:13:47:14 | access to local variable xs | LoopUnrolling.cs:47:18:47:47 | Before array creation of type String[] | | +| LoopUnrolling.cs:47:13:47:47 | After String[] xs = ... | LoopUnrolling.cs:47:9:47:48 | After ... ...; | | +| LoopUnrolling.cs:47:13:47:47 | Before String[] xs = ... | LoopUnrolling.cs:47:13:47:14 | access to local variable xs | | +| LoopUnrolling.cs:47:13:47:47 | String[] xs = ... | LoopUnrolling.cs:47:13:47:47 | After String[] xs = ... | | | LoopUnrolling.cs:47:18:47:47 | 3 | LoopUnrolling.cs:47:18:47:47 | array creation of type String[] | | -| LoopUnrolling.cs:47:18:47:47 | array creation of type String[] | LoopUnrolling.cs:47:33:47:35 | "a" | | -| LoopUnrolling.cs:47:31:47:47 | { ..., ... } | LoopUnrolling.cs:47:13:47:47 | String[] xs = ... | | +| LoopUnrolling.cs:47:18:47:47 | After array creation of type String[] | LoopUnrolling.cs:47:13:47:47 | String[] xs = ... | | +| LoopUnrolling.cs:47:18:47:47 | Before array creation of type String[] | LoopUnrolling.cs:47:31:47:47 | Before { ..., ... } | | +| LoopUnrolling.cs:47:18:47:47 | array creation of type String[] | LoopUnrolling.cs:47:18:47:47 | After array creation of type String[] | | +| LoopUnrolling.cs:47:31:47:47 | After { ..., ... } | LoopUnrolling.cs:47:18:47:47 | 3 | | +| LoopUnrolling.cs:47:31:47:47 | Before { ..., ... } | LoopUnrolling.cs:47:33:47:35 | "a" | | +| LoopUnrolling.cs:47:31:47:47 | { ..., ... } | LoopUnrolling.cs:47:31:47:47 | After { ..., ... } | | | LoopUnrolling.cs:47:33:47:35 | "a" | LoopUnrolling.cs:47:38:47:40 | "b" | | | LoopUnrolling.cs:47:38:47:40 | "b" | LoopUnrolling.cs:47:43:47:45 | "c" | | | LoopUnrolling.cs:47:43:47:45 | "c" | LoopUnrolling.cs:47:31:47:47 | { ..., ... } | | -| LoopUnrolling.cs:48:9:52:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:45:10:45:11 | exit M6 (normal) | empty | -| LoopUnrolling.cs:48:9:52:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:48:22:48:22 | String x | non-empty | +| LoopUnrolling.cs:48:9:52:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:46:5:53:5 | After {...} | | +| LoopUnrolling.cs:48:9:52:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:48:27:48:28 | access to local variable xs | | | LoopUnrolling.cs:48:22:48:22 | String x | LoopUnrolling.cs:49:9:52:9 | {...} | | -| LoopUnrolling.cs:48:27:48:28 | access to local variable xs | LoopUnrolling.cs:48:9:52:9 | foreach (... ... in ...) ... | | +| LoopUnrolling.cs:48:27:48:28 | After access to local variable xs [empty] | LoopUnrolling.cs:48:9:52:9 | After foreach (... ... in ...) ... | | +| LoopUnrolling.cs:48:27:48:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:48:22:48:22 | String x | | +| LoopUnrolling.cs:48:27:48:28 | access to local variable xs | LoopUnrolling.cs:48:27:48:28 | After access to local variable xs [empty] | empty | +| LoopUnrolling.cs:48:27:48:28 | access to local variable xs | LoopUnrolling.cs:48:27:48:28 | After access to local variable xs [non-empty] | non-empty | | LoopUnrolling.cs:49:9:52:9 | {...} | LoopUnrolling.cs:50:9:50:13 | Label: | | | LoopUnrolling.cs:50:9:50:13 | Label: | LoopUnrolling.cs:50:16:50:36 | ...; | | -| LoopUnrolling.cs:50:16:50:35 | call to method WriteLine | LoopUnrolling.cs:51:13:51:23 | goto ...; | | -| LoopUnrolling.cs:50:16:50:36 | ...; | LoopUnrolling.cs:50:34:50:34 | access to local variable x | | +| LoopUnrolling.cs:50:16:50:35 | After call to method WriteLine | LoopUnrolling.cs:50:16:50:36 | After ...; | | +| LoopUnrolling.cs:50:16:50:35 | Before call to method WriteLine | LoopUnrolling.cs:50:34:50:34 | access to local variable x | | +| LoopUnrolling.cs:50:16:50:35 | call to method WriteLine | LoopUnrolling.cs:50:16:50:35 | After call to method WriteLine | | +| LoopUnrolling.cs:50:16:50:36 | ...; | LoopUnrolling.cs:50:16:50:35 | Before call to method WriteLine | | +| LoopUnrolling.cs:50:16:50:36 | After ...; | LoopUnrolling.cs:51:13:51:23 | Before goto ...; | | | LoopUnrolling.cs:50:34:50:34 | access to local variable x | LoopUnrolling.cs:50:16:50:35 | call to method WriteLine | | +| LoopUnrolling.cs:51:13:51:23 | Before goto ...; | LoopUnrolling.cs:51:13:51:23 | goto ...; | | | LoopUnrolling.cs:51:13:51:23 | goto ...; | LoopUnrolling.cs:50:9:50:13 | Label: | goto | -| LoopUnrolling.cs:55:10:55:11 | enter M7 | LoopUnrolling.cs:56:5:65:5 | {...} | | -| LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | LoopUnrolling.cs:55:10:55:11 | exit M7 | | +| LoopUnrolling.cs:55:10:55:11 | Entry | LoopUnrolling.cs:55:18:55:18 | b | | +| LoopUnrolling.cs:55:10:55:11 | Normal Exit | LoopUnrolling.cs:55:10:55:11 | Exit | | +| LoopUnrolling.cs:55:18:55:18 | b | LoopUnrolling.cs:56:5:65:5 | {...} | | +| LoopUnrolling.cs:56:5:65:5 | After {...} | LoopUnrolling.cs:55:10:55:11 | Normal Exit | | | LoopUnrolling.cs:56:5:65:5 | {...} | LoopUnrolling.cs:57:9:57:48 | ... ...; | | -| LoopUnrolling.cs:57:9:57:48 | ... ...; | LoopUnrolling.cs:57:18:57:47 | 3 | | -| LoopUnrolling.cs:57:13:57:47 | String[] xs = ... | LoopUnrolling.cs:58:27:58:28 | access to local variable xs | | +| LoopUnrolling.cs:57:9:57:48 | ... ...; | LoopUnrolling.cs:57:13:57:47 | Before String[] xs = ... | | +| LoopUnrolling.cs:57:9:57:48 | After ... ...; | LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | | +| LoopUnrolling.cs:57:13:57:14 | access to local variable xs | LoopUnrolling.cs:57:18:57:47 | Before array creation of type String[] | | +| LoopUnrolling.cs:57:13:57:47 | After String[] xs = ... | LoopUnrolling.cs:57:9:57:48 | After ... ...; | | +| LoopUnrolling.cs:57:13:57:47 | Before String[] xs = ... | LoopUnrolling.cs:57:13:57:14 | access to local variable xs | | +| LoopUnrolling.cs:57:13:57:47 | String[] xs = ... | LoopUnrolling.cs:57:13:57:47 | After String[] xs = ... | | | LoopUnrolling.cs:57:18:57:47 | 3 | LoopUnrolling.cs:57:18:57:47 | array creation of type String[] | | -| LoopUnrolling.cs:57:18:57:47 | array creation of type String[] | LoopUnrolling.cs:57:33:57:35 | "a" | | -| LoopUnrolling.cs:57:31:57:47 | { ..., ... } | LoopUnrolling.cs:57:13:57:47 | String[] xs = ... | | +| LoopUnrolling.cs:57:18:57:47 | After array creation of type String[] | LoopUnrolling.cs:57:13:57:47 | String[] xs = ... | | +| LoopUnrolling.cs:57:18:57:47 | Before array creation of type String[] | LoopUnrolling.cs:57:31:57:47 | Before { ..., ... } | | +| LoopUnrolling.cs:57:18:57:47 | array creation of type String[] | LoopUnrolling.cs:57:18:57:47 | After array creation of type String[] | | +| LoopUnrolling.cs:57:31:57:47 | After { ..., ... } | LoopUnrolling.cs:57:18:57:47 | 3 | | +| LoopUnrolling.cs:57:31:57:47 | Before { ..., ... } | LoopUnrolling.cs:57:33:57:35 | "a" | | +| LoopUnrolling.cs:57:31:57:47 | { ..., ... } | LoopUnrolling.cs:57:31:57:47 | After { ..., ... } | | | LoopUnrolling.cs:57:33:57:35 | "a" | LoopUnrolling.cs:57:38:57:40 | "b" | | | LoopUnrolling.cs:57:38:57:40 | "b" | LoopUnrolling.cs:57:43:57:45 | "c" | | | LoopUnrolling.cs:57:43:57:45 | "c" | LoopUnrolling.cs:57:31:57:47 | { ..., ... } | | -| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:55:10:55:11 | exit M7 (normal) | empty | -| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:58:22:58:22 | String x | non-empty | +| LoopUnrolling.cs:58:9:64:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:56:5:65:5 | After {...} | | +| LoopUnrolling.cs:58:9:64:9 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:58:9:64:9 | After foreach (... ... in ...) ... | | +| LoopUnrolling.cs:58:9:64:9 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:58:22:58:22 | String x | | +| LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:58:27:58:28 | access to local variable xs | | | LoopUnrolling.cs:58:22:58:22 | String x | LoopUnrolling.cs:59:9:64:9 | {...} | | -| LoopUnrolling.cs:58:27:58:28 | access to local variable xs | LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | | +| LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [empty] | LoopUnrolling.cs:58:9:64:9 | After foreach (... ... in ...) ... | | +| LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:58:22:58:22 | String x | | +| LoopUnrolling.cs:58:27:58:28 | access to local variable xs | LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [empty] | empty | +| LoopUnrolling.cs:58:27:58:28 | access to local variable xs | LoopUnrolling.cs:58:27:58:28 | After access to local variable xs [non-empty] | non-empty | +| LoopUnrolling.cs:59:9:64:9 | After {...} | LoopUnrolling.cs:58:9:64:9 | [LoopHeader] foreach (... ... in ...) ... | | | LoopUnrolling.cs:59:9:64:9 | {...} | LoopUnrolling.cs:60:13:61:37 | if (...) ... | | +| LoopUnrolling.cs:60:13:61:37 | After if (...) ... | LoopUnrolling.cs:62:13:63:37 | if (...) ... | | | LoopUnrolling.cs:60:13:61:37 | if (...) ... | LoopUnrolling.cs:60:17:60:17 | access to parameter b | | -| LoopUnrolling.cs:60:17:60:17 | access to parameter b | LoopUnrolling.cs:61:17:61:37 | ...; | true | -| LoopUnrolling.cs:60:17:60:17 | access to parameter b | LoopUnrolling.cs:62:13:63:37 | if (...) ... | false | -| LoopUnrolling.cs:61:17:61:36 | call to method WriteLine | LoopUnrolling.cs:62:13:63:37 | if (...) ... | | -| LoopUnrolling.cs:61:17:61:37 | ...; | LoopUnrolling.cs:61:35:61:35 | access to local variable x | | +| LoopUnrolling.cs:60:17:60:17 | After access to parameter b [false] | LoopUnrolling.cs:60:13:61:37 | After if (...) ... | | +| LoopUnrolling.cs:60:17:60:17 | After access to parameter b [true] | LoopUnrolling.cs:61:17:61:37 | ...; | | +| LoopUnrolling.cs:60:17:60:17 | access to parameter b | LoopUnrolling.cs:60:17:60:17 | After access to parameter b [false] | false | +| LoopUnrolling.cs:60:17:60:17 | access to parameter b | LoopUnrolling.cs:60:17:60:17 | After access to parameter b [true] | true | +| LoopUnrolling.cs:61:17:61:36 | After call to method WriteLine | LoopUnrolling.cs:61:17:61:37 | After ...; | | +| LoopUnrolling.cs:61:17:61:36 | Before call to method WriteLine | LoopUnrolling.cs:61:35:61:35 | access to local variable x | | +| LoopUnrolling.cs:61:17:61:36 | call to method WriteLine | LoopUnrolling.cs:61:17:61:36 | After call to method WriteLine | | +| LoopUnrolling.cs:61:17:61:37 | ...; | LoopUnrolling.cs:61:17:61:36 | Before call to method WriteLine | | +| LoopUnrolling.cs:61:17:61:37 | After ...; | LoopUnrolling.cs:60:13:61:37 | After if (...) ... | | | LoopUnrolling.cs:61:35:61:35 | access to local variable x | LoopUnrolling.cs:61:17:61:36 | call to method WriteLine | | +| LoopUnrolling.cs:62:13:63:37 | After if (...) ... | LoopUnrolling.cs:59:9:64:9 | After {...} | | | LoopUnrolling.cs:62:13:63:37 | if (...) ... | LoopUnrolling.cs:62:17:62:17 | access to parameter b | | -| LoopUnrolling.cs:62:17:62:17 | access to parameter b | LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | false | -| LoopUnrolling.cs:62:17:62:17 | access to parameter b | LoopUnrolling.cs:63:17:63:37 | ...; | true | -| LoopUnrolling.cs:63:17:63:36 | call to method WriteLine | LoopUnrolling.cs:58:9:64:9 | foreach (... ... in ...) ... | | -| LoopUnrolling.cs:63:17:63:37 | ...; | LoopUnrolling.cs:63:35:63:35 | access to local variable x | | +| LoopUnrolling.cs:62:17:62:17 | After access to parameter b [false] | LoopUnrolling.cs:62:13:63:37 | After if (...) ... | | +| LoopUnrolling.cs:62:17:62:17 | After access to parameter b [true] | LoopUnrolling.cs:63:17:63:37 | ...; | | +| LoopUnrolling.cs:62:17:62:17 | access to parameter b | LoopUnrolling.cs:62:17:62:17 | After access to parameter b [false] | false | +| LoopUnrolling.cs:62:17:62:17 | access to parameter b | LoopUnrolling.cs:62:17:62:17 | After access to parameter b [true] | true | +| LoopUnrolling.cs:63:17:63:36 | After call to method WriteLine | LoopUnrolling.cs:63:17:63:37 | After ...; | | +| LoopUnrolling.cs:63:17:63:36 | Before call to method WriteLine | LoopUnrolling.cs:63:35:63:35 | access to local variable x | | +| LoopUnrolling.cs:63:17:63:36 | call to method WriteLine | LoopUnrolling.cs:63:17:63:36 | After call to method WriteLine | | +| LoopUnrolling.cs:63:17:63:37 | ...; | LoopUnrolling.cs:63:17:63:36 | Before call to method WriteLine | | +| LoopUnrolling.cs:63:17:63:37 | After ...; | LoopUnrolling.cs:62:13:63:37 | After if (...) ... | | | LoopUnrolling.cs:63:35:63:35 | access to local variable x | LoopUnrolling.cs:63:17:63:36 | call to method WriteLine | | -| LoopUnrolling.cs:67:10:67:11 | enter M8 | LoopUnrolling.cs:68:5:74:5 | {...} | | -| LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | LoopUnrolling.cs:67:10:67:11 | exit M8 | | +| LoopUnrolling.cs:67:10:67:11 | Entry | LoopUnrolling.cs:67:26:67:29 | args | | +| LoopUnrolling.cs:67:10:67:11 | Normal Exit | LoopUnrolling.cs:67:10:67:11 | Exit | | +| LoopUnrolling.cs:67:26:67:29 | args | LoopUnrolling.cs:68:5:74:5 | {...} | | +| LoopUnrolling.cs:68:5:74:5 | After {...} | LoopUnrolling.cs:67:10:67:11 | Normal Exit | | | LoopUnrolling.cs:68:5:74:5 | {...} | LoopUnrolling.cs:69:9:70:19 | if (...) ... | | -| LoopUnrolling.cs:69:9:70:19 | if (...) ... | LoopUnrolling.cs:69:14:69:17 | access to parameter args | | -| LoopUnrolling.cs:69:13:69:23 | [false] !... | LoopUnrolling.cs:71:9:71:21 | ...; | false | -| LoopUnrolling.cs:69:13:69:23 | [true] !... | LoopUnrolling.cs:70:13:70:19 | return ...; | true | +| LoopUnrolling.cs:69:9:70:19 | After if (...) ... | LoopUnrolling.cs:71:9:71:21 | ...; | | +| LoopUnrolling.cs:69:9:70:19 | if (...) ... | LoopUnrolling.cs:69:13:69:23 | !... | | +| LoopUnrolling.cs:69:13:69:23 | !... | LoopUnrolling.cs:69:14:69:23 | Before call to method Any | | +| LoopUnrolling.cs:69:13:69:23 | After !... [false] | LoopUnrolling.cs:69:9:70:19 | After if (...) ... | | +| LoopUnrolling.cs:69:13:69:23 | After !... [true] | LoopUnrolling.cs:70:13:70:19 | Before return ...; | | | LoopUnrolling.cs:69:14:69:17 | access to parameter args | LoopUnrolling.cs:69:14:69:23 | call to method Any | | -| LoopUnrolling.cs:69:14:69:23 | call to method Any | LoopUnrolling.cs:69:13:69:23 | [false] !... | true | -| LoopUnrolling.cs:69:14:69:23 | call to method Any | LoopUnrolling.cs:69:13:69:23 | [true] !... | false | -| LoopUnrolling.cs:70:13:70:19 | return ...; | LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | return | +| LoopUnrolling.cs:69:14:69:23 | After call to method Any [false] | LoopUnrolling.cs:69:13:69:23 | After !... [true] | true | +| LoopUnrolling.cs:69:14:69:23 | After call to method Any [true] | LoopUnrolling.cs:69:13:69:23 | After !... [false] | false | +| LoopUnrolling.cs:69:14:69:23 | Before call to method Any | LoopUnrolling.cs:69:14:69:17 | access to parameter args | | +| LoopUnrolling.cs:69:14:69:23 | call to method Any | LoopUnrolling.cs:69:14:69:23 | After call to method Any [false] | false | +| LoopUnrolling.cs:69:14:69:23 | call to method Any | LoopUnrolling.cs:69:14:69:23 | After call to method Any [true] | true | +| LoopUnrolling.cs:70:13:70:19 | Before return ...; | LoopUnrolling.cs:70:13:70:19 | return ...; | | +| LoopUnrolling.cs:70:13:70:19 | return ...; | LoopUnrolling.cs:67:10:67:11 | Normal Exit | return | | LoopUnrolling.cs:71:9:71:12 | access to parameter args | LoopUnrolling.cs:71:9:71:20 | call to method Clear | | -| LoopUnrolling.cs:71:9:71:20 | call to method Clear | LoopUnrolling.cs:72:29:72:32 | access to parameter args | | -| LoopUnrolling.cs:71:9:71:21 | ...; | LoopUnrolling.cs:71:9:71:12 | access to parameter args | | -| LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:67:10:67:11 | exit M8 (normal) | empty | -| LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:72:22:72:24 | String arg | non-empty | +| LoopUnrolling.cs:71:9:71:20 | After call to method Clear | LoopUnrolling.cs:71:9:71:21 | After ...; | | +| LoopUnrolling.cs:71:9:71:20 | Before call to method Clear | LoopUnrolling.cs:71:9:71:12 | access to parameter args | | +| LoopUnrolling.cs:71:9:71:20 | call to method Clear | LoopUnrolling.cs:71:9:71:20 | After call to method Clear | | +| LoopUnrolling.cs:71:9:71:21 | ...; | LoopUnrolling.cs:71:9:71:20 | Before call to method Clear | | +| LoopUnrolling.cs:71:9:71:21 | After ...; | LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | | +| LoopUnrolling.cs:72:9:73:35 | After foreach (... ... in ...) ... | LoopUnrolling.cs:68:5:74:5 | After {...} | | +| LoopUnrolling.cs:72:9:73:35 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:72:9:73:35 | After foreach (... ... in ...) ... | | +| LoopUnrolling.cs:72:9:73:35 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:72:22:72:24 | String arg | | +| LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | LoopUnrolling.cs:72:29:72:32 | access to parameter args | | | LoopUnrolling.cs:72:22:72:24 | String arg | LoopUnrolling.cs:73:13:73:35 | ...; | | -| LoopUnrolling.cs:72:29:72:32 | access to parameter args | LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | | -| LoopUnrolling.cs:73:13:73:34 | call to method WriteLine | LoopUnrolling.cs:72:9:73:35 | foreach (... ... in ...) ... | | -| LoopUnrolling.cs:73:13:73:35 | ...; | LoopUnrolling.cs:73:31:73:33 | access to local variable arg | | +| LoopUnrolling.cs:72:29:72:32 | After access to parameter args [empty] | LoopUnrolling.cs:72:9:73:35 | After foreach (... ... in ...) ... | | +| LoopUnrolling.cs:72:29:72:32 | After access to parameter args [non-empty] | LoopUnrolling.cs:72:22:72:24 | String arg | | +| LoopUnrolling.cs:72:29:72:32 | access to parameter args | LoopUnrolling.cs:72:29:72:32 | After access to parameter args [empty] | empty | +| LoopUnrolling.cs:72:29:72:32 | access to parameter args | LoopUnrolling.cs:72:29:72:32 | After access to parameter args [non-empty] | non-empty | +| LoopUnrolling.cs:73:13:73:34 | After call to method WriteLine | LoopUnrolling.cs:73:13:73:35 | After ...; | | +| LoopUnrolling.cs:73:13:73:34 | Before call to method WriteLine | LoopUnrolling.cs:73:31:73:33 | access to local variable arg | | +| LoopUnrolling.cs:73:13:73:34 | call to method WriteLine | LoopUnrolling.cs:73:13:73:34 | After call to method WriteLine | | +| LoopUnrolling.cs:73:13:73:35 | ...; | LoopUnrolling.cs:73:13:73:34 | Before call to method WriteLine | | +| LoopUnrolling.cs:73:13:73:35 | After ...; | LoopUnrolling.cs:72:9:73:35 | [LoopHeader] foreach (... ... in ...) ... | | | LoopUnrolling.cs:73:31:73:33 | access to local variable arg | LoopUnrolling.cs:73:13:73:34 | call to method WriteLine | | -| LoopUnrolling.cs:76:10:76:11 | enter M9 | LoopUnrolling.cs:77:5:83:5 | {...} | | -| LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | LoopUnrolling.cs:76:10:76:11 | exit M9 | | +| LoopUnrolling.cs:76:10:76:11 | Entry | LoopUnrolling.cs:77:5:83:5 | {...} | | +| LoopUnrolling.cs:76:10:76:11 | Normal Exit | LoopUnrolling.cs:76:10:76:11 | Exit | | +| LoopUnrolling.cs:77:5:83:5 | After {...} | LoopUnrolling.cs:76:10:76:11 | Normal Exit | | | LoopUnrolling.cs:77:5:83:5 | {...} | LoopUnrolling.cs:78:9:78:34 | ... ...; | | -| LoopUnrolling.cs:78:9:78:34 | ... ...; | LoopUnrolling.cs:78:29:78:29 | 2 | | -| LoopUnrolling.cs:78:13:78:33 | String[,] xs = ... | LoopUnrolling.cs:79:27:79:28 | access to local variable xs | | -| LoopUnrolling.cs:78:18:78:33 | array creation of type String[,] | LoopUnrolling.cs:78:13:78:33 | String[,] xs = ... | | +| LoopUnrolling.cs:78:9:78:34 | ... ...; | LoopUnrolling.cs:78:13:78:33 | Before String[,] xs = ... | | +| LoopUnrolling.cs:78:9:78:34 | After ... ...; | LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | | +| LoopUnrolling.cs:78:13:78:14 | access to local variable xs | LoopUnrolling.cs:78:18:78:33 | Before array creation of type String[,] | | +| LoopUnrolling.cs:78:13:78:33 | After String[,] xs = ... | LoopUnrolling.cs:78:9:78:34 | After ... ...; | | +| LoopUnrolling.cs:78:13:78:33 | Before String[,] xs = ... | LoopUnrolling.cs:78:13:78:14 | access to local variable xs | | +| LoopUnrolling.cs:78:13:78:33 | String[,] xs = ... | LoopUnrolling.cs:78:13:78:33 | After String[,] xs = ... | | +| LoopUnrolling.cs:78:18:78:33 | After array creation of type String[,] | LoopUnrolling.cs:78:13:78:33 | String[,] xs = ... | | +| LoopUnrolling.cs:78:18:78:33 | Before array creation of type String[,] | LoopUnrolling.cs:78:29:78:29 | 2 | | +| LoopUnrolling.cs:78:18:78:33 | array creation of type String[,] | LoopUnrolling.cs:78:18:78:33 | After array creation of type String[,] | | | LoopUnrolling.cs:78:29:78:29 | 2 | LoopUnrolling.cs:78:32:78:32 | 0 | | | LoopUnrolling.cs:78:32:78:32 | 0 | LoopUnrolling.cs:78:18:78:33 | array creation of type String[,] | | -| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:76:10:76:11 | exit M9 (normal) | empty | -| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:79:22:79:22 | String x | non-empty | +| LoopUnrolling.cs:79:9:82:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:77:5:83:5 | After {...} | | +| LoopUnrolling.cs:79:9:82:9 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:79:9:82:9 | After foreach (... ... in ...) ... | | +| LoopUnrolling.cs:79:9:82:9 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:79:22:79:22 | String x | | +| LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:79:27:79:28 | access to local variable xs | | | LoopUnrolling.cs:79:22:79:22 | String x | LoopUnrolling.cs:80:9:82:9 | {...} | | -| LoopUnrolling.cs:79:27:79:28 | access to local variable xs | LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | | +| LoopUnrolling.cs:79:27:79:28 | After access to local variable xs [empty] | LoopUnrolling.cs:79:9:82:9 | After foreach (... ... in ...) ... | | +| LoopUnrolling.cs:79:27:79:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:79:22:79:22 | String x | | +| LoopUnrolling.cs:79:27:79:28 | access to local variable xs | LoopUnrolling.cs:79:27:79:28 | After access to local variable xs [empty] | empty | +| LoopUnrolling.cs:79:27:79:28 | access to local variable xs | LoopUnrolling.cs:79:27:79:28 | After access to local variable xs [non-empty] | non-empty | +| LoopUnrolling.cs:80:9:82:9 | After {...} | LoopUnrolling.cs:79:9:82:9 | [LoopHeader] foreach (... ... in ...) ... | | | LoopUnrolling.cs:80:9:82:9 | {...} | LoopUnrolling.cs:81:13:81:33 | ...; | | -| LoopUnrolling.cs:81:13:81:32 | call to method WriteLine | LoopUnrolling.cs:79:9:82:9 | foreach (... ... in ...) ... | | -| LoopUnrolling.cs:81:13:81:33 | ...; | LoopUnrolling.cs:81:31:81:31 | access to local variable x | | +| LoopUnrolling.cs:81:13:81:32 | After call to method WriteLine | LoopUnrolling.cs:81:13:81:33 | After ...; | | +| LoopUnrolling.cs:81:13:81:32 | Before call to method WriteLine | LoopUnrolling.cs:81:31:81:31 | access to local variable x | | +| LoopUnrolling.cs:81:13:81:32 | call to method WriteLine | LoopUnrolling.cs:81:13:81:32 | After call to method WriteLine | | +| LoopUnrolling.cs:81:13:81:33 | ...; | LoopUnrolling.cs:81:13:81:32 | Before call to method WriteLine | | +| LoopUnrolling.cs:81:13:81:33 | After ...; | LoopUnrolling.cs:80:9:82:9 | After {...} | | | LoopUnrolling.cs:81:31:81:31 | access to local variable x | LoopUnrolling.cs:81:13:81:32 | call to method WriteLine | | -| LoopUnrolling.cs:85:10:85:12 | enter M10 | LoopUnrolling.cs:86:5:92:5 | {...} | | -| LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | LoopUnrolling.cs:85:10:85:12 | exit M10 | | +| LoopUnrolling.cs:85:10:85:12 | Entry | LoopUnrolling.cs:86:5:92:5 | {...} | | +| LoopUnrolling.cs:85:10:85:12 | Normal Exit | LoopUnrolling.cs:85:10:85:12 | Exit | | +| LoopUnrolling.cs:86:5:92:5 | After {...} | LoopUnrolling.cs:85:10:85:12 | Normal Exit | | | LoopUnrolling.cs:86:5:92:5 | {...} | LoopUnrolling.cs:87:9:87:34 | ... ...; | | -| LoopUnrolling.cs:87:9:87:34 | ... ...; | LoopUnrolling.cs:87:29:87:29 | 0 | | -| LoopUnrolling.cs:87:13:87:33 | String[,] xs = ... | LoopUnrolling.cs:88:27:88:28 | access to local variable xs | | -| LoopUnrolling.cs:87:18:87:33 | array creation of type String[,] | LoopUnrolling.cs:87:13:87:33 | String[,] xs = ... | | +| LoopUnrolling.cs:87:9:87:34 | ... ...; | LoopUnrolling.cs:87:13:87:33 | Before String[,] xs = ... | | +| LoopUnrolling.cs:87:9:87:34 | After ... ...; | LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | | +| LoopUnrolling.cs:87:13:87:14 | access to local variable xs | LoopUnrolling.cs:87:18:87:33 | Before array creation of type String[,] | | +| LoopUnrolling.cs:87:13:87:33 | After String[,] xs = ... | LoopUnrolling.cs:87:9:87:34 | After ... ...; | | +| LoopUnrolling.cs:87:13:87:33 | Before String[,] xs = ... | LoopUnrolling.cs:87:13:87:14 | access to local variable xs | | +| LoopUnrolling.cs:87:13:87:33 | String[,] xs = ... | LoopUnrolling.cs:87:13:87:33 | After String[,] xs = ... | | +| LoopUnrolling.cs:87:18:87:33 | After array creation of type String[,] | LoopUnrolling.cs:87:13:87:33 | String[,] xs = ... | | +| LoopUnrolling.cs:87:18:87:33 | Before array creation of type String[,] | LoopUnrolling.cs:87:29:87:29 | 0 | | +| LoopUnrolling.cs:87:18:87:33 | array creation of type String[,] | LoopUnrolling.cs:87:18:87:33 | After array creation of type String[,] | | | LoopUnrolling.cs:87:29:87:29 | 0 | LoopUnrolling.cs:87:32:87:32 | 2 | | | LoopUnrolling.cs:87:32:87:32 | 2 | LoopUnrolling.cs:87:18:87:33 | array creation of type String[,] | | -| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:85:10:85:12 | exit M10 (normal) | empty | -| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:88:22:88:22 | String x | non-empty | +| LoopUnrolling.cs:88:9:91:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:86:5:92:5 | After {...} | | +| LoopUnrolling.cs:88:9:91:9 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:88:9:91:9 | After foreach (... ... in ...) ... | | +| LoopUnrolling.cs:88:9:91:9 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:88:22:88:22 | String x | | +| LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:88:27:88:28 | access to local variable xs | | | LoopUnrolling.cs:88:22:88:22 | String x | LoopUnrolling.cs:89:9:91:9 | {...} | | -| LoopUnrolling.cs:88:27:88:28 | access to local variable xs | LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | | +| LoopUnrolling.cs:88:27:88:28 | After access to local variable xs [empty] | LoopUnrolling.cs:88:9:91:9 | After foreach (... ... in ...) ... | | +| LoopUnrolling.cs:88:27:88:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:88:22:88:22 | String x | | +| LoopUnrolling.cs:88:27:88:28 | access to local variable xs | LoopUnrolling.cs:88:27:88:28 | After access to local variable xs [empty] | empty | +| LoopUnrolling.cs:88:27:88:28 | access to local variable xs | LoopUnrolling.cs:88:27:88:28 | After access to local variable xs [non-empty] | non-empty | +| LoopUnrolling.cs:89:9:91:9 | After {...} | LoopUnrolling.cs:88:9:91:9 | [LoopHeader] foreach (... ... in ...) ... | | | LoopUnrolling.cs:89:9:91:9 | {...} | LoopUnrolling.cs:90:13:90:33 | ...; | | -| LoopUnrolling.cs:90:13:90:32 | call to method WriteLine | LoopUnrolling.cs:88:9:91:9 | foreach (... ... in ...) ... | | -| LoopUnrolling.cs:90:13:90:33 | ...; | LoopUnrolling.cs:90:31:90:31 | access to local variable x | | +| LoopUnrolling.cs:90:13:90:32 | After call to method WriteLine | LoopUnrolling.cs:90:13:90:33 | After ...; | | +| LoopUnrolling.cs:90:13:90:32 | Before call to method WriteLine | LoopUnrolling.cs:90:31:90:31 | access to local variable x | | +| LoopUnrolling.cs:90:13:90:32 | call to method WriteLine | LoopUnrolling.cs:90:13:90:32 | After call to method WriteLine | | +| LoopUnrolling.cs:90:13:90:33 | ...; | LoopUnrolling.cs:90:13:90:32 | Before call to method WriteLine | | +| LoopUnrolling.cs:90:13:90:33 | After ...; | LoopUnrolling.cs:89:9:91:9 | After {...} | | | LoopUnrolling.cs:90:31:90:31 | access to local variable x | LoopUnrolling.cs:90:13:90:32 | call to method WriteLine | | -| LoopUnrolling.cs:94:10:94:12 | enter M11 | LoopUnrolling.cs:95:5:101:5 | {...} | | -| LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | LoopUnrolling.cs:94:10:94:12 | exit M11 | | +| LoopUnrolling.cs:94:10:94:12 | Entry | LoopUnrolling.cs:95:5:101:5 | {...} | | +| LoopUnrolling.cs:94:10:94:12 | Normal Exit | LoopUnrolling.cs:94:10:94:12 | Exit | | +| LoopUnrolling.cs:95:5:101:5 | After {...} | LoopUnrolling.cs:94:10:94:12 | Normal Exit | | | LoopUnrolling.cs:95:5:101:5 | {...} | LoopUnrolling.cs:96:9:96:34 | ... ...; | | -| LoopUnrolling.cs:96:9:96:34 | ... ...; | LoopUnrolling.cs:96:29:96:29 | 2 | | -| LoopUnrolling.cs:96:13:96:33 | String[,] xs = ... | LoopUnrolling.cs:97:27:97:28 | access to local variable xs | | -| LoopUnrolling.cs:96:18:96:33 | array creation of type String[,] | LoopUnrolling.cs:96:13:96:33 | String[,] xs = ... | | +| LoopUnrolling.cs:96:9:96:34 | ... ...; | LoopUnrolling.cs:96:13:96:33 | Before String[,] xs = ... | | +| LoopUnrolling.cs:96:9:96:34 | After ... ...; | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | | +| LoopUnrolling.cs:96:13:96:14 | access to local variable xs | LoopUnrolling.cs:96:18:96:33 | Before array creation of type String[,] | | +| LoopUnrolling.cs:96:13:96:33 | After String[,] xs = ... | LoopUnrolling.cs:96:9:96:34 | After ... ...; | | +| LoopUnrolling.cs:96:13:96:33 | Before String[,] xs = ... | LoopUnrolling.cs:96:13:96:14 | access to local variable xs | | +| LoopUnrolling.cs:96:13:96:33 | String[,] xs = ... | LoopUnrolling.cs:96:13:96:33 | After String[,] xs = ... | | +| LoopUnrolling.cs:96:18:96:33 | After array creation of type String[,] | LoopUnrolling.cs:96:13:96:33 | String[,] xs = ... | | +| LoopUnrolling.cs:96:18:96:33 | Before array creation of type String[,] | LoopUnrolling.cs:96:29:96:29 | 2 | | +| LoopUnrolling.cs:96:18:96:33 | array creation of type String[,] | LoopUnrolling.cs:96:18:96:33 | After array creation of type String[,] | | | LoopUnrolling.cs:96:29:96:29 | 2 | LoopUnrolling.cs:96:32:96:32 | 2 | | | LoopUnrolling.cs:96:32:96:32 | 2 | LoopUnrolling.cs:96:18:96:33 | array creation of type String[,] | | -| LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:94:10:94:12 | exit M11 (normal) | empty | -| LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:97:22:97:22 | String x | non-empty | +| LoopUnrolling.cs:97:9:100:9 | After foreach (... ... in ...) ... | LoopUnrolling.cs:95:5:101:5 | After {...} | | +| LoopUnrolling.cs:97:9:100:9 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:97:9:100:9 | After foreach (... ... in ...) ... | | +| LoopUnrolling.cs:97:9:100:9 | [LoopHeader] foreach (... ... in ...) ... | LoopUnrolling.cs:97:22:97:22 | String x | | +| LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | LoopUnrolling.cs:97:27:97:28 | access to local variable xs | | | LoopUnrolling.cs:97:22:97:22 | String x | LoopUnrolling.cs:98:9:100:9 | {...} | | -| LoopUnrolling.cs:97:27:97:28 | access to local variable xs | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | | +| LoopUnrolling.cs:97:27:97:28 | After access to local variable xs [empty] | LoopUnrolling.cs:97:9:100:9 | After foreach (... ... in ...) ... | | +| LoopUnrolling.cs:97:27:97:28 | After access to local variable xs [non-empty] | LoopUnrolling.cs:97:22:97:22 | String x | | +| LoopUnrolling.cs:97:27:97:28 | access to local variable xs | LoopUnrolling.cs:97:27:97:28 | After access to local variable xs [empty] | empty | +| LoopUnrolling.cs:97:27:97:28 | access to local variable xs | LoopUnrolling.cs:97:27:97:28 | After access to local variable xs [non-empty] | non-empty | +| LoopUnrolling.cs:98:9:100:9 | After {...} | LoopUnrolling.cs:97:9:100:9 | [LoopHeader] foreach (... ... in ...) ... | | | LoopUnrolling.cs:98:9:100:9 | {...} | LoopUnrolling.cs:99:13:99:33 | ...; | | -| LoopUnrolling.cs:99:13:99:32 | call to method WriteLine | LoopUnrolling.cs:97:9:100:9 | foreach (... ... in ...) ... | | -| LoopUnrolling.cs:99:13:99:33 | ...; | LoopUnrolling.cs:99:31:99:31 | access to local variable x | | +| LoopUnrolling.cs:99:13:99:32 | After call to method WriteLine | LoopUnrolling.cs:99:13:99:33 | After ...; | | +| LoopUnrolling.cs:99:13:99:32 | Before call to method WriteLine | LoopUnrolling.cs:99:31:99:31 | access to local variable x | | +| LoopUnrolling.cs:99:13:99:32 | call to method WriteLine | LoopUnrolling.cs:99:13:99:32 | After call to method WriteLine | | +| LoopUnrolling.cs:99:13:99:33 | ...; | LoopUnrolling.cs:99:13:99:32 | Before call to method WriteLine | | +| LoopUnrolling.cs:99:13:99:33 | After ...; | LoopUnrolling.cs:98:9:100:9 | After {...} | | | LoopUnrolling.cs:99:31:99:31 | access to local variable x | LoopUnrolling.cs:99:13:99:32 | call to method WriteLine | | -| MultiImplementationA.cs:4:7:4:8 | call to constructor Object | MultiImplementationA.cs:4:7:4:8 | {...} | | -| MultiImplementationA.cs:4:7:4:8 | call to method | MultiImplementationA.cs:4:7:4:8 | call to constructor Object | | -| MultiImplementationA.cs:4:7:4:8 | enter C1 | MultiImplementationA.cs:4:7:4:8 | this access | | -| MultiImplementationA.cs:4:7:4:8 | enter C1 | MultiImplementationB.cs:1:7:1:8 | this access | | -| MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | MultiImplementationA.cs:4:7:4:8 | exit C1 | | +| MultiImplementationA.cs:4:7:4:8 | After call to constructor Object | MultiImplementationA.cs:4:7:4:8 | {...} | | +| MultiImplementationA.cs:4:7:4:8 | After call to method | MultiImplementationA.cs:4:7:4:8 | Before call to constructor Object | | +| MultiImplementationA.cs:4:7:4:8 | Before call to constructor Object | MultiImplementationA.cs:4:7:4:8 | call to constructor Object | | +| MultiImplementationA.cs:4:7:4:8 | Before call to method | MultiImplementationA.cs:4:7:4:8 | this access | | +| MultiImplementationA.cs:4:7:4:8 | Entry | MultiImplementationA.cs:4:7:4:8 | Before call to method | | +| MultiImplementationA.cs:4:7:4:8 | Entry | MultiImplementationB.cs:1:7:1:8 | Before call to method | | +| MultiImplementationA.cs:4:7:4:8 | Normal Exit | MultiImplementationA.cs:4:7:4:8 | Exit | | +| MultiImplementationA.cs:4:7:4:8 | call to constructor Object | MultiImplementationA.cs:4:7:4:8 | After call to constructor Object | | +| MultiImplementationA.cs:4:7:4:8 | call to method | MultiImplementationA.cs:4:7:4:8 | After call to method | | | MultiImplementationA.cs:4:7:4:8 | this access | MultiImplementationA.cs:4:7:4:8 | call to method | | -| MultiImplementationA.cs:4:7:4:8 | {...} | MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | | -| MultiImplementationA.cs:6:22:6:31 | enter get_P1 | MultiImplementationA.cs:6:28:6:31 | null | | -| MultiImplementationA.cs:6:22:6:31 | enter get_P1 | MultiImplementationB.cs:3:22:3:22 | 0 | | -| MultiImplementationA.cs:6:22:6:31 | exit get_P1 (abnormal) | MultiImplementationA.cs:6:22:6:31 | exit get_P1 | | -| MultiImplementationA.cs:6:22:6:31 | exit get_P1 (normal) | MultiImplementationA.cs:6:22:6:31 | exit get_P1 | | -| MultiImplementationA.cs:6:22:6:31 | throw ... | MultiImplementationA.cs:6:22:6:31 | exit get_P1 (abnormal) | exception | +| MultiImplementationA.cs:4:7:4:8 | {...} | MultiImplementationA.cs:4:7:4:8 | Normal Exit | | +| MultiImplementationA.cs:6:22:6:31 | Before throw ... | MultiImplementationA.cs:6:28:6:31 | null | | +| MultiImplementationA.cs:6:22:6:31 | Entry | MultiImplementationA.cs:6:22:6:31 | Before throw ... | | +| MultiImplementationA.cs:6:22:6:31 | Entry | MultiImplementationB.cs:3:22:3:22 | 0 | | +| MultiImplementationA.cs:6:22:6:31 | Exceptional Exit | MultiImplementationA.cs:6:22:6:31 | Exit | | +| MultiImplementationA.cs:6:22:6:31 | Normal Exit | MultiImplementationA.cs:6:22:6:31 | Exit | | +| MultiImplementationA.cs:6:22:6:31 | throw ... | MultiImplementationA.cs:6:22:6:31 | Exceptional Exit | exception | | MultiImplementationA.cs:6:28:6:31 | null | MultiImplementationA.cs:6:22:6:31 | throw ... | | -| MultiImplementationA.cs:7:21:7:23 | enter get_P2 | MultiImplementationA.cs:7:25:7:39 | {...} | | -| MultiImplementationA.cs:7:21:7:23 | enter get_P2 | MultiImplementationB.cs:4:25:4:37 | {...} | | -| MultiImplementationA.cs:7:21:7:23 | exit get_P2 (abnormal) | MultiImplementationA.cs:7:21:7:23 | exit get_P2 | | -| MultiImplementationA.cs:7:21:7:23 | exit get_P2 (normal) | MultiImplementationA.cs:7:21:7:23 | exit get_P2 | | -| MultiImplementationA.cs:7:25:7:39 | {...} | MultiImplementationA.cs:7:33:7:36 | null | | -| MultiImplementationA.cs:7:27:7:37 | throw ...; | MultiImplementationA.cs:7:21:7:23 | exit get_P2 (abnormal) | exception | +| MultiImplementationA.cs:7:21:7:23 | Entry | MultiImplementationA.cs:7:25:7:39 | {...} | | +| MultiImplementationA.cs:7:21:7:23 | Entry | MultiImplementationB.cs:4:25:4:37 | {...} | | +| MultiImplementationA.cs:7:21:7:23 | Exceptional Exit | MultiImplementationA.cs:7:21:7:23 | Exit | | +| MultiImplementationA.cs:7:21:7:23 | Normal Exit | MultiImplementationA.cs:7:21:7:23 | Exit | | +| MultiImplementationA.cs:7:25:7:39 | {...} | MultiImplementationA.cs:7:27:7:37 | Before throw ...; | | +| MultiImplementationA.cs:7:27:7:37 | Before throw ...; | MultiImplementationA.cs:7:33:7:36 | null | | +| MultiImplementationA.cs:7:27:7:37 | throw ...; | MultiImplementationA.cs:7:21:7:23 | Exceptional Exit | exception | | MultiImplementationA.cs:7:33:7:36 | null | MultiImplementationA.cs:7:27:7:37 | throw ...; | | -| MultiImplementationA.cs:7:41:7:43 | enter set_P2 | MultiImplementationA.cs:7:45:7:59 | {...} | | -| MultiImplementationA.cs:7:41:7:43 | enter set_P2 | MultiImplementationB.cs:4:43:4:45 | {...} | | -| MultiImplementationA.cs:7:41:7:43 | exit set_P2 (abnormal) | MultiImplementationA.cs:7:41:7:43 | exit set_P2 | | -| MultiImplementationA.cs:7:41:7:43 | exit set_P2 (normal) | MultiImplementationA.cs:7:41:7:43 | exit set_P2 | | -| MultiImplementationA.cs:7:45:7:59 | {...} | MultiImplementationA.cs:7:53:7:56 | null | | -| MultiImplementationA.cs:7:47:7:57 | throw ...; | MultiImplementationA.cs:7:41:7:43 | exit set_P2 (abnormal) | exception | +| MultiImplementationA.cs:7:41:7:43 | Entry | MultiImplementationA.cs:7:41:7:43 | value | | +| MultiImplementationA.cs:7:41:7:43 | Exceptional Exit | MultiImplementationA.cs:7:41:7:43 | Exit | | +| MultiImplementationA.cs:7:41:7:43 | Normal Exit | MultiImplementationA.cs:7:41:7:43 | Exit | | +| MultiImplementationA.cs:7:41:7:43 | value | MultiImplementationA.cs:7:45:7:59 | {...} | | +| MultiImplementationA.cs:7:41:7:43 | value | MultiImplementationB.cs:4:43:4:45 | {...} | | +| MultiImplementationA.cs:7:45:7:59 | {...} | MultiImplementationA.cs:7:47:7:57 | Before throw ...; | | +| MultiImplementationA.cs:7:47:7:57 | Before throw ...; | MultiImplementationA.cs:7:53:7:56 | null | | +| MultiImplementationA.cs:7:47:7:57 | throw ...; | MultiImplementationA.cs:7:41:7:43 | Exceptional Exit | exception | | MultiImplementationA.cs:7:53:7:56 | null | MultiImplementationA.cs:7:47:7:57 | throw ...; | | -| MultiImplementationA.cs:8:16:8:16 | enter M | MultiImplementationA.cs:8:29:8:32 | null | | -| MultiImplementationA.cs:8:16:8:16 | enter M | MultiImplementationB.cs:5:23:5:23 | 2 | | -| MultiImplementationA.cs:8:16:8:16 | exit M (abnormal) | MultiImplementationA.cs:8:16:8:16 | exit M | | -| MultiImplementationA.cs:8:16:8:16 | exit M (normal) | MultiImplementationA.cs:8:16:8:16 | exit M | | -| MultiImplementationA.cs:8:23:8:32 | throw ... | MultiImplementationA.cs:8:16:8:16 | exit M (abnormal) | exception | +| MultiImplementationA.cs:8:16:8:16 | Entry | MultiImplementationA.cs:8:23:8:32 | Before throw ... | | +| MultiImplementationA.cs:8:16:8:16 | Entry | MultiImplementationB.cs:5:23:5:23 | 2 | | +| MultiImplementationA.cs:8:16:8:16 | Exceptional Exit | MultiImplementationA.cs:8:16:8:16 | Exit | | +| MultiImplementationA.cs:8:16:8:16 | Normal Exit | MultiImplementationA.cs:8:16:8:16 | Exit | | +| MultiImplementationA.cs:8:23:8:32 | Before throw ... | MultiImplementationA.cs:8:29:8:32 | null | | +| MultiImplementationA.cs:8:23:8:32 | throw ... | MultiImplementationA.cs:8:16:8:16 | Exceptional Exit | exception | | MultiImplementationA.cs:8:29:8:32 | null | MultiImplementationA.cs:8:23:8:32 | throw ... | | -| MultiImplementationA.cs:11:7:11:8 | enter | MultiImplementationA.cs:13:16:13:16 | this access | | -| MultiImplementationA.cs:11:7:11:8 | enter | MultiImplementationB.cs:11:16:11:16 | this access | | -| MultiImplementationA.cs:11:7:11:8 | exit (normal) | MultiImplementationA.cs:11:7:11:8 | exit | | -| MultiImplementationA.cs:13:16:13:16 | access to field F | MultiImplementationA.cs:13:16:13:20 | ... = ... | | -| MultiImplementationA.cs:13:16:13:16 | this access | MultiImplementationA.cs:13:20:13:20 | 0 | | -| MultiImplementationA.cs:13:16:13:20 | ... = ... | MultiImplementationA.cs:24:16:24:16 | this access | | -| MultiImplementationA.cs:13:20:13:20 | 0 | MultiImplementationA.cs:13:16:13:16 | access to field F | | -| MultiImplementationA.cs:14:31:14:31 | access to parameter i | MultiImplementationA.cs:14:31:14:31 | exit get_Item (normal) | | -| MultiImplementationA.cs:14:31:14:31 | enter get_Item | MultiImplementationA.cs:14:31:14:31 | access to parameter i | | -| MultiImplementationA.cs:14:31:14:31 | enter get_Item | MultiImplementationB.cs:12:37:12:40 | null | | -| MultiImplementationA.cs:14:31:14:31 | exit get_Item (abnormal) | MultiImplementationA.cs:14:31:14:31 | exit get_Item | | -| MultiImplementationA.cs:14:31:14:31 | exit get_Item (normal) | MultiImplementationA.cs:14:31:14:31 | exit get_Item | | -| MultiImplementationA.cs:15:36:15:38 | enter get_Item | MultiImplementationA.cs:15:40:15:52 | {...} | | -| MultiImplementationA.cs:15:36:15:38 | enter get_Item | MultiImplementationB.cs:13:40:13:54 | {...} | | -| MultiImplementationA.cs:15:36:15:38 | exit get_Item (abnormal) | MultiImplementationA.cs:15:36:15:38 | exit get_Item | | -| MultiImplementationA.cs:15:36:15:38 | exit get_Item (normal) | MultiImplementationA.cs:15:36:15:38 | exit get_Item | | -| MultiImplementationA.cs:15:40:15:52 | {...} | MultiImplementationA.cs:15:49:15:49 | access to parameter s | | -| MultiImplementationA.cs:15:42:15:50 | return ...; | MultiImplementationA.cs:15:36:15:38 | exit get_Item (normal) | return | +| MultiImplementationA.cs:11:7:11:8 | Entry | MultiImplementationA.cs:13:16:13:20 | Before ... = ... | | +| MultiImplementationA.cs:11:7:11:8 | Entry | MultiImplementationB.cs:11:16:11:20 | Before ... = ... | | +| MultiImplementationA.cs:11:7:11:8 | Normal Exit | MultiImplementationA.cs:11:7:11:8 | Exit | | +| MultiImplementationA.cs:13:16:13:16 | After access to field F | MultiImplementationA.cs:13:20:13:20 | 0 | | +| MultiImplementationA.cs:13:16:13:16 | Before access to field F | MultiImplementationA.cs:13:16:13:16 | this access | | +| MultiImplementationA.cs:13:16:13:16 | access to field F | MultiImplementationA.cs:13:16:13:16 | After access to field F | | +| MultiImplementationA.cs:13:16:13:16 | this access | MultiImplementationA.cs:13:16:13:16 | access to field F | | +| MultiImplementationA.cs:13:16:13:20 | ... = ... | MultiImplementationA.cs:13:16:13:20 | After ... = ... | | +| MultiImplementationA.cs:13:16:13:20 | After ... = ... | MultiImplementationA.cs:24:32:24:34 | Before ... = ... | | +| MultiImplementationA.cs:13:16:13:20 | Before ... = ... | MultiImplementationA.cs:13:16:13:16 | Before access to field F | | +| MultiImplementationA.cs:13:20:13:20 | 0 | MultiImplementationA.cs:13:16:13:20 | ... = ... | | +| MultiImplementationA.cs:14:25:14:25 | i | MultiImplementationA.cs:14:31:14:31 | access to parameter i | | +| MultiImplementationA.cs:14:25:14:25 | i | MultiImplementationB.cs:12:31:12:40 | Before throw ... | | +| MultiImplementationA.cs:14:31:14:31 | Entry | MultiImplementationA.cs:14:25:14:25 | i | | +| MultiImplementationA.cs:14:31:14:31 | Exceptional Exit | MultiImplementationA.cs:14:31:14:31 | Exit | | +| MultiImplementationA.cs:14:31:14:31 | Normal Exit | MultiImplementationA.cs:14:31:14:31 | Exit | | +| MultiImplementationA.cs:14:31:14:31 | access to parameter i | MultiImplementationA.cs:14:31:14:31 | Normal Exit | | +| MultiImplementationA.cs:15:31:15:31 | s | MultiImplementationA.cs:15:40:15:52 | {...} | | +| MultiImplementationA.cs:15:31:15:31 | s | MultiImplementationA.cs:15:54:15:56 | value | | +| MultiImplementationA.cs:15:31:15:31 | s | MultiImplementationB.cs:13:40:13:54 | {...} | | +| MultiImplementationA.cs:15:36:15:38 | Entry | MultiImplementationA.cs:15:31:15:31 | s | | +| MultiImplementationA.cs:15:36:15:38 | Exceptional Exit | MultiImplementationA.cs:15:36:15:38 | Exit | | +| MultiImplementationA.cs:15:36:15:38 | Normal Exit | MultiImplementationA.cs:15:36:15:38 | Exit | | +| MultiImplementationA.cs:15:40:15:52 | {...} | MultiImplementationA.cs:15:42:15:50 | Before return ...; | | +| MultiImplementationA.cs:15:42:15:50 | Before return ...; | MultiImplementationA.cs:15:49:15:49 | access to parameter s | | +| MultiImplementationA.cs:15:42:15:50 | return ...; | MultiImplementationA.cs:15:36:15:38 | Normal Exit | return | | MultiImplementationA.cs:15:49:15:49 | access to parameter s | MultiImplementationA.cs:15:42:15:50 | return ...; | | -| MultiImplementationA.cs:15:54:15:56 | enter set_Item | MultiImplementationA.cs:15:58:15:60 | {...} | | -| MultiImplementationA.cs:15:54:15:56 | enter set_Item | MultiImplementationB.cs:13:60:13:62 | {...} | | -| MultiImplementationA.cs:15:54:15:56 | exit set_Item (normal) | MultiImplementationA.cs:15:54:15:56 | exit set_Item | | -| MultiImplementationA.cs:15:58:15:60 | {...} | MultiImplementationA.cs:15:54:15:56 | exit set_Item (normal) | | -| MultiImplementationA.cs:16:17:16:18 | enter M1 | MultiImplementationA.cs:17:5:19:5 | {...} | | -| MultiImplementationA.cs:16:17:16:18 | enter M1 | MultiImplementationB.cs:15:5:17:5 | {...} | | -| MultiImplementationA.cs:16:17:16:18 | exit M1 (normal) | MultiImplementationA.cs:16:17:16:18 | exit M1 | | +| MultiImplementationA.cs:15:54:15:56 | Entry | MultiImplementationA.cs:15:31:15:31 | s | | +| MultiImplementationA.cs:15:54:15:56 | Normal Exit | MultiImplementationA.cs:15:54:15:56 | Exit | | +| MultiImplementationA.cs:15:54:15:56 | value | MultiImplementationA.cs:15:58:15:60 | {...} | | +| MultiImplementationA.cs:15:54:15:56 | value | MultiImplementationB.cs:13:60:13:62 | {...} | | +| MultiImplementationA.cs:15:58:15:60 | {...} | MultiImplementationA.cs:15:54:15:56 | Normal Exit | | +| MultiImplementationA.cs:16:17:16:18 | Entry | MultiImplementationA.cs:16:24:16:24 | i | | +| MultiImplementationA.cs:16:17:16:18 | Normal Exit | MultiImplementationA.cs:16:17:16:18 | Exit | | +| MultiImplementationA.cs:16:24:16:24 | i | MultiImplementationA.cs:17:5:19:5 | {...} | | +| MultiImplementationA.cs:16:24:16:24 | i | MultiImplementationB.cs:15:5:17:5 | {...} | | +| MultiImplementationA.cs:17:5:19:5 | After {...} | MultiImplementationA.cs:16:17:16:18 | Normal Exit | | | MultiImplementationA.cs:17:5:19:5 | {...} | MultiImplementationA.cs:18:9:18:22 | M2(...) | | -| MultiImplementationA.cs:18:9:18:22 | M2(...) | MultiImplementationA.cs:16:17:16:18 | exit M1 (normal) | | -| MultiImplementationA.cs:18:9:18:22 | enter M2 | MultiImplementationA.cs:18:21:18:21 | 0 | | -| MultiImplementationA.cs:18:9:18:22 | exit M2 (normal) | MultiImplementationA.cs:18:9:18:22 | exit M2 | | -| MultiImplementationA.cs:18:21:18:21 | 0 | MultiImplementationA.cs:18:9:18:22 | exit M2 (normal) | | -| MultiImplementationA.cs:20:12:20:13 | call to constructor Object | MultiImplementationA.cs:20:22:20:31 | {...} | | -| MultiImplementationA.cs:20:12:20:13 | call to method | MultiImplementationA.cs:20:12:20:13 | call to constructor Object | | -| MultiImplementationA.cs:20:12:20:13 | enter C2 | MultiImplementationA.cs:20:12:20:13 | this access | | -| MultiImplementationA.cs:20:12:20:13 | enter C2 | MultiImplementationB.cs:18:12:18:13 | this access | | -| MultiImplementationA.cs:20:12:20:13 | exit C2 (abnormal) | MultiImplementationA.cs:20:12:20:13 | exit C2 | | -| MultiImplementationA.cs:20:12:20:13 | exit C2 (normal) | MultiImplementationA.cs:20:12:20:13 | exit C2 | | +| MultiImplementationA.cs:18:9:18:22 | Entry | MultiImplementationA.cs:18:21:18:21 | 0 | | +| MultiImplementationA.cs:18:9:18:22 | M2(...) | MultiImplementationA.cs:17:5:19:5 | After {...} | | +| MultiImplementationA.cs:18:9:18:22 | Normal Exit | MultiImplementationA.cs:18:9:18:22 | Exit | | +| MultiImplementationA.cs:18:21:18:21 | 0 | MultiImplementationA.cs:18:9:18:22 | Normal Exit | | +| MultiImplementationA.cs:20:12:20:13 | After call to constructor Object | MultiImplementationA.cs:20:22:20:31 | {...} | | +| MultiImplementationA.cs:20:12:20:13 | After call to method | MultiImplementationA.cs:20:12:20:13 | Before call to constructor Object | | +| MultiImplementationA.cs:20:12:20:13 | Before call to constructor Object | MultiImplementationA.cs:20:12:20:13 | call to constructor Object | | +| MultiImplementationA.cs:20:12:20:13 | Before call to method | MultiImplementationA.cs:20:12:20:13 | this access | | +| MultiImplementationA.cs:20:12:20:13 | Entry | MultiImplementationA.cs:20:19:20:19 | i | | +| MultiImplementationA.cs:20:12:20:13 | Exceptional Exit | MultiImplementationA.cs:20:12:20:13 | Exit | | +| MultiImplementationA.cs:20:12:20:13 | Normal Exit | MultiImplementationA.cs:20:12:20:13 | Exit | | +| MultiImplementationA.cs:20:12:20:13 | call to constructor Object | MultiImplementationA.cs:20:12:20:13 | After call to constructor Object | | +| MultiImplementationA.cs:20:12:20:13 | call to method | MultiImplementationA.cs:20:12:20:13 | After call to method | | | MultiImplementationA.cs:20:12:20:13 | this access | MultiImplementationA.cs:20:12:20:13 | call to method | | +| MultiImplementationA.cs:20:19:20:19 | i | MultiImplementationA.cs:20:12:20:13 | Before call to method | | +| MultiImplementationA.cs:20:19:20:19 | i | MultiImplementationB.cs:18:12:18:13 | Before call to method | | +| MultiImplementationA.cs:20:22:20:31 | After {...} | MultiImplementationA.cs:20:12:20:13 | Normal Exit | | | MultiImplementationA.cs:20:22:20:31 | {...} | MultiImplementationA.cs:20:24:20:29 | ...; | | -| MultiImplementationA.cs:20:24:20:24 | access to field F | MultiImplementationA.cs:20:24:20:28 | ... = ... | | -| MultiImplementationA.cs:20:24:20:24 | this access | MultiImplementationA.cs:20:28:20:28 | access to parameter i | | -| MultiImplementationA.cs:20:24:20:28 | ... = ... | MultiImplementationA.cs:20:12:20:13 | exit C2 (normal) | | -| MultiImplementationA.cs:20:24:20:29 | ...; | MultiImplementationA.cs:20:24:20:24 | this access | | -| MultiImplementationA.cs:20:28:20:28 | access to parameter i | MultiImplementationA.cs:20:24:20:24 | access to field F | | -| MultiImplementationA.cs:21:12:21:13 | enter C2 | MultiImplementationA.cs:21:24:21:24 | 0 | | -| MultiImplementationA.cs:21:12:21:13 | enter C2 | MultiImplementationB.cs:19:24:19:24 | 1 | | -| MultiImplementationA.cs:21:12:21:13 | exit C2 (normal) | MultiImplementationA.cs:21:12:21:13 | exit C2 | | -| MultiImplementationA.cs:21:19:21:22 | call to constructor C2 | MultiImplementationA.cs:21:27:21:29 | {...} | | +| MultiImplementationA.cs:20:24:20:24 | After access to field F | MultiImplementationA.cs:20:28:20:28 | access to parameter i | | +| MultiImplementationA.cs:20:24:20:24 | Before access to field F | MultiImplementationA.cs:20:24:20:24 | this access | | +| MultiImplementationA.cs:20:24:20:24 | access to field F | MultiImplementationA.cs:20:24:20:24 | After access to field F | | +| MultiImplementationA.cs:20:24:20:24 | this access | MultiImplementationA.cs:20:24:20:24 | access to field F | | +| MultiImplementationA.cs:20:24:20:28 | ... = ... | MultiImplementationA.cs:20:24:20:28 | After ... = ... | | +| MultiImplementationA.cs:20:24:20:28 | After ... = ... | MultiImplementationA.cs:20:24:20:29 | After ...; | | +| MultiImplementationA.cs:20:24:20:28 | Before ... = ... | MultiImplementationA.cs:20:24:20:24 | Before access to field F | | +| MultiImplementationA.cs:20:24:20:29 | ...; | MultiImplementationA.cs:20:24:20:28 | Before ... = ... | | +| MultiImplementationA.cs:20:24:20:29 | After ...; | MultiImplementationA.cs:20:22:20:31 | After {...} | | +| MultiImplementationA.cs:20:28:20:28 | access to parameter i | MultiImplementationA.cs:20:24:20:28 | ... = ... | | +| MultiImplementationA.cs:21:12:21:13 | Entry | MultiImplementationA.cs:21:19:21:22 | Before call to constructor C2 | | +| MultiImplementationA.cs:21:12:21:13 | Entry | MultiImplementationB.cs:19:19:19:22 | Before call to constructor C2 | | +| MultiImplementationA.cs:21:12:21:13 | Normal Exit | MultiImplementationA.cs:21:12:21:13 | Exit | | +| MultiImplementationA.cs:21:19:21:22 | After call to constructor C2 | MultiImplementationA.cs:21:27:21:29 | {...} | | +| MultiImplementationA.cs:21:19:21:22 | Before call to constructor C2 | MultiImplementationA.cs:21:24:21:24 | 0 | | +| MultiImplementationA.cs:21:19:21:22 | call to constructor C2 | MultiImplementationA.cs:21:19:21:22 | After call to constructor C2 | | | MultiImplementationA.cs:21:24:21:24 | 0 | MultiImplementationA.cs:21:19:21:22 | call to constructor C2 | | -| MultiImplementationA.cs:21:27:21:29 | {...} | MultiImplementationA.cs:21:12:21:13 | exit C2 (normal) | | -| MultiImplementationA.cs:22:6:22:7 | enter ~C2 | MultiImplementationA.cs:22:11:22:13 | {...} | | -| MultiImplementationA.cs:22:6:22:7 | enter ~C2 | MultiImplementationB.cs:20:11:20:25 | {...} | | -| MultiImplementationA.cs:22:6:22:7 | exit ~C2 (abnormal) | MultiImplementationA.cs:22:6:22:7 | exit ~C2 | | -| MultiImplementationA.cs:22:6:22:7 | exit ~C2 (normal) | MultiImplementationA.cs:22:6:22:7 | exit ~C2 | | -| MultiImplementationA.cs:22:11:22:13 | {...} | MultiImplementationA.cs:22:6:22:7 | exit ~C2 (normal) | | -| MultiImplementationA.cs:23:28:23:35 | enter implicit conversion | MultiImplementationA.cs:23:50:23:53 | null | | -| MultiImplementationA.cs:23:28:23:35 | enter implicit conversion | MultiImplementationB.cs:21:56:21:59 | null | | -| MultiImplementationA.cs:23:28:23:35 | exit implicit conversion (abnormal) | MultiImplementationA.cs:23:28:23:35 | exit implicit conversion | | -| MultiImplementationA.cs:23:28:23:35 | exit implicit conversion (normal) | MultiImplementationA.cs:23:28:23:35 | exit implicit conversion | | -| MultiImplementationA.cs:23:50:23:53 | null | MultiImplementationA.cs:23:28:23:35 | exit implicit conversion (normal) | | -| MultiImplementationA.cs:24:16:24:16 | access to property P | MultiImplementationA.cs:24:32:24:34 | ... = ... | | -| MultiImplementationA.cs:24:16:24:16 | this access | MultiImplementationA.cs:24:34:24:34 | 0 | | -| MultiImplementationA.cs:24:32:24:34 | ... = ... | MultiImplementationA.cs:11:7:11:8 | exit (normal) | | -| MultiImplementationA.cs:24:34:24:34 | 0 | MultiImplementationA.cs:24:16:24:16 | access to property P | | -| MultiImplementationA.cs:28:7:28:8 | call to constructor Object | MultiImplementationA.cs:28:7:28:8 | {...} | | -| MultiImplementationA.cs:28:7:28:8 | call to method | MultiImplementationA.cs:28:7:28:8 | call to constructor Object | | -| MultiImplementationA.cs:28:7:28:8 | enter C3 | MultiImplementationA.cs:28:7:28:8 | this access | | -| MultiImplementationA.cs:28:7:28:8 | enter C3 | MultiImplementationB.cs:25:7:25:8 | this access | | -| MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | MultiImplementationA.cs:28:7:28:8 | exit C3 | | +| MultiImplementationA.cs:21:27:21:29 | {...} | MultiImplementationA.cs:21:12:21:13 | Normal Exit | | +| MultiImplementationA.cs:22:6:22:7 | Entry | MultiImplementationA.cs:22:11:22:13 | {...} | | +| MultiImplementationA.cs:22:6:22:7 | Entry | MultiImplementationB.cs:20:11:20:25 | {...} | | +| MultiImplementationA.cs:22:6:22:7 | Exceptional Exit | MultiImplementationA.cs:22:6:22:7 | Exit | | +| MultiImplementationA.cs:22:6:22:7 | Normal Exit | MultiImplementationA.cs:22:6:22:7 | Exit | | +| MultiImplementationA.cs:22:11:22:13 | {...} | MultiImplementationA.cs:22:6:22:7 | Normal Exit | | +| MultiImplementationA.cs:23:28:23:35 | Entry | MultiImplementationA.cs:23:44:23:44 | i | | +| MultiImplementationA.cs:23:28:23:35 | Exceptional Exit | MultiImplementationA.cs:23:28:23:35 | Exit | | +| MultiImplementationA.cs:23:28:23:35 | Normal Exit | MultiImplementationA.cs:23:28:23:35 | Exit | | +| MultiImplementationA.cs:23:44:23:44 | i | MultiImplementationA.cs:23:50:23:53 | null | | +| MultiImplementationA.cs:23:44:23:44 | i | MultiImplementationB.cs:21:50:21:59 | Before throw ... | | +| MultiImplementationA.cs:23:50:23:53 | null | MultiImplementationA.cs:23:28:23:35 | Normal Exit | | +| MultiImplementationA.cs:24:16:24:16 | After access to property P | MultiImplementationA.cs:24:34:24:34 | 0 | | +| MultiImplementationA.cs:24:16:24:16 | Before access to property P | MultiImplementationA.cs:24:16:24:16 | this access | | +| MultiImplementationA.cs:24:16:24:16 | access to property P | MultiImplementationA.cs:24:16:24:16 | After access to property P | | +| MultiImplementationA.cs:24:16:24:16 | this access | MultiImplementationA.cs:24:16:24:16 | access to property P | | +| MultiImplementationA.cs:24:32:24:34 | ... = ... | MultiImplementationA.cs:24:32:24:34 | After ... = ... | | +| MultiImplementationA.cs:24:32:24:34 | After ... = ... | MultiImplementationA.cs:11:7:11:8 | Normal Exit | | +| MultiImplementationA.cs:24:32:24:34 | Before ... = ... | MultiImplementationA.cs:24:16:24:16 | Before access to property P | | +| MultiImplementationA.cs:24:34:24:34 | 0 | MultiImplementationA.cs:24:32:24:34 | ... = ... | | +| MultiImplementationA.cs:28:7:28:8 | After call to constructor Object | MultiImplementationA.cs:28:7:28:8 | {...} | | +| MultiImplementationA.cs:28:7:28:8 | After call to method | MultiImplementationA.cs:28:7:28:8 | Before call to constructor Object | | +| MultiImplementationA.cs:28:7:28:8 | Before call to constructor Object | MultiImplementationA.cs:28:7:28:8 | call to constructor Object | | +| MultiImplementationA.cs:28:7:28:8 | Before call to method | MultiImplementationA.cs:28:7:28:8 | this access | | +| MultiImplementationA.cs:28:7:28:8 | Entry | MultiImplementationA.cs:28:7:28:8 | Before call to method | | +| MultiImplementationA.cs:28:7:28:8 | Entry | MultiImplementationB.cs:25:7:25:8 | Before call to method | | +| MultiImplementationA.cs:28:7:28:8 | Normal Exit | MultiImplementationA.cs:28:7:28:8 | Exit | | +| MultiImplementationA.cs:28:7:28:8 | call to constructor Object | MultiImplementationA.cs:28:7:28:8 | After call to constructor Object | | +| MultiImplementationA.cs:28:7:28:8 | call to method | MultiImplementationA.cs:28:7:28:8 | After call to method | | | MultiImplementationA.cs:28:7:28:8 | this access | MultiImplementationA.cs:28:7:28:8 | call to method | | -| MultiImplementationA.cs:28:7:28:8 | {...} | MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | | -| MultiImplementationA.cs:30:21:30:23 | enter get_P3 | MultiImplementationA.cs:30:34:30:37 | null | | -| MultiImplementationA.cs:30:21:30:23 | exit get_P3 (abnormal) | MultiImplementationA.cs:30:21:30:23 | exit get_P3 | | -| MultiImplementationA.cs:30:28:30:37 | throw ... | MultiImplementationA.cs:30:21:30:23 | exit get_P3 (abnormal) | exception | +| MultiImplementationA.cs:28:7:28:8 | {...} | MultiImplementationA.cs:28:7:28:8 | Normal Exit | | +| MultiImplementationA.cs:30:21:30:23 | Entry | MultiImplementationA.cs:30:28:30:37 | Before throw ... | | +| MultiImplementationA.cs:30:21:30:23 | Exceptional Exit | MultiImplementationA.cs:30:21:30:23 | Exit | | +| MultiImplementationA.cs:30:28:30:37 | Before throw ... | MultiImplementationA.cs:30:34:30:37 | null | | +| MultiImplementationA.cs:30:28:30:37 | throw ... | MultiImplementationA.cs:30:21:30:23 | Exceptional Exit | exception | | MultiImplementationA.cs:30:34:30:37 | null | MultiImplementationA.cs:30:28:30:37 | throw ... | | -| MultiImplementationA.cs:34:15:34:16 | call to constructor Object | MultiImplementationA.cs:34:15:34:16 | {...} | | -| MultiImplementationA.cs:34:15:34:16 | call to method | MultiImplementationA.cs:34:15:34:16 | call to constructor Object | | -| MultiImplementationA.cs:34:15:34:16 | enter C4 | MultiImplementationA.cs:34:15:34:16 | this access | | -| MultiImplementationA.cs:34:15:34:16 | enter C4 | MultiImplementationB.cs:30:15:30:16 | this access | | -| MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | MultiImplementationA.cs:34:15:34:16 | exit C4 | | +| MultiImplementationA.cs:34:15:34:16 | After call to constructor Object | MultiImplementationA.cs:34:15:34:16 | {...} | | +| MultiImplementationA.cs:34:15:34:16 | After call to method | MultiImplementationA.cs:34:15:34:16 | Before call to constructor Object | | +| MultiImplementationA.cs:34:15:34:16 | Before call to constructor Object | MultiImplementationA.cs:34:15:34:16 | call to constructor Object | | +| MultiImplementationA.cs:34:15:34:16 | Before call to method | MultiImplementationA.cs:34:15:34:16 | this access | | +| MultiImplementationA.cs:34:15:34:16 | Entry | MultiImplementationA.cs:34:15:34:16 | Before call to method | | +| MultiImplementationA.cs:34:15:34:16 | Entry | MultiImplementationB.cs:30:15:30:16 | Before call to method | | +| MultiImplementationA.cs:34:15:34:16 | Normal Exit | MultiImplementationA.cs:34:15:34:16 | Exit | | +| MultiImplementationA.cs:34:15:34:16 | call to constructor Object | MultiImplementationA.cs:34:15:34:16 | After call to constructor Object | | +| MultiImplementationA.cs:34:15:34:16 | call to method | MultiImplementationA.cs:34:15:34:16 | After call to method | | | MultiImplementationA.cs:34:15:34:16 | this access | MultiImplementationA.cs:34:15:34:16 | call to method | | -| MultiImplementationA.cs:34:15:34:16 | {...} | MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | | -| MultiImplementationA.cs:36:9:36:10 | enter M1 | MultiImplementationA.cs:36:14:36:28 | {...} | | -| MultiImplementationA.cs:36:9:36:10 | enter M1 | MultiImplementationB.cs:32:17:32:17 | 0 | | -| MultiImplementationA.cs:36:9:36:10 | exit M1 (abnormal) | MultiImplementationA.cs:36:9:36:10 | exit M1 | | -| MultiImplementationA.cs:36:9:36:10 | exit M1 (normal) | MultiImplementationA.cs:36:9:36:10 | exit M1 | | -| MultiImplementationA.cs:36:14:36:28 | {...} | MultiImplementationA.cs:36:22:36:25 | null | | -| MultiImplementationA.cs:36:16:36:26 | throw ...; | MultiImplementationA.cs:36:9:36:10 | exit M1 (abnormal) | exception | +| MultiImplementationA.cs:34:15:34:16 | {...} | MultiImplementationA.cs:34:15:34:16 | Normal Exit | | +| MultiImplementationA.cs:36:9:36:10 | Entry | MultiImplementationA.cs:36:14:36:28 | {...} | | +| MultiImplementationA.cs:36:9:36:10 | Entry | MultiImplementationB.cs:32:17:32:17 | 0 | | +| MultiImplementationA.cs:36:9:36:10 | Exceptional Exit | MultiImplementationA.cs:36:9:36:10 | Exit | | +| MultiImplementationA.cs:36:9:36:10 | Normal Exit | MultiImplementationA.cs:36:9:36:10 | Exit | | +| MultiImplementationA.cs:36:14:36:28 | {...} | MultiImplementationA.cs:36:16:36:26 | Before throw ...; | | +| MultiImplementationA.cs:36:16:36:26 | Before throw ...; | MultiImplementationA.cs:36:22:36:25 | null | | +| MultiImplementationA.cs:36:16:36:26 | throw ...; | MultiImplementationA.cs:36:9:36:10 | Exceptional Exit | exception | | MultiImplementationA.cs:36:22:36:25 | null | MultiImplementationA.cs:36:16:36:26 | throw ...; | | -| MultiImplementationA.cs:37:9:37:10 | enter M2 | MultiImplementationA.cs:37:14:37:28 | {...} | | -| MultiImplementationA.cs:37:9:37:10 | exit M2 (abnormal) | MultiImplementationA.cs:37:9:37:10 | exit M2 | | -| MultiImplementationA.cs:37:14:37:28 | {...} | MultiImplementationA.cs:37:22:37:25 | null | | -| MultiImplementationA.cs:37:16:37:26 | throw ...; | MultiImplementationA.cs:37:9:37:10 | exit M2 (abnormal) | exception | +| MultiImplementationA.cs:37:9:37:10 | Entry | MultiImplementationA.cs:37:14:37:28 | {...} | | +| MultiImplementationA.cs:37:9:37:10 | Exceptional Exit | MultiImplementationA.cs:37:9:37:10 | Exit | | +| MultiImplementationA.cs:37:14:37:28 | {...} | MultiImplementationA.cs:37:16:37:26 | Before throw ...; | | +| MultiImplementationA.cs:37:16:37:26 | Before throw ...; | MultiImplementationA.cs:37:22:37:25 | null | | +| MultiImplementationA.cs:37:16:37:26 | throw ...; | MultiImplementationA.cs:37:9:37:10 | Exceptional Exit | exception | | MultiImplementationA.cs:37:22:37:25 | null | MultiImplementationA.cs:37:16:37:26 | throw ...; | | -| MultiImplementationB.cs:1:7:1:8 | call to constructor Object | MultiImplementationB.cs:1:7:1:8 | {...} | | -| MultiImplementationB.cs:1:7:1:8 | call to method | MultiImplementationB.cs:1:7:1:8 | call to constructor Object | | +| MultiImplementationB.cs:1:7:1:8 | After call to constructor Object | MultiImplementationB.cs:1:7:1:8 | {...} | | +| MultiImplementationB.cs:1:7:1:8 | After call to method | MultiImplementationB.cs:1:7:1:8 | Before call to constructor Object | | +| MultiImplementationB.cs:1:7:1:8 | Before call to constructor Object | MultiImplementationB.cs:1:7:1:8 | call to constructor Object | | +| MultiImplementationB.cs:1:7:1:8 | Before call to method | MultiImplementationB.cs:1:7:1:8 | this access | | +| MultiImplementationB.cs:1:7:1:8 | call to constructor Object | MultiImplementationB.cs:1:7:1:8 | After call to constructor Object | | +| MultiImplementationB.cs:1:7:1:8 | call to method | MultiImplementationB.cs:1:7:1:8 | After call to method | | | MultiImplementationB.cs:1:7:1:8 | this access | MultiImplementationB.cs:1:7:1:8 | call to method | | -| MultiImplementationB.cs:1:7:1:8 | {...} | MultiImplementationA.cs:4:7:4:8 | exit C1 (normal) | | -| MultiImplementationB.cs:3:22:3:22 | 0 | MultiImplementationA.cs:6:22:6:31 | exit get_P1 (normal) | | -| MultiImplementationB.cs:4:25:4:37 | {...} | MultiImplementationB.cs:4:34:4:34 | 1 | | -| MultiImplementationB.cs:4:27:4:35 | return ...; | MultiImplementationA.cs:7:21:7:23 | exit get_P2 (normal) | return | +| MultiImplementationB.cs:1:7:1:8 | {...} | MultiImplementationA.cs:4:7:4:8 | Normal Exit | | +| MultiImplementationB.cs:3:22:3:22 | 0 | MultiImplementationA.cs:6:22:6:31 | Normal Exit | | +| MultiImplementationB.cs:4:25:4:37 | {...} | MultiImplementationB.cs:4:27:4:35 | Before return ...; | | +| MultiImplementationB.cs:4:27:4:35 | Before return ...; | MultiImplementationB.cs:4:34:4:34 | 1 | | +| MultiImplementationB.cs:4:27:4:35 | return ...; | MultiImplementationA.cs:7:21:7:23 | Normal Exit | return | | MultiImplementationB.cs:4:34:4:34 | 1 | MultiImplementationB.cs:4:27:4:35 | return ...; | | -| MultiImplementationB.cs:4:43:4:45 | {...} | MultiImplementationA.cs:7:41:7:43 | exit set_P2 (normal) | | -| MultiImplementationB.cs:5:23:5:23 | 2 | MultiImplementationA.cs:8:16:8:16 | exit M (normal) | | -| MultiImplementationB.cs:11:16:11:16 | access to field F | MultiImplementationB.cs:11:16:11:20 | ... = ... | | -| MultiImplementationB.cs:11:16:11:16 | this access | MultiImplementationB.cs:11:20:11:20 | 1 | | -| MultiImplementationB.cs:11:16:11:20 | ... = ... | MultiImplementationB.cs:22:16:22:16 | this access | | -| MultiImplementationB.cs:11:20:11:20 | 1 | MultiImplementationB.cs:11:16:11:16 | access to field F | | -| MultiImplementationB.cs:12:31:12:40 | throw ... | MultiImplementationA.cs:14:31:14:31 | exit get_Item (abnormal) | exception | +| MultiImplementationB.cs:4:43:4:45 | {...} | MultiImplementationA.cs:7:41:7:43 | Normal Exit | | +| MultiImplementationB.cs:5:23:5:23 | 2 | MultiImplementationA.cs:8:16:8:16 | Normal Exit | | +| MultiImplementationB.cs:11:16:11:16 | After access to field F | MultiImplementationB.cs:11:20:11:20 | 1 | | +| MultiImplementationB.cs:11:16:11:16 | Before access to field F | MultiImplementationB.cs:11:16:11:16 | this access | | +| MultiImplementationB.cs:11:16:11:16 | access to field F | MultiImplementationB.cs:11:16:11:16 | After access to field F | | +| MultiImplementationB.cs:11:16:11:16 | this access | MultiImplementationB.cs:11:16:11:16 | access to field F | | +| MultiImplementationB.cs:11:16:11:20 | ... = ... | MultiImplementationB.cs:11:16:11:20 | After ... = ... | | +| MultiImplementationB.cs:11:16:11:20 | After ... = ... | MultiImplementationB.cs:22:32:22:34 | Before ... = ... | | +| MultiImplementationB.cs:11:16:11:20 | Before ... = ... | MultiImplementationB.cs:11:16:11:16 | Before access to field F | | +| MultiImplementationB.cs:11:20:11:20 | 1 | MultiImplementationB.cs:11:16:11:20 | ... = ... | | +| MultiImplementationB.cs:12:31:12:40 | Before throw ... | MultiImplementationB.cs:12:37:12:40 | null | | +| MultiImplementationB.cs:12:31:12:40 | throw ... | MultiImplementationA.cs:14:31:14:31 | Exceptional Exit | exception | | MultiImplementationB.cs:12:37:12:40 | null | MultiImplementationB.cs:12:31:12:40 | throw ... | | -| MultiImplementationB.cs:13:40:13:54 | {...} | MultiImplementationB.cs:13:48:13:51 | null | | -| MultiImplementationB.cs:13:42:13:52 | throw ...; | MultiImplementationA.cs:15:36:15:38 | exit get_Item (abnormal) | exception | +| MultiImplementationB.cs:13:40:13:54 | {...} | MultiImplementationB.cs:13:42:13:52 | Before throw ...; | | +| MultiImplementationB.cs:13:42:13:52 | Before throw ...; | MultiImplementationB.cs:13:48:13:51 | null | | +| MultiImplementationB.cs:13:42:13:52 | throw ...; | MultiImplementationA.cs:15:36:15:38 | Exceptional Exit | exception | | MultiImplementationB.cs:13:48:13:51 | null | MultiImplementationB.cs:13:42:13:52 | throw ...; | | -| MultiImplementationB.cs:13:60:13:62 | {...} | MultiImplementationA.cs:15:54:15:56 | exit set_Item (normal) | | +| MultiImplementationB.cs:13:60:13:62 | {...} | MultiImplementationA.cs:15:54:15:56 | Normal Exit | | +| MultiImplementationB.cs:15:5:17:5 | After {...} | MultiImplementationA.cs:16:17:16:18 | Normal Exit | | | MultiImplementationB.cs:15:5:17:5 | {...} | MultiImplementationB.cs:16:9:16:31 | M2(...) | | -| MultiImplementationB.cs:16:9:16:31 | M2(...) | MultiImplementationA.cs:16:17:16:18 | exit M1 (normal) | | -| MultiImplementationB.cs:16:9:16:31 | enter M2 | MultiImplementationB.cs:16:27:16:30 | null | | -| MultiImplementationB.cs:16:9:16:31 | exit M2 (abnormal) | MultiImplementationB.cs:16:9:16:31 | exit M2 | | -| MultiImplementationB.cs:16:21:16:30 | throw ... | MultiImplementationB.cs:16:9:16:31 | exit M2 (abnormal) | exception | +| MultiImplementationB.cs:16:9:16:31 | Entry | MultiImplementationB.cs:16:21:16:30 | Before throw ... | | +| MultiImplementationB.cs:16:9:16:31 | Exceptional Exit | MultiImplementationB.cs:16:9:16:31 | Exit | | +| MultiImplementationB.cs:16:9:16:31 | M2(...) | MultiImplementationB.cs:15:5:17:5 | After {...} | | +| MultiImplementationB.cs:16:21:16:30 | Before throw ... | MultiImplementationB.cs:16:27:16:30 | null | | +| MultiImplementationB.cs:16:21:16:30 | throw ... | MultiImplementationB.cs:16:9:16:31 | Exceptional Exit | exception | | MultiImplementationB.cs:16:27:16:30 | null | MultiImplementationB.cs:16:21:16:30 | throw ... | | -| MultiImplementationB.cs:18:12:18:13 | call to constructor Object | MultiImplementationB.cs:18:22:18:36 | {...} | | -| MultiImplementationB.cs:18:12:18:13 | call to method | MultiImplementationB.cs:18:12:18:13 | call to constructor Object | | +| MultiImplementationB.cs:18:12:18:13 | After call to constructor Object | MultiImplementationB.cs:18:22:18:36 | {...} | | +| MultiImplementationB.cs:18:12:18:13 | After call to method | MultiImplementationB.cs:18:12:18:13 | Before call to constructor Object | | +| MultiImplementationB.cs:18:12:18:13 | Before call to constructor Object | MultiImplementationB.cs:18:12:18:13 | call to constructor Object | | +| MultiImplementationB.cs:18:12:18:13 | Before call to method | MultiImplementationB.cs:18:12:18:13 | this access | | +| MultiImplementationB.cs:18:12:18:13 | call to constructor Object | MultiImplementationB.cs:18:12:18:13 | After call to constructor Object | | +| MultiImplementationB.cs:18:12:18:13 | call to method | MultiImplementationB.cs:18:12:18:13 | After call to method | | | MultiImplementationB.cs:18:12:18:13 | this access | MultiImplementationB.cs:18:12:18:13 | call to method | | -| MultiImplementationB.cs:18:22:18:36 | {...} | MultiImplementationB.cs:18:30:18:33 | null | | -| MultiImplementationB.cs:18:24:18:34 | throw ...; | MultiImplementationA.cs:20:12:20:13 | exit C2 (abnormal) | exception | +| MultiImplementationB.cs:18:22:18:36 | {...} | MultiImplementationB.cs:18:24:18:34 | Before throw ...; | | +| MultiImplementationB.cs:18:24:18:34 | Before throw ...; | MultiImplementationB.cs:18:30:18:33 | null | | +| MultiImplementationB.cs:18:24:18:34 | throw ...; | MultiImplementationA.cs:20:12:20:13 | Exceptional Exit | exception | | MultiImplementationB.cs:18:30:18:33 | null | MultiImplementationB.cs:18:24:18:34 | throw ...; | | -| MultiImplementationB.cs:19:19:19:22 | call to constructor C2 | MultiImplementationB.cs:19:27:19:29 | {...} | | +| MultiImplementationB.cs:19:19:19:22 | After call to constructor C2 | MultiImplementationB.cs:19:27:19:29 | {...} | | +| MultiImplementationB.cs:19:19:19:22 | Before call to constructor C2 | MultiImplementationB.cs:19:24:19:24 | 1 | | +| MultiImplementationB.cs:19:19:19:22 | call to constructor C2 | MultiImplementationB.cs:19:19:19:22 | After call to constructor C2 | | | MultiImplementationB.cs:19:24:19:24 | 1 | MultiImplementationB.cs:19:19:19:22 | call to constructor C2 | | -| MultiImplementationB.cs:19:27:19:29 | {...} | MultiImplementationA.cs:21:12:21:13 | exit C2 (normal) | | -| MultiImplementationB.cs:20:11:20:25 | {...} | MultiImplementationB.cs:20:19:20:22 | null | | -| MultiImplementationB.cs:20:13:20:23 | throw ...; | MultiImplementationA.cs:22:6:22:7 | exit ~C2 (abnormal) | exception | +| MultiImplementationB.cs:19:27:19:29 | {...} | MultiImplementationA.cs:21:12:21:13 | Normal Exit | | +| MultiImplementationB.cs:20:11:20:25 | {...} | MultiImplementationB.cs:20:13:20:23 | Before throw ...; | | +| MultiImplementationB.cs:20:13:20:23 | Before throw ...; | MultiImplementationB.cs:20:19:20:22 | null | | +| MultiImplementationB.cs:20:13:20:23 | throw ...; | MultiImplementationA.cs:22:6:22:7 | Exceptional Exit | exception | | MultiImplementationB.cs:20:19:20:22 | null | MultiImplementationB.cs:20:13:20:23 | throw ...; | | -| MultiImplementationB.cs:21:50:21:59 | throw ... | MultiImplementationA.cs:23:28:23:35 | exit implicit conversion (abnormal) | exception | +| MultiImplementationB.cs:21:50:21:59 | Before throw ... | MultiImplementationB.cs:21:56:21:59 | null | | +| MultiImplementationB.cs:21:50:21:59 | throw ... | MultiImplementationA.cs:23:28:23:35 | Exceptional Exit | exception | | MultiImplementationB.cs:21:56:21:59 | null | MultiImplementationB.cs:21:50:21:59 | throw ... | | -| MultiImplementationB.cs:22:16:22:16 | access to property P | MultiImplementationB.cs:22:32:22:34 | ... = ... | | -| MultiImplementationB.cs:22:16:22:16 | this access | MultiImplementationB.cs:22:34:22:34 | 1 | | -| MultiImplementationB.cs:22:32:22:34 | ... = ... | MultiImplementationA.cs:11:7:11:8 | exit (normal) | | -| MultiImplementationB.cs:22:34:22:34 | 1 | MultiImplementationB.cs:22:16:22:16 | access to property P | | -| MultiImplementationB.cs:25:7:25:8 | call to constructor Object | MultiImplementationB.cs:25:7:25:8 | {...} | | -| MultiImplementationB.cs:25:7:25:8 | call to method | MultiImplementationB.cs:25:7:25:8 | call to constructor Object | | +| MultiImplementationB.cs:22:16:22:16 | After access to property P | MultiImplementationB.cs:22:34:22:34 | 1 | | +| MultiImplementationB.cs:22:16:22:16 | Before access to property P | MultiImplementationB.cs:22:16:22:16 | this access | | +| MultiImplementationB.cs:22:16:22:16 | access to property P | MultiImplementationB.cs:22:16:22:16 | After access to property P | | +| MultiImplementationB.cs:22:16:22:16 | this access | MultiImplementationB.cs:22:16:22:16 | access to property P | | +| MultiImplementationB.cs:22:32:22:34 | ... = ... | MultiImplementationB.cs:22:32:22:34 | After ... = ... | | +| MultiImplementationB.cs:22:32:22:34 | After ... = ... | MultiImplementationA.cs:11:7:11:8 | Normal Exit | | +| MultiImplementationB.cs:22:32:22:34 | Before ... = ... | MultiImplementationB.cs:22:16:22:16 | Before access to property P | | +| MultiImplementationB.cs:22:34:22:34 | 1 | MultiImplementationB.cs:22:32:22:34 | ... = ... | | +| MultiImplementationB.cs:25:7:25:8 | After call to constructor Object | MultiImplementationB.cs:25:7:25:8 | {...} | | +| MultiImplementationB.cs:25:7:25:8 | After call to method | MultiImplementationB.cs:25:7:25:8 | Before call to constructor Object | | +| MultiImplementationB.cs:25:7:25:8 | Before call to constructor Object | MultiImplementationB.cs:25:7:25:8 | call to constructor Object | | +| MultiImplementationB.cs:25:7:25:8 | Before call to method | MultiImplementationB.cs:25:7:25:8 | this access | | +| MultiImplementationB.cs:25:7:25:8 | call to constructor Object | MultiImplementationB.cs:25:7:25:8 | After call to constructor Object | | +| MultiImplementationB.cs:25:7:25:8 | call to method | MultiImplementationB.cs:25:7:25:8 | After call to method | | | MultiImplementationB.cs:25:7:25:8 | this access | MultiImplementationB.cs:25:7:25:8 | call to method | | -| MultiImplementationB.cs:25:7:25:8 | {...} | MultiImplementationA.cs:28:7:28:8 | exit C3 (normal) | | -| MultiImplementationB.cs:30:15:30:16 | call to constructor Object | MultiImplementationB.cs:30:15:30:16 | {...} | | -| MultiImplementationB.cs:30:15:30:16 | call to method | MultiImplementationB.cs:30:15:30:16 | call to constructor Object | | +| MultiImplementationB.cs:25:7:25:8 | {...} | MultiImplementationA.cs:28:7:28:8 | Normal Exit | | +| MultiImplementationB.cs:30:15:30:16 | After call to constructor Object | MultiImplementationB.cs:30:15:30:16 | {...} | | +| MultiImplementationB.cs:30:15:30:16 | After call to method | MultiImplementationB.cs:30:15:30:16 | Before call to constructor Object | | +| MultiImplementationB.cs:30:15:30:16 | Before call to constructor Object | MultiImplementationB.cs:30:15:30:16 | call to constructor Object | | +| MultiImplementationB.cs:30:15:30:16 | Before call to method | MultiImplementationB.cs:30:15:30:16 | this access | | +| MultiImplementationB.cs:30:15:30:16 | call to constructor Object | MultiImplementationB.cs:30:15:30:16 | After call to constructor Object | | +| MultiImplementationB.cs:30:15:30:16 | call to method | MultiImplementationB.cs:30:15:30:16 | After call to method | | | MultiImplementationB.cs:30:15:30:16 | this access | MultiImplementationB.cs:30:15:30:16 | call to method | | -| MultiImplementationB.cs:30:15:30:16 | {...} | MultiImplementationA.cs:34:15:34:16 | exit C4 (normal) | | -| MultiImplementationB.cs:32:17:32:17 | 0 | MultiImplementationA.cs:36:9:36:10 | exit M1 (normal) | | -| NullCoalescing.cs:1:7:1:20 | call to constructor Object | NullCoalescing.cs:1:7:1:20 | {...} | | -| NullCoalescing.cs:1:7:1:20 | call to method | NullCoalescing.cs:1:7:1:20 | call to constructor Object | | -| NullCoalescing.cs:1:7:1:20 | enter NullCoalescing | NullCoalescing.cs:1:7:1:20 | this access | | -| NullCoalescing.cs:1:7:1:20 | exit NullCoalescing (normal) | NullCoalescing.cs:1:7:1:20 | exit NullCoalescing | | +| MultiImplementationB.cs:30:15:30:16 | {...} | MultiImplementationA.cs:34:15:34:16 | Normal Exit | | +| MultiImplementationB.cs:32:17:32:17 | 0 | MultiImplementationA.cs:36:9:36:10 | Normal Exit | | +| NullCoalescing.cs:1:7:1:20 | After call to constructor Object | NullCoalescing.cs:1:7:1:20 | {...} | | +| NullCoalescing.cs:1:7:1:20 | After call to method | NullCoalescing.cs:1:7:1:20 | Before call to constructor Object | | +| NullCoalescing.cs:1:7:1:20 | Before call to constructor Object | NullCoalescing.cs:1:7:1:20 | call to constructor Object | | +| NullCoalescing.cs:1:7:1:20 | Before call to method | NullCoalescing.cs:1:7:1:20 | this access | | +| NullCoalescing.cs:1:7:1:20 | Entry | NullCoalescing.cs:1:7:1:20 | Before call to method | | +| NullCoalescing.cs:1:7:1:20 | Normal Exit | NullCoalescing.cs:1:7:1:20 | Exit | | +| NullCoalescing.cs:1:7:1:20 | call to constructor Object | NullCoalescing.cs:1:7:1:20 | After call to constructor Object | | +| NullCoalescing.cs:1:7:1:20 | call to method | NullCoalescing.cs:1:7:1:20 | After call to method | | | NullCoalescing.cs:1:7:1:20 | this access | NullCoalescing.cs:1:7:1:20 | call to method | | -| NullCoalescing.cs:1:7:1:20 | {...} | NullCoalescing.cs:1:7:1:20 | exit NullCoalescing (normal) | | -| NullCoalescing.cs:3:9:3:10 | enter M1 | NullCoalescing.cs:3:23:3:23 | access to parameter i | | -| NullCoalescing.cs:3:9:3:10 | exit M1 (normal) | NullCoalescing.cs:3:9:3:10 | exit M1 | | -| NullCoalescing.cs:3:23:3:23 | access to parameter i | NullCoalescing.cs:3:23:3:28 | ... ?? ... | non-null | -| NullCoalescing.cs:3:23:3:23 | access to parameter i | NullCoalescing.cs:3:28:3:28 | 0 | null | -| NullCoalescing.cs:3:23:3:28 | ... ?? ... | NullCoalescing.cs:3:9:3:10 | exit M1 (normal) | | -| NullCoalescing.cs:3:28:3:28 | 0 | NullCoalescing.cs:3:23:3:28 | ... ?? ... | | -| NullCoalescing.cs:5:9:5:10 | enter M2 | NullCoalescing.cs:5:25:5:25 | access to parameter b | | -| NullCoalescing.cs:5:9:5:10 | exit M2 (normal) | NullCoalescing.cs:5:9:5:10 | exit M2 | | -| NullCoalescing.cs:5:24:5:43 | ... ? ... : ... | NullCoalescing.cs:5:9:5:10 | exit M2 (normal) | | -| NullCoalescing.cs:5:25:5:25 | access to parameter b | NullCoalescing.cs:5:25:5:34 | [false] ... ?? ... | false | -| NullCoalescing.cs:5:25:5:25 | access to parameter b | NullCoalescing.cs:5:25:5:34 | [true] ... ?? ... | true | -| NullCoalescing.cs:5:25:5:25 | access to parameter b | NullCoalescing.cs:5:30:5:34 | false | null | -| NullCoalescing.cs:5:25:5:34 | [false] ... ?? ... | NullCoalescing.cs:5:43:5:43 | 1 | false | -| NullCoalescing.cs:5:25:5:34 | [true] ... ?? ... | NullCoalescing.cs:5:39:5:39 | 0 | true | -| NullCoalescing.cs:5:30:5:34 | false | NullCoalescing.cs:5:25:5:34 | [false] ... ?? ... | false | -| NullCoalescing.cs:5:39:5:39 | 0 | NullCoalescing.cs:5:24:5:43 | ... ? ... : ... | | -| NullCoalescing.cs:5:43:5:43 | 1 | NullCoalescing.cs:5:24:5:43 | ... ? ... : ... | | -| NullCoalescing.cs:7:12:7:13 | enter M3 | NullCoalescing.cs:7:40:7:41 | access to parameter s1 | | -| NullCoalescing.cs:7:12:7:13 | exit M3 (normal) | NullCoalescing.cs:7:12:7:13 | exit M3 | | -| NullCoalescing.cs:7:40:7:41 | access to parameter s1 | NullCoalescing.cs:7:40:7:53 | ... ?? ... | non-null | -| NullCoalescing.cs:7:40:7:41 | access to parameter s1 | NullCoalescing.cs:7:46:7:47 | access to parameter s2 | null | -| NullCoalescing.cs:7:40:7:53 | ... ?? ... | NullCoalescing.cs:7:12:7:13 | exit M3 (normal) | | -| NullCoalescing.cs:7:46:7:47 | access to parameter s2 | NullCoalescing.cs:7:46:7:53 | ... ?? ... | non-null | -| NullCoalescing.cs:7:46:7:47 | access to parameter s2 | NullCoalescing.cs:7:52:7:53 | "" | null | -| NullCoalescing.cs:7:46:7:53 | ... ?? ... | NullCoalescing.cs:7:40:7:53 | ... ?? ... | | -| NullCoalescing.cs:7:52:7:53 | "" | NullCoalescing.cs:7:46:7:53 | ... ?? ... | | -| NullCoalescing.cs:9:12:9:13 | enter M4 | NullCoalescing.cs:9:37:9:37 | access to parameter b | | -| NullCoalescing.cs:9:12:9:13 | exit M4 (normal) | NullCoalescing.cs:9:12:9:13 | exit M4 | | -| NullCoalescing.cs:9:36:9:58 | ... ?? ... | NullCoalescing.cs:9:12:9:13 | exit M4 (normal) | | -| NullCoalescing.cs:9:37:9:37 | access to parameter b | NullCoalescing.cs:9:41:9:41 | access to parameter s | true | -| NullCoalescing.cs:9:37:9:37 | access to parameter b | NullCoalescing.cs:9:45:9:45 | access to parameter s | false | -| NullCoalescing.cs:9:37:9:45 | [non-null] ... ? ... : ... | NullCoalescing.cs:9:36:9:58 | ... ?? ... | non-null | -| NullCoalescing.cs:9:37:9:45 | [null] ... ? ... : ... | NullCoalescing.cs:9:51:9:52 | "" | null | -| NullCoalescing.cs:9:41:9:41 | access to parameter s | NullCoalescing.cs:9:37:9:45 | [non-null] ... ? ... : ... | non-null | -| NullCoalescing.cs:9:41:9:41 | access to parameter s | NullCoalescing.cs:9:37:9:45 | [null] ... ? ... : ... | null | -| NullCoalescing.cs:9:45:9:45 | access to parameter s | NullCoalescing.cs:9:37:9:45 | [non-null] ... ? ... : ... | non-null | -| NullCoalescing.cs:9:45:9:45 | access to parameter s | NullCoalescing.cs:9:37:9:45 | [null] ... ? ... : ... | null | -| NullCoalescing.cs:9:51:9:52 | "" | NullCoalescing.cs:9:51:9:58 | ... ?? ... | non-null | -| NullCoalescing.cs:9:51:9:58 | ... ?? ... | NullCoalescing.cs:9:36:9:58 | ... ?? ... | | -| NullCoalescing.cs:11:9:11:10 | enter M5 | NullCoalescing.cs:11:44:11:45 | access to parameter b1 | | -| NullCoalescing.cs:11:9:11:10 | exit M5 (normal) | NullCoalescing.cs:11:9:11:10 | exit M5 | | -| NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | NullCoalescing.cs:11:9:11:10 | exit M5 (normal) | | -| NullCoalescing.cs:11:44:11:45 | access to parameter b1 | NullCoalescing.cs:11:44:11:59 | [false] ... ?? ... | false | -| NullCoalescing.cs:11:44:11:45 | access to parameter b1 | NullCoalescing.cs:11:44:11:59 | [true] ... ?? ... | true | -| NullCoalescing.cs:11:44:11:45 | access to parameter b1 | NullCoalescing.cs:11:51:11:52 | access to parameter b2 | null | -| NullCoalescing.cs:11:44:11:59 | [false] ... ?? ... | NullCoalescing.cs:11:68:11:68 | 1 | false | -| NullCoalescing.cs:11:44:11:59 | [true] ... ?? ... | NullCoalescing.cs:11:64:11:64 | 0 | true | -| NullCoalescing.cs:11:51:11:52 | access to parameter b2 | NullCoalescing.cs:11:51:11:58 | [false] ... && ... | false | -| NullCoalescing.cs:11:51:11:52 | access to parameter b2 | NullCoalescing.cs:11:57:11:58 | access to parameter b3 | true | -| NullCoalescing.cs:11:51:11:58 | [false] ... && ... | NullCoalescing.cs:11:44:11:59 | [false] ... ?? ... | false | -| NullCoalescing.cs:11:51:11:58 | [true] ... && ... | NullCoalescing.cs:11:44:11:59 | [true] ... ?? ... | true | -| NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:51:11:58 | [false] ... && ... | false | -| NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:51:11:58 | [true] ... && ... | true | -| NullCoalescing.cs:11:64:11:64 | 0 | NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | | -| NullCoalescing.cs:11:68:11:68 | 1 | NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | | -| NullCoalescing.cs:13:10:13:11 | enter M6 | NullCoalescing.cs:14:5:18:5 | {...} | | -| NullCoalescing.cs:13:10:13:11 | exit M6 (normal) | NullCoalescing.cs:13:10:13:11 | exit M6 | | +| NullCoalescing.cs:1:7:1:20 | {...} | NullCoalescing.cs:1:7:1:20 | Normal Exit | | +| NullCoalescing.cs:3:9:3:10 | Entry | NullCoalescing.cs:3:17:3:17 | i | | +| NullCoalescing.cs:3:9:3:10 | Normal Exit | NullCoalescing.cs:3:9:3:10 | Exit | | +| NullCoalescing.cs:3:17:3:17 | i | NullCoalescing.cs:3:23:3:28 | ... ?? ... | | +| NullCoalescing.cs:3:23:3:23 | After access to parameter i [non-null] | NullCoalescing.cs:3:23:3:28 | After ... ?? ... | | +| NullCoalescing.cs:3:23:3:23 | After access to parameter i [null] | NullCoalescing.cs:3:28:3:28 | 0 | | +| NullCoalescing.cs:3:23:3:23 | access to parameter i | NullCoalescing.cs:3:23:3:23 | After access to parameter i [non-null] | non-null | +| NullCoalescing.cs:3:23:3:23 | access to parameter i | NullCoalescing.cs:3:23:3:23 | After access to parameter i [null] | null | +| NullCoalescing.cs:3:23:3:28 | ... ?? ... | NullCoalescing.cs:3:23:3:23 | access to parameter i | | +| NullCoalescing.cs:3:23:3:28 | After ... ?? ... | NullCoalescing.cs:3:9:3:10 | Normal Exit | | +| NullCoalescing.cs:3:28:3:28 | 0 | NullCoalescing.cs:3:23:3:28 | After ... ?? ... | | +| NullCoalescing.cs:5:9:5:10 | Entry | NullCoalescing.cs:5:18:5:18 | b | | +| NullCoalescing.cs:5:9:5:10 | Normal Exit | NullCoalescing.cs:5:9:5:10 | Exit | | +| NullCoalescing.cs:5:18:5:18 | b | NullCoalescing.cs:5:24:5:43 | ... ? ... : ... | | +| NullCoalescing.cs:5:24:5:43 | ... ? ... : ... | NullCoalescing.cs:5:25:5:34 | ... ?? ... | | +| NullCoalescing.cs:5:24:5:43 | After ... ? ... : ... | NullCoalescing.cs:5:9:5:10 | Normal Exit | | +| NullCoalescing.cs:5:25:5:25 | After access to parameter b [non-null] | NullCoalescing.cs:5:25:5:34 | After ... ?? ... [false] | false | +| NullCoalescing.cs:5:25:5:25 | After access to parameter b [non-null] | NullCoalescing.cs:5:25:5:34 | After ... ?? ... [true] | true | +| NullCoalescing.cs:5:25:5:25 | After access to parameter b [null] | NullCoalescing.cs:5:30:5:34 | false | | +| NullCoalescing.cs:5:25:5:25 | access to parameter b | NullCoalescing.cs:5:25:5:25 | After access to parameter b [non-null] | non-null | +| NullCoalescing.cs:5:25:5:25 | access to parameter b | NullCoalescing.cs:5:25:5:25 | After access to parameter b [null] | null | +| NullCoalescing.cs:5:25:5:34 | ... ?? ... | NullCoalescing.cs:5:25:5:25 | access to parameter b | | +| NullCoalescing.cs:5:25:5:34 | After ... ?? ... [false] | NullCoalescing.cs:5:43:5:43 | 1 | | +| NullCoalescing.cs:5:25:5:34 | After ... ?? ... [true] | NullCoalescing.cs:5:39:5:39 | 0 | | +| NullCoalescing.cs:5:30:5:34 | After false [false] | NullCoalescing.cs:5:25:5:34 | After ... ?? ... [false] | false | +| NullCoalescing.cs:5:30:5:34 | false | NullCoalescing.cs:5:30:5:34 | After false [false] | false | +| NullCoalescing.cs:5:39:5:39 | 0 | NullCoalescing.cs:5:24:5:43 | After ... ? ... : ... | | +| NullCoalescing.cs:5:43:5:43 | 1 | NullCoalescing.cs:5:24:5:43 | After ... ? ... : ... | | +| NullCoalescing.cs:7:12:7:13 | Entry | NullCoalescing.cs:7:22:7:23 | s1 | | +| NullCoalescing.cs:7:12:7:13 | Normal Exit | NullCoalescing.cs:7:12:7:13 | Exit | | +| NullCoalescing.cs:7:22:7:23 | s1 | NullCoalescing.cs:7:33:7:34 | s2 | | +| NullCoalescing.cs:7:33:7:34 | s2 | NullCoalescing.cs:7:40:7:53 | ... ?? ... | | +| NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [non-null] | NullCoalescing.cs:7:40:7:53 | After ... ?? ... | | +| NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [null] | NullCoalescing.cs:7:46:7:53 | ... ?? ... | | +| NullCoalescing.cs:7:40:7:41 | access to parameter s1 | NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [non-null] | non-null | +| NullCoalescing.cs:7:40:7:41 | access to parameter s1 | NullCoalescing.cs:7:40:7:41 | After access to parameter s1 [null] | null | +| NullCoalescing.cs:7:40:7:53 | ... ?? ... | NullCoalescing.cs:7:40:7:41 | access to parameter s1 | | +| NullCoalescing.cs:7:40:7:53 | After ... ?? ... | NullCoalescing.cs:7:12:7:13 | Normal Exit | | +| NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [non-null] | NullCoalescing.cs:7:46:7:53 | After ... ?? ... | | +| NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [null] | NullCoalescing.cs:7:52:7:53 | "" | | +| NullCoalescing.cs:7:46:7:47 | access to parameter s2 | NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [non-null] | non-null | +| NullCoalescing.cs:7:46:7:47 | access to parameter s2 | NullCoalescing.cs:7:46:7:47 | After access to parameter s2 [null] | null | +| NullCoalescing.cs:7:46:7:53 | ... ?? ... | NullCoalescing.cs:7:46:7:47 | access to parameter s2 | | +| NullCoalescing.cs:7:46:7:53 | After ... ?? ... | NullCoalescing.cs:7:40:7:53 | After ... ?? ... | | +| NullCoalescing.cs:7:52:7:53 | "" | NullCoalescing.cs:7:46:7:53 | After ... ?? ... | | +| NullCoalescing.cs:9:12:9:13 | Entry | NullCoalescing.cs:9:20:9:20 | b | | +| NullCoalescing.cs:9:12:9:13 | Normal Exit | NullCoalescing.cs:9:12:9:13 | Exit | | +| NullCoalescing.cs:9:20:9:20 | b | NullCoalescing.cs:9:30:9:30 | s | | +| NullCoalescing.cs:9:30:9:30 | s | NullCoalescing.cs:9:36:9:58 | ... ?? ... | | +| NullCoalescing.cs:9:36:9:58 | ... ?? ... | NullCoalescing.cs:9:37:9:45 | ... ? ... : ... | | +| NullCoalescing.cs:9:36:9:58 | After ... ?? ... | NullCoalescing.cs:9:12:9:13 | Normal Exit | | +| NullCoalescing.cs:9:37:9:37 | After access to parameter b [false] | NullCoalescing.cs:9:45:9:45 | access to parameter s | | +| NullCoalescing.cs:9:37:9:37 | After access to parameter b [true] | NullCoalescing.cs:9:41:9:41 | access to parameter s | | +| NullCoalescing.cs:9:37:9:37 | access to parameter b | NullCoalescing.cs:9:37:9:37 | After access to parameter b [false] | false | +| NullCoalescing.cs:9:37:9:37 | access to parameter b | NullCoalescing.cs:9:37:9:37 | After access to parameter b [true] | true | +| NullCoalescing.cs:9:37:9:45 | ... ? ... : ... | NullCoalescing.cs:9:37:9:37 | access to parameter b | | +| NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [non-null] | NullCoalescing.cs:9:36:9:58 | After ... ?? ... | | +| NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [null] | NullCoalescing.cs:9:51:9:58 | ... ?? ... | | +| NullCoalescing.cs:9:41:9:41 | After access to parameter s [non-null] | NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [non-null] | non-null | +| NullCoalescing.cs:9:41:9:41 | After access to parameter s [null] | NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [null] | null | +| NullCoalescing.cs:9:41:9:41 | access to parameter s | NullCoalescing.cs:9:41:9:41 | After access to parameter s [non-null] | non-null | +| NullCoalescing.cs:9:41:9:41 | access to parameter s | NullCoalescing.cs:9:41:9:41 | After access to parameter s [null] | null | +| NullCoalescing.cs:9:45:9:45 | After access to parameter s [non-null] | NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [non-null] | non-null | +| NullCoalescing.cs:9:45:9:45 | After access to parameter s [null] | NullCoalescing.cs:9:37:9:45 | After ... ? ... : ... [null] | null | +| NullCoalescing.cs:9:45:9:45 | access to parameter s | NullCoalescing.cs:9:45:9:45 | After access to parameter s [non-null] | non-null | +| NullCoalescing.cs:9:45:9:45 | access to parameter s | NullCoalescing.cs:9:45:9:45 | After access to parameter s [null] | null | +| NullCoalescing.cs:9:51:9:52 | "" | NullCoalescing.cs:9:51:9:52 | After "" [non-null] | non-null | +| NullCoalescing.cs:9:51:9:52 | "" | NullCoalescing.cs:9:51:9:52 | After "" [null] | null | +| NullCoalescing.cs:9:51:9:52 | After "" [non-null] | NullCoalescing.cs:9:51:9:58 | After ... ?? ... | | +| NullCoalescing.cs:9:51:9:52 | After "" [null] | NullCoalescing.cs:9:57:9:58 | "" | | +| NullCoalescing.cs:9:51:9:58 | ... ?? ... | NullCoalescing.cs:9:51:9:52 | "" | | +| NullCoalescing.cs:9:51:9:58 | After ... ?? ... | NullCoalescing.cs:9:36:9:58 | After ... ?? ... | | +| NullCoalescing.cs:9:57:9:58 | "" | NullCoalescing.cs:9:51:9:58 | After ... ?? ... | | +| NullCoalescing.cs:11:9:11:10 | Entry | NullCoalescing.cs:11:18:11:19 | b1 | | +| NullCoalescing.cs:11:9:11:10 | Normal Exit | NullCoalescing.cs:11:9:11:10 | Exit | | +| NullCoalescing.cs:11:18:11:19 | b1 | NullCoalescing.cs:11:27:11:28 | b2 | | +| NullCoalescing.cs:11:27:11:28 | b2 | NullCoalescing.cs:11:36:11:37 | b3 | | +| NullCoalescing.cs:11:36:11:37 | b3 | NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | | +| NullCoalescing.cs:11:43:11:68 | ... ? ... : ... | NullCoalescing.cs:11:44:11:59 | ... ?? ... | | +| NullCoalescing.cs:11:43:11:68 | After ... ? ... : ... | NullCoalescing.cs:11:9:11:10 | Normal Exit | | +| NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [non-null] | NullCoalescing.cs:11:44:11:59 | After ... ?? ... [false] | false | +| NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [non-null] | NullCoalescing.cs:11:44:11:59 | After ... ?? ... [true] | true | +| NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [null] | NullCoalescing.cs:11:51:11:58 | ... && ... | | +| NullCoalescing.cs:11:44:11:45 | access to parameter b1 | NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [non-null] | non-null | +| NullCoalescing.cs:11:44:11:45 | access to parameter b1 | NullCoalescing.cs:11:44:11:45 | After access to parameter b1 [null] | null | +| NullCoalescing.cs:11:44:11:59 | ... ?? ... | NullCoalescing.cs:11:44:11:45 | access to parameter b1 | | +| NullCoalescing.cs:11:44:11:59 | After ... ?? ... [false] | NullCoalescing.cs:11:68:11:68 | 1 | | +| NullCoalescing.cs:11:44:11:59 | After ... ?? ... [true] | NullCoalescing.cs:11:64:11:64 | 0 | | +| NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [false] | NullCoalescing.cs:11:51:11:58 | After ... && ... [false] | false | +| NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [true] | NullCoalescing.cs:11:57:11:58 | access to parameter b3 | | +| NullCoalescing.cs:11:51:11:52 | access to parameter b2 | NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [false] | false | +| NullCoalescing.cs:11:51:11:52 | access to parameter b2 | NullCoalescing.cs:11:51:11:52 | After access to parameter b2 [true] | true | +| NullCoalescing.cs:11:51:11:58 | ... && ... | NullCoalescing.cs:11:51:11:52 | access to parameter b2 | | +| NullCoalescing.cs:11:51:11:58 | After ... && ... [false] | NullCoalescing.cs:11:44:11:59 | After ... ?? ... [false] | false | +| NullCoalescing.cs:11:51:11:58 | After ... && ... [true] | NullCoalescing.cs:11:44:11:59 | After ... ?? ... [true] | true | +| NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [false] | NullCoalescing.cs:11:51:11:58 | After ... && ... [false] | false | +| NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [true] | NullCoalescing.cs:11:51:11:58 | After ... && ... [true] | true | +| NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [false] | false | +| NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:57:11:58 | After access to parameter b3 [true] | true | +| NullCoalescing.cs:11:64:11:64 | 0 | NullCoalescing.cs:11:43:11:68 | After ... ? ... : ... | | +| NullCoalescing.cs:11:68:11:68 | 1 | NullCoalescing.cs:11:43:11:68 | After ... ? ... : ... | | +| NullCoalescing.cs:13:10:13:11 | Entry | NullCoalescing.cs:13:17:13:17 | i | | +| NullCoalescing.cs:13:10:13:11 | Normal Exit | NullCoalescing.cs:13:10:13:11 | Exit | | +| NullCoalescing.cs:13:17:13:17 | i | NullCoalescing.cs:14:5:18:5 | {...} | | +| NullCoalescing.cs:14:5:18:5 | After {...} | NullCoalescing.cs:13:10:13:11 | Normal Exit | | | NullCoalescing.cs:14:5:18:5 | {...} | NullCoalescing.cs:15:9:15:32 | ... ...; | | -| NullCoalescing.cs:15:9:15:32 | ... ...; | NullCoalescing.cs:15:23:15:26 | null | | -| NullCoalescing.cs:15:13:15:31 | Int32 j = ... | NullCoalescing.cs:16:9:16:26 | ... ...; | | -| NullCoalescing.cs:15:17:15:26 | (...) ... | NullCoalescing.cs:15:31:15:31 | 0 | null | -| NullCoalescing.cs:15:17:15:31 | ... ?? ... | NullCoalescing.cs:15:13:15:31 | Int32 j = ... | | +| NullCoalescing.cs:15:9:15:32 | ... ...; | NullCoalescing.cs:15:13:15:31 | Before Int32 j = ... | | +| NullCoalescing.cs:15:9:15:32 | After ... ...; | NullCoalescing.cs:16:9:16:26 | ... ...; | | +| NullCoalescing.cs:15:13:15:13 | access to local variable j | NullCoalescing.cs:15:17:15:31 | ... ?? ... | | +| NullCoalescing.cs:15:13:15:31 | After Int32 j = ... | NullCoalescing.cs:15:9:15:32 | After ... ...; | | +| NullCoalescing.cs:15:13:15:31 | Before Int32 j = ... | NullCoalescing.cs:15:13:15:13 | access to local variable j | | +| NullCoalescing.cs:15:13:15:31 | Int32 j = ... | NullCoalescing.cs:15:13:15:31 | After Int32 j = ... | | +| NullCoalescing.cs:15:17:15:26 | (...) ... | NullCoalescing.cs:15:17:15:26 | After (...) ... [non-null] | non-null | +| NullCoalescing.cs:15:17:15:26 | (...) ... | NullCoalescing.cs:15:17:15:26 | After (...) ... [null] | null | +| NullCoalescing.cs:15:17:15:26 | After (...) ... [non-null] | NullCoalescing.cs:15:17:15:31 | After ... ?? ... | | +| NullCoalescing.cs:15:17:15:26 | After (...) ... [null] | NullCoalescing.cs:15:31:15:31 | 0 | | +| NullCoalescing.cs:15:17:15:26 | Before (...) ... | NullCoalescing.cs:15:23:15:26 | null | | +| NullCoalescing.cs:15:17:15:31 | ... ?? ... | NullCoalescing.cs:15:17:15:26 | Before (...) ... | | +| NullCoalescing.cs:15:17:15:31 | After ... ?? ... | NullCoalescing.cs:15:13:15:31 | Int32 j = ... | | | NullCoalescing.cs:15:23:15:26 | null | NullCoalescing.cs:15:17:15:26 | (...) ... | | -| NullCoalescing.cs:15:31:15:31 | 0 | NullCoalescing.cs:15:17:15:31 | ... ?? ... | | -| NullCoalescing.cs:16:9:16:26 | ... ...; | NullCoalescing.cs:16:17:16:18 | "" | | -| NullCoalescing.cs:16:13:16:25 | String s = ... | NullCoalescing.cs:17:9:17:25 | ...; | | -| NullCoalescing.cs:16:17:16:18 | "" | NullCoalescing.cs:16:17:16:25 | ... ?? ... | non-null | -| NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:16:13:16:25 | String s = ... | | -| NullCoalescing.cs:17:9:17:24 | ... = ... | NullCoalescing.cs:13:10:13:11 | exit M6 (normal) | | -| NullCoalescing.cs:17:9:17:25 | ...; | NullCoalescing.cs:17:19:17:19 | access to parameter i | | -| NullCoalescing.cs:17:13:17:19 | (...) ... | NullCoalescing.cs:17:13:17:24 | ... ?? ... | non-null | -| NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:17:9:17:24 | ... = ... | | +| NullCoalescing.cs:15:31:15:31 | 0 | NullCoalescing.cs:15:17:15:31 | After ... ?? ... | | +| NullCoalescing.cs:16:9:16:26 | ... ...; | NullCoalescing.cs:16:13:16:25 | Before String s = ... | | +| NullCoalescing.cs:16:9:16:26 | After ... ...; | NullCoalescing.cs:17:9:17:25 | ...; | | +| NullCoalescing.cs:16:13:16:13 | access to local variable s | NullCoalescing.cs:16:17:16:25 | ... ?? ... | | +| NullCoalescing.cs:16:13:16:25 | After String s = ... | NullCoalescing.cs:16:9:16:26 | After ... ...; | | +| NullCoalescing.cs:16:13:16:25 | Before String s = ... | NullCoalescing.cs:16:13:16:13 | access to local variable s | | +| NullCoalescing.cs:16:13:16:25 | String s = ... | NullCoalescing.cs:16:13:16:25 | After String s = ... | | +| NullCoalescing.cs:16:17:16:18 | "" | NullCoalescing.cs:16:17:16:18 | After "" [non-null] | non-null | +| NullCoalescing.cs:16:17:16:18 | "" | NullCoalescing.cs:16:17:16:18 | After "" [null] | null | +| NullCoalescing.cs:16:17:16:18 | After "" [non-null] | NullCoalescing.cs:16:17:16:25 | After ... ?? ... | | +| NullCoalescing.cs:16:17:16:18 | After "" [null] | NullCoalescing.cs:16:23:16:25 | "a" | | +| NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:16:17:16:18 | "" | | +| NullCoalescing.cs:16:17:16:25 | After ... ?? ... | NullCoalescing.cs:16:13:16:25 | String s = ... | | +| NullCoalescing.cs:16:23:16:25 | "a" | NullCoalescing.cs:16:17:16:25 | After ... ?? ... | | +| NullCoalescing.cs:17:9:17:9 | access to local variable j | NullCoalescing.cs:17:13:17:24 | ... ?? ... | | +| NullCoalescing.cs:17:9:17:24 | ... = ... | NullCoalescing.cs:17:9:17:24 | After ... = ... | | +| NullCoalescing.cs:17:9:17:24 | After ... = ... | NullCoalescing.cs:17:9:17:25 | After ...; | | +| NullCoalescing.cs:17:9:17:24 | Before ... = ... | NullCoalescing.cs:17:9:17:9 | access to local variable j | | +| NullCoalescing.cs:17:9:17:25 | ...; | NullCoalescing.cs:17:9:17:24 | Before ... = ... | | +| NullCoalescing.cs:17:9:17:25 | After ...; | NullCoalescing.cs:14:5:18:5 | After {...} | | +| NullCoalescing.cs:17:13:17:19 | (...) ... | NullCoalescing.cs:17:13:17:19 | After (...) ... [non-null] | non-null | +| NullCoalescing.cs:17:13:17:19 | (...) ... | NullCoalescing.cs:17:13:17:19 | After (...) ... [null] | null | +| NullCoalescing.cs:17:13:17:19 | After (...) ... [non-null] | NullCoalescing.cs:17:13:17:24 | After ... ?? ... | | +| NullCoalescing.cs:17:13:17:19 | After (...) ... [null] | NullCoalescing.cs:17:24:17:24 | 1 | | +| NullCoalescing.cs:17:13:17:19 | Before (...) ... | NullCoalescing.cs:17:19:17:19 | access to parameter i | | +| NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:17:13:17:19 | Before (...) ... | | +| NullCoalescing.cs:17:13:17:24 | After ... ?? ... | NullCoalescing.cs:17:9:17:24 | ... = ... | | | NullCoalescing.cs:17:19:17:19 | access to parameter i | NullCoalescing.cs:17:13:17:19 | (...) ... | | -| PartialImplementationA.cs:1:15:1:21 | enter | PartialImplementationB.cs:3:16:3:16 | this access | | -| PartialImplementationA.cs:1:15:1:21 | exit (normal) | PartialImplementationA.cs:1:15:1:21 | exit | | -| PartialImplementationA.cs:3:12:3:18 | call to constructor Object | PartialImplementationA.cs:3:27:3:29 | {...} | | -| PartialImplementationA.cs:3:12:3:18 | call to method | PartialImplementationA.cs:3:12:3:18 | call to constructor Object | | -| PartialImplementationA.cs:3:12:3:18 | enter Partial | PartialImplementationA.cs:3:12:3:18 | this access | | -| PartialImplementationA.cs:3:12:3:18 | exit Partial (normal) | PartialImplementationA.cs:3:12:3:18 | exit Partial | | +| NullCoalescing.cs:17:24:17:24 | 1 | NullCoalescing.cs:17:13:17:24 | After ... ?? ... | | +| PartialImplementationA.cs:1:15:1:21 | Entry | PartialImplementationB.cs:3:16:3:20 | Before ... = ... | | +| PartialImplementationA.cs:1:15:1:21 | Normal Exit | PartialImplementationA.cs:1:15:1:21 | Exit | | +| PartialImplementationA.cs:3:12:3:18 | After call to constructor Object | PartialImplementationA.cs:3:27:3:29 | {...} | | +| PartialImplementationA.cs:3:12:3:18 | After call to method | PartialImplementationA.cs:3:12:3:18 | Before call to constructor Object | | +| PartialImplementationA.cs:3:12:3:18 | Before call to constructor Object | PartialImplementationA.cs:3:12:3:18 | call to constructor Object | | +| PartialImplementationA.cs:3:12:3:18 | Before call to method | PartialImplementationA.cs:3:12:3:18 | this access | | +| PartialImplementationA.cs:3:12:3:18 | Entry | PartialImplementationA.cs:3:24:3:24 | i | | +| PartialImplementationA.cs:3:12:3:18 | Normal Exit | PartialImplementationA.cs:3:12:3:18 | Exit | | +| PartialImplementationA.cs:3:12:3:18 | call to constructor Object | PartialImplementationA.cs:3:12:3:18 | After call to constructor Object | | +| PartialImplementationA.cs:3:12:3:18 | call to method | PartialImplementationA.cs:3:12:3:18 | After call to method | | | PartialImplementationA.cs:3:12:3:18 | this access | PartialImplementationA.cs:3:12:3:18 | call to method | | -| PartialImplementationA.cs:3:27:3:29 | {...} | PartialImplementationA.cs:3:12:3:18 | exit Partial (normal) | | -| PartialImplementationB.cs:3:16:3:16 | access to field F | PartialImplementationB.cs:3:16:3:20 | ... = ... | | -| PartialImplementationB.cs:3:16:3:16 | this access | PartialImplementationB.cs:3:20:3:20 | 0 | | -| PartialImplementationB.cs:3:16:3:20 | ... = ... | PartialImplementationB.cs:5:16:5:16 | this access | | -| PartialImplementationB.cs:3:20:3:20 | 0 | PartialImplementationB.cs:3:16:3:16 | access to field F | | -| PartialImplementationB.cs:4:12:4:18 | call to constructor Object | PartialImplementationB.cs:4:22:4:24 | {...} | | -| PartialImplementationB.cs:4:12:4:18 | call to method | PartialImplementationB.cs:4:12:4:18 | call to constructor Object | | -| PartialImplementationB.cs:4:12:4:18 | enter Partial | PartialImplementationB.cs:4:12:4:18 | this access | | -| PartialImplementationB.cs:4:12:4:18 | exit Partial (normal) | PartialImplementationB.cs:4:12:4:18 | exit Partial | | +| PartialImplementationA.cs:3:24:3:24 | i | PartialImplementationA.cs:3:12:3:18 | Before call to method | | +| PartialImplementationA.cs:3:27:3:29 | {...} | PartialImplementationA.cs:3:12:3:18 | Normal Exit | | +| PartialImplementationB.cs:3:16:3:16 | After access to field F | PartialImplementationB.cs:3:20:3:20 | 0 | | +| PartialImplementationB.cs:3:16:3:16 | Before access to field F | PartialImplementationB.cs:3:16:3:16 | this access | | +| PartialImplementationB.cs:3:16:3:16 | access to field F | PartialImplementationB.cs:3:16:3:16 | After access to field F | | +| PartialImplementationB.cs:3:16:3:16 | this access | PartialImplementationB.cs:3:16:3:16 | access to field F | | +| PartialImplementationB.cs:3:16:3:20 | ... = ... | PartialImplementationB.cs:3:16:3:20 | After ... = ... | | +| PartialImplementationB.cs:3:16:3:20 | After ... = ... | PartialImplementationB.cs:5:32:5:34 | Before ... = ... | | +| PartialImplementationB.cs:3:16:3:20 | Before ... = ... | PartialImplementationB.cs:3:16:3:16 | Before access to field F | | +| PartialImplementationB.cs:3:20:3:20 | 0 | PartialImplementationB.cs:3:16:3:20 | ... = ... | | +| PartialImplementationB.cs:4:12:4:18 | After call to constructor Object | PartialImplementationB.cs:4:22:4:24 | {...} | | +| PartialImplementationB.cs:4:12:4:18 | After call to method | PartialImplementationB.cs:4:12:4:18 | Before call to constructor Object | | +| PartialImplementationB.cs:4:12:4:18 | Before call to constructor Object | PartialImplementationB.cs:4:12:4:18 | call to constructor Object | | +| PartialImplementationB.cs:4:12:4:18 | Before call to method | PartialImplementationB.cs:4:12:4:18 | this access | | +| PartialImplementationB.cs:4:12:4:18 | Entry | PartialImplementationB.cs:4:12:4:18 | Before call to method | | +| PartialImplementationB.cs:4:12:4:18 | Normal Exit | PartialImplementationB.cs:4:12:4:18 | Exit | | +| PartialImplementationB.cs:4:12:4:18 | call to constructor Object | PartialImplementationB.cs:4:12:4:18 | After call to constructor Object | | +| PartialImplementationB.cs:4:12:4:18 | call to method | PartialImplementationB.cs:4:12:4:18 | After call to method | | | PartialImplementationB.cs:4:12:4:18 | this access | PartialImplementationB.cs:4:12:4:18 | call to method | | -| PartialImplementationB.cs:4:22:4:24 | {...} | PartialImplementationB.cs:4:12:4:18 | exit Partial (normal) | | -| PartialImplementationB.cs:5:16:5:16 | access to property P | PartialImplementationB.cs:5:32:5:34 | ... = ... | | -| PartialImplementationB.cs:5:16:5:16 | this access | PartialImplementationB.cs:5:34:5:34 | 0 | | -| PartialImplementationB.cs:5:32:5:34 | ... = ... | PartialImplementationA.cs:1:15:1:21 | exit (normal) | | -| PartialImplementationB.cs:5:34:5:34 | 0 | PartialImplementationB.cs:5:16:5:16 | access to property P | | -| Patterns.cs:3:7:3:14 | call to constructor Object | Patterns.cs:3:7:3:14 | {...} | | -| Patterns.cs:3:7:3:14 | call to method | Patterns.cs:3:7:3:14 | call to constructor Object | | -| Patterns.cs:3:7:3:14 | enter Patterns | Patterns.cs:3:7:3:14 | this access | | -| Patterns.cs:3:7:3:14 | exit Patterns (normal) | Patterns.cs:3:7:3:14 | exit Patterns | | +| PartialImplementationB.cs:4:22:4:24 | {...} | PartialImplementationB.cs:4:12:4:18 | Normal Exit | | +| PartialImplementationB.cs:5:16:5:16 | After access to property P | PartialImplementationB.cs:5:34:5:34 | 0 | | +| PartialImplementationB.cs:5:16:5:16 | Before access to property P | PartialImplementationB.cs:5:16:5:16 | this access | | +| PartialImplementationB.cs:5:16:5:16 | access to property P | PartialImplementationB.cs:5:16:5:16 | After access to property P | | +| PartialImplementationB.cs:5:16:5:16 | this access | PartialImplementationB.cs:5:16:5:16 | access to property P | | +| PartialImplementationB.cs:5:32:5:34 | ... = ... | PartialImplementationB.cs:5:32:5:34 | After ... = ... | | +| PartialImplementationB.cs:5:32:5:34 | After ... = ... | PartialImplementationA.cs:1:15:1:21 | Normal Exit | | +| PartialImplementationB.cs:5:32:5:34 | Before ... = ... | PartialImplementationB.cs:5:16:5:16 | Before access to property P | | +| PartialImplementationB.cs:5:34:5:34 | 0 | PartialImplementationB.cs:5:32:5:34 | ... = ... | | +| Patterns.cs:3:7:3:14 | After call to constructor Object | Patterns.cs:3:7:3:14 | {...} | | +| Patterns.cs:3:7:3:14 | After call to method | Patterns.cs:3:7:3:14 | Before call to constructor Object | | +| Patterns.cs:3:7:3:14 | Before call to constructor Object | Patterns.cs:3:7:3:14 | call to constructor Object | | +| Patterns.cs:3:7:3:14 | Before call to method | Patterns.cs:3:7:3:14 | this access | | +| Patterns.cs:3:7:3:14 | Entry | Patterns.cs:3:7:3:14 | Before call to method | | +| Patterns.cs:3:7:3:14 | Normal Exit | Patterns.cs:3:7:3:14 | Exit | | +| Patterns.cs:3:7:3:14 | call to constructor Object | Patterns.cs:3:7:3:14 | After call to constructor Object | | +| Patterns.cs:3:7:3:14 | call to method | Patterns.cs:3:7:3:14 | After call to method | | | Patterns.cs:3:7:3:14 | this access | Patterns.cs:3:7:3:14 | call to method | | -| Patterns.cs:3:7:3:14 | {...} | Patterns.cs:3:7:3:14 | exit Patterns (normal) | | -| Patterns.cs:5:10:5:11 | enter M1 | Patterns.cs:6:5:43:5 | {...} | | -| Patterns.cs:5:10:5:11 | exit M1 (normal) | Patterns.cs:5:10:5:11 | exit M1 | | +| Patterns.cs:3:7:3:14 | {...} | Patterns.cs:3:7:3:14 | Normal Exit | | +| Patterns.cs:5:10:5:11 | Entry | Patterns.cs:6:5:43:5 | {...} | | +| Patterns.cs:5:10:5:11 | Normal Exit | Patterns.cs:5:10:5:11 | Exit | | +| Patterns.cs:6:5:43:5 | After {...} | Patterns.cs:5:10:5:11 | Normal Exit | | | Patterns.cs:6:5:43:5 | {...} | Patterns.cs:7:9:7:24 | ... ...; | | -| Patterns.cs:7:9:7:24 | ... ...; | Patterns.cs:7:20:7:23 | null | | -| Patterns.cs:7:16:7:23 | Object o = ... | Patterns.cs:8:9:18:9 | if (...) ... | | +| Patterns.cs:7:9:7:24 | ... ...; | Patterns.cs:7:16:7:23 | Before Object o = ... | | +| Patterns.cs:7:9:7:24 | After ... ...; | Patterns.cs:8:9:18:9 | if (...) ... | | +| Patterns.cs:7:16:7:16 | access to local variable o | Patterns.cs:7:20:7:23 | null | | +| Patterns.cs:7:16:7:23 | After Object o = ... | Patterns.cs:7:9:7:24 | After ... ...; | | +| Patterns.cs:7:16:7:23 | Before Object o = ... | Patterns.cs:7:16:7:16 | access to local variable o | | +| Patterns.cs:7:16:7:23 | Object o = ... | Patterns.cs:7:16:7:23 | After Object o = ... | | | Patterns.cs:7:20:7:23 | null | Patterns.cs:7:16:7:23 | Object o = ... | | -| Patterns.cs:8:9:18:9 | if (...) ... | Patterns.cs:8:13:8:13 | access to local variable o | | -| Patterns.cs:8:13:8:13 | access to local variable o | Patterns.cs:8:18:8:23 | Int32 i1 | | -| Patterns.cs:8:13:8:23 | [false] ... is ... | Patterns.cs:12:14:18:9 | if (...) ... | false | -| Patterns.cs:8:13:8:23 | [true] ... is ... | Patterns.cs:9:9:11:9 | {...} | true | -| Patterns.cs:8:18:8:23 | Int32 i1 | Patterns.cs:8:13:8:23 | [false] ... is ... | no-match | -| Patterns.cs:8:18:8:23 | Int32 i1 | Patterns.cs:8:13:8:23 | [true] ... is ... | match | +| Patterns.cs:8:9:18:9 | After if (...) ... | Patterns.cs:20:9:38:9 | switch (...) {...} | | +| Patterns.cs:8:9:18:9 | if (...) ... | Patterns.cs:8:13:8:23 | Before ... is ... | | +| Patterns.cs:8:13:8:13 | access to local variable o | Patterns.cs:8:13:8:23 | ... is ... | | +| Patterns.cs:8:13:8:23 | ... is ... | Patterns.cs:8:13:8:23 | After ... is ... [false] | false | +| Patterns.cs:8:13:8:23 | ... is ... | Patterns.cs:8:13:8:23 | [MatchTrue] ... is ... | true | +| Patterns.cs:8:13:8:23 | After ... is ... [false] | Patterns.cs:12:14:18:9 | if (...) ... | | +| Patterns.cs:8:13:8:23 | After ... is ... [true] | Patterns.cs:9:9:11:9 | {...} | | +| Patterns.cs:8:13:8:23 | Before ... is ... | Patterns.cs:8:13:8:13 | access to local variable o | | +| Patterns.cs:8:13:8:23 | [MatchTrue] ... is ... | Patterns.cs:8:18:8:23 | Int32 i1 | | +| Patterns.cs:8:18:8:23 | Int32 i1 | Patterns.cs:8:13:8:23 | After ... is ... [true] | true | +| Patterns.cs:9:9:11:9 | After {...} | Patterns.cs:8:9:18:9 | After if (...) ... | | | Patterns.cs:9:9:11:9 | {...} | Patterns.cs:10:13:10:43 | ...; | | -| Patterns.cs:10:13:10:42 | call to method WriteLine | Patterns.cs:20:9:38:9 | switch (...) {...} | | -| Patterns.cs:10:13:10:43 | ...; | Patterns.cs:10:33:10:36 | "int " | | -| Patterns.cs:10:31:10:41 | $"..." | Patterns.cs:10:13:10:42 | call to method WriteLine | | -| Patterns.cs:10:33:10:36 | "int " | Patterns.cs:10:38:10:39 | access to local variable i1 | | -| Patterns.cs:10:37:10:40 | {...} | Patterns.cs:10:31:10:41 | $"..." | | +| Patterns.cs:10:13:10:42 | After call to method WriteLine | Patterns.cs:10:13:10:43 | After ...; | | +| Patterns.cs:10:13:10:42 | Before call to method WriteLine | Patterns.cs:10:31:10:41 | Before $"..." | | +| Patterns.cs:10:13:10:42 | call to method WriteLine | Patterns.cs:10:13:10:42 | After call to method WriteLine | | +| Patterns.cs:10:13:10:43 | ...; | Patterns.cs:10:13:10:42 | Before call to method WriteLine | | +| Patterns.cs:10:13:10:43 | After ...; | Patterns.cs:9:9:11:9 | After {...} | | +| Patterns.cs:10:31:10:41 | $"..." | Patterns.cs:10:31:10:41 | After $"..." | | +| Patterns.cs:10:31:10:41 | After $"..." | Patterns.cs:10:13:10:42 | call to method WriteLine | | +| Patterns.cs:10:31:10:41 | Before $"..." | Patterns.cs:10:33:10:36 | "int " | | +| Patterns.cs:10:33:10:36 | "int " | Patterns.cs:10:37:10:40 | Before {...} | | +| Patterns.cs:10:37:10:40 | After {...} | Patterns.cs:10:31:10:41 | $"..." | | +| Patterns.cs:10:37:10:40 | Before {...} | Patterns.cs:10:38:10:39 | access to local variable i1 | | +| Patterns.cs:10:37:10:40 | {...} | Patterns.cs:10:37:10:40 | After {...} | | | Patterns.cs:10:38:10:39 | access to local variable i1 | Patterns.cs:10:37:10:40 | {...} | | -| Patterns.cs:12:14:18:9 | if (...) ... | Patterns.cs:12:18:12:18 | access to local variable o | | -| Patterns.cs:12:18:12:18 | access to local variable o | Patterns.cs:12:23:12:31 | String s1 | | -| Patterns.cs:12:18:12:31 | [false] ... is ... | Patterns.cs:16:14:18:9 | if (...) ... | false | -| Patterns.cs:12:18:12:31 | [true] ... is ... | Patterns.cs:13:9:15:9 | {...} | true | -| Patterns.cs:12:23:12:31 | String s1 | Patterns.cs:12:18:12:31 | [false] ... is ... | no-match | -| Patterns.cs:12:23:12:31 | String s1 | Patterns.cs:12:18:12:31 | [true] ... is ... | match | +| Patterns.cs:12:14:18:9 | After if (...) ... | Patterns.cs:8:9:18:9 | After if (...) ... | | +| Patterns.cs:12:14:18:9 | if (...) ... | Patterns.cs:12:18:12:31 | Before ... is ... | | +| Patterns.cs:12:18:12:18 | access to local variable o | Patterns.cs:12:18:12:31 | ... is ... | | +| Patterns.cs:12:18:12:31 | ... is ... | Patterns.cs:12:18:12:31 | After ... is ... [false] | false | +| Patterns.cs:12:18:12:31 | ... is ... | Patterns.cs:12:18:12:31 | [MatchTrue] ... is ... | true | +| Patterns.cs:12:18:12:31 | After ... is ... [false] | Patterns.cs:16:14:18:9 | if (...) ... | | +| Patterns.cs:12:18:12:31 | After ... is ... [true] | Patterns.cs:13:9:15:9 | {...} | | +| Patterns.cs:12:18:12:31 | Before ... is ... | Patterns.cs:12:18:12:18 | access to local variable o | | +| Patterns.cs:12:18:12:31 | [MatchTrue] ... is ... | Patterns.cs:12:23:12:31 | String s1 | | +| Patterns.cs:12:23:12:31 | String s1 | Patterns.cs:12:18:12:31 | After ... is ... [true] | true | +| Patterns.cs:13:9:15:9 | After {...} | Patterns.cs:12:14:18:9 | After if (...) ... | | | Patterns.cs:13:9:15:9 | {...} | Patterns.cs:14:13:14:46 | ...; | | -| Patterns.cs:14:13:14:45 | call to method WriteLine | Patterns.cs:20:9:38:9 | switch (...) {...} | | -| Patterns.cs:14:13:14:46 | ...; | Patterns.cs:14:33:14:39 | "string " | | -| Patterns.cs:14:31:14:44 | $"..." | Patterns.cs:14:13:14:45 | call to method WriteLine | | -| Patterns.cs:14:33:14:39 | "string " | Patterns.cs:14:41:14:42 | access to local variable s1 | | -| Patterns.cs:14:40:14:43 | {...} | Patterns.cs:14:31:14:44 | $"..." | | +| Patterns.cs:14:13:14:45 | After call to method WriteLine | Patterns.cs:14:13:14:46 | After ...; | | +| Patterns.cs:14:13:14:45 | Before call to method WriteLine | Patterns.cs:14:31:14:44 | Before $"..." | | +| Patterns.cs:14:13:14:45 | call to method WriteLine | Patterns.cs:14:13:14:45 | After call to method WriteLine | | +| Patterns.cs:14:13:14:46 | ...; | Patterns.cs:14:13:14:45 | Before call to method WriteLine | | +| Patterns.cs:14:13:14:46 | After ...; | Patterns.cs:13:9:15:9 | After {...} | | +| Patterns.cs:14:31:14:44 | $"..." | Patterns.cs:14:31:14:44 | After $"..." | | +| Patterns.cs:14:31:14:44 | After $"..." | Patterns.cs:14:13:14:45 | call to method WriteLine | | +| Patterns.cs:14:31:14:44 | Before $"..." | Patterns.cs:14:33:14:39 | "string " | | +| Patterns.cs:14:33:14:39 | "string " | Patterns.cs:14:40:14:43 | Before {...} | | +| Patterns.cs:14:40:14:43 | After {...} | Patterns.cs:14:31:14:44 | $"..." | | +| Patterns.cs:14:40:14:43 | Before {...} | Patterns.cs:14:41:14:42 | access to local variable s1 | | +| Patterns.cs:14:40:14:43 | {...} | Patterns.cs:14:40:14:43 | After {...} | | | Patterns.cs:14:41:14:42 | access to local variable s1 | Patterns.cs:14:40:14:43 | {...} | | -| Patterns.cs:16:14:18:9 | if (...) ... | Patterns.cs:16:18:16:18 | access to local variable o | | -| Patterns.cs:16:18:16:18 | access to local variable o | Patterns.cs:16:23:16:28 | Object v1 | | -| Patterns.cs:16:18:16:28 | [false] ... is ... | Patterns.cs:20:9:38:9 | switch (...) {...} | false | -| Patterns.cs:16:18:16:28 | [true] ... is ... | Patterns.cs:17:9:18:9 | {...} | true | -| Patterns.cs:16:23:16:28 | Object v1 | Patterns.cs:16:18:16:28 | [false] ... is ... | no-match | -| Patterns.cs:16:23:16:28 | Object v1 | Patterns.cs:16:18:16:28 | [true] ... is ... | match | -| Patterns.cs:17:9:18:9 | {...} | Patterns.cs:20:9:38:9 | switch (...) {...} | | +| Patterns.cs:16:14:18:9 | After if (...) ... | Patterns.cs:12:14:18:9 | After if (...) ... | | +| Patterns.cs:16:14:18:9 | if (...) ... | Patterns.cs:16:18:16:28 | Before ... is ... | | +| Patterns.cs:16:18:16:18 | access to local variable o | Patterns.cs:16:18:16:28 | ... is ... | | +| Patterns.cs:16:18:16:28 | ... is ... | Patterns.cs:16:18:16:28 | After ... is ... [false] | false | +| Patterns.cs:16:18:16:28 | ... is ... | Patterns.cs:16:18:16:28 | [MatchTrue] ... is ... | true | +| Patterns.cs:16:18:16:28 | After ... is ... [false] | Patterns.cs:16:14:18:9 | After if (...) ... | | +| Patterns.cs:16:18:16:28 | After ... is ... [true] | Patterns.cs:17:9:18:9 | {...} | | +| Patterns.cs:16:18:16:28 | Before ... is ... | Patterns.cs:16:18:16:18 | access to local variable o | | +| Patterns.cs:16:18:16:28 | [MatchTrue] ... is ... | Patterns.cs:16:23:16:28 | Object v1 | | +| Patterns.cs:16:23:16:28 | Object v1 | Patterns.cs:16:18:16:28 | After ... is ... [true] | true | +| Patterns.cs:17:9:18:9 | {...} | Patterns.cs:16:14:18:9 | After if (...) ... | | +| Patterns.cs:20:9:38:9 | After switch (...) {...} | Patterns.cs:40:9:42:9 | switch (...) {...} | | | Patterns.cs:20:9:38:9 | switch (...) {...} | Patterns.cs:20:17:20:17 | access to local variable o | | | Patterns.cs:20:17:20:17 | access to local variable o | Patterns.cs:22:13:22:23 | case ...: | | +| Patterns.cs:22:13:22:23 | After case ...: [match] | Patterns.cs:23:17:23:22 | Before break; | | +| Patterns.cs:22:13:22:23 | After case ...: [no-match] | Patterns.cs:24:13:24:36 | case ...: | | | Patterns.cs:22:13:22:23 | case ...: | Patterns.cs:22:18:22:22 | "xyz" | | -| Patterns.cs:22:18:22:22 | "xyz" | Patterns.cs:23:17:23:22 | break; | match | -| Patterns.cs:22:18:22:22 | "xyz" | Patterns.cs:24:13:24:36 | case ...: | no-match | -| Patterns.cs:23:17:23:22 | break; | Patterns.cs:40:9:42:9 | switch (...) {...} | break | +| Patterns.cs:22:18:22:22 | "xyz" | Patterns.cs:22:18:22:22 | After "xyz" [match] | match | +| Patterns.cs:22:18:22:22 | "xyz" | Patterns.cs:22:18:22:22 | After "xyz" [no-match] | no-match | +| Patterns.cs:22:18:22:22 | After "xyz" [match] | Patterns.cs:22:13:22:23 | After case ...: [match] | match | +| Patterns.cs:22:18:22:22 | After "xyz" [no-match] | Patterns.cs:22:13:22:23 | After case ...: [no-match] | no-match | +| Patterns.cs:23:17:23:22 | Before break; | Patterns.cs:23:17:23:22 | break; | | +| Patterns.cs:23:17:23:22 | break; | Patterns.cs:20:9:38:9 | After switch (...) {...} | break | +| Patterns.cs:24:13:24:36 | After case ...: [match] | Patterns.cs:24:30:24:35 | Before ... > ... | | +| Patterns.cs:24:13:24:36 | After case ...: [no-match] | Patterns.cs:27:13:27:24 | case ...: | | | Patterns.cs:24:13:24:36 | case ...: | Patterns.cs:24:18:24:23 | Int32 i2 | | -| Patterns.cs:24:18:24:23 | Int32 i2 | Patterns.cs:24:30:24:31 | access to local variable i2 | match | -| Patterns.cs:24:18:24:23 | Int32 i2 | Patterns.cs:27:13:27:24 | case ...: | no-match | +| Patterns.cs:24:18:24:23 | After Int32 i2 [match] | Patterns.cs:24:13:24:36 | After case ...: [match] | match | +| Patterns.cs:24:18:24:23 | After Int32 i2 [no-match] | Patterns.cs:24:13:24:36 | After case ...: [no-match] | no-match | +| Patterns.cs:24:18:24:23 | Int32 i2 | Patterns.cs:24:18:24:23 | After Int32 i2 [match] | match | +| Patterns.cs:24:18:24:23 | Int32 i2 | Patterns.cs:24:18:24:23 | After Int32 i2 [no-match] | no-match | | Patterns.cs:24:30:24:31 | access to local variable i2 | Patterns.cs:24:35:24:35 | 0 | | -| Patterns.cs:24:30:24:35 | ... > ... | Patterns.cs:25:17:25:52 | ...; | true | -| Patterns.cs:24:30:24:35 | ... > ... | Patterns.cs:27:13:27:24 | case ...: | false | +| Patterns.cs:24:30:24:35 | ... > ... | Patterns.cs:24:30:24:35 | After ... > ... [false] | false | +| Patterns.cs:24:30:24:35 | ... > ... | Patterns.cs:24:30:24:35 | After ... > ... [true] | true | +| Patterns.cs:24:30:24:35 | After ... > ... [false] | Patterns.cs:27:13:27:24 | case ...: | | +| Patterns.cs:24:30:24:35 | After ... > ... [true] | Patterns.cs:25:17:25:52 | ...; | | +| Patterns.cs:24:30:24:35 | Before ... > ... | Patterns.cs:24:30:24:31 | access to local variable i2 | | | Patterns.cs:24:35:24:35 | 0 | Patterns.cs:24:30:24:35 | ... > ... | | -| Patterns.cs:25:17:25:51 | call to method WriteLine | Patterns.cs:26:17:26:22 | break; | | -| Patterns.cs:25:17:25:52 | ...; | Patterns.cs:25:37:25:45 | "positive " | | -| Patterns.cs:25:35:25:50 | $"..." | Patterns.cs:25:17:25:51 | call to method WriteLine | | -| Patterns.cs:25:37:25:45 | "positive " | Patterns.cs:25:47:25:48 | access to local variable i2 | | -| Patterns.cs:25:46:25:49 | {...} | Patterns.cs:25:35:25:50 | $"..." | | +| Patterns.cs:25:17:25:51 | After call to method WriteLine | Patterns.cs:25:17:25:52 | After ...; | | +| Patterns.cs:25:17:25:51 | Before call to method WriteLine | Patterns.cs:25:35:25:50 | Before $"..." | | +| Patterns.cs:25:17:25:51 | call to method WriteLine | Patterns.cs:25:17:25:51 | After call to method WriteLine | | +| Patterns.cs:25:17:25:52 | ...; | Patterns.cs:25:17:25:51 | Before call to method WriteLine | | +| Patterns.cs:25:17:25:52 | After ...; | Patterns.cs:26:17:26:22 | Before break; | | +| Patterns.cs:25:35:25:50 | $"..." | Patterns.cs:25:35:25:50 | After $"..." | | +| Patterns.cs:25:35:25:50 | After $"..." | Patterns.cs:25:17:25:51 | call to method WriteLine | | +| Patterns.cs:25:35:25:50 | Before $"..." | Patterns.cs:25:37:25:45 | "positive " | | +| Patterns.cs:25:37:25:45 | "positive " | Patterns.cs:25:46:25:49 | Before {...} | | +| Patterns.cs:25:46:25:49 | After {...} | Patterns.cs:25:35:25:50 | $"..." | | +| Patterns.cs:25:46:25:49 | Before {...} | Patterns.cs:25:47:25:48 | access to local variable i2 | | +| Patterns.cs:25:46:25:49 | {...} | Patterns.cs:25:46:25:49 | After {...} | | | Patterns.cs:25:47:25:48 | access to local variable i2 | Patterns.cs:25:46:25:49 | {...} | | -| Patterns.cs:26:17:26:22 | break; | Patterns.cs:40:9:42:9 | switch (...) {...} | break | +| Patterns.cs:26:17:26:22 | Before break; | Patterns.cs:26:17:26:22 | break; | | +| Patterns.cs:26:17:26:22 | break; | Patterns.cs:20:9:38:9 | After switch (...) {...} | break | +| Patterns.cs:27:13:27:24 | After case ...: [match] | Patterns.cs:28:17:28:47 | ...; | | +| Patterns.cs:27:13:27:24 | After case ...: [no-match] | Patterns.cs:30:13:30:27 | case ...: | | | Patterns.cs:27:13:27:24 | case ...: | Patterns.cs:27:18:27:23 | Int32 i3 | | -| Patterns.cs:27:18:27:23 | Int32 i3 | Patterns.cs:28:17:28:47 | ...; | match | -| Patterns.cs:27:18:27:23 | Int32 i3 | Patterns.cs:30:13:30:27 | case ...: | no-match | -| Patterns.cs:28:17:28:46 | call to method WriteLine | Patterns.cs:29:17:29:22 | break; | | -| Patterns.cs:28:17:28:47 | ...; | Patterns.cs:28:37:28:40 | "int " | | -| Patterns.cs:28:35:28:45 | $"..." | Patterns.cs:28:17:28:46 | call to method WriteLine | | -| Patterns.cs:28:37:28:40 | "int " | Patterns.cs:28:42:28:43 | access to local variable i3 | | -| Patterns.cs:28:41:28:44 | {...} | Patterns.cs:28:35:28:45 | $"..." | | +| Patterns.cs:27:18:27:23 | After Int32 i3 [match] | Patterns.cs:27:13:27:24 | After case ...: [match] | match | +| Patterns.cs:27:18:27:23 | After Int32 i3 [no-match] | Patterns.cs:27:13:27:24 | After case ...: [no-match] | no-match | +| Patterns.cs:27:18:27:23 | Int32 i3 | Patterns.cs:27:18:27:23 | After Int32 i3 [match] | match | +| Patterns.cs:27:18:27:23 | Int32 i3 | Patterns.cs:27:18:27:23 | After Int32 i3 [no-match] | no-match | +| Patterns.cs:28:17:28:46 | After call to method WriteLine | Patterns.cs:28:17:28:47 | After ...; | | +| Patterns.cs:28:17:28:46 | Before call to method WriteLine | Patterns.cs:28:35:28:45 | Before $"..." | | +| Patterns.cs:28:17:28:46 | call to method WriteLine | Patterns.cs:28:17:28:46 | After call to method WriteLine | | +| Patterns.cs:28:17:28:47 | ...; | Patterns.cs:28:17:28:46 | Before call to method WriteLine | | +| Patterns.cs:28:17:28:47 | After ...; | Patterns.cs:29:17:29:22 | Before break; | | +| Patterns.cs:28:35:28:45 | $"..." | Patterns.cs:28:35:28:45 | After $"..." | | +| Patterns.cs:28:35:28:45 | After $"..." | Patterns.cs:28:17:28:46 | call to method WriteLine | | +| Patterns.cs:28:35:28:45 | Before $"..." | Patterns.cs:28:37:28:40 | "int " | | +| Patterns.cs:28:37:28:40 | "int " | Patterns.cs:28:41:28:44 | Before {...} | | +| Patterns.cs:28:41:28:44 | After {...} | Patterns.cs:28:35:28:45 | $"..." | | +| Patterns.cs:28:41:28:44 | Before {...} | Patterns.cs:28:42:28:43 | access to local variable i3 | | +| Patterns.cs:28:41:28:44 | {...} | Patterns.cs:28:41:28:44 | After {...} | | | Patterns.cs:28:42:28:43 | access to local variable i3 | Patterns.cs:28:41:28:44 | {...} | | -| Patterns.cs:29:17:29:22 | break; | Patterns.cs:40:9:42:9 | switch (...) {...} | break | +| Patterns.cs:29:17:29:22 | Before break; | Patterns.cs:29:17:29:22 | break; | | +| Patterns.cs:29:17:29:22 | break; | Patterns.cs:20:9:38:9 | After switch (...) {...} | break | +| Patterns.cs:30:13:30:27 | After case ...: [match] | Patterns.cs:31:17:31:50 | ...; | | +| Patterns.cs:30:13:30:27 | After case ...: [no-match] | Patterns.cs:33:13:33:24 | case ...: | | | Patterns.cs:30:13:30:27 | case ...: | Patterns.cs:30:18:30:26 | String s2 | | -| Patterns.cs:30:18:30:26 | String s2 | Patterns.cs:31:17:31:50 | ...; | match | -| Patterns.cs:30:18:30:26 | String s2 | Patterns.cs:33:13:33:24 | case ...: | no-match | -| Patterns.cs:31:17:31:49 | call to method WriteLine | Patterns.cs:32:17:32:22 | break; | | -| Patterns.cs:31:17:31:50 | ...; | Patterns.cs:31:37:31:43 | "string " | | -| Patterns.cs:31:35:31:48 | $"..." | Patterns.cs:31:17:31:49 | call to method WriteLine | | -| Patterns.cs:31:37:31:43 | "string " | Patterns.cs:31:45:31:46 | access to local variable s2 | | -| Patterns.cs:31:44:31:47 | {...} | Patterns.cs:31:35:31:48 | $"..." | | +| Patterns.cs:30:18:30:26 | After String s2 [match] | Patterns.cs:30:13:30:27 | After case ...: [match] | match | +| Patterns.cs:30:18:30:26 | After String s2 [no-match] | Patterns.cs:30:13:30:27 | After case ...: [no-match] | no-match | +| Patterns.cs:30:18:30:26 | String s2 | Patterns.cs:30:18:30:26 | After String s2 [match] | match | +| Patterns.cs:30:18:30:26 | String s2 | Patterns.cs:30:18:30:26 | After String s2 [no-match] | no-match | +| Patterns.cs:31:17:31:49 | After call to method WriteLine | Patterns.cs:31:17:31:50 | After ...; | | +| Patterns.cs:31:17:31:49 | Before call to method WriteLine | Patterns.cs:31:35:31:48 | Before $"..." | | +| Patterns.cs:31:17:31:49 | call to method WriteLine | Patterns.cs:31:17:31:49 | After call to method WriteLine | | +| Patterns.cs:31:17:31:50 | ...; | Patterns.cs:31:17:31:49 | Before call to method WriteLine | | +| Patterns.cs:31:17:31:50 | After ...; | Patterns.cs:32:17:32:22 | Before break; | | +| Patterns.cs:31:35:31:48 | $"..." | Patterns.cs:31:35:31:48 | After $"..." | | +| Patterns.cs:31:35:31:48 | After $"..." | Patterns.cs:31:17:31:49 | call to method WriteLine | | +| Patterns.cs:31:35:31:48 | Before $"..." | Patterns.cs:31:37:31:43 | "string " | | +| Patterns.cs:31:37:31:43 | "string " | Patterns.cs:31:44:31:47 | Before {...} | | +| Patterns.cs:31:44:31:47 | After {...} | Patterns.cs:31:35:31:48 | $"..." | | +| Patterns.cs:31:44:31:47 | Before {...} | Patterns.cs:31:45:31:46 | access to local variable s2 | | +| Patterns.cs:31:44:31:47 | {...} | Patterns.cs:31:44:31:47 | After {...} | | | Patterns.cs:31:45:31:46 | access to local variable s2 | Patterns.cs:31:44:31:47 | {...} | | -| Patterns.cs:32:17:32:22 | break; | Patterns.cs:40:9:42:9 | switch (...) {...} | break | +| Patterns.cs:32:17:32:22 | Before break; | Patterns.cs:32:17:32:22 | break; | | +| Patterns.cs:32:17:32:22 | break; | Patterns.cs:20:9:38:9 | After switch (...) {...} | break | +| Patterns.cs:33:13:33:24 | After case ...: [match] | Patterns.cs:34:17:34:22 | Before break; | | +| Patterns.cs:33:13:33:24 | After case ...: [no-match] | Patterns.cs:35:13:35:20 | default: | | | Patterns.cs:33:13:33:24 | case ...: | Patterns.cs:33:18:33:23 | Object v2 | | -| Patterns.cs:33:18:33:23 | Object v2 | Patterns.cs:34:17:34:22 | break; | match | -| Patterns.cs:33:18:33:23 | Object v2 | Patterns.cs:35:13:35:20 | default: | no-match | -| Patterns.cs:34:17:34:22 | break; | Patterns.cs:40:9:42:9 | switch (...) {...} | break | -| Patterns.cs:35:13:35:20 | default: | Patterns.cs:36:17:36:52 | ...; | | -| Patterns.cs:36:17:36:51 | call to method WriteLine | Patterns.cs:37:17:37:22 | break; | | -| Patterns.cs:36:17:36:52 | ...; | Patterns.cs:36:35:36:50 | "Something else" | | +| Patterns.cs:33:18:33:23 | After Object v2 [match] | Patterns.cs:33:13:33:24 | After case ...: [match] | match | +| Patterns.cs:33:18:33:23 | After Object v2 [no-match] | Patterns.cs:33:13:33:24 | After case ...: [no-match] | no-match | +| Patterns.cs:33:18:33:23 | Object v2 | Patterns.cs:33:18:33:23 | After Object v2 [match] | match | +| Patterns.cs:33:18:33:23 | Object v2 | Patterns.cs:33:18:33:23 | After Object v2 [no-match] | no-match | +| Patterns.cs:34:17:34:22 | Before break; | Patterns.cs:34:17:34:22 | break; | | +| Patterns.cs:34:17:34:22 | break; | Patterns.cs:20:9:38:9 | After switch (...) {...} | break | +| Patterns.cs:35:13:35:20 | After default: [match] | Patterns.cs:36:17:36:52 | ...; | | +| Patterns.cs:35:13:35:20 | default: | Patterns.cs:35:13:35:20 | After default: [match] | match | +| Patterns.cs:36:17:36:51 | After call to method WriteLine | Patterns.cs:36:17:36:52 | After ...; | | +| Patterns.cs:36:17:36:51 | Before call to method WriteLine | Patterns.cs:36:35:36:50 | "Something else" | | +| Patterns.cs:36:17:36:51 | call to method WriteLine | Patterns.cs:36:17:36:51 | After call to method WriteLine | | +| Patterns.cs:36:17:36:52 | ...; | Patterns.cs:36:17:36:51 | Before call to method WriteLine | | +| Patterns.cs:36:17:36:52 | After ...; | Patterns.cs:37:17:37:22 | Before break; | | | Patterns.cs:36:35:36:50 | "Something else" | Patterns.cs:36:17:36:51 | call to method WriteLine | | -| Patterns.cs:37:17:37:22 | break; | Patterns.cs:40:9:42:9 | switch (...) {...} | break | +| Patterns.cs:37:17:37:22 | Before break; | Patterns.cs:37:17:37:22 | break; | | +| Patterns.cs:37:17:37:22 | break; | Patterns.cs:20:9:38:9 | After switch (...) {...} | break | +| Patterns.cs:40:9:42:9 | After switch (...) {...} | Patterns.cs:6:5:43:5 | After {...} | | | Patterns.cs:40:9:42:9 | switch (...) {...} | Patterns.cs:40:17:40:17 | access to local variable o | | -| Patterns.cs:40:17:40:17 | access to local variable o | Patterns.cs:5:10:5:11 | exit M1 (normal) | | -| Patterns.cs:47:24:47:25 | enter M2 | Patterns.cs:48:9:48:9 | access to parameter c | | -| Patterns.cs:47:24:47:25 | exit M2 (normal) | Patterns.cs:47:24:47:25 | exit M2 | | -| Patterns.cs:48:9:48:9 | access to parameter c | Patterns.cs:48:18:48:20 | a | | -| Patterns.cs:48:9:48:20 | ... is ... | Patterns.cs:47:24:47:25 | exit M2 (normal) | | -| Patterns.cs:48:14:48:20 | not ... | Patterns.cs:48:9:48:20 | ... is ... | | +| Patterns.cs:40:17:40:17 | access to local variable o | Patterns.cs:40:9:42:9 | After switch (...) {...} | | +| Patterns.cs:47:24:47:25 | Entry | Patterns.cs:47:32:47:32 | c | | +| Patterns.cs:47:24:47:25 | Normal Exit | Patterns.cs:47:24:47:25 | Exit | | +| Patterns.cs:47:32:47:32 | c | Patterns.cs:48:9:48:20 | Before ... is ... | | +| Patterns.cs:48:9:48:9 | access to parameter c | Patterns.cs:48:9:48:20 | ... is ... | | +| Patterns.cs:48:9:48:20 | ... is ... | Patterns.cs:48:9:48:20 | After ... is ... | | +| Patterns.cs:48:9:48:20 | ... is ... | Patterns.cs:48:9:48:20 | [MatchTrue] ... is ... | true | +| Patterns.cs:48:9:48:20 | After ... is ... | Patterns.cs:47:24:47:25 | Normal Exit | | +| Patterns.cs:48:9:48:20 | Before ... is ... | Patterns.cs:48:9:48:9 | access to parameter c | | +| Patterns.cs:48:9:48:20 | [MatchTrue] ... is ... | Patterns.cs:48:14:48:20 | Before not ... | | +| Patterns.cs:48:14:48:20 | After not ... | Patterns.cs:48:9:48:20 | After ... is ... | | +| Patterns.cs:48:14:48:20 | Before not ... | Patterns.cs:48:18:48:20 | a | | +| Patterns.cs:48:14:48:20 | not ... | Patterns.cs:48:14:48:20 | After not ... | | | Patterns.cs:48:18:48:20 | a | Patterns.cs:48:14:48:20 | not ... | | -| Patterns.cs:50:24:50:25 | enter M3 | Patterns.cs:51:9:51:9 | access to parameter c | | -| Patterns.cs:50:24:50:25 | exit M3 (normal) | Patterns.cs:50:24:50:25 | exit M3 | | -| Patterns.cs:51:9:51:9 | access to parameter c | Patterns.cs:51:18:51:21 | null | | -| Patterns.cs:51:9:51:21 | [false] ... is ... | Patterns.cs:51:34:51:34 | access to parameter c | false | -| Patterns.cs:51:9:51:21 | [true] ... is ... | Patterns.cs:51:25:51:25 | access to parameter c | true | -| Patterns.cs:51:9:51:39 | ... ? ... : ... | Patterns.cs:50:24:50:25 | exit M3 (normal) | | -| Patterns.cs:51:14:51:21 | [match] not ... | Patterns.cs:51:9:51:21 | [true] ... is ... | match | -| Patterns.cs:51:14:51:21 | [no-match] not ... | Patterns.cs:51:9:51:21 | [false] ... is ... | no-match | -| Patterns.cs:51:18:51:21 | null | Patterns.cs:51:14:51:21 | [match] not ... | no-match | -| Patterns.cs:51:18:51:21 | null | Patterns.cs:51:14:51:21 | [no-match] not ... | match | -| Patterns.cs:51:25:51:25 | access to parameter c | Patterns.cs:51:30:51:30 | 1 | | -| Patterns.cs:51:25:51:30 | ... is ... | Patterns.cs:51:9:51:39 | ... ? ... : ... | | -| Patterns.cs:51:30:51:30 | 1 | Patterns.cs:51:25:51:30 | ... is ... | | -| Patterns.cs:51:34:51:34 | access to parameter c | Patterns.cs:51:39:51:39 | 2 | | -| Patterns.cs:51:34:51:39 | ... is ... | Patterns.cs:51:9:51:39 | ... ? ... : ... | | -| Patterns.cs:51:39:51:39 | 2 | Patterns.cs:51:34:51:39 | ... is ... | | -| Patterns.cs:53:24:53:25 | enter M4 | Patterns.cs:54:9:54:9 | access to parameter c | | -| Patterns.cs:53:24:53:25 | exit M4 (normal) | Patterns.cs:53:24:53:25 | exit M4 | | -| Patterns.cs:54:9:54:9 | access to parameter c | Patterns.cs:54:18:54:37 | Patterns u | | -| Patterns.cs:54:9:54:37 | ... is ... | Patterns.cs:53:24:53:25 | exit M4 (normal) | | -| Patterns.cs:54:14:54:37 | not ... | Patterns.cs:54:9:54:37 | ... is ... | | -| Patterns.cs:54:18:54:37 | Patterns u | Patterns.cs:54:18:54:37 | { ... } | no-match | -| Patterns.cs:54:18:54:37 | Patterns u | Patterns.cs:54:33:54:33 | 1 | match | -| Patterns.cs:54:18:54:37 | { ... } | Patterns.cs:54:14:54:37 | not ... | | -| Patterns.cs:54:27:54:35 | [match] { ... } | Patterns.cs:54:18:54:37 | { ... } | match | -| Patterns.cs:54:27:54:35 | [no-match] { ... } | Patterns.cs:54:18:54:37 | { ... } | no-match | -| Patterns.cs:54:33:54:33 | 1 | Patterns.cs:54:27:54:35 | [match] { ... } | match | -| Patterns.cs:54:33:54:33 | 1 | Patterns.cs:54:27:54:35 | [no-match] { ... } | no-match | -| Patterns.cs:56:26:56:27 | enter M5 | Patterns.cs:57:5:63:5 | {...} | | -| Patterns.cs:56:26:56:27 | exit M5 (normal) | Patterns.cs:56:26:56:27 | exit M5 | | -| Patterns.cs:57:5:63:5 | {...} | Patterns.cs:58:16:58:16 | access to parameter i | | -| Patterns.cs:58:9:62:10 | return ...; | Patterns.cs:56:26:56:27 | exit M5 (normal) | return | -| Patterns.cs:58:16:58:16 | access to parameter i | Patterns.cs:60:17:60:17 | 1 | | -| Patterns.cs:58:16:62:9 | ... switch { ... } | Patterns.cs:58:9:62:10 | return ...; | | -| Patterns.cs:60:13:60:17 | [match] not ... | Patterns.cs:60:22:60:28 | "not 1" | match | -| Patterns.cs:60:13:60:17 | [no-match] not ... | Patterns.cs:61:13:61:13 | _ | no-match | -| Patterns.cs:60:13:60:28 | ... => ... | Patterns.cs:58:16:62:9 | ... switch { ... } | | -| Patterns.cs:60:17:60:17 | 1 | Patterns.cs:60:13:60:17 | [match] not ... | no-match | -| Patterns.cs:60:17:60:17 | 1 | Patterns.cs:60:13:60:17 | [no-match] not ... | match | -| Patterns.cs:60:22:60:28 | "not 1" | Patterns.cs:60:13:60:28 | ... => ... | | -| Patterns.cs:61:13:61:13 | _ | Patterns.cs:61:18:61:24 | "other" | match | -| Patterns.cs:61:13:61:24 | ... => ... | Patterns.cs:58:16:62:9 | ... switch { ... } | | -| Patterns.cs:61:18:61:24 | "other" | Patterns.cs:61:13:61:24 | ... => ... | | -| Patterns.cs:65:26:65:27 | enter M6 | Patterns.cs:66:5:72:5 | {...} | | -| Patterns.cs:65:26:65:27 | exit M6 (normal) | Patterns.cs:65:26:65:27 | exit M6 | | -| Patterns.cs:66:5:72:5 | {...} | Patterns.cs:67:16:67:16 | 2 | | -| Patterns.cs:67:9:71:10 | return ...; | Patterns.cs:65:26:65:27 | exit M6 (normal) | return | -| Patterns.cs:67:16:67:16 | 2 | Patterns.cs:69:17:69:17 | 2 | | -| Patterns.cs:67:16:71:9 | ... switch { ... } | Patterns.cs:67:9:71:10 | return ...; | | -| Patterns.cs:69:13:69:17 | [no-match] not ... | Patterns.cs:70:13:70:13 | 2 | no-match | -| Patterns.cs:69:17:69:17 | 2 | Patterns.cs:69:13:69:17 | [no-match] not ... | match | -| Patterns.cs:70:13:70:13 | 2 | Patterns.cs:70:18:70:27 | "possible" | match | -| Patterns.cs:70:13:70:27 | ... => ... | Patterns.cs:67:16:71:9 | ... switch { ... } | | -| Patterns.cs:70:18:70:27 | "possible" | Patterns.cs:70:13:70:27 | ... => ... | | -| Patterns.cs:74:26:74:27 | enter M7 | Patterns.cs:75:5:83:5 | {...} | | -| Patterns.cs:74:26:74:27 | exit M7 (normal) | Patterns.cs:74:26:74:27 | exit M7 | | -| Patterns.cs:75:5:83:5 | {...} | Patterns.cs:76:16:76:16 | access to parameter i | | -| Patterns.cs:76:9:82:10 | return ...; | Patterns.cs:74:26:74:27 | exit M7 (normal) | return | -| Patterns.cs:76:16:76:16 | access to parameter i | Patterns.cs:78:15:78:15 | 1 | | -| Patterns.cs:76:16:82:9 | ... switch { ... } | Patterns.cs:76:9:82:10 | return ...; | | -| Patterns.cs:78:13:78:15 | > ... | Patterns.cs:78:20:78:24 | "> 1" | match | -| Patterns.cs:78:13:78:15 | > ... | Patterns.cs:79:15:79:15 | 0 | no-match | -| Patterns.cs:78:13:78:24 | ... => ... | Patterns.cs:76:16:82:9 | ... switch { ... } | | +| Patterns.cs:50:24:50:25 | Entry | Patterns.cs:50:34:50:34 | c | | +| Patterns.cs:50:24:50:25 | Normal Exit | Patterns.cs:50:24:50:25 | Exit | | +| Patterns.cs:50:34:50:34 | c | Patterns.cs:51:9:51:39 | ... ? ... : ... | | +| Patterns.cs:51:9:51:9 | access to parameter c | Patterns.cs:51:9:51:21 | ... is ... | | +| Patterns.cs:51:9:51:21 | ... is ... | Patterns.cs:51:9:51:21 | After ... is ... [false] | false | +| Patterns.cs:51:9:51:21 | ... is ... | Patterns.cs:51:9:51:21 | [MatchTrue] ... is ... | true | +| Patterns.cs:51:9:51:21 | After ... is ... [false] | Patterns.cs:51:34:51:39 | Before ... is ... | | +| Patterns.cs:51:9:51:21 | After ... is ... [true] | Patterns.cs:51:25:51:30 | Before ... is ... | | +| Patterns.cs:51:9:51:21 | Before ... is ... | Patterns.cs:51:9:51:9 | access to parameter c | | +| Patterns.cs:51:9:51:21 | [MatchTrue] ... is ... | Patterns.cs:51:14:51:21 | Before not ... | | +| Patterns.cs:51:9:51:39 | ... ? ... : ... | Patterns.cs:51:9:51:21 | Before ... is ... | | +| Patterns.cs:51:9:51:39 | After ... ? ... : ... | Patterns.cs:50:24:50:25 | Normal Exit | | +| Patterns.cs:51:14:51:21 | After not ... | Patterns.cs:51:9:51:21 | After ... is ... [true] | true | +| Patterns.cs:51:14:51:21 | Before not ... | Patterns.cs:51:18:51:21 | null | | +| Patterns.cs:51:14:51:21 | not ... | Patterns.cs:51:14:51:21 | After not ... | | +| Patterns.cs:51:18:51:21 | null | Patterns.cs:51:14:51:21 | not ... | | +| Patterns.cs:51:25:51:25 | access to parameter c | Patterns.cs:51:25:51:30 | ... is ... | | +| Patterns.cs:51:25:51:30 | ... is ... | Patterns.cs:51:25:51:30 | After ... is ... | | +| Patterns.cs:51:25:51:30 | ... is ... | Patterns.cs:51:25:51:30 | [MatchTrue] ... is ... | true | +| Patterns.cs:51:25:51:30 | After ... is ... | Patterns.cs:51:9:51:39 | After ... ? ... : ... | | +| Patterns.cs:51:25:51:30 | Before ... is ... | Patterns.cs:51:25:51:25 | access to parameter c | | +| Patterns.cs:51:25:51:30 | [MatchTrue] ... is ... | Patterns.cs:51:30:51:30 | 1 | | +| Patterns.cs:51:30:51:30 | 1 | Patterns.cs:51:25:51:30 | After ... is ... | | +| Patterns.cs:51:34:51:34 | access to parameter c | Patterns.cs:51:34:51:39 | ... is ... | | +| Patterns.cs:51:34:51:39 | ... is ... | Patterns.cs:51:34:51:39 | After ... is ... | | +| Patterns.cs:51:34:51:39 | ... is ... | Patterns.cs:51:34:51:39 | [MatchTrue] ... is ... | true | +| Patterns.cs:51:34:51:39 | After ... is ... | Patterns.cs:51:9:51:39 | After ... ? ... : ... | | +| Patterns.cs:51:34:51:39 | Before ... is ... | Patterns.cs:51:34:51:34 | access to parameter c | | +| Patterns.cs:51:34:51:39 | [MatchTrue] ... is ... | Patterns.cs:51:39:51:39 | 2 | | +| Patterns.cs:51:39:51:39 | 2 | Patterns.cs:51:34:51:39 | After ... is ... | | +| Patterns.cs:53:24:53:25 | Entry | Patterns.cs:53:34:53:34 | c | | +| Patterns.cs:53:24:53:25 | Normal Exit | Patterns.cs:53:24:53:25 | Exit | | +| Patterns.cs:53:34:53:34 | c | Patterns.cs:54:9:54:37 | Before ... is ... | | +| Patterns.cs:54:9:54:9 | access to parameter c | Patterns.cs:54:9:54:37 | ... is ... | | +| Patterns.cs:54:9:54:37 | ... is ... | Patterns.cs:54:9:54:37 | After ... is ... | | +| Patterns.cs:54:9:54:37 | ... is ... | Patterns.cs:54:9:54:37 | [MatchTrue] ... is ... | true | +| Patterns.cs:54:9:54:37 | After ... is ... | Patterns.cs:53:24:53:25 | Normal Exit | | +| Patterns.cs:54:9:54:37 | Before ... is ... | Patterns.cs:54:9:54:9 | access to parameter c | | +| Patterns.cs:54:9:54:37 | [MatchTrue] ... is ... | Patterns.cs:54:14:54:37 | Before not ... | | +| Patterns.cs:54:14:54:37 | After not ... | Patterns.cs:54:9:54:37 | After ... is ... | | +| Patterns.cs:54:14:54:37 | Before not ... | Patterns.cs:54:18:54:37 | Before { ... } | | +| Patterns.cs:54:14:54:37 | not ... | Patterns.cs:54:14:54:37 | After not ... | | +| Patterns.cs:54:18:54:25 | access to type Patterns | Patterns.cs:54:27:54:35 | Before { ... } | | +| Patterns.cs:54:18:54:37 | After { ... } | Patterns.cs:54:14:54:37 | not ... | | +| Patterns.cs:54:18:54:37 | Before { ... } | Patterns.cs:54:18:54:37 | Patterns u | | +| Patterns.cs:54:18:54:37 | Patterns u | Patterns.cs:54:18:54:25 | access to type Patterns | | +| Patterns.cs:54:18:54:37 | { ... } | Patterns.cs:54:18:54:37 | After { ... } | | +| Patterns.cs:54:27:54:35 | After { ... } | Patterns.cs:54:18:54:37 | { ... } | | +| Patterns.cs:54:27:54:35 | Before { ... } | Patterns.cs:54:33:54:33 | 1 | | +| Patterns.cs:54:27:54:35 | { ... } | Patterns.cs:54:27:54:35 | After { ... } | | +| Patterns.cs:54:33:54:33 | 1 | Patterns.cs:54:27:54:35 | { ... } | | +| Patterns.cs:56:26:56:27 | Entry | Patterns.cs:56:33:56:33 | i | | +| Patterns.cs:56:26:56:27 | Normal Exit | Patterns.cs:56:26:56:27 | Exit | | +| Patterns.cs:56:33:56:33 | i | Patterns.cs:57:5:63:5 | {...} | | +| Patterns.cs:57:5:63:5 | {...} | Patterns.cs:58:9:62:10 | Before return ...; | | +| Patterns.cs:58:9:62:10 | Before return ...; | Patterns.cs:58:16:62:9 | ... switch { ... } | | +| Patterns.cs:58:9:62:10 | return ...; | Patterns.cs:56:26:56:27 | Normal Exit | return | +| Patterns.cs:58:16:58:16 | access to parameter i | Patterns.cs:60:13:60:28 | ... => ... | | +| Patterns.cs:58:16:62:9 | ... switch { ... } | Patterns.cs:58:16:58:16 | access to parameter i | | +| Patterns.cs:58:16:62:9 | After ... switch { ... } | Patterns.cs:58:9:62:10 | return ...; | | +| Patterns.cs:60:13:60:17 | After not ... [match] | Patterns.cs:60:13:60:28 | After ... => ... [match] | match | +| Patterns.cs:60:13:60:17 | After not ... [no-match] | Patterns.cs:60:13:60:28 | After ... => ... [no-match] | no-match | +| Patterns.cs:60:13:60:17 | Before not ... | Patterns.cs:60:17:60:17 | 1 | | +| Patterns.cs:60:13:60:17 | not ... | Patterns.cs:60:13:60:17 | After not ... [match] | match | +| Patterns.cs:60:13:60:17 | not ... | Patterns.cs:60:13:60:17 | After not ... [no-match] | no-match | +| Patterns.cs:60:13:60:28 | ... => ... | Patterns.cs:60:13:60:17 | Before not ... | | +| Patterns.cs:60:13:60:28 | After ... => ... [match] | Patterns.cs:60:22:60:28 | "not 1" | | +| Patterns.cs:60:13:60:28 | After ... => ... [no-match] | Patterns.cs:61:13:61:24 | ... => ... | | +| Patterns.cs:60:17:60:17 | 1 | Patterns.cs:60:13:60:17 | not ... | | +| Patterns.cs:60:22:60:28 | "not 1" | Patterns.cs:58:16:62:9 | After ... switch { ... } | | +| Patterns.cs:61:13:61:13 | After _ [match] | Patterns.cs:61:13:61:24 | After ... => ... [match] | match | +| Patterns.cs:61:13:61:13 | _ | Patterns.cs:61:13:61:13 | After _ [match] | match | +| Patterns.cs:61:13:61:24 | ... => ... | Patterns.cs:61:13:61:13 | _ | | +| Patterns.cs:61:13:61:24 | After ... => ... [match] | Patterns.cs:61:18:61:24 | "other" | | +| Patterns.cs:61:18:61:24 | "other" | Patterns.cs:58:16:62:9 | After ... switch { ... } | | +| Patterns.cs:65:26:65:27 | Entry | Patterns.cs:66:5:72:5 | {...} | | +| Patterns.cs:65:26:65:27 | Normal Exit | Patterns.cs:65:26:65:27 | Exit | | +| Patterns.cs:66:5:72:5 | {...} | Patterns.cs:67:9:71:10 | Before return ...; | | +| Patterns.cs:67:9:71:10 | Before return ...; | Patterns.cs:67:16:71:9 | ... switch { ... } | | +| Patterns.cs:67:9:71:10 | return ...; | Patterns.cs:65:26:65:27 | Normal Exit | return | +| Patterns.cs:67:16:67:16 | 2 | Patterns.cs:69:13:69:33 | ... => ... | | +| Patterns.cs:67:16:71:9 | ... switch { ... } | Patterns.cs:67:16:67:16 | 2 | | +| Patterns.cs:67:16:71:9 | After ... switch { ... } | Patterns.cs:67:9:71:10 | return ...; | | +| Patterns.cs:69:13:69:17 | After not ... [match] | Patterns.cs:69:13:69:33 | After ... => ... [match] | match | +| Patterns.cs:69:13:69:17 | After not ... [no-match] | Patterns.cs:69:13:69:33 | After ... => ... [no-match] | no-match | +| Patterns.cs:69:13:69:17 | Before not ... | Patterns.cs:69:17:69:17 | 2 | | +| Patterns.cs:69:13:69:17 | not ... | Patterns.cs:69:13:69:17 | After not ... [match] | match | +| Patterns.cs:69:13:69:17 | not ... | Patterns.cs:69:13:69:17 | After not ... [no-match] | no-match | +| Patterns.cs:69:13:69:33 | ... => ... | Patterns.cs:69:13:69:17 | Before not ... | | +| Patterns.cs:69:13:69:33 | After ... => ... [match] | Patterns.cs:69:22:69:33 | "impossible" | | +| Patterns.cs:69:13:69:33 | After ... => ... [no-match] | Patterns.cs:70:13:70:27 | ... => ... | | +| Patterns.cs:69:17:69:17 | 2 | Patterns.cs:69:13:69:17 | not ... | | +| Patterns.cs:69:22:69:33 | "impossible" | Patterns.cs:67:16:71:9 | After ... switch { ... } | | +| Patterns.cs:70:13:70:13 | 2 | Patterns.cs:70:13:70:13 | After 2 [match] | match | +| Patterns.cs:70:13:70:13 | 2 | Patterns.cs:70:13:70:13 | After 2 [no-match] | no-match | +| Patterns.cs:70:13:70:13 | After 2 [match] | Patterns.cs:70:13:70:27 | After ... => ... [match] | match | +| Patterns.cs:70:13:70:13 | After 2 [no-match] | Patterns.cs:70:13:70:27 | After ... => ... [no-match] | no-match | +| Patterns.cs:70:13:70:27 | ... => ... | Patterns.cs:70:13:70:13 | 2 | | +| Patterns.cs:70:13:70:27 | After ... => ... [match] | Patterns.cs:70:18:70:27 | "possible" | | +| Patterns.cs:70:13:70:27 | After ... => ... [no-match] | Patterns.cs:67:16:71:9 | After ... switch { ... } | | +| Patterns.cs:70:18:70:27 | "possible" | Patterns.cs:67:16:71:9 | After ... switch { ... } | | +| Patterns.cs:74:26:74:27 | Entry | Patterns.cs:74:33:74:33 | i | | +| Patterns.cs:74:26:74:27 | Normal Exit | Patterns.cs:74:26:74:27 | Exit | | +| Patterns.cs:74:33:74:33 | i | Patterns.cs:75:5:83:5 | {...} | | +| Patterns.cs:75:5:83:5 | {...} | Patterns.cs:76:9:82:10 | Before return ...; | | +| Patterns.cs:76:9:82:10 | Before return ...; | Patterns.cs:76:16:82:9 | ... switch { ... } | | +| Patterns.cs:76:9:82:10 | return ...; | Patterns.cs:74:26:74:27 | Normal Exit | return | +| Patterns.cs:76:16:76:16 | access to parameter i | Patterns.cs:78:13:78:24 | ... => ... | | +| Patterns.cs:76:16:82:9 | ... switch { ... } | Patterns.cs:76:16:76:16 | access to parameter i | | +| Patterns.cs:76:16:82:9 | After ... switch { ... } | Patterns.cs:76:9:82:10 | return ...; | | +| Patterns.cs:78:13:78:15 | > ... | Patterns.cs:78:13:78:15 | After > ... [match] | match | +| Patterns.cs:78:13:78:15 | > ... | Patterns.cs:78:13:78:15 | After > ... [no-match] | no-match | +| Patterns.cs:78:13:78:15 | After > ... [match] | Patterns.cs:78:13:78:24 | After ... => ... [match] | match | +| Patterns.cs:78:13:78:15 | After > ... [no-match] | Patterns.cs:78:13:78:24 | After ... => ... [no-match] | no-match | +| Patterns.cs:78:13:78:15 | Before > ... | Patterns.cs:78:15:78:15 | 1 | | +| Patterns.cs:78:13:78:24 | ... => ... | Patterns.cs:78:13:78:15 | Before > ... | | +| Patterns.cs:78:13:78:24 | After ... => ... [match] | Patterns.cs:78:20:78:24 | "> 1" | | +| Patterns.cs:78:13:78:24 | After ... => ... [no-match] | Patterns.cs:79:13:79:24 | ... => ... | | | Patterns.cs:78:15:78:15 | 1 | Patterns.cs:78:13:78:15 | > ... | | -| Patterns.cs:78:20:78:24 | "> 1" | Patterns.cs:78:13:78:24 | ... => ... | | -| Patterns.cs:79:13:79:15 | < ... | Patterns.cs:79:20:79:24 | "< 0" | match | -| Patterns.cs:79:13:79:15 | < ... | Patterns.cs:80:13:80:13 | 1 | no-match | -| Patterns.cs:79:13:79:24 | ... => ... | Patterns.cs:76:16:82:9 | ... switch { ... } | | +| Patterns.cs:78:20:78:24 | "> 1" | Patterns.cs:76:16:82:9 | After ... switch { ... } | | +| Patterns.cs:79:13:79:15 | < ... | Patterns.cs:79:13:79:15 | After < ... [match] | match | +| Patterns.cs:79:13:79:15 | < ... | Patterns.cs:79:13:79:15 | After < ... [no-match] | no-match | +| Patterns.cs:79:13:79:15 | After < ... [match] | Patterns.cs:79:13:79:24 | After ... => ... [match] | match | +| Patterns.cs:79:13:79:15 | After < ... [no-match] | Patterns.cs:79:13:79:24 | After ... => ... [no-match] | no-match | +| Patterns.cs:79:13:79:15 | Before < ... | Patterns.cs:79:15:79:15 | 0 | | +| Patterns.cs:79:13:79:24 | ... => ... | Patterns.cs:79:13:79:15 | Before < ... | | +| Patterns.cs:79:13:79:24 | After ... => ... [match] | Patterns.cs:79:20:79:24 | "< 0" | | +| Patterns.cs:79:13:79:24 | After ... => ... [no-match] | Patterns.cs:80:13:80:20 | ... => ... | | | Patterns.cs:79:15:79:15 | 0 | Patterns.cs:79:13:79:15 | < ... | | -| Patterns.cs:79:20:79:24 | "< 0" | Patterns.cs:79:13:79:24 | ... => ... | | -| Patterns.cs:80:13:80:13 | 1 | Patterns.cs:80:18:80:20 | "1" | match | -| Patterns.cs:80:13:80:13 | 1 | Patterns.cs:81:13:81:13 | _ | no-match | -| Patterns.cs:80:13:80:20 | ... => ... | Patterns.cs:76:16:82:9 | ... switch { ... } | | -| Patterns.cs:80:18:80:20 | "1" | Patterns.cs:80:13:80:20 | ... => ... | | -| Patterns.cs:81:13:81:13 | _ | Patterns.cs:81:18:81:20 | "0" | match | -| Patterns.cs:81:13:81:20 | ... => ... | Patterns.cs:76:16:82:9 | ... switch { ... } | | -| Patterns.cs:81:18:81:20 | "0" | Patterns.cs:81:13:81:20 | ... => ... | | -| Patterns.cs:85:26:85:27 | enter M8 | Patterns.cs:85:39:85:39 | access to parameter i | | -| Patterns.cs:85:26:85:27 | exit M8 (normal) | Patterns.cs:85:26:85:27 | exit M8 | | -| Patterns.cs:85:39:85:39 | access to parameter i | Patterns.cs:85:44:85:44 | 1 | | -| Patterns.cs:85:39:85:53 | [false] ... is ... | Patterns.cs:85:67:85:69 | "2" | false | -| Patterns.cs:85:39:85:53 | [true] ... is ... | Patterns.cs:85:57:85:63 | "not 2" | true | -| Patterns.cs:85:39:85:69 | ... ? ... : ... | Patterns.cs:85:26:85:27 | exit M8 (normal) | | -| Patterns.cs:85:44:85:44 | 1 | Patterns.cs:85:44:85:53 | [match] ... or ... | match | -| Patterns.cs:85:44:85:44 | 1 | Patterns.cs:85:53:85:53 | 2 | no-match | -| Patterns.cs:85:44:85:53 | [match] ... or ... | Patterns.cs:85:39:85:53 | [true] ... is ... | match | -| Patterns.cs:85:44:85:53 | [no-match] ... or ... | Patterns.cs:85:39:85:53 | [false] ... is ... | no-match | -| Patterns.cs:85:49:85:53 | [match] not ... | Patterns.cs:85:44:85:53 | [match] ... or ... | match | -| Patterns.cs:85:49:85:53 | [no-match] not ... | Patterns.cs:85:44:85:53 | [no-match] ... or ... | no-match | -| Patterns.cs:85:53:85:53 | 2 | Patterns.cs:85:49:85:53 | [match] not ... | no-match | -| Patterns.cs:85:53:85:53 | 2 | Patterns.cs:85:49:85:53 | [no-match] not ... | match | -| Patterns.cs:85:57:85:63 | "not 2" | Patterns.cs:85:39:85:69 | ... ? ... : ... | | -| Patterns.cs:85:67:85:69 | "2" | Patterns.cs:85:39:85:69 | ... ? ... : ... | | -| Patterns.cs:87:26:87:27 | enter M9 | Patterns.cs:87:39:87:39 | access to parameter i | | -| Patterns.cs:87:26:87:27 | exit M9 (normal) | Patterns.cs:87:26:87:27 | exit M9 | | -| Patterns.cs:87:39:87:39 | access to parameter i | Patterns.cs:87:44:87:44 | 1 | | -| Patterns.cs:87:39:87:54 | [false] ... is ... | Patterns.cs:87:64:87:70 | "not 1" | false | -| Patterns.cs:87:39:87:54 | [true] ... is ... | Patterns.cs:87:58:87:60 | "1" | true | -| Patterns.cs:87:39:87:70 | ... ? ... : ... | Patterns.cs:87:26:87:27 | exit M9 (normal) | | -| Patterns.cs:87:44:87:44 | 1 | Patterns.cs:87:44:87:54 | [no-match] ... and ... | no-match | -| Patterns.cs:87:44:87:44 | 1 | Patterns.cs:87:54:87:54 | 2 | match | -| Patterns.cs:87:44:87:54 | [match] ... and ... | Patterns.cs:87:39:87:54 | [true] ... is ... | match | -| Patterns.cs:87:44:87:54 | [no-match] ... and ... | Patterns.cs:87:39:87:54 | [false] ... is ... | no-match | -| Patterns.cs:87:50:87:54 | [match] not ... | Patterns.cs:87:44:87:54 | [match] ... and ... | match | -| Patterns.cs:87:50:87:54 | [no-match] not ... | Patterns.cs:87:44:87:54 | [no-match] ... and ... | no-match | -| Patterns.cs:87:54:87:54 | 2 | Patterns.cs:87:50:87:54 | [match] not ... | no-match | -| Patterns.cs:87:54:87:54 | 2 | Patterns.cs:87:50:87:54 | [no-match] not ... | match | -| Patterns.cs:87:58:87:60 | "1" | Patterns.cs:87:39:87:70 | ... ? ... : ... | | -| Patterns.cs:87:64:87:70 | "not 1" | Patterns.cs:87:39:87:70 | ... ? ... : ... | | -| Patterns.cs:93:17:93:19 | enter M10 | Patterns.cs:94:5:99:5 | {...} | | -| Patterns.cs:93:17:93:19 | exit M10 (normal) | Patterns.cs:93:17:93:19 | exit M10 | | +| Patterns.cs:79:20:79:24 | "< 0" | Patterns.cs:76:16:82:9 | After ... switch { ... } | | +| Patterns.cs:80:13:80:13 | 1 | Patterns.cs:80:13:80:13 | After 1 [match] | match | +| Patterns.cs:80:13:80:13 | 1 | Patterns.cs:80:13:80:13 | After 1 [no-match] | no-match | +| Patterns.cs:80:13:80:13 | After 1 [match] | Patterns.cs:80:13:80:20 | After ... => ... [match] | match | +| Patterns.cs:80:13:80:13 | After 1 [no-match] | Patterns.cs:80:13:80:20 | After ... => ... [no-match] | no-match | +| Patterns.cs:80:13:80:20 | ... => ... | Patterns.cs:80:13:80:13 | 1 | | +| Patterns.cs:80:13:80:20 | After ... => ... [match] | Patterns.cs:80:18:80:20 | "1" | | +| Patterns.cs:80:13:80:20 | After ... => ... [no-match] | Patterns.cs:81:13:81:20 | ... => ... | | +| Patterns.cs:80:18:80:20 | "1" | Patterns.cs:76:16:82:9 | After ... switch { ... } | | +| Patterns.cs:81:13:81:13 | After _ [match] | Patterns.cs:81:13:81:20 | After ... => ... [match] | match | +| Patterns.cs:81:13:81:13 | _ | Patterns.cs:81:13:81:13 | After _ [match] | match | +| Patterns.cs:81:13:81:20 | ... => ... | Patterns.cs:81:13:81:13 | _ | | +| Patterns.cs:81:13:81:20 | After ... => ... [match] | Patterns.cs:81:18:81:20 | "0" | | +| Patterns.cs:81:18:81:20 | "0" | Patterns.cs:76:16:82:9 | After ... switch { ... } | | +| Patterns.cs:85:26:85:27 | Entry | Patterns.cs:85:33:85:33 | i | | +| Patterns.cs:85:26:85:27 | Normal Exit | Patterns.cs:85:26:85:27 | Exit | | +| Patterns.cs:85:33:85:33 | i | Patterns.cs:85:39:85:69 | ... ? ... : ... | | +| Patterns.cs:85:39:85:39 | access to parameter i | Patterns.cs:85:39:85:53 | ... is ... | | +| Patterns.cs:85:39:85:53 | ... is ... | Patterns.cs:85:39:85:53 | After ... is ... [false] | false | +| Patterns.cs:85:39:85:53 | ... is ... | Patterns.cs:85:39:85:53 | [MatchTrue] ... is ... | true | +| Patterns.cs:85:39:85:53 | After ... is ... [false] | Patterns.cs:85:67:85:69 | "2" | | +| Patterns.cs:85:39:85:53 | After ... is ... [true] | Patterns.cs:85:57:85:63 | "not 2" | | +| Patterns.cs:85:39:85:53 | Before ... is ... | Patterns.cs:85:39:85:39 | access to parameter i | | +| Patterns.cs:85:39:85:53 | [MatchTrue] ... is ... | Patterns.cs:85:44:85:53 | Before ... or ... | | +| Patterns.cs:85:39:85:69 | ... ? ... : ... | Patterns.cs:85:39:85:53 | Before ... is ... | | +| Patterns.cs:85:39:85:69 | After ... ? ... : ... | Patterns.cs:85:26:85:27 | Normal Exit | | +| Patterns.cs:85:44:85:44 | 1 | Patterns.cs:85:49:85:53 | Before not ... | | +| Patterns.cs:85:44:85:53 | ... or ... | Patterns.cs:85:44:85:53 | After ... or ... | | +| Patterns.cs:85:44:85:53 | After ... or ... | Patterns.cs:85:39:85:53 | After ... is ... [true] | true | +| Patterns.cs:85:44:85:53 | Before ... or ... | Patterns.cs:85:44:85:44 | 1 | | +| Patterns.cs:85:49:85:53 | After not ... | Patterns.cs:85:44:85:53 | ... or ... | | +| Patterns.cs:85:49:85:53 | Before not ... | Patterns.cs:85:53:85:53 | 2 | | +| Patterns.cs:85:49:85:53 | not ... | Patterns.cs:85:49:85:53 | After not ... | | +| Patterns.cs:85:53:85:53 | 2 | Patterns.cs:85:49:85:53 | not ... | | +| Patterns.cs:85:57:85:63 | "not 2" | Patterns.cs:85:39:85:69 | After ... ? ... : ... | | +| Patterns.cs:85:67:85:69 | "2" | Patterns.cs:85:39:85:69 | After ... ? ... : ... | | +| Patterns.cs:87:26:87:27 | Entry | Patterns.cs:87:33:87:33 | i | | +| Patterns.cs:87:26:87:27 | Normal Exit | Patterns.cs:87:26:87:27 | Exit | | +| Patterns.cs:87:33:87:33 | i | Patterns.cs:87:39:87:70 | ... ? ... : ... | | +| Patterns.cs:87:39:87:39 | access to parameter i | Patterns.cs:87:39:87:54 | ... is ... | | +| Patterns.cs:87:39:87:54 | ... is ... | Patterns.cs:87:39:87:54 | After ... is ... [false] | false | +| Patterns.cs:87:39:87:54 | ... is ... | Patterns.cs:87:39:87:54 | [MatchTrue] ... is ... | true | +| Patterns.cs:87:39:87:54 | After ... is ... [false] | Patterns.cs:87:64:87:70 | "not 1" | | +| Patterns.cs:87:39:87:54 | After ... is ... [true] | Patterns.cs:87:58:87:60 | "1" | | +| Patterns.cs:87:39:87:54 | Before ... is ... | Patterns.cs:87:39:87:39 | access to parameter i | | +| Patterns.cs:87:39:87:54 | [MatchTrue] ... is ... | Patterns.cs:87:44:87:54 | Before ... and ... | | +| Patterns.cs:87:39:87:70 | ... ? ... : ... | Patterns.cs:87:39:87:54 | Before ... is ... | | +| Patterns.cs:87:39:87:70 | After ... ? ... : ... | Patterns.cs:87:26:87:27 | Normal Exit | | +| Patterns.cs:87:44:87:44 | 1 | Patterns.cs:87:50:87:54 | Before not ... | | +| Patterns.cs:87:44:87:54 | ... and ... | Patterns.cs:87:44:87:54 | After ... and ... | | +| Patterns.cs:87:44:87:54 | After ... and ... | Patterns.cs:87:39:87:54 | After ... is ... [true] | true | +| Patterns.cs:87:44:87:54 | Before ... and ... | Patterns.cs:87:44:87:44 | 1 | | +| Patterns.cs:87:50:87:54 | After not ... | Patterns.cs:87:44:87:54 | ... and ... | | +| Patterns.cs:87:50:87:54 | Before not ... | Patterns.cs:87:54:87:54 | 2 | | +| Patterns.cs:87:50:87:54 | not ... | Patterns.cs:87:50:87:54 | After not ... | | +| Patterns.cs:87:54:87:54 | 2 | Patterns.cs:87:50:87:54 | not ... | | +| Patterns.cs:87:58:87:60 | "1" | Patterns.cs:87:39:87:70 | After ... ? ... : ... | | +| Patterns.cs:87:64:87:70 | "not 1" | Patterns.cs:87:39:87:70 | After ... ? ... : ... | | +| Patterns.cs:93:17:93:19 | Entry | Patterns.cs:94:5:99:5 | {...} | | +| Patterns.cs:93:17:93:19 | Normal Exit | Patterns.cs:93:17:93:19 | Exit | | +| Patterns.cs:94:5:99:5 | After {...} | Patterns.cs:93:17:93:19 | Normal Exit | | | Patterns.cs:94:5:99:5 | {...} | Patterns.cs:95:9:98:9 | if (...) ... | | -| Patterns.cs:95:9:98:9 | if (...) ... | Patterns.cs:95:13:95:16 | this access | | -| Patterns.cs:95:13:95:16 | this access | Patterns.cs:95:29:95:31 | access to constant A | | -| Patterns.cs:95:13:95:40 | [false] ... is ... | Patterns.cs:93:17:93:19 | exit M10 (normal) | false | -| Patterns.cs:95:13:95:40 | [true] ... is ... | Patterns.cs:96:9:98:9 | {...} | true | -| Patterns.cs:95:21:95:40 | [match] { ... } | Patterns.cs:95:13:95:40 | [true] ... is ... | match | -| Patterns.cs:95:21:95:40 | [match] { ... } | Patterns.cs:95:21:95:40 | [match] { ... } | match | -| Patterns.cs:95:21:95:40 | [no-match] { ... } | Patterns.cs:95:13:95:40 | [false] ... is ... | no-match | -| Patterns.cs:95:21:95:40 | [no-match] { ... } | Patterns.cs:95:21:95:40 | [no-match] { ... } | no-match | -| Patterns.cs:95:29:95:31 | access to constant A | Patterns.cs:95:29:95:38 | [match] ... or ... | match | -| Patterns.cs:95:29:95:31 | access to constant A | Patterns.cs:95:36:95:38 | access to constant B | no-match | -| Patterns.cs:95:29:95:38 | [match] ... or ... | Patterns.cs:95:21:95:40 | [match] { ... } | match | -| Patterns.cs:95:29:95:38 | [no-match] ... or ... | Patterns.cs:95:21:95:40 | [no-match] { ... } | no-match | -| Patterns.cs:95:36:95:38 | access to constant B | Patterns.cs:95:29:95:38 | [match] ... or ... | match | -| Patterns.cs:95:36:95:38 | access to constant B | Patterns.cs:95:29:95:38 | [no-match] ... or ... | no-match | +| Patterns.cs:95:9:98:9 | After if (...) ... | Patterns.cs:94:5:99:5 | After {...} | | +| Patterns.cs:95:9:98:9 | if (...) ... | Patterns.cs:95:13:95:40 | Before ... is ... | | +| Patterns.cs:95:13:95:16 | this access | Patterns.cs:95:13:95:40 | ... is ... | | +| Patterns.cs:95:13:95:40 | ... is ... | Patterns.cs:95:13:95:40 | After ... is ... [false] | false | +| Patterns.cs:95:13:95:40 | ... is ... | Patterns.cs:95:13:95:40 | [MatchTrue] ... is ... | true | +| Patterns.cs:95:13:95:40 | After ... is ... [false] | Patterns.cs:95:9:98:9 | After if (...) ... | | +| Patterns.cs:95:13:95:40 | After ... is ... [true] | Patterns.cs:96:9:98:9 | {...} | | +| Patterns.cs:95:13:95:40 | Before ... is ... | Patterns.cs:95:13:95:16 | this access | | +| Patterns.cs:95:13:95:40 | [MatchTrue] ... is ... | Patterns.cs:95:21:95:40 | Before { ... } | | +| Patterns.cs:95:21:95:40 | After { ... } | Patterns.cs:95:13:95:40 | After ... is ... [true] | true | +| Patterns.cs:95:21:95:40 | After { ... } | Patterns.cs:95:21:95:40 | { ... } | | +| Patterns.cs:95:21:95:40 | Before { ... } | Patterns.cs:95:21:95:40 | Before { ... } | | +| Patterns.cs:95:21:95:40 | Before { ... } | Patterns.cs:95:29:95:38 | Before ... or ... | | +| Patterns.cs:95:21:95:40 | { ... } | Patterns.cs:95:21:95:40 | After { ... } | | +| Patterns.cs:95:21:95:40 | { ... } | Patterns.cs:95:21:95:40 | After { ... } | | +| Patterns.cs:95:29:95:31 | access to constant A | Patterns.cs:95:36:95:38 | access to constant B | | +| Patterns.cs:95:29:95:38 | ... or ... | Patterns.cs:95:29:95:38 | After ... or ... | | +| Patterns.cs:95:29:95:38 | After ... or ... | Patterns.cs:95:21:95:40 | { ... } | | +| Patterns.cs:95:29:95:38 | Before ... or ... | Patterns.cs:95:29:95:31 | access to constant A | | +| Patterns.cs:95:36:95:38 | access to constant B | Patterns.cs:95:29:95:38 | ... or ... | | +| Patterns.cs:96:9:98:9 | After {...} | Patterns.cs:95:9:98:9 | After if (...) ... | | | Patterns.cs:96:9:98:9 | {...} | Patterns.cs:97:13:97:39 | ...; | | -| Patterns.cs:97:13:97:38 | call to method WriteLine | Patterns.cs:93:17:93:19 | exit M10 (normal) | | -| Patterns.cs:97:13:97:39 | ...; | Patterns.cs:97:31:97:37 | "not C" | | +| Patterns.cs:97:13:97:38 | After call to method WriteLine | Patterns.cs:97:13:97:39 | After ...; | | +| Patterns.cs:97:13:97:38 | Before call to method WriteLine | Patterns.cs:97:31:97:37 | "not C" | | +| Patterns.cs:97:13:97:38 | call to method WriteLine | Patterns.cs:97:13:97:38 | After call to method WriteLine | | +| Patterns.cs:97:13:97:39 | ...; | Patterns.cs:97:13:97:38 | Before call to method WriteLine | | +| Patterns.cs:97:13:97:39 | After ...; | Patterns.cs:96:9:98:9 | After {...} | | | Patterns.cs:97:31:97:37 | "not C" | Patterns.cs:97:13:97:38 | call to method WriteLine | | -| PostDominance.cs:3:7:3:19 | call to constructor Object | PostDominance.cs:3:7:3:19 | {...} | | -| PostDominance.cs:3:7:3:19 | call to method | PostDominance.cs:3:7:3:19 | call to constructor Object | | -| PostDominance.cs:3:7:3:19 | enter PostDominance | PostDominance.cs:3:7:3:19 | this access | | -| PostDominance.cs:3:7:3:19 | exit PostDominance (normal) | PostDominance.cs:3:7:3:19 | exit PostDominance | | +| PostDominance.cs:3:7:3:19 | After call to constructor Object | PostDominance.cs:3:7:3:19 | {...} | | +| PostDominance.cs:3:7:3:19 | After call to method | PostDominance.cs:3:7:3:19 | Before call to constructor Object | | +| PostDominance.cs:3:7:3:19 | Before call to constructor Object | PostDominance.cs:3:7:3:19 | call to constructor Object | | +| PostDominance.cs:3:7:3:19 | Before call to method | PostDominance.cs:3:7:3:19 | this access | | +| PostDominance.cs:3:7:3:19 | Entry | PostDominance.cs:3:7:3:19 | Before call to method | | +| PostDominance.cs:3:7:3:19 | Normal Exit | PostDominance.cs:3:7:3:19 | Exit | | +| PostDominance.cs:3:7:3:19 | call to constructor Object | PostDominance.cs:3:7:3:19 | After call to constructor Object | | +| PostDominance.cs:3:7:3:19 | call to method | PostDominance.cs:3:7:3:19 | After call to method | | | PostDominance.cs:3:7:3:19 | this access | PostDominance.cs:3:7:3:19 | call to method | | -| PostDominance.cs:3:7:3:19 | {...} | PostDominance.cs:3:7:3:19 | exit PostDominance (normal) | | -| PostDominance.cs:5:10:5:11 | enter M1 | PostDominance.cs:6:5:8:5 | {...} | | -| PostDominance.cs:5:10:5:11 | exit M1 (normal) | PostDominance.cs:5:10:5:11 | exit M1 | | +| PostDominance.cs:3:7:3:19 | {...} | PostDominance.cs:3:7:3:19 | Normal Exit | | +| PostDominance.cs:5:10:5:11 | Entry | PostDominance.cs:5:20:5:20 | s | | +| PostDominance.cs:5:10:5:11 | Normal Exit | PostDominance.cs:5:10:5:11 | Exit | | +| PostDominance.cs:5:20:5:20 | s | PostDominance.cs:6:5:8:5 | {...} | | +| PostDominance.cs:6:5:8:5 | After {...} | PostDominance.cs:5:10:5:11 | Normal Exit | | | PostDominance.cs:6:5:8:5 | {...} | PostDominance.cs:7:9:7:29 | ...; | | -| PostDominance.cs:7:9:7:28 | call to method WriteLine | PostDominance.cs:5:10:5:11 | exit M1 (normal) | | -| PostDominance.cs:7:9:7:29 | ...; | PostDominance.cs:7:27:7:27 | access to parameter s | | +| PostDominance.cs:7:9:7:28 | After call to method WriteLine | PostDominance.cs:7:9:7:29 | After ...; | | +| PostDominance.cs:7:9:7:28 | Before call to method WriteLine | PostDominance.cs:7:27:7:27 | access to parameter s | | +| PostDominance.cs:7:9:7:28 | call to method WriteLine | PostDominance.cs:7:9:7:28 | After call to method WriteLine | | +| PostDominance.cs:7:9:7:29 | ...; | PostDominance.cs:7:9:7:28 | Before call to method WriteLine | | +| PostDominance.cs:7:9:7:29 | After ...; | PostDominance.cs:6:5:8:5 | After {...} | | | PostDominance.cs:7:27:7:27 | access to parameter s | PostDominance.cs:7:9:7:28 | call to method WriteLine | | -| PostDominance.cs:10:10:10:11 | enter M2 | PostDominance.cs:11:5:15:5 | {...} | | -| PostDominance.cs:10:10:10:11 | exit M2 (normal) | PostDominance.cs:10:10:10:11 | exit M2 | | +| PostDominance.cs:10:10:10:11 | Entry | PostDominance.cs:10:20:10:20 | s | | +| PostDominance.cs:10:10:10:11 | Normal Exit | PostDominance.cs:10:10:10:11 | Exit | | +| PostDominance.cs:10:20:10:20 | s | PostDominance.cs:11:5:15:5 | {...} | | +| PostDominance.cs:11:5:15:5 | After {...} | PostDominance.cs:10:10:10:11 | Normal Exit | | | PostDominance.cs:11:5:15:5 | {...} | PostDominance.cs:12:9:13:19 | if (...) ... | | -| PostDominance.cs:12:9:13:19 | if (...) ... | PostDominance.cs:12:13:12:13 | access to parameter s | | -| PostDominance.cs:12:13:12:13 | access to parameter s | PostDominance.cs:12:18:12:21 | null | | -| PostDominance.cs:12:13:12:21 | [false] ... is ... | PostDominance.cs:14:9:14:29 | ...; | false | -| PostDominance.cs:12:13:12:21 | [true] ... is ... | PostDominance.cs:13:13:13:19 | return ...; | true | -| PostDominance.cs:12:18:12:21 | null | PostDominance.cs:12:13:12:21 | [false] ... is ... | no-match | -| PostDominance.cs:12:18:12:21 | null | PostDominance.cs:12:13:12:21 | [true] ... is ... | match | -| PostDominance.cs:13:13:13:19 | return ...; | PostDominance.cs:10:10:10:11 | exit M2 (normal) | return | -| PostDominance.cs:14:9:14:28 | call to method WriteLine | PostDominance.cs:10:10:10:11 | exit M2 (normal) | | -| PostDominance.cs:14:9:14:29 | ...; | PostDominance.cs:14:27:14:27 | access to parameter s | | +| PostDominance.cs:12:9:13:19 | After if (...) ... | PostDominance.cs:14:9:14:29 | ...; | | +| PostDominance.cs:12:9:13:19 | if (...) ... | PostDominance.cs:12:13:12:21 | Before ... is ... | | +| PostDominance.cs:12:13:12:13 | access to parameter s | PostDominance.cs:12:13:12:21 | ... is ... | | +| PostDominance.cs:12:13:12:21 | ... is ... | PostDominance.cs:12:13:12:21 | After ... is ... [false] | false | +| PostDominance.cs:12:13:12:21 | ... is ... | PostDominance.cs:12:13:12:21 | [MatchTrue] ... is ... | true | +| PostDominance.cs:12:13:12:21 | After ... is ... [false] | PostDominance.cs:12:9:13:19 | After if (...) ... | | +| PostDominance.cs:12:13:12:21 | After ... is ... [true] | PostDominance.cs:13:13:13:19 | Before return ...; | | +| PostDominance.cs:12:13:12:21 | Before ... is ... | PostDominance.cs:12:13:12:13 | access to parameter s | | +| PostDominance.cs:12:13:12:21 | [MatchTrue] ... is ... | PostDominance.cs:12:18:12:21 | null | | +| PostDominance.cs:12:18:12:21 | null | PostDominance.cs:12:13:12:21 | After ... is ... [true] | true | +| PostDominance.cs:13:13:13:19 | Before return ...; | PostDominance.cs:13:13:13:19 | return ...; | | +| PostDominance.cs:13:13:13:19 | return ...; | PostDominance.cs:10:10:10:11 | Normal Exit | return | +| PostDominance.cs:14:9:14:28 | After call to method WriteLine | PostDominance.cs:14:9:14:29 | After ...; | | +| PostDominance.cs:14:9:14:28 | Before call to method WriteLine | PostDominance.cs:14:27:14:27 | access to parameter s | | +| PostDominance.cs:14:9:14:28 | call to method WriteLine | PostDominance.cs:14:9:14:28 | After call to method WriteLine | | +| PostDominance.cs:14:9:14:29 | ...; | PostDominance.cs:14:9:14:28 | Before call to method WriteLine | | +| PostDominance.cs:14:9:14:29 | After ...; | PostDominance.cs:11:5:15:5 | After {...} | | | PostDominance.cs:14:27:14:27 | access to parameter s | PostDominance.cs:14:9:14:28 | call to method WriteLine | | -| PostDominance.cs:17:10:17:11 | enter M3 | PostDominance.cs:18:5:22:5 | {...} | | -| PostDominance.cs:17:10:17:11 | exit M3 (abnormal) | PostDominance.cs:17:10:17:11 | exit M3 | | -| PostDominance.cs:17:10:17:11 | exit M3 (normal) | PostDominance.cs:17:10:17:11 | exit M3 | | +| PostDominance.cs:17:10:17:11 | Entry | PostDominance.cs:17:20:17:20 | s | | +| PostDominance.cs:17:10:17:11 | Exceptional Exit | PostDominance.cs:17:10:17:11 | Exit | | +| PostDominance.cs:17:10:17:11 | Normal Exit | PostDominance.cs:17:10:17:11 | Exit | | +| PostDominance.cs:17:20:17:20 | s | PostDominance.cs:18:5:22:5 | {...} | | +| PostDominance.cs:18:5:22:5 | After {...} | PostDominance.cs:17:10:17:11 | Normal Exit | | | PostDominance.cs:18:5:22:5 | {...} | PostDominance.cs:19:9:20:55 | if (...) ... | | -| PostDominance.cs:19:9:20:55 | if (...) ... | PostDominance.cs:19:13:19:13 | access to parameter s | | -| PostDominance.cs:19:13:19:13 | access to parameter s | PostDominance.cs:19:18:19:21 | null | | -| PostDominance.cs:19:13:19:21 | [false] ... is ... | PostDominance.cs:21:9:21:29 | ...; | false | -| PostDominance.cs:19:13:19:21 | [true] ... is ... | PostDominance.cs:20:45:20:53 | nameof(...) | true | -| PostDominance.cs:19:18:19:21 | null | PostDominance.cs:19:13:19:21 | [false] ... is ... | no-match | -| PostDominance.cs:19:18:19:21 | null | PostDominance.cs:19:13:19:21 | [true] ... is ... | match | -| PostDominance.cs:20:13:20:55 | throw ...; | PostDominance.cs:17:10:17:11 | exit M3 (abnormal) | exception | -| PostDominance.cs:20:19:20:54 | object creation of type ArgumentNullException | PostDominance.cs:20:13:20:55 | throw ...; | | +| PostDominance.cs:19:9:20:55 | After if (...) ... | PostDominance.cs:21:9:21:29 | ...; | | +| PostDominance.cs:19:9:20:55 | if (...) ... | PostDominance.cs:19:13:19:21 | Before ... is ... | | +| PostDominance.cs:19:13:19:13 | access to parameter s | PostDominance.cs:19:13:19:21 | ... is ... | | +| PostDominance.cs:19:13:19:21 | ... is ... | PostDominance.cs:19:13:19:21 | After ... is ... [false] | false | +| PostDominance.cs:19:13:19:21 | ... is ... | PostDominance.cs:19:13:19:21 | [MatchTrue] ... is ... | true | +| PostDominance.cs:19:13:19:21 | After ... is ... [false] | PostDominance.cs:19:9:20:55 | After if (...) ... | | +| PostDominance.cs:19:13:19:21 | After ... is ... [true] | PostDominance.cs:20:13:20:55 | Before throw ...; | | +| PostDominance.cs:19:13:19:21 | Before ... is ... | PostDominance.cs:19:13:19:13 | access to parameter s | | +| PostDominance.cs:19:13:19:21 | [MatchTrue] ... is ... | PostDominance.cs:19:18:19:21 | null | | +| PostDominance.cs:19:18:19:21 | null | PostDominance.cs:19:13:19:21 | After ... is ... [true] | true | +| PostDominance.cs:20:13:20:55 | Before throw ...; | PostDominance.cs:20:19:20:54 | Before object creation of type ArgumentNullException | | +| PostDominance.cs:20:13:20:55 | throw ...; | PostDominance.cs:17:10:17:11 | Exceptional Exit | exception | +| PostDominance.cs:20:19:20:54 | After object creation of type ArgumentNullException | PostDominance.cs:20:13:20:55 | throw ...; | | +| PostDominance.cs:20:19:20:54 | Before object creation of type ArgumentNullException | PostDominance.cs:20:45:20:53 | nameof(...) | | +| PostDominance.cs:20:19:20:54 | object creation of type ArgumentNullException | PostDominance.cs:20:19:20:54 | After object creation of type ArgumentNullException | | | PostDominance.cs:20:45:20:53 | nameof(...) | PostDominance.cs:20:19:20:54 | object creation of type ArgumentNullException | | -| PostDominance.cs:21:9:21:28 | call to method WriteLine | PostDominance.cs:17:10:17:11 | exit M3 (normal) | | -| PostDominance.cs:21:9:21:29 | ...; | PostDominance.cs:21:27:21:27 | access to parameter s | | +| PostDominance.cs:21:9:21:28 | After call to method WriteLine | PostDominance.cs:21:9:21:29 | After ...; | | +| PostDominance.cs:21:9:21:28 | Before call to method WriteLine | PostDominance.cs:21:27:21:27 | access to parameter s | | +| PostDominance.cs:21:9:21:28 | call to method WriteLine | PostDominance.cs:21:9:21:28 | After call to method WriteLine | | +| PostDominance.cs:21:9:21:29 | ...; | PostDominance.cs:21:9:21:28 | Before call to method WriteLine | | +| PostDominance.cs:21:9:21:29 | After ...; | PostDominance.cs:18:5:22:5 | After {...} | | | PostDominance.cs:21:27:21:27 | access to parameter s | PostDominance.cs:21:9:21:28 | call to method WriteLine | | -| Qualifiers.cs:1:7:1:16 | call to constructor Object | Qualifiers.cs:1:7:1:16 | {...} | | -| Qualifiers.cs:1:7:1:16 | call to method | Qualifiers.cs:1:7:1:16 | call to constructor Object | | -| Qualifiers.cs:1:7:1:16 | enter Qualifiers | Qualifiers.cs:1:7:1:16 | this access | | -| Qualifiers.cs:1:7:1:16 | exit Qualifiers (normal) | Qualifiers.cs:1:7:1:16 | exit Qualifiers | | +| Qualifiers.cs:1:7:1:16 | After call to constructor Object | Qualifiers.cs:1:7:1:16 | {...} | | +| Qualifiers.cs:1:7:1:16 | After call to method | Qualifiers.cs:1:7:1:16 | Before call to constructor Object | | +| Qualifiers.cs:1:7:1:16 | Before call to constructor Object | Qualifiers.cs:1:7:1:16 | call to constructor Object | | +| Qualifiers.cs:1:7:1:16 | Before call to method | Qualifiers.cs:1:7:1:16 | this access | | +| Qualifiers.cs:1:7:1:16 | Entry | Qualifiers.cs:1:7:1:16 | Before call to method | | +| Qualifiers.cs:1:7:1:16 | Normal Exit | Qualifiers.cs:1:7:1:16 | Exit | | +| Qualifiers.cs:1:7:1:16 | call to constructor Object | Qualifiers.cs:1:7:1:16 | After call to constructor Object | | +| Qualifiers.cs:1:7:1:16 | call to method | Qualifiers.cs:1:7:1:16 | After call to method | | | Qualifiers.cs:1:7:1:16 | this access | Qualifiers.cs:1:7:1:16 | call to method | | -| Qualifiers.cs:1:7:1:16 | {...} | Qualifiers.cs:1:7:1:16 | exit Qualifiers (normal) | | -| Qualifiers.cs:7:16:7:21 | enter Method | Qualifiers.cs:7:28:7:31 | null | | -| Qualifiers.cs:7:16:7:21 | exit Method (normal) | Qualifiers.cs:7:16:7:21 | exit Method | | -| Qualifiers.cs:7:28:7:31 | null | Qualifiers.cs:7:16:7:21 | exit Method (normal) | | -| Qualifiers.cs:8:23:8:34 | enter StaticMethod | Qualifiers.cs:8:41:8:44 | null | | -| Qualifiers.cs:8:23:8:34 | exit StaticMethod (normal) | Qualifiers.cs:8:23:8:34 | exit StaticMethod | | -| Qualifiers.cs:8:41:8:44 | null | Qualifiers.cs:8:23:8:34 | exit StaticMethod (normal) | | -| Qualifiers.cs:10:10:10:10 | enter M | Qualifiers.cs:11:5:31:5 | {...} | | -| Qualifiers.cs:10:10:10:10 | exit M (normal) | Qualifiers.cs:10:10:10:10 | exit M | | +| Qualifiers.cs:1:7:1:16 | {...} | Qualifiers.cs:1:7:1:16 | Normal Exit | | +| Qualifiers.cs:7:16:7:21 | Entry | Qualifiers.cs:7:28:7:31 | null | | +| Qualifiers.cs:7:16:7:21 | Normal Exit | Qualifiers.cs:7:16:7:21 | Exit | | +| Qualifiers.cs:7:28:7:31 | null | Qualifiers.cs:7:16:7:21 | Normal Exit | | +| Qualifiers.cs:8:23:8:34 | Entry | Qualifiers.cs:8:41:8:44 | null | | +| Qualifiers.cs:8:23:8:34 | Normal Exit | Qualifiers.cs:8:23:8:34 | Exit | | +| Qualifiers.cs:8:41:8:44 | null | Qualifiers.cs:8:23:8:34 | Normal Exit | | +| Qualifiers.cs:10:10:10:10 | Entry | Qualifiers.cs:11:5:31:5 | {...} | | +| Qualifiers.cs:10:10:10:10 | Normal Exit | Qualifiers.cs:10:10:10:10 | Exit | | +| Qualifiers.cs:11:5:31:5 | After {...} | Qualifiers.cs:10:10:10:10 | Normal Exit | | | Qualifiers.cs:11:5:31:5 | {...} | Qualifiers.cs:12:9:12:22 | ... ...; | | -| Qualifiers.cs:12:9:12:22 | ... ...; | Qualifiers.cs:12:17:12:21 | this access | | -| Qualifiers.cs:12:13:12:21 | Qualifiers q = ... | Qualifiers.cs:13:9:13:21 | ...; | | -| Qualifiers.cs:12:17:12:21 | access to field Field | Qualifiers.cs:12:13:12:21 | Qualifiers q = ... | | +| Qualifiers.cs:12:9:12:22 | ... ...; | Qualifiers.cs:12:13:12:21 | Before Qualifiers q = ... | | +| Qualifiers.cs:12:9:12:22 | After ... ...; | Qualifiers.cs:13:9:13:21 | ...; | | +| Qualifiers.cs:12:13:12:13 | access to local variable q | Qualifiers.cs:12:17:12:21 | Before access to field Field | | +| Qualifiers.cs:12:13:12:21 | After Qualifiers q = ... | Qualifiers.cs:12:9:12:22 | After ... ...; | | +| Qualifiers.cs:12:13:12:21 | Before Qualifiers q = ... | Qualifiers.cs:12:13:12:13 | access to local variable q | | +| Qualifiers.cs:12:13:12:21 | Qualifiers q = ... | Qualifiers.cs:12:13:12:21 | After Qualifiers q = ... | | +| Qualifiers.cs:12:17:12:21 | After access to field Field | Qualifiers.cs:12:13:12:21 | Qualifiers q = ... | | +| Qualifiers.cs:12:17:12:21 | Before access to field Field | Qualifiers.cs:12:17:12:21 | this access | | +| Qualifiers.cs:12:17:12:21 | access to field Field | Qualifiers.cs:12:17:12:21 | After access to field Field | | | Qualifiers.cs:12:17:12:21 | this access | Qualifiers.cs:12:17:12:21 | access to field Field | | -| Qualifiers.cs:13:9:13:20 | ... = ... | Qualifiers.cs:14:9:14:21 | ...; | | -| Qualifiers.cs:13:9:13:21 | ...; | Qualifiers.cs:13:13:13:20 | this access | | -| Qualifiers.cs:13:13:13:20 | access to property Property | Qualifiers.cs:13:9:13:20 | ... = ... | | +| Qualifiers.cs:13:9:13:9 | access to local variable q | Qualifiers.cs:13:13:13:20 | Before access to property Property | | +| Qualifiers.cs:13:9:13:20 | ... = ... | Qualifiers.cs:13:9:13:20 | After ... = ... | | +| Qualifiers.cs:13:9:13:20 | After ... = ... | Qualifiers.cs:13:9:13:21 | After ...; | | +| Qualifiers.cs:13:9:13:20 | Before ... = ... | Qualifiers.cs:13:9:13:9 | access to local variable q | | +| Qualifiers.cs:13:9:13:21 | ...; | Qualifiers.cs:13:9:13:20 | Before ... = ... | | +| Qualifiers.cs:13:9:13:21 | After ...; | Qualifiers.cs:14:9:14:21 | ...; | | +| Qualifiers.cs:13:13:13:20 | After access to property Property | Qualifiers.cs:13:9:13:20 | ... = ... | | +| Qualifiers.cs:13:13:13:20 | Before access to property Property | Qualifiers.cs:13:13:13:20 | this access | | +| Qualifiers.cs:13:13:13:20 | access to property Property | Qualifiers.cs:13:13:13:20 | After access to property Property | | | Qualifiers.cs:13:13:13:20 | this access | Qualifiers.cs:13:13:13:20 | access to property Property | | -| Qualifiers.cs:14:9:14:20 | ... = ... | Qualifiers.cs:16:9:16:23 | ...; | | -| Qualifiers.cs:14:9:14:21 | ...; | Qualifiers.cs:14:13:14:20 | this access | | -| Qualifiers.cs:14:13:14:20 | call to method Method | Qualifiers.cs:14:9:14:20 | ... = ... | | +| Qualifiers.cs:14:9:14:9 | access to local variable q | Qualifiers.cs:14:13:14:20 | Before call to method Method | | +| Qualifiers.cs:14:9:14:20 | ... = ... | Qualifiers.cs:14:9:14:20 | After ... = ... | | +| Qualifiers.cs:14:9:14:20 | After ... = ... | Qualifiers.cs:14:9:14:21 | After ...; | | +| Qualifiers.cs:14:9:14:20 | Before ... = ... | Qualifiers.cs:14:9:14:9 | access to local variable q | | +| Qualifiers.cs:14:9:14:21 | ...; | Qualifiers.cs:14:9:14:20 | Before ... = ... | | +| Qualifiers.cs:14:9:14:21 | After ...; | Qualifiers.cs:16:9:16:23 | ...; | | +| Qualifiers.cs:14:13:14:20 | After call to method Method | Qualifiers.cs:14:9:14:20 | ... = ... | | +| Qualifiers.cs:14:13:14:20 | Before call to method Method | Qualifiers.cs:14:13:14:20 | this access | | +| Qualifiers.cs:14:13:14:20 | call to method Method | Qualifiers.cs:14:13:14:20 | After call to method Method | | | Qualifiers.cs:14:13:14:20 | this access | Qualifiers.cs:14:13:14:20 | call to method Method | | -| Qualifiers.cs:16:9:16:22 | ... = ... | Qualifiers.cs:17:9:17:26 | ...; | | -| Qualifiers.cs:16:9:16:23 | ...; | Qualifiers.cs:16:13:16:16 | this access | | +| Qualifiers.cs:16:9:16:9 | access to local variable q | Qualifiers.cs:16:13:16:22 | Before access to field Field | | +| Qualifiers.cs:16:9:16:22 | ... = ... | Qualifiers.cs:16:9:16:22 | After ... = ... | | +| Qualifiers.cs:16:9:16:22 | After ... = ... | Qualifiers.cs:16:9:16:23 | After ...; | | +| Qualifiers.cs:16:9:16:22 | Before ... = ... | Qualifiers.cs:16:9:16:9 | access to local variable q | | +| Qualifiers.cs:16:9:16:23 | ...; | Qualifiers.cs:16:9:16:22 | Before ... = ... | | +| Qualifiers.cs:16:9:16:23 | After ...; | Qualifiers.cs:17:9:17:26 | ...; | | | Qualifiers.cs:16:13:16:16 | this access | Qualifiers.cs:16:13:16:22 | access to field Field | | -| Qualifiers.cs:16:13:16:22 | access to field Field | Qualifiers.cs:16:9:16:22 | ... = ... | | -| Qualifiers.cs:17:9:17:25 | ... = ... | Qualifiers.cs:18:9:18:26 | ...; | | -| Qualifiers.cs:17:9:17:26 | ...; | Qualifiers.cs:17:13:17:16 | this access | | +| Qualifiers.cs:16:13:16:22 | After access to field Field | Qualifiers.cs:16:9:16:22 | ... = ... | | +| Qualifiers.cs:16:13:16:22 | Before access to field Field | Qualifiers.cs:16:13:16:16 | this access | | +| Qualifiers.cs:16:13:16:22 | access to field Field | Qualifiers.cs:16:13:16:22 | After access to field Field | | +| Qualifiers.cs:17:9:17:9 | access to local variable q | Qualifiers.cs:17:13:17:25 | Before access to property Property | | +| Qualifiers.cs:17:9:17:25 | ... = ... | Qualifiers.cs:17:9:17:25 | After ... = ... | | +| Qualifiers.cs:17:9:17:25 | After ... = ... | Qualifiers.cs:17:9:17:26 | After ...; | | +| Qualifiers.cs:17:9:17:25 | Before ... = ... | Qualifiers.cs:17:9:17:9 | access to local variable q | | +| Qualifiers.cs:17:9:17:26 | ...; | Qualifiers.cs:17:9:17:25 | Before ... = ... | | +| Qualifiers.cs:17:9:17:26 | After ...; | Qualifiers.cs:18:9:18:26 | ...; | | | Qualifiers.cs:17:13:17:16 | this access | Qualifiers.cs:17:13:17:25 | access to property Property | | -| Qualifiers.cs:17:13:17:25 | access to property Property | Qualifiers.cs:17:9:17:25 | ... = ... | | -| Qualifiers.cs:18:9:18:25 | ... = ... | Qualifiers.cs:20:9:20:24 | ...; | | -| Qualifiers.cs:18:9:18:26 | ...; | Qualifiers.cs:18:13:18:16 | this access | | +| Qualifiers.cs:17:13:17:25 | After access to property Property | Qualifiers.cs:17:9:17:25 | ... = ... | | +| Qualifiers.cs:17:13:17:25 | Before access to property Property | Qualifiers.cs:17:13:17:16 | this access | | +| Qualifiers.cs:17:13:17:25 | access to property Property | Qualifiers.cs:17:13:17:25 | After access to property Property | | +| Qualifiers.cs:18:9:18:9 | access to local variable q | Qualifiers.cs:18:13:18:25 | Before call to method Method | | +| Qualifiers.cs:18:9:18:25 | ... = ... | Qualifiers.cs:18:9:18:25 | After ... = ... | | +| Qualifiers.cs:18:9:18:25 | After ... = ... | Qualifiers.cs:18:9:18:26 | After ...; | | +| Qualifiers.cs:18:9:18:25 | Before ... = ... | Qualifiers.cs:18:9:18:9 | access to local variable q | | +| Qualifiers.cs:18:9:18:26 | ...; | Qualifiers.cs:18:9:18:25 | Before ... = ... | | +| Qualifiers.cs:18:9:18:26 | After ...; | Qualifiers.cs:20:9:20:24 | ...; | | | Qualifiers.cs:18:13:18:16 | this access | Qualifiers.cs:18:13:18:25 | call to method Method | | -| Qualifiers.cs:18:13:18:25 | call to method Method | Qualifiers.cs:18:9:18:25 | ... = ... | | -| Qualifiers.cs:20:9:20:23 | ... = ... | Qualifiers.cs:21:9:21:27 | ...; | | -| Qualifiers.cs:20:9:20:24 | ...; | Qualifiers.cs:20:13:20:23 | access to field StaticField | | +| Qualifiers.cs:18:13:18:25 | After call to method Method | Qualifiers.cs:18:9:18:25 | ... = ... | | +| Qualifiers.cs:18:13:18:25 | Before call to method Method | Qualifiers.cs:18:13:18:16 | this access | | +| Qualifiers.cs:18:13:18:25 | call to method Method | Qualifiers.cs:18:13:18:25 | After call to method Method | | +| Qualifiers.cs:20:9:20:9 | access to local variable q | Qualifiers.cs:20:13:20:23 | access to field StaticField | | +| Qualifiers.cs:20:9:20:23 | ... = ... | Qualifiers.cs:20:9:20:23 | After ... = ... | | +| Qualifiers.cs:20:9:20:23 | After ... = ... | Qualifiers.cs:20:9:20:24 | After ...; | | +| Qualifiers.cs:20:9:20:23 | Before ... = ... | Qualifiers.cs:20:9:20:9 | access to local variable q | | +| Qualifiers.cs:20:9:20:24 | ...; | Qualifiers.cs:20:9:20:23 | Before ... = ... | | +| Qualifiers.cs:20:9:20:24 | After ...; | Qualifiers.cs:21:9:21:27 | ...; | | | Qualifiers.cs:20:13:20:23 | access to field StaticField | Qualifiers.cs:20:9:20:23 | ... = ... | | -| Qualifiers.cs:21:9:21:26 | ... = ... | Qualifiers.cs:22:9:22:27 | ...; | | -| Qualifiers.cs:21:9:21:27 | ...; | Qualifiers.cs:21:13:21:26 | access to property StaticProperty | | -| Qualifiers.cs:21:13:21:26 | access to property StaticProperty | Qualifiers.cs:21:9:21:26 | ... = ... | | -| Qualifiers.cs:22:9:22:26 | ... = ... | Qualifiers.cs:24:9:24:35 | ...; | | -| Qualifiers.cs:22:9:22:27 | ...; | Qualifiers.cs:22:13:22:26 | call to method StaticMethod | | -| Qualifiers.cs:22:13:22:26 | call to method StaticMethod | Qualifiers.cs:22:9:22:26 | ... = ... | | -| Qualifiers.cs:24:9:24:34 | ... = ... | Qualifiers.cs:25:9:25:38 | ...; | | -| Qualifiers.cs:24:9:24:35 | ...; | Qualifiers.cs:24:13:24:34 | access to field StaticField | | +| Qualifiers.cs:21:9:21:9 | access to local variable q | Qualifiers.cs:21:13:21:26 | Before access to property StaticProperty | | +| Qualifiers.cs:21:9:21:26 | ... = ... | Qualifiers.cs:21:9:21:26 | After ... = ... | | +| Qualifiers.cs:21:9:21:26 | After ... = ... | Qualifiers.cs:21:9:21:27 | After ...; | | +| Qualifiers.cs:21:9:21:26 | Before ... = ... | Qualifiers.cs:21:9:21:9 | access to local variable q | | +| Qualifiers.cs:21:9:21:27 | ...; | Qualifiers.cs:21:9:21:26 | Before ... = ... | | +| Qualifiers.cs:21:9:21:27 | After ...; | Qualifiers.cs:22:9:22:27 | ...; | | +| Qualifiers.cs:21:13:21:26 | After access to property StaticProperty | Qualifiers.cs:21:9:21:26 | ... = ... | | +| Qualifiers.cs:21:13:21:26 | Before access to property StaticProperty | Qualifiers.cs:21:13:21:26 | access to property StaticProperty | | +| Qualifiers.cs:21:13:21:26 | access to property StaticProperty | Qualifiers.cs:21:13:21:26 | After access to property StaticProperty | | +| Qualifiers.cs:22:9:22:9 | access to local variable q | Qualifiers.cs:22:13:22:26 | Before call to method StaticMethod | | +| Qualifiers.cs:22:9:22:26 | ... = ... | Qualifiers.cs:22:9:22:26 | After ... = ... | | +| Qualifiers.cs:22:9:22:26 | After ... = ... | Qualifiers.cs:22:9:22:27 | After ...; | | +| Qualifiers.cs:22:9:22:26 | Before ... = ... | Qualifiers.cs:22:9:22:9 | access to local variable q | | +| Qualifiers.cs:22:9:22:27 | ...; | Qualifiers.cs:22:9:22:26 | Before ... = ... | | +| Qualifiers.cs:22:9:22:27 | After ...; | Qualifiers.cs:24:9:24:35 | ...; | | +| Qualifiers.cs:22:13:22:26 | After call to method StaticMethod | Qualifiers.cs:22:9:22:26 | ... = ... | | +| Qualifiers.cs:22:13:22:26 | Before call to method StaticMethod | Qualifiers.cs:22:13:22:26 | call to method StaticMethod | | +| Qualifiers.cs:22:13:22:26 | call to method StaticMethod | Qualifiers.cs:22:13:22:26 | After call to method StaticMethod | | +| Qualifiers.cs:24:9:24:9 | access to local variable q | Qualifiers.cs:24:13:24:34 | access to field StaticField | | +| Qualifiers.cs:24:9:24:34 | ... = ... | Qualifiers.cs:24:9:24:34 | After ... = ... | | +| Qualifiers.cs:24:9:24:34 | After ... = ... | Qualifiers.cs:24:9:24:35 | After ...; | | +| Qualifiers.cs:24:9:24:34 | Before ... = ... | Qualifiers.cs:24:9:24:9 | access to local variable q | | +| Qualifiers.cs:24:9:24:35 | ...; | Qualifiers.cs:24:9:24:34 | Before ... = ... | | +| Qualifiers.cs:24:9:24:35 | After ...; | Qualifiers.cs:25:9:25:38 | ...; | | | Qualifiers.cs:24:13:24:34 | access to field StaticField | Qualifiers.cs:24:9:24:34 | ... = ... | | -| Qualifiers.cs:25:9:25:37 | ... = ... | Qualifiers.cs:26:9:26:38 | ...; | | -| Qualifiers.cs:25:9:25:38 | ...; | Qualifiers.cs:25:13:25:37 | access to property StaticProperty | | -| Qualifiers.cs:25:13:25:37 | access to property StaticProperty | Qualifiers.cs:25:9:25:37 | ... = ... | | -| Qualifiers.cs:26:9:26:37 | ... = ... | Qualifiers.cs:28:9:28:41 | ...; | | -| Qualifiers.cs:26:9:26:38 | ...; | Qualifiers.cs:26:13:26:37 | call to method StaticMethod | | -| Qualifiers.cs:26:13:26:37 | call to method StaticMethod | Qualifiers.cs:26:9:26:37 | ... = ... | | -| Qualifiers.cs:28:9:28:40 | ... = ... | Qualifiers.cs:29:9:29:47 | ...; | | -| Qualifiers.cs:28:9:28:41 | ...; | Qualifiers.cs:28:13:28:34 | access to field StaticField | | +| Qualifiers.cs:25:9:25:9 | access to local variable q | Qualifiers.cs:25:13:25:37 | Before access to property StaticProperty | | +| Qualifiers.cs:25:9:25:37 | ... = ... | Qualifiers.cs:25:9:25:37 | After ... = ... | | +| Qualifiers.cs:25:9:25:37 | After ... = ... | Qualifiers.cs:25:9:25:38 | After ...; | | +| Qualifiers.cs:25:9:25:37 | Before ... = ... | Qualifiers.cs:25:9:25:9 | access to local variable q | | +| Qualifiers.cs:25:9:25:38 | ...; | Qualifiers.cs:25:9:25:37 | Before ... = ... | | +| Qualifiers.cs:25:9:25:38 | After ...; | Qualifiers.cs:26:9:26:38 | ...; | | +| Qualifiers.cs:25:13:25:37 | After access to property StaticProperty | Qualifiers.cs:25:9:25:37 | ... = ... | | +| Qualifiers.cs:25:13:25:37 | Before access to property StaticProperty | Qualifiers.cs:25:13:25:37 | access to property StaticProperty | | +| Qualifiers.cs:25:13:25:37 | access to property StaticProperty | Qualifiers.cs:25:13:25:37 | After access to property StaticProperty | | +| Qualifiers.cs:26:9:26:9 | access to local variable q | Qualifiers.cs:26:13:26:37 | Before call to method StaticMethod | | +| Qualifiers.cs:26:9:26:37 | ... = ... | Qualifiers.cs:26:9:26:37 | After ... = ... | | +| Qualifiers.cs:26:9:26:37 | After ... = ... | Qualifiers.cs:26:9:26:38 | After ...; | | +| Qualifiers.cs:26:9:26:37 | Before ... = ... | Qualifiers.cs:26:9:26:9 | access to local variable q | | +| Qualifiers.cs:26:9:26:38 | ...; | Qualifiers.cs:26:9:26:37 | Before ... = ... | | +| Qualifiers.cs:26:9:26:38 | After ...; | Qualifiers.cs:28:9:28:41 | ...; | | +| Qualifiers.cs:26:13:26:37 | After call to method StaticMethod | Qualifiers.cs:26:9:26:37 | ... = ... | | +| Qualifiers.cs:26:13:26:37 | Before call to method StaticMethod | Qualifiers.cs:26:13:26:37 | call to method StaticMethod | | +| Qualifiers.cs:26:13:26:37 | call to method StaticMethod | Qualifiers.cs:26:13:26:37 | After call to method StaticMethod | | +| Qualifiers.cs:28:9:28:9 | access to local variable q | Qualifiers.cs:28:13:28:40 | Before access to field Field | | +| Qualifiers.cs:28:9:28:40 | ... = ... | Qualifiers.cs:28:9:28:40 | After ... = ... | | +| Qualifiers.cs:28:9:28:40 | After ... = ... | Qualifiers.cs:28:9:28:41 | After ...; | | +| Qualifiers.cs:28:9:28:40 | Before ... = ... | Qualifiers.cs:28:9:28:9 | access to local variable q | | +| Qualifiers.cs:28:9:28:41 | ...; | Qualifiers.cs:28:9:28:40 | Before ... = ... | | +| Qualifiers.cs:28:9:28:41 | After ...; | Qualifiers.cs:29:9:29:47 | ...; | | | Qualifiers.cs:28:13:28:34 | access to field StaticField | Qualifiers.cs:28:13:28:40 | access to field Field | | -| Qualifiers.cs:28:13:28:40 | access to field Field | Qualifiers.cs:28:9:28:40 | ... = ... | | -| Qualifiers.cs:29:9:29:46 | ... = ... | Qualifiers.cs:30:9:30:47 | ...; | | -| Qualifiers.cs:29:9:29:47 | ...; | Qualifiers.cs:29:13:29:37 | access to property StaticProperty | | -| Qualifiers.cs:29:13:29:37 | access to property StaticProperty | Qualifiers.cs:29:13:29:46 | access to property Property | | -| Qualifiers.cs:29:13:29:46 | access to property Property | Qualifiers.cs:29:9:29:46 | ... = ... | | -| Qualifiers.cs:30:9:30:46 | ... = ... | Qualifiers.cs:10:10:10:10 | exit M (normal) | | -| Qualifiers.cs:30:9:30:47 | ...; | Qualifiers.cs:30:13:30:37 | call to method StaticMethod | | -| Qualifiers.cs:30:13:30:37 | call to method StaticMethod | Qualifiers.cs:30:13:30:46 | call to method Method | | -| Qualifiers.cs:30:13:30:46 | call to method Method | Qualifiers.cs:30:9:30:46 | ... = ... | | -| Switch.cs:3:7:3:12 | call to constructor Object | Switch.cs:3:7:3:12 | {...} | | -| Switch.cs:3:7:3:12 | call to method | Switch.cs:3:7:3:12 | call to constructor Object | | -| Switch.cs:3:7:3:12 | enter Switch | Switch.cs:3:7:3:12 | this access | | -| Switch.cs:3:7:3:12 | exit Switch (normal) | Switch.cs:3:7:3:12 | exit Switch | | +| Qualifiers.cs:28:13:28:40 | After access to field Field | Qualifiers.cs:28:9:28:40 | ... = ... | | +| Qualifiers.cs:28:13:28:40 | Before access to field Field | Qualifiers.cs:28:13:28:34 | access to field StaticField | | +| Qualifiers.cs:28:13:28:40 | access to field Field | Qualifiers.cs:28:13:28:40 | After access to field Field | | +| Qualifiers.cs:29:9:29:9 | access to local variable q | Qualifiers.cs:29:13:29:46 | Before access to property Property | | +| Qualifiers.cs:29:9:29:46 | ... = ... | Qualifiers.cs:29:9:29:46 | After ... = ... | | +| Qualifiers.cs:29:9:29:46 | After ... = ... | Qualifiers.cs:29:9:29:47 | After ...; | | +| Qualifiers.cs:29:9:29:46 | Before ... = ... | Qualifiers.cs:29:9:29:9 | access to local variable q | | +| Qualifiers.cs:29:9:29:47 | ...; | Qualifiers.cs:29:9:29:46 | Before ... = ... | | +| Qualifiers.cs:29:9:29:47 | After ...; | Qualifiers.cs:30:9:30:47 | ...; | | +| Qualifiers.cs:29:13:29:37 | After access to property StaticProperty | Qualifiers.cs:29:13:29:46 | access to property Property | | +| Qualifiers.cs:29:13:29:37 | Before access to property StaticProperty | Qualifiers.cs:29:13:29:37 | access to property StaticProperty | | +| Qualifiers.cs:29:13:29:37 | access to property StaticProperty | Qualifiers.cs:29:13:29:37 | After access to property StaticProperty | | +| Qualifiers.cs:29:13:29:46 | After access to property Property | Qualifiers.cs:29:9:29:46 | ... = ... | | +| Qualifiers.cs:29:13:29:46 | Before access to property Property | Qualifiers.cs:29:13:29:37 | Before access to property StaticProperty | | +| Qualifiers.cs:29:13:29:46 | access to property Property | Qualifiers.cs:29:13:29:46 | After access to property Property | | +| Qualifiers.cs:30:9:30:9 | access to local variable q | Qualifiers.cs:30:13:30:46 | Before call to method Method | | +| Qualifiers.cs:30:9:30:46 | ... = ... | Qualifiers.cs:30:9:30:46 | After ... = ... | | +| Qualifiers.cs:30:9:30:46 | After ... = ... | Qualifiers.cs:30:9:30:47 | After ...; | | +| Qualifiers.cs:30:9:30:46 | Before ... = ... | Qualifiers.cs:30:9:30:9 | access to local variable q | | +| Qualifiers.cs:30:9:30:47 | ...; | Qualifiers.cs:30:9:30:46 | Before ... = ... | | +| Qualifiers.cs:30:9:30:47 | After ...; | Qualifiers.cs:11:5:31:5 | After {...} | | +| Qualifiers.cs:30:13:30:37 | After call to method StaticMethod | Qualifiers.cs:30:13:30:46 | call to method Method | | +| Qualifiers.cs:30:13:30:37 | Before call to method StaticMethod | Qualifiers.cs:30:13:30:37 | call to method StaticMethod | | +| Qualifiers.cs:30:13:30:37 | call to method StaticMethod | Qualifiers.cs:30:13:30:37 | After call to method StaticMethod | | +| Qualifiers.cs:30:13:30:46 | After call to method Method | Qualifiers.cs:30:9:30:46 | ... = ... | | +| Qualifiers.cs:30:13:30:46 | Before call to method Method | Qualifiers.cs:30:13:30:37 | Before call to method StaticMethod | | +| Qualifiers.cs:30:13:30:46 | call to method Method | Qualifiers.cs:30:13:30:46 | After call to method Method | | +| Switch.cs:3:7:3:12 | After call to constructor Object | Switch.cs:3:7:3:12 | {...} | | +| Switch.cs:3:7:3:12 | After call to method | Switch.cs:3:7:3:12 | Before call to constructor Object | | +| Switch.cs:3:7:3:12 | Before call to constructor Object | Switch.cs:3:7:3:12 | call to constructor Object | | +| Switch.cs:3:7:3:12 | Before call to method | Switch.cs:3:7:3:12 | this access | | +| Switch.cs:3:7:3:12 | Entry | Switch.cs:3:7:3:12 | Before call to method | | +| Switch.cs:3:7:3:12 | Normal Exit | Switch.cs:3:7:3:12 | Exit | | +| Switch.cs:3:7:3:12 | call to constructor Object | Switch.cs:3:7:3:12 | After call to constructor Object | | +| Switch.cs:3:7:3:12 | call to method | Switch.cs:3:7:3:12 | After call to method | | | Switch.cs:3:7:3:12 | this access | Switch.cs:3:7:3:12 | call to method | | -| Switch.cs:3:7:3:12 | {...} | Switch.cs:3:7:3:12 | exit Switch (normal) | | -| Switch.cs:5:10:5:11 | enter M1 | Switch.cs:6:5:8:5 | {...} | | -| Switch.cs:5:10:5:11 | exit M1 (normal) | Switch.cs:5:10:5:11 | exit M1 | | +| Switch.cs:3:7:3:12 | {...} | Switch.cs:3:7:3:12 | Normal Exit | | +| Switch.cs:5:10:5:11 | Entry | Switch.cs:5:20:5:20 | o | | +| Switch.cs:5:10:5:11 | Normal Exit | Switch.cs:5:10:5:11 | Exit | | +| Switch.cs:5:20:5:20 | o | Switch.cs:6:5:8:5 | {...} | | +| Switch.cs:6:5:8:5 | After {...} | Switch.cs:5:10:5:11 | Normal Exit | | | Switch.cs:6:5:8:5 | {...} | Switch.cs:7:9:7:22 | switch (...) {...} | | +| Switch.cs:7:9:7:22 | After switch (...) {...} | Switch.cs:6:5:8:5 | After {...} | | | Switch.cs:7:9:7:22 | switch (...) {...} | Switch.cs:7:17:7:17 | access to parameter o | | -| Switch.cs:7:17:7:17 | access to parameter o | Switch.cs:5:10:5:11 | exit M1 (normal) | | -| Switch.cs:10:10:10:11 | enter M2 | Switch.cs:11:5:33:5 | {...} | | -| Switch.cs:10:10:10:11 | exit M2 (abnormal) | Switch.cs:10:10:10:11 | exit M2 | | -| Switch.cs:10:10:10:11 | exit M2 (normal) | Switch.cs:10:10:10:11 | exit M2 | | +| Switch.cs:7:17:7:17 | access to parameter o | Switch.cs:7:9:7:22 | After switch (...) {...} | | +| Switch.cs:10:10:10:11 | Entry | Switch.cs:10:20:10:20 | o | | +| Switch.cs:10:10:10:11 | Exceptional Exit | Switch.cs:10:10:10:11 | Exit | | +| Switch.cs:10:10:10:11 | Normal Exit | Switch.cs:10:10:10:11 | Exit | | +| Switch.cs:10:20:10:20 | o | Switch.cs:11:5:33:5 | {...} | | | Switch.cs:11:5:33:5 | {...} | Switch.cs:12:9:32:9 | switch (...) {...} | | | Switch.cs:12:9:32:9 | switch (...) {...} | Switch.cs:12:17:12:17 | access to parameter o | | | Switch.cs:12:17:12:17 | access to parameter o | Switch.cs:14:13:14:21 | case ...: | | +| Switch.cs:14:13:14:21 | After case ...: [match] | Switch.cs:15:17:15:23 | Before return ...; | | +| Switch.cs:14:13:14:21 | After case ...: [no-match] | Switch.cs:16:13:16:19 | case ...: | | | Switch.cs:14:13:14:21 | case ...: | Switch.cs:14:18:14:20 | "a" | | -| Switch.cs:14:18:14:20 | "a" | Switch.cs:15:17:15:23 | return ...; | match | -| Switch.cs:14:18:14:20 | "a" | Switch.cs:16:13:16:19 | case ...: | no-match | -| Switch.cs:15:17:15:23 | return ...; | Switch.cs:10:10:10:11 | exit M2 (normal) | return | +| Switch.cs:14:18:14:20 | "a" | Switch.cs:14:18:14:20 | After "a" [match] | match | +| Switch.cs:14:18:14:20 | "a" | Switch.cs:14:18:14:20 | After "a" [no-match] | no-match | +| Switch.cs:14:18:14:20 | After "a" [match] | Switch.cs:14:13:14:21 | After case ...: [match] | match | +| Switch.cs:14:18:14:20 | After "a" [no-match] | Switch.cs:14:13:14:21 | After case ...: [no-match] | no-match | +| Switch.cs:15:17:15:23 | Before return ...; | Switch.cs:15:17:15:23 | return ...; | | +| Switch.cs:15:17:15:23 | return ...; | Switch.cs:10:10:10:11 | Normal Exit | return | +| Switch.cs:16:13:16:19 | After case ...: [match] | Switch.cs:17:17:17:38 | Before throw ...; | | +| Switch.cs:16:13:16:19 | After case ...: [no-match] | Switch.cs:18:13:18:22 | case ...: | | | Switch.cs:16:13:16:19 | case ...: | Switch.cs:16:18:16:18 | 0 | | -| Switch.cs:16:18:16:18 | 0 | Switch.cs:17:23:17:37 | object creation of type Exception | match | -| Switch.cs:16:18:16:18 | 0 | Switch.cs:18:13:18:22 | case ...: | no-match | -| Switch.cs:17:17:17:38 | throw ...; | Switch.cs:10:10:10:11 | exit M2 (abnormal) | exception | -| Switch.cs:17:23:17:37 | object creation of type Exception | Switch.cs:17:17:17:38 | throw ...; | | +| Switch.cs:16:18:16:18 | 0 | Switch.cs:16:18:16:18 | After 0 [match] | match | +| Switch.cs:16:18:16:18 | 0 | Switch.cs:16:18:16:18 | After 0 [no-match] | no-match | +| Switch.cs:16:18:16:18 | After 0 [match] | Switch.cs:16:13:16:19 | After case ...: [match] | match | +| Switch.cs:16:18:16:18 | After 0 [no-match] | Switch.cs:16:13:16:19 | After case ...: [no-match] | no-match | +| Switch.cs:17:17:17:38 | Before throw ...; | Switch.cs:17:23:17:37 | Before object creation of type Exception | | +| Switch.cs:17:17:17:38 | throw ...; | Switch.cs:10:10:10:11 | Exceptional Exit | exception | +| Switch.cs:17:23:17:37 | After object creation of type Exception | Switch.cs:17:17:17:38 | throw ...; | | +| Switch.cs:17:23:17:37 | Before object creation of type Exception | Switch.cs:17:23:17:37 | object creation of type Exception | | +| Switch.cs:17:23:17:37 | object creation of type Exception | Switch.cs:17:23:17:37 | After object creation of type Exception | | +| Switch.cs:18:13:18:22 | After case ...: [match] | Switch.cs:19:17:19:29 | Before goto default; | | +| Switch.cs:18:13:18:22 | After case ...: [no-match] | Switch.cs:20:13:20:23 | case ...: | | | Switch.cs:18:13:18:22 | case ...: | Switch.cs:18:18:18:21 | null | | -| Switch.cs:18:18:18:21 | null | Switch.cs:19:17:19:29 | goto default; | match | -| Switch.cs:18:18:18:21 | null | Switch.cs:20:13:20:23 | case ...: | no-match | -| Switch.cs:19:17:19:29 | goto default; | Switch.cs:30:13:30:20 | default: | goto | +| Switch.cs:18:18:18:21 | After null [match] | Switch.cs:18:13:18:22 | After case ...: [match] | match | +| Switch.cs:18:18:18:21 | After null [no-match] | Switch.cs:18:13:18:22 | After case ...: [no-match] | no-match | +| Switch.cs:18:18:18:21 | null | Switch.cs:18:18:18:21 | After null [match] | match | +| Switch.cs:18:18:18:21 | null | Switch.cs:18:18:18:21 | After null [no-match] | no-match | +| Switch.cs:19:17:19:29 | Before goto default; | Switch.cs:19:17:19:29 | goto default; | | +| Switch.cs:19:17:19:29 | goto default; | Switch.cs:30:13:30:20 | After default: [match] | goto | +| Switch.cs:20:13:20:23 | After case ...: [match] | Switch.cs:21:17:22:27 | if (...) ... | | +| Switch.cs:20:13:20:23 | After case ...: [no-match] | Switch.cs:24:13:24:56 | case ...: | | | Switch.cs:20:13:20:23 | case ...: | Switch.cs:20:18:20:22 | Int32 i | | -| Switch.cs:20:18:20:22 | Int32 i | Switch.cs:21:17:22:27 | if (...) ... | match | -| Switch.cs:20:18:20:22 | Int32 i | Switch.cs:24:13:24:56 | case ...: | no-match | -| Switch.cs:21:17:22:27 | if (...) ... | Switch.cs:21:21:21:21 | access to parameter o | | +| Switch.cs:20:18:20:22 | After Int32 i [match] | Switch.cs:20:13:20:23 | After case ...: [match] | match | +| Switch.cs:20:18:20:22 | After Int32 i [no-match] | Switch.cs:20:13:20:23 | After case ...: [no-match] | no-match | +| Switch.cs:20:18:20:22 | Int32 i | Switch.cs:20:18:20:22 | After Int32 i [match] | match | +| Switch.cs:20:18:20:22 | Int32 i | Switch.cs:20:18:20:22 | After Int32 i [no-match] | no-match | +| Switch.cs:21:17:22:27 | After if (...) ... | Switch.cs:23:17:23:28 | Before goto case ...; | | +| Switch.cs:21:17:22:27 | if (...) ... | Switch.cs:21:21:21:29 | Before ... == ... | | | Switch.cs:21:21:21:21 | access to parameter o | Switch.cs:21:26:21:29 | null | | -| Switch.cs:21:21:21:29 | ... == ... | Switch.cs:22:21:22:27 | return ...; | true | -| Switch.cs:21:21:21:29 | ... == ... | Switch.cs:23:27:23:27 | 0 | false | +| Switch.cs:21:21:21:29 | ... == ... | Switch.cs:21:21:21:29 | After ... == ... [false] | false | +| Switch.cs:21:21:21:29 | ... == ... | Switch.cs:21:21:21:29 | After ... == ... [true] | true | +| Switch.cs:21:21:21:29 | After ... == ... [false] | Switch.cs:21:17:22:27 | After if (...) ... | | +| Switch.cs:21:21:21:29 | After ... == ... [true] | Switch.cs:22:21:22:27 | Before return ...; | | +| Switch.cs:21:21:21:29 | Before ... == ... | Switch.cs:21:21:21:21 | access to parameter o | | | Switch.cs:21:26:21:29 | null | Switch.cs:21:21:21:29 | ... == ... | | -| Switch.cs:22:21:22:27 | return ...; | Switch.cs:10:10:10:11 | exit M2 (normal) | return | -| Switch.cs:23:17:23:28 | goto case ...; | Switch.cs:16:13:16:19 | case ...: | goto | +| Switch.cs:22:21:22:27 | Before return ...; | Switch.cs:22:21:22:27 | return ...; | | +| Switch.cs:22:21:22:27 | return ...; | Switch.cs:10:10:10:11 | Normal Exit | return | +| Switch.cs:23:17:23:28 | Before goto case ...; | Switch.cs:23:27:23:27 | 0 | | +| Switch.cs:23:17:23:28 | goto case ...; | Switch.cs:16:13:16:19 | After case ...: [match] | goto | | Switch.cs:23:27:23:27 | 0 | Switch.cs:23:17:23:28 | goto case ...; | | +| Switch.cs:24:13:24:56 | After case ...: [match] | Switch.cs:24:32:24:55 | ... && ... | | +| Switch.cs:24:13:24:56 | After case ...: [no-match] | Switch.cs:27:13:27:39 | case ...: | | | Switch.cs:24:13:24:56 | case ...: | Switch.cs:24:18:24:25 | String s | | -| Switch.cs:24:18:24:25 | String s | Switch.cs:24:32:24:32 | access to local variable s | match | -| Switch.cs:24:18:24:25 | String s | Switch.cs:27:13:27:39 | case ...: | no-match | +| Switch.cs:24:18:24:25 | After String s [match] | Switch.cs:24:13:24:56 | After case ...: [match] | match | +| Switch.cs:24:18:24:25 | After String s [no-match] | Switch.cs:24:13:24:56 | After case ...: [no-match] | no-match | +| Switch.cs:24:18:24:25 | String s | Switch.cs:24:18:24:25 | After String s [match] | match | +| Switch.cs:24:18:24:25 | String s | Switch.cs:24:18:24:25 | After String s [no-match] | no-match | | Switch.cs:24:32:24:32 | access to local variable s | Switch.cs:24:32:24:39 | access to property Length | | -| Switch.cs:24:32:24:39 | access to property Length | Switch.cs:24:43:24:43 | 0 | | -| Switch.cs:24:32:24:43 | ... > ... | Switch.cs:24:32:24:55 | [false] ... && ... | false | -| Switch.cs:24:32:24:43 | ... > ... | Switch.cs:24:48:24:48 | access to local variable s | true | -| Switch.cs:24:32:24:55 | [false] ... && ... | Switch.cs:27:13:27:39 | case ...: | false | -| Switch.cs:24:32:24:55 | [true] ... && ... | Switch.cs:25:17:25:37 | ...; | true | +| Switch.cs:24:32:24:39 | After access to property Length | Switch.cs:24:43:24:43 | 0 | | +| Switch.cs:24:32:24:39 | Before access to property Length | Switch.cs:24:32:24:32 | access to local variable s | | +| Switch.cs:24:32:24:39 | access to property Length | Switch.cs:24:32:24:39 | After access to property Length | | +| Switch.cs:24:32:24:43 | ... > ... | Switch.cs:24:32:24:43 | After ... > ... [false] | false | +| Switch.cs:24:32:24:43 | ... > ... | Switch.cs:24:32:24:43 | After ... > ... [true] | true | +| Switch.cs:24:32:24:43 | After ... > ... [false] | Switch.cs:24:32:24:55 | After ... && ... [false] | false | +| Switch.cs:24:32:24:43 | After ... > ... [true] | Switch.cs:24:48:24:55 | Before ... != ... | | +| Switch.cs:24:32:24:43 | Before ... > ... | Switch.cs:24:32:24:39 | Before access to property Length | | +| Switch.cs:24:32:24:55 | ... && ... | Switch.cs:24:32:24:43 | Before ... > ... | | +| Switch.cs:24:32:24:55 | After ... && ... [false] | Switch.cs:27:13:27:39 | case ...: | | +| Switch.cs:24:32:24:55 | After ... && ... [true] | Switch.cs:25:17:25:37 | ...; | | | Switch.cs:24:43:24:43 | 0 | Switch.cs:24:32:24:43 | ... > ... | | | Switch.cs:24:48:24:48 | access to local variable s | Switch.cs:24:53:24:55 | "a" | | -| Switch.cs:24:48:24:55 | ... != ... | Switch.cs:24:32:24:55 | [false] ... && ... | false | -| Switch.cs:24:48:24:55 | ... != ... | Switch.cs:24:32:24:55 | [true] ... && ... | true | +| Switch.cs:24:48:24:55 | ... != ... | Switch.cs:24:48:24:55 | After ... != ... [false] | false | +| Switch.cs:24:48:24:55 | ... != ... | Switch.cs:24:48:24:55 | After ... != ... [true] | true | +| Switch.cs:24:48:24:55 | After ... != ... [false] | Switch.cs:24:32:24:55 | After ... && ... [false] | false | +| Switch.cs:24:48:24:55 | After ... != ... [true] | Switch.cs:24:32:24:55 | After ... && ... [true] | true | +| Switch.cs:24:48:24:55 | Before ... != ... | Switch.cs:24:48:24:48 | access to local variable s | | | Switch.cs:24:53:24:55 | "a" | Switch.cs:24:48:24:55 | ... != ... | | -| Switch.cs:25:17:25:36 | call to method WriteLine | Switch.cs:26:17:26:23 | return ...; | | -| Switch.cs:25:17:25:37 | ...; | Switch.cs:25:35:25:35 | access to local variable s | | +| Switch.cs:25:17:25:36 | After call to method WriteLine | Switch.cs:25:17:25:37 | After ...; | | +| Switch.cs:25:17:25:36 | Before call to method WriteLine | Switch.cs:25:35:25:35 | access to local variable s | | +| Switch.cs:25:17:25:36 | call to method WriteLine | Switch.cs:25:17:25:36 | After call to method WriteLine | | +| Switch.cs:25:17:25:37 | ...; | Switch.cs:25:17:25:36 | Before call to method WriteLine | | +| Switch.cs:25:17:25:37 | After ...; | Switch.cs:26:17:26:23 | Before return ...; | | | Switch.cs:25:35:25:35 | access to local variable s | Switch.cs:25:17:25:36 | call to method WriteLine | | -| Switch.cs:26:17:26:23 | return ...; | Switch.cs:10:10:10:11 | exit M2 (normal) | return | +| Switch.cs:26:17:26:23 | Before return ...; | Switch.cs:26:17:26:23 | return ...; | | +| Switch.cs:26:17:26:23 | return ...; | Switch.cs:10:10:10:11 | Normal Exit | return | +| Switch.cs:27:13:27:39 | After case ...: [match] | Switch.cs:27:32:27:38 | Before call to method Throw | | +| Switch.cs:27:13:27:39 | After case ...: [no-match] | Switch.cs:30:13:30:20 | default: | | | Switch.cs:27:13:27:39 | case ...: | Switch.cs:27:18:27:25 | Double d | | -| Switch.cs:27:18:27:25 | Double d | Switch.cs:27:32:27:38 | call to method Throw | match | -| Switch.cs:27:18:27:25 | Double d | Switch.cs:30:13:30:20 | default: | no-match | -| Switch.cs:27:32:27:38 | call to method Throw | Switch.cs:10:10:10:11 | exit M2 (abnormal) | exception | -| Switch.cs:28:13:28:17 | Label: | Switch.cs:29:17:29:23 | return ...; | | -| Switch.cs:29:17:29:23 | return ...; | Switch.cs:10:10:10:11 | exit M2 (normal) | return | -| Switch.cs:30:13:30:20 | default: | Switch.cs:31:17:31:27 | goto ...; | | +| Switch.cs:27:18:27:25 | After Double d [match] | Switch.cs:27:13:27:39 | After case ...: [match] | match | +| Switch.cs:27:18:27:25 | After Double d [no-match] | Switch.cs:27:13:27:39 | After case ...: [no-match] | no-match | +| Switch.cs:27:18:27:25 | Double d | Switch.cs:27:18:27:25 | After Double d [match] | match | +| Switch.cs:27:18:27:25 | Double d | Switch.cs:27:18:27:25 | After Double d [no-match] | no-match | +| Switch.cs:27:32:27:38 | Before call to method Throw | Switch.cs:27:32:27:38 | call to method Throw | | +| Switch.cs:27:32:27:38 | call to method Throw | Switch.cs:10:10:10:11 | Exceptional Exit | exception | +| Switch.cs:28:13:28:17 | Label: | Switch.cs:29:17:29:23 | Before return ...; | | +| Switch.cs:29:17:29:23 | Before return ...; | Switch.cs:29:17:29:23 | return ...; | | +| Switch.cs:29:17:29:23 | return ...; | Switch.cs:10:10:10:11 | Normal Exit | return | +| Switch.cs:30:13:30:20 | After default: [match] | Switch.cs:31:17:31:27 | Before goto ...; | | +| Switch.cs:30:13:30:20 | default: | Switch.cs:30:13:30:20 | After default: [match] | match | +| Switch.cs:31:17:31:27 | Before goto ...; | Switch.cs:31:17:31:27 | goto ...; | | | Switch.cs:31:17:31:27 | goto ...; | Switch.cs:28:13:28:17 | Label: | goto | -| Switch.cs:35:10:35:11 | enter M3 | Switch.cs:36:5:42:5 | {...} | | -| Switch.cs:35:10:35:11 | exit M3 (abnormal) | Switch.cs:35:10:35:11 | exit M3 | | +| Switch.cs:35:10:35:11 | Entry | Switch.cs:36:5:42:5 | {...} | | +| Switch.cs:35:10:35:11 | Exceptional Exit | Switch.cs:35:10:35:11 | Exit | | | Switch.cs:36:5:42:5 | {...} | Switch.cs:37:9:41:9 | switch (...) {...} | | -| Switch.cs:37:9:41:9 | switch (...) {...} | Switch.cs:37:17:37:23 | call to method Throw | | -| Switch.cs:37:17:37:23 | call to method Throw | Switch.cs:35:10:35:11 | exit M3 (abnormal) | exception | -| Switch.cs:44:10:44:11 | enter M4 | Switch.cs:45:5:53:5 | {...} | | -| Switch.cs:44:10:44:11 | exit M4 (normal) | Switch.cs:44:10:44:11 | exit M4 | | +| Switch.cs:37:9:41:9 | switch (...) {...} | Switch.cs:37:17:37:23 | Before call to method Throw | | +| Switch.cs:37:17:37:23 | Before call to method Throw | Switch.cs:37:17:37:23 | call to method Throw | | +| Switch.cs:37:17:37:23 | call to method Throw | Switch.cs:35:10:35:11 | Exceptional Exit | exception | +| Switch.cs:44:10:44:11 | Entry | Switch.cs:44:20:44:20 | o | | +| Switch.cs:44:10:44:11 | Normal Exit | Switch.cs:44:10:44:11 | Exit | | +| Switch.cs:44:20:44:20 | o | Switch.cs:45:5:53:5 | {...} | | +| Switch.cs:45:5:53:5 | After {...} | Switch.cs:44:10:44:11 | Normal Exit | | | Switch.cs:45:5:53:5 | {...} | Switch.cs:46:9:52:9 | switch (...) {...} | | +| Switch.cs:46:9:52:9 | After switch (...) {...} | Switch.cs:45:5:53:5 | After {...} | | | Switch.cs:46:9:52:9 | switch (...) {...} | Switch.cs:46:17:46:17 | access to parameter o | | | Switch.cs:46:17:46:17 | access to parameter o | Switch.cs:48:13:48:23 | case ...: | | +| Switch.cs:48:13:48:23 | After case ...: [match] | Switch.cs:49:17:49:22 | Before break; | | +| Switch.cs:48:13:48:23 | After case ...: [no-match] | Switch.cs:50:13:50:39 | case ...: | | | Switch.cs:48:13:48:23 | case ...: | Switch.cs:48:18:48:20 | access to type Int32 | | -| Switch.cs:48:18:48:20 | access to type Int32 | Switch.cs:49:17:49:22 | break; | match | -| Switch.cs:48:18:48:20 | access to type Int32 | Switch.cs:50:13:50:39 | case ...: | no-match | -| Switch.cs:49:17:49:22 | break; | Switch.cs:44:10:44:11 | exit M4 (normal) | break | +| Switch.cs:48:18:48:20 | After access to type Int32 [match] | Switch.cs:48:13:48:23 | After case ...: [match] | match | +| Switch.cs:48:18:48:20 | After access to type Int32 [no-match] | Switch.cs:48:13:48:23 | After case ...: [no-match] | no-match | +| Switch.cs:48:18:48:20 | access to type Int32 | Switch.cs:48:18:48:20 | After access to type Int32 [match] | match | +| Switch.cs:48:18:48:20 | access to type Int32 | Switch.cs:48:18:48:20 | After access to type Int32 [no-match] | no-match | +| Switch.cs:49:17:49:22 | Before break; | Switch.cs:49:17:49:22 | break; | | +| Switch.cs:49:17:49:22 | break; | Switch.cs:46:9:52:9 | After switch (...) {...} | break | +| Switch.cs:50:13:50:39 | After case ...: [match] | Switch.cs:50:30:50:38 | Before ... != ... | | +| Switch.cs:50:13:50:39 | After case ...: [no-match] | Switch.cs:46:9:52:9 | After switch (...) {...} | | | Switch.cs:50:13:50:39 | case ...: | Switch.cs:50:18:50:21 | access to type Boolean | | -| Switch.cs:50:18:50:21 | access to type Boolean | Switch.cs:44:10:44:11 | exit M4 (normal) | no-match | -| Switch.cs:50:18:50:21 | access to type Boolean | Switch.cs:50:30:50:30 | access to parameter o | match | +| Switch.cs:50:18:50:21 | After access to type Boolean [match] | Switch.cs:50:13:50:39 | After case ...: [match] | match | +| Switch.cs:50:18:50:21 | After access to type Boolean [no-match] | Switch.cs:50:13:50:39 | After case ...: [no-match] | no-match | +| Switch.cs:50:18:50:21 | access to type Boolean | Switch.cs:50:18:50:21 | After access to type Boolean [match] | match | +| Switch.cs:50:18:50:21 | access to type Boolean | Switch.cs:50:18:50:21 | After access to type Boolean [no-match] | no-match | | Switch.cs:50:30:50:30 | access to parameter o | Switch.cs:50:35:50:38 | null | | -| Switch.cs:50:30:50:38 | ... != ... | Switch.cs:44:10:44:11 | exit M4 (normal) | false | -| Switch.cs:50:30:50:38 | ... != ... | Switch.cs:51:17:51:22 | break; | true | +| Switch.cs:50:30:50:38 | ... != ... | Switch.cs:50:30:50:38 | After ... != ... [false] | false | +| Switch.cs:50:30:50:38 | ... != ... | Switch.cs:50:30:50:38 | After ... != ... [true] | true | +| Switch.cs:50:30:50:38 | After ... != ... [false] | Switch.cs:46:9:52:9 | After switch (...) {...} | | +| Switch.cs:50:30:50:38 | After ... != ... [true] | Switch.cs:51:17:51:22 | Before break; | | +| Switch.cs:50:30:50:38 | Before ... != ... | Switch.cs:50:30:50:30 | access to parameter o | | | Switch.cs:50:35:50:38 | null | Switch.cs:50:30:50:38 | ... != ... | | -| Switch.cs:51:17:51:22 | break; | Switch.cs:44:10:44:11 | exit M4 (normal) | break | -| Switch.cs:55:10:55:11 | enter M5 | Switch.cs:56:5:64:5 | {...} | | -| Switch.cs:55:10:55:11 | exit M5 (normal) | Switch.cs:55:10:55:11 | exit M5 | | +| Switch.cs:51:17:51:22 | Before break; | Switch.cs:51:17:51:22 | break; | | +| Switch.cs:51:17:51:22 | break; | Switch.cs:46:9:52:9 | After switch (...) {...} | break | +| Switch.cs:55:10:55:11 | Entry | Switch.cs:56:5:64:5 | {...} | | +| Switch.cs:55:10:55:11 | Normal Exit | Switch.cs:55:10:55:11 | Exit | | +| Switch.cs:56:5:64:5 | After {...} | Switch.cs:55:10:55:11 | Normal Exit | | | Switch.cs:56:5:64:5 | {...} | Switch.cs:57:9:63:9 | switch (...) {...} | | -| Switch.cs:57:9:63:9 | switch (...) {...} | Switch.cs:57:17:57:17 | 1 | | +| Switch.cs:57:9:63:9 | After switch (...) {...} | Switch.cs:56:5:64:5 | After {...} | | +| Switch.cs:57:9:63:9 | switch (...) {...} | Switch.cs:57:17:57:21 | Before ... + ... | | | Switch.cs:57:17:57:17 | 1 | Switch.cs:57:21:57:21 | 2 | | -| Switch.cs:57:17:57:21 | ... + ... | Switch.cs:59:13:59:19 | case ...: | | +| Switch.cs:57:17:57:21 | ... + ... | Switch.cs:57:17:57:21 | After ... + ... | | +| Switch.cs:57:17:57:21 | After ... + ... | Switch.cs:59:13:59:19 | case ...: | | +| Switch.cs:57:17:57:21 | Before ... + ... | Switch.cs:57:17:57:17 | 1 | | | Switch.cs:57:21:57:21 | 2 | Switch.cs:57:17:57:21 | ... + ... | | +| Switch.cs:59:13:59:19 | After case ...: [match] | Switch.cs:60:17:60:22 | Before break; | | +| Switch.cs:59:13:59:19 | After case ...: [no-match] | Switch.cs:61:13:61:19 | case ...: | | | Switch.cs:59:13:59:19 | case ...: | Switch.cs:59:18:59:18 | 2 | | -| Switch.cs:59:18:59:18 | 2 | Switch.cs:61:13:61:19 | case ...: | no-match | +| Switch.cs:59:18:59:18 | 2 | Switch.cs:59:18:59:18 | After 2 [match] | match | +| Switch.cs:59:18:59:18 | 2 | Switch.cs:59:18:59:18 | After 2 [no-match] | no-match | +| Switch.cs:59:18:59:18 | After 2 [match] | Switch.cs:59:13:59:19 | After case ...: [match] | match | +| Switch.cs:59:18:59:18 | After 2 [no-match] | Switch.cs:59:13:59:19 | After case ...: [no-match] | no-match | +| Switch.cs:60:17:60:22 | Before break; | Switch.cs:60:17:60:22 | break; | | +| Switch.cs:60:17:60:22 | break; | Switch.cs:57:9:63:9 | After switch (...) {...} | break | +| Switch.cs:61:13:61:19 | After case ...: [match] | Switch.cs:62:17:62:22 | Before break; | | +| Switch.cs:61:13:61:19 | After case ...: [no-match] | Switch.cs:57:9:63:9 | After switch (...) {...} | | | Switch.cs:61:13:61:19 | case ...: | Switch.cs:61:18:61:18 | 3 | | -| Switch.cs:61:18:61:18 | 3 | Switch.cs:62:17:62:22 | break; | match | -| Switch.cs:62:17:62:22 | break; | Switch.cs:55:10:55:11 | exit M5 (normal) | break | -| Switch.cs:66:10:66:11 | enter M6 | Switch.cs:67:5:75:5 | {...} | | -| Switch.cs:66:10:66:11 | exit M6 (normal) | Switch.cs:66:10:66:11 | exit M6 | | +| Switch.cs:61:18:61:18 | 3 | Switch.cs:61:18:61:18 | After 3 [match] | match | +| Switch.cs:61:18:61:18 | 3 | Switch.cs:61:18:61:18 | After 3 [no-match] | no-match | +| Switch.cs:61:18:61:18 | After 3 [match] | Switch.cs:61:13:61:19 | After case ...: [match] | match | +| Switch.cs:61:18:61:18 | After 3 [no-match] | Switch.cs:61:13:61:19 | After case ...: [no-match] | no-match | +| Switch.cs:62:17:62:22 | Before break; | Switch.cs:62:17:62:22 | break; | | +| Switch.cs:62:17:62:22 | break; | Switch.cs:57:9:63:9 | After switch (...) {...} | break | +| Switch.cs:66:10:66:11 | Entry | Switch.cs:66:20:66:20 | s | | +| Switch.cs:66:10:66:11 | Normal Exit | Switch.cs:66:10:66:11 | Exit | | +| Switch.cs:66:20:66:20 | s | Switch.cs:67:5:75:5 | {...} | | +| Switch.cs:67:5:75:5 | After {...} | Switch.cs:66:10:66:11 | Normal Exit | | | Switch.cs:67:5:75:5 | {...} | Switch.cs:68:9:74:9 | switch (...) {...} | | -| Switch.cs:68:9:74:9 | switch (...) {...} | Switch.cs:68:25:68:25 | access to parameter s | | -| Switch.cs:68:17:68:25 | (...) ... | Switch.cs:70:13:70:23 | case ...: | | +| Switch.cs:68:9:74:9 | After switch (...) {...} | Switch.cs:67:5:75:5 | After {...} | | +| Switch.cs:68:9:74:9 | switch (...) {...} | Switch.cs:68:17:68:25 | Before (...) ... | | +| Switch.cs:68:17:68:25 | (...) ... | Switch.cs:68:17:68:25 | After (...) ... | | +| Switch.cs:68:17:68:25 | After (...) ... | Switch.cs:70:13:70:23 | case ...: | | +| Switch.cs:68:17:68:25 | Before (...) ... | Switch.cs:68:25:68:25 | access to parameter s | | | Switch.cs:68:25:68:25 | access to parameter s | Switch.cs:68:17:68:25 | (...) ... | | +| Switch.cs:70:13:70:23 | After case ...: [match] | Switch.cs:71:17:71:22 | Before break; | | +| Switch.cs:70:13:70:23 | After case ...: [no-match] | Switch.cs:72:13:72:20 | case ...: | | | Switch.cs:70:13:70:23 | case ...: | Switch.cs:70:18:70:20 | access to type Int32 | | -| Switch.cs:70:18:70:20 | access to type Int32 | Switch.cs:72:13:72:20 | case ...: | no-match | +| Switch.cs:70:18:70:20 | After access to type Int32 [match] | Switch.cs:70:13:70:23 | After case ...: [match] | match | +| Switch.cs:70:18:70:20 | After access to type Int32 [no-match] | Switch.cs:70:13:70:23 | After case ...: [no-match] | no-match | +| Switch.cs:70:18:70:20 | access to type Int32 | Switch.cs:70:18:70:20 | After access to type Int32 [match] | match | +| Switch.cs:70:18:70:20 | access to type Int32 | Switch.cs:70:18:70:20 | After access to type Int32 [no-match] | no-match | +| Switch.cs:71:17:71:22 | Before break; | Switch.cs:71:17:71:22 | break; | | +| Switch.cs:71:17:71:22 | break; | Switch.cs:68:9:74:9 | After switch (...) {...} | break | +| Switch.cs:72:13:72:20 | After case ...: [match] | Switch.cs:73:17:73:22 | Before break; | | +| Switch.cs:72:13:72:20 | After case ...: [no-match] | Switch.cs:68:9:74:9 | After switch (...) {...} | | | Switch.cs:72:13:72:20 | case ...: | Switch.cs:72:18:72:19 | "" | | -| Switch.cs:72:18:72:19 | "" | Switch.cs:66:10:66:11 | exit M6 (normal) | no-match | -| Switch.cs:72:18:72:19 | "" | Switch.cs:73:17:73:22 | break; | match | -| Switch.cs:73:17:73:22 | break; | Switch.cs:66:10:66:11 | exit M6 (normal) | break | -| Switch.cs:77:10:77:11 | enter M7 | Switch.cs:78:5:89:5 | {...} | | -| Switch.cs:77:10:77:11 | exit M7 (normal) | Switch.cs:77:10:77:11 | exit M7 | | +| Switch.cs:72:18:72:19 | "" | Switch.cs:72:18:72:19 | After "" [match] | match | +| Switch.cs:72:18:72:19 | "" | Switch.cs:72:18:72:19 | After "" [no-match] | no-match | +| Switch.cs:72:18:72:19 | After "" [match] | Switch.cs:72:13:72:20 | After case ...: [match] | match | +| Switch.cs:72:18:72:19 | After "" [no-match] | Switch.cs:72:13:72:20 | After case ...: [no-match] | no-match | +| Switch.cs:73:17:73:22 | Before break; | Switch.cs:73:17:73:22 | break; | | +| Switch.cs:73:17:73:22 | break; | Switch.cs:68:9:74:9 | After switch (...) {...} | break | +| Switch.cs:77:10:77:11 | Entry | Switch.cs:77:17:77:17 | i | | +| Switch.cs:77:10:77:11 | Normal Exit | Switch.cs:77:10:77:11 | Exit | | +| Switch.cs:77:17:77:17 | i | Switch.cs:77:24:77:24 | j | | +| Switch.cs:77:24:77:24 | j | Switch.cs:78:5:89:5 | {...} | | | Switch.cs:78:5:89:5 | {...} | Switch.cs:79:9:87:9 | switch (...) {...} | | +| Switch.cs:79:9:87:9 | After switch (...) {...} | Switch.cs:88:9:88:21 | Before return ...; | | | Switch.cs:79:9:87:9 | switch (...) {...} | Switch.cs:79:17:79:17 | access to parameter i | | | Switch.cs:79:17:79:17 | access to parameter i | Switch.cs:81:13:81:19 | case ...: | | +| Switch.cs:81:13:81:19 | After case ...: [match] | Switch.cs:82:17:82:28 | Before return ...; | | +| Switch.cs:81:13:81:19 | After case ...: [no-match] | Switch.cs:83:13:83:19 | case ...: | | | Switch.cs:81:13:81:19 | case ...: | Switch.cs:81:18:81:18 | 1 | | -| Switch.cs:81:18:81:18 | 1 | Switch.cs:82:24:82:27 | true | match | -| Switch.cs:81:18:81:18 | 1 | Switch.cs:83:13:83:19 | case ...: | no-match | -| Switch.cs:82:17:82:28 | return ...; | Switch.cs:77:10:77:11 | exit M7 (normal) | return | +| Switch.cs:81:18:81:18 | 1 | Switch.cs:81:18:81:18 | After 1 [match] | match | +| Switch.cs:81:18:81:18 | 1 | Switch.cs:81:18:81:18 | After 1 [no-match] | no-match | +| Switch.cs:81:18:81:18 | After 1 [match] | Switch.cs:81:13:81:19 | After case ...: [match] | match | +| Switch.cs:81:18:81:18 | After 1 [no-match] | Switch.cs:81:13:81:19 | After case ...: [no-match] | no-match | +| Switch.cs:82:17:82:28 | Before return ...; | Switch.cs:82:24:82:27 | true | | +| Switch.cs:82:17:82:28 | return ...; | Switch.cs:77:10:77:11 | Normal Exit | return | | Switch.cs:82:24:82:27 | true | Switch.cs:82:17:82:28 | return ...; | | +| Switch.cs:83:13:83:19 | After case ...: [match] | Switch.cs:84:17:85:26 | if (...) ... | | +| Switch.cs:83:13:83:19 | After case ...: [no-match] | Switch.cs:79:9:87:9 | After switch (...) {...} | | | Switch.cs:83:13:83:19 | case ...: | Switch.cs:83:18:83:18 | 2 | | -| Switch.cs:83:18:83:18 | 2 | Switch.cs:84:17:85:26 | if (...) ... | match | -| Switch.cs:83:18:83:18 | 2 | Switch.cs:88:16:88:20 | false | no-match | -| Switch.cs:84:17:85:26 | if (...) ... | Switch.cs:84:21:84:21 | access to parameter j | | +| Switch.cs:83:18:83:18 | 2 | Switch.cs:83:18:83:18 | After 2 [match] | match | +| Switch.cs:83:18:83:18 | 2 | Switch.cs:83:18:83:18 | After 2 [no-match] | no-match | +| Switch.cs:83:18:83:18 | After 2 [match] | Switch.cs:83:13:83:19 | After case ...: [match] | match | +| Switch.cs:83:18:83:18 | After 2 [no-match] | Switch.cs:83:13:83:19 | After case ...: [no-match] | no-match | +| Switch.cs:84:17:85:26 | After if (...) ... | Switch.cs:86:17:86:28 | Before return ...; | | +| Switch.cs:84:17:85:26 | if (...) ... | Switch.cs:84:21:84:25 | Before ... > ... | | | Switch.cs:84:21:84:21 | access to parameter j | Switch.cs:84:25:84:25 | 2 | | -| Switch.cs:84:21:84:25 | ... > ... | Switch.cs:85:21:85:26 | break; | true | -| Switch.cs:84:21:84:25 | ... > ... | Switch.cs:86:24:86:27 | true | false | +| Switch.cs:84:21:84:25 | ... > ... | Switch.cs:84:21:84:25 | After ... > ... [false] | false | +| Switch.cs:84:21:84:25 | ... > ... | Switch.cs:84:21:84:25 | After ... > ... [true] | true | +| Switch.cs:84:21:84:25 | After ... > ... [false] | Switch.cs:84:17:85:26 | After if (...) ... | | +| Switch.cs:84:21:84:25 | After ... > ... [true] | Switch.cs:85:21:85:26 | Before break; | | +| Switch.cs:84:21:84:25 | Before ... > ... | Switch.cs:84:21:84:21 | access to parameter j | | | Switch.cs:84:25:84:25 | 2 | Switch.cs:84:21:84:25 | ... > ... | | -| Switch.cs:85:21:85:26 | break; | Switch.cs:88:16:88:20 | false | break | -| Switch.cs:86:17:86:28 | return ...; | Switch.cs:77:10:77:11 | exit M7 (normal) | return | +| Switch.cs:85:21:85:26 | Before break; | Switch.cs:85:21:85:26 | break; | | +| Switch.cs:85:21:85:26 | break; | Switch.cs:79:9:87:9 | After switch (...) {...} | break | +| Switch.cs:86:17:86:28 | Before return ...; | Switch.cs:86:24:86:27 | true | | +| Switch.cs:86:17:86:28 | return ...; | Switch.cs:77:10:77:11 | Normal Exit | return | | Switch.cs:86:24:86:27 | true | Switch.cs:86:17:86:28 | return ...; | | -| Switch.cs:88:9:88:21 | return ...; | Switch.cs:77:10:77:11 | exit M7 (normal) | return | +| Switch.cs:88:9:88:21 | Before return ...; | Switch.cs:88:16:88:20 | false | | +| Switch.cs:88:9:88:21 | return ...; | Switch.cs:77:10:77:11 | Normal Exit | return | | Switch.cs:88:16:88:20 | false | Switch.cs:88:9:88:21 | return ...; | | -| Switch.cs:91:10:91:11 | enter M8 | Switch.cs:92:5:99:5 | {...} | | -| Switch.cs:91:10:91:11 | exit M8 (normal) | Switch.cs:91:10:91:11 | exit M8 | | +| Switch.cs:91:10:91:11 | Entry | Switch.cs:91:20:91:20 | o | | +| Switch.cs:91:10:91:11 | Normal Exit | Switch.cs:91:10:91:11 | Exit | | +| Switch.cs:91:20:91:20 | o | Switch.cs:92:5:99:5 | {...} | | | Switch.cs:92:5:99:5 | {...} | Switch.cs:93:9:97:9 | switch (...) {...} | | +| Switch.cs:93:9:97:9 | After switch (...) {...} | Switch.cs:98:9:98:21 | Before return ...; | | | Switch.cs:93:9:97:9 | switch (...) {...} | Switch.cs:93:17:93:17 | access to parameter o | | | Switch.cs:93:17:93:17 | access to parameter o | Switch.cs:95:13:95:23 | case ...: | | +| Switch.cs:95:13:95:23 | After case ...: [match] | Switch.cs:96:17:96:28 | Before return ...; | | +| Switch.cs:95:13:95:23 | After case ...: [no-match] | Switch.cs:93:9:97:9 | After switch (...) {...} | | | Switch.cs:95:13:95:23 | case ...: | Switch.cs:95:18:95:20 | access to type Int32 | | -| Switch.cs:95:18:95:20 | access to type Int32 | Switch.cs:96:24:96:27 | true | match | -| Switch.cs:95:18:95:20 | access to type Int32 | Switch.cs:98:16:98:20 | false | no-match | -| Switch.cs:96:17:96:28 | return ...; | Switch.cs:91:10:91:11 | exit M8 (normal) | return | +| Switch.cs:95:18:95:20 | After access to type Int32 [match] | Switch.cs:95:13:95:23 | After case ...: [match] | match | +| Switch.cs:95:18:95:20 | After access to type Int32 [no-match] | Switch.cs:95:13:95:23 | After case ...: [no-match] | no-match | +| Switch.cs:95:18:95:20 | access to type Int32 | Switch.cs:95:18:95:20 | After access to type Int32 [match] | match | +| Switch.cs:95:18:95:20 | access to type Int32 | Switch.cs:95:18:95:20 | After access to type Int32 [no-match] | no-match | +| Switch.cs:96:17:96:28 | Before return ...; | Switch.cs:96:24:96:27 | true | | +| Switch.cs:96:17:96:28 | return ...; | Switch.cs:91:10:91:11 | Normal Exit | return | | Switch.cs:96:24:96:27 | true | Switch.cs:96:17:96:28 | return ...; | | -| Switch.cs:98:9:98:21 | return ...; | Switch.cs:91:10:91:11 | exit M8 (normal) | return | +| Switch.cs:98:9:98:21 | Before return ...; | Switch.cs:98:16:98:20 | false | | +| Switch.cs:98:9:98:21 | return ...; | Switch.cs:91:10:91:11 | Normal Exit | return | | Switch.cs:98:16:98:20 | false | Switch.cs:98:9:98:21 | return ...; | | -| Switch.cs:101:9:101:10 | enter M9 | Switch.cs:102:5:109:5 | {...} | | -| Switch.cs:101:9:101:10 | exit M9 (normal) | Switch.cs:101:9:101:10 | exit M9 | | +| Switch.cs:101:9:101:10 | Entry | Switch.cs:101:19:101:19 | s | | +| Switch.cs:101:9:101:10 | Normal Exit | Switch.cs:101:9:101:10 | Exit | | +| Switch.cs:101:19:101:19 | s | Switch.cs:102:5:109:5 | {...} | | | Switch.cs:102:5:109:5 | {...} | Switch.cs:103:9:107:9 | switch (...) {...} | | -| Switch.cs:103:9:107:9 | switch (...) {...} | Switch.cs:103:17:103:17 | access to parameter s | | -| Switch.cs:103:17:103:17 | access to parameter s | Switch.cs:103:17:103:25 | access to property Length | non-null | -| Switch.cs:103:17:103:17 | access to parameter s | Switch.cs:105:13:105:19 | case ...: | null | -| Switch.cs:103:17:103:25 | access to property Length | Switch.cs:105:13:105:19 | case ...: | | +| Switch.cs:103:9:107:9 | After switch (...) {...} | Switch.cs:108:9:108:18 | Before return ...; | | +| Switch.cs:103:9:107:9 | switch (...) {...} | Switch.cs:103:17:103:25 | Before access to property Length | | +| Switch.cs:103:17:103:17 | After access to parameter s [non-null] | Switch.cs:103:17:103:25 | access to property Length | | +| Switch.cs:103:17:103:17 | After access to parameter s [null] | Switch.cs:103:17:103:25 | After access to property Length | | +| Switch.cs:103:17:103:17 | access to parameter s | Switch.cs:103:17:103:17 | After access to parameter s [non-null] | non-null | +| Switch.cs:103:17:103:17 | access to parameter s | Switch.cs:103:17:103:17 | After access to parameter s [null] | null | +| Switch.cs:103:17:103:25 | After access to property Length | Switch.cs:105:13:105:19 | case ...: | | +| Switch.cs:103:17:103:25 | Before access to property Length | Switch.cs:103:17:103:17 | access to parameter s | | +| Switch.cs:103:17:103:25 | access to property Length | Switch.cs:103:17:103:25 | After access to property Length | | +| Switch.cs:105:13:105:19 | After case ...: [match] | Switch.cs:105:21:105:29 | Before return ...; | | +| Switch.cs:105:13:105:19 | After case ...: [no-match] | Switch.cs:106:13:106:19 | case ...: | | | Switch.cs:105:13:105:19 | case ...: | Switch.cs:105:18:105:18 | 0 | | -| Switch.cs:105:18:105:18 | 0 | Switch.cs:105:28:105:28 | 0 | match | -| Switch.cs:105:18:105:18 | 0 | Switch.cs:106:13:106:19 | case ...: | no-match | -| Switch.cs:105:21:105:29 | return ...; | Switch.cs:101:9:101:10 | exit M9 (normal) | return | +| Switch.cs:105:18:105:18 | 0 | Switch.cs:105:18:105:18 | After 0 [match] | match | +| Switch.cs:105:18:105:18 | 0 | Switch.cs:105:18:105:18 | After 0 [no-match] | no-match | +| Switch.cs:105:18:105:18 | After 0 [match] | Switch.cs:105:13:105:19 | After case ...: [match] | match | +| Switch.cs:105:18:105:18 | After 0 [no-match] | Switch.cs:105:13:105:19 | After case ...: [no-match] | no-match | +| Switch.cs:105:21:105:29 | Before return ...; | Switch.cs:105:28:105:28 | 0 | | +| Switch.cs:105:21:105:29 | return ...; | Switch.cs:101:9:101:10 | Normal Exit | return | | Switch.cs:105:28:105:28 | 0 | Switch.cs:105:21:105:29 | return ...; | | +| Switch.cs:106:13:106:19 | After case ...: [match] | Switch.cs:106:21:106:29 | Before return ...; | | +| Switch.cs:106:13:106:19 | After case ...: [no-match] | Switch.cs:103:9:107:9 | After switch (...) {...} | | | Switch.cs:106:13:106:19 | case ...: | Switch.cs:106:18:106:18 | 1 | | -| Switch.cs:106:18:106:18 | 1 | Switch.cs:106:28:106:28 | 1 | match | -| Switch.cs:106:18:106:18 | 1 | Switch.cs:108:17:108:17 | 1 | no-match | -| Switch.cs:106:21:106:29 | return ...; | Switch.cs:101:9:101:10 | exit M9 (normal) | return | +| Switch.cs:106:18:106:18 | 1 | Switch.cs:106:18:106:18 | After 1 [match] | match | +| Switch.cs:106:18:106:18 | 1 | Switch.cs:106:18:106:18 | After 1 [no-match] | no-match | +| Switch.cs:106:18:106:18 | After 1 [match] | Switch.cs:106:13:106:19 | After case ...: [match] | match | +| Switch.cs:106:18:106:18 | After 1 [no-match] | Switch.cs:106:13:106:19 | After case ...: [no-match] | no-match | +| Switch.cs:106:21:106:29 | Before return ...; | Switch.cs:106:28:106:28 | 1 | | +| Switch.cs:106:21:106:29 | return ...; | Switch.cs:101:9:101:10 | Normal Exit | return | | Switch.cs:106:28:106:28 | 1 | Switch.cs:106:21:106:29 | return ...; | | -| Switch.cs:108:9:108:18 | return ...; | Switch.cs:101:9:101:10 | exit M9 (normal) | return | -| Switch.cs:108:16:108:17 | -... | Switch.cs:108:9:108:18 | return ...; | | +| Switch.cs:108:9:108:18 | Before return ...; | Switch.cs:108:16:108:17 | Before -... | | +| Switch.cs:108:9:108:18 | return ...; | Switch.cs:101:9:101:10 | Normal Exit | return | +| Switch.cs:108:16:108:17 | -... | Switch.cs:108:16:108:17 | After -... | | +| Switch.cs:108:16:108:17 | After -... | Switch.cs:108:9:108:18 | return ...; | | +| Switch.cs:108:16:108:17 | Before -... | Switch.cs:108:17:108:17 | 1 | | | Switch.cs:108:17:108:17 | 1 | Switch.cs:108:16:108:17 | -... | | -| Switch.cs:111:17:111:21 | enter Throw | Switch.cs:111:34:111:48 | object creation of type Exception | | -| Switch.cs:111:17:111:21 | exit Throw (abnormal) | Switch.cs:111:17:111:21 | exit Throw | | -| Switch.cs:111:28:111:48 | throw ... | Switch.cs:111:17:111:21 | exit Throw (abnormal) | exception | -| Switch.cs:111:34:111:48 | object creation of type Exception | Switch.cs:111:28:111:48 | throw ... | | -| Switch.cs:113:9:113:11 | enter M10 | Switch.cs:114:5:121:5 | {...} | | -| Switch.cs:113:9:113:11 | exit M10 (normal) | Switch.cs:113:9:113:11 | exit M10 | | +| Switch.cs:111:17:111:21 | Entry | Switch.cs:111:28:111:48 | Before throw ... | | +| Switch.cs:111:17:111:21 | Exceptional Exit | Switch.cs:111:17:111:21 | Exit | | +| Switch.cs:111:28:111:48 | Before throw ... | Switch.cs:111:34:111:48 | Before object creation of type Exception | | +| Switch.cs:111:28:111:48 | throw ... | Switch.cs:111:17:111:21 | Exceptional Exit | exception | +| Switch.cs:111:34:111:48 | After object creation of type Exception | Switch.cs:111:28:111:48 | throw ... | | +| Switch.cs:111:34:111:48 | Before object creation of type Exception | Switch.cs:111:34:111:48 | object creation of type Exception | | +| Switch.cs:111:34:111:48 | object creation of type Exception | Switch.cs:111:34:111:48 | After object creation of type Exception | | +| Switch.cs:113:9:113:11 | Entry | Switch.cs:113:20:113:20 | s | | +| Switch.cs:113:9:113:11 | Normal Exit | Switch.cs:113:9:113:11 | Exit | | +| Switch.cs:113:20:113:20 | s | Switch.cs:114:5:121:5 | {...} | | | Switch.cs:114:5:121:5 | {...} | Switch.cs:115:9:119:9 | switch (...) {...} | | -| Switch.cs:115:9:119:9 | switch (...) {...} | Switch.cs:115:17:115:17 | access to parameter s | | +| Switch.cs:115:9:119:9 | After switch (...) {...} | Switch.cs:120:9:120:18 | Before return ...; | | +| Switch.cs:115:9:119:9 | switch (...) {...} | Switch.cs:115:17:115:24 | Before access to property Length | | | Switch.cs:115:17:115:17 | access to parameter s | Switch.cs:115:17:115:24 | access to property Length | | -| Switch.cs:115:17:115:24 | access to property Length | Switch.cs:117:13:117:35 | case ...: | | +| Switch.cs:115:17:115:24 | After access to property Length | Switch.cs:117:13:117:35 | case ...: | | +| Switch.cs:115:17:115:24 | Before access to property Length | Switch.cs:115:17:115:17 | access to parameter s | | +| Switch.cs:115:17:115:24 | access to property Length | Switch.cs:115:17:115:24 | After access to property Length | | +| Switch.cs:117:13:117:35 | After case ...: [match] | Switch.cs:117:25:117:34 | Before ... == ... | | +| Switch.cs:117:13:117:35 | After case ...: [no-match] | Switch.cs:118:13:118:34 | case ...: | | | Switch.cs:117:13:117:35 | case ...: | Switch.cs:117:18:117:18 | 3 | | -| Switch.cs:117:18:117:18 | 3 | Switch.cs:117:25:117:25 | access to parameter s | match | -| Switch.cs:117:18:117:18 | 3 | Switch.cs:118:13:118:34 | case ...: | no-match | +| Switch.cs:117:18:117:18 | 3 | Switch.cs:117:18:117:18 | After 3 [match] | match | +| Switch.cs:117:18:117:18 | 3 | Switch.cs:117:18:117:18 | After 3 [no-match] | no-match | +| Switch.cs:117:18:117:18 | After 3 [match] | Switch.cs:117:13:117:35 | After case ...: [match] | match | +| Switch.cs:117:18:117:18 | After 3 [no-match] | Switch.cs:117:13:117:35 | After case ...: [no-match] | no-match | | Switch.cs:117:25:117:25 | access to parameter s | Switch.cs:117:30:117:34 | "foo" | | -| Switch.cs:117:25:117:34 | ... == ... | Switch.cs:117:44:117:44 | 1 | true | -| Switch.cs:117:25:117:34 | ... == ... | Switch.cs:118:13:118:34 | case ...: | false | +| Switch.cs:117:25:117:34 | ... == ... | Switch.cs:117:25:117:34 | After ... == ... [false] | false | +| Switch.cs:117:25:117:34 | ... == ... | Switch.cs:117:25:117:34 | After ... == ... [true] | true | +| Switch.cs:117:25:117:34 | After ... == ... [false] | Switch.cs:118:13:118:34 | case ...: | | +| Switch.cs:117:25:117:34 | After ... == ... [true] | Switch.cs:117:37:117:45 | Before return ...; | | +| Switch.cs:117:25:117:34 | Before ... == ... | Switch.cs:117:25:117:25 | access to parameter s | | | Switch.cs:117:30:117:34 | "foo" | Switch.cs:117:25:117:34 | ... == ... | | -| Switch.cs:117:37:117:45 | return ...; | Switch.cs:113:9:113:11 | exit M10 (normal) | return | +| Switch.cs:117:37:117:45 | Before return ...; | Switch.cs:117:44:117:44 | 1 | | +| Switch.cs:117:37:117:45 | return ...; | Switch.cs:113:9:113:11 | Normal Exit | return | | Switch.cs:117:44:117:44 | 1 | Switch.cs:117:37:117:45 | return ...; | | +| Switch.cs:118:13:118:34 | After case ...: [match] | Switch.cs:118:25:118:33 | Before ... == ... | | +| Switch.cs:118:13:118:34 | After case ...: [no-match] | Switch.cs:115:9:119:9 | After switch (...) {...} | | | Switch.cs:118:13:118:34 | case ...: | Switch.cs:118:18:118:18 | 2 | | -| Switch.cs:118:18:118:18 | 2 | Switch.cs:118:25:118:25 | access to parameter s | match | -| Switch.cs:118:18:118:18 | 2 | Switch.cs:120:17:120:17 | 1 | no-match | +| Switch.cs:118:18:118:18 | 2 | Switch.cs:118:18:118:18 | After 2 [match] | match | +| Switch.cs:118:18:118:18 | 2 | Switch.cs:118:18:118:18 | After 2 [no-match] | no-match | +| Switch.cs:118:18:118:18 | After 2 [match] | Switch.cs:118:13:118:34 | After case ...: [match] | match | +| Switch.cs:118:18:118:18 | After 2 [no-match] | Switch.cs:118:13:118:34 | After case ...: [no-match] | no-match | | Switch.cs:118:25:118:25 | access to parameter s | Switch.cs:118:30:118:33 | "fu" | | -| Switch.cs:118:25:118:33 | ... == ... | Switch.cs:118:43:118:43 | 2 | true | -| Switch.cs:118:25:118:33 | ... == ... | Switch.cs:120:17:120:17 | 1 | false | +| Switch.cs:118:25:118:33 | ... == ... | Switch.cs:118:25:118:33 | After ... == ... [false] | false | +| Switch.cs:118:25:118:33 | ... == ... | Switch.cs:118:25:118:33 | After ... == ... [true] | true | +| Switch.cs:118:25:118:33 | After ... == ... [false] | Switch.cs:115:9:119:9 | After switch (...) {...} | | +| Switch.cs:118:25:118:33 | After ... == ... [true] | Switch.cs:118:36:118:44 | Before return ...; | | +| Switch.cs:118:25:118:33 | Before ... == ... | Switch.cs:118:25:118:25 | access to parameter s | | | Switch.cs:118:30:118:33 | "fu" | Switch.cs:118:25:118:33 | ... == ... | | -| Switch.cs:118:36:118:44 | return ...; | Switch.cs:113:9:113:11 | exit M10 (normal) | return | +| Switch.cs:118:36:118:44 | Before return ...; | Switch.cs:118:43:118:43 | 2 | | +| Switch.cs:118:36:118:44 | return ...; | Switch.cs:113:9:113:11 | Normal Exit | return | | Switch.cs:118:43:118:43 | 2 | Switch.cs:118:36:118:44 | return ...; | | -| Switch.cs:120:9:120:18 | return ...; | Switch.cs:113:9:113:11 | exit M10 (normal) | return | -| Switch.cs:120:16:120:17 | -... | Switch.cs:120:9:120:18 | return ...; | | +| Switch.cs:120:9:120:18 | Before return ...; | Switch.cs:120:16:120:17 | Before -... | | +| Switch.cs:120:9:120:18 | return ...; | Switch.cs:113:9:113:11 | Normal Exit | return | +| Switch.cs:120:16:120:17 | -... | Switch.cs:120:16:120:17 | After -... | | +| Switch.cs:120:16:120:17 | After -... | Switch.cs:120:9:120:18 | return ...; | | +| Switch.cs:120:16:120:17 | Before -... | Switch.cs:120:17:120:17 | 1 | | | Switch.cs:120:17:120:17 | 1 | Switch.cs:120:16:120:17 | -... | | -| Switch.cs:123:10:123:12 | enter M11 | Switch.cs:124:5:127:5 | {...} | | -| Switch.cs:123:10:123:12 | exit M11 (normal) | Switch.cs:123:10:123:12 | exit M11 | | +| Switch.cs:123:10:123:12 | Entry | Switch.cs:123:21:123:21 | o | | +| Switch.cs:123:10:123:12 | Normal Exit | Switch.cs:123:10:123:12 | Exit | | +| Switch.cs:123:21:123:21 | o | Switch.cs:124:5:127:5 | {...} | | +| Switch.cs:124:5:127:5 | After {...} | Switch.cs:123:10:123:12 | Normal Exit | | | Switch.cs:124:5:127:5 | {...} | Switch.cs:125:9:126:19 | if (...) ... | | -| Switch.cs:125:9:126:19 | if (...) ... | Switch.cs:125:13:125:13 | access to parameter o | | -| Switch.cs:125:13:125:13 | access to parameter o | Switch.cs:125:24:125:29 | Boolean b | | -| Switch.cs:125:13:125:48 | [false] ... switch { ... } | Switch.cs:123:10:123:12 | exit M11 (normal) | false | -| Switch.cs:125:13:125:48 | [true] ... switch { ... } | Switch.cs:126:13:126:19 | return ...; | true | -| Switch.cs:125:24:125:29 | Boolean b | Switch.cs:125:34:125:34 | access to local variable b | match | -| Switch.cs:125:24:125:29 | Boolean b | Switch.cs:125:37:125:37 | _ | no-match | -| Switch.cs:125:24:125:34 | [false] ... => ... | Switch.cs:125:13:125:48 | [false] ... switch { ... } | false | -| Switch.cs:125:24:125:34 | [true] ... => ... | Switch.cs:125:13:125:48 | [true] ... switch { ... } | true | -| Switch.cs:125:34:125:34 | access to local variable b | Switch.cs:125:24:125:34 | [false] ... => ... | false | -| Switch.cs:125:34:125:34 | access to local variable b | Switch.cs:125:24:125:34 | [true] ... => ... | true | -| Switch.cs:125:37:125:37 | _ | Switch.cs:125:42:125:46 | false | match | -| Switch.cs:125:37:125:46 | [false] ... => ... | Switch.cs:125:13:125:48 | [false] ... switch { ... } | false | -| Switch.cs:125:42:125:46 | false | Switch.cs:125:37:125:46 | [false] ... => ... | false | -| Switch.cs:126:13:126:19 | return ...; | Switch.cs:123:10:123:12 | exit M11 (normal) | return | -| Switch.cs:129:12:129:14 | enter M12 | Switch.cs:130:5:132:5 | {...} | | -| Switch.cs:129:12:129:14 | exit M12 (normal) | Switch.cs:129:12:129:14 | exit M12 | | -| Switch.cs:130:5:132:5 | {...} | Switch.cs:131:17:131:17 | access to parameter o | | -| Switch.cs:131:9:131:67 | return ...; | Switch.cs:129:12:129:14 | exit M12 (normal) | return | -| Switch.cs:131:16:131:66 | call to method ToString | Switch.cs:131:9:131:67 | return ...; | | -| Switch.cs:131:17:131:17 | access to parameter o | Switch.cs:131:28:131:35 | String s | | -| Switch.cs:131:17:131:53 | [non-null] ... switch { ... } | Switch.cs:131:16:131:66 | call to method ToString | non-null | -| Switch.cs:131:17:131:53 | [null] ... switch { ... } | Switch.cs:131:9:131:67 | return ...; | null | -| Switch.cs:131:28:131:35 | String s | Switch.cs:131:40:131:40 | access to local variable s | match | -| Switch.cs:131:28:131:35 | String s | Switch.cs:131:43:131:43 | _ | no-match | -| Switch.cs:131:28:131:40 | [non-null] ... => ... | Switch.cs:131:17:131:53 | [non-null] ... switch { ... } | non-null | -| Switch.cs:131:28:131:40 | [null] ... => ... | Switch.cs:131:17:131:53 | [null] ... switch { ... } | null | -| Switch.cs:131:40:131:40 | access to local variable s | Switch.cs:131:28:131:40 | [non-null] ... => ... | non-null | -| Switch.cs:131:40:131:40 | access to local variable s | Switch.cs:131:28:131:40 | [null] ... => ... | null | -| Switch.cs:131:43:131:43 | _ | Switch.cs:131:48:131:51 | null | match | -| Switch.cs:131:43:131:51 | [null] ... => ... | Switch.cs:131:17:131:53 | [null] ... switch { ... } | null | -| Switch.cs:131:48:131:51 | null | Switch.cs:131:43:131:51 | [null] ... => ... | null | -| Switch.cs:134:9:134:11 | enter M13 | Switch.cs:135:5:142:5 | {...} | | -| Switch.cs:134:9:134:11 | exit M13 (normal) | Switch.cs:134:9:134:11 | exit M13 | | +| Switch.cs:125:9:126:19 | After if (...) ... | Switch.cs:124:5:127:5 | After {...} | | +| Switch.cs:125:9:126:19 | if (...) ... | Switch.cs:125:13:125:48 | ... switch { ... } | | +| Switch.cs:125:13:125:13 | access to parameter o | Switch.cs:125:24:125:34 | ... => ... | | +| Switch.cs:125:13:125:48 | ... switch { ... } | Switch.cs:125:13:125:13 | access to parameter o | | +| Switch.cs:125:13:125:48 | After ... switch { ... } [false] | Switch.cs:125:9:126:19 | After if (...) ... | | +| Switch.cs:125:13:125:48 | After ... switch { ... } [true] | Switch.cs:126:13:126:19 | Before return ...; | | +| Switch.cs:125:24:125:29 | After Boolean b [match] | Switch.cs:125:24:125:34 | After ... => ... [match] | match | +| Switch.cs:125:24:125:29 | After Boolean b [no-match] | Switch.cs:125:24:125:34 | After ... => ... [no-match] | no-match | +| Switch.cs:125:24:125:29 | Boolean b | Switch.cs:125:24:125:29 | After Boolean b [match] | match | +| Switch.cs:125:24:125:29 | Boolean b | Switch.cs:125:24:125:29 | After Boolean b [no-match] | no-match | +| Switch.cs:125:24:125:34 | ... => ... | Switch.cs:125:24:125:29 | Boolean b | | +| Switch.cs:125:24:125:34 | After ... => ... [match] | Switch.cs:125:34:125:34 | access to local variable b | | +| Switch.cs:125:24:125:34 | After ... => ... [no-match] | Switch.cs:125:37:125:46 | ... => ... | | +| Switch.cs:125:34:125:34 | access to local variable b | Switch.cs:125:13:125:48 | After ... switch { ... } [false] | false | +| Switch.cs:125:34:125:34 | access to local variable b | Switch.cs:125:13:125:48 | After ... switch { ... } [true] | true | +| Switch.cs:125:37:125:37 | After _ [match] | Switch.cs:125:37:125:46 | After ... => ... [match] | match | +| Switch.cs:125:37:125:37 | _ | Switch.cs:125:37:125:37 | After _ [match] | match | +| Switch.cs:125:37:125:46 | ... => ... | Switch.cs:125:37:125:37 | _ | | +| Switch.cs:125:37:125:46 | After ... => ... [match] | Switch.cs:125:42:125:46 | false | | +| Switch.cs:125:42:125:46 | false | Switch.cs:125:13:125:48 | After ... switch { ... } [false] | false | +| Switch.cs:125:42:125:46 | false | Switch.cs:125:13:125:48 | After ... switch { ... } [true] | true | +| Switch.cs:126:13:126:19 | Before return ...; | Switch.cs:126:13:126:19 | return ...; | | +| Switch.cs:126:13:126:19 | return ...; | Switch.cs:123:10:123:12 | Normal Exit | return | +| Switch.cs:129:12:129:14 | Entry | Switch.cs:129:23:129:23 | o | | +| Switch.cs:129:12:129:14 | Normal Exit | Switch.cs:129:12:129:14 | Exit | | +| Switch.cs:129:23:129:23 | o | Switch.cs:130:5:132:5 | {...} | | +| Switch.cs:130:5:132:5 | {...} | Switch.cs:131:9:131:67 | Before return ...; | | +| Switch.cs:131:9:131:67 | Before return ...; | Switch.cs:131:16:131:66 | Before call to method ToString | | +| Switch.cs:131:9:131:67 | return ...; | Switch.cs:129:12:129:14 | Normal Exit | return | +| Switch.cs:131:16:131:66 | After call to method ToString | Switch.cs:131:9:131:67 | return ...; | | +| Switch.cs:131:16:131:66 | Before call to method ToString | Switch.cs:131:17:131:53 | ... switch { ... } | | +| Switch.cs:131:16:131:66 | call to method ToString | Switch.cs:131:16:131:66 | After call to method ToString | | +| Switch.cs:131:17:131:17 | access to parameter o | Switch.cs:131:28:131:40 | ... => ... | | +| Switch.cs:131:17:131:53 | ... switch { ... } | Switch.cs:131:17:131:17 | access to parameter o | | +| Switch.cs:131:17:131:53 | After ... switch { ... } [non-null] | Switch.cs:131:16:131:66 | call to method ToString | | +| Switch.cs:131:17:131:53 | After ... switch { ... } [null] | Switch.cs:131:16:131:66 | After call to method ToString | | +| Switch.cs:131:28:131:35 | After String s [match] | Switch.cs:131:28:131:40 | After ... => ... [match] | match | +| Switch.cs:131:28:131:35 | After String s [no-match] | Switch.cs:131:28:131:40 | After ... => ... [no-match] | no-match | +| Switch.cs:131:28:131:35 | String s | Switch.cs:131:28:131:35 | After String s [match] | match | +| Switch.cs:131:28:131:35 | String s | Switch.cs:131:28:131:35 | After String s [no-match] | no-match | +| Switch.cs:131:28:131:40 | ... => ... | Switch.cs:131:28:131:35 | String s | | +| Switch.cs:131:28:131:40 | After ... => ... [match] | Switch.cs:131:40:131:40 | access to local variable s | | +| Switch.cs:131:28:131:40 | After ... => ... [no-match] | Switch.cs:131:43:131:51 | ... => ... | | +| Switch.cs:131:40:131:40 | access to local variable s | Switch.cs:131:17:131:53 | After ... switch { ... } [non-null] | non-null | +| Switch.cs:131:40:131:40 | access to local variable s | Switch.cs:131:17:131:53 | After ... switch { ... } [null] | null | +| Switch.cs:131:43:131:43 | After _ [match] | Switch.cs:131:43:131:51 | After ... => ... [match] | match | +| Switch.cs:131:43:131:43 | _ | Switch.cs:131:43:131:43 | After _ [match] | match | +| Switch.cs:131:43:131:51 | ... => ... | Switch.cs:131:43:131:43 | _ | | +| Switch.cs:131:43:131:51 | After ... => ... [match] | Switch.cs:131:48:131:51 | null | | +| Switch.cs:131:48:131:51 | null | Switch.cs:131:17:131:53 | After ... switch { ... } [non-null] | non-null | +| Switch.cs:131:48:131:51 | null | Switch.cs:131:17:131:53 | After ... switch { ... } [null] | null | +| Switch.cs:134:9:134:11 | Entry | Switch.cs:134:17:134:17 | i | | +| Switch.cs:134:9:134:11 | Normal Exit | Switch.cs:134:9:134:11 | Exit | | +| Switch.cs:134:17:134:17 | i | Switch.cs:135:5:142:5 | {...} | | | Switch.cs:135:5:142:5 | {...} | Switch.cs:136:9:141:9 | switch (...) {...} | | | Switch.cs:136:9:141:9 | switch (...) {...} | Switch.cs:136:17:136:17 | access to parameter i | | | Switch.cs:136:17:136:17 | access to parameter i | Switch.cs:139:13:139:19 | case ...: | | -| Switch.cs:138:13:138:20 | default: | Switch.cs:138:30:138:30 | 1 | | -| Switch.cs:138:22:138:31 | return ...; | Switch.cs:134:9:134:11 | exit M13 (normal) | return | -| Switch.cs:138:29:138:30 | -... | Switch.cs:138:22:138:31 | return ...; | | +| Switch.cs:138:13:138:20 | After default: [match] | Switch.cs:138:22:138:31 | Before return ...; | | +| Switch.cs:138:13:138:20 | default: | Switch.cs:138:13:138:20 | After default: [match] | match | +| Switch.cs:138:22:138:31 | Before return ...; | Switch.cs:138:29:138:30 | Before -... | | +| Switch.cs:138:22:138:31 | return ...; | Switch.cs:134:9:134:11 | Normal Exit | return | +| Switch.cs:138:29:138:30 | -... | Switch.cs:138:29:138:30 | After -... | | +| Switch.cs:138:29:138:30 | After -... | Switch.cs:138:22:138:31 | return ...; | | +| Switch.cs:138:29:138:30 | Before -... | Switch.cs:138:30:138:30 | 1 | | | Switch.cs:138:30:138:30 | 1 | Switch.cs:138:29:138:30 | -... | | +| Switch.cs:139:13:139:19 | After case ...: [match] | Switch.cs:139:21:139:29 | Before return ...; | | +| Switch.cs:139:13:139:19 | After case ...: [no-match] | Switch.cs:140:13:140:19 | case ...: | | | Switch.cs:139:13:139:19 | case ...: | Switch.cs:139:18:139:18 | 1 | | -| Switch.cs:139:18:139:18 | 1 | Switch.cs:139:28:139:28 | 1 | match | -| Switch.cs:139:18:139:18 | 1 | Switch.cs:140:13:140:19 | case ...: | no-match | -| Switch.cs:139:21:139:29 | return ...; | Switch.cs:134:9:134:11 | exit M13 (normal) | return | +| Switch.cs:139:18:139:18 | 1 | Switch.cs:139:18:139:18 | After 1 [match] | match | +| Switch.cs:139:18:139:18 | 1 | Switch.cs:139:18:139:18 | After 1 [no-match] | no-match | +| Switch.cs:139:18:139:18 | After 1 [match] | Switch.cs:139:13:139:19 | After case ...: [match] | match | +| Switch.cs:139:18:139:18 | After 1 [no-match] | Switch.cs:139:13:139:19 | After case ...: [no-match] | no-match | +| Switch.cs:139:21:139:29 | Before return ...; | Switch.cs:139:28:139:28 | 1 | | +| Switch.cs:139:21:139:29 | return ...; | Switch.cs:134:9:134:11 | Normal Exit | return | | Switch.cs:139:28:139:28 | 1 | Switch.cs:139:21:139:29 | return ...; | | +| Switch.cs:140:13:140:19 | After case ...: [match] | Switch.cs:140:21:140:29 | Before return ...; | | +| Switch.cs:140:13:140:19 | After case ...: [no-match] | Switch.cs:138:13:138:20 | default: | | | Switch.cs:140:13:140:19 | case ...: | Switch.cs:140:18:140:18 | 2 | | -| Switch.cs:140:18:140:18 | 2 | Switch.cs:138:13:138:20 | default: | no-match | -| Switch.cs:140:18:140:18 | 2 | Switch.cs:140:28:140:28 | 2 | match | -| Switch.cs:140:21:140:29 | return ...; | Switch.cs:134:9:134:11 | exit M13 (normal) | return | +| Switch.cs:140:18:140:18 | 2 | Switch.cs:140:18:140:18 | After 2 [match] | match | +| Switch.cs:140:18:140:18 | 2 | Switch.cs:140:18:140:18 | After 2 [no-match] | no-match | +| Switch.cs:140:18:140:18 | After 2 [match] | Switch.cs:140:13:140:19 | After case ...: [match] | match | +| Switch.cs:140:18:140:18 | After 2 [no-match] | Switch.cs:140:13:140:19 | After case ...: [no-match] | no-match | +| Switch.cs:140:21:140:29 | Before return ...; | Switch.cs:140:28:140:28 | 2 | | +| Switch.cs:140:21:140:29 | return ...; | Switch.cs:134:9:134:11 | Normal Exit | return | | Switch.cs:140:28:140:28 | 2 | Switch.cs:140:21:140:29 | return ...; | | -| Switch.cs:144:9:144:11 | enter M14 | Switch.cs:145:5:152:5 | {...} | | -| Switch.cs:144:9:144:11 | exit M14 (normal) | Switch.cs:144:9:144:11 | exit M14 | | +| Switch.cs:144:9:144:11 | Entry | Switch.cs:144:17:144:17 | i | | +| Switch.cs:144:9:144:11 | Normal Exit | Switch.cs:144:9:144:11 | Exit | | +| Switch.cs:144:17:144:17 | i | Switch.cs:145:5:152:5 | {...} | | | Switch.cs:145:5:152:5 | {...} | Switch.cs:146:9:151:9 | switch (...) {...} | | | Switch.cs:146:9:151:9 | switch (...) {...} | Switch.cs:146:17:146:17 | access to parameter i | | | Switch.cs:146:17:146:17 | access to parameter i | Switch.cs:148:13:148:19 | case ...: | | +| Switch.cs:148:13:148:19 | After case ...: [match] | Switch.cs:148:21:148:29 | Before return ...; | | +| Switch.cs:148:13:148:19 | After case ...: [no-match] | Switch.cs:150:13:150:19 | case ...: | | | Switch.cs:148:13:148:19 | case ...: | Switch.cs:148:18:148:18 | 1 | | -| Switch.cs:148:18:148:18 | 1 | Switch.cs:148:28:148:28 | 1 | match | -| Switch.cs:148:18:148:18 | 1 | Switch.cs:150:13:150:19 | case ...: | no-match | -| Switch.cs:148:21:148:29 | return ...; | Switch.cs:144:9:144:11 | exit M14 (normal) | return | +| Switch.cs:148:18:148:18 | 1 | Switch.cs:148:18:148:18 | After 1 [match] | match | +| Switch.cs:148:18:148:18 | 1 | Switch.cs:148:18:148:18 | After 1 [no-match] | no-match | +| Switch.cs:148:18:148:18 | After 1 [match] | Switch.cs:148:13:148:19 | After case ...: [match] | match | +| Switch.cs:148:18:148:18 | After 1 [no-match] | Switch.cs:148:13:148:19 | After case ...: [no-match] | no-match | +| Switch.cs:148:21:148:29 | Before return ...; | Switch.cs:148:28:148:28 | 1 | | +| Switch.cs:148:21:148:29 | return ...; | Switch.cs:144:9:144:11 | Normal Exit | return | | Switch.cs:148:28:148:28 | 1 | Switch.cs:148:21:148:29 | return ...; | | -| Switch.cs:149:13:149:20 | default: | Switch.cs:149:30:149:30 | 1 | | -| Switch.cs:149:22:149:31 | return ...; | Switch.cs:144:9:144:11 | exit M14 (normal) | return | -| Switch.cs:149:29:149:30 | -... | Switch.cs:149:22:149:31 | return ...; | | +| Switch.cs:149:13:149:20 | After default: [match] | Switch.cs:149:22:149:31 | Before return ...; | | +| Switch.cs:149:13:149:20 | default: | Switch.cs:149:13:149:20 | After default: [match] | match | +| Switch.cs:149:22:149:31 | Before return ...; | Switch.cs:149:29:149:30 | Before -... | | +| Switch.cs:149:22:149:31 | return ...; | Switch.cs:144:9:144:11 | Normal Exit | return | +| Switch.cs:149:29:149:30 | -... | Switch.cs:149:29:149:30 | After -... | | +| Switch.cs:149:29:149:30 | After -... | Switch.cs:149:22:149:31 | return ...; | | +| Switch.cs:149:29:149:30 | Before -... | Switch.cs:149:30:149:30 | 1 | | | Switch.cs:149:30:149:30 | 1 | Switch.cs:149:29:149:30 | -... | | +| Switch.cs:150:13:150:19 | After case ...: [match] | Switch.cs:150:21:150:29 | Before return ...; | | +| Switch.cs:150:13:150:19 | After case ...: [no-match] | Switch.cs:149:13:149:20 | default: | | | Switch.cs:150:13:150:19 | case ...: | Switch.cs:150:18:150:18 | 2 | | -| Switch.cs:150:18:150:18 | 2 | Switch.cs:149:13:149:20 | default: | no-match | -| Switch.cs:150:18:150:18 | 2 | Switch.cs:150:28:150:28 | 2 | match | -| Switch.cs:150:21:150:29 | return ...; | Switch.cs:144:9:144:11 | exit M14 (normal) | return | +| Switch.cs:150:18:150:18 | 2 | Switch.cs:150:18:150:18 | After 2 [match] | match | +| Switch.cs:150:18:150:18 | 2 | Switch.cs:150:18:150:18 | After 2 [no-match] | no-match | +| Switch.cs:150:18:150:18 | After 2 [match] | Switch.cs:150:13:150:19 | After case ...: [match] | match | +| Switch.cs:150:18:150:18 | After 2 [no-match] | Switch.cs:150:13:150:19 | After case ...: [no-match] | no-match | +| Switch.cs:150:21:150:29 | Before return ...; | Switch.cs:150:28:150:28 | 2 | | +| Switch.cs:150:21:150:29 | return ...; | Switch.cs:144:9:144:11 | Normal Exit | return | | Switch.cs:150:28:150:28 | 2 | Switch.cs:150:21:150:29 | return ...; | | -| Switch.cs:154:10:154:12 | enter M15 | Switch.cs:155:5:161:5 | {...} | | -| Switch.cs:154:10:154:12 | exit M15 (abnormal) | Switch.cs:154:10:154:12 | exit M15 | | -| Switch.cs:154:10:154:12 | exit M15 (normal) | Switch.cs:154:10:154:12 | exit M15 | | +| Switch.cs:154:10:154:12 | Entry | Switch.cs:154:19:154:19 | b | | +| Switch.cs:154:10:154:12 | Normal Exit | Switch.cs:154:10:154:12 | Exit | | +| Switch.cs:154:19:154:19 | b | Switch.cs:155:5:161:5 | {...} | | +| Switch.cs:155:5:161:5 | After {...} | Switch.cs:154:10:154:12 | Normal Exit | | | Switch.cs:155:5:161:5 | {...} | Switch.cs:156:9:156:55 | ... ...; | | -| Switch.cs:156:9:156:55 | ... ...; | Switch.cs:156:17:156:17 | access to parameter b | | -| Switch.cs:156:13:156:54 | String s = ... | Switch.cs:157:9:160:49 | if (...) ... | | -| Switch.cs:156:17:156:17 | access to parameter b | Switch.cs:156:28:156:31 | true | | -| Switch.cs:156:17:156:54 | ... switch { ... } | Switch.cs:156:13:156:54 | String s = ... | | -| Switch.cs:156:28:156:31 | true | Switch.cs:156:36:156:38 | "a" | match | -| Switch.cs:156:28:156:31 | true | Switch.cs:156:41:156:45 | false | no-match | -| Switch.cs:156:28:156:38 | ... => ... | Switch.cs:156:17:156:54 | ... switch { ... } | | -| Switch.cs:156:36:156:38 | "a" | Switch.cs:156:28:156:38 | ... => ... | | -| Switch.cs:156:41:156:45 | false | Switch.cs:154:10:154:12 | exit M15 (abnormal) | exception | -| Switch.cs:156:41:156:45 | false | Switch.cs:156:50:156:52 | "b" | match | -| Switch.cs:156:41:156:52 | ... => ... | Switch.cs:156:17:156:54 | ... switch { ... } | | -| Switch.cs:156:50:156:52 | "b" | Switch.cs:156:41:156:52 | ... => ... | | +| Switch.cs:156:9:156:55 | ... ...; | Switch.cs:156:13:156:54 | Before String s = ... | | +| Switch.cs:156:9:156:55 | After ... ...; | Switch.cs:157:9:160:49 | if (...) ... | | +| Switch.cs:156:13:156:13 | access to local variable s | Switch.cs:156:17:156:54 | ... switch { ... } | | +| Switch.cs:156:13:156:54 | After String s = ... | Switch.cs:156:9:156:55 | After ... ...; | | +| Switch.cs:156:13:156:54 | Before String s = ... | Switch.cs:156:13:156:13 | access to local variable s | | +| Switch.cs:156:13:156:54 | String s = ... | Switch.cs:156:13:156:54 | After String s = ... | | +| Switch.cs:156:17:156:17 | access to parameter b | Switch.cs:156:28:156:38 | ... => ... | | +| Switch.cs:156:17:156:54 | ... switch { ... } | Switch.cs:156:17:156:17 | access to parameter b | | +| Switch.cs:156:17:156:54 | After ... switch { ... } | Switch.cs:156:13:156:54 | String s = ... | | +| Switch.cs:156:28:156:31 | After true [match] | Switch.cs:156:28:156:38 | After ... => ... [match] | match | +| Switch.cs:156:28:156:31 | After true [no-match] | Switch.cs:156:28:156:38 | After ... => ... [no-match] | no-match | +| Switch.cs:156:28:156:31 | true | Switch.cs:156:28:156:31 | After true [match] | match | +| Switch.cs:156:28:156:31 | true | Switch.cs:156:28:156:31 | After true [no-match] | no-match | +| Switch.cs:156:28:156:38 | ... => ... | Switch.cs:156:28:156:31 | true | | +| Switch.cs:156:28:156:38 | After ... => ... [match] | Switch.cs:156:36:156:38 | "a" | | +| Switch.cs:156:28:156:38 | After ... => ... [no-match] | Switch.cs:156:41:156:52 | ... => ... | | +| Switch.cs:156:36:156:38 | "a" | Switch.cs:156:17:156:54 | After ... switch { ... } | | +| Switch.cs:156:41:156:45 | After false [match] | Switch.cs:156:41:156:52 | After ... => ... [match] | match | +| Switch.cs:156:41:156:45 | After false [no-match] | Switch.cs:156:41:156:52 | After ... => ... [no-match] | no-match | +| Switch.cs:156:41:156:45 | false | Switch.cs:156:41:156:45 | After false [match] | match | +| Switch.cs:156:41:156:45 | false | Switch.cs:156:41:156:45 | After false [no-match] | no-match | +| Switch.cs:156:41:156:52 | ... => ... | Switch.cs:156:41:156:45 | false | | +| Switch.cs:156:41:156:52 | After ... => ... [match] | Switch.cs:156:50:156:52 | "b" | | +| Switch.cs:156:41:156:52 | After ... => ... [no-match] | Switch.cs:156:17:156:54 | After ... switch { ... } | | +| Switch.cs:156:50:156:52 | "b" | Switch.cs:156:17:156:54 | After ... switch { ... } | | +| Switch.cs:157:9:160:49 | After if (...) ... | Switch.cs:155:5:161:5 | After {...} | | | Switch.cs:157:9:160:49 | if (...) ... | Switch.cs:157:13:157:13 | access to parameter b | | -| Switch.cs:157:13:157:13 | access to parameter b | Switch.cs:158:13:158:49 | ...; | true | -| Switch.cs:157:13:157:13 | access to parameter b | Switch.cs:160:13:160:49 | ...; | false | -| Switch.cs:158:13:158:48 | call to method WriteLine | Switch.cs:154:10:154:12 | exit M15 (normal) | | -| Switch.cs:158:13:158:49 | ...; | Switch.cs:158:40:158:43 | "a = " | | -| Switch.cs:158:38:158:47 | $"..." | Switch.cs:158:13:158:48 | call to method WriteLine | | -| Switch.cs:158:40:158:43 | "a = " | Switch.cs:158:45:158:45 | access to local variable s | | -| Switch.cs:158:44:158:46 | {...} | Switch.cs:158:38:158:47 | $"..." | | +| Switch.cs:157:13:157:13 | After access to parameter b [false] | Switch.cs:160:13:160:49 | ...; | | +| Switch.cs:157:13:157:13 | After access to parameter b [true] | Switch.cs:158:13:158:49 | ...; | | +| Switch.cs:157:13:157:13 | access to parameter b | Switch.cs:157:13:157:13 | After access to parameter b [false] | false | +| Switch.cs:157:13:157:13 | access to parameter b | Switch.cs:157:13:157:13 | After access to parameter b [true] | true | +| Switch.cs:158:13:158:48 | After call to method WriteLine | Switch.cs:158:13:158:49 | After ...; | | +| Switch.cs:158:13:158:48 | Before call to method WriteLine | Switch.cs:158:38:158:47 | Before $"..." | | +| Switch.cs:158:13:158:48 | call to method WriteLine | Switch.cs:158:13:158:48 | After call to method WriteLine | | +| Switch.cs:158:13:158:49 | ...; | Switch.cs:158:13:158:48 | Before call to method WriteLine | | +| Switch.cs:158:13:158:49 | After ...; | Switch.cs:157:9:160:49 | After if (...) ... | | +| Switch.cs:158:38:158:47 | $"..." | Switch.cs:158:38:158:47 | After $"..." | | +| Switch.cs:158:38:158:47 | After $"..." | Switch.cs:158:13:158:48 | call to method WriteLine | | +| Switch.cs:158:38:158:47 | Before $"..." | Switch.cs:158:40:158:43 | "a = " | | +| Switch.cs:158:40:158:43 | "a = " | Switch.cs:158:44:158:46 | Before {...} | | +| Switch.cs:158:44:158:46 | After {...} | Switch.cs:158:38:158:47 | $"..." | | +| Switch.cs:158:44:158:46 | Before {...} | Switch.cs:158:45:158:45 | access to local variable s | | +| Switch.cs:158:44:158:46 | {...} | Switch.cs:158:44:158:46 | After {...} | | | Switch.cs:158:45:158:45 | access to local variable s | Switch.cs:158:44:158:46 | {...} | | -| Switch.cs:160:13:160:48 | call to method WriteLine | Switch.cs:154:10:154:12 | exit M15 (normal) | | -| Switch.cs:160:13:160:49 | ...; | Switch.cs:160:40:160:43 | "b = " | | -| Switch.cs:160:38:160:47 | $"..." | Switch.cs:160:13:160:48 | call to method WriteLine | | -| Switch.cs:160:40:160:43 | "b = " | Switch.cs:160:45:160:45 | access to local variable s | | -| Switch.cs:160:44:160:46 | {...} | Switch.cs:160:38:160:47 | $"..." | | +| Switch.cs:160:13:160:48 | After call to method WriteLine | Switch.cs:160:13:160:49 | After ...; | | +| Switch.cs:160:13:160:48 | Before call to method WriteLine | Switch.cs:160:38:160:47 | Before $"..." | | +| Switch.cs:160:13:160:48 | call to method WriteLine | Switch.cs:160:13:160:48 | After call to method WriteLine | | +| Switch.cs:160:13:160:49 | ...; | Switch.cs:160:13:160:48 | Before call to method WriteLine | | +| Switch.cs:160:13:160:49 | After ...; | Switch.cs:157:9:160:49 | After if (...) ... | | +| Switch.cs:160:38:160:47 | $"..." | Switch.cs:160:38:160:47 | After $"..." | | +| Switch.cs:160:38:160:47 | After $"..." | Switch.cs:160:13:160:48 | call to method WriteLine | | +| Switch.cs:160:38:160:47 | Before $"..." | Switch.cs:160:40:160:43 | "b = " | | +| Switch.cs:160:40:160:43 | "b = " | Switch.cs:160:44:160:46 | Before {...} | | +| Switch.cs:160:44:160:46 | After {...} | Switch.cs:160:38:160:47 | $"..." | | +| Switch.cs:160:44:160:46 | Before {...} | Switch.cs:160:45:160:45 | access to local variable s | | +| Switch.cs:160:44:160:46 | {...} | Switch.cs:160:44:160:46 | After {...} | | | Switch.cs:160:45:160:45 | access to local variable s | Switch.cs:160:44:160:46 | {...} | | -| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:164:5:178:5 | {...} | | -| Switch.cs:163:10:163:12 | exit M16 (normal) | Switch.cs:163:10:163:12 | exit M16 | | +| Switch.cs:163:10:163:12 | Entry | Switch.cs:163:18:163:18 | i | | +| Switch.cs:163:10:163:12 | Normal Exit | Switch.cs:163:10:163:12 | Exit | | +| Switch.cs:163:18:163:18 | i | Switch.cs:164:5:178:5 | {...} | | +| Switch.cs:164:5:178:5 | After {...} | Switch.cs:163:10:163:12 | Normal Exit | | | Switch.cs:164:5:178:5 | {...} | Switch.cs:165:9:177:9 | switch (...) {...} | | +| Switch.cs:165:9:177:9 | After switch (...) {...} | Switch.cs:164:5:178:5 | After {...} | | | Switch.cs:165:9:177:9 | switch (...) {...} | Switch.cs:165:17:165:17 | access to parameter i | | | Switch.cs:165:17:165:17 | access to parameter i | Switch.cs:167:13:167:19 | case ...: | | +| Switch.cs:167:13:167:19 | After case ...: [match] | Switch.cs:169:17:169:51 | ...; | | +| Switch.cs:167:13:167:19 | After case ...: [no-match] | Switch.cs:168:13:168:19 | case ...: | | | Switch.cs:167:13:167:19 | case ...: | Switch.cs:167:18:167:18 | 1 | | -| Switch.cs:167:18:167:18 | 1 | Switch.cs:168:13:168:19 | case ...: | no-match | -| Switch.cs:167:18:167:18 | 1 | Switch.cs:169:17:169:51 | ...; | match | +| Switch.cs:167:18:167:18 | 1 | Switch.cs:167:18:167:18 | After 1 [match] | match | +| Switch.cs:167:18:167:18 | 1 | Switch.cs:167:18:167:18 | After 1 [no-match] | no-match | +| Switch.cs:167:18:167:18 | After 1 [match] | Switch.cs:167:13:167:19 | After case ...: [match] | match | +| Switch.cs:167:18:167:18 | After 1 [no-match] | Switch.cs:167:13:167:19 | After case ...: [no-match] | no-match | +| Switch.cs:168:13:168:19 | After case ...: [match] | Switch.cs:169:17:169:51 | ...; | | +| Switch.cs:168:13:168:19 | After case ...: [no-match] | Switch.cs:171:13:171:19 | case ...: | | | Switch.cs:168:13:168:19 | case ...: | Switch.cs:168:18:168:18 | 2 | | -| Switch.cs:168:18:168:18 | 2 | Switch.cs:169:17:169:51 | ...; | match | -| Switch.cs:168:18:168:18 | 2 | Switch.cs:171:13:171:19 | case ...: | no-match | -| Switch.cs:169:17:169:50 | call to method WriteLine | Switch.cs:170:17:170:22 | break; | | -| Switch.cs:169:17:169:51 | ...; | Switch.cs:169:42:169:49 | "1 or 2" | | +| Switch.cs:168:18:168:18 | 2 | Switch.cs:168:18:168:18 | After 2 [match] | match | +| Switch.cs:168:18:168:18 | 2 | Switch.cs:168:18:168:18 | After 2 [no-match] | no-match | +| Switch.cs:168:18:168:18 | After 2 [match] | Switch.cs:168:13:168:19 | After case ...: [match] | match | +| Switch.cs:168:18:168:18 | After 2 [no-match] | Switch.cs:168:13:168:19 | After case ...: [no-match] | no-match | +| Switch.cs:169:17:169:50 | After call to method WriteLine | Switch.cs:169:17:169:51 | After ...; | | +| Switch.cs:169:17:169:50 | Before call to method WriteLine | Switch.cs:169:42:169:49 | "1 or 2" | | +| Switch.cs:169:17:169:50 | call to method WriteLine | Switch.cs:169:17:169:50 | After call to method WriteLine | | +| Switch.cs:169:17:169:51 | ...; | Switch.cs:169:17:169:50 | Before call to method WriteLine | | +| Switch.cs:169:17:169:51 | After ...; | Switch.cs:170:17:170:22 | Before break; | | | Switch.cs:169:42:169:49 | "1 or 2" | Switch.cs:169:17:169:50 | call to method WriteLine | | -| Switch.cs:170:17:170:22 | break; | Switch.cs:163:10:163:12 | exit M16 (normal) | break | +| Switch.cs:170:17:170:22 | Before break; | Switch.cs:170:17:170:22 | break; | | +| Switch.cs:170:17:170:22 | break; | Switch.cs:165:9:177:9 | After switch (...) {...} | break | +| Switch.cs:171:13:171:19 | After case ...: [match] | Switch.cs:172:17:172:46 | ...; | | +| Switch.cs:171:13:171:19 | After case ...: [no-match] | Switch.cs:174:13:174:20 | default: | | | Switch.cs:171:13:171:19 | case ...: | Switch.cs:171:18:171:18 | 3 | | -| Switch.cs:171:18:171:18 | 3 | Switch.cs:172:17:172:46 | ...; | match | -| Switch.cs:171:18:171:18 | 3 | Switch.cs:174:13:174:20 | default: | no-match | -| Switch.cs:172:17:172:45 | call to method WriteLine | Switch.cs:173:17:173:22 | break; | | -| Switch.cs:172:17:172:46 | ...; | Switch.cs:172:42:172:44 | "3" | | +| Switch.cs:171:18:171:18 | 3 | Switch.cs:171:18:171:18 | After 3 [match] | match | +| Switch.cs:171:18:171:18 | 3 | Switch.cs:171:18:171:18 | After 3 [no-match] | no-match | +| Switch.cs:171:18:171:18 | After 3 [match] | Switch.cs:171:13:171:19 | After case ...: [match] | match | +| Switch.cs:171:18:171:18 | After 3 [no-match] | Switch.cs:171:13:171:19 | After case ...: [no-match] | no-match | +| Switch.cs:172:17:172:45 | After call to method WriteLine | Switch.cs:172:17:172:46 | After ...; | | +| Switch.cs:172:17:172:45 | Before call to method WriteLine | Switch.cs:172:42:172:44 | "3" | | +| Switch.cs:172:17:172:45 | call to method WriteLine | Switch.cs:172:17:172:45 | After call to method WriteLine | | +| Switch.cs:172:17:172:46 | ...; | Switch.cs:172:17:172:45 | Before call to method WriteLine | | +| Switch.cs:172:17:172:46 | After ...; | Switch.cs:173:17:173:22 | Before break; | | | Switch.cs:172:42:172:44 | "3" | Switch.cs:172:17:172:45 | call to method WriteLine | | -| Switch.cs:173:17:173:22 | break; | Switch.cs:163:10:163:12 | exit M16 (normal) | break | -| Switch.cs:174:13:174:20 | default: | Switch.cs:175:17:175:48 | ...; | | -| Switch.cs:175:17:175:47 | call to method WriteLine | Switch.cs:176:17:176:22 | break; | | -| Switch.cs:175:17:175:48 | ...; | Switch.cs:175:42:175:46 | "def" | | +| Switch.cs:173:17:173:22 | Before break; | Switch.cs:173:17:173:22 | break; | | +| Switch.cs:173:17:173:22 | break; | Switch.cs:165:9:177:9 | After switch (...) {...} | break | +| Switch.cs:174:13:174:20 | After default: [match] | Switch.cs:175:17:175:48 | ...; | | +| Switch.cs:174:13:174:20 | default: | Switch.cs:174:13:174:20 | After default: [match] | match | +| Switch.cs:175:17:175:47 | After call to method WriteLine | Switch.cs:175:17:175:48 | After ...; | | +| Switch.cs:175:17:175:47 | Before call to method WriteLine | Switch.cs:175:42:175:46 | "def" | | +| Switch.cs:175:17:175:47 | call to method WriteLine | Switch.cs:175:17:175:47 | After call to method WriteLine | | +| Switch.cs:175:17:175:48 | ...; | Switch.cs:175:17:175:47 | Before call to method WriteLine | | +| Switch.cs:175:17:175:48 | After ...; | Switch.cs:176:17:176:22 | Before break; | | | Switch.cs:175:42:175:46 | "def" | Switch.cs:175:17:175:47 | call to method WriteLine | | -| Switch.cs:176:17:176:22 | break; | Switch.cs:163:10:163:12 | exit M16 (normal) | break | -| TypeAccesses.cs:1:7:1:18 | call to constructor Object | TypeAccesses.cs:1:7:1:18 | {...} | | -| TypeAccesses.cs:1:7:1:18 | call to method | TypeAccesses.cs:1:7:1:18 | call to constructor Object | | -| TypeAccesses.cs:1:7:1:18 | enter TypeAccesses | TypeAccesses.cs:1:7:1:18 | this access | | -| TypeAccesses.cs:1:7:1:18 | exit TypeAccesses (normal) | TypeAccesses.cs:1:7:1:18 | exit TypeAccesses | | +| Switch.cs:176:17:176:22 | Before break; | Switch.cs:176:17:176:22 | break; | | +| Switch.cs:176:17:176:22 | break; | Switch.cs:165:9:177:9 | After switch (...) {...} | break | +| TypeAccesses.cs:1:7:1:18 | After call to constructor Object | TypeAccesses.cs:1:7:1:18 | {...} | | +| TypeAccesses.cs:1:7:1:18 | After call to method | TypeAccesses.cs:1:7:1:18 | Before call to constructor Object | | +| TypeAccesses.cs:1:7:1:18 | Before call to constructor Object | TypeAccesses.cs:1:7:1:18 | call to constructor Object | | +| TypeAccesses.cs:1:7:1:18 | Before call to method | TypeAccesses.cs:1:7:1:18 | this access | | +| TypeAccesses.cs:1:7:1:18 | Entry | TypeAccesses.cs:1:7:1:18 | Before call to method | | +| TypeAccesses.cs:1:7:1:18 | Normal Exit | TypeAccesses.cs:1:7:1:18 | Exit | | +| TypeAccesses.cs:1:7:1:18 | call to constructor Object | TypeAccesses.cs:1:7:1:18 | After call to constructor Object | | +| TypeAccesses.cs:1:7:1:18 | call to method | TypeAccesses.cs:1:7:1:18 | After call to method | | | TypeAccesses.cs:1:7:1:18 | this access | TypeAccesses.cs:1:7:1:18 | call to method | | -| TypeAccesses.cs:1:7:1:18 | {...} | TypeAccesses.cs:1:7:1:18 | exit TypeAccesses (normal) | | -| TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:4:5:9:5 | {...} | | -| TypeAccesses.cs:3:10:3:10 | exit M (normal) | TypeAccesses.cs:3:10:3:10 | exit M | | +| TypeAccesses.cs:1:7:1:18 | {...} | TypeAccesses.cs:1:7:1:18 | Normal Exit | | +| TypeAccesses.cs:3:10:3:10 | Entry | TypeAccesses.cs:3:19:3:19 | o | | +| TypeAccesses.cs:3:10:3:10 | Normal Exit | TypeAccesses.cs:3:10:3:10 | Exit | | +| TypeAccesses.cs:3:19:3:19 | o | TypeAccesses.cs:4:5:9:5 | {...} | | +| TypeAccesses.cs:4:5:9:5 | After {...} | TypeAccesses.cs:3:10:3:10 | Normal Exit | | | TypeAccesses.cs:4:5:9:5 | {...} | TypeAccesses.cs:5:9:5:26 | ... ...; | | -| TypeAccesses.cs:5:9:5:26 | ... ...; | TypeAccesses.cs:5:25:5:25 | access to parameter o | | -| TypeAccesses.cs:5:13:5:25 | String s = ... | TypeAccesses.cs:6:9:6:24 | ...; | | -| TypeAccesses.cs:5:17:5:25 | (...) ... | TypeAccesses.cs:5:13:5:25 | String s = ... | | +| TypeAccesses.cs:5:9:5:26 | ... ...; | TypeAccesses.cs:5:13:5:25 | Before String s = ... | | +| TypeAccesses.cs:5:9:5:26 | After ... ...; | TypeAccesses.cs:6:9:6:24 | ...; | | +| TypeAccesses.cs:5:13:5:13 | access to local variable s | TypeAccesses.cs:5:17:5:25 | Before (...) ... | | +| TypeAccesses.cs:5:13:5:25 | After String s = ... | TypeAccesses.cs:5:9:5:26 | After ... ...; | | +| TypeAccesses.cs:5:13:5:25 | Before String s = ... | TypeAccesses.cs:5:13:5:13 | access to local variable s | | +| TypeAccesses.cs:5:13:5:25 | String s = ... | TypeAccesses.cs:5:13:5:25 | After String s = ... | | +| TypeAccesses.cs:5:17:5:25 | (...) ... | TypeAccesses.cs:5:17:5:25 | After (...) ... | | +| TypeAccesses.cs:5:17:5:25 | After (...) ... | TypeAccesses.cs:5:13:5:25 | String s = ... | | +| TypeAccesses.cs:5:17:5:25 | Before (...) ... | TypeAccesses.cs:5:25:5:25 | access to parameter o | | | TypeAccesses.cs:5:25:5:25 | access to parameter o | TypeAccesses.cs:5:17:5:25 | (...) ... | | -| TypeAccesses.cs:6:9:6:23 | ... = ... | TypeAccesses.cs:7:9:7:25 | if (...) ... | | -| TypeAccesses.cs:6:9:6:24 | ...; | TypeAccesses.cs:6:13:6:13 | access to parameter o | | +| TypeAccesses.cs:6:9:6:9 | access to local variable s | TypeAccesses.cs:6:13:6:23 | Before ... as ... | | +| TypeAccesses.cs:6:9:6:23 | ... = ... | TypeAccesses.cs:6:9:6:23 | After ... = ... | | +| TypeAccesses.cs:6:9:6:23 | After ... = ... | TypeAccesses.cs:6:9:6:24 | After ...; | | +| TypeAccesses.cs:6:9:6:23 | Before ... = ... | TypeAccesses.cs:6:9:6:9 | access to local variable s | | +| TypeAccesses.cs:6:9:6:24 | ...; | TypeAccesses.cs:6:9:6:23 | Before ... = ... | | +| TypeAccesses.cs:6:9:6:24 | After ...; | TypeAccesses.cs:7:9:7:25 | if (...) ... | | | TypeAccesses.cs:6:13:6:13 | access to parameter o | TypeAccesses.cs:6:13:6:23 | ... as ... | | -| TypeAccesses.cs:6:13:6:23 | ... as ... | TypeAccesses.cs:6:9:6:23 | ... = ... | | -| TypeAccesses.cs:7:9:7:25 | if (...) ... | TypeAccesses.cs:7:13:7:13 | access to parameter o | | -| TypeAccesses.cs:7:13:7:13 | access to parameter o | TypeAccesses.cs:7:18:7:22 | Int32 j | | -| TypeAccesses.cs:7:13:7:22 | [false] ... is ... | TypeAccesses.cs:8:9:8:28 | ... ...; | false | -| TypeAccesses.cs:7:13:7:22 | [true] ... is ... | TypeAccesses.cs:7:25:7:25 | ; | true | -| TypeAccesses.cs:7:18:7:22 | Int32 j | TypeAccesses.cs:7:13:7:22 | [false] ... is ... | no-match | -| TypeAccesses.cs:7:18:7:22 | Int32 j | TypeAccesses.cs:7:13:7:22 | [true] ... is ... | match | -| TypeAccesses.cs:7:25:7:25 | ; | TypeAccesses.cs:8:9:8:28 | ... ...; | | -| TypeAccesses.cs:8:9:8:28 | ... ...; | TypeAccesses.cs:8:17:8:27 | typeof(...) | | -| TypeAccesses.cs:8:13:8:27 | Type t = ... | TypeAccesses.cs:3:10:3:10 | exit M (normal) | | +| TypeAccesses.cs:6:13:6:23 | ... as ... | TypeAccesses.cs:6:13:6:23 | After ... as ... | | +| TypeAccesses.cs:6:13:6:23 | After ... as ... | TypeAccesses.cs:6:9:6:23 | ... = ... | | +| TypeAccesses.cs:6:13:6:23 | Before ... as ... | TypeAccesses.cs:6:13:6:13 | access to parameter o | | +| TypeAccesses.cs:7:9:7:25 | After if (...) ... | TypeAccesses.cs:8:9:8:28 | ... ...; | | +| TypeAccesses.cs:7:9:7:25 | if (...) ... | TypeAccesses.cs:7:13:7:22 | Before ... is ... | | +| TypeAccesses.cs:7:13:7:13 | access to parameter o | TypeAccesses.cs:7:13:7:22 | ... is ... | | +| TypeAccesses.cs:7:13:7:22 | ... is ... | TypeAccesses.cs:7:13:7:22 | After ... is ... [false] | false | +| TypeAccesses.cs:7:13:7:22 | ... is ... | TypeAccesses.cs:7:13:7:22 | [MatchTrue] ... is ... | true | +| TypeAccesses.cs:7:13:7:22 | After ... is ... [false] | TypeAccesses.cs:7:9:7:25 | After if (...) ... | | +| TypeAccesses.cs:7:13:7:22 | After ... is ... [true] | TypeAccesses.cs:7:25:7:25 | ; | | +| TypeAccesses.cs:7:13:7:22 | Before ... is ... | TypeAccesses.cs:7:13:7:13 | access to parameter o | | +| TypeAccesses.cs:7:13:7:22 | [MatchTrue] ... is ... | TypeAccesses.cs:7:18:7:22 | Int32 j | | +| TypeAccesses.cs:7:18:7:22 | Int32 j | TypeAccesses.cs:7:13:7:22 | After ... is ... [true] | true | +| TypeAccesses.cs:7:25:7:25 | ; | TypeAccesses.cs:7:9:7:25 | After if (...) ... | | +| TypeAccesses.cs:8:9:8:28 | ... ...; | TypeAccesses.cs:8:13:8:27 | Before Type t = ... | | +| TypeAccesses.cs:8:9:8:28 | After ... ...; | TypeAccesses.cs:4:5:9:5 | After {...} | | +| TypeAccesses.cs:8:13:8:13 | access to local variable t | TypeAccesses.cs:8:17:8:27 | typeof(...) | | +| TypeAccesses.cs:8:13:8:27 | After Type t = ... | TypeAccesses.cs:8:9:8:28 | After ... ...; | | +| TypeAccesses.cs:8:13:8:27 | Before Type t = ... | TypeAccesses.cs:8:13:8:13 | access to local variable t | | +| TypeAccesses.cs:8:13:8:27 | Type t = ... | TypeAccesses.cs:8:13:8:27 | After Type t = ... | | | TypeAccesses.cs:8:17:8:27 | typeof(...) | TypeAccesses.cs:8:13:8:27 | Type t = ... | | -| VarDecls.cs:3:7:3:14 | call to constructor Object | VarDecls.cs:3:7:3:14 | {...} | | -| VarDecls.cs:3:7:3:14 | call to method | VarDecls.cs:3:7:3:14 | call to constructor Object | | -| VarDecls.cs:3:7:3:14 | enter VarDecls | VarDecls.cs:3:7:3:14 | this access | | -| VarDecls.cs:3:7:3:14 | exit VarDecls (normal) | VarDecls.cs:3:7:3:14 | exit VarDecls | | +| VarDecls.cs:3:7:3:14 | After call to constructor Object | VarDecls.cs:3:7:3:14 | {...} | | +| VarDecls.cs:3:7:3:14 | After call to method | VarDecls.cs:3:7:3:14 | Before call to constructor Object | | +| VarDecls.cs:3:7:3:14 | Before call to constructor Object | VarDecls.cs:3:7:3:14 | call to constructor Object | | +| VarDecls.cs:3:7:3:14 | Before call to method | VarDecls.cs:3:7:3:14 | this access | | +| VarDecls.cs:3:7:3:14 | Entry | VarDecls.cs:3:7:3:14 | Before call to method | | +| VarDecls.cs:3:7:3:14 | Normal Exit | VarDecls.cs:3:7:3:14 | Exit | | +| VarDecls.cs:3:7:3:14 | call to constructor Object | VarDecls.cs:3:7:3:14 | After call to constructor Object | | +| VarDecls.cs:3:7:3:14 | call to method | VarDecls.cs:3:7:3:14 | After call to method | | | VarDecls.cs:3:7:3:14 | this access | VarDecls.cs:3:7:3:14 | call to method | | -| VarDecls.cs:3:7:3:14 | {...} | VarDecls.cs:3:7:3:14 | exit VarDecls (normal) | | -| VarDecls.cs:5:18:5:19 | enter M1 | VarDecls.cs:6:5:11:5 | {...} | | -| VarDecls.cs:5:18:5:19 | exit M1 (normal) | VarDecls.cs:5:18:5:19 | exit M1 | | +| VarDecls.cs:3:7:3:14 | {...} | VarDecls.cs:3:7:3:14 | Normal Exit | | +| VarDecls.cs:5:18:5:19 | Entry | VarDecls.cs:5:30:5:36 | strings | | +| VarDecls.cs:5:18:5:19 | Normal Exit | VarDecls.cs:5:18:5:19 | Exit | | +| VarDecls.cs:5:30:5:36 | strings | VarDecls.cs:6:5:11:5 | {...} | | | VarDecls.cs:6:5:11:5 | {...} | VarDecls.cs:7:9:10:9 | fixed(...) { ... } | | -| VarDecls.cs:7:9:10:9 | fixed(...) { ... } | VarDecls.cs:7:27:7:33 | access to parameter strings | | -| VarDecls.cs:7:22:7:36 | Char* c1 = ... | VarDecls.cs:7:44:7:50 | access to parameter strings | | +| VarDecls.cs:7:9:10:9 | fixed(...) { ... } | VarDecls.cs:7:22:7:36 | Before Char* c1 = ... | | +| VarDecls.cs:7:22:7:23 | access to local variable c1 | VarDecls.cs:7:27:7:36 | Before (...) ... | | +| VarDecls.cs:7:22:7:36 | After Char* c1 = ... | VarDecls.cs:7:39:7:53 | Before Char* c2 = ... | | +| VarDecls.cs:7:22:7:36 | Before Char* c1 = ... | VarDecls.cs:7:22:7:23 | access to local variable c1 | | +| VarDecls.cs:7:22:7:36 | Char* c1 = ... | VarDecls.cs:7:22:7:36 | After Char* c1 = ... | | | VarDecls.cs:7:27:7:33 | access to parameter strings | VarDecls.cs:7:35:7:35 | 0 | | -| VarDecls.cs:7:27:7:36 | (...) ... | VarDecls.cs:7:22:7:36 | Char* c1 = ... | | -| VarDecls.cs:7:27:7:36 | access to array element | VarDecls.cs:7:27:7:36 | (...) ... | | +| VarDecls.cs:7:27:7:36 | (...) ... | VarDecls.cs:7:27:7:36 | After (...) ... | | +| VarDecls.cs:7:27:7:36 | After (...) ... | VarDecls.cs:7:22:7:36 | Char* c1 = ... | | +| VarDecls.cs:7:27:7:36 | After access to array element | VarDecls.cs:7:27:7:36 | (...) ... | | +| VarDecls.cs:7:27:7:36 | Before (...) ... | VarDecls.cs:7:27:7:36 | Before access to array element | | +| VarDecls.cs:7:27:7:36 | Before access to array element | VarDecls.cs:7:27:7:33 | access to parameter strings | | +| VarDecls.cs:7:27:7:36 | access to array element | VarDecls.cs:7:27:7:36 | After access to array element | | | VarDecls.cs:7:35:7:35 | 0 | VarDecls.cs:7:27:7:36 | access to array element | | -| VarDecls.cs:7:39:7:53 | Char* c2 = ... | VarDecls.cs:8:9:10:9 | {...} | | +| VarDecls.cs:7:39:7:40 | access to local variable c2 | VarDecls.cs:7:44:7:53 | Before (...) ... | | +| VarDecls.cs:7:39:7:53 | After Char* c2 = ... | VarDecls.cs:8:9:10:9 | {...} | | +| VarDecls.cs:7:39:7:53 | Before Char* c2 = ... | VarDecls.cs:7:39:7:40 | access to local variable c2 | | +| VarDecls.cs:7:39:7:53 | Char* c2 = ... | VarDecls.cs:7:39:7:53 | After Char* c2 = ... | | | VarDecls.cs:7:44:7:50 | access to parameter strings | VarDecls.cs:7:52:7:52 | 1 | | -| VarDecls.cs:7:44:7:53 | (...) ... | VarDecls.cs:7:39:7:53 | Char* c2 = ... | | -| VarDecls.cs:7:44:7:53 | access to array element | VarDecls.cs:7:44:7:53 | (...) ... | | +| VarDecls.cs:7:44:7:53 | (...) ... | VarDecls.cs:7:44:7:53 | After (...) ... | | +| VarDecls.cs:7:44:7:53 | After (...) ... | VarDecls.cs:7:39:7:53 | Char* c2 = ... | | +| VarDecls.cs:7:44:7:53 | After access to array element | VarDecls.cs:7:44:7:53 | (...) ... | | +| VarDecls.cs:7:44:7:53 | Before (...) ... | VarDecls.cs:7:44:7:53 | Before access to array element | | +| VarDecls.cs:7:44:7:53 | Before access to array element | VarDecls.cs:7:44:7:50 | access to parameter strings | | +| VarDecls.cs:7:44:7:53 | access to array element | VarDecls.cs:7:44:7:53 | After access to array element | | | VarDecls.cs:7:52:7:52 | 1 | VarDecls.cs:7:44:7:53 | access to array element | | -| VarDecls.cs:8:9:10:9 | {...} | VarDecls.cs:9:27:9:28 | access to local variable c1 | | -| VarDecls.cs:9:13:9:29 | return ...; | VarDecls.cs:5:18:5:19 | exit M1 (normal) | return | -| VarDecls.cs:9:20:9:28 | (...) ... | VarDecls.cs:9:13:9:29 | return ...; | | +| VarDecls.cs:8:9:10:9 | {...} | VarDecls.cs:9:13:9:29 | Before return ...; | | +| VarDecls.cs:9:13:9:29 | Before return ...; | VarDecls.cs:9:20:9:28 | Before (...) ... | | +| VarDecls.cs:9:13:9:29 | return ...; | VarDecls.cs:5:18:5:19 | Normal Exit | return | +| VarDecls.cs:9:20:9:28 | (...) ... | VarDecls.cs:9:20:9:28 | After (...) ... | | +| VarDecls.cs:9:20:9:28 | After (...) ... | VarDecls.cs:9:13:9:29 | return ...; | | +| VarDecls.cs:9:20:9:28 | Before (...) ... | VarDecls.cs:9:27:9:28 | access to local variable c1 | | | VarDecls.cs:9:27:9:28 | access to local variable c1 | VarDecls.cs:9:20:9:28 | (...) ... | | -| VarDecls.cs:13:12:13:13 | enter M2 | VarDecls.cs:14:5:17:5 | {...} | | -| VarDecls.cs:13:12:13:13 | exit M2 (normal) | VarDecls.cs:13:12:13:13 | exit M2 | | +| VarDecls.cs:13:12:13:13 | Entry | VarDecls.cs:13:22:13:22 | s | | +| VarDecls.cs:13:12:13:13 | Normal Exit | VarDecls.cs:13:12:13:13 | Exit | | +| VarDecls.cs:13:22:13:22 | s | VarDecls.cs:14:5:17:5 | {...} | | | VarDecls.cs:14:5:17:5 | {...} | VarDecls.cs:15:9:15:30 | ... ...; | | -| VarDecls.cs:15:9:15:30 | ... ...; | VarDecls.cs:15:21:15:21 | access to parameter s | | -| VarDecls.cs:15:16:15:21 | String s1 = ... | VarDecls.cs:15:29:15:29 | access to parameter s | | +| VarDecls.cs:15:9:15:30 | ... ...; | VarDecls.cs:15:16:15:21 | Before String s1 = ... | | +| VarDecls.cs:15:9:15:30 | After ... ...; | VarDecls.cs:16:9:16:23 | Before return ...; | | +| VarDecls.cs:15:16:15:17 | access to local variable s1 | VarDecls.cs:15:21:15:21 | access to parameter s | | +| VarDecls.cs:15:16:15:21 | After String s1 = ... | VarDecls.cs:15:24:15:29 | Before String s2 = ... | | +| VarDecls.cs:15:16:15:21 | Before String s1 = ... | VarDecls.cs:15:16:15:17 | access to local variable s1 | | +| VarDecls.cs:15:16:15:21 | String s1 = ... | VarDecls.cs:15:16:15:21 | After String s1 = ... | | | VarDecls.cs:15:21:15:21 | access to parameter s | VarDecls.cs:15:16:15:21 | String s1 = ... | | -| VarDecls.cs:15:24:15:29 | String s2 = ... | VarDecls.cs:16:16:16:17 | access to local variable s1 | | +| VarDecls.cs:15:24:15:25 | access to local variable s2 | VarDecls.cs:15:29:15:29 | access to parameter s | | +| VarDecls.cs:15:24:15:29 | After String s2 = ... | VarDecls.cs:15:9:15:30 | After ... ...; | | +| VarDecls.cs:15:24:15:29 | Before String s2 = ... | VarDecls.cs:15:24:15:25 | access to local variable s2 | | +| VarDecls.cs:15:24:15:29 | String s2 = ... | VarDecls.cs:15:24:15:29 | After String s2 = ... | | | VarDecls.cs:15:29:15:29 | access to parameter s | VarDecls.cs:15:24:15:29 | String s2 = ... | | -| VarDecls.cs:16:9:16:23 | return ...; | VarDecls.cs:13:12:13:13 | exit M2 (normal) | return | +| VarDecls.cs:16:9:16:23 | Before return ...; | VarDecls.cs:16:16:16:22 | Before ... + ... | | +| VarDecls.cs:16:9:16:23 | return ...; | VarDecls.cs:13:12:13:13 | Normal Exit | return | | VarDecls.cs:16:16:16:17 | access to local variable s1 | VarDecls.cs:16:21:16:22 | access to local variable s2 | | -| VarDecls.cs:16:16:16:22 | ... + ... | VarDecls.cs:16:9:16:23 | return ...; | | +| VarDecls.cs:16:16:16:22 | ... + ... | VarDecls.cs:16:16:16:22 | After ... + ... | | +| VarDecls.cs:16:16:16:22 | After ... + ... | VarDecls.cs:16:9:16:23 | return ...; | | +| VarDecls.cs:16:16:16:22 | Before ... + ... | VarDecls.cs:16:16:16:17 | access to local variable s1 | | | VarDecls.cs:16:21:16:22 | access to local variable s2 | VarDecls.cs:16:16:16:22 | ... + ... | | -| VarDecls.cs:19:7:19:8 | enter M3 | VarDecls.cs:20:5:26:5 | {...} | | -| VarDecls.cs:19:7:19:8 | exit M3 (normal) | VarDecls.cs:19:7:19:8 | exit M3 | | +| VarDecls.cs:19:7:19:8 | Entry | VarDecls.cs:19:15:19:15 | b | | +| VarDecls.cs:19:7:19:8 | Normal Exit | VarDecls.cs:19:7:19:8 | Exit | | +| VarDecls.cs:19:15:19:15 | b | VarDecls.cs:20:5:26:5 | {...} | | | VarDecls.cs:20:5:26:5 | {...} | VarDecls.cs:21:9:22:13 | using (...) {...} | | -| VarDecls.cs:21:9:22:13 | using (...) {...} | VarDecls.cs:21:16:21:22 | object creation of type C | | -| VarDecls.cs:21:16:21:22 | object creation of type C | VarDecls.cs:22:13:22:13 | ; | | -| VarDecls.cs:22:13:22:13 | ; | VarDecls.cs:24:9:25:29 | using (...) {...} | | -| VarDecls.cs:24:9:25:29 | using (...) {...} | VarDecls.cs:24:22:24:28 | object creation of type C | | -| VarDecls.cs:24:18:24:28 | C x = ... | VarDecls.cs:24:35:24:41 | object creation of type C | | -| VarDecls.cs:24:22:24:28 | object creation of type C | VarDecls.cs:24:18:24:28 | C x = ... | | -| VarDecls.cs:24:31:24:41 | C y = ... | VarDecls.cs:25:20:25:20 | access to parameter b | | -| VarDecls.cs:24:35:24:41 | object creation of type C | VarDecls.cs:24:31:24:41 | C y = ... | | -| VarDecls.cs:25:13:25:29 | return ...; | VarDecls.cs:19:7:19:8 | exit M3 (normal) | return | -| VarDecls.cs:25:20:25:20 | access to parameter b | VarDecls.cs:25:24:25:24 | access to local variable x | true | -| VarDecls.cs:25:20:25:20 | access to parameter b | VarDecls.cs:25:28:25:28 | access to local variable y | false | -| VarDecls.cs:25:20:25:28 | ... ? ... : ... | VarDecls.cs:25:13:25:29 | return ...; | | -| VarDecls.cs:25:24:25:24 | access to local variable x | VarDecls.cs:25:20:25:28 | ... ? ... : ... | | -| VarDecls.cs:25:28:25:28 | access to local variable y | VarDecls.cs:25:20:25:28 | ... ? ... : ... | | -| VarDecls.cs:28:11:28:11 | call to constructor Object | VarDecls.cs:28:11:28:11 | {...} | | -| VarDecls.cs:28:11:28:11 | call to method | VarDecls.cs:28:11:28:11 | call to constructor Object | | -| VarDecls.cs:28:11:28:11 | enter C | VarDecls.cs:28:11:28:11 | this access | | -| VarDecls.cs:28:11:28:11 | exit C (normal) | VarDecls.cs:28:11:28:11 | exit C | | +| VarDecls.cs:21:9:22:13 | After using (...) {...} | VarDecls.cs:24:9:25:29 | using (...) {...} | | +| VarDecls.cs:21:9:22:13 | using (...) {...} | VarDecls.cs:21:16:21:22 | Before object creation of type C | | +| VarDecls.cs:21:16:21:22 | After object creation of type C | VarDecls.cs:22:13:22:13 | ; | | +| VarDecls.cs:21:16:21:22 | Before object creation of type C | VarDecls.cs:21:16:21:22 | object creation of type C | | +| VarDecls.cs:21:16:21:22 | object creation of type C | VarDecls.cs:21:16:21:22 | After object creation of type C | | +| VarDecls.cs:22:13:22:13 | ; | VarDecls.cs:21:9:22:13 | After using (...) {...} | | +| VarDecls.cs:24:9:25:29 | using (...) {...} | VarDecls.cs:24:18:24:28 | Before C x = ... | | +| VarDecls.cs:24:18:24:18 | access to local variable x | VarDecls.cs:24:22:24:28 | Before object creation of type C | | +| VarDecls.cs:24:18:24:28 | After C x = ... | VarDecls.cs:24:31:24:41 | Before C y = ... | | +| VarDecls.cs:24:18:24:28 | Before C x = ... | VarDecls.cs:24:18:24:18 | access to local variable x | | +| VarDecls.cs:24:18:24:28 | C x = ... | VarDecls.cs:24:18:24:28 | After C x = ... | | +| VarDecls.cs:24:22:24:28 | After object creation of type C | VarDecls.cs:24:18:24:28 | C x = ... | | +| VarDecls.cs:24:22:24:28 | Before object creation of type C | VarDecls.cs:24:22:24:28 | object creation of type C | | +| VarDecls.cs:24:22:24:28 | object creation of type C | VarDecls.cs:24:22:24:28 | After object creation of type C | | +| VarDecls.cs:24:31:24:31 | access to local variable y | VarDecls.cs:24:35:24:41 | Before object creation of type C | | +| VarDecls.cs:24:31:24:41 | After C y = ... | VarDecls.cs:25:13:25:29 | Before return ...; | | +| VarDecls.cs:24:31:24:41 | Before C y = ... | VarDecls.cs:24:31:24:31 | access to local variable y | | +| VarDecls.cs:24:31:24:41 | C y = ... | VarDecls.cs:24:31:24:41 | After C y = ... | | +| VarDecls.cs:24:35:24:41 | After object creation of type C | VarDecls.cs:24:31:24:41 | C y = ... | | +| VarDecls.cs:24:35:24:41 | Before object creation of type C | VarDecls.cs:24:35:24:41 | object creation of type C | | +| VarDecls.cs:24:35:24:41 | object creation of type C | VarDecls.cs:24:35:24:41 | After object creation of type C | | +| VarDecls.cs:25:13:25:29 | Before return ...; | VarDecls.cs:25:20:25:28 | ... ? ... : ... | | +| VarDecls.cs:25:13:25:29 | return ...; | VarDecls.cs:19:7:19:8 | Normal Exit | return | +| VarDecls.cs:25:20:25:20 | After access to parameter b [false] | VarDecls.cs:25:28:25:28 | access to local variable y | | +| VarDecls.cs:25:20:25:20 | After access to parameter b [true] | VarDecls.cs:25:24:25:24 | access to local variable x | | +| VarDecls.cs:25:20:25:20 | access to parameter b | VarDecls.cs:25:20:25:20 | After access to parameter b [false] | false | +| VarDecls.cs:25:20:25:20 | access to parameter b | VarDecls.cs:25:20:25:20 | After access to parameter b [true] | true | +| VarDecls.cs:25:20:25:28 | ... ? ... : ... | VarDecls.cs:25:20:25:20 | access to parameter b | | +| VarDecls.cs:25:20:25:28 | After ... ? ... : ... | VarDecls.cs:25:13:25:29 | return ...; | | +| VarDecls.cs:25:24:25:24 | access to local variable x | VarDecls.cs:25:20:25:28 | After ... ? ... : ... | | +| VarDecls.cs:25:28:25:28 | access to local variable y | VarDecls.cs:25:20:25:28 | After ... ? ... : ... | | +| VarDecls.cs:28:11:28:11 | After call to constructor Object | VarDecls.cs:28:11:28:11 | {...} | | +| VarDecls.cs:28:11:28:11 | After call to method | VarDecls.cs:28:11:28:11 | Before call to constructor Object | | +| VarDecls.cs:28:11:28:11 | Before call to constructor Object | VarDecls.cs:28:11:28:11 | call to constructor Object | | +| VarDecls.cs:28:11:28:11 | Before call to method | VarDecls.cs:28:11:28:11 | this access | | +| VarDecls.cs:28:11:28:11 | Entry | VarDecls.cs:28:11:28:11 | Before call to method | | +| VarDecls.cs:28:11:28:11 | Normal Exit | VarDecls.cs:28:11:28:11 | Exit | | +| VarDecls.cs:28:11:28:11 | call to constructor Object | VarDecls.cs:28:11:28:11 | After call to constructor Object | | +| VarDecls.cs:28:11:28:11 | call to method | VarDecls.cs:28:11:28:11 | After call to method | | | VarDecls.cs:28:11:28:11 | this access | VarDecls.cs:28:11:28:11 | call to method | | -| VarDecls.cs:28:11:28:11 | {...} | VarDecls.cs:28:11:28:11 | exit C (normal) | | -| VarDecls.cs:28:41:28:47 | enter Dispose | VarDecls.cs:28:51:28:53 | {...} | | -| VarDecls.cs:28:41:28:47 | exit Dispose (normal) | VarDecls.cs:28:41:28:47 | exit Dispose | | -| VarDecls.cs:28:51:28:53 | {...} | VarDecls.cs:28:41:28:47 | exit Dispose (normal) | | -| cflow.cs:5:17:5:20 | enter Main | cflow.cs:6:5:35:5 | {...} | | -| cflow.cs:5:17:5:20 | exit Main (normal) | cflow.cs:5:17:5:20 | exit Main | | +| VarDecls.cs:28:11:28:11 | {...} | VarDecls.cs:28:11:28:11 | Normal Exit | | +| VarDecls.cs:28:41:28:47 | Entry | VarDecls.cs:28:51:28:53 | {...} | | +| VarDecls.cs:28:41:28:47 | Normal Exit | VarDecls.cs:28:41:28:47 | Exit | | +| VarDecls.cs:28:51:28:53 | {...} | VarDecls.cs:28:41:28:47 | Normal Exit | | +| cflow.cs:5:17:5:20 | Entry | cflow.cs:5:31:5:34 | args | | +| cflow.cs:5:17:5:20 | Normal Exit | cflow.cs:5:17:5:20 | Exit | | +| cflow.cs:5:31:5:34 | args | cflow.cs:6:5:35:5 | {...} | | +| cflow.cs:6:5:35:5 | After {...} | cflow.cs:5:17:5:20 | Normal Exit | | | cflow.cs:6:5:35:5 | {...} | cflow.cs:7:9:7:28 | ... ...; | | -| cflow.cs:7:9:7:28 | ... ...; | cflow.cs:7:17:7:20 | access to parameter args | | -| cflow.cs:7:13:7:27 | Int32 a = ... | cflow.cs:9:9:9:40 | ...; | | +| cflow.cs:7:9:7:28 | ... ...; | cflow.cs:7:13:7:27 | Before Int32 a = ... | | +| cflow.cs:7:9:7:28 | After ... ...; | cflow.cs:9:9:9:40 | ...; | | +| cflow.cs:7:13:7:13 | access to local variable a | cflow.cs:7:17:7:27 | Before access to property Length | | +| cflow.cs:7:13:7:27 | After Int32 a = ... | cflow.cs:7:9:7:28 | After ... ...; | | +| cflow.cs:7:13:7:27 | Before Int32 a = ... | cflow.cs:7:13:7:13 | access to local variable a | | +| cflow.cs:7:13:7:27 | Int32 a = ... | cflow.cs:7:13:7:27 | After Int32 a = ... | | | cflow.cs:7:17:7:20 | access to parameter args | cflow.cs:7:17:7:27 | access to property Length | | -| cflow.cs:7:17:7:27 | access to property Length | cflow.cs:7:13:7:27 | Int32 a = ... | | -| cflow.cs:9:9:9:39 | ... = ... | cflow.cs:11:9:12:49 | if (...) ... | | -| cflow.cs:9:9:9:40 | ...; | cflow.cs:9:13:9:29 | object creation of type ControlFlow | | -| cflow.cs:9:13:9:29 | object creation of type ControlFlow | cflow.cs:9:38:9:38 | access to local variable a | | -| cflow.cs:9:13:9:39 | call to method Switch | cflow.cs:9:9:9:39 | ... = ... | | +| cflow.cs:7:17:7:27 | After access to property Length | cflow.cs:7:13:7:27 | Int32 a = ... | | +| cflow.cs:7:17:7:27 | Before access to property Length | cflow.cs:7:17:7:20 | access to parameter args | | +| cflow.cs:7:17:7:27 | access to property Length | cflow.cs:7:17:7:27 | After access to property Length | | +| cflow.cs:9:9:9:9 | access to local variable a | cflow.cs:9:13:9:39 | Before call to method Switch | | +| cflow.cs:9:9:9:39 | ... = ... | cflow.cs:9:9:9:39 | After ... = ... | | +| cflow.cs:9:9:9:39 | After ... = ... | cflow.cs:9:9:9:40 | After ...; | | +| cflow.cs:9:9:9:39 | Before ... = ... | cflow.cs:9:9:9:9 | access to local variable a | | +| cflow.cs:9:9:9:40 | ...; | cflow.cs:9:9:9:39 | Before ... = ... | | +| cflow.cs:9:9:9:40 | After ...; | cflow.cs:11:9:12:49 | if (...) ... | | +| cflow.cs:9:13:9:29 | After object creation of type ControlFlow | cflow.cs:9:38:9:38 | access to local variable a | | +| cflow.cs:9:13:9:29 | Before object creation of type ControlFlow | cflow.cs:9:13:9:29 | object creation of type ControlFlow | | +| cflow.cs:9:13:9:29 | object creation of type ControlFlow | cflow.cs:9:13:9:29 | After object creation of type ControlFlow | | +| cflow.cs:9:13:9:39 | After call to method Switch | cflow.cs:9:9:9:39 | ... = ... | | +| cflow.cs:9:13:9:39 | Before call to method Switch | cflow.cs:9:13:9:29 | Before object creation of type ControlFlow | | +| cflow.cs:9:13:9:39 | call to method Switch | cflow.cs:9:13:9:39 | After call to method Switch | | | cflow.cs:9:38:9:38 | access to local variable a | cflow.cs:9:13:9:39 | call to method Switch | | -| cflow.cs:11:9:12:49 | if (...) ... | cflow.cs:11:13:11:13 | access to local variable a | | +| cflow.cs:11:9:12:49 | After if (...) ... | cflow.cs:14:9:17:9 | while (...) ... | | +| cflow.cs:11:9:12:49 | if (...) ... | cflow.cs:11:13:11:17 | Before ... > ... | | | cflow.cs:11:13:11:13 | access to local variable a | cflow.cs:11:17:11:17 | 3 | | -| cflow.cs:11:13:11:17 | ... > ... | cflow.cs:12:13:12:49 | ...; | true | -| cflow.cs:11:13:11:17 | ... > ... | cflow.cs:14:9:17:9 | while (...) ... | false | +| cflow.cs:11:13:11:17 | ... > ... | cflow.cs:11:13:11:17 | After ... > ... [false] | false | +| cflow.cs:11:13:11:17 | ... > ... | cflow.cs:11:13:11:17 | After ... > ... [true] | true | +| cflow.cs:11:13:11:17 | After ... > ... [false] | cflow.cs:11:9:12:49 | After if (...) ... | | +| cflow.cs:11:13:11:17 | After ... > ... [true] | cflow.cs:12:13:12:49 | ...; | | +| cflow.cs:11:13:11:17 | Before ... > ... | cflow.cs:11:13:11:13 | access to local variable a | | | cflow.cs:11:17:11:17 | 3 | cflow.cs:11:13:11:17 | ... > ... | | -| cflow.cs:12:13:12:48 | call to method WriteLine | cflow.cs:14:9:17:9 | while (...) ... | | -| cflow.cs:12:13:12:49 | ...; | cflow.cs:12:31:12:47 | "more than a few" | | +| cflow.cs:12:13:12:48 | After call to method WriteLine | cflow.cs:12:13:12:49 | After ...; | | +| cflow.cs:12:13:12:48 | Before call to method WriteLine | cflow.cs:12:31:12:47 | "more than a few" | | +| cflow.cs:12:13:12:48 | call to method WriteLine | cflow.cs:12:13:12:48 | After call to method WriteLine | | +| cflow.cs:12:13:12:49 | ...; | cflow.cs:12:13:12:48 | Before call to method WriteLine | | +| cflow.cs:12:13:12:49 | After ...; | cflow.cs:11:9:12:49 | After if (...) ... | | | cflow.cs:12:31:12:47 | "more than a few" | cflow.cs:12:13:12:48 | call to method WriteLine | | -| cflow.cs:14:9:17:9 | while (...) ... | cflow.cs:14:16:14:16 | access to local variable a | | +| cflow.cs:14:9:17:9 | After while (...) ... | cflow.cs:19:9:22:25 | do ... while (...); | | +| cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | cflow.cs:14:16:14:20 | Before ... > ... | | +| cflow.cs:14:9:17:9 | while (...) ... | cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | | | cflow.cs:14:16:14:16 | access to local variable a | cflow.cs:14:20:14:20 | 0 | | -| cflow.cs:14:16:14:20 | ... > ... | cflow.cs:15:9:17:9 | {...} | true | -| cflow.cs:14:16:14:20 | ... > ... | cflow.cs:19:9:22:25 | do ... while (...); | false | +| cflow.cs:14:16:14:20 | ... > ... | cflow.cs:14:16:14:20 | After ... > ... [false] | false | +| cflow.cs:14:16:14:20 | ... > ... | cflow.cs:14:16:14:20 | After ... > ... [true] | true | +| cflow.cs:14:16:14:20 | After ... > ... [false] | cflow.cs:14:9:17:9 | After while (...) ... | | +| cflow.cs:14:16:14:20 | After ... > ... [true] | cflow.cs:15:9:17:9 | {...} | | +| cflow.cs:14:16:14:20 | Before ... > ... | cflow.cs:14:16:14:16 | access to local variable a | | | cflow.cs:14:20:14:20 | 0 | cflow.cs:14:16:14:20 | ... > ... | | +| cflow.cs:15:9:17:9 | After {...} | cflow.cs:14:9:17:9 | [LoopHeader] while (...) ... | | | cflow.cs:15:9:17:9 | {...} | cflow.cs:16:13:16:41 | ...; | | -| cflow.cs:16:13:16:40 | call to method WriteLine | cflow.cs:14:16:14:16 | access to local variable a | | -| cflow.cs:16:13:16:41 | ...; | cflow.cs:16:31:16:31 | access to local variable a | | +| cflow.cs:16:13:16:40 | After call to method WriteLine | cflow.cs:16:13:16:41 | After ...; | | +| cflow.cs:16:13:16:40 | Before call to method WriteLine | cflow.cs:16:31:16:39 | Before ... * ... | | +| cflow.cs:16:13:16:40 | call to method WriteLine | cflow.cs:16:13:16:40 | After call to method WriteLine | | +| cflow.cs:16:13:16:41 | ...; | cflow.cs:16:13:16:40 | Before call to method WriteLine | | +| cflow.cs:16:13:16:41 | After ...; | cflow.cs:15:9:17:9 | After {...} | | | cflow.cs:16:31:16:31 | access to local variable a | cflow.cs:16:31:16:33 | ...-- | | -| cflow.cs:16:31:16:33 | ...-- | cflow.cs:16:37:16:39 | 100 | | -| cflow.cs:16:31:16:39 | ... * ... | cflow.cs:16:13:16:40 | call to method WriteLine | | +| cflow.cs:16:31:16:33 | ...-- | cflow.cs:16:31:16:33 | After ...-- | | +| cflow.cs:16:31:16:33 | After ...-- | cflow.cs:16:37:16:39 | 100 | | +| cflow.cs:16:31:16:33 | Before ...-- | cflow.cs:16:31:16:31 | access to local variable a | | +| cflow.cs:16:31:16:39 | ... * ... | cflow.cs:16:31:16:39 | After ... * ... | | +| cflow.cs:16:31:16:39 | After ... * ... | cflow.cs:16:13:16:40 | call to method WriteLine | | +| cflow.cs:16:31:16:39 | Before ... * ... | cflow.cs:16:31:16:33 | Before ...-- | | | cflow.cs:16:37:16:39 | 100 | cflow.cs:16:31:16:39 | ... * ... | | +| cflow.cs:19:9:22:25 | After do ... while (...); | cflow.cs:24:9:34:9 | for (...;...;...) ... | | +| cflow.cs:19:9:22:25 | [LoopHeader] do ... while (...); | cflow.cs:22:18:22:23 | Before ... < ... | | | cflow.cs:19:9:22:25 | do ... while (...); | cflow.cs:20:9:22:9 | {...} | | +| cflow.cs:20:9:22:9 | After {...} | cflow.cs:19:9:22:25 | [LoopHeader] do ... while (...); | | | cflow.cs:20:9:22:9 | {...} | cflow.cs:21:13:21:36 | ...; | | -| cflow.cs:21:13:21:35 | call to method WriteLine | cflow.cs:22:18:22:18 | access to local variable a | | -| cflow.cs:21:13:21:36 | ...; | cflow.cs:21:32:21:32 | access to local variable a | | -| cflow.cs:21:31:21:34 | -... | cflow.cs:21:13:21:35 | call to method WriteLine | | +| cflow.cs:21:13:21:35 | After call to method WriteLine | cflow.cs:21:13:21:36 | After ...; | | +| cflow.cs:21:13:21:35 | Before call to method WriteLine | cflow.cs:21:31:21:34 | Before -... | | +| cflow.cs:21:13:21:35 | call to method WriteLine | cflow.cs:21:13:21:35 | After call to method WriteLine | | +| cflow.cs:21:13:21:36 | ...; | cflow.cs:21:13:21:35 | Before call to method WriteLine | | +| cflow.cs:21:13:21:36 | After ...; | cflow.cs:20:9:22:9 | After {...} | | +| cflow.cs:21:31:21:34 | -... | cflow.cs:21:31:21:34 | After -... | | +| cflow.cs:21:31:21:34 | After -... | cflow.cs:21:13:21:35 | call to method WriteLine | | +| cflow.cs:21:31:21:34 | Before -... | cflow.cs:21:32:21:34 | Before ...++ | | | cflow.cs:21:32:21:32 | access to local variable a | cflow.cs:21:32:21:34 | ...++ | | -| cflow.cs:21:32:21:34 | ...++ | cflow.cs:21:31:21:34 | -... | | +| cflow.cs:21:32:21:34 | ...++ | cflow.cs:21:32:21:34 | After ...++ | | +| cflow.cs:21:32:21:34 | After ...++ | cflow.cs:21:31:21:34 | -... | | +| cflow.cs:21:32:21:34 | Before ...++ | cflow.cs:21:32:21:32 | access to local variable a | | | cflow.cs:22:18:22:18 | access to local variable a | cflow.cs:22:22:22:23 | 10 | | -| cflow.cs:22:18:22:23 | ... < ... | cflow.cs:20:9:22:9 | {...} | true | -| cflow.cs:22:18:22:23 | ... < ... | cflow.cs:24:9:34:9 | for (...;...;...) ... | false | +| cflow.cs:22:18:22:23 | ... < ... | cflow.cs:22:18:22:23 | After ... < ... [false] | false | +| cflow.cs:22:18:22:23 | ... < ... | cflow.cs:22:18:22:23 | After ... < ... [true] | true | +| cflow.cs:22:18:22:23 | After ... < ... [false] | cflow.cs:19:9:22:25 | After do ... while (...); | | +| cflow.cs:22:18:22:23 | After ... < ... [true] | cflow.cs:20:9:22:9 | {...} | | +| cflow.cs:22:18:22:23 | Before ... < ... | cflow.cs:22:18:22:18 | access to local variable a | | | cflow.cs:22:22:22:23 | 10 | cflow.cs:22:18:22:23 | ... < ... | | -| cflow.cs:24:9:34:9 | for (...;...;...) ... | cflow.cs:24:22:24:22 | 1 | | -| cflow.cs:24:18:24:22 | Int32 i = ... | cflow.cs:24:25:24:25 | access to local variable i | | +| cflow.cs:24:9:34:9 | After for (...;...;...) ... | cflow.cs:6:5:35:5 | After {...} | | +| cflow.cs:24:9:34:9 | [LoopHeader] for (...;...;...) ... | cflow.cs:24:34:24:36 | Before ...++ | | +| cflow.cs:24:9:34:9 | for (...;...;...) ... | cflow.cs:24:18:24:22 | Before Int32 i = ... | | +| cflow.cs:24:18:24:18 | access to local variable i | cflow.cs:24:22:24:22 | 1 | | +| cflow.cs:24:18:24:22 | After Int32 i = ... | cflow.cs:24:25:24:31 | Before ... <= ... | | +| cflow.cs:24:18:24:22 | Before Int32 i = ... | cflow.cs:24:18:24:18 | access to local variable i | | +| cflow.cs:24:18:24:22 | Int32 i = ... | cflow.cs:24:18:24:22 | After Int32 i = ... | | | cflow.cs:24:22:24:22 | 1 | cflow.cs:24:18:24:22 | Int32 i = ... | | | cflow.cs:24:25:24:25 | access to local variable i | cflow.cs:24:30:24:31 | 20 | | -| cflow.cs:24:25:24:31 | ... <= ... | cflow.cs:5:17:5:20 | exit Main (normal) | false | -| cflow.cs:24:25:24:31 | ... <= ... | cflow.cs:25:9:34:9 | {...} | true | +| cflow.cs:24:25:24:31 | ... <= ... | cflow.cs:24:25:24:31 | After ... <= ... [false] | false | +| cflow.cs:24:25:24:31 | ... <= ... | cflow.cs:24:25:24:31 | After ... <= ... [true] | true | +| cflow.cs:24:25:24:31 | After ... <= ... [false] | cflow.cs:24:9:34:9 | After for (...;...;...) ... | | +| cflow.cs:24:25:24:31 | After ... <= ... [true] | cflow.cs:25:9:34:9 | {...} | | +| cflow.cs:24:25:24:31 | Before ... <= ... | cflow.cs:24:25:24:25 | access to local variable i | | | cflow.cs:24:30:24:31 | 20 | cflow.cs:24:25:24:31 | ... <= ... | | | cflow.cs:24:34:24:34 | access to local variable i | cflow.cs:24:34:24:36 | ...++ | | -| cflow.cs:24:34:24:36 | ...++ | cflow.cs:24:25:24:25 | access to local variable i | | +| cflow.cs:24:34:24:36 | ...++ | cflow.cs:24:34:24:36 | After ...++ | | +| cflow.cs:24:34:24:36 | After ...++ | cflow.cs:24:25:24:31 | Before ... <= ... | | +| cflow.cs:24:34:24:36 | Before ...++ | cflow.cs:24:34:24:34 | access to local variable i | | +| cflow.cs:25:9:34:9 | After {...} | cflow.cs:24:9:34:9 | [LoopHeader] for (...;...;...) ... | | | cflow.cs:25:9:34:9 | {...} | cflow.cs:26:13:33:37 | if (...) ... | | -| cflow.cs:26:13:33:37 | if (...) ... | cflow.cs:26:17:26:17 | access to local variable i | | +| cflow.cs:26:13:33:37 | After if (...) ... | cflow.cs:25:9:34:9 | After {...} | | +| cflow.cs:26:13:33:37 | if (...) ... | cflow.cs:26:17:26:40 | ... && ... | | | cflow.cs:26:17:26:17 | access to local variable i | cflow.cs:26:21:26:21 | 3 | | -| cflow.cs:26:17:26:21 | ... % ... | cflow.cs:26:26:26:26 | 0 | | -| cflow.cs:26:17:26:26 | ... == ... | cflow.cs:26:17:26:40 | [false] ... && ... | false | -| cflow.cs:26:17:26:26 | ... == ... | cflow.cs:26:31:26:31 | access to local variable i | true | -| cflow.cs:26:17:26:40 | [false] ... && ... | cflow.cs:28:18:33:37 | if (...) ... | false | -| cflow.cs:26:17:26:40 | [true] ... && ... | cflow.cs:27:17:27:46 | ...; | true | +| cflow.cs:26:17:26:21 | ... % ... | cflow.cs:26:17:26:21 | After ... % ... | | +| cflow.cs:26:17:26:21 | After ... % ... | cflow.cs:26:26:26:26 | 0 | | +| cflow.cs:26:17:26:21 | Before ... % ... | cflow.cs:26:17:26:17 | access to local variable i | | +| cflow.cs:26:17:26:26 | ... == ... | cflow.cs:26:17:26:26 | After ... == ... [false] | false | +| cflow.cs:26:17:26:26 | ... == ... | cflow.cs:26:17:26:26 | After ... == ... [true] | true | +| cflow.cs:26:17:26:26 | After ... == ... [false] | cflow.cs:26:17:26:40 | After ... && ... [false] | false | +| cflow.cs:26:17:26:26 | After ... == ... [true] | cflow.cs:26:31:26:40 | Before ... == ... | | +| cflow.cs:26:17:26:26 | Before ... == ... | cflow.cs:26:17:26:21 | Before ... % ... | | +| cflow.cs:26:17:26:40 | ... && ... | cflow.cs:26:17:26:26 | Before ... == ... | | +| cflow.cs:26:17:26:40 | After ... && ... [false] | cflow.cs:28:18:33:37 | if (...) ... | | +| cflow.cs:26:17:26:40 | After ... && ... [true] | cflow.cs:27:17:27:46 | ...; | | | cflow.cs:26:21:26:21 | 3 | cflow.cs:26:17:26:21 | ... % ... | | | cflow.cs:26:26:26:26 | 0 | cflow.cs:26:17:26:26 | ... == ... | | | cflow.cs:26:31:26:31 | access to local variable i | cflow.cs:26:35:26:35 | 5 | | -| cflow.cs:26:31:26:35 | ... % ... | cflow.cs:26:40:26:40 | 0 | | -| cflow.cs:26:31:26:40 | ... == ... | cflow.cs:26:17:26:40 | [false] ... && ... | false | -| cflow.cs:26:31:26:40 | ... == ... | cflow.cs:26:17:26:40 | [true] ... && ... | true | +| cflow.cs:26:31:26:35 | ... % ... | cflow.cs:26:31:26:35 | After ... % ... | | +| cflow.cs:26:31:26:35 | After ... % ... | cflow.cs:26:40:26:40 | 0 | | +| cflow.cs:26:31:26:35 | Before ... % ... | cflow.cs:26:31:26:31 | access to local variable i | | +| cflow.cs:26:31:26:40 | ... == ... | cflow.cs:26:31:26:40 | After ... == ... [false] | false | +| cflow.cs:26:31:26:40 | ... == ... | cflow.cs:26:31:26:40 | After ... == ... [true] | true | +| cflow.cs:26:31:26:40 | After ... == ... [false] | cflow.cs:26:17:26:40 | After ... && ... [false] | false | +| cflow.cs:26:31:26:40 | After ... == ... [true] | cflow.cs:26:17:26:40 | After ... && ... [true] | true | +| cflow.cs:26:31:26:40 | Before ... == ... | cflow.cs:26:31:26:35 | Before ... % ... | | | cflow.cs:26:35:26:35 | 5 | cflow.cs:26:31:26:35 | ... % ... | | | cflow.cs:26:40:26:40 | 0 | cflow.cs:26:31:26:40 | ... == ... | | -| cflow.cs:27:17:27:45 | call to method WriteLine | cflow.cs:24:34:24:34 | access to local variable i | | -| cflow.cs:27:17:27:46 | ...; | cflow.cs:27:35:27:44 | "FizzBuzz" | | +| cflow.cs:27:17:27:45 | After call to method WriteLine | cflow.cs:27:17:27:46 | After ...; | | +| cflow.cs:27:17:27:45 | Before call to method WriteLine | cflow.cs:27:35:27:44 | "FizzBuzz" | | +| cflow.cs:27:17:27:45 | call to method WriteLine | cflow.cs:27:17:27:45 | After call to method WriteLine | | +| cflow.cs:27:17:27:46 | ...; | cflow.cs:27:17:27:45 | Before call to method WriteLine | | +| cflow.cs:27:17:27:46 | After ...; | cflow.cs:26:13:33:37 | After if (...) ... | | | cflow.cs:27:35:27:44 | "FizzBuzz" | cflow.cs:27:17:27:45 | call to method WriteLine | | -| cflow.cs:28:18:33:37 | if (...) ... | cflow.cs:28:22:28:22 | access to local variable i | | +| cflow.cs:28:18:33:37 | After if (...) ... | cflow.cs:26:13:33:37 | After if (...) ... | | +| cflow.cs:28:18:33:37 | if (...) ... | cflow.cs:28:22:28:31 | Before ... == ... | | | cflow.cs:28:22:28:22 | access to local variable i | cflow.cs:28:26:28:26 | 3 | | -| cflow.cs:28:22:28:26 | ... % ... | cflow.cs:28:31:28:31 | 0 | | -| cflow.cs:28:22:28:31 | ... == ... | cflow.cs:29:17:29:42 | ...; | true | -| cflow.cs:28:22:28:31 | ... == ... | cflow.cs:30:18:33:37 | if (...) ... | false | +| cflow.cs:28:22:28:26 | ... % ... | cflow.cs:28:22:28:26 | After ... % ... | | +| cflow.cs:28:22:28:26 | After ... % ... | cflow.cs:28:31:28:31 | 0 | | +| cflow.cs:28:22:28:26 | Before ... % ... | cflow.cs:28:22:28:22 | access to local variable i | | +| cflow.cs:28:22:28:31 | ... == ... | cflow.cs:28:22:28:31 | After ... == ... [false] | false | +| cflow.cs:28:22:28:31 | ... == ... | cflow.cs:28:22:28:31 | After ... == ... [true] | true | +| cflow.cs:28:22:28:31 | After ... == ... [false] | cflow.cs:30:18:33:37 | if (...) ... | | +| cflow.cs:28:22:28:31 | After ... == ... [true] | cflow.cs:29:17:29:42 | ...; | | +| cflow.cs:28:22:28:31 | Before ... == ... | cflow.cs:28:22:28:26 | Before ... % ... | | | cflow.cs:28:26:28:26 | 3 | cflow.cs:28:22:28:26 | ... % ... | | | cflow.cs:28:31:28:31 | 0 | cflow.cs:28:22:28:31 | ... == ... | | -| cflow.cs:29:17:29:41 | call to method WriteLine | cflow.cs:24:34:24:34 | access to local variable i | | -| cflow.cs:29:17:29:42 | ...; | cflow.cs:29:35:29:40 | "Fizz" | | +| cflow.cs:29:17:29:41 | After call to method WriteLine | cflow.cs:29:17:29:42 | After ...; | | +| cflow.cs:29:17:29:41 | Before call to method WriteLine | cflow.cs:29:35:29:40 | "Fizz" | | +| cflow.cs:29:17:29:41 | call to method WriteLine | cflow.cs:29:17:29:41 | After call to method WriteLine | | +| cflow.cs:29:17:29:42 | ...; | cflow.cs:29:17:29:41 | Before call to method WriteLine | | +| cflow.cs:29:17:29:42 | After ...; | cflow.cs:28:18:33:37 | After if (...) ... | | | cflow.cs:29:35:29:40 | "Fizz" | cflow.cs:29:17:29:41 | call to method WriteLine | | -| cflow.cs:30:18:33:37 | if (...) ... | cflow.cs:30:22:30:22 | access to local variable i | | +| cflow.cs:30:18:33:37 | After if (...) ... | cflow.cs:28:18:33:37 | After if (...) ... | | +| cflow.cs:30:18:33:37 | if (...) ... | cflow.cs:30:22:30:31 | Before ... == ... | | | cflow.cs:30:22:30:22 | access to local variable i | cflow.cs:30:26:30:26 | 5 | | -| cflow.cs:30:22:30:26 | ... % ... | cflow.cs:30:31:30:31 | 0 | | -| cflow.cs:30:22:30:31 | ... == ... | cflow.cs:31:17:31:42 | ...; | true | -| cflow.cs:30:22:30:31 | ... == ... | cflow.cs:33:17:33:37 | ...; | false | +| cflow.cs:30:22:30:26 | ... % ... | cflow.cs:30:22:30:26 | After ... % ... | | +| cflow.cs:30:22:30:26 | After ... % ... | cflow.cs:30:31:30:31 | 0 | | +| cflow.cs:30:22:30:26 | Before ... % ... | cflow.cs:30:22:30:22 | access to local variable i | | +| cflow.cs:30:22:30:31 | ... == ... | cflow.cs:30:22:30:31 | After ... == ... [false] | false | +| cflow.cs:30:22:30:31 | ... == ... | cflow.cs:30:22:30:31 | After ... == ... [true] | true | +| cflow.cs:30:22:30:31 | After ... == ... [false] | cflow.cs:33:17:33:37 | ...; | | +| cflow.cs:30:22:30:31 | After ... == ... [true] | cflow.cs:31:17:31:42 | ...; | | +| cflow.cs:30:22:30:31 | Before ... == ... | cflow.cs:30:22:30:26 | Before ... % ... | | | cflow.cs:30:26:30:26 | 5 | cflow.cs:30:22:30:26 | ... % ... | | | cflow.cs:30:31:30:31 | 0 | cflow.cs:30:22:30:31 | ... == ... | | -| cflow.cs:31:17:31:41 | call to method WriteLine | cflow.cs:24:34:24:34 | access to local variable i | | -| cflow.cs:31:17:31:42 | ...; | cflow.cs:31:35:31:40 | "Buzz" | | +| cflow.cs:31:17:31:41 | After call to method WriteLine | cflow.cs:31:17:31:42 | After ...; | | +| cflow.cs:31:17:31:41 | Before call to method WriteLine | cflow.cs:31:35:31:40 | "Buzz" | | +| cflow.cs:31:17:31:41 | call to method WriteLine | cflow.cs:31:17:31:41 | After call to method WriteLine | | +| cflow.cs:31:17:31:42 | ...; | cflow.cs:31:17:31:41 | Before call to method WriteLine | | +| cflow.cs:31:17:31:42 | After ...; | cflow.cs:30:18:33:37 | After if (...) ... | | | cflow.cs:31:35:31:40 | "Buzz" | cflow.cs:31:17:31:41 | call to method WriteLine | | -| cflow.cs:33:17:33:36 | call to method WriteLine | cflow.cs:24:34:24:34 | access to local variable i | | -| cflow.cs:33:17:33:37 | ...; | cflow.cs:33:35:33:35 | access to local variable i | | +| cflow.cs:33:17:33:36 | After call to method WriteLine | cflow.cs:33:17:33:37 | After ...; | | +| cflow.cs:33:17:33:36 | Before call to method WriteLine | cflow.cs:33:35:33:35 | access to local variable i | | +| cflow.cs:33:17:33:36 | call to method WriteLine | cflow.cs:33:17:33:36 | After call to method WriteLine | | +| cflow.cs:33:17:33:37 | ...; | cflow.cs:33:17:33:36 | Before call to method WriteLine | | +| cflow.cs:33:17:33:37 | After ...; | cflow.cs:30:18:33:37 | After if (...) ... | | | cflow.cs:33:35:33:35 | access to local variable i | cflow.cs:33:17:33:36 | call to method WriteLine | | -| cflow.cs:37:17:37:22 | enter Switch | cflow.cs:38:5:68:5 | {...} | | -| cflow.cs:37:17:37:22 | exit Switch (abnormal) | cflow.cs:37:17:37:22 | exit Switch | | -| cflow.cs:37:17:37:22 | exit Switch (normal) | cflow.cs:37:17:37:22 | exit Switch | | +| cflow.cs:37:17:37:22 | Entry | cflow.cs:37:28:37:28 | a | | +| cflow.cs:37:17:37:22 | Exceptional Exit | cflow.cs:37:17:37:22 | Exit | | +| cflow.cs:37:17:37:22 | Normal Exit | cflow.cs:37:17:37:22 | Exit | | +| cflow.cs:37:28:37:28 | a | cflow.cs:38:5:68:5 | {...} | | | cflow.cs:38:5:68:5 | {...} | cflow.cs:39:9:50:9 | switch (...) {...} | | +| cflow.cs:39:9:50:9 | After switch (...) {...} | cflow.cs:51:9:59:9 | switch (...) {...} | | | cflow.cs:39:9:50:9 | switch (...) {...} | cflow.cs:39:17:39:17 | access to parameter a | | | cflow.cs:39:17:39:17 | access to parameter a | cflow.cs:41:13:41:19 | case ...: | | +| cflow.cs:41:13:41:19 | After case ...: [match] | cflow.cs:42:17:42:39 | ...; | | +| cflow.cs:41:13:41:19 | After case ...: [no-match] | cflow.cs:44:13:44:19 | case ...: | | | cflow.cs:41:13:41:19 | case ...: | cflow.cs:41:18:41:18 | 1 | | -| cflow.cs:41:18:41:18 | 1 | cflow.cs:42:17:42:39 | ...; | match | -| cflow.cs:41:18:41:18 | 1 | cflow.cs:44:13:44:19 | case ...: | no-match | -| cflow.cs:42:17:42:38 | call to method WriteLine | cflow.cs:43:27:43:27 | 2 | | -| cflow.cs:42:17:42:39 | ...; | cflow.cs:42:35:42:37 | "1" | | +| cflow.cs:41:18:41:18 | 1 | cflow.cs:41:18:41:18 | After 1 [match] | match | +| cflow.cs:41:18:41:18 | 1 | cflow.cs:41:18:41:18 | After 1 [no-match] | no-match | +| cflow.cs:41:18:41:18 | After 1 [match] | cflow.cs:41:13:41:19 | After case ...: [match] | match | +| cflow.cs:41:18:41:18 | After 1 [no-match] | cflow.cs:41:13:41:19 | After case ...: [no-match] | no-match | +| cflow.cs:42:17:42:38 | After call to method WriteLine | cflow.cs:42:17:42:39 | After ...; | | +| cflow.cs:42:17:42:38 | Before call to method WriteLine | cflow.cs:42:35:42:37 | "1" | | +| cflow.cs:42:17:42:38 | call to method WriteLine | cflow.cs:42:17:42:38 | After call to method WriteLine | | +| cflow.cs:42:17:42:39 | ...; | cflow.cs:42:17:42:38 | Before call to method WriteLine | | +| cflow.cs:42:17:42:39 | After ...; | cflow.cs:43:17:43:28 | Before goto case ...; | | | cflow.cs:42:35:42:37 | "1" | cflow.cs:42:17:42:38 | call to method WriteLine | | -| cflow.cs:43:17:43:28 | goto case ...; | cflow.cs:44:13:44:19 | case ...: | goto | +| cflow.cs:43:17:43:28 | Before goto case ...; | cflow.cs:43:27:43:27 | 2 | | +| cflow.cs:43:17:43:28 | goto case ...; | cflow.cs:44:13:44:19 | After case ...: [match] | goto | | cflow.cs:43:27:43:27 | 2 | cflow.cs:43:17:43:28 | goto case ...; | | +| cflow.cs:44:13:44:19 | After case ...: [match] | cflow.cs:45:17:45:39 | ...; | | +| cflow.cs:44:13:44:19 | After case ...: [no-match] | cflow.cs:47:13:47:19 | case ...: | | | cflow.cs:44:13:44:19 | case ...: | cflow.cs:44:18:44:18 | 2 | | -| cflow.cs:44:18:44:18 | 2 | cflow.cs:45:17:45:39 | ...; | match | -| cflow.cs:44:18:44:18 | 2 | cflow.cs:47:13:47:19 | case ...: | no-match | -| cflow.cs:45:17:45:38 | call to method WriteLine | cflow.cs:46:27:46:27 | 1 | | -| cflow.cs:45:17:45:39 | ...; | cflow.cs:45:35:45:37 | "2" | | +| cflow.cs:44:18:44:18 | 2 | cflow.cs:44:18:44:18 | After 2 [match] | match | +| cflow.cs:44:18:44:18 | 2 | cflow.cs:44:18:44:18 | After 2 [no-match] | no-match | +| cflow.cs:44:18:44:18 | After 2 [match] | cflow.cs:44:13:44:19 | After case ...: [match] | match | +| cflow.cs:44:18:44:18 | After 2 [no-match] | cflow.cs:44:13:44:19 | After case ...: [no-match] | no-match | +| cflow.cs:45:17:45:38 | After call to method WriteLine | cflow.cs:45:17:45:39 | After ...; | | +| cflow.cs:45:17:45:38 | Before call to method WriteLine | cflow.cs:45:35:45:37 | "2" | | +| cflow.cs:45:17:45:38 | call to method WriteLine | cflow.cs:45:17:45:38 | After call to method WriteLine | | +| cflow.cs:45:17:45:39 | ...; | cflow.cs:45:17:45:38 | Before call to method WriteLine | | +| cflow.cs:45:17:45:39 | After ...; | cflow.cs:46:17:46:28 | Before goto case ...; | | | cflow.cs:45:35:45:37 | "2" | cflow.cs:45:17:45:38 | call to method WriteLine | | -| cflow.cs:46:17:46:28 | goto case ...; | cflow.cs:41:13:41:19 | case ...: | goto | +| cflow.cs:46:17:46:28 | Before goto case ...; | cflow.cs:46:27:46:27 | 1 | | +| cflow.cs:46:17:46:28 | goto case ...; | cflow.cs:41:13:41:19 | After case ...: [match] | goto | | cflow.cs:46:27:46:27 | 1 | cflow.cs:46:17:46:28 | goto case ...; | | +| cflow.cs:47:13:47:19 | After case ...: [match] | cflow.cs:48:17:48:39 | ...; | | +| cflow.cs:47:13:47:19 | After case ...: [no-match] | cflow.cs:39:9:50:9 | After switch (...) {...} | | | cflow.cs:47:13:47:19 | case ...: | cflow.cs:47:18:47:18 | 3 | | -| cflow.cs:47:18:47:18 | 3 | cflow.cs:48:17:48:39 | ...; | match | -| cflow.cs:47:18:47:18 | 3 | cflow.cs:51:9:59:9 | switch (...) {...} | no-match | -| cflow.cs:48:17:48:38 | call to method WriteLine | cflow.cs:49:17:49:22 | break; | | -| cflow.cs:48:17:48:39 | ...; | cflow.cs:48:35:48:37 | "3" | | +| cflow.cs:47:18:47:18 | 3 | cflow.cs:47:18:47:18 | After 3 [match] | match | +| cflow.cs:47:18:47:18 | 3 | cflow.cs:47:18:47:18 | After 3 [no-match] | no-match | +| cflow.cs:47:18:47:18 | After 3 [match] | cflow.cs:47:13:47:19 | After case ...: [match] | match | +| cflow.cs:47:18:47:18 | After 3 [no-match] | cflow.cs:47:13:47:19 | After case ...: [no-match] | no-match | +| cflow.cs:48:17:48:38 | After call to method WriteLine | cflow.cs:48:17:48:39 | After ...; | | +| cflow.cs:48:17:48:38 | Before call to method WriteLine | cflow.cs:48:35:48:37 | "3" | | +| cflow.cs:48:17:48:38 | call to method WriteLine | cflow.cs:48:17:48:38 | After call to method WriteLine | | +| cflow.cs:48:17:48:39 | ...; | cflow.cs:48:17:48:38 | Before call to method WriteLine | | +| cflow.cs:48:17:48:39 | After ...; | cflow.cs:49:17:49:22 | Before break; | | | cflow.cs:48:35:48:37 | "3" | cflow.cs:48:17:48:38 | call to method WriteLine | | -| cflow.cs:49:17:49:22 | break; | cflow.cs:51:9:59:9 | switch (...) {...} | break | +| cflow.cs:49:17:49:22 | Before break; | cflow.cs:49:17:49:22 | break; | | +| cflow.cs:49:17:49:22 | break; | cflow.cs:39:9:50:9 | After switch (...) {...} | break | +| cflow.cs:51:9:59:9 | After switch (...) {...} | cflow.cs:60:9:66:9 | switch (...) {...} | | | cflow.cs:51:9:59:9 | switch (...) {...} | cflow.cs:51:17:51:17 | access to parameter a | | | cflow.cs:51:17:51:17 | access to parameter a | cflow.cs:53:13:53:20 | case ...: | | +| cflow.cs:53:13:53:20 | After case ...: [match] | cflow.cs:54:17:54:48 | ...; | | +| cflow.cs:53:13:53:20 | After case ...: [no-match] | cflow.cs:56:13:56:20 | default: | | | cflow.cs:53:13:53:20 | case ...: | cflow.cs:53:18:53:19 | 42 | | -| cflow.cs:53:18:53:19 | 42 | cflow.cs:54:17:54:48 | ...; | match | -| cflow.cs:53:18:53:19 | 42 | cflow.cs:56:13:56:20 | default: | no-match | -| cflow.cs:54:17:54:47 | call to method WriteLine | cflow.cs:55:17:55:22 | break; | | -| cflow.cs:54:17:54:48 | ...; | cflow.cs:54:35:54:46 | "The answer" | | +| cflow.cs:53:18:53:19 | 42 | cflow.cs:53:18:53:19 | After 42 [match] | match | +| cflow.cs:53:18:53:19 | 42 | cflow.cs:53:18:53:19 | After 42 [no-match] | no-match | +| cflow.cs:53:18:53:19 | After 42 [match] | cflow.cs:53:13:53:20 | After case ...: [match] | match | +| cflow.cs:53:18:53:19 | After 42 [no-match] | cflow.cs:53:13:53:20 | After case ...: [no-match] | no-match | +| cflow.cs:54:17:54:47 | After call to method WriteLine | cflow.cs:54:17:54:48 | After ...; | | +| cflow.cs:54:17:54:47 | Before call to method WriteLine | cflow.cs:54:35:54:46 | "The answer" | | +| cflow.cs:54:17:54:47 | call to method WriteLine | cflow.cs:54:17:54:47 | After call to method WriteLine | | +| cflow.cs:54:17:54:48 | ...; | cflow.cs:54:17:54:47 | Before call to method WriteLine | | +| cflow.cs:54:17:54:48 | After ...; | cflow.cs:55:17:55:22 | Before break; | | | cflow.cs:54:35:54:46 | "The answer" | cflow.cs:54:17:54:47 | call to method WriteLine | | -| cflow.cs:55:17:55:22 | break; | cflow.cs:60:9:66:9 | switch (...) {...} | break | -| cflow.cs:56:13:56:20 | default: | cflow.cs:57:17:57:52 | ...; | | -| cflow.cs:57:17:57:51 | call to method WriteLine | cflow.cs:58:17:58:22 | break; | | -| cflow.cs:57:17:57:52 | ...; | cflow.cs:57:35:57:50 | "Not the answer" | | +| cflow.cs:55:17:55:22 | Before break; | cflow.cs:55:17:55:22 | break; | | +| cflow.cs:55:17:55:22 | break; | cflow.cs:51:9:59:9 | After switch (...) {...} | break | +| cflow.cs:56:13:56:20 | After default: [match] | cflow.cs:57:17:57:52 | ...; | | +| cflow.cs:56:13:56:20 | default: | cflow.cs:56:13:56:20 | After default: [match] | match | +| cflow.cs:57:17:57:51 | After call to method WriteLine | cflow.cs:57:17:57:52 | After ...; | | +| cflow.cs:57:17:57:51 | Before call to method WriteLine | cflow.cs:57:35:57:50 | "Not the answer" | | +| cflow.cs:57:17:57:51 | call to method WriteLine | cflow.cs:57:17:57:51 | After call to method WriteLine | | +| cflow.cs:57:17:57:52 | ...; | cflow.cs:57:17:57:51 | Before call to method WriteLine | | +| cflow.cs:57:17:57:52 | After ...; | cflow.cs:58:17:58:22 | Before break; | | | cflow.cs:57:35:57:50 | "Not the answer" | cflow.cs:57:17:57:51 | call to method WriteLine | | -| cflow.cs:58:17:58:22 | break; | cflow.cs:60:9:66:9 | switch (...) {...} | break | -| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:60:27:60:31 | this access | | -| cflow.cs:60:17:60:32 | call to method Parse | cflow.cs:62:13:62:19 | case ...: | | -| cflow.cs:60:27:60:31 | access to field Field | cflow.cs:60:17:60:32 | call to method Parse | | +| cflow.cs:58:17:58:22 | Before break; | cflow.cs:58:17:58:22 | break; | | +| cflow.cs:58:17:58:22 | break; | cflow.cs:51:9:59:9 | After switch (...) {...} | break | +| cflow.cs:60:9:66:9 | After switch (...) {...} | cflow.cs:67:9:67:17 | Before return ...; | | +| cflow.cs:60:9:66:9 | switch (...) {...} | cflow.cs:60:17:60:32 | Before call to method Parse | | +| cflow.cs:60:17:60:32 | After call to method Parse | cflow.cs:62:13:62:19 | case ...: | | +| cflow.cs:60:17:60:32 | Before call to method Parse | cflow.cs:60:27:60:31 | Before access to field Field | | +| cflow.cs:60:17:60:32 | call to method Parse | cflow.cs:60:17:60:32 | After call to method Parse | | +| cflow.cs:60:27:60:31 | After access to field Field | cflow.cs:60:17:60:32 | call to method Parse | | +| cflow.cs:60:27:60:31 | Before access to field Field | cflow.cs:60:27:60:31 | this access | | +| cflow.cs:60:27:60:31 | access to field Field | cflow.cs:60:27:60:31 | After access to field Field | | | cflow.cs:60:27:60:31 | this access | cflow.cs:60:27:60:31 | access to field Field | | +| cflow.cs:62:13:62:19 | After case ...: [match] | cflow.cs:63:17:64:55 | if (...) ... | | +| cflow.cs:62:13:62:19 | After case ...: [no-match] | cflow.cs:60:9:66:9 | After switch (...) {...} | | | cflow.cs:62:13:62:19 | case ...: | cflow.cs:62:18:62:18 | 0 | | -| cflow.cs:62:18:62:18 | 0 | cflow.cs:63:17:64:55 | if (...) ... | match | -| cflow.cs:62:18:62:18 | 0 | cflow.cs:67:16:67:16 | access to parameter a | no-match | -| cflow.cs:63:17:64:55 | if (...) ... | cflow.cs:63:23:63:27 | this access | | -| cflow.cs:63:21:63:34 | [false] !... | cflow.cs:65:17:65:22 | break; | false | -| cflow.cs:63:21:63:34 | [true] !... | cflow.cs:64:27:64:54 | object creation of type NullReferenceException | true | -| cflow.cs:63:23:63:27 | access to field Field | cflow.cs:63:32:63:33 | "" | | +| cflow.cs:62:18:62:18 | 0 | cflow.cs:62:18:62:18 | After 0 [match] | match | +| cflow.cs:62:18:62:18 | 0 | cflow.cs:62:18:62:18 | After 0 [no-match] | no-match | +| cflow.cs:62:18:62:18 | After 0 [match] | cflow.cs:62:13:62:19 | After case ...: [match] | match | +| cflow.cs:62:18:62:18 | After 0 [no-match] | cflow.cs:62:13:62:19 | After case ...: [no-match] | no-match | +| cflow.cs:63:17:64:55 | After if (...) ... | cflow.cs:65:17:65:22 | Before break; | | +| cflow.cs:63:17:64:55 | if (...) ... | cflow.cs:63:21:63:34 | !... | | +| cflow.cs:63:21:63:34 | !... | cflow.cs:63:23:63:33 | Before ... == ... | | +| cflow.cs:63:21:63:34 | After !... [false] | cflow.cs:63:17:64:55 | After if (...) ... | | +| cflow.cs:63:21:63:34 | After !... [true] | cflow.cs:64:21:64:55 | Before throw ...; | | +| cflow.cs:63:23:63:27 | After access to field Field | cflow.cs:63:32:63:33 | "" | | +| cflow.cs:63:23:63:27 | Before access to field Field | cflow.cs:63:23:63:27 | this access | | +| cflow.cs:63:23:63:27 | access to field Field | cflow.cs:63:23:63:27 | After access to field Field | | | cflow.cs:63:23:63:27 | this access | cflow.cs:63:23:63:27 | access to field Field | | -| cflow.cs:63:23:63:33 | ... == ... | cflow.cs:63:21:63:34 | [false] !... | true | -| cflow.cs:63:23:63:33 | ... == ... | cflow.cs:63:21:63:34 | [true] !... | false | +| cflow.cs:63:23:63:33 | ... == ... | cflow.cs:63:23:63:33 | After ... == ... [false] | false | +| cflow.cs:63:23:63:33 | ... == ... | cflow.cs:63:23:63:33 | After ... == ... [true] | true | +| cflow.cs:63:23:63:33 | After ... == ... [false] | cflow.cs:63:21:63:34 | After !... [true] | true | +| cflow.cs:63:23:63:33 | After ... == ... [true] | cflow.cs:63:21:63:34 | After !... [false] | false | +| cflow.cs:63:23:63:33 | Before ... == ... | cflow.cs:63:23:63:27 | Before access to field Field | | | cflow.cs:63:32:63:33 | "" | cflow.cs:63:23:63:33 | ... == ... | | -| cflow.cs:64:21:64:55 | throw ...; | cflow.cs:37:17:37:22 | exit Switch (abnormal) | exception | -| cflow.cs:64:27:64:54 | object creation of type NullReferenceException | cflow.cs:64:21:64:55 | throw ...; | | -| cflow.cs:65:17:65:22 | break; | cflow.cs:67:16:67:16 | access to parameter a | break | -| cflow.cs:67:9:67:17 | return ...; | cflow.cs:37:17:37:22 | exit Switch (normal) | return | +| cflow.cs:64:21:64:55 | Before throw ...; | cflow.cs:64:27:64:54 | Before object creation of type NullReferenceException | | +| cflow.cs:64:21:64:55 | throw ...; | cflow.cs:37:17:37:22 | Exceptional Exit | exception | +| cflow.cs:64:27:64:54 | After object creation of type NullReferenceException | cflow.cs:64:21:64:55 | throw ...; | | +| cflow.cs:64:27:64:54 | Before object creation of type NullReferenceException | cflow.cs:64:27:64:54 | object creation of type NullReferenceException | | +| cflow.cs:64:27:64:54 | object creation of type NullReferenceException | cflow.cs:64:27:64:54 | After object creation of type NullReferenceException | | +| cflow.cs:65:17:65:22 | Before break; | cflow.cs:65:17:65:22 | break; | | +| cflow.cs:65:17:65:22 | break; | cflow.cs:60:9:66:9 | After switch (...) {...} | break | +| cflow.cs:67:9:67:17 | Before return ...; | cflow.cs:67:16:67:16 | access to parameter a | | +| cflow.cs:67:9:67:17 | return ...; | cflow.cs:37:17:37:22 | Normal Exit | return | | cflow.cs:67:16:67:16 | access to parameter a | cflow.cs:67:9:67:17 | return ...; | | -| cflow.cs:70:18:70:18 | enter M | cflow.cs:71:5:82:5 | {...} | | -| cflow.cs:70:18:70:18 | exit M (normal) | cflow.cs:70:18:70:18 | exit M | | +| cflow.cs:70:18:70:18 | Entry | cflow.cs:70:27:70:27 | s | | +| cflow.cs:70:18:70:18 | Normal Exit | cflow.cs:70:18:70:18 | Exit | | +| cflow.cs:70:27:70:27 | s | cflow.cs:71:5:82:5 | {...} | | +| cflow.cs:71:5:82:5 | After {...} | cflow.cs:70:18:70:18 | Normal Exit | | | cflow.cs:71:5:82:5 | {...} | cflow.cs:72:9:73:19 | if (...) ... | | -| cflow.cs:72:9:73:19 | if (...) ... | cflow.cs:72:13:72:13 | access to parameter s | | +| cflow.cs:72:9:73:19 | After if (...) ... | cflow.cs:74:9:81:9 | if (...) ... | | +| cflow.cs:72:9:73:19 | if (...) ... | cflow.cs:72:13:72:21 | Before ... == ... | | | cflow.cs:72:13:72:13 | access to parameter s | cflow.cs:72:18:72:21 | null | | -| cflow.cs:72:13:72:21 | ... == ... | cflow.cs:73:13:73:19 | return ...; | true | -| cflow.cs:72:13:72:21 | ... == ... | cflow.cs:74:9:81:9 | if (...) ... | false | +| cflow.cs:72:13:72:21 | ... == ... | cflow.cs:72:13:72:21 | After ... == ... [false] | false | +| cflow.cs:72:13:72:21 | ... == ... | cflow.cs:72:13:72:21 | After ... == ... [true] | true | +| cflow.cs:72:13:72:21 | After ... == ... [false] | cflow.cs:72:9:73:19 | After if (...) ... | | +| cflow.cs:72:13:72:21 | After ... == ... [true] | cflow.cs:73:13:73:19 | Before return ...; | | +| cflow.cs:72:13:72:21 | Before ... == ... | cflow.cs:72:13:72:13 | access to parameter s | | | cflow.cs:72:18:72:21 | null | cflow.cs:72:13:72:21 | ... == ... | | -| cflow.cs:73:13:73:19 | return ...; | cflow.cs:70:18:70:18 | exit M (normal) | return | -| cflow.cs:74:9:81:9 | if (...) ... | cflow.cs:74:13:74:13 | access to parameter s | | +| cflow.cs:73:13:73:19 | Before return ...; | cflow.cs:73:13:73:19 | return ...; | | +| cflow.cs:73:13:73:19 | return ...; | cflow.cs:70:18:70:18 | Normal Exit | return | +| cflow.cs:74:9:81:9 | After if (...) ... | cflow.cs:71:5:82:5 | After {...} | | +| cflow.cs:74:9:81:9 | if (...) ... | cflow.cs:74:13:74:24 | Before ... > ... | | | cflow.cs:74:13:74:13 | access to parameter s | cflow.cs:74:13:74:20 | access to property Length | | -| cflow.cs:74:13:74:20 | access to property Length | cflow.cs:74:24:74:24 | 0 | | -| cflow.cs:74:13:74:24 | ... > ... | cflow.cs:75:9:77:9 | {...} | true | -| cflow.cs:74:13:74:24 | ... > ... | cflow.cs:79:9:81:9 | {...} | false | +| cflow.cs:74:13:74:20 | After access to property Length | cflow.cs:74:24:74:24 | 0 | | +| cflow.cs:74:13:74:20 | Before access to property Length | cflow.cs:74:13:74:13 | access to parameter s | | +| cflow.cs:74:13:74:20 | access to property Length | cflow.cs:74:13:74:20 | After access to property Length | | +| cflow.cs:74:13:74:24 | ... > ... | cflow.cs:74:13:74:24 | After ... > ... [false] | false | +| cflow.cs:74:13:74:24 | ... > ... | cflow.cs:74:13:74:24 | After ... > ... [true] | true | +| cflow.cs:74:13:74:24 | After ... > ... [false] | cflow.cs:79:9:81:9 | {...} | | +| cflow.cs:74:13:74:24 | After ... > ... [true] | cflow.cs:75:9:77:9 | {...} | | +| cflow.cs:74:13:74:24 | Before ... > ... | cflow.cs:74:13:74:20 | Before access to property Length | | | cflow.cs:74:24:74:24 | 0 | cflow.cs:74:13:74:24 | ... > ... | | +| cflow.cs:75:9:77:9 | After {...} | cflow.cs:74:9:81:9 | After if (...) ... | | | cflow.cs:75:9:77:9 | {...} | cflow.cs:76:13:76:33 | ...; | | -| cflow.cs:76:13:76:32 | call to method WriteLine | cflow.cs:70:18:70:18 | exit M (normal) | | -| cflow.cs:76:13:76:33 | ...; | cflow.cs:76:31:76:31 | access to parameter s | | +| cflow.cs:76:13:76:32 | After call to method WriteLine | cflow.cs:76:13:76:33 | After ...; | | +| cflow.cs:76:13:76:32 | Before call to method WriteLine | cflow.cs:76:31:76:31 | access to parameter s | | +| cflow.cs:76:13:76:32 | call to method WriteLine | cflow.cs:76:13:76:32 | After call to method WriteLine | | +| cflow.cs:76:13:76:33 | ...; | cflow.cs:76:13:76:32 | Before call to method WriteLine | | +| cflow.cs:76:13:76:33 | After ...; | cflow.cs:75:9:77:9 | After {...} | | | cflow.cs:76:31:76:31 | access to parameter s | cflow.cs:76:13:76:32 | call to method WriteLine | | +| cflow.cs:79:9:81:9 | After {...} | cflow.cs:74:9:81:9 | After if (...) ... | | | cflow.cs:79:9:81:9 | {...} | cflow.cs:80:13:80:48 | ...; | | -| cflow.cs:80:13:80:47 | call to method WriteLine | cflow.cs:70:18:70:18 | exit M (normal) | | -| cflow.cs:80:13:80:48 | ...; | cflow.cs:80:31:80:46 | "" | | +| cflow.cs:80:13:80:47 | After call to method WriteLine | cflow.cs:80:13:80:48 | After ...; | | +| cflow.cs:80:13:80:47 | Before call to method WriteLine | cflow.cs:80:31:80:46 | "" | | +| cflow.cs:80:13:80:47 | call to method WriteLine | cflow.cs:80:13:80:47 | After call to method WriteLine | | +| cflow.cs:80:13:80:48 | ...; | cflow.cs:80:13:80:47 | Before call to method WriteLine | | +| cflow.cs:80:13:80:48 | After ...; | cflow.cs:79:9:81:9 | After {...} | | | cflow.cs:80:31:80:46 | "" | cflow.cs:80:13:80:47 | call to method WriteLine | | -| cflow.cs:84:18:84:19 | enter M2 | cflow.cs:85:5:88:5 | {...} | | -| cflow.cs:84:18:84:19 | exit M2 (normal) | cflow.cs:84:18:84:19 | exit M2 | | +| cflow.cs:84:18:84:19 | Entry | cflow.cs:84:28:84:28 | s | | +| cflow.cs:84:18:84:19 | Normal Exit | cflow.cs:84:18:84:19 | Exit | | +| cflow.cs:84:28:84:28 | s | cflow.cs:85:5:88:5 | {...} | | +| cflow.cs:85:5:88:5 | After {...} | cflow.cs:84:18:84:19 | Normal Exit | | | cflow.cs:85:5:88:5 | {...} | cflow.cs:86:9:87:33 | if (...) ... | | -| cflow.cs:86:9:87:33 | if (...) ... | cflow.cs:86:13:86:13 | access to parameter s | | +| cflow.cs:86:9:87:33 | After if (...) ... | cflow.cs:85:5:88:5 | After {...} | | +| cflow.cs:86:9:87:33 | if (...) ... | cflow.cs:86:13:86:37 | ... && ... | | | cflow.cs:86:13:86:13 | access to parameter s | cflow.cs:86:18:86:21 | null | | -| cflow.cs:86:13:86:21 | ... != ... | cflow.cs:86:13:86:37 | [false] ... && ... | false | -| cflow.cs:86:13:86:21 | ... != ... | cflow.cs:86:26:86:26 | access to parameter s | true | -| cflow.cs:86:13:86:37 | [false] ... && ... | cflow.cs:84:18:84:19 | exit M2 (normal) | false | -| cflow.cs:86:13:86:37 | [true] ... && ... | cflow.cs:87:13:87:33 | ...; | true | +| cflow.cs:86:13:86:21 | ... != ... | cflow.cs:86:13:86:21 | After ... != ... [false] | false | +| cflow.cs:86:13:86:21 | ... != ... | cflow.cs:86:13:86:21 | After ... != ... [true] | true | +| cflow.cs:86:13:86:21 | After ... != ... [false] | cflow.cs:86:13:86:37 | After ... && ... [false] | false | +| cflow.cs:86:13:86:21 | After ... != ... [true] | cflow.cs:86:26:86:37 | Before ... > ... | | +| cflow.cs:86:13:86:21 | Before ... != ... | cflow.cs:86:13:86:13 | access to parameter s | | +| cflow.cs:86:13:86:37 | ... && ... | cflow.cs:86:13:86:21 | Before ... != ... | | +| cflow.cs:86:13:86:37 | After ... && ... [false] | cflow.cs:86:9:87:33 | After if (...) ... | | +| cflow.cs:86:13:86:37 | After ... && ... [true] | cflow.cs:87:13:87:33 | ...; | | | cflow.cs:86:18:86:21 | null | cflow.cs:86:13:86:21 | ... != ... | | | cflow.cs:86:26:86:26 | access to parameter s | cflow.cs:86:26:86:33 | access to property Length | | -| cflow.cs:86:26:86:33 | access to property Length | cflow.cs:86:37:86:37 | 0 | | -| cflow.cs:86:26:86:37 | ... > ... | cflow.cs:86:13:86:37 | [false] ... && ... | false | -| cflow.cs:86:26:86:37 | ... > ... | cflow.cs:86:13:86:37 | [true] ... && ... | true | +| cflow.cs:86:26:86:33 | After access to property Length | cflow.cs:86:37:86:37 | 0 | | +| cflow.cs:86:26:86:33 | Before access to property Length | cflow.cs:86:26:86:26 | access to parameter s | | +| cflow.cs:86:26:86:33 | access to property Length | cflow.cs:86:26:86:33 | After access to property Length | | +| cflow.cs:86:26:86:37 | ... > ... | cflow.cs:86:26:86:37 | After ... > ... [false] | false | +| cflow.cs:86:26:86:37 | ... > ... | cflow.cs:86:26:86:37 | After ... > ... [true] | true | +| cflow.cs:86:26:86:37 | After ... > ... [false] | cflow.cs:86:13:86:37 | After ... && ... [false] | false | +| cflow.cs:86:26:86:37 | After ... > ... [true] | cflow.cs:86:13:86:37 | After ... && ... [true] | true | +| cflow.cs:86:26:86:37 | Before ... > ... | cflow.cs:86:26:86:33 | Before access to property Length | | | cflow.cs:86:37:86:37 | 0 | cflow.cs:86:26:86:37 | ... > ... | | -| cflow.cs:87:13:87:32 | call to method WriteLine | cflow.cs:84:18:84:19 | exit M2 (normal) | | -| cflow.cs:87:13:87:33 | ...; | cflow.cs:87:31:87:31 | access to parameter s | | +| cflow.cs:87:13:87:32 | After call to method WriteLine | cflow.cs:87:13:87:33 | After ...; | | +| cflow.cs:87:13:87:32 | Before call to method WriteLine | cflow.cs:87:31:87:31 | access to parameter s | | +| cflow.cs:87:13:87:32 | call to method WriteLine | cflow.cs:87:13:87:32 | After call to method WriteLine | | +| cflow.cs:87:13:87:33 | ...; | cflow.cs:87:13:87:32 | Before call to method WriteLine | | +| cflow.cs:87:13:87:33 | After ...; | cflow.cs:86:9:87:33 | After if (...) ... | | | cflow.cs:87:31:87:31 | access to parameter s | cflow.cs:87:13:87:32 | call to method WriteLine | | -| cflow.cs:90:18:90:19 | enter M3 | cflow.cs:91:5:104:5 | {...} | | -| cflow.cs:90:18:90:19 | exit M3 (abnormal) | cflow.cs:90:18:90:19 | exit M3 | | -| cflow.cs:90:18:90:19 | exit M3 (normal) | cflow.cs:90:18:90:19 | exit M3 | | +| cflow.cs:90:18:90:19 | Entry | cflow.cs:90:28:90:28 | s | | +| cflow.cs:90:18:90:19 | Exceptional Exit | cflow.cs:90:18:90:19 | Exit | | +| cflow.cs:90:18:90:19 | Normal Exit | cflow.cs:90:18:90:19 | Exit | | +| cflow.cs:90:28:90:28 | s | cflow.cs:91:5:104:5 | {...} | | +| cflow.cs:91:5:104:5 | After {...} | cflow.cs:90:18:90:19 | Normal Exit | | | cflow.cs:91:5:104:5 | {...} | cflow.cs:92:9:93:49 | if (...) ... | | -| cflow.cs:92:9:93:49 | if (...) ... | cflow.cs:92:20:92:20 | access to parameter s | | -| cflow.cs:92:13:92:27 | call to method Equals | cflow.cs:93:45:93:47 | "s" | true | -| cflow.cs:92:13:92:27 | call to method Equals | cflow.cs:94:9:94:29 | ...; | false | +| cflow.cs:92:9:93:49 | After if (...) ... | cflow.cs:94:9:94:29 | ...; | | +| cflow.cs:92:9:93:49 | if (...) ... | cflow.cs:92:13:92:27 | Before call to method Equals | | +| cflow.cs:92:13:92:27 | After call to method Equals [false] | cflow.cs:92:9:93:49 | After if (...) ... | | +| cflow.cs:92:13:92:27 | After call to method Equals [true] | cflow.cs:93:13:93:49 | Before throw ...; | | +| cflow.cs:92:13:92:27 | Before call to method Equals | cflow.cs:92:20:92:20 | access to parameter s | | +| cflow.cs:92:13:92:27 | call to method Equals | cflow.cs:92:13:92:27 | After call to method Equals [false] | false | +| cflow.cs:92:13:92:27 | call to method Equals | cflow.cs:92:13:92:27 | After call to method Equals [true] | true | | cflow.cs:92:20:92:20 | access to parameter s | cflow.cs:92:23:92:26 | null | | | cflow.cs:92:23:92:26 | null | cflow.cs:92:13:92:27 | call to method Equals | | -| cflow.cs:93:13:93:49 | throw ...; | cflow.cs:90:18:90:19 | exit M3 (abnormal) | exception | -| cflow.cs:93:19:93:48 | object creation of type ArgumentNullException | cflow.cs:93:13:93:49 | throw ...; | | +| cflow.cs:93:13:93:49 | Before throw ...; | cflow.cs:93:19:93:48 | Before object creation of type ArgumentNullException | | +| cflow.cs:93:13:93:49 | throw ...; | cflow.cs:90:18:90:19 | Exceptional Exit | exception | +| cflow.cs:93:19:93:48 | After object creation of type ArgumentNullException | cflow.cs:93:13:93:49 | throw ...; | | +| cflow.cs:93:19:93:48 | Before object creation of type ArgumentNullException | cflow.cs:93:45:93:47 | "s" | | +| cflow.cs:93:19:93:48 | object creation of type ArgumentNullException | cflow.cs:93:19:93:48 | After object creation of type ArgumentNullException | | | cflow.cs:93:45:93:47 | "s" | cflow.cs:93:19:93:48 | object creation of type ArgumentNullException | | -| cflow.cs:94:9:94:28 | call to method WriteLine | cflow.cs:96:9:97:55 | if (...) ... | | -| cflow.cs:94:9:94:29 | ...; | cflow.cs:94:27:94:27 | access to parameter s | | +| cflow.cs:94:9:94:28 | After call to method WriteLine | cflow.cs:94:9:94:29 | After ...; | | +| cflow.cs:94:9:94:28 | Before call to method WriteLine | cflow.cs:94:27:94:27 | access to parameter s | | +| cflow.cs:94:9:94:28 | call to method WriteLine | cflow.cs:94:9:94:28 | After call to method WriteLine | | +| cflow.cs:94:9:94:29 | ...; | cflow.cs:94:9:94:28 | Before call to method WriteLine | | +| cflow.cs:94:9:94:29 | After ...; | cflow.cs:96:9:97:55 | if (...) ... | | | cflow.cs:94:27:94:27 | access to parameter s | cflow.cs:94:9:94:28 | call to method WriteLine | | -| cflow.cs:96:9:97:55 | if (...) ... | cflow.cs:96:13:96:17 | this access | | -| cflow.cs:96:13:96:17 | access to field Field | cflow.cs:96:22:96:25 | null | | +| cflow.cs:96:9:97:55 | After if (...) ... | cflow.cs:99:9:100:42 | if (...) ... | | +| cflow.cs:96:9:97:55 | if (...) ... | cflow.cs:96:13:96:25 | Before ... != ... | | +| cflow.cs:96:13:96:17 | After access to field Field | cflow.cs:96:22:96:25 | null | | +| cflow.cs:96:13:96:17 | Before access to field Field | cflow.cs:96:13:96:17 | this access | | +| cflow.cs:96:13:96:17 | access to field Field | cflow.cs:96:13:96:17 | After access to field Field | | | cflow.cs:96:13:96:17 | this access | cflow.cs:96:13:96:17 | access to field Field | | -| cflow.cs:96:13:96:25 | ... != ... | cflow.cs:97:13:97:55 | ...; | true | -| cflow.cs:96:13:96:25 | ... != ... | cflow.cs:99:9:100:42 | if (...) ... | false | +| cflow.cs:96:13:96:25 | ... != ... | cflow.cs:96:13:96:25 | After ... != ... [false] | false | +| cflow.cs:96:13:96:25 | ... != ... | cflow.cs:96:13:96:25 | After ... != ... [true] | true | +| cflow.cs:96:13:96:25 | After ... != ... [false] | cflow.cs:96:9:97:55 | After if (...) ... | | +| cflow.cs:96:13:96:25 | After ... != ... [true] | cflow.cs:97:13:97:55 | ...; | | +| cflow.cs:96:13:96:25 | Before ... != ... | cflow.cs:96:13:96:17 | Before access to field Field | | | cflow.cs:96:22:96:25 | null | cflow.cs:96:13:96:25 | ... != ... | | -| cflow.cs:97:13:97:54 | call to method WriteLine | cflow.cs:99:9:100:42 | if (...) ... | | -| cflow.cs:97:13:97:55 | ...; | cflow.cs:97:31:97:47 | object creation of type ControlFlow | | -| cflow.cs:97:31:97:47 | object creation of type ControlFlow | cflow.cs:97:31:97:53 | access to field Field | | -| cflow.cs:97:31:97:53 | access to field Field | cflow.cs:97:13:97:54 | call to method WriteLine | | -| cflow.cs:99:9:100:42 | if (...) ... | cflow.cs:99:13:99:17 | this access | | -| cflow.cs:99:13:99:17 | access to field Field | cflow.cs:99:22:99:25 | null | | +| cflow.cs:97:13:97:54 | After call to method WriteLine | cflow.cs:97:13:97:55 | After ...; | | +| cflow.cs:97:13:97:54 | Before call to method WriteLine | cflow.cs:97:31:97:53 | Before access to field Field | | +| cflow.cs:97:13:97:54 | call to method WriteLine | cflow.cs:97:13:97:54 | After call to method WriteLine | | +| cflow.cs:97:13:97:55 | ...; | cflow.cs:97:13:97:54 | Before call to method WriteLine | | +| cflow.cs:97:13:97:55 | After ...; | cflow.cs:96:9:97:55 | After if (...) ... | | +| cflow.cs:97:31:97:47 | After object creation of type ControlFlow | cflow.cs:97:31:97:53 | access to field Field | | +| cflow.cs:97:31:97:47 | Before object creation of type ControlFlow | cflow.cs:97:31:97:47 | object creation of type ControlFlow | | +| cflow.cs:97:31:97:47 | object creation of type ControlFlow | cflow.cs:97:31:97:47 | After object creation of type ControlFlow | | +| cflow.cs:97:31:97:53 | After access to field Field | cflow.cs:97:13:97:54 | call to method WriteLine | | +| cflow.cs:97:31:97:53 | Before access to field Field | cflow.cs:97:31:97:47 | Before object creation of type ControlFlow | | +| cflow.cs:97:31:97:53 | access to field Field | cflow.cs:97:31:97:53 | After access to field Field | | +| cflow.cs:99:9:100:42 | After if (...) ... | cflow.cs:102:9:103:36 | if (...) ... | | +| cflow.cs:99:9:100:42 | if (...) ... | cflow.cs:99:13:99:25 | Before ... != ... | | +| cflow.cs:99:13:99:17 | After access to field Field | cflow.cs:99:22:99:25 | null | | +| cflow.cs:99:13:99:17 | Before access to field Field | cflow.cs:99:13:99:17 | this access | | +| cflow.cs:99:13:99:17 | access to field Field | cflow.cs:99:13:99:17 | After access to field Field | | | cflow.cs:99:13:99:17 | this access | cflow.cs:99:13:99:17 | access to field Field | | -| cflow.cs:99:13:99:25 | ... != ... | cflow.cs:100:13:100:42 | ...; | true | -| cflow.cs:99:13:99:25 | ... != ... | cflow.cs:102:9:103:36 | if (...) ... | false | +| cflow.cs:99:13:99:25 | ... != ... | cflow.cs:99:13:99:25 | After ... != ... [false] | false | +| cflow.cs:99:13:99:25 | ... != ... | cflow.cs:99:13:99:25 | After ... != ... [true] | true | +| cflow.cs:99:13:99:25 | After ... != ... [false] | cflow.cs:99:9:100:42 | After if (...) ... | | +| cflow.cs:99:13:99:25 | After ... != ... [true] | cflow.cs:100:13:100:42 | ...; | | +| cflow.cs:99:13:99:25 | Before ... != ... | cflow.cs:99:13:99:17 | Before access to field Field | | | cflow.cs:99:22:99:25 | null | cflow.cs:99:13:99:25 | ... != ... | | -| cflow.cs:100:13:100:41 | call to method WriteLine | cflow.cs:102:9:103:36 | if (...) ... | | -| cflow.cs:100:13:100:42 | ...; | cflow.cs:100:31:100:34 | this access | | +| cflow.cs:100:13:100:41 | After call to method WriteLine | cflow.cs:100:13:100:42 | After ...; | | +| cflow.cs:100:13:100:41 | Before call to method WriteLine | cflow.cs:100:31:100:40 | Before access to field Field | | +| cflow.cs:100:13:100:41 | call to method WriteLine | cflow.cs:100:13:100:41 | After call to method WriteLine | | +| cflow.cs:100:13:100:42 | ...; | cflow.cs:100:13:100:41 | Before call to method WriteLine | | +| cflow.cs:100:13:100:42 | After ...; | cflow.cs:99:9:100:42 | After if (...) ... | | | cflow.cs:100:31:100:34 | this access | cflow.cs:100:31:100:40 | access to field Field | | -| cflow.cs:100:31:100:40 | access to field Field | cflow.cs:100:13:100:41 | call to method WriteLine | | -| cflow.cs:102:9:103:36 | if (...) ... | cflow.cs:102:13:102:16 | this access | | +| cflow.cs:100:31:100:40 | After access to field Field | cflow.cs:100:13:100:41 | call to method WriteLine | | +| cflow.cs:100:31:100:40 | Before access to field Field | cflow.cs:100:31:100:34 | this access | | +| cflow.cs:100:31:100:40 | access to field Field | cflow.cs:100:31:100:40 | After access to field Field | | +| cflow.cs:102:9:103:36 | After if (...) ... | cflow.cs:91:5:104:5 | After {...} | | +| cflow.cs:102:9:103:36 | if (...) ... | cflow.cs:102:13:102:29 | Before ... != ... | | | cflow.cs:102:13:102:16 | this access | cflow.cs:102:13:102:21 | access to property Prop | | -| cflow.cs:102:13:102:21 | access to property Prop | cflow.cs:102:26:102:29 | null | | -| cflow.cs:102:13:102:29 | ... != ... | cflow.cs:90:18:90:19 | exit M3 (normal) | false | -| cflow.cs:102:13:102:29 | ... != ... | cflow.cs:103:13:103:36 | ...; | true | +| cflow.cs:102:13:102:21 | After access to property Prop | cflow.cs:102:26:102:29 | null | | +| cflow.cs:102:13:102:21 | Before access to property Prop | cflow.cs:102:13:102:16 | this access | | +| cflow.cs:102:13:102:21 | access to property Prop | cflow.cs:102:13:102:21 | After access to property Prop | | +| cflow.cs:102:13:102:29 | ... != ... | cflow.cs:102:13:102:29 | After ... != ... [false] | false | +| cflow.cs:102:13:102:29 | ... != ... | cflow.cs:102:13:102:29 | After ... != ... [true] | true | +| cflow.cs:102:13:102:29 | After ... != ... [false] | cflow.cs:102:9:103:36 | After if (...) ... | | +| cflow.cs:102:13:102:29 | After ... != ... [true] | cflow.cs:103:13:103:36 | ...; | | +| cflow.cs:102:13:102:29 | Before ... != ... | cflow.cs:102:13:102:21 | Before access to property Prop | | | cflow.cs:102:26:102:29 | null | cflow.cs:102:13:102:29 | ... != ... | | -| cflow.cs:103:13:103:35 | call to method WriteLine | cflow.cs:90:18:90:19 | exit M3 (normal) | | -| cflow.cs:103:13:103:36 | ...; | cflow.cs:103:31:103:34 | this access | | -| cflow.cs:103:31:103:34 | access to property Prop | cflow.cs:103:13:103:35 | call to method WriteLine | | +| cflow.cs:103:13:103:35 | After call to method WriteLine | cflow.cs:103:13:103:36 | After ...; | | +| cflow.cs:103:13:103:35 | Before call to method WriteLine | cflow.cs:103:31:103:34 | Before access to property Prop | | +| cflow.cs:103:13:103:35 | call to method WriteLine | cflow.cs:103:13:103:35 | After call to method WriteLine | | +| cflow.cs:103:13:103:36 | ...; | cflow.cs:103:13:103:35 | Before call to method WriteLine | | +| cflow.cs:103:13:103:36 | After ...; | cflow.cs:102:9:103:36 | After if (...) ... | | +| cflow.cs:103:31:103:34 | After access to property Prop | cflow.cs:103:13:103:35 | call to method WriteLine | | +| cflow.cs:103:31:103:34 | Before access to property Prop | cflow.cs:103:31:103:34 | this access | | +| cflow.cs:103:31:103:34 | access to property Prop | cflow.cs:103:31:103:34 | After access to property Prop | | | cflow.cs:103:31:103:34 | this access | cflow.cs:103:31:103:34 | access to property Prop | | -| cflow.cs:106:18:106:19 | enter M4 | cflow.cs:107:5:117:5 | {...} | | -| cflow.cs:106:18:106:19 | exit M4 (normal) | cflow.cs:106:18:106:19 | exit M4 | | +| cflow.cs:106:18:106:19 | Entry | cflow.cs:106:28:106:28 | s | | +| cflow.cs:106:18:106:19 | Normal Exit | cflow.cs:106:18:106:19 | Exit | | +| cflow.cs:106:28:106:28 | s | cflow.cs:107:5:117:5 | {...} | | +| cflow.cs:107:5:117:5 | After {...} | cflow.cs:106:18:106:19 | Normal Exit | | | cflow.cs:107:5:117:5 | {...} | cflow.cs:108:9:115:9 | if (...) ... | | -| cflow.cs:108:9:115:9 | if (...) ... | cflow.cs:108:13:108:13 | access to parameter s | | +| cflow.cs:108:9:115:9 | After if (...) ... | cflow.cs:116:9:116:29 | ...; | | +| cflow.cs:108:9:115:9 | if (...) ... | cflow.cs:108:13:108:21 | Before ... != ... | | | cflow.cs:108:13:108:13 | access to parameter s | cflow.cs:108:18:108:21 | null | | -| cflow.cs:108:13:108:21 | ... != ... | cflow.cs:109:9:115:9 | {...} | true | -| cflow.cs:108:13:108:21 | ... != ... | cflow.cs:116:9:116:29 | ...; | false | +| cflow.cs:108:13:108:21 | ... != ... | cflow.cs:108:13:108:21 | After ... != ... [false] | false | +| cflow.cs:108:13:108:21 | ... != ... | cflow.cs:108:13:108:21 | After ... != ... [true] | true | +| cflow.cs:108:13:108:21 | After ... != ... [false] | cflow.cs:108:9:115:9 | After if (...) ... | | +| cflow.cs:108:13:108:21 | After ... != ... [true] | cflow.cs:109:9:115:9 | {...} | | +| cflow.cs:108:13:108:21 | Before ... != ... | cflow.cs:108:13:108:13 | access to parameter s | | | cflow.cs:108:18:108:21 | null | cflow.cs:108:13:108:21 | ... != ... | | | cflow.cs:109:9:115:9 | {...} | cflow.cs:110:13:113:13 | while (...) ... | | -| cflow.cs:110:13:113:13 | while (...) ... | cflow.cs:110:20:110:23 | true | | -| cflow.cs:110:20:110:23 | true | cflow.cs:111:13:113:13 | {...} | true | +| cflow.cs:110:13:113:13 | [LoopHeader] while (...) ... | cflow.cs:110:20:110:23 | true | | +| cflow.cs:110:13:113:13 | while (...) ... | cflow.cs:110:13:113:13 | [LoopHeader] while (...) ... | | +| cflow.cs:110:20:110:23 | After true [true] | cflow.cs:111:13:113:13 | {...} | | +| cflow.cs:110:20:110:23 | true | cflow.cs:110:20:110:23 | After true [true] | true | +| cflow.cs:111:13:113:13 | After {...} | cflow.cs:110:13:113:13 | [LoopHeader] while (...) ... | | | cflow.cs:111:13:113:13 | {...} | cflow.cs:112:17:112:37 | ...; | | -| cflow.cs:112:17:112:36 | call to method WriteLine | cflow.cs:110:20:110:23 | true | | -| cflow.cs:112:17:112:37 | ...; | cflow.cs:112:35:112:35 | access to parameter s | | +| cflow.cs:112:17:112:36 | After call to method WriteLine | cflow.cs:112:17:112:37 | After ...; | | +| cflow.cs:112:17:112:36 | Before call to method WriteLine | cflow.cs:112:35:112:35 | access to parameter s | | +| cflow.cs:112:17:112:36 | call to method WriteLine | cflow.cs:112:17:112:36 | After call to method WriteLine | | +| cflow.cs:112:17:112:37 | ...; | cflow.cs:112:17:112:36 | Before call to method WriteLine | | +| cflow.cs:112:17:112:37 | After ...; | cflow.cs:111:13:113:13 | After {...} | | | cflow.cs:112:35:112:35 | access to parameter s | cflow.cs:112:17:112:36 | call to method WriteLine | | -| cflow.cs:116:9:116:28 | call to method WriteLine | cflow.cs:106:18:106:19 | exit M4 (normal) | | -| cflow.cs:116:9:116:29 | ...; | cflow.cs:116:27:116:27 | access to parameter s | | +| cflow.cs:116:9:116:28 | After call to method WriteLine | cflow.cs:116:9:116:29 | After ...; | | +| cflow.cs:116:9:116:28 | Before call to method WriteLine | cflow.cs:116:27:116:27 | access to parameter s | | +| cflow.cs:116:9:116:28 | call to method WriteLine | cflow.cs:116:9:116:28 | After call to method WriteLine | | +| cflow.cs:116:9:116:29 | ...; | cflow.cs:116:9:116:28 | Before call to method WriteLine | | +| cflow.cs:116:9:116:29 | After ...; | cflow.cs:107:5:117:5 | After {...} | | | cflow.cs:116:27:116:27 | access to parameter s | cflow.cs:116:9:116:28 | call to method WriteLine | | -| cflow.cs:119:20:119:21 | enter M5 | cflow.cs:120:5:124:5 | {...} | | -| cflow.cs:119:20:119:21 | exit M5 (normal) | cflow.cs:119:20:119:21 | exit M5 | | +| cflow.cs:119:20:119:21 | Entry | cflow.cs:119:30:119:30 | s | | +| cflow.cs:119:20:119:21 | Normal Exit | cflow.cs:119:20:119:21 | Exit | | +| cflow.cs:119:30:119:30 | s | cflow.cs:120:5:124:5 | {...} | | | cflow.cs:120:5:124:5 | {...} | cflow.cs:121:9:121:18 | ... ...; | | -| cflow.cs:121:9:121:18 | ... ...; | cflow.cs:121:17:121:17 | access to parameter s | | -| cflow.cs:121:13:121:17 | String x = ... | cflow.cs:122:9:122:20 | ...; | | +| cflow.cs:121:9:121:18 | ... ...; | cflow.cs:121:13:121:17 | Before String x = ... | | +| cflow.cs:121:9:121:18 | After ... ...; | cflow.cs:122:9:122:20 | ...; | | +| cflow.cs:121:13:121:13 | access to local variable x | cflow.cs:121:17:121:17 | access to parameter s | | +| cflow.cs:121:13:121:17 | After String x = ... | cflow.cs:121:9:121:18 | After ... ...; | | +| cflow.cs:121:13:121:17 | Before String x = ... | cflow.cs:121:13:121:13 | access to local variable x | | +| cflow.cs:121:13:121:17 | String x = ... | cflow.cs:121:13:121:17 | After String x = ... | | | cflow.cs:121:17:121:17 | access to parameter s | cflow.cs:121:13:121:17 | String x = ... | | -| cflow.cs:122:9:122:19 | ... = ... | cflow.cs:123:16:123:16 | access to local variable x | | -| cflow.cs:122:9:122:20 | ...; | cflow.cs:122:13:122:13 | access to local variable x | | +| cflow.cs:122:9:122:9 | access to local variable x | cflow.cs:122:13:122:19 | Before ... + ... | | +| cflow.cs:122:9:122:19 | ... = ... | cflow.cs:122:9:122:19 | After ... = ... | | +| cflow.cs:122:9:122:19 | After ... = ... | cflow.cs:122:9:122:20 | After ...; | | +| cflow.cs:122:9:122:19 | Before ... = ... | cflow.cs:122:9:122:9 | access to local variable x | | +| cflow.cs:122:9:122:20 | ...; | cflow.cs:122:9:122:19 | Before ... = ... | | +| cflow.cs:122:9:122:20 | After ...; | cflow.cs:123:9:123:17 | Before return ...; | | | cflow.cs:122:13:122:13 | access to local variable x | cflow.cs:122:17:122:19 | " " | | -| cflow.cs:122:13:122:19 | ... + ... | cflow.cs:122:9:122:19 | ... = ... | | +| cflow.cs:122:13:122:19 | ... + ... | cflow.cs:122:13:122:19 | After ... + ... | | +| cflow.cs:122:13:122:19 | After ... + ... | cflow.cs:122:9:122:19 | ... = ... | | +| cflow.cs:122:13:122:19 | Before ... + ... | cflow.cs:122:13:122:13 | access to local variable x | | | cflow.cs:122:17:122:19 | " " | cflow.cs:122:13:122:19 | ... + ... | | -| cflow.cs:123:9:123:17 | return ...; | cflow.cs:119:20:119:21 | exit M5 (normal) | return | +| cflow.cs:123:9:123:17 | Before return ...; | cflow.cs:123:16:123:16 | access to local variable x | | +| cflow.cs:123:9:123:17 | return ...; | cflow.cs:119:20:119:21 | Normal Exit | return | | cflow.cs:123:16:123:16 | access to local variable x | cflow.cs:123:9:123:17 | return ...; | | -| cflow.cs:127:19:127:21 | enter get_Prop | cflow.cs:127:23:127:60 | {...} | | -| cflow.cs:127:19:127:21 | exit get_Prop (normal) | cflow.cs:127:19:127:21 | exit get_Prop | | -| cflow.cs:127:23:127:60 | {...} | cflow.cs:127:32:127:36 | this access | | -| cflow.cs:127:25:127:58 | return ...; | cflow.cs:127:19:127:21 | exit get_Prop (normal) | return | -| cflow.cs:127:32:127:36 | access to field Field | cflow.cs:127:41:127:44 | null | | +| cflow.cs:127:19:127:21 | Entry | cflow.cs:127:23:127:60 | {...} | | +| cflow.cs:127:19:127:21 | Normal Exit | cflow.cs:127:19:127:21 | Exit | | +| cflow.cs:127:23:127:60 | {...} | cflow.cs:127:25:127:58 | Before return ...; | | +| cflow.cs:127:25:127:58 | Before return ...; | cflow.cs:127:32:127:57 | ... ? ... : ... | | +| cflow.cs:127:25:127:58 | return ...; | cflow.cs:127:19:127:21 | Normal Exit | return | +| cflow.cs:127:32:127:36 | After access to field Field | cflow.cs:127:41:127:44 | null | | +| cflow.cs:127:32:127:36 | Before access to field Field | cflow.cs:127:32:127:36 | this access | | +| cflow.cs:127:32:127:36 | access to field Field | cflow.cs:127:32:127:36 | After access to field Field | | | cflow.cs:127:32:127:36 | this access | cflow.cs:127:32:127:36 | access to field Field | | -| cflow.cs:127:32:127:44 | ... == ... | cflow.cs:127:48:127:49 | "" | true | -| cflow.cs:127:32:127:44 | ... == ... | cflow.cs:127:53:127:57 | this access | false | -| cflow.cs:127:32:127:57 | ... ? ... : ... | cflow.cs:127:25:127:58 | return ...; | | +| cflow.cs:127:32:127:44 | ... == ... | cflow.cs:127:32:127:44 | After ... == ... [false] | false | +| cflow.cs:127:32:127:44 | ... == ... | cflow.cs:127:32:127:44 | After ... == ... [true] | true | +| cflow.cs:127:32:127:44 | After ... == ... [false] | cflow.cs:127:53:127:57 | Before access to field Field | | +| cflow.cs:127:32:127:44 | After ... == ... [true] | cflow.cs:127:48:127:49 | "" | | +| cflow.cs:127:32:127:44 | Before ... == ... | cflow.cs:127:32:127:36 | Before access to field Field | | +| cflow.cs:127:32:127:57 | ... ? ... : ... | cflow.cs:127:32:127:44 | Before ... == ... | | +| cflow.cs:127:32:127:57 | After ... ? ... : ... | cflow.cs:127:25:127:58 | return ...; | | | cflow.cs:127:41:127:44 | null | cflow.cs:127:32:127:44 | ... == ... | | -| cflow.cs:127:48:127:49 | "" | cflow.cs:127:32:127:57 | ... ? ... : ... | | -| cflow.cs:127:53:127:57 | access to field Field | cflow.cs:127:32:127:57 | ... ? ... : ... | | +| cflow.cs:127:48:127:49 | "" | cflow.cs:127:32:127:57 | After ... ? ... : ... | | +| cflow.cs:127:53:127:57 | After access to field Field | cflow.cs:127:32:127:57 | After ... ? ... : ... | | +| cflow.cs:127:53:127:57 | Before access to field Field | cflow.cs:127:53:127:57 | this access | | +| cflow.cs:127:53:127:57 | access to field Field | cflow.cs:127:53:127:57 | After access to field Field | | | cflow.cs:127:53:127:57 | this access | cflow.cs:127:53:127:57 | access to field Field | | -| cflow.cs:127:62:127:64 | enter set_Prop | cflow.cs:127:66:127:83 | {...} | | -| cflow.cs:127:62:127:64 | exit set_Prop (normal) | cflow.cs:127:62:127:64 | exit set_Prop | | +| cflow.cs:127:62:127:64 | Entry | cflow.cs:127:62:127:64 | value | | +| cflow.cs:127:62:127:64 | Normal Exit | cflow.cs:127:62:127:64 | Exit | | +| cflow.cs:127:62:127:64 | value | cflow.cs:127:66:127:83 | {...} | | +| cflow.cs:127:66:127:83 | After {...} | cflow.cs:127:62:127:64 | Normal Exit | | | cflow.cs:127:66:127:83 | {...} | cflow.cs:127:68:127:81 | ...; | | -| cflow.cs:127:68:127:72 | access to field Field | cflow.cs:127:68:127:80 | ... = ... | | -| cflow.cs:127:68:127:72 | this access | cflow.cs:127:76:127:80 | access to parameter value | | -| cflow.cs:127:68:127:80 | ... = ... | cflow.cs:127:62:127:64 | exit set_Prop (normal) | | -| cflow.cs:127:68:127:81 | ...; | cflow.cs:127:68:127:72 | this access | | -| cflow.cs:127:76:127:80 | access to parameter value | cflow.cs:127:68:127:72 | access to field Field | | -| cflow.cs:129:5:129:15 | call to constructor Object | cflow.cs:130:5:132:5 | {...} | | -| cflow.cs:129:5:129:15 | call to method | cflow.cs:129:5:129:15 | call to constructor Object | | -| cflow.cs:129:5:129:15 | enter ControlFlow | cflow.cs:129:5:129:15 | this access | | -| cflow.cs:129:5:129:15 | exit ControlFlow (normal) | cflow.cs:129:5:129:15 | exit ControlFlow | | +| cflow.cs:127:68:127:72 | After access to field Field | cflow.cs:127:76:127:80 | access to parameter value | | +| cflow.cs:127:68:127:72 | Before access to field Field | cflow.cs:127:68:127:72 | this access | | +| cflow.cs:127:68:127:72 | access to field Field | cflow.cs:127:68:127:72 | After access to field Field | | +| cflow.cs:127:68:127:72 | this access | cflow.cs:127:68:127:72 | access to field Field | | +| cflow.cs:127:68:127:80 | ... = ... | cflow.cs:127:68:127:80 | After ... = ... | | +| cflow.cs:127:68:127:80 | After ... = ... | cflow.cs:127:68:127:81 | After ...; | | +| cflow.cs:127:68:127:80 | Before ... = ... | cflow.cs:127:68:127:72 | Before access to field Field | | +| cflow.cs:127:68:127:81 | ...; | cflow.cs:127:68:127:80 | Before ... = ... | | +| cflow.cs:127:68:127:81 | After ...; | cflow.cs:127:66:127:83 | After {...} | | +| cflow.cs:127:76:127:80 | access to parameter value | cflow.cs:127:68:127:80 | ... = ... | | +| cflow.cs:129:5:129:15 | After call to constructor Object | cflow.cs:130:5:132:5 | {...} | | +| cflow.cs:129:5:129:15 | After call to method | cflow.cs:129:5:129:15 | Before call to constructor Object | | +| cflow.cs:129:5:129:15 | Before call to constructor Object | cflow.cs:129:5:129:15 | call to constructor Object | | +| cflow.cs:129:5:129:15 | Before call to method | cflow.cs:129:5:129:15 | this access | | +| cflow.cs:129:5:129:15 | Entry | cflow.cs:129:24:129:24 | s | | +| cflow.cs:129:5:129:15 | Normal Exit | cflow.cs:129:5:129:15 | Exit | | +| cflow.cs:129:5:129:15 | call to constructor Object | cflow.cs:129:5:129:15 | After call to constructor Object | | +| cflow.cs:129:5:129:15 | call to method | cflow.cs:129:5:129:15 | After call to method | | | cflow.cs:129:5:129:15 | this access | cflow.cs:129:5:129:15 | call to method | | +| cflow.cs:129:24:129:24 | s | cflow.cs:129:5:129:15 | Before call to method | | +| cflow.cs:130:5:132:5 | After {...} | cflow.cs:129:5:129:15 | Normal Exit | | | cflow.cs:130:5:132:5 | {...} | cflow.cs:131:9:131:18 | ...; | | -| cflow.cs:131:9:131:13 | access to field Field | cflow.cs:131:9:131:17 | ... = ... | | -| cflow.cs:131:9:131:13 | this access | cflow.cs:131:17:131:17 | access to parameter s | | -| cflow.cs:131:9:131:17 | ... = ... | cflow.cs:129:5:129:15 | exit ControlFlow (normal) | | -| cflow.cs:131:9:131:18 | ...; | cflow.cs:131:9:131:13 | this access | | -| cflow.cs:131:17:131:17 | access to parameter s | cflow.cs:131:9:131:13 | access to field Field | | -| cflow.cs:134:5:134:15 | enter ControlFlow | cflow.cs:134:31:134:31 | access to parameter i | | -| cflow.cs:134:5:134:15 | exit ControlFlow (normal) | cflow.cs:134:5:134:15 | exit ControlFlow | | -| cflow.cs:134:26:134:29 | call to constructor ControlFlow | cflow.cs:134:39:134:41 | {...} | | -| cflow.cs:134:31:134:31 | (...) ... | cflow.cs:134:35:134:36 | "" | | +| cflow.cs:131:9:131:13 | After access to field Field | cflow.cs:131:17:131:17 | access to parameter s | | +| cflow.cs:131:9:131:13 | Before access to field Field | cflow.cs:131:9:131:13 | this access | | +| cflow.cs:131:9:131:13 | access to field Field | cflow.cs:131:9:131:13 | After access to field Field | | +| cflow.cs:131:9:131:13 | this access | cflow.cs:131:9:131:13 | access to field Field | | +| cflow.cs:131:9:131:17 | ... = ... | cflow.cs:131:9:131:17 | After ... = ... | | +| cflow.cs:131:9:131:17 | After ... = ... | cflow.cs:131:9:131:18 | After ...; | | +| cflow.cs:131:9:131:17 | Before ... = ... | cflow.cs:131:9:131:13 | Before access to field Field | | +| cflow.cs:131:9:131:18 | ...; | cflow.cs:131:9:131:17 | Before ... = ... | | +| cflow.cs:131:9:131:18 | After ...; | cflow.cs:130:5:132:5 | After {...} | | +| cflow.cs:131:17:131:17 | access to parameter s | cflow.cs:131:9:131:17 | ... = ... | | +| cflow.cs:134:5:134:15 | Entry | cflow.cs:134:21:134:21 | i | | +| cflow.cs:134:5:134:15 | Normal Exit | cflow.cs:134:5:134:15 | Exit | | +| cflow.cs:134:21:134:21 | i | cflow.cs:134:26:134:29 | Before call to constructor ControlFlow | | +| cflow.cs:134:26:134:29 | After call to constructor ControlFlow | cflow.cs:134:39:134:41 | {...} | | +| cflow.cs:134:26:134:29 | Before call to constructor ControlFlow | cflow.cs:134:31:134:36 | Before ... + ... | | +| cflow.cs:134:26:134:29 | call to constructor ControlFlow | cflow.cs:134:26:134:29 | After call to constructor ControlFlow | | +| cflow.cs:134:31:134:31 | (...) ... | cflow.cs:134:31:134:31 | After (...) ... | | +| cflow.cs:134:31:134:31 | After (...) ... | cflow.cs:134:35:134:36 | "" | | +| cflow.cs:134:31:134:31 | Before (...) ... | cflow.cs:134:31:134:31 | access to parameter i | | | cflow.cs:134:31:134:31 | access to parameter i | cflow.cs:134:31:134:31 | (...) ... | | -| cflow.cs:134:31:134:36 | ... + ... | cflow.cs:134:26:134:29 | call to constructor ControlFlow | | +| cflow.cs:134:31:134:36 | ... + ... | cflow.cs:134:31:134:36 | After ... + ... | | +| cflow.cs:134:31:134:36 | After ... + ... | cflow.cs:134:26:134:29 | call to constructor ControlFlow | | +| cflow.cs:134:31:134:36 | Before ... + ... | cflow.cs:134:31:134:31 | Before (...) ... | | | cflow.cs:134:35:134:36 | "" | cflow.cs:134:31:134:36 | ... + ... | | -| cflow.cs:134:39:134:41 | {...} | cflow.cs:134:5:134:15 | exit ControlFlow (normal) | | -| cflow.cs:136:12:136:22 | enter ControlFlow | cflow.cs:136:33:136:33 | 0 | | -| cflow.cs:136:12:136:22 | exit ControlFlow (normal) | cflow.cs:136:12:136:22 | exit ControlFlow | | -| cflow.cs:136:28:136:31 | call to constructor ControlFlow | cflow.cs:136:40:136:42 | {...} | | +| cflow.cs:134:39:134:41 | {...} | cflow.cs:134:5:134:15 | Normal Exit | | +| cflow.cs:136:12:136:22 | Entry | cflow.cs:136:28:136:31 | Before call to constructor ControlFlow | | +| cflow.cs:136:12:136:22 | Normal Exit | cflow.cs:136:12:136:22 | Exit | | +| cflow.cs:136:28:136:31 | After call to constructor ControlFlow | cflow.cs:136:40:136:42 | {...} | | +| cflow.cs:136:28:136:31 | Before call to constructor ControlFlow | cflow.cs:136:33:136:37 | Before ... + ... | | +| cflow.cs:136:28:136:31 | call to constructor ControlFlow | cflow.cs:136:28:136:31 | After call to constructor ControlFlow | | | cflow.cs:136:33:136:33 | 0 | cflow.cs:136:37:136:37 | 1 | | -| cflow.cs:136:33:136:37 | ... + ... | cflow.cs:136:28:136:31 | call to constructor ControlFlow | | +| cflow.cs:136:33:136:37 | ... + ... | cflow.cs:136:33:136:37 | After ... + ... | | +| cflow.cs:136:33:136:37 | After ... + ... | cflow.cs:136:28:136:31 | call to constructor ControlFlow | | +| cflow.cs:136:33:136:37 | Before ... + ... | cflow.cs:136:33:136:33 | 0 | | | cflow.cs:136:37:136:37 | 1 | cflow.cs:136:33:136:37 | ... + ... | | -| cflow.cs:136:40:136:42 | {...} | cflow.cs:136:12:136:22 | exit ControlFlow (normal) | | -| cflow.cs:138:40:138:40 | enter + | cflow.cs:139:5:142:5 | {...} | | -| cflow.cs:138:40:138:40 | exit + (normal) | cflow.cs:138:40:138:40 | exit + | | +| cflow.cs:136:40:136:42 | {...} | cflow.cs:136:12:136:22 | Normal Exit | | +| cflow.cs:138:40:138:40 | Entry | cflow.cs:138:54:138:54 | x | | +| cflow.cs:138:40:138:40 | Normal Exit | cflow.cs:138:40:138:40 | Exit | | +| cflow.cs:138:54:138:54 | x | cflow.cs:138:69:138:69 | y | | +| cflow.cs:138:69:138:69 | y | cflow.cs:139:5:142:5 | {...} | | | cflow.cs:139:5:142:5 | {...} | cflow.cs:140:9:140:29 | ...; | | -| cflow.cs:140:9:140:28 | call to method WriteLine | cflow.cs:141:16:141:16 | access to parameter y | | -| cflow.cs:140:9:140:29 | ...; | cflow.cs:140:27:140:27 | access to parameter x | | +| cflow.cs:140:9:140:28 | After call to method WriteLine | cflow.cs:140:9:140:29 | After ...; | | +| cflow.cs:140:9:140:28 | Before call to method WriteLine | cflow.cs:140:27:140:27 | access to parameter x | | +| cflow.cs:140:9:140:28 | call to method WriteLine | cflow.cs:140:9:140:28 | After call to method WriteLine | | +| cflow.cs:140:9:140:29 | ...; | cflow.cs:140:9:140:28 | Before call to method WriteLine | | +| cflow.cs:140:9:140:29 | After ...; | cflow.cs:141:9:141:17 | Before return ...; | | | cflow.cs:140:27:140:27 | access to parameter x | cflow.cs:140:9:140:28 | call to method WriteLine | | -| cflow.cs:141:9:141:17 | return ...; | cflow.cs:138:40:138:40 | exit + (normal) | return | +| cflow.cs:141:9:141:17 | Before return ...; | cflow.cs:141:16:141:16 | access to parameter y | | +| cflow.cs:141:9:141:17 | return ...; | cflow.cs:138:40:138:40 | Normal Exit | return | | cflow.cs:141:16:141:16 | access to parameter y | cflow.cs:141:9:141:17 | return ...; | | -| cflow.cs:144:33:144:35 | enter get_Item | cflow.cs:144:37:144:54 | {...} | | -| cflow.cs:144:33:144:35 | exit get_Item (normal) | cflow.cs:144:33:144:35 | exit get_Item | | -| cflow.cs:144:37:144:54 | {...} | cflow.cs:144:46:144:46 | access to parameter i | | -| cflow.cs:144:39:144:52 | return ...; | cflow.cs:144:33:144:35 | exit get_Item (normal) | return | -| cflow.cs:144:46:144:46 | (...) ... | cflow.cs:144:50:144:51 | "" | | +| cflow.cs:144:28:144:28 | i | cflow.cs:144:37:144:54 | {...} | | +| cflow.cs:144:28:144:28 | i | cflow.cs:144:56:144:58 | value | | +| cflow.cs:144:33:144:35 | Entry | cflow.cs:144:28:144:28 | i | | +| cflow.cs:144:33:144:35 | Normal Exit | cflow.cs:144:33:144:35 | Exit | | +| cflow.cs:144:37:144:54 | {...} | cflow.cs:144:39:144:52 | Before return ...; | | +| cflow.cs:144:39:144:52 | Before return ...; | cflow.cs:144:46:144:51 | Before ... + ... | | +| cflow.cs:144:39:144:52 | return ...; | cflow.cs:144:33:144:35 | Normal Exit | return | +| cflow.cs:144:46:144:46 | (...) ... | cflow.cs:144:46:144:46 | After (...) ... | | +| cflow.cs:144:46:144:46 | After (...) ... | cflow.cs:144:50:144:51 | "" | | +| cflow.cs:144:46:144:46 | Before (...) ... | cflow.cs:144:46:144:46 | access to parameter i | | | cflow.cs:144:46:144:46 | access to parameter i | cflow.cs:144:46:144:46 | (...) ... | | -| cflow.cs:144:46:144:51 | ... + ... | cflow.cs:144:39:144:52 | return ...; | | +| cflow.cs:144:46:144:51 | ... + ... | cflow.cs:144:46:144:51 | After ... + ... | | +| cflow.cs:144:46:144:51 | After ... + ... | cflow.cs:144:39:144:52 | return ...; | | +| cflow.cs:144:46:144:51 | Before ... + ... | cflow.cs:144:46:144:46 | Before (...) ... | | | cflow.cs:144:50:144:51 | "" | cflow.cs:144:46:144:51 | ... + ... | | -| cflow.cs:144:56:144:58 | enter set_Item | cflow.cs:144:60:144:62 | {...} | | -| cflow.cs:144:56:144:58 | exit set_Item (normal) | cflow.cs:144:56:144:58 | exit set_Item | | -| cflow.cs:144:60:144:62 | {...} | cflow.cs:144:56:144:58 | exit set_Item (normal) | | -| cflow.cs:146:10:146:12 | enter For | cflow.cs:147:5:177:5 | {...} | | -| cflow.cs:146:10:146:12 | exit For (normal) | cflow.cs:146:10:146:12 | exit For | | +| cflow.cs:144:56:144:58 | Entry | cflow.cs:144:28:144:28 | i | | +| cflow.cs:144:56:144:58 | Normal Exit | cflow.cs:144:56:144:58 | Exit | | +| cflow.cs:144:56:144:58 | value | cflow.cs:144:60:144:62 | {...} | | +| cflow.cs:144:60:144:62 | {...} | cflow.cs:144:56:144:58 | Normal Exit | | +| cflow.cs:146:10:146:12 | Entry | cflow.cs:147:5:177:5 | {...} | | +| cflow.cs:146:10:146:12 | Normal Exit | cflow.cs:146:10:146:12 | Exit | | +| cflow.cs:147:5:177:5 | After {...} | cflow.cs:146:10:146:12 | Normal Exit | | | cflow.cs:147:5:177:5 | {...} | cflow.cs:148:9:148:18 | ... ...; | | -| cflow.cs:148:9:148:18 | ... ...; | cflow.cs:148:17:148:17 | 0 | | -| cflow.cs:148:13:148:17 | Int32 x = ... | cflow.cs:149:9:150:33 | for (...;...;...) ... | | +| cflow.cs:148:9:148:18 | ... ...; | cflow.cs:148:13:148:17 | Before Int32 x = ... | | +| cflow.cs:148:9:148:18 | After ... ...; | cflow.cs:149:9:150:33 | for (...;...;...) ... | | +| cflow.cs:148:13:148:13 | access to local variable x | cflow.cs:148:17:148:17 | 0 | | +| cflow.cs:148:13:148:17 | After Int32 x = ... | cflow.cs:148:9:148:18 | After ... ...; | | +| cflow.cs:148:13:148:17 | Before Int32 x = ... | cflow.cs:148:13:148:13 | access to local variable x | | +| cflow.cs:148:13:148:17 | Int32 x = ... | cflow.cs:148:13:148:17 | After Int32 x = ... | | | cflow.cs:148:17:148:17 | 0 | cflow.cs:148:13:148:17 | Int32 x = ... | | -| cflow.cs:149:9:150:33 | for (...;...;...) ... | cflow.cs:149:16:149:16 | access to local variable x | | +| cflow.cs:149:9:150:33 | After for (...;...;...) ... | cflow.cs:152:9:157:9 | for (...;...;...) ... | | +| cflow.cs:149:9:150:33 | [LoopHeader] for (...;...;...) ... | cflow.cs:149:24:149:26 | Before ++... | | +| cflow.cs:149:9:150:33 | for (...;...;...) ... | cflow.cs:149:16:149:21 | Before ... < ... | | | cflow.cs:149:16:149:16 | access to local variable x | cflow.cs:149:20:149:21 | 10 | | -| cflow.cs:149:16:149:21 | ... < ... | cflow.cs:150:13:150:33 | ...; | true | -| cflow.cs:149:16:149:21 | ... < ... | cflow.cs:152:9:157:9 | for (...;...;...) ... | false | +| cflow.cs:149:16:149:21 | ... < ... | cflow.cs:149:16:149:21 | After ... < ... [false] | false | +| cflow.cs:149:16:149:21 | ... < ... | cflow.cs:149:16:149:21 | After ... < ... [true] | true | +| cflow.cs:149:16:149:21 | After ... < ... [false] | cflow.cs:149:9:150:33 | After for (...;...;...) ... | | +| cflow.cs:149:16:149:21 | After ... < ... [true] | cflow.cs:150:13:150:33 | ...; | | +| cflow.cs:149:16:149:21 | Before ... < ... | cflow.cs:149:16:149:16 | access to local variable x | | | cflow.cs:149:20:149:21 | 10 | cflow.cs:149:16:149:21 | ... < ... | | -| cflow.cs:149:24:149:26 | ++... | cflow.cs:149:16:149:16 | access to local variable x | | +| cflow.cs:149:24:149:26 | ++... | cflow.cs:149:24:149:26 | After ++... | | +| cflow.cs:149:24:149:26 | After ++... | cflow.cs:149:16:149:21 | Before ... < ... | | +| cflow.cs:149:24:149:26 | Before ++... | cflow.cs:149:26:149:26 | access to local variable x | | | cflow.cs:149:26:149:26 | access to local variable x | cflow.cs:149:24:149:26 | ++... | | -| cflow.cs:150:13:150:32 | call to method WriteLine | cflow.cs:149:26:149:26 | access to local variable x | | -| cflow.cs:150:13:150:33 | ...; | cflow.cs:150:31:150:31 | access to local variable x | | +| cflow.cs:150:13:150:32 | After call to method WriteLine | cflow.cs:150:13:150:33 | After ...; | | +| cflow.cs:150:13:150:32 | Before call to method WriteLine | cflow.cs:150:31:150:31 | access to local variable x | | +| cflow.cs:150:13:150:32 | call to method WriteLine | cflow.cs:150:13:150:32 | After call to method WriteLine | | +| cflow.cs:150:13:150:33 | ...; | cflow.cs:150:13:150:32 | Before call to method WriteLine | | +| cflow.cs:150:13:150:33 | After ...; | cflow.cs:149:9:150:33 | [LoopHeader] for (...;...;...) ... | | | cflow.cs:150:31:150:31 | access to local variable x | cflow.cs:150:13:150:32 | call to method WriteLine | | +| cflow.cs:152:9:157:9 | After for (...;...;...) ... | cflow.cs:159:9:165:9 | for (...;...;...) ... | | +| cflow.cs:152:9:157:9 | [LoopHeader] for (...;...;...) ... | cflow.cs:152:18:152:20 | Before ...++ | | | cflow.cs:152:9:157:9 | for (...;...;...) ... | cflow.cs:153:9:157:9 | {...} | | | cflow.cs:152:18:152:18 | access to local variable x | cflow.cs:152:18:152:20 | ...++ | | -| cflow.cs:152:18:152:20 | ...++ | cflow.cs:153:9:157:9 | {...} | | +| cflow.cs:152:18:152:20 | ...++ | cflow.cs:152:18:152:20 | After ...++ | | +| cflow.cs:152:18:152:20 | After ...++ | cflow.cs:153:9:157:9 | {...} | | +| cflow.cs:152:18:152:20 | Before ...++ | cflow.cs:152:18:152:18 | access to local variable x | | +| cflow.cs:153:9:157:9 | After {...} | cflow.cs:152:9:157:9 | [LoopHeader] for (...;...;...) ... | | | cflow.cs:153:9:157:9 | {...} | cflow.cs:154:13:154:33 | ...; | | -| cflow.cs:154:13:154:32 | call to method WriteLine | cflow.cs:155:13:156:22 | if (...) ... | | -| cflow.cs:154:13:154:33 | ...; | cflow.cs:154:31:154:31 | access to local variable x | | +| cflow.cs:154:13:154:32 | After call to method WriteLine | cflow.cs:154:13:154:33 | After ...; | | +| cflow.cs:154:13:154:32 | Before call to method WriteLine | cflow.cs:154:31:154:31 | access to local variable x | | +| cflow.cs:154:13:154:32 | call to method WriteLine | cflow.cs:154:13:154:32 | After call to method WriteLine | | +| cflow.cs:154:13:154:33 | ...; | cflow.cs:154:13:154:32 | Before call to method WriteLine | | +| cflow.cs:154:13:154:33 | After ...; | cflow.cs:155:13:156:22 | if (...) ... | | | cflow.cs:154:31:154:31 | access to local variable x | cflow.cs:154:13:154:32 | call to method WriteLine | | -| cflow.cs:155:13:156:22 | if (...) ... | cflow.cs:155:17:155:17 | access to local variable x | | +| cflow.cs:155:13:156:22 | After if (...) ... | cflow.cs:153:9:157:9 | After {...} | | +| cflow.cs:155:13:156:22 | if (...) ... | cflow.cs:155:17:155:22 | Before ... > ... | | | cflow.cs:155:17:155:17 | access to local variable x | cflow.cs:155:21:155:22 | 20 | | -| cflow.cs:155:17:155:22 | ... > ... | cflow.cs:152:18:152:18 | access to local variable x | false | -| cflow.cs:155:17:155:22 | ... > ... | cflow.cs:156:17:156:22 | break; | true | +| cflow.cs:155:17:155:22 | ... > ... | cflow.cs:155:17:155:22 | After ... > ... [false] | false | +| cflow.cs:155:17:155:22 | ... > ... | cflow.cs:155:17:155:22 | After ... > ... [true] | true | +| cflow.cs:155:17:155:22 | After ... > ... [false] | cflow.cs:155:13:156:22 | After if (...) ... | | +| cflow.cs:155:17:155:22 | After ... > ... [true] | cflow.cs:156:17:156:22 | Before break; | | +| cflow.cs:155:17:155:22 | Before ... > ... | cflow.cs:155:17:155:17 | access to local variable x | | | cflow.cs:155:21:155:22 | 20 | cflow.cs:155:17:155:22 | ... > ... | | -| cflow.cs:156:17:156:22 | break; | cflow.cs:159:9:165:9 | for (...;...;...) ... | break | +| cflow.cs:156:17:156:22 | Before break; | cflow.cs:156:17:156:22 | break; | | +| cflow.cs:156:17:156:22 | break; | cflow.cs:152:9:157:9 | After for (...;...;...) ... | break | +| cflow.cs:159:9:165:9 | After for (...;...;...) ... | cflow.cs:167:9:171:9 | for (...;...;...) ... | | +| cflow.cs:159:9:165:9 | [LoopHeader] for (...;...;...) ... | cflow.cs:160:9:165:9 | {...} | | | cflow.cs:159:9:165:9 | for (...;...;...) ... | cflow.cs:160:9:165:9 | {...} | | +| cflow.cs:160:9:165:9 | After {...} | cflow.cs:159:9:165:9 | [LoopHeader] for (...;...;...) ... | | | cflow.cs:160:9:165:9 | {...} | cflow.cs:161:13:161:33 | ...; | | -| cflow.cs:161:13:161:32 | call to method WriteLine | cflow.cs:162:13:162:16 | ...; | | -| cflow.cs:161:13:161:33 | ...; | cflow.cs:161:31:161:31 | access to local variable x | | +| cflow.cs:161:13:161:32 | After call to method WriteLine | cflow.cs:161:13:161:33 | After ...; | | +| cflow.cs:161:13:161:32 | Before call to method WriteLine | cflow.cs:161:31:161:31 | access to local variable x | | +| cflow.cs:161:13:161:32 | call to method WriteLine | cflow.cs:161:13:161:32 | After call to method WriteLine | | +| cflow.cs:161:13:161:33 | ...; | cflow.cs:161:13:161:32 | Before call to method WriteLine | | +| cflow.cs:161:13:161:33 | After ...; | cflow.cs:162:13:162:16 | ...; | | | cflow.cs:161:31:161:31 | access to local variable x | cflow.cs:161:13:161:32 | call to method WriteLine | | | cflow.cs:162:13:162:13 | access to local variable x | cflow.cs:162:13:162:15 | ...++ | | -| cflow.cs:162:13:162:15 | ...++ | cflow.cs:163:13:164:22 | if (...) ... | | -| cflow.cs:162:13:162:16 | ...; | cflow.cs:162:13:162:13 | access to local variable x | | -| cflow.cs:163:13:164:22 | if (...) ... | cflow.cs:163:17:163:17 | access to local variable x | | +| cflow.cs:162:13:162:15 | ...++ | cflow.cs:162:13:162:15 | After ...++ | | +| cflow.cs:162:13:162:15 | After ...++ | cflow.cs:162:13:162:16 | After ...; | | +| cflow.cs:162:13:162:15 | Before ...++ | cflow.cs:162:13:162:13 | access to local variable x | | +| cflow.cs:162:13:162:16 | ...; | cflow.cs:162:13:162:15 | Before ...++ | | +| cflow.cs:162:13:162:16 | After ...; | cflow.cs:163:13:164:22 | if (...) ... | | +| cflow.cs:163:13:164:22 | After if (...) ... | cflow.cs:160:9:165:9 | After {...} | | +| cflow.cs:163:13:164:22 | if (...) ... | cflow.cs:163:17:163:22 | Before ... > ... | | | cflow.cs:163:17:163:17 | access to local variable x | cflow.cs:163:21:163:22 | 30 | | -| cflow.cs:163:17:163:22 | ... > ... | cflow.cs:160:9:165:9 | {...} | false | -| cflow.cs:163:17:163:22 | ... > ... | cflow.cs:164:17:164:22 | break; | true | +| cflow.cs:163:17:163:22 | ... > ... | cflow.cs:163:17:163:22 | After ... > ... [false] | false | +| cflow.cs:163:17:163:22 | ... > ... | cflow.cs:163:17:163:22 | After ... > ... [true] | true | +| cflow.cs:163:17:163:22 | After ... > ... [false] | cflow.cs:163:13:164:22 | After if (...) ... | | +| cflow.cs:163:17:163:22 | After ... > ... [true] | cflow.cs:164:17:164:22 | Before break; | | +| cflow.cs:163:17:163:22 | Before ... > ... | cflow.cs:163:17:163:17 | access to local variable x | | | cflow.cs:163:21:163:22 | 30 | cflow.cs:163:17:163:22 | ... > ... | | -| cflow.cs:164:17:164:22 | break; | cflow.cs:167:9:171:9 | for (...;...;...) ... | break | -| cflow.cs:167:9:171:9 | for (...;...;...) ... | cflow.cs:167:16:167:16 | access to local variable x | | +| cflow.cs:164:17:164:22 | Before break; | cflow.cs:164:17:164:22 | break; | | +| cflow.cs:164:17:164:22 | break; | cflow.cs:159:9:165:9 | After for (...;...;...) ... | break | +| cflow.cs:167:9:171:9 | After for (...;...;...) ... | cflow.cs:173:9:176:9 | for (...;...;...) ... | | +| cflow.cs:167:9:171:9 | [LoopHeader] for (...;...;...) ... | cflow.cs:167:16:167:21 | Before ... < ... | | +| cflow.cs:167:9:171:9 | for (...;...;...) ... | cflow.cs:167:16:167:21 | Before ... < ... | | | cflow.cs:167:16:167:16 | access to local variable x | cflow.cs:167:20:167:21 | 40 | | -| cflow.cs:167:16:167:21 | ... < ... | cflow.cs:168:9:171:9 | {...} | true | -| cflow.cs:167:16:167:21 | ... < ... | cflow.cs:173:9:176:9 | for (...;...;...) ... | false | +| cflow.cs:167:16:167:21 | ... < ... | cflow.cs:167:16:167:21 | After ... < ... [false] | false | +| cflow.cs:167:16:167:21 | ... < ... | cflow.cs:167:16:167:21 | After ... < ... [true] | true | +| cflow.cs:167:16:167:21 | After ... < ... [false] | cflow.cs:167:9:171:9 | After for (...;...;...) ... | | +| cflow.cs:167:16:167:21 | After ... < ... [true] | cflow.cs:168:9:171:9 | {...} | | +| cflow.cs:167:16:167:21 | Before ... < ... | cflow.cs:167:16:167:16 | access to local variable x | | | cflow.cs:167:20:167:21 | 40 | cflow.cs:167:16:167:21 | ... < ... | | +| cflow.cs:168:9:171:9 | After {...} | cflow.cs:167:9:171:9 | [LoopHeader] for (...;...;...) ... | | | cflow.cs:168:9:171:9 | {...} | cflow.cs:169:13:169:33 | ...; | | -| cflow.cs:169:13:169:32 | call to method WriteLine | cflow.cs:170:13:170:16 | ...; | | -| cflow.cs:169:13:169:33 | ...; | cflow.cs:169:31:169:31 | access to local variable x | | +| cflow.cs:169:13:169:32 | After call to method WriteLine | cflow.cs:169:13:169:33 | After ...; | | +| cflow.cs:169:13:169:32 | Before call to method WriteLine | cflow.cs:169:31:169:31 | access to local variable x | | +| cflow.cs:169:13:169:32 | call to method WriteLine | cflow.cs:169:13:169:32 | After call to method WriteLine | | +| cflow.cs:169:13:169:33 | ...; | cflow.cs:169:13:169:32 | Before call to method WriteLine | | +| cflow.cs:169:13:169:33 | After ...; | cflow.cs:170:13:170:16 | ...; | | | cflow.cs:169:31:169:31 | access to local variable x | cflow.cs:169:13:169:32 | call to method WriteLine | | | cflow.cs:170:13:170:13 | access to local variable x | cflow.cs:170:13:170:15 | ...++ | | -| cflow.cs:170:13:170:15 | ...++ | cflow.cs:167:16:167:16 | access to local variable x | | -| cflow.cs:170:13:170:16 | ...; | cflow.cs:170:13:170:13 | access to local variable x | | -| cflow.cs:173:9:176:9 | for (...;...;...) ... | cflow.cs:173:22:173:22 | 0 | | -| cflow.cs:173:18:173:22 | Int32 i = ... | cflow.cs:173:29:173:29 | 0 | | +| cflow.cs:170:13:170:15 | ...++ | cflow.cs:170:13:170:15 | After ...++ | | +| cflow.cs:170:13:170:15 | After ...++ | cflow.cs:170:13:170:16 | After ...; | | +| cflow.cs:170:13:170:15 | Before ...++ | cflow.cs:170:13:170:13 | access to local variable x | | +| cflow.cs:170:13:170:16 | ...; | cflow.cs:170:13:170:15 | Before ...++ | | +| cflow.cs:170:13:170:16 | After ...; | cflow.cs:168:9:171:9 | After {...} | | +| cflow.cs:173:9:176:9 | After for (...;...;...) ... | cflow.cs:147:5:177:5 | After {...} | | +| cflow.cs:173:9:176:9 | [LoopHeader] for (...;...;...) ... | cflow.cs:173:44:173:46 | Before ...++ | | +| cflow.cs:173:9:176:9 | for (...;...;...) ... | cflow.cs:173:18:173:22 | Before Int32 i = ... | | +| cflow.cs:173:18:173:18 | access to local variable i | cflow.cs:173:22:173:22 | 0 | | +| cflow.cs:173:18:173:22 | After Int32 i = ... | cflow.cs:173:25:173:29 | Before Int32 j = ... | | +| cflow.cs:173:18:173:22 | Before Int32 i = ... | cflow.cs:173:18:173:18 | access to local variable i | | +| cflow.cs:173:18:173:22 | Int32 i = ... | cflow.cs:173:18:173:22 | After Int32 i = ... | | | cflow.cs:173:22:173:22 | 0 | cflow.cs:173:18:173:22 | Int32 i = ... | | -| cflow.cs:173:25:173:29 | Int32 j = ... | cflow.cs:173:32:173:32 | access to local variable i | | +| cflow.cs:173:25:173:25 | access to local variable j | cflow.cs:173:29:173:29 | 0 | | +| cflow.cs:173:25:173:29 | After Int32 j = ... | cflow.cs:173:32:173:41 | Before ... < ... | | +| cflow.cs:173:25:173:29 | Before Int32 j = ... | cflow.cs:173:25:173:25 | access to local variable j | | +| cflow.cs:173:25:173:29 | Int32 j = ... | cflow.cs:173:25:173:29 | After Int32 j = ... | | | cflow.cs:173:29:173:29 | 0 | cflow.cs:173:25:173:29 | Int32 j = ... | | | cflow.cs:173:32:173:32 | access to local variable i | cflow.cs:173:36:173:36 | access to local variable j | | -| cflow.cs:173:32:173:36 | ... + ... | cflow.cs:173:40:173:41 | 10 | | -| cflow.cs:173:32:173:41 | ... < ... | cflow.cs:146:10:146:12 | exit For (normal) | false | -| cflow.cs:173:32:173:41 | ... < ... | cflow.cs:174:9:176:9 | {...} | true | +| cflow.cs:173:32:173:36 | ... + ... | cflow.cs:173:32:173:36 | After ... + ... | | +| cflow.cs:173:32:173:36 | After ... + ... | cflow.cs:173:40:173:41 | 10 | | +| cflow.cs:173:32:173:36 | Before ... + ... | cflow.cs:173:32:173:32 | access to local variable i | | +| cflow.cs:173:32:173:41 | ... < ... | cflow.cs:173:32:173:41 | After ... < ... [false] | false | +| cflow.cs:173:32:173:41 | ... < ... | cflow.cs:173:32:173:41 | After ... < ... [true] | true | +| cflow.cs:173:32:173:41 | After ... < ... [false] | cflow.cs:173:9:176:9 | After for (...;...;...) ... | | +| cflow.cs:173:32:173:41 | After ... < ... [true] | cflow.cs:174:9:176:9 | {...} | | +| cflow.cs:173:32:173:41 | Before ... < ... | cflow.cs:173:32:173:36 | Before ... + ... | | | cflow.cs:173:36:173:36 | access to local variable j | cflow.cs:173:32:173:36 | ... + ... | | | cflow.cs:173:40:173:41 | 10 | cflow.cs:173:32:173:41 | ... < ... | | | cflow.cs:173:44:173:44 | access to local variable i | cflow.cs:173:44:173:46 | ...++ | | -| cflow.cs:173:44:173:46 | ...++ | cflow.cs:173:49:173:49 | access to local variable j | | +| cflow.cs:173:44:173:46 | ...++ | cflow.cs:173:44:173:46 | After ...++ | | +| cflow.cs:173:44:173:46 | After ...++ | cflow.cs:173:49:173:51 | Before ...++ | | +| cflow.cs:173:44:173:46 | Before ...++ | cflow.cs:173:44:173:44 | access to local variable i | | | cflow.cs:173:49:173:49 | access to local variable j | cflow.cs:173:49:173:51 | ...++ | | -| cflow.cs:173:49:173:51 | ...++ | cflow.cs:173:32:173:32 | access to local variable i | | +| cflow.cs:173:49:173:51 | ...++ | cflow.cs:173:49:173:51 | After ...++ | | +| cflow.cs:173:49:173:51 | After ...++ | cflow.cs:173:32:173:41 | Before ... < ... | | +| cflow.cs:173:49:173:51 | Before ...++ | cflow.cs:173:49:173:49 | access to local variable j | | +| cflow.cs:174:9:176:9 | After {...} | cflow.cs:173:9:176:9 | [LoopHeader] for (...;...;...) ... | | | cflow.cs:174:9:176:9 | {...} | cflow.cs:175:13:175:37 | ...; | | -| cflow.cs:175:13:175:36 | call to method WriteLine | cflow.cs:173:44:173:44 | access to local variable i | | -| cflow.cs:175:13:175:37 | ...; | cflow.cs:175:31:175:31 | access to local variable i | | +| cflow.cs:175:13:175:36 | After call to method WriteLine | cflow.cs:175:13:175:37 | After ...; | | +| cflow.cs:175:13:175:36 | Before call to method WriteLine | cflow.cs:175:31:175:35 | Before ... + ... | | +| cflow.cs:175:13:175:36 | call to method WriteLine | cflow.cs:175:13:175:36 | After call to method WriteLine | | +| cflow.cs:175:13:175:37 | ...; | cflow.cs:175:13:175:36 | Before call to method WriteLine | | +| cflow.cs:175:13:175:37 | After ...; | cflow.cs:174:9:176:9 | After {...} | | | cflow.cs:175:31:175:31 | access to local variable i | cflow.cs:175:35:175:35 | access to local variable j | | -| cflow.cs:175:31:175:35 | ... + ... | cflow.cs:175:13:175:36 | call to method WriteLine | | +| cflow.cs:175:31:175:35 | ... + ... | cflow.cs:175:31:175:35 | After ... + ... | | +| cflow.cs:175:31:175:35 | After ... + ... | cflow.cs:175:13:175:36 | call to method WriteLine | | +| cflow.cs:175:31:175:35 | Before ... + ... | cflow.cs:175:31:175:31 | access to local variable i | | | cflow.cs:175:35:175:35 | access to local variable j | cflow.cs:175:31:175:35 | ... + ... | | -| cflow.cs:179:10:179:16 | enter Lambdas | cflow.cs:180:5:183:5 | {...} | | -| cflow.cs:179:10:179:16 | exit Lambdas (normal) | cflow.cs:179:10:179:16 | exit Lambdas | | +| cflow.cs:179:10:179:16 | Entry | cflow.cs:180:5:183:5 | {...} | | +| cflow.cs:179:10:179:16 | Normal Exit | cflow.cs:179:10:179:16 | Exit | | +| cflow.cs:180:5:183:5 | After {...} | cflow.cs:179:10:179:16 | Normal Exit | | | cflow.cs:180:5:183:5 | {...} | cflow.cs:181:9:181:38 | ... ...; | | -| cflow.cs:181:9:181:38 | ... ...; | cflow.cs:181:28:181:37 | (...) => ... | | -| cflow.cs:181:24:181:37 | Func y = ... | cflow.cs:182:9:182:62 | ... ...; | | +| cflow.cs:181:9:181:38 | ... ...; | cflow.cs:181:24:181:37 | Before Func y = ... | | +| cflow.cs:181:9:181:38 | After ... ...; | cflow.cs:182:9:182:62 | ... ...; | | +| cflow.cs:181:24:181:24 | access to local variable y | cflow.cs:181:28:181:37 | (...) => ... | | +| cflow.cs:181:24:181:37 | After Func y = ... | cflow.cs:181:9:181:38 | After ... ...; | | +| cflow.cs:181:24:181:37 | Before Func y = ... | cflow.cs:181:24:181:24 | access to local variable y | | +| cflow.cs:181:24:181:37 | Func y = ... | cflow.cs:181:24:181:37 | After Func y = ... | | +| cflow.cs:181:28:181:28 | x | cflow.cs:181:33:181:37 | Before ... + ... | | | cflow.cs:181:28:181:37 | (...) => ... | cflow.cs:181:24:181:37 | Func y = ... | | -| cflow.cs:181:28:181:37 | enter (...) => ... | cflow.cs:181:33:181:33 | access to parameter x | | -| cflow.cs:181:28:181:37 | exit (...) => ... (normal) | cflow.cs:181:28:181:37 | exit (...) => ... | | +| cflow.cs:181:28:181:37 | Entry | cflow.cs:181:28:181:28 | x | | +| cflow.cs:181:28:181:37 | Normal Exit | cflow.cs:181:28:181:37 | Exit | | | cflow.cs:181:33:181:33 | access to parameter x | cflow.cs:181:37:181:37 | 1 | | -| cflow.cs:181:33:181:37 | ... + ... | cflow.cs:181:28:181:37 | exit (...) => ... (normal) | | +| cflow.cs:181:33:181:37 | ... + ... | cflow.cs:181:33:181:37 | After ... + ... | | +| cflow.cs:181:33:181:37 | After ... + ... | cflow.cs:181:28:181:37 | Normal Exit | | +| cflow.cs:181:33:181:37 | Before ... + ... | cflow.cs:181:33:181:33 | access to parameter x | | | cflow.cs:181:37:181:37 | 1 | cflow.cs:181:33:181:37 | ... + ... | | -| cflow.cs:182:9:182:62 | ... ...; | cflow.cs:182:28:182:61 | delegate(...) { ... } | | -| cflow.cs:182:24:182:61 | Func z = ... | cflow.cs:179:10:179:16 | exit Lambdas (normal) | | +| cflow.cs:182:9:182:62 | ... ...; | cflow.cs:182:24:182:61 | Before Func z = ... | | +| cflow.cs:182:9:182:62 | After ... ...; | cflow.cs:180:5:183:5 | After {...} | | +| cflow.cs:182:24:182:24 | access to local variable z | cflow.cs:182:28:182:61 | delegate(...) { ... } | | +| cflow.cs:182:24:182:61 | After Func z = ... | cflow.cs:182:9:182:62 | After ... ...; | | +| cflow.cs:182:24:182:61 | Before Func z = ... | cflow.cs:182:24:182:24 | access to local variable z | | +| cflow.cs:182:24:182:61 | Func z = ... | cflow.cs:182:24:182:61 | After Func z = ... | | +| cflow.cs:182:28:182:61 | Entry | cflow.cs:182:42:182:42 | x | | +| cflow.cs:182:28:182:61 | Normal Exit | cflow.cs:182:28:182:61 | Exit | | | cflow.cs:182:28:182:61 | delegate(...) { ... } | cflow.cs:182:24:182:61 | Func z = ... | | -| cflow.cs:182:28:182:61 | enter delegate(...) { ... } | cflow.cs:182:45:182:61 | {...} | | -| cflow.cs:182:28:182:61 | exit delegate(...) { ... } (normal) | cflow.cs:182:28:182:61 | exit delegate(...) { ... } | | -| cflow.cs:182:45:182:61 | {...} | cflow.cs:182:54:182:54 | access to parameter x | | -| cflow.cs:182:47:182:59 | return ...; | cflow.cs:182:28:182:61 | exit delegate(...) { ... } (normal) | return | +| cflow.cs:182:42:182:42 | x | cflow.cs:182:45:182:61 | {...} | | +| cflow.cs:182:45:182:61 | {...} | cflow.cs:182:47:182:59 | Before return ...; | | +| cflow.cs:182:47:182:59 | Before return ...; | cflow.cs:182:54:182:58 | Before ... + ... | | +| cflow.cs:182:47:182:59 | return ...; | cflow.cs:182:28:182:61 | Normal Exit | return | | cflow.cs:182:54:182:54 | access to parameter x | cflow.cs:182:58:182:58 | 1 | | -| cflow.cs:182:54:182:58 | ... + ... | cflow.cs:182:47:182:59 | return ...; | | +| cflow.cs:182:54:182:58 | ... + ... | cflow.cs:182:54:182:58 | After ... + ... | | +| cflow.cs:182:54:182:58 | After ... + ... | cflow.cs:182:47:182:59 | return ...; | | +| cflow.cs:182:54:182:58 | Before ... + ... | cflow.cs:182:54:182:54 | access to parameter x | | | cflow.cs:182:58:182:58 | 1 | cflow.cs:182:54:182:58 | ... + ... | | -| cflow.cs:185:10:185:18 | enter LogicalOr | cflow.cs:186:5:191:5 | {...} | | -| cflow.cs:185:10:185:18 | exit LogicalOr (normal) | cflow.cs:185:10:185:18 | exit LogicalOr | | +| cflow.cs:185:10:185:18 | Entry | cflow.cs:186:5:191:5 | {...} | | +| cflow.cs:185:10:185:18 | Normal Exit | cflow.cs:185:10:185:18 | Exit | | +| cflow.cs:186:5:191:5 | After {...} | cflow.cs:185:10:185:18 | Normal Exit | | | cflow.cs:186:5:191:5 | {...} | cflow.cs:187:9:190:52 | if (...) ... | | -| cflow.cs:187:9:190:52 | if (...) ... | cflow.cs:187:13:187:13 | 1 | | +| cflow.cs:187:9:190:52 | After if (...) ... | cflow.cs:186:5:191:5 | After {...} | | +| cflow.cs:187:9:190:52 | if (...) ... | cflow.cs:187:13:187:50 | ... \|\| ... | | | cflow.cs:187:13:187:13 | 1 | cflow.cs:187:18:187:18 | 2 | | -| cflow.cs:187:13:187:18 | ... == ... | cflow.cs:187:23:187:23 | 2 | false | -| cflow.cs:187:13:187:28 | ... \|\| ... | cflow.cs:187:34:187:34 | 1 | false | -| cflow.cs:187:13:187:50 | ... \|\| ... | cflow.cs:190:13:190:52 | ...; | false | +| cflow.cs:187:13:187:18 | ... == ... | cflow.cs:187:13:187:18 | After ... == ... [false] | false | +| cflow.cs:187:13:187:18 | ... == ... | cflow.cs:187:13:187:18 | After ... == ... [true] | true | +| cflow.cs:187:13:187:18 | After ... == ... [false] | cflow.cs:187:23:187:28 | Before ... == ... | | +| cflow.cs:187:13:187:18 | After ... == ... [true] | cflow.cs:187:13:187:28 | After ... \|\| ... [true] | true | +| cflow.cs:187:13:187:18 | Before ... == ... | cflow.cs:187:13:187:13 | 1 | | +| cflow.cs:187:13:187:28 | ... \|\| ... | cflow.cs:187:13:187:18 | Before ... == ... | | +| cflow.cs:187:13:187:28 | After ... \|\| ... [false] | cflow.cs:187:34:187:49 | ... && ... | | +| cflow.cs:187:13:187:28 | After ... \|\| ... [true] | cflow.cs:187:13:187:50 | After ... \|\| ... [true] | true | +| cflow.cs:187:13:187:50 | ... \|\| ... | cflow.cs:187:13:187:28 | ... \|\| ... | | +| cflow.cs:187:13:187:50 | After ... \|\| ... [false] | cflow.cs:190:13:190:52 | ...; | | +| cflow.cs:187:13:187:50 | After ... \|\| ... [true] | cflow.cs:188:13:188:55 | ...; | | | cflow.cs:187:18:187:18 | 2 | cflow.cs:187:13:187:18 | ... == ... | | | cflow.cs:187:23:187:23 | 2 | cflow.cs:187:28:187:28 | 3 | | -| cflow.cs:187:23:187:28 | ... == ... | cflow.cs:187:13:187:28 | ... \|\| ... | false | +| cflow.cs:187:23:187:28 | ... == ... | cflow.cs:187:23:187:28 | After ... == ... [false] | false | +| cflow.cs:187:23:187:28 | ... == ... | cflow.cs:187:23:187:28 | After ... == ... [true] | true | +| cflow.cs:187:23:187:28 | After ... == ... [false] | cflow.cs:187:13:187:28 | After ... \|\| ... [false] | false | +| cflow.cs:187:23:187:28 | After ... == ... [true] | cflow.cs:187:13:187:28 | After ... \|\| ... [true] | true | +| cflow.cs:187:23:187:28 | Before ... == ... | cflow.cs:187:23:187:23 | 2 | | | cflow.cs:187:28:187:28 | 3 | cflow.cs:187:23:187:28 | ... == ... | | | cflow.cs:187:34:187:34 | 1 | cflow.cs:187:39:187:39 | 3 | | -| cflow.cs:187:34:187:39 | ... == ... | cflow.cs:187:34:187:49 | ... && ... | false | -| cflow.cs:187:34:187:49 | ... && ... | cflow.cs:187:13:187:50 | ... \|\| ... | false | +| cflow.cs:187:34:187:39 | ... == ... | cflow.cs:187:34:187:39 | After ... == ... [false] | false | +| cflow.cs:187:34:187:39 | ... == ... | cflow.cs:187:34:187:39 | After ... == ... [true] | true | +| cflow.cs:187:34:187:39 | After ... == ... [false] | cflow.cs:187:34:187:49 | After ... && ... [false] | false | +| cflow.cs:187:34:187:39 | After ... == ... [true] | cflow.cs:187:44:187:49 | Before ... == ... | | +| cflow.cs:187:34:187:39 | Before ... == ... | cflow.cs:187:34:187:34 | 1 | | +| cflow.cs:187:34:187:49 | ... && ... | cflow.cs:187:34:187:39 | Before ... == ... | | +| cflow.cs:187:34:187:49 | After ... && ... [false] | cflow.cs:187:13:187:50 | After ... \|\| ... [false] | false | +| cflow.cs:187:34:187:49 | After ... && ... [true] | cflow.cs:187:13:187:50 | After ... \|\| ... [true] | true | | cflow.cs:187:39:187:39 | 3 | cflow.cs:187:34:187:39 | ... == ... | | -| cflow.cs:190:13:190:51 | call to method WriteLine | cflow.cs:185:10:185:18 | exit LogicalOr (normal) | | -| cflow.cs:190:13:190:52 | ...; | cflow.cs:190:31:190:50 | "This should happen" | | +| cflow.cs:187:44:187:44 | 3 | cflow.cs:187:49:187:49 | 1 | | +| cflow.cs:187:44:187:49 | ... == ... | cflow.cs:187:44:187:49 | After ... == ... [false] | false | +| cflow.cs:187:44:187:49 | ... == ... | cflow.cs:187:44:187:49 | After ... == ... [true] | true | +| cflow.cs:187:44:187:49 | After ... == ... [false] | cflow.cs:187:34:187:49 | After ... && ... [false] | false | +| cflow.cs:187:44:187:49 | After ... == ... [true] | cflow.cs:187:34:187:49 | After ... && ... [true] | true | +| cflow.cs:187:44:187:49 | Before ... == ... | cflow.cs:187:44:187:44 | 3 | | +| cflow.cs:187:49:187:49 | 1 | cflow.cs:187:44:187:49 | ... == ... | | +| cflow.cs:188:13:188:54 | After call to method WriteLine | cflow.cs:188:13:188:55 | After ...; | | +| cflow.cs:188:13:188:54 | Before call to method WriteLine | cflow.cs:188:31:188:53 | "This shouldn't happen" | | +| cflow.cs:188:13:188:54 | call to method WriteLine | cflow.cs:188:13:188:54 | After call to method WriteLine | | +| cflow.cs:188:13:188:55 | ...; | cflow.cs:188:13:188:54 | Before call to method WriteLine | | +| cflow.cs:188:13:188:55 | After ...; | cflow.cs:187:9:190:52 | After if (...) ... | | +| cflow.cs:188:31:188:53 | "This shouldn't happen" | cflow.cs:188:13:188:54 | call to method WriteLine | | +| cflow.cs:190:13:190:51 | After call to method WriteLine | cflow.cs:190:13:190:52 | After ...; | | +| cflow.cs:190:13:190:51 | Before call to method WriteLine | cflow.cs:190:31:190:50 | "This should happen" | | +| cflow.cs:190:13:190:51 | call to method WriteLine | cflow.cs:190:13:190:51 | After call to method WriteLine | | +| cflow.cs:190:13:190:52 | ...; | cflow.cs:190:13:190:51 | Before call to method WriteLine | | +| cflow.cs:190:13:190:52 | After ...; | cflow.cs:187:9:190:52 | After if (...) ... | | | cflow.cs:190:31:190:50 | "This should happen" | cflow.cs:190:13:190:51 | call to method WriteLine | | -| cflow.cs:193:10:193:17 | enter Booleans | cflow.cs:194:5:206:5 | {...} | | -| cflow.cs:193:10:193:17 | exit Booleans (abnormal) | cflow.cs:193:10:193:17 | exit Booleans | | -| cflow.cs:193:10:193:17 | exit Booleans (normal) | cflow.cs:193:10:193:17 | exit Booleans | | +| cflow.cs:193:10:193:17 | Entry | cflow.cs:194:5:206:5 | {...} | | +| cflow.cs:193:10:193:17 | Exceptional Exit | cflow.cs:193:10:193:17 | Exit | | +| cflow.cs:193:10:193:17 | Normal Exit | cflow.cs:193:10:193:17 | Exit | | +| cflow.cs:194:5:206:5 | After {...} | cflow.cs:193:10:193:17 | Normal Exit | | | cflow.cs:194:5:206:5 | {...} | cflow.cs:195:9:195:57 | ... ...; | | -| cflow.cs:195:9:195:57 | ... ...; | cflow.cs:195:17:195:21 | this access | | -| cflow.cs:195:13:195:56 | Boolean b = ... | cflow.cs:197:9:198:49 | if (...) ... | | -| cflow.cs:195:17:195:21 | access to field Field | cflow.cs:195:17:195:28 | access to property Length | | +| cflow.cs:195:9:195:57 | ... ...; | cflow.cs:195:13:195:56 | Before Boolean b = ... | | +| cflow.cs:195:9:195:57 | After ... ...; | cflow.cs:197:9:198:49 | if (...) ... | | +| cflow.cs:195:13:195:13 | access to local variable b | cflow.cs:195:17:195:56 | ... && ... | | +| cflow.cs:195:13:195:56 | After Boolean b = ... | cflow.cs:195:9:195:57 | After ... ...; | | +| cflow.cs:195:13:195:56 | Before Boolean b = ... | cflow.cs:195:13:195:13 | access to local variable b | | +| cflow.cs:195:13:195:56 | Boolean b = ... | cflow.cs:195:13:195:56 | After Boolean b = ... | | +| cflow.cs:195:17:195:21 | After access to field Field | cflow.cs:195:17:195:28 | access to property Length | | +| cflow.cs:195:17:195:21 | Before access to field Field | cflow.cs:195:17:195:21 | this access | | +| cflow.cs:195:17:195:21 | access to field Field | cflow.cs:195:17:195:21 | After access to field Field | | | cflow.cs:195:17:195:21 | this access | cflow.cs:195:17:195:21 | access to field Field | | -| cflow.cs:195:17:195:28 | access to property Length | cflow.cs:195:32:195:32 | 0 | | -| cflow.cs:195:17:195:32 | ... > ... | cflow.cs:195:17:195:56 | ... && ... | false | -| cflow.cs:195:17:195:32 | ... > ... | cflow.cs:195:39:195:43 | this access | true | -| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:195:13:195:56 | Boolean b = ... | | +| cflow.cs:195:17:195:28 | After access to property Length | cflow.cs:195:32:195:32 | 0 | | +| cflow.cs:195:17:195:28 | Before access to property Length | cflow.cs:195:17:195:21 | Before access to field Field | | +| cflow.cs:195:17:195:28 | access to property Length | cflow.cs:195:17:195:28 | After access to property Length | | +| cflow.cs:195:17:195:32 | ... > ... | cflow.cs:195:17:195:32 | After ... > ... [false] | false | +| cflow.cs:195:17:195:32 | ... > ... | cflow.cs:195:17:195:32 | After ... > ... [true] | true | +| cflow.cs:195:17:195:32 | After ... > ... [false] | cflow.cs:195:17:195:56 | After ... && ... | | +| cflow.cs:195:17:195:32 | After ... > ... [true] | cflow.cs:195:37:195:56 | !... | | +| cflow.cs:195:17:195:32 | Before ... > ... | cflow.cs:195:17:195:28 | Before access to property Length | | +| cflow.cs:195:17:195:56 | ... && ... | cflow.cs:195:17:195:32 | Before ... > ... | | +| cflow.cs:195:17:195:56 | After ... && ... | cflow.cs:195:13:195:56 | Boolean b = ... | | | cflow.cs:195:32:195:32 | 0 | cflow.cs:195:17:195:32 | ... > ... | | -| cflow.cs:195:37:195:56 | !... | cflow.cs:195:17:195:56 | ... && ... | | -| cflow.cs:195:39:195:43 | access to field Field | cflow.cs:195:39:195:50 | access to property Length | | +| cflow.cs:195:37:195:56 | !... | cflow.cs:195:39:195:55 | Before ... == ... | | +| cflow.cs:195:37:195:56 | After !... | cflow.cs:195:17:195:56 | After ... && ... | | +| cflow.cs:195:39:195:43 | After access to field Field | cflow.cs:195:39:195:50 | access to property Length | | +| cflow.cs:195:39:195:43 | Before access to field Field | cflow.cs:195:39:195:43 | this access | | +| cflow.cs:195:39:195:43 | access to field Field | cflow.cs:195:39:195:43 | After access to field Field | | | cflow.cs:195:39:195:43 | this access | cflow.cs:195:39:195:43 | access to field Field | | -| cflow.cs:195:39:195:50 | access to property Length | cflow.cs:195:55:195:55 | 1 | | -| cflow.cs:195:39:195:55 | ... == ... | cflow.cs:195:37:195:56 | !... | | +| cflow.cs:195:39:195:50 | After access to property Length | cflow.cs:195:55:195:55 | 1 | | +| cflow.cs:195:39:195:50 | Before access to property Length | cflow.cs:195:39:195:43 | Before access to field Field | | +| cflow.cs:195:39:195:50 | access to property Length | cflow.cs:195:39:195:50 | After access to property Length | | +| cflow.cs:195:39:195:55 | ... == ... | cflow.cs:195:39:195:55 | After ... == ... | | +| cflow.cs:195:39:195:55 | After ... == ... | cflow.cs:195:37:195:56 | After !... | | +| cflow.cs:195:39:195:55 | Before ... == ... | cflow.cs:195:39:195:50 | Before access to property Length | | | cflow.cs:195:55:195:55 | 1 | cflow.cs:195:39:195:55 | ... == ... | | -| cflow.cs:197:9:198:49 | if (...) ... | cflow.cs:197:15:197:19 | this access | | -| cflow.cs:197:13:197:47 | [false] !... | cflow.cs:200:9:205:9 | if (...) ... | false | -| cflow.cs:197:13:197:47 | [true] !... | cflow.cs:198:13:198:49 | ...; | true | -| cflow.cs:197:15:197:19 | access to field Field | cflow.cs:197:15:197:26 | access to property Length | | +| cflow.cs:197:9:198:49 | After if (...) ... | cflow.cs:200:9:205:9 | if (...) ... | | +| cflow.cs:197:9:198:49 | if (...) ... | cflow.cs:197:13:197:47 | !... | | +| cflow.cs:197:13:197:47 | !... | cflow.cs:197:15:197:46 | ... ? ... : ... | | +| cflow.cs:197:13:197:47 | After !... [false] | cflow.cs:197:9:198:49 | After if (...) ... | | +| cflow.cs:197:13:197:47 | After !... [true] | cflow.cs:198:13:198:49 | ...; | | +| cflow.cs:197:15:197:19 | After access to field Field | cflow.cs:197:15:197:26 | access to property Length | | +| cflow.cs:197:15:197:19 | Before access to field Field | cflow.cs:197:15:197:19 | this access | | +| cflow.cs:197:15:197:19 | access to field Field | cflow.cs:197:15:197:19 | After access to field Field | | | cflow.cs:197:15:197:19 | this access | cflow.cs:197:15:197:19 | access to field Field | | -| cflow.cs:197:15:197:26 | access to property Length | cflow.cs:197:31:197:31 | 0 | | -| cflow.cs:197:15:197:31 | ... == ... | cflow.cs:197:35:197:39 | false | true | -| cflow.cs:197:15:197:31 | ... == ... | cflow.cs:197:43:197:46 | true | false | -| cflow.cs:197:15:197:46 | [false] ... ? ... : ... | cflow.cs:197:13:197:47 | [true] !... | false | -| cflow.cs:197:15:197:46 | [true] ... ? ... : ... | cflow.cs:197:13:197:47 | [false] !... | true | +| cflow.cs:197:15:197:26 | After access to property Length | cflow.cs:197:31:197:31 | 0 | | +| cflow.cs:197:15:197:26 | Before access to property Length | cflow.cs:197:15:197:19 | Before access to field Field | | +| cflow.cs:197:15:197:26 | access to property Length | cflow.cs:197:15:197:26 | After access to property Length | | +| cflow.cs:197:15:197:31 | ... == ... | cflow.cs:197:15:197:31 | After ... == ... [false] | false | +| cflow.cs:197:15:197:31 | ... == ... | cflow.cs:197:15:197:31 | After ... == ... [true] | true | +| cflow.cs:197:15:197:31 | After ... == ... [false] | cflow.cs:197:43:197:46 | true | | +| cflow.cs:197:15:197:31 | After ... == ... [true] | cflow.cs:197:35:197:39 | false | | +| cflow.cs:197:15:197:31 | Before ... == ... | cflow.cs:197:15:197:26 | Before access to property Length | | +| cflow.cs:197:15:197:46 | ... ? ... : ... | cflow.cs:197:15:197:31 | Before ... == ... | | +| cflow.cs:197:15:197:46 | After ... ? ... : ... [false] | cflow.cs:197:13:197:47 | After !... [true] | true | +| cflow.cs:197:15:197:46 | After ... ? ... : ... [true] | cflow.cs:197:13:197:47 | After !... [false] | false | | cflow.cs:197:31:197:31 | 0 | cflow.cs:197:15:197:31 | ... == ... | | -| cflow.cs:197:35:197:39 | false | cflow.cs:197:15:197:46 | [false] ... ? ... : ... | false | -| cflow.cs:197:43:197:46 | true | cflow.cs:197:15:197:46 | [true] ... ? ... : ... | true | -| cflow.cs:198:13:198:48 | ... = ... | cflow.cs:200:9:205:9 | if (...) ... | | -| cflow.cs:198:13:198:49 | ...; | cflow.cs:198:17:198:21 | this access | | -| cflow.cs:198:17:198:21 | access to field Field | cflow.cs:198:17:198:28 | access to property Length | | +| cflow.cs:197:35:197:39 | After false [false] | cflow.cs:197:15:197:46 | After ... ? ... : ... [false] | false | +| cflow.cs:197:35:197:39 | false | cflow.cs:197:35:197:39 | After false [false] | false | +| cflow.cs:197:43:197:46 | After true [true] | cflow.cs:197:15:197:46 | After ... ? ... : ... [true] | true | +| cflow.cs:197:43:197:46 | true | cflow.cs:197:43:197:46 | After true [true] | true | +| cflow.cs:198:13:198:13 | access to local variable b | cflow.cs:198:17:198:48 | ... ? ... : ... | | +| cflow.cs:198:13:198:48 | ... = ... | cflow.cs:198:13:198:48 | After ... = ... | | +| cflow.cs:198:13:198:48 | After ... = ... | cflow.cs:198:13:198:49 | After ...; | | +| cflow.cs:198:13:198:48 | Before ... = ... | cflow.cs:198:13:198:13 | access to local variable b | | +| cflow.cs:198:13:198:49 | ...; | cflow.cs:198:13:198:48 | Before ... = ... | | +| cflow.cs:198:13:198:49 | After ...; | cflow.cs:197:9:198:49 | After if (...) ... | | +| cflow.cs:198:17:198:21 | After access to field Field | cflow.cs:198:17:198:28 | access to property Length | | +| cflow.cs:198:17:198:21 | Before access to field Field | cflow.cs:198:17:198:21 | this access | | +| cflow.cs:198:17:198:21 | access to field Field | cflow.cs:198:17:198:21 | After access to field Field | | | cflow.cs:198:17:198:21 | this access | cflow.cs:198:17:198:21 | access to field Field | | -| cflow.cs:198:17:198:28 | access to property Length | cflow.cs:198:33:198:33 | 0 | | -| cflow.cs:198:17:198:33 | ... == ... | cflow.cs:198:37:198:41 | false | true | -| cflow.cs:198:17:198:33 | ... == ... | cflow.cs:198:45:198:48 | true | false | -| cflow.cs:198:17:198:48 | ... ? ... : ... | cflow.cs:198:13:198:48 | ... = ... | | +| cflow.cs:198:17:198:28 | After access to property Length | cflow.cs:198:33:198:33 | 0 | | +| cflow.cs:198:17:198:28 | Before access to property Length | cflow.cs:198:17:198:21 | Before access to field Field | | +| cflow.cs:198:17:198:28 | access to property Length | cflow.cs:198:17:198:28 | After access to property Length | | +| cflow.cs:198:17:198:33 | ... == ... | cflow.cs:198:17:198:33 | After ... == ... [false] | false | +| cflow.cs:198:17:198:33 | ... == ... | cflow.cs:198:17:198:33 | After ... == ... [true] | true | +| cflow.cs:198:17:198:33 | After ... == ... [false] | cflow.cs:198:45:198:48 | true | | +| cflow.cs:198:17:198:33 | After ... == ... [true] | cflow.cs:198:37:198:41 | false | | +| cflow.cs:198:17:198:33 | Before ... == ... | cflow.cs:198:17:198:28 | Before access to property Length | | +| cflow.cs:198:17:198:48 | ... ? ... : ... | cflow.cs:198:17:198:33 | Before ... == ... | | +| cflow.cs:198:17:198:48 | After ... ? ... : ... | cflow.cs:198:13:198:48 | ... = ... | | | cflow.cs:198:33:198:33 | 0 | cflow.cs:198:17:198:33 | ... == ... | | -| cflow.cs:198:37:198:41 | false | cflow.cs:198:17:198:48 | ... ? ... : ... | | -| cflow.cs:198:45:198:48 | true | cflow.cs:198:17:198:48 | ... ? ... : ... | | -| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:200:15:200:19 | this access | | -| cflow.cs:200:13:200:32 | [false] !... | cflow.cs:200:40:200:44 | this access | false | -| cflow.cs:200:13:200:32 | [true] !... | cflow.cs:200:13:200:62 | [true] ... \|\| ... | true | -| cflow.cs:200:13:200:62 | [false] ... \|\| ... | cflow.cs:193:10:193:17 | exit Booleans (normal) | false | -| cflow.cs:200:13:200:62 | [true] ... \|\| ... | cflow.cs:201:9:205:9 | {...} | true | -| cflow.cs:200:15:200:19 | access to field Field | cflow.cs:200:15:200:26 | access to property Length | | +| cflow.cs:198:37:198:41 | false | cflow.cs:198:17:198:48 | After ... ? ... : ... | | +| cflow.cs:198:45:198:48 | true | cflow.cs:198:17:198:48 | After ... ? ... : ... | | +| cflow.cs:200:9:205:9 | After if (...) ... | cflow.cs:194:5:206:5 | After {...} | | +| cflow.cs:200:9:205:9 | if (...) ... | cflow.cs:200:13:200:62 | ... \|\| ... | | +| cflow.cs:200:13:200:32 | !... | cflow.cs:200:15:200:31 | Before ... == ... | | +| cflow.cs:200:13:200:32 | After !... [false] | cflow.cs:200:37:200:62 | !... | | +| cflow.cs:200:13:200:32 | After !... [true] | cflow.cs:200:13:200:62 | After ... \|\| ... [true] | true | +| cflow.cs:200:13:200:62 | ... \|\| ... | cflow.cs:200:13:200:32 | !... | | +| cflow.cs:200:13:200:62 | After ... \|\| ... [false] | cflow.cs:200:9:205:9 | After if (...) ... | | +| cflow.cs:200:13:200:62 | After ... \|\| ... [true] | cflow.cs:201:9:205:9 | {...} | | +| cflow.cs:200:15:200:19 | After access to field Field | cflow.cs:200:15:200:26 | access to property Length | | +| cflow.cs:200:15:200:19 | Before access to field Field | cflow.cs:200:15:200:19 | this access | | +| cflow.cs:200:15:200:19 | access to field Field | cflow.cs:200:15:200:19 | After access to field Field | | | cflow.cs:200:15:200:19 | this access | cflow.cs:200:15:200:19 | access to field Field | | -| cflow.cs:200:15:200:26 | access to property Length | cflow.cs:200:31:200:31 | 0 | | -| cflow.cs:200:15:200:31 | ... == ... | cflow.cs:200:13:200:32 | [false] !... | true | -| cflow.cs:200:15:200:31 | ... == ... | cflow.cs:200:13:200:32 | [true] !... | false | +| cflow.cs:200:15:200:26 | After access to property Length | cflow.cs:200:31:200:31 | 0 | | +| cflow.cs:200:15:200:26 | Before access to property Length | cflow.cs:200:15:200:19 | Before access to field Field | | +| cflow.cs:200:15:200:26 | access to property Length | cflow.cs:200:15:200:26 | After access to property Length | | +| cflow.cs:200:15:200:31 | ... == ... | cflow.cs:200:15:200:31 | After ... == ... [false] | false | +| cflow.cs:200:15:200:31 | ... == ... | cflow.cs:200:15:200:31 | After ... == ... [true] | true | +| cflow.cs:200:15:200:31 | After ... == ... [false] | cflow.cs:200:13:200:32 | After !... [true] | true | +| cflow.cs:200:15:200:31 | After ... == ... [true] | cflow.cs:200:13:200:32 | After !... [false] | false | +| cflow.cs:200:15:200:31 | Before ... == ... | cflow.cs:200:15:200:26 | Before access to property Length | | | cflow.cs:200:31:200:31 | 0 | cflow.cs:200:15:200:31 | ... == ... | | -| cflow.cs:200:37:200:62 | [false] !... | cflow.cs:200:13:200:62 | [false] ... \|\| ... | false | -| cflow.cs:200:37:200:62 | [true] !... | cflow.cs:200:13:200:62 | [true] ... \|\| ... | true | -| cflow.cs:200:38:200:62 | [false] !... | cflow.cs:200:37:200:62 | [true] !... | false | -| cflow.cs:200:38:200:62 | [true] !... | cflow.cs:200:37:200:62 | [false] !... | true | -| cflow.cs:200:40:200:44 | access to field Field | cflow.cs:200:40:200:51 | access to property Length | | +| cflow.cs:200:37:200:62 | !... | cflow.cs:200:38:200:62 | !... | | +| cflow.cs:200:37:200:62 | After !... [false] | cflow.cs:200:13:200:62 | After ... \|\| ... [false] | false | +| cflow.cs:200:37:200:62 | After !... [true] | cflow.cs:200:13:200:62 | After ... \|\| ... [true] | true | +| cflow.cs:200:38:200:62 | !... | cflow.cs:200:40:200:61 | ... && ... | | +| cflow.cs:200:38:200:62 | After !... [false] | cflow.cs:200:37:200:62 | After !... [true] | true | +| cflow.cs:200:38:200:62 | After !... [true] | cflow.cs:200:37:200:62 | After !... [false] | false | +| cflow.cs:200:40:200:44 | After access to field Field | cflow.cs:200:40:200:51 | access to property Length | | +| cflow.cs:200:40:200:44 | Before access to field Field | cflow.cs:200:40:200:44 | this access | | +| cflow.cs:200:40:200:44 | access to field Field | cflow.cs:200:40:200:44 | After access to field Field | | | cflow.cs:200:40:200:44 | this access | cflow.cs:200:40:200:44 | access to field Field | | -| cflow.cs:200:40:200:51 | access to property Length | cflow.cs:200:56:200:56 | 1 | | -| cflow.cs:200:40:200:56 | ... == ... | cflow.cs:200:40:200:61 | [false] ... && ... | false | -| cflow.cs:200:40:200:56 | ... == ... | cflow.cs:200:61:200:61 | access to local variable b | true | -| cflow.cs:200:40:200:61 | [false] ... && ... | cflow.cs:200:38:200:62 | [true] !... | false | -| cflow.cs:200:40:200:61 | [true] ... && ... | cflow.cs:200:38:200:62 | [false] !... | true | +| cflow.cs:200:40:200:51 | After access to property Length | cflow.cs:200:56:200:56 | 1 | | +| cflow.cs:200:40:200:51 | Before access to property Length | cflow.cs:200:40:200:44 | Before access to field Field | | +| cflow.cs:200:40:200:51 | access to property Length | cflow.cs:200:40:200:51 | After access to property Length | | +| cflow.cs:200:40:200:56 | ... == ... | cflow.cs:200:40:200:56 | After ... == ... [false] | false | +| cflow.cs:200:40:200:56 | ... == ... | cflow.cs:200:40:200:56 | After ... == ... [true] | true | +| cflow.cs:200:40:200:56 | After ... == ... [false] | cflow.cs:200:40:200:61 | After ... && ... [false] | false | +| cflow.cs:200:40:200:56 | After ... == ... [true] | cflow.cs:200:61:200:61 | access to local variable b | | +| cflow.cs:200:40:200:56 | Before ... == ... | cflow.cs:200:40:200:51 | Before access to property Length | | +| cflow.cs:200:40:200:61 | ... && ... | cflow.cs:200:40:200:56 | Before ... == ... | | +| cflow.cs:200:40:200:61 | After ... && ... [false] | cflow.cs:200:38:200:62 | After !... [true] | true | +| cflow.cs:200:40:200:61 | After ... && ... [true] | cflow.cs:200:38:200:62 | After !... [false] | false | | cflow.cs:200:56:200:56 | 1 | cflow.cs:200:40:200:56 | ... == ... | | -| cflow.cs:200:61:200:61 | access to local variable b | cflow.cs:200:40:200:61 | [false] ... && ... | false | -| cflow.cs:200:61:200:61 | access to local variable b | cflow.cs:200:40:200:61 | [true] ... && ... | true | +| cflow.cs:200:61:200:61 | After access to local variable b [false] | cflow.cs:200:40:200:61 | After ... && ... [false] | false | +| cflow.cs:200:61:200:61 | After access to local variable b [true] | cflow.cs:200:40:200:61 | After ... && ... [true] | true | +| cflow.cs:200:61:200:61 | access to local variable b | cflow.cs:200:61:200:61 | After access to local variable b [false] | false | +| cflow.cs:200:61:200:61 | access to local variable b | cflow.cs:200:61:200:61 | After access to local variable b [true] | true | | cflow.cs:201:9:205:9 | {...} | cflow.cs:202:13:204:13 | {...} | | -| cflow.cs:202:13:204:13 | {...} | cflow.cs:203:23:203:37 | object creation of type Exception | | -| cflow.cs:203:17:203:38 | throw ...; | cflow.cs:193:10:193:17 | exit Booleans (abnormal) | exception | -| cflow.cs:203:23:203:37 | object creation of type Exception | cflow.cs:203:17:203:38 | throw ...; | | -| cflow.cs:208:10:208:11 | enter Do | cflow.cs:209:5:222:5 | {...} | | -| cflow.cs:208:10:208:11 | exit Do (normal) | cflow.cs:208:10:208:11 | exit Do | | +| cflow.cs:202:13:204:13 | {...} | cflow.cs:203:17:203:38 | Before throw ...; | | +| cflow.cs:203:17:203:38 | Before throw ...; | cflow.cs:203:23:203:37 | Before object creation of type Exception | | +| cflow.cs:203:17:203:38 | throw ...; | cflow.cs:193:10:193:17 | Exceptional Exit | exception | +| cflow.cs:203:23:203:37 | After object creation of type Exception | cflow.cs:203:17:203:38 | throw ...; | | +| cflow.cs:203:23:203:37 | Before object creation of type Exception | cflow.cs:203:23:203:37 | object creation of type Exception | | +| cflow.cs:203:23:203:37 | object creation of type Exception | cflow.cs:203:23:203:37 | After object creation of type Exception | | +| cflow.cs:208:10:208:11 | Entry | cflow.cs:209:5:222:5 | {...} | | +| cflow.cs:208:10:208:11 | Normal Exit | cflow.cs:208:10:208:11 | Exit | | +| cflow.cs:209:5:222:5 | After {...} | cflow.cs:208:10:208:11 | Normal Exit | | | cflow.cs:209:5:222:5 | {...} | cflow.cs:210:9:221:36 | do ... while (...); | | +| cflow.cs:210:9:221:36 | After do ... while (...); | cflow.cs:209:5:222:5 | After {...} | | +| cflow.cs:210:9:221:36 | [LoopHeader] do ... while (...); | cflow.cs:221:18:221:34 | Before ... < ... | | | cflow.cs:210:9:221:36 | do ... while (...); | cflow.cs:211:9:221:9 | {...} | | +| cflow.cs:211:9:221:9 | After {...} | cflow.cs:210:9:221:36 | [LoopHeader] do ... while (...); | | | cflow.cs:211:9:221:9 | {...} | cflow.cs:212:13:212:25 | ...; | | -| cflow.cs:212:13:212:17 | access to field Field | cflow.cs:212:22:212:24 | "a" | | +| cflow.cs:212:13:212:17 | After access to field Field | cflow.cs:212:22:212:24 | "a" | | +| cflow.cs:212:13:212:17 | Before access to field Field | cflow.cs:212:13:212:17 | this access | | +| cflow.cs:212:13:212:17 | access to field Field | cflow.cs:212:13:212:17 | After access to field Field | | | cflow.cs:212:13:212:17 | this access | cflow.cs:212:13:212:17 | access to field Field | | -| cflow.cs:212:13:212:24 | ... += ... | cflow.cs:213:13:216:13 | if (...) ... | | -| cflow.cs:212:13:212:25 | ...; | cflow.cs:212:13:212:17 | this access | | +| cflow.cs:212:13:212:24 | ... += ... | cflow.cs:212:13:212:24 | After ... += ... | | +| cflow.cs:212:13:212:24 | After ... += ... | cflow.cs:212:13:212:25 | After ...; | | +| cflow.cs:212:13:212:24 | Before ... += ... | cflow.cs:212:13:212:17 | Before access to field Field | | +| cflow.cs:212:13:212:25 | ...; | cflow.cs:212:13:212:24 | Before ... += ... | | +| cflow.cs:212:13:212:25 | After ...; | cflow.cs:213:13:216:13 | if (...) ... | | | cflow.cs:212:22:212:24 | "a" | cflow.cs:212:13:212:24 | ... += ... | | -| cflow.cs:213:13:216:13 | if (...) ... | cflow.cs:213:17:213:21 | this access | | -| cflow.cs:213:17:213:21 | access to field Field | cflow.cs:213:17:213:28 | access to property Length | | +| cflow.cs:213:13:216:13 | After if (...) ... | cflow.cs:217:13:220:13 | if (...) ... | | +| cflow.cs:213:13:216:13 | if (...) ... | cflow.cs:213:17:213:32 | Before ... > ... | | +| cflow.cs:213:17:213:21 | After access to field Field | cflow.cs:213:17:213:28 | access to property Length | | +| cflow.cs:213:17:213:21 | Before access to field Field | cflow.cs:213:17:213:21 | this access | | +| cflow.cs:213:17:213:21 | access to field Field | cflow.cs:213:17:213:21 | After access to field Field | | | cflow.cs:213:17:213:21 | this access | cflow.cs:213:17:213:21 | access to field Field | | -| cflow.cs:213:17:213:28 | access to property Length | cflow.cs:213:32:213:32 | 0 | | -| cflow.cs:213:17:213:32 | ... > ... | cflow.cs:214:13:216:13 | {...} | true | -| cflow.cs:213:17:213:32 | ... > ... | cflow.cs:217:13:220:13 | if (...) ... | false | +| cflow.cs:213:17:213:28 | After access to property Length | cflow.cs:213:32:213:32 | 0 | | +| cflow.cs:213:17:213:28 | Before access to property Length | cflow.cs:213:17:213:21 | Before access to field Field | | +| cflow.cs:213:17:213:28 | access to property Length | cflow.cs:213:17:213:28 | After access to property Length | | +| cflow.cs:213:17:213:32 | ... > ... | cflow.cs:213:17:213:32 | After ... > ... [false] | false | +| cflow.cs:213:17:213:32 | ... > ... | cflow.cs:213:17:213:32 | After ... > ... [true] | true | +| cflow.cs:213:17:213:32 | After ... > ... [false] | cflow.cs:213:13:216:13 | After if (...) ... | | +| cflow.cs:213:17:213:32 | After ... > ... [true] | cflow.cs:214:13:216:13 | {...} | | +| cflow.cs:213:17:213:32 | Before ... > ... | cflow.cs:213:17:213:28 | Before access to property Length | | | cflow.cs:213:32:213:32 | 0 | cflow.cs:213:17:213:32 | ... > ... | | -| cflow.cs:214:13:216:13 | {...} | cflow.cs:215:17:215:25 | continue; | | -| cflow.cs:215:17:215:25 | continue; | cflow.cs:221:18:221:22 | this access | continue | -| cflow.cs:217:13:220:13 | if (...) ... | cflow.cs:217:17:217:21 | this access | | -| cflow.cs:217:17:217:21 | access to field Field | cflow.cs:217:17:217:28 | access to property Length | | +| cflow.cs:214:13:216:13 | {...} | cflow.cs:215:17:215:25 | Before continue; | | +| cflow.cs:215:17:215:25 | Before continue; | cflow.cs:215:17:215:25 | continue; | | +| cflow.cs:215:17:215:25 | continue; | cflow.cs:210:9:221:36 | [LoopHeader] do ... while (...); | continue | +| cflow.cs:217:13:220:13 | After if (...) ... | cflow.cs:211:9:221:9 | After {...} | | +| cflow.cs:217:13:220:13 | if (...) ... | cflow.cs:217:17:217:32 | Before ... < ... | | +| cflow.cs:217:17:217:21 | After access to field Field | cflow.cs:217:17:217:28 | access to property Length | | +| cflow.cs:217:17:217:21 | Before access to field Field | cflow.cs:217:17:217:21 | this access | | +| cflow.cs:217:17:217:21 | access to field Field | cflow.cs:217:17:217:21 | After access to field Field | | | cflow.cs:217:17:217:21 | this access | cflow.cs:217:17:217:21 | access to field Field | | -| cflow.cs:217:17:217:28 | access to property Length | cflow.cs:217:32:217:32 | 0 | | -| cflow.cs:217:17:217:32 | ... < ... | cflow.cs:218:13:220:13 | {...} | true | -| cflow.cs:217:17:217:32 | ... < ... | cflow.cs:221:18:221:22 | this access | false | +| cflow.cs:217:17:217:28 | After access to property Length | cflow.cs:217:32:217:32 | 0 | | +| cflow.cs:217:17:217:28 | Before access to property Length | cflow.cs:217:17:217:21 | Before access to field Field | | +| cflow.cs:217:17:217:28 | access to property Length | cflow.cs:217:17:217:28 | After access to property Length | | +| cflow.cs:217:17:217:32 | ... < ... | cflow.cs:217:17:217:32 | After ... < ... [false] | false | +| cflow.cs:217:17:217:32 | ... < ... | cflow.cs:217:17:217:32 | After ... < ... [true] | true | +| cflow.cs:217:17:217:32 | After ... < ... [false] | cflow.cs:217:13:220:13 | After if (...) ... | | +| cflow.cs:217:17:217:32 | After ... < ... [true] | cflow.cs:218:13:220:13 | {...} | | +| cflow.cs:217:17:217:32 | Before ... < ... | cflow.cs:217:17:217:28 | Before access to property Length | | | cflow.cs:217:32:217:32 | 0 | cflow.cs:217:17:217:32 | ... < ... | | -| cflow.cs:218:13:220:13 | {...} | cflow.cs:219:17:219:22 | break; | | -| cflow.cs:219:17:219:22 | break; | cflow.cs:208:10:208:11 | exit Do (normal) | break | -| cflow.cs:221:18:221:22 | access to field Field | cflow.cs:221:18:221:29 | access to property Length | | +| cflow.cs:218:13:220:13 | {...} | cflow.cs:219:17:219:22 | Before break; | | +| cflow.cs:219:17:219:22 | Before break; | cflow.cs:219:17:219:22 | break; | | +| cflow.cs:219:17:219:22 | break; | cflow.cs:210:9:221:36 | After do ... while (...); | break | +| cflow.cs:221:18:221:22 | After access to field Field | cflow.cs:221:18:221:29 | access to property Length | | +| cflow.cs:221:18:221:22 | Before access to field Field | cflow.cs:221:18:221:22 | this access | | +| cflow.cs:221:18:221:22 | access to field Field | cflow.cs:221:18:221:22 | After access to field Field | | | cflow.cs:221:18:221:22 | this access | cflow.cs:221:18:221:22 | access to field Field | | -| cflow.cs:221:18:221:29 | access to property Length | cflow.cs:221:33:221:34 | 10 | | -| cflow.cs:221:18:221:34 | ... < ... | cflow.cs:208:10:208:11 | exit Do (normal) | false | -| cflow.cs:221:18:221:34 | ... < ... | cflow.cs:211:9:221:9 | {...} | true | +| cflow.cs:221:18:221:29 | After access to property Length | cflow.cs:221:33:221:34 | 10 | | +| cflow.cs:221:18:221:29 | Before access to property Length | cflow.cs:221:18:221:22 | Before access to field Field | | +| cflow.cs:221:18:221:29 | access to property Length | cflow.cs:221:18:221:29 | After access to property Length | | +| cflow.cs:221:18:221:34 | ... < ... | cflow.cs:221:18:221:34 | After ... < ... [false] | false | +| cflow.cs:221:18:221:34 | ... < ... | cflow.cs:221:18:221:34 | After ... < ... [true] | true | +| cflow.cs:221:18:221:34 | After ... < ... [false] | cflow.cs:210:9:221:36 | After do ... while (...); | | +| cflow.cs:221:18:221:34 | After ... < ... [true] | cflow.cs:211:9:221:9 | {...} | | +| cflow.cs:221:18:221:34 | Before ... < ... | cflow.cs:221:18:221:29 | Before access to property Length | | | cflow.cs:221:33:221:34 | 10 | cflow.cs:221:18:221:34 | ... < ... | | -| cflow.cs:224:10:224:16 | enter Foreach | cflow.cs:225:5:238:5 | {...} | | -| cflow.cs:224:10:224:16 | exit Foreach (normal) | cflow.cs:224:10:224:16 | exit Foreach | | -| cflow.cs:225:5:238:5 | {...} | cflow.cs:226:57:226:59 | "a" | | -| cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | cflow.cs:224:10:224:16 | exit Foreach (normal) | empty | -| cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | cflow.cs:226:22:226:22 | String x | non-empty | +| cflow.cs:224:10:224:16 | Entry | cflow.cs:225:5:238:5 | {...} | | +| cflow.cs:224:10:224:16 | Normal Exit | cflow.cs:224:10:224:16 | Exit | | +| cflow.cs:225:5:238:5 | After {...} | cflow.cs:224:10:224:16 | Normal Exit | | +| cflow.cs:225:5:238:5 | {...} | cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | | +| cflow.cs:226:9:237:9 | After foreach (... ... in ...) ... | cflow.cs:225:5:238:5 | After {...} | | +| cflow.cs:226:9:237:9 | [LoopHeader] foreach (... ... in ...) ... | cflow.cs:226:9:237:9 | After foreach (... ... in ...) ... | | +| cflow.cs:226:9:237:9 | [LoopHeader] foreach (... ... in ...) ... | cflow.cs:226:22:226:22 | String x | | +| cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | cflow.cs:226:27:226:64 | Before call to method Repeat | | | cflow.cs:226:22:226:22 | String x | cflow.cs:227:9:237:9 | {...} | | -| cflow.cs:226:27:226:64 | call to method Repeat | cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | | +| cflow.cs:226:27:226:64 | After call to method Repeat [empty] | cflow.cs:226:9:237:9 | After foreach (... ... in ...) ... | | +| cflow.cs:226:27:226:64 | After call to method Repeat [non-empty] | cflow.cs:226:22:226:22 | String x | | +| cflow.cs:226:27:226:64 | Before call to method Repeat | cflow.cs:226:57:226:59 | "a" | | +| cflow.cs:226:27:226:64 | call to method Repeat | cflow.cs:226:27:226:64 | After call to method Repeat [empty] | empty | +| cflow.cs:226:27:226:64 | call to method Repeat | cflow.cs:226:27:226:64 | After call to method Repeat [non-empty] | non-empty | | cflow.cs:226:57:226:59 | "a" | cflow.cs:226:62:226:63 | 10 | | | cflow.cs:226:62:226:63 | 10 | cflow.cs:226:27:226:64 | call to method Repeat | | +| cflow.cs:227:9:237:9 | After {...} | cflow.cs:226:9:237:9 | [LoopHeader] foreach (... ... in ...) ... | | | cflow.cs:227:9:237:9 | {...} | cflow.cs:228:13:228:23 | ...; | | -| cflow.cs:228:13:228:17 | access to field Field | cflow.cs:228:22:228:22 | access to local variable x | | +| cflow.cs:228:13:228:17 | After access to field Field | cflow.cs:228:22:228:22 | access to local variable x | | +| cflow.cs:228:13:228:17 | Before access to field Field | cflow.cs:228:13:228:17 | this access | | +| cflow.cs:228:13:228:17 | access to field Field | cflow.cs:228:13:228:17 | After access to field Field | | | cflow.cs:228:13:228:17 | this access | cflow.cs:228:13:228:17 | access to field Field | | -| cflow.cs:228:13:228:22 | ... += ... | cflow.cs:229:13:232:13 | if (...) ... | | -| cflow.cs:228:13:228:23 | ...; | cflow.cs:228:13:228:17 | this access | | +| cflow.cs:228:13:228:22 | ... += ... | cflow.cs:228:13:228:22 | After ... += ... | | +| cflow.cs:228:13:228:22 | After ... += ... | cflow.cs:228:13:228:23 | After ...; | | +| cflow.cs:228:13:228:22 | Before ... += ... | cflow.cs:228:13:228:17 | Before access to field Field | | +| cflow.cs:228:13:228:23 | ...; | cflow.cs:228:13:228:22 | Before ... += ... | | +| cflow.cs:228:13:228:23 | After ...; | cflow.cs:229:13:232:13 | if (...) ... | | | cflow.cs:228:22:228:22 | access to local variable x | cflow.cs:228:13:228:22 | ... += ... | | -| cflow.cs:229:13:232:13 | if (...) ... | cflow.cs:229:17:229:21 | this access | | -| cflow.cs:229:17:229:21 | access to field Field | cflow.cs:229:17:229:28 | access to property Length | | +| cflow.cs:229:13:232:13 | After if (...) ... | cflow.cs:233:13:236:13 | if (...) ... | | +| cflow.cs:229:13:232:13 | if (...) ... | cflow.cs:229:17:229:32 | Before ... > ... | | +| cflow.cs:229:17:229:21 | After access to field Field | cflow.cs:229:17:229:28 | access to property Length | | +| cflow.cs:229:17:229:21 | Before access to field Field | cflow.cs:229:17:229:21 | this access | | +| cflow.cs:229:17:229:21 | access to field Field | cflow.cs:229:17:229:21 | After access to field Field | | | cflow.cs:229:17:229:21 | this access | cflow.cs:229:17:229:21 | access to field Field | | -| cflow.cs:229:17:229:28 | access to property Length | cflow.cs:229:32:229:32 | 0 | | -| cflow.cs:229:17:229:32 | ... > ... | cflow.cs:230:13:232:13 | {...} | true | -| cflow.cs:229:17:229:32 | ... > ... | cflow.cs:233:13:236:13 | if (...) ... | false | +| cflow.cs:229:17:229:28 | After access to property Length | cflow.cs:229:32:229:32 | 0 | | +| cflow.cs:229:17:229:28 | Before access to property Length | cflow.cs:229:17:229:21 | Before access to field Field | | +| cflow.cs:229:17:229:28 | access to property Length | cflow.cs:229:17:229:28 | After access to property Length | | +| cflow.cs:229:17:229:32 | ... > ... | cflow.cs:229:17:229:32 | After ... > ... [false] | false | +| cflow.cs:229:17:229:32 | ... > ... | cflow.cs:229:17:229:32 | After ... > ... [true] | true | +| cflow.cs:229:17:229:32 | After ... > ... [false] | cflow.cs:229:13:232:13 | After if (...) ... | | +| cflow.cs:229:17:229:32 | After ... > ... [true] | cflow.cs:230:13:232:13 | {...} | | +| cflow.cs:229:17:229:32 | Before ... > ... | cflow.cs:229:17:229:28 | Before access to property Length | | | cflow.cs:229:32:229:32 | 0 | cflow.cs:229:17:229:32 | ... > ... | | -| cflow.cs:230:13:232:13 | {...} | cflow.cs:231:17:231:25 | continue; | | -| cflow.cs:231:17:231:25 | continue; | cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | continue | -| cflow.cs:233:13:236:13 | if (...) ... | cflow.cs:233:17:233:21 | this access | | -| cflow.cs:233:17:233:21 | access to field Field | cflow.cs:233:17:233:28 | access to property Length | | +| cflow.cs:230:13:232:13 | {...} | cflow.cs:231:17:231:25 | Before continue; | | +| cflow.cs:231:17:231:25 | Before continue; | cflow.cs:231:17:231:25 | continue; | | +| cflow.cs:231:17:231:25 | continue; | cflow.cs:226:9:237:9 | [LoopHeader] foreach (... ... in ...) ... | continue | +| cflow.cs:233:13:236:13 | After if (...) ... | cflow.cs:227:9:237:9 | After {...} | | +| cflow.cs:233:13:236:13 | if (...) ... | cflow.cs:233:17:233:32 | Before ... < ... | | +| cflow.cs:233:17:233:21 | After access to field Field | cflow.cs:233:17:233:28 | access to property Length | | +| cflow.cs:233:17:233:21 | Before access to field Field | cflow.cs:233:17:233:21 | this access | | +| cflow.cs:233:17:233:21 | access to field Field | cflow.cs:233:17:233:21 | After access to field Field | | | cflow.cs:233:17:233:21 | this access | cflow.cs:233:17:233:21 | access to field Field | | -| cflow.cs:233:17:233:28 | access to property Length | cflow.cs:233:32:233:32 | 0 | | -| cflow.cs:233:17:233:32 | ... < ... | cflow.cs:226:9:237:9 | foreach (... ... in ...) ... | false | -| cflow.cs:233:17:233:32 | ... < ... | cflow.cs:234:13:236:13 | {...} | true | +| cflow.cs:233:17:233:28 | After access to property Length | cflow.cs:233:32:233:32 | 0 | | +| cflow.cs:233:17:233:28 | Before access to property Length | cflow.cs:233:17:233:21 | Before access to field Field | | +| cflow.cs:233:17:233:28 | access to property Length | cflow.cs:233:17:233:28 | After access to property Length | | +| cflow.cs:233:17:233:32 | ... < ... | cflow.cs:233:17:233:32 | After ... < ... [false] | false | +| cflow.cs:233:17:233:32 | ... < ... | cflow.cs:233:17:233:32 | After ... < ... [true] | true | +| cflow.cs:233:17:233:32 | After ... < ... [false] | cflow.cs:233:13:236:13 | After if (...) ... | | +| cflow.cs:233:17:233:32 | After ... < ... [true] | cflow.cs:234:13:236:13 | {...} | | +| cflow.cs:233:17:233:32 | Before ... < ... | cflow.cs:233:17:233:28 | Before access to property Length | | | cflow.cs:233:32:233:32 | 0 | cflow.cs:233:17:233:32 | ... < ... | | -| cflow.cs:234:13:236:13 | {...} | cflow.cs:235:17:235:22 | break; | | -| cflow.cs:235:17:235:22 | break; | cflow.cs:224:10:224:16 | exit Foreach (normal) | break | -| cflow.cs:240:10:240:13 | enter Goto | cflow.cs:241:5:259:5 | {...} | | -| cflow.cs:240:10:240:13 | exit Goto (normal) | cflow.cs:240:10:240:13 | exit Goto | | +| cflow.cs:234:13:236:13 | {...} | cflow.cs:235:17:235:22 | Before break; | | +| cflow.cs:235:17:235:22 | Before break; | cflow.cs:235:17:235:22 | break; | | +| cflow.cs:235:17:235:22 | break; | cflow.cs:226:9:237:9 | After foreach (... ... in ...) ... | break | +| cflow.cs:240:10:240:13 | Entry | cflow.cs:241:5:259:5 | {...} | | +| cflow.cs:240:10:240:13 | Normal Exit | cflow.cs:240:10:240:13 | Exit | | +| cflow.cs:241:5:259:5 | After {...} | cflow.cs:240:10:240:13 | Normal Exit | | | cflow.cs:241:5:259:5 | {...} | cflow.cs:242:5:242:9 | Label: | | | cflow.cs:242:5:242:9 | Label: | cflow.cs:242:12:242:41 | if (...) ... | | -| cflow.cs:242:12:242:41 | if (...) ... | cflow.cs:242:19:242:23 | this access | | -| cflow.cs:242:16:242:36 | [false] !... | cflow.cs:244:9:244:41 | if (...) ... | false | -| cflow.cs:242:16:242:36 | [true] !... | cflow.cs:242:39:242:41 | {...} | true | -| cflow.cs:242:17:242:36 | [false] !... | cflow.cs:242:16:242:36 | [true] !... | false | -| cflow.cs:242:17:242:36 | [true] !... | cflow.cs:242:16:242:36 | [false] !... | true | -| cflow.cs:242:19:242:23 | access to field Field | cflow.cs:242:19:242:30 | access to property Length | | +| cflow.cs:242:12:242:41 | After if (...) ... | cflow.cs:244:9:244:41 | if (...) ... | | +| cflow.cs:242:12:242:41 | if (...) ... | cflow.cs:242:16:242:36 | !... | | +| cflow.cs:242:16:242:36 | !... | cflow.cs:242:17:242:36 | !... | | +| cflow.cs:242:16:242:36 | After !... [false] | cflow.cs:242:12:242:41 | After if (...) ... | | +| cflow.cs:242:16:242:36 | After !... [true] | cflow.cs:242:39:242:41 | {...} | | +| cflow.cs:242:17:242:36 | !... | cflow.cs:242:19:242:35 | Before ... == ... | | +| cflow.cs:242:17:242:36 | After !... [false] | cflow.cs:242:16:242:36 | After !... [true] | true | +| cflow.cs:242:17:242:36 | After !... [true] | cflow.cs:242:16:242:36 | After !... [false] | false | +| cflow.cs:242:19:242:23 | After access to field Field | cflow.cs:242:19:242:30 | access to property Length | | +| cflow.cs:242:19:242:23 | Before access to field Field | cflow.cs:242:19:242:23 | this access | | +| cflow.cs:242:19:242:23 | access to field Field | cflow.cs:242:19:242:23 | After access to field Field | | | cflow.cs:242:19:242:23 | this access | cflow.cs:242:19:242:23 | access to field Field | | -| cflow.cs:242:19:242:30 | access to property Length | cflow.cs:242:35:242:35 | 0 | | -| cflow.cs:242:19:242:35 | ... == ... | cflow.cs:242:17:242:36 | [false] !... | true | -| cflow.cs:242:19:242:35 | ... == ... | cflow.cs:242:17:242:36 | [true] !... | false | +| cflow.cs:242:19:242:30 | After access to property Length | cflow.cs:242:35:242:35 | 0 | | +| cflow.cs:242:19:242:30 | Before access to property Length | cflow.cs:242:19:242:23 | Before access to field Field | | +| cflow.cs:242:19:242:30 | access to property Length | cflow.cs:242:19:242:30 | After access to property Length | | +| cflow.cs:242:19:242:35 | ... == ... | cflow.cs:242:19:242:35 | After ... == ... [false] | false | +| cflow.cs:242:19:242:35 | ... == ... | cflow.cs:242:19:242:35 | After ... == ... [true] | true | +| cflow.cs:242:19:242:35 | After ... == ... [false] | cflow.cs:242:17:242:36 | After !... [true] | true | +| cflow.cs:242:19:242:35 | After ... == ... [true] | cflow.cs:242:17:242:36 | After !... [false] | false | +| cflow.cs:242:19:242:35 | Before ... == ... | cflow.cs:242:19:242:30 | Before access to property Length | | | cflow.cs:242:35:242:35 | 0 | cflow.cs:242:19:242:35 | ... == ... | | -| cflow.cs:242:39:242:41 | {...} | cflow.cs:244:9:244:41 | if (...) ... | | -| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:244:13:244:17 | this access | | -| cflow.cs:244:13:244:17 | access to field Field | cflow.cs:244:13:244:24 | access to property Length | | +| cflow.cs:242:39:242:41 | {...} | cflow.cs:242:12:242:41 | After if (...) ... | | +| cflow.cs:244:9:244:41 | After if (...) ... | cflow.cs:246:9:258:9 | switch (...) {...} | | +| cflow.cs:244:9:244:41 | if (...) ... | cflow.cs:244:13:244:28 | Before ... > ... | | +| cflow.cs:244:13:244:17 | After access to field Field | cflow.cs:244:13:244:24 | access to property Length | | +| cflow.cs:244:13:244:17 | Before access to field Field | cflow.cs:244:13:244:17 | this access | | +| cflow.cs:244:13:244:17 | access to field Field | cflow.cs:244:13:244:17 | After access to field Field | | | cflow.cs:244:13:244:17 | this access | cflow.cs:244:13:244:17 | access to field Field | | -| cflow.cs:244:13:244:24 | access to property Length | cflow.cs:244:28:244:28 | 0 | | -| cflow.cs:244:13:244:28 | ... > ... | cflow.cs:244:31:244:41 | goto ...; | true | -| cflow.cs:244:13:244:28 | ... > ... | cflow.cs:246:9:258:9 | switch (...) {...} | false | +| cflow.cs:244:13:244:24 | After access to property Length | cflow.cs:244:28:244:28 | 0 | | +| cflow.cs:244:13:244:24 | Before access to property Length | cflow.cs:244:13:244:17 | Before access to field Field | | +| cflow.cs:244:13:244:24 | access to property Length | cflow.cs:244:13:244:24 | After access to property Length | | +| cflow.cs:244:13:244:28 | ... > ... | cflow.cs:244:13:244:28 | After ... > ... [false] | false | +| cflow.cs:244:13:244:28 | ... > ... | cflow.cs:244:13:244:28 | After ... > ... [true] | true | +| cflow.cs:244:13:244:28 | After ... > ... [false] | cflow.cs:244:9:244:41 | After if (...) ... | | +| cflow.cs:244:13:244:28 | After ... > ... [true] | cflow.cs:244:31:244:41 | Before goto ...; | | +| cflow.cs:244:13:244:28 | Before ... > ... | cflow.cs:244:13:244:24 | Before access to property Length | | | cflow.cs:244:28:244:28 | 0 | cflow.cs:244:13:244:28 | ... > ... | | +| cflow.cs:244:31:244:41 | Before goto ...; | cflow.cs:244:31:244:41 | goto ...; | | | cflow.cs:244:31:244:41 | goto ...; | cflow.cs:242:5:242:9 | Label: | goto | -| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:246:17:246:21 | this access | | -| cflow.cs:246:17:246:21 | access to field Field | cflow.cs:246:17:246:28 | access to property Length | | +| cflow.cs:246:9:258:9 | After switch (...) {...} | cflow.cs:241:5:259:5 | After {...} | | +| cflow.cs:246:9:258:9 | switch (...) {...} | cflow.cs:246:17:246:32 | Before ... + ... | | +| cflow.cs:246:17:246:21 | After access to field Field | cflow.cs:246:17:246:28 | access to property Length | | +| cflow.cs:246:17:246:21 | Before access to field Field | cflow.cs:246:17:246:21 | this access | | +| cflow.cs:246:17:246:21 | access to field Field | cflow.cs:246:17:246:21 | After access to field Field | | | cflow.cs:246:17:246:21 | this access | cflow.cs:246:17:246:21 | access to field Field | | -| cflow.cs:246:17:246:28 | access to property Length | cflow.cs:246:32:246:32 | 3 | | -| cflow.cs:246:17:246:32 | ... + ... | cflow.cs:248:13:248:19 | case ...: | | +| cflow.cs:246:17:246:28 | After access to property Length | cflow.cs:246:32:246:32 | 3 | | +| cflow.cs:246:17:246:28 | Before access to property Length | cflow.cs:246:17:246:21 | Before access to field Field | | +| cflow.cs:246:17:246:28 | access to property Length | cflow.cs:246:17:246:28 | After access to property Length | | +| cflow.cs:246:17:246:32 | ... + ... | cflow.cs:246:17:246:32 | After ... + ... | | +| cflow.cs:246:17:246:32 | After ... + ... | cflow.cs:248:13:248:19 | case ...: | | +| cflow.cs:246:17:246:32 | Before ... + ... | cflow.cs:246:17:246:28 | Before access to property Length | | | cflow.cs:246:32:246:32 | 3 | cflow.cs:246:17:246:32 | ... + ... | | +| cflow.cs:248:13:248:19 | After case ...: [match] | cflow.cs:249:17:249:29 | Before goto default; | | +| cflow.cs:248:13:248:19 | After case ...: [no-match] | cflow.cs:250:13:250:19 | case ...: | | | cflow.cs:248:13:248:19 | case ...: | cflow.cs:248:18:248:18 | 0 | | -| cflow.cs:248:18:248:18 | 0 | cflow.cs:249:17:249:29 | goto default; | match | -| cflow.cs:248:18:248:18 | 0 | cflow.cs:250:13:250:19 | case ...: | no-match | -| cflow.cs:249:17:249:29 | goto default; | cflow.cs:255:13:255:20 | default: | goto | +| cflow.cs:248:18:248:18 | 0 | cflow.cs:248:18:248:18 | After 0 [match] | match | +| cflow.cs:248:18:248:18 | 0 | cflow.cs:248:18:248:18 | After 0 [no-match] | no-match | +| cflow.cs:248:18:248:18 | After 0 [match] | cflow.cs:248:13:248:19 | After case ...: [match] | match | +| cflow.cs:248:18:248:18 | After 0 [no-match] | cflow.cs:248:13:248:19 | After case ...: [no-match] | no-match | +| cflow.cs:249:17:249:29 | Before goto default; | cflow.cs:249:17:249:29 | goto default; | | +| cflow.cs:249:17:249:29 | goto default; | cflow.cs:255:13:255:20 | After default: [match] | goto | +| cflow.cs:250:13:250:19 | After case ...: [match] | cflow.cs:251:17:251:37 | ...; | | +| cflow.cs:250:13:250:19 | After case ...: [no-match] | cflow.cs:253:13:253:19 | case ...: | | | cflow.cs:250:13:250:19 | case ...: | cflow.cs:250:18:250:18 | 1 | | -| cflow.cs:250:18:250:18 | 1 | cflow.cs:251:17:251:37 | ...; | match | -| cflow.cs:250:18:250:18 | 1 | cflow.cs:253:13:253:19 | case ...: | no-match | -| cflow.cs:251:17:251:36 | call to method WriteLine | cflow.cs:252:17:252:22 | break; | | -| cflow.cs:251:17:251:37 | ...; | cflow.cs:251:35:251:35 | 1 | | +| cflow.cs:250:18:250:18 | 1 | cflow.cs:250:18:250:18 | After 1 [match] | match | +| cflow.cs:250:18:250:18 | 1 | cflow.cs:250:18:250:18 | After 1 [no-match] | no-match | +| cflow.cs:250:18:250:18 | After 1 [match] | cflow.cs:250:13:250:19 | After case ...: [match] | match | +| cflow.cs:250:18:250:18 | After 1 [no-match] | cflow.cs:250:13:250:19 | After case ...: [no-match] | no-match | +| cflow.cs:251:17:251:36 | After call to method WriteLine | cflow.cs:251:17:251:37 | After ...; | | +| cflow.cs:251:17:251:36 | Before call to method WriteLine | cflow.cs:251:35:251:35 | 1 | | +| cflow.cs:251:17:251:36 | call to method WriteLine | cflow.cs:251:17:251:36 | After call to method WriteLine | | +| cflow.cs:251:17:251:37 | ...; | cflow.cs:251:17:251:36 | Before call to method WriteLine | | +| cflow.cs:251:17:251:37 | After ...; | cflow.cs:252:17:252:22 | Before break; | | | cflow.cs:251:35:251:35 | 1 | cflow.cs:251:17:251:36 | call to method WriteLine | | -| cflow.cs:252:17:252:22 | break; | cflow.cs:240:10:240:13 | exit Goto (normal) | break | +| cflow.cs:252:17:252:22 | Before break; | cflow.cs:252:17:252:22 | break; | | +| cflow.cs:252:17:252:22 | break; | cflow.cs:246:9:258:9 | After switch (...) {...} | break | +| cflow.cs:253:13:253:19 | After case ...: [match] | cflow.cs:254:17:254:27 | Before goto ...; | | +| cflow.cs:253:13:253:19 | After case ...: [no-match] | cflow.cs:255:13:255:20 | default: | | | cflow.cs:253:13:253:19 | case ...: | cflow.cs:253:18:253:18 | 2 | | -| cflow.cs:253:18:253:18 | 2 | cflow.cs:254:17:254:27 | goto ...; | match | -| cflow.cs:253:18:253:18 | 2 | cflow.cs:255:13:255:20 | default: | no-match | +| cflow.cs:253:18:253:18 | 2 | cflow.cs:253:18:253:18 | After 2 [match] | match | +| cflow.cs:253:18:253:18 | 2 | cflow.cs:253:18:253:18 | After 2 [no-match] | no-match | +| cflow.cs:253:18:253:18 | After 2 [match] | cflow.cs:253:13:253:19 | After case ...: [match] | match | +| cflow.cs:253:18:253:18 | After 2 [no-match] | cflow.cs:253:13:253:19 | After case ...: [no-match] | no-match | +| cflow.cs:254:17:254:27 | Before goto ...; | cflow.cs:254:17:254:27 | goto ...; | | | cflow.cs:254:17:254:27 | goto ...; | cflow.cs:242:5:242:9 | Label: | goto | -| cflow.cs:255:13:255:20 | default: | cflow.cs:256:17:256:37 | ...; | | -| cflow.cs:256:17:256:36 | call to method WriteLine | cflow.cs:257:17:257:22 | break; | | -| cflow.cs:256:17:256:37 | ...; | cflow.cs:256:35:256:35 | 0 | | +| cflow.cs:255:13:255:20 | After default: [match] | cflow.cs:256:17:256:37 | ...; | | +| cflow.cs:255:13:255:20 | default: | cflow.cs:255:13:255:20 | After default: [match] | match | +| cflow.cs:256:17:256:36 | After call to method WriteLine | cflow.cs:256:17:256:37 | After ...; | | +| cflow.cs:256:17:256:36 | Before call to method WriteLine | cflow.cs:256:35:256:35 | 0 | | +| cflow.cs:256:17:256:36 | call to method WriteLine | cflow.cs:256:17:256:36 | After call to method WriteLine | | +| cflow.cs:256:17:256:37 | ...; | cflow.cs:256:17:256:36 | Before call to method WriteLine | | +| cflow.cs:256:17:256:37 | After ...; | cflow.cs:257:17:257:22 | Before break; | | | cflow.cs:256:35:256:35 | 0 | cflow.cs:256:17:256:36 | call to method WriteLine | | -| cflow.cs:257:17:257:22 | break; | cflow.cs:240:10:240:13 | exit Goto (normal) | break | -| cflow.cs:261:49:261:53 | enter Yield | cflow.cs:262:5:277:5 | {...} | | -| cflow.cs:261:49:261:53 | exit Yield (abnormal) | cflow.cs:261:49:261:53 | exit Yield | | -| cflow.cs:261:49:261:53 | exit Yield (normal) | cflow.cs:261:49:261:53 | exit Yield | | -| cflow.cs:262:5:277:5 | {...} | cflow.cs:263:22:263:22 | 0 | | -| cflow.cs:263:9:263:23 | yield return ...; | cflow.cs:264:9:267:9 | for (...;...;...) ... | | +| cflow.cs:257:17:257:22 | Before break; | cflow.cs:257:17:257:22 | break; | | +| cflow.cs:257:17:257:22 | break; | cflow.cs:246:9:258:9 | After switch (...) {...} | break | +| cflow.cs:261:49:261:53 | Entry | cflow.cs:262:5:277:5 | {...} | | +| cflow.cs:261:49:261:53 | Exceptional Exit | cflow.cs:261:49:261:53 | Exit | | +| cflow.cs:261:49:261:53 | Normal Exit | cflow.cs:261:49:261:53 | Exit | | +| cflow.cs:262:5:277:5 | After {...} | cflow.cs:261:49:261:53 | Normal Exit | | +| cflow.cs:262:5:277:5 | {...} | cflow.cs:263:9:263:23 | Before yield return ...; | | +| cflow.cs:263:9:263:23 | After yield return ...; | cflow.cs:264:9:267:9 | for (...;...;...) ... | | +| cflow.cs:263:9:263:23 | Before yield return ...; | cflow.cs:263:22:263:22 | 0 | | +| cflow.cs:263:9:263:23 | yield return ...; | cflow.cs:263:9:263:23 | After yield return ...; | | | cflow.cs:263:22:263:22 | 0 | cflow.cs:263:9:263:23 | yield return ...; | | -| cflow.cs:264:9:267:9 | for (...;...;...) ... | cflow.cs:264:22:264:22 | 1 | | -| cflow.cs:264:18:264:22 | Int32 i = ... | cflow.cs:264:25:264:25 | access to local variable i | | +| cflow.cs:264:9:267:9 | After for (...;...;...) ... | cflow.cs:268:9:276:9 | try {...} ... | | +| cflow.cs:264:9:267:9 | [LoopHeader] for (...;...;...) ... | cflow.cs:264:33:264:35 | Before ...++ | | +| cflow.cs:264:9:267:9 | for (...;...;...) ... | cflow.cs:264:18:264:22 | Before Int32 i = ... | | +| cflow.cs:264:18:264:18 | access to local variable i | cflow.cs:264:22:264:22 | 1 | | +| cflow.cs:264:18:264:22 | After Int32 i = ... | cflow.cs:264:25:264:30 | Before ... < ... | | +| cflow.cs:264:18:264:22 | Before Int32 i = ... | cflow.cs:264:18:264:18 | access to local variable i | | +| cflow.cs:264:18:264:22 | Int32 i = ... | cflow.cs:264:18:264:22 | After Int32 i = ... | | | cflow.cs:264:22:264:22 | 1 | cflow.cs:264:18:264:22 | Int32 i = ... | | | cflow.cs:264:25:264:25 | access to local variable i | cflow.cs:264:29:264:30 | 10 | | -| cflow.cs:264:25:264:30 | ... < ... | cflow.cs:265:9:267:9 | {...} | true | -| cflow.cs:264:25:264:30 | ... < ... | cflow.cs:268:9:276:9 | try {...} ... | false | +| cflow.cs:264:25:264:30 | ... < ... | cflow.cs:264:25:264:30 | After ... < ... [false] | false | +| cflow.cs:264:25:264:30 | ... < ... | cflow.cs:264:25:264:30 | After ... < ... [true] | true | +| cflow.cs:264:25:264:30 | After ... < ... [false] | cflow.cs:264:9:267:9 | After for (...;...;...) ... | | +| cflow.cs:264:25:264:30 | After ... < ... [true] | cflow.cs:265:9:267:9 | {...} | | +| cflow.cs:264:25:264:30 | Before ... < ... | cflow.cs:264:25:264:25 | access to local variable i | | | cflow.cs:264:29:264:30 | 10 | cflow.cs:264:25:264:30 | ... < ... | | | cflow.cs:264:33:264:33 | access to local variable i | cflow.cs:264:33:264:35 | ...++ | | -| cflow.cs:264:33:264:35 | ...++ | cflow.cs:264:25:264:25 | access to local variable i | | -| cflow.cs:265:9:267:9 | {...} | cflow.cs:266:26:266:26 | access to local variable i | | -| cflow.cs:266:13:266:27 | yield return ...; | cflow.cs:264:33:264:33 | access to local variable i | | +| cflow.cs:264:33:264:35 | ...++ | cflow.cs:264:33:264:35 | After ...++ | | +| cflow.cs:264:33:264:35 | After ...++ | cflow.cs:264:25:264:30 | Before ... < ... | | +| cflow.cs:264:33:264:35 | Before ...++ | cflow.cs:264:33:264:33 | access to local variable i | | +| cflow.cs:265:9:267:9 | After {...} | cflow.cs:264:9:267:9 | [LoopHeader] for (...;...;...) ... | | +| cflow.cs:265:9:267:9 | {...} | cflow.cs:266:13:266:27 | Before yield return ...; | | +| cflow.cs:266:13:266:27 | After yield return ...; | cflow.cs:265:9:267:9 | After {...} | | +| cflow.cs:266:13:266:27 | Before yield return ...; | cflow.cs:266:26:266:26 | access to local variable i | | +| cflow.cs:266:13:266:27 | yield return ...; | cflow.cs:266:13:266:27 | After yield return ...; | | | cflow.cs:266:26:266:26 | access to local variable i | cflow.cs:266:13:266:27 | yield return ...; | | +| cflow.cs:268:9:276:9 | After try {...} ... | cflow.cs:262:5:277:5 | After {...} | | | cflow.cs:268:9:276:9 | try {...} ... | cflow.cs:269:9:272:9 | {...} | | -| cflow.cs:269:9:272:9 | {...} | cflow.cs:270:13:270:24 | yield break; | | +| cflow.cs:269:9:272:9 | {...} | cflow.cs:270:13:270:24 | Before yield break; | | +| cflow.cs:270:13:270:24 | Before yield break; | cflow.cs:270:13:270:24 | yield break; | | | cflow.cs:270:13:270:24 | yield break; | cflow.cs:274:9:276:9 | {...} | return | +| cflow.cs:274:9:276:9 | After {...} | cflow.cs:261:49:261:53 | Exceptional Exit | exception | +| cflow.cs:274:9:276:9 | After {...} | cflow.cs:261:49:261:53 | Normal Exit | return | +| cflow.cs:274:9:276:9 | After {...} | cflow.cs:268:9:276:9 | After try {...} ... | | | cflow.cs:274:9:276:9 | {...} | cflow.cs:275:13:275:42 | ...; | | -| cflow.cs:275:13:275:41 | call to method WriteLine | cflow.cs:261:49:261:53 | exit Yield (abnormal) | exception | -| cflow.cs:275:13:275:41 | call to method WriteLine | cflow.cs:261:49:261:53 | exit Yield (normal) | , return | -| cflow.cs:275:13:275:42 | ...; | cflow.cs:275:31:275:40 | "not dead" | | +| cflow.cs:275:13:275:41 | After call to method WriteLine | cflow.cs:275:13:275:42 | After ...; | | +| cflow.cs:275:13:275:41 | Before call to method WriteLine | cflow.cs:275:31:275:40 | "not dead" | | +| cflow.cs:275:13:275:41 | call to method WriteLine | cflow.cs:275:13:275:41 | After call to method WriteLine | | +| cflow.cs:275:13:275:42 | ...; | cflow.cs:275:13:275:41 | Before call to method WriteLine | | +| cflow.cs:275:13:275:42 | After ...; | cflow.cs:274:9:276:9 | After {...} | | | cflow.cs:275:31:275:40 | "not dead" | cflow.cs:275:13:275:41 | call to method WriteLine | | -| cflow.cs:282:5:282:18 | call to method | cflow.cs:282:24:282:27 | call to constructor ControlFlow | | -| cflow.cs:282:5:282:18 | enter ControlFlowSub | cflow.cs:282:5:282:18 | this access | | -| cflow.cs:282:5:282:18 | exit ControlFlowSub (normal) | cflow.cs:282:5:282:18 | exit ControlFlowSub | | +| cflow.cs:282:5:282:18 | After call to method | cflow.cs:282:24:282:27 | Before call to constructor ControlFlow | | +| cflow.cs:282:5:282:18 | Before call to method | cflow.cs:282:5:282:18 | this access | | +| cflow.cs:282:5:282:18 | Entry | cflow.cs:282:5:282:18 | Before call to method | | +| cflow.cs:282:5:282:18 | Normal Exit | cflow.cs:282:5:282:18 | Exit | | +| cflow.cs:282:5:282:18 | call to method | cflow.cs:282:5:282:18 | After call to method | | | cflow.cs:282:5:282:18 | this access | cflow.cs:282:5:282:18 | call to method | | -| cflow.cs:282:24:282:27 | call to constructor ControlFlow | cflow.cs:282:31:282:33 | {...} | | -| cflow.cs:282:31:282:33 | {...} | cflow.cs:282:5:282:18 | exit ControlFlowSub (normal) | | -| cflow.cs:284:5:284:18 | enter ControlFlowSub | cflow.cs:284:32:284:35 | call to constructor ControlFlowSub | | -| cflow.cs:284:5:284:18 | exit ControlFlowSub (normal) | cflow.cs:284:5:284:18 | exit ControlFlowSub | | -| cflow.cs:284:32:284:35 | call to constructor ControlFlowSub | cflow.cs:284:39:284:41 | {...} | | -| cflow.cs:284:39:284:41 | {...} | cflow.cs:284:5:284:18 | exit ControlFlowSub (normal) | | -| cflow.cs:286:5:286:18 | enter ControlFlowSub | cflow.cs:286:34:286:34 | access to parameter i | | -| cflow.cs:286:5:286:18 | exit ControlFlowSub (normal) | cflow.cs:286:5:286:18 | exit ControlFlowSub | | -| cflow.cs:286:29:286:32 | call to constructor ControlFlowSub | cflow.cs:286:48:286:50 | {...} | | +| cflow.cs:282:24:282:27 | After call to constructor ControlFlow | cflow.cs:282:31:282:33 | {...} | | +| cflow.cs:282:24:282:27 | Before call to constructor ControlFlow | cflow.cs:282:24:282:27 | call to constructor ControlFlow | | +| cflow.cs:282:24:282:27 | call to constructor ControlFlow | cflow.cs:282:24:282:27 | After call to constructor ControlFlow | | +| cflow.cs:282:31:282:33 | {...} | cflow.cs:282:5:282:18 | Normal Exit | | +| cflow.cs:284:5:284:18 | Entry | cflow.cs:284:27:284:27 | s | | +| cflow.cs:284:5:284:18 | Normal Exit | cflow.cs:284:5:284:18 | Exit | | +| cflow.cs:284:27:284:27 | s | cflow.cs:284:32:284:35 | Before call to constructor ControlFlowSub | | +| cflow.cs:284:32:284:35 | After call to constructor ControlFlowSub | cflow.cs:284:39:284:41 | {...} | | +| cflow.cs:284:32:284:35 | Before call to constructor ControlFlowSub | cflow.cs:284:32:284:35 | call to constructor ControlFlowSub | | +| cflow.cs:284:32:284:35 | call to constructor ControlFlowSub | cflow.cs:284:32:284:35 | After call to constructor ControlFlowSub | | +| cflow.cs:284:39:284:41 | {...} | cflow.cs:284:5:284:18 | Normal Exit | | +| cflow.cs:286:5:286:18 | Entry | cflow.cs:286:24:286:24 | i | | +| cflow.cs:286:5:286:18 | Normal Exit | cflow.cs:286:5:286:18 | Exit | | +| cflow.cs:286:24:286:24 | i | cflow.cs:286:29:286:32 | Before call to constructor ControlFlowSub | | +| cflow.cs:286:29:286:32 | After call to constructor ControlFlowSub | cflow.cs:286:48:286:50 | {...} | | +| cflow.cs:286:29:286:32 | Before call to constructor ControlFlowSub | cflow.cs:286:34:286:45 | Before call to method ToString | | +| cflow.cs:286:29:286:32 | call to constructor ControlFlowSub | cflow.cs:286:29:286:32 | After call to constructor ControlFlowSub | | | cflow.cs:286:34:286:34 | access to parameter i | cflow.cs:286:34:286:45 | call to method ToString | | -| cflow.cs:286:34:286:45 | call to method ToString | cflow.cs:286:29:286:32 | call to constructor ControlFlowSub | | -| cflow.cs:286:48:286:50 | {...} | cflow.cs:286:5:286:18 | exit ControlFlowSub (normal) | | -| cflow.cs:289:7:289:18 | call to constructor Object | cflow.cs:289:7:289:18 | {...} | | -| cflow.cs:289:7:289:18 | call to method | cflow.cs:289:7:289:18 | call to constructor Object | | -| cflow.cs:289:7:289:18 | enter DelegateCall | cflow.cs:289:7:289:18 | this access | | -| cflow.cs:289:7:289:18 | exit DelegateCall (normal) | cflow.cs:289:7:289:18 | exit DelegateCall | | +| cflow.cs:286:34:286:45 | After call to method ToString | cflow.cs:286:29:286:32 | call to constructor ControlFlowSub | | +| cflow.cs:286:34:286:45 | Before call to method ToString | cflow.cs:286:34:286:34 | access to parameter i | | +| cflow.cs:286:34:286:45 | call to method ToString | cflow.cs:286:34:286:45 | After call to method ToString | | +| cflow.cs:286:48:286:50 | {...} | cflow.cs:286:5:286:18 | Normal Exit | | +| cflow.cs:289:7:289:18 | After call to constructor Object | cflow.cs:289:7:289:18 | {...} | | +| cflow.cs:289:7:289:18 | After call to method | cflow.cs:289:7:289:18 | Before call to constructor Object | | +| cflow.cs:289:7:289:18 | Before call to constructor Object | cflow.cs:289:7:289:18 | call to constructor Object | | +| cflow.cs:289:7:289:18 | Before call to method | cflow.cs:289:7:289:18 | this access | | +| cflow.cs:289:7:289:18 | Entry | cflow.cs:289:7:289:18 | Before call to method | | +| cflow.cs:289:7:289:18 | Normal Exit | cflow.cs:289:7:289:18 | Exit | | +| cflow.cs:289:7:289:18 | call to constructor Object | cflow.cs:289:7:289:18 | After call to constructor Object | | +| cflow.cs:289:7:289:18 | call to method | cflow.cs:289:7:289:18 | After call to method | | | cflow.cs:289:7:289:18 | this access | cflow.cs:289:7:289:18 | call to method | | -| cflow.cs:289:7:289:18 | {...} | cflow.cs:289:7:289:18 | exit DelegateCall (normal) | | -| cflow.cs:291:12:291:12 | enter M | cflow.cs:291:38:291:38 | access to parameter f | | -| cflow.cs:291:12:291:12 | exit M (normal) | cflow.cs:291:12:291:12 | exit M | | +| cflow.cs:289:7:289:18 | {...} | cflow.cs:289:7:289:18 | Normal Exit | | +| cflow.cs:291:12:291:12 | Entry | cflow.cs:291:32:291:32 | f | | +| cflow.cs:291:12:291:12 | Normal Exit | cflow.cs:291:12:291:12 | Exit | | +| cflow.cs:291:32:291:32 | f | cflow.cs:291:38:291:41 | Before delegate call | | | cflow.cs:291:38:291:38 | access to parameter f | cflow.cs:291:40:291:40 | 0 | | -| cflow.cs:291:38:291:41 | delegate call | cflow.cs:291:12:291:12 | exit M (normal) | | +| cflow.cs:291:38:291:41 | After delegate call | cflow.cs:291:12:291:12 | Normal Exit | | +| cflow.cs:291:38:291:41 | Before delegate call | cflow.cs:291:38:291:38 | access to parameter f | | +| cflow.cs:291:38:291:41 | delegate call | cflow.cs:291:38:291:41 | After delegate call | | | cflow.cs:291:40:291:40 | 0 | cflow.cs:291:38:291:41 | delegate call | | -| cflow.cs:296:5:296:25 | call to constructor Object | cflow.cs:296:52:296:54 | {...} | | -| cflow.cs:296:5:296:25 | call to method | cflow.cs:296:5:296:25 | call to constructor Object | | -| cflow.cs:296:5:296:25 | enter NegationInConstructor | cflow.cs:296:5:296:25 | this access | | -| cflow.cs:296:5:296:25 | exit NegationInConstructor (normal) | cflow.cs:296:5:296:25 | exit NegationInConstructor | | +| cflow.cs:296:5:296:25 | After call to constructor Object | cflow.cs:296:52:296:54 | {...} | | +| cflow.cs:296:5:296:25 | After call to method | cflow.cs:296:5:296:25 | Before call to constructor Object | | +| cflow.cs:296:5:296:25 | Before call to constructor Object | cflow.cs:296:5:296:25 | call to constructor Object | | +| cflow.cs:296:5:296:25 | Before call to method | cflow.cs:296:5:296:25 | this access | | +| cflow.cs:296:5:296:25 | Entry | cflow.cs:296:32:296:32 | b | | +| cflow.cs:296:5:296:25 | Normal Exit | cflow.cs:296:5:296:25 | Exit | | +| cflow.cs:296:5:296:25 | call to constructor Object | cflow.cs:296:5:296:25 | After call to constructor Object | | +| cflow.cs:296:5:296:25 | call to method | cflow.cs:296:5:296:25 | After call to method | | | cflow.cs:296:5:296:25 | this access | cflow.cs:296:5:296:25 | call to method | | -| cflow.cs:296:52:296:54 | {...} | cflow.cs:296:5:296:25 | exit NegationInConstructor (normal) | | -| cflow.cs:298:10:298:10 | enter M | cflow.cs:299:5:301:5 | {...} | | -| cflow.cs:298:10:298:10 | exit M (normal) | cflow.cs:298:10:298:10 | exit M | | +| cflow.cs:296:32:296:32 | b | cflow.cs:296:39:296:39 | i | | +| cflow.cs:296:39:296:39 | i | cflow.cs:296:49:296:49 | s | | +| cflow.cs:296:49:296:49 | s | cflow.cs:296:5:296:25 | Before call to method | | +| cflow.cs:296:52:296:54 | {...} | cflow.cs:296:5:296:25 | Normal Exit | | +| cflow.cs:298:10:298:10 | Entry | cflow.cs:298:16:298:16 | i | | +| cflow.cs:298:10:298:10 | Normal Exit | cflow.cs:298:10:298:10 | Exit | | +| cflow.cs:298:16:298:16 | i | cflow.cs:298:26:298:26 | s | | +| cflow.cs:298:26:298:26 | s | cflow.cs:298:34:298:34 | b | | +| cflow.cs:298:34:298:34 | b | cflow.cs:299:5:301:5 | {...} | | +| cflow.cs:299:5:301:5 | After {...} | cflow.cs:298:10:298:10 | Normal Exit | | | cflow.cs:299:5:301:5 | {...} | cflow.cs:300:9:300:73 | ...; | | -| cflow.cs:300:9:300:72 | object creation of type NegationInConstructor | cflow.cs:298:10:298:10 | exit M (normal) | | -| cflow.cs:300:9:300:73 | ...; | cflow.cs:300:38:300:38 | 0 | | -| cflow.cs:300:38:300:38 | 0 | cflow.cs:300:46:300:46 | access to parameter i | | -| cflow.cs:300:44:300:51 | [false] !... | cflow.cs:300:44:300:64 | ... && ... | false | -| cflow.cs:300:44:300:51 | [true] !... | cflow.cs:300:56:300:56 | access to parameter s | true | -| cflow.cs:300:44:300:64 | ... && ... | cflow.cs:300:70:300:71 | "" | | +| cflow.cs:300:9:300:72 | After object creation of type NegationInConstructor | cflow.cs:300:9:300:73 | After ...; | | +| cflow.cs:300:9:300:72 | Before object creation of type NegationInConstructor | cflow.cs:300:38:300:38 | 0 | | +| cflow.cs:300:9:300:72 | object creation of type NegationInConstructor | cflow.cs:300:9:300:72 | After object creation of type NegationInConstructor | | +| cflow.cs:300:9:300:73 | ...; | cflow.cs:300:9:300:72 | Before object creation of type NegationInConstructor | | +| cflow.cs:300:9:300:73 | After ...; | cflow.cs:299:5:301:5 | After {...} | | +| cflow.cs:300:38:300:38 | 0 | cflow.cs:300:44:300:64 | ... && ... | | +| cflow.cs:300:44:300:51 | !... | cflow.cs:300:46:300:50 | Before ... > ... | | +| cflow.cs:300:44:300:51 | After !... [false] | cflow.cs:300:44:300:64 | After ... && ... | | +| cflow.cs:300:44:300:51 | After !... [true] | cflow.cs:300:56:300:64 | Before ... != ... | | +| cflow.cs:300:44:300:64 | ... && ... | cflow.cs:300:44:300:51 | !... | | +| cflow.cs:300:44:300:64 | After ... && ... | cflow.cs:300:70:300:71 | "" | | | cflow.cs:300:46:300:46 | access to parameter i | cflow.cs:300:50:300:50 | 0 | | -| cflow.cs:300:46:300:50 | ... > ... | cflow.cs:300:44:300:51 | [false] !... | true | -| cflow.cs:300:46:300:50 | ... > ... | cflow.cs:300:44:300:51 | [true] !... | false | +| cflow.cs:300:46:300:50 | ... > ... | cflow.cs:300:46:300:50 | After ... > ... [false] | false | +| cflow.cs:300:46:300:50 | ... > ... | cflow.cs:300:46:300:50 | After ... > ... [true] | true | +| cflow.cs:300:46:300:50 | After ... > ... [false] | cflow.cs:300:44:300:51 | After !... [true] | true | +| cflow.cs:300:46:300:50 | After ... > ... [true] | cflow.cs:300:44:300:51 | After !... [false] | false | +| cflow.cs:300:46:300:50 | Before ... > ... | cflow.cs:300:46:300:46 | access to parameter i | | | cflow.cs:300:50:300:50 | 0 | cflow.cs:300:46:300:50 | ... > ... | | | cflow.cs:300:56:300:56 | access to parameter s | cflow.cs:300:61:300:64 | null | | -| cflow.cs:300:56:300:64 | ... != ... | cflow.cs:300:44:300:64 | ... && ... | | +| cflow.cs:300:56:300:64 | ... != ... | cflow.cs:300:56:300:64 | After ... != ... | | +| cflow.cs:300:56:300:64 | After ... != ... | cflow.cs:300:44:300:64 | After ... && ... | | +| cflow.cs:300:56:300:64 | Before ... != ... | cflow.cs:300:56:300:56 | access to parameter s | | | cflow.cs:300:61:300:64 | null | cflow.cs:300:56:300:64 | ... != ... | | | cflow.cs:300:70:300:71 | "" | cflow.cs:300:9:300:72 | object creation of type NegationInConstructor | | -| cflow.cs:304:7:304:18 | call to constructor Object | cflow.cs:304:7:304:18 | {...} | | -| cflow.cs:304:7:304:18 | call to method | cflow.cs:304:7:304:18 | call to constructor Object | | -| cflow.cs:304:7:304:18 | enter LambdaGetter | cflow.cs:304:7:304:18 | this access | | -| cflow.cs:304:7:304:18 | exit LambdaGetter (normal) | cflow.cs:304:7:304:18 | exit LambdaGetter | | +| cflow.cs:304:7:304:18 | After call to constructor Object | cflow.cs:304:7:304:18 | {...} | | +| cflow.cs:304:7:304:18 | After call to method | cflow.cs:304:7:304:18 | Before call to constructor Object | | +| cflow.cs:304:7:304:18 | Before call to constructor Object | cflow.cs:304:7:304:18 | call to constructor Object | | +| cflow.cs:304:7:304:18 | Before call to method | cflow.cs:304:7:304:18 | this access | | +| cflow.cs:304:7:304:18 | Entry | cflow.cs:304:7:304:18 | Before call to method | | +| cflow.cs:304:7:304:18 | Normal Exit | cflow.cs:304:7:304:18 | Exit | | +| cflow.cs:304:7:304:18 | call to constructor Object | cflow.cs:304:7:304:18 | After call to constructor Object | | +| cflow.cs:304:7:304:18 | call to method | cflow.cs:304:7:304:18 | After call to method | | | cflow.cs:304:7:304:18 | this access | cflow.cs:304:7:304:18 | call to method | | -| cflow.cs:304:7:304:18 | {...} | cflow.cs:304:7:304:18 | exit LambdaGetter (normal) | | -| cflow.cs:306:60:310:5 | (...) => ... | cflow.cs:306:60:310:5 | exit get__getter (normal) | | -| cflow.cs:306:60:310:5 | enter (...) => ... | cflow.cs:307:5:310:5 | {...} | | -| cflow.cs:306:60:310:5 | enter get__getter | cflow.cs:306:60:310:5 | (...) => ... | | -| cflow.cs:306:60:310:5 | exit (...) => ... (normal) | cflow.cs:306:60:310:5 | exit (...) => ... | | -| cflow.cs:306:60:310:5 | exit get__getter (normal) | cflow.cs:306:60:310:5 | exit get__getter | | +| cflow.cs:304:7:304:18 | {...} | cflow.cs:304:7:304:18 | Normal Exit | | +| cflow.cs:306:60:310:5 | (...) => ... | cflow.cs:306:60:310:5 | Normal Exit | | +| cflow.cs:306:60:310:5 | Entry | cflow.cs:306:60:310:5 | (...) => ... | | +| cflow.cs:306:60:310:5 | Entry | cflow.cs:306:61:306:61 | o | | +| cflow.cs:306:60:310:5 | Normal Exit | cflow.cs:306:60:310:5 | Exit | | +| cflow.cs:306:60:310:5 | Normal Exit | cflow.cs:306:60:310:5 | Exit | | +| cflow.cs:306:61:306:61 | o | cflow.cs:306:64:306:64 | n | | +| cflow.cs:306:64:306:64 | n | cflow.cs:307:5:310:5 | {...} | | | cflow.cs:307:5:310:5 | {...} | cflow.cs:308:9:308:21 | ... ...; | | -| cflow.cs:308:9:308:21 | ... ...; | cflow.cs:308:20:308:20 | access to parameter o | | -| cflow.cs:308:16:308:20 | Object x = ... | cflow.cs:309:16:309:16 | access to local variable x | | +| cflow.cs:308:9:308:21 | ... ...; | cflow.cs:308:16:308:20 | Before Object x = ... | | +| cflow.cs:308:9:308:21 | After ... ...; | cflow.cs:309:9:309:17 | Before return ...; | | +| cflow.cs:308:16:308:16 | access to local variable x | cflow.cs:308:20:308:20 | access to parameter o | | +| cflow.cs:308:16:308:20 | After Object x = ... | cflow.cs:308:9:308:21 | After ... ...; | | +| cflow.cs:308:16:308:20 | Before Object x = ... | cflow.cs:308:16:308:16 | access to local variable x | | +| cflow.cs:308:16:308:20 | Object x = ... | cflow.cs:308:16:308:20 | After Object x = ... | | | cflow.cs:308:20:308:20 | access to parameter o | cflow.cs:308:16:308:20 | Object x = ... | | -| cflow.cs:309:9:309:17 | return ...; | cflow.cs:306:60:310:5 | exit (...) => ... (normal) | return | +| cflow.cs:309:9:309:17 | Before return ...; | cflow.cs:309:16:309:16 | access to local variable x | | +| cflow.cs:309:9:309:17 | return ...; | cflow.cs:306:60:310:5 | Normal Exit | return | | cflow.cs:309:16:309:16 | access to local variable x | cflow.cs:309:9:309:17 | return ...; | | diff --git a/csharp/ql/test/library-tests/controlflow/graph/NodeGraph.ql b/csharp/ql/test/library-tests/controlflow/graph/NodeGraph.ql index 6915c2a546cd..b8026566563e 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/NodeGraph.ql +++ b/csharp/ql/test/library-tests/controlflow/graph/NodeGraph.ql @@ -1,3 +1,3 @@ import csharp import Common -import semmle.code.csharp.controlflow.internal.ControlFlowGraphImpl::TestOutput +import ControlFlow::TestOutput diff --git a/csharp/ql/test/library-tests/controlflow/graph/Nodes.expected b/csharp/ql/test/library-tests/controlflow/graph/Nodes.expected index d76f989e5cff..c4141e7d6a10 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/Nodes.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/Nodes.expected @@ -1,84 +1,71 @@ -| AccessorCalls.cs:1:7:1:19 | AccessorCalls | AccessorCalls.cs:1:7:1:19 | this access | -| AccessorCalls.cs:5:23:5:25 | get_Item | AccessorCalls.cs:5:30:5:30 | access to parameter i | -| AccessorCalls.cs:5:33:5:35 | set_Item | AccessorCalls.cs:5:37:5:39 | {...} | -| AccessorCalls.cs:7:32:7:34 | add_Event | AccessorCalls.cs:7:36:7:38 | {...} | -| AccessorCalls.cs:7:40:7:45 | remove_Event | AccessorCalls.cs:7:47:7:49 | {...} | -| AccessorCalls.cs:10:10:10:11 | M1 | AccessorCalls.cs:11:5:17:5 | {...} | -| AccessorCalls.cs:19:10:19:11 | M2 | AccessorCalls.cs:20:5:26:5 | {...} | +| AccessorCalls.cs:5:23:5:25 | get_Item | AccessorCalls.cs:5:18:5:18 | i | +| AccessorCalls.cs:5:33:5:35 | set_Item | AccessorCalls.cs:5:18:5:18 | i | +| AccessorCalls.cs:7:32:7:34 | add_Event | AccessorCalls.cs:7:32:7:34 | value | +| AccessorCalls.cs:7:40:7:45 | remove_Event | AccessorCalls.cs:7:40:7:45 | value | +| AccessorCalls.cs:10:10:10:11 | M1 | AccessorCalls.cs:10:26:10:26 | e | +| AccessorCalls.cs:19:10:19:11 | M2 | AccessorCalls.cs:19:26:19:26 | e | | AccessorCalls.cs:28:10:28:11 | M3 | AccessorCalls.cs:29:5:33:5 | {...} | | AccessorCalls.cs:35:10:35:11 | M4 | AccessorCalls.cs:36:5:40:5 | {...} | | AccessorCalls.cs:42:10:42:11 | M5 | AccessorCalls.cs:43:5:47:5 | {...} | | AccessorCalls.cs:49:10:49:11 | M6 | AccessorCalls.cs:50:5:54:5 | {...} | -| AccessorCalls.cs:56:10:56:11 | M7 | AccessorCalls.cs:57:5:59:5 | {...} | -| AccessorCalls.cs:61:10:61:11 | M8 | AccessorCalls.cs:62:5:64:5 | {...} | -| AccessorCalls.cs:66:10:66:11 | M9 | AccessorCalls.cs:67:5:74:5 | {...} | -| ArrayCreation.cs:1:7:1:19 | ArrayCreation | ArrayCreation.cs:1:7:1:19 | this access | -| ArrayCreation.cs:3:11:3:12 | M1 | ArrayCreation.cs:3:27:3:27 | 0 | -| ArrayCreation.cs:5:12:5:13 | M2 | ArrayCreation.cs:5:28:5:28 | 0 | -| ArrayCreation.cs:7:11:7:12 | M3 | ArrayCreation.cs:7:19:7:36 | 2 | -| ArrayCreation.cs:9:12:9:13 | M4 | ArrayCreation.cs:9:20:9:52 | 2 | -| Assert.cs:5:7:5:17 | AssertTests | Assert.cs:5:7:5:17 | this access | -| Assert.cs:7:10:7:11 | M1 | Assert.cs:8:5:12:5 | {...} | -| Assert.cs:14:10:14:11 | M2 | Assert.cs:15:5:19:5 | {...} | -| Assert.cs:21:10:21:11 | M3 | Assert.cs:22:5:26:5 | {...} | -| Assert.cs:28:10:28:11 | M4 | Assert.cs:29:5:33:5 | {...} | -| Assert.cs:35:10:35:11 | M5 | Assert.cs:36:5:40:5 | {...} | -| Assert.cs:42:10:42:11 | M6 | Assert.cs:43:5:47:5 | {...} | -| Assert.cs:49:10:49:11 | M7 | Assert.cs:50:5:54:5 | {...} | -| Assert.cs:56:10:56:11 | M8 | Assert.cs:57:5:61:5 | {...} | -| Assert.cs:63:10:63:11 | M9 | Assert.cs:64:5:68:5 | {...} | -| Assert.cs:70:10:70:12 | M10 | Assert.cs:71:5:75:5 | {...} | -| Assert.cs:77:10:77:12 | M11 | Assert.cs:78:5:82:5 | {...} | -| Assert.cs:84:10:84:12 | M12 | Assert.cs:85:5:129:5 | {...} | -| Assert.cs:131:18:131:32 | AssertTrueFalse | Assert.cs:135:5:136:5 | {...} | -| Assert.cs:138:10:138:12 | M13 | Assert.cs:139:5:142:5 | {...} | -| Assignments.cs:1:7:1:17 | Assignments | Assignments.cs:1:7:1:17 | this access | +| AccessorCalls.cs:56:10:56:11 | M7 | AccessorCalls.cs:56:17:56:17 | i | +| AccessorCalls.cs:61:10:61:11 | M8 | AccessorCalls.cs:61:17:61:17 | i | +| AccessorCalls.cs:66:10:66:11 | M9 | AccessorCalls.cs:66:20:66:20 | o | +| Assert.cs:7:10:7:11 | M1 | Assert.cs:7:18:7:18 | b | +| Assert.cs:14:10:14:11 | M2 | Assert.cs:14:18:14:18 | b | +| Assert.cs:21:10:21:11 | M3 | Assert.cs:21:18:21:18 | b | +| Assert.cs:28:10:28:11 | M4 | Assert.cs:28:18:28:18 | b | +| Assert.cs:35:10:35:11 | M5 | Assert.cs:35:18:35:18 | b | +| Assert.cs:42:10:42:11 | M6 | Assert.cs:42:18:42:18 | b | +| Assert.cs:49:10:49:11 | M7 | Assert.cs:49:18:49:18 | b | +| Assert.cs:56:10:56:11 | M8 | Assert.cs:56:18:56:18 | b | +| Assert.cs:63:10:63:11 | M9 | Assert.cs:63:18:63:18 | b | +| Assert.cs:70:10:70:12 | M10 | Assert.cs:70:19:70:19 | b | +| Assert.cs:77:10:77:12 | M11 | Assert.cs:77:19:77:19 | b | +| Assert.cs:84:10:84:12 | M12 | Assert.cs:84:19:84:19 | b | +| Assert.cs:131:18:131:32 | AssertTrueFalse | Assert.cs:132:74:132:83 | condition1 | +| Assert.cs:138:10:138:12 | M13 | Assert.cs:138:19:138:20 | b1 | | Assignments.cs:3:10:3:10 | M | Assignments.cs:4:5:15:5 | {...} | -| Assignments.cs:14:18:14:35 | (...) => ... | Assignments.cs:14:33:14:35 | {...} | -| Assignments.cs:17:40:17:40 | + | Assignments.cs:18:5:20:5 | {...} | -| Assignments.cs:27:10:27:23 | SetParamSingle | Assignments.cs:28:5:30:5 | {...} | -| Assignments.cs:32:10:32:22 | SetParamMulti | Assignments.cs:33:5:36:5 | {...} | +| Assignments.cs:14:18:14:35 | (...) => ... | Assignments.cs:14:19:14:24 | sender | +| Assignments.cs:17:40:17:40 | + | Assignments.cs:17:54:17:54 | x | +| Assignments.cs:27:10:27:23 | SetParamSingle | Assignments.cs:27:33:27:33 | x | +| Assignments.cs:32:10:32:22 | SetParamMulti | Assignments.cs:32:32:32:32 | x | | Assignments.cs:38:10:38:11 | M2 | Assignments.cs:39:5:45:5 | {...} | -| BreakInTry.cs:1:7:1:16 | BreakInTry | BreakInTry.cs:1:7:1:16 | this access | -| BreakInTry.cs:3:10:3:11 | M1 | BreakInTry.cs:4:5:18:5 | {...} | -| BreakInTry.cs:20:10:20:11 | M2 | BreakInTry.cs:21:5:36:5 | {...} | -| BreakInTry.cs:38:10:38:11 | M3 | BreakInTry.cs:39:5:54:5 | {...} | -| BreakInTry.cs:56:10:56:11 | M4 | BreakInTry.cs:57:5:71:5 | {...} | -| CompileTimeOperators.cs:3:7:3:26 | CompileTimeOperators | CompileTimeOperators.cs:3:7:3:26 | this access | +| BreakInTry.cs:3:10:3:11 | M1 | BreakInTry.cs:3:22:3:25 | args | +| BreakInTry.cs:20:10:20:11 | M2 | BreakInTry.cs:20:22:20:25 | args | +| BreakInTry.cs:38:10:38:11 | M3 | BreakInTry.cs:38:22:38:25 | args | +| BreakInTry.cs:56:10:56:11 | M4 | BreakInTry.cs:56:22:56:25 | args | | CompileTimeOperators.cs:5:9:5:15 | Default | CompileTimeOperators.cs:6:5:8:5 | {...} | | CompileTimeOperators.cs:10:9:10:14 | Sizeof | CompileTimeOperators.cs:11:5:13:5 | {...} | | CompileTimeOperators.cs:15:10:15:15 | Typeof | CompileTimeOperators.cs:16:5:18:5 | {...} | -| CompileTimeOperators.cs:20:12:20:17 | Nameof | CompileTimeOperators.cs:21:5:23:5 | {...} | -| CompileTimeOperators.cs:26:7:26:22 | GotoInTryFinally | CompileTimeOperators.cs:26:7:26:22 | this access | +| CompileTimeOperators.cs:20:12:20:17 | Nameof | CompileTimeOperators.cs:20:23:20:23 | i | | CompileTimeOperators.cs:28:10:28:10 | M | CompileTimeOperators.cs:29:5:41:5 | {...} | -| ConditionalAccess.cs:1:7:1:23 | ConditionalAccess | ConditionalAccess.cs:1:7:1:23 | this access | -| ConditionalAccess.cs:3:12:3:13 | M1 | ConditionalAccess.cs:3:26:3:26 | access to parameter i | -| ConditionalAccess.cs:5:10:5:11 | M2 | ConditionalAccess.cs:5:26:5:26 | access to parameter s | -| ConditionalAccess.cs:7:10:7:11 | M3 | ConditionalAccess.cs:7:39:7:40 | access to parameter s1 | -| ConditionalAccess.cs:9:9:9:10 | M4 | ConditionalAccess.cs:9:25:9:25 | access to parameter s | -| ConditionalAccess.cs:11:9:11:10 | M5 | ConditionalAccess.cs:12:5:17:5 | {...} | -| ConditionalAccess.cs:19:12:19:13 | M6 | ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | -| ConditionalAccess.cs:21:10:21:11 | M7 | ConditionalAccess.cs:22:5:26:5 | {...} | -| ConditionalAccess.cs:30:10:30:12 | Out | ConditionalAccess.cs:30:32:30:32 | 0 | -| ConditionalAccess.cs:32:10:32:11 | M8 | ConditionalAccess.cs:33:5:36:5 | {...} | -| ConditionalAccess.cs:42:9:42:11 | get_Item | ConditionalAccess.cs:42:13:42:28 | {...} | -| ConditionalAccess.cs:43:9:43:11 | set_Item | ConditionalAccess.cs:43:13:43:15 | {...} | -| ConditionalAccess.cs:46:10:46:11 | M9 | ConditionalAccess.cs:47:5:55:5 | {...} | -| ConditionalAccess.cs:60:26:60:38 | CommaJoinWith | ConditionalAccess.cs:60:70:60:71 | access to parameter s1 | -| Conditions.cs:1:7:1:16 | Conditions | Conditions.cs:1:7:1:16 | this access | -| Conditions.cs:3:10:3:19 | IncrOrDecr | Conditions.cs:4:5:9:5 | {...} | -| Conditions.cs:11:9:11:10 | M1 | Conditions.cs:12:5:20:5 | {...} | -| Conditions.cs:22:9:22:10 | M2 | Conditions.cs:23:5:31:5 | {...} | -| Conditions.cs:33:9:33:10 | M3 | Conditions.cs:34:5:44:5 | {...} | -| Conditions.cs:46:9:46:10 | M4 | Conditions.cs:47:5:55:5 | {...} | -| Conditions.cs:57:9:57:10 | M5 | Conditions.cs:58:5:68:5 | {...} | -| Conditions.cs:70:9:70:10 | M6 | Conditions.cs:71:5:84:5 | {...} | -| Conditions.cs:86:9:86:10 | M7 | Conditions.cs:87:5:100:5 | {...} | -| Conditions.cs:102:12:102:13 | M8 | Conditions.cs:103:5:111:5 | {...} | -| Conditions.cs:113:10:113:11 | M9 | Conditions.cs:114:5:124:5 | {...} | +| ConditionalAccess.cs:3:12:3:13 | M1 | ConditionalAccess.cs:3:20:3:20 | i | +| ConditionalAccess.cs:5:10:5:11 | M2 | ConditionalAccess.cs:5:20:5:20 | s | +| ConditionalAccess.cs:7:10:7:11 | M3 | ConditionalAccess.cs:7:20:7:21 | s1 | +| ConditionalAccess.cs:9:9:9:10 | M4 | ConditionalAccess.cs:9:19:9:19 | s | +| ConditionalAccess.cs:11:9:11:10 | M5 | ConditionalAccess.cs:11:19:11:19 | s | +| ConditionalAccess.cs:19:12:19:13 | M6 | ConditionalAccess.cs:19:22:19:23 | s1 | +| ConditionalAccess.cs:21:10:21:11 | M7 | ConditionalAccess.cs:21:17:21:17 | i | +| ConditionalAccess.cs:30:10:30:12 | Out | ConditionalAccess.cs:30:22:30:22 | i | +| ConditionalAccess.cs:32:10:32:11 | M8 | ConditionalAccess.cs:32:18:32:18 | b | +| ConditionalAccess.cs:42:9:42:11 | get_Item | ConditionalAccess.cs:40:21:40:25 | index | +| ConditionalAccess.cs:43:9:43:11 | set_Item | ConditionalAccess.cs:40:21:40:25 | index | +| ConditionalAccess.cs:46:10:46:11 | M9 | ConditionalAccess.cs:46:31:46:32 | ca | +| ConditionalAccess.cs:60:26:60:38 | CommaJoinWith | ConditionalAccess.cs:60:52:60:53 | s1 | +| Conditions.cs:3:10:3:19 | IncrOrDecr | Conditions.cs:3:26:3:28 | inc | +| Conditions.cs:11:9:11:10 | M1 | Conditions.cs:11:17:11:17 | b | +| Conditions.cs:22:9:22:10 | M2 | Conditions.cs:22:17:22:18 | b1 | +| Conditions.cs:33:9:33:10 | M3 | Conditions.cs:33:17:33:18 | b1 | +| Conditions.cs:46:9:46:10 | M4 | Conditions.cs:46:17:46:17 | b | +| Conditions.cs:57:9:57:10 | M5 | Conditions.cs:57:17:57:17 | b | +| Conditions.cs:70:9:70:10 | M6 | Conditions.cs:70:21:70:22 | ss | +| Conditions.cs:86:9:86:10 | M7 | Conditions.cs:86:21:86:22 | ss | +| Conditions.cs:102:12:102:13 | M8 | Conditions.cs:102:20:102:20 | b | +| Conditions.cs:113:10:113:11 | M9 | Conditions.cs:113:22:113:25 | args | | Conditions.cs:129:10:129:12 | M10 | Conditions.cs:130:5:141:5 | {...} | -| Conditions.cs:143:10:143:12 | M11 | Conditions.cs:144:5:150:5 | {...} | -| ExitMethods.cs:6:7:6:17 | ExitMethods | ExitMethods.cs:6:7:6:17 | this access | +| Conditions.cs:143:10:143:12 | M11 | Conditions.cs:143:19:143:19 | b | +| DefaultParam.cs:3:12:3:13 | M1 | DefaultParam.cs:3:20:3:20 | b | | ExitMethods.cs:8:10:8:11 | M1 | ExitMethods.cs:9:5:12:5 | {...} | | ExitMethods.cs:14:10:14:11 | M2 | ExitMethods.cs:15:5:18:5 | {...} | | ExitMethods.cs:20:10:20:11 | M3 | ExitMethods.cs:21:5:24:5 | {...} | @@ -87,25 +74,22 @@ | ExitMethods.cs:38:10:38:11 | M6 | ExitMethods.cs:39:5:52:5 | {...} | | ExitMethods.cs:54:10:54:11 | M7 | ExitMethods.cs:55:5:58:5 | {...} | | ExitMethods.cs:60:10:60:11 | M8 | ExitMethods.cs:61:5:64:5 | {...} | -| ExitMethods.cs:66:17:66:26 | ErrorMaybe | ExitMethods.cs:67:5:70:5 | {...} | -| ExitMethods.cs:72:17:72:27 | ErrorAlways | ExitMethods.cs:73:5:78:5 | {...} | +| ExitMethods.cs:66:17:66:26 | ErrorMaybe | ExitMethods.cs:66:33:66:33 | b | +| ExitMethods.cs:72:17:72:27 | ErrorAlways | ExitMethods.cs:72:34:72:34 | b | | ExitMethods.cs:80:17:80:28 | ErrorAlways2 | ExitMethods.cs:81:5:83:5 | {...} | -| ExitMethods.cs:85:17:85:28 | ErrorAlways3 | ExitMethods.cs:85:41:85:55 | object creation of type Exception | | ExitMethods.cs:87:10:87:13 | Exit | ExitMethods.cs:88:5:90:5 | {...} | | ExitMethods.cs:92:10:92:18 | ExitInTry | ExitMethods.cs:93:5:103:5 | {...} | | ExitMethods.cs:105:10:105:24 | ApplicationExit | ExitMethods.cs:106:5:108:5 | {...} | -| ExitMethods.cs:110:13:110:21 | ThrowExpr | ExitMethods.cs:111:5:113:5 | {...} | -| ExitMethods.cs:115:16:115:34 | ExtensionMethodCall | ExitMethods.cs:116:5:118:5 | {...} | +| ExitMethods.cs:110:13:110:21 | ThrowExpr | ExitMethods.cs:110:31:110:35 | input | +| ExitMethods.cs:115:16:115:34 | ExtensionMethodCall | ExitMethods.cs:115:43:115:43 | s | | ExitMethods.cs:120:17:120:32 | FailingAssertion | ExitMethods.cs:121:5:124:5 | {...} | | ExitMethods.cs:126:17:126:33 | FailingAssertion2 | ExitMethods.cs:127:5:130:5 | {...} | -| ExitMethods.cs:132:10:132:20 | AssertFalse | ExitMethods.cs:132:48:132:48 | access to parameter b | +| ExitMethods.cs:132:10:132:20 | AssertFalse | ExitMethods.cs:132:27:132:27 | b | | ExitMethods.cs:134:17:134:33 | FailingAssertion3 | ExitMethods.cs:135:5:138:5 | {...} | -| ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | ExitMethods.cs:141:5:147:5 | {...} | -| Extensions.cs:5:23:5:29 | ToInt32 | Extensions.cs:6:5:8:5 | {...} | -| Extensions.cs:10:24:10:29 | ToBool | Extensions.cs:11:5:13:5 | {...} | -| Extensions.cs:15:23:15:33 | CallToInt32 | Extensions.cs:15:48:15:50 | "0" | -| Extensions.cs:20:17:20:20 | Main | Extensions.cs:21:5:26:5 | {...} | -| Finally.cs:3:14:3:20 | Finally | Finally.cs:3:14:3:20 | this access | +| ExitMethods.cs:140:17:140:42 | ExceptionDispatchInfoThrow | ExitMethods.cs:140:49:140:49 | b | +| Extensions.cs:5:23:5:29 | ToInt32 | Extensions.cs:5:43:5:43 | s | +| Extensions.cs:10:24:10:29 | ToBool | Extensions.cs:10:43:10:43 | s | +| Extensions.cs:20:17:20:20 | Main | Extensions.cs:20:29:20:29 | s | | Finally.cs:7:10:7:11 | M1 | Finally.cs:8:5:17:5 | {...} | | Finally.cs:19:10:19:11 | M2 | Finally.cs:20:5:52:5 | {...} | | Finally.cs:54:10:54:11 | M3 | Finally.cs:55:5:72:5 | {...} | @@ -113,173 +97,123 @@ | Finally.cs:103:10:103:11 | M5 | Finally.cs:104:5:119:5 | {...} | | Finally.cs:121:10:121:11 | M6 | Finally.cs:122:5:131:5 | {...} | | Finally.cs:133:10:133:11 | M7 | Finally.cs:134:5:145:5 | {...} | -| Finally.cs:147:10:147:11 | M8 | Finally.cs:148:5:170:5 | {...} | -| Finally.cs:172:11:172:20 | ExceptionA | Finally.cs:172:11:172:20 | this access | -| Finally.cs:173:11:173:20 | ExceptionB | Finally.cs:173:11:173:20 | this access | -| Finally.cs:174:11:174:20 | ExceptionC | Finally.cs:174:11:174:20 | this access | -| Finally.cs:176:10:176:11 | M9 | Finally.cs:177:5:193:5 | {...} | -| Finally.cs:195:10:195:12 | M10 | Finally.cs:196:5:214:5 | {...} | +| Finally.cs:147:10:147:11 | M8 | Finally.cs:147:22:147:25 | args | +| Finally.cs:176:10:176:11 | M9 | Finally.cs:176:18:176:19 | b1 | +| Finally.cs:195:10:195:12 | M10 | Finally.cs:195:19:195:20 | b1 | | Finally.cs:216:10:216:12 | M11 | Finally.cs:217:5:231:5 | {...} | -| Finally.cs:233:10:233:12 | M12 | Finally.cs:234:5:261:5 | {...} | -| Finally.cs:263:10:263:12 | M13 | Finally.cs:264:5:274:5 | {...} | -| Foreach.cs:4:7:4:13 | Foreach | Foreach.cs:4:7:4:13 | this access | -| Foreach.cs:6:10:6:11 | M1 | Foreach.cs:7:5:10:5 | {...} | -| Foreach.cs:12:10:12:11 | M2 | Foreach.cs:13:5:16:5 | {...} | -| Foreach.cs:18:10:18:11 | M3 | Foreach.cs:19:5:22:5 | {...} | -| Foreach.cs:24:10:24:11 | M4 | Foreach.cs:25:5:28:5 | {...} | -| Foreach.cs:30:10:30:11 | M5 | Foreach.cs:31:5:34:5 | {...} | -| Foreach.cs:36:10:36:11 | M6 | Foreach.cs:37:5:40:5 | {...} | -| Initializers.cs:3:7:3:18 | | Initializers.cs:5:9:5:9 | this access | -| Initializers.cs:3:7:3:18 | Initializers | Initializers.cs:3:7:3:18 | {...} | -| Initializers.cs:8:5:8:16 | Initializers | Initializers.cs:8:5:8:16 | this access | -| Initializers.cs:10:5:10:16 | Initializers | Initializers.cs:10:5:10:16 | this access | +| Finally.cs:233:10:233:12 | M12 | Finally.cs:233:19:233:20 | b1 | +| Finally.cs:263:10:263:12 | M13 | Finally.cs:263:18:263:18 | i | +| Foreach.cs:6:10:6:11 | M1 | Foreach.cs:6:22:6:25 | args | +| Foreach.cs:12:10:12:11 | M2 | Foreach.cs:12:22:12:25 | args | +| Foreach.cs:18:10:18:11 | M3 | Foreach.cs:18:33:18:33 | e | +| Foreach.cs:24:10:24:11 | M4 | Foreach.cs:24:40:24:43 | args | +| Foreach.cs:30:10:30:11 | M5 | Foreach.cs:30:40:30:43 | args | +| Foreach.cs:36:10:36:11 | M6 | Foreach.cs:36:40:36:43 | args | +| Initializers.cs:10:5:10:16 | Initializers | Initializers.cs:10:25:10:25 | s | | Initializers.cs:12:10:12:10 | M | Initializers.cs:13:5:16:5 | {...} | -| Initializers.cs:20:11:20:23 | | Initializers.cs:22:23:22:23 | this access | -| Initializers.cs:20:11:20:23 | NoConstructor | Initializers.cs:20:11:20:23 | this access | -| Initializers.cs:26:11:26:13 | | Initializers.cs:28:13:28:13 | this access | -| Initializers.cs:31:9:31:11 | Sub | Initializers.cs:31:9:31:11 | this access | -| Initializers.cs:33:9:33:11 | Sub | Initializers.cs:33:22:33:25 | call to constructor Sub | -| Initializers.cs:35:9:35:11 | Sub | Initializers.cs:35:9:35:11 | this access | -| Initializers.cs:39:7:39:23 | IndexInitializers | Initializers.cs:39:7:39:23 | this access | -| Initializers.cs:41:11:41:18 | Compound | Initializers.cs:41:11:41:18 | this access | -| Initializers.cs:51:10:51:13 | Test | Initializers.cs:52:5:66:5 | {...} | -| LoopUnrolling.cs:5:7:5:19 | LoopUnrolling | LoopUnrolling.cs:5:7:5:19 | this access | -| LoopUnrolling.cs:7:10:7:11 | M1 | LoopUnrolling.cs:8:5:13:5 | {...} | +| Initializers.cs:33:9:33:11 | Sub | Initializers.cs:33:17:33:17 | i | +| Initializers.cs:35:9:35:11 | Sub | Initializers.cs:35:17:35:17 | i | +| Initializers.cs:51:10:51:13 | Test | Initializers.cs:51:19:51:19 | i | +| LoopUnrolling.cs:7:10:7:11 | M1 | LoopUnrolling.cs:7:22:7:25 | args | | LoopUnrolling.cs:15:10:15:11 | M2 | LoopUnrolling.cs:16:5:20:5 | {...} | -| LoopUnrolling.cs:22:10:22:11 | M3 | LoopUnrolling.cs:23:5:27:5 | {...} | +| LoopUnrolling.cs:22:10:22:11 | M3 | LoopUnrolling.cs:22:20:22:23 | args | | LoopUnrolling.cs:29:10:29:11 | M4 | LoopUnrolling.cs:30:5:34:5 | {...} | | LoopUnrolling.cs:36:10:36:11 | M5 | LoopUnrolling.cs:37:5:43:5 | {...} | | LoopUnrolling.cs:45:10:45:11 | M6 | LoopUnrolling.cs:46:5:53:5 | {...} | -| LoopUnrolling.cs:55:10:55:11 | M7 | LoopUnrolling.cs:56:5:65:5 | {...} | -| LoopUnrolling.cs:67:10:67:11 | M8 | LoopUnrolling.cs:68:5:74:5 | {...} | +| LoopUnrolling.cs:55:10:55:11 | M7 | LoopUnrolling.cs:55:18:55:18 | b | +| LoopUnrolling.cs:67:10:67:11 | M8 | LoopUnrolling.cs:67:26:67:29 | args | | LoopUnrolling.cs:76:10:76:11 | M9 | LoopUnrolling.cs:77:5:83:5 | {...} | | LoopUnrolling.cs:85:10:85:12 | M10 | LoopUnrolling.cs:86:5:92:5 | {...} | | LoopUnrolling.cs:94:10:94:12 | M11 | LoopUnrolling.cs:95:5:101:5 | {...} | -| MultiImplementationA.cs:4:7:4:8 | C1 | MultiImplementationA.cs:4:7:4:8 | this access | -| MultiImplementationA.cs:4:7:4:8 | C1 | MultiImplementationB.cs:1:7:1:8 | this access | -| MultiImplementationA.cs:6:22:6:31 | get_P1 | MultiImplementationA.cs:6:28:6:31 | null | | MultiImplementationA.cs:6:22:6:31 | get_P1 | MultiImplementationB.cs:3:22:3:22 | 0 | | MultiImplementationA.cs:7:21:7:23 | get_P2 | MultiImplementationA.cs:7:25:7:39 | {...} | | MultiImplementationA.cs:7:21:7:23 | get_P2 | MultiImplementationB.cs:4:25:4:37 | {...} | -| MultiImplementationA.cs:7:41:7:43 | set_P2 | MultiImplementationA.cs:7:45:7:59 | {...} | -| MultiImplementationA.cs:7:41:7:43 | set_P2 | MultiImplementationB.cs:4:43:4:45 | {...} | -| MultiImplementationA.cs:8:16:8:16 | M | MultiImplementationA.cs:8:29:8:32 | null | +| MultiImplementationA.cs:7:41:7:43 | set_P2 | MultiImplementationA.cs:7:41:7:43 | value | | MultiImplementationA.cs:8:16:8:16 | M | MultiImplementationB.cs:5:23:5:23 | 2 | -| MultiImplementationA.cs:11:7:11:8 | | MultiImplementationA.cs:13:16:13:16 | this access | -| MultiImplementationA.cs:11:7:11:8 | | MultiImplementationB.cs:11:16:11:16 | this access | -| MultiImplementationA.cs:14:31:14:31 | get_Item | MultiImplementationA.cs:14:31:14:31 | access to parameter i | -| MultiImplementationA.cs:14:31:14:31 | get_Item | MultiImplementationB.cs:12:37:12:40 | null | -| MultiImplementationA.cs:15:36:15:38 | get_Item | MultiImplementationA.cs:15:40:15:52 | {...} | -| MultiImplementationA.cs:15:36:15:38 | get_Item | MultiImplementationB.cs:13:40:13:54 | {...} | -| MultiImplementationA.cs:15:54:15:56 | set_Item | MultiImplementationA.cs:15:58:15:60 | {...} | -| MultiImplementationA.cs:15:54:15:56 | set_Item | MultiImplementationB.cs:13:60:13:62 | {...} | -| MultiImplementationA.cs:16:17:16:18 | M1 | MultiImplementationA.cs:17:5:19:5 | {...} | -| MultiImplementationA.cs:16:17:16:18 | M1 | MultiImplementationB.cs:15:5:17:5 | {...} | +| MultiImplementationA.cs:14:31:14:31 | get_Item | MultiImplementationA.cs:14:25:14:25 | i | +| MultiImplementationA.cs:15:36:15:38 | get_Item | MultiImplementationA.cs:15:31:15:31 | s | +| MultiImplementationA.cs:15:54:15:56 | set_Item | MultiImplementationA.cs:15:31:15:31 | s | +| MultiImplementationA.cs:16:17:16:18 | M1 | MultiImplementationA.cs:16:24:16:24 | i | | MultiImplementationA.cs:18:9:18:22 | M2 | MultiImplementationA.cs:18:21:18:21 | 0 | -| MultiImplementationA.cs:20:12:20:13 | C2 | MultiImplementationA.cs:20:12:20:13 | this access | -| MultiImplementationA.cs:20:12:20:13 | C2 | MultiImplementationB.cs:18:12:18:13 | this access | -| MultiImplementationA.cs:21:12:21:13 | C2 | MultiImplementationA.cs:21:24:21:24 | 0 | -| MultiImplementationA.cs:21:12:21:13 | C2 | MultiImplementationB.cs:19:24:19:24 | 1 | +| MultiImplementationA.cs:20:12:20:13 | C2 | MultiImplementationA.cs:20:19:20:19 | i | | MultiImplementationA.cs:22:6:22:7 | ~C2 | MultiImplementationA.cs:22:11:22:13 | {...} | | MultiImplementationA.cs:22:6:22:7 | ~C2 | MultiImplementationB.cs:20:11:20:25 | {...} | -| MultiImplementationA.cs:23:28:23:35 | implicit conversion | MultiImplementationA.cs:23:50:23:53 | null | -| MultiImplementationA.cs:23:28:23:35 | implicit conversion | MultiImplementationB.cs:21:56:21:59 | null | -| MultiImplementationA.cs:28:7:28:8 | C3 | MultiImplementationA.cs:28:7:28:8 | this access | -| MultiImplementationA.cs:28:7:28:8 | C3 | MultiImplementationB.cs:25:7:25:8 | this access | -| MultiImplementationA.cs:30:21:30:23 | get_P3 | MultiImplementationA.cs:30:34:30:37 | null | -| MultiImplementationA.cs:34:15:34:16 | C4 | MultiImplementationA.cs:34:15:34:16 | this access | -| MultiImplementationA.cs:34:15:34:16 | C4 | MultiImplementationB.cs:30:15:30:16 | this access | +| MultiImplementationA.cs:23:28:23:35 | implicit conversion | MultiImplementationA.cs:23:44:23:44 | i | | MultiImplementationA.cs:36:9:36:10 | M1 | MultiImplementationA.cs:36:14:36:28 | {...} | | MultiImplementationA.cs:36:9:36:10 | M1 | MultiImplementationB.cs:32:17:32:17 | 0 | | MultiImplementationA.cs:37:9:37:10 | M2 | MultiImplementationA.cs:37:14:37:28 | {...} | -| MultiImplementationB.cs:16:9:16:31 | M2 | MultiImplementationB.cs:16:27:16:30 | null | -| NullCoalescing.cs:1:7:1:20 | NullCoalescing | NullCoalescing.cs:1:7:1:20 | this access | -| NullCoalescing.cs:3:9:3:10 | M1 | NullCoalescing.cs:3:23:3:23 | access to parameter i | -| NullCoalescing.cs:5:9:5:10 | M2 | NullCoalescing.cs:5:25:5:25 | access to parameter b | -| NullCoalescing.cs:7:12:7:13 | M3 | NullCoalescing.cs:7:40:7:41 | access to parameter s1 | -| NullCoalescing.cs:9:12:9:13 | M4 | NullCoalescing.cs:9:37:9:37 | access to parameter b | -| NullCoalescing.cs:11:9:11:10 | M5 | NullCoalescing.cs:11:44:11:45 | access to parameter b1 | -| NullCoalescing.cs:13:10:13:11 | M6 | NullCoalescing.cs:14:5:18:5 | {...} | -| PartialImplementationA.cs:1:15:1:21 | | PartialImplementationB.cs:3:16:3:16 | this access | -| PartialImplementationA.cs:3:12:3:18 | Partial | PartialImplementationA.cs:3:12:3:18 | this access | -| PartialImplementationB.cs:4:12:4:18 | Partial | PartialImplementationB.cs:4:12:4:18 | this access | -| Patterns.cs:3:7:3:14 | Patterns | Patterns.cs:3:7:3:14 | this access | +| NullCoalescing.cs:3:9:3:10 | M1 | NullCoalescing.cs:3:17:3:17 | i | +| NullCoalescing.cs:5:9:5:10 | M2 | NullCoalescing.cs:5:18:5:18 | b | +| NullCoalescing.cs:7:12:7:13 | M3 | NullCoalescing.cs:7:22:7:23 | s1 | +| NullCoalescing.cs:9:12:9:13 | M4 | NullCoalescing.cs:9:20:9:20 | b | +| NullCoalescing.cs:11:9:11:10 | M5 | NullCoalescing.cs:11:18:11:19 | b1 | +| NullCoalescing.cs:13:10:13:11 | M6 | NullCoalescing.cs:13:17:13:17 | i | +| PartialImplementationA.cs:3:12:3:18 | Partial | PartialImplementationA.cs:3:24:3:24 | i | | Patterns.cs:5:10:5:11 | M1 | Patterns.cs:6:5:43:5 | {...} | -| Patterns.cs:47:24:47:25 | M2 | Patterns.cs:48:9:48:9 | access to parameter c | -| Patterns.cs:50:24:50:25 | M3 | Patterns.cs:51:9:51:9 | access to parameter c | -| Patterns.cs:53:24:53:25 | M4 | Patterns.cs:54:9:54:9 | access to parameter c | -| Patterns.cs:56:26:56:27 | M5 | Patterns.cs:57:5:63:5 | {...} | +| Patterns.cs:47:24:47:25 | M2 | Patterns.cs:47:32:47:32 | c | +| Patterns.cs:50:24:50:25 | M3 | Patterns.cs:50:34:50:34 | c | +| Patterns.cs:53:24:53:25 | M4 | Patterns.cs:53:34:53:34 | c | +| Patterns.cs:56:26:56:27 | M5 | Patterns.cs:56:33:56:33 | i | | Patterns.cs:65:26:65:27 | M6 | Patterns.cs:66:5:72:5 | {...} | -| Patterns.cs:74:26:74:27 | M7 | Patterns.cs:75:5:83:5 | {...} | -| Patterns.cs:85:26:85:27 | M8 | Patterns.cs:85:39:85:39 | access to parameter i | -| Patterns.cs:87:26:87:27 | M9 | Patterns.cs:87:39:87:39 | access to parameter i | +| Patterns.cs:74:26:74:27 | M7 | Patterns.cs:74:33:74:33 | i | +| Patterns.cs:85:26:85:27 | M8 | Patterns.cs:85:33:85:33 | i | +| Patterns.cs:87:26:87:27 | M9 | Patterns.cs:87:33:87:33 | i | | Patterns.cs:93:17:93:19 | M10 | Patterns.cs:94:5:99:5 | {...} | -| PostDominance.cs:3:7:3:19 | PostDominance | PostDominance.cs:3:7:3:19 | this access | -| PostDominance.cs:5:10:5:11 | M1 | PostDominance.cs:6:5:8:5 | {...} | -| PostDominance.cs:10:10:10:11 | M2 | PostDominance.cs:11:5:15:5 | {...} | -| PostDominance.cs:17:10:17:11 | M3 | PostDominance.cs:18:5:22:5 | {...} | -| Qualifiers.cs:1:7:1:16 | Qualifiers | Qualifiers.cs:1:7:1:16 | this access | +| PostDominance.cs:5:10:5:11 | M1 | PostDominance.cs:5:20:5:20 | s | +| PostDominance.cs:10:10:10:11 | M2 | PostDominance.cs:10:20:10:20 | s | +| PostDominance.cs:17:10:17:11 | M3 | PostDominance.cs:17:20:17:20 | s | | Qualifiers.cs:7:16:7:21 | Method | Qualifiers.cs:7:28:7:31 | null | | Qualifiers.cs:8:23:8:34 | StaticMethod | Qualifiers.cs:8:41:8:44 | null | | Qualifiers.cs:10:10:10:10 | M | Qualifiers.cs:11:5:31:5 | {...} | -| Switch.cs:3:7:3:12 | Switch | Switch.cs:3:7:3:12 | this access | -| Switch.cs:5:10:5:11 | M1 | Switch.cs:6:5:8:5 | {...} | -| Switch.cs:10:10:10:11 | M2 | Switch.cs:11:5:33:5 | {...} | +| Switch.cs:5:10:5:11 | M1 | Switch.cs:5:20:5:20 | o | +| Switch.cs:10:10:10:11 | M2 | Switch.cs:10:20:10:20 | o | | Switch.cs:35:10:35:11 | M3 | Switch.cs:36:5:42:5 | {...} | -| Switch.cs:44:10:44:11 | M4 | Switch.cs:45:5:53:5 | {...} | +| Switch.cs:44:10:44:11 | M4 | Switch.cs:44:20:44:20 | o | | Switch.cs:55:10:55:11 | M5 | Switch.cs:56:5:64:5 | {...} | -| Switch.cs:66:10:66:11 | M6 | Switch.cs:67:5:75:5 | {...} | -| Switch.cs:77:10:77:11 | M7 | Switch.cs:78:5:89:5 | {...} | -| Switch.cs:91:10:91:11 | M8 | Switch.cs:92:5:99:5 | {...} | -| Switch.cs:101:9:101:10 | M9 | Switch.cs:102:5:109:5 | {...} | -| Switch.cs:111:17:111:21 | Throw | Switch.cs:111:34:111:48 | object creation of type Exception | -| Switch.cs:113:9:113:11 | M10 | Switch.cs:114:5:121:5 | {...} | -| Switch.cs:123:10:123:12 | M11 | Switch.cs:124:5:127:5 | {...} | -| Switch.cs:129:12:129:14 | M12 | Switch.cs:130:5:132:5 | {...} | -| Switch.cs:134:9:134:11 | M13 | Switch.cs:135:5:142:5 | {...} | -| Switch.cs:144:9:144:11 | M14 | Switch.cs:145:5:152:5 | {...} | -| Switch.cs:154:10:154:12 | M15 | Switch.cs:155:5:161:5 | {...} | -| Switch.cs:163:10:163:12 | M16 | Switch.cs:164:5:178:5 | {...} | -| TypeAccesses.cs:1:7:1:18 | TypeAccesses | TypeAccesses.cs:1:7:1:18 | this access | -| TypeAccesses.cs:3:10:3:10 | M | TypeAccesses.cs:4:5:9:5 | {...} | -| VarDecls.cs:3:7:3:14 | VarDecls | VarDecls.cs:3:7:3:14 | this access | -| VarDecls.cs:5:18:5:19 | M1 | VarDecls.cs:6:5:11:5 | {...} | -| VarDecls.cs:13:12:13:13 | M2 | VarDecls.cs:14:5:17:5 | {...} | -| VarDecls.cs:19:7:19:8 | M3 | VarDecls.cs:20:5:26:5 | {...} | -| VarDecls.cs:28:11:28:11 | C | VarDecls.cs:28:11:28:11 | this access | +| Switch.cs:66:10:66:11 | M6 | Switch.cs:66:20:66:20 | s | +| Switch.cs:77:10:77:11 | M7 | Switch.cs:77:17:77:17 | i | +| Switch.cs:91:10:91:11 | M8 | Switch.cs:91:20:91:20 | o | +| Switch.cs:101:9:101:10 | M9 | Switch.cs:101:19:101:19 | s | +| Switch.cs:113:9:113:11 | M10 | Switch.cs:113:20:113:20 | s | +| Switch.cs:123:10:123:12 | M11 | Switch.cs:123:21:123:21 | o | +| Switch.cs:129:12:129:14 | M12 | Switch.cs:129:23:129:23 | o | +| Switch.cs:134:9:134:11 | M13 | Switch.cs:134:17:134:17 | i | +| Switch.cs:144:9:144:11 | M14 | Switch.cs:144:17:144:17 | i | +| Switch.cs:154:10:154:12 | M15 | Switch.cs:154:19:154:19 | b | +| Switch.cs:163:10:163:12 | M16 | Switch.cs:163:18:163:18 | i | +| TypeAccesses.cs:3:10:3:10 | M | TypeAccesses.cs:3:19:3:19 | o | +| VarDecls.cs:5:18:5:19 | M1 | VarDecls.cs:5:30:5:36 | strings | +| VarDecls.cs:13:12:13:13 | M2 | VarDecls.cs:13:22:13:22 | s | +| VarDecls.cs:19:7:19:8 | M3 | VarDecls.cs:19:15:19:15 | b | | VarDecls.cs:28:41:28:47 | Dispose | VarDecls.cs:28:51:28:53 | {...} | -| cflow.cs:5:17:5:20 | Main | cflow.cs:6:5:35:5 | {...} | -| cflow.cs:37:17:37:22 | Switch | cflow.cs:38:5:68:5 | {...} | -| cflow.cs:70:18:70:18 | M | cflow.cs:71:5:82:5 | {...} | -| cflow.cs:84:18:84:19 | M2 | cflow.cs:85:5:88:5 | {...} | -| cflow.cs:90:18:90:19 | M3 | cflow.cs:91:5:104:5 | {...} | -| cflow.cs:106:18:106:19 | M4 | cflow.cs:107:5:117:5 | {...} | -| cflow.cs:119:20:119:21 | M5 | cflow.cs:120:5:124:5 | {...} | +| cflow.cs:5:17:5:20 | Main | cflow.cs:5:31:5:34 | args | +| cflow.cs:37:17:37:22 | Switch | cflow.cs:37:28:37:28 | a | +| cflow.cs:70:18:70:18 | M | cflow.cs:70:27:70:27 | s | +| cflow.cs:84:18:84:19 | M2 | cflow.cs:84:28:84:28 | s | +| cflow.cs:90:18:90:19 | M3 | cflow.cs:90:28:90:28 | s | +| cflow.cs:106:18:106:19 | M4 | cflow.cs:106:28:106:28 | s | +| cflow.cs:119:20:119:21 | M5 | cflow.cs:119:30:119:30 | s | | cflow.cs:127:19:127:21 | get_Prop | cflow.cs:127:23:127:60 | {...} | -| cflow.cs:127:62:127:64 | set_Prop | cflow.cs:127:66:127:83 | {...} | -| cflow.cs:129:5:129:15 | ControlFlow | cflow.cs:129:5:129:15 | this access | -| cflow.cs:134:5:134:15 | ControlFlow | cflow.cs:134:31:134:31 | access to parameter i | -| cflow.cs:136:12:136:22 | ControlFlow | cflow.cs:136:33:136:33 | 0 | -| cflow.cs:138:40:138:40 | + | cflow.cs:139:5:142:5 | {...} | -| cflow.cs:144:33:144:35 | get_Item | cflow.cs:144:37:144:54 | {...} | -| cflow.cs:144:56:144:58 | set_Item | cflow.cs:144:60:144:62 | {...} | +| cflow.cs:127:62:127:64 | set_Prop | cflow.cs:127:62:127:64 | value | +| cflow.cs:129:5:129:15 | ControlFlow | cflow.cs:129:24:129:24 | s | +| cflow.cs:134:5:134:15 | ControlFlow | cflow.cs:134:21:134:21 | i | +| cflow.cs:138:40:138:40 | + | cflow.cs:138:54:138:54 | x | +| cflow.cs:144:33:144:35 | get_Item | cflow.cs:144:28:144:28 | i | +| cflow.cs:144:56:144:58 | set_Item | cflow.cs:144:28:144:28 | i | | cflow.cs:146:10:146:12 | For | cflow.cs:147:5:177:5 | {...} | | cflow.cs:179:10:179:16 | Lambdas | cflow.cs:180:5:183:5 | {...} | -| cflow.cs:181:28:181:37 | (...) => ... | cflow.cs:181:33:181:33 | access to parameter x | -| cflow.cs:182:28:182:61 | delegate(...) { ... } | cflow.cs:182:45:182:61 | {...} | +| cflow.cs:181:28:181:37 | (...) => ... | cflow.cs:181:28:181:28 | x | +| cflow.cs:182:28:182:61 | delegate(...) { ... } | cflow.cs:182:42:182:42 | x | | cflow.cs:185:10:185:18 | LogicalOr | cflow.cs:186:5:191:5 | {...} | | cflow.cs:193:10:193:17 | Booleans | cflow.cs:194:5:206:5 | {...} | | cflow.cs:208:10:208:11 | Do | cflow.cs:209:5:222:5 | {...} | | cflow.cs:224:10:224:16 | Foreach | cflow.cs:225:5:238:5 | {...} | | cflow.cs:240:10:240:13 | Goto | cflow.cs:241:5:259:5 | {...} | | cflow.cs:261:49:261:53 | Yield | cflow.cs:262:5:277:5 | {...} | -| cflow.cs:282:5:282:18 | ControlFlowSub | cflow.cs:282:5:282:18 | this access | -| cflow.cs:284:5:284:18 | ControlFlowSub | cflow.cs:284:32:284:35 | call to constructor ControlFlowSub | -| cflow.cs:286:5:286:18 | ControlFlowSub | cflow.cs:286:34:286:34 | access to parameter i | -| cflow.cs:289:7:289:18 | DelegateCall | cflow.cs:289:7:289:18 | this access | -| cflow.cs:291:12:291:12 | M | cflow.cs:291:38:291:38 | access to parameter f | -| cflow.cs:296:5:296:25 | NegationInConstructor | cflow.cs:296:5:296:25 | this access | -| cflow.cs:298:10:298:10 | M | cflow.cs:299:5:301:5 | {...} | -| cflow.cs:304:7:304:18 | LambdaGetter | cflow.cs:304:7:304:18 | this access | -| cflow.cs:306:60:310:5 | (...) => ... | cflow.cs:307:5:310:5 | {...} | +| cflow.cs:284:5:284:18 | ControlFlowSub | cflow.cs:284:27:284:27 | s | +| cflow.cs:286:5:286:18 | ControlFlowSub | cflow.cs:286:24:286:24 | i | +| cflow.cs:291:12:291:12 | M | cflow.cs:291:32:291:32 | f | +| cflow.cs:296:5:296:25 | NegationInConstructor | cflow.cs:296:32:296:32 | b | +| cflow.cs:298:10:298:10 | M | cflow.cs:298:16:298:16 | i | +| cflow.cs:306:60:310:5 | (...) => ... | cflow.cs:306:61:306:61 | o | | cflow.cs:306:60:310:5 | get__getter | cflow.cs:306:60:310:5 | (...) => ... | diff --git a/csharp/ql/test/library-tests/controlflow/graph/Nodes.ql b/csharp/ql/test/library-tests/controlflow/graph/Nodes.ql index 1140f78de660..ce2a5b9d60d0 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/Nodes.ql +++ b/csharp/ql/test/library-tests/controlflow/graph/Nodes.ql @@ -1,10 +1,7 @@ import csharp import ControlFlow import Common -import semmle.code.csharp.controlflow.internal.ControlFlowGraphImpl as Impl -import semmle.code.csharp.controlflow.internal.Splitting as Splitting -import Nodes query predicate entryPoint(Callable c, SourceControlFlowElement cfn) { - c.getEntryPoint().getASuccessor().getAstNode() = cfn + c.getEntryPoint().getASuccessor() = cfn.getControlFlowNode() } diff --git a/csharp/ql/test/library-tests/controlflow/guards-large/GuardedExpr.expected b/csharp/ql/test/library-tests/controlflow/guards-large/GuardedExpr.expected index b390b5be6394..b3fb032a26c6 100644 --- a/csharp/ql/test/library-tests/controlflow/guards-large/GuardedExpr.expected +++ b/csharp/ql/test/library-tests/controlflow/guards-large/GuardedExpr.expected @@ -1,7 +1,5 @@ | GuardsStressTest.cs:8:26:8:27 | access to field ch | -| GuardsStressTest.cs:9:4:9:5 | access to field ch | | GuardsStressTest.cs:9:17:9:18 | access to field ch | -| GuardsStressTest.cs:10:4:10:5 | access to field ch | | GuardsStressTest.cs:11:4:11:5 | access to field ch | | GuardsStressTest.cs:11:17:11:18 | access to field ch | | GuardsStressTest.cs:12:4:12:5 | access to field ch | @@ -793,5 +791,4 @@ | GuardsStressTest.cs:438:19:438:20 | access to field ch | | GuardsStressTest.cs:439:4:439:5 | access to field ch | | GuardsStressTest.cs:439:19:439:20 | access to field ch | -| GuardsStressTest.cs:439:41:439:42 | access to field ch | | GuardsStressTest.cs:440:23:440:24 | access to field ch | diff --git a/csharp/ql/test/library-tests/controlflow/guards/BooleanGuardedExpr.expected b/csharp/ql/test/library-tests/controlflow/guards/BooleanGuardedExpr.expected index ac260924d10a..374550924481 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/BooleanGuardedExpr.expected +++ b/csharp/ql/test/library-tests/controlflow/guards/BooleanGuardedExpr.expected @@ -27,12 +27,8 @@ | Guards.cs:36:32:36:32 | access to parameter x | Guards.cs:35:13:35:21 | ... == ... | Guards.cs:35:13:35:13 | access to parameter x | false | | Guards.cs:36:36:36:36 | access to parameter y | Guards.cs:35:26:35:34 | ... == ... | Guards.cs:35:26:35:26 | access to parameter y | false | | Guards.cs:39:31:39:31 | access to parameter x | Guards.cs:38:15:38:23 | ... == ... | Guards.cs:38:15:38:15 | access to parameter x | false | -| Guards.cs:39:31:39:31 | access to parameter x | Guards.cs:38:15:38:23 | ... == ... | Guards.cs:38:15:38:15 | access to parameter x | true | | Guards.cs:39:35:39:35 | access to parameter y | Guards.cs:38:28:38:36 | ... == ... | Guards.cs:38:28:38:28 | access to parameter y | false | -| Guards.cs:39:35:39:35 | access to parameter y | Guards.cs:38:28:38:36 | ... == ... | Guards.cs:38:28:38:28 | access to parameter y | true | -| Guards.cs:42:32:42:32 | access to parameter x | Guards.cs:41:17:41:25 | ... != ... | Guards.cs:41:17:41:17 | access to parameter x | false | | Guards.cs:42:32:42:32 | access to parameter x | Guards.cs:41:17:41:25 | ... != ... | Guards.cs:41:17:41:17 | access to parameter x | true | -| Guards.cs:42:36:42:36 | access to parameter y | Guards.cs:41:30:41:38 | ... != ... | Guards.cs:41:30:41:30 | access to parameter y | false | | Guards.cs:42:36:42:36 | access to parameter y | Guards.cs:41:30:41:38 | ... != ... | Guards.cs:41:30:41:30 | access to parameter y | true | | Guards.cs:48:31:48:40 | access to field Field | Guards.cs:47:13:47:25 | ... != ... | Guards.cs:47:13:47:17 | access to field Field | true | | Guards.cs:55:27:55:27 | access to parameter g | Guards.cs:53:13:53:27 | ... == ... | Guards.cs:53:13:53:13 | access to parameter g | false | @@ -83,7 +79,6 @@ | Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:278:13:279:28 | ... => ... | Guards.cs:279:17:279:17 | access to parameter o | false | | Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:282:13:283:28 | ... => ... | Guards.cs:283:17:283:17 | access to parameter o | false | | Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:284:13:285:28 | ... => ... | Guards.cs:285:17:285:17 | access to parameter o | false | -| Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:286:13:287:28 | ... => ... | Guards.cs:287:17:287:17 | access to parameter o | true | | Guards.cs:342:27:342:27 | access to parameter b | Guards.cs:341:20:341:20 | access to parameter b | Guards.cs:341:20:341:20 | access to parameter b | false | | Guards.cs:343:31:343:31 | access to local variable s | Guards.cs:342:13:342:21 | ... != ... | Guards.cs:342:13:342:13 | access to local variable s | true | | Guards.cs:349:13:349:13 | access to parameter o | Guards.cs:348:13:348:25 | ... is ... | Guards.cs:348:13:348:13 | access to parameter o | true | diff --git a/csharp/ql/test/library-tests/controlflow/guards/GuardedControlFlowNode.expected b/csharp/ql/test/library-tests/controlflow/guards/GuardedControlFlowNode.expected index d322431b1df8..765b8670a18e 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/GuardedControlFlowNode.expected +++ b/csharp/ql/test/library-tests/controlflow/guards/GuardedControlFlowNode.expected @@ -64,20 +64,12 @@ | Guards.cs:36:36:36:36 | access to parameter y | Guards.cs:35:26:35:26 | access to parameter y | Guards.cs:35:26:35:26 | access to parameter y | not null | | Guards.cs:36:36:36:36 | access to parameter y | Guards.cs:35:26:35:34 | ... == ... | Guards.cs:35:26:35:26 | access to parameter y | false | | Guards.cs:39:31:39:31 | access to parameter x | Guards.cs:38:15:38:15 | access to parameter x | Guards.cs:38:15:38:15 | access to parameter x | not null | -| Guards.cs:39:31:39:31 | access to parameter x | Guards.cs:38:15:38:15 | access to parameter x | Guards.cs:38:15:38:15 | access to parameter x | null | | Guards.cs:39:31:39:31 | access to parameter x | Guards.cs:38:15:38:23 | ... == ... | Guards.cs:38:15:38:15 | access to parameter x | false | -| Guards.cs:39:31:39:31 | access to parameter x | Guards.cs:38:15:38:23 | ... == ... | Guards.cs:38:15:38:15 | access to parameter x | true | | Guards.cs:39:35:39:35 | access to parameter y | Guards.cs:38:28:38:28 | access to parameter y | Guards.cs:38:28:38:28 | access to parameter y | not null | -| Guards.cs:39:35:39:35 | access to parameter y | Guards.cs:38:28:38:28 | access to parameter y | Guards.cs:38:28:38:28 | access to parameter y | null | | Guards.cs:39:35:39:35 | access to parameter y | Guards.cs:38:28:38:36 | ... == ... | Guards.cs:38:28:38:28 | access to parameter y | false | -| Guards.cs:39:35:39:35 | access to parameter y | Guards.cs:38:28:38:36 | ... == ... | Guards.cs:38:28:38:28 | access to parameter y | true | | Guards.cs:42:32:42:32 | access to parameter x | Guards.cs:41:17:41:17 | access to parameter x | Guards.cs:41:17:41:17 | access to parameter x | not null | -| Guards.cs:42:32:42:32 | access to parameter x | Guards.cs:41:17:41:17 | access to parameter x | Guards.cs:41:17:41:17 | access to parameter x | null | -| Guards.cs:42:32:42:32 | access to parameter x | Guards.cs:41:17:41:25 | ... != ... | Guards.cs:41:17:41:17 | access to parameter x | false | | Guards.cs:42:32:42:32 | access to parameter x | Guards.cs:41:17:41:25 | ... != ... | Guards.cs:41:17:41:17 | access to parameter x | true | | Guards.cs:42:36:42:36 | access to parameter y | Guards.cs:41:30:41:30 | access to parameter y | Guards.cs:41:30:41:30 | access to parameter y | not null | -| Guards.cs:42:36:42:36 | access to parameter y | Guards.cs:41:30:41:30 | access to parameter y | Guards.cs:41:30:41:30 | access to parameter y | null | -| Guards.cs:42:36:42:36 | access to parameter y | Guards.cs:41:30:41:38 | ... != ... | Guards.cs:41:30:41:30 | access to parameter y | false | | Guards.cs:42:36:42:36 | access to parameter y | Guards.cs:41:30:41:38 | ... != ... | Guards.cs:41:30:41:30 | access to parameter y | true | | Guards.cs:48:31:48:40 | access to field Field | Guards.cs:47:13:47:17 | access to field Field | Guards.cs:47:13:47:17 | access to field Field | not null | | Guards.cs:48:31:48:40 | access to field Field | Guards.cs:47:13:47:25 | ... != ... | Guards.cs:47:13:47:17 | access to field Field | true | @@ -207,11 +199,9 @@ | Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:278:13:279:28 | ... => ... | Guards.cs:279:17:279:17 | access to parameter o | false | | Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:282:13:283:28 | ... => ... | Guards.cs:283:17:283:17 | access to parameter o | false | | Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:284:13:285:28 | ... => ... | Guards.cs:285:17:285:17 | access to parameter o | false | -| Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:286:13:287:28 | ... => ... | Guards.cs:287:17:287:17 | access to parameter o | true | | Guards.cs:287:17:287:28 | call to method ToString | Guards.cs:278:13:279:28 | ... => ... | Guards.cs:279:17:279:28 | call to method ToString | false | | Guards.cs:287:17:287:28 | call to method ToString | Guards.cs:282:13:283:28 | ... => ... | Guards.cs:283:17:283:28 | call to method ToString | false | | Guards.cs:287:17:287:28 | call to method ToString | Guards.cs:284:13:285:28 | ... => ... | Guards.cs:285:17:285:28 | call to method ToString | false | -| Guards.cs:287:17:287:28 | call to method ToString | Guards.cs:286:13:287:28 | ... => ... | Guards.cs:287:17:287:28 | call to method ToString | true | | Guards.cs:342:27:342:27 | access to parameter b | Guards.cs:341:20:341:20 | access to parameter b | Guards.cs:341:20:341:20 | access to parameter b | false | | Guards.cs:342:27:342:27 | access to parameter b | Guards.cs:341:20:341:32 | ... ? ... : ... | Guards.cs:341:20:341:20 | access to parameter b | not null | | Guards.cs:343:31:343:31 | access to local variable s | Guards.cs:342:13:342:13 | access to local variable s | Guards.cs:342:13:342:13 | access to local variable s | not null | diff --git a/csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.expected b/csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.expected index d322431b1df8..765b8670a18e 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.expected +++ b/csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.expected @@ -64,20 +64,12 @@ | Guards.cs:36:36:36:36 | access to parameter y | Guards.cs:35:26:35:26 | access to parameter y | Guards.cs:35:26:35:26 | access to parameter y | not null | | Guards.cs:36:36:36:36 | access to parameter y | Guards.cs:35:26:35:34 | ... == ... | Guards.cs:35:26:35:26 | access to parameter y | false | | Guards.cs:39:31:39:31 | access to parameter x | Guards.cs:38:15:38:15 | access to parameter x | Guards.cs:38:15:38:15 | access to parameter x | not null | -| Guards.cs:39:31:39:31 | access to parameter x | Guards.cs:38:15:38:15 | access to parameter x | Guards.cs:38:15:38:15 | access to parameter x | null | | Guards.cs:39:31:39:31 | access to parameter x | Guards.cs:38:15:38:23 | ... == ... | Guards.cs:38:15:38:15 | access to parameter x | false | -| Guards.cs:39:31:39:31 | access to parameter x | Guards.cs:38:15:38:23 | ... == ... | Guards.cs:38:15:38:15 | access to parameter x | true | | Guards.cs:39:35:39:35 | access to parameter y | Guards.cs:38:28:38:28 | access to parameter y | Guards.cs:38:28:38:28 | access to parameter y | not null | -| Guards.cs:39:35:39:35 | access to parameter y | Guards.cs:38:28:38:28 | access to parameter y | Guards.cs:38:28:38:28 | access to parameter y | null | | Guards.cs:39:35:39:35 | access to parameter y | Guards.cs:38:28:38:36 | ... == ... | Guards.cs:38:28:38:28 | access to parameter y | false | -| Guards.cs:39:35:39:35 | access to parameter y | Guards.cs:38:28:38:36 | ... == ... | Guards.cs:38:28:38:28 | access to parameter y | true | | Guards.cs:42:32:42:32 | access to parameter x | Guards.cs:41:17:41:17 | access to parameter x | Guards.cs:41:17:41:17 | access to parameter x | not null | -| Guards.cs:42:32:42:32 | access to parameter x | Guards.cs:41:17:41:17 | access to parameter x | Guards.cs:41:17:41:17 | access to parameter x | null | -| Guards.cs:42:32:42:32 | access to parameter x | Guards.cs:41:17:41:25 | ... != ... | Guards.cs:41:17:41:17 | access to parameter x | false | | Guards.cs:42:32:42:32 | access to parameter x | Guards.cs:41:17:41:25 | ... != ... | Guards.cs:41:17:41:17 | access to parameter x | true | | Guards.cs:42:36:42:36 | access to parameter y | Guards.cs:41:30:41:30 | access to parameter y | Guards.cs:41:30:41:30 | access to parameter y | not null | -| Guards.cs:42:36:42:36 | access to parameter y | Guards.cs:41:30:41:30 | access to parameter y | Guards.cs:41:30:41:30 | access to parameter y | null | -| Guards.cs:42:36:42:36 | access to parameter y | Guards.cs:41:30:41:38 | ... != ... | Guards.cs:41:30:41:30 | access to parameter y | false | | Guards.cs:42:36:42:36 | access to parameter y | Guards.cs:41:30:41:38 | ... != ... | Guards.cs:41:30:41:30 | access to parameter y | true | | Guards.cs:48:31:48:40 | access to field Field | Guards.cs:47:13:47:17 | access to field Field | Guards.cs:47:13:47:17 | access to field Field | not null | | Guards.cs:48:31:48:40 | access to field Field | Guards.cs:47:13:47:25 | ... != ... | Guards.cs:47:13:47:17 | access to field Field | true | @@ -207,11 +199,9 @@ | Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:278:13:279:28 | ... => ... | Guards.cs:279:17:279:17 | access to parameter o | false | | Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:282:13:283:28 | ... => ... | Guards.cs:283:17:283:17 | access to parameter o | false | | Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:284:13:285:28 | ... => ... | Guards.cs:285:17:285:17 | access to parameter o | false | -| Guards.cs:287:17:287:17 | access to parameter o | Guards.cs:286:13:287:28 | ... => ... | Guards.cs:287:17:287:17 | access to parameter o | true | | Guards.cs:287:17:287:28 | call to method ToString | Guards.cs:278:13:279:28 | ... => ... | Guards.cs:279:17:279:28 | call to method ToString | false | | Guards.cs:287:17:287:28 | call to method ToString | Guards.cs:282:13:283:28 | ... => ... | Guards.cs:283:17:283:28 | call to method ToString | false | | Guards.cs:287:17:287:28 | call to method ToString | Guards.cs:284:13:285:28 | ... => ... | Guards.cs:285:17:285:28 | call to method ToString | false | -| Guards.cs:287:17:287:28 | call to method ToString | Guards.cs:286:13:287:28 | ... => ... | Guards.cs:287:17:287:28 | call to method ToString | true | | Guards.cs:342:27:342:27 | access to parameter b | Guards.cs:341:20:341:20 | access to parameter b | Guards.cs:341:20:341:20 | access to parameter b | false | | Guards.cs:342:27:342:27 | access to parameter b | Guards.cs:341:20:341:32 | ... ? ... : ... | Guards.cs:341:20:341:20 | access to parameter b | not null | | Guards.cs:343:31:343:31 | access to local variable s | Guards.cs:342:13:342:13 | access to local variable s | Guards.cs:342:13:342:13 | access to local variable s | not null | diff --git a/csharp/ql/test/library-tests/controlflow/guards/Guards.cs b/csharp/ql/test/library-tests/controlflow/guards/Guards.cs index 8c4abb815e8b..045967d6134f 100644 --- a/csharp/ql/test/library-tests/controlflow/guards/Guards.cs +++ b/csharp/ql/test/library-tests/controlflow/guards/Guards.cs @@ -35,10 +35,10 @@ void M3(string? x, string? y) if (x == null || y == null) { } else Console.WriteLine(x + y); // null guarded - if (!(x == null || y == null)) // MISHANDLED, likely due to splitting + if (!(x == null || y == null)) Console.WriteLine(x + y); // null guarded - if (!!!(x != null && y != null)) { } // MISHANDLED, likely due to splitting + if (!!!(x != null && y != null)) { } else Console.WriteLine(x + y); // null guarded if (Field != null) diff --git a/csharp/ql/test/library-tests/conversion/pointer/Pointer.ql b/csharp/ql/test/library-tests/conversion/pointer/Pointer.ql index 69e7db8c1cf1..450ed9940a8c 100644 --- a/csharp/ql/test/library-tests/conversion/pointer/Pointer.ql +++ b/csharp/ql/test/library-tests/conversion/pointer/Pointer.ql @@ -1,5 +1,5 @@ import csharp from Assignment a -select a.getLocation(), a.getLValue().getType().toString(), a.getRValue().getType().toString(), - a.getRValue().toString() +select a.getLocation(), a.getLeftOperand().getType().toString(), + a.getRightOperand().getType().toString(), a.getRightOperand().toString() diff --git a/csharp/ql/test/library-tests/csharp10/lambda.ql b/csharp/ql/test/library-tests/csharp10/lambda.ql index 3cfec302b525..55c7faac0495 100644 --- a/csharp/ql/test/library-tests/csharp10/lambda.ql +++ b/csharp/ql/test/library-tests/csharp10/lambda.ql @@ -3,7 +3,7 @@ import csharp private predicate getLambda( LocalVariableDeclAndInitExpr e, string type, LocalVariable v, LambdaExpr lexp ) { - lexp = e.getRValue() and + lexp = e.getRightOperand() and v = e.getTargetVariable() and type = e.getType().toStringWithTypes() } diff --git a/csharp/ql/test/library-tests/csharp11/operators.ql b/csharp/ql/test/library-tests/csharp11/operators.ql index 607efac0c26c..f1543e2d744a 100644 --- a/csharp/ql/test/library-tests/csharp11/operators.ql +++ b/csharp/ql/test/library-tests/csharp11/operators.ql @@ -14,8 +14,8 @@ query predicate assignbitwise( AssignBitwiseOperation op, Expr left, Expr right, string name, string qlclass ) { op.getFile().getStem() = "Operators" and - left = op.getLValue() and - right = op.getRValue() and + left = op.getLeftOperand() and + right = op.getRightOperand() and name = op.getOperator() and qlclass = op.getAPrimaryQlClass() } diff --git a/csharp/ql/test/library-tests/csharp11/signAnalysis.ql b/csharp/ql/test/library-tests/csharp11/signAnalysis.ql index 2aeb57e29fb8..97471fec351b 100644 --- a/csharp/ql/test/library-tests/csharp11/signAnalysis.ql +++ b/csharp/ql/test/library-tests/csharp11/signAnalysis.ql @@ -1,7 +1,7 @@ import csharp import semmle.code.csharp.dataflow.internal.rangeanalysis.SignAnalysisCommon as Common -from ControlFlow::Nodes::ExprNode e, Expr expr +from ControlFlowNodes::ExprNode e, Expr expr where e.getExpr() = expr and expr.getFile().getStem() = "SignAnalysis" and diff --git a/csharp/ql/test/library-tests/csharp6/MemberInitializer.ql b/csharp/ql/test/library-tests/csharp6/MemberInitializer.ql index f3ef63fe2257..1895792f07c1 100644 --- a/csharp/ql/test/library-tests/csharp6/MemberInitializer.ql +++ b/csharp/ql/test/library-tests/csharp6/MemberInitializer.ql @@ -12,7 +12,7 @@ query predicate indexerCalls(IndexerCall indexer, int arg, Expr value) { query predicate elementAssignments( ElementWrite write, Assignment assignment, int index, Expr indexer ) { - write = assignment.getLValue() and indexer = write.getIndex(index) + write = assignment.getLeftOperand() and indexer = write.getIndex(index) } query predicate arrayQualifiers(ElementAccess access, Expr qualifier) { diff --git a/csharp/ql/test/library-tests/csharp7/DefUse.ql b/csharp/ql/test/library-tests/csharp7/DefUse.ql index a37b867e086a..ccdd4db01573 100644 --- a/csharp/ql/test/library-tests/csharp7/DefUse.ql +++ b/csharp/ql/test/library-tests/csharp7/DefUse.ql @@ -1,13 +1,8 @@ import csharp -from AssignableDefinition def, AssignableRead read, Ssa::Definition ult, Ssa::Definition ssaDef +from AssignableDefinition def, AssignableRead read, SsaDefinition ult, SsaDefinition ssaDef where ssaDef.getAnUltimateDefinition() = ult and - ( - ult.(Ssa::ExplicitDefinition).getADefinition() = def - or - ult.(Ssa::ImplicitParameterDefinition).getParameter() = - def.(AssignableDefinitions::ImplicitParameterDefinition).getParameter() - ) and + ult.(SsaExplicitWrite).getDefinition() = def and read = ssaDef.getARead() select def, read diff --git a/csharp/ql/test/library-tests/csharp7/IsFlow.expected b/csharp/ql/test/library-tests/csharp7/IsFlow.expected index ce37b655bb85..07d3079854d6 100644 --- a/csharp/ql/test/library-tests/csharp7/IsFlow.expected +++ b/csharp/ql/test/library-tests/csharp7/IsFlow.expected @@ -1,79 +1,167 @@ -| CSharp7.cs:230:10:230:13 | exit Test (normal) | CSharp7.cs:230:10:230:13 | exit Test | semmle.label | successor | +| CSharp7.cs:230:10:230:13 | Normal Exit | CSharp7.cs:230:10:230:13 | Exit | semmle.label | successor | +| CSharp7.cs:231:5:275:5 | After {...} | CSharp7.cs:230:10:230:13 | Normal Exit | semmle.label | successor | +| CSharp7.cs:248:9:274:9 | After switch (...) {...} | CSharp7.cs:231:5:275:5 | After {...} | semmle.label | successor | | CSharp7.cs:248:9:274:9 | switch (...) {...} | CSharp7.cs:248:17:248:17 | access to local variable o | semmle.label | successor | | CSharp7.cs:248:17:248:17 | access to local variable o | CSharp7.cs:250:13:250:23 | case ...: | semmle.label | successor | +| CSharp7.cs:250:13:250:23 | After case ...: [match] | CSharp7.cs:251:17:251:22 | Before break; | semmle.label | successor | +| CSharp7.cs:250:13:250:23 | After case ...: [no-match] | CSharp7.cs:252:13:252:31 | case ...: | semmle.label | successor | | CSharp7.cs:250:13:250:23 | case ...: | CSharp7.cs:250:18:250:22 | "xyz" | semmle.label | successor | -| CSharp7.cs:250:18:250:22 | "xyz" | CSharp7.cs:251:17:251:22 | break; | semmle.label | match | -| CSharp7.cs:250:18:250:22 | "xyz" | CSharp7.cs:252:13:252:31 | case ...: | semmle.label | no-match | -| CSharp7.cs:251:17:251:22 | break; | CSharp7.cs:230:10:230:13 | exit Test (normal) | semmle.label | break | +| CSharp7.cs:250:18:250:22 | "xyz" | CSharp7.cs:250:18:250:22 | After "xyz" [match] | semmle.label | match | +| CSharp7.cs:250:18:250:22 | "xyz" | CSharp7.cs:250:18:250:22 | After "xyz" [no-match] | semmle.label | no-match | +| CSharp7.cs:250:18:250:22 | After "xyz" [match] | CSharp7.cs:250:13:250:23 | After case ...: [match] | semmle.label | match | +| CSharp7.cs:250:18:250:22 | After "xyz" [no-match] | CSharp7.cs:250:13:250:23 | After case ...: [no-match] | semmle.label | no-match | +| CSharp7.cs:251:17:251:22 | Before break; | CSharp7.cs:251:17:251:22 | break; | semmle.label | successor | +| CSharp7.cs:251:17:251:22 | break; | CSharp7.cs:248:9:274:9 | After switch (...) {...} | semmle.label | break | +| CSharp7.cs:252:13:252:31 | After case ...: [match] | CSharp7.cs:252:26:252:30 | Before ... < ... | semmle.label | successor | +| CSharp7.cs:252:13:252:31 | After case ...: [no-match] | CSharp7.cs:254:13:254:41 | case ...: | semmle.label | successor | | CSharp7.cs:252:13:252:31 | case ...: | CSharp7.cs:252:18:252:19 | "" | semmle.label | successor | -| CSharp7.cs:252:18:252:19 | "" | CSharp7.cs:252:26:252:26 | 1 | semmle.label | match | -| CSharp7.cs:252:18:252:19 | "" | CSharp7.cs:254:13:254:41 | case ...: | semmle.label | no-match | +| CSharp7.cs:252:18:252:19 | "" | CSharp7.cs:252:18:252:19 | After "" [match] | semmle.label | match | +| CSharp7.cs:252:18:252:19 | "" | CSharp7.cs:252:18:252:19 | After "" [no-match] | semmle.label | no-match | +| CSharp7.cs:252:18:252:19 | After "" [match] | CSharp7.cs:252:13:252:31 | After case ...: [match] | semmle.label | match | +| CSharp7.cs:252:18:252:19 | After "" [no-match] | CSharp7.cs:252:13:252:31 | After case ...: [no-match] | semmle.label | no-match | | CSharp7.cs:252:26:252:26 | 1 | CSharp7.cs:252:30:252:30 | 2 | semmle.label | successor | -| CSharp7.cs:252:26:252:30 | ... < ... | CSharp7.cs:253:17:253:22 | break; | semmle.label | true | +| CSharp7.cs:252:26:252:30 | ... < ... | CSharp7.cs:252:26:252:30 | After ... < ... [false] | semmle.label | false | +| CSharp7.cs:252:26:252:30 | ... < ... | CSharp7.cs:252:26:252:30 | After ... < ... [true] | semmle.label | true | +| CSharp7.cs:252:26:252:30 | After ... < ... [false] | CSharp7.cs:254:13:254:41 | case ...: | semmle.label | successor | +| CSharp7.cs:252:26:252:30 | After ... < ... [true] | CSharp7.cs:253:17:253:22 | Before break; | semmle.label | successor | +| CSharp7.cs:252:26:252:30 | Before ... < ... | CSharp7.cs:252:26:252:26 | 1 | semmle.label | successor | | CSharp7.cs:252:30:252:30 | 2 | CSharp7.cs:252:26:252:30 | ... < ... | semmle.label | successor | -| CSharp7.cs:253:17:253:22 | break; | CSharp7.cs:230:10:230:13 | exit Test (normal) | semmle.label | break | +| CSharp7.cs:253:17:253:22 | Before break; | CSharp7.cs:253:17:253:22 | break; | semmle.label | successor | +| CSharp7.cs:253:17:253:22 | break; | CSharp7.cs:248:9:274:9 | After switch (...) {...} | semmle.label | break | +| CSharp7.cs:254:13:254:41 | After case ...: [match] | CSharp7.cs:254:27:254:40 | Before ... is ... | semmle.label | successor | +| CSharp7.cs:254:13:254:41 | After case ...: [no-match] | CSharp7.cs:257:13:257:36 | case ...: | semmle.label | successor | | CSharp7.cs:254:13:254:41 | case ...: | CSharp7.cs:254:18:254:20 | "x" | semmle.label | successor | -| CSharp7.cs:254:18:254:20 | "x" | CSharp7.cs:254:27:254:27 | access to local variable o | semmle.label | match | -| CSharp7.cs:254:18:254:20 | "x" | CSharp7.cs:257:13:257:36 | case ...: | semmle.label | no-match | -| CSharp7.cs:254:27:254:27 | access to local variable o | CSharp7.cs:254:32:254:40 | String s4 | semmle.label | successor | -| CSharp7.cs:254:27:254:40 | [false] ... is ... | CSharp7.cs:257:13:257:36 | case ...: | semmle.label | false | -| CSharp7.cs:254:27:254:40 | [true] ... is ... | CSharp7.cs:255:17:255:45 | ...; | semmle.label | true | -| CSharp7.cs:254:32:254:40 | String s4 | CSharp7.cs:254:27:254:40 | [false] ... is ... | semmle.label | no-match | -| CSharp7.cs:254:32:254:40 | String s4 | CSharp7.cs:254:27:254:40 | [true] ... is ... | semmle.label | match | -| CSharp7.cs:255:17:255:44 | call to method WriteLine | CSharp7.cs:256:17:256:22 | break; | semmle.label | successor | -| CSharp7.cs:255:17:255:45 | ...; | CSharp7.cs:255:37:255:38 | "x " | semmle.label | successor | -| CSharp7.cs:255:35:255:43 | $"..." | CSharp7.cs:255:17:255:44 | call to method WriteLine | semmle.label | successor | -| CSharp7.cs:255:37:255:38 | "x " | CSharp7.cs:255:40:255:41 | access to local variable s4 | semmle.label | successor | -| CSharp7.cs:255:39:255:42 | {...} | CSharp7.cs:255:35:255:43 | $"..." | semmle.label | successor | +| CSharp7.cs:254:18:254:20 | "x" | CSharp7.cs:254:18:254:20 | After "x" [match] | semmle.label | match | +| CSharp7.cs:254:18:254:20 | "x" | CSharp7.cs:254:18:254:20 | After "x" [no-match] | semmle.label | no-match | +| CSharp7.cs:254:18:254:20 | After "x" [match] | CSharp7.cs:254:13:254:41 | After case ...: [match] | semmle.label | match | +| CSharp7.cs:254:18:254:20 | After "x" [no-match] | CSharp7.cs:254:13:254:41 | After case ...: [no-match] | semmle.label | no-match | +| CSharp7.cs:254:27:254:27 | access to local variable o | CSharp7.cs:254:27:254:40 | ... is ... | semmle.label | successor | +| CSharp7.cs:254:27:254:40 | ... is ... | CSharp7.cs:254:27:254:40 | After ... is ... [false] | semmle.label | false | +| CSharp7.cs:254:27:254:40 | ... is ... | CSharp7.cs:254:27:254:40 | [MatchTrue] ... is ... | semmle.label | true | +| CSharp7.cs:254:27:254:40 | After ... is ... [false] | CSharp7.cs:257:13:257:36 | case ...: | semmle.label | successor | +| CSharp7.cs:254:27:254:40 | After ... is ... [true] | CSharp7.cs:255:17:255:45 | ...; | semmle.label | successor | +| CSharp7.cs:254:27:254:40 | Before ... is ... | CSharp7.cs:254:27:254:27 | access to local variable o | semmle.label | successor | +| CSharp7.cs:254:27:254:40 | [MatchTrue] ... is ... | CSharp7.cs:254:32:254:40 | String s4 | semmle.label | successor | +| CSharp7.cs:254:32:254:40 | String s4 | CSharp7.cs:254:27:254:40 | After ... is ... [true] | semmle.label | true | +| CSharp7.cs:255:17:255:44 | After call to method WriteLine | CSharp7.cs:255:17:255:45 | After ...; | semmle.label | successor | +| CSharp7.cs:255:17:255:44 | Before call to method WriteLine | CSharp7.cs:255:35:255:43 | Before $"..." | semmle.label | successor | +| CSharp7.cs:255:17:255:44 | call to method WriteLine | CSharp7.cs:255:17:255:44 | After call to method WriteLine | semmle.label | successor | +| CSharp7.cs:255:17:255:45 | ...; | CSharp7.cs:255:17:255:44 | Before call to method WriteLine | semmle.label | successor | +| CSharp7.cs:255:17:255:45 | After ...; | CSharp7.cs:256:17:256:22 | Before break; | semmle.label | successor | +| CSharp7.cs:255:35:255:43 | $"..." | CSharp7.cs:255:35:255:43 | After $"..." | semmle.label | successor | +| CSharp7.cs:255:35:255:43 | After $"..." | CSharp7.cs:255:17:255:44 | call to method WriteLine | semmle.label | successor | +| CSharp7.cs:255:35:255:43 | Before $"..." | CSharp7.cs:255:37:255:38 | "x " | semmle.label | successor | +| CSharp7.cs:255:37:255:38 | "x " | CSharp7.cs:255:39:255:42 | Before {...} | semmle.label | successor | +| CSharp7.cs:255:39:255:42 | After {...} | CSharp7.cs:255:35:255:43 | $"..." | semmle.label | successor | +| CSharp7.cs:255:39:255:42 | Before {...} | CSharp7.cs:255:40:255:41 | access to local variable s4 | semmle.label | successor | +| CSharp7.cs:255:39:255:42 | {...} | CSharp7.cs:255:39:255:42 | After {...} | semmle.label | successor | | CSharp7.cs:255:40:255:41 | access to local variable s4 | CSharp7.cs:255:39:255:42 | {...} | semmle.label | successor | -| CSharp7.cs:256:17:256:22 | break; | CSharp7.cs:230:10:230:13 | exit Test (normal) | semmle.label | break | +| CSharp7.cs:256:17:256:22 | Before break; | CSharp7.cs:256:17:256:22 | break; | semmle.label | successor | +| CSharp7.cs:256:17:256:22 | break; | CSharp7.cs:248:9:274:9 | After switch (...) {...} | semmle.label | break | +| CSharp7.cs:257:13:257:36 | After case ...: [match] | CSharp7.cs:257:30:257:35 | Before ... > ... | semmle.label | successor | +| CSharp7.cs:257:13:257:36 | After case ...: [no-match] | CSharp7.cs:260:13:260:24 | case ...: | semmle.label | successor | | CSharp7.cs:257:13:257:36 | case ...: | CSharp7.cs:257:18:257:23 | Int32 i2 | semmle.label | successor | -| CSharp7.cs:257:18:257:23 | Int32 i2 | CSharp7.cs:257:30:257:31 | access to local variable i2 | semmle.label | match | -| CSharp7.cs:257:18:257:23 | Int32 i2 | CSharp7.cs:260:13:260:24 | case ...: | semmle.label | no-match | +| CSharp7.cs:257:18:257:23 | After Int32 i2 [match] | CSharp7.cs:257:13:257:36 | After case ...: [match] | semmle.label | match | +| CSharp7.cs:257:18:257:23 | After Int32 i2 [no-match] | CSharp7.cs:257:13:257:36 | After case ...: [no-match] | semmle.label | no-match | +| CSharp7.cs:257:18:257:23 | Int32 i2 | CSharp7.cs:257:18:257:23 | After Int32 i2 [match] | semmle.label | match | +| CSharp7.cs:257:18:257:23 | Int32 i2 | CSharp7.cs:257:18:257:23 | After Int32 i2 [no-match] | semmle.label | no-match | | CSharp7.cs:257:30:257:31 | access to local variable i2 | CSharp7.cs:257:35:257:35 | 0 | semmle.label | successor | -| CSharp7.cs:257:30:257:35 | ... > ... | CSharp7.cs:258:17:258:52 | ...; | semmle.label | true | -| CSharp7.cs:257:30:257:35 | ... > ... | CSharp7.cs:260:13:260:24 | case ...: | semmle.label | false | +| CSharp7.cs:257:30:257:35 | ... > ... | CSharp7.cs:257:30:257:35 | After ... > ... [false] | semmle.label | false | +| CSharp7.cs:257:30:257:35 | ... > ... | CSharp7.cs:257:30:257:35 | After ... > ... [true] | semmle.label | true | +| CSharp7.cs:257:30:257:35 | After ... > ... [false] | CSharp7.cs:260:13:260:24 | case ...: | semmle.label | successor | +| CSharp7.cs:257:30:257:35 | After ... > ... [true] | CSharp7.cs:258:17:258:52 | ...; | semmle.label | successor | +| CSharp7.cs:257:30:257:35 | Before ... > ... | CSharp7.cs:257:30:257:31 | access to local variable i2 | semmle.label | successor | | CSharp7.cs:257:35:257:35 | 0 | CSharp7.cs:257:30:257:35 | ... > ... | semmle.label | successor | -| CSharp7.cs:258:17:258:51 | call to method WriteLine | CSharp7.cs:259:17:259:22 | break; | semmle.label | successor | -| CSharp7.cs:258:17:258:52 | ...; | CSharp7.cs:258:37:258:45 | "positive " | semmle.label | successor | -| CSharp7.cs:258:35:258:50 | $"..." | CSharp7.cs:258:17:258:51 | call to method WriteLine | semmle.label | successor | -| CSharp7.cs:258:37:258:45 | "positive " | CSharp7.cs:258:47:258:48 | access to local variable i2 | semmle.label | successor | -| CSharp7.cs:258:46:258:49 | {...} | CSharp7.cs:258:35:258:50 | $"..." | semmle.label | successor | +| CSharp7.cs:258:17:258:51 | After call to method WriteLine | CSharp7.cs:258:17:258:52 | After ...; | semmle.label | successor | +| CSharp7.cs:258:17:258:51 | Before call to method WriteLine | CSharp7.cs:258:35:258:50 | Before $"..." | semmle.label | successor | +| CSharp7.cs:258:17:258:51 | call to method WriteLine | CSharp7.cs:258:17:258:51 | After call to method WriteLine | semmle.label | successor | +| CSharp7.cs:258:17:258:52 | ...; | CSharp7.cs:258:17:258:51 | Before call to method WriteLine | semmle.label | successor | +| CSharp7.cs:258:17:258:52 | After ...; | CSharp7.cs:259:17:259:22 | Before break; | semmle.label | successor | +| CSharp7.cs:258:35:258:50 | $"..." | CSharp7.cs:258:35:258:50 | After $"..." | semmle.label | successor | +| CSharp7.cs:258:35:258:50 | After $"..." | CSharp7.cs:258:17:258:51 | call to method WriteLine | semmle.label | successor | +| CSharp7.cs:258:35:258:50 | Before $"..." | CSharp7.cs:258:37:258:45 | "positive " | semmle.label | successor | +| CSharp7.cs:258:37:258:45 | "positive " | CSharp7.cs:258:46:258:49 | Before {...} | semmle.label | successor | +| CSharp7.cs:258:46:258:49 | After {...} | CSharp7.cs:258:35:258:50 | $"..." | semmle.label | successor | +| CSharp7.cs:258:46:258:49 | Before {...} | CSharp7.cs:258:47:258:48 | access to local variable i2 | semmle.label | successor | +| CSharp7.cs:258:46:258:49 | {...} | CSharp7.cs:258:46:258:49 | After {...} | semmle.label | successor | | CSharp7.cs:258:47:258:48 | access to local variable i2 | CSharp7.cs:258:46:258:49 | {...} | semmle.label | successor | -| CSharp7.cs:259:17:259:22 | break; | CSharp7.cs:230:10:230:13 | exit Test (normal) | semmle.label | break | +| CSharp7.cs:259:17:259:22 | Before break; | CSharp7.cs:259:17:259:22 | break; | semmle.label | successor | +| CSharp7.cs:259:17:259:22 | break; | CSharp7.cs:248:9:274:9 | After switch (...) {...} | semmle.label | break | +| CSharp7.cs:260:13:260:24 | After case ...: [match] | CSharp7.cs:261:17:261:47 | ...; | semmle.label | successor | +| CSharp7.cs:260:13:260:24 | After case ...: [no-match] | CSharp7.cs:263:13:263:27 | case ...: | semmle.label | successor | | CSharp7.cs:260:13:260:24 | case ...: | CSharp7.cs:260:18:260:23 | Int32 i3 | semmle.label | successor | -| CSharp7.cs:260:18:260:23 | Int32 i3 | CSharp7.cs:261:17:261:47 | ...; | semmle.label | match | -| CSharp7.cs:260:18:260:23 | Int32 i3 | CSharp7.cs:263:13:263:27 | case ...: | semmle.label | no-match | -| CSharp7.cs:261:17:261:46 | call to method WriteLine | CSharp7.cs:262:17:262:22 | break; | semmle.label | successor | -| CSharp7.cs:261:17:261:47 | ...; | CSharp7.cs:261:37:261:40 | "int " | semmle.label | successor | -| CSharp7.cs:261:35:261:45 | $"..." | CSharp7.cs:261:17:261:46 | call to method WriteLine | semmle.label | successor | -| CSharp7.cs:261:37:261:40 | "int " | CSharp7.cs:261:42:261:43 | access to local variable i3 | semmle.label | successor | -| CSharp7.cs:261:41:261:44 | {...} | CSharp7.cs:261:35:261:45 | $"..." | semmle.label | successor | +| CSharp7.cs:260:18:260:23 | After Int32 i3 [match] | CSharp7.cs:260:13:260:24 | After case ...: [match] | semmle.label | match | +| CSharp7.cs:260:18:260:23 | After Int32 i3 [no-match] | CSharp7.cs:260:13:260:24 | After case ...: [no-match] | semmle.label | no-match | +| CSharp7.cs:260:18:260:23 | Int32 i3 | CSharp7.cs:260:18:260:23 | After Int32 i3 [match] | semmle.label | match | +| CSharp7.cs:260:18:260:23 | Int32 i3 | CSharp7.cs:260:18:260:23 | After Int32 i3 [no-match] | semmle.label | no-match | +| CSharp7.cs:261:17:261:46 | After call to method WriteLine | CSharp7.cs:261:17:261:47 | After ...; | semmle.label | successor | +| CSharp7.cs:261:17:261:46 | Before call to method WriteLine | CSharp7.cs:261:35:261:45 | Before $"..." | semmle.label | successor | +| CSharp7.cs:261:17:261:46 | call to method WriteLine | CSharp7.cs:261:17:261:46 | After call to method WriteLine | semmle.label | successor | +| CSharp7.cs:261:17:261:47 | ...; | CSharp7.cs:261:17:261:46 | Before call to method WriteLine | semmle.label | successor | +| CSharp7.cs:261:17:261:47 | After ...; | CSharp7.cs:262:17:262:22 | Before break; | semmle.label | successor | +| CSharp7.cs:261:35:261:45 | $"..." | CSharp7.cs:261:35:261:45 | After $"..." | semmle.label | successor | +| CSharp7.cs:261:35:261:45 | After $"..." | CSharp7.cs:261:17:261:46 | call to method WriteLine | semmle.label | successor | +| CSharp7.cs:261:35:261:45 | Before $"..." | CSharp7.cs:261:37:261:40 | "int " | semmle.label | successor | +| CSharp7.cs:261:37:261:40 | "int " | CSharp7.cs:261:41:261:44 | Before {...} | semmle.label | successor | +| CSharp7.cs:261:41:261:44 | After {...} | CSharp7.cs:261:35:261:45 | $"..." | semmle.label | successor | +| CSharp7.cs:261:41:261:44 | Before {...} | CSharp7.cs:261:42:261:43 | access to local variable i3 | semmle.label | successor | +| CSharp7.cs:261:41:261:44 | {...} | CSharp7.cs:261:41:261:44 | After {...} | semmle.label | successor | | CSharp7.cs:261:42:261:43 | access to local variable i3 | CSharp7.cs:261:41:261:44 | {...} | semmle.label | successor | -| CSharp7.cs:262:17:262:22 | break; | CSharp7.cs:230:10:230:13 | exit Test (normal) | semmle.label | break | +| CSharp7.cs:262:17:262:22 | Before break; | CSharp7.cs:262:17:262:22 | break; | semmle.label | successor | +| CSharp7.cs:262:17:262:22 | break; | CSharp7.cs:248:9:274:9 | After switch (...) {...} | semmle.label | break | +| CSharp7.cs:263:13:263:27 | After case ...: [match] | CSharp7.cs:264:17:264:50 | ...; | semmle.label | successor | +| CSharp7.cs:263:13:263:27 | After case ...: [no-match] | CSharp7.cs:266:13:266:26 | case ...: | semmle.label | successor | | CSharp7.cs:263:13:263:27 | case ...: | CSharp7.cs:263:18:263:26 | String s2 | semmle.label | successor | -| CSharp7.cs:263:18:263:26 | String s2 | CSharp7.cs:264:17:264:50 | ...; | semmle.label | match | -| CSharp7.cs:263:18:263:26 | String s2 | CSharp7.cs:266:13:266:26 | case ...: | semmle.label | no-match | -| CSharp7.cs:264:17:264:49 | call to method WriteLine | CSharp7.cs:265:17:265:22 | break; | semmle.label | successor | -| CSharp7.cs:264:17:264:50 | ...; | CSharp7.cs:264:37:264:43 | "string " | semmle.label | successor | -| CSharp7.cs:264:35:264:48 | $"..." | CSharp7.cs:264:17:264:49 | call to method WriteLine | semmle.label | successor | -| CSharp7.cs:264:37:264:43 | "string " | CSharp7.cs:264:45:264:46 | access to local variable s2 | semmle.label | successor | -| CSharp7.cs:264:44:264:47 | {...} | CSharp7.cs:264:35:264:48 | $"..." | semmle.label | successor | +| CSharp7.cs:263:18:263:26 | After String s2 [match] | CSharp7.cs:263:13:263:27 | After case ...: [match] | semmle.label | match | +| CSharp7.cs:263:18:263:26 | After String s2 [no-match] | CSharp7.cs:263:13:263:27 | After case ...: [no-match] | semmle.label | no-match | +| CSharp7.cs:263:18:263:26 | String s2 | CSharp7.cs:263:18:263:26 | After String s2 [match] | semmle.label | match | +| CSharp7.cs:263:18:263:26 | String s2 | CSharp7.cs:263:18:263:26 | After String s2 [no-match] | semmle.label | no-match | +| CSharp7.cs:264:17:264:49 | After call to method WriteLine | CSharp7.cs:264:17:264:50 | After ...; | semmle.label | successor | +| CSharp7.cs:264:17:264:49 | Before call to method WriteLine | CSharp7.cs:264:35:264:48 | Before $"..." | semmle.label | successor | +| CSharp7.cs:264:17:264:49 | call to method WriteLine | CSharp7.cs:264:17:264:49 | After call to method WriteLine | semmle.label | successor | +| CSharp7.cs:264:17:264:50 | ...; | CSharp7.cs:264:17:264:49 | Before call to method WriteLine | semmle.label | successor | +| CSharp7.cs:264:17:264:50 | After ...; | CSharp7.cs:265:17:265:22 | Before break; | semmle.label | successor | +| CSharp7.cs:264:35:264:48 | $"..." | CSharp7.cs:264:35:264:48 | After $"..." | semmle.label | successor | +| CSharp7.cs:264:35:264:48 | After $"..." | CSharp7.cs:264:17:264:49 | call to method WriteLine | semmle.label | successor | +| CSharp7.cs:264:35:264:48 | Before $"..." | CSharp7.cs:264:37:264:43 | "string " | semmle.label | successor | +| CSharp7.cs:264:37:264:43 | "string " | CSharp7.cs:264:44:264:47 | Before {...} | semmle.label | successor | +| CSharp7.cs:264:44:264:47 | After {...} | CSharp7.cs:264:35:264:48 | $"..." | semmle.label | successor | +| CSharp7.cs:264:44:264:47 | Before {...} | CSharp7.cs:264:45:264:46 | access to local variable s2 | semmle.label | successor | +| CSharp7.cs:264:44:264:47 | {...} | CSharp7.cs:264:44:264:47 | After {...} | semmle.label | successor | | CSharp7.cs:264:45:264:46 | access to local variable s2 | CSharp7.cs:264:44:264:47 | {...} | semmle.label | successor | -| CSharp7.cs:265:17:265:22 | break; | CSharp7.cs:230:10:230:13 | exit Test (normal) | semmle.label | break | +| CSharp7.cs:265:17:265:22 | Before break; | CSharp7.cs:265:17:265:22 | break; | semmle.label | successor | +| CSharp7.cs:265:17:265:22 | break; | CSharp7.cs:248:9:274:9 | After switch (...) {...} | semmle.label | break | +| CSharp7.cs:266:13:266:26 | After case ...: [match] | CSharp7.cs:267:17:267:44 | ...; | semmle.label | successor | +| CSharp7.cs:266:13:266:26 | After case ...: [no-match] | CSharp7.cs:269:13:269:24 | case ...: | semmle.label | successor | | CSharp7.cs:266:13:266:26 | case ...: | CSharp7.cs:266:18:266:23 | access to type Double | semmle.label | successor | -| CSharp7.cs:266:18:266:23 | access to type Double | CSharp7.cs:267:17:267:44 | ...; | semmle.label | match | -| CSharp7.cs:266:18:266:23 | access to type Double | CSharp7.cs:269:13:269:24 | case ...: | semmle.label | no-match | -| CSharp7.cs:267:17:267:43 | call to method WriteLine | CSharp7.cs:268:17:268:22 | break; | semmle.label | successor | -| CSharp7.cs:267:17:267:44 | ...; | CSharp7.cs:267:35:267:42 | "Double" | semmle.label | successor | +| CSharp7.cs:266:18:266:23 | After access to type Double [match] | CSharp7.cs:266:13:266:26 | After case ...: [match] | semmle.label | match | +| CSharp7.cs:266:18:266:23 | After access to type Double [no-match] | CSharp7.cs:266:13:266:26 | After case ...: [no-match] | semmle.label | no-match | +| CSharp7.cs:266:18:266:23 | access to type Double | CSharp7.cs:266:18:266:23 | After access to type Double [match] | semmle.label | match | +| CSharp7.cs:266:18:266:23 | access to type Double | CSharp7.cs:266:18:266:23 | After access to type Double [no-match] | semmle.label | no-match | +| CSharp7.cs:267:17:267:43 | After call to method WriteLine | CSharp7.cs:267:17:267:44 | After ...; | semmle.label | successor | +| CSharp7.cs:267:17:267:43 | Before call to method WriteLine | CSharp7.cs:267:35:267:42 | "Double" | semmle.label | successor | +| CSharp7.cs:267:17:267:43 | call to method WriteLine | CSharp7.cs:267:17:267:43 | After call to method WriteLine | semmle.label | successor | +| CSharp7.cs:267:17:267:44 | ...; | CSharp7.cs:267:17:267:43 | Before call to method WriteLine | semmle.label | successor | +| CSharp7.cs:267:17:267:44 | After ...; | CSharp7.cs:268:17:268:22 | Before break; | semmle.label | successor | | CSharp7.cs:267:35:267:42 | "Double" | CSharp7.cs:267:17:267:43 | call to method WriteLine | semmle.label | successor | -| CSharp7.cs:268:17:268:22 | break; | CSharp7.cs:230:10:230:13 | exit Test (normal) | semmle.label | break | +| CSharp7.cs:268:17:268:22 | Before break; | CSharp7.cs:268:17:268:22 | break; | semmle.label | successor | +| CSharp7.cs:268:17:268:22 | break; | CSharp7.cs:248:9:274:9 | After switch (...) {...} | semmle.label | break | +| CSharp7.cs:269:13:269:24 | After case ...: [match] | CSharp7.cs:270:17:270:22 | Before break; | semmle.label | successor | +| CSharp7.cs:269:13:269:24 | After case ...: [no-match] | CSharp7.cs:271:13:271:20 | default: | semmle.label | successor | | CSharp7.cs:269:13:269:24 | case ...: | CSharp7.cs:269:18:269:23 | Object v2 | semmle.label | successor | -| CSharp7.cs:269:18:269:23 | Object v2 | CSharp7.cs:270:17:270:22 | break; | semmle.label | match | -| CSharp7.cs:269:18:269:23 | Object v2 | CSharp7.cs:271:13:271:20 | default: | semmle.label | no-match | -| CSharp7.cs:270:17:270:22 | break; | CSharp7.cs:230:10:230:13 | exit Test (normal) | semmle.label | break | -| CSharp7.cs:271:13:271:20 | default: | CSharp7.cs:272:17:272:52 | ...; | semmle.label | successor | -| CSharp7.cs:272:17:272:51 | call to method WriteLine | CSharp7.cs:273:17:273:22 | break; | semmle.label | successor | -| CSharp7.cs:272:17:272:52 | ...; | CSharp7.cs:272:35:272:50 | "Something else" | semmle.label | successor | +| CSharp7.cs:269:18:269:23 | After Object v2 [match] | CSharp7.cs:269:13:269:24 | After case ...: [match] | semmle.label | match | +| CSharp7.cs:269:18:269:23 | After Object v2 [no-match] | CSharp7.cs:269:13:269:24 | After case ...: [no-match] | semmle.label | no-match | +| CSharp7.cs:269:18:269:23 | Object v2 | CSharp7.cs:269:18:269:23 | After Object v2 [match] | semmle.label | match | +| CSharp7.cs:269:18:269:23 | Object v2 | CSharp7.cs:269:18:269:23 | After Object v2 [no-match] | semmle.label | no-match | +| CSharp7.cs:270:17:270:22 | Before break; | CSharp7.cs:270:17:270:22 | break; | semmle.label | successor | +| CSharp7.cs:270:17:270:22 | break; | CSharp7.cs:248:9:274:9 | After switch (...) {...} | semmle.label | break | +| CSharp7.cs:271:13:271:20 | After default: [match] | CSharp7.cs:272:17:272:52 | ...; | semmle.label | successor | +| CSharp7.cs:271:13:271:20 | default: | CSharp7.cs:271:13:271:20 | After default: [match] | semmle.label | match | +| CSharp7.cs:272:17:272:51 | After call to method WriteLine | CSharp7.cs:272:17:272:52 | After ...; | semmle.label | successor | +| CSharp7.cs:272:17:272:51 | Before call to method WriteLine | CSharp7.cs:272:35:272:50 | "Something else" | semmle.label | successor | +| CSharp7.cs:272:17:272:51 | call to method WriteLine | CSharp7.cs:272:17:272:51 | After call to method WriteLine | semmle.label | successor | +| CSharp7.cs:272:17:272:52 | ...; | CSharp7.cs:272:17:272:51 | Before call to method WriteLine | semmle.label | successor | +| CSharp7.cs:272:17:272:52 | After ...; | CSharp7.cs:273:17:273:22 | Before break; | semmle.label | successor | | CSharp7.cs:272:35:272:50 | "Something else" | CSharp7.cs:272:17:272:51 | call to method WriteLine | semmle.label | successor | -| CSharp7.cs:273:17:273:22 | break; | CSharp7.cs:230:10:230:13 | exit Test (normal) | semmle.label | break | +| CSharp7.cs:273:17:273:22 | Before break; | CSharp7.cs:273:17:273:22 | break; | semmle.label | successor | +| CSharp7.cs:273:17:273:22 | break; | CSharp7.cs:248:9:274:9 | After switch (...) {...} | semmle.label | break | diff --git a/csharp/ql/test/library-tests/csharp7/IsFlow.ql b/csharp/ql/test/library-tests/csharp7/IsFlow.ql index 02b65c0d3e2c..0567ea5828fa 100644 --- a/csharp/ql/test/library-tests/csharp7/IsFlow.ql +++ b/csharp/ql/test/library-tests/csharp7/IsFlow.ql @@ -1,10 +1,10 @@ import csharp -query predicate edges(ControlFlow::Node n1, ControlFlow::Node n2, string attr, string val) { +query predicate edges(ControlFlowNode n1, ControlFlowNode n2, string attr, string val) { exists(SwitchStmt switch, ControlFlow::SuccessorType t | - switch.getAControlFlowNode().getASuccessor*() = n1 + switch.getControlFlowNode().getASuccessor*() = n1 | - n2 = n1.getASuccessorByType(t) and + n2 = n1.getASuccessor(t) and attr = "semmle.label" and val = t.toString() ) diff --git a/csharp/ql/test/library-tests/csharp7/LocalTaintFlow.expected b/csharp/ql/test/library-tests/csharp7/LocalTaintFlow.expected index 90ef19f62fe0..e2d3b18e0366 100644 --- a/csharp/ql/test/library-tests/csharp7/LocalTaintFlow.expected +++ b/csharp/ql/test/library-tests/csharp7/LocalTaintFlow.expected @@ -35,23 +35,23 @@ | CSharp7.cs:44:9:44:9 | access to parameter y | CSharp7.cs:44:9:44:13 | SSA def(y) | | CSharp7.cs:44:13:44:13 | access to parameter x | CSharp7.cs:44:9:44:9 | access to parameter y | | CSharp7.cs:47:10:47:10 | this | CSharp7.cs:49:9:49:24 | this access | +| CSharp7.cs:49:9:49:24 | SSA def(t1) | CSharp7.cs:51:18:51:19 | access to local variable t1 | | CSharp7.cs:49:9:49:24 | [post] this access | CSharp7.cs:50:9:50:21 | this access | | CSharp7.cs:49:9:49:24 | this access | CSharp7.cs:50:9:50:21 | this access | -| CSharp7.cs:49:22:49:23 | SSA def(t1) | CSharp7.cs:51:18:51:19 | access to local variable t1 | -| CSharp7.cs:49:22:49:23 | String t1 | CSharp7.cs:49:22:49:23 | SSA def(t1) | +| CSharp7.cs:49:22:49:23 | String t1 | CSharp7.cs:49:9:49:24 | SSA def(t1) | +| CSharp7.cs:50:9:50:21 | SSA def(t2) | CSharp7.cs:54:14:54:15 | access to local variable t2 | | CSharp7.cs:50:9:50:21 | [post] this access | CSharp7.cs:52:9:52:17 | this access | | CSharp7.cs:50:9:50:21 | this access | CSharp7.cs:52:9:52:17 | this access | -| CSharp7.cs:50:19:50:20 | SSA def(t2) | CSharp7.cs:54:14:54:15 | access to local variable t2 | -| CSharp7.cs:50:19:50:20 | String t2 | CSharp7.cs:50:19:50:20 | SSA def(t2) | +| CSharp7.cs:50:19:50:20 | String t2 | CSharp7.cs:50:9:50:21 | SSA def(t2) | | CSharp7.cs:51:18:51:19 | access to local variable t1 | CSharp7.cs:51:13:51:14 | access to local variable t3 | +| CSharp7.cs:52:9:52:17 | SSA def(t1) | CSharp7.cs:53:14:53:15 | access to local variable t1 | | CSharp7.cs:52:9:52:17 | [post] this access | CSharp7.cs:55:9:55:32 | this access | | CSharp7.cs:52:9:52:17 | this access | CSharp7.cs:55:9:55:32 | this access | -| CSharp7.cs:52:15:52:16 | SSA def(t1) | CSharp7.cs:53:14:53:15 | access to local variable t1 | -| CSharp7.cs:52:15:52:16 | access to local variable t1 | CSharp7.cs:52:15:52:16 | SSA def(t1) | +| CSharp7.cs:52:15:52:16 | access to local variable t1 | CSharp7.cs:52:9:52:17 | SSA def(t1) | | CSharp7.cs:53:14:53:15 | access to local variable t1 | CSharp7.cs:53:9:53:10 | access to local variable t3 | | CSharp7.cs:54:14:54:15 | access to local variable t2 | CSharp7.cs:54:9:54:10 | access to local variable t3 | -| CSharp7.cs:55:30:55:31 | SSA def(t4) | CSharp7.cs:56:18:56:19 | access to local variable t4 | -| CSharp7.cs:55:30:55:31 | String t4 | CSharp7.cs:55:30:55:31 | SSA def(t4) | +| CSharp7.cs:55:9:55:32 | SSA def(t4) | CSharp7.cs:56:18:56:19 | access to local variable t4 | +| CSharp7.cs:55:30:55:31 | String t4 | CSharp7.cs:55:9:55:32 | SSA def(t4) | | CSharp7.cs:56:18:56:19 | access to local variable t4 | CSharp7.cs:56:13:56:14 | access to local variable t5 | | CSharp7.cs:60:7:60:12 | this | CSharp7.cs:60:7:60:12 | this access | | CSharp7.cs:67:10:67:20 | this | CSharp7.cs:69:26:69:28 | this access | @@ -251,39 +251,32 @@ | CSharp7.cs:232:16:232:23 | SSA def(o) | CSharp7.cs:233:13:233:13 | access to local variable o | | CSharp7.cs:232:20:232:23 | null | CSharp7.cs:232:16:232:16 | access to local variable o | | CSharp7.cs:233:13:233:13 | access to local variable o | CSharp7.cs:233:18:233:23 | Int32 i1 | -| CSharp7.cs:233:13:233:13 | access to local variable o | CSharp7.cs:235:13:235:42 | [input] SSA phi read(o) | +| CSharp7.cs:233:13:233:13 | access to local variable o | CSharp7.cs:234:9:236:9 | [input] SSA phi read(o) | | CSharp7.cs:233:13:233:13 | access to local variable o | CSharp7.cs:237:18:237:18 | access to local variable o | -| CSharp7.cs:233:13:233:23 | [false] ... is ... | CSharp7.cs:233:13:233:33 | [false] ... && ... | -| CSharp7.cs:233:13:233:23 | [false] ... is ... | CSharp7.cs:233:13:233:33 | [true] ... && ... | -| CSharp7.cs:233:13:233:23 | [true] ... is ... | CSharp7.cs:233:13:233:33 | [false] ... && ... | -| CSharp7.cs:233:13:233:23 | [true] ... is ... | CSharp7.cs:233:13:233:33 | [true] ... && ... | +| CSharp7.cs:233:13:233:23 | ... is ... | CSharp7.cs:233:13:233:33 | ... && ... | | CSharp7.cs:233:18:233:23 | Int32 i1 | CSharp7.cs:233:18:233:23 | SSA def(i1) | | CSharp7.cs:233:18:233:23 | SSA def(i1) | CSharp7.cs:233:28:233:29 | access to local variable i1 | | CSharp7.cs:233:28:233:29 | access to local variable i1 | CSharp7.cs:233:28:233:33 | ... > ... | | CSharp7.cs:233:28:233:29 | access to local variable i1 | CSharp7.cs:235:38:235:39 | access to local variable i1 | -| CSharp7.cs:233:28:233:33 | ... > ... | CSharp7.cs:233:13:233:33 | [false] ... && ... | -| CSharp7.cs:233:28:233:33 | ... > ... | CSharp7.cs:233:13:233:33 | [true] ... && ... | -| CSharp7.cs:235:13:235:42 | [input] SSA phi read(o) | CSharp7.cs:248:17:248:17 | access to local variable o | +| CSharp7.cs:233:28:233:33 | ... > ... | CSharp7.cs:233:13:233:33 | ... && ... | +| CSharp7.cs:234:9:236:9 | [input] SSA phi read(o) | CSharp7.cs:248:17:248:17 | access to local variable o | | CSharp7.cs:235:33:235:36 | "int " | CSharp7.cs:235:31:235:41 | $"..." | | CSharp7.cs:235:37:235:40 | {...} | CSharp7.cs:235:31:235:41 | $"..." | | CSharp7.cs:235:38:235:39 | access to local variable i1 | CSharp7.cs:235:37:235:40 | {...} | | CSharp7.cs:237:18:237:18 | access to local variable o | CSharp7.cs:237:23:237:31 | String s1 | -| CSharp7.cs:237:18:237:18 | access to local variable o | CSharp7.cs:239:13:239:45 | [input] SSA phi read(o) | +| CSharp7.cs:237:18:237:18 | access to local variable o | CSharp7.cs:238:9:240:9 | [input] SSA phi read(o) | | CSharp7.cs:237:18:237:18 | access to local variable o | CSharp7.cs:241:18:241:18 | access to local variable o | | CSharp7.cs:237:23:237:31 | SSA def(s1) | CSharp7.cs:239:41:239:42 | access to local variable s1 | | CSharp7.cs:237:23:237:31 | String s1 | CSharp7.cs:237:23:237:31 | SSA def(s1) | -| CSharp7.cs:239:13:239:45 | [input] SSA phi read(o) | CSharp7.cs:248:17:248:17 | access to local variable o | +| CSharp7.cs:238:9:240:9 | [input] SSA phi read(o) | CSharp7.cs:248:17:248:17 | access to local variable o | | CSharp7.cs:239:33:239:39 | "string " | CSharp7.cs:239:31:239:44 | $"..." | | CSharp7.cs:239:40:239:43 | {...} | CSharp7.cs:239:31:239:44 | $"..." | | CSharp7.cs:239:41:239:42 | access to local variable s1 | CSharp7.cs:239:40:239:43 | {...} | | CSharp7.cs:241:18:241:18 | access to local variable o | CSharp7.cs:242:9:243:9 | [input] SSA phi read(o) | | CSharp7.cs:241:18:241:18 | access to local variable o | CSharp7.cs:244:18:244:18 | access to local variable o | | CSharp7.cs:242:9:243:9 | [input] SSA phi read(o) | CSharp7.cs:248:17:248:17 | access to local variable o | -| CSharp7.cs:244:18:244:18 | access to local variable o | CSharp7.cs:244:18:244:28 | [input] SSA phi read(o) | | CSharp7.cs:244:18:244:18 | access to local variable o | CSharp7.cs:244:23:244:28 | Object v1 | -| CSharp7.cs:244:18:244:18 | access to local variable o | CSharp7.cs:245:9:246:9 | [input] SSA phi read(o) | -| CSharp7.cs:244:18:244:28 | [input] SSA phi read(o) | CSharp7.cs:248:17:248:17 | access to local variable o | -| CSharp7.cs:245:9:246:9 | [input] SSA phi read(o) | CSharp7.cs:248:17:248:17 | access to local variable o | +| CSharp7.cs:244:18:244:18 | access to local variable o | CSharp7.cs:248:17:248:17 | access to local variable o | | CSharp7.cs:248:17:248:17 | access to local variable o | CSharp7.cs:254:27:254:27 | access to local variable o | | CSharp7.cs:248:17:248:17 | access to local variable o | CSharp7.cs:257:18:257:23 | Int32 i2 | | CSharp7.cs:248:17:248:17 | access to local variable o | CSharp7.cs:260:18:260:23 | Int32 i3 | @@ -335,14 +328,10 @@ | CSharp7.cs:297:22:297:22 | 0 | CSharp7.cs:297:18:297:18 | access to local variable x | | CSharp7.cs:297:25:297:25 | access to local variable x | CSharp7.cs:297:25:297:30 | ... < ... | | CSharp7.cs:297:25:297:25 | access to local variable x | CSharp7.cs:297:35:297:35 | access to local variable x | -| CSharp7.cs:297:25:297:30 | ... < ... | CSharp7.cs:297:25:297:44 | [false] ... && ... | -| CSharp7.cs:297:25:297:30 | ... < ... | CSharp7.cs:297:25:297:44 | [true] ... && ... | +| CSharp7.cs:297:25:297:30 | ... < ... | CSharp7.cs:297:25:297:44 | ... && ... | | CSharp7.cs:297:35:297:35 | access to local variable x | CSharp7.cs:297:40:297:44 | Int32 y | | CSharp7.cs:297:35:297:35 | access to local variable x | CSharp7.cs:297:49:297:49 | access to local variable x | -| CSharp7.cs:297:35:297:44 | [false] ... is ... | CSharp7.cs:297:25:297:44 | [false] ... && ... | -| CSharp7.cs:297:35:297:44 | [false] ... is ... | CSharp7.cs:297:25:297:44 | [true] ... && ... | -| CSharp7.cs:297:35:297:44 | [true] ... is ... | CSharp7.cs:297:25:297:44 | [false] ... && ... | -| CSharp7.cs:297:35:297:44 | [true] ... is ... | CSharp7.cs:297:25:297:44 | [true] ... && ... | +| CSharp7.cs:297:35:297:44 | ... is ... | CSharp7.cs:297:25:297:44 | ... && ... | | CSharp7.cs:297:40:297:44 | Int32 y | CSharp7.cs:297:40:297:44 | SSA def(y) | | CSharp7.cs:297:40:297:44 | SSA def(y) | CSharp7.cs:299:31:299:31 | access to local variable y | | CSharp7.cs:297:47:297:49 | SSA def(x) | CSharp7.cs:297:25:297:25 | access to local variable x | diff --git a/csharp/ql/test/library-tests/csharp8/NullCoalescingControlFlow.expected b/csharp/ql/test/library-tests/csharp8/NullCoalescingControlFlow.expected index b8d360d16084..fb61262d6f26 100644 --- a/csharp/ql/test/library-tests/csharp8/NullCoalescingControlFlow.expected +++ b/csharp/ql/test/library-tests/csharp8/NullCoalescingControlFlow.expected @@ -1,11 +1,21 @@ -| NullCoalescingAssignment.cs:5:10:5:23 | enter NullCoalescing | NullCoalescingAssignment.cs:6:5:9:5 | {...} | semmle.label | successor | -| NullCoalescingAssignment.cs:5:10:5:23 | exit NullCoalescing (normal) | NullCoalescingAssignment.cs:5:10:5:23 | exit NullCoalescing | semmle.label | successor | +| NullCoalescingAssignment.cs:5:10:5:23 | Entry | NullCoalescingAssignment.cs:6:5:9:5 | {...} | semmle.label | successor | +| NullCoalescingAssignment.cs:5:10:5:23 | Normal Exit | NullCoalescingAssignment.cs:5:10:5:23 | Exit | semmle.label | successor | +| NullCoalescingAssignment.cs:6:5:9:5 | After {...} | NullCoalescingAssignment.cs:5:10:5:23 | Normal Exit | semmle.label | successor | | NullCoalescingAssignment.cs:6:5:9:5 | {...} | NullCoalescingAssignment.cs:7:9:7:24 | ... ...; | semmle.label | successor | -| NullCoalescingAssignment.cs:7:9:7:24 | ... ...; | NullCoalescingAssignment.cs:7:20:7:23 | null | semmle.label | successor | -| NullCoalescingAssignment.cs:7:16:7:23 | Object o = ... | NullCoalescingAssignment.cs:8:9:8:19 | ...; | semmle.label | successor | +| NullCoalescingAssignment.cs:7:9:7:24 | ... ...; | NullCoalescingAssignment.cs:7:16:7:23 | Before Object o = ... | semmle.label | successor | +| NullCoalescingAssignment.cs:7:9:7:24 | After ... ...; | NullCoalescingAssignment.cs:8:9:8:19 | ...; | semmle.label | successor | +| NullCoalescingAssignment.cs:7:16:7:16 | access to local variable o | NullCoalescingAssignment.cs:7:20:7:23 | null | semmle.label | successor | +| NullCoalescingAssignment.cs:7:16:7:23 | After Object o = ... | NullCoalescingAssignment.cs:7:9:7:24 | After ... ...; | semmle.label | successor | +| NullCoalescingAssignment.cs:7:16:7:23 | Before Object o = ... | NullCoalescingAssignment.cs:7:16:7:16 | access to local variable o | semmle.label | successor | +| NullCoalescingAssignment.cs:7:16:7:23 | Object o = ... | NullCoalescingAssignment.cs:7:16:7:23 | After Object o = ... | semmle.label | successor | | NullCoalescingAssignment.cs:7:20:7:23 | null | NullCoalescingAssignment.cs:7:16:7:23 | Object o = ... | semmle.label | successor | -| NullCoalescingAssignment.cs:8:9:8:9 | access to local variable o | NullCoalescingAssignment.cs:8:9:8:18 | ... ??= ... | semmle.label | non-null | -| NullCoalescingAssignment.cs:8:9:8:9 | access to local variable o | NullCoalescingAssignment.cs:8:15:8:18 | this access | semmle.label | null | -| NullCoalescingAssignment.cs:8:9:8:18 | ... ??= ... | NullCoalescingAssignment.cs:5:10:5:23 | exit NullCoalescing (normal) | semmle.label | successor | -| NullCoalescingAssignment.cs:8:9:8:19 | ...; | NullCoalescingAssignment.cs:8:9:8:9 | access to local variable o | semmle.label | successor | +| NullCoalescingAssignment.cs:8:9:8:9 | After access to local variable o [non-null] | NullCoalescingAssignment.cs:8:9:8:18 | After ... ??= ... | semmle.label | successor | +| NullCoalescingAssignment.cs:8:9:8:9 | After access to local variable o [null] | NullCoalescingAssignment.cs:8:15:8:18 | this access | semmle.label | successor | +| NullCoalescingAssignment.cs:8:9:8:9 | access to local variable o | NullCoalescingAssignment.cs:8:9:8:9 | After access to local variable o [non-null] | semmle.label | non-null | +| NullCoalescingAssignment.cs:8:9:8:9 | access to local variable o | NullCoalescingAssignment.cs:8:9:8:9 | After access to local variable o [null] | semmle.label | null | +| NullCoalescingAssignment.cs:8:9:8:18 | ... ??= ... | NullCoalescingAssignment.cs:8:9:8:18 | After ... ??= ... | semmle.label | successor | +| NullCoalescingAssignment.cs:8:9:8:18 | After ... ??= ... | NullCoalescingAssignment.cs:8:9:8:19 | After ...; | semmle.label | successor | +| NullCoalescingAssignment.cs:8:9:8:18 | Before ... ??= ... | NullCoalescingAssignment.cs:8:9:8:9 | access to local variable o | semmle.label | successor | +| NullCoalescingAssignment.cs:8:9:8:19 | ...; | NullCoalescingAssignment.cs:8:9:8:18 | Before ... ??= ... | semmle.label | successor | +| NullCoalescingAssignment.cs:8:9:8:19 | After ...; | NullCoalescingAssignment.cs:6:5:9:5 | After {...} | semmle.label | successor | | NullCoalescingAssignment.cs:8:15:8:18 | this access | NullCoalescingAssignment.cs:8:9:8:18 | ... ??= ... | semmle.label | successor | diff --git a/csharp/ql/test/library-tests/csharp8/NullCoalescingControlFlow.ql b/csharp/ql/test/library-tests/csharp8/NullCoalescingControlFlow.ql index 1037ad321691..65d471b49eb7 100644 --- a/csharp/ql/test/library-tests/csharp8/NullCoalescingControlFlow.ql +++ b/csharp/ql/test/library-tests/csharp8/NullCoalescingControlFlow.ql @@ -1,9 +1,7 @@ import csharp -query predicate edges(ControlFlow::Node node1, ControlFlow::Node node2, string label, string value) { +query predicate edges(ControlFlowNode node1, ControlFlowNode node2, string label, string value) { label = "semmle.label" and - exists(ControlFlow::SuccessorType t | - node2 = node1.getASuccessorByType(t) and value = t.toString() - ) and + exists(ControlFlow::SuccessorType t | node2 = node1.getASuccessor(t) and value = t.toString()) and node1.getEnclosingCallable().hasName("NullCoalescing") } diff --git a/csharp/ql/test/library-tests/csharp8/NullableRefTypes.expected b/csharp/ql/test/library-tests/csharp8/NullableRefTypes.expected index fb2ca2f17591..6ab83277fcfe 100644 --- a/csharp/ql/test/library-tests/csharp8/NullableRefTypes.expected +++ b/csharp/ql/test/library-tests/csharp8/NullableRefTypes.expected @@ -19,27 +19,54 @@ nullableDataFlow | NullableRefTypes.cs:88:13:88:13 | access to local variable x | NullableRefTypes.cs:88:13:88:14 | ...! | | NullableRefTypes.cs:88:13:88:14 | ...! | NullableRefTypes.cs:88:9:88:9 | access to local variable y | nullableControlFlow -| NullableRefTypes.cs:82:10:82:40 | enter TestSuppressNullableWarningExpr | NullableRefTypes.cs:83:5:89:5 | {...} | successor | -| NullableRefTypes.cs:82:10:82:40 | exit TestSuppressNullableWarningExpr (normal) | NullableRefTypes.cs:82:10:82:40 | exit TestSuppressNullableWarningExpr | successor | +| NullableRefTypes.cs:82:10:82:40 | Entry | NullableRefTypes.cs:83:5:89:5 | {...} | successor | +| NullableRefTypes.cs:82:10:82:40 | Normal Exit | NullableRefTypes.cs:82:10:82:40 | Exit | successor | +| NullableRefTypes.cs:83:5:89:5 | After {...} | NullableRefTypes.cs:82:10:82:40 | Normal Exit | successor | | NullableRefTypes.cs:83:5:89:5 | {...} | NullableRefTypes.cs:84:9:84:29 | ... ...; | successor | -| NullableRefTypes.cs:84:9:84:29 | ... ...; | NullableRefTypes.cs:84:21:84:28 | "source" | successor | -| NullableRefTypes.cs:84:17:84:28 | String x = ... | NullableRefTypes.cs:85:9:85:22 | ... ...; | successor | +| NullableRefTypes.cs:84:9:84:29 | ... ...; | NullableRefTypes.cs:84:17:84:28 | Before String x = ... | successor | +| NullableRefTypes.cs:84:9:84:29 | After ... ...; | NullableRefTypes.cs:85:9:85:22 | ... ...; | successor | +| NullableRefTypes.cs:84:17:84:17 | access to local variable x | NullableRefTypes.cs:84:21:84:28 | "source" | successor | +| NullableRefTypes.cs:84:17:84:28 | After String x = ... | NullableRefTypes.cs:84:9:84:29 | After ... ...; | successor | +| NullableRefTypes.cs:84:17:84:28 | Before String x = ... | NullableRefTypes.cs:84:17:84:17 | access to local variable x | successor | +| NullableRefTypes.cs:84:17:84:28 | String x = ... | NullableRefTypes.cs:84:17:84:28 | After String x = ... | successor | | NullableRefTypes.cs:84:21:84:28 | "source" | NullableRefTypes.cs:84:17:84:28 | String x = ... | successor | -| NullableRefTypes.cs:85:9:85:22 | ... ...; | NullableRefTypes.cs:85:20:85:20 | access to local variable x | successor | -| NullableRefTypes.cs:85:16:85:21 | String y = ... | NullableRefTypes.cs:86:9:86:15 | ...; | successor | +| NullableRefTypes.cs:85:9:85:22 | ... ...; | NullableRefTypes.cs:85:16:85:21 | Before String y = ... | successor | +| NullableRefTypes.cs:85:9:85:22 | After ... ...; | NullableRefTypes.cs:86:9:86:15 | ...; | successor | +| NullableRefTypes.cs:85:16:85:16 | access to local variable y | NullableRefTypes.cs:85:20:85:21 | Before ...! | successor | +| NullableRefTypes.cs:85:16:85:21 | After String y = ... | NullableRefTypes.cs:85:9:85:22 | After ... ...; | successor | +| NullableRefTypes.cs:85:16:85:21 | Before String y = ... | NullableRefTypes.cs:85:16:85:16 | access to local variable y | successor | +| NullableRefTypes.cs:85:16:85:21 | String y = ... | NullableRefTypes.cs:85:16:85:21 | After String y = ... | successor | | NullableRefTypes.cs:85:20:85:20 | access to local variable x | NullableRefTypes.cs:85:20:85:21 | ...! | successor | -| NullableRefTypes.cs:85:20:85:21 | ...! | NullableRefTypes.cs:85:16:85:21 | String y = ... | successor | -| NullableRefTypes.cs:86:9:86:14 | ... = ... | NullableRefTypes.cs:87:9:87:17 | ...; | successor | -| NullableRefTypes.cs:86:9:86:15 | ...; | NullableRefTypes.cs:86:13:86:13 | access to local variable x | successor | +| NullableRefTypes.cs:85:20:85:21 | ...! | NullableRefTypes.cs:85:20:85:21 | After ...! | successor | +| NullableRefTypes.cs:85:20:85:21 | After ...! | NullableRefTypes.cs:85:16:85:21 | String y = ... | successor | +| NullableRefTypes.cs:85:20:85:21 | Before ...! | NullableRefTypes.cs:85:20:85:20 | access to local variable x | successor | +| NullableRefTypes.cs:86:9:86:9 | access to local variable y | NullableRefTypes.cs:86:13:86:14 | Before ...! | successor | +| NullableRefTypes.cs:86:9:86:14 | ... = ... | NullableRefTypes.cs:86:9:86:14 | After ... = ... | successor | +| NullableRefTypes.cs:86:9:86:14 | After ... = ... | NullableRefTypes.cs:86:9:86:15 | After ...; | successor | +| NullableRefTypes.cs:86:9:86:14 | Before ... = ... | NullableRefTypes.cs:86:9:86:9 | access to local variable y | successor | +| NullableRefTypes.cs:86:9:86:15 | ...; | NullableRefTypes.cs:86:9:86:14 | Before ... = ... | successor | +| NullableRefTypes.cs:86:9:86:15 | After ...; | NullableRefTypes.cs:87:9:87:17 | ...; | successor | | NullableRefTypes.cs:86:13:86:13 | access to local variable x | NullableRefTypes.cs:86:13:86:14 | ...! | successor | -| NullableRefTypes.cs:86:13:86:14 | ...! | NullableRefTypes.cs:86:9:86:14 | ... = ... | successor | -| NullableRefTypes.cs:87:9:87:16 | ... = ... | NullableRefTypes.cs:88:9:88:15 | ...; | successor | -| NullableRefTypes.cs:87:9:87:17 | ...; | NullableRefTypes.cs:87:13:87:16 | null | successor | +| NullableRefTypes.cs:86:13:86:14 | ...! | NullableRefTypes.cs:86:13:86:14 | After ...! | successor | +| NullableRefTypes.cs:86:13:86:14 | After ...! | NullableRefTypes.cs:86:9:86:14 | ... = ... | successor | +| NullableRefTypes.cs:86:13:86:14 | Before ...! | NullableRefTypes.cs:86:13:86:13 | access to local variable x | successor | +| NullableRefTypes.cs:87:9:87:9 | access to local variable x | NullableRefTypes.cs:87:13:87:16 | null | successor | +| NullableRefTypes.cs:87:9:87:16 | ... = ... | NullableRefTypes.cs:87:9:87:16 | After ... = ... | successor | +| NullableRefTypes.cs:87:9:87:16 | After ... = ... | NullableRefTypes.cs:87:9:87:17 | After ...; | successor | +| NullableRefTypes.cs:87:9:87:16 | Before ... = ... | NullableRefTypes.cs:87:9:87:9 | access to local variable x | successor | +| NullableRefTypes.cs:87:9:87:17 | ...; | NullableRefTypes.cs:87:9:87:16 | Before ... = ... | successor | +| NullableRefTypes.cs:87:9:87:17 | After ...; | NullableRefTypes.cs:88:9:88:15 | ...; | successor | | NullableRefTypes.cs:87:13:87:16 | null | NullableRefTypes.cs:87:9:87:16 | ... = ... | successor | -| NullableRefTypes.cs:88:9:88:14 | ... = ... | NullableRefTypes.cs:82:10:82:40 | exit TestSuppressNullableWarningExpr (normal) | successor | -| NullableRefTypes.cs:88:9:88:15 | ...; | NullableRefTypes.cs:88:13:88:13 | access to local variable x | successor | +| NullableRefTypes.cs:88:9:88:9 | access to local variable y | NullableRefTypes.cs:88:13:88:14 | Before ...! | successor | +| NullableRefTypes.cs:88:9:88:14 | ... = ... | NullableRefTypes.cs:88:9:88:14 | After ... = ... | successor | +| NullableRefTypes.cs:88:9:88:14 | After ... = ... | NullableRefTypes.cs:88:9:88:15 | After ...; | successor | +| NullableRefTypes.cs:88:9:88:14 | Before ... = ... | NullableRefTypes.cs:88:9:88:9 | access to local variable y | successor | +| NullableRefTypes.cs:88:9:88:15 | ...; | NullableRefTypes.cs:88:9:88:14 | Before ... = ... | successor | +| NullableRefTypes.cs:88:9:88:15 | After ...; | NullableRefTypes.cs:83:5:89:5 | After {...} | successor | | NullableRefTypes.cs:88:13:88:13 | access to local variable x | NullableRefTypes.cs:88:13:88:14 | ...! | successor | -| NullableRefTypes.cs:88:13:88:14 | ...! | NullableRefTypes.cs:88:9:88:14 | ... = ... | successor | +| NullableRefTypes.cs:88:13:88:14 | ...! | NullableRefTypes.cs:88:13:88:14 | After ...! | successor | +| NullableRefTypes.cs:88:13:88:14 | After ...! | NullableRefTypes.cs:88:9:88:14 | ... = ... | successor | +| NullableRefTypes.cs:88:13:88:14 | Before ...! | NullableRefTypes.cs:88:13:88:13 | access to local variable x | successor | nonNullExpressions | NullableRefTypes.cs:84:21:84:28 | "source" | | NullableRefTypes.cs:85:20:85:20 | access to local variable x | diff --git a/csharp/ql/test/library-tests/csharp8/NullableRefTypes.ql b/csharp/ql/test/library-tests/csharp8/NullableRefTypes.ql index f519f9a14e83..0d057d678ee4 100644 --- a/csharp/ql/test/library-tests/csharp8/NullableRefTypes.ql +++ b/csharp/ql/test/library-tests/csharp8/NullableRefTypes.ql @@ -11,10 +11,10 @@ query predicate nullableDataFlow(DataFlow::Node src, DataFlow::Node sink) { } query predicate nullableControlFlow( - ControlFlow::Node a, ControlFlow::Node b, ControlFlow::SuccessorType t + ControlFlowNode a, ControlFlowNode b, ControlFlow::SuccessorType t ) { a.getEnclosingCallable().hasName("TestSuppressNullableWarningExpr") and - b = a.getASuccessorByType(t) + b = a.getASuccessor(t) } query predicate nonNullExpressions(NonNullExpr e) { diff --git a/csharp/ql/test/library-tests/csharp8/UsingControlFlow.expected b/csharp/ql/test/library-tests/csharp8/UsingControlFlow.expected index 465d64ab9c2b..faa377343645 100644 --- a/csharp/ql/test/library-tests/csharp8/UsingControlFlow.expected +++ b/csharp/ql/test/library-tests/csharp8/UsingControlFlow.expected @@ -1,27 +1,53 @@ -| UsingDeclarations.cs:6:10:6:30 | enter TestUsingDeclarations | UsingDeclarations.cs:7:5:16:5 | {...} | semmle.label | successor | -| UsingDeclarations.cs:6:10:6:30 | exit TestUsingDeclarations (normal) | UsingDeclarations.cs:6:10:6:30 | exit TestUsingDeclarations | semmle.label | successor | +| UsingDeclarations.cs:6:10:6:30 | Entry | UsingDeclarations.cs:7:5:16:5 | {...} | semmle.label | successor | +| UsingDeclarations.cs:6:10:6:30 | Normal Exit | UsingDeclarations.cs:6:10:6:30 | Exit | semmle.label | successor | +| UsingDeclarations.cs:7:5:16:5 | After {...} | UsingDeclarations.cs:6:10:6:30 | Normal Exit | semmle.label | successor | | UsingDeclarations.cs:7:5:16:5 | {...} | UsingDeclarations.cs:8:9:8:116 | using ... ...; | semmle.label | successor | -| UsingDeclarations.cs:8:9:8:116 | using ... ...; | UsingDeclarations.cs:8:49:8:53 | "..." | semmle.label | successor | -| UsingDeclarations.cs:8:26:8:69 | FileStream file1 = ... | UsingDeclarations.cs:8:95:8:99 | "..." | semmle.label | successor | -| UsingDeclarations.cs:8:34:8:69 | object creation of type FileStream | UsingDeclarations.cs:8:26:8:69 | FileStream file1 = ... | semmle.label | successor | +| UsingDeclarations.cs:8:9:8:116 | After using ... ...; | UsingDeclarations.cs:10:9:12:9 | using (...) {...} | semmle.label | successor | +| UsingDeclarations.cs:8:9:8:116 | using ... ...; | UsingDeclarations.cs:8:26:8:69 | Before FileStream file1 = ... | semmle.label | successor | +| UsingDeclarations.cs:8:26:8:30 | access to local variable file1 | UsingDeclarations.cs:8:34:8:69 | Before object creation of type FileStream | semmle.label | successor | +| UsingDeclarations.cs:8:26:8:69 | After FileStream file1 = ... | UsingDeclarations.cs:8:72:8:115 | Before FileStream file2 = ... | semmle.label | successor | +| UsingDeclarations.cs:8:26:8:69 | Before FileStream file1 = ... | UsingDeclarations.cs:8:26:8:30 | access to local variable file1 | semmle.label | successor | +| UsingDeclarations.cs:8:26:8:69 | FileStream file1 = ... | UsingDeclarations.cs:8:26:8:69 | After FileStream file1 = ... | semmle.label | successor | +| UsingDeclarations.cs:8:34:8:69 | After object creation of type FileStream | UsingDeclarations.cs:8:26:8:69 | FileStream file1 = ... | semmle.label | successor | +| UsingDeclarations.cs:8:34:8:69 | Before object creation of type FileStream | UsingDeclarations.cs:8:49:8:53 | "..." | semmle.label | successor | +| UsingDeclarations.cs:8:34:8:69 | object creation of type FileStream | UsingDeclarations.cs:8:34:8:69 | After object creation of type FileStream | semmle.label | successor | | UsingDeclarations.cs:8:49:8:53 | "..." | UsingDeclarations.cs:8:56:8:68 | access to constant Open | semmle.label | successor | | UsingDeclarations.cs:8:56:8:68 | access to constant Open | UsingDeclarations.cs:8:34:8:69 | object creation of type FileStream | semmle.label | successor | -| UsingDeclarations.cs:8:72:8:115 | FileStream file2 = ... | UsingDeclarations.cs:10:9:12:9 | using (...) {...} | semmle.label | successor | -| UsingDeclarations.cs:8:80:8:115 | object creation of type FileStream | UsingDeclarations.cs:8:72:8:115 | FileStream file2 = ... | semmle.label | successor | +| UsingDeclarations.cs:8:72:8:76 | access to local variable file2 | UsingDeclarations.cs:8:80:8:115 | Before object creation of type FileStream | semmle.label | successor | +| UsingDeclarations.cs:8:72:8:115 | After FileStream file2 = ... | UsingDeclarations.cs:8:9:8:116 | After using ... ...; | semmle.label | successor | +| UsingDeclarations.cs:8:72:8:115 | Before FileStream file2 = ... | UsingDeclarations.cs:8:72:8:76 | access to local variable file2 | semmle.label | successor | +| UsingDeclarations.cs:8:72:8:115 | FileStream file2 = ... | UsingDeclarations.cs:8:72:8:115 | After FileStream file2 = ... | semmle.label | successor | +| UsingDeclarations.cs:8:80:8:115 | After object creation of type FileStream | UsingDeclarations.cs:8:72:8:115 | FileStream file2 = ... | semmle.label | successor | +| UsingDeclarations.cs:8:80:8:115 | Before object creation of type FileStream | UsingDeclarations.cs:8:95:8:99 | "..." | semmle.label | successor | +| UsingDeclarations.cs:8:80:8:115 | object creation of type FileStream | UsingDeclarations.cs:8:80:8:115 | After object creation of type FileStream | semmle.label | successor | | UsingDeclarations.cs:8:95:8:99 | "..." | UsingDeclarations.cs:8:102:8:114 | access to constant Open | semmle.label | successor | | UsingDeclarations.cs:8:102:8:114 | access to constant Open | UsingDeclarations.cs:8:80:8:115 | object creation of type FileStream | semmle.label | successor | -| UsingDeclarations.cs:10:9:12:9 | using (...) {...} | UsingDeclarations.cs:10:49:10:53 | "..." | semmle.label | successor | -| UsingDeclarations.cs:10:26:10:69 | FileStream file3 = ... | UsingDeclarations.cs:10:95:10:99 | "..." | semmle.label | successor | -| UsingDeclarations.cs:10:34:10:69 | object creation of type FileStream | UsingDeclarations.cs:10:26:10:69 | FileStream file3 = ... | semmle.label | successor | +| UsingDeclarations.cs:10:9:12:9 | After using (...) {...} | UsingDeclarations.cs:14:9:15:13 | using (...) {...} | semmle.label | successor | +| UsingDeclarations.cs:10:9:12:9 | using (...) {...} | UsingDeclarations.cs:10:26:10:69 | Before FileStream file3 = ... | semmle.label | successor | +| UsingDeclarations.cs:10:26:10:30 | access to local variable file3 | UsingDeclarations.cs:10:34:10:69 | Before object creation of type FileStream | semmle.label | successor | +| UsingDeclarations.cs:10:26:10:69 | After FileStream file3 = ... | UsingDeclarations.cs:10:72:10:115 | Before FileStream file4 = ... | semmle.label | successor | +| UsingDeclarations.cs:10:26:10:69 | Before FileStream file3 = ... | UsingDeclarations.cs:10:26:10:30 | access to local variable file3 | semmle.label | successor | +| UsingDeclarations.cs:10:26:10:69 | FileStream file3 = ... | UsingDeclarations.cs:10:26:10:69 | After FileStream file3 = ... | semmle.label | successor | +| UsingDeclarations.cs:10:34:10:69 | After object creation of type FileStream | UsingDeclarations.cs:10:26:10:69 | FileStream file3 = ... | semmle.label | successor | +| UsingDeclarations.cs:10:34:10:69 | Before object creation of type FileStream | UsingDeclarations.cs:10:49:10:53 | "..." | semmle.label | successor | +| UsingDeclarations.cs:10:34:10:69 | object creation of type FileStream | UsingDeclarations.cs:10:34:10:69 | After object creation of type FileStream | semmle.label | successor | | UsingDeclarations.cs:10:49:10:53 | "..." | UsingDeclarations.cs:10:56:10:68 | access to constant Open | semmle.label | successor | | UsingDeclarations.cs:10:56:10:68 | access to constant Open | UsingDeclarations.cs:10:34:10:69 | object creation of type FileStream | semmle.label | successor | -| UsingDeclarations.cs:10:72:10:115 | FileStream file4 = ... | UsingDeclarations.cs:11:9:12:9 | {...} | semmle.label | successor | -| UsingDeclarations.cs:10:80:10:115 | object creation of type FileStream | UsingDeclarations.cs:10:72:10:115 | FileStream file4 = ... | semmle.label | successor | +| UsingDeclarations.cs:10:72:10:76 | access to local variable file4 | UsingDeclarations.cs:10:80:10:115 | Before object creation of type FileStream | semmle.label | successor | +| UsingDeclarations.cs:10:72:10:115 | After FileStream file4 = ... | UsingDeclarations.cs:11:9:12:9 | {...} | semmle.label | successor | +| UsingDeclarations.cs:10:72:10:115 | Before FileStream file4 = ... | UsingDeclarations.cs:10:72:10:76 | access to local variable file4 | semmle.label | successor | +| UsingDeclarations.cs:10:72:10:115 | FileStream file4 = ... | UsingDeclarations.cs:10:72:10:115 | After FileStream file4 = ... | semmle.label | successor | +| UsingDeclarations.cs:10:80:10:115 | After object creation of type FileStream | UsingDeclarations.cs:10:72:10:115 | FileStream file4 = ... | semmle.label | successor | +| UsingDeclarations.cs:10:80:10:115 | Before object creation of type FileStream | UsingDeclarations.cs:10:95:10:99 | "..." | semmle.label | successor | +| UsingDeclarations.cs:10:80:10:115 | object creation of type FileStream | UsingDeclarations.cs:10:80:10:115 | After object creation of type FileStream | semmle.label | successor | | UsingDeclarations.cs:10:95:10:99 | "..." | UsingDeclarations.cs:10:102:10:114 | access to constant Open | semmle.label | successor | | UsingDeclarations.cs:10:102:10:114 | access to constant Open | UsingDeclarations.cs:10:80:10:115 | object creation of type FileStream | semmle.label | successor | -| UsingDeclarations.cs:11:9:12:9 | {...} | UsingDeclarations.cs:14:9:15:13 | using (...) {...} | semmle.label | successor | -| UsingDeclarations.cs:14:9:15:13 | using (...) {...} | UsingDeclarations.cs:14:30:14:34 | "..." | semmle.label | successor | -| UsingDeclarations.cs:14:15:14:50 | object creation of type FileStream | UsingDeclarations.cs:15:13:15:13 | ; | semmle.label | successor | +| UsingDeclarations.cs:11:9:12:9 | {...} | UsingDeclarations.cs:10:9:12:9 | After using (...) {...} | semmle.label | successor | +| UsingDeclarations.cs:14:9:15:13 | After using (...) {...} | UsingDeclarations.cs:7:5:16:5 | After {...} | semmle.label | successor | +| UsingDeclarations.cs:14:9:15:13 | using (...) {...} | UsingDeclarations.cs:14:15:14:50 | Before object creation of type FileStream | semmle.label | successor | +| UsingDeclarations.cs:14:15:14:50 | After object creation of type FileStream | UsingDeclarations.cs:15:13:15:13 | ; | semmle.label | successor | +| UsingDeclarations.cs:14:15:14:50 | Before object creation of type FileStream | UsingDeclarations.cs:14:30:14:34 | "..." | semmle.label | successor | +| UsingDeclarations.cs:14:15:14:50 | object creation of type FileStream | UsingDeclarations.cs:14:15:14:50 | After object creation of type FileStream | semmle.label | successor | | UsingDeclarations.cs:14:30:14:34 | "..." | UsingDeclarations.cs:14:37:14:49 | access to constant Open | semmle.label | successor | | UsingDeclarations.cs:14:37:14:49 | access to constant Open | UsingDeclarations.cs:14:15:14:50 | object creation of type FileStream | semmle.label | successor | -| UsingDeclarations.cs:15:13:15:13 | ; | UsingDeclarations.cs:6:10:6:30 | exit TestUsingDeclarations (normal) | semmle.label | successor | +| UsingDeclarations.cs:15:13:15:13 | ; | UsingDeclarations.cs:14:9:15:13 | After using (...) {...} | semmle.label | successor | diff --git a/csharp/ql/test/library-tests/csharp8/UsingControlFlow.ql b/csharp/ql/test/library-tests/csharp8/UsingControlFlow.ql index fe2f90be4a7d..927d21e8ec70 100644 --- a/csharp/ql/test/library-tests/csharp8/UsingControlFlow.ql +++ b/csharp/ql/test/library-tests/csharp8/UsingControlFlow.ql @@ -1,9 +1,7 @@ import csharp -query predicate edges(ControlFlow::Node node1, ControlFlow::Node node2, string label, string value) { +query predicate edges(ControlFlowNode node1, ControlFlowNode node2, string label, string value) { label = "semmle.label" and - exists(ControlFlow::SuccessorType t | - node2 = node1.getASuccessorByType(t) and value = t.toString() - ) and + exists(ControlFlow::SuccessorType t | node2 = node1.getASuccessor(t) and value = t.toString()) and node1.getEnclosingCallable().hasName("TestUsingDeclarations") } diff --git a/csharp/ql/test/library-tests/csharp8/ispatternflow.expected b/csharp/ql/test/library-tests/csharp8/ispatternflow.expected index f8d1de5d7e90..b64779405019 100644 --- a/csharp/ql/test/library-tests/csharp8/ispatternflow.expected +++ b/csharp/ql/test/library-tests/csharp8/ispatternflow.expected @@ -1,93 +1,144 @@ -| patterns.cs:5:10:5:19 | enter IsPatterns | patterns.cs:6:5:30:5 | {...} | semmle.label | successor | -| patterns.cs:5:10:5:19 | exit IsPatterns (normal) | patterns.cs:5:10:5:19 | exit IsPatterns | semmle.label | successor | +| patterns.cs:5:10:5:19 | Entry | patterns.cs:6:5:30:5 | {...} | semmle.label | successor | +| patterns.cs:5:10:5:19 | Normal Exit | patterns.cs:5:10:5:19 | Exit | semmle.label | successor | +| patterns.cs:6:5:30:5 | After {...} | patterns.cs:5:10:5:19 | Normal Exit | semmle.label | successor | | patterns.cs:6:5:30:5 | {...} | patterns.cs:7:9:7:42 | ... ...; | semmle.label | successor | -| patterns.cs:7:9:7:42 | ... ...; | patterns.cs:7:20:7:41 | object creation of type MyStruct | semmle.label | successor | -| patterns.cs:7:16:7:41 | Object o = ... | patterns.cs:9:9:11:9 | if (...) ... | semmle.label | successor | -| patterns.cs:7:20:7:41 | (...) ... | patterns.cs:7:16:7:41 | Object o = ... | semmle.label | successor | -| patterns.cs:7:20:7:41 | object creation of type MyStruct | patterns.cs:7:39:7:39 | 2 | semmle.label | successor | -| patterns.cs:7:33:7:41 | { ..., ... } | patterns.cs:7:20:7:41 | (...) ... | semmle.label | successor | -| patterns.cs:7:35:7:35 | access to field X | patterns.cs:7:35:7:39 | ... = ... | semmle.label | successor | -| patterns.cs:7:35:7:39 | ... = ... | patterns.cs:7:33:7:41 | { ..., ... } | semmle.label | successor | -| patterns.cs:7:39:7:39 | 2 | patterns.cs:7:35:7:35 | access to field X | semmle.label | successor | -| patterns.cs:9:9:11:9 | if (...) ... | patterns.cs:9:13:9:13 | access to local variable o | semmle.label | successor | -| patterns.cs:9:13:9:13 | access to local variable o | patterns.cs:9:18:9:29 | MyStruct ms1 | semmle.label | successor | -| patterns.cs:9:13:9:29 | [false] ... is ... | patterns.cs:13:9:15:9 | if (...) ... | semmle.label | false | -| patterns.cs:9:13:9:29 | [true] ... is ... | patterns.cs:10:9:11:9 | {...} | semmle.label | true | -| patterns.cs:9:18:9:29 | MyStruct ms1 | patterns.cs:9:13:9:29 | [false] ... is ... | semmle.label | no-match | -| patterns.cs:9:18:9:29 | MyStruct ms1 | patterns.cs:9:13:9:29 | [true] ... is ... | semmle.label | match | -| patterns.cs:10:9:11:9 | {...} | patterns.cs:13:9:15:9 | if (...) ... | semmle.label | successor | -| patterns.cs:13:9:15:9 | if (...) ... | patterns.cs:13:13:13:13 | access to local variable o | semmle.label | successor | -| patterns.cs:13:13:13:13 | access to local variable o | patterns.cs:13:18:13:40 | MyStruct s | semmle.label | successor | -| patterns.cs:13:13:13:40 | [false] ... is ... | patterns.cs:13:13:13:47 | [false] ... && ... | semmle.label | false | -| patterns.cs:13:13:13:40 | [true] ... is ... | patterns.cs:13:45:13:45 | access to local variable x | semmle.label | true | -| patterns.cs:13:13:13:47 | [false] ... && ... | patterns.cs:13:13:13:56 | [false] ... && ... | semmle.label | false | -| patterns.cs:13:13:13:47 | [true] ... && ... | patterns.cs:13:52:13:52 | access to local variable s | semmle.label | true | -| patterns.cs:13:13:13:56 | [false] ... && ... | patterns.cs:17:9:19:9 | if (...) ... | semmle.label | false | -| patterns.cs:13:13:13:56 | [true] ... && ... | patterns.cs:14:9:15:9 | {...} | semmle.label | true | -| patterns.cs:13:18:13:40 | MyStruct s | patterns.cs:13:18:13:40 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:13:18:13:40 | MyStruct s | patterns.cs:13:32:13:36 | Int32 x | semmle.label | match | -| patterns.cs:13:18:13:40 | [match] { ... } | patterns.cs:13:13:13:40 | [true] ... is ... | semmle.label | match | -| patterns.cs:13:18:13:40 | [no-match] { ... } | patterns.cs:13:13:13:40 | [false] ... is ... | semmle.label | no-match | -| patterns.cs:13:27:13:38 | [match] { ... } | patterns.cs:13:18:13:40 | [match] { ... } | semmle.label | match | -| patterns.cs:13:27:13:38 | [no-match] { ... } | patterns.cs:13:18:13:40 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:13:32:13:36 | Int32 x | patterns.cs:13:27:13:38 | [match] { ... } | semmle.label | match | -| patterns.cs:13:32:13:36 | Int32 x | patterns.cs:13:27:13:38 | [no-match] { ... } | semmle.label | no-match | +| patterns.cs:7:9:7:42 | ... ...; | patterns.cs:7:16:7:41 | Before Object o = ... | semmle.label | successor | +| patterns.cs:7:9:7:42 | After ... ...; | patterns.cs:9:9:11:9 | if (...) ... | semmle.label | successor | +| patterns.cs:7:16:7:16 | access to local variable o | patterns.cs:7:20:7:41 | Before (...) ... | semmle.label | successor | +| patterns.cs:7:16:7:41 | After Object o = ... | patterns.cs:7:9:7:42 | After ... ...; | semmle.label | successor | +| patterns.cs:7:16:7:41 | Before Object o = ... | patterns.cs:7:16:7:16 | access to local variable o | semmle.label | successor | +| patterns.cs:7:16:7:41 | Object o = ... | patterns.cs:7:16:7:41 | After Object o = ... | semmle.label | successor | +| patterns.cs:7:20:7:41 | (...) ... | patterns.cs:7:20:7:41 | After (...) ... | semmle.label | successor | +| patterns.cs:7:20:7:41 | After (...) ... | patterns.cs:7:16:7:41 | Object o = ... | semmle.label | successor | +| patterns.cs:7:20:7:41 | After object creation of type MyStruct | patterns.cs:7:20:7:41 | (...) ... | semmle.label | successor | +| patterns.cs:7:20:7:41 | Before (...) ... | patterns.cs:7:20:7:41 | Before object creation of type MyStruct | semmle.label | successor | +| patterns.cs:7:20:7:41 | Before object creation of type MyStruct | patterns.cs:7:20:7:41 | object creation of type MyStruct | semmle.label | successor | +| patterns.cs:7:20:7:41 | object creation of type MyStruct | patterns.cs:7:33:7:41 | Before { ..., ... } | semmle.label | successor | +| patterns.cs:7:33:7:41 | After { ..., ... } | patterns.cs:7:20:7:41 | After object creation of type MyStruct | semmle.label | successor | +| patterns.cs:7:33:7:41 | Before { ..., ... } | patterns.cs:7:35:7:39 | Before ... = ... | semmle.label | successor | +| patterns.cs:7:33:7:41 | { ..., ... } | patterns.cs:7:33:7:41 | After { ..., ... } | semmle.label | successor | +| patterns.cs:7:35:7:35 | access to field X | patterns.cs:7:39:7:39 | 2 | semmle.label | successor | +| patterns.cs:7:35:7:39 | ... = ... | patterns.cs:7:35:7:39 | After ... = ... | semmle.label | successor | +| patterns.cs:7:35:7:39 | After ... = ... | patterns.cs:7:33:7:41 | { ..., ... } | semmle.label | successor | +| patterns.cs:7:35:7:39 | Before ... = ... | patterns.cs:7:35:7:35 | access to field X | semmle.label | successor | +| patterns.cs:7:39:7:39 | 2 | patterns.cs:7:35:7:39 | ... = ... | semmle.label | successor | +| patterns.cs:9:9:11:9 | After if (...) ... | patterns.cs:13:9:15:9 | if (...) ... | semmle.label | successor | +| patterns.cs:9:9:11:9 | if (...) ... | patterns.cs:9:13:9:29 | Before ... is ... | semmle.label | successor | +| patterns.cs:9:13:9:13 | access to local variable o | patterns.cs:9:13:9:29 | ... is ... | semmle.label | successor | +| patterns.cs:9:13:9:29 | ... is ... | patterns.cs:9:13:9:29 | After ... is ... [false] | semmle.label | false | +| patterns.cs:9:13:9:29 | ... is ... | patterns.cs:9:13:9:29 | [MatchTrue] ... is ... | semmle.label | true | +| patterns.cs:9:13:9:29 | After ... is ... [false] | patterns.cs:9:9:11:9 | After if (...) ... | semmle.label | successor | +| patterns.cs:9:13:9:29 | After ... is ... [true] | patterns.cs:10:9:11:9 | {...} | semmle.label | successor | +| patterns.cs:9:13:9:29 | Before ... is ... | patterns.cs:9:13:9:13 | access to local variable o | semmle.label | successor | +| patterns.cs:9:13:9:29 | [MatchTrue] ... is ... | patterns.cs:9:18:9:29 | MyStruct ms1 | semmle.label | successor | +| patterns.cs:9:18:9:29 | MyStruct ms1 | patterns.cs:9:13:9:29 | After ... is ... [true] | semmle.label | true | +| patterns.cs:10:9:11:9 | {...} | patterns.cs:9:9:11:9 | After if (...) ... | semmle.label | successor | +| patterns.cs:13:9:15:9 | After if (...) ... | patterns.cs:17:9:19:9 | if (...) ... | semmle.label | successor | +| patterns.cs:13:9:15:9 | if (...) ... | patterns.cs:13:13:13:56 | ... && ... | semmle.label | successor | +| patterns.cs:13:13:13:13 | access to local variable o | patterns.cs:13:13:13:40 | ... is ... | semmle.label | successor | +| patterns.cs:13:13:13:40 | ... is ... | patterns.cs:13:13:13:40 | After ... is ... [false] | semmle.label | false | +| patterns.cs:13:13:13:40 | ... is ... | patterns.cs:13:13:13:40 | [MatchTrue] ... is ... | semmle.label | true | +| patterns.cs:13:13:13:40 | After ... is ... [false] | patterns.cs:13:13:13:47 | After ... && ... [false] | semmle.label | false | +| patterns.cs:13:13:13:40 | After ... is ... [true] | patterns.cs:13:45:13:47 | Before ... < ... | semmle.label | successor | +| patterns.cs:13:13:13:40 | Before ... is ... | patterns.cs:13:13:13:13 | access to local variable o | semmle.label | successor | +| patterns.cs:13:13:13:40 | [MatchTrue] ... is ... | patterns.cs:13:18:13:40 | Before { ... } | semmle.label | successor | +| patterns.cs:13:13:13:47 | ... && ... | patterns.cs:13:13:13:40 | Before ... is ... | semmle.label | successor | +| patterns.cs:13:13:13:47 | After ... && ... [false] | patterns.cs:13:13:13:56 | After ... && ... [false] | semmle.label | false | +| patterns.cs:13:13:13:47 | After ... && ... [true] | patterns.cs:13:52:13:56 | Before ... < ... | semmle.label | successor | +| patterns.cs:13:13:13:56 | ... && ... | patterns.cs:13:13:13:47 | ... && ... | semmle.label | successor | +| patterns.cs:13:13:13:56 | After ... && ... [false] | patterns.cs:13:9:15:9 | After if (...) ... | semmle.label | successor | +| patterns.cs:13:13:13:56 | After ... && ... [true] | patterns.cs:14:9:15:9 | {...} | semmle.label | successor | +| patterns.cs:13:18:13:25 | access to type MyStruct | patterns.cs:13:27:13:38 | Before { ... } | semmle.label | successor | +| patterns.cs:13:18:13:40 | After { ... } | patterns.cs:13:13:13:40 | After ... is ... [true] | semmle.label | true | +| patterns.cs:13:18:13:40 | Before { ... } | patterns.cs:13:18:13:40 | MyStruct s | semmle.label | successor | +| patterns.cs:13:18:13:40 | MyStruct s | patterns.cs:13:18:13:25 | access to type MyStruct | semmle.label | successor | +| patterns.cs:13:18:13:40 | { ... } | patterns.cs:13:18:13:40 | After { ... } | semmle.label | successor | +| patterns.cs:13:27:13:38 | After { ... } | patterns.cs:13:18:13:40 | { ... } | semmle.label | successor | +| patterns.cs:13:27:13:38 | Before { ... } | patterns.cs:13:32:13:36 | Int32 x | semmle.label | successor | +| patterns.cs:13:27:13:38 | { ... } | patterns.cs:13:27:13:38 | After { ... } | semmle.label | successor | +| patterns.cs:13:32:13:36 | Int32 x | patterns.cs:13:27:13:38 | { ... } | semmle.label | successor | | patterns.cs:13:45:13:45 | access to local variable x | patterns.cs:13:47:13:47 | 4 | semmle.label | successor | -| patterns.cs:13:45:13:47 | ... < ... | patterns.cs:13:13:13:47 | [false] ... && ... | semmle.label | false | -| patterns.cs:13:45:13:47 | ... < ... | patterns.cs:13:13:13:47 | [true] ... && ... | semmle.label | true | +| patterns.cs:13:45:13:47 | ... < ... | patterns.cs:13:45:13:47 | After ... < ... [false] | semmle.label | false | +| patterns.cs:13:45:13:47 | ... < ... | patterns.cs:13:45:13:47 | After ... < ... [true] | semmle.label | true | +| patterns.cs:13:45:13:47 | After ... < ... [false] | patterns.cs:13:13:13:47 | After ... && ... [false] | semmle.label | false | +| patterns.cs:13:45:13:47 | After ... < ... [true] | patterns.cs:13:13:13:47 | After ... && ... [true] | semmle.label | true | +| patterns.cs:13:45:13:47 | Before ... < ... | patterns.cs:13:45:13:45 | access to local variable x | semmle.label | successor | | patterns.cs:13:47:13:47 | 4 | patterns.cs:13:45:13:47 | ... < ... | semmle.label | successor | | patterns.cs:13:52:13:52 | access to local variable s | patterns.cs:13:52:13:54 | access to property Y | semmle.label | successor | -| patterns.cs:13:52:13:54 | access to property Y | patterns.cs:13:56:13:56 | 2 | semmle.label | successor | -| patterns.cs:13:52:13:56 | ... < ... | patterns.cs:13:13:13:56 | [false] ... && ... | semmle.label | false | -| patterns.cs:13:52:13:56 | ... < ... | patterns.cs:13:13:13:56 | [true] ... && ... | semmle.label | true | +| patterns.cs:13:52:13:54 | After access to property Y | patterns.cs:13:56:13:56 | 2 | semmle.label | successor | +| patterns.cs:13:52:13:54 | Before access to property Y | patterns.cs:13:52:13:52 | access to local variable s | semmle.label | successor | +| patterns.cs:13:52:13:54 | access to property Y | patterns.cs:13:52:13:54 | After access to property Y | semmle.label | successor | +| patterns.cs:13:52:13:56 | ... < ... | patterns.cs:13:52:13:56 | After ... < ... [false] | semmle.label | false | +| patterns.cs:13:52:13:56 | ... < ... | patterns.cs:13:52:13:56 | After ... < ... [true] | semmle.label | true | +| patterns.cs:13:52:13:56 | After ... < ... [false] | patterns.cs:13:13:13:56 | After ... && ... [false] | semmle.label | false | +| patterns.cs:13:52:13:56 | After ... < ... [true] | patterns.cs:13:13:13:56 | After ... && ... [true] | semmle.label | true | +| patterns.cs:13:52:13:56 | Before ... < ... | patterns.cs:13:52:13:54 | Before access to property Y | semmle.label | successor | | patterns.cs:13:56:13:56 | 2 | patterns.cs:13:52:13:56 | ... < ... | semmle.label | successor | -| patterns.cs:14:9:15:9 | {...} | patterns.cs:17:9:19:9 | if (...) ... | semmle.label | successor | -| patterns.cs:17:9:19:9 | if (...) ... | patterns.cs:17:13:17:13 | access to local variable o | semmle.label | successor | -| patterns.cs:17:13:17:13 | access to local variable o | patterns.cs:17:18:17:21 | Object p | semmle.label | successor | -| patterns.cs:17:13:17:21 | [false] ... is ... | patterns.cs:22:9:24:9 | if (...) ... | semmle.label | false | -| patterns.cs:17:13:17:21 | [true] ... is ... | patterns.cs:18:9:19:9 | {...} | semmle.label | true | -| patterns.cs:17:18:17:19 | { ... } | patterns.cs:17:18:17:21 | [match] { ... } | semmle.label | match | -| patterns.cs:17:18:17:19 | { ... } | patterns.cs:17:18:17:21 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:17:18:17:21 | Object p | patterns.cs:17:18:17:19 | { ... } | semmle.label | match | -| patterns.cs:17:18:17:21 | Object p | patterns.cs:17:18:17:21 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:17:18:17:21 | [match] { ... } | patterns.cs:17:13:17:21 | [true] ... is ... | semmle.label | match | -| patterns.cs:17:18:17:21 | [no-match] { ... } | patterns.cs:17:13:17:21 | [false] ... is ... | semmle.label | no-match | -| patterns.cs:18:9:19:9 | {...} | patterns.cs:22:9:24:9 | if (...) ... | semmle.label | successor | -| patterns.cs:22:9:24:9 | if (...) ... | patterns.cs:22:13:22:13 | access to local variable o | semmle.label | successor | -| patterns.cs:22:13:22:13 | access to local variable o | patterns.cs:22:18:22:25 | access to type MyStruct | semmle.label | successor | -| patterns.cs:22:13:22:53 | [false] ... is ... | patterns.cs:27:9:29:9 | if (...) ... | semmle.label | false | -| patterns.cs:22:13:22:53 | [true] ... is ... | patterns.cs:23:9:24:9 | {...} | semmle.label | true | -| patterns.cs:22:18:22:25 | access to type MyStruct | patterns.cs:22:18:22:53 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:22:18:22:25 | access to type MyStruct | patterns.cs:22:31:22:32 | 12 | semmle.label | match | -| patterns.cs:22:18:22:53 | [match] { ... } | patterns.cs:22:13:22:53 | [true] ... is ... | semmle.label | match | -| patterns.cs:22:18:22:53 | [no-match] { ... } | patterns.cs:22:13:22:53 | [false] ... is ... | semmle.label | no-match | -| patterns.cs:22:27:22:53 | [match] { ... } | patterns.cs:22:18:22:53 | [match] { ... } | semmle.label | match | -| patterns.cs:22:27:22:53 | [no-match] { ... } | patterns.cs:22:18:22:53 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:22:31:22:32 | 12 | patterns.cs:22:27:22:53 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:22:31:22:32 | 12 | patterns.cs:22:42:22:49 | Int32 subX | semmle.label | match | -| patterns.cs:22:38:22:51 | [match] { ... } | patterns.cs:22:27:22:53 | [match] { ... } | semmle.label | match | -| patterns.cs:22:38:22:51 | [match] { ... } | patterns.cs:22:38:22:51 | [match] { ... } | semmle.label | match | -| patterns.cs:22:38:22:51 | [no-match] { ... } | patterns.cs:22:27:22:53 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:22:38:22:51 | [no-match] { ... } | patterns.cs:22:38:22:51 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:22:42:22:49 | Int32 subX | patterns.cs:22:38:22:51 | [match] { ... } | semmle.label | match | -| patterns.cs:22:42:22:49 | Int32 subX | patterns.cs:22:38:22:51 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:23:9:24:9 | {...} | patterns.cs:27:9:29:9 | if (...) ... | semmle.label | successor | -| patterns.cs:27:9:29:9 | if (...) ... | patterns.cs:27:13:27:13 | access to local variable o | semmle.label | successor | -| patterns.cs:27:13:27:13 | access to local variable o | patterns.cs:27:18:27:25 | access to type MyStruct | semmle.label | successor | -| patterns.cs:27:13:27:58 | [false] ... is ... | patterns.cs:5:10:5:19 | exit IsPatterns (normal) | semmle.label | false | -| patterns.cs:27:13:27:58 | [true] ... is ... | patterns.cs:28:9:29:9 | {...} | semmle.label | true | -| patterns.cs:27:18:27:25 | access to type MyStruct | patterns.cs:27:18:27:58 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:27:18:27:25 | access to type MyStruct | patterns.cs:27:31:27:32 | 12 | semmle.label | match | -| patterns.cs:27:18:27:58 | [match] { ... } | patterns.cs:27:13:27:58 | [true] ... is ... | semmle.label | match | -| patterns.cs:27:18:27:58 | [no-match] { ... } | patterns.cs:27:13:27:58 | [false] ... is ... | semmle.label | no-match | -| patterns.cs:27:27:27:58 | [match] { ... } | patterns.cs:27:18:27:58 | [match] { ... } | semmle.label | match | -| patterns.cs:27:27:27:58 | [no-match] { ... } | patterns.cs:27:18:27:58 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:27:31:27:32 | 12 | patterns.cs:27:27:27:58 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:27:31:27:32 | 12 | patterns.cs:27:38:27:56 | MyStruct ms | semmle.label | match | -| patterns.cs:27:38:27:56 | MyStruct ms | patterns.cs:27:38:27:56 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:27:38:27:56 | MyStruct ms | patterns.cs:27:51:27:51 | _ | semmle.label | match | -| patterns.cs:27:38:27:56 | [match] { ... } | patterns.cs:27:27:27:58 | [match] { ... } | semmle.label | match | -| patterns.cs:27:38:27:56 | [no-match] { ... } | patterns.cs:27:27:27:58 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:27:47:27:53 | [match] { ... } | patterns.cs:27:38:27:56 | [match] { ... } | semmle.label | match | -| patterns.cs:27:51:27:51 | _ | patterns.cs:27:47:27:53 | [match] { ... } | semmle.label | match | -| patterns.cs:28:9:29:9 | {...} | patterns.cs:5:10:5:19 | exit IsPatterns (normal) | semmle.label | successor | +| patterns.cs:14:9:15:9 | {...} | patterns.cs:13:9:15:9 | After if (...) ... | semmle.label | successor | +| patterns.cs:17:9:19:9 | After if (...) ... | patterns.cs:22:9:24:9 | if (...) ... | semmle.label | successor | +| patterns.cs:17:9:19:9 | if (...) ... | patterns.cs:17:13:17:21 | Before ... is ... | semmle.label | successor | +| patterns.cs:17:13:17:13 | access to local variable o | patterns.cs:17:13:17:21 | ... is ... | semmle.label | successor | +| patterns.cs:17:13:17:21 | ... is ... | patterns.cs:17:13:17:21 | After ... is ... [false] | semmle.label | false | +| patterns.cs:17:13:17:21 | ... is ... | patterns.cs:17:13:17:21 | [MatchTrue] ... is ... | semmle.label | true | +| patterns.cs:17:13:17:21 | After ... is ... [false] | patterns.cs:17:9:19:9 | After if (...) ... | semmle.label | successor | +| patterns.cs:17:13:17:21 | After ... is ... [true] | patterns.cs:18:9:19:9 | {...} | semmle.label | successor | +| patterns.cs:17:13:17:21 | Before ... is ... | patterns.cs:17:13:17:13 | access to local variable o | semmle.label | successor | +| patterns.cs:17:13:17:21 | [MatchTrue] ... is ... | patterns.cs:17:18:17:21 | Before { ... } | semmle.label | successor | +| patterns.cs:17:18:17:19 | { ... } | patterns.cs:17:18:17:21 | { ... } | semmle.label | successor | +| patterns.cs:17:18:17:21 | After { ... } | patterns.cs:17:13:17:21 | After ... is ... [true] | semmle.label | true | +| patterns.cs:17:18:17:21 | Before { ... } | patterns.cs:17:18:17:21 | Object p | semmle.label | successor | +| patterns.cs:17:18:17:21 | Object p | patterns.cs:17:18:17:19 | { ... } | semmle.label | successor | +| patterns.cs:17:18:17:21 | { ... } | patterns.cs:17:18:17:21 | After { ... } | semmle.label | successor | +| patterns.cs:18:9:19:9 | {...} | patterns.cs:17:9:19:9 | After if (...) ... | semmle.label | successor | +| patterns.cs:22:9:24:9 | After if (...) ... | patterns.cs:27:9:29:9 | if (...) ... | semmle.label | successor | +| patterns.cs:22:9:24:9 | if (...) ... | patterns.cs:22:13:22:53 | Before ... is ... | semmle.label | successor | +| patterns.cs:22:13:22:13 | access to local variable o | patterns.cs:22:13:22:53 | ... is ... | semmle.label | successor | +| patterns.cs:22:13:22:53 | ... is ... | patterns.cs:22:13:22:53 | After ... is ... [false] | semmle.label | false | +| patterns.cs:22:13:22:53 | ... is ... | patterns.cs:22:13:22:53 | [MatchTrue] ... is ... | semmle.label | true | +| patterns.cs:22:13:22:53 | After ... is ... [false] | patterns.cs:22:9:24:9 | After if (...) ... | semmle.label | successor | +| patterns.cs:22:13:22:53 | After ... is ... [true] | patterns.cs:23:9:24:9 | {...} | semmle.label | successor | +| patterns.cs:22:13:22:53 | Before ... is ... | patterns.cs:22:13:22:13 | access to local variable o | semmle.label | successor | +| patterns.cs:22:13:22:53 | [MatchTrue] ... is ... | patterns.cs:22:18:22:53 | Before { ... } | semmle.label | successor | +| patterns.cs:22:18:22:25 | access to type MyStruct | patterns.cs:22:27:22:53 | Before { ... } | semmle.label | successor | +| patterns.cs:22:18:22:53 | After { ... } | patterns.cs:22:13:22:53 | After ... is ... [true] | semmle.label | true | +| patterns.cs:22:18:22:53 | Before { ... } | patterns.cs:22:18:22:25 | access to type MyStruct | semmle.label | successor | +| patterns.cs:22:18:22:53 | { ... } | patterns.cs:22:18:22:53 | After { ... } | semmle.label | successor | +| patterns.cs:22:27:22:53 | After { ... } | patterns.cs:22:18:22:53 | { ... } | semmle.label | successor | +| patterns.cs:22:27:22:53 | Before { ... } | patterns.cs:22:31:22:32 | 12 | semmle.label | successor | +| patterns.cs:22:27:22:53 | { ... } | patterns.cs:22:27:22:53 | After { ... } | semmle.label | successor | +| patterns.cs:22:31:22:32 | 12 | patterns.cs:22:38:22:51 | Before { ... } | semmle.label | successor | +| patterns.cs:22:38:22:51 | After { ... } | patterns.cs:22:27:22:53 | { ... } | semmle.label | successor | +| patterns.cs:22:38:22:51 | After { ... } | patterns.cs:22:38:22:51 | { ... } | semmle.label | successor | +| patterns.cs:22:38:22:51 | Before { ... } | patterns.cs:22:38:22:51 | Before { ... } | semmle.label | successor | +| patterns.cs:22:38:22:51 | Before { ... } | patterns.cs:22:42:22:49 | Int32 subX | semmle.label | successor | +| patterns.cs:22:38:22:51 | { ... } | patterns.cs:22:38:22:51 | After { ... } | semmle.label | successor | +| patterns.cs:22:38:22:51 | { ... } | patterns.cs:22:38:22:51 | After { ... } | semmle.label | successor | +| patterns.cs:22:42:22:49 | Int32 subX | patterns.cs:22:38:22:51 | { ... } | semmle.label | successor | +| patterns.cs:23:9:24:9 | {...} | patterns.cs:22:9:24:9 | After if (...) ... | semmle.label | successor | +| patterns.cs:27:9:29:9 | After if (...) ... | patterns.cs:6:5:30:5 | After {...} | semmle.label | successor | +| patterns.cs:27:9:29:9 | if (...) ... | patterns.cs:27:13:27:58 | Before ... is ... | semmle.label | successor | +| patterns.cs:27:13:27:13 | access to local variable o | patterns.cs:27:13:27:58 | ... is ... | semmle.label | successor | +| patterns.cs:27:13:27:58 | ... is ... | patterns.cs:27:13:27:58 | After ... is ... [false] | semmle.label | false | +| patterns.cs:27:13:27:58 | ... is ... | patterns.cs:27:13:27:58 | [MatchTrue] ... is ... | semmle.label | true | +| patterns.cs:27:13:27:58 | After ... is ... [false] | patterns.cs:27:9:29:9 | After if (...) ... | semmle.label | successor | +| patterns.cs:27:13:27:58 | After ... is ... [true] | patterns.cs:28:9:29:9 | {...} | semmle.label | successor | +| patterns.cs:27:13:27:58 | Before ... is ... | patterns.cs:27:13:27:13 | access to local variable o | semmle.label | successor | +| patterns.cs:27:13:27:58 | [MatchTrue] ... is ... | patterns.cs:27:18:27:58 | Before { ... } | semmle.label | successor | +| patterns.cs:27:18:27:25 | access to type MyStruct | patterns.cs:27:27:27:58 | Before { ... } | semmle.label | successor | +| patterns.cs:27:18:27:58 | After { ... } | patterns.cs:27:13:27:58 | After ... is ... [true] | semmle.label | true | +| patterns.cs:27:18:27:58 | Before { ... } | patterns.cs:27:18:27:25 | access to type MyStruct | semmle.label | successor | +| patterns.cs:27:18:27:58 | { ... } | patterns.cs:27:18:27:58 | After { ... } | semmle.label | successor | +| patterns.cs:27:27:27:58 | After { ... } | patterns.cs:27:18:27:58 | { ... } | semmle.label | successor | +| patterns.cs:27:27:27:58 | Before { ... } | patterns.cs:27:31:27:32 | 12 | semmle.label | successor | +| patterns.cs:27:27:27:58 | { ... } | patterns.cs:27:27:27:58 | After { ... } | semmle.label | successor | +| patterns.cs:27:31:27:32 | 12 | patterns.cs:27:38:27:56 | Before { ... } | semmle.label | successor | +| patterns.cs:27:38:27:45 | access to type MyStruct | patterns.cs:27:47:27:53 | Before { ... } | semmle.label | successor | +| patterns.cs:27:38:27:56 | After { ... } | patterns.cs:27:27:27:58 | { ... } | semmle.label | successor | +| patterns.cs:27:38:27:56 | Before { ... } | patterns.cs:27:38:27:56 | MyStruct ms | semmle.label | successor | +| patterns.cs:27:38:27:56 | MyStruct ms | patterns.cs:27:38:27:45 | access to type MyStruct | semmle.label | successor | +| patterns.cs:27:38:27:56 | { ... } | patterns.cs:27:38:27:56 | After { ... } | semmle.label | successor | +| patterns.cs:27:47:27:53 | After { ... } | patterns.cs:27:38:27:56 | { ... } | semmle.label | successor | +| patterns.cs:27:47:27:53 | Before { ... } | patterns.cs:27:51:27:51 | _ | semmle.label | successor | +| patterns.cs:27:47:27:53 | { ... } | patterns.cs:27:47:27:53 | After { ... } | semmle.label | successor | +| patterns.cs:27:51:27:51 | _ | patterns.cs:27:47:27:53 | { ... } | semmle.label | successor | +| patterns.cs:28:9:29:9 | {...} | patterns.cs:27:9:29:9 | After if (...) ... | semmle.label | successor | diff --git a/csharp/ql/test/library-tests/csharp8/ispatternflow.ql b/csharp/ql/test/library-tests/csharp8/ispatternflow.ql index 33f0095c8379..61b0562d5fa9 100644 --- a/csharp/ql/test/library-tests/csharp8/ispatternflow.ql +++ b/csharp/ql/test/library-tests/csharp8/ispatternflow.ql @@ -1,9 +1,9 @@ import csharp -query predicate edges(ControlFlow::Node a, ControlFlow::Node b, string label, string value) { +query predicate edges(ControlFlowNode a, ControlFlowNode b, string label, string value) { exists(ControlFlow::SuccessorType t | a.getEnclosingCallable().getName() = "IsPatterns" and - b = a.getASuccessorByType(t) and + b = a.getASuccessor(t) and label = "semmle.label" and value = t.toString() ) diff --git a/csharp/ql/test/library-tests/csharp8/switchexprcontrolflow.expected b/csharp/ql/test/library-tests/csharp8/switchexprcontrolflow.expected index c6ecf8bcfd98..4493882fa476 100644 --- a/csharp/ql/test/library-tests/csharp8/switchexprcontrolflow.expected +++ b/csharp/ql/test/library-tests/csharp8/switchexprcontrolflow.expected @@ -1,205 +1,351 @@ -| patterns.cs:98:10:98:20 | enter Expressions | patterns.cs:99:5:121:5 | {...} | semmle.label | successor | -| patterns.cs:98:10:98:20 | exit Expressions (abnormal) | patterns.cs:98:10:98:20 | exit Expressions | semmle.label | successor | -| patterns.cs:98:10:98:20 | exit Expressions (normal) | patterns.cs:98:10:98:20 | exit Expressions | semmle.label | successor | +| patterns.cs:98:10:98:20 | Entry | patterns.cs:98:26:98:26 | x | semmle.label | successor | +| patterns.cs:98:10:98:20 | Normal Exit | patterns.cs:98:10:98:20 | Exit | semmle.label | successor | +| patterns.cs:98:26:98:26 | x | patterns.cs:99:5:121:5 | {...} | semmle.label | successor | +| patterns.cs:99:5:121:5 | After {...} | patterns.cs:98:10:98:20 | Normal Exit | semmle.label | successor | | patterns.cs:99:5:121:5 | {...} | patterns.cs:100:9:103:10 | ... ...; | semmle.label | successor | -| patterns.cs:100:9:103:10 | ... ...; | patterns.cs:100:20:100:20 | access to parameter x | semmle.label | successor | -| patterns.cs:100:13:103:9 | String size = ... | patterns.cs:105:9:105:27 | ... ...; | semmle.label | successor | -| patterns.cs:100:20:100:20 | access to parameter x | patterns.cs:101:13:101:17 | Int32 y | semmle.label | successor | -| patterns.cs:100:20:103:9 | ... switch { ... } | patterns.cs:100:13:103:9 | String size = ... | semmle.label | successor | -| patterns.cs:101:13:101:17 | Int32 y | patterns.cs:101:24:101:24 | access to local variable y | semmle.label | match | -| patterns.cs:101:13:101:17 | Int32 y | patterns.cs:102:13:102:13 | _ | semmle.label | no-match | -| patterns.cs:101:13:101:40 | ... => ... | patterns.cs:100:20:103:9 | ... switch { ... } | semmle.label | successor | +| patterns.cs:100:9:103:10 | ... ...; | patterns.cs:100:13:103:9 | Before String size = ... | semmle.label | successor | +| patterns.cs:100:9:103:10 | After ... ...; | patterns.cs:105:9:105:27 | ... ...; | semmle.label | successor | +| patterns.cs:100:13:100:16 | access to local variable size | patterns.cs:100:20:103:9 | ... switch { ... } | semmle.label | successor | +| patterns.cs:100:13:103:9 | After String size = ... | patterns.cs:100:9:103:10 | After ... ...; | semmle.label | successor | +| patterns.cs:100:13:103:9 | Before String size = ... | patterns.cs:100:13:100:16 | access to local variable size | semmle.label | successor | +| patterns.cs:100:13:103:9 | String size = ... | patterns.cs:100:13:103:9 | After String size = ... | semmle.label | successor | +| patterns.cs:100:20:100:20 | access to parameter x | patterns.cs:101:13:101:40 | ... => ... | semmle.label | successor | +| patterns.cs:100:20:103:9 | ... switch { ... } | patterns.cs:100:20:100:20 | access to parameter x | semmle.label | successor | +| patterns.cs:100:20:103:9 | After ... switch { ... } | patterns.cs:100:13:103:9 | String size = ... | semmle.label | successor | +| patterns.cs:101:13:101:17 | After Int32 y [match] | patterns.cs:101:13:101:40 | After ... => ... [match] | semmle.label | match | +| patterns.cs:101:13:101:17 | After Int32 y [no-match] | patterns.cs:101:13:101:40 | After ... => ... [no-match] | semmle.label | no-match | +| patterns.cs:101:13:101:17 | Int32 y | patterns.cs:101:13:101:17 | After Int32 y [match] | semmle.label | match | +| patterns.cs:101:13:101:17 | Int32 y | patterns.cs:101:13:101:17 | After Int32 y [no-match] | semmle.label | no-match | +| patterns.cs:101:13:101:40 | ... => ... | patterns.cs:101:13:101:17 | Int32 y | semmle.label | successor | +| patterns.cs:101:13:101:40 | After ... => ... [match] | patterns.cs:101:24:101:29 | Before ... > ... | semmle.label | successor | +| patterns.cs:101:13:101:40 | After ... => ... [no-match] | patterns.cs:102:13:102:24 | ... => ... | semmle.label | successor | | patterns.cs:101:24:101:24 | access to local variable y | patterns.cs:101:28:101:29 | 10 | semmle.label | successor | -| patterns.cs:101:24:101:29 | ... > ... | patterns.cs:101:34:101:40 | "large" | semmle.label | true | -| patterns.cs:101:24:101:29 | ... > ... | patterns.cs:102:13:102:13 | _ | semmle.label | false | +| patterns.cs:101:24:101:29 | ... > ... | patterns.cs:101:24:101:29 | After ... > ... [false] | semmle.label | false | +| patterns.cs:101:24:101:29 | ... > ... | patterns.cs:101:24:101:29 | After ... > ... [true] | semmle.label | true | +| patterns.cs:101:24:101:29 | After ... > ... [false] | patterns.cs:102:13:102:24 | ... => ... | semmle.label | successor | +| patterns.cs:101:24:101:29 | After ... > ... [true] | patterns.cs:101:34:101:40 | "large" | semmle.label | successor | +| patterns.cs:101:24:101:29 | Before ... > ... | patterns.cs:101:24:101:24 | access to local variable y | semmle.label | successor | | patterns.cs:101:28:101:29 | 10 | patterns.cs:101:24:101:29 | ... > ... | semmle.label | successor | -| patterns.cs:101:34:101:40 | "large" | patterns.cs:101:13:101:40 | ... => ... | semmle.label | successor | -| patterns.cs:102:13:102:13 | _ | patterns.cs:102:18:102:24 | "small" | semmle.label | match | -| patterns.cs:102:13:102:24 | ... => ... | patterns.cs:100:20:103:9 | ... switch { ... } | semmle.label | successor | -| patterns.cs:102:18:102:24 | "small" | patterns.cs:102:13:102:24 | ... => ... | semmle.label | successor | -| patterns.cs:105:9:105:27 | ... ...; | patterns.cs:105:18:105:18 | 0 | semmle.label | successor | -| patterns.cs:105:13:105:18 | Int32 x0 = ... | patterns.cs:105:26:105:26 | 0 | semmle.label | successor | +| patterns.cs:101:34:101:40 | "large" | patterns.cs:100:20:103:9 | After ... switch { ... } | semmle.label | successor | +| patterns.cs:102:13:102:13 | After _ [match] | patterns.cs:102:13:102:24 | After ... => ... [match] | semmle.label | match | +| patterns.cs:102:13:102:13 | _ | patterns.cs:102:13:102:13 | After _ [match] | semmle.label | match | +| patterns.cs:102:13:102:24 | ... => ... | patterns.cs:102:13:102:13 | _ | semmle.label | successor | +| patterns.cs:102:13:102:24 | After ... => ... [match] | patterns.cs:102:18:102:24 | "small" | semmle.label | successor | +| patterns.cs:102:18:102:24 | "small" | patterns.cs:100:20:103:9 | After ... switch { ... } | semmle.label | successor | +| patterns.cs:105:9:105:27 | ... ...; | patterns.cs:105:13:105:18 | Before Int32 x0 = ... | semmle.label | successor | +| patterns.cs:105:9:105:27 | After ... ...; | patterns.cs:108:9:112:10 | ...; | semmle.label | successor | +| patterns.cs:105:13:105:14 | access to local variable x0 | patterns.cs:105:18:105:18 | 0 | semmle.label | successor | +| patterns.cs:105:13:105:18 | After Int32 x0 = ... | patterns.cs:105:21:105:26 | Before Int32 y0 = ... | semmle.label | successor | +| patterns.cs:105:13:105:18 | Before Int32 x0 = ... | patterns.cs:105:13:105:14 | access to local variable x0 | semmle.label | successor | +| patterns.cs:105:13:105:18 | Int32 x0 = ... | patterns.cs:105:13:105:18 | After Int32 x0 = ... | semmle.label | successor | | patterns.cs:105:18:105:18 | 0 | patterns.cs:105:13:105:18 | Int32 x0 = ... | semmle.label | successor | -| patterns.cs:105:21:105:26 | Int32 y0 = ... | patterns.cs:108:9:112:10 | ...; | semmle.label | successor | +| patterns.cs:105:21:105:22 | access to local variable y0 | patterns.cs:105:26:105:26 | 0 | semmle.label | successor | +| patterns.cs:105:21:105:26 | After Int32 y0 = ... | patterns.cs:105:9:105:27 | After ... ...; | semmle.label | successor | +| patterns.cs:105:21:105:26 | Before Int32 y0 = ... | patterns.cs:105:21:105:22 | access to local variable y0 | semmle.label | successor | +| patterns.cs:105:21:105:26 | Int32 y0 = ... | patterns.cs:105:21:105:26 | After Int32 y0 = ... | semmle.label | successor | | patterns.cs:105:26:105:26 | 0 | patterns.cs:105:21:105:26 | Int32 y0 = ... | semmle.label | successor | -| patterns.cs:108:9:108:20 | (..., ...) | patterns.cs:108:25:108:26 | access to local variable x0 | semmle.label | successor | -| patterns.cs:108:9:112:9 | ... = ... | patterns.cs:115:9:120:10 | ...; | semmle.label | successor | -| patterns.cs:108:9:112:10 | ...; | patterns.cs:108:14:108:15 | Int32 x1 | semmle.label | successor | +| patterns.cs:108:9:108:20 | (..., ...) | patterns.cs:108:9:108:20 | After (..., ...) | semmle.label | successor | +| patterns.cs:108:9:108:20 | After (..., ...) | patterns.cs:108:24:112:9 | ... switch { ... } | semmle.label | successor | +| patterns.cs:108:9:108:20 | Before (..., ...) | patterns.cs:108:14:108:15 | Int32 x1 | semmle.label | successor | +| patterns.cs:108:9:112:9 | ... = ... | patterns.cs:108:9:112:9 | After ... = ... | semmle.label | successor | +| patterns.cs:108:9:112:9 | After ... = ... | patterns.cs:108:9:112:10 | After ...; | semmle.label | successor | +| patterns.cs:108:9:112:9 | Before ... = ... | patterns.cs:108:9:108:20 | Before (..., ...) | semmle.label | successor | +| patterns.cs:108:9:112:10 | ...; | patterns.cs:108:9:112:9 | Before ... = ... | semmle.label | successor | +| patterns.cs:108:9:112:10 | After ...; | patterns.cs:115:9:120:10 | ...; | semmle.label | successor | | patterns.cs:108:14:108:15 | Int32 x1 | patterns.cs:108:18:108:19 | Int32 y1 | semmle.label | successor | | patterns.cs:108:18:108:19 | Int32 y1 | patterns.cs:108:9:108:20 | (..., ...) | semmle.label | successor | -| patterns.cs:108:24:108:31 | (..., ...) | patterns.cs:110:13:110:17 | ( ... ) | semmle.label | successor | -| patterns.cs:108:24:112:9 | ... switch { ... } | patterns.cs:108:9:112:9 | ... = ... | semmle.label | successor | +| patterns.cs:108:24:108:31 | (..., ...) | patterns.cs:108:24:108:31 | After (..., ...) | semmle.label | successor | +| patterns.cs:108:24:108:31 | After (..., ...) | patterns.cs:110:13:110:26 | ... => ... | semmle.label | successor | +| patterns.cs:108:24:108:31 | Before (..., ...) | patterns.cs:108:25:108:26 | access to local variable x0 | semmle.label | successor | +| patterns.cs:108:24:112:9 | ... switch { ... } | patterns.cs:108:24:108:31 | Before (..., ...) | semmle.label | successor | +| patterns.cs:108:24:112:9 | After ... switch { ... } | patterns.cs:108:9:112:9 | ... = ... | semmle.label | successor | | patterns.cs:108:25:108:26 | access to local variable x0 | patterns.cs:108:29:108:30 | access to local variable y0 | semmle.label | successor | | patterns.cs:108:29:108:30 | access to local variable y0 | patterns.cs:108:24:108:31 | (..., ...) | semmle.label | successor | -| patterns.cs:110:13:110:17 | ( ... ) | patterns.cs:110:13:110:17 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:110:13:110:17 | ( ... ) | patterns.cs:110:14:110:14 | 0 | semmle.label | match | -| patterns.cs:110:13:110:17 | [match] { ... } | patterns.cs:110:23:110:23 | 1 | semmle.label | match | -| patterns.cs:110:13:110:17 | [no-match] { ... } | patterns.cs:111:13:111:17 | ( ... ) | semmle.label | no-match | -| patterns.cs:110:13:110:26 | ... => ... | patterns.cs:108:24:112:9 | ... switch { ... } | semmle.label | successor | -| patterns.cs:110:14:110:14 | 0 | patterns.cs:110:13:110:17 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:110:14:110:14 | 0 | patterns.cs:110:16:110:16 | 1 | semmle.label | match | -| patterns.cs:110:16:110:16 | 1 | patterns.cs:110:13:110:17 | [match] { ... } | semmle.label | match | -| patterns.cs:110:16:110:16 | 1 | patterns.cs:110:13:110:17 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:110:22:110:26 | (..., ...) | patterns.cs:110:13:110:26 | ... => ... | semmle.label | successor | +| patterns.cs:110:13:110:17 | ( ... ) | patterns.cs:110:13:110:17 | After ( ... ) | semmle.label | successor | +| patterns.cs:110:13:110:17 | After ( ... ) | patterns.cs:110:13:110:17 | { ... } | semmle.label | successor | +| patterns.cs:110:13:110:17 | After { ... } [match] | patterns.cs:110:13:110:26 | After ... => ... [match] | semmle.label | match | +| patterns.cs:110:13:110:17 | After { ... } [no-match] | patterns.cs:110:13:110:26 | After ... => ... [no-match] | semmle.label | no-match | +| patterns.cs:110:13:110:17 | Before ( ... ) | patterns.cs:110:14:110:14 | 0 | semmle.label | successor | +| patterns.cs:110:13:110:17 | Before { ... } | patterns.cs:110:13:110:17 | Before ( ... ) | semmle.label | successor | +| patterns.cs:110:13:110:17 | { ... } | patterns.cs:110:13:110:17 | After { ... } [match] | semmle.label | match | +| patterns.cs:110:13:110:17 | { ... } | patterns.cs:110:13:110:17 | After { ... } [no-match] | semmle.label | no-match | +| patterns.cs:110:13:110:26 | ... => ... | patterns.cs:110:13:110:17 | Before { ... } | semmle.label | successor | +| patterns.cs:110:13:110:26 | After ... => ... [match] | patterns.cs:110:22:110:26 | Before (..., ...) | semmle.label | successor | +| patterns.cs:110:13:110:26 | After ... => ... [no-match] | patterns.cs:111:13:111:26 | ... => ... | semmle.label | successor | +| patterns.cs:110:14:110:14 | 0 | patterns.cs:110:16:110:16 | 1 | semmle.label | successor | +| patterns.cs:110:16:110:16 | 1 | patterns.cs:110:13:110:17 | ( ... ) | semmle.label | successor | +| patterns.cs:110:22:110:26 | (..., ...) | patterns.cs:110:22:110:26 | After (..., ...) | semmle.label | successor | +| patterns.cs:110:22:110:26 | After (..., ...) | patterns.cs:108:24:112:9 | After ... switch { ... } | semmle.label | successor | +| patterns.cs:110:22:110:26 | Before (..., ...) | patterns.cs:110:23:110:23 | 1 | semmle.label | successor | | patterns.cs:110:23:110:23 | 1 | patterns.cs:110:25:110:25 | 0 | semmle.label | successor | | patterns.cs:110:25:110:25 | 0 | patterns.cs:110:22:110:26 | (..., ...) | semmle.label | successor | -| patterns.cs:111:13:111:17 | ( ... ) | patterns.cs:111:13:111:17 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:111:13:111:17 | ( ... ) | patterns.cs:111:14:111:14 | 1 | semmle.label | match | -| patterns.cs:111:13:111:17 | [match] { ... } | patterns.cs:98:10:98:20 | exit Expressions (abnormal) | semmle.label | exception | -| patterns.cs:111:13:111:17 | [match] { ... } | patterns.cs:111:23:111:23 | 0 | semmle.label | match | -| patterns.cs:111:13:111:17 | [no-match] { ... } | patterns.cs:98:10:98:20 | exit Expressions (abnormal) | semmle.label | exception | -| patterns.cs:111:13:111:26 | ... => ... | patterns.cs:108:24:112:9 | ... switch { ... } | semmle.label | successor | -| patterns.cs:111:14:111:14 | 1 | patterns.cs:111:13:111:17 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:111:14:111:14 | 1 | patterns.cs:111:16:111:16 | 0 | semmle.label | match | -| patterns.cs:111:16:111:16 | 0 | patterns.cs:111:13:111:17 | [match] { ... } | semmle.label | match | -| patterns.cs:111:16:111:16 | 0 | patterns.cs:111:13:111:17 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:111:22:111:26 | (..., ...) | patterns.cs:111:13:111:26 | ... => ... | semmle.label | successor | +| patterns.cs:111:13:111:17 | ( ... ) | patterns.cs:111:13:111:17 | After ( ... ) | semmle.label | successor | +| patterns.cs:111:13:111:17 | After ( ... ) | patterns.cs:111:13:111:17 | { ... } | semmle.label | successor | +| patterns.cs:111:13:111:17 | After { ... } [match] | patterns.cs:111:13:111:26 | After ... => ... [match] | semmle.label | match | +| patterns.cs:111:13:111:17 | After { ... } [no-match] | patterns.cs:111:13:111:26 | After ... => ... [no-match] | semmle.label | no-match | +| patterns.cs:111:13:111:17 | Before ( ... ) | patterns.cs:111:14:111:14 | 1 | semmle.label | successor | +| patterns.cs:111:13:111:17 | Before { ... } | patterns.cs:111:13:111:17 | Before ( ... ) | semmle.label | successor | +| patterns.cs:111:13:111:17 | { ... } | patterns.cs:111:13:111:17 | After { ... } [match] | semmle.label | match | +| patterns.cs:111:13:111:17 | { ... } | patterns.cs:111:13:111:17 | After { ... } [no-match] | semmle.label | no-match | +| patterns.cs:111:13:111:26 | ... => ... | patterns.cs:111:13:111:17 | Before { ... } | semmle.label | successor | +| patterns.cs:111:13:111:26 | After ... => ... [match] | patterns.cs:111:22:111:26 | Before (..., ...) | semmle.label | successor | +| patterns.cs:111:13:111:26 | After ... => ... [no-match] | patterns.cs:108:24:112:9 | After ... switch { ... } | semmle.label | successor | +| patterns.cs:111:14:111:14 | 1 | patterns.cs:111:16:111:16 | 0 | semmle.label | successor | +| patterns.cs:111:16:111:16 | 0 | patterns.cs:111:13:111:17 | ( ... ) | semmle.label | successor | +| patterns.cs:111:22:111:26 | (..., ...) | patterns.cs:111:22:111:26 | After (..., ...) | semmle.label | successor | +| patterns.cs:111:22:111:26 | After (..., ...) | patterns.cs:108:24:112:9 | After ... switch { ... } | semmle.label | successor | +| patterns.cs:111:22:111:26 | Before (..., ...) | patterns.cs:111:23:111:23 | 0 | semmle.label | successor | | patterns.cs:111:23:111:23 | 0 | patterns.cs:111:25:111:25 | 1 | semmle.label | successor | | patterns.cs:111:25:111:25 | 1 | patterns.cs:111:22:111:26 | (..., ...) | semmle.label | successor | -| patterns.cs:115:9:115:16 | (..., ...) | patterns.cs:115:21:115:22 | access to local variable x0 | semmle.label | successor | -| patterns.cs:115:9:120:9 | ... = ... | patterns.cs:98:10:98:20 | exit Expressions (normal) | semmle.label | successor | -| patterns.cs:115:9:120:10 | ...; | patterns.cs:115:9:115:16 | (..., ...) | semmle.label | successor | -| patterns.cs:115:20:115:27 | (..., ...) | patterns.cs:117:13:117:22 | ( ... ) | semmle.label | successor | -| patterns.cs:115:20:120:9 | ... switch { ... } | patterns.cs:115:9:120:9 | ... = ... | semmle.label | successor | +| patterns.cs:115:9:115:16 | (..., ...) | patterns.cs:115:9:115:16 | After (..., ...) | semmle.label | successor | +| patterns.cs:115:9:115:16 | After (..., ...) | patterns.cs:115:20:120:9 | ... switch { ... } | semmle.label | successor | +| patterns.cs:115:9:115:16 | Before (..., ...) | patterns.cs:115:10:115:11 | access to local variable x1 | semmle.label | successor | +| patterns.cs:115:9:120:9 | ... = ... | patterns.cs:115:9:120:9 | After ... = ... | semmle.label | successor | +| patterns.cs:115:9:120:9 | After ... = ... | patterns.cs:115:9:120:10 | After ...; | semmle.label | successor | +| patterns.cs:115:9:120:9 | Before ... = ... | patterns.cs:115:9:115:16 | Before (..., ...) | semmle.label | successor | +| patterns.cs:115:9:120:10 | ...; | patterns.cs:115:9:120:9 | Before ... = ... | semmle.label | successor | +| patterns.cs:115:9:120:10 | After ...; | patterns.cs:99:5:121:5 | After {...} | semmle.label | successor | +| patterns.cs:115:10:115:11 | access to local variable x1 | patterns.cs:115:14:115:15 | access to local variable y1 | semmle.label | successor | +| patterns.cs:115:14:115:15 | access to local variable y1 | patterns.cs:115:9:115:16 | (..., ...) | semmle.label | successor | +| patterns.cs:115:20:115:27 | (..., ...) | patterns.cs:115:20:115:27 | After (..., ...) | semmle.label | successor | +| patterns.cs:115:20:115:27 | After (..., ...) | patterns.cs:117:13:117:33 | ... => ... | semmle.label | successor | +| patterns.cs:115:20:115:27 | Before (..., ...) | patterns.cs:115:21:115:22 | access to local variable x0 | semmle.label | successor | +| patterns.cs:115:20:120:9 | ... switch { ... } | patterns.cs:115:20:115:27 | Before (..., ...) | semmle.label | successor | +| patterns.cs:115:20:120:9 | After ... switch { ... } | patterns.cs:115:9:120:9 | ... = ... | semmle.label | successor | | patterns.cs:115:21:115:22 | access to local variable x0 | patterns.cs:115:25:115:26 | access to local variable y0 | semmle.label | successor | | patterns.cs:115:25:115:26 | access to local variable y0 | patterns.cs:115:20:115:27 | (..., ...) | semmle.label | successor | -| patterns.cs:117:13:117:22 | ( ... ) | patterns.cs:117:13:117:22 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:117:13:117:22 | ( ... ) | patterns.cs:117:14:117:14 | 0 | semmle.label | match | -| patterns.cs:117:13:117:22 | [match] { ... } | patterns.cs:117:28:117:29 | access to local variable y2 | semmle.label | match | -| patterns.cs:117:13:117:22 | [no-match] { ... } | patterns.cs:118:13:118:23 | ( ... ) | semmle.label | no-match | -| patterns.cs:117:13:117:33 | ... => ... | patterns.cs:115:20:120:9 | ... switch { ... } | semmle.label | successor | -| patterns.cs:117:14:117:14 | 0 | patterns.cs:117:13:117:22 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:117:14:117:14 | 0 | patterns.cs:117:16:117:21 | Int32 y2 | semmle.label | match | -| patterns.cs:117:16:117:21 | Int32 y2 | patterns.cs:117:13:117:22 | [match] { ... } | semmle.label | match | -| patterns.cs:117:16:117:21 | Int32 y2 | patterns.cs:117:13:117:22 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:117:27:117:33 | (..., ...) | patterns.cs:117:13:117:33 | ... => ... | semmle.label | successor | +| patterns.cs:117:13:117:22 | ( ... ) | patterns.cs:117:13:117:22 | After ( ... ) | semmle.label | successor | +| patterns.cs:117:13:117:22 | After ( ... ) | patterns.cs:117:13:117:22 | { ... } | semmle.label | successor | +| patterns.cs:117:13:117:22 | After { ... } [match] | patterns.cs:117:13:117:33 | After ... => ... [match] | semmle.label | match | +| patterns.cs:117:13:117:22 | After { ... } [no-match] | patterns.cs:117:13:117:33 | After ... => ... [no-match] | semmle.label | no-match | +| patterns.cs:117:13:117:22 | Before ( ... ) | patterns.cs:117:14:117:14 | 0 | semmle.label | successor | +| patterns.cs:117:13:117:22 | Before { ... } | patterns.cs:117:13:117:22 | Before ( ... ) | semmle.label | successor | +| patterns.cs:117:13:117:22 | { ... } | patterns.cs:117:13:117:22 | After { ... } [match] | semmle.label | match | +| patterns.cs:117:13:117:22 | { ... } | patterns.cs:117:13:117:22 | After { ... } [no-match] | semmle.label | no-match | +| patterns.cs:117:13:117:33 | ... => ... | patterns.cs:117:13:117:22 | Before { ... } | semmle.label | successor | +| patterns.cs:117:13:117:33 | After ... => ... [match] | patterns.cs:117:27:117:33 | Before (..., ...) | semmle.label | successor | +| patterns.cs:117:13:117:33 | After ... => ... [no-match] | patterns.cs:118:13:118:34 | ... => ... | semmle.label | successor | +| patterns.cs:117:14:117:14 | 0 | patterns.cs:117:16:117:21 | Int32 y2 | semmle.label | successor | +| patterns.cs:117:16:117:21 | Int32 y2 | patterns.cs:117:13:117:22 | ( ... ) | semmle.label | successor | +| patterns.cs:117:27:117:33 | (..., ...) | patterns.cs:117:27:117:33 | After (..., ...) | semmle.label | successor | +| patterns.cs:117:27:117:33 | After (..., ...) | patterns.cs:115:20:120:9 | After ... switch { ... } | semmle.label | successor | +| patterns.cs:117:27:117:33 | Before (..., ...) | patterns.cs:117:28:117:29 | access to local variable y2 | semmle.label | successor | | patterns.cs:117:28:117:29 | access to local variable y2 | patterns.cs:117:32:117:32 | 0 | semmle.label | successor | | patterns.cs:117:32:117:32 | 0 | patterns.cs:117:27:117:33 | (..., ...) | semmle.label | successor | -| patterns.cs:118:13:118:23 | ( ... ) | patterns.cs:118:13:118:23 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:118:13:118:23 | ( ... ) | patterns.cs:118:14:118:19 | Int32 x2 | semmle.label | match | -| patterns.cs:118:13:118:23 | [match] { ... } | patterns.cs:118:29:118:29 | 0 | semmle.label | match | -| patterns.cs:118:13:118:23 | [no-match] { ... } | patterns.cs:119:13:119:28 | ( ... ) | semmle.label | no-match | -| patterns.cs:118:13:118:34 | ... => ... | patterns.cs:115:20:120:9 | ... switch { ... } | semmle.label | successor | -| patterns.cs:118:14:118:19 | Int32 x2 | patterns.cs:118:13:118:23 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:118:14:118:19 | Int32 x2 | patterns.cs:118:22:118:22 | 0 | semmle.label | match | -| patterns.cs:118:22:118:22 | 0 | patterns.cs:118:13:118:23 | [match] { ... } | semmle.label | match | -| patterns.cs:118:22:118:22 | 0 | patterns.cs:118:13:118:23 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:118:28:118:34 | (..., ...) | patterns.cs:118:13:118:34 | ... => ... | semmle.label | successor | +| patterns.cs:118:13:118:23 | ( ... ) | patterns.cs:118:13:118:23 | After ( ... ) | semmle.label | successor | +| patterns.cs:118:13:118:23 | After ( ... ) | patterns.cs:118:13:118:23 | { ... } | semmle.label | successor | +| patterns.cs:118:13:118:23 | After { ... } [match] | patterns.cs:118:13:118:34 | After ... => ... [match] | semmle.label | match | +| patterns.cs:118:13:118:23 | After { ... } [no-match] | patterns.cs:118:13:118:34 | After ... => ... [no-match] | semmle.label | no-match | +| patterns.cs:118:13:118:23 | Before ( ... ) | patterns.cs:118:14:118:19 | Int32 x2 | semmle.label | successor | +| patterns.cs:118:13:118:23 | Before { ... } | patterns.cs:118:13:118:23 | Before ( ... ) | semmle.label | successor | +| patterns.cs:118:13:118:23 | { ... } | patterns.cs:118:13:118:23 | After { ... } [match] | semmle.label | match | +| patterns.cs:118:13:118:23 | { ... } | patterns.cs:118:13:118:23 | After { ... } [no-match] | semmle.label | no-match | +| patterns.cs:118:13:118:34 | ... => ... | patterns.cs:118:13:118:23 | Before { ... } | semmle.label | successor | +| patterns.cs:118:13:118:34 | After ... => ... [match] | patterns.cs:118:28:118:34 | Before (..., ...) | semmle.label | successor | +| patterns.cs:118:13:118:34 | After ... => ... [no-match] | patterns.cs:119:13:119:38 | ... => ... | semmle.label | successor | +| patterns.cs:118:14:118:19 | Int32 x2 | patterns.cs:118:22:118:22 | 0 | semmle.label | successor | +| patterns.cs:118:22:118:22 | 0 | patterns.cs:118:13:118:23 | ( ... ) | semmle.label | successor | +| patterns.cs:118:28:118:34 | (..., ...) | patterns.cs:118:28:118:34 | After (..., ...) | semmle.label | successor | +| patterns.cs:118:28:118:34 | After (..., ...) | patterns.cs:115:20:120:9 | After ... switch { ... } | semmle.label | successor | +| patterns.cs:118:28:118:34 | Before (..., ...) | patterns.cs:118:29:118:29 | 0 | semmle.label | successor | | patterns.cs:118:29:118:29 | 0 | patterns.cs:118:32:118:33 | access to local variable x2 | semmle.label | successor | | patterns.cs:118:32:118:33 | access to local variable x2 | patterns.cs:118:28:118:34 | (..., ...) | semmle.label | successor | -| patterns.cs:119:13:119:28 | ( ... ) | patterns.cs:119:13:119:28 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:119:13:119:28 | ( ... ) | patterns.cs:119:14:119:19 | Int32 x2 | semmle.label | match | -| patterns.cs:119:13:119:28 | [match] { ... } | patterns.cs:98:10:98:20 | exit Expressions (abnormal) | semmle.label | exception | -| patterns.cs:119:13:119:28 | [match] { ... } | patterns.cs:119:34:119:34 | 0 | semmle.label | match | -| patterns.cs:119:13:119:28 | [no-match] { ... } | patterns.cs:98:10:98:20 | exit Expressions (abnormal) | semmle.label | exception | -| patterns.cs:119:13:119:38 | ... => ... | patterns.cs:115:20:120:9 | ... switch { ... } | semmle.label | successor | -| patterns.cs:119:14:119:19 | Int32 x2 | patterns.cs:119:13:119:28 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:119:14:119:19 | Int32 x2 | patterns.cs:119:22:119:27 | Int32 y2 | semmle.label | match | -| patterns.cs:119:22:119:27 | Int32 y2 | patterns.cs:119:13:119:28 | [match] { ... } | semmle.label | match | -| patterns.cs:119:22:119:27 | Int32 y2 | patterns.cs:119:13:119:28 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:119:33:119:38 | (..., ...) | patterns.cs:119:13:119:38 | ... => ... | semmle.label | successor | +| patterns.cs:119:13:119:28 | ( ... ) | patterns.cs:119:13:119:28 | After ( ... ) | semmle.label | successor | +| patterns.cs:119:13:119:28 | After ( ... ) | patterns.cs:119:13:119:28 | { ... } | semmle.label | successor | +| patterns.cs:119:13:119:28 | After { ... } [match] | patterns.cs:119:13:119:38 | After ... => ... [match] | semmle.label | match | +| patterns.cs:119:13:119:28 | After { ... } [no-match] | patterns.cs:119:13:119:38 | After ... => ... [no-match] | semmle.label | no-match | +| patterns.cs:119:13:119:28 | Before ( ... ) | patterns.cs:119:14:119:19 | Int32 x2 | semmle.label | successor | +| patterns.cs:119:13:119:28 | Before { ... } | patterns.cs:119:13:119:28 | Before ( ... ) | semmle.label | successor | +| patterns.cs:119:13:119:28 | { ... } | patterns.cs:119:13:119:28 | After { ... } [match] | semmle.label | match | +| patterns.cs:119:13:119:28 | { ... } | patterns.cs:119:13:119:28 | After { ... } [no-match] | semmle.label | no-match | +| patterns.cs:119:13:119:38 | ... => ... | patterns.cs:119:13:119:28 | Before { ... } | semmle.label | successor | +| patterns.cs:119:13:119:38 | After ... => ... [match] | patterns.cs:119:33:119:38 | Before (..., ...) | semmle.label | successor | +| patterns.cs:119:13:119:38 | After ... => ... [no-match] | patterns.cs:115:20:120:9 | After ... switch { ... } | semmle.label | successor | +| patterns.cs:119:14:119:19 | Int32 x2 | patterns.cs:119:22:119:27 | Int32 y2 | semmle.label | successor | +| patterns.cs:119:22:119:27 | Int32 y2 | patterns.cs:119:13:119:28 | ( ... ) | semmle.label | successor | +| patterns.cs:119:33:119:38 | (..., ...) | patterns.cs:119:33:119:38 | After (..., ...) | semmle.label | successor | +| patterns.cs:119:33:119:38 | After (..., ...) | patterns.cs:115:20:120:9 | After ... switch { ... } | semmle.label | successor | +| patterns.cs:119:33:119:38 | Before (..., ...) | patterns.cs:119:34:119:34 | 0 | semmle.label | successor | | patterns.cs:119:34:119:34 | 0 | patterns.cs:119:37:119:37 | 0 | semmle.label | successor | | patterns.cs:119:37:119:37 | 0 | patterns.cs:119:33:119:38 | (..., ...) | semmle.label | successor | -| patterns.cs:123:10:123:21 | enter Expressions2 | patterns.cs:124:5:149:5 | {...} | semmle.label | successor | -| patterns.cs:123:10:123:21 | exit Expressions2 (abnormal) | patterns.cs:123:10:123:21 | exit Expressions2 | semmle.label | successor | -| patterns.cs:123:10:123:21 | exit Expressions2 (normal) | patterns.cs:123:10:123:21 | exit Expressions2 | semmle.label | successor | +| patterns.cs:123:10:123:21 | Entry | patterns.cs:123:30:123:30 | o | semmle.label | successor | +| patterns.cs:123:10:123:21 | Exceptional Exit | patterns.cs:123:10:123:21 | Exit | semmle.label | successor | +| patterns.cs:123:10:123:21 | Normal Exit | patterns.cs:123:10:123:21 | Exit | semmle.label | successor | +| patterns.cs:123:30:123:30 | o | patterns.cs:124:5:149:5 | {...} | semmle.label | successor | +| patterns.cs:124:5:149:5 | After {...} | patterns.cs:123:10:123:21 | Normal Exit | semmle.label | successor | | patterns.cs:124:5:149:5 | {...} | patterns.cs:125:9:125:39 | ... ...; | semmle.label | successor | -| patterns.cs:125:9:125:39 | ... ...; | patterns.cs:125:17:125:38 | object creation of type MyStruct | semmle.label | successor | -| patterns.cs:125:13:125:38 | MyStruct s = ... | patterns.cs:126:9:132:10 | ... ...; | semmle.label | successor | -| patterns.cs:125:17:125:38 | object creation of type MyStruct | patterns.cs:125:36:125:36 | 0 | semmle.label | successor | -| patterns.cs:125:30:125:38 | { ..., ... } | patterns.cs:125:13:125:38 | MyStruct s = ... | semmle.label | successor | -| patterns.cs:125:32:125:32 | access to field X | patterns.cs:125:32:125:36 | ... = ... | semmle.label | successor | -| patterns.cs:125:32:125:36 | ... = ... | patterns.cs:125:30:125:38 | { ..., ... } | semmle.label | successor | -| patterns.cs:125:36:125:36 | 0 | patterns.cs:125:32:125:32 | access to field X | semmle.label | successor | -| patterns.cs:126:9:132:10 | ... ...; | patterns.cs:126:17:126:17 | access to local variable s | semmle.label | successor | -| patterns.cs:126:13:132:9 | Int32 r = ... | patterns.cs:134:9:148:9 | try {...} ... | semmle.label | successor | -| patterns.cs:126:17:126:17 | access to local variable s | patterns.cs:128:13:128:20 | access to type MyStruct | semmle.label | successor | -| patterns.cs:126:17:132:9 | ... switch { ... } | patterns.cs:126:13:132:9 | Int32 r = ... | semmle.label | successor | -| patterns.cs:128:13:128:20 | access to type MyStruct | patterns.cs:128:13:128:33 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:128:13:128:20 | access to type MyStruct | patterns.cs:128:27:128:31 | Int32 x | semmle.label | match | -| patterns.cs:128:13:128:33 | [match] { ... } | patterns.cs:128:40:128:40 | access to local variable x | semmle.label | match | -| patterns.cs:128:13:128:33 | [no-match] { ... } | patterns.cs:129:13:129:33 | MyStruct ms | semmle.label | no-match | -| patterns.cs:128:13:128:49 | ... => ... | patterns.cs:126:17:132:9 | ... switch { ... } | semmle.label | successor | -| patterns.cs:128:22:128:33 | [match] { ... } | patterns.cs:128:13:128:33 | [match] { ... } | semmle.label | match | -| patterns.cs:128:22:128:33 | [no-match] { ... } | patterns.cs:128:13:128:33 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:128:27:128:31 | Int32 x | patterns.cs:128:22:128:33 | [match] { ... } | semmle.label | match | -| patterns.cs:128:27:128:31 | Int32 x | patterns.cs:128:22:128:33 | [no-match] { ... } | semmle.label | no-match | +| patterns.cs:125:9:125:39 | ... ...; | patterns.cs:125:13:125:38 | Before MyStruct s = ... | semmle.label | successor | +| patterns.cs:125:9:125:39 | After ... ...; | patterns.cs:126:9:132:10 | ... ...; | semmle.label | successor | +| patterns.cs:125:13:125:13 | access to local variable s | patterns.cs:125:17:125:38 | Before object creation of type MyStruct | semmle.label | successor | +| patterns.cs:125:13:125:38 | After MyStruct s = ... | patterns.cs:125:9:125:39 | After ... ...; | semmle.label | successor | +| patterns.cs:125:13:125:38 | Before MyStruct s = ... | patterns.cs:125:13:125:13 | access to local variable s | semmle.label | successor | +| patterns.cs:125:13:125:38 | MyStruct s = ... | patterns.cs:125:13:125:38 | After MyStruct s = ... | semmle.label | successor | +| patterns.cs:125:17:125:38 | After object creation of type MyStruct | patterns.cs:125:13:125:38 | MyStruct s = ... | semmle.label | successor | +| patterns.cs:125:17:125:38 | Before object creation of type MyStruct | patterns.cs:125:17:125:38 | object creation of type MyStruct | semmle.label | successor | +| patterns.cs:125:17:125:38 | object creation of type MyStruct | patterns.cs:125:30:125:38 | Before { ..., ... } | semmle.label | successor | +| patterns.cs:125:30:125:38 | After { ..., ... } | patterns.cs:125:17:125:38 | After object creation of type MyStruct | semmle.label | successor | +| patterns.cs:125:30:125:38 | Before { ..., ... } | patterns.cs:125:32:125:36 | Before ... = ... | semmle.label | successor | +| patterns.cs:125:30:125:38 | { ..., ... } | patterns.cs:125:30:125:38 | After { ..., ... } | semmle.label | successor | +| patterns.cs:125:32:125:32 | access to field X | patterns.cs:125:36:125:36 | 0 | semmle.label | successor | +| patterns.cs:125:32:125:36 | ... = ... | patterns.cs:125:32:125:36 | After ... = ... | semmle.label | successor | +| patterns.cs:125:32:125:36 | After ... = ... | patterns.cs:125:30:125:38 | { ..., ... } | semmle.label | successor | +| patterns.cs:125:32:125:36 | Before ... = ... | patterns.cs:125:32:125:32 | access to field X | semmle.label | successor | +| patterns.cs:125:36:125:36 | 0 | patterns.cs:125:32:125:36 | ... = ... | semmle.label | successor | +| patterns.cs:126:9:132:10 | ... ...; | patterns.cs:126:13:132:9 | Before Int32 r = ... | semmle.label | successor | +| patterns.cs:126:9:132:10 | After ... ...; | patterns.cs:134:9:148:9 | try {...} ... | semmle.label | successor | +| patterns.cs:126:13:126:13 | access to local variable r | patterns.cs:126:17:132:9 | ... switch { ... } | semmle.label | successor | +| patterns.cs:126:13:132:9 | After Int32 r = ... | patterns.cs:126:9:132:10 | After ... ...; | semmle.label | successor | +| patterns.cs:126:13:132:9 | Before Int32 r = ... | patterns.cs:126:13:126:13 | access to local variable r | semmle.label | successor | +| patterns.cs:126:13:132:9 | Int32 r = ... | patterns.cs:126:13:132:9 | After Int32 r = ... | semmle.label | successor | +| patterns.cs:126:17:126:17 | access to local variable s | patterns.cs:128:13:128:49 | ... => ... | semmle.label | successor | +| patterns.cs:126:17:132:9 | ... switch { ... } | patterns.cs:126:17:126:17 | access to local variable s | semmle.label | successor | +| patterns.cs:126:17:132:9 | After ... switch { ... } | patterns.cs:126:13:132:9 | Int32 r = ... | semmle.label | successor | +| patterns.cs:128:13:128:20 | access to type MyStruct | patterns.cs:128:22:128:33 | Before { ... } | semmle.label | successor | +| patterns.cs:128:13:128:33 | After { ... } [match] | patterns.cs:128:13:128:49 | After ... => ... [match] | semmle.label | match | +| patterns.cs:128:13:128:33 | After { ... } [no-match] | patterns.cs:128:13:128:49 | After ... => ... [no-match] | semmle.label | no-match | +| patterns.cs:128:13:128:33 | Before { ... } | patterns.cs:128:13:128:20 | access to type MyStruct | semmle.label | successor | +| patterns.cs:128:13:128:33 | { ... } | patterns.cs:128:13:128:33 | After { ... } [match] | semmle.label | match | +| patterns.cs:128:13:128:33 | { ... } | patterns.cs:128:13:128:33 | After { ... } [no-match] | semmle.label | no-match | +| patterns.cs:128:13:128:49 | ... => ... | patterns.cs:128:13:128:33 | Before { ... } | semmle.label | successor | +| patterns.cs:128:13:128:49 | After ... => ... [match] | patterns.cs:128:40:128:44 | Before ... > ... | semmle.label | successor | +| patterns.cs:128:13:128:49 | After ... => ... [no-match] | patterns.cs:129:13:129:38 | ... => ... | semmle.label | successor | +| patterns.cs:128:22:128:33 | After { ... } | patterns.cs:128:13:128:33 | { ... } | semmle.label | successor | +| patterns.cs:128:22:128:33 | Before { ... } | patterns.cs:128:27:128:31 | Int32 x | semmle.label | successor | +| patterns.cs:128:22:128:33 | { ... } | patterns.cs:128:22:128:33 | After { ... } | semmle.label | successor | +| patterns.cs:128:27:128:31 | Int32 x | patterns.cs:128:22:128:33 | { ... } | semmle.label | successor | | patterns.cs:128:40:128:40 | access to local variable x | patterns.cs:128:44:128:44 | 2 | semmle.label | successor | -| patterns.cs:128:40:128:44 | ... > ... | patterns.cs:128:49:128:49 | 0 | semmle.label | true | -| patterns.cs:128:40:128:44 | ... > ... | patterns.cs:129:13:129:33 | MyStruct ms | semmle.label | false | +| patterns.cs:128:40:128:44 | ... > ... | patterns.cs:128:40:128:44 | After ... > ... [false] | semmle.label | false | +| patterns.cs:128:40:128:44 | ... > ... | patterns.cs:128:40:128:44 | After ... > ... [true] | semmle.label | true | +| patterns.cs:128:40:128:44 | After ... > ... [false] | patterns.cs:129:13:129:38 | ... => ... | semmle.label | successor | +| patterns.cs:128:40:128:44 | After ... > ... [true] | patterns.cs:128:49:128:49 | 0 | semmle.label | successor | +| patterns.cs:128:40:128:44 | Before ... > ... | patterns.cs:128:40:128:40 | access to local variable x | semmle.label | successor | | patterns.cs:128:44:128:44 | 2 | patterns.cs:128:40:128:44 | ... > ... | semmle.label | successor | -| patterns.cs:128:49:128:49 | 0 | patterns.cs:128:13:128:49 | ... => ... | semmle.label | successor | -| patterns.cs:129:13:129:33 | MyStruct ms | patterns.cs:129:13:129:33 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:129:13:129:33 | MyStruct ms | patterns.cs:129:27:129:28 | 10 | semmle.label | match | -| patterns.cs:129:13:129:33 | [match] { ... } | patterns.cs:129:38:129:38 | 1 | semmle.label | match | -| patterns.cs:129:13:129:33 | [no-match] { ... } | patterns.cs:130:13:130:18 | ( ... ) | semmle.label | no-match | -| patterns.cs:129:13:129:38 | ... => ... | patterns.cs:126:17:132:9 | ... switch { ... } | semmle.label | successor | -| patterns.cs:129:22:129:30 | [match] { ... } | patterns.cs:129:13:129:33 | [match] { ... } | semmle.label | match | -| patterns.cs:129:22:129:30 | [no-match] { ... } | patterns.cs:129:13:129:33 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:129:27:129:28 | 10 | patterns.cs:129:22:129:30 | [match] { ... } | semmle.label | match | -| patterns.cs:129:27:129:28 | 10 | patterns.cs:129:22:129:30 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:129:38:129:38 | 1 | patterns.cs:129:13:129:38 | ... => ... | semmle.label | successor | -| patterns.cs:130:13:130:18 | ( ... ) | patterns.cs:130:13:130:18 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:130:13:130:18 | ( ... ) | patterns.cs:130:14:130:14 | 1 | semmle.label | match | -| patterns.cs:130:13:130:18 | [match] { ... } | patterns.cs:130:23:130:23 | 2 | semmle.label | match | -| patterns.cs:130:13:130:18 | [no-match] { ... } | patterns.cs:131:18:131:18 | Int32 x | semmle.label | no-match | -| patterns.cs:130:13:130:23 | ... => ... | patterns.cs:126:17:132:9 | ... switch { ... } | semmle.label | successor | -| patterns.cs:130:14:130:14 | 1 | patterns.cs:130:13:130:18 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:130:14:130:14 | 1 | patterns.cs:130:17:130:17 | 2 | semmle.label | match | -| patterns.cs:130:17:130:17 | 2 | patterns.cs:130:13:130:18 | [match] { ... } | semmle.label | match | -| patterns.cs:130:17:130:17 | 2 | patterns.cs:130:13:130:18 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:130:23:130:23 | 2 | patterns.cs:130:13:130:23 | ... => ... | semmle.label | successor | -| patterns.cs:131:13:131:22 | (..., ...) | patterns.cs:123:10:123:21 | exit Expressions2 (abnormal) | semmle.label | exception | -| patterns.cs:131:13:131:22 | (..., ...) | patterns.cs:131:27:131:27 | 3 | semmle.label | match | -| patterns.cs:131:13:131:27 | ... => ... | patterns.cs:126:17:132:9 | ... switch { ... } | semmle.label | successor | +| patterns.cs:128:49:128:49 | 0 | patterns.cs:126:17:132:9 | After ... switch { ... } | semmle.label | successor | +| patterns.cs:129:13:129:20 | access to type MyStruct | patterns.cs:129:22:129:30 | Before { ... } | semmle.label | successor | +| patterns.cs:129:13:129:33 | After { ... } [match] | patterns.cs:129:13:129:38 | After ... => ... [match] | semmle.label | match | +| patterns.cs:129:13:129:33 | After { ... } [no-match] | patterns.cs:129:13:129:38 | After ... => ... [no-match] | semmle.label | no-match | +| patterns.cs:129:13:129:33 | Before { ... } | patterns.cs:129:13:129:33 | MyStruct ms | semmle.label | successor | +| patterns.cs:129:13:129:33 | MyStruct ms | patterns.cs:129:13:129:20 | access to type MyStruct | semmle.label | successor | +| patterns.cs:129:13:129:33 | { ... } | patterns.cs:129:13:129:33 | After { ... } [match] | semmle.label | match | +| patterns.cs:129:13:129:33 | { ... } | patterns.cs:129:13:129:33 | After { ... } [no-match] | semmle.label | no-match | +| patterns.cs:129:13:129:38 | ... => ... | patterns.cs:129:13:129:33 | Before { ... } | semmle.label | successor | +| patterns.cs:129:13:129:38 | After ... => ... [match] | patterns.cs:129:38:129:38 | 1 | semmle.label | successor | +| patterns.cs:129:13:129:38 | After ... => ... [no-match] | patterns.cs:130:13:130:23 | ... => ... | semmle.label | successor | +| patterns.cs:129:22:129:30 | After { ... } | patterns.cs:129:13:129:33 | { ... } | semmle.label | successor | +| patterns.cs:129:22:129:30 | Before { ... } | patterns.cs:129:27:129:28 | 10 | semmle.label | successor | +| patterns.cs:129:22:129:30 | { ... } | patterns.cs:129:22:129:30 | After { ... } | semmle.label | successor | +| patterns.cs:129:27:129:28 | 10 | patterns.cs:129:22:129:30 | { ... } | semmle.label | successor | +| patterns.cs:129:38:129:38 | 1 | patterns.cs:126:17:132:9 | After ... switch { ... } | semmle.label | successor | +| patterns.cs:130:13:130:18 | ( ... ) | patterns.cs:130:13:130:18 | After ( ... ) | semmle.label | successor | +| patterns.cs:130:13:130:18 | After ( ... ) | patterns.cs:130:13:130:18 | { ... } | semmle.label | successor | +| patterns.cs:130:13:130:18 | After { ... } [match] | patterns.cs:130:13:130:23 | After ... => ... [match] | semmle.label | match | +| patterns.cs:130:13:130:18 | After { ... } [no-match] | patterns.cs:130:13:130:23 | After ... => ... [no-match] | semmle.label | no-match | +| patterns.cs:130:13:130:18 | Before ( ... ) | patterns.cs:130:14:130:14 | 1 | semmle.label | successor | +| patterns.cs:130:13:130:18 | Before { ... } | patterns.cs:130:13:130:18 | Before ( ... ) | semmle.label | successor | +| patterns.cs:130:13:130:18 | { ... } | patterns.cs:130:13:130:18 | After { ... } [match] | semmle.label | match | +| patterns.cs:130:13:130:18 | { ... } | patterns.cs:130:13:130:18 | After { ... } [no-match] | semmle.label | no-match | +| patterns.cs:130:13:130:23 | ... => ... | patterns.cs:130:13:130:18 | Before { ... } | semmle.label | successor | +| patterns.cs:130:13:130:23 | After ... => ... [match] | patterns.cs:130:23:130:23 | 2 | semmle.label | successor | +| patterns.cs:130:13:130:23 | After ... => ... [no-match] | patterns.cs:131:13:131:27 | ... => ... | semmle.label | successor | +| patterns.cs:130:14:130:14 | 1 | patterns.cs:130:17:130:17 | 2 | semmle.label | successor | +| patterns.cs:130:17:130:17 | 2 | patterns.cs:130:13:130:18 | ( ... ) | semmle.label | successor | +| patterns.cs:130:23:130:23 | 2 | patterns.cs:126:17:132:9 | After ... switch { ... } | semmle.label | successor | +| patterns.cs:131:13:131:22 | (..., ...) | patterns.cs:131:13:131:22 | After (..., ...) [match] | semmle.label | match | +| patterns.cs:131:13:131:22 | (..., ...) | patterns.cs:131:13:131:22 | After (..., ...) [no-match] | semmle.label | no-match | +| patterns.cs:131:13:131:22 | After (..., ...) [match] | patterns.cs:131:13:131:27 | After ... => ... [match] | semmle.label | match | +| patterns.cs:131:13:131:22 | After (..., ...) [no-match] | patterns.cs:131:13:131:27 | After ... => ... [no-match] | semmle.label | no-match | +| patterns.cs:131:13:131:22 | Before (..., ...) | patterns.cs:131:18:131:18 | Int32 x | semmle.label | successor | +| patterns.cs:131:13:131:27 | ... => ... | patterns.cs:131:13:131:22 | Before (..., ...) | semmle.label | successor | +| patterns.cs:131:13:131:27 | After ... => ... [match] | patterns.cs:131:27:131:27 | 3 | semmle.label | successor | +| patterns.cs:131:13:131:27 | After ... => ... [no-match] | patterns.cs:126:17:132:9 | After ... switch { ... } | semmle.label | successor | | patterns.cs:131:18:131:18 | Int32 x | patterns.cs:131:21:131:21 | _ | semmle.label | successor | | patterns.cs:131:21:131:21 | _ | patterns.cs:131:13:131:22 | (..., ...) | semmle.label | successor | -| patterns.cs:131:27:131:27 | 3 | patterns.cs:131:13:131:27 | ... => ... | semmle.label | successor | +| patterns.cs:131:27:131:27 | 3 | patterns.cs:126:17:132:9 | After ... switch { ... } | semmle.label | successor | +| patterns.cs:134:9:148:9 | After try {...} ... | patterns.cs:124:5:149:5 | After {...} | semmle.label | successor | | patterns.cs:134:9:148:9 | try {...} ... | patterns.cs:135:9:144:9 | {...} | semmle.label | successor | +| patterns.cs:135:9:144:9 | After {...} | patterns.cs:134:9:148:9 | After try {...} ... | semmle.label | successor | | patterns.cs:135:9:144:9 | {...} | patterns.cs:136:13:143:14 | ...; | semmle.label | successor | -| patterns.cs:136:13:143:13 | ... = ... | patterns.cs:123:10:123:21 | exit Expressions2 (normal) | semmle.label | successor | -| patterns.cs:136:13:143:14 | ...; | patterns.cs:136:17:136:17 | access to parameter o | semmle.label | successor | -| patterns.cs:136:17:136:17 | access to parameter o | patterns.cs:138:17:138:17 | 1 | semmle.label | successor | -| patterns.cs:136:17:143:13 | ... switch { ... } | patterns.cs:136:13:143:13 | ... = ... | semmle.label | successor | -| patterns.cs:138:17:138:17 | 1 | patterns.cs:138:28:138:50 | object creation of type ArgumentException | semmle.label | match | -| patterns.cs:138:17:138:17 | 1 | patterns.cs:139:17:139:17 | 2 | semmle.label | no-match | +| patterns.cs:136:13:136:13 | access to local variable r | patterns.cs:136:17:143:13 | ... switch { ... } | semmle.label | successor | +| patterns.cs:136:13:143:13 | ... = ... | patterns.cs:136:13:143:13 | After ... = ... | semmle.label | successor | +| patterns.cs:136:13:143:13 | After ... = ... | patterns.cs:136:13:143:14 | After ...; | semmle.label | successor | +| patterns.cs:136:13:143:13 | Before ... = ... | patterns.cs:136:13:136:13 | access to local variable r | semmle.label | successor | +| patterns.cs:136:13:143:14 | ...; | patterns.cs:136:13:143:13 | Before ... = ... | semmle.label | successor | +| patterns.cs:136:13:143:14 | After ...; | patterns.cs:135:9:144:9 | After {...} | semmle.label | successor | +| patterns.cs:136:17:136:17 | access to parameter o | patterns.cs:138:17:138:50 | ... => ... | semmle.label | successor | +| patterns.cs:136:17:143:13 | ... switch { ... } | patterns.cs:136:17:136:17 | access to parameter o | semmle.label | successor | +| patterns.cs:136:17:143:13 | After ... switch { ... } | patterns.cs:136:13:143:13 | ... = ... | semmle.label | successor | +| patterns.cs:138:17:138:17 | 1 | patterns.cs:138:17:138:17 | After 1 [match] | semmle.label | match | +| patterns.cs:138:17:138:17 | 1 | patterns.cs:138:17:138:17 | After 1 [no-match] | semmle.label | no-match | +| patterns.cs:138:17:138:17 | After 1 [match] | patterns.cs:138:17:138:50 | After ... => ... [match] | semmle.label | match | +| patterns.cs:138:17:138:17 | After 1 [no-match] | patterns.cs:138:17:138:50 | After ... => ... [no-match] | semmle.label | no-match | +| patterns.cs:138:17:138:50 | ... => ... | patterns.cs:138:17:138:17 | 1 | semmle.label | successor | +| patterns.cs:138:17:138:50 | After ... => ... [match] | patterns.cs:138:22:138:50 | Before throw ... | semmle.label | successor | +| patterns.cs:138:17:138:50 | After ... => ... [no-match] | patterns.cs:139:17:139:22 | ... => ... | semmle.label | successor | +| patterns.cs:138:22:138:50 | Before throw ... | patterns.cs:138:28:138:50 | Before object creation of type ArgumentException | semmle.label | successor | | patterns.cs:138:22:138:50 | throw ... | patterns.cs:145:9:148:9 | catch (...) {...} | semmle.label | exception | -| patterns.cs:138:28:138:50 | object creation of type ArgumentException | patterns.cs:138:22:138:50 | throw ... | semmle.label | successor | +| patterns.cs:138:28:138:50 | After object creation of type ArgumentException | patterns.cs:138:22:138:50 | throw ... | semmle.label | successor | +| patterns.cs:138:28:138:50 | Before object creation of type ArgumentException | patterns.cs:138:28:138:50 | object creation of type ArgumentException | semmle.label | successor | +| patterns.cs:138:28:138:50 | object creation of type ArgumentException | patterns.cs:138:28:138:50 | After object creation of type ArgumentException | semmle.label | successor | | patterns.cs:138:28:138:50 | object creation of type ArgumentException | patterns.cs:145:9:148:9 | catch (...) {...} | semmle.label | exception | -| patterns.cs:139:17:139:17 | 2 | patterns.cs:139:22:139:22 | 3 | semmle.label | match | -| patterns.cs:139:17:139:17 | 2 | patterns.cs:140:17:140:24 | Object y | semmle.label | no-match | -| patterns.cs:139:17:139:22 | ... => ... | patterns.cs:136:17:143:13 | ... switch { ... } | semmle.label | successor | -| patterns.cs:139:22:139:22 | 3 | patterns.cs:139:17:139:22 | ... => ... | semmle.label | successor | -| patterns.cs:140:17:140:24 | Object y | patterns.cs:140:31:140:31 | access to local variable y | semmle.label | match | -| patterns.cs:140:17:140:24 | Object y | patterns.cs:141:17:141:22 | access to type String | semmle.label | no-match | -| patterns.cs:140:17:140:42 | ... => ... | patterns.cs:136:17:143:13 | ... switch { ... } | semmle.label | successor | -| patterns.cs:140:31:140:31 | access to local variable y | patterns.cs:140:36:140:37 | { ... } | semmle.label | successor | -| patterns.cs:140:31:140:37 | [false] ... is ... | patterns.cs:141:17:141:22 | access to type String | semmle.label | false | -| patterns.cs:140:31:140:37 | [true] ... is ... | patterns.cs:140:42:140:42 | 4 | semmle.label | true | -| patterns.cs:140:36:140:37 | [match] { ... } | patterns.cs:140:31:140:37 | [true] ... is ... | semmle.label | match | -| patterns.cs:140:36:140:37 | [no-match] { ... } | patterns.cs:140:31:140:37 | [false] ... is ... | semmle.label | no-match | -| patterns.cs:140:36:140:37 | { ... } | patterns.cs:140:36:140:37 | [match] { ... } | semmle.label | match | -| patterns.cs:140:36:140:37 | { ... } | patterns.cs:140:36:140:37 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:140:42:140:42 | 4 | patterns.cs:140:17:140:42 | ... => ... | semmle.label | successor | -| patterns.cs:141:17:141:22 | access to type String | patterns.cs:141:29:141:29 | 5 | semmle.label | match | -| patterns.cs:141:17:141:22 | access to type String | patterns.cs:142:17:142:24 | access to type MyStruct | semmle.label | no-match | -| patterns.cs:141:17:141:29 | ... => ... | patterns.cs:136:17:143:13 | ... switch { ... } | semmle.label | successor | -| patterns.cs:141:29:141:29 | 5 | patterns.cs:141:17:141:29 | ... => ... | semmle.label | successor | -| patterns.cs:142:17:142:24 | access to type MyStruct | patterns.cs:142:17:142:36 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:142:17:142:24 | access to type MyStruct | patterns.cs:142:31:142:32 | 10 | semmle.label | match | -| patterns.cs:142:17:142:36 | [match] { ... } | patterns.cs:142:41:142:41 | 6 | semmle.label | match | -| patterns.cs:142:17:142:36 | [match] { ... } | patterns.cs:145:9:148:9 | catch (...) {...} | semmle.label | exception | -| patterns.cs:142:17:142:36 | [no-match] { ... } | patterns.cs:145:9:148:9 | catch (...) {...} | semmle.label | exception | -| patterns.cs:142:17:142:41 | ... => ... | patterns.cs:136:17:143:13 | ... switch { ... } | semmle.label | successor | -| patterns.cs:142:26:142:34 | [match] { ... } | patterns.cs:142:17:142:36 | [match] { ... } | semmle.label | match | -| patterns.cs:142:26:142:34 | [no-match] { ... } | patterns.cs:142:17:142:36 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:142:31:142:32 | 10 | patterns.cs:142:26:142:34 | [match] { ... } | semmle.label | match | -| patterns.cs:142:31:142:32 | 10 | patterns.cs:142:26:142:34 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:142:41:142:41 | 6 | patterns.cs:142:17:142:41 | ... => ... | semmle.label | successor | -| patterns.cs:145:9:148:9 | catch (...) {...} | patterns.cs:123:10:123:21 | exit Expressions2 (abnormal) | semmle.label | exception | -| patterns.cs:145:9:148:9 | catch (...) {...} | patterns.cs:145:41:145:42 | InvalidOperationException ex | semmle.label | match | +| patterns.cs:139:17:139:17 | 2 | patterns.cs:139:17:139:17 | After 2 [match] | semmle.label | match | +| patterns.cs:139:17:139:17 | 2 | patterns.cs:139:17:139:17 | After 2 [no-match] | semmle.label | no-match | +| patterns.cs:139:17:139:17 | After 2 [match] | patterns.cs:139:17:139:22 | After ... => ... [match] | semmle.label | match | +| patterns.cs:139:17:139:17 | After 2 [no-match] | patterns.cs:139:17:139:22 | After ... => ... [no-match] | semmle.label | no-match | +| patterns.cs:139:17:139:22 | ... => ... | patterns.cs:139:17:139:17 | 2 | semmle.label | successor | +| patterns.cs:139:17:139:22 | After ... => ... [match] | patterns.cs:139:22:139:22 | 3 | semmle.label | successor | +| patterns.cs:139:17:139:22 | After ... => ... [no-match] | patterns.cs:140:17:140:42 | ... => ... | semmle.label | successor | +| patterns.cs:139:22:139:22 | 3 | patterns.cs:136:17:143:13 | After ... switch { ... } | semmle.label | successor | +| patterns.cs:140:17:140:24 | After Object y [match] | patterns.cs:140:17:140:42 | After ... => ... [match] | semmle.label | match | +| patterns.cs:140:17:140:24 | After Object y [no-match] | patterns.cs:140:17:140:42 | After ... => ... [no-match] | semmle.label | no-match | +| patterns.cs:140:17:140:24 | Object y | patterns.cs:140:17:140:24 | After Object y [match] | semmle.label | match | +| patterns.cs:140:17:140:24 | Object y | patterns.cs:140:17:140:24 | After Object y [no-match] | semmle.label | no-match | +| patterns.cs:140:17:140:42 | ... => ... | patterns.cs:140:17:140:24 | Object y | semmle.label | successor | +| patterns.cs:140:17:140:42 | After ... => ... [match] | patterns.cs:140:31:140:37 | Before ... is ... | semmle.label | successor | +| patterns.cs:140:17:140:42 | After ... => ... [no-match] | patterns.cs:141:17:141:29 | ... => ... | semmle.label | successor | +| patterns.cs:140:31:140:31 | access to local variable y | patterns.cs:140:31:140:37 | ... is ... | semmle.label | successor | +| patterns.cs:140:31:140:37 | ... is ... | patterns.cs:140:31:140:37 | After ... is ... [false] | semmle.label | false | +| patterns.cs:140:31:140:37 | ... is ... | patterns.cs:140:31:140:37 | [MatchTrue] ... is ... | semmle.label | true | +| patterns.cs:140:31:140:37 | After ... is ... [false] | patterns.cs:141:17:141:29 | ... => ... | semmle.label | successor | +| patterns.cs:140:31:140:37 | After ... is ... [true] | patterns.cs:140:42:140:42 | 4 | semmle.label | successor | +| patterns.cs:140:31:140:37 | Before ... is ... | patterns.cs:140:31:140:31 | access to local variable y | semmle.label | successor | +| patterns.cs:140:31:140:37 | [MatchTrue] ... is ... | patterns.cs:140:36:140:37 | Before { ... } | semmle.label | successor | +| patterns.cs:140:36:140:37 | After { ... } | patterns.cs:140:31:140:37 | After ... is ... [true] | semmle.label | true | +| patterns.cs:140:36:140:37 | Before { ... } | patterns.cs:140:36:140:37 | { ... } | semmle.label | successor | +| patterns.cs:140:36:140:37 | { ... } | patterns.cs:140:36:140:37 | After { ... } | semmle.label | successor | +| patterns.cs:140:36:140:37 | { ... } | patterns.cs:140:36:140:37 | { ... } | semmle.label | successor | +| patterns.cs:140:42:140:42 | 4 | patterns.cs:136:17:143:13 | After ... switch { ... } | semmle.label | successor | +| patterns.cs:141:17:141:22 | After access to type String [match] | patterns.cs:141:17:141:29 | After ... => ... [match] | semmle.label | match | +| patterns.cs:141:17:141:22 | After access to type String [no-match] | patterns.cs:141:17:141:29 | After ... => ... [no-match] | semmle.label | no-match | +| patterns.cs:141:17:141:22 | access to type String | patterns.cs:141:17:141:22 | After access to type String [match] | semmle.label | match | +| patterns.cs:141:17:141:22 | access to type String | patterns.cs:141:17:141:22 | After access to type String [no-match] | semmle.label | no-match | +| patterns.cs:141:17:141:29 | ... => ... | patterns.cs:141:17:141:22 | access to type String | semmle.label | successor | +| patterns.cs:141:17:141:29 | After ... => ... [match] | patterns.cs:141:29:141:29 | 5 | semmle.label | successor | +| patterns.cs:141:17:141:29 | After ... => ... [no-match] | patterns.cs:142:17:142:41 | ... => ... | semmle.label | successor | +| patterns.cs:141:29:141:29 | 5 | patterns.cs:136:17:143:13 | After ... switch { ... } | semmle.label | successor | +| patterns.cs:142:17:142:24 | access to type MyStruct | patterns.cs:142:26:142:34 | Before { ... } | semmle.label | successor | +| patterns.cs:142:17:142:36 | After { ... } [match] | patterns.cs:142:17:142:41 | After ... => ... [match] | semmle.label | match | +| patterns.cs:142:17:142:36 | After { ... } [no-match] | patterns.cs:142:17:142:41 | After ... => ... [no-match] | semmle.label | no-match | +| patterns.cs:142:17:142:36 | Before { ... } | patterns.cs:142:17:142:24 | access to type MyStruct | semmle.label | successor | +| patterns.cs:142:17:142:36 | { ... } | patterns.cs:142:17:142:36 | After { ... } [match] | semmle.label | match | +| patterns.cs:142:17:142:36 | { ... } | patterns.cs:142:17:142:36 | After { ... } [no-match] | semmle.label | no-match | +| patterns.cs:142:17:142:41 | ... => ... | patterns.cs:142:17:142:36 | Before { ... } | semmle.label | successor | +| patterns.cs:142:17:142:41 | After ... => ... [match] | patterns.cs:142:41:142:41 | 6 | semmle.label | successor | +| patterns.cs:142:17:142:41 | After ... => ... [no-match] | patterns.cs:136:17:143:13 | After ... switch { ... } | semmle.label | successor | +| patterns.cs:142:26:142:34 | After { ... } | patterns.cs:142:17:142:36 | { ... } | semmle.label | successor | +| patterns.cs:142:26:142:34 | Before { ... } | patterns.cs:142:31:142:32 | 10 | semmle.label | successor | +| patterns.cs:142:26:142:34 | { ... } | patterns.cs:142:26:142:34 | After { ... } | semmle.label | successor | +| patterns.cs:142:31:142:32 | 10 | patterns.cs:142:26:142:34 | { ... } | semmle.label | successor | +| patterns.cs:142:41:142:41 | 6 | patterns.cs:136:17:143:13 | After ... switch { ... } | semmle.label | successor | +| patterns.cs:145:9:148:9 | After catch (...) {...} [match] | patterns.cs:145:41:145:42 | InvalidOperationException ex | semmle.label | successor | +| patterns.cs:145:9:148:9 | After catch (...) {...} [no-match] | patterns.cs:123:10:123:21 | Exceptional Exit | semmle.label | exception | +| patterns.cs:145:9:148:9 | catch (...) {...} | patterns.cs:145:9:148:9 | After catch (...) {...} [match] | semmle.label | match | +| patterns.cs:145:9:148:9 | catch (...) {...} | patterns.cs:145:9:148:9 | After catch (...) {...} [no-match] | semmle.label | no-match | | patterns.cs:145:41:145:42 | InvalidOperationException ex | patterns.cs:146:9:148:9 | {...} | semmle.label | successor | +| patterns.cs:146:9:148:9 | After {...} | patterns.cs:134:9:148:9 | After try {...} ... | semmle.label | successor | | patterns.cs:146:9:148:9 | {...} | patterns.cs:147:13:147:51 | ...; | semmle.label | successor | -| patterns.cs:147:13:147:50 | call to method WriteLine | patterns.cs:123:10:123:21 | exit Expressions2 (normal) | semmle.label | successor | -| patterns.cs:147:13:147:51 | ...; | patterns.cs:147:31:147:49 | "Invalid operation" | semmle.label | successor | +| patterns.cs:147:13:147:50 | After call to method WriteLine | patterns.cs:147:13:147:51 | After ...; | semmle.label | successor | +| patterns.cs:147:13:147:50 | Before call to method WriteLine | patterns.cs:147:31:147:49 | "Invalid operation" | semmle.label | successor | +| patterns.cs:147:13:147:50 | call to method WriteLine | patterns.cs:147:13:147:50 | After call to method WriteLine | semmle.label | successor | +| patterns.cs:147:13:147:51 | ...; | patterns.cs:147:13:147:50 | Before call to method WriteLine | semmle.label | successor | +| patterns.cs:147:13:147:51 | After ...; | patterns.cs:146:9:148:9 | After {...} | semmle.label | successor | | patterns.cs:147:31:147:49 | "Invalid operation" | patterns.cs:147:13:147:50 | call to method WriteLine | semmle.label | successor | diff --git a/csharp/ql/test/library-tests/csharp8/switchexprcontrolflow.ql b/csharp/ql/test/library-tests/csharp8/switchexprcontrolflow.ql index 696f747b9254..2eba0e54581e 100644 --- a/csharp/ql/test/library-tests/csharp8/switchexprcontrolflow.ql +++ b/csharp/ql/test/library-tests/csharp8/switchexprcontrolflow.ql @@ -1,9 +1,9 @@ import csharp -query predicate edges(ControlFlow::Node a, ControlFlow::Node b, string label, string value) { +query predicate edges(ControlFlowNode a, ControlFlowNode b, string label, string value) { exists(ControlFlow::SuccessorType t | a.getEnclosingCallable().getName().matches("Expressions%") and - b = a.getASuccessorByType(t) and + b = a.getASuccessor(t) and label = "semmle.label" and value = t.toString() ) diff --git a/csharp/ql/test/library-tests/csharp8/switchstmtctrlflow.expected b/csharp/ql/test/library-tests/csharp8/switchstmtctrlflow.expected index 06e4623611b3..ee5851bbd8f9 100644 --- a/csharp/ql/test/library-tests/csharp8/switchstmtctrlflow.expected +++ b/csharp/ql/test/library-tests/csharp8/switchstmtctrlflow.expected @@ -1,201 +1,359 @@ -| patterns.cs:32:10:32:25 | enter SwitchStatements | patterns.cs:33:5:96:5 | {...} | semmle.label | successor | -| patterns.cs:32:10:32:25 | exit SwitchStatements (normal) | patterns.cs:32:10:32:25 | exit SwitchStatements | semmle.label | successor | +| patterns.cs:32:10:32:25 | Entry | patterns.cs:33:5:96:5 | {...} | semmle.label | successor | +| patterns.cs:32:10:32:25 | Normal Exit | patterns.cs:32:10:32:25 | Exit | semmle.label | successor | +| patterns.cs:33:5:96:5 | After {...} | patterns.cs:32:10:32:25 | Normal Exit | semmle.label | successor | | patterns.cs:33:5:96:5 | {...} | patterns.cs:34:9:34:39 | ... ...; | semmle.label | successor | -| patterns.cs:34:9:34:39 | ... ...; | patterns.cs:34:17:34:38 | object creation of type MyStruct | semmle.label | successor | -| patterns.cs:34:13:34:38 | MyStruct s = ... | patterns.cs:36:9:44:9 | switch (...) {...} | semmle.label | successor | -| patterns.cs:34:17:34:38 | object creation of type MyStruct | patterns.cs:34:36:34:36 | 0 | semmle.label | successor | -| patterns.cs:34:30:34:38 | { ..., ... } | patterns.cs:34:13:34:38 | MyStruct s = ... | semmle.label | successor | -| patterns.cs:34:32:34:32 | access to field X | patterns.cs:34:32:34:36 | ... = ... | semmle.label | successor | -| patterns.cs:34:32:34:36 | ... = ... | patterns.cs:34:30:34:38 | { ..., ... } | semmle.label | successor | -| patterns.cs:34:36:34:36 | 0 | patterns.cs:34:32:34:32 | access to field X | semmle.label | successor | +| patterns.cs:34:9:34:39 | ... ...; | patterns.cs:34:13:34:38 | Before MyStruct s = ... | semmle.label | successor | +| patterns.cs:34:9:34:39 | After ... ...; | patterns.cs:36:9:44:9 | switch (...) {...} | semmle.label | successor | +| patterns.cs:34:13:34:13 | access to local variable s | patterns.cs:34:17:34:38 | Before object creation of type MyStruct | semmle.label | successor | +| patterns.cs:34:13:34:38 | After MyStruct s = ... | patterns.cs:34:9:34:39 | After ... ...; | semmle.label | successor | +| patterns.cs:34:13:34:38 | Before MyStruct s = ... | patterns.cs:34:13:34:13 | access to local variable s | semmle.label | successor | +| patterns.cs:34:13:34:38 | MyStruct s = ... | patterns.cs:34:13:34:38 | After MyStruct s = ... | semmle.label | successor | +| patterns.cs:34:17:34:38 | After object creation of type MyStruct | patterns.cs:34:13:34:38 | MyStruct s = ... | semmle.label | successor | +| patterns.cs:34:17:34:38 | Before object creation of type MyStruct | patterns.cs:34:17:34:38 | object creation of type MyStruct | semmle.label | successor | +| patterns.cs:34:17:34:38 | object creation of type MyStruct | patterns.cs:34:30:34:38 | Before { ..., ... } | semmle.label | successor | +| patterns.cs:34:30:34:38 | After { ..., ... } | patterns.cs:34:17:34:38 | After object creation of type MyStruct | semmle.label | successor | +| patterns.cs:34:30:34:38 | Before { ..., ... } | patterns.cs:34:32:34:36 | Before ... = ... | semmle.label | successor | +| patterns.cs:34:30:34:38 | { ..., ... } | patterns.cs:34:30:34:38 | After { ..., ... } | semmle.label | successor | +| patterns.cs:34:32:34:32 | access to field X | patterns.cs:34:36:34:36 | 0 | semmle.label | successor | +| patterns.cs:34:32:34:36 | ... = ... | patterns.cs:34:32:34:36 | After ... = ... | semmle.label | successor | +| patterns.cs:34:32:34:36 | After ... = ... | patterns.cs:34:30:34:38 | { ..., ... } | semmle.label | successor | +| patterns.cs:34:32:34:36 | Before ... = ... | patterns.cs:34:32:34:32 | access to field X | semmle.label | successor | +| patterns.cs:34:36:34:36 | 0 | patterns.cs:34:32:34:36 | ... = ... | semmle.label | successor | +| patterns.cs:36:9:44:9 | After switch (...) {...} | patterns.cs:46:9:63:9 | switch (...) {...} | semmle.label | successor | | patterns.cs:36:9:44:9 | switch (...) {...} | patterns.cs:36:17:36:17 | access to local variable s | semmle.label | successor | | patterns.cs:36:17:36:17 | access to local variable s | patterns.cs:38:13:38:47 | case ...: | semmle.label | successor | +| patterns.cs:38:13:38:47 | After case ...: [match] | patterns.cs:38:36:38:46 | Before ... == ... | semmle.label | successor | +| patterns.cs:38:13:38:47 | After case ...: [no-match] | patterns.cs:41:13:41:46 | case ...: | semmle.label | successor | | patterns.cs:38:13:38:47 | case ...: | patterns.cs:38:18:38:29 | MyStruct ms1 | semmle.label | successor | -| patterns.cs:38:18:38:29 | MyStruct ms1 | patterns.cs:38:36:38:38 | access to local variable ms1 | semmle.label | match | -| patterns.cs:38:18:38:29 | MyStruct ms1 | patterns.cs:41:13:41:46 | case ...: | semmle.label | no-match | +| patterns.cs:38:18:38:29 | After MyStruct ms1 [match] | patterns.cs:38:13:38:47 | After case ...: [match] | semmle.label | match | +| patterns.cs:38:18:38:29 | After MyStruct ms1 [no-match] | patterns.cs:38:13:38:47 | After case ...: [no-match] | semmle.label | no-match | +| patterns.cs:38:18:38:29 | MyStruct ms1 | patterns.cs:38:18:38:29 | After MyStruct ms1 [match] | semmle.label | match | +| patterns.cs:38:18:38:29 | MyStruct ms1 | patterns.cs:38:18:38:29 | After MyStruct ms1 [no-match] | semmle.label | no-match | | patterns.cs:38:36:38:38 | access to local variable ms1 | patterns.cs:38:36:38:40 | access to field X | semmle.label | successor | -| patterns.cs:38:36:38:40 | access to field X | patterns.cs:38:45:38:46 | 10 | semmle.label | successor | -| patterns.cs:38:36:38:46 | ... == ... | patterns.cs:39:17:39:56 | ...; | semmle.label | true | -| patterns.cs:38:36:38:46 | ... == ... | patterns.cs:41:13:41:46 | case ...: | semmle.label | false | +| patterns.cs:38:36:38:40 | After access to field X | patterns.cs:38:45:38:46 | 10 | semmle.label | successor | +| patterns.cs:38:36:38:40 | Before access to field X | patterns.cs:38:36:38:38 | access to local variable ms1 | semmle.label | successor | +| patterns.cs:38:36:38:40 | access to field X | patterns.cs:38:36:38:40 | After access to field X | semmle.label | successor | +| patterns.cs:38:36:38:46 | ... == ... | patterns.cs:38:36:38:46 | After ... == ... [false] | semmle.label | false | +| patterns.cs:38:36:38:46 | ... == ... | patterns.cs:38:36:38:46 | After ... == ... [true] | semmle.label | true | +| patterns.cs:38:36:38:46 | After ... == ... [false] | patterns.cs:41:13:41:46 | case ...: | semmle.label | successor | +| patterns.cs:38:36:38:46 | After ... == ... [true] | patterns.cs:39:17:39:56 | ...; | semmle.label | successor | +| patterns.cs:38:36:38:46 | Before ... == ... | patterns.cs:38:36:38:40 | Before access to field X | semmle.label | successor | | patterns.cs:38:45:38:46 | 10 | patterns.cs:38:36:38:46 | ... == ... | semmle.label | successor | -| patterns.cs:39:17:39:55 | call to method WriteLine | patterns.cs:40:17:40:22 | break; | semmle.label | successor | -| patterns.cs:39:17:39:56 | ...; | patterns.cs:39:35:39:54 | "Hit the breakpoint" | semmle.label | successor | +| patterns.cs:39:17:39:55 | After call to method WriteLine | patterns.cs:39:17:39:56 | After ...; | semmle.label | successor | +| patterns.cs:39:17:39:55 | Before call to method WriteLine | patterns.cs:39:35:39:54 | "Hit the breakpoint" | semmle.label | successor | +| patterns.cs:39:17:39:55 | call to method WriteLine | patterns.cs:39:17:39:55 | After call to method WriteLine | semmle.label | successor | +| patterns.cs:39:17:39:56 | ...; | patterns.cs:39:17:39:55 | Before call to method WriteLine | semmle.label | successor | +| patterns.cs:39:17:39:56 | After ...; | patterns.cs:40:17:40:22 | Before break; | semmle.label | successor | | patterns.cs:39:35:39:54 | "Hit the breakpoint" | patterns.cs:39:17:39:55 | call to method WriteLine | semmle.label | successor | -| patterns.cs:40:17:40:22 | break; | patterns.cs:46:9:63:9 | switch (...) {...} | semmle.label | break | +| patterns.cs:40:17:40:22 | Before break; | patterns.cs:40:17:40:22 | break; | semmle.label | successor | +| patterns.cs:40:17:40:22 | break; | patterns.cs:36:9:44:9 | After switch (...) {...} | semmle.label | break | +| patterns.cs:41:13:41:46 | After case ...: [match] | patterns.cs:41:36:41:45 | Before ... < ... | semmle.label | successor | +| patterns.cs:41:13:41:46 | After case ...: [no-match] | patterns.cs:36:9:44:9 | After switch (...) {...} | semmle.label | successor | | patterns.cs:41:13:41:46 | case ...: | patterns.cs:41:18:41:29 | MyStruct ms2 | semmle.label | successor | -| patterns.cs:41:18:41:29 | MyStruct ms2 | patterns.cs:41:36:41:38 | access to local variable ms2 | semmle.label | match | -| patterns.cs:41:18:41:29 | MyStruct ms2 | patterns.cs:46:9:63:9 | switch (...) {...} | semmle.label | no-match | +| patterns.cs:41:18:41:29 | After MyStruct ms2 [match] | patterns.cs:41:13:41:46 | After case ...: [match] | semmle.label | match | +| patterns.cs:41:18:41:29 | After MyStruct ms2 [no-match] | patterns.cs:41:13:41:46 | After case ...: [no-match] | semmle.label | no-match | +| patterns.cs:41:18:41:29 | MyStruct ms2 | patterns.cs:41:18:41:29 | After MyStruct ms2 [match] | semmle.label | match | +| patterns.cs:41:18:41:29 | MyStruct ms2 | patterns.cs:41:18:41:29 | After MyStruct ms2 [no-match] | semmle.label | no-match | | patterns.cs:41:36:41:38 | access to local variable ms2 | patterns.cs:41:36:41:40 | access to field X | semmle.label | successor | -| patterns.cs:41:36:41:40 | access to field X | patterns.cs:41:44:41:45 | 10 | semmle.label | successor | -| patterns.cs:41:36:41:45 | ... < ... | patterns.cs:42:17:42:59 | ...; | semmle.label | true | -| patterns.cs:41:36:41:45 | ... < ... | patterns.cs:46:9:63:9 | switch (...) {...} | semmle.label | false | +| patterns.cs:41:36:41:40 | After access to field X | patterns.cs:41:44:41:45 | 10 | semmle.label | successor | +| patterns.cs:41:36:41:40 | Before access to field X | patterns.cs:41:36:41:38 | access to local variable ms2 | semmle.label | successor | +| patterns.cs:41:36:41:40 | access to field X | patterns.cs:41:36:41:40 | After access to field X | semmle.label | successor | +| patterns.cs:41:36:41:45 | ... < ... | patterns.cs:41:36:41:45 | After ... < ... [false] | semmle.label | false | +| patterns.cs:41:36:41:45 | ... < ... | patterns.cs:41:36:41:45 | After ... < ... [true] | semmle.label | true | +| patterns.cs:41:36:41:45 | After ... < ... [false] | patterns.cs:36:9:44:9 | After switch (...) {...} | semmle.label | successor | +| patterns.cs:41:36:41:45 | After ... < ... [true] | patterns.cs:42:17:42:59 | ...; | semmle.label | successor | +| patterns.cs:41:36:41:45 | Before ... < ... | patterns.cs:41:36:41:40 | Before access to field X | semmle.label | successor | | patterns.cs:41:44:41:45 | 10 | patterns.cs:41:36:41:45 | ... < ... | semmle.label | successor | -| patterns.cs:42:17:42:58 | call to method WriteLine | patterns.cs:43:17:43:22 | break; | semmle.label | successor | -| patterns.cs:42:17:42:59 | ...; | patterns.cs:42:35:42:57 | "Missed the breakpoint" | semmle.label | successor | +| patterns.cs:42:17:42:58 | After call to method WriteLine | patterns.cs:42:17:42:59 | After ...; | semmle.label | successor | +| patterns.cs:42:17:42:58 | Before call to method WriteLine | patterns.cs:42:35:42:57 | "Missed the breakpoint" | semmle.label | successor | +| patterns.cs:42:17:42:58 | call to method WriteLine | patterns.cs:42:17:42:58 | After call to method WriteLine | semmle.label | successor | +| patterns.cs:42:17:42:59 | ...; | patterns.cs:42:17:42:58 | Before call to method WriteLine | semmle.label | successor | +| patterns.cs:42:17:42:59 | After ...; | patterns.cs:43:17:43:22 | Before break; | semmle.label | successor | | patterns.cs:42:35:42:57 | "Missed the breakpoint" | patterns.cs:42:17:42:58 | call to method WriteLine | semmle.label | successor | -| patterns.cs:43:17:43:22 | break; | patterns.cs:46:9:63:9 | switch (...) {...} | semmle.label | break | +| patterns.cs:43:17:43:22 | Before break; | patterns.cs:43:17:43:22 | break; | semmle.label | successor | +| patterns.cs:43:17:43:22 | break; | patterns.cs:36:9:44:9 | After switch (...) {...} | semmle.label | break | +| patterns.cs:46:9:63:9 | After switch (...) {...} | patterns.cs:65:9:73:9 | switch (...) {...} | semmle.label | successor | | patterns.cs:46:9:63:9 | switch (...) {...} | patterns.cs:46:17:46:17 | access to local variable s | semmle.label | successor | | patterns.cs:46:17:46:17 | access to local variable s | patterns.cs:48:13:48:50 | case ...: | semmle.label | successor | -| patterns.cs:48:13:48:50 | case ...: | patterns.cs:48:18:48:25 | access to type MyStruct | semmle.label | successor | -| patterns.cs:48:18:48:25 | access to type MyStruct | patterns.cs:48:18:48:38 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:48:18:48:25 | access to type MyStruct | patterns.cs:48:32:48:36 | Int32 x | semmle.label | match | -| patterns.cs:48:18:48:38 | [match] { ... } | patterns.cs:48:45:48:45 | access to local variable x | semmle.label | match | -| patterns.cs:48:18:48:38 | [no-match] { ... } | patterns.cs:51:13:51:39 | case ...: | semmle.label | no-match | -| patterns.cs:48:27:48:38 | [match] { ... } | patterns.cs:48:18:48:38 | [match] { ... } | semmle.label | match | -| patterns.cs:48:27:48:38 | [no-match] { ... } | patterns.cs:48:18:48:38 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:48:32:48:36 | Int32 x | patterns.cs:48:27:48:38 | [match] { ... } | semmle.label | match | -| patterns.cs:48:32:48:36 | Int32 x | patterns.cs:48:27:48:38 | [no-match] { ... } | semmle.label | no-match | +| patterns.cs:48:13:48:50 | After case ...: [match] | patterns.cs:48:45:48:49 | Before ... > ... | semmle.label | successor | +| patterns.cs:48:13:48:50 | After case ...: [no-match] | patterns.cs:51:13:51:39 | case ...: | semmle.label | successor | +| patterns.cs:48:13:48:50 | case ...: | patterns.cs:48:18:48:38 | Before { ... } | semmle.label | successor | +| patterns.cs:48:18:48:25 | access to type MyStruct | patterns.cs:48:27:48:38 | Before { ... } | semmle.label | successor | +| patterns.cs:48:18:48:38 | After { ... } [match] | patterns.cs:48:13:48:50 | After case ...: [match] | semmle.label | match | +| patterns.cs:48:18:48:38 | After { ... } [no-match] | patterns.cs:48:13:48:50 | After case ...: [no-match] | semmle.label | no-match | +| patterns.cs:48:18:48:38 | Before { ... } | patterns.cs:48:18:48:25 | access to type MyStruct | semmle.label | successor | +| patterns.cs:48:18:48:38 | { ... } | patterns.cs:48:18:48:38 | After { ... } [match] | semmle.label | match | +| patterns.cs:48:18:48:38 | { ... } | patterns.cs:48:18:48:38 | After { ... } [no-match] | semmle.label | no-match | +| patterns.cs:48:27:48:38 | After { ... } | patterns.cs:48:18:48:38 | { ... } | semmle.label | successor | +| patterns.cs:48:27:48:38 | Before { ... } | patterns.cs:48:32:48:36 | Int32 x | semmle.label | successor | +| patterns.cs:48:27:48:38 | { ... } | patterns.cs:48:27:48:38 | After { ... } | semmle.label | successor | +| patterns.cs:48:32:48:36 | Int32 x | patterns.cs:48:27:48:38 | { ... } | semmle.label | successor | | patterns.cs:48:45:48:45 | access to local variable x | patterns.cs:48:49:48:49 | 2 | semmle.label | successor | -| patterns.cs:48:45:48:49 | ... > ... | patterns.cs:49:17:49:37 | ...; | semmle.label | true | -| patterns.cs:48:45:48:49 | ... > ... | patterns.cs:51:13:51:39 | case ...: | semmle.label | false | +| patterns.cs:48:45:48:49 | ... > ... | patterns.cs:48:45:48:49 | After ... > ... [false] | semmle.label | false | +| patterns.cs:48:45:48:49 | ... > ... | patterns.cs:48:45:48:49 | After ... > ... [true] | semmle.label | true | +| patterns.cs:48:45:48:49 | After ... > ... [false] | patterns.cs:51:13:51:39 | case ...: | semmle.label | successor | +| patterns.cs:48:45:48:49 | After ... > ... [true] | patterns.cs:49:17:49:37 | ...; | semmle.label | successor | +| patterns.cs:48:45:48:49 | Before ... > ... | patterns.cs:48:45:48:45 | access to local variable x | semmle.label | successor | | patterns.cs:48:49:48:49 | 2 | patterns.cs:48:45:48:49 | ... > ... | semmle.label | successor | -| patterns.cs:49:17:49:36 | call to method WriteLine | patterns.cs:50:17:50:22 | break; | semmle.label | successor | -| patterns.cs:49:17:49:37 | ...; | patterns.cs:49:35:49:35 | access to local variable x | semmle.label | successor | +| patterns.cs:49:17:49:36 | After call to method WriteLine | patterns.cs:49:17:49:37 | After ...; | semmle.label | successor | +| patterns.cs:49:17:49:36 | Before call to method WriteLine | patterns.cs:49:35:49:35 | access to local variable x | semmle.label | successor | +| patterns.cs:49:17:49:36 | call to method WriteLine | patterns.cs:49:17:49:36 | After call to method WriteLine | semmle.label | successor | +| patterns.cs:49:17:49:37 | ...; | patterns.cs:49:17:49:36 | Before call to method WriteLine | semmle.label | successor | +| patterns.cs:49:17:49:37 | After ...; | patterns.cs:50:17:50:22 | Before break; | semmle.label | successor | | patterns.cs:49:35:49:35 | access to local variable x | patterns.cs:49:17:49:36 | call to method WriteLine | semmle.label | successor | -| patterns.cs:50:17:50:22 | break; | patterns.cs:65:9:73:9 | switch (...) {...} | semmle.label | break | -| patterns.cs:51:13:51:39 | case ...: | patterns.cs:51:18:51:38 | MyStruct ms | semmle.label | successor | -| patterns.cs:51:18:51:38 | MyStruct ms | patterns.cs:51:18:51:38 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:51:18:51:38 | MyStruct ms | patterns.cs:51:32:51:33 | 10 | semmle.label | match | -| patterns.cs:51:18:51:38 | [match] { ... } | patterns.cs:52:17:52:56 | ...; | semmle.label | match | -| patterns.cs:51:18:51:38 | [no-match] { ... } | patterns.cs:54:13:54:43 | case ...: | semmle.label | no-match | -| patterns.cs:51:27:51:35 | [match] { ... } | patterns.cs:51:18:51:38 | [match] { ... } | semmle.label | match | -| patterns.cs:51:27:51:35 | [no-match] { ... } | patterns.cs:51:18:51:38 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:51:32:51:33 | 10 | patterns.cs:51:27:51:35 | [match] { ... } | semmle.label | match | -| patterns.cs:51:32:51:33 | 10 | patterns.cs:51:27:51:35 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:52:17:52:55 | call to method WriteLine | patterns.cs:53:17:53:22 | break; | semmle.label | successor | -| patterns.cs:52:17:52:56 | ...; | patterns.cs:52:35:52:54 | "Hit the breakpoint" | semmle.label | successor | +| patterns.cs:50:17:50:22 | Before break; | patterns.cs:50:17:50:22 | break; | semmle.label | successor | +| patterns.cs:50:17:50:22 | break; | patterns.cs:46:9:63:9 | After switch (...) {...} | semmle.label | break | +| patterns.cs:51:13:51:39 | After case ...: [match] | patterns.cs:52:17:52:56 | ...; | semmle.label | successor | +| patterns.cs:51:13:51:39 | After case ...: [no-match] | patterns.cs:54:13:54:43 | case ...: | semmle.label | successor | +| patterns.cs:51:13:51:39 | case ...: | patterns.cs:51:18:51:38 | Before { ... } | semmle.label | successor | +| patterns.cs:51:18:51:25 | access to type MyStruct | patterns.cs:51:27:51:35 | Before { ... } | semmle.label | successor | +| patterns.cs:51:18:51:38 | After { ... } [match] | patterns.cs:51:13:51:39 | After case ...: [match] | semmle.label | match | +| patterns.cs:51:18:51:38 | After { ... } [no-match] | patterns.cs:51:13:51:39 | After case ...: [no-match] | semmle.label | no-match | +| patterns.cs:51:18:51:38 | Before { ... } | patterns.cs:51:18:51:38 | MyStruct ms | semmle.label | successor | +| patterns.cs:51:18:51:38 | MyStruct ms | patterns.cs:51:18:51:25 | access to type MyStruct | semmle.label | successor | +| patterns.cs:51:18:51:38 | { ... } | patterns.cs:51:18:51:38 | After { ... } [match] | semmle.label | match | +| patterns.cs:51:18:51:38 | { ... } | patterns.cs:51:18:51:38 | After { ... } [no-match] | semmle.label | no-match | +| patterns.cs:51:27:51:35 | After { ... } | patterns.cs:51:18:51:38 | { ... } | semmle.label | successor | +| patterns.cs:51:27:51:35 | Before { ... } | patterns.cs:51:32:51:33 | 10 | semmle.label | successor | +| patterns.cs:51:27:51:35 | { ... } | patterns.cs:51:27:51:35 | After { ... } | semmle.label | successor | +| patterns.cs:51:32:51:33 | 10 | patterns.cs:51:27:51:35 | { ... } | semmle.label | successor | +| patterns.cs:52:17:52:55 | After call to method WriteLine | patterns.cs:52:17:52:56 | After ...; | semmle.label | successor | +| patterns.cs:52:17:52:55 | Before call to method WriteLine | patterns.cs:52:35:52:54 | "Hit the breakpoint" | semmle.label | successor | +| patterns.cs:52:17:52:55 | call to method WriteLine | patterns.cs:52:17:52:55 | After call to method WriteLine | semmle.label | successor | +| patterns.cs:52:17:52:56 | ...; | patterns.cs:52:17:52:55 | Before call to method WriteLine | semmle.label | successor | +| patterns.cs:52:17:52:56 | After ...; | patterns.cs:53:17:53:22 | Before break; | semmle.label | successor | | patterns.cs:52:35:52:54 | "Hit the breakpoint" | patterns.cs:52:17:52:55 | call to method WriteLine | semmle.label | successor | -| patterns.cs:53:17:53:22 | break; | patterns.cs:65:9:73:9 | switch (...) {...} | semmle.label | break | -| patterns.cs:54:13:54:43 | case ...: | patterns.cs:54:23:54:28 | Int32 x2 | semmle.label | successor | -| patterns.cs:54:18:54:30 | [match] { ... } | patterns.cs:54:18:54:30 | [match] { ... } | semmle.label | match | -| patterns.cs:54:18:54:30 | [match] { ... } | patterns.cs:54:37:54:38 | access to local variable x2 | semmle.label | match | -| patterns.cs:54:18:54:30 | [no-match] { ... } | patterns.cs:54:18:54:30 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:54:18:54:30 | [no-match] { ... } | patterns.cs:57:13:57:24 | case ...: | semmle.label | no-match | -| patterns.cs:54:23:54:28 | Int32 x2 | patterns.cs:54:18:54:30 | [match] { ... } | semmle.label | match | -| patterns.cs:54:23:54:28 | Int32 x2 | patterns.cs:54:18:54:30 | [no-match] { ... } | semmle.label | no-match | +| patterns.cs:53:17:53:22 | Before break; | patterns.cs:53:17:53:22 | break; | semmle.label | successor | +| patterns.cs:53:17:53:22 | break; | patterns.cs:46:9:63:9 | After switch (...) {...} | semmle.label | break | +| patterns.cs:54:13:54:43 | After case ...: [match] | patterns.cs:54:37:54:42 | Before ... > ... | semmle.label | successor | +| patterns.cs:54:13:54:43 | After case ...: [no-match] | patterns.cs:57:13:57:24 | case ...: | semmle.label | successor | +| patterns.cs:54:13:54:43 | case ...: | patterns.cs:54:18:54:30 | Before { ... } | semmle.label | successor | +| patterns.cs:54:18:54:30 | After { ... } | patterns.cs:54:18:54:30 | { ... } | semmle.label | successor | +| patterns.cs:54:18:54:30 | After { ... } [match] | patterns.cs:54:13:54:43 | After case ...: [match] | semmle.label | match | +| patterns.cs:54:18:54:30 | After { ... } [no-match] | patterns.cs:54:13:54:43 | After case ...: [no-match] | semmle.label | no-match | +| patterns.cs:54:18:54:30 | Before { ... } | patterns.cs:54:18:54:30 | Before { ... } | semmle.label | successor | +| patterns.cs:54:18:54:30 | Before { ... } | patterns.cs:54:23:54:28 | Int32 x2 | semmle.label | successor | +| patterns.cs:54:18:54:30 | { ... } | patterns.cs:54:18:54:30 | After { ... } | semmle.label | successor | +| patterns.cs:54:18:54:30 | { ... } | patterns.cs:54:18:54:30 | After { ... } [match] | semmle.label | match | +| patterns.cs:54:18:54:30 | { ... } | patterns.cs:54:18:54:30 | After { ... } [no-match] | semmle.label | no-match | +| patterns.cs:54:23:54:28 | Int32 x2 | patterns.cs:54:18:54:30 | { ... } | semmle.label | successor | | patterns.cs:54:37:54:38 | access to local variable x2 | patterns.cs:54:42:54:42 | 2 | semmle.label | successor | -| patterns.cs:54:37:54:42 | ... > ... | patterns.cs:55:17:55:38 | ...; | semmle.label | true | -| patterns.cs:54:37:54:42 | ... > ... | patterns.cs:57:13:57:24 | case ...: | semmle.label | false | +| patterns.cs:54:37:54:42 | ... > ... | patterns.cs:54:37:54:42 | After ... > ... [false] | semmle.label | false | +| patterns.cs:54:37:54:42 | ... > ... | patterns.cs:54:37:54:42 | After ... > ... [true] | semmle.label | true | +| patterns.cs:54:37:54:42 | After ... > ... [false] | patterns.cs:57:13:57:24 | case ...: | semmle.label | successor | +| patterns.cs:54:37:54:42 | After ... > ... [true] | patterns.cs:55:17:55:38 | ...; | semmle.label | successor | +| patterns.cs:54:37:54:42 | Before ... > ... | patterns.cs:54:37:54:38 | access to local variable x2 | semmle.label | successor | | patterns.cs:54:42:54:42 | 2 | patterns.cs:54:37:54:42 | ... > ... | semmle.label | successor | -| patterns.cs:55:17:55:37 | call to method WriteLine | patterns.cs:56:17:56:22 | break; | semmle.label | successor | -| patterns.cs:55:17:55:38 | ...; | patterns.cs:55:35:55:36 | access to local variable x2 | semmle.label | successor | +| patterns.cs:55:17:55:37 | After call to method WriteLine | patterns.cs:55:17:55:38 | After ...; | semmle.label | successor | +| patterns.cs:55:17:55:37 | Before call to method WriteLine | patterns.cs:55:35:55:36 | access to local variable x2 | semmle.label | successor | +| patterns.cs:55:17:55:37 | call to method WriteLine | patterns.cs:55:17:55:37 | After call to method WriteLine | semmle.label | successor | +| patterns.cs:55:17:55:38 | ...; | patterns.cs:55:17:55:37 | Before call to method WriteLine | semmle.label | successor | +| patterns.cs:55:17:55:38 | After ...; | patterns.cs:56:17:56:22 | Before break; | semmle.label | successor | | patterns.cs:55:35:55:36 | access to local variable x2 | patterns.cs:55:17:55:37 | call to method WriteLine | semmle.label | successor | -| patterns.cs:56:17:56:22 | break; | patterns.cs:65:9:73:9 | switch (...) {...} | semmle.label | break | -| patterns.cs:57:13:57:24 | case ...: | patterns.cs:57:18:57:23 | ( ... ) | semmle.label | successor | -| patterns.cs:57:18:57:23 | ( ... ) | patterns.cs:57:18:57:23 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:57:18:57:23 | ( ... ) | patterns.cs:57:19:57:19 | 1 | semmle.label | match | -| patterns.cs:57:18:57:23 | [match] { ... } | patterns.cs:58:17:58:22 | break; | semmle.label | match | -| patterns.cs:57:18:57:23 | [no-match] { ... } | patterns.cs:59:13:59:28 | case ...: | semmle.label | no-match | -| patterns.cs:57:19:57:19 | 1 | patterns.cs:57:18:57:23 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:57:19:57:19 | 1 | patterns.cs:57:22:57:22 | 2 | semmle.label | match | -| patterns.cs:57:22:57:22 | 2 | patterns.cs:57:18:57:23 | [match] { ... } | semmle.label | match | -| patterns.cs:57:22:57:22 | 2 | patterns.cs:57:18:57:23 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:58:17:58:22 | break; | patterns.cs:65:9:73:9 | switch (...) {...} | semmle.label | break | -| patterns.cs:59:13:59:28 | case ...: | patterns.cs:59:23:59:23 | Int32 x | semmle.label | successor | -| patterns.cs:59:18:59:27 | (..., ...) | patterns.cs:60:17:60:22 | break; | semmle.label | match | -| patterns.cs:59:18:59:27 | (..., ...) | patterns.cs:61:13:61:20 | default: | semmle.label | no-match | +| patterns.cs:56:17:56:22 | Before break; | patterns.cs:56:17:56:22 | break; | semmle.label | successor | +| patterns.cs:56:17:56:22 | break; | patterns.cs:46:9:63:9 | After switch (...) {...} | semmle.label | break | +| patterns.cs:57:13:57:24 | After case ...: [match] | patterns.cs:58:17:58:22 | Before break; | semmle.label | successor | +| patterns.cs:57:13:57:24 | After case ...: [no-match] | patterns.cs:59:13:59:28 | case ...: | semmle.label | successor | +| patterns.cs:57:13:57:24 | case ...: | patterns.cs:57:18:57:23 | Before { ... } | semmle.label | successor | +| patterns.cs:57:18:57:23 | ( ... ) | patterns.cs:57:18:57:23 | After ( ... ) | semmle.label | successor | +| patterns.cs:57:18:57:23 | After ( ... ) | patterns.cs:57:18:57:23 | { ... } | semmle.label | successor | +| patterns.cs:57:18:57:23 | After { ... } [match] | patterns.cs:57:13:57:24 | After case ...: [match] | semmle.label | match | +| patterns.cs:57:18:57:23 | After { ... } [no-match] | patterns.cs:57:13:57:24 | After case ...: [no-match] | semmle.label | no-match | +| patterns.cs:57:18:57:23 | Before ( ... ) | patterns.cs:57:19:57:19 | 1 | semmle.label | successor | +| patterns.cs:57:18:57:23 | Before { ... } | patterns.cs:57:18:57:23 | Before ( ... ) | semmle.label | successor | +| patterns.cs:57:18:57:23 | { ... } | patterns.cs:57:18:57:23 | After { ... } [match] | semmle.label | match | +| patterns.cs:57:18:57:23 | { ... } | patterns.cs:57:18:57:23 | After { ... } [no-match] | semmle.label | no-match | +| patterns.cs:57:19:57:19 | 1 | patterns.cs:57:22:57:22 | 2 | semmle.label | successor | +| patterns.cs:57:22:57:22 | 2 | patterns.cs:57:18:57:23 | ( ... ) | semmle.label | successor | +| patterns.cs:58:17:58:22 | Before break; | patterns.cs:58:17:58:22 | break; | semmle.label | successor | +| patterns.cs:58:17:58:22 | break; | patterns.cs:46:9:63:9 | After switch (...) {...} | semmle.label | break | +| patterns.cs:59:13:59:28 | After case ...: [match] | patterns.cs:60:17:60:22 | Before break; | semmle.label | successor | +| patterns.cs:59:13:59:28 | After case ...: [no-match] | patterns.cs:61:13:61:20 | default: | semmle.label | successor | +| patterns.cs:59:13:59:28 | case ...: | patterns.cs:59:18:59:27 | Before (..., ...) | semmle.label | successor | +| patterns.cs:59:18:59:27 | (..., ...) | patterns.cs:59:18:59:27 | After (..., ...) [match] | semmle.label | match | +| patterns.cs:59:18:59:27 | (..., ...) | patterns.cs:59:18:59:27 | After (..., ...) [no-match] | semmle.label | no-match | +| patterns.cs:59:18:59:27 | After (..., ...) [match] | patterns.cs:59:13:59:28 | After case ...: [match] | semmle.label | match | +| patterns.cs:59:18:59:27 | After (..., ...) [no-match] | patterns.cs:59:13:59:28 | After case ...: [no-match] | semmle.label | no-match | +| patterns.cs:59:18:59:27 | Before (..., ...) | patterns.cs:59:23:59:23 | Int32 x | semmle.label | successor | | patterns.cs:59:23:59:23 | Int32 x | patterns.cs:59:26:59:26 | Int32 y | semmle.label | successor | | patterns.cs:59:26:59:26 | Int32 y | patterns.cs:59:18:59:27 | (..., ...) | semmle.label | successor | -| patterns.cs:60:17:60:22 | break; | patterns.cs:65:9:73:9 | switch (...) {...} | semmle.label | break | -| patterns.cs:61:13:61:20 | default: | patterns.cs:62:17:62:22 | break; | semmle.label | successor | -| patterns.cs:62:17:62:22 | break; | patterns.cs:65:9:73:9 | switch (...) {...} | semmle.label | break | +| patterns.cs:60:17:60:22 | Before break; | patterns.cs:60:17:60:22 | break; | semmle.label | successor | +| patterns.cs:60:17:60:22 | break; | patterns.cs:46:9:63:9 | After switch (...) {...} | semmle.label | break | +| patterns.cs:61:13:61:20 | After default: [match] | patterns.cs:62:17:62:22 | Before break; | semmle.label | successor | +| patterns.cs:61:13:61:20 | default: | patterns.cs:61:13:61:20 | After default: [match] | semmle.label | match | +| patterns.cs:62:17:62:22 | Before break; | patterns.cs:62:17:62:22 | break; | semmle.label | successor | +| patterns.cs:62:17:62:22 | break; | patterns.cs:46:9:63:9 | After switch (...) {...} | semmle.label | break | +| patterns.cs:65:9:73:9 | After switch (...) {...} | patterns.cs:76:9:84:9 | switch (...) {...} | semmle.label | successor | | patterns.cs:65:9:73:9 | switch (...) {...} | patterns.cs:65:17:65:17 | access to local variable s | semmle.label | successor | | patterns.cs:65:17:65:17 | access to local variable s | patterns.cs:67:13:67:50 | case ...: | semmle.label | successor | -| patterns.cs:67:13:67:50 | case ...: | patterns.cs:67:18:67:25 | access to type MyStruct | semmle.label | successor | -| patterns.cs:67:18:67:25 | access to type MyStruct | patterns.cs:67:18:67:38 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:67:18:67:25 | access to type MyStruct | patterns.cs:67:32:67:36 | Int32 x | semmle.label | match | -| patterns.cs:67:18:67:38 | [match] { ... } | patterns.cs:67:45:67:45 | access to local variable x | semmle.label | match | -| patterns.cs:67:18:67:38 | [no-match] { ... } | patterns.cs:70:13:70:51 | case ...: | semmle.label | no-match | -| patterns.cs:67:27:67:38 | [match] { ... } | patterns.cs:67:18:67:38 | [match] { ... } | semmle.label | match | -| patterns.cs:67:27:67:38 | [no-match] { ... } | patterns.cs:67:18:67:38 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:67:32:67:36 | Int32 x | patterns.cs:67:27:67:38 | [match] { ... } | semmle.label | match | -| patterns.cs:67:32:67:36 | Int32 x | patterns.cs:67:27:67:38 | [no-match] { ... } | semmle.label | no-match | +| patterns.cs:67:13:67:50 | After case ...: [match] | patterns.cs:67:45:67:49 | Before ... > ... | semmle.label | successor | +| patterns.cs:67:13:67:50 | After case ...: [no-match] | patterns.cs:70:13:70:51 | case ...: | semmle.label | successor | +| patterns.cs:67:13:67:50 | case ...: | patterns.cs:67:18:67:38 | Before { ... } | semmle.label | successor | +| patterns.cs:67:18:67:25 | access to type MyStruct | patterns.cs:67:27:67:38 | Before { ... } | semmle.label | successor | +| patterns.cs:67:18:67:38 | After { ... } [match] | patterns.cs:67:13:67:50 | After case ...: [match] | semmle.label | match | +| patterns.cs:67:18:67:38 | After { ... } [no-match] | patterns.cs:67:13:67:50 | After case ...: [no-match] | semmle.label | no-match | +| patterns.cs:67:18:67:38 | Before { ... } | patterns.cs:67:18:67:25 | access to type MyStruct | semmle.label | successor | +| patterns.cs:67:18:67:38 | { ... } | patterns.cs:67:18:67:38 | After { ... } [match] | semmle.label | match | +| patterns.cs:67:18:67:38 | { ... } | patterns.cs:67:18:67:38 | After { ... } [no-match] | semmle.label | no-match | +| patterns.cs:67:27:67:38 | After { ... } | patterns.cs:67:18:67:38 | { ... } | semmle.label | successor | +| patterns.cs:67:27:67:38 | Before { ... } | patterns.cs:67:32:67:36 | Int32 x | semmle.label | successor | +| patterns.cs:67:27:67:38 | { ... } | patterns.cs:67:27:67:38 | After { ... } | semmle.label | successor | +| patterns.cs:67:32:67:36 | Int32 x | patterns.cs:67:27:67:38 | { ... } | semmle.label | successor | | patterns.cs:67:45:67:45 | access to local variable x | patterns.cs:67:49:67:49 | 2 | semmle.label | successor | -| patterns.cs:67:45:67:49 | ... > ... | patterns.cs:68:17:68:37 | ...; | semmle.label | true | -| patterns.cs:67:45:67:49 | ... > ... | patterns.cs:70:13:70:51 | case ...: | semmle.label | false | +| patterns.cs:67:45:67:49 | ... > ... | patterns.cs:67:45:67:49 | After ... > ... [false] | semmle.label | false | +| patterns.cs:67:45:67:49 | ... > ... | patterns.cs:67:45:67:49 | After ... > ... [true] | semmle.label | true | +| patterns.cs:67:45:67:49 | After ... > ... [false] | patterns.cs:70:13:70:51 | case ...: | semmle.label | successor | +| patterns.cs:67:45:67:49 | After ... > ... [true] | patterns.cs:68:17:68:37 | ...; | semmle.label | successor | +| patterns.cs:67:45:67:49 | Before ... > ... | patterns.cs:67:45:67:45 | access to local variable x | semmle.label | successor | | patterns.cs:67:49:67:49 | 2 | patterns.cs:67:45:67:49 | ... > ... | semmle.label | successor | -| patterns.cs:68:17:68:36 | call to method WriteLine | patterns.cs:69:17:69:22 | break; | semmle.label | successor | -| patterns.cs:68:17:68:37 | ...; | patterns.cs:68:35:68:35 | access to local variable x | semmle.label | successor | +| patterns.cs:68:17:68:36 | After call to method WriteLine | patterns.cs:68:17:68:37 | After ...; | semmle.label | successor | +| patterns.cs:68:17:68:36 | Before call to method WriteLine | patterns.cs:68:35:68:35 | access to local variable x | semmle.label | successor | +| patterns.cs:68:17:68:36 | call to method WriteLine | patterns.cs:68:17:68:36 | After call to method WriteLine | semmle.label | successor | +| patterns.cs:68:17:68:37 | ...; | patterns.cs:68:17:68:36 | Before call to method WriteLine | semmle.label | successor | +| patterns.cs:68:17:68:37 | After ...; | patterns.cs:69:17:69:22 | Before break; | semmle.label | successor | | patterns.cs:68:35:68:35 | access to local variable x | patterns.cs:68:17:68:36 | call to method WriteLine | semmle.label | successor | -| patterns.cs:69:17:69:22 | break; | patterns.cs:76:9:84:9 | switch (...) {...} | semmle.label | break | -| patterns.cs:70:13:70:51 | case ...: | patterns.cs:70:18:70:38 | MyStruct ms | semmle.label | successor | -| patterns.cs:70:18:70:38 | MyStruct ms | patterns.cs:70:18:70:38 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:70:18:70:38 | MyStruct ms | patterns.cs:70:32:70:33 | 10 | semmle.label | match | -| patterns.cs:70:18:70:38 | [match] { ... } | patterns.cs:70:45:70:45 | access to local variable s | semmle.label | match | -| patterns.cs:70:18:70:38 | [no-match] { ... } | patterns.cs:76:9:84:9 | switch (...) {...} | semmle.label | no-match | -| patterns.cs:70:27:70:35 | [match] { ... } | patterns.cs:70:18:70:38 | [match] { ... } | semmle.label | match | -| patterns.cs:70:27:70:35 | [no-match] { ... } | patterns.cs:70:18:70:38 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:70:32:70:33 | 10 | patterns.cs:70:27:70:35 | [match] { ... } | semmle.label | match | -| patterns.cs:70:32:70:33 | 10 | patterns.cs:70:27:70:35 | [no-match] { ... } | semmle.label | no-match | +| patterns.cs:69:17:69:22 | Before break; | patterns.cs:69:17:69:22 | break; | semmle.label | successor | +| patterns.cs:69:17:69:22 | break; | patterns.cs:65:9:73:9 | After switch (...) {...} | semmle.label | break | +| patterns.cs:70:13:70:51 | After case ...: [match] | patterns.cs:70:45:70:50 | Before ... == ... | semmle.label | successor | +| patterns.cs:70:13:70:51 | After case ...: [no-match] | patterns.cs:65:9:73:9 | After switch (...) {...} | semmle.label | successor | +| patterns.cs:70:13:70:51 | case ...: | patterns.cs:70:18:70:38 | Before { ... } | semmle.label | successor | +| patterns.cs:70:18:70:25 | access to type MyStruct | patterns.cs:70:27:70:35 | Before { ... } | semmle.label | successor | +| patterns.cs:70:18:70:38 | After { ... } [match] | patterns.cs:70:13:70:51 | After case ...: [match] | semmle.label | match | +| patterns.cs:70:18:70:38 | After { ... } [no-match] | patterns.cs:70:13:70:51 | After case ...: [no-match] | semmle.label | no-match | +| patterns.cs:70:18:70:38 | Before { ... } | patterns.cs:70:18:70:38 | MyStruct ms | semmle.label | successor | +| patterns.cs:70:18:70:38 | MyStruct ms | patterns.cs:70:18:70:25 | access to type MyStruct | semmle.label | successor | +| patterns.cs:70:18:70:38 | { ... } | patterns.cs:70:18:70:38 | After { ... } [match] | semmle.label | match | +| patterns.cs:70:18:70:38 | { ... } | patterns.cs:70:18:70:38 | After { ... } [no-match] | semmle.label | no-match | +| patterns.cs:70:27:70:35 | After { ... } | patterns.cs:70:18:70:38 | { ... } | semmle.label | successor | +| patterns.cs:70:27:70:35 | Before { ... } | patterns.cs:70:32:70:33 | 10 | semmle.label | successor | +| patterns.cs:70:27:70:35 | { ... } | patterns.cs:70:27:70:35 | After { ... } | semmle.label | successor | +| patterns.cs:70:32:70:33 | 10 | patterns.cs:70:27:70:35 | { ... } | semmle.label | successor | | patterns.cs:70:45:70:45 | access to local variable s | patterns.cs:70:45:70:47 | access to field X | semmle.label | successor | -| patterns.cs:70:45:70:47 | access to field X | patterns.cs:70:50:70:50 | 0 | semmle.label | successor | -| patterns.cs:70:45:70:50 | ... == ... | patterns.cs:71:17:71:56 | ...; | semmle.label | true | -| patterns.cs:70:45:70:50 | ... == ... | patterns.cs:76:9:84:9 | switch (...) {...} | semmle.label | false | +| patterns.cs:70:45:70:47 | After access to field X | patterns.cs:70:50:70:50 | 0 | semmle.label | successor | +| patterns.cs:70:45:70:47 | Before access to field X | patterns.cs:70:45:70:45 | access to local variable s | semmle.label | successor | +| patterns.cs:70:45:70:47 | access to field X | patterns.cs:70:45:70:47 | After access to field X | semmle.label | successor | +| patterns.cs:70:45:70:50 | ... == ... | patterns.cs:70:45:70:50 | After ... == ... [false] | semmle.label | false | +| patterns.cs:70:45:70:50 | ... == ... | patterns.cs:70:45:70:50 | After ... == ... [true] | semmle.label | true | +| patterns.cs:70:45:70:50 | After ... == ... [false] | patterns.cs:65:9:73:9 | After switch (...) {...} | semmle.label | successor | +| patterns.cs:70:45:70:50 | After ... == ... [true] | patterns.cs:71:17:71:56 | ...; | semmle.label | successor | +| patterns.cs:70:45:70:50 | Before ... == ... | patterns.cs:70:45:70:47 | Before access to field X | semmle.label | successor | | patterns.cs:70:50:70:50 | 0 | patterns.cs:70:45:70:50 | ... == ... | semmle.label | successor | -| patterns.cs:71:17:71:55 | call to method WriteLine | patterns.cs:72:17:72:22 | break; | semmle.label | successor | -| patterns.cs:71:17:71:56 | ...; | patterns.cs:71:35:71:54 | "Hit the breakpoint" | semmle.label | successor | +| patterns.cs:71:17:71:55 | After call to method WriteLine | patterns.cs:71:17:71:56 | After ...; | semmle.label | successor | +| patterns.cs:71:17:71:55 | Before call to method WriteLine | patterns.cs:71:35:71:54 | "Hit the breakpoint" | semmle.label | successor | +| patterns.cs:71:17:71:55 | call to method WriteLine | patterns.cs:71:17:71:55 | After call to method WriteLine | semmle.label | successor | +| patterns.cs:71:17:71:56 | ...; | patterns.cs:71:17:71:55 | Before call to method WriteLine | semmle.label | successor | +| patterns.cs:71:17:71:56 | After ...; | patterns.cs:72:17:72:22 | Before break; | semmle.label | successor | | patterns.cs:71:35:71:54 | "Hit the breakpoint" | patterns.cs:71:17:71:55 | call to method WriteLine | semmle.label | successor | -| patterns.cs:72:17:72:22 | break; | patterns.cs:76:9:84:9 | switch (...) {...} | semmle.label | break | -| patterns.cs:76:9:84:9 | switch (...) {...} | patterns.cs:76:17:76:28 | object creation of type Object | semmle.label | successor | -| patterns.cs:76:17:76:28 | object creation of type Object | patterns.cs:78:13:78:43 | case ...: | semmle.label | successor | -| patterns.cs:78:13:78:43 | case ...: | patterns.cs:78:18:78:33 | ( ... ) | semmle.label | successor | -| patterns.cs:78:18:78:33 | ( ... ) | patterns.cs:78:18:78:33 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:78:18:78:33 | ( ... ) | patterns.cs:78:19:78:23 | Int32 x | semmle.label | match | -| patterns.cs:78:18:78:33 | [match] { ... } | patterns.cs:78:40:78:40 | access to local variable x | semmle.label | match | -| patterns.cs:78:18:78:33 | [no-match] { ... } | patterns.cs:80:13:80:20 | case ...: | semmle.label | no-match | -| patterns.cs:78:19:78:23 | Int32 x | patterns.cs:78:18:78:33 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:78:19:78:23 | Int32 x | patterns.cs:78:26:78:32 | Single y | semmle.label | match | -| patterns.cs:78:26:78:32 | Single y | patterns.cs:78:18:78:33 | [match] { ... } | semmle.label | match | -| patterns.cs:78:26:78:32 | Single y | patterns.cs:78:18:78:33 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:78:40:78:40 | (...) ... | patterns.cs:78:42:78:42 | access to local variable y | semmle.label | successor | +| patterns.cs:72:17:72:22 | Before break; | patterns.cs:72:17:72:22 | break; | semmle.label | successor | +| patterns.cs:72:17:72:22 | break; | patterns.cs:65:9:73:9 | After switch (...) {...} | semmle.label | break | +| patterns.cs:76:9:84:9 | After switch (...) {...} | patterns.cs:86:9:89:9 | switch (...) {...} | semmle.label | successor | +| patterns.cs:76:9:84:9 | switch (...) {...} | patterns.cs:76:17:76:28 | Before object creation of type Object | semmle.label | successor | +| patterns.cs:76:17:76:28 | After object creation of type Object | patterns.cs:78:13:78:43 | case ...: | semmle.label | successor | +| patterns.cs:76:17:76:28 | Before object creation of type Object | patterns.cs:76:17:76:28 | object creation of type Object | semmle.label | successor | +| patterns.cs:76:17:76:28 | object creation of type Object | patterns.cs:76:17:76:28 | After object creation of type Object | semmle.label | successor | +| patterns.cs:78:13:78:43 | After case ...: [match] | patterns.cs:78:40:78:42 | Before ... < ... | semmle.label | successor | +| patterns.cs:78:13:78:43 | After case ...: [no-match] | patterns.cs:80:13:80:20 | case ...: | semmle.label | successor | +| patterns.cs:78:13:78:43 | case ...: | patterns.cs:78:18:78:33 | Before { ... } | semmle.label | successor | +| patterns.cs:78:18:78:33 | ( ... ) | patterns.cs:78:18:78:33 | After ( ... ) | semmle.label | successor | +| patterns.cs:78:18:78:33 | After ( ... ) | patterns.cs:78:18:78:33 | { ... } | semmle.label | successor | +| patterns.cs:78:18:78:33 | After { ... } [match] | patterns.cs:78:13:78:43 | After case ...: [match] | semmle.label | match | +| patterns.cs:78:18:78:33 | After { ... } [no-match] | patterns.cs:78:13:78:43 | After case ...: [no-match] | semmle.label | no-match | +| patterns.cs:78:18:78:33 | Before ( ... ) | patterns.cs:78:19:78:23 | Int32 x | semmle.label | successor | +| patterns.cs:78:18:78:33 | Before { ... } | patterns.cs:78:18:78:33 | Before ( ... ) | semmle.label | successor | +| patterns.cs:78:18:78:33 | { ... } | patterns.cs:78:18:78:33 | After { ... } [match] | semmle.label | match | +| patterns.cs:78:18:78:33 | { ... } | patterns.cs:78:18:78:33 | After { ... } [no-match] | semmle.label | no-match | +| patterns.cs:78:19:78:23 | Int32 x | patterns.cs:78:26:78:32 | Single y | semmle.label | successor | +| patterns.cs:78:26:78:32 | Single y | patterns.cs:78:18:78:33 | ( ... ) | semmle.label | successor | +| patterns.cs:78:40:78:40 | (...) ... | patterns.cs:78:40:78:40 | After (...) ... | semmle.label | successor | +| patterns.cs:78:40:78:40 | After (...) ... | patterns.cs:78:42:78:42 | access to local variable y | semmle.label | successor | +| patterns.cs:78:40:78:40 | Before (...) ... | patterns.cs:78:40:78:40 | access to local variable x | semmle.label | successor | | patterns.cs:78:40:78:40 | access to local variable x | patterns.cs:78:40:78:40 | (...) ... | semmle.label | successor | -| patterns.cs:78:40:78:42 | ... < ... | patterns.cs:79:17:79:22 | break; | semmle.label | true | -| patterns.cs:78:40:78:42 | ... < ... | patterns.cs:80:13:80:20 | case ...: | semmle.label | false | +| patterns.cs:78:40:78:42 | ... < ... | patterns.cs:78:40:78:42 | After ... < ... [false] | semmle.label | false | +| patterns.cs:78:40:78:42 | ... < ... | patterns.cs:78:40:78:42 | After ... < ... [true] | semmle.label | true | +| patterns.cs:78:40:78:42 | After ... < ... [false] | patterns.cs:80:13:80:20 | case ...: | semmle.label | successor | +| patterns.cs:78:40:78:42 | After ... < ... [true] | patterns.cs:79:17:79:22 | Before break; | semmle.label | successor | +| patterns.cs:78:40:78:42 | Before ... < ... | patterns.cs:78:40:78:40 | Before (...) ... | semmle.label | successor | | patterns.cs:78:42:78:42 | access to local variable y | patterns.cs:78:40:78:42 | ... < ... | semmle.label | successor | -| patterns.cs:79:17:79:22 | break; | patterns.cs:86:9:89:9 | switch (...) {...} | semmle.label | break | -| patterns.cs:80:13:80:20 | case ...: | patterns.cs:80:18:80:19 | ( ... ) | semmle.label | successor | -| patterns.cs:80:18:80:19 | ( ... ) | patterns.cs:80:18:80:19 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:80:18:80:19 | [no-match] { ... } | patterns.cs:82:13:82:20 | case ...: | semmle.label | no-match | -| patterns.cs:82:13:82:20 | case ...: | patterns.cs:82:18:82:19 | { ... } | semmle.label | successor | -| patterns.cs:82:18:82:19 | [match] { ... } | patterns.cs:83:17:83:22 | break; | semmle.label | match | -| patterns.cs:82:18:82:19 | [no-match] { ... } | patterns.cs:86:9:89:9 | switch (...) {...} | semmle.label | no-match | -| patterns.cs:82:18:82:19 | { ... } | patterns.cs:82:18:82:19 | [match] { ... } | semmle.label | match | -| patterns.cs:82:18:82:19 | { ... } | patterns.cs:82:18:82:19 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:83:17:83:22 | break; | patterns.cs:86:9:89:9 | switch (...) {...} | semmle.label | break | -| patterns.cs:86:9:89:9 | switch (...) {...} | patterns.cs:86:16:86:16 | 1 | semmle.label | successor | -| patterns.cs:86:15:86:19 | (..., ...) | patterns.cs:88:13:88:24 | case ...: | semmle.label | successor | +| patterns.cs:79:17:79:22 | Before break; | patterns.cs:79:17:79:22 | break; | semmle.label | successor | +| patterns.cs:79:17:79:22 | break; | patterns.cs:76:9:84:9 | After switch (...) {...} | semmle.label | break | +| patterns.cs:80:13:80:20 | After case ...: [match] | patterns.cs:81:17:81:22 | Before break; | semmle.label | successor | +| patterns.cs:80:13:80:20 | After case ...: [no-match] | patterns.cs:82:13:82:20 | case ...: | semmle.label | successor | +| patterns.cs:80:13:80:20 | case ...: | patterns.cs:80:18:80:19 | Before { ... } | semmle.label | successor | +| patterns.cs:80:18:80:19 | ( ... ) | patterns.cs:80:18:80:19 | { ... } | semmle.label | successor | +| patterns.cs:80:18:80:19 | After { ... } [match] | patterns.cs:80:13:80:20 | After case ...: [match] | semmle.label | match | +| patterns.cs:80:18:80:19 | After { ... } [no-match] | patterns.cs:80:13:80:20 | After case ...: [no-match] | semmle.label | no-match | +| patterns.cs:80:18:80:19 | Before { ... } | patterns.cs:80:18:80:19 | ( ... ) | semmle.label | successor | +| patterns.cs:80:18:80:19 | { ... } | patterns.cs:80:18:80:19 | After { ... } [match] | semmle.label | match | +| patterns.cs:80:18:80:19 | { ... } | patterns.cs:80:18:80:19 | After { ... } [no-match] | semmle.label | no-match | +| patterns.cs:81:17:81:22 | Before break; | patterns.cs:81:17:81:22 | break; | semmle.label | successor | +| patterns.cs:81:17:81:22 | break; | patterns.cs:76:9:84:9 | After switch (...) {...} | semmle.label | break | +| patterns.cs:82:13:82:20 | After case ...: [match] | patterns.cs:83:17:83:22 | Before break; | semmle.label | successor | +| patterns.cs:82:13:82:20 | After case ...: [no-match] | patterns.cs:76:9:84:9 | After switch (...) {...} | semmle.label | successor | +| patterns.cs:82:13:82:20 | case ...: | patterns.cs:82:18:82:19 | Before { ... } | semmle.label | successor | +| patterns.cs:82:18:82:19 | After { ... } [match] | patterns.cs:82:13:82:20 | After case ...: [match] | semmle.label | match | +| patterns.cs:82:18:82:19 | After { ... } [no-match] | patterns.cs:82:13:82:20 | After case ...: [no-match] | semmle.label | no-match | +| patterns.cs:82:18:82:19 | Before { ... } | patterns.cs:82:18:82:19 | { ... } | semmle.label | successor | +| patterns.cs:82:18:82:19 | { ... } | patterns.cs:82:18:82:19 | After { ... } [match] | semmle.label | match | +| patterns.cs:82:18:82:19 | { ... } | patterns.cs:82:18:82:19 | After { ... } [no-match] | semmle.label | no-match | +| patterns.cs:82:18:82:19 | { ... } | patterns.cs:82:18:82:19 | { ... } | semmle.label | successor | +| patterns.cs:83:17:83:22 | Before break; | patterns.cs:83:17:83:22 | break; | semmle.label | successor | +| patterns.cs:83:17:83:22 | break; | patterns.cs:76:9:84:9 | After switch (...) {...} | semmle.label | break | +| patterns.cs:86:9:89:9 | After switch (...) {...} | patterns.cs:91:9:95:9 | switch (...) {...} | semmle.label | successor | +| patterns.cs:86:9:89:9 | switch (...) {...} | patterns.cs:86:15:86:19 | Before (..., ...) | semmle.label | successor | +| patterns.cs:86:15:86:19 | (..., ...) | patterns.cs:86:15:86:19 | After (..., ...) | semmle.label | successor | +| patterns.cs:86:15:86:19 | After (..., ...) | patterns.cs:88:13:88:24 | case ...: | semmle.label | successor | +| patterns.cs:86:15:86:19 | Before (..., ...) | patterns.cs:86:16:86:16 | 1 | semmle.label | successor | | patterns.cs:86:16:86:16 | 1 | patterns.cs:86:18:86:18 | 2 | semmle.label | successor | | patterns.cs:86:18:86:18 | 2 | patterns.cs:86:15:86:19 | (..., ...) | semmle.label | successor | -| patterns.cs:88:13:88:24 | case ...: | patterns.cs:88:18:88:23 | ( ... ) | semmle.label | successor | -| patterns.cs:88:18:88:23 | ( ... ) | patterns.cs:88:18:88:23 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:88:18:88:23 | ( ... ) | patterns.cs:88:19:88:19 | 1 | semmle.label | match | -| patterns.cs:88:18:88:23 | [match] { ... } | patterns.cs:88:26:88:31 | break; | semmle.label | match | -| patterns.cs:88:18:88:23 | [no-match] { ... } | patterns.cs:91:9:95:9 | switch (...) {...} | semmle.label | no-match | -| patterns.cs:88:19:88:19 | 1 | patterns.cs:88:18:88:23 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:88:19:88:19 | 1 | patterns.cs:88:22:88:22 | 2 | semmle.label | match | -| patterns.cs:88:22:88:22 | 2 | patterns.cs:88:18:88:23 | [match] { ... } | semmle.label | match | -| patterns.cs:88:22:88:22 | 2 | patterns.cs:88:18:88:23 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:88:26:88:31 | break; | patterns.cs:91:9:95:9 | switch (...) {...} | semmle.label | break | -| patterns.cs:91:9:95:9 | switch (...) {...} | patterns.cs:91:17:91:17 | 1 | semmle.label | successor | -| patterns.cs:91:16:91:20 | (..., ...) | patterns.cs:93:13:93:28 | case ...: | semmle.label | successor | +| patterns.cs:88:13:88:24 | After case ...: [match] | patterns.cs:88:26:88:31 | Before break; | semmle.label | successor | +| patterns.cs:88:13:88:24 | After case ...: [no-match] | patterns.cs:86:9:89:9 | After switch (...) {...} | semmle.label | successor | +| patterns.cs:88:13:88:24 | case ...: | patterns.cs:88:18:88:23 | Before { ... } | semmle.label | successor | +| patterns.cs:88:18:88:23 | ( ... ) | patterns.cs:88:18:88:23 | After ( ... ) | semmle.label | successor | +| patterns.cs:88:18:88:23 | After ( ... ) | patterns.cs:88:18:88:23 | { ... } | semmle.label | successor | +| patterns.cs:88:18:88:23 | After { ... } [match] | patterns.cs:88:13:88:24 | After case ...: [match] | semmle.label | match | +| patterns.cs:88:18:88:23 | After { ... } [no-match] | patterns.cs:88:13:88:24 | After case ...: [no-match] | semmle.label | no-match | +| patterns.cs:88:18:88:23 | Before ( ... ) | patterns.cs:88:19:88:19 | 1 | semmle.label | successor | +| patterns.cs:88:18:88:23 | Before { ... } | patterns.cs:88:18:88:23 | Before ( ... ) | semmle.label | successor | +| patterns.cs:88:18:88:23 | { ... } | patterns.cs:88:18:88:23 | After { ... } [match] | semmle.label | match | +| patterns.cs:88:18:88:23 | { ... } | patterns.cs:88:18:88:23 | After { ... } [no-match] | semmle.label | no-match | +| patterns.cs:88:19:88:19 | 1 | patterns.cs:88:22:88:22 | 2 | semmle.label | successor | +| patterns.cs:88:22:88:22 | 2 | patterns.cs:88:18:88:23 | ( ... ) | semmle.label | successor | +| patterns.cs:88:26:88:31 | Before break; | patterns.cs:88:26:88:31 | break; | semmle.label | successor | +| patterns.cs:88:26:88:31 | break; | patterns.cs:86:9:89:9 | After switch (...) {...} | semmle.label | break | +| patterns.cs:91:9:95:9 | After switch (...) {...} | patterns.cs:33:5:96:5 | After {...} | semmle.label | successor | +| patterns.cs:91:9:95:9 | switch (...) {...} | patterns.cs:91:16:91:20 | Before (..., ...) | semmle.label | successor | +| patterns.cs:91:16:91:20 | (..., ...) | patterns.cs:91:16:91:20 | After (..., ...) | semmle.label | successor | +| patterns.cs:91:16:91:20 | After (..., ...) | patterns.cs:93:13:93:28 | case ...: | semmle.label | successor | +| patterns.cs:91:16:91:20 | Before (..., ...) | patterns.cs:91:17:91:17 | 1 | semmle.label | successor | | patterns.cs:91:17:91:17 | 1 | patterns.cs:91:19:91:19 | 2 | semmle.label | successor | | patterns.cs:91:19:91:19 | 2 | patterns.cs:91:16:91:20 | (..., ...) | semmle.label | successor | -| patterns.cs:93:13:93:28 | case ...: | patterns.cs:93:18:93:27 | ( ... ) | semmle.label | successor | -| patterns.cs:93:18:93:27 | ( ... ) | patterns.cs:93:18:93:27 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:93:18:93:27 | ( ... ) | patterns.cs:93:19:93:19 | 1 | semmle.label | match | -| patterns.cs:93:18:93:27 | [match] { ... } | patterns.cs:93:30:93:35 | break; | semmle.label | match | -| patterns.cs:93:18:93:27 | [no-match] { ... } | patterns.cs:94:13:94:24 | case ...: | semmle.label | no-match | -| patterns.cs:93:19:93:19 | 1 | patterns.cs:93:18:93:27 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:93:19:93:19 | 1 | patterns.cs:93:22:93:26 | Int32 x | semmle.label | match | -| patterns.cs:93:22:93:26 | Int32 x | patterns.cs:93:18:93:27 | [match] { ... } | semmle.label | match | -| patterns.cs:93:22:93:26 | Int32 x | patterns.cs:93:18:93:27 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:93:30:93:35 | break; | patterns.cs:32:10:32:25 | exit SwitchStatements (normal) | semmle.label | break | -| patterns.cs:94:13:94:24 | case ...: | patterns.cs:94:18:94:23 | ( ... ) | semmle.label | successor | -| patterns.cs:94:18:94:23 | ( ... ) | patterns.cs:94:18:94:23 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:94:18:94:23 | ( ... ) | patterns.cs:94:19:94:19 | 2 | semmle.label | match | -| patterns.cs:94:18:94:23 | [match] { ... } | patterns.cs:94:26:94:31 | break; | semmle.label | match | -| patterns.cs:94:18:94:23 | [no-match] { ... } | patterns.cs:32:10:32:25 | exit SwitchStatements (normal) | semmle.label | no-match | -| patterns.cs:94:19:94:19 | 2 | patterns.cs:94:18:94:23 | [no-match] { ... } | semmle.label | no-match | -| patterns.cs:94:19:94:19 | 2 | patterns.cs:94:22:94:22 | _ | semmle.label | match | -| patterns.cs:94:22:94:22 | _ | patterns.cs:94:18:94:23 | [match] { ... } | semmle.label | match | -| patterns.cs:94:26:94:31 | break; | patterns.cs:32:10:32:25 | exit SwitchStatements (normal) | semmle.label | break | +| patterns.cs:93:13:93:28 | After case ...: [match] | patterns.cs:93:30:93:35 | Before break; | semmle.label | successor | +| patterns.cs:93:13:93:28 | After case ...: [no-match] | patterns.cs:94:13:94:24 | case ...: | semmle.label | successor | +| patterns.cs:93:13:93:28 | case ...: | patterns.cs:93:18:93:27 | Before { ... } | semmle.label | successor | +| patterns.cs:93:18:93:27 | ( ... ) | patterns.cs:93:18:93:27 | After ( ... ) | semmle.label | successor | +| patterns.cs:93:18:93:27 | After ( ... ) | patterns.cs:93:18:93:27 | { ... } | semmle.label | successor | +| patterns.cs:93:18:93:27 | After { ... } [match] | patterns.cs:93:13:93:28 | After case ...: [match] | semmle.label | match | +| patterns.cs:93:18:93:27 | After { ... } [no-match] | patterns.cs:93:13:93:28 | After case ...: [no-match] | semmle.label | no-match | +| patterns.cs:93:18:93:27 | Before ( ... ) | patterns.cs:93:19:93:19 | 1 | semmle.label | successor | +| patterns.cs:93:18:93:27 | Before { ... } | patterns.cs:93:18:93:27 | Before ( ... ) | semmle.label | successor | +| patterns.cs:93:18:93:27 | { ... } | patterns.cs:93:18:93:27 | After { ... } [match] | semmle.label | match | +| patterns.cs:93:18:93:27 | { ... } | patterns.cs:93:18:93:27 | After { ... } [no-match] | semmle.label | no-match | +| patterns.cs:93:19:93:19 | 1 | patterns.cs:93:22:93:26 | Int32 x | semmle.label | successor | +| patterns.cs:93:22:93:26 | Int32 x | patterns.cs:93:18:93:27 | ( ... ) | semmle.label | successor | +| patterns.cs:93:30:93:35 | Before break; | patterns.cs:93:30:93:35 | break; | semmle.label | successor | +| patterns.cs:93:30:93:35 | break; | patterns.cs:91:9:95:9 | After switch (...) {...} | semmle.label | break | +| patterns.cs:94:13:94:24 | After case ...: [match] | patterns.cs:94:26:94:31 | Before break; | semmle.label | successor | +| patterns.cs:94:13:94:24 | After case ...: [no-match] | patterns.cs:91:9:95:9 | After switch (...) {...} | semmle.label | successor | +| patterns.cs:94:13:94:24 | case ...: | patterns.cs:94:18:94:23 | Before { ... } | semmle.label | successor | +| patterns.cs:94:18:94:23 | ( ... ) | patterns.cs:94:18:94:23 | After ( ... ) | semmle.label | successor | +| patterns.cs:94:18:94:23 | After ( ... ) | patterns.cs:94:18:94:23 | { ... } | semmle.label | successor | +| patterns.cs:94:18:94:23 | After { ... } [match] | patterns.cs:94:13:94:24 | After case ...: [match] | semmle.label | match | +| patterns.cs:94:18:94:23 | After { ... } [no-match] | patterns.cs:94:13:94:24 | After case ...: [no-match] | semmle.label | no-match | +| patterns.cs:94:18:94:23 | Before ( ... ) | patterns.cs:94:19:94:19 | 2 | semmle.label | successor | +| patterns.cs:94:18:94:23 | Before { ... } | patterns.cs:94:18:94:23 | Before ( ... ) | semmle.label | successor | +| patterns.cs:94:18:94:23 | { ... } | patterns.cs:94:18:94:23 | After { ... } [match] | semmle.label | match | +| patterns.cs:94:18:94:23 | { ... } | patterns.cs:94:18:94:23 | After { ... } [no-match] | semmle.label | no-match | +| patterns.cs:94:19:94:19 | 2 | patterns.cs:94:22:94:22 | _ | semmle.label | successor | +| patterns.cs:94:22:94:22 | _ | patterns.cs:94:18:94:23 | ( ... ) | semmle.label | successor | +| patterns.cs:94:26:94:31 | Before break; | patterns.cs:94:26:94:31 | break; | semmle.label | successor | +| patterns.cs:94:26:94:31 | break; | patterns.cs:91:9:95:9 | After switch (...) {...} | semmle.label | break | diff --git a/csharp/ql/test/library-tests/csharp8/switchstmtctrlflow.ql b/csharp/ql/test/library-tests/csharp8/switchstmtctrlflow.ql index 100f05e562a8..3030332cc0a1 100644 --- a/csharp/ql/test/library-tests/csharp8/switchstmtctrlflow.ql +++ b/csharp/ql/test/library-tests/csharp8/switchstmtctrlflow.ql @@ -1,9 +1,9 @@ import csharp -query predicate edges(ControlFlow::Node a, ControlFlow::Node b, string label, string value) { +query predicate edges(ControlFlowNode a, ControlFlowNode b, string label, string value) { exists(ControlFlow::SuccessorType t | a.getEnclosingCallable().hasName("SwitchStatements") and - b = a.getASuccessorByType(t) and + b = a.getASuccessor(t) and label = "semmle.label" and value = t.toString() ) diff --git a/csharp/ql/test/library-tests/dataflow/call-sensitivity/CallSensitivityFlow.expected b/csharp/ql/test/library-tests/dataflow/call-sensitivity/CallSensitivityFlow.expected index bcd15ee78311..37639ca837a5 100644 --- a/csharp/ql/test/library-tests/dataflow/call-sensitivity/CallSensitivityFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/call-sensitivity/CallSensitivityFlow.expected @@ -10,17 +10,12 @@ edges | CallSensitivityFlow.cs:52:16:52:17 | access to local variable o3 : Object | CallSensitivityFlow.cs:53:14:53:15 | access to local variable o3 | provenance | | | CallSensitivityFlow.cs:56:46:56:46 | o : Object | CallSensitivityFlow.cs:58:16:58:17 | access to local variable o1 : Object | provenance | | | CallSensitivityFlow.cs:56:46:56:46 | o : Object | CallSensitivityFlow.cs:58:16:58:17 | access to local variable o1 : Object | provenance | | -| CallSensitivityFlow.cs:56:46:56:46 | o : Object | CallSensitivityFlow.cs:58:16:58:17 | access to local variable o1 : Object | provenance | | -| CallSensitivityFlow.cs:58:16:58:17 | access to local variable o1 : Object | CallSensitivityFlow.cs:62:20:62:22 | access to local variable tmp : Object | provenance | | | CallSensitivityFlow.cs:58:16:58:17 | access to local variable o1 : Object | CallSensitivityFlow.cs:62:20:62:22 | access to local variable tmp : Object | provenance | | | CallSensitivityFlow.cs:58:16:58:17 | access to local variable o1 : Object | CallSensitivityFlow.cs:62:20:62:22 | access to local variable tmp : Object | provenance | | | CallSensitivityFlow.cs:62:20:62:22 | access to local variable tmp : Object | CallSensitivityFlow.cs:63:13:63:14 | access to local variable o2 : Object | provenance | | | CallSensitivityFlow.cs:62:20:62:22 | access to local variable tmp : Object | CallSensitivityFlow.cs:63:13:63:14 | access to local variable o2 : Object | provenance | | -| CallSensitivityFlow.cs:62:20:62:22 | access to local variable tmp : Object | CallSensitivityFlow.cs:63:13:63:14 | access to local variable o2 : Object | provenance | | | CallSensitivityFlow.cs:63:13:63:14 | access to local variable o2 : Object | CallSensitivityFlow.cs:65:16:65:17 | access to local variable o3 : Object | provenance | | | CallSensitivityFlow.cs:63:13:63:14 | access to local variable o2 : Object | CallSensitivityFlow.cs:65:16:65:17 | access to local variable o3 : Object | provenance | | -| CallSensitivityFlow.cs:63:13:63:14 | access to local variable o2 : Object | CallSensitivityFlow.cs:65:16:65:17 | access to local variable o3 : Object | provenance | | -| CallSensitivityFlow.cs:65:16:65:17 | access to local variable o3 : Object | CallSensitivityFlow.cs:66:14:66:15 | access to local variable o3 | provenance | | | CallSensitivityFlow.cs:65:16:65:17 | access to local variable o3 : Object | CallSensitivityFlow.cs:66:14:66:15 | access to local variable o3 | provenance | | | CallSensitivityFlow.cs:65:16:65:17 | access to local variable o3 : Object | CallSensitivityFlow.cs:66:14:66:15 | access to local variable o3 | provenance | | | CallSensitivityFlow.cs:78:24:78:35 | object creation of type Object : Object | CallSensitivityFlow.cs:19:39:19:39 | o : Object | provenance | | @@ -80,17 +75,12 @@ nodes | CallSensitivityFlow.cs:53:14:53:15 | access to local variable o3 | semmle.label | access to local variable o3 | | CallSensitivityFlow.cs:56:46:56:46 | o : Object | semmle.label | o : Object | | CallSensitivityFlow.cs:56:46:56:46 | o : Object | semmle.label | o : Object | -| CallSensitivityFlow.cs:56:46:56:46 | o : Object | semmle.label | o : Object | -| CallSensitivityFlow.cs:58:16:58:17 | access to local variable o1 : Object | semmle.label | access to local variable o1 : Object | | CallSensitivityFlow.cs:58:16:58:17 | access to local variable o1 : Object | semmle.label | access to local variable o1 : Object | | CallSensitivityFlow.cs:58:16:58:17 | access to local variable o1 : Object | semmle.label | access to local variable o1 : Object | | CallSensitivityFlow.cs:62:20:62:22 | access to local variable tmp : Object | semmle.label | access to local variable tmp : Object | | CallSensitivityFlow.cs:62:20:62:22 | access to local variable tmp : Object | semmle.label | access to local variable tmp : Object | -| CallSensitivityFlow.cs:62:20:62:22 | access to local variable tmp : Object | semmle.label | access to local variable tmp : Object | | CallSensitivityFlow.cs:63:13:63:14 | access to local variable o2 : Object | semmle.label | access to local variable o2 : Object | | CallSensitivityFlow.cs:63:13:63:14 | access to local variable o2 : Object | semmle.label | access to local variable o2 : Object | -| CallSensitivityFlow.cs:63:13:63:14 | access to local variable o2 : Object | semmle.label | access to local variable o2 : Object | -| CallSensitivityFlow.cs:65:16:65:17 | access to local variable o3 : Object | semmle.label | access to local variable o3 : Object | | CallSensitivityFlow.cs:65:16:65:17 | access to local variable o3 : Object | semmle.label | access to local variable o3 : Object | | CallSensitivityFlow.cs:65:16:65:17 | access to local variable o3 : Object | semmle.label | access to local variable o3 : Object | | CallSensitivityFlow.cs:66:14:66:15 | access to local variable o3 | semmle.label | access to local variable o3 | diff --git a/csharp/ql/test/library-tests/dataflow/callablereturnsarg/Common.qll b/csharp/ql/test/library-tests/dataflow/callablereturnsarg/Common.qll index 3a3a55e42ccc..043ff2d1bc51 100644 --- a/csharp/ql/test/library-tests/dataflow/callablereturnsarg/Common.qll +++ b/csharp/ql/test/library-tests/dataflow/callablereturnsarg/Common.qll @@ -1,11 +1,12 @@ import csharp private import semmle.code.csharp.controlflow.Guards +private import semmle.code.csharp.dataflow.internal.SsaImpl as SsaImpl private predicate outRefDef(DataFlow::ExprNode ne, int outRef) { - exists(Ssa::ExplicitDefinition def, Parameter outRefParameter | + exists(SsaExplicitWrite def, Parameter outRefParameter | outRefParameter.isOutOrRef() and - ne.getExpr() = def.getADefinition().getSource() and - def.isLiveOutRefParameterDefinition(outRefParameter) and + ne.getExpr() = def.getValue() and + SsaImpl::isLiveOutRefParameterDefinition(def, outRefParameter) and outRef = outRefParameter.getPosition() ) } diff --git a/csharp/ql/test/library-tests/dataflow/defuse/defUseEquivalence.ql b/csharp/ql/test/library-tests/dataflow/defuse/defUseEquivalence.ql index f6aaf07485ea..1897c97bd652 100644 --- a/csharp/ql/test/library-tests/dataflow/defuse/defUseEquivalence.ql +++ b/csharp/ql/test/library-tests/dataflow/defuse/defUseEquivalence.ql @@ -3,29 +3,38 @@ private import semmle.code.csharp.dataflow.internal.BaseSSA /** "Naive" def-use implementation. */ predicate defReaches( - AssignableDefinition def, BaseSsa::SimpleLocalScopeVariable v, ControlFlow::Node cfn + AssignableDefinition def, BaseSsa::SimpleLocalScopeVariable v, ControlFlowNode cfn ) { - def.getTarget() = v and cfn = def.getExpr().getAControlFlowNode().getASuccessor() + def.getTarget() = v and + cfn = + [ + def.getExpr().getControlFlowNode(), + def.(AssignableDefinitions::ImplicitParameterDefinition).getParameter().getControlFlowNode() + ].getASuccessor() or - exists(ControlFlow::Node mid | defReaches(def, v, mid) | + def.getTarget() = v and + cfn = + def.(AssignableDefinitions::ImplicitParameterDefinition).getEnclosingCallable().getEntryPoint() + or + exists(ControlFlowNode mid | defReaches(def, v, mid) | not mid = any(AssignableDefinition ad | ad.getTarget() = v and ad.isCertain()) .getExpr() - .getAControlFlowNode() and + .getControlFlowNode() and cfn = mid.getASuccessor() ) } predicate defUsePair(AssignableDefinition def, AssignableRead read) { exists(Assignable a | - defReaches(def, a, read.getAControlFlowNode()) and + defReaches(def, a, read.getControlFlowNode()) and read.getTarget() = a ) } private LocalScopeVariableRead getAReachableUncertainRead(AssignableDefinition def) { - exists(Ssa::Definition ssaDef | - def = ssaDef.getAnUltimateDefinition().(Ssa::ExplicitDefinition).getADefinition() + exists(SsaDefinition ssaDef | + def = ssaDef.getAnUltimateDefinition().(SsaExplicitWrite).getDefinition() | result = ssaDef.getARead() ) diff --git a/csharp/ql/test/library-tests/dataflow/defuse/parameterUseEquivalence.ql b/csharp/ql/test/library-tests/dataflow/defuse/parameterUseEquivalence.ql index 87c26e322591..fdb1a6e89950 100644 --- a/csharp/ql/test/library-tests/dataflow/defuse/parameterUseEquivalence.ql +++ b/csharp/ql/test/library-tests/dataflow/defuse/parameterUseEquivalence.ql @@ -2,30 +2,29 @@ import csharp private import semmle.code.csharp.dataflow.internal.BaseSSA /** "Naive" parameter-use implementation. */ -predicate parameterReaches(Parameter p, ControlFlow::Node cfn) { +predicate parameterReaches(Parameter p, ControlFlowNode cfn) { cfn = p.getCallable().getEntryPoint().getASuccessor() and p instanceof BaseSsa::SimpleLocalScopeVariable or - exists(ControlFlow::Node mid | parameterReaches(p, mid) | + exists(ControlFlowNode mid | parameterReaches(p, mid) | not mid = any(AssignableDefinition ad | ad.getTarget() = p and ad.isCertain()) .getExpr() - .getAControlFlowNode() and + .getControlFlowNode() and cfn = mid.getASuccessor() ) } predicate parameterUsePair(Parameter p, AssignableRead read) { - parameterReaches(p, read.getAControlFlowNode()) and + parameterReaches(p, read.getControlFlowNode()) and read.getTarget() = p } private LocalScopeVariableRead getAReachableUncertainRead( AssignableDefinitions::ImplicitParameterDefinition p ) { - exists(Ssa::Definition ssaDef | - p.getParameter() = - ssaDef.getAnUltimateDefinition().(Ssa::ImplicitParameterDefinition).getParameter() + exists(SsaDefinition ssaDef | + p.getParameter() = ssaDef.getAnUltimateDefinition().(SsaParameterInit).getParameter() | result = ssaDef.getARead() ) diff --git a/csharp/ql/test/library-tests/dataflow/defuse/useUseEquivalence.ql b/csharp/ql/test/library-tests/dataflow/defuse/useUseEquivalence.ql index f212e48f1c4f..c92dd13ab1ee 100644 --- a/csharp/ql/test/library-tests/dataflow/defuse/useUseEquivalence.ql +++ b/csharp/ql/test/library-tests/dataflow/defuse/useUseEquivalence.ql @@ -3,58 +3,49 @@ private import semmle.code.csharp.dataflow.internal.BaseSSA /** "Naive" use-use implementation. */ predicate useReaches( - LocalScopeVariableRead read, BaseSsa::SimpleLocalScopeVariable v, ControlFlow::Node cfn + LocalScopeVariableRead read, BaseSsa::SimpleLocalScopeVariable v, ControlFlowNode cfn ) { - read.getTarget() = v and cfn = read.getAControlFlowNode().getASuccessor() + read.getTarget() = v and cfn = read.getControlFlowNode().getASuccessor() or - exists(ControlFlow::Node mid | useReaches(read, v, mid) | + exists(ControlFlowNode mid | useReaches(read, v, mid) | not mid = any(AssignableDefinition ad | ad.getTarget() = v and ad.isCertain()) .getExpr() - .getAControlFlowNode() and + .getControlFlowNode() and cfn = mid.getASuccessor() ) } predicate useUsePair(LocalScopeVariableRead read1, LocalScopeVariableRead read2) { exists(Assignable a | - useReaches(read1, a, read2.getAControlFlowNode()) and + useReaches(read1, a, read2.getControlFlowNode()) and read2.getTarget() = a ) } private newtype TLocalScopeVariableReadOrSsaDef = TLocalScopeVariableRead(LocalScopeVariableRead read) or - TSsaDefinition(Ssa::Definition ssaDef) + TSsaDefinition(SsaDefinition ssaDef) private TLocalScopeVariableReadOrSsaDef getANextReadOrDef(TLocalScopeVariableReadOrSsaDef prev) { exists(LocalScopeVariableRead read | prev = TLocalScopeVariableRead(read) | result = TLocalScopeVariableRead(read.getANextRead()) or not exists(read.getANextRead()) and - exists( - Ssa::Definition ssaDef, Ssa::PhiNode phi, ControlFlow::Node cfn, ControlFlow::BasicBlock bb, - int i - | - ssaDef.getARead() = read - | + exists(SsaDefinition ssaDef, SsaPhiDefinition phi, BasicBlock bb | + ssaDef.getARead() = read and phi.getAnInput() = ssaDef and - phi.definesAt(_, bb, i) and - cfn = read.getAReachableElement().getAControlFlowNode() and - ( - cfn = bb.getNode(i) - or - cfn = bb.getFirstNode() and i < 0 - ) and + phi.definesAt(_, bb, _) and + read.getBasicBlock().getASuccessor+() = bb and result = TSsaDefinition(phi) ) ) or - exists(Ssa::Definition ssaDef | prev = TSsaDefinition(ssaDef) | - result = TLocalScopeVariableRead(ssaDef.getAFirstRead()) + exists(SsaDefinition ssaDef | prev = TSsaDefinition(ssaDef) | + result = TLocalScopeVariableRead(Ssa::ssaGetAFirstUse(ssaDef)) or - not exists(ssaDef.getAFirstRead()) and - exists(Ssa::PhiNode phi | + not exists(Ssa::ssaGetAFirstUse(ssaDef)) and + exists(SsaPhiDefinition phi | phi.getAnInput() = ssaDef and result = TSsaDefinition(phi) ) diff --git a/csharp/ql/test/library-tests/dataflow/extensions/ExtensionFlow.expected b/csharp/ql/test/library-tests/dataflow/extensions/ExtensionFlow.expected index 35a30ac1ffc9..62a8d64a2bf7 100644 --- a/csharp/ql/test/library-tests/dataflow/extensions/ExtensionFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/extensions/ExtensionFlow.expected @@ -6,204 +6,234 @@ edges | extensions.cs:5:22:5:24 | obj : B | extensions.cs:28:24:28:26 | access to extension synthetic parameter obj | provenance | | | extensions.cs:5:22:5:24 | obj : B | extensions.cs:51:20:51:22 | access to extension synthetic parameter obj | provenance | | | extensions.cs:5:22:5:24 | obj : B | extensions.cs:51:20:51:22 | access to extension synthetic parameter obj | provenance | | -| extensions.cs:11:24:11:37 | call to method Source : B | extensions.cs:108:18:108:26 | access to property Prop1 : B | provenance | | -| extensions.cs:11:24:11:37 | call to method Source : B | extensions.cs:108:18:108:26 | access to property Prop1 : B | provenance | | -| extensions.cs:11:24:11:37 | call to method Source : B | extensions.cs:111:18:111:44 | call to extension accessor get_Prop1 : B | provenance | | -| extensions.cs:11:24:11:37 | call to method Source : B | extensions.cs:111:18:111:44 | call to extension accessor get_Prop1 : B | provenance | | +| extensions.cs:11:24:11:37 | call to method Source : B | extensions.cs:116:18:116:26 | access to property Prop1 : B | provenance | | +| extensions.cs:11:24:11:37 | call to method Source : B | extensions.cs:116:18:116:26 | access to property Prop1 : B | provenance | | +| extensions.cs:11:24:11:37 | call to method Source : B | extensions.cs:119:18:119:44 | call to extension accessor get_Prop1 : B | provenance | | +| extensions.cs:11:24:11:37 | call to method Source : B | extensions.cs:119:18:119:44 | call to extension accessor get_Prop1 : B | provenance | | | extensions.cs:13:13:13:15 | value : B | extensions.cs:15:24:15:28 | access to parameter value | provenance | | | extensions.cs:13:13:13:15 | value : B | extensions.cs:15:24:15:28 | access to parameter value | provenance | | -| extensions.cs:36:24:36:38 | call to method Source : B | extensions.cs:194:18:194:35 | access to property StaticProp1 : B | provenance | | -| extensions.cs:36:24:36:38 | call to method Source : B | extensions.cs:194:18:194:35 | access to property StaticProp1 : B | provenance | | -| extensions.cs:36:24:36:38 | call to method Source : B | extensions.cs:197:18:197:47 | call to extension accessor get_StaticProp1 : B | provenance | | -| extensions.cs:36:24:36:38 | call to method Source : B | extensions.cs:197:18:197:47 | call to extension accessor get_StaticProp1 : B | provenance | | +| extensions.cs:36:24:36:38 | call to method Source : B | extensions.cs:202:18:202:35 | access to property StaticProp1 : B | provenance | | +| extensions.cs:36:24:36:38 | call to method Source : B | extensions.cs:202:18:202:35 | access to property StaticProp1 : B | provenance | | +| extensions.cs:36:24:36:38 | call to method Source : B | extensions.cs:205:18:205:47 | call to extension accessor get_StaticProp1 : B | provenance | | +| extensions.cs:36:24:36:38 | call to method Source : B | extensions.cs:205:18:205:47 | call to extension accessor get_StaticProp1 : B | provenance | | | extensions.cs:38:13:38:15 | value : B | extensions.cs:40:24:40:28 | access to parameter value | provenance | | | extensions.cs:38:13:38:15 | value : B | extensions.cs:40:24:40:28 | access to parameter value | provenance | | -| extensions.cs:46:20:46:33 | call to method Source : B | extensions.cs:127:18:127:25 | call to method M1 : B | provenance | | -| extensions.cs:46:20:46:33 | call to method Source : B | extensions.cs:127:18:127:25 | call to method M1 : B | provenance | | -| extensions.cs:46:20:46:33 | call to method Source : B | extensions.cs:130:18:130:37 | call to method M1 : B | provenance | | -| extensions.cs:46:20:46:33 | call to method Source : B | extensions.cs:130:18:130:37 | call to method M1 : B | provenance | | +| extensions.cs:46:20:46:33 | call to method Source : B | extensions.cs:135:18:135:25 | call to method M1 : B | provenance | | +| extensions.cs:46:20:46:33 | call to method Source : B | extensions.cs:135:18:135:25 | call to method M1 : B | provenance | | +| extensions.cs:46:20:46:33 | call to method Source : B | extensions.cs:138:18:138:37 | call to method M1 : B | provenance | | +| extensions.cs:46:20:46:33 | call to method Source : B | extensions.cs:138:18:138:37 | call to method M1 : B | provenance | | | extensions.cs:59:48:59:48 | a : B | extensions.cs:61:20:61:20 | access to parameter a | provenance | | | extensions.cs:59:48:59:48 | a : B | extensions.cs:61:20:61:20 | access to parameter a | provenance | | -| extensions.cs:67:20:67:33 | call to method Source : B | extensions.cs:185:18:185:24 | call to operator - : B | provenance | | -| extensions.cs:67:20:67:33 | call to method Source : B | extensions.cs:185:18:185:24 | call to operator - : B | provenance | | -| extensions.cs:67:20:67:33 | call to method Source : B | extensions.cs:188:18:188:52 | call to operator - : B | provenance | | -| extensions.cs:67:20:67:33 | call to method Source : B | extensions.cs:188:18:188:52 | call to operator - : B | provenance | | +| extensions.cs:67:20:67:33 | call to method Source : B | extensions.cs:193:18:193:24 | call to operator - : B | provenance | | +| extensions.cs:67:20:67:33 | call to method Source : B | extensions.cs:193:18:193:24 | call to operator - : B | provenance | | +| extensions.cs:67:20:67:33 | call to method Source : B | extensions.cs:196:18:196:52 | call to operator - : B | provenance | | +| extensions.cs:67:20:67:33 | call to method Source : B | extensions.cs:196:18:196:52 | call to operator - : B | provenance | | | extensions.cs:76:17:76:17 | b : B | extensions.cs:80:20:80:20 | access to extension synthetic parameter b : B | provenance | | | extensions.cs:76:17:76:17 | b : B | extensions.cs:80:20:80:20 | access to extension synthetic parameter b : B | provenance | | | extensions.cs:76:17:76:17 | b : B | extensions.cs:85:20:85:20 | access to extension synthetic parameter b | provenance | | | extensions.cs:76:17:76:17 | b : B | extensions.cs:85:20:85:20 | access to extension synthetic parameter b | provenance | | -| extensions.cs:89:20:89:20 | t : B | extensions.cs:93:20:93:20 | access to extension synthetic parameter t | provenance | | -| extensions.cs:89:20:89:20 | t : B | extensions.cs:93:20:93:20 | access to extension synthetic parameter t | provenance | | -| extensions.cs:96:33:96:37 | other : B | extensions.cs:98:20:98:24 | access to parameter other : B | provenance | | -| extensions.cs:96:33:96:37 | other : B | extensions.cs:98:20:98:24 | access to parameter other : B | provenance | | -| extensions.cs:108:13:108:14 | access to local variable b1 : B | extensions.cs:109:14:109:15 | access to local variable b1 | provenance | | -| extensions.cs:108:13:108:14 | access to local variable b1 : B | extensions.cs:109:14:109:15 | access to local variable b1 | provenance | | -| extensions.cs:108:18:108:26 | access to property Prop1 : B | extensions.cs:108:13:108:14 | access to local variable b1 : B | provenance | | -| extensions.cs:108:18:108:26 | access to property Prop1 : B | extensions.cs:108:13:108:14 | access to local variable b1 : B | provenance | | -| extensions.cs:111:13:111:14 | access to local variable b2 : B | extensions.cs:112:14:112:15 | access to local variable b2 | provenance | | -| extensions.cs:111:13:111:14 | access to local variable b2 : B | extensions.cs:112:14:112:15 | access to local variable b2 | provenance | | -| extensions.cs:111:18:111:44 | call to extension accessor get_Prop1 : B | extensions.cs:111:13:111:14 | access to local variable b2 : B | provenance | | -| extensions.cs:111:18:111:44 | call to extension accessor get_Prop1 : B | extensions.cs:111:13:111:14 | access to local variable b2 : B | provenance | | -| extensions.cs:118:21:118:32 | call to method Source : B | extensions.cs:13:13:13:15 | value : B | provenance | | -| extensions.cs:118:21:118:32 | call to method Source : B | extensions.cs:13:13:13:15 | value : B | provenance | | -| extensions.cs:120:13:120:13 | access to local variable b : B | extensions.cs:121:37:121:37 | access to local variable b : B | provenance | | -| extensions.cs:120:13:120:13 | access to local variable b : B | extensions.cs:121:37:121:37 | access to local variable b : B | provenance | | -| extensions.cs:120:17:120:30 | call to method Source : B | extensions.cs:120:13:120:13 | access to local variable b : B | provenance | | -| extensions.cs:120:17:120:30 | call to method Source : B | extensions.cs:120:13:120:13 | access to local variable b : B | provenance | | -| extensions.cs:121:37:121:37 | access to local variable b : B | extensions.cs:13:13:13:15 | value : B | provenance | | -| extensions.cs:121:37:121:37 | access to local variable b : B | extensions.cs:13:13:13:15 | value : B | provenance | | -| extensions.cs:127:13:127:14 | access to local variable b1 : B | extensions.cs:128:14:128:15 | access to local variable b1 | provenance | | -| extensions.cs:127:13:127:14 | access to local variable b1 : B | extensions.cs:128:14:128:15 | access to local variable b1 | provenance | | -| extensions.cs:127:18:127:25 | call to method M1 : B | extensions.cs:127:13:127:14 | access to local variable b1 : B | provenance | | -| extensions.cs:127:18:127:25 | call to method M1 : B | extensions.cs:127:13:127:14 | access to local variable b1 : B | provenance | | -| extensions.cs:130:13:130:14 | access to local variable b2 : B | extensions.cs:131:14:131:15 | access to local variable b2 | provenance | | -| extensions.cs:130:13:130:14 | access to local variable b2 : B | extensions.cs:131:14:131:15 | access to local variable b2 | provenance | | -| extensions.cs:130:18:130:37 | call to method M1 : B | extensions.cs:130:13:130:14 | access to local variable b2 : B | provenance | | -| extensions.cs:130:18:130:37 | call to method M1 : B | extensions.cs:130:13:130:14 | access to local variable b2 : B | provenance | | -| extensions.cs:136:13:136:14 | access to local variable b1 : B | extensions.cs:137:9:137:10 | access to local variable b1 : B | provenance | | -| extensions.cs:136:13:136:14 | access to local variable b1 : B | extensions.cs:137:9:137:10 | access to local variable b1 : B | provenance | | -| extensions.cs:136:18:136:29 | call to method Source : B | extensions.cs:136:13:136:14 | access to local variable b1 : B | provenance | | -| extensions.cs:136:18:136:29 | call to method Source : B | extensions.cs:136:13:136:14 | access to local variable b1 : B | provenance | | -| extensions.cs:137:9:137:10 | access to local variable b1 : B | extensions.cs:5:22:5:24 | obj : B | provenance | | -| extensions.cs:137:9:137:10 | access to local variable b1 : B | extensions.cs:5:22:5:24 | obj : B | provenance | | -| extensions.cs:139:13:139:14 | access to local variable b2 : B | extensions.cs:140:25:140:26 | access to local variable b2 : B | provenance | | -| extensions.cs:139:13:139:14 | access to local variable b2 : B | extensions.cs:140:25:140:26 | access to local variable b2 : B | provenance | | -| extensions.cs:139:18:139:31 | call to method Source : B | extensions.cs:139:13:139:14 | access to local variable b2 : B | provenance | | -| extensions.cs:139:18:139:31 | call to method Source : B | extensions.cs:139:13:139:14 | access to local variable b2 : B | provenance | | -| extensions.cs:140:25:140:26 | access to local variable b2 : B | extensions.cs:5:22:5:24 | obj : B | provenance | | -| extensions.cs:140:25:140:26 | access to local variable b2 : B | extensions.cs:5:22:5:24 | obj : B | provenance | | -| extensions.cs:145:13:145:14 | access to local variable b1 : B | extensions.cs:146:18:146:19 | access to local variable b1 : B | provenance | | -| extensions.cs:145:13:145:14 | access to local variable b1 : B | extensions.cs:146:18:146:19 | access to local variable b1 : B | provenance | | -| extensions.cs:145:13:145:14 | access to local variable b1 : B | extensions.cs:149:34:149:35 | access to local variable b1 : B | provenance | | -| extensions.cs:145:13:145:14 | access to local variable b1 : B | extensions.cs:149:34:149:35 | access to local variable b1 : B | provenance | | -| extensions.cs:145:18:145:29 | call to method Source : B | extensions.cs:145:13:145:14 | access to local variable b1 : B | provenance | | -| extensions.cs:145:18:145:29 | call to method Source : B | extensions.cs:145:13:145:14 | access to local variable b1 : B | provenance | | -| extensions.cs:146:13:146:14 | access to local variable b2 : B | extensions.cs:147:14:147:15 | access to local variable b2 | provenance | | -| extensions.cs:146:13:146:14 | access to local variable b2 : B | extensions.cs:147:14:147:15 | access to local variable b2 | provenance | | -| extensions.cs:146:18:146:19 | access to local variable b1 : B | extensions.cs:76:17:76:17 | b : B | provenance | | -| extensions.cs:146:18:146:19 | access to local variable b1 : B | extensions.cs:76:17:76:17 | b : B | provenance | | -| extensions.cs:146:18:146:19 | access to local variable b1 : B | extensions.cs:146:18:146:24 | call to method B1 : B | provenance | | -| extensions.cs:146:18:146:19 | access to local variable b1 : B | extensions.cs:146:18:146:24 | call to method B1 : B | provenance | | -| extensions.cs:146:18:146:24 | call to method B1 : B | extensions.cs:146:13:146:14 | access to local variable b2 : B | provenance | | -| extensions.cs:146:18:146:24 | call to method B1 : B | extensions.cs:146:13:146:14 | access to local variable b2 : B | provenance | | -| extensions.cs:149:13:149:14 | access to local variable b3 : B | extensions.cs:150:14:150:15 | access to local variable b3 | provenance | | -| extensions.cs:149:13:149:14 | access to local variable b3 : B | extensions.cs:150:14:150:15 | access to local variable b3 | provenance | | -| extensions.cs:149:18:149:36 | call to method B1 : B | extensions.cs:149:13:149:14 | access to local variable b3 : B | provenance | | -| extensions.cs:149:18:149:36 | call to method B1 : B | extensions.cs:149:13:149:14 | access to local variable b3 : B | provenance | | -| extensions.cs:149:34:149:35 | access to local variable b1 : B | extensions.cs:76:17:76:17 | b : B | provenance | | -| extensions.cs:149:34:149:35 | access to local variable b1 : B | extensions.cs:76:17:76:17 | b : B | provenance | | -| extensions.cs:149:34:149:35 | access to local variable b1 : B | extensions.cs:149:18:149:36 | call to method B1 : B | provenance | | -| extensions.cs:149:34:149:35 | access to local variable b1 : B | extensions.cs:149:18:149:36 | call to method B1 : B | provenance | | -| extensions.cs:155:13:155:14 | access to local variable b1 : B | extensions.cs:156:18:156:19 | access to local variable b1 : B | provenance | | -| extensions.cs:155:13:155:14 | access to local variable b1 : B | extensions.cs:156:18:156:19 | access to local variable b1 : B | provenance | | -| extensions.cs:155:18:155:29 | call to method Source : B | extensions.cs:155:13:155:14 | access to local variable b1 : B | provenance | | -| extensions.cs:155:18:155:29 | call to method Source : B | extensions.cs:155:13:155:14 | access to local variable b1 : B | provenance | | -| extensions.cs:156:18:156:19 | access to local variable b1 : B | extensions.cs:5:22:5:24 | obj : B | provenance | | -| extensions.cs:156:18:156:19 | access to local variable b1 : B | extensions.cs:5:22:5:24 | obj : B | provenance | | -| extensions.cs:158:13:158:14 | access to local variable b3 : B | extensions.cs:159:41:159:42 | access to local variable b3 : B | provenance | | -| extensions.cs:158:13:158:14 | access to local variable b3 : B | extensions.cs:159:41:159:42 | access to local variable b3 : B | provenance | | -| extensions.cs:158:18:158:31 | call to method Source : B | extensions.cs:158:13:158:14 | access to local variable b3 : B | provenance | | -| extensions.cs:158:18:158:31 | call to method Source : B | extensions.cs:158:13:158:14 | access to local variable b3 : B | provenance | | -| extensions.cs:159:41:159:42 | access to local variable b3 : B | extensions.cs:5:22:5:24 | obj : B | provenance | | -| extensions.cs:159:41:159:42 | access to local variable b3 : B | extensions.cs:5:22:5:24 | obj : B | provenance | | -| extensions.cs:164:13:164:14 | access to local variable b1 : B | extensions.cs:165:9:165:10 | access to local variable b1 : B | provenance | | -| extensions.cs:164:13:164:14 | access to local variable b1 : B | extensions.cs:165:9:165:10 | access to local variable b1 : B | provenance | | -| extensions.cs:164:18:164:29 | call to method Source : B | extensions.cs:164:13:164:14 | access to local variable b1 : B | provenance | | -| extensions.cs:164:18:164:29 | call to method Source : B | extensions.cs:164:13:164:14 | access to local variable b1 : B | provenance | | -| extensions.cs:165:9:165:10 | access to local variable b1 : B | extensions.cs:5:22:5:24 | obj : B | provenance | | -| extensions.cs:165:9:165:10 | access to local variable b1 : B | extensions.cs:5:22:5:24 | obj : B | provenance | | -| extensions.cs:167:13:167:14 | access to local variable b2 : B | extensions.cs:168:32:168:33 | access to local variable b2 : B | provenance | | -| extensions.cs:167:13:167:14 | access to local variable b2 : B | extensions.cs:168:32:168:33 | access to local variable b2 : B | provenance | | -| extensions.cs:167:18:167:31 | call to method Source : B | extensions.cs:167:13:167:14 | access to local variable b2 : B | provenance | | -| extensions.cs:167:18:167:31 | call to method Source : B | extensions.cs:167:13:167:14 | access to local variable b2 : B | provenance | | -| extensions.cs:168:32:168:33 | access to local variable b2 : B | extensions.cs:5:22:5:24 | obj : B | provenance | | -| extensions.cs:168:32:168:33 | access to local variable b2 : B | extensions.cs:5:22:5:24 | obj : B | provenance | | -| extensions.cs:173:13:173:14 | access to local variable b1 : B | extensions.cs:175:18:175:19 | access to local variable b1 : B | provenance | | -| extensions.cs:173:13:173:14 | access to local variable b1 : B | extensions.cs:175:18:175:19 | access to local variable b1 : B | provenance | | -| extensions.cs:173:18:173:29 | call to method Source : B | extensions.cs:173:13:173:14 | access to local variable b1 : B | provenance | | -| extensions.cs:173:18:173:29 | call to method Source : B | extensions.cs:173:13:173:14 | access to local variable b1 : B | provenance | | -| extensions.cs:175:18:175:19 | access to local variable b1 : B | extensions.cs:59:48:59:48 | a : B | provenance | | -| extensions.cs:175:18:175:19 | access to local variable b1 : B | extensions.cs:59:48:59:48 | a : B | provenance | | -| extensions.cs:177:13:177:14 | access to local variable b4 : B | extensions.cs:178:43:178:44 | access to local variable b4 : B | provenance | | -| extensions.cs:177:13:177:14 | access to local variable b4 : B | extensions.cs:178:43:178:44 | access to local variable b4 : B | provenance | | -| extensions.cs:177:18:177:31 | call to method Source : B | extensions.cs:177:13:177:14 | access to local variable b4 : B | provenance | | -| extensions.cs:177:18:177:31 | call to method Source : B | extensions.cs:177:13:177:14 | access to local variable b4 : B | provenance | | -| extensions.cs:178:43:178:44 | access to local variable b4 : B | extensions.cs:59:48:59:48 | a : B | provenance | | -| extensions.cs:178:43:178:44 | access to local variable b4 : B | extensions.cs:59:48:59:48 | a : B | provenance | | -| extensions.cs:185:13:185:14 | access to local variable b3 : B | extensions.cs:186:14:186:15 | access to local variable b3 | provenance | | -| extensions.cs:185:13:185:14 | access to local variable b3 : B | extensions.cs:186:14:186:15 | access to local variable b3 | provenance | | -| extensions.cs:185:18:185:24 | call to operator - : B | extensions.cs:185:13:185:14 | access to local variable b3 : B | provenance | | -| extensions.cs:185:18:185:24 | call to operator - : B | extensions.cs:185:13:185:14 | access to local variable b3 : B | provenance | | -| extensions.cs:188:13:188:14 | access to local variable b4 : B | extensions.cs:189:14:189:15 | access to local variable b4 | provenance | | -| extensions.cs:188:13:188:14 | access to local variable b4 : B | extensions.cs:189:14:189:15 | access to local variable b4 | provenance | | -| extensions.cs:188:18:188:52 | call to operator - : B | extensions.cs:188:13:188:14 | access to local variable b4 : B | provenance | | -| extensions.cs:188:18:188:52 | call to operator - : B | extensions.cs:188:13:188:14 | access to local variable b4 : B | provenance | | -| extensions.cs:194:13:194:14 | access to local variable b1 : B | extensions.cs:195:14:195:15 | access to local variable b1 | provenance | | -| extensions.cs:194:13:194:14 | access to local variable b1 : B | extensions.cs:195:14:195:15 | access to local variable b1 | provenance | | -| extensions.cs:194:18:194:35 | access to property StaticProp1 : B | extensions.cs:194:13:194:14 | access to local variable b1 : B | provenance | | -| extensions.cs:194:18:194:35 | access to property StaticProp1 : B | extensions.cs:194:13:194:14 | access to local variable b1 : B | provenance | | -| extensions.cs:197:13:197:14 | access to local variable b2 : B | extensions.cs:198:14:198:15 | access to local variable b2 | provenance | | -| extensions.cs:197:13:197:14 | access to local variable b2 : B | extensions.cs:198:14:198:15 | access to local variable b2 | provenance | | -| extensions.cs:197:18:197:47 | call to extension accessor get_StaticProp1 : B | extensions.cs:197:13:197:14 | access to local variable b2 : B | provenance | | -| extensions.cs:197:18:197:47 | call to extension accessor get_StaticProp1 : B | extensions.cs:197:13:197:14 | access to local variable b2 : B | provenance | | -| extensions.cs:203:13:203:14 | access to local variable b1 : B | extensions.cs:204:30:204:31 | access to local variable b1 : B | provenance | | -| extensions.cs:203:13:203:14 | access to local variable b1 : B | extensions.cs:204:30:204:31 | access to local variable b1 : B | provenance | | -| extensions.cs:203:18:203:30 | call to method Source : B | extensions.cs:203:13:203:14 | access to local variable b1 : B | provenance | | -| extensions.cs:203:18:203:30 | call to method Source : B | extensions.cs:203:13:203:14 | access to local variable b1 : B | provenance | | -| extensions.cs:204:30:204:31 | access to local variable b1 : B | extensions.cs:38:13:38:15 | value : B | provenance | | -| extensions.cs:204:30:204:31 | access to local variable b1 : B | extensions.cs:38:13:38:15 | value : B | provenance | | -| extensions.cs:206:13:206:14 | access to local variable b2 : B | extensions.cs:207:38:207:39 | access to local variable b2 : B | provenance | | -| extensions.cs:206:13:206:14 | access to local variable b2 : B | extensions.cs:207:38:207:39 | access to local variable b2 : B | provenance | | -| extensions.cs:206:18:206:31 | call to method Source : B | extensions.cs:206:13:206:14 | access to local variable b2 : B | provenance | | -| extensions.cs:206:18:206:31 | call to method Source : B | extensions.cs:206:13:206:14 | access to local variable b2 : B | provenance | | -| extensions.cs:207:38:207:39 | access to local variable b2 : B | extensions.cs:38:13:38:15 | value : B | provenance | | -| extensions.cs:207:38:207:39 | access to local variable b2 : B | extensions.cs:38:13:38:15 | value : B | provenance | | -| extensions.cs:212:13:212:14 | access to local variable b1 : B | extensions.cs:213:9:213:10 | access to local variable b1 : B | provenance | | -| extensions.cs:212:13:212:14 | access to local variable b1 : B | extensions.cs:213:9:213:10 | access to local variable b1 : B | provenance | | -| extensions.cs:212:18:212:30 | call to method Source : B | extensions.cs:212:13:212:14 | access to local variable b1 : B | provenance | | -| extensions.cs:212:18:212:30 | call to method Source : B | extensions.cs:212:13:212:14 | access to local variable b1 : B | provenance | | -| extensions.cs:213:9:213:10 | access to local variable b1 : B | extensions.cs:76:17:76:17 | b : B | provenance | | -| extensions.cs:213:9:213:10 | access to local variable b1 : B | extensions.cs:76:17:76:17 | b : B | provenance | | -| extensions.cs:215:13:215:14 | access to local variable b2 : B | extensions.cs:216:25:216:26 | access to local variable b2 : B | provenance | | -| extensions.cs:215:13:215:14 | access to local variable b2 : B | extensions.cs:216:25:216:26 | access to local variable b2 : B | provenance | | -| extensions.cs:215:18:215:31 | call to method Source : B | extensions.cs:215:13:215:14 | access to local variable b2 : B | provenance | | -| extensions.cs:215:18:215:31 | call to method Source : B | extensions.cs:215:13:215:14 | access to local variable b2 : B | provenance | | -| extensions.cs:216:25:216:26 | access to local variable b2 : B | extensions.cs:76:17:76:17 | b : B | provenance | | -| extensions.cs:216:25:216:26 | access to local variable b2 : B | extensions.cs:76:17:76:17 | b : B | provenance | | -| extensions.cs:221:13:221:14 | access to local variable b1 : B | extensions.cs:222:9:222:10 | access to local variable b1 : B | provenance | | -| extensions.cs:221:13:221:14 | access to local variable b1 : B | extensions.cs:222:9:222:10 | access to local variable b1 : B | provenance | | -| extensions.cs:221:18:221:30 | call to method Source : B | extensions.cs:221:13:221:14 | access to local variable b1 : B | provenance | | -| extensions.cs:221:18:221:30 | call to method Source : B | extensions.cs:221:13:221:14 | access to local variable b1 : B | provenance | | -| extensions.cs:222:9:222:10 | access to local variable b1 : B | extensions.cs:89:20:89:20 | t : B | provenance | | -| extensions.cs:222:9:222:10 | access to local variable b1 : B | extensions.cs:89:20:89:20 | t : B | provenance | | -| extensions.cs:224:13:224:14 | access to local variable b2 : B | extensions.cs:225:32:225:33 | access to local variable b2 : B | provenance | | -| extensions.cs:224:13:224:14 | access to local variable b2 : B | extensions.cs:225:32:225:33 | access to local variable b2 : B | provenance | | -| extensions.cs:224:18:224:31 | call to method Source : B | extensions.cs:224:13:224:14 | access to local variable b2 : B | provenance | | -| extensions.cs:224:18:224:31 | call to method Source : B | extensions.cs:224:13:224:14 | access to local variable b2 : B | provenance | | -| extensions.cs:225:32:225:33 | access to local variable b2 : B | extensions.cs:89:20:89:20 | t : B | provenance | | -| extensions.cs:225:32:225:33 | access to local variable b2 : B | extensions.cs:89:20:89:20 | t : B | provenance | | -| extensions.cs:231:13:231:14 | access to local variable b1 : B | extensions.cs:232:32:232:33 | access to local variable b1 : B | provenance | | -| extensions.cs:231:13:231:14 | access to local variable b1 : B | extensions.cs:232:32:232:33 | access to local variable b1 : B | provenance | | -| extensions.cs:231:13:231:14 | access to local variable b1 : B | extensions.cs:235:46:235:47 | access to local variable b1 : B | provenance | | -| extensions.cs:231:13:231:14 | access to local variable b1 : B | extensions.cs:235:46:235:47 | access to local variable b1 : B | provenance | | -| extensions.cs:231:18:231:30 | call to method Source : B | extensions.cs:231:13:231:14 | access to local variable b1 : B | provenance | | -| extensions.cs:231:18:231:30 | call to method Source : B | extensions.cs:231:13:231:14 | access to local variable b1 : B | provenance | | -| extensions.cs:232:13:232:14 | access to local variable b2 : B | extensions.cs:233:14:233:15 | access to local variable b2 | provenance | | -| extensions.cs:232:13:232:14 | access to local variable b2 : B | extensions.cs:233:14:233:15 | access to local variable b2 | provenance | | -| extensions.cs:232:18:232:34 | call to method GenericM2 : B | extensions.cs:232:13:232:14 | access to local variable b2 : B | provenance | | -| extensions.cs:232:18:232:34 | call to method GenericM2 : B | extensions.cs:232:13:232:14 | access to local variable b2 : B | provenance | | -| extensions.cs:232:32:232:33 | access to local variable b1 : B | extensions.cs:96:33:96:37 | other : B | provenance | | -| extensions.cs:232:32:232:33 | access to local variable b1 : B | extensions.cs:96:33:96:37 | other : B | provenance | | -| extensions.cs:232:32:232:33 | access to local variable b1 : B | extensions.cs:232:18:232:34 | call to method GenericM2 : B | provenance | | -| extensions.cs:232:32:232:33 | access to local variable b1 : B | extensions.cs:232:18:232:34 | call to method GenericM2 : B | provenance | | -| extensions.cs:235:13:235:14 | access to local variable b3 : B | extensions.cs:236:14:236:15 | access to local variable b3 | provenance | | -| extensions.cs:235:13:235:14 | access to local variable b3 : B | extensions.cs:236:14:236:15 | access to local variable b3 | provenance | | -| extensions.cs:235:18:235:48 | call to method GenericM2 : B | extensions.cs:235:13:235:14 | access to local variable b3 : B | provenance | | -| extensions.cs:235:18:235:48 | call to method GenericM2 : B | extensions.cs:235:13:235:14 | access to local variable b3 : B | provenance | | -| extensions.cs:235:46:235:47 | access to local variable b1 : B | extensions.cs:96:33:96:37 | other : B | provenance | | -| extensions.cs:235:46:235:47 | access to local variable b1 : B | extensions.cs:96:33:96:37 | other : B | provenance | | -| extensions.cs:235:46:235:47 | access to local variable b1 : B | extensions.cs:235:18:235:48 | call to method GenericM2 : B | provenance | | -| extensions.cs:235:46:235:47 | access to local variable b1 : B | extensions.cs:235:18:235:48 | call to method GenericM2 : B | provenance | | +| extensions.cs:91:35:91:36 | c1 : C [property Prop] : Object | extensions.cs:93:22:93:23 | access to parameter c1 : C [property Prop] : Object | provenance | | +| extensions.cs:91:35:91:36 | c1 : C [property Prop] : Object | extensions.cs:93:22:93:23 | access to parameter c1 : C [property Prop] : Object | provenance | | +| extensions.cs:93:13:93:13 | [post] access to extension synthetic parameter c : C [property Prop] : Object | extensions.cs:89:17:89:17 | c [Return] : C [property Prop] : Object | provenance | | +| extensions.cs:93:13:93:13 | [post] access to extension synthetic parameter c : C [property Prop] : Object | extensions.cs:89:17:89:17 | c [Return] : C [property Prop] : Object | provenance | | +| extensions.cs:93:22:93:23 | access to parameter c1 : C [property Prop] : Object | extensions.cs:93:22:93:28 | access to property Prop : Object | provenance | | +| extensions.cs:93:22:93:23 | access to parameter c1 : C [property Prop] : Object | extensions.cs:93:22:93:28 | access to property Prop : Object | provenance | | +| extensions.cs:93:22:93:28 | access to property Prop : Object | extensions.cs:93:13:93:13 | [post] access to extension synthetic parameter c : C [property Prop] : Object | provenance | | +| extensions.cs:93:22:93:28 | access to property Prop : Object | extensions.cs:93:13:93:13 | [post] access to extension synthetic parameter c : C [property Prop] : Object | provenance | | +| extensions.cs:97:20:97:20 | t : B | extensions.cs:101:20:101:20 | access to extension synthetic parameter t | provenance | | +| extensions.cs:97:20:97:20 | t : B | extensions.cs:101:20:101:20 | access to extension synthetic parameter t | provenance | | +| extensions.cs:104:33:104:37 | other : B | extensions.cs:106:20:106:24 | access to parameter other : B | provenance | | +| extensions.cs:104:33:104:37 | other : B | extensions.cs:106:20:106:24 | access to parameter other : B | provenance | | +| extensions.cs:116:13:116:14 | access to local variable b1 : B | extensions.cs:117:14:117:15 | access to local variable b1 | provenance | | +| extensions.cs:116:13:116:14 | access to local variable b1 : B | extensions.cs:117:14:117:15 | access to local variable b1 | provenance | | +| extensions.cs:116:18:116:26 | access to property Prop1 : B | extensions.cs:116:13:116:14 | access to local variable b1 : B | provenance | | +| extensions.cs:116:18:116:26 | access to property Prop1 : B | extensions.cs:116:13:116:14 | access to local variable b1 : B | provenance | | +| extensions.cs:119:13:119:14 | access to local variable b2 : B | extensions.cs:120:14:120:15 | access to local variable b2 | provenance | | +| extensions.cs:119:13:119:14 | access to local variable b2 : B | extensions.cs:120:14:120:15 | access to local variable b2 | provenance | | +| extensions.cs:119:18:119:44 | call to extension accessor get_Prop1 : B | extensions.cs:119:13:119:14 | access to local variable b2 : B | provenance | | +| extensions.cs:119:18:119:44 | call to extension accessor get_Prop1 : B | extensions.cs:119:13:119:14 | access to local variable b2 : B | provenance | | +| extensions.cs:126:21:126:32 | call to method Source : B | extensions.cs:13:13:13:15 | value : B | provenance | | +| extensions.cs:126:21:126:32 | call to method Source : B | extensions.cs:13:13:13:15 | value : B | provenance | | +| extensions.cs:128:13:128:13 | access to local variable b : B | extensions.cs:129:37:129:37 | access to local variable b : B | provenance | | +| extensions.cs:128:13:128:13 | access to local variable b : B | extensions.cs:129:37:129:37 | access to local variable b : B | provenance | | +| extensions.cs:128:17:128:30 | call to method Source : B | extensions.cs:128:13:128:13 | access to local variable b : B | provenance | | +| extensions.cs:128:17:128:30 | call to method Source : B | extensions.cs:128:13:128:13 | access to local variable b : B | provenance | | +| extensions.cs:129:37:129:37 | access to local variable b : B | extensions.cs:13:13:13:15 | value : B | provenance | | +| extensions.cs:129:37:129:37 | access to local variable b : B | extensions.cs:13:13:13:15 | value : B | provenance | | +| extensions.cs:135:13:135:14 | access to local variable b1 : B | extensions.cs:136:14:136:15 | access to local variable b1 | provenance | | +| extensions.cs:135:13:135:14 | access to local variable b1 : B | extensions.cs:136:14:136:15 | access to local variable b1 | provenance | | +| extensions.cs:135:18:135:25 | call to method M1 : B | extensions.cs:135:13:135:14 | access to local variable b1 : B | provenance | | +| extensions.cs:135:18:135:25 | call to method M1 : B | extensions.cs:135:13:135:14 | access to local variable b1 : B | provenance | | +| extensions.cs:138:13:138:14 | access to local variable b2 : B | extensions.cs:139:14:139:15 | access to local variable b2 | provenance | | +| extensions.cs:138:13:138:14 | access to local variable b2 : B | extensions.cs:139:14:139:15 | access to local variable b2 | provenance | | +| extensions.cs:138:18:138:37 | call to method M1 : B | extensions.cs:138:13:138:14 | access to local variable b2 : B | provenance | | +| extensions.cs:138:18:138:37 | call to method M1 : B | extensions.cs:138:13:138:14 | access to local variable b2 : B | provenance | | +| extensions.cs:144:13:144:14 | access to local variable b1 : B | extensions.cs:145:9:145:10 | access to local variable b1 : B | provenance | | +| extensions.cs:144:13:144:14 | access to local variable b1 : B | extensions.cs:145:9:145:10 | access to local variable b1 : B | provenance | | +| extensions.cs:144:18:144:29 | call to method Source : B | extensions.cs:144:13:144:14 | access to local variable b1 : B | provenance | | +| extensions.cs:144:18:144:29 | call to method Source : B | extensions.cs:144:13:144:14 | access to local variable b1 : B | provenance | | +| extensions.cs:145:9:145:10 | access to local variable b1 : B | extensions.cs:5:22:5:24 | obj : B | provenance | | +| extensions.cs:145:9:145:10 | access to local variable b1 : B | extensions.cs:5:22:5:24 | obj : B | provenance | | +| extensions.cs:147:13:147:14 | access to local variable b2 : B | extensions.cs:148:25:148:26 | access to local variable b2 : B | provenance | | +| extensions.cs:147:13:147:14 | access to local variable b2 : B | extensions.cs:148:25:148:26 | access to local variable b2 : B | provenance | | +| extensions.cs:147:18:147:31 | call to method Source : B | extensions.cs:147:13:147:14 | access to local variable b2 : B | provenance | | +| extensions.cs:147:18:147:31 | call to method Source : B | extensions.cs:147:13:147:14 | access to local variable b2 : B | provenance | | +| extensions.cs:148:25:148:26 | access to local variable b2 : B | extensions.cs:5:22:5:24 | obj : B | provenance | | +| extensions.cs:148:25:148:26 | access to local variable b2 : B | extensions.cs:5:22:5:24 | obj : B | provenance | | +| extensions.cs:153:13:153:14 | access to local variable b1 : B | extensions.cs:154:18:154:19 | access to local variable b1 : B | provenance | | +| extensions.cs:153:13:153:14 | access to local variable b1 : B | extensions.cs:154:18:154:19 | access to local variable b1 : B | provenance | | +| extensions.cs:153:13:153:14 | access to local variable b1 : B | extensions.cs:157:34:157:35 | access to local variable b1 : B | provenance | | +| extensions.cs:153:13:153:14 | access to local variable b1 : B | extensions.cs:157:34:157:35 | access to local variable b1 : B | provenance | | +| extensions.cs:153:18:153:29 | call to method Source : B | extensions.cs:153:13:153:14 | access to local variable b1 : B | provenance | | +| extensions.cs:153:18:153:29 | call to method Source : B | extensions.cs:153:13:153:14 | access to local variable b1 : B | provenance | | +| extensions.cs:154:13:154:14 | access to local variable b2 : B | extensions.cs:155:14:155:15 | access to local variable b2 | provenance | | +| extensions.cs:154:13:154:14 | access to local variable b2 : B | extensions.cs:155:14:155:15 | access to local variable b2 | provenance | | +| extensions.cs:154:18:154:19 | access to local variable b1 : B | extensions.cs:76:17:76:17 | b : B | provenance | | +| extensions.cs:154:18:154:19 | access to local variable b1 : B | extensions.cs:76:17:76:17 | b : B | provenance | | +| extensions.cs:154:18:154:19 | access to local variable b1 : B | extensions.cs:154:18:154:24 | call to method B1 : B | provenance | | +| extensions.cs:154:18:154:19 | access to local variable b1 : B | extensions.cs:154:18:154:24 | call to method B1 : B | provenance | | +| extensions.cs:154:18:154:24 | call to method B1 : B | extensions.cs:154:13:154:14 | access to local variable b2 : B | provenance | | +| extensions.cs:154:18:154:24 | call to method B1 : B | extensions.cs:154:13:154:14 | access to local variable b2 : B | provenance | | +| extensions.cs:157:13:157:14 | access to local variable b3 : B | extensions.cs:158:14:158:15 | access to local variable b3 | provenance | | +| extensions.cs:157:13:157:14 | access to local variable b3 : B | extensions.cs:158:14:158:15 | access to local variable b3 | provenance | | +| extensions.cs:157:18:157:36 | call to method B1 : B | extensions.cs:157:13:157:14 | access to local variable b3 : B | provenance | | +| extensions.cs:157:18:157:36 | call to method B1 : B | extensions.cs:157:13:157:14 | access to local variable b3 : B | provenance | | +| extensions.cs:157:34:157:35 | access to local variable b1 : B | extensions.cs:76:17:76:17 | b : B | provenance | | +| extensions.cs:157:34:157:35 | access to local variable b1 : B | extensions.cs:76:17:76:17 | b : B | provenance | | +| extensions.cs:157:34:157:35 | access to local variable b1 : B | extensions.cs:157:18:157:36 | call to method B1 : B | provenance | | +| extensions.cs:157:34:157:35 | access to local variable b1 : B | extensions.cs:157:18:157:36 | call to method B1 : B | provenance | | +| extensions.cs:163:13:163:14 | access to local variable b1 : B | extensions.cs:164:18:164:19 | access to local variable b1 : B | provenance | | +| extensions.cs:163:13:163:14 | access to local variable b1 : B | extensions.cs:164:18:164:19 | access to local variable b1 : B | provenance | | +| extensions.cs:163:18:163:29 | call to method Source : B | extensions.cs:163:13:163:14 | access to local variable b1 : B | provenance | | +| extensions.cs:163:18:163:29 | call to method Source : B | extensions.cs:163:13:163:14 | access to local variable b1 : B | provenance | | +| extensions.cs:164:18:164:19 | access to local variable b1 : B | extensions.cs:5:22:5:24 | obj : B | provenance | | +| extensions.cs:164:18:164:19 | access to local variable b1 : B | extensions.cs:5:22:5:24 | obj : B | provenance | | +| extensions.cs:166:13:166:14 | access to local variable b3 : B | extensions.cs:167:41:167:42 | access to local variable b3 : B | provenance | | +| extensions.cs:166:13:166:14 | access to local variable b3 : B | extensions.cs:167:41:167:42 | access to local variable b3 : B | provenance | | +| extensions.cs:166:18:166:31 | call to method Source : B | extensions.cs:166:13:166:14 | access to local variable b3 : B | provenance | | +| extensions.cs:166:18:166:31 | call to method Source : B | extensions.cs:166:13:166:14 | access to local variable b3 : B | provenance | | +| extensions.cs:167:41:167:42 | access to local variable b3 : B | extensions.cs:5:22:5:24 | obj : B | provenance | | +| extensions.cs:167:41:167:42 | access to local variable b3 : B | extensions.cs:5:22:5:24 | obj : B | provenance | | +| extensions.cs:172:13:172:14 | access to local variable b1 : B | extensions.cs:173:9:173:10 | access to local variable b1 : B | provenance | | +| extensions.cs:172:13:172:14 | access to local variable b1 : B | extensions.cs:173:9:173:10 | access to local variable b1 : B | provenance | | +| extensions.cs:172:18:172:29 | call to method Source : B | extensions.cs:172:13:172:14 | access to local variable b1 : B | provenance | | +| extensions.cs:172:18:172:29 | call to method Source : B | extensions.cs:172:13:172:14 | access to local variable b1 : B | provenance | | +| extensions.cs:173:9:173:10 | access to local variable b1 : B | extensions.cs:5:22:5:24 | obj : B | provenance | | +| extensions.cs:173:9:173:10 | access to local variable b1 : B | extensions.cs:5:22:5:24 | obj : B | provenance | | +| extensions.cs:175:13:175:14 | access to local variable b2 : B | extensions.cs:176:32:176:33 | access to local variable b2 : B | provenance | | +| extensions.cs:175:13:175:14 | access to local variable b2 : B | extensions.cs:176:32:176:33 | access to local variable b2 : B | provenance | | +| extensions.cs:175:18:175:31 | call to method Source : B | extensions.cs:175:13:175:14 | access to local variable b2 : B | provenance | | +| extensions.cs:175:18:175:31 | call to method Source : B | extensions.cs:175:13:175:14 | access to local variable b2 : B | provenance | | +| extensions.cs:176:32:176:33 | access to local variable b2 : B | extensions.cs:5:22:5:24 | obj : B | provenance | | +| extensions.cs:176:32:176:33 | access to local variable b2 : B | extensions.cs:5:22:5:24 | obj : B | provenance | | +| extensions.cs:181:13:181:14 | access to local variable b1 : B | extensions.cs:183:18:183:19 | access to local variable b1 : B | provenance | | +| extensions.cs:181:13:181:14 | access to local variable b1 : B | extensions.cs:183:18:183:19 | access to local variable b1 : B | provenance | | +| extensions.cs:181:18:181:29 | call to method Source : B | extensions.cs:181:13:181:14 | access to local variable b1 : B | provenance | | +| extensions.cs:181:18:181:29 | call to method Source : B | extensions.cs:181:13:181:14 | access to local variable b1 : B | provenance | | +| extensions.cs:183:18:183:19 | access to local variable b1 : B | extensions.cs:59:48:59:48 | a : B | provenance | | +| extensions.cs:183:18:183:19 | access to local variable b1 : B | extensions.cs:59:48:59:48 | a : B | provenance | | +| extensions.cs:185:13:185:14 | access to local variable b4 : B | extensions.cs:186:43:186:44 | access to local variable b4 : B | provenance | | +| extensions.cs:185:13:185:14 | access to local variable b4 : B | extensions.cs:186:43:186:44 | access to local variable b4 : B | provenance | | +| extensions.cs:185:18:185:31 | call to method Source : B | extensions.cs:185:13:185:14 | access to local variable b4 : B | provenance | | +| extensions.cs:185:18:185:31 | call to method Source : B | extensions.cs:185:13:185:14 | access to local variable b4 : B | provenance | | +| extensions.cs:186:43:186:44 | access to local variable b4 : B | extensions.cs:59:48:59:48 | a : B | provenance | | +| extensions.cs:186:43:186:44 | access to local variable b4 : B | extensions.cs:59:48:59:48 | a : B | provenance | | +| extensions.cs:193:13:193:14 | access to local variable b3 : B | extensions.cs:194:14:194:15 | access to local variable b3 | provenance | | +| extensions.cs:193:13:193:14 | access to local variable b3 : B | extensions.cs:194:14:194:15 | access to local variable b3 | provenance | | +| extensions.cs:193:18:193:24 | call to operator - : B | extensions.cs:193:13:193:14 | access to local variable b3 : B | provenance | | +| extensions.cs:193:18:193:24 | call to operator - : B | extensions.cs:193:13:193:14 | access to local variable b3 : B | provenance | | +| extensions.cs:196:13:196:14 | access to local variable b4 : B | extensions.cs:197:14:197:15 | access to local variable b4 | provenance | | +| extensions.cs:196:13:196:14 | access to local variable b4 : B | extensions.cs:197:14:197:15 | access to local variable b4 | provenance | | +| extensions.cs:196:18:196:52 | call to operator - : B | extensions.cs:196:13:196:14 | access to local variable b4 : B | provenance | | +| extensions.cs:196:18:196:52 | call to operator - : B | extensions.cs:196:13:196:14 | access to local variable b4 : B | provenance | | +| extensions.cs:202:13:202:14 | access to local variable b1 : B | extensions.cs:203:14:203:15 | access to local variable b1 | provenance | | +| extensions.cs:202:13:202:14 | access to local variable b1 : B | extensions.cs:203:14:203:15 | access to local variable b1 | provenance | | +| extensions.cs:202:18:202:35 | access to property StaticProp1 : B | extensions.cs:202:13:202:14 | access to local variable b1 : B | provenance | | +| extensions.cs:202:18:202:35 | access to property StaticProp1 : B | extensions.cs:202:13:202:14 | access to local variable b1 : B | provenance | | +| extensions.cs:205:13:205:14 | access to local variable b2 : B | extensions.cs:206:14:206:15 | access to local variable b2 | provenance | | +| extensions.cs:205:13:205:14 | access to local variable b2 : B | extensions.cs:206:14:206:15 | access to local variable b2 | provenance | | +| extensions.cs:205:18:205:47 | call to extension accessor get_StaticProp1 : B | extensions.cs:205:13:205:14 | access to local variable b2 : B | provenance | | +| extensions.cs:205:18:205:47 | call to extension accessor get_StaticProp1 : B | extensions.cs:205:13:205:14 | access to local variable b2 : B | provenance | | +| extensions.cs:211:13:211:14 | access to local variable b1 : B | extensions.cs:212:30:212:31 | access to local variable b1 : B | provenance | | +| extensions.cs:211:13:211:14 | access to local variable b1 : B | extensions.cs:212:30:212:31 | access to local variable b1 : B | provenance | | +| extensions.cs:211:18:211:30 | call to method Source : B | extensions.cs:211:13:211:14 | access to local variable b1 : B | provenance | | +| extensions.cs:211:18:211:30 | call to method Source : B | extensions.cs:211:13:211:14 | access to local variable b1 : B | provenance | | +| extensions.cs:212:30:212:31 | access to local variable b1 : B | extensions.cs:38:13:38:15 | value : B | provenance | | +| extensions.cs:212:30:212:31 | access to local variable b1 : B | extensions.cs:38:13:38:15 | value : B | provenance | | +| extensions.cs:214:13:214:14 | access to local variable b2 : B | extensions.cs:215:38:215:39 | access to local variable b2 : B | provenance | | +| extensions.cs:214:13:214:14 | access to local variable b2 : B | extensions.cs:215:38:215:39 | access to local variable b2 : B | provenance | | +| extensions.cs:214:18:214:31 | call to method Source : B | extensions.cs:214:13:214:14 | access to local variable b2 : B | provenance | | +| extensions.cs:214:18:214:31 | call to method Source : B | extensions.cs:214:13:214:14 | access to local variable b2 : B | provenance | | +| extensions.cs:215:38:215:39 | access to local variable b2 : B | extensions.cs:38:13:38:15 | value : B | provenance | | +| extensions.cs:215:38:215:39 | access to local variable b2 : B | extensions.cs:38:13:38:15 | value : B | provenance | | +| extensions.cs:220:13:220:14 | access to local variable b1 : B | extensions.cs:221:9:221:10 | access to local variable b1 : B | provenance | | +| extensions.cs:220:13:220:14 | access to local variable b1 : B | extensions.cs:221:9:221:10 | access to local variable b1 : B | provenance | | +| extensions.cs:220:18:220:30 | call to method Source : B | extensions.cs:220:13:220:14 | access to local variable b1 : B | provenance | | +| extensions.cs:220:18:220:30 | call to method Source : B | extensions.cs:220:13:220:14 | access to local variable b1 : B | provenance | | +| extensions.cs:221:9:221:10 | access to local variable b1 : B | extensions.cs:76:17:76:17 | b : B | provenance | | +| extensions.cs:221:9:221:10 | access to local variable b1 : B | extensions.cs:76:17:76:17 | b : B | provenance | | +| extensions.cs:223:13:223:14 | access to local variable b2 : B | extensions.cs:224:25:224:26 | access to local variable b2 : B | provenance | | +| extensions.cs:223:13:223:14 | access to local variable b2 : B | extensions.cs:224:25:224:26 | access to local variable b2 : B | provenance | | +| extensions.cs:223:18:223:31 | call to method Source : B | extensions.cs:223:13:223:14 | access to local variable b2 : B | provenance | | +| extensions.cs:223:18:223:31 | call to method Source : B | extensions.cs:223:13:223:14 | access to local variable b2 : B | provenance | | +| extensions.cs:224:25:224:26 | access to local variable b2 : B | extensions.cs:76:17:76:17 | b : B | provenance | | +| extensions.cs:224:25:224:26 | access to local variable b2 : B | extensions.cs:76:17:76:17 | b : B | provenance | | +| extensions.cs:229:13:229:14 | access to local variable b1 : B | extensions.cs:230:9:230:10 | access to local variable b1 : B | provenance | | +| extensions.cs:229:13:229:14 | access to local variable b1 : B | extensions.cs:230:9:230:10 | access to local variable b1 : B | provenance | | +| extensions.cs:229:18:229:30 | call to method Source : B | extensions.cs:229:13:229:14 | access to local variable b1 : B | provenance | | +| extensions.cs:229:18:229:30 | call to method Source : B | extensions.cs:229:13:229:14 | access to local variable b1 : B | provenance | | +| extensions.cs:230:9:230:10 | access to local variable b1 : B | extensions.cs:97:20:97:20 | t : B | provenance | | +| extensions.cs:230:9:230:10 | access to local variable b1 : B | extensions.cs:97:20:97:20 | t : B | provenance | | +| extensions.cs:232:13:232:14 | access to local variable b2 : B | extensions.cs:233:32:233:33 | access to local variable b2 : B | provenance | | +| extensions.cs:232:13:232:14 | access to local variable b2 : B | extensions.cs:233:32:233:33 | access to local variable b2 : B | provenance | | +| extensions.cs:232:18:232:31 | call to method Source : B | extensions.cs:232:13:232:14 | access to local variable b2 : B | provenance | | +| extensions.cs:232:18:232:31 | call to method Source : B | extensions.cs:232:13:232:14 | access to local variable b2 : B | provenance | | +| extensions.cs:233:32:233:33 | access to local variable b2 : B | extensions.cs:97:20:97:20 | t : B | provenance | | +| extensions.cs:233:32:233:33 | access to local variable b2 : B | extensions.cs:97:20:97:20 | t : B | provenance | | +| extensions.cs:239:13:239:14 | access to local variable b1 : B | extensions.cs:240:32:240:33 | access to local variable b1 : B | provenance | | +| extensions.cs:239:13:239:14 | access to local variable b1 : B | extensions.cs:240:32:240:33 | access to local variable b1 : B | provenance | | +| extensions.cs:239:13:239:14 | access to local variable b1 : B | extensions.cs:243:46:243:47 | access to local variable b1 : B | provenance | | +| extensions.cs:239:13:239:14 | access to local variable b1 : B | extensions.cs:243:46:243:47 | access to local variable b1 : B | provenance | | +| extensions.cs:239:18:239:30 | call to method Source : B | extensions.cs:239:13:239:14 | access to local variable b1 : B | provenance | | +| extensions.cs:239:18:239:30 | call to method Source : B | extensions.cs:239:13:239:14 | access to local variable b1 : B | provenance | | +| extensions.cs:240:13:240:14 | access to local variable b2 : B | extensions.cs:241:14:241:15 | access to local variable b2 | provenance | | +| extensions.cs:240:13:240:14 | access to local variable b2 : B | extensions.cs:241:14:241:15 | access to local variable b2 | provenance | | +| extensions.cs:240:18:240:34 | call to method GenericM2 : B | extensions.cs:240:13:240:14 | access to local variable b2 : B | provenance | | +| extensions.cs:240:18:240:34 | call to method GenericM2 : B | extensions.cs:240:13:240:14 | access to local variable b2 : B | provenance | | +| extensions.cs:240:32:240:33 | access to local variable b1 : B | extensions.cs:104:33:104:37 | other : B | provenance | | +| extensions.cs:240:32:240:33 | access to local variable b1 : B | extensions.cs:104:33:104:37 | other : B | provenance | | +| extensions.cs:240:32:240:33 | access to local variable b1 : B | extensions.cs:240:18:240:34 | call to method GenericM2 : B | provenance | | +| extensions.cs:240:32:240:33 | access to local variable b1 : B | extensions.cs:240:18:240:34 | call to method GenericM2 : B | provenance | | +| extensions.cs:243:13:243:14 | access to local variable b3 : B | extensions.cs:244:14:244:15 | access to local variable b3 | provenance | | +| extensions.cs:243:13:243:14 | access to local variable b3 : B | extensions.cs:244:14:244:15 | access to local variable b3 | provenance | | +| extensions.cs:243:18:243:48 | call to method GenericM2 : B | extensions.cs:243:13:243:14 | access to local variable b3 : B | provenance | | +| extensions.cs:243:18:243:48 | call to method GenericM2 : B | extensions.cs:243:13:243:14 | access to local variable b3 : B | provenance | | +| extensions.cs:243:46:243:47 | access to local variable b1 : B | extensions.cs:104:33:104:37 | other : B | provenance | | +| extensions.cs:243:46:243:47 | access to local variable b1 : B | extensions.cs:104:33:104:37 | other : B | provenance | | +| extensions.cs:243:46:243:47 | access to local variable b1 : B | extensions.cs:243:18:243:48 | call to method GenericM2 : B | provenance | | +| extensions.cs:243:46:243:47 | access to local variable b1 : B | extensions.cs:243:18:243:48 | call to method GenericM2 : B | provenance | | +| extensions.cs:250:9:250:10 | [post] access to local variable c1 : C [property Prop] : Object | extensions.cs:252:15:252:16 | access to local variable c1 : C [property Prop] : Object | provenance | | +| extensions.cs:250:9:250:10 | [post] access to local variable c1 : C [property Prop] : Object | extensions.cs:252:15:252:16 | access to local variable c1 : C [property Prop] : Object | provenance | | +| extensions.cs:250:9:250:10 | [post] access to local variable c1 : C [property Prop] : Object | extensions.cs:256:54:256:55 | access to local variable c1 : C [property Prop] : Object | provenance | | +| extensions.cs:250:9:250:10 | [post] access to local variable c1 : C [property Prop] : Object | extensions.cs:256:54:256:55 | access to local variable c1 : C [property Prop] : Object | provenance | | +| extensions.cs:250:19:250:36 | call to method Source : Object | extensions.cs:250:9:250:10 | [post] access to local variable c1 : C [property Prop] : Object | provenance | | +| extensions.cs:250:19:250:36 | call to method Source : Object | extensions.cs:250:9:250:10 | [post] access to local variable c1 : C [property Prop] : Object | provenance | | +| extensions.cs:252:9:252:10 | [post] access to local variable c2 : C [property Prop] : Object | extensions.cs:253:14:253:15 | access to local variable c2 : C [property Prop] : Object | provenance | | +| extensions.cs:252:9:252:10 | [post] access to local variable c2 : C [property Prop] : Object | extensions.cs:253:14:253:15 | access to local variable c2 : C [property Prop] : Object | provenance | | +| extensions.cs:252:15:252:16 | access to local variable c1 : C [property Prop] : Object | extensions.cs:91:35:91:36 | c1 : C [property Prop] : Object | provenance | | +| extensions.cs:252:15:252:16 | access to local variable c1 : C [property Prop] : Object | extensions.cs:91:35:91:36 | c1 : C [property Prop] : Object | provenance | | +| extensions.cs:252:15:252:16 | access to local variable c1 : C [property Prop] : Object | extensions.cs:252:9:252:10 | [post] access to local variable c2 : C [property Prop] : Object | provenance | | +| extensions.cs:252:15:252:16 | access to local variable c1 : C [property Prop] : Object | extensions.cs:252:9:252:10 | [post] access to local variable c2 : C [property Prop] : Object | provenance | | +| extensions.cs:253:14:253:15 | access to local variable c2 : C [property Prop] : Object | extensions.cs:253:14:253:20 | access to property Prop | provenance | | +| extensions.cs:253:14:253:15 | access to local variable c2 : C [property Prop] : Object | extensions.cs:253:14:253:20 | access to property Prop | provenance | | +| extensions.cs:256:50:256:51 | [post] access to local variable c3 : C [property Prop] : Object | extensions.cs:257:14:257:15 | access to local variable c3 : C [property Prop] : Object | provenance | | +| extensions.cs:256:50:256:51 | [post] access to local variable c3 : C [property Prop] : Object | extensions.cs:257:14:257:15 | access to local variable c3 : C [property Prop] : Object | provenance | | +| extensions.cs:256:54:256:55 | access to local variable c1 : C [property Prop] : Object | extensions.cs:91:35:91:36 | c1 : C [property Prop] : Object | provenance | | +| extensions.cs:256:54:256:55 | access to local variable c1 : C [property Prop] : Object | extensions.cs:91:35:91:36 | c1 : C [property Prop] : Object | provenance | | +| extensions.cs:256:54:256:55 | access to local variable c1 : C [property Prop] : Object | extensions.cs:256:50:256:51 | [post] access to local variable c3 : C [property Prop] : Object | provenance | | +| extensions.cs:256:54:256:55 | access to local variable c1 : C [property Prop] : Object | extensions.cs:256:50:256:51 | [post] access to local variable c3 : C [property Prop] : Object | provenance | | +| extensions.cs:257:14:257:15 | access to local variable c3 : C [property Prop] : Object | extensions.cs:257:14:257:20 | access to property Prop | provenance | | +| extensions.cs:257:14:257:15 | access to local variable c3 : C [property Prop] : Object | extensions.cs:257:14:257:20 | access to property Prop | provenance | | nodes | extensions.cs:5:22:5:24 | obj : B | semmle.label | obj : B | | extensions.cs:5:22:5:24 | obj : B | semmle.label | obj : B | @@ -245,258 +275,296 @@ nodes | extensions.cs:80:20:80:20 | access to extension synthetic parameter b : B | semmle.label | access to extension synthetic parameter b : B | | extensions.cs:85:20:85:20 | access to extension synthetic parameter b | semmle.label | access to extension synthetic parameter b | | extensions.cs:85:20:85:20 | access to extension synthetic parameter b | semmle.label | access to extension synthetic parameter b | -| extensions.cs:89:20:89:20 | t : B | semmle.label | t : B | -| extensions.cs:89:20:89:20 | t : B | semmle.label | t : B | -| extensions.cs:93:20:93:20 | access to extension synthetic parameter t | semmle.label | access to extension synthetic parameter t | -| extensions.cs:93:20:93:20 | access to extension synthetic parameter t | semmle.label | access to extension synthetic parameter t | -| extensions.cs:96:33:96:37 | other : B | semmle.label | other : B | -| extensions.cs:96:33:96:37 | other : B | semmle.label | other : B | -| extensions.cs:98:20:98:24 | access to parameter other : B | semmle.label | access to parameter other : B | -| extensions.cs:98:20:98:24 | access to parameter other : B | semmle.label | access to parameter other : B | -| extensions.cs:108:13:108:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:108:13:108:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:108:18:108:26 | access to property Prop1 : B | semmle.label | access to property Prop1 : B | -| extensions.cs:108:18:108:26 | access to property Prop1 : B | semmle.label | access to property Prop1 : B | -| extensions.cs:109:14:109:15 | access to local variable b1 | semmle.label | access to local variable b1 | -| extensions.cs:109:14:109:15 | access to local variable b1 | semmle.label | access to local variable b1 | -| extensions.cs:111:13:111:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | -| extensions.cs:111:13:111:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | -| extensions.cs:111:18:111:44 | call to extension accessor get_Prop1 : B | semmle.label | call to extension accessor get_Prop1 : B | -| extensions.cs:111:18:111:44 | call to extension accessor get_Prop1 : B | semmle.label | call to extension accessor get_Prop1 : B | -| extensions.cs:112:14:112:15 | access to local variable b2 | semmle.label | access to local variable b2 | -| extensions.cs:112:14:112:15 | access to local variable b2 | semmle.label | access to local variable b2 | -| extensions.cs:118:21:118:32 | call to method Source : B | semmle.label | call to method Source : B | -| extensions.cs:118:21:118:32 | call to method Source : B | semmle.label | call to method Source : B | -| extensions.cs:120:13:120:13 | access to local variable b : B | semmle.label | access to local variable b : B | -| extensions.cs:120:13:120:13 | access to local variable b : B | semmle.label | access to local variable b : B | -| extensions.cs:120:17:120:30 | call to method Source : B | semmle.label | call to method Source : B | -| extensions.cs:120:17:120:30 | call to method Source : B | semmle.label | call to method Source : B | -| extensions.cs:121:37:121:37 | access to local variable b : B | semmle.label | access to local variable b : B | -| extensions.cs:121:37:121:37 | access to local variable b : B | semmle.label | access to local variable b : B | -| extensions.cs:127:13:127:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:127:13:127:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:127:18:127:25 | call to method M1 : B | semmle.label | call to method M1 : B | -| extensions.cs:127:18:127:25 | call to method M1 : B | semmle.label | call to method M1 : B | -| extensions.cs:128:14:128:15 | access to local variable b1 | semmle.label | access to local variable b1 | -| extensions.cs:128:14:128:15 | access to local variable b1 | semmle.label | access to local variable b1 | -| extensions.cs:130:13:130:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | -| extensions.cs:130:13:130:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | -| extensions.cs:130:18:130:37 | call to method M1 : B | semmle.label | call to method M1 : B | -| extensions.cs:130:18:130:37 | call to method M1 : B | semmle.label | call to method M1 : B | -| extensions.cs:131:14:131:15 | access to local variable b2 | semmle.label | access to local variable b2 | -| extensions.cs:131:14:131:15 | access to local variable b2 | semmle.label | access to local variable b2 | -| extensions.cs:136:13:136:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:136:13:136:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:136:18:136:29 | call to method Source : B | semmle.label | call to method Source : B | -| extensions.cs:136:18:136:29 | call to method Source : B | semmle.label | call to method Source : B | -| extensions.cs:137:9:137:10 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:137:9:137:10 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:139:13:139:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | -| extensions.cs:139:13:139:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | -| extensions.cs:139:18:139:31 | call to method Source : B | semmle.label | call to method Source : B | -| extensions.cs:139:18:139:31 | call to method Source : B | semmle.label | call to method Source : B | -| extensions.cs:140:25:140:26 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | -| extensions.cs:140:25:140:26 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | -| extensions.cs:145:13:145:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:145:13:145:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:145:18:145:29 | call to method Source : B | semmle.label | call to method Source : B | -| extensions.cs:145:18:145:29 | call to method Source : B | semmle.label | call to method Source : B | -| extensions.cs:146:13:146:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | -| extensions.cs:146:13:146:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | -| extensions.cs:146:18:146:19 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:146:18:146:19 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:146:18:146:24 | call to method B1 : B | semmle.label | call to method B1 : B | -| extensions.cs:146:18:146:24 | call to method B1 : B | semmle.label | call to method B1 : B | -| extensions.cs:147:14:147:15 | access to local variable b2 | semmle.label | access to local variable b2 | -| extensions.cs:147:14:147:15 | access to local variable b2 | semmle.label | access to local variable b2 | -| extensions.cs:149:13:149:14 | access to local variable b3 : B | semmle.label | access to local variable b3 : B | -| extensions.cs:149:13:149:14 | access to local variable b3 : B | semmle.label | access to local variable b3 : B | -| extensions.cs:149:18:149:36 | call to method B1 : B | semmle.label | call to method B1 : B | -| extensions.cs:149:18:149:36 | call to method B1 : B | semmle.label | call to method B1 : B | -| extensions.cs:149:34:149:35 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:149:34:149:35 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:150:14:150:15 | access to local variable b3 | semmle.label | access to local variable b3 | -| extensions.cs:150:14:150:15 | access to local variable b3 | semmle.label | access to local variable b3 | -| extensions.cs:155:13:155:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:155:13:155:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:155:18:155:29 | call to method Source : B | semmle.label | call to method Source : B | -| extensions.cs:155:18:155:29 | call to method Source : B | semmle.label | call to method Source : B | -| extensions.cs:156:18:156:19 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:156:18:156:19 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:158:13:158:14 | access to local variable b3 : B | semmle.label | access to local variable b3 : B | -| extensions.cs:158:13:158:14 | access to local variable b3 : B | semmle.label | access to local variable b3 : B | -| extensions.cs:158:18:158:31 | call to method Source : B | semmle.label | call to method Source : B | -| extensions.cs:158:18:158:31 | call to method Source : B | semmle.label | call to method Source : B | -| extensions.cs:159:41:159:42 | access to local variable b3 : B | semmle.label | access to local variable b3 : B | -| extensions.cs:159:41:159:42 | access to local variable b3 : B | semmle.label | access to local variable b3 : B | -| extensions.cs:164:13:164:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:164:13:164:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:164:18:164:29 | call to method Source : B | semmle.label | call to method Source : B | -| extensions.cs:164:18:164:29 | call to method Source : B | semmle.label | call to method Source : B | -| extensions.cs:165:9:165:10 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:165:9:165:10 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:167:13:167:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | -| extensions.cs:167:13:167:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | -| extensions.cs:167:18:167:31 | call to method Source : B | semmle.label | call to method Source : B | -| extensions.cs:167:18:167:31 | call to method Source : B | semmle.label | call to method Source : B | -| extensions.cs:168:32:168:33 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | -| extensions.cs:168:32:168:33 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | -| extensions.cs:173:13:173:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:173:13:173:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:173:18:173:29 | call to method Source : B | semmle.label | call to method Source : B | -| extensions.cs:173:18:173:29 | call to method Source : B | semmle.label | call to method Source : B | -| extensions.cs:175:18:175:19 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:175:18:175:19 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:177:13:177:14 | access to local variable b4 : B | semmle.label | access to local variable b4 : B | -| extensions.cs:177:13:177:14 | access to local variable b4 : B | semmle.label | access to local variable b4 : B | -| extensions.cs:177:18:177:31 | call to method Source : B | semmle.label | call to method Source : B | -| extensions.cs:177:18:177:31 | call to method Source : B | semmle.label | call to method Source : B | -| extensions.cs:178:43:178:44 | access to local variable b4 : B | semmle.label | access to local variable b4 : B | -| extensions.cs:178:43:178:44 | access to local variable b4 : B | semmle.label | access to local variable b4 : B | -| extensions.cs:185:13:185:14 | access to local variable b3 : B | semmle.label | access to local variable b3 : B | -| extensions.cs:185:13:185:14 | access to local variable b3 : B | semmle.label | access to local variable b3 : B | -| extensions.cs:185:18:185:24 | call to operator - : B | semmle.label | call to operator - : B | -| extensions.cs:185:18:185:24 | call to operator - : B | semmle.label | call to operator - : B | -| extensions.cs:186:14:186:15 | access to local variable b3 | semmle.label | access to local variable b3 | -| extensions.cs:186:14:186:15 | access to local variable b3 | semmle.label | access to local variable b3 | -| extensions.cs:188:13:188:14 | access to local variable b4 : B | semmle.label | access to local variable b4 : B | -| extensions.cs:188:13:188:14 | access to local variable b4 : B | semmle.label | access to local variable b4 : B | -| extensions.cs:188:18:188:52 | call to operator - : B | semmle.label | call to operator - : B | -| extensions.cs:188:18:188:52 | call to operator - : B | semmle.label | call to operator - : B | -| extensions.cs:189:14:189:15 | access to local variable b4 | semmle.label | access to local variable b4 | -| extensions.cs:189:14:189:15 | access to local variable b4 | semmle.label | access to local variable b4 | -| extensions.cs:194:13:194:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:194:13:194:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:194:18:194:35 | access to property StaticProp1 : B | semmle.label | access to property StaticProp1 : B | -| extensions.cs:194:18:194:35 | access to property StaticProp1 : B | semmle.label | access to property StaticProp1 : B | -| extensions.cs:195:14:195:15 | access to local variable b1 | semmle.label | access to local variable b1 | -| extensions.cs:195:14:195:15 | access to local variable b1 | semmle.label | access to local variable b1 | -| extensions.cs:197:13:197:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | -| extensions.cs:197:13:197:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | -| extensions.cs:197:18:197:47 | call to extension accessor get_StaticProp1 : B | semmle.label | call to extension accessor get_StaticProp1 : B | -| extensions.cs:197:18:197:47 | call to extension accessor get_StaticProp1 : B | semmle.label | call to extension accessor get_StaticProp1 : B | -| extensions.cs:198:14:198:15 | access to local variable b2 | semmle.label | access to local variable b2 | -| extensions.cs:198:14:198:15 | access to local variable b2 | semmle.label | access to local variable b2 | -| extensions.cs:203:13:203:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:203:13:203:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:203:18:203:30 | call to method Source : B | semmle.label | call to method Source : B | -| extensions.cs:203:18:203:30 | call to method Source : B | semmle.label | call to method Source : B | -| extensions.cs:204:30:204:31 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:204:30:204:31 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:206:13:206:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | -| extensions.cs:206:13:206:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | -| extensions.cs:206:18:206:31 | call to method Source : B | semmle.label | call to method Source : B | -| extensions.cs:206:18:206:31 | call to method Source : B | semmle.label | call to method Source : B | -| extensions.cs:207:38:207:39 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | -| extensions.cs:207:38:207:39 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | -| extensions.cs:212:13:212:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:212:13:212:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:212:18:212:30 | call to method Source : B | semmle.label | call to method Source : B | -| extensions.cs:212:18:212:30 | call to method Source : B | semmle.label | call to method Source : B | -| extensions.cs:213:9:213:10 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:213:9:213:10 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:215:13:215:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | -| extensions.cs:215:13:215:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | -| extensions.cs:215:18:215:31 | call to method Source : B | semmle.label | call to method Source : B | -| extensions.cs:215:18:215:31 | call to method Source : B | semmle.label | call to method Source : B | -| extensions.cs:216:25:216:26 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | -| extensions.cs:216:25:216:26 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | -| extensions.cs:221:13:221:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:221:13:221:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:221:18:221:30 | call to method Source : B | semmle.label | call to method Source : B | -| extensions.cs:221:18:221:30 | call to method Source : B | semmle.label | call to method Source : B | -| extensions.cs:222:9:222:10 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:222:9:222:10 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:224:13:224:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | -| extensions.cs:224:13:224:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | -| extensions.cs:224:18:224:31 | call to method Source : B | semmle.label | call to method Source : B | -| extensions.cs:224:18:224:31 | call to method Source : B | semmle.label | call to method Source : B | -| extensions.cs:225:32:225:33 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | -| extensions.cs:225:32:225:33 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | -| extensions.cs:231:13:231:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:231:13:231:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:231:18:231:30 | call to method Source : B | semmle.label | call to method Source : B | -| extensions.cs:231:18:231:30 | call to method Source : B | semmle.label | call to method Source : B | +| extensions.cs:89:17:89:17 | c [Return] : C [property Prop] : Object | semmle.label | c [Return] : C [property Prop] : Object | +| extensions.cs:89:17:89:17 | c [Return] : C [property Prop] : Object | semmle.label | c [Return] : C [property Prop] : Object | +| extensions.cs:91:35:91:36 | c1 : C [property Prop] : Object | semmle.label | c1 : C [property Prop] : Object | +| extensions.cs:91:35:91:36 | c1 : C [property Prop] : Object | semmle.label | c1 : C [property Prop] : Object | +| extensions.cs:93:13:93:13 | [post] access to extension synthetic parameter c : C [property Prop] : Object | semmle.label | [post] access to extension synthetic parameter c : C [property Prop] : Object | +| extensions.cs:93:13:93:13 | [post] access to extension synthetic parameter c : C [property Prop] : Object | semmle.label | [post] access to extension synthetic parameter c : C [property Prop] : Object | +| extensions.cs:93:22:93:23 | access to parameter c1 : C [property Prop] : Object | semmle.label | access to parameter c1 : C [property Prop] : Object | +| extensions.cs:93:22:93:23 | access to parameter c1 : C [property Prop] : Object | semmle.label | access to parameter c1 : C [property Prop] : Object | +| extensions.cs:93:22:93:28 | access to property Prop : Object | semmle.label | access to property Prop : Object | +| extensions.cs:93:22:93:28 | access to property Prop : Object | semmle.label | access to property Prop : Object | +| extensions.cs:97:20:97:20 | t : B | semmle.label | t : B | +| extensions.cs:97:20:97:20 | t : B | semmle.label | t : B | +| extensions.cs:101:20:101:20 | access to extension synthetic parameter t | semmle.label | access to extension synthetic parameter t | +| extensions.cs:101:20:101:20 | access to extension synthetic parameter t | semmle.label | access to extension synthetic parameter t | +| extensions.cs:104:33:104:37 | other : B | semmle.label | other : B | +| extensions.cs:104:33:104:37 | other : B | semmle.label | other : B | +| extensions.cs:106:20:106:24 | access to parameter other : B | semmle.label | access to parameter other : B | +| extensions.cs:106:20:106:24 | access to parameter other : B | semmle.label | access to parameter other : B | +| extensions.cs:116:13:116:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:116:13:116:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:116:18:116:26 | access to property Prop1 : B | semmle.label | access to property Prop1 : B | +| extensions.cs:116:18:116:26 | access to property Prop1 : B | semmle.label | access to property Prop1 : B | +| extensions.cs:117:14:117:15 | access to local variable b1 | semmle.label | access to local variable b1 | +| extensions.cs:117:14:117:15 | access to local variable b1 | semmle.label | access to local variable b1 | +| extensions.cs:119:13:119:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | +| extensions.cs:119:13:119:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | +| extensions.cs:119:18:119:44 | call to extension accessor get_Prop1 : B | semmle.label | call to extension accessor get_Prop1 : B | +| extensions.cs:119:18:119:44 | call to extension accessor get_Prop1 : B | semmle.label | call to extension accessor get_Prop1 : B | +| extensions.cs:120:14:120:15 | access to local variable b2 | semmle.label | access to local variable b2 | +| extensions.cs:120:14:120:15 | access to local variable b2 | semmle.label | access to local variable b2 | +| extensions.cs:126:21:126:32 | call to method Source : B | semmle.label | call to method Source : B | +| extensions.cs:126:21:126:32 | call to method Source : B | semmle.label | call to method Source : B | +| extensions.cs:128:13:128:13 | access to local variable b : B | semmle.label | access to local variable b : B | +| extensions.cs:128:13:128:13 | access to local variable b : B | semmle.label | access to local variable b : B | +| extensions.cs:128:17:128:30 | call to method Source : B | semmle.label | call to method Source : B | +| extensions.cs:128:17:128:30 | call to method Source : B | semmle.label | call to method Source : B | +| extensions.cs:129:37:129:37 | access to local variable b : B | semmle.label | access to local variable b : B | +| extensions.cs:129:37:129:37 | access to local variable b : B | semmle.label | access to local variable b : B | +| extensions.cs:135:13:135:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:135:13:135:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:135:18:135:25 | call to method M1 : B | semmle.label | call to method M1 : B | +| extensions.cs:135:18:135:25 | call to method M1 : B | semmle.label | call to method M1 : B | +| extensions.cs:136:14:136:15 | access to local variable b1 | semmle.label | access to local variable b1 | +| extensions.cs:136:14:136:15 | access to local variable b1 | semmle.label | access to local variable b1 | +| extensions.cs:138:13:138:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | +| extensions.cs:138:13:138:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | +| extensions.cs:138:18:138:37 | call to method M1 : B | semmle.label | call to method M1 : B | +| extensions.cs:138:18:138:37 | call to method M1 : B | semmle.label | call to method M1 : B | +| extensions.cs:139:14:139:15 | access to local variable b2 | semmle.label | access to local variable b2 | +| extensions.cs:139:14:139:15 | access to local variable b2 | semmle.label | access to local variable b2 | +| extensions.cs:144:13:144:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:144:13:144:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:144:18:144:29 | call to method Source : B | semmle.label | call to method Source : B | +| extensions.cs:144:18:144:29 | call to method Source : B | semmle.label | call to method Source : B | +| extensions.cs:145:9:145:10 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:145:9:145:10 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:147:13:147:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | +| extensions.cs:147:13:147:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | +| extensions.cs:147:18:147:31 | call to method Source : B | semmle.label | call to method Source : B | +| extensions.cs:147:18:147:31 | call to method Source : B | semmle.label | call to method Source : B | +| extensions.cs:148:25:148:26 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | +| extensions.cs:148:25:148:26 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | +| extensions.cs:153:13:153:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:153:13:153:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:153:18:153:29 | call to method Source : B | semmle.label | call to method Source : B | +| extensions.cs:153:18:153:29 | call to method Source : B | semmle.label | call to method Source : B | +| extensions.cs:154:13:154:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | +| extensions.cs:154:13:154:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | +| extensions.cs:154:18:154:19 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:154:18:154:19 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:154:18:154:24 | call to method B1 : B | semmle.label | call to method B1 : B | +| extensions.cs:154:18:154:24 | call to method B1 : B | semmle.label | call to method B1 : B | +| extensions.cs:155:14:155:15 | access to local variable b2 | semmle.label | access to local variable b2 | +| extensions.cs:155:14:155:15 | access to local variable b2 | semmle.label | access to local variable b2 | +| extensions.cs:157:13:157:14 | access to local variable b3 : B | semmle.label | access to local variable b3 : B | +| extensions.cs:157:13:157:14 | access to local variable b3 : B | semmle.label | access to local variable b3 : B | +| extensions.cs:157:18:157:36 | call to method B1 : B | semmle.label | call to method B1 : B | +| extensions.cs:157:18:157:36 | call to method B1 : B | semmle.label | call to method B1 : B | +| extensions.cs:157:34:157:35 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:157:34:157:35 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:158:14:158:15 | access to local variable b3 | semmle.label | access to local variable b3 | +| extensions.cs:158:14:158:15 | access to local variable b3 | semmle.label | access to local variable b3 | +| extensions.cs:163:13:163:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:163:13:163:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:163:18:163:29 | call to method Source : B | semmle.label | call to method Source : B | +| extensions.cs:163:18:163:29 | call to method Source : B | semmle.label | call to method Source : B | +| extensions.cs:164:18:164:19 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:164:18:164:19 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:166:13:166:14 | access to local variable b3 : B | semmle.label | access to local variable b3 : B | +| extensions.cs:166:13:166:14 | access to local variable b3 : B | semmle.label | access to local variable b3 : B | +| extensions.cs:166:18:166:31 | call to method Source : B | semmle.label | call to method Source : B | +| extensions.cs:166:18:166:31 | call to method Source : B | semmle.label | call to method Source : B | +| extensions.cs:167:41:167:42 | access to local variable b3 : B | semmle.label | access to local variable b3 : B | +| extensions.cs:167:41:167:42 | access to local variable b3 : B | semmle.label | access to local variable b3 : B | +| extensions.cs:172:13:172:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:172:13:172:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:172:18:172:29 | call to method Source : B | semmle.label | call to method Source : B | +| extensions.cs:172:18:172:29 | call to method Source : B | semmle.label | call to method Source : B | +| extensions.cs:173:9:173:10 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:173:9:173:10 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:175:13:175:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | +| extensions.cs:175:13:175:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | +| extensions.cs:175:18:175:31 | call to method Source : B | semmle.label | call to method Source : B | +| extensions.cs:175:18:175:31 | call to method Source : B | semmle.label | call to method Source : B | +| extensions.cs:176:32:176:33 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | +| extensions.cs:176:32:176:33 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | +| extensions.cs:181:13:181:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:181:13:181:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:181:18:181:29 | call to method Source : B | semmle.label | call to method Source : B | +| extensions.cs:181:18:181:29 | call to method Source : B | semmle.label | call to method Source : B | +| extensions.cs:183:18:183:19 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:183:18:183:19 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:185:13:185:14 | access to local variable b4 : B | semmle.label | access to local variable b4 : B | +| extensions.cs:185:13:185:14 | access to local variable b4 : B | semmle.label | access to local variable b4 : B | +| extensions.cs:185:18:185:31 | call to method Source : B | semmle.label | call to method Source : B | +| extensions.cs:185:18:185:31 | call to method Source : B | semmle.label | call to method Source : B | +| extensions.cs:186:43:186:44 | access to local variable b4 : B | semmle.label | access to local variable b4 : B | +| extensions.cs:186:43:186:44 | access to local variable b4 : B | semmle.label | access to local variable b4 : B | +| extensions.cs:193:13:193:14 | access to local variable b3 : B | semmle.label | access to local variable b3 : B | +| extensions.cs:193:13:193:14 | access to local variable b3 : B | semmle.label | access to local variable b3 : B | +| extensions.cs:193:18:193:24 | call to operator - : B | semmle.label | call to operator - : B | +| extensions.cs:193:18:193:24 | call to operator - : B | semmle.label | call to operator - : B | +| extensions.cs:194:14:194:15 | access to local variable b3 | semmle.label | access to local variable b3 | +| extensions.cs:194:14:194:15 | access to local variable b3 | semmle.label | access to local variable b3 | +| extensions.cs:196:13:196:14 | access to local variable b4 : B | semmle.label | access to local variable b4 : B | +| extensions.cs:196:13:196:14 | access to local variable b4 : B | semmle.label | access to local variable b4 : B | +| extensions.cs:196:18:196:52 | call to operator - : B | semmle.label | call to operator - : B | +| extensions.cs:196:18:196:52 | call to operator - : B | semmle.label | call to operator - : B | +| extensions.cs:197:14:197:15 | access to local variable b4 | semmle.label | access to local variable b4 | +| extensions.cs:197:14:197:15 | access to local variable b4 | semmle.label | access to local variable b4 | +| extensions.cs:202:13:202:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:202:13:202:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:202:18:202:35 | access to property StaticProp1 : B | semmle.label | access to property StaticProp1 : B | +| extensions.cs:202:18:202:35 | access to property StaticProp1 : B | semmle.label | access to property StaticProp1 : B | +| extensions.cs:203:14:203:15 | access to local variable b1 | semmle.label | access to local variable b1 | +| extensions.cs:203:14:203:15 | access to local variable b1 | semmle.label | access to local variable b1 | +| extensions.cs:205:13:205:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | +| extensions.cs:205:13:205:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | +| extensions.cs:205:18:205:47 | call to extension accessor get_StaticProp1 : B | semmle.label | call to extension accessor get_StaticProp1 : B | +| extensions.cs:205:18:205:47 | call to extension accessor get_StaticProp1 : B | semmle.label | call to extension accessor get_StaticProp1 : B | +| extensions.cs:206:14:206:15 | access to local variable b2 | semmle.label | access to local variable b2 | +| extensions.cs:206:14:206:15 | access to local variable b2 | semmle.label | access to local variable b2 | +| extensions.cs:211:13:211:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:211:13:211:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:211:18:211:30 | call to method Source : B | semmle.label | call to method Source : B | +| extensions.cs:211:18:211:30 | call to method Source : B | semmle.label | call to method Source : B | +| extensions.cs:212:30:212:31 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:212:30:212:31 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:214:13:214:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | +| extensions.cs:214:13:214:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | +| extensions.cs:214:18:214:31 | call to method Source : B | semmle.label | call to method Source : B | +| extensions.cs:214:18:214:31 | call to method Source : B | semmle.label | call to method Source : B | +| extensions.cs:215:38:215:39 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | +| extensions.cs:215:38:215:39 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | +| extensions.cs:220:13:220:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:220:13:220:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:220:18:220:30 | call to method Source : B | semmle.label | call to method Source : B | +| extensions.cs:220:18:220:30 | call to method Source : B | semmle.label | call to method Source : B | +| extensions.cs:221:9:221:10 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:221:9:221:10 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:223:13:223:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | +| extensions.cs:223:13:223:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | +| extensions.cs:223:18:223:31 | call to method Source : B | semmle.label | call to method Source : B | +| extensions.cs:223:18:223:31 | call to method Source : B | semmle.label | call to method Source : B | +| extensions.cs:224:25:224:26 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | +| extensions.cs:224:25:224:26 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | +| extensions.cs:229:13:229:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:229:13:229:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:229:18:229:30 | call to method Source : B | semmle.label | call to method Source : B | +| extensions.cs:229:18:229:30 | call to method Source : B | semmle.label | call to method Source : B | +| extensions.cs:230:9:230:10 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:230:9:230:10 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | | extensions.cs:232:13:232:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | | extensions.cs:232:13:232:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | -| extensions.cs:232:18:232:34 | call to method GenericM2 : B | semmle.label | call to method GenericM2 : B | -| extensions.cs:232:18:232:34 | call to method GenericM2 : B | semmle.label | call to method GenericM2 : B | -| extensions.cs:232:32:232:33 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:232:32:232:33 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:233:14:233:15 | access to local variable b2 | semmle.label | access to local variable b2 | -| extensions.cs:233:14:233:15 | access to local variable b2 | semmle.label | access to local variable b2 | -| extensions.cs:235:13:235:14 | access to local variable b3 : B | semmle.label | access to local variable b3 : B | -| extensions.cs:235:13:235:14 | access to local variable b3 : B | semmle.label | access to local variable b3 : B | -| extensions.cs:235:18:235:48 | call to method GenericM2 : B | semmle.label | call to method GenericM2 : B | -| extensions.cs:235:18:235:48 | call to method GenericM2 : B | semmle.label | call to method GenericM2 : B | -| extensions.cs:235:46:235:47 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:235:46:235:47 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | -| extensions.cs:236:14:236:15 | access to local variable b3 | semmle.label | access to local variable b3 | -| extensions.cs:236:14:236:15 | access to local variable b3 | semmle.label | access to local variable b3 | +| extensions.cs:232:18:232:31 | call to method Source : B | semmle.label | call to method Source : B | +| extensions.cs:232:18:232:31 | call to method Source : B | semmle.label | call to method Source : B | +| extensions.cs:233:32:233:33 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | +| extensions.cs:233:32:233:33 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | +| extensions.cs:239:13:239:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:239:13:239:14 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:239:18:239:30 | call to method Source : B | semmle.label | call to method Source : B | +| extensions.cs:239:18:239:30 | call to method Source : B | semmle.label | call to method Source : B | +| extensions.cs:240:13:240:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | +| extensions.cs:240:13:240:14 | access to local variable b2 : B | semmle.label | access to local variable b2 : B | +| extensions.cs:240:18:240:34 | call to method GenericM2 : B | semmle.label | call to method GenericM2 : B | +| extensions.cs:240:18:240:34 | call to method GenericM2 : B | semmle.label | call to method GenericM2 : B | +| extensions.cs:240:32:240:33 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:240:32:240:33 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:241:14:241:15 | access to local variable b2 | semmle.label | access to local variable b2 | +| extensions.cs:241:14:241:15 | access to local variable b2 | semmle.label | access to local variable b2 | +| extensions.cs:243:13:243:14 | access to local variable b3 : B | semmle.label | access to local variable b3 : B | +| extensions.cs:243:13:243:14 | access to local variable b3 : B | semmle.label | access to local variable b3 : B | +| extensions.cs:243:18:243:48 | call to method GenericM2 : B | semmle.label | call to method GenericM2 : B | +| extensions.cs:243:18:243:48 | call to method GenericM2 : B | semmle.label | call to method GenericM2 : B | +| extensions.cs:243:46:243:47 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:243:46:243:47 | access to local variable b1 : B | semmle.label | access to local variable b1 : B | +| extensions.cs:244:14:244:15 | access to local variable b3 | semmle.label | access to local variable b3 | +| extensions.cs:244:14:244:15 | access to local variable b3 | semmle.label | access to local variable b3 | +| extensions.cs:250:9:250:10 | [post] access to local variable c1 : C [property Prop] : Object | semmle.label | [post] access to local variable c1 : C [property Prop] : Object | +| extensions.cs:250:9:250:10 | [post] access to local variable c1 : C [property Prop] : Object | semmle.label | [post] access to local variable c1 : C [property Prop] : Object | +| extensions.cs:250:19:250:36 | call to method Source : Object | semmle.label | call to method Source : Object | +| extensions.cs:250:19:250:36 | call to method Source : Object | semmle.label | call to method Source : Object | +| extensions.cs:252:9:252:10 | [post] access to local variable c2 : C [property Prop] : Object | semmle.label | [post] access to local variable c2 : C [property Prop] : Object | +| extensions.cs:252:9:252:10 | [post] access to local variable c2 : C [property Prop] : Object | semmle.label | [post] access to local variable c2 : C [property Prop] : Object | +| extensions.cs:252:15:252:16 | access to local variable c1 : C [property Prop] : Object | semmle.label | access to local variable c1 : C [property Prop] : Object | +| extensions.cs:252:15:252:16 | access to local variable c1 : C [property Prop] : Object | semmle.label | access to local variable c1 : C [property Prop] : Object | +| extensions.cs:253:14:253:15 | access to local variable c2 : C [property Prop] : Object | semmle.label | access to local variable c2 : C [property Prop] : Object | +| extensions.cs:253:14:253:15 | access to local variable c2 : C [property Prop] : Object | semmle.label | access to local variable c2 : C [property Prop] : Object | +| extensions.cs:253:14:253:20 | access to property Prop | semmle.label | access to property Prop | +| extensions.cs:253:14:253:20 | access to property Prop | semmle.label | access to property Prop | +| extensions.cs:256:50:256:51 | [post] access to local variable c3 : C [property Prop] : Object | semmle.label | [post] access to local variable c3 : C [property Prop] : Object | +| extensions.cs:256:50:256:51 | [post] access to local variable c3 : C [property Prop] : Object | semmle.label | [post] access to local variable c3 : C [property Prop] : Object | +| extensions.cs:256:54:256:55 | access to local variable c1 : C [property Prop] : Object | semmle.label | access to local variable c1 : C [property Prop] : Object | +| extensions.cs:256:54:256:55 | access to local variable c1 : C [property Prop] : Object | semmle.label | access to local variable c1 : C [property Prop] : Object | +| extensions.cs:257:14:257:15 | access to local variable c3 : C [property Prop] : Object | semmle.label | access to local variable c3 : C [property Prop] : Object | +| extensions.cs:257:14:257:15 | access to local variable c3 : C [property Prop] : Object | semmle.label | access to local variable c3 : C [property Prop] : Object | +| extensions.cs:257:14:257:20 | access to property Prop | semmle.label | access to property Prop | +| extensions.cs:257:14:257:20 | access to property Prop | semmle.label | access to property Prop | subpaths -| extensions.cs:146:18:146:19 | access to local variable b1 : B | extensions.cs:76:17:76:17 | b : B | extensions.cs:80:20:80:20 | access to extension synthetic parameter b : B | extensions.cs:146:18:146:24 | call to method B1 : B | -| extensions.cs:146:18:146:19 | access to local variable b1 : B | extensions.cs:76:17:76:17 | b : B | extensions.cs:80:20:80:20 | access to extension synthetic parameter b : B | extensions.cs:146:18:146:24 | call to method B1 : B | -| extensions.cs:149:34:149:35 | access to local variable b1 : B | extensions.cs:76:17:76:17 | b : B | extensions.cs:80:20:80:20 | access to extension synthetic parameter b : B | extensions.cs:149:18:149:36 | call to method B1 : B | -| extensions.cs:149:34:149:35 | access to local variable b1 : B | extensions.cs:76:17:76:17 | b : B | extensions.cs:80:20:80:20 | access to extension synthetic parameter b : B | extensions.cs:149:18:149:36 | call to method B1 : B | -| extensions.cs:232:32:232:33 | access to local variable b1 : B | extensions.cs:96:33:96:37 | other : B | extensions.cs:98:20:98:24 | access to parameter other : B | extensions.cs:232:18:232:34 | call to method GenericM2 : B | -| extensions.cs:232:32:232:33 | access to local variable b1 : B | extensions.cs:96:33:96:37 | other : B | extensions.cs:98:20:98:24 | access to parameter other : B | extensions.cs:232:18:232:34 | call to method GenericM2 : B | -| extensions.cs:235:46:235:47 | access to local variable b1 : B | extensions.cs:96:33:96:37 | other : B | extensions.cs:98:20:98:24 | access to parameter other : B | extensions.cs:235:18:235:48 | call to method GenericM2 : B | -| extensions.cs:235:46:235:47 | access to local variable b1 : B | extensions.cs:96:33:96:37 | other : B | extensions.cs:98:20:98:24 | access to parameter other : B | extensions.cs:235:18:235:48 | call to method GenericM2 : B | +| extensions.cs:154:18:154:19 | access to local variable b1 : B | extensions.cs:76:17:76:17 | b : B | extensions.cs:80:20:80:20 | access to extension synthetic parameter b : B | extensions.cs:154:18:154:24 | call to method B1 : B | +| extensions.cs:154:18:154:19 | access to local variable b1 : B | extensions.cs:76:17:76:17 | b : B | extensions.cs:80:20:80:20 | access to extension synthetic parameter b : B | extensions.cs:154:18:154:24 | call to method B1 : B | +| extensions.cs:157:34:157:35 | access to local variable b1 : B | extensions.cs:76:17:76:17 | b : B | extensions.cs:80:20:80:20 | access to extension synthetic parameter b : B | extensions.cs:157:18:157:36 | call to method B1 : B | +| extensions.cs:157:34:157:35 | access to local variable b1 : B | extensions.cs:76:17:76:17 | b : B | extensions.cs:80:20:80:20 | access to extension synthetic parameter b : B | extensions.cs:157:18:157:36 | call to method B1 : B | +| extensions.cs:240:32:240:33 | access to local variable b1 : B | extensions.cs:104:33:104:37 | other : B | extensions.cs:106:20:106:24 | access to parameter other : B | extensions.cs:240:18:240:34 | call to method GenericM2 : B | +| extensions.cs:240:32:240:33 | access to local variable b1 : B | extensions.cs:104:33:104:37 | other : B | extensions.cs:106:20:106:24 | access to parameter other : B | extensions.cs:240:18:240:34 | call to method GenericM2 : B | +| extensions.cs:243:46:243:47 | access to local variable b1 : B | extensions.cs:104:33:104:37 | other : B | extensions.cs:106:20:106:24 | access to parameter other : B | extensions.cs:243:18:243:48 | call to method GenericM2 : B | +| extensions.cs:243:46:243:47 | access to local variable b1 : B | extensions.cs:104:33:104:37 | other : B | extensions.cs:106:20:106:24 | access to parameter other : B | extensions.cs:243:18:243:48 | call to method GenericM2 : B | +| extensions.cs:252:15:252:16 | access to local variable c1 : C [property Prop] : Object | extensions.cs:91:35:91:36 | c1 : C [property Prop] : Object | extensions.cs:89:17:89:17 | c [Return] : C [property Prop] : Object | extensions.cs:252:9:252:10 | [post] access to local variable c2 : C [property Prop] : Object | +| extensions.cs:252:15:252:16 | access to local variable c1 : C [property Prop] : Object | extensions.cs:91:35:91:36 | c1 : C [property Prop] : Object | extensions.cs:89:17:89:17 | c [Return] : C [property Prop] : Object | extensions.cs:252:9:252:10 | [post] access to local variable c2 : C [property Prop] : Object | +| extensions.cs:256:54:256:55 | access to local variable c1 : C [property Prop] : Object | extensions.cs:91:35:91:36 | c1 : C [property Prop] : Object | extensions.cs:89:17:89:17 | c [Return] : C [property Prop] : Object | extensions.cs:256:50:256:51 | [post] access to local variable c3 : C [property Prop] : Object | +| extensions.cs:256:54:256:55 | access to local variable c1 : C [property Prop] : Object | extensions.cs:91:35:91:36 | c1 : C [property Prop] : Object | extensions.cs:89:17:89:17 | c [Return] : C [property Prop] : Object | extensions.cs:256:50:256:51 | [post] access to local variable c3 : C [property Prop] : Object | testFailures #select -| extensions.cs:15:24:15:28 | access to parameter value | extensions.cs:118:21:118:32 | call to method Source : B | extensions.cs:15:24:15:28 | access to parameter value | $@ | extensions.cs:118:21:118:32 | call to method Source : B | call to method Source : B | -| extensions.cs:15:24:15:28 | access to parameter value | extensions.cs:118:21:118:32 | call to method Source : B | extensions.cs:15:24:15:28 | access to parameter value | $@ | extensions.cs:118:21:118:32 | call to method Source : B | call to method Source : B | -| extensions.cs:15:24:15:28 | access to parameter value | extensions.cs:120:17:120:30 | call to method Source : B | extensions.cs:15:24:15:28 | access to parameter value | $@ | extensions.cs:120:17:120:30 | call to method Source : B | call to method Source : B | -| extensions.cs:15:24:15:28 | access to parameter value | extensions.cs:120:17:120:30 | call to method Source : B | extensions.cs:15:24:15:28 | access to parameter value | $@ | extensions.cs:120:17:120:30 | call to method Source : B | call to method Source : B | -| extensions.cs:23:24:23:26 | access to extension synthetic parameter obj | extensions.cs:155:18:155:29 | call to method Source : B | extensions.cs:23:24:23:26 | access to extension synthetic parameter obj | $@ | extensions.cs:155:18:155:29 | call to method Source : B | call to method Source : B | -| extensions.cs:23:24:23:26 | access to extension synthetic parameter obj | extensions.cs:155:18:155:29 | call to method Source : B | extensions.cs:23:24:23:26 | access to extension synthetic parameter obj | $@ | extensions.cs:155:18:155:29 | call to method Source : B | call to method Source : B | -| extensions.cs:23:24:23:26 | access to extension synthetic parameter obj | extensions.cs:158:18:158:31 | call to method Source : B | extensions.cs:23:24:23:26 | access to extension synthetic parameter obj | $@ | extensions.cs:158:18:158:31 | call to method Source : B | call to method Source : B | -| extensions.cs:23:24:23:26 | access to extension synthetic parameter obj | extensions.cs:158:18:158:31 | call to method Source : B | extensions.cs:23:24:23:26 | access to extension synthetic parameter obj | $@ | extensions.cs:158:18:158:31 | call to method Source : B | call to method Source : B | -| extensions.cs:28:24:28:26 | access to extension synthetic parameter obj | extensions.cs:164:18:164:29 | call to method Source : B | extensions.cs:28:24:28:26 | access to extension synthetic parameter obj | $@ | extensions.cs:164:18:164:29 | call to method Source : B | call to method Source : B | -| extensions.cs:28:24:28:26 | access to extension synthetic parameter obj | extensions.cs:164:18:164:29 | call to method Source : B | extensions.cs:28:24:28:26 | access to extension synthetic parameter obj | $@ | extensions.cs:164:18:164:29 | call to method Source : B | call to method Source : B | -| extensions.cs:28:24:28:26 | access to extension synthetic parameter obj | extensions.cs:167:18:167:31 | call to method Source : B | extensions.cs:28:24:28:26 | access to extension synthetic parameter obj | $@ | extensions.cs:167:18:167:31 | call to method Source : B | call to method Source : B | -| extensions.cs:28:24:28:26 | access to extension synthetic parameter obj | extensions.cs:167:18:167:31 | call to method Source : B | extensions.cs:28:24:28:26 | access to extension synthetic parameter obj | $@ | extensions.cs:167:18:167:31 | call to method Source : B | call to method Source : B | -| extensions.cs:40:24:40:28 | access to parameter value | extensions.cs:203:18:203:30 | call to method Source : B | extensions.cs:40:24:40:28 | access to parameter value | $@ | extensions.cs:203:18:203:30 | call to method Source : B | call to method Source : B | -| extensions.cs:40:24:40:28 | access to parameter value | extensions.cs:203:18:203:30 | call to method Source : B | extensions.cs:40:24:40:28 | access to parameter value | $@ | extensions.cs:203:18:203:30 | call to method Source : B | call to method Source : B | -| extensions.cs:40:24:40:28 | access to parameter value | extensions.cs:206:18:206:31 | call to method Source : B | extensions.cs:40:24:40:28 | access to parameter value | $@ | extensions.cs:206:18:206:31 | call to method Source : B | call to method Source : B | -| extensions.cs:40:24:40:28 | access to parameter value | extensions.cs:206:18:206:31 | call to method Source : B | extensions.cs:40:24:40:28 | access to parameter value | $@ | extensions.cs:206:18:206:31 | call to method Source : B | call to method Source : B | -| extensions.cs:51:20:51:22 | access to extension synthetic parameter obj | extensions.cs:136:18:136:29 | call to method Source : B | extensions.cs:51:20:51:22 | access to extension synthetic parameter obj | $@ | extensions.cs:136:18:136:29 | call to method Source : B | call to method Source : B | -| extensions.cs:51:20:51:22 | access to extension synthetic parameter obj | extensions.cs:136:18:136:29 | call to method Source : B | extensions.cs:51:20:51:22 | access to extension synthetic parameter obj | $@ | extensions.cs:136:18:136:29 | call to method Source : B | call to method Source : B | -| extensions.cs:51:20:51:22 | access to extension synthetic parameter obj | extensions.cs:139:18:139:31 | call to method Source : B | extensions.cs:51:20:51:22 | access to extension synthetic parameter obj | $@ | extensions.cs:139:18:139:31 | call to method Source : B | call to method Source : B | -| extensions.cs:51:20:51:22 | access to extension synthetic parameter obj | extensions.cs:139:18:139:31 | call to method Source : B | extensions.cs:51:20:51:22 | access to extension synthetic parameter obj | $@ | extensions.cs:139:18:139:31 | call to method Source : B | call to method Source : B | -| extensions.cs:61:20:61:20 | access to parameter a | extensions.cs:173:18:173:29 | call to method Source : B | extensions.cs:61:20:61:20 | access to parameter a | $@ | extensions.cs:173:18:173:29 | call to method Source : B | call to method Source : B | -| extensions.cs:61:20:61:20 | access to parameter a | extensions.cs:173:18:173:29 | call to method Source : B | extensions.cs:61:20:61:20 | access to parameter a | $@ | extensions.cs:173:18:173:29 | call to method Source : B | call to method Source : B | -| extensions.cs:61:20:61:20 | access to parameter a | extensions.cs:177:18:177:31 | call to method Source : B | extensions.cs:61:20:61:20 | access to parameter a | $@ | extensions.cs:177:18:177:31 | call to method Source : B | call to method Source : B | -| extensions.cs:61:20:61:20 | access to parameter a | extensions.cs:177:18:177:31 | call to method Source : B | extensions.cs:61:20:61:20 | access to parameter a | $@ | extensions.cs:177:18:177:31 | call to method Source : B | call to method Source : B | -| extensions.cs:85:20:85:20 | access to extension synthetic parameter b | extensions.cs:212:18:212:30 | call to method Source : B | extensions.cs:85:20:85:20 | access to extension synthetic parameter b | $@ | extensions.cs:212:18:212:30 | call to method Source : B | call to method Source : B | -| extensions.cs:85:20:85:20 | access to extension synthetic parameter b | extensions.cs:212:18:212:30 | call to method Source : B | extensions.cs:85:20:85:20 | access to extension synthetic parameter b | $@ | extensions.cs:212:18:212:30 | call to method Source : B | call to method Source : B | -| extensions.cs:85:20:85:20 | access to extension synthetic parameter b | extensions.cs:215:18:215:31 | call to method Source : B | extensions.cs:85:20:85:20 | access to extension synthetic parameter b | $@ | extensions.cs:215:18:215:31 | call to method Source : B | call to method Source : B | -| extensions.cs:85:20:85:20 | access to extension synthetic parameter b | extensions.cs:215:18:215:31 | call to method Source : B | extensions.cs:85:20:85:20 | access to extension synthetic parameter b | $@ | extensions.cs:215:18:215:31 | call to method Source : B | call to method Source : B | -| extensions.cs:93:20:93:20 | access to extension synthetic parameter t | extensions.cs:221:18:221:30 | call to method Source : B | extensions.cs:93:20:93:20 | access to extension synthetic parameter t | $@ | extensions.cs:221:18:221:30 | call to method Source : B | call to method Source : B | -| extensions.cs:93:20:93:20 | access to extension synthetic parameter t | extensions.cs:221:18:221:30 | call to method Source : B | extensions.cs:93:20:93:20 | access to extension synthetic parameter t | $@ | extensions.cs:221:18:221:30 | call to method Source : B | call to method Source : B | -| extensions.cs:93:20:93:20 | access to extension synthetic parameter t | extensions.cs:224:18:224:31 | call to method Source : B | extensions.cs:93:20:93:20 | access to extension synthetic parameter t | $@ | extensions.cs:224:18:224:31 | call to method Source : B | call to method Source : B | -| extensions.cs:93:20:93:20 | access to extension synthetic parameter t | extensions.cs:224:18:224:31 | call to method Source : B | extensions.cs:93:20:93:20 | access to extension synthetic parameter t | $@ | extensions.cs:224:18:224:31 | call to method Source : B | call to method Source : B | -| extensions.cs:109:14:109:15 | access to local variable b1 | extensions.cs:11:24:11:37 | call to method Source : B | extensions.cs:109:14:109:15 | access to local variable b1 | $@ | extensions.cs:11:24:11:37 | call to method Source : B | call to method Source : B | -| extensions.cs:109:14:109:15 | access to local variable b1 | extensions.cs:11:24:11:37 | call to method Source : B | extensions.cs:109:14:109:15 | access to local variable b1 | $@ | extensions.cs:11:24:11:37 | call to method Source : B | call to method Source : B | -| extensions.cs:112:14:112:15 | access to local variable b2 | extensions.cs:11:24:11:37 | call to method Source : B | extensions.cs:112:14:112:15 | access to local variable b2 | $@ | extensions.cs:11:24:11:37 | call to method Source : B | call to method Source : B | -| extensions.cs:112:14:112:15 | access to local variable b2 | extensions.cs:11:24:11:37 | call to method Source : B | extensions.cs:112:14:112:15 | access to local variable b2 | $@ | extensions.cs:11:24:11:37 | call to method Source : B | call to method Source : B | -| extensions.cs:128:14:128:15 | access to local variable b1 | extensions.cs:46:20:46:33 | call to method Source : B | extensions.cs:128:14:128:15 | access to local variable b1 | $@ | extensions.cs:46:20:46:33 | call to method Source : B | call to method Source : B | -| extensions.cs:128:14:128:15 | access to local variable b1 | extensions.cs:46:20:46:33 | call to method Source : B | extensions.cs:128:14:128:15 | access to local variable b1 | $@ | extensions.cs:46:20:46:33 | call to method Source : B | call to method Source : B | -| extensions.cs:131:14:131:15 | access to local variable b2 | extensions.cs:46:20:46:33 | call to method Source : B | extensions.cs:131:14:131:15 | access to local variable b2 | $@ | extensions.cs:46:20:46:33 | call to method Source : B | call to method Source : B | -| extensions.cs:131:14:131:15 | access to local variable b2 | extensions.cs:46:20:46:33 | call to method Source : B | extensions.cs:131:14:131:15 | access to local variable b2 | $@ | extensions.cs:46:20:46:33 | call to method Source : B | call to method Source : B | -| extensions.cs:147:14:147:15 | access to local variable b2 | extensions.cs:145:18:145:29 | call to method Source : B | extensions.cs:147:14:147:15 | access to local variable b2 | $@ | extensions.cs:145:18:145:29 | call to method Source : B | call to method Source : B | -| extensions.cs:147:14:147:15 | access to local variable b2 | extensions.cs:145:18:145:29 | call to method Source : B | extensions.cs:147:14:147:15 | access to local variable b2 | $@ | extensions.cs:145:18:145:29 | call to method Source : B | call to method Source : B | -| extensions.cs:150:14:150:15 | access to local variable b3 | extensions.cs:145:18:145:29 | call to method Source : B | extensions.cs:150:14:150:15 | access to local variable b3 | $@ | extensions.cs:145:18:145:29 | call to method Source : B | call to method Source : B | -| extensions.cs:150:14:150:15 | access to local variable b3 | extensions.cs:145:18:145:29 | call to method Source : B | extensions.cs:150:14:150:15 | access to local variable b3 | $@ | extensions.cs:145:18:145:29 | call to method Source : B | call to method Source : B | -| extensions.cs:186:14:186:15 | access to local variable b3 | extensions.cs:67:20:67:33 | call to method Source : B | extensions.cs:186:14:186:15 | access to local variable b3 | $@ | extensions.cs:67:20:67:33 | call to method Source : B | call to method Source : B | -| extensions.cs:186:14:186:15 | access to local variable b3 | extensions.cs:67:20:67:33 | call to method Source : B | extensions.cs:186:14:186:15 | access to local variable b3 | $@ | extensions.cs:67:20:67:33 | call to method Source : B | call to method Source : B | -| extensions.cs:189:14:189:15 | access to local variable b4 | extensions.cs:67:20:67:33 | call to method Source : B | extensions.cs:189:14:189:15 | access to local variable b4 | $@ | extensions.cs:67:20:67:33 | call to method Source : B | call to method Source : B | -| extensions.cs:189:14:189:15 | access to local variable b4 | extensions.cs:67:20:67:33 | call to method Source : B | extensions.cs:189:14:189:15 | access to local variable b4 | $@ | extensions.cs:67:20:67:33 | call to method Source : B | call to method Source : B | -| extensions.cs:195:14:195:15 | access to local variable b1 | extensions.cs:36:24:36:38 | call to method Source : B | extensions.cs:195:14:195:15 | access to local variable b1 | $@ | extensions.cs:36:24:36:38 | call to method Source : B | call to method Source : B | -| extensions.cs:195:14:195:15 | access to local variable b1 | extensions.cs:36:24:36:38 | call to method Source : B | extensions.cs:195:14:195:15 | access to local variable b1 | $@ | extensions.cs:36:24:36:38 | call to method Source : B | call to method Source : B | -| extensions.cs:198:14:198:15 | access to local variable b2 | extensions.cs:36:24:36:38 | call to method Source : B | extensions.cs:198:14:198:15 | access to local variable b2 | $@ | extensions.cs:36:24:36:38 | call to method Source : B | call to method Source : B | -| extensions.cs:198:14:198:15 | access to local variable b2 | extensions.cs:36:24:36:38 | call to method Source : B | extensions.cs:198:14:198:15 | access to local variable b2 | $@ | extensions.cs:36:24:36:38 | call to method Source : B | call to method Source : B | -| extensions.cs:233:14:233:15 | access to local variable b2 | extensions.cs:231:18:231:30 | call to method Source : B | extensions.cs:233:14:233:15 | access to local variable b2 | $@ | extensions.cs:231:18:231:30 | call to method Source : B | call to method Source : B | -| extensions.cs:233:14:233:15 | access to local variable b2 | extensions.cs:231:18:231:30 | call to method Source : B | extensions.cs:233:14:233:15 | access to local variable b2 | $@ | extensions.cs:231:18:231:30 | call to method Source : B | call to method Source : B | -| extensions.cs:236:14:236:15 | access to local variable b3 | extensions.cs:231:18:231:30 | call to method Source : B | extensions.cs:236:14:236:15 | access to local variable b3 | $@ | extensions.cs:231:18:231:30 | call to method Source : B | call to method Source : B | -| extensions.cs:236:14:236:15 | access to local variable b3 | extensions.cs:231:18:231:30 | call to method Source : B | extensions.cs:236:14:236:15 | access to local variable b3 | $@ | extensions.cs:231:18:231:30 | call to method Source : B | call to method Source : B | +| extensions.cs:15:24:15:28 | access to parameter value | extensions.cs:126:21:126:32 | call to method Source : B | extensions.cs:15:24:15:28 | access to parameter value | $@ | extensions.cs:126:21:126:32 | call to method Source : B | call to method Source : B | +| extensions.cs:15:24:15:28 | access to parameter value | extensions.cs:126:21:126:32 | call to method Source : B | extensions.cs:15:24:15:28 | access to parameter value | $@ | extensions.cs:126:21:126:32 | call to method Source : B | call to method Source : B | +| extensions.cs:15:24:15:28 | access to parameter value | extensions.cs:128:17:128:30 | call to method Source : B | extensions.cs:15:24:15:28 | access to parameter value | $@ | extensions.cs:128:17:128:30 | call to method Source : B | call to method Source : B | +| extensions.cs:15:24:15:28 | access to parameter value | extensions.cs:128:17:128:30 | call to method Source : B | extensions.cs:15:24:15:28 | access to parameter value | $@ | extensions.cs:128:17:128:30 | call to method Source : B | call to method Source : B | +| extensions.cs:23:24:23:26 | access to extension synthetic parameter obj | extensions.cs:163:18:163:29 | call to method Source : B | extensions.cs:23:24:23:26 | access to extension synthetic parameter obj | $@ | extensions.cs:163:18:163:29 | call to method Source : B | call to method Source : B | +| extensions.cs:23:24:23:26 | access to extension synthetic parameter obj | extensions.cs:163:18:163:29 | call to method Source : B | extensions.cs:23:24:23:26 | access to extension synthetic parameter obj | $@ | extensions.cs:163:18:163:29 | call to method Source : B | call to method Source : B | +| extensions.cs:23:24:23:26 | access to extension synthetic parameter obj | extensions.cs:166:18:166:31 | call to method Source : B | extensions.cs:23:24:23:26 | access to extension synthetic parameter obj | $@ | extensions.cs:166:18:166:31 | call to method Source : B | call to method Source : B | +| extensions.cs:23:24:23:26 | access to extension synthetic parameter obj | extensions.cs:166:18:166:31 | call to method Source : B | extensions.cs:23:24:23:26 | access to extension synthetic parameter obj | $@ | extensions.cs:166:18:166:31 | call to method Source : B | call to method Source : B | +| extensions.cs:28:24:28:26 | access to extension synthetic parameter obj | extensions.cs:172:18:172:29 | call to method Source : B | extensions.cs:28:24:28:26 | access to extension synthetic parameter obj | $@ | extensions.cs:172:18:172:29 | call to method Source : B | call to method Source : B | +| extensions.cs:28:24:28:26 | access to extension synthetic parameter obj | extensions.cs:172:18:172:29 | call to method Source : B | extensions.cs:28:24:28:26 | access to extension synthetic parameter obj | $@ | extensions.cs:172:18:172:29 | call to method Source : B | call to method Source : B | +| extensions.cs:28:24:28:26 | access to extension synthetic parameter obj | extensions.cs:175:18:175:31 | call to method Source : B | extensions.cs:28:24:28:26 | access to extension synthetic parameter obj | $@ | extensions.cs:175:18:175:31 | call to method Source : B | call to method Source : B | +| extensions.cs:28:24:28:26 | access to extension synthetic parameter obj | extensions.cs:175:18:175:31 | call to method Source : B | extensions.cs:28:24:28:26 | access to extension synthetic parameter obj | $@ | extensions.cs:175:18:175:31 | call to method Source : B | call to method Source : B | +| extensions.cs:40:24:40:28 | access to parameter value | extensions.cs:211:18:211:30 | call to method Source : B | extensions.cs:40:24:40:28 | access to parameter value | $@ | extensions.cs:211:18:211:30 | call to method Source : B | call to method Source : B | +| extensions.cs:40:24:40:28 | access to parameter value | extensions.cs:211:18:211:30 | call to method Source : B | extensions.cs:40:24:40:28 | access to parameter value | $@ | extensions.cs:211:18:211:30 | call to method Source : B | call to method Source : B | +| extensions.cs:40:24:40:28 | access to parameter value | extensions.cs:214:18:214:31 | call to method Source : B | extensions.cs:40:24:40:28 | access to parameter value | $@ | extensions.cs:214:18:214:31 | call to method Source : B | call to method Source : B | +| extensions.cs:40:24:40:28 | access to parameter value | extensions.cs:214:18:214:31 | call to method Source : B | extensions.cs:40:24:40:28 | access to parameter value | $@ | extensions.cs:214:18:214:31 | call to method Source : B | call to method Source : B | +| extensions.cs:51:20:51:22 | access to extension synthetic parameter obj | extensions.cs:144:18:144:29 | call to method Source : B | extensions.cs:51:20:51:22 | access to extension synthetic parameter obj | $@ | extensions.cs:144:18:144:29 | call to method Source : B | call to method Source : B | +| extensions.cs:51:20:51:22 | access to extension synthetic parameter obj | extensions.cs:144:18:144:29 | call to method Source : B | extensions.cs:51:20:51:22 | access to extension synthetic parameter obj | $@ | extensions.cs:144:18:144:29 | call to method Source : B | call to method Source : B | +| extensions.cs:51:20:51:22 | access to extension synthetic parameter obj | extensions.cs:147:18:147:31 | call to method Source : B | extensions.cs:51:20:51:22 | access to extension synthetic parameter obj | $@ | extensions.cs:147:18:147:31 | call to method Source : B | call to method Source : B | +| extensions.cs:51:20:51:22 | access to extension synthetic parameter obj | extensions.cs:147:18:147:31 | call to method Source : B | extensions.cs:51:20:51:22 | access to extension synthetic parameter obj | $@ | extensions.cs:147:18:147:31 | call to method Source : B | call to method Source : B | +| extensions.cs:61:20:61:20 | access to parameter a | extensions.cs:181:18:181:29 | call to method Source : B | extensions.cs:61:20:61:20 | access to parameter a | $@ | extensions.cs:181:18:181:29 | call to method Source : B | call to method Source : B | +| extensions.cs:61:20:61:20 | access to parameter a | extensions.cs:181:18:181:29 | call to method Source : B | extensions.cs:61:20:61:20 | access to parameter a | $@ | extensions.cs:181:18:181:29 | call to method Source : B | call to method Source : B | +| extensions.cs:61:20:61:20 | access to parameter a | extensions.cs:185:18:185:31 | call to method Source : B | extensions.cs:61:20:61:20 | access to parameter a | $@ | extensions.cs:185:18:185:31 | call to method Source : B | call to method Source : B | +| extensions.cs:61:20:61:20 | access to parameter a | extensions.cs:185:18:185:31 | call to method Source : B | extensions.cs:61:20:61:20 | access to parameter a | $@ | extensions.cs:185:18:185:31 | call to method Source : B | call to method Source : B | +| extensions.cs:85:20:85:20 | access to extension synthetic parameter b | extensions.cs:220:18:220:30 | call to method Source : B | extensions.cs:85:20:85:20 | access to extension synthetic parameter b | $@ | extensions.cs:220:18:220:30 | call to method Source : B | call to method Source : B | +| extensions.cs:85:20:85:20 | access to extension synthetic parameter b | extensions.cs:220:18:220:30 | call to method Source : B | extensions.cs:85:20:85:20 | access to extension synthetic parameter b | $@ | extensions.cs:220:18:220:30 | call to method Source : B | call to method Source : B | +| extensions.cs:85:20:85:20 | access to extension synthetic parameter b | extensions.cs:223:18:223:31 | call to method Source : B | extensions.cs:85:20:85:20 | access to extension synthetic parameter b | $@ | extensions.cs:223:18:223:31 | call to method Source : B | call to method Source : B | +| extensions.cs:85:20:85:20 | access to extension synthetic parameter b | extensions.cs:223:18:223:31 | call to method Source : B | extensions.cs:85:20:85:20 | access to extension synthetic parameter b | $@ | extensions.cs:223:18:223:31 | call to method Source : B | call to method Source : B | +| extensions.cs:101:20:101:20 | access to extension synthetic parameter t | extensions.cs:229:18:229:30 | call to method Source : B | extensions.cs:101:20:101:20 | access to extension synthetic parameter t | $@ | extensions.cs:229:18:229:30 | call to method Source : B | call to method Source : B | +| extensions.cs:101:20:101:20 | access to extension synthetic parameter t | extensions.cs:229:18:229:30 | call to method Source : B | extensions.cs:101:20:101:20 | access to extension synthetic parameter t | $@ | extensions.cs:229:18:229:30 | call to method Source : B | call to method Source : B | +| extensions.cs:101:20:101:20 | access to extension synthetic parameter t | extensions.cs:232:18:232:31 | call to method Source : B | extensions.cs:101:20:101:20 | access to extension synthetic parameter t | $@ | extensions.cs:232:18:232:31 | call to method Source : B | call to method Source : B | +| extensions.cs:101:20:101:20 | access to extension synthetic parameter t | extensions.cs:232:18:232:31 | call to method Source : B | extensions.cs:101:20:101:20 | access to extension synthetic parameter t | $@ | extensions.cs:232:18:232:31 | call to method Source : B | call to method Source : B | +| extensions.cs:117:14:117:15 | access to local variable b1 | extensions.cs:11:24:11:37 | call to method Source : B | extensions.cs:117:14:117:15 | access to local variable b1 | $@ | extensions.cs:11:24:11:37 | call to method Source : B | call to method Source : B | +| extensions.cs:117:14:117:15 | access to local variable b1 | extensions.cs:11:24:11:37 | call to method Source : B | extensions.cs:117:14:117:15 | access to local variable b1 | $@ | extensions.cs:11:24:11:37 | call to method Source : B | call to method Source : B | +| extensions.cs:120:14:120:15 | access to local variable b2 | extensions.cs:11:24:11:37 | call to method Source : B | extensions.cs:120:14:120:15 | access to local variable b2 | $@ | extensions.cs:11:24:11:37 | call to method Source : B | call to method Source : B | +| extensions.cs:120:14:120:15 | access to local variable b2 | extensions.cs:11:24:11:37 | call to method Source : B | extensions.cs:120:14:120:15 | access to local variable b2 | $@ | extensions.cs:11:24:11:37 | call to method Source : B | call to method Source : B | +| extensions.cs:136:14:136:15 | access to local variable b1 | extensions.cs:46:20:46:33 | call to method Source : B | extensions.cs:136:14:136:15 | access to local variable b1 | $@ | extensions.cs:46:20:46:33 | call to method Source : B | call to method Source : B | +| extensions.cs:136:14:136:15 | access to local variable b1 | extensions.cs:46:20:46:33 | call to method Source : B | extensions.cs:136:14:136:15 | access to local variable b1 | $@ | extensions.cs:46:20:46:33 | call to method Source : B | call to method Source : B | +| extensions.cs:139:14:139:15 | access to local variable b2 | extensions.cs:46:20:46:33 | call to method Source : B | extensions.cs:139:14:139:15 | access to local variable b2 | $@ | extensions.cs:46:20:46:33 | call to method Source : B | call to method Source : B | +| extensions.cs:139:14:139:15 | access to local variable b2 | extensions.cs:46:20:46:33 | call to method Source : B | extensions.cs:139:14:139:15 | access to local variable b2 | $@ | extensions.cs:46:20:46:33 | call to method Source : B | call to method Source : B | +| extensions.cs:155:14:155:15 | access to local variable b2 | extensions.cs:153:18:153:29 | call to method Source : B | extensions.cs:155:14:155:15 | access to local variable b2 | $@ | extensions.cs:153:18:153:29 | call to method Source : B | call to method Source : B | +| extensions.cs:155:14:155:15 | access to local variable b2 | extensions.cs:153:18:153:29 | call to method Source : B | extensions.cs:155:14:155:15 | access to local variable b2 | $@ | extensions.cs:153:18:153:29 | call to method Source : B | call to method Source : B | +| extensions.cs:158:14:158:15 | access to local variable b3 | extensions.cs:153:18:153:29 | call to method Source : B | extensions.cs:158:14:158:15 | access to local variable b3 | $@ | extensions.cs:153:18:153:29 | call to method Source : B | call to method Source : B | +| extensions.cs:158:14:158:15 | access to local variable b3 | extensions.cs:153:18:153:29 | call to method Source : B | extensions.cs:158:14:158:15 | access to local variable b3 | $@ | extensions.cs:153:18:153:29 | call to method Source : B | call to method Source : B | +| extensions.cs:194:14:194:15 | access to local variable b3 | extensions.cs:67:20:67:33 | call to method Source : B | extensions.cs:194:14:194:15 | access to local variable b3 | $@ | extensions.cs:67:20:67:33 | call to method Source : B | call to method Source : B | +| extensions.cs:194:14:194:15 | access to local variable b3 | extensions.cs:67:20:67:33 | call to method Source : B | extensions.cs:194:14:194:15 | access to local variable b3 | $@ | extensions.cs:67:20:67:33 | call to method Source : B | call to method Source : B | +| extensions.cs:197:14:197:15 | access to local variable b4 | extensions.cs:67:20:67:33 | call to method Source : B | extensions.cs:197:14:197:15 | access to local variable b4 | $@ | extensions.cs:67:20:67:33 | call to method Source : B | call to method Source : B | +| extensions.cs:197:14:197:15 | access to local variable b4 | extensions.cs:67:20:67:33 | call to method Source : B | extensions.cs:197:14:197:15 | access to local variable b4 | $@ | extensions.cs:67:20:67:33 | call to method Source : B | call to method Source : B | +| extensions.cs:203:14:203:15 | access to local variable b1 | extensions.cs:36:24:36:38 | call to method Source : B | extensions.cs:203:14:203:15 | access to local variable b1 | $@ | extensions.cs:36:24:36:38 | call to method Source : B | call to method Source : B | +| extensions.cs:203:14:203:15 | access to local variable b1 | extensions.cs:36:24:36:38 | call to method Source : B | extensions.cs:203:14:203:15 | access to local variable b1 | $@ | extensions.cs:36:24:36:38 | call to method Source : B | call to method Source : B | +| extensions.cs:206:14:206:15 | access to local variable b2 | extensions.cs:36:24:36:38 | call to method Source : B | extensions.cs:206:14:206:15 | access to local variable b2 | $@ | extensions.cs:36:24:36:38 | call to method Source : B | call to method Source : B | +| extensions.cs:206:14:206:15 | access to local variable b2 | extensions.cs:36:24:36:38 | call to method Source : B | extensions.cs:206:14:206:15 | access to local variable b2 | $@ | extensions.cs:36:24:36:38 | call to method Source : B | call to method Source : B | +| extensions.cs:241:14:241:15 | access to local variable b2 | extensions.cs:239:18:239:30 | call to method Source : B | extensions.cs:241:14:241:15 | access to local variable b2 | $@ | extensions.cs:239:18:239:30 | call to method Source : B | call to method Source : B | +| extensions.cs:241:14:241:15 | access to local variable b2 | extensions.cs:239:18:239:30 | call to method Source : B | extensions.cs:241:14:241:15 | access to local variable b2 | $@ | extensions.cs:239:18:239:30 | call to method Source : B | call to method Source : B | +| extensions.cs:244:14:244:15 | access to local variable b3 | extensions.cs:239:18:239:30 | call to method Source : B | extensions.cs:244:14:244:15 | access to local variable b3 | $@ | extensions.cs:239:18:239:30 | call to method Source : B | call to method Source : B | +| extensions.cs:244:14:244:15 | access to local variable b3 | extensions.cs:239:18:239:30 | call to method Source : B | extensions.cs:244:14:244:15 | access to local variable b3 | $@ | extensions.cs:239:18:239:30 | call to method Source : B | call to method Source : B | +| extensions.cs:253:14:253:20 | access to property Prop | extensions.cs:250:19:250:36 | call to method Source : Object | extensions.cs:253:14:253:20 | access to property Prop | $@ | extensions.cs:250:19:250:36 | call to method Source : Object | call to method Source : Object | +| extensions.cs:253:14:253:20 | access to property Prop | extensions.cs:250:19:250:36 | call to method Source : Object | extensions.cs:253:14:253:20 | access to property Prop | $@ | extensions.cs:250:19:250:36 | call to method Source : Object | call to method Source : Object | +| extensions.cs:257:14:257:20 | access to property Prop | extensions.cs:250:19:250:36 | call to method Source : Object | extensions.cs:257:14:257:20 | access to property Prop | $@ | extensions.cs:250:19:250:36 | call to method Source : Object | call to method Source : Object | +| extensions.cs:257:14:257:20 | access to property Prop | extensions.cs:250:19:250:36 | call to method Source : Object | extensions.cs:257:14:257:20 | access to property Prop | $@ | extensions.cs:250:19:250:36 | call to method Source : Object | call to method Source : Object | diff --git a/csharp/ql/test/library-tests/dataflow/extensions/extensions.cs b/csharp/ql/test/library-tests/dataflow/extensions/extensions.cs index 0e1c2226683d..cf4f9acb1b5b 100644 --- a/csharp/ql/test/library-tests/dataflow/extensions/extensions.cs +++ b/csharp/ql/test/library-tests/dataflow/extensions/extensions.cs @@ -86,6 +86,14 @@ public void B2() } } + extension(C c) + { + public void operator *=(C c1) + { + c.Prop = c1.Prop; + } + } + extension(T t) where T : class { public void GenericM1() @@ -236,8 +244,26 @@ public void Test14() Sink(b3); // $ hasValueFlow=14 } + public void Test15() + { + var c1 = new C(); + c1.Prop = Source(15); + var c2 = new C(); + c2 *= c1; + Sink(c2.Prop); // $ hasValueFlow=15 + + var c3 = new C(); + MyExtensions.op_MultiplicationAssignment(c3, c1); + Sink(c3.Prop); // $ hasValueFlow=15 + } + public static T Source(object source) => throw null; public static void Sink(object o) { } } public class B { } + +public class C +{ + public object Prop { get; set; } +} diff --git a/csharp/ql/test/library-tests/dataflow/flowsources/aspremote/AspRemoteFlowSource.cs b/csharp/ql/test/library-tests/dataflow/flowsources/aspremote/AspRemoteFlowSource.cs index 176f95e4a89d..e554f25f2064 100644 --- a/csharp/ql/test/library-tests/dataflow/flowsources/aspremote/AspRemoteFlowSource.cs +++ b/csharp/ql/test/library-tests/dataflow/flowsources/aspremote/AspRemoteFlowSource.cs @@ -8,7 +8,7 @@ namespace Testing public class ViewModel { public string RequestId { get; set; } // Considered tainted. - public object RequestIdField; // Not considered tainted as it is a field. + public object RequestIdField; // Considered tainted. public string RequestIdOnlyGet { get; } // Not considered tainted as there is no setter. public string RequestIdPrivateSet { get; private set; } // Not considered tainted as it has a private setter. public static object RequestIdStatic { get; set; } // Not considered tainted as it is static. diff --git a/csharp/ql/test/library-tests/dataflow/flowsources/aspremote/aspRemoteFlowSource.expected b/csharp/ql/test/library-tests/dataflow/flowsources/aspremote/aspRemoteFlowSource.expected index a7442a80839c..d729eb939d28 100644 --- a/csharp/ql/test/library-tests/dataflow/flowsources/aspremote/aspRemoteFlowSource.expected +++ b/csharp/ql/test/library-tests/dataflow/flowsources/aspremote/aspRemoteFlowSource.expected @@ -1,5 +1,6 @@ remoteFlowSourceMembers | AspRemoteFlowSource.cs:10:23:10:31 | RequestId | +| AspRemoteFlowSource.cs:11:23:11:36 | RequestIdField | | AspRemoteFlowSource.cs:28:23:28:29 | Tainted | remoteFlowSources | AspRemoteFlowSource.cs:20:42:20:50 | viewModel | diff --git a/csharp/ql/test/library-tests/dataflow/flowsources/remote/RemoteFlowSource.cs b/csharp/ql/test/library-tests/dataflow/flowsources/remote/RemoteFlowSource.cs index 5889183f5257..d54a359aca0c 100644 --- a/csharp/ql/test/library-tests/dataflow/flowsources/remote/RemoteFlowSource.cs +++ b/csharp/ql/test/library-tests/dataflow/flowsources/remote/RemoteFlowSource.cs @@ -54,3 +54,59 @@ public static async void M3(System.Net.WebSockets.WebSocket webSocket) } } } + +namespace AspRemoteFlowSource +{ + using System.Web.Services; + using System.Collections.Generic; + + public class MySubData + { + public string SubDataProp { get; set; } + } + + public class ArrayElementData + { + public string ArrayElementDataProp { get; set; } + } + + public class ListElementData + { + public string ListElementDataProp { get; set; } + } + + public class MyData + { + public string DataField; + public string DataProp { get; set; } + public MySubData SubData { get; set; } + public ArrayElementData[] Elements { get; set; } + public List List; + } + + public class MyDataElement + { + public string Prop { get; set; } + } + + + public class MyService + { + [WebMethod] + public void MyMethod(MyData data) + { + Use(data.DataProp); + Use(data.SubData.SubDataProp); + Use(data.Elements[0].ArrayElementDataProp); + Use(data.List[0].ListElementDataProp); + } + + [WebMethod] + public void MyMethod2(MyDataElement[] data) + { + Use(data[0].Prop); + } + + public static void Use(object o) { } + } +} diff --git a/csharp/ql/test/library-tests/dataflow/flowsources/remote/remoteFlowSource.expected b/csharp/ql/test/library-tests/dataflow/flowsources/remote/remoteFlowSource.expected index f5f541d73d53..242080e6bda2 100644 --- a/csharp/ql/test/library-tests/dataflow/flowsources/remote/remoteFlowSource.expected +++ b/csharp/ql/test/library-tests/dataflow/flowsources/remote/remoteFlowSource.expected @@ -1,3 +1,15 @@ +remoteFlowSourceMembers +| Controller.cs:6:19:6:25 | Tainted | +| RemoteFlowSource.cs:65:23:65:33 | SubDataProp | +| RemoteFlowSource.cs:70:23:70:42 | ArrayElementDataProp | +| RemoteFlowSource.cs:75:23:75:41 | ListElementDataProp | +| RemoteFlowSource.cs:80:23:80:31 | DataField | +| RemoteFlowSource.cs:81:23:81:30 | DataProp | +| RemoteFlowSource.cs:82:26:82:32 | SubData | +| RemoteFlowSource.cs:83:35:83:42 | Elements | +| RemoteFlowSource.cs:84:38:84:41 | List | +| RemoteFlowSource.cs:89:23:89:26 | Prop | +remoteFlowSources | Controller.cs:11:43:11:52 | sampleData | ASP.NET MVC action method parameter | | Controller.cs:11:62:11:66 | taint | ASP.NET MVC action method parameter | | Controller.cs:16:43:16:52 | sampleData | ASP.NET MVC action method parameter | @@ -10,3 +22,5 @@ | RemoteFlowSource.cs:45:17:45:23 | access to parameter request | ASP.NET query string | | RemoteFlowSource.cs:45:17:45:42 | access to property RawUrl | ASP.NET unvalidated request data | | RemoteFlowSource.cs:52:55:52:61 | [post] access to local variable segment | external | +| RemoteFlowSource.cs:96:37:96:40 | data | ASP.NET web service input | +| RemoteFlowSource.cs:105:47:105:50 | data | ASP.NET web service input | diff --git a/csharp/ql/test/library-tests/dataflow/flowsources/remote/remoteFlowSource.ql b/csharp/ql/test/library-tests/dataflow/flowsources/remote/remoteFlowSource.ql index fdea5323d5cb..f6d87eb9ff4f 100644 --- a/csharp/ql/test/library-tests/dataflow/flowsources/remote/remoteFlowSource.ql +++ b/csharp/ql/test/library-tests/dataflow/flowsources/remote/remoteFlowSource.ql @@ -1,5 +1,7 @@ import semmle.code.csharp.security.dataflow.flowsources.Remote -from RemoteFlowSource source -where source.getLocation().getFile().fromSource() -select source, source.getSourceType() +query predicate remoteFlowSourceMembers(TaintTracking::TaintedMember m) { m.fromSource() } + +query predicate remoteFlowSources(RemoteFlowSource source, string type) { + source.getLocation().getFile().fromSource() and type = source.getSourceType() +} diff --git a/csharp/ql/test/library-tests/dataflow/local/DataFlow.expected b/csharp/ql/test/library-tests/dataflow/local/DataFlow.expected index ed80fa1e8b3b..ef002f0396f2 100644 --- a/csharp/ql/test/library-tests/dataflow/local/DataFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/local/DataFlow.expected @@ -5,6 +5,7 @@ | LocalDataFlow.cs:315:15:315:20 | access to local variable sink73 | | LocalDataFlow.cs:316:15:316:20 | access to local variable sink74 | | LocalDataFlow.cs:342:15:342:21 | access to parameter tainted | +| LocalDataFlow.cs:387:15:387:15 | access to parameter s | | SSA.cs:9:15:9:22 | access to local variable ssaSink0 | | SSA.cs:25:15:25:22 | access to local variable ssaSink1 | | SSA.cs:43:15:43:22 | access to local variable ssaSink2 | diff --git a/csharp/ql/test/library-tests/dataflow/local/DataFlowStep.expected b/csharp/ql/test/library-tests/dataflow/local/DataFlowStep.expected index 29533a67083f..2a88f163a3aa 100644 --- a/csharp/ql/test/library-tests/dataflow/local/DataFlowStep.expected +++ b/csharp/ql/test/library-tests/dataflow/local/DataFlowStep.expected @@ -519,14 +519,19 @@ | LocalDataFlow.cs:367:32:367:33 | SSA param(b2) | LocalDataFlow.cs:374:17:374:18 | access to parameter b2 | | LocalDataFlow.cs:367:32:367:33 | b2 | LocalDataFlow.cs:367:32:367:33 | SSA param(b2) | | LocalDataFlow.cs:369:17:369:18 | "" | LocalDataFlow.cs:369:13:369:13 | access to local variable x | +| LocalDataFlow.cs:372:9:379:9 | [input] SSA phi(x) | LocalDataFlow.cs:382:15:382:15 | access to local variable x | | LocalDataFlow.cs:373:13:373:13 | access to local variable x | LocalDataFlow.cs:373:13:373:25 | SSA def(x) | -| LocalDataFlow.cs:373:13:373:25 | SSA def(x) | LocalDataFlow.cs:374:17:374:18 | [input] SSA phi(x) | +| LocalDataFlow.cs:373:13:373:25 | SSA def(x) | LocalDataFlow.cs:372:9:379:9 | [input] SSA phi(x) | | LocalDataFlow.cs:373:13:373:25 | SSA def(x) | LocalDataFlow.cs:376:35:376:35 | access to local variable x | | LocalDataFlow.cs:373:17:373:25 | "tainted" | LocalDataFlow.cs:373:13:373:13 | access to local variable x | -| LocalDataFlow.cs:374:17:374:18 | [input] SSA phi(x) | LocalDataFlow.cs:382:15:382:15 | access to local variable x | | LocalDataFlow.cs:381:13:381:13 | access to local variable x | LocalDataFlow.cs:381:13:381:29 | SSA def(x) | | LocalDataFlow.cs:381:13:381:29 | SSA def(x) | LocalDataFlow.cs:382:15:382:15 | access to local variable x | | LocalDataFlow.cs:381:17:381:29 | "not tainted" | LocalDataFlow.cs:381:13:381:13 | access to local variable x | +| LocalDataFlow.cs:385:34:385:34 | SSA param(s) | LocalDataFlow.cs:387:15:387:15 | access to parameter s | +| LocalDataFlow.cs:385:34:385:34 | s | LocalDataFlow.cs:385:34:385:34 | SSA param(s) | +| LocalDataFlow.cs:385:38:385:51 | "taint source" | LocalDataFlow.cs:385:38:385:51 | s = ... | +| LocalDataFlow.cs:385:38:385:51 | SSA def(s) | LocalDataFlow.cs:387:15:387:15 | access to parameter s | +| LocalDataFlow.cs:385:38:385:51 | s = ... | LocalDataFlow.cs:385:38:385:51 | SSA def(s) | | SSA.cs:3:14:3:16 | this | SSA.cs:3:14:3:16 | this access | | SSA.cs:5:17:5:17 | SSA entry def(this.S) | SSA.cs:67:9:67:14 | access to field S | | SSA.cs:5:17:5:17 | this | SSA.cs:67:9:67:12 | this access | @@ -557,56 +562,49 @@ | SSA.cs:22:16:22:23 | access to local variable ssaSink1 | SSA.cs:22:16:22:28 | SSA def(ssaSink1) | | SSA.cs:22:16:22:28 | SSA def(ssaSink1) | SSA.cs:25:15:25:22 | access to local variable ssaSink1 | | SSA.cs:22:27:22:28 | "" | SSA.cs:22:16:22:23 | access to local variable ssaSink1 | +| SSA.cs:23:9:24:32 | SSA phi read(ssaSink0) | SSA.cs:35:13:35:33 | [input] SSA phi read(ssaSink0) | +| SSA.cs:23:9:24:32 | SSA phi read(ssaSink0) | SSA.cs:37:24:37:31 | access to local variable ssaSink0 | | SSA.cs:23:13:23:22 | [post] access to parameter nonTainted | SSA.cs:29:13:29:22 | access to parameter nonTainted | | SSA.cs:23:13:23:22 | access to parameter nonTainted | SSA.cs:29:13:29:22 | access to parameter nonTainted | -| SSA.cs:23:13:23:33 | [input] SSA phi read(ssaSink0) | SSA.cs:25:9:25:24 | SSA phi read(ssaSink0) | +| SSA.cs:23:13:23:33 | [input] SSA phi read(ssaSink0) | SSA.cs:23:9:24:32 | SSA phi read(ssaSink0) | | SSA.cs:24:13:24:20 | access to local variable ssaSink1 | SSA.cs:24:13:24:31 | SSA def(ssaSink1) | | SSA.cs:24:13:24:31 | SSA def(ssaSink1) | SSA.cs:25:15:25:22 | access to local variable ssaSink1 | +| SSA.cs:24:24:24:31 | access to local variable ssaSink0 | SSA.cs:23:9:24:32 | SSA phi read(ssaSink0) | | SSA.cs:24:24:24:31 | access to local variable ssaSink0 | SSA.cs:24:13:24:20 | access to local variable ssaSink1 | -| SSA.cs:24:24:24:31 | access to local variable ssaSink0 | SSA.cs:25:9:25:24 | SSA phi read(ssaSink0) | -| SSA.cs:25:9:25:24 | SSA phi read(ssaSink0) | SSA.cs:35:13:35:33 | [input] SSA phi read(ssaSink0) | -| SSA.cs:25:9:25:24 | SSA phi read(ssaSink0) | SSA.cs:37:24:37:31 | access to local variable ssaSink0 | | SSA.cs:28:16:28:23 | access to local variable nonSink1 | SSA.cs:28:16:28:28 | SSA def(nonSink1) | | SSA.cs:28:16:28:28 | SSA def(nonSink1) | SSA.cs:31:15:31:22 | access to local variable nonSink1 | | SSA.cs:28:27:28:28 | "" | SSA.cs:28:16:28:23 | access to local variable nonSink1 | +| SSA.cs:29:9:30:32 | SSA phi read(nonSink0) | SSA.cs:47:13:47:33 | [input] SSA phi read(nonSink0) | +| SSA.cs:29:9:30:32 | SSA phi read(nonSink0) | SSA.cs:49:24:49:31 | access to local variable nonSink0 | | SSA.cs:29:13:29:22 | [post] access to parameter nonTainted | SSA.cs:35:13:35:22 | access to parameter nonTainted | | SSA.cs:29:13:29:22 | access to parameter nonTainted | SSA.cs:35:13:35:22 | access to parameter nonTainted | -| SSA.cs:29:13:29:33 | [input] SSA phi read(nonSink0) | SSA.cs:31:9:31:24 | SSA phi read(nonSink0) | +| SSA.cs:29:13:29:33 | [input] SSA phi read(nonSink0) | SSA.cs:29:9:30:32 | SSA phi read(nonSink0) | | SSA.cs:30:13:30:20 | access to local variable nonSink1 | SSA.cs:30:13:30:31 | SSA def(nonSink1) | | SSA.cs:30:13:30:31 | SSA def(nonSink1) | SSA.cs:31:15:31:22 | access to local variable nonSink1 | +| SSA.cs:30:24:30:31 | access to local variable nonSink0 | SSA.cs:29:9:30:32 | SSA phi read(nonSink0) | | SSA.cs:30:24:30:31 | access to local variable nonSink0 | SSA.cs:30:13:30:20 | access to local variable nonSink1 | -| SSA.cs:30:24:30:31 | access to local variable nonSink0 | SSA.cs:31:9:31:24 | SSA phi read(nonSink0) | -| SSA.cs:31:9:31:24 | SSA phi read(nonSink0) | SSA.cs:47:13:47:33 | [input] SSA phi read(nonSink0) | -| SSA.cs:31:9:31:24 | SSA phi read(nonSink0) | SSA.cs:49:24:49:31 | access to local variable nonSink0 | | SSA.cs:34:16:34:23 | access to local variable ssaSink2 | SSA.cs:34:16:34:28 | SSA def(ssaSink2) | | SSA.cs:34:16:34:28 | SSA def(ssaSink2) | SSA.cs:43:15:43:22 | access to local variable ssaSink2 | | SSA.cs:34:27:34:28 | "" | SSA.cs:34:16:34:23 | access to local variable ssaSink2 | +| SSA.cs:35:9:42:9 | SSA phi read(ssaSink0) | SSA.cs:89:13:89:33 | [input] SSA phi read(ssaSink0) | +| SSA.cs:35:9:42:9 | SSA phi read(ssaSink0) | SSA.cs:91:24:91:31 | access to local variable ssaSink0 | | SSA.cs:35:13:35:22 | [post] access to parameter nonTainted | SSA.cs:35:13:35:33 | [input] SSA phi read(nonTainted) | | SSA.cs:35:13:35:22 | [post] access to parameter nonTainted | SSA.cs:38:17:38:26 | access to parameter nonTainted | | SSA.cs:35:13:35:22 | access to parameter nonTainted | SSA.cs:35:13:35:33 | [input] SSA phi read(nonTainted) | | SSA.cs:35:13:35:22 | access to parameter nonTainted | SSA.cs:38:17:38:26 | access to parameter nonTainted | | SSA.cs:35:13:35:33 | [input] SSA phi read(nonTainted) | SSA.cs:47:13:47:22 | access to parameter nonTainted | -| SSA.cs:35:13:35:33 | [input] SSA phi read(ssaSink0) | SSA.cs:43:9:43:24 | SSA phi read(ssaSink0) | +| SSA.cs:35:13:35:33 | [input] SSA phi read(ssaSink0) | SSA.cs:35:9:42:9 | SSA phi read(ssaSink0) | | SSA.cs:37:13:37:20 | access to local variable ssaSink2 | SSA.cs:37:13:37:31 | SSA def(ssaSink2) | | SSA.cs:37:13:37:31 | SSA def(ssaSink2) | SSA.cs:39:21:39:28 | access to local variable ssaSink2 | | SSA.cs:37:13:37:31 | SSA def(ssaSink2) | SSA.cs:41:21:41:28 | access to local variable ssaSink2 | +| SSA.cs:37:24:37:31 | access to local variable ssaSink0 | SSA.cs:35:9:42:9 | SSA phi read(ssaSink0) | | SSA.cs:37:24:37:31 | access to local variable ssaSink0 | SSA.cs:37:13:37:20 | access to local variable ssaSink2 | -| SSA.cs:37:24:37:31 | access to local variable ssaSink0 | SSA.cs:39:17:39:29 | [input] SSA phi read(ssaSink0) | -| SSA.cs:37:24:37:31 | access to local variable ssaSink0 | SSA.cs:41:17:41:29 | [input] SSA phi read(ssaSink0) | -| SSA.cs:38:17:38:26 | [post] access to parameter nonTainted | SSA.cs:39:17:39:29 | [input] SSA phi read(nonTainted) | -| SSA.cs:38:17:38:26 | [post] access to parameter nonTainted | SSA.cs:41:17:41:29 | [input] SSA phi read(nonTainted) | -| SSA.cs:38:17:38:26 | access to parameter nonTainted | SSA.cs:39:17:39:29 | [input] SSA phi read(nonTainted) | -| SSA.cs:38:17:38:26 | access to parameter nonTainted | SSA.cs:41:17:41:29 | [input] SSA phi read(nonTainted) | -| SSA.cs:39:17:39:29 | [input] SSA phi read(nonTainted) | SSA.cs:47:13:47:22 | access to parameter nonTainted | -| SSA.cs:39:17:39:29 | [input] SSA phi read(ssaSink0) | SSA.cs:43:9:43:24 | SSA phi read(ssaSink0) | +| SSA.cs:38:17:38:26 | [post] access to parameter nonTainted | SSA.cs:47:13:47:22 | access to parameter nonTainted | +| SSA.cs:38:17:38:26 | access to parameter nonTainted | SSA.cs:47:13:47:22 | access to parameter nonTainted | | SSA.cs:39:21:39:28 | [post] access to local variable ssaSink2 | SSA.cs:43:15:43:22 | access to local variable ssaSink2 | | SSA.cs:39:21:39:28 | access to local variable ssaSink2 | SSA.cs:43:15:43:22 | access to local variable ssaSink2 | -| SSA.cs:41:17:41:29 | [input] SSA phi read(nonTainted) | SSA.cs:47:13:47:22 | access to parameter nonTainted | -| SSA.cs:41:17:41:29 | [input] SSA phi read(ssaSink0) | SSA.cs:43:9:43:24 | SSA phi read(ssaSink0) | | SSA.cs:41:21:41:28 | [post] access to local variable ssaSink2 | SSA.cs:43:15:43:22 | access to local variable ssaSink2 | | SSA.cs:41:21:41:28 | access to local variable ssaSink2 | SSA.cs:43:15:43:22 | access to local variable ssaSink2 | -| SSA.cs:43:9:43:24 | SSA phi read(ssaSink0) | SSA.cs:89:13:89:33 | [input] SSA phi read(ssaSink0) | -| SSA.cs:43:9:43:24 | SSA phi read(ssaSink0) | SSA.cs:91:24:91:31 | access to local variable ssaSink0 | | SSA.cs:46:16:46:23 | access to local variable nonSink2 | SSA.cs:46:16:46:28 | SSA def(nonSink2) | | SSA.cs:46:16:46:28 | SSA def(nonSink2) | SSA.cs:55:15:55:22 | access to local variable nonSink2 | | SSA.cs:46:27:46:28 | "" | SSA.cs:46:16:46:23 | access to local variable nonSink2 | @@ -620,47 +618,40 @@ | SSA.cs:49:13:49:31 | SSA def(nonSink2) | SSA.cs:51:21:51:28 | access to local variable nonSink2 | | SSA.cs:49:13:49:31 | SSA def(nonSink2) | SSA.cs:53:21:53:28 | access to local variable nonSink2 | | SSA.cs:49:24:49:31 | access to local variable nonSink0 | SSA.cs:49:13:49:20 | access to local variable nonSink2 | -| SSA.cs:49:24:49:31 | access to local variable nonSink0 | SSA.cs:51:17:51:29 | [input] SSA phi read(nonSink0) | -| SSA.cs:49:24:49:31 | access to local variable nonSink0 | SSA.cs:53:17:53:29 | [input] SSA phi read(nonSink0) | -| SSA.cs:50:17:50:26 | [post] access to parameter nonTainted | SSA.cs:51:17:51:29 | [input] SSA phi read(nonTainted) | -| SSA.cs:50:17:50:26 | [post] access to parameter nonTainted | SSA.cs:53:17:53:29 | [input] SSA phi read(nonTainted) | -| SSA.cs:50:17:50:26 | access to parameter nonTainted | SSA.cs:51:17:51:29 | [input] SSA phi read(nonTainted) | -| SSA.cs:50:17:50:26 | access to parameter nonTainted | SSA.cs:53:17:53:29 | [input] SSA phi read(nonTainted) | -| SSA.cs:51:17:51:29 | [input] SSA phi read(nonSink0) | SSA.cs:63:23:63:30 | access to local variable nonSink0 | -| SSA.cs:51:17:51:29 | [input] SSA phi read(nonTainted) | SSA.cs:89:13:89:22 | access to parameter nonTainted | +| SSA.cs:49:24:49:31 | access to local variable nonSink0 | SSA.cs:63:23:63:30 | access to local variable nonSink0 | +| SSA.cs:50:17:50:26 | [post] access to parameter nonTainted | SSA.cs:89:13:89:22 | access to parameter nonTainted | +| SSA.cs:50:17:50:26 | access to parameter nonTainted | SSA.cs:89:13:89:22 | access to parameter nonTainted | | SSA.cs:51:21:51:28 | [post] access to local variable nonSink2 | SSA.cs:55:15:55:22 | access to local variable nonSink2 | | SSA.cs:51:21:51:28 | access to local variable nonSink2 | SSA.cs:55:15:55:22 | access to local variable nonSink2 | -| SSA.cs:53:17:53:29 | [input] SSA phi read(nonSink0) | SSA.cs:63:23:63:30 | access to local variable nonSink0 | -| SSA.cs:53:17:53:29 | [input] SSA phi read(nonTainted) | SSA.cs:89:13:89:22 | access to parameter nonTainted | | SSA.cs:53:21:53:28 | [post] access to local variable nonSink2 | SSA.cs:55:15:55:22 | access to local variable nonSink2 | | SSA.cs:53:21:53:28 | access to local variable nonSink2 | SSA.cs:55:15:55:22 | access to local variable nonSink2 | | SSA.cs:58:16:58:23 | access to local variable ssaSink3 | SSA.cs:58:16:58:33 | SSA def(ssaSink3) | | SSA.cs:58:16:58:33 | SSA def(ssaSink3) | SSA.cs:59:23:59:30 | access to local variable ssaSink3 | | SSA.cs:58:27:58:33 | access to parameter tainted | SSA.cs:58:16:58:23 | access to local variable ssaSink3 | | SSA.cs:58:27:58:33 | access to parameter tainted | SSA.cs:67:32:67:38 | access to parameter tainted | -| SSA.cs:59:23:59:30 | SSA def(ssaSink3) | SSA.cs:60:15:60:22 | access to local variable ssaSink3 | -| SSA.cs:59:23:59:30 | [post] access to local variable ssaSink3 | SSA.cs:59:23:59:30 | SSA def(ssaSink3) | -| SSA.cs:59:23:59:30 | access to local variable ssaSink3 | SSA.cs:59:23:59:30 | SSA def(ssaSink3) | -| SSA.cs:59:23:59:30 | access to local variable ssaSink3 | SSA.cs:59:23:59:30 | SSA def(ssaSink3) | -| SSA.cs:63:23:63:30 | SSA def(nonSink0) | SSA.cs:64:15:64:22 | access to local variable nonSink0 | -| SSA.cs:63:23:63:30 | [post] access to local variable nonSink0 | SSA.cs:63:23:63:30 | SSA def(nonSink0) | -| SSA.cs:63:23:63:30 | access to local variable nonSink0 | SSA.cs:63:23:63:30 | SSA def(nonSink0) | -| SSA.cs:63:23:63:30 | access to local variable nonSink0 | SSA.cs:63:23:63:30 | SSA def(nonSink0) | +| SSA.cs:59:9:59:31 | SSA def(ssaSink3) | SSA.cs:60:15:60:22 | access to local variable ssaSink3 | +| SSA.cs:59:23:59:30 | [post] access to local variable ssaSink3 | SSA.cs:59:9:59:31 | SSA def(ssaSink3) | +| SSA.cs:59:23:59:30 | access to local variable ssaSink3 | SSA.cs:59:9:59:31 | SSA def(ssaSink3) | +| SSA.cs:59:23:59:30 | access to local variable ssaSink3 | SSA.cs:59:9:59:31 | SSA def(ssaSink3) | +| SSA.cs:63:9:63:31 | SSA def(nonSink0) | SSA.cs:64:15:64:22 | access to local variable nonSink0 | +| SSA.cs:63:23:63:30 | [post] access to local variable nonSink0 | SSA.cs:63:9:63:31 | SSA def(nonSink0) | +| SSA.cs:63:23:63:30 | access to local variable nonSink0 | SSA.cs:63:9:63:31 | SSA def(nonSink0) | +| SSA.cs:63:23:63:30 | access to local variable nonSink0 | SSA.cs:63:9:63:31 | SSA def(nonSink0) | | SSA.cs:67:9:67:12 | [post] this access | SSA.cs:68:23:68:26 | this access | | SSA.cs:67:9:67:12 | this access | SSA.cs:68:23:68:26 | this access | | SSA.cs:67:9:67:14 | [post] access to field S | SSA.cs:68:23:68:28 | access to field S | | SSA.cs:67:9:67:14 | access to field S | SSA.cs:68:23:68:28 | access to field S | | SSA.cs:67:9:67:28 | access to field SsaFieldSink0 | SSA.cs:67:9:67:38 | SSA def(this.S.SsaFieldSink0) | -| SSA.cs:67:9:67:38 | SSA def(this.S.SsaFieldSink0) | SSA.cs:68:23:68:28 | SSA qualifier def(this.S.SsaFieldSink0) | +| SSA.cs:67:9:67:38 | SSA def(this.S.SsaFieldSink0) | SSA.cs:68:9:68:29 | SSA qualifier def(this.S.SsaFieldSink0) | | SSA.cs:67:32:67:38 | access to parameter tainted | SSA.cs:67:9:67:28 | access to field SsaFieldSink0 | | SSA.cs:67:32:67:38 | access to parameter tainted | SSA.cs:77:20:77:26 | access to parameter tainted | +| SSA.cs:68:9:68:29 | SSA def(this.S) | SSA.cs:69:15:69:20 | access to field S | +| SSA.cs:68:9:68:29 | SSA qualifier def(this.S.SsaFieldSink0) | SSA.cs:69:15:69:34 | access to field SsaFieldSink0 | | SSA.cs:68:23:68:26 | [post] this access | SSA.cs:69:15:69:18 | this access | | SSA.cs:68:23:68:26 | this access | SSA.cs:69:15:69:18 | this access | -| SSA.cs:68:23:68:28 | SSA def(this.S) | SSA.cs:69:15:69:20 | access to field S | -| SSA.cs:68:23:68:28 | SSA qualifier def(this.S.SsaFieldSink0) | SSA.cs:69:15:69:34 | access to field SsaFieldSink0 | -| SSA.cs:68:23:68:28 | [post] access to field S | SSA.cs:68:23:68:28 | SSA def(this.S) | -| SSA.cs:68:23:68:28 | access to field S | SSA.cs:68:23:68:28 | SSA def(this.S) | -| SSA.cs:68:23:68:28 | access to field S | SSA.cs:68:23:68:28 | SSA def(this.S) | +| SSA.cs:68:23:68:28 | [post] access to field S | SSA.cs:68:9:68:29 | SSA def(this.S) | +| SSA.cs:68:23:68:28 | access to field S | SSA.cs:68:9:68:29 | SSA def(this.S) | +| SSA.cs:68:23:68:28 | access to field S | SSA.cs:68:9:68:29 | SSA def(this.S) | | SSA.cs:69:15:69:18 | [post] this access | SSA.cs:72:9:72:12 | this access | | SSA.cs:69:15:69:18 | this access | SSA.cs:72:9:72:12 | this access | | SSA.cs:69:15:69:20 | [post] access to field S | SSA.cs:72:9:72:14 | access to field S | @@ -670,15 +661,15 @@ | SSA.cs:72:9:72:14 | [post] access to field S | SSA.cs:73:23:73:28 | access to field S | | SSA.cs:72:9:72:14 | access to field S | SSA.cs:73:23:73:28 | access to field S | | SSA.cs:72:9:72:31 | access to field SsaFieldNonSink0 | SSA.cs:72:9:72:36 | SSA def(this.S.SsaFieldNonSink0) | -| SSA.cs:72:9:72:36 | SSA def(this.S.SsaFieldNonSink0) | SSA.cs:73:23:73:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | +| SSA.cs:72:9:72:36 | SSA def(this.S.SsaFieldNonSink0) | SSA.cs:73:9:73:29 | SSA qualifier def(this.S.SsaFieldNonSink0) | | SSA.cs:72:35:72:36 | "" | SSA.cs:72:9:72:31 | access to field SsaFieldNonSink0 | +| SSA.cs:73:9:73:29 | SSA def(this.S) | SSA.cs:74:15:74:20 | access to field S | +| SSA.cs:73:9:73:29 | SSA qualifier def(this.S.SsaFieldNonSink0) | SSA.cs:74:15:74:37 | access to field SsaFieldNonSink0 | | SSA.cs:73:23:73:26 | [post] this access | SSA.cs:74:15:74:18 | this access | | SSA.cs:73:23:73:26 | this access | SSA.cs:74:15:74:18 | this access | -| SSA.cs:73:23:73:28 | SSA def(this.S) | SSA.cs:74:15:74:20 | access to field S | -| SSA.cs:73:23:73:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | SSA.cs:74:15:74:37 | access to field SsaFieldNonSink0 | -| SSA.cs:73:23:73:28 | [post] access to field S | SSA.cs:73:23:73:28 | SSA def(this.S) | -| SSA.cs:73:23:73:28 | access to field S | SSA.cs:73:23:73:28 | SSA def(this.S) | -| SSA.cs:73:23:73:28 | access to field S | SSA.cs:73:23:73:28 | SSA def(this.S) | +| SSA.cs:73:23:73:28 | [post] access to field S | SSA.cs:73:9:73:29 | SSA def(this.S) | +| SSA.cs:73:23:73:28 | access to field S | SSA.cs:73:9:73:29 | SSA def(this.S) | +| SSA.cs:73:23:73:28 | access to field S | SSA.cs:73:9:73:29 | SSA def(this.S) | | SSA.cs:74:15:74:18 | [post] this access | SSA.cs:80:9:80:12 | this access | | SSA.cs:74:15:74:18 | this access | SSA.cs:80:9:80:12 | this access | | SSA.cs:74:15:74:20 | [post] access to field S | SSA.cs:80:9:80:14 | access to field S | @@ -687,8 +678,8 @@ | SSA.cs:77:9:77:26 | SSA def(nonSink0) | SSA.cs:78:21:78:28 | access to local variable nonSink0 | | SSA.cs:77:20:77:26 | access to parameter tainted | SSA.cs:77:9:77:16 | access to local variable nonSink0 | | SSA.cs:77:20:77:26 | access to parameter tainted | SSA.cs:80:35:80:41 | access to parameter tainted | -| SSA.cs:78:21:78:28 | SSA def(nonSink0) | SSA.cs:79:15:79:22 | access to local variable nonSink0 | -| SSA.cs:78:21:78:28 | access to local variable nonSink0 | SSA.cs:78:21:78:28 | SSA def(nonSink0) | +| SSA.cs:78:9:78:29 | SSA def(nonSink0) | SSA.cs:79:15:79:22 | access to local variable nonSink0 | +| SSA.cs:78:21:78:28 | access to local variable nonSink0 | SSA.cs:78:9:78:29 | SSA def(nonSink0) | | SSA.cs:79:15:79:22 | [post] access to local variable nonSink0 | SSA.cs:102:13:102:33 | [input] SSA phi read(nonSink0) | | SSA.cs:79:15:79:22 | [post] access to local variable nonSink0 | SSA.cs:104:24:104:31 | access to local variable nonSink0 | | SSA.cs:79:15:79:22 | access to local variable nonSink0 | SSA.cs:102:13:102:33 | [input] SSA phi read(nonSink0) | @@ -699,11 +690,11 @@ | SSA.cs:80:9:80:14 | access to field S | SSA.cs:81:21:81:26 | access to field S | | SSA.cs:80:35:80:41 | access to parameter tainted | SSA.cs:80:9:80:31 | access to field SsaFieldNonSink0 | | SSA.cs:80:35:80:41 | access to parameter tainted | SSA.cs:83:35:83:41 | access to parameter tainted | +| SSA.cs:81:9:81:27 | SSA def(this.S) | SSA.cs:82:15:82:20 | access to field S | +| SSA.cs:81:9:81:27 | SSA qualifier def(this.S.SsaFieldNonSink0) | SSA.cs:82:15:82:37 | access to field SsaFieldNonSink0 | | SSA.cs:81:21:81:24 | [post] this access | SSA.cs:82:15:82:18 | this access | | SSA.cs:81:21:81:24 | this access | SSA.cs:82:15:82:18 | this access | -| SSA.cs:81:21:81:26 | SSA def(this.S) | SSA.cs:82:15:82:20 | access to field S | -| SSA.cs:81:21:81:26 | SSA qualifier def(this.S.SsaFieldNonSink0) | SSA.cs:82:15:82:37 | access to field SsaFieldNonSink0 | -| SSA.cs:81:21:81:26 | access to field S | SSA.cs:81:21:81:26 | SSA def(this.S) | +| SSA.cs:81:21:81:26 | access to field S | SSA.cs:81:9:81:27 | SSA def(this.S) | | SSA.cs:82:15:82:18 | [post] this access | SSA.cs:83:9:83:12 | this access | | SSA.cs:82:15:82:18 | this access | SSA.cs:83:9:83:12 | this access | | SSA.cs:82:15:82:20 | [post] access to field S | SSA.cs:83:9:83:14 | access to field S | @@ -733,24 +724,17 @@ | SSA.cs:91:13:91:31 | SSA def(ssaSink4) | SSA.cs:93:21:93:28 | access to local variable ssaSink4 | | SSA.cs:91:13:91:31 | SSA def(ssaSink4) | SSA.cs:95:21:95:28 | access to local variable ssaSink4 | | SSA.cs:91:24:91:31 | access to local variable ssaSink0 | SSA.cs:91:13:91:20 | access to local variable ssaSink4 | -| SSA.cs:91:24:91:31 | access to local variable ssaSink0 | SSA.cs:93:17:93:29 | [input] SSA phi read(ssaSink0) | -| SSA.cs:91:24:91:31 | access to local variable ssaSink0 | SSA.cs:95:17:95:29 | [input] SSA phi read(ssaSink0) | -| SSA.cs:92:17:92:26 | [post] access to parameter nonTainted | SSA.cs:93:17:93:29 | [input] SSA phi read(nonTainted) | -| SSA.cs:92:17:92:26 | [post] access to parameter nonTainted | SSA.cs:95:17:95:29 | [input] SSA phi read(nonTainted) | -| SSA.cs:92:17:92:26 | access to parameter nonTainted | SSA.cs:93:17:93:29 | [input] SSA phi read(nonTainted) | -| SSA.cs:92:17:92:26 | access to parameter nonTainted | SSA.cs:95:17:95:29 | [input] SSA phi read(nonTainted) | -| SSA.cs:93:17:93:29 | [input] SSA phi read(nonTainted) | SSA.cs:102:13:102:22 | access to parameter nonTainted | -| SSA.cs:93:17:93:29 | [input] SSA phi read(ssaSink0) | SSA.cs:117:36:117:43 | access to local variable ssaSink0 | +| SSA.cs:91:24:91:31 | access to local variable ssaSink0 | SSA.cs:117:36:117:43 | access to local variable ssaSink0 | +| SSA.cs:92:17:92:26 | [post] access to parameter nonTainted | SSA.cs:102:13:102:22 | access to parameter nonTainted | +| SSA.cs:92:17:92:26 | access to parameter nonTainted | SSA.cs:102:13:102:22 | access to parameter nonTainted | | SSA.cs:93:21:93:28 | [post] access to local variable ssaSink4 | SSA.cs:97:23:97:30 | access to local variable ssaSink4 | | SSA.cs:93:21:93:28 | access to local variable ssaSink4 | SSA.cs:97:23:97:30 | access to local variable ssaSink4 | -| SSA.cs:95:17:95:29 | [input] SSA phi read(nonTainted) | SSA.cs:102:13:102:22 | access to parameter nonTainted | -| SSA.cs:95:17:95:29 | [input] SSA phi read(ssaSink0) | SSA.cs:117:36:117:43 | access to local variable ssaSink0 | | SSA.cs:95:21:95:28 | [post] access to local variable ssaSink4 | SSA.cs:97:23:97:30 | access to local variable ssaSink4 | | SSA.cs:95:21:95:28 | access to local variable ssaSink4 | SSA.cs:97:23:97:30 | access to local variable ssaSink4 | -| SSA.cs:97:23:97:30 | SSA def(ssaSink4) | SSA.cs:98:15:98:22 | access to local variable ssaSink4 | -| SSA.cs:97:23:97:30 | [post] access to local variable ssaSink4 | SSA.cs:97:23:97:30 | SSA def(ssaSink4) | -| SSA.cs:97:23:97:30 | access to local variable ssaSink4 | SSA.cs:97:23:97:30 | SSA def(ssaSink4) | -| SSA.cs:97:23:97:30 | access to local variable ssaSink4 | SSA.cs:97:23:97:30 | SSA def(ssaSink4) | +| SSA.cs:97:9:97:31 | SSA def(ssaSink4) | SSA.cs:98:15:98:22 | access to local variable ssaSink4 | +| SSA.cs:97:23:97:30 | [post] access to local variable ssaSink4 | SSA.cs:97:9:97:31 | SSA def(ssaSink4) | +| SSA.cs:97:23:97:30 | access to local variable ssaSink4 | SSA.cs:97:9:97:31 | SSA def(ssaSink4) | +| SSA.cs:97:23:97:30 | access to local variable ssaSink4 | SSA.cs:97:9:97:31 | SSA def(ssaSink4) | | SSA.cs:101:16:101:23 | access to local variable nonSink3 | SSA.cs:101:16:101:28 | SSA def(nonSink3) | | SSA.cs:101:16:101:28 | SSA def(nonSink3) | SSA.cs:110:23:110:30 | access to local variable nonSink3 | | SSA.cs:101:27:101:28 | "" | SSA.cs:101:16:101:23 | access to local variable nonSink3 | @@ -764,24 +748,17 @@ | SSA.cs:104:13:104:31 | SSA def(nonSink3) | SSA.cs:106:21:106:28 | access to local variable nonSink3 | | SSA.cs:104:13:104:31 | SSA def(nonSink3) | SSA.cs:108:21:108:28 | access to local variable nonSink3 | | SSA.cs:104:24:104:31 | access to local variable nonSink0 | SSA.cs:104:13:104:20 | access to local variable nonSink3 | -| SSA.cs:104:24:104:31 | access to local variable nonSink0 | SSA.cs:106:17:106:29 | [input] SSA phi read(nonSink0) | -| SSA.cs:104:24:104:31 | access to local variable nonSink0 | SSA.cs:108:17:108:29 | [input] SSA phi read(nonSink0) | -| SSA.cs:105:17:105:26 | [post] access to parameter nonTainted | SSA.cs:106:17:106:29 | [input] SSA phi read(nonTainted) | -| SSA.cs:105:17:105:26 | [post] access to parameter nonTainted | SSA.cs:108:17:108:29 | [input] SSA phi read(nonTainted) | -| SSA.cs:105:17:105:26 | access to parameter nonTainted | SSA.cs:106:17:106:29 | [input] SSA phi read(nonTainted) | -| SSA.cs:105:17:105:26 | access to parameter nonTainted | SSA.cs:108:17:108:29 | [input] SSA phi read(nonTainted) | -| SSA.cs:106:17:106:29 | [input] SSA phi read(nonSink0) | SSA.cs:130:39:130:46 | access to local variable nonSink0 | -| SSA.cs:106:17:106:29 | [input] SSA phi read(nonTainted) | SSA.cs:115:13:115:22 | access to parameter nonTainted | +| SSA.cs:104:24:104:31 | access to local variable nonSink0 | SSA.cs:130:39:130:46 | access to local variable nonSink0 | +| SSA.cs:105:17:105:26 | [post] access to parameter nonTainted | SSA.cs:115:13:115:22 | access to parameter nonTainted | +| SSA.cs:105:17:105:26 | access to parameter nonTainted | SSA.cs:115:13:115:22 | access to parameter nonTainted | | SSA.cs:106:21:106:28 | [post] access to local variable nonSink3 | SSA.cs:110:23:110:30 | access to local variable nonSink3 | | SSA.cs:106:21:106:28 | access to local variable nonSink3 | SSA.cs:110:23:110:30 | access to local variable nonSink3 | -| SSA.cs:108:17:108:29 | [input] SSA phi read(nonSink0) | SSA.cs:130:39:130:46 | access to local variable nonSink0 | -| SSA.cs:108:17:108:29 | [input] SSA phi read(nonTainted) | SSA.cs:115:13:115:22 | access to parameter nonTainted | | SSA.cs:108:21:108:28 | [post] access to local variable nonSink3 | SSA.cs:110:23:110:30 | access to local variable nonSink3 | | SSA.cs:108:21:108:28 | access to local variable nonSink3 | SSA.cs:110:23:110:30 | access to local variable nonSink3 | -| SSA.cs:110:23:110:30 | SSA def(nonSink3) | SSA.cs:111:15:111:22 | access to local variable nonSink3 | -| SSA.cs:110:23:110:30 | [post] access to local variable nonSink3 | SSA.cs:110:23:110:30 | SSA def(nonSink3) | -| SSA.cs:110:23:110:30 | access to local variable nonSink3 | SSA.cs:110:23:110:30 | SSA def(nonSink3) | -| SSA.cs:110:23:110:30 | access to local variable nonSink3 | SSA.cs:110:23:110:30 | SSA def(nonSink3) | +| SSA.cs:110:9:110:31 | SSA def(nonSink3) | SSA.cs:111:15:111:22 | access to local variable nonSink3 | +| SSA.cs:110:23:110:30 | [post] access to local variable nonSink3 | SSA.cs:110:9:110:31 | SSA def(nonSink3) | +| SSA.cs:110:23:110:30 | access to local variable nonSink3 | SSA.cs:110:9:110:31 | SSA def(nonSink3) | +| SSA.cs:110:23:110:30 | access to local variable nonSink3 | SSA.cs:110:9:110:31 | SSA def(nonSink3) | | SSA.cs:114:9:114:12 | [post] this access | SSA.cs:117:13:117:16 | this access | | SSA.cs:114:9:114:12 | [post] this access | SSA.cs:123:23:123:26 | this access | | SSA.cs:114:9:114:12 | this access | SSA.cs:117:13:117:16 | this access | @@ -791,7 +768,7 @@ | SSA.cs:114:9:114:14 | access to field S | SSA.cs:115:13:115:33 | [input] SSA phi read(this.S) | | SSA.cs:114:9:114:14 | access to field S | SSA.cs:117:13:117:18 | access to field S | | SSA.cs:114:9:114:28 | access to field SsaFieldSink1 | SSA.cs:114:9:114:33 | SSA def(this.S.SsaFieldSink1) | -| SSA.cs:114:9:114:33 | SSA def(this.S.SsaFieldSink1) | SSA.cs:123:23:123:28 | SSA qualifier def(this.S.SsaFieldSink1) | +| SSA.cs:114:9:114:33 | SSA def(this.S.SsaFieldSink1) | SSA.cs:123:9:123:29 | SSA qualifier def(this.S.SsaFieldSink1) | | SSA.cs:114:32:114:33 | "" | SSA.cs:114:9:114:28 | access to field SsaFieldSink1 | | SSA.cs:115:13:115:22 | [post] access to parameter nonTainted | SSA.cs:115:13:115:33 | [input] SSA phi read(nonTainted) | | SSA.cs:115:13:115:22 | [post] access to parameter nonTainted | SSA.cs:118:17:118:26 | access to parameter nonTainted | @@ -811,31 +788,27 @@ | SSA.cs:117:13:117:43 | SSA def(this.S.SsaFieldSink1) | SSA.cs:119:21:119:40 | access to field SsaFieldSink1 | | SSA.cs:117:13:117:43 | SSA def(this.S.SsaFieldSink1) | SSA.cs:121:21:121:40 | access to field SsaFieldSink1 | | SSA.cs:117:36:117:43 | access to local variable ssaSink0 | SSA.cs:117:13:117:32 | access to field SsaFieldSink1 | -| SSA.cs:118:17:118:26 | [post] access to parameter nonTainted | SSA.cs:119:17:119:41 | [input] SSA phi read(nonTainted) | -| SSA.cs:118:17:118:26 | [post] access to parameter nonTainted | SSA.cs:121:17:121:41 | [input] SSA phi read(nonTainted) | -| SSA.cs:118:17:118:26 | access to parameter nonTainted | SSA.cs:119:17:119:41 | [input] SSA phi read(nonTainted) | -| SSA.cs:118:17:118:26 | access to parameter nonTainted | SSA.cs:121:17:121:41 | [input] SSA phi read(nonTainted) | -| SSA.cs:119:17:119:41 | [input] SSA phi read(nonTainted) | SSA.cs:128:13:128:22 | access to parameter nonTainted | +| SSA.cs:118:17:118:26 | [post] access to parameter nonTainted | SSA.cs:128:13:128:22 | access to parameter nonTainted | +| SSA.cs:118:17:118:26 | access to parameter nonTainted | SSA.cs:128:13:128:22 | access to parameter nonTainted | | SSA.cs:119:21:119:24 | [post] this access | SSA.cs:123:23:123:26 | this access | | SSA.cs:119:21:119:24 | this access | SSA.cs:123:23:123:26 | this access | | SSA.cs:119:21:119:26 | [post] access to field S | SSA.cs:123:23:123:28 | access to field S | | SSA.cs:119:21:119:26 | access to field S | SSA.cs:123:23:123:28 | access to field S | -| SSA.cs:119:21:119:40 | [post] access to field SsaFieldSink1 | SSA.cs:123:23:123:28 | SSA qualifier def(this.S.SsaFieldSink1) | -| SSA.cs:119:21:119:40 | access to field SsaFieldSink1 | SSA.cs:123:23:123:28 | SSA qualifier def(this.S.SsaFieldSink1) | -| SSA.cs:121:17:121:41 | [input] SSA phi read(nonTainted) | SSA.cs:128:13:128:22 | access to parameter nonTainted | +| SSA.cs:119:21:119:40 | [post] access to field SsaFieldSink1 | SSA.cs:123:9:123:29 | SSA qualifier def(this.S.SsaFieldSink1) | +| SSA.cs:119:21:119:40 | access to field SsaFieldSink1 | SSA.cs:123:9:123:29 | SSA qualifier def(this.S.SsaFieldSink1) | | SSA.cs:121:21:121:24 | [post] this access | SSA.cs:123:23:123:26 | this access | | SSA.cs:121:21:121:24 | this access | SSA.cs:123:23:123:26 | this access | | SSA.cs:121:21:121:26 | [post] access to field S | SSA.cs:123:23:123:28 | access to field S | | SSA.cs:121:21:121:26 | access to field S | SSA.cs:123:23:123:28 | access to field S | -| SSA.cs:121:21:121:40 | [post] access to field SsaFieldSink1 | SSA.cs:123:23:123:28 | SSA qualifier def(this.S.SsaFieldSink1) | -| SSA.cs:121:21:121:40 | access to field SsaFieldSink1 | SSA.cs:123:23:123:28 | SSA qualifier def(this.S.SsaFieldSink1) | +| SSA.cs:121:21:121:40 | [post] access to field SsaFieldSink1 | SSA.cs:123:9:123:29 | SSA qualifier def(this.S.SsaFieldSink1) | +| SSA.cs:121:21:121:40 | access to field SsaFieldSink1 | SSA.cs:123:9:123:29 | SSA qualifier def(this.S.SsaFieldSink1) | +| SSA.cs:123:9:123:29 | SSA def(this.S) | SSA.cs:124:15:124:20 | access to field S | +| SSA.cs:123:9:123:29 | SSA qualifier def(this.S.SsaFieldSink1) | SSA.cs:124:15:124:34 | access to field SsaFieldSink1 | | SSA.cs:123:23:123:26 | [post] this access | SSA.cs:124:15:124:18 | this access | | SSA.cs:123:23:123:26 | this access | SSA.cs:124:15:124:18 | this access | -| SSA.cs:123:23:123:28 | SSA def(this.S) | SSA.cs:124:15:124:20 | access to field S | -| SSA.cs:123:23:123:28 | SSA qualifier def(this.S.SsaFieldSink1) | SSA.cs:124:15:124:34 | access to field SsaFieldSink1 | -| SSA.cs:123:23:123:28 | [post] access to field S | SSA.cs:123:23:123:28 | SSA def(this.S) | -| SSA.cs:123:23:123:28 | access to field S | SSA.cs:123:23:123:28 | SSA def(this.S) | -| SSA.cs:123:23:123:28 | access to field S | SSA.cs:123:23:123:28 | SSA def(this.S) | +| SSA.cs:123:23:123:28 | [post] access to field S | SSA.cs:123:9:123:29 | SSA def(this.S) | +| SSA.cs:123:23:123:28 | access to field S | SSA.cs:123:9:123:29 | SSA def(this.S) | +| SSA.cs:123:23:123:28 | access to field S | SSA.cs:123:9:123:29 | SSA def(this.S) | | SSA.cs:124:15:124:18 | [post] this access | SSA.cs:127:9:127:12 | this access | | SSA.cs:124:15:124:18 | this access | SSA.cs:127:9:127:12 | this access | | SSA.cs:124:15:124:20 | [post] access to field S | SSA.cs:127:9:127:14 | access to field S | @@ -849,7 +822,7 @@ | SSA.cs:127:9:127:14 | access to field S | SSA.cs:128:13:128:33 | [input] SSA phi read(this.S) | | SSA.cs:127:9:127:14 | access to field S | SSA.cs:130:13:130:18 | access to field S | | SSA.cs:127:9:127:31 | access to field SsaFieldNonSink0 | SSA.cs:127:9:127:36 | SSA def(this.S.SsaFieldNonSink0) | -| SSA.cs:127:9:127:36 | SSA def(this.S.SsaFieldNonSink0) | SSA.cs:136:23:136:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | +| SSA.cs:127:9:127:36 | SSA def(this.S.SsaFieldNonSink0) | SSA.cs:136:9:136:29 | SSA qualifier def(this.S.SsaFieldNonSink0) | | SSA.cs:127:35:127:36 | "" | SSA.cs:127:9:127:31 | access to field SsaFieldNonSink0 | | SSA.cs:128:13:128:22 | [post] access to parameter nonTainted | SSA.cs:131:17:131:26 | access to parameter nonTainted | | SSA.cs:128:13:128:22 | access to parameter nonTainted | SSA.cs:131:17:131:26 | access to parameter nonTainted | @@ -870,39 +843,39 @@ | SSA.cs:132:21:132:24 | this access | SSA.cs:136:23:136:26 | this access | | SSA.cs:132:21:132:26 | [post] access to field S | SSA.cs:136:23:136:28 | access to field S | | SSA.cs:132:21:132:26 | access to field S | SSA.cs:136:23:136:28 | access to field S | -| SSA.cs:132:21:132:43 | [post] access to field SsaFieldNonSink0 | SSA.cs:136:23:136:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | -| SSA.cs:132:21:132:43 | access to field SsaFieldNonSink0 | SSA.cs:136:23:136:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | +| SSA.cs:132:21:132:43 | [post] access to field SsaFieldNonSink0 | SSA.cs:136:9:136:29 | SSA qualifier def(this.S.SsaFieldNonSink0) | +| SSA.cs:132:21:132:43 | access to field SsaFieldNonSink0 | SSA.cs:136:9:136:29 | SSA qualifier def(this.S.SsaFieldNonSink0) | | SSA.cs:134:21:134:24 | [post] this access | SSA.cs:136:23:136:26 | this access | | SSA.cs:134:21:134:24 | this access | SSA.cs:136:23:136:26 | this access | | SSA.cs:134:21:134:26 | [post] access to field S | SSA.cs:136:23:136:28 | access to field S | | SSA.cs:134:21:134:26 | access to field S | SSA.cs:136:23:136:28 | access to field S | -| SSA.cs:134:21:134:43 | [post] access to field SsaFieldNonSink0 | SSA.cs:136:23:136:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | -| SSA.cs:134:21:134:43 | access to field SsaFieldNonSink0 | SSA.cs:136:23:136:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | +| SSA.cs:134:21:134:43 | [post] access to field SsaFieldNonSink0 | SSA.cs:136:9:136:29 | SSA qualifier def(this.S.SsaFieldNonSink0) | +| SSA.cs:134:21:134:43 | access to field SsaFieldNonSink0 | SSA.cs:136:9:136:29 | SSA qualifier def(this.S.SsaFieldNonSink0) | +| SSA.cs:136:9:136:29 | SSA def(this.S) | SSA.cs:137:15:137:20 | access to field S | +| SSA.cs:136:9:136:29 | SSA qualifier def(this.S.SsaFieldNonSink0) | SSA.cs:137:15:137:37 | access to field SsaFieldNonSink0 | | SSA.cs:136:23:136:26 | [post] this access | SSA.cs:137:15:137:18 | this access | | SSA.cs:136:23:136:26 | this access | SSA.cs:137:15:137:18 | this access | -| SSA.cs:136:23:136:28 | SSA def(this.S) | SSA.cs:137:15:137:20 | access to field S | -| SSA.cs:136:23:136:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | SSA.cs:137:15:137:37 | access to field SsaFieldNonSink0 | -| SSA.cs:136:23:136:28 | [post] access to field S | SSA.cs:136:23:136:28 | SSA def(this.S) | -| SSA.cs:136:23:136:28 | access to field S | SSA.cs:136:23:136:28 | SSA def(this.S) | -| SSA.cs:136:23:136:28 | access to field S | SSA.cs:136:23:136:28 | SSA def(this.S) | +| SSA.cs:136:23:136:28 | [post] access to field S | SSA.cs:136:9:136:29 | SSA def(this.S) | +| SSA.cs:136:23:136:28 | access to field S | SSA.cs:136:9:136:29 | SSA def(this.S) | +| SSA.cs:136:23:136:28 | access to field S | SSA.cs:136:9:136:29 | SSA def(this.S) | | SSA.cs:144:34:144:34 | SSA param(t) | SSA.cs:146:13:146:13 | access to parameter t | | SSA.cs:144:34:144:34 | t | SSA.cs:144:34:144:34 | SSA param(t) | | SSA.cs:146:13:146:13 | access to parameter t | SSA.cs:146:13:146:13 | (...) ... | | SSA.cs:146:13:146:13 | access to parameter t | SSA.cs:149:17:149:17 | access to parameter t | | SSA.cs:147:13:147:13 | access to parameter t | SSA.cs:147:13:147:26 | SSA def(t) | -| SSA.cs:147:13:147:26 | SSA def(t) | SSA.cs:144:17:144:26 | SSA phi(t) | +| SSA.cs:147:13:147:26 | SSA def(t) | SSA.cs:146:9:149:18 | SSA phi(t) | | SSA.cs:147:17:147:26 | default(...) | SSA.cs:147:13:147:13 | access to parameter t | | SSA.cs:149:13:149:13 | access to parameter t | SSA.cs:149:13:149:17 | SSA def(t) | -| SSA.cs:149:13:149:17 | SSA def(t) | SSA.cs:144:17:144:26 | SSA phi(t) | +| SSA.cs:149:13:149:17 | SSA def(t) | SSA.cs:146:9:149:18 | SSA phi(t) | | SSA.cs:149:17:149:17 | access to parameter t | SSA.cs:149:13:149:13 | access to parameter t | | SSA.cs:152:36:152:36 | SSA param(t) | SSA.cs:154:13:154:13 | access to parameter t | | SSA.cs:152:36:152:36 | t | SSA.cs:152:36:152:36 | SSA param(t) | | SSA.cs:154:13:154:13 | access to parameter t | SSA.cs:154:13:154:13 | (...) ... | | SSA.cs:154:13:154:13 | access to parameter t | SSA.cs:154:13:154:21 | [input] SSA phi(t) | | SSA.cs:154:13:154:13 | access to parameter t | SSA.cs:155:25:155:25 | access to parameter t | -| SSA.cs:154:13:154:21 | [input] SSA phi(t) | SSA.cs:152:17:152:28 | SSA phi(t) | -| SSA.cs:155:25:155:25 | SSA def(t) | SSA.cs:152:17:152:28 | SSA phi(t) | -| SSA.cs:155:25:155:25 | access to parameter t | SSA.cs:155:25:155:25 | SSA def(t) | +| SSA.cs:154:13:154:21 | [input] SSA phi(t) | SSA.cs:154:9:155:27 | SSA phi(t) | +| SSA.cs:155:13:155:26 | SSA def(t) | SSA.cs:154:9:155:27 | SSA phi(t) | +| SSA.cs:155:25:155:25 | access to parameter t | SSA.cs:155:13:155:26 | SSA def(t) | | SSA.cs:166:10:166:13 | this | SSA.cs:166:19:166:22 | this access | | SSA.cs:166:28:166:31 | null | SSA.cs:166:19:166:24 | access to field S | | SSA.cs:168:22:168:28 | SSA param(tainted) | SSA.cs:173:24:173:30 | access to parameter tainted | @@ -914,18 +887,18 @@ | SSA.cs:170:27:170:28 | "" | SSA.cs:170:16:170:23 | access to local variable ssaSink5 | | SSA.cs:171:13:171:13 | access to parameter i | SSA.cs:171:13:171:15 | SSA def(i) | | SSA.cs:171:13:171:15 | SSA def(i) | SSA.cs:174:20:174:20 | access to parameter i | +| SSA.cs:172:9:179:9 | [input] SSA phi(ssaSink5) | SSA.cs:180:15:180:22 | access to local variable ssaSink5 | | SSA.cs:173:13:173:20 | access to local variable ssaSink5 | SSA.cs:173:13:173:30 | SSA def(ssaSink5) | -| SSA.cs:173:13:173:30 | SSA def(ssaSink5) | SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | +| SSA.cs:173:13:173:30 | SSA def(ssaSink5) | SSA.cs:174:13:178:13 | SSA phi read(ssaSink5) | | SSA.cs:173:24:173:30 | access to parameter tainted | SSA.cs:173:13:173:20 | access to local variable ssaSink5 | -| SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | SSA.cs:174:20:174:26 | [input] SSA phi(ssaSink5) | -| SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | SSA.cs:176:21:176:28 | access to local variable ssaSink5 | +| SSA.cs:174:13:178:13 | SSA phi read(ssaSink5) | SSA.cs:172:9:179:9 | [input] SSA phi(ssaSink5) | +| SSA.cs:174:13:178:13 | SSA phi read(ssaSink5) | SSA.cs:176:21:176:28 | access to local variable ssaSink5 | | SSA.cs:174:20:174:20 | access to parameter i | SSA.cs:174:20:174:22 | SSA def(i) | | SSA.cs:174:20:174:22 | SSA def(i) | SSA.cs:174:20:174:20 | access to parameter i | -| SSA.cs:174:20:174:26 | [input] SSA phi(ssaSink5) | SSA.cs:180:15:180:22 | access to local variable ssaSink5 | | SSA.cs:176:21:176:28 | [post] access to local variable ssaSink5 | SSA.cs:177:21:177:28 | access to local variable ssaSink5 | | SSA.cs:176:21:176:28 | access to local variable ssaSink5 | SSA.cs:177:21:177:28 | access to local variable ssaSink5 | -| SSA.cs:177:21:177:28 | [post] access to local variable ssaSink5 | SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | -| SSA.cs:177:21:177:28 | access to local variable ssaSink5 | SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | +| SSA.cs:177:21:177:28 | [post] access to local variable ssaSink5 | SSA.cs:174:13:178:13 | SSA phi read(ssaSink5) | +| SSA.cs:177:21:177:28 | access to local variable ssaSink5 | SSA.cs:174:13:178:13 | SSA phi read(ssaSink5) | | Splitting.cs:1:7:1:15 | this | Splitting.cs:1:7:1:15 | this access | | Splitting.cs:3:18:3:18 | SSA param(b) | Splitting.cs:6:13:6:13 | access to parameter b | | Splitting.cs:3:18:3:18 | b | Splitting.cs:3:18:3:18 | SSA param(b) | @@ -937,10 +910,10 @@ | Splitting.cs:5:17:5:23 | access to parameter tainted | Splitting.cs:5:13:5:13 | access to local variable x | | Splitting.cs:6:13:6:13 | [input] SSA phi read(x) | Splitting.cs:12:15:12:15 | access to local variable x | | Splitting.cs:6:13:6:13 | access to parameter b | Splitting.cs:13:13:13:13 | access to parameter b | +| Splitting.cs:7:9:11:9 | [input] SSA phi read(x) | Splitting.cs:12:15:12:15 | access to local variable x | | Splitting.cs:8:19:8:19 | [post] access to local variable x | Splitting.cs:9:17:9:17 | access to local variable x | | Splitting.cs:8:19:8:19 | access to local variable x | Splitting.cs:9:17:9:17 | access to local variable x | -| Splitting.cs:9:17:9:17 | access to local variable x | Splitting.cs:9:17:9:25 | [input] SSA phi read(x) | -| Splitting.cs:9:17:9:25 | [input] SSA phi read(x) | Splitting.cs:12:15:12:15 | access to local variable x | +| Splitting.cs:9:17:9:17 | access to local variable x | Splitting.cs:7:9:11:9 | [input] SSA phi read(x) | | Splitting.cs:12:15:12:15 | [post] access to local variable x | Splitting.cs:14:19:14:19 | access to local variable x | | Splitting.cs:12:15:12:15 | access to local variable x | Splitting.cs:14:19:14:19 | access to local variable x | | Splitting.cs:17:18:17:18 | SSA param(b) | Splitting.cs:20:13:20:13 | access to parameter b | @@ -1117,1108 +1090,1105 @@ | UseUseExplosion.cs:23:13:23:17 | SSA def(x) | UseUseExplosion.cs:24:3182:24:3182 | access to local variable x | | UseUseExplosion.cs:23:13:23:17 | SSA def(x) | UseUseExplosion.cs:24:3197:24:3197 | access to local variable x | | UseUseExplosion.cs:23:17:23:17 | 0 | UseUseExplosion.cs:23:13:23:13 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1712:25:1712 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1727:25:1727 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1742:25:1742 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1757:25:1757 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1772:25:1772 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1787:25:1787 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1802:25:1802 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1817:25:1817 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1832:25:1832 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1847:25:1847 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1862:25:1862 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1877:25:1877 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1892:25:1892 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1907:25:1907 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1922:25:1922 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1937:25:1937 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1952:25:1952 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1967:25:1967 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1982:25:1982 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1997:25:1997 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2012:25:2012 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2027:25:2027 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2042:25:2042 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2057:25:2057 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2072:25:2072 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2087:25:2087 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2102:25:2102 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2117:25:2117 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2132:25:2132 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2147:25:2147 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2162:25:2162 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2177:25:2177 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2192:25:2192 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2207:25:2207 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2222:25:2222 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2237:25:2237 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2252:25:2252 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2267:25:2267 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2282:25:2282 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2297:25:2297 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2312:25:2312 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2327:25:2327 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2342:25:2342 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2357:25:2357 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2372:25:2372 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2387:25:2387 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2402:25:2402 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2417:25:2417 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2432:25:2432 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2447:25:2447 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2462:25:2462 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2477:25:2477 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2492:25:2492 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2507:25:2507 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2522:25:2522 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2537:25:2537 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2552:25:2552 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2567:25:2567 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2582:25:2582 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2597:25:2597 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2612:25:2612 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2627:25:2627 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2642:25:2642 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2657:25:2657 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2672:25:2672 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2687:25:2687 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2702:25:2702 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2717:25:2717 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2732:25:2732 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2747:25:2747 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2762:25:2762 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2777:25:2777 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2792:25:2792 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2807:25:2807 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2822:25:2822 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2837:25:2837 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2852:25:2852 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2867:25:2867 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2882:25:2882 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2897:25:2897 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2912:25:2912 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2927:25:2927 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2942:25:2942 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2957:25:2957 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2972:25:2972 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2987:25:2987 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3002:25:3002 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3017:25:3017 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3032:25:3032 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3047:25:3047 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3062:25:3062 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3077:25:3077 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3092:25:3092 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3107:25:3107 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3122:25:3122 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3137:25:3137 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3152:25:3152 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3167:25:3167 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3182:25:3182 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3197:25:3197 | access to local variable x | | UseUseExplosion.cs:24:13:24:16 | [post] this access | UseUseExplosion.cs:24:31:24:34 | this access | | UseUseExplosion.cs:24:13:24:16 | [post] this access | UseUseExplosion.cs:24:3193:24:3198 | this access | | UseUseExplosion.cs:24:13:24:16 | access to property Prop | UseUseExplosion.cs:24:31:24:34 | access to property Prop | -| UseUseExplosion.cs:24:13:24:16 | access to property Prop | UseUseExplosion.cs:24:3193:24:3198 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:13:24:16 | access to property Prop | UseUseExplosion.cs:24:3193:24:3199 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:13:24:16 | this access | UseUseExplosion.cs:24:31:24:34 | this access | | UseUseExplosion.cs:24:13:24:16 | this access | UseUseExplosion.cs:24:3193:24:3198 | this access | | UseUseExplosion.cs:24:31:24:34 | [post] this access | UseUseExplosion.cs:24:48:24:51 | this access | | UseUseExplosion.cs:24:31:24:34 | [post] this access | UseUseExplosion.cs:24:3178:24:3183 | this access | | UseUseExplosion.cs:24:31:24:34 | access to property Prop | UseUseExplosion.cs:24:48:24:51 | access to property Prop | -| UseUseExplosion.cs:24:31:24:34 | access to property Prop | UseUseExplosion.cs:24:3178:24:3183 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:31:24:34 | access to property Prop | UseUseExplosion.cs:24:3178:24:3184 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:31:24:34 | this access | UseUseExplosion.cs:24:48:24:51 | this access | | UseUseExplosion.cs:24:31:24:34 | this access | UseUseExplosion.cs:24:3178:24:3183 | this access | | UseUseExplosion.cs:24:48:24:51 | [post] this access | UseUseExplosion.cs:24:65:24:68 | this access | | UseUseExplosion.cs:24:48:24:51 | [post] this access | UseUseExplosion.cs:24:3163:24:3168 | this access | | UseUseExplosion.cs:24:48:24:51 | access to property Prop | UseUseExplosion.cs:24:65:24:68 | access to property Prop | -| UseUseExplosion.cs:24:48:24:51 | access to property Prop | UseUseExplosion.cs:24:3163:24:3168 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:48:24:51 | access to property Prop | UseUseExplosion.cs:24:3163:24:3169 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:48:24:51 | this access | UseUseExplosion.cs:24:65:24:68 | this access | | UseUseExplosion.cs:24:48:24:51 | this access | UseUseExplosion.cs:24:3163:24:3168 | this access | | UseUseExplosion.cs:24:65:24:68 | [post] this access | UseUseExplosion.cs:24:82:24:85 | this access | | UseUseExplosion.cs:24:65:24:68 | [post] this access | UseUseExplosion.cs:24:3148:24:3153 | this access | | UseUseExplosion.cs:24:65:24:68 | access to property Prop | UseUseExplosion.cs:24:82:24:85 | access to property Prop | -| UseUseExplosion.cs:24:65:24:68 | access to property Prop | UseUseExplosion.cs:24:3148:24:3153 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:65:24:68 | access to property Prop | UseUseExplosion.cs:24:3148:24:3154 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:65:24:68 | this access | UseUseExplosion.cs:24:82:24:85 | this access | | UseUseExplosion.cs:24:65:24:68 | this access | UseUseExplosion.cs:24:3148:24:3153 | this access | | UseUseExplosion.cs:24:82:24:85 | [post] this access | UseUseExplosion.cs:24:99:24:102 | this access | | UseUseExplosion.cs:24:82:24:85 | [post] this access | UseUseExplosion.cs:24:3133:24:3138 | this access | | UseUseExplosion.cs:24:82:24:85 | access to property Prop | UseUseExplosion.cs:24:99:24:102 | access to property Prop | -| UseUseExplosion.cs:24:82:24:85 | access to property Prop | UseUseExplosion.cs:24:3133:24:3138 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:82:24:85 | access to property Prop | UseUseExplosion.cs:24:3133:24:3139 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:82:24:85 | this access | UseUseExplosion.cs:24:99:24:102 | this access | | UseUseExplosion.cs:24:82:24:85 | this access | UseUseExplosion.cs:24:3133:24:3138 | this access | | UseUseExplosion.cs:24:99:24:102 | [post] this access | UseUseExplosion.cs:24:116:24:119 | this access | | UseUseExplosion.cs:24:99:24:102 | [post] this access | UseUseExplosion.cs:24:3118:24:3123 | this access | | UseUseExplosion.cs:24:99:24:102 | access to property Prop | UseUseExplosion.cs:24:116:24:119 | access to property Prop | -| UseUseExplosion.cs:24:99:24:102 | access to property Prop | UseUseExplosion.cs:24:3118:24:3123 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:99:24:102 | access to property Prop | UseUseExplosion.cs:24:3118:24:3124 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:99:24:102 | this access | UseUseExplosion.cs:24:116:24:119 | this access | | UseUseExplosion.cs:24:99:24:102 | this access | UseUseExplosion.cs:24:3118:24:3123 | this access | | UseUseExplosion.cs:24:116:24:119 | [post] this access | UseUseExplosion.cs:24:133:24:136 | this access | | UseUseExplosion.cs:24:116:24:119 | [post] this access | UseUseExplosion.cs:24:3103:24:3108 | this access | | UseUseExplosion.cs:24:116:24:119 | access to property Prop | UseUseExplosion.cs:24:133:24:136 | access to property Prop | -| UseUseExplosion.cs:24:116:24:119 | access to property Prop | UseUseExplosion.cs:24:3103:24:3108 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:116:24:119 | access to property Prop | UseUseExplosion.cs:24:3103:24:3109 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:116:24:119 | this access | UseUseExplosion.cs:24:133:24:136 | this access | | UseUseExplosion.cs:24:116:24:119 | this access | UseUseExplosion.cs:24:3103:24:3108 | this access | | UseUseExplosion.cs:24:133:24:136 | [post] this access | UseUseExplosion.cs:24:150:24:153 | this access | | UseUseExplosion.cs:24:133:24:136 | [post] this access | UseUseExplosion.cs:24:3088:24:3093 | this access | | UseUseExplosion.cs:24:133:24:136 | access to property Prop | UseUseExplosion.cs:24:150:24:153 | access to property Prop | -| UseUseExplosion.cs:24:133:24:136 | access to property Prop | UseUseExplosion.cs:24:3088:24:3093 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:133:24:136 | access to property Prop | UseUseExplosion.cs:24:3088:24:3094 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:133:24:136 | this access | UseUseExplosion.cs:24:150:24:153 | this access | | UseUseExplosion.cs:24:133:24:136 | this access | UseUseExplosion.cs:24:3088:24:3093 | this access | | UseUseExplosion.cs:24:150:24:153 | [post] this access | UseUseExplosion.cs:24:167:24:170 | this access | | UseUseExplosion.cs:24:150:24:153 | [post] this access | UseUseExplosion.cs:24:3073:24:3078 | this access | | UseUseExplosion.cs:24:150:24:153 | access to property Prop | UseUseExplosion.cs:24:167:24:170 | access to property Prop | -| UseUseExplosion.cs:24:150:24:153 | access to property Prop | UseUseExplosion.cs:24:3073:24:3078 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:150:24:153 | access to property Prop | UseUseExplosion.cs:24:3073:24:3079 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:150:24:153 | this access | UseUseExplosion.cs:24:167:24:170 | this access | | UseUseExplosion.cs:24:150:24:153 | this access | UseUseExplosion.cs:24:3073:24:3078 | this access | | UseUseExplosion.cs:24:167:24:170 | [post] this access | UseUseExplosion.cs:24:184:24:187 | this access | | UseUseExplosion.cs:24:167:24:170 | [post] this access | UseUseExplosion.cs:24:3058:24:3063 | this access | | UseUseExplosion.cs:24:167:24:170 | access to property Prop | UseUseExplosion.cs:24:184:24:187 | access to property Prop | -| UseUseExplosion.cs:24:167:24:170 | access to property Prop | UseUseExplosion.cs:24:3058:24:3063 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:167:24:170 | access to property Prop | UseUseExplosion.cs:24:3058:24:3064 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:167:24:170 | this access | UseUseExplosion.cs:24:184:24:187 | this access | | UseUseExplosion.cs:24:167:24:170 | this access | UseUseExplosion.cs:24:3058:24:3063 | this access | | UseUseExplosion.cs:24:184:24:187 | [post] this access | UseUseExplosion.cs:24:201:24:204 | this access | | UseUseExplosion.cs:24:184:24:187 | [post] this access | UseUseExplosion.cs:24:3043:24:3048 | this access | | UseUseExplosion.cs:24:184:24:187 | access to property Prop | UseUseExplosion.cs:24:201:24:204 | access to property Prop | -| UseUseExplosion.cs:24:184:24:187 | access to property Prop | UseUseExplosion.cs:24:3043:24:3048 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:184:24:187 | access to property Prop | UseUseExplosion.cs:24:3043:24:3049 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:184:24:187 | this access | UseUseExplosion.cs:24:201:24:204 | this access | | UseUseExplosion.cs:24:184:24:187 | this access | UseUseExplosion.cs:24:3043:24:3048 | this access | | UseUseExplosion.cs:24:201:24:204 | [post] this access | UseUseExplosion.cs:24:218:24:221 | this access | | UseUseExplosion.cs:24:201:24:204 | [post] this access | UseUseExplosion.cs:24:3028:24:3033 | this access | | UseUseExplosion.cs:24:201:24:204 | access to property Prop | UseUseExplosion.cs:24:218:24:221 | access to property Prop | -| UseUseExplosion.cs:24:201:24:204 | access to property Prop | UseUseExplosion.cs:24:3028:24:3033 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:201:24:204 | access to property Prop | UseUseExplosion.cs:24:3028:24:3034 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:201:24:204 | this access | UseUseExplosion.cs:24:218:24:221 | this access | | UseUseExplosion.cs:24:201:24:204 | this access | UseUseExplosion.cs:24:3028:24:3033 | this access | | UseUseExplosion.cs:24:218:24:221 | [post] this access | UseUseExplosion.cs:24:235:24:238 | this access | | UseUseExplosion.cs:24:218:24:221 | [post] this access | UseUseExplosion.cs:24:3013:24:3018 | this access | | UseUseExplosion.cs:24:218:24:221 | access to property Prop | UseUseExplosion.cs:24:235:24:238 | access to property Prop | -| UseUseExplosion.cs:24:218:24:221 | access to property Prop | UseUseExplosion.cs:24:3013:24:3018 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:218:24:221 | access to property Prop | UseUseExplosion.cs:24:3013:24:3019 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:218:24:221 | this access | UseUseExplosion.cs:24:235:24:238 | this access | | UseUseExplosion.cs:24:218:24:221 | this access | UseUseExplosion.cs:24:3013:24:3018 | this access | | UseUseExplosion.cs:24:235:24:238 | [post] this access | UseUseExplosion.cs:24:252:24:255 | this access | | UseUseExplosion.cs:24:235:24:238 | [post] this access | UseUseExplosion.cs:24:2998:24:3003 | this access | | UseUseExplosion.cs:24:235:24:238 | access to property Prop | UseUseExplosion.cs:24:252:24:255 | access to property Prop | -| UseUseExplosion.cs:24:235:24:238 | access to property Prop | UseUseExplosion.cs:24:2998:24:3003 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:235:24:238 | access to property Prop | UseUseExplosion.cs:24:2998:24:3004 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:235:24:238 | this access | UseUseExplosion.cs:24:252:24:255 | this access | | UseUseExplosion.cs:24:235:24:238 | this access | UseUseExplosion.cs:24:2998:24:3003 | this access | | UseUseExplosion.cs:24:252:24:255 | [post] this access | UseUseExplosion.cs:24:269:24:272 | this access | | UseUseExplosion.cs:24:252:24:255 | [post] this access | UseUseExplosion.cs:24:2983:24:2988 | this access | | UseUseExplosion.cs:24:252:24:255 | access to property Prop | UseUseExplosion.cs:24:269:24:272 | access to property Prop | -| UseUseExplosion.cs:24:252:24:255 | access to property Prop | UseUseExplosion.cs:24:2983:24:2988 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:252:24:255 | access to property Prop | UseUseExplosion.cs:24:2983:24:2989 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:252:24:255 | this access | UseUseExplosion.cs:24:269:24:272 | this access | | UseUseExplosion.cs:24:252:24:255 | this access | UseUseExplosion.cs:24:2983:24:2988 | this access | | UseUseExplosion.cs:24:269:24:272 | [post] this access | UseUseExplosion.cs:24:286:24:289 | this access | | UseUseExplosion.cs:24:269:24:272 | [post] this access | UseUseExplosion.cs:24:2968:24:2973 | this access | | UseUseExplosion.cs:24:269:24:272 | access to property Prop | UseUseExplosion.cs:24:286:24:289 | access to property Prop | -| UseUseExplosion.cs:24:269:24:272 | access to property Prop | UseUseExplosion.cs:24:2968:24:2973 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:269:24:272 | access to property Prop | UseUseExplosion.cs:24:2968:24:2974 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:269:24:272 | this access | UseUseExplosion.cs:24:286:24:289 | this access | | UseUseExplosion.cs:24:269:24:272 | this access | UseUseExplosion.cs:24:2968:24:2973 | this access | | UseUseExplosion.cs:24:286:24:289 | [post] this access | UseUseExplosion.cs:24:303:24:306 | this access | | UseUseExplosion.cs:24:286:24:289 | [post] this access | UseUseExplosion.cs:24:2953:24:2958 | this access | | UseUseExplosion.cs:24:286:24:289 | access to property Prop | UseUseExplosion.cs:24:303:24:306 | access to property Prop | -| UseUseExplosion.cs:24:286:24:289 | access to property Prop | UseUseExplosion.cs:24:2953:24:2958 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:286:24:289 | access to property Prop | UseUseExplosion.cs:24:2953:24:2959 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:286:24:289 | this access | UseUseExplosion.cs:24:303:24:306 | this access | | UseUseExplosion.cs:24:286:24:289 | this access | UseUseExplosion.cs:24:2953:24:2958 | this access | | UseUseExplosion.cs:24:303:24:306 | [post] this access | UseUseExplosion.cs:24:320:24:323 | this access | | UseUseExplosion.cs:24:303:24:306 | [post] this access | UseUseExplosion.cs:24:2938:24:2943 | this access | | UseUseExplosion.cs:24:303:24:306 | access to property Prop | UseUseExplosion.cs:24:320:24:323 | access to property Prop | -| UseUseExplosion.cs:24:303:24:306 | access to property Prop | UseUseExplosion.cs:24:2938:24:2943 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:303:24:306 | access to property Prop | UseUseExplosion.cs:24:2938:24:2944 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:303:24:306 | this access | UseUseExplosion.cs:24:320:24:323 | this access | | UseUseExplosion.cs:24:303:24:306 | this access | UseUseExplosion.cs:24:2938:24:2943 | this access | | UseUseExplosion.cs:24:320:24:323 | [post] this access | UseUseExplosion.cs:24:337:24:340 | this access | | UseUseExplosion.cs:24:320:24:323 | [post] this access | UseUseExplosion.cs:24:2923:24:2928 | this access | | UseUseExplosion.cs:24:320:24:323 | access to property Prop | UseUseExplosion.cs:24:337:24:340 | access to property Prop | -| UseUseExplosion.cs:24:320:24:323 | access to property Prop | UseUseExplosion.cs:24:2923:24:2928 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:320:24:323 | access to property Prop | UseUseExplosion.cs:24:2923:24:2929 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:320:24:323 | this access | UseUseExplosion.cs:24:337:24:340 | this access | | UseUseExplosion.cs:24:320:24:323 | this access | UseUseExplosion.cs:24:2923:24:2928 | this access | | UseUseExplosion.cs:24:337:24:340 | [post] this access | UseUseExplosion.cs:24:354:24:357 | this access | | UseUseExplosion.cs:24:337:24:340 | [post] this access | UseUseExplosion.cs:24:2908:24:2913 | this access | | UseUseExplosion.cs:24:337:24:340 | access to property Prop | UseUseExplosion.cs:24:354:24:357 | access to property Prop | -| UseUseExplosion.cs:24:337:24:340 | access to property Prop | UseUseExplosion.cs:24:2908:24:2913 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:337:24:340 | access to property Prop | UseUseExplosion.cs:24:2908:24:2914 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:337:24:340 | this access | UseUseExplosion.cs:24:354:24:357 | this access | | UseUseExplosion.cs:24:337:24:340 | this access | UseUseExplosion.cs:24:2908:24:2913 | this access | | UseUseExplosion.cs:24:354:24:357 | [post] this access | UseUseExplosion.cs:24:371:24:374 | this access | | UseUseExplosion.cs:24:354:24:357 | [post] this access | UseUseExplosion.cs:24:2893:24:2898 | this access | | UseUseExplosion.cs:24:354:24:357 | access to property Prop | UseUseExplosion.cs:24:371:24:374 | access to property Prop | -| UseUseExplosion.cs:24:354:24:357 | access to property Prop | UseUseExplosion.cs:24:2893:24:2898 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:354:24:357 | access to property Prop | UseUseExplosion.cs:24:2893:24:2899 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:354:24:357 | this access | UseUseExplosion.cs:24:371:24:374 | this access | | UseUseExplosion.cs:24:354:24:357 | this access | UseUseExplosion.cs:24:2893:24:2898 | this access | | UseUseExplosion.cs:24:371:24:374 | [post] this access | UseUseExplosion.cs:24:388:24:391 | this access | | UseUseExplosion.cs:24:371:24:374 | [post] this access | UseUseExplosion.cs:24:2878:24:2883 | this access | | UseUseExplosion.cs:24:371:24:374 | access to property Prop | UseUseExplosion.cs:24:388:24:391 | access to property Prop | -| UseUseExplosion.cs:24:371:24:374 | access to property Prop | UseUseExplosion.cs:24:2878:24:2883 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:371:24:374 | access to property Prop | UseUseExplosion.cs:24:2878:24:2884 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:371:24:374 | this access | UseUseExplosion.cs:24:388:24:391 | this access | | UseUseExplosion.cs:24:371:24:374 | this access | UseUseExplosion.cs:24:2878:24:2883 | this access | | UseUseExplosion.cs:24:388:24:391 | [post] this access | UseUseExplosion.cs:24:405:24:408 | this access | | UseUseExplosion.cs:24:388:24:391 | [post] this access | UseUseExplosion.cs:24:2863:24:2868 | this access | | UseUseExplosion.cs:24:388:24:391 | access to property Prop | UseUseExplosion.cs:24:405:24:408 | access to property Prop | -| UseUseExplosion.cs:24:388:24:391 | access to property Prop | UseUseExplosion.cs:24:2863:24:2868 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:388:24:391 | access to property Prop | UseUseExplosion.cs:24:2863:24:2869 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:388:24:391 | this access | UseUseExplosion.cs:24:405:24:408 | this access | | UseUseExplosion.cs:24:388:24:391 | this access | UseUseExplosion.cs:24:2863:24:2868 | this access | | UseUseExplosion.cs:24:405:24:408 | [post] this access | UseUseExplosion.cs:24:422:24:425 | this access | | UseUseExplosion.cs:24:405:24:408 | [post] this access | UseUseExplosion.cs:24:2848:24:2853 | this access | | UseUseExplosion.cs:24:405:24:408 | access to property Prop | UseUseExplosion.cs:24:422:24:425 | access to property Prop | -| UseUseExplosion.cs:24:405:24:408 | access to property Prop | UseUseExplosion.cs:24:2848:24:2853 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:405:24:408 | access to property Prop | UseUseExplosion.cs:24:2848:24:2854 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:405:24:408 | this access | UseUseExplosion.cs:24:422:24:425 | this access | | UseUseExplosion.cs:24:405:24:408 | this access | UseUseExplosion.cs:24:2848:24:2853 | this access | | UseUseExplosion.cs:24:422:24:425 | [post] this access | UseUseExplosion.cs:24:439:24:442 | this access | | UseUseExplosion.cs:24:422:24:425 | [post] this access | UseUseExplosion.cs:24:2833:24:2838 | this access | | UseUseExplosion.cs:24:422:24:425 | access to property Prop | UseUseExplosion.cs:24:439:24:442 | access to property Prop | -| UseUseExplosion.cs:24:422:24:425 | access to property Prop | UseUseExplosion.cs:24:2833:24:2838 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:422:24:425 | access to property Prop | UseUseExplosion.cs:24:2833:24:2839 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:422:24:425 | this access | UseUseExplosion.cs:24:439:24:442 | this access | | UseUseExplosion.cs:24:422:24:425 | this access | UseUseExplosion.cs:24:2833:24:2838 | this access | | UseUseExplosion.cs:24:439:24:442 | [post] this access | UseUseExplosion.cs:24:456:24:459 | this access | | UseUseExplosion.cs:24:439:24:442 | [post] this access | UseUseExplosion.cs:24:2818:24:2823 | this access | | UseUseExplosion.cs:24:439:24:442 | access to property Prop | UseUseExplosion.cs:24:456:24:459 | access to property Prop | -| UseUseExplosion.cs:24:439:24:442 | access to property Prop | UseUseExplosion.cs:24:2818:24:2823 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:439:24:442 | access to property Prop | UseUseExplosion.cs:24:2818:24:2824 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:439:24:442 | this access | UseUseExplosion.cs:24:456:24:459 | this access | | UseUseExplosion.cs:24:439:24:442 | this access | UseUseExplosion.cs:24:2818:24:2823 | this access | | UseUseExplosion.cs:24:456:24:459 | [post] this access | UseUseExplosion.cs:24:473:24:476 | this access | | UseUseExplosion.cs:24:456:24:459 | [post] this access | UseUseExplosion.cs:24:2803:24:2808 | this access | | UseUseExplosion.cs:24:456:24:459 | access to property Prop | UseUseExplosion.cs:24:473:24:476 | access to property Prop | -| UseUseExplosion.cs:24:456:24:459 | access to property Prop | UseUseExplosion.cs:24:2803:24:2808 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:456:24:459 | access to property Prop | UseUseExplosion.cs:24:2803:24:2809 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:456:24:459 | this access | UseUseExplosion.cs:24:473:24:476 | this access | | UseUseExplosion.cs:24:456:24:459 | this access | UseUseExplosion.cs:24:2803:24:2808 | this access | | UseUseExplosion.cs:24:473:24:476 | [post] this access | UseUseExplosion.cs:24:490:24:493 | this access | | UseUseExplosion.cs:24:473:24:476 | [post] this access | UseUseExplosion.cs:24:2788:24:2793 | this access | | UseUseExplosion.cs:24:473:24:476 | access to property Prop | UseUseExplosion.cs:24:490:24:493 | access to property Prop | -| UseUseExplosion.cs:24:473:24:476 | access to property Prop | UseUseExplosion.cs:24:2788:24:2793 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:473:24:476 | access to property Prop | UseUseExplosion.cs:24:2788:24:2794 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:473:24:476 | this access | UseUseExplosion.cs:24:490:24:493 | this access | | UseUseExplosion.cs:24:473:24:476 | this access | UseUseExplosion.cs:24:2788:24:2793 | this access | | UseUseExplosion.cs:24:490:24:493 | [post] this access | UseUseExplosion.cs:24:507:24:510 | this access | | UseUseExplosion.cs:24:490:24:493 | [post] this access | UseUseExplosion.cs:24:2773:24:2778 | this access | | UseUseExplosion.cs:24:490:24:493 | access to property Prop | UseUseExplosion.cs:24:507:24:510 | access to property Prop | -| UseUseExplosion.cs:24:490:24:493 | access to property Prop | UseUseExplosion.cs:24:2773:24:2778 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:490:24:493 | access to property Prop | UseUseExplosion.cs:24:2773:24:2779 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:490:24:493 | this access | UseUseExplosion.cs:24:507:24:510 | this access | | UseUseExplosion.cs:24:490:24:493 | this access | UseUseExplosion.cs:24:2773:24:2778 | this access | | UseUseExplosion.cs:24:507:24:510 | [post] this access | UseUseExplosion.cs:24:524:24:527 | this access | | UseUseExplosion.cs:24:507:24:510 | [post] this access | UseUseExplosion.cs:24:2758:24:2763 | this access | | UseUseExplosion.cs:24:507:24:510 | access to property Prop | UseUseExplosion.cs:24:524:24:527 | access to property Prop | -| UseUseExplosion.cs:24:507:24:510 | access to property Prop | UseUseExplosion.cs:24:2758:24:2763 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:507:24:510 | access to property Prop | UseUseExplosion.cs:24:2758:24:2764 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:507:24:510 | this access | UseUseExplosion.cs:24:524:24:527 | this access | | UseUseExplosion.cs:24:507:24:510 | this access | UseUseExplosion.cs:24:2758:24:2763 | this access | | UseUseExplosion.cs:24:524:24:527 | [post] this access | UseUseExplosion.cs:24:541:24:544 | this access | | UseUseExplosion.cs:24:524:24:527 | [post] this access | UseUseExplosion.cs:24:2743:24:2748 | this access | | UseUseExplosion.cs:24:524:24:527 | access to property Prop | UseUseExplosion.cs:24:541:24:544 | access to property Prop | -| UseUseExplosion.cs:24:524:24:527 | access to property Prop | UseUseExplosion.cs:24:2743:24:2748 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:524:24:527 | access to property Prop | UseUseExplosion.cs:24:2743:24:2749 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:524:24:527 | this access | UseUseExplosion.cs:24:541:24:544 | this access | | UseUseExplosion.cs:24:524:24:527 | this access | UseUseExplosion.cs:24:2743:24:2748 | this access | | UseUseExplosion.cs:24:541:24:544 | [post] this access | UseUseExplosion.cs:24:558:24:561 | this access | | UseUseExplosion.cs:24:541:24:544 | [post] this access | UseUseExplosion.cs:24:2728:24:2733 | this access | | UseUseExplosion.cs:24:541:24:544 | access to property Prop | UseUseExplosion.cs:24:558:24:561 | access to property Prop | -| UseUseExplosion.cs:24:541:24:544 | access to property Prop | UseUseExplosion.cs:24:2728:24:2733 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:541:24:544 | access to property Prop | UseUseExplosion.cs:24:2728:24:2734 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:541:24:544 | this access | UseUseExplosion.cs:24:558:24:561 | this access | | UseUseExplosion.cs:24:541:24:544 | this access | UseUseExplosion.cs:24:2728:24:2733 | this access | | UseUseExplosion.cs:24:558:24:561 | [post] this access | UseUseExplosion.cs:24:575:24:578 | this access | | UseUseExplosion.cs:24:558:24:561 | [post] this access | UseUseExplosion.cs:24:2713:24:2718 | this access | | UseUseExplosion.cs:24:558:24:561 | access to property Prop | UseUseExplosion.cs:24:575:24:578 | access to property Prop | -| UseUseExplosion.cs:24:558:24:561 | access to property Prop | UseUseExplosion.cs:24:2713:24:2718 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:558:24:561 | access to property Prop | UseUseExplosion.cs:24:2713:24:2719 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:558:24:561 | this access | UseUseExplosion.cs:24:575:24:578 | this access | | UseUseExplosion.cs:24:558:24:561 | this access | UseUseExplosion.cs:24:2713:24:2718 | this access | | UseUseExplosion.cs:24:575:24:578 | [post] this access | UseUseExplosion.cs:24:592:24:595 | this access | | UseUseExplosion.cs:24:575:24:578 | [post] this access | UseUseExplosion.cs:24:2698:24:2703 | this access | | UseUseExplosion.cs:24:575:24:578 | access to property Prop | UseUseExplosion.cs:24:592:24:595 | access to property Prop | -| UseUseExplosion.cs:24:575:24:578 | access to property Prop | UseUseExplosion.cs:24:2698:24:2703 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:575:24:578 | access to property Prop | UseUseExplosion.cs:24:2698:24:2704 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:575:24:578 | this access | UseUseExplosion.cs:24:592:24:595 | this access | | UseUseExplosion.cs:24:575:24:578 | this access | UseUseExplosion.cs:24:2698:24:2703 | this access | | UseUseExplosion.cs:24:592:24:595 | [post] this access | UseUseExplosion.cs:24:609:24:612 | this access | | UseUseExplosion.cs:24:592:24:595 | [post] this access | UseUseExplosion.cs:24:2683:24:2688 | this access | | UseUseExplosion.cs:24:592:24:595 | access to property Prop | UseUseExplosion.cs:24:609:24:612 | access to property Prop | -| UseUseExplosion.cs:24:592:24:595 | access to property Prop | UseUseExplosion.cs:24:2683:24:2688 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:592:24:595 | access to property Prop | UseUseExplosion.cs:24:2683:24:2689 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:592:24:595 | this access | UseUseExplosion.cs:24:609:24:612 | this access | | UseUseExplosion.cs:24:592:24:595 | this access | UseUseExplosion.cs:24:2683:24:2688 | this access | | UseUseExplosion.cs:24:609:24:612 | [post] this access | UseUseExplosion.cs:24:626:24:629 | this access | | UseUseExplosion.cs:24:609:24:612 | [post] this access | UseUseExplosion.cs:24:2668:24:2673 | this access | | UseUseExplosion.cs:24:609:24:612 | access to property Prop | UseUseExplosion.cs:24:626:24:629 | access to property Prop | -| UseUseExplosion.cs:24:609:24:612 | access to property Prop | UseUseExplosion.cs:24:2668:24:2673 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:609:24:612 | access to property Prop | UseUseExplosion.cs:24:2668:24:2674 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:609:24:612 | this access | UseUseExplosion.cs:24:626:24:629 | this access | | UseUseExplosion.cs:24:609:24:612 | this access | UseUseExplosion.cs:24:2668:24:2673 | this access | | UseUseExplosion.cs:24:626:24:629 | [post] this access | UseUseExplosion.cs:24:643:24:646 | this access | | UseUseExplosion.cs:24:626:24:629 | [post] this access | UseUseExplosion.cs:24:2653:24:2658 | this access | | UseUseExplosion.cs:24:626:24:629 | access to property Prop | UseUseExplosion.cs:24:643:24:646 | access to property Prop | -| UseUseExplosion.cs:24:626:24:629 | access to property Prop | UseUseExplosion.cs:24:2653:24:2658 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:626:24:629 | access to property Prop | UseUseExplosion.cs:24:2653:24:2659 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:626:24:629 | this access | UseUseExplosion.cs:24:643:24:646 | this access | | UseUseExplosion.cs:24:626:24:629 | this access | UseUseExplosion.cs:24:2653:24:2658 | this access | | UseUseExplosion.cs:24:643:24:646 | [post] this access | UseUseExplosion.cs:24:660:24:663 | this access | | UseUseExplosion.cs:24:643:24:646 | [post] this access | UseUseExplosion.cs:24:2638:24:2643 | this access | | UseUseExplosion.cs:24:643:24:646 | access to property Prop | UseUseExplosion.cs:24:660:24:663 | access to property Prop | -| UseUseExplosion.cs:24:643:24:646 | access to property Prop | UseUseExplosion.cs:24:2638:24:2643 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:643:24:646 | access to property Prop | UseUseExplosion.cs:24:2638:24:2644 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:643:24:646 | this access | UseUseExplosion.cs:24:660:24:663 | this access | | UseUseExplosion.cs:24:643:24:646 | this access | UseUseExplosion.cs:24:2638:24:2643 | this access | | UseUseExplosion.cs:24:660:24:663 | [post] this access | UseUseExplosion.cs:24:677:24:680 | this access | | UseUseExplosion.cs:24:660:24:663 | [post] this access | UseUseExplosion.cs:24:2623:24:2628 | this access | | UseUseExplosion.cs:24:660:24:663 | access to property Prop | UseUseExplosion.cs:24:677:24:680 | access to property Prop | -| UseUseExplosion.cs:24:660:24:663 | access to property Prop | UseUseExplosion.cs:24:2623:24:2628 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:660:24:663 | access to property Prop | UseUseExplosion.cs:24:2623:24:2629 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:660:24:663 | this access | UseUseExplosion.cs:24:677:24:680 | this access | | UseUseExplosion.cs:24:660:24:663 | this access | UseUseExplosion.cs:24:2623:24:2628 | this access | | UseUseExplosion.cs:24:677:24:680 | [post] this access | UseUseExplosion.cs:24:694:24:697 | this access | | UseUseExplosion.cs:24:677:24:680 | [post] this access | UseUseExplosion.cs:24:2608:24:2613 | this access | | UseUseExplosion.cs:24:677:24:680 | access to property Prop | UseUseExplosion.cs:24:694:24:697 | access to property Prop | -| UseUseExplosion.cs:24:677:24:680 | access to property Prop | UseUseExplosion.cs:24:2608:24:2613 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:677:24:680 | access to property Prop | UseUseExplosion.cs:24:2608:24:2614 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:677:24:680 | this access | UseUseExplosion.cs:24:694:24:697 | this access | | UseUseExplosion.cs:24:677:24:680 | this access | UseUseExplosion.cs:24:2608:24:2613 | this access | | UseUseExplosion.cs:24:694:24:697 | [post] this access | UseUseExplosion.cs:24:711:24:714 | this access | | UseUseExplosion.cs:24:694:24:697 | [post] this access | UseUseExplosion.cs:24:2593:24:2598 | this access | | UseUseExplosion.cs:24:694:24:697 | access to property Prop | UseUseExplosion.cs:24:711:24:714 | access to property Prop | -| UseUseExplosion.cs:24:694:24:697 | access to property Prop | UseUseExplosion.cs:24:2593:24:2598 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:694:24:697 | access to property Prop | UseUseExplosion.cs:24:2593:24:2599 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:694:24:697 | this access | UseUseExplosion.cs:24:711:24:714 | this access | | UseUseExplosion.cs:24:694:24:697 | this access | UseUseExplosion.cs:24:2593:24:2598 | this access | | UseUseExplosion.cs:24:711:24:714 | [post] this access | UseUseExplosion.cs:24:728:24:731 | this access | | UseUseExplosion.cs:24:711:24:714 | [post] this access | UseUseExplosion.cs:24:2578:24:2583 | this access | | UseUseExplosion.cs:24:711:24:714 | access to property Prop | UseUseExplosion.cs:24:728:24:731 | access to property Prop | -| UseUseExplosion.cs:24:711:24:714 | access to property Prop | UseUseExplosion.cs:24:2578:24:2583 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:711:24:714 | access to property Prop | UseUseExplosion.cs:24:2578:24:2584 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:711:24:714 | this access | UseUseExplosion.cs:24:728:24:731 | this access | | UseUseExplosion.cs:24:711:24:714 | this access | UseUseExplosion.cs:24:2578:24:2583 | this access | | UseUseExplosion.cs:24:728:24:731 | [post] this access | UseUseExplosion.cs:24:745:24:748 | this access | | UseUseExplosion.cs:24:728:24:731 | [post] this access | UseUseExplosion.cs:24:2563:24:2568 | this access | | UseUseExplosion.cs:24:728:24:731 | access to property Prop | UseUseExplosion.cs:24:745:24:748 | access to property Prop | -| UseUseExplosion.cs:24:728:24:731 | access to property Prop | UseUseExplosion.cs:24:2563:24:2568 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:728:24:731 | access to property Prop | UseUseExplosion.cs:24:2563:24:2569 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:728:24:731 | this access | UseUseExplosion.cs:24:745:24:748 | this access | | UseUseExplosion.cs:24:728:24:731 | this access | UseUseExplosion.cs:24:2563:24:2568 | this access | | UseUseExplosion.cs:24:745:24:748 | [post] this access | UseUseExplosion.cs:24:762:24:765 | this access | | UseUseExplosion.cs:24:745:24:748 | [post] this access | UseUseExplosion.cs:24:2548:24:2553 | this access | | UseUseExplosion.cs:24:745:24:748 | access to property Prop | UseUseExplosion.cs:24:762:24:765 | access to property Prop | -| UseUseExplosion.cs:24:745:24:748 | access to property Prop | UseUseExplosion.cs:24:2548:24:2553 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:745:24:748 | access to property Prop | UseUseExplosion.cs:24:2548:24:2554 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:745:24:748 | this access | UseUseExplosion.cs:24:762:24:765 | this access | | UseUseExplosion.cs:24:745:24:748 | this access | UseUseExplosion.cs:24:2548:24:2553 | this access | | UseUseExplosion.cs:24:762:24:765 | [post] this access | UseUseExplosion.cs:24:779:24:782 | this access | | UseUseExplosion.cs:24:762:24:765 | [post] this access | UseUseExplosion.cs:24:2533:24:2538 | this access | | UseUseExplosion.cs:24:762:24:765 | access to property Prop | UseUseExplosion.cs:24:779:24:782 | access to property Prop | -| UseUseExplosion.cs:24:762:24:765 | access to property Prop | UseUseExplosion.cs:24:2533:24:2538 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:762:24:765 | access to property Prop | UseUseExplosion.cs:24:2533:24:2539 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:762:24:765 | this access | UseUseExplosion.cs:24:779:24:782 | this access | | UseUseExplosion.cs:24:762:24:765 | this access | UseUseExplosion.cs:24:2533:24:2538 | this access | | UseUseExplosion.cs:24:779:24:782 | [post] this access | UseUseExplosion.cs:24:796:24:799 | this access | | UseUseExplosion.cs:24:779:24:782 | [post] this access | UseUseExplosion.cs:24:2518:24:2523 | this access | | UseUseExplosion.cs:24:779:24:782 | access to property Prop | UseUseExplosion.cs:24:796:24:799 | access to property Prop | -| UseUseExplosion.cs:24:779:24:782 | access to property Prop | UseUseExplosion.cs:24:2518:24:2523 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:779:24:782 | access to property Prop | UseUseExplosion.cs:24:2518:24:2524 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:779:24:782 | this access | UseUseExplosion.cs:24:796:24:799 | this access | | UseUseExplosion.cs:24:779:24:782 | this access | UseUseExplosion.cs:24:2518:24:2523 | this access | | UseUseExplosion.cs:24:796:24:799 | [post] this access | UseUseExplosion.cs:24:813:24:816 | this access | | UseUseExplosion.cs:24:796:24:799 | [post] this access | UseUseExplosion.cs:24:2503:24:2508 | this access | | UseUseExplosion.cs:24:796:24:799 | access to property Prop | UseUseExplosion.cs:24:813:24:816 | access to property Prop | -| UseUseExplosion.cs:24:796:24:799 | access to property Prop | UseUseExplosion.cs:24:2503:24:2508 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:796:24:799 | access to property Prop | UseUseExplosion.cs:24:2503:24:2509 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:796:24:799 | this access | UseUseExplosion.cs:24:813:24:816 | this access | | UseUseExplosion.cs:24:796:24:799 | this access | UseUseExplosion.cs:24:2503:24:2508 | this access | | UseUseExplosion.cs:24:813:24:816 | [post] this access | UseUseExplosion.cs:24:830:24:833 | this access | | UseUseExplosion.cs:24:813:24:816 | [post] this access | UseUseExplosion.cs:24:2488:24:2493 | this access | | UseUseExplosion.cs:24:813:24:816 | access to property Prop | UseUseExplosion.cs:24:830:24:833 | access to property Prop | -| UseUseExplosion.cs:24:813:24:816 | access to property Prop | UseUseExplosion.cs:24:2488:24:2493 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:813:24:816 | access to property Prop | UseUseExplosion.cs:24:2488:24:2494 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:813:24:816 | this access | UseUseExplosion.cs:24:830:24:833 | this access | | UseUseExplosion.cs:24:813:24:816 | this access | UseUseExplosion.cs:24:2488:24:2493 | this access | | UseUseExplosion.cs:24:830:24:833 | [post] this access | UseUseExplosion.cs:24:847:24:850 | this access | | UseUseExplosion.cs:24:830:24:833 | [post] this access | UseUseExplosion.cs:24:2473:24:2478 | this access | | UseUseExplosion.cs:24:830:24:833 | access to property Prop | UseUseExplosion.cs:24:847:24:850 | access to property Prop | -| UseUseExplosion.cs:24:830:24:833 | access to property Prop | UseUseExplosion.cs:24:2473:24:2478 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:830:24:833 | access to property Prop | UseUseExplosion.cs:24:2473:24:2479 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:830:24:833 | this access | UseUseExplosion.cs:24:847:24:850 | this access | | UseUseExplosion.cs:24:830:24:833 | this access | UseUseExplosion.cs:24:2473:24:2478 | this access | | UseUseExplosion.cs:24:847:24:850 | [post] this access | UseUseExplosion.cs:24:864:24:867 | this access | | UseUseExplosion.cs:24:847:24:850 | [post] this access | UseUseExplosion.cs:24:2458:24:2463 | this access | | UseUseExplosion.cs:24:847:24:850 | access to property Prop | UseUseExplosion.cs:24:864:24:867 | access to property Prop | -| UseUseExplosion.cs:24:847:24:850 | access to property Prop | UseUseExplosion.cs:24:2458:24:2463 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:847:24:850 | access to property Prop | UseUseExplosion.cs:24:2458:24:2464 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:847:24:850 | this access | UseUseExplosion.cs:24:864:24:867 | this access | | UseUseExplosion.cs:24:847:24:850 | this access | UseUseExplosion.cs:24:2458:24:2463 | this access | | UseUseExplosion.cs:24:864:24:867 | [post] this access | UseUseExplosion.cs:24:881:24:884 | this access | | UseUseExplosion.cs:24:864:24:867 | [post] this access | UseUseExplosion.cs:24:2443:24:2448 | this access | | UseUseExplosion.cs:24:864:24:867 | access to property Prop | UseUseExplosion.cs:24:881:24:884 | access to property Prop | -| UseUseExplosion.cs:24:864:24:867 | access to property Prop | UseUseExplosion.cs:24:2443:24:2448 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:864:24:867 | access to property Prop | UseUseExplosion.cs:24:2443:24:2449 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:864:24:867 | this access | UseUseExplosion.cs:24:881:24:884 | this access | | UseUseExplosion.cs:24:864:24:867 | this access | UseUseExplosion.cs:24:2443:24:2448 | this access | | UseUseExplosion.cs:24:881:24:884 | [post] this access | UseUseExplosion.cs:24:898:24:901 | this access | | UseUseExplosion.cs:24:881:24:884 | [post] this access | UseUseExplosion.cs:24:2428:24:2433 | this access | | UseUseExplosion.cs:24:881:24:884 | access to property Prop | UseUseExplosion.cs:24:898:24:901 | access to property Prop | -| UseUseExplosion.cs:24:881:24:884 | access to property Prop | UseUseExplosion.cs:24:2428:24:2433 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:881:24:884 | access to property Prop | UseUseExplosion.cs:24:2428:24:2434 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:881:24:884 | this access | UseUseExplosion.cs:24:898:24:901 | this access | | UseUseExplosion.cs:24:881:24:884 | this access | UseUseExplosion.cs:24:2428:24:2433 | this access | | UseUseExplosion.cs:24:898:24:901 | [post] this access | UseUseExplosion.cs:24:915:24:918 | this access | | UseUseExplosion.cs:24:898:24:901 | [post] this access | UseUseExplosion.cs:24:2413:24:2418 | this access | | UseUseExplosion.cs:24:898:24:901 | access to property Prop | UseUseExplosion.cs:24:915:24:918 | access to property Prop | -| UseUseExplosion.cs:24:898:24:901 | access to property Prop | UseUseExplosion.cs:24:2413:24:2418 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:898:24:901 | access to property Prop | UseUseExplosion.cs:24:2413:24:2419 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:898:24:901 | this access | UseUseExplosion.cs:24:915:24:918 | this access | | UseUseExplosion.cs:24:898:24:901 | this access | UseUseExplosion.cs:24:2413:24:2418 | this access | | UseUseExplosion.cs:24:915:24:918 | [post] this access | UseUseExplosion.cs:24:932:24:935 | this access | | UseUseExplosion.cs:24:915:24:918 | [post] this access | UseUseExplosion.cs:24:2398:24:2403 | this access | | UseUseExplosion.cs:24:915:24:918 | access to property Prop | UseUseExplosion.cs:24:932:24:935 | access to property Prop | -| UseUseExplosion.cs:24:915:24:918 | access to property Prop | UseUseExplosion.cs:24:2398:24:2403 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:915:24:918 | access to property Prop | UseUseExplosion.cs:24:2398:24:2404 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:915:24:918 | this access | UseUseExplosion.cs:24:932:24:935 | this access | | UseUseExplosion.cs:24:915:24:918 | this access | UseUseExplosion.cs:24:2398:24:2403 | this access | | UseUseExplosion.cs:24:932:24:935 | [post] this access | UseUseExplosion.cs:24:949:24:952 | this access | | UseUseExplosion.cs:24:932:24:935 | [post] this access | UseUseExplosion.cs:24:2383:24:2388 | this access | | UseUseExplosion.cs:24:932:24:935 | access to property Prop | UseUseExplosion.cs:24:949:24:952 | access to property Prop | -| UseUseExplosion.cs:24:932:24:935 | access to property Prop | UseUseExplosion.cs:24:2383:24:2388 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:932:24:935 | access to property Prop | UseUseExplosion.cs:24:2383:24:2389 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:932:24:935 | this access | UseUseExplosion.cs:24:949:24:952 | this access | | UseUseExplosion.cs:24:932:24:935 | this access | UseUseExplosion.cs:24:2383:24:2388 | this access | | UseUseExplosion.cs:24:949:24:952 | [post] this access | UseUseExplosion.cs:24:966:24:969 | this access | | UseUseExplosion.cs:24:949:24:952 | [post] this access | UseUseExplosion.cs:24:2368:24:2373 | this access | | UseUseExplosion.cs:24:949:24:952 | access to property Prop | UseUseExplosion.cs:24:966:24:969 | access to property Prop | -| UseUseExplosion.cs:24:949:24:952 | access to property Prop | UseUseExplosion.cs:24:2368:24:2373 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:949:24:952 | access to property Prop | UseUseExplosion.cs:24:2368:24:2374 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:949:24:952 | this access | UseUseExplosion.cs:24:966:24:969 | this access | | UseUseExplosion.cs:24:949:24:952 | this access | UseUseExplosion.cs:24:2368:24:2373 | this access | | UseUseExplosion.cs:24:966:24:969 | [post] this access | UseUseExplosion.cs:24:983:24:986 | this access | | UseUseExplosion.cs:24:966:24:969 | [post] this access | UseUseExplosion.cs:24:2353:24:2358 | this access | | UseUseExplosion.cs:24:966:24:969 | access to property Prop | UseUseExplosion.cs:24:983:24:986 | access to property Prop | -| UseUseExplosion.cs:24:966:24:969 | access to property Prop | UseUseExplosion.cs:24:2353:24:2358 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:966:24:969 | access to property Prop | UseUseExplosion.cs:24:2353:24:2359 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:966:24:969 | this access | UseUseExplosion.cs:24:983:24:986 | this access | | UseUseExplosion.cs:24:966:24:969 | this access | UseUseExplosion.cs:24:2353:24:2358 | this access | | UseUseExplosion.cs:24:983:24:986 | [post] this access | UseUseExplosion.cs:24:1000:24:1003 | this access | | UseUseExplosion.cs:24:983:24:986 | [post] this access | UseUseExplosion.cs:24:2338:24:2343 | this access | | UseUseExplosion.cs:24:983:24:986 | access to property Prop | UseUseExplosion.cs:24:1000:24:1003 | access to property Prop | -| UseUseExplosion.cs:24:983:24:986 | access to property Prop | UseUseExplosion.cs:24:2338:24:2343 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:983:24:986 | access to property Prop | UseUseExplosion.cs:24:2338:24:2344 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:983:24:986 | this access | UseUseExplosion.cs:24:1000:24:1003 | this access | | UseUseExplosion.cs:24:983:24:986 | this access | UseUseExplosion.cs:24:2338:24:2343 | this access | | UseUseExplosion.cs:24:1000:24:1003 | [post] this access | UseUseExplosion.cs:24:1017:24:1020 | this access | | UseUseExplosion.cs:24:1000:24:1003 | [post] this access | UseUseExplosion.cs:24:2323:24:2328 | this access | | UseUseExplosion.cs:24:1000:24:1003 | access to property Prop | UseUseExplosion.cs:24:1017:24:1020 | access to property Prop | -| UseUseExplosion.cs:24:1000:24:1003 | access to property Prop | UseUseExplosion.cs:24:2323:24:2328 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1000:24:1003 | access to property Prop | UseUseExplosion.cs:24:2323:24:2329 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1000:24:1003 | this access | UseUseExplosion.cs:24:1017:24:1020 | this access | | UseUseExplosion.cs:24:1000:24:1003 | this access | UseUseExplosion.cs:24:2323:24:2328 | this access | | UseUseExplosion.cs:24:1017:24:1020 | [post] this access | UseUseExplosion.cs:24:1034:24:1037 | this access | | UseUseExplosion.cs:24:1017:24:1020 | [post] this access | UseUseExplosion.cs:24:2308:24:2313 | this access | | UseUseExplosion.cs:24:1017:24:1020 | access to property Prop | UseUseExplosion.cs:24:1034:24:1037 | access to property Prop | -| UseUseExplosion.cs:24:1017:24:1020 | access to property Prop | UseUseExplosion.cs:24:2308:24:2313 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1017:24:1020 | access to property Prop | UseUseExplosion.cs:24:2308:24:2314 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1017:24:1020 | this access | UseUseExplosion.cs:24:1034:24:1037 | this access | | UseUseExplosion.cs:24:1017:24:1020 | this access | UseUseExplosion.cs:24:2308:24:2313 | this access | | UseUseExplosion.cs:24:1034:24:1037 | [post] this access | UseUseExplosion.cs:24:1051:24:1054 | this access | | UseUseExplosion.cs:24:1034:24:1037 | [post] this access | UseUseExplosion.cs:24:2293:24:2298 | this access | | UseUseExplosion.cs:24:1034:24:1037 | access to property Prop | UseUseExplosion.cs:24:1051:24:1054 | access to property Prop | -| UseUseExplosion.cs:24:1034:24:1037 | access to property Prop | UseUseExplosion.cs:24:2293:24:2298 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1034:24:1037 | access to property Prop | UseUseExplosion.cs:24:2293:24:2299 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1034:24:1037 | this access | UseUseExplosion.cs:24:1051:24:1054 | this access | | UseUseExplosion.cs:24:1034:24:1037 | this access | UseUseExplosion.cs:24:2293:24:2298 | this access | | UseUseExplosion.cs:24:1051:24:1054 | [post] this access | UseUseExplosion.cs:24:1068:24:1071 | this access | | UseUseExplosion.cs:24:1051:24:1054 | [post] this access | UseUseExplosion.cs:24:2278:24:2283 | this access | | UseUseExplosion.cs:24:1051:24:1054 | access to property Prop | UseUseExplosion.cs:24:1068:24:1071 | access to property Prop | -| UseUseExplosion.cs:24:1051:24:1054 | access to property Prop | UseUseExplosion.cs:24:2278:24:2283 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1051:24:1054 | access to property Prop | UseUseExplosion.cs:24:2278:24:2284 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1051:24:1054 | this access | UseUseExplosion.cs:24:1068:24:1071 | this access | | UseUseExplosion.cs:24:1051:24:1054 | this access | UseUseExplosion.cs:24:2278:24:2283 | this access | | UseUseExplosion.cs:24:1068:24:1071 | [post] this access | UseUseExplosion.cs:24:1085:24:1088 | this access | | UseUseExplosion.cs:24:1068:24:1071 | [post] this access | UseUseExplosion.cs:24:2263:24:2268 | this access | | UseUseExplosion.cs:24:1068:24:1071 | access to property Prop | UseUseExplosion.cs:24:1085:24:1088 | access to property Prop | -| UseUseExplosion.cs:24:1068:24:1071 | access to property Prop | UseUseExplosion.cs:24:2263:24:2268 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1068:24:1071 | access to property Prop | UseUseExplosion.cs:24:2263:24:2269 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1068:24:1071 | this access | UseUseExplosion.cs:24:1085:24:1088 | this access | | UseUseExplosion.cs:24:1068:24:1071 | this access | UseUseExplosion.cs:24:2263:24:2268 | this access | | UseUseExplosion.cs:24:1085:24:1088 | [post] this access | UseUseExplosion.cs:24:1102:24:1105 | this access | | UseUseExplosion.cs:24:1085:24:1088 | [post] this access | UseUseExplosion.cs:24:2248:24:2253 | this access | | UseUseExplosion.cs:24:1085:24:1088 | access to property Prop | UseUseExplosion.cs:24:1102:24:1105 | access to property Prop | -| UseUseExplosion.cs:24:1085:24:1088 | access to property Prop | UseUseExplosion.cs:24:2248:24:2253 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1085:24:1088 | access to property Prop | UseUseExplosion.cs:24:2248:24:2254 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1085:24:1088 | this access | UseUseExplosion.cs:24:1102:24:1105 | this access | | UseUseExplosion.cs:24:1085:24:1088 | this access | UseUseExplosion.cs:24:2248:24:2253 | this access | | UseUseExplosion.cs:24:1102:24:1105 | [post] this access | UseUseExplosion.cs:24:1119:24:1122 | this access | | UseUseExplosion.cs:24:1102:24:1105 | [post] this access | UseUseExplosion.cs:24:2233:24:2238 | this access | | UseUseExplosion.cs:24:1102:24:1105 | access to property Prop | UseUseExplosion.cs:24:1119:24:1122 | access to property Prop | -| UseUseExplosion.cs:24:1102:24:1105 | access to property Prop | UseUseExplosion.cs:24:2233:24:2238 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1102:24:1105 | access to property Prop | UseUseExplosion.cs:24:2233:24:2239 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1102:24:1105 | this access | UseUseExplosion.cs:24:1119:24:1122 | this access | | UseUseExplosion.cs:24:1102:24:1105 | this access | UseUseExplosion.cs:24:2233:24:2238 | this access | | UseUseExplosion.cs:24:1119:24:1122 | [post] this access | UseUseExplosion.cs:24:1136:24:1139 | this access | | UseUseExplosion.cs:24:1119:24:1122 | [post] this access | UseUseExplosion.cs:24:2218:24:2223 | this access | | UseUseExplosion.cs:24:1119:24:1122 | access to property Prop | UseUseExplosion.cs:24:1136:24:1139 | access to property Prop | -| UseUseExplosion.cs:24:1119:24:1122 | access to property Prop | UseUseExplosion.cs:24:2218:24:2223 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1119:24:1122 | access to property Prop | UseUseExplosion.cs:24:2218:24:2224 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1119:24:1122 | this access | UseUseExplosion.cs:24:1136:24:1139 | this access | | UseUseExplosion.cs:24:1119:24:1122 | this access | UseUseExplosion.cs:24:2218:24:2223 | this access | | UseUseExplosion.cs:24:1136:24:1139 | [post] this access | UseUseExplosion.cs:24:1153:24:1156 | this access | | UseUseExplosion.cs:24:1136:24:1139 | [post] this access | UseUseExplosion.cs:24:2203:24:2208 | this access | | UseUseExplosion.cs:24:1136:24:1139 | access to property Prop | UseUseExplosion.cs:24:1153:24:1156 | access to property Prop | -| UseUseExplosion.cs:24:1136:24:1139 | access to property Prop | UseUseExplosion.cs:24:2203:24:2208 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1136:24:1139 | access to property Prop | UseUseExplosion.cs:24:2203:24:2209 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1136:24:1139 | this access | UseUseExplosion.cs:24:1153:24:1156 | this access | | UseUseExplosion.cs:24:1136:24:1139 | this access | UseUseExplosion.cs:24:2203:24:2208 | this access | | UseUseExplosion.cs:24:1153:24:1156 | [post] this access | UseUseExplosion.cs:24:1170:24:1173 | this access | | UseUseExplosion.cs:24:1153:24:1156 | [post] this access | UseUseExplosion.cs:24:2188:24:2193 | this access | | UseUseExplosion.cs:24:1153:24:1156 | access to property Prop | UseUseExplosion.cs:24:1170:24:1173 | access to property Prop | -| UseUseExplosion.cs:24:1153:24:1156 | access to property Prop | UseUseExplosion.cs:24:2188:24:2193 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1153:24:1156 | access to property Prop | UseUseExplosion.cs:24:2188:24:2194 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1153:24:1156 | this access | UseUseExplosion.cs:24:1170:24:1173 | this access | | UseUseExplosion.cs:24:1153:24:1156 | this access | UseUseExplosion.cs:24:2188:24:2193 | this access | | UseUseExplosion.cs:24:1170:24:1173 | [post] this access | UseUseExplosion.cs:24:1187:24:1190 | this access | | UseUseExplosion.cs:24:1170:24:1173 | [post] this access | UseUseExplosion.cs:24:2173:24:2178 | this access | | UseUseExplosion.cs:24:1170:24:1173 | access to property Prop | UseUseExplosion.cs:24:1187:24:1190 | access to property Prop | -| UseUseExplosion.cs:24:1170:24:1173 | access to property Prop | UseUseExplosion.cs:24:2173:24:2178 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1170:24:1173 | access to property Prop | UseUseExplosion.cs:24:2173:24:2179 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1170:24:1173 | this access | UseUseExplosion.cs:24:1187:24:1190 | this access | | UseUseExplosion.cs:24:1170:24:1173 | this access | UseUseExplosion.cs:24:2173:24:2178 | this access | | UseUseExplosion.cs:24:1187:24:1190 | [post] this access | UseUseExplosion.cs:24:1204:24:1207 | this access | | UseUseExplosion.cs:24:1187:24:1190 | [post] this access | UseUseExplosion.cs:24:2158:24:2163 | this access | | UseUseExplosion.cs:24:1187:24:1190 | access to property Prop | UseUseExplosion.cs:24:1204:24:1207 | access to property Prop | -| UseUseExplosion.cs:24:1187:24:1190 | access to property Prop | UseUseExplosion.cs:24:2158:24:2163 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1187:24:1190 | access to property Prop | UseUseExplosion.cs:24:2158:24:2164 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1187:24:1190 | this access | UseUseExplosion.cs:24:1204:24:1207 | this access | | UseUseExplosion.cs:24:1187:24:1190 | this access | UseUseExplosion.cs:24:2158:24:2163 | this access | | UseUseExplosion.cs:24:1204:24:1207 | [post] this access | UseUseExplosion.cs:24:1221:24:1224 | this access | | UseUseExplosion.cs:24:1204:24:1207 | [post] this access | UseUseExplosion.cs:24:2143:24:2148 | this access | | UseUseExplosion.cs:24:1204:24:1207 | access to property Prop | UseUseExplosion.cs:24:1221:24:1224 | access to property Prop | -| UseUseExplosion.cs:24:1204:24:1207 | access to property Prop | UseUseExplosion.cs:24:2143:24:2148 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1204:24:1207 | access to property Prop | UseUseExplosion.cs:24:2143:24:2149 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1204:24:1207 | this access | UseUseExplosion.cs:24:1221:24:1224 | this access | | UseUseExplosion.cs:24:1204:24:1207 | this access | UseUseExplosion.cs:24:2143:24:2148 | this access | | UseUseExplosion.cs:24:1221:24:1224 | [post] this access | UseUseExplosion.cs:24:1238:24:1241 | this access | | UseUseExplosion.cs:24:1221:24:1224 | [post] this access | UseUseExplosion.cs:24:2128:24:2133 | this access | | UseUseExplosion.cs:24:1221:24:1224 | access to property Prop | UseUseExplosion.cs:24:1238:24:1241 | access to property Prop | -| UseUseExplosion.cs:24:1221:24:1224 | access to property Prop | UseUseExplosion.cs:24:2128:24:2133 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1221:24:1224 | access to property Prop | UseUseExplosion.cs:24:2128:24:2134 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1221:24:1224 | this access | UseUseExplosion.cs:24:1238:24:1241 | this access | | UseUseExplosion.cs:24:1221:24:1224 | this access | UseUseExplosion.cs:24:2128:24:2133 | this access | | UseUseExplosion.cs:24:1238:24:1241 | [post] this access | UseUseExplosion.cs:24:1255:24:1258 | this access | | UseUseExplosion.cs:24:1238:24:1241 | [post] this access | UseUseExplosion.cs:24:2113:24:2118 | this access | | UseUseExplosion.cs:24:1238:24:1241 | access to property Prop | UseUseExplosion.cs:24:1255:24:1258 | access to property Prop | -| UseUseExplosion.cs:24:1238:24:1241 | access to property Prop | UseUseExplosion.cs:24:2113:24:2118 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1238:24:1241 | access to property Prop | UseUseExplosion.cs:24:2113:24:2119 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1238:24:1241 | this access | UseUseExplosion.cs:24:1255:24:1258 | this access | | UseUseExplosion.cs:24:1238:24:1241 | this access | UseUseExplosion.cs:24:2113:24:2118 | this access | | UseUseExplosion.cs:24:1255:24:1258 | [post] this access | UseUseExplosion.cs:24:1272:24:1275 | this access | | UseUseExplosion.cs:24:1255:24:1258 | [post] this access | UseUseExplosion.cs:24:2098:24:2103 | this access | | UseUseExplosion.cs:24:1255:24:1258 | access to property Prop | UseUseExplosion.cs:24:1272:24:1275 | access to property Prop | -| UseUseExplosion.cs:24:1255:24:1258 | access to property Prop | UseUseExplosion.cs:24:2098:24:2103 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1255:24:1258 | access to property Prop | UseUseExplosion.cs:24:2098:24:2104 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1255:24:1258 | this access | UseUseExplosion.cs:24:1272:24:1275 | this access | | UseUseExplosion.cs:24:1255:24:1258 | this access | UseUseExplosion.cs:24:2098:24:2103 | this access | | UseUseExplosion.cs:24:1272:24:1275 | [post] this access | UseUseExplosion.cs:24:1289:24:1292 | this access | | UseUseExplosion.cs:24:1272:24:1275 | [post] this access | UseUseExplosion.cs:24:2083:24:2088 | this access | | UseUseExplosion.cs:24:1272:24:1275 | access to property Prop | UseUseExplosion.cs:24:1289:24:1292 | access to property Prop | -| UseUseExplosion.cs:24:1272:24:1275 | access to property Prop | UseUseExplosion.cs:24:2083:24:2088 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1272:24:1275 | access to property Prop | UseUseExplosion.cs:24:2083:24:2089 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1272:24:1275 | this access | UseUseExplosion.cs:24:1289:24:1292 | this access | | UseUseExplosion.cs:24:1272:24:1275 | this access | UseUseExplosion.cs:24:2083:24:2088 | this access | | UseUseExplosion.cs:24:1289:24:1292 | [post] this access | UseUseExplosion.cs:24:1306:24:1309 | this access | | UseUseExplosion.cs:24:1289:24:1292 | [post] this access | UseUseExplosion.cs:24:2068:24:2073 | this access | | UseUseExplosion.cs:24:1289:24:1292 | access to property Prop | UseUseExplosion.cs:24:1306:24:1309 | access to property Prop | -| UseUseExplosion.cs:24:1289:24:1292 | access to property Prop | UseUseExplosion.cs:24:2068:24:2073 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1289:24:1292 | access to property Prop | UseUseExplosion.cs:24:2068:24:2074 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1289:24:1292 | this access | UseUseExplosion.cs:24:1306:24:1309 | this access | | UseUseExplosion.cs:24:1289:24:1292 | this access | UseUseExplosion.cs:24:2068:24:2073 | this access | | UseUseExplosion.cs:24:1306:24:1309 | [post] this access | UseUseExplosion.cs:24:1323:24:1326 | this access | | UseUseExplosion.cs:24:1306:24:1309 | [post] this access | UseUseExplosion.cs:24:2053:24:2058 | this access | | UseUseExplosion.cs:24:1306:24:1309 | access to property Prop | UseUseExplosion.cs:24:1323:24:1326 | access to property Prop | -| UseUseExplosion.cs:24:1306:24:1309 | access to property Prop | UseUseExplosion.cs:24:2053:24:2058 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1306:24:1309 | access to property Prop | UseUseExplosion.cs:24:2053:24:2059 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1306:24:1309 | this access | UseUseExplosion.cs:24:1323:24:1326 | this access | | UseUseExplosion.cs:24:1306:24:1309 | this access | UseUseExplosion.cs:24:2053:24:2058 | this access | | UseUseExplosion.cs:24:1323:24:1326 | [post] this access | UseUseExplosion.cs:24:1340:24:1343 | this access | | UseUseExplosion.cs:24:1323:24:1326 | [post] this access | UseUseExplosion.cs:24:2038:24:2043 | this access | | UseUseExplosion.cs:24:1323:24:1326 | access to property Prop | UseUseExplosion.cs:24:1340:24:1343 | access to property Prop | -| UseUseExplosion.cs:24:1323:24:1326 | access to property Prop | UseUseExplosion.cs:24:2038:24:2043 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1323:24:1326 | access to property Prop | UseUseExplosion.cs:24:2038:24:2044 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1323:24:1326 | this access | UseUseExplosion.cs:24:1340:24:1343 | this access | | UseUseExplosion.cs:24:1323:24:1326 | this access | UseUseExplosion.cs:24:2038:24:2043 | this access | | UseUseExplosion.cs:24:1340:24:1343 | [post] this access | UseUseExplosion.cs:24:1357:24:1360 | this access | | UseUseExplosion.cs:24:1340:24:1343 | [post] this access | UseUseExplosion.cs:24:2023:24:2028 | this access | | UseUseExplosion.cs:24:1340:24:1343 | access to property Prop | UseUseExplosion.cs:24:1357:24:1360 | access to property Prop | -| UseUseExplosion.cs:24:1340:24:1343 | access to property Prop | UseUseExplosion.cs:24:2023:24:2028 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1340:24:1343 | access to property Prop | UseUseExplosion.cs:24:2023:24:2029 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1340:24:1343 | this access | UseUseExplosion.cs:24:1357:24:1360 | this access | | UseUseExplosion.cs:24:1340:24:1343 | this access | UseUseExplosion.cs:24:2023:24:2028 | this access | | UseUseExplosion.cs:24:1357:24:1360 | [post] this access | UseUseExplosion.cs:24:1374:24:1377 | this access | | UseUseExplosion.cs:24:1357:24:1360 | [post] this access | UseUseExplosion.cs:24:2008:24:2013 | this access | | UseUseExplosion.cs:24:1357:24:1360 | access to property Prop | UseUseExplosion.cs:24:1374:24:1377 | access to property Prop | -| UseUseExplosion.cs:24:1357:24:1360 | access to property Prop | UseUseExplosion.cs:24:2008:24:2013 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1357:24:1360 | access to property Prop | UseUseExplosion.cs:24:2008:24:2014 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1357:24:1360 | this access | UseUseExplosion.cs:24:1374:24:1377 | this access | | UseUseExplosion.cs:24:1357:24:1360 | this access | UseUseExplosion.cs:24:2008:24:2013 | this access | | UseUseExplosion.cs:24:1374:24:1377 | [post] this access | UseUseExplosion.cs:24:1391:24:1394 | this access | | UseUseExplosion.cs:24:1374:24:1377 | [post] this access | UseUseExplosion.cs:24:1993:24:1998 | this access | | UseUseExplosion.cs:24:1374:24:1377 | access to property Prop | UseUseExplosion.cs:24:1391:24:1394 | access to property Prop | -| UseUseExplosion.cs:24:1374:24:1377 | access to property Prop | UseUseExplosion.cs:24:1993:24:1998 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1374:24:1377 | access to property Prop | UseUseExplosion.cs:24:1993:24:1999 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1374:24:1377 | this access | UseUseExplosion.cs:24:1391:24:1394 | this access | | UseUseExplosion.cs:24:1374:24:1377 | this access | UseUseExplosion.cs:24:1993:24:1998 | this access | | UseUseExplosion.cs:24:1391:24:1394 | [post] this access | UseUseExplosion.cs:24:1408:24:1411 | this access | | UseUseExplosion.cs:24:1391:24:1394 | [post] this access | UseUseExplosion.cs:24:1978:24:1983 | this access | | UseUseExplosion.cs:24:1391:24:1394 | access to property Prop | UseUseExplosion.cs:24:1408:24:1411 | access to property Prop | -| UseUseExplosion.cs:24:1391:24:1394 | access to property Prop | UseUseExplosion.cs:24:1978:24:1983 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1391:24:1394 | access to property Prop | UseUseExplosion.cs:24:1978:24:1984 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1391:24:1394 | this access | UseUseExplosion.cs:24:1408:24:1411 | this access | | UseUseExplosion.cs:24:1391:24:1394 | this access | UseUseExplosion.cs:24:1978:24:1983 | this access | | UseUseExplosion.cs:24:1408:24:1411 | [post] this access | UseUseExplosion.cs:24:1425:24:1428 | this access | | UseUseExplosion.cs:24:1408:24:1411 | [post] this access | UseUseExplosion.cs:24:1963:24:1968 | this access | | UseUseExplosion.cs:24:1408:24:1411 | access to property Prop | UseUseExplosion.cs:24:1425:24:1428 | access to property Prop | -| UseUseExplosion.cs:24:1408:24:1411 | access to property Prop | UseUseExplosion.cs:24:1963:24:1968 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1408:24:1411 | access to property Prop | UseUseExplosion.cs:24:1963:24:1969 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1408:24:1411 | this access | UseUseExplosion.cs:24:1425:24:1428 | this access | | UseUseExplosion.cs:24:1408:24:1411 | this access | UseUseExplosion.cs:24:1963:24:1968 | this access | | UseUseExplosion.cs:24:1425:24:1428 | [post] this access | UseUseExplosion.cs:24:1442:24:1445 | this access | | UseUseExplosion.cs:24:1425:24:1428 | [post] this access | UseUseExplosion.cs:24:1948:24:1953 | this access | | UseUseExplosion.cs:24:1425:24:1428 | access to property Prop | UseUseExplosion.cs:24:1442:24:1445 | access to property Prop | -| UseUseExplosion.cs:24:1425:24:1428 | access to property Prop | UseUseExplosion.cs:24:1948:24:1953 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1425:24:1428 | access to property Prop | UseUseExplosion.cs:24:1948:24:1954 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1425:24:1428 | this access | UseUseExplosion.cs:24:1442:24:1445 | this access | | UseUseExplosion.cs:24:1425:24:1428 | this access | UseUseExplosion.cs:24:1948:24:1953 | this access | | UseUseExplosion.cs:24:1442:24:1445 | [post] this access | UseUseExplosion.cs:24:1459:24:1462 | this access | | UseUseExplosion.cs:24:1442:24:1445 | [post] this access | UseUseExplosion.cs:24:1933:24:1938 | this access | | UseUseExplosion.cs:24:1442:24:1445 | access to property Prop | UseUseExplosion.cs:24:1459:24:1462 | access to property Prop | -| UseUseExplosion.cs:24:1442:24:1445 | access to property Prop | UseUseExplosion.cs:24:1933:24:1938 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1442:24:1445 | access to property Prop | UseUseExplosion.cs:24:1933:24:1939 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1442:24:1445 | this access | UseUseExplosion.cs:24:1459:24:1462 | this access | | UseUseExplosion.cs:24:1442:24:1445 | this access | UseUseExplosion.cs:24:1933:24:1938 | this access | | UseUseExplosion.cs:24:1459:24:1462 | [post] this access | UseUseExplosion.cs:24:1476:24:1479 | this access | | UseUseExplosion.cs:24:1459:24:1462 | [post] this access | UseUseExplosion.cs:24:1918:24:1923 | this access | | UseUseExplosion.cs:24:1459:24:1462 | access to property Prop | UseUseExplosion.cs:24:1476:24:1479 | access to property Prop | -| UseUseExplosion.cs:24:1459:24:1462 | access to property Prop | UseUseExplosion.cs:24:1918:24:1923 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1459:24:1462 | access to property Prop | UseUseExplosion.cs:24:1918:24:1924 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1459:24:1462 | this access | UseUseExplosion.cs:24:1476:24:1479 | this access | | UseUseExplosion.cs:24:1459:24:1462 | this access | UseUseExplosion.cs:24:1918:24:1923 | this access | | UseUseExplosion.cs:24:1476:24:1479 | [post] this access | UseUseExplosion.cs:24:1493:24:1496 | this access | | UseUseExplosion.cs:24:1476:24:1479 | [post] this access | UseUseExplosion.cs:24:1903:24:1908 | this access | | UseUseExplosion.cs:24:1476:24:1479 | access to property Prop | UseUseExplosion.cs:24:1493:24:1496 | access to property Prop | -| UseUseExplosion.cs:24:1476:24:1479 | access to property Prop | UseUseExplosion.cs:24:1903:24:1908 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1476:24:1479 | access to property Prop | UseUseExplosion.cs:24:1903:24:1909 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1476:24:1479 | this access | UseUseExplosion.cs:24:1493:24:1496 | this access | | UseUseExplosion.cs:24:1476:24:1479 | this access | UseUseExplosion.cs:24:1903:24:1908 | this access | | UseUseExplosion.cs:24:1493:24:1496 | [post] this access | UseUseExplosion.cs:24:1510:24:1513 | this access | | UseUseExplosion.cs:24:1493:24:1496 | [post] this access | UseUseExplosion.cs:24:1888:24:1893 | this access | | UseUseExplosion.cs:24:1493:24:1496 | access to property Prop | UseUseExplosion.cs:24:1510:24:1513 | access to property Prop | -| UseUseExplosion.cs:24:1493:24:1496 | access to property Prop | UseUseExplosion.cs:24:1888:24:1893 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1493:24:1496 | access to property Prop | UseUseExplosion.cs:24:1888:24:1894 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1493:24:1496 | this access | UseUseExplosion.cs:24:1510:24:1513 | this access | | UseUseExplosion.cs:24:1493:24:1496 | this access | UseUseExplosion.cs:24:1888:24:1893 | this access | | UseUseExplosion.cs:24:1510:24:1513 | [post] this access | UseUseExplosion.cs:24:1527:24:1530 | this access | | UseUseExplosion.cs:24:1510:24:1513 | [post] this access | UseUseExplosion.cs:24:1873:24:1878 | this access | | UseUseExplosion.cs:24:1510:24:1513 | access to property Prop | UseUseExplosion.cs:24:1527:24:1530 | access to property Prop | -| UseUseExplosion.cs:24:1510:24:1513 | access to property Prop | UseUseExplosion.cs:24:1873:24:1878 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1510:24:1513 | access to property Prop | UseUseExplosion.cs:24:1873:24:1879 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1510:24:1513 | this access | UseUseExplosion.cs:24:1527:24:1530 | this access | | UseUseExplosion.cs:24:1510:24:1513 | this access | UseUseExplosion.cs:24:1873:24:1878 | this access | | UseUseExplosion.cs:24:1527:24:1530 | [post] this access | UseUseExplosion.cs:24:1544:24:1547 | this access | | UseUseExplosion.cs:24:1527:24:1530 | [post] this access | UseUseExplosion.cs:24:1858:24:1863 | this access | | UseUseExplosion.cs:24:1527:24:1530 | access to property Prop | UseUseExplosion.cs:24:1544:24:1547 | access to property Prop | -| UseUseExplosion.cs:24:1527:24:1530 | access to property Prop | UseUseExplosion.cs:24:1858:24:1863 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1527:24:1530 | access to property Prop | UseUseExplosion.cs:24:1858:24:1864 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1527:24:1530 | this access | UseUseExplosion.cs:24:1544:24:1547 | this access | | UseUseExplosion.cs:24:1527:24:1530 | this access | UseUseExplosion.cs:24:1858:24:1863 | this access | | UseUseExplosion.cs:24:1544:24:1547 | [post] this access | UseUseExplosion.cs:24:1561:24:1564 | this access | | UseUseExplosion.cs:24:1544:24:1547 | [post] this access | UseUseExplosion.cs:24:1843:24:1848 | this access | | UseUseExplosion.cs:24:1544:24:1547 | access to property Prop | UseUseExplosion.cs:24:1561:24:1564 | access to property Prop | -| UseUseExplosion.cs:24:1544:24:1547 | access to property Prop | UseUseExplosion.cs:24:1843:24:1848 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1544:24:1547 | access to property Prop | UseUseExplosion.cs:24:1843:24:1849 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1544:24:1547 | this access | UseUseExplosion.cs:24:1561:24:1564 | this access | | UseUseExplosion.cs:24:1544:24:1547 | this access | UseUseExplosion.cs:24:1843:24:1848 | this access | | UseUseExplosion.cs:24:1561:24:1564 | [post] this access | UseUseExplosion.cs:24:1577:24:1580 | this access | | UseUseExplosion.cs:24:1561:24:1564 | [post] this access | UseUseExplosion.cs:24:1828:24:1833 | this access | | UseUseExplosion.cs:24:1561:24:1564 | access to property Prop | UseUseExplosion.cs:24:1577:24:1580 | access to property Prop | -| UseUseExplosion.cs:24:1561:24:1564 | access to property Prop | UseUseExplosion.cs:24:1828:24:1833 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1561:24:1564 | access to property Prop | UseUseExplosion.cs:24:1828:24:1834 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1561:24:1564 | this access | UseUseExplosion.cs:24:1577:24:1580 | this access | | UseUseExplosion.cs:24:1561:24:1564 | this access | UseUseExplosion.cs:24:1828:24:1833 | this access | | UseUseExplosion.cs:24:1577:24:1580 | [post] this access | UseUseExplosion.cs:24:1593:24:1596 | this access | | UseUseExplosion.cs:24:1577:24:1580 | [post] this access | UseUseExplosion.cs:24:1813:24:1818 | this access | | UseUseExplosion.cs:24:1577:24:1580 | access to property Prop | UseUseExplosion.cs:24:1593:24:1596 | access to property Prop | -| UseUseExplosion.cs:24:1577:24:1580 | access to property Prop | UseUseExplosion.cs:24:1813:24:1818 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1577:24:1580 | access to property Prop | UseUseExplosion.cs:24:1813:24:1819 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1577:24:1580 | this access | UseUseExplosion.cs:24:1593:24:1596 | this access | | UseUseExplosion.cs:24:1577:24:1580 | this access | UseUseExplosion.cs:24:1813:24:1818 | this access | | UseUseExplosion.cs:24:1593:24:1596 | [post] this access | UseUseExplosion.cs:24:1609:24:1612 | this access | | UseUseExplosion.cs:24:1593:24:1596 | [post] this access | UseUseExplosion.cs:24:1798:24:1803 | this access | | UseUseExplosion.cs:24:1593:24:1596 | access to property Prop | UseUseExplosion.cs:24:1609:24:1612 | access to property Prop | -| UseUseExplosion.cs:24:1593:24:1596 | access to property Prop | UseUseExplosion.cs:24:1798:24:1803 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1593:24:1596 | access to property Prop | UseUseExplosion.cs:24:1798:24:1804 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1593:24:1596 | this access | UseUseExplosion.cs:24:1609:24:1612 | this access | | UseUseExplosion.cs:24:1593:24:1596 | this access | UseUseExplosion.cs:24:1798:24:1803 | this access | | UseUseExplosion.cs:24:1609:24:1612 | [post] this access | UseUseExplosion.cs:24:1625:24:1628 | this access | | UseUseExplosion.cs:24:1609:24:1612 | [post] this access | UseUseExplosion.cs:24:1783:24:1788 | this access | | UseUseExplosion.cs:24:1609:24:1612 | access to property Prop | UseUseExplosion.cs:24:1625:24:1628 | access to property Prop | -| UseUseExplosion.cs:24:1609:24:1612 | access to property Prop | UseUseExplosion.cs:24:1783:24:1788 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1609:24:1612 | access to property Prop | UseUseExplosion.cs:24:1783:24:1789 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1609:24:1612 | this access | UseUseExplosion.cs:24:1625:24:1628 | this access | | UseUseExplosion.cs:24:1609:24:1612 | this access | UseUseExplosion.cs:24:1783:24:1788 | this access | | UseUseExplosion.cs:24:1625:24:1628 | [post] this access | UseUseExplosion.cs:24:1641:24:1644 | this access | | UseUseExplosion.cs:24:1625:24:1628 | [post] this access | UseUseExplosion.cs:24:1768:24:1773 | this access | | UseUseExplosion.cs:24:1625:24:1628 | access to property Prop | UseUseExplosion.cs:24:1641:24:1644 | access to property Prop | -| UseUseExplosion.cs:24:1625:24:1628 | access to property Prop | UseUseExplosion.cs:24:1768:24:1773 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1625:24:1628 | access to property Prop | UseUseExplosion.cs:24:1768:24:1774 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1625:24:1628 | this access | UseUseExplosion.cs:24:1641:24:1644 | this access | | UseUseExplosion.cs:24:1625:24:1628 | this access | UseUseExplosion.cs:24:1768:24:1773 | this access | | UseUseExplosion.cs:24:1641:24:1644 | [post] this access | UseUseExplosion.cs:24:1657:24:1660 | this access | | UseUseExplosion.cs:24:1641:24:1644 | [post] this access | UseUseExplosion.cs:24:1753:24:1758 | this access | | UseUseExplosion.cs:24:1641:24:1644 | access to property Prop | UseUseExplosion.cs:24:1657:24:1660 | access to property Prop | -| UseUseExplosion.cs:24:1641:24:1644 | access to property Prop | UseUseExplosion.cs:24:1753:24:1758 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1641:24:1644 | access to property Prop | UseUseExplosion.cs:24:1753:24:1759 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1641:24:1644 | this access | UseUseExplosion.cs:24:1657:24:1660 | this access | | UseUseExplosion.cs:24:1641:24:1644 | this access | UseUseExplosion.cs:24:1753:24:1758 | this access | | UseUseExplosion.cs:24:1657:24:1660 | [post] this access | UseUseExplosion.cs:24:1673:24:1676 | this access | | UseUseExplosion.cs:24:1657:24:1660 | [post] this access | UseUseExplosion.cs:24:1738:24:1743 | this access | | UseUseExplosion.cs:24:1657:24:1660 | access to property Prop | UseUseExplosion.cs:24:1673:24:1676 | access to property Prop | -| UseUseExplosion.cs:24:1657:24:1660 | access to property Prop | UseUseExplosion.cs:24:1738:24:1743 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1657:24:1660 | access to property Prop | UseUseExplosion.cs:24:1738:24:1744 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1657:24:1660 | this access | UseUseExplosion.cs:24:1673:24:1676 | this access | | UseUseExplosion.cs:24:1657:24:1660 | this access | UseUseExplosion.cs:24:1738:24:1743 | this access | | UseUseExplosion.cs:24:1673:24:1676 | [post] this access | UseUseExplosion.cs:24:1689:24:1692 | this access | | UseUseExplosion.cs:24:1673:24:1676 | [post] this access | UseUseExplosion.cs:24:1723:24:1728 | this access | | UseUseExplosion.cs:24:1673:24:1676 | access to property Prop | UseUseExplosion.cs:24:1689:24:1692 | access to property Prop | -| UseUseExplosion.cs:24:1673:24:1676 | access to property Prop | UseUseExplosion.cs:24:1723:24:1728 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1673:24:1676 | access to property Prop | UseUseExplosion.cs:24:1723:24:1729 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1673:24:1676 | this access | UseUseExplosion.cs:24:1689:24:1692 | this access | | UseUseExplosion.cs:24:1673:24:1676 | this access | UseUseExplosion.cs:24:1723:24:1728 | this access | | UseUseExplosion.cs:24:1689:24:1692 | [post] this access | UseUseExplosion.cs:24:1708:24:1713 | this access | | UseUseExplosion.cs:24:1689:24:1692 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1689:24:1692 | access to property Prop | UseUseExplosion.cs:24:1699:24:1701 | [input] SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1689:24:1692 | access to property Prop | UseUseExplosion.cs:24:1708:24:1713 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1689:24:1692 | access to property Prop | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1689:24:1692 | this access | UseUseExplosion.cs:24:1708:24:1713 | this access | | UseUseExplosion.cs:24:1689:24:1692 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1699:24:1701 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | -| UseUseExplosion.cs:24:1699:24:1701 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1708:24:1713 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1699:24:1701 | [input] SSA phi read(x) | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1708:24:1713 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1708:24:1713 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1712:24:1712 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1723:24:1728 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1712:24:1712 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1723:24:1728 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1723:24:1728 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1727:24:1727 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1738:24:1743 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1723:24:1729 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1727:24:1727 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1738:24:1743 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1738:24:1743 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1742:24:1742 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1753:24:1758 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1738:24:1744 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1742:24:1742 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1753:24:1758 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1753:24:1758 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1757:24:1757 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1768:24:1773 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1753:24:1759 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1757:24:1757 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1768:24:1773 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1768:24:1773 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1772:24:1772 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1783:24:1788 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1768:24:1774 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1772:24:1772 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1783:24:1788 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1783:24:1788 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1787:24:1787 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1798:24:1803 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1783:24:1789 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1787:24:1787 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1798:24:1803 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1798:24:1803 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1802:24:1802 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1813:24:1818 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1798:24:1804 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1802:24:1802 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1813:24:1818 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1813:24:1818 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1817:24:1817 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1828:24:1833 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1813:24:1819 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1817:24:1817 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1828:24:1833 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1828:24:1833 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1832:24:1832 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1843:24:1848 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1828:24:1834 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1832:24:1832 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1843:24:1848 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1843:24:1848 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1847:24:1847 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1858:24:1863 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1843:24:1849 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1847:24:1847 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1858:24:1863 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1858:24:1863 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1862:24:1862 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1873:24:1878 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1858:24:1864 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1862:24:1862 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1873:24:1878 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1873:24:1878 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1877:24:1877 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1888:24:1893 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1873:24:1879 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1877:24:1877 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1888:24:1893 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1888:24:1893 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1892:24:1892 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1903:24:1908 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1888:24:1894 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1892:24:1892 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1903:24:1908 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1903:24:1908 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1907:24:1907 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1918:24:1923 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1903:24:1909 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1907:24:1907 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1918:24:1923 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1918:24:1923 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1922:24:1922 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1933:24:1938 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1918:24:1924 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1922:24:1922 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1933:24:1938 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1933:24:1938 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1937:24:1937 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1948:24:1953 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1933:24:1939 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1937:24:1937 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1948:24:1953 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1948:24:1953 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1952:24:1952 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1963:24:1968 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1948:24:1954 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1952:24:1952 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1963:24:1968 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1963:24:1968 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1967:24:1967 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1978:24:1983 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1963:24:1969 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1967:24:1967 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1978:24:1983 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1978:24:1983 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1982:24:1982 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1993:24:1998 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1978:24:1984 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1982:24:1982 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1993:24:1998 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1993:24:1998 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1997:24:1997 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2008:24:2013 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1993:24:1999 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1997:24:1997 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2008:24:2013 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2008:24:2013 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2012:24:2012 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2023:24:2028 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2008:24:2014 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2012:24:2012 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2023:24:2028 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2023:24:2028 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2027:24:2027 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2038:24:2043 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2023:24:2029 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2027:24:2027 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2038:24:2043 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2038:24:2043 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2042:24:2042 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2053:24:2058 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2038:24:2044 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2042:24:2042 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2053:24:2058 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2053:24:2058 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2057:24:2057 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2068:24:2073 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2053:24:2059 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2057:24:2057 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2068:24:2073 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2068:24:2073 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2072:24:2072 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2083:24:2088 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2068:24:2074 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2072:24:2072 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2083:24:2088 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2083:24:2088 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2087:24:2087 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2098:24:2103 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2083:24:2089 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2087:24:2087 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2098:24:2103 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2098:24:2103 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2102:24:2102 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2113:24:2118 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2098:24:2104 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2102:24:2102 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2113:24:2118 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2113:24:2118 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2117:24:2117 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2128:24:2133 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2113:24:2119 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2117:24:2117 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2128:24:2133 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2128:24:2133 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2132:24:2132 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2143:24:2148 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2128:24:2134 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2132:24:2132 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2143:24:2148 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2143:24:2148 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2147:24:2147 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2158:24:2163 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2143:24:2149 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2147:24:2147 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2158:24:2163 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2158:24:2163 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2162:24:2162 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2173:24:2178 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2158:24:2164 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2162:24:2162 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2173:24:2178 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2173:24:2178 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2177:24:2177 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2188:24:2193 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2173:24:2179 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2177:24:2177 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2188:24:2193 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2188:24:2193 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2192:24:2192 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2203:24:2208 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2188:24:2194 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2192:24:2192 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2203:24:2208 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2203:24:2208 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2207:24:2207 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2218:24:2223 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2203:24:2209 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2207:24:2207 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2218:24:2223 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2218:24:2223 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2222:24:2222 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2233:24:2238 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2218:24:2224 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2222:24:2222 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2233:24:2238 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2233:24:2238 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2237:24:2237 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2248:24:2253 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2233:24:2239 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2237:24:2237 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2248:24:2253 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2248:24:2253 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2252:24:2252 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2263:24:2268 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2248:24:2254 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2252:24:2252 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2263:24:2268 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2263:24:2268 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2267:24:2267 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2278:24:2283 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2263:24:2269 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2267:24:2267 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2278:24:2283 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2278:24:2283 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2282:24:2282 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2293:24:2298 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2278:24:2284 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2282:24:2282 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2293:24:2298 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2293:24:2298 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2297:24:2297 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2308:24:2313 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2293:24:2299 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2297:24:2297 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2308:24:2313 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2308:24:2313 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2312:24:2312 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2323:24:2328 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2308:24:2314 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2312:24:2312 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2323:24:2328 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2323:24:2328 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2327:24:2327 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2338:24:2343 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2323:24:2329 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2327:24:2327 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2338:24:2343 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2338:24:2343 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2342:24:2342 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2353:24:2358 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2338:24:2344 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2342:24:2342 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2353:24:2358 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2353:24:2358 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2357:24:2357 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2368:24:2373 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2353:24:2359 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2357:24:2357 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2368:24:2373 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2368:24:2373 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2372:24:2372 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2383:24:2388 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2368:24:2374 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2372:24:2372 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2383:24:2388 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2383:24:2388 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2387:24:2387 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2398:24:2403 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2383:24:2389 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2387:24:2387 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2398:24:2403 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2398:24:2403 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2402:24:2402 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2413:24:2418 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2398:24:2404 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2402:24:2402 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2413:24:2418 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2413:24:2418 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2417:24:2417 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2428:24:2433 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2413:24:2419 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2417:24:2417 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2428:24:2433 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2428:24:2433 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2432:24:2432 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2443:24:2448 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2428:24:2434 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2432:24:2432 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2443:24:2448 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2443:24:2448 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2447:24:2447 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2458:24:2463 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2443:24:2449 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2447:24:2447 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2458:24:2463 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2458:24:2463 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2462:24:2462 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2473:24:2478 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2458:24:2464 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2462:24:2462 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2473:24:2478 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2473:24:2478 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2477:24:2477 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2488:24:2493 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2473:24:2479 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2477:24:2477 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2488:24:2493 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2488:24:2493 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2492:24:2492 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2503:24:2508 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2488:24:2494 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2492:24:2492 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2503:24:2508 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2503:24:2508 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2507:24:2507 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2518:24:2523 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2503:24:2509 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2507:24:2507 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2518:24:2523 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2518:24:2523 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2522:24:2522 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2533:24:2538 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2518:24:2524 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2522:24:2522 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2533:24:2538 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2533:24:2538 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2537:24:2537 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2548:24:2553 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2533:24:2539 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2537:24:2537 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2548:24:2553 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2548:24:2553 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2552:24:2552 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2563:24:2568 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2548:24:2554 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2552:24:2552 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2563:24:2568 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2563:24:2568 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2567:24:2567 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2578:24:2583 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2563:24:2569 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2567:24:2567 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2578:24:2583 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2578:24:2583 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2582:24:2582 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2593:24:2598 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2578:24:2584 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2582:24:2582 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2593:24:2598 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2593:24:2598 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2597:24:2597 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2608:24:2613 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2593:24:2599 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2597:24:2597 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2608:24:2613 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2608:24:2613 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2612:24:2612 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2623:24:2628 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2608:24:2614 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2612:24:2612 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2623:24:2628 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2623:24:2628 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2627:24:2627 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2638:24:2643 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2623:24:2629 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2627:24:2627 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2638:24:2643 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2638:24:2643 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2642:24:2642 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2653:24:2658 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2638:24:2644 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2642:24:2642 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2653:24:2658 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2653:24:2658 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2657:24:2657 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2668:24:2673 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2653:24:2659 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2657:24:2657 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2668:24:2673 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2668:24:2673 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2672:24:2672 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2683:24:2688 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2668:24:2674 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2672:24:2672 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2683:24:2688 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2683:24:2688 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2687:24:2687 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2698:24:2703 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2683:24:2689 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2687:24:2687 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2698:24:2703 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2698:24:2703 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2702:24:2702 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2713:24:2718 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2698:24:2704 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2702:24:2702 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2713:24:2718 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2713:24:2718 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2717:24:2717 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2728:24:2733 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2713:24:2719 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2717:24:2717 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2728:24:2733 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2728:24:2733 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2732:24:2732 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2743:24:2748 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2728:24:2734 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2732:24:2732 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2743:24:2748 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2743:24:2748 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2747:24:2747 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2758:24:2763 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2743:24:2749 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2747:24:2747 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2758:24:2763 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2758:24:2763 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2762:24:2762 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2773:24:2778 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2758:24:2764 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2762:24:2762 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2773:24:2778 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2773:24:2778 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2777:24:2777 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2788:24:2793 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2773:24:2779 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2777:24:2777 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2788:24:2793 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2788:24:2793 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2792:24:2792 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2803:24:2808 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2788:24:2794 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2792:24:2792 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2803:24:2808 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2803:24:2808 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2807:24:2807 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2818:24:2823 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2803:24:2809 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2807:24:2807 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2818:24:2823 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2818:24:2823 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2822:24:2822 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2833:24:2838 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2818:24:2824 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2822:24:2822 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2833:24:2838 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2833:24:2838 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2837:24:2837 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2848:24:2853 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2833:24:2839 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2837:24:2837 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2848:24:2853 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2848:24:2853 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2852:24:2852 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2863:24:2868 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2848:24:2854 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2852:24:2852 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2863:24:2868 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2863:24:2868 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2867:24:2867 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2878:24:2883 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2863:24:2869 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2867:24:2867 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2878:24:2883 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2878:24:2883 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2882:24:2882 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2893:24:2898 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2878:24:2884 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2882:24:2882 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2893:24:2898 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2893:24:2898 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2897:24:2897 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2908:24:2913 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2893:24:2899 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2897:24:2897 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2908:24:2913 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2908:24:2913 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2912:24:2912 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2923:24:2928 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2908:24:2914 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2912:24:2912 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2923:24:2928 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2923:24:2928 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2927:24:2927 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2938:24:2943 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2923:24:2929 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2927:24:2927 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2938:24:2943 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2938:24:2943 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2942:24:2942 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2953:24:2958 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2938:24:2944 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2942:24:2942 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2953:24:2958 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2953:24:2958 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2957:24:2957 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2968:24:2973 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2953:24:2959 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2957:24:2957 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2968:24:2973 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2968:24:2973 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2972:24:2972 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2983:24:2988 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2968:24:2974 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2972:24:2972 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2983:24:2988 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2983:24:2988 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2987:24:2987 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2998:24:3003 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2983:24:2989 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2987:24:2987 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2998:24:3003 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2998:24:3003 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3002:24:3002 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:3013:24:3018 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2998:24:3004 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3002:24:3002 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3013:24:3018 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3013:24:3018 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3017:24:3017 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:3028:24:3033 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3013:24:3019 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3017:24:3017 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3028:24:3033 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3028:24:3033 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3032:24:3032 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:3043:24:3048 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3028:24:3034 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3032:24:3032 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3043:24:3048 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3043:24:3048 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3047:24:3047 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:3058:24:3063 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3043:24:3049 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3047:24:3047 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3058:24:3063 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3058:24:3063 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3062:24:3062 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:3073:24:3078 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3058:24:3064 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3062:24:3062 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3073:24:3078 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3073:24:3078 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3077:24:3077 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:3088:24:3093 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3073:24:3079 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3077:24:3077 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3088:24:3093 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3088:24:3093 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3092:24:3092 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:3103:24:3108 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3088:24:3094 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3092:24:3092 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3103:24:3108 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3103:24:3108 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3107:24:3107 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:3118:24:3123 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3103:24:3109 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3107:24:3107 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3118:24:3123 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3118:24:3123 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3122:24:3122 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:3133:24:3138 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3118:24:3124 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3122:24:3122 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3133:24:3138 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3133:24:3138 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3137:24:3137 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:3148:24:3153 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3133:24:3139 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3137:24:3137 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3148:24:3153 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3148:24:3153 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3152:24:3152 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:3163:24:3168 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3148:24:3154 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3152:24:3152 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3163:24:3168 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3163:24:3168 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3167:24:3167 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:3178:24:3183 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3163:24:3169 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3167:24:3167 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3178:24:3183 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3178:24:3183 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3182:24:3182 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:3193:24:3198 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3178:24:3184 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3182:24:3182 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3193:24:3198 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3193:24:3198 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3197:24:3197 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1712:25:1712 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1727:25:1727 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1742:25:1742 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1757:25:1757 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1772:25:1772 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1787:25:1787 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1802:25:1802 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1817:25:1817 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1832:25:1832 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1847:25:1847 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1862:25:1862 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1877:25:1877 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1892:25:1892 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1907:25:1907 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1922:25:1922 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1937:25:1937 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1952:25:1952 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1967:25:1967 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1982:25:1982 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1997:25:1997 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2012:25:2012 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2027:25:2027 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2042:25:2042 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2057:25:2057 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2072:25:2072 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2087:25:2087 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2102:25:2102 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2117:25:2117 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2132:25:2132 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2147:25:2147 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2162:25:2162 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2177:25:2177 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2192:25:2192 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2207:25:2207 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2222:25:2222 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2237:25:2237 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2252:25:2252 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2267:25:2267 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2282:25:2282 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2297:25:2297 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2312:25:2312 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2327:25:2327 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2342:25:2342 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2357:25:2357 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2372:25:2372 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2387:25:2387 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2402:25:2402 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2417:25:2417 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2432:25:2432 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2447:25:2447 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2462:25:2462 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2477:25:2477 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2492:25:2492 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2507:25:2507 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2522:25:2522 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2537:25:2537 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2552:25:2552 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2567:25:2567 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2582:25:2582 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2597:25:2597 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2612:25:2612 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2627:25:2627 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2642:25:2642 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2657:25:2657 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2672:25:2672 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2687:25:2687 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2702:25:2702 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2717:25:2717 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2732:25:2732 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2747:25:2747 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2762:25:2762 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2777:25:2777 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2792:25:2792 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2807:25:2807 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2822:25:2822 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2837:25:2837 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2852:25:2852 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2867:25:2867 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2882:25:2882 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2897:25:2897 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2912:25:2912 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2927:25:2927 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2942:25:2942 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2957:25:2957 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2972:25:2972 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2987:25:2987 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3002:25:3002 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3017:25:3017 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3032:25:3032 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3047:25:3047 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3062:25:3062 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3077:25:3077 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3092:25:3092 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3107:25:3107 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3122:25:3122 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3137:25:3137 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3152:25:3152 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3167:25:3167 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3182:25:3182 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3197:25:3197 | access to local variable x | +| UseUseExplosion.cs:24:3193:24:3199 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3197:24:3197 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:25:13:25:16 | [post] this access | UseUseExplosion.cs:25:31:25:34 | this access | | UseUseExplosion.cs:25:13:25:16 | [post] this access | UseUseExplosion.cs:25:3193:25:3198 | this access | | UseUseExplosion.cs:25:13:25:16 | access to property Prop | UseUseExplosion.cs:25:31:25:34 | access to property Prop | diff --git a/csharp/ql/test/library-tests/dataflow/local/LocalDataFlow.cs b/csharp/ql/test/library-tests/dataflow/local/LocalDataFlow.cs index 53b6165dd754..34f471e522fe 100644 --- a/csharp/ql/test/library-tests/dataflow/local/LocalDataFlow.cs +++ b/csharp/ql/test/library-tests/dataflow/local/LocalDataFlow.cs @@ -381,4 +381,9 @@ void PhiFlow(bool b1, bool b2) x = "not tainted"; Check(x); } + + void DefaultParamFlow(string s = "taint source") + { + Check(s); + } } diff --git a/csharp/ql/test/library-tests/dataflow/local/TaintTracking.expected b/csharp/ql/test/library-tests/dataflow/local/TaintTracking.expected index 372d0bfb3e13..a7ba919f2d74 100644 --- a/csharp/ql/test/library-tests/dataflow/local/TaintTracking.expected +++ b/csharp/ql/test/library-tests/dataflow/local/TaintTracking.expected @@ -43,6 +43,7 @@ | LocalDataFlow.cs:315:15:315:20 | access to local variable sink73 | | LocalDataFlow.cs:316:15:316:20 | access to local variable sink74 | | LocalDataFlow.cs:342:15:342:21 | access to parameter tainted | +| LocalDataFlow.cs:387:15:387:15 | access to parameter s | | SSA.cs:9:15:9:22 | access to local variable ssaSink0 | | SSA.cs:25:15:25:22 | access to local variable ssaSink1 | | SSA.cs:43:15:43:22 | access to local variable ssaSink2 | diff --git a/csharp/ql/test/library-tests/dataflow/local/TaintTrackingStep.expected b/csharp/ql/test/library-tests/dataflow/local/TaintTrackingStep.expected index 4be5dcf12952..8f059acc6caa 100644 --- a/csharp/ql/test/library-tests/dataflow/local/TaintTrackingStep.expected +++ b/csharp/ql/test/library-tests/dataflow/local/TaintTrackingStep.expected @@ -631,14 +631,19 @@ | LocalDataFlow.cs:367:32:367:33 | SSA param(b2) | LocalDataFlow.cs:374:17:374:18 | access to parameter b2 | | LocalDataFlow.cs:367:32:367:33 | b2 | LocalDataFlow.cs:367:32:367:33 | SSA param(b2) | | LocalDataFlow.cs:369:17:369:18 | "" | LocalDataFlow.cs:369:13:369:13 | access to local variable x | +| LocalDataFlow.cs:372:9:379:9 | [input] SSA phi(x) | LocalDataFlow.cs:382:15:382:15 | access to local variable x | | LocalDataFlow.cs:373:13:373:13 | access to local variable x | LocalDataFlow.cs:373:13:373:25 | SSA def(x) | -| LocalDataFlow.cs:373:13:373:25 | SSA def(x) | LocalDataFlow.cs:374:17:374:18 | [input] SSA phi(x) | +| LocalDataFlow.cs:373:13:373:25 | SSA def(x) | LocalDataFlow.cs:372:9:379:9 | [input] SSA phi(x) | | LocalDataFlow.cs:373:13:373:25 | SSA def(x) | LocalDataFlow.cs:376:35:376:35 | access to local variable x | | LocalDataFlow.cs:373:17:373:25 | "tainted" | LocalDataFlow.cs:373:13:373:13 | access to local variable x | -| LocalDataFlow.cs:374:17:374:18 | [input] SSA phi(x) | LocalDataFlow.cs:382:15:382:15 | access to local variable x | | LocalDataFlow.cs:381:13:381:13 | access to local variable x | LocalDataFlow.cs:381:13:381:29 | SSA def(x) | | LocalDataFlow.cs:381:13:381:29 | SSA def(x) | LocalDataFlow.cs:382:15:382:15 | access to local variable x | | LocalDataFlow.cs:381:17:381:29 | "not tainted" | LocalDataFlow.cs:381:13:381:13 | access to local variable x | +| LocalDataFlow.cs:385:34:385:34 | SSA param(s) | LocalDataFlow.cs:387:15:387:15 | access to parameter s | +| LocalDataFlow.cs:385:34:385:34 | s | LocalDataFlow.cs:385:34:385:34 | SSA param(s) | +| LocalDataFlow.cs:385:38:385:51 | "taint source" | LocalDataFlow.cs:385:38:385:51 | s = ... | +| LocalDataFlow.cs:385:38:385:51 | SSA def(s) | LocalDataFlow.cs:387:15:387:15 | access to parameter s | +| LocalDataFlow.cs:385:38:385:51 | s = ... | LocalDataFlow.cs:385:38:385:51 | SSA def(s) | | SSA.cs:3:14:3:16 | this | SSA.cs:3:14:3:16 | this access | | SSA.cs:5:17:5:17 | SSA entry def(this.S) | SSA.cs:67:9:67:14 | access to field S | | SSA.cs:5:17:5:17 | this | SSA.cs:67:9:67:12 | this access | @@ -669,60 +674,53 @@ | SSA.cs:22:16:22:23 | access to local variable ssaSink1 | SSA.cs:22:16:22:28 | SSA def(ssaSink1) | | SSA.cs:22:16:22:28 | SSA def(ssaSink1) | SSA.cs:25:15:25:22 | access to local variable ssaSink1 | | SSA.cs:22:27:22:28 | "" | SSA.cs:22:16:22:23 | access to local variable ssaSink1 | +| SSA.cs:23:9:24:32 | SSA phi read(ssaSink0) | SSA.cs:35:13:35:33 | [input] SSA phi read(ssaSink0) | +| SSA.cs:23:9:24:32 | SSA phi read(ssaSink0) | SSA.cs:37:24:37:31 | access to local variable ssaSink0 | | SSA.cs:23:13:23:22 | [post] access to parameter nonTainted | SSA.cs:29:13:29:22 | access to parameter nonTainted | | SSA.cs:23:13:23:22 | access to parameter nonTainted | SSA.cs:29:13:29:22 | access to parameter nonTainted | | SSA.cs:23:13:23:29 | access to property Length | SSA.cs:23:13:23:33 | ... > ... | -| SSA.cs:23:13:23:33 | [input] SSA phi read(ssaSink0) | SSA.cs:25:9:25:24 | SSA phi read(ssaSink0) | +| SSA.cs:23:13:23:33 | [input] SSA phi read(ssaSink0) | SSA.cs:23:9:24:32 | SSA phi read(ssaSink0) | | SSA.cs:24:13:24:20 | access to local variable ssaSink1 | SSA.cs:24:13:24:31 | SSA def(ssaSink1) | | SSA.cs:24:13:24:31 | SSA def(ssaSink1) | SSA.cs:25:15:25:22 | access to local variable ssaSink1 | +| SSA.cs:24:24:24:31 | access to local variable ssaSink0 | SSA.cs:23:9:24:32 | SSA phi read(ssaSink0) | | SSA.cs:24:24:24:31 | access to local variable ssaSink0 | SSA.cs:24:13:24:20 | access to local variable ssaSink1 | -| SSA.cs:24:24:24:31 | access to local variable ssaSink0 | SSA.cs:25:9:25:24 | SSA phi read(ssaSink0) | -| SSA.cs:25:9:25:24 | SSA phi read(ssaSink0) | SSA.cs:35:13:35:33 | [input] SSA phi read(ssaSink0) | -| SSA.cs:25:9:25:24 | SSA phi read(ssaSink0) | SSA.cs:37:24:37:31 | access to local variable ssaSink0 | | SSA.cs:28:16:28:23 | access to local variable nonSink1 | SSA.cs:28:16:28:28 | SSA def(nonSink1) | | SSA.cs:28:16:28:28 | SSA def(nonSink1) | SSA.cs:31:15:31:22 | access to local variable nonSink1 | | SSA.cs:28:27:28:28 | "" | SSA.cs:28:16:28:23 | access to local variable nonSink1 | +| SSA.cs:29:9:30:32 | SSA phi read(nonSink0) | SSA.cs:47:13:47:33 | [input] SSA phi read(nonSink0) | +| SSA.cs:29:9:30:32 | SSA phi read(nonSink0) | SSA.cs:49:24:49:31 | access to local variable nonSink0 | | SSA.cs:29:13:29:22 | [post] access to parameter nonTainted | SSA.cs:35:13:35:22 | access to parameter nonTainted | | SSA.cs:29:13:29:22 | access to parameter nonTainted | SSA.cs:35:13:35:22 | access to parameter nonTainted | | SSA.cs:29:13:29:29 | access to property Length | SSA.cs:29:13:29:33 | ... > ... | -| SSA.cs:29:13:29:33 | [input] SSA phi read(nonSink0) | SSA.cs:31:9:31:24 | SSA phi read(nonSink0) | +| SSA.cs:29:13:29:33 | [input] SSA phi read(nonSink0) | SSA.cs:29:9:30:32 | SSA phi read(nonSink0) | | SSA.cs:30:13:30:20 | access to local variable nonSink1 | SSA.cs:30:13:30:31 | SSA def(nonSink1) | | SSA.cs:30:13:30:31 | SSA def(nonSink1) | SSA.cs:31:15:31:22 | access to local variable nonSink1 | +| SSA.cs:30:24:30:31 | access to local variable nonSink0 | SSA.cs:29:9:30:32 | SSA phi read(nonSink0) | | SSA.cs:30:24:30:31 | access to local variable nonSink0 | SSA.cs:30:13:30:20 | access to local variable nonSink1 | -| SSA.cs:30:24:30:31 | access to local variable nonSink0 | SSA.cs:31:9:31:24 | SSA phi read(nonSink0) | -| SSA.cs:31:9:31:24 | SSA phi read(nonSink0) | SSA.cs:47:13:47:33 | [input] SSA phi read(nonSink0) | -| SSA.cs:31:9:31:24 | SSA phi read(nonSink0) | SSA.cs:49:24:49:31 | access to local variable nonSink0 | | SSA.cs:34:16:34:23 | access to local variable ssaSink2 | SSA.cs:34:16:34:28 | SSA def(ssaSink2) | | SSA.cs:34:16:34:28 | SSA def(ssaSink2) | SSA.cs:43:15:43:22 | access to local variable ssaSink2 | | SSA.cs:34:27:34:28 | "" | SSA.cs:34:16:34:23 | access to local variable ssaSink2 | +| SSA.cs:35:9:42:9 | SSA phi read(ssaSink0) | SSA.cs:89:13:89:33 | [input] SSA phi read(ssaSink0) | +| SSA.cs:35:9:42:9 | SSA phi read(ssaSink0) | SSA.cs:91:24:91:31 | access to local variable ssaSink0 | | SSA.cs:35:13:35:22 | [post] access to parameter nonTainted | SSA.cs:35:13:35:33 | [input] SSA phi read(nonTainted) | | SSA.cs:35:13:35:22 | [post] access to parameter nonTainted | SSA.cs:38:17:38:26 | access to parameter nonTainted | | SSA.cs:35:13:35:22 | access to parameter nonTainted | SSA.cs:35:13:35:33 | [input] SSA phi read(nonTainted) | | SSA.cs:35:13:35:22 | access to parameter nonTainted | SSA.cs:38:17:38:26 | access to parameter nonTainted | | SSA.cs:35:13:35:29 | access to property Length | SSA.cs:35:13:35:33 | ... > ... | | SSA.cs:35:13:35:33 | [input] SSA phi read(nonTainted) | SSA.cs:47:13:47:22 | access to parameter nonTainted | -| SSA.cs:35:13:35:33 | [input] SSA phi read(ssaSink0) | SSA.cs:43:9:43:24 | SSA phi read(ssaSink0) | +| SSA.cs:35:13:35:33 | [input] SSA phi read(ssaSink0) | SSA.cs:35:9:42:9 | SSA phi read(ssaSink0) | | SSA.cs:37:13:37:20 | access to local variable ssaSink2 | SSA.cs:37:13:37:31 | SSA def(ssaSink2) | | SSA.cs:37:13:37:31 | SSA def(ssaSink2) | SSA.cs:39:21:39:28 | access to local variable ssaSink2 | | SSA.cs:37:13:37:31 | SSA def(ssaSink2) | SSA.cs:41:21:41:28 | access to local variable ssaSink2 | +| SSA.cs:37:24:37:31 | access to local variable ssaSink0 | SSA.cs:35:9:42:9 | SSA phi read(ssaSink0) | | SSA.cs:37:24:37:31 | access to local variable ssaSink0 | SSA.cs:37:13:37:20 | access to local variable ssaSink2 | -| SSA.cs:37:24:37:31 | access to local variable ssaSink0 | SSA.cs:39:17:39:29 | [input] SSA phi read(ssaSink0) | -| SSA.cs:37:24:37:31 | access to local variable ssaSink0 | SSA.cs:41:17:41:29 | [input] SSA phi read(ssaSink0) | -| SSA.cs:38:17:38:26 | [post] access to parameter nonTainted | SSA.cs:39:17:39:29 | [input] SSA phi read(nonTainted) | -| SSA.cs:38:17:38:26 | [post] access to parameter nonTainted | SSA.cs:41:17:41:29 | [input] SSA phi read(nonTainted) | -| SSA.cs:38:17:38:26 | access to parameter nonTainted | SSA.cs:39:17:39:29 | [input] SSA phi read(nonTainted) | -| SSA.cs:38:17:38:26 | access to parameter nonTainted | SSA.cs:41:17:41:29 | [input] SSA phi read(nonTainted) | +| SSA.cs:38:17:38:26 | [post] access to parameter nonTainted | SSA.cs:47:13:47:22 | access to parameter nonTainted | +| SSA.cs:38:17:38:26 | access to parameter nonTainted | SSA.cs:47:13:47:22 | access to parameter nonTainted | | SSA.cs:38:17:38:33 | access to property Length | SSA.cs:38:17:38:37 | ... > ... | -| SSA.cs:39:17:39:29 | [input] SSA phi read(nonTainted) | SSA.cs:47:13:47:22 | access to parameter nonTainted | -| SSA.cs:39:17:39:29 | [input] SSA phi read(ssaSink0) | SSA.cs:43:9:43:24 | SSA phi read(ssaSink0) | | SSA.cs:39:21:39:28 | [post] access to local variable ssaSink2 | SSA.cs:43:15:43:22 | access to local variable ssaSink2 | | SSA.cs:39:21:39:28 | access to local variable ssaSink2 | SSA.cs:43:15:43:22 | access to local variable ssaSink2 | -| SSA.cs:41:17:41:29 | [input] SSA phi read(nonTainted) | SSA.cs:47:13:47:22 | access to parameter nonTainted | -| SSA.cs:41:17:41:29 | [input] SSA phi read(ssaSink0) | SSA.cs:43:9:43:24 | SSA phi read(ssaSink0) | | SSA.cs:41:21:41:28 | [post] access to local variable ssaSink2 | SSA.cs:43:15:43:22 | access to local variable ssaSink2 | | SSA.cs:41:21:41:28 | access to local variable ssaSink2 | SSA.cs:43:15:43:22 | access to local variable ssaSink2 | -| SSA.cs:43:9:43:24 | SSA phi read(ssaSink0) | SSA.cs:89:13:89:33 | [input] SSA phi read(ssaSink0) | -| SSA.cs:43:9:43:24 | SSA phi read(ssaSink0) | SSA.cs:91:24:91:31 | access to local variable ssaSink0 | | SSA.cs:46:16:46:23 | access to local variable nonSink2 | SSA.cs:46:16:46:28 | SSA def(nonSink2) | | SSA.cs:46:16:46:28 | SSA def(nonSink2) | SSA.cs:55:15:55:22 | access to local variable nonSink2 | | SSA.cs:46:27:46:28 | "" | SSA.cs:46:16:46:23 | access to local variable nonSink2 | @@ -737,48 +735,41 @@ | SSA.cs:49:13:49:31 | SSA def(nonSink2) | SSA.cs:51:21:51:28 | access to local variable nonSink2 | | SSA.cs:49:13:49:31 | SSA def(nonSink2) | SSA.cs:53:21:53:28 | access to local variable nonSink2 | | SSA.cs:49:24:49:31 | access to local variable nonSink0 | SSA.cs:49:13:49:20 | access to local variable nonSink2 | -| SSA.cs:49:24:49:31 | access to local variable nonSink0 | SSA.cs:51:17:51:29 | [input] SSA phi read(nonSink0) | -| SSA.cs:49:24:49:31 | access to local variable nonSink0 | SSA.cs:53:17:53:29 | [input] SSA phi read(nonSink0) | -| SSA.cs:50:17:50:26 | [post] access to parameter nonTainted | SSA.cs:51:17:51:29 | [input] SSA phi read(nonTainted) | -| SSA.cs:50:17:50:26 | [post] access to parameter nonTainted | SSA.cs:53:17:53:29 | [input] SSA phi read(nonTainted) | -| SSA.cs:50:17:50:26 | access to parameter nonTainted | SSA.cs:51:17:51:29 | [input] SSA phi read(nonTainted) | -| SSA.cs:50:17:50:26 | access to parameter nonTainted | SSA.cs:53:17:53:29 | [input] SSA phi read(nonTainted) | +| SSA.cs:49:24:49:31 | access to local variable nonSink0 | SSA.cs:63:23:63:30 | access to local variable nonSink0 | +| SSA.cs:50:17:50:26 | [post] access to parameter nonTainted | SSA.cs:89:13:89:22 | access to parameter nonTainted | +| SSA.cs:50:17:50:26 | access to parameter nonTainted | SSA.cs:89:13:89:22 | access to parameter nonTainted | | SSA.cs:50:17:50:33 | access to property Length | SSA.cs:50:17:50:37 | ... > ... | -| SSA.cs:51:17:51:29 | [input] SSA phi read(nonSink0) | SSA.cs:63:23:63:30 | access to local variable nonSink0 | -| SSA.cs:51:17:51:29 | [input] SSA phi read(nonTainted) | SSA.cs:89:13:89:22 | access to parameter nonTainted | | SSA.cs:51:21:51:28 | [post] access to local variable nonSink2 | SSA.cs:55:15:55:22 | access to local variable nonSink2 | | SSA.cs:51:21:51:28 | access to local variable nonSink2 | SSA.cs:55:15:55:22 | access to local variable nonSink2 | -| SSA.cs:53:17:53:29 | [input] SSA phi read(nonSink0) | SSA.cs:63:23:63:30 | access to local variable nonSink0 | -| SSA.cs:53:17:53:29 | [input] SSA phi read(nonTainted) | SSA.cs:89:13:89:22 | access to parameter nonTainted | | SSA.cs:53:21:53:28 | [post] access to local variable nonSink2 | SSA.cs:55:15:55:22 | access to local variable nonSink2 | | SSA.cs:53:21:53:28 | access to local variable nonSink2 | SSA.cs:55:15:55:22 | access to local variable nonSink2 | | SSA.cs:58:16:58:23 | access to local variable ssaSink3 | SSA.cs:58:16:58:33 | SSA def(ssaSink3) | | SSA.cs:58:16:58:33 | SSA def(ssaSink3) | SSA.cs:59:23:59:30 | access to local variable ssaSink3 | | SSA.cs:58:27:58:33 | access to parameter tainted | SSA.cs:58:16:58:23 | access to local variable ssaSink3 | | SSA.cs:58:27:58:33 | access to parameter tainted | SSA.cs:67:32:67:38 | access to parameter tainted | -| SSA.cs:59:23:59:30 | SSA def(ssaSink3) | SSA.cs:60:15:60:22 | access to local variable ssaSink3 | -| SSA.cs:59:23:59:30 | [post] access to local variable ssaSink3 | SSA.cs:59:23:59:30 | SSA def(ssaSink3) | -| SSA.cs:59:23:59:30 | access to local variable ssaSink3 | SSA.cs:59:23:59:30 | SSA def(ssaSink3) | -| SSA.cs:59:23:59:30 | access to local variable ssaSink3 | SSA.cs:59:23:59:30 | SSA def(ssaSink3) | -| SSA.cs:63:23:63:30 | SSA def(nonSink0) | SSA.cs:64:15:64:22 | access to local variable nonSink0 | -| SSA.cs:63:23:63:30 | [post] access to local variable nonSink0 | SSA.cs:63:23:63:30 | SSA def(nonSink0) | -| SSA.cs:63:23:63:30 | access to local variable nonSink0 | SSA.cs:63:23:63:30 | SSA def(nonSink0) | -| SSA.cs:63:23:63:30 | access to local variable nonSink0 | SSA.cs:63:23:63:30 | SSA def(nonSink0) | +| SSA.cs:59:9:59:31 | SSA def(ssaSink3) | SSA.cs:60:15:60:22 | access to local variable ssaSink3 | +| SSA.cs:59:23:59:30 | [post] access to local variable ssaSink3 | SSA.cs:59:9:59:31 | SSA def(ssaSink3) | +| SSA.cs:59:23:59:30 | access to local variable ssaSink3 | SSA.cs:59:9:59:31 | SSA def(ssaSink3) | +| SSA.cs:59:23:59:30 | access to local variable ssaSink3 | SSA.cs:59:9:59:31 | SSA def(ssaSink3) | +| SSA.cs:63:9:63:31 | SSA def(nonSink0) | SSA.cs:64:15:64:22 | access to local variable nonSink0 | +| SSA.cs:63:23:63:30 | [post] access to local variable nonSink0 | SSA.cs:63:9:63:31 | SSA def(nonSink0) | +| SSA.cs:63:23:63:30 | access to local variable nonSink0 | SSA.cs:63:9:63:31 | SSA def(nonSink0) | +| SSA.cs:63:23:63:30 | access to local variable nonSink0 | SSA.cs:63:9:63:31 | SSA def(nonSink0) | | SSA.cs:67:9:67:12 | [post] this access | SSA.cs:68:23:68:26 | this access | | SSA.cs:67:9:67:12 | this access | SSA.cs:68:23:68:26 | this access | | SSA.cs:67:9:67:14 | [post] access to field S | SSA.cs:68:23:68:28 | access to field S | | SSA.cs:67:9:67:14 | access to field S | SSA.cs:68:23:68:28 | access to field S | | SSA.cs:67:9:67:28 | access to field SsaFieldSink0 | SSA.cs:67:9:67:38 | SSA def(this.S.SsaFieldSink0) | -| SSA.cs:67:9:67:38 | SSA def(this.S.SsaFieldSink0) | SSA.cs:68:23:68:28 | SSA qualifier def(this.S.SsaFieldSink0) | +| SSA.cs:67:9:67:38 | SSA def(this.S.SsaFieldSink0) | SSA.cs:68:9:68:29 | SSA qualifier def(this.S.SsaFieldSink0) | | SSA.cs:67:32:67:38 | access to parameter tainted | SSA.cs:67:9:67:28 | access to field SsaFieldSink0 | | SSA.cs:67:32:67:38 | access to parameter tainted | SSA.cs:77:20:77:26 | access to parameter tainted | +| SSA.cs:68:9:68:29 | SSA def(this.S) | SSA.cs:69:15:69:20 | access to field S | +| SSA.cs:68:9:68:29 | SSA qualifier def(this.S.SsaFieldSink0) | SSA.cs:69:15:69:34 | access to field SsaFieldSink0 | | SSA.cs:68:23:68:26 | [post] this access | SSA.cs:69:15:69:18 | this access | | SSA.cs:68:23:68:26 | this access | SSA.cs:69:15:69:18 | this access | -| SSA.cs:68:23:68:28 | SSA def(this.S) | SSA.cs:69:15:69:20 | access to field S | -| SSA.cs:68:23:68:28 | SSA qualifier def(this.S.SsaFieldSink0) | SSA.cs:69:15:69:34 | access to field SsaFieldSink0 | -| SSA.cs:68:23:68:28 | [post] access to field S | SSA.cs:68:23:68:28 | SSA def(this.S) | -| SSA.cs:68:23:68:28 | access to field S | SSA.cs:68:23:68:28 | SSA def(this.S) | -| SSA.cs:68:23:68:28 | access to field S | SSA.cs:68:23:68:28 | SSA def(this.S) | +| SSA.cs:68:23:68:28 | [post] access to field S | SSA.cs:68:9:68:29 | SSA def(this.S) | +| SSA.cs:68:23:68:28 | access to field S | SSA.cs:68:9:68:29 | SSA def(this.S) | +| SSA.cs:68:23:68:28 | access to field S | SSA.cs:68:9:68:29 | SSA def(this.S) | | SSA.cs:69:15:69:18 | [post] this access | SSA.cs:72:9:72:12 | this access | | SSA.cs:69:15:69:18 | this access | SSA.cs:72:9:72:12 | this access | | SSA.cs:69:15:69:20 | [post] access to field S | SSA.cs:72:9:72:14 | access to field S | @@ -788,15 +779,15 @@ | SSA.cs:72:9:72:14 | [post] access to field S | SSA.cs:73:23:73:28 | access to field S | | SSA.cs:72:9:72:14 | access to field S | SSA.cs:73:23:73:28 | access to field S | | SSA.cs:72:9:72:31 | access to field SsaFieldNonSink0 | SSA.cs:72:9:72:36 | SSA def(this.S.SsaFieldNonSink0) | -| SSA.cs:72:9:72:36 | SSA def(this.S.SsaFieldNonSink0) | SSA.cs:73:23:73:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | +| SSA.cs:72:9:72:36 | SSA def(this.S.SsaFieldNonSink0) | SSA.cs:73:9:73:29 | SSA qualifier def(this.S.SsaFieldNonSink0) | | SSA.cs:72:35:72:36 | "" | SSA.cs:72:9:72:31 | access to field SsaFieldNonSink0 | +| SSA.cs:73:9:73:29 | SSA def(this.S) | SSA.cs:74:15:74:20 | access to field S | +| SSA.cs:73:9:73:29 | SSA qualifier def(this.S.SsaFieldNonSink0) | SSA.cs:74:15:74:37 | access to field SsaFieldNonSink0 | | SSA.cs:73:23:73:26 | [post] this access | SSA.cs:74:15:74:18 | this access | | SSA.cs:73:23:73:26 | this access | SSA.cs:74:15:74:18 | this access | -| SSA.cs:73:23:73:28 | SSA def(this.S) | SSA.cs:74:15:74:20 | access to field S | -| SSA.cs:73:23:73:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | SSA.cs:74:15:74:37 | access to field SsaFieldNonSink0 | -| SSA.cs:73:23:73:28 | [post] access to field S | SSA.cs:73:23:73:28 | SSA def(this.S) | -| SSA.cs:73:23:73:28 | access to field S | SSA.cs:73:23:73:28 | SSA def(this.S) | -| SSA.cs:73:23:73:28 | access to field S | SSA.cs:73:23:73:28 | SSA def(this.S) | +| SSA.cs:73:23:73:28 | [post] access to field S | SSA.cs:73:9:73:29 | SSA def(this.S) | +| SSA.cs:73:23:73:28 | access to field S | SSA.cs:73:9:73:29 | SSA def(this.S) | +| SSA.cs:73:23:73:28 | access to field S | SSA.cs:73:9:73:29 | SSA def(this.S) | | SSA.cs:74:15:74:18 | [post] this access | SSA.cs:80:9:80:12 | this access | | SSA.cs:74:15:74:18 | this access | SSA.cs:80:9:80:12 | this access | | SSA.cs:74:15:74:20 | [post] access to field S | SSA.cs:80:9:80:14 | access to field S | @@ -805,8 +796,8 @@ | SSA.cs:77:9:77:26 | SSA def(nonSink0) | SSA.cs:78:21:78:28 | access to local variable nonSink0 | | SSA.cs:77:20:77:26 | access to parameter tainted | SSA.cs:77:9:77:16 | access to local variable nonSink0 | | SSA.cs:77:20:77:26 | access to parameter tainted | SSA.cs:80:35:80:41 | access to parameter tainted | -| SSA.cs:78:21:78:28 | SSA def(nonSink0) | SSA.cs:79:15:79:22 | access to local variable nonSink0 | -| SSA.cs:78:21:78:28 | access to local variable nonSink0 | SSA.cs:78:21:78:28 | SSA def(nonSink0) | +| SSA.cs:78:9:78:29 | SSA def(nonSink0) | SSA.cs:79:15:79:22 | access to local variable nonSink0 | +| SSA.cs:78:21:78:28 | access to local variable nonSink0 | SSA.cs:78:9:78:29 | SSA def(nonSink0) | | SSA.cs:79:15:79:22 | [post] access to local variable nonSink0 | SSA.cs:102:13:102:33 | [input] SSA phi read(nonSink0) | | SSA.cs:79:15:79:22 | [post] access to local variable nonSink0 | SSA.cs:104:24:104:31 | access to local variable nonSink0 | | SSA.cs:79:15:79:22 | access to local variable nonSink0 | SSA.cs:102:13:102:33 | [input] SSA phi read(nonSink0) | @@ -817,11 +808,11 @@ | SSA.cs:80:9:80:14 | access to field S | SSA.cs:81:21:81:26 | access to field S | | SSA.cs:80:35:80:41 | access to parameter tainted | SSA.cs:80:9:80:31 | access to field SsaFieldNonSink0 | | SSA.cs:80:35:80:41 | access to parameter tainted | SSA.cs:83:35:83:41 | access to parameter tainted | +| SSA.cs:81:9:81:27 | SSA def(this.S) | SSA.cs:82:15:82:20 | access to field S | +| SSA.cs:81:9:81:27 | SSA qualifier def(this.S.SsaFieldNonSink0) | SSA.cs:82:15:82:37 | access to field SsaFieldNonSink0 | | SSA.cs:81:21:81:24 | [post] this access | SSA.cs:82:15:82:18 | this access | | SSA.cs:81:21:81:24 | this access | SSA.cs:82:15:82:18 | this access | -| SSA.cs:81:21:81:26 | SSA def(this.S) | SSA.cs:82:15:82:20 | access to field S | -| SSA.cs:81:21:81:26 | SSA qualifier def(this.S.SsaFieldNonSink0) | SSA.cs:82:15:82:37 | access to field SsaFieldNonSink0 | -| SSA.cs:81:21:81:26 | access to field S | SSA.cs:81:21:81:26 | SSA def(this.S) | +| SSA.cs:81:21:81:26 | access to field S | SSA.cs:81:9:81:27 | SSA def(this.S) | | SSA.cs:82:15:82:18 | [post] this access | SSA.cs:83:9:83:12 | this access | | SSA.cs:82:15:82:18 | this access | SSA.cs:83:9:83:12 | this access | | SSA.cs:82:15:82:20 | [post] access to field S | SSA.cs:83:9:83:14 | access to field S | @@ -852,25 +843,18 @@ | SSA.cs:91:13:91:31 | SSA def(ssaSink4) | SSA.cs:93:21:93:28 | access to local variable ssaSink4 | | SSA.cs:91:13:91:31 | SSA def(ssaSink4) | SSA.cs:95:21:95:28 | access to local variable ssaSink4 | | SSA.cs:91:24:91:31 | access to local variable ssaSink0 | SSA.cs:91:13:91:20 | access to local variable ssaSink4 | -| SSA.cs:91:24:91:31 | access to local variable ssaSink0 | SSA.cs:93:17:93:29 | [input] SSA phi read(ssaSink0) | -| SSA.cs:91:24:91:31 | access to local variable ssaSink0 | SSA.cs:95:17:95:29 | [input] SSA phi read(ssaSink0) | -| SSA.cs:92:17:92:26 | [post] access to parameter nonTainted | SSA.cs:93:17:93:29 | [input] SSA phi read(nonTainted) | -| SSA.cs:92:17:92:26 | [post] access to parameter nonTainted | SSA.cs:95:17:95:29 | [input] SSA phi read(nonTainted) | -| SSA.cs:92:17:92:26 | access to parameter nonTainted | SSA.cs:93:17:93:29 | [input] SSA phi read(nonTainted) | -| SSA.cs:92:17:92:26 | access to parameter nonTainted | SSA.cs:95:17:95:29 | [input] SSA phi read(nonTainted) | +| SSA.cs:91:24:91:31 | access to local variable ssaSink0 | SSA.cs:117:36:117:43 | access to local variable ssaSink0 | +| SSA.cs:92:17:92:26 | [post] access to parameter nonTainted | SSA.cs:102:13:102:22 | access to parameter nonTainted | +| SSA.cs:92:17:92:26 | access to parameter nonTainted | SSA.cs:102:13:102:22 | access to parameter nonTainted | | SSA.cs:92:17:92:33 | access to property Length | SSA.cs:92:17:92:37 | ... > ... | -| SSA.cs:93:17:93:29 | [input] SSA phi read(nonTainted) | SSA.cs:102:13:102:22 | access to parameter nonTainted | -| SSA.cs:93:17:93:29 | [input] SSA phi read(ssaSink0) | SSA.cs:117:36:117:43 | access to local variable ssaSink0 | | SSA.cs:93:21:93:28 | [post] access to local variable ssaSink4 | SSA.cs:97:23:97:30 | access to local variable ssaSink4 | | SSA.cs:93:21:93:28 | access to local variable ssaSink4 | SSA.cs:97:23:97:30 | access to local variable ssaSink4 | -| SSA.cs:95:17:95:29 | [input] SSA phi read(nonTainted) | SSA.cs:102:13:102:22 | access to parameter nonTainted | -| SSA.cs:95:17:95:29 | [input] SSA phi read(ssaSink0) | SSA.cs:117:36:117:43 | access to local variable ssaSink0 | | SSA.cs:95:21:95:28 | [post] access to local variable ssaSink4 | SSA.cs:97:23:97:30 | access to local variable ssaSink4 | | SSA.cs:95:21:95:28 | access to local variable ssaSink4 | SSA.cs:97:23:97:30 | access to local variable ssaSink4 | -| SSA.cs:97:23:97:30 | SSA def(ssaSink4) | SSA.cs:98:15:98:22 | access to local variable ssaSink4 | -| SSA.cs:97:23:97:30 | [post] access to local variable ssaSink4 | SSA.cs:97:23:97:30 | SSA def(ssaSink4) | -| SSA.cs:97:23:97:30 | access to local variable ssaSink4 | SSA.cs:97:23:97:30 | SSA def(ssaSink4) | -| SSA.cs:97:23:97:30 | access to local variable ssaSink4 | SSA.cs:97:23:97:30 | SSA def(ssaSink4) | +| SSA.cs:97:9:97:31 | SSA def(ssaSink4) | SSA.cs:98:15:98:22 | access to local variable ssaSink4 | +| SSA.cs:97:23:97:30 | [post] access to local variable ssaSink4 | SSA.cs:97:9:97:31 | SSA def(ssaSink4) | +| SSA.cs:97:23:97:30 | access to local variable ssaSink4 | SSA.cs:97:9:97:31 | SSA def(ssaSink4) | +| SSA.cs:97:23:97:30 | access to local variable ssaSink4 | SSA.cs:97:9:97:31 | SSA def(ssaSink4) | | SSA.cs:101:16:101:23 | access to local variable nonSink3 | SSA.cs:101:16:101:28 | SSA def(nonSink3) | | SSA.cs:101:16:101:28 | SSA def(nonSink3) | SSA.cs:110:23:110:30 | access to local variable nonSink3 | | SSA.cs:101:27:101:28 | "" | SSA.cs:101:16:101:23 | access to local variable nonSink3 | @@ -885,25 +869,18 @@ | SSA.cs:104:13:104:31 | SSA def(nonSink3) | SSA.cs:106:21:106:28 | access to local variable nonSink3 | | SSA.cs:104:13:104:31 | SSA def(nonSink3) | SSA.cs:108:21:108:28 | access to local variable nonSink3 | | SSA.cs:104:24:104:31 | access to local variable nonSink0 | SSA.cs:104:13:104:20 | access to local variable nonSink3 | -| SSA.cs:104:24:104:31 | access to local variable nonSink0 | SSA.cs:106:17:106:29 | [input] SSA phi read(nonSink0) | -| SSA.cs:104:24:104:31 | access to local variable nonSink0 | SSA.cs:108:17:108:29 | [input] SSA phi read(nonSink0) | -| SSA.cs:105:17:105:26 | [post] access to parameter nonTainted | SSA.cs:106:17:106:29 | [input] SSA phi read(nonTainted) | -| SSA.cs:105:17:105:26 | [post] access to parameter nonTainted | SSA.cs:108:17:108:29 | [input] SSA phi read(nonTainted) | -| SSA.cs:105:17:105:26 | access to parameter nonTainted | SSA.cs:106:17:106:29 | [input] SSA phi read(nonTainted) | -| SSA.cs:105:17:105:26 | access to parameter nonTainted | SSA.cs:108:17:108:29 | [input] SSA phi read(nonTainted) | +| SSA.cs:104:24:104:31 | access to local variable nonSink0 | SSA.cs:130:39:130:46 | access to local variable nonSink0 | +| SSA.cs:105:17:105:26 | [post] access to parameter nonTainted | SSA.cs:115:13:115:22 | access to parameter nonTainted | +| SSA.cs:105:17:105:26 | access to parameter nonTainted | SSA.cs:115:13:115:22 | access to parameter nonTainted | | SSA.cs:105:17:105:33 | access to property Length | SSA.cs:105:17:105:37 | ... > ... | -| SSA.cs:106:17:106:29 | [input] SSA phi read(nonSink0) | SSA.cs:130:39:130:46 | access to local variable nonSink0 | -| SSA.cs:106:17:106:29 | [input] SSA phi read(nonTainted) | SSA.cs:115:13:115:22 | access to parameter nonTainted | | SSA.cs:106:21:106:28 | [post] access to local variable nonSink3 | SSA.cs:110:23:110:30 | access to local variable nonSink3 | | SSA.cs:106:21:106:28 | access to local variable nonSink3 | SSA.cs:110:23:110:30 | access to local variable nonSink3 | -| SSA.cs:108:17:108:29 | [input] SSA phi read(nonSink0) | SSA.cs:130:39:130:46 | access to local variable nonSink0 | -| SSA.cs:108:17:108:29 | [input] SSA phi read(nonTainted) | SSA.cs:115:13:115:22 | access to parameter nonTainted | | SSA.cs:108:21:108:28 | [post] access to local variable nonSink3 | SSA.cs:110:23:110:30 | access to local variable nonSink3 | | SSA.cs:108:21:108:28 | access to local variable nonSink3 | SSA.cs:110:23:110:30 | access to local variable nonSink3 | -| SSA.cs:110:23:110:30 | SSA def(nonSink3) | SSA.cs:111:15:111:22 | access to local variable nonSink3 | -| SSA.cs:110:23:110:30 | [post] access to local variable nonSink3 | SSA.cs:110:23:110:30 | SSA def(nonSink3) | -| SSA.cs:110:23:110:30 | access to local variable nonSink3 | SSA.cs:110:23:110:30 | SSA def(nonSink3) | -| SSA.cs:110:23:110:30 | access to local variable nonSink3 | SSA.cs:110:23:110:30 | SSA def(nonSink3) | +| SSA.cs:110:9:110:31 | SSA def(nonSink3) | SSA.cs:111:15:111:22 | access to local variable nonSink3 | +| SSA.cs:110:23:110:30 | [post] access to local variable nonSink3 | SSA.cs:110:9:110:31 | SSA def(nonSink3) | +| SSA.cs:110:23:110:30 | access to local variable nonSink3 | SSA.cs:110:9:110:31 | SSA def(nonSink3) | +| SSA.cs:110:23:110:30 | access to local variable nonSink3 | SSA.cs:110:9:110:31 | SSA def(nonSink3) | | SSA.cs:114:9:114:12 | [post] this access | SSA.cs:117:13:117:16 | this access | | SSA.cs:114:9:114:12 | [post] this access | SSA.cs:123:23:123:26 | this access | | SSA.cs:114:9:114:12 | this access | SSA.cs:117:13:117:16 | this access | @@ -913,7 +890,7 @@ | SSA.cs:114:9:114:14 | access to field S | SSA.cs:115:13:115:33 | [input] SSA phi read(this.S) | | SSA.cs:114:9:114:14 | access to field S | SSA.cs:117:13:117:18 | access to field S | | SSA.cs:114:9:114:28 | access to field SsaFieldSink1 | SSA.cs:114:9:114:33 | SSA def(this.S.SsaFieldSink1) | -| SSA.cs:114:9:114:33 | SSA def(this.S.SsaFieldSink1) | SSA.cs:123:23:123:28 | SSA qualifier def(this.S.SsaFieldSink1) | +| SSA.cs:114:9:114:33 | SSA def(this.S.SsaFieldSink1) | SSA.cs:123:9:123:29 | SSA qualifier def(this.S.SsaFieldSink1) | | SSA.cs:114:32:114:33 | "" | SSA.cs:114:9:114:28 | access to field SsaFieldSink1 | | SSA.cs:115:13:115:22 | [post] access to parameter nonTainted | SSA.cs:115:13:115:33 | [input] SSA phi read(nonTainted) | | SSA.cs:115:13:115:22 | [post] access to parameter nonTainted | SSA.cs:118:17:118:26 | access to parameter nonTainted | @@ -934,32 +911,28 @@ | SSA.cs:117:13:117:43 | SSA def(this.S.SsaFieldSink1) | SSA.cs:119:21:119:40 | access to field SsaFieldSink1 | | SSA.cs:117:13:117:43 | SSA def(this.S.SsaFieldSink1) | SSA.cs:121:21:121:40 | access to field SsaFieldSink1 | | SSA.cs:117:36:117:43 | access to local variable ssaSink0 | SSA.cs:117:13:117:32 | access to field SsaFieldSink1 | -| SSA.cs:118:17:118:26 | [post] access to parameter nonTainted | SSA.cs:119:17:119:41 | [input] SSA phi read(nonTainted) | -| SSA.cs:118:17:118:26 | [post] access to parameter nonTainted | SSA.cs:121:17:121:41 | [input] SSA phi read(nonTainted) | -| SSA.cs:118:17:118:26 | access to parameter nonTainted | SSA.cs:119:17:119:41 | [input] SSA phi read(nonTainted) | -| SSA.cs:118:17:118:26 | access to parameter nonTainted | SSA.cs:121:17:121:41 | [input] SSA phi read(nonTainted) | +| SSA.cs:118:17:118:26 | [post] access to parameter nonTainted | SSA.cs:128:13:128:22 | access to parameter nonTainted | +| SSA.cs:118:17:118:26 | access to parameter nonTainted | SSA.cs:128:13:128:22 | access to parameter nonTainted | | SSA.cs:118:17:118:33 | access to property Length | SSA.cs:118:17:118:37 | ... > ... | -| SSA.cs:119:17:119:41 | [input] SSA phi read(nonTainted) | SSA.cs:128:13:128:22 | access to parameter nonTainted | | SSA.cs:119:21:119:24 | [post] this access | SSA.cs:123:23:123:26 | this access | | SSA.cs:119:21:119:24 | this access | SSA.cs:123:23:123:26 | this access | | SSA.cs:119:21:119:26 | [post] access to field S | SSA.cs:123:23:123:28 | access to field S | | SSA.cs:119:21:119:26 | access to field S | SSA.cs:123:23:123:28 | access to field S | -| SSA.cs:119:21:119:40 | [post] access to field SsaFieldSink1 | SSA.cs:123:23:123:28 | SSA qualifier def(this.S.SsaFieldSink1) | -| SSA.cs:119:21:119:40 | access to field SsaFieldSink1 | SSA.cs:123:23:123:28 | SSA qualifier def(this.S.SsaFieldSink1) | -| SSA.cs:121:17:121:41 | [input] SSA phi read(nonTainted) | SSA.cs:128:13:128:22 | access to parameter nonTainted | +| SSA.cs:119:21:119:40 | [post] access to field SsaFieldSink1 | SSA.cs:123:9:123:29 | SSA qualifier def(this.S.SsaFieldSink1) | +| SSA.cs:119:21:119:40 | access to field SsaFieldSink1 | SSA.cs:123:9:123:29 | SSA qualifier def(this.S.SsaFieldSink1) | | SSA.cs:121:21:121:24 | [post] this access | SSA.cs:123:23:123:26 | this access | | SSA.cs:121:21:121:24 | this access | SSA.cs:123:23:123:26 | this access | | SSA.cs:121:21:121:26 | [post] access to field S | SSA.cs:123:23:123:28 | access to field S | | SSA.cs:121:21:121:26 | access to field S | SSA.cs:123:23:123:28 | access to field S | -| SSA.cs:121:21:121:40 | [post] access to field SsaFieldSink1 | SSA.cs:123:23:123:28 | SSA qualifier def(this.S.SsaFieldSink1) | -| SSA.cs:121:21:121:40 | access to field SsaFieldSink1 | SSA.cs:123:23:123:28 | SSA qualifier def(this.S.SsaFieldSink1) | +| SSA.cs:121:21:121:40 | [post] access to field SsaFieldSink1 | SSA.cs:123:9:123:29 | SSA qualifier def(this.S.SsaFieldSink1) | +| SSA.cs:121:21:121:40 | access to field SsaFieldSink1 | SSA.cs:123:9:123:29 | SSA qualifier def(this.S.SsaFieldSink1) | +| SSA.cs:123:9:123:29 | SSA def(this.S) | SSA.cs:124:15:124:20 | access to field S | +| SSA.cs:123:9:123:29 | SSA qualifier def(this.S.SsaFieldSink1) | SSA.cs:124:15:124:34 | access to field SsaFieldSink1 | | SSA.cs:123:23:123:26 | [post] this access | SSA.cs:124:15:124:18 | this access | | SSA.cs:123:23:123:26 | this access | SSA.cs:124:15:124:18 | this access | -| SSA.cs:123:23:123:28 | SSA def(this.S) | SSA.cs:124:15:124:20 | access to field S | -| SSA.cs:123:23:123:28 | SSA qualifier def(this.S.SsaFieldSink1) | SSA.cs:124:15:124:34 | access to field SsaFieldSink1 | -| SSA.cs:123:23:123:28 | [post] access to field S | SSA.cs:123:23:123:28 | SSA def(this.S) | -| SSA.cs:123:23:123:28 | access to field S | SSA.cs:123:23:123:28 | SSA def(this.S) | -| SSA.cs:123:23:123:28 | access to field S | SSA.cs:123:23:123:28 | SSA def(this.S) | +| SSA.cs:123:23:123:28 | [post] access to field S | SSA.cs:123:9:123:29 | SSA def(this.S) | +| SSA.cs:123:23:123:28 | access to field S | SSA.cs:123:9:123:29 | SSA def(this.S) | +| SSA.cs:123:23:123:28 | access to field S | SSA.cs:123:9:123:29 | SSA def(this.S) | | SSA.cs:124:15:124:18 | [post] this access | SSA.cs:127:9:127:12 | this access | | SSA.cs:124:15:124:18 | this access | SSA.cs:127:9:127:12 | this access | | SSA.cs:124:15:124:20 | [post] access to field S | SSA.cs:127:9:127:14 | access to field S | @@ -973,7 +946,7 @@ | SSA.cs:127:9:127:14 | access to field S | SSA.cs:128:13:128:33 | [input] SSA phi read(this.S) | | SSA.cs:127:9:127:14 | access to field S | SSA.cs:130:13:130:18 | access to field S | | SSA.cs:127:9:127:31 | access to field SsaFieldNonSink0 | SSA.cs:127:9:127:36 | SSA def(this.S.SsaFieldNonSink0) | -| SSA.cs:127:9:127:36 | SSA def(this.S.SsaFieldNonSink0) | SSA.cs:136:23:136:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | +| SSA.cs:127:9:127:36 | SSA def(this.S.SsaFieldNonSink0) | SSA.cs:136:9:136:29 | SSA qualifier def(this.S.SsaFieldNonSink0) | | SSA.cs:127:35:127:36 | "" | SSA.cs:127:9:127:31 | access to field SsaFieldNonSink0 | | SSA.cs:128:13:128:22 | [post] access to parameter nonTainted | SSA.cs:131:17:131:26 | access to parameter nonTainted | | SSA.cs:128:13:128:22 | access to parameter nonTainted | SSA.cs:131:17:131:26 | access to parameter nonTainted | @@ -996,31 +969,31 @@ | SSA.cs:132:21:132:24 | this access | SSA.cs:136:23:136:26 | this access | | SSA.cs:132:21:132:26 | [post] access to field S | SSA.cs:136:23:136:28 | access to field S | | SSA.cs:132:21:132:26 | access to field S | SSA.cs:136:23:136:28 | access to field S | -| SSA.cs:132:21:132:43 | [post] access to field SsaFieldNonSink0 | SSA.cs:136:23:136:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | -| SSA.cs:132:21:132:43 | access to field SsaFieldNonSink0 | SSA.cs:136:23:136:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | +| SSA.cs:132:21:132:43 | [post] access to field SsaFieldNonSink0 | SSA.cs:136:9:136:29 | SSA qualifier def(this.S.SsaFieldNonSink0) | +| SSA.cs:132:21:132:43 | access to field SsaFieldNonSink0 | SSA.cs:136:9:136:29 | SSA qualifier def(this.S.SsaFieldNonSink0) | | SSA.cs:134:21:134:24 | [post] this access | SSA.cs:136:23:136:26 | this access | | SSA.cs:134:21:134:24 | this access | SSA.cs:136:23:136:26 | this access | | SSA.cs:134:21:134:26 | [post] access to field S | SSA.cs:136:23:136:28 | access to field S | | SSA.cs:134:21:134:26 | access to field S | SSA.cs:136:23:136:28 | access to field S | -| SSA.cs:134:21:134:43 | [post] access to field SsaFieldNonSink0 | SSA.cs:136:23:136:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | -| SSA.cs:134:21:134:43 | access to field SsaFieldNonSink0 | SSA.cs:136:23:136:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | +| SSA.cs:134:21:134:43 | [post] access to field SsaFieldNonSink0 | SSA.cs:136:9:136:29 | SSA qualifier def(this.S.SsaFieldNonSink0) | +| SSA.cs:134:21:134:43 | access to field SsaFieldNonSink0 | SSA.cs:136:9:136:29 | SSA qualifier def(this.S.SsaFieldNonSink0) | +| SSA.cs:136:9:136:29 | SSA def(this.S) | SSA.cs:137:15:137:20 | access to field S | +| SSA.cs:136:9:136:29 | SSA qualifier def(this.S.SsaFieldNonSink0) | SSA.cs:137:15:137:37 | access to field SsaFieldNonSink0 | | SSA.cs:136:23:136:26 | [post] this access | SSA.cs:137:15:137:18 | this access | | SSA.cs:136:23:136:26 | this access | SSA.cs:137:15:137:18 | this access | -| SSA.cs:136:23:136:28 | SSA def(this.S) | SSA.cs:137:15:137:20 | access to field S | -| SSA.cs:136:23:136:28 | SSA qualifier def(this.S.SsaFieldNonSink0) | SSA.cs:137:15:137:37 | access to field SsaFieldNonSink0 | -| SSA.cs:136:23:136:28 | [post] access to field S | SSA.cs:136:23:136:28 | SSA def(this.S) | -| SSA.cs:136:23:136:28 | access to field S | SSA.cs:136:23:136:28 | SSA def(this.S) | -| SSA.cs:136:23:136:28 | access to field S | SSA.cs:136:23:136:28 | SSA def(this.S) | +| SSA.cs:136:23:136:28 | [post] access to field S | SSA.cs:136:9:136:29 | SSA def(this.S) | +| SSA.cs:136:23:136:28 | access to field S | SSA.cs:136:9:136:29 | SSA def(this.S) | +| SSA.cs:136:23:136:28 | access to field S | SSA.cs:136:9:136:29 | SSA def(this.S) | | SSA.cs:144:34:144:34 | SSA param(t) | SSA.cs:146:13:146:13 | access to parameter t | | SSA.cs:144:34:144:34 | t | SSA.cs:144:34:144:34 | SSA param(t) | | SSA.cs:146:13:146:13 | (...) ... | SSA.cs:146:13:146:21 | ... == ... | | SSA.cs:146:13:146:13 | access to parameter t | SSA.cs:146:13:146:13 | (...) ... | | SSA.cs:146:13:146:13 | access to parameter t | SSA.cs:149:17:149:17 | access to parameter t | | SSA.cs:147:13:147:13 | access to parameter t | SSA.cs:147:13:147:26 | SSA def(t) | -| SSA.cs:147:13:147:26 | SSA def(t) | SSA.cs:144:17:144:26 | SSA phi(t) | +| SSA.cs:147:13:147:26 | SSA def(t) | SSA.cs:146:9:149:18 | SSA phi(t) | | SSA.cs:147:17:147:26 | default(...) | SSA.cs:147:13:147:13 | access to parameter t | | SSA.cs:149:13:149:13 | access to parameter t | SSA.cs:149:13:149:17 | SSA def(t) | -| SSA.cs:149:13:149:17 | SSA def(t) | SSA.cs:144:17:144:26 | SSA phi(t) | +| SSA.cs:149:13:149:17 | SSA def(t) | SSA.cs:146:9:149:18 | SSA phi(t) | | SSA.cs:149:17:149:17 | access to parameter t | SSA.cs:149:13:149:13 | access to parameter t | | SSA.cs:152:36:152:36 | SSA param(t) | SSA.cs:154:13:154:13 | access to parameter t | | SSA.cs:152:36:152:36 | t | SSA.cs:152:36:152:36 | SSA param(t) | @@ -1028,9 +1001,9 @@ | SSA.cs:154:13:154:13 | access to parameter t | SSA.cs:154:13:154:13 | (...) ... | | SSA.cs:154:13:154:13 | access to parameter t | SSA.cs:154:13:154:21 | [input] SSA phi(t) | | SSA.cs:154:13:154:13 | access to parameter t | SSA.cs:155:25:155:25 | access to parameter t | -| SSA.cs:154:13:154:21 | [input] SSA phi(t) | SSA.cs:152:17:152:28 | SSA phi(t) | -| SSA.cs:155:25:155:25 | SSA def(t) | SSA.cs:152:17:152:28 | SSA phi(t) | -| SSA.cs:155:25:155:25 | access to parameter t | SSA.cs:155:25:155:25 | SSA def(t) | +| SSA.cs:154:13:154:21 | [input] SSA phi(t) | SSA.cs:154:9:155:27 | SSA phi(t) | +| SSA.cs:155:13:155:26 | SSA def(t) | SSA.cs:154:9:155:27 | SSA phi(t) | +| SSA.cs:155:25:155:25 | access to parameter t | SSA.cs:155:13:155:26 | SSA def(t) | | SSA.cs:166:10:166:13 | this | SSA.cs:166:19:166:22 | this access | | SSA.cs:166:28:166:31 | null | SSA.cs:166:19:166:24 | access to field S | | SSA.cs:168:22:168:28 | SSA param(tainted) | SSA.cs:173:24:173:30 | access to parameter tainted | @@ -1043,19 +1016,19 @@ | SSA.cs:171:13:171:13 | access to parameter i | SSA.cs:171:13:171:15 | SSA def(i) | | SSA.cs:171:13:171:15 | ...-- | SSA.cs:171:13:171:19 | ... > ... | | SSA.cs:171:13:171:15 | SSA def(i) | SSA.cs:174:20:174:20 | access to parameter i | +| SSA.cs:172:9:179:9 | [input] SSA phi(ssaSink5) | SSA.cs:180:15:180:22 | access to local variable ssaSink5 | | SSA.cs:173:13:173:20 | access to local variable ssaSink5 | SSA.cs:173:13:173:30 | SSA def(ssaSink5) | -| SSA.cs:173:13:173:30 | SSA def(ssaSink5) | SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | +| SSA.cs:173:13:173:30 | SSA def(ssaSink5) | SSA.cs:174:13:178:13 | SSA phi read(ssaSink5) | | SSA.cs:173:24:173:30 | access to parameter tainted | SSA.cs:173:13:173:20 | access to local variable ssaSink5 | -| SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | SSA.cs:174:20:174:26 | [input] SSA phi(ssaSink5) | -| SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | SSA.cs:176:21:176:28 | access to local variable ssaSink5 | +| SSA.cs:174:13:178:13 | SSA phi read(ssaSink5) | SSA.cs:172:9:179:9 | [input] SSA phi(ssaSink5) | +| SSA.cs:174:13:178:13 | SSA phi read(ssaSink5) | SSA.cs:176:21:176:28 | access to local variable ssaSink5 | | SSA.cs:174:20:174:20 | access to parameter i | SSA.cs:174:20:174:22 | SSA def(i) | | SSA.cs:174:20:174:22 | ...-- | SSA.cs:174:20:174:26 | ... > ... | | SSA.cs:174:20:174:22 | SSA def(i) | SSA.cs:174:20:174:20 | access to parameter i | -| SSA.cs:174:20:174:26 | [input] SSA phi(ssaSink5) | SSA.cs:180:15:180:22 | access to local variable ssaSink5 | | SSA.cs:176:21:176:28 | [post] access to local variable ssaSink5 | SSA.cs:177:21:177:28 | access to local variable ssaSink5 | | SSA.cs:176:21:176:28 | access to local variable ssaSink5 | SSA.cs:177:21:177:28 | access to local variable ssaSink5 | -| SSA.cs:177:21:177:28 | [post] access to local variable ssaSink5 | SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | -| SSA.cs:177:21:177:28 | access to local variable ssaSink5 | SSA.cs:174:20:174:20 | SSA phi read(ssaSink5) | +| SSA.cs:177:21:177:28 | [post] access to local variable ssaSink5 | SSA.cs:174:13:178:13 | SSA phi read(ssaSink5) | +| SSA.cs:177:21:177:28 | access to local variable ssaSink5 | SSA.cs:174:13:178:13 | SSA phi read(ssaSink5) | | Splitting.cs:1:7:1:15 | this | Splitting.cs:1:7:1:15 | this access | | Splitting.cs:3:18:3:18 | SSA param(b) | Splitting.cs:6:13:6:13 | access to parameter b | | Splitting.cs:3:18:3:18 | b | Splitting.cs:3:18:3:18 | SSA param(b) | @@ -1067,11 +1040,11 @@ | Splitting.cs:5:17:5:23 | access to parameter tainted | Splitting.cs:5:13:5:13 | access to local variable x | | Splitting.cs:6:13:6:13 | [input] SSA phi read(x) | Splitting.cs:12:15:12:15 | access to local variable x | | Splitting.cs:6:13:6:13 | access to parameter b | Splitting.cs:13:13:13:13 | access to parameter b | +| Splitting.cs:7:9:11:9 | [input] SSA phi read(x) | Splitting.cs:12:15:12:15 | access to local variable x | | Splitting.cs:8:19:8:19 | [post] access to local variable x | Splitting.cs:9:17:9:17 | access to local variable x | | Splitting.cs:8:19:8:19 | access to local variable x | Splitting.cs:9:17:9:17 | access to local variable x | +| Splitting.cs:9:17:9:17 | access to local variable x | Splitting.cs:7:9:11:9 | [input] SSA phi read(x) | | Splitting.cs:9:17:9:17 | access to local variable x | Splitting.cs:9:17:9:25 | ... == ... | -| Splitting.cs:9:17:9:17 | access to local variable x | Splitting.cs:9:17:9:25 | [input] SSA phi read(x) | -| Splitting.cs:9:17:9:25 | [input] SSA phi read(x) | Splitting.cs:12:15:12:15 | access to local variable x | | Splitting.cs:12:15:12:15 | [post] access to local variable x | Splitting.cs:14:19:14:19 | access to local variable x | | Splitting.cs:12:15:12:15 | access to local variable x | Splitting.cs:14:19:14:19 | access to local variable x | | Splitting.cs:17:18:17:18 | SSA param(b) | Splitting.cs:20:13:20:13 | access to parameter b | @@ -1260,1208 +1233,1205 @@ | UseUseExplosion.cs:23:13:23:17 | SSA def(x) | UseUseExplosion.cs:24:3182:24:3182 | access to local variable x | | UseUseExplosion.cs:23:13:23:17 | SSA def(x) | UseUseExplosion.cs:24:3197:24:3197 | access to local variable x | | UseUseExplosion.cs:23:17:23:17 | 0 | UseUseExplosion.cs:23:13:23:13 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1712:25:1712 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1727:25:1727 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1742:25:1742 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1757:25:1757 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1772:25:1772 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1787:25:1787 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1802:25:1802 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1817:25:1817 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1832:25:1832 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1847:25:1847 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1862:25:1862 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1877:25:1877 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1892:25:1892 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1907:25:1907 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1922:25:1922 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1937:25:1937 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1952:25:1952 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1967:25:1967 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1982:25:1982 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1997:25:1997 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2012:25:2012 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2027:25:2027 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2042:25:2042 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2057:25:2057 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2072:25:2072 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2087:25:2087 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2102:25:2102 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2117:25:2117 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2132:25:2132 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2147:25:2147 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2162:25:2162 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2177:25:2177 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2192:25:2192 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2207:25:2207 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2222:25:2222 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2237:25:2237 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2252:25:2252 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2267:25:2267 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2282:25:2282 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2297:25:2297 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2312:25:2312 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2327:25:2327 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2342:25:2342 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2357:25:2357 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2372:25:2372 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2387:25:2387 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2402:25:2402 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2417:25:2417 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2432:25:2432 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2447:25:2447 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2462:25:2462 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2477:25:2477 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2492:25:2492 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2507:25:2507 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2522:25:2522 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2537:25:2537 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2552:25:2552 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2567:25:2567 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2582:25:2582 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2597:25:2597 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2612:25:2612 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2627:25:2627 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2642:25:2642 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2657:25:2657 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2672:25:2672 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2687:25:2687 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2702:25:2702 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2717:25:2717 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2732:25:2732 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2747:25:2747 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2762:25:2762 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2777:25:2777 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2792:25:2792 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2807:25:2807 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2822:25:2822 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2837:25:2837 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2852:25:2852 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2867:25:2867 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2882:25:2882 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2897:25:2897 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2912:25:2912 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2927:25:2927 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2942:25:2942 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2957:25:2957 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2972:25:2972 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2987:25:2987 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3002:25:3002 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3017:25:3017 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3032:25:3032 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3047:25:3047 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3062:25:3062 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3077:25:3077 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3092:25:3092 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3107:25:3107 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3122:25:3122 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3137:25:3137 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3152:25:3152 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3167:25:3167 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3182:25:3182 | access to local variable x | +| UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3197:25:3197 | access to local variable x | | UseUseExplosion.cs:24:13:24:16 | [post] this access | UseUseExplosion.cs:24:31:24:34 | this access | | UseUseExplosion.cs:24:13:24:16 | [post] this access | UseUseExplosion.cs:24:3193:24:3198 | this access | | UseUseExplosion.cs:24:13:24:16 | access to property Prop | UseUseExplosion.cs:24:13:24:22 | ... > ... | | UseUseExplosion.cs:24:13:24:16 | access to property Prop | UseUseExplosion.cs:24:31:24:34 | access to property Prop | -| UseUseExplosion.cs:24:13:24:16 | access to property Prop | UseUseExplosion.cs:24:3193:24:3198 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:13:24:16 | access to property Prop | UseUseExplosion.cs:24:3193:24:3199 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:13:24:16 | this access | UseUseExplosion.cs:24:31:24:34 | this access | | UseUseExplosion.cs:24:13:24:16 | this access | UseUseExplosion.cs:24:3193:24:3198 | this access | | UseUseExplosion.cs:24:31:24:34 | [post] this access | UseUseExplosion.cs:24:48:24:51 | this access | | UseUseExplosion.cs:24:31:24:34 | [post] this access | UseUseExplosion.cs:24:3178:24:3183 | this access | | UseUseExplosion.cs:24:31:24:34 | access to property Prop | UseUseExplosion.cs:24:31:24:39 | ... > ... | | UseUseExplosion.cs:24:31:24:34 | access to property Prop | UseUseExplosion.cs:24:48:24:51 | access to property Prop | -| UseUseExplosion.cs:24:31:24:34 | access to property Prop | UseUseExplosion.cs:24:3178:24:3183 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:31:24:34 | access to property Prop | UseUseExplosion.cs:24:3178:24:3184 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:31:24:34 | this access | UseUseExplosion.cs:24:48:24:51 | this access | | UseUseExplosion.cs:24:31:24:34 | this access | UseUseExplosion.cs:24:3178:24:3183 | this access | | UseUseExplosion.cs:24:48:24:51 | [post] this access | UseUseExplosion.cs:24:65:24:68 | this access | | UseUseExplosion.cs:24:48:24:51 | [post] this access | UseUseExplosion.cs:24:3163:24:3168 | this access | | UseUseExplosion.cs:24:48:24:51 | access to property Prop | UseUseExplosion.cs:24:48:24:56 | ... > ... | | UseUseExplosion.cs:24:48:24:51 | access to property Prop | UseUseExplosion.cs:24:65:24:68 | access to property Prop | -| UseUseExplosion.cs:24:48:24:51 | access to property Prop | UseUseExplosion.cs:24:3163:24:3168 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:48:24:51 | access to property Prop | UseUseExplosion.cs:24:3163:24:3169 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:48:24:51 | this access | UseUseExplosion.cs:24:65:24:68 | this access | | UseUseExplosion.cs:24:48:24:51 | this access | UseUseExplosion.cs:24:3163:24:3168 | this access | | UseUseExplosion.cs:24:65:24:68 | [post] this access | UseUseExplosion.cs:24:82:24:85 | this access | | UseUseExplosion.cs:24:65:24:68 | [post] this access | UseUseExplosion.cs:24:3148:24:3153 | this access | | UseUseExplosion.cs:24:65:24:68 | access to property Prop | UseUseExplosion.cs:24:65:24:73 | ... > ... | | UseUseExplosion.cs:24:65:24:68 | access to property Prop | UseUseExplosion.cs:24:82:24:85 | access to property Prop | -| UseUseExplosion.cs:24:65:24:68 | access to property Prop | UseUseExplosion.cs:24:3148:24:3153 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:65:24:68 | access to property Prop | UseUseExplosion.cs:24:3148:24:3154 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:65:24:68 | this access | UseUseExplosion.cs:24:82:24:85 | this access | | UseUseExplosion.cs:24:65:24:68 | this access | UseUseExplosion.cs:24:3148:24:3153 | this access | | UseUseExplosion.cs:24:82:24:85 | [post] this access | UseUseExplosion.cs:24:99:24:102 | this access | | UseUseExplosion.cs:24:82:24:85 | [post] this access | UseUseExplosion.cs:24:3133:24:3138 | this access | | UseUseExplosion.cs:24:82:24:85 | access to property Prop | UseUseExplosion.cs:24:82:24:90 | ... > ... | | UseUseExplosion.cs:24:82:24:85 | access to property Prop | UseUseExplosion.cs:24:99:24:102 | access to property Prop | -| UseUseExplosion.cs:24:82:24:85 | access to property Prop | UseUseExplosion.cs:24:3133:24:3138 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:82:24:85 | access to property Prop | UseUseExplosion.cs:24:3133:24:3139 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:82:24:85 | this access | UseUseExplosion.cs:24:99:24:102 | this access | | UseUseExplosion.cs:24:82:24:85 | this access | UseUseExplosion.cs:24:3133:24:3138 | this access | | UseUseExplosion.cs:24:99:24:102 | [post] this access | UseUseExplosion.cs:24:116:24:119 | this access | | UseUseExplosion.cs:24:99:24:102 | [post] this access | UseUseExplosion.cs:24:3118:24:3123 | this access | | UseUseExplosion.cs:24:99:24:102 | access to property Prop | UseUseExplosion.cs:24:99:24:107 | ... > ... | | UseUseExplosion.cs:24:99:24:102 | access to property Prop | UseUseExplosion.cs:24:116:24:119 | access to property Prop | -| UseUseExplosion.cs:24:99:24:102 | access to property Prop | UseUseExplosion.cs:24:3118:24:3123 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:99:24:102 | access to property Prop | UseUseExplosion.cs:24:3118:24:3124 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:99:24:102 | this access | UseUseExplosion.cs:24:116:24:119 | this access | | UseUseExplosion.cs:24:99:24:102 | this access | UseUseExplosion.cs:24:3118:24:3123 | this access | | UseUseExplosion.cs:24:116:24:119 | [post] this access | UseUseExplosion.cs:24:133:24:136 | this access | | UseUseExplosion.cs:24:116:24:119 | [post] this access | UseUseExplosion.cs:24:3103:24:3108 | this access | | UseUseExplosion.cs:24:116:24:119 | access to property Prop | UseUseExplosion.cs:24:116:24:124 | ... > ... | | UseUseExplosion.cs:24:116:24:119 | access to property Prop | UseUseExplosion.cs:24:133:24:136 | access to property Prop | -| UseUseExplosion.cs:24:116:24:119 | access to property Prop | UseUseExplosion.cs:24:3103:24:3108 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:116:24:119 | access to property Prop | UseUseExplosion.cs:24:3103:24:3109 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:116:24:119 | this access | UseUseExplosion.cs:24:133:24:136 | this access | | UseUseExplosion.cs:24:116:24:119 | this access | UseUseExplosion.cs:24:3103:24:3108 | this access | | UseUseExplosion.cs:24:133:24:136 | [post] this access | UseUseExplosion.cs:24:150:24:153 | this access | | UseUseExplosion.cs:24:133:24:136 | [post] this access | UseUseExplosion.cs:24:3088:24:3093 | this access | | UseUseExplosion.cs:24:133:24:136 | access to property Prop | UseUseExplosion.cs:24:133:24:141 | ... > ... | | UseUseExplosion.cs:24:133:24:136 | access to property Prop | UseUseExplosion.cs:24:150:24:153 | access to property Prop | -| UseUseExplosion.cs:24:133:24:136 | access to property Prop | UseUseExplosion.cs:24:3088:24:3093 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:133:24:136 | access to property Prop | UseUseExplosion.cs:24:3088:24:3094 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:133:24:136 | this access | UseUseExplosion.cs:24:150:24:153 | this access | | UseUseExplosion.cs:24:133:24:136 | this access | UseUseExplosion.cs:24:3088:24:3093 | this access | | UseUseExplosion.cs:24:150:24:153 | [post] this access | UseUseExplosion.cs:24:167:24:170 | this access | | UseUseExplosion.cs:24:150:24:153 | [post] this access | UseUseExplosion.cs:24:3073:24:3078 | this access | | UseUseExplosion.cs:24:150:24:153 | access to property Prop | UseUseExplosion.cs:24:150:24:158 | ... > ... | | UseUseExplosion.cs:24:150:24:153 | access to property Prop | UseUseExplosion.cs:24:167:24:170 | access to property Prop | -| UseUseExplosion.cs:24:150:24:153 | access to property Prop | UseUseExplosion.cs:24:3073:24:3078 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:150:24:153 | access to property Prop | UseUseExplosion.cs:24:3073:24:3079 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:150:24:153 | this access | UseUseExplosion.cs:24:167:24:170 | this access | | UseUseExplosion.cs:24:150:24:153 | this access | UseUseExplosion.cs:24:3073:24:3078 | this access | | UseUseExplosion.cs:24:167:24:170 | [post] this access | UseUseExplosion.cs:24:184:24:187 | this access | | UseUseExplosion.cs:24:167:24:170 | [post] this access | UseUseExplosion.cs:24:3058:24:3063 | this access | | UseUseExplosion.cs:24:167:24:170 | access to property Prop | UseUseExplosion.cs:24:167:24:175 | ... > ... | | UseUseExplosion.cs:24:167:24:170 | access to property Prop | UseUseExplosion.cs:24:184:24:187 | access to property Prop | -| UseUseExplosion.cs:24:167:24:170 | access to property Prop | UseUseExplosion.cs:24:3058:24:3063 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:167:24:170 | access to property Prop | UseUseExplosion.cs:24:3058:24:3064 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:167:24:170 | this access | UseUseExplosion.cs:24:184:24:187 | this access | | UseUseExplosion.cs:24:167:24:170 | this access | UseUseExplosion.cs:24:3058:24:3063 | this access | | UseUseExplosion.cs:24:184:24:187 | [post] this access | UseUseExplosion.cs:24:201:24:204 | this access | | UseUseExplosion.cs:24:184:24:187 | [post] this access | UseUseExplosion.cs:24:3043:24:3048 | this access | | UseUseExplosion.cs:24:184:24:187 | access to property Prop | UseUseExplosion.cs:24:184:24:192 | ... > ... | | UseUseExplosion.cs:24:184:24:187 | access to property Prop | UseUseExplosion.cs:24:201:24:204 | access to property Prop | -| UseUseExplosion.cs:24:184:24:187 | access to property Prop | UseUseExplosion.cs:24:3043:24:3048 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:184:24:187 | access to property Prop | UseUseExplosion.cs:24:3043:24:3049 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:184:24:187 | this access | UseUseExplosion.cs:24:201:24:204 | this access | | UseUseExplosion.cs:24:184:24:187 | this access | UseUseExplosion.cs:24:3043:24:3048 | this access | | UseUseExplosion.cs:24:201:24:204 | [post] this access | UseUseExplosion.cs:24:218:24:221 | this access | | UseUseExplosion.cs:24:201:24:204 | [post] this access | UseUseExplosion.cs:24:3028:24:3033 | this access | | UseUseExplosion.cs:24:201:24:204 | access to property Prop | UseUseExplosion.cs:24:201:24:209 | ... > ... | | UseUseExplosion.cs:24:201:24:204 | access to property Prop | UseUseExplosion.cs:24:218:24:221 | access to property Prop | -| UseUseExplosion.cs:24:201:24:204 | access to property Prop | UseUseExplosion.cs:24:3028:24:3033 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:201:24:204 | access to property Prop | UseUseExplosion.cs:24:3028:24:3034 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:201:24:204 | this access | UseUseExplosion.cs:24:218:24:221 | this access | | UseUseExplosion.cs:24:201:24:204 | this access | UseUseExplosion.cs:24:3028:24:3033 | this access | | UseUseExplosion.cs:24:218:24:221 | [post] this access | UseUseExplosion.cs:24:235:24:238 | this access | | UseUseExplosion.cs:24:218:24:221 | [post] this access | UseUseExplosion.cs:24:3013:24:3018 | this access | | UseUseExplosion.cs:24:218:24:221 | access to property Prop | UseUseExplosion.cs:24:218:24:226 | ... > ... | | UseUseExplosion.cs:24:218:24:221 | access to property Prop | UseUseExplosion.cs:24:235:24:238 | access to property Prop | -| UseUseExplosion.cs:24:218:24:221 | access to property Prop | UseUseExplosion.cs:24:3013:24:3018 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:218:24:221 | access to property Prop | UseUseExplosion.cs:24:3013:24:3019 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:218:24:221 | this access | UseUseExplosion.cs:24:235:24:238 | this access | | UseUseExplosion.cs:24:218:24:221 | this access | UseUseExplosion.cs:24:3013:24:3018 | this access | | UseUseExplosion.cs:24:235:24:238 | [post] this access | UseUseExplosion.cs:24:252:24:255 | this access | | UseUseExplosion.cs:24:235:24:238 | [post] this access | UseUseExplosion.cs:24:2998:24:3003 | this access | | UseUseExplosion.cs:24:235:24:238 | access to property Prop | UseUseExplosion.cs:24:235:24:243 | ... > ... | | UseUseExplosion.cs:24:235:24:238 | access to property Prop | UseUseExplosion.cs:24:252:24:255 | access to property Prop | -| UseUseExplosion.cs:24:235:24:238 | access to property Prop | UseUseExplosion.cs:24:2998:24:3003 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:235:24:238 | access to property Prop | UseUseExplosion.cs:24:2998:24:3004 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:235:24:238 | this access | UseUseExplosion.cs:24:252:24:255 | this access | | UseUseExplosion.cs:24:235:24:238 | this access | UseUseExplosion.cs:24:2998:24:3003 | this access | | UseUseExplosion.cs:24:252:24:255 | [post] this access | UseUseExplosion.cs:24:269:24:272 | this access | | UseUseExplosion.cs:24:252:24:255 | [post] this access | UseUseExplosion.cs:24:2983:24:2988 | this access | | UseUseExplosion.cs:24:252:24:255 | access to property Prop | UseUseExplosion.cs:24:252:24:260 | ... > ... | | UseUseExplosion.cs:24:252:24:255 | access to property Prop | UseUseExplosion.cs:24:269:24:272 | access to property Prop | -| UseUseExplosion.cs:24:252:24:255 | access to property Prop | UseUseExplosion.cs:24:2983:24:2988 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:252:24:255 | access to property Prop | UseUseExplosion.cs:24:2983:24:2989 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:252:24:255 | this access | UseUseExplosion.cs:24:269:24:272 | this access | | UseUseExplosion.cs:24:252:24:255 | this access | UseUseExplosion.cs:24:2983:24:2988 | this access | | UseUseExplosion.cs:24:269:24:272 | [post] this access | UseUseExplosion.cs:24:286:24:289 | this access | | UseUseExplosion.cs:24:269:24:272 | [post] this access | UseUseExplosion.cs:24:2968:24:2973 | this access | | UseUseExplosion.cs:24:269:24:272 | access to property Prop | UseUseExplosion.cs:24:269:24:277 | ... > ... | | UseUseExplosion.cs:24:269:24:272 | access to property Prop | UseUseExplosion.cs:24:286:24:289 | access to property Prop | -| UseUseExplosion.cs:24:269:24:272 | access to property Prop | UseUseExplosion.cs:24:2968:24:2973 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:269:24:272 | access to property Prop | UseUseExplosion.cs:24:2968:24:2974 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:269:24:272 | this access | UseUseExplosion.cs:24:286:24:289 | this access | | UseUseExplosion.cs:24:269:24:272 | this access | UseUseExplosion.cs:24:2968:24:2973 | this access | | UseUseExplosion.cs:24:286:24:289 | [post] this access | UseUseExplosion.cs:24:303:24:306 | this access | | UseUseExplosion.cs:24:286:24:289 | [post] this access | UseUseExplosion.cs:24:2953:24:2958 | this access | | UseUseExplosion.cs:24:286:24:289 | access to property Prop | UseUseExplosion.cs:24:286:24:294 | ... > ... | | UseUseExplosion.cs:24:286:24:289 | access to property Prop | UseUseExplosion.cs:24:303:24:306 | access to property Prop | -| UseUseExplosion.cs:24:286:24:289 | access to property Prop | UseUseExplosion.cs:24:2953:24:2958 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:286:24:289 | access to property Prop | UseUseExplosion.cs:24:2953:24:2959 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:286:24:289 | this access | UseUseExplosion.cs:24:303:24:306 | this access | | UseUseExplosion.cs:24:286:24:289 | this access | UseUseExplosion.cs:24:2953:24:2958 | this access | | UseUseExplosion.cs:24:303:24:306 | [post] this access | UseUseExplosion.cs:24:320:24:323 | this access | | UseUseExplosion.cs:24:303:24:306 | [post] this access | UseUseExplosion.cs:24:2938:24:2943 | this access | | UseUseExplosion.cs:24:303:24:306 | access to property Prop | UseUseExplosion.cs:24:303:24:311 | ... > ... | | UseUseExplosion.cs:24:303:24:306 | access to property Prop | UseUseExplosion.cs:24:320:24:323 | access to property Prop | -| UseUseExplosion.cs:24:303:24:306 | access to property Prop | UseUseExplosion.cs:24:2938:24:2943 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:303:24:306 | access to property Prop | UseUseExplosion.cs:24:2938:24:2944 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:303:24:306 | this access | UseUseExplosion.cs:24:320:24:323 | this access | | UseUseExplosion.cs:24:303:24:306 | this access | UseUseExplosion.cs:24:2938:24:2943 | this access | | UseUseExplosion.cs:24:320:24:323 | [post] this access | UseUseExplosion.cs:24:337:24:340 | this access | | UseUseExplosion.cs:24:320:24:323 | [post] this access | UseUseExplosion.cs:24:2923:24:2928 | this access | | UseUseExplosion.cs:24:320:24:323 | access to property Prop | UseUseExplosion.cs:24:320:24:328 | ... > ... | | UseUseExplosion.cs:24:320:24:323 | access to property Prop | UseUseExplosion.cs:24:337:24:340 | access to property Prop | -| UseUseExplosion.cs:24:320:24:323 | access to property Prop | UseUseExplosion.cs:24:2923:24:2928 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:320:24:323 | access to property Prop | UseUseExplosion.cs:24:2923:24:2929 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:320:24:323 | this access | UseUseExplosion.cs:24:337:24:340 | this access | | UseUseExplosion.cs:24:320:24:323 | this access | UseUseExplosion.cs:24:2923:24:2928 | this access | | UseUseExplosion.cs:24:337:24:340 | [post] this access | UseUseExplosion.cs:24:354:24:357 | this access | | UseUseExplosion.cs:24:337:24:340 | [post] this access | UseUseExplosion.cs:24:2908:24:2913 | this access | | UseUseExplosion.cs:24:337:24:340 | access to property Prop | UseUseExplosion.cs:24:337:24:345 | ... > ... | | UseUseExplosion.cs:24:337:24:340 | access to property Prop | UseUseExplosion.cs:24:354:24:357 | access to property Prop | -| UseUseExplosion.cs:24:337:24:340 | access to property Prop | UseUseExplosion.cs:24:2908:24:2913 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:337:24:340 | access to property Prop | UseUseExplosion.cs:24:2908:24:2914 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:337:24:340 | this access | UseUseExplosion.cs:24:354:24:357 | this access | | UseUseExplosion.cs:24:337:24:340 | this access | UseUseExplosion.cs:24:2908:24:2913 | this access | | UseUseExplosion.cs:24:354:24:357 | [post] this access | UseUseExplosion.cs:24:371:24:374 | this access | | UseUseExplosion.cs:24:354:24:357 | [post] this access | UseUseExplosion.cs:24:2893:24:2898 | this access | | UseUseExplosion.cs:24:354:24:357 | access to property Prop | UseUseExplosion.cs:24:354:24:362 | ... > ... | | UseUseExplosion.cs:24:354:24:357 | access to property Prop | UseUseExplosion.cs:24:371:24:374 | access to property Prop | -| UseUseExplosion.cs:24:354:24:357 | access to property Prop | UseUseExplosion.cs:24:2893:24:2898 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:354:24:357 | access to property Prop | UseUseExplosion.cs:24:2893:24:2899 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:354:24:357 | this access | UseUseExplosion.cs:24:371:24:374 | this access | | UseUseExplosion.cs:24:354:24:357 | this access | UseUseExplosion.cs:24:2893:24:2898 | this access | | UseUseExplosion.cs:24:371:24:374 | [post] this access | UseUseExplosion.cs:24:388:24:391 | this access | | UseUseExplosion.cs:24:371:24:374 | [post] this access | UseUseExplosion.cs:24:2878:24:2883 | this access | | UseUseExplosion.cs:24:371:24:374 | access to property Prop | UseUseExplosion.cs:24:371:24:379 | ... > ... | | UseUseExplosion.cs:24:371:24:374 | access to property Prop | UseUseExplosion.cs:24:388:24:391 | access to property Prop | -| UseUseExplosion.cs:24:371:24:374 | access to property Prop | UseUseExplosion.cs:24:2878:24:2883 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:371:24:374 | access to property Prop | UseUseExplosion.cs:24:2878:24:2884 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:371:24:374 | this access | UseUseExplosion.cs:24:388:24:391 | this access | | UseUseExplosion.cs:24:371:24:374 | this access | UseUseExplosion.cs:24:2878:24:2883 | this access | | UseUseExplosion.cs:24:388:24:391 | [post] this access | UseUseExplosion.cs:24:405:24:408 | this access | | UseUseExplosion.cs:24:388:24:391 | [post] this access | UseUseExplosion.cs:24:2863:24:2868 | this access | | UseUseExplosion.cs:24:388:24:391 | access to property Prop | UseUseExplosion.cs:24:388:24:396 | ... > ... | | UseUseExplosion.cs:24:388:24:391 | access to property Prop | UseUseExplosion.cs:24:405:24:408 | access to property Prop | -| UseUseExplosion.cs:24:388:24:391 | access to property Prop | UseUseExplosion.cs:24:2863:24:2868 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:388:24:391 | access to property Prop | UseUseExplosion.cs:24:2863:24:2869 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:388:24:391 | this access | UseUseExplosion.cs:24:405:24:408 | this access | | UseUseExplosion.cs:24:388:24:391 | this access | UseUseExplosion.cs:24:2863:24:2868 | this access | | UseUseExplosion.cs:24:405:24:408 | [post] this access | UseUseExplosion.cs:24:422:24:425 | this access | | UseUseExplosion.cs:24:405:24:408 | [post] this access | UseUseExplosion.cs:24:2848:24:2853 | this access | | UseUseExplosion.cs:24:405:24:408 | access to property Prop | UseUseExplosion.cs:24:405:24:413 | ... > ... | | UseUseExplosion.cs:24:405:24:408 | access to property Prop | UseUseExplosion.cs:24:422:24:425 | access to property Prop | -| UseUseExplosion.cs:24:405:24:408 | access to property Prop | UseUseExplosion.cs:24:2848:24:2853 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:405:24:408 | access to property Prop | UseUseExplosion.cs:24:2848:24:2854 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:405:24:408 | this access | UseUseExplosion.cs:24:422:24:425 | this access | | UseUseExplosion.cs:24:405:24:408 | this access | UseUseExplosion.cs:24:2848:24:2853 | this access | | UseUseExplosion.cs:24:422:24:425 | [post] this access | UseUseExplosion.cs:24:439:24:442 | this access | | UseUseExplosion.cs:24:422:24:425 | [post] this access | UseUseExplosion.cs:24:2833:24:2838 | this access | | UseUseExplosion.cs:24:422:24:425 | access to property Prop | UseUseExplosion.cs:24:422:24:430 | ... > ... | | UseUseExplosion.cs:24:422:24:425 | access to property Prop | UseUseExplosion.cs:24:439:24:442 | access to property Prop | -| UseUseExplosion.cs:24:422:24:425 | access to property Prop | UseUseExplosion.cs:24:2833:24:2838 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:422:24:425 | access to property Prop | UseUseExplosion.cs:24:2833:24:2839 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:422:24:425 | this access | UseUseExplosion.cs:24:439:24:442 | this access | | UseUseExplosion.cs:24:422:24:425 | this access | UseUseExplosion.cs:24:2833:24:2838 | this access | | UseUseExplosion.cs:24:439:24:442 | [post] this access | UseUseExplosion.cs:24:456:24:459 | this access | | UseUseExplosion.cs:24:439:24:442 | [post] this access | UseUseExplosion.cs:24:2818:24:2823 | this access | | UseUseExplosion.cs:24:439:24:442 | access to property Prop | UseUseExplosion.cs:24:439:24:447 | ... > ... | | UseUseExplosion.cs:24:439:24:442 | access to property Prop | UseUseExplosion.cs:24:456:24:459 | access to property Prop | -| UseUseExplosion.cs:24:439:24:442 | access to property Prop | UseUseExplosion.cs:24:2818:24:2823 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:439:24:442 | access to property Prop | UseUseExplosion.cs:24:2818:24:2824 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:439:24:442 | this access | UseUseExplosion.cs:24:456:24:459 | this access | | UseUseExplosion.cs:24:439:24:442 | this access | UseUseExplosion.cs:24:2818:24:2823 | this access | | UseUseExplosion.cs:24:456:24:459 | [post] this access | UseUseExplosion.cs:24:473:24:476 | this access | | UseUseExplosion.cs:24:456:24:459 | [post] this access | UseUseExplosion.cs:24:2803:24:2808 | this access | | UseUseExplosion.cs:24:456:24:459 | access to property Prop | UseUseExplosion.cs:24:456:24:464 | ... > ... | | UseUseExplosion.cs:24:456:24:459 | access to property Prop | UseUseExplosion.cs:24:473:24:476 | access to property Prop | -| UseUseExplosion.cs:24:456:24:459 | access to property Prop | UseUseExplosion.cs:24:2803:24:2808 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:456:24:459 | access to property Prop | UseUseExplosion.cs:24:2803:24:2809 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:456:24:459 | this access | UseUseExplosion.cs:24:473:24:476 | this access | | UseUseExplosion.cs:24:456:24:459 | this access | UseUseExplosion.cs:24:2803:24:2808 | this access | | UseUseExplosion.cs:24:473:24:476 | [post] this access | UseUseExplosion.cs:24:490:24:493 | this access | | UseUseExplosion.cs:24:473:24:476 | [post] this access | UseUseExplosion.cs:24:2788:24:2793 | this access | | UseUseExplosion.cs:24:473:24:476 | access to property Prop | UseUseExplosion.cs:24:473:24:481 | ... > ... | | UseUseExplosion.cs:24:473:24:476 | access to property Prop | UseUseExplosion.cs:24:490:24:493 | access to property Prop | -| UseUseExplosion.cs:24:473:24:476 | access to property Prop | UseUseExplosion.cs:24:2788:24:2793 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:473:24:476 | access to property Prop | UseUseExplosion.cs:24:2788:24:2794 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:473:24:476 | this access | UseUseExplosion.cs:24:490:24:493 | this access | | UseUseExplosion.cs:24:473:24:476 | this access | UseUseExplosion.cs:24:2788:24:2793 | this access | | UseUseExplosion.cs:24:490:24:493 | [post] this access | UseUseExplosion.cs:24:507:24:510 | this access | | UseUseExplosion.cs:24:490:24:493 | [post] this access | UseUseExplosion.cs:24:2773:24:2778 | this access | | UseUseExplosion.cs:24:490:24:493 | access to property Prop | UseUseExplosion.cs:24:490:24:498 | ... > ... | | UseUseExplosion.cs:24:490:24:493 | access to property Prop | UseUseExplosion.cs:24:507:24:510 | access to property Prop | -| UseUseExplosion.cs:24:490:24:493 | access to property Prop | UseUseExplosion.cs:24:2773:24:2778 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:490:24:493 | access to property Prop | UseUseExplosion.cs:24:2773:24:2779 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:490:24:493 | this access | UseUseExplosion.cs:24:507:24:510 | this access | | UseUseExplosion.cs:24:490:24:493 | this access | UseUseExplosion.cs:24:2773:24:2778 | this access | | UseUseExplosion.cs:24:507:24:510 | [post] this access | UseUseExplosion.cs:24:524:24:527 | this access | | UseUseExplosion.cs:24:507:24:510 | [post] this access | UseUseExplosion.cs:24:2758:24:2763 | this access | | UseUseExplosion.cs:24:507:24:510 | access to property Prop | UseUseExplosion.cs:24:507:24:515 | ... > ... | | UseUseExplosion.cs:24:507:24:510 | access to property Prop | UseUseExplosion.cs:24:524:24:527 | access to property Prop | -| UseUseExplosion.cs:24:507:24:510 | access to property Prop | UseUseExplosion.cs:24:2758:24:2763 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:507:24:510 | access to property Prop | UseUseExplosion.cs:24:2758:24:2764 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:507:24:510 | this access | UseUseExplosion.cs:24:524:24:527 | this access | | UseUseExplosion.cs:24:507:24:510 | this access | UseUseExplosion.cs:24:2758:24:2763 | this access | | UseUseExplosion.cs:24:524:24:527 | [post] this access | UseUseExplosion.cs:24:541:24:544 | this access | | UseUseExplosion.cs:24:524:24:527 | [post] this access | UseUseExplosion.cs:24:2743:24:2748 | this access | | UseUseExplosion.cs:24:524:24:527 | access to property Prop | UseUseExplosion.cs:24:524:24:532 | ... > ... | | UseUseExplosion.cs:24:524:24:527 | access to property Prop | UseUseExplosion.cs:24:541:24:544 | access to property Prop | -| UseUseExplosion.cs:24:524:24:527 | access to property Prop | UseUseExplosion.cs:24:2743:24:2748 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:524:24:527 | access to property Prop | UseUseExplosion.cs:24:2743:24:2749 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:524:24:527 | this access | UseUseExplosion.cs:24:541:24:544 | this access | | UseUseExplosion.cs:24:524:24:527 | this access | UseUseExplosion.cs:24:2743:24:2748 | this access | | UseUseExplosion.cs:24:541:24:544 | [post] this access | UseUseExplosion.cs:24:558:24:561 | this access | | UseUseExplosion.cs:24:541:24:544 | [post] this access | UseUseExplosion.cs:24:2728:24:2733 | this access | | UseUseExplosion.cs:24:541:24:544 | access to property Prop | UseUseExplosion.cs:24:541:24:549 | ... > ... | | UseUseExplosion.cs:24:541:24:544 | access to property Prop | UseUseExplosion.cs:24:558:24:561 | access to property Prop | -| UseUseExplosion.cs:24:541:24:544 | access to property Prop | UseUseExplosion.cs:24:2728:24:2733 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:541:24:544 | access to property Prop | UseUseExplosion.cs:24:2728:24:2734 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:541:24:544 | this access | UseUseExplosion.cs:24:558:24:561 | this access | | UseUseExplosion.cs:24:541:24:544 | this access | UseUseExplosion.cs:24:2728:24:2733 | this access | | UseUseExplosion.cs:24:558:24:561 | [post] this access | UseUseExplosion.cs:24:575:24:578 | this access | | UseUseExplosion.cs:24:558:24:561 | [post] this access | UseUseExplosion.cs:24:2713:24:2718 | this access | | UseUseExplosion.cs:24:558:24:561 | access to property Prop | UseUseExplosion.cs:24:558:24:566 | ... > ... | | UseUseExplosion.cs:24:558:24:561 | access to property Prop | UseUseExplosion.cs:24:575:24:578 | access to property Prop | -| UseUseExplosion.cs:24:558:24:561 | access to property Prop | UseUseExplosion.cs:24:2713:24:2718 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:558:24:561 | access to property Prop | UseUseExplosion.cs:24:2713:24:2719 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:558:24:561 | this access | UseUseExplosion.cs:24:575:24:578 | this access | | UseUseExplosion.cs:24:558:24:561 | this access | UseUseExplosion.cs:24:2713:24:2718 | this access | | UseUseExplosion.cs:24:575:24:578 | [post] this access | UseUseExplosion.cs:24:592:24:595 | this access | | UseUseExplosion.cs:24:575:24:578 | [post] this access | UseUseExplosion.cs:24:2698:24:2703 | this access | | UseUseExplosion.cs:24:575:24:578 | access to property Prop | UseUseExplosion.cs:24:575:24:583 | ... > ... | | UseUseExplosion.cs:24:575:24:578 | access to property Prop | UseUseExplosion.cs:24:592:24:595 | access to property Prop | -| UseUseExplosion.cs:24:575:24:578 | access to property Prop | UseUseExplosion.cs:24:2698:24:2703 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:575:24:578 | access to property Prop | UseUseExplosion.cs:24:2698:24:2704 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:575:24:578 | this access | UseUseExplosion.cs:24:592:24:595 | this access | | UseUseExplosion.cs:24:575:24:578 | this access | UseUseExplosion.cs:24:2698:24:2703 | this access | | UseUseExplosion.cs:24:592:24:595 | [post] this access | UseUseExplosion.cs:24:609:24:612 | this access | | UseUseExplosion.cs:24:592:24:595 | [post] this access | UseUseExplosion.cs:24:2683:24:2688 | this access | | UseUseExplosion.cs:24:592:24:595 | access to property Prop | UseUseExplosion.cs:24:592:24:600 | ... > ... | | UseUseExplosion.cs:24:592:24:595 | access to property Prop | UseUseExplosion.cs:24:609:24:612 | access to property Prop | -| UseUseExplosion.cs:24:592:24:595 | access to property Prop | UseUseExplosion.cs:24:2683:24:2688 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:592:24:595 | access to property Prop | UseUseExplosion.cs:24:2683:24:2689 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:592:24:595 | this access | UseUseExplosion.cs:24:609:24:612 | this access | | UseUseExplosion.cs:24:592:24:595 | this access | UseUseExplosion.cs:24:2683:24:2688 | this access | | UseUseExplosion.cs:24:609:24:612 | [post] this access | UseUseExplosion.cs:24:626:24:629 | this access | | UseUseExplosion.cs:24:609:24:612 | [post] this access | UseUseExplosion.cs:24:2668:24:2673 | this access | | UseUseExplosion.cs:24:609:24:612 | access to property Prop | UseUseExplosion.cs:24:609:24:617 | ... > ... | | UseUseExplosion.cs:24:609:24:612 | access to property Prop | UseUseExplosion.cs:24:626:24:629 | access to property Prop | -| UseUseExplosion.cs:24:609:24:612 | access to property Prop | UseUseExplosion.cs:24:2668:24:2673 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:609:24:612 | access to property Prop | UseUseExplosion.cs:24:2668:24:2674 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:609:24:612 | this access | UseUseExplosion.cs:24:626:24:629 | this access | | UseUseExplosion.cs:24:609:24:612 | this access | UseUseExplosion.cs:24:2668:24:2673 | this access | | UseUseExplosion.cs:24:626:24:629 | [post] this access | UseUseExplosion.cs:24:643:24:646 | this access | | UseUseExplosion.cs:24:626:24:629 | [post] this access | UseUseExplosion.cs:24:2653:24:2658 | this access | | UseUseExplosion.cs:24:626:24:629 | access to property Prop | UseUseExplosion.cs:24:626:24:634 | ... > ... | | UseUseExplosion.cs:24:626:24:629 | access to property Prop | UseUseExplosion.cs:24:643:24:646 | access to property Prop | -| UseUseExplosion.cs:24:626:24:629 | access to property Prop | UseUseExplosion.cs:24:2653:24:2658 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:626:24:629 | access to property Prop | UseUseExplosion.cs:24:2653:24:2659 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:626:24:629 | this access | UseUseExplosion.cs:24:643:24:646 | this access | | UseUseExplosion.cs:24:626:24:629 | this access | UseUseExplosion.cs:24:2653:24:2658 | this access | | UseUseExplosion.cs:24:643:24:646 | [post] this access | UseUseExplosion.cs:24:660:24:663 | this access | | UseUseExplosion.cs:24:643:24:646 | [post] this access | UseUseExplosion.cs:24:2638:24:2643 | this access | | UseUseExplosion.cs:24:643:24:646 | access to property Prop | UseUseExplosion.cs:24:643:24:651 | ... > ... | | UseUseExplosion.cs:24:643:24:646 | access to property Prop | UseUseExplosion.cs:24:660:24:663 | access to property Prop | -| UseUseExplosion.cs:24:643:24:646 | access to property Prop | UseUseExplosion.cs:24:2638:24:2643 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:643:24:646 | access to property Prop | UseUseExplosion.cs:24:2638:24:2644 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:643:24:646 | this access | UseUseExplosion.cs:24:660:24:663 | this access | | UseUseExplosion.cs:24:643:24:646 | this access | UseUseExplosion.cs:24:2638:24:2643 | this access | | UseUseExplosion.cs:24:660:24:663 | [post] this access | UseUseExplosion.cs:24:677:24:680 | this access | | UseUseExplosion.cs:24:660:24:663 | [post] this access | UseUseExplosion.cs:24:2623:24:2628 | this access | | UseUseExplosion.cs:24:660:24:663 | access to property Prop | UseUseExplosion.cs:24:660:24:668 | ... > ... | | UseUseExplosion.cs:24:660:24:663 | access to property Prop | UseUseExplosion.cs:24:677:24:680 | access to property Prop | -| UseUseExplosion.cs:24:660:24:663 | access to property Prop | UseUseExplosion.cs:24:2623:24:2628 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:660:24:663 | access to property Prop | UseUseExplosion.cs:24:2623:24:2629 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:660:24:663 | this access | UseUseExplosion.cs:24:677:24:680 | this access | | UseUseExplosion.cs:24:660:24:663 | this access | UseUseExplosion.cs:24:2623:24:2628 | this access | | UseUseExplosion.cs:24:677:24:680 | [post] this access | UseUseExplosion.cs:24:694:24:697 | this access | | UseUseExplosion.cs:24:677:24:680 | [post] this access | UseUseExplosion.cs:24:2608:24:2613 | this access | | UseUseExplosion.cs:24:677:24:680 | access to property Prop | UseUseExplosion.cs:24:677:24:685 | ... > ... | | UseUseExplosion.cs:24:677:24:680 | access to property Prop | UseUseExplosion.cs:24:694:24:697 | access to property Prop | -| UseUseExplosion.cs:24:677:24:680 | access to property Prop | UseUseExplosion.cs:24:2608:24:2613 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:677:24:680 | access to property Prop | UseUseExplosion.cs:24:2608:24:2614 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:677:24:680 | this access | UseUseExplosion.cs:24:694:24:697 | this access | | UseUseExplosion.cs:24:677:24:680 | this access | UseUseExplosion.cs:24:2608:24:2613 | this access | | UseUseExplosion.cs:24:694:24:697 | [post] this access | UseUseExplosion.cs:24:711:24:714 | this access | | UseUseExplosion.cs:24:694:24:697 | [post] this access | UseUseExplosion.cs:24:2593:24:2598 | this access | | UseUseExplosion.cs:24:694:24:697 | access to property Prop | UseUseExplosion.cs:24:694:24:702 | ... > ... | | UseUseExplosion.cs:24:694:24:697 | access to property Prop | UseUseExplosion.cs:24:711:24:714 | access to property Prop | -| UseUseExplosion.cs:24:694:24:697 | access to property Prop | UseUseExplosion.cs:24:2593:24:2598 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:694:24:697 | access to property Prop | UseUseExplosion.cs:24:2593:24:2599 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:694:24:697 | this access | UseUseExplosion.cs:24:711:24:714 | this access | | UseUseExplosion.cs:24:694:24:697 | this access | UseUseExplosion.cs:24:2593:24:2598 | this access | | UseUseExplosion.cs:24:711:24:714 | [post] this access | UseUseExplosion.cs:24:728:24:731 | this access | | UseUseExplosion.cs:24:711:24:714 | [post] this access | UseUseExplosion.cs:24:2578:24:2583 | this access | | UseUseExplosion.cs:24:711:24:714 | access to property Prop | UseUseExplosion.cs:24:711:24:719 | ... > ... | | UseUseExplosion.cs:24:711:24:714 | access to property Prop | UseUseExplosion.cs:24:728:24:731 | access to property Prop | -| UseUseExplosion.cs:24:711:24:714 | access to property Prop | UseUseExplosion.cs:24:2578:24:2583 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:711:24:714 | access to property Prop | UseUseExplosion.cs:24:2578:24:2584 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:711:24:714 | this access | UseUseExplosion.cs:24:728:24:731 | this access | | UseUseExplosion.cs:24:711:24:714 | this access | UseUseExplosion.cs:24:2578:24:2583 | this access | | UseUseExplosion.cs:24:728:24:731 | [post] this access | UseUseExplosion.cs:24:745:24:748 | this access | | UseUseExplosion.cs:24:728:24:731 | [post] this access | UseUseExplosion.cs:24:2563:24:2568 | this access | | UseUseExplosion.cs:24:728:24:731 | access to property Prop | UseUseExplosion.cs:24:728:24:736 | ... > ... | | UseUseExplosion.cs:24:728:24:731 | access to property Prop | UseUseExplosion.cs:24:745:24:748 | access to property Prop | -| UseUseExplosion.cs:24:728:24:731 | access to property Prop | UseUseExplosion.cs:24:2563:24:2568 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:728:24:731 | access to property Prop | UseUseExplosion.cs:24:2563:24:2569 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:728:24:731 | this access | UseUseExplosion.cs:24:745:24:748 | this access | | UseUseExplosion.cs:24:728:24:731 | this access | UseUseExplosion.cs:24:2563:24:2568 | this access | | UseUseExplosion.cs:24:745:24:748 | [post] this access | UseUseExplosion.cs:24:762:24:765 | this access | | UseUseExplosion.cs:24:745:24:748 | [post] this access | UseUseExplosion.cs:24:2548:24:2553 | this access | | UseUseExplosion.cs:24:745:24:748 | access to property Prop | UseUseExplosion.cs:24:745:24:753 | ... > ... | | UseUseExplosion.cs:24:745:24:748 | access to property Prop | UseUseExplosion.cs:24:762:24:765 | access to property Prop | -| UseUseExplosion.cs:24:745:24:748 | access to property Prop | UseUseExplosion.cs:24:2548:24:2553 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:745:24:748 | access to property Prop | UseUseExplosion.cs:24:2548:24:2554 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:745:24:748 | this access | UseUseExplosion.cs:24:762:24:765 | this access | | UseUseExplosion.cs:24:745:24:748 | this access | UseUseExplosion.cs:24:2548:24:2553 | this access | | UseUseExplosion.cs:24:762:24:765 | [post] this access | UseUseExplosion.cs:24:779:24:782 | this access | | UseUseExplosion.cs:24:762:24:765 | [post] this access | UseUseExplosion.cs:24:2533:24:2538 | this access | | UseUseExplosion.cs:24:762:24:765 | access to property Prop | UseUseExplosion.cs:24:762:24:770 | ... > ... | | UseUseExplosion.cs:24:762:24:765 | access to property Prop | UseUseExplosion.cs:24:779:24:782 | access to property Prop | -| UseUseExplosion.cs:24:762:24:765 | access to property Prop | UseUseExplosion.cs:24:2533:24:2538 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:762:24:765 | access to property Prop | UseUseExplosion.cs:24:2533:24:2539 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:762:24:765 | this access | UseUseExplosion.cs:24:779:24:782 | this access | | UseUseExplosion.cs:24:762:24:765 | this access | UseUseExplosion.cs:24:2533:24:2538 | this access | | UseUseExplosion.cs:24:779:24:782 | [post] this access | UseUseExplosion.cs:24:796:24:799 | this access | | UseUseExplosion.cs:24:779:24:782 | [post] this access | UseUseExplosion.cs:24:2518:24:2523 | this access | | UseUseExplosion.cs:24:779:24:782 | access to property Prop | UseUseExplosion.cs:24:779:24:787 | ... > ... | | UseUseExplosion.cs:24:779:24:782 | access to property Prop | UseUseExplosion.cs:24:796:24:799 | access to property Prop | -| UseUseExplosion.cs:24:779:24:782 | access to property Prop | UseUseExplosion.cs:24:2518:24:2523 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:779:24:782 | access to property Prop | UseUseExplosion.cs:24:2518:24:2524 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:779:24:782 | this access | UseUseExplosion.cs:24:796:24:799 | this access | | UseUseExplosion.cs:24:779:24:782 | this access | UseUseExplosion.cs:24:2518:24:2523 | this access | | UseUseExplosion.cs:24:796:24:799 | [post] this access | UseUseExplosion.cs:24:813:24:816 | this access | | UseUseExplosion.cs:24:796:24:799 | [post] this access | UseUseExplosion.cs:24:2503:24:2508 | this access | | UseUseExplosion.cs:24:796:24:799 | access to property Prop | UseUseExplosion.cs:24:796:24:804 | ... > ... | | UseUseExplosion.cs:24:796:24:799 | access to property Prop | UseUseExplosion.cs:24:813:24:816 | access to property Prop | -| UseUseExplosion.cs:24:796:24:799 | access to property Prop | UseUseExplosion.cs:24:2503:24:2508 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:796:24:799 | access to property Prop | UseUseExplosion.cs:24:2503:24:2509 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:796:24:799 | this access | UseUseExplosion.cs:24:813:24:816 | this access | | UseUseExplosion.cs:24:796:24:799 | this access | UseUseExplosion.cs:24:2503:24:2508 | this access | | UseUseExplosion.cs:24:813:24:816 | [post] this access | UseUseExplosion.cs:24:830:24:833 | this access | | UseUseExplosion.cs:24:813:24:816 | [post] this access | UseUseExplosion.cs:24:2488:24:2493 | this access | | UseUseExplosion.cs:24:813:24:816 | access to property Prop | UseUseExplosion.cs:24:813:24:821 | ... > ... | | UseUseExplosion.cs:24:813:24:816 | access to property Prop | UseUseExplosion.cs:24:830:24:833 | access to property Prop | -| UseUseExplosion.cs:24:813:24:816 | access to property Prop | UseUseExplosion.cs:24:2488:24:2493 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:813:24:816 | access to property Prop | UseUseExplosion.cs:24:2488:24:2494 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:813:24:816 | this access | UseUseExplosion.cs:24:830:24:833 | this access | | UseUseExplosion.cs:24:813:24:816 | this access | UseUseExplosion.cs:24:2488:24:2493 | this access | | UseUseExplosion.cs:24:830:24:833 | [post] this access | UseUseExplosion.cs:24:847:24:850 | this access | | UseUseExplosion.cs:24:830:24:833 | [post] this access | UseUseExplosion.cs:24:2473:24:2478 | this access | | UseUseExplosion.cs:24:830:24:833 | access to property Prop | UseUseExplosion.cs:24:830:24:838 | ... > ... | | UseUseExplosion.cs:24:830:24:833 | access to property Prop | UseUseExplosion.cs:24:847:24:850 | access to property Prop | -| UseUseExplosion.cs:24:830:24:833 | access to property Prop | UseUseExplosion.cs:24:2473:24:2478 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:830:24:833 | access to property Prop | UseUseExplosion.cs:24:2473:24:2479 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:830:24:833 | this access | UseUseExplosion.cs:24:847:24:850 | this access | | UseUseExplosion.cs:24:830:24:833 | this access | UseUseExplosion.cs:24:2473:24:2478 | this access | | UseUseExplosion.cs:24:847:24:850 | [post] this access | UseUseExplosion.cs:24:864:24:867 | this access | | UseUseExplosion.cs:24:847:24:850 | [post] this access | UseUseExplosion.cs:24:2458:24:2463 | this access | | UseUseExplosion.cs:24:847:24:850 | access to property Prop | UseUseExplosion.cs:24:847:24:855 | ... > ... | | UseUseExplosion.cs:24:847:24:850 | access to property Prop | UseUseExplosion.cs:24:864:24:867 | access to property Prop | -| UseUseExplosion.cs:24:847:24:850 | access to property Prop | UseUseExplosion.cs:24:2458:24:2463 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:847:24:850 | access to property Prop | UseUseExplosion.cs:24:2458:24:2464 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:847:24:850 | this access | UseUseExplosion.cs:24:864:24:867 | this access | | UseUseExplosion.cs:24:847:24:850 | this access | UseUseExplosion.cs:24:2458:24:2463 | this access | | UseUseExplosion.cs:24:864:24:867 | [post] this access | UseUseExplosion.cs:24:881:24:884 | this access | | UseUseExplosion.cs:24:864:24:867 | [post] this access | UseUseExplosion.cs:24:2443:24:2448 | this access | | UseUseExplosion.cs:24:864:24:867 | access to property Prop | UseUseExplosion.cs:24:864:24:872 | ... > ... | | UseUseExplosion.cs:24:864:24:867 | access to property Prop | UseUseExplosion.cs:24:881:24:884 | access to property Prop | -| UseUseExplosion.cs:24:864:24:867 | access to property Prop | UseUseExplosion.cs:24:2443:24:2448 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:864:24:867 | access to property Prop | UseUseExplosion.cs:24:2443:24:2449 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:864:24:867 | this access | UseUseExplosion.cs:24:881:24:884 | this access | | UseUseExplosion.cs:24:864:24:867 | this access | UseUseExplosion.cs:24:2443:24:2448 | this access | | UseUseExplosion.cs:24:881:24:884 | [post] this access | UseUseExplosion.cs:24:898:24:901 | this access | | UseUseExplosion.cs:24:881:24:884 | [post] this access | UseUseExplosion.cs:24:2428:24:2433 | this access | | UseUseExplosion.cs:24:881:24:884 | access to property Prop | UseUseExplosion.cs:24:881:24:889 | ... > ... | | UseUseExplosion.cs:24:881:24:884 | access to property Prop | UseUseExplosion.cs:24:898:24:901 | access to property Prop | -| UseUseExplosion.cs:24:881:24:884 | access to property Prop | UseUseExplosion.cs:24:2428:24:2433 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:881:24:884 | access to property Prop | UseUseExplosion.cs:24:2428:24:2434 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:881:24:884 | this access | UseUseExplosion.cs:24:898:24:901 | this access | | UseUseExplosion.cs:24:881:24:884 | this access | UseUseExplosion.cs:24:2428:24:2433 | this access | | UseUseExplosion.cs:24:898:24:901 | [post] this access | UseUseExplosion.cs:24:915:24:918 | this access | | UseUseExplosion.cs:24:898:24:901 | [post] this access | UseUseExplosion.cs:24:2413:24:2418 | this access | | UseUseExplosion.cs:24:898:24:901 | access to property Prop | UseUseExplosion.cs:24:898:24:906 | ... > ... | | UseUseExplosion.cs:24:898:24:901 | access to property Prop | UseUseExplosion.cs:24:915:24:918 | access to property Prop | -| UseUseExplosion.cs:24:898:24:901 | access to property Prop | UseUseExplosion.cs:24:2413:24:2418 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:898:24:901 | access to property Prop | UseUseExplosion.cs:24:2413:24:2419 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:898:24:901 | this access | UseUseExplosion.cs:24:915:24:918 | this access | | UseUseExplosion.cs:24:898:24:901 | this access | UseUseExplosion.cs:24:2413:24:2418 | this access | | UseUseExplosion.cs:24:915:24:918 | [post] this access | UseUseExplosion.cs:24:932:24:935 | this access | | UseUseExplosion.cs:24:915:24:918 | [post] this access | UseUseExplosion.cs:24:2398:24:2403 | this access | | UseUseExplosion.cs:24:915:24:918 | access to property Prop | UseUseExplosion.cs:24:915:24:923 | ... > ... | | UseUseExplosion.cs:24:915:24:918 | access to property Prop | UseUseExplosion.cs:24:932:24:935 | access to property Prop | -| UseUseExplosion.cs:24:915:24:918 | access to property Prop | UseUseExplosion.cs:24:2398:24:2403 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:915:24:918 | access to property Prop | UseUseExplosion.cs:24:2398:24:2404 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:915:24:918 | this access | UseUseExplosion.cs:24:932:24:935 | this access | | UseUseExplosion.cs:24:915:24:918 | this access | UseUseExplosion.cs:24:2398:24:2403 | this access | | UseUseExplosion.cs:24:932:24:935 | [post] this access | UseUseExplosion.cs:24:949:24:952 | this access | | UseUseExplosion.cs:24:932:24:935 | [post] this access | UseUseExplosion.cs:24:2383:24:2388 | this access | | UseUseExplosion.cs:24:932:24:935 | access to property Prop | UseUseExplosion.cs:24:932:24:940 | ... > ... | | UseUseExplosion.cs:24:932:24:935 | access to property Prop | UseUseExplosion.cs:24:949:24:952 | access to property Prop | -| UseUseExplosion.cs:24:932:24:935 | access to property Prop | UseUseExplosion.cs:24:2383:24:2388 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:932:24:935 | access to property Prop | UseUseExplosion.cs:24:2383:24:2389 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:932:24:935 | this access | UseUseExplosion.cs:24:949:24:952 | this access | | UseUseExplosion.cs:24:932:24:935 | this access | UseUseExplosion.cs:24:2383:24:2388 | this access | | UseUseExplosion.cs:24:949:24:952 | [post] this access | UseUseExplosion.cs:24:966:24:969 | this access | | UseUseExplosion.cs:24:949:24:952 | [post] this access | UseUseExplosion.cs:24:2368:24:2373 | this access | | UseUseExplosion.cs:24:949:24:952 | access to property Prop | UseUseExplosion.cs:24:949:24:957 | ... > ... | | UseUseExplosion.cs:24:949:24:952 | access to property Prop | UseUseExplosion.cs:24:966:24:969 | access to property Prop | -| UseUseExplosion.cs:24:949:24:952 | access to property Prop | UseUseExplosion.cs:24:2368:24:2373 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:949:24:952 | access to property Prop | UseUseExplosion.cs:24:2368:24:2374 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:949:24:952 | this access | UseUseExplosion.cs:24:966:24:969 | this access | | UseUseExplosion.cs:24:949:24:952 | this access | UseUseExplosion.cs:24:2368:24:2373 | this access | | UseUseExplosion.cs:24:966:24:969 | [post] this access | UseUseExplosion.cs:24:983:24:986 | this access | | UseUseExplosion.cs:24:966:24:969 | [post] this access | UseUseExplosion.cs:24:2353:24:2358 | this access | | UseUseExplosion.cs:24:966:24:969 | access to property Prop | UseUseExplosion.cs:24:966:24:974 | ... > ... | | UseUseExplosion.cs:24:966:24:969 | access to property Prop | UseUseExplosion.cs:24:983:24:986 | access to property Prop | -| UseUseExplosion.cs:24:966:24:969 | access to property Prop | UseUseExplosion.cs:24:2353:24:2358 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:966:24:969 | access to property Prop | UseUseExplosion.cs:24:2353:24:2359 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:966:24:969 | this access | UseUseExplosion.cs:24:983:24:986 | this access | | UseUseExplosion.cs:24:966:24:969 | this access | UseUseExplosion.cs:24:2353:24:2358 | this access | | UseUseExplosion.cs:24:983:24:986 | [post] this access | UseUseExplosion.cs:24:1000:24:1003 | this access | | UseUseExplosion.cs:24:983:24:986 | [post] this access | UseUseExplosion.cs:24:2338:24:2343 | this access | | UseUseExplosion.cs:24:983:24:986 | access to property Prop | UseUseExplosion.cs:24:983:24:991 | ... > ... | | UseUseExplosion.cs:24:983:24:986 | access to property Prop | UseUseExplosion.cs:24:1000:24:1003 | access to property Prop | -| UseUseExplosion.cs:24:983:24:986 | access to property Prop | UseUseExplosion.cs:24:2338:24:2343 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:983:24:986 | access to property Prop | UseUseExplosion.cs:24:2338:24:2344 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:983:24:986 | this access | UseUseExplosion.cs:24:1000:24:1003 | this access | | UseUseExplosion.cs:24:983:24:986 | this access | UseUseExplosion.cs:24:2338:24:2343 | this access | | UseUseExplosion.cs:24:1000:24:1003 | [post] this access | UseUseExplosion.cs:24:1017:24:1020 | this access | | UseUseExplosion.cs:24:1000:24:1003 | [post] this access | UseUseExplosion.cs:24:2323:24:2328 | this access | | UseUseExplosion.cs:24:1000:24:1003 | access to property Prop | UseUseExplosion.cs:24:1000:24:1008 | ... > ... | | UseUseExplosion.cs:24:1000:24:1003 | access to property Prop | UseUseExplosion.cs:24:1017:24:1020 | access to property Prop | -| UseUseExplosion.cs:24:1000:24:1003 | access to property Prop | UseUseExplosion.cs:24:2323:24:2328 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1000:24:1003 | access to property Prop | UseUseExplosion.cs:24:2323:24:2329 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1000:24:1003 | this access | UseUseExplosion.cs:24:1017:24:1020 | this access | | UseUseExplosion.cs:24:1000:24:1003 | this access | UseUseExplosion.cs:24:2323:24:2328 | this access | | UseUseExplosion.cs:24:1017:24:1020 | [post] this access | UseUseExplosion.cs:24:1034:24:1037 | this access | | UseUseExplosion.cs:24:1017:24:1020 | [post] this access | UseUseExplosion.cs:24:2308:24:2313 | this access | | UseUseExplosion.cs:24:1017:24:1020 | access to property Prop | UseUseExplosion.cs:24:1017:24:1025 | ... > ... | | UseUseExplosion.cs:24:1017:24:1020 | access to property Prop | UseUseExplosion.cs:24:1034:24:1037 | access to property Prop | -| UseUseExplosion.cs:24:1017:24:1020 | access to property Prop | UseUseExplosion.cs:24:2308:24:2313 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1017:24:1020 | access to property Prop | UseUseExplosion.cs:24:2308:24:2314 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1017:24:1020 | this access | UseUseExplosion.cs:24:1034:24:1037 | this access | | UseUseExplosion.cs:24:1017:24:1020 | this access | UseUseExplosion.cs:24:2308:24:2313 | this access | | UseUseExplosion.cs:24:1034:24:1037 | [post] this access | UseUseExplosion.cs:24:1051:24:1054 | this access | | UseUseExplosion.cs:24:1034:24:1037 | [post] this access | UseUseExplosion.cs:24:2293:24:2298 | this access | | UseUseExplosion.cs:24:1034:24:1037 | access to property Prop | UseUseExplosion.cs:24:1034:24:1042 | ... > ... | | UseUseExplosion.cs:24:1034:24:1037 | access to property Prop | UseUseExplosion.cs:24:1051:24:1054 | access to property Prop | -| UseUseExplosion.cs:24:1034:24:1037 | access to property Prop | UseUseExplosion.cs:24:2293:24:2298 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1034:24:1037 | access to property Prop | UseUseExplosion.cs:24:2293:24:2299 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1034:24:1037 | this access | UseUseExplosion.cs:24:1051:24:1054 | this access | | UseUseExplosion.cs:24:1034:24:1037 | this access | UseUseExplosion.cs:24:2293:24:2298 | this access | | UseUseExplosion.cs:24:1051:24:1054 | [post] this access | UseUseExplosion.cs:24:1068:24:1071 | this access | | UseUseExplosion.cs:24:1051:24:1054 | [post] this access | UseUseExplosion.cs:24:2278:24:2283 | this access | | UseUseExplosion.cs:24:1051:24:1054 | access to property Prop | UseUseExplosion.cs:24:1051:24:1059 | ... > ... | | UseUseExplosion.cs:24:1051:24:1054 | access to property Prop | UseUseExplosion.cs:24:1068:24:1071 | access to property Prop | -| UseUseExplosion.cs:24:1051:24:1054 | access to property Prop | UseUseExplosion.cs:24:2278:24:2283 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1051:24:1054 | access to property Prop | UseUseExplosion.cs:24:2278:24:2284 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1051:24:1054 | this access | UseUseExplosion.cs:24:1068:24:1071 | this access | | UseUseExplosion.cs:24:1051:24:1054 | this access | UseUseExplosion.cs:24:2278:24:2283 | this access | | UseUseExplosion.cs:24:1068:24:1071 | [post] this access | UseUseExplosion.cs:24:1085:24:1088 | this access | | UseUseExplosion.cs:24:1068:24:1071 | [post] this access | UseUseExplosion.cs:24:2263:24:2268 | this access | | UseUseExplosion.cs:24:1068:24:1071 | access to property Prop | UseUseExplosion.cs:24:1068:24:1076 | ... > ... | | UseUseExplosion.cs:24:1068:24:1071 | access to property Prop | UseUseExplosion.cs:24:1085:24:1088 | access to property Prop | -| UseUseExplosion.cs:24:1068:24:1071 | access to property Prop | UseUseExplosion.cs:24:2263:24:2268 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1068:24:1071 | access to property Prop | UseUseExplosion.cs:24:2263:24:2269 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1068:24:1071 | this access | UseUseExplosion.cs:24:1085:24:1088 | this access | | UseUseExplosion.cs:24:1068:24:1071 | this access | UseUseExplosion.cs:24:2263:24:2268 | this access | | UseUseExplosion.cs:24:1085:24:1088 | [post] this access | UseUseExplosion.cs:24:1102:24:1105 | this access | | UseUseExplosion.cs:24:1085:24:1088 | [post] this access | UseUseExplosion.cs:24:2248:24:2253 | this access | | UseUseExplosion.cs:24:1085:24:1088 | access to property Prop | UseUseExplosion.cs:24:1085:24:1093 | ... > ... | | UseUseExplosion.cs:24:1085:24:1088 | access to property Prop | UseUseExplosion.cs:24:1102:24:1105 | access to property Prop | -| UseUseExplosion.cs:24:1085:24:1088 | access to property Prop | UseUseExplosion.cs:24:2248:24:2253 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1085:24:1088 | access to property Prop | UseUseExplosion.cs:24:2248:24:2254 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1085:24:1088 | this access | UseUseExplosion.cs:24:1102:24:1105 | this access | | UseUseExplosion.cs:24:1085:24:1088 | this access | UseUseExplosion.cs:24:2248:24:2253 | this access | | UseUseExplosion.cs:24:1102:24:1105 | [post] this access | UseUseExplosion.cs:24:1119:24:1122 | this access | | UseUseExplosion.cs:24:1102:24:1105 | [post] this access | UseUseExplosion.cs:24:2233:24:2238 | this access | | UseUseExplosion.cs:24:1102:24:1105 | access to property Prop | UseUseExplosion.cs:24:1102:24:1110 | ... > ... | | UseUseExplosion.cs:24:1102:24:1105 | access to property Prop | UseUseExplosion.cs:24:1119:24:1122 | access to property Prop | -| UseUseExplosion.cs:24:1102:24:1105 | access to property Prop | UseUseExplosion.cs:24:2233:24:2238 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1102:24:1105 | access to property Prop | UseUseExplosion.cs:24:2233:24:2239 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1102:24:1105 | this access | UseUseExplosion.cs:24:1119:24:1122 | this access | | UseUseExplosion.cs:24:1102:24:1105 | this access | UseUseExplosion.cs:24:2233:24:2238 | this access | | UseUseExplosion.cs:24:1119:24:1122 | [post] this access | UseUseExplosion.cs:24:1136:24:1139 | this access | | UseUseExplosion.cs:24:1119:24:1122 | [post] this access | UseUseExplosion.cs:24:2218:24:2223 | this access | | UseUseExplosion.cs:24:1119:24:1122 | access to property Prop | UseUseExplosion.cs:24:1119:24:1127 | ... > ... | | UseUseExplosion.cs:24:1119:24:1122 | access to property Prop | UseUseExplosion.cs:24:1136:24:1139 | access to property Prop | -| UseUseExplosion.cs:24:1119:24:1122 | access to property Prop | UseUseExplosion.cs:24:2218:24:2223 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1119:24:1122 | access to property Prop | UseUseExplosion.cs:24:2218:24:2224 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1119:24:1122 | this access | UseUseExplosion.cs:24:1136:24:1139 | this access | | UseUseExplosion.cs:24:1119:24:1122 | this access | UseUseExplosion.cs:24:2218:24:2223 | this access | | UseUseExplosion.cs:24:1136:24:1139 | [post] this access | UseUseExplosion.cs:24:1153:24:1156 | this access | | UseUseExplosion.cs:24:1136:24:1139 | [post] this access | UseUseExplosion.cs:24:2203:24:2208 | this access | | UseUseExplosion.cs:24:1136:24:1139 | access to property Prop | UseUseExplosion.cs:24:1136:24:1144 | ... > ... | | UseUseExplosion.cs:24:1136:24:1139 | access to property Prop | UseUseExplosion.cs:24:1153:24:1156 | access to property Prop | -| UseUseExplosion.cs:24:1136:24:1139 | access to property Prop | UseUseExplosion.cs:24:2203:24:2208 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1136:24:1139 | access to property Prop | UseUseExplosion.cs:24:2203:24:2209 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1136:24:1139 | this access | UseUseExplosion.cs:24:1153:24:1156 | this access | | UseUseExplosion.cs:24:1136:24:1139 | this access | UseUseExplosion.cs:24:2203:24:2208 | this access | | UseUseExplosion.cs:24:1153:24:1156 | [post] this access | UseUseExplosion.cs:24:1170:24:1173 | this access | | UseUseExplosion.cs:24:1153:24:1156 | [post] this access | UseUseExplosion.cs:24:2188:24:2193 | this access | | UseUseExplosion.cs:24:1153:24:1156 | access to property Prop | UseUseExplosion.cs:24:1153:24:1161 | ... > ... | | UseUseExplosion.cs:24:1153:24:1156 | access to property Prop | UseUseExplosion.cs:24:1170:24:1173 | access to property Prop | -| UseUseExplosion.cs:24:1153:24:1156 | access to property Prop | UseUseExplosion.cs:24:2188:24:2193 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1153:24:1156 | access to property Prop | UseUseExplosion.cs:24:2188:24:2194 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1153:24:1156 | this access | UseUseExplosion.cs:24:1170:24:1173 | this access | | UseUseExplosion.cs:24:1153:24:1156 | this access | UseUseExplosion.cs:24:2188:24:2193 | this access | | UseUseExplosion.cs:24:1170:24:1173 | [post] this access | UseUseExplosion.cs:24:1187:24:1190 | this access | | UseUseExplosion.cs:24:1170:24:1173 | [post] this access | UseUseExplosion.cs:24:2173:24:2178 | this access | | UseUseExplosion.cs:24:1170:24:1173 | access to property Prop | UseUseExplosion.cs:24:1170:24:1178 | ... > ... | | UseUseExplosion.cs:24:1170:24:1173 | access to property Prop | UseUseExplosion.cs:24:1187:24:1190 | access to property Prop | -| UseUseExplosion.cs:24:1170:24:1173 | access to property Prop | UseUseExplosion.cs:24:2173:24:2178 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1170:24:1173 | access to property Prop | UseUseExplosion.cs:24:2173:24:2179 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1170:24:1173 | this access | UseUseExplosion.cs:24:1187:24:1190 | this access | | UseUseExplosion.cs:24:1170:24:1173 | this access | UseUseExplosion.cs:24:2173:24:2178 | this access | | UseUseExplosion.cs:24:1187:24:1190 | [post] this access | UseUseExplosion.cs:24:1204:24:1207 | this access | | UseUseExplosion.cs:24:1187:24:1190 | [post] this access | UseUseExplosion.cs:24:2158:24:2163 | this access | | UseUseExplosion.cs:24:1187:24:1190 | access to property Prop | UseUseExplosion.cs:24:1187:24:1195 | ... > ... | | UseUseExplosion.cs:24:1187:24:1190 | access to property Prop | UseUseExplosion.cs:24:1204:24:1207 | access to property Prop | -| UseUseExplosion.cs:24:1187:24:1190 | access to property Prop | UseUseExplosion.cs:24:2158:24:2163 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1187:24:1190 | access to property Prop | UseUseExplosion.cs:24:2158:24:2164 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1187:24:1190 | this access | UseUseExplosion.cs:24:1204:24:1207 | this access | | UseUseExplosion.cs:24:1187:24:1190 | this access | UseUseExplosion.cs:24:2158:24:2163 | this access | | UseUseExplosion.cs:24:1204:24:1207 | [post] this access | UseUseExplosion.cs:24:1221:24:1224 | this access | | UseUseExplosion.cs:24:1204:24:1207 | [post] this access | UseUseExplosion.cs:24:2143:24:2148 | this access | | UseUseExplosion.cs:24:1204:24:1207 | access to property Prop | UseUseExplosion.cs:24:1204:24:1212 | ... > ... | | UseUseExplosion.cs:24:1204:24:1207 | access to property Prop | UseUseExplosion.cs:24:1221:24:1224 | access to property Prop | -| UseUseExplosion.cs:24:1204:24:1207 | access to property Prop | UseUseExplosion.cs:24:2143:24:2148 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1204:24:1207 | access to property Prop | UseUseExplosion.cs:24:2143:24:2149 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1204:24:1207 | this access | UseUseExplosion.cs:24:1221:24:1224 | this access | | UseUseExplosion.cs:24:1204:24:1207 | this access | UseUseExplosion.cs:24:2143:24:2148 | this access | | UseUseExplosion.cs:24:1221:24:1224 | [post] this access | UseUseExplosion.cs:24:1238:24:1241 | this access | | UseUseExplosion.cs:24:1221:24:1224 | [post] this access | UseUseExplosion.cs:24:2128:24:2133 | this access | | UseUseExplosion.cs:24:1221:24:1224 | access to property Prop | UseUseExplosion.cs:24:1221:24:1229 | ... > ... | | UseUseExplosion.cs:24:1221:24:1224 | access to property Prop | UseUseExplosion.cs:24:1238:24:1241 | access to property Prop | -| UseUseExplosion.cs:24:1221:24:1224 | access to property Prop | UseUseExplosion.cs:24:2128:24:2133 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1221:24:1224 | access to property Prop | UseUseExplosion.cs:24:2128:24:2134 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1221:24:1224 | this access | UseUseExplosion.cs:24:1238:24:1241 | this access | | UseUseExplosion.cs:24:1221:24:1224 | this access | UseUseExplosion.cs:24:2128:24:2133 | this access | | UseUseExplosion.cs:24:1238:24:1241 | [post] this access | UseUseExplosion.cs:24:1255:24:1258 | this access | | UseUseExplosion.cs:24:1238:24:1241 | [post] this access | UseUseExplosion.cs:24:2113:24:2118 | this access | | UseUseExplosion.cs:24:1238:24:1241 | access to property Prop | UseUseExplosion.cs:24:1238:24:1246 | ... > ... | | UseUseExplosion.cs:24:1238:24:1241 | access to property Prop | UseUseExplosion.cs:24:1255:24:1258 | access to property Prop | -| UseUseExplosion.cs:24:1238:24:1241 | access to property Prop | UseUseExplosion.cs:24:2113:24:2118 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1238:24:1241 | access to property Prop | UseUseExplosion.cs:24:2113:24:2119 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1238:24:1241 | this access | UseUseExplosion.cs:24:1255:24:1258 | this access | | UseUseExplosion.cs:24:1238:24:1241 | this access | UseUseExplosion.cs:24:2113:24:2118 | this access | | UseUseExplosion.cs:24:1255:24:1258 | [post] this access | UseUseExplosion.cs:24:1272:24:1275 | this access | | UseUseExplosion.cs:24:1255:24:1258 | [post] this access | UseUseExplosion.cs:24:2098:24:2103 | this access | | UseUseExplosion.cs:24:1255:24:1258 | access to property Prop | UseUseExplosion.cs:24:1255:24:1263 | ... > ... | | UseUseExplosion.cs:24:1255:24:1258 | access to property Prop | UseUseExplosion.cs:24:1272:24:1275 | access to property Prop | -| UseUseExplosion.cs:24:1255:24:1258 | access to property Prop | UseUseExplosion.cs:24:2098:24:2103 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1255:24:1258 | access to property Prop | UseUseExplosion.cs:24:2098:24:2104 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1255:24:1258 | this access | UseUseExplosion.cs:24:1272:24:1275 | this access | | UseUseExplosion.cs:24:1255:24:1258 | this access | UseUseExplosion.cs:24:2098:24:2103 | this access | | UseUseExplosion.cs:24:1272:24:1275 | [post] this access | UseUseExplosion.cs:24:1289:24:1292 | this access | | UseUseExplosion.cs:24:1272:24:1275 | [post] this access | UseUseExplosion.cs:24:2083:24:2088 | this access | | UseUseExplosion.cs:24:1272:24:1275 | access to property Prop | UseUseExplosion.cs:24:1272:24:1280 | ... > ... | | UseUseExplosion.cs:24:1272:24:1275 | access to property Prop | UseUseExplosion.cs:24:1289:24:1292 | access to property Prop | -| UseUseExplosion.cs:24:1272:24:1275 | access to property Prop | UseUseExplosion.cs:24:2083:24:2088 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1272:24:1275 | access to property Prop | UseUseExplosion.cs:24:2083:24:2089 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1272:24:1275 | this access | UseUseExplosion.cs:24:1289:24:1292 | this access | | UseUseExplosion.cs:24:1272:24:1275 | this access | UseUseExplosion.cs:24:2083:24:2088 | this access | | UseUseExplosion.cs:24:1289:24:1292 | [post] this access | UseUseExplosion.cs:24:1306:24:1309 | this access | | UseUseExplosion.cs:24:1289:24:1292 | [post] this access | UseUseExplosion.cs:24:2068:24:2073 | this access | | UseUseExplosion.cs:24:1289:24:1292 | access to property Prop | UseUseExplosion.cs:24:1289:24:1297 | ... > ... | | UseUseExplosion.cs:24:1289:24:1292 | access to property Prop | UseUseExplosion.cs:24:1306:24:1309 | access to property Prop | -| UseUseExplosion.cs:24:1289:24:1292 | access to property Prop | UseUseExplosion.cs:24:2068:24:2073 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1289:24:1292 | access to property Prop | UseUseExplosion.cs:24:2068:24:2074 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1289:24:1292 | this access | UseUseExplosion.cs:24:1306:24:1309 | this access | | UseUseExplosion.cs:24:1289:24:1292 | this access | UseUseExplosion.cs:24:2068:24:2073 | this access | | UseUseExplosion.cs:24:1306:24:1309 | [post] this access | UseUseExplosion.cs:24:1323:24:1326 | this access | | UseUseExplosion.cs:24:1306:24:1309 | [post] this access | UseUseExplosion.cs:24:2053:24:2058 | this access | | UseUseExplosion.cs:24:1306:24:1309 | access to property Prop | UseUseExplosion.cs:24:1306:24:1314 | ... > ... | | UseUseExplosion.cs:24:1306:24:1309 | access to property Prop | UseUseExplosion.cs:24:1323:24:1326 | access to property Prop | -| UseUseExplosion.cs:24:1306:24:1309 | access to property Prop | UseUseExplosion.cs:24:2053:24:2058 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1306:24:1309 | access to property Prop | UseUseExplosion.cs:24:2053:24:2059 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1306:24:1309 | this access | UseUseExplosion.cs:24:1323:24:1326 | this access | | UseUseExplosion.cs:24:1306:24:1309 | this access | UseUseExplosion.cs:24:2053:24:2058 | this access | | UseUseExplosion.cs:24:1323:24:1326 | [post] this access | UseUseExplosion.cs:24:1340:24:1343 | this access | | UseUseExplosion.cs:24:1323:24:1326 | [post] this access | UseUseExplosion.cs:24:2038:24:2043 | this access | | UseUseExplosion.cs:24:1323:24:1326 | access to property Prop | UseUseExplosion.cs:24:1323:24:1331 | ... > ... | | UseUseExplosion.cs:24:1323:24:1326 | access to property Prop | UseUseExplosion.cs:24:1340:24:1343 | access to property Prop | -| UseUseExplosion.cs:24:1323:24:1326 | access to property Prop | UseUseExplosion.cs:24:2038:24:2043 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1323:24:1326 | access to property Prop | UseUseExplosion.cs:24:2038:24:2044 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1323:24:1326 | this access | UseUseExplosion.cs:24:1340:24:1343 | this access | | UseUseExplosion.cs:24:1323:24:1326 | this access | UseUseExplosion.cs:24:2038:24:2043 | this access | | UseUseExplosion.cs:24:1340:24:1343 | [post] this access | UseUseExplosion.cs:24:1357:24:1360 | this access | | UseUseExplosion.cs:24:1340:24:1343 | [post] this access | UseUseExplosion.cs:24:2023:24:2028 | this access | | UseUseExplosion.cs:24:1340:24:1343 | access to property Prop | UseUseExplosion.cs:24:1340:24:1348 | ... > ... | | UseUseExplosion.cs:24:1340:24:1343 | access to property Prop | UseUseExplosion.cs:24:1357:24:1360 | access to property Prop | -| UseUseExplosion.cs:24:1340:24:1343 | access to property Prop | UseUseExplosion.cs:24:2023:24:2028 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1340:24:1343 | access to property Prop | UseUseExplosion.cs:24:2023:24:2029 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1340:24:1343 | this access | UseUseExplosion.cs:24:1357:24:1360 | this access | | UseUseExplosion.cs:24:1340:24:1343 | this access | UseUseExplosion.cs:24:2023:24:2028 | this access | | UseUseExplosion.cs:24:1357:24:1360 | [post] this access | UseUseExplosion.cs:24:1374:24:1377 | this access | | UseUseExplosion.cs:24:1357:24:1360 | [post] this access | UseUseExplosion.cs:24:2008:24:2013 | this access | | UseUseExplosion.cs:24:1357:24:1360 | access to property Prop | UseUseExplosion.cs:24:1357:24:1365 | ... > ... | | UseUseExplosion.cs:24:1357:24:1360 | access to property Prop | UseUseExplosion.cs:24:1374:24:1377 | access to property Prop | -| UseUseExplosion.cs:24:1357:24:1360 | access to property Prop | UseUseExplosion.cs:24:2008:24:2013 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1357:24:1360 | access to property Prop | UseUseExplosion.cs:24:2008:24:2014 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1357:24:1360 | this access | UseUseExplosion.cs:24:1374:24:1377 | this access | | UseUseExplosion.cs:24:1357:24:1360 | this access | UseUseExplosion.cs:24:2008:24:2013 | this access | | UseUseExplosion.cs:24:1374:24:1377 | [post] this access | UseUseExplosion.cs:24:1391:24:1394 | this access | | UseUseExplosion.cs:24:1374:24:1377 | [post] this access | UseUseExplosion.cs:24:1993:24:1998 | this access | | UseUseExplosion.cs:24:1374:24:1377 | access to property Prop | UseUseExplosion.cs:24:1374:24:1382 | ... > ... | | UseUseExplosion.cs:24:1374:24:1377 | access to property Prop | UseUseExplosion.cs:24:1391:24:1394 | access to property Prop | -| UseUseExplosion.cs:24:1374:24:1377 | access to property Prop | UseUseExplosion.cs:24:1993:24:1998 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1374:24:1377 | access to property Prop | UseUseExplosion.cs:24:1993:24:1999 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1374:24:1377 | this access | UseUseExplosion.cs:24:1391:24:1394 | this access | | UseUseExplosion.cs:24:1374:24:1377 | this access | UseUseExplosion.cs:24:1993:24:1998 | this access | | UseUseExplosion.cs:24:1391:24:1394 | [post] this access | UseUseExplosion.cs:24:1408:24:1411 | this access | | UseUseExplosion.cs:24:1391:24:1394 | [post] this access | UseUseExplosion.cs:24:1978:24:1983 | this access | | UseUseExplosion.cs:24:1391:24:1394 | access to property Prop | UseUseExplosion.cs:24:1391:24:1399 | ... > ... | | UseUseExplosion.cs:24:1391:24:1394 | access to property Prop | UseUseExplosion.cs:24:1408:24:1411 | access to property Prop | -| UseUseExplosion.cs:24:1391:24:1394 | access to property Prop | UseUseExplosion.cs:24:1978:24:1983 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1391:24:1394 | access to property Prop | UseUseExplosion.cs:24:1978:24:1984 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1391:24:1394 | this access | UseUseExplosion.cs:24:1408:24:1411 | this access | | UseUseExplosion.cs:24:1391:24:1394 | this access | UseUseExplosion.cs:24:1978:24:1983 | this access | | UseUseExplosion.cs:24:1408:24:1411 | [post] this access | UseUseExplosion.cs:24:1425:24:1428 | this access | | UseUseExplosion.cs:24:1408:24:1411 | [post] this access | UseUseExplosion.cs:24:1963:24:1968 | this access | | UseUseExplosion.cs:24:1408:24:1411 | access to property Prop | UseUseExplosion.cs:24:1408:24:1416 | ... > ... | | UseUseExplosion.cs:24:1408:24:1411 | access to property Prop | UseUseExplosion.cs:24:1425:24:1428 | access to property Prop | -| UseUseExplosion.cs:24:1408:24:1411 | access to property Prop | UseUseExplosion.cs:24:1963:24:1968 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1408:24:1411 | access to property Prop | UseUseExplosion.cs:24:1963:24:1969 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1408:24:1411 | this access | UseUseExplosion.cs:24:1425:24:1428 | this access | | UseUseExplosion.cs:24:1408:24:1411 | this access | UseUseExplosion.cs:24:1963:24:1968 | this access | | UseUseExplosion.cs:24:1425:24:1428 | [post] this access | UseUseExplosion.cs:24:1442:24:1445 | this access | | UseUseExplosion.cs:24:1425:24:1428 | [post] this access | UseUseExplosion.cs:24:1948:24:1953 | this access | | UseUseExplosion.cs:24:1425:24:1428 | access to property Prop | UseUseExplosion.cs:24:1425:24:1433 | ... > ... | | UseUseExplosion.cs:24:1425:24:1428 | access to property Prop | UseUseExplosion.cs:24:1442:24:1445 | access to property Prop | -| UseUseExplosion.cs:24:1425:24:1428 | access to property Prop | UseUseExplosion.cs:24:1948:24:1953 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1425:24:1428 | access to property Prop | UseUseExplosion.cs:24:1948:24:1954 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1425:24:1428 | this access | UseUseExplosion.cs:24:1442:24:1445 | this access | | UseUseExplosion.cs:24:1425:24:1428 | this access | UseUseExplosion.cs:24:1948:24:1953 | this access | | UseUseExplosion.cs:24:1442:24:1445 | [post] this access | UseUseExplosion.cs:24:1459:24:1462 | this access | | UseUseExplosion.cs:24:1442:24:1445 | [post] this access | UseUseExplosion.cs:24:1933:24:1938 | this access | | UseUseExplosion.cs:24:1442:24:1445 | access to property Prop | UseUseExplosion.cs:24:1442:24:1450 | ... > ... | | UseUseExplosion.cs:24:1442:24:1445 | access to property Prop | UseUseExplosion.cs:24:1459:24:1462 | access to property Prop | -| UseUseExplosion.cs:24:1442:24:1445 | access to property Prop | UseUseExplosion.cs:24:1933:24:1938 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1442:24:1445 | access to property Prop | UseUseExplosion.cs:24:1933:24:1939 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1442:24:1445 | this access | UseUseExplosion.cs:24:1459:24:1462 | this access | | UseUseExplosion.cs:24:1442:24:1445 | this access | UseUseExplosion.cs:24:1933:24:1938 | this access | | UseUseExplosion.cs:24:1459:24:1462 | [post] this access | UseUseExplosion.cs:24:1476:24:1479 | this access | | UseUseExplosion.cs:24:1459:24:1462 | [post] this access | UseUseExplosion.cs:24:1918:24:1923 | this access | | UseUseExplosion.cs:24:1459:24:1462 | access to property Prop | UseUseExplosion.cs:24:1459:24:1467 | ... > ... | | UseUseExplosion.cs:24:1459:24:1462 | access to property Prop | UseUseExplosion.cs:24:1476:24:1479 | access to property Prop | -| UseUseExplosion.cs:24:1459:24:1462 | access to property Prop | UseUseExplosion.cs:24:1918:24:1923 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1459:24:1462 | access to property Prop | UseUseExplosion.cs:24:1918:24:1924 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1459:24:1462 | this access | UseUseExplosion.cs:24:1476:24:1479 | this access | | UseUseExplosion.cs:24:1459:24:1462 | this access | UseUseExplosion.cs:24:1918:24:1923 | this access | | UseUseExplosion.cs:24:1476:24:1479 | [post] this access | UseUseExplosion.cs:24:1493:24:1496 | this access | | UseUseExplosion.cs:24:1476:24:1479 | [post] this access | UseUseExplosion.cs:24:1903:24:1908 | this access | | UseUseExplosion.cs:24:1476:24:1479 | access to property Prop | UseUseExplosion.cs:24:1476:24:1484 | ... > ... | | UseUseExplosion.cs:24:1476:24:1479 | access to property Prop | UseUseExplosion.cs:24:1493:24:1496 | access to property Prop | -| UseUseExplosion.cs:24:1476:24:1479 | access to property Prop | UseUseExplosion.cs:24:1903:24:1908 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1476:24:1479 | access to property Prop | UseUseExplosion.cs:24:1903:24:1909 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1476:24:1479 | this access | UseUseExplosion.cs:24:1493:24:1496 | this access | | UseUseExplosion.cs:24:1476:24:1479 | this access | UseUseExplosion.cs:24:1903:24:1908 | this access | | UseUseExplosion.cs:24:1493:24:1496 | [post] this access | UseUseExplosion.cs:24:1510:24:1513 | this access | | UseUseExplosion.cs:24:1493:24:1496 | [post] this access | UseUseExplosion.cs:24:1888:24:1893 | this access | | UseUseExplosion.cs:24:1493:24:1496 | access to property Prop | UseUseExplosion.cs:24:1493:24:1501 | ... > ... | | UseUseExplosion.cs:24:1493:24:1496 | access to property Prop | UseUseExplosion.cs:24:1510:24:1513 | access to property Prop | -| UseUseExplosion.cs:24:1493:24:1496 | access to property Prop | UseUseExplosion.cs:24:1888:24:1893 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1493:24:1496 | access to property Prop | UseUseExplosion.cs:24:1888:24:1894 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1493:24:1496 | this access | UseUseExplosion.cs:24:1510:24:1513 | this access | | UseUseExplosion.cs:24:1493:24:1496 | this access | UseUseExplosion.cs:24:1888:24:1893 | this access | | UseUseExplosion.cs:24:1510:24:1513 | [post] this access | UseUseExplosion.cs:24:1527:24:1530 | this access | | UseUseExplosion.cs:24:1510:24:1513 | [post] this access | UseUseExplosion.cs:24:1873:24:1878 | this access | | UseUseExplosion.cs:24:1510:24:1513 | access to property Prop | UseUseExplosion.cs:24:1510:24:1518 | ... > ... | | UseUseExplosion.cs:24:1510:24:1513 | access to property Prop | UseUseExplosion.cs:24:1527:24:1530 | access to property Prop | -| UseUseExplosion.cs:24:1510:24:1513 | access to property Prop | UseUseExplosion.cs:24:1873:24:1878 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1510:24:1513 | access to property Prop | UseUseExplosion.cs:24:1873:24:1879 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1510:24:1513 | this access | UseUseExplosion.cs:24:1527:24:1530 | this access | | UseUseExplosion.cs:24:1510:24:1513 | this access | UseUseExplosion.cs:24:1873:24:1878 | this access | | UseUseExplosion.cs:24:1527:24:1530 | [post] this access | UseUseExplosion.cs:24:1544:24:1547 | this access | | UseUseExplosion.cs:24:1527:24:1530 | [post] this access | UseUseExplosion.cs:24:1858:24:1863 | this access | | UseUseExplosion.cs:24:1527:24:1530 | access to property Prop | UseUseExplosion.cs:24:1527:24:1535 | ... > ... | | UseUseExplosion.cs:24:1527:24:1530 | access to property Prop | UseUseExplosion.cs:24:1544:24:1547 | access to property Prop | -| UseUseExplosion.cs:24:1527:24:1530 | access to property Prop | UseUseExplosion.cs:24:1858:24:1863 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1527:24:1530 | access to property Prop | UseUseExplosion.cs:24:1858:24:1864 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1527:24:1530 | this access | UseUseExplosion.cs:24:1544:24:1547 | this access | | UseUseExplosion.cs:24:1527:24:1530 | this access | UseUseExplosion.cs:24:1858:24:1863 | this access | | UseUseExplosion.cs:24:1544:24:1547 | [post] this access | UseUseExplosion.cs:24:1561:24:1564 | this access | | UseUseExplosion.cs:24:1544:24:1547 | [post] this access | UseUseExplosion.cs:24:1843:24:1848 | this access | | UseUseExplosion.cs:24:1544:24:1547 | access to property Prop | UseUseExplosion.cs:24:1544:24:1552 | ... > ... | | UseUseExplosion.cs:24:1544:24:1547 | access to property Prop | UseUseExplosion.cs:24:1561:24:1564 | access to property Prop | -| UseUseExplosion.cs:24:1544:24:1547 | access to property Prop | UseUseExplosion.cs:24:1843:24:1848 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1544:24:1547 | access to property Prop | UseUseExplosion.cs:24:1843:24:1849 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1544:24:1547 | this access | UseUseExplosion.cs:24:1561:24:1564 | this access | | UseUseExplosion.cs:24:1544:24:1547 | this access | UseUseExplosion.cs:24:1843:24:1848 | this access | | UseUseExplosion.cs:24:1561:24:1564 | [post] this access | UseUseExplosion.cs:24:1577:24:1580 | this access | | UseUseExplosion.cs:24:1561:24:1564 | [post] this access | UseUseExplosion.cs:24:1828:24:1833 | this access | | UseUseExplosion.cs:24:1561:24:1564 | access to property Prop | UseUseExplosion.cs:24:1561:24:1568 | ... > ... | | UseUseExplosion.cs:24:1561:24:1564 | access to property Prop | UseUseExplosion.cs:24:1577:24:1580 | access to property Prop | -| UseUseExplosion.cs:24:1561:24:1564 | access to property Prop | UseUseExplosion.cs:24:1828:24:1833 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1561:24:1564 | access to property Prop | UseUseExplosion.cs:24:1828:24:1834 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1561:24:1564 | this access | UseUseExplosion.cs:24:1577:24:1580 | this access | | UseUseExplosion.cs:24:1561:24:1564 | this access | UseUseExplosion.cs:24:1828:24:1833 | this access | | UseUseExplosion.cs:24:1577:24:1580 | [post] this access | UseUseExplosion.cs:24:1593:24:1596 | this access | | UseUseExplosion.cs:24:1577:24:1580 | [post] this access | UseUseExplosion.cs:24:1813:24:1818 | this access | | UseUseExplosion.cs:24:1577:24:1580 | access to property Prop | UseUseExplosion.cs:24:1577:24:1584 | ... > ... | | UseUseExplosion.cs:24:1577:24:1580 | access to property Prop | UseUseExplosion.cs:24:1593:24:1596 | access to property Prop | -| UseUseExplosion.cs:24:1577:24:1580 | access to property Prop | UseUseExplosion.cs:24:1813:24:1818 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1577:24:1580 | access to property Prop | UseUseExplosion.cs:24:1813:24:1819 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1577:24:1580 | this access | UseUseExplosion.cs:24:1593:24:1596 | this access | | UseUseExplosion.cs:24:1577:24:1580 | this access | UseUseExplosion.cs:24:1813:24:1818 | this access | | UseUseExplosion.cs:24:1593:24:1596 | [post] this access | UseUseExplosion.cs:24:1609:24:1612 | this access | | UseUseExplosion.cs:24:1593:24:1596 | [post] this access | UseUseExplosion.cs:24:1798:24:1803 | this access | | UseUseExplosion.cs:24:1593:24:1596 | access to property Prop | UseUseExplosion.cs:24:1593:24:1600 | ... > ... | | UseUseExplosion.cs:24:1593:24:1596 | access to property Prop | UseUseExplosion.cs:24:1609:24:1612 | access to property Prop | -| UseUseExplosion.cs:24:1593:24:1596 | access to property Prop | UseUseExplosion.cs:24:1798:24:1803 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1593:24:1596 | access to property Prop | UseUseExplosion.cs:24:1798:24:1804 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1593:24:1596 | this access | UseUseExplosion.cs:24:1609:24:1612 | this access | | UseUseExplosion.cs:24:1593:24:1596 | this access | UseUseExplosion.cs:24:1798:24:1803 | this access | | UseUseExplosion.cs:24:1609:24:1612 | [post] this access | UseUseExplosion.cs:24:1625:24:1628 | this access | | UseUseExplosion.cs:24:1609:24:1612 | [post] this access | UseUseExplosion.cs:24:1783:24:1788 | this access | | UseUseExplosion.cs:24:1609:24:1612 | access to property Prop | UseUseExplosion.cs:24:1609:24:1616 | ... > ... | | UseUseExplosion.cs:24:1609:24:1612 | access to property Prop | UseUseExplosion.cs:24:1625:24:1628 | access to property Prop | -| UseUseExplosion.cs:24:1609:24:1612 | access to property Prop | UseUseExplosion.cs:24:1783:24:1788 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1609:24:1612 | access to property Prop | UseUseExplosion.cs:24:1783:24:1789 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1609:24:1612 | this access | UseUseExplosion.cs:24:1625:24:1628 | this access | | UseUseExplosion.cs:24:1609:24:1612 | this access | UseUseExplosion.cs:24:1783:24:1788 | this access | | UseUseExplosion.cs:24:1625:24:1628 | [post] this access | UseUseExplosion.cs:24:1641:24:1644 | this access | | UseUseExplosion.cs:24:1625:24:1628 | [post] this access | UseUseExplosion.cs:24:1768:24:1773 | this access | | UseUseExplosion.cs:24:1625:24:1628 | access to property Prop | UseUseExplosion.cs:24:1625:24:1632 | ... > ... | | UseUseExplosion.cs:24:1625:24:1628 | access to property Prop | UseUseExplosion.cs:24:1641:24:1644 | access to property Prop | -| UseUseExplosion.cs:24:1625:24:1628 | access to property Prop | UseUseExplosion.cs:24:1768:24:1773 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1625:24:1628 | access to property Prop | UseUseExplosion.cs:24:1768:24:1774 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1625:24:1628 | this access | UseUseExplosion.cs:24:1641:24:1644 | this access | | UseUseExplosion.cs:24:1625:24:1628 | this access | UseUseExplosion.cs:24:1768:24:1773 | this access | | UseUseExplosion.cs:24:1641:24:1644 | [post] this access | UseUseExplosion.cs:24:1657:24:1660 | this access | | UseUseExplosion.cs:24:1641:24:1644 | [post] this access | UseUseExplosion.cs:24:1753:24:1758 | this access | | UseUseExplosion.cs:24:1641:24:1644 | access to property Prop | UseUseExplosion.cs:24:1641:24:1648 | ... > ... | | UseUseExplosion.cs:24:1641:24:1644 | access to property Prop | UseUseExplosion.cs:24:1657:24:1660 | access to property Prop | -| UseUseExplosion.cs:24:1641:24:1644 | access to property Prop | UseUseExplosion.cs:24:1753:24:1758 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1641:24:1644 | access to property Prop | UseUseExplosion.cs:24:1753:24:1759 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1641:24:1644 | this access | UseUseExplosion.cs:24:1657:24:1660 | this access | | UseUseExplosion.cs:24:1641:24:1644 | this access | UseUseExplosion.cs:24:1753:24:1758 | this access | | UseUseExplosion.cs:24:1657:24:1660 | [post] this access | UseUseExplosion.cs:24:1673:24:1676 | this access | | UseUseExplosion.cs:24:1657:24:1660 | [post] this access | UseUseExplosion.cs:24:1738:24:1743 | this access | | UseUseExplosion.cs:24:1657:24:1660 | access to property Prop | UseUseExplosion.cs:24:1657:24:1664 | ... > ... | | UseUseExplosion.cs:24:1657:24:1660 | access to property Prop | UseUseExplosion.cs:24:1673:24:1676 | access to property Prop | -| UseUseExplosion.cs:24:1657:24:1660 | access to property Prop | UseUseExplosion.cs:24:1738:24:1743 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1657:24:1660 | access to property Prop | UseUseExplosion.cs:24:1738:24:1744 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1657:24:1660 | this access | UseUseExplosion.cs:24:1673:24:1676 | this access | | UseUseExplosion.cs:24:1657:24:1660 | this access | UseUseExplosion.cs:24:1738:24:1743 | this access | | UseUseExplosion.cs:24:1673:24:1676 | [post] this access | UseUseExplosion.cs:24:1689:24:1692 | this access | | UseUseExplosion.cs:24:1673:24:1676 | [post] this access | UseUseExplosion.cs:24:1723:24:1728 | this access | | UseUseExplosion.cs:24:1673:24:1676 | access to property Prop | UseUseExplosion.cs:24:1673:24:1680 | ... > ... | | UseUseExplosion.cs:24:1673:24:1676 | access to property Prop | UseUseExplosion.cs:24:1689:24:1692 | access to property Prop | -| UseUseExplosion.cs:24:1673:24:1676 | access to property Prop | UseUseExplosion.cs:24:1723:24:1728 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1673:24:1676 | access to property Prop | UseUseExplosion.cs:24:1723:24:1729 | [input] SSA phi read(this.Prop) | | UseUseExplosion.cs:24:1673:24:1676 | this access | UseUseExplosion.cs:24:1689:24:1692 | this access | | UseUseExplosion.cs:24:1673:24:1676 | this access | UseUseExplosion.cs:24:1723:24:1728 | this access | | UseUseExplosion.cs:24:1689:24:1692 | [post] this access | UseUseExplosion.cs:24:1708:24:1713 | this access | | UseUseExplosion.cs:24:1689:24:1692 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1689:24:1692 | access to property Prop | UseUseExplosion.cs:24:1689:24:1696 | ... > ... | -| UseUseExplosion.cs:24:1689:24:1692 | access to property Prop | UseUseExplosion.cs:24:1699:24:1701 | [input] SSA phi read(this.Prop) | -| UseUseExplosion.cs:24:1689:24:1692 | access to property Prop | UseUseExplosion.cs:24:1708:24:1713 | [input] SSA phi read(this.Prop) | +| UseUseExplosion.cs:24:1689:24:1692 | access to property Prop | UseUseExplosion.cs:25:13:25:16 | access to property Prop | | UseUseExplosion.cs:24:1689:24:1692 | this access | UseUseExplosion.cs:24:1708:24:1713 | this access | | UseUseExplosion.cs:24:1689:24:1692 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1699:24:1701 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | -| UseUseExplosion.cs:24:1699:24:1701 | [input] SSA phi read(x) | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1708:24:1713 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1699:24:1701 | [input] SSA phi read(x) | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1708:24:1713 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1708:24:1713 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1712:24:1712 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1723:24:1728 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1712:24:1712 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1723:24:1728 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1723:24:1728 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1727:24:1727 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1738:24:1743 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1723:24:1729 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1727:24:1727 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1738:24:1743 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1738:24:1743 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1742:24:1742 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1753:24:1758 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1738:24:1744 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1742:24:1742 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1753:24:1758 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1753:24:1758 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1757:24:1757 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1768:24:1773 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1753:24:1759 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1757:24:1757 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1768:24:1773 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1768:24:1773 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1772:24:1772 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1783:24:1788 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1768:24:1774 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1772:24:1772 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1783:24:1788 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1783:24:1788 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1787:24:1787 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1798:24:1803 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1783:24:1789 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1787:24:1787 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1798:24:1803 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1798:24:1803 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1802:24:1802 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1813:24:1818 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1798:24:1804 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1802:24:1802 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1813:24:1818 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1813:24:1818 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1817:24:1817 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1828:24:1833 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1813:24:1819 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1817:24:1817 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1828:24:1833 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1828:24:1833 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1832:24:1832 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1843:24:1848 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1828:24:1834 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1832:24:1832 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1843:24:1848 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1843:24:1848 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1847:24:1847 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1858:24:1863 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1843:24:1849 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1847:24:1847 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1858:24:1863 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1858:24:1863 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1862:24:1862 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1873:24:1878 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1858:24:1864 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1862:24:1862 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1873:24:1878 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1873:24:1878 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1877:24:1877 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1888:24:1893 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1873:24:1879 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1877:24:1877 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1888:24:1893 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1888:24:1893 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1892:24:1892 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1903:24:1908 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1888:24:1894 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1892:24:1892 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1903:24:1908 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1903:24:1908 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1907:24:1907 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1918:24:1923 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1903:24:1909 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1907:24:1907 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1918:24:1923 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1918:24:1923 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1922:24:1922 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1933:24:1938 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1918:24:1924 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1922:24:1922 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1933:24:1938 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1933:24:1938 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1937:24:1937 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1948:24:1953 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1933:24:1939 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1937:24:1937 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1948:24:1953 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1948:24:1953 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1952:24:1952 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1963:24:1968 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1948:24:1954 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1952:24:1952 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1963:24:1968 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1963:24:1968 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1967:24:1967 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1978:24:1983 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1963:24:1969 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1967:24:1967 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1978:24:1983 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1978:24:1983 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1982:24:1982 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:1993:24:1998 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1978:24:1984 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1982:24:1982 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:1993:24:1998 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:1993:24:1998 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:1997:24:1997 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2008:24:2013 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1993:24:1999 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:1997:24:1997 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2008:24:2013 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2008:24:2013 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2012:24:2012 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2023:24:2028 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2008:24:2014 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2012:24:2012 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2023:24:2028 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2023:24:2028 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2027:24:2027 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2038:24:2043 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2023:24:2029 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2027:24:2027 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2038:24:2043 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2038:24:2043 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2042:24:2042 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2053:24:2058 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2038:24:2044 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2042:24:2042 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2053:24:2058 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2053:24:2058 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2057:24:2057 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2068:24:2073 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2053:24:2059 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2057:24:2057 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2068:24:2073 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2068:24:2073 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2072:24:2072 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2083:24:2088 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2068:24:2074 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2072:24:2072 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2083:24:2088 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2083:24:2088 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2087:24:2087 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2098:24:2103 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2083:24:2089 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2087:24:2087 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2098:24:2103 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2098:24:2103 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2102:24:2102 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2113:24:2118 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2098:24:2104 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2102:24:2102 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2113:24:2118 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2113:24:2118 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2117:24:2117 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2128:24:2133 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2113:24:2119 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2117:24:2117 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2128:24:2133 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2128:24:2133 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2132:24:2132 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2143:24:2148 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2128:24:2134 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2132:24:2132 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2143:24:2148 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2143:24:2148 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2147:24:2147 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2158:24:2163 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2143:24:2149 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2147:24:2147 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2158:24:2163 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2158:24:2163 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2162:24:2162 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2173:24:2178 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2158:24:2164 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2162:24:2162 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2173:24:2178 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2173:24:2178 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2177:24:2177 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2188:24:2193 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2173:24:2179 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2177:24:2177 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2188:24:2193 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2188:24:2193 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2192:24:2192 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2203:24:2208 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2188:24:2194 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2192:24:2192 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2203:24:2208 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2203:24:2208 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2207:24:2207 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2218:24:2223 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2203:24:2209 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2207:24:2207 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2218:24:2223 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2218:24:2223 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2222:24:2222 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2233:24:2238 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2218:24:2224 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2222:24:2222 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2233:24:2238 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2233:24:2238 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2237:24:2237 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2248:24:2253 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2233:24:2239 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2237:24:2237 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2248:24:2253 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2248:24:2253 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2252:24:2252 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2263:24:2268 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2248:24:2254 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2252:24:2252 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2263:24:2268 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2263:24:2268 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2267:24:2267 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2278:24:2283 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2263:24:2269 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2267:24:2267 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2278:24:2283 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2278:24:2283 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2282:24:2282 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2293:24:2298 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2278:24:2284 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2282:24:2282 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2293:24:2298 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2293:24:2298 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2297:24:2297 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2308:24:2313 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2293:24:2299 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2297:24:2297 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2308:24:2313 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2308:24:2313 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2312:24:2312 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2323:24:2328 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2308:24:2314 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2312:24:2312 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2323:24:2328 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2323:24:2328 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2327:24:2327 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2338:24:2343 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2323:24:2329 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2327:24:2327 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2338:24:2343 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2338:24:2343 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2342:24:2342 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2353:24:2358 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2338:24:2344 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2342:24:2342 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2353:24:2358 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2353:24:2358 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2357:24:2357 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2368:24:2373 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2353:24:2359 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2357:24:2357 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2368:24:2373 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2368:24:2373 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2372:24:2372 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2383:24:2388 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2368:24:2374 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2372:24:2372 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2383:24:2388 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2383:24:2388 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2387:24:2387 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2398:24:2403 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2383:24:2389 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2387:24:2387 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2398:24:2403 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2398:24:2403 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2402:24:2402 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2413:24:2418 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2398:24:2404 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2402:24:2402 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2413:24:2418 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2413:24:2418 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2417:24:2417 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2428:24:2433 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2413:24:2419 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2417:24:2417 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2428:24:2433 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2428:24:2433 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2432:24:2432 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2443:24:2448 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2428:24:2434 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2432:24:2432 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2443:24:2448 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2443:24:2448 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2447:24:2447 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2458:24:2463 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2443:24:2449 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2447:24:2447 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2458:24:2463 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2458:24:2463 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2462:24:2462 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2473:24:2478 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2458:24:2464 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2462:24:2462 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2473:24:2478 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2473:24:2478 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2477:24:2477 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2488:24:2493 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2473:24:2479 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2477:24:2477 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2488:24:2493 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2488:24:2493 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2492:24:2492 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2503:24:2508 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2488:24:2494 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2492:24:2492 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2503:24:2508 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2503:24:2508 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2507:24:2507 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2518:24:2523 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2503:24:2509 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2507:24:2507 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2518:24:2523 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2518:24:2523 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2522:24:2522 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2533:24:2538 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2518:24:2524 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2522:24:2522 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2533:24:2538 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2533:24:2538 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2537:24:2537 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2548:24:2553 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2533:24:2539 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2537:24:2537 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2548:24:2553 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2548:24:2553 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2552:24:2552 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2563:24:2568 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2548:24:2554 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2552:24:2552 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2563:24:2568 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2563:24:2568 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2567:24:2567 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2578:24:2583 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2563:24:2569 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2567:24:2567 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2578:24:2583 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2578:24:2583 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2582:24:2582 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2593:24:2598 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2578:24:2584 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2582:24:2582 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2593:24:2598 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2593:24:2598 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2597:24:2597 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2608:24:2613 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2593:24:2599 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2597:24:2597 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2608:24:2613 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2608:24:2613 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2612:24:2612 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2623:24:2628 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2608:24:2614 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2612:24:2612 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2623:24:2628 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2623:24:2628 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2627:24:2627 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2638:24:2643 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2623:24:2629 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2627:24:2627 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2638:24:2643 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2638:24:2643 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2642:24:2642 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2653:24:2658 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2638:24:2644 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2642:24:2642 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2653:24:2658 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2653:24:2658 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2657:24:2657 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2668:24:2673 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2653:24:2659 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2657:24:2657 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2668:24:2673 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2668:24:2673 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2672:24:2672 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2683:24:2688 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2668:24:2674 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2672:24:2672 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2683:24:2688 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2683:24:2688 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2687:24:2687 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2698:24:2703 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2683:24:2689 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2687:24:2687 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2698:24:2703 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2698:24:2703 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2702:24:2702 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2713:24:2718 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2698:24:2704 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2702:24:2702 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2713:24:2718 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2713:24:2718 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2717:24:2717 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2728:24:2733 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2713:24:2719 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2717:24:2717 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2728:24:2733 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2728:24:2733 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2732:24:2732 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2743:24:2748 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2728:24:2734 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2732:24:2732 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2743:24:2748 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2743:24:2748 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2747:24:2747 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2758:24:2763 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2743:24:2749 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2747:24:2747 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2758:24:2763 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2758:24:2763 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2762:24:2762 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2773:24:2778 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2758:24:2764 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2762:24:2762 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2773:24:2778 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2773:24:2778 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2777:24:2777 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2788:24:2793 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2773:24:2779 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2777:24:2777 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2788:24:2793 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2788:24:2793 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2792:24:2792 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2803:24:2808 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2788:24:2794 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2792:24:2792 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2803:24:2808 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2803:24:2808 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2807:24:2807 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2818:24:2823 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2803:24:2809 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2807:24:2807 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2818:24:2823 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2818:24:2823 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2822:24:2822 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2833:24:2838 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2818:24:2824 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2822:24:2822 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2833:24:2838 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2833:24:2838 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2837:24:2837 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2848:24:2853 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2833:24:2839 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2837:24:2837 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2848:24:2853 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2848:24:2853 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2852:24:2852 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2863:24:2868 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2848:24:2854 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2852:24:2852 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2863:24:2868 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2863:24:2868 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2867:24:2867 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2878:24:2883 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2863:24:2869 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2867:24:2867 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2878:24:2883 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2878:24:2883 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2882:24:2882 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2893:24:2898 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2878:24:2884 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2882:24:2882 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2893:24:2898 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2893:24:2898 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2897:24:2897 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2908:24:2913 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2893:24:2899 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2897:24:2897 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2908:24:2913 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2908:24:2913 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2912:24:2912 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2923:24:2928 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2908:24:2914 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2912:24:2912 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2923:24:2928 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2923:24:2928 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2927:24:2927 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2938:24:2943 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2923:24:2929 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2927:24:2927 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2938:24:2943 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2938:24:2943 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2942:24:2942 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2953:24:2958 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2938:24:2944 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2942:24:2942 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2953:24:2958 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2953:24:2958 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2957:24:2957 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2968:24:2973 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2953:24:2959 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2957:24:2957 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2968:24:2973 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2968:24:2973 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2972:24:2972 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2983:24:2988 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2968:24:2974 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2972:24:2972 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2983:24:2988 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2983:24:2988 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:2987:24:2987 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:2998:24:3003 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2983:24:2989 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2987:24:2987 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:2998:24:3003 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:2998:24:3003 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3002:24:3002 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:3013:24:3018 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:2998:24:3004 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3002:24:3002 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3013:24:3018 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3013:24:3018 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3017:24:3017 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:3028:24:3033 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3013:24:3019 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3017:24:3017 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3028:24:3033 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3028:24:3033 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3032:24:3032 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:3043:24:3048 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3028:24:3034 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3032:24:3032 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3043:24:3048 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3043:24:3048 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3047:24:3047 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:3058:24:3063 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3043:24:3049 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3047:24:3047 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3058:24:3063 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3058:24:3063 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3062:24:3062 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:3073:24:3078 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3058:24:3064 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3062:24:3062 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3073:24:3078 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3073:24:3078 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3077:24:3077 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:3088:24:3093 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3073:24:3079 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3077:24:3077 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3088:24:3093 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3088:24:3093 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3092:24:3092 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:3103:24:3108 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3088:24:3094 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3092:24:3092 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3103:24:3108 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3103:24:3108 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3107:24:3107 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:3118:24:3123 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3103:24:3109 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3107:24:3107 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3118:24:3123 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3118:24:3123 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3122:24:3122 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:3133:24:3138 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3118:24:3124 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3122:24:3122 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3133:24:3138 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3133:24:3138 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3137:24:3137 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:3148:24:3153 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3133:24:3139 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3137:24:3137 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3148:24:3153 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3148:24:3153 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3152:24:3152 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:3163:24:3168 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3148:24:3154 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3152:24:3152 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3163:24:3168 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3163:24:3168 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3167:24:3167 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:3178:24:3183 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3163:24:3169 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3167:24:3167 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3178:24:3183 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3178:24:3183 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3182:24:3182 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:24:3193:24:3198 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3178:24:3184 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3182:24:3182 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:24:3193:24:3198 | [post] this access | UseUseExplosion.cs:25:13:25:16 | this access | | UseUseExplosion.cs:24:3193:24:3198 | this access | UseUseExplosion.cs:25:13:25:16 | this access | -| UseUseExplosion.cs:24:3197:24:3197 | access to local variable x | UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1712:25:1712 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1727:25:1727 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1742:25:1742 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1757:25:1757 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1772:25:1772 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1787:25:1787 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1802:25:1802 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1817:25:1817 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1832:25:1832 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1847:25:1847 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1862:25:1862 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1877:25:1877 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1892:25:1892 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1907:25:1907 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1922:25:1922 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1937:25:1937 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1952:25:1952 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1967:25:1967 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1982:25:1982 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:1997:25:1997 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2012:25:2012 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2027:25:2027 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2042:25:2042 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2057:25:2057 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2072:25:2072 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2087:25:2087 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2102:25:2102 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2117:25:2117 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2132:25:2132 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2147:25:2147 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2162:25:2162 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2177:25:2177 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2192:25:2192 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2207:25:2207 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2222:25:2222 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2237:25:2237 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2252:25:2252 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2267:25:2267 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2282:25:2282 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2297:25:2297 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2312:25:2312 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2327:25:2327 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2342:25:2342 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2357:25:2357 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2372:25:2372 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2387:25:2387 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2402:25:2402 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2417:25:2417 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2432:25:2432 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2447:25:2447 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2462:25:2462 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2477:25:2477 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2492:25:2492 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2507:25:2507 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2522:25:2522 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2537:25:2537 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2552:25:2552 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2567:25:2567 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2582:25:2582 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2597:25:2597 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2612:25:2612 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2627:25:2627 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2642:25:2642 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2657:25:2657 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2672:25:2672 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2687:25:2687 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2702:25:2702 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2717:25:2717 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2732:25:2732 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2747:25:2747 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2762:25:2762 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2777:25:2777 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2792:25:2792 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2807:25:2807 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2822:25:2822 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2837:25:2837 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2852:25:2852 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2867:25:2867 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2882:25:2882 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2897:25:2897 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2912:25:2912 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2927:25:2927 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2942:25:2942 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2957:25:2957 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2972:25:2972 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:2987:25:2987 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3002:25:3002 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3017:25:3017 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3032:25:3032 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3047:25:3047 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3062:25:3062 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3077:25:3077 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3092:25:3092 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3107:25:3107 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3122:25:3122 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3137:25:3137 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3152:25:3152 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3167:25:3167 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3182:25:3182 | access to local variable x | -| UseUseExplosion.cs:25:9:25:3199 | SSA phi read(x) | UseUseExplosion.cs:25:3197:25:3197 | access to local variable x | +| UseUseExplosion.cs:24:3193:24:3199 | [input] SSA phi read(this.Prop) | UseUseExplosion.cs:25:13:25:16 | access to property Prop | +| UseUseExplosion.cs:24:3197:24:3197 | access to local variable x | UseUseExplosion.cs:24:9:24:3199 | SSA phi read(x) | | UseUseExplosion.cs:25:13:25:16 | [post] this access | UseUseExplosion.cs:25:31:25:34 | this access | | UseUseExplosion.cs:25:13:25:16 | [post] this access | UseUseExplosion.cs:25:3193:25:3198 | this access | | UseUseExplosion.cs:25:13:25:16 | access to property Prop | UseUseExplosion.cs:25:13:25:22 | ... > ... | diff --git a/csharp/ql/test/library-tests/dataflow/modulusanalysis/ModulusAnalysis.expected b/csharp/ql/test/library-tests/dataflow/modulusanalysis/ModulusAnalysis.expected index bc1f2cad5c70..3e285f8d7bb6 100644 --- a/csharp/ql/test/library-tests/dataflow/modulusanalysis/ModulusAnalysis.expected +++ b/csharp/ql/test/library-tests/dataflow/modulusanalysis/ModulusAnalysis.expected @@ -1,7 +1,3 @@ -| ModulusAnalysis.cs:6:15:6:21 | ... = ... | 0 | 42 | 0 | -| ModulusAnalysis.cs:6:20:6:21 | 42 | 0 | 42 | 0 | -| ModulusAnalysis.cs:7:15:7:21 | ... = ... | 0 | 43 | 0 | -| ModulusAnalysis.cs:7:20:7:21 | 43 | 0 | 43 | 0 | | ModulusAnalysis.cs:11:18:11:18 | access to parameter i | SSA param(i) | 0 | 0 | | ModulusAnalysis.cs:11:18:11:22 | ... + ... | SSA param(i) | 3 | 0 | | ModulusAnalysis.cs:11:22:11:22 | 3 | 0 | 3 | 0 | diff --git a/csharp/ql/test/library-tests/dataflow/modulusanalysis/ModulusAnalysis.ql b/csharp/ql/test/library-tests/dataflow/modulusanalysis/ModulusAnalysis.ql index 02ffbc535ce8..7a2dff9c92e0 100644 --- a/csharp/ql/test/library-tests/dataflow/modulusanalysis/ModulusAnalysis.ql +++ b/csharp/ql/test/library-tests/dataflow/modulusanalysis/ModulusAnalysis.ql @@ -3,7 +3,7 @@ import semmle.code.csharp.dataflow.internal.rangeanalysis.RangeUtils import semmle.code.csharp.dataflow.ModulusAnalysis import semmle.code.csharp.dataflow.Bound -from ControlFlow::Nodes::ExprNode e, Bound b, int delta, int mod +from ControlFlowNodes::ExprNode e, Bound b, int delta, int mod where not e.getExpr().fromLibrary() and exprModulus(e, b, delta, mod) diff --git a/csharp/ql/test/library-tests/dataflow/operators/Operator.cs b/csharp/ql/test/library-tests/dataflow/operators/Operator.cs index 946a3b676cf9..5db1a82b9a4b 100644 --- a/csharp/ql/test/library-tests/dataflow/operators/Operator.cs +++ b/csharp/ql/test/library-tests/dataflow/operators/Operator.cs @@ -84,4 +84,39 @@ public void M6() var y = Source(12); M6Aux(x, y); } -} \ No newline at end of file +} + +public class CompoundAssignmentOperators +{ + static void Sink(object o) { } + static T Source(object source) => throw null; + + public class C + { + public object Field { get; private set; } + + public C() + { + Field = new object(); + } + + public C(object o) + { + Field = o; + } + + public void operator +=(C x) + { + Field = x.Field; + } + } + + public void M1() + { + var tainted = Source(1); + var x = new C(); + var y = new C(tainted); + x += y; + Sink(x.Field); // $ hasValueFlow=1 + } +} diff --git a/csharp/ql/test/library-tests/dataflow/operators/operatorFlow.expected b/csharp/ql/test/library-tests/dataflow/operators/operatorFlow.expected index f395930fb8b2..8fd12f1c2a8f 100644 --- a/csharp/ql/test/library-tests/dataflow/operators/operatorFlow.expected +++ b/csharp/ql/test/library-tests/dataflow/operators/operatorFlow.expected @@ -96,6 +96,40 @@ edges | Operator.cs:84:17:84:29 | call to method Source : C | Operator.cs:84:13:84:13 | access to local variable y : C | provenance | | | Operator.cs:85:18:85:18 | access to local variable y : C | Operator.cs:75:33:75:33 | y : C | provenance | | | Operator.cs:85:18:85:18 | access to local variable y : C | Operator.cs:75:33:75:33 | y : C | provenance | | +| Operator.cs:103:25:103:25 | o : Object | Operator.cs:105:21:105:21 | access to parameter o : Object | provenance | | +| Operator.cs:103:25:103:25 | o : Object | Operator.cs:105:21:105:21 | access to parameter o : Object | provenance | | +| Operator.cs:105:13:105:17 | [post] this access : C [property Field] : Object | Operator.cs:103:16:103:16 | this [Return] : C [property Field] : Object | provenance | | +| Operator.cs:105:13:105:17 | [post] this access : C [property Field] : Object | Operator.cs:103:16:103:16 | this [Return] : C [property Field] : Object | provenance | | +| Operator.cs:105:21:105:21 | access to parameter o : Object | Operator.cs:105:13:105:17 | [post] this access : C [property Field] : Object | provenance | | +| Operator.cs:105:21:105:21 | access to parameter o : Object | Operator.cs:105:13:105:17 | [post] this access : C [property Field] : Object | provenance | | +| Operator.cs:108:35:108:35 | x : C [property Field] : Object | Operator.cs:110:21:110:21 | access to parameter x : C [property Field] : Object | provenance | | +| Operator.cs:108:35:108:35 | x : C [property Field] : Object | Operator.cs:110:21:110:21 | access to parameter x : C [property Field] : Object | provenance | | +| Operator.cs:110:13:110:17 | [post] this access : C [property Field] : Object | Operator.cs:108:30:108:31 | this [Return] : C [property Field] : Object | provenance | | +| Operator.cs:110:13:110:17 | [post] this access : C [property Field] : Object | Operator.cs:108:30:108:31 | this [Return] : C [property Field] : Object | provenance | | +| Operator.cs:110:21:110:21 | access to parameter x : C [property Field] : Object | Operator.cs:110:21:110:27 | access to property Field : Object | provenance | | +| Operator.cs:110:21:110:21 | access to parameter x : C [property Field] : Object | Operator.cs:110:21:110:27 | access to property Field : Object | provenance | | +| Operator.cs:110:21:110:27 | access to property Field : Object | Operator.cs:110:13:110:17 | [post] this access : C [property Field] : Object | provenance | | +| Operator.cs:110:21:110:27 | access to property Field : Object | Operator.cs:110:13:110:17 | [post] this access : C [property Field] : Object | provenance | | +| Operator.cs:116:13:116:19 | access to local variable tainted : Object | Operator.cs:118:23:118:29 | access to local variable tainted : Object | provenance | | +| Operator.cs:116:13:116:19 | access to local variable tainted : Object | Operator.cs:118:23:118:29 | access to local variable tainted : Object | provenance | | +| Operator.cs:116:23:116:39 | call to method Source : Object | Operator.cs:116:13:116:19 | access to local variable tainted : Object | provenance | | +| Operator.cs:116:23:116:39 | call to method Source : Object | Operator.cs:116:13:116:19 | access to local variable tainted : Object | provenance | | +| Operator.cs:118:13:118:13 | access to local variable y : C [property Field] : Object | Operator.cs:119:14:119:14 | access to local variable y : C [property Field] : Object | provenance | | +| Operator.cs:118:13:118:13 | access to local variable y : C [property Field] : Object | Operator.cs:119:14:119:14 | access to local variable y : C [property Field] : Object | provenance | | +| Operator.cs:118:17:118:30 | object creation of type C : C [property Field] : Object | Operator.cs:118:13:118:13 | access to local variable y : C [property Field] : Object | provenance | | +| Operator.cs:118:17:118:30 | object creation of type C : C [property Field] : Object | Operator.cs:118:13:118:13 | access to local variable y : C [property Field] : Object | provenance | | +| Operator.cs:118:23:118:29 | access to local variable tainted : Object | Operator.cs:103:25:103:25 | o : Object | provenance | | +| Operator.cs:118:23:118:29 | access to local variable tainted : Object | Operator.cs:103:25:103:25 | o : Object | provenance | | +| Operator.cs:118:23:118:29 | access to local variable tainted : Object | Operator.cs:118:17:118:30 | object creation of type C : C [property Field] : Object | provenance | | +| Operator.cs:118:23:118:29 | access to local variable tainted : Object | Operator.cs:118:17:118:30 | object creation of type C : C [property Field] : Object | provenance | | +| Operator.cs:119:9:119:9 | [post] access to local variable x : C [property Field] : Object | Operator.cs:120:14:120:14 | access to local variable x : C [property Field] : Object | provenance | | +| Operator.cs:119:9:119:9 | [post] access to local variable x : C [property Field] : Object | Operator.cs:120:14:120:14 | access to local variable x : C [property Field] : Object | provenance | | +| Operator.cs:119:14:119:14 | access to local variable y : C [property Field] : Object | Operator.cs:108:35:108:35 | x : C [property Field] : Object | provenance | | +| Operator.cs:119:14:119:14 | access to local variable y : C [property Field] : Object | Operator.cs:108:35:108:35 | x : C [property Field] : Object | provenance | | +| Operator.cs:119:14:119:14 | access to local variable y : C [property Field] : Object | Operator.cs:119:9:119:9 | [post] access to local variable x : C [property Field] : Object | provenance | | +| Operator.cs:119:14:119:14 | access to local variable y : C [property Field] : Object | Operator.cs:119:9:119:9 | [post] access to local variable x : C [property Field] : Object | provenance | | +| Operator.cs:120:14:120:14 | access to local variable x : C [property Field] : Object | Operator.cs:120:14:120:20 | access to property Field | provenance | | +| Operator.cs:120:14:120:14 | access to local variable x : C [property Field] : Object | Operator.cs:120:14:120:20 | access to property Field | provenance | | nodes | Operator.cs:9:39:9:39 | x : C | semmle.label | x : C | | Operator.cs:9:39:9:39 | x : C | semmle.label | x : C | @@ -205,6 +239,42 @@ nodes | Operator.cs:84:17:84:29 | call to method Source : C | semmle.label | call to method Source : C | | Operator.cs:85:18:85:18 | access to local variable y : C | semmle.label | access to local variable y : C | | Operator.cs:85:18:85:18 | access to local variable y : C | semmle.label | access to local variable y : C | +| Operator.cs:103:16:103:16 | this [Return] : C [property Field] : Object | semmle.label | this [Return] : C [property Field] : Object | +| Operator.cs:103:16:103:16 | this [Return] : C [property Field] : Object | semmle.label | this [Return] : C [property Field] : Object | +| Operator.cs:103:25:103:25 | o : Object | semmle.label | o : Object | +| Operator.cs:103:25:103:25 | o : Object | semmle.label | o : Object | +| Operator.cs:105:13:105:17 | [post] this access : C [property Field] : Object | semmle.label | [post] this access : C [property Field] : Object | +| Operator.cs:105:13:105:17 | [post] this access : C [property Field] : Object | semmle.label | [post] this access : C [property Field] : Object | +| Operator.cs:105:21:105:21 | access to parameter o : Object | semmle.label | access to parameter o : Object | +| Operator.cs:105:21:105:21 | access to parameter o : Object | semmle.label | access to parameter o : Object | +| Operator.cs:108:30:108:31 | this [Return] : C [property Field] : Object | semmle.label | this [Return] : C [property Field] : Object | +| Operator.cs:108:30:108:31 | this [Return] : C [property Field] : Object | semmle.label | this [Return] : C [property Field] : Object | +| Operator.cs:108:35:108:35 | x : C [property Field] : Object | semmle.label | x : C [property Field] : Object | +| Operator.cs:108:35:108:35 | x : C [property Field] : Object | semmle.label | x : C [property Field] : Object | +| Operator.cs:110:13:110:17 | [post] this access : C [property Field] : Object | semmle.label | [post] this access : C [property Field] : Object | +| Operator.cs:110:13:110:17 | [post] this access : C [property Field] : Object | semmle.label | [post] this access : C [property Field] : Object | +| Operator.cs:110:21:110:21 | access to parameter x : C [property Field] : Object | semmle.label | access to parameter x : C [property Field] : Object | +| Operator.cs:110:21:110:21 | access to parameter x : C [property Field] : Object | semmle.label | access to parameter x : C [property Field] : Object | +| Operator.cs:110:21:110:27 | access to property Field : Object | semmle.label | access to property Field : Object | +| Operator.cs:110:21:110:27 | access to property Field : Object | semmle.label | access to property Field : Object | +| Operator.cs:116:13:116:19 | access to local variable tainted : Object | semmle.label | access to local variable tainted : Object | +| Operator.cs:116:13:116:19 | access to local variable tainted : Object | semmle.label | access to local variable tainted : Object | +| Operator.cs:116:23:116:39 | call to method Source : Object | semmle.label | call to method Source : Object | +| Operator.cs:116:23:116:39 | call to method Source : Object | semmle.label | call to method Source : Object | +| Operator.cs:118:13:118:13 | access to local variable y : C [property Field] : Object | semmle.label | access to local variable y : C [property Field] : Object | +| Operator.cs:118:13:118:13 | access to local variable y : C [property Field] : Object | semmle.label | access to local variable y : C [property Field] : Object | +| Operator.cs:118:17:118:30 | object creation of type C : C [property Field] : Object | semmle.label | object creation of type C : C [property Field] : Object | +| Operator.cs:118:17:118:30 | object creation of type C : C [property Field] : Object | semmle.label | object creation of type C : C [property Field] : Object | +| Operator.cs:118:23:118:29 | access to local variable tainted : Object | semmle.label | access to local variable tainted : Object | +| Operator.cs:118:23:118:29 | access to local variable tainted : Object | semmle.label | access to local variable tainted : Object | +| Operator.cs:119:9:119:9 | [post] access to local variable x : C [property Field] : Object | semmle.label | [post] access to local variable x : C [property Field] : Object | +| Operator.cs:119:9:119:9 | [post] access to local variable x : C [property Field] : Object | semmle.label | [post] access to local variable x : C [property Field] : Object | +| Operator.cs:119:14:119:14 | access to local variable y : C [property Field] : Object | semmle.label | access to local variable y : C [property Field] : Object | +| Operator.cs:119:14:119:14 | access to local variable y : C [property Field] : Object | semmle.label | access to local variable y : C [property Field] : Object | +| Operator.cs:120:14:120:14 | access to local variable x : C [property Field] : Object | semmle.label | access to local variable x : C [property Field] : Object | +| Operator.cs:120:14:120:14 | access to local variable x : C [property Field] : Object | semmle.label | access to local variable x : C [property Field] : Object | +| Operator.cs:120:14:120:20 | access to property Field | semmle.label | access to property Field | +| Operator.cs:120:14:120:20 | access to property Field | semmle.label | access to property Field | subpaths | Operator.cs:29:17:29:17 | access to local variable x : C | Operator.cs:16:38:16:38 | x : C | Operator.cs:16:49:16:49 | access to parameter x : C | Operator.cs:29:17:29:21 | call to operator + : C | | Operator.cs:29:17:29:17 | access to local variable x : C | Operator.cs:16:38:16:38 | x : C | Operator.cs:16:49:16:49 | access to parameter x : C | Operator.cs:29:17:29:21 | call to operator + : C | @@ -218,6 +288,10 @@ subpaths | Operator.cs:64:21:64:21 | access to parameter y : C | Operator.cs:21:43:21:43 | y : C | Operator.cs:21:49:21:49 | access to parameter y : C | Operator.cs:64:17:64:21 | call to operator / : C | | Operator.cs:77:29:77:29 | access to parameter y : C | Operator.cs:22:51:22:51 | y : C | Operator.cs:22:57:22:57 | access to parameter y : C | Operator.cs:77:25:77:29 | call to operator checked / : C | | Operator.cs:77:29:77:29 | access to parameter y : C | Operator.cs:22:51:22:51 | y : C | Operator.cs:22:57:22:57 | access to parameter y : C | Operator.cs:77:25:77:29 | call to operator checked / : C | +| Operator.cs:118:23:118:29 | access to local variable tainted : Object | Operator.cs:103:25:103:25 | o : Object | Operator.cs:103:16:103:16 | this [Return] : C [property Field] : Object | Operator.cs:118:17:118:30 | object creation of type C : C [property Field] : Object | +| Operator.cs:118:23:118:29 | access to local variable tainted : Object | Operator.cs:103:25:103:25 | o : Object | Operator.cs:103:16:103:16 | this [Return] : C [property Field] : Object | Operator.cs:118:17:118:30 | object creation of type C : C [property Field] : Object | +| Operator.cs:119:14:119:14 | access to local variable y : C [property Field] : Object | Operator.cs:108:35:108:35 | x : C [property Field] : Object | Operator.cs:108:30:108:31 | this [Return] : C [property Field] : Object | Operator.cs:119:9:119:9 | [post] access to local variable x : C [property Field] : Object | +| Operator.cs:119:14:119:14 | access to local variable y : C [property Field] : Object | Operator.cs:108:35:108:35 | x : C [property Field] : Object | Operator.cs:108:30:108:31 | this [Return] : C [property Field] : Object | Operator.cs:119:9:119:9 | [post] access to local variable x : C [property Field] : Object | testFailures #select | Operator.cs:30:14:30:14 | access to local variable z | Operator.cs:27:17:27:28 | call to method Source : C | Operator.cs:30:14:30:14 | access to local variable z | $@ | Operator.cs:27:17:27:28 | call to method Source : C | call to method Source : C | @@ -232,3 +306,5 @@ testFailures | Operator.cs:65:14:65:14 | (...) ... | Operator.cs:71:17:71:29 | call to method Source : C | Operator.cs:65:14:65:14 | (...) ... | $@ | Operator.cs:71:17:71:29 | call to method Source : C | call to method Source : C | | Operator.cs:78:14:78:14 | (...) ... | Operator.cs:84:17:84:29 | call to method Source : C | Operator.cs:78:14:78:14 | (...) ... | $@ | Operator.cs:84:17:84:29 | call to method Source : C | call to method Source : C | | Operator.cs:78:14:78:14 | (...) ... | Operator.cs:84:17:84:29 | call to method Source : C | Operator.cs:78:14:78:14 | (...) ... | $@ | Operator.cs:84:17:84:29 | call to method Source : C | call to method Source : C | +| Operator.cs:120:14:120:20 | access to property Field | Operator.cs:116:23:116:39 | call to method Source : Object | Operator.cs:120:14:120:20 | access to property Field | $@ | Operator.cs:116:23:116:39 | call to method Source : Object | call to method Source : Object | +| Operator.cs:120:14:120:20 | access to property Field | Operator.cs:116:23:116:39 | call to method Source : Object | Operator.cs:120:14:120:20 | access to property Field | $@ | Operator.cs:116:23:116:39 | call to method Source : Object | call to method Source : Object | diff --git a/csharp/ql/test/library-tests/dataflow/signanalysis/MissingSign.ql b/csharp/ql/test/library-tests/dataflow/signanalysis/MissingSign.ql index 70f9af36494a..b78bc4c784a5 100644 --- a/csharp/ql/test/library-tests/dataflow/signanalysis/MissingSign.ql +++ b/csharp/ql/test/library-tests/dataflow/signanalysis/MissingSign.ql @@ -1,7 +1,7 @@ import csharp import semmle.code.csharp.dataflow.internal.rangeanalysis.SignAnalysisCommon -from ControlFlow::Nodes::ExprNode e +from ControlFlowNodes::ExprNode e where not exists(exprSign(e)) and not e.getExpr() instanceof TypeAccess and diff --git a/csharp/ql/test/library-tests/dataflow/signanalysis/SignAnalysis.expected b/csharp/ql/test/library-tests/dataflow/signanalysis/SignAnalysis.expected index 4dce60d9c2d9..ae15c963f5ec 100644 --- a/csharp/ql/test/library-tests/dataflow/signanalysis/SignAnalysis.expected +++ b/csharp/ql/test/library-tests/dataflow/signanalysis/SignAnalysis.expected @@ -88,6 +88,7 @@ | SignAnalysis.cs:108:13:108:21 | Decimal de = ... | strictlyPositive | | SignAnalysis.cs:108:18:108:21 | 4.2 | strictlyPositive | | SignAnalysis.cs:109:34:109:35 | access to local variable de | strictlyPositive | +| SignAnalysis.cs:110:13:110:13 | access to local variable c | positive | | SignAnalysis.cs:110:13:110:19 | Char c = ... | strictlyPositive | | SignAnalysis.cs:110:17:110:19 | a | strictlyPositive | | SignAnalysis.cs:111:34:111:34 | access to local variable c | strictlyPositive | @@ -161,6 +162,8 @@ | SignAnalysis.cs:306:21:306:22 | -... | strictlyNegative | | SignAnalysis.cs:306:22:306:22 | 1 | strictlyPositive | | SignAnalysis.cs:309:38:309:38 | access to local variable x | strictlyNegative | +| SignAnalysis.cs:315:13:315:15 | access to local variable min | positive | +| SignAnalysis.cs:316:13:316:15 | access to local variable max | positive | | SignAnalysis.cs:316:13:316:31 | Char max = ... | strictlyPositive | | SignAnalysis.cs:316:19:316:31 | access to constant MaxValue | strictlyPositive | | SignAnalysis.cs:317:13:317:23 | Int32 c = ... | strictlyPositive | @@ -195,6 +198,7 @@ | SignAnalysis.cs:357:13:357:13 | access to parameter i | positive | | SignAnalysis.cs:359:38:359:38 | access to parameter i | strictlyPositive | | SignAnalysis.cs:371:38:371:38 | access to local variable y | strictlyNegative | +| SignAnalysis.cs:377:16:377:17 | access to local variable dp | positive | | SignAnalysis.cs:377:16:377:22 | Single* dp = ... | positive | | SignAnalysis.cs:377:21:377:22 | &... | positive | | SignAnalysis.cs:378:18:378:19 | access to local variable dp | positive | @@ -213,14 +217,12 @@ | SignAnalysis.cs:414:13:414:13 | access to local variable i | strictlyPositive | | SignAnalysis.cs:415:31:415:31 | access to local variable i | strictlyPositive | | SignAnalysis.cs:424:31:424:31 | access to local variable x | strictlyNegative | -| SignAnalysis.cs:428:19:428:19 | access to constant A | strictlyPositive | -| SignAnalysis.cs:428:19:428:24 | ... = ... | strictlyPositive | -| SignAnalysis.cs:428:23:428:24 | 12 | strictlyPositive | | SignAnalysis.cs:434:38:434:38 | access to local variable i | strictlyNegative | | SignAnalysis.cs:440:23:440:25 | access to parameter src | positive | | SignAnalysis.cs:440:29:440:31 | access to parameter dst | positive | | SignAnalysis.cs:443:38:443:38 | access to local variable x | strictlyNegative | | SignAnalysis.cs:446:31:446:32 | 10 | strictlyPositive | +| SignAnalysis.cs:448:22:448:23 | access to local variable to | positive | | SignAnalysis.cs:448:22:448:29 | Byte* to = ... | positive | | SignAnalysis.cs:448:27:448:29 | (...) ... | positive | | SignAnalysis.cs:450:38:450:44 | (...) ... | positive | @@ -232,6 +234,7 @@ | SignAnalysis.cs:457:18:457:27 | call to method Unsigned | positive | | SignAnalysis.cs:458:13:458:13 | access to local variable l | positive | | SignAnalysis.cs:460:38:460:38 | access to local variable l | strictlyPositive | +| SignAnalysis.cs:463:14:463:14 | access to local variable x | positive | | SignAnalysis.cs:463:14:463:24 | UInt32 x = ... | positive | | SignAnalysis.cs:463:18:463:24 | (...) ... | positive | | SignAnalysis.cs:464:9:464:9 | access to local variable x | positive | diff --git a/csharp/ql/test/library-tests/dataflow/signanalysis/SignAnalysis.ql b/csharp/ql/test/library-tests/dataflow/signanalysis/SignAnalysis.ql index 650d0f6bed42..4bdfd5082a8e 100644 --- a/csharp/ql/test/library-tests/dataflow/signanalysis/SignAnalysis.ql +++ b/csharp/ql/test/library-tests/dataflow/signanalysis/SignAnalysis.ql @@ -1,7 +1,7 @@ import csharp import semmle.code.csharp.dataflow.SignAnalysis -string getASignString(ControlFlow::Nodes::ExprNode e) { +string getASignString(ControlFlowNodes::ExprNode e) { positive(e) and not strictlyPositive(e) and result = "positive" @@ -17,6 +17,6 @@ string getASignString(ControlFlow::Nodes::ExprNode e) { result = "strictlyNegative" } -from ControlFlow::Nodes::ExprNode e +from ControlFlowNodes::ExprNode e where not e.getExpr().fromLibrary() select e, strictconcat(string s | s = getASignString(e) | s, " ") diff --git a/csharp/ql/test/library-tests/dataflow/ssa-large/countssa.expected b/csharp/ql/test/library-tests/dataflow/ssa-large/countssa.expected index 1506d03ab340..43bfd33106a6 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa-large/countssa.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa-large/countssa.expected @@ -1 +1 @@ -| 15203 | 1037851 | +| 15203 | 1547800 | diff --git a/csharp/ql/test/library-tests/dataflow/ssa-large/countssa.ql b/csharp/ql/test/library-tests/dataflow/ssa-large/countssa.ql index bb10b7c9ffaf..e9d2f74ff27b 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa-large/countssa.ql +++ b/csharp/ql/test/library-tests/dataflow/ssa-large/countssa.ql @@ -2,7 +2,6 @@ import csharp from int uses, int live where - uses = strictcount(Ssa::ExplicitDefinition ssa, AssignableRead read | read = ssa.getARead()) and - live = - strictcount(Ssa::ExplicitDefinition ssa, ControlFlow::BasicBlock bb | ssa.isLiveAtEndOfBlock(bb)) + uses = strictcount(SsaExplicitWrite ssa, AssignableRead read | read = ssa.getARead()) and + live = strictcount(SsaExplicitWrite ssa, BasicBlock bb | ssa.isLiveAtEndOfBlock(bb)) select uses, live diff --git a/csharp/ql/test/library-tests/dataflow/ssa/BaseSsaConsistency.ql b/csharp/ql/test/library-tests/dataflow/ssa/BaseSsaConsistency.ql index 86e13215b0c4..2634ef14a37b 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/BaseSsaConsistency.ql +++ b/csharp/ql/test/library-tests/dataflow/ssa/BaseSsaConsistency.ql @@ -1,13 +1,15 @@ import csharp import semmle.code.csharp.dataflow.internal.BaseSSA -from AssignableRead ar, BaseSsa::Definition ssaDef, AssignableDefinition def, LocalScopeVariable v +from + AssignableRead ar, BaseSsa::SsaExplicitWrite ssaDef, AssignableDefinition def, + LocalScopeVariable v where ar = ssaDef.getARead() and def = ssaDef.getDefinition() and v = def.getTarget() and - not exists(Ssa::ExplicitDefinition edef | - edef.getADefinition() = def and + not exists(SsaExplicitWrite edef | + edef.getDefinition() = def and edef.getARead() = ar ) select ar, def diff --git a/csharp/ql/test/library-tests/dataflow/ssa/DefAdjacentRead.expected b/csharp/ql/test/library-tests/dataflow/ssa/DefAdjacentRead.expected index 9246392b6621..3015fea1770e 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/DefAdjacentRead.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/DefAdjacentRead.expected @@ -61,6 +61,7 @@ | DefUse.cs:166:9:166:14 | Field5 | DefUse.cs:188:13:188:22 | ... = ... | DefUse.cs:189:17:189:22 | access to field Field5 | | DefUse.cs:171:23:171:23 | a | DefUse.cs:171:23:180:9 | Action a = ... | DefUse.cs:181:9:181:9 | access to local variable a | | DefUse.cs:171:23:171:23 | a | DefUse.cs:186:9:190:9 | ... = ... | DefUse.cs:191:9:191:9 | access to local variable a | +| DefaultParam.cs:3:20:3:20 | b | DefaultParam.cs:3:20:3:20 | b | DefaultParam.cs:5:16:5:16 | access to parameter b | | Example.cs:4:9:4:13 | Field | Example.cs:8:9:8:22 | ... = ... | Example.cs:9:13:9:22 | access to field Field | | Example.cs:6:23:6:23 | i | Example.cs:6:23:6:23 | i | Example.cs:8:22:8:22 | access to parameter i | | Example.cs:18:16:18:16 | p | Example.cs:18:16:18:16 | p | Example.cs:22:17:22:17 | access to parameter p | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/DefaultParam.cs b/csharp/ql/test/library-tests/dataflow/ssa/DefaultParam.cs new file mode 100644 index 000000000000..6ef844582e58 --- /dev/null +++ b/csharp/ql/test/library-tests/dataflow/ssa/DefaultParam.cs @@ -0,0 +1,7 @@ +class DefaultParam +{ + string M1(bool b, string s = "", int i = 0) + { + return b + s + i; + } +} diff --git a/csharp/ql/test/library-tests/dataflow/ssa/IsLiveOutRefParameterDefinition.ql b/csharp/ql/test/library-tests/dataflow/ssa/IsLiveOutRefParameterDefinition.ql index ca43b497dd53..a8d2309d0800 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/IsLiveOutRefParameterDefinition.ql +++ b/csharp/ql/test/library-tests/dataflow/ssa/IsLiveOutRefParameterDefinition.ql @@ -1,7 +1,8 @@ import csharp +private import semmle.code.csharp.dataflow.internal.SsaImpl as SsaImpl -from Ssa::SourceVariable v, Ssa::Definition def +from Ssa::SourceVariable v, SsaDefinition def where v = def.getSourceVariable() and - def.isLiveOutRefParameterDefinition(_) + SsaImpl::isLiveOutRefParameterDefinition(def, _) select v, def diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SSAPhi.expected b/csharp/ql/test/library-tests/dataflow/ssa/SSAPhi.expected index e69a5cbe088c..7be0fb7c46df 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SSAPhi.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/SSAPhi.expected @@ -1,59 +1,64 @@ -| DefUse.cs:3:26:3:26 | w | DefUse.cs:23:9:23:15 | SSA phi(w) | DefUse.cs:3:26:3:26 | SSA param(w) | -| DefUse.cs:3:26:3:26 | w | DefUse.cs:23:9:23:15 | SSA phi(w) | DefUse.cs:19:13:19:18 | SSA def(w) | -| DefUse.cs:6:14:6:14 | y | DefUse.cs:23:9:23:15 | SSA phi(y) | DefUse.cs:13:13:13:18 | SSA def(y) | -| DefUse.cs:6:14:6:14 | y | DefUse.cs:23:9:23:15 | SSA phi(y) | DefUse.cs:18:13:18:18 | SSA def(y) | -| DefUse.cs:6:14:6:14 | y | DefUse.cs:42:9:42:15 | SSA phi(y) | DefUse.cs:28:13:28:18 | SSA def(y) | -| DefUse.cs:6:14:6:14 | y | DefUse.cs:42:9:42:15 | SSA phi(y) | DefUse.cs:39:13:39:18 | SSA def(y) | -| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:30:80:31 | SSA phi(x1) | DefUse.cs:79:13:79:18 | SSA def(x1) | -| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:30:80:31 | SSA phi(x1) | DefUse.cs:80:30:80:31 | SSA def(x1) | -| DefUse.cs:97:13:97:14 | x5 | DefUse.cs:98:16:98:17 | SSA phi(x5) | DefUse.cs:97:13:97:18 | SSA def(x5) | -| DefUse.cs:97:13:97:14 | x5 | DefUse.cs:98:16:98:17 | SSA phi(x5) | DefUse.cs:101:13:101:23 | SSA def(x5) | -| Example.cs:8:9:8:18 | this.Field | Example.cs:14:9:14:24 | SSA phi(this.Field) | Example.cs:8:9:8:22 | SSA def(this.Field) | -| Example.cs:8:9:8:18 | this.Field | Example.cs:14:9:14:24 | SSA phi(this.Field) | Example.cs:11:13:11:30 | SSA def(this.Field) | -| Example.cs:8:9:8:18 | this.Field | Example.cs:14:9:14:24 | SSA phi(this.Field) | Example.cs:13:13:13:23 | SSA call def(this.Field) | -| Example.cs:18:16:18:16 | p | Example.cs:25:9:25:15 | SSA phi(p) | Example.cs:18:16:18:16 | SSA param(p) | -| Example.cs:18:16:18:16 | p | Example.cs:25:9:25:15 | SSA phi(p) | Example.cs:23:13:23:17 | SSA def(p) | -| Fields.cs:18:19:18:20 | this.xs | Fields.cs:23:9:23:20 | SSA phi(this.xs) | Fields.cs:19:9:19:13 | SSA call def(this.xs) | -| Fields.cs:18:19:18:20 | this.xs | Fields.cs:23:9:23:20 | SSA phi(this.xs) | Fields.cs:22:13:22:17 | SSA call def(this.xs) | -| Fields.cs:30:13:30:13 | f | Fields.cs:50:9:50:17 | SSA phi(f) | Fields.cs:30:13:30:28 | SSA def(f) | -| Fields.cs:30:13:30:13 | f | Fields.cs:50:9:50:17 | SSA phi(f) | Fields.cs:49:13:49:28 | SSA def(f) | -| Fields.cs:31:19:31:22 | f.xs | Fields.cs:50:9:50:17 | SSA phi(f.xs) | Fields.cs:45:9:45:25 | SSA def(f.xs) | -| Fields.cs:31:19:31:22 | f.xs | Fields.cs:50:9:50:17 | SSA phi(f.xs) | Fields.cs:49:13:49:28 | SSA qualifier def(f.xs) | -| Fields.cs:33:19:33:22 | Fields.stat | Fields.cs:50:9:50:17 | SSA phi(Fields.stat) | Fields.cs:38:9:38:13 | SSA call def(Fields.stat) | -| Fields.cs:33:19:33:22 | Fields.stat | Fields.cs:50:9:50:17 | SSA phi(Fields.stat) | Fields.cs:49:17:49:28 | SSA call def(Fields.stat) | -| OutRef.cs:39:35:39:35 | j | OutRef.cs:39:10:39:17 | SSA phi(j) | OutRef.cs:39:35:39:35 | SSA param(j) | -| OutRef.cs:39:35:39:35 | j | OutRef.cs:39:10:39:17 | SSA phi(j) | OutRef.cs:42:13:42:17 | SSA def(j) | -| Properties.cs:18:19:18:20 | this.xs | Properties.cs:23:9:23:20 | SSA phi(this.xs) | Properties.cs:19:9:19:13 | SSA call def(this.xs) | -| Properties.cs:18:19:18:20 | this.xs | Properties.cs:23:9:23:20 | SSA phi(this.xs) | Properties.cs:22:13:22:17 | SSA call def(this.xs) | -| Properties.cs:30:13:30:13 | f | Properties.cs:50:9:50:17 | SSA phi(f) | Properties.cs:30:13:30:32 | SSA def(f) | -| Properties.cs:30:13:30:13 | f | Properties.cs:50:9:50:17 | SSA phi(f) | Properties.cs:49:13:49:32 | SSA def(f) | -| Properties.cs:31:19:31:22 | f.xs | Properties.cs:50:9:50:17 | SSA phi(f.xs) | Properties.cs:45:9:45:25 | SSA def(f.xs) | -| Properties.cs:31:19:31:22 | f.xs | Properties.cs:50:9:50:17 | SSA phi(f.xs) | Properties.cs:49:13:49:32 | SSA qualifier def(f.xs) | -| Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:50:9:50:17 | SSA phi(Properties.stat) | Properties.cs:38:9:38:13 | SSA call def(Properties.stat) | -| Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:50:9:50:17 | SSA phi(Properties.stat) | Properties.cs:49:17:49:32 | SSA call def(Properties.stat) | -| Properties.cs:61:23:61:23 | i | Properties.cs:63:16:63:16 | SSA phi(i) | Properties.cs:61:23:61:23 | SSA param(i) | -| Properties.cs:61:23:61:23 | i | Properties.cs:63:16:63:16 | SSA phi(i) | Properties.cs:63:16:63:18 | SSA def(i) | -| Test.cs:5:15:5:20 | param1 | Test.cs:25:16:25:16 | SSA phi(param1) | Test.cs:5:15:5:20 | SSA param(param1) | -| Test.cs:5:15:5:20 | param1 | Test.cs:25:16:25:16 | SSA phi(param1) | Test.cs:27:17:27:24 | SSA def(param1) | -| Test.cs:5:15:5:20 | param1 | Test.cs:33:9:33:19 | SSA phi(param1) | Test.cs:25:16:25:16 | SSA phi(param1) | -| Test.cs:5:15:5:20 | param1 | Test.cs:33:9:33:19 | SSA phi(param1) | Test.cs:27:17:27:24 | SSA def(param1) | -| Test.cs:5:15:5:20 | param1 | Test.cs:39:9:42:9 | SSA phi(param1) | Test.cs:33:9:33:19 | SSA phi(param1) | -| Test.cs:5:15:5:20 | param1 | Test.cs:39:9:42:9 | SSA phi(param1) | Test.cs:41:13:41:23 | SSA def(param1) | -| Test.cs:7:9:7:13 | this.field | Test.cs:24:9:24:15 | SSA phi(this.field) | Test.cs:7:9:7:17 | SSA def(this.field) | -| Test.cs:7:9:7:13 | this.field | Test.cs:24:9:24:15 | SSA phi(this.field) | Test.cs:21:13:21:22 | SSA def(this.field) | -| Test.cs:8:13:8:13 | x | Test.cs:24:9:24:15 | SSA phi(x) | Test.cs:8:13:8:17 | SSA def(x) | -| Test.cs:8:13:8:13 | x | Test.cs:24:9:24:15 | SSA phi(x) | Test.cs:14:17:14:19 | SSA def(x) | -| Test.cs:8:13:8:13 | x | Test.cs:34:25:34:25 | SSA phi(x) | Test.cs:24:9:24:15 | SSA phi(x) | -| Test.cs:8:13:8:13 | x | Test.cs:34:25:34:25 | SSA phi(x) | Test.cs:36:13:36:18 | SSA def(x) | -| Test.cs:9:13:9:13 | y | Test.cs:24:9:24:15 | SSA phi(y) | Test.cs:14:13:14:19 | SSA def(y) | -| Test.cs:9:13:9:13 | y | Test.cs:24:9:24:15 | SSA phi(y) | Test.cs:20:13:20:18 | SSA def(y) | -| Test.cs:9:13:9:13 | y | Test.cs:25:16:25:16 | SSA phi(y) | Test.cs:24:9:24:15 | SSA phi(y) | -| Test.cs:9:13:9:13 | y | Test.cs:25:16:25:16 | SSA phi(y) | Test.cs:31:13:31:18 | SSA def(y) | -| Test.cs:10:13:10:13 | z | Test.cs:24:9:24:15 | SSA phi(z) | Test.cs:15:13:15:17 | SSA def(z) | -| Test.cs:10:13:10:13 | z | Test.cs:24:9:24:15 | SSA phi(z) | Test.cs:22:13:22:17 | SSA def(z) | -| Test.cs:34:18:34:18 | i | Test.cs:34:25:34:25 | SSA phi(i) | Test.cs:34:18:34:22 | SSA def(i) | -| Test.cs:34:18:34:18 | i | Test.cs:34:25:34:25 | SSA phi(i) | Test.cs:34:33:34:35 | SSA def(i) | -| Test.cs:46:29:46:32 | out | Test.cs:56:9:56:19 | SSA phi(out) | Test.cs:50:13:50:20 | SSA def(out) | -| Test.cs:46:29:46:32 | out | Test.cs:56:9:56:19 | SSA phi(out) | Test.cs:54:13:54:20 | SSA def(out) | -| Test.cs:78:13:78:13 | x | Test.cs:113:9:116:9 | SSA phi(x) | Test.cs:78:13:78:17 | SSA def(x) | -| Test.cs:78:13:78:13 | x | Test.cs:113:9:116:9 | SSA phi(x) | Test.cs:108:13:108:17 | SSA def(x) | +| DefUse.cs:3:26:3:26 | w | DefUse.cs:11:9:21:9 | SSA phi(w) | DefUse.cs:3:26:3:26 | SSA param(w) | +| DefUse.cs:3:26:3:26 | w | DefUse.cs:11:9:21:9 | SSA phi(w) | DefUse.cs:19:13:19:18 | SSA def(w) | +| DefUse.cs:6:14:6:14 | y | DefUse.cs:11:9:21:9 | SSA phi(y) | DefUse.cs:13:13:13:18 | SSA def(y) | +| DefUse.cs:6:14:6:14 | y | DefUse.cs:11:9:21:9 | SSA phi(y) | DefUse.cs:18:13:18:18 | SSA def(y) | +| DefUse.cs:6:14:6:14 | y | DefUse.cs:37:9:40:9 | SSA phi(y) | DefUse.cs:28:13:28:18 | SSA def(y) | +| DefUse.cs:6:14:6:14 | y | DefUse.cs:37:9:40:9 | SSA phi(y) | DefUse.cs:39:13:39:18 | SSA def(y) | +| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:9:80:51 | SSA phi(x1) | DefUse.cs:79:13:79:18 | SSA def(x1) | +| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:9:80:51 | SSA phi(x1) | DefUse.cs:80:16:80:32 | SSA def(x1) | +| DefUse.cs:97:13:97:14 | x5 | DefUse.cs:98:9:102:9 | SSA phi(x5) | DefUse.cs:97:13:97:18 | SSA def(x5) | +| DefUse.cs:97:13:97:14 | x5 | DefUse.cs:98:9:102:9 | SSA phi(x5) | DefUse.cs:101:13:101:23 | SSA def(x5) | +| DefaultParam.cs:3:30:3:30 | s | DefaultParam.cs:3:42:3:42 | SSA phi(s) | DefaultParam.cs:3:30:3:30 | SSA param(s) | +| DefaultParam.cs:3:30:3:30 | s | DefaultParam.cs:3:42:3:42 | SSA phi(s) | DefaultParam.cs:3:34:3:35 | SSA def(s) | +| DefaultParam.cs:3:42:3:42 | i | DefaultParam.cs:4:5:6:5 | SSA phi(i) | DefaultParam.cs:3:42:3:42 | SSA param(i) | +| DefaultParam.cs:3:42:3:42 | i | DefaultParam.cs:4:5:6:5 | SSA phi(i) | DefaultParam.cs:3:46:3:46 | SSA def(i) | +| Example.cs:8:9:8:18 | this.Field | Example.cs:10:9:13:24 | SSA phi(this.Field) | Example.cs:11:13:11:30 | SSA def(this.Field) | +| Example.cs:8:9:8:18 | this.Field | Example.cs:10:9:13:24 | SSA phi(this.Field) | Example.cs:12:14:13:24 | SSA phi(this.Field) | +| Example.cs:8:9:8:18 | this.Field | Example.cs:12:14:13:24 | SSA phi(this.Field) | Example.cs:8:9:8:22 | SSA def(this.Field) | +| Example.cs:8:9:8:18 | this.Field | Example.cs:12:14:13:24 | SSA phi(this.Field) | Example.cs:13:13:13:23 | SSA call def(this.Field) | +| Example.cs:18:16:18:16 | p | Example.cs:20:9:24:9 | SSA phi(p) | Example.cs:18:16:18:16 | SSA param(p) | +| Example.cs:18:16:18:16 | p | Example.cs:20:9:24:9 | SSA phi(p) | Example.cs:23:13:23:17 | SSA def(p) | +| Fields.cs:18:19:18:20 | this.xs | Fields.cs:21:9:22:18 | SSA phi(this.xs) | Fields.cs:19:9:19:13 | SSA call def(this.xs) | +| Fields.cs:18:19:18:20 | this.xs | Fields.cs:21:9:22:18 | SSA phi(this.xs) | Fields.cs:22:13:22:17 | SSA call def(this.xs) | +| Fields.cs:30:13:30:13 | f | Fields.cs:48:9:49:29 | SSA phi(f) | Fields.cs:30:13:30:28 | SSA def(f) | +| Fields.cs:30:13:30:13 | f | Fields.cs:48:9:49:29 | SSA phi(f) | Fields.cs:49:13:49:28 | SSA def(f) | +| Fields.cs:31:19:31:22 | f.xs | Fields.cs:48:9:49:29 | SSA phi(f.xs) | Fields.cs:45:9:45:25 | SSA def(f.xs) | +| Fields.cs:31:19:31:22 | f.xs | Fields.cs:48:9:49:29 | SSA phi(f.xs) | Fields.cs:49:13:49:28 | SSA qualifier def(f.xs) | +| Fields.cs:33:19:33:22 | Fields.stat | Fields.cs:48:9:49:29 | SSA phi(Fields.stat) | Fields.cs:38:9:38:13 | SSA call def(Fields.stat) | +| Fields.cs:33:19:33:22 | Fields.stat | Fields.cs:48:9:49:29 | SSA phi(Fields.stat) | Fields.cs:49:17:49:28 | SSA call def(Fields.stat) | +| OutRef.cs:39:35:39:35 | j | OutRef.cs:41:9:42:18 | SSA phi(j) | OutRef.cs:39:35:39:35 | SSA param(j) | +| OutRef.cs:39:35:39:35 | j | OutRef.cs:41:9:42:18 | SSA phi(j) | OutRef.cs:42:13:42:17 | SSA def(j) | +| Properties.cs:18:19:18:20 | this.xs | Properties.cs:21:9:22:18 | SSA phi(this.xs) | Properties.cs:19:9:19:13 | SSA call def(this.xs) | +| Properties.cs:18:19:18:20 | this.xs | Properties.cs:21:9:22:18 | SSA phi(this.xs) | Properties.cs:22:13:22:17 | SSA call def(this.xs) | +| Properties.cs:30:13:30:13 | f | Properties.cs:48:9:49:33 | SSA phi(f) | Properties.cs:30:13:30:32 | SSA def(f) | +| Properties.cs:30:13:30:13 | f | Properties.cs:48:9:49:33 | SSA phi(f) | Properties.cs:49:13:49:32 | SSA def(f) | +| Properties.cs:31:19:31:22 | f.xs | Properties.cs:48:9:49:33 | SSA phi(f.xs) | Properties.cs:45:9:45:25 | SSA def(f.xs) | +| Properties.cs:31:19:31:22 | f.xs | Properties.cs:48:9:49:33 | SSA phi(f.xs) | Properties.cs:49:13:49:32 | SSA qualifier def(f.xs) | +| Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:48:9:49:33 | SSA phi(Properties.stat) | Properties.cs:38:9:38:13 | SSA call def(Properties.stat) | +| Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:48:9:49:33 | SSA phi(Properties.stat) | Properties.cs:49:17:49:32 | SSA call def(Properties.stat) | +| Properties.cs:61:23:61:23 | i | Properties.cs:63:9:66:9 | SSA phi(i) | Properties.cs:61:23:61:23 | SSA param(i) | +| Properties.cs:61:23:61:23 | i | Properties.cs:63:9:66:9 | SSA phi(i) | Properties.cs:63:16:63:18 | SSA def(i) | +| Test.cs:5:15:5:20 | param1 | Test.cs:25:9:32:9 | SSA phi(param1) | Test.cs:5:15:5:20 | SSA param(param1) | +| Test.cs:5:15:5:20 | param1 | Test.cs:25:9:32:9 | SSA phi(param1) | Test.cs:25:9:32:9 | SSA phi(param1) | +| Test.cs:5:15:5:20 | param1 | Test.cs:25:9:32:9 | SSA phi(param1) | Test.cs:27:17:27:24 | SSA def(param1) | +| Test.cs:5:15:5:20 | param1 | Test.cs:25:9:32:9 | SSA phi(param1) | Test.cs:27:17:27:24 | SSA def(param1) | +| Test.cs:5:15:5:20 | param1 | Test.cs:39:22:39:22 | SSA phi(param1) | Test.cs:25:9:32:9 | SSA phi(param1) | +| Test.cs:5:15:5:20 | param1 | Test.cs:39:22:39:22 | SSA phi(param1) | Test.cs:41:13:41:23 | SSA def(param1) | +| Test.cs:7:9:7:13 | this.field | Test.cs:11:9:23:9 | SSA phi(this.field) | Test.cs:7:9:7:17 | SSA def(this.field) | +| Test.cs:7:9:7:13 | this.field | Test.cs:11:9:23:9 | SSA phi(this.field) | Test.cs:21:13:21:22 | SSA def(this.field) | +| Test.cs:8:13:8:13 | x | Test.cs:11:9:23:9 | SSA phi(x) | Test.cs:8:13:8:17 | SSA def(x) | +| Test.cs:8:13:8:13 | x | Test.cs:11:9:23:9 | SSA phi(x) | Test.cs:14:17:14:19 | SSA def(x) | +| Test.cs:8:13:8:13 | x | Test.cs:34:25:34:30 | SSA phi(x) | Test.cs:11:9:23:9 | SSA phi(x) | +| Test.cs:8:13:8:13 | x | Test.cs:34:25:34:30 | SSA phi(x) | Test.cs:36:13:36:18 | SSA def(x) | +| Test.cs:9:13:9:13 | y | Test.cs:11:9:23:9 | SSA phi(y) | Test.cs:14:13:14:19 | SSA def(y) | +| Test.cs:9:13:9:13 | y | Test.cs:11:9:23:9 | SSA phi(y) | Test.cs:20:13:20:18 | SSA def(y) | +| Test.cs:9:13:9:13 | y | Test.cs:25:9:32:9 | SSA phi(y) | Test.cs:11:9:23:9 | SSA phi(y) | +| Test.cs:9:13:9:13 | y | Test.cs:25:9:32:9 | SSA phi(y) | Test.cs:31:13:31:18 | SSA def(y) | +| Test.cs:10:13:10:13 | z | Test.cs:11:9:23:9 | SSA phi(z) | Test.cs:15:13:15:17 | SSA def(z) | +| Test.cs:10:13:10:13 | z | Test.cs:11:9:23:9 | SSA phi(z) | Test.cs:22:13:22:17 | SSA def(z) | +| Test.cs:34:18:34:18 | i | Test.cs:34:25:34:30 | SSA phi(i) | Test.cs:34:18:34:22 | SSA def(i) | +| Test.cs:34:18:34:18 | i | Test.cs:34:25:34:30 | SSA phi(i) | Test.cs:34:33:34:35 | SSA def(i) | +| Test.cs:46:29:46:32 | out | Test.cs:48:9:55:9 | SSA phi(out) | Test.cs:50:13:50:20 | SSA def(out) | +| Test.cs:46:29:46:32 | out | Test.cs:48:9:55:9 | SSA phi(out) | Test.cs:54:13:54:20 | SSA def(out) | +| Test.cs:78:13:78:13 | x | Test.cs:102:9:110:9 | SSA phi(x) | Test.cs:78:13:78:17 | SSA def(x) | +| Test.cs:78:13:78:13 | x | Test.cs:102:9:110:9 | SSA phi(x) | Test.cs:108:13:108:17 | SSA def(x) | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SSAPhi.ql b/csharp/ql/test/library-tests/dataflow/ssa/SSAPhi.ql index 90726a62880f..310bc40fcad4 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SSAPhi.ql +++ b/csharp/ql/test/library-tests/dataflow/ssa/SSAPhi.ql @@ -1,6 +1,6 @@ import csharp -from Ssa::SourceVariable v, Ssa::PhiNode phi, Ssa::Definition input +from Ssa::SourceVariable v, SsaPhiDefinition phi, SsaDefinition input where phi.getAnInput() = input and v = phi.getSourceVariable() diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SSAPhiRead.expected b/csharp/ql/test/library-tests/dataflow/ssa/SSAPhiRead.expected index 6fdda8812ab2..ec1f230cf88c 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SSAPhiRead.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/SSAPhiRead.expected @@ -1,35 +1,41 @@ phiReadNode -| DefUse.cs:80:30:80:31 | SSA phi read(this.Field2) | DefUse.cs:63:9:63:14 | this.Field2 | -| Fields.cs:63:16:63:28 | SSA phi read(this.LoopField) | Fields.cs:65:24:65:32 | this.LoopField | -| Patterns.cs:20:9:38:9 | SSA phi read(o) | Patterns.cs:7:16:7:16 | o | -| Properties.cs:63:16:63:16 | SSA phi read(this.LoopProp) | Properties.cs:65:24:65:31 | this.LoopProp | -| Test.cs:25:16:25:16 | SSA phi read(x) | Test.cs:8:13:8:13 | x | +| DefUse.cs:80:9:80:51 | SSA phi read(this.Field2) | DefUse.cs:63:9:63:14 | this.Field2 | +| Fields.cs:63:9:66:9 | SSA phi read(this.LoopField) | Fields.cs:65:24:65:32 | this.LoopField | +| Patterns.cs:8:9:18:9 | SSA phi read(o) | Patterns.cs:7:16:7:16 | o | +| Patterns.cs:12:14:18:9 | SSA phi read(o) | Patterns.cs:7:16:7:16 | o | +| Properties.cs:63:9:66:9 | SSA phi read(this.LoopProp) | Properties.cs:65:24:65:31 | this.LoopProp | +| Test.cs:25:9:32:9 | SSA phi read(x) | Test.cs:8:13:8:13 | x | +| Test.cs:80:9:87:9 | SSA phi read(x) | Test.cs:78:13:78:13 | x | +| Test.cs:84:14:87:9 | SSA phi read(x) | Test.cs:78:13:78:13 | x | | Test.cs:90:9:97:9 | SSA phi read(x) | Test.cs:78:13:78:13 | x | -| Test.cs:99:9:99:15 | SSA phi read(x) | Test.cs:78:13:78:13 | x | +| Test.cs:94:14:97:9 | SSA phi read(x) | Test.cs:78:13:78:13 | x | phiReadNodeFirstRead -| DefUse.cs:80:30:80:31 | SSA phi read(this.Field2) | DefUse.cs:63:9:63:14 | this.Field2 | DefUse.cs:80:37:80:42 | access to field Field2 | -| Fields.cs:63:16:63:28 | SSA phi read(this.LoopField) | Fields.cs:65:24:65:32 | this.LoopField | Fields.cs:65:24:65:32 | access to field LoopField | -| Patterns.cs:20:9:38:9 | SSA phi read(o) | Patterns.cs:7:16:7:16 | o | Patterns.cs:20:17:20:17 | access to local variable o | -| Properties.cs:63:16:63:16 | SSA phi read(this.LoopProp) | Properties.cs:65:24:65:31 | this.LoopProp | Properties.cs:65:24:65:31 | access to property LoopProp | -| Test.cs:25:16:25:16 | SSA phi read(x) | Test.cs:8:13:8:13 | x | Test.cs:25:16:25:16 | access to local variable x | -| Test.cs:90:9:97:9 | SSA phi read(x) | Test.cs:78:13:78:13 | x | Test.cs:92:17:92:17 | access to local variable x | -| Test.cs:90:9:97:9 | SSA phi read(x) | Test.cs:78:13:78:13 | x | Test.cs:96:17:96:17 | access to local variable x | -| Test.cs:99:9:99:15 | SSA phi read(x) | Test.cs:78:13:78:13 | x | Test.cs:99:13:99:13 | access to local variable x | +| DefUse.cs:80:9:80:51 | SSA phi read(this.Field2) | DefUse.cs:63:9:63:14 | this.Field2 | DefUse.cs:80:37:80:42 | access to field Field2 | +| Fields.cs:63:9:66:9 | SSA phi read(this.LoopField) | Fields.cs:65:24:65:32 | this.LoopField | Fields.cs:65:24:65:32 | access to field LoopField | +| Patterns.cs:8:9:18:9 | SSA phi read(o) | Patterns.cs:7:16:7:16 | o | Patterns.cs:20:17:20:17 | access to local variable o | +| Properties.cs:63:9:66:9 | SSA phi read(this.LoopProp) | Properties.cs:65:24:65:31 | this.LoopProp | Properties.cs:65:24:65:31 | access to property LoopProp | +| Test.cs:25:9:32:9 | SSA phi read(x) | Test.cs:8:13:8:13 | x | Test.cs:25:16:25:16 | access to local variable x | +| Test.cs:80:9:87:9 | SSA phi read(x) | Test.cs:78:13:78:13 | x | Test.cs:92:17:92:17 | access to local variable x | +| Test.cs:80:9:87:9 | SSA phi read(x) | Test.cs:78:13:78:13 | x | Test.cs:96:17:96:17 | access to local variable x | +| Test.cs:90:9:97:9 | SSA phi read(x) | Test.cs:78:13:78:13 | x | Test.cs:99:13:99:13 | access to local variable x | phiReadInput -| DefUse.cs:80:30:80:31 | SSA phi read(this.Field2) | DefUse.cs:64:13:64:18 | SSA read(this.Field2) | -| DefUse.cs:80:30:80:31 | SSA phi read(this.Field2) | DefUse.cs:80:37:80:42 | SSA read(this.Field2) | -| Fields.cs:63:16:63:28 | SSA phi read(this.LoopField) | Fields.cs:61:17:61:17 | SSA entry def(this.LoopField) | -| Fields.cs:63:16:63:28 | SSA phi read(this.LoopField) | Fields.cs:65:24:65:32 | SSA read(this.LoopField) | -| Patterns.cs:20:9:38:9 | SSA phi read(o) | Patterns.cs:8:13:8:13 | SSA read(o) | -| Patterns.cs:20:9:38:9 | SSA phi read(o) | Patterns.cs:12:18:12:18 | SSA read(o) | -| Patterns.cs:20:9:38:9 | SSA phi read(o) | Patterns.cs:16:18:16:18 | SSA read(o) | -| Properties.cs:63:16:63:16 | SSA phi read(this.LoopProp) | Properties.cs:61:17:61:17 | SSA entry def(this.LoopProp) | -| Properties.cs:63:16:63:16 | SSA phi read(this.LoopProp) | Properties.cs:65:24:65:31 | SSA read(this.LoopProp) | -| Test.cs:25:16:25:16 | SSA phi read(x) | Test.cs:24:9:24:15 | SSA phi(x) | -| Test.cs:25:16:25:16 | SSA phi read(x) | Test.cs:25:16:25:16 | SSA read(x) | -| Test.cs:90:9:97:9 | SSA phi read(x) | Test.cs:78:13:78:17 | SSA def(x) | -| Test.cs:90:9:97:9 | SSA phi read(x) | Test.cs:82:17:82:17 | SSA read(x) | -| Test.cs:90:9:97:9 | SSA phi read(x) | Test.cs:86:17:86:17 | SSA read(x) | -| Test.cs:99:9:99:15 | SSA phi read(x) | Test.cs:90:9:97:9 | SSA phi read(x) | -| Test.cs:99:9:99:15 | SSA phi read(x) | Test.cs:92:17:92:17 | SSA read(x) | -| Test.cs:99:9:99:15 | SSA phi read(x) | Test.cs:96:17:96:17 | SSA read(x) | +| DefUse.cs:80:9:80:51 | SSA phi read(this.Field2) | DefUse.cs:64:13:64:18 | SSA read(this.Field2) | +| DefUse.cs:80:9:80:51 | SSA phi read(this.Field2) | DefUse.cs:80:37:80:42 | SSA read(this.Field2) | +| Fields.cs:63:9:66:9 | SSA phi read(this.LoopField) | Fields.cs:61:17:61:17 | SSA entry def(this.LoopField) | +| Fields.cs:63:9:66:9 | SSA phi read(this.LoopField) | Fields.cs:65:24:65:32 | SSA read(this.LoopField) | +| Patterns.cs:8:9:18:9 | SSA phi read(o) | Patterns.cs:8:13:8:13 | SSA read(o) | +| Patterns.cs:8:9:18:9 | SSA phi read(o) | Patterns.cs:12:14:18:9 | SSA phi read(o) | +| Patterns.cs:12:14:18:9 | SSA phi read(o) | Patterns.cs:12:18:12:18 | SSA read(o) | +| Patterns.cs:12:14:18:9 | SSA phi read(o) | Patterns.cs:16:18:16:18 | SSA read(o) | +| Properties.cs:63:9:66:9 | SSA phi read(this.LoopProp) | Properties.cs:61:17:61:17 | SSA entry def(this.LoopProp) | +| Properties.cs:63:9:66:9 | SSA phi read(this.LoopProp) | Properties.cs:65:24:65:31 | SSA read(this.LoopProp) | +| Test.cs:25:9:32:9 | SSA phi read(x) | Test.cs:11:9:23:9 | SSA phi(x) | +| Test.cs:25:9:32:9 | SSA phi read(x) | Test.cs:25:16:25:16 | SSA read(x) | +| Test.cs:80:9:87:9 | SSA phi read(x) | Test.cs:82:17:82:17 | SSA read(x) | +| Test.cs:80:9:87:9 | SSA phi read(x) | Test.cs:84:14:87:9 | SSA phi read(x) | +| Test.cs:84:14:87:9 | SSA phi read(x) | Test.cs:78:13:78:17 | SSA def(x) | +| Test.cs:84:14:87:9 | SSA phi read(x) | Test.cs:86:17:86:17 | SSA read(x) | +| Test.cs:90:9:97:9 | SSA phi read(x) | Test.cs:92:17:92:17 | SSA read(x) | +| Test.cs:90:9:97:9 | SSA phi read(x) | Test.cs:94:14:97:9 | SSA phi read(x) | +| Test.cs:94:14:97:9 | SSA phi read(x) | Test.cs:80:9:87:9 | SSA phi read(x) | +| Test.cs:94:14:97:9 | SSA phi read(x) | Test.cs:96:17:96:17 | SSA read(x) | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SSAPhiRead.ql b/csharp/ql/test/library-tests/dataflow/ssa/SSAPhiRead.ql index baa59bc5b677..28cdb3a5af2e 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SSAPhiRead.ql +++ b/csharp/ql/test/library-tests/dataflow/ssa/SSAPhiRead.ql @@ -6,8 +6,8 @@ query predicate phiReadNode(RefTest::Ref phi, Ssa::SourceVariable v) { phi.isPhiRead() and phi.getSourceVariable() = v } -query predicate phiReadNodeFirstRead(RefTest::Ref phi, Ssa::SourceVariable v, ControlFlow::Node read) { - exists(RefTest::Ref r, ControlFlow::BasicBlock bb, int i | +query predicate phiReadNodeFirstRead(RefTest::Ref phi, Ssa::SourceVariable v, ControlFlowNode read) { + exists(RefTest::Ref r, BasicBlock bb, int i | phi.isPhiRead() and RefTest::adjacentRefRead(phi, r) and r.accessAt(bb, i, v) and diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaDef.expected b/csharp/ql/test/library-tests/dataflow/ssa/SsaDef.expected index 3f117d6412e3..b7d177bf7852 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaDef.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/SsaDef.expected @@ -35,8 +35,8 @@ | Capture.cs:248:36:248:36 | j | Capture.cs:251:13:251:17 | SSA def(j) | | Consistency.cs:7:25:7:25 | b | Consistency.cs:7:25:7:25 | SSA param(b) | | Consistency.cs:15:17:15:17 | i | Consistency.cs:15:17:15:21 | SSA def(i) | -| Consistency.cs:25:29:25:29 | c | Consistency.cs:25:29:25:29 | SSA def(c) | -| Consistency.cs:26:13:26:19 | c.Field | Consistency.cs:25:29:25:29 | SSA qualifier def(c.Field) | +| Consistency.cs:25:29:25:29 | c | Consistency.cs:25:9:25:30 | SSA def(c) | +| Consistency.cs:26:13:26:19 | c.Field | Consistency.cs:25:9:25:30 | SSA qualifier def(c.Field) | | Consistency.cs:30:30:30:30 | c | Consistency.cs:32:9:32:29 | SSA def(c) | | Consistency.cs:44:11:44:11 | s | Consistency.cs:44:11:44:11 | SSA def(s) | | Consistency.cs:49:30:49:30 | a | Consistency.cs:49:30:49:30 | SSA param(a) | @@ -46,35 +46,35 @@ | Consistency.cs:56:17:56:17 | k | Consistency.cs:57:9:57:13 | SSA def(k) | | Consistency.cs:56:17:56:17 | k | Consistency.cs:58:9:58:13 | SSA def(k) | | DefUse.cs:3:26:3:26 | w | DefUse.cs:3:26:3:26 | SSA param(w) | +| DefUse.cs:3:26:3:26 | w | DefUse.cs:11:9:21:9 | SSA phi(w) | | DefUse.cs:3:26:3:26 | w | DefUse.cs:19:13:19:18 | SSA def(w) | -| DefUse.cs:3:26:3:26 | w | DefUse.cs:23:9:23:15 | SSA phi(w) | | DefUse.cs:3:26:3:26 | w | DefUse.cs:29:13:29:18 | SSA def(w) | | DefUse.cs:5:13:5:13 | x | DefUse.cs:5:13:5:17 | SSA def(x) | | DefUse.cs:6:14:6:14 | y | DefUse.cs:6:14:6:19 | SSA def(y) | +| DefUse.cs:6:14:6:14 | y | DefUse.cs:11:9:21:9 | SSA phi(y) | | DefUse.cs:6:14:6:14 | y | DefUse.cs:13:13:13:18 | SSA def(y) | | DefUse.cs:6:14:6:14 | y | DefUse.cs:18:13:18:18 | SSA def(y) | -| DefUse.cs:6:14:6:14 | y | DefUse.cs:23:9:23:15 | SSA phi(y) | | DefUse.cs:6:14:6:14 | y | DefUse.cs:28:13:28:18 | SSA def(y) | +| DefUse.cs:6:14:6:14 | y | DefUse.cs:37:9:40:9 | SSA phi(y) | | DefUse.cs:6:14:6:14 | y | DefUse.cs:39:13:39:18 | SSA def(y) | -| DefUse.cs:6:14:6:14 | y | DefUse.cs:42:9:42:15 | SSA phi(y) | | DefUse.cs:44:13:44:13 | z | DefUse.cs:44:13:44:17 | SSA def(z) | -| DefUse.cs:44:13:44:13 | z | DefUse.cs:47:23:47:23 | SSA def(z) | -| DefUse.cs:44:13:44:13 | z | DefUse.cs:50:23:50:23 | SSA def(z) | +| DefUse.cs:44:13:44:13 | z | DefUse.cs:47:9:47:24 | SSA def(z) | +| DefUse.cs:44:13:44:13 | z | DefUse.cs:50:9:50:24 | SSA def(z) | | DefUse.cs:53:9:53:13 | this.Field | DefUse.cs:53:9:53:17 | SSA def(this.Field) | | DefUse.cs:56:9:56:12 | this.Prop | DefUse.cs:56:9:56:16 | SSA def(this.Prop) | | DefUse.cs:63:9:63:14 | this.Field2 | DefUse.cs:63:9:63:18 | SSA def(this.Field2) | | DefUse.cs:66:9:66:14 | this.Field3 | DefUse.cs:66:9:66:18 | SSA def(this.Field3) | | DefUse.cs:67:19:67:20 | tc | DefUse.cs:67:19:67:27 | SSA def(tc) | | DefUse.cs:79:13:79:14 | x1 | DefUse.cs:79:13:79:18 | SSA def(x1) | -| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:30:80:31 | SSA def(x1) | -| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:30:80:31 | SSA phi(x1) | +| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:9:80:51 | SSA phi(x1) | +| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:16:80:32 | SSA def(x1) | | DefUse.cs:83:13:83:14 | x2 | DefUse.cs:83:13:83:18 | SSA def(x2) | -| DefUse.cs:83:13:83:14 | x2 | DefUse.cs:85:15:85:16 | SSA def(x2) | +| DefUse.cs:83:13:83:14 | x2 | DefUse.cs:84:9:86:17 | SSA def(x2) | | DefUse.cs:89:13:89:14 | x3 | DefUse.cs:89:13:89:18 | SSA def(x3) | -| DefUse.cs:89:13:89:14 | x3 | DefUse.cs:92:15:92:16 | SSA def(x3) | -| DefUse.cs:90:13:90:14 | x4 | DefUse.cs:93:15:93:16 | SSA def(x4) | +| DefUse.cs:89:13:89:14 | x3 | DefUse.cs:91:9:93:17 | SSA def(x3) | +| DefUse.cs:90:13:90:14 | x4 | DefUse.cs:91:9:93:17 | SSA def(x4) | | DefUse.cs:97:13:97:14 | x5 | DefUse.cs:97:13:97:18 | SSA def(x5) | -| DefUse.cs:97:13:97:14 | x5 | DefUse.cs:98:16:98:17 | SSA phi(x5) | +| DefUse.cs:97:13:97:14 | x5 | DefUse.cs:98:9:102:9 | SSA phi(x5) | | DefUse.cs:97:13:97:14 | x5 | DefUse.cs:101:13:101:23 | SSA def(x5) | | DefUse.cs:97:13:97:14 | x5 | DefUse.cs:104:9:104:15 | SSA def(x5) | | DefUse.cs:114:42:114:42 | i | DefUse.cs:114:47:114:52 | SSA def(i) | @@ -93,30 +93,38 @@ | DefUse.cs:184:9:184:14 | this.Field5 | DefUse.cs:184:9:184:18 | SSA def(this.Field5) | | DefUse.cs:184:9:184:14 | this.Field5 | DefUse.cs:191:9:191:11 | SSA call def(this.Field5) | | DefUse.cs:188:13:188:18 | this.Field5 | DefUse.cs:188:13:188:22 | SSA def(this.Field5) | +| DefaultParam.cs:3:20:3:20 | b | DefaultParam.cs:3:20:3:20 | SSA param(b) | +| DefaultParam.cs:3:30:3:30 | s | DefaultParam.cs:3:30:3:30 | SSA param(s) | +| DefaultParam.cs:3:30:3:30 | s | DefaultParam.cs:3:34:3:35 | SSA def(s) | +| DefaultParam.cs:3:30:3:30 | s | DefaultParam.cs:3:42:3:42 | SSA phi(s) | +| DefaultParam.cs:3:42:3:42 | i | DefaultParam.cs:3:42:3:42 | SSA param(i) | +| DefaultParam.cs:3:42:3:42 | i | DefaultParam.cs:3:46:3:46 | SSA def(i) | +| DefaultParam.cs:3:42:3:42 | i | DefaultParam.cs:4:5:6:5 | SSA phi(i) | | Example.cs:6:23:6:23 | i | Example.cs:6:23:6:23 | SSA param(i) | | Example.cs:8:9:8:18 | this.Field | Example.cs:8:9:8:22 | SSA def(this.Field) | +| Example.cs:8:9:8:18 | this.Field | Example.cs:10:9:13:24 | SSA phi(this.Field) | | Example.cs:8:9:8:18 | this.Field | Example.cs:11:13:11:30 | SSA def(this.Field) | +| Example.cs:8:9:8:18 | this.Field | Example.cs:12:14:13:24 | SSA phi(this.Field) | | Example.cs:8:9:8:18 | this.Field | Example.cs:13:13:13:23 | SSA call def(this.Field) | -| Example.cs:8:9:8:18 | this.Field | Example.cs:14:9:14:24 | SSA phi(this.Field) | | Example.cs:18:16:18:16 | p | Example.cs:18:16:18:16 | SSA param(p) | +| Example.cs:18:16:18:16 | p | Example.cs:20:9:24:9 | SSA phi(p) | | Example.cs:18:16:18:16 | p | Example.cs:23:13:23:17 | SSA def(p) | -| Example.cs:18:16:18:16 | p | Example.cs:25:9:25:15 | SSA phi(p) | | Example.cs:18:24:18:24 | b | Example.cs:18:24:18:24 | SSA param(b) | | Fields.cs:18:15:18:15 | x | Fields.cs:20:9:20:14 | SSA def(x) | | Fields.cs:18:19:18:20 | this.xs | Fields.cs:16:17:16:17 | SSA entry def(this.xs) | | Fields.cs:18:19:18:20 | this.xs | Fields.cs:19:9:19:13 | SSA call def(this.xs) | +| Fields.cs:18:19:18:20 | this.xs | Fields.cs:21:9:22:18 | SSA phi(this.xs) | | Fields.cs:18:19:18:20 | this.xs | Fields.cs:22:13:22:17 | SSA call def(this.xs) | -| Fields.cs:18:19:18:20 | this.xs | Fields.cs:23:9:23:20 | SSA phi(this.xs) | | Fields.cs:18:19:18:20 | this.xs | Fields.cs:24:9:24:23 | SSA def(this.xs) | | Fields.cs:30:13:30:13 | f | Fields.cs:30:13:30:28 | SSA def(f) | +| Fields.cs:30:13:30:13 | f | Fields.cs:48:9:49:29 | SSA phi(f) | | Fields.cs:30:13:30:13 | f | Fields.cs:49:13:49:28 | SSA def(f) | -| Fields.cs:30:13:30:13 | f | Fields.cs:50:9:50:17 | SSA phi(f) | | Fields.cs:31:19:31:22 | f.xs | Fields.cs:30:13:30:28 | SSA qualifier def(f.xs) | | Fields.cs:31:19:31:22 | f.xs | Fields.cs:34:9:34:16 | SSA call def(f.xs) | | Fields.cs:31:19:31:22 | f.xs | Fields.cs:38:9:38:13 | SSA call def(f.xs) | | Fields.cs:31:19:31:22 | f.xs | Fields.cs:45:9:45:25 | SSA def(f.xs) | +| Fields.cs:31:19:31:22 | f.xs | Fields.cs:48:9:49:29 | SSA phi(f.xs) | | Fields.cs:31:19:31:22 | f.xs | Fields.cs:49:13:49:28 | SSA qualifier def(f.xs) | -| Fields.cs:31:19:31:22 | f.xs | Fields.cs:50:9:50:17 | SSA phi(f.xs) | | Fields.cs:32:15:32:15 | z | Fields.cs:47:9:47:14 | SSA def(z) | | Fields.cs:32:19:32:20 | this.xs | Fields.cs:28:17:28:17 | SSA entry def(this.xs) | | Fields.cs:32:19:32:20 | this.xs | Fields.cs:34:9:34:16 | SSA call def(this.xs) | @@ -126,8 +134,8 @@ | Fields.cs:33:19:33:22 | Fields.stat | Fields.cs:30:17:30:28 | SSA call def(Fields.stat) | | Fields.cs:33:19:33:22 | Fields.stat | Fields.cs:34:9:34:16 | SSA call def(Fields.stat) | | Fields.cs:33:19:33:22 | Fields.stat | Fields.cs:38:9:38:13 | SSA call def(Fields.stat) | +| Fields.cs:33:19:33:22 | Fields.stat | Fields.cs:48:9:49:29 | SSA phi(Fields.stat) | | Fields.cs:33:19:33:22 | Fields.stat | Fields.cs:49:17:49:28 | SSA call def(Fields.stat) | -| Fields.cs:33:19:33:22 | Fields.stat | Fields.cs:50:9:50:17 | SSA phi(Fields.stat) | | Fields.cs:33:19:33:22 | Fields.stat | Fields.cs:51:9:51:20 | SSA call def(Fields.stat) | | Fields.cs:65:24:65:32 | this.LoopField | Fields.cs:61:17:61:17 | SSA entry def(this.LoopField) | | Fields.cs:71:17:71:35 | this.SingleAccessedField | Fields.cs:61:17:61:17 | SSA entry def(this.SingleAccessedField) | @@ -154,33 +162,33 @@ | Fields.cs:107:33:107:33 | f | Fields.cs:107:33:107:33 | SSA param(f) | | Fields.cs:115:20:115:29 | this.Field | Fields.cs:109:10:109:10 | SSA entry def(this.Field) | | Fields.cs:115:20:115:29 | this.Field | Fields.cs:114:9:114:22 | SSA call def(this.Field) | -| Fields.cs:115:20:115:35 | this.Field.Field | Fields.cs:109:10:109:10 | SSA qualifier def(this.Field.Field) | +| Fields.cs:115:20:115:35 | this.Field.Field | Fields.cs:109:10:109:10 | SSA entry def(this.Field.Field) | | Fields.cs:115:20:115:35 | this.Field.Field | Fields.cs:114:9:114:22 | SSA call def(this.Field.Field) | -| Fields.cs:116:21:116:39 | this.Field.Field.xs | Fields.cs:109:10:109:10 | SSA qualifier def(this.Field.Field.xs) | +| Fields.cs:116:21:116:39 | this.Field.Field.xs | Fields.cs:109:10:109:10 | SSA entry def(this.Field.Field.xs) | | Fields.cs:116:21:116:39 | this.Field.Field.xs | Fields.cs:114:9:114:22 | SSA qualifier def(this.Field.Field.xs) | | MultiImplementationA.cs:5:22:5:22 | x | MultiImplementationA.cs:5:22:5:22 | SSA param(x) | | MultiImplementationA.cs:5:22:5:22 | x | MultiImplementationB.cs:3:22:3:22 | SSA param(x) | | OutRef.cs:9:13:9:13 | j | OutRef.cs:9:13:9:17 | SSA def(j) | -| OutRef.cs:9:13:9:13 | j | OutRef.cs:10:32:10:32 | SSA def(j) | -| OutRef.cs:9:13:9:13 | j | OutRef.cs:22:22:22:22 | SSA def(j) | -| OutRef.cs:9:13:9:13 | j | OutRef.cs:24:29:24:29 | SSA def(j) | -| OutRef.cs:10:25:10:25 | i | OutRef.cs:10:25:10:25 | SSA def(i) | -| OutRef.cs:10:25:10:25 | i | OutRef.cs:13:21:13:21 | SSA def(i) | +| OutRef.cs:9:13:9:13 | j | OutRef.cs:10:9:10:33 | SSA def(j) | +| OutRef.cs:9:13:9:13 | j | OutRef.cs:22:9:22:30 | SSA def(j) | +| OutRef.cs:9:13:9:13 | j | OutRef.cs:24:9:24:30 | SSA def(j) | +| OutRef.cs:10:25:10:25 | i | OutRef.cs:10:9:10:33 | SSA def(i) | +| OutRef.cs:10:25:10:25 | i | OutRef.cs:13:9:13:33 | SSA def(i) | | OutRef.cs:13:28:13:32 | this.Field | OutRef.cs:7:10:7:10 | SSA entry def(this.Field) | -| OutRef.cs:13:28:13:32 | this.Field | OutRef.cs:13:28:13:32 | SSA def(this.Field) | -| OutRef.cs:13:28:13:32 | this.Field | OutRef.cs:16:21:16:25 | SSA def(this.Field) | -| OutRef.cs:13:28:13:32 | this.Field | OutRef.cs:19:21:19:25 | SSA def(this.Field) | +| OutRef.cs:13:28:13:32 | this.Field | OutRef.cs:13:9:13:33 | SSA def(this.Field) | +| OutRef.cs:13:28:13:32 | this.Field | OutRef.cs:16:9:16:37 | SSA def(this.Field) | +| OutRef.cs:13:28:13:32 | this.Field | OutRef.cs:19:9:19:39 | SSA def(this.Field) | | OutRef.cs:18:13:18:13 | t | OutRef.cs:18:13:18:28 | SSA def(t) | | OutRef.cs:19:32:19:38 | t.Field | OutRef.cs:18:13:18:28 | SSA qualifier def(t.Field) | -| OutRef.cs:19:32:19:38 | t.Field | OutRef.cs:19:32:19:38 | SSA def(t.Field) | +| OutRef.cs:19:32:19:38 | t.Field | OutRef.cs:19:9:19:39 | SSA def(t.Field) | | OutRef.cs:28:26:28:26 | i | OutRef.cs:30:9:30:13 | SSA def(i) | | OutRef.cs:28:37:28:37 | j | OutRef.cs:28:37:28:37 | SSA param(j) | | OutRef.cs:28:37:28:37 | j | OutRef.cs:31:9:31:13 | SSA def(j) | | OutRef.cs:34:27:34:27 | i | OutRef.cs:36:9:36:13 | SSA def(i) | | OutRef.cs:34:38:34:38 | j | OutRef.cs:34:38:34:38 | SSA param(j) | | OutRef.cs:39:24:39:24 | b | OutRef.cs:39:24:39:24 | SSA param(b) | -| OutRef.cs:39:35:39:35 | j | OutRef.cs:39:10:39:17 | SSA phi(j) | | OutRef.cs:39:35:39:35 | j | OutRef.cs:39:35:39:35 | SSA param(j) | +| OutRef.cs:39:35:39:35 | j | OutRef.cs:41:9:42:18 | SSA phi(j) | | OutRef.cs:39:35:39:35 | j | OutRef.cs:42:13:42:17 | SSA def(j) | | Patterns.cs:7:16:7:16 | o | Patterns.cs:7:16:7:23 | SSA def(o) | | Patterns.cs:8:22:8:23 | i1 | Patterns.cs:8:18:8:23 | SSA def(i1) | @@ -191,18 +199,18 @@ | Properties.cs:18:15:18:15 | x | Properties.cs:20:9:20:14 | SSA def(x) | | Properties.cs:18:19:18:20 | this.xs | Properties.cs:16:17:16:17 | SSA entry def(this.xs) | | Properties.cs:18:19:18:20 | this.xs | Properties.cs:19:9:19:13 | SSA call def(this.xs) | +| Properties.cs:18:19:18:20 | this.xs | Properties.cs:21:9:22:18 | SSA phi(this.xs) | | Properties.cs:18:19:18:20 | this.xs | Properties.cs:22:13:22:17 | SSA call def(this.xs) | -| Properties.cs:18:19:18:20 | this.xs | Properties.cs:23:9:23:20 | SSA phi(this.xs) | | Properties.cs:18:19:18:20 | this.xs | Properties.cs:24:9:24:23 | SSA def(this.xs) | | Properties.cs:30:13:30:13 | f | Properties.cs:30:13:30:32 | SSA def(f) | +| Properties.cs:30:13:30:13 | f | Properties.cs:48:9:49:33 | SSA phi(f) | | Properties.cs:30:13:30:13 | f | Properties.cs:49:13:49:32 | SSA def(f) | -| Properties.cs:30:13:30:13 | f | Properties.cs:50:9:50:17 | SSA phi(f) | | Properties.cs:31:19:31:22 | f.xs | Properties.cs:30:13:30:32 | SSA qualifier def(f.xs) | | Properties.cs:31:19:31:22 | f.xs | Properties.cs:34:9:34:16 | SSA call def(f.xs) | | Properties.cs:31:19:31:22 | f.xs | Properties.cs:38:9:38:13 | SSA call def(f.xs) | | Properties.cs:31:19:31:22 | f.xs | Properties.cs:45:9:45:25 | SSA def(f.xs) | +| Properties.cs:31:19:31:22 | f.xs | Properties.cs:48:9:49:33 | SSA phi(f.xs) | | Properties.cs:31:19:31:22 | f.xs | Properties.cs:49:13:49:32 | SSA qualifier def(f.xs) | -| Properties.cs:31:19:31:22 | f.xs | Properties.cs:50:9:50:17 | SSA phi(f.xs) | | Properties.cs:32:15:32:15 | z | Properties.cs:47:9:47:14 | SSA def(z) | | Properties.cs:32:19:32:20 | this.xs | Properties.cs:28:17:28:17 | SSA entry def(this.xs) | | Properties.cs:32:19:32:20 | this.xs | Properties.cs:34:9:34:16 | SSA call def(this.xs) | @@ -212,11 +220,11 @@ | Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:30:17:30:32 | SSA call def(Properties.stat) | | Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:34:9:34:16 | SSA call def(Properties.stat) | | Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:38:9:38:13 | SSA call def(Properties.stat) | +| Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:48:9:49:33 | SSA phi(Properties.stat) | | Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:49:17:49:32 | SSA call def(Properties.stat) | -| Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:50:9:50:17 | SSA phi(Properties.stat) | | Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:51:9:51:24 | SSA call def(Properties.stat) | | Properties.cs:61:23:61:23 | i | Properties.cs:61:23:61:23 | SSA param(i) | -| Properties.cs:61:23:61:23 | i | Properties.cs:63:16:63:16 | SSA phi(i) | +| Properties.cs:61:23:61:23 | i | Properties.cs:63:9:66:9 | SSA phi(i) | | Properties.cs:61:23:61:23 | i | Properties.cs:63:16:63:18 | SSA def(i) | | Properties.cs:65:24:65:31 | this.LoopProp | Properties.cs:61:17:61:17 | SSA entry def(this.LoopProp) | | Properties.cs:67:21:67:38 | this.SingleAccessedProp | Properties.cs:61:17:61:17 | SSA entry def(this.SingleAccessedProp) | @@ -237,43 +245,43 @@ | Properties.cs:106:37:106:37 | p | Properties.cs:106:37:106:37 | SSA param(p) | | Properties.cs:114:20:114:29 | this.Props | Properties.cs:108:10:108:10 | SSA entry def(this.Props) | | Properties.cs:114:20:114:29 | this.Props | Properties.cs:113:9:113:22 | SSA call def(this.Props) | -| Properties.cs:114:20:114:35 | this.Props.Props | Properties.cs:108:10:108:10 | SSA qualifier def(this.Props.Props) | +| Properties.cs:114:20:114:35 | this.Props.Props | Properties.cs:108:10:108:10 | SSA entry def(this.Props.Props) | | Properties.cs:114:20:114:35 | this.Props.Props | Properties.cs:113:9:113:22 | SSA call def(this.Props.Props) | -| Properties.cs:115:21:115:39 | this.Props.Props.xs | Properties.cs:108:10:108:10 | SSA qualifier def(this.Props.Props.xs) | +| Properties.cs:115:21:115:39 | this.Props.Props.xs | Properties.cs:108:10:108:10 | SSA entry def(this.Props.Props.xs) | | Properties.cs:115:21:115:39 | this.Props.Props.xs | Properties.cs:113:9:113:22 | SSA qualifier def(this.Props.Props.xs) | | Test.cs:5:15:5:20 | param1 | Test.cs:5:15:5:20 | SSA param(param1) | -| Test.cs:5:15:5:20 | param1 | Test.cs:25:16:25:16 | SSA phi(param1) | +| Test.cs:5:15:5:20 | param1 | Test.cs:25:9:32:9 | SSA phi(param1) | +| Test.cs:5:15:5:20 | param1 | Test.cs:25:9:32:9 | SSA phi(param1) | | Test.cs:5:15:5:20 | param1 | Test.cs:27:17:27:24 | SSA def(param1) | -| Test.cs:5:15:5:20 | param1 | Test.cs:33:9:33:19 | SSA phi(param1) | -| Test.cs:5:15:5:20 | param1 | Test.cs:39:9:42:9 | SSA phi(param1) | +| Test.cs:5:15:5:20 | param1 | Test.cs:39:22:39:22 | SSA phi(param1) | | Test.cs:5:15:5:20 | param1 | Test.cs:41:13:41:23 | SSA def(param1) | | Test.cs:5:67:5:72 | param2 | Test.cs:5:67:5:72 | SSA param(param2) | | Test.cs:7:9:7:13 | this.field | Test.cs:7:9:7:17 | SSA def(this.field) | +| Test.cs:7:9:7:13 | this.field | Test.cs:11:9:23:9 | SSA phi(this.field) | | Test.cs:7:9:7:13 | this.field | Test.cs:21:13:21:22 | SSA def(this.field) | -| Test.cs:7:9:7:13 | this.field | Test.cs:24:9:24:15 | SSA phi(this.field) | | Test.cs:8:13:8:13 | x | Test.cs:8:13:8:17 | SSA def(x) | +| Test.cs:8:13:8:13 | x | Test.cs:11:9:23:9 | SSA phi(x) | | Test.cs:8:13:8:13 | x | Test.cs:13:13:13:15 | SSA def(x) | | Test.cs:8:13:8:13 | x | Test.cs:14:17:14:19 | SSA def(x) | -| Test.cs:8:13:8:13 | x | Test.cs:24:9:24:15 | SSA phi(x) | -| Test.cs:8:13:8:13 | x | Test.cs:34:25:34:25 | SSA phi(x) | +| Test.cs:8:13:8:13 | x | Test.cs:34:25:34:30 | SSA phi(x) | | Test.cs:8:13:8:13 | x | Test.cs:36:13:36:18 | SSA def(x) | +| Test.cs:9:13:9:13 | y | Test.cs:11:9:23:9 | SSA phi(y) | | Test.cs:9:13:9:13 | y | Test.cs:14:13:14:19 | SSA def(y) | | Test.cs:9:13:9:13 | y | Test.cs:19:13:19:17 | SSA def(y) | | Test.cs:9:13:9:13 | y | Test.cs:20:13:20:18 | SSA def(y) | -| Test.cs:9:13:9:13 | y | Test.cs:24:9:24:15 | SSA phi(y) | -| Test.cs:9:13:9:13 | y | Test.cs:25:16:25:16 | SSA phi(y) | +| Test.cs:9:13:9:13 | y | Test.cs:25:9:32:9 | SSA phi(y) | | Test.cs:9:13:9:13 | y | Test.cs:31:13:31:18 | SSA def(y) | +| Test.cs:10:13:10:13 | z | Test.cs:11:9:23:9 | SSA phi(z) | | Test.cs:10:13:10:13 | z | Test.cs:15:13:15:17 | SSA def(z) | | Test.cs:10:13:10:13 | z | Test.cs:22:13:22:17 | SSA def(z) | -| Test.cs:10:13:10:13 | z | Test.cs:24:9:24:15 | SSA phi(z) | | Test.cs:34:18:34:18 | i | Test.cs:34:18:34:22 | SSA def(i) | -| Test.cs:34:18:34:18 | i | Test.cs:34:25:34:25 | SSA phi(i) | +| Test.cs:34:18:34:18 | i | Test.cs:34:25:34:30 | SSA phi(i) | | Test.cs:34:18:34:18 | i | Test.cs:34:33:34:35 | SSA def(i) | | Test.cs:39:22:39:22 | w | Test.cs:39:22:39:22 | SSA def(w) | | Test.cs:46:16:46:18 | in | Test.cs:46:16:46:18 | SSA param(in) | +| Test.cs:46:29:46:32 | out | Test.cs:48:9:55:9 | SSA phi(out) | | Test.cs:46:29:46:32 | out | Test.cs:50:13:50:20 | SSA def(out) | | Test.cs:46:29:46:32 | out | Test.cs:54:13:54:20 | SSA def(out) | -| Test.cs:46:29:46:32 | out | Test.cs:56:9:56:19 | SSA phi(out) | | Test.cs:56:13:56:17 | this.field | Test.cs:46:10:46:10 | SSA entry def(this.field) | | Test.cs:56:13:56:17 | this.field | Test.cs:57:9:57:17 | SSA def(this.field) | | Test.cs:62:16:62:16 | x | Test.cs:62:16:62:16 | SSA param(x) | @@ -285,8 +293,8 @@ | Test.cs:76:60:76:61 | b5 | Test.cs:76:60:76:61 | SSA param(b5) | | Test.cs:76:69:76:70 | b6 | Test.cs:76:69:76:70 | SSA param(b6) | | Test.cs:78:13:78:13 | x | Test.cs:78:13:78:17 | SSA def(x) | +| Test.cs:78:13:78:13 | x | Test.cs:102:9:110:9 | SSA phi(x) | | Test.cs:78:13:78:13 | x | Test.cs:108:13:108:17 | SSA def(x) | -| Test.cs:78:13:78:13 | x | Test.cs:113:9:116:9 | SSA phi(x) | | Tuples.cs:10:14:10:14 | x | Tuples.cs:10:9:10:54 | SSA def(x) | | Tuples.cs:10:14:10:14 | x | Tuples.cs:14:9:14:32 | SSA def(x) | | Tuples.cs:10:14:10:14 | x | Tuples.cs:23:9:23:37 | SSA def(x) | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaDef.ql b/csharp/ql/test/library-tests/dataflow/ssa/SsaDef.ql index 5c9205fd68b7..87c4f53a56b9 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaDef.ql +++ b/csharp/ql/test/library-tests/dataflow/ssa/SsaDef.ql @@ -1,5 +1,5 @@ import csharp -from Ssa::SourceVariable v, Ssa::Definition def +from Ssa::SourceVariable v, SsaDefinition def where v = def.getSourceVariable() select v, def diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaDefElement.expected b/csharp/ql/test/library-tests/dataflow/ssa/SsaDefElement.expected deleted file mode 100644 index 923d62a96ecb..000000000000 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaDefElement.expected +++ /dev/null @@ -1,297 +0,0 @@ -| Capture.cs:10:16:27:9 | SSA def(a) | Capture.cs:10:16:27:9 | Action a = ... | -| Capture.cs:17:17:17:21 | SSA def(y) | Capture.cs:17:17:17:21 | Int32 y = ... | -| Capture.cs:19:20:23:13 | SSA def(b) | Capture.cs:19:20:23:13 | Action b = ... | -| Capture.cs:19:24:23:13 | SSA capture def(y) | Capture.cs:19:24:23:13 | (...) => ... | -| Capture.cs:30:16:30:35 | SSA def(c) | Capture.cs:30:16:30:35 | Action c = ... | -| Capture.cs:52:16:52:43 | SSA def(b) | Capture.cs:52:16:52:43 | Action b = ... | -| Capture.cs:57:57:57:63 | SSA param(strings) | Capture.cs:57:57:57:63 | strings | -| Capture.cs:60:27:60:38 | SSA def(e) | Capture.cs:60:27:60:38 | Func e = ... | -| Capture.cs:65:45:65:51 | SSA param(strings) | Capture.cs:65:45:65:51 | strings | -| Capture.cs:68:32:68:32 | SSA param(s) | Capture.cs:68:32:68:32 | s | -| Capture.cs:68:32:68:49 | SSA capture def(c) | Capture.cs:68:32:68:49 | (...) => ... | -| Capture.cs:69:9:69:62 | SSA capture def(c) | Capture.cs:69:9:69:62 | M | -| Capture.cs:69:25:69:25 | SSA param(s) | Capture.cs:69:25:69:25 | s | -| Capture.cs:73:67:73:73 | SSA param(strings) | Capture.cs:73:67:73:73 | strings | -| Capture.cs:76:63:76:81 | SSA def(e) | Capture.cs:76:63:76:81 | Expression> e = ... | -| Capture.cs:81:28:81:28 | SSA param(i) | Capture.cs:81:28:81:28 | i | -| Capture.cs:81:34:81:36 | SSA def(i) | Capture.cs:81:34:81:36 | ...++ | -| Capture.cs:83:65:83:71 | SSA param(strings) | Capture.cs:83:65:83:71 | strings | -| Capture.cs:86:64:86:73 | SSA def(e) | Capture.cs:86:64:86:73 | Expression> e = ... | -| Capture.cs:86:68:86:73 | SSA capture def(b) | Capture.cs:86:68:86:73 | (...) => ... | -| Capture.cs:92:18:92:18 | SSA param(d) | Capture.cs:92:18:92:18 | d | -| Capture.cs:96:12:100:9 | SSA capture def(y) | Capture.cs:96:12:100:9 | (...) => ... | -| Capture.cs:98:17:98:21 | SSA def(x) | Capture.cs:98:17:98:21 | Int32 x = ... | -| Capture.cs:115:9:119:9 | SSA capture def(a) | Capture.cs:115:9:119:9 | M1 | -| Capture.cs:117:17:117:21 | SSA def(x) | Capture.cs:117:17:117:21 | Int32 x = ... | -| Capture.cs:163:9:166:9 | SSA capture def(g) | Capture.cs:163:9:166:9 | M7 | -| Capture.cs:183:13:186:13 | SSA capture def(i) | Capture.cs:183:13:186:13 | M11 | -| Capture.cs:198:28:198:44 | SSA def(eh) | Capture.cs:198:28:198:44 | MyEventHandler eh = ... | -| Capture.cs:198:33:198:44 | SSA capture def(i) | Capture.cs:198:33:198:44 | (...) => ... | -| Capture.cs:203:28:203:45 | SSA def(eh2) | Capture.cs:203:28:203:45 | MyEventHandler eh2 = ... | -| Capture.cs:203:34:203:45 | SSA capture def(i) | Capture.cs:203:34:203:45 | (...) => ... | -| Capture.cs:210:24:210:59 | SSA def(p) | Capture.cs:210:24:210:59 | Process p = ... | -| Capture.cs:212:30:212:71 | SSA def(exited) | Capture.cs:212:30:212:71 | EventHandler exited = ... | -| Capture.cs:212:39:212:71 | SSA capture def(i) | Capture.cs:212:39:212:71 | (...) => ... | -| Capture.cs:251:13:251:17 | SSA def(j) | Capture.cs:251:13:251:17 | ... = ... | -| Consistency.cs:7:25:7:25 | SSA param(b) | Consistency.cs:7:25:7:25 | b | -| Consistency.cs:15:17:15:21 | SSA def(i) | Consistency.cs:15:17:15:21 | Int32 i = ... | -| Consistency.cs:25:29:25:29 | SSA def(c) | Consistency.cs:25:9:25:30 | call to method Out | -| Consistency.cs:25:29:25:29 | SSA qualifier def(c.Field) | Consistency.cs:25:9:25:30 | call to method Out | -| Consistency.cs:32:9:32:29 | SSA def(c) | Consistency.cs:32:9:32:29 | ... = ... | -| Consistency.cs:44:11:44:11 | SSA def(s) | Consistency.cs:44:11:44:11 | S s | -| Consistency.cs:49:30:49:30 | SSA param(a) | Consistency.cs:49:30:49:30 | a | -| Consistency.cs:49:37:49:37 | SSA param(i) | Consistency.cs:49:37:49:37 | i | -| Consistency.cs:51:20:51:20 | SSA param(a) | Consistency.cs:51:20:51:20 | a | -| Consistency.cs:56:17:56:40 | SSA def(k) | Consistency.cs:56:17:56:40 | Int32 k = ... | -| Consistency.cs:57:9:57:13 | SSA def(k) | Consistency.cs:57:9:57:13 | ... = ... | -| Consistency.cs:58:9:58:13 | SSA def(k) | Consistency.cs:58:9:58:13 | ... = ... | -| DefUse.cs:3:26:3:26 | SSA param(w) | DefUse.cs:3:26:3:26 | w | -| DefUse.cs:5:13:5:17 | SSA def(x) | DefUse.cs:5:13:5:17 | Int32 x = ... | -| DefUse.cs:6:14:6:19 | SSA def(y) | DefUse.cs:6:14:6:19 | Int64 y = ... | -| DefUse.cs:13:13:13:18 | SSA def(y) | DefUse.cs:13:13:13:18 | ... = ... | -| DefUse.cs:18:13:18:18 | SSA def(y) | DefUse.cs:18:13:18:18 | ... = ... | -| DefUse.cs:19:13:19:18 | SSA def(w) | DefUse.cs:19:13:19:18 | ... = ... | -| DefUse.cs:23:9:23:15 | SSA phi(w) | DefUse.cs:23:9:23:15 | ...; | -| DefUse.cs:23:9:23:15 | SSA phi(y) | DefUse.cs:23:9:23:15 | ...; | -| DefUse.cs:28:13:28:18 | SSA def(y) | DefUse.cs:28:13:28:18 | ... = ... | -| DefUse.cs:29:13:29:18 | SSA def(w) | DefUse.cs:29:13:29:18 | ... = ... | -| DefUse.cs:39:13:39:18 | SSA def(y) | DefUse.cs:39:13:39:18 | ... = ... | -| DefUse.cs:42:9:42:15 | SSA phi(y) | DefUse.cs:42:9:42:15 | ...; | -| DefUse.cs:44:13:44:17 | SSA def(z) | DefUse.cs:44:13:44:17 | Int32 z = ... | -| DefUse.cs:47:23:47:23 | SSA def(z) | DefUse.cs:47:9:47:24 | call to method outMethod | -| DefUse.cs:50:23:50:23 | SSA def(z) | DefUse.cs:50:9:50:24 | call to method refMethod | -| DefUse.cs:53:9:53:17 | SSA def(this.Field) | DefUse.cs:53:9:53:17 | ... = ... | -| DefUse.cs:56:9:56:16 | SSA def(this.Prop) | DefUse.cs:56:9:56:16 | ... = ... | -| DefUse.cs:63:9:63:18 | SSA def(this.Field2) | DefUse.cs:63:9:63:18 | ... = ... | -| DefUse.cs:66:9:66:18 | SSA def(this.Field3) | DefUse.cs:66:9:66:18 | ... = ... | -| DefUse.cs:67:19:67:27 | SSA def(tc) | DefUse.cs:67:19:67:27 | TestClass tc = ... | -| DefUse.cs:79:13:79:18 | SSA def(x1) | DefUse.cs:79:13:79:18 | Int32 x1 = ... | -| DefUse.cs:80:30:80:31 | SSA def(x1) | DefUse.cs:80:16:80:32 | call to method refMethod | -| DefUse.cs:80:30:80:31 | SSA phi(x1) | DefUse.cs:80:30:80:31 | access to local variable x1 | -| DefUse.cs:83:13:83:18 | SSA def(x2) | DefUse.cs:83:13:83:18 | Int32 x2 = ... | -| DefUse.cs:85:15:85:16 | SSA def(x2) | DefUse.cs:84:9:86:17 | call to method refOutMethod | -| DefUse.cs:89:13:89:18 | SSA def(x3) | DefUse.cs:89:13:89:18 | Int32 x3 = ... | -| DefUse.cs:92:15:92:16 | SSA def(x3) | DefUse.cs:91:9:93:17 | call to method refOutMethod | -| DefUse.cs:93:15:93:16 | SSA def(x4) | DefUse.cs:91:9:93:17 | call to method refOutMethod | -| DefUse.cs:97:13:97:18 | SSA def(x5) | DefUse.cs:97:13:97:18 | Int32 x5 = ... | -| DefUse.cs:98:16:98:17 | SSA phi(x5) | DefUse.cs:98:16:98:17 | access to local variable x5 | -| DefUse.cs:101:13:101:23 | SSA def(x5) | DefUse.cs:101:13:101:23 | ... = ... | -| DefUse.cs:104:9:104:15 | SSA def(x5) | DefUse.cs:104:9:104:15 | ... += ... | -| DefUse.cs:114:47:114:52 | SSA def(i) | DefUse.cs:114:47:114:52 | ... = ... | -| DefUse.cs:116:47:116:51 | SSA def(i) | DefUse.cs:116:47:116:51 | ... = ... | -| DefUse.cs:118:45:118:45 | SSA param(i) | DefUse.cs:118:45:118:45 | i | -| DefUse.cs:118:61:118:65 | SSA def(j) | DefUse.cs:118:61:118:65 | ... = ... | -| DefUse.cs:118:68:118:72 | SSA def(i) | DefUse.cs:118:68:118:72 | ... = ... | -| DefUse.cs:128:19:128:19 | SSA param(i) | DefUse.cs:128:19:128:19 | i | -| DefUse.cs:134:22:134:22 | SSA param(d) | DefUse.cs:134:22:134:22 | d | -| DefUse.cs:142:68:142:69 | SSA param(ie) | DefUse.cs:142:68:142:69 | ie | -| DefUse.cs:144:22:144:22 | SSA def(x) | DefUse.cs:144:22:144:22 | String x | -| DefUse.cs:155:9:155:18 | SSA def(this.Field4) | DefUse.cs:155:9:155:18 | ... = ... | -| DefUse.cs:160:10:160:16 | SSA entry def(this.Field4) | DefUse.cs:160:10:160:16 | FieldM2 | -| DefUse.cs:171:23:180:9 | SSA def(a) | DefUse.cs:171:23:180:9 | Action a = ... | -| DefUse.cs:184:9:184:18 | SSA def(this.Field5) | DefUse.cs:184:9:184:18 | ... = ... | -| DefUse.cs:186:9:190:9 | SSA def(a) | DefUse.cs:186:9:190:9 | ... = ... | -| DefUse.cs:188:13:188:22 | SSA def(this.Field5) | DefUse.cs:188:13:188:22 | ... = ... | -| DefUse.cs:191:9:191:11 | SSA call def(this.Field5) | DefUse.cs:191:9:191:11 | delegate call | -| Example.cs:6:23:6:23 | SSA param(i) | Example.cs:6:23:6:23 | i | -| Example.cs:8:9:8:22 | SSA def(this.Field) | Example.cs:8:9:8:22 | ... = ... | -| Example.cs:11:13:11:30 | SSA def(this.Field) | Example.cs:11:13:11:30 | ... = ... | -| Example.cs:13:13:13:23 | SSA call def(this.Field) | Example.cs:13:13:13:23 | call to method SetField | -| Example.cs:14:9:14:24 | SSA phi(this.Field) | Example.cs:14:9:14:24 | ...; | -| Example.cs:18:16:18:16 | SSA param(p) | Example.cs:18:16:18:16 | p | -| Example.cs:18:24:18:24 | SSA param(b) | Example.cs:18:24:18:24 | b | -| Example.cs:23:13:23:17 | SSA def(p) | Example.cs:23:13:23:17 | ... = ... | -| Example.cs:25:9:25:15 | SSA phi(p) | Example.cs:25:9:25:15 | ...; | -| Fields.cs:16:17:16:17 | SSA entry def(this.xs) | Fields.cs:16:17:16:17 | F | -| Fields.cs:19:9:19:13 | SSA call def(this.xs) | Fields.cs:19:9:19:13 | call to method Upd | -| Fields.cs:20:9:20:14 | SSA def(x) | Fields.cs:20:9:20:14 | ... = ... | -| Fields.cs:22:13:22:17 | SSA call def(this.xs) | Fields.cs:22:13:22:17 | call to method Upd | -| Fields.cs:23:9:23:20 | SSA phi(this.xs) | Fields.cs:23:9:23:20 | ...; | -| Fields.cs:24:9:24:23 | SSA def(this.xs) | Fields.cs:24:9:24:23 | ... = ... | -| Fields.cs:28:17:28:17 | SSA entry def(Fields.stat) | Fields.cs:28:17:28:17 | G | -| Fields.cs:28:17:28:17 | SSA entry def(this.xs) | Fields.cs:28:17:28:17 | G | -| Fields.cs:30:13:30:28 | SSA def(f) | Fields.cs:30:13:30:28 | Fields f = ... | -| Fields.cs:30:13:30:28 | SSA qualifier def(f.xs) | Fields.cs:30:13:30:28 | Fields f = ... | -| Fields.cs:30:17:30:28 | SSA call def(Fields.stat) | Fields.cs:30:17:30:28 | object creation of type Fields | -| Fields.cs:34:9:34:16 | SSA call def(Fields.stat) | Fields.cs:34:9:34:16 | call to method F | -| Fields.cs:34:9:34:16 | SSA call def(f.xs) | Fields.cs:34:9:34:16 | call to method F | -| Fields.cs:34:9:34:16 | SSA call def(this.xs) | Fields.cs:34:9:34:16 | call to method F | -| Fields.cs:38:9:38:13 | SSA call def(Fields.stat) | Fields.cs:38:9:38:13 | call to method F | -| Fields.cs:38:9:38:13 | SSA call def(f.xs) | Fields.cs:38:9:38:13 | call to method F | -| Fields.cs:38:9:38:13 | SSA call def(this.xs) | Fields.cs:38:9:38:13 | call to method F | -| Fields.cs:42:9:42:23 | SSA def(this.xs) | Fields.cs:42:9:42:23 | ... = ... | -| Fields.cs:45:9:45:25 | SSA def(f.xs) | Fields.cs:45:9:45:25 | ... = ... | -| Fields.cs:47:9:47:14 | SSA def(z) | Fields.cs:47:9:47:14 | ... = ... | -| Fields.cs:49:13:49:28 | SSA def(f) | Fields.cs:49:13:49:28 | ... = ... | -| Fields.cs:49:13:49:28 | SSA qualifier def(f.xs) | Fields.cs:49:13:49:28 | ... = ... | -| Fields.cs:49:17:49:28 | SSA call def(Fields.stat) | Fields.cs:49:17:49:28 | object creation of type Fields | -| Fields.cs:50:9:50:17 | SSA phi(Fields.stat) | Fields.cs:50:9:50:17 | ...; | -| Fields.cs:50:9:50:17 | SSA phi(f) | Fields.cs:50:9:50:17 | ...; | -| Fields.cs:50:9:50:17 | SSA phi(f.xs) | Fields.cs:50:9:50:17 | ...; | -| Fields.cs:51:9:51:20 | SSA call def(Fields.stat) | Fields.cs:51:9:51:20 | object creation of type Fields | -| Fields.cs:61:17:61:17 | SSA entry def(this.LoopField) | Fields.cs:61:17:61:17 | H | -| Fields.cs:61:17:61:17 | SSA entry def(this.SingleAccessedField) | Fields.cs:61:17:61:17 | H | -| Fields.cs:74:17:74:17 | SSA entry def(this.SingleAccessedField) | Fields.cs:74:17:74:17 | I | -| Fields.cs:77:13:77:45 | SSA def(f) | Fields.cs:77:13:77:45 | Fields f = ... | -| Fields.cs:78:23:78:54 | SSA def(a) | Fields.cs:78:23:78:54 | Action a = ... | -| Fields.cs:78:27:78:54 | SSA capture def(f) | Fields.cs:78:27:78:54 | (...) => ... | -| Fields.cs:79:23:79:35 | SSA def(b) | Fields.cs:79:23:79:35 | Action b = ... | -| Fields.cs:80:9:80:25 | SSA def(f.xs) | Fields.cs:80:9:80:25 | ... = ... | -| Fields.cs:81:9:81:11 | SSA call def(f.xs) | Fields.cs:81:9:81:11 | delegate call | -| Fields.cs:83:9:83:25 | SSA def(f.xs) | Fields.cs:83:9:83:25 | ... = ... | -| Fields.cs:85:9:85:22 | SSA def(this.xs) | Fields.cs:85:9:85:22 | ... = ... | -| Fields.cs:86:9:86:47 | SSA call def(f.xs) | Fields.cs:86:9:86:47 | call to method Select | -| Fields.cs:86:24:86:46 | SSA capture def(a) | Fields.cs:86:24:86:46 | (...) => ... | -| Fields.cs:87:9:87:22 | SSA def(this.xs) | Fields.cs:87:9:87:22 | ... = ... | -| Fields.cs:88:9:88:25 | SSA def(f.xs) | Fields.cs:88:9:88:25 | ... = ... | -| Fields.cs:89:24:89:46 | SSA capture def(b) | Fields.cs:89:24:89:46 | (...) => ... | -| Fields.cs:95:19:95:19 | SSA param(f) | Fields.cs:95:19:95:19 | f | -| Fields.cs:97:9:97:30 | SSA def(f.Field) | Fields.cs:97:9:97:30 | ... = ... | -| Fields.cs:97:9:97:30 | SSA qualifier def(f.Field.Field) | Fields.cs:97:9:97:30 | ... = ... | -| Fields.cs:97:9:97:30 | SSA qualifier def(f.Field.Field.Field) | Fields.cs:97:9:97:30 | ... = ... | -| Fields.cs:97:9:97:30 | SSA qualifier def(f.Field.Field.Field.Field) | Fields.cs:97:9:97:30 | ... = ... | -| Fields.cs:102:9:102:28 | SSA def(this.Field) | Fields.cs:102:9:102:28 | ... = ... | -| Fields.cs:107:33:107:33 | SSA param(f) | Fields.cs:107:33:107:33 | f | -| Fields.cs:109:10:109:10 | SSA entry def(this.Field) | Fields.cs:109:10:109:10 | K | -| Fields.cs:114:9:114:22 | SSA call def(this.Field) | Fields.cs:114:9:114:22 | call to method SetField | -| Fields.cs:114:9:114:22 | SSA call def(this.Field.Field) | Fields.cs:114:9:114:22 | call to method SetField | -| Fields.cs:114:9:114:22 | SSA qualifier def(this.Field.Field.xs) | Fields.cs:114:9:114:22 | call to method SetField | -| MultiImplementationA.cs:5:22:5:22 | SSA param(x) | MultiImplementationA.cs:5:22:5:22 | x | -| MultiImplementationB.cs:3:22:3:22 | SSA param(x) | MultiImplementationA.cs:5:22:5:22 | x | -| OutRef.cs:7:10:7:10 | SSA entry def(this.Field) | OutRef.cs:7:10:7:10 | M | -| OutRef.cs:9:13:9:17 | SSA def(j) | OutRef.cs:9:13:9:17 | Int32 j = ... | -| OutRef.cs:10:25:10:25 | SSA def(i) | OutRef.cs:10:9:10:33 | call to method OutRefM | -| OutRef.cs:10:32:10:32 | SSA def(j) | OutRef.cs:10:9:10:33 | call to method OutRefM | -| OutRef.cs:13:21:13:21 | SSA def(i) | OutRef.cs:13:9:13:33 | call to method OutRefM | -| OutRef.cs:13:28:13:32 | SSA def(this.Field) | OutRef.cs:13:9:13:33 | call to method OutRefM | -| OutRef.cs:16:21:16:25 | SSA def(this.Field) | OutRef.cs:16:9:16:37 | call to method OutRefM | -| OutRef.cs:18:13:18:28 | SSA def(t) | OutRef.cs:18:13:18:28 | OutRef t = ... | -| OutRef.cs:18:13:18:28 | SSA qualifier def(t.Field) | OutRef.cs:18:13:18:28 | OutRef t = ... | -| OutRef.cs:19:21:19:25 | SSA def(this.Field) | OutRef.cs:19:9:19:39 | call to method OutRefM | -| OutRef.cs:19:32:19:38 | SSA def(t.Field) | OutRef.cs:19:9:19:39 | call to method OutRefM | -| OutRef.cs:22:22:22:22 | SSA def(j) | OutRef.cs:22:9:22:30 | call to method OutRefM2 | -| OutRef.cs:24:29:24:29 | SSA def(j) | OutRef.cs:24:9:24:30 | call to method OutRefM3 | -| OutRef.cs:28:37:28:37 | SSA param(j) | OutRef.cs:28:37:28:37 | j | -| OutRef.cs:30:9:30:13 | SSA def(i) | OutRef.cs:30:9:30:13 | ... = ... | -| OutRef.cs:31:9:31:13 | SSA def(j) | OutRef.cs:31:9:31:13 | ... = ... | -| OutRef.cs:34:38:34:38 | SSA param(j) | OutRef.cs:34:38:34:38 | j | -| OutRef.cs:36:9:36:13 | SSA def(i) | OutRef.cs:36:9:36:13 | ... = ... | -| OutRef.cs:39:24:39:24 | SSA param(b) | OutRef.cs:39:24:39:24 | b | -| OutRef.cs:39:35:39:35 | SSA param(j) | OutRef.cs:39:35:39:35 | j | -| OutRef.cs:42:13:42:17 | SSA def(j) | OutRef.cs:42:13:42:17 | ... = ... | -| Patterns.cs:7:16:7:23 | SSA def(o) | Patterns.cs:7:16:7:23 | Object o = ... | -| Patterns.cs:8:18:8:23 | SSA def(i1) | Patterns.cs:8:18:8:23 | Int32 i1 | -| Patterns.cs:12:23:12:31 | SSA def(s1) | Patterns.cs:12:23:12:31 | String s1 | -| Patterns.cs:24:18:24:23 | SSA def(i2) | Patterns.cs:24:18:24:23 | Int32 i2 | -| Patterns.cs:27:18:27:23 | SSA def(i3) | Patterns.cs:27:18:27:23 | Int32 i3 | -| Patterns.cs:30:18:30:26 | SSA def(s2) | Patterns.cs:30:18:30:26 | String s2 | -| Properties.cs:16:17:16:17 | SSA entry def(this.xs) | Properties.cs:16:17:16:17 | F | -| Properties.cs:19:9:19:13 | SSA call def(this.xs) | Properties.cs:19:9:19:13 | call to method Upd | -| Properties.cs:20:9:20:14 | SSA def(x) | Properties.cs:20:9:20:14 | ... = ... | -| Properties.cs:22:13:22:17 | SSA call def(this.xs) | Properties.cs:22:13:22:17 | call to method Upd | -| Properties.cs:23:9:23:20 | SSA phi(this.xs) | Properties.cs:23:9:23:20 | ...; | -| Properties.cs:24:9:24:23 | SSA def(this.xs) | Properties.cs:24:9:24:23 | ... = ... | -| Properties.cs:28:17:28:17 | SSA entry def(Properties.stat) | Properties.cs:28:17:28:17 | G | -| Properties.cs:28:17:28:17 | SSA entry def(this.xs) | Properties.cs:28:17:28:17 | G | -| Properties.cs:30:13:30:32 | SSA def(f) | Properties.cs:30:13:30:32 | Properties f = ... | -| Properties.cs:30:13:30:32 | SSA qualifier def(f.xs) | Properties.cs:30:13:30:32 | Properties f = ... | -| Properties.cs:30:17:30:32 | SSA call def(Properties.stat) | Properties.cs:30:17:30:32 | object creation of type Properties | -| Properties.cs:34:9:34:16 | SSA call def(Properties.stat) | Properties.cs:34:9:34:16 | call to method F | -| Properties.cs:34:9:34:16 | SSA call def(f.xs) | Properties.cs:34:9:34:16 | call to method F | -| Properties.cs:34:9:34:16 | SSA call def(this.xs) | Properties.cs:34:9:34:16 | call to method F | -| Properties.cs:38:9:38:13 | SSA call def(Properties.stat) | Properties.cs:38:9:38:13 | call to method F | -| Properties.cs:38:9:38:13 | SSA call def(f.xs) | Properties.cs:38:9:38:13 | call to method F | -| Properties.cs:38:9:38:13 | SSA call def(this.xs) | Properties.cs:38:9:38:13 | call to method F | -| Properties.cs:42:9:42:23 | SSA def(this.xs) | Properties.cs:42:9:42:23 | ... = ... | -| Properties.cs:45:9:45:25 | SSA def(f.xs) | Properties.cs:45:9:45:25 | ... = ... | -| Properties.cs:47:9:47:14 | SSA def(z) | Properties.cs:47:9:47:14 | ... = ... | -| Properties.cs:49:13:49:32 | SSA def(f) | Properties.cs:49:13:49:32 | ... = ... | -| Properties.cs:49:13:49:32 | SSA qualifier def(f.xs) | Properties.cs:49:13:49:32 | ... = ... | -| Properties.cs:49:17:49:32 | SSA call def(Properties.stat) | Properties.cs:49:17:49:32 | object creation of type Properties | -| Properties.cs:50:9:50:17 | SSA phi(Properties.stat) | Properties.cs:50:9:50:17 | ...; | -| Properties.cs:50:9:50:17 | SSA phi(f) | Properties.cs:50:9:50:17 | ...; | -| Properties.cs:50:9:50:17 | SSA phi(f.xs) | Properties.cs:50:9:50:17 | ...; | -| Properties.cs:51:9:51:24 | SSA call def(Properties.stat) | Properties.cs:51:9:51:24 | object creation of type Properties | -| Properties.cs:61:17:61:17 | SSA entry def(this.LoopProp) | Properties.cs:61:17:61:17 | H | -| Properties.cs:61:17:61:17 | SSA entry def(this.SingleAccessedProp) | Properties.cs:61:17:61:17 | H | -| Properties.cs:61:23:61:23 | SSA param(i) | Properties.cs:61:23:61:23 | i | -| Properties.cs:63:16:63:16 | SSA phi(i) | Properties.cs:63:16:63:16 | access to parameter i | -| Properties.cs:63:16:63:18 | SSA def(i) | Properties.cs:63:16:63:18 | ...-- | -| Properties.cs:70:17:70:17 | SSA entry def(this.SingleAccessedProp) | Properties.cs:70:17:70:17 | I | -| Properties.cs:73:13:73:32 | SSA def(f) | Properties.cs:73:13:73:32 | Properties f = ... | -| Properties.cs:74:23:74:54 | SSA def(a) | Properties.cs:74:23:74:54 | Action a = ... | -| Properties.cs:74:27:74:54 | SSA capture def(f) | Properties.cs:74:27:74:54 | (...) => ... | -| Properties.cs:75:23:75:35 | SSA def(b) | Properties.cs:75:23:75:35 | Action b = ... | -| Properties.cs:76:9:76:25 | SSA def(f.xs) | Properties.cs:76:9:76:25 | ... = ... | -| Properties.cs:77:9:77:11 | SSA call def(f.xs) | Properties.cs:77:9:77:11 | delegate call | -| Properties.cs:79:9:79:25 | SSA def(f.xs) | Properties.cs:79:9:79:25 | ... = ... | -| Properties.cs:81:9:81:22 | SSA def(this.xs) | Properties.cs:81:9:81:22 | ... = ... | -| Properties.cs:82:9:82:47 | SSA call def(f.xs) | Properties.cs:82:9:82:47 | call to method Select | -| Properties.cs:82:24:82:46 | SSA capture def(a) | Properties.cs:82:24:82:46 | (...) => ... | -| Properties.cs:83:9:83:22 | SSA def(this.xs) | Properties.cs:83:9:83:22 | ... = ... | -| Properties.cs:84:9:84:25 | SSA def(f.xs) | Properties.cs:84:9:84:25 | ... = ... | -| Properties.cs:85:24:85:46 | SSA capture def(b) | Properties.cs:85:24:85:46 | (...) => ... | -| Properties.cs:106:37:106:37 | SSA param(p) | Properties.cs:106:37:106:37 | p | -| Properties.cs:108:10:108:10 | SSA entry def(this.Props) | Properties.cs:108:10:108:10 | K | -| Properties.cs:113:9:113:22 | SSA call def(this.Props) | Properties.cs:113:9:113:22 | call to method SetProps | -| Properties.cs:113:9:113:22 | SSA call def(this.Props.Props) | Properties.cs:113:9:113:22 | call to method SetProps | -| Properties.cs:113:9:113:22 | SSA qualifier def(this.Props.Props.xs) | Properties.cs:113:9:113:22 | call to method SetProps | -| Test.cs:5:15:5:20 | SSA param(param1) | Test.cs:5:15:5:20 | param1 | -| Test.cs:5:67:5:72 | SSA param(param2) | Test.cs:5:67:5:72 | param2 | -| Test.cs:7:9:7:17 | SSA def(this.field) | Test.cs:7:9:7:17 | ... = ... | -| Test.cs:8:13:8:17 | SSA def(x) | Test.cs:8:13:8:17 | Int32 x = ... | -| Test.cs:13:13:13:15 | SSA def(x) | Test.cs:13:13:13:15 | ...++ | -| Test.cs:14:13:14:19 | SSA def(y) | Test.cs:14:13:14:19 | ... = ... | -| Test.cs:14:17:14:19 | SSA def(x) | Test.cs:14:17:14:19 | ++... | -| Test.cs:15:13:15:17 | SSA def(z) | Test.cs:15:13:15:17 | ... = ... | -| Test.cs:19:13:19:17 | SSA def(y) | Test.cs:19:13:19:17 | ... = ... | -| Test.cs:20:13:20:18 | SSA def(y) | Test.cs:20:13:20:18 | ... += ... | -| Test.cs:21:13:21:22 | SSA def(this.field) | Test.cs:21:13:21:22 | ... = ... | -| Test.cs:22:13:22:17 | SSA def(z) | Test.cs:22:13:22:17 | ... = ... | -| Test.cs:24:9:24:15 | SSA phi(this.field) | Test.cs:24:9:24:15 | ...; | -| Test.cs:24:9:24:15 | SSA phi(x) | Test.cs:24:9:24:15 | ...; | -| Test.cs:24:9:24:15 | SSA phi(y) | Test.cs:24:9:24:15 | ...; | -| Test.cs:24:9:24:15 | SSA phi(z) | Test.cs:24:9:24:15 | ...; | -| Test.cs:25:16:25:16 | SSA phi(param1) | Test.cs:25:16:25:16 | access to local variable x | -| Test.cs:25:16:25:16 | SSA phi(y) | Test.cs:25:16:25:16 | access to local variable x | -| Test.cs:27:17:27:24 | SSA def(param1) | Test.cs:27:17:27:24 | ...++ | -| Test.cs:31:13:31:18 | SSA def(y) | Test.cs:31:13:31:18 | ... -= ... | -| Test.cs:33:9:33:19 | SSA phi(param1) | Test.cs:33:9:33:19 | ...; | -| Test.cs:34:18:34:22 | SSA def(i) | Test.cs:34:18:34:22 | Int32 i = ... | -| Test.cs:34:25:34:25 | SSA phi(i) | Test.cs:34:25:34:25 | access to local variable i | -| Test.cs:34:25:34:25 | SSA phi(x) | Test.cs:34:25:34:25 | access to local variable i | -| Test.cs:34:33:34:35 | SSA def(i) | Test.cs:34:33:34:35 | ...++ | -| Test.cs:36:13:36:18 | SSA def(x) | Test.cs:36:13:36:18 | ... += ... | -| Test.cs:39:9:42:9 | SSA phi(param1) | Test.cs:39:9:42:9 | foreach (... ... in ...) ... | -| Test.cs:39:22:39:22 | SSA def(w) | Test.cs:39:22:39:22 | Int32 w | -| Test.cs:41:13:41:23 | SSA def(param1) | Test.cs:41:13:41:23 | ... += ... | -| Test.cs:46:10:46:10 | SSA entry def(this.field) | Test.cs:46:10:46:10 | g | -| Test.cs:46:16:46:18 | SSA param(in) | Test.cs:46:16:46:18 | in | -| Test.cs:50:13:50:20 | SSA def(out) | Test.cs:50:13:50:20 | ... = ... | -| Test.cs:54:13:54:20 | SSA def(out) | Test.cs:54:13:54:20 | ... = ... | -| Test.cs:56:9:56:19 | SSA phi(out) | Test.cs:56:9:56:19 | ...; | -| Test.cs:57:9:57:17 | SSA def(this.field) | Test.cs:57:9:57:17 | ... = ... | -| Test.cs:62:16:62:16 | SSA param(x) | Test.cs:62:16:62:16 | x | -| Test.cs:68:45:68:45 | SSA def(e) | Test.cs:68:45:68:45 | DivideByZeroException e | -| Test.cs:76:24:76:25 | SSA param(b1) | Test.cs:76:24:76:25 | b1 | -| Test.cs:76:33:76:34 | SSA param(b2) | Test.cs:76:33:76:34 | b2 | -| Test.cs:76:42:76:43 | SSA param(b3) | Test.cs:76:42:76:43 | b3 | -| Test.cs:76:51:76:52 | SSA param(b4) | Test.cs:76:51:76:52 | b4 | -| Test.cs:76:60:76:61 | SSA param(b5) | Test.cs:76:60:76:61 | b5 | -| Test.cs:76:69:76:70 | SSA param(b6) | Test.cs:76:69:76:70 | b6 | -| Test.cs:78:13:78:17 | SSA def(x) | Test.cs:78:13:78:17 | Int32 x = ... | -| Test.cs:108:13:108:17 | SSA def(x) | Test.cs:108:13:108:17 | ... = ... | -| Test.cs:113:9:116:9 | SSA phi(x) | Test.cs:113:9:116:9 | if (...) ... | -| Tuples.cs:10:9:10:54 | SSA def(b) | Tuples.cs:10:9:10:54 | ... = ... | -| Tuples.cs:10:9:10:54 | SSA def(s) | Tuples.cs:10:9:10:54 | ... = ... | -| Tuples.cs:10:9:10:54 | SSA def(x) | Tuples.cs:10:9:10:54 | ... = ... | -| Tuples.cs:14:9:14:32 | SSA def(b) | Tuples.cs:14:9:14:32 | ... = ... | -| Tuples.cs:14:9:14:32 | SSA def(s) | Tuples.cs:14:9:14:32 | ... = ... | -| Tuples.cs:14:9:14:32 | SSA def(x) | Tuples.cs:14:9:14:32 | ... = ... | -| Tuples.cs:18:40:18:57 | SSA def(tuple) | Tuples.cs:18:40:18:57 | (Int32,(Boolean,String)) tuple = ... | -| Tuples.cs:20:9:20:34 | SSA def(this.Field) | Tuples.cs:20:9:20:34 | ... = ... | -| Tuples.cs:20:9:20:34 | SSA def(this.Property) | Tuples.cs:20:9:20:34 | ... = ... | -| Tuples.cs:23:9:23:37 | SSA def(x) | Tuples.cs:23:9:23:37 | ... = ... | -| Tuples.cs:25:13:25:28 | SSA def(t) | Tuples.cs:25:13:25:28 | Tuples t = ... | -| Tuples.cs:26:9:26:33 | SSA def(t.Field) | Tuples.cs:26:9:26:33 | ... = ... | -| Tuples.cs:26:9:26:33 | SSA def(this.Field) | Tuples.cs:26:9:26:33 | ... = ... | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaDefElement.ql b/csharp/ql/test/library-tests/dataflow/ssa/SsaDefElement.ql deleted file mode 100644 index e404aee77679..000000000000 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaDefElement.ql +++ /dev/null @@ -1,4 +0,0 @@ -import csharp - -from Ssa::Definition def -select def, def.getElement() diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaExplicitDef.expected b/csharp/ql/test/library-tests/dataflow/ssa/SsaExplicitDef.expected index 8582dd1cf6e0..4ea7d32e32f5 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaExplicitDef.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/SsaExplicitDef.expected @@ -3,10 +3,18 @@ | Capture.cs:19:20:19:20 | b | Capture.cs:19:20:23:13 | SSA def(b) | Capture.cs:19:20:23:13 | Action b = ... | | Capture.cs:30:16:30:16 | c | Capture.cs:30:16:30:35 | SSA def(c) | Capture.cs:30:16:30:35 | Action c = ... | | Capture.cs:52:16:52:16 | b | Capture.cs:52:16:52:43 | SSA def(b) | Capture.cs:52:16:52:43 | Action b = ... | +| Capture.cs:57:57:57:63 | strings | Capture.cs:57:57:57:63 | SSA param(strings) | Capture.cs:57:57:57:63 | strings | | Capture.cs:60:27:60:27 | e | Capture.cs:60:27:60:38 | SSA def(e) | Capture.cs:60:27:60:38 | Func e = ... | +| Capture.cs:65:45:65:51 | strings | Capture.cs:65:45:65:51 | SSA param(strings) | Capture.cs:65:45:65:51 | strings | +| Capture.cs:68:32:68:32 | s | Capture.cs:68:32:68:32 | SSA param(s) | Capture.cs:68:32:68:32 | s | +| Capture.cs:69:25:69:25 | s | Capture.cs:69:25:69:25 | SSA param(s) | Capture.cs:69:25:69:25 | s | +| Capture.cs:73:67:73:73 | strings | Capture.cs:73:67:73:73 | SSA param(strings) | Capture.cs:73:67:73:73 | strings | | Capture.cs:76:63:76:63 | e | Capture.cs:76:63:76:81 | SSA def(e) | Capture.cs:76:63:76:81 | Expression> e = ... | +| Capture.cs:81:28:81:28 | i | Capture.cs:81:28:81:28 | SSA param(i) | Capture.cs:81:28:81:28 | i | | Capture.cs:81:28:81:28 | i | Capture.cs:81:34:81:36 | SSA def(i) | Capture.cs:81:34:81:36 | ...++ | +| Capture.cs:83:65:83:71 | strings | Capture.cs:83:65:83:71 | SSA param(strings) | Capture.cs:83:65:83:71 | strings | | Capture.cs:86:64:86:64 | e | Capture.cs:86:64:86:73 | SSA def(e) | Capture.cs:86:64:86:73 | Expression> e = ... | +| Capture.cs:92:18:92:18 | d | Capture.cs:92:18:92:18 | SSA param(d) | Capture.cs:92:18:92:18 | d | | Capture.cs:98:17:98:17 | x | Capture.cs:98:17:98:21 | SSA def(x) | Capture.cs:98:17:98:21 | Int32 x = ... | | Capture.cs:117:17:117:17 | x | Capture.cs:117:17:117:21 | SSA def(x) | Capture.cs:117:17:117:21 | Int32 x = ... | | Capture.cs:198:28:198:29 | eh | Capture.cs:198:28:198:44 | SSA def(eh) | Capture.cs:198:28:198:44 | MyEventHandler eh = ... | @@ -14,13 +22,18 @@ | Capture.cs:210:24:210:24 | p | Capture.cs:210:24:210:59 | SSA def(p) | Capture.cs:210:24:210:59 | Process p = ... | | Capture.cs:212:30:212:35 | exited | Capture.cs:212:30:212:71 | SSA def(exited) | Capture.cs:212:30:212:71 | EventHandler exited = ... | | Capture.cs:248:36:248:36 | j | Capture.cs:251:13:251:17 | SSA def(j) | Capture.cs:251:13:251:17 | ... = ... | +| Consistency.cs:7:25:7:25 | b | Consistency.cs:7:25:7:25 | SSA param(b) | Consistency.cs:7:25:7:25 | b | | Consistency.cs:15:17:15:17 | i | Consistency.cs:15:17:15:21 | SSA def(i) | Consistency.cs:15:17:15:21 | Int32 i = ... | -| Consistency.cs:25:29:25:29 | c | Consistency.cs:25:29:25:29 | SSA def(c) | Consistency.cs:25:29:25:29 | Consistency c | +| Consistency.cs:25:29:25:29 | c | Consistency.cs:25:9:25:30 | SSA def(c) | Consistency.cs:25:29:25:29 | Consistency c | | Consistency.cs:30:30:30:30 | c | Consistency.cs:32:9:32:29 | SSA def(c) | Consistency.cs:32:9:32:29 | ... = ... | | Consistency.cs:44:11:44:11 | s | Consistency.cs:44:11:44:11 | SSA def(s) | Consistency.cs:44:11:44:11 | S s | +| Consistency.cs:49:30:49:30 | a | Consistency.cs:49:30:49:30 | SSA param(a) | Consistency.cs:49:30:49:30 | a | +| Consistency.cs:49:37:49:37 | i | Consistency.cs:49:37:49:37 | SSA param(i) | Consistency.cs:49:37:49:37 | i | +| Consistency.cs:51:20:51:20 | a | Consistency.cs:51:20:51:20 | SSA param(a) | Consistency.cs:51:20:51:20 | a | | Consistency.cs:56:17:56:17 | k | Consistency.cs:56:17:56:40 | SSA def(k) | Consistency.cs:56:17:56:40 | Int32 k = ... | | Consistency.cs:56:17:56:17 | k | Consistency.cs:57:9:57:13 | SSA def(k) | Consistency.cs:57:9:57:13 | ... = ... | | Consistency.cs:56:17:56:17 | k | Consistency.cs:58:9:58:13 | SSA def(k) | Consistency.cs:58:9:58:13 | ... = ... | +| DefUse.cs:3:26:3:26 | w | DefUse.cs:3:26:3:26 | SSA param(w) | DefUse.cs:3:26:3:26 | w | | DefUse.cs:3:26:3:26 | w | DefUse.cs:19:13:19:18 | SSA def(w) | DefUse.cs:19:13:19:18 | ... = ... | | DefUse.cs:3:26:3:26 | w | DefUse.cs:29:13:29:18 | SSA def(w) | DefUse.cs:29:13:29:18 | ... = ... | | DefUse.cs:5:13:5:13 | x | DefUse.cs:5:13:5:17 | SSA def(x) | DefUse.cs:5:13:5:17 | Int32 x = ... | @@ -30,37 +43,49 @@ | DefUse.cs:6:14:6:14 | y | DefUse.cs:28:13:28:18 | SSA def(y) | DefUse.cs:28:13:28:18 | ... = ... | | DefUse.cs:6:14:6:14 | y | DefUse.cs:39:13:39:18 | SSA def(y) | DefUse.cs:39:13:39:18 | ... = ... | | DefUse.cs:44:13:44:13 | z | DefUse.cs:44:13:44:17 | SSA def(z) | DefUse.cs:44:13:44:17 | Int32 z = ... | -| DefUse.cs:44:13:44:13 | z | DefUse.cs:47:23:47:23 | SSA def(z) | DefUse.cs:47:23:47:23 | access to local variable z | -| DefUse.cs:44:13:44:13 | z | DefUse.cs:50:23:50:23 | SSA def(z) | DefUse.cs:50:23:50:23 | access to local variable z | +| DefUse.cs:44:13:44:13 | z | DefUse.cs:47:9:47:24 | SSA def(z) | DefUse.cs:47:23:47:23 | access to local variable z | +| DefUse.cs:44:13:44:13 | z | DefUse.cs:50:9:50:24 | SSA def(z) | DefUse.cs:50:23:50:23 | access to local variable z | | DefUse.cs:53:9:53:13 | this.Field | DefUse.cs:53:9:53:17 | SSA def(this.Field) | DefUse.cs:53:9:53:17 | ... = ... | | DefUse.cs:56:9:56:12 | this.Prop | DefUse.cs:56:9:56:16 | SSA def(this.Prop) | DefUse.cs:56:9:56:16 | ... = ... | | DefUse.cs:63:9:63:14 | this.Field2 | DefUse.cs:63:9:63:18 | SSA def(this.Field2) | DefUse.cs:63:9:63:18 | ... = ... | | DefUse.cs:66:9:66:14 | this.Field3 | DefUse.cs:66:9:66:18 | SSA def(this.Field3) | DefUse.cs:66:9:66:18 | ... = ... | | DefUse.cs:67:19:67:20 | tc | DefUse.cs:67:19:67:27 | SSA def(tc) | DefUse.cs:67:19:67:27 | TestClass tc = ... | | DefUse.cs:79:13:79:14 | x1 | DefUse.cs:79:13:79:18 | SSA def(x1) | DefUse.cs:79:13:79:18 | Int32 x1 = ... | -| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:30:80:31 | SSA def(x1) | DefUse.cs:80:30:80:31 | access to local variable x1 | +| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:16:80:32 | SSA def(x1) | DefUse.cs:80:30:80:31 | access to local variable x1 | | DefUse.cs:83:13:83:14 | x2 | DefUse.cs:83:13:83:18 | SSA def(x2) | DefUse.cs:83:13:83:18 | Int32 x2 = ... | -| DefUse.cs:83:13:83:14 | x2 | DefUse.cs:85:15:85:16 | SSA def(x2) | DefUse.cs:85:15:85:16 | access to local variable x2 | -| DefUse.cs:83:13:83:14 | x2 | DefUse.cs:85:15:85:16 | SSA def(x2) | DefUse.cs:86:15:86:16 | access to local variable x2 | +| DefUse.cs:83:13:83:14 | x2 | DefUse.cs:84:9:86:17 | SSA def(x2) | DefUse.cs:85:15:85:16 | access to local variable x2 | +| DefUse.cs:83:13:83:14 | x2 | DefUse.cs:84:9:86:17 | SSA def(x2) | DefUse.cs:86:15:86:16 | access to local variable x2 | | DefUse.cs:89:13:89:14 | x3 | DefUse.cs:89:13:89:18 | SSA def(x3) | DefUse.cs:89:13:89:18 | Int32 x3 = ... | -| DefUse.cs:89:13:89:14 | x3 | DefUse.cs:92:15:92:16 | SSA def(x3) | DefUse.cs:92:15:92:16 | access to local variable x3 | -| DefUse.cs:90:13:90:14 | x4 | DefUse.cs:93:15:93:16 | SSA def(x4) | DefUse.cs:93:15:93:16 | access to local variable x4 | +| DefUse.cs:89:13:89:14 | x3 | DefUse.cs:91:9:93:17 | SSA def(x3) | DefUse.cs:92:15:92:16 | access to local variable x3 | +| DefUse.cs:90:13:90:14 | x4 | DefUse.cs:91:9:93:17 | SSA def(x4) | DefUse.cs:93:15:93:16 | access to local variable x4 | | DefUse.cs:97:13:97:14 | x5 | DefUse.cs:97:13:97:18 | SSA def(x5) | DefUse.cs:97:13:97:18 | Int32 x5 = ... | | DefUse.cs:97:13:97:14 | x5 | DefUse.cs:101:13:101:23 | SSA def(x5) | DefUse.cs:101:13:101:23 | ... = ... | | DefUse.cs:97:13:97:14 | x5 | DefUse.cs:104:9:104:15 | SSA def(x5) | DefUse.cs:104:9:104:15 | ... += ... | | DefUse.cs:114:42:114:42 | i | DefUse.cs:114:47:114:52 | SSA def(i) | DefUse.cs:114:47:114:52 | ... = ... | | DefUse.cs:116:42:116:42 | i | DefUse.cs:116:47:116:51 | SSA def(i) | DefUse.cs:116:47:116:51 | ... = ... | +| DefUse.cs:118:45:118:45 | i | DefUse.cs:118:45:118:45 | SSA param(i) | DefUse.cs:118:45:118:45 | i | | DefUse.cs:118:45:118:45 | i | DefUse.cs:118:68:118:72 | SSA def(i) | DefUse.cs:118:68:118:72 | ... = ... | | DefUse.cs:118:56:118:56 | j | DefUse.cs:118:61:118:65 | SSA def(j) | DefUse.cs:118:61:118:65 | ... = ... | +| DefUse.cs:128:19:128:19 | i | DefUse.cs:128:19:128:19 | SSA param(i) | DefUse.cs:128:19:128:19 | i | +| DefUse.cs:134:22:134:22 | d | DefUse.cs:134:22:134:22 | SSA param(d) | DefUse.cs:134:22:134:22 | d | +| DefUse.cs:142:68:142:69 | ie | DefUse.cs:142:68:142:69 | SSA param(ie) | DefUse.cs:142:68:142:69 | ie | | DefUse.cs:144:22:144:22 | x | DefUse.cs:144:22:144:22 | SSA def(x) | DefUse.cs:144:22:144:22 | String x | | DefUse.cs:155:9:155:14 | this.Field4 | DefUse.cs:155:9:155:18 | SSA def(this.Field4) | DefUse.cs:155:9:155:18 | ... = ... | | DefUse.cs:171:23:171:23 | a | DefUse.cs:171:23:180:9 | SSA def(a) | DefUse.cs:171:23:180:9 | Action a = ... | | DefUse.cs:171:23:171:23 | a | DefUse.cs:186:9:190:9 | SSA def(a) | DefUse.cs:186:9:190:9 | ... = ... | | DefUse.cs:184:9:184:14 | this.Field5 | DefUse.cs:184:9:184:18 | SSA def(this.Field5) | DefUse.cs:184:9:184:18 | ... = ... | | DefUse.cs:188:13:188:18 | this.Field5 | DefUse.cs:188:13:188:22 | SSA def(this.Field5) | DefUse.cs:188:13:188:22 | ... = ... | +| DefaultParam.cs:3:20:3:20 | b | DefaultParam.cs:3:20:3:20 | SSA param(b) | DefaultParam.cs:3:20:3:20 | b | +| DefaultParam.cs:3:30:3:30 | s | DefaultParam.cs:3:30:3:30 | SSA param(s) | DefaultParam.cs:3:30:3:30 | s | +| DefaultParam.cs:3:30:3:30 | s | DefaultParam.cs:3:34:3:35 | SSA def(s) | DefaultParam.cs:3:34:3:35 | s = ... | +| DefaultParam.cs:3:42:3:42 | i | DefaultParam.cs:3:42:3:42 | SSA param(i) | DefaultParam.cs:3:42:3:42 | i | +| DefaultParam.cs:3:42:3:42 | i | DefaultParam.cs:3:46:3:46 | SSA def(i) | DefaultParam.cs:3:46:3:46 | i = ... | +| Example.cs:6:23:6:23 | i | Example.cs:6:23:6:23 | SSA param(i) | Example.cs:6:23:6:23 | i | | Example.cs:8:9:8:18 | this.Field | Example.cs:8:9:8:22 | SSA def(this.Field) | Example.cs:8:9:8:22 | ... = ... | | Example.cs:8:9:8:18 | this.Field | Example.cs:11:13:11:30 | SSA def(this.Field) | Example.cs:11:13:11:30 | ... = ... | +| Example.cs:18:16:18:16 | p | Example.cs:18:16:18:16 | SSA param(p) | Example.cs:18:16:18:16 | p | | Example.cs:18:16:18:16 | p | Example.cs:23:13:23:17 | SSA def(p) | Example.cs:23:13:23:17 | ... = ... | +| Example.cs:18:24:18:24 | b | Example.cs:18:24:18:24 | SSA param(b) | Example.cs:18:24:18:24 | b | | Fields.cs:18:15:18:15 | x | Fields.cs:20:9:20:14 | SSA def(x) | Fields.cs:20:9:20:14 | ... = ... | | Fields.cs:18:19:18:20 | this.xs | Fields.cs:24:9:24:23 | SSA def(this.xs) | Fields.cs:24:9:24:23 | ... = ... | | Fields.cs:30:13:30:13 | f | Fields.cs:30:13:30:28 | SSA def(f) | Fields.cs:30:13:30:28 | Fields f = ... | @@ -76,23 +101,31 @@ | Fields.cs:80:9:80:12 | f.xs | Fields.cs:88:9:88:25 | SSA def(f.xs) | Fields.cs:88:9:88:25 | ... = ... | | Fields.cs:82:9:82:15 | this.xs | Fields.cs:85:9:85:22 | SSA def(this.xs) | Fields.cs:85:9:85:22 | ... = ... | | Fields.cs:82:9:82:15 | this.xs | Fields.cs:87:9:87:22 | SSA def(this.xs) | Fields.cs:87:9:87:22 | ... = ... | +| Fields.cs:95:19:95:19 | f | Fields.cs:95:19:95:19 | SSA param(f) | Fields.cs:95:19:95:19 | f | | Fields.cs:97:9:97:15 | f.Field | Fields.cs:97:9:97:30 | SSA def(f.Field) | Fields.cs:97:9:97:30 | ... = ... | | Fields.cs:102:9:102:18 | this.Field | Fields.cs:102:9:102:28 | SSA def(this.Field) | Fields.cs:102:9:102:28 | ... = ... | +| Fields.cs:107:33:107:33 | f | Fields.cs:107:33:107:33 | SSA param(f) | Fields.cs:107:33:107:33 | f | +| MultiImplementationA.cs:5:22:5:22 | x | MultiImplementationA.cs:5:22:5:22 | SSA param(x) | MultiImplementationA.cs:5:22:5:22 | x | +| MultiImplementationA.cs:5:22:5:22 | x | MultiImplementationB.cs:3:22:3:22 | SSA param(x) | MultiImplementationA.cs:5:22:5:22 | x | | OutRef.cs:9:13:9:13 | j | OutRef.cs:9:13:9:17 | SSA def(j) | OutRef.cs:9:13:9:17 | Int32 j = ... | -| OutRef.cs:9:13:9:13 | j | OutRef.cs:10:32:10:32 | SSA def(j) | OutRef.cs:10:32:10:32 | access to local variable j | -| OutRef.cs:9:13:9:13 | j | OutRef.cs:22:22:22:22 | SSA def(j) | OutRef.cs:22:22:22:22 | access to local variable j | -| OutRef.cs:9:13:9:13 | j | OutRef.cs:24:29:24:29 | SSA def(j) | OutRef.cs:24:29:24:29 | access to local variable j | -| OutRef.cs:10:25:10:25 | i | OutRef.cs:10:25:10:25 | SSA def(i) | OutRef.cs:10:25:10:25 | Int32 i | -| OutRef.cs:10:25:10:25 | i | OutRef.cs:13:21:13:21 | SSA def(i) | OutRef.cs:13:21:13:21 | access to local variable i | -| OutRef.cs:13:28:13:32 | this.Field | OutRef.cs:13:28:13:32 | SSA def(this.Field) | OutRef.cs:13:28:13:32 | access to field Field | -| OutRef.cs:13:28:13:32 | this.Field | OutRef.cs:16:21:16:25 | SSA def(this.Field) | OutRef.cs:16:21:16:25 | access to field Field | -| OutRef.cs:13:28:13:32 | this.Field | OutRef.cs:16:21:16:25 | SSA def(this.Field) | OutRef.cs:16:32:16:36 | access to field Field | -| OutRef.cs:13:28:13:32 | this.Field | OutRef.cs:19:21:19:25 | SSA def(this.Field) | OutRef.cs:19:21:19:25 | access to field Field | +| OutRef.cs:9:13:9:13 | j | OutRef.cs:10:9:10:33 | SSA def(j) | OutRef.cs:10:32:10:32 | access to local variable j | +| OutRef.cs:9:13:9:13 | j | OutRef.cs:22:9:22:30 | SSA def(j) | OutRef.cs:22:22:22:22 | access to local variable j | +| OutRef.cs:9:13:9:13 | j | OutRef.cs:24:9:24:30 | SSA def(j) | OutRef.cs:24:29:24:29 | access to local variable j | +| OutRef.cs:10:25:10:25 | i | OutRef.cs:10:9:10:33 | SSA def(i) | OutRef.cs:10:25:10:25 | Int32 i | +| OutRef.cs:10:25:10:25 | i | OutRef.cs:13:9:13:33 | SSA def(i) | OutRef.cs:13:21:13:21 | access to local variable i | +| OutRef.cs:13:28:13:32 | this.Field | OutRef.cs:13:9:13:33 | SSA def(this.Field) | OutRef.cs:13:28:13:32 | access to field Field | +| OutRef.cs:13:28:13:32 | this.Field | OutRef.cs:16:9:16:37 | SSA def(this.Field) | OutRef.cs:16:21:16:25 | access to field Field | +| OutRef.cs:13:28:13:32 | this.Field | OutRef.cs:16:9:16:37 | SSA def(this.Field) | OutRef.cs:16:32:16:36 | access to field Field | +| OutRef.cs:13:28:13:32 | this.Field | OutRef.cs:19:9:19:39 | SSA def(this.Field) | OutRef.cs:19:21:19:25 | access to field Field | | OutRef.cs:18:13:18:13 | t | OutRef.cs:18:13:18:28 | SSA def(t) | OutRef.cs:18:13:18:28 | OutRef t = ... | -| OutRef.cs:19:32:19:38 | t.Field | OutRef.cs:19:32:19:38 | SSA def(t.Field) | OutRef.cs:19:32:19:38 | access to field Field | +| OutRef.cs:19:32:19:38 | t.Field | OutRef.cs:19:9:19:39 | SSA def(t.Field) | OutRef.cs:19:32:19:38 | access to field Field | | OutRef.cs:28:26:28:26 | i | OutRef.cs:30:9:30:13 | SSA def(i) | OutRef.cs:30:9:30:13 | ... = ... | +| OutRef.cs:28:37:28:37 | j | OutRef.cs:28:37:28:37 | SSA param(j) | OutRef.cs:28:37:28:37 | j | | OutRef.cs:28:37:28:37 | j | OutRef.cs:31:9:31:13 | SSA def(j) | OutRef.cs:31:9:31:13 | ... = ... | | OutRef.cs:34:27:34:27 | i | OutRef.cs:36:9:36:13 | SSA def(i) | OutRef.cs:36:9:36:13 | ... = ... | +| OutRef.cs:34:38:34:38 | j | OutRef.cs:34:38:34:38 | SSA param(j) | OutRef.cs:34:38:34:38 | j | +| OutRef.cs:39:24:39:24 | b | OutRef.cs:39:24:39:24 | SSA param(b) | OutRef.cs:39:24:39:24 | b | +| OutRef.cs:39:35:39:35 | j | OutRef.cs:39:35:39:35 | SSA param(j) | OutRef.cs:39:35:39:35 | j | | OutRef.cs:39:35:39:35 | j | OutRef.cs:42:13:42:17 | SSA def(j) | OutRef.cs:42:13:42:17 | ... = ... | | Patterns.cs:7:16:7:16 | o | Patterns.cs:7:16:7:23 | SSA def(o) | Patterns.cs:7:16:7:23 | Object o = ... | | Patterns.cs:8:22:8:23 | i1 | Patterns.cs:8:18:8:23 | SSA def(i1) | Patterns.cs:8:18:8:23 | Int32 i1 | @@ -107,6 +140,7 @@ | Properties.cs:31:19:31:22 | f.xs | Properties.cs:45:9:45:25 | SSA def(f.xs) | Properties.cs:45:9:45:25 | ... = ... | | Properties.cs:32:15:32:15 | z | Properties.cs:47:9:47:14 | SSA def(z) | Properties.cs:47:9:47:14 | ... = ... | | Properties.cs:32:19:32:20 | this.xs | Properties.cs:42:9:42:23 | SSA def(this.xs) | Properties.cs:42:9:42:23 | ... = ... | +| Properties.cs:61:23:61:23 | i | Properties.cs:61:23:61:23 | SSA param(i) | Properties.cs:61:23:61:23 | i | | Properties.cs:61:23:61:23 | i | Properties.cs:63:16:63:18 | SSA def(i) | Properties.cs:63:16:63:18 | ...-- | | Properties.cs:73:13:73:13 | f | Properties.cs:73:13:73:32 | SSA def(f) | Properties.cs:73:13:73:32 | Properties f = ... | | Properties.cs:74:23:74:23 | a | Properties.cs:74:23:74:54 | SSA def(a) | Properties.cs:74:23:74:54 | Action a = ... | @@ -116,8 +150,11 @@ | Properties.cs:76:9:76:12 | f.xs | Properties.cs:84:9:84:25 | SSA def(f.xs) | Properties.cs:84:9:84:25 | ... = ... | | Properties.cs:78:9:78:15 | this.xs | Properties.cs:81:9:81:22 | SSA def(this.xs) | Properties.cs:81:9:81:22 | ... = ... | | Properties.cs:78:9:78:15 | this.xs | Properties.cs:83:9:83:22 | SSA def(this.xs) | Properties.cs:83:9:83:22 | ... = ... | +| Properties.cs:106:37:106:37 | p | Properties.cs:106:37:106:37 | SSA param(p) | Properties.cs:106:37:106:37 | p | +| Test.cs:5:15:5:20 | param1 | Test.cs:5:15:5:20 | SSA param(param1) | Test.cs:5:15:5:20 | param1 | | Test.cs:5:15:5:20 | param1 | Test.cs:27:17:27:24 | SSA def(param1) | Test.cs:27:17:27:24 | ...++ | | Test.cs:5:15:5:20 | param1 | Test.cs:41:13:41:23 | SSA def(param1) | Test.cs:41:13:41:23 | ... += ... | +| Test.cs:5:67:5:72 | param2 | Test.cs:5:67:5:72 | SSA param(param2) | Test.cs:5:67:5:72 | param2 | | Test.cs:7:9:7:13 | this.field | Test.cs:7:9:7:17 | SSA def(this.field) | Test.cs:7:9:7:17 | ... = ... | | Test.cs:7:9:7:13 | this.field | Test.cs:21:13:21:22 | SSA def(this.field) | Test.cs:21:13:21:22 | ... = ... | | Test.cs:8:13:8:13 | x | Test.cs:8:13:8:17 | SSA def(x) | Test.cs:8:13:8:17 | Int32 x = ... | @@ -133,10 +170,18 @@ | Test.cs:34:18:34:18 | i | Test.cs:34:18:34:22 | SSA def(i) | Test.cs:34:18:34:22 | Int32 i = ... | | Test.cs:34:18:34:18 | i | Test.cs:34:33:34:35 | SSA def(i) | Test.cs:34:33:34:35 | ...++ | | Test.cs:39:22:39:22 | w | Test.cs:39:22:39:22 | SSA def(w) | Test.cs:39:22:39:22 | Int32 w | +| Test.cs:46:16:46:18 | in | Test.cs:46:16:46:18 | SSA param(in) | Test.cs:46:16:46:18 | in | | Test.cs:46:29:46:32 | out | Test.cs:50:13:50:20 | SSA def(out) | Test.cs:50:13:50:20 | ... = ... | | Test.cs:46:29:46:32 | out | Test.cs:54:13:54:20 | SSA def(out) | Test.cs:54:13:54:20 | ... = ... | | Test.cs:56:13:56:17 | this.field | Test.cs:57:9:57:17 | SSA def(this.field) | Test.cs:57:9:57:17 | ... = ... | +| Test.cs:62:16:62:16 | x | Test.cs:62:16:62:16 | SSA param(x) | Test.cs:62:16:62:16 | x | | Test.cs:68:45:68:45 | e | Test.cs:68:45:68:45 | SSA def(e) | Test.cs:68:45:68:45 | DivideByZeroException e | +| Test.cs:76:24:76:25 | b1 | Test.cs:76:24:76:25 | SSA param(b1) | Test.cs:76:24:76:25 | b1 | +| Test.cs:76:33:76:34 | b2 | Test.cs:76:33:76:34 | SSA param(b2) | Test.cs:76:33:76:34 | b2 | +| Test.cs:76:42:76:43 | b3 | Test.cs:76:42:76:43 | SSA param(b3) | Test.cs:76:42:76:43 | b3 | +| Test.cs:76:51:76:52 | b4 | Test.cs:76:51:76:52 | SSA param(b4) | Test.cs:76:51:76:52 | b4 | +| Test.cs:76:60:76:61 | b5 | Test.cs:76:60:76:61 | SSA param(b5) | Test.cs:76:60:76:61 | b5 | +| Test.cs:76:69:76:70 | b6 | Test.cs:76:69:76:70 | SSA param(b6) | Test.cs:76:69:76:70 | b6 | | Test.cs:78:13:78:13 | x | Test.cs:78:13:78:17 | SSA def(x) | Test.cs:78:13:78:17 | Int32 x = ... | | Test.cs:78:13:78:13 | x | Test.cs:108:13:108:17 | SSA def(x) | Test.cs:108:13:108:17 | ... = ... | | Tuples.cs:10:14:10:14 | x | Tuples.cs:10:9:10:54 | SSA def(x) | Tuples.cs:10:9:10:54 | ... = ... | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaExplicitDef.ql b/csharp/ql/test/library-tests/dataflow/ssa/SsaExplicitDef.ql index bf4c70ee6735..4e37c24b0cc5 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaExplicitDef.ql +++ b/csharp/ql/test/library-tests/dataflow/ssa/SsaExplicitDef.ql @@ -1,5 +1,5 @@ import csharp -from Ssa::SourceVariable v, Ssa::ExplicitDefinition def +from Ssa::SourceVariable v, SsaExplicitWrite def where v = def.getSourceVariable() -select v, def, def.getADefinition() +select v, def, def.getDefinition() diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaImplicitParameterDef.expected b/csharp/ql/test/library-tests/dataflow/ssa/SsaImplicitParameterDef.expected index 3ba88d1dd175..db7e7e4ae223 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaImplicitParameterDef.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/SsaImplicitParameterDef.expected @@ -15,6 +15,9 @@ | DefUse.cs:128:19:128:19 | i | DefUse.cs:128:19:128:19 | SSA param(i) | DefUse.cs:128:19:128:19 | i | | DefUse.cs:134:22:134:22 | d | DefUse.cs:134:22:134:22 | SSA param(d) | DefUse.cs:134:22:134:22 | d | | DefUse.cs:142:68:142:69 | ie | DefUse.cs:142:68:142:69 | SSA param(ie) | DefUse.cs:142:68:142:69 | ie | +| DefaultParam.cs:3:20:3:20 | b | DefaultParam.cs:3:20:3:20 | SSA param(b) | DefaultParam.cs:3:20:3:20 | b | +| DefaultParam.cs:3:30:3:30 | s | DefaultParam.cs:3:30:3:30 | SSA param(s) | DefaultParam.cs:3:30:3:30 | s | +| DefaultParam.cs:3:42:3:42 | i | DefaultParam.cs:3:42:3:42 | SSA param(i) | DefaultParam.cs:3:42:3:42 | i | | Example.cs:6:23:6:23 | i | Example.cs:6:23:6:23 | SSA param(i) | Example.cs:6:23:6:23 | i | | Example.cs:18:16:18:16 | p | Example.cs:18:16:18:16 | SSA param(p) | Example.cs:18:16:18:16 | p | | Example.cs:18:24:18:24 | b | Example.cs:18:24:18:24 | SSA param(b) | Example.cs:18:24:18:24 | b | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaImplicitParameterDef.ql b/csharp/ql/test/library-tests/dataflow/ssa/SsaImplicitParameterDef.ql index 8608b90746e1..b1c28f020d14 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaImplicitParameterDef.ql +++ b/csharp/ql/test/library-tests/dataflow/ssa/SsaImplicitParameterDef.ql @@ -1,5 +1,5 @@ import csharp -from Ssa::SourceVariable v, Ssa::ImplicitParameterDefinition def +from Ssa::SourceVariable v, SsaParameterInit def where v = def.getSourceVariable() select v, def, def.getParameter() diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaImplicitQualifier.expected b/csharp/ql/test/library-tests/dataflow/ssa/SsaImplicitQualifier.expected index c64c419cb48b..0f283aa4b580 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaImplicitQualifier.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/SsaImplicitQualifier.expected @@ -1,15 +1,11 @@ -| Consistency.cs:26:13:26:19 | c.Field | Consistency.cs:25:29:25:29 | SSA qualifier def(c.Field) | Consistency.cs:25:29:25:29 | SSA def(c) | +| Consistency.cs:26:13:26:19 | c.Field | Consistency.cs:25:9:25:30 | SSA qualifier def(c.Field) | Consistency.cs:25:9:25:30 | SSA def(c) | | Fields.cs:31:19:31:22 | f.xs | Fields.cs:30:13:30:28 | SSA qualifier def(f.xs) | Fields.cs:30:13:30:28 | SSA def(f) | | Fields.cs:31:19:31:22 | f.xs | Fields.cs:49:13:49:28 | SSA qualifier def(f.xs) | Fields.cs:49:13:49:28 | SSA def(f) | | Fields.cs:98:20:98:32 | f.Field.Field | Fields.cs:97:9:97:30 | SSA qualifier def(f.Field.Field) | Fields.cs:97:9:97:30 | SSA def(f.Field) | | Fields.cs:99:16:99:34 | f.Field.Field.Field | Fields.cs:97:9:97:30 | SSA qualifier def(f.Field.Field.Field) | Fields.cs:97:9:97:30 | SSA qualifier def(f.Field.Field) | | Fields.cs:100:16:100:40 | f.Field.Field.Field.Field | Fields.cs:97:9:97:30 | SSA qualifier def(f.Field.Field.Field.Field) | Fields.cs:97:9:97:30 | SSA qualifier def(f.Field.Field.Field) | -| Fields.cs:115:20:115:35 | this.Field.Field | Fields.cs:109:10:109:10 | SSA qualifier def(this.Field.Field) | Fields.cs:109:10:109:10 | SSA entry def(this.Field) | -| Fields.cs:116:21:116:39 | this.Field.Field.xs | Fields.cs:109:10:109:10 | SSA qualifier def(this.Field.Field.xs) | Fields.cs:109:10:109:10 | SSA qualifier def(this.Field.Field) | | Fields.cs:116:21:116:39 | this.Field.Field.xs | Fields.cs:114:9:114:22 | SSA qualifier def(this.Field.Field.xs) | Fields.cs:114:9:114:22 | SSA call def(this.Field.Field) | | OutRef.cs:19:32:19:38 | t.Field | OutRef.cs:18:13:18:28 | SSA qualifier def(t.Field) | OutRef.cs:18:13:18:28 | SSA def(t) | | Properties.cs:31:19:31:22 | f.xs | Properties.cs:30:13:30:32 | SSA qualifier def(f.xs) | Properties.cs:30:13:30:32 | SSA def(f) | | Properties.cs:31:19:31:22 | f.xs | Properties.cs:49:13:49:32 | SSA qualifier def(f.xs) | Properties.cs:49:13:49:32 | SSA def(f) | -| Properties.cs:114:20:114:35 | this.Props.Props | Properties.cs:108:10:108:10 | SSA qualifier def(this.Props.Props) | Properties.cs:108:10:108:10 | SSA entry def(this.Props) | -| Properties.cs:115:21:115:39 | this.Props.Props.xs | Properties.cs:108:10:108:10 | SSA qualifier def(this.Props.Props.xs) | Properties.cs:108:10:108:10 | SSA qualifier def(this.Props.Props) | | Properties.cs:115:21:115:39 | this.Props.Props.xs | Properties.cs:113:9:113:22 | SSA qualifier def(this.Props.Props.xs) | Properties.cs:113:9:113:22 | SSA call def(this.Props.Props) | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaRead.expected b/csharp/ql/test/library-tests/dataflow/ssa/SsaRead.expected index 46aba07eb377..a06115caf53a 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaRead.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/SsaRead.expected @@ -35,10 +35,10 @@ | Capture.cs:212:30:212:35 | exited | Capture.cs:212:30:212:71 | SSA def(exited) | Capture.cs:213:29:213:34 | access to local variable exited | | Consistency.cs:7:25:7:25 | b | Consistency.cs:7:25:7:25 | SSA param(b) | Consistency.cs:11:17:11:17 | access to parameter b | | Consistency.cs:15:17:15:17 | i | Consistency.cs:15:17:15:21 | SSA def(i) | Consistency.cs:16:17:16:17 | access to local variable i | -| Consistency.cs:25:29:25:29 | c | Consistency.cs:25:29:25:29 | SSA def(c) | Consistency.cs:26:13:26:13 | access to local variable c | -| Consistency.cs:25:29:25:29 | c | Consistency.cs:25:29:25:29 | SSA def(c) | Consistency.cs:27:13:27:13 | access to local variable c | -| Consistency.cs:26:13:26:19 | c.Field | Consistency.cs:25:29:25:29 | SSA qualifier def(c.Field) | Consistency.cs:26:13:26:19 | access to field Field | -| Consistency.cs:26:13:26:19 | c.Field | Consistency.cs:25:29:25:29 | SSA qualifier def(c.Field) | Consistency.cs:27:13:27:19 | access to field Field | +| Consistency.cs:25:29:25:29 | c | Consistency.cs:25:9:25:30 | SSA def(c) | Consistency.cs:26:13:26:13 | access to local variable c | +| Consistency.cs:25:29:25:29 | c | Consistency.cs:25:9:25:30 | SSA def(c) | Consistency.cs:27:13:27:13 | access to local variable c | +| Consistency.cs:26:13:26:19 | c.Field | Consistency.cs:25:9:25:30 | SSA qualifier def(c.Field) | Consistency.cs:26:13:26:19 | access to field Field | +| Consistency.cs:26:13:26:19 | c.Field | Consistency.cs:25:9:25:30 | SSA qualifier def(c.Field) | Consistency.cs:27:13:27:19 | access to field Field | | Consistency.cs:30:30:30:30 | c | Consistency.cs:32:9:32:29 | SSA def(c) | Consistency.cs:33:9:33:9 | access to parameter c | | Consistency.cs:44:11:44:11 | s | Consistency.cs:44:11:44:11 | SSA def(s) | Consistency.cs:45:9:45:9 | access to local variable s | | Consistency.cs:44:11:44:11 | s | Consistency.cs:44:11:44:11 | SSA def(s) | Consistency.cs:46:13:46:13 | access to local variable s | @@ -48,8 +48,8 @@ | Consistency.cs:51:20:51:20 | a | Consistency.cs:51:20:51:20 | SSA param(a) | Consistency.cs:55:36:55:36 | access to parameter a | | Consistency.cs:51:20:51:20 | a | Consistency.cs:51:20:51:20 | SSA param(a) | Consistency.cs:56:36:56:36 | access to parameter a | | DefUse.cs:3:26:3:26 | w | DefUse.cs:3:26:3:26 | SSA param(w) | DefUse.cs:9:13:9:13 | access to parameter w | +| DefUse.cs:3:26:3:26 | w | DefUse.cs:11:9:21:9 | SSA phi(w) | DefUse.cs:24:13:24:13 | access to parameter w | | DefUse.cs:3:26:3:26 | w | DefUse.cs:19:13:19:18 | SSA def(w) | DefUse.cs:20:17:20:17 | access to parameter w | -| DefUse.cs:3:26:3:26 | w | DefUse.cs:23:9:23:15 | SSA phi(w) | DefUse.cs:24:13:24:13 | access to parameter w | | DefUse.cs:3:26:3:26 | w | DefUse.cs:29:13:29:18 | SSA def(w) | DefUse.cs:35:13:35:13 | access to parameter w | | DefUse.cs:3:26:3:26 | w | DefUse.cs:29:13:29:18 | SSA def(w) | DefUse.cs:53:17:53:17 | access to parameter w | | DefUse.cs:5:13:5:13 | x | DefUse.cs:5:13:5:17 | SSA def(x) | DefUse.cs:11:13:11:13 | access to local variable x | @@ -58,31 +58,31 @@ | DefUse.cs:5:13:5:13 | x | DefUse.cs:5:13:5:17 | SSA def(x) | DefUse.cs:44:17:44:17 | access to local variable x | | DefUse.cs:5:13:5:13 | x | DefUse.cs:5:13:5:17 | SSA def(x) | DefUse.cs:56:16:56:16 | access to local variable x | | DefUse.cs:6:14:6:14 | y | DefUse.cs:6:14:6:19 | SSA def(y) | DefUse.cs:8:13:8:13 | access to local variable y | +| DefUse.cs:6:14:6:14 | y | DefUse.cs:11:9:21:9 | SSA phi(y) | DefUse.cs:23:13:23:13 | access to local variable y | | DefUse.cs:6:14:6:14 | y | DefUse.cs:13:13:13:18 | SSA def(y) | DefUse.cs:14:17:14:17 | access to local variable y | -| DefUse.cs:6:14:6:14 | y | DefUse.cs:23:9:23:15 | SSA phi(y) | DefUse.cs:23:13:23:13 | access to local variable y | | DefUse.cs:6:14:6:14 | y | DefUse.cs:28:13:28:18 | SSA def(y) | DefUse.cs:34:13:34:13 | access to local variable y | -| DefUse.cs:6:14:6:14 | y | DefUse.cs:42:9:42:15 | SSA phi(y) | DefUse.cs:42:13:42:13 | access to local variable y | +| DefUse.cs:6:14:6:14 | y | DefUse.cs:37:9:40:9 | SSA phi(y) | DefUse.cs:42:13:42:13 | access to local variable y | | DefUse.cs:44:13:44:13 | z | DefUse.cs:44:13:44:17 | SSA def(z) | DefUse.cs:45:13:45:13 | access to local variable z | -| DefUse.cs:44:13:44:13 | z | DefUse.cs:47:23:47:23 | SSA def(z) | DefUse.cs:48:13:48:13 | access to local variable z | -| DefUse.cs:44:13:44:13 | z | DefUse.cs:47:23:47:23 | SSA def(z) | DefUse.cs:50:23:50:23 | access to local variable z | -| DefUse.cs:44:13:44:13 | z | DefUse.cs:50:23:50:23 | SSA def(z) | DefUse.cs:51:13:51:13 | access to local variable z | +| DefUse.cs:44:13:44:13 | z | DefUse.cs:47:9:47:24 | SSA def(z) | DefUse.cs:48:13:48:13 | access to local variable z | +| DefUse.cs:44:13:44:13 | z | DefUse.cs:47:9:47:24 | SSA def(z) | DefUse.cs:50:23:50:23 | access to local variable z | +| DefUse.cs:44:13:44:13 | z | DefUse.cs:50:9:50:24 | SSA def(z) | DefUse.cs:51:13:51:13 | access to local variable z | | DefUse.cs:53:9:53:13 | this.Field | DefUse.cs:53:9:53:17 | SSA def(this.Field) | DefUse.cs:54:13:54:17 | access to field Field | | DefUse.cs:56:9:56:12 | this.Prop | DefUse.cs:56:9:56:16 | SSA def(this.Prop) | DefUse.cs:57:13:57:16 | access to property Prop | | DefUse.cs:63:9:63:14 | this.Field2 | DefUse.cs:63:9:63:18 | SSA def(this.Field2) | DefUse.cs:64:13:64:18 | access to field Field2 | | DefUse.cs:63:9:63:14 | this.Field2 | DefUse.cs:63:9:63:18 | SSA def(this.Field2) | DefUse.cs:80:37:80:42 | access to field Field2 | | DefUse.cs:66:9:66:14 | this.Field3 | DefUse.cs:66:9:66:18 | SSA def(this.Field3) | DefUse.cs:69:13:69:18 | access to field Field3 | | DefUse.cs:67:19:67:20 | tc | DefUse.cs:67:19:67:27 | SSA def(tc) | DefUse.cs:68:9:68:10 | access to local variable tc | -| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:30:80:31 | SSA def(x1) | DefUse.cs:81:13:81:14 | access to local variable x1 | -| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:30:80:31 | SSA phi(x1) | DefUse.cs:80:30:80:31 | access to local variable x1 | +| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:9:80:51 | SSA phi(x1) | DefUse.cs:80:30:80:31 | access to local variable x1 | +| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:16:80:32 | SSA def(x1) | DefUse.cs:81:13:81:14 | access to local variable x1 | | DefUse.cs:83:13:83:14 | x2 | DefUse.cs:83:13:83:18 | SSA def(x2) | DefUse.cs:85:15:85:16 | access to local variable x2 | -| DefUse.cs:83:13:83:14 | x2 | DefUse.cs:85:15:85:16 | SSA def(x2) | DefUse.cs:87:13:87:14 | access to local variable x2 | +| DefUse.cs:83:13:83:14 | x2 | DefUse.cs:84:9:86:17 | SSA def(x2) | DefUse.cs:87:13:87:14 | access to local variable x2 | | DefUse.cs:89:13:89:14 | x3 | DefUse.cs:89:13:89:18 | SSA def(x3) | DefUse.cs:92:15:92:16 | access to local variable x3 | -| DefUse.cs:89:13:89:14 | x3 | DefUse.cs:92:15:92:16 | SSA def(x3) | DefUse.cs:94:13:94:14 | access to local variable x3 | -| DefUse.cs:90:13:90:14 | x4 | DefUse.cs:93:15:93:16 | SSA def(x4) | DefUse.cs:95:13:95:14 | access to local variable x4 | -| DefUse.cs:97:13:97:14 | x5 | DefUse.cs:98:16:98:17 | SSA phi(x5) | DefUse.cs:98:16:98:17 | access to local variable x5 | -| DefUse.cs:97:13:97:14 | x5 | DefUse.cs:98:16:98:17 | SSA phi(x5) | DefUse.cs:100:17:100:18 | access to local variable x5 | -| DefUse.cs:97:13:97:14 | x5 | DefUse.cs:98:16:98:17 | SSA phi(x5) | DefUse.cs:101:18:101:19 | access to local variable x5 | -| DefUse.cs:97:13:97:14 | x5 | DefUse.cs:98:16:98:17 | SSA phi(x5) | DefUse.cs:104:9:104:10 | access to local variable x5 | +| DefUse.cs:89:13:89:14 | x3 | DefUse.cs:91:9:93:17 | SSA def(x3) | DefUse.cs:94:13:94:14 | access to local variable x3 | +| DefUse.cs:90:13:90:14 | x4 | DefUse.cs:91:9:93:17 | SSA def(x4) | DefUse.cs:95:13:95:14 | access to local variable x4 | +| DefUse.cs:97:13:97:14 | x5 | DefUse.cs:98:9:102:9 | SSA phi(x5) | DefUse.cs:98:16:98:17 | access to local variable x5 | +| DefUse.cs:97:13:97:14 | x5 | DefUse.cs:98:9:102:9 | SSA phi(x5) | DefUse.cs:100:17:100:18 | access to local variable x5 | +| DefUse.cs:97:13:97:14 | x5 | DefUse.cs:98:9:102:9 | SSA phi(x5) | DefUse.cs:101:18:101:19 | access to local variable x5 | +| DefUse.cs:97:13:97:14 | x5 | DefUse.cs:98:9:102:9 | SSA phi(x5) | DefUse.cs:104:9:104:10 | access to local variable x5 | | DefUse.cs:97:13:97:14 | x5 | DefUse.cs:104:9:104:15 | SSA def(x5) | DefUse.cs:105:13:105:14 | access to local variable x5 | | DefUse.cs:118:45:118:45 | i | DefUse.cs:118:45:118:45 | SSA param(i) | DefUse.cs:118:65:118:65 | access to parameter i | | DefUse.cs:128:19:128:19 | i | DefUse.cs:128:19:128:19 | SSA param(i) | DefUse.cs:129:19:129:19 | access to parameter i | @@ -99,20 +99,23 @@ | DefUse.cs:184:9:184:14 | this.Field5 | DefUse.cs:184:9:184:18 | SSA def(this.Field5) | DefUse.cs:185:13:185:18 | access to field Field5 | | DefUse.cs:184:9:184:14 | this.Field5 | DefUse.cs:191:9:191:11 | SSA call def(this.Field5) | DefUse.cs:192:13:192:18 | access to field Field5 | | DefUse.cs:188:13:188:18 | this.Field5 | DefUse.cs:188:13:188:22 | SSA def(this.Field5) | DefUse.cs:189:17:189:22 | access to field Field5 | +| DefaultParam.cs:3:20:3:20 | b | DefaultParam.cs:3:20:3:20 | SSA param(b) | DefaultParam.cs:5:16:5:16 | access to parameter b | +| DefaultParam.cs:3:30:3:30 | s | DefaultParam.cs:3:42:3:42 | SSA phi(s) | DefaultParam.cs:5:20:5:20 | access to parameter s | +| DefaultParam.cs:3:42:3:42 | i | DefaultParam.cs:4:5:6:5 | SSA phi(i) | DefaultParam.cs:5:24:5:24 | access to parameter i | | Example.cs:6:23:6:23 | i | Example.cs:6:23:6:23 | SSA param(i) | Example.cs:8:22:8:22 | access to parameter i | | Example.cs:6:23:6:23 | i | Example.cs:6:23:6:23 | SSA param(i) | Example.cs:10:13:10:13 | access to parameter i | | Example.cs:6:23:6:23 | i | Example.cs:6:23:6:23 | SSA param(i) | Example.cs:11:26:11:26 | access to parameter i | | Example.cs:6:23:6:23 | i | Example.cs:6:23:6:23 | SSA param(i) | Example.cs:12:18:12:18 | access to parameter i | | Example.cs:8:9:8:18 | this.Field | Example.cs:8:9:8:22 | SSA def(this.Field) | Example.cs:9:13:9:22 | access to field Field | -| Example.cs:8:9:8:18 | this.Field | Example.cs:14:9:14:24 | SSA phi(this.Field) | Example.cs:14:13:14:22 | access to field Field | -| Example.cs:8:9:8:18 | this.Field | Example.cs:14:9:14:24 | SSA phi(this.Field) | Example.cs:15:13:15:22 | access to field Field | +| Example.cs:8:9:8:18 | this.Field | Example.cs:10:9:13:24 | SSA phi(this.Field) | Example.cs:14:13:14:22 | access to field Field | +| Example.cs:8:9:8:18 | this.Field | Example.cs:10:9:13:24 | SSA phi(this.Field) | Example.cs:15:13:15:22 | access to field Field | | Example.cs:18:16:18:16 | p | Example.cs:18:16:18:16 | SSA param(p) | Example.cs:22:17:22:17 | access to parameter p | -| Example.cs:18:16:18:16 | p | Example.cs:25:9:25:15 | SSA phi(p) | Example.cs:25:13:25:13 | access to parameter p | +| Example.cs:18:16:18:16 | p | Example.cs:20:9:24:9 | SSA phi(p) | Example.cs:25:13:25:13 | access to parameter p | | Example.cs:18:24:18:24 | b | Example.cs:18:24:18:24 | SSA param(b) | Example.cs:20:13:20:13 | access to parameter b | | Fields.cs:18:15:18:15 | x | Fields.cs:20:9:20:14 | SSA def(x) | Fields.cs:21:13:21:13 | access to local variable x | | Fields.cs:18:19:18:20 | this.xs | Fields.cs:16:17:16:17 | SSA entry def(this.xs) | Fields.cs:18:19:18:20 | access to field xs | | Fields.cs:18:19:18:20 | this.xs | Fields.cs:19:9:19:13 | SSA call def(this.xs) | Fields.cs:20:13:20:14 | access to field xs | -| Fields.cs:18:19:18:20 | this.xs | Fields.cs:23:9:23:20 | SSA phi(this.xs) | Fields.cs:23:13:23:19 | access to field xs | +| Fields.cs:18:19:18:20 | this.xs | Fields.cs:21:9:22:18 | SSA phi(this.xs) | Fields.cs:23:13:23:19 | access to field xs | | Fields.cs:18:19:18:20 | this.xs | Fields.cs:24:9:24:23 | SSA def(this.xs) | Fields.cs:25:13:25:14 | access to field xs | | Fields.cs:30:13:30:13 | f | Fields.cs:30:13:30:28 | SSA def(f) | Fields.cs:31:19:31:19 | access to local variable f | | Fields.cs:30:13:30:13 | f | Fields.cs:30:13:30:28 | SSA def(f) | Fields.cs:35:13:35:13 | access to local variable f | @@ -121,15 +124,15 @@ | Fields.cs:30:13:30:13 | f | Fields.cs:30:13:30:28 | SSA def(f) | Fields.cs:43:13:43:13 | access to local variable f | | Fields.cs:30:13:30:13 | f | Fields.cs:30:13:30:28 | SSA def(f) | Fields.cs:45:9:45:9 | access to local variable f | | Fields.cs:30:13:30:13 | f | Fields.cs:30:13:30:28 | SSA def(f) | Fields.cs:46:13:46:13 | access to local variable f | -| Fields.cs:30:13:30:13 | f | Fields.cs:50:9:50:17 | SSA phi(f) | Fields.cs:50:13:50:13 | access to local variable f | -| Fields.cs:30:13:30:13 | f | Fields.cs:50:9:50:17 | SSA phi(f) | Fields.cs:52:13:52:13 | access to local variable f | +| Fields.cs:30:13:30:13 | f | Fields.cs:48:9:49:29 | SSA phi(f) | Fields.cs:50:13:50:13 | access to local variable f | +| Fields.cs:30:13:30:13 | f | Fields.cs:48:9:49:29 | SSA phi(f) | Fields.cs:52:13:52:13 | access to local variable f | | Fields.cs:31:19:31:22 | f.xs | Fields.cs:30:13:30:28 | SSA qualifier def(f.xs) | Fields.cs:31:19:31:22 | access to field xs | | Fields.cs:31:19:31:22 | f.xs | Fields.cs:34:9:34:16 | SSA call def(f.xs) | Fields.cs:35:13:35:16 | access to field xs | | Fields.cs:31:19:31:22 | f.xs | Fields.cs:38:9:38:13 | SSA call def(f.xs) | Fields.cs:39:13:39:16 | access to field xs | | Fields.cs:31:19:31:22 | f.xs | Fields.cs:38:9:38:13 | SSA call def(f.xs) | Fields.cs:43:13:43:16 | access to field xs | | Fields.cs:31:19:31:22 | f.xs | Fields.cs:45:9:45:25 | SSA def(f.xs) | Fields.cs:46:13:46:16 | access to field xs | -| Fields.cs:31:19:31:22 | f.xs | Fields.cs:50:9:50:17 | SSA phi(f.xs) | Fields.cs:50:13:50:16 | access to field xs | -| Fields.cs:31:19:31:22 | f.xs | Fields.cs:50:9:50:17 | SSA phi(f.xs) | Fields.cs:52:13:52:16 | access to field xs | +| Fields.cs:31:19:31:22 | f.xs | Fields.cs:48:9:49:29 | SSA phi(f.xs) | Fields.cs:50:13:50:16 | access to field xs | +| Fields.cs:31:19:31:22 | f.xs | Fields.cs:48:9:49:29 | SSA phi(f.xs) | Fields.cs:52:13:52:16 | access to field xs | | Fields.cs:32:15:32:15 | z | Fields.cs:47:9:47:14 | SSA def(z) | Fields.cs:48:13:48:13 | access to local variable z | | Fields.cs:32:19:32:20 | this.xs | Fields.cs:28:17:28:17 | SSA entry def(this.xs) | Fields.cs:32:19:32:20 | access to field xs | | Fields.cs:32:19:32:20 | this.xs | Fields.cs:34:9:34:16 | SSA call def(this.xs) | Fields.cs:36:13:36:14 | access to field xs | @@ -195,22 +198,22 @@ | MultiImplementationA.cs:5:22:5:22 | x | MultiImplementationA.cs:5:22:5:22 | SSA param(x) | MultiImplementationA.cs:5:28:5:28 | access to parameter x | | MultiImplementationA.cs:5:22:5:22 | x | MultiImplementationB.cs:3:22:3:22 | SSA param(x) | MultiImplementationB.cs:3:28:3:28 | access to parameter x | | OutRef.cs:9:13:9:13 | j | OutRef.cs:9:13:9:17 | SSA def(j) | OutRef.cs:10:32:10:32 | access to local variable j | -| OutRef.cs:9:13:9:13 | j | OutRef.cs:10:32:10:32 | SSA def(j) | OutRef.cs:12:13:12:13 | access to local variable j | -| OutRef.cs:9:13:9:13 | j | OutRef.cs:10:32:10:32 | SSA def(j) | OutRef.cs:22:29:22:29 | access to local variable j | -| OutRef.cs:9:13:9:13 | j | OutRef.cs:22:22:22:22 | SSA def(j) | OutRef.cs:23:13:23:13 | access to local variable j | -| OutRef.cs:9:13:9:13 | j | OutRef.cs:22:22:22:22 | SSA def(j) | OutRef.cs:24:29:24:29 | access to local variable j | -| OutRef.cs:9:13:9:13 | j | OutRef.cs:24:29:24:29 | SSA def(j) | OutRef.cs:25:13:25:13 | access to local variable j | -| OutRef.cs:10:25:10:25 | i | OutRef.cs:10:25:10:25 | SSA def(i) | OutRef.cs:11:13:11:13 | access to local variable i | -| OutRef.cs:10:25:10:25 | i | OutRef.cs:13:21:13:21 | SSA def(i) | OutRef.cs:14:13:14:13 | access to local variable i | +| OutRef.cs:9:13:9:13 | j | OutRef.cs:10:9:10:33 | SSA def(j) | OutRef.cs:12:13:12:13 | access to local variable j | +| OutRef.cs:9:13:9:13 | j | OutRef.cs:10:9:10:33 | SSA def(j) | OutRef.cs:22:29:22:29 | access to local variable j | +| OutRef.cs:9:13:9:13 | j | OutRef.cs:22:9:22:30 | SSA def(j) | OutRef.cs:23:13:23:13 | access to local variable j | +| OutRef.cs:9:13:9:13 | j | OutRef.cs:22:9:22:30 | SSA def(j) | OutRef.cs:24:29:24:29 | access to local variable j | +| OutRef.cs:9:13:9:13 | j | OutRef.cs:24:9:24:30 | SSA def(j) | OutRef.cs:25:13:25:13 | access to local variable j | +| OutRef.cs:10:25:10:25 | i | OutRef.cs:10:9:10:33 | SSA def(i) | OutRef.cs:11:13:11:13 | access to local variable i | +| OutRef.cs:10:25:10:25 | i | OutRef.cs:13:9:13:33 | SSA def(i) | OutRef.cs:14:13:14:13 | access to local variable i | | OutRef.cs:13:28:13:32 | this.Field | OutRef.cs:7:10:7:10 | SSA entry def(this.Field) | OutRef.cs:13:28:13:32 | access to field Field | -| OutRef.cs:13:28:13:32 | this.Field | OutRef.cs:13:28:13:32 | SSA def(this.Field) | OutRef.cs:15:13:15:17 | access to field Field | -| OutRef.cs:13:28:13:32 | this.Field | OutRef.cs:13:28:13:32 | SSA def(this.Field) | OutRef.cs:16:32:16:36 | access to field Field | -| OutRef.cs:13:28:13:32 | this.Field | OutRef.cs:16:21:16:25 | SSA def(this.Field) | OutRef.cs:17:13:17:17 | access to field Field | -| OutRef.cs:13:28:13:32 | this.Field | OutRef.cs:19:21:19:25 | SSA def(this.Field) | OutRef.cs:20:13:20:17 | access to field Field | +| OutRef.cs:13:28:13:32 | this.Field | OutRef.cs:13:9:13:33 | SSA def(this.Field) | OutRef.cs:15:13:15:17 | access to field Field | +| OutRef.cs:13:28:13:32 | this.Field | OutRef.cs:13:9:13:33 | SSA def(this.Field) | OutRef.cs:16:32:16:36 | access to field Field | +| OutRef.cs:13:28:13:32 | this.Field | OutRef.cs:16:9:16:37 | SSA def(this.Field) | OutRef.cs:17:13:17:17 | access to field Field | +| OutRef.cs:13:28:13:32 | this.Field | OutRef.cs:19:9:19:39 | SSA def(this.Field) | OutRef.cs:20:13:20:17 | access to field Field | | OutRef.cs:18:13:18:13 | t | OutRef.cs:18:13:18:28 | SSA def(t) | OutRef.cs:19:32:19:32 | access to local variable t | | OutRef.cs:18:13:18:13 | t | OutRef.cs:18:13:18:28 | SSA def(t) | OutRef.cs:21:13:21:13 | access to local variable t | | OutRef.cs:19:32:19:38 | t.Field | OutRef.cs:18:13:18:28 | SSA qualifier def(t.Field) | OutRef.cs:19:32:19:38 | access to field Field | -| OutRef.cs:19:32:19:38 | t.Field | OutRef.cs:19:32:19:38 | SSA def(t.Field) | OutRef.cs:21:13:21:19 | access to field Field | +| OutRef.cs:19:32:19:38 | t.Field | OutRef.cs:19:9:19:39 | SSA def(t.Field) | OutRef.cs:21:13:21:19 | access to field Field | | OutRef.cs:28:37:28:37 | j | OutRef.cs:28:37:28:37 | SSA param(j) | OutRef.cs:30:13:30:13 | access to parameter j | | OutRef.cs:34:38:34:38 | j | OutRef.cs:34:38:34:38 | SSA param(j) | OutRef.cs:36:13:36:13 | access to parameter j | | OutRef.cs:39:24:39:24 | b | OutRef.cs:39:24:39:24 | SSA param(b) | OutRef.cs:41:13:41:13 | access to parameter b | @@ -227,7 +230,7 @@ | Properties.cs:18:15:18:15 | x | Properties.cs:20:9:20:14 | SSA def(x) | Properties.cs:21:13:21:13 | access to local variable x | | Properties.cs:18:19:18:20 | this.xs | Properties.cs:16:17:16:17 | SSA entry def(this.xs) | Properties.cs:18:19:18:20 | access to property xs | | Properties.cs:18:19:18:20 | this.xs | Properties.cs:19:9:19:13 | SSA call def(this.xs) | Properties.cs:20:13:20:14 | access to property xs | -| Properties.cs:18:19:18:20 | this.xs | Properties.cs:23:9:23:20 | SSA phi(this.xs) | Properties.cs:23:13:23:19 | access to property xs | +| Properties.cs:18:19:18:20 | this.xs | Properties.cs:21:9:22:18 | SSA phi(this.xs) | Properties.cs:23:13:23:19 | access to property xs | | Properties.cs:18:19:18:20 | this.xs | Properties.cs:24:9:24:23 | SSA def(this.xs) | Properties.cs:25:13:25:14 | access to property xs | | Properties.cs:30:13:30:13 | f | Properties.cs:30:13:30:32 | SSA def(f) | Properties.cs:31:19:31:19 | access to local variable f | | Properties.cs:30:13:30:13 | f | Properties.cs:30:13:30:32 | SSA def(f) | Properties.cs:35:13:35:13 | access to local variable f | @@ -236,15 +239,15 @@ | Properties.cs:30:13:30:13 | f | Properties.cs:30:13:30:32 | SSA def(f) | Properties.cs:43:13:43:13 | access to local variable f | | Properties.cs:30:13:30:13 | f | Properties.cs:30:13:30:32 | SSA def(f) | Properties.cs:45:9:45:9 | access to local variable f | | Properties.cs:30:13:30:13 | f | Properties.cs:30:13:30:32 | SSA def(f) | Properties.cs:46:13:46:13 | access to local variable f | -| Properties.cs:30:13:30:13 | f | Properties.cs:50:9:50:17 | SSA phi(f) | Properties.cs:50:13:50:13 | access to local variable f | -| Properties.cs:30:13:30:13 | f | Properties.cs:50:9:50:17 | SSA phi(f) | Properties.cs:52:13:52:13 | access to local variable f | +| Properties.cs:30:13:30:13 | f | Properties.cs:48:9:49:33 | SSA phi(f) | Properties.cs:50:13:50:13 | access to local variable f | +| Properties.cs:30:13:30:13 | f | Properties.cs:48:9:49:33 | SSA phi(f) | Properties.cs:52:13:52:13 | access to local variable f | | Properties.cs:31:19:31:22 | f.xs | Properties.cs:30:13:30:32 | SSA qualifier def(f.xs) | Properties.cs:31:19:31:22 | access to property xs | | Properties.cs:31:19:31:22 | f.xs | Properties.cs:34:9:34:16 | SSA call def(f.xs) | Properties.cs:35:13:35:16 | access to property xs | | Properties.cs:31:19:31:22 | f.xs | Properties.cs:38:9:38:13 | SSA call def(f.xs) | Properties.cs:39:13:39:16 | access to property xs | | Properties.cs:31:19:31:22 | f.xs | Properties.cs:38:9:38:13 | SSA call def(f.xs) | Properties.cs:43:13:43:16 | access to property xs | | Properties.cs:31:19:31:22 | f.xs | Properties.cs:45:9:45:25 | SSA def(f.xs) | Properties.cs:46:13:46:16 | access to property xs | -| Properties.cs:31:19:31:22 | f.xs | Properties.cs:50:9:50:17 | SSA phi(f.xs) | Properties.cs:50:13:50:16 | access to property xs | -| Properties.cs:31:19:31:22 | f.xs | Properties.cs:50:9:50:17 | SSA phi(f.xs) | Properties.cs:52:13:52:16 | access to property xs | +| Properties.cs:31:19:31:22 | f.xs | Properties.cs:48:9:49:33 | SSA phi(f.xs) | Properties.cs:50:13:50:16 | access to property xs | +| Properties.cs:31:19:31:22 | f.xs | Properties.cs:48:9:49:33 | SSA phi(f.xs) | Properties.cs:52:13:52:16 | access to property xs | | Properties.cs:32:15:32:15 | z | Properties.cs:47:9:47:14 | SSA def(z) | Properties.cs:48:13:48:13 | access to local variable z | | Properties.cs:32:19:32:20 | this.xs | Properties.cs:28:17:28:17 | SSA entry def(this.xs) | Properties.cs:32:19:32:20 | access to property xs | | Properties.cs:32:19:32:20 | this.xs | Properties.cs:34:9:34:16 | SSA call def(this.xs) | Properties.cs:36:13:36:14 | access to property xs | @@ -256,7 +259,7 @@ | Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:34:9:34:16 | SSA call def(Properties.stat) | Properties.cs:37:13:37:16 | access to property stat | | Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:38:9:38:13 | SSA call def(Properties.stat) | Properties.cs:41:13:41:16 | access to property stat | | Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:51:9:51:24 | SSA call def(Properties.stat) | Properties.cs:54:13:54:16 | access to property stat | -| Properties.cs:61:23:61:23 | i | Properties.cs:63:16:63:16 | SSA phi(i) | Properties.cs:63:16:63:16 | access to parameter i | +| Properties.cs:61:23:61:23 | i | Properties.cs:63:9:66:9 | SSA phi(i) | Properties.cs:63:16:63:16 | access to parameter i | | Properties.cs:65:24:65:31 | this.LoopProp | Properties.cs:61:17:61:17 | SSA entry def(this.LoopProp) | Properties.cs:65:24:65:31 | access to property LoopProp | | Properties.cs:67:21:67:38 | this.SingleAccessedProp | Properties.cs:61:17:61:17 | SSA entry def(this.SingleAccessedProp) | Properties.cs:67:21:67:38 | access to property SingleAccessedProp | | Properties.cs:72:20:72:37 | this.SingleAccessedProp | Properties.cs:70:17:70:17 | SSA entry def(this.SingleAccessedProp) | Properties.cs:72:20:72:37 | access to property SingleAccessedProp | @@ -288,23 +291,23 @@ | Properties.cs:115:21:115:39 | this.Props.Props.xs | Properties.cs:113:9:113:22 | SSA qualifier def(this.Props.Props.xs) | Properties.cs:115:21:115:39 | access to property xs | | Properties.cs:115:21:115:39 | this.Props.Props.xs | Properties.cs:113:9:113:22 | SSA qualifier def(this.Props.Props.xs) | Properties.cs:116:17:116:35 | access to property xs | | Test.cs:5:15:5:20 | param1 | Test.cs:5:15:5:20 | SSA param(param1) | Test.cs:11:13:11:18 | access to parameter param1 | -| Test.cs:5:15:5:20 | param1 | Test.cs:25:16:25:16 | SSA phi(param1) | Test.cs:27:17:27:22 | access to parameter param1 | -| Test.cs:5:15:5:20 | param1 | Test.cs:39:9:42:9 | SSA phi(param1) | Test.cs:41:13:41:18 | access to parameter param1 | +| Test.cs:5:15:5:20 | param1 | Test.cs:25:9:32:9 | SSA phi(param1) | Test.cs:27:17:27:22 | access to parameter param1 | +| Test.cs:5:15:5:20 | param1 | Test.cs:39:22:39:22 | SSA phi(param1) | Test.cs:41:13:41:18 | access to parameter param1 | | Test.cs:5:67:5:72 | param2 | Test.cs:5:67:5:72 | SSA param(param2) | Test.cs:39:27:39:32 | access to parameter param2 | -| Test.cs:7:9:7:13 | this.field | Test.cs:24:9:24:15 | SSA phi(this.field) | Test.cs:33:13:33:17 | access to field field | +| Test.cs:7:9:7:13 | this.field | Test.cs:11:9:23:9 | SSA phi(this.field) | Test.cs:33:13:33:17 | access to field field | | Test.cs:8:13:8:13 | x | Test.cs:8:13:8:17 | SSA def(x) | Test.cs:13:13:13:13 | access to local variable x | +| Test.cs:8:13:8:13 | x | Test.cs:11:9:23:9 | SSA phi(x) | Test.cs:25:16:25:16 | access to local variable x | | Test.cs:8:13:8:13 | x | Test.cs:13:13:13:15 | SSA def(x) | Test.cs:14:19:14:19 | access to local variable x | -| Test.cs:8:13:8:13 | x | Test.cs:24:9:24:15 | SSA phi(x) | Test.cs:25:16:25:16 | access to local variable x | -| Test.cs:8:13:8:13 | x | Test.cs:34:25:34:25 | SSA phi(x) | Test.cs:36:13:36:13 | access to local variable x | -| Test.cs:8:13:8:13 | x | Test.cs:34:25:34:25 | SSA phi(x) | Test.cs:43:16:43:16 | access to local variable x | +| Test.cs:8:13:8:13 | x | Test.cs:34:25:34:30 | SSA phi(x) | Test.cs:36:13:36:13 | access to local variable x | +| Test.cs:8:13:8:13 | x | Test.cs:34:25:34:30 | SSA phi(x) | Test.cs:43:16:43:16 | access to local variable x | | Test.cs:9:13:9:13 | y | Test.cs:19:13:19:17 | SSA def(y) | Test.cs:20:13:20:13 | access to local variable y | -| Test.cs:9:13:9:13 | y | Test.cs:25:16:25:16 | SSA phi(y) | Test.cs:25:20:25:20 | access to local variable y | -| Test.cs:9:13:9:13 | y | Test.cs:25:16:25:16 | SSA phi(y) | Test.cs:31:13:31:13 | access to local variable y | -| Test.cs:9:13:9:13 | y | Test.cs:25:16:25:16 | SSA phi(y) | Test.cs:43:20:43:20 | access to local variable y | -| Test.cs:10:13:10:13 | z | Test.cs:24:9:24:15 | SSA phi(z) | Test.cs:24:13:24:13 | access to local variable z | -| Test.cs:34:18:34:18 | i | Test.cs:34:25:34:25 | SSA phi(i) | Test.cs:34:25:34:25 | access to local variable i | -| Test.cs:34:18:34:18 | i | Test.cs:34:25:34:25 | SSA phi(i) | Test.cs:34:33:34:33 | access to local variable i | -| Test.cs:34:18:34:18 | i | Test.cs:34:25:34:25 | SSA phi(i) | Test.cs:36:18:36:18 | access to local variable i | +| Test.cs:9:13:9:13 | y | Test.cs:25:9:32:9 | SSA phi(y) | Test.cs:25:20:25:20 | access to local variable y | +| Test.cs:9:13:9:13 | y | Test.cs:25:9:32:9 | SSA phi(y) | Test.cs:31:13:31:13 | access to local variable y | +| Test.cs:9:13:9:13 | y | Test.cs:25:9:32:9 | SSA phi(y) | Test.cs:43:20:43:20 | access to local variable y | +| Test.cs:10:13:10:13 | z | Test.cs:11:9:23:9 | SSA phi(z) | Test.cs:24:13:24:13 | access to local variable z | +| Test.cs:34:18:34:18 | i | Test.cs:34:25:34:30 | SSA phi(i) | Test.cs:34:25:34:25 | access to local variable i | +| Test.cs:34:18:34:18 | i | Test.cs:34:25:34:30 | SSA phi(i) | Test.cs:34:33:34:33 | access to local variable i | +| Test.cs:34:18:34:18 | i | Test.cs:34:25:34:30 | SSA phi(i) | Test.cs:36:18:36:18 | access to local variable i | | Test.cs:39:22:39:22 | w | Test.cs:39:22:39:22 | SSA def(w) | Test.cs:41:23:41:23 | access to local variable w | | Test.cs:46:16:46:18 | in | Test.cs:46:16:46:18 | SSA param(in) | Test.cs:48:13:48:15 | access to parameter in | | Test.cs:56:13:56:17 | this.field | Test.cs:46:10:46:10 | SSA entry def(this.field) | Test.cs:56:13:56:17 | access to field field | @@ -323,8 +326,8 @@ | Test.cs:78:13:78:13 | x | Test.cs:78:13:78:17 | SSA def(x) | Test.cs:96:17:96:17 | access to local variable x | | Test.cs:78:13:78:13 | x | Test.cs:78:13:78:17 | SSA def(x) | Test.cs:99:13:99:13 | access to local variable x | | Test.cs:78:13:78:13 | x | Test.cs:78:13:78:17 | SSA def(x) | Test.cs:104:17:104:17 | access to local variable x | +| Test.cs:78:13:78:13 | x | Test.cs:102:9:110:9 | SSA phi(x) | Test.cs:115:17:115:17 | access to local variable x | | Test.cs:78:13:78:13 | x | Test.cs:108:13:108:17 | SSA def(x) | Test.cs:109:17:109:17 | access to local variable x | -| Test.cs:78:13:78:13 | x | Test.cs:113:9:116:9 | SSA phi(x) | Test.cs:115:17:115:17 | access to local variable x | | Tuples.cs:10:14:10:14 | x | Tuples.cs:10:9:10:54 | SSA def(x) | Tuples.cs:11:13:11:13 | access to local variable x | | Tuples.cs:10:14:10:14 | x | Tuples.cs:14:9:14:32 | SSA def(x) | Tuples.cs:15:13:15:13 | access to local variable x | | Tuples.cs:10:14:10:14 | x | Tuples.cs:23:9:23:37 | SSA def(x) | Tuples.cs:24:13:24:13 | access to local variable x | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaRead.ql b/csharp/ql/test/library-tests/dataflow/ssa/SsaRead.ql index 44e4cdc23d0a..1cc573d32771 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaRead.ql +++ b/csharp/ql/test/library-tests/dataflow/ssa/SsaRead.ql @@ -1,6 +1,6 @@ import csharp -from Ssa::SourceVariable v, Ssa::Definition def, AssignableRead read +from Ssa::SourceVariable v, SsaDefinition def, AssignableRead read where read = def.getARead() and v = def.getSourceVariable() diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaUltimateDef.expected b/csharp/ql/test/library-tests/dataflow/ssa/SsaUltimateDef.expected index d6dfac1475ae..f12eaaf98268 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaUltimateDef.expected +++ b/csharp/ql/test/library-tests/dataflow/ssa/SsaUltimateDef.expected @@ -35,8 +35,8 @@ | Capture.cs:248:36:248:36 | j | Capture.cs:251:13:251:17 | SSA def(j) | Capture.cs:251:13:251:17 | SSA def(j) | | Consistency.cs:7:25:7:25 | b | Consistency.cs:7:25:7:25 | SSA param(b) | Consistency.cs:7:25:7:25 | SSA param(b) | | Consistency.cs:15:17:15:17 | i | Consistency.cs:15:17:15:21 | SSA def(i) | Consistency.cs:15:17:15:21 | SSA def(i) | -| Consistency.cs:25:29:25:29 | c | Consistency.cs:25:29:25:29 | SSA def(c) | Consistency.cs:25:29:25:29 | SSA def(c) | -| Consistency.cs:26:13:26:19 | c.Field | Consistency.cs:25:29:25:29 | SSA qualifier def(c.Field) | Consistency.cs:25:29:25:29 | SSA qualifier def(c.Field) | +| Consistency.cs:25:29:25:29 | c | Consistency.cs:25:9:25:30 | SSA def(c) | Consistency.cs:25:9:25:30 | SSA def(c) | +| Consistency.cs:26:13:26:19 | c.Field | Consistency.cs:25:9:25:30 | SSA qualifier def(c.Field) | Consistency.cs:25:9:25:30 | SSA qualifier def(c.Field) | | Consistency.cs:30:30:30:30 | c | Consistency.cs:32:9:32:29 | SSA def(c) | Consistency.cs:32:9:32:29 | SSA def(c) | | Consistency.cs:44:11:44:11 | s | Consistency.cs:44:11:44:11 | SSA def(s) | Consistency.cs:44:11:44:11 | SSA def(s) | | Consistency.cs:49:30:49:30 | a | Consistency.cs:49:30:49:30 | SSA param(a) | Consistency.cs:49:30:49:30 | SSA param(a) | @@ -46,40 +46,40 @@ | Consistency.cs:56:17:56:17 | k | Consistency.cs:57:9:57:13 | SSA def(k) | Consistency.cs:57:9:57:13 | SSA def(k) | | Consistency.cs:56:17:56:17 | k | Consistency.cs:58:9:58:13 | SSA def(k) | Consistency.cs:58:9:58:13 | SSA def(k) | | DefUse.cs:3:26:3:26 | w | DefUse.cs:3:26:3:26 | SSA param(w) | DefUse.cs:3:26:3:26 | SSA param(w) | +| DefUse.cs:3:26:3:26 | w | DefUse.cs:11:9:21:9 | SSA phi(w) | DefUse.cs:3:26:3:26 | SSA param(w) | +| DefUse.cs:3:26:3:26 | w | DefUse.cs:11:9:21:9 | SSA phi(w) | DefUse.cs:19:13:19:18 | SSA def(w) | | DefUse.cs:3:26:3:26 | w | DefUse.cs:19:13:19:18 | SSA def(w) | DefUse.cs:19:13:19:18 | SSA def(w) | -| DefUse.cs:3:26:3:26 | w | DefUse.cs:23:9:23:15 | SSA phi(w) | DefUse.cs:3:26:3:26 | SSA param(w) | -| DefUse.cs:3:26:3:26 | w | DefUse.cs:23:9:23:15 | SSA phi(w) | DefUse.cs:19:13:19:18 | SSA def(w) | | DefUse.cs:3:26:3:26 | w | DefUse.cs:29:13:29:18 | SSA def(w) | DefUse.cs:29:13:29:18 | SSA def(w) | | DefUse.cs:5:13:5:13 | x | DefUse.cs:5:13:5:17 | SSA def(x) | DefUse.cs:5:13:5:17 | SSA def(x) | | DefUse.cs:6:14:6:14 | y | DefUse.cs:6:14:6:19 | SSA def(y) | DefUse.cs:6:14:6:19 | SSA def(y) | +| DefUse.cs:6:14:6:14 | y | DefUse.cs:11:9:21:9 | SSA phi(y) | DefUse.cs:13:13:13:18 | SSA def(y) | +| DefUse.cs:6:14:6:14 | y | DefUse.cs:11:9:21:9 | SSA phi(y) | DefUse.cs:18:13:18:18 | SSA def(y) | | DefUse.cs:6:14:6:14 | y | DefUse.cs:13:13:13:18 | SSA def(y) | DefUse.cs:13:13:13:18 | SSA def(y) | | DefUse.cs:6:14:6:14 | y | DefUse.cs:18:13:18:18 | SSA def(y) | DefUse.cs:18:13:18:18 | SSA def(y) | -| DefUse.cs:6:14:6:14 | y | DefUse.cs:23:9:23:15 | SSA phi(y) | DefUse.cs:13:13:13:18 | SSA def(y) | -| DefUse.cs:6:14:6:14 | y | DefUse.cs:23:9:23:15 | SSA phi(y) | DefUse.cs:18:13:18:18 | SSA def(y) | | DefUse.cs:6:14:6:14 | y | DefUse.cs:28:13:28:18 | SSA def(y) | DefUse.cs:28:13:28:18 | SSA def(y) | +| DefUse.cs:6:14:6:14 | y | DefUse.cs:37:9:40:9 | SSA phi(y) | DefUse.cs:28:13:28:18 | SSA def(y) | +| DefUse.cs:6:14:6:14 | y | DefUse.cs:37:9:40:9 | SSA phi(y) | DefUse.cs:39:13:39:18 | SSA def(y) | | DefUse.cs:6:14:6:14 | y | DefUse.cs:39:13:39:18 | SSA def(y) | DefUse.cs:39:13:39:18 | SSA def(y) | -| DefUse.cs:6:14:6:14 | y | DefUse.cs:42:9:42:15 | SSA phi(y) | DefUse.cs:28:13:28:18 | SSA def(y) | -| DefUse.cs:6:14:6:14 | y | DefUse.cs:42:9:42:15 | SSA phi(y) | DefUse.cs:39:13:39:18 | SSA def(y) | | DefUse.cs:44:13:44:13 | z | DefUse.cs:44:13:44:17 | SSA def(z) | DefUse.cs:44:13:44:17 | SSA def(z) | -| DefUse.cs:44:13:44:13 | z | DefUse.cs:47:23:47:23 | SSA def(z) | DefUse.cs:47:23:47:23 | SSA def(z) | -| DefUse.cs:44:13:44:13 | z | DefUse.cs:50:23:50:23 | SSA def(z) | DefUse.cs:50:23:50:23 | SSA def(z) | +| DefUse.cs:44:13:44:13 | z | DefUse.cs:47:9:47:24 | SSA def(z) | DefUse.cs:47:9:47:24 | SSA def(z) | +| DefUse.cs:44:13:44:13 | z | DefUse.cs:50:9:50:24 | SSA def(z) | DefUse.cs:50:9:50:24 | SSA def(z) | | DefUse.cs:53:9:53:13 | this.Field | DefUse.cs:53:9:53:17 | SSA def(this.Field) | DefUse.cs:53:9:53:17 | SSA def(this.Field) | | DefUse.cs:56:9:56:12 | this.Prop | DefUse.cs:56:9:56:16 | SSA def(this.Prop) | DefUse.cs:56:9:56:16 | SSA def(this.Prop) | | DefUse.cs:63:9:63:14 | this.Field2 | DefUse.cs:63:9:63:18 | SSA def(this.Field2) | DefUse.cs:63:9:63:18 | SSA def(this.Field2) | | DefUse.cs:66:9:66:14 | this.Field3 | DefUse.cs:66:9:66:18 | SSA def(this.Field3) | DefUse.cs:66:9:66:18 | SSA def(this.Field3) | | DefUse.cs:67:19:67:20 | tc | DefUse.cs:67:19:67:27 | SSA def(tc) | DefUse.cs:67:19:67:27 | SSA def(tc) | | DefUse.cs:79:13:79:14 | x1 | DefUse.cs:79:13:79:18 | SSA def(x1) | DefUse.cs:79:13:79:18 | SSA def(x1) | -| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:30:80:31 | SSA def(x1) | DefUse.cs:80:30:80:31 | SSA def(x1) | -| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:30:80:31 | SSA phi(x1) | DefUse.cs:79:13:79:18 | SSA def(x1) | -| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:30:80:31 | SSA phi(x1) | DefUse.cs:80:30:80:31 | SSA def(x1) | +| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:9:80:51 | SSA phi(x1) | DefUse.cs:79:13:79:18 | SSA def(x1) | +| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:9:80:51 | SSA phi(x1) | DefUse.cs:80:16:80:32 | SSA def(x1) | +| DefUse.cs:79:13:79:14 | x1 | DefUse.cs:80:16:80:32 | SSA def(x1) | DefUse.cs:80:16:80:32 | SSA def(x1) | | DefUse.cs:83:13:83:14 | x2 | DefUse.cs:83:13:83:18 | SSA def(x2) | DefUse.cs:83:13:83:18 | SSA def(x2) | -| DefUse.cs:83:13:83:14 | x2 | DefUse.cs:85:15:85:16 | SSA def(x2) | DefUse.cs:85:15:85:16 | SSA def(x2) | +| DefUse.cs:83:13:83:14 | x2 | DefUse.cs:84:9:86:17 | SSA def(x2) | DefUse.cs:84:9:86:17 | SSA def(x2) | | DefUse.cs:89:13:89:14 | x3 | DefUse.cs:89:13:89:18 | SSA def(x3) | DefUse.cs:89:13:89:18 | SSA def(x3) | -| DefUse.cs:89:13:89:14 | x3 | DefUse.cs:92:15:92:16 | SSA def(x3) | DefUse.cs:92:15:92:16 | SSA def(x3) | -| DefUse.cs:90:13:90:14 | x4 | DefUse.cs:93:15:93:16 | SSA def(x4) | DefUse.cs:93:15:93:16 | SSA def(x4) | +| DefUse.cs:89:13:89:14 | x3 | DefUse.cs:91:9:93:17 | SSA def(x3) | DefUse.cs:91:9:93:17 | SSA def(x3) | +| DefUse.cs:90:13:90:14 | x4 | DefUse.cs:91:9:93:17 | SSA def(x4) | DefUse.cs:91:9:93:17 | SSA def(x4) | | DefUse.cs:97:13:97:14 | x5 | DefUse.cs:97:13:97:18 | SSA def(x5) | DefUse.cs:97:13:97:18 | SSA def(x5) | -| DefUse.cs:97:13:97:14 | x5 | DefUse.cs:98:16:98:17 | SSA phi(x5) | DefUse.cs:97:13:97:18 | SSA def(x5) | -| DefUse.cs:97:13:97:14 | x5 | DefUse.cs:98:16:98:17 | SSA phi(x5) | DefUse.cs:101:13:101:23 | SSA def(x5) | +| DefUse.cs:97:13:97:14 | x5 | DefUse.cs:98:9:102:9 | SSA phi(x5) | DefUse.cs:97:13:97:18 | SSA def(x5) | +| DefUse.cs:97:13:97:14 | x5 | DefUse.cs:98:9:102:9 | SSA phi(x5) | DefUse.cs:101:13:101:23 | SSA def(x5) | | DefUse.cs:97:13:97:14 | x5 | DefUse.cs:101:13:101:23 | SSA def(x5) | DefUse.cs:101:13:101:23 | SSA def(x5) | | DefUse.cs:97:13:97:14 | x5 | DefUse.cs:104:9:104:15 | SSA def(x5) | DefUse.cs:104:9:104:15 | SSA def(x5) | | DefUse.cs:114:42:114:42 | i | DefUse.cs:114:47:114:52 | SSA def(i) | DefUse.cs:114:47:114:52 | SSA def(i) | @@ -99,34 +99,45 @@ | DefUse.cs:184:9:184:14 | this.Field5 | DefUse.cs:191:9:191:11 | SSA call def(this.Field5) | DefUse.cs:184:9:184:18 | SSA def(this.Field5) | | DefUse.cs:184:9:184:14 | this.Field5 | DefUse.cs:191:9:191:11 | SSA call def(this.Field5) | DefUse.cs:191:9:191:11 | SSA call def(this.Field5) | | DefUse.cs:188:13:188:18 | this.Field5 | DefUse.cs:188:13:188:22 | SSA def(this.Field5) | DefUse.cs:188:13:188:22 | SSA def(this.Field5) | +| DefaultParam.cs:3:20:3:20 | b | DefaultParam.cs:3:20:3:20 | SSA param(b) | DefaultParam.cs:3:20:3:20 | SSA param(b) | +| DefaultParam.cs:3:30:3:30 | s | DefaultParam.cs:3:30:3:30 | SSA param(s) | DefaultParam.cs:3:30:3:30 | SSA param(s) | +| DefaultParam.cs:3:30:3:30 | s | DefaultParam.cs:3:34:3:35 | SSA def(s) | DefaultParam.cs:3:34:3:35 | SSA def(s) | +| DefaultParam.cs:3:30:3:30 | s | DefaultParam.cs:3:42:3:42 | SSA phi(s) | DefaultParam.cs:3:30:3:30 | SSA param(s) | +| DefaultParam.cs:3:30:3:30 | s | DefaultParam.cs:3:42:3:42 | SSA phi(s) | DefaultParam.cs:3:34:3:35 | SSA def(s) | +| DefaultParam.cs:3:42:3:42 | i | DefaultParam.cs:3:42:3:42 | SSA param(i) | DefaultParam.cs:3:42:3:42 | SSA param(i) | +| DefaultParam.cs:3:42:3:42 | i | DefaultParam.cs:3:46:3:46 | SSA def(i) | DefaultParam.cs:3:46:3:46 | SSA def(i) | +| DefaultParam.cs:3:42:3:42 | i | DefaultParam.cs:4:5:6:5 | SSA phi(i) | DefaultParam.cs:3:42:3:42 | SSA param(i) | +| DefaultParam.cs:3:42:3:42 | i | DefaultParam.cs:4:5:6:5 | SSA phi(i) | DefaultParam.cs:3:46:3:46 | SSA def(i) | | Example.cs:6:23:6:23 | i | Example.cs:6:23:6:23 | SSA param(i) | Example.cs:6:23:6:23 | SSA param(i) | | Example.cs:8:9:8:18 | this.Field | Example.cs:8:9:8:22 | SSA def(this.Field) | Example.cs:8:9:8:22 | SSA def(this.Field) | +| Example.cs:8:9:8:18 | this.Field | Example.cs:10:9:13:24 | SSA phi(this.Field) | Example.cs:8:9:8:22 | SSA def(this.Field) | +| Example.cs:8:9:8:18 | this.Field | Example.cs:10:9:13:24 | SSA phi(this.Field) | Example.cs:11:13:11:30 | SSA def(this.Field) | +| Example.cs:8:9:8:18 | this.Field | Example.cs:10:9:13:24 | SSA phi(this.Field) | Example.cs:13:13:13:23 | SSA call def(this.Field) | | Example.cs:8:9:8:18 | this.Field | Example.cs:11:13:11:30 | SSA def(this.Field) | Example.cs:11:13:11:30 | SSA def(this.Field) | +| Example.cs:8:9:8:18 | this.Field | Example.cs:12:14:13:24 | SSA phi(this.Field) | Example.cs:8:9:8:22 | SSA def(this.Field) | +| Example.cs:8:9:8:18 | this.Field | Example.cs:12:14:13:24 | SSA phi(this.Field) | Example.cs:13:13:13:23 | SSA call def(this.Field) | | Example.cs:8:9:8:18 | this.Field | Example.cs:13:13:13:23 | SSA call def(this.Field) | Example.cs:8:9:8:22 | SSA def(this.Field) | | Example.cs:8:9:8:18 | this.Field | Example.cs:13:13:13:23 | SSA call def(this.Field) | Example.cs:13:13:13:23 | SSA call def(this.Field) | -| Example.cs:8:9:8:18 | this.Field | Example.cs:14:9:14:24 | SSA phi(this.Field) | Example.cs:8:9:8:22 | SSA def(this.Field) | -| Example.cs:8:9:8:18 | this.Field | Example.cs:14:9:14:24 | SSA phi(this.Field) | Example.cs:11:13:11:30 | SSA def(this.Field) | -| Example.cs:8:9:8:18 | this.Field | Example.cs:14:9:14:24 | SSA phi(this.Field) | Example.cs:13:13:13:23 | SSA call def(this.Field) | | Example.cs:18:16:18:16 | p | Example.cs:18:16:18:16 | SSA param(p) | Example.cs:18:16:18:16 | SSA param(p) | +| Example.cs:18:16:18:16 | p | Example.cs:20:9:24:9 | SSA phi(p) | Example.cs:18:16:18:16 | SSA param(p) | +| Example.cs:18:16:18:16 | p | Example.cs:20:9:24:9 | SSA phi(p) | Example.cs:23:13:23:17 | SSA def(p) | | Example.cs:18:16:18:16 | p | Example.cs:23:13:23:17 | SSA def(p) | Example.cs:23:13:23:17 | SSA def(p) | -| Example.cs:18:16:18:16 | p | Example.cs:25:9:25:15 | SSA phi(p) | Example.cs:18:16:18:16 | SSA param(p) | -| Example.cs:18:16:18:16 | p | Example.cs:25:9:25:15 | SSA phi(p) | Example.cs:23:13:23:17 | SSA def(p) | | Example.cs:18:24:18:24 | b | Example.cs:18:24:18:24 | SSA param(b) | Example.cs:18:24:18:24 | SSA param(b) | | Fields.cs:18:15:18:15 | x | Fields.cs:20:9:20:14 | SSA def(x) | Fields.cs:20:9:20:14 | SSA def(x) | | Fields.cs:18:19:18:20 | this.xs | Fields.cs:16:17:16:17 | SSA entry def(this.xs) | Fields.cs:16:17:16:17 | SSA entry def(this.xs) | | Fields.cs:18:19:18:20 | this.xs | Fields.cs:19:9:19:13 | SSA call def(this.xs) | Fields.cs:16:17:16:17 | SSA entry def(this.xs) | | Fields.cs:18:19:18:20 | this.xs | Fields.cs:19:9:19:13 | SSA call def(this.xs) | Fields.cs:19:9:19:13 | SSA call def(this.xs) | +| Fields.cs:18:19:18:20 | this.xs | Fields.cs:21:9:22:18 | SSA phi(this.xs) | Fields.cs:16:17:16:17 | SSA entry def(this.xs) | +| Fields.cs:18:19:18:20 | this.xs | Fields.cs:21:9:22:18 | SSA phi(this.xs) | Fields.cs:19:9:19:13 | SSA call def(this.xs) | +| Fields.cs:18:19:18:20 | this.xs | Fields.cs:21:9:22:18 | SSA phi(this.xs) | Fields.cs:22:13:22:17 | SSA call def(this.xs) | | Fields.cs:18:19:18:20 | this.xs | Fields.cs:22:13:22:17 | SSA call def(this.xs) | Fields.cs:16:17:16:17 | SSA entry def(this.xs) | | Fields.cs:18:19:18:20 | this.xs | Fields.cs:22:13:22:17 | SSA call def(this.xs) | Fields.cs:19:9:19:13 | SSA call def(this.xs) | | Fields.cs:18:19:18:20 | this.xs | Fields.cs:22:13:22:17 | SSA call def(this.xs) | Fields.cs:22:13:22:17 | SSA call def(this.xs) | -| Fields.cs:18:19:18:20 | this.xs | Fields.cs:23:9:23:20 | SSA phi(this.xs) | Fields.cs:16:17:16:17 | SSA entry def(this.xs) | -| Fields.cs:18:19:18:20 | this.xs | Fields.cs:23:9:23:20 | SSA phi(this.xs) | Fields.cs:19:9:19:13 | SSA call def(this.xs) | -| Fields.cs:18:19:18:20 | this.xs | Fields.cs:23:9:23:20 | SSA phi(this.xs) | Fields.cs:22:13:22:17 | SSA call def(this.xs) | | Fields.cs:18:19:18:20 | this.xs | Fields.cs:24:9:24:23 | SSA def(this.xs) | Fields.cs:24:9:24:23 | SSA def(this.xs) | | Fields.cs:30:13:30:13 | f | Fields.cs:30:13:30:28 | SSA def(f) | Fields.cs:30:13:30:28 | SSA def(f) | +| Fields.cs:30:13:30:13 | f | Fields.cs:48:9:49:29 | SSA phi(f) | Fields.cs:30:13:30:28 | SSA def(f) | +| Fields.cs:30:13:30:13 | f | Fields.cs:48:9:49:29 | SSA phi(f) | Fields.cs:49:13:49:28 | SSA def(f) | | Fields.cs:30:13:30:13 | f | Fields.cs:49:13:49:28 | SSA def(f) | Fields.cs:49:13:49:28 | SSA def(f) | -| Fields.cs:30:13:30:13 | f | Fields.cs:50:9:50:17 | SSA phi(f) | Fields.cs:30:13:30:28 | SSA def(f) | -| Fields.cs:30:13:30:13 | f | Fields.cs:50:9:50:17 | SSA phi(f) | Fields.cs:49:13:49:28 | SSA def(f) | | Fields.cs:31:19:31:22 | f.xs | Fields.cs:30:13:30:28 | SSA qualifier def(f.xs) | Fields.cs:30:13:30:28 | SSA qualifier def(f.xs) | | Fields.cs:31:19:31:22 | f.xs | Fields.cs:34:9:34:16 | SSA call def(f.xs) | Fields.cs:30:13:30:28 | SSA qualifier def(f.xs) | | Fields.cs:31:19:31:22 | f.xs | Fields.cs:34:9:34:16 | SSA call def(f.xs) | Fields.cs:34:9:34:16 | SSA call def(f.xs) | @@ -134,9 +145,9 @@ | Fields.cs:31:19:31:22 | f.xs | Fields.cs:38:9:38:13 | SSA call def(f.xs) | Fields.cs:34:9:34:16 | SSA call def(f.xs) | | Fields.cs:31:19:31:22 | f.xs | Fields.cs:38:9:38:13 | SSA call def(f.xs) | Fields.cs:38:9:38:13 | SSA call def(f.xs) | | Fields.cs:31:19:31:22 | f.xs | Fields.cs:45:9:45:25 | SSA def(f.xs) | Fields.cs:45:9:45:25 | SSA def(f.xs) | +| Fields.cs:31:19:31:22 | f.xs | Fields.cs:48:9:49:29 | SSA phi(f.xs) | Fields.cs:45:9:45:25 | SSA def(f.xs) | +| Fields.cs:31:19:31:22 | f.xs | Fields.cs:48:9:49:29 | SSA phi(f.xs) | Fields.cs:49:13:49:28 | SSA qualifier def(f.xs) | | Fields.cs:31:19:31:22 | f.xs | Fields.cs:49:13:49:28 | SSA qualifier def(f.xs) | Fields.cs:49:13:49:28 | SSA qualifier def(f.xs) | -| Fields.cs:31:19:31:22 | f.xs | Fields.cs:50:9:50:17 | SSA phi(f.xs) | Fields.cs:45:9:45:25 | SSA def(f.xs) | -| Fields.cs:31:19:31:22 | f.xs | Fields.cs:50:9:50:17 | SSA phi(f.xs) | Fields.cs:49:13:49:28 | SSA qualifier def(f.xs) | | Fields.cs:32:15:32:15 | z | Fields.cs:47:9:47:14 | SSA def(z) | Fields.cs:47:9:47:14 | SSA def(z) | | Fields.cs:32:19:32:20 | this.xs | Fields.cs:28:17:28:17 | SSA entry def(this.xs) | Fields.cs:28:17:28:17 | SSA entry def(this.xs) | | Fields.cs:32:19:32:20 | this.xs | Fields.cs:34:9:34:16 | SSA call def(this.xs) | Fields.cs:28:17:28:17 | SSA entry def(this.xs) | @@ -155,16 +166,16 @@ | Fields.cs:33:19:33:22 | Fields.stat | Fields.cs:38:9:38:13 | SSA call def(Fields.stat) | Fields.cs:30:17:30:28 | SSA call def(Fields.stat) | | Fields.cs:33:19:33:22 | Fields.stat | Fields.cs:38:9:38:13 | SSA call def(Fields.stat) | Fields.cs:34:9:34:16 | SSA call def(Fields.stat) | | Fields.cs:33:19:33:22 | Fields.stat | Fields.cs:38:9:38:13 | SSA call def(Fields.stat) | Fields.cs:38:9:38:13 | SSA call def(Fields.stat) | +| Fields.cs:33:19:33:22 | Fields.stat | Fields.cs:48:9:49:29 | SSA phi(Fields.stat) | Fields.cs:28:17:28:17 | SSA entry def(Fields.stat) | +| Fields.cs:33:19:33:22 | Fields.stat | Fields.cs:48:9:49:29 | SSA phi(Fields.stat) | Fields.cs:30:17:30:28 | SSA call def(Fields.stat) | +| Fields.cs:33:19:33:22 | Fields.stat | Fields.cs:48:9:49:29 | SSA phi(Fields.stat) | Fields.cs:34:9:34:16 | SSA call def(Fields.stat) | +| Fields.cs:33:19:33:22 | Fields.stat | Fields.cs:48:9:49:29 | SSA phi(Fields.stat) | Fields.cs:38:9:38:13 | SSA call def(Fields.stat) | +| Fields.cs:33:19:33:22 | Fields.stat | Fields.cs:48:9:49:29 | SSA phi(Fields.stat) | Fields.cs:49:17:49:28 | SSA call def(Fields.stat) | | Fields.cs:33:19:33:22 | Fields.stat | Fields.cs:49:17:49:28 | SSA call def(Fields.stat) | Fields.cs:28:17:28:17 | SSA entry def(Fields.stat) | | Fields.cs:33:19:33:22 | Fields.stat | Fields.cs:49:17:49:28 | SSA call def(Fields.stat) | Fields.cs:30:17:30:28 | SSA call def(Fields.stat) | | Fields.cs:33:19:33:22 | Fields.stat | Fields.cs:49:17:49:28 | SSA call def(Fields.stat) | Fields.cs:34:9:34:16 | SSA call def(Fields.stat) | | Fields.cs:33:19:33:22 | Fields.stat | Fields.cs:49:17:49:28 | SSA call def(Fields.stat) | Fields.cs:38:9:38:13 | SSA call def(Fields.stat) | | Fields.cs:33:19:33:22 | Fields.stat | Fields.cs:49:17:49:28 | SSA call def(Fields.stat) | Fields.cs:49:17:49:28 | SSA call def(Fields.stat) | -| Fields.cs:33:19:33:22 | Fields.stat | Fields.cs:50:9:50:17 | SSA phi(Fields.stat) | Fields.cs:28:17:28:17 | SSA entry def(Fields.stat) | -| Fields.cs:33:19:33:22 | Fields.stat | Fields.cs:50:9:50:17 | SSA phi(Fields.stat) | Fields.cs:30:17:30:28 | SSA call def(Fields.stat) | -| Fields.cs:33:19:33:22 | Fields.stat | Fields.cs:50:9:50:17 | SSA phi(Fields.stat) | Fields.cs:34:9:34:16 | SSA call def(Fields.stat) | -| Fields.cs:33:19:33:22 | Fields.stat | Fields.cs:50:9:50:17 | SSA phi(Fields.stat) | Fields.cs:38:9:38:13 | SSA call def(Fields.stat) | -| Fields.cs:33:19:33:22 | Fields.stat | Fields.cs:50:9:50:17 | SSA phi(Fields.stat) | Fields.cs:49:17:49:28 | SSA call def(Fields.stat) | | Fields.cs:33:19:33:22 | Fields.stat | Fields.cs:51:9:51:20 | SSA call def(Fields.stat) | Fields.cs:28:17:28:17 | SSA entry def(Fields.stat) | | Fields.cs:33:19:33:22 | Fields.stat | Fields.cs:51:9:51:20 | SSA call def(Fields.stat) | Fields.cs:30:17:30:28 | SSA call def(Fields.stat) | | Fields.cs:33:19:33:22 | Fields.stat | Fields.cs:51:9:51:20 | SSA call def(Fields.stat) | Fields.cs:34:9:34:16 | SSA call def(Fields.stat) | @@ -199,37 +210,37 @@ | Fields.cs:115:20:115:29 | this.Field | Fields.cs:109:10:109:10 | SSA entry def(this.Field) | Fields.cs:109:10:109:10 | SSA entry def(this.Field) | | Fields.cs:115:20:115:29 | this.Field | Fields.cs:114:9:114:22 | SSA call def(this.Field) | Fields.cs:109:10:109:10 | SSA entry def(this.Field) | | Fields.cs:115:20:115:29 | this.Field | Fields.cs:114:9:114:22 | SSA call def(this.Field) | Fields.cs:114:9:114:22 | SSA call def(this.Field) | -| Fields.cs:115:20:115:35 | this.Field.Field | Fields.cs:109:10:109:10 | SSA qualifier def(this.Field.Field) | Fields.cs:109:10:109:10 | SSA qualifier def(this.Field.Field) | -| Fields.cs:115:20:115:35 | this.Field.Field | Fields.cs:114:9:114:22 | SSA call def(this.Field.Field) | Fields.cs:109:10:109:10 | SSA qualifier def(this.Field.Field) | +| Fields.cs:115:20:115:35 | this.Field.Field | Fields.cs:109:10:109:10 | SSA entry def(this.Field.Field) | Fields.cs:109:10:109:10 | SSA entry def(this.Field.Field) | +| Fields.cs:115:20:115:35 | this.Field.Field | Fields.cs:114:9:114:22 | SSA call def(this.Field.Field) | Fields.cs:109:10:109:10 | SSA entry def(this.Field.Field) | | Fields.cs:115:20:115:35 | this.Field.Field | Fields.cs:114:9:114:22 | SSA call def(this.Field.Field) | Fields.cs:114:9:114:22 | SSA call def(this.Field.Field) | -| Fields.cs:116:21:116:39 | this.Field.Field.xs | Fields.cs:109:10:109:10 | SSA qualifier def(this.Field.Field.xs) | Fields.cs:109:10:109:10 | SSA qualifier def(this.Field.Field.xs) | -| Fields.cs:116:21:116:39 | this.Field.Field.xs | Fields.cs:114:9:114:22 | SSA qualifier def(this.Field.Field.xs) | Fields.cs:109:10:109:10 | SSA qualifier def(this.Field.Field.xs) | +| Fields.cs:116:21:116:39 | this.Field.Field.xs | Fields.cs:109:10:109:10 | SSA entry def(this.Field.Field.xs) | Fields.cs:109:10:109:10 | SSA entry def(this.Field.Field.xs) | +| Fields.cs:116:21:116:39 | this.Field.Field.xs | Fields.cs:114:9:114:22 | SSA qualifier def(this.Field.Field.xs) | Fields.cs:109:10:109:10 | SSA entry def(this.Field.Field.xs) | | Fields.cs:116:21:116:39 | this.Field.Field.xs | Fields.cs:114:9:114:22 | SSA qualifier def(this.Field.Field.xs) | Fields.cs:114:9:114:22 | SSA qualifier def(this.Field.Field.xs) | | MultiImplementationA.cs:5:22:5:22 | x | MultiImplementationA.cs:5:22:5:22 | SSA param(x) | MultiImplementationA.cs:5:22:5:22 | SSA param(x) | | MultiImplementationA.cs:5:22:5:22 | x | MultiImplementationB.cs:3:22:3:22 | SSA param(x) | MultiImplementationB.cs:3:22:3:22 | SSA param(x) | | OutRef.cs:9:13:9:13 | j | OutRef.cs:9:13:9:17 | SSA def(j) | OutRef.cs:9:13:9:17 | SSA def(j) | -| OutRef.cs:9:13:9:13 | j | OutRef.cs:10:32:10:32 | SSA def(j) | OutRef.cs:10:32:10:32 | SSA def(j) | -| OutRef.cs:9:13:9:13 | j | OutRef.cs:22:22:22:22 | SSA def(j) | OutRef.cs:22:22:22:22 | SSA def(j) | -| OutRef.cs:9:13:9:13 | j | OutRef.cs:24:29:24:29 | SSA def(j) | OutRef.cs:22:22:22:22 | SSA def(j) | -| OutRef.cs:9:13:9:13 | j | OutRef.cs:24:29:24:29 | SSA def(j) | OutRef.cs:24:29:24:29 | SSA def(j) | -| OutRef.cs:10:25:10:25 | i | OutRef.cs:10:25:10:25 | SSA def(i) | OutRef.cs:10:25:10:25 | SSA def(i) | -| OutRef.cs:10:25:10:25 | i | OutRef.cs:13:21:13:21 | SSA def(i) | OutRef.cs:13:21:13:21 | SSA def(i) | +| OutRef.cs:9:13:9:13 | j | OutRef.cs:10:9:10:33 | SSA def(j) | OutRef.cs:10:9:10:33 | SSA def(j) | +| OutRef.cs:9:13:9:13 | j | OutRef.cs:22:9:22:30 | SSA def(j) | OutRef.cs:22:9:22:30 | SSA def(j) | +| OutRef.cs:9:13:9:13 | j | OutRef.cs:24:9:24:30 | SSA def(j) | OutRef.cs:22:9:22:30 | SSA def(j) | +| OutRef.cs:9:13:9:13 | j | OutRef.cs:24:9:24:30 | SSA def(j) | OutRef.cs:24:9:24:30 | SSA def(j) | +| OutRef.cs:10:25:10:25 | i | OutRef.cs:10:9:10:33 | SSA def(i) | OutRef.cs:10:9:10:33 | SSA def(i) | +| OutRef.cs:10:25:10:25 | i | OutRef.cs:13:9:13:33 | SSA def(i) | OutRef.cs:13:9:13:33 | SSA def(i) | | OutRef.cs:13:28:13:32 | this.Field | OutRef.cs:7:10:7:10 | SSA entry def(this.Field) | OutRef.cs:7:10:7:10 | SSA entry def(this.Field) | -| OutRef.cs:13:28:13:32 | this.Field | OutRef.cs:13:28:13:32 | SSA def(this.Field) | OutRef.cs:13:28:13:32 | SSA def(this.Field) | -| OutRef.cs:13:28:13:32 | this.Field | OutRef.cs:16:21:16:25 | SSA def(this.Field) | OutRef.cs:16:21:16:25 | SSA def(this.Field) | -| OutRef.cs:13:28:13:32 | this.Field | OutRef.cs:19:21:19:25 | SSA def(this.Field) | OutRef.cs:19:21:19:25 | SSA def(this.Field) | +| OutRef.cs:13:28:13:32 | this.Field | OutRef.cs:13:9:13:33 | SSA def(this.Field) | OutRef.cs:13:9:13:33 | SSA def(this.Field) | +| OutRef.cs:13:28:13:32 | this.Field | OutRef.cs:16:9:16:37 | SSA def(this.Field) | OutRef.cs:16:9:16:37 | SSA def(this.Field) | +| OutRef.cs:13:28:13:32 | this.Field | OutRef.cs:19:9:19:39 | SSA def(this.Field) | OutRef.cs:19:9:19:39 | SSA def(this.Field) | | OutRef.cs:18:13:18:13 | t | OutRef.cs:18:13:18:28 | SSA def(t) | OutRef.cs:18:13:18:28 | SSA def(t) | | OutRef.cs:19:32:19:38 | t.Field | OutRef.cs:18:13:18:28 | SSA qualifier def(t.Field) | OutRef.cs:18:13:18:28 | SSA qualifier def(t.Field) | -| OutRef.cs:19:32:19:38 | t.Field | OutRef.cs:19:32:19:38 | SSA def(t.Field) | OutRef.cs:19:32:19:38 | SSA def(t.Field) | +| OutRef.cs:19:32:19:38 | t.Field | OutRef.cs:19:9:19:39 | SSA def(t.Field) | OutRef.cs:19:9:19:39 | SSA def(t.Field) | | OutRef.cs:28:26:28:26 | i | OutRef.cs:30:9:30:13 | SSA def(i) | OutRef.cs:30:9:30:13 | SSA def(i) | | OutRef.cs:28:37:28:37 | j | OutRef.cs:28:37:28:37 | SSA param(j) | OutRef.cs:28:37:28:37 | SSA param(j) | | OutRef.cs:28:37:28:37 | j | OutRef.cs:31:9:31:13 | SSA def(j) | OutRef.cs:31:9:31:13 | SSA def(j) | | OutRef.cs:34:27:34:27 | i | OutRef.cs:36:9:36:13 | SSA def(i) | OutRef.cs:36:9:36:13 | SSA def(i) | | OutRef.cs:34:38:34:38 | j | OutRef.cs:34:38:34:38 | SSA param(j) | OutRef.cs:34:38:34:38 | SSA param(j) | | OutRef.cs:39:24:39:24 | b | OutRef.cs:39:24:39:24 | SSA param(b) | OutRef.cs:39:24:39:24 | SSA param(b) | -| OutRef.cs:39:35:39:35 | j | OutRef.cs:39:10:39:17 | SSA phi(j) | OutRef.cs:39:35:39:35 | SSA param(j) | -| OutRef.cs:39:35:39:35 | j | OutRef.cs:39:10:39:17 | SSA phi(j) | OutRef.cs:42:13:42:17 | SSA def(j) | | OutRef.cs:39:35:39:35 | j | OutRef.cs:39:35:39:35 | SSA param(j) | OutRef.cs:39:35:39:35 | SSA param(j) | +| OutRef.cs:39:35:39:35 | j | OutRef.cs:41:9:42:18 | SSA phi(j) | OutRef.cs:39:35:39:35 | SSA param(j) | +| OutRef.cs:39:35:39:35 | j | OutRef.cs:41:9:42:18 | SSA phi(j) | OutRef.cs:42:13:42:17 | SSA def(j) | | OutRef.cs:39:35:39:35 | j | OutRef.cs:42:13:42:17 | SSA def(j) | OutRef.cs:42:13:42:17 | SSA def(j) | | Patterns.cs:7:16:7:16 | o | Patterns.cs:7:16:7:23 | SSA def(o) | Patterns.cs:7:16:7:23 | SSA def(o) | | Patterns.cs:8:22:8:23 | i1 | Patterns.cs:8:18:8:23 | SSA def(i1) | Patterns.cs:8:18:8:23 | SSA def(i1) | @@ -241,17 +252,17 @@ | Properties.cs:18:19:18:20 | this.xs | Properties.cs:16:17:16:17 | SSA entry def(this.xs) | Properties.cs:16:17:16:17 | SSA entry def(this.xs) | | Properties.cs:18:19:18:20 | this.xs | Properties.cs:19:9:19:13 | SSA call def(this.xs) | Properties.cs:16:17:16:17 | SSA entry def(this.xs) | | Properties.cs:18:19:18:20 | this.xs | Properties.cs:19:9:19:13 | SSA call def(this.xs) | Properties.cs:19:9:19:13 | SSA call def(this.xs) | +| Properties.cs:18:19:18:20 | this.xs | Properties.cs:21:9:22:18 | SSA phi(this.xs) | Properties.cs:16:17:16:17 | SSA entry def(this.xs) | +| Properties.cs:18:19:18:20 | this.xs | Properties.cs:21:9:22:18 | SSA phi(this.xs) | Properties.cs:19:9:19:13 | SSA call def(this.xs) | +| Properties.cs:18:19:18:20 | this.xs | Properties.cs:21:9:22:18 | SSA phi(this.xs) | Properties.cs:22:13:22:17 | SSA call def(this.xs) | | Properties.cs:18:19:18:20 | this.xs | Properties.cs:22:13:22:17 | SSA call def(this.xs) | Properties.cs:16:17:16:17 | SSA entry def(this.xs) | | Properties.cs:18:19:18:20 | this.xs | Properties.cs:22:13:22:17 | SSA call def(this.xs) | Properties.cs:19:9:19:13 | SSA call def(this.xs) | | Properties.cs:18:19:18:20 | this.xs | Properties.cs:22:13:22:17 | SSA call def(this.xs) | Properties.cs:22:13:22:17 | SSA call def(this.xs) | -| Properties.cs:18:19:18:20 | this.xs | Properties.cs:23:9:23:20 | SSA phi(this.xs) | Properties.cs:16:17:16:17 | SSA entry def(this.xs) | -| Properties.cs:18:19:18:20 | this.xs | Properties.cs:23:9:23:20 | SSA phi(this.xs) | Properties.cs:19:9:19:13 | SSA call def(this.xs) | -| Properties.cs:18:19:18:20 | this.xs | Properties.cs:23:9:23:20 | SSA phi(this.xs) | Properties.cs:22:13:22:17 | SSA call def(this.xs) | | Properties.cs:18:19:18:20 | this.xs | Properties.cs:24:9:24:23 | SSA def(this.xs) | Properties.cs:24:9:24:23 | SSA def(this.xs) | | Properties.cs:30:13:30:13 | f | Properties.cs:30:13:30:32 | SSA def(f) | Properties.cs:30:13:30:32 | SSA def(f) | +| Properties.cs:30:13:30:13 | f | Properties.cs:48:9:49:33 | SSA phi(f) | Properties.cs:30:13:30:32 | SSA def(f) | +| Properties.cs:30:13:30:13 | f | Properties.cs:48:9:49:33 | SSA phi(f) | Properties.cs:49:13:49:32 | SSA def(f) | | Properties.cs:30:13:30:13 | f | Properties.cs:49:13:49:32 | SSA def(f) | Properties.cs:49:13:49:32 | SSA def(f) | -| Properties.cs:30:13:30:13 | f | Properties.cs:50:9:50:17 | SSA phi(f) | Properties.cs:30:13:30:32 | SSA def(f) | -| Properties.cs:30:13:30:13 | f | Properties.cs:50:9:50:17 | SSA phi(f) | Properties.cs:49:13:49:32 | SSA def(f) | | Properties.cs:31:19:31:22 | f.xs | Properties.cs:30:13:30:32 | SSA qualifier def(f.xs) | Properties.cs:30:13:30:32 | SSA qualifier def(f.xs) | | Properties.cs:31:19:31:22 | f.xs | Properties.cs:34:9:34:16 | SSA call def(f.xs) | Properties.cs:30:13:30:32 | SSA qualifier def(f.xs) | | Properties.cs:31:19:31:22 | f.xs | Properties.cs:34:9:34:16 | SSA call def(f.xs) | Properties.cs:34:9:34:16 | SSA call def(f.xs) | @@ -259,9 +270,9 @@ | Properties.cs:31:19:31:22 | f.xs | Properties.cs:38:9:38:13 | SSA call def(f.xs) | Properties.cs:34:9:34:16 | SSA call def(f.xs) | | Properties.cs:31:19:31:22 | f.xs | Properties.cs:38:9:38:13 | SSA call def(f.xs) | Properties.cs:38:9:38:13 | SSA call def(f.xs) | | Properties.cs:31:19:31:22 | f.xs | Properties.cs:45:9:45:25 | SSA def(f.xs) | Properties.cs:45:9:45:25 | SSA def(f.xs) | +| Properties.cs:31:19:31:22 | f.xs | Properties.cs:48:9:49:33 | SSA phi(f.xs) | Properties.cs:45:9:45:25 | SSA def(f.xs) | +| Properties.cs:31:19:31:22 | f.xs | Properties.cs:48:9:49:33 | SSA phi(f.xs) | Properties.cs:49:13:49:32 | SSA qualifier def(f.xs) | | Properties.cs:31:19:31:22 | f.xs | Properties.cs:49:13:49:32 | SSA qualifier def(f.xs) | Properties.cs:49:13:49:32 | SSA qualifier def(f.xs) | -| Properties.cs:31:19:31:22 | f.xs | Properties.cs:50:9:50:17 | SSA phi(f.xs) | Properties.cs:45:9:45:25 | SSA def(f.xs) | -| Properties.cs:31:19:31:22 | f.xs | Properties.cs:50:9:50:17 | SSA phi(f.xs) | Properties.cs:49:13:49:32 | SSA qualifier def(f.xs) | | Properties.cs:32:15:32:15 | z | Properties.cs:47:9:47:14 | SSA def(z) | Properties.cs:47:9:47:14 | SSA def(z) | | Properties.cs:32:19:32:20 | this.xs | Properties.cs:28:17:28:17 | SSA entry def(this.xs) | Properties.cs:28:17:28:17 | SSA entry def(this.xs) | | Properties.cs:32:19:32:20 | this.xs | Properties.cs:34:9:34:16 | SSA call def(this.xs) | Properties.cs:28:17:28:17 | SSA entry def(this.xs) | @@ -280,16 +291,16 @@ | Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:38:9:38:13 | SSA call def(Properties.stat) | Properties.cs:30:17:30:32 | SSA call def(Properties.stat) | | Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:38:9:38:13 | SSA call def(Properties.stat) | Properties.cs:34:9:34:16 | SSA call def(Properties.stat) | | Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:38:9:38:13 | SSA call def(Properties.stat) | Properties.cs:38:9:38:13 | SSA call def(Properties.stat) | +| Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:48:9:49:33 | SSA phi(Properties.stat) | Properties.cs:28:17:28:17 | SSA entry def(Properties.stat) | +| Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:48:9:49:33 | SSA phi(Properties.stat) | Properties.cs:30:17:30:32 | SSA call def(Properties.stat) | +| Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:48:9:49:33 | SSA phi(Properties.stat) | Properties.cs:34:9:34:16 | SSA call def(Properties.stat) | +| Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:48:9:49:33 | SSA phi(Properties.stat) | Properties.cs:38:9:38:13 | SSA call def(Properties.stat) | +| Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:48:9:49:33 | SSA phi(Properties.stat) | Properties.cs:49:17:49:32 | SSA call def(Properties.stat) | | Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:49:17:49:32 | SSA call def(Properties.stat) | Properties.cs:28:17:28:17 | SSA entry def(Properties.stat) | | Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:49:17:49:32 | SSA call def(Properties.stat) | Properties.cs:30:17:30:32 | SSA call def(Properties.stat) | | Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:49:17:49:32 | SSA call def(Properties.stat) | Properties.cs:34:9:34:16 | SSA call def(Properties.stat) | | Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:49:17:49:32 | SSA call def(Properties.stat) | Properties.cs:38:9:38:13 | SSA call def(Properties.stat) | | Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:49:17:49:32 | SSA call def(Properties.stat) | Properties.cs:49:17:49:32 | SSA call def(Properties.stat) | -| Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:50:9:50:17 | SSA phi(Properties.stat) | Properties.cs:28:17:28:17 | SSA entry def(Properties.stat) | -| Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:50:9:50:17 | SSA phi(Properties.stat) | Properties.cs:30:17:30:32 | SSA call def(Properties.stat) | -| Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:50:9:50:17 | SSA phi(Properties.stat) | Properties.cs:34:9:34:16 | SSA call def(Properties.stat) | -| Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:50:9:50:17 | SSA phi(Properties.stat) | Properties.cs:38:9:38:13 | SSA call def(Properties.stat) | -| Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:50:9:50:17 | SSA phi(Properties.stat) | Properties.cs:49:17:49:32 | SSA call def(Properties.stat) | | Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:51:9:51:24 | SSA call def(Properties.stat) | Properties.cs:28:17:28:17 | SSA entry def(Properties.stat) | | Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:51:9:51:24 | SSA call def(Properties.stat) | Properties.cs:30:17:30:32 | SSA call def(Properties.stat) | | Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:51:9:51:24 | SSA call def(Properties.stat) | Properties.cs:34:9:34:16 | SSA call def(Properties.stat) | @@ -297,8 +308,8 @@ | Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:51:9:51:24 | SSA call def(Properties.stat) | Properties.cs:49:17:49:32 | SSA call def(Properties.stat) | | Properties.cs:33:19:33:22 | Properties.stat | Properties.cs:51:9:51:24 | SSA call def(Properties.stat) | Properties.cs:51:9:51:24 | SSA call def(Properties.stat) | | Properties.cs:61:23:61:23 | i | Properties.cs:61:23:61:23 | SSA param(i) | Properties.cs:61:23:61:23 | SSA param(i) | -| Properties.cs:61:23:61:23 | i | Properties.cs:63:16:63:16 | SSA phi(i) | Properties.cs:61:23:61:23 | SSA param(i) | -| Properties.cs:61:23:61:23 | i | Properties.cs:63:16:63:16 | SSA phi(i) | Properties.cs:63:16:63:18 | SSA def(i) | +| Properties.cs:61:23:61:23 | i | Properties.cs:63:9:66:9 | SSA phi(i) | Properties.cs:61:23:61:23 | SSA param(i) | +| Properties.cs:61:23:61:23 | i | Properties.cs:63:9:66:9 | SSA phi(i) | Properties.cs:63:16:63:18 | SSA def(i) | | Properties.cs:61:23:61:23 | i | Properties.cs:63:16:63:18 | SSA def(i) | Properties.cs:63:16:63:18 | SSA def(i) | | Properties.cs:65:24:65:31 | this.LoopProp | Properties.cs:61:17:61:17 | SSA entry def(this.LoopProp) | Properties.cs:61:17:61:17 | SSA entry def(this.LoopProp) | | Properties.cs:67:21:67:38 | this.SingleAccessedProp | Properties.cs:61:17:61:17 | SSA entry def(this.SingleAccessedProp) | Properties.cs:61:17:61:17 | SSA entry def(this.SingleAccessedProp) | @@ -322,59 +333,59 @@ | Properties.cs:114:20:114:29 | this.Props | Properties.cs:108:10:108:10 | SSA entry def(this.Props) | Properties.cs:108:10:108:10 | SSA entry def(this.Props) | | Properties.cs:114:20:114:29 | this.Props | Properties.cs:113:9:113:22 | SSA call def(this.Props) | Properties.cs:108:10:108:10 | SSA entry def(this.Props) | | Properties.cs:114:20:114:29 | this.Props | Properties.cs:113:9:113:22 | SSA call def(this.Props) | Properties.cs:113:9:113:22 | SSA call def(this.Props) | -| Properties.cs:114:20:114:35 | this.Props.Props | Properties.cs:108:10:108:10 | SSA qualifier def(this.Props.Props) | Properties.cs:108:10:108:10 | SSA qualifier def(this.Props.Props) | -| Properties.cs:114:20:114:35 | this.Props.Props | Properties.cs:113:9:113:22 | SSA call def(this.Props.Props) | Properties.cs:108:10:108:10 | SSA qualifier def(this.Props.Props) | +| Properties.cs:114:20:114:35 | this.Props.Props | Properties.cs:108:10:108:10 | SSA entry def(this.Props.Props) | Properties.cs:108:10:108:10 | SSA entry def(this.Props.Props) | +| Properties.cs:114:20:114:35 | this.Props.Props | Properties.cs:113:9:113:22 | SSA call def(this.Props.Props) | Properties.cs:108:10:108:10 | SSA entry def(this.Props.Props) | | Properties.cs:114:20:114:35 | this.Props.Props | Properties.cs:113:9:113:22 | SSA call def(this.Props.Props) | Properties.cs:113:9:113:22 | SSA call def(this.Props.Props) | -| Properties.cs:115:21:115:39 | this.Props.Props.xs | Properties.cs:108:10:108:10 | SSA qualifier def(this.Props.Props.xs) | Properties.cs:108:10:108:10 | SSA qualifier def(this.Props.Props.xs) | -| Properties.cs:115:21:115:39 | this.Props.Props.xs | Properties.cs:113:9:113:22 | SSA qualifier def(this.Props.Props.xs) | Properties.cs:108:10:108:10 | SSA qualifier def(this.Props.Props.xs) | +| Properties.cs:115:21:115:39 | this.Props.Props.xs | Properties.cs:108:10:108:10 | SSA entry def(this.Props.Props.xs) | Properties.cs:108:10:108:10 | SSA entry def(this.Props.Props.xs) | +| Properties.cs:115:21:115:39 | this.Props.Props.xs | Properties.cs:113:9:113:22 | SSA qualifier def(this.Props.Props.xs) | Properties.cs:108:10:108:10 | SSA entry def(this.Props.Props.xs) | | Properties.cs:115:21:115:39 | this.Props.Props.xs | Properties.cs:113:9:113:22 | SSA qualifier def(this.Props.Props.xs) | Properties.cs:113:9:113:22 | SSA qualifier def(this.Props.Props.xs) | | Test.cs:5:15:5:20 | param1 | Test.cs:5:15:5:20 | SSA param(param1) | Test.cs:5:15:5:20 | SSA param(param1) | -| Test.cs:5:15:5:20 | param1 | Test.cs:25:16:25:16 | SSA phi(param1) | Test.cs:5:15:5:20 | SSA param(param1) | -| Test.cs:5:15:5:20 | param1 | Test.cs:25:16:25:16 | SSA phi(param1) | Test.cs:27:17:27:24 | SSA def(param1) | +| Test.cs:5:15:5:20 | param1 | Test.cs:25:9:32:9 | SSA phi(param1) | Test.cs:5:15:5:20 | SSA param(param1) | +| Test.cs:5:15:5:20 | param1 | Test.cs:25:9:32:9 | SSA phi(param1) | Test.cs:5:15:5:20 | SSA param(param1) | +| Test.cs:5:15:5:20 | param1 | Test.cs:25:9:32:9 | SSA phi(param1) | Test.cs:27:17:27:24 | SSA def(param1) | +| Test.cs:5:15:5:20 | param1 | Test.cs:25:9:32:9 | SSA phi(param1) | Test.cs:27:17:27:24 | SSA def(param1) | | Test.cs:5:15:5:20 | param1 | Test.cs:27:17:27:24 | SSA def(param1) | Test.cs:27:17:27:24 | SSA def(param1) | -| Test.cs:5:15:5:20 | param1 | Test.cs:33:9:33:19 | SSA phi(param1) | Test.cs:5:15:5:20 | SSA param(param1) | -| Test.cs:5:15:5:20 | param1 | Test.cs:33:9:33:19 | SSA phi(param1) | Test.cs:27:17:27:24 | SSA def(param1) | -| Test.cs:5:15:5:20 | param1 | Test.cs:39:9:42:9 | SSA phi(param1) | Test.cs:5:15:5:20 | SSA param(param1) | -| Test.cs:5:15:5:20 | param1 | Test.cs:39:9:42:9 | SSA phi(param1) | Test.cs:27:17:27:24 | SSA def(param1) | -| Test.cs:5:15:5:20 | param1 | Test.cs:39:9:42:9 | SSA phi(param1) | Test.cs:41:13:41:23 | SSA def(param1) | +| Test.cs:5:15:5:20 | param1 | Test.cs:39:22:39:22 | SSA phi(param1) | Test.cs:5:15:5:20 | SSA param(param1) | +| Test.cs:5:15:5:20 | param1 | Test.cs:39:22:39:22 | SSA phi(param1) | Test.cs:27:17:27:24 | SSA def(param1) | +| Test.cs:5:15:5:20 | param1 | Test.cs:39:22:39:22 | SSA phi(param1) | Test.cs:41:13:41:23 | SSA def(param1) | | Test.cs:5:15:5:20 | param1 | Test.cs:41:13:41:23 | SSA def(param1) | Test.cs:41:13:41:23 | SSA def(param1) | | Test.cs:5:67:5:72 | param2 | Test.cs:5:67:5:72 | SSA param(param2) | Test.cs:5:67:5:72 | SSA param(param2) | | Test.cs:7:9:7:13 | this.field | Test.cs:7:9:7:17 | SSA def(this.field) | Test.cs:7:9:7:17 | SSA def(this.field) | +| Test.cs:7:9:7:13 | this.field | Test.cs:11:9:23:9 | SSA phi(this.field) | Test.cs:7:9:7:17 | SSA def(this.field) | +| Test.cs:7:9:7:13 | this.field | Test.cs:11:9:23:9 | SSA phi(this.field) | Test.cs:21:13:21:22 | SSA def(this.field) | | Test.cs:7:9:7:13 | this.field | Test.cs:21:13:21:22 | SSA def(this.field) | Test.cs:21:13:21:22 | SSA def(this.field) | -| Test.cs:7:9:7:13 | this.field | Test.cs:24:9:24:15 | SSA phi(this.field) | Test.cs:7:9:7:17 | SSA def(this.field) | -| Test.cs:7:9:7:13 | this.field | Test.cs:24:9:24:15 | SSA phi(this.field) | Test.cs:21:13:21:22 | SSA def(this.field) | | Test.cs:8:13:8:13 | x | Test.cs:8:13:8:17 | SSA def(x) | Test.cs:8:13:8:17 | SSA def(x) | +| Test.cs:8:13:8:13 | x | Test.cs:11:9:23:9 | SSA phi(x) | Test.cs:8:13:8:17 | SSA def(x) | +| Test.cs:8:13:8:13 | x | Test.cs:11:9:23:9 | SSA phi(x) | Test.cs:14:17:14:19 | SSA def(x) | | Test.cs:8:13:8:13 | x | Test.cs:13:13:13:15 | SSA def(x) | Test.cs:13:13:13:15 | SSA def(x) | | Test.cs:8:13:8:13 | x | Test.cs:14:17:14:19 | SSA def(x) | Test.cs:14:17:14:19 | SSA def(x) | -| Test.cs:8:13:8:13 | x | Test.cs:24:9:24:15 | SSA phi(x) | Test.cs:8:13:8:17 | SSA def(x) | -| Test.cs:8:13:8:13 | x | Test.cs:24:9:24:15 | SSA phi(x) | Test.cs:14:17:14:19 | SSA def(x) | -| Test.cs:8:13:8:13 | x | Test.cs:34:25:34:25 | SSA phi(x) | Test.cs:8:13:8:17 | SSA def(x) | -| Test.cs:8:13:8:13 | x | Test.cs:34:25:34:25 | SSA phi(x) | Test.cs:14:17:14:19 | SSA def(x) | -| Test.cs:8:13:8:13 | x | Test.cs:34:25:34:25 | SSA phi(x) | Test.cs:36:13:36:18 | SSA def(x) | +| Test.cs:8:13:8:13 | x | Test.cs:34:25:34:30 | SSA phi(x) | Test.cs:8:13:8:17 | SSA def(x) | +| Test.cs:8:13:8:13 | x | Test.cs:34:25:34:30 | SSA phi(x) | Test.cs:14:17:14:19 | SSA def(x) | +| Test.cs:8:13:8:13 | x | Test.cs:34:25:34:30 | SSA phi(x) | Test.cs:36:13:36:18 | SSA def(x) | | Test.cs:8:13:8:13 | x | Test.cs:36:13:36:18 | SSA def(x) | Test.cs:36:13:36:18 | SSA def(x) | +| Test.cs:9:13:9:13 | y | Test.cs:11:9:23:9 | SSA phi(y) | Test.cs:14:13:14:19 | SSA def(y) | +| Test.cs:9:13:9:13 | y | Test.cs:11:9:23:9 | SSA phi(y) | Test.cs:20:13:20:18 | SSA def(y) | | Test.cs:9:13:9:13 | y | Test.cs:14:13:14:19 | SSA def(y) | Test.cs:14:13:14:19 | SSA def(y) | | Test.cs:9:13:9:13 | y | Test.cs:19:13:19:17 | SSA def(y) | Test.cs:19:13:19:17 | SSA def(y) | | Test.cs:9:13:9:13 | y | Test.cs:20:13:20:18 | SSA def(y) | Test.cs:20:13:20:18 | SSA def(y) | -| Test.cs:9:13:9:13 | y | Test.cs:24:9:24:15 | SSA phi(y) | Test.cs:14:13:14:19 | SSA def(y) | -| Test.cs:9:13:9:13 | y | Test.cs:24:9:24:15 | SSA phi(y) | Test.cs:20:13:20:18 | SSA def(y) | -| Test.cs:9:13:9:13 | y | Test.cs:25:16:25:16 | SSA phi(y) | Test.cs:14:13:14:19 | SSA def(y) | -| Test.cs:9:13:9:13 | y | Test.cs:25:16:25:16 | SSA phi(y) | Test.cs:20:13:20:18 | SSA def(y) | -| Test.cs:9:13:9:13 | y | Test.cs:25:16:25:16 | SSA phi(y) | Test.cs:31:13:31:18 | SSA def(y) | +| Test.cs:9:13:9:13 | y | Test.cs:25:9:32:9 | SSA phi(y) | Test.cs:14:13:14:19 | SSA def(y) | +| Test.cs:9:13:9:13 | y | Test.cs:25:9:32:9 | SSA phi(y) | Test.cs:20:13:20:18 | SSA def(y) | +| Test.cs:9:13:9:13 | y | Test.cs:25:9:32:9 | SSA phi(y) | Test.cs:31:13:31:18 | SSA def(y) | | Test.cs:9:13:9:13 | y | Test.cs:31:13:31:18 | SSA def(y) | Test.cs:31:13:31:18 | SSA def(y) | +| Test.cs:10:13:10:13 | z | Test.cs:11:9:23:9 | SSA phi(z) | Test.cs:15:13:15:17 | SSA def(z) | +| Test.cs:10:13:10:13 | z | Test.cs:11:9:23:9 | SSA phi(z) | Test.cs:22:13:22:17 | SSA def(z) | | Test.cs:10:13:10:13 | z | Test.cs:15:13:15:17 | SSA def(z) | Test.cs:15:13:15:17 | SSA def(z) | | Test.cs:10:13:10:13 | z | Test.cs:22:13:22:17 | SSA def(z) | Test.cs:22:13:22:17 | SSA def(z) | -| Test.cs:10:13:10:13 | z | Test.cs:24:9:24:15 | SSA phi(z) | Test.cs:15:13:15:17 | SSA def(z) | -| Test.cs:10:13:10:13 | z | Test.cs:24:9:24:15 | SSA phi(z) | Test.cs:22:13:22:17 | SSA def(z) | | Test.cs:34:18:34:18 | i | Test.cs:34:18:34:22 | SSA def(i) | Test.cs:34:18:34:22 | SSA def(i) | -| Test.cs:34:18:34:18 | i | Test.cs:34:25:34:25 | SSA phi(i) | Test.cs:34:18:34:22 | SSA def(i) | -| Test.cs:34:18:34:18 | i | Test.cs:34:25:34:25 | SSA phi(i) | Test.cs:34:33:34:35 | SSA def(i) | +| Test.cs:34:18:34:18 | i | Test.cs:34:25:34:30 | SSA phi(i) | Test.cs:34:18:34:22 | SSA def(i) | +| Test.cs:34:18:34:18 | i | Test.cs:34:25:34:30 | SSA phi(i) | Test.cs:34:33:34:35 | SSA def(i) | | Test.cs:34:18:34:18 | i | Test.cs:34:33:34:35 | SSA def(i) | Test.cs:34:33:34:35 | SSA def(i) | | Test.cs:39:22:39:22 | w | Test.cs:39:22:39:22 | SSA def(w) | Test.cs:39:22:39:22 | SSA def(w) | | Test.cs:46:16:46:18 | in | Test.cs:46:16:46:18 | SSA param(in) | Test.cs:46:16:46:18 | SSA param(in) | +| Test.cs:46:29:46:32 | out | Test.cs:48:9:55:9 | SSA phi(out) | Test.cs:50:13:50:20 | SSA def(out) | +| Test.cs:46:29:46:32 | out | Test.cs:48:9:55:9 | SSA phi(out) | Test.cs:54:13:54:20 | SSA def(out) | | Test.cs:46:29:46:32 | out | Test.cs:50:13:50:20 | SSA def(out) | Test.cs:50:13:50:20 | SSA def(out) | | Test.cs:46:29:46:32 | out | Test.cs:54:13:54:20 | SSA def(out) | Test.cs:54:13:54:20 | SSA def(out) | -| Test.cs:46:29:46:32 | out | Test.cs:56:9:56:19 | SSA phi(out) | Test.cs:50:13:50:20 | SSA def(out) | -| Test.cs:46:29:46:32 | out | Test.cs:56:9:56:19 | SSA phi(out) | Test.cs:54:13:54:20 | SSA def(out) | | Test.cs:56:13:56:17 | this.field | Test.cs:46:10:46:10 | SSA entry def(this.field) | Test.cs:46:10:46:10 | SSA entry def(this.field) | | Test.cs:56:13:56:17 | this.field | Test.cs:57:9:57:17 | SSA def(this.field) | Test.cs:57:9:57:17 | SSA def(this.field) | | Test.cs:62:16:62:16 | x | Test.cs:62:16:62:16 | SSA param(x) | Test.cs:62:16:62:16 | SSA param(x) | @@ -386,9 +397,9 @@ | Test.cs:76:60:76:61 | b5 | Test.cs:76:60:76:61 | SSA param(b5) | Test.cs:76:60:76:61 | SSA param(b5) | | Test.cs:76:69:76:70 | b6 | Test.cs:76:69:76:70 | SSA param(b6) | Test.cs:76:69:76:70 | SSA param(b6) | | Test.cs:78:13:78:13 | x | Test.cs:78:13:78:17 | SSA def(x) | Test.cs:78:13:78:17 | SSA def(x) | +| Test.cs:78:13:78:13 | x | Test.cs:102:9:110:9 | SSA phi(x) | Test.cs:78:13:78:17 | SSA def(x) | +| Test.cs:78:13:78:13 | x | Test.cs:102:9:110:9 | SSA phi(x) | Test.cs:108:13:108:17 | SSA def(x) | | Test.cs:78:13:78:13 | x | Test.cs:108:13:108:17 | SSA def(x) | Test.cs:108:13:108:17 | SSA def(x) | -| Test.cs:78:13:78:13 | x | Test.cs:113:9:116:9 | SSA phi(x) | Test.cs:78:13:78:17 | SSA def(x) | -| Test.cs:78:13:78:13 | x | Test.cs:113:9:116:9 | SSA phi(x) | Test.cs:108:13:108:17 | SSA def(x) | | Tuples.cs:10:14:10:14 | x | Tuples.cs:10:9:10:54 | SSA def(x) | Tuples.cs:10:9:10:54 | SSA def(x) | | Tuples.cs:10:14:10:14 | x | Tuples.cs:14:9:14:32 | SSA def(x) | Tuples.cs:14:9:14:32 | SSA def(x) | | Tuples.cs:10:14:10:14 | x | Tuples.cs:23:9:23:37 | SSA def(x) | Tuples.cs:23:9:23:37 | SSA def(x) | diff --git a/csharp/ql/test/library-tests/dataflow/ssa/SsaUltimateDef.ql b/csharp/ql/test/library-tests/dataflow/ssa/SsaUltimateDef.ql index 5d47aeb4b2c7..df565c0edc03 100644 --- a/csharp/ql/test/library-tests/dataflow/ssa/SsaUltimateDef.ql +++ b/csharp/ql/test/library-tests/dataflow/ssa/SsaUltimateDef.ql @@ -1,6 +1,6 @@ import csharp -from Ssa::SourceVariable v, Ssa::Definition def, Ssa::Definition u +from Ssa::SourceVariable v, SsaDefinition def, SsaDefinition u where u = def.getAnUltimateDefinition() and v = def.getSourceVariable() diff --git a/csharp/ql/test/library-tests/enums/Enums11.ql b/csharp/ql/test/library-tests/enums/Enums11.ql index 36b2c005a213..f6133517f7d6 100644 --- a/csharp/ql/test/library-tests/enums/Enums11.ql +++ b/csharp/ql/test/library-tests/enums/Enums11.ql @@ -6,7 +6,7 @@ import csharp from Expr e where - exists(Assignment a | a.getRValue() = e | + exists(Assignment a | a.getRightOperand() = e | a.getParent().(Field).getDeclaringType() instanceof Enum ) select e, e.getValue() diff --git a/csharp/ql/test/library-tests/expressions/AddEventExpr1.ql b/csharp/ql/test/library-tests/expressions/AddEventExpr1.ql index 48f6b41e19d2..e3c1530fb1a0 100644 --- a/csharp/ql/test/library-tests/expressions/AddEventExpr1.ql +++ b/csharp/ql/test/library-tests/expressions/AddEventExpr1.ql @@ -9,5 +9,5 @@ where c.hasName("LoginDialog") and e.getEnclosingCallable() = c and e.getTarget().hasName("Click") and - e.getLValue().getQualifier().(FieldAccess).getTarget().hasName("OkButton") + e.getLeftOperand().getQualifier().(FieldAccess).getTarget().hasName("OkButton") select c, e diff --git a/csharp/ql/test/library-tests/expressions/AnonymousMethod1.ql b/csharp/ql/test/library-tests/expressions/AnonymousMethod1.ql index 2c8268e87e19..74e9d3cb1ffe 100644 --- a/csharp/ql/test/library-tests/expressions/AnonymousMethod1.ql +++ b/csharp/ql/test/library-tests/expressions/AnonymousMethod1.ql @@ -6,7 +6,7 @@ import csharp from Assignment assign, AnonymousMethodExpr e where - assign.getLValue().(VariableAccess).getTarget().hasName("f7") and + assign.getLeftOperand().(VariableAccess).getTarget().hasName("f7") and e.getParent+() = assign and e.getNumberOfParameters() = 1 and e.getParameter(0).getType() instanceof IntType and diff --git a/csharp/ql/test/library-tests/expressions/AnonymousMethod2.ql b/csharp/ql/test/library-tests/expressions/AnonymousMethod2.ql index e9fbbf01a10b..8f0390b0f825 100644 --- a/csharp/ql/test/library-tests/expressions/AnonymousMethod2.ql +++ b/csharp/ql/test/library-tests/expressions/AnonymousMethod2.ql @@ -6,7 +6,7 @@ import csharp from Assignment assign, AnonymousMethodExpr e, Parameter p, ParameterAccess pa where - assign.getLValue().(VariableAccess).getTarget().hasName("f7") and + assign.getLeftOperand().(VariableAccess).getTarget().hasName("f7") and e.getParent+() = assign and e.getNumberOfParameters() = 1 and p = e.getParameter(0) and diff --git a/csharp/ql/test/library-tests/expressions/AnonymousMethod3.ql b/csharp/ql/test/library-tests/expressions/AnonymousMethod3.ql index e4c2e9ae9ba9..46d8907319d5 100644 --- a/csharp/ql/test/library-tests/expressions/AnonymousMethod3.ql +++ b/csharp/ql/test/library-tests/expressions/AnonymousMethod3.ql @@ -6,7 +6,7 @@ import csharp from Assignment assign, AnonymousMethodExpr e where - assign.getLValue().(VariableAccess).getTarget().hasName("f7") and + assign.getLeftOperand().(VariableAccess).getTarget().hasName("f7") and e.getParent+() = assign and e.getNumberOfParameters() = 1 and e.getType().(DelegateType).getReturnType() instanceof IntType diff --git a/csharp/ql/test/library-tests/expressions/AnonymousMethod4.ql b/csharp/ql/test/library-tests/expressions/AnonymousMethod4.ql index 4d424b65b84a..cca81c6b04e9 100644 --- a/csharp/ql/test/library-tests/expressions/AnonymousMethod4.ql +++ b/csharp/ql/test/library-tests/expressions/AnonymousMethod4.ql @@ -6,7 +6,7 @@ import csharp from Assignment assign, AnonymousMethodExpr e where - assign.getLValue().(VariableAccess).getTarget().hasName("f8") and + assign.getLeftOperand().(VariableAccess).getTarget().hasName("f8") and e.getParent+() = assign and e.hasNoParameters() select e, e diff --git a/csharp/ql/test/library-tests/expressions/AnonymousMethod5.ql b/csharp/ql/test/library-tests/expressions/AnonymousMethod5.ql index cbc6ac82ca7e..577d810dfad3 100644 --- a/csharp/ql/test/library-tests/expressions/AnonymousMethod5.ql +++ b/csharp/ql/test/library-tests/expressions/AnonymousMethod5.ql @@ -6,7 +6,7 @@ import csharp from Assignment assign, AnonymousMethodExpr e, LocalVariableAccess va where - assign.getLValue().(VariableAccess).getTarget().hasName("f8") and + assign.getLeftOperand().(VariableAccess).getTarget().hasName("f8") and e.getParent+() = assign and e.hasNoParameters() and va.getEnclosingStmt().getParent+() = e.getBody() and diff --git a/csharp/ql/test/library-tests/expressions/AnonymousObjectCreation1.ql b/csharp/ql/test/library-tests/expressions/AnonymousObjectCreation1.ql index 74d8cd27a948..c717aa260e07 100644 --- a/csharp/ql/test/library-tests/expressions/AnonymousObjectCreation1.ql +++ b/csharp/ql/test/library-tests/expressions/AnonymousObjectCreation1.ql @@ -6,11 +6,11 @@ import csharp from Assignment assign, AnonymousObjectCreation o, Assignment a, Property p where - assign.getLValue().(VariableAccess).getTarget().hasName("list2") and + assign.getLeftOperand().(VariableAccess).getTarget().hasName("list2") and o.getParent+() = assign and o.getInitializer().getMemberInitializer(0) = a and - a.getRValue().getValue() = "2" and - p = a.getLValue().(PropertyAccess).getTarget() and + a.getRightOperand().getValue() = "2" and + p = a.getLeftOperand().(PropertyAccess).getTarget() and p.hasName("i") and p.getDeclaringType() = o.getObjectType() select o diff --git a/csharp/ql/test/library-tests/expressions/AnonymousObjectCreation2.ql b/csharp/ql/test/library-tests/expressions/AnonymousObjectCreation2.ql index 5f9e16564b42..d55bf89d606b 100644 --- a/csharp/ql/test/library-tests/expressions/AnonymousObjectCreation2.ql +++ b/csharp/ql/test/library-tests/expressions/AnonymousObjectCreation2.ql @@ -6,11 +6,11 @@ import csharp from Assignment assign, AnonymousObjectCreation o, Assignment a, Property p where - assign.getLValue().(VariableAccess).getTarget().hasName("contacts2") and + assign.getLeftOperand().(VariableAccess).getTarget().hasName("contacts2") and o.getParent+() = assign and o.getInitializer().getMemberInitializer(0) = a and - a.getRValue().getValue() = "Chris Smith" and - p = a.getLValue().(PropertyAccess).getTarget() and + a.getRightOperand().getValue() = "Chris Smith" and + p = a.getLeftOperand().(PropertyAccess).getTarget() and p.hasName("Name") and p.getDeclaringType() = o.getObjectType() select o, p.getType().toString() diff --git a/csharp/ql/test/library-tests/expressions/AnonymousObjectCreation3.ql b/csharp/ql/test/library-tests/expressions/AnonymousObjectCreation3.ql index afa9ca0d3b29..6033bfed38ad 100644 --- a/csharp/ql/test/library-tests/expressions/AnonymousObjectCreation3.ql +++ b/csharp/ql/test/library-tests/expressions/AnonymousObjectCreation3.ql @@ -6,11 +6,11 @@ import csharp from Assignment assign, AnonymousObjectCreation o, Assignment a, Property p where - assign.getLValue().(VariableAccess).getTarget().hasName("contacts2") and + assign.getLeftOperand().(VariableAccess).getTarget().hasName("contacts2") and o.getParent+() = assign and o.getInitializer().getMemberInitializer(1) = a and - a.getRValue() instanceof ArrayCreation and - p = a.getLValue().(PropertyAccess).getTarget() and + a.getRightOperand() instanceof ArrayCreation and + p = a.getLeftOperand().(PropertyAccess).getTarget() and p.hasName("PhoneNumbers") and p.getDeclaringType() = o.getObjectType() select o, p.getType().getName() diff --git a/csharp/ql/test/library-tests/expressions/AnonymousObjectCreation4.ql b/csharp/ql/test/library-tests/expressions/AnonymousObjectCreation4.ql index b6354d1f4931..a52278839f2e 100644 --- a/csharp/ql/test/library-tests/expressions/AnonymousObjectCreation4.ql +++ b/csharp/ql/test/library-tests/expressions/AnonymousObjectCreation4.ql @@ -8,7 +8,7 @@ from Assignment assign, AnonymousObjectCreation o, Assignment a, AnonymousObjectCreation p, Assignment b where - assign.getLValue().(VariableAccess).getTarget().hasName("contacts2") and + assign.getLeftOperand().(VariableAccess).getTarget().hasName("contacts2") and o.getParent+() = assign and o.getInitializer().getMemberInitializer(1) = a and p.getParent+() = assign and diff --git a/csharp/ql/test/library-tests/expressions/ArrayCreation1.ql b/csharp/ql/test/library-tests/expressions/ArrayCreation1.ql index fba7a4036156..6f728347bff1 100644 --- a/csharp/ql/test/library-tests/expressions/ArrayCreation1.ql +++ b/csharp/ql/test/library-tests/expressions/ArrayCreation1.ql @@ -6,8 +6,8 @@ import csharp from Assignment a, ArrayCreation e, ArrayInitializer i where - a.getLValue().(VariableAccess).getTarget().hasName("is1") and - e = a.getRValue() and + a.getLeftOperand().(VariableAccess).getTarget().hasName("is1") and + e = a.getRightOperand() and not e.isImplicitlyTyped() and i = e.getInitializer() and e.isImplicitlySized() and diff --git a/csharp/ql/test/library-tests/expressions/ArrayCreation10.ql b/csharp/ql/test/library-tests/expressions/ArrayCreation10.ql index d8a1df128671..951ca22c0c2f 100644 --- a/csharp/ql/test/library-tests/expressions/ArrayCreation10.ql +++ b/csharp/ql/test/library-tests/expressions/ArrayCreation10.ql @@ -6,9 +6,9 @@ import csharp from Assignment a, ArrayCreation e, CastExpr cast where - a.getLValue().(VariableAccess).getTarget().hasName("os") and + a.getLeftOperand().(VariableAccess).getTarget().hasName("os") and e.getEnclosingCallable().hasName("MainElementAccess") and - e = a.getRValue() and + e = a.getRightOperand() and not e.isImplicitlyTyped() and e.isImplicitlySized() and e.getArrayType().getDimension() = 1 and diff --git a/csharp/ql/test/library-tests/expressions/ArrayCreation2.ql b/csharp/ql/test/library-tests/expressions/ArrayCreation2.ql index ae56d5798396..88ce79bc91e5 100644 --- a/csharp/ql/test/library-tests/expressions/ArrayCreation2.ql +++ b/csharp/ql/test/library-tests/expressions/ArrayCreation2.ql @@ -6,8 +6,8 @@ import csharp from Assignment a, ArrayCreation e, ArrayInitializer i where - a.getLValue().(VariableAccess).getTarget().hasName("is2") and - e = a.getRValue() and + a.getLeftOperand().(VariableAccess).getTarget().hasName("is2") and + e = a.getRightOperand() and not e.isImplicitlyTyped() and i = e.getInitializer() and e.getNumberOfLengthArguments() = 2 and diff --git a/csharp/ql/test/library-tests/expressions/ArrayCreation3.ql b/csharp/ql/test/library-tests/expressions/ArrayCreation3.ql index efe626dab088..0da55f864798 100644 --- a/csharp/ql/test/library-tests/expressions/ArrayCreation3.ql +++ b/csharp/ql/test/library-tests/expressions/ArrayCreation3.ql @@ -6,8 +6,8 @@ import csharp from Assignment a, ArrayCreation e where - a.getLValue().(VariableAccess).getTarget().hasName("is3") and - e = a.getRValue() and + a.getLeftOperand().(VariableAccess).getTarget().hasName("is3") and + e = a.getRightOperand() and not e.isImplicitlyTyped() and not e.hasInitializer() and e.getNumberOfLengthArguments() = 1 and diff --git a/csharp/ql/test/library-tests/expressions/ArrayCreation4.ql b/csharp/ql/test/library-tests/expressions/ArrayCreation4.ql index 2a0dd5312833..b79ec3f7bd6d 100644 --- a/csharp/ql/test/library-tests/expressions/ArrayCreation4.ql +++ b/csharp/ql/test/library-tests/expressions/ArrayCreation4.ql @@ -6,8 +6,8 @@ import csharp from Assignment a, ArrayCreation e where - a.getLValue().(VariableAccess).getTarget().hasName("is4") and - e = a.getRValue() and + a.getLeftOperand().(VariableAccess).getTarget().hasName("is4") and + e = a.getRightOperand() and not e.isImplicitlyTyped() and not e.hasInitializer() and e.getNumberOfLengthArguments() = 2 and diff --git a/csharp/ql/test/library-tests/expressions/ArrayCreation5.ql b/csharp/ql/test/library-tests/expressions/ArrayCreation5.ql index 04c29cafba8c..88df5bef175c 100644 --- a/csharp/ql/test/library-tests/expressions/ArrayCreation5.ql +++ b/csharp/ql/test/library-tests/expressions/ArrayCreation5.ql @@ -6,8 +6,8 @@ import csharp from Assignment a, ArrayCreation e, int i where - a.getLValue().(VariableAccess).getTarget().hasName("is5") and - e = a.getRValue() and + a.getLeftOperand().(VariableAccess).getTarget().hasName("is5") and + e = a.getRightOperand() and e.isImplicitlyTyped() and e.isImplicitlySized() and e.getArrayType().getDimension() = 1 and diff --git a/csharp/ql/test/library-tests/expressions/ArrayCreation6.ql b/csharp/ql/test/library-tests/expressions/ArrayCreation6.ql index 7ca6bbe9668f..237900bbe7c9 100644 --- a/csharp/ql/test/library-tests/expressions/ArrayCreation6.ql +++ b/csharp/ql/test/library-tests/expressions/ArrayCreation6.ql @@ -6,8 +6,8 @@ import csharp from Assignment a, ArrayCreation e where - a.getLValue().(VariableAccess).getTarget().hasName("is6") and - e = a.getRValue() and + a.getLeftOperand().(VariableAccess).getTarget().hasName("is6") and + e = a.getRightOperand() and e.isImplicitlyTyped() and e.isImplicitlySized() and e.getArrayType().getDimension() = 1 and diff --git a/csharp/ql/test/library-tests/expressions/ArrayCreation7.ql b/csharp/ql/test/library-tests/expressions/ArrayCreation7.ql index e34253a4f02b..a466195a0b1e 100644 --- a/csharp/ql/test/library-tests/expressions/ArrayCreation7.ql +++ b/csharp/ql/test/library-tests/expressions/ArrayCreation7.ql @@ -6,8 +6,8 @@ import csharp from Assignment a, ArrayCreation e where - a.getLValue().(VariableAccess).getTarget().hasName("is7") and - e = a.getRValue() and + a.getLeftOperand().(VariableAccess).getTarget().hasName("is7") and + e = a.getRightOperand() and e.isImplicitlyTyped() and e.isImplicitlySized() and e.getArrayType().getDimension() = 1 and diff --git a/csharp/ql/test/library-tests/expressions/ArrayCreation8.ql b/csharp/ql/test/library-tests/expressions/ArrayCreation8.ql index cc1fd366db13..8eb810247c0a 100644 --- a/csharp/ql/test/library-tests/expressions/ArrayCreation8.ql +++ b/csharp/ql/test/library-tests/expressions/ArrayCreation8.ql @@ -6,8 +6,8 @@ import csharp from Assignment a, ArrayCreation e where - a.getLValue().(VariableAccess).getTarget().hasName("contacts2") and - e = a.getRValue() and + a.getLeftOperand().(VariableAccess).getTarget().hasName("contacts2") and + e = a.getRightOperand() and e.isImplicitlyTyped() and e.isImplicitlySized() and e.getArrayType().getDimension() = 1 and diff --git a/csharp/ql/test/library-tests/expressions/ArrayCreation9.ql b/csharp/ql/test/library-tests/expressions/ArrayCreation9.ql index fc4b561c170f..55ba1d1edb11 100644 --- a/csharp/ql/test/library-tests/expressions/ArrayCreation9.ql +++ b/csharp/ql/test/library-tests/expressions/ArrayCreation9.ql @@ -6,8 +6,8 @@ import csharp from Assignment a, ArrayCreation e where - a.getLValue().(VariableAccess).getTarget().hasName("t") and - e = a.getRValue() and + a.getLeftOperand().(VariableAccess).getTarget().hasName("t") and + e = a.getRightOperand() and e.isImplicitlyTyped() and e.isImplicitlySized() and e.getArrayType().getDimension() = 1 and diff --git a/csharp/ql/test/library-tests/expressions/Lambda1.ql b/csharp/ql/test/library-tests/expressions/Lambda1.ql index f4787c584f32..4e4d17b9d244 100644 --- a/csharp/ql/test/library-tests/expressions/Lambda1.ql +++ b/csharp/ql/test/library-tests/expressions/Lambda1.ql @@ -6,7 +6,7 @@ import csharp from Assignment assign, LambdaExpr e where - assign.getLValue().(VariableAccess).getTarget().hasName("f1") and + assign.getLeftOperand().(VariableAccess).getTarget().hasName("f1") and e.getParent+() = assign and e.getNumberOfParameters() = 1 and e.getParameter(0).getType() instanceof ShortType and diff --git a/csharp/ql/test/library-tests/expressions/Lambda2.ql b/csharp/ql/test/library-tests/expressions/Lambda2.ql index 5fff4bd2cf62..ff5c06ec6704 100644 --- a/csharp/ql/test/library-tests/expressions/Lambda2.ql +++ b/csharp/ql/test/library-tests/expressions/Lambda2.ql @@ -6,7 +6,7 @@ import csharp from Assignment assign, LambdaExpr e where - assign.getLValue().(VariableAccess).getTarget().hasName("f2") and + assign.getLeftOperand().(VariableAccess).getTarget().hasName("f2") and e.getParent+() = assign and e.getNumberOfParameters() = 1 and e.getParameter(0).getType() instanceof IntType and diff --git a/csharp/ql/test/library-tests/expressions/Lambda3.ql b/csharp/ql/test/library-tests/expressions/Lambda3.ql index 32aa919cd205..46d3a411b36f 100644 --- a/csharp/ql/test/library-tests/expressions/Lambda3.ql +++ b/csharp/ql/test/library-tests/expressions/Lambda3.ql @@ -6,7 +6,7 @@ import csharp from Assignment assign, LambdaExpr e where - assign.getLValue().(VariableAccess).getTarget().hasName("f3") and + assign.getLeftOperand().(VariableAccess).getTarget().hasName("f3") and e.getParent+() = assign and e.getNumberOfParameters() = 1 and e.getParameter(0).getType() instanceof IntType and diff --git a/csharp/ql/test/library-tests/expressions/Lambda4.ql b/csharp/ql/test/library-tests/expressions/Lambda4.ql index ca7eb7a4207b..69ac40ad932f 100644 --- a/csharp/ql/test/library-tests/expressions/Lambda4.ql +++ b/csharp/ql/test/library-tests/expressions/Lambda4.ql @@ -6,7 +6,7 @@ import csharp from Assignment assign, LambdaExpr e where - assign.getLValue().(VariableAccess).getTarget().hasName("f4") and + assign.getLeftOperand().(VariableAccess).getTarget().hasName("f4") and e.getParent+() = assign and e.getNumberOfParameters() = 1 and e.getParameter(0).getType() instanceof IntType and diff --git a/csharp/ql/test/library-tests/expressions/Lambda5.ql b/csharp/ql/test/library-tests/expressions/Lambda5.ql index cc577aa85cb7..3836ca4effd0 100644 --- a/csharp/ql/test/library-tests/expressions/Lambda5.ql +++ b/csharp/ql/test/library-tests/expressions/Lambda5.ql @@ -6,7 +6,7 @@ import csharp from Assignment assign, LambdaExpr e where - assign.getLValue().(VariableAccess).getTarget().hasName("f5") and + assign.getLeftOperand().(VariableAccess).getTarget().hasName("f5") and e.getParent+() = assign and e.getNumberOfParameters() = 2 and e.getParameter(0).getType() instanceof IntType and diff --git a/csharp/ql/test/library-tests/expressions/Lambda6.ql b/csharp/ql/test/library-tests/expressions/Lambda6.ql index c584e4f6c093..4a6ee3128346 100644 --- a/csharp/ql/test/library-tests/expressions/Lambda6.ql +++ b/csharp/ql/test/library-tests/expressions/Lambda6.ql @@ -6,7 +6,7 @@ import csharp from Assignment assign, LambdaExpr e where - assign.getLValue().(VariableAccess).getTarget().hasName("f6") and + assign.getLeftOperand().(VariableAccess).getTarget().hasName("f6") and e.getParent+() = assign and e.getNumberOfParameters() = 0 and e.getType().(DelegateType).hasName("Unit") and diff --git a/csharp/ql/test/library-tests/expressions/ObjectCreation10.ql b/csharp/ql/test/library-tests/expressions/ObjectCreation10.ql index abd4a9d6ec6b..971654a95b3a 100644 --- a/csharp/ql/test/library-tests/expressions/ObjectCreation10.ql +++ b/csharp/ql/test/library-tests/expressions/ObjectCreation10.ql @@ -6,7 +6,7 @@ import csharp from Assignment a, CollectionInitializer i where - a.getLValue().(VariableAccess).getTarget().hasName("list1") and + a.getLeftOperand().(VariableAccess).getTarget().hasName("list1") and i.getParent+() = a and i.getElementInitializer(0).getArgument(0) instanceof AssignExpr select i.getAChild+() diff --git a/csharp/ql/test/library-tests/expressions/ObjectCreation11.ql b/csharp/ql/test/library-tests/expressions/ObjectCreation11.ql index c874735c3000..0265579ff677 100644 --- a/csharp/ql/test/library-tests/expressions/ObjectCreation11.ql +++ b/csharp/ql/test/library-tests/expressions/ObjectCreation11.ql @@ -6,7 +6,7 @@ import csharp from Assignment a, CollectionInitializer i, AnonymousObjectCreation o where - a.getLValue().(VariableAccess).getTarget().hasName("list2") and + a.getLeftOperand().(VariableAccess).getTarget().hasName("list2") and i.getParent+() = a and i.getElementInitializer(0).getArgument(0) = o select i, o diff --git a/csharp/ql/test/library-tests/expressions/ObjectCreation4.ql b/csharp/ql/test/library-tests/expressions/ObjectCreation4.ql index 5812397b11b6..6ec3e2ec327b 100644 --- a/csharp/ql/test/library-tests/expressions/ObjectCreation4.ql +++ b/csharp/ql/test/library-tests/expressions/ObjectCreation4.ql @@ -15,9 +15,9 @@ where cc.hasName("Point") and i = e.getInitializer() and a = i.getMemberInitializer(0) and - a.getLValue().(PropertyAccess).getTarget().hasName("X") and - a.getRValue().getValue() = "0" and + a.getLeftOperand().(PropertyAccess).getTarget().hasName("X") and + a.getRightOperand().getValue() = "0" and b = i.getMemberInitializer(1) and - b.getLValue().(PropertyAccess).getTarget().hasName("Y") and - b.getRValue().getValue() = "1" + b.getLeftOperand().(PropertyAccess).getTarget().hasName("Y") and + b.getRightOperand().getValue() = "1" select e, i, a, b diff --git a/csharp/ql/test/library-tests/expressions/ObjectCreation5.ql b/csharp/ql/test/library-tests/expressions/ObjectCreation5.ql index cf31f518ec73..e130da484d74 100644 --- a/csharp/ql/test/library-tests/expressions/ObjectCreation5.ql +++ b/csharp/ql/test/library-tests/expressions/ObjectCreation5.ql @@ -15,10 +15,10 @@ where cc.hasName("Point") and i = e.getInitializer() and a = i.getMemberInitializer(0) and - a.getLValue().(PropertyAccess).getTarget().hasName("X") and - a.getRValue().getValue() = "2" and + a.getLeftOperand().(PropertyAccess).getTarget().hasName("X") and + a.getRightOperand().getValue() = "2" and b = i.getMemberInitializer(1) and - b.getLValue().(PropertyAccess).getTarget().hasName("Y") and - b.getRValue().getValue() = "3" and + b.getLeftOperand().(PropertyAccess).getTarget().hasName("Y") and + b.getRightOperand().getValue() = "3" and i.getNumberOfMemberInitializers() = 2 select i, a, b diff --git a/csharp/ql/test/library-tests/expressions/ObjectCreation6.ql b/csharp/ql/test/library-tests/expressions/ObjectCreation6.ql index 11e771890ca2..529607c8d4ba 100644 --- a/csharp/ql/test/library-tests/expressions/ObjectCreation6.ql +++ b/csharp/ql/test/library-tests/expressions/ObjectCreation6.ql @@ -15,10 +15,10 @@ where cc.hasName("Rectangle") and i = e.getInitializer() and a = i.getMemberInitializer(0) and - a.getLValue().(PropertyAccess).getTarget().hasName("P1") and - a.getRValue() instanceof ObjectCreation and + a.getLeftOperand().(PropertyAccess).getTarget().hasName("P1") and + a.getRightOperand() instanceof ObjectCreation and b = i.getMemberInitializer(1) and - b.getLValue().(PropertyAccess).getTarget().hasName("P2") and - b.getRValue() instanceof ObjectCreation and + b.getLeftOperand().(PropertyAccess).getTarget().hasName("P2") and + b.getRightOperand() instanceof ObjectCreation and i.getNumberOfMemberInitializers() = 2 select i, a, b diff --git a/csharp/ql/test/library-tests/expressions/ObjectCreation7.ql b/csharp/ql/test/library-tests/expressions/ObjectCreation7.ql index ccb17515525e..404011f18968 100644 --- a/csharp/ql/test/library-tests/expressions/ObjectCreation7.ql +++ b/csharp/ql/test/library-tests/expressions/ObjectCreation7.ql @@ -15,10 +15,10 @@ where cc.hasName("Rectangle2") and i = e.getInitializer() and a = i.getMemberInitializer(0) and - a.getLValue().(PropertyAccess).getTarget().hasName("P1") and - a.getRValue() instanceof ObjectInitializer and + a.getLeftOperand().(PropertyAccess).getTarget().hasName("P1") and + a.getRightOperand() instanceof ObjectInitializer and b = i.getMemberInitializer(1) and - b.getLValue().(PropertyAccess).getTarget().hasName("P2") and - b.getRValue() instanceof ObjectInitializer and + b.getLeftOperand().(PropertyAccess).getTarget().hasName("P2") and + b.getRightOperand() instanceof ObjectInitializer and i.getNumberOfMemberInitializers() = 2 select m, e diff --git a/csharp/ql/test/library-tests/expressions/RemoveEventExpr1.ql b/csharp/ql/test/library-tests/expressions/RemoveEventExpr1.ql index 95b223ed6f4d..991fdd6e492c 100644 --- a/csharp/ql/test/library-tests/expressions/RemoveEventExpr1.ql +++ b/csharp/ql/test/library-tests/expressions/RemoveEventExpr1.ql @@ -9,5 +9,5 @@ where c.hasName("LoginDialog") and e.getEnclosingCallable() = c and e.getTarget().hasName("Click") and - e.getLValue().getQualifier().(FieldAccess).getTarget().hasName("CancelButton") + e.getLeftOperand().getQualifier().(FieldAccess).getTarget().hasName("CancelButton") select c, e diff --git a/csharp/ql/test/library-tests/goto/Goto1.expected b/csharp/ql/test/library-tests/goto/Goto1.expected index 137c1b7241c4..354941651647 100644 --- a/csharp/ql/test/library-tests/goto/Goto1.expected +++ b/csharp/ql/test/library-tests/goto/Goto1.expected @@ -1,51 +1,89 @@ -| goto.cs:2:7:2:10 | call to constructor Object | goto.cs:2:7:2:10 | {...} | semmle.label | successor | -| goto.cs:2:7:2:10 | call to method | goto.cs:2:7:2:10 | call to constructor Object | semmle.label | successor | -| goto.cs:2:7:2:10 | enter Goto | goto.cs:2:7:2:10 | this access | semmle.label | successor | -| goto.cs:2:7:2:10 | exit Goto (normal) | goto.cs:2:7:2:10 | exit Goto | semmle.label | successor | +| goto.cs:2:7:2:10 | After call to constructor Object | goto.cs:2:7:2:10 | {...} | semmle.label | successor | +| goto.cs:2:7:2:10 | After call to method | goto.cs:2:7:2:10 | Before call to constructor Object | semmle.label | successor | +| goto.cs:2:7:2:10 | Before call to constructor Object | goto.cs:2:7:2:10 | call to constructor Object | semmle.label | successor | +| goto.cs:2:7:2:10 | Before call to method | goto.cs:2:7:2:10 | this access | semmle.label | successor | +| goto.cs:2:7:2:10 | Entry | goto.cs:2:7:2:10 | Before call to method | semmle.label | successor | +| goto.cs:2:7:2:10 | Normal Exit | goto.cs:2:7:2:10 | Exit | semmle.label | successor | +| goto.cs:2:7:2:10 | call to constructor Object | goto.cs:2:7:2:10 | After call to constructor Object | semmle.label | successor | +| goto.cs:2:7:2:10 | call to method | goto.cs:2:7:2:10 | After call to method | semmle.label | successor | | goto.cs:2:7:2:10 | this access | goto.cs:2:7:2:10 | call to method | semmle.label | successor | -| goto.cs:2:7:2:10 | {...} | goto.cs:2:7:2:10 | exit Goto (normal) | semmle.label | successor | -| goto.cs:4:17:4:20 | enter Main | goto.cs:5:5:20:5 | {...} | semmle.label | successor | -| goto.cs:4:17:4:20 | exit Main (normal) | goto.cs:4:17:4:20 | exit Main | semmle.label | successor | +| goto.cs:2:7:2:10 | {...} | goto.cs:2:7:2:10 | Normal Exit | semmle.label | successor | +| goto.cs:4:17:4:20 | Entry | goto.cs:5:5:20:5 | {...} | semmle.label | successor | +| goto.cs:4:17:4:20 | Normal Exit | goto.cs:4:17:4:20 | Exit | semmle.label | successor | +| goto.cs:5:5:20:5 | After {...} | goto.cs:4:17:4:20 | Normal Exit | semmle.label | successor | | goto.cs:5:5:20:5 | {...} | goto.cs:6:9:8:9 | {...} | semmle.label | successor | | goto.cs:6:9:8:9 | {...} | goto.cs:7:13:7:14 | s1: | semmle.label | successor | -| goto.cs:7:13:7:14 | s1: | goto.cs:7:17:7:24 | goto ...; | semmle.label | successor | +| goto.cs:7:13:7:14 | s1: | goto.cs:7:17:7:24 | Before goto ...; | semmle.label | successor | +| goto.cs:7:17:7:24 | Before goto ...; | goto.cs:7:17:7:24 | goto ...; | semmle.label | successor | | goto.cs:7:17:7:24 | goto ...; | goto.cs:9:9:9:10 | s2: | semmle.label | goto | | goto.cs:9:9:9:10 | s2: | goto.cs:9:13:9:27 | ... ...; | semmle.label | successor | -| goto.cs:9:13:9:27 | ... ...; | goto.cs:9:24:9:26 | "5" | semmle.label | successor | -| goto.cs:9:20:9:26 | String s = ... | goto.cs:10:9:18:9 | switch (...) {...} | semmle.label | successor | +| goto.cs:9:13:9:27 | ... ...; | goto.cs:9:20:9:26 | Before String s = ... | semmle.label | successor | +| goto.cs:9:13:9:27 | After ... ...; | goto.cs:10:9:18:9 | switch (...) {...} | semmle.label | successor | +| goto.cs:9:20:9:20 | access to local variable s | goto.cs:9:24:9:26 | "5" | semmle.label | successor | +| goto.cs:9:20:9:26 | After String s = ... | goto.cs:9:13:9:27 | After ... ...; | semmle.label | successor | +| goto.cs:9:20:9:26 | Before String s = ... | goto.cs:9:20:9:20 | access to local variable s | semmle.label | successor | +| goto.cs:9:20:9:26 | String s = ... | goto.cs:9:20:9:26 | After String s = ... | semmle.label | successor | | goto.cs:9:24:9:26 | "5" | goto.cs:9:20:9:26 | String s = ... | semmle.label | successor | +| goto.cs:10:9:18:9 | After switch (...) {...} | goto.cs:19:9:19:10 | s9: | semmle.label | successor | | goto.cs:10:9:18:9 | switch (...) {...} | goto.cs:10:17:10:17 | access to local variable s | semmle.label | successor | | goto.cs:10:17:10:17 | access to local variable s | goto.cs:12:13:12:22 | case ...: | semmle.label | successor | +| goto.cs:12:13:12:22 | After case ...: [match] | goto.cs:12:24:12:25 | s3: | semmle.label | successor | +| goto.cs:12:13:12:22 | After case ...: [no-match] | goto.cs:13:13:13:21 | case ...: | semmle.label | successor | | goto.cs:12:13:12:22 | case ...: | goto.cs:12:18:12:21 | null | semmle.label | successor | -| goto.cs:12:18:12:21 | null | goto.cs:12:24:12:25 | s3: | semmle.label | match | -| goto.cs:12:18:12:21 | null | goto.cs:13:13:13:21 | case ...: | semmle.label | no-match | -| goto.cs:12:24:12:25 | s3: | goto.cs:12:38:12:40 | "1" | semmle.label | successor | -| goto.cs:12:28:12:41 | goto case ...; | goto.cs:13:13:13:21 | case ...: | semmle.label | goto | +| goto.cs:12:18:12:21 | After null [match] | goto.cs:12:13:12:22 | After case ...: [match] | semmle.label | match | +| goto.cs:12:18:12:21 | After null [no-match] | goto.cs:12:13:12:22 | After case ...: [no-match] | semmle.label | no-match | +| goto.cs:12:18:12:21 | null | goto.cs:12:18:12:21 | After null [match] | semmle.label | match | +| goto.cs:12:18:12:21 | null | goto.cs:12:18:12:21 | After null [no-match] | semmle.label | no-match | +| goto.cs:12:24:12:25 | s3: | goto.cs:12:28:12:41 | Before goto case ...; | semmle.label | successor | +| goto.cs:12:28:12:41 | Before goto case ...; | goto.cs:12:38:12:40 | "1" | semmle.label | successor | +| goto.cs:12:28:12:41 | goto case ...; | goto.cs:13:13:13:21 | After case ...: [match] | semmle.label | goto | | goto.cs:12:38:12:40 | "1" | goto.cs:12:28:12:41 | goto case ...; | semmle.label | successor | +| goto.cs:13:13:13:21 | After case ...: [match] | goto.cs:13:23:13:24 | s4: | semmle.label | successor | +| goto.cs:13:13:13:21 | After case ...: [no-match] | goto.cs:14:13:14:21 | case ...: | semmle.label | successor | | goto.cs:13:13:13:21 | case ...: | goto.cs:13:18:13:20 | "1" | semmle.label | successor | -| goto.cs:13:18:13:20 | "1" | goto.cs:13:23:13:24 | s4: | semmle.label | match | -| goto.cs:13:18:13:20 | "1" | goto.cs:14:13:14:21 | case ...: | semmle.label | no-match | -| goto.cs:13:23:13:24 | s4: | goto.cs:13:37:13:39 | "2" | semmle.label | successor | -| goto.cs:13:27:13:40 | goto case ...; | goto.cs:14:13:14:21 | case ...: | semmle.label | goto | +| goto.cs:13:18:13:20 | "1" | goto.cs:13:18:13:20 | After "1" [match] | semmle.label | match | +| goto.cs:13:18:13:20 | "1" | goto.cs:13:18:13:20 | After "1" [no-match] | semmle.label | no-match | +| goto.cs:13:18:13:20 | After "1" [match] | goto.cs:13:13:13:21 | After case ...: [match] | semmle.label | match | +| goto.cs:13:18:13:20 | After "1" [no-match] | goto.cs:13:13:13:21 | After case ...: [no-match] | semmle.label | no-match | +| goto.cs:13:23:13:24 | s4: | goto.cs:13:27:13:40 | Before goto case ...; | semmle.label | successor | +| goto.cs:13:27:13:40 | Before goto case ...; | goto.cs:13:37:13:39 | "2" | semmle.label | successor | +| goto.cs:13:27:13:40 | goto case ...; | goto.cs:14:13:14:21 | After case ...: [match] | semmle.label | goto | | goto.cs:13:37:13:39 | "2" | goto.cs:13:27:13:40 | goto case ...; | semmle.label | successor | +| goto.cs:14:13:14:21 | After case ...: [match] | goto.cs:14:23:14:24 | s5: | semmle.label | successor | +| goto.cs:14:13:14:21 | After case ...: [no-match] | goto.cs:15:13:15:21 | case ...: | semmle.label | successor | | goto.cs:14:13:14:21 | case ...: | goto.cs:14:18:14:20 | "2" | semmle.label | successor | -| goto.cs:14:18:14:20 | "2" | goto.cs:14:23:14:24 | s5: | semmle.label | match | -| goto.cs:14:18:14:20 | "2" | goto.cs:15:13:15:21 | case ...: | semmle.label | no-match | -| goto.cs:14:23:14:24 | s5: | goto.cs:14:27:14:34 | goto ...; | semmle.label | successor | +| goto.cs:14:18:14:20 | "2" | goto.cs:14:18:14:20 | After "2" [match] | semmle.label | match | +| goto.cs:14:18:14:20 | "2" | goto.cs:14:18:14:20 | After "2" [no-match] | semmle.label | no-match | +| goto.cs:14:18:14:20 | After "2" [match] | goto.cs:14:13:14:21 | After case ...: [match] | semmle.label | match | +| goto.cs:14:18:14:20 | After "2" [no-match] | goto.cs:14:13:14:21 | After case ...: [no-match] | semmle.label | no-match | +| goto.cs:14:23:14:24 | s5: | goto.cs:14:27:14:34 | Before goto ...; | semmle.label | successor | +| goto.cs:14:27:14:34 | Before goto ...; | goto.cs:14:27:14:34 | goto ...; | semmle.label | successor | | goto.cs:14:27:14:34 | goto ...; | goto.cs:9:9:9:10 | s2: | semmle.label | goto | +| goto.cs:15:13:15:21 | After case ...: [match] | goto.cs:15:23:15:24 | s6: | semmle.label | successor | +| goto.cs:15:13:15:21 | After case ...: [no-match] | goto.cs:16:13:16:21 | case ...: | semmle.label | successor | | goto.cs:15:13:15:21 | case ...: | goto.cs:15:18:15:20 | "3" | semmle.label | successor | -| goto.cs:15:18:15:20 | "3" | goto.cs:15:23:15:24 | s6: | semmle.label | match | -| goto.cs:15:18:15:20 | "3" | goto.cs:16:13:16:21 | case ...: | semmle.label | no-match | -| goto.cs:15:23:15:24 | s6: | goto.cs:15:27:15:39 | goto default; | semmle.label | successor | -| goto.cs:15:27:15:39 | goto default; | goto.cs:17:13:17:20 | default: | semmle.label | goto | +| goto.cs:15:18:15:20 | "3" | goto.cs:15:18:15:20 | After "3" [match] | semmle.label | match | +| goto.cs:15:18:15:20 | "3" | goto.cs:15:18:15:20 | After "3" [no-match] | semmle.label | no-match | +| goto.cs:15:18:15:20 | After "3" [match] | goto.cs:15:13:15:21 | After case ...: [match] | semmle.label | match | +| goto.cs:15:18:15:20 | After "3" [no-match] | goto.cs:15:13:15:21 | After case ...: [no-match] | semmle.label | no-match | +| goto.cs:15:23:15:24 | s6: | goto.cs:15:27:15:39 | Before goto default; | semmle.label | successor | +| goto.cs:15:27:15:39 | Before goto default; | goto.cs:15:27:15:39 | goto default; | semmle.label | successor | +| goto.cs:15:27:15:39 | goto default; | goto.cs:17:13:17:20 | After default: [match] | semmle.label | goto | +| goto.cs:16:13:16:21 | After case ...: [match] | goto.cs:16:23:16:24 | s7: | semmle.label | successor | +| goto.cs:16:13:16:21 | After case ...: [no-match] | goto.cs:17:13:17:20 | default: | semmle.label | successor | | goto.cs:16:13:16:21 | case ...: | goto.cs:16:18:16:20 | "4" | semmle.label | successor | -| goto.cs:16:18:16:20 | "4" | goto.cs:16:23:16:24 | s7: | semmle.label | match | -| goto.cs:16:18:16:20 | "4" | goto.cs:17:13:17:20 | default: | semmle.label | no-match | -| goto.cs:16:23:16:24 | s7: | goto.cs:16:27:16:32 | break; | semmle.label | successor | -| goto.cs:16:27:16:32 | break; | goto.cs:19:9:19:10 | s9: | semmle.label | break | -| goto.cs:17:13:17:20 | default: | goto.cs:17:22:17:23 | s8: | semmle.label | successor | -| goto.cs:17:22:17:23 | s8: | goto.cs:17:36:17:39 | null | semmle.label | successor | -| goto.cs:17:26:17:40 | goto case ...; | goto.cs:12:13:12:22 | case ...: | semmle.label | goto | +| goto.cs:16:18:16:20 | "4" | goto.cs:16:18:16:20 | After "4" [match] | semmle.label | match | +| goto.cs:16:18:16:20 | "4" | goto.cs:16:18:16:20 | After "4" [no-match] | semmle.label | no-match | +| goto.cs:16:18:16:20 | After "4" [match] | goto.cs:16:13:16:21 | After case ...: [match] | semmle.label | match | +| goto.cs:16:18:16:20 | After "4" [no-match] | goto.cs:16:13:16:21 | After case ...: [no-match] | semmle.label | no-match | +| goto.cs:16:23:16:24 | s7: | goto.cs:16:27:16:32 | Before break; | semmle.label | successor | +| goto.cs:16:27:16:32 | Before break; | goto.cs:16:27:16:32 | break; | semmle.label | successor | +| goto.cs:16:27:16:32 | break; | goto.cs:10:9:18:9 | After switch (...) {...} | semmle.label | break | +| goto.cs:17:13:17:20 | After default: [match] | goto.cs:17:22:17:23 | s8: | semmle.label | successor | +| goto.cs:17:13:17:20 | default: | goto.cs:17:13:17:20 | After default: [match] | semmle.label | match | +| goto.cs:17:22:17:23 | s8: | goto.cs:17:26:17:40 | Before goto case ...; | semmle.label | successor | +| goto.cs:17:26:17:40 | Before goto case ...; | goto.cs:17:36:17:39 | null | semmle.label | successor | +| goto.cs:17:26:17:40 | goto case ...; | goto.cs:12:13:12:22 | After case ...: [match] | semmle.label | goto | | goto.cs:17:36:17:39 | null | goto.cs:17:26:17:40 | goto case ...; | semmle.label | successor | | goto.cs:19:9:19:10 | s9: | goto.cs:19:12:19:12 | ; | semmle.label | successor | -| goto.cs:19:12:19:12 | ; | goto.cs:4:17:4:20 | exit Main (normal) | semmle.label | successor | +| goto.cs:19:12:19:12 | ; | goto.cs:5:5:20:5 | After {...} | semmle.label | successor | diff --git a/csharp/ql/test/library-tests/goto/Goto1.ql b/csharp/ql/test/library-tests/goto/Goto1.ql index 1a90e6eb1fb6..11639e28bcb9 100644 --- a/csharp/ql/test/library-tests/goto/Goto1.ql +++ b/csharp/ql/test/library-tests/goto/Goto1.ql @@ -1,8 +1,8 @@ import csharp -query predicate edges(ControlFlow::Node node, ControlFlow::Node successor, string attr, string val) { +query predicate edges(ControlFlowNode node, ControlFlowNode successor, string attr, string val) { not node.getAstNode().fromLibrary() and - exists(ControlFlow::SuccessorType t | successor = node.getASuccessorByType(t) | + exists(ControlFlow::SuccessorType t | successor = node.getASuccessor(t) | attr = "semmle.label" and val = t.toString() ) diff --git a/csharp/ql/test/library-tests/obinit/ObInit.expected b/csharp/ql/test/library-tests/obinit/ObInit.expected index 3d2c7df895fa..d55e1add0527 100644 --- a/csharp/ql/test/library-tests/obinit/ObInit.expected +++ b/csharp/ql/test/library-tests/obinit/ObInit.expected @@ -6,22 +6,62 @@ call | obinit.cs:9:16:9:16 | call to method | obinit.cs:2:18:2:18 | | obinit.cs:9:16:9:16 | A | | obinit.cs:15:16:15:16 | call to method | obinit.cs:14:18:14:18 | | obinit.cs:15:16:15:16 | B | cfg -| obinit.cs:2:18:2:18 | | obinit.cs:3:13:3:13 | access to field x | obinit.cs:3:13:3:17 | ... = ... | normal | 2 | -| obinit.cs:2:18:2:18 | | obinit.cs:3:13:3:13 | this access | obinit.cs:3:17:3:17 | 1 | normal | 0 | -| obinit.cs:2:18:2:18 | | obinit.cs:3:13:3:17 | ... = ... | obinit.cs:5:23:5:23 | this access | normal | 3 | -| obinit.cs:2:18:2:18 | | obinit.cs:3:17:3:17 | 1 | obinit.cs:3:13:3:13 | access to field x | normal | 1 | -| obinit.cs:2:18:2:18 | | obinit.cs:5:23:5:23 | access to field s | obinit.cs:5:23:5:34 | ... = ... | normal | 6 | -| obinit.cs:2:18:2:18 | | obinit.cs:5:23:5:23 | this access | obinit.cs:5:27:5:34 | "source" | normal | 4 | -| obinit.cs:2:18:2:18 | | obinit.cs:5:27:5:34 | "source" | obinit.cs:5:23:5:23 | access to field s | normal | 5 | -| obinit.cs:7:16:7:16 | A | obinit.cs:7:16:7:16 | call to constructor Object | obinit.cs:7:20:7:22 | {...} | normal | 2 | -| obinit.cs:7:16:7:16 | A | obinit.cs:7:16:7:16 | call to method | obinit.cs:7:16:7:16 | call to constructor Object | normal | 1 | -| obinit.cs:7:16:7:16 | A | obinit.cs:7:16:7:16 | this access | obinit.cs:7:16:7:16 | call to method | normal | 0 | -| obinit.cs:9:16:9:16 | A | obinit.cs:9:16:9:16 | call to constructor Object | obinit.cs:9:25:9:27 | {...} | normal | 2 | -| obinit.cs:9:16:9:16 | A | obinit.cs:9:16:9:16 | call to method | obinit.cs:9:16:9:16 | call to constructor Object | normal | 1 | -| obinit.cs:9:16:9:16 | A | obinit.cs:9:16:9:16 | this access | obinit.cs:9:16:9:16 | call to method | normal | 0 | -| obinit.cs:11:16:11:16 | A | obinit.cs:11:34:11:37 | call to constructor A | obinit.cs:11:42:11:44 | {...} | normal | 1 | -| obinit.cs:11:16:11:16 | A | obinit.cs:11:39:11:39 | access to parameter y | obinit.cs:11:34:11:37 | call to constructor A | normal | 0 | -| obinit.cs:15:16:15:16 | B | obinit.cs:15:16:15:16 | call to method | obinit.cs:15:27:15:28 | 10 | normal | 1 | -| obinit.cs:15:16:15:16 | B | obinit.cs:15:16:15:16 | this access | obinit.cs:15:16:15:16 | call to method | normal | 0 | -| obinit.cs:15:16:15:16 | B | obinit.cs:15:22:15:25 | call to constructor A | obinit.cs:15:31:15:33 | {...} | normal | 3 | -| obinit.cs:15:16:15:16 | B | obinit.cs:15:27:15:28 | 10 | obinit.cs:15:22:15:25 | call to constructor A | normal | 2 | +| obinit.cs:2:18:2:18 | | obinit.cs:2:18:2:18 | Entry | obinit.cs:3:13:3:17 | Before ... = ... | successor | 0 | +| obinit.cs:2:18:2:18 | | obinit.cs:2:18:2:18 | Normal Exit | obinit.cs:2:18:2:18 | Exit | successor | 17 | +| obinit.cs:2:18:2:18 | | obinit.cs:3:13:3:13 | After access to field x | obinit.cs:3:17:3:17 | 1 | successor | 5 | +| obinit.cs:2:18:2:18 | | obinit.cs:3:13:3:13 | Before access to field x | obinit.cs:3:13:3:13 | this access | successor | 2 | +| obinit.cs:2:18:2:18 | | obinit.cs:3:13:3:13 | access to field x | obinit.cs:3:13:3:13 | After access to field x | successor | 4 | +| obinit.cs:2:18:2:18 | | obinit.cs:3:13:3:13 | this access | obinit.cs:3:13:3:13 | access to field x | successor | 3 | +| obinit.cs:2:18:2:18 | | obinit.cs:3:13:3:17 | ... = ... | obinit.cs:3:13:3:17 | After ... = ... | successor | 7 | +| obinit.cs:2:18:2:18 | | obinit.cs:3:13:3:17 | After ... = ... | obinit.cs:5:23:5:34 | Before ... = ... | successor | 8 | +| obinit.cs:2:18:2:18 | | obinit.cs:3:13:3:17 | Before ... = ... | obinit.cs:3:13:3:13 | Before access to field x | successor | 1 | +| obinit.cs:2:18:2:18 | | obinit.cs:3:17:3:17 | 1 | obinit.cs:3:13:3:17 | ... = ... | successor | 6 | +| obinit.cs:2:18:2:18 | | obinit.cs:5:23:5:23 | After access to field s | obinit.cs:5:27:5:34 | "source" | successor | 13 | +| obinit.cs:2:18:2:18 | | obinit.cs:5:23:5:23 | Before access to field s | obinit.cs:5:23:5:23 | this access | successor | 10 | +| obinit.cs:2:18:2:18 | | obinit.cs:5:23:5:23 | access to field s | obinit.cs:5:23:5:23 | After access to field s | successor | 12 | +| obinit.cs:2:18:2:18 | | obinit.cs:5:23:5:23 | this access | obinit.cs:5:23:5:23 | access to field s | successor | 11 | +| obinit.cs:2:18:2:18 | | obinit.cs:5:23:5:34 | ... = ... | obinit.cs:5:23:5:34 | After ... = ... | successor | 15 | +| obinit.cs:2:18:2:18 | | obinit.cs:5:23:5:34 | After ... = ... | obinit.cs:2:18:2:18 | Normal Exit | successor | 16 | +| obinit.cs:2:18:2:18 | | obinit.cs:5:23:5:34 | Before ... = ... | obinit.cs:5:23:5:23 | Before access to field s | successor | 9 | +| obinit.cs:2:18:2:18 | | obinit.cs:5:27:5:34 | "source" | obinit.cs:5:23:5:34 | ... = ... | successor | 14 | +| obinit.cs:7:16:7:16 | A | obinit.cs:7:16:7:16 | After call to constructor Object | obinit.cs:7:20:7:22 | {...} | successor | 7 | +| obinit.cs:7:16:7:16 | A | obinit.cs:7:16:7:16 | After call to method | obinit.cs:7:16:7:16 | Before call to constructor Object | successor | 4 | +| obinit.cs:7:16:7:16 | A | obinit.cs:7:16:7:16 | Before call to constructor Object | obinit.cs:7:16:7:16 | call to constructor Object | successor | 5 | +| obinit.cs:7:16:7:16 | A | obinit.cs:7:16:7:16 | Before call to method | obinit.cs:7:16:7:16 | this access | successor | 1 | +| obinit.cs:7:16:7:16 | A | obinit.cs:7:16:7:16 | Entry | obinit.cs:7:16:7:16 | Before call to method | successor | 0 | +| obinit.cs:7:16:7:16 | A | obinit.cs:7:16:7:16 | Normal Exit | obinit.cs:7:16:7:16 | Exit | successor | 9 | +| obinit.cs:7:16:7:16 | A | obinit.cs:7:16:7:16 | call to constructor Object | obinit.cs:7:16:7:16 | After call to constructor Object | successor | 6 | +| obinit.cs:7:16:7:16 | A | obinit.cs:7:16:7:16 | call to method | obinit.cs:7:16:7:16 | After call to method | successor | 3 | +| obinit.cs:7:16:7:16 | A | obinit.cs:7:16:7:16 | this access | obinit.cs:7:16:7:16 | call to method | successor | 2 | +| obinit.cs:7:16:7:16 | A | obinit.cs:7:20:7:22 | {...} | obinit.cs:7:16:7:16 | Normal Exit | successor | 8 | +| obinit.cs:9:16:9:16 | A | obinit.cs:9:16:9:16 | After call to constructor Object | obinit.cs:9:25:9:27 | {...} | successor | 8 | +| obinit.cs:9:16:9:16 | A | obinit.cs:9:16:9:16 | After call to method | obinit.cs:9:16:9:16 | Before call to constructor Object | successor | 5 | +| obinit.cs:9:16:9:16 | A | obinit.cs:9:16:9:16 | Before call to constructor Object | obinit.cs:9:16:9:16 | call to constructor Object | successor | 6 | +| obinit.cs:9:16:9:16 | A | obinit.cs:9:16:9:16 | Before call to method | obinit.cs:9:16:9:16 | this access | successor | 2 | +| obinit.cs:9:16:9:16 | A | obinit.cs:9:16:9:16 | Entry | obinit.cs:9:22:9:22 | y | successor | 0 | +| obinit.cs:9:16:9:16 | A | obinit.cs:9:16:9:16 | Normal Exit | obinit.cs:9:16:9:16 | Exit | successor | 10 | +| obinit.cs:9:16:9:16 | A | obinit.cs:9:16:9:16 | call to constructor Object | obinit.cs:9:16:9:16 | After call to constructor Object | successor | 7 | +| obinit.cs:9:16:9:16 | A | obinit.cs:9:16:9:16 | call to method | obinit.cs:9:16:9:16 | After call to method | successor | 4 | +| obinit.cs:9:16:9:16 | A | obinit.cs:9:16:9:16 | this access | obinit.cs:9:16:9:16 | call to method | successor | 3 | +| obinit.cs:9:16:9:16 | A | obinit.cs:9:22:9:22 | y | obinit.cs:9:16:9:16 | Before call to method | successor | 1 | +| obinit.cs:9:16:9:16 | A | obinit.cs:9:25:9:27 | {...} | obinit.cs:9:16:9:16 | Normal Exit | successor | 9 | +| obinit.cs:11:16:11:16 | A | obinit.cs:11:16:11:16 | Entry | obinit.cs:11:22:11:22 | y | successor | 0 | +| obinit.cs:11:16:11:16 | A | obinit.cs:11:16:11:16 | Normal Exit | obinit.cs:11:16:11:16 | Exit | successor | 8 | +| obinit.cs:11:16:11:16 | A | obinit.cs:11:22:11:22 | y | obinit.cs:11:29:11:29 | z | successor | 1 | +| obinit.cs:11:16:11:16 | A | obinit.cs:11:29:11:29 | z | obinit.cs:11:34:11:37 | Before call to constructor A | successor | 2 | +| obinit.cs:11:16:11:16 | A | obinit.cs:11:34:11:37 | After call to constructor A | obinit.cs:11:42:11:44 | {...} | successor | 6 | +| obinit.cs:11:16:11:16 | A | obinit.cs:11:34:11:37 | Before call to constructor A | obinit.cs:11:39:11:39 | access to parameter y | successor | 3 | +| obinit.cs:11:16:11:16 | A | obinit.cs:11:34:11:37 | call to constructor A | obinit.cs:11:34:11:37 | After call to constructor A | successor | 5 | +| obinit.cs:11:16:11:16 | A | obinit.cs:11:39:11:39 | access to parameter y | obinit.cs:11:34:11:37 | call to constructor A | successor | 4 | +| obinit.cs:11:16:11:16 | A | obinit.cs:11:42:11:44 | {...} | obinit.cs:11:16:11:16 | Normal Exit | successor | 7 | +| obinit.cs:15:16:15:16 | B | obinit.cs:15:16:15:16 | After call to method | obinit.cs:15:22:15:25 | Before call to constructor A | successor | 4 | +| obinit.cs:15:16:15:16 | B | obinit.cs:15:16:15:16 | Before call to method | obinit.cs:15:16:15:16 | this access | successor | 1 | +| obinit.cs:15:16:15:16 | B | obinit.cs:15:16:15:16 | Entry | obinit.cs:15:16:15:16 | Before call to method | successor | 0 | +| obinit.cs:15:16:15:16 | B | obinit.cs:15:16:15:16 | Normal Exit | obinit.cs:15:16:15:16 | Exit | successor | 10 | +| obinit.cs:15:16:15:16 | B | obinit.cs:15:16:15:16 | call to method | obinit.cs:15:16:15:16 | After call to method | successor | 3 | +| obinit.cs:15:16:15:16 | B | obinit.cs:15:16:15:16 | this access | obinit.cs:15:16:15:16 | call to method | successor | 2 | +| obinit.cs:15:16:15:16 | B | obinit.cs:15:22:15:25 | After call to constructor A | obinit.cs:15:31:15:33 | {...} | successor | 8 | +| obinit.cs:15:16:15:16 | B | obinit.cs:15:22:15:25 | Before call to constructor A | obinit.cs:15:27:15:28 | 10 | successor | 5 | +| obinit.cs:15:16:15:16 | B | obinit.cs:15:22:15:25 | call to constructor A | obinit.cs:15:22:15:25 | After call to constructor A | successor | 7 | +| obinit.cs:15:16:15:16 | B | obinit.cs:15:27:15:28 | 10 | obinit.cs:15:22:15:25 | call to constructor A | successor | 6 | +| obinit.cs:15:16:15:16 | B | obinit.cs:15:31:15:33 | {...} | obinit.cs:15:16:15:16 | Normal Exit | successor | 9 | diff --git a/csharp/ql/test/library-tests/obinit/ObInit.ql b/csharp/ql/test/library-tests/obinit/ObInit.ql index cfd21d14b5e0..a6c58b33dad5 100644 --- a/csharp/ql/test/library-tests/obinit/ObInit.ql +++ b/csharp/ql/test/library-tests/obinit/ObInit.ql @@ -1,8 +1,4 @@ import csharp -import semmle.code.csharp.controlflow.internal.ControlFlowGraphImpl -import semmle.code.csharp.controlflow.internal.Completion -import semmle.code.csharp.dataflow.internal.DataFlowPrivate -import semmle.code.csharp.dataflow.internal.DataFlowDispatch query predicate method(ObjectInitMethod m, RefType t) { m.getDeclaringType() = t } @@ -10,19 +6,21 @@ query predicate call(Call c, ObjectInitMethod m, Callable src) { c.getTarget() = m and c.getEnclosingCallable() = src } -predicate scope(Callable callable, AstNode n, int i) { +predicate scope(Callable callable, ControlFlowNode n, int i) { (callable instanceof ObjectInitMethod or callable instanceof Constructor) and - scopeFirst(callable, n) and + n.(ControlFlow::EntryNode).getEnclosingCallable() = callable and i = 0 or - exists(AstNode prev | + exists(ControlFlowNode prev | scope(callable, prev, i - 1) and - succ(prev, n, _) and + n = prev.getASuccessor() and i < 30 ) } -query predicate cfg(Callable callable, AstNode pred, AstNode succ, Completion c, int i) { +query predicate cfg( + Callable callable, ControlFlowNode pred, ControlFlowNode succ, ControlFlow::SuccessorType c, int i +) { scope(callable, pred, i) and - succ(pred, succ, c) + pred.getASuccessor(c) = succ } diff --git a/csharp/ql/test/library-tests/operators/Operators1.expected b/csharp/ql/test/library-tests/operators/Operators1.expected index 9a819a46f503..7ec4fe268b46 100644 --- a/csharp/ql/test/library-tests/operators/Operators1.expected +++ b/csharp/ql/test/library-tests/operators/Operators1.expected @@ -1 +1 @@ -| operators.cs:16:42:16:43 | ++ | operators.cs:7:18:7:26 | IntVector | +| operators.cs:15:42:15:43 | ++ | operators.cs:7:18:7:26 | IntVector | diff --git a/csharp/ql/test/library-tests/operators/Operators2.expected b/csharp/ql/test/library-tests/operators/Operators2.expected index 9a819a46f503..7ec4fe268b46 100644 --- a/csharp/ql/test/library-tests/operators/Operators2.expected +++ b/csharp/ql/test/library-tests/operators/Operators2.expected @@ -1 +1 @@ -| operators.cs:16:42:16:43 | ++ | operators.cs:7:18:7:26 | IntVector | +| operators.cs:15:42:15:43 | ++ | operators.cs:7:18:7:26 | IntVector | diff --git a/csharp/ql/test/library-tests/operators/Operators3.expected b/csharp/ql/test/library-tests/operators/Operators3.expected index cc0d4b646fca..e81aec79ba19 100644 --- a/csharp/ql/test/library-tests/operators/Operators3.expected +++ b/csharp/ql/test/library-tests/operators/Operators3.expected @@ -1 +1 @@ -| operators.cs:51:32:51:39 | implicit conversion | +| operators.cs:96:32:96:39 | implicit conversion | diff --git a/csharp/ql/test/library-tests/operators/Operators4.expected b/csharp/ql/test/library-tests/operators/Operators4.expected index 3cc82aeb9280..49db993c093d 100644 --- a/csharp/ql/test/library-tests/operators/Operators4.expected +++ b/csharp/ql/test/library-tests/operators/Operators4.expected @@ -1 +1 @@ -| operators.cs:56:32:56:39 | explicit conversion | +| operators.cs:101:32:101:39 | explicit conversion | diff --git a/csharp/ql/test/library-tests/operators/Operators5.expected b/csharp/ql/test/library-tests/operators/Operators5.expected new file mode 100644 index 000000000000..8e506e5119df --- /dev/null +++ b/csharp/ql/test/library-tests/operators/Operators5.expected @@ -0,0 +1,15 @@ +| operators.cs:23:30:23:31 | += | operators.cs:61:13:61:22 | ... += ... | +| operators.cs:31:38:31:39 | checked += | operators.cs:77:17:77:26 | ... += ... | +| operators.cs:33:38:33:39 | checked -= | operators.cs:78:17:78:26 | ... -= ... | +| operators.cs:34:30:34:31 | -= | operators.cs:64:13:64:22 | ... -= ... | +| operators.cs:36:38:36:39 | checked *= | operators.cs:79:17:79:26 | ... *= ... | +| operators.cs:37:30:37:31 | *= | operators.cs:65:13:65:22 | ... *= ... | +| operators.cs:39:38:39:39 | checked /= | operators.cs:80:17:80:26 | ... /= ... | +| operators.cs:40:30:40:31 | /= | operators.cs:66:13:66:22 | ... /= ... | +| operators.cs:42:30:42:31 | %= | operators.cs:67:13:67:22 | ... %= ... | +| operators.cs:43:30:43:31 | &= | operators.cs:68:13:68:22 | ... &= ... | +| operators.cs:44:30:44:31 | \|= | operators.cs:69:13:69:22 | ... \|= ... | +| operators.cs:45:30:45:31 | ^= | operators.cs:70:13:70:22 | ... ^= ... | +| operators.cs:46:30:46:32 | <<= | operators.cs:71:13:71:23 | ... <<= ... | +| operators.cs:47:30:47:32 | >>= | operators.cs:72:13:72:23 | ... >>= ... | +| operators.cs:48:30:48:33 | >>>= | operators.cs:73:13:73:24 | ... >>>= ... | diff --git a/csharp/ql/test/library-tests/operators/Operators5.ql b/csharp/ql/test/library-tests/operators/Operators5.ql new file mode 100644 index 000000000000..b22a342dd1f3 --- /dev/null +++ b/csharp/ql/test/library-tests/operators/Operators5.ql @@ -0,0 +1,9 @@ +/** + * @name Test for operators + */ + +import csharp + +from CompoundAssignmentOperator cao, CompoundAssignmentOperatorCall call +where call.getTarget() = cao +select cao, call diff --git a/csharp/ql/test/library-tests/operators/PrintAst.expected b/csharp/ql/test/library-tests/operators/PrintAst.expected index d3b41fe05fb7..8ea38d79b148 100644 --- a/csharp/ql/test/library-tests/operators/PrintAst.expected +++ b/csharp/ql/test/library-tests/operators/PrintAst.expected @@ -1,154 +1,339 @@ operators.cs: # 5| [NamespaceDeclaration] namespace ... { ... } # 7| 1: [Class] IntVector -# 10| 5: [InstanceConstructor] IntVector -#-----| 2: (Parameters) -# 10| 0: [Parameter] length -# 10| -1: [TypeMention] int -# 10| 4: [BlockStmt] {...} -# 12| 6: [Property] Length -# 12| -1: [TypeMention] int -# 12| 3: [Getter] get_Length -# 12| 4: [BlockStmt] {...} -# 12| 0: [ReturnStmt] return ...; -# 12| 0: [IntLiteral] 4 -# 14| 7: [Indexer] Item -# 14| -1: [TypeMention] int +# 9| 5: [InstanceConstructor] IntVector +#-----| 2: (Parameters) +# 9| 0: [Parameter] length +# 9| -1: [TypeMention] int +# 9| 4: [BlockStmt] {...} +# 11| 6: [Property] Length +# 11| -1: [TypeMention] int +# 11| 3: [Getter] get_Length +# 11| 4: [BlockStmt] {...} +# 11| 0: [ReturnStmt] return ...; +# 11| 0: [IntLiteral] 4 +# 13| 7: [Indexer] Item +# 13| -1: [TypeMention] int #-----| 1: (Parameters) -# 14| 0: [Parameter] index -# 14| -1: [TypeMention] int -# 14| 3: [Getter] get_Item +# 13| 0: [Parameter] index +# 13| -1: [TypeMention] int +# 13| 3: [Getter] get_Item #-----| 2: (Parameters) -# 14| 0: [Parameter] index -# 14| 4: [BlockStmt] {...} -# 14| 0: [ReturnStmt] return ...; -# 14| 0: [IntLiteral] 0 -# 14| 4: [Setter] set_Item +# 13| 0: [Parameter] index +# 13| 4: [BlockStmt] {...} +# 13| 0: [ReturnStmt] return ...; +# 13| 0: [IntLiteral] 0 +# 13| 4: [Setter] set_Item #-----| 2: (Parameters) -# 14| 0: [Parameter] index -# 14| 1: [Parameter] value -# 14| 4: [BlockStmt] {...} -# 16| 8: [IncrementOperator] ++ -# 16| -1: [TypeMention] IntVector -#-----| 2: (Parameters) -# 16| 0: [Parameter] iv -# 16| -1: [TypeMention] IntVector -# 17| 4: [BlockStmt] {...} -# 18| 0: [LocalVariableDeclStmt] ... ...; -# 18| 0: [LocalVariableDeclAndInitExpr] IntVector temp = ... -# 18| -1: [TypeMention] IntVector -# 18| 0: [LocalVariableAccess] access to local variable temp -# 18| 1: [ObjectCreation] object creation of type IntVector -# 18| -1: [TypeMention] IntVector -# 18| 0: [PropertyCall] access to property Length -# 18| -1: [ParameterAccess] access to parameter iv -# 19| 1: [ForStmt] for (...;...;...) ... -# 19| -1: [LocalVariableDeclAndInitExpr] Int32 i = ... -# 19| -1: [TypeMention] int -# 19| 0: [LocalVariableAccess] access to local variable i -# 19| 1: [IntLiteral] 0 -# 19| 0: [LTExpr] ... < ... -# 19| 0: [LocalVariableAccess] access to local variable i -# 19| 1: [PropertyCall] access to property Length -# 19| -1: [ParameterAccess] access to parameter iv -# 19| 1: [PostIncrExpr] ...++ -# 19| 0: [LocalVariableAccess] access to local variable i -# 20| 2: [ExprStmt] ...; -# 20| 0: [AssignExpr] ... = ... -# 20| 0: [IndexerCall] access to indexer -# 20| -1: [LocalVariableAccess] access to local variable temp -# 20| 0: [LocalVariableAccess] access to local variable i -# 20| 1: [AddExpr] ... + ... -# 20| 0: [IndexerCall] access to indexer -# 20| -1: [ParameterAccess] access to parameter iv -# 20| 0: [LocalVariableAccess] access to local variable i -# 20| 1: [IntLiteral] 1 -# 21| 2: [ReturnStmt] return ...; -# 21| 0: [LocalVariableAccess] access to local variable temp -# 26| 2: [Class] TestUnaryOperator -# 29| 6: [Method] Main -# 29| -1: [TypeMention] Void -# 30| 4: [BlockStmt] {...} -# 31| 0: [LocalVariableDeclStmt] ... ...; -# 31| 0: [LocalVariableDeclAndInitExpr] IntVector iv1 = ... -# 31| -1: [TypeMention] IntVector -# 31| 0: [LocalVariableAccess] access to local variable iv1 -# 31| 1: [ObjectCreation] object creation of type IntVector -# 31| -1: [TypeMention] IntVector -# 31| 0: [IntLiteral] 4 -# 32| 1: [LocalVariableDeclStmt] ... ...; -# 32| 0: [LocalVariableDeclExpr] IntVector iv2 -# 32| 0: [TypeMention] IntVector -# 33| 2: [ExprStmt] ...; -# 33| 0: [AssignExpr] ... = ... -# 33| 0: [LocalVariableAccess] access to local variable iv2 -# 33| 1: [OperatorCall] call to operator ++ -# 33| 0: [LocalVariableAccess] access to local variable iv1 -# 34| 3: [ExprStmt] ...; -# 34| 0: [AssignExpr] ... = ... -# 34| 0: [LocalVariableAccess] access to local variable iv2 -# 34| 1: [OperatorCall] call to operator ++ -# 34| 0: [LocalVariableAccess] access to local variable iv1 -# 39| 3: [Struct] Digit -# 42| 6: [Field] value -# 42| -1: [TypeMention] byte -# 44| 7: [InstanceConstructor] Digit -#-----| 2: (Parameters) -# 44| 0: [Parameter] value -# 44| -1: [TypeMention] byte +# 13| 0: [Parameter] index +# 13| 1: [Parameter] value +# 13| 4: [BlockStmt] {...} +# 15| 8: [IncrementOperator] ++ +# 15| -1: [TypeMention] IntVector +#-----| 2: (Parameters) +# 15| 0: [Parameter] iv +# 15| -1: [TypeMention] IntVector +# 16| 4: [BlockStmt] {...} +# 17| 0: [LocalVariableDeclStmt] ... ...; +# 17| 0: [LocalVariableDeclAndInitExpr] IntVector temp = ... +# 17| -1: [TypeMention] IntVector +# 17| 0: [LocalVariableAccess] access to local variable temp +# 17| 1: [ObjectCreation] object creation of type IntVector +# 17| -1: [TypeMention] IntVector +# 17| 0: [PropertyCall] access to property Length +# 17| -1: [ParameterAccess] access to parameter iv +# 18| 1: [ForStmt] for (...;...;...) ... +# 18| -1: [LocalVariableDeclAndInitExpr] Int32 i = ... +# 18| -1: [TypeMention] int +# 18| 0: [LocalVariableAccess] access to local variable i +# 18| 1: [IntLiteral] 0 +# 18| 0: [LTExpr] ... < ... +# 18| 0: [LocalVariableAccess] access to local variable i +# 18| 1: [PropertyCall] access to property Length +# 18| -1: [ParameterAccess] access to parameter iv +# 18| 1: [PostIncrExpr] ...++ +# 18| 0: [LocalVariableAccess] access to local variable i +# 19| 2: [ExprStmt] ...; +# 19| 0: [AssignExpr] ... = ... +# 19| 0: [IndexerCall] access to indexer +# 19| -1: [LocalVariableAccess] access to local variable temp +# 19| 0: [LocalVariableAccess] access to local variable i +# 19| 1: [AddExpr] ... + ... +# 19| 0: [IndexerCall] access to indexer +# 19| -1: [ParameterAccess] access to parameter iv +# 19| 0: [LocalVariableAccess] access to local variable i +# 19| 1: [IntLiteral] 1 +# 20| 2: [ReturnStmt] return ...; +# 20| 0: [LocalVariableAccess] access to local variable temp +# 23| 9: [AddCompoundAssignmentOperator] += +# 23| -1: [TypeMention] Void +#-----| 2: (Parameters) +# 23| 0: [Parameter] n +# 23| -1: [TypeMention] IntVector +# 24| 4: [BlockStmt] {...} +# 25| 0: [IfStmt] if (...) ... +# 25| 0: [NEExpr] ... != ... +# 25| 0: [PropertyCall] access to property Length +# 25| -1: [ParameterAccess] access to parameter n +# 25| 1: [PropertyCall] access to property Length +# 26| 1: [ThrowStmt] throw ...; +# 26| 0: [ObjectCreation] object creation of type ArgumentException +# 26| 0: [TypeMention] ArgumentException +# 27| 1: [ForStmt] for (...;...;...) ... +# 27| -1: [LocalVariableDeclAndInitExpr] Int32 i = ... +# 27| -1: [TypeMention] int +# 27| 0: [LocalVariableAccess] access to local variable i +# 27| 1: [IntLiteral] 0 +# 27| 0: [LTExpr] ... < ... +# 27| 0: [LocalVariableAccess] access to local variable i +# 27| 1: [PropertyCall] access to property Length +# 27| 1: [PostIncrExpr] ...++ +# 27| 0: [LocalVariableAccess] access to local variable i +# 28| 2: [ExprStmt] ...; +# 28| 0: [AssignAddExpr] ... += ... +# 28| 0: [IndexerCall] access to indexer +# 28| -1: [ThisAccess] this access +# 28| 0: [LocalVariableAccess] access to local variable i +# 28| 1: [IndexerCall] access to indexer +# 28| -1: [ParameterAccess] access to parameter n +# 28| 0: [LocalVariableAccess] access to local variable i +# 31| 10: [CheckedAddCompoundAssignmentOperator] checked += +# 31| -1: [TypeMention] Void +#-----| 2: (Parameters) +# 31| 0: [Parameter] n +# 31| -1: [TypeMention] IntVector +# 31| 4: [BlockStmt] {...} +# 33| 11: [CheckedSubCompoundAssignmentOperator] checked -= +# 33| -1: [TypeMention] Void +#-----| 2: (Parameters) +# 33| 0: [Parameter] n +# 33| -1: [TypeMention] IntVector +# 33| 4: [BlockStmt] {...} +# 34| 12: [SubCompoundAssignmentOperator] -= +# 34| -1: [TypeMention] Void +#-----| 2: (Parameters) +# 34| 0: [Parameter] n +# 34| -1: [TypeMention] IntVector +# 34| 4: [BlockStmt] {...} +# 36| 13: [CheckedMulCompoundAssignmentOperator] checked *= +# 36| -1: [TypeMention] Void +#-----| 2: (Parameters) +# 36| 0: [Parameter] n +# 36| -1: [TypeMention] IntVector +# 36| 4: [BlockStmt] {...} +# 37| 14: [MulCompoundAssignmentOperator] *= +# 37| -1: [TypeMention] Void +#-----| 2: (Parameters) +# 37| 0: [Parameter] n +# 37| -1: [TypeMention] IntVector +# 37| 4: [BlockStmt] {...} +# 39| 15: [CheckedDivCompoundAssignmentOperator] checked /= +# 39| -1: [TypeMention] Void +#-----| 2: (Parameters) +# 39| 0: [Parameter] n +# 39| -1: [TypeMention] IntVector +# 39| 4: [BlockStmt] {...} +# 40| 16: [DivCompoundAssignmentOperator] /= +# 40| -1: [TypeMention] Void +#-----| 2: (Parameters) +# 40| 0: [Parameter] n +# 40| -1: [TypeMention] IntVector +# 40| 4: [BlockStmt] {...} +# 42| 17: [RemCompoundAssignmentOperator] %= +# 42| -1: [TypeMention] Void +#-----| 2: (Parameters) +# 42| 0: [Parameter] n +# 42| -1: [TypeMention] IntVector +# 42| 4: [BlockStmt] {...} +# 43| 18: [AndCompoundAssignmentOperator] &= +# 43| -1: [TypeMention] Void +#-----| 2: (Parameters) +# 43| 0: [Parameter] n +# 43| -1: [TypeMention] IntVector +# 43| 4: [BlockStmt] {...} +# 44| 19: [OrCompoundAssignmentOperator] |= +# 44| -1: [TypeMention] Void +#-----| 2: (Parameters) +# 44| 0: [Parameter] n +# 44| -1: [TypeMention] IntVector +# 44| 4: [BlockStmt] {...} +# 45| 20: [XorCompoundAssignmentOperator] ^= +# 45| -1: [TypeMention] Void +#-----| 2: (Parameters) +# 45| 0: [Parameter] n +# 45| -1: [TypeMention] IntVector # 45| 4: [BlockStmt] {...} -# 46| 0: [IfStmt] if (...) ... -# 46| 0: [LogicalOrExpr] ... || ... -# 46| 0: [LTExpr] ... < ... -# 46| 0: [CastExpr] (...) ... -# 46| 1: [ParameterAccess] access to parameter value -# 46| 1: [IntLiteral] 0 -# 46| 1: [GTExpr] ... > ... -# 46| 0: [CastExpr] (...) ... -# 46| 1: [ParameterAccess] access to parameter value -# 46| 1: [IntLiteral] 9 -# 47| 1: [ThrowStmt] throw ...; -# 47| 0: [ObjectCreation] object creation of type ArgumentException -# 47| 0: [TypeMention] ArgumentException -# 48| 1: [ExprStmt] ...; -# 48| 0: [AssignExpr] ... = ... -# 48| 0: [FieldAccess] access to field value -# 48| -1: [ThisAccess] this access -# 48| 1: [ParameterAccess] access to parameter value -# 51| 8: [ImplicitConversionOperator] implicit conversion -# 51| -1: [TypeMention] byte -#-----| 2: (Parameters) -# 51| 0: [Parameter] d -# 51| -1: [TypeMention] Digit -# 52| 4: [BlockStmt] {...} -# 53| 0: [ReturnStmt] return ...; -# 53| 0: [FieldAccess] access to field value -# 53| -1: [ParameterAccess] access to parameter d -# 56| 9: [ExplicitConversionOperator] explicit conversion -# 56| -1: [TypeMention] Digit -#-----| 2: (Parameters) -# 56| 0: [Parameter] b -# 56| -1: [TypeMention] byte -# 57| 4: [BlockStmt] {...} -# 58| 0: [ReturnStmt] return ...; -# 58| 0: [ObjectCreation] object creation of type Digit -# 58| -1: [TypeMention] Digit -# 58| 0: [ParameterAccess] access to parameter b -# 63| 4: [Class] TestConversionOperator -# 66| 6: [Method] Main -# 66| -1: [TypeMention] Void -# 67| 4: [BlockStmt] {...} -# 68| 0: [LocalVariableDeclStmt] ... ...; -# 68| 0: [LocalVariableDeclAndInitExpr] Digit d = ... -# 68| -1: [TypeMention] Digit -# 68| 0: [LocalVariableAccess] access to local variable d -# 68| 1: [OperatorCall] call to operator explicit conversion -# 68| -1: [TypeMention] Digit -# 68| 0: [CastExpr] (...) ... -# 68| 1: [IntLiteral] 8 -# 69| 1: [LocalVariableDeclStmt] ... ...; -# 69| 0: [LocalVariableDeclAndInitExpr] Byte b = ... -# 69| -1: [TypeMention] byte -# 69| 0: [LocalVariableAccess] access to local variable b -# 69| 1: [OperatorCall] call to operator implicit conversion -# 69| 0: [LocalVariableAccess] access to local variable d +# 46| 21: [LeftShiftCompoundAssignmentOperator] <<= +# 46| -1: [TypeMention] Void +#-----| 2: (Parameters) +# 46| 0: [Parameter] n +# 46| -1: [TypeMention] IntVector +# 46| 4: [BlockStmt] {...} +# 47| 22: [RightShiftCompoundAssignmentOperator] >>= +# 47| -1: [TypeMention] Void +#-----| 2: (Parameters) +# 47| 0: [Parameter] n +# 47| -1: [TypeMention] IntVector +# 47| 4: [BlockStmt] {...} +# 48| 23: [UnsignedRightShiftCompoundAssignmentOperator] >>>= +# 48| -1: [TypeMention] Void +#-----| 2: (Parameters) +# 48| 0: [Parameter] n +# 48| -1: [TypeMention] IntVector +# 48| 4: [BlockStmt] {...} +# 51| 2: [Class] TestOperator +# 53| 6: [Method] Main +# 53| -1: [TypeMention] Void +# 54| 4: [BlockStmt] {...} +# 55| 0: [LocalVariableDeclStmt] ... ...; +# 55| 0: [LocalVariableDeclAndInitExpr] IntVector iv1 = ... +# 55| -1: [TypeMention] IntVector +# 55| 0: [LocalVariableAccess] access to local variable iv1 +# 55| 1: [ObjectCreation] object creation of type IntVector +# 55| -1: [TypeMention] IntVector +# 55| 0: [IntLiteral] 4 +# 56| 1: [LocalVariableDeclStmt] ... ...; +# 56| 0: [LocalVariableDeclExpr] IntVector iv2 +# 56| 0: [TypeMention] IntVector +# 57| 2: [ExprStmt] ...; +# 57| 0: [AssignExpr] ... = ... +# 57| 0: [LocalVariableAccess] access to local variable iv2 +# 57| 1: [OperatorCall] call to operator ++ +# 57| 0: [LocalVariableAccess] access to local variable iv1 +# 58| 3: [ExprStmt] ...; +# 58| 0: [AssignExpr] ... = ... +# 58| 0: [LocalVariableAccess] access to local variable iv2 +# 58| 1: [OperatorCall] call to operator ++ +# 58| 0: [LocalVariableAccess] access to local variable iv1 +# 60| 4: [LocalVariableDeclStmt] ... ...; +# 60| 0: [LocalVariableDeclAndInitExpr] IntVector iv3 = ... +# 60| -1: [TypeMention] IntVector +# 60| 0: [LocalVariableAccess] access to local variable iv3 +# 60| 1: [ObjectCreation] object creation of type IntVector +# 60| -1: [TypeMention] IntVector +# 60| 0: [IntLiteral] 4 +# 61| 5: [ExprStmt] ...; +# 61| 0: [AssignAddExpr] ... += ... +# 61| 0: [LocalVariableAccess] access to local variable iv3 +# 61| 1: [LocalVariableAccess] access to local variable iv2 +# 64| 6: [ExprStmt] ...; +# 64| 0: [AssignSubExpr] ... -= ... +# 64| 0: [LocalVariableAccess] access to local variable iv3 +# 64| 1: [LocalVariableAccess] access to local variable iv2 +# 65| 7: [ExprStmt] ...; +# 65| 0: [AssignMulExpr] ... *= ... +# 65| 0: [LocalVariableAccess] access to local variable iv3 +# 65| 1: [LocalVariableAccess] access to local variable iv2 +# 66| 8: [ExprStmt] ...; +# 66| 0: [AssignDivExpr] ... /= ... +# 66| 0: [LocalVariableAccess] access to local variable iv3 +# 66| 1: [LocalVariableAccess] access to local variable iv2 +# 67| 9: [ExprStmt] ...; +# 67| 0: [AssignRemExpr] ... %= ... +# 67| 0: [LocalVariableAccess] access to local variable iv3 +# 67| 1: [LocalVariableAccess] access to local variable iv2 +# 68| 10: [ExprStmt] ...; +# 68| 0: [AssignAndExpr] ... &= ... +# 68| 0: [LocalVariableAccess] access to local variable iv3 +# 68| 1: [LocalVariableAccess] access to local variable iv2 +# 69| 11: [ExprStmt] ...; +# 69| 0: [AssignOrExpr] ... |= ... +# 69| 0: [LocalVariableAccess] access to local variable iv3 +# 69| 1: [LocalVariableAccess] access to local variable iv2 +# 70| 12: [ExprStmt] ...; +# 70| 0: [AssignXorExpr] ... ^= ... +# 70| 0: [LocalVariableAccess] access to local variable iv3 +# 70| 1: [LocalVariableAccess] access to local variable iv2 +# 71| 13: [ExprStmt] ...; +# 71| 0: [AssignLeftShiftExpr] ... <<= ... +# 71| 0: [LocalVariableAccess] access to local variable iv3 +# 71| 1: [LocalVariableAccess] access to local variable iv2 +# 72| 14: [ExprStmt] ...; +# 72| 0: [AssignRightShiftExpr] ... >>= ... +# 72| 0: [LocalVariableAccess] access to local variable iv3 +# 72| 1: [LocalVariableAccess] access to local variable iv2 +# 73| 15: [ExprStmt] ...; +# 73| 0: [AssignUnsignedRightShiftExpr] ... >>>= ... +# 73| 0: [LocalVariableAccess] access to local variable iv3 +# 73| 1: [LocalVariableAccess] access to local variable iv2 +# 75| 16: [CheckedStmt] checked {...} +# 76| 0: [BlockStmt] {...} +# 77| 0: [ExprStmt] ...; +# 77| 0: [AssignAddExpr] ... += ... +# 77| 0: [LocalVariableAccess] access to local variable iv3 +# 77| 1: [LocalVariableAccess] access to local variable iv2 +# 78| 1: [ExprStmt] ...; +# 78| 0: [AssignSubExpr] ... -= ... +# 78| 0: [LocalVariableAccess] access to local variable iv3 +# 78| 1: [LocalVariableAccess] access to local variable iv2 +# 79| 2: [ExprStmt] ...; +# 79| 0: [AssignMulExpr] ... *= ... +# 79| 0: [LocalVariableAccess] access to local variable iv3 +# 79| 1: [LocalVariableAccess] access to local variable iv2 +# 80| 3: [ExprStmt] ...; +# 80| 0: [AssignDivExpr] ... /= ... +# 80| 0: [LocalVariableAccess] access to local variable iv3 +# 80| 1: [LocalVariableAccess] access to local variable iv2 +# 85| 3: [Struct] Digit +# 87| 6: [Field] value +# 87| -1: [TypeMention] byte +# 89| 7: [InstanceConstructor] Digit +#-----| 2: (Parameters) +# 89| 0: [Parameter] value +# 89| -1: [TypeMention] byte +# 90| 4: [BlockStmt] {...} +# 91| 0: [IfStmt] if (...) ... +# 91| 0: [LogicalOrExpr] ... || ... +# 91| 0: [LTExpr] ... < ... +# 91| 0: [CastExpr] (...) ... +# 91| 1: [ParameterAccess] access to parameter value +# 91| 1: [IntLiteral] 0 +# 91| 1: [GTExpr] ... > ... +# 91| 0: [CastExpr] (...) ... +# 91| 1: [ParameterAccess] access to parameter value +# 91| 1: [IntLiteral] 9 +# 92| 1: [ThrowStmt] throw ...; +# 92| 0: [ObjectCreation] object creation of type ArgumentException +# 92| 0: [TypeMention] ArgumentException +# 93| 1: [ExprStmt] ...; +# 93| 0: [AssignExpr] ... = ... +# 93| 0: [FieldAccess] access to field value +# 93| -1: [ThisAccess] this access +# 93| 1: [ParameterAccess] access to parameter value +# 96| 8: [ImplicitConversionOperator] implicit conversion +# 96| -1: [TypeMention] byte +#-----| 2: (Parameters) +# 96| 0: [Parameter] d +# 96| -1: [TypeMention] Digit +# 97| 4: [BlockStmt] {...} +# 98| 0: [ReturnStmt] return ...; +# 98| 0: [FieldAccess] access to field value +# 98| -1: [ParameterAccess] access to parameter d +# 101| 9: [ExplicitConversionOperator] explicit conversion +# 101| -1: [TypeMention] Digit +#-----| 2: (Parameters) +# 101| 0: [Parameter] b +# 101| -1: [TypeMention] byte +# 102| 4: [BlockStmt] {...} +# 103| 0: [ReturnStmt] return ...; +# 103| 0: [ObjectCreation] object creation of type Digit +# 103| -1: [TypeMention] Digit +# 103| 0: [ParameterAccess] access to parameter b +# 108| 4: [Class] TestConversionOperator +# 111| 6: [Method] Main +# 111| -1: [TypeMention] Void +# 112| 4: [BlockStmt] {...} +# 113| 0: [LocalVariableDeclStmt] ... ...; +# 113| 0: [LocalVariableDeclAndInitExpr] Digit d = ... +# 113| -1: [TypeMention] Digit +# 113| 0: [LocalVariableAccess] access to local variable d +# 113| 1: [OperatorCall] call to operator explicit conversion +# 113| -1: [TypeMention] Digit +# 113| 0: [CastExpr] (...) ... +# 113| 1: [IntLiteral] 8 +# 114| 1: [LocalVariableDeclStmt] ... ...; +# 114| 0: [LocalVariableDeclAndInitExpr] Byte b = ... +# 114| -1: [TypeMention] byte +# 114| 0: [LocalVariableAccess] access to local variable b +# 114| 1: [OperatorCall] call to operator implicit conversion +# 114| 0: [LocalVariableAccess] access to local variable d diff --git a/csharp/ql/test/library-tests/operators/operators.cs b/csharp/ql/test/library-tests/operators/operators.cs index b58334b24a0b..3ff2fe1a26bf 100644 --- a/csharp/ql/test/library-tests/operators/operators.cs +++ b/csharp/ql/test/library-tests/operators/operators.cs @@ -6,7 +6,6 @@ namespace Operators { public class IntVector { - public IntVector(int length) { } public int Length { get { return 4; } } @@ -21,24 +20,70 @@ public IntVector(int length) { } return temp; } + public void operator +=(IntVector n) + { + if (n.Length != Length) + throw new ArgumentException(); + for (int i = 0; i < Length; i++) + this[i] += n[i]; + } + + public void operator checked +=(IntVector n) { } + + public void operator checked -=(IntVector n) { } + public void operator -=(IntVector n) { } + + public void operator checked *=(IntVector n) { } + public void operator *=(IntVector n) { } + + public void operator checked /=(IntVector n) { } + public void operator /=(IntVector n) { } + + public void operator %=(IntVector n) { } + public void operator &=(IntVector n) { } + public void operator |=(IntVector n) { } + public void operator ^=(IntVector n) { } + public void operator <<=(IntVector n) { } + public void operator >>=(IntVector n) { } + public void operator >>>=(IntVector n) { } } - class TestUnaryOperator + class TestOperator { - void Main() { IntVector iv1 = new IntVector(4); // vector of 4 x 0 IntVector iv2; iv2 = iv1++; // iv2 contains 4 x 0, iv1 contains 4 x 1 iv2 = ++iv1; // iv2 contains 4 x 2, iv1 contains 4 x 2 - } + IntVector iv3 = new IntVector(4); // vector of 4 x 0 + iv3 += iv2; // iv3 contains 4 x 2 + + // The following operations don't do anything. + iv3 -= iv2; + iv3 *= iv2; + iv3 /= iv2; + iv3 %= iv2; + iv3 &= iv2; + iv3 |= iv2; + iv3 ^= iv2; + iv3 <<= iv2; + iv3 >>= iv2; + iv3 >>>= iv2; + + checked + { + iv3 += iv2; + iv3 -= iv2; + iv3 *= iv2; + iv3 /= iv2; + } + } } public struct Digit { - byte value; public Digit(byte value) diff --git a/csharp/ql/test/library-tests/security/dataflow/flowsources/StoredFlowSources.expected b/csharp/ql/test/library-tests/security/dataflow/flowsources/StoredFlowSources.expected index e27ea53adbd1..d805f62e6b73 100644 --- a/csharp/ql/test/library-tests/security/dataflow/flowsources/StoredFlowSources.expected +++ b/csharp/ql/test/library-tests/security/dataflow/flowsources/StoredFlowSources.expected @@ -8,11 +8,13 @@ | data.cs:28:51:28:71 | access to indexer | | data.cs:28:51:28:71 | call to method ToString | | data.cs:30:13:30:26 | access to local variable customerReader | +| entity.cs:31:29:31:33 | access to local variable blogs | | entity.cs:31:29:31:82 | DbRawSqlQuery blogs = ... | | entity.cs:31:37:31:82 | call to method SqlQuery | | entity.cs:32:30:32:34 | access to local variable blogs | | entity.cs:35:31:35:34 | access to local variable blog | | entity.cs:35:31:35:39 | access to property Name | +| entity.cs:38:31:38:39 | access to local variable blogNames | | entity.cs:38:31:38:93 | DbRawSqlQuery blogNames = ... | | entity.cs:38:43:38:93 | call to method SqlQuery | | entity.cs:39:34:39:42 | access to local variable blogNames | diff --git a/csharp/ql/test/library-tests/standalone/controlflow/cfg.expected b/csharp/ql/test/library-tests/standalone/controlflow/cfg.expected index d0838ceed01b..0c425d257cf5 100644 --- a/csharp/ql/test/library-tests/standalone/controlflow/cfg.expected +++ b/csharp/ql/test/library-tests/standalone/controlflow/cfg.expected @@ -1,42 +1,103 @@ -| ControlFlow.cs:3:7:3:9 | call to constructor Object | ControlFlow.cs:3:7:3:9 | {...} | -| ControlFlow.cs:3:7:3:9 | call to method | ControlFlow.cs:3:7:3:9 | call to constructor Object | -| ControlFlow.cs:3:7:3:9 | enter Cfg | ControlFlow.cs:3:7:3:9 | this access | -| ControlFlow.cs:3:7:3:9 | exit Cfg (normal) | ControlFlow.cs:3:7:3:9 | exit Cfg | +| ControlFlow.cs:3:7:3:9 | After call to constructor Object | ControlFlow.cs:3:7:3:9 | {...} | +| ControlFlow.cs:3:7:3:9 | After call to method | ControlFlow.cs:3:7:3:9 | Before call to constructor Object | +| ControlFlow.cs:3:7:3:9 | Before call to constructor Object | ControlFlow.cs:3:7:3:9 | call to constructor Object | +| ControlFlow.cs:3:7:3:9 | Before call to method | ControlFlow.cs:3:7:3:9 | this access | +| ControlFlow.cs:3:7:3:9 | Entry | ControlFlow.cs:3:7:3:9 | Before call to method | +| ControlFlow.cs:3:7:3:9 | Normal Exit | ControlFlow.cs:3:7:3:9 | Exit | +| ControlFlow.cs:3:7:3:9 | call to constructor Object | ControlFlow.cs:3:7:3:9 | After call to constructor Object | +| ControlFlow.cs:3:7:3:9 | call to method | ControlFlow.cs:3:7:3:9 | After call to method | | ControlFlow.cs:3:7:3:9 | this access | ControlFlow.cs:3:7:3:9 | call to method | -| ControlFlow.cs:3:7:3:9 | {...} | ControlFlow.cs:3:7:3:9 | exit Cfg (normal) | -| ControlFlow.cs:5:10:5:10 | enter F | ControlFlow.cs:6:5:11:5 | {...} | -| ControlFlow.cs:5:10:5:10 | exit F (normal) | ControlFlow.cs:5:10:5:10 | exit F | +| ControlFlow.cs:3:7:3:9 | {...} | ControlFlow.cs:3:7:3:9 | Normal Exit | +| ControlFlow.cs:5:10:5:10 | Entry | ControlFlow.cs:6:5:11:5 | {...} | +| ControlFlow.cs:5:10:5:10 | Normal Exit | ControlFlow.cs:5:10:5:10 | Exit | +| ControlFlow.cs:6:5:11:5 | After {...} | ControlFlow.cs:5:10:5:10 | Normal Exit | | ControlFlow.cs:6:5:11:5 | {...} | ControlFlow.cs:7:9:7:34 | ... ...; | -| ControlFlow.cs:7:9:7:34 | ... ...; | ControlFlow.cs:7:17:7:33 | Call (unknown target) | -| ControlFlow.cs:7:9:7:34 | ... ...; | ControlFlow.cs:7:17:7:33 | object creation of type | -| ControlFlow.cs:7:13:7:33 | v = ... | ControlFlow.cs:8:9:8:44 | ...; | -| ControlFlow.cs:7:17:7:33 | Call (unknown target) | ControlFlow.cs:7:13:7:33 | v = ... | -| ControlFlow.cs:7:17:7:33 | object creation of type | ControlFlow.cs:7:13:7:33 | v = ... | -| ControlFlow.cs:8:9:8:13 | Expression | ControlFlow.cs:8:22:8:22 | access to local variable v | -| ControlFlow.cs:8:9:8:43 | Call (unknown target) | ControlFlow.cs:10:9:10:87 | ...; | -| ControlFlow.cs:8:9:8:43 | call to method | ControlFlow.cs:10:9:10:87 | ...; | -| ControlFlow.cs:8:9:8:44 | ...; | ControlFlow.cs:8:9:8:13 | Expression | +| ControlFlow.cs:7:9:7:34 | ... ...; | ControlFlow.cs:7:13:7:33 | Before v = ... | +| ControlFlow.cs:7:9:7:34 | After ... ...; | ControlFlow.cs:8:9:8:44 | ...; | +| ControlFlow.cs:7:13:7:13 | access to local variable v | ControlFlow.cs:7:17:7:33 | Before Call (unknown target) | +| ControlFlow.cs:7:13:7:13 | access to local variable v | ControlFlow.cs:7:17:7:33 | Before object creation of type | +| ControlFlow.cs:7:13:7:33 | v = ... | ControlFlow.cs:7:13:7:33 | After v = ... | +| ControlFlow.cs:7:13:7:33 | After v = ... | ControlFlow.cs:7:9:7:34 | After ... ...; | +| ControlFlow.cs:7:13:7:33 | Before v = ... | ControlFlow.cs:7:13:7:13 | access to local variable v | +| ControlFlow.cs:7:17:7:33 | After Call (unknown target) | ControlFlow.cs:7:13:7:33 | v = ... | +| ControlFlow.cs:7:17:7:33 | After object creation of type | ControlFlow.cs:7:13:7:33 | v = ... | +| ControlFlow.cs:7:17:7:33 | Before Call (unknown target) | ControlFlow.cs:7:17:7:33 | Call (unknown target) | +| ControlFlow.cs:7:17:7:33 | Before Call (unknown target) | ControlFlow.cs:7:17:7:33 | object creation of type | +| ControlFlow.cs:7:17:7:33 | Before object creation of type | ControlFlow.cs:7:17:7:33 | Call (unknown target) | +| ControlFlow.cs:7:17:7:33 | Before object creation of type | ControlFlow.cs:7:17:7:33 | object creation of type | +| ControlFlow.cs:7:17:7:33 | Call (unknown target) | ControlFlow.cs:7:17:7:33 | After Call (unknown target) | +| ControlFlow.cs:7:17:7:33 | Call (unknown target) | ControlFlow.cs:7:17:7:33 | After object creation of type | +| ControlFlow.cs:7:17:7:33 | object creation of type | ControlFlow.cs:7:17:7:33 | After Call (unknown target) | +| ControlFlow.cs:7:17:7:33 | object creation of type | ControlFlow.cs:7:17:7:33 | After object creation of type | +| ControlFlow.cs:8:9:8:13 | Expression | ControlFlow.cs:8:22:8:26 | Before Call (unknown target) | +| ControlFlow.cs:8:9:8:13 | Expression | ControlFlow.cs:8:22:8:26 | Before access to property (unknown) | +| ControlFlow.cs:8:9:8:43 | After Call (unknown target) | ControlFlow.cs:8:9:8:44 | After ...; | +| ControlFlow.cs:8:9:8:43 | After call to method | ControlFlow.cs:8:9:8:44 | After ...; | +| ControlFlow.cs:8:9:8:43 | Before Call (unknown target) | ControlFlow.cs:8:9:8:13 | Expression | +| ControlFlow.cs:8:9:8:43 | Before call to method | ControlFlow.cs:8:9:8:13 | Expression | +| ControlFlow.cs:8:9:8:43 | Call (unknown target) | ControlFlow.cs:8:9:8:43 | After Call (unknown target) | +| ControlFlow.cs:8:9:8:43 | Call (unknown target) | ControlFlow.cs:8:9:8:43 | After call to method | +| ControlFlow.cs:8:9:8:43 | call to method | ControlFlow.cs:8:9:8:43 | After Call (unknown target) | +| ControlFlow.cs:8:9:8:43 | call to method | ControlFlow.cs:8:9:8:43 | After call to method | +| ControlFlow.cs:8:9:8:44 | ...; | ControlFlow.cs:8:9:8:43 | Before Call (unknown target) | +| ControlFlow.cs:8:9:8:44 | ...; | ControlFlow.cs:8:9:8:43 | Before call to method | +| ControlFlow.cs:8:9:8:44 | After ...; | ControlFlow.cs:10:9:10:87 | ...; | | ControlFlow.cs:8:22:8:22 | access to local variable v | ControlFlow.cs:8:22:8:24 | Call (unknown target) | | ControlFlow.cs:8:22:8:22 | access to local variable v | ControlFlow.cs:8:22:8:24 | access to property (unknown) | -| ControlFlow.cs:8:22:8:24 | Call (unknown target) | ControlFlow.cs:8:22:8:26 | Call (unknown target) | -| ControlFlow.cs:8:22:8:24 | Call (unknown target) | ControlFlow.cs:8:22:8:26 | access to property (unknown) | -| ControlFlow.cs:8:22:8:24 | access to property (unknown) | ControlFlow.cs:8:22:8:26 | Call (unknown target) | -| ControlFlow.cs:8:22:8:24 | access to property (unknown) | ControlFlow.cs:8:22:8:26 | access to property (unknown) | -| ControlFlow.cs:8:22:8:26 | Call (unknown target) | ControlFlow.cs:8:29:8:42 | "This is true" | -| ControlFlow.cs:8:22:8:26 | access to property (unknown) | ControlFlow.cs:8:29:8:42 | "This is true" | +| ControlFlow.cs:8:22:8:24 | After Call (unknown target) | ControlFlow.cs:8:22:8:26 | Call (unknown target) | +| ControlFlow.cs:8:22:8:24 | After Call (unknown target) | ControlFlow.cs:8:22:8:26 | access to property (unknown) | +| ControlFlow.cs:8:22:8:24 | After access to property (unknown) | ControlFlow.cs:8:22:8:26 | Call (unknown target) | +| ControlFlow.cs:8:22:8:24 | After access to property (unknown) | ControlFlow.cs:8:22:8:26 | access to property (unknown) | +| ControlFlow.cs:8:22:8:24 | Before Call (unknown target) | ControlFlow.cs:8:22:8:22 | access to local variable v | +| ControlFlow.cs:8:22:8:24 | Before access to property (unknown) | ControlFlow.cs:8:22:8:22 | access to local variable v | +| ControlFlow.cs:8:22:8:24 | Call (unknown target) | ControlFlow.cs:8:22:8:24 | After Call (unknown target) | +| ControlFlow.cs:8:22:8:24 | Call (unknown target) | ControlFlow.cs:8:22:8:24 | After access to property (unknown) | +| ControlFlow.cs:8:22:8:24 | access to property (unknown) | ControlFlow.cs:8:22:8:24 | After Call (unknown target) | +| ControlFlow.cs:8:22:8:24 | access to property (unknown) | ControlFlow.cs:8:22:8:24 | After access to property (unknown) | +| ControlFlow.cs:8:22:8:26 | After Call (unknown target) | ControlFlow.cs:8:29:8:42 | "This is true" | +| ControlFlow.cs:8:22:8:26 | After access to property (unknown) | ControlFlow.cs:8:29:8:42 | "This is true" | +| ControlFlow.cs:8:22:8:26 | Before Call (unknown target) | ControlFlow.cs:8:22:8:24 | Before Call (unknown target) | +| ControlFlow.cs:8:22:8:26 | Before Call (unknown target) | ControlFlow.cs:8:22:8:24 | Before access to property (unknown) | +| ControlFlow.cs:8:22:8:26 | Before access to property (unknown) | ControlFlow.cs:8:22:8:24 | Before Call (unknown target) | +| ControlFlow.cs:8:22:8:26 | Before access to property (unknown) | ControlFlow.cs:8:22:8:24 | Before access to property (unknown) | +| ControlFlow.cs:8:22:8:26 | Call (unknown target) | ControlFlow.cs:8:22:8:26 | After Call (unknown target) | +| ControlFlow.cs:8:22:8:26 | Call (unknown target) | ControlFlow.cs:8:22:8:26 | After access to property (unknown) | +| ControlFlow.cs:8:22:8:26 | access to property (unknown) | ControlFlow.cs:8:22:8:26 | After Call (unknown target) | +| ControlFlow.cs:8:22:8:26 | access to property (unknown) | ControlFlow.cs:8:22:8:26 | After access to property (unknown) | | ControlFlow.cs:8:29:8:42 | "This is true" | ControlFlow.cs:8:9:8:43 | Call (unknown target) | | ControlFlow.cs:8:29:8:42 | "This is true" | ControlFlow.cs:8:9:8:43 | call to method | -| ControlFlow.cs:10:9:10:86 | Call (unknown target) | ControlFlow.cs:10:51:10:62 | access to field Empty | -| ControlFlow.cs:10:9:10:86 | object creation of type | ControlFlow.cs:10:51:10:62 | access to field Empty | -| ControlFlow.cs:10:9:10:87 | ...; | ControlFlow.cs:10:9:10:86 | Call (unknown target) | -| ControlFlow.cs:10:9:10:87 | ...; | ControlFlow.cs:10:9:10:86 | object creation of type | -| ControlFlow.cs:10:35:10:86 | { ..., ... } | ControlFlow.cs:5:10:5:10 | exit F (normal) | -| ControlFlow.cs:10:37:10:47 | access to array element | ControlFlow.cs:10:37:10:62 | ... = ... | -| ControlFlow.cs:10:37:10:62 | ... = ... | ControlFlow.cs:10:79:10:79 | access to local variable v | -| ControlFlow.cs:10:51:10:62 | access to field Empty | ControlFlow.cs:10:37:10:47 | access to array element | -| ControlFlow.cs:10:65:10:75 | access to array element | ControlFlow.cs:10:65:10:84 | ... = ... | -| ControlFlow.cs:10:65:10:84 | ... = ... | ControlFlow.cs:10:35:10:86 | { ..., ... } | +| ControlFlow.cs:10:9:10:86 | After Call (unknown target) | ControlFlow.cs:10:9:10:87 | After ...; | +| ControlFlow.cs:10:9:10:86 | After object creation of type | ControlFlow.cs:10:9:10:87 | After ...; | +| ControlFlow.cs:10:9:10:86 | Before Call (unknown target) | ControlFlow.cs:10:9:10:86 | Call (unknown target) | +| ControlFlow.cs:10:9:10:86 | Before Call (unknown target) | ControlFlow.cs:10:9:10:86 | object creation of type | +| ControlFlow.cs:10:9:10:86 | Before object creation of type | ControlFlow.cs:10:9:10:86 | Call (unknown target) | +| ControlFlow.cs:10:9:10:86 | Before object creation of type | ControlFlow.cs:10:9:10:86 | object creation of type | +| ControlFlow.cs:10:9:10:86 | Call (unknown target) | ControlFlow.cs:10:35:10:86 | Before { ..., ... } | +| ControlFlow.cs:10:9:10:86 | object creation of type | ControlFlow.cs:10:35:10:86 | Before { ..., ... } | +| ControlFlow.cs:10:9:10:87 | ...; | ControlFlow.cs:10:9:10:86 | Before Call (unknown target) | +| ControlFlow.cs:10:9:10:87 | ...; | ControlFlow.cs:10:9:10:86 | Before object creation of type | +| ControlFlow.cs:10:9:10:87 | After ...; | ControlFlow.cs:6:5:11:5 | After {...} | +| ControlFlow.cs:10:35:10:86 | After { ..., ... } | ControlFlow.cs:10:9:10:86 | After Call (unknown target) | +| ControlFlow.cs:10:35:10:86 | After { ..., ... } | ControlFlow.cs:10:9:10:86 | After object creation of type | +| ControlFlow.cs:10:35:10:86 | Before { ..., ... } | ControlFlow.cs:10:37:10:62 | Before ... = ... | +| ControlFlow.cs:10:35:10:86 | { ..., ... } | ControlFlow.cs:10:35:10:86 | After { ..., ... } | +| ControlFlow.cs:10:37:10:47 | access to array element | ControlFlow.cs:10:51:10:62 | access to field Empty | +| ControlFlow.cs:10:37:10:62 | ... = ... | ControlFlow.cs:10:37:10:62 | After ... = ... | +| ControlFlow.cs:10:37:10:62 | After ... = ... | ControlFlow.cs:10:65:10:84 | Before ... = ... | +| ControlFlow.cs:10:37:10:62 | Before ... = ... | ControlFlow.cs:10:37:10:47 | access to array element | +| ControlFlow.cs:10:51:10:62 | access to field Empty | ControlFlow.cs:10:37:10:62 | ... = ... | +| ControlFlow.cs:10:65:10:75 | access to array element | ControlFlow.cs:10:79:10:84 | Before Call (unknown target) | +| ControlFlow.cs:10:65:10:75 | access to array element | ControlFlow.cs:10:79:10:84 | Before access to property (unknown) | +| ControlFlow.cs:10:65:10:84 | ... = ... | ControlFlow.cs:10:65:10:84 | After ... = ... | +| ControlFlow.cs:10:65:10:84 | After ... = ... | ControlFlow.cs:10:35:10:86 | { ..., ... } | +| ControlFlow.cs:10:65:10:84 | Before ... = ... | ControlFlow.cs:10:65:10:75 | access to array element | | ControlFlow.cs:10:79:10:79 | access to local variable v | ControlFlow.cs:10:79:10:84 | Call (unknown target) | | ControlFlow.cs:10:79:10:79 | access to local variable v | ControlFlow.cs:10:79:10:84 | access to property (unknown) | -| ControlFlow.cs:10:79:10:84 | Call (unknown target) | ControlFlow.cs:10:65:10:75 | access to array element | -| ControlFlow.cs:10:79:10:84 | access to property (unknown) | ControlFlow.cs:10:65:10:75 | access to array element | +| ControlFlow.cs:10:79:10:84 | After Call (unknown target) | ControlFlow.cs:10:65:10:84 | ... = ... | +| ControlFlow.cs:10:79:10:84 | After access to property (unknown) | ControlFlow.cs:10:65:10:84 | ... = ... | +| ControlFlow.cs:10:79:10:84 | Before Call (unknown target) | ControlFlow.cs:10:79:10:79 | access to local variable v | +| ControlFlow.cs:10:79:10:84 | Before access to property (unknown) | ControlFlow.cs:10:79:10:79 | access to local variable v | +| ControlFlow.cs:10:79:10:84 | Call (unknown target) | ControlFlow.cs:10:79:10:84 | After Call (unknown target) | +| ControlFlow.cs:10:79:10:84 | Call (unknown target) | ControlFlow.cs:10:79:10:84 | After access to property (unknown) | +| ControlFlow.cs:10:79:10:84 | access to property (unknown) | ControlFlow.cs:10:79:10:84 | After Call (unknown target) | +| ControlFlow.cs:10:79:10:84 | access to property (unknown) | ControlFlow.cs:10:79:10:84 | After access to property (unknown) | diff --git a/csharp/ql/test/library-tests/standalone/controlflow/cfg.ql b/csharp/ql/test/library-tests/standalone/controlflow/cfg.ql index f596ac41629a..020863c588d7 100644 --- a/csharp/ql/test/library-tests/standalone/controlflow/cfg.ql +++ b/csharp/ql/test/library-tests/standalone/controlflow/cfg.ql @@ -11,6 +11,6 @@ class UnknownCall extends Call { override string toString() { result = "Call (unknown target)" } } -query predicate edges(ControlFlow::Node n1, ControlFlow::Node n2) { +query predicate edges(ControlFlowNode n1, ControlFlowNode n2) { not n1.getAstNode().fromLibrary() and n2 = n1.getASuccessor() } diff --git a/csharp/ql/test/query-tests/Linq/MissedSelectOpportunity/MissedSelectOpportunity.cs b/csharp/ql/test/query-tests/Linq/MissedSelectOpportunity/MissedSelectOpportunity.cs new file mode 100644 index 000000000000..9655a5a0fa9c --- /dev/null +++ b/csharp/ql/test/query-tests/Linq/MissedSelectOpportunity/MissedSelectOpportunity.cs @@ -0,0 +1,32 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using System.Threading.Tasks; + +class MissedSelectOpportunity +{ + public void M1(List lst) + { + // BAD: Can be replaced with lst.Select(i => i * i) + foreach (int i in lst) + { + int j = i * i; + Console.WriteLine(j); + } // $ Alert + } + + public async Task M2(IEnumerable counters) + { + // GOOD: Cannot use Select because the initializer contains an await expression + foreach (var counter in counters) + { + var count = await counter.CountAsync(); + Console.WriteLine(count); + } + } + + public interface ICounter + { + Task CountAsync(); + } +} diff --git a/csharp/ql/test/query-tests/Linq/MissedSelectOpportunity/MissedSelectOpportunity.expected b/csharp/ql/test/query-tests/Linq/MissedSelectOpportunity/MissedSelectOpportunity.expected new file mode 100644 index 000000000000..bc6d464fa3b9 --- /dev/null +++ b/csharp/ql/test/query-tests/Linq/MissedSelectOpportunity/MissedSelectOpportunity.expected @@ -0,0 +1 @@ +| MissedSelectOpportunity.cs:11:9:15:9 | foreach (... ... in ...) ... | This foreach loop immediately $@ - consider mapping the sequence explicitly using '.Select(...)'. | MissedSelectOpportunity.cs:13:13:13:26 | ... ...; | maps its iteration variable to another variable | diff --git a/csharp/ql/test/query-tests/Linq/MissedSelectOpportunity/MissedSelectOpportunity.qlref b/csharp/ql/test/query-tests/Linq/MissedSelectOpportunity/MissedSelectOpportunity.qlref new file mode 100644 index 000000000000..722d84896800 --- /dev/null +++ b/csharp/ql/test/query-tests/Linq/MissedSelectOpportunity/MissedSelectOpportunity.qlref @@ -0,0 +1,2 @@ +query: Linq/MissedSelectOpportunity.ql +postprocess: utils/test/InlineExpectationsTestQuery.ql diff --git a/csharp/ql/test/query-tests/Linq/MissedSelectOpportunity/options b/csharp/ql/test/query-tests/Linq/MissedSelectOpportunity/options new file mode 100644 index 000000000000..75c39b4541ba --- /dev/null +++ b/csharp/ql/test/query-tests/Linq/MissedSelectOpportunity/options @@ -0,0 +1,2 @@ +semmle-extractor-options: /nostdlib /noconfig +semmle-extractor-options: --load-sources-from-project:${testdir}/../../../resources/stubs/_frameworks/Microsoft.NETCore.App/Microsoft.NETCore.App.csproj diff --git a/csharp/ql/test/query-tests/Nullness/C.cs b/csharp/ql/test/query-tests/Nullness/C.cs index 8c6a0226f36f..4ca1e2adf539 100644 --- a/csharp/ql/test/query-tests/Nullness/C.cs +++ b/csharp/ql/test/query-tests/Nullness/C.cs @@ -264,6 +264,13 @@ public void Access() temp = sa.Length; // BAD (always), but not first } + public void CompoundAssignment() + { + C c1 = null; + C c2 = new C(true); + c1 += c2; // $ Alert[cs/dereferenced-value-is-always-null] + } + bool m; C(bool m) { @@ -271,4 +278,6 @@ public void Access() } bool Maybe() => this.m; + + public void operator +=(C other) { } } diff --git a/csharp/ql/test/query-tests/Nullness/NullAlways.expected b/csharp/ql/test/query-tests/Nullness/NullAlways.expected index a633c4a15064..f95639c9b329 100644 --- a/csharp/ql/test/query-tests/Nullness/NullAlways.expected +++ b/csharp/ql/test/query-tests/Nullness/NullAlways.expected @@ -24,6 +24,7 @@ | C.cs:249:9:249:9 | access to local variable a | Variable $@ is always null at this dereference. | C.cs:248:15:248:15 | a | a | | C.cs:260:9:260:10 | access to local variable ia | Variable $@ is always null at this dereference. | C.cs:257:15:257:16 | ia | ia | | C.cs:261:20:261:21 | access to local variable sa | Variable $@ is always null at this dereference. | C.cs:258:18:258:19 | sa | sa | +| C.cs:271:9:271:10 | access to local variable c1 | Variable $@ is always null at this dereference. | C.cs:269:11:269:12 | c1 | c1 | | D.cs:120:13:120:13 | access to local variable x | Variable $@ is always null at this dereference. | D.cs:117:13:117:13 | x | x | | D.cs:197:13:197:13 | access to local variable o | Variable $@ is always null at this dereference. | D.cs:195:13:195:13 | o | o | | D.cs:207:17:207:17 | access to local variable e | Variable $@ is always null at this dereference. | D.cs:204:26:204:26 | e | e | diff --git a/csharp/ql/test/query-tests/Nullness/NullMaybe.expected b/csharp/ql/test/query-tests/Nullness/NullMaybe.expected index 3f5219d8c0c9..ba8c7eb90913 100644 --- a/csharp/ql/test/query-tests/Nullness/NullMaybe.expected +++ b/csharp/ql/test/query-tests/Nullness/NullMaybe.expected @@ -52,7 +52,7 @@ | E.cs:302:9:302:9 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | E.cs:301:13:301:13 | s | s | E.cs:301:13:301:27 | String s = ... | this | | E.cs:343:9:343:9 | access to local variable x | Variable $@ may be null at this access because of $@ assignment. | E.cs:342:13:342:13 | x | x | E.cs:342:13:342:32 | String x = ... | this | | E.cs:349:9:349:9 | access to local variable x | Variable $@ may be null at this access because of $@ assignment. | E.cs:348:17:348:17 | x | x | E.cs:348:17:348:36 | dynamic x = ... | this | -| E.cs:366:41:366:41 | access to parameter s | Variable $@ may be null at this access because the parameter has a null default value. | E.cs:366:28:366:28 | s | s | E.cs:366:32:366:35 | null | this | +| E.cs:366:41:366:41 | access to parameter s | Variable $@ may be null at this access because of $@ assignment. | E.cs:366:28:366:28 | s | s | E.cs:366:32:366:35 | null | this | | E.cs:375:20:375:20 | access to local variable s | Variable $@ may be null at this access because of $@ assignment. | E.cs:374:17:374:17 | s | s | E.cs:374:17:374:31 | String s = ... | this | | E.cs:417:34:417:34 | access to parameter i | Variable $@ may be null at this access because it has a nullable type. | E.cs:415:27:415:27 | i | i | E.cs:415:27:415:27 | i | this | | E.cs:423:38:423:38 | access to parameter i | Variable $@ may be null at this access because it has a nullable type. | E.cs:420:27:420:27 | i | i | E.cs:420:27:420:27 | i | this | diff --git a/csharp/ql/test/query-tests/Useless Code/RedundantToStringCall/RedundantToStringCall.cs b/csharp/ql/test/query-tests/Useless Code/RedundantToStringCall/RedundantToStringCall.cs index 981b36002663..01c770d105b4 100644 --- a/csharp/ql/test/query-tests/Useless Code/RedundantToStringCall/RedundantToStringCall.cs +++ b/csharp/ql/test/query-tests/Useless Code/RedundantToStringCall/RedundantToStringCall.cs @@ -1,16 +1,24 @@ using System; +using System.Text; class RedundantToString { public void M(object o) { - Console.WriteLine(o.ToString()); // BAD + Console.WriteLine(o.ToString()); // $ Alert Console.WriteLine(o); // GOOD - Console.WriteLine($"Hello: {o.ToString()}"); // BAD + Console.WriteLine($"Hello: {o.ToString()}"); // $ Alert Console.WriteLine($"Hello: {o}"); // GOOD - Console.WriteLine("Hello: " + o.ToString()); // BAD + Console.WriteLine("Hello: " + o.ToString()); // $ Alert Console.WriteLine("Hello: " + o); // GOOD + + var sb = new StringBuilder(); + sb.Append(o.ToString()); // $ Alert + sb.Append(o); // GOOD + sb.AppendLine(o.ToString()); // GOOD + + Console.WriteLine($"Hello: {base.ToString()}"); // GOOD } } diff --git a/csharp/ql/test/query-tests/Useless Code/RedundantToStringCall/RedundantToStringCall.expected b/csharp/ql/test/query-tests/Useless Code/RedundantToStringCall/RedundantToStringCall.expected index 28775378f049..b81421da571f 100644 --- a/csharp/ql/test/query-tests/Useless Code/RedundantToStringCall/RedundantToStringCall.expected +++ b/csharp/ql/test/query-tests/Useless Code/RedundantToStringCall/RedundantToStringCall.expected @@ -1,4 +1,5 @@ -| RedundantToStringCall.cs:7:27:7:38 | call to method ToString | Redundant call to 'ToString' on a String object. | -| RedundantToStringCall.cs:10:37:10:48 | call to method ToString | Redundant call to 'ToString' on a String object. | -| RedundantToStringCall.cs:13:39:13:50 | call to method ToString | Redundant call to 'ToString' on a String object. | -| RedundantToStringCallBad.cs:7:45:7:56 | call to method ToString | Redundant call to 'ToString' on a String object. | +| RedundantToStringCall.cs:8:27:8:38 | call to method ToString | Redundant call to 'ToString'. | +| RedundantToStringCall.cs:11:37:11:48 | call to method ToString | Redundant call to 'ToString'. | +| RedundantToStringCall.cs:14:39:14:50 | call to method ToString | Redundant call to 'ToString'. | +| RedundantToStringCall.cs:18:19:18:30 | call to method ToString | Redundant call to 'ToString'. | +| RedundantToStringCallBad.cs:7:45:7:56 | call to method ToString | Redundant call to 'ToString'. | diff --git a/csharp/ql/test/query-tests/Useless Code/RedundantToStringCall/RedundantToStringCall.qlref b/csharp/ql/test/query-tests/Useless Code/RedundantToStringCall/RedundantToStringCall.qlref index c0ee8dd0ec7d..86bf1476007d 100644 --- a/csharp/ql/test/query-tests/Useless Code/RedundantToStringCall/RedundantToStringCall.qlref +++ b/csharp/ql/test/query-tests/Useless Code/RedundantToStringCall/RedundantToStringCall.qlref @@ -1 +1,3 @@ -Useless code/RedundantToStringCall.ql \ No newline at end of file +query: Useless code/RedundantToStringCall.ql +postprocess: + - utils/test/InlineExpectationsTestQuery.ql diff --git a/csharp/ql/test/query-tests/Useless Code/RedundantToStringCall/RedundantToStringCallBad.cs b/csharp/ql/test/query-tests/Useless Code/RedundantToStringCall/RedundantToStringCallBad.cs index d6d043f23762..ed5cd137a855 100644 --- a/csharp/ql/test/query-tests/Useless Code/RedundantToStringCall/RedundantToStringCallBad.cs +++ b/csharp/ql/test/query-tests/Useless Code/RedundantToStringCall/RedundantToStringCallBad.cs @@ -4,6 +4,6 @@ class Bad { static string Hello(object o) { - return string.Format("Hello, {0}!", o.ToString()); + return string.Format("Hello, {0}!", o.ToString()); // $ Alert } } diff --git a/csharp/ql/test/resources/stubs/System.Web.cs b/csharp/ql/test/resources/stubs/System.Web.cs index c15b871095ff..23ae0f298cf4 100644 --- a/csharp/ql/test/resources/stubs/System.Web.cs +++ b/csharp/ql/test/resources/stubs/System.Web.cs @@ -454,3 +454,8 @@ public class SimpleTypeResolver : System.Web.Script.Serialization.JavaScriptType public SimpleTypeResolver() => throw null; } } + +namespace System.Web.Services +{ + public class WebMethodAttribute : Attribute { } +} diff --git a/csharp/ql/test/utils/modelgenerator/dataflow/Summaries.cs b/csharp/ql/test/utils/modelgenerator/dataflow/Summaries.cs index b59513504d9d..4c85b397ac1f 100644 --- a/csharp/ql/test/utils/modelgenerator/dataflow/Summaries.cs +++ b/csharp/ql/test/utils/modelgenerator/dataflow/Summaries.cs @@ -536,6 +536,12 @@ public void Apply(Action a, object o) { a(o); } + + private void CallApply() + { + // Test that this call to `Apply` does not interfere with the flow summaries generated for `Apply` + Apply(x => x, null); + } } public static class HigherOrderExtensionMethods diff --git a/docs/codeql/codeql-language-guides/codeql-for-rust.rst b/docs/codeql/codeql-language-guides/codeql-for-rust.rst index 1c08acbf2fbe..f6b1691a771a 100644 --- a/docs/codeql/codeql-language-guides/codeql-for-rust.rst +++ b/docs/codeql/codeql-language-guides/codeql-for-rust.rst @@ -12,9 +12,12 @@ Experiment and learn how to write effective and efficient queries for CodeQL dat basic-query-for-rust-code codeql-library-for-rust analyzing-data-flow-in-rust + customizing-library-models-for-rust - :doc:`Basic query for Rust code `: Learn to write and run a simple CodeQL query. - :doc:`CodeQL library for Rust `: When analyzing Rust code, you can make use of the large collection of classes in the CodeQL library for Rust. - :doc:`Analyzing data flow in Rust `: You can use CodeQL to track the flow of data through a Rust program to places where the data is used. + +- :doc:`Customizing library models for Rust `: You can model frameworks and libraries that your codebase depends on using data extensions and publish them as CodeQL model packs. diff --git a/docs/codeql/codeql-language-guides/customizing-library-models-for-actions.rst b/docs/codeql/codeql-language-guides/customizing-library-models-for-actions.rst index 2bf452b5a90b..0b78b37359f4 100644 --- a/docs/codeql/codeql-language-guides/customizing-library-models-for-actions.rst +++ b/docs/codeql/codeql-language-guides/customizing-library-models-for-actions.rst @@ -24,26 +24,26 @@ The CodeQL library for GitHub Actions exposes the following extensible predicate Customizing data flow and taint tracking: -- **actionsSourceModel**\(action, version, output, kind, provenance) -- **actionsSinkModel**\(action, version, input, kind, provenance) -- **actionsSummaryModel**\(action, version, input, output, kind, provenance) +- ``actionsSourceModel(action, version, output, kind, provenance)`` +- ``actionsSinkModel(action, version, input, kind, provenance)`` +- ``actionsSummaryModel(action, version, input, output, kind, provenance)`` Customizing Actions-specific analysis: -- **argumentInjectionSinksDataModel**\(regexp, command_group, argument_group) -- **contextTriggerDataModel**\(trigger, context_prefix) -- **externallyTriggerableEventsDataModel**\(event) -- **immutableActionsDataModel**\(action) -- **poisonableActionsDataModel**\(action) -- **poisonableCommandsDataModel**\(regexp) -- **poisonableLocalScriptsDataModel**\(regexp, group) -- **repositoryDataModel**\(visibility, default_branch_name) -- **trustedActionsOwnerDataModel**\(owner) -- **untrustedEventPropertiesDataModel**\(property, kind) -- **untrustedGhCommandDataModel**\(cmd_regex, flag) -- **untrustedGitCommandDataModel**\(cmd_regex, flag) -- **vulnerableActionsDataModel**\(action, vulnerable_version, vulnerable_sha, fixed_version) -- **workflowDataModel**\(path, trigger, job, secrets_source, permissions, runner) +- ``argumentInjectionSinksDataModel(regexp, command_group, argument_group)`` +- ``contextTriggerDataModel(trigger, context_prefix)`` +- ``externallyTriggerableEventsDataModel(event)`` +- ``immutableActionsDataModel(action)`` +- ``poisonableActionsDataModel(action)`` +- ``poisonableCommandsDataModel(regexp)`` +- ``poisonableLocalScriptsDataModel(regexp, group)`` +- ``repositoryDataModel(visibility, default_branch_name)`` +- ``trustedActionsOwnerDataModel(owner)`` +- ``untrustedEventPropertiesDataModel(property, kind)`` +- ``untrustedGhCommandDataModel(cmd_regex, flag)`` +- ``untrustedGitCommandDataModel(cmd_regex, flag)`` +- ``vulnerableActionsDataModel(action, vulnerable_version, vulnerable_sha, fixed_version)`` +- ``workflowDataModel(path, trigger, job, secrets_source, permissions, runner)`` Examples of custom model definitions ------------------------------------ @@ -62,9 +62,9 @@ To allow any Action from the publisher ``octodemo``, such as ``octodemo/3rd-part .. code-block:: yaml extensions: - - addsTo: + - addsTo: pack: codeql/actions-all - extensible: trustedActionsOwnerDataModel + extensible: trustedActionsOwnerDataModel data: - ["octodemo"] diff --git a/docs/codeql/codeql-language-guides/customizing-library-models-for-cpp.rst b/docs/codeql/codeql-language-guides/customizing-library-models-for-cpp.rst index 29e8be5a4ae4..7ca619632272 100644 --- a/docs/codeql/codeql-language-guides/customizing-library-models-for-cpp.rst +++ b/docs/codeql/codeql-language-guides/customizing-library-models-for-cpp.rst @@ -58,6 +58,8 @@ The CodeQL library for CPP analysis exposes the following extensible predicates: - ``sourceModel(namespace, type, subtypes, name, signature, ext, output, kind, provenance)``. This is used to model sources of potentially tainted data. The ``kind`` of the sources defined using this predicate determine which threat model they are associated with. Different threat models can be used to customize the sources used in an analysis. For more information, see ":ref:`Threat models `." - ``sinkModel(namespace, type, subtypes, name, signature, ext, input, kind, provenance)``. This is used to model sinks where tainted data may be used in a way that makes the code vulnerable. - ``summaryModel(namespace, type, subtypes, name, signature, ext, input, output, kind, provenance)``. This is used to model flow through elements. +- ``barrierModel(namespace, type, subtypes, name, signature, ext, output, kind, provenance)``. This is used to model barriers, which are elements that stop the flow of taint. +- ``barrierGuardModel(namespace, type, subtypes, name, signature, ext, input, acceptingValue, kind, provenance)``. This is used to model barrier guards, which are elements that can stop the flow of taint depending on a conditional check. The extensible predicates are populated using the models defined in data extension files. @@ -75,7 +77,7 @@ This example shows how the CPP query pack models the return value from the ``rea boost::asio::read_until(socket, recv_buffer, '\0', error); -We need to add a tuple to the ``sourceModel``\(namespace, type, subtypes, name, signature, ext, output, kind, provenance) extensible predicate by updating a data extension file. +We need to add a tuple to the ``sourceModel(namespace, type, subtypes, name, signature, ext, output, kind, provenance)`` extensible predicate by updating a data extension file. .. code-block:: yaml @@ -86,12 +88,11 @@ We need to add a tuple to the ``sourceModel``\(namespace, type, subtypes, name, data: - ["boost::asio", "", False, "read_until", "", "", "Argument[*1]", "remote", "manual"] -Since we are adding a new source, we need to add a tuple to the ``sourceModel`` extensible predicate. The first five values identify the callable (in this case a free function) to be modeled as a source. - The first value ``"boost::asio"`` is the namespace name. -- The second value ``""`` is the name of the type (class) that contains the method. Because we're modelling a free function, the type is left blank. -- The third value ``False`` is a flag that indicates whether or not the sink also applies to all overrides of the method. For a free function, this should be ``False``. +- The second value ``""`` is the name of the type (class) that contains the method. Because we're modeling a free function, the type is left blank. +- The third value ``False`` is a flag that indicates whether or not the model also applies to all overrides of the method. For a free function, this should be ``False``. - The fourth value ``"read_until"`` is the function name. - The fifth value is the function input type signature, which can be used to narrow down between functions that have the same name. In this case, we want the model to include all functions in ``boost::asio`` called ``read_until``. @@ -111,7 +112,7 @@ This example shows how the CPP query pack models the second argument of the ``bo boost::asio::write(socket, send_buffer, error); -We need to add a tuple to the ``sinkModel``\(namespace, type, subtypes, name, signature, ext, input, kind, provenance) extensible predicate by updating a data extension file. +We need to add a tuple to the ``sinkModel(namespace, type, subtypes, name, signature, ext, input, kind, provenance)`` extensible predicate by updating a data extension file. .. code-block:: yaml @@ -122,12 +123,11 @@ We need to add a tuple to the ``sinkModel``\(namespace, type, subtypes, name, si data: - ["boost::asio", "", False, "write", "", "", "Argument[*1]", "remote-sink", "manual"] -Since we want to add a new sink, we need to add a tuple to the ``sinkModel`` extensible predicate. The first five values identify the callable (in this case a free function) to be modeled as a sink. - The first value ``"boost::asio"`` is the namespace name. -- The second value ``""`` is the name of the type (class) that contains the method. Because we're modelling a free function, the type is left blank. -- The third value ``False`` is a flag that indicates whether or not the sink also applies to all overrides of the method. For a free function, this should be ``False``. +- The second value ``""`` is the name of the type (class) that contains the method. Because we're modeling a free function, the type is left blank. +- The third value ``False`` is a flag that indicates whether or not the model also applies to all overrides of the method. For a free function, this should be ``False``. - The fourth value ``"write"`` is the function name. - The fifth value is the function input type signature, which can be used to narrow down between functions that have the same name. In this case, we want the model to include all functions in ``boost::asio`` called ``write``. @@ -147,7 +147,7 @@ This example shows how the CPP query pack models flow through a function for a s boost::asio::write(socket, boost::asio::buffer(send_str), error); -We need to add tuples to the ``summaryModel``\(namespace, type, subtypes, name, signature, ext, input, output, kind, provenance) extensible predicate by updating a data extension file: +We need to add tuples to the ``summaryModel(namespace, type, subtypes, name, signature, ext, input, output, kind, provenance)`` extensible predicate by updating a data extension file: .. code-block:: yaml @@ -158,13 +158,11 @@ We need to add tuples to the ``summaryModel``\(namespace, type, subtypes, name, data: - ["boost::asio", "", False, "buffer", "", "", "Argument[*0]", "ReturnValue", "taint", "manual"] -Since we are adding flow through a function, we need to add tuples to the ``summaryModel`` extensible predicate. - The first five values identify the callable (in this case free function) to be modeled as a summary. - The first value ``"boost::asio"`` is the namespace name. -- The second value ``""`` is the name of the type (class) that contains the method. Because we're modelling a free function, the type is left blank. -- The third value ``False`` is a flag that indicates whether or not the sink also applies to all overrides of the method. For a free function, this should be ``False``. +- The second value ``""`` is the name of the type (class) that contains the method. Because we're modeling a free function, the type is left blank. +- The third value ``False`` is a flag that indicates whether or not the model also applies to all overrides of the method. For a free function, this should be ``False``. - The fourth value ``"buffer"`` is the function name. - The fifth value is the function input type signature, which can be used to narrow down between functions that have the same name. In this case, we want the model to include all functions in ``boost::asio`` called ``buffer``. @@ -176,6 +174,86 @@ The remaining values are used to define the input and output specifications, the - The ninth value ``"taint"`` is the kind of the flow. ``taint`` means that taint is propagated through the call. - The tenth value ``"manual"`` is the provenance of the summary, which is used to identify the origin of the summary model. +Example: Taint barrier using the ``mysql_real_escape_string`` function +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This example shows how the CPP query pack models the ``mysql_real_escape_string`` function as a barrier for SQL injection. +This function escapes special characters in a string for use in an SQL statement, which prevents SQL injection attacks. + +.. code-block:: cpp + + char *query = "SELECT * FROM users WHERE name = '%s'"; + char *name = get_untrusted_input(); + char *escaped_name = new char[2 * strlen(name) + 1]; + mysql_real_escape_string(mysql, escaped_name, name, strlen(name)); // The escaped_name is safe for SQL injection. + sprintf(query_buffer, query, escaped_name); + +We need to add a tuple to the ``barrierModel(namespace, type, subtypes, name, signature, ext, output, kind, provenance)`` extensible predicate by updating a data extension file. + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/cpp-all + extensible: barrierModel + data: + - ["", "", False, "mysql_real_escape_string", "", "", "Argument[*1]", "sql-injection", "manual"] + +The first five values identify the callable (in this case a free function) to be modeled as a barrier. + +- The first value ``""`` is the namespace name. +- The second value ``""`` is the name of the type (class) that contains the method. Because we're modeling a free function, the type is left blank. +- The third value ``False`` is a flag that indicates whether or not the model also applies to all overrides of the method. For a free function, this should be ``False``. +- The fourth value ``"mysql_real_escape_string"`` is the function name. +- The fifth value is the function input type signature, which can be used to narrow down between functions that have the same name. + +The sixth value should be left empty and is out of scope for this documentation. +The remaining values are used to define the output specification, the ``kind``, and the ``provenance`` (origin) of the barrier. + +- The seventh value ``"Argument[*1]"`` is the output specification, which means in this case that the barrier is the first indirection (or pointed-to value, ``*``) of the second argument (``Argument[1]``) passed to the function. +- The eighth value ``"sql-injection"`` is the kind of the barrier. The barrier kind is used to define the queries where the barrier is in scope. +- The ninth value ``"manual"`` is the provenance of the barrier, which is used to identify the origin of the barrier model. + +Example: Add a barrier guard +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This example shows how to model a barrier guard that stops the flow of taint when a conditional check is performed on data. +A barrier guard model is used when a function returns a boolean that indicates whether the data is safe to use. +Consider a function called ``is_safe`` which returns ``true`` when the data is considered safe. + +.. code-block:: cpp + + if (is_safe(user_input)) { // The check guards the use, so the input is safe. + mysql_query(user_input); // This is safe. + } + +We need to add a tuple to the ``barrierGuardModel(namespace, type, subtypes, name, signature, ext, input, acceptingValue, kind, provenance)`` extensible predicate by updating a data extension file. + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/cpp-all + extensible: barrierGuardModel + data: + - ["", "", False, "is_safe", "", "", "Argument[*0]", "true", "sql-injection", "manual"] + +The first five values identify the callable (in this case a free function) to be modeled as a barrier guard. + +- The first value ``""`` is the namespace name. +- The second value ``""`` is the name of the type (class) that contains the method. Because we're modeling a free function, the type is left blank. +- The third value ``False`` is a flag that indicates whether or not the model guard also applies to all overrides of the method. For a free function, this should be ``False``. +- The fourth value ``"is_safe"`` is the function name. +- The fifth value is the function input type signature, which can be used to narrow down between functions that have the same name. + +The sixth value should be left empty and is out of scope for this documentation. +The remaining values are used to define the input specification, the ``accepting-value``, the ``kind``, and the ``provenance`` (origin) of the barrier guard. + +- The seventh value ``Argument[*0]`` is the input specification (the value being validated). In this case, the first indirection (or pointed-to value, ``*``) of the first argument (``Argument[0]``) passed to the function. +- The eighth value ``true`` is the accepting value of the barrier guard. This is the value that the conditional check must return for the barrier to apply. +- The ninth value ``sql-injection`` is the kind of the barrier guard. The barrier guard kind is used to define the queries where the barrier guard is in scope. +- The tenth value ``manual`` is the provenance of the barrier guard, which is used to identify the origin of the barrier guard. + .. _threat-models-cpp: Threat models diff --git a/docs/codeql/codeql-language-guides/customizing-library-models-for-csharp.rst b/docs/codeql/codeql-language-guides/customizing-library-models-for-csharp.rst index 39b5ee30ee47..a4b0e26d1bc8 100644 --- a/docs/codeql/codeql-language-guides/customizing-library-models-for-csharp.rst +++ b/docs/codeql/codeql-language-guides/customizing-library-models-for-csharp.rst @@ -58,6 +58,8 @@ The CodeQL library for C# analysis exposes the following extensible predicates: - ``sourceModel(namespace, type, subtypes, name, signature, ext, output, kind, provenance)``. This is used to model sources of potentially tainted data. The ``kind`` of the sources defined using this predicate determine which threat model they are associated with. Different threat models can be used to customize the sources used in an analysis. For more information, see ":ref:`Threat models `." - ``sinkModel(namespace, type, subtypes, name, signature, ext, input, kind, provenance)``. This is used to model sinks where tainted data may be used in a way that makes the code vulnerable. - ``summaryModel(namespace, type, subtypes, name, signature, ext, input, output, kind, provenance)``. This is used to model flow through elements. +- ``barrierModel(namespace, type, subtypes, name, signature, ext, output, kind, provenance)``. This is used to model barriers, which are elements that stop the flow of taint. +- ``barrierGuardModel(namespace, type, subtypes, name, signature, ext, input, acceptingValue, kind, provenance)``. This is used to model barrier guards, which are elements that can stop the flow of taint depending on a conditional check. - ``neutralModel(namespace, type, name, signature, kind, provenance)``. This is similar to a summary model but used to model the flow of values that have only a minor impact on the dataflow analysis. Manual neutral models (those with a provenance such as ``manual`` or ``ai-manual``) can be used to override generated summary models (those with a provenance such as ``df-generated``), so that the summary model will be ignored. Other than that, neutral models have no effect. The extensible predicates are populated using the models defined in data extension files. @@ -91,19 +93,18 @@ We need to add a tuple to the ``sinkModel``\(namespace, type, subtypes, name, si data: - ["System.Data.SqlClient", "SqlCommand", False, "SqlCommand", "(System.String,System.Data.SqlClient.SqlConnection)", "", "Argument[0]", "sql-injection", "manual"] -Since we want to add a new sink, we need to add a tuple to the ``sinkModel`` extensible predicate. The first five values identify the callable (in this case a method) to be modeled as a sink. - The first value ``System.Data.SqlClient`` is the namespace name. - The second value ``SqlCommand`` is the name of the class (type) that contains the method. -- The third value ``False`` is a flag that indicates whether or not the sink also applies to all overrides of the method. +- The third value ``False`` is a flag that indicates whether or not the model also applies to all overrides of the method. - The fourth value ``SqlCommand`` is the method name. Constructors are named after the class. - The fifth value ``(System.String,System.Data.SqlClient.SqlConnection)`` is the method input type signature. The type names must be fully qualified. The sixth value should be left empty and is out of scope for this documentation. -The remaining values are used to define the ``access path``, the ``kind``, and the ``provenance`` (origin) of the sink. +The remaining values are used to define the ``access-path``, the ``kind``, and the ``provenance`` (origin) of the sink. -- The seventh value ``Argument[0]`` is the ``access path`` to the first argument passed to the method, which means that this is the location of the sink. +- The seventh value ``Argument[0]`` is the ``access-path`` to the first argument passed to the method, which means that this is the location of the sink. - The eighth value ``sql-injection`` is the kind of the sink. The sink kind is used to define the queries where the sink is in scope. In this case - the SQL injection queries. - The ninth value ``manual`` is the provenance of the sink, which is used to identify the origin of the sink. @@ -119,7 +120,7 @@ This is the ``GetStream`` method in the ``TcpClient`` class, which is located in ... } -We need to add a tuple to the ``sourceModel``\(namespace, type, subtypes, name, signature, ext, output, kind, provenance) extensible predicate by updating a data extension file. +We need to add a tuple to the ``sourceModel(namespace, type, subtypes, name, signature, ext, output, kind, provenance)`` extensible predicate by updating a data extension file. .. code-block:: yaml @@ -130,18 +131,16 @@ We need to add a tuple to the ``sourceModel``\(namespace, type, subtypes, name, data: - ["System.Net.Sockets", "TcpClient", False, "GetStream", "()", "", "ReturnValue", "remote", "manual"] - -Since we are adding a new source, we need to add a tuple to the ``sourceModel`` extensible predicate. The first five values identify the callable (in this case a method) to be modeled as a source. - The first value ``System.Net.Sockets`` is the namespace name. - The second value ``TcpClient`` is the name of the class (type) that contains the source. -- The third value ``False`` is a flag that indicates whether or not the source also applies to all overrides of the method. +- The third value ``False`` is a flag that indicates whether or not the model also applies to all overrides of the method. - The fourth value ``GetStream`` is the method name. - The fifth value ``()`` is the method input type signature. The sixth value should be left empty and is out of scope for this documentation. -The remaining values are used to define the ``access path``, the ``kind``, and the ``provenance`` (origin) of the source. +The remaining values are used to define the ``access-path``, the ``kind``, and the ``provenance`` (origin) of the source. - The seventh value ``ReturnValue`` is the access path to the return of the method, which means that it is the return value that should be considered a source of tainted input. - The eighth value ``remote`` is the kind of the source. The source kind is used to define the threat model where the source is in scope. ``remote`` applies to many of the security related queries as it means a remote source of untrusted data. As an example the SQL injection query uses ``remote`` sources. For more information, see ":ref:`Threat models `." @@ -159,7 +158,7 @@ This pattern covers many of the cases where we need to summarize flow through a ... } -We need to add tuples to the ``summaryModel``\(namespace, type, subtypes, name, signature, ext, input, output, kind, provenance) extensible predicate by updating a data extension file: +We need to add tuples to the ``summaryModel(namespace, type, subtypes, name, signature, ext, input, output, kind, provenance)`` extensible predicate by updating a data extension file: .. code-block:: yaml @@ -171,7 +170,6 @@ We need to add tuples to the ``summaryModel``\(namespace, type, subtypes, name, - ["System", "String", False, "Concat", "(System.Object,System.Object)", "", "Argument[0]", "ReturnValue", "taint", "manual"] - ["System", "String", False, "Concat", "(System.Object,System.Object)", "", "Argument[1]", "ReturnValue", "taint", "manual"] -Since we are adding flow through a method, we need to add tuples to the ``summaryModel`` extensible predicate. Each tuple defines flow from one argument to the return value. The first row defines flow from the first argument (``s1`` in the example) to the return value (``t`` in the example) and the second row defines flow from the second argument (``s2`` in the example) to the return value (``t`` in the example). @@ -180,12 +178,12 @@ These are the same for both of the rows above as we are adding two summaries for - The first value ``System`` is the namespace name. - The second value ``String`` is the class (type) name. -- The third value ``False`` is a flag that indicates whether or not the summary also applies to all overrides of the method. +- The third value ``False`` is a flag that indicates whether or not the model also applies to all overrides of the method. - The fourth value ``Concat`` is the method name. - The fifth value ``(System.Object,System.Object)`` is the method input type signature. The sixth value should be left empty and is out of scope for this documentation. -The remaining values are used to define the ``access path``, the ``kind``, and the ``provenance`` (origin) of the summary. +The remaining values are used to define the ``access-path``, the ``kind``, and the ``provenance`` (origin) of the summary. - The seventh value is the access path to the input (where data flows from). ``Argument[0]`` is the access path to the first argument (``s1`` in the example) and ``Argument[1]`` is the access path to the second argument (``s2`` in the example). - The eighth value ``ReturnValue`` is the access path to the output (where data flows to), in this case ``ReturnValue``, which means that the input flows to the return value. @@ -216,7 +214,7 @@ This example shows how the C# query pack models flow through a method for a simp ... } -We need to add a tuple to the ``summaryModel``\(namespace, type, subtypes, name, signature, ext, input, output, kind, provenance) extensible predicate by updating a data extension file: +We need to add a tuple to the ``summaryModel(namespace, type, subtypes, name, signature, ext, input, output, kind, provenance)`` extensible predicate by updating a data extension file: .. code-block:: yaml @@ -227,7 +225,6 @@ We need to add a tuple to the ``summaryModel``\(namespace, type, subtypes, name, data: - ["System", "String", False, "Trim", "()", "", "Argument[this]", "ReturnValue", "taint", "manual"] -Since we are adding flow through a method, we need to add tuples to the ``summaryModel`` extensible predicate. Each tuple defines flow from one argument to the return value. The first row defines flow from the qualifier of the method call (``s1`` in the example) to the return value (``t`` in the example). @@ -236,12 +233,12 @@ These are the same for both of the rows above as we are adding two summaries for - The first value ``System`` is the namespace name. - The second value ``String`` is the class (type) name. -- The third value ``False`` is a flag that indicates whether or not the summary also applies to all overrides of the method. +- The third value ``False`` is a flag that indicates whether or not the model also applies to all overrides of the method. - The fourth value ``Trim`` is the method name. - The fifth value ``()`` is the method input type signature. The sixth value should be left empty and is out of scope for this documentation. -The remaining values are used to define the ``access path``, the ``kind``, and the ``provenance`` (origin) of the summary. +The remaining values are used to define the ``access-path``, the ``kind``, and the ``provenance`` (origin) of the summary. - The seventh value is the access path to the input (where data flows from). ``Argument[this]`` is the access path to the qualifier (``s`` in the example). - The eighth value ``ReturnValue`` is the access path to the output (where data flows to), in this case ``ReturnValue``, which means that the input flows to the return value. @@ -260,7 +257,7 @@ Here we model flow through higher order methods and collection types, as well as ... } -We need to add tuples to the ``summaryModel``\(namespace, type, subtypes, name, signature, ext, input, output, kind, provenance) extensible predicate by updating a data extension file: +We need to add tuples to the ``summaryModel(namespace, type, subtypes, name, signature, ext, input, output, kind, provenance)`` extensible predicate by updating a data extension file: .. code-block:: yaml @@ -272,20 +269,18 @@ We need to add tuples to the ``summaryModel``\(namespace, type, subtypes, name, - ["System.Linq", "Enumerable", False, "Select", "(System.Collections.Generic.IEnumerable,System.Func)", "", "Argument[0].Element", "Argument[1].Parameter[0]", "value", "manual"] - ["System.Linq", "Enumerable", False, "Select", "(System.Collections.Generic.IEnumerable,System.Func)", "", "Argument[1].ReturnValue", "ReturnValue.Element", "value", "manual"] - -Since we are adding flow through a method, we need to add tuples to the ``summaryModel`` extensible predicate. Each tuple defines part of the flow that comprises the total flow through the ``Select`` method. The first five values identify the callable (in this case a method) to be modeled as a summary. These are the same for both of the rows above as we are adding two summaries for the same method. - The first value ``System.Linq`` is the namespace name. - The second value ``Enumerable`` is the class (type) name. -- The third value ``False`` is a flag that indicates whether or not the summary also applies to all overrides of the method. +- The third value ``False`` is a flag that indicates whether or not the model also applies to all overrides of the method. - The fourth value ``Select`` is the method name, along with the type parameters for the method. The names of the generic type parameters provided in the model must match the names of the generic type parameters in the method signature in the source code. - The fifth value ``(System.Collections.Generic.IEnumerable,System.Func)`` is the method input type signature. The generics in the signature must match the generics in the method signature in the source code. The sixth value should be left empty and is out of scope for this documentation. -The remaining values are used to define the ``access path``, the ``kind``, and the ``provenance`` (origin) of the summary definition. +The remaining values are used to define the ``access-path``, the ``kind``, and the ``provenance`` (origin) of the summary definition. - The seventh value is the access path to the ``input`` (where data flows from). - The eighth value is the access path to the ``output`` (where data flows to). @@ -307,6 +302,88 @@ For the remaining values for both rows: That is, the first row specifies that values can flow from the elements of the qualifier enumerable into the first argument of the function provided to ``Select``. The second row specifies that values can flow from the return value of the function to the elements of the enumerable returned from ``Select``. +Example: Add a barrier for the ``RawUrl`` property +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This example shows how we can model a property as a barrier for a specific kind of query. +A barrier model is used to define that the flow of taint stops at the modeled element for the specified kind of query. +Here we model the getter of the ``RawUrl`` property of the ``HttpRequest`` class as a barrier for URL redirection queries. +The ``RawUrl`` property returns the raw URL of the current request, which is considered safe for URL redirects because it is the URL of the current request and cannot be manipulated by an attacker. + +.. code-block:: csharp + + public static void TaintBarrier(HttpRequest request) { + string url = request.RawUrl; // The return value of this property is considered safe for URL redirects. + Response.Redirect(url); // This is not a URL redirection vulnerability. + } + +We need to add a tuple to the ``barrierModel(namespace, type, subtypes, name, signature, ext, output, kind, provenance)`` extensible predicate by updating a data extension file. + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/csharp-all + extensible: barrierModel + data: + - ["System.Web", "HttpRequest", False, "get_RawUrl", "()", "", "ReturnValue", "url-redirection", "manual"] + +The first five values identify the callable (in this case the getter of a property) to be modeled as a barrier. + +- The first value ``System.Web`` is the namespace name. +- The second value ``HttpRequest`` is the class (type) name. +- The third value ``False`` is a flag that indicates whether or not the model also applies to all overrides of the method. +- The fourth value ``get_RawUrl`` is the method name. Getter and setter methods are named ``get_`` and ``set_`` respectively. +- The fifth value ``()`` is the method input type signature. + +The sixth value should be left empty and is out of scope for this documentation. +The remaining values are used to define the ``access-path``, the ``kind``, and the ``provenance`` (origin) of the barrier. + +- The seventh value ``ReturnValue`` is the access path to the return value of the property getter, which means that the return value is considered safe. +- The eighth value ``url-redirection`` is the kind of the barrier. The barrier kind is used to define the queries where the barrier is in scope. In this case - the URL redirection queries. +- The ninth value ``manual`` is the provenance of the barrier, which is used to identify the origin of the barrier. + +Example: Add a barrier guard for the ``IsAbsoluteUri`` property +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This example shows how we can model a property as a barrier guard for a specific kind of query. +A barrier guard model is used to stop the flow of taint when a conditional check is performed on data. +Here we model the getter of the ``IsAbsoluteUri`` property of the ``Uri`` class as a barrier guard for URL redirection queries. +When the ``IsAbsoluteUri`` property returns ``false``, the URL is relative and therefore safe for URL redirects because it cannot redirect to an external site controlled by an attacker. + +.. code-block:: csharp + + public static void TaintBarrierGuard(Uri uri) { + if (!uri.IsAbsoluteUri) { // The check guards the redirect, so the URL is safe. + Response.Redirect(uri.ToString()); // This is not a URL redirection vulnerability. + } + } + +We need to add a tuple to the ``barrierGuardModel(namespace, type, subtypes, name, signature, ext, input, acceptingValue, kind, provenance)`` extensible predicate by updating a data extension file. + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/csharp-all + extensible: barrierGuardModel + data: + - ["System", "Uri", False, "get_IsAbsoluteUri", "()", "", "Argument[this]", "false", "url-redirection", "manual"] + +The first five values identify the callable (in this case the getter of a property) to be modeled as a barrier guard. + +- The first value ``System`` is the namespace name. +- The second value ``Uri`` is the class (type) name. +- The third value ``False`` is a flag that indicates whether or not the model guard also applies to all overrides of the method. +- The fourth value ``get_IsAbsoluteUri`` is the method name. Getter and setter methods are named ``get_`` and ``set_`` respectively. +- The fifth value ``()`` is the method input type signature. + +The sixth value should be left empty and is out of scope for this documentation. +The remaining values are used to define the ``access-path``, the ``accepting-value``, the ``kind``, and the ``provenance`` (origin) of the barrier guard. + +- The seventh value ``Argument[this]`` is the access path to the input whose flow is blocked. In this case, the qualifier of the property access (``uri`` in the example). +- The eighth value ``false`` is the accepting value of the barrier guard. This is the value that the conditional check must return for the barrier to apply. In this case, when ``IsAbsoluteUri`` is ``false``, the URL is relative and considered safe. +- The ninth value ``url-redirection`` is the kind of the barrier guard. The barrier guard kind is used to define the queries where the barrier guard is in scope. In this case - the URL redirection queries. +- The tenth value ``manual`` is the provenance of the barrier guard, which is used to identify the origin of the barrier guard. + Example: Add a ``neutral`` method ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This example shows how we can model a method as being neutral with respect to flow. We will also cover how to model a property by modeling the getter of the ``Now`` property of the ``DateTime`` class as neutral. @@ -319,7 +396,7 @@ A neutral model is used to define that there is no flow through a method. ... } -We need to add a tuple to the ``neutralModel``\(namespace, type, name, signature, kind, provenance) extensible predicate by updating a data extension file. +We need to add a tuple to the ``neutralModel(namespace, type, name, signature, kind, provenance)`` extensible predicate by updating a data extension file. .. code-block:: yaml @@ -330,8 +407,6 @@ We need to add a tuple to the ``neutralModel``\(namespace, type, name, signature data: - ["System", "DateTime", "get_Now", "()", "summary", "manual"] - -Since we are adding a neutral model, we need to add tuples to the ``neutralModel`` extensible predicate. The first four values identify the callable (in this case the getter of the ``Now`` property) to be modeled as a neutral, the fifth value is the kind, and the sixth value is the provenance (origin) of the neutral. - The first value ``System`` is the namespace name. diff --git a/docs/codeql/codeql-language-guides/customizing-library-models-for-go.rst b/docs/codeql/codeql-language-guides/customizing-library-models-for-go.rst index c5b74ccd73ae..f8f576b16b16 100644 --- a/docs/codeql/codeql-language-guides/customizing-library-models-for-go.rst +++ b/docs/codeql/codeql-language-guides/customizing-library-models-for-go.rst @@ -58,6 +58,8 @@ The CodeQL library for Go analysis exposes the following extensible predicates: - ``sourceModel(package, type, subtypes, name, signature, ext, output, kind, provenance)``. This is used to model sources of potentially tainted data. The ``kind`` of the sources defined using this predicate determine which threat model they are associated with. Different threat models can be used to customize the sources used in an analysis. For more information, see ":ref:`Threat models `." - ``sinkModel(package, type, subtypes, name, signature, ext, input, kind, provenance)``. This is used to model sinks where tainted data may be used in a way that makes the code vulnerable. - ``summaryModel(package, type, subtypes, name, signature, ext, input, output, kind, provenance)``. This is used to model flow through elements. +- ``barrierModel(package, type, subtypes, name, signature, ext, output, kind, provenance)``. This is used to model barriers, which are elements that stop the flow of taint. +- ``barrierGuardModel(package, type, subtypes, name, signature, ext, input, acceptingValue, kind, provenance)``. This is used to model barrier guards, which are elements that can stop the flow of taint depending on a conditional check. - ``neutralModel(package, type, name, signature, kind, provenance)``. This is similar to a summary model but used to model the flow of values that have only a minor impact on the dataflow analysis. Manual neutral models (those with a provenance such as ``manual`` or ``ai-manual``) can be used to override generated summary models (those with a provenance such as ``df-generated``), so that the summary model will be ignored. Other than that, neutral models have no effect. The extensible predicates are populated using the models defined in data extension files. @@ -91,19 +93,18 @@ We need to add a tuple to the ``sinkModel``\(package, type, subtypes, name, sign data: - ["database/sql", "DB", True, "Prepare", "", "", "Argument[0]", "sql-injection", "manual"] -Since we want to add a new sink, we need to add a tuple to the ``sinkModel`` extensible predicate. The first five values identify the function (in this case a method) to be modeled as a sink. - The first value ``database/sql`` is the package name. - The second value ``DB`` is the name of the type that the method is associated with. -- The third value ``True`` is a flag that indicates whether or not the sink also applies to subtypes. This includes when the subtype embeds the given type, so that the method or field is promoted to be a method or field of the subtype. For interface methods it also includes types which implement the interface type. +- The third value ``True`` is a flag that indicates whether or not the model also applies to subtypes. This includes when the subtype embeds the given type, so that the method or field is promoted to be a method or field of the subtype. For interface methods it also includes types which implement the interface type. - The fourth value ``Prepare`` is the method name. - The fifth value ``""`` is the input type signature. For Go it should always be an empty string. It is needed for other languages where multiple functions may have the same name and they need to be distinguished by the number and types of the arguments. The sixth value should be left empty and is out of scope for this documentation. -The remaining values are used to define the ``access path``, the ``kind``, and the ``provenance`` (origin) of the sink. +The remaining values are used to define the ``access-path``, the ``kind``, and the ``provenance`` (origin) of the sink. -- The seventh value ``Argument[0]`` is the ``access path`` to the first argument passed to the method, which means that this is the location of the sink. +- The seventh value ``Argument[0]`` is the ``access-path`` to the first argument passed to the method, which means that this is the location of the sink. - The eighth value ``sql-injection`` is the kind of the sink. The sink kind is used to define the queries where the sink is in scope. In this case - the SQL injection queries. - The ninth value ``manual`` is the provenance of the sink, which is used to identify the origin of the sink. @@ -120,7 +121,7 @@ This is the ``FormValue`` method of the ``Request`` type which is located in the } -We need to add a tuple to the ``sourceModel``\(package, type, subtypes, name, signature, ext, output, kind, provenance) extensible predicate by updating a data extension file. +We need to add a tuple to the ``sourceModel(package, type, subtypes, name, signature, ext, output, kind, provenance)`` extensible predicate by updating a data extension file. .. code-block:: yaml @@ -131,18 +132,16 @@ We need to add a tuple to the ``sourceModel``\(package, type, subtypes, name, si data: - ["net/http", "Request", True, "FormValue", "", "", "ReturnValue", "remote", "manual"] - -Since we are adding a new source, we need to add a tuple to the ``sourceModel`` extensible predicate. The first five values identify the function to be modeled as a source. - The first value ``net/http`` is the package name. - The second value ``Request`` is the type name, since the function is a method of the ``Request`` type. -- The third value ``True`` is a flag that indicates whether or not the sink also applies to subtypes. This includes when the subtype embeds the given type, so that the method or field is promoted to be a method or field of the subtype. For interface methods it also includes types which implement the interface type. +- The third value ``True`` is a flag that indicates whether or not the model also applies to subtypes. This includes when the subtype embeds the given type, so that the method or field is promoted to be a method or field of the subtype. For interface methods it also includes types which implement the interface type. - The fourth value ``FormValue`` is the function name. - The fifth value ``""`` is the input type signature. For Go it should always be an empty string. It is needed for other languages where multiple functions may have the same name and they need to be distinguished by the number and types of the arguments. The sixth value should be left empty and is out of scope for this documentation. -The remaining values are used to define the ``access path``, the ``kind``, and the ``provenance`` (origin) of the source. +The remaining values are used to define the ``access-path``, the ``kind``, and the ``provenance`` (origin) of the source. - The seventh value ``ReturnValue`` is the access path to the return of the method, which means that it is the return value that should be considered a source of tainted input. - The eighth value ``remote`` is the kind of the source. The source kind is used to define the threat model where the source is in scope. ``remote`` applies to many of the security related queries as it means a remote source of untrusted data. As an example the SQL injection query uses ``remote`` sources. For more information, see ":ref:`Threat models `." @@ -162,7 +161,7 @@ This pattern covers many of the cases where we need to summarize flow through a ... } -We need to add a tuple to the ``summaryModel``\(package, type, subtypes, name, signature, ext, input, output, kind, provenance) extensible predicate by updating a data extension file: +We need to add a tuple to the ``summaryModel(package, type, subtypes, name, signature, ext, input, output, kind, provenance)`` extensible predicate by updating a data extension file: .. code-block:: yaml @@ -171,21 +170,20 @@ We need to add a tuple to the ``summaryModel``\(package, type, subtypes, name, s pack: codeql/go-all extensible: summaryModel data: - - ["slices", "", False, "Max", "", "", "Argument[0].ArrayElement", "ReturnValue", "value", "manual"] + - ["slices", "", False, "Max", "", "", "Argument[0].ArrayElement", "ReturnValue", "value", "manual"] -Since we are adding flow through a method, we need to add tuples to the ``summaryModel`` extensible predicate. The first row defines flow from the first argument (``a`` in the example) to the return value (``max`` in the example). The first five values identify the function to be modeled as a summary. - The first value ``slices`` is the package name. - The second value ``""`` is left blank, since the function is not a method of a type. -- The third value ``False`` is a flag that indicates whether or not the sink also applies to subtypes. This has no effect for non-method functions. +- The third value ``False`` is a flag that indicates whether or not the model also applies to subtypes. This has no effect for non-method functions. - The fourth value ``Max`` is the function name. - The fifth value ``""`` is the input type signature. For Go it should always be an empty string. It is needed for other languages where multiple functions may have the same name and they need to be distinguished by the number and types of the arguments. The sixth value should be left empty and is out of scope for this documentation. -The remaining values are used to define the ``access path``, the ``kind``, and the ``provenance`` (origin) of the summary. +The remaining values are used to define the ``access-path``, the ``kind``, and the ``provenance`` (origin) of the summary. - The seventh value is the access path to the input (where data flows from). ``Argument[0].ArrayElement`` is the access path to the array elements of the first argument (the elements of the slice in the example). - The eighth value ``ReturnValue`` is the access path to the output (where data flows to), in this case ``ReturnValue``, which means that the input flows to the return value. @@ -207,7 +205,7 @@ This pattern covers many of the cases where we need to summarize flow through a ... } -We need to add a tuple to the ``summaryModel``\(package, type, subtypes, name, signature, ext, input, output, kind, provenance) extensible predicate by updating a data extension file: +We need to add a tuple to the ``summaryModel(package, type, subtypes, name, signature, ext, input, output, kind, provenance)`` extensible predicate by updating a data extension file: .. code-block:: yaml @@ -218,19 +216,18 @@ We need to add a tuple to the ``summaryModel``\(package, type, subtypes, name, s data: - ["slices", "", False, "Concat", "", "", "Argument[0].ArrayElement.ArrayElement", "ReturnValue.ArrayElement", "value", "manual"] -Since we are adding flow through a method, we need to add tuples to the ``summaryModel`` extensible predicate. The first row defines flow from the arguments (``a`` and ``b`` in the example) to the return value (``c`` in the example). The first five values identify the function to be modeled as a summary. - The first value ``slices`` is the package name. - The second value ``""`` is left blank, since the function is not a method of a type. -- The third value ``False`` is a flag that indicates whether or not the sink also applies to subtypes. This has no effect for non-method functions. -- The fourth value ``Max`` is the function name. +- The third value ``False`` is a flag that indicates whether or not the model also applies to subtypes. This has no effect for non-method functions. +- The fourth value ``Concat`` is the function name. - The fifth value ``""`` is the input type signature. For Go it should always be an empty string. It is needed for other languages where multiple functions may have the same name and they need to be distinguished by the number and types of the arguments. The sixth value should be left empty and is out of scope for this documentation. -The remaining values are used to define the ``access path``, the ``kind``, and the ``provenance`` (origin) of the summary. +The remaining values are used to define the ``access-path``, the ``kind``, and the ``provenance`` (origin) of the summary. - The seventh value is the access path to the input (where data flows from). ``Argument[0].ArrayElement.ArrayElement`` is the access path to the array elements of the array elements of the first argument. Note that a variadic parameter of type `...T` is treated as if it has type `[]T` and arguments corresponding to the variadic parameter are accessed as elements of this slice. - The eighth value ``ReturnValue.ArrayElement`` is the access path to the output (where data flows to), in this case ``ReturnValue.ArrayElement``, which means that the input flows to the array elements of the return value. @@ -251,7 +248,7 @@ This pattern covers many of the cases where we need to summarize flow through a ... } -We need to add tuples to the ``summaryModel``\(package, type, subtypes, name, signature, ext, input, output, kind, provenance) extensible predicate by updating a data extension file: +We need to add tuples to the ``summaryModel(package, type, subtypes, name, signature, ext, input, output, kind, provenance)`` extensible predicate by updating a data extension file: .. code-block:: yaml @@ -263,7 +260,6 @@ We need to add tuples to the ``summaryModel``\(package, type, subtypes, name, si - ["strings", "", False, "Join", "", "", "Argument[0]", "ReturnValue", "taint", "manual"] - ["strings", "", False, "Join", "", "", "Argument[1]", "ReturnValue", "taint", "manual"] -Since we are adding flow through a method, we need to add tuples to the ``summaryModel`` extensible predicate. Each tuple defines flow from one argument to the return value. The first row defines flow from the first argument (``elems`` in the example) to the return value (``t`` in the example) and the second row defines flow from the second argument (``sep`` in the example) to the return value (``t`` in the example). @@ -272,12 +268,12 @@ These are the same for both of the rows above as we are adding two summaries for - The first value ``strings`` is the package name. - The second value ``""`` is left blank, since the function is not a method of a type. -- The third value ``False`` is a flag that indicates whether or not the sink also applies to subtypes. This has no effect for non-method functions. +- The third value ``False`` is a flag that indicates whether or not the model also applies to subtypes. This has no effect for non-method functions. - The fourth value ``Join`` is the function name. - The fifth value ``""`` is the input type signature. For Go it should always be an empty string. It is needed for other languages where multiple functions may have the same name and they need to be distinguished by the number and types of the arguments. The sixth value should be left empty and is out of scope for this documentation. -The remaining values are used to define the ``access path``, the ``kind``, and the ``provenance`` (origin) of the summary. +The remaining values are used to define the ``access-path``, the ``kind``, and the ``provenance`` (origin) of the summary. - The seventh value is the access path to the input (where data flows from). ``Argument[0]`` is the access path to the first argument (``elems`` in the example) and ``Argument[1]`` is the access path to the second argument (``sep`` in the example). - The eighth value ``ReturnValue`` is the access path to the output (where data flows to), in this case ``ReturnValue``, which means that the input flows to the return value. @@ -307,8 +303,8 @@ This example shows how the Go query pack models flow through a method for a simp host := u.Hostname() // There is taint flow from u to host. ... } - -We need to add a tuple to the ``summaryModel``\(package, type, subtypes, name, signature, ext, input, output, kind, provenance) extensible predicate by updating a data extension file: + +We need to add a tuple to the ``summaryModel(package, type, subtypes, name, signature, ext, input, output, kind, provenance)`` extensible predicate by updating a data extension file: .. code-block:: yaml @@ -319,7 +315,6 @@ We need to add a tuple to the ``summaryModel``\(package, type, subtypes, name, s data: - ["net/url", "URL", True, "Hostname", "", "", "Argument[receiver]", "ReturnValue", "taint", "manual"] -Since we are adding flow through a method, we need to add tuples to the ``summaryModel`` extensible predicate. Each tuple defines flow from one argument to the return value. The first row defines flow from the qualifier of the method call (``u`` in the example) to the return value (``host`` in the example). @@ -327,18 +322,98 @@ The first five values identify the function (in this case a method) to be modele - The first value ``net/url`` is the package name. - The second value ``URL`` is the receiver type. -- The third value ``True`` is a flag that indicates whether or not the sink also applies to subtypes. This includes when the subtype embeds the given type, so that the method or field is promoted to be a method or field of the subtype. For interface methods it also includes types which implement the interface type. +- The third value ``True`` is a flag that indicates whether or not the model also applies to subtypes. This includes when the subtype embeds the given type, so that the method or field is promoted to be a method or field of the subtype. For interface methods it also includes types which implement the interface type. - The fourth value ``Hostname`` is the method name. - The fifth value ``""`` is the input type signature. For Go it should always be an empty string. It is needed for other languages where multiple functions may have the same name and they need to be distinguished by the number and types of the arguments. The sixth value should be left empty and is out of scope for this documentation. -The remaining values are used to define the ``access path``, the ``kind``, and the ``provenance`` (origin) of the summary. +The remaining values are used to define the ``access-path``, the ``kind``, and the ``provenance`` (origin) of the summary. - The seventh value is the access path to the input (where data flows from). ``Argument[receiver]`` is the access path to the receiver (``u`` in the example). - The eighth value ``ReturnValue`` is the access path to the output (where data flows to), in this case ``ReturnValue``, which means that the input flows to the return value. When there are multiple return values, use ``ReturnValue[i]`` to refer to the ``i`` th return value (starting from 0). - The ninth value ``taint`` is the kind of the flow. ``taint`` means that taint is propagated through the call. - The tenth value ``manual`` is the provenance of the summary, which is used to identify the origin of the summary. +Example: Add a barrier using the ``Htmlquote`` function +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This example shows how the Go query pack models a barrier that stops the flow of taint. +The ``Htmlquote`` function from the `beego` framework HTML-escapes a string, which prevents HTML injection attacks. + +.. code-block:: go + + func Render(w http.ResponseWriter, r *http.Request) { + name := r.FormValue("name") + safe := beego.Htmlquote(name) // The return value of this function is safe to use in HTML. + ... + } + +We need to add a tuple to the ``barrierModel(package, type, subtypes, name, signature, ext, output, kind, provenance)`` extensible predicate by updating a data extension file. + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/go-all + extensible: barrierModel + data: + - ["group:beego", "", True, "Htmlquote", "", "", "ReturnValue", "html-injection", "manual"] + +The first five values identify the function to be modeled as a barrier. + +- The first value ``group:beego`` is the package group name. The ``group:`` prefix indicates that this is a package group, which is used to match multiple package paths that refer to the same package. +- The second value ``""`` is left blank since the function is not a method of a type. +- The third value ``True`` is a flag that indicates whether or not the model also applies to subtypes. This has no effect for non-method functions. +- The fourth value ``Htmlquote`` is the function name. +- The fifth value ``""`` is the input type signature. For Go it should always be an empty string. + +The sixth value should be left empty and is out of scope for this documentation. +The remaining values are used to define the ``access-path``, the ``kind``, and the ``provenance`` (origin) of the barrier. + +- The seventh value ``ReturnValue`` is the access path to the output of the barrier, which means that the return value is considered sanitized. +- The eighth value ``html-injection`` is the kind of the barrier. The barrier kind must match the kind used in the query where the barrier should take effect. In this case, it matches the ``html-injection`` sink kind used by XSS queries. +- The ninth value ``manual`` is the provenance of the barrier, which is used to identify the origin of the barrier. + +Example: Add a barrier guard +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This example shows how to model a barrier guard that stops the flow of taint when a conditional check is performed on data. +A barrier guard model is used when a function returns a boolean that indicates whether the data is safe to use. +Consider a function called ``IsSafe`` which returns ``true`` when the data is considered safe for SQL injection. + +.. code-block:: go + + func Query(db *sql.DB, input string) { + if example.IsSafe(input) { // The check guards the query, so the input is safe. + db.Query(input) // This is not a SQL injection vulnerability. + } + } + +We need to add a tuple to the ``barrierGuardModel(package, type, subtypes, name, signature, ext, input, acceptingValue, kind, provenance)`` extensible predicate by updating a data extension file. + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/go-all + extensible: barrierGuardModel + data: + - ["example.com/example", "", False, "IsSafe", "", "", "Argument[0]", "true", "sql-injection", "manual"] + +The first five values identify the function to be modeled as a barrier guard. + +- The first value ``example.com/example`` is the package name. +- The second value ``""`` is left blank since the function is not a method of a type. +- The third value ``False`` is a flag that indicates whether or not the model guard also applies to subtypes. This has no effect for non-method functions. +- The fourth value ``IsSafe`` is the function name. +- The fifth value ``""`` is the input type signature. For Go it should always be an empty string. + +The sixth value should be left empty and is out of scope for this documentation. +The remaining values are used to define the ``access-path``, the ``accepting-value``, the ``kind``, and the ``provenance`` (origin) of the barrier guard. + +- The seventh value ``Argument[0]`` is the access path to the input whose flow is blocked. In this case, the first argument to the function (``input`` in the example). +- The eighth value ``true`` is the accepting value of the barrier guard. This is the value that the conditional check must return for the barrier to apply. In this case, when ``IsSafe`` returns ``true``, the input is considered safe. +- The ninth value ``sql-injection`` is the kind of the barrier guard. The barrier guard kind is used to define the queries where the barrier guard is in scope. In this case - the SQL injection queries. +- The tenth value ``manual`` is the provenance of the barrier guard, which is used to identify the origin of the barrier guard. + Example: Accessing the ``Body`` field of an HTTP request ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This example shows how we can model a field read as a source of tainted data. @@ -350,7 +425,7 @@ This example shows how we can model a field read as a source of tainted data. ... } -We need to add a tuple to the ``sourceModel``\(package, type, subtypes, name, signature, ext, output, kind, provenance) extensible predicate by updating a data extension file. +We need to add a tuple to the ``sourceModel(package, type, subtypes, name, signature, ext, output, kind, provenance)`` extensible predicate by updating a data extension file. .. code-block:: yaml @@ -361,17 +436,16 @@ We need to add a tuple to the ``sourceModel``\(package, type, subtypes, name, si data: - ["net/http", "Request", True, "Body", "", "", "", "remote", "manual"] -Since we are adding a new source, we need to add a tuple to the ``sourceModel`` extensible predicate. The first five values identify the field to be modeled as a source. - The first value ``net/http`` is the package name. - The second value ``Request`` is the name of the type that the field is associated with. -- The third value ``True`` is a flag that indicates whether or not the sink also applies to subtypes. For fields this means when the field is accessed as a promoted field in another type. +- The third value ``True`` is a flag that indicates whether or not the model also applies to subtypes. For fields this means when the field is accessed as a promoted field in another type. - The fourth value ``Body`` is the field name. - The fifth value ``""`` is the input type signature. For Go it should always be an empty string. It is needed for other languages where multiple functions may have the same name and they need to be distinguished by the number and types of the arguments. The sixth value should be left empty and is out of scope for this documentation. -The remaining values are used to define the ``access path``, the ``kind``, and the ``provenance`` (origin) of the source. +The remaining values are used to define the ``access-path``, the ``kind``, and the ``provenance`` (origin) of the source. - The seventh value ``""`` is left blank. Leaving the access path of a source model blank indicates that it is a field access. - The eighth value ``remote`` is the source kind. This indicates that the source is a remote source of untrusted data. @@ -387,7 +461,7 @@ Note that packages hosted at ``gopkg.in`` use a slightly different syntax: the m To write models that only apply to ``github.com/couchbase/gocb/v2``, it is sufficient to include the major version suffix (``/v2``) in the package column. To write models that only apply to ``github.com/couchbase/gocb``, you may prefix the package column with ``fixed-version:``. For example, here are two models for a method that has changed name from v1 to v2. .. code-block:: yaml - + extensions: - addsTo: pack: codeql/go-all diff --git a/docs/codeql/codeql-language-guides/customizing-library-models-for-java-and-kotlin.rst b/docs/codeql/codeql-language-guides/customizing-library-models-for-java-and-kotlin.rst index 7f0a41b3040e..608235636f16 100644 --- a/docs/codeql/codeql-language-guides/customizing-library-models-for-java-and-kotlin.rst +++ b/docs/codeql/codeql-language-guides/customizing-library-models-for-java-and-kotlin.rst @@ -63,6 +63,8 @@ The CodeQL library for Java and Kotlin analysis exposes the following extensible - ``sourceModel(package, type, subtypes, name, signature, ext, output, kind, provenance)``. This is used to model sources of potentially tainted data. The ``kind`` of the sources defined using this predicate determine which threat model they are associated with. Different threat models can be used to customize the sources used in an analysis. For more information, see ":ref:`Threat models `." - ``sinkModel(package, type, subtypes, name, signature, ext, input, kind, provenance)``. This is used to model sinks where tainted data maybe used in a way that makes the code vulnerable. - ``summaryModel(package, type, subtypes, name, signature, ext, input, output, kind, provenance)``. This is used to model flow through elements. +- ``barrierModel(package, type, subtypes, name, signature, ext, output, kind, provenance)``. This is used to model barriers, which are elements that stop the flow of taint. +- ``barrierGuardModel(package, type, subtypes, name, signature, ext, input, acceptingValue, kind, provenance)``. This is used to model barrier guards, which are elements that can stop the flow of taint depending on a conditional check. - ``neutralModel(package, type, name, signature, kind, provenance)``. This is similar to a summary model but used to model the flow of values that have only a minor impact on the dataflow analysis. Manual neutral models (those with a provenance such as ``manual`` or ``ai-manual``) override generated summary models (those with a provenance such as ``df-generated``) so that the summary will be ignored. Other than that, neutral models have a slight impact on the dataflow dispatch logic, which is out of scope for this documentation. The extensible predicates are populated using the models defined in data extension files. @@ -85,7 +87,7 @@ This is the ``execute`` method in the ``Statement`` class, which is located in t stmt.execute(query); // The argument to this method is a SQL injection sink. } -We need to add a tuple to the ``sinkModel``\(package, type, subtypes, name, signature, ext, input, kind, provenance) extensible predicate by updating a data extension file. +We need to add a tuple to the ``sinkModel(package, type, subtypes, name, signature, ext, input, kind, provenance)`` extensible predicate by updating a data extension file. .. code-block:: yaml @@ -96,20 +98,18 @@ We need to add a tuple to the ``sinkModel``\(package, type, subtypes, name, sign data: - ["java.sql", "Statement", True, "execute", "(String)", "", "Argument[0]", "sql-injection", "manual"] - -Since we want to add a new sink, we need to add a tuple to the ``sinkModel`` extensible predicate. The first five values identify the callable (in this case a method) to be modeled as a sink. - The first value ``java.sql`` is the package name. - The second value ``Statement`` is the name of the class (type) that contains the method. -- The third value ``True`` is a flag that indicates whether or not the sink also applies to all overrides of the method. +- The third value ``True`` is a flag that indicates whether or not the model also applies to all overrides of the method. - The fourth value ``execute`` is the method name. - The fifth value ``(String)`` is the method input type signature. The sixth value should be left empty and is out of scope for this documentation. -The remaining values are used to define the ``access path``, the ``kind``, and the ``provenance`` (origin) of the sink. +The remaining values are used to define the ``access-path``, the ``kind``, and the ``provenance`` (origin) of the sink. -- The seventh value ``Argument[0]`` is the ``access path`` to the first argument passed to the method, which means that this is the location of the sink. +- The seventh value ``Argument[0]`` is the ``access-path`` to the first argument passed to the method, which means that this is the location of the sink. - The eighth value ``sql-injection`` is the kind of the sink. The sink kind is used to define the queries where the sink is in scope. In this case - the SQL injection queries. - The ninth value ``manual`` is the provenance of the sink, which is used to identify the origin of the sink. @@ -125,7 +125,7 @@ This is the ``getInputStream`` method in the ``Socket`` class, which is located ... } -We need to add a tuple to the ``sourceModel``\(package, type, subtypes, name, signature, ext, output, kind, provenance) extensible predicate by updating a data extension file. +We need to add a tuple to the ``sourceModel(package, type, subtypes, name, signature, ext, output, kind, provenance)`` extensible predicate by updating a data extension file. .. code-block:: yaml @@ -136,18 +136,16 @@ We need to add a tuple to the ``sourceModel``\(package, type, subtypes, name, si data: - ["java.net", "Socket", False, "getInputStream", "()", "", "ReturnValue", "remote", "manual"] - -Since we are adding a new source, we need to add a tuple to the ``sourceModel`` extensible predicate. The first five values identify the callable (in this case a method) to be modeled as a source. - The first value ``java.net`` is the package name. - The second value ``Socket`` is the name of the class (type) that contains the source. -- The third value ``False`` is a flag that indicates whether or not the source also applies to all overrides of the method. +- The third value ``False`` is a flag that indicates whether or not the model also applies to all overrides of the method. - The fourth value ``getInputStream`` is the method name. - The fifth value ``()`` is the method input type signature. The sixth value should be left empty and is out of scope for this documentation. -The remaining values are used to define the ``access path``, the ``kind``, and the ``provenance`` (origin) of the source. +The remaining values are used to define the ``access-path``, the ``kind``, and the ``provenance`` (origin) of the source. - The seventh value ``ReturnValue`` is the access path to the return of the method, which means that it is the return value that should be considered a source of tainted input. - The eighth value ``remote`` is the kind of the source. The source kind is used to define the threat model where the source is in scope. ``remote`` applies to many of the security related queries as it means a remote source of untrusted data. As an example the SQL injection query uses ``remote`` sources. For more information, see ":ref:`Threat models `." @@ -165,7 +163,7 @@ This pattern covers many of the cases where we need to summarize flow through a ... } -We need to add tuples to the ``summaryModel``\(package, type, subtypes, name, signature, ext, input, output, kind, provenance) extensible predicate by updating a data extension file: +We need to add tuples to the ``summaryModel(package, type, subtypes, name, signature, ext, input, output, kind, provenance)`` extensible predicate by updating a data extension file: .. code-block:: yaml @@ -177,7 +175,6 @@ We need to add tuples to the ``summaryModel``\(package, type, subtypes, name, si - ["java.lang", "String", False, "concat", "(String)", "", "Argument[this]", "ReturnValue", "taint", "manual"] - ["java.lang", "String", False, "concat", "(String)", "", "Argument[0]", "ReturnValue", "taint", "manual"] -Since we are adding flow through a method, we need to add tuples to the ``summaryModel`` extensible predicate. Each tuple defines flow from one argument to the return value. The first row defines flow from the qualifier (``s1`` in the example) to the return value (``t`` in the example) and the second row defines flow from the first argument (``s2`` in the example) to the return value (``t`` in the example). @@ -186,12 +183,12 @@ These are the same for both of the rows above as we are adding two summaries for - The first value ``java.lang`` is the package name. - The second value ``String`` is the class (type) name. -- The third value ``False`` is a flag that indicates whether or not the summary also applies to all overrides of the method. +- The third value ``False`` is a flag that indicates whether or not the model also applies to all overrides of the method. - The fourth value ``concat`` is the method name. - The fifth value ``(String)`` is the method input type signature. The sixth value should be left empty and is out of scope for this documentation. -The remaining values are used to define the ``access path``, the ``kind``, and the ``provenance`` (origin) of the summary. +The remaining values are used to define the ``access-path``, the ``kind``, and the ``provenance`` (origin) of the summary. - The seventh value is the access path to the input (where data flows from). ``Argument[this]`` is the access path to the qualifier (``s1`` in the example) and ``Argument[0]`` is the access path to the first argument (``s2`` in the example). - The eighth value ``ReturnValue`` is the access path to the output (where data flows to), in this case ``ReturnValue``, which means that the input flows to the return value. @@ -210,7 +207,7 @@ Here we model flow through higher order methods and collection types. ... } -We need to add tuples to the ``summaryModel``\(package, type, subtypes, name, signature, ext, input, output, kind, provenance) extensible predicate by updating a data extension file: +We need to add tuples to the ``summaryModel(package, type, subtypes, name, signature, ext, input, output, kind, provenance)`` extensible predicate by updating a data extension file: .. code-block:: yaml @@ -222,20 +219,18 @@ We need to add tuples to the ``summaryModel``\(package, type, subtypes, name, si - ["java.util.stream", "Stream", True, "map", "(Function)", "", "Argument[this].Element", "Argument[0].Parameter[0]", "value", "manual"] - ["java.util.stream", "Stream", True, "map", "(Function)", "", "Argument[0].ReturnValue", "ReturnValue.Element", "value", "manual"] - -Since we are adding flow through a method, we need to add tuples to the ``summaryModel`` extensible predicate. Each tuple defines part of the flow that comprises the total flow through the ``map`` method. The first five values identify the callable (in this case a method) to be modeled as a summary. These are the same for both of the rows above as we are adding two summaries for the same method. - The first value ``java.util.stream`` is the package name. - The second value ``Stream`` is the class (type) name. -- The third value ``True`` is a flag that indicates whether or not the summary also applies to all overrides of the method. +- The third value ``True`` is a flag that indicates whether or not the model also applies to all overrides of the method. - The fourth value ``map`` is the method name. - The fifth value ``Function`` is the method input type signature. The sixth value should be left empty and is out of scope for this documentation. -The remaining values are used to define the ``access path``, the ``kind``, and the ``provenance`` (origin) of the summary definition. +The remaining values are used to define the ``access-path``, the ``kind``, and the ``provenance`` (origin) of the summary definition. - The seventh value is the access path to the ``input`` (where data flows from). - The eighth value is the access path to the ``output`` (where data flows to). @@ -257,6 +252,87 @@ For the remaining values for both rows: That is, the first row specifies that values can flow from the elements of the qualifier stream into the first argument of the function provided to ``map``. The second row specifies that values can flow from the return value of the function to the elements of the stream returned from ``map``. +Example: Taint barrier in the ``java.io`` package +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This example shows how the Java query pack models the return value from the ``getName`` method as a barrier for path injection. +This is the ``getName`` method in the ``File`` class, which is located in the ``java.io`` package. The method returns only the final component of a path, which means that it protects against path injection vulnerabilities. + +.. code-block:: java + + public static void barrier(File file) { + String name = file.getName(); // The return value of this method is a barrier for path injection. + ... + } + +We need to add a tuple to the ``barrierModel(package, type, subtypes, name, signature, ext, output, kind, provenance)`` extensible predicate by updating a data extension file. + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/java-all + extensible: barrierModel + data: + - ["java.io", "File", True, "getName", "()", "", "ReturnValue", "path-injection", "manual"] + +The first five values identify the callable (in this case a method) to be modeled as a barrier. + +- The first value ``java.io`` is the package name. +- The second value ``File`` is the name of the class (type) that contains the method. +- The third value ``True`` is a flag that indicates whether or not the model also applies to all overrides of the method. +- The fourth value ``getName`` is the method name. +- The fifth value ``()`` is the method input type signature. + +The sixth value should be left empty and is out of scope for this documentation. +The remaining values are used to define the ``access-path``, the ``kind``, and the ``provenance`` (origin) of the barrier. + +- The seventh value ``ReturnValue`` is the access path to the return of the method, which means that it is the return value that should be considered a barrier. +- The eighth value ``path-injection`` is the kind of the barrier. The barrier kind is used to define the queries where the barrier is in scope. In this case - the path injection queries. +- The ninth value ``manual`` is the provenance of the barrier, which is used to identify the origin of the barrier. + +Example: Taint barrier guard in the ``java.net`` package +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +This example shows how the Java query pack models the ``isAbsolute`` method as a barrier guard for request forgery. +This is the ``isAbsolute`` method in the ``URI`` class, which is located in the ``java.net`` package. +A barrier guard model is used to stop the flow of taint when a conditional check is performed on data. +When the ``isAbsolute`` method returns ``false``, the URI is relative and therefore safe for request forgery because it cannot redirect to an external server controlled by an attacker. + +.. code-block:: java + + public static void barrierguard(URI uri) throws IOException { + if (!uri.isAbsolute()) { // The check guards the request, so the URI is safe. + URL url = uri.toURL(); + url.openConnection(); // This is not a request forgery vulnerability. + } + } + +We need to add a tuple to the ``barrierGuardModel(package, type, subtypes, name, signature, ext, input, acceptingValue, kind, provenance)`` extensible predicate by updating a data extension file. + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/java-all + extensible: barrierGuardModel + data: + - ["java.net", "URI", True, "isAbsolute", "()", "", "Argument[this]", "false", "request-forgery", "manual"] + +The first five values identify the callable (in this case a method) to be modeled as a barrier guard. + +- The first value ``java.net`` is the package name. +- The second value ``URI`` is the name of the class (type) that contains the method. +- The third value ``True`` is a flag that indicates whether or not the model guard also applies to all overrides of the method. +- The fourth value ``isAbsolute`` is the method name. +- The fifth value ``()`` is the method input type signature. + +The sixth value should be left empty and is out of scope for this documentation. +The remaining values are used to define the ``access-path``, the ``accepting-value``, the ``kind``, and the ``provenance`` (origin) of the barrier guard. + +- The seventh value ``Argument[this]`` is the access path to the input whose flow is blocked. In this case, the qualifier of the method call (``uri`` in the example). +- The eighth value ``false`` is the accepting value of the barrier guard. This is the value that the conditional check must return for the barrier to apply. In this case, when ``isAbsolute`` is ``false``, the URI is relative and considered safe. +- The ninth value ``request-forgery`` is the kind of the barrier guard. The barrier guard kind is used to define the queries where the barrier guard is in scope. In this case - the request forgery queries. +- The tenth value ``manual`` is the provenance of the barrier guard, which is used to identify the origin of the barrier guard. + Example: Add a ``neutral`` method ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This example shows how the Java query pack models the ``now`` method as being neutral with respect to flow. @@ -269,7 +345,7 @@ A neutral model is used to define that there is no flow through a method. ... } -We need to add a tuple to the ``neutralModel``\(package, type, name, signature, kind, provenance) extensible predicate by updating a data extension file. +We need to add a tuple to the ``neutralModel(package, type, name, signature, kind, provenance)`` extensible predicate by updating a data extension file. .. code-block:: yaml @@ -280,8 +356,6 @@ We need to add a tuple to the ``neutralModel``\(package, type, name, signature, data: - ["java.time", "Instant", "now", "()", "summary", "manual"] - -Since we are adding a neutral model, we need to add tuples to the ``neutralModel`` extensible predicate. The first four values identify the callable (in this case a method) to be modeled as a neutral, the fifth value is the kind, and the sixth value is the provenance (origin) of the neutral. - The first value ``java.time`` is the package name. diff --git a/docs/codeql/codeql-language-guides/customizing-library-models-for-javascript.rst b/docs/codeql/codeql-language-guides/customizing-library-models-for-javascript.rst index b8f064c75747..77ea678f5468 100644 --- a/docs/codeql/codeql-language-guides/customizing-library-models-for-javascript.rst +++ b/docs/codeql/codeql-language-guides/customizing-library-models-for-javascript.rst @@ -22,24 +22,27 @@ A data extension for JavaScript is a YAML file of the form: The CodeQL library for JavaScript exposes the following extensible predicates: -- **sourceModel**\(type, path, kind) -- **sinkModel**\(type, path, kind) -- **typeModel**\(type1, type2, path) -- **summaryModel**\(type, path, input, output, kind) +- ``sourceModel(type, path, kind)`` +- ``sinkModel(type, path, kind)`` +- ``typeModel(type1, type2, path)`` +- ``summaryModel(type, path, input, output, kind)`` +- ``barrierModel(type, path, kind)`` +- ``barrierGuardModel(type, path, acceptingValue, kind)`` We'll explain how to use these using a few examples, and provide some reference material at the end of this article. Example: Taint sink in the 'execa' package ------------------------------------------ -In this example, we'll show how to add the following argument, passed to **execa**, as a command-line injection sink: +In this example, we'll show how to add the following argument, passed to ``execa``, as a command-line injection sink: .. code-block:: js import { shell } from "execa"; shell(cmd); // <-- add 'cmd' as a taint sink -Note that this sink is already recognized by the CodeQL JS analysis, but for this example, you could use the following data extension: +Note that this sink is already recognized by the CodeQL JS analysis, but for this example, you could add a tuple to the +``sinkModel(type, path, kind)`` extensible predicate by updating a data extension file. .. code-block:: yaml @@ -50,21 +53,19 @@ Note that this sink is already recognized by the CodeQL JS analysis, but for thi data: - ["execa", "Member[shell].Argument[0]", "command-injection"] - -- Since we're adding a new sink, we add a tuple to the **sinkModel** extensible predicate. -- The first column, **"execa"**, identifies a set of values from which to begin the search for the sink. - The string **"execa"** means we start at the places where the codebase imports the NPM package **execa**. +- The first column, ``"execa"``, identifies a set of values from which to begin the search for the sink. + The string ``"execa"`` means we start at the places where the codebase imports the NPM package ``execa``. - The second column is an access path that is evaluated from left to right, starting at the values that were identified by the first column. - - **Member[shell]** selects accesses to the **shell** member of the **execa** package. - - **Argument[0]** selects the first argument to calls to that member. + - ``Member[shell]`` selects accesses to the ``shell`` member of the ``execa`` package. + - ``Argument[0]`` selects the first argument to calls to that member. -- **command-injection** indicates that this is considered a sink for the command injection query. +- ``command-injection`` indicates that this is considered a sink for the command injection query. Example: Taint sources from window 'message' events --------------------------------------------------- -In this example, we'll show how the **event.data** expression below could be marked as a remote flow source: +In this example, we'll show how the ``event.data`` expression below could be marked as a remote flow source: .. code-block:: js @@ -72,7 +73,8 @@ In this example, we'll show how the **event.data** expression below could be mar let data = event.data; // <-- add 'event.data' as a taint source }); -Note that this source is already known by the CodeQL JS analysis, but for this example, you could use the following data extension: +Note that this source is already recognized by the CodeQL JS analysis, but for this example, you could add a tuple to the +``sourceModel(type, path, kind)`` extensible predicate by updating a data extension file. .. code-block:: yaml @@ -87,21 +89,19 @@ Note that this source is already known by the CodeQL JS analysis, but for this e "remote", ] - -- Since we're adding a new taint source, we add a tuple to the **sourceModel** extensible predicate. -- The first column, **"global"**, begins the search at references to the global object (also known as **window** in browser contexts). This is a special JavaScript object that contains all global variables and methods. -- **Member[addEventListener]** selects accesses to the **addEventListener** member. -- **Argument[1]** selects the second argument of calls to that member (the argument containing the callback). -- **Parameter[0]** selects the first parameter of the callback (the parameter named **event**). -- **Member[data]** selects accesses to the **data** property of the event object. -- Finally, the kind **remote** indicates that this is considered a source of remote flow. +- The first column, ``"global"``, begins the search at references to the global object (also known as ``window`` in browser contexts). This is a special JavaScript object that contains all global variables and methods. +- ``Member[addEventListener]`` selects accesses to the ``addEventListener`` member. +- ``Argument[1]`` selects the second argument of calls to that member (the argument containing the callback). +- ``Parameter[0]`` selects the first parameter of the callback (the parameter named ``event``). +- ``Member[data]`` selects accesses to the ``data`` property of the event object. +- Finally, the kind ``remote`` indicates that this is considered a source of remote flow. In the next section, we'll show how to restrict the model to recognize events of a specific type. Continued example: Restricting the event type --------------------------------------------- -The model above treats all events as sources of remote flow, not just **message** events. +The model above treats all events as sources of remote flow, not just ``message`` events. For example, it would also pick up this irrelevant source: .. code-block:: js @@ -111,7 +111,7 @@ For example, it would also pick up this irrelevant source: }); -We can refine the model by adding the **WithStringArgument** component to restrict the set of calls being considered: +We can refine the model by adding the ``WithStringArgument`` component to restrict the set of calls being considered: .. code-block:: yaml @@ -126,7 +126,7 @@ We can refine the model by adding the **WithStringArgument** component to restri "remote", ] -The **WithStringArgument[0=message]** component here selects the subset of calls to **addEventListener** where the first argument is a string literal with the value **"message"**. +The ``WithStringArgument[0=message]`` component here selects the subset of calls to ``addEventListener`` where the first argument is a string literal with the value ``"message"``. Example: Using types to add MySQL injection sinks ------------------------------------------------- @@ -141,7 +141,7 @@ In this example, we'll show how to add the following SQL injection sink: connection.query(q); // <-- add 'q' as a SQL injection sink } -We can recognize this using the following extension: +We need to add a tuple to the ``sinkModel(type, path, kind)`` extensible predicate by updating a data extension file. .. code-block:: yaml @@ -152,14 +152,13 @@ We can recognize this using the following extension: data: - ["mysql.Connection", "Member[query].Argument[0]", "sql-injection"] +- The first column, ``"mysql.Connection"``, begins the search at any expression whose value is known to be an instance of + the ``Connection`` type from the ``mysql`` package. This will select the ``connection`` parameter above because of its type annotation. +- ``Member[query]`` selects the ``query`` member from the connection object. +- ``Argument[0]`` selects the first argument of a call to that member. +- ``sql-injection`` indicates that this is considered a sink for the SQL injection query. -- The first column, **"mysql.Connection"**, begins the search at any expression whose value is known to be an instance of - the **Connection** type from the **mysql** package. This will select the **connection** parameter above because of its type annotation. -- **Member[query]** selects the **query** member from the connection object. -- **Argument[0]** selects the first argument of a call to that member. -- **sql-injection** indicates that this is considered a sink for the SQL injection query. - -This works in this example because the **connection** parameter has a type annotation that matches what the model is looking for. +This works in this example because the ``connection`` parameter has a type annotation that matches what the model is looking for. Note that there is a significant difference between the following two rows: @@ -169,8 +168,8 @@ Note that there is a significant difference between the following two rows: - ["mysql.Connection", "", ...] - ["mysql", "Member[Connection]", ...] -The first row matches instances of **mysql.Connection**, which are objects that encapsulate a MySQL connection. -The second row would match something like **require('mysql').Connection**, which is not itself a connection object. +The first row matches instances of ``mysql.Connection``, which are objects that encapsulate a MySQL connection. +The second row would match something like ``require('mysql').Connection``, which is not itself a connection object. In the next section, we'll show how to generalize the model to handle the absence of type annotations. @@ -185,8 +184,9 @@ Suppose we want the model from above to detect the sink in this snippet: let connection = getConnection(); connection.query(q); // <-- add 'q' as a SQL injection sink -There is no type annotation on **connection**, and there is no indication of what **getConnection()** returns. -Using a **typeModel** tuple we can tell our model that this function returns an instance of **mysql.Connection**: +There is no type annotation on ``connection``, and there is no indication of what ``getConnection()`` returns. +By adding a tuple to the ``typeModel(type1, type2, path)`` extensible predicate we can tell our model that +this function returns an instance of ``mysql.Connection``: .. code-block:: yaml @@ -197,19 +197,17 @@ Using a **typeModel** tuple we can tell our model that this function returns an data: - ["mysql.Connection", "@example/db", "Member[getConnection].ReturnValue"] +- The first column, ``"mysql.Connection"``, names the type that we're adding a new definition for. +- The second column, ``"@example/db"``, begins the search at imports of the hypothetical NPM package ``@example/db``. +- ``Member[getConnection]`` selects references to the ``getConnection`` member from that package. +- ``ReturnValue`` selects the return value from a call to that member. -- Since we're providing type information, we add a tuple to the **typeModel** extensible predicate. -- The first column, **"mysql.Connection"**, names the type that we're adding a new definition for. -- The second column, **"@example/db"**, begins the search at imports of the hypothetical NPM package **@example/db**. -- **Member[getConnection]** selects references to the **getConnection** member from that package. -- **ReturnValue** selects the return value from a call to that member. - -The new model states that the return value of **getConnection()** has type **mysql.Connection**. +The new model states that the return value of ``getConnection()`` has type ``mysql.Connection``. Combining this with the sink model we added earlier, the sink in the example is detected by the model. The mechanism used here is how library models work for both TypeScript and plain JavaScript. -A good library model contains **typeModel** tuples to ensure it works even in codebases without type annotations. -For example, the **mysql** model that is included with the CodeQL JS analysis includes this type definition (among many others): +A good library model contains ``typeModel`` tuples to ensure it works even in codebases without type annotations. +For example, the ``mysql`` model that is included with the CodeQL JS analysis includes this type definition (among many others): .. code-block:: yaml @@ -228,7 +226,7 @@ In this example, we'll show how to add the following SQL injection sink using a conn.query(q, (err, rows) => {...}); // <-- add 'q' as a SQL injection sink }); -We can recognize this using a fuzzy model, as shown in the following extension: +We need to add a tuple for a fuzzy model to the ``sinkModel(type, path, kind)`` extensible predicate by updating a data extension file. .. code-block:: yaml @@ -239,13 +237,13 @@ We can recognize this using a fuzzy model, as shown in the following extension: data: - ["mysql", "Fuzzy.Member[query].Argument[0]", "sql-injection"] -- The first column, **"mysql"**, begins the search at places where the `mysql` package is imported. -- **Fuzzy** selects all objects that appear to originate from the `mysql` package, such as the `pool`, `conn`, `err`, and `rows` objects. -- **Member[query]** selects the **query** member from any of those objects. In this case, the only such member is `conn.query`. +- The first column, ``"mysql"``, begins the search at places where the `mysql` package is imported. +- ``Fuzzy`` selects all objects that appear to originate from the `mysql` package, such as the `pool`, `conn`, `err`, and `rows` objects. +- ``Member[query]`` selects the ``query`` member from any of those objects. In this case, the only such member is `conn.query`. In principle, this would also find expressions such as `pool.query` and `err.query`, but in practice such expressions are not likely to occur, because the `pool` and `err` objects do not have a member named `query`. -- **Argument[0]** selects the first argument of a call to the selected member, that is, the `q` argument to `conn.query`. -- **sql-injection** indicates that this is considered as a sink for the SQL injection query. +- ``Argument[0]`` selects the first argument of a call to the selected member, that is, the `q` argument to `conn.query`. +- ``sql-injection`` indicates that this is considered as a sink for the SQL injection query. For reference, a more detailed model might look like this, as described in the preceding examples: @@ -265,7 +263,7 @@ For reference, a more detailed model might look like this, as described in the p - ["mysql.Pool", "mysql", "Member[createPool].ReturnValue"] - ["mysql.Connection", "mysql.Pool", "Member[getConnection].Argument[0].Parameter[1]"] -The model using the **Fuzzy** component is simpler, at the cost of being approximate. +The model using the ``Fuzzy`` component is simpler, at the cost of being approximate. This technique is useful when modeling a large or complex library, where it is difficult to write a detailed model. Example: Adding flow through 'decodeURIComponent' @@ -277,7 +275,8 @@ In this example, we'll show how to add flow through calls to `decodeURIComponent let y = decodeURIComponent(x); // add taint flow from 'x' to 'y' -Note that this flow is already recognized by the CodeQL JS analysis, but for this example, you could use the following data extension: +Note that this flow is already recognized by the CodeQL JS analysis, but for this example, you could add a tuple to the +``summaryModel(type, path, input, output, kind)`` extensible predicate by updating a data extension file. .. code-block:: yaml @@ -294,28 +293,27 @@ Note that this flow is already recognized by the CodeQL JS analysis, but for thi "taint", ] - -- Since we're adding flow through a function call, we add a tuple to the **summaryModel** extensible predicate. -- The first column, **"global"**, begins the search for relevant calls at references to the global object. +- The first column, ``"global"``, begins the search for relevant calls at references to the global object. In JavaScript, global variables are properties of the global object, so this lets us access global variables or functions. -- The second column, **Member[decodeURIComponent]**, is a path leading to the function calls we wish to model. - In this case, we select references to the **decodeURIComponent** member from the global object, that is, - the global variable named **decodeURIComponent**. -- The third column, **Argument[0]**, indicates the input of the flow. In this case, the first argument to the function call. -- The fourth column, **ReturnValue**, indicates the output of the flow. In this case, the return value of the function call. -- The last column, **taint**, indicates the kind of flow to add. The value **taint** means the output is not necessarily equal +- The second column, ``Member[decodeURIComponent]``, is a path leading to the function calls we wish to model. + In this case, we select references to the ``decodeURIComponent`` member from the global object, that is, + the global variable named ``decodeURIComponent``. +- The third column, ``Argument[0]``, indicates the input of the flow. In this case, the first argument to the function call. +- The fourth column, ``ReturnValue``, indicates the output of the flow. In this case, the return value of the function call. +- The last column, ``taint``, indicates the kind of flow to add. The value ``taint`` means the output is not necessarily equal to the input, but was derived from the input in a taint-preserving way. Example: Adding flow through 'underscore.forEach' ------------------------------------------------- -In this example, we'll show how to add flow through calls to **forEach** from the **underscore** package: +In this example, we'll show how to add flow through calls to ``forEach`` from the ``underscore`` package: .. code-block:: js require('underscore').forEach([x, y], (v) => { ... }); // add value flow from 'x' and 'y' to 'v' -Note that this flow is already recognized by the CodeQL JS analysis, but for this example, you could use the following data extension: +Note that this flow is already recognized by the CodeQL JS analysis, but for this example, you could add a tuple to the +``summaryModel(type, path, input, output, kind)`` extensible predicate by updating a data extension file. .. code-block:: yaml @@ -332,21 +330,19 @@ Note that this flow is already recognized by the CodeQL JS analysis, but for thi "value", ] - -- Since we're adding flow through a function call, we add a tuple to the **summaryModel** extensible predicate. -- The first column, **"underscore"**, begins the search for relevant calls at places where the **underscore** package is imported. -- The second column, **Member[forEach]**, selects references to the **forEach** member from the **underscore** package. +- The first column, ``"underscore"``, begins the search for relevant calls at places where the ``underscore`` package is imported. +- The second column, ``Member[forEach]``, selects references to the ``forEach`` member from the ``underscore`` package. - The third column specifies the input of the flow: - - **Argument[0]** selects the first argument of **forEach**, which is the array being iterated over. - - **ArrayElement** selects the elements of that array (the expressions **x** and **y**). + - ``Argument[0]`` selects the first argument of ``forEach``, which is the array being iterated over. + - ``ArrayElement`` selects the elements of that array (the expressions ``x`` and ``y``). - The fourth column specifies the output of the flow: - - **Argument[1]** selects the second argument of **forEach** (the argument containing the callback function). - - **Parameter[0]** selects the first parameter of the callback function (the parameter named **v**). + - ``Argument[1]`` selects the second argument of ``forEach`` (the argument containing the callback function). + - ``Parameter[0]`` selects the first parameter of the callback function (the parameter named ``v``). -- The last column, **value**, indicates the kind of flow to add. The value **value** means the input value is unchanged as +- The last column, ``value``, indicates the kind of flow to add. The value ``value`` means the input value is unchanged as it flows to the output. @@ -367,7 +363,7 @@ on the incoming request objects: req.data; // <-- mark 'req.data' as a taint source }); -This can be achieved with the following data extension: +We need to add a tuple to the ``sourceModel(type, path, kind)`` extensible predicate by updating a data extension file. .. code-block:: yaml @@ -382,14 +378,66 @@ This can be achieved with the following data extension: "remote", ] -- Since we're adding a new taint source, we add a tuple to the **sourceModel** extensible predicate. -- The first column, **"@example/middleware"**, begins the search at imports of the hypothetical NPM package **@example/middleware**. -- **Member[injectData]** selects accesses to the **injectData** member. -- **ReturnValue** selects the return value of the call to **injectData**. -- **GuardedRouteHandler** interprets the current value as a middleware function and selects all route handlers guarded by that middleware. Since the current value is passd to **app.use()**, the callback subsequently passed to **app.get()** is seen as a guarded route handler. -- **Parameter[0]** selects the first parameter of the callback (the parameter named **req**). -- **Member[data]** selects accesses to the **data** property of the **req** object. -- Finally, the kind **remote** indicates that this is considered a source of remote flow. +- The first column, ``"@example/middleware"``, begins the search at imports of the hypothetical NPM package ``@example/middleware``. +- ``Member[injectData]`` selects accesses to the ``injectData`` member. +- ``ReturnValue`` selects the return value of the call to ``injectData``. +- ``GuardedRouteHandler`` interprets the current value as a middleware function and selects all route handlers guarded by that middleware. Since the current value is passed to ``app.use()``, the callback subsequently passed to ``app.get()`` is seen as a guarded route handler. +- ``Parameter[0]`` selects the first parameter of the callback (the parameter named ``req``). +- ``Member[data]`` selects accesses to the ``data`` property of the ``req`` object. +- Finally, the kind ``remote`` indicates that this is considered a source of remote flow. + +Example: Taint barrier using the 'encodeURIComponent' function +-------------------------------------------------------------- + +In this example, we'll show how to add the return value of ``encodeURIComponent`` as a barrier for XSS. + +.. code-block:: js + + let escaped = encodeURIComponent(input); // The return value of this method is safe for XSS. + document.body.innerHTML = escaped; + +We need to add a tuple to the ``barrierModel(type, path, kind)`` extensible predicate by updating a data extension file. + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/javascript-all + extensible: barrierModel + data: + - ["global", "Member[encodeURIComponent].ReturnValue", "html-injection"] + +- The first column, ``"global"``, begins the search for relevant calls at references to the global object. +- The second column, ``Member[encodeURIComponent].ReturnValue``, selects the return value of the ``encodeURIComponent`` function. +- The third column, ``"html-injection"``, is the kind of the barrier. + +Example: Add a barrier guard +---------------------------- + +This example shows how to model a barrier guard that stops the flow of taint when a conditional check is performed on data. +Consider a function called `isValid` which returns `true` when the data is considered safe. + +.. code-block:: js + + if (isValid(userInput)) { // The check guards the use, so the input is safe. + db.query(userInput); // This is safe. + } + +We need to add a tuple to the ``barrierGuardModel(type, path, acceptingValue, kind)`` extensible predicate by updating a data extension file. + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/javascript-all + extensible: barrierGuardModel + data: + - ["my-package", "Member[isValid].Argument[0]", "true", "sql-injection"] + +- The first column, ``"my-package"``, begins the search at imports of the hypothetical NPM package ``my-package``. +- The second column, ``Member[isValid].Argument[0]``, selects the first argument of the `isValid` function. This is the value being validated. +- The third column, ``"true"``, is the accepting value of the barrier guard. This is the value that the conditional check must return for the barrier to apply. +- The fourth column, ``"sql-injection"``, is the kind of the barrier guard. Reference material ------------------ @@ -404,9 +452,9 @@ sourceModel(type, path, kind) Adds a new taint source. Most taint-tracking queries will use the new source. -- **type**: Name of a type from which to evaluate **path**. -- **path**: Access path leading to the source. -- **kind**: Kind of source to add. See the section on source kinds for a list of supported kinds. +- ``type``: Name of a type from which to evaluate ``path``. +- ``path``: Access path leading to the source. +- ``kind``: Kind of source to add. See the section on source kinds for a list of supported kinds. Example: @@ -424,9 +472,9 @@ sinkModel(type, path, kind) Adds a new taint sink. Sinks are query-specific and will typically affect one or two queries. -- **type**: Name of a type from which to evaluate **path**. -- **path**: Access path leading to the sink. -- **kind**: Kind of sink to add. See the section on sink kinds for a list of supported kinds. +- ``type``: Name of a type from which to evaluate ``path``. +- ``path``: Access path leading to the sink. +- ``kind``: Kind of sink to add. See the section on sink kinds for a list of supported kinds. Example: @@ -444,11 +492,11 @@ summaryModel(type, path, input, output, kind) Adds flow through a function call. -- **type**: Name of a type from which to evaluate **path**. -- **path**: Access path leading to a function call. -- **input**: Path relative to the function call that leads to input of the flow. -- **output**: Path relative to the function call leading to the output of the flow. -- **kind**: Kind of summary to add. Can be **taint** for taint-propagating flow, or **value** for value-preserving flow. +- ``type``: Name of a type from which to evaluate ``path``. +- ``path``: Access path leading to a function call. +- ``input``: Path relative to the function call that leads to input of the flow. +- ``output``: Path relative to the function call leading to the output of the flow. +- ``kind``: Kind of summary to add. Can be ``taint`` for taint-propagating flow, or ``value`` for value-preserving flow. Example: @@ -472,9 +520,9 @@ typeModel(type1, type2, path) Adds a new definition of a type. -- **type1**: Name of the type to define. -- **type2**: Name of the type from which to evaluate **path**. -- **path**: Access path leading from **type2** to **type1**. +- ``type1``: Name of the type to define. +- ``type2``: Name of the type from which to evaluate ``path``. +- ``path``: Access path leading from ``type2`` to ``type1``. Example: @@ -496,56 +544,56 @@ Types A type is a string that identifies a set of values. In each of the extensible predicates mentioned in previous section, the first column is always the name of a type. -A type can be defined by adding **typeModel** tuples for that type. Additionally, the following built-in types are available: +A type can be defined by adding ``typeModel`` tuples for that type. Additionally, the following built-in types are available: -- The name of an NPM package matches imports of that package. For example, the type **express** matches the expression **require("express")**. If the package name includes dots, it must be surrounded by single quotes, such as in **'lodash.escape'**. -- The type **global** identifies the global object, also known as **window**. In JavaScript, global variables are properties of the global object, so global variables can be identified using this type. (This type also matches imports of the NPM package named **global**, which is a package that happens to export the global object.) -- A qualified type name of form **.** identifies expressions of type **** from ****. For example, **mysql.Connection** identifies expression of type **Connection** from the **mysql** package. Note that this only works if type annotations are present in the codebase, or if sufficient **typeModel** tuples have been provided for that type. +- The name of an NPM package matches imports of that package. For example, the type ``express`` matches the expression ``require("express")``. If the package name includes dots, it must be surrounded by single quotes, such as in ``'lodash.escape'``. +- The type ``global`` identifies the global object, also known as ``window``. In JavaScript, global variables are properties of the global object, so global variables can be identified using this type. (This type also matches imports of the NPM package named ``global``, which is a package that happens to export the global object.) +- A qualified type name of form ``.`` identifies expressions of type ```` from ````. For example, ``mysql.Connection`` identifies expression of type ``Connection`` from the ``mysql`` package. Note that this only works if type annotations are present in the codebase, or if sufficient ``typeModel`` tuples have been provided for that type. Access paths ------------ -The **path**, **input**, and **output** columns consist of a **.**-separated list of components, which is evaluated from left to right, with each step selecting a new set of values derived from the previous set of values. +The ``path``, ``input``, and ``output`` columns consist of a ``.``-separated list of components, which is evaluated from left to right, with each step selecting a new set of values derived from the previous set of values. The following components are supported: -- **Argument[**\ `number`\ **]** selects the argument at the given index. -- **Argument[this]** selects the receiver of a method call. -- **Parameter[**\ `number`\ **]** selects the parameter at the given index. -- **Parameter[this]** selects the **this** parameter of a function. -- **ReturnValue** selects the return value of a function or call. -- **Member[**\ `name`\ **]** selects the property with the given name. -- **AnyMember** selects any property regardless of name. -- **ArrayElement** selects an element of an array. -- **MapValue** selects a value of a map object. -- **Awaited** selects the value of a promise. -- **Instance** selects instances of a class, including instances of its subclasses. -- **Fuzzy** selects all values that are derived from the current value through a combination of the other operations described in this list. +- ``Argument[``\ `number`\ ``]`` selects the argument at the given index. +- ``Argument[this]`` selects the receiver of a method call. +- ``Parameter[``\ `number`\ ``]`` selects the parameter at the given index. +- ``Parameter[this]`` selects the ``this`` parameter of a function. +- ``ReturnValue`` selects the return value of a function or call. +- ``Member[``\ `name`\ ``]`` selects the property with the given name. +- ``AnyMember`` selects any property regardless of name. +- ``ArrayElement`` selects an element of an array. +- ``MapValue`` selects a value of a map object. +- ``Awaited`` selects the value of a promise. +- ``Instance`` selects instances of a class, including instances of its subclasses. +- ``Fuzzy`` selects all values that are derived from the current value through a combination of the other operations described in this list. For example, this can be used to find all values that appear to originate from a particular package. This can be useful for finding method calls from a known package, but where the receiver type is not known or is difficult to model. The following components are called "call site filters". They select a subset of the previously-selected calls, if the call fits certain criteria: -- **WithArity[**\ `number`\ **]** selects the subset of calls that have the given number of arguments. -- **WithStringArgument[**\ `number`\ **=**\ `value`\ **]** selects the subset of calls where the argument at the given index is a string literal with the given value. +- ``WithArity[``\ `number`\ ``]`` selects the subset of calls that have the given number of arguments. +- ``WithStringArgument[``\ `number`\ ``=``\ `value`\ ``]`` selects the subset of calls where the argument at the given index is a string literal with the given value. Components related to decorators: -- **DecoratedClass** selects a class that has the current value as a decorator. For example, **Member[Component].DecoratedClass** selects any class that is decorated with **@Component**. -- **DecoratedParameter** selects a parameter that is decorated by the current value. -- **DecoratedMember** selects a method, field, or accessor that is decorated by the current value. +- ``DecoratedClass`` selects a class that has the current value as a decorator. For example, ``Member[Component].DecoratedClass`` selects any class that is decorated with ``@Component``. +- ``DecoratedParameter`` selects a parameter that is decorated by the current value. +- ``DecoratedMember`` selects a method, field, or accessor that is decorated by the current value. Additionally there is a component related to middleware functions: -- **GuardedRouteHandler** interprets the current value as a middleware function, and selects any route handler function that comes after it in the routing hierarchy. - This can be used to model properties injected onto request and response objects, such as **req.db** after a middleware that injects a database connection. +- ``GuardedRouteHandler`` interprets the current value as a middleware function, and selects any route handler function that comes after it in the routing hierarchy. + This can be used to model properties injected onto request and response objects, such as ``req.db`` after a middleware that injects a database connection. Note that this currently over-approximates the set of route handlers but may be made more accurate in the future. Additional notes about the syntax of operands: -- Multiple operands may be given to a single component, as a shorthand for the union of the operands. For example, **Member[foo,bar]** matches the union of **Member[foo]** and **Member[bar]**. -- Numeric operands to **Argument**, **Parameter**, and **WithArity** may be given as an interval. For example, **Argument[0..2]** matches argument 0, 1, or 2. -- **Argument[N-1]** selects the last argument of a call, and **Parameter[N-1]** selects the last parameter of a function, with **N-2** being the second-to-last and so on. +- Multiple operands may be given to a single component, as a shorthand for the union of the operands. For example, ``Member[foo,bar]`` matches the union of ``Member[foo]`` and ``Member[bar]``. +- Numeric operands to ``Argument``, ``Parameter``, and ``WithArity`` may be given as an interval. For example, ``Argument[0..2]`` matches argument 0, 1, or 2. +- ``Argument[N-1]`` selects the last argument of a call, and ``Parameter[N-1]`` selects the last parameter of a function, with ``N-2`` being the second-to-last and so on. Kinds ----- @@ -553,14 +601,14 @@ Kinds Source kinds ~~~~~~~~~~~~ -- **remote**: A general source of remote flow. -- **browser**: A source in the browser environment that does not fit a more specific browser kind. -- **browser-url-query**: A source derived from the query parameters of the browser URL, such as ``location.search``. -- **browser-url-fragment**: A source derived from the fragment part of the browser URL, such as ``location.hash``. -- **browser-url-path**: A source derived from the pathname of the browser URL, such as ``location.pathname``. -- **browser-url**: A source derived from the browser URL, where the untrusted part is prefixed by trusted data such as the scheme and hostname. -- **browser-window-name**: A source derived from the window name, such as ``window.name``. -- **browser-message-event**: A source derived from cross-window message passing, such as ``event`` in ``window.onmessage = event => {...}``. +- ``remote``: A general source of remote flow. +- ``browser``: A source in the browser environment that does not fit a more specific browser kind. +- ``browser-url-query``: A source derived from the query parameters of the browser URL, such as ``location.search``. +- ``browser-url-fragment``: A source derived from the fragment part of the browser URL, such as ``location.hash``. +- ``browser-url-path``: A source derived from the pathname of the browser URL, such as ``location.pathname``. +- ``browser-url``: A source derived from the browser URL, where the untrusted part is prefixed by trusted data such as the scheme and hostname. +- ``browser-window-name``: A source derived from the window name, such as ``window.name``. +- ``browser-message-event``: A source derived from cross-window message passing, such as ``event`` in ``window.onmessage = event => {...}``. See also :ref:`Threat models `. @@ -569,22 +617,22 @@ Sink kinds Unlike sources, sinks tend to be highly query-specific, rarely affecting more than one or two queries. Not every query supports customizable sinks. If the following sinks are not suitable for your use case, you should add a new query. -- **code-injection**: A sink that can be used to inject code, such as in calls to **eval**. -- **command-injection**: A sink that can be used to inject shell commands, such as in calls to **child_process.spawn**. -- **path-injection**: A sink that can be used for path injection in a file system access, such as in calls to **fs.readFile**. -- **sql-injection**: A sink that can be used for SQL injection, such as in a MySQL **query** call. -- **nosql-injection**: A sink that can be used for NoSQL injection, such as in a MongoDB **findOne** call. -- **html-injection**: A sink that can be used for HTML injection, such as in a jQuery **$()** call. -- **request-forgery**: A sink that controls the URL of a request, such as in a **fetch** call. -- **url-redirection**: A sink that can be used to redirect the user to a malicious URL. -- **unsafe-deserialization**: A deserialization sink that can lead to code execution or other unsafe behaviour, such as an unsafe YAML parser. -- **log-injection**: A sink that can be used for log injection, such as in a **console.log** call. +- ``code-injection``: A sink that can be used to inject code, such as in calls to ``eval``. +- ``command-injection``: A sink that can be used to inject shell commands, such as in calls to ``child_process.spawn``. +- ``path-injection``: A sink that can be used for path injection in a file system access, such as in calls to ``fs.readFile``. +- ``sql-injection``: A sink that can be used for SQL injection, such as in a MySQL ``query`` call. +- ``nosql-injection``: A sink that can be used for NoSQL injection, such as in a MongoDB ``findOne`` call. +- ``html-injection``: A sink that can be used for HTML injection, such as in a jQuery ``$()`` call. +- ``request-forgery``: A sink that controls the URL of a request, such as in a ``fetch`` call. +- ``url-redirection``: A sink that can be used to redirect the user to a malicious URL. +- ``unsafe-deserialization``: A deserialization sink that can lead to code execution or other unsafe behaviour, such as an unsafe YAML parser. +- ``log-injection``: A sink that can be used for log injection, such as in a ``console.log`` call. Summary kinds ~~~~~~~~~~~~~ -- **taint**: A summary that propagates taint. This means the output is not necessarily equal to the input, but it was derived from the input in an unrestrictive way. An attacker who controls the input will have significant control over the output as well. -- **value**: A summary that preserves the value of the input or creates a copy of the input such that all of its object properties are preserved. +- ``taint``: A summary that propagates taint. This means the output is not necessarily equal to the input, but it was derived from the input in an unrestrictive way. An attacker who controls the input will have significant control over the output as well. +- ``value``: A summary that preserves the value of the input or creates a copy of the input such that all of its object properties are preserved. .. _threat-models-javascript: diff --git a/docs/codeql/codeql-language-guides/customizing-library-models-for-python.rst b/docs/codeql/codeql-language-guides/customizing-library-models-for-python.rst index 30888f7b6092..ee4565caff3e 100644 --- a/docs/codeql/codeql-language-guides/customizing-library-models-for-python.rst +++ b/docs/codeql/codeql-language-guides/customizing-library-models-for-python.rst @@ -9,7 +9,7 @@ Python analysis can be customized by adding library models in data extension fil A data extension for Python is a YAML file of the form: -.. code-block:: yaml +.. code-block:: yaml extensions: - addsTo: @@ -22,24 +22,27 @@ A data extension for Python is a YAML file of the form: The CodeQL library for Python exposes the following extensible predicates: -- **sourceModel**\(type, path, kind) -- **sinkModel**\(type, path, kind) -- **typeModel**\(type1, type2, path) -- **summaryModel**\(type, path, input, output, kind) +- ``sourceModel(type, path, kind)`` +- ``sinkModel(type, path, kind)`` +- ``typeModel(type1, type2, path)`` +- ``summaryModel(type, path, input, output, kind)`` +- ``barrierModel(type, path, kind)`` +- ``barrierGuardModel(type, path, acceptingValue, kind)`` We'll explain how to use these using a few examples, and provide some reference material at the end of this article. Example: Taint sink in the 'fabric' package ------------------------------------------- -In this example, we'll show how to add the following argument, passed to **sudo** from the **fabric** package, as a command-line injection sink: +In this example, we'll show how to add the following argument, passed to ``sudo`` from the ``fabric`` package, as a command-line injection sink: .. code-block:: python from fabric.operations import sudo sudo(cmd) # <-- add 'cmd' as a taint sink -Note that this sink is already recognized by the CodeQL Python analysis, but for this example, you could use the following data extension: +Note that this sink is already recognized by the CodeQL Python analysis, but for this example, you could add a tuple to the +``sinkModel(type, path, kind)`` extensible predicate by updating a data extension file. .. code-block:: yaml @@ -50,22 +53,20 @@ Note that this sink is already recognized by the CodeQL Python analysis, but for data: - ["fabric", "Member[operations].Member[sudo].Argument[0]", "command-injection"] - -- Since we're adding a new sink, we add a tuple to the **sinkModel** extensible predicate. -- The first column, **"fabric"**, identifies a set of values from which to begin the search for the sink. - The string **"fabric"** means we start at the places where the codebase imports the package **fabric**. +- The first column, ``"fabric"``, identifies a set of values from which to begin the search for the sink. + The string ``"fabric"`` means we start at the places where the codebase imports the package ``fabric``. - The second column is an access path that is evaluated from left to right, starting at the values that were identified by the first column. - - **Member[operations]** selects accesses to the **operations** module. - - **Member[sudo]** selects accesses to the **sudo** function in the **operations** module. - - **Argument[0]** selects the first argument to calls to that function. + - ``Member[operations]`` selects accesses to the ``operations`` module. + - ``Member[sudo]`` selects accesses to the ``sudo`` function in the ``operations`` module. + - ``Argument[0]`` selects the first argument to calls to that function. -- **"command-injection"** indicates that this is considered a sink for the command injection query. +- ``"command-injection"`` indicates that this is considered a sink for the command injection query. Example: Taint sink in the 'invoke' package ------------------------------------------- -Often sinks are found as arguments to methods rather than functions. In this example, we'll show how to add the following argument, passed to **run** from the **invoke** package, as a command-line injection sink: +Often sinks are found as arguments to methods rather than functions. In this example, we'll show how to add the following argument, passed to ``run`` from the ``invoke`` package, as a command-line injection sink: .. code-block:: python @@ -73,7 +74,8 @@ Often sinks are found as arguments to methods rather than functions. In this exa c = invoke.Context() c.run(cmd) # <-- add 'cmd' as a taint sink -Note that this sink is already recognized by the CodeQL Python analysis, but for this example, you could use the following data extension: +Note that this sink is already recognized by the CodeQL Python analysis, but for this example, you could add a tuple to the +``sinkModel(type, path, kind)`` extensible predicate by updating a data extension file. .. code-block:: yaml @@ -84,17 +86,17 @@ Note that this sink is already recognized by the CodeQL Python analysis, but for data: - ["invoke", "Member[Context].Instance.Member[run].Argument[0]", "command-injection"] -- The first column, **"invoke"**, begins the search at places where the codebase imports the package **invoke**. +- The first column, ``"invoke"``, begins the search at places where the codebase imports the package ``invoke``. - The second column is an access path that is evaluated from left to right, starting at the values that were identified by the first column. - - **Member[Context]** selects accesses to the **Context** class. - - **Instance** selects instances of the **Context** class. - - **Member[run]** selects accesses to the **run** method in the **Context** class. - - **Argument[0]** selects the first argument to calls to that method. + - ``Member[Context]`` selects accesses to the ``Context`` class. + - ``Instance`` selects instances of the ``Context`` class. + - ``Member[run]`` selects accesses to the ``run`` method in the ``Context`` class. + - ``Argument[0]`` selects the first argument to calls to that method. -- **"command-injection"** indicates that this is considered a sink for the command injection query. +- ``"command-injection"`` indicates that this is considered a sink for the command injection query. -Note that the **Instance** component is used to select instances of a class, including instances of its subclasses. +Note that the ``Instance`` component is used to select instances of a class, including instances of its subclasses. Since methods on instances are common targets, we have a more compact syntax for selecting them. The first column, the type, is allowed to contain a dotted path ending in a class name. This will begin the search at instances of that class. Using this syntax, the previous example could be written as: @@ -110,7 +112,7 @@ This will begin the search at instances of that class. Using this syntax, the pr Continued example: Multiple ways to obtain a type ------------------------------------------------- -The invoke package provides multiple ways to obtain a **Context** instance. The following example shows how to add a new way to obtain a **Context** instance: +The invoke package provides multiple ways to obtain a ``Context`` instance. The following example shows how to add a new way to obtain a ``Context`` instance: .. code-block:: python @@ -118,8 +120,9 @@ The invoke package provides multiple ways to obtain a **Context** instance. The c = context.Context() c.run(cmd) # <-- add 'cmd' as a taint sink -Comparing to the previous Python snippet, the **Context** class is now found as **invoke.context.Context** instead of **invoke.Context**. -We could add a data extension similar to the previous one, but with the type **invoke.context.Context**. However, we can also use the **typeModel** extensible predicate to describe how to reach **invoke.Context** from **invoke.context.Context**: +Comparing to the previous Python snippet, the ``Context`` class is now found as ``invoke.context.Context`` instead of ``invoke.Context``. +We could add a data extension similar to the previous one, but with the type ``invoke.context.Context``. +However, we can also use the ``typeModel(type1, type2, path)`` extensible predicate to describe how to reach ``invoke.Context`` from ``invoke.context.Context``: .. code-block:: yaml @@ -130,9 +133,9 @@ We could add a data extension similar to the previous one, but with the type **i data: - ["invoke.Context", "invoke.context.Context", ""] -- The first column, **"invoke.Context"**, is the name of the type to reach. -- The second column, **"invoke.context.Context"**, is the name of the type from which to evaluate the path. -- The third column is just an empty string, indicating that any instance of **invoke.context.Context** is also an instance of **invoke.Context**. +- The first column, ``"invoke.Context"``, is the name of the type to reach. +- The second column, ``"invoke.context.Context"``, is the name of the type from which to evaluate the path. +- The third column is just an empty string, indicating that any instance of ``invoke.context.Context`` is also an instance of ``invoke.Context``. Combining this with the sink model we added earlier, the sink in the example is detected by the model. @@ -141,7 +144,7 @@ Example: Taint sources from Django 'upload_to' argument This example is a bit more advanced, involving both a callback function and a class constructor. The Django web framework allows you to specify a function that determines the path where uploaded files are stored (see the `Django documentation `_). -This function is passed as an argument to the **FileField** constructor. +This function is passed as an argument to the ``FileField`` constructor. The function is called with two arguments: the instance of the model and the filename of the uploaded file. This filename is what we want to mark as a taint source. An example use looks as follows: @@ -156,7 +159,8 @@ This filename is what we want to mark as a taint source. An example use looks as class MyModel(models.Model): upload = models.FileField(upload_to=user_directory_path) # <-- the 'upload_to' parameter defines our custom function -Note that this source is already known by the CodeQL Python analysis, but for this example, you could use the following data extension: +Note that this source is already recognized by the CodeQL Python analysis, but for this example, you could add a tuple to the +``sourceModel(type, path, kind)`` extensible predicate by updating a data extension file. .. code-block:: yaml @@ -171,18 +175,16 @@ Note that this source is already known by the CodeQL Python analysis, but for th "remote", ] - -- Since we're adding a new taint source, we add a tuple to the **sourceModel** extensible predicate. -- The first column, **"django.db.models.FileField!"**, is a dotted path to the **FileField** class from the **django.db.models** package. - The **!** at the end of the type name indicates that we are looking for the class itself rather than instances of this class. +- The first column, ``"django.db.models.FileField!"``, is a dotted path to the ``FileField`` class from the ``django.db.models`` package. + The ``!`` at the end of the type name indicates that we are looking for the class itself rather than instances of this class. - The second column is an access path that is evaluated from left to right, starting at the values that were identified by the first column. - - - **Call** selects calls to the class. That is, constructor calls. - - **Argument[0,upload_to:]** selects the first positional argument, or the named argument named **upload_to**. Note that the colon at the end of the argument name indicates that we are looking for a named argument. - - **Parameter[1]** selects the second parameter of the callback function, which is the parameter receiving the filename. -- Finally, the kind **"remote"** indicates that this is considered a source of remote flow. + - ``Call`` selects calls to the class. That is, constructor calls. + - ``Argument[0,upload_to:]`` selects the first positional argument, or the named argument named ``upload_to``. Note that the colon at the end of the argument name indicates that we are looking for a named argument. + - ``Parameter[1]`` selects the second parameter of the callback function, which is the parameter receiving the filename. + +- Finally, the kind ``"remote"`` indicates that this is considered a source of remote flow. Example: Adding flow through 're.compile' ---------------------------------------------- @@ -196,7 +198,8 @@ In this example, we'll show how to add flow through calls to ``re.compile``. let y = re.compile(pattern = x); // add value flow from 'x' to 'y.pattern' -Note that this flow is already recognized by the CodeQL Python analysis, but for this example, you could use the following data extension: +Note that this flow is already recognized by the CodeQL Python analysis, but for this example, you could add a tuple to the +``summaryModel(type, path, input, output, kind)`` extensible predicate by updating a data extension file. .. code-block:: yaml @@ -213,26 +216,25 @@ Note that this flow is already recognized by the CodeQL Python analysis, but for "value", ] - -- Since we're adding flow through a function call, we add a tuple to the **summaryModel** extensible predicate. -- The first column, **"re"**, begins the search for relevant calls at places where the **re** package is imported. -- The second column, **"Member[compile]"**, is a path leading to the function calls we wish to model. - In this case, we select references to the **compile** function from the ``re`` package. -- The third column, **"Argument[0,pattern:]"**, indicates the input of the flow. In this case, either the first argument to the function call or the argument named **pattern**. -- The fourth column, **"ReturnValue.Attribute[pattern]"**, indicates the output of the flow. In this case, the ``pattern`` attribute of the return value of the function call. -- The last column, **"value"**, indicates the kind of flow to add. The value **value** means the input value is unchanged as +- The first column, ``"re"``, begins the search for relevant calls at places where the ``re`` package is imported. +- The second column, ``"Member[compile]"``, is a path leading to the function calls we wish to model. + In this case, we select references to the ``compile`` function from the ``re`` package. +- The third column, ``"Argument[0,pattern:]"``, indicates the input of the flow. In this case, either the first argument to the function call or the argument named ``pattern``. +- The fourth column, ``"ReturnValue.Attribute[pattern]"``, indicates the output of the flow. In this case, the ``pattern`` attribute of the return value of the function call. +- The last column, ``"value"``, indicates the kind of flow to add. The value ``value`` means the input value is unchanged as it flows to the output. Example: Adding flow through 'sorted' ------------------------------------------------- -In this example, we'll show how to add flow through calls to the built-in function **sorted**: +In this example, we'll show how to add flow through calls to the built-in function ``sorted``: .. code-block:: python y = sorted(x) # add taint flow from 'x' to 'y' -Note that this flow is already recognized by the CodeQL Python analysis, but for this example, you could use the following data extension: +Note that this flow is already recognized by the CodeQL Python analysis, but for this example, you could add a tuple to the +``summaryModel(type, path, input, output, kind)`` extensible predicate by updating a data extension file. .. code-block:: yaml @@ -249,14 +251,12 @@ Note that this flow is already recognized by the CodeQL Python analysis, but for "taint", ] - -- Since we're adding flow through a function call, we add a tuple to the **summaryModel** extensible predicate. -- The first column, **"builtins"**, begins the search for relevant calls among references to the built-in names. - In Python, many built-in functions are available. Technically, most of these are part of the **builtins** package, but they can be accessed without an explicit import. When we write **builtins** in the first column, we will find both the implicit and explicit references to the built-in functions. -- The second column, **"Member[sorted]"**, selects references to the **sorted** function from the **builtins** package; that is, the built-in function **sorted**. -- The third column, **"Argument[0]"**, indicates the input of the flow. In this case, the first argument to the function call. -- The fourth column, **"ReturnValue"**, indicates the output of the flow. In this case, the return value of the function call. -- The last column, **"taint"**, indicates the kind of flow to add. The value **taint** means the output is not necessarily equal +- The first column, ``"builtins"``, begins the search for relevant calls among references to the built-in names. + In Python, many built-in functions are available. Technically, most of these are part of the ``builtins`` package, but they can be accessed without an explicit import. When we write ``builtins`` in the first column, we will find both the implicit and explicit references to the built-in functions. +- The second column, ``"Member[sorted]"``, selects references to the ``sorted`` function from the ``builtins`` package; that is, the built-in function ``sorted``. +- The third column, ``"Argument[0]"``, indicates the input of the flow. In this case, the first argument to the function call. +- The fourth column, ``"ReturnValue"``, indicates the output of the flow. In this case, the return value of the function call. +- The last column, ``"taint"``, indicates the kind of flow to add. The value ``taint`` means the output is not necessarily equal to the input, but was derived from the input in a taint-preserving way. We might also provide a summary stating that the elements of the input list are preserved in the output list: @@ -279,6 +279,64 @@ We might also provide a summary stating that the elements of the input list are The tracking of list elements is imprecise in that the analysis does not know where in the list the tracked value is found. So this summary simply states that if the value is found somewhere in the input list, it will also be found somewhere in the output list, unchanged. +Example: Taint barrier using the 'escape' function +-------------------------------------------------- + +In this example, we'll show how to add the return value of ``html.escape`` as a barrier for XSS. + +.. code-block:: python + + import html + escaped = html.escape(unknown) # The return value of this function is safe for XSS. + +We need to add a tuple to the ``barrierModel(type, path, kind)`` extensible predicate by updating a data extension file. + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/python-all + extensible: barrierModel + data: + - ["html", "Member[escape].ReturnValue", "html-injection"] + +- The first column, ``"html"``, begins the search at places where the ``html`` module is imported. +- The second column, ``Member[escape].ReturnValue``, selects the return value of the ``escape`` function from the ``html`` module. +- The third column, ``"html-injection"``, is the kind of the barrier. + +Example: Add a barrier guard +---------------------------- + +This example shows how to model a barrier guard that stops the flow of taint when a conditional check is performed on data. +A barrier guard model is used when a function returns a boolean that indicates whether the data is safe to use. +Consider the function ``url_has_allowed_host_and_scheme`` from the ``django.utils.http`` package which returns ``true`` when the URL is in a safe domain. + +.. code-block:: python + + if url_has_allowed_host_and_scheme(url, allowed_hosts=...): # The check guards the use of 'url', so it is safe. + redirect(url) # This is safe. + +We need to add a tuple to the ``barrierGuardModel(type, path, acceptingValue, kind)`` extensible predicate by updating a data extension file. + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/python-all + extensible: barrierGuardModel + data: + - [ + "django", + "Member[utils].Member[http].Member[url_has_allowed_host_and_scheme].Argument[0,url:]", + "true", + "url-redirection", + ] + +- The first column, ``"django"``, begins the search at places where the ``django`` package is imported. +- The second column, ``Member[utils].Member[http].Member[url_has_allowed_host_and_scheme].Argument[0,url:]``, selects the first argument (or the keyword argument ``url``) of the ``url_has_allowed_host_and_scheme`` function in the ``django.utils.http`` module. This is the value being validated. +- The third column, ``"true"``, is the accepting value of the barrier guard. This is the value that the conditional check must return for the barrier to apply. +- The fourth column, ``"url-redirection"``, is the kind of the barrier guard. The barrier guard kind is used to define the queries where the barrier guard is in scope. + Reference material ------------------ @@ -292,9 +350,9 @@ sourceModel(type, path, kind) Adds a new taint source. Most taint-tracking queries will use the new source. -- **type**: Name of a type from which to evaluate **path**. -- **path**: Access path leading to the source. -- **kind**: Kind of source to add. Currently only **remote** is used. +- ``type``: Name of a type from which to evaluate ``path``. +- ``path``: Access path leading to the source. +- ``kind``: Kind of source to add. Currently only ``remote`` is used. Example: @@ -312,9 +370,9 @@ sinkModel(type, path, kind) Adds a new taint sink. Sinks are query-specific and will typically affect one or two queries. -- **type**: Name of a type from which to evaluate **path**. -- **path**: Access path leading to the sink. -- **kind**: Kind of sink to add. See the section on sink kinds for a list of supported kinds. +- ``type``: Name of a type from which to evaluate ``path``. +- ``path``: Access path leading to the sink. +- ``kind``: Kind of sink to add. See the section on sink kinds for a list of supported kinds. Example: @@ -332,11 +390,11 @@ summaryModel(type, path, input, output, kind) Adds flow through a function call. -- **type**: Name of a type from which to evaluate **path**. -- **path**: Access path leading to a function call. -- **input**: Path relative to the function call that leads to input of the flow. -- **output**: Path relative to the function call leading to the output of the flow. -- **kind**: Kind of summary to add. Can be **taint** for taint-propagating flow, or **value** for value-preserving flow. +- ``type``: Name of a type from which to evaluate ``path``. +- ``path``: Access path leading to a function call. +- ``input``: Path relative to the function call that leads to input of the flow. +- ``output``: Path relative to the function call leading to the output of the flow. +- ``kind``: Kind of summary to add. Can be ``taint`` for taint-propagating flow, or ``value`` for value-preserving flow. Example: @@ -358,13 +416,13 @@ Example: typeModel(type1, type2, path) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -A description of how to reach **type1** from **type2**. -If this is the only way to reach **type1**, for instance if **type1** is a name we made up to represent the inner workings of a library, we think of this as a definition of **type1**. -In the context of instances, this describes how to obtain an instance of **type1** from an instance of **type2**. +A description of how to reach ``type1`` from ``type2``. +If this is the only way to reach ``type1``, for instance if ``type1`` is a name we made up to represent the inner workings of a library, we think of this as a definition of ``type1``. +In the context of instances, this describes how to obtain an instance of ``type1`` from an instance of ``type2``. -- **type1**: Name of the type to reach. -- **type2**: Name of the type from which to evaluate **path**. -- **path**: Access path leading from **type2** to **type1**. +- ``type1``: Name of the type to reach. +- ``type2``: Name of the type from which to evaluate ``path``. +- ``path``: Access path leading from ``type2`` to ``type1``. Example: @@ -386,40 +444,40 @@ Types A type is a string that identifies a set of values. In each of the extensible predicates mentioned in previous section, the first column is always the name of a type. -A type can be defined by adding **typeModel** tuples for that type. Additionally, the following built-in types are available: +A type can be defined by adding ``typeModel`` tuples for that type. Additionally, the following built-in types are available: -- The name of a package matches imports of that package. For example, the type **django** matches the expression **import django**. -- The type **builtins** identifies the builtins package. In Python, all built-in values are found in this package, so they can be identified using this type. -- A dotted path ending in a class name identifies instances of that class. If the suffix **!** is added, the type refers to the class itself. +- The name of a package matches imports of that package. For example, the type ``django`` matches the expression ``import django``. +- The type ``builtins`` identifies the builtins package. In Python, all built-in values are found in this package, so they can be identified using this type. +- A dotted path ending in a class name identifies instances of that class. If the suffix ``!`` is added, the type refers to the class itself. Access paths ------------ -The **path**, **input**, and **output** columns consist of a **.**-separated list of components, which is evaluated from left to right, with each step selecting a new set of values derived from the previous set of values. +The ``path``, ``input``, and ``output`` columns consist of a ``.``-separated list of components, which is evaluated from left to right, with each step selecting a new set of values derived from the previous set of values. The following components are supported: -- **Argument[**\ ``number``\ **]** selects the argument at the given index. -- **Argument[**\ ``name``:\ **]** selects the argument with the given name. -- **Argument[this]** selects the receiver of a method call. -- **Parameter[**\ ``number``\ **]** selects the parameter at the given index. -- **Parameter[**\ ``name``:\ **]** selects the named parameter with the given name. -- **Parameter[this]** selects the **this** parameter of a function. -- **ReturnValue** selects the return value of a function or call. -- **Member[**\ ``name``\ **]** selects the function/method/class/value with the given name. -- **Instance** selects instances of a class, including instances of its subclasses. -- **Attribute[**\ ``name``\ **]** selects the attribute with the given name. -- **ListElement** selects an element of a list. -- **SetElement** selects an element of a set. -- **TupleElement[**\ ``number``\ **]** selects the subscript at the given index. -- **DictionaryElement[**\ ``name``\ **]** selects the subscript at the given name. +- ``Argument[``\ ``number``\ ``]`` selects the argument at the given index. +- ``Argument[``\ ``name``:\ ``]`` selects the argument with the given name. +- ``Argument[this]`` selects the receiver of a method call. +- ``Parameter[``\ ``number``\ ``]`` selects the parameter at the given index. +- ``Parameter[``\ ``name``:\ ``]`` selects the named parameter with the given name. +- ``Parameter[this]`` selects the ``this`` parameter of a function. +- ``ReturnValue`` selects the return value of a function or call. +- ``Member[``\ ``name``\ ``]`` selects the function/method/class/value with the given name. +- ``Instance`` selects instances of a class, including instances of its subclasses. +- ``Attribute[``\ ``name``\ ``]`` selects the attribute with the given name. +- ``ListElement`` selects an element of a list. +- ``SetElement`` selects an element of a set. +- ``TupleElement[``\ ``number``\ ``]`` selects the subscript at the given index. +- ``DictionaryElement[``\ ``name``\ ``]`` selects the subscript at the given name. Additional notes about the syntax of operands: -- Multiple operands may be given to a single component, as a shorthand for the union of the operands. For example, **Member[foo,bar]** matches the union of **Member[foo]** and **Member[bar]**. -- Numeric operands to **Argument**, **Parameter**, and **WithArity** may be given as an interval. For example, **Argument[0..2]** matches argument 0, 1, or 2. -- **Argument[N-1]** selects the last argument of a call, and **Parameter[N-1]** selects the last parameter of a function, with **N-2** being the second-to-last and so on. +- Multiple operands may be given to a single component, as a shorthand for the union of the operands. For example, ``Member[foo,bar]`` matches the union of ``Member[foo]`` and ``Member[bar]``. +- Numeric operands to ``Argument``, ``Parameter``, and ``WithArity`` may be given as an interval. For example, ``Argument[0..2]`` matches argument 0, 1, or 2. +- ``Argument[N-1]`` selects the last argument of a call, and ``Parameter[N-1]`` selects the last parameter of a function, with ``N-2`` being the second-to-last and so on. Kinds ----- @@ -434,21 +492,21 @@ Sink kinds Unlike sources, sinks tend to be highly query-specific, rarely affecting more than one or two queries. Not every query supports customizable sinks. If the following sinks are not suitable for your use case, you should add a new query. -- **code-injection**: A sink that can be used to inject code, such as in calls to **exec**. -- **command-injection**: A sink that can be used to inject shell commands, such as in calls to **os.system**. -- **path-injection**: A sink that can be used for path injection in a file system access, such as in calls to **flask.send_from_directory**. -- **sql-injection**: A sink that can be used for SQL injection, such as in a MySQL **query** call. -- **html-injection**: A sink that can be used for HTML injection, such as a server response body. -- **js-injection**: A sink that can be used for JS injection, such as a server response body. -- **url-redirection**: A sink that can be used to redirect the user to a malicious URL. -- **unsafe-deserialization**: A deserialization sink that can lead to code execution or other unsafe behavior, such as an unsafe YAML parser. -- **log-injection**: A sink that can be used for log injection, such as in a **logging.info** call. +- ``code-injection``: A sink that can be used to inject code, such as in calls to ``exec``. +- ``command-injection``: A sink that can be used to inject shell commands, such as in calls to ``os.system``. +- ``path-injection``: A sink that can be used for path injection in a file system access, such as in calls to ``flask.send_from_directory``. +- ``sql-injection``: A sink that can be used for SQL injection, such as in a MySQL ``query`` call. +- ``html-injection``: A sink that can be used for HTML injection, such as a server response body. +- ``js-injection``: A sink that can be used for JS injection, such as a server response body. +- ``url-redirection``: A sink that can be used to redirect the user to a malicious URL. +- ``unsafe-deserialization``: A deserialization sink that can lead to code execution or other unsafe behavior, such as an unsafe YAML parser. +- ``log-injection``: A sink that can be used for log injection, such as in a ``logging.info`` call. Summary kinds ~~~~~~~~~~~~~ -- **taint**: A summary that propagates taint. This means the output is not necessarily equal to the input, but it was derived from the input in an unrestrictive way. An attacker who controls the input will have significant control over the output as well. -- **value**: A summary that preserves the value of the input or creates a copy of the input such that all of its object properties are preserved. +- ``taint``: A summary that propagates taint. This means the output is not necessarily equal to the input, but it was derived from the input in an unrestrictive way. An attacker who controls the input will have significant control over the output as well. +- ``value``: A summary that preserves the value of the input or creates a copy of the input such that all of its object properties are preserved. .. _threat-models-python: diff --git a/docs/codeql/codeql-language-guides/customizing-library-models-for-ruby.rst b/docs/codeql/codeql-language-guides/customizing-library-models-for-ruby.rst index 23a6bd419f5d..beccf82327f2 100644 --- a/docs/codeql/codeql-language-guides/customizing-library-models-for-ruby.rst +++ b/docs/codeql/codeql-language-guides/customizing-library-models-for-ruby.rst @@ -23,24 +23,27 @@ A data extension for Ruby is a YAML file of the form: The CodeQL library for Ruby exposes the following extensible predicates: -- **sourceModel**\(type, path, kind) -- **sinkModel**\(type, path, kind) -- **typeModel**\(type1, type2, path) -- **summaryModel**\(type, path, input, output, kind) +- ``sourceModel(type, path, kind)`` +- ``sinkModel(type, path, kind)`` +- ``typeModel(type1, type2, path)`` +- ``summaryModel(type, path, input, output, kind)`` +- ``barrierModel(type, path, kind)`` +- ``barrierGuardModel(type, path, acceptingValue, kind)`` We'll explain how to use these using a few examples, and provide some reference material at the end of this article. Example: Taint sink in the 'tty-command' gem -------------------------------------------- -In this example, we'll show how to add the following argument, passed to **tty-command**, as a command-line injection sink: +In this example, we'll show how to add the following argument, passed to ``tty-command``, as a command-line injection sink: .. code-block:: ruby tty = TTY::Command.new tty.run(cmd) # <-- add 'cmd' as a taint sink -For this example, you can use the following data extension: + +We need to add a tuple to the ``sinkModel(type, path, kind)`` extensible predicate by updating a data extension file. .. code-block:: yaml @@ -52,15 +55,14 @@ For this example, you can use the following data extension: - ["TTY::Command", "Method[run].Argument[0]", "command-injection"] -- Since we're adding a new sink, we add a tuple to the **sinkModel** extensible predicate. -- The first column, **"TTY::Command"**, identifies a set of values from which to begin the search for the sink. - The string **"TTY::Command""** means we start at the places where the codebase constructs instances of the class **TTY::Command**. +- The first column, ``"TTY::Command"``, identifies a set of values from which to begin the search for the sink. + The string ``"TTY::Command"`` means we start at the places where the codebase constructs instances of the class ``TTY::Command``. - The second column is an access path that is evaluated from left to right, starting at the values that were identified by the first column. - - **Method[run]** selects calls to the **run** method of the **TTY::Command** class. - - **Argument[0]** selects the first argument to calls to that member. + - ``Method[run]`` selects calls to the ``run`` method of the ``TTY::Command`` class. + - ``Argument[0]`` selects the first argument to calls to that member. -- **command-injection** indicates that this is considered a sink for the command injection query. +- ``command-injection`` indicates that this is considered a sink for the command injection query. Example: Taint sources from 'sinatra' block parameters ------------------------------------------------------ @@ -75,7 +77,7 @@ In this example, we'll show how the 'x' parameter below could be marked as a rem end end -For this example you could use the following data extension: +We need to add a tuple to the ``sourceModel(type, path, kind)`` extensible predicate by updating a data extension file. .. code-block:: yaml @@ -90,13 +92,12 @@ For this example you could use the following data extension: "remote", ] -- Since we're adding a new taint source, we add a tuple to the **sourceModel** extensible predicate. -- The first column, **"Sinatra::Base!"**, begins the search at references to the **Sinatra::Base** class. - The **!** suffix indicates that we want to search for references to the class itself, rather than instances of the class. -- **Method[get]** selects calls to the **get** method of the **Sinatra::Base** class. -- **Argument[block]** selects the block argument to the **get** method call. -- **Parameter[0]** selects the first parameter of the block argument (the parameter named **x**). -- Finally, the kind **remote** indicates that this is considered a source of remote flow. +- The first column, ``"Sinatra::Base!"``, begins the search at references to the ``Sinatra::Base`` class. + The ``!`` suffix indicates that we want to search for references to the class itself, rather than instances of the class. +- ``Method[get]`` selects calls to the ``get`` method of the ``Sinatra::Base`` class. +- ``Argument[block]`` selects the block argument to the ``get`` method call. +- ``Parameter[0]`` selects the first parameter of the block argument (the parameter named ``x``). +- Finally, the kind ``remote`` indicates that this is considered a source of remote flow. Example: Using types to add MySQL injection sinks ------------------------------------------------- @@ -110,7 +111,7 @@ In this example, we'll show how to add the following SQL injection sink: client.query(q) # <-- add 'q' as a SQL injection sink end -We can recognize this using the following extension: +We need to add a tuple to the ``sinkModel(type, path, kind)`` extensible predicate by updating a data extension file. .. code-block:: yaml @@ -121,16 +122,16 @@ We can recognize this using the following extension: data: - ["Mysql2::Client", "Method[query].Argument[0]", "sql-injection"] -- The first column, **"Mysql2::Client"**, begins the search at any instance of the **Mysql2::Client** class. -- **Method[query]** selects any call to the **query** method on that instance. -- **Argument[0]** selects the first argument to the method call. -- **sql-injection** indicates that this is considered a sink for the SQL injection query. +- The first column, ``"Mysql2::Client"``, begins the search at any instance of the ``Mysql2::Client`` class. +- ``Method[query]`` selects any call to the ``query`` method on that instance. +- ``Argument[0]`` selects the first argument to the method call. +- ``sql-injection`` indicates that this is considered a sink for the SQL injection query. Continued example: Using type models ------------------------------------ Consider this variation on the previous example, the mysql2 EventMachine API is used. -The client is obtained via a call to **Mysql2::EM::Client.new**. +The client is obtained via a call to ``Mysql2::EM::Client.new``. .. code-block:: ruby @@ -139,10 +140,10 @@ The client is obtained via a call to **Mysql2::EM::Client.new**. client.query(q) end -So far we have only one model for **Mysql2::Client**, but in the real world we -may have many models for the various methods available. Because **Mysql2::EM::Client** is a subclass of **Mysql2::Client**, it inherits all of the same methods. -Instead of updating all our models to include both classes, we can add a type -model to indicate that **Mysql2::EM::Client** is a subclass of **Mysql2::Client**: +So far we have only one model for ``Mysql2::Client``, but in the real world we +may have many models for the various methods available. Because ``Mysql2::EM::Client`` is a subclass of ``Mysql2::Client``, it inherits all of the same methods. +Instead of updating all our models to include both classes, we can add a tuple to the ``typeModel(type, subtype, ext)`` extensible predicate to indicate that +``Mysql2::EM::Client`` is a subclass of ``Mysql2::Client``: .. code-block:: yaml @@ -162,7 +163,7 @@ In this example, we'll show how to add flow through calls to 'URI.decode_uri_com y = URI.decode_uri_component(x); # add taint flow from 'x' to 'y' -We can model this using the following data extension: +We need to add a tuple to the ``summaryModel(type, path, input, output, kind)`` extensible predicate by updating a data extension file. .. code-block:: yaml @@ -179,28 +180,26 @@ We can model this using the following data extension: "taint", ] - -- Since we're adding flow through a method call, we add a tuple to the **summaryModel** extensible predicate. -- The first column, **"URI!"**, begins the search for relevant calls at references to the **URI** class. -- The **!** suffix indicates that we are looking for the class itself, rather than instances of the class. -- The second column, **Method[decode_uri_component]**, is a path leading to the method calls we wish to model. - In this case, we select references to the **decode_uri_component** method from the **URI** class. -- The third column, **Argument[0]**, indicates the input of the flow. In this case, the first argument to the method call. -- The fourth column, **ReturnValue**, indicates the output of the flow. In this case, the return value of the method call. -- The last column, **taint**, indicates the kind of flow to add. The value **taint** means the output is not necessarily equal +- The first column, ``"URI!"``, begins the search for relevant calls at references to the ``URI`` class. + The ``!`` suffix indicates that we are looking for the class itself, rather than instances of the class. +- The second column, ``Method[decode_uri_component]``, is a path leading to the method calls we wish to model. + In this case, we select references to the ``decode_uri_component`` method from the ``URI`` class. +- The third column, ``Argument[0]``, indicates the input of the flow. In this case, the first argument to the method call. +- The fourth column, ``ReturnValue``, indicates the output of the flow. In this case, the return value of the method call. +- The last column, ``taint``, indicates the kind of flow to add. The value ``taint`` means the output is not necessarily equal to the input, but was derived from the input in a taint-preserving way. Example: Adding flow through 'File#each' ---------------------------------------- -In this example, we'll show how to add flow through calls to **File#each** from the standard library, which iterates over the lines of a file: +In this example, we'll show how to add flow through calls to ``File#each`` from the standard library, which iterates over the lines of a file: .. code-block:: ruby f = File.new("example.txt") f.each { |line| ... } # add taint flow from `f` to `line` -We can model this using the following data extension: +We need to add a tuple to the ``summaryModel(type, path, input, output, kind)`` extensible predicate by updating a data extension file. .. code-block:: yaml @@ -217,18 +216,73 @@ We can model this using the following data extension: "taint", ] - -- Since we're adding flow through a method call, we add a tuple to the **summaryModel** extensible predicate. -- The first column, **"File"**, begins the search for relevant calls at places where the **File** class is used. -- The second column, **Method[each]**, selects references to the **each** method on the **File** class. -- The third column specifies the input of the flow. **Argument[self]** selects the **self** argument of **each**, which is the **File** instance being iterated over. +- The first column, ``"File"``, begins the search for relevant calls at places where the ``File`` class is used. +- The second column, ``Method[each]``, selects references to the ``each`` method on the ``File`` class. +- The third column specifies the input of the flow. ``Argument[self]`` selects the ``self`` argument of ``each``, which is the ``File`` instance being iterated over. - The fourth column specifies the output of the flow: - - **Argument[block]** selects the block argument of **each** (the block which is executed for each line in the file). - - **Parameter[0]** selects the first parameter of the block (the parameter named **line**). + - ``Argument[block]`` selects the block argument of ``each`` (the block which is executed for each line in the file). + - ``Parameter[0]`` selects the first parameter of the block (the parameter named ``line``). + +- The last column, ``taint``, indicates the kind of flow to add. + +Example: Taint barrier using the 'escape' method +------------------------------------------------ + +In this example, we'll show how to add the return value of ``Mysql2::Client#escape`` as a barrier for SQL injection. + +.. code-block:: ruby + + client = Mysql2::Client.new + escaped = client.escape(input) # The return value of this method is safe for SQL injection. + client.query("SELECT * FROM users WHERE name = '#{escaped}'") + +We need to add a tuple to the ``barrierModel(type, path, kind)`` extensible predicate by updating a data extension file. + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/ruby-all + extensible: barrierModel + data: + - ["Mysql2::Client!", "Method[escape].ReturnValue", "sql-injection"] + +- The first column, ``"Mysql2::Client!"``, begins the search for relevant calls at references to the ``Mysql2::Client`` class. + The ``!`` suffix indicates that we want to search for references to the class itself, rather than instances of the class. +- The second column, ``"Method[escape].ReturnValue"``, selects the return value of the ``escape`` method. +- The third column, ``"sql-injection"``, is the kind of the barrier. + +Example: Add a barrier guard +---------------------------- + +This example shows how to model a barrier guard that stops the flow of taint when a conditional check is performed on data. +Consider a validation method ``Validator.is_safe`` which returns ``true`` when the data is considered safe. + +.. code-block:: ruby + + if Validator.is_safe(user_input) + # The check guards the use, so the input is safe. + client.query("SELECT * FROM users WHERE name = '#{user_input}'") + end + +We need to add a tuple to the ``barrierGuardModel(type, path, acceptingValue, kind)`` extensible predicate by updating a data extension file. + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/ruby-all + extensible: barrierGuardModel + data: + - ["Validator!", "Method[is_safe].Argument[0]", "true", "sql-injection"] -- The last column, **taint**, indicates the kind of flow to add. +- The first column, ``"Validator!"``, begins the search at references to the ``Validator`` class. + The ``!`` suffix indicates that we want to search for references to the class itself, rather than instances of the class. +- The second column, ``"Method[is_safe].Argument[0]"``, selects the first argument of the ``is_safe`` method. This is the value being validated. +- The third column, ``"true"``, is the accepting value of the barrier guard. This is the value that the conditional check must return for the barrier to apply. +- The fourth column, ``"sql-injection"``, is the kind of the barrier guard. Reference material ------------------ @@ -243,9 +297,9 @@ sourceModel(type, path, kind) Adds a new taint source. Most taint-tracking queries will use the new source. -- **type**: Name of a type from which to evaluate **path**. -- **path**: Access path leading to the source. -- **kind**: Kind of source to add. Currently only **remote** is used. +- ``type``: Name of a type from which to evaluate ``path``. +- ``path``: Access path leading to the source. +- ``kind``: Kind of source to add. Currently only ``remote`` is used. Example: @@ -263,9 +317,9 @@ sinkModel(type, path, kind) Adds a new taint sink. Sinks are query-specific and will typically affect one or two queries. -- **type**: Name of a type from which to evaluate **path**. -- **path**: Access path leading to the sink. -- **kind**: Kind of sink to add. See the section on sink kinds for a list of supported kinds. +- ``type``: Name of a type from which to evaluate ``path``. +- ``path``: Access path leading to the sink. +- ``kind``: Kind of sink to add. See the section on sink kinds for a list of supported kinds. Example: @@ -283,11 +337,11 @@ summaryModel(type, path, input, output, kind) Adds flow through a method call. -- **type**: Name of a type from which to evaluate **path**. -- **path**: Access path leading to a method call. -- **input**: Path relative to the method call that leads to input of the flow. -- **output**: Path relative to the method call leading to the output of the flow. -- **kind**: Kind of summary to add. Can be **taint** for taint-propagating flow, or **value** for value-preserving flow. +- ``type``: Name of a type from which to evaluate ``path``. +- ``path``: Access path leading to a method call. +- ``input``: Path relative to the method call that leads to input of the flow. +- ``output``: Path relative to the method call leading to the output of the flow. +- ``kind``: Kind of summary to add. Can be ``taint`` for taint-propagating flow, or ``value`` for value-preserving flow. Example: @@ -311,9 +365,9 @@ typeModel(type1, type2, path) Adds a new definition of a type. -- **type1**: Name of the type to define. -- **type2**: Name of the type from which to evaluate **path**. -- **path**: Access path leading from **type2** to **type1**. +- ``type1``: Name of the type to define. +- ``type2``: Name of the type from which to evaluate ``path``. +- ``path``: Access path leading from ``type2`` to ``type1``. Example: @@ -335,44 +389,44 @@ Types A type is a string that identifies a set of values. In each of the extensible predicates mentioned in previous section, the first column is always the name of a type. -A type can be defined by adding **typeModel** tuples for that type. +A type can be defined by adding ``typeModel`` tuples for that type. Access paths ------------ -The **path**, **input**, and **output** columns consist of a **.**-separated list of components, which is evaluated from left to right, +The ``path``, ``input``, and ``output`` columns consist of a ``.``-separated list of components, which is evaluated from left to right, with each step selecting a new set of values derived from the previous set of values. The following components are supported: -- **Argument[**\ `number`\ **]** selects the argument at the given index. -- **Argument[**\ `string`:\ **]** selects the keyword argument with the given name. -- **Argument[self]** selects the receiver of a method call. -- **Argument[block]** selects the block argument. -- **Argument[any]** selects any argument, except self or block arguments. -- **Argument[any-named]** selects any keyword argument. -- **Argument[hash-splat]** selects a special argument representing all keyword arguments passed in the method call. -- **Parameter[**\ `number`\ **]** selects the argument at the given index. -- **Parameter[**\ `string`:\ **]** selects the keyword argument with the given name. -- **Parameter[self]** selects the **self** parameter of a method. -- **Parameter[block]** selects the block parameter. -- **Parameter[any]** selects any parameter, except self or block parameters. -- **Parameter[any-named]** selects any keyword parameter. -- **Parameter[hash-splat]** selects the hash splat parameter, often written as **\*\*kwargs**. -- **ReturnValue** selects the return value of a call. -- **Method[**\ `name`\ **]** selects a call to the method with the given name. -- **Element[any]** selects any element of an array or hash. -- **Element[**\ `number`\ **]** selects an array element at the given index. -- **Element[**\ `string`\ **]** selects a hash element at the given key. -- **Field[@**\ `string`\ **]** selects an instance variable with the given name. -- **Fuzzy** selects all values that are derived from the current value through a combination of the other operations described in this list. +- ``Argument[``\ `number`\ ``]`` selects the argument at the given index. +- ``Argument[``\ `string`:\ ``]`` selects the keyword argument with the given name. +- ``Argument[self]`` selects the receiver of a method call. +- ``Argument[block]`` selects the block argument. +- ``Argument[any]`` selects any argument, except self or block arguments. +- ``Argument[any-named]`` selects any keyword argument. +- ``Argument[hash-splat]`` selects a special argument representing all keyword arguments passed in the method call. +- ``Parameter[``\ `number`\ ``]`` selects the argument at the given index. +- ``Parameter[``\ `string`:\ ``]`` selects the keyword argument with the given name. +- ``Parameter[self]`` selects the ``self`` parameter of a method. +- ``Parameter[block]`` selects the block parameter. +- ``Parameter[any]`` selects any parameter, except self or block parameters. +- ``Parameter[any-named]`` selects any keyword parameter. +- ``Parameter[hash-splat]`` selects the hash splat parameter, often written as **\*\*kwargs**. +- ``ReturnValue`` selects the return value of a call. +- ``Method[``\ `name`\ ``]`` selects a call to the method with the given name. +- ``Element[any]`` selects any element of an array or hash. +- ``Element[``\ `number`\ ``]`` selects an array element at the given index. +- ``Element[``\ `string`\ ``]`` selects a hash element at the given key. +- ``Field[@``\ `string`\ ``]`` selects an instance variable with the given name. +- ``Fuzzy`` selects all values that are derived from the current value through a combination of the other operations described in this list. For example, this can be used to find all values that appear to originate from a particular class. This can be useful for finding method calls from a known class, but where the receiver type is not known or is difficult to model. Additional notes about the syntax of operands: -- Multiple operands may be given to a single component, as a shorthand for the union of the operands. For example, **Method[foo,bar]** matches the union of **Method[foo]** and **Method[bar]**. -- Numeric operands to **Argument**, **Parameter**, and **Element** may be given as a lower bound. For example, **Argument[1..]** matches all arguments except 0. +- Multiple operands may be given to a single component, as a shorthand for the union of the operands. For example, ``Method[foo,bar]`` matches the union of ``Method[foo]`` and ``Method[bar]``. +- Numeric operands to ``Argument``, ``Parameter``, and ``Element`` may be given as a lower bound. For example, ``Argument[1..]`` matches all arguments except 0. Kinds ----- @@ -380,7 +434,7 @@ Kinds Source kinds ~~~~~~~~~~~~ -- **remote**: A generic source of remote flow. Most taint-tracking queries will use such a source. Currently this is the only supported source kind. +- ``remote``: A generic source of remote flow. Most taint-tracking queries will use such a source. Currently this is the only supported source kind. Sink kinds ~~~~~~~~~~ @@ -388,15 +442,15 @@ Sink kinds Unlike sources, sinks tend to be highly query-specific, rarely affecting more than one or two queries. Not every query supports customizable sinks. If the following sinks are not suitable for your use case, you should add a new query. -- **code-injection**: A sink that can be used to inject code, such as in calls to **eval**. -- **command-injection**: A sink that can be used to inject shell commands, such as in calls to **Process.spawn**. -- **path-injection**: A sink that can be used for path injection in a file system access, such as in calls to **File.open**. -- **sql-injection**: A sink that can be used for SQL injection, such as in an ActiveRecord **where** call. -- **url-redirection**: A sink that can be used to redirect the user to a malicious URL. -- **log-injection**: A sink that can be used for log injection, such as in a **Rails.logger** call. +- ``code-injection``: A sink that can be used to inject code, such as in calls to ``eval``. +- ``command-injection``: A sink that can be used to inject shell commands, such as in calls to ``Process.spawn``. +- ``path-injection``: A sink that can be used for path injection in a file system access, such as in calls to ``File.open``. +- ``sql-injection``: A sink that can be used for SQL injection, such as in an ActiveRecord ``where`` call. +- ``url-redirection``: A sink that can be used to redirect the user to a malicious URL. +- ``log-injection``: A sink that can be used for log injection, such as in a ``Rails.logger`` call. Summary kinds ~~~~~~~~~~~~~ -- **taint**: A summary that propagates taint. This means the output is not necessarily equal to the input, but it was derived from the input in an unrestrictive way. An attacker who controls the input will have significant control over the output as well. -- **value**: A summary that preserves the value of the input or creates a copy of the input such that all of its object properties are preserved. +- ``taint``: A summary that propagates taint. This means the output is not necessarily equal to the input, but it was derived from the input in an unrestrictive way. An attacker who controls the input will have significant control over the output as well. +- ``value``: A summary that preserves the value of the input or creates a copy of the input such that all of its object properties are preserved. diff --git a/docs/codeql/codeql-language-guides/customizing-library-models-for-rust.rst b/docs/codeql/codeql-language-guides/customizing-library-models-for-rust.rst new file mode 100644 index 000000000000..7057812b31f5 --- /dev/null +++ b/docs/codeql/codeql-language-guides/customizing-library-models-for-rust.rst @@ -0,0 +1,567 @@ +.. _customizing-library-models-for-rust: + +Customizing library models for Rust +==================================== + +You can model the functions and methods that control data flow in any framework or library. This is especially useful for custom frameworks or niche libraries that are not supported by the standard CodeQL libraries. + +.. include:: ../reusables/beta-note-customizing-library-models.rst + +About this article +------------------ + +This article contains reference material about how to define custom models for sources, sinks, and flow summaries for Rust dependencies in data extension files. + +About data extensions +--------------------- + +You can customize analysis by defining models (summaries, sinks, and sources) of your code's Rust dependencies in data extension files. Each model defines the behavior of one or more elements of your library or framework, such as functions and methods. When you run dataflow analysis, these models expand the potential sources and sinks tracked by dataflow analysis and improve the precision of results. + +Most of the security queries search for paths from a source of untrusted input to a sink that represents a vulnerability. This is known as taint tracking. Each source is a starting point for dataflow analysis to track tainted data and each sink is an end point. + +Taint tracking queries also need to know how data can flow through elements that are not included in the source code. These are modeled as summaries. A summary model enables queries to synthesize the flow behavior through elements in dependency code that is not stored in your repository. + +Syntax used to define an element in an extension file +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Each model of an element is defined using a data extension where each tuple constitutes a model. +A data extension file to extend the standard Rust queries included with CodeQL is a YAML file with the form: + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/rust-all + extensible: + data: + - + - + - ... + +Each YAML file may contain one or more top-level extensions. + +- ``addsTo`` defines the CodeQL pack name and extensible predicate that the extension is injected into. +- ``data`` defines one or more rows of tuples that are injected as values into the extensible predicate. The number of columns and their types must match the definition of the extensible predicate. + +Data extensions use union semantics, which means that the tuples of all extensions for a single extensible predicate are combined, duplicates are removed, and all of the remaining tuples are queryable by referencing the extensible predicate. + +Publish data extension files in a CodeQL model pack to share +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +You can group one or more data extension files into a CodeQL model pack and publish it to the GitHub Container Registry. This makes it easy for anyone to download the model pack and use it to extend their analysis. For more information, see `Creating a CodeQL model pack `__ and `Publishing and using CodeQL packs `__ in the CodeQL CLI documentation. + +Extensible predicates used to create custom models in Rust +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The CodeQL library for Rust analysis exposes the following extensible predicates: + +- ``sourceModel(path, output, kind, provenance)``. This is used to model sources of potentially tainted data. The ``kind`` of the sources defined using this predicate determine which threat model they are associated with. Different threat models can be used to customize the sources used in an analysis. For more information, see ":ref:`Threat models `." +- ``sinkModel(path, input, kind, provenance)``. This is used to model sinks where tainted data may be used in a way that makes the code vulnerable. +- ``summaryModel(path, input, output, kind, provenance)``. This is used to model flow through elements. +- ``neutralModel(path, kind, provenance)``. This is similar to a summary model but used to indicate that a callable has no flow for a given category. Manual neutral models (those with a provenance such as ``manual``) can be used to override generated summary, source, or sink models (those with a provenance such as ``df-generated``), so that the generated model will be ignored. +- ``barrierModel(path, output, kind, provenance)``. This is used to model barriers, which are elements that stop the flow of taint. +- ``barrierGuardModel(path, input, acceptingValue, kind, provenance)``. This is used to model barrier guards, which are elements that can stop the flow of taint depending on a conditional check. + +The extensible predicates are populated using the models defined in data extension files. + +Canonical paths +~~~~~~~~~~~~~~~ + +In Rust models, each callable is identified by its **canonical path** — the fully-qualified path to the function or method. The canonical path follows the internal module structure of the crate, which may differ from the public re-export path. + +Canonical paths take the following forms: + +- **Free functions**: ``crate::module::function``, for example ``std::env::var`` or ``std::fs::read_to_string``. +- **Inherent methods**: ``::method``, for example ``::open``. +- **Trait methods with a concrete type**: ``::method``, for example ``::read_to_end``. +- **Trait methods with a wildcard type**: ``<_ as Trait>::method``, for example ``<_ as core::clone::Clone>::clone``. This form matches any type that implements the trait and is useful for modeling broadly applicable trait methods. For a type that has a specific model (::method), that model will take precedence over the trait model. + +Examples of custom model definitions +------------------------------------- + +The examples in this section are based on models from the standard CodeQL Rust query pack published by GitHub. They demonstrate how to add tuples to extend extensible predicates that are used by the standard queries. + +Example: Taint sink for SQL injection in the ``sqlx`` crate +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This example shows how the Rust query pack models the first argument of the ``sqlx::query`` function as a SQL injection sink. The ``query`` function accepts a SQL query string that will be executed against a database. + +.. code-block:: rust + + use sqlx; + + async fn run_query(pool: &sqlx::PgPool, user_input: &str) { + sqlx::query(user_input) // The argument to this function is a SQL injection sink. + .execute(pool) + .await + .unwrap(); + } + +We need to add a tuple to the ``sinkModel(path, input, kind, provenance)`` extensible predicate by updating a data extension file. + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["sqlx_core::query::query", "Argument[0]", "sql-injection", "manual"] + + +- The first value ``sqlx_core::query::query`` is the canonical path of the function to model. Note that this is the internal module path (``sqlx_core::query::query``), not the public re-export path (``sqlx::query``). +- The second value ``Argument[0]`` is the access path to the first argument of the function call, which is the SQL query string. This is the location of the sink. +- The third value ``sql-injection`` is the kind of the sink. The sink kind is used to define the queries where the sink is in scope. +- The fourth value ``manual`` is the provenance of the sink, which is used to identify the origin of the sink. + +Example: Taint source from the ``reqwest`` crate +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This example shows how the Rust query pack models the return value of the ``reqwest::get`` function as a ``remote`` source. This function makes an HTTP GET request to a remote server. + +.. code-block:: rust + + async fn fetch_data(url: &str) -> Result { + let response = reqwest::get(url).await?; // The return value is a remote source of taint. + Ok(response) + } + +We need to add a tuple to the ``sourceModel(path, output, kind, provenance)`` extensible predicate by updating a data extension file. + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/rust-all + extensible: sourceModel + data: + - ["reqwest::get", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "remote", "manual"] + + +- The first value ``reqwest::get`` is the canonical path of the function. +- The second value ``ReturnValue.Future.Field[core::result::Result::Ok(0)]`` is the access path to the output. This compound path is read left to right: + + - ``ReturnValue`` selects the return value of the function call. Since ``reqwest::get`` is an ``async`` function, the return value is a ``Future``. + - ``Future`` unwraps the ``Future`` to reach the value that will be available after ``.await``. + - ``Field[core::result::Result::Ok(0)]`` selects the first positional field of the ``Ok`` variant of the ``Result`` — that is, the ``reqwest::Response`` value. + +- The third value ``remote`` is the kind of the source. ``remote`` indicates that this source represents data that originates from a remote network request. For more information, see ":ref:`Threat models `." +- The fourth value ``manual`` is the provenance of the source. + +Example: Taint source from environment variables +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This example shows how the Rust query pack models the return value of ``std::env::var`` as a source of data from the environment. + +.. code-block:: rust + + fn get_config() { + let db_url = std::env::var("DATABASE_URL").unwrap(); // The return value is a source of environment data. + // ... + } + +We need to add a tuple to the ``sourceModel(path, output, kind, provenance)`` extensible predicate by updating a data extension file. + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/rust-all + extensible: sourceModel + data: + - ["std::env::var", "ReturnValue.Field[core::result::Result::Ok(0)]", "environment", "manual"] + +- The first value ``std::env::var`` is the canonical path to the ``var`` function in the ``std::env`` module. +- The second value ``ReturnValue.Field[core::result::Result::Ok(0)]`` selects the ``Ok`` variant of the returned ``Result``. +- The third value ``environment`` is the source kind. This is a subcategory of the ``local`` threat model. For more information, see ":ref:`Threat models `." +- The fourth value ``manual`` is the provenance of the source. + +Example: Add flow through the ``Response::text`` method +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This example shows how the Rust query pack models taint flow through the ``text`` method of ``reqwest::Response``, which reads the response body as a string. + +.. code-block:: rust + + async fn read_body(response: reqwest::Response) { + let body = response.text().await.unwrap(); // There is taint flow from response to body. + // ... + } + +We need to add a tuple to the ``summaryModel(path, input, output, kind, provenance)`` extensible predicate by updating a data extension file: + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["::text", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] + + +- The first value ``::text`` is the canonical path. Note the format ``::method`` used for inherent methods. Also note that the canonical path uses the internal module path ``reqwest::response::Response``, not just ``reqwest::Response``. +- The second value ``Argument[self]`` is the access path to the input. ``Argument[self]`` refers to the receiver of the method call (``response`` in the example). +- The third value ``ReturnValue.Future.Field[core::result::Result::Ok(0)]`` is the access path to the output. This models the fact that ``text()`` is an ``async`` method returning ``impl Future>``, so we follow through ``Future`` and then unwrap the ``Ok`` variant. +- The fourth value ``taint`` is the kind of the flow. ``taint`` means that taint is propagated through the call — the output is derived from the input but may not be identical to it. +- The fifth value ``manual`` is the provenance of the summary. + +Example: Add flow through the ``Path::join`` method +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This example shows how the Rust query pack models taint flow through the ``join`` method of ``std::path::Path``, where both the receiver and argument contribute to the result. + +.. code-block:: rust + + use std::path::Path; + + fn build_path(base: &Path, user_input: &str) { + let full_path = base.join(user_input); // There is taint flow from both base and user_input to full_path. + // ... + } + +We need to add tuples to the ``summaryModel(path, input, output, kind, provenance)`` extensible predicate by updating a data extension file: + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["::join", "Argument[self].Reference", "ReturnValue", "taint", "manual"] + - ["::join", "Argument[0]", "ReturnValue", "taint", "manual"] + +Since we are adding flow through a method, we need to add tuples to the ``summaryModel`` extensible predicate. Each tuple defines flow from one input to the output. The first row defines flow from the receiver and the second row defines flow from the first argument. + +- The first value ``::join`` is the canonical path, the same for both rows. +- The second value differs: + + - ``Argument[self].Reference`` is the access path to the receiver. Since ``join`` takes ``&self``, we use ``Argument[self]`` to select the ``self`` reference, and then ``Reference`` to follow through the reference to the underlying ``Path`` value. + - ``Argument[0]`` is the access path to the first argument (``user_input`` in the example). + +- The third value ``ReturnValue`` is the access path to the output — the return value of the method call. +- The fourth value ``taint`` is the kind of flow. Since ``join`` combines the path and the argument, the output is derived from the inputs but is not identical to either one. +- The fifth value ``manual`` is the provenance of the summary. + +.. note:: + + When using ``Argument[self]`` to refer to the receiver, the ``Reference`` token may need to be appended to follow through the ``&self`` or ``&mut self`` reference to the underlying value. This depends on whether the data you want to track is on the reference itself or on the value behind the reference. + +Example: Add flow through the ``Iterator::map`` method +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This example shows how the Rust query pack models a more complex flow through a higher-order method. Here we model flow through the ``map`` method of the ``Iterator`` trait, which takes a closure and applies it to each element. + +.. code-block:: rust + + fn transform(items: Vec) { + let results: Vec = items.into_iter().map(|item| { + item.to_uppercase() // There is value flow from elements of `items` to `item`. + }).collect(); + } + +We need to add tuples to the ``summaryModel(path, input, output, kind, provenance)`` extensible predicate by updating a data extension file: + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["<_ as core::iter::traits::iterator::Iterator>::map", "Argument[self].Element", "Argument[0].Parameter[0]", "value", "manual"] + + +- The first value ``<_ as core::iter::traits::iterator::Iterator>::map`` is the canonical path. The ``<_ as Trait>::method`` form uses a wildcard type (``_``) to match any type that implements the ``Iterator`` trait. +- The second value ``Argument[self].Element`` is the access path to the input — the elements of the iterator (the receiver). +- The third value ``Argument[0].Parameter[0]`` is the access path to the output: + + - ``Argument[0]`` selects the closure argument to ``map``. + - ``Parameter[0]`` selects the first parameter of the closure (``item`` in the example). + +- The fourth value ``value`` is the kind of flow. ``value`` means the value is preserved as it flows — each element of the iterator flows unchanged into the closure parameter. +- The fifth value ``manual`` is the provenance of the summary. + +Example: Add a ``neutral`` model +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This example shows how the Rust query pack models the ``Option::map`` method as neutral with respect to sinks. + +A neutral model prevents generated or inherited models of a specific category (``source``, ``sink``, or ``summary``) from being applied to a callable. This is useful when an automatically generated model incorrectly identifies a callable as, for example, a sink. + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/rust-all + extensible: neutralModel + data: + - ["::map", "sink", "manual"] + +Since we are adding a neutral model, we need to add a tuple to the ``neutralModel`` extensible predicate. The tuple has three values: + +- The first value ``::map`` is the canonical path of the function. +- The second value ``sink`` is the category of model to suppress. This means that any generated sink model for ``Option::map`` will be ignored. The category can be ``source``, ``sink``, or ``summary``. +- The third value ``manual`` is the provenance of the neutral model. + +Example: Add a barrier for SQL injection +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This example shows how to model a barrier that stops the flow of taint. A barrier model is used to define that the flow of taint stops at the modeled element for the specified kind of query. + +Consider a hypothetical function ``my_crate::sanitize::escape_sql`` which escapes a SQL string, making it safe to use in a SQL query. + +.. code-block:: rust + + fn run_query(pool: &sqlx::PgPool, user_input: &str) { + let safe_input = my_crate::sanitize::escape_sql(user_input); // The return value is safe to use in SQL. + let query = format!("SELECT * FROM users WHERE name = '{}'", safe_input); + // ... + } + +We need to add a tuple to the ``barrierModel(path, output, kind, provenance)`` extensible predicate by updating a data extension file. + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/rust-all + extensible: barrierModel + data: + - ["my_crate::sanitize::escape_sql", "ReturnValue", "sql-injection", "manual"] + + +- The first value ``my_crate::sanitize::escape_sql`` is the canonical path of the function. +- The second value ``ReturnValue`` is the access path to the output of the barrier, which means that the return value is considered sanitized. +- The third value ``sql-injection`` is the kind of the barrier. The barrier kind must match the kind used in the query where the barrier should take effect. In this case, it matches the ``sql-injection`` sink kind used by SQL injection queries. +- The fourth value ``manual`` is the provenance of the barrier. + +Example: Add a barrier guard +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This example shows how to model a barrier guard that stops the flow of taint when a conditional check is performed on data. +A barrier guard model is used when a function returns a boolean that indicates whether the data is safe to use. + +Consider a hypothetical function ``my_crate::validate::is_safe_path`` which returns ``true`` when the given path is safe to use in a file system access. + +.. code-block:: rust + + fn read_file(user_path: &str) { + if my_crate::validate::is_safe_path(user_path) { // The check guards the use, so the input is safe. + let contents = std::fs::read_to_string(user_path).unwrap(); + // ... + } + } + +We need to add a tuple to the ``barrierGuardModel(path, input, acceptingValue, kind, provenance)`` extensible predicate by updating a data extension file. + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/rust-all + extensible: barrierGuardModel + data: + - ["my_crate::validate::is_safe_path", "Argument[0]", "true", "path-injection", "manual"] + + +- The first value ``my_crate::validate::is_safe_path`` is the canonical path of the function. +- The second value ``Argument[0]`` is the access path to the input whose flow is blocked. In this case, the first argument to the function (``user_path`` in the example). +- The third value ``true`` is the accepting value of the barrier guard. This is the value that the conditional check must return for the barrier to apply. In this case, when ``is_safe_path`` returns ``true``, the input is considered safe. +- The fourth value ``path-injection`` is the kind of the barrier guard. The barrier guard kind must match the kind used in the query where the barrier guard should take effect. In this case, it matches the ``path-injection`` sink kind used by tainted path queries. +- The fifth value ``manual`` is the provenance of the barrier guard. + +.. _threat-models-rust: + +Threat models +------------- + +.. include:: ../reusables/threat-model-description.rst + +Reference material +------------------ + +The following sections provide reference material for extensible predicates, access paths, and kinds. + +Extensible predicates +--------------------- + +sourceModel(path, output, kind, provenance) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Adds a new taint source. Most taint-tracking queries will use the new source. + +- **path**: Canonical path of the function or method. +- **output**: Access path leading to the source value. +- **kind**: Kind of source to add. See ":ref:`Threat models `" for available source kinds. +- **provenance**: Origin of the model. Use ``manual`` for custom models. + +Example: + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/rust-all + extensible: sourceModel + data: + - ["std::env::var", "ReturnValue.Field[core::result::Result::Ok(0)]", "environment", "manual"] + +sinkModel(path, input, kind, provenance) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Adds a new taint sink. Sinks are query-specific and will typically affect one or two queries. + +- **path**: Canonical path of the function or method. +- **input**: Access path leading to the sink value. +- **kind**: Kind of sink to add. See the section on sink kinds for a list of commonly used kinds. +- **provenance**: Origin of the model. Use ``manual`` for custom models. + +Example: + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/rust-all + extensible: sinkModel + data: + - ["sqlx_core::query::query", "Argument[0]", "sql-injection", "manual"] + +summaryModel(path, input, output, kind, provenance) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Adds flow through a function or method call. + +- **path**: Canonical path of the function or method. +- **input**: Access path leading to the input of the flow (where data flows from). +- **output**: Access path leading to the output of the flow (where data flows to). +- **kind**: Kind of summary to add. Can be ``taint`` for taint-propagating flow, or ``value`` for value-preserving flow. +- **provenance**: Origin of the model. Use ``manual`` for custom models. + +Example: + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/rust-all + extensible: summaryModel + data: + - ["::text", "Argument[self]", "ReturnValue.Future.Field[core::result::Result::Ok(0)]", "taint", "manual"] + +neutralModel(path, kind, provenance) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Prevents generated or inherited models of the specified category from being applied to the callable. + +- **path**: Canonical path of the function or method. +- **kind**: The category of model to suppress: ``source``, ``sink``, or ``summary``. +- **provenance**: Origin of the model. Use ``manual`` for custom models. + +Example: + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/rust-all + extensible: neutralModel + data: + - ["::map", "sink", "manual"] + +barrierModel(path, output, kind, provenance) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Adds a new barrier that stops the flow of taint at the specified element. + +- **path**: Canonical path of the function or method. +- **output**: Access path leading to the output of the barrier (the value that is considered sanitized). +- **kind**: Kind of barrier to add. The barrier kind must match the kind used in the query where the barrier should take effect. +- **provenance**: Origin of the model. Use ``manual`` for custom models. + +Example: + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/rust-all + extensible: barrierModel + data: + - ["my_crate::sanitize::escape_sql", "ReturnValue", "sql-injection", "manual"] + +barrierGuardModel(path, input, acceptingValue, kind, provenance) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Adds a new barrier guard that stops the flow of taint when a conditional check is performed on data. + +- **path**: Canonical path of the function or method. +- **input**: Access path to the input whose flow is blocked. +- **acceptingValue**: The value that the conditional check must return for the barrier to apply. Usually ``"true"`` or ``"false"``. +- **kind**: Kind of barrier guard to add. The barrier guard kind must match the kind used in the query where the barrier guard should take effect. +- **provenance**: Origin of the model. Use ``manual`` for custom models. + +Example: + +.. code-block:: yaml + + extensions: + - addsTo: + pack: codeql/rust-all + extensible: barrierGuardModel + data: + - ["my_crate::validate::is_safe_path", "Argument[0]", "true", "path-injection", "manual"] + +Access paths +------------ + +The ``input`` and ``output`` columns consist of a ``.``-separated list of access path tokens, which is evaluated from left to right, with each step selecting a new set of values derived from the previous set. + +The following tokens are commonly used: + +- **Argument[**\ ``n``\ **]** selects the ``n``-th argument to a call (0-indexed). May be a range of the form ``x..y`` (inclusive) and/or a comma-separated list. +- **Argument[self]** selects the receiver (``self``) of a method call. +- **Parameter[**\ ``n``\ **]** selects the ``n``-th parameter of a callback. May be a range of the form ``x..y`` (inclusive) and/or a comma-separated list. +- **ReturnValue** selects the return value of a function call. +- **Element** selects an element in a collection (such as a ``Vec``, ``HashMap``, or iterator). +- **Field[**\ ``type::field``\ **]** selects a named field of a struct or enum variant. For example, ``Field[ihex::Record::Data::value]`` selects the field ``value`` of the ``ihex::Record::Data`` variant. +- **Field[**\ ``type(i)``\ **]** selects the ``i``-th positional field of a tuple struct or tuple enum variant. For example, ``Field[core::result::Result::Ok(0)]`` selects the first positional value inside ``Ok``. +- **Field[**\ ``i``\ **]** selects the ``i``-th element of a tuple. +- **Reference** follows through a reference (``&T`` or ``&mut T``) to reach the referenced value. +- **Future** follows through a ``Future`` to reach the value that will be available after ``.await``. + +Additional notes about the syntax: + +- Multiple operands may be given to a single token, as a shorthand for the union of the operands. For example, ``Argument[0,1]`` matches both ``Argument[0]`` and ``Argument[1]``. +- Numeric operands to ``Argument`` and ``Parameter`` may be given as a range. For example, ``Argument[0..2]`` matches arguments 0, 1, and 2. + +Kinds +----- + +Source kinds +~~~~~~~~~~~~ + +See ":ref:`Threat models `" for available source kinds. + +Sink kinds +~~~~~~~~~~ + +Unlike sources, sinks tend to be highly query-specific, rarely affecting more than one or two queries. Not every query supports customizable sinks. + +Commonly used sink kinds for Rust include: + +- **sql-injection**: A sink for SQL injection, such as an argument to ``sqlx::query``. +- **path-injection**: A sink for path injection in a file system access, such as an argument to ``std::fs::read``. +- **log-injection**: A sink for log injection, such as an argument to a logging function. +- **html-injection**: A sink for HTML injection (cross-site scripting), such as a response body. +- **command-injection**: A sink for command injection, such as an argument to ``std::process::Command``. +- **request-url**: A sink for server-side request forgery, such as a URL passed to an HTTP client. +- **regex-use**: A sink for regex injection, such as a pattern passed to a regex constructor. + +Summary kinds +~~~~~~~~~~~~~ + +- **taint**: A summary that propagates taint. This means the output is not necessarily equal to the input, but it was derived from the input in an unrestrictive way. An attacker who controls the input will have significant control over the output as well. +- **value**: A summary that preserves the value of the input or creates a copy of the input such that all of its properties are preserved. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.24.0.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.24.0.rst index 9c228de1fc25..39b5ce0772df 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.24.0.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.24.0.rst @@ -152,9 +152,9 @@ C# * When a code-scanning configuration specifies the :code:`paths:` and/or :code:`paths-ignore:` settings, these are now taken into account by the C# extractor's search for :code:`.config`, :code:`.props`, XML and project files. * Updated the generated .NET “models as data” runtime models to cover .NET 10. * C# 14: Support for *implicit* span conversions in the QL library. -* Basic extractor support for .NET 10 is now available. Extraction is supported for .NET 10 projects in both traced mode and :code:`build mode: none`. However, code that uses language features new to C# 14 is not yet fully supported for extraction and analysis. +* Basic extractor support for .NET 10 is now available. Extraction is supported for .NET 10 projects in both traced mode and :code:`build-mode: none`. However, code that uses language features new to C# 14 is not yet fully supported for extraction and analysis. * Added autobuilder and :code:`build-mode: none` support for :code:`.slnx` solution files. -* In :code:`build mode: none`, .NET 10 is now used by default unless a specific .NET version is specified elsewhere. +* In :code:`build-mode: none`, .NET 10 is now used by default unless a specific .NET version is specified elsewhere. * Added implicit reads of :code:`System.Collections.Generic.KeyValuePair.Value` at taint-tracking sinks and at inputs to additional taint steps. As a result, taint-tracking queries will now produce more results when a container is tainted. Golang diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.25.2.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.25.2.rst new file mode 100644 index 000000000000..58c6a7245d2b --- /dev/null +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.25.2.rst @@ -0,0 +1,157 @@ +.. _codeql-cli-2.25.2: + +========================== +CodeQL 2.25.2 (2026-04-15) +========================== + +.. contents:: Contents + :depth: 2 + :local: + :backlinks: none + +This is an overview of changes in the CodeQL CLI and relevant CodeQL query and library packs. For additional updates on changes to the CodeQL code scanning experience, check out the `code scanning section on the GitHub blog `__, `relevant GitHub Changelog updates `__, `changes in the CodeQL extension for Visual Studio Code `__, and the `CodeQL Action changelog `__. + +Security Coverage +----------------- + +CodeQL 2.25.2 runs a total of 492 security queries when configured with the Default suite (covering 166 CWE). The Extended suite enables an additional 135 queries (covering 35 more CWE). 1 security query has been added with this release. + +CodeQL CLI +---------- + +Miscellaneous +~~~~~~~~~~~~~ + +* The build of Eclipse Temurin OpenJDK that is used to run the CodeQL CLI has been updated to version 21.0.10. + +Query Packs +----------- + +Major Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C# +"" + +* The :code:`cs/constant-condition` query has been simplified. The query no longer reports trivially constant conditions as they were found to generally be intentional. As a result, it should now produce fewer false positives. Additionally, the simplification means that it now reports all the results that :code:`cs/constant-comparison` used to report, and as consequence, that query has been deleted. + +Python +"""""" + +* Several quality queries have been ported away from using the legacy points-to library. This may lead to changes in alerts. + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C/C++ +""""" + +* The "Extraction warnings" (:code:`cpp/diagnostics/extraction-warnings`) diagnostics query no longer yields :code:`ExtractionRecoverableWarning`\ s for :code:`build-mode: none` databases. The results were found to significantly increase the sizes of the produced SARIF files, making them unprocessable in some cases. +* Fixed an issue with the "Suspicious add with sizeof" (:code:`cpp/suspicious-add-sizeof`) query causing false positive results in :code:`build-mode: none` databases. +* Fixed an issue with the "Uncontrolled format string" (:code:`cpp/tainted-format-string`) query involving certain kinds of formatting function implementations. +* Fixed an issue with the "Wrong type of arguments to formatting function" (:code:`cpp/wrong-type-format-argument`) query causing false positive results in :code:`build-mode: none` databases. +* Fixed an issue with the "Multiplication result converted to larger type" (:code:`cpp/integer-multiplication-cast-to-long`) query causing false positive results in :code:`build-mode: none` databases. + +Query Metadata Changes +~~~~~~~~~~~~~~~~~~~~~~ + +C/C++ +""""" + +* The :code:`@security-severity` metadata of :code:`cpp/cgi-xss` has been increased from 6.1 (medium) to 7.8 (high). + +C# +"" + +* The :code:`@security-severity` metadata of :code:`cs/log-forging` has been reduced from 7.8 (high) to 6.1 (medium). +* The :code:`@security-severity` metadata of :code:`cs/web/xss` has been increased from 6.1 (medium) to 7.8 (high). + +Golang +"""""" + +* The :code:`@security-severity` metadata of :code:`go/log-injection` has been reduced from 7.8 (high) to 6.1 (medium). +* The :code:`@security-severity` metadata of :code:`go/html-template-escaping-bypass-xss`, :code:`go/reflected-xss` and :code:`go/stored-xss` has been increased from 6.1 (medium) to 7.8 (high). + +Java/Kotlin +""""""""""" + +* The :code:`@security-severity` metadata of :code:`java/log-injection` has been reduced from 7.8 (high) to 6.1 (medium). +* The :code:`@security-severity` metadata of :code:`java/android/webview-addjavascriptinterface`, :code:`java/android/websettings-javascript-enabled` and :code:`java/xss` has been increased from 6.1 (medium) to 7.8 (high). + +Python +"""""" + +* The :code:`@security-severity` metadata of :code:`py/log-injection` has been reduced from 7.8 (high) to 6.1 (medium). +* The :code:`@security-severity` metadata of :code:`py/jinja2/autoescape-false` and :code:`py/reflective-xss` has been increased from 6.1 (medium) to 7.8 (high). + +Ruby +"""" + +* The :code:`@security-severity` metadata of :code:`rb/log-injection` has been reduced from 7.8 (high) to 6.1 (medium). +* The :code:`@security-severity` metadata of :code:`rb/reflected-xss`, :code:`rb/stored-xss` and :code:`rb/html-constructed-from-input` has been increased from 6.1 (medium) to 7.8 (high). + +Swift +""""" + +* The :code:`@security-severity` metadata of :code:`swift/unsafe-webview-fetch` has been increased from 6.1 (medium) to 7.8 (high). + +Rust +"""" + +* The :code:`@security-severity` metadata of :code:`rust/log-injection` has been increased from 2.6 (low) to 6.1 (medium). +* The :code:`@security-severity` metadata of :code:`rust/xss` has been increased from 6.1 (medium) to 7.8 (high). + +Language Libraries +------------------ + +Bug Fixes +~~~~~~~~~ + +Python +"""""" + +* Fixed the resolution of relative imports such as :code:`from . import helper` inside namespace packages (directories without an :code:`__init__.py` file), which previously did not work correctly, leading to missing flow. + +Breaking Changes +~~~~~~~~~~~~~~~~ + +C/C++ +""""" + +* The :code:`SourceModelCsv`, :code:`SinkModelCsv`, and :code:`SummaryModelCsv` classes and the associated CSV parsing infrastructure have been removed from :code:`ExternalFlow.qll`. New models should be added as :code:`.model.yml` files in the :code:`ext/` directory. + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C/C++ +""""" + +* Added :code:`HttpReceiveHttpRequest`, :code:`HttpReceiveRequestEntityBody`, and :code:`HttpReceiveClientCertificate` from Win32's :code:`http.h` as remote flow sources. +* Added dataflow through members initialized via non-static data member initialization (NSDMI). + +C# +"" + +* The extractor no longer synthesizes expanded forms of compound assignments. This may have a small impact on the results of queries that explicitly or implicitly rely on the expanded form of compound assignments. +* The :code:`cs/log-forging` query no longer treats arguments to extension methods with source code on :code:`ILogger` types as sinks. Instead, taint is tracked interprocedurally through extension method bodies, reducing false positives when extension methods sanitize input internally. + +Java/Kotlin +""""""""""" + +* The :code:`java/tainted-arithmetic` query no longer flags arithmetic expressions that are used directly as an operand of a comparison in :code:`if`\ -condition bounds-checking patterns. For example, :code:`if (off + len > array.length)` is now recognized as a bounds check rather than a potentially vulnerable computation, reducing false positives. +* The :code:`java/potentially-weak-cryptographic-algorithm` query no longer flags Elliptic Curve algorithms (:code:`EC`, :code:`ECDSA`, :code:`ECDH`, :code:`EdDSA`, :code:`Ed25519`, :code:`Ed448`, :code:`XDH`, :code:`X25519`, :code:`X448`), HMAC-based algorithms (:code:`HMACSHA1`, :code:`HMACSHA256`, :code:`HMACSHA384`, :code:`HMACSHA512`), or PBKDF2 key derivation as potentially insecure. These are modern, secure algorithms recommended by NIST and other standards bodies. This will reduce the number of false positives for this query. +* The first argument of the method :code:`getInstance` of :code:`java.security.Signature` is now modeled as a sink for :code:`java/potentially-weak-cryptographic-algorithm`, :code:`java/weak-cryptographic-algorithm` and :code:`java/rsa-without-oaep`. This will increase the number of alerts for these queries. +* Kotlin versions up to 2.3.20 are now supported. + +New Features +~~~~~~~~~~~~ + +C/C++ +""""" + +* Added a subclass :code:`MesonPrivateTestFile` of :code:`ConfigurationTestFile` that represents files created by Meson to test the build configuration. +* Added a class :code:`ConstructorDirectFieldInit` to represent field initializations that occur in member initializer lists. +* Added a class :code:`ConstructorDefaultFieldInit` to represent default field initializations. +* Added a class :code:`DataFlow::IndirectParameterNode` to represent the indirection of a parameter as a dataflow node. +* Added a predicate :code:`Node::asIndirectInstruction` which returns the :code:`Instruction` that defines the indirect dataflow node, if any. +* Added a class :code:`IndirectUninitializedNode` to represent the indirection of an uninitialized local variable as a dataflow node. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.25.3.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.25.3.rst new file mode 100644 index 000000000000..b14905f6eb67 --- /dev/null +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.25.3.rst @@ -0,0 +1,124 @@ +.. _codeql-cli-2.25.3: + +========================== +CodeQL 2.25.3 (2026-04-30) +========================== + +.. contents:: Contents + :depth: 2 + :local: + :backlinks: none + +This is an overview of changes in the CodeQL CLI and relevant CodeQL query and library packs. For additional updates on changes to the CodeQL code scanning experience, check out the `code scanning section on the GitHub blog `__, `relevant GitHub Changelog updates `__, `changes in the CodeQL extension for Visual Studio Code `__, and the `CodeQL Action changelog `__. + +Security Coverage +----------------- + +CodeQL 2.25.3 runs a total of 496 security queries when configured with the Default suite (covering 169 CWE). The Extended suite enables an additional 131 queries (covering 32 more CWE). + +CodeQL CLI +---------- + +Improvements +~~~~~~~~~~~~ + +* The :code:`codeql database finalize` command now accepts the :code:`--working-dir` flag. When specified, any extractor pre-finalize scripts will be run in that directory. If the flag is not used, the scripts will run in the source root directory (maintaining existing behavior). The flag will also be automatically passed through when running the higher-level + :code:`codeql database create` command. + +Query Packs +----------- + +Major Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +GitHub Actions +"""""""""""""" + +* Fixed alert messages in :code:`actions/artifact-poisoning/critical` and :code:`actions/artifact-poisoning/medium` as they previously included a redundant placeholder in the alert message that would on occasion contain a long block of yml that makes the alert difficult to understand. Also improved the wording to make it clearer that it is not the artifact that is being poisoned, but instead a potentially untrusted artifact that is consumed. Finally, changed the alert location to be the source, to align more with other queries reporting an artifact (e.g. zipslip) which is more useful. + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C/C++ +""""" + +* Added :code:`AllocationFunction` models for :code:`aligned_alloc`, :code:`std::aligned_alloc`, and :code:`bsl::aligned_alloc`. +* The "Comparison of narrow type with wide type in loop condition" (:code:`cpp/comparison-with-wider-type`) query has been upgraded to :code:`high` precision. This query will now run in the default code scanning suite. +* The "Multiplication result converted to larger type" (:code:`cpp/integer-multiplication-cast-to-long`) query has been upgraded to :code:`high` precision. This query will now run in the default code scanning suite. +* The "Suspicious add with sizeof" (:code:`cpp/suspicious-add-sizeof`) query has been upgraded to :code:`high` precision. This query will now run in the default code scanning suite. +* The "Wrong type of arguments to formatting function" (:code:`cpp/wrong-type-format-argument`) query has been upgraded to :code:`high` precision. This query will now run in the default code scanning suite. +* The "Implicit function declaration" (:code:`cpp/implicit-function-declaration`) query has been upgraded to :code:`high` precision. However, for :code:`build-mode: none` databases, it no longer produces any results. The results in this mode were found to be very noisy and fundamentally imprecise. + +C# +"" + +* The query :code:`cs/useless-tostring-call` has been updated to avoid false positive results in calls to :code:`StringBuilder.AppendLine` and calls of the form :code:`base.ToString()`. Moreover, the alert message has been made more precise. + +JavaScript/TypeScript +""""""""""""""""""""" + +* The query :code:`js/missing-rate-limiting` now takes Fastify per-route rate limiting into account. + +Python +"""""" + +* The :code:`py/bind-socket-all-network-interfaces` query now uses the global data-flow library, leading to better precision and more results. Also, wrappers of :code:`socket.socket` in the :code:`eventlet` and :code:`gevent` libraries are now also recognized as socket binding operations. + +GitHub Actions +"""""""""""""" + +* The query :code:`actions/missing-workflow-permissions` no longer produces false positive results on reusable workflows where all callers set permissions. + +Language Libraries +------------------ + +Breaking Changes +~~~~~~~~~~~~~~~~ + +C/C++ +""""" + +* The deprecated :code:`NonThrowingFunction` class has been removed, use :code:`NonCppThrowingFunction` instead. +* The deprecated :code:`ThrowingFunction` class has been removed, use :code:`AlwaysSehThrowingFunction` instead. + +Major Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Swift +""""" + +* Upgraded to allow analysis of Swift 6.3. + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Java/Kotlin +""""""""""" + +* The queries "Resolving XML external entity in user-controlled data" (:code:`java/xxe`) and "Resolving XML external entity in user-controlled data from local source" (:code:`java/xxe-local`) now recognize sinks in the Woodstox StAX library when :code:`com.ctc.wstx.stax.WstxInputFactory` or :code:`org.codehaus.stax2.XMLInputFactory2` are used directly. + +Python +"""""" + +* The Python extractor now supports the new :code:`lazy import ...` and :code:`lazy from ... import ...` (as defined in `PEP-810 `__) that will be part of Python 3.15. + +GitHub Actions +"""""""""""""" + +* Removed false positive injection sink models for the :code:`context` input of :code:`docker/build-push-action` and the :code:`allowed-endpoints` input of :code:`step-security/harden-runner`. + +Deprecated APIs +~~~~~~~~~~~~~~~ + +C# +"" + +* The predicates :code:`get[L|R]Value` in the class :code:`Assignment` have been deprecated. Use :code:`get[Left|Right]Operand` instead. + +New Features +~~~~~~~~~~~~ + +C/C++ +""""" + +* Added a subclass :code:`AutoconfConfigureTestFile` of :code:`ConfigurationTestFile` that represents files created by GNU autoconf configure scripts to test the build configuration. diff --git a/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.25.4.rst b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.25.4.rst new file mode 100644 index 000000000000..649c6f26f6a3 --- /dev/null +++ b/docs/codeql/codeql-overview/codeql-changelog/codeql-cli-2.25.4.rst @@ -0,0 +1,147 @@ +.. _codeql-cli-2.25.4: + +========================== +CodeQL 2.25.4 (2026-05-05) +========================== + +.. contents:: Contents + :depth: 2 + :local: + :backlinks: none + +This is an overview of changes in the CodeQL CLI and relevant CodeQL query and library packs. For additional updates on changes to the CodeQL code scanning experience, check out the `code scanning section on the GitHub blog `__, `relevant GitHub Changelog updates `__, `changes in the CodeQL extension for Visual Studio Code `__, and the `CodeQL Action changelog `__. + +Security Coverage +----------------- + +CodeQL 2.25.4 runs a total of 496 security queries when configured with the Default suite (covering 169 CWE). The Extended suite enables an additional 131 queries (covering 32 more CWE). + +CodeQL CLI +---------- + +There are no user-facing CLI changes in this release. + +Language Libraries +------------------ + +Breaking Changes +~~~~~~~~~~~~~~~~ + +C# +"" + +* The C# control flow graph (CFG) implementation has been completely rewritten. The CFG now includes additional nodes to more accurately represent certain constructs. This also means that any existing code that implicitly relies on very specific details about the CFG may need to be updated. + The CFG no longer uses splitting, which means that AST nodes now have a unique CFG node representation. + Additionally, the following breaking changes have been made: + + * :code:`ControlFlow::Node` has been renamed to :code:`ControlFlowNode`. + * :code:`ControlFlow::Nodes` has been renamed to :code:`ControlFlowNodes`. + * :code:`BasicBlock.getCallable` has been renamed to :code:`BasicBlock.getEnclosingCallable`. + * :code:`BasicBlocks.qll` has been deleted. + * :code:`ControlFlowNode.getAstNode` has changed its meaning. The AST-to-CFG mapping remains one-to-many, but now for a different reason. It used to be because of splitting, but now it's because of additional "helper" CFG nodes. To get the (now canonical) CFG node for a given AST node, use + :code:`ControlFlowNode.asExpr()` or :code:`ControlFlowNode.asStmt()` or + :code:`ControlFlowElement.getControlFlowNode()` instead. + +Major Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C# +"" + +* When resolving dependencies in :code:`build-mode: none`, :code:`dotnet restore` now explicitly receives reachable NuGet feeds configured in :code:`nuget.config` when feed responsiveness checking is enabled (the default), and any private registries directly, improving reliability when default feeds are unavailable or restricted. + +Swift +""""" + +* Upgraded to allow analysis of Swift 6.3.1. + +Minor Analysis Improvements +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +C/C++ +""""" + +* Added taint flow models for the :code:`Strsafe.h` header from the Windows SDK. + +C# +"" + +* Expanded ASP and ASP.NET remote source modeling to cover additional sources, including fields of tainted parameters as well as properties and fields that become tainted transitively. +* C# 14: Added support for user-defined compound assignment operators. + +Java/Kotlin +""""""""""" + +* Added :code:`sql-injection` sink models for the Hibernate :code:`org.hibernate.query.QueryProducer` methods :code:`createNativeMutationQuery`, :code:`createMutationQuery`, and :code:`createSelectionQuery`. +* The :code:`java/partial-path-traversal` and :code:`java/partial-path-traversal-from-remote` queries now correctly recognize file separator appends using :code:`+=`. +* The :code:`java/path-injection` and :code:`java/zipslip` queries now recognize :code:`Path.toRealPath()` as a path normalization sanitizer, consistent with the existing treatment of :code:`Path.normalize()` and :code:`File.getCanonicalPath()`. This reduces false positives for code that uses the NIO.2 API for path canonicalization. +* The :code:`java/sensitive-log` query now excludes additional common variable naming patterns that do not hold sensitive data, reducing false positives. This includes pagination/iteration tokens (:code:`nextToken`, :code:`pageToken`, :code:`continuationToken`), token metadata (:code:`tokenType`, :code:`tokenEndpoint`, :code:`tokenCount`), and secret metadata (:code:`secretName`, :code:`secretId`, :code:`secretVersion`). +* The :code:`java/sensitive-log` query now treats method calls whose names contain "encrypt", "hash", or "digest" as sanitizers, consistent with the existing treatment in :code:`java/cleartext-storage-in-log`. This reduces false positives when sensitive data is hashed or encrypted before logging. +* The :code:`java/trust-boundary-violation` query now recognizes regular expression checks (including :code:`String.matches()` guards and :code:`@javax.validation.constraints.Pattern` annotations) as sanitizers, consistent with the existing treatment of ESAPI validators. This reduces false positives when input is validated against a pattern before being stored in a session. + +Python +"""""" + +* The Python extractor now supports unpacking in comprehensions, e.g. :code:`[*x for x in nested]` (as defined in `PEP-798 `__) that will be part of Python 3.15. + +Deprecated APIs +~~~~~~~~~~~~~~~ + +C# +"" + +* The QL classes in the C# SSA library have been renamed to improve consistency between languages. Any custom QL code that makes use of SSA needs to be updated. The old classes have been deprecated and include more detailed migration instructions in their qldoc. + +New Features +~~~~~~~~~~~~ + +C/C++ +""""" + +* A new predicate :code:`getSwitchCase` was added to the :code:`SwitchStmt` class, which yields the :code:`n`\ th :code:`case` statement from a :code:`switch` statement. +* Data flow barriers and barrier guards can now be added using data extensions. For more information see `Customizing library models for C and C++ `__. + +C# +"" + +* Data flow barriers and barrier guards can now be added using data extensions. For more information see `Customizing library models for C# `__. + +Golang +"""""" + +* Data flow barriers and barrier guards can now be added using data extensions. For more information see `Customizing library models for Go `__. + +Java/Kotlin +""""""""""" + +* Data flow barriers and barrier guards can now be added using data extensions. For more information see `Customizing library models for Java and Kotlin `__. + +JavaScript/TypeScript +""""""""""""""""""""" + +* Added support for |link-code-vercel-node-1|_ Vercel serverless functions. Handlers are recognized via the :code:`VercelRequest`\ /\ :code:`VercelResponse` TypeScript parameter types, and standard security queries (:code:`js/reflected-xss`, :code:`js/request-forgery`, :code:`js/sql-injection`, :code:`js/command-line-injection`, etc.) now detect vulnerabilities in Vercel API route files. +* Data flow barriers and barrier guards can now be added using data extensions. For more information see `Customizing library models for JavaScript `__. + +Python +"""""" + +* Data flow barriers and barrier guards can now be added using data extensions. For more information see `Customizing library models for Python `__. + +Ruby +"""" + +* Data flow barriers and barrier guards can now be added using data extensions. For more information see `Customizing library models for Ruby `__. + +Swift +""""" + +* The :code:`BuiltinFixedArrayType` class now defines the predicates :code:`getSize` and :code:`getElementType`, which yield the size of the array and the type of elements stored in the array, respectively. + +Rust +"""" + +* Data flow barriers and barrier guards can now be added using data extensions. + +.. |link-code-vercel-node-1| replace:: :code:`@vercel/node`\ +.. _link-code-vercel-node-1: https://www.npmjs.com/package/@vercel/node + diff --git a/docs/codeql/codeql-overview/codeql-changelog/index.rst b/docs/codeql/codeql-overview/codeql-changelog/index.rst index fc3c52473281..c5d4fee45769 100644 --- a/docs/codeql/codeql-overview/codeql-changelog/index.rst +++ b/docs/codeql/codeql-overview/codeql-changelog/index.rst @@ -11,6 +11,9 @@ A list of queries for each suite and language `is available here currentSyntaxCount + } + + // Fall back to string length + return len(pkg.ID) > len(current.ID) +} + +// selectBestPackages builds a map from package paths to their best package variants. +// In the context of a `go test -c` compilation, we see the same package more than +// once, with IDs like "abc.com/pkgname [abc.com/pkgname.test]" to distinguish the version +// that contains and is used by test code. +// We prefer the version with the most complete test coverage, which is typically: +// 1. The exact test package (e.g., "pkg [pkg.test]") over nested test dependencies +// 2. The package with the most Syntax nodes (most files to extract) +// 3. The longest ID string as a tiebreaker +func selectBestPackages(pkgs []*packages.Package) map[string]*packages.Package { + bestPackageIds := make(map[string]*packages.Package) + packages.Visit(pkgs, nil, func(pkg *packages.Package) { + if bestSoFar, present := bestPackageIds[pkg.PkgPath]; present { + if isBetterPackage(pkg, bestSoFar) { + bestPackageIds[pkg.PkgPath] = pkg + } + } else { + bestPackageIds[pkg.PkgPath] = pkg + } + }) + return bestPackageIds +} + // ExtractWithFlags extracts the packages specified by the given patterns and build flags func ExtractWithFlags(buildFlags []string, patterns []string, extractTests bool, sourceRoot string) error { startTime := time.Now() @@ -153,22 +210,8 @@ func ExtractWithFlags(buildFlags []string, patterns []string, extractTests bool, pkgsNotFound := make([]string, 0, len(pkgs)) - // Build a map from package paths to their longest IDs-- - // in the context of a `go test -c` compilation, we will see the same package more than - // once, with IDs like "abc.com/pkgname [abc.com/pkgname.test]" to distinguish the version - // that contains and is used by test code. - // For our purposes it is simplest to just ignore the non-test version, since the test - // version seems to be a superset of it. - longestPackageIds := make(map[string]string) - packages.Visit(pkgs, nil, func(pkg *packages.Package) { - if longestIDSoFar, present := longestPackageIds[pkg.PkgPath]; present { - if len(pkg.ID) > len(longestIDSoFar) { - longestPackageIds[pkg.PkgPath] = pkg.ID - } - } else { - longestPackageIds[pkg.PkgPath] = pkg.ID - } - }) + // Build a map from package paths to their best IDs + bestPackageIds := selectBestPackages(pkgs) // Do a post-order traversal and extract the package scope of each package packages.Visit(pkgs, nil, func(pkg *packages.Package) { @@ -257,15 +300,15 @@ func ExtractWithFlags(buildFlags []string, patterns []string, extractTests bool, // extract AST information for all packages packages.Visit(pkgs, nil, func(pkg *packages.Package) { - // If this is a variant of a package that also occurs with a longer ID, skip it; + // If this is a variant of a package that also occurs with a better ID, skip it; // otherwise we would extract the same file more than once including extracting the // body of methods twice, causing database inconsistencies. // - // We prefer the version with the longest ID because that is (so far as I know) always - // the version that defines more entities -- the only case I'm aware of being a test - // variant of a package, which includes test-only functions in addition to the complete - // contents of the main variant. - if pkg.ID != longestPackageIds[pkg.PkgPath] { + // We prefer the version with the most complete test coverage, prioritizing: + // 1. Exact test packages (e.g., "pkg [pkg.test]") over nested test dependencies + // 2. Packages with more Syntax nodes (more files to extract) + // 3. Longer ID strings as a tiebreaker + if pkg.ID != bestPackageIds[pkg.PkgPath].ID { return } diff --git a/go/extractor/extractor_test.go b/go/extractor/extractor_test.go new file mode 100644 index 000000000000..2b585ec7fa1f --- /dev/null +++ b/go/extractor/extractor_test.go @@ -0,0 +1,343 @@ +package extractor + +import ( + "go/ast" + "testing" + + "golang.org/x/tools/go/packages" +) + +func TestIsExactTestPackage(t *testing.T) { + tests := []struct { + name string + pkgID string + pkgPath string + expected bool + }{ + { + name: "exact test package", + pkgID: "github.com/foo/bar [github.com/foo/bar.test]", + pkgPath: "github.com/foo/bar", + expected: true, + }, + { + name: "nested test package", + pkgID: "github.com/foo/bar [github.com/foo/bar/nested.test]", + pkgPath: "github.com/foo/bar", + expected: false, + }, + { + name: "deeply nested test package", + pkgID: "github.com/go-git/go-git/v6 [github.com/go-git/go-git/v6/plumbing/format/packfile.test]", + pkgPath: "github.com/go-git/go-git/v6", + expected: false, + }, + { + name: "exact test package with version", + pkgID: "github.com/go-git/go-git/v6 [github.com/go-git/go-git/v6.test]", + pkgPath: "github.com/go-git/go-git/v6", + expected: true, + }, + { + name: "non-test package", + pkgID: "github.com/foo/bar", + pkgPath: "github.com/foo/bar", + expected: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + pkg := &packages.Package{ + ID: tt.pkgID, + PkgPath: tt.pkgPath, + } + result := isExactTestPackage(pkg) + if result != tt.expected { + t.Errorf("isExactTestPackage(%q) = %v, want %v", tt.pkgID, result, tt.expected) + } + }) + } +} + +func TestIsBetterPackage(t *testing.T) { + // Helper to create a package with specified properties + makePkg := func(id, path string, syntaxCount int) *packages.Package { + syntax := make([]*ast.File, syntaxCount) + return &packages.Package{ + ID: id, + PkgPath: path, + Syntax: syntax, + } + } + + tests := []struct { + name string + pkg *packages.Package + current *packages.Package + expected bool // true if pkg is better than current + }{ + { + name: "exact test package beats nested test package", + pkg: makePkg( + "github.com/go-git/go-git/v6 [github.com/go-git/go-git/v6.test]", + "github.com/go-git/go-git/v6", + 39, // 19 production + 20 test files + ), + current: makePkg( + "github.com/go-git/go-git/v6 [github.com/go-git/go-git/v6/plumbing/format/packfile.test]", + "github.com/go-git/go-git/v6", + 19, // production files only + ), + expected: true, + }, + { + name: "nested test package loses to exact test package", + pkg: makePkg( + "github.com/go-git/go-git/v6 [github.com/go-git/go-git/v6/plumbing/format/packfile.test]", + "github.com/go-git/go-git/v6", + 19, + ), + current: makePkg( + "github.com/go-git/go-git/v6 [github.com/go-git/go-git/v6.test]", + "github.com/go-git/go-git/v6", + 39, + ), + expected: false, + }, + { + name: "more syntax nodes wins when both are exact tests", + pkg: makePkg( + "github.com/foo/bar [github.com/foo/bar.test]", + "github.com/foo/bar", + 50, + ), + current: makePkg( + "github.com/foo/bar [github.com/foo/bar.test]", + "github.com/foo/bar", + 30, + ), + expected: true, + }, + { + name: "fewer syntax nodes loses when both are exact tests", + pkg: makePkg( + "github.com/foo/bar [github.com/foo/bar.test]", + "github.com/foo/bar", + 30, + ), + current: makePkg( + "github.com/foo/bar [github.com/foo/bar.test]", + "github.com/foo/bar", + 50, + ), + expected: false, + }, + { + name: "more syntax nodes wins when both are nested tests", + pkg: makePkg( + "github.com/foo/bar [github.com/foo/bar/pkg1.test]", + "github.com/foo/bar", + 25, + ), + current: makePkg( + "github.com/foo/bar [github.com/foo/bar/pkg2.test]", + "github.com/foo/bar", + 20, + ), + expected: true, + }, + { + name: "longer ID wins when same syntax count", + pkg: makePkg( + "github.com/foo/bar [github.com/foo/bar/verylongpackagename.test]", + "github.com/foo/bar", + 20, + ), + current: makePkg( + "github.com/foo/bar [github.com/foo/bar/short.test]", + "github.com/foo/bar", + 20, + ), + expected: true, + }, + { + name: "test package beats non-test with same syntax count", + pkg: makePkg( + "github.com/foo/bar [github.com/foo/bar.test]", + "github.com/foo/bar", + 20, + ), + current: makePkg( + "github.com/foo/bar", + "github.com/foo/bar", + 20, + ), + expected: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result := isBetterPackage(tt.pkg, tt.current) + if result != tt.expected { + t.Errorf("isBetterPackage() = %v, want %v\n pkg: %q (%d syntax nodes)\n current: %q (%d syntax nodes)", + result, tt.expected, + tt.pkg.ID, len(tt.pkg.Syntax), + tt.current.ID, len(tt.current.Syntax)) + } + }) + } +} + +// TestSelectBestPackages tests the selectBestPackages function +func TestSelectBestPackages(t *testing.T) { + // Helper to create a package with specified properties + makePkg := func(id, path string, syntaxCount int) *packages.Package { + syntax := make([]*ast.File, syntaxCount) + return &packages.Package{ + ID: id, + PkgPath: path, + Syntax: syntax, + } + } + + tests := []struct { + name string + pkgs []*packages.Package + expectedPkgIDs map[string]string // pkgPath -> expected selected ID + }{ + { + name: "single package", + pkgs: []*packages.Package{ + makePkg("example.com/pkg", "example.com/pkg", 10), + }, + expectedPkgIDs: map[string]string{ + "example.com/pkg": "example.com/pkg", + }, + }, + { + name: "test package preferred over production", + pkgs: []*packages.Package{ + makePkg("example.com/pkg", "example.com/pkg", 10), + makePkg("example.com/pkg [example.com/pkg.test]", "example.com/pkg", 15), + }, + expectedPkgIDs: map[string]string{ + "example.com/pkg": "example.com/pkg [example.com/pkg.test]", + }, + }, + { + name: "exact test preferred over nested test", + pkgs: []*packages.Package{ + makePkg("example.com/pkg [example.com/pkg.test]", "example.com/pkg", 20), + makePkg("example.com/pkg [example.com/pkg/nested.test]", "example.com/pkg", 15), + }, + expectedPkgIDs: map[string]string{ + "example.com/pkg": "example.com/pkg [example.com/pkg.test]", + }, + }, + { + name: "multiple packages with different paths", + pkgs: []*packages.Package{ + makePkg("example.com/pkg1", "example.com/pkg1", 10), + makePkg("example.com/pkg1 [example.com/pkg1.test]", "example.com/pkg1", 15), + makePkg("example.com/pkg2", "example.com/pkg2", 8), + makePkg("example.com/pkg2 [example.com/pkg2.test]", "example.com/pkg2", 12), + }, + expectedPkgIDs: map[string]string{ + "example.com/pkg1": "example.com/pkg1 [example.com/pkg1.test]", + "example.com/pkg2": "example.com/pkg2 [example.com/pkg2.test]", + }, + }, + { + name: "more syntax nodes wins among nested tests", + pkgs: []*packages.Package{ + makePkg("example.com/pkg [example.com/pkg/a.test]", "example.com/pkg", 10), + makePkg("example.com/pkg [example.com/pkg/b.test]", "example.com/pkg", 20), + }, + expectedPkgIDs: map[string]string{ + "example.com/pkg": "example.com/pkg [example.com/pkg/b.test]", + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result := selectBestPackages(tt.pkgs) + + // Check that all expected packages are present + for pkgPath, expectedID := range tt.expectedPkgIDs { + selected, found := result[pkgPath] + if !found { + t.Errorf("Expected package path %q not found in result", pkgPath) + continue + } + if selected.ID != expectedID { + t.Errorf("For package path %q: got ID %q, want %q", + pkgPath, selected.ID, expectedID) + } + } + + // Check that no unexpected packages are present + if len(result) != len(tt.expectedPkgIDs) { + t.Errorf("Expected %d packages in result, got %d", + len(tt.expectedPkgIDs), len(result)) + } + }) + } +} + +// TestPackageSelectionRealWorld simulates the real-world go-git scenario +func TestPackageSelectionRealWorld(t *testing.T) { + // Simulate the actual packages.Load result for go-git repository + // when EXTRACT_TESTS=true + pkgs := []*packages.Package{ + // Production package only + { + ID: "github.com/go-git/go-git/v6", + PkgPath: "github.com/go-git/go-git/v6", + Syntax: make([]*ast.File, 19), // 19 production files + }, + // Root test package - this is what we want! + { + ID: "github.com/go-git/go-git/v6 [github.com/go-git/go-git/v6.test]", + PkgPath: "github.com/go-git/go-git/v6", + Syntax: make([]*ast.File, 39), // 19 production + 20 test files + }, + // Nested test dependency 1 + { + ID: "github.com/go-git/go-git/v6 [github.com/go-git/go-git/v6/plumbing/format/packfile.test]", + PkgPath: "github.com/go-git/go-git/v6", + Syntax: make([]*ast.File, 19), // production files only (dependency) + }, + // Nested test dependency 2 + { + ID: "github.com/go-git/go-git/v6 [github.com/go-git/go-git/v6/plumbing/object.test]", + PkgPath: "github.com/go-git/go-git/v6", + Syntax: make([]*ast.File, 19), // production files only (dependency) + }, + } + + // Use the actual selection logic from the extractor + bestPackageIds := selectBestPackages(pkgs) + + // Verify the correct package was selected + selected := bestPackageIds["github.com/go-git/go-git/v6"] + expectedID := "github.com/go-git/go-git/v6 [github.com/go-git/go-git/v6.test]" + expectedSyntaxCount := 39 + + if selected.ID != expectedID { + t.Errorf("Wrong package selected!\n got: %q (%d syntax nodes)\n want: %q (%d syntax nodes)", + selected.ID, len(selected.Syntax), + expectedID, expectedSyntaxCount) + } + + if len(selected.Syntax) != expectedSyntaxCount { + t.Errorf("Wrong syntax count: got %d, want %d", len(selected.Syntax), expectedSyntaxCount) + } + + // Verify it's recognized as an exact test package + if !isExactTestPackage(selected) { + t.Errorf("Selected package %q should be recognized as exact test package", selected.ID) + } +} diff --git a/go/extractor/go.mod b/go/extractor/go.mod index ae43e8a51bd3..25c8e3d0e5d2 100644 --- a/go/extractor/go.mod +++ b/go/extractor/go.mod @@ -9,8 +9,8 @@ toolchain go1.26.0 // when adding or removing dependencies, run // bazel mod tidy require ( - golang.org/x/mod v0.34.0 - golang.org/x/tools v0.43.0 + golang.org/x/mod v0.36.0 + golang.org/x/tools v0.45.0 ) require github.com/stretchr/testify v1.11.1 diff --git a/go/extractor/go.sum b/go/extractor/go.sum index 8bb3f3dc9fc8..660ae874a65c 100644 --- a/go/extractor/go.sum +++ b/go/extractor/go.sum @@ -6,12 +6,12 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= -golang.org/x/mod v0.34.0 h1:xIHgNUUnW6sYkcM5Jleh05DvLOtwc6RitGHbDk4akRI= -golang.org/x/mod v0.34.0/go.mod h1:ykgH52iCZe79kzLLMhyCUzhMci+nQj+0XkbXpNYtVjY= +golang.org/x/mod v0.36.0 h1:JJjpVx6myfUsUdAzZuOSTTmRE0PfZeNWzzvKrP7amb4= +golang.org/x/mod v0.36.0/go.mod h1:moc6ELqsWcOw5Ef3xVprK5ul/MvtVvkIXLziUOICjUQ= golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= -golang.org/x/tools v0.43.0 h1:12BdW9CeB3Z+J/I/wj34VMl8X+fEXBxVR90JeMX5E7s= -golang.org/x/tools v0.43.0/go.mod h1:uHkMso649BX2cZK6+RpuIPXS3ho2hZo4FVwfoy1vIk0= +golang.org/x/tools v0.45.0 h1:18qN3FAooORvApf5XjCXgsuayZOEtXf6JK18I3+ONa8= +golang.org/x/tools v0.45.0/go.mod h1:LuUGqqaXcXMEFEruIVJVm5mgDD8vww/z/SR1gQ4uE/0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/go/extractor/toolchain/toolchain.go b/go/extractor/toolchain/toolchain.go index fb9d5512cd83..c5cd2dd243e7 100644 --- a/go/extractor/toolchain/toolchain.go +++ b/go/extractor/toolchain/toolchain.go @@ -130,7 +130,13 @@ func parseGoVersion(data string) string { for sc.Scan() { lastLine = sc.Text() } - return strings.Fields(lastLine)[2] + + var goVersion = strings.Fields(lastLine)[2] + + // Drop custom build suffixes. + goVersion, _, _ = strings.Cut(goVersion, "-") + + return goVersion } // Returns a value indicating whether the system Go toolchain supports workspaces. diff --git a/go/extractor/toolchain/toolchain_test.go b/go/extractor/toolchain/toolchain_test.go index 57a7294daae3..8a6b38318cb9 100644 --- a/go/extractor/toolchain/toolchain_test.go +++ b/go/extractor/toolchain/toolchain_test.go @@ -8,7 +8,9 @@ import ( func TestParseGoVersion(t *testing.T) { tests := map[string]string{ - "go version go1.18.9 linux/amd64": "go1.18.9", + "go version go1.18.9 linux/amd64": "go1.18.9", + "go version go1.26.3-X:nodwarf5 linux/amd64": "go1.26.3", + "go version go1.26.3rc1 linux/amd64": "go1.26.3rc1", "warning: GOPATH set to GOROOT (/usr/local/go) has no effect\ngo version go1.18.9 linux/amd64": "go1.18.9", } for input, expected := range tests { diff --git a/go/ql/consistency-queries/CHANGELOG.md b/go/ql/consistency-queries/CHANGELOG.md index 34ae2fd22778..512a5732ccd9 100644 --- a/go/ql/consistency-queries/CHANGELOG.md +++ b/go/ql/consistency-queries/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.0.50 + +No user-facing changes. + +## 1.0.49 + +No user-facing changes. + +## 1.0.48 + +No user-facing changes. + ## 1.0.47 No user-facing changes. diff --git a/go/ql/consistency-queries/change-notes/released/1.0.48.md b/go/ql/consistency-queries/change-notes/released/1.0.48.md new file mode 100644 index 000000000000..c484c6e8d6e2 --- /dev/null +++ b/go/ql/consistency-queries/change-notes/released/1.0.48.md @@ -0,0 +1,3 @@ +## 1.0.48 + +No user-facing changes. diff --git a/go/ql/consistency-queries/change-notes/released/1.0.49.md b/go/ql/consistency-queries/change-notes/released/1.0.49.md new file mode 100644 index 000000000000..df67fb8cc768 --- /dev/null +++ b/go/ql/consistency-queries/change-notes/released/1.0.49.md @@ -0,0 +1,3 @@ +## 1.0.49 + +No user-facing changes. diff --git a/go/ql/consistency-queries/change-notes/released/1.0.50.md b/go/ql/consistency-queries/change-notes/released/1.0.50.md new file mode 100644 index 000000000000..c1e5becd9fc7 --- /dev/null +++ b/go/ql/consistency-queries/change-notes/released/1.0.50.md @@ -0,0 +1,3 @@ +## 1.0.50 + +No user-facing changes. diff --git a/go/ql/consistency-queries/codeql-pack.release.yml b/go/ql/consistency-queries/codeql-pack.release.yml index dcec0f6405ab..856137cc5db6 100644 --- a/go/ql/consistency-queries/codeql-pack.release.yml +++ b/go/ql/consistency-queries/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.0.47 +lastReleaseVersion: 1.0.50 diff --git a/go/ql/consistency-queries/qlpack.yml b/go/ql/consistency-queries/qlpack.yml index 53b3d29e717b..a3f2fd4897a8 100644 --- a/go/ql/consistency-queries/qlpack.yml +++ b/go/ql/consistency-queries/qlpack.yml @@ -1,5 +1,5 @@ name: codeql-go-consistency-queries -version: 1.0.47 +version: 1.0.50 groups: - go - queries diff --git a/go/ql/integration-tests/root-internal-tests/src/go.mod b/go/ql/integration-tests/root-internal-tests/src/go.mod new file mode 100644 index 000000000000..12e11856e552 --- /dev/null +++ b/go/ql/integration-tests/root-internal-tests/src/go.mod @@ -0,0 +1,3 @@ +module example.com/testpkg + +go 1.26 diff --git a/go/ql/integration-tests/root-internal-tests/src/main.go b/go/ql/integration-tests/root-internal-tests/src/main.go new file mode 100644 index 000000000000..fff083caa0ac --- /dev/null +++ b/go/ql/integration-tests/root-internal-tests/src/main.go @@ -0,0 +1,13 @@ +package main + +func PublicFunc() int { + return 42 +} + +func privateFunc() int { + return 24 +} + +func main() { + PublicFunc() +} diff --git a/go/ql/integration-tests/root-internal-tests/src/main_test.go b/go/ql/integration-tests/root-internal-tests/src/main_test.go new file mode 100644 index 000000000000..7c38d61d4c87 --- /dev/null +++ b/go/ql/integration-tests/root-internal-tests/src/main_test.go @@ -0,0 +1,16 @@ +package main + +import "testing" + +// Root internal test - tests private functions +func TestPrivateFunc(t *testing.T) { + if privateFunc() != 24 { + t.Error("privateFunc failed") + } +} + +func TestPublicFunc(t *testing.T) { + if PublicFunc() != 42 { + t.Error("PublicFunc failed") + } +} diff --git a/go/ql/integration-tests/root-internal-tests/src/nested/nested.go b/go/ql/integration-tests/root-internal-tests/src/nested/nested.go new file mode 100644 index 000000000000..427af1e44b63 --- /dev/null +++ b/go/ql/integration-tests/root-internal-tests/src/nested/nested.go @@ -0,0 +1,5 @@ +package nested + +func NestedFunc() string { + return "nested" +} diff --git a/go/ql/integration-tests/root-internal-tests/src/nested/nested_test.go b/go/ql/integration-tests/root-internal-tests/src/nested/nested_test.go new file mode 100644 index 000000000000..a7e063c61859 --- /dev/null +++ b/go/ql/integration-tests/root-internal-tests/src/nested/nested_test.go @@ -0,0 +1,9 @@ +package nested + +import "testing" + +func TestNestedFunc(t *testing.T) { + if NestedFunc() != "nested" { + t.Error("NestedFunc failed") + } +} diff --git a/go/ql/integration-tests/root-internal-tests/test.expected b/go/ql/integration-tests/root-internal-tests/test.expected new file mode 100644 index 000000000000..f68c14d1338b --- /dev/null +++ b/go/ql/integration-tests/root-internal-tests/test.expected @@ -0,0 +1,7 @@ +#select +| main_test.go | +| nested/nested_test.go | +testFunctions +| TestNestedFunc | nested/nested_test.go | +| TestPrivateFunc | main_test.go | +| TestPublicFunc | main_test.go | diff --git a/go/ql/integration-tests/root-internal-tests/test.py b/go/ql/integration-tests/root-internal-tests/test.py new file mode 100644 index 000000000000..a8f376e33975 --- /dev/null +++ b/go/ql/integration-tests/root-internal-tests/test.py @@ -0,0 +1,5 @@ +import os + +def test(codeql, go): + # Test that root internal test files are extracted when nested packages have tests + codeql.database.create(source_root="src", extractor_option = ["extract_tests=true"]) diff --git a/go/ql/integration-tests/root-internal-tests/test.ql b/go/ql/integration-tests/root-internal-tests/test.ql new file mode 100644 index 000000000000..234fd1a04203 --- /dev/null +++ b/go/ql/integration-tests/root-internal-tests/test.ql @@ -0,0 +1,15 @@ +import go + +// Verify that root internal test files are extracted +// when nested packages also have tests +from File f +where f.getBaseName().matches("%_test.go") +select f.getRelativePath() + +query predicate testFunctions(string name, string file) { + exists(FuncDecl fn | + fn.getName().matches("Test%") and + name = fn.getName() and + file = fn.getFile().getRelativePath() + ) +} diff --git a/go/ql/lib/CHANGELOG.md b/go/ql/lib/CHANGELOG.md index 441d15a0d0e8..54afc3a977b8 100644 --- a/go/ql/lib/CHANGELOG.md +++ b/go/ql/lib/CHANGELOG.md @@ -1,3 +1,17 @@ +## 7.1.1 + +No user-facing changes. + +## 7.1.0 + +### New Features + +* Data flow barriers and barrier guards can now be added using data extensions. For more information see [Customizing library models for Go](https://codeql.github.com/docs/codeql-language-guides/customizing-library-models-for-go/). + +## 7.0.6 + +No user-facing changes. + ## 7.0.5 No user-facing changes. diff --git a/go/ql/lib/change-notes/released/7.0.6.md b/go/ql/lib/change-notes/released/7.0.6.md new file mode 100644 index 000000000000..ca9a73aa64c1 --- /dev/null +++ b/go/ql/lib/change-notes/released/7.0.6.md @@ -0,0 +1,3 @@ +## 7.0.6 + +No user-facing changes. diff --git a/go/ql/lib/change-notes/released/7.1.0.md b/go/ql/lib/change-notes/released/7.1.0.md new file mode 100644 index 000000000000..b1f6efbf0010 --- /dev/null +++ b/go/ql/lib/change-notes/released/7.1.0.md @@ -0,0 +1,5 @@ +## 7.1.0 + +### New Features + +* Data flow barriers and barrier guards can now be added using data extensions. For more information see [Customizing library models for Go](https://codeql.github.com/docs/codeql-language-guides/customizing-library-models-for-go/). diff --git a/go/ql/lib/change-notes/released/7.1.1.md b/go/ql/lib/change-notes/released/7.1.1.md new file mode 100644 index 000000000000..849fd4da3283 --- /dev/null +++ b/go/ql/lib/change-notes/released/7.1.1.md @@ -0,0 +1,3 @@ +## 7.1.1 + +No user-facing changes. diff --git a/go/ql/lib/codeql-pack.release.yml b/go/ql/lib/codeql-pack.release.yml index 2cff21d59fec..8e970df6cae3 100644 --- a/go/ql/lib/codeql-pack.release.yml +++ b/go/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 7.0.5 +lastReleaseVersion: 7.1.1 diff --git a/go/ql/lib/qlpack.yml b/go/ql/lib/qlpack.yml index 5c371bb7ae48..95fc95a0fc0a 100644 --- a/go/ql/lib/qlpack.yml +++ b/go/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-all -version: 7.0.5 +version: 7.1.1 groups: go dbscheme: go.dbscheme extractor: go diff --git a/go/ql/lib/semmle/go/Concepts.qll b/go/ql/lib/semmle/go/Concepts.qll index ffa48ea9654d..c33fb0ae6bb0 100644 --- a/go/ql/lib/semmle/go/Concepts.qll +++ b/go/ql/lib/semmle/go/Concepts.qll @@ -574,19 +574,17 @@ module Cryptography { * is one) have been initialized separately. */ abstract class EncryptionOperation extends CryptographicOperation::Range { - DataFlow::Node encryptionFlowTarget; - DataFlow::Node inputNode; + /** Gets the target node for the encryption flow. */ + abstract DataFlow::Node getEncryptionFlowTarget(); override DataFlow::Node getInitialization() { - EncryptionFlow::flow(result, encryptionFlowTarget) + EncryptionFlow::flow(result, this.getEncryptionFlowTarget()) } override EncryptionAlgorithm getAlgorithm() { result = this.getInitialization().(EncryptionAlgorithmInit).getAlgorithm() } - override DataFlow::Node getAnInput() { result = inputNode } - override BlockMode getBlockMode() { result = this.getInitialization().(BlockModeInit).getMode() } @@ -601,8 +599,12 @@ module Cryptography { int inputArg; EncryptionMethodCall() { - encryptionFlowTarget = super.getReceiver() and - inputNode = super.getArgument(inputArg) + exists(super.getReceiver()) and + exists(super.getArgument(inputArg)) } + + override DataFlow::Node getEncryptionFlowTarget() { result = super.getReceiver() } + + override DataFlow::Node getAnInput() { result = super.getArgument(inputArg) } } } diff --git a/go/ql/lib/semmle/go/Decls.qll b/go/ql/lib/semmle/go/Decls.qll index 7588ab913bed..f42058cd3e88 100644 --- a/go/ql/lib/semmle/go/Decls.qll +++ b/go/ql/lib/semmle/go/Decls.qll @@ -1,7 +1,7 @@ /** * Provides classes for working with declarations. */ -overlay[local] +overlay[local?] module; import go @@ -137,6 +137,7 @@ class FuncDef extends @funcdef, StmtParent, ExprParent { /** * Gets a call to this function. */ + overlay[global] DataFlow::CallNode getACall() { result.getACallee() = this } /** Holds if this function is variadic. */ diff --git a/go/ql/lib/semmle/go/Scopes.qll b/go/ql/lib/semmle/go/Scopes.qll index 4e9a13c8ea1f..9f18290fb011 100644 --- a/go/ql/lib/semmle/go/Scopes.qll +++ b/go/ql/lib/semmle/go/Scopes.qll @@ -1,7 +1,7 @@ /** * Provides classes for working with scopes and declared objects. */ -overlay[local] +overlay[local?] module; import go @@ -418,6 +418,7 @@ class Function extends ValueEntity, @functionobject { * This includes calls that target this function indirectly, by calling an * interface method that this function implements. */ + overlay[global] pragma[nomagic] DataFlow::CallNode getACall() { this = result.getACalleeIncludingExternals().asFunction() } diff --git a/go/ql/lib/semmle/go/dataflow/ExternalFlow.qll b/go/ql/lib/semmle/go/dataflow/ExternalFlow.qll index e1170aeda244..f0dc0cf0ca2b 100644 --- a/go/ql/lib/semmle/go/dataflow/ExternalFlow.qll +++ b/go/ql/lib/semmle/go/dataflow/ExternalFlow.qll @@ -4,13 +4,17 @@ * Provides classes and predicates for dealing with flow models specified * in data extensions and CSV format. * - * The CSV specification has the following columns: + * The extensible relations have the following columns: * - Sources: * `package; type; subtypes; name; signature; ext; output; kind; provenance` * - Sinks: * `package; type; subtypes; name; signature; ext; input; kind; provenance` * - Summaries: * `package; type; subtypes; name; signature; ext; input; output; kind; provenance` + * - Barriers: + * `package; type; subtypes; name; signature; ext; output; kind; provenance` + * - BarrierGuards: + * `package; type; subtypes; name; signature; ext; input; acceptingValue; kind; provenance` * - Neutrals: * `package; type; name; signature; kind; provenance` * A neutral is used to indicate that a callable is neutral with respect to flow (no summary), source (is not a source) or sink (is not a sink). @@ -78,11 +82,23 @@ * - "MapValue": Selects a value in a map. * - "Dereference": Selects the value referenced by a pointer. * - * 8. The `kind` column is a tag that can be referenced from QL to determine to + * 8. The `acceptingValue` column of barrier guard models specifies the condition + * under which the guard blocks flow. It can be one of "true" or "false". In + * the future "no-exception", "not-zero", "null", "not-null" may be supported. + * 9. The `kind` column is a tag that can be referenced from QL to determine to * which classes the interpreted elements should be added. For example, for * sources "remote" indicates a default remote flow source, and for summaries * "taint" indicates a default additional taint step and "value" indicates a * globally applicable value-preserving step. + * 10. The `provenance` column is a tag to indicate the origin and verification of a model. + * The format is {origin}-{verification} or just "manual" where the origin describes + * the origin of the model and verification describes how the model has been verified. + * Some examples are: + * - "df-generated": The model has been generated by the model generator tool. + * - "df-manual": The model has been generated by the model generator and verified by a human. + * - "manual": The model has been written by hand. + * This information is used in a heuristic for dataflow analysis to determine, if a + * model or source code should be used for determining flow. */ overlay[local?] module; @@ -250,11 +266,11 @@ module ModelValidation { result = "Unrecognized provenance description \"" + provenance + "\" in " + pred + " model." ) or - exists(string acceptingvalue | - barrierGuardModel(_, _, _, _, _, _, _, acceptingvalue, _, _, _) and - invalidAcceptingValue(acceptingvalue) and + exists(string acceptingValue | + barrierGuardModel(_, _, _, _, _, _, _, acceptingValue, _, _, _) and + invalidAcceptingValue(acceptingValue) and result = - "Unrecognized accepting value description \"" + acceptingvalue + + "Unrecognized accepting value description \"" + acceptingValue + "\" in barrier guard model." ) } @@ -462,13 +478,13 @@ private module Cached { private predicate barrierGuardChecks(DataFlow::Node g, Expr e, boolean gv, TKindModelPair kmp) { exists( - SourceSinkInterpretationInput::InterpretNode n, Public::AcceptingValue acceptingvalue, + SourceSinkInterpretationInput::InterpretNode n, Public::AcceptingValue acceptingValue, string kind, string model | - isBarrierGuardNode(n, acceptingvalue, kind, model) and + isBarrierGuardNode(n, acceptingValue, kind, model) and n.asNode().asExpr() = e and kmp = TMkPair(kind, model) and - gv = convertAcceptingValue(acceptingvalue) + gv = convertAcceptingValue(acceptingValue) | g.asExpr().(CallExpr).getAnArgument() = e // TODO: qualifier? ) diff --git a/go/ql/lib/semmle/go/dataflow/GlobalValueNumbering.qll b/go/ql/lib/semmle/go/dataflow/GlobalValueNumbering.qll index 88a659f6f829..3547e70b858a 100644 --- a/go/ql/lib/semmle/go/dataflow/GlobalValueNumbering.qll +++ b/go/ql/lib/semmle/go/dataflow/GlobalValueNumbering.qll @@ -127,16 +127,19 @@ private predicate sideEffectCfg(ControlFlow::Node src, ControlFlow::Node dst) { /** * Holds if `dominator` is the immediate dominator of `node` in - * the side-effect CFG. + * the side-effect CFG belonging to `entry`. */ -private predicate iDomEffect(ControlFlow::Node dominator, ControlFlow::Node node) = - idominance(entryNode/1, sideEffectCfg/2)(_, dominator, node) +private predicate iDomEffect( + ControlFlow::Node entry, ControlFlow::Node dominator, ControlFlow::Node node +) = idominance(entryNode/1, sideEffectCfg/2)(entry, dominator, node) /** * Gets the most recent side effect. To be more precise, `result` is a * dominator of `node` and no side-effects can occur between `result` and * `node`. * + * `entry` is the entry node for the function containing `node` and `result`. + * * `sideEffectCFG` has an edge from the function entry to every node with a * side-effect. This means that every node with a side-effect has the * function entry as its immediate dominator. So if node `x` dominates node @@ -180,16 +183,26 @@ private predicate iDomEffect(ControlFlow::Node dominator, ControlFlow::Node node * * The immediate dominator path to line 015 is 000 - 009 - 012 - 015. * Therefore, the most recent side effect for line 015 is line 009. + * (Note that line 009 is not a side-effect itself. Instead, it is the + * point where the control flow paths from the side-effects at 004 and 007 + * merge. Because its immediate dominator is the entry node 000, it serves + * as the safe root for expressions evaluated after those side-effects.) */ -cached -private ControlFlow::Node mostRecentSideEffect(ControlFlow::Node node) { - exists(ControlFlow::Node entry | - entryNode(entry) and - iDomEffect(entry, result) and - iDomEffect*(result, node) +private ControlFlow::Node mostRecentSideEffect(ControlFlow::Node entry, ControlFlow::Node node) { + iDomEffect(entry, entry, result) and + result = node + or + exists(ControlFlow::Node mid | + result = mostRecentSideEffect(entry, mid) and + iDomEffect(entry, mid, node) ) } +cached +private ControlFlow::Node mostRecentSideEffectUnique(ControlFlow::Node node) { + result = unique( | | mostRecentSideEffect(_, node)) +} + /** Used to represent the "global value number" of an expression. */ cached private newtype GvnBase = @@ -369,10 +382,12 @@ private predicate mkMethodAccess(DataFlow::Node access, GVN qualifier, Method m) ) } -private predicate analyzableFieldRead(Read fread, DataFlow::Node base, Field f) { +private predicate analyzableFieldRead( + Read fread, DataFlow::Node base, Field f, ControlFlow::Node dominator +) { exists(IR::ReadInstruction r | r = fread.asInstruction() | r.readsField(base.asInstruction(), f) and - strictcount(mostRecentSideEffect(r)) = 1 and + dominator = mostRecentSideEffectUnique(r) and not r.isConst() ) } @@ -381,9 +396,8 @@ private predicate mkFieldRead( DataFlow::Node fread, GVN qualifier, Field v, ControlFlow::Node dominator ) { exists(DataFlow::Node base | - analyzableFieldRead(fread, base, v) and - qualifier = globalValueNumber(base) and - dominator = mostRecentSideEffect(fread.asInstruction()) + analyzableFieldRead(fread, base, v, dominator) and + qualifier = globalValueNumber(base) ) } @@ -421,18 +435,17 @@ private predicate incompleteSsa(ValueEntity v) { /** * Holds if `access` is an access to a variable `target` for which SSA information is incomplete. */ -private predicate analyzableOtherVariable(DataFlow::Node access, ValueEntity target) { +private predicate analyzableOtherVariable( + DataFlow::Node access, ValueEntity target, ControlFlow::Node dominator +) { access.asInstruction().reads(target) and incompleteSsa(target) and - strictcount(mostRecentSideEffect(access.asInstruction())) = 1 and + dominator = mostRecentSideEffectUnique(access.asInstruction()) and not access.isConst() and not target instanceof Function } -private predicate mkOtherVariable(DataFlow::Node access, ValueEntity x, ControlFlow::Node dominator) { - analyzableOtherVariable(access, x) and - dominator = mostRecentSideEffect(access.asInstruction()) -} +private predicate mkOtherVariable = analyzableOtherVariable/3; private predicate analyzableBinaryOp( DataFlow::BinaryOperationNode op, string opname, DataFlow::Node lhs, DataFlow::Node rhs @@ -463,29 +476,29 @@ private predicate mkUnaryOp(DataFlow::UnaryOperationNode op, GVN child, string o opname = op.getOperator() } -private predicate analyzableIndexExpr(DataFlow::ElementReadNode ae) { - strictcount(mostRecentSideEffect(ae.asInstruction())) = 1 and +private predicate analyzableIndexExpr(DataFlow::ElementReadNode ae, ControlFlow::Node dominator) { + dominator = mostRecentSideEffectUnique(ae.asInstruction()) and not ae.isConst() } private predicate mkIndex( DataFlow::ElementReadNode ae, GVN base, GVN offset, ControlFlow::Node dominator ) { - analyzableIndexExpr(ae) and + analyzableIndexExpr(ae, dominator) and base = globalValueNumber(ae.getBase()) and - offset = globalValueNumber(ae.getIndex()) and - dominator = mostRecentSideEffect(ae.asInstruction()) + offset = globalValueNumber(ae.getIndex()) } -private predicate analyzablePointerDereferenceExpr(DataFlow::PointerDereferenceNode deref) { - strictcount(mostRecentSideEffect(deref.asInstruction())) = 1 and +private predicate analyzablePointerDereferenceExpr( + DataFlow::PointerDereferenceNode deref, ControlFlow::Node dominator +) { + dominator = mostRecentSideEffectUnique(deref.asInstruction()) and not deref.isConst() } private predicate mkDeref(DataFlow::PointerDereferenceNode deref, GVN p, ControlFlow::Node dominator) { - analyzablePointerDereferenceExpr(deref) and - p = globalValueNumber(deref.getOperand()) and - dominator = mostRecentSideEffect(deref.asInstruction()) + analyzablePointerDereferenceExpr(deref, dominator) and + p = globalValueNumber(deref.getOperand()) } private predicate ssaInit(SsaExplicitDefinition ssa, DataFlow::Node rhs) { @@ -587,12 +600,12 @@ private predicate analyzableExpr(DataFlow::Node e) { analyzableConst(e) or any(DataFlow::SsaNode ssa).getAUse() = e or e instanceof DataFlow::SsaNode or - analyzableOtherVariable(e, _) or + analyzableOtherVariable(e, _, _) or analyzableMethodAccess(e, _, _) or - analyzableFieldRead(e, _, _) or + analyzableFieldRead(e, _, _, _) or analyzableCall(e, _) or analyzableBinaryOp(e, _, _, _) or analyzableUnaryOp(e) or - analyzableIndexExpr(e) or - analyzablePointerDereferenceExpr(e) + analyzableIndexExpr(e, _) or + analyzablePointerDereferenceExpr(e, _) } diff --git a/go/ql/lib/semmle/go/dataflow/internal/DataFlowImplConsistency.qll b/go/ql/lib/semmle/go/dataflow/internal/DataFlowImplConsistency.qll index cf4794a9715c..b4cd0a01bfcf 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/DataFlowImplConsistency.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/DataFlowImplConsistency.qll @@ -19,10 +19,6 @@ private module Input implements InputSig { predicate uniqueNodeLocationExclude(DataFlow::Node n) { missingLocationExclude(n) } - predicate localFlowIsLocalExclude(DataFlow::Node n1, DataFlow::Node n2) { - n1 instanceof DataFlow::FunctionNode and simpleLocalFlowStep(n1, n2, _) - } - predicate argHasPostUpdateExclude(DataFlow::ArgumentNode n) { not DataFlow::insnHasPostUpdateNode(n.asInstruction()) } diff --git a/go/ql/lib/semmle/go/dataflow/internal/DataFlowNodes.qll b/go/ql/lib/semmle/go/dataflow/internal/DataFlowNodes.qll index 8fca4bec8c63..603da6364df7 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/DataFlowNodes.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/DataFlowNodes.qll @@ -1,4 +1,4 @@ -overlay[local] +overlay[local?] module; private import go @@ -488,6 +488,7 @@ module Public { * For virtual calls, we look up possible targets in all types that implement the receiver * interface type. */ + overlay[global] Callable getACalleeIncludingExternals() { result = this.getACalleeWithoutVirtualDispatch() or @@ -504,6 +505,7 @@ module Public { * As `getACalleeIncludingExternals`, except excluding external functions (those for which * we lack a definition, such as standard library functions). */ + overlay[global] pragma[nomagic] FuncDef getACallee() { result = this.getACalleeIncludingExternals().getFuncDef() } diff --git a/go/ql/lib/semmle/go/dataflow/internal/DataFlowPrivate.qll b/go/ql/lib/semmle/go/dataflow/internal/DataFlowPrivate.qll index 33149bf00575..2c5c64ace7d5 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/DataFlowPrivate.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/DataFlowPrivate.qll @@ -95,10 +95,6 @@ predicate basicLocalFlowStep(Node nodeFrom, Node nodeTo) { nodeTo = instructionNode(succ) and nodeTo != nodeFrom ) - or - // GlobalFunctionNode -> use - nodeFrom = - any(GlobalFunctionNode fn | fn.getFunction() = nodeTo.asExpr().(FunctionName).getTarget()) } pragma[noinline] diff --git a/go/ql/lib/semmle/go/dataflow/internal/ExternalFlowExtensions.qll b/go/ql/lib/semmle/go/dataflow/internal/ExternalFlowExtensions.qll index 5d43cf674c1c..ab2a241e14a6 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/ExternalFlowExtensions.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/ExternalFlowExtensions.qll @@ -35,7 +35,7 @@ extensible predicate barrierModel( */ extensible predicate barrierGuardModel( string package, string type, boolean subtypes, string name, string signature, string ext, - string input, string acceptingvalue, string kind, string provenance, QlBuiltins::ExtensionId madId + string input, string acceptingValue, string kind, string provenance, QlBuiltins::ExtensionId madId ); /** diff --git a/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll b/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll index 240665bd492d..ff727286c3b4 100644 --- a/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll +++ b/go/ql/lib/semmle/go/dataflow/internal/FlowSummaryImpl.qll @@ -174,13 +174,13 @@ module SourceSinkInterpretationInput implements } predicate barrierGuardElement( - Element e, string input, Public::AcceptingValue acceptingvalue, string kind, + Element e, string input, Public::AcceptingValue acceptingValue, string kind, Public::Provenance provenance, string model ) { exists( string package, string type, boolean subtypes, string name, string signature, string ext | - barrierGuardModel(package, type, subtypes, name, signature, ext, input, acceptingvalue, kind, + barrierGuardModel(package, type, subtypes, name, signature, ext, input, acceptingValue, kind, provenance, model) and e = interpretElement(package, type, subtypes, name, signature, ext) ) diff --git a/go/ql/lib/semmle/go/frameworks/CryptoLibraries.qll b/go/ql/lib/semmle/go/frameworks/CryptoLibraries.qll index 7f0e52b449a2..f8714e8602ad 100644 --- a/go/ql/lib/semmle/go/frameworks/CryptoLibraries.qll +++ b/go/ql/lib/semmle/go/frameworks/CryptoLibraries.qll @@ -381,19 +381,26 @@ private module Crypto { } private class StreamReader extends EncryptionOperation { + DataFlow::Node encryptionFlowTarget; + DataFlow::Node inputNode; + StreamReader() { lookThroughPointerType(this.getType()).hasQualifiedName("crypto/cipher", "StreamReader") and - exists(DataFlow::Write w, DataFlow::Node base, Field f | - f.hasQualifiedName("crypto/cipher", "StreamReader", "S") and - w.writesField(base, f, encryptionFlowTarget) and - DataFlow::localFlow(base, this) + exists(DataFlow::Write wS, DataFlow::Node baseS, Field fS | + fS.hasQualifiedName("crypto/cipher", "StreamReader", "S") and + wS.writesField(baseS, fS, encryptionFlowTarget) and + DataFlow::localFlow(baseS, this) ) and - exists(DataFlow::Write w, DataFlow::Node base, Field f | - f.hasQualifiedName("crypto/cipher", "StreamReader", "R") and - w.writesField(base, f, inputNode) and - DataFlow::localFlow(base, this) + exists(DataFlow::Write wR, DataFlow::Node baseR, Field fR | + fR.hasQualifiedName("crypto/cipher", "StreamReader", "R") and + wR.writesField(baseR, fR, inputNode) and + DataFlow::localFlow(baseR, this) ) } + + override DataFlow::Node getEncryptionFlowTarget() { result = encryptionFlowTarget } + + override DataFlow::Node getAnInput() { result = inputNode } } /** @@ -402,9 +409,10 @@ private module Crypto { * so it only works within one function. */ private class StreamWriter extends EncryptionOperation { + DataFlow::Node encryptionFlowTarget; + StreamWriter() { lookThroughPointerType(this.getType()).hasQualifiedName("crypto/cipher", "StreamWriter") and - inputNode = this and exists(DataFlow::Write w, DataFlow::Node base, Field f | w.writesField(base, f, encryptionFlowTarget) and f.hasQualifiedName("crypto/cipher", "StreamWriter", "S") @@ -413,6 +421,10 @@ private module Crypto { TaintTracking::localTaint(base, this.(DataFlow::PostUpdateNode).getPreUpdateNode()) ) } + + override DataFlow::Node getEncryptionFlowTarget() { result = encryptionFlowTarget } + + override DataFlow::Node getAnInput() { result = this } } } } diff --git a/go/ql/lib/semmle/go/frameworks/stdlib/IoFs.qll b/go/ql/lib/semmle/go/frameworks/stdlib/IoFs.qll index b071e56cbb53..cfd8a8aee232 100644 --- a/go/ql/lib/semmle/go/frameworks/stdlib/IoFs.qll +++ b/go/ql/lib/semmle/go/frameworks/stdlib/IoFs.qll @@ -20,10 +20,13 @@ module IoFs { private class WalkDirStep extends TaintTracking::AdditionalTaintStep { override predicate step(DataFlow::Node pred, DataFlow::Node succ) { //signature: func WalkDir(fsys FS, root string, fn WalkDirFunc) error - exists(DataFlow::CallNode call, DataFlow::FunctionNode f | - call.getTarget().hasQualifiedName(packagePath(), "WalkDir") and - f.getASuccessor*() = call.getArgument(2) + exists(DataFlow::CallNode call, DataFlow::FunctionNode f, DataFlow::Node n | + n = f.(DataFlow::FuncLitNode) + or + n.asExpr().(FunctionName).getTarget() = f.(DataFlow::GlobalFunctionNode).getFunction() | + call.getTarget().hasQualifiedName(packagePath(), "WalkDir") and + n.getASuccessor*() = call.getArgument(2) and pred = call.getArgument(0) and succ = f.getParameter([0, 1]) ) diff --git a/go/ql/src/CHANGELOG.md b/go/ql/src/CHANGELOG.md index 2bc95cc19222..84d9ae7de593 100644 --- a/go/ql/src/CHANGELOG.md +++ b/go/ql/src/CHANGELOG.md @@ -1,3 +1,15 @@ +## 1.6.3 + +No user-facing changes. + +## 1.6.2 + +No user-facing changes. + +## 1.6.1 + +No user-facing changes. + ## 1.6.0 ### Query Metadata Changes diff --git a/go/ql/src/change-notes/released/1.6.1.md b/go/ql/src/change-notes/released/1.6.1.md new file mode 100644 index 000000000000..898f6201ed73 --- /dev/null +++ b/go/ql/src/change-notes/released/1.6.1.md @@ -0,0 +1,3 @@ +## 1.6.1 + +No user-facing changes. diff --git a/go/ql/src/change-notes/released/1.6.2.md b/go/ql/src/change-notes/released/1.6.2.md new file mode 100644 index 000000000000..bbe3747556fb --- /dev/null +++ b/go/ql/src/change-notes/released/1.6.2.md @@ -0,0 +1,3 @@ +## 1.6.2 + +No user-facing changes. diff --git a/go/ql/src/change-notes/released/1.6.3.md b/go/ql/src/change-notes/released/1.6.3.md new file mode 100644 index 000000000000..a000ecf70252 --- /dev/null +++ b/go/ql/src/change-notes/released/1.6.3.md @@ -0,0 +1,3 @@ +## 1.6.3 + +No user-facing changes. diff --git a/go/ql/src/codeql-pack.release.yml b/go/ql/src/codeql-pack.release.yml index c4f0b07d5336..00b51441d882 100644 --- a/go/ql/src/codeql-pack.release.yml +++ b/go/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.6.0 +lastReleaseVersion: 1.6.3 diff --git a/go/ql/src/qlpack.yml b/go/ql/src/qlpack.yml index 1ec2c5b9430e..df9d76530855 100644 --- a/go/ql/src/qlpack.yml +++ b/go/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/go-queries -version: 1.6.0 +version: 1.6.3 groups: - go - queries diff --git a/go/ql/test/library-tests/semmle/go/dataflow/FlowSteps/LocalFlowStep.expected b/go/ql/test/library-tests/semmle/go/dataflow/FlowSteps/LocalFlowStep.expected index fcbb78716a46..7fa8b681d7f3 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/FlowSteps/LocalFlowStep.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/FlowSteps/LocalFlowStep.expected @@ -1,52 +1,3 @@ -| file://:0:0:0:0 | function Encode | url.go:51:14:51:21 | selection of Encode | -| file://:0:0:0:0 | function EscapedPath | url.go:28:14:28:26 | selection of EscapedPath | -| file://:0:0:0:0 | function Get | url.go:52:14:52:18 | selection of Get | -| file://:0:0:0:0 | function Hostname | url.go:29:14:29:23 | selection of Hostname | -| file://:0:0:0:0 | function JoinPath | url.go:57:16:57:27 | selection of JoinPath | -| file://:0:0:0:0 | function JoinPath | url.go:58:16:58:27 | selection of JoinPath | -| file://:0:0:0:0 | function JoinPath | url.go:60:15:60:28 | selection of JoinPath | -| file://:0:0:0:0 | function JoinPath | url.go:66:9:66:25 | selection of JoinPath | -| file://:0:0:0:0 | function MarshalBinary | url.go:30:11:30:25 | selection of MarshalBinary | -| file://:0:0:0:0 | function Parse | url.go:23:10:23:18 | selection of Parse | -| file://:0:0:0:0 | function Parse | url.go:32:9:32:15 | selection of Parse | -| file://:0:0:0:0 | function Parse | url.go:59:14:59:22 | selection of Parse | -| file://:0:0:0:0 | function Parse | url.go:65:17:65:25 | selection of Parse | -| file://:0:0:0:0 | function ParseQuery | url.go:50:10:50:23 | selection of ParseQuery | -| file://:0:0:0:0 | function ParseRequestURI | url.go:27:9:27:27 | selection of ParseRequestURI | -| file://:0:0:0:0 | function Password | url.go:43:11:43:21 | selection of Password | -| file://:0:0:0:0 | function PathEscape | url.go:12:31:12:44 | selection of PathEscape | -| file://:0:0:0:0 | function PathUnescape | url.go:12:14:12:29 | selection of PathUnescape | -| file://:0:0:0:0 | function Port | url.go:33:14:33:19 | selection of Port | -| file://:0:0:0:0 | function Println | url.go:28:2:28:12 | selection of Println | -| file://:0:0:0:0 | function Println | url.go:29:2:29:12 | selection of Println | -| file://:0:0:0:0 | function Println | url.go:31:2:31:12 | selection of Println | -| file://:0:0:0:0 | function Println | url.go:33:2:33:12 | selection of Println | -| file://:0:0:0:0 | function Println | url.go:34:2:34:12 | selection of Println | -| file://:0:0:0:0 | function Println | url.go:35:2:35:12 | selection of Println | -| file://:0:0:0:0 | function Println | url.go:44:2:44:12 | selection of Println | -| file://:0:0:0:0 | function Println | url.go:45:2:45:12 | selection of Println | -| file://:0:0:0:0 | function Println | url.go:51:2:51:12 | selection of Println | -| file://:0:0:0:0 | function Println | url.go:52:2:52:12 | selection of Println | -| file://:0:0:0:0 | function Query | url.go:34:14:34:20 | selection of Query | -| file://:0:0:0:0 | function QueryEscape | url.go:14:32:14:46 | selection of QueryEscape | -| file://:0:0:0:0 | function QueryUnescape | url.go:14:14:14:30 | selection of QueryUnescape | -| file://:0:0:0:0 | function Replace | strings.go:9:8:9:22 | selection of Replace | -| file://:0:0:0:0 | function ReplaceAll | strings.go:10:8:10:25 | selection of ReplaceAll | -| file://:0:0:0:0 | function RequestURI | url.go:35:14:35:25 | selection of RequestURI | -| file://:0:0:0:0 | function ResolveReference | url.go:36:6:36:23 | selection of ResolveReference | -| file://:0:0:0:0 | function Sprint | strings.go:11:9:11:18 | selection of Sprint | -| file://:0:0:0:0 | function Sprintf | strings.go:11:30:11:40 | selection of Sprintf | -| file://:0:0:0:0 | function Sprintln | strings.go:11:54:11:65 | selection of Sprintln | -| file://:0:0:0:0 | function User | url.go:41:8:41:15 | selection of User | -| file://:0:0:0:0 | function UserPassword | url.go:42:7:42:22 | selection of UserPassword | -| file://:0:0:0:0 | function Username | url.go:45:14:45:24 | selection of Username | -| file://:0:0:0:0 | function append | main.go:39:8:39:13 | append | -| file://:0:0:0:0 | function append | main.go:40:8:40:13 | append | -| file://:0:0:0:0 | function copy | main.go:42:2:42:5 | copy | -| file://:0:0:0:0 | function make | main.go:41:8:41:11 | make | -| file://:0:0:0:0 | function max | main.go:65:7:65:9 | max | -| file://:0:0:0:0 | function min | main.go:64:7:64:9 | min | -| main.go:3:6:3:10 | function test1 | main.go:34:2:34:6 | test1 | | main.go:3:12:3:12 | argument corresponding to x | main.go:3:12:3:12 | definition of x | | main.go:3:12:3:12 | definition of x | main.go:5:5:5:5 | x | | main.go:3:19:3:20 | argument corresponding to fn | main.go:3:19:3:20 | definition of fn | @@ -66,8 +17,6 @@ | main.go:10:12:10:12 | y | main.go:10:17:10:17 | y | | main.go:10:17:10:27 | ...>=... | main.go:10:7:10:27 | ...&&... | | main.go:11:14:11:14 | z | main.go:11:9:11:15 | type conversion | -| main.go:14:6:14:10 | function test2 | main.go:34:8:34:12 | test2 | -| main.go:14:6:14:10 | function test2 | main.go:34:19:34:23 | test2 | | main.go:15:9:15:9 | 0 | main.go:15:2:15:4 | definition of acc | | main.go:16:9:19:2 | capture variable acc | main.go:17:3:17:5 | acc | | main.go:17:3:17:7 | definition of acc | main.go:18:10:18:12 | acc | diff --git a/go/ql/test/library-tests/semmle/go/dataflow/PromotedFields/LocalFlowStep.expected b/go/ql/test/library-tests/semmle/go/dataflow/PromotedFields/LocalFlowStep.expected index 5908aa8d113e..3767cd57b5d1 100644 --- a/go/ql/test/library-tests/semmle/go/dataflow/PromotedFields/LocalFlowStep.expected +++ b/go/ql/test/library-tests/semmle/go/dataflow/PromotedFields/LocalFlowStep.expected @@ -1,83 +1,3 @@ -| main.go:3:6:3:11 | function source | main.go:23:31:23:36 | source | -| main.go:3:6:3:11 | function source | main.go:31:31:31:36 | source | -| main.go:3:6:3:11 | function source | main.go:40:30:40:35 | source | -| main.go:3:6:3:11 | function source | main.go:46:32:46:37 | source | -| main.go:3:6:3:11 | function source | main.go:54:17:54:22 | source | -| main.go:3:6:3:11 | function source | main.go:62:18:62:23 | source | -| main.go:3:6:3:11 | function source | main.go:72:17:72:22 | source | -| main.go:3:6:3:11 | function source | main.go:80:18:80:23 | source | -| main.go:3:6:3:11 | function source | main.go:91:16:91:21 | source | -| main.go:3:6:3:11 | function source | main.go:98:17:98:22 | source | -| main.go:3:6:3:11 | function source | main.go:107:22:107:27 | source | -| main.go:3:6:3:11 | function source | main.go:114:23:114:28 | source | -| main.go:3:6:3:11 | function source | main.go:123:23:123:28 | source | -| main.go:3:6:3:11 | function source | main.go:130:24:130:29 | source | -| main.go:3:6:3:11 | function source | main.go:139:29:139:34 | source | -| main.go:3:6:3:11 | function source | main.go:146:30:146:35 | source | -| main.go:7:6:7:9 | function sink | main.go:25:2:25:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:26:2:26:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:27:2:27:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:28:2:28:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:33:2:33:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:34:2:34:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:35:2:35:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:36:2:36:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:41:2:41:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:42:2:42:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:43:2:43:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:44:2:44:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:47:2:47:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:48:2:48:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:49:2:49:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:50:2:50:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:57:2:57:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:58:2:58:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:59:2:59:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:60:2:60:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:65:2:65:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:66:2:66:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:67:2:67:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:68:2:68:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:75:2:75:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:76:2:76:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:77:2:77:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:78:2:78:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:83:2:83:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:84:2:84:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:85:2:85:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:86:2:86:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:92:2:92:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:93:2:93:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:94:2:94:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:95:2:95:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:99:2:99:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:100:2:100:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:101:2:101:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:102:2:102:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:108:2:108:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:109:2:109:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:110:2:110:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:111:2:111:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:115:2:115:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:116:2:116:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:117:2:117:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:118:2:118:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:124:2:124:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:125:2:125:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:126:2:126:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:127:2:127:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:131:2:131:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:132:2:132:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:133:2:133:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:134:2:134:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:140:2:140:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:141:2:141:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:142:2:142:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:143:2:143:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:147:2:147:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:148:2:148:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:149:2:149:5 | sink | -| main.go:7:6:7:9 | function sink | main.go:150:2:150:5 | sink | | main.go:22:2:22:6 | definition of outer | main.go:25:7:25:11 | outer | | main.go:22:11:24:2 | struct literal | main.go:22:2:22:6 | definition of outer | | main.go:22:11:24:2 | struct literal [postupdate] | main.go:22:2:22:6 | definition of outer | diff --git a/java/documentation/library-coverage/coverage.csv b/java/documentation/library-coverage/coverage.csv index 60a20a483f15..f99bbd1ed975 100644 --- a/java/documentation/library-coverage/coverage.csv +++ b/java/documentation/library-coverage/coverage.csv @@ -1,296 +1,296 @@ -package,sink,source,summary,sink:bean-validation,sink:command-injection,sink:credentials-key,sink:credentials-password,sink:credentials-username,sink:encryption-iv,sink:encryption-salt,sink:environment-injection,sink:file-content-store,sink:fragment-injection,sink:groovy-injection,sink:hostname-verification,sink:html-injection,sink:information-leak,sink:intent-redirection,sink:jexl-injection,sink:jndi-injection,sink:js-injection,sink:ldap-injection,sink:log-injection,sink:mvel-injection,sink:notification,sink:ognl-injection,sink:path-injection,sink:pending-intents,sink:regex-use,sink:regex-use[-1],sink:regex-use[0],sink:regex-use[],sink:regex-use[f-1],sink:regex-use[f1],sink:regex-use[f],sink:request-forgery,sink:response-splitting,sink:sql-injection,sink:template-injection,sink:trust-boundary-violation,sink:unsafe-deserialization,sink:url-forward,sink:url-redirection,sink:xpath-injection,sink:xslt-injection,source:android-external-storage-dir,source:contentprovider,source:database,source:environment,source:file,source:remote,summary:taint,summary:value -actions.osgi,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6, -android.app,77,,103,,,,,,,,,,11,,,,,7,,,,,,,42,,,17,,,,,,,,,,,,,,,,,,,,,,,,18,85 -android.content,24,31,154,,,,,,,,,,,,,,,16,,,,,,,,,,,,,,,,,,,,8,,,,,,,,4,27,,,,,63,91 -android.database,59,,41,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,59,,,,,,,,,,,,,,41, -android.net,,,60,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,45,15 -android.os,1,2,122,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,2,,,,,,41,81 -android.support.v4.app,11,,,,,,,,,,,,11,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -android.util,6,16,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,16,, -android.webkit,3,2,,,,,,,,,,,,,,2,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,, -android.widget,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1, -androidx.core.app,47,,95,,,,,,,,,,,,,,,,,,,,,,41,,,6,,,,,,,,,,,,,,,,,,,,,,,,12,83 -androidx.fragment.app,11,,,,,,,,,,,,11,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -androidx.slice,2,5,88,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,5,,,,,27,61 -antlr,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -ch.ethz.ssh2,2,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -cn.hutool.core.codec,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -com.alibaba.com.caucho.hessian.io,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,, -com.alibaba.druid.sql,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,1, -com.alibaba.fastjson2,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -com.amazonaws.auth,2,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -com.auth0.jwt.algorithms,6,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -com.azure.identity,3,,,,,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -com.caucho.burlap.io,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,, -com.caucho.hessian.io,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,, -com.cedarsoftware.util.io,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,, -com.couchbase.client.core.env,15,,1,,,,9,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -com.couchbase.client.java,10,,,,,,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,, -com.esotericsoftware.kryo.io,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -com.esotericsoftware.kryo5.io,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -com.esotericsoftware.yamlbeans,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,, -com.fasterxml.jackson.core,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -com.fasterxml.jackson.databind,2,,8,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,8, -com.google.common.base,4,,87,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,1,,,,,,,,,,,,,,,,,,,,63,24 -com.google.common.cache,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17 -com.google.common.collect,,,553,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,551 -com.google.common.flogger,29,,,,,,,,,,,,,,,,,,,,,,29,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -com.google.common.io,10,,73,,,,,,,,,1,,,,,,,,,,,,,,,9,,,,,,,,,,,,,,,,,,,,,,,,,72,1 -com.google.gson,,,52,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,38,14 -com.hubspot.jinjava,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,, -com.jcraft.jsch,5,,1,,,,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,1, -com.microsoft.sqlserver.jdbc,4,,,,,,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -com.mitchellbosecke.pebble,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,, -com.mongodb,10,,,,,,4,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -com.opensymphony.xwork2,56,,961,,,,,,,,,,,,,,,,,,,,,,,56,,,,,,,,,,,,,,,,,,,,,,,,,,867,94 -com.rabbitmq.client,,21,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,21,7, -com.sshtools.j2ssh.authentication,3,,,,,,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -com.sun.crypto.provider,19,,,,,17,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -com.sun.jndi.ldap,4,,,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -com.sun.net.httpserver,3,,,,,,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -com.sun.net.ssl,3,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -com.sun.rowset,3,,,,,,2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -com.sun.security.auth.module,2,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -com.sun.security.ntlm,5,,,,,,3,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -com.sun.security.sasl.digest,3,,,,,,2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -com.thoughtworks.xstream,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,, -com.trilead.ssh2,13,,,,,2,4,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -com.unboundid.ldap.sdk,17,,,,,,,,,,,,,,,,,,,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -com.zaxxer.hikari,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, -flexjson,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1 -freemarker.cache,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, -freemarker.template,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,,,,,,,,,,,,,, -groovy.lang,26,,,,,,,,,,,,,26,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -groovy.text,1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -groovy.util,5,,,,,,,,,,,,,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -hudson,75,9,2648,,4,,,,,,3,2,,,,4,,,,,,,,,,,56,,,,,,,,,6,,,,,,,,,,,,,,5,4,2572,76 -io.jsonwebtoken,,2,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,4, -io.netty.bootstrap,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, -io.netty.buffer,,,207,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,130,77 -io.netty.channel,9,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,,,,,,,,,,,,,,,2,, -io.netty.handler.codec,4,13,259,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,3,,,,,,,,,,,,,,,13,143,116 -io.netty.handler.ssl,4,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,, -io.netty.handler.stream,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,, -io.netty.resolver,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -io.netty.util,2,,23,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,1,,,,,,,,,,,,,,,,21,2 -io.undertow.server.handlers.resource,1,,3,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,3, -jakarta.activation,2,,2,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,1,,,,,,,,,,,,,,,,2, -jakarta.faces.context,4,7,,,,,,,,,,,,,,2,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,7,, -jakarta.json,,,123,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,23 -jakarta.persistence,2,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,1, -jakarta.servlet,2,26,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,26,, -jakarta.ws.rs.client,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -jakarta.ws.rs.container,,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,, -jakarta.ws.rs.core,2,,149,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,94,55 -jakarta.xml.bind.attachment,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,, -java.applet,,,11,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,11, -java.awt,1,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,3 -java.beans,1,,177,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,82,95 -java.io,66,1,225,,,,,,,,,22,,,,,,,,,,,,,,,44,,,,,,,,,,,,,,,,,,,,,,,1,,202,23 -java.lang,38,3,790,,13,,,,,,1,,,,,,,,,,,,8,,,,11,,,4,,,1,,,,,,,,,,,,,,,,3,,,510,280 -java.math,,,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9 -java.net,23,3,347,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,21,,,,,,,,,,,,,,,3,248,99 -java.nio,47,,499,,,,,,,,,5,,,,,,,,,,,,,,,41,,,,,,,,,1,,,,,,,,,,,,,,,,302,197 -java.rmi,,,68,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,45,23 -java.security,21,,583,,,11,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,285,298 -java.sql,15,1,292,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,9,,,,,,,,,,1,,,,274,18 -java.text,,,154,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,72,82 -java.time,,,131,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,27,104 -java.util,48,2,1340,,,,,,,,,1,,,,,,,,,,,34,,,,3,,,,5,2,,1,2,,,,,,,,,,,,,,2,,,558,782 -javafx.scene.web,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -javax.accessibility,,,63,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,28,35 -javax.activation,2,,7,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,1,,,,,,,,,,,,,,,,7, -javax.annotation.processing,,,28,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,25,3 -javax.crypto,19,,140,,,12,3,,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,76,64 -javax.faces.context,4,7,,,,,,,,,,,,,,2,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,7,, -javax.imageio,1,,304,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,138,166 -javax.jms,,9,57,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,57, -javax.json,,,123,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,23 -javax.lang.model,,,277,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,217,60 -javax.management,2,,766,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,363,403 -javax.naming,7,,341,,,,,,,,,,,,,,,,,6,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,191,150 -javax.net,4,,136,,,,2,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,87,49 -javax.portlet,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,, -javax.print,2,,133,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,102,31 -javax.rmi.ssl,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6 -javax.script,1,,50,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,14,36 -javax.security.auth,7,,147,,,4,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,50,97 -javax.security.cert,,,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5, -javax.security.sasl,,,49,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,42,7 -javax.servlet,10,29,3,,,,,,,,,,,,,,1,,,,,,,,,,2,,,,,,,,,,3,,,2,,2,,,,,,,,,29,3, -javax.smartcardio,,,34,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,24,10 -javax.sound.midi,,,60,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,51,9 -javax.sound.sampled,,,90,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,53,37 -javax.sql,7,,126,,,,4,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,68,58 -javax.tools,,,66,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,62,4 -javax.transaction.xa,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -javax.validation,1,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,, -javax.ws.rs.client,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -javax.ws.rs.container,,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,, -javax.ws.rs.core,3,,149,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,2,,,,,,,,,94,55 -javax.xml.bind.attachment,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,, -javax.xml.catalog,,,12,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,11,1 -javax.xml.crypto,,,269,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,172,97 -javax.xml.datatype,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5,1 -javax.xml.namespace,,,15,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5,10 -javax.xml.parsers,,,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,35,2 -javax.xml.stream,,,221,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,201,20 -javax.xml.transform,2,,134,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,1,,,,,,,72,62 -javax.xml.validation,,,29,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,29, -javax.xml.xpath,3,,26,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,26, -jenkins,,,523,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,500,23 -jodd.json,,,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10 -kotlin,16,,1849,,,,,,,,,,,,,,,,,,,,,,,,14,,,,,,,,,2,,,,,,,,,,,,,,,,1836,13 -liquibase.database.jvm,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,, -liquibase.statement.core,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,, -net.lingala.zip4j,2,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,, -net.schmizz.sshj,4,,,,,,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -net.sf.json,2,,338,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,321,17 -net.sf.saxon.s9api,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5,,,,,,,, -ognl,6,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,, -okhttp3,4,,50,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,,,,,23,27 -org.acegisecurity,,,49,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,49, -org.antlr.runtime,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.commons.codec,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6, -org.apache.commons.collections,,,800,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17,783 -org.apache.commons.collections4,,,806,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17,789 -org.apache.commons.compress.archivers.tar,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4, -org.apache.commons.exec,10,,,,6,,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.commons.fileupload,,11,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,11,4, -org.apache.commons.httpclient.util,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -org.apache.commons.io,124,,570,,,,,,,,,4,,,,,,,,,,,,,,,105,,,,,,,,,15,,,,,,,,,,,,,,,,556,14 -org.apache.commons.jelly,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,, -org.apache.commons.jexl2,15,,,,,,,,,,,,,,,,,,15,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.commons.jexl3,15,,,,,,,,,,,,,,,,,,15,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.commons.lang,1,,767,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,596,171 -org.apache.commons.lang3,7,,425,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,1,,,,,,,,,,,294,131 -org.apache.commons.logging,6,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.commons.net,13,12,,,,,2,2,,,,,,,,,,,,,,,,,,,3,,,,,,,,,6,,,,,,,,,,,,,,,12,, -org.apache.commons.ognl,6,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.commons.text,,,272,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,220,52 -org.apache.cxf.catalog,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -org.apache.cxf.common.classloader,3,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,2,,,,,,,,,,,,,,,,, -org.apache.cxf.common.jaxb,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.cxf.common.logging,6,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.cxf.configuration.jsse,2,,,,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.cxf.helpers,10,,,,,,,,,,,,,,,,,,,,,,,,,,5,,,,,,,,,,,,,,,,,5,,,,,,,,, -org.apache.cxf.resource,9,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,5,,,,,,,,,,,,,,,,, -org.apache.cxf.staxutils,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.cxf.tools.corba.utils,4,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.cxf.tools.util,10,,,,,,,,,,,,,,,,,,,,,,,,,,10,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.cxf.transform,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,, -org.apache.directory.ldap.client.api,1,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.hadoop.fs,3,,11,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,,11, -org.apache.hadoop.hive.metastore,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,, -org.apache.hadoop.hive.ql.exec,1,,1,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,1, -org.apache.hadoop.hive.ql.metadata,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.hc.client5.http.async.methods,84,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,84,,,,,,,,,,,,,,,,, -org.apache.hc.client5.http.classic.methods,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,, -org.apache.hc.client5.http.fluent,19,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,19,,,,,,,,,,,,,,,,, -org.apache.hc.core5.benchmark,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -org.apache.hc.core5.function,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -org.apache.hc.core5.http,73,2,45,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,72,,,,,,,,,,,,,,,2,45, -org.apache.hc.core5.net,,,18,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,18, -org.apache.hc.core5.util,,,24,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,18,6 -org.apache.hive.hcatalog.templeton,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,, -org.apache.http,48,3,95,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,46,,,,,,,,,,,,,,,3,86,9 -org.apache.ibatis.jdbc,6,,57,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,57, -org.apache.ibatis.mapping,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -org.apache.log4j,11,,,,,,,,,,,,,,,,,,,,,,11,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.logging.log4j,359,,8,,,,,,,,,,,,,,,,,,,,359,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,4 -org.apache.shiro.authc,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,, -org.apache.shiro.codec,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -org.apache.shiro.jndi,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.shiro.mgt,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.sshd.client.session,3,,,,,,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.struts.beanvalidation.validation.interceptor,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4, -org.apache.struts2,14,,3873,,,,,,,,,,,,,,,,,,,,,,,11,,,,,,,,,,,,,,3,,,,,,,,,,,,3839,34 -org.apache.tools.ant,14,,,,1,,,,,,,,,,,,,,,,,,,,,,13,,,,,,,,,,,,,,,,,,,,,,,,,, -org.apache.tools.zip,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -org.apache.velocity.app,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,,, -org.apache.velocity.runtime,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,,, -org.codehaus.cargo.container.installer,3,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,1,,,,,,,,,,,,,,,,, -org.codehaus.groovy.control,1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.dom4j,20,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,20,,,,,,,,, -org.eclipse.jetty.client,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, -org.exolab.castor.xml,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,, -org.fusesource.leveldbjni,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,, -org.geogebra.web.full.main,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,, -org.gradle.api.file,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3, -org.hibernate,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,,,,,,,,,,,,,,, -org.ho.yaml,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8,,,,,,,,,,,, -org.influxdb,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -org.jabsorb,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,, -org.jboss.logging,324,,,,,,,,,,,,,,,,,,,,,,324,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.jboss.vfs,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,, -org.jdbi.v3.core,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,, -org.jenkins.ui.icon,,,49,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,48,1 -org.jenkins.ui.symbol,,,33,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,25,8 -org.jooq,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,, -org.json,,,236,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,198,38 -org.keycloak.models.map.storage,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,, -org.kohsuke.stapler,20,24,363,,,,,,,,,,,,,2,,,,,,,,,,,9,,,,,,,,,3,,,,,,1,5,,,,,,,,24,352,11 -org.lastaflute.web,,1,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,4, -org.mvel2,16,,,,,,,,,,,,,,,,,,,,,,,16,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.openjdk.jmh.runner.options,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,, -org.owasp.esapi,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -org.pac4j.jwt.config.encryption,4,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.pac4j.jwt.config.signature,4,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.scijava.log,13,,,,,,,,,,,,,,,,,,,,,,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.slf4j,55,,6,,,,,,,,,,,,,,,,,,,,55,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,4 -org.springframework.beans,,,30,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,30 -org.springframework.boot.jdbc,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, -org.springframework.cache,,,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13 -org.springframework.context,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3, -org.springframework.core.io,17,,6,,,,,,,,,,,,,,,,,,,,,,,,16,,,,,,,,,1,,,,,,,,,,,,,,,,6, -org.springframework.data.repository,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1 -org.springframework.http,14,,77,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,14,,,,,,,,,,,,,,,,67,10 -org.springframework.jdbc.core,19,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,19,,,,,,,,,,,,,,, -org.springframework.jdbc.datasource,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,,,,,, -org.springframework.jdbc.object,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,,,,,,,,,,,,,,, -org.springframework.jndi,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.springframework.ldap,47,,,,,,,,,,,,,,,,,,,33,,14,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.springframework.security.core.userdetails,2,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -org.springframework.security.web.savedrequest,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,, -org.springframework.ui,,,32,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,32 -org.springframework.util,10,,142,,,,,,,,,,,,,,,,,,,,,,,,10,,,,,,,,,,,,,,,,,,,,,,,,,90,52 -org.springframework.validation,,,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13, -org.springframework.web.client,13,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13,,,,,,,,,,,,,,,3,, -org.springframework.web.context.request,,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8,, -org.springframework.web.multipart,,12,12,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,12,12, -org.springframework.web.portlet,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,, -org.springframework.web.reactive.function.client,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, -org.springframework.web.servlet,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,, -org.springframework.web.socket,,8,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8,6, -org.springframework.web.util,,9,159,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,134,25 -org.thymeleaf,2,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,2, -org.xml.sax,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -org.xmlpull.v1,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,, -org.yaml.snakeyaml,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, -play.libs.ws,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, -play.mvc,1,13,24,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,13,24, -ratpack.core.form,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3, -ratpack.core.handling,,6,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,4, -ratpack.core.http,,10,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10,10, -ratpack.exec,,,48,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,48 -ratpack.form,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3, -ratpack.func,,,35,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,35 -ratpack.handling,,6,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,4, -ratpack.http,,10,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10,10, -ratpack.util,,,35,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,35 -retrofit2,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,1, -software.amazon.awssdk.transfer.s3.model,8,,,,,,,,,,,,,,,,,,,,,,,,,,8,,,,,,,,,,,,,,,,,,,,,,,,,, -sun.jvmstat.perfdata.monitor.protocol.local,3,,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -sun.jvmstat.perfdata.monitor.protocol.rmi,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -sun.misc,3,,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -sun.net.ftp,5,,,,,,2,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -sun.net.www.protocol.http,3,,,,,,2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -sun.security.acl,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -sun.security.jgss.krb5,2,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -sun.security.krb5,9,,,,,3,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -sun.security.pkcs,4,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -sun.security.pkcs11,3,,,,,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -sun.security.provider,2,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -sun.security.ssl,3,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -sun.security.x509,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -sun.tools.jconsole,28,,,,,,13,15,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +package,sink,source,summary,sink:bean-validation,sink:command-injection,sink:credentials-key,sink:credentials-password,sink:credentials-username,sink:encryption-iv,sink:encryption-salt,sink:environment-injection,sink:file-content-store,sink:fragment-injection,sink:groovy-injection,sink:hostname-verification,sink:html-injection,sink:information-leak,sink:intent-redirection,sink:jexl-injection,sink:jndi-injection,sink:js-injection,sink:ldap-injection,sink:log-injection,sink:mvel-injection,sink:notification,sink:ognl-injection,sink:path-injection,sink:path-injection[read],sink:pending-intents,sink:regex-use,sink:regex-use[-1],sink:regex-use[0],sink:regex-use[],sink:regex-use[f-1],sink:regex-use[f1],sink:regex-use[f],sink:request-forgery,sink:response-splitting,sink:sql-injection,sink:template-injection,sink:trust-boundary-violation,sink:unsafe-deserialization,sink:url-forward,sink:url-redirection,sink:xpath-injection,sink:xslt-injection,source:android-external-storage-dir,source:contentprovider,source:database,source:environment,source:file,source:remote,summary:taint,summary:value +actions.osgi,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6, +android.app,77,,103,,,,,,,,,,11,,,,,7,,,,,,,42,,,,17,,,,,,,,,,,,,,,,,,,,,,,,18,85 +android.content,24,31,154,,,,,,,,,,,,,,,16,,,,,,,,,,,,,,,,,,,,,8,,,,,,,,4,27,,,,,63,91 +android.database,59,,41,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,59,,,,,,,,,,,,,,41, +android.net,,,60,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,45,15 +android.os,1,2,122,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,2,,,,,,41,81 +android.support.v4.app,11,,,,,,,,,,,,11,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +android.util,6,16,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,16,, +android.webkit,3,2,,,,,,,,,,,,,,2,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,, +android.widget,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,1, +androidx.core.app,47,,95,,,,,,,,,,,,,,,,,,,,,,41,,,,6,,,,,,,,,,,,,,,,,,,,,,,,12,83 +androidx.fragment.app,11,,,,,,,,,,,,11,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +androidx.slice,2,5,88,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,5,,,,,27,61 +antlr,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +ch.ethz.ssh2,2,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +cn.hutool.core.codec,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +com.alibaba.com.caucho.hessian.io,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,, +com.alibaba.druid.sql,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,1, +com.alibaba.fastjson2,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +com.amazonaws.auth,2,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +com.auth0.jwt.algorithms,6,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +com.azure.identity,3,,,,,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +com.caucho.burlap.io,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,, +com.caucho.hessian.io,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,, +com.cedarsoftware.util.io,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,, +com.couchbase.client.core.env,15,,1,,,,9,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +com.couchbase.client.java,10,,,,,,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,, +com.esotericsoftware.kryo.io,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +com.esotericsoftware.kryo5.io,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +com.esotericsoftware.yamlbeans,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,, +com.fasterxml.jackson.core,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +com.fasterxml.jackson.databind,2,,8,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,8, +com.google.common.base,4,,87,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,1,,,,,,,,,,,,,,,,,,,,63,24 +com.google.common.cache,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17 +com.google.common.collect,,,553,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,551 +com.google.common.flogger,29,,,,,,,,,,,,,,,,,,,,,,29,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +com.google.common.io,10,,73,,,,,,,,,1,,,,,,,,,,,,,,,4,5,,,,,,,,,,,,,,,,,,,,,,,,,72,1 +com.google.gson,,,52,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,38,14 +com.hubspot.jinjava,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,, +com.jcraft.jsch,5,,1,,,,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,1, +com.microsoft.sqlserver.jdbc,4,,,,,,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +com.mitchellbosecke.pebble,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,, +com.mongodb,10,,,,,,4,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +com.opensymphony.xwork2,56,,961,,,,,,,,,,,,,,,,,,,,,,,56,,,,,,,,,,,,,,,,,,,,,,,,,,,867,94 +com.rabbitmq.client,,21,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,21,7, +com.sshtools.j2ssh.authentication,3,,,,,,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +com.sun.crypto.provider,19,,,,,17,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +com.sun.jndi.ldap,4,,,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +com.sun.net.httpserver,3,,,,,,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +com.sun.net.ssl,3,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +com.sun.rowset,3,,,,,,2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +com.sun.security.auth.module,2,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +com.sun.security.ntlm,5,,,,,,3,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +com.sun.security.sasl.digest,3,,,,,,2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +com.thoughtworks.xstream,1,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,, +com.trilead.ssh2,13,,,,,2,4,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +com.unboundid.ldap.sdk,17,,,,,,,,,,,,,,,,,,,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +com.zaxxer.hikari,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, +flexjson,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1 +freemarker.cache,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,, +freemarker.template,7,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,7,,,,,,,,,,,,,, +groovy.lang,26,,,,,,,,,,,,,26,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +groovy.text,1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +groovy.util,5,,,,,,,,,,,,,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +hudson,75,9,2648,,4,,,,,,3,2,,,,4,,,,,,,,,,,39,17,,,,,,,,,6,,,,,,,,,,,,,,5,4,2572,76 +io.jsonwebtoken,,2,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,4, +io.netty.bootstrap,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,, +io.netty.buffer,,,207,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,130,77 +io.netty.channel,9,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,,,,,,,,,,,,,,,2,, +io.netty.handler.codec,4,13,259,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,3,,,,,,,,,,,,,,,13,143,116 +io.netty.handler.ssl,4,,,,,,,,,,,,,,,,,,,,,,,,,,2,2,,,,,,,,,,,,,,,,,,,,,,,,,, +io.netty.handler.stream,1,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,, +io.netty.resolver,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +io.netty.util,2,,23,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,,,,,,,,21,2 +io.undertow.server.handlers.resource,1,,3,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,3, +jakarta.activation,2,,2,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,,,,,,,,2, +jakarta.faces.context,4,7,,,,,,,,,,,,,,2,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,7,, +jakarta.json,,,123,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,23 +jakarta.persistence,2,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,1, +jakarta.servlet,2,26,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,26,, +jakarta.ws.rs.client,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +jakarta.ws.rs.container,,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,, +jakarta.ws.rs.core,2,,149,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,94,55 +jakarta.xml.bind.attachment,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,, +java.applet,,,11,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,11, +java.awt,1,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,3 +java.beans,1,,177,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,82,95 +java.io,66,1,225,,,,,,,,,22,,,,,,,,,,,,,,,29,15,,,,,,,,,,,,,,,,,,,,,,,1,,202,23 +java.lang,38,3,790,,13,,,,,,1,,,,,,,,,,,,8,,,,2,9,,,4,,,1,,,,,,,,,,,,,,,,3,,,510,280 +java.math,,,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9 +java.net,23,3,347,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,21,,,,,,,,,,,,,,,3,248,99 +java.nio,47,,499,,,,,,,,,5,,,,,,,,,,,,,,,25,16,,,,,,,,,1,,,,,,,,,,,,,,,,302,197 +java.rmi,,,68,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,45,23 +java.security,21,,583,,,11,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,285,298 +java.sql,15,1,292,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,9,,,,,,,,,,1,,,,274,18 +java.text,,,154,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,72,82 +java.time,,,131,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,27,104 +java.util,48,2,1340,,,,,,,,,1,,,,,,,,,,,34,,,,3,,,,,5,2,,1,2,,,,,,,,,,,,,,2,,,558,782 +javafx.scene.web,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +javax.accessibility,,,63,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,28,35 +javax.activation,2,,7,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,1,,,,,,,,,,,,,,,,7, +javax.annotation.processing,,,28,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,25,3 +javax.crypto,19,,140,,,12,3,,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,76,64 +javax.faces.context,4,7,,,,,,,,,,,,,,2,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,7,, +javax.imageio,1,,304,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,138,166 +javax.jms,,9,57,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,57, +javax.json,,,123,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,100,23 +javax.lang.model,,,277,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,217,60 +javax.management,2,,766,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,363,403 +javax.naming,7,,341,,,,,,,,,,,,,,,,,6,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,191,150 +javax.net,4,,136,,,,2,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,87,49 +javax.portlet,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,, +javax.print,2,,133,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,102,31 +javax.rmi.ssl,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6 +javax.script,1,,50,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,14,36 +javax.security.auth,7,,147,,,4,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,50,97 +javax.security.cert,,,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5, +javax.security.sasl,,,49,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,42,7 +javax.servlet,10,29,3,,,,,,,,,,,,,,1,,,,,,,,,,,2,,,,,,,,,,3,,,2,,2,,,,,,,,,29,3, +javax.smartcardio,,,34,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,24,10 +javax.sound.midi,,,60,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,51,9 +javax.sound.sampled,,,90,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,53,37 +javax.sql,7,,126,,,,4,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,68,58 +javax.tools,,,66,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,62,4 +javax.transaction.xa,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +javax.validation,1,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,, +javax.ws.rs.client,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +javax.ws.rs.container,,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,, +javax.ws.rs.core,3,,149,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,2,,,,,,,,,94,55 +javax.xml.bind.attachment,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,, +javax.xml.catalog,,,12,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,11,1 +javax.xml.crypto,,,269,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,172,97 +javax.xml.datatype,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5,1 +javax.xml.namespace,,,15,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5,10 +javax.xml.parsers,,,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,35,2 +javax.xml.stream,,,221,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,201,20 +javax.xml.transform,2,,134,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,1,,,,,,,72,62 +javax.xml.validation,,,29,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,29, +javax.xml.xpath,3,,26,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,26, +jenkins,,,523,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,500,23 +jodd.json,,,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10 +kotlin,16,,1849,,,,,,,,,,,,,,,,,,,,,,,,11,3,,,,,,,,,2,,,,,,,,,,,,,,,,1836,13 +liquibase.database.jvm,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,, +liquibase.statement.core,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,, +net.lingala.zip4j,2,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,, +net.schmizz.sshj,4,,,,,,2,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +net.sf.json,2,,338,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,321,17 +net.sf.saxon.s9api,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,5,,,,,,,, +ognl,6,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,, +okhttp3,4,,50,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,,,,,23,27 +org.acegisecurity,,,49,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,49, +org.antlr.runtime,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.commons.codec,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6, +org.apache.commons.collections,,,800,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17,783 +org.apache.commons.collections4,,,806,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,17,789 +org.apache.commons.compress.archivers.tar,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4, +org.apache.commons.exec,10,,,,6,,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.commons.fileupload,,11,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,11,4, +org.apache.commons.httpclient.util,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +org.apache.commons.io,124,,570,,,,,,,,,4,,,,,,,,,,,,,,,102,3,,,,,,,,,15,,,,,,,,,,,,,,,,556,14 +org.apache.commons.jelly,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,, +org.apache.commons.jexl2,15,,,,,,,,,,,,,,,,,,15,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.commons.jexl3,15,,,,,,,,,,,,,,,,,,15,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.commons.lang,1,,767,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,596,171 +org.apache.commons.lang3,7,,425,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,1,,,,,,,,,,,294,131 +org.apache.commons.logging,6,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.commons.net,13,12,,,,,2,2,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,6,,,,,,,,,,,,,,,12,, +org.apache.commons.ognl,6,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.commons.text,,,272,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,220,52 +org.apache.cxf.catalog,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +org.apache.cxf.common.classloader,3,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,2,,,,,,,,,,,,,,,,, +org.apache.cxf.common.jaxb,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.cxf.common.logging,6,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.cxf.configuration.jsse,2,,,,,,,,,,,,,,1,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.cxf.helpers,10,,,,,,,,,,,,,,,,,,,,,,,,,,5,,,,,,,,,,,,,,,,,,5,,,,,,,,, +org.apache.cxf.resource,9,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,5,,,,,,,,,,,,,,,,, +org.apache.cxf.staxutils,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.cxf.tools.corba.utils,4,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.cxf.tools.util,10,,,,,,,,,,,,,,,,,,,,,,,,,,10,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.cxf.transform,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,, +org.apache.directory.ldap.client.api,1,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.hadoop.fs,3,,11,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,11, +org.apache.hadoop.hive.metastore,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,,,,,,,,,,,,,,, +org.apache.hadoop.hive.ql.exec,1,,1,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,1, +org.apache.hadoop.hive.ql.metadata,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.hc.client5.http.async.methods,84,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,84,,,,,,,,,,,,,,,,, +org.apache.hc.client5.http.classic.methods,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,,,,,,,,,,,,,,,,, +org.apache.hc.client5.http.fluent,19,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,19,,,,,,,,,,,,,,,,, +org.apache.hc.core5.benchmark,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +org.apache.hc.core5.function,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +org.apache.hc.core5.http,73,2,45,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,72,,,,,,,,,,,,,,,2,45, +org.apache.hc.core5.net,,,18,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,18, +org.apache.hc.core5.util,,,24,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,18,6 +org.apache.hive.hcatalog.templeton,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,, +org.apache.http,48,3,95,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,,,,,,46,,,,,,,,,,,,,,,3,86,9 +org.apache.ibatis.jdbc,6,,57,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,57, +org.apache.ibatis.mapping,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +org.apache.log4j,11,,,,,,,,,,,,,,,,,,,,,,11,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.logging.log4j,359,,8,,,,,,,,,,,,,,,,,,,,359,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,4 +org.apache.shiro.authc,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,, +org.apache.shiro.codec,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +org.apache.shiro.jndi,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.shiro.mgt,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.sshd.client.session,3,,,,,,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.struts.beanvalidation.validation.interceptor,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4, +org.apache.struts2,14,,3873,,,,,,,,,,,,,,,,,,,,,,,11,,,,,,,,,,,,,,,3,,,,,,,,,,,,3839,34 +org.apache.tools.ant,14,,,,1,,,,,,,,,,,,,,,,,,,,,,5,8,,,,,,,,,,,,,,,,,,,,,,,,,, +org.apache.tools.zip,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +org.apache.velocity.app,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,,, +org.apache.velocity.runtime,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,,, +org.codehaus.cargo.container.installer,3,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,1,,,,,,,,,,,,,,,,, +org.codehaus.groovy.control,1,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.dom4j,20,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,20,,,,,,,,, +org.eclipse.jetty.client,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, +org.exolab.castor.xml,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,, +org.fusesource.leveldbjni,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.geogebra.web.full.main,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,, +org.gradle.api.file,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3, +org.hibernate,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10,,,,,,,,,,,,,,, +org.ho.yaml,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8,,,,,,,,,,,, +org.influxdb,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +org.jabsorb,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,, +org.jboss.logging,324,,,,,,,,,,,,,,,,,,,,,,324,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.jboss.vfs,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.jdbi.v3.core,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,,,,,,,,,,,,,,,,, +org.jenkins.ui.icon,,,49,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,48,1 +org.jenkins.ui.symbol,,,33,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,25,8 +org.jooq,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,, +org.json,,,236,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,198,38 +org.keycloak.models.map.storage,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,, +org.kohsuke.stapler,20,24,363,,,,,,,,,,,,,2,,,,,,,,,,,8,1,,,,,,,,,3,,,,,,1,5,,,,,,,,24,352,11 +org.lastaflute.web,,1,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,4, +org.mvel2,16,,,,,,,,,,,,,,,,,,,,,,,16,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.openjdk.jmh.runner.options,1,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.owasp.esapi,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +org.pac4j.jwt.config.encryption,4,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.pac4j.jwt.config.signature,4,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.scijava.log,13,,,,,,,,,,,,,,,,,,,,,,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.slf4j,55,,6,,,,,,,,,,,,,,,,,,,,55,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,4 +org.springframework.beans,,,30,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,30 +org.springframework.boot.jdbc,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,, +org.springframework.cache,,,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13 +org.springframework.context,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3, +org.springframework.core.io,17,,6,,,,,,,,,,,,,,,,,,,,,,,,16,,,,,,,,,,1,,,,,,,,,,,,,,,,6, +org.springframework.data.repository,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1 +org.springframework.http,14,,77,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,14,,,,,,,,,,,,,,,,67,10 +org.springframework.jdbc.core,19,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,19,,,,,,,,,,,,,,, +org.springframework.jdbc.datasource,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,4,,,,,,,,,,,,,,,,, +org.springframework.jdbc.object,9,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,,,,,,,,,,,,,,, +org.springframework.jndi,1,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.springframework.ldap,47,,,,,,,,,,,,,,,,,,,33,,14,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.springframework.security.core.userdetails,2,,,,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +org.springframework.security.web.savedrequest,,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,, +org.springframework.ui,,,32,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,32 +org.springframework.util,10,,142,,,,,,,,,,,,,,,,,,,,,,,,9,1,,,,,,,,,,,,,,,,,,,,,,,,,90,52 +org.springframework.validation,,,13,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13, +org.springframework.web.client,13,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,13,,,,,,,,,,,,,,,3,, +org.springframework.web.context.request,,8,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8,, +org.springframework.web.multipart,,12,12,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,12,12, +org.springframework.web.portlet,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,, +org.springframework.web.reactive.function.client,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, +org.springframework.web.servlet,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,, +org.springframework.web.socket,,8,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,8,6, +org.springframework.web.util,,9,159,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9,134,25 +org.thymeleaf,2,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,2, +org.xml.sax,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +org.xmlpull.v1,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3,, +org.yaml.snakeyaml,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1, +play.libs.ws,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,,,,,,,,,,,,,,,,, +play.mvc,1,13,24,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,13,24, +ratpack.core.form,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3, +ratpack.core.handling,,6,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,4, +ratpack.core.http,,10,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10,10, +ratpack.exec,,,48,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,48 +ratpack.form,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,3, +ratpack.func,,,35,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,35 +ratpack.handling,,6,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6,4, +ratpack.http,,10,10,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,10,10, +ratpack.util,,,35,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,35 +retrofit2,1,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1,,,,,,,,,,,,,,,,1, +software.amazon.awssdk.transfer.s3.model,8,,,,,,,,,,,,,,,,,,,,,,,,,,8,,,,,,,,,,,,,,,,,,,,,,,,,,, +sun.jvmstat.perfdata.monitor.protocol.local,3,,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +sun.jvmstat.perfdata.monitor.protocol.rmi,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +sun.misc,3,,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +sun.net.ftp,5,,,,,,2,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +sun.net.www.protocol.http,3,,,,,,2,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +sun.security.acl,1,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +sun.security.jgss.krb5,2,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +sun.security.krb5,9,,,,,3,6,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +sun.security.pkcs,4,,,,,4,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +sun.security.pkcs11,3,,,,,1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +sun.security.provider,2,,,,,,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +sun.security.ssl,3,,,,,,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +sun.security.x509,1,,,,,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +sun.tools.jconsole,28,,,,,,13,15,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, diff --git a/java/documentation/library-coverage/coverage.rst b/java/documentation/library-coverage/coverage.rst index a7f940ad5717..5a3c8f168942 100644 --- a/java/documentation/library-coverage/coverage.rst +++ b/java/documentation/library-coverage/coverage.rst @@ -22,7 +22,7 @@ Java framework & library support `Google Gson `_,``com.google.gson``,,52,,,,,,, `Google Guava `_,``com.google.common.*``,,730,43,9,,,,, `Groovy `_,"``groovy.lang``, ``groovy.text``, ``groovy.util``, ``org.codehaus.groovy.control``",,,33,,,,,, - `Hibernate `_,``org.hibernate``,,,7,,,7,,, + `Hibernate `_,``org.hibernate``,,,10,,,10,,, `JBoss Logging `_,``org.jboss.logging``,,,324,,,,,, `JSON-java `_,``org.json``,,236,,,,,,, `Jackson `_,``com.fasterxml.jackson.*``,,9,2,2,,,,, @@ -41,5 +41,5 @@ Java framework & library support `Thymeleaf `_,``org.thymeleaf``,,2,2,,,,,, `jOOQ `_,``org.jooq``,,,1,,,1,,, Others,"``actions.osgi``, ``antlr``, ``ch.ethz.ssh2``, ``cn.hutool.core.codec``, ``com.alibaba.com.caucho.hessian.io``, ``com.alibaba.druid.sql``, ``com.alibaba.fastjson2``, ``com.amazonaws.auth``, ``com.auth0.jwt.algorithms``, ``com.azure.identity``, ``com.caucho.burlap.io``, ``com.caucho.hessian.io``, ``com.cedarsoftware.util.io``, ``com.esotericsoftware.kryo.io``, ``com.esotericsoftware.kryo5.io``, ``com.esotericsoftware.yamlbeans``, ``com.hubspot.jinjava``, ``com.jcraft.jsch``, ``com.microsoft.sqlserver.jdbc``, ``com.mitchellbosecke.pebble``, ``com.opensymphony.xwork2``, ``com.sshtools.j2ssh.authentication``, ``com.sun.crypto.provider``, ``com.sun.jndi.ldap``, ``com.sun.net.httpserver``, ``com.sun.net.ssl``, ``com.sun.rowset``, ``com.sun.security.auth.module``, ``com.sun.security.ntlm``, ``com.sun.security.sasl.digest``, ``com.thoughtworks.xstream``, ``com.trilead.ssh2``, ``com.unboundid.ldap.sdk``, ``com.zaxxer.hikari``, ``flexjson``, ``hudson``, ``io.jsonwebtoken``, ``io.undertow.server.handlers.resource``, ``javafx.scene.web``, ``jenkins``, ``jodd.json``, ``liquibase.database.jvm``, ``liquibase.statement.core``, ``net.lingala.zip4j``, ``net.schmizz.sshj``, ``net.sf.json``, ``net.sf.saxon.s9api``, ``ognl``, ``org.acegisecurity``, ``org.antlr.runtime``, ``org.apache.commons.codec``, ``org.apache.commons.compress.archivers.tar``, ``org.apache.commons.exec``, ``org.apache.commons.fileupload``, ``org.apache.commons.httpclient.util``, ``org.apache.commons.jelly``, ``org.apache.commons.jexl2``, ``org.apache.commons.jexl3``, ``org.apache.commons.lang``, ``org.apache.commons.logging``, ``org.apache.commons.net``, ``org.apache.commons.ognl``, ``org.apache.cxf.catalog``, ``org.apache.cxf.common.classloader``, ``org.apache.cxf.common.jaxb``, ``org.apache.cxf.common.logging``, ``org.apache.cxf.configuration.jsse``, ``org.apache.cxf.helpers``, ``org.apache.cxf.resource``, ``org.apache.cxf.staxutils``, ``org.apache.cxf.tools.corba.utils``, ``org.apache.cxf.tools.util``, ``org.apache.cxf.transform``, ``org.apache.directory.ldap.client.api``, ``org.apache.hadoop.fs``, ``org.apache.hadoop.hive.metastore``, ``org.apache.hadoop.hive.ql.exec``, ``org.apache.hadoop.hive.ql.metadata``, ``org.apache.hc.client5.http.async.methods``, ``org.apache.hc.client5.http.classic.methods``, ``org.apache.hc.client5.http.fluent``, ``org.apache.hive.hcatalog.templeton``, ``org.apache.ibatis.jdbc``, ``org.apache.ibatis.mapping``, ``org.apache.log4j``, ``org.apache.shiro.authc``, ``org.apache.shiro.codec``, ``org.apache.shiro.jndi``, ``org.apache.shiro.mgt``, ``org.apache.sshd.client.session``, ``org.apache.tools.ant``, ``org.apache.tools.zip``, ``org.codehaus.cargo.container.installer``, ``org.dom4j``, ``org.exolab.castor.xml``, ``org.fusesource.leveldbjni``, ``org.geogebra.web.full.main``, ``org.gradle.api.file``, ``org.ho.yaml``, ``org.influxdb``, ``org.jabsorb``, ``org.jboss.vfs``, ``org.jdbi.v3.core``, ``org.jenkins.ui.icon``, ``org.jenkins.ui.symbol``, ``org.keycloak.models.map.storage``, ``org.kohsuke.stapler``, ``org.lastaflute.web``, ``org.mvel2``, ``org.openjdk.jmh.runner.options``, ``org.owasp.esapi``, ``org.pac4j.jwt.config.encryption``, ``org.pac4j.jwt.config.signature``, ``org.scijava.log``, ``org.xml.sax``, ``org.xmlpull.v1``, ``play.libs.ws``, ``play.mvc``, ``ratpack.core.form``, ``ratpack.core.handling``, ``ratpack.core.http``, ``ratpack.exec``, ``ratpack.form``, ``ratpack.func``, ``ratpack.handling``, ``ratpack.http``, ``ratpack.util``, ``software.amazon.awssdk.transfer.s3.model``, ``sun.jvmstat.perfdata.monitor.protocol.local``, ``sun.jvmstat.perfdata.monitor.protocol.rmi``, ``sun.misc``, ``sun.net.ftp``, ``sun.net.www.protocol.http``, ``sun.security.acl``, ``sun.security.jgss.krb5``, ``sun.security.krb5``, ``sun.security.pkcs``, ``sun.security.pkcs11``, ``sun.security.provider``, ``sun.security.ssl``, ``sun.security.x509``, ``sun.tools.jconsole``",108,6034,757,131,6,14,18,,185 - Totals,,363,26381,2681,404,16,134,33,1,409 + Totals,,363,26381,2684,404,16,137,33,1,409 diff --git a/java/documentation/library-coverage/cwe-sink.csv b/java/documentation/library-coverage/cwe-sink.csv index 16fff1e653bc..c673888f683b 100644 --- a/java/documentation/library-coverage/cwe-sink.csv +++ b/java/documentation/library-coverage/cwe-sink.csv @@ -1,6 +1,6 @@ CWE,Sink identifier,Label CWE‑089,sql-injection,SQL injection -CWE‑022,path-injection,Path injection +CWE‑022,path-injection path-injection[read],Path injection CWE‑094,bean-validation,Code injection CWE‑918,request-forgery,Request Forgery CWE‑079,html-injection js-injection,Cross-site scripting diff --git a/java/ql/lib/CHANGELOG.md b/java/ql/lib/CHANGELOG.md index caa1eaecb948..a6c0cfc278ad 100644 --- a/java/ql/lib/CHANGELOG.md +++ b/java/ql/lib/CHANGELOG.md @@ -1,3 +1,30 @@ +## 9.1.1 + +### Minor Analysis Improvements + +* Introduced a new sink kind `path-injection[read]` for Models-as-Data rows that only read from a path (such as `ClassLoader.getResource`, `FileInputStream`, `FileReader`, `Files.readAllBytes`, and related APIs). The general `java/path-injection` query continues to consider both `path-injection` and `path-injection[read]` sinks. + +## 9.1.0 + +### New Features + +* Data flow barriers and barrier guards can now be added using data extensions. For more information see [Customizing library models for Java and Kotlin](https://codeql.github.com/docs/codeql-language-guides/customizing-library-models-for-java-and-kotlin/). + +### Minor Analysis Improvements + +* Added `sql-injection` sink models for the Hibernate `org.hibernate.query.QueryProducer` methods `createNativeMutationQuery`, `createMutationQuery`, and `createSelectionQuery`. +* The `java/partial-path-traversal` and `java/partial-path-traversal-from-remote` queries now correctly recognize file separator appends using `+=`. +* The `java/path-injection` and `java/zipslip` queries now recognize `Path.toRealPath()` as a path normalization sanitizer, consistent with the existing treatment of `Path.normalize()` and `File.getCanonicalPath()`. This reduces false positives for code that uses the NIO.2 API for path canonicalization. +* The `java/sensitive-log` query now excludes additional common variable naming patterns that do not hold sensitive data, reducing false positives. This includes pagination/iteration tokens (`nextToken`, `pageToken`, `continuationToken`), token metadata (`tokenType`, `tokenEndpoint`, `tokenCount`), and secret metadata (`secretName`, `secretId`, `secretVersion`). +* The `java/sensitive-log` query now treats method calls whose names contain "encrypt", "hash", or "digest" as sanitizers, consistent with the existing treatment in `java/cleartext-storage-in-log`. This reduces false positives when sensitive data is hashed or encrypted before logging. +* The `java/trust-boundary-violation` query now recognizes regular expression checks (including `String.matches()` guards and `@javax.validation.constraints.Pattern` annotations) as sanitizers, consistent with the existing treatment of ESAPI validators. This reduces false positives when input is validated against a pattern before being stored in a session. + +## 9.0.4 + +### Minor Analysis Improvements + +* The queries "Resolving XML external entity in user-controlled data" (`java/xxe`) and "Resolving XML external entity in user-controlled data from local source" (`java/xxe-local`) now recognize sinks in the Woodstox StAX library when `com.ctc.wstx.stax.WstxInputFactory` or `org.codehaus.stax2.XMLInputFactory2` are used directly. + ## 9.0.3 ### Minor Analysis Improvements diff --git a/java/ql/lib/change-notes/released/9.0.4.md b/java/ql/lib/change-notes/released/9.0.4.md new file mode 100644 index 000000000000..a54996349514 --- /dev/null +++ b/java/ql/lib/change-notes/released/9.0.4.md @@ -0,0 +1,5 @@ +## 9.0.4 + +### Minor Analysis Improvements + +* The queries "Resolving XML external entity in user-controlled data" (`java/xxe`) and "Resolving XML external entity in user-controlled data from local source" (`java/xxe-local`) now recognize sinks in the Woodstox StAX library when `com.ctc.wstx.stax.WstxInputFactory` or `org.codehaus.stax2.XMLInputFactory2` are used directly. diff --git a/java/ql/lib/change-notes/released/9.1.0.md b/java/ql/lib/change-notes/released/9.1.0.md new file mode 100644 index 000000000000..aed1a85e63f4 --- /dev/null +++ b/java/ql/lib/change-notes/released/9.1.0.md @@ -0,0 +1,14 @@ +## 9.1.0 + +### New Features + +* Data flow barriers and barrier guards can now be added using data extensions. For more information see [Customizing library models for Java and Kotlin](https://codeql.github.com/docs/codeql-language-guides/customizing-library-models-for-java-and-kotlin/). + +### Minor Analysis Improvements + +* Added `sql-injection` sink models for the Hibernate `org.hibernate.query.QueryProducer` methods `createNativeMutationQuery`, `createMutationQuery`, and `createSelectionQuery`. +* The `java/partial-path-traversal` and `java/partial-path-traversal-from-remote` queries now correctly recognize file separator appends using `+=`. +* The `java/path-injection` and `java/zipslip` queries now recognize `Path.toRealPath()` as a path normalization sanitizer, consistent with the existing treatment of `Path.normalize()` and `File.getCanonicalPath()`. This reduces false positives for code that uses the NIO.2 API for path canonicalization. +* The `java/sensitive-log` query now excludes additional common variable naming patterns that do not hold sensitive data, reducing false positives. This includes pagination/iteration tokens (`nextToken`, `pageToken`, `continuationToken`), token metadata (`tokenType`, `tokenEndpoint`, `tokenCount`), and secret metadata (`secretName`, `secretId`, `secretVersion`). +* The `java/sensitive-log` query now treats method calls whose names contain "encrypt", "hash", or "digest" as sanitizers, consistent with the existing treatment in `java/cleartext-storage-in-log`. This reduces false positives when sensitive data is hashed or encrypted before logging. +* The `java/trust-boundary-violation` query now recognizes regular expression checks (including `String.matches()` guards and `@javax.validation.constraints.Pattern` annotations) as sanitizers, consistent with the existing treatment of ESAPI validators. This reduces false positives when input is validated against a pattern before being stored in a session. diff --git a/java/ql/lib/change-notes/released/9.1.1.md b/java/ql/lib/change-notes/released/9.1.1.md new file mode 100644 index 000000000000..e4681c58644d --- /dev/null +++ b/java/ql/lib/change-notes/released/9.1.1.md @@ -0,0 +1,5 @@ +## 9.1.1 + +### Minor Analysis Improvements + +* Introduced a new sink kind `path-injection[read]` for Models-as-Data rows that only read from a path (such as `ClassLoader.getResource`, `FileInputStream`, `FileReader`, `Files.readAllBytes`, and related APIs). The general `java/path-injection` query continues to consider both `path-injection` and `path-injection[read]` sinks. diff --git a/java/ql/lib/codeql-pack.release.yml b/java/ql/lib/codeql-pack.release.yml index 175658aaf53d..02e630d33846 100644 --- a/java/ql/lib/codeql-pack.release.yml +++ b/java/ql/lib/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 9.0.3 +lastReleaseVersion: 9.1.1 diff --git a/java/ql/lib/ext/com.google.common.io.model.yml b/java/ql/lib/ext/com.google.common.io.model.yml index 8ce06de61b96..a8d2690bf00b 100644 --- a/java/ql/lib/ext/com.google.common.io.model.yml +++ b/java/ql/lib/ext/com.google.common.io.model.yml @@ -5,12 +5,12 @@ extensions: data: - ["com.google.common.io", "Files", False, "asByteSink", "(File,FileWriteMode[])", "", "Argument[0]", "path-injection", "ai-manual"] - ["com.google.common.io", "Files", False, "asCharSink", "(File,Charset,FileWriteMode[])", "", "Argument[0]", "path-injection", "ai-manual"] - - ["com.google.common.io", "Files", False, "asCharSource", "(File,Charset)", "", "Argument[0]", "path-injection", "ai-manual"] - - ["com.google.common.io", "Files", False, "copy", "(File,OutputStream)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["com.google.common.io", "Files", False, "asCharSource", "(File,Charset)", "", "Argument[0]", "path-injection[read]", "ai-manual"] + - ["com.google.common.io", "Files", False, "copy", "(File,OutputStream)", "", "Argument[0]", "path-injection[read]", "ai-manual"] - ["com.google.common.io", "Files", False, "newWriter", "(File,Charset)", "", "Argument[0]", "path-injection", "ai-manual"] - - ["com.google.common.io", "Files", False, "readLines", "(File,Charset)", "", "Argument[0]", "path-injection", "ai-manual"] - - ["com.google.common.io", "Files", False, "toByteArray", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] - - ["com.google.common.io", "Files", False, "toString", "(File,Charset)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["com.google.common.io", "Files", False, "readLines", "(File,Charset)", "", "Argument[0]", "path-injection[read]", "ai-manual"] + - ["com.google.common.io", "Files", False, "toByteArray", "(File)", "", "Argument[0]", "path-injection[read]", "ai-manual"] + - ["com.google.common.io", "Files", False, "toString", "(File,Charset)", "", "Argument[0]", "path-injection[read]", "ai-manual"] - ["com.google.common.io", "Files", False, "write", "(byte[],File)", "", "Argument[0]", "file-content-store", "ai-manual"] - ["com.google.common.io", "Files", False, "write", "(byte[],File)", "", "Argument[1]", "path-injection", "manual"] - addsTo: diff --git a/java/ql/lib/ext/com.thoughtworks.xstream.model.yml b/java/ql/lib/ext/com.thoughtworks.xstream.model.yml index c34bb91d42c9..62e17590ebfd 100644 --- a/java/ql/lib/ext/com.thoughtworks.xstream.model.yml +++ b/java/ql/lib/ext/com.thoughtworks.xstream.model.yml @@ -3,4 +3,4 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["com.thoughtworks.xstream", "XStream", True, "fromXML", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["com.thoughtworks.xstream", "XStream", True, "fromXML", "(File)", "", "Argument[0]", "path-injection[read]", "ai-manual"] diff --git a/java/ql/lib/ext/generated/java.applet.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.applet.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.applet.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.applet.model.yml diff --git a/java/ql/lib/ext/generated/java.beans.beancontext.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.beans.beancontext.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.beans.beancontext.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.beans.beancontext.model.yml diff --git a/java/ql/lib/ext/generated/java.beans.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.beans.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.beans.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.beans.model.yml diff --git a/java/ql/lib/ext/generated/java.io.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.io.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.io.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.io.model.yml diff --git a/java/ql/lib/ext/generated/java.lang.annotation.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.lang.annotation.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.lang.annotation.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.lang.annotation.model.yml diff --git a/java/ql/lib/ext/generated/java.lang.constant.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.lang.constant.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.lang.constant.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.lang.constant.model.yml diff --git a/java/ql/lib/ext/generated/java.lang.instrument.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.lang.instrument.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.lang.instrument.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.lang.instrument.model.yml diff --git a/java/ql/lib/ext/generated/java.lang.invoke.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.lang.invoke.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.lang.invoke.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.lang.invoke.model.yml diff --git a/java/ql/lib/ext/generated/java.lang.management.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.lang.management.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.lang.management.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.lang.management.model.yml diff --git a/java/ql/lib/ext/generated/java.lang.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.lang.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.lang.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.lang.model.yml diff --git a/java/ql/lib/ext/generated/java.lang.module.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.lang.module.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.lang.module.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.lang.module.model.yml diff --git a/java/ql/lib/ext/generated/java.lang.ref.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.lang.ref.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.lang.ref.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.lang.ref.model.yml diff --git a/java/ql/lib/ext/generated/java.lang.reflect.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.lang.reflect.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.lang.reflect.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.lang.reflect.model.yml diff --git a/java/ql/lib/ext/generated/java.lang.runtime.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.lang.runtime.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.lang.runtime.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.lang.runtime.model.yml diff --git a/java/ql/lib/ext/generated/java.math.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.math.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.math.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.math.model.yml diff --git a/java/ql/lib/ext/generated/java.net.http.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.net.http.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.net.http.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.net.http.model.yml diff --git a/java/ql/lib/ext/generated/java.net.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.net.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.net.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.net.model.yml diff --git a/java/ql/lib/ext/generated/java.nio.channels.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.nio.channels.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.nio.channels.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.nio.channels.model.yml diff --git a/java/ql/lib/ext/generated/java.nio.channels.spi.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.nio.channels.spi.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.nio.channels.spi.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.nio.channels.spi.model.yml diff --git a/java/ql/lib/ext/generated/java.nio.charset.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.nio.charset.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.nio.charset.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.nio.charset.model.yml diff --git a/java/ql/lib/ext/generated/java.nio.charset.spi.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.nio.charset.spi.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.nio.charset.spi.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.nio.charset.spi.model.yml diff --git a/java/ql/lib/ext/generated/java.nio.file.attribute.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.nio.file.attribute.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.nio.file.attribute.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.nio.file.attribute.model.yml diff --git a/java/ql/lib/ext/generated/java.nio.file.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.nio.file.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.nio.file.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.nio.file.model.yml diff --git a/java/ql/lib/ext/generated/java.nio.file.spi.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.nio.file.spi.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.nio.file.spi.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.nio.file.spi.model.yml diff --git a/java/ql/lib/ext/generated/java.nio.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.nio.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.nio.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.nio.model.yml diff --git a/java/ql/lib/ext/generated/java.rmi.dgc.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.rmi.dgc.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.rmi.dgc.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.rmi.dgc.model.yml diff --git a/java/ql/lib/ext/generated/java.rmi.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.rmi.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.rmi.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.rmi.model.yml diff --git a/java/ql/lib/ext/generated/java.rmi.registry.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.rmi.registry.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.rmi.registry.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.rmi.registry.model.yml diff --git a/java/ql/lib/ext/generated/java.rmi.server.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.rmi.server.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.rmi.server.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.rmi.server.model.yml diff --git a/java/ql/lib/ext/generated/java.security.cert.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.security.cert.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.security.cert.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.security.cert.model.yml diff --git a/java/ql/lib/ext/generated/java.security.interfaces.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.security.interfaces.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.security.interfaces.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.security.interfaces.model.yml diff --git a/java/ql/lib/ext/generated/java.security.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.security.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.security.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.security.model.yml diff --git a/java/ql/lib/ext/generated/java.security.spec.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.security.spec.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.security.spec.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.security.spec.model.yml diff --git a/java/ql/lib/ext/generated/java.sql.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.sql.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.sql.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.sql.model.yml diff --git a/java/ql/lib/ext/generated/java.text.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.text.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.text.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.text.model.yml diff --git a/java/ql/lib/ext/generated/java.text.spi.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.text.spi.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.text.spi.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.text.spi.model.yml diff --git a/java/ql/lib/ext/generated/java.time.chrono.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.time.chrono.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.time.chrono.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.time.chrono.model.yml diff --git a/java/ql/lib/ext/generated/java.time.format.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.time.format.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.time.format.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.time.format.model.yml diff --git a/java/ql/lib/ext/generated/java.time.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.time.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.time.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.time.model.yml diff --git a/java/ql/lib/ext/generated/java.time.temporal.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.time.temporal.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.time.temporal.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.time.temporal.model.yml diff --git a/java/ql/lib/ext/generated/java.time.zone.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.time.zone.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.time.zone.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.time.zone.model.yml diff --git a/java/ql/lib/ext/generated/java.util.concurrent.atomic.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.util.concurrent.atomic.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.util.concurrent.atomic.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.util.concurrent.atomic.model.yml diff --git a/java/ql/lib/ext/generated/java.util.concurrent.locks.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.util.concurrent.locks.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.util.concurrent.locks.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.util.concurrent.locks.model.yml diff --git a/java/ql/lib/ext/generated/java.util.concurrent.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.util.concurrent.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.util.concurrent.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.util.concurrent.model.yml diff --git a/java/ql/lib/ext/generated/java.util.function.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.util.function.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.util.function.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.util.function.model.yml diff --git a/java/ql/lib/ext/generated/java.util.jar.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.util.jar.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.util.jar.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.util.jar.model.yml diff --git a/java/ql/lib/ext/generated/java.util.logging.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.util.logging.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.util.logging.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.util.logging.model.yml diff --git a/java/ql/lib/ext/generated/java.util.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.util.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.util.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.util.model.yml diff --git a/java/ql/lib/ext/generated/java.util.prefs.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.util.prefs.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.util.prefs.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.util.prefs.model.yml diff --git a/java/ql/lib/ext/generated/java.util.random.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.util.random.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.util.random.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.util.random.model.yml diff --git a/java/ql/lib/ext/generated/java.util.regex.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.util.regex.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.util.regex.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.util.regex.model.yml diff --git a/java/ql/lib/ext/generated/java.util.spi.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.util.spi.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.util.spi.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.util.spi.model.yml diff --git a/java/ql/lib/ext/generated/java.util.stream.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.util.stream.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.util.stream.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.util.stream.model.yml diff --git a/java/ql/lib/ext/generated/java.util.zip.model.yml b/java/ql/lib/ext/generated/modelgenerator/java.util.zip.model.yml similarity index 100% rename from java/ql/lib/ext/generated/java.util.zip.model.yml rename to java/ql/lib/ext/generated/modelgenerator/java.util.zip.model.yml diff --git a/java/ql/lib/ext/generated/javax.accessibility.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.accessibility.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.accessibility.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.accessibility.model.yml diff --git a/java/ql/lib/ext/generated/javax.annotation.processing.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.annotation.processing.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.annotation.processing.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.annotation.processing.model.yml diff --git a/java/ql/lib/ext/generated/javax.crypto.interfaces.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.crypto.interfaces.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.crypto.interfaces.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.crypto.interfaces.model.yml diff --git a/java/ql/lib/ext/generated/javax.crypto.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.crypto.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.crypto.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.crypto.model.yml diff --git a/java/ql/lib/ext/generated/javax.crypto.spec.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.crypto.spec.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.crypto.spec.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.crypto.spec.model.yml diff --git a/java/ql/lib/ext/generated/javax.imageio.metadata.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.imageio.metadata.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.imageio.metadata.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.imageio.metadata.model.yml diff --git a/java/ql/lib/ext/generated/javax.imageio.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.imageio.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.imageio.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.imageio.model.yml diff --git a/java/ql/lib/ext/generated/javax.imageio.plugins.bmp.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.imageio.plugins.bmp.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.imageio.plugins.bmp.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.imageio.plugins.bmp.model.yml diff --git a/java/ql/lib/ext/generated/javax.imageio.plugins.jpeg.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.imageio.plugins.jpeg.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.imageio.plugins.jpeg.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.imageio.plugins.jpeg.model.yml diff --git a/java/ql/lib/ext/generated/javax.imageio.plugins.tiff.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.imageio.plugins.tiff.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.imageio.plugins.tiff.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.imageio.plugins.tiff.model.yml diff --git a/java/ql/lib/ext/generated/javax.imageio.spi.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.imageio.spi.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.imageio.spi.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.imageio.spi.model.yml diff --git a/java/ql/lib/ext/generated/javax.imageio.stream.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.imageio.stream.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.imageio.stream.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.imageio.stream.model.yml diff --git a/java/ql/lib/ext/generated/javax.lang.model.element.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.lang.model.element.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.lang.model.element.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.lang.model.element.model.yml diff --git a/java/ql/lib/ext/generated/javax.lang.model.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.lang.model.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.lang.model.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.lang.model.model.yml diff --git a/java/ql/lib/ext/generated/javax.lang.model.type.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.lang.model.type.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.lang.model.type.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.lang.model.type.model.yml diff --git a/java/ql/lib/ext/generated/javax.lang.model.util.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.lang.model.util.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.lang.model.util.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.lang.model.util.model.yml diff --git a/java/ql/lib/ext/generated/javax.management.loading.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.management.loading.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.management.loading.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.management.loading.model.yml diff --git a/java/ql/lib/ext/generated/javax.management.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.management.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.management.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.management.model.yml diff --git a/java/ql/lib/ext/generated/javax.management.modelmbean.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.management.modelmbean.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.management.modelmbean.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.management.modelmbean.model.yml diff --git a/java/ql/lib/ext/generated/javax.management.monitor.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.management.monitor.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.management.monitor.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.management.monitor.model.yml diff --git a/java/ql/lib/ext/generated/javax.management.openmbean.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.management.openmbean.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.management.openmbean.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.management.openmbean.model.yml diff --git a/java/ql/lib/ext/generated/javax.management.relation.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.management.relation.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.management.relation.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.management.relation.model.yml diff --git a/java/ql/lib/ext/generated/javax.management.remote.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.management.remote.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.management.remote.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.management.remote.model.yml diff --git a/java/ql/lib/ext/generated/javax.management.remote.rmi.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.management.remote.rmi.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.management.remote.rmi.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.management.remote.rmi.model.yml diff --git a/java/ql/lib/ext/generated/javax.management.timer.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.management.timer.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.management.timer.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.management.timer.model.yml diff --git a/java/ql/lib/ext/generated/javax.naming.directory.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.naming.directory.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.naming.directory.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.naming.directory.model.yml diff --git a/java/ql/lib/ext/generated/javax.naming.event.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.naming.event.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.naming.event.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.naming.event.model.yml diff --git a/java/ql/lib/ext/generated/javax.naming.ldap.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.naming.ldap.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.naming.ldap.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.naming.ldap.model.yml diff --git a/java/ql/lib/ext/generated/javax.naming.ldap.spi.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.naming.ldap.spi.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.naming.ldap.spi.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.naming.ldap.spi.model.yml diff --git a/java/ql/lib/ext/generated/javax.naming.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.naming.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.naming.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.naming.model.yml diff --git a/java/ql/lib/ext/generated/javax.naming.spi.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.naming.spi.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.naming.spi.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.naming.spi.model.yml diff --git a/java/ql/lib/ext/generated/javax.net.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.net.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.net.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.net.model.yml diff --git a/java/ql/lib/ext/generated/javax.net.ssl.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.net.ssl.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.net.ssl.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.net.ssl.model.yml diff --git a/java/ql/lib/ext/generated/javax.print.attribute.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.print.attribute.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.print.attribute.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.print.attribute.model.yml diff --git a/java/ql/lib/ext/generated/javax.print.attribute.standard.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.print.attribute.standard.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.print.attribute.standard.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.print.attribute.standard.model.yml diff --git a/java/ql/lib/ext/generated/javax.print.event.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.print.event.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.print.event.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.print.event.model.yml diff --git a/java/ql/lib/ext/generated/javax.print.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.print.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.print.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.print.model.yml diff --git a/java/ql/lib/ext/generated/javax.rmi.ssl.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.rmi.ssl.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.rmi.ssl.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.rmi.ssl.model.yml diff --git a/java/ql/lib/ext/generated/javax.script.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.script.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.script.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.script.model.yml diff --git a/java/ql/lib/ext/generated/javax.security.auth.callback.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.security.auth.callback.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.security.auth.callback.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.security.auth.callback.model.yml diff --git a/java/ql/lib/ext/generated/javax.security.auth.kerberos.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.security.auth.kerberos.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.security.auth.kerberos.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.security.auth.kerberos.model.yml diff --git a/java/ql/lib/ext/generated/javax.security.auth.login.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.security.auth.login.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.security.auth.login.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.security.auth.login.model.yml diff --git a/java/ql/lib/ext/generated/javax.security.auth.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.security.auth.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.security.auth.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.security.auth.model.yml diff --git a/java/ql/lib/ext/generated/javax.security.auth.spi.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.security.auth.spi.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.security.auth.spi.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.security.auth.spi.model.yml diff --git a/java/ql/lib/ext/generated/javax.security.auth.x500.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.security.auth.x500.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.security.auth.x500.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.security.auth.x500.model.yml diff --git a/java/ql/lib/ext/generated/javax.security.cert.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.security.cert.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.security.cert.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.security.cert.model.yml diff --git a/java/ql/lib/ext/generated/javax.security.sasl.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.security.sasl.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.security.sasl.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.security.sasl.model.yml diff --git a/java/ql/lib/ext/generated/javax.smartcardio.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.smartcardio.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.smartcardio.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.smartcardio.model.yml diff --git a/java/ql/lib/ext/generated/javax.sound.midi.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.sound.midi.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.sound.midi.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.sound.midi.model.yml diff --git a/java/ql/lib/ext/generated/javax.sound.midi.spi.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.sound.midi.spi.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.sound.midi.spi.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.sound.midi.spi.model.yml diff --git a/java/ql/lib/ext/generated/javax.sound.sampled.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.sound.sampled.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.sound.sampled.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.sound.sampled.model.yml diff --git a/java/ql/lib/ext/generated/javax.sound.sampled.spi.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.sound.sampled.spi.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.sound.sampled.spi.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.sound.sampled.spi.model.yml diff --git a/java/ql/lib/ext/generated/javax.sql.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.sql.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.sql.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.sql.model.yml diff --git a/java/ql/lib/ext/generated/javax.sql.rowset.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.sql.rowset.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.sql.rowset.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.sql.rowset.model.yml diff --git a/java/ql/lib/ext/generated/javax.sql.rowset.serial.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.sql.rowset.serial.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.sql.rowset.serial.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.sql.rowset.serial.model.yml diff --git a/java/ql/lib/ext/generated/javax.sql.rowset.spi.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.sql.rowset.spi.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.sql.rowset.spi.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.sql.rowset.spi.model.yml diff --git a/java/ql/lib/ext/generated/javax.tools.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.tools.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.tools.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.tools.model.yml diff --git a/java/ql/lib/ext/generated/javax.transaction.xa.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.transaction.xa.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.transaction.xa.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.transaction.xa.model.yml diff --git a/java/ql/lib/ext/generated/javax.xml.catalog.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.xml.catalog.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.xml.catalog.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.xml.catalog.model.yml diff --git a/java/ql/lib/ext/generated/javax.xml.crypto.dom.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.xml.crypto.dom.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.xml.crypto.dom.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.xml.crypto.dom.model.yml diff --git a/java/ql/lib/ext/generated/javax.xml.crypto.dsig.dom.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.xml.crypto.dsig.dom.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.xml.crypto.dsig.dom.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.xml.crypto.dsig.dom.model.yml diff --git a/java/ql/lib/ext/generated/javax.xml.crypto.dsig.keyinfo.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.xml.crypto.dsig.keyinfo.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.xml.crypto.dsig.keyinfo.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.xml.crypto.dsig.keyinfo.model.yml diff --git a/java/ql/lib/ext/generated/javax.xml.crypto.dsig.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.xml.crypto.dsig.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.xml.crypto.dsig.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.xml.crypto.dsig.model.yml diff --git a/java/ql/lib/ext/generated/javax.xml.crypto.dsig.spec.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.xml.crypto.dsig.spec.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.xml.crypto.dsig.spec.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.xml.crypto.dsig.spec.model.yml diff --git a/java/ql/lib/ext/generated/javax.xml.crypto.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.xml.crypto.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.xml.crypto.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.xml.crypto.model.yml diff --git a/java/ql/lib/ext/generated/javax.xml.datatype.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.xml.datatype.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.xml.datatype.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.xml.datatype.model.yml diff --git a/java/ql/lib/ext/generated/javax.xml.namespace.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.xml.namespace.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.xml.namespace.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.xml.namespace.model.yml diff --git a/java/ql/lib/ext/generated/javax.xml.parsers.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.xml.parsers.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.xml.parsers.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.xml.parsers.model.yml diff --git a/java/ql/lib/ext/generated/javax.xml.stream.events.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.xml.stream.events.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.xml.stream.events.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.xml.stream.events.model.yml diff --git a/java/ql/lib/ext/generated/javax.xml.stream.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.xml.stream.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.xml.stream.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.xml.stream.model.yml diff --git a/java/ql/lib/ext/generated/javax.xml.stream.util.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.xml.stream.util.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.xml.stream.util.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.xml.stream.util.model.yml diff --git a/java/ql/lib/ext/generated/javax.xml.transform.dom.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.xml.transform.dom.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.xml.transform.dom.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.xml.transform.dom.model.yml diff --git a/java/ql/lib/ext/generated/javax.xml.transform.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.xml.transform.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.xml.transform.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.xml.transform.model.yml diff --git a/java/ql/lib/ext/generated/javax.xml.transform.sax.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.xml.transform.sax.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.xml.transform.sax.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.xml.transform.sax.model.yml diff --git a/java/ql/lib/ext/generated/javax.xml.transform.stax.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.xml.transform.stax.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.xml.transform.stax.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.xml.transform.stax.model.yml diff --git a/java/ql/lib/ext/generated/javax.xml.transform.stream.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.xml.transform.stream.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.xml.transform.stream.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.xml.transform.stream.model.yml diff --git a/java/ql/lib/ext/generated/javax.xml.validation.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.xml.validation.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.xml.validation.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.xml.validation.model.yml diff --git a/java/ql/lib/ext/generated/javax.xml.xpath.model.yml b/java/ql/lib/ext/generated/modelgenerator/javax.xml.xpath.model.yml similarity index 100% rename from java/ql/lib/ext/generated/javax.xml.xpath.model.yml rename to java/ql/lib/ext/generated/modelgenerator/javax.xml.xpath.model.yml diff --git a/java/ql/lib/ext/generated/jenkins-json-lib.model.yml b/java/ql/lib/ext/generated/modelgenerator/jenkins-json-lib.model.yml similarity index 100% rename from java/ql/lib/ext/generated/jenkins-json-lib.model.yml rename to java/ql/lib/ext/generated/modelgenerator/jenkins-json-lib.model.yml diff --git a/java/ql/lib/ext/generated/jenkins.model.yml b/java/ql/lib/ext/generated/modelgenerator/jenkins.model.yml similarity index 100% rename from java/ql/lib/ext/generated/jenkins.model.yml rename to java/ql/lib/ext/generated/modelgenerator/jenkins.model.yml diff --git a/java/ql/lib/ext/generated/kotlinstdlib.model.yml b/java/ql/lib/ext/generated/modelgenerator/kotlinstdlib.model.yml similarity index 100% rename from java/ql/lib/ext/generated/kotlinstdlib.model.yml rename to java/ql/lib/ext/generated/modelgenerator/kotlinstdlib.model.yml diff --git a/java/ql/lib/ext/generated/org.apache.commons.io.model.yml b/java/ql/lib/ext/generated/modelgenerator/org.apache.commons.io.model.yml similarity index 100% rename from java/ql/lib/ext/generated/org.apache.commons.io.model.yml rename to java/ql/lib/ext/generated/modelgenerator/org.apache.commons.io.model.yml diff --git a/java/ql/lib/ext/generated/org.apache.commons.lang.model.yml b/java/ql/lib/ext/generated/modelgenerator/org.apache.commons.lang.model.yml similarity index 100% rename from java/ql/lib/ext/generated/org.apache.commons.lang.model.yml rename to java/ql/lib/ext/generated/modelgenerator/org.apache.commons.lang.model.yml diff --git a/java/ql/lib/ext/generated/stapler.model.yml b/java/ql/lib/ext/generated/modelgenerator/stapler.model.yml similarity index 100% rename from java/ql/lib/ext/generated/stapler.model.yml rename to java/ql/lib/ext/generated/modelgenerator/stapler.model.yml diff --git a/java/ql/lib/ext/generated/struts2.model.yml b/java/ql/lib/ext/generated/modelgenerator/struts2.model.yml similarity index 100% rename from java/ql/lib/ext/generated/struts2.model.yml rename to java/ql/lib/ext/generated/modelgenerator/struts2.model.yml diff --git a/java/ql/lib/ext/hudson.model.model.yml b/java/ql/lib/ext/hudson.model.model.yml index 253f26fbd24e..b52f7195b2b2 100644 --- a/java/ql/lib/ext/hudson.model.model.yml +++ b/java/ql/lib/ext/hudson.model.model.yml @@ -5,8 +5,8 @@ extensions: data: - ["hudson.model", "DownloadService", True, "loadJSON", "(URL)", "", "Argument[0]", "request-forgery", "ai-manual"] - ["hudson.model", "DownloadService", True, "loadJSONHTML", "(URL)", "", "Argument[0]", "request-forgery", "ai-manual"] - - ["hudson.model", "DirectoryBrowserSupport", False, "DirectoryBrowserSupport", "(ModelObject,FilePath,String,String,boolean)", "", "Argument[1]", "path-injection", "ai-manual"] - - ["hudson.model", "Items", True, "load", "(ItemGroup,File)", "", "Argument[1]", "path-injection", "ai-manual"] + - ["hudson.model", "DirectoryBrowserSupport", False, "DirectoryBrowserSupport", "(ModelObject,FilePath,String,String,boolean)", "", "Argument[1]", "path-injection[read]", "ai-manual"] + - ["hudson.model", "Items", True, "load", "(ItemGroup,File)", "", "Argument[1]", "path-injection[read]", "ai-manual"] - ["hudson.model", "UpdateCenter$UpdateCenterConfiguration", True, "download", "(UpdateCenter$DownloadJob,URL)", "", "Argument[1]", "request-forgery", "ai-manual"] - ["hudson.model", "UpdateCenter$UpdateCenterConfiguration", True, "install", "(UpdateCenter$DownloadJob,File,File)", "", "Argument[1]", "path-injection", "ai-manual"] - ["hudson.model", "UpdateCenter$UpdateCenterConfiguration", True, "install", "(UpdateCenter$DownloadJob,File,File)", "", "Argument[2]", "path-injection", "ai-manual"] diff --git a/java/ql/lib/ext/hudson.model.yml b/java/ql/lib/ext/hudson.model.yml index 0dfff091fcd4..da2753c86bdd 100644 --- a/java/ql/lib/ext/hudson.model.yml +++ b/java/ql/lib/ext/hudson.model.yml @@ -6,14 +6,14 @@ extensions: - ["hudson", "FilePath", False, "tar", "(OutputStream,String)", "", "Argument[0]", "path-injection", "ai-manual"] - ["hudson", "FilePath", False, "unzipFrom", "(InputStream)", "", "Argument[0]", "path-injection", "ai-manual"] - ["hudson", "FilePath", True, "copyFrom", "", "", "Argument[this]", "path-injection", "manual"] - - ["hudson", "FilePath", True, "copyFrom", "(FilePath)", "", "Argument[0]", "path-injection", "manual"] - - ["hudson", "FilePath", True, "copyFrom", "(URL)", "", "Argument[0]", "path-injection", "manual"] - - ["hudson", "FilePath", True, "copyFrom", "(FileItem)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["hudson", "FilePath", True, "copyFrom", "(FilePath)", "", "Argument[0]", "path-injection[read]", "manual"] + - ["hudson", "FilePath", True, "copyFrom", "(URL)", "", "Argument[0]", "path-injection[read]", "manual"] + - ["hudson", "FilePath", True, "copyFrom", "(FileItem)", "", "Argument[0]", "path-injection[read]", "ai-manual"] - ["hudson", "FilePath", True, "copyRecursiveTo", "", "", "Argument[this]", "path-injection", "ai-manual"] - ["hudson", "FilePath", True, "copyRecursiveTo", "(DirScanner,FilePath,String,FilePath$TarCompression)", "", "Argument[1]", "path-injection", "ai-manual"] - ["hudson", "FilePath", True, "copyRecursiveTo", "(DirScanner,FilePath,String)", "", "Argument[1]", "path-injection", "ai-manual"] - ["hudson", "FilePath", True, "copyRecursiveTo", "(String,FilePath)", "", "Argument[1]", "path-injection", "ai-manual"] - - ["hudson", "FilePath", True, "copyRecursiveTo", "(String,String,FilePath)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["hudson", "FilePath", True, "copyRecursiveTo", "(String,String,FilePath)", "", "Argument[0]", "path-injection[read]", "ai-manual"] - ["hudson", "FilePath", True, "copyRecursiveTo", "(String,String,FilePath)", "", "Argument[2]", "path-injection", "ai-manual"] - ["hudson", "FilePath", True, "copyTo", "", "", "Argument[this]", "path-injection", "manual"] - ["hudson", "FilePath", True, "copyTo", "(FilePath)", "", "Argument[0]", "path-injection", "ai-manual"] @@ -21,7 +21,7 @@ extensions: - ["hudson", "FilePath", True, "copyToWithPermission", "(FilePath)", "", "Argument[0]", "path-injection", "manual"] - ["hudson", "FilePath", True, "exists", "()", "", "Argument[this]", "path-injection", "manual"] - ["hudson", "FilePath", True, "installIfNecessaryFrom", "(URL,TaskListener,String)", "", "Argument[0]", "request-forgery", "ai-manual"] - - ["hudson", "FilePath", True, "newInputStreamDenyingSymlinkAsNeeded", "(File,String,boolean)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["hudson", "FilePath", True, "newInputStreamDenyingSymlinkAsNeeded", "(File,String,boolean)", "", "Argument[0]", "path-injection[read]", "ai-manual"] - ["hudson", "FilePath", True, "openInputStream", "(File,OpenOption[])", "", "Argument[0]", "path-injection", "manual"] - ["hudson", "FilePath", True, "read", "", "", "Argument[this]", "path-injection", "manual"] - ["hudson", "FilePath", True, "read", "(FilePath,OpenOption[])", "", "Argument[0]", "path-injection", "manual"] diff --git a/java/ql/lib/ext/hudson.scm.model.yml b/java/ql/lib/ext/hudson.scm.model.yml index dc6e0bfa5bb8..a6cf1532b6b4 100644 --- a/java/ql/lib/ext/hudson.scm.model.yml +++ b/java/ql/lib/ext/hudson.scm.model.yml @@ -3,11 +3,11 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["hudson.scm", "ChangeLogParser", True, "parse", "(AbstractBuild,File)", "", "Argument[1]", "path-injection", "ai-manual"] - - ["hudson.scm", "ChangeLogParser", True, "parse", "(Run,RepositoryBrowser,File)", "", "Argument[2]", "path-injection", "ai-manual"] + - ["hudson.scm", "ChangeLogParser", True, "parse", "(AbstractBuild,File)", "", "Argument[1]", "path-injection[read]", "ai-manual"] + - ["hudson.scm", "ChangeLogParser", True, "parse", "(Run,RepositoryBrowser,File)", "", "Argument[2]", "path-injection[read]", "ai-manual"] - ["hudson.scm", "SCM", True, "checkout", "(AbstractBuild,Launcher,FilePath,BuildListener,File)", "", "Argument[2]", "path-injection", "ai-manual"] - ["hudson.scm", "SCM", True, "checkout", "(Run,Launcher,FilePath,TaskListener,File,SCMRevisionState)", "", "Argument[2]", "path-injection", "ai-manual"] - - ["hudson.scm", "SCM", True, "compareRemoteRevisionWith", "(Job,Launcher,FilePath,TaskListener,SCMRevisionState)", "", "Argument[2]", "path-injection", "ai-manual"] + - ["hudson.scm", "SCM", True, "compareRemoteRevisionWith", "(Job,Launcher,FilePath,TaskListener,SCMRevisionState)", "", "Argument[2]", "path-injection[read]", "ai-manual"] - addsTo: pack: codeql/java-all extensible: summaryModel diff --git a/java/ql/lib/ext/hudson.util.jna.model.yml b/java/ql/lib/ext/hudson.util.jna.model.yml index c840d0f47256..11efc9ace86b 100644 --- a/java/ql/lib/ext/hudson.util.jna.model.yml +++ b/java/ql/lib/ext/hudson.util.jna.model.yml @@ -3,6 +3,6 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["hudson.util.jna", "GNUCLibrary", True, "open", "(String,int)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["hudson.util.jna", "GNUCLibrary", True, "open", "(String,int)", "", "Argument[0]", "path-injection[read]", "ai-manual"] - ["hudson.util.jna", "Kernel32", True, "MoveFileExA", "(String,String,int)", "", "Argument[0]", "path-injection", "ai-manual"] - ["hudson.util.jna", "Kernel32", True, "MoveFileExA", "(String,String,int)", "", "Argument[1]", "path-injection", "ai-manual"] diff --git a/java/ql/lib/ext/hudson.util.model.yml b/java/ql/lib/ext/hudson.util.model.yml index 1ac3aa8c10ae..0fcf7b0cbfb9 100644 --- a/java/ql/lib/ext/hudson.util.model.yml +++ b/java/ql/lib/ext/hudson.util.model.yml @@ -6,7 +6,7 @@ extensions: - ["hudson.util", "AtomicFileWriter", True, "AtomicFileWriter", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] - ["hudson.util", "AtomicFileWriter", True, "AtomicFileWriter", "(Path,Charset,boolean,boolean)", "", "Argument[0]", "path-injection", "ai-manual"] - ["hudson.util", "AtomicFileWriter", True, "AtomicFileWriter", "(Path,Charset)", "", "Argument[0]", "path-injection", "ai-manual"] - - ["hudson.util", "ClasspathBuilder", True, "add", "(FilePath)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["hudson.util", "ClasspathBuilder", True, "add", "(FilePath)", "", "Argument[0]", "path-injection[read]", "ai-manual"] - ["hudson.util", "FormValidation", True, "errorWithMarkup", "", "", "Argument[0]", "html-injection", "manual"] - ["hudson.util", "FormValidation", True, "okWithMarkup", "", "", "Argument[0]", "html-injection", "manual"] - ["hudson.util", "FormValidation", True, "respond", "", "", "Argument[1]", "html-injection", "manual"] @@ -14,11 +14,11 @@ extensions: - ["hudson.util", "IOUtils", True, "mkdirs", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] - ["hudson.util", "StreamTaskListener", True, "StreamTaskListener", "(File,boolean,Charset)", "", "Argument[0]", "path-injection", "ai-manual"] - ["hudson.util", "TextFile", True, "delete", "()", "", "Argument[this]", "path-injection", "manual"] - - ["hudson.util", "TextFile", True, "fastTail", "", "", "Argument[this]", "path-injection", "manual"] - - ["hudson.util", "TextFile", True, "head", "", "", "Argument[this]", "path-injection", "manual"] - - ["hudson.util", "TextFile", True, "lines", "()", "", "Argument[this]", "path-injection", "manual"] - - ["hudson.util", "TextFile", True, "read", "()", "", "Argument[this]", "path-injection", "manual"] - - ["hudson.util", "TextFile", True, "readTrim", "()", "", "Argument[this]", "path-injection", "manual"] + - ["hudson.util", "TextFile", True, "fastTail", "", "", "Argument[this]", "path-injection[read]", "manual"] + - ["hudson.util", "TextFile", True, "head", "", "", "Argument[this]", "path-injection[read]", "manual"] + - ["hudson.util", "TextFile", True, "lines", "()", "", "Argument[this]", "path-injection[read]", "manual"] + - ["hudson.util", "TextFile", True, "read", "()", "", "Argument[this]", "path-injection[read]", "manual"] + - ["hudson.util", "TextFile", True, "readTrim", "()", "", "Argument[this]", "path-injection[read]", "manual"] - ["hudson.util", "TextFile", True, "write", "(String)", "", "Argument[this]", "path-injection", "manual"] - ["hudson.util", "TextFile", True, "write", "(String)", "", "Argument[0]", "file-content-store", "manual"] - ["hudson.util", "HttpResponses", True, "staticResource", "(File)", "", "Argument[0]", "path-injection", "manual"] diff --git a/java/ql/lib/ext/io.netty.handler.codec.http.multipart.model.yml b/java/ql/lib/ext/io.netty.handler.codec.http.multipart.model.yml index a44a2c6c4005..04f1c2ebc19d 100644 --- a/java/ql/lib/ext/io.netty.handler.codec.http.multipart.model.yml +++ b/java/ql/lib/ext/io.netty.handler.codec.http.multipart.model.yml @@ -3,7 +3,7 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["io.netty.handler.codec.http.multipart", "HttpPostRequestEncoder", True, "addBodyFileUpload", "(String,File,String,boolean)", "", "Argument[1]", "path-injection", "ai-manual"] + - ["io.netty.handler.codec.http.multipart", "HttpPostRequestEncoder", True, "addBodyFileUpload", "(String,File,String,boolean)", "", "Argument[1]", "path-injection[read]", "ai-manual"] - addsTo: pack: codeql/java-all extensible: summaryModel diff --git a/java/ql/lib/ext/io.netty.handler.ssl.model.yml b/java/ql/lib/ext/io.netty.handler.ssl.model.yml index f63a7a3906f9..2df3ddd6fbc2 100644 --- a/java/ql/lib/ext/io.netty.handler.ssl.model.yml +++ b/java/ql/lib/ext/io.netty.handler.ssl.model.yml @@ -3,7 +3,7 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["io.netty.handler.ssl", "OpenSslServerContext", False, "OpenSslServerContext", "(File,File)", "", "Argument[0]", "path-injection", "ai-manual"] - - ["io.netty.handler.ssl", "SslContextBuilder", False, "forServer", "(File,File)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["io.netty.handler.ssl", "OpenSslServerContext", False, "OpenSslServerContext", "(File,File)", "", "Argument[0]", "path-injection[read]", "ai-manual"] + - ["io.netty.handler.ssl", "SslContextBuilder", False, "forServer", "(File,File)", "", "Argument[0]", "path-injection[read]", "ai-manual"] - ["io.netty.handler.ssl", "SslContextBuilder", False, "trustManager", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] - ["io.netty.handler.ssl", "SslContextBuilder", False, "trustManager", "(InputStream)", "", "Argument[0]", "path-injection", "ai-manual"] diff --git a/java/ql/lib/ext/io.netty.handler.stream.model.yml b/java/ql/lib/ext/io.netty.handler.stream.model.yml index f4e635f4437e..1a154c59192c 100644 --- a/java/ql/lib/ext/io.netty.handler.stream.model.yml +++ b/java/ql/lib/ext/io.netty.handler.stream.model.yml @@ -3,4 +3,4 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["io.netty.handler.stream", "ChunkedFile", True, "ChunkedFile", "(RandomAccessFile,long,long,int)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["io.netty.handler.stream", "ChunkedFile", True, "ChunkedFile", "(RandomAccessFile,long,long,int)", "", "Argument[0]", "path-injection[read]", "ai-manual"] diff --git a/java/ql/lib/ext/java.io.model.yml b/java/ql/lib/ext/java.io.model.yml index 07e39c9e12f7..dd47342d590a 100644 --- a/java/ql/lib/ext/java.io.model.yml +++ b/java/ql/lib/ext/java.io.model.yml @@ -3,17 +3,17 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["java.io", "File", True, "canExecute", "()", "", "Argument[this]", "path-injection", "manual"] - - ["java.io", "File", True, "canRead", "()", "", "Argument[this]", "path-injection", "manual"] - - ["java.io", "File", True, "canWrite", "()", "", "Argument[this]", "path-injection", "manual"] + - ["java.io", "File", True, "canExecute", "()", "", "Argument[this]", "path-injection[read]", "manual"] + - ["java.io", "File", True, "canRead", "()", "", "Argument[this]", "path-injection[read]", "manual"] + - ["java.io", "File", True, "canWrite", "()", "", "Argument[this]", "path-injection[read]", "manual"] - ["java.io", "File", True, "createNewFile", "()", "", "Argument[this]", "path-injection", "ai-manual"] - ["java.io", "File", True, "createTempFile", "(String,String,File)", "", "Argument[2]", "path-injection", "ai-manual"] - ["java.io", "File", True, "delete", "()", "", "Argument[this]", "path-injection", "manual"] - ["java.io", "File", True, "deleteOnExit", "()", "", "Argument[this]", "path-injection", "manual"] - - ["java.io", "File", True, "exists", "()", "", "Argument[this]", "path-injection", "manual"] - - ["java.io", "File", True, "isDirectory", "()", "", "Argument[this]", "path-injection", "manual"] - - ["java.io", "File", True, "isFile", "()", "", "Argument[this]", "path-injection", "manual"] - - ["java.io", "File", True, "isHidden", "()", "", "Argument[this]", "path-injection", "manual"] + - ["java.io", "File", True, "exists", "()", "", "Argument[this]", "path-injection[read]", "manual"] + - ["java.io", "File", True, "isDirectory", "()", "", "Argument[this]", "path-injection[read]", "manual"] + - ["java.io", "File", True, "isFile", "()", "", "Argument[this]", "path-injection[read]", "manual"] + - ["java.io", "File", True, "isHidden", "()", "", "Argument[this]", "path-injection[read]", "manual"] - ["java.io", "File", True, "mkdir", "()", "", "Argument[this]", "path-injection", "manual"] - ["java.io", "File", True, "mkdirs", "()", "", "Argument[this]", "path-injection", "manual"] - ["java.io", "File", True, "renameTo", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] @@ -23,16 +23,16 @@ extensions: - ["java.io", "File", True, "setReadable", "", "", "Argument[this]", "path-injection", "manual"] - ["java.io", "File", True, "setReadOnly", "", "", "Argument[this]", "path-injection", "manual"] - ["java.io", "File", True, "setWritable", "", "", "Argument[this]", "path-injection", "manual"] - - ["java.io", "FileInputStream", True, "FileInputStream", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] - - ["java.io", "FileInputStream", True, "FileInputStream", "(FileDescriptor)", "", "Argument[0]", "path-injection", "manual"] - - ["java.io", "FileInputStream", True, "FileInputStream", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.io", "FileInputStream", True, "FileInputStream", "(File)", "", "Argument[0]", "path-injection[read]", "ai-manual"] + - ["java.io", "FileInputStream", True, "FileInputStream", "(FileDescriptor)", "", "Argument[0]", "path-injection[read]", "manual"] + - ["java.io", "FileInputStream", True, "FileInputStream", "(String)", "", "Argument[0]", "path-injection[read]", "ai-manual"] - ["java.io", "FileOutputStream", False, "FileOutputStream", "", "", "Argument[0]", "path-injection", "manual"] - ["java.io", "FileOutputStream", False, "write", "", "", "Argument[0]", "file-content-store", "manual"] - - ["java.io", "FileReader", True, "FileReader", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] - - ["java.io", "FileReader", True, "FileReader", "(FileDescriptor)", "", "Argument[0]", "path-injection", "manual"] - - ["java.io", "FileReader", True, "FileReader", "(File,Charset)", "", "Argument[0]", "path-injection", "manual"] - - ["java.io", "FileReader", True, "FileReader", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] - - ["java.io", "FileReader", True, "FileReader", "(String,Charset)", "", "Argument[0]", "path-injection", "manual"] + - ["java.io", "FileReader", True, "FileReader", "(File)", "", "Argument[0]", "path-injection[read]", "ai-manual"] + - ["java.io", "FileReader", True, "FileReader", "(FileDescriptor)", "", "Argument[0]", "path-injection[read]", "manual"] + - ["java.io", "FileReader", True, "FileReader", "(File,Charset)", "", "Argument[0]", "path-injection[read]", "manual"] + - ["java.io", "FileReader", True, "FileReader", "(String)", "", "Argument[0]", "path-injection[read]", "ai-manual"] + - ["java.io", "FileReader", True, "FileReader", "(String,Charset)", "", "Argument[0]", "path-injection[read]", "manual"] - ["java.io", "FileSystem", True, "createDirectory", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] - ["java.io", "FileWriter", False, "FileWriter", "", "", "Argument[0]", "path-injection", "manual"] - ["java.io", "PrintStream", False, "PrintStream", "(File)", "", "Argument[0]", "path-injection", "manual"] diff --git a/java/ql/lib/ext/java.lang.model.yml b/java/ql/lib/ext/java.lang.model.yml index 8c2c448f4c2f..9e3d9e8cee54 100644 --- a/java/ql/lib/ext/java.lang.model.yml +++ b/java/ql/lib/ext/java.lang.model.yml @@ -3,15 +3,15 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["java.lang", "Class", False, "getResource", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] - - ["java.lang", "Class", False, "getResourceAsStream", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] - - ["java.lang", "ClassLoader", False, "getSystemResources", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] - - ["java.lang", "ClassLoader", True, "getResource", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] - - ["java.lang", "ClassLoader", True, "getResourceAsStream", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] - - ["java.lang", "ClassLoader", True, "getResources", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] - - ["java.lang", "ClassLoader", True, "getSystemResource", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] - - ["java.lang", "ClassLoader", True, "getSystemResourceAsStream", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] - - ["java.lang", "Module", True, "getResourceAsStream", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.lang", "Class", False, "getResource", "(String)", "", "Argument[0]", "path-injection[read]", "ai-manual"] + - ["java.lang", "Class", False, "getResourceAsStream", "(String)", "", "Argument[0]", "path-injection[read]", "ai-manual"] + - ["java.lang", "ClassLoader", False, "getSystemResources", "(String)", "", "Argument[0]", "path-injection[read]", "ai-manual"] + - ["java.lang", "ClassLoader", True, "getResource", "(String)", "", "Argument[0]", "path-injection[read]", "ai-manual"] + - ["java.lang", "ClassLoader", True, "getResourceAsStream", "(String)", "", "Argument[0]", "path-injection[read]", "ai-manual"] + - ["java.lang", "ClassLoader", True, "getResources", "(String)", "", "Argument[0]", "path-injection[read]", "ai-manual"] + - ["java.lang", "ClassLoader", True, "getSystemResource", "(String)", "", "Argument[0]", "path-injection[read]", "ai-manual"] + - ["java.lang", "ClassLoader", True, "getSystemResourceAsStream", "(String)", "", "Argument[0]", "path-injection[read]", "ai-manual"] + - ["java.lang", "Module", True, "getResourceAsStream", "(String)", "", "Argument[0]", "path-injection[read]", "ai-manual"] - ["java.lang", "ProcessBuilder", False, "command", "(List)", "", "Argument[0]", "command-injection", "manual"] - ["java.lang", "ProcessBuilder", False, "command", "(String[])", "", "Argument[0]", "command-injection", "ai-manual"] - ["java.lang", "ProcessBuilder", False, "directory", "(File)", "", "Argument[0]", "command-injection", "ai-manual"] diff --git a/java/ql/lib/ext/java.nio.file.model.yml b/java/ql/lib/ext/java.nio.file.model.yml index 8d7db676e533..66cbe2da7b4a 100644 --- a/java/ql/lib/ext/java.nio.file.model.yml +++ b/java/ql/lib/ext/java.nio.file.model.yml @@ -3,8 +3,8 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["java.nio.file", "Files", False, "copy", "(Path,OutputStream)", "", "Argument[0]", "path-injection", "manual"] - - ["java.nio.file", "Files", False, "copy", "(Path,Path,CopyOption[])", "", "Argument[0]", "path-injection", "manual"] + - ["java.nio.file", "Files", False, "copy", "(Path,OutputStream)", "", "Argument[0]", "path-injection[read]", "manual"] + - ["java.nio.file", "Files", False, "copy", "(Path,Path,CopyOption[])", "", "Argument[0]", "path-injection[read]", "manual"] - ["java.nio.file", "Files", False, "copy", "(Path,Path,CopyOption[])", "", "Argument[1]", "path-injection", "manual"] - ["java.nio.file", "Files", False, "copy", "(InputStream,Path,CopyOption[])", "", "Argument[0]", "file-content-store", "manual"] - ["java.nio.file", "Files", False, "copy", "(InputStream,Path,CopyOption[])", "", "Argument[1]", "path-injection", "manual"] @@ -17,24 +17,24 @@ extensions: - ["java.nio.file", "Files", False, "createTempFile", "(Path,String,String,FileAttribute[])", "", "Argument[0]", "path-injection", "manual"] - ["java.nio.file", "Files", False, "delete", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] - ["java.nio.file", "Files", False, "deleteIfExists", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] - - ["java.nio.file", "Files", False, "getFileStore", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] # the FileStore class is unlikely to be used for later sanitization - - ["java.nio.file", "Files", False, "exists", "(Path,LinkOption[])", "", "Argument[0]", "path-injection", "manual"] - - ["java.nio.file", "Files", False, "lines", "(Path,Charset)", "", "Argument[0]", "path-injection", "ai-manual"] - - ["java.nio.file", "Files", False, "lines", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.nio.file", "Files", False, "getFileStore", "(Path)", "", "Argument[0]", "path-injection[read]", "ai-manual"] # the FileStore class is unlikely to be used for later sanitization + - ["java.nio.file", "Files", False, "exists", "(Path,LinkOption[])", "", "Argument[0]", "path-injection[read]", "manual"] + - ["java.nio.file", "Files", False, "lines", "(Path,Charset)", "", "Argument[0]", "path-injection[read]", "ai-manual"] + - ["java.nio.file", "Files", False, "lines", "(Path)", "", "Argument[0]", "path-injection[read]", "ai-manual"] - ["java.nio.file", "Files", False, "move", "", "", "Argument[1]", "path-injection", "manual"] - ["java.nio.file", "Files", False, "move", "(Path,Path,CopyOption[])", "", "Argument[0]", "path-injection", "ai-manual"] - - ["java.nio.file", "Files", False, "newBufferedReader", "(Path,Charset)", "", "Argument[0]", "path-injection", "ai-manual"] - - ["java.nio.file", "Files", False, "newBufferedReader", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.nio.file", "Files", False, "newBufferedReader", "(Path,Charset)", "", "Argument[0]", "path-injection[read]", "ai-manual"] + - ["java.nio.file", "Files", False, "newBufferedReader", "(Path)", "", "Argument[0]", "path-injection[read]", "ai-manual"] - ["java.nio.file", "Files", False, "newBufferedWriter", "", "", "Argument[0]", "path-injection", "manual"] - - ["java.nio.file", "Files", False, "newInputStream", "(Path,OpenOption[])", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.nio.file", "Files", False, "newInputStream", "(Path,OpenOption[])", "", "Argument[0]", "path-injection[read]", "ai-manual"] - ["java.nio.file", "Files", False, "newOutputStream", "", "", "Argument[0]", "path-injection", "manual"] - - ["java.nio.file", "Files", False, "notExists", "(Path,LinkOption[])", "", "Argument[0]", "path-injection", "manual"] - - ["java.nio.file", "Files", False, "probeContentType", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] # accesses the file based on user input, but only reads its content type from it - - ["java.nio.file", "Files", False, "readAllBytes", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] - - ["java.nio.file", "Files", False, "readAllLines", "(Path,Charset)", "", "Argument[0]", "path-injection", "ai-manual"] - - ["java.nio.file", "Files", False, "readAllLines", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] - - ["java.nio.file", "Files", False, "readString", "(Path,Charset)", "", "Argument[0]", "path-injection", "ai-manual"] - - ["java.nio.file", "Files", False, "readString", "(Path)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["java.nio.file", "Files", False, "notExists", "(Path,LinkOption[])", "", "Argument[0]", "path-injection[read]", "manual"] + - ["java.nio.file", "Files", False, "probeContentType", "(Path)", "", "Argument[0]", "path-injection[read]", "ai-manual"] # accesses the file based on user input, but only reads its content type from it + - ["java.nio.file", "Files", False, "readAllBytes", "(Path)", "", "Argument[0]", "path-injection[read]", "ai-manual"] + - ["java.nio.file", "Files", False, "readAllLines", "(Path,Charset)", "", "Argument[0]", "path-injection[read]", "ai-manual"] + - ["java.nio.file", "Files", False, "readAllLines", "(Path)", "", "Argument[0]", "path-injection[read]", "ai-manual"] + - ["java.nio.file", "Files", False, "readString", "(Path,Charset)", "", "Argument[0]", "path-injection[read]", "ai-manual"] + - ["java.nio.file", "Files", False, "readString", "(Path)", "", "Argument[0]", "path-injection[read]", "ai-manual"] - ["java.nio.file", "Files", False, "write", "", "", "Argument[0]", "path-injection", "manual"] - ["java.nio.file", "Files", False, "write", "", "", "Argument[1]", "file-content-store", "manual"] - ["java.nio.file", "Files", False, "writeString", "", "", "Argument[0]", "path-injection", "manual"] diff --git a/java/ql/lib/ext/javax.servlet.model.yml b/java/ql/lib/ext/javax.servlet.model.yml index cbf99dcd97ef..3d4a580edfc4 100644 --- a/java/ql/lib/ext/javax.servlet.model.yml +++ b/java/ql/lib/ext/javax.servlet.model.yml @@ -13,8 +13,8 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["javax.servlet", "ServletContext", True, "getResource", "(String)", "", "Argument[0]", "path-injection", "manual"] - - ["javax.servlet", "ServletContext", True, "getResourceAsStream", "(String)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["javax.servlet", "ServletContext", True, "getResource", "(String)", "", "Argument[0]", "path-injection[read]", "manual"] + - ["javax.servlet", "ServletContext", True, "getResourceAsStream", "(String)", "", "Argument[0]", "path-injection[read]", "ai-manual"] - ["javax.servlet", "ServletContext", True, "getRequestDispatcher", "(String)", "", "Argument[0]", "url-forward", "manual"] - ["javax.servlet", "ServletRequest", True, "getRequestDispatcher", "(String)", "", "Argument[0]", "url-forward", "manual"] - addsTo: diff --git a/java/ql/lib/ext/kotlin.io.model.yml b/java/ql/lib/ext/kotlin.io.model.yml index b748e04a292d..550ba509a090 100644 --- a/java/ql/lib/ext/kotlin.io.model.yml +++ b/java/ql/lib/ext/kotlin.io.model.yml @@ -4,9 +4,9 @@ extensions: extensible: sinkModel data: - ["kotlin.io", "FilesKt", False, "deleteRecursively", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] - - ["kotlin.io", "FilesKt", False, "inputStream", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] - - ["kotlin.io", "FilesKt", False, "readBytes", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] - - ["kotlin.io", "FilesKt", False, "readText", "(File,Charset)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["kotlin.io", "FilesKt", False, "inputStream", "(File)", "", "Argument[0]", "path-injection[read]", "ai-manual"] + - ["kotlin.io", "FilesKt", False, "readBytes", "(File)", "", "Argument[0]", "path-injection[read]", "ai-manual"] + - ["kotlin.io", "FilesKt", False, "readText", "(File,Charset)", "", "Argument[0]", "path-injection[read]", "ai-manual"] - addsTo: pack: codeql/java-all extensible: summaryModel diff --git a/java/ql/lib/ext/org.apache.commons.io.model.yml b/java/ql/lib/ext/org.apache.commons.io.model.yml index 9c75ce8b41ad..7ef2f1f60e68 100644 --- a/java/ql/lib/ext/org.apache.commons.io.model.yml +++ b/java/ql/lib/ext/org.apache.commons.io.model.yml @@ -29,18 +29,18 @@ extensions: - ["org.apache.commons.io", "FileUtils", False, "forceMkdir", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] - ["org.apache.commons.io", "FileUtils", False, "moveDirectory", "(File,File)", "", "Argument[0]", "path-injection", "ai-manual"] - ["org.apache.commons.io", "FileUtils", False, "readFileToByteArray", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] - - ["org.apache.commons.io", "FileUtils", False, "readFileToString", "(File,Charset)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["org.apache.commons.io", "FileUtils", False, "readFileToByteArray", "", "", "Argument[0]", "path-injection[read]", "ai-manual"] - ["org.apache.commons.io", "FileUtils", False, "writeLines", "(File,String,Collection,String)", "", "Argument[3]", "file-content-store", "ai-manual"] - ["org.apache.commons.io", "FileUtils", False, "writeStringToFile", "(File,String,Charset,boolean)", "", "Argument[1]", "file-content-store", "ai-manual"] - ["org.apache.commons.io", "FileUtils", True, "copyInputStreamToFile", "(InputStream,File)", "", "Argument[0]", "file-content-store", "ai-manual"] - ["org.apache.commons.io", "FileUtils", True, "copyInputStreamToFile", "(InputStream,File)", "", "Argument[1]", "path-injection", "manual"] - ["org.apache.commons.io", "FileUtils", True, "copyToFile", "(InputStream,File)", "", "Argument[0]", "file-content-store", "ai-manual"] - ["org.apache.commons.io", "FileUtils", True, "copyToFile", "(InputStream,File)", "", "Argument[1]", "path-injection", "manual"] - - ["org.apache.commons.io", "FileUtils", True, "openInputStream", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["org.apache.commons.io", "FileUtils", True, "openInputStream", "(File)", "", "Argument[0]", "path-injection[read]", "ai-manual"] - ["org.apache.commons.io", "FileUtils", True, "delete", "(File)", "", "Argument[0]", "path-injection", "manual"] - ["org.apache.commons.io", "FileUtils", True, "deleteDirectory", "(File)", "", "Argument[0]", "path-injection", "manual"] - ["org.apache.commons.io", "FileUtils", True, "deleteQuietly", "(File)", "", "Argument[0]", "path-injection", "manual"] - ["org.apache.commons.io", "FileUtils", True, "forceDelete", "(File)", "", "Argument[0]", "path-injection", "manual"] - ["org.apache.commons.io", "FileUtils", True, "forceDeleteOnExit", "(File)", "", "Argument[0]", "path-injection", "manual"] - ["org.apache.commons.io", "FileUtils", True, "forceMkdirParent", "(File)", "", "Argument[0]", "path-injection", "manual"] - - ["org.apache.commons.io", "IOUtils", False, "resourceToString", "(String,Charset)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["org.apache.commons.io", "IOUtils", False, "resourceToString", "", "", "Argument[0]", "path-injection[read]", "ai-manual"] diff --git a/java/ql/lib/ext/org.apache.commons.net.model.yml b/java/ql/lib/ext/org.apache.commons.net.model.yml index 0a4c46e6a3c3..689aa873d960 100644 --- a/java/ql/lib/ext/org.apache.commons.net.model.yml +++ b/java/ql/lib/ext/org.apache.commons.net.model.yml @@ -9,9 +9,9 @@ extensions: - ["org.apache.commons.net", "SocketClient", true, "connect", "(String)", "", "Argument[0]", "request-forgery", "manual"] - ["org.apache.commons.net", "SocketClient", true, "connect", "(String,int)", "", "Argument[0]", "request-forgery", "df-manual"] - ["org.apache.commons.net", "SocketClient", true, "connect", "(String,int,InetAddress,int)", "", "Argument[0]", "request-forgery", "manual"] - - ["org.apache.commons.net.util", "KeyManagerUtils", false, "createClientKeyManager", "(File,String)", "", "Argument[0]", "path-injection", "df-manual"] - - ["org.apache.commons.net.util", "KeyManagerUtils", false, "createClientKeyManager", "(File,String,String)", "", "Argument[0]", "path-injection", "df-manual"] - - ["org.apache.commons.net.util", "KeyManagerUtils", false, "createClientKeyManager", "(String,File,String,String,String)", "", "Argument[1]", "path-injection", "df-manual"] + - ["org.apache.commons.net.util", "KeyManagerUtils", false, "createClientKeyManager", "(File,String)", "", "Argument[0]", "path-injection[read]", "df-manual"] + - ["org.apache.commons.net.util", "KeyManagerUtils", false, "createClientKeyManager", "(File,String,String)", "", "Argument[0]", "path-injection[read]", "df-manual"] + - ["org.apache.commons.net.util", "KeyManagerUtils", false, "createClientKeyManager", "(String,File,String,String,String)", "", "Argument[1]", "path-injection[read]", "df-manual"] - addsTo: pack: codeql/java-all extensible: sourceModel diff --git a/java/ql/lib/ext/org.apache.tools.ant.model.yml b/java/ql/lib/ext/org.apache.tools.ant.model.yml index 474429db030f..cd1b6e198a46 100644 --- a/java/ql/lib/ext/org.apache.tools.ant.model.yml +++ b/java/ql/lib/ext/org.apache.tools.ant.model.yml @@ -3,8 +3,8 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.tools.ant", "AntClassLoader", True, "addPathComponent", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] - - ["org.apache.tools.ant", "AntClassLoader", True, "AntClassLoader", "(ClassLoader,Project,Path,boolean)", "", "Argument[2]", "path-injection", "ai-manual"] - - ["org.apache.tools.ant", "AntClassLoader", True, "AntClassLoader", "(Project,Path,boolean)", "", "Argument[1]", "path-injection", "ai-manual"] - - ["org.apache.tools.ant", "AntClassLoader", True, "AntClassLoader", "(Project,Path)", "", "Argument[1]", "path-injection", "ai-manual"] - - ["org.apache.tools.ant", "DirectoryScanner", True, "setBasedir", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["org.apache.tools.ant", "AntClassLoader", True, "addPathComponent", "(File)", "", "Argument[0]", "path-injection[read]", "ai-manual"] + - ["org.apache.tools.ant", "AntClassLoader", True, "AntClassLoader", "(ClassLoader,Project,Path,boolean)", "", "Argument[2]", "path-injection[read]", "ai-manual"] + - ["org.apache.tools.ant", "AntClassLoader", True, "AntClassLoader", "(Project,Path,boolean)", "", "Argument[1]", "path-injection[read]", "ai-manual"] + - ["org.apache.tools.ant", "AntClassLoader", True, "AntClassLoader", "(Project,Path)", "", "Argument[1]", "path-injection[read]", "ai-manual"] + - ["org.apache.tools.ant", "DirectoryScanner", True, "setBasedir", "(File)", "", "Argument[0]", "path-injection[read]", "ai-manual"] diff --git a/java/ql/lib/ext/org.apache.tools.ant.taskdefs.model.yml b/java/ql/lib/ext/org.apache.tools.ant.taskdefs.model.yml index 2695c2881f76..5d930f387e9f 100644 --- a/java/ql/lib/ext/org.apache.tools.ant.taskdefs.model.yml +++ b/java/ql/lib/ext/org.apache.tools.ant.taskdefs.model.yml @@ -3,12 +3,12 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.apache.tools.ant.taskdefs", "Copy", True, "addFileset", "(FileSet)", "", "Argument[0]", "path-injection", "ai-manual"] - - ["org.apache.tools.ant.taskdefs", "Copy", True, "setFile", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["org.apache.tools.ant.taskdefs", "Copy", True, "addFileset", "(FileSet)", "", "Argument[0]", "path-injection[read]", "ai-manual"] + - ["org.apache.tools.ant.taskdefs", "Copy", True, "setFile", "(File)", "", "Argument[0]", "path-injection[read]", "ai-manual"] - ["org.apache.tools.ant.taskdefs", "Copy", True, "setTodir", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] - ["org.apache.tools.ant.taskdefs", "Copy", True, "setTofile", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] - ["org.apache.tools.ant.taskdefs", "Execute", False, "runCommand", "(Task,String[])", "", "Argument[1]", "command-injection", "ai-manual"] - ["org.apache.tools.ant.taskdefs", "Expand", True, "setDest", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] - - ["org.apache.tools.ant.taskdefs", "Expand", True, "setSrc", "(File)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["org.apache.tools.ant.taskdefs", "Expand", True, "setSrc", "(File)", "", "Argument[0]", "path-injection[read]", "ai-manual"] - ["org.apache.tools.ant.taskdefs", "Property", True, "setFile", "(File)", "", "Argument[0]", "path-injection", "manual"] - ["org.apache.tools.ant.taskdefs", "Property", True, "setResource", "(String)", "", "Argument[0]", "path-injection", "manual"] diff --git a/java/ql/lib/ext/org.hibernate.query.model.yml b/java/ql/lib/ext/org.hibernate.query.model.yml index bb6232c1fcdd..5eccefd0dfa0 100644 --- a/java/ql/lib/ext/org.hibernate.query.model.yml +++ b/java/ql/lib/ext/org.hibernate.query.model.yml @@ -4,5 +4,8 @@ extensions: extensible: sinkModel data: - ["org.hibernate.query", "QueryProducer", True, "createNativeQuery", "", "", "Argument[0]", "sql-injection", "manual"] + - ["org.hibernate.query", "QueryProducer", True, "createNativeMutationQuery", "", "", "Argument[0]", "sql-injection", "manual"] - ["org.hibernate.query", "QueryProducer", True, "createQuery", "", "", "Argument[0]", "sql-injection", "manual"] + - ["org.hibernate.query", "QueryProducer", True, "createMutationQuery", "", "", "Argument[0]", "sql-injection", "manual"] + - ["org.hibernate.query", "QueryProducer", True, "createSelectionQuery", "", "", "Argument[0]", "sql-injection", "manual"] - ["org.hibernate.query", "QueryProducer", True, "createSQLQuery", "", "", "Argument[0]", "sql-injection", "manual"] diff --git a/java/ql/lib/ext/org.kohsuke.stapler.framework.io.model.yml b/java/ql/lib/ext/org.kohsuke.stapler.framework.io.model.yml index 49cd049cdfab..de662c040115 100644 --- a/java/ql/lib/ext/org.kohsuke.stapler.framework.io.model.yml +++ b/java/ql/lib/ext/org.kohsuke.stapler.framework.io.model.yml @@ -3,4 +3,4 @@ extensions: pack: codeql/java-all extensible: sinkModel data: - - ["org.kohsuke.stapler.framework.io", "LargeText", True, "LargeText", "(File,Charset,boolean,boolean)", "", "Argument[0]", "path-injection", "ai-manual"] + - ["org.kohsuke.stapler.framework.io", "LargeText", True, "LargeText", "(File,Charset,boolean,boolean)", "", "Argument[0]", "path-injection[read]", "ai-manual"] diff --git a/java/ql/lib/ext/org.springframework.util.model.yml b/java/ql/lib/ext/org.springframework.util.model.yml index fffcebb72f88..a3c5e7448d8a 100644 --- a/java/ql/lib/ext/org.springframework.util.model.yml +++ b/java/ql/lib/ext/org.springframework.util.model.yml @@ -4,7 +4,7 @@ extensions: extensible: sinkModel data: - ["org.springframework.util", "FileCopyUtils", False, "copy", "(byte[],File)", "", "Argument[1]", "path-injection", "manual"] - - ["org.springframework.util", "FileCopyUtils", False, "copy", "(File,File)", "", "Argument[0]", "path-injection", "manual"] + - ["org.springframework.util", "FileCopyUtils", False, "copy", "(File,File)", "", "Argument[0]", "path-injection[read]", "manual"] - ["org.springframework.util", "FileCopyUtils", False, "copy", "(File,File)", "", "Argument[1]", "path-injection", "manual"] - addsTo: diff --git a/java/ql/lib/qlpack.yml b/java/ql/lib/qlpack.yml index 6c985f0274e1..19c6389f51ee 100644 --- a/java/ql/lib/qlpack.yml +++ b/java/ql/lib/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-all -version: 9.0.3 +version: 9.1.1 groups: java dbscheme: config/semmlecode.dbscheme extractor: java @@ -21,7 +21,7 @@ dependencies: codeql/xml: ${workspace} dataExtensions: - ext/*.model.yml - - ext/generated/*.model.yml + - ext/generated/**/*.model.yml - ext/experimental/*.model.yml warnOnImplicitThis: true compileForOverlayEval: true diff --git a/java/ql/lib/semmle/code/java/ControlFlowGraph.qll b/java/ql/lib/semmle/code/java/ControlFlowGraph.qll index 4ec8ff8450ac..27f0102b3cfb 100644 --- a/java/ql/lib/semmle/code/java/ControlFlowGraph.qll +++ b/java/ql/lib/semmle/code/java/ControlFlowGraph.qll @@ -57,6 +57,15 @@ private module Ast implements AstSig { AstNode callableGetBody(Callable c) { result = c.getBody() } + // TODO: Implement in order to include parameters in the CFG + class Parameter extends AstNode { + Parameter() { none() } + + Expr getDefaultValue() { none() } + } + + Parameter callableGetParameter(Callable c, int i) { result = c.getParameter(i) } + class Stmt = J::Stmt; class Expr = J::Expr; @@ -91,9 +100,13 @@ private module Ast implements AstSig { class ContinueStmt = J::ContinueStmt; + class GotoStmt extends Stmt { + GotoStmt() { none() } + } + class ReturnStmt = J::ReturnStmt; - class ThrowStmt = J::ThrowStmt; + class Throw = J::ThrowStmt; final private class FinalTryStmt = J::TryStmt; @@ -140,10 +153,10 @@ private module Ast implements AstSig { } class Case extends AstNode instanceof J::SwitchCase { - /** Gets a pattern being matched by this case. */ - AstNode getAPattern() { - result = this.(PatternCase).getAPattern() or - result = this.(ConstCase).getValue(_) + /** Gets the pattern being matched by this case at the specified (zero-based) `index`. */ + AstNode getPattern(int index) { + result = this.(PatternCase).getPattern(index) or + result = this.(ConstCase).getValue(index) } /** Gets the guard expression of this case, if any. */ @@ -181,11 +194,37 @@ private module Ast implements AstSig { class LogicalNotExpr = LogNotExpr; + class Assignment = J::Assignment; + + class AssignExpr = J::AssignExpr; + + class CompoundAssignment = J::AssignOp; + + class AssignLogicalAndExpr extends CompoundAssignment { + AssignLogicalAndExpr() { none() } + } + + class AssignLogicalOrExpr extends CompoundAssignment { + AssignLogicalOrExpr() { none() } + } + + class AssignNullCoalescingExpr extends CompoundAssignment { + AssignNullCoalescingExpr() { none() } + } + final private class FinalBooleanLiteral = J::BooleanLiteral; class BooleanLiteral extends FinalBooleanLiteral { boolean getValue() { result = this.getBooleanValue() } } + + final private class FinalInstanceOfExpr = J::InstanceOfExpr; + + class PatternMatchExpr extends FinalInstanceOfExpr { + PatternMatchExpr() { this.isPattern() } + + AstNode getPattern() { result = super.getPattern() } + } } private module Exceptions { @@ -438,6 +477,7 @@ private module NonReturningCalls { private module Input implements InputSig1, InputSig2 { private import java as J + private import codeql.util.Void predicate cfgCachedStageRef() { CfgCachedStage::ref() } @@ -503,6 +543,8 @@ private module Input implements InputSig1, InputSig2 { l = TYield() and n instanceof SwitchExpr } + class CallableContext = Void; + predicate inConditionalContext(Ast::AstNode n, ConditionKind kind) { kind.isBoolean() and ( @@ -522,14 +564,8 @@ private module Input implements InputSig1, InputSig2 { private string assertThrowNodeTag() { result = "[assert-throw]" } - private string instanceofTrueNodeTag() { result = "[instanceof-true]" } - predicate additionalNode(Ast::AstNode n, string tag, NormalSuccessor t) { n instanceof AssertStmt and tag = assertThrowNodeTag() and t instanceof DirectSuccessor - or - n.(InstanceOfExpr).isPattern() and - tag = instanceofTrueNodeTag() and - t.(BooleanSuccessor).getValue() = true } /** @@ -571,34 +607,6 @@ private module Input implements InputSig1, InputSig2 { /** Holds if there is a local non-abrupt step from `n1` to `n2`. */ predicate step(PreControlFlowNode n1, PreControlFlowNode n2) { - exists(InstanceOfExpr ioe | - // common - n1.isBefore(ioe) and - n2.isBefore(ioe.getExpr()) - or - n1.isAfter(ioe.getExpr()) and - n2.isIn(ioe) - or - // std postorder: - not ioe.isPattern() and - n1.isIn(ioe) and - n2.isAfter(ioe) - or - // pattern case: - ioe.isPattern() and - n1.isIn(ioe) and - n2.isAfterValue(ioe, any(BooleanSuccessor s | s.getValue() = false)) - or - n1.isIn(ioe) and - n2.isAdditional(ioe, instanceofTrueNodeTag()) - or - n1.isAdditional(ioe, instanceofTrueNodeTag()) and - n2.isBefore(ioe.getPattern()) - or - n1.isAfter(ioe.getPattern()) and - n2.isAfterValue(ioe, any(BooleanSuccessor s | s.getValue() = true)) - ) - or exists(AssertStmt assertstmt | n1.isBefore(assertstmt) and n2.isBefore(assertstmt.getExpr()) diff --git a/java/ql/lib/semmle/code/java/Expr.qll b/java/ql/lib/semmle/code/java/Expr.qll index 31135429e2d8..c03be611067f 100644 --- a/java/ql/lib/semmle/code/java/Expr.qll +++ b/java/ql/lib/semmle/code/java/Expr.qll @@ -2732,11 +2732,6 @@ class PatternExpr extends Expr { */ LocalVariableDeclExpr asBindingOrUnnamedPattern() { result = this } - /** - * DEPRECATED: alias for `asBindingOrUnnamedPattern`. - */ - deprecated LocalVariableDeclExpr asBindingPattern() { result = this.asBindingOrUnnamedPattern() } - /** * Gets this pattern cast to a record pattern. */ diff --git a/java/ql/lib/semmle/code/java/Member.qll b/java/ql/lib/semmle/code/java/Member.qll index 23e08c4e6b60..0a8d80f4c36e 100644 --- a/java/ql/lib/semmle/code/java/Member.qll +++ b/java/ql/lib/semmle/code/java/Member.qll @@ -810,14 +810,6 @@ class Field extends Member, ExprParent, @field, Variable { ) } - /** - * DEPRECATED: The result is always `this`. - */ - deprecated Field getSourceDeclaration() { result = this } - - /** DEPRECATED: This always holds. */ - deprecated predicate isSourceDeclaration() { any() } - override predicate isPublic() { Member.super.isPublic() or diff --git a/java/ql/lib/semmle/code/java/Statement.qll b/java/ql/lib/semmle/code/java/Statement.qll index e2c7779b43cb..558e148d71ee 100644 --- a/java/ql/lib/semmle/code/java/Statement.qll +++ b/java/ql/lib/semmle/code/java/Statement.qll @@ -558,11 +558,6 @@ class ConstCase extends SwitchCase { class PatternCase extends SwitchCase { PatternCase() { exists(PatternExpr pe | pe.isNthChildOf(this, _)) } - /** - * DEPRECATED: alias for getPattern(0) - */ - deprecated PatternExpr getPattern() { result = this.getPattern(0) } - /** * Gets this case's `n`th pattern. */ diff --git a/java/ql/lib/semmle/code/java/Type.qll b/java/ql/lib/semmle/code/java/Type.qll index ef5cc5d941ce..8a46d863de2b 100644 --- a/java/ql/lib/semmle/code/java/Type.qll +++ b/java/ql/lib/semmle/code/java/Type.qll @@ -637,9 +637,6 @@ class RefType extends Type, Annotatable, Modifiable, @reftype { this.(NestedType).getEnclosingType().getNestedName() + "$" + this.getName() = result } - /** DEPRECATED: Alias for `getNestedName`. */ - deprecated string nestedName() { result = this.getNestedName() } - /** * Gets the source declaration of this type. * diff --git a/java/ql/lib/semmle/code/java/controlflow/Dominance.qll b/java/ql/lib/semmle/code/java/controlflow/Dominance.qll index e2a50ba06df6..de283e7c0a24 100644 --- a/java/ql/lib/semmle/code/java/controlflow/Dominance.qll +++ b/java/ql/lib/semmle/code/java/controlflow/Dominance.qll @@ -10,57 +10,6 @@ import java * Predicates for basic-block-level dominance. */ -/** - * DEPRECATED: Use `BasicBlock::immediatelyDominates` instead. - * - * The immediate dominance relation for basic blocks. - */ -deprecated predicate bbIDominates(BasicBlock dom, BasicBlock node) { - dom.immediatelyDominates(node) -} - -/** Exit points for basic-block control-flow. */ -private predicate bbSink(BasicBlock exit) { exit.getLastNode() instanceof ControlFlow::ExitNode } - -/** Reversed `bbSucc`. */ -private predicate bbPred(BasicBlock post, BasicBlock pre) { post = pre.getASuccessor() } - -/** The immediate post-dominance relation on basic blocks. */ -deprecated predicate bbIPostDominates(BasicBlock dominator, BasicBlock node) = - idominance(bbSink/1, bbPred/2)(_, dominator, node) - -/** - * DEPRECATED: Use `BasicBlock::strictlyDominates` instead. - * - * Holds if `dom` strictly dominates `node`. - */ -deprecated predicate bbStrictlyDominates(BasicBlock dom, BasicBlock node) { - dom.strictlyDominates(node) -} - -/** - * DEPRECATED: Use `BasicBlock::dominates` instead. - * - * Holds if `dom` dominates `node`. (This is reflexive.) - */ -deprecated predicate bbDominates(BasicBlock dom, BasicBlock node) { dom.dominates(node) } - -/** - * DEPRECATED: Use `BasicBlock::strictlyPostDominates` instead. - * - * Holds if `dom` strictly post-dominates `node`. - */ -deprecated predicate bbStrictlyPostDominates(BasicBlock dom, BasicBlock node) { - dom.strictlyPostDominates(node) -} - -/** - * DEPRECATED: Use `BasicBlock::postDominates` instead. - * - * Holds if `dom` post-dominates `node`. (This is reflexive.) - */ -deprecated predicate bbPostDominates(BasicBlock dom, BasicBlock node) { dom.postDominates(node) } - /** * The dominance frontier relation for basic blocks. * diff --git a/java/ql/lib/semmle/code/java/controlflow/Guards.qll b/java/ql/lib/semmle/code/java/controlflow/Guards.qll index 23088bd2f809..56dc9aa55e50 100644 --- a/java/ql/lib/semmle/code/java/controlflow/Guards.qll +++ b/java/ql/lib/semmle/code/java/controlflow/Guards.qll @@ -168,14 +168,20 @@ private module GuardsInput implements SharedGuards::InputSig; - -/** - * A taint-tracking configuration to reason about arithmetic underflow using local-user-controlled data. - */ -deprecated module ArithmeticTaintedLocalUnderflowConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source instanceof LocalUserInput } - - predicate isSink(DataFlow::Node sink) { underflowSink(_, sink.asExpr()) } - - predicate isBarrier(DataFlow::Node n) { underflowBarrier(n) } - - predicate isBarrierIn(DataFlow::Node node) { isSource(node) } -} - -/** - * DEPRECATED: Use `ArithmeticUnderflow` instead and configure threat model sources to include `local`. - * - * Taint-tracking flow for arithmetic underflow using local-user-controlled data. - */ -deprecated module ArithmeticTaintedLocalUnderflowFlow = - TaintTracking::Global; diff --git a/java/ql/lib/semmle/code/java/security/ArithmeticTaintedQuery.qll b/java/ql/lib/semmle/code/java/security/ArithmeticTaintedQuery.qll index 65e73f841495..9d123b379cd6 100644 --- a/java/ql/lib/semmle/code/java/security/ArithmeticTaintedQuery.qll +++ b/java/ql/lib/semmle/code/java/security/ArithmeticTaintedQuery.qll @@ -25,11 +25,6 @@ module ArithmeticOverflowConfig implements DataFlow::ConfigSig { } } -/** - * DEPRECATED: Use `ArithmeticOverflowConfig` instead. - */ -deprecated module RemoteUserInputOverflowConfig = ArithmeticOverflowConfig; - /** A taint-tracking configuration to reason about underflow from unvalidated input. */ module ArithmeticUnderflowConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof ActiveThreatModelSource } @@ -51,23 +46,8 @@ module ArithmeticUnderflowConfig implements DataFlow::ConfigSig { } } -/** - * DEPRECATED: Use `ArithmeticUnderflowConfig` instead. - */ -deprecated module RemoteUserInputUnderflowConfig = ArithmeticUnderflowConfig; - /** Taint-tracking flow for overflow from unvalidated input. */ module ArithmeticOverflow = TaintTracking::Global; -/** - * DEPRECATED: Use `ArithmeticOverflow` instead. - */ -deprecated module RemoteUserInputOverflow = ArithmeticOverflow; - /** Taint-tracking flow for underflow from unvalidated input. */ module ArithmeticUnderflow = TaintTracking::Global; - -/** - * DEPRECATED: Use `ArithmeticUnderflow` instead. - */ -deprecated module RemoteUserInputUnderflow = ArithmeticUnderflow; diff --git a/java/ql/lib/semmle/code/java/security/CleartextStorageQuery.qll b/java/ql/lib/semmle/code/java/security/CleartextStorageQuery.qll index 21d82bef657e..83f51f7eedfb 100644 --- a/java/ql/lib/semmle/code/java/security/CleartextStorageQuery.qll +++ b/java/ql/lib/semmle/code/java/security/CleartextStorageQuery.qll @@ -2,6 +2,7 @@ import java private import semmle.code.java.dataflow.TaintTracking +private import semmle.code.java.security.Sanitizers private import semmle.code.java.security.SensitiveActions /** A sink representing persistent storage that saves data in clear text. */ @@ -76,17 +77,6 @@ private class DefaultCleartextStorageSanitizer extends CleartextStorageSanitizer } } -/** - * Method call for encrypting sensitive information. As there are various implementations of - * encryption (reversible and non-reversible) from both JDK and third parties, this class simply - * checks method name to take a best guess to reduce false positives. - */ -private class EncryptedSensitiveMethodCall extends MethodCall { - EncryptedSensitiveMethodCall() { - this.getMethod().getName().toLowerCase().matches(["%encrypt%", "%hash%", "%digest%"]) - } -} - /** Flow configuration for encryption methods flowing to inputs of persistent storage. */ private module EncryptedValueFlowConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node src) { src.asExpr() instanceof EncryptedSensitiveMethodCall } diff --git a/java/ql/lib/semmle/code/java/security/CommandLineQuery.qll b/java/ql/lib/semmle/code/java/security/CommandLineQuery.qll index 273c5360b815..9aa62d950c59 100644 --- a/java/ql/lib/semmle/code/java/security/CommandLineQuery.qll +++ b/java/ql/lib/semmle/code/java/security/CommandLineQuery.qll @@ -78,44 +78,11 @@ module InputToArgumentToExecFlowConfig implements DataFlow::ConfigSig { } } -/** - * DEPRECATED: Use `InputToArgumentToExecFlowConfig` instead. - */ -deprecated module RemoteUserInputToArgumentToExecFlowConfig = InputToArgumentToExecFlowConfig; - /** * Taint-tracking flow for unvalidated input that is used to run an external process. */ module InputToArgumentToExecFlow = TaintTracking::Global; -/** - * DEPRECATED: Use `InputToArgumentToExecFlow` instead. - */ -deprecated module RemoteUserInputToArgumentToExecFlow = InputToArgumentToExecFlow; - -/** - * A taint-tracking configuration for unvalidated local user input that is used to run an external process. - */ -deprecated module LocalUserInputToArgumentToExecFlowConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node src) { src instanceof LocalUserInput } - - predicate isSink(DataFlow::Node sink) { sink instanceof CommandInjectionSink } - - predicate isBarrier(DataFlow::Node node) { node instanceof CommandInjectionSanitizer } - - predicate isAdditionalFlowStep(DataFlow::Node n1, DataFlow::Node n2) { - any(CommandInjectionAdditionalTaintStep s).step(n1, n2) - } -} - -/** - * DEPRECATED: Use `InputToArgumentToExecFlow` instead and configure threat model sources to include `local`. - * - * Taint-tracking flow for unvalidated local user input that is used to run an external process. - */ -deprecated module LocalUserInputToArgumentToExecFlow = - TaintTracking::Global; - /** * Implementation of `ExecTainted.ql`. It is extracted to a QLL * so that it can be excluded from `ExecUnescaped.ql` to avoid diff --git a/java/ql/lib/semmle/code/java/security/ExecTaintedLocalQuery.qll b/java/ql/lib/semmle/code/java/security/ExecTaintedLocalQuery.qll index 7a2d5b0947d0..dfc727e89d71 100644 --- a/java/ql/lib/semmle/code/java/security/ExecTaintedLocalQuery.qll +++ b/java/ql/lib/semmle/code/java/security/ExecTaintedLocalQuery.qll @@ -1,27 +1,5 @@ /** Provides a taint-tracking configuration to reason about use of externally controlled strings for command injection vulnerabilities. */ +overlay[local?] +deprecated module; import java -private import semmle.code.java.dataflow.FlowSources -private import semmle.code.java.security.ExternalProcess -private import semmle.code.java.security.CommandArguments -private import semmle.code.java.security.Sanitizers - -/** A taint-tracking configuration to reason about use of externally controlled strings to make command line commands. */ -deprecated module ExecTaintedLocalConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node src) { src instanceof LocalUserInput } - - predicate isSink(DataFlow::Node sink) { sink.asExpr() instanceof ArgumentToExec } - - predicate isBarrier(DataFlow::Node node) { - node instanceof SimpleTypeSanitizer - or - isSafeCommandArgument(node.asExpr()) - } -} - -/** - * DEPRCATED: Unused. - * - * Taint-tracking flow for use of externally controlled strings to make command line commands. - */ -deprecated module ExecTaintedLocalFlow = TaintTracking::Global; diff --git a/java/ql/lib/semmle/code/java/security/ExternallyControlledFormatStringLocalQuery.qll b/java/ql/lib/semmle/code/java/security/ExternallyControlledFormatStringLocalQuery.qll index 482673bacc93..79cf2a300f47 100644 --- a/java/ql/lib/semmle/code/java/security/ExternallyControlledFormatStringLocalQuery.qll +++ b/java/ql/lib/semmle/code/java/security/ExternallyControlledFormatStringLocalQuery.qll @@ -1,26 +1,5 @@ /** Provides a taint-tracking configuration to reason about externally-controlled format strings from local sources. */ +overlay[local?] +deprecated module; import java -private import semmle.code.java.dataflow.FlowSources -private import semmle.code.java.StringFormat - -/** A taint-tracking configuration to reason about externally-controlled format strings from local sources. */ -deprecated module ExternallyControlledFormatStringLocalConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source instanceof LocalUserInput } - - predicate isSink(DataFlow::Node sink) { - sink.asExpr() = any(StringFormat formatCall).getFormatArgument() - } - - predicate isBarrier(DataFlow::Node node) { - node.getType() instanceof NumericType or node.getType() instanceof BooleanType - } -} - -/** - * DEPRECATED: Use `ExternallyControlledFormatStringFlow` instead and configure threat model sources to include `local`. - * - * Taint-tracking flow for externally-controlled format strings from local sources. - */ -deprecated module ExternallyControlledFormatStringLocalFlow = - TaintTracking::Global; diff --git a/java/ql/lib/semmle/code/java/security/ImproperValidationOfArrayConstructionLocalQuery.qll b/java/ql/lib/semmle/code/java/security/ImproperValidationOfArrayConstructionLocalQuery.qll index 1d31d7afb872..e5b51c2ae53c 100644 --- a/java/ql/lib/semmle/code/java/security/ImproperValidationOfArrayConstructionLocalQuery.qll +++ b/java/ql/lib/semmle/code/java/security/ImproperValidationOfArrayConstructionLocalQuery.qll @@ -1,24 +1,5 @@ /** Provides a taint-tracking configuration to reason about improper validation of local user-provided size used for array construction. */ +overlay[local?] +deprecated module; import java -private import semmle.code.java.security.internal.ArraySizing -private import semmle.code.java.dataflow.FlowSources - -/** - * A taint-tracking configuration to reason about improper validation of local user-provided size used for array construction. - */ -deprecated module ImproperValidationOfArrayConstructionLocalConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source instanceof LocalUserInput } - - predicate isSink(DataFlow::Node sink) { - any(CheckableArrayAccess caa).canThrowOutOfBoundsDueToEmptyArray(sink.asExpr(), _) - } -} - -/** - * DEPRECATED: Use `ImproperValidationOfArrayConstructionFlow` instead and configure threat model sources to include `local`. - * - * Taint-tracking flow for improper validation of local user-provided size used for array construction. - */ -deprecated module ImproperValidationOfArrayConstructionLocalFlow = - TaintTracking::Global; diff --git a/java/ql/lib/semmle/code/java/security/ImproperValidationOfArrayIndexLocalQuery.qll b/java/ql/lib/semmle/code/java/security/ImproperValidationOfArrayIndexLocalQuery.qll index 5f1e7c81e017..b6b1366fb402 100644 --- a/java/ql/lib/semmle/code/java/security/ImproperValidationOfArrayIndexLocalQuery.qll +++ b/java/ql/lib/semmle/code/java/security/ImproperValidationOfArrayIndexLocalQuery.qll @@ -1,28 +1,5 @@ /** Provides a taint-tracking configuration to reason about improper validation of local user-provided array index. */ +overlay[local?] +deprecated module; import java -private import semmle.code.java.security.internal.ArraySizing -private import semmle.code.java.dataflow.FlowSources - -/** - * A taint-tracking configuration to reason about improper validation of local user-provided array index. - */ -deprecated module ImproperValidationOfArrayIndexLocalConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source instanceof LocalUserInput } - - predicate isSink(DataFlow::Node sink) { - any(CheckableArrayAccess caa).canThrowOutOfBounds(sink.asExpr()) - } - - predicate isBarrier(DataFlow::Node node) { node.getType() instanceof BooleanType } - - predicate isBarrierIn(DataFlow::Node node) { isSource(node) } -} - -/** - * DEPRECATED: Use `ImproperValidationOfArrayIndexFlow` instead and configure threat model sources to include `local`. - * - * Taint-tracking flow for improper validation of local user-provided array index. - */ -deprecated module ImproperValidationOfArrayIndexLocalFlow = - TaintTracking::Global; diff --git a/java/ql/lib/semmle/code/java/security/NumericCastTaintedQuery.qll b/java/ql/lib/semmle/code/java/security/NumericCastTaintedQuery.qll index 793871a4bd23..a4c3785feead 100644 --- a/java/ql/lib/semmle/code/java/security/NumericCastTaintedQuery.qll +++ b/java/ql/lib/semmle/code/java/security/NumericCastTaintedQuery.qll @@ -115,34 +115,3 @@ module NumericCastFlowConfig implements DataFlow::ConfigSig { * Taint-tracking flow for user input that is used in a numeric cast. */ module NumericCastFlow = TaintTracking::Global; - -/** - * A taint-tracking configuration for reasoning about local user input that is - * used in a numeric cast. - */ -deprecated module NumericCastLocalFlowConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node src) { src instanceof LocalUserInput } - - predicate isSink(DataFlow::Node sink) { - sink.asExpr() = any(NumericNarrowingCastExpr cast).getExpr() and - sink.asExpr() instanceof VarAccess - } - - predicate isBarrier(DataFlow::Node node) { - boundedRead(node.asExpr()) or - castCheck(node.asExpr()) or - node.getType() instanceof SmallType or - smallExpr(node.asExpr()) or - node.getEnclosingCallable() instanceof HashCodeMethod or - exists(RightShiftOp e | e.getShiftedVariable().getAnAccess() = node.asExpr()) - } - - predicate isBarrierIn(DataFlow::Node node) { isSource(node) } -} - -/** - * DEPRECATED: Use `NumericCastFlow` instead and configure threat model sources to include `local`. - * - * Taint-tracking flow for local user input that is used in a numeric cast. - */ -deprecated module NumericCastLocalFlow = TaintTracking::Global; diff --git a/java/ql/lib/semmle/code/java/security/PartialPathTraversal.qll b/java/ql/lib/semmle/code/java/security/PartialPathTraversal.qll index 63ffb62ef63b..a7b0c50b0827 100644 --- a/java/ql/lib/semmle/code/java/security/PartialPathTraversal.qll +++ b/java/ql/lib/semmle/code/java/security/PartialPathTraversal.qll @@ -40,8 +40,11 @@ private class CharacterLiteralFileSeparatorExpr extends FileSeparatorExpr, Chara CharacterLiteralFileSeparatorExpr() { this.getValue() = "/" or this.getValue() = "\\" } } -private class FileSeparatorAppend extends AddExpr { - FileSeparatorAppend() { this.getRightOperand() instanceof FileSeparatorExpr } +private class FileSeparatorAppend extends BinaryExpr { + FileSeparatorAppend() { + this.(AddExpr).getRightOperand() instanceof FileSeparatorExpr or + this.(AssignAddExpr).getRightOperand() instanceof FileSeparatorExpr + } } private predicate isSafe(Expr expr) { diff --git a/java/ql/lib/semmle/code/java/security/PathSanitizer.qll b/java/ql/lib/semmle/code/java/security/PathSanitizer.qll index 788cd5429397..1288569fa5bb 100644 --- a/java/ql/lib/semmle/code/java/security/PathSanitizer.qll +++ b/java/ql/lib/semmle/code/java/security/PathSanitizer.qll @@ -243,7 +243,7 @@ private class PathNormalizeSanitizer extends MethodCall { PathNormalizeSanitizer() { exists(RefType t | this.getMethod().getDeclaringType() = t | (t instanceof TypePath or t instanceof FilesKt) and - this.getMethod().hasName("normalize") + this.getMethod().hasName(["normalize", "toRealPath"]) or t instanceof TypeFile and this.getMethod().hasName(["getCanonicalPath", "getCanonicalFile"]) @@ -290,7 +290,7 @@ private Method getSourceMethod(Method m) { } private class ExternalPathInjectionSanitizer extends PathInjectionSanitizer { - ExternalPathInjectionSanitizer() { barrierNode(this, "path-injection") } + ExternalPathInjectionSanitizer() { barrierNode(this, ["path-injection", "path-injection[read]"]) } } /** Holds if `g` is a guard that checks for `..` components. */ diff --git a/java/ql/lib/semmle/code/java/security/ResponseSplittingLocalQuery.qll b/java/ql/lib/semmle/code/java/security/ResponseSplittingLocalQuery.qll index e5845b630ec8..e0383cd52d9a 100644 --- a/java/ql/lib/semmle/code/java/security/ResponseSplittingLocalQuery.qll +++ b/java/ql/lib/semmle/code/java/security/ResponseSplittingLocalQuery.qll @@ -1,39 +1,5 @@ /** Provides a taint-tracking configuration to reason about response splitting vulnerabilities from local user input. */ +overlay[local?] +deprecated module; import java -private import semmle.code.java.dataflow.FlowSources -private import semmle.code.java.security.ResponseSplitting - -/** - * A taint-tracking configuration to reason about response splitting vulnerabilities from local user input. - */ -deprecated module ResponseSplittingLocalConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source instanceof LocalUserInput } - - predicate isSink(DataFlow::Node sink) { sink instanceof HeaderSplittingSink } - - predicate isBarrier(DataFlow::Node node) { - node.getType() instanceof PrimitiveType - or - node.getType() instanceof BoxedType - or - exists(MethodCall ma, string methodName, CompileTimeConstantExpr target | - node.asExpr() = ma and - ma.getMethod().hasQualifiedName("java.lang", "String", methodName) and - target = ma.getArgument(0) and - ( - methodName = "replace" and target.getIntValue() = [10, 13] // 10 == "\n", 13 == "\r" - or - methodName = "replaceAll" and - target.getStringValue().regexpMatch(".*([\n\r]|\\[\\^[^\\]\r\n]*\\]).*") - ) - ) - } -} - -/** - * DEPRECATED: Use `ResponseSplittingFlow` instead and configure threat model sources to include `local`. - * - * Taint-tracking flow for response splitting vulnerabilities from local user input. - */ -deprecated module ResponseSplittingLocalFlow = TaintTracking::Global; diff --git a/java/ql/lib/semmle/code/java/security/Sanitizers.qll b/java/ql/lib/semmle/code/java/security/Sanitizers.qll index e00071da2d8c..0c5f9b98070a 100644 --- a/java/ql/lib/semmle/code/java/security/Sanitizers.qll +++ b/java/ql/lib/semmle/code/java/security/Sanitizers.qll @@ -63,3 +63,14 @@ class RegexpCheckBarrier extends DataFlow::Node { exists(RegexMatch rm | rm instanceof Annotation | this.asExpr() = rm.getString()) } } + +/** + * A method call for encrypting, hashing, or digesting sensitive information. As there are various + * implementations of encryption (reversible and non-reversible) from both JDK and third parties, + * this class simply checks the method name to take a best guess to reduce false positives. + */ +class EncryptedSensitiveMethodCall extends MethodCall { + EncryptedSensitiveMethodCall() { + this.getMethod().getName().toLowerCase().matches(["%encrypt%", "%hash%", "%digest%"]) + } +} diff --git a/java/ql/lib/semmle/code/java/security/SensitiveActions.qll b/java/ql/lib/semmle/code/java/security/SensitiveActions.qll index 6733219a8d5f..86ff96c19172 100644 --- a/java/ql/lib/semmle/code/java/security/SensitiveActions.qll +++ b/java/ql/lib/semmle/code/java/security/SensitiveActions.qll @@ -40,14 +40,26 @@ string getCommonSensitiveInfoRegex() { /** * Gets a regular expression for matching common names of variables that - * indicate the value being held does not contains sensitive information, + * indicate the value being held does not contain sensitive information, * but is a false positive for `getCommonSensitiveInfoRegex`. * * - "tokenizer" is often used for java.util.StringTokenizer. * - "tokenImage" appears in parser code generated by JavaCC. + * - Pagination/iteration tokens: "nextToken" (AWS SDK), "pageToken" (GCP), etc. + * - Token metadata: "tokenType" (OAuth), "tokenEndpoint" (OIDC), "tokenCount", etc. + * - Secret metadata: "secretName" (K8s/AWS), "secretId" (Azure), "secretVersion", etc. */ string getCommonSensitiveInfoFPRegex() { - result = "(?i).*(null|tokenizer).*" or result = "tokenImage" + result = + [ + "(?i).*(null|tokenizer).*", "tokenImage", + // Pagination/iteration tokens (e.g., AWS SDK pagination cursors, parser tokens) + "(?i).*(next|previous|current|page|continuation|cursor)tokens?.*", + // Token metadata/infrastructure (token followed by a non-value descriptor) + "(?i).*tokens?(type|kind|count|index|position|length|offset|endpoint|url|uri|bucket|rate|delimiter|separator|format|number|name|id|prefix|suffix|pattern|class|style).*", + // Secret metadata (secret followed by a non-value descriptor) + "(?i).*secrets?(name|id|version|ref|arn|path|type|label|description|manager|client|provider|store|factory|properties).*" + ] } /** An expression that might contain sensitive data. */ diff --git a/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll b/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll index 7058b844cbdb..f35cae0e67f3 100644 --- a/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll +++ b/java/ql/lib/semmle/code/java/security/SensitiveLoggingQuery.qll @@ -120,6 +120,14 @@ private class DefaultSensitiveLoggerBarrier extends SensitiveLoggerBarrier { } } +/** + * A barrier for sensitive data that has been hashed, encrypted, or digested before logging. + * This is consistent with the treatment of encryption in `CleartextStorageQuery.qll` (CWE-312). + */ +private class EncryptionBarrier extends SensitiveLoggerBarrier { + EncryptionBarrier() { this.asExpr() instanceof EncryptedSensitiveMethodCall } +} + /** A data-flow configuration for identifying potentially-sensitive data flowing to a log output. */ module SensitiveLoggerConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof SensitiveLoggerSource } diff --git a/java/ql/lib/semmle/code/java/security/SqlTaintedLocalQuery.qll b/java/ql/lib/semmle/code/java/security/SqlTaintedLocalQuery.qll index 7ff4b300ce8a..80cd491acf24 100644 --- a/java/ql/lib/semmle/code/java/security/SqlTaintedLocalQuery.qll +++ b/java/ql/lib/semmle/code/java/security/SqlTaintedLocalQuery.qll @@ -2,32 +2,7 @@ * Provides a taint-tracking configuration for reasoning about local user input * that is used in a SQL query. */ +overlay[local?] +deprecated module; import java -private import semmle.code.java.dataflow.FlowSources -private import semmle.code.java.security.SqlInjectionQuery -private import semmle.code.java.security.Sanitizers - -/** - * A taint-tracking configuration for reasoning about local user input that is - * used in a SQL query. - */ -deprecated module LocalUserInputToQueryInjectionFlowConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node src) { src instanceof LocalUserInput } - - predicate isSink(DataFlow::Node sink) { sink instanceof QueryInjectionSink } - - predicate isBarrier(DataFlow::Node node) { node instanceof SimpleTypeSanitizer } - - predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { - any(AdditionalQueryInjectionTaintStep s).step(node1, node2) - } -} - -/** - * DEPRECATED: Use `QueryInjectionFlow` instead and configure threat model sources to include `local`. - * - * Taint-tracking flow for local user input that is used in a SQL query. - */ -deprecated module LocalUserInputToQueryInjectionFlow = - TaintTracking::Global; diff --git a/java/ql/lib/semmle/code/java/security/TaintedPathQuery.qll b/java/ql/lib/semmle/code/java/security/TaintedPathQuery.qll index 6726bcc35086..64304e6c2b06 100644 --- a/java/ql/lib/semmle/code/java/security/TaintedPathQuery.qll +++ b/java/ql/lib/semmle/code/java/security/TaintedPathQuery.qll @@ -12,7 +12,7 @@ private import semmle.code.java.security.Sanitizers abstract class TaintedPathSink extends DataFlow::Node { } private class DefaultTaintedPathSink extends TaintedPathSink { - DefaultTaintedPathSink() { sinkNode(this, "path-injection") } + DefaultTaintedPathSink() { sinkNode(this, ["path-injection", "path-injection[read]"]) } } /** @@ -78,28 +78,3 @@ module TaintedPathConfig implements DataFlow::ConfigSig { /** Tracks flow from remote sources to the creation of a path. */ module TaintedPathFlow = TaintTracking::Global; - -/** - * A taint-tracking configuration for tracking flow from local user input to the creation of a path. - */ -deprecated module TaintedPathLocalConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source instanceof LocalUserInput } - - predicate isSink(DataFlow::Node sink) { sink instanceof TaintedPathSink } - - predicate isBarrier(DataFlow::Node sanitizer) { - sanitizer instanceof SimpleTypeSanitizer or - sanitizer instanceof PathInjectionSanitizer - } - - predicate isAdditionalFlowStep(DataFlow::Node n1, DataFlow::Node n2) { - any(TaintedPathAdditionalTaintStep s).step(n1, n2) - } -} - -/** - * DEPRECATED: Use `TaintedPathFlow` instead and configure threat model sources to include `local`. - * - * Tracks flow from local user input to the creation of a path. - */ -deprecated module TaintedPathLocalFlow = TaintTracking::Global; diff --git a/java/ql/lib/semmle/code/java/security/TrustBoundaryViolationQuery.qll b/java/ql/lib/semmle/code/java/security/TrustBoundaryViolationQuery.qll index d234f3df20ce..78589add96dc 100644 --- a/java/ql/lib/semmle/code/java/security/TrustBoundaryViolationQuery.qll +++ b/java/ql/lib/semmle/code/java/security/TrustBoundaryViolationQuery.qll @@ -31,17 +31,26 @@ private class ExternalTrustBoundaryValidationSanitizer extends TrustBoundaryVali ExternalTrustBoundaryValidationSanitizer() { barrierNode(this, "trust-boundary-violation") } } +private class SimpleTypeTrustBoundaryValidationSanitizer extends TrustBoundaryValidationSanitizer instanceof SimpleTypeSanitizer +{ } + +private class RegexpCheckTrustBoundaryValidationSanitizer extends TrustBoundaryValidationSanitizer instanceof RegexpCheckBarrier +{ } + +private class HttpServletSessionTypeTrustBoundaryValidationSanitizer extends TrustBoundaryValidationSanitizer +{ + HttpServletSessionTypeTrustBoundaryValidationSanitizer() { + this.getType() instanceof HttpServletSession + } +} + /** * Taint tracking for data that crosses a trust boundary. */ module TrustBoundaryConfig implements DataFlow::ConfigSig { predicate isSource(DataFlow::Node source) { source instanceof TrustBoundaryViolationSource } - predicate isBarrier(DataFlow::Node node) { - node instanceof TrustBoundaryValidationSanitizer or - node.getType() instanceof HttpServletSession or - node instanceof SimpleTypeSanitizer - } + predicate isBarrier(DataFlow::Node node) { node instanceof TrustBoundaryValidationSanitizer } predicate isSink(DataFlow::Node sink) { sink instanceof TrustBoundaryViolationSink } diff --git a/java/ql/lib/semmle/code/java/security/UrlRedirectLocalQuery.qll b/java/ql/lib/semmle/code/java/security/UrlRedirectLocalQuery.qll index f68fb959ea52..2016e9be14fa 100644 --- a/java/ql/lib/semmle/code/java/security/UrlRedirectLocalQuery.qll +++ b/java/ql/lib/semmle/code/java/security/UrlRedirectLocalQuery.qll @@ -1,21 +1,5 @@ /** Provides a taint-tracking configuration to reason about URL redirection from local sources. */ +overlay[local?] +deprecated module; import java -private import semmle.code.java.dataflow.FlowSources -private import semmle.code.java.security.UrlRedirect - -/** - * A taint-tracking configuration to reason about URL redirection from local sources. - */ -deprecated module UrlRedirectLocalConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source instanceof LocalUserInput } - - predicate isSink(DataFlow::Node sink) { sink instanceof UrlRedirectSink } -} - -/** - * DEPRECATED: Use `UrlRedirectFlow` instead and configure threat model sources to include `local`. - * - * Taint-tracking flow for URL redirection from local sources. - */ -deprecated module UrlRedirectLocalFlow = TaintTracking::Global; diff --git a/java/ql/lib/semmle/code/java/security/XmlParsers.qll b/java/ql/lib/semmle/code/java/security/XmlParsers.qll index bd1520034eb9..602076996a77 100644 --- a/java/ql/lib/semmle/code/java/security/XmlParsers.qll +++ b/java/ql/lib/semmle/code/java/security/XmlParsers.qll @@ -179,12 +179,29 @@ class XmlInputFactory extends RefType { XmlInputFactory() { this.hasQualifiedName(javaxOrJakarta() + ".xml.stream", "XMLInputFactory") } } -/** A call to `XMLInputFactory.createXMLStreamReader`. */ +/** + * The class `com.ctc.wstx.stax.WstxInputFactory` or its abstract supertype + * `org.codehaus.stax2.XMLInputFactory2` from the Woodstox StAX library. + */ +class WstxInputFactory extends RefType { + WstxInputFactory() { + this.hasQualifiedName("com.ctc.wstx.stax", "WstxInputFactory") or + this.hasQualifiedName("org.codehaus.stax2", "XMLInputFactory2") + } +} + +/** + * A call to `XMLInputFactory.createXMLStreamReader` or the equivalent method on the + * Woodstox `WstxInputFactory`. + */ class XmlInputFactoryStreamReader extends XmlParserCall { XmlInputFactoryStreamReader() { exists(Method m | this.getMethod() = m and - m.getDeclaringType() instanceof XmlInputFactory and + ( + m.getDeclaringType() instanceof XmlInputFactory or + m.getDeclaringType() instanceof WstxInputFactory + ) and m.hasName("createXMLStreamReader") ) } @@ -212,7 +229,10 @@ class XmlInputFactoryEventReader extends XmlParserCall { XmlInputFactoryEventReader() { exists(Method m | this.getMethod() = m and - m.getDeclaringType() instanceof XmlInputFactory and + ( + m.getDeclaringType() instanceof XmlInputFactory or + m.getDeclaringType() instanceof WstxInputFactory + ) and m.hasName("createXMLEventReader") ) } @@ -235,7 +255,10 @@ class XmlInputFactoryConfig extends ParserConfig { XmlInputFactoryConfig() { exists(Method m | m = this.getMethod() and - m.getDeclaringType() instanceof XmlInputFactory and + ( + m.getDeclaringType() instanceof XmlInputFactory or + m.getDeclaringType() instanceof WstxInputFactory + ) and m.hasName("setProperty") ) } diff --git a/java/ql/lib/semmle/code/java/security/XssLocalQuery.qll b/java/ql/lib/semmle/code/java/security/XssLocalQuery.qll index 5e1098865aa6..fd8fd6f451c2 100644 --- a/java/ql/lib/semmle/code/java/security/XssLocalQuery.qll +++ b/java/ql/lib/semmle/code/java/security/XssLocalQuery.qll @@ -1,30 +1,5 @@ /** Provides a taint-tracking configuration to reason about cross-site scripting from a local source. */ +overlay[local?] +deprecated module; import java -private import semmle.code.java.dataflow.FlowSources -private import semmle.code.java.dataflow.TaintTracking -private import semmle.code.java.security.XSS - -/** - * A taint-tracking configuration for reasoning about cross-site scripting vulnerabilities from a local source. - */ -deprecated module XssLocalConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node source) { source instanceof LocalUserInput } - - predicate isSink(DataFlow::Node sink) { sink instanceof XssSink } - - predicate isBarrier(DataFlow::Node node) { node instanceof XssSanitizer } - - predicate isBarrierOut(DataFlow::Node node) { node instanceof XssSinkBarrier } - - predicate isAdditionalFlowStep(DataFlow::Node node1, DataFlow::Node node2) { - any(XssAdditionalTaintStep s).step(node1, node2) - } -} - -/** - * DEPRECATED: Use `XssFlow` instead and configure threat model sources to include `local`. - * - * Taint-tracking flow for cross-site scripting vulnerabilities from a local source. - */ -deprecated module XssLocalFlow = TaintTracking::Global; diff --git a/java/ql/lib/semmle/code/java/security/XxeLocalQuery.qll b/java/ql/lib/semmle/code/java/security/XxeLocalQuery.qll index f485137fc782..c45cd560cfca 100644 --- a/java/ql/lib/semmle/code/java/security/XxeLocalQuery.qll +++ b/java/ql/lib/semmle/code/java/security/XxeLocalQuery.qll @@ -1,28 +1,5 @@ /** Provides taint tracking configurations to be used in local XXE queries. */ +overlay[local?] +deprecated module; import java -private import semmle.code.java.dataflow.FlowSources -private import semmle.code.java.dataflow.TaintTracking -private import semmle.code.java.security.XxeQuery - -/** - * A taint-tracking configuration for unvalidated local user input that is used in XML external entity expansion. - */ -deprecated module XxeLocalConfig implements DataFlow::ConfigSig { - predicate isSource(DataFlow::Node src) { src instanceof LocalUserInput } - - predicate isSink(DataFlow::Node sink) { sink instanceof XxeSink } - - predicate isBarrier(DataFlow::Node sanitizer) { sanitizer instanceof XxeSanitizer } - - predicate isAdditionalFlowStep(DataFlow::Node n1, DataFlow::Node n2) { - any(XxeAdditionalTaintStep s).step(n1, n2) - } -} - -/** - * DEPRECATED: Use `XxeFlow` instead and configure threat model sources to include `local`. - * - * Detect taint flow of unvalidated local user input that is used in XML external entity expansion. - */ -deprecated module XxeLocalFlow = TaintTracking::Global; diff --git a/java/ql/lib/semmle/code/java/security/ZipSlipQuery.qll b/java/ql/lib/semmle/code/java/security/ZipSlipQuery.qll index 9e2e5e4a6c7e..b7bcbcceeb96 100644 --- a/java/ql/lib/semmle/code/java/security/ZipSlipQuery.qll +++ b/java/ql/lib/semmle/code/java/security/ZipSlipQuery.qll @@ -52,6 +52,11 @@ module ZipSlipFlow = TaintTracking::Global; /** * A sink that represents a file creation, such as a file write, copy or move operation. + * + * This deliberately selects only the `path-injection` sink kind and excludes + * `path-injection[read]`: Zip Slip is an archive-extraction vulnerability, so + * read-only path sinks (for example `ClassLoader.getResource`, + * `FileInputStream`, and `FileReader`) are outside the threat model. */ private class FileCreationSink extends DataFlow::Node { FileCreationSink() { sinkNode(this, "path-injection") } diff --git a/java/ql/src/CHANGELOG.md b/java/ql/src/CHANGELOG.md index 2a2f8052092f..fbbc339797b2 100644 --- a/java/ql/src/CHANGELOG.md +++ b/java/ql/src/CHANGELOG.md @@ -1,3 +1,17 @@ +## 1.11.3 + +### Minor Analysis Improvements + +* The `java/zipslip` query no longer reports archive entry names that flow only to read-only path sinks such as `ClassLoader.getResource`, `FileInputStream`, and `FileReader`. The query now restricts its sinks to the `path-injection` kind and deliberately excludes the new `path-injection[read]` sub-kind, matching the Zip Slip threat model of unsafe archive extraction. + +## 1.11.2 + +No user-facing changes. + +## 1.11.1 + +No user-facing changes. + ## 1.11.0 ### Query Metadata Changes diff --git a/java/ql/src/Security/CWE/CWE-502/UnsafeDeserialization.qhelp b/java/ql/src/Security/CWE/CWE-502/UnsafeDeserialization.qhelp index bf7205d535ff..a6d2d9936a5f 100644 --- a/java/ql/src/Security/CWE/CWE-502/UnsafeDeserialization.qhelp +++ b/java/ql/src/Security/CWE/CWE-502/UnsafeDeserialization.qhelp @@ -5,26 +5,37 @@

    Deserializing untrusted data using any deserialization framework that allows the construction of arbitrary serializable objects is easily exploitable -and in many cases allows an attacker to execute arbitrary code. Even before a +and in many cases allows an attacker to execute arbitrary code. Even before a deserialized object is returned to the caller of a deserialization method a lot of code may have been executed, including static initializers, constructors, -and finalizers. Automatic deserialization of fields means that an attacker may +and finalizers. Automatic deserialization of fields means that an attacker may craft a nested combination of objects on which the executed initialization code may have unforeseen effects, such as the execution of arbitrary code.

    -There are many different serialization frameworks. This query currently +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, JMS, and Java IO serialization through ObjectInputStream/ObjectOutputStream.

    +

    +Note that a deserialization method is only dangerous if it can instantiate +arbitrary classes. Serialization frameworks that use a schema to instantiate +only expected, predefined types are generally not tracked by this query. For +example, Apache Avro's deserialization methods follow a schema and are +therefore generally safe with respect to arbitrary-class-instantiation and +gadget-chain attacks when the schema is trusted and does not permit +user-controlled type resolution. However, care must be taken to ensure the schema +strictly limits the allowed types. Permitting common standard library classes +can still leave the application vulnerable to gadget-chain attacks. +

    -Avoid deserialization of untrusted data if at all possible. If the +Avoid deserialization of untrusted data if at all possible. If the architecture permits it then use other formats instead of serialized objects, -for example JSON or XML. However, these formats should not be deserialized +for example JSON or XML. However, these formats should not be deserialized into complex objects because this provides further opportunities for attack. For example, XML-based deserialization attacks are possible through libraries such as XStream and XmlDecoder. @@ -43,7 +54,7 @@ Recommendations specific to particular frameworks supported by this query:

  • Recommendation: Call com.alibaba.fastjson.parser.ParserConfig#setSafeMode with the argument true before deserializing untrusted data.
  • -

    FasterXML - com.fasterxml.jackson.core:jackson-databind

    +

    FasterXML - com.fasterxml.jackson.core:jackson-databind

    • Secure by Default: Yes
    • Recommendation: Don't call com.fasterxml.jackson.databind.ObjectMapper#enableDefaultTyping and don't annotate any object fields with com.fasterxml.jackson.annotation.JsonTypeInfo passing either the CLASS or MINIMAL_CLASS values to the annotation. @@ -56,16 +67,16 @@ Recommendations specific to particular frameworks supported by this query:
    • Recommendation: Don't call com.esotericsoftware.kryo(5).Kryo#setRegistrationRequired with the argument false on any Kryo instance that may deserialize untrusted data.

    -

    ObjectInputStream - Java Standard Library

    +

    ObjectInputStream - Java Standard Library

    • Secure by Default: No
    • -
    • Recommendation: Use a validating input stream, such as org.apache.commons.io.serialization.ValidatingObjectInputStream.
    • +
    • Recommendation: Use a validating input stream, such as org.apache.commons.io.serialization.ValidatingObjectInputStream.

    SnakeYAML - org.yaml:snakeyaml

    • Secure by Default: As of version 2.0.
    • -
    • Recommendation: For versions before 2.0, pass an instance of org.yaml.snakeyaml.constructor.SafeConstructor to org.yaml.snakeyaml.Yaml's constructor before using it to deserialize untrusted data.
    • +
    • Recommendation: For versions before 2.0, pass an instance of org.yaml.snakeyaml.constructor.SafeConstructor to org.yaml.snakeyaml.Yaml's constructor before using it to deserialize untrusted data.

    XML Decoder - Standard Java Library

    diff --git a/java/ql/src/change-notes/released/1.11.1.md b/java/ql/src/change-notes/released/1.11.1.md new file mode 100644 index 000000000000..f5047685223d --- /dev/null +++ b/java/ql/src/change-notes/released/1.11.1.md @@ -0,0 +1,3 @@ +## 1.11.1 + +No user-facing changes. diff --git a/java/ql/src/change-notes/released/1.11.2.md b/java/ql/src/change-notes/released/1.11.2.md new file mode 100644 index 000000000000..93a8b73f6b95 --- /dev/null +++ b/java/ql/src/change-notes/released/1.11.2.md @@ -0,0 +1,3 @@ +## 1.11.2 + +No user-facing changes. diff --git a/java/ql/src/change-notes/released/1.11.3.md b/java/ql/src/change-notes/released/1.11.3.md new file mode 100644 index 000000000000..02f6fe7f16c5 --- /dev/null +++ b/java/ql/src/change-notes/released/1.11.3.md @@ -0,0 +1,5 @@ +## 1.11.3 + +### Minor Analysis Improvements + +* The `java/zipslip` query no longer reports archive entry names that flow only to read-only path sinks such as `ClassLoader.getResource`, `FileInputStream`, and `FileReader`. The query now restricts its sinks to the `path-injection` kind and deliberately excludes the new `path-injection[read]` sub-kind, matching the Zip Slip threat model of unsafe archive extraction. diff --git a/java/ql/src/codeql-pack.release.yml b/java/ql/src/codeql-pack.release.yml index 276088d81dc8..220561dc648b 100644 --- a/java/ql/src/codeql-pack.release.yml +++ b/java/ql/src/codeql-pack.release.yml @@ -1,2 +1,2 @@ --- -lastReleaseVersion: 1.11.0 +lastReleaseVersion: 1.11.3 diff --git a/java/ql/src/experimental/Security/CWE/CWE-094/SpringImplicitViewManipulation.ql b/java/ql/src/experimental/Security/CWE/CWE-094/SpringImplicitViewManipulation.ql index faef29d1fde6..52b333de6d7c 100644 --- a/java/ql/src/experimental/Security/CWE/CWE-094/SpringImplicitViewManipulation.ql +++ b/java/ql/src/experimental/Security/CWE/CWE-094/SpringImplicitViewManipulation.ql @@ -43,7 +43,7 @@ deprecated private predicate mayBeExploitable(Method m) { // hence, here we check for the param type to be a Java `String`. p.getType() instanceof TypeString and // Exclude cases where a regex check is applied on a parameter to prevent false positives. - not m.(SpringRequestMappingMethod).getValue().matches("%{%:[%]%}%") + not m.(SpringRequestMappingMethod).getAValue().matches("%{%:[%]%}%") ) and not maybeATestMethod(m) } diff --git a/java/ql/src/qlpack.yml b/java/ql/src/qlpack.yml index 2c4f95fb25bb..1d3c3c5b7163 100644 --- a/java/ql/src/qlpack.yml +++ b/java/ql/src/qlpack.yml @@ -1,5 +1,5 @@ name: codeql/java-queries -version: 1.11.0 +version: 1.11.3 groups: - java - queries diff --git a/java/ql/src/semmle/code/xml/MyBatisMapperXML.qll b/java/ql/src/semmle/code/xml/MyBatisMapperXML.qll deleted file mode 100644 index 5d047f1e82a1..000000000000 --- a/java/ql/src/semmle/code/xml/MyBatisMapperXML.qll +++ /dev/null @@ -1,117 +0,0 @@ -/** - * Provides classes for working with MyBatis mapper xml files and their content. - */ -deprecated module; - -import java - -/** - * MyBatis Mapper XML file. - */ -class MyBatisMapperXmlFile extends XmlFile { - MyBatisMapperXmlFile() { - count(XmlElement e | e = this.getAChild()) = 1 and - this.getAChild().getName() = "mapper" - } -} - -/** - * An XML element in a `MyBatisMapperXMLFile`. - */ -class MyBatisMapperXmlElement extends XmlElement { - MyBatisMapperXmlElement() { this.getFile() instanceof MyBatisMapperXmlFile } - - /** - * Gets the value for this element, with leading and trailing whitespace trimmed. - */ - string getValue() { result = this.allCharactersString().trim() } - - /** - * Gets the reference type bound to MyBatis Mapper XML File. - */ - RefType getNamespaceRefType() { - result.getQualifiedName() = this.getAttribute("namespace").getValue() - } -} - -/** - * An MyBatis Mapper sql operation element. - */ -abstract class MyBatisMapperSqlOperation extends MyBatisMapperXmlElement { - /** - * Gets the value of the `id` attribute of MyBatis Mapper sql operation element. - */ - string getId() { result = this.getAttribute("id").getValue() } - - /** - * Gets the `` element in a `MyBatisMapperSqlOperation`. - */ - MyBatisMapperInclude getInclude() { result = this.getAChild*() } - - /** - * Gets the method bound to MyBatis Mapper XML File. - */ - Method getMapperMethod() { - result.getName() = this.getId() and - result.getDeclaringType() = this.getParent().(MyBatisMapperXmlElement).getNamespaceRefType() - } -} - -/** - * A `` element in a `MyBatisMapperSqlOperation`. - */ -class MyBatisMapperInsert extends MyBatisMapperSqlOperation { - MyBatisMapperInsert() { this.getName() = "insert" } -} - -/** - * A `` element in a `MyBatisMapperSqlOperation`. - */ -class MyBatisMapperUpdate extends MyBatisMapperSqlOperation { - MyBatisMapperUpdate() { this.getName() = "update" } -} - -/** - * A `` element in a `MyBatisMapperSqlOperation`. - */ -class MyBatisMapperDelete extends MyBatisMapperSqlOperation { - MyBatisMapperDelete() { this.getName() = "delete" } -} - -/** - * A `; + +class Container = Impl::Container; + +class Folder = Impl::Folder; + +/** A file. */ +class File extends Container, Impl::File { + /** Holds if this file was extracted from ordinary source code. */ + predicate fromSource() { any() } +} diff --git a/unified/ql/lib/codeql/unified/Ast.qll b/unified/ql/lib/codeql/unified/Ast.qll new file mode 100644 index 000000000000..5b9491fdb9fe --- /dev/null +++ b/unified/ql/lib/codeql/unified/Ast.qll @@ -0,0 +1,2826 @@ +/** + * CodeQL library for Swift + * Automatically generated from the tree-sitter grammar; do not edit + */ + +import codeql.Locations as L + +/** Holds if the database is an overlay. */ +overlay[local] +private predicate isOverlay() { databaseMetadata("isOverlay", "true") } + +/** Holds if `loc` is in the `file` and is part of the overlay base database. */ +overlay[local] +private predicate discardableLocation(@file file, @location_default loc) { + not isOverlay() and locations_default(loc, file, _, _, _, _) +} + +/** Holds if `loc` should be discarded, because it is part of the overlay base and is in a file that was also extracted as part of the overlay database. */ +overlay[discard_entity] +private predicate discardLocation(@location_default loc) { + exists(@file file, string path | files(file, path) | + discardableLocation(file, loc) and overlayChangedFiles(path) + ) +} + +overlay[local] +module Swift { + /** The base class for all AST nodes */ + class AstNode extends @swift_ast_node { + /** Gets a string representation of this element. */ + string toString() { result = this.getAPrimaryQlClass() } + + /** Gets the location of this element. */ + final L::Location getLocation() { swift_ast_node_location(this, result) } + + /** Gets the parent of this element. */ + final AstNode getParent() { swift_ast_node_parent(this, result, _) } + + /** Gets the index of this node among the children of its parent. */ + final int getParentIndex() { swift_ast_node_parent(this, _, result) } + + /** Gets a field or child node of this node. */ + AstNode getAFieldOrChild() { none() } + + /** Gets the name of the primary QL class for this element. */ + string getAPrimaryQlClass() { result = "???" } + + /** Gets a comma-separated list of the names of the primary CodeQL classes to which this element belongs. */ + string getPrimaryQlClasses() { result = concat(this.getAPrimaryQlClass(), ",") } + } + + /** A token. */ + class Token extends @swift_token, AstNode { + /** Gets the value of this token. */ + final string getValue() { swift_tokeninfo(this, _, result) } + + /** Gets a string representation of this element. */ + final override string toString() { result = this.getValue() } + + /** Gets the name of the primary QL class for this element. */ + override string getAPrimaryQlClass() { result = "Token" } + } + + /** A reserved word. */ + class ReservedWord extends @swift_reserved_word, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ReservedWord" } + } + + /** Gets the file containing the given `node`. */ + private @file getNodeFile(@swift_ast_node node) { + exists(@location_default loc | swift_ast_node_location(node, loc) | + locations_default(loc, result, _, _, _, _) + ) + } + + /** Holds if `node` is in the `file` and is part of the overlay base database. */ + private predicate discardableAstNode(@file file, @swift_ast_node node) { + not isOverlay() and file = getNodeFile(node) + } + + /** Holds if `node` should be discarded, because it is part of the overlay base and is in a file that was also extracted as part of the overlay database. */ + overlay[discard_entity] + private predicate discardAstNode(@swift_ast_node node) { + exists(@file file, string path | files(file, path) | + discardableAstNode(file, node) and overlayChangedFiles(path) + ) + } + + /** A class representing `additive_expression` nodes. */ + class AdditiveExpression extends @swift_additive_expression, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "AdditiveExpression" } + + /** Gets the node corresponding to the field `lhs`. */ + final Expression getLhs() { swift_additive_expression_def(this, result, _, _) } + + /** Gets the node corresponding to the field `op`. */ + final string getOp() { + exists(int value | swift_additive_expression_def(this, _, value, _) | + result = "+" and value = 0 + or + result = "-" and value = 1 + ) + } + + /** Gets the node corresponding to the field `rhs`. */ + final Expression getRhs() { swift_additive_expression_def(this, _, _, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_additive_expression_def(this, result, _, _) or + swift_additive_expression_def(this, _, _, result) + } + } + + /** A class representing `array_literal` nodes. */ + class ArrayLiteral extends @swift_array_literal, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ArrayLiteral" } + + /** Gets the node corresponding to the field `element`. */ + final Expression getElement(int i) { swift_array_literal_element(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_array_literal_element(this, _, result) } + } + + /** A class representing `array_type` nodes. */ + class ArrayType extends @swift_array_type, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ArrayType" } + + /** Gets the node corresponding to the field `element`. */ + final Type getElement() { swift_array_type_def(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_array_type_def(this, result) } + } + + /** A class representing `as_expression` nodes. */ + class AsExpression extends @swift_as_expression, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "AsExpression" } + + /** Gets the node corresponding to the field `expr`. */ + final Expression getExpr() { swift_as_expression_def(this, result, _, _) } + + /** Gets the node corresponding to the field `type`. */ + final Type getType() { swift_as_expression_def(this, _, result, _) } + + /** Gets the child of this node. */ + final AsOperator getChild() { swift_as_expression_def(this, _, _, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_as_expression_def(this, result, _, _) or + swift_as_expression_def(this, _, result, _) or + swift_as_expression_def(this, _, _, result) + } + } + + /** A class representing `as_operator` tokens. */ + class AsOperator extends @swift_token_as_operator, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "AsOperator" } + } + + /** A class representing `assignment` nodes. */ + class Assignment extends @swift_assignment, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "Assignment" } + + /** Gets the node corresponding to the field `operator`. */ + final string getOperator() { + exists(int value | swift_assignment_def(this, value, _, _) | + result = "%=" and value = 0 + or + result = "*=" and value = 1 + or + result = "+=" and value = 2 + or + result = "-=" and value = 3 + or + result = "/=" and value = 4 + or + result = "=" and value = 5 + ) + } + + /** Gets the node corresponding to the field `result`. */ + final Expression getResult() { swift_assignment_def(this, _, result, _) } + + /** Gets the node corresponding to the field `target`. */ + final DirectlyAssignableExpression getTarget() { swift_assignment_def(this, _, _, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_assignment_def(this, _, result, _) or swift_assignment_def(this, _, _, result) + } + } + + /** A class representing `associatedtype_declaration` nodes. */ + class AssociatedtypeDeclaration extends @swift_associatedtype_declaration, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "AssociatedtypeDeclaration" } + + /** Gets the node corresponding to the field `default_value`. */ + final Type getDefaultValue() { swift_associatedtype_declaration_default_value(this, result) } + + /** Gets the node corresponding to the field `must_inherit`. */ + final Type getMustInherit() { swift_associatedtype_declaration_must_inherit(this, result) } + + /** Gets the node corresponding to the field `name`. */ + final TypeIdentifier getName() { swift_associatedtype_declaration_def(this, result) } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_associatedtype_declaration_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_associatedtype_declaration_default_value(this, result) or + swift_associatedtype_declaration_must_inherit(this, result) or + swift_associatedtype_declaration_def(this, result) or + swift_associatedtype_declaration_child(this, _, result) + } + } + + /** A class representing `attribute` nodes. */ + class Attribute extends @swift_attribute, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "Attribute" } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_attribute_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_attribute_child(this, _, result) } + } + + /** A class representing `availability_condition` nodes. */ + class AvailabilityCondition extends @swift_availability_condition, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "AvailabilityCondition" } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_availability_condition_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_availability_condition_child(this, _, result) + } + } + + /** A class representing `await_expression` nodes. */ + class AwaitExpression extends @swift_await_expression, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "AwaitExpression" } + + /** Gets the node corresponding to the field `expr`. */ + final Expression getExpr() { swift_await_expression_expr(this, result) } + + /** Gets the child of this node. */ + final Expression getChild() { swift_await_expression_child(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_await_expression_expr(this, result) or swift_await_expression_child(this, result) + } + } + + /** A class representing `bang` tokens. */ + class Bang extends @swift_token_bang, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "Bang" } + } + + /** A class representing `bin_literal` tokens. */ + class BinLiteral extends @swift_token_bin_literal, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "BinLiteral" } + } + + /** A class representing `bitwise_operation` nodes. */ + class BitwiseOperation extends @swift_bitwise_operation, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "BitwiseOperation" } + + /** Gets the node corresponding to the field `lhs`. */ + final Expression getLhs() { swift_bitwise_operation_def(this, result, _, _) } + + /** Gets the node corresponding to the field `op`. */ + final string getOp() { + exists(int value | swift_bitwise_operation_def(this, _, value, _) | + result = "&" and value = 0 + or + result = "<<" and value = 1 + or + result = ">>" and value = 2 + or + result = "^" and value = 3 + or + result = "|" and value = 4 + ) + } + + /** Gets the node corresponding to the field `rhs`. */ + final Expression getRhs() { swift_bitwise_operation_def(this, _, _, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_bitwise_operation_def(this, result, _, _) or + swift_bitwise_operation_def(this, _, _, result) + } + } + + /** A class representing `boolean_literal` tokens. */ + class BooleanLiteral extends @swift_token_boolean_literal, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "BooleanLiteral" } + } + + /** A class representing `call_expression` nodes. */ + class CallExpression extends @swift_call_expression, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "CallExpression" } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_call_expression_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_call_expression_child(this, _, result) } + } + + /** A class representing `call_suffix` nodes. */ + class CallSuffix extends @swift_call_suffix, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "CallSuffix" } + + /** Gets the node corresponding to the field `name`. */ + final SimpleIdentifier getName(int i) { swift_call_suffix_name(this, i, result) } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_call_suffix_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_call_suffix_name(this, _, result) or swift_call_suffix_child(this, _, result) + } + } + + /** A class representing `capture_list` nodes. */ + class CaptureList extends @swift_capture_list, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "CaptureList" } + + /** Gets the `i`th child of this node. */ + final CaptureListItem getChild(int i) { swift_capture_list_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_capture_list_child(this, _, result) } + } + + /** A class representing `capture_list_item` nodes. */ + class CaptureListItem extends @swift_capture_list_item, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "CaptureListItem" } + + /** Gets the node corresponding to the field `name`. */ + final AstNode getName() { swift_capture_list_item_def(this, result) } + + /** Gets the node corresponding to the field `value`. */ + final Expression getValue() { swift_capture_list_item_value(this, result) } + + /** Gets the child of this node. */ + final OwnershipModifier getChild() { swift_capture_list_item_child(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_capture_list_item_def(this, result) or + swift_capture_list_item_value(this, result) or + swift_capture_list_item_child(this, result) + } + } + + /** A class representing `catch_block` nodes. */ + class CatchBlock extends @swift_catch_block, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "CatchBlock" } + + /** Gets the node corresponding to the field `error`. */ + final Pattern getError() { swift_catch_block_error(this, result) } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_catch_block_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_catch_block_error(this, result) or swift_catch_block_child(this, _, result) + } + } + + /** A class representing `catch_keyword` tokens. */ + class CatchKeyword extends @swift_token_catch_keyword, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "CatchKeyword" } + } + + /** A class representing `check_expression` nodes. */ + class CheckExpression extends @swift_check_expression, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "CheckExpression" } + + /** Gets the node corresponding to the field `op`. */ + final string getOp() { + exists(int value | swift_check_expression_def(this, value, _, _) | + (result = "is" and value = 0) + ) + } + + /** Gets the node corresponding to the field `target`. */ + final Expression getTarget() { swift_check_expression_def(this, _, result, _) } + + /** Gets the node corresponding to the field `type`. */ + final Type getType() { swift_check_expression_def(this, _, _, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_check_expression_def(this, _, result, _) or + swift_check_expression_def(this, _, _, result) + } + } + + /** A class representing `class_body` nodes. */ + class ClassBody extends @swift_class_body, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ClassBody" } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_class_body_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_class_body_child(this, _, result) } + } + + /** A class representing `class_declaration` nodes. */ + class ClassDeclaration extends @swift_class_declaration, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ClassDeclaration" } + + /** Gets the node corresponding to the field `body`. */ + final AstNode getBody() { swift_class_declaration_def(this, result, _, _) } + + /** Gets the node corresponding to the field `declaration_kind`. */ + final string getDeclarationKind() { + exists(int value | swift_class_declaration_def(this, _, value, _) | + result = "actor" and value = 0 + or + result = "class" and value = 1 + or + result = "enum" and value = 2 + or + result = "extension" and value = 3 + or + result = "struct" and value = 4 + ) + } + + /** Gets the node corresponding to the field `name`. */ + final AstNode getName() { swift_class_declaration_def(this, _, _, result) } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_class_declaration_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_class_declaration_def(this, result, _, _) or + swift_class_declaration_def(this, _, _, result) or + swift_class_declaration_child(this, _, result) + } + } + + /** A class representing `comment` tokens. */ + class Comment extends @swift_token_comment, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "Comment" } + } + + /** A class representing `comparison_expression` nodes. */ + class ComparisonExpression extends @swift_comparison_expression, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ComparisonExpression" } + + /** Gets the node corresponding to the field `lhs`. */ + final Expression getLhs() { swift_comparison_expression_def(this, result, _, _) } + + /** Gets the node corresponding to the field `op`. */ + final string getOp() { + exists(int value | swift_comparison_expression_def(this, _, value, _) | + result = "<" and value = 0 + or + result = "<=" and value = 1 + or + result = ">" and value = 2 + or + result = ">=" and value = 3 + ) + } + + /** Gets the node corresponding to the field `rhs`. */ + final Expression getRhs() { swift_comparison_expression_def(this, _, _, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_comparison_expression_def(this, result, _, _) or + swift_comparison_expression_def(this, _, _, result) + } + } + + /** A class representing `computed_getter` nodes. */ + class ComputedGetter extends @swift_computed_getter, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ComputedGetter" } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_computed_getter_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_computed_getter_child(this, _, result) } + } + + /** A class representing `computed_modify` nodes. */ + class ComputedModify extends @swift_computed_modify, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ComputedModify" } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_computed_modify_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_computed_modify_child(this, _, result) } + } + + /** A class representing `computed_property` nodes. */ + class ComputedProperty extends @swift_computed_property, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ComputedProperty" } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_computed_property_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_computed_property_child(this, _, result) } + } + + /** A class representing `computed_setter` nodes. */ + class ComputedSetter extends @swift_computed_setter, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ComputedSetter" } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_computed_setter_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_computed_setter_child(this, _, result) } + } + + /** A class representing `conjunction_expression` nodes. */ + class ConjunctionExpression extends @swift_conjunction_expression, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ConjunctionExpression" } + + /** Gets the node corresponding to the field `lhs`. */ + final Expression getLhs() { swift_conjunction_expression_def(this, result, _, _) } + + /** Gets the node corresponding to the field `op`. */ + final string getOp() { + exists(int value | swift_conjunction_expression_def(this, _, value, _) | + (result = "&&" and value = 0) + ) + } + + /** Gets the node corresponding to the field `rhs`. */ + final Expression getRhs() { swift_conjunction_expression_def(this, _, _, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_conjunction_expression_def(this, result, _, _) or + swift_conjunction_expression_def(this, _, _, result) + } + } + + /** A class representing `constructor_expression` nodes. */ + class ConstructorExpression extends @swift_constructor_expression, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ConstructorExpression" } + + /** Gets the node corresponding to the field `constructed_type`. */ + final AstNode getConstructedType() { swift_constructor_expression_def(this, result, _) } + + /** Gets the child of this node. */ + final ConstructorSuffix getChild() { swift_constructor_expression_def(this, _, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_constructor_expression_def(this, result, _) or + swift_constructor_expression_def(this, _, result) + } + } + + /** A class representing `constructor_suffix` nodes. */ + class ConstructorSuffix extends @swift_constructor_suffix, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ConstructorSuffix" } + + /** Gets the node corresponding to the field `name`. */ + final SimpleIdentifier getName(int i) { swift_constructor_suffix_name(this, i, result) } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_constructor_suffix_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_constructor_suffix_name(this, _, result) or + swift_constructor_suffix_child(this, _, result) + } + } + + /** A class representing `control_transfer_statement` nodes. */ + class ControlTransferStatement extends @swift_control_transfer_statement, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ControlTransferStatement" } + + /** Gets the node corresponding to the field `result`. */ + final Expression getResult() { swift_control_transfer_statement_result(this, result) } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_control_transfer_statement_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_control_transfer_statement_result(this, result) or + swift_control_transfer_statement_child(this, _, result) + } + } + + /** A class representing `custom_operator` tokens. */ + class CustomOperator extends @swift_token_custom_operator, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "CustomOperator" } + } + + /** A class representing `default_keyword` tokens. */ + class DefaultKeyword extends @swift_token_default_keyword, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "DefaultKeyword" } + } + + /** A class representing `deinit_declaration` nodes. */ + class DeinitDeclaration extends @swift_deinit_declaration, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "DeinitDeclaration" } + + /** Gets the node corresponding to the field `body`. */ + final FunctionBody getBody() { swift_deinit_declaration_def(this, result) } + + /** Gets the child of this node. */ + final Modifiers getChild() { swift_deinit_declaration_child(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_deinit_declaration_def(this, result) or swift_deinit_declaration_child(this, result) + } + } + + /** A class representing `deprecated_operator_declaration_body` nodes. */ + class DeprecatedOperatorDeclarationBody extends @swift_deprecated_operator_declaration_body, + AstNode + { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "DeprecatedOperatorDeclarationBody" } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { + swift_deprecated_operator_declaration_body_child(this, i, result) + } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_deprecated_operator_declaration_body_child(this, _, result) + } + } + + /** A class representing `diagnostic` tokens. */ + class Diagnostic extends @swift_token_diagnostic, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "Diagnostic" } + } + + /** A class representing `dictionary_literal` nodes. */ + class DictionaryLiteral extends @swift_dictionary_literal, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "DictionaryLiteral" } + + /** Gets the node corresponding to the field `key`. */ + final Expression getKey(int i) { swift_dictionary_literal_key(this, i, result) } + + /** Gets the node corresponding to the field `value`. */ + final Expression getValue(int i) { swift_dictionary_literal_value(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_dictionary_literal_key(this, _, result) or + swift_dictionary_literal_value(this, _, result) + } + } + + /** A class representing `dictionary_type` nodes. */ + class DictionaryType extends @swift_dictionary_type, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "DictionaryType" } + + /** Gets the node corresponding to the field `key`. */ + final Type getKey() { swift_dictionary_type_def(this, result, _) } + + /** Gets the node corresponding to the field `value`. */ + final Type getValue() { swift_dictionary_type_def(this, _, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_dictionary_type_def(this, result, _) or swift_dictionary_type_def(this, _, result) + } + } + + /** A class representing `didset_clause` nodes. */ + class DidsetClause extends @swift_didset_clause, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "DidsetClause" } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_didset_clause_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_didset_clause_child(this, _, result) } + } + + /** A class representing `directive` nodes. */ + class Directive extends @swift_directive, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "Directive" } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_directive_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_directive_child(this, _, result) } + } + + /** A class representing `directly_assignable_expression` nodes. */ + class DirectlyAssignableExpression extends @swift_directly_assignable_expression, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "DirectlyAssignableExpression" } + + /** Gets the child of this node. */ + final Expression getChild() { swift_directly_assignable_expression_def(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_directly_assignable_expression_def(this, result) + } + } + + /** A class representing `disjunction_expression` nodes. */ + class DisjunctionExpression extends @swift_disjunction_expression, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "DisjunctionExpression" } + + /** Gets the node corresponding to the field `lhs`. */ + final Expression getLhs() { swift_disjunction_expression_def(this, result, _, _) } + + /** Gets the node corresponding to the field `op`. */ + final string getOp() { + exists(int value | swift_disjunction_expression_def(this, _, value, _) | + (result = "||" and value = 0) + ) + } + + /** Gets the node corresponding to the field `rhs`. */ + final Expression getRhs() { swift_disjunction_expression_def(this, _, _, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_disjunction_expression_def(this, result, _, _) or + swift_disjunction_expression_def(this, _, _, result) + } + } + + /** A class representing `do_statement` nodes. */ + class DoStatement extends @swift_do_statement, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "DoStatement" } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_do_statement_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_do_statement_child(this, _, result) } + } + + /** A class representing `else` tokens. */ + class Else extends @swift_token_else, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "Else" } + } + + /** A class representing `enum_class_body` nodes. */ + class EnumClassBody extends @swift_enum_class_body, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "EnumClassBody" } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_enum_class_body_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_enum_class_body_child(this, _, result) } + } + + /** A class representing `enum_entry` nodes. */ + class EnumEntry extends @swift_enum_entry, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "EnumEntry" } + + /** Gets the node corresponding to the field `data_contents`. */ + final EnumTypeParameters getDataContents(int i) { + swift_enum_entry_data_contents(this, i, result) + } + + /** Gets the node corresponding to the field `name`. */ + final SimpleIdentifier getName(int i) { swift_enum_entry_name(this, i, result) } + + /** Gets the node corresponding to the field `raw_value`. */ + final Expression getRawValue(int i) { swift_enum_entry_raw_value(this, i, result) } + + /** Gets the child of this node. */ + final Modifiers getChild() { swift_enum_entry_child(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_enum_entry_data_contents(this, _, result) or + swift_enum_entry_name(this, _, result) or + swift_enum_entry_raw_value(this, _, result) or + swift_enum_entry_child(this, result) + } + } + + /** A class representing `enum_type_parameters` nodes. */ + class EnumTypeParameters extends @swift_enum_type_parameters, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "EnumTypeParameters" } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_enum_type_parameters_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_enum_type_parameters_child(this, _, result) } + } + + /** A class representing `equality_constraint` nodes. */ + class EqualityConstraint extends @swift_equality_constraint, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "EqualityConstraint" } + + /** Gets the node corresponding to the field `constrained_type`. */ + final AstNode getConstrainedType() { swift_equality_constraint_def(this, result, _) } + + /** Gets the node corresponding to the field `must_equal`. */ + final Type getMustEqual() { swift_equality_constraint_def(this, _, result) } + + /** Gets the `i`th child of this node. */ + final Attribute getChild(int i) { swift_equality_constraint_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_equality_constraint_def(this, result, _) or + swift_equality_constraint_def(this, _, result) or + swift_equality_constraint_child(this, _, result) + } + } + + /** A class representing `equality_expression` nodes. */ + class EqualityExpression extends @swift_equality_expression, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "EqualityExpression" } + + /** Gets the node corresponding to the field `lhs`. */ + final Expression getLhs() { swift_equality_expression_def(this, result, _, _) } + + /** Gets the node corresponding to the field `op`. */ + final string getOp() { + exists(int value | swift_equality_expression_def(this, _, value, _) | + result = "!=" and value = 0 + or + result = "!==" and value = 1 + or + result = "==" and value = 2 + or + result = "===" and value = 3 + ) + } + + /** Gets the node corresponding to the field `rhs`. */ + final Expression getRhs() { swift_equality_expression_def(this, _, _, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_equality_expression_def(this, result, _, _) or + swift_equality_expression_def(this, _, _, result) + } + } + + /** A class representing `existential_type` nodes. */ + class ExistentialType extends @swift_existential_type, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ExistentialType" } + + /** Gets the child of this node. */ + final UnannotatedType getChild() { swift_existential_type_def(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_existential_type_def(this, result) } + } + + class Expression extends @swift_expression, AstNode { } + + /** A class representing `external_macro_definition` nodes. */ + class ExternalMacroDefinition extends @swift_external_macro_definition, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ExternalMacroDefinition" } + + /** Gets the child of this node. */ + final ValueArguments getChild() { swift_external_macro_definition_def(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_external_macro_definition_def(this, result) } + } + + /** A class representing `for_statement` nodes. */ + class ForStatement extends @swift_for_statement, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ForStatement" } + + /** Gets the node corresponding to the field `collection`. */ + final Expression getCollection() { swift_for_statement_def(this, result, _) } + + /** Gets the node corresponding to the field `item`. */ + final Pattern getItem() { swift_for_statement_def(this, _, result) } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_for_statement_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_for_statement_def(this, result, _) or + swift_for_statement_def(this, _, result) or + swift_for_statement_child(this, _, result) + } + } + + /** A class representing `fully_open_range` tokens. */ + class FullyOpenRange extends @swift_token_fully_open_range, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "FullyOpenRange" } + } + + /** A class representing `function_body` nodes. */ + class FunctionBody extends @swift_function_body, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "FunctionBody" } + + /** Gets the child of this node. */ + final Statements getChild() { swift_function_body_child(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_function_body_child(this, result) } + } + + /** A class representing `function_declaration` nodes. */ + class FunctionDeclaration extends @swift_function_declaration, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "FunctionDeclaration" } + + /** Gets the node corresponding to the field `body`. */ + final FunctionBody getBody() { swift_function_declaration_def(this, result, _) } + + /** Gets the node corresponding to the field `default_value`. */ + final Expression getDefaultValue(int i) { + swift_function_declaration_default_value(this, i, result) + } + + /** Gets the node corresponding to the field `name`. */ + final AstNode getName() { swift_function_declaration_def(this, _, result) } + + /** Gets the node corresponding to the field `return_type`. */ + final AstNode getReturnType() { swift_function_declaration_return_type(this, result) } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_function_declaration_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_function_declaration_def(this, result, _) or + swift_function_declaration_default_value(this, _, result) or + swift_function_declaration_def(this, _, result) or + swift_function_declaration_return_type(this, result) or + swift_function_declaration_child(this, _, result) + } + } + + /** A class representing `function_modifier` tokens. */ + class FunctionModifier extends @swift_token_function_modifier, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "FunctionModifier" } + } + + /** A class representing `function_type` nodes. */ + class FunctionType extends @swift_function_type, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "FunctionType" } + + /** Gets the node corresponding to the field `params`. */ + final UnannotatedType getParams() { swift_function_type_def(this, result, _) } + + /** Gets the node corresponding to the field `return_type`. */ + final Type getReturnType() { swift_function_type_def(this, _, result) } + + /** Gets the child of this node. */ + final AstNode getChild() { swift_function_type_child(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_function_type_def(this, result, _) or + swift_function_type_def(this, _, result) or + swift_function_type_child(this, result) + } + } + + /** A class representing `getter_specifier` nodes. */ + class GetterSpecifier extends @swift_getter_specifier, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "GetterSpecifier" } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_getter_specifier_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_getter_specifier_child(this, _, result) } + } + + class GlobalDeclaration extends @swift_global_declaration, AstNode { } + + /** A class representing `guard_statement` nodes. */ + class GuardStatement extends @swift_guard_statement, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "GuardStatement" } + + /** Gets the node corresponding to the field `condition`. */ + final IfCondition getCondition(int i) { swift_guard_statement_condition(this, i, result) } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_guard_statement_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_guard_statement_condition(this, _, result) or + swift_guard_statement_child(this, _, result) + } + } + + /** A class representing `hex_literal` tokens. */ + class HexLiteral extends @swift_token_hex_literal, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "HexLiteral" } + } + + /** A class representing `identifier` nodes. */ + class Identifier extends @swift_identifier, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "Identifier" } + + /** Gets the `i`th child of this node. */ + final SimpleIdentifier getChild(int i) { swift_identifier_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_identifier_child(this, _, result) } + } + + /** A class representing `if_condition` nodes. */ + class IfCondition extends @swift_if_condition, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "IfCondition" } + + /** Gets the child of this node. */ + final AstNode getChild() { swift_if_condition_def(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_if_condition_def(this, result) } + } + + /** A class representing `if_let_binding` nodes. */ + class IfLetBinding extends @swift_if_let_binding, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "IfLetBinding" } + + /** Gets the node corresponding to the field `bound_identifier`. */ + final SimpleIdentifier getBoundIdentifier() { + swift_if_let_binding_bound_identifier(this, result) + } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_if_let_binding_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_if_let_binding_bound_identifier(this, result) or + swift_if_let_binding_child(this, _, result) + } + } + + /** A class representing `if_statement` nodes. */ + class IfStatement extends @swift_if_statement, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "IfStatement" } + + /** Gets the node corresponding to the field `condition`. */ + final IfCondition getCondition(int i) { swift_if_statement_condition(this, i, result) } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_if_statement_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_if_statement_condition(this, _, result) or swift_if_statement_child(this, _, result) + } + } + + /** A class representing `implicitly_unwrapped_type` nodes. */ + class ImplicitlyUnwrappedType extends @swift_implicitly_unwrapped_type, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ImplicitlyUnwrappedType" } + + /** Gets the child of this node. */ + final Type getChild() { swift_implicitly_unwrapped_type_def(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_implicitly_unwrapped_type_def(this, result) } + } + + /** A class representing `import_declaration` nodes. */ + class ImportDeclaration extends @swift_import_declaration, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ImportDeclaration" } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_import_declaration_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_import_declaration_child(this, _, result) } + } + + /** A class representing `infix_expression` nodes. */ + class InfixExpression extends @swift_infix_expression, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "InfixExpression" } + + /** Gets the node corresponding to the field `lhs`. */ + final Expression getLhs() { swift_infix_expression_def(this, result, _, _) } + + /** Gets the node corresponding to the field `op`. */ + final CustomOperator getOp() { swift_infix_expression_def(this, _, result, _) } + + /** Gets the node corresponding to the field `rhs`. */ + final Expression getRhs() { swift_infix_expression_def(this, _, _, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_infix_expression_def(this, result, _, _) or + swift_infix_expression_def(this, _, result, _) or + swift_infix_expression_def(this, _, _, result) + } + } + + /** A class representing `inheritance_constraint` nodes. */ + class InheritanceConstraint extends @swift_inheritance_constraint, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "InheritanceConstraint" } + + /** Gets the node corresponding to the field `constrained_type`. */ + final AstNode getConstrainedType() { swift_inheritance_constraint_def(this, result, _) } + + /** Gets the node corresponding to the field `inherits_from`. */ + final AstNode getInheritsFrom() { swift_inheritance_constraint_def(this, _, result) } + + /** Gets the `i`th child of this node. */ + final Attribute getChild(int i) { swift_inheritance_constraint_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_inheritance_constraint_def(this, result, _) or + swift_inheritance_constraint_def(this, _, result) or + swift_inheritance_constraint_child(this, _, result) + } + } + + /** A class representing `inheritance_modifier` tokens. */ + class InheritanceModifier extends @swift_token_inheritance_modifier, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "InheritanceModifier" } + } + + /** A class representing `inheritance_specifier` nodes. */ + class InheritanceSpecifier extends @swift_inheritance_specifier, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "InheritanceSpecifier" } + + /** Gets the node corresponding to the field `inherits_from`. */ + final AstNode getInheritsFrom() { swift_inheritance_specifier_def(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_inheritance_specifier_def(this, result) } + } + + /** A class representing `init_declaration` nodes. */ + class InitDeclaration extends @swift_init_declaration, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "InitDeclaration" } + + /** Gets the node corresponding to the field `body`. */ + final FunctionBody getBody() { swift_init_declaration_body(this, result) } + + /** Gets the node corresponding to the field `default_value`. */ + final Expression getDefaultValue(int i) { + swift_init_declaration_default_value(this, i, result) + } + + /** Gets the node corresponding to the field `name`. */ + final string getName() { + exists(int value | swift_init_declaration_def(this, value) | (result = "init" and value = 0)) + } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_init_declaration_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_init_declaration_body(this, result) or + swift_init_declaration_default_value(this, _, result) or + swift_init_declaration_child(this, _, result) + } + } + + /** A class representing `integer_literal` tokens. */ + class IntegerLiteral extends @swift_token_integer_literal, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "IntegerLiteral" } + } + + /** A class representing `interpolated_expression` nodes. */ + class InterpolatedExpression extends @swift_interpolated_expression, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "InterpolatedExpression" } + + /** Gets the node corresponding to the field `name`. */ + final ValueArgumentLabel getName() { swift_interpolated_expression_name(this, result) } + + /** Gets the node corresponding to the field `reference_specifier`. */ + final ValueArgumentLabel getReferenceSpecifier(int i) { + swift_interpolated_expression_reference_specifier(this, i, result) + } + + /** Gets the node corresponding to the field `value`. */ + final Expression getValue() { swift_interpolated_expression_value(this, result) } + + /** Gets the child of this node. */ + final TypeModifiers getChild() { swift_interpolated_expression_child(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_interpolated_expression_name(this, result) or + swift_interpolated_expression_reference_specifier(this, _, result) or + swift_interpolated_expression_value(this, result) or + swift_interpolated_expression_child(this, result) + } + } + + /** A class representing `key_path_expression` nodes. */ + class KeyPathExpression extends @swift_key_path_expression, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "KeyPathExpression" } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_key_path_expression_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_key_path_expression_child(this, _, result) } + } + + /** A class representing `key_path_string_expression` nodes. */ + class KeyPathStringExpression extends @swift_key_path_string_expression, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "KeyPathStringExpression" } + + /** Gets the child of this node. */ + final Expression getChild() { swift_key_path_string_expression_def(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_key_path_string_expression_def(this, result) } + } + + /** A class representing `lambda_function_type` nodes. */ + class LambdaFunctionType extends @swift_lambda_function_type, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "LambdaFunctionType" } + + /** Gets the node corresponding to the field `return_type`. */ + final AstNode getReturnType() { swift_lambda_function_type_return_type(this, result) } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_lambda_function_type_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_lambda_function_type_return_type(this, result) or + swift_lambda_function_type_child(this, _, result) + } + } + + /** A class representing `lambda_function_type_parameters` nodes. */ + class LambdaFunctionTypeParameters extends @swift_lambda_function_type_parameters, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "LambdaFunctionTypeParameters" } + + /** Gets the `i`th child of this node. */ + final LambdaParameter getChild(int i) { + swift_lambda_function_type_parameters_child(this, i, result) + } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_lambda_function_type_parameters_child(this, _, result) + } + } + + /** A class representing `lambda_literal` nodes. */ + class LambdaLiteral extends @swift_lambda_literal, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "LambdaLiteral" } + + /** Gets the node corresponding to the field `captures`. */ + final CaptureList getCaptures() { swift_lambda_literal_captures(this, result) } + + /** Gets the node corresponding to the field `type`. */ + final LambdaFunctionType getType() { swift_lambda_literal_type(this, result) } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_lambda_literal_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_lambda_literal_captures(this, result) or + swift_lambda_literal_type(this, result) or + swift_lambda_literal_child(this, _, result) + } + } + + /** A class representing `lambda_parameter` nodes. */ + class LambdaParameter extends @swift_lambda_parameter, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "LambdaParameter" } + + /** Gets the node corresponding to the field `external_name`. */ + final SimpleIdentifier getExternalName() { swift_lambda_parameter_external_name(this, result) } + + /** Gets the node corresponding to the field `name`. */ + final SimpleIdentifier getName() { swift_lambda_parameter_name(this, result) } + + /** Gets the node corresponding to the field `type`. */ + final AstNode getType() { swift_lambda_parameter_type(this, result) } + + /** Gets the child of this node. */ + final AstNode getChild() { swift_lambda_parameter_child(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_lambda_parameter_external_name(this, result) or + swift_lambda_parameter_name(this, result) or + swift_lambda_parameter_type(this, result) or + swift_lambda_parameter_child(this, result) + } + } + + /** A class representing `line_str_text` tokens. */ + class LineStrText extends @swift_token_line_str_text, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "LineStrText" } + } + + /** A class representing `line_string_literal` nodes. */ + class LineStringLiteral extends @swift_line_string_literal, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "LineStringLiteral" } + + /** Gets the node corresponding to the field `interpolation`. */ + final InterpolatedExpression getInterpolation(int i) { + swift_line_string_literal_interpolation(this, i, result) + } + + /** Gets the node corresponding to the field `text`. */ + final AstNode getText(int i) { swift_line_string_literal_text(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_line_string_literal_interpolation(this, _, result) or + swift_line_string_literal_text(this, _, result) + } + } + + class LocalDeclaration extends @swift_local_declaration, AstNode { } + + /** A class representing `macro_declaration` nodes. */ + class MacroDeclaration extends @swift_macro_declaration, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "MacroDeclaration" } + + /** Gets the node corresponding to the field `default_value`. */ + final Expression getDefaultValue(int i) { + swift_macro_declaration_default_value(this, i, result) + } + + /** Gets the node corresponding to the field `definition`. */ + final MacroDefinition getDefinition() { swift_macro_declaration_definition(this, result) } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_macro_declaration_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_macro_declaration_default_value(this, _, result) or + swift_macro_declaration_definition(this, result) or + swift_macro_declaration_child(this, _, result) + } + } + + /** A class representing `macro_definition` nodes. */ + class MacroDefinition extends @swift_macro_definition, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "MacroDefinition" } + + /** Gets the node corresponding to the field `body`. */ + final AstNode getBody() { swift_macro_definition_def(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_macro_definition_def(this, result) } + } + + /** A class representing `macro_invocation` nodes. */ + class MacroInvocation extends @swift_macro_invocation, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "MacroInvocation" } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_macro_invocation_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_macro_invocation_child(this, _, result) } + } + + /** A class representing `member_modifier` tokens. */ + class MemberModifier extends @swift_token_member_modifier, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "MemberModifier" } + } + + /** A class representing `metatype` nodes. */ + class Metatype extends @swift_metatype, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "Metatype" } + + /** Gets the child of this node. */ + final UnannotatedType getChild() { swift_metatype_def(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_metatype_def(this, result) } + } + + /** A class representing `modifiers` nodes. */ + class Modifiers extends @swift_modifiers, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "Modifiers" } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_modifiers_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_modifiers_child(this, _, result) } + } + + /** A class representing `modify_specifier` nodes. */ + class ModifySpecifier extends @swift_modify_specifier, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ModifySpecifier" } + + /** Gets the child of this node. */ + final MutationModifier getChild() { swift_modify_specifier_child(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_modify_specifier_child(this, result) } + } + + /** A class representing `multi_line_str_text` tokens. */ + class MultiLineStrText extends @swift_token_multi_line_str_text, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "MultiLineStrText" } + } + + /** A class representing `multi_line_string_literal` nodes. */ + class MultiLineStringLiteral extends @swift_multi_line_string_literal, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "MultiLineStringLiteral" } + + /** Gets the node corresponding to the field `interpolation`. */ + final InterpolatedExpression getInterpolation(int i) { + swift_multi_line_string_literal_interpolation(this, i, result) + } + + /** Gets the node corresponding to the field `text`. */ + final AstNode getText(int i) { swift_multi_line_string_literal_text(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_multi_line_string_literal_interpolation(this, _, result) or + swift_multi_line_string_literal_text(this, _, result) + } + } + + /** A class representing `multiline_comment` tokens. */ + class MultilineComment extends @swift_token_multiline_comment, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "MultilineComment" } + } + + /** A class representing `multiplicative_expression` nodes. */ + class MultiplicativeExpression extends @swift_multiplicative_expression, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "MultiplicativeExpression" } + + /** Gets the node corresponding to the field `lhs`. */ + final Expression getLhs() { swift_multiplicative_expression_def(this, result, _, _) } + + /** Gets the node corresponding to the field `op`. */ + final string getOp() { + exists(int value | swift_multiplicative_expression_def(this, _, value, _) | + result = "%" and value = 0 + or + result = "*" and value = 1 + or + result = "/" and value = 2 + ) + } + + /** Gets the node corresponding to the field `rhs`. */ + final Expression getRhs() { swift_multiplicative_expression_def(this, _, _, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_multiplicative_expression_def(this, result, _, _) or + swift_multiplicative_expression_def(this, _, _, result) + } + } + + /** A class representing `mutation_modifier` tokens. */ + class MutationModifier extends @swift_token_mutation_modifier, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "MutationModifier" } + } + + /** A class representing `navigation_expression` nodes. */ + class NavigationExpression extends @swift_navigation_expression, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "NavigationExpression" } + + /** Gets the node corresponding to the field `suffix`. */ + final NavigationSuffix getSuffix() { swift_navigation_expression_def(this, result) } + + /** Gets the node corresponding to the field `target`. */ + final AstNode getTarget(int i) { swift_navigation_expression_target(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_navigation_expression_def(this, result) or + swift_navigation_expression_target(this, _, result) + } + } + + /** A class representing `navigation_suffix` nodes. */ + class NavigationSuffix extends @swift_navigation_suffix, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "NavigationSuffix" } + + /** Gets the node corresponding to the field `suffix`. */ + final AstNode getSuffix() { swift_navigation_suffix_def(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_navigation_suffix_def(this, result) } + } + + /** A class representing `nested_type_identifier` nodes. */ + class NestedTypeIdentifier extends @swift_nested_type_identifier, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "NestedTypeIdentifier" } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_nested_type_identifier_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_nested_type_identifier_child(this, _, result) + } + } + + /** A class representing `nil_coalescing_expression` nodes. */ + class NilCoalescingExpression extends @swift_nil_coalescing_expression, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "NilCoalescingExpression" } + + /** Gets the node corresponding to the field `if_nil`. */ + final Expression getIfNil() { swift_nil_coalescing_expression_def(this, result, _) } + + /** Gets the node corresponding to the field `value`. */ + final Expression getValue() { swift_nil_coalescing_expression_def(this, _, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_nil_coalescing_expression_def(this, result, _) or + swift_nil_coalescing_expression_def(this, _, result) + } + } + + /** A class representing `oct_literal` tokens. */ + class OctLiteral extends @swift_token_oct_literal, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "OctLiteral" } + } + + /** A class representing `opaque_type` nodes. */ + class OpaqueType extends @swift_opaque_type, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "OpaqueType" } + + /** Gets the child of this node. */ + final UnannotatedType getChild() { swift_opaque_type_def(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_opaque_type_def(this, result) } + } + + /** A class representing `open_end_range_expression` nodes. */ + class OpenEndRangeExpression extends @swift_open_end_range_expression, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "OpenEndRangeExpression" } + + /** Gets the node corresponding to the field `start`. */ + final Expression getStart() { swift_open_end_range_expression_def(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_open_end_range_expression_def(this, result) } + } + + /** A class representing `open_start_range_expression` nodes. */ + class OpenStartRangeExpression extends @swift_open_start_range_expression, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "OpenStartRangeExpression" } + + /** Gets the node corresponding to the field `end`. */ + final Expression getEnd() { swift_open_start_range_expression_def(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_open_start_range_expression_def(this, result) + } + } + + /** A class representing `operator_declaration` nodes. */ + class OperatorDeclaration extends @swift_operator_declaration, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "OperatorDeclaration" } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_operator_declaration_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_operator_declaration_child(this, _, result) } + } + + /** A class representing `optional_chain_marker` nodes. */ + class OptionalChainMarker extends @swift_optional_chain_marker, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "OptionalChainMarker" } + + /** Gets the child of this node. */ + final Expression getChild() { swift_optional_chain_marker_def(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_optional_chain_marker_def(this, result) } + } + + /** A class representing `optional_type` nodes. */ + class OptionalType extends @swift_optional_type, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "OptionalType" } + + /** Gets the node corresponding to the field `wrapped`. */ + final AstNode getWrapped() { swift_optional_type_def(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_optional_type_def(this, result) } + } + + /** A class representing `ownership_modifier` tokens. */ + class OwnershipModifier extends @swift_token_ownership_modifier, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "OwnershipModifier" } + } + + /** A class representing `parameter` nodes. */ + class Parameter extends @swift_parameter, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "Parameter" } + + /** Gets the node corresponding to the field `external_name`. */ + final SimpleIdentifier getExternalName() { swift_parameter_external_name(this, result) } + + /** Gets the node corresponding to the field `name`. */ + final SimpleIdentifier getName() { swift_parameter_def(this, result, _) } + + /** Gets the node corresponding to the field `type`. */ + final AstNode getType() { swift_parameter_def(this, _, result) } + + /** Gets the child of this node. */ + final ParameterModifiers getChild() { swift_parameter_child(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_parameter_external_name(this, result) or + swift_parameter_def(this, result, _) or + swift_parameter_def(this, _, result) or + swift_parameter_child(this, result) + } + } + + /** A class representing `parameter_modifier` tokens. */ + class ParameterModifier extends @swift_token_parameter_modifier, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ParameterModifier" } + } + + /** A class representing `parameter_modifiers` nodes. */ + class ParameterModifiers extends @swift_parameter_modifiers, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ParameterModifiers" } + + /** Gets the `i`th child of this node. */ + final ParameterModifier getChild(int i) { swift_parameter_modifiers_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_parameter_modifiers_child(this, _, result) } + } + + /** A class representing `pattern` nodes. */ + class Pattern extends @swift_pattern, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "Pattern" } + + /** Gets the node corresponding to the field `bound_identifier`. */ + final SimpleIdentifier getBoundIdentifier() { swift_pattern_bound_identifier(this, result) } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_pattern_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_pattern_bound_identifier(this, result) or swift_pattern_child(this, _, result) + } + } + + /** A class representing `playground_literal` nodes. */ + class PlaygroundLiteral extends @swift_playground_literal, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "PlaygroundLiteral" } + + /** Gets the `i`th child of this node. */ + final Expression getChild(int i) { swift_playground_literal_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_playground_literal_child(this, _, result) } + } + + /** A class representing `postfix_expression` nodes. */ + class PostfixExpression extends @swift_postfix_expression, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "PostfixExpression" } + + /** Gets the node corresponding to the field `operation`. */ + final AstNode getOperation() { swift_postfix_expression_def(this, result, _) } + + /** Gets the node corresponding to the field `target`. */ + final Expression getTarget() { swift_postfix_expression_def(this, _, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_postfix_expression_def(this, result, _) or swift_postfix_expression_def(this, _, result) + } + } + + /** A class representing `precedence_group_attribute` nodes. */ + class PrecedenceGroupAttribute extends @swift_precedence_group_attribute, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "PrecedenceGroupAttribute" } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_precedence_group_attribute_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_precedence_group_attribute_child(this, _, result) + } + } + + /** A class representing `precedence_group_attributes` nodes. */ + class PrecedenceGroupAttributes extends @swift_precedence_group_attributes, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "PrecedenceGroupAttributes" } + + /** Gets the `i`th child of this node. */ + final PrecedenceGroupAttribute getChild(int i) { + swift_precedence_group_attributes_child(this, i, result) + } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_precedence_group_attributes_child(this, _, result) + } + } + + /** A class representing `precedence_group_declaration` nodes. */ + class PrecedenceGroupDeclaration extends @swift_precedence_group_declaration, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "PrecedenceGroupDeclaration" } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_precedence_group_declaration_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_precedence_group_declaration_child(this, _, result) + } + } + + /** A class representing `prefix_expression` nodes. */ + class PrefixExpression extends @swift_prefix_expression, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "PrefixExpression" } + + /** Gets the node corresponding to the field `operation`. */ + final AstNode getOperation() { swift_prefix_expression_def(this, result, _) } + + /** Gets the node corresponding to the field `target`. */ + final Expression getTarget() { swift_prefix_expression_def(this, _, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_prefix_expression_def(this, result, _) or swift_prefix_expression_def(this, _, result) + } + } + + /** A class representing `property_behavior_modifier` tokens. */ + class PropertyBehaviorModifier extends @swift_token_property_behavior_modifier, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "PropertyBehaviorModifier" } + } + + /** A class representing `property_declaration` nodes. */ + class PropertyDeclaration extends @swift_property_declaration, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "PropertyDeclaration" } + + /** Gets the node corresponding to the field `computed_value`. */ + final ComputedProperty getComputedValue(int i) { + swift_property_declaration_computed_value(this, i, result) + } + + /** Gets the node corresponding to the field `name`. */ + final Pattern getName(int i) { swift_property_declaration_name(this, i, result) } + + /** Gets the node corresponding to the field `value`. */ + final Expression getValue(int i) { swift_property_declaration_value(this, i, result) } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_property_declaration_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_property_declaration_computed_value(this, _, result) or + swift_property_declaration_name(this, _, result) or + swift_property_declaration_value(this, _, result) or + swift_property_declaration_child(this, _, result) + } + } + + /** A class representing `property_modifier` tokens. */ + class PropertyModifier extends @swift_token_property_modifier, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "PropertyModifier" } + } + + /** A class representing `protocol_body` nodes. */ + class ProtocolBody extends @swift_protocol_body, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ProtocolBody" } + + /** Gets the `i`th child of this node. */ + final ProtocolMemberDeclaration getChild(int i) { swift_protocol_body_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_protocol_body_child(this, _, result) } + } + + /** A class representing `protocol_composition_type` nodes. */ + class ProtocolCompositionType extends @swift_protocol_composition_type, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ProtocolCompositionType" } + + /** Gets the `i`th child of this node. */ + final UnannotatedType getChild(int i) { swift_protocol_composition_type_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_protocol_composition_type_child(this, _, result) + } + } + + /** A class representing `protocol_declaration` nodes. */ + class ProtocolDeclaration extends @swift_protocol_declaration, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ProtocolDeclaration" } + + /** Gets the node corresponding to the field `body`. */ + final ProtocolBody getBody() { swift_protocol_declaration_def(this, result, _, _) } + + /** Gets the node corresponding to the field `declaration_kind`. */ + final string getDeclarationKind() { + exists(int value | swift_protocol_declaration_def(this, _, value, _) | + (result = "protocol" and value = 0) + ) + } + + /** Gets the node corresponding to the field `name`. */ + final TypeIdentifier getName() { swift_protocol_declaration_def(this, _, _, result) } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_protocol_declaration_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_protocol_declaration_def(this, result, _, _) or + swift_protocol_declaration_def(this, _, _, result) or + swift_protocol_declaration_child(this, _, result) + } + } + + /** A class representing `protocol_function_declaration` nodes. */ + class ProtocolFunctionDeclaration extends @swift_protocol_function_declaration, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ProtocolFunctionDeclaration" } + + /** Gets the node corresponding to the field `body`. */ + final FunctionBody getBody() { swift_protocol_function_declaration_body(this, result) } + + /** Gets the node corresponding to the field `default_value`. */ + final Expression getDefaultValue(int i) { + swift_protocol_function_declaration_default_value(this, i, result) + } + + /** Gets the node corresponding to the field `name`. */ + final AstNode getName() { swift_protocol_function_declaration_def(this, result) } + + /** Gets the node corresponding to the field `return_type`. */ + final AstNode getReturnType() { swift_protocol_function_declaration_return_type(this, result) } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_protocol_function_declaration_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_protocol_function_declaration_body(this, result) or + swift_protocol_function_declaration_default_value(this, _, result) or + swift_protocol_function_declaration_def(this, result) or + swift_protocol_function_declaration_return_type(this, result) or + swift_protocol_function_declaration_child(this, _, result) + } + } + + class ProtocolMemberDeclaration extends @swift_protocol_member_declaration, AstNode { } + + /** A class representing `protocol_property_declaration` nodes. */ + class ProtocolPropertyDeclaration extends @swift_protocol_property_declaration, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ProtocolPropertyDeclaration" } + + /** Gets the node corresponding to the field `name`. */ + final Pattern getName() { swift_protocol_property_declaration_def(this, result) } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_protocol_property_declaration_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_protocol_property_declaration_def(this, result) or + swift_protocol_property_declaration_child(this, _, result) + } + } + + /** A class representing `protocol_property_requirements` nodes. */ + class ProtocolPropertyRequirements extends @swift_protocol_property_requirements, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ProtocolPropertyRequirements" } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_protocol_property_requirements_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_protocol_property_requirements_child(this, _, result) + } + } + + /** A class representing `range_expression` nodes. */ + class RangeExpression extends @swift_range_expression, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "RangeExpression" } + + /** Gets the node corresponding to the field `end`. */ + final Expression getEnd() { swift_range_expression_def(this, result, _, _) } + + /** Gets the node corresponding to the field `op`. */ + final string getOp() { + exists(int value | swift_range_expression_def(this, _, value, _) | + result = "..." and value = 0 + or + result = "..<" and value = 1 + ) + } + + /** Gets the node corresponding to the field `start`. */ + final Expression getStart() { swift_range_expression_def(this, _, _, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_range_expression_def(this, result, _, _) or + swift_range_expression_def(this, _, _, result) + } + } + + /** A class representing `raw_str_continuing_indicator` tokens. */ + class RawStrContinuingIndicator extends @swift_token_raw_str_continuing_indicator, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "RawStrContinuingIndicator" } + } + + /** A class representing `raw_str_end_part` tokens. */ + class RawStrEndPart extends @swift_token_raw_str_end_part, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "RawStrEndPart" } + } + + /** A class representing `raw_str_interpolation` nodes. */ + class RawStrInterpolation extends @swift_raw_str_interpolation, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "RawStrInterpolation" } + + /** Gets the node corresponding to the field `interpolation`. */ + final InterpolatedExpression getInterpolation(int i) { + swift_raw_str_interpolation_interpolation(this, i, result) + } + + /** Gets the child of this node. */ + final RawStrInterpolationStart getChild() { swift_raw_str_interpolation_def(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_raw_str_interpolation_interpolation(this, _, result) or + swift_raw_str_interpolation_def(this, result) + } + } + + /** A class representing `raw_str_interpolation_start` tokens. */ + class RawStrInterpolationStart extends @swift_token_raw_str_interpolation_start, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "RawStrInterpolationStart" } + } + + /** A class representing `raw_str_part` tokens. */ + class RawStrPart extends @swift_token_raw_str_part, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "RawStrPart" } + } + + /** A class representing `raw_string_literal` nodes. */ + class RawStringLiteral extends @swift_raw_string_literal, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "RawStringLiteral" } + + /** Gets the node corresponding to the field `interpolation`. */ + final RawStrInterpolation getInterpolation(int i) { + swift_raw_string_literal_interpolation(this, i, result) + } + + /** Gets the node corresponding to the field `text`. */ + final AstNode getText(int i) { swift_raw_string_literal_text(this, i, result) } + + /** Gets the `i`th child of this node. */ + final RawStrContinuingIndicator getChild(int i) { + swift_raw_string_literal_child(this, i, result) + } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_raw_string_literal_interpolation(this, _, result) or + swift_raw_string_literal_text(this, _, result) or + swift_raw_string_literal_child(this, _, result) + } + } + + /** A class representing `real_literal` tokens. */ + class RealLiteral extends @swift_token_real_literal, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "RealLiteral" } + } + + /** A class representing `referenceable_operator` nodes. */ + class ReferenceableOperator extends @swift_referenceable_operator, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ReferenceableOperator" } + + /** Gets the child of this node. */ + final AstNode getChild() { swift_referenceable_operator_child(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_referenceable_operator_child(this, result) } + } + + /** A class representing `regex_literal` tokens. */ + class RegexLiteral extends @swift_token_regex_literal, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "RegexLiteral" } + } + + /** A class representing `repeat_while_statement` nodes. */ + class RepeatWhileStatement extends @swift_repeat_while_statement, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "RepeatWhileStatement" } + + /** Gets the node corresponding to the field `condition`. */ + final IfCondition getCondition(int i) { + swift_repeat_while_statement_condition(this, i, result) + } + + /** Gets the child of this node. */ + final Statements getChild() { swift_repeat_while_statement_child(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_repeat_while_statement_condition(this, _, result) or + swift_repeat_while_statement_child(this, result) + } + } + + /** A class representing `selector_expression` nodes. */ + class SelectorExpression extends @swift_selector_expression, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "SelectorExpression" } + + /** Gets the child of this node. */ + final Expression getChild() { swift_selector_expression_def(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_selector_expression_def(this, result) } + } + + /** A class representing `self_expression` tokens. */ + class SelfExpression extends @swift_token_self_expression, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "SelfExpression" } + } + + /** A class representing `setter_specifier` nodes. */ + class SetterSpecifier extends @swift_setter_specifier, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "SetterSpecifier" } + + /** Gets the child of this node. */ + final MutationModifier getChild() { swift_setter_specifier_child(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_setter_specifier_child(this, result) } + } + + /** A class representing `shebang_line` tokens. */ + class ShebangLine extends @swift_token_shebang_line, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ShebangLine" } + } + + /** A class representing `simple_identifier` tokens. */ + class SimpleIdentifier extends @swift_token_simple_identifier, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "SimpleIdentifier" } + } + + /** A class representing `source_file` nodes. */ + class SourceFile extends @swift_source_file, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "SourceFile" } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_source_file_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_source_file_child(this, _, result) } + } + + /** A class representing `special_literal` tokens. */ + class SpecialLiteral extends @swift_token_special_literal, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "SpecialLiteral" } + } + + /** A class representing `statement_label` tokens. */ + class StatementLabel extends @swift_token_statement_label, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "StatementLabel" } + } + + /** A class representing `statements` nodes. */ + class Statements extends @swift_statements, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "Statements" } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_statements_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_statements_child(this, _, result) } + } + + /** A class representing `str_escaped_char` tokens. */ + class StrEscapedChar extends @swift_token_str_escaped_char, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "StrEscapedChar" } + } + + /** A class representing `subscript_declaration` nodes. */ + class SubscriptDeclaration extends @swift_subscript_declaration, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "SubscriptDeclaration" } + + /** Gets the node corresponding to the field `default_value`. */ + final Expression getDefaultValue(int i) { + swift_subscript_declaration_default_value(this, i, result) + } + + /** Gets the node corresponding to the field `return_type`. */ + final AstNode getReturnType() { swift_subscript_declaration_return_type(this, result) } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_subscript_declaration_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_subscript_declaration_default_value(this, _, result) or + swift_subscript_declaration_return_type(this, result) or + swift_subscript_declaration_child(this, _, result) + } + } + + /** A class representing `super_expression` tokens. */ + class SuperExpression extends @swift_token_super_expression, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "SuperExpression" } + } + + /** A class representing `suppressed_constraint` nodes. */ + class SuppressedConstraint extends @swift_suppressed_constraint, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "SuppressedConstraint" } + + /** Gets the node corresponding to the field `suppressed`. */ + final TypeIdentifier getSuppressed() { swift_suppressed_constraint_def(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_suppressed_constraint_def(this, result) } + } + + /** A class representing `switch_entry` nodes. */ + class SwitchEntry extends @swift_switch_entry, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "SwitchEntry" } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_switch_entry_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_switch_entry_child(this, _, result) } + } + + /** A class representing `switch_pattern` nodes. */ + class SwitchPattern extends @swift_switch_pattern, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "SwitchPattern" } + + /** Gets the child of this node. */ + final Pattern getChild() { swift_switch_pattern_def(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_switch_pattern_def(this, result) } + } + + /** A class representing `switch_statement` nodes. */ + class SwitchStatement extends @swift_switch_statement, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "SwitchStatement" } + + /** Gets the node corresponding to the field `expr`. */ + final Expression getExpr() { swift_switch_statement_def(this, result) } + + /** Gets the `i`th child of this node. */ + final SwitchEntry getChild(int i) { swift_switch_statement_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_switch_statement_def(this, result) or swift_switch_statement_child(this, _, result) + } + } + + /** A class representing `ternary_expression` nodes. */ + class TernaryExpression extends @swift_ternary_expression, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "TernaryExpression" } + + /** Gets the node corresponding to the field `condition`. */ + final Expression getCondition() { swift_ternary_expression_def(this, result, _, _) } + + /** Gets the node corresponding to the field `if_false`. */ + final Expression getIfFalse() { swift_ternary_expression_def(this, _, result, _) } + + /** Gets the node corresponding to the field `if_true`. */ + final Expression getIfTrue() { swift_ternary_expression_def(this, _, _, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_ternary_expression_def(this, result, _, _) or + swift_ternary_expression_def(this, _, result, _) or + swift_ternary_expression_def(this, _, _, result) + } + } + + /** A class representing `throw_keyword` tokens. */ + class ThrowKeyword extends @swift_token_throw_keyword, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ThrowKeyword" } + } + + /** A class representing `throws` tokens. */ + class Throws extends @swift_token_throws, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "Throws" } + } + + /** A class representing `throws_clause` nodes. */ + class ThrowsClause extends @swift_throws_clause, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ThrowsClause" } + + /** Gets the node corresponding to the field `type`. */ + final UnannotatedType getType() { swift_throws_clause_def(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_throws_clause_def(this, result) } + } + + /** A class representing `try_expression` nodes. */ + class TryExpression extends @swift_try_expression, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "TryExpression" } + + /** Gets the node corresponding to the field `expr`. */ + final Expression getExpr() { swift_try_expression_def(this, result, _) } + + /** Gets the child of this node. */ + final TryOperator getChild() { swift_try_expression_def(this, _, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_try_expression_def(this, result, _) or swift_try_expression_def(this, _, result) + } + } + + /** A class representing `try_operator` tokens. */ + class TryOperator extends @swift_token_try_operator, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "TryOperator" } + } + + /** A class representing `tuple_expression` nodes. */ + class TupleExpression extends @swift_tuple_expression, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "TupleExpression" } + + /** Gets the node corresponding to the field `name`. */ + final SimpleIdentifier getName(int i) { swift_tuple_expression_name(this, i, result) } + + /** Gets the node corresponding to the field `value`. */ + final Expression getValue(int i) { swift_tuple_expression_value(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_tuple_expression_name(this, _, result) or swift_tuple_expression_value(this, _, result) + } + } + + /** A class representing `tuple_type` nodes. */ + class TupleType extends @swift_tuple_type, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "TupleType" } + + /** Gets the node corresponding to the field `element`. */ + final TupleTypeItem getElement(int i) { swift_tuple_type_element(this, i, result) } + + /** Gets the child of this node. */ + final TupleTypeItem getChild() { swift_tuple_type_child(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_tuple_type_element(this, _, result) or swift_tuple_type_child(this, result) + } + } + + /** A class representing `tuple_type_item` nodes. */ + class TupleTypeItem extends @swift_tuple_type_item, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "TupleTypeItem" } + + /** Gets the node corresponding to the field `name`. */ + final SimpleIdentifier getName() { swift_tuple_type_item_name(this, result) } + + /** Gets the node corresponding to the field `type`. */ + final Type getType() { swift_tuple_type_item_type(this, result) } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_tuple_type_item_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_tuple_type_item_name(this, result) or + swift_tuple_type_item_type(this, result) or + swift_tuple_type_item_child(this, _, result) + } + } + + /** A class representing `type` nodes. */ + class Type extends @swift_type__, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "Type" } + + /** Gets the node corresponding to the field `modifiers`. */ + final TypeModifiers getModifiers() { swift_type_modifiers(this, result) } + + /** Gets the node corresponding to the field `name`. */ + final UnannotatedType getName() { swift_type_def(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_type_modifiers(this, result) or swift_type_def(this, result) + } + } + + /** A class representing `type_annotation` nodes. */ + class TypeAnnotation extends @swift_type_annotation, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "TypeAnnotation" } + + /** Gets the node corresponding to the field `type`. */ + final AstNode getType() { swift_type_annotation_def(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_type_annotation_def(this, result) } + } + + /** A class representing `type_arguments` nodes. */ + class TypeArguments extends @swift_type_arguments, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "TypeArguments" } + + /** Gets the `i`th child of this node. */ + final Type getChild(int i) { swift_type_arguments_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_type_arguments_child(this, _, result) } + } + + /** A class representing `type_constraint` nodes. */ + class TypeConstraint extends @swift_type_constraint, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "TypeConstraint" } + + /** Gets the child of this node. */ + final AstNode getChild() { swift_type_constraint_def(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_type_constraint_def(this, result) } + } + + /** A class representing `type_constraints` nodes. */ + class TypeConstraints extends @swift_type_constraints, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "TypeConstraints" } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_type_constraints_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_type_constraints_child(this, _, result) } + } + + /** A class representing `type_identifier` tokens. */ + class TypeIdentifier extends @swift_token_type_identifier, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "TypeIdentifier" } + } + + class TypeLevelDeclaration extends @swift_type_level_declaration, AstNode { } + + /** A class representing `type_modifiers` nodes. */ + class TypeModifiers extends @swift_type_modifiers, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "TypeModifiers" } + + /** Gets the `i`th child of this node. */ + final Attribute getChild(int i) { swift_type_modifiers_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_type_modifiers_child(this, _, result) } + } + + /** A class representing `type_pack_expansion` nodes. */ + class TypePackExpansion extends @swift_type_pack_expansion, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "TypePackExpansion" } + + /** Gets the child of this node. */ + final UnannotatedType getChild() { swift_type_pack_expansion_def(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_type_pack_expansion_def(this, result) } + } + + /** A class representing `type_parameter` nodes. */ + class TypeParameter extends @swift_type_parameter, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "TypeParameter" } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_type_parameter_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_type_parameter_child(this, _, result) } + } + + /** A class representing `type_parameter_modifiers` nodes. */ + class TypeParameterModifiers extends @swift_type_parameter_modifiers, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "TypeParameterModifiers" } + + /** Gets the `i`th child of this node. */ + final Attribute getChild(int i) { swift_type_parameter_modifiers_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_type_parameter_modifiers_child(this, _, result) + } + } + + /** A class representing `type_parameter_pack` nodes. */ + class TypeParameterPack extends @swift_type_parameter_pack, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "TypeParameterPack" } + + /** Gets the child of this node. */ + final UnannotatedType getChild() { swift_type_parameter_pack_def(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_type_parameter_pack_def(this, result) } + } + + /** A class representing `type_parameters` nodes. */ + class TypeParameters extends @swift_type_parameters, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "TypeParameters" } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_type_parameters_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_type_parameters_child(this, _, result) } + } + + /** A class representing `typealias_declaration` nodes. */ + class TypealiasDeclaration extends @swift_typealias_declaration, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "TypealiasDeclaration" } + + /** Gets the node corresponding to the field `name`. */ + final TypeIdentifier getName() { swift_typealias_declaration_def(this, result, _) } + + /** Gets the node corresponding to the field `value`. */ + final Type getValue() { swift_typealias_declaration_def(this, _, result) } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_typealias_declaration_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_typealias_declaration_def(this, result, _) or + swift_typealias_declaration_def(this, _, result) or + swift_typealias_declaration_child(this, _, result) + } + } + + class UnannotatedType extends @swift_unannotated_type, AstNode { } + + /** A class representing `user_type` nodes. */ + class UserType extends @swift_user_type, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "UserType" } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_user_type_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_user_type_child(this, _, result) } + } + + /** A class representing `value_argument` nodes. */ + class ValueArgument extends @swift_value_argument, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ValueArgument" } + + /** Gets the node corresponding to the field `name`. */ + final ValueArgumentLabel getName() { swift_value_argument_name(this, result) } + + /** Gets the node corresponding to the field `reference_specifier`. */ + final ValueArgumentLabel getReferenceSpecifier(int i) { + swift_value_argument_reference_specifier(this, i, result) + } + + /** Gets the node corresponding to the field `value`. */ + final Expression getValue() { swift_value_argument_value(this, result) } + + /** Gets the child of this node. */ + final TypeModifiers getChild() { swift_value_argument_child(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_value_argument_name(this, result) or + swift_value_argument_reference_specifier(this, _, result) or + swift_value_argument_value(this, result) or + swift_value_argument_child(this, result) + } + } + + /** A class representing `value_argument_label` nodes. */ + class ValueArgumentLabel extends @swift_value_argument_label, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ValueArgumentLabel" } + + /** Gets the child of this node. */ + final SimpleIdentifier getChild() { swift_value_argument_label_def(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_value_argument_label_def(this, result) } + } + + /** A class representing `value_arguments` nodes. */ + class ValueArguments extends @swift_value_arguments, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ValueArguments" } + + /** Gets the `i`th child of this node. */ + final ValueArgument getChild(int i) { swift_value_arguments_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_value_arguments_child(this, _, result) } + } + + /** A class representing `value_binding_pattern` nodes. */ + class ValueBindingPattern extends @swift_value_binding_pattern, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ValueBindingPattern" } + + /** Gets the node corresponding to the field `mutability`. */ + final string getMutability() { + exists(int value | swift_value_binding_pattern_def(this, value) | + result = "let" and value = 0 + or + result = "var" and value = 1 + ) + } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { none() } + } + + /** A class representing `value_pack_expansion` nodes. */ + class ValuePackExpansion extends @swift_value_pack_expansion, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ValuePackExpansion" } + + /** Gets the child of this node. */ + final Expression getChild() { swift_value_pack_expansion_def(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_value_pack_expansion_def(this, result) } + } + + /** A class representing `value_parameter_pack` nodes. */ + class ValueParameterPack extends @swift_value_parameter_pack, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "ValueParameterPack" } + + /** Gets the child of this node. */ + final Expression getChild() { swift_value_parameter_pack_def(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_value_parameter_pack_def(this, result) } + } + + /** A class representing `visibility_modifier` tokens. */ + class VisibilityModifier extends @swift_token_visibility_modifier, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "VisibilityModifier" } + } + + /** A class representing `where_clause` nodes. */ + class WhereClause extends @swift_where_clause, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "WhereClause" } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_where_clause_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_where_clause_child(this, _, result) } + } + + /** A class representing `where_keyword` tokens. */ + class WhereKeyword extends @swift_token_where_keyword, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "WhereKeyword" } + } + + /** A class representing `while_statement` nodes. */ + class WhileStatement extends @swift_while_statement, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "WhileStatement" } + + /** Gets the node corresponding to the field `condition`. */ + final IfCondition getCondition(int i) { swift_while_statement_condition(this, i, result) } + + /** Gets the child of this node. */ + final Statements getChild() { swift_while_statement_child(this, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { + swift_while_statement_condition(this, _, result) or swift_while_statement_child(this, result) + } + } + + /** A class representing `wildcard_pattern` tokens. */ + class WildcardPattern extends @swift_token_wildcard_pattern, Token { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "WildcardPattern" } + } + + /** A class representing `willset_clause` nodes. */ + class WillsetClause extends @swift_willset_clause, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "WillsetClause" } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_willset_clause_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_willset_clause_child(this, _, result) } + } + + /** A class representing `willset_didset_block` nodes. */ + class WillsetDidsetBlock extends @swift_willset_didset_block, AstNode { + /** Gets the name of the primary QL class for this element. */ + final override string getAPrimaryQlClass() { result = "WillsetDidsetBlock" } + + /** Gets the `i`th child of this node. */ + final AstNode getChild(int i) { swift_willset_didset_block_child(this, i, result) } + + /** Gets a field or child node of this node. */ + final override AstNode getAFieldOrChild() { swift_willset_didset_block_child(this, _, result) } + } +} diff --git a/unified/ql/lib/qlpack.lock.yml b/unified/ql/lib/qlpack.lock.yml new file mode 100644 index 000000000000..06dd07fc7dc7 --- /dev/null +++ b/unified/ql/lib/qlpack.lock.yml @@ -0,0 +1,4 @@ +--- +dependencies: {} +compiled: false +lockVersion: 1.0.0 diff --git a/unified/ql/lib/qlpack.yml b/unified/ql/lib/qlpack.yml new file mode 100644 index 000000000000..896bf37ac5e5 --- /dev/null +++ b/unified/ql/lib/qlpack.yml @@ -0,0 +1,11 @@ +name: codeql/unified-all +version: 0.0.1-dev +groups: unified +dbscheme: unified.dbscheme +extractor: unified +library: true +upgrades: upgrades +dependencies: + codeql/util: ${workspace} +warnOnImplicitThis: true +compileForOverlayEval: true diff --git a/unified/ql/lib/unified.dbscheme b/unified/ql/lib/unified.dbscheme new file mode 100644 index 000000000000..b50bc56eaa2a --- /dev/null +++ b/unified/ql/lib/unified.dbscheme @@ -0,0 +1,2133 @@ +// CodeQL database schema for Swift +// Automatically generated from the tree-sitter grammar; do not edit +// To regenerate, run unified/scripts/create-extractor-pack.sh + +/*- Files and folders -*/ + +/** + * The location of an element. + * The location spans column `startcolumn` of line `startline` to + * column `endcolumn` of line `endline` in file `file`. + * For more information, see + * [Locations](https://codeql.github.com/docs/writing-codeql-queries/providing-locations-in-codeql-queries/). + */ +locations_default( + unique int id: @location_default, + int file: @file ref, + int beginLine: int ref, + int beginColumn: int ref, + int endLine: int ref, + int endColumn: int ref +); + +files( + unique int id: @file, + string name: string ref +); + +folders( + unique int id: @folder, + string name: string ref +); + +@container = @file | @folder + +containerparent( + int parent: @container ref, + unique int child: @container ref +); + +/*- Empty location -*/ + +empty_location( + int location: @location_default ref +); + +/*- Source location prefix -*/ + +/** + * The source location of the snapshot. + */ +sourceLocationPrefix(string prefix : string ref); + +/*- Diagnostic messages -*/ + +diagnostics( + unique int id: @diagnostic, + int severity: int ref, + string error_tag: string ref, + string error_message: string ref, + string full_error_message: string ref, + int location: @location_default ref +); + +/*- Diagnostic messages: severity -*/ + +case @diagnostic.severity of + 10 = @diagnostic_debug +| 20 = @diagnostic_info +| 30 = @diagnostic_warning +| 40 = @diagnostic_error +; + +/*- YAML -*/ + +#keyset[parent, idx] +yaml (unique int id: @yaml_node, + int kind: int ref, + int parent: @yaml_node_parent ref, + int idx: int ref, + string tag: string ref, + string tostring: string ref); + +case @yaml_node.kind of + 0 = @yaml_scalar_node +| 1 = @yaml_mapping_node +| 2 = @yaml_sequence_node +| 3 = @yaml_alias_node +; + +@yaml_collection_node = @yaml_mapping_node | @yaml_sequence_node; + +@yaml_node_parent = @yaml_collection_node | @file; + +yaml_anchors (unique int node: @yaml_node ref, + string anchor: string ref); + +yaml_aliases (unique int alias: @yaml_alias_node ref, + string target: string ref); + +yaml_scalars (unique int scalar: @yaml_scalar_node ref, + int style: int ref, + string value: string ref); + +yaml_errors (unique int id: @yaml_error, + string message: string ref); + +yaml_locations(unique int locatable: @yaml_locatable ref, + int location: @location_default ref); + +@yaml_locatable = @yaml_node | @yaml_error; + +/*- Database metadata -*/ + +/** + * The CLI will automatically emit applicable tuples for this table, + * such as `databaseMetadata("isOverlay", "true")` when building an + * overlay database. + */ +databaseMetadata( + string metadataKey: string ref, + string value: string ref +); + +/*- Overlay support -*/ + +/** + * The CLI will automatically emit tuples for each new/modified/deleted file + * when building an overlay database. + */ +overlayChangedFiles( + string path: string ref +); + +/*- Swift dbscheme -*/ +case @swift_additive_expression.op of + 0 = @swift_additive_expression_plus +| 1 = @swift_additive_expression_minus +; + + +swift_additive_expression_def( + unique int id: @swift_additive_expression, + int lhs: @swift_expression ref, + int op: int ref, + int rhs: @swift_expression ref +); + +#keyset[swift_array_literal, index] +swift_array_literal_element( + int swift_array_literal: @swift_array_literal ref, + int index: int ref, + unique int element: @swift_expression ref +); + +swift_array_literal_def( + unique int id: @swift_array_literal +); + +swift_array_type_def( + unique int id: @swift_array_type, + int element: @swift_type__ ref +); + +swift_as_expression_def( + unique int id: @swift_as_expression, + int expr: @swift_expression ref, + int type__: @swift_type__ ref, + int child: @swift_token_as_operator ref +); + +case @swift_assignment.operator of + 0 = @swift_assignment_percentequal +| 1 = @swift_assignment_starequal +| 2 = @swift_assignment_plusequal +| 3 = @swift_assignment_minusequal +| 4 = @swift_assignment_slashequal +| 5 = @swift_assignment_equal +; + + +swift_assignment_def( + unique int id: @swift_assignment, + int operator: int ref, + int result: @swift_expression ref, + int target: @swift_directly_assignable_expression ref +); + +swift_associatedtype_declaration_default_value( + unique int swift_associatedtype_declaration: @swift_associatedtype_declaration ref, + unique int default_value: @swift_type__ ref +); + +swift_associatedtype_declaration_must_inherit( + unique int swift_associatedtype_declaration: @swift_associatedtype_declaration ref, + unique int must_inherit: @swift_type__ ref +); + +@swift_associatedtype_declaration_child_type = @swift_modifiers | @swift_type_constraints + +#keyset[swift_associatedtype_declaration, index] +swift_associatedtype_declaration_child( + int swift_associatedtype_declaration: @swift_associatedtype_declaration ref, + int index: int ref, + unique int child: @swift_associatedtype_declaration_child_type ref +); + +swift_associatedtype_declaration_def( + unique int id: @swift_associatedtype_declaration, + int name: @swift_token_type_identifier ref +); + +@swift_attribute_child_type = @swift_expression | @swift_user_type + +#keyset[swift_attribute, index] +swift_attribute_child( + int swift_attribute: @swift_attribute ref, + int index: int ref, + unique int child: @swift_attribute_child_type ref +); + +swift_attribute_def( + unique int id: @swift_attribute +); + +@swift_availability_condition_child_type = @swift_identifier | @swift_token_integer_literal + +#keyset[swift_availability_condition, index] +swift_availability_condition_child( + int swift_availability_condition: @swift_availability_condition ref, + int index: int ref, + unique int child: @swift_availability_condition_child_type ref +); + +swift_availability_condition_def( + unique int id: @swift_availability_condition +); + +swift_await_expression_expr( + unique int swift_await_expression: @swift_await_expression ref, + unique int expr: @swift_expression ref +); + +swift_await_expression_child( + unique int swift_await_expression: @swift_await_expression ref, + unique int child: @swift_expression ref +); + +swift_await_expression_def( + unique int id: @swift_await_expression +); + +case @swift_bitwise_operation.op of + 0 = @swift_bitwise_operation_ampersand +| 1 = @swift_bitwise_operation_langlelangle +| 2 = @swift_bitwise_operation_ranglerangle +| 3 = @swift_bitwise_operation_caret +| 4 = @swift_bitwise_operation_pipe +; + + +swift_bitwise_operation_def( + unique int id: @swift_bitwise_operation, + int lhs: @swift_expression ref, + int op: int ref, + int rhs: @swift_expression ref +); + +@swift_call_expression_child_type = @swift_call_suffix | @swift_expression + +#keyset[swift_call_expression, index] +swift_call_expression_child( + int swift_call_expression: @swift_call_expression ref, + int index: int ref, + unique int child: @swift_call_expression_child_type ref +); + +swift_call_expression_def( + unique int id: @swift_call_expression +); + +#keyset[swift_call_suffix, index] +swift_call_suffix_name( + int swift_call_suffix: @swift_call_suffix ref, + int index: int ref, + unique int name: @swift_token_simple_identifier ref +); + +@swift_call_suffix_child_type = @swift_lambda_literal | @swift_value_arguments + +#keyset[swift_call_suffix, index] +swift_call_suffix_child( + int swift_call_suffix: @swift_call_suffix ref, + int index: int ref, + unique int child: @swift_call_suffix_child_type ref +); + +swift_call_suffix_def( + unique int id: @swift_call_suffix +); + +#keyset[swift_capture_list, index] +swift_capture_list_child( + int swift_capture_list: @swift_capture_list ref, + int index: int ref, + unique int child: @swift_capture_list_item ref +); + +swift_capture_list_def( + unique int id: @swift_capture_list +); + +@swift_capture_list_item_name_type = @swift_token_self_expression | @swift_token_simple_identifier + +swift_capture_list_item_value( + unique int swift_capture_list_item: @swift_capture_list_item ref, + unique int value: @swift_expression ref +); + +swift_capture_list_item_child( + unique int swift_capture_list_item: @swift_capture_list_item ref, + unique int child: @swift_token_ownership_modifier ref +); + +swift_capture_list_item_def( + unique int id: @swift_capture_list_item, + int name: @swift_capture_list_item_name_type ref +); + +swift_catch_block_error( + unique int swift_catch_block: @swift_catch_block ref, + unique int error: @swift_pattern ref +); + +@swift_catch_block_child_type = @swift_statements | @swift_token_catch_keyword | @swift_where_clause + +#keyset[swift_catch_block, index] +swift_catch_block_child( + int swift_catch_block: @swift_catch_block ref, + int index: int ref, + unique int child: @swift_catch_block_child_type ref +); + +swift_catch_block_def( + unique int id: @swift_catch_block +); + +case @swift_check_expression.op of + 0 = @swift_check_expression_is +; + + +swift_check_expression_def( + unique int id: @swift_check_expression, + int op: int ref, + int target: @swift_expression ref, + int type__: @swift_type__ ref +); + +@swift_class_body_child_type = @swift_token_multiline_comment | @swift_type_level_declaration + +#keyset[swift_class_body, index] +swift_class_body_child( + int swift_class_body: @swift_class_body ref, + int index: int ref, + unique int child: @swift_class_body_child_type ref +); + +swift_class_body_def( + unique int id: @swift_class_body +); + +@swift_class_declaration_body_type = @swift_class_body | @swift_enum_class_body + +case @swift_class_declaration.declaration_kind of + 0 = @swift_class_declaration_actor +| 1 = @swift_class_declaration_class +| 2 = @swift_class_declaration_enum +| 3 = @swift_class_declaration_extension +| 4 = @swift_class_declaration_struct +; + + +@swift_class_declaration_name_type = @swift_token_type_identifier | @swift_unannotated_type + +@swift_class_declaration_child_type = @swift_attribute | @swift_inheritance_specifier | @swift_modifiers | @swift_token_inheritance_modifier | @swift_token_ownership_modifier | @swift_token_property_behavior_modifier | @swift_type_constraints | @swift_type_parameters + +#keyset[swift_class_declaration, index] +swift_class_declaration_child( + int swift_class_declaration: @swift_class_declaration ref, + int index: int ref, + unique int child: @swift_class_declaration_child_type ref +); + +swift_class_declaration_def( + unique int id: @swift_class_declaration, + int body: @swift_class_declaration_body_type ref, + int declaration_kind: int ref, + int name: @swift_class_declaration_name_type ref +); + +case @swift_comparison_expression.op of + 0 = @swift_comparison_expression_langle +| 1 = @swift_comparison_expression_langleequal +| 2 = @swift_comparison_expression_rangle +| 3 = @swift_comparison_expression_rangleequal +; + + +swift_comparison_expression_def( + unique int id: @swift_comparison_expression, + int lhs: @swift_expression ref, + int op: int ref, + int rhs: @swift_expression ref +); + +@swift_computed_getter_child_type = @swift_attribute | @swift_getter_specifier | @swift_statements + +#keyset[swift_computed_getter, index] +swift_computed_getter_child( + int swift_computed_getter: @swift_computed_getter ref, + int index: int ref, + unique int child: @swift_computed_getter_child_type ref +); + +swift_computed_getter_def( + unique int id: @swift_computed_getter +); + +@swift_computed_modify_child_type = @swift_attribute | @swift_modify_specifier | @swift_statements + +#keyset[swift_computed_modify, index] +swift_computed_modify_child( + int swift_computed_modify: @swift_computed_modify ref, + int index: int ref, + unique int child: @swift_computed_modify_child_type ref +); + +swift_computed_modify_def( + unique int id: @swift_computed_modify +); + +@swift_computed_property_child_type = @swift_computed_getter | @swift_computed_modify | @swift_computed_setter | @swift_statements + +#keyset[swift_computed_property, index] +swift_computed_property_child( + int swift_computed_property: @swift_computed_property ref, + int index: int ref, + unique int child: @swift_computed_property_child_type ref +); + +swift_computed_property_def( + unique int id: @swift_computed_property +); + +@swift_computed_setter_child_type = @swift_attribute | @swift_setter_specifier | @swift_statements | @swift_token_simple_identifier + +#keyset[swift_computed_setter, index] +swift_computed_setter_child( + int swift_computed_setter: @swift_computed_setter ref, + int index: int ref, + unique int child: @swift_computed_setter_child_type ref +); + +swift_computed_setter_def( + unique int id: @swift_computed_setter +); + +case @swift_conjunction_expression.op of + 0 = @swift_conjunction_expression_ampersandampersand +; + + +swift_conjunction_expression_def( + unique int id: @swift_conjunction_expression, + int lhs: @swift_expression ref, + int op: int ref, + int rhs: @swift_expression ref +); + +@swift_constructor_expression_constructed_type_type = @swift_array_type | @swift_dictionary_type | @swift_user_type + +swift_constructor_expression_def( + unique int id: @swift_constructor_expression, + int constructed_type: @swift_constructor_expression_constructed_type_type ref, + int child: @swift_constructor_suffix ref +); + +#keyset[swift_constructor_suffix, index] +swift_constructor_suffix_name( + int swift_constructor_suffix: @swift_constructor_suffix ref, + int index: int ref, + unique int name: @swift_token_simple_identifier ref +); + +@swift_constructor_suffix_child_type = @swift_lambda_literal | @swift_value_arguments + +#keyset[swift_constructor_suffix, index] +swift_constructor_suffix_child( + int swift_constructor_suffix: @swift_constructor_suffix ref, + int index: int ref, + unique int child: @swift_constructor_suffix_child_type ref +); + +swift_constructor_suffix_def( + unique int id: @swift_constructor_suffix +); + +swift_control_transfer_statement_result( + unique int swift_control_transfer_statement: @swift_control_transfer_statement ref, + unique int result: @swift_expression ref +); + +@swift_control_transfer_statement_child_type = @swift_expression | @swift_token_throw_keyword + +#keyset[swift_control_transfer_statement, index] +swift_control_transfer_statement_child( + int swift_control_transfer_statement: @swift_control_transfer_statement ref, + int index: int ref, + unique int child: @swift_control_transfer_statement_child_type ref +); + +swift_control_transfer_statement_def( + unique int id: @swift_control_transfer_statement +); + +swift_deinit_declaration_child( + unique int swift_deinit_declaration: @swift_deinit_declaration ref, + unique int child: @swift_modifiers ref +); + +swift_deinit_declaration_def( + unique int id: @swift_deinit_declaration, + int body: @swift_function_body ref +); + +@swift_deprecated_operator_declaration_body_child_type = @swift_line_string_literal | @swift_multi_line_string_literal | @swift_raw_string_literal | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_simple_identifier + +#keyset[swift_deprecated_operator_declaration_body, index] +swift_deprecated_operator_declaration_body_child( + int swift_deprecated_operator_declaration_body: @swift_deprecated_operator_declaration_body ref, + int index: int ref, + unique int child: @swift_deprecated_operator_declaration_body_child_type ref +); + +swift_deprecated_operator_declaration_body_def( + unique int id: @swift_deprecated_operator_declaration_body +); + +#keyset[swift_dictionary_literal, index] +swift_dictionary_literal_key( + int swift_dictionary_literal: @swift_dictionary_literal ref, + int index: int ref, + unique int key__: @swift_expression ref +); + +#keyset[swift_dictionary_literal, index] +swift_dictionary_literal_value( + int swift_dictionary_literal: @swift_dictionary_literal ref, + int index: int ref, + unique int value: @swift_expression ref +); + +swift_dictionary_literal_def( + unique int id: @swift_dictionary_literal +); + +swift_dictionary_type_def( + unique int id: @swift_dictionary_type, + int key__: @swift_type__ ref, + int value: @swift_type__ ref +); + +@swift_didset_clause_child_type = @swift_modifiers | @swift_statements | @swift_token_simple_identifier + +#keyset[swift_didset_clause, index] +swift_didset_clause_child( + int swift_didset_clause: @swift_didset_clause ref, + int index: int ref, + unique int child: @swift_didset_clause_child_type ref +); + +swift_didset_clause_def( + unique int id: @swift_didset_clause +); + +@swift_directive_child_type = @swift_token_boolean_literal | @swift_token_integer_literal | @swift_token_simple_identifier + +#keyset[swift_directive, index] +swift_directive_child( + int swift_directive: @swift_directive ref, + int index: int ref, + unique int child: @swift_directive_child_type ref +); + +swift_directive_def( + unique int id: @swift_directive +); + +swift_directly_assignable_expression_def( + unique int id: @swift_directly_assignable_expression, + int child: @swift_expression ref +); + +case @swift_disjunction_expression.op of + 0 = @swift_disjunction_expression_pipepipe +; + + +swift_disjunction_expression_def( + unique int id: @swift_disjunction_expression, + int lhs: @swift_expression ref, + int op: int ref, + int rhs: @swift_expression ref +); + +@swift_do_statement_child_type = @swift_catch_block | @swift_statements + +#keyset[swift_do_statement, index] +swift_do_statement_child( + int swift_do_statement: @swift_do_statement ref, + int index: int ref, + unique int child: @swift_do_statement_child_type ref +); + +swift_do_statement_def( + unique int id: @swift_do_statement +); + +@swift_enum_class_body_child_type = @swift_enum_entry | @swift_type_level_declaration + +#keyset[swift_enum_class_body, index] +swift_enum_class_body_child( + int swift_enum_class_body: @swift_enum_class_body ref, + int index: int ref, + unique int child: @swift_enum_class_body_child_type ref +); + +swift_enum_class_body_def( + unique int id: @swift_enum_class_body +); + +#keyset[swift_enum_entry, index] +swift_enum_entry_data_contents( + int swift_enum_entry: @swift_enum_entry ref, + int index: int ref, + unique int data_contents: @swift_enum_type_parameters ref +); + +#keyset[swift_enum_entry, index] +swift_enum_entry_name( + int swift_enum_entry: @swift_enum_entry ref, + int index: int ref, + unique int name: @swift_token_simple_identifier ref +); + +#keyset[swift_enum_entry, index] +swift_enum_entry_raw_value( + int swift_enum_entry: @swift_enum_entry ref, + int index: int ref, + unique int raw_value: @swift_expression ref +); + +swift_enum_entry_child( + unique int swift_enum_entry: @swift_enum_entry ref, + unique int child: @swift_modifiers ref +); + +swift_enum_entry_def( + unique int id: @swift_enum_entry +); + +@swift_enum_type_parameters_child_type = @swift_expression | @swift_token_wildcard_pattern | @swift_type__ + +#keyset[swift_enum_type_parameters, index] +swift_enum_type_parameters_child( + int swift_enum_type_parameters: @swift_enum_type_parameters ref, + int index: int ref, + unique int child: @swift_enum_type_parameters_child_type ref +); + +swift_enum_type_parameters_def( + unique int id: @swift_enum_type_parameters +); + +@swift_equality_constraint_constrained_type_type = @swift_identifier | @swift_nested_type_identifier + +#keyset[swift_equality_constraint, index] +swift_equality_constraint_child( + int swift_equality_constraint: @swift_equality_constraint ref, + int index: int ref, + unique int child: @swift_attribute ref +); + +swift_equality_constraint_def( + unique int id: @swift_equality_constraint, + int constrained_type: @swift_equality_constraint_constrained_type_type ref, + int must_equal: @swift_type__ ref +); + +case @swift_equality_expression.op of + 0 = @swift_equality_expression_bangequal +| 1 = @swift_equality_expression_bangequalequal +| 2 = @swift_equality_expression_equalequal +| 3 = @swift_equality_expression_equalequalequal +; + + +swift_equality_expression_def( + unique int id: @swift_equality_expression, + int lhs: @swift_expression ref, + int op: int ref, + int rhs: @swift_expression ref +); + +swift_existential_type_def( + unique int id: @swift_existential_type, + int child: @swift_unannotated_type ref +); + +@swift_expression = @swift_additive_expression | @swift_array_literal | @swift_as_expression | @swift_assignment | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_check_expression | @swift_comparison_expression | @swift_conjunction_expression | @swift_constructor_expression | @swift_dictionary_literal | @swift_directive | @swift_disjunction_expression | @swift_equality_expression | @swift_if_statement | @swift_infix_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_literal | @swift_line_string_literal | @swift_macro_invocation | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_nil_coalescing_expression | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_optional_chain_marker | @swift_playground_literal | @swift_postfix_expression | @swift_prefix_expression | @swift_range_expression | @swift_raw_string_literal | @swift_referenceable_operator | @swift_reserved_word | @swift_selector_expression | @swift_switch_statement | @swift_ternary_expression | @swift_token_bin_literal | @swift_token_boolean_literal | @swift_token_diagnostic | @swift_token_fully_open_range | @swift_token_hex_literal | @swift_token_integer_literal | @swift_token_oct_literal | @swift_token_real_literal | @swift_token_regex_literal | @swift_token_self_expression | @swift_token_simple_identifier | @swift_token_special_literal | @swift_token_super_expression | @swift_try_expression | @swift_tuple_expression | @swift_value_pack_expansion | @swift_value_parameter_pack + +swift_external_macro_definition_def( + unique int id: @swift_external_macro_definition, + int child: @swift_value_arguments ref +); + +@swift_for_statement_child_type = @swift_statements | @swift_token_try_operator | @swift_type_annotation | @swift_where_clause + +#keyset[swift_for_statement, index] +swift_for_statement_child( + int swift_for_statement: @swift_for_statement ref, + int index: int ref, + unique int child: @swift_for_statement_child_type ref +); + +swift_for_statement_def( + unique int id: @swift_for_statement, + int collection: @swift_expression ref, + int item: @swift_pattern ref +); + +swift_function_body_child( + unique int swift_function_body: @swift_function_body ref, + unique int child: @swift_statements ref +); + +swift_function_body_def( + unique int id: @swift_function_body +); + +#keyset[swift_function_declaration, index] +swift_function_declaration_default_value( + int swift_function_declaration: @swift_function_declaration ref, + int index: int ref, + unique int default_value: @swift_expression ref +); + +@swift_function_declaration_name_type = @swift_referenceable_operator | @swift_token_simple_identifier + +@swift_function_declaration_return_type_type = @swift_implicitly_unwrapped_type | @swift_type__ + +swift_function_declaration_return_type( + unique int swift_function_declaration: @swift_function_declaration ref, + unique int return_type: @swift_function_declaration_return_type_type ref +); + +@swift_function_declaration_child_type = @swift_attribute | @swift_modifiers | @swift_parameter | @swift_throws_clause | @swift_token_inheritance_modifier | @swift_token_ownership_modifier | @swift_token_property_behavior_modifier | @swift_token_throws | @swift_type_constraints | @swift_type_parameters + +#keyset[swift_function_declaration, index] +swift_function_declaration_child( + int swift_function_declaration: @swift_function_declaration ref, + int index: int ref, + unique int child: @swift_function_declaration_child_type ref +); + +swift_function_declaration_def( + unique int id: @swift_function_declaration, + int body: @swift_function_body ref, + int name: @swift_function_declaration_name_type ref +); + +@swift_function_type_child_type = @swift_throws_clause | @swift_token_throws + +swift_function_type_child( + unique int swift_function_type: @swift_function_type ref, + unique int child: @swift_function_type_child_type ref +); + +swift_function_type_def( + unique int id: @swift_function_type, + int params: @swift_unannotated_type ref, + int return_type: @swift_type__ ref +); + +@swift_getter_specifier_child_type = @swift_throws_clause | @swift_token_mutation_modifier | @swift_token_throws + +#keyset[swift_getter_specifier, index] +swift_getter_specifier_child( + int swift_getter_specifier: @swift_getter_specifier ref, + int index: int ref, + unique int child: @swift_getter_specifier_child_type ref +); + +swift_getter_specifier_def( + unique int id: @swift_getter_specifier +); + +@swift_global_declaration = @swift_associatedtype_declaration | @swift_class_declaration | @swift_function_declaration | @swift_import_declaration | @swift_init_declaration | @swift_macro_declaration | @swift_operator_declaration | @swift_precedence_group_declaration | @swift_property_declaration | @swift_protocol_declaration | @swift_typealias_declaration + +#keyset[swift_guard_statement, index] +swift_guard_statement_condition( + int swift_guard_statement: @swift_guard_statement ref, + int index: int ref, + unique int condition: @swift_if_condition ref +); + +@swift_guard_statement_child_type = @swift_statements | @swift_token_else + +#keyset[swift_guard_statement, index] +swift_guard_statement_child( + int swift_guard_statement: @swift_guard_statement ref, + int index: int ref, + unique int child: @swift_guard_statement_child_type ref +); + +swift_guard_statement_def( + unique int id: @swift_guard_statement +); + +#keyset[swift_identifier, index] +swift_identifier_child( + int swift_identifier: @swift_identifier ref, + int index: int ref, + unique int child: @swift_token_simple_identifier ref +); + +swift_identifier_def( + unique int id: @swift_identifier +); + +@swift_if_condition_child_type = @swift_availability_condition | @swift_expression | @swift_if_let_binding + +swift_if_condition_def( + unique int id: @swift_if_condition, + int child: @swift_if_condition_child_type ref +); + +swift_if_let_binding_bound_identifier( + unique int swift_if_let_binding: @swift_if_let_binding ref, + unique int bound_identifier: @swift_token_simple_identifier ref +); + +@swift_if_let_binding_child_type = @swift_expression | @swift_pattern | @swift_token_wildcard_pattern | @swift_type__ | @swift_type_annotation | @swift_user_type | @swift_value_binding_pattern | @swift_where_clause + +#keyset[swift_if_let_binding, index] +swift_if_let_binding_child( + int swift_if_let_binding: @swift_if_let_binding ref, + int index: int ref, + unique int child: @swift_if_let_binding_child_type ref +); + +swift_if_let_binding_def( + unique int id: @swift_if_let_binding +); + +#keyset[swift_if_statement, index] +swift_if_statement_condition( + int swift_if_statement: @swift_if_statement ref, + int index: int ref, + unique int condition: @swift_if_condition ref +); + +@swift_if_statement_child_type = @swift_if_statement | @swift_statements | @swift_token_else + +#keyset[swift_if_statement, index] +swift_if_statement_child( + int swift_if_statement: @swift_if_statement ref, + int index: int ref, + unique int child: @swift_if_statement_child_type ref +); + +swift_if_statement_def( + unique int id: @swift_if_statement +); + +swift_implicitly_unwrapped_type_def( + unique int id: @swift_implicitly_unwrapped_type, + int child: @swift_type__ ref +); + +@swift_import_declaration_child_type = @swift_identifier | @swift_modifiers + +#keyset[swift_import_declaration, index] +swift_import_declaration_child( + int swift_import_declaration: @swift_import_declaration ref, + int index: int ref, + unique int child: @swift_import_declaration_child_type ref +); + +swift_import_declaration_def( + unique int id: @swift_import_declaration +); + +swift_infix_expression_def( + unique int id: @swift_infix_expression, + int lhs: @swift_expression ref, + int op: @swift_token_custom_operator ref, + int rhs: @swift_expression ref +); + +@swift_inheritance_constraint_constrained_type_type = @swift_identifier | @swift_nested_type_identifier + +@swift_inheritance_constraint_inherits_from_type = @swift_implicitly_unwrapped_type | @swift_type__ + +#keyset[swift_inheritance_constraint, index] +swift_inheritance_constraint_child( + int swift_inheritance_constraint: @swift_inheritance_constraint ref, + int index: int ref, + unique int child: @swift_attribute ref +); + +swift_inheritance_constraint_def( + unique int id: @swift_inheritance_constraint, + int constrained_type: @swift_inheritance_constraint_constrained_type_type ref, + int inherits_from: @swift_inheritance_constraint_inherits_from_type ref +); + +@swift_inheritance_specifier_inherits_from_type = @swift_function_type | @swift_suppressed_constraint | @swift_user_type + +swift_inheritance_specifier_def( + unique int id: @swift_inheritance_specifier, + int inherits_from: @swift_inheritance_specifier_inherits_from_type ref +); + +swift_init_declaration_body( + unique int swift_init_declaration: @swift_init_declaration ref, + unique int body: @swift_function_body ref +); + +#keyset[swift_init_declaration, index] +swift_init_declaration_default_value( + int swift_init_declaration: @swift_init_declaration ref, + int index: int ref, + unique int default_value: @swift_expression ref +); + +case @swift_init_declaration.name of + 0 = @swift_init_declaration_init +; + + +@swift_init_declaration_child_type = @swift_attribute | @swift_modifiers | @swift_parameter | @swift_throws_clause | @swift_token_bang | @swift_token_throws | @swift_type_constraints | @swift_type_parameters + +#keyset[swift_init_declaration, index] +swift_init_declaration_child( + int swift_init_declaration: @swift_init_declaration ref, + int index: int ref, + unique int child: @swift_init_declaration_child_type ref +); + +swift_init_declaration_def( + unique int id: @swift_init_declaration, + int name: int ref +); + +swift_interpolated_expression_name( + unique int swift_interpolated_expression: @swift_interpolated_expression ref, + unique int name: @swift_value_argument_label ref +); + +#keyset[swift_interpolated_expression, index] +swift_interpolated_expression_reference_specifier( + int swift_interpolated_expression: @swift_interpolated_expression ref, + int index: int ref, + unique int reference_specifier: @swift_value_argument_label ref +); + +swift_interpolated_expression_value( + unique int swift_interpolated_expression: @swift_interpolated_expression ref, + unique int value: @swift_expression ref +); + +swift_interpolated_expression_child( + unique int swift_interpolated_expression: @swift_interpolated_expression ref, + unique int child: @swift_type_modifiers ref +); + +swift_interpolated_expression_def( + unique int id: @swift_interpolated_expression +); + +@swift_key_path_expression_child_type = @swift_array_type | @swift_dictionary_type | @swift_token_bang | @swift_token_simple_identifier | @swift_token_type_identifier | @swift_type_arguments | @swift_value_argument + +#keyset[swift_key_path_expression, index] +swift_key_path_expression_child( + int swift_key_path_expression: @swift_key_path_expression ref, + int index: int ref, + unique int child: @swift_key_path_expression_child_type ref +); + +swift_key_path_expression_def( + unique int id: @swift_key_path_expression +); + +swift_key_path_string_expression_def( + unique int id: @swift_key_path_string_expression, + int child: @swift_expression ref +); + +@swift_lambda_function_type_return_type_type = @swift_implicitly_unwrapped_type | @swift_type__ + +swift_lambda_function_type_return_type( + unique int swift_lambda_function_type: @swift_lambda_function_type ref, + unique int return_type: @swift_lambda_function_type_return_type_type ref +); + +@swift_lambda_function_type_child_type = @swift_lambda_function_type_parameters | @swift_throws_clause | @swift_token_throws + +#keyset[swift_lambda_function_type, index] +swift_lambda_function_type_child( + int swift_lambda_function_type: @swift_lambda_function_type ref, + int index: int ref, + unique int child: @swift_lambda_function_type_child_type ref +); + +swift_lambda_function_type_def( + unique int id: @swift_lambda_function_type +); + +#keyset[swift_lambda_function_type_parameters, index] +swift_lambda_function_type_parameters_child( + int swift_lambda_function_type_parameters: @swift_lambda_function_type_parameters ref, + int index: int ref, + unique int child: @swift_lambda_parameter ref +); + +swift_lambda_function_type_parameters_def( + unique int id: @swift_lambda_function_type_parameters +); + +swift_lambda_literal_captures( + unique int swift_lambda_literal: @swift_lambda_literal ref, + unique int captures: @swift_capture_list ref +); + +swift_lambda_literal_type( + unique int swift_lambda_literal: @swift_lambda_literal ref, + unique int type__: @swift_lambda_function_type ref +); + +@swift_lambda_literal_child_type = @swift_attribute | @swift_statements + +#keyset[swift_lambda_literal, index] +swift_lambda_literal_child( + int swift_lambda_literal: @swift_lambda_literal ref, + int index: int ref, + unique int child: @swift_lambda_literal_child_type ref +); + +swift_lambda_literal_def( + unique int id: @swift_lambda_literal +); + +swift_lambda_parameter_external_name( + unique int swift_lambda_parameter: @swift_lambda_parameter ref, + unique int external_name: @swift_token_simple_identifier ref +); + +swift_lambda_parameter_name( + unique int swift_lambda_parameter: @swift_lambda_parameter ref, + unique int name: @swift_token_simple_identifier ref +); + +@swift_lambda_parameter_type_type = @swift_implicitly_unwrapped_type | @swift_type__ + +swift_lambda_parameter_type( + unique int swift_lambda_parameter: @swift_lambda_parameter ref, + unique int type__: @swift_lambda_parameter_type_type ref +); + +@swift_lambda_parameter_child_type = @swift_parameter_modifiers | @swift_token_self_expression + +swift_lambda_parameter_child( + unique int swift_lambda_parameter: @swift_lambda_parameter ref, + unique int child: @swift_lambda_parameter_child_type ref +); + +swift_lambda_parameter_def( + unique int id: @swift_lambda_parameter +); + +#keyset[swift_line_string_literal, index] +swift_line_string_literal_interpolation( + int swift_line_string_literal: @swift_line_string_literal ref, + int index: int ref, + unique int interpolation: @swift_interpolated_expression ref +); + +@swift_line_string_literal_text_type = @swift_token_line_str_text | @swift_token_str_escaped_char + +#keyset[swift_line_string_literal, index] +swift_line_string_literal_text( + int swift_line_string_literal: @swift_line_string_literal ref, + int index: int ref, + unique int text: @swift_line_string_literal_text_type ref +); + +swift_line_string_literal_def( + unique int id: @swift_line_string_literal +); + +@swift_local_declaration = @swift_class_declaration | @swift_function_declaration | @swift_property_declaration | @swift_typealias_declaration + +#keyset[swift_macro_declaration, index] +swift_macro_declaration_default_value( + int swift_macro_declaration: @swift_macro_declaration ref, + int index: int ref, + unique int default_value: @swift_expression ref +); + +swift_macro_declaration_definition( + unique int swift_macro_declaration: @swift_macro_declaration ref, + unique int definition: @swift_macro_definition ref +); + +@swift_macro_declaration_child_type = @swift_attribute | @swift_modifiers | @swift_parameter | @swift_token_simple_identifier | @swift_type_constraints | @swift_type_parameters | @swift_unannotated_type + +#keyset[swift_macro_declaration, index] +swift_macro_declaration_child( + int swift_macro_declaration: @swift_macro_declaration ref, + int index: int ref, + unique int child: @swift_macro_declaration_child_type ref +); + +swift_macro_declaration_def( + unique int id: @swift_macro_declaration +); + +@swift_macro_definition_body_type = @swift_expression | @swift_external_macro_definition + +swift_macro_definition_def( + unique int id: @swift_macro_definition, + int body: @swift_macro_definition_body_type ref +); + +@swift_macro_invocation_child_type = @swift_call_suffix | @swift_token_simple_identifier | @swift_type_parameters + +#keyset[swift_macro_invocation, index] +swift_macro_invocation_child( + int swift_macro_invocation: @swift_macro_invocation ref, + int index: int ref, + unique int child: @swift_macro_invocation_child_type ref +); + +swift_macro_invocation_def( + unique int id: @swift_macro_invocation +); + +swift_metatype_def( + unique int id: @swift_metatype, + int child: @swift_unannotated_type ref +); + +@swift_modifiers_child_type = @swift_attribute | @swift_token_function_modifier | @swift_token_inheritance_modifier | @swift_token_member_modifier | @swift_token_mutation_modifier | @swift_token_ownership_modifier | @swift_token_parameter_modifier | @swift_token_property_behavior_modifier | @swift_token_property_modifier | @swift_token_visibility_modifier + +#keyset[swift_modifiers, index] +swift_modifiers_child( + int swift_modifiers: @swift_modifiers ref, + int index: int ref, + unique int child: @swift_modifiers_child_type ref +); + +swift_modifiers_def( + unique int id: @swift_modifiers +); + +swift_modify_specifier_child( + unique int swift_modify_specifier: @swift_modify_specifier ref, + unique int child: @swift_token_mutation_modifier ref +); + +swift_modify_specifier_def( + unique int id: @swift_modify_specifier +); + +#keyset[swift_multi_line_string_literal, index] +swift_multi_line_string_literal_interpolation( + int swift_multi_line_string_literal: @swift_multi_line_string_literal ref, + int index: int ref, + unique int interpolation: @swift_interpolated_expression ref +); + +@swift_multi_line_string_literal_text_type = @swift_reserved_word | @swift_token_multi_line_str_text | @swift_token_str_escaped_char + +#keyset[swift_multi_line_string_literal, index] +swift_multi_line_string_literal_text( + int swift_multi_line_string_literal: @swift_multi_line_string_literal ref, + int index: int ref, + unique int text: @swift_multi_line_string_literal_text_type ref +); + +swift_multi_line_string_literal_def( + unique int id: @swift_multi_line_string_literal +); + +case @swift_multiplicative_expression.op of + 0 = @swift_multiplicative_expression_percent +| 1 = @swift_multiplicative_expression_star +| 2 = @swift_multiplicative_expression_slash +; + + +swift_multiplicative_expression_def( + unique int id: @swift_multiplicative_expression, + int lhs: @swift_expression ref, + int op: int ref, + int rhs: @swift_expression ref +); + +@swift_navigation_expression_target_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_expression | @swift_opaque_type | @swift_reserved_word | @swift_user_type + +#keyset[swift_navigation_expression, index] +swift_navigation_expression_target( + int swift_navigation_expression: @swift_navigation_expression ref, + int index: int ref, + unique int target: @swift_navigation_expression_target_type ref +); + +swift_navigation_expression_def( + unique int id: @swift_navigation_expression, + int suffix: @swift_navigation_suffix ref +); + +@swift_navigation_suffix_suffix_type = @swift_token_integer_literal | @swift_token_simple_identifier + +swift_navigation_suffix_def( + unique int id: @swift_navigation_suffix, + int suffix: @swift_navigation_suffix_suffix_type ref +); + +@swift_nested_type_identifier_child_type = @swift_token_simple_identifier | @swift_unannotated_type + +#keyset[swift_nested_type_identifier, index] +swift_nested_type_identifier_child( + int swift_nested_type_identifier: @swift_nested_type_identifier ref, + int index: int ref, + unique int child: @swift_nested_type_identifier_child_type ref +); + +swift_nested_type_identifier_def( + unique int id: @swift_nested_type_identifier +); + +swift_nil_coalescing_expression_def( + unique int id: @swift_nil_coalescing_expression, + int if_nil: @swift_expression ref, + int value: @swift_expression ref +); + +swift_opaque_type_def( + unique int id: @swift_opaque_type, + int child: @swift_unannotated_type ref +); + +swift_open_end_range_expression_def( + unique int id: @swift_open_end_range_expression, + int start: @swift_expression ref +); + +swift_open_start_range_expression_def( + unique int id: @swift_open_start_range_expression, + int end: @swift_expression ref +); + +@swift_operator_declaration_child_type = @swift_deprecated_operator_declaration_body | @swift_referenceable_operator | @swift_token_simple_identifier + +#keyset[swift_operator_declaration, index] +swift_operator_declaration_child( + int swift_operator_declaration: @swift_operator_declaration ref, + int index: int ref, + unique int child: @swift_operator_declaration_child_type ref +); + +swift_operator_declaration_def( + unique int id: @swift_operator_declaration +); + +swift_optional_chain_marker_def( + unique int id: @swift_optional_chain_marker, + int child: @swift_expression ref +); + +@swift_optional_type_wrapped_type = @swift_array_type | @swift_dictionary_type | @swift_tuple_type | @swift_user_type + +swift_optional_type_def( + unique int id: @swift_optional_type, + int wrapped: @swift_optional_type_wrapped_type ref +); + +swift_parameter_external_name( + unique int swift_parameter: @swift_parameter ref, + unique int external_name: @swift_token_simple_identifier ref +); + +@swift_parameter_type_type = @swift_implicitly_unwrapped_type | @swift_type__ + +swift_parameter_child( + unique int swift_parameter: @swift_parameter ref, + unique int child: @swift_parameter_modifiers ref +); + +swift_parameter_def( + unique int id: @swift_parameter, + int name: @swift_token_simple_identifier ref, + int type__: @swift_parameter_type_type ref +); + +#keyset[swift_parameter_modifiers, index] +swift_parameter_modifiers_child( + int swift_parameter_modifiers: @swift_parameter_modifiers ref, + int index: int ref, + unique int child: @swift_token_parameter_modifier ref +); + +swift_parameter_modifiers_def( + unique int id: @swift_parameter_modifiers +); + +swift_pattern_bound_identifier( + unique int swift_pattern: @swift_pattern ref, + unique int bound_identifier: @swift_token_simple_identifier ref +); + +@swift_pattern_child_type = @swift_expression | @swift_pattern | @swift_token_wildcard_pattern | @swift_type__ | @swift_user_type | @swift_value_binding_pattern + +#keyset[swift_pattern, index] +swift_pattern_child( + int swift_pattern: @swift_pattern ref, + int index: int ref, + unique int child: @swift_pattern_child_type ref +); + +swift_pattern_def( + unique int id: @swift_pattern +); + +#keyset[swift_playground_literal, index] +swift_playground_literal_child( + int swift_playground_literal: @swift_playground_literal ref, + int index: int ref, + unique int child: @swift_expression ref +); + +swift_playground_literal_def( + unique int id: @swift_playground_literal +); + +@swift_postfix_expression_operation_type = @swift_reserved_word | @swift_token_bang + +swift_postfix_expression_def( + unique int id: @swift_postfix_expression, + int operation: @swift_postfix_expression_operation_type ref, + int target: @swift_expression ref +); + +@swift_precedence_group_attribute_child_type = @swift_token_boolean_literal | @swift_token_simple_identifier + +#keyset[swift_precedence_group_attribute, index] +swift_precedence_group_attribute_child( + int swift_precedence_group_attribute: @swift_precedence_group_attribute ref, + int index: int ref, + unique int child: @swift_precedence_group_attribute_child_type ref +); + +swift_precedence_group_attribute_def( + unique int id: @swift_precedence_group_attribute +); + +#keyset[swift_precedence_group_attributes, index] +swift_precedence_group_attributes_child( + int swift_precedence_group_attributes: @swift_precedence_group_attributes ref, + int index: int ref, + unique int child: @swift_precedence_group_attribute ref +); + +swift_precedence_group_attributes_def( + unique int id: @swift_precedence_group_attributes +); + +@swift_precedence_group_declaration_child_type = @swift_precedence_group_attributes | @swift_token_simple_identifier + +#keyset[swift_precedence_group_declaration, index] +swift_precedence_group_declaration_child( + int swift_precedence_group_declaration: @swift_precedence_group_declaration ref, + int index: int ref, + unique int child: @swift_precedence_group_declaration_child_type ref +); + +swift_precedence_group_declaration_def( + unique int id: @swift_precedence_group_declaration +); + +@swift_prefix_expression_operation_type = @swift_reserved_word | @swift_token_bang | @swift_token_custom_operator + +swift_prefix_expression_def( + unique int id: @swift_prefix_expression, + int operation: @swift_prefix_expression_operation_type ref, + int target: @swift_expression ref +); + +#keyset[swift_property_declaration, index] +swift_property_declaration_computed_value( + int swift_property_declaration: @swift_property_declaration ref, + int index: int ref, + unique int computed_value: @swift_computed_property ref +); + +#keyset[swift_property_declaration, index] +swift_property_declaration_name( + int swift_property_declaration: @swift_property_declaration ref, + int index: int ref, + unique int name: @swift_pattern ref +); + +#keyset[swift_property_declaration, index] +swift_property_declaration_value( + int swift_property_declaration: @swift_property_declaration ref, + int index: int ref, + unique int value: @swift_expression ref +); + +@swift_property_declaration_child_type = @swift_attribute | @swift_modifiers | @swift_token_inheritance_modifier | @swift_token_ownership_modifier | @swift_token_property_behavior_modifier | @swift_type_annotation | @swift_type_constraints | @swift_value_binding_pattern | @swift_willset_didset_block + +#keyset[swift_property_declaration, index] +swift_property_declaration_child( + int swift_property_declaration: @swift_property_declaration ref, + int index: int ref, + unique int child: @swift_property_declaration_child_type ref +); + +swift_property_declaration_def( + unique int id: @swift_property_declaration +); + +#keyset[swift_protocol_body, index] +swift_protocol_body_child( + int swift_protocol_body: @swift_protocol_body ref, + int index: int ref, + unique int child: @swift_protocol_member_declaration ref +); + +swift_protocol_body_def( + unique int id: @swift_protocol_body +); + +#keyset[swift_protocol_composition_type, index] +swift_protocol_composition_type_child( + int swift_protocol_composition_type: @swift_protocol_composition_type ref, + int index: int ref, + unique int child: @swift_unannotated_type ref +); + +swift_protocol_composition_type_def( + unique int id: @swift_protocol_composition_type +); + +case @swift_protocol_declaration.declaration_kind of + 0 = @swift_protocol_declaration_protocol +; + + +@swift_protocol_declaration_child_type = @swift_attribute | @swift_inheritance_specifier | @swift_modifiers | @swift_type_constraints | @swift_type_parameters + +#keyset[swift_protocol_declaration, index] +swift_protocol_declaration_child( + int swift_protocol_declaration: @swift_protocol_declaration ref, + int index: int ref, + unique int child: @swift_protocol_declaration_child_type ref +); + +swift_protocol_declaration_def( + unique int id: @swift_protocol_declaration, + int body: @swift_protocol_body ref, + int declaration_kind: int ref, + int name: @swift_token_type_identifier ref +); + +swift_protocol_function_declaration_body( + unique int swift_protocol_function_declaration: @swift_protocol_function_declaration ref, + unique int body: @swift_function_body ref +); + +#keyset[swift_protocol_function_declaration, index] +swift_protocol_function_declaration_default_value( + int swift_protocol_function_declaration: @swift_protocol_function_declaration ref, + int index: int ref, + unique int default_value: @swift_expression ref +); + +@swift_protocol_function_declaration_name_type = @swift_referenceable_operator | @swift_token_simple_identifier + +@swift_protocol_function_declaration_return_type_type = @swift_implicitly_unwrapped_type | @swift_type__ + +swift_protocol_function_declaration_return_type( + unique int swift_protocol_function_declaration: @swift_protocol_function_declaration ref, + unique int return_type: @swift_protocol_function_declaration_return_type_type ref +); + +@swift_protocol_function_declaration_child_type = @swift_attribute | @swift_modifiers | @swift_parameter | @swift_throws_clause | @swift_token_throws | @swift_type_constraints | @swift_type_parameters + +#keyset[swift_protocol_function_declaration, index] +swift_protocol_function_declaration_child( + int swift_protocol_function_declaration: @swift_protocol_function_declaration ref, + int index: int ref, + unique int child: @swift_protocol_function_declaration_child_type ref +); + +swift_protocol_function_declaration_def( + unique int id: @swift_protocol_function_declaration, + int name: @swift_protocol_function_declaration_name_type ref +); + +@swift_protocol_member_declaration = @swift_associatedtype_declaration | @swift_deinit_declaration | @swift_init_declaration | @swift_protocol_function_declaration | @swift_protocol_property_declaration | @swift_subscript_declaration | @swift_typealias_declaration + +@swift_protocol_property_declaration_child_type = @swift_modifiers | @swift_protocol_property_requirements | @swift_type_annotation | @swift_type_constraints + +#keyset[swift_protocol_property_declaration, index] +swift_protocol_property_declaration_child( + int swift_protocol_property_declaration: @swift_protocol_property_declaration ref, + int index: int ref, + unique int child: @swift_protocol_property_declaration_child_type ref +); + +swift_protocol_property_declaration_def( + unique int id: @swift_protocol_property_declaration, + int name: @swift_pattern ref +); + +@swift_protocol_property_requirements_child_type = @swift_getter_specifier | @swift_setter_specifier + +#keyset[swift_protocol_property_requirements, index] +swift_protocol_property_requirements_child( + int swift_protocol_property_requirements: @swift_protocol_property_requirements ref, + int index: int ref, + unique int child: @swift_protocol_property_requirements_child_type ref +); + +swift_protocol_property_requirements_def( + unique int id: @swift_protocol_property_requirements +); + +case @swift_range_expression.op of + 0 = @swift_range_expression_dotdotdot +| 1 = @swift_range_expression_dotdotlangle +; + + +swift_range_expression_def( + unique int id: @swift_range_expression, + int end: @swift_expression ref, + int op: int ref, + int start: @swift_expression ref +); + +#keyset[swift_raw_str_interpolation, index] +swift_raw_str_interpolation_interpolation( + int swift_raw_str_interpolation: @swift_raw_str_interpolation ref, + int index: int ref, + unique int interpolation: @swift_interpolated_expression ref +); + +swift_raw_str_interpolation_def( + unique int id: @swift_raw_str_interpolation, + int child: @swift_token_raw_str_interpolation_start ref +); + +#keyset[swift_raw_string_literal, index] +swift_raw_string_literal_interpolation( + int swift_raw_string_literal: @swift_raw_string_literal ref, + int index: int ref, + unique int interpolation: @swift_raw_str_interpolation ref +); + +@swift_raw_string_literal_text_type = @swift_token_raw_str_end_part | @swift_token_raw_str_part + +#keyset[swift_raw_string_literal, index] +swift_raw_string_literal_text( + int swift_raw_string_literal: @swift_raw_string_literal ref, + int index: int ref, + unique int text: @swift_raw_string_literal_text_type ref +); + +#keyset[swift_raw_string_literal, index] +swift_raw_string_literal_child( + int swift_raw_string_literal: @swift_raw_string_literal ref, + int index: int ref, + unique int child: @swift_token_raw_str_continuing_indicator ref +); + +swift_raw_string_literal_def( + unique int id: @swift_raw_string_literal +); + +@swift_referenceable_operator_child_type = @swift_token_bang | @swift_token_custom_operator + +swift_referenceable_operator_child( + unique int swift_referenceable_operator: @swift_referenceable_operator ref, + unique int child: @swift_referenceable_operator_child_type ref +); + +swift_referenceable_operator_def( + unique int id: @swift_referenceable_operator +); + +#keyset[swift_repeat_while_statement, index] +swift_repeat_while_statement_condition( + int swift_repeat_while_statement: @swift_repeat_while_statement ref, + int index: int ref, + unique int condition: @swift_if_condition ref +); + +swift_repeat_while_statement_child( + unique int swift_repeat_while_statement: @swift_repeat_while_statement ref, + unique int child: @swift_statements ref +); + +swift_repeat_while_statement_def( + unique int id: @swift_repeat_while_statement +); + +swift_selector_expression_def( + unique int id: @swift_selector_expression, + int child: @swift_expression ref +); + +swift_setter_specifier_child( + unique int swift_setter_specifier: @swift_setter_specifier ref, + unique int child: @swift_token_mutation_modifier ref +); + +swift_setter_specifier_def( + unique int id: @swift_setter_specifier +); + +@swift_source_file_child_type = @swift_do_statement | @swift_expression | @swift_for_statement | @swift_global_declaration | @swift_guard_statement | @swift_repeat_while_statement | @swift_token_shebang_line | @swift_token_statement_label | @swift_token_throw_keyword | @swift_while_statement + +#keyset[swift_source_file, index] +swift_source_file_child( + int swift_source_file: @swift_source_file ref, + int index: int ref, + unique int child: @swift_source_file_child_type ref +); + +swift_source_file_def( + unique int id: @swift_source_file +); + +@swift_statements_child_type = @swift_control_transfer_statement | @swift_do_statement | @swift_expression | @swift_for_statement | @swift_guard_statement | @swift_local_declaration | @swift_repeat_while_statement | @swift_token_statement_label | @swift_while_statement + +#keyset[swift_statements, index] +swift_statements_child( + int swift_statements: @swift_statements ref, + int index: int ref, + unique int child: @swift_statements_child_type ref +); + +swift_statements_def( + unique int id: @swift_statements +); + +#keyset[swift_subscript_declaration, index] +swift_subscript_declaration_default_value( + int swift_subscript_declaration: @swift_subscript_declaration ref, + int index: int ref, + unique int default_value: @swift_expression ref +); + +@swift_subscript_declaration_return_type_type = @swift_implicitly_unwrapped_type | @swift_type__ + +swift_subscript_declaration_return_type( + unique int swift_subscript_declaration: @swift_subscript_declaration ref, + unique int return_type: @swift_subscript_declaration_return_type_type ref +); + +@swift_subscript_declaration_child_type = @swift_attribute | @swift_computed_property | @swift_modifiers | @swift_parameter | @swift_type_constraints | @swift_type_parameters + +#keyset[swift_subscript_declaration, index] +swift_subscript_declaration_child( + int swift_subscript_declaration: @swift_subscript_declaration ref, + int index: int ref, + unique int child: @swift_subscript_declaration_child_type ref +); + +swift_subscript_declaration_def( + unique int id: @swift_subscript_declaration +); + +swift_suppressed_constraint_def( + unique int id: @swift_suppressed_constraint, + int suppressed: @swift_token_type_identifier ref +); + +@swift_switch_entry_child_type = @swift_expression | @swift_modifiers | @swift_statements | @swift_switch_pattern | @swift_token_default_keyword | @swift_token_where_keyword + +#keyset[swift_switch_entry, index] +swift_switch_entry_child( + int swift_switch_entry: @swift_switch_entry ref, + int index: int ref, + unique int child: @swift_switch_entry_child_type ref +); + +swift_switch_entry_def( + unique int id: @swift_switch_entry +); + +swift_switch_pattern_def( + unique int id: @swift_switch_pattern, + int child: @swift_pattern ref +); + +#keyset[swift_switch_statement, index] +swift_switch_statement_child( + int swift_switch_statement: @swift_switch_statement ref, + int index: int ref, + unique int child: @swift_switch_entry ref +); + +swift_switch_statement_def( + unique int id: @swift_switch_statement, + int expr: @swift_expression ref +); + +swift_ternary_expression_def( + unique int id: @swift_ternary_expression, + int condition: @swift_expression ref, + int if_false: @swift_expression ref, + int if_true: @swift_expression ref +); + +swift_throws_clause_def( + unique int id: @swift_throws_clause, + int type__: @swift_unannotated_type ref +); + +swift_try_expression_def( + unique int id: @swift_try_expression, + int expr: @swift_expression ref, + int child: @swift_token_try_operator ref +); + +#keyset[swift_tuple_expression, index] +swift_tuple_expression_name( + int swift_tuple_expression: @swift_tuple_expression ref, + int index: int ref, + unique int name: @swift_token_simple_identifier ref +); + +#keyset[swift_tuple_expression, index] +swift_tuple_expression_value( + int swift_tuple_expression: @swift_tuple_expression ref, + int index: int ref, + unique int value: @swift_expression ref +); + +swift_tuple_expression_def( + unique int id: @swift_tuple_expression +); + +#keyset[swift_tuple_type, index] +swift_tuple_type_element( + int swift_tuple_type: @swift_tuple_type ref, + int index: int ref, + unique int element: @swift_tuple_type_item ref +); + +swift_tuple_type_child( + unique int swift_tuple_type: @swift_tuple_type ref, + unique int child: @swift_tuple_type_item ref +); + +swift_tuple_type_def( + unique int id: @swift_tuple_type +); + +swift_tuple_type_item_name( + unique int swift_tuple_type_item: @swift_tuple_type_item ref, + unique int name: @swift_token_simple_identifier ref +); + +swift_tuple_type_item_type( + unique int swift_tuple_type_item: @swift_tuple_type_item ref, + unique int type__: @swift_type__ ref +); + +@swift_tuple_type_item_child_type = @swift_dictionary_type | @swift_existential_type | @swift_opaque_type | @swift_parameter_modifiers | @swift_token_wildcard_pattern + +#keyset[swift_tuple_type_item, index] +swift_tuple_type_item_child( + int swift_tuple_type_item: @swift_tuple_type_item ref, + int index: int ref, + unique int child: @swift_tuple_type_item_child_type ref +); + +swift_tuple_type_item_def( + unique int id: @swift_tuple_type_item +); + +swift_type_modifiers( + unique int swift_type__: @swift_type__ ref, + unique int modifiers: @swift_type_modifiers ref +); + +swift_type_def( + unique int id: @swift_type__, + int name: @swift_unannotated_type ref +); + +@swift_type_annotation_type_type = @swift_implicitly_unwrapped_type | @swift_type__ + +swift_type_annotation_def( + unique int id: @swift_type_annotation, + int type__: @swift_type_annotation_type_type ref +); + +#keyset[swift_type_arguments, index] +swift_type_arguments_child( + int swift_type_arguments: @swift_type_arguments ref, + int index: int ref, + unique int child: @swift_type__ ref +); + +swift_type_arguments_def( + unique int id: @swift_type_arguments +); + +@swift_type_constraint_child_type = @swift_equality_constraint | @swift_inheritance_constraint + +swift_type_constraint_def( + unique int id: @swift_type_constraint, + int child: @swift_type_constraint_child_type ref +); + +@swift_type_constraints_child_type = @swift_token_where_keyword | @swift_type_constraint + +#keyset[swift_type_constraints, index] +swift_type_constraints_child( + int swift_type_constraints: @swift_type_constraints ref, + int index: int ref, + unique int child: @swift_type_constraints_child_type ref +); + +swift_type_constraints_def( + unique int id: @swift_type_constraints +); + +@swift_type_level_declaration = @swift_associatedtype_declaration | @swift_class_declaration | @swift_deinit_declaration | @swift_function_declaration | @swift_import_declaration | @swift_init_declaration | @swift_operator_declaration | @swift_precedence_group_declaration | @swift_property_declaration | @swift_protocol_declaration | @swift_subscript_declaration | @swift_typealias_declaration + +#keyset[swift_type_modifiers, index] +swift_type_modifiers_child( + int swift_type_modifiers: @swift_type_modifiers ref, + int index: int ref, + unique int child: @swift_attribute ref +); + +swift_type_modifiers_def( + unique int id: @swift_type_modifiers +); + +swift_type_pack_expansion_def( + unique int id: @swift_type_pack_expansion, + int child: @swift_unannotated_type ref +); + +@swift_type_parameter_child_type = @swift_token_type_identifier | @swift_type__ | @swift_type_parameter_modifiers | @swift_type_parameter_pack + +#keyset[swift_type_parameter, index] +swift_type_parameter_child( + int swift_type_parameter: @swift_type_parameter ref, + int index: int ref, + unique int child: @swift_type_parameter_child_type ref +); + +swift_type_parameter_def( + unique int id: @swift_type_parameter +); + +#keyset[swift_type_parameter_modifiers, index] +swift_type_parameter_modifiers_child( + int swift_type_parameter_modifiers: @swift_type_parameter_modifiers ref, + int index: int ref, + unique int child: @swift_attribute ref +); + +swift_type_parameter_modifiers_def( + unique int id: @swift_type_parameter_modifiers +); + +swift_type_parameter_pack_def( + unique int id: @swift_type_parameter_pack, + int child: @swift_unannotated_type ref +); + +@swift_type_parameters_child_type = @swift_type_constraints | @swift_type_parameter + +#keyset[swift_type_parameters, index] +swift_type_parameters_child( + int swift_type_parameters: @swift_type_parameters ref, + int index: int ref, + unique int child: @swift_type_parameters_child_type ref +); + +swift_type_parameters_def( + unique int id: @swift_type_parameters +); + +@swift_typealias_declaration_child_type = @swift_attribute | @swift_modifiers | @swift_token_inheritance_modifier | @swift_token_ownership_modifier | @swift_token_property_behavior_modifier | @swift_type_parameters + +#keyset[swift_typealias_declaration, index] +swift_typealias_declaration_child( + int swift_typealias_declaration: @swift_typealias_declaration ref, + int index: int ref, + unique int child: @swift_typealias_declaration_child_type ref +); + +swift_typealias_declaration_def( + unique int id: @swift_typealias_declaration, + int name: @swift_token_type_identifier ref, + int value: @swift_type__ ref +); + +@swift_unannotated_type = @swift_array_type | @swift_dictionary_type | @swift_existential_type | @swift_function_type | @swift_metatype | @swift_opaque_type | @swift_optional_type | @swift_protocol_composition_type | @swift_suppressed_constraint | @swift_tuple_type | @swift_type_pack_expansion | @swift_type_parameter_pack | @swift_user_type + +@swift_user_type_child_type = @swift_token_type_identifier | @swift_type_arguments + +#keyset[swift_user_type, index] +swift_user_type_child( + int swift_user_type: @swift_user_type ref, + int index: int ref, + unique int child: @swift_user_type_child_type ref +); + +swift_user_type_def( + unique int id: @swift_user_type +); + +swift_value_argument_name( + unique int swift_value_argument: @swift_value_argument ref, + unique int name: @swift_value_argument_label ref +); + +#keyset[swift_value_argument, index] +swift_value_argument_reference_specifier( + int swift_value_argument: @swift_value_argument ref, + int index: int ref, + unique int reference_specifier: @swift_value_argument_label ref +); + +swift_value_argument_value( + unique int swift_value_argument: @swift_value_argument ref, + unique int value: @swift_expression ref +); + +swift_value_argument_child( + unique int swift_value_argument: @swift_value_argument ref, + unique int child: @swift_type_modifiers ref +); + +swift_value_argument_def( + unique int id: @swift_value_argument +); + +swift_value_argument_label_def( + unique int id: @swift_value_argument_label, + int child: @swift_token_simple_identifier ref +); + +#keyset[swift_value_arguments, index] +swift_value_arguments_child( + int swift_value_arguments: @swift_value_arguments ref, + int index: int ref, + unique int child: @swift_value_argument ref +); + +swift_value_arguments_def( + unique int id: @swift_value_arguments +); + +case @swift_value_binding_pattern.mutability of + 0 = @swift_value_binding_pattern_let +| 1 = @swift_value_binding_pattern_var +; + + +swift_value_binding_pattern_def( + unique int id: @swift_value_binding_pattern, + int mutability: int ref +); + +swift_value_pack_expansion_def( + unique int id: @swift_value_pack_expansion, + int child: @swift_expression ref +); + +swift_value_parameter_pack_def( + unique int id: @swift_value_parameter_pack, + int child: @swift_expression ref +); + +@swift_where_clause_child_type = @swift_expression | @swift_token_where_keyword + +#keyset[swift_where_clause, index] +swift_where_clause_child( + int swift_where_clause: @swift_where_clause ref, + int index: int ref, + unique int child: @swift_where_clause_child_type ref +); + +swift_where_clause_def( + unique int id: @swift_where_clause +); + +#keyset[swift_while_statement, index] +swift_while_statement_condition( + int swift_while_statement: @swift_while_statement ref, + int index: int ref, + unique int condition: @swift_if_condition ref +); + +swift_while_statement_child( + unique int swift_while_statement: @swift_while_statement ref, + unique int child: @swift_statements ref +); + +swift_while_statement_def( + unique int id: @swift_while_statement +); + +@swift_willset_clause_child_type = @swift_modifiers | @swift_statements | @swift_token_simple_identifier + +#keyset[swift_willset_clause, index] +swift_willset_clause_child( + int swift_willset_clause: @swift_willset_clause ref, + int index: int ref, + unique int child: @swift_willset_clause_child_type ref +); + +swift_willset_clause_def( + unique int id: @swift_willset_clause +); + +@swift_willset_didset_block_child_type = @swift_didset_clause | @swift_willset_clause + +#keyset[swift_willset_didset_block, index] +swift_willset_didset_block_child( + int swift_willset_didset_block: @swift_willset_didset_block ref, + int index: int ref, + unique int child: @swift_willset_didset_block_child_type ref +); + +swift_willset_didset_block_def( + unique int id: @swift_willset_didset_block +); + +swift_tokeninfo( + unique int id: @swift_token, + int kind: int ref, + string value: string ref +); + +case @swift_token.kind of + 0 = @swift_reserved_word +| 1 = @swift_token_as_operator +| 2 = @swift_token_bang +| 3 = @swift_token_bin_literal +| 4 = @swift_token_boolean_literal +| 5 = @swift_token_catch_keyword +| 6 = @swift_token_comment +| 7 = @swift_token_custom_operator +| 8 = @swift_token_default_keyword +| 9 = @swift_token_diagnostic +| 10 = @swift_token_else +| 11 = @swift_token_fully_open_range +| 12 = @swift_token_function_modifier +| 13 = @swift_token_hex_literal +| 14 = @swift_token_inheritance_modifier +| 15 = @swift_token_integer_literal +| 16 = @swift_token_line_str_text +| 17 = @swift_token_member_modifier +| 18 = @swift_token_multi_line_str_text +| 19 = @swift_token_multiline_comment +| 20 = @swift_token_mutation_modifier +| 21 = @swift_token_oct_literal +| 22 = @swift_token_ownership_modifier +| 23 = @swift_token_parameter_modifier +| 24 = @swift_token_property_behavior_modifier +| 25 = @swift_token_property_modifier +| 26 = @swift_token_raw_str_continuing_indicator +| 27 = @swift_token_raw_str_end_part +| 28 = @swift_token_raw_str_interpolation_start +| 29 = @swift_token_raw_str_part +| 30 = @swift_token_real_literal +| 31 = @swift_token_regex_literal +| 32 = @swift_token_self_expression +| 33 = @swift_token_shebang_line +| 34 = @swift_token_simple_identifier +| 35 = @swift_token_special_literal +| 36 = @swift_token_statement_label +| 37 = @swift_token_str_escaped_char +| 38 = @swift_token_super_expression +| 39 = @swift_token_throw_keyword +| 40 = @swift_token_throws +| 41 = @swift_token_try_operator +| 42 = @swift_token_type_identifier +| 43 = @swift_token_visibility_modifier +| 44 = @swift_token_where_keyword +| 45 = @swift_token_wildcard_pattern +; + + +@swift_ast_node = @swift_additive_expression | @swift_array_literal | @swift_array_type | @swift_as_expression | @swift_assignment | @swift_associatedtype_declaration | @swift_attribute | @swift_availability_condition | @swift_await_expression | @swift_bitwise_operation | @swift_call_expression | @swift_call_suffix | @swift_capture_list | @swift_capture_list_item | @swift_catch_block | @swift_check_expression | @swift_class_body | @swift_class_declaration | @swift_comparison_expression | @swift_computed_getter | @swift_computed_modify | @swift_computed_property | @swift_computed_setter | @swift_conjunction_expression | @swift_constructor_expression | @swift_constructor_suffix | @swift_control_transfer_statement | @swift_deinit_declaration | @swift_deprecated_operator_declaration_body | @swift_dictionary_literal | @swift_dictionary_type | @swift_didset_clause | @swift_directive | @swift_directly_assignable_expression | @swift_disjunction_expression | @swift_do_statement | @swift_enum_class_body | @swift_enum_entry | @swift_enum_type_parameters | @swift_equality_constraint | @swift_equality_expression | @swift_existential_type | @swift_external_macro_definition | @swift_for_statement | @swift_function_body | @swift_function_declaration | @swift_function_type | @swift_getter_specifier | @swift_guard_statement | @swift_identifier | @swift_if_condition | @swift_if_let_binding | @swift_if_statement | @swift_implicitly_unwrapped_type | @swift_import_declaration | @swift_infix_expression | @swift_inheritance_constraint | @swift_inheritance_specifier | @swift_init_declaration | @swift_interpolated_expression | @swift_key_path_expression | @swift_key_path_string_expression | @swift_lambda_function_type | @swift_lambda_function_type_parameters | @swift_lambda_literal | @swift_lambda_parameter | @swift_line_string_literal | @swift_macro_declaration | @swift_macro_definition | @swift_macro_invocation | @swift_metatype | @swift_modifiers | @swift_modify_specifier | @swift_multi_line_string_literal | @swift_multiplicative_expression | @swift_navigation_expression | @swift_navigation_suffix | @swift_nested_type_identifier | @swift_nil_coalescing_expression | @swift_opaque_type | @swift_open_end_range_expression | @swift_open_start_range_expression | @swift_operator_declaration | @swift_optional_chain_marker | @swift_optional_type | @swift_parameter | @swift_parameter_modifiers | @swift_pattern | @swift_playground_literal | @swift_postfix_expression | @swift_precedence_group_attribute | @swift_precedence_group_attributes | @swift_precedence_group_declaration | @swift_prefix_expression | @swift_property_declaration | @swift_protocol_body | @swift_protocol_composition_type | @swift_protocol_declaration | @swift_protocol_function_declaration | @swift_protocol_property_declaration | @swift_protocol_property_requirements | @swift_range_expression | @swift_raw_str_interpolation | @swift_raw_string_literal | @swift_referenceable_operator | @swift_repeat_while_statement | @swift_selector_expression | @swift_setter_specifier | @swift_source_file | @swift_statements | @swift_subscript_declaration | @swift_suppressed_constraint | @swift_switch_entry | @swift_switch_pattern | @swift_switch_statement | @swift_ternary_expression | @swift_throws_clause | @swift_token | @swift_try_expression | @swift_tuple_expression | @swift_tuple_type | @swift_tuple_type_item | @swift_type__ | @swift_type_annotation | @swift_type_arguments | @swift_type_constraint | @swift_type_constraints | @swift_type_modifiers | @swift_type_pack_expansion | @swift_type_parameter | @swift_type_parameter_modifiers | @swift_type_parameter_pack | @swift_type_parameters | @swift_typealias_declaration | @swift_user_type | @swift_value_argument | @swift_value_argument_label | @swift_value_arguments | @swift_value_binding_pattern | @swift_value_pack_expansion | @swift_value_parameter_pack | @swift_where_clause | @swift_while_statement | @swift_willset_clause | @swift_willset_didset_block + +swift_ast_node_location( + unique int node: @swift_ast_node ref, + int loc: @location_default ref +); + +#keyset[parent, parent_index] +swift_ast_node_parent( + unique int node: @swift_ast_node ref, + int parent: @swift_ast_node ref, + int parent_index: int ref +); + diff --git a/unified/ql/lib/unified.dbscheme.stats b/unified/ql/lib/unified.dbscheme.stats new file mode 100644 index 000000000000..82714bfe1d07 --- /dev/null +++ b/unified/ql/lib/unified.dbscheme.stats @@ -0,0 +1,4 @@ + + + + diff --git a/unified/ql/src/qlpack.lock.yml b/unified/ql/src/qlpack.lock.yml new file mode 100644 index 000000000000..06dd07fc7dc7 --- /dev/null +++ b/unified/ql/src/qlpack.lock.yml @@ -0,0 +1,4 @@ +--- +dependencies: {} +compiled: false +lockVersion: 1.0.0 diff --git a/unified/ql/src/qlpack.yml b/unified/ql/src/qlpack.yml new file mode 100644 index 000000000000..2de97863ddaf --- /dev/null +++ b/unified/ql/src/qlpack.yml @@ -0,0 +1,11 @@ +name: codeql/unified-queries +version: 0.0.1-dev +groups: + - unified + - queries +suites: codeql-suites +dependencies: + codeql/unified-all: ${workspace} + codeql/suite-helpers: ${workspace} + codeql/util: ${workspace} +warnOnImplicitThis: true diff --git a/unified/ql/test/library-tests/BasicTest/test.expected b/unified/ql/test/library-tests/BasicTest/test.expected new file mode 100644 index 000000000000..62b8146bf040 --- /dev/null +++ b/unified/ql/test/library-tests/BasicTest/test.expected @@ -0,0 +1,101 @@ +identifier +| test.swift:1:8:1:17 | Foundation | Foundation | +| test.swift:5:9:5:13 | items | items | +| test.swift:7:19:7:21 | add | add | +| test.swift:7:23:7:23 | _ | _ | +| test.swift:7:25:7:28 | item | item | +| test.swift:8:9:8:13 | items | items | +| test.swift:8:15:8:20 | append | append | +| test.swift:8:22:8:25 | item | item | +| test.swift:11:10:11:17 | contains | contains | +| test.swift:11:19:11:19 | _ | _ | +| test.swift:11:21:11:24 | item | item | +| test.swift:12:16:12:20 | items | items | +| test.swift:12:22:12:29 | contains | contains | +| test.swift:12:31:12:34 | item | item | +| test.swift:19:9:19:13 | count | count | +| test.swift:20:10:20:13 | item | item | +| test.swift:20:15:20:16 | at | at | +| test.swift:20:18:20:22 | index | index | +| test.swift:24:6:24:10 | merge | merge | +| test.swift:24:27:24:27 | _ | _ | +| test.swift:24:29:24:33 | first | first | +| test.swift:24:39:24:39 | _ | _ | +| test.swift:24:41:24:46 | second | second | +| test.swift:24:73:24:73 | T | T | +| test.swift:24:75:24:81 | Element | Element | +| test.swift:25:9:25:14 | result | result | +| test.swift:25:18:25:22 | Array | Array | +| test.swift:25:24:25:28 | first | first | +| test.swift:26:9:26:12 | item | item | +| test.swift:26:17:26:22 | second | second | +| test.swift:27:13:27:18 | result | result | +| test.swift:27:20:27:27 | contains | contains | +| test.swift:27:29:27:32 | item | item | +| test.swift:28:13:28:18 | result | result | +| test.swift:28:20:28:25 | append | append | +| test.swift:28:27:28:30 | item | item | +| test.swift:31:12:31:17 | result | result | +| test.swift:37:17:37:20 | data | data | +| test.swift:39:9:39:13 | count | count | +| test.swift:40:16:40:19 | data | data | +| test.swift:40:21:40:25 | count | count | +| test.swift:43:9:43:15 | isEmpty | isEmpty | +| test.swift:44:9:44:12 | data | data | +| test.swift:44:14:44:20 | isEmpty | isEmpty | +| test.swift:47:10:47:13 | item | item | +| test.swift:47:15:47:16 | at | at | +| test.swift:47:18:47:22 | index | index | +| test.swift:48:15:48:19 | index | index | +| test.swift:48:29:48:33 | index | index | +| test.swift:48:37:48:40 | data | data | +| test.swift:48:42:48:46 | count | count | +| test.swift:49:16:49:19 | data | data | +| test.swift:49:21:49:25 | index | index | +| test.swift:52:10:52:12 | add | add | +| test.swift:52:14:52:14 | _ | _ | +| test.swift:52:16:52:19 | item | item | +| test.swift:53:9:53:12 | data | data | +| test.swift:53:14:53:19 | append | append | +| test.swift:53:21:53:24 | item | item | +| test.swift:59:10:59:16 | success | success | +| test.swift:60:10:60:16 | failure | failure | +| test.swift:62:10:62:12 | map | map | +| test.swift:62:17:62:17 | _ | _ | +| test.swift:62:19:62:27 | transform | transform | +| test.swift:64:15:64:21 | success | success | +| test.swift:64:27:64:31 | value | value | +| test.swift:65:21:65:27 | success | success | +| test.swift:65:29:65:37 | transform | transform | +| test.swift:65:39:65:43 | value | value | +| test.swift:66:15:66:21 | failure | failure | +| test.swift:66:27:66:31 | error | error | +| test.swift:67:21:67:27 | failure | failure | +| test.swift:67:29:67:33 | error | error | +| test.swift:73:23:73:29 | Element | Element | +| test.swift:74:10:74:17 | isSorted | isSorted | +| test.swift:75:13:75:13 | i | i | +| test.swift:75:23:75:31 | blah | blah | +| test.swift:76:21:76:21 | i | i | +| test.swift:76:31:76:35 | blah | blah | +| test.swift:85:6:85:12 | combine | combine | +| test.swift:85:17:85:17 | _ | _ | +| test.swift:85:19:85:24 | values | values | +| test.swift:85:32:85:40 | transform | transform | +| test.swift:86:12:86:17 | values | values | +| test.swift:86:19:86:25 | isEmpty | isEmpty | +| test.swift:87:12:87:17 | values | values | +| test.swift:87:19:87:27 | dropFirst | dropFirst | +| test.swift:87:31:87:36 | reduce | reduce | +| test.swift:87:38:87:43 | values | values | +| test.swift:87:49:87:57 | transform | transform | +func +| test.swift:7:5:9:5 | FunctionDeclaration | +| test.swift:11:5:13:5 | FunctionDeclaration | +| test.swift:24:1:32:1 | FunctionDeclaration | +| test.swift:47:5:50:5 | FunctionDeclaration | +| test.swift:52:5:54:5 | FunctionDeclaration | +| test.swift:62:5:69:5 | FunctionDeclaration | +| test.swift:74:5:81:5 | FunctionDeclaration | +| test.swift:85:1:88:1 | FunctionDeclaration | +add diff --git a/unified/ql/test/library-tests/BasicTest/test.ql b/unified/ql/test/library-tests/BasicTest/test.ql new file mode 100644 index 000000000000..3a5ee2f1c157 --- /dev/null +++ b/unified/ql/test/library-tests/BasicTest/test.ql @@ -0,0 +1,9 @@ +import codeql.unified.Ast + +query predicate identifier(Swift::SimpleIdentifier node, string name) { name = node.getValue() } + +query predicate func(Swift::FunctionDeclaration node) { any() } + +query predicate add(Swift::AdditiveExpression node, Swift::AstNode lhs, Swift::AstNode rhs) { + lhs = node.getLhs(0) and rhs = node.getRhs(0) +} diff --git a/unified/ql/test/library-tests/BasicTest/test.swift b/unified/ql/test/library-tests/BasicTest/test.swift new file mode 100644 index 000000000000..158ef26f598b --- /dev/null +++ b/unified/ql/test/library-tests/BasicTest/test.swift @@ -0,0 +1,88 @@ +import Foundation + +// Generic struct with type constraint +struct Container { + var items: [T] = [] + + mutating func add(_ item: T) { + items.append(item) + } + + func contains(_ item: T) -> Bool { + return items.contains(item) + } +} + +// Protocol with associated type +protocol DataSource { + associatedtype Element + var count: Int { get } + func item(at index: Int) -> Element? +} + +// Generic function with where clause +func merge(_ first: T, _ second: T) -> [T.Element] where T.Element: Equatable { + var result = Array(first) + for item in second { + if !result.contains(item) { + result.append(item) + } + } + return result +} + +// Class with inheritance and computed properties +class DataManager: DataSource { + typealias Element = T + private var data: [T] = [] + + var count: Int { + return data.count + } + + var isEmpty: Bool { + data.isEmpty + } + + func item(at index: Int) -> T? { + guard index >= 0 && index < data.count else { return nil } + return data[index] + } + + func add(_ item: T) { + data.append(item) + } +} + +// Enum with associated values +enum Result { + case success(Success) + case failure(Failure) + + func map(_ transform: (Success) -> U) -> Result { + switch self { + case .success(let value): + return .success(transform(value)) + case .failure(let error): + return .failure(error) + } + } +} + +// Extension with generic constraints +extension Array where Element: Comparable { + func isSorted() -> Bool { + for i in 0..<(count - 1) { + if self[i] > self[i + 1] { + return false + } + } + return true + } +} + +// Higher-order function +func combine(_ values: [T], transform: (T, T) -> T) -> T? { + guard !values.isEmpty else { return nil } + return values.dropFirst().reduce(values[0], transform) +} diff --git a/unified/ql/test/qlpack.lock.yml b/unified/ql/test/qlpack.lock.yml new file mode 100644 index 000000000000..06dd07fc7dc7 --- /dev/null +++ b/unified/ql/test/qlpack.lock.yml @@ -0,0 +1,4 @@ +--- +dependencies: {} +compiled: false +lockVersion: 1.0.0 diff --git a/unified/ql/test/qlpack.yml b/unified/ql/test/qlpack.yml new file mode 100644 index 000000000000..8c567d531c91 --- /dev/null +++ b/unified/ql/test/qlpack.yml @@ -0,0 +1,8 @@ +name: codeql/unified-tests +groups: [unified, test] +dependencies: + codeql/unified-queries: ${workspace} + codeql/unified-all: ${workspace} +extractor: unified +tests: . +warnOnImplicitThis: true diff --git a/unified/scripts/create-extractor-pack.sh b/unified/scripts/create-extractor-pack.sh new file mode 100755 index 000000000000..7a41092e4a74 --- /dev/null +++ b/unified/scripts/create-extractor-pack.sh @@ -0,0 +1,25 @@ +#!/bin/bash +set -eux +if [[ "$OSTYPE" == "linux-gnu"* ]]; then + platform="linux64" +elif [[ "$OSTYPE" == "darwin"* ]]; then + platform="osx64" +else + echo "Unknown OS" + exit 1 +fi +cd "$(dirname "$0")/.." + +(cd extractor && cargo build --release) + +# we are in a cargo workspace rooted at the git checkout +BIN_DIR=../target/release +"$BIN_DIR/codeql-extractor-unified" generate --dbscheme ql/lib/unified.dbscheme --library ql/lib/codeql/unified/Ast.qll + +codeql query format -i ql/lib/codeql/unified/Ast.qll + +rm -rf extractor-pack +mkdir -p extractor-pack +cp -r codeql-extractor.yml tools ql/lib/unified.dbscheme ql/lib/unified.dbscheme.stats extractor-pack/ +mkdir -p extractor-pack/tools/${platform} +cp "$BIN_DIR/codeql-extractor-unified" extractor-pack/tools/${platform}/extractor diff --git a/unified/scripts/regenerate-grammar.sh b/unified/scripts/regenerate-grammar.sh new file mode 100755 index 000000000000..b7a5ce263fb8 --- /dev/null +++ b/unified/scripts/regenerate-grammar.sh @@ -0,0 +1,28 @@ +#!/bin/bash +# Regenerate the vendored tree-sitter-swift parser tables from grammar.js, +# then refresh the human-readable node-types.yml companion file. +# +# Run this after editing +# unified/extractor/tree-sitter-swift/grammar.js so that: +# * src/parser.c, src/grammar.json, src/node-types.json (and the +# src/tree_sitter/*.h headers) reflect the current grammar; and +# * node-types.yml shows the same information in a form that's +# pleasant to review in PR diffs. +# +# Requirements: tree-sitter CLI on PATH, and a working cargo toolchain. +set -euo pipefail + +cd "$(dirname "$0")/.." +SWIFT_DIR="extractor/tree-sitter-swift" + +( + cd "$SWIFT_DIR" + tree-sitter generate +) + +# Build yeast's node_types_yaml binary and use it to convert the freshly +# generated src/node-types.json into the human-readable node-types.yml. +cargo run --release --quiet -p yeast --bin node_types_yaml -- \ + --from-json "$SWIFT_DIR/src/node-types.json" > "$SWIFT_DIR/node-types.yml" + +echo "Regenerated $SWIFT_DIR/{src/parser.c,src/grammar.json,src/node-types.json,node-types.yml}" diff --git a/unified/tools/BUILD.bazel b/unified/tools/BUILD.bazel new file mode 100644 index 000000000000..a4b4baed225c --- /dev/null +++ b/unified/tools/BUILD.bazel @@ -0,0 +1,11 @@ +load("//misc/bazel:pkg.bzl", "codeql_pkg_files") + +codeql_pkg_files( + name = "tools", + excludes = [ + "BUILD.bazel", + ], + exes = glob(["**/*"]), + prefix = "tools", + visibility = ["//unified:__pkg__"], +) diff --git a/unified/tools/autobuild.cmd b/unified/tools/autobuild.cmd new file mode 100644 index 000000000000..05b59eca1191 --- /dev/null +++ b/unified/tools/autobuild.cmd @@ -0,0 +1,5 @@ +@echo off + +type NUL && "%CODEQL_EXTRACTOR_UNIFIED_ROOT%\tools\%CODEQL_PLATFORM%\extractor" autobuild + +exit /b %ERRORLEVEL% diff --git a/unified/tools/autobuild.sh b/unified/tools/autobuild.sh new file mode 100755 index 000000000000..2b35f39e917f --- /dev/null +++ b/unified/tools/autobuild.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +exec "${CODEQL_EXTRACTOR_UNIFIED_ROOT}/tools/${CODEQL_PLATFORM}/extractor" autobuild diff --git a/unified/tools/index-files.cmd b/unified/tools/index-files.cmd new file mode 100644 index 000000000000..3b9fca08ea03 --- /dev/null +++ b/unified/tools/index-files.cmd @@ -0,0 +1,9 @@ +@echo off + +type NUL && "%CODEQL_EXTRACTOR_UNIFIED_ROOT%\tools\win64\extractor.exe" ^ + extract ^ + --file-list "%1" ^ + --source-archive-dir "%CODEQL_EXTRACTOR_UNIFIED_SOURCE_ARCHIVE_DIR%" ^ + --output-dir "%CODEQL_EXTRACTOR_UNIFIED_TRAP_DIR%" + +exit /b %ERRORLEVEL% diff --git a/unified/tools/index-files.sh b/unified/tools/index-files.sh new file mode 100755 index 000000000000..ddf98907e837 --- /dev/null +++ b/unified/tools/index-files.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +set -eu + +exec "${CODEQL_EXTRACTOR_UNIFIED_ROOT}/tools/${CODEQL_PLATFORM}/extractor" \ + extract \ + --file-list "$1" \ + --source-archive-dir "$CODEQL_EXTRACTOR_UNIFIED_SOURCE_ARCHIVE_DIR" \ + --output-dir "$CODEQL_EXTRACTOR_UNIFIED_TRAP_DIR" diff --git a/unified/tools/qltest.cmd b/unified/tools/qltest.cmd new file mode 100644 index 000000000000..3db89dcc1b98 --- /dev/null +++ b/unified/tools/qltest.cmd @@ -0,0 +1,14 @@ +@echo off + +type NUL && "%CODEQL_DIST%\codeql.exe" database index-files ^ + --prune=**/*.testproj ^ + --include-extension=.swift ^ + --include-extension=.swiftinterface ^ + --size-limit=5m ^ + --language=unified ^ + --working-dir=. ^ + "%CODEQL_EXTRACTOR_UNIFIED_WIP_DATABASE%" + +IF %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL% + +exit /b %ERRORLEVEL% diff --git a/unified/tools/qltest.sh b/unified/tools/qltest.sh new file mode 100755 index 000000000000..7dcbb9e81f48 --- /dev/null +++ b/unified/tools/qltest.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +set -eu + +"${CODEQL_DIST}/codeql" database index-files \ + --prune="**/*.testproj" \ + --include-extension=.swift \ + --include-extension=.swiftinterface \ + --size-limit=5m \ + --language=unified \ + --working-dir=.\ + "$CODEQL_EXTRACTOR_UNIFIED_WIP_DATABASE"